From edbb35a519f577cb64be4b59ec8112ec98192190 Mon Sep 17 00:00:00 2001 From: jos Date: Mon, 2 Mar 2015 15:44:58 +0100 Subject: [PATCH 01/43] Fixed #670: bug when updating data in a DataSet, when Network is connected to the DataSet via a DataView --- HISTORY.md | 1 + lib/network/Network.js | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 86a7249c..5a068050 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -14,6 +14,7 @@ http://visjs.org - Added pull request for usage of Icons. Thanks @Dude9177! - Allow hierarchical view to be set in setOptions. - Fixed manipulation bar for mobile. +- Fixed #670: bug when updating data in a DataSet, when Network is connected to the DataSet via a DataView. ### Graph2d diff --git a/lib/network/Network.js b/lib/network/Network.js index 7b011750..e5eb3476 100644 --- a/lib/network/Network.js +++ b/lib/network/Network.js @@ -329,7 +329,7 @@ function Network (container, data, options) { network.start(); }, 'update': function (event, params) { - network._updateNodes(params.items, params.data); + network._updateNodes(params.items); network.start(); }, 'remove': function (event, params) { @@ -1687,12 +1687,14 @@ Network.prototype._addNodes = function(ids) { * @param {Number[] | String[]} ids * @private */ -Network.prototype._updateNodes = function(ids,changedData) { +Network.prototype._updateNodes = function(ids) { + var nodesData = this.nodesData.get(ids); var nodes = this.nodes; + for (var i = 0, len = ids.length; i < len; i++) { var id = ids[i]; var node = nodes[id]; - var data = changedData[i]; + var data = nodesData[i]; if (node) { // update node node.setProperties(data, this.constants); From 876d233b53861881a446685d1e932efb907d0e2a Mon Sep 17 00:00:00 2001 From: jos Date: Mon, 2 Mar 2015 16:02:06 +0100 Subject: [PATCH 02/43] Fixed the DataView not passing a data property on update events (see #670) --- HISTORY.md | 4 +++- lib/DataView.js | 16 ++++++++------- test/DataView.test.js | 46 ++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 57 insertions(+), 9 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 5a068050..e484f9e7 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -14,7 +14,9 @@ http://visjs.org - Added pull request for usage of Icons. Thanks @Dude9177! - Allow hierarchical view to be set in setOptions. - Fixed manipulation bar for mobile. -- Fixed #670: bug when updating data in a DataSet, when Network is connected to the DataSet via a DataView. +- Fixed #670: + - Bug when updating data in a DataSet, when Network is connected to the DataSet via a DataView. + - Fixed the DataView not passing a data property on update events (see #670) ### Graph2d diff --git a/lib/DataView.js b/lib/DataView.js index cc4e04bd..158a20e3 100644 --- a/lib/DataView.js +++ b/lib/DataView.js @@ -258,12 +258,13 @@ DataView.prototype.getDataSet = function () { * @private */ DataView.prototype._onEvent = function (event, params, senderId) { - var i, len, id, item, - ids = params && params.items, - data = this._data, - added = [], - updated = [], - removed = []; + var i, len, id, item; + var ids = params && params.items; + var data = this._data; + var updatedData = []; + var added = []; + var updated = []; + var removed = []; if (ids && data) { switch (event) { @@ -290,6 +291,7 @@ DataView.prototype._onEvent = function (event, params, senderId) { if (item) { if (this._ids[id]) { updated.push(id); + updatedData.push(params.data[i]); } else { this._ids[id] = true; @@ -328,7 +330,7 @@ DataView.prototype._onEvent = function (event, params, senderId) { this._trigger('add', {items: added}, senderId); } if (updated.length) { - this._trigger('update', {items: updated}, senderId); + this._trigger('update', {items: updated, data: updatedData}, senderId); } if (removed.length) { this._trigger('remove', {items: removed}, senderId); diff --git a/test/DataView.test.js b/test/DataView.test.js index bb8ff1f9..733cab26 100644 --- a/test/DataView.test.js +++ b/test/DataView.test.js @@ -146,5 +146,49 @@ describe('DataView', function () { assert.deepEqual(added, [2, 3]); assert.deepEqual(updated, []); assert.deepEqual(removed, []); - }) + }); + + it('should pass data of changed items when updating a DataSet', function () { + var data = new DataSet([ + {id: 1, title: 'Item 1', group: 1}, + {id: 2, title: 'Item 2', group: 2}, + {id: 3, title: 'Item 3', group: 2} + ]); + var view = new DataView(data, { + filter: function (item) { + return item.group === 2; + } + }); + + var dataUpdates = []; + var viewUpdates = []; + + + data.on('update', function (event, properties, senderId) { + dataUpdates.push([event, properties]); + }); + + view.on('update', function (event, properties, senderId) { + viewUpdates.push([event, properties]); + }); + + // make a change not affecting the DataView + data.update({id: 1, title: 'Item 1 (changed)'}); + assert.deepEqual(dataUpdates, [ + ['update', {items: [1], data: [{id: 1, title: 'Item 1 (changed)'}]}] + ]); + assert.deepEqual(viewUpdates, []); + + // make a change affecting the DataView + data.update({id: 2, title: 'Item 2 (changed)'}); + assert.deepEqual(dataUpdates, [ + ['update', {items: [1], data: [{id: 1, title: 'Item 1 (changed)'}]}], + ['update', {items: [2], data: [{id: 2, title: 'Item 2 (changed)'}]}] + ]); + assert.deepEqual(viewUpdates, [ + ['update', {items: [2], data: [{id: 2, title: 'Item 2 (changed)'}]}] + ]); + + }); + }); From d332238acc544876708681671d928bcfc78f83a8 Mon Sep 17 00:00:00 2001 From: jos Date: Mon, 2 Mar 2015 16:03:52 +0100 Subject: [PATCH 03/43] Updated history --- HISTORY.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index e484f9e7..559964b6 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -14,13 +14,7 @@ http://visjs.org - Added pull request for usage of Icons. Thanks @Dude9177! - Allow hierarchical view to be set in setOptions. - Fixed manipulation bar for mobile. -- Fixed #670: - - Bug when updating data in a DataSet, when Network is connected to the DataSet via a DataView. - - Fixed the DataView not passing a data property on update events (see #670) - -### Graph2d - - +- Fixed #670: Bug when updating data in a DataSet, when Network is connected to the DataSet via a DataView. ### Timeline @@ -29,6 +23,12 @@ http://visjs.org - Fixed #664: end of item not restored when canceling a move event. +### DataSet/DataView + +- Fixed #670: DataView not passing a data property on update events (see #670) + + + ## 2015-02-11, version 3.10.0 ### Network From c08a8a582f3d3768dd8069fcf8652196c2d98a6a Mon Sep 17 00:00:00 2001 From: jos Date: Mon, 2 Mar 2015 16:45:53 +0100 Subject: [PATCH 04/43] Fixed #609: reduce the left/right dragarea when an item range is very small, so you can still move it as a whole --- HISTORY.md | 2 + dist/vis.css | 2 + dist/vis.js | 50410 +++++++++++++------------- dist/vis.map | 2 +- dist/vis.min.css | 2 +- dist/vis.min.js | 30 +- lib/timeline/component/css/item.css | 2 + 7 files changed, 25234 insertions(+), 25216 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 559964b6..10b9a741 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -21,6 +21,8 @@ http://visjs.org - Fixed not property initializing with a DataView for groups. - Merged add custom timebar functionality, thanks @aytech! - Fixed #664: end of item not restored when canceling a move event. +- Fixed #609: reduce the left/right dragarea when an item range is very small, + so you can still move it as a whole. ### DataSet/DataView diff --git a/dist/vis.css b/dist/vis.css index 19e61cad..5f0f38ea 100644 --- a/dist/vis.css +++ b/dist/vis.css @@ -266,6 +266,7 @@ .vis.timeline .item.range .drag-left { position: absolute; width: 24px; + max-width: 20%; height: 100%; top: 0; left: -4px; @@ -276,6 +277,7 @@ .vis.timeline .item.range .drag-right { position: absolute; width: 24px; + max-width: 20%; height: 100%; top: 0; right: -4px; diff --git a/dist/vis.js b/dist/vis.js index 9ce576c2..ebd22067 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.10.1-SNAPSHOT - * @date 2015-02-26 + * @date 2015-03-02 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -83,67 +83,67 @@ return /******/ (function(modules) { // webpackBootstrap // utils exports.util = __webpack_require__(1); - exports.DOMutil = __webpack_require__(6); + exports.DOMutil = __webpack_require__(2); // data - exports.DataSet = __webpack_require__(7); - exports.DataView = __webpack_require__(9); - exports.Queue = __webpack_require__(8); + exports.DataSet = __webpack_require__(3); + exports.DataView = __webpack_require__(4); + exports.Queue = __webpack_require__(5); // Graph3d - exports.Graph3d = __webpack_require__(10); + exports.Graph3d = __webpack_require__(6); exports.graph3d = { - Camera: __webpack_require__(14), - Filter: __webpack_require__(15), - Point2d: __webpack_require__(13), - Point3d: __webpack_require__(12), - Slider: __webpack_require__(16), - StepNumber: __webpack_require__(17) + Camera: __webpack_require__(7), + Filter: __webpack_require__(8), + Point2d: __webpack_require__(9), + Point3d: __webpack_require__(10), + Slider: __webpack_require__(11), + StepNumber: __webpack_require__(12) }; // Timeline - exports.Timeline = __webpack_require__(18); - exports.Graph2d = __webpack_require__(42); + exports.Timeline = __webpack_require__(13); + exports.Graph2d = __webpack_require__(14); exports.timeline = { - DateUtil: __webpack_require__(24), - DataStep: __webpack_require__(45), - Range: __webpack_require__(21), - stack: __webpack_require__(29), - TimeStep: __webpack_require__(27), + DateUtil: __webpack_require__(15), + DataStep: __webpack_require__(16), + Range: __webpack_require__(17), + stack: __webpack_require__(18), + TimeStep: __webpack_require__(19), components: { items: { - Item: __webpack_require__(31), - BackgroundItem: __webpack_require__(35), - BoxItem: __webpack_require__(33), - PointItem: __webpack_require__(34), - RangeItem: __webpack_require__(30) + Item: __webpack_require__(20), + BackgroundItem: __webpack_require__(21), + BoxItem: __webpack_require__(22), + PointItem: __webpack_require__(23), + RangeItem: __webpack_require__(24) }, - Component: __webpack_require__(23), - CurrentTime: __webpack_require__(41), - CustomTime: __webpack_require__(38), - DataAxis: __webpack_require__(44), - GraphGroup: __webpack_require__(46), - Group: __webpack_require__(28), - BackgroundGroup: __webpack_require__(32), - ItemSet: __webpack_require__(26), - Legend: __webpack_require__(50), - LineGraph: __webpack_require__(43), - TimeAxis: __webpack_require__(40) + Component: __webpack_require__(25), + CurrentTime: __webpack_require__(26), + CustomTime: __webpack_require__(27), + DataAxis: __webpack_require__(28), + GraphGroup: __webpack_require__(29), + Group: __webpack_require__(30), + BackgroundGroup: __webpack_require__(31), + ItemSet: __webpack_require__(32), + Legend: __webpack_require__(33), + LineGraph: __webpack_require__(34), + TimeAxis: __webpack_require__(35) } }; // Network - exports.Network = __webpack_require__(51); + exports.Network = __webpack_require__(36); exports.network = { - Edge: __webpack_require__(57), - Groups: __webpack_require__(54), - Images: __webpack_require__(55), - Node: __webpack_require__(56), - Popup: __webpack_require__(58), - dotparser: __webpack_require__(52), - gephiParser: __webpack_require__(53) + Edge: __webpack_require__(37), + Groups: __webpack_require__(38), + Images: __webpack_require__(39), + Node: __webpack_require__(40), + Popup: __webpack_require__(41), + dotparser: __webpack_require__(42), + gephiParser: __webpack_require__(43) }; // Deprecated since v3.0.0 @@ -152,8 +152,8 @@ return /******/ (function(modules) { // webpackBootstrap }; // bundled external libraries - exports.moment = __webpack_require__(2); - exports.hammer = __webpack_require__(19); + exports.moment = __webpack_require__(44); + exports.hammer = __webpack_require__(45); /***/ }, @@ -164,7 +164,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - var moment = __webpack_require__(2); + var moment = __webpack_require__(44); /** * Test whether given object is a number @@ -1438,29456 +1438,29032 @@ return /******/ (function(modules) { // webpackBootstrap /* 2 */ /***/ function(module, exports, __webpack_require__) { - // first check if moment.js is already loaded in the browser window, if so, - // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(3); + // DOM utility methods + /** + * this prepares the JSON container for allocating SVG elements + * @param JSONcontainer + * @private + */ + exports.prepareElements = function(JSONcontainer) { + // cleanup the redundant svgElements; + for (var elementType in JSONcontainer) { + if (JSONcontainer.hasOwnProperty(elementType)) { + JSONcontainer[elementType].redundant = JSONcontainer[elementType].used; + JSONcontainer[elementType].used = []; + } + } + }; -/***/ }, -/* 3 */ -/***/ function(module, exports, __webpack_require__) { + /** + * this cleans up all the unused SVG elements. By asking for the parentNode, we only need to supply the JSON container from + * which to remove the redundant elements. + * + * @param JSONcontainer + * @private + */ + exports.cleanupElements = function(JSONcontainer) { + // cleanup the redundant svgElements; + for (var elementType in JSONcontainer) { + if (JSONcontainer.hasOwnProperty(elementType)) { + if (JSONcontainer[elementType].redundant) { + for (var i = 0; i < JSONcontainer[elementType].redundant.length; i++) { + JSONcontainer[elementType].redundant[i].parentNode.removeChild(JSONcontainer[elementType].redundant[i]); + } + JSONcontainer[elementType].redundant = []; + } + } + } + }; - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.9.0 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com + /** + * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer + * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. + * + * @param elementType + * @param JSONcontainer + * @param svgContainer + * @returns {*} + * @private + */ + exports.getSVGElement = function (elementType, JSONcontainer, svgContainer) { + var element; + // allocate SVG element, if it doesnt yet exist, create one. + if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before + // check if there is an redundant element + if (JSONcontainer[elementType].redundant.length > 0) { + element = JSONcontainer[elementType].redundant[0]; + JSONcontainer[elementType].redundant.shift(); + } + else { + // create a new element and add it to the SVG + element = document.createElementNS('http://www.w3.org/2000/svg', elementType); + svgContainer.appendChild(element); + } + } + else { + // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. + element = document.createElementNS('http://www.w3.org/2000/svg', elementType); + JSONcontainer[elementType] = {used: [], redundant: []}; + svgContainer.appendChild(element); + } + JSONcontainer[elementType].used.push(element); + return element; + }; - (function (undefined) { - /************************************ - Constants - ************************************/ - var moment, - VERSION = '2.9.0', - // the global-scope this is NOT the global object in Node.js - globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, - oldGlobalMoment, - round = Math.round, - hasOwnProperty = Object.prototype.hasOwnProperty, - i, + /** + * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer + * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. + * + * @param elementType + * @param JSONcontainer + * @param DOMContainer + * @returns {*} + * @private + */ + exports.getDOMElement = function (elementType, JSONcontainer, DOMContainer, insertBefore) { + var element; + // allocate DOM element, if it doesnt yet exist, create one. + if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before + // check if there is an redundant element + if (JSONcontainer[elementType].redundant.length > 0) { + element = JSONcontainer[elementType].redundant[0]; + JSONcontainer[elementType].redundant.shift(); + } + else { + // create a new element and add it to the SVG + element = document.createElement(elementType); + if (insertBefore !== undefined) { + DOMContainer.insertBefore(element, insertBefore); + } + else { + DOMContainer.appendChild(element); + } + } + } + else { + // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. + element = document.createElement(elementType); + JSONcontainer[elementType] = {used: [], redundant: []}; + if (insertBefore !== undefined) { + DOMContainer.insertBefore(element, insertBefore); + } + else { + DOMContainer.appendChild(element); + } + } + JSONcontainer[elementType].used.push(element); + return element; + }; - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, - // internal storage for locale config files - locales = {}, - // extra moment internal properties (plugins register props here) - momentProperties = [], - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module && module.exports), + /** + * draw a point object. this is a seperate function because it can also be called by the legend. + * The reason the JSONcontainer and the target SVG svgContainer have to be supplied is so the legend can use these functions + * as well. + * + * @param x + * @param y + * @param group + * @param JSONcontainer + * @param svgContainer + * @param labelObj + * @returns {*} + */ + exports.drawPoint = function(x, y, group, JSONcontainer, svgContainer, labelObj) { + var point; + if (group.options.drawPoints.style == 'circle') { + point = exports.getSVGElement('circle',JSONcontainer,svgContainer); + point.setAttributeNS(null, "cx", x); + point.setAttributeNS(null, "cy", y); + point.setAttributeNS(null, "r", 0.5 * group.options.drawPoints.size); + } + else { + point = exports.getSVGElement('rect',JSONcontainer,svgContainer); + point.setAttributeNS(null, "x", x - 0.5*group.options.drawPoints.size); + point.setAttributeNS(null, "y", y - 0.5*group.options.drawPoints.size); + point.setAttributeNS(null, "width", group.options.drawPoints.size); + point.setAttributeNS(null, "height", group.options.drawPoints.size); + } - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + if(group.options.drawPoints.styles !== undefined) { + point.setAttributeNS(null, "style", group.group.options.drawPoints.styles); + } + point.setAttributeNS(null, "class", group.className + " point"); + //handle label + var label = exports.getSVGElement('text',JSONcontainer,svgContainer); + if (labelObj){ + if (labelObj.xOffset) { + x = x + labelObj.xOffset; + } - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + if (labelObj.yOffset) { + y = y + labelObj.yOffset; + } + if (labelObj.content) { + label.textContent = labelObj.content; + } - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, + if (labelObj.className) { + label.setAttributeNS(null, "class", labelObj.className + " label"); + } - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + } + label.setAttributeNS(null, "x", x); + label.setAttributeNS(null, "y", y); + return point; + }; - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + /** + * draw a bar SVG element centered on the X coordinate + * + * @param x + * @param y + * @param className + */ + exports.drawBar = function (x, y, width, height, className, JSONcontainer, svgContainer) { + if (height != 0) { + if (height < 0) { + height *= -1; + y -= height; + } + var rect = exports.getSVGElement('rect',JSONcontainer, svgContainer); + rect.setAttributeNS(null, "x", x - 0.5 * width); + rect.setAttributeNS(null, "y", y); + rect.setAttributeNS(null, "width", width); + rect.setAttributeNS(null, "height", height); + rect.setAttributeNS(null, "class", className); + } + }; - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', +/***/ }, +/* 3 */ +/***/ function(module, exports, __webpack_require__) { - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], + var util = __webpack_require__(1); + var Queue = __webpack_require__(5); - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], + /** + * DataSet + * + * Usage: + * var dataSet = new DataSet({ + * fieldId: '_id', + * type: { + * // ... + * } + * }); + * + * dataSet.add(item); + * dataSet.add(data); + * dataSet.update(item); + * dataSet.update(data); + * dataSet.remove(id); + * dataSet.remove(ids); + * var data = dataSet.get(); + * var data = dataSet.get(id); + * var data = dataSet.get(ids); + * var data = dataSet.get(ids, options, data); + * dataSet.clear(); + * + * A data set can: + * - add/remove/update data + * - gives triggers upon changes in the data + * - can import/export data in various data formats + * + * @param {Array | DataTable} [data] Optional array with initial data + * @param {Object} [options] Available options: + * {String} fieldId Field name of the id in the + * items, 'id' by default. + * {Object. ['10', '00'] or '-1530' > ['-', '15', '30'] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, + this._options = options || {}; + this._data = {}; // map with data indexed by id + this.length = 0; // number of items in the DataSet + this._fieldId = this._options.fieldId || 'id'; // name of the field containing id + this._type = {}; // internal field types (NOTE: this can differ from this._options.type) - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, + // all variants of a Date are internally stored as Date, so we can convert + // from everything to everything (also from ISODate to Number for example) + if (this._options.type) { + for (var field in this._options.type) { + if (this._options.type.hasOwnProperty(field)) { + var value = this._options.type[field]; + if (value == 'Date' || value == 'ISODate' || value == 'ASPDate') { + this._type[field] = 'Date'; + } + else { + this._type[field] = value; + } + } + } + } - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, + // TODO: deprecated since version 1.1.1 (or 2.0.0?) + if (this._options.convert) { + throw new Error('Option "convert" is deprecated. Use "type" instead.'); + } - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, + this._subscribers = {}; // event subscribers - // format function strings - formatFunctions = {}, + // add initial data when provided + if (data) { + this.add(data); + } - // default relative time thresholds - relativeTimeThresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }, + this.setOptions(options); + } - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), + /** + * @param {Object} [options] Available options: + * {Object} queue Queue changes to the DataSet, + * flush them all at once. + * Queue options: + * - {number} delay Delay in ms, null by default + * - {number} max Maximum number of entries in the queue, Infinity by default + * @param options + */ + DataSet.prototype.setOptions = function(options) { + if (options && options.queue !== undefined) { + if (options.queue === false) { + // delete queue if loaded + if (this._queue) { + this._queue.destroy(); + delete this._queue; + } + } + else { + // create queue and update its options + if (!this._queue) { + this._queue = Queue.extend(this, { + replace: ['add', 'update', 'remove'] + }); + } - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.localeData().monthsShort(this, format); - }, - MMMM : function (format) { - return this.localeData().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.localeData().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.localeData().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.localeData().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - x : function () { - return this.valueOf(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); - } - }, + if (typeof options.queue === 'object') { + this._queue.setOptions(options.queue); + } + } + } + }; - deprecations = {}, + /** + * Subscribe to an event, add an event listener + * @param {String} event Event name. Available events: 'put', 'update', + * 'remove' + * @param {function} callback Callback method. Called with three parameters: + * {String} event + * {Object | null} params + * {String | Number} senderId + */ + DataSet.prototype.on = function(event, callback) { + var subscribers = this._subscribers[event]; + if (!subscribers) { + subscribers = []; + this._subscribers[event] = subscribers; + } - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], + subscribers.push({ + callback: callback + }); + }; - updateInProgress = false; + // TODO: make this function deprecated (replaced with `on` since version 0.5) + DataSet.prototype.subscribe = DataSet.prototype.on; - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error('Implement me'); - } - } + /** + * Unsubscribe from an event, remove an event listener + * @param {String} event + * @param {function} callback + */ + DataSet.prototype.off = function(event, callback) { + var subscribers = this._subscribers[event]; + if (subscribers) { + this._subscribers[event] = subscribers.filter(function (listener) { + return (listener.callback != callback); + }); + } + }; - function hasOwnProp(a, b) { - return hasOwnProperty.call(a, b); - } + // TODO: make this function deprecated (replaced with `on` since version 0.5) + DataSet.prototype.unsubscribe = DataSet.prototype.off; - function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; - } + /** + * Trigger an event + * @param {String} event + * @param {Object | null} params + * @param {String} [senderId] Optional id of the sender. + * @private + */ + DataSet.prototype._trigger = function (event, params, senderId) { + if (event == '*') { + throw new Error('Cannot trigger event *'); + } - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } + var subscribers = []; + if (event in this._subscribers) { + subscribers = subscribers.concat(this._subscribers[event]); + } + if ('*' in this._subscribers) { + subscribers = subscribers.concat(this._subscribers['*']); + } - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); + for (var i = 0; i < subscribers.length; i++) { + var subscriber = subscribers[i]; + if (subscriber.callback) { + subscriber.callback(event, params, senderId || null); } + } + }; - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; - } - } + /** + * Add data. + * Adding an item will fail when there already is an item with the same id. + * @param {Object | Array | DataTable} data + * @param {String} [senderId] Optional sender id + * @return {Array} addedIds Array with the ids of the added items + */ + DataSet.prototype.add = function (data, senderId) { + var addedIds = [], + id, + me = this; - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; + if (Array.isArray(data)) { + // Array + for (var i = 0, len = data.length; i < len; i++) { + id = me._addItem(data[i]); + addedIds.push(id); } - function ordinalizeToken(func, period) { - return function (a) { - return this.localeData().ordinal(func.call(this, a), period); - }; + } + else if (util.isDataTable(data)) { + // Google DataTable + var columns = this._getColumnNames(data); + for (var row = 0, rows = data.getNumberOfRows(); row < rows; row++) { + var item = {}; + for (var col = 0, cols = columns.length; col < cols; col++) { + var field = columns[col]; + item[field] = data.getValue(row, col); + } + + id = me._addItem(item); + addedIds.push(id); } + } + else if (data instanceof Object) { + // Single item + id = me._addItem(data); + addedIds.push(id); + } + else { + throw new Error('Unknown dataType'); + } - function monthDiff(a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; + if (addedIds.length) { + this._trigger('add', {items: addedIds}, senderId); + } - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } + return addedIds; + }; - return -(wholeMonthDiff + adjust); - } + /** + * Update existing items. When an item does not exist, it will be created + * @param {Object | Array | DataTable} data + * @param {String} [senderId] Optional sender id + * @return {Array} updatedIds The ids of the added or updated items + */ + DataSet.prototype.update = function (data, senderId) { + var addedIds = []; + var updatedIds = []; + var updatedData = []; + var me = this; + var fieldId = me._fieldId; - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + var addOrUpdate = function (item) { + var id = item[fieldId]; + if (me._data[id]) { + // update item + id = me._updateItem(item); + updatedIds.push(id); + updatedData.push(item); } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + else { + // add new item + id = me._addItem(item); + addedIds.push(id); } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - - - function meridiemFixWrap(locale, hour, meridiem) { - var isPm; + }; - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // thie is not supposed to happen - return hour; - } + if (Array.isArray(data)) { + // Array + for (var i = 0, len = data.length; i < len; i++) { + addOrUpdate(data[i]); } + } + else if (util.isDataTable(data)) { + // Google DataTable + var columns = this._getColumnNames(data); + for (var row = 0, rows = data.getNumberOfRows(); row < rows; row++) { + var item = {}; + for (var col = 0, cols = columns.length; col < cols; col++) { + var field = columns[col]; + item[field] = data.getValue(row, col); + } - /************************************ - Constructors - ************************************/ - - function Locale() { + addOrUpdate(item); } + } + else if (data instanceof Object) { + // Single item + addOrUpdate(data); + } + else { + throw new Error('Unknown dataType'); + } - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - moment.updateOffset(this); - updateInProgress = false; - } - } + if (addedIds.length) { + this._trigger('add', {items: addedIds}, senderId); + } + if (updatedIds.length) { + this._trigger('update', {items: updatedIds, data: updatedData}, senderId); + } - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; + return addedIds.concat(updatedIds); + }; - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; + /** + * Get a data item or multiple items. + * + * Usage: + * + * get() + * get(options: Object) + * get(options: Object, data: Array | DataTable) + * + * get(id: Number | String) + * get(id: Number | String, options: Object) + * get(id: Number | String, options: Object, data: Array | DataTable) + * + * get(ids: Number[] | String[]) + * get(ids: Number[] | String[], options: Object) + * get(ids: Number[] | String[], options: Object, data: Array | DataTable) + * + * Where: + * + * {Number | String} id The id of an item + * {Number[] | String{}} ids An array with ids of items + * {Object} options An Object with options. Available options: + * {String} [returnType] Type of data to be + * returned. Can be 'DataTable' or 'Array' (default) + * {Object.} [type] + * {String[]} [fields] field names to be returned + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * {Array | DataTable} [data] If provided, items will be appended to this + * array or table. Required in case of Google + * DataTable. + * + * @throws Error + */ + DataSet.prototype.get = function (args) { + var me = this; - this._data = {}; + // parse the arguments + var id, ids, options, data; + var firstType = util.getType(arguments[0]); + if (firstType == 'String' || firstType == 'Number') { + // get(id [, options] [, data]) + id = arguments[0]; + options = arguments[1]; + data = arguments[2]; + } + else if (firstType == 'Array') { + // get(ids [, options] [, data]) + ids = arguments[0]; + options = arguments[1]; + data = arguments[2]; + } + else { + // get([, options] [, data]) + options = arguments[0]; + data = arguments[1]; + } - this._locale = moment.localeData(); + // determine the return type + var returnType; + if (options && options.returnType) { + var allowedValues = ["DataTable", "Array", "Object"]; + returnType = allowedValues.indexOf(options.returnType) == -1 ? "Array" : options.returnType; - this._bubble(); + if (data && (returnType != util.getType(data))) { + throw new Error('Type of parameter "data" (' + util.getType(data) + ') ' + + 'does not correspond with specified options.type (' + options.type + ')'); } + if (returnType == 'DataTable' && !util.isDataTable(data)) { + throw new Error('Parameter "data" must be a DataTable ' + + 'when options.type is "DataTable"'); + } + } + else if (data) { + returnType = (util.getType(data) == 'DataTable') ? 'DataTable' : 'Array'; + } + else { + returnType = 'Array'; + } - /************************************ - Helpers - ************************************/ - - - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } + // build options + var type = options && options.type || this._options.type; + var filter = options && options.filter; + var items = [], item, itemId, i, len; - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; + // convert items + if (id != undefined) { + // return a single item + item = me._getItem(id, type); + if (filter && !filter(item)) { + item = null; + } + } + else if (ids != undefined) { + // return a subset of items + for (i = 0, len = ids.length; i < len; i++) { + item = me._getItem(ids[i], type); + if (!filter || filter(item)) { + items.push(item); + } + } + } + else { + // return all items + for (itemId in this._data) { + if (this._data.hasOwnProperty(itemId)) { + item = me._getItem(itemId, type); + if (!filter || filter(item)) { + items.push(item); } + } + } + } - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } + // order the results + if (options && options.order && id == undefined) { + this._sort(items, options.order); + } - return a; + // filter fields of the items + if (options && options.fields) { + var fields = options.fields; + if (id != undefined) { + item = this._filterFields(item, fields); } + else { + for (i = 0, len = items.length; i < len; i++) { + items[i] = this._filterFields(items[i], fields); + } + } + } - function copyConfig(to, from) { - var i, prop, val; - - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = from._pf; - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } - - return to; + // return the results + if (returnType == 'DataTable') { + var columns = this._getColumnNames(data); + if (id != undefined) { + // append a single item to the data table + me._appendRow(data, columns, item); } - - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } + else { + // copy the items to the provided data table + for (i = 0; i < items.length; i++) { + me._appendRow(data, columns, items[i]); + } } - - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; - - while (output.length < targetLength) { - output = '0' + output; + return data; + } + else if (returnType == "Object") { + var result = {}; + for (i = 0; i < items.length; i++) { + result[items[i].id] = items[i]; + } + return result; + } + else { + // return an array + if (id != undefined) { + // a single item + return item; + } + else { + // multiple items + if (data) { + // copy the items to the provided array + for (i = 0, len = items.length; i < len; i++) { + data.push(items[i]); } - return (sign ? (forceSign ? '+' : '') : '-') + output; + return data; + } + else { + // just return our array + return items; + } } + } + }; - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; + /** + * Get ids of all items or from a filtered set of items. + * @param {Object} [options] An Object with options. Available options: + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Array} ids + */ + DataSet.prototype.getIds = function (options) { + var data = this._data, + filter = options && options.filter, + order = options && options.order, + type = options && options.type || this._options.type, + i, + len, + id, + item, + items, + ids = []; - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; + if (filter) { + // get filtered items + if (order) { + // create ordered list + items = []; + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (filter(item)) { + items.push(item); + } } + } - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + this._sort(items, order); - return res; + for (i = 0, len = items.length; i < len; i++) { + ids[i] = items[i][this._fieldId]; + } } - - function momentsDifference(base, other) { - var res; - other = makeAs(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; + else { + // create unordered list + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (filter(item)) { + ids.push(item[this._fieldId]); + } } - - return res; + } } + } + else { + // get all items + if (order) { + // create an ordered list + items = []; + for (id in data) { + if (data.hasOwnProperty(id)) { + items.push(data[id]); + } + } - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; - } + this._sort(items, order); - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; + for (i = 0, len = items.length; i < len; i++) { + ids[i] = items[i][this._fieldId]; + } } - - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); - } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - moment.updateOffset(mom, days || months); + else { + // create unordered list + for (id in data) { + if (data.hasOwnProperty(id)) { + item = data[id]; + ids.push(item[this._fieldId]); } + } } + } - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } + return ids; + }; - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } + /** + * Returns the DataSet itself. Is overwritten for example by the DataView, + * which returns the DataSet it is connected to instead. + */ + DataSet.prototype.getDataSet = function () { + return this; + }; - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; - } + /** + * Execute a callback function for every item in the dataset. + * @param {function} callback + * @param {Object} [options] Available options: + * {Object.} [type] + * {String[]} [fields] filter fields + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + */ + DataSet.prototype.forEach = function (callback, options) { + var filter = options && options.filter, + type = options && options.type || this._options.type, + data = this._data, + item, + id; - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; + if (options && options.order) { + // execute forEach on ordered list + var items = this.get(options); + + for (var i = 0, len = items.length; i < len; i++) { + item = items[i]; + id = item[this._fieldId]; + callback(item, id); + } + } + else { + // unordered + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (!filter || filter(item)) { + callback(item, id); } - return units; + } } + } + }; - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } + /** + * Map every item in the dataset. + * @param {function} callback + * @param {Object} [options] Available options: + * {Object.} [type] + * {String[]} [fields] filter fields + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Object[]} mappedItems + */ + DataSet.prototype.map = function (callback, options) { + var filter = options && options.filter, + type = options && options.type || this._options.type, + mappedItems = [], + data = this._data, + item; - return normalizedInput; + // convert and filter items + for (var id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (!filter || filter(item)) { + mappedItems.push(callback(item, id)); + } } + } - function makeList(field) { - var count, setter; - - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { - return; - } + // order items + if (options && options.order) { + this._sort(mappedItems, options.order); + } - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; + return mappedItems; + }; - if (typeof format === 'number') { - index = format; - format = undefined; - } + /** + * Filter the fields of an item + * @param {Object | null} item + * @param {String[]} fields Field names + * @return {Object | null} filteredItem or null if no item is provided + * @private + */ + DataSet.prototype._filterFields = function (item, fields) { + if (!item) { // item is null + return item; + } - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; + var filteredItem = {}; - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } - }; + for (var field in item) { + if (item.hasOwnProperty(field) && (fields.indexOf(field) != -1)) { + filteredItem[field] = item[field]; } + } - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } - } - - return value; - } + return filteredItem; + }; - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } + /** + * Sort the provided array with items + * @param {Object[]} items + * @param {String | function} order A field name or custom sort function. + * @private + */ + DataSet.prototype._sort = function (items, order) { + if (util.isString(order)) { + // order by provided field name + var name = order; // field name + items.sort(function (a, b) { + var av = a[name]; + var bv = b[name]; + return (av > bv) ? 1 : ((av < bv) ? -1 : 0); + }); + } + else if (typeof order === 'function') { + // order by sort function + items.sort(order); + } + // TODO: extend order by an Object {field:String, direction:String} + // where direction can be 'asc' or 'desc' + else { + throw new TypeError('Order must be a function or a string'); + } + }; - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } + /** + * Remove an object by pointer or by id + * @param {String | Number | Object | Array} id Object or id, or an array with + * objects or ids to be removed + * @param {String} [senderId] Optional sender id + * @return {Array} removedIds + */ + DataSet.prototype.remove = function (id, senderId) { + var removedIds = [], + i, len, removedId; - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; + if (Array.isArray(id)) { + for (i = 0, len = id.length; i < len; i++) { + removedId = this._remove(id[i]); + if (removedId != null) { + removedIds.push(removedId); + } } - - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + else { + removedId = this._remove(id); + if (removedId != null) { + removedIds.push(removedId); } + } - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 24 || - (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || - m._a[SECOND] !== 0 || - m._a[MILLISECOND] !== 0)) ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; + if (removedIds.length) { + this._trigger('remove', {items: removedIds}, senderId); + } - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } + return removedIds; + }; - m._pf.overflow = overflow; - } + /** + * Remove an item by its id + * @param {Number | String | Object} id id or item + * @returns {Number | String | null} id + * @private + */ + DataSet.prototype._remove = function (id) { + if (util.isNumber(id) || util.isString(id)) { + if (this._data[id]) { + delete this._data[id]; + this.length--; + return id; + } + } + else if (id instanceof Object) { + var itemId = id[this._fieldId]; + if (itemId && this._data[itemId]) { + delete this._data[itemId]; + this.length--; + return itemId; } + } + return null; + }; - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; + /** + * Clear the data + * @param {String} [senderId] Optional sender id + * @return {Array} removedIds The ids of all removed items + */ + DataSet.prototype.clear = function (senderId) { + var ids = Object.keys(this._data); - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0 && - m._pf.bigHour === undefined; - } - } - return m._isValid; - } + this._data = {}; + this.length = 0; - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } + this._trigger('remove', {items: ids}, senderId); - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; + return ids; + }; - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; - } + /** + * Find the item with maximum value of a specified field + * @param {String} field + * @return {Object | null} item Item containing max value, or null if no items + */ + DataSet.prototype.max = function (field) { + var data = this._data, + max = null, + maxField = null; - function loadLocale(name) { - var oldLocale = null; - if (!locales[name] && hasModule) { - try { - oldLocale = moment.locale(); - !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); - // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales - moment.locale(oldLocale); - } catch (e) { } - } - return locales[name]; + for (var id in data) { + if (data.hasOwnProperty(id)) { + var item = data[id]; + var itemField = item[field]; + if (itemField != null && (!max || itemField > maxField)) { + max = item; + maxField = itemField; + } } + } - // Return a moment from input, that is local/utc/utcOffset equivalent to - // model. - function makeAs(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (moment.isMoment(input) || isDate(input) ? - +input : +moment(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - moment.updateOffset(res, false); - return res; - } else { - return moment(input).local(); - } + return max; + }; + + /** + * Find the item with minimum value of a specified field + * @param {String} field + * @return {Object | null} item Item containing max value, or null if no items + */ + DataSet.prototype.min = function (field) { + var data = this._data, + min = null, + minField = null; + + for (var id in data) { + if (data.hasOwnProperty(id)) { + var item = data[id]; + var itemField = item[field]; + if (itemField != null && (!min || itemField < minField)) { + min = item; + minField = itemField; + } } + } - /************************************ - Locale - ************************************/ + return min; + }; + /** + * Find all distinct values of a specified field + * @param {String} field + * @return {Array} values Array containing all distinct values. If data items + * do not contain the specified field are ignored. + * The returned array is unordered. + */ + DataSet.prototype.distinct = function (field) { + var data = this._data; + var values = []; + var fieldType = this._options.type && this._options.type[field] || null; + var count = 0; + var i; - extend(Locale.prototype, { + for (var prop in data) { + if (data.hasOwnProperty(prop)) { + var item = data[prop]; + var value = item[field]; + var exists = false; + for (i = 0; i < count; i++) { + if (values[i] == value) { + exists = true; + break; + } + } + if (!exists && (value !== undefined)) { + values[count] = value; + count++; + } + } + } - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); - }, + if (fieldType) { + for (i = 0; i < values.length; i++) { + values[i] = util.convert(values[i], fieldType); + } + } - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, + return values; + }; - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, + /** + * Add a single item. Will fail when an item with the same id already exists. + * @param {Object} item + * @return {String} id + * @private + */ + DataSet.prototype._addItem = function (item) { + var id = item[this._fieldId]; - monthsParse : function (monthName, format, strict) { - var i, mom, regex; + if (id != undefined) { + // check whether this id is already taken + if (this._data[id]) { + // item already exists + throw new Error('Cannot add item: item with id ' + id + ' already exists'); + } + } + else { + // generate an id + id = util.randomUUID(); + item[this._fieldId] = id; + } - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } + var d = {}; + for (var field in item) { + if (item.hasOwnProperty(field)) { + var fieldType = this._type[field]; // type may be undefined + d[field] = util.convert(item[field], fieldType); + } + } + this._data[id] = d; + this.length++; - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = moment.utc([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - }, + return id; + }; - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, + /** + * Get an item. Fields can be converted to a specific type + * @param {String} id + * @param {Object.} [types] field types to convert + * @return {Object | null} item + * @private + */ + DataSet.prototype._getItem = function (id, types) { + var field, value; - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, + // get the item from the dataset + var raw = this._data[id]; + if (!raw) { + return null; + } - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, + // convert the items field types + var converted = {}; + if (types) { + for (field in raw) { + if (raw.hasOwnProperty(field)) { + value = raw[field]; + converted[field] = util.convert(value, types[field]); + } + } + } + else { + // no field types specified, no converting needed + for (field in raw) { + if (raw.hasOwnProperty(field)) { + value = raw[field]; + converted[field] = value; + } + } + } + return converted; + }; - weekdaysParse : function (weekdayName) { - var i, mom, regex; + /** + * Update a single item: merge with existing item. + * Will fail when the item has no id, or when there does not exist an item + * with the same id. + * @param {Object} item + * @return {String} id + * @private + */ + DataSet.prototype._updateItem = function (item) { + var id = item[this._fieldId]; + if (id == undefined) { + throw new Error('Cannot update item: item has no id (item: ' + JSON.stringify(item) + ')'); + } + var d = this._data[id]; + if (!d) { + // item doesn't exist + throw new Error('Cannot update item: no item with id ' + id + ' found'); + } - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } + // merge with current item + for (var field in item) { + if (item.hasOwnProperty(field)) { + var fieldType = this._type[field]; // type may be undefined + d[field] = util.convert(item[field], fieldType); + } + } - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - }, + return id; + }; - _longDateFormat : { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; - } - return output; - }, + /** + * Get an array with the column names of a Google DataTable + * @param {DataTable} dataTable + * @return {String[]} columnNames + * @private + */ + DataSet.prototype._getColumnNames = function (dataTable) { + var columns = []; + for (var col = 0, cols = dataTable.getNumberOfColumns(); col < cols; col++) { + columns[col] = dataTable.getColumnId(col) || dataTable.getColumnLabel(col); + } + return columns; + }; - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - }, + /** + * Append an item as a row to the dataTable + * @param dataTable + * @param columns + * @param item + * @private + */ + DataSet.prototype._appendRow = function (dataTable, columns, item) { + var row = dataTable.addRow(); - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - }, + for (var col = 0, cols = columns.length; col < cols; col++) { + var field = columns[col]; + dataTable.setValue(row, col, item[field]); + } + }; + module.exports = DataSet; - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom, [now]) : output; - }, - _relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, +/***/ }, +/* 4 */ +/***/ function(module, exports, __webpack_require__) { - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, + var util = __webpack_require__(1); + var DataSet = __webpack_require__(3); - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, + /** + * DataView + * + * a dataview offers a filtered view on a dataset or an other dataview. + * + * @param {DataSet | DataView} data + * @param {Object} [options] Available options: see method get + * + * @constructor DataView + */ + function DataView (data, options) { + this._data = null; + this._ids = {}; // ids of the items currently in memory (just contains a boolean true) + this.length = 0; // number of items in the DataView + this._options = options || {}; + this._fieldId = 'id'; // name of the field containing id + this._subscribers = {}; // event subscribers - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', - _ordinalParse : /\d{1,2}/, + var me = this; + this.listener = function () { + me._onEvent.apply(me, arguments); + }; - preparse : function (string) { - return string; - }, + this.setData(data); + } - postformat : function (string) { - return string; - }, + // TODO: implement a function .config() to dynamically update things like configured filter + // and trigger changes accordingly - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, + /** + * Set a data source for the view + * @param {DataSet | DataView} data + */ + DataView.prototype.setData = function (data) { + var ids, i, len; - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }, + if (this._data) { + // unsubscribe from current dataset + if (this._data.unsubscribe) { + this._data.unsubscribe('*', this.listener); + } - firstDayOfWeek : function () { - return this._week.dow; - }, + // trigger a remove of all items in memory + ids = []; + for (var id in this._ids) { + if (this._ids.hasOwnProperty(id)) { + ids.push(id); + } + } + this._ids = {}; + this.length = 0; + this._trigger('remove', {items: ids}); + } - firstDayOfYear : function () { - return this._week.doy; - }, + this._data = data; - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; - } - }); - - /************************************ - Formatting - ************************************/ + if (this._data) { + // update fieldId + this._fieldId = this._options.fieldId || + (this._data && this._data.options && this._data.options.fieldId) || + 'id'; + // trigger an add of all added items + ids = this._data.getIds({filter: this._options && this._options.filter}); + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + this._ids[id] = true; + } + this.length = ids.length; + this._trigger('add', {items: ids}); - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); + // subscribe to new dataset + if (this._data.on) { + this._data.on('*', this.listener); } + } + }; - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + /** + * Refresh the DataView. Useful when the DataView has a filter function + * containing a variable parameter. + */ + DataView.prototype.refresh = function () { + var id; + var ids = this._data.getIds({filter: this._options && this._options.filter}); + var newIds = {}; + var added = []; + var removed = []; - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } + // check for additions + for (var i = 0; i < ids.length; i++) { + id = ids[i]; + newIds[id] = true; + if (!this._ids[id]) { + added.push(id); + this._ids[id] = true; + this.length++; + } + } - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; - }; + // check for removals + for (id in this._ids) { + if (this._ids.hasOwnProperty(id)) { + if (!newIds[id]) { + removed.push(id); + delete this._ids[id]; + this.length--; + } } + } - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } + // trigger events + if (added.length) { + this._trigger('add', {items: added}); + } + if (removed.length) { + this._trigger('remove', {items: removed}); + } + }; - format = expandFormat(format, m.localeData()); + /** + * Get data from the data view + * + * Usage: + * + * get() + * get(options: Object) + * get(options: Object, data: Array | DataTable) + * + * get(id: Number) + * get(id: Number, options: Object) + * get(id: Number, options: Object, data: Array | DataTable) + * + * get(ids: Number[]) + * get(ids: Number[], options: Object) + * get(ids: Number[], options: Object, data: Array | DataTable) + * + * Where: + * + * {Number | String} id The id of an item + * {Number[] | String{}} ids An array with ids of items + * {Object} options An Object with options. Available options: + * {String} [type] Type of data to be returned. Can + * be 'DataTable' or 'Array' (default) + * {Object.} [convert] + * {String[]} [fields] field names to be returned + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * {Array | DataTable} [data] If provided, items will be appended to this + * array or table. Required in case of Google + * DataTable. + * @param args + */ + DataView.prototype.get = function (args) { + var me = this; - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); - } + // parse the arguments + var ids, options, data; + var firstType = util.getType(arguments[0]); + if (firstType == 'String' || firstType == 'Number' || firstType == 'Array') { + // get(id(s) [, options] [, data]) + ids = arguments[0]; // can be a single id or an array with ids + options = arguments[1]; + data = arguments[2]; + } + else { + // get([, options] [, data]) + options = arguments[0]; + data = arguments[1]; + } - return formatFunctions[format](m); + // extend the options with the default options and provided options + var viewOptions = util.extend({}, this._options, options); + + // create a combined filter method when needed + if (this._options.filter && options && options.filter) { + viewOptions.filter = function (item) { + return me._options.filter(item) && options.filter(item); } + } - function expandFormat(format, locale) { - var i = 5; + // build up the call to the linked data set + var getArguments = []; + if (ids != undefined) { + getArguments.push(ids); + } + getArguments.push(viewOptions); + getArguments.push(data); - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } + return this._data && this._data.get.apply(this._data, getArguments); + }; - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } + /** + * Get ids of all items or from a filtered set of items. + * @param {Object} [options] An Object with options. Available options: + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Array} ids + */ + DataView.prototype.getIds = function (options) { + var ids; - return format; + if (this._data) { + var defaultFilter = this._options.filter; + var filter; + + if (options && options.filter) { + if (defaultFilter) { + filter = function (item) { + return defaultFilter(item) && options.filter(item); + } + } + else { + filter = options.filter; + } + } + else { + filter = defaultFilter; } + ids = this._data.getIds({ + filter: filter, + order: options && options.order + }); + } + else { + ids = []; + } - /************************************ - Parsing - ************************************/ + return ids; + }; + /** + * Get the DataSet to which this DataView is connected. In case there is a chain + * of multiple DataViews, the root DataSet of this chain is returned. + * @return {DataSet} dataSet + */ + DataView.prototype.getDataSet = function () { + var dataSet = this; + while (dataSet instanceof DataView) { + dataSet = dataSet._data; + } + return dataSet || null; + }; - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { - return parseTokenOneDigit; - } - /* falls through */ - case 'SS': - if (strict) { - return parseTokenTwoDigits; - } - /* falls through */ - case 'SSS': - if (strict) { - return parseTokenThreeDigits; - } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return config._locale._meridiemParse; - case 'x': - return parseTokenOffsetMs; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); - return a; - } - } + /** + * Event listener. Will propagate all events from the connected data set to + * the subscribers of the DataView, but will filter the items and only trigger + * when there are changes in the filtered data set. + * @param {String} event + * @param {Object | null} params + * @param {String} senderId + * @private + */ + DataView.prototype._onEvent = function (event, params, senderId) { + var i, len, id, item; + var ids = params && params.items; + var data = this._data; + var updatedData = []; + var added = []; + var updated = []; + var removed = []; - function utcOffsetFromString(string) { - string = string || ''; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); + if (ids && data) { + switch (event) { + case 'add': + // filter the ids of the added items + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + item = this.get(id); + if (item) { + this._ids[id] = true; + added.push(id); + } + } - return parts[0] === '+' ? minutes : -minutes; - } + break; - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + case 'update': + // determine the event from the views viewpoint: an updated + // item can be added, updated, or removed from this view. + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + item = this.get(id); - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; - } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt( - input.match(/\d{1,2}/)[0], 10)); + if (item) { + if (this._ids[id]) { + updated.push(id); + updatedData.push(params.data[i]); } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); + else { + this._ids[id] = true; + added.push(id); } - - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._meridiem = input; - // config._isPm = config._locale.isPM(input); - break; - // HOUR - case 'h' : // fall through to hh - case 'hh' : - config._pf.bigHour = true; - /* falls through */ - case 'H' : // fall through to HH - case 'HH' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX OFFSET (MILLISECONDS) - case 'x': - config._d = new Date(toInt(input)); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = utcOffsetFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; - } else { - config._pf.invalidWeekday = input; + } + else { + if (this._ids[id]) { + delete this._ids[id]; + removed.push(id); } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); + else { + // nothing interesting for me :-( } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); + } } - } - - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + break; - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; + case 'remove': + // filter the ids of the removed items + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + if (this._ids[id]) { + delete this._ids[id]; + removed.push(id); + } + } - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + break; + } - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + this.length += added.length - removed.length; - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; + if (added.length) { + this._trigger('add', {items: added}, senderId); + } + if (updated.length) { + this._trigger('update', {items: updated, data: updatedData}, senderId); } + if (removed.length) { + this._trigger('remove', {items: removed}, senderId); + } + } + }; - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; + // copy subscription functionality from DataSet + DataView.prototype.on = DataSet.prototype.on; + DataView.prototype.off = DataSet.prototype.off; + DataView.prototype._trigger = DataSet.prototype._trigger; - if (config._d) { - return; - } + // TODO: make these functions deprecated (replaced with `on` and `off` since version 0.5) + DataView.prototype.subscribe = DataView.prototype.on; + DataView.prototype.unsubscribe = DataView.prototype.off; - currentDate = currentDateArray(config); + module.exports = DataView; - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } +/***/ }, +/* 5 */ +/***/ function(module, exports, __webpack_require__) { - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + /** + * A queue + * @param {Object} options + * Available options: + * - delay: number When provided, the queue will be flushed + * automatically after an inactivity of this delay + * in milliseconds. + * Default value is null. + * - max: number When the queue exceeds the given maximum number + * of entries, the queue is flushed automatically. + * Default value of max is Infinity. + * @constructor + */ + function Queue(options) { + // options + this.delay = null; + this.max = Infinity; - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; - } + // properties + this._queue = []; + this._timeout = null; + this._extended = null; - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + this.setOptions(options); + } - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } + /** + * Update the configuration of the queue + * @param {Object} options + * Available options: + * - delay: number When provided, the queue will be flushed + * automatically after an inactivity of this delay + * in milliseconds. + * Default value is null. + * - max: number When the queue exceeds the given maximum number + * of entries, the queue is flushed automatically. + * Default value of max is Infinity. + * @param options + */ + Queue.prototype.setOptions = function (options) { + if (options && typeof options.delay !== 'undefined') { + this.delay = options.delay; + } + if (options && typeof options.max !== 'undefined') { + this.max = options.max; + } - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } + this._flushIfNeeded(); + }; - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } + /** + * Extend an object with queuing functionality. + * The object will be extended with a function flush, and the methods provided + * in options.replace will be replaced with queued ones. + * @param {Object} object + * @param {Object} options + * Available options: + * - replace: Array. + * A list with method names of the methods + * on the object to be replaced with queued ones. + * - delay: number When provided, the queue will be flushed + * automatically after an inactivity of this delay + * in milliseconds. + * Default value is null. + * - max: number When the queue exceeds the given maximum number + * of entries, the queue is flushed automatically. + * Default value of max is Infinity. + * @return {Queue} Returns the created queue + */ + Queue.extend = function (object, options) { + var queue = new Queue(options); - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } + if (object.flush !== undefined) { + throw new Error('Target object already has a property flush'); + } + object.flush = function () { + queue.flush(); + }; - if (config._nextDay) { - config._a[HOUR] = 24; - } + var methods = [{ + name: 'flush', + original: undefined + }]; + + if (options && options.replace) { + for (var i = 0; i < options.replace.length; i++) { + var name = options.replace[i]; + methods.push({ + name: name, + original: object[name] + }); + queue.replace(object, name); } + } - function dateFromObject(config) { - var normalizedInput; + queue._extended = { + object: object, + methods: methods + }; - if (config._d) { - return; - } + return queue; + }; - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day || normalizedInput.date, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; + /** + * Destroy the queue. The queue will first flush all queued actions, and in + * case it has extended an object, will restore the original object. + */ + Queue.prototype.destroy = function () { + this.flush(); - dateFromConfig(config); + if (this._extended) { + var object = this._extended.object; + var methods = this._extended.methods; + for (var i = 0; i < methods.length; i++) { + var method = methods[i]; + if (method.original) { + object[method.name] = method.original; + } + else { + delete object[method.name]; + } } + this._extended = null; + } + }; - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; - } + /** + * Replace a method on an object with a queued version + * @param {Object} object Object having the method + * @param {string} method The method name + */ + Queue.prototype.replace = function(object, method) { + var me = this; + var original = object[method]; + if (!original) { + throw new Error('Method ' + method + ' undefined'); + } + + object[method] = function () { + // create an Array with the arguments + var args = []; + for (var i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; } - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; - } + // add this call to the queue + me.queue({ + args: args, + fn: original, + context: this + }); + }; + }; - config._a = []; - config._pf.empty = true; + /** + * Queue a call + * @param {function | {fn: function, args: Array} | {fn: function, args: Array, context: Object}} entry + */ + Queue.prototype.queue = function(entry) { + if (typeof entry === 'function') { + this._queue.push({fn: entry}); + } + else { + this._queue.push(entry); + } - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; + this._flushIfNeeded(); + }; - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + /** + * Check whether the queue needs to be flushed + * @private + */ + Queue.prototype._flushIfNeeded = function () { + // flush when the maximum is exceeded. + if (this._queue.length > this.max) { + this.flush(); + } - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - config._pf.empty = false; - } - else { - config._pf.unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); - } - } + // flush after a period of inactivity when a delay is configured + clearTimeout(this._timeout); + if (this.queue.length > 0 && typeof this.delay === 'number') { + var me = this; + this._timeout = setTimeout(function () { + me.flush(); + }, this.delay); + } + }; - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); - } + /** + * Flush all queued calls + */ + Queue.prototype.flush = function () { + while (this._queue.length > 0) { + var entry = this._queue.shift(); + entry.fn.apply(entry.context || entry.fn, entry.args || []); + } + }; - // clear _12h flag if hour is <= 12 - if (config._pf.bigHour === true && config._a[HOUR] <= 12) { - config._pf.bigHour = undefined; - } - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], - config._meridiem); - dateFromConfig(config); - checkOverflow(config); - } + module.exports = Queue; - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); - } - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } +/***/ }, +/* 6 */ +/***/ function(module, exports, __webpack_require__) { - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, + var Emitter = __webpack_require__(56); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var util = __webpack_require__(1); + var Point3d = __webpack_require__(10); + var Point2d = __webpack_require__(9); + var Camera = __webpack_require__(7); + var Filter = __webpack_require__(8); + var Slider = __webpack_require__(11); + var StepNumber = __webpack_require__(12); - scoreToBeat, - i, - currentScore; + /** + * @constructor Graph3d + * Graph3d displays data in 3d. + * + * Graph3d is developed in javascript as a Google Visualization Chart. + * + * @param {Element} container The DOM element in which the Graph3d will + * be created. Normally a div element. + * @param {DataSet | DataView | Array} [data] + * @param {Object} [options] + */ + function Graph3d(container, data, options) { + if (!(this instanceof Graph3d)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; - } + // create variables and set default values + this.containerElement = container; + this.width = '400px'; + this.height = '400px'; + this.margin = 10; // px + this.defaultXCenter = '55%'; + this.defaultYCenter = '50%'; - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); + this.xLabel = 'x'; + this.yLabel = 'y'; + this.zLabel = 'z'; - if (!isValid(tempConfig)) { - continue; - } + var passValueFn = function(v) { return v; }; + this.xValueLabel = passValueFn; + this.yValueLabel = passValueFn; + this.zValueLabel = passValueFn; + + this.filterLabel = 'time'; + this.legendLabel = 'value'; - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + this.style = Graph3d.STYLE.DOT; + this.showPerspective = true; + this.showGrid = true; + this.keepAspectRatio = true; + this.showShadow = false; + this.showGrayBottom = false; // TODO: this does not work correctly + this.showTooltip = false; + this.verticalRatio = 0.5; // 0.1 to 1.0, where 1.0 results in a 'cube' - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + this.animationInterval = 1000; // milliseconds + this.animationPreload = false; - tempConfig._pf.score = currentScore; + this.camera = new Camera(); + this.eye = new Point3d(0, 0, -1); // TODO: set eye.z about 3/4 of the width of the window? - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } + this.dataTable = null; // The original data table + this.dataPoints = null; // The table with point objects - extend(config, bestMoment || tempConfig); - } + // the column indexes + this.colX = undefined; + this.colY = undefined; + this.colZ = undefined; + this.colValue = undefined; + this.colFilter = undefined; - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); + this.xMin = 0; + this.xStep = undefined; // auto by default + this.xMax = 1; + this.yMin = 0; + this.yStep = undefined; // auto by default + this.yMax = 1; + this.zMin = 0; + this.zStep = undefined; // auto by default + this.zMax = 1; + this.valueMin = 0; + this.valueMax = 1; + this.xBarWidth = 1; + this.yBarWidth = 1; + // TODO: customize axis range - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be 'T' or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; - } - } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; - } - } + // constants + this.colorAxis = '#4D4D4D'; + this.colorGrid = '#D3D3D3'; + this.colorDot = '#7DC1FF'; + this.colorDotBorder = '#3267D2'; - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); - } - } + // create a frame and canvas + this.create(); - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } + // apply options (also when undefined) + this.setOptions(options); - function makeDateFromInput(config) { - var input = config._i, matched; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - dateFromConfig(config); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - moment.createFromInputFallback(config); - } - } + // apply data + if (data) { + this.setData(data); + } + } - function makeDate(y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); + // Extend Graph3d with an Emitter mixin + Emitter(Graph3d.prototype); - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; - } + /** + * Calculate the scaling values, dependent on the range in x, y, and z direction + */ + Graph3d.prototype._setScale = function() { + this.scale = new Point3d(1 / (this.xMax - this.xMin), + 1 / (this.yMax - this.yMin), + 1 / (this.zMax - this.zMin)); - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; + // keep aspect ration between x and y scale if desired + if (this.keepAspectRatio) { + if (this.scale.x < this.scale.y) { + //noinspection JSSuspiciousNameCombination + this.scale.y = this.scale.x; } - - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } - } - } - return input; + else { + //noinspection JSSuspiciousNameCombination + this.scale.x = this.scale.y; } + } - /************************************ - Relative Time - ************************************/ + // scale the vertical axis + this.scale.z *= this.verticalRatio; + // TODO: can this be automated? verticalRatio? + // determine scale for (optional) value + this.scale.value = 1 / (this.valueMax - this.valueMin); - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } + // position the camera arm + var xCenter = (this.xMax + this.xMin) / 2 * this.scale.x; + var yCenter = (this.yMax + this.yMin) / 2 * this.scale.y; + var zCenter = (this.zMax + this.zMin) / 2 * this.scale.z; + this.camera.setArmLocation(xCenter, yCenter, zCenter); + }; - function relativeTime(posNegDuration, withoutSuffix, locale) { - var duration = moment.duration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - years = round(duration.as('y')), - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < relativeTimeThresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < relativeTimeThresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; + /** + * Convert a 3D location to a 2D location on screen + * http://en.wikipedia.org/wiki/3D_projection + * @param {Point3d} point3d A 3D point with parameters x, y, z + * @return {Point2d} point2d A 2D point with parameters x, y + */ + Graph3d.prototype._convert3Dto2D = function(point3d) { + var translation = this._convertPointToTranslation(point3d); + return this._convertTranslationToScreen(translation); + }; - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); - } + /** + * Convert a 3D location its translation seen from the camera + * http://en.wikipedia.org/wiki/3D_projection + * @param {Point3d} point3d A 3D point with parameters x, y, z + * @return {Point3d} translation A 3D point with parameters x, y, z This is + * the translation of the point, seen from the + * camera + */ + Graph3d.prototype._convertPointToTranslation = function(point3d) { + var ax = point3d.x * this.scale.x, + ay = point3d.y * this.scale.y, + az = point3d.z * this.scale.z, + cx = this.camera.getCameraLocation().x, + cy = this.camera.getCameraLocation().y, + cz = this.camera.getCameraLocation().z, - /************************************ - Week of Year - ************************************/ + // calculate angles + sinTx = Math.sin(this.camera.getCameraRotation().x), + cosTx = Math.cos(this.camera.getCameraRotation().x), + sinTy = Math.sin(this.camera.getCameraRotation().y), + cosTy = Math.cos(this.camera.getCameraRotation().y), + sinTz = Math.sin(this.camera.getCameraRotation().z), + cosTz = Math.cos(this.camera.getCameraRotation().z), + // calculate translation + dx = cosTy * (sinTz * (ay - cy) + cosTz * (ax - cx)) - sinTy * (az - cz), + dy = sinTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) + cosTx * (cosTz * (ay - cy) - sinTz * (ax-cx)), + dz = cosTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) - sinTx * (cosTz * (ay - cy) - sinTz * (ax-cx)); - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; + return new Point3d(dx, dy, dz); + }; + /** + * Convert a translation point to a point on the screen + * @param {Point3d} translation A 3D point with parameters x, y, z This is + * the translation of the point, seen from the + * camera + * @return {Point2d} point2d A 2D point with parameters x, y + */ + Graph3d.prototype._convertTranslationToScreen = function(translation) { + var ex = this.eye.x, + ey = this.eye.y, + ez = this.eye.z, + dx = translation.x, + dy = translation.y, + dz = translation.z; - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } + // calculate position on screen from translation + var bx; + var by; + if (this.showPerspective) { + bx = (dx - ex) * (ez / dz); + by = (dy - ey) * (ez / dz); + } + else { + bx = dx * -(ez / this.camera.getArmLength()); + by = dy * -(ez / this.camera.getArmLength()); + } - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } + // shift and scale the point to the center of the screen + // use the width of the graph to scale both horizontally and vertically. + return new Point2d( + this.xcenter + bx * this.frame.canvas.clientWidth, + this.ycenter - by * this.frame.canvas.clientWidth); + }; - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; - } + /** + * Set the background styling for the graph + * @param {string | {fill: string, stroke: string, strokeWidth: string}} backgroundColor + */ + Graph3d.prototype._setBackgroundColor = function(backgroundColor) { + var fill = 'white'; + var stroke = 'gray'; + var strokeWidth = 1; - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; + if (typeof(backgroundColor) === 'string') { + fill = backgroundColor; + stroke = 'none'; + strokeWidth = 0; + } + else if (typeof(backgroundColor) === 'object') { + if (backgroundColor.fill !== undefined) fill = backgroundColor.fill; + if (backgroundColor.stroke !== undefined) stroke = backgroundColor.stroke; + if (backgroundColor.strokeWidth !== undefined) strokeWidth = backgroundColor.strokeWidth; + } + else if (backgroundColor === undefined) { + // use use defaults + } + else { + throw 'Unsupported type of backgroundColor'; + } - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + this.frame.style.backgroundColor = fill; + this.frame.style.borderColor = stroke; + this.frame.style.borderWidth = strokeWidth + 'px'; + this.frame.style.borderStyle = 'solid'; + }; - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; - } - /************************************ - Top Level Functions - ************************************/ + /// enumerate the available styles + Graph3d.STYLE = { + BAR: 0, + BARCOLOR: 1, + BARSIZE: 2, + DOT : 3, + DOTLINE : 4, + DOTCOLOR: 5, + DOTSIZE: 6, + GRID : 7, + LINE: 8, + SURFACE : 9 + }; - function makeMoment(config) { - var input = config._i, - format = config._f, - res; + /** + * Retrieve the style index from given styleName + * @param {string} styleName Style name such as 'dot', 'grid', 'dot-line' + * @return {Number} styleNumber Enumeration value representing the style, or -1 + * when not found + */ + Graph3d.prototype._getStyleNumber = function(styleName) { + switch (styleName) { + case 'dot': return Graph3d.STYLE.DOT; + case 'dot-line': return Graph3d.STYLE.DOTLINE; + case 'dot-color': return Graph3d.STYLE.DOTCOLOR; + case 'dot-size': return Graph3d.STYLE.DOTSIZE; + case 'line': return Graph3d.STYLE.LINE; + case 'grid': return Graph3d.STYLE.GRID; + case 'surface': return Graph3d.STYLE.SURFACE; + case 'bar': return Graph3d.STYLE.BAR; + case 'bar-color': return Graph3d.STYLE.BARCOLOR; + case 'bar-size': return Graph3d.STYLE.BARSIZE; + } - config._locale = config._locale || moment.localeData(config._l); + return -1; + }; - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } + /** + * Determine the indexes of the data columns, based on the given style and data + * @param {DataSet} data + * @param {Number} style + */ + Graph3d.prototype._determineColumnIndexes = function(data, style) { + if (this.style === Graph3d.STYLE.DOT || + this.style === Graph3d.STYLE.DOTLINE || + this.style === Graph3d.STYLE.LINE || + this.style === Graph3d.STYLE.GRID || + this.style === Graph3d.STYLE.SURFACE || + this.style === Graph3d.STYLE.BAR) { + // 3 columns expected, and optionally a 4th with filter values + this.colX = 0; + this.colY = 1; + this.colZ = 2; + this.colValue = undefined; - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } + if (data.getNumberOfColumns() > 3) { + this.colFilter = 3; + } + } + else if (this.style === Graph3d.STYLE.DOTCOLOR || + this.style === Graph3d.STYLE.DOTSIZE || + this.style === Graph3d.STYLE.BARCOLOR || + this.style === Graph3d.STYLE.BARSIZE) { + // 4 columns expected, and optionally a 5th with filter values + this.colX = 0; + this.colY = 1; + this.colZ = 2; + this.colValue = 3; - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); - } - } else { - makeDateFromInput(config); - } + if (data.getNumberOfColumns() > 4) { + this.colFilter = 4; + } + } + else { + throw 'Unknown style "' + this.style + '"'; + } + }; - res = new Moment(config); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } + Graph3d.prototype.getNumberOfRows = function(data) { + return data.length; + } - return res; + + Graph3d.prototype.getNumberOfColumns = function(data) { + var counter = 0; + for (var column in data[0]) { + if (data[0].hasOwnProperty(column)) { + counter++; } + } + return counter; + } - moment = function (input, format, locale, strict) { - var c; - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = locale; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); + Graph3d.prototype.getDistinctValues = function(data, column) { + var distinctValues = []; + for (var i = 0; i < data.length; i++) { + if (distinctValues.indexOf(data[i][column]) == -1) { + distinctValues.push(data[i][column]); + } + } + return distinctValues; + } - return makeMoment(c); - }; - moment.suppressDeprecationWarnings = false; + Graph3d.prototype.getColumnRange = function(data,column) { + var minMax = {min:data[0][column],max:data[0][column]}; + for (var i = 0; i < data.length; i++) { + if (minMax.min > data[i][column]) { minMax.min = data[i][column]; } + if (minMax.max < data[i][column]) { minMax.max = data[i][column]; } + } + return minMax; + }; - moment.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); + /** + * Initialize the data from the data table. Calculate minimum and maximum values + * and column index values + * @param {Array | DataSet | DataView} rawData The data containing the items for the Graph. + * @param {Number} style Style Number + */ + Graph3d.prototype._dataInitialize = function (rawData, style) { + var me = this; - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return moment(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; - } - } - return res; - } + // unsubscribe from the dataTable + if (this.dataSet) { + this.dataSet.off('*', this._onChange); + } - moment.min = function () { - var args = [].slice.call(arguments, 0); + if (rawData === undefined) + return; - return pickBy('isBefore', args); - }; + if (Array.isArray(rawData)) { + rawData = new DataSet(rawData); + } - moment.max = function () { - var args = [].slice.call(arguments, 0); + var data; + if (rawData instanceof DataSet || rawData instanceof DataView) { + data = rawData.get(); + } + else { + throw new Error('Array, DataSet, or DataView expected'); + } - return pickBy('isAfter', args); - }; + if (data.length == 0) + return; - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; + this.dataSet = rawData; + this.dataTable = data; - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); + // subscribe to changes in the dataset + this._onChange = function () { + me.setData(me.dataSet); + }; + this.dataSet.on('*', this._onChange); - return makeMoment(c).utc(); - }; + // _determineColumnIndexes + // getNumberOfRows (points) + // getNumberOfColumns (x,y,z,v,t,t1,t2...) + // getDistinctValues (unique values?) + // getColumnRange - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + // determine the location of x,y,z,value,filter columns + this.colX = 'x'; + this.colY = 'y'; + this.colZ = 'z'; + this.colValue = 'style'; + this.colFilter = 'filter'; - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; - if (moment.isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; - duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && - ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(moment(duration.from), moment(duration.to)); - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } + // check if a filter column is provided + if (data[0].hasOwnProperty('filter')) { + if (this.dataFilter === undefined) { + this.dataFilter = new Filter(rawData, this.colFilter, this); + this.dataFilter.setOnLoadCallback(function() {me.redraw();}); + } + } - ret = new Duration(duration); - if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } + var withBars = this.style == Graph3d.STYLE.BAR || + this.style == Graph3d.STYLE.BARCOLOR || + this.style == Graph3d.STYLE.BARSIZE; - return ret; - }; + // determine barWidth from data + if (withBars) { + if (this.defaultXBarWidth !== undefined) { + this.xBarWidth = this.defaultXBarWidth; + } + else { + var dataX = this.getDistinctValues(data,this.colX); + this.xBarWidth = (dataX[1] - dataX[0]) || 1; + } - // version number - moment.version = VERSION; + if (this.defaultYBarWidth !== undefined) { + this.yBarWidth = this.defaultYBarWidth; + } + else { + var dataY = this.getDistinctValues(data,this.colY); + this.yBarWidth = (dataY[1] - dataY[0]) || 1; + } + } - // default format - moment.defaultFormat = isoFormat; + // calculate minimums and maximums + var xRange = this.getColumnRange(data,this.colX); + if (withBars) { + xRange.min -= this.xBarWidth / 2; + xRange.max += this.xBarWidth / 2; + } + this.xMin = (this.defaultXMin !== undefined) ? this.defaultXMin : xRange.min; + this.xMax = (this.defaultXMax !== undefined) ? this.defaultXMax : xRange.max; + if (this.xMax <= this.xMin) this.xMax = this.xMin + 1; + this.xStep = (this.defaultXStep !== undefined) ? this.defaultXStep : (this.xMax-this.xMin)/5; - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + var yRange = this.getColumnRange(data,this.colY); + if (withBars) { + yRange.min -= this.yBarWidth / 2; + yRange.max += this.yBarWidth / 2; + } + this.yMin = (this.defaultYMin !== undefined) ? this.defaultYMin : yRange.min; + this.yMax = (this.defaultYMax !== undefined) ? this.defaultYMax : yRange.max; + if (this.yMax <= this.yMin) this.yMax = this.yMin + 1; + this.yStep = (this.defaultYStep !== undefined) ? this.defaultYStep : (this.yMax-this.yMin)/5; - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + var zRange = this.getColumnRange(data,this.colZ); + this.zMin = (this.defaultZMin !== undefined) ? this.defaultZMin : zRange.min; + this.zMax = (this.defaultZMax !== undefined) ? this.defaultZMax : zRange.max; + if (this.zMax <= this.zMin) this.zMax = this.zMin + 1; + this.zStep = (this.defaultZStep !== undefined) ? this.defaultZStep : (this.zMax-this.zMin)/5; - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; + if (this.colValue !== undefined) { + var valueRange = this.getColumnRange(data,this.colValue); + this.valueMin = (this.defaultValueMin !== undefined) ? this.defaultValueMin : valueRange.min; + this.valueMax = (this.defaultValueMax !== undefined) ? this.defaultValueMax : valueRange.max; + if (this.valueMax <= this.valueMin) this.valueMax = this.valueMin + 1; + } - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function (threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return relativeTimeThresholds[threshold]; - } - relativeTimeThresholds[threshold] = limit; - return true; - }; + // set the scale dependent on the ranges. + this._setScale(); + }; - moment.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - function (key, value) { - return moment.locale(key, value); - } - ); - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - moment.locale = function (key, values) { - var data; - if (key) { - if (typeof(values) !== 'undefined') { - data = moment.defineLocale(key, values); - } - else { - data = moment.localeData(key); - } - if (data) { - moment.duration._locale = moment._locale = data; - } - } + /** + * Filter the data based on the current filter + * @param {Array} data + * @return {Array} dataPoints Array with point objects which can be drawn on screen + */ + Graph3d.prototype._getDataPoints = function (data) { + // TODO: store the created matrix dataPoints in the filters instead of reloading each time + var x, y, i, z, obj, point; - return moment._locale._abbr; - }; + var dataPoints = []; - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); - } - locales[name].set(values); + if (this.style === Graph3d.STYLE.GRID || + this.style === Graph3d.STYLE.SURFACE) { + // copy all values from the google data table to a matrix + // the provided values are supposed to form a grid of (x,y) positions - // backwards compat for now: also set the locale - moment.locale(name); + // create two lists with all present x and y values + var dataX = []; + var dataY = []; + for (i = 0; i < this.getNumberOfRows(data); i++) { + x = data[i][this.colX] || 0; + y = data[i][this.colY] || 0; - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - }; + if (dataX.indexOf(x) === -1) { + dataX.push(x); + } + if (dataY.indexOf(y) === -1) { + dataY.push(y); + } + } - moment.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - function (key) { - return moment.localeData(key); - } - ); + var sortNumber = function (a, b) { + return a - b; + }; + dataX.sort(sortNumber); + dataY.sort(sortNumber); - // returns locale data - moment.localeData = function (key) { - var locale; + // create a grid, a 2d matrix, with all values. + var dataMatrix = []; // temporary data matrix + for (i = 0; i < data.length; i++) { + x = data[i][this.colX] || 0; + y = data[i][this.colY] || 0; + z = data[i][this.colZ] || 0; - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } + var xIndex = dataX.indexOf(x); // TODO: implement Array().indexOf() for Internet Explorer + var yIndex = dataY.indexOf(y); - if (!key) { - return moment._locale; - } + if (dataMatrix[xIndex] === undefined) { + dataMatrix[xIndex] = []; + } - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } + var point3d = new Point3d(); + point3d.x = x; + point3d.y = y; + point3d.z = z; - return chooseLocale(key); - }; + obj = {}; + obj.point = point3d; + obj.trans = undefined; + obj.screen = undefined; + obj.bottom = new Point3d(x, y, this.zMin); - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && hasOwnProp(obj, '_isAMomentObject')); - }; + dataMatrix[xIndex][yIndex] = obj; - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; + dataPoints.push(obj); + } - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); + // fill in the pointers to the neighbors. + for (x = 0; x < dataMatrix.length; x++) { + for (y = 0; y < dataMatrix[x].length; y++) { + if (dataMatrix[x][y]) { + dataMatrix[x][y].pointRight = (x < dataMatrix.length-1) ? dataMatrix[x+1][y] : undefined; + dataMatrix[x][y].pointTop = (y < dataMatrix[x].length-1) ? dataMatrix[x][y+1] : undefined; + dataMatrix[x][y].pointCross = + (x < dataMatrix.length-1 && y < dataMatrix[x].length-1) ? + dataMatrix[x+1][y+1] : + undefined; + } + } } + } + else { // 'dot', 'dot-line', etc. + // copy all values from the google data table to a list with Point3d objects + for (i = 0; i < data.length; i++) { + point = new Point3d(); + point.x = data[i][this.colX] || 0; + point.y = data[i][this.colY] || 0; + point.z = data[i][this.colZ] || 0; - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; + if (this.colValue !== undefined) { + point.value = data[i][this.colValue] || 0; + } - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; - } + obj = {}; + obj.point = point; + obj.bottom = new Point3d(point.x, point.y, this.zMin); + obj.trans = undefined; + obj.screen = undefined; - return m; - }; + dataPoints.push(obj); + } + } - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + return dataPoints; + }; - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; + /** + * Create the main frame for the Graph3d. + * This function is executed once when a Graph3d object is created. The frame + * contains a canvas, and this canvas contains all objects like the axis and + * nodes. + */ + Graph3d.prototype.create = function () { + // remove all elements from the container element. + while (this.containerElement.hasChildNodes()) { + this.containerElement.removeChild(this.containerElement.firstChild); + } - moment.isDate = isDate; + this.frame = document.createElement('div'); + this.frame.style.position = 'relative'; + this.frame.style.overflow = 'hidden'; - /************************************ - Moment Prototype - ************************************/ + // create the graph canvas (HTML canvas element) + this.frame.canvas = document.createElement( 'canvas' ); + this.frame.canvas.style.position = 'relative'; + this.frame.appendChild(this.frame.canvas); + //if (!this.frame.canvas.getContext) { + { + var noCanvas = document.createElement( 'DIV' ); + noCanvas.style.color = 'red'; + noCanvas.style.fontWeight = 'bold' ; + noCanvas.style.padding = '10px'; + noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; + this.frame.canvas.appendChild(noCanvas); + } + this.frame.filter = document.createElement( 'div' ); + this.frame.filter.style.position = 'absolute'; + this.frame.filter.style.bottom = '0px'; + this.frame.filter.style.left = '0px'; + this.frame.filter.style.width = '100%'; + this.frame.appendChild(this.frame.filter); - extend(moment.fn = Moment.prototype, { + // add event listeners to handle moving and zooming the contents + var me = this; + var onmousedown = function (event) {me._onMouseDown(event);}; + var ontouchstart = function (event) {me._onTouchStart(event);}; + var onmousewheel = function (event) {me._onWheel(event);}; + var ontooltip = function (event) {me._onTooltip(event);}; + // TODO: these events are never cleaned up... can give a 'memory leakage' - clone : function () { - return moment(this); - }, + util.addEventListener(this.frame.canvas, 'keydown', onkeydown); + util.addEventListener(this.frame.canvas, 'mousedown', onmousedown); + util.addEventListener(this.frame.canvas, 'touchstart', ontouchstart); + util.addEventListener(this.frame.canvas, 'mousewheel', onmousewheel); + util.addEventListener(this.frame.canvas, 'mousemove', ontooltip); - valueOf : function () { - return +this._d - ((this._offset || 0) * 60000); - }, + // add the new graph to the container element + this.containerElement.appendChild(this.frame); + }; - unix : function () { - return Math.floor(+this / 1000); - }, - toString : function () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - }, + /** + * Set a new size for the graph + * @param {string} width Width in pixels or percentage (for example '800px' + * or '50%') + * @param {string} height Height in pixels or percentage (for example '400px' + * or '30%') + */ + Graph3d.prototype.setSize = function(width, height) { + this.frame.style.width = width; + this.frame.style.height = height; - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, + this._resizeCanvas(); + }; - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - }, + /** + * Resize the canvas to the current size of the frame + */ + Graph3d.prototype._resizeCanvas = function() { + this.frame.canvas.style.width = '100%'; + this.frame.canvas.style.height = '100%'; - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, + this.frame.canvas.width = this.frame.canvas.clientWidth; + this.frame.canvas.height = this.frame.canvas.clientHeight; - isValid : function () { - return isValid(this); - }, + // adjust with for margin + this.frame.filter.style.width = (this.frame.canvas.clientWidth - 2 * 10) + 'px'; + }; - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } + /** + * Start animation + */ + Graph3d.prototype.animationStart = function() { + if (!this.frame.filter || !this.frame.filter.slider) + throw 'No animation available'; - return false; - }, + this.frame.filter.slider.play(); + }; - parsingFlags : function () { - return extend({}, this._pf); - }, - invalidAt: function () { - return this._pf.overflow; - }, + /** + * Stop animation + */ + Graph3d.prototype.animationStop = function() { + if (!this.frame.filter || !this.frame.filter.slider) return; - utc : function (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - }, + this.frame.filter.slider.stop(); + }; - local : function (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; - if (keepLocalTime) { - this.subtract(this._dateUtcOffset(), 'm'); - } - } - return this; - }, - - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, + /** + * Resize the center position based on the current values in this.defaultXCenter + * and this.defaultYCenter (which are strings with a percentage or a value + * in pixels). The center positions are the variables this.xCenter + * and this.yCenter + */ + Graph3d.prototype._resizeCenter = function() { + // calculate the horizontal center position + if (this.defaultXCenter.charAt(this.defaultXCenter.length-1) === '%') { + this.xcenter = + parseFloat(this.defaultXCenter) / 100 * + this.frame.canvas.clientWidth; + } + else { + this.xcenter = parseFloat(this.defaultXCenter); // supposed to be in px + } - add : createAdder(1, 'add'), + // calculate the vertical center position + if (this.defaultYCenter.charAt(this.defaultYCenter.length-1) === '%') { + this.ycenter = + parseFloat(this.defaultYCenter) / 100 * + (this.frame.canvas.clientHeight - this.frame.filter.clientHeight); + } + else { + this.ycenter = parseFloat(this.defaultYCenter); // supposed to be in px + } + }; - subtract : createAdder(-1, 'subtract'), + /** + * Set the rotation and distance of the camera + * @param {Object} pos An object with the camera position. The object + * contains three parameters: + * - horizontal {Number} + * The horizontal rotation, between 0 and 2*PI. + * Optional, can be left undefined. + * - vertical {Number} + * The vertical rotation, between 0 and 0.5*PI + * if vertical=0.5*PI, the graph is shown from the + * top. Optional, can be left undefined. + * - distance {Number} + * The (normalized) distance of the camera to the + * center of the graph, a value between 0.71 and 5.0. + * Optional, can be left undefined. + */ + Graph3d.prototype.setCameraPosition = function(pos) { + if (pos === undefined) { + return; + } - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, - anchor, diff, output, daysAdjust; + if (pos.horizontal !== undefined && pos.vertical !== undefined) { + this.camera.setArmRotation(pos.horizontal, pos.vertical); + } - units = normalizeUnits(units); + if (pos.distance !== undefined) { + this.camera.setArmLength(pos.distance); + } - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - diff = this - that; - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, + this.redraw(); + }; - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, + /** + * Retrieve the current camera rotation + * @return {object} An object with parameters horizontal, vertical, and + * distance + */ + Graph3d.prototype.getCameraPosition = function() { + var pos = this.camera.getArmRotation(); + pos.distance = this.camera.getArmLength(); + return pos; + }; - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're locat/utc/offset - // or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this, moment(now))); - }, + /** + * Load data into the 3D Graph + */ + Graph3d.prototype._readData = function(data) { + // read the data + this._dataInitialize(data, this.style); - isLeapYear : function () { - return isLeapYear(this.year()); - }, - isDST : function () { - return (this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset()); - }, + if (this.dataFilter) { + // apply filtering + this.dataPoints = this.dataFilter._getDataPoints(); + } + else { + // no filtering. load all data + this.dataPoints = this._getDataPoints(this.dataTable); + } - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - }, + // draw the filter + this._redrawFilter(); + }; - month : makeAccessor('Month', true), + /** + * Replace the dataset of the Graph3d + * @param {Array | DataSet | DataView} data + */ + Graph3d.prototype.setData = function (data) { + this._readData(data); + this.redraw(); - startOf : function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ - } + // start animation when option is true + if (this.animationAutoStart && this.dataFilter) { + this.animationStart(); + } + }; - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } + /** + * Update the options. Options will be merged with current options + * @param {Object} options + */ + Graph3d.prototype.setOptions = function (options) { + var cameraPosition = undefined; - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } + this.animationStop(); - return this; - }, + if (options !== undefined) { + // retrieve parameter values + if (options.width !== undefined) this.width = options.width; + if (options.height !== undefined) this.height = options.height; - endOf: function (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, + if (options.xCenter !== undefined) this.defaultXCenter = options.xCenter; + if (options.yCenter !== undefined) this.defaultYCenter = options.yCenter; - isAfter: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this > +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return inputMs < +this.clone().startOf(units); - } - }, + if (options.filterLabel !== undefined) this.filterLabel = options.filterLabel; + if (options.legendLabel !== undefined) this.legendLabel = options.legendLabel; + if (options.xLabel !== undefined) this.xLabel = options.xLabel; + if (options.yLabel !== undefined) this.yLabel = options.yLabel; + if (options.zLabel !== undefined) this.zLabel = options.zLabel; - isBefore: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this < +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return +this.clone().endOf(units) < inputMs; - } - }, + if (options.xValueLabel !== undefined) this.xValueLabel = options.xValueLabel; + if (options.yValueLabel !== undefined) this.yValueLabel = options.yValueLabel; + if (options.zValueLabel !== undefined) this.zValueLabel = options.zValueLabel; - isBetween: function (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); - }, + if (options.style !== undefined) { + var styleNumber = this._getStyleNumber(options.style); + if (styleNumber !== -1) { + this.style = styleNumber; + } + } + if (options.showGrid !== undefined) this.showGrid = options.showGrid; + if (options.showPerspective !== undefined) this.showPerspective = options.showPerspective; + if (options.showShadow !== undefined) this.showShadow = options.showShadow; + if (options.tooltip !== undefined) this.showTooltip = options.tooltip; + if (options.showAnimationControls !== undefined) this.showAnimationControls = options.showAnimationControls; + if (options.keepAspectRatio !== undefined) this.keepAspectRatio = options.keepAspectRatio; + if (options.verticalRatio !== undefined) this.verticalRatio = options.verticalRatio; - isSame: function (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this === +input; - } else { - inputMs = +moment(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); - } - }, + if (options.animationInterval !== undefined) this.animationInterval = options.animationInterval; + if (options.animationPreload !== undefined) this.animationPreload = options.animationPreload; + if (options.animationAutoStart !== undefined)this.animationAutoStart = options.animationAutoStart; - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), + if (options.xBarWidth !== undefined) this.defaultXBarWidth = options.xBarWidth; + if (options.yBarWidth !== undefined) this.defaultYBarWidth = options.yBarWidth; - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), + if (options.xMin !== undefined) this.defaultXMin = options.xMin; + if (options.xStep !== undefined) this.defaultXStep = options.xStep; + if (options.xMax !== undefined) this.defaultXMax = options.xMax; + if (options.yMin !== undefined) this.defaultYMin = options.yMin; + if (options.yStep !== undefined) this.defaultYStep = options.yStep; + if (options.yMax !== undefined) this.defaultYMax = options.yMax; + if (options.zMin !== undefined) this.defaultZMin = options.zMin; + if (options.zStep !== undefined) this.defaultZStep = options.zStep; + if (options.zMax !== undefined) this.defaultZMax = options.zMax; + if (options.valueMin !== undefined) this.defaultValueMin = options.valueMin; + if (options.valueMax !== undefined) this.defaultValueMax = options.valueMax; - zone : deprecate( - 'moment().zone is deprecated, use moment().utcOffset instead. ' + - 'https://github.com/moment/moment/issues/1779', - function (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } + if (options.cameraPosition !== undefined) cameraPosition = options.cameraPosition; - this.utcOffset(input, keepLocalTime); + if (cameraPosition !== undefined) { + this.camera.setArmRotation(cameraPosition.horizontal, cameraPosition.vertical); + this.camera.setArmLength(cameraPosition.distance); + } + else { + this.camera.setArmRotation(1.0, 0.5); + this.camera.setArmLength(1.7); + } + } - return this; - } else { - return -this.utcOffset(); - } - } - ), + this._setBackgroundColor(options && options.backgroundColor); - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - utcOffset : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = utcOffsetFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._dateUtcOffset(); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } - } + this.setSize(this.width, this.height); - return this; - } else { - return this._isUTC ? offset : this._dateUtcOffset(); - } - }, + // re-load the data + if (this.dataTable) { + this.setData(this.dataTable); + } - isLocal : function () { - return !this._isUTC; - }, + // start animation when option is true + if (this.animationAutoStart && this.dataFilter) { + this.animationStart(); + } + }; - isUtcOffset : function () { - return this._isUTC; - }, + /** + * Redraw the Graph. + */ + Graph3d.prototype.redraw = function() { + if (this.dataPoints === undefined) { + throw 'Error: graph data not initialized'; + } - isUtc : function () { - return this._isUTC && this._offset === 0; - }, + this._resizeCanvas(); + this._resizeCenter(); + this._redrawSlider(); + this._redrawClear(); + this._redrawAxis(); - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, + if (this.style === Graph3d.STYLE.GRID || + this.style === Graph3d.STYLE.SURFACE) { + this._redrawDataGrid(); + } + else if (this.style === Graph3d.STYLE.LINE) { + this._redrawDataLine(); + } + else if (this.style === Graph3d.STYLE.BAR || + this.style === Graph3d.STYLE.BARCOLOR || + this.style === Graph3d.STYLE.BARSIZE) { + this._redrawDataBar(); + } + else { + // style is DOT, DOTLINE, DOTCOLOR, DOTSIZE + this._redrawDataDot(); + } - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, + this._redrawInfo(); + this._redrawLegend(); + }; - parseZone : function () { - if (this._tzm) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - this.utcOffset(utcOffsetFromString(this._i)); - } - return this; - }, + /** + * Clear the canvas before redrawing + */ + Graph3d.prototype._redrawClear = function() { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).utcOffset(); - } + ctx.clearRect(0, 0, canvas.width, canvas.height); + }; - return (this.utcOffset() - input) % 60 === 0; - }, - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + /** + * Redraw the legend showing the colors + */ + Graph3d.prototype._redrawLegend = function() { + var y; - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - }, + if (this.style === Graph3d.STYLE.DOTCOLOR || + this.style === Graph3d.STYLE.DOTSIZE) { - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + var dotSize = this.frame.clientWidth * 0.02; - weekYear : function (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - }, + var widthMin, widthMax; + if (this.style === Graph3d.STYLE.DOTSIZE) { + widthMin = dotSize / 2; // px + widthMax = dotSize / 2 + dotSize * 2; // Todo: put this in one function + } + else { + widthMin = 20; // px + widthMax = 20; // px + } - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, + var height = Math.max(this.frame.clientHeight * 0.25, 100); + var top = this.margin; + var right = this.frame.clientWidth - this.margin; + var left = right - widthMax; + var bottom = top + height; + } - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); + ctx.lineWidth = 1; + ctx.font = '14px arial'; // TODO: put in options - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, - - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, - - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, - - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, - - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, - - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, - - set : function (units, value) { - var unit; - if (typeof units === 'object') { - for (unit in units) { - this.set(unit, units[unit]); - } - } - else { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); - } - } - return this; - }, - - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - var newLocaleData; - - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = moment.localeData(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - }, - - lang : deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ), - - localeData : function () { - return this._locale; - }, - - _dateUtcOffset : function () { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(this._d.getTimezoneOffset() / 15) * 15; - } - - }); - - function rawMonthSetter(mom, value) { - var dayOfMonth; + if (this.style === Graph3d.STYLE.DOTCOLOR) { + // draw the color bar + var ymin = 0; + var ymax = height; // Todo: make height customizable + for (y = ymin; y < ymax; y++) { + var f = (y - ymin) / (ymax - ymin); - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } - } + //var width = (dotSize / 2 + (1-f) * dotSize * 2); // Todo: put this in one function + var hue = f * 240; + var color = this._hsv2rgb(hue, 1, 1); - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; + ctx.strokeStyle = color; + ctx.beginPath(); + ctx.moveTo(left, top + y); + ctx.lineTo(right, top + y); + ctx.stroke(); } - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); - } + ctx.strokeStyle = this.colorAxis; + ctx.strokeRect(left, top, widthMax, height); + } - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - } + if (this.style === Graph3d.STYLE.DOTSIZE) { + // draw border around color bar + ctx.strokeStyle = this.colorAxis; + ctx.fillStyle = this.colorDot; + ctx.beginPath(); + ctx.moveTo(left, top); + ctx.lineTo(right, top); + ctx.lineTo(right - widthMax + widthMin, bottom); + ctx.lineTo(left, bottom); + ctx.closePath(); + ctx.fill(); + ctx.stroke(); + } - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; - } else { - return rawGetter(this, unit); - } - }; + if (this.style === Graph3d.STYLE.DOTCOLOR || + this.style === Graph3d.STYLE.DOTSIZE) { + // print values along the color bar + var gridLineLen = 5; // px + var step = new StepNumber(this.valueMin, this.valueMax, (this.valueMax-this.valueMin)/5, true); + step.start(); + if (step.getCurrent() < this.valueMin) { + step.next(); } + while (!step.end()) { + y = bottom - (step.getCurrent() - this.valueMin) / (this.valueMax - this.valueMin) * height; - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); - - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; - - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; - - // alias isUtc for dev-friendliness - moment.fn.isUTC = moment.fn.isUtc; - - /************************************ - Duration Prototype - ************************************/ - + ctx.beginPath(); + ctx.moveTo(left - gridLineLen, y); + ctx.lineTo(left, y); + ctx.stroke(); - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; - } + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = this.colorAxis; + ctx.fillText(step.getCurrent(), left - 2 * gridLineLen, y); - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; + step.next(); } - extend(moment.duration.fn = Duration.prototype, { + ctx.textAlign = 'right'; + ctx.textBaseline = 'top'; + var label = this.legendLabel; + ctx.fillText(label, right, bottom + this.margin); + } + }; - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; + /** + * Redraw the filter + */ + Graph3d.prototype._redrawFilter = function() { + this.frame.filter.innerHTML = ''; - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + if (this.dataFilter) { + var options = { + 'visible': this.showAnimationControls + }; + var slider = new Slider(this.frame.filter, options); + this.frame.filter.slider = slider; - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + // TODO: css here is not nice here... + this.frame.filter.style.padding = '10px'; + //this.frame.filter.style.backgroundColor = '#EFEFEF'; - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + slider.setValues(this.dataFilter.values); + slider.setPlayInterval(this.animationInterval); - hours = absRound(minutes / 60); - data.hours = hours % 24; + // create an event handler + var me = this; + var onchange = function () { + var index = slider.getIndex(); - days += absRound(hours / 24); + me.dataFilter.selectValue(index); + me.dataPoints = me.dataFilter._getDataPoints(); - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); + me.redraw(); + }; + slider.setOnChangeCallback(onchange); + } + else { + this.frame.filter.slider = undefined; + } + }; - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + /** + * Redraw the slider + */ + Graph3d.prototype._redrawSlider = function() { + if ( this.frame.filter.slider !== undefined) { + this.frame.filter.slider.redraw(); + } + }; - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; - data.days = days; - data.months = months; - data.years = years; - }, + /** + * Redraw common information + */ + Graph3d.prototype._redrawInfo = function() { + if (this.dataFilter) { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); + ctx.font = '14px arial'; // TODO: put in options + ctx.lineStyle = 'gray'; + ctx.fillStyle = 'gray'; + ctx.textAlign = 'left'; + ctx.textBaseline = 'top'; - this._data.milliseconds = Math.abs(this._data.milliseconds); - this._data.seconds = Math.abs(this._data.seconds); - this._data.minutes = Math.abs(this._data.minutes); - this._data.hours = Math.abs(this._data.hours); - this._data.months = Math.abs(this._data.months); - this._data.years = Math.abs(this._data.years); + var x = this.margin; + var y = this.margin; + ctx.fillText(this.dataFilter.getLabel() + ': ' + this.dataFilter.getSelectedValue(), x, y); + } + }; - return this; - }, - weeks : function () { - return absRound(this.days() / 7); - }, + /** + * Redraw the axis + */ + Graph3d.prototype._redrawAxis = function() { + var canvas = this.frame.canvas, + ctx = canvas.getContext('2d'), + from, to, step, prettyStep, + text, xText, yText, zText, + offset, xOffset, yOffset, + xMin2d, xMax2d; - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + // TODO: get the actual rendered style of the containerElement + //ctx.font = this.containerElement.style.font; + ctx.font = 24 / this.camera.getArmLength() + 'px arial'; - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); + // calculate the length for the short grid lines + var gridLenX = 0.025 / this.scale.x; + var gridLenY = 0.025 / this.scale.y; + var textMargin = 5 / this.camera.getArmLength(); // px + var armAngle = this.camera.getArmRotation().horizontal; - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); - } + // draw x-grid lines + ctx.lineWidth = 1; + prettyStep = (this.defaultXStep === undefined); + step = new StepNumber(this.xMin, this.xMax, this.xStep, prettyStep); + step.start(); + if (step.getCurrent() < this.xMin) { + step.next(); + } + while (!step.end()) { + var x = step.getCurrent(); - return this.localeData().postformat(output); - }, + if (this.showGrid) { + from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorGrid; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + } + else { + from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(x, this.yMin+gridLenX, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); + from = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); + to = this._convert3Dto2D(new Point3d(x, this.yMax-gridLenX, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + } - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; + yText = (Math.cos(armAngle) > 0) ? this.yMin : this.yMax; + text = this._convert3Dto2D(new Point3d(x, yText, this.zMin)); + if (Math.cos(armAngle * 2) > 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + text.y += textMargin; + } + else if (Math.sin(armAngle * 2) < 0){ + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + } + else { + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + } + ctx.fillStyle = this.colorAxis; + ctx.fillText(' ' + this.xValueLabel(step.getCurrent()) + ' ', text.x, text.y); - this._bubble(); + step.next(); + } - return this; - }, + // draw y-grid lines + ctx.lineWidth = 1; + prettyStep = (this.defaultYStep === undefined); + step = new StepNumber(this.yMin, this.yMax, this.yStep, prettyStep); + step.start(); + if (step.getCurrent() < this.yMin) { + step.next(); + } + while (!step.end()) { + if (this.showGrid) { + from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); + ctx.strokeStyle = this.colorGrid; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + } + else { + from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMin+gridLenY, step.getCurrent(), this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - subtract : function (input, val) { - var dur = moment.duration(input, val); + from = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMax-gridLenY, step.getCurrent(), this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + } - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + xText = (Math.sin(armAngle ) > 0) ? this.xMin : this.xMax; + text = this._convert3Dto2D(new Point3d(xText, step.getCurrent(), this.zMin)); + if (Math.cos(armAngle * 2) < 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + text.y += textMargin; + } + else if (Math.sin(armAngle * 2) > 0){ + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + } + else { + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + } + ctx.fillStyle = this.colorAxis; + ctx.fillText(' ' + this.yValueLabel(step.getCurrent()) + ' ', text.x, text.y); - this._bubble(); + step.next(); + } - return this; - }, + // draw z-grid lines and axis + ctx.lineWidth = 1; + prettyStep = (this.defaultZStep === undefined); + step = new StepNumber(this.zMin, this.zMax, this.zStep, prettyStep); + step.start(); + if (step.getCurrent() < this.zMin) { + step.next(); + } + xText = (Math.cos(armAngle ) > 0) ? this.xMin : this.xMax; + yText = (Math.sin(armAngle ) < 0) ? this.yMin : this.yMax; + while (!step.end()) { + // TODO: make z-grid lines really 3d? + from = this._convert3Dto2D(new Point3d(xText, yText, step.getCurrent())); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(from.x - textMargin, from.y); + ctx.stroke(); - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = this.colorAxis; + ctx.fillText(this.zValueLabel(step.getCurrent()) + ' ', from.x - 5, from.y); - as : function (units) { - var days, months; - units = normalizeUnits(units); + step.next(); + } + ctx.lineWidth = 1; + from = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); + to = this._convert3Dto2D(new Point3d(xText, yText, this.zMax)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - if (units === 'month' || units === 'year') { - days = this._days + this._milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(yearsToDays(this._months / 12)); - switch (units) { - case 'week': return days / 7 + this._milliseconds / 6048e5; - case 'day': return days + this._milliseconds / 864e5; - case 'hour': return days * 24 + this._milliseconds / 36e5; - case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; - case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } - }, - - lang : moment.fn.lang, - locale : moment.fn.locale, - - toIsoString : deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead ' + - '(notice the capitals)', - function () { - return this.toISOString(); - } - ), - - toISOString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); - - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } - - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); - }, - - localeData : function () { - return this._locale; - }, - - toJSON : function () { - return this.toISOString(); - } - }); + // draw x-axis + ctx.lineWidth = 1; + // line at yMin + xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); + xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(xMin2d.x, xMin2d.y); + ctx.lineTo(xMax2d.x, xMax2d.y); + ctx.stroke(); + // line at ymax + xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); + xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(xMin2d.x, xMin2d.y); + ctx.lineTo(xMax2d.x, xMax2d.y); + ctx.stroke(); - moment.duration.fn.toString = moment.duration.fn.toISOString; + // draw y-axis + ctx.lineWidth = 1; + // line at xMin + from = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + // line at xMax + from = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; + // draw x-label + var xLabel = this.xLabel; + if (xLabel.length > 0) { + yOffset = 0.1 / this.scale.y; + xText = (this.xMin + this.xMax) / 2; + yText = (Math.cos(armAngle) > 0) ? this.yMin - yOffset: this.yMax + yOffset; + text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); + if (Math.cos(armAngle * 2) > 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + } + else if (Math.sin(armAngle * 2) < 0){ + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + } + else { + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; } + ctx.fillStyle = this.colorAxis; + ctx.fillText(xLabel, text.x, text.y); + } - for (i in unitMillisecondFactors) { - if (hasOwnProp(unitMillisecondFactors, i)) { - makeDurationGetter(i.toLowerCase()); - } + // draw y-label + var yLabel = this.yLabel; + if (yLabel.length > 0) { + xOffset = 0.1 / this.scale.x; + xText = (Math.sin(armAngle ) > 0) ? this.xMin - xOffset : this.xMax + xOffset; + yText = (this.yMin + this.yMax) / 2; + text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); + if (Math.cos(armAngle * 2) < 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + } + else if (Math.sin(armAngle * 2) > 0){ + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + } + else { + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; } + ctx.fillStyle = this.colorAxis; + ctx.fillText(yLabel, text.x, text.y); + } - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); - }; + // draw z-label + var zLabel = this.zLabel; + if (zLabel.length > 0) { + offset = 30; // pixels. // TODO: relate to the max width of the values on the z axis? + xText = (Math.cos(armAngle ) > 0) ? this.xMin : this.xMax; + yText = (Math.sin(armAngle ) < 0) ? this.yMin : this.yMax; + zText = (this.zMin + this.zMax) / 2; + text = this._convert3Dto2D(new Point3d(xText, yText, zText)); + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = this.colorAxis; + ctx.fillText(zLabel, text.x - offset, text.y); + } + }; - /************************************ - Default Locale - ************************************/ + /** + * Calculate the color based on the given value. + * @param {Number} H Hue, a value be between 0 and 360 + * @param {Number} S Saturation, a value between 0 and 1 + * @param {Number} V Value, a value between 0 and 1 + */ + Graph3d.prototype._hsv2rgb = function(H, S, V) { + var R, G, B, C, Hi, X; + C = V * S; + Hi = Math.floor(H/60); // hi = 0,1,2,3,4,5 + X = C * (1 - Math.abs(((H/60) % 2) - 1)); - // Set default locale, other locale will inherit from English. - moment.locale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); + switch (Hi) { + case 0: R = C; G = X; B = 0; break; + case 1: R = X; G = C; B = 0; break; + case 2: R = 0; G = C; B = X; break; + case 3: R = 0; G = X; B = C; break; + case 4: R = X; G = 0; B = C; break; + case 5: R = C; G = 0; B = X; break; - /* EMBED_LOCALES */ + default: R = 0; G = 0; B = 0; break; + } - /************************************ - Exposing Moment - ************************************/ + return 'RGB(' + parseInt(R*255) + ',' + parseInt(G*255) + ',' + parseInt(B*255) + ')'; + }; - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - 'Accessing Moment through the global scope is ' + - 'deprecated, and will be removed in an upcoming ' + - 'release.', - moment); - } else { - globalScope.moment = moment; - } - } - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; - } + /** + * Draw all datapoints as a grid + * This function can be used when the style is 'grid' + */ + Graph3d.prototype._redrawDataGrid = function() { + var canvas = this.frame.canvas, + ctx = canvas.getContext('2d'), + point, right, top, cross, + i, + topSideVisible, fillStyle, strokeStyle, lineWidth, + h, s, v, zAvg; - return moment; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - makeGlobal(true); - } else { - makeGlobal(); - } - }).call(this); - - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(5)(module))) -/***/ }, -/* 4 */ -/***/ function(module, exports, __webpack_require__) { + if (this.dataPoints === undefined || this.dataPoints.length <= 0) + return; // TODO: throw exception? - function webpackContext(req) { - throw new Error("Cannot find module '" + req + "'."); - } - webpackContext.keys = function() { return []; }; - webpackContext.resolve = webpackContext; - module.exports = webpackContext; - webpackContext.id = 4; + // calculate the translations and screen position of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; -/***/ }, -/* 5 */ -/***/ function(module, exports, __webpack_require__) { + // calculate the translation of the point at the bottom (needed for sorting) + var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); + this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; + } - module.exports = function(module) { - if(!module.webpackPolyfill) { - module.deprecate = function() {}; - module.paths = []; - // module.parent = undefined by default - module.children = []; - module.webpackPolyfill = 1; - } - return module; - } + // sort the points on depth of their (x,y) position (not on z) + var sortDepth = function (a, b) { + return b.dist - a.dist; + }; + this.dataPoints.sort(sortDepth); + if (this.style === Graph3d.STYLE.SURFACE) { + for (i = 0; i < this.dataPoints.length; i++) { + point = this.dataPoints[i]; + right = this.dataPoints[i].pointRight; + top = this.dataPoints[i].pointTop; + cross = this.dataPoints[i].pointCross; -/***/ }, -/* 6 */ -/***/ function(module, exports, __webpack_require__) { + if (point !== undefined && right !== undefined && top !== undefined && cross !== undefined) { - // DOM utility methods + if (this.showGrayBottom || this.showShadow) { + // calculate the cross product of the two vectors from center + // to left and right, in order to know whether we are looking at the + // bottom or at the top side. We can also use the cross product + // for calculating light intensity + var aDiff = Point3d.subtract(cross.trans, point.trans); + var bDiff = Point3d.subtract(top.trans, right.trans); + var crossproduct = Point3d.crossProduct(aDiff, bDiff); + var len = crossproduct.length(); + // FIXME: there is a bug with determining the surface side (shadow or colored) - /** - * this prepares the JSON container for allocating SVG elements - * @param JSONcontainer - * @private - */ - exports.prepareElements = function(JSONcontainer) { - // cleanup the redundant svgElements; - for (var elementType in JSONcontainer) { - if (JSONcontainer.hasOwnProperty(elementType)) { - JSONcontainer[elementType].redundant = JSONcontainer[elementType].used; - JSONcontainer[elementType].used = []; - } - } - }; + topSideVisible = (crossproduct.z > 0); + } + else { + topSideVisible = true; + } - /** - * this cleans up all the unused SVG elements. By asking for the parentNode, we only need to supply the JSON container from - * which to remove the redundant elements. - * - * @param JSONcontainer - * @private - */ - exports.cleanupElements = function(JSONcontainer) { - // cleanup the redundant svgElements; - for (var elementType in JSONcontainer) { - if (JSONcontainer.hasOwnProperty(elementType)) { - if (JSONcontainer[elementType].redundant) { - for (var i = 0; i < JSONcontainer[elementType].redundant.length; i++) { - JSONcontainer[elementType].redundant[i].parentNode.removeChild(JSONcontainer[elementType].redundant[i]); + if (topSideVisible) { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + zAvg = (point.point.z + right.point.z + top.point.z + cross.point.z) / 4; + h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; + s = 1; // saturation + + if (this.showShadow) { + v = Math.min(1 + (crossproduct.x / len) / 2, 1); // value. TODO: scale + fillStyle = this._hsv2rgb(h, s, v); + strokeStyle = fillStyle; + } + else { + v = 1; + fillStyle = this._hsv2rgb(h, s, v); + strokeStyle = this.colorAxis; + } } - JSONcontainer[elementType].redundant = []; + else { + fillStyle = 'gray'; + strokeStyle = this.colorAxis; + } + lineWidth = 0.5; + + ctx.lineWidth = lineWidth; + ctx.fillStyle = fillStyle; + ctx.strokeStyle = strokeStyle; + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); + ctx.lineTo(right.screen.x, right.screen.y); + ctx.lineTo(cross.screen.x, cross.screen.y); + ctx.lineTo(top.screen.x, top.screen.y); + ctx.closePath(); + ctx.fill(); + ctx.stroke(); } } } - }; + else { // grid style + for (i = 0; i < this.dataPoints.length; i++) { + point = this.dataPoints[i]; + right = this.dataPoints[i].pointRight; + top = this.dataPoints[i].pointTop; - /** - * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer - * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. - * - * @param elementType - * @param JSONcontainer - * @param svgContainer - * @returns {*} - * @private - */ - exports.getSVGElement = function (elementType, JSONcontainer, svgContainer) { - var element; - // allocate SVG element, if it doesnt yet exist, create one. - if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before - // check if there is an redundant element - if (JSONcontainer[elementType].redundant.length > 0) { - element = JSONcontainer[elementType].redundant[0]; - JSONcontainer[elementType].redundant.shift(); - } - else { - // create a new element and add it to the SVG - element = document.createElementNS('http://www.w3.org/2000/svg', elementType); - svgContainer.appendChild(element); - } - } - else { - // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. - element = document.createElementNS('http://www.w3.org/2000/svg', elementType); - JSONcontainer[elementType] = {used: [], redundant: []}; - svgContainer.appendChild(element); - } - JSONcontainer[elementType].used.push(element); - return element; - }; + if (point !== undefined) { + if (this.showPerspective) { + lineWidth = 2 / -point.trans.z; + } + else { + lineWidth = 2 * -(this.eye.z / this.camera.getArmLength()); + } + } + if (point !== undefined && right !== undefined) { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + zAvg = (point.point.z + right.point.z) / 2; + h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; - /** - * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer - * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. - * - * @param elementType - * @param JSONcontainer - * @param DOMContainer - * @returns {*} - * @private - */ - exports.getDOMElement = function (elementType, JSONcontainer, DOMContainer, insertBefore) { - var element; - // allocate DOM element, if it doesnt yet exist, create one. - if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before - // check if there is an redundant element - if (JSONcontainer[elementType].redundant.length > 0) { - element = JSONcontainer[elementType].redundant[0]; - JSONcontainer[elementType].redundant.shift(); - } - else { - // create a new element and add it to the SVG - element = document.createElement(elementType); - if (insertBefore !== undefined) { - DOMContainer.insertBefore(element, insertBefore); + ctx.lineWidth = lineWidth; + ctx.strokeStyle = this._hsv2rgb(h, 1, 1); + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); + ctx.lineTo(right.screen.x, right.screen.y); + ctx.stroke(); } - else { - DOMContainer.appendChild(element); + + if (point !== undefined && top !== undefined) { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + zAvg = (point.point.z + top.point.z) / 2; + h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; + + ctx.lineWidth = lineWidth; + ctx.strokeStyle = this._hsv2rgb(h, 1, 1); + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); + ctx.lineTo(top.screen.x, top.screen.y); + ctx.stroke(); } } } - else { - // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. - element = document.createElement(elementType); - JSONcontainer[elementType] = {used: [], redundant: []}; - if (insertBefore !== undefined) { - DOMContainer.insertBefore(element, insertBefore); - } - else { - DOMContainer.appendChild(element); - } - } - JSONcontainer[elementType].used.push(element); - return element; }; - - /** - * draw a point object. this is a seperate function because it can also be called by the legend. - * The reason the JSONcontainer and the target SVG svgContainer have to be supplied is so the legend can use these functions - * as well. - * - * @param x - * @param y - * @param group - * @param JSONcontainer - * @param svgContainer - * @param labelObj - * @returns {*} + * Draw all datapoints as dots. + * This function can be used when the style is 'dot' or 'dot-line' */ - exports.drawPoint = function(x, y, group, JSONcontainer, svgContainer, labelObj) { - var point; - if (group.options.drawPoints.style == 'circle') { - point = exports.getSVGElement('circle',JSONcontainer,svgContainer); - point.setAttributeNS(null, "cx", x); - point.setAttributeNS(null, "cy", y); - point.setAttributeNS(null, "r", 0.5 * group.options.drawPoints.size); - } - else { - point = exports.getSVGElement('rect',JSONcontainer,svgContainer); - point.setAttributeNS(null, "x", x - 0.5*group.options.drawPoints.size); - point.setAttributeNS(null, "y", y - 0.5*group.options.drawPoints.size); - point.setAttributeNS(null, "width", group.options.drawPoints.size); - point.setAttributeNS(null, "height", group.options.drawPoints.size); - } + Graph3d.prototype._redrawDataDot = function() { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); + var i; - if(group.options.drawPoints.styles !== undefined) { - point.setAttributeNS(null, "style", group.group.options.drawPoints.styles); + if (this.dataPoints === undefined || this.dataPoints.length <= 0) + return; // TODO: throw exception? + + // calculate the translations of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; + + // calculate the distance from the point at the bottom to the camera + var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); + this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; } - point.setAttributeNS(null, "class", group.className + " point"); - //handle label - var label = exports.getSVGElement('text',JSONcontainer,svgContainer); - if (labelObj){ - if (labelObj.xOffset) { - x = x + labelObj.xOffset; - } - if (labelObj.yOffset) { - y = y + labelObj.yOffset; - } - if (labelObj.content) { - label.textContent = labelObj.content; - } + // order the translated points by depth + var sortDepth = function (a, b) { + return b.dist - a.dist; + }; + this.dataPoints.sort(sortDepth); - if (labelObj.className) { - label.setAttributeNS(null, "class", labelObj.className + " label"); - } + // draw the datapoints as colored circles + var dotSize = this.frame.clientWidth * 0.02; // px + for (i = 0; i < this.dataPoints.length; i++) { + var point = this.dataPoints[i]; + + if (this.style === Graph3d.STYLE.DOTLINE) { + // draw a vertical line from the bottom to the graph value + //var from = this._convert3Dto2D(new Point3d(point.point.x, point.point.y, this.zMin)); + var from = this._convert3Dto2D(point.bottom); + ctx.lineWidth = 1; + ctx.strokeStyle = this.colorGrid; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(point.screen.x, point.screen.y); + ctx.stroke(); + } + + // calculate radius for the circle + var size; + if (this.style === Graph3d.STYLE.DOTSIZE) { + size = dotSize/2 + 2*dotSize * (point.point.value - this.valueMin) / (this.valueMax - this.valueMin); + } + else { + size = dotSize; + } + + var radius; + if (this.showPerspective) { + radius = size / -point.trans.z; + } + else { + radius = size * -(this.eye.z / this.camera.getArmLength()); + } + if (radius < 0) { + radius = 0; + } + var hue, color, borderColor; + if (this.style === Graph3d.STYLE.DOTCOLOR ) { + // calculate the color based on the value + hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; + color = this._hsv2rgb(hue, 1, 1); + borderColor = this._hsv2rgb(hue, 1, 0.8); + } + else if (this.style === Graph3d.STYLE.DOTSIZE) { + color = this.colorDot; + borderColor = this.colorDotBorder; + } + else { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; + color = this._hsv2rgb(hue, 1, 1); + borderColor = this._hsv2rgb(hue, 1, 0.8); + } + // draw the circle + ctx.lineWidth = 1.0; + ctx.strokeStyle = borderColor; + ctx.fillStyle = color; + ctx.beginPath(); + ctx.arc(point.screen.x, point.screen.y, radius, 0, Math.PI*2, true); + ctx.fill(); + ctx.stroke(); } - label.setAttributeNS(null, "x", x); - label.setAttributeNS(null, "y", y); - return point; }; /** - * draw a bar SVG element centered on the X coordinate - * - * @param x - * @param y - * @param className + * Draw all datapoints as bars. + * This function can be used when the style is 'bar', 'bar-color', or 'bar-size' */ - exports.drawBar = function (x, y, width, height, className, JSONcontainer, svgContainer) { - if (height != 0) { - if (height < 0) { - height *= -1; - y -= height; - } - var rect = exports.getSVGElement('rect',JSONcontainer, svgContainer); - rect.setAttributeNS(null, "x", x - 0.5 * width); - rect.setAttributeNS(null, "y", y); - rect.setAttributeNS(null, "width", width); - rect.setAttributeNS(null, "height", height); - rect.setAttributeNS(null, "class", className); - } - }; + Graph3d.prototype._redrawDataBar = function() { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); + var i, j, surface, corners; -/***/ }, -/* 7 */ -/***/ function(module, exports, __webpack_require__) { + if (this.dataPoints === undefined || this.dataPoints.length <= 0) + return; // TODO: throw exception? - var util = __webpack_require__(1); - var Queue = __webpack_require__(8); + // calculate the translations of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; - /** - * DataSet - * - * Usage: - * var dataSet = new DataSet({ - * fieldId: '_id', - * type: { - * // ... - * } - * }); - * - * dataSet.add(item); - * dataSet.add(data); - * dataSet.update(item); - * dataSet.update(data); - * dataSet.remove(id); - * dataSet.remove(ids); - * var data = dataSet.get(); - * var data = dataSet.get(id); - * var data = dataSet.get(ids); - * var data = dataSet.get(ids, options, data); - * dataSet.clear(); - * - * A data set can: - * - add/remove/update data - * - gives triggers upon changes in the data - * - can import/export data in various data formats - * - * @param {Array | DataTable} [data] Optional array with initial data - * @param {Object} [options] Available options: - * {String} fieldId Field name of the id in the - * items, 'id' by default. - * {Object. 0) { + point = this.dataPoints[0]; - /** - * Trigger an event - * @param {String} event - * @param {Object | null} params - * @param {String} [senderId] Optional id of the sender. - * @private - */ - DataSet.prototype._trigger = function (event, params, senderId) { - if (event == '*') { - throw new Error('Cannot trigger event *'); + ctx.lineWidth = 1; // TODO: make customizable + ctx.strokeStyle = 'blue'; // TODO: make customizable + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); } - var subscribers = []; - if (event in this._subscribers) { - subscribers = subscribers.concat(this._subscribers[event]); - } - if ('*' in this._subscribers) { - subscribers = subscribers.concat(this._subscribers['*']); + // draw the datapoints as colored circles + for (i = 1; i < this.dataPoints.length; i++) { + point = this.dataPoints[i]; + ctx.lineTo(point.screen.x, point.screen.y); } - for (var i = 0; i < subscribers.length; i++) { - var subscriber = subscribers[i]; - if (subscriber.callback) { - subscriber.callback(event, params, senderId || null); - } + // finish the line + if (this.dataPoints.length > 0) { + ctx.stroke(); } }; /** - * Add data. - * Adding an item will fail when there already is an item with the same id. - * @param {Object | Array | DataTable} data - * @param {String} [senderId] Optional sender id - * @return {Array} addedIds Array with the ids of the added items + * Start a moving operation inside the provided parent element + * @param {Event} event The event that occurred (required for + * retrieving the mouse position) */ - DataSet.prototype.add = function (data, senderId) { - var addedIds = [], - id, - me = this; - - if (Array.isArray(data)) { - // Array - for (var i = 0, len = data.length; i < len; i++) { - id = me._addItem(data[i]); - addedIds.push(id); - } - } - else if (util.isDataTable(data)) { - // Google DataTable - var columns = this._getColumnNames(data); - for (var row = 0, rows = data.getNumberOfRows(); row < rows; row++) { - var item = {}; - for (var col = 0, cols = columns.length; col < cols; col++) { - var field = columns[col]; - item[field] = data.getValue(row, col); - } + Graph3d.prototype._onMouseDown = function(event) { + event = event || window.event; - id = me._addItem(item); - addedIds.push(id); - } - } - else if (data instanceof Object) { - // Single item - id = me._addItem(data); - addedIds.push(id); - } - else { - throw new Error('Unknown dataType'); + // check if mouse is still down (may be up when focus is lost for example + // in an iframe) + if (this.leftButtonDown) { + this._onMouseUp(event); } - if (addedIds.length) { - this._trigger('add', {items: addedIds}, senderId); - } + // only react on left mouse button down + this.leftButtonDown = event.which ? (event.which === 1) : (event.button === 1); + if (!this.leftButtonDown && !this.touchDown) return; - return addedIds; + // get mouse position (different code for IE and all other browsers) + this.startMouseX = getMouseX(event); + this.startMouseY = getMouseY(event); + + this.startStart = new Date(this.start); + this.startEnd = new Date(this.end); + this.startArmRotation = this.camera.getArmRotation(); + + this.frame.style.cursor = 'move'; + + // add event listeners to handle moving the contents + // we store the function onmousemove and onmouseup in the graph, so we can + // remove the eventlisteners lateron in the function mouseUp() + var me = this; + this.onmousemove = function (event) {me._onMouseMove(event);}; + this.onmouseup = function (event) {me._onMouseUp(event);}; + util.addEventListener(document, 'mousemove', me.onmousemove); + util.addEventListener(document, 'mouseup', me.onmouseup); + util.preventDefault(event); }; + /** - * Update existing items. When an item does not exist, it will be created - * @param {Object | Array | DataTable} data - * @param {String} [senderId] Optional sender id - * @return {Array} updatedIds The ids of the added or updated items + * Perform moving operating. + * This function activated from within the funcion Graph.mouseDown(). + * @param {Event} event Well, eehh, the event */ - DataSet.prototype.update = function (data, senderId) { - var addedIds = []; - var updatedIds = []; - var updatedData = []; - var me = this; - var fieldId = me._fieldId; + Graph3d.prototype._onMouseMove = function (event) { + event = event || window.event; - var addOrUpdate = function (item) { - var id = item[fieldId]; - if (me._data[id]) { - // update item - id = me._updateItem(item); - updatedIds.push(id); - updatedData.push(item); - } - else { - // add new item - id = me._addItem(item); - addedIds.push(id); - } - }; + // calculate change in mouse position + var diffX = parseFloat(getMouseX(event)) - this.startMouseX; + var diffY = parseFloat(getMouseY(event)) - this.startMouseY; - if (Array.isArray(data)) { - // Array - for (var i = 0, len = data.length; i < len; i++) { - addOrUpdate(data[i]); - } - } - else if (util.isDataTable(data)) { - // Google DataTable - var columns = this._getColumnNames(data); - for (var row = 0, rows = data.getNumberOfRows(); row < rows; row++) { - var item = {}; - for (var col = 0, cols = columns.length; col < cols; col++) { - var field = columns[col]; - item[field] = data.getValue(row, col); - } + var horizontalNew = this.startArmRotation.horizontal + diffX / 200; + var verticalNew = this.startArmRotation.vertical + diffY / 200; - addOrUpdate(item); - } - } - else if (data instanceof Object) { - // Single item - addOrUpdate(data); + var snapAngle = 4; // degrees + var snapValue = Math.sin(snapAngle / 360 * 2 * Math.PI); + + // snap horizontally to nice angles at 0pi, 0.5pi, 1pi, 1.5pi, etc... + // the -0.001 is to take care that the vertical axis is always drawn at the left front corner + if (Math.abs(Math.sin(horizontalNew)) < snapValue) { + horizontalNew = Math.round((horizontalNew / Math.PI)) * Math.PI - 0.001; } - else { - throw new Error('Unknown dataType'); + if (Math.abs(Math.cos(horizontalNew)) < snapValue) { + horizontalNew = (Math.round((horizontalNew/ Math.PI - 0.5)) + 0.5) * Math.PI - 0.001; } - if (addedIds.length) { - this._trigger('add', {items: addedIds}, senderId); + // snap vertically to nice angles + if (Math.abs(Math.sin(verticalNew)) < snapValue) { + verticalNew = Math.round((verticalNew / Math.PI)) * Math.PI; } - if (updatedIds.length) { - this._trigger('update', {items: updatedIds, data: updatedData}, senderId); + if (Math.abs(Math.cos(verticalNew)) < snapValue) { + verticalNew = (Math.round((verticalNew/ Math.PI - 0.5)) + 0.5) * Math.PI; } - return addedIds.concat(updatedIds); + this.camera.setArmRotation(horizontalNew, verticalNew); + this.redraw(); + + // fire a cameraPositionChange event + var parameters = this.getCameraPosition(); + this.emit('cameraPositionChange', parameters); + + util.preventDefault(event); }; + /** - * Get a data item or multiple items. - * - * Usage: - * - * get() - * get(options: Object) - * get(options: Object, data: Array | DataTable) - * - * get(id: Number | String) - * get(id: Number | String, options: Object) - * get(id: Number | String, options: Object, data: Array | DataTable) - * - * get(ids: Number[] | String[]) - * get(ids: Number[] | String[], options: Object) - * get(ids: Number[] | String[], options: Object, data: Array | DataTable) - * - * Where: - * - * {Number | String} id The id of an item - * {Number[] | String{}} ids An array with ids of items - * {Object} options An Object with options. Available options: - * {String} [returnType] Type of data to be - * returned. Can be 'DataTable' or 'Array' (default) - * {Object.} [type] - * {String[]} [fields] field names to be returned - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * {Array | DataTable} [data] If provided, items will be appended to this - * array or table. Required in case of Google - * DataTable. - * - * @throws Error + * Stop moving operating. + * This function activated from within the funcion Graph.mouseDown(). + * @param {event} event The event */ - DataSet.prototype.get = function (args) { - var me = this; + Graph3d.prototype._onMouseUp = function (event) { + this.frame.style.cursor = 'auto'; + this.leftButtonDown = false; - // parse the arguments - var id, ids, options, data; - var firstType = util.getType(arguments[0]); - if (firstType == 'String' || firstType == 'Number') { - // get(id [, options] [, data]) - id = arguments[0]; - options = arguments[1]; - data = arguments[2]; - } - else if (firstType == 'Array') { - // get(ids [, options] [, data]) - ids = arguments[0]; - options = arguments[1]; - data = arguments[2]; - } - else { - // get([, options] [, data]) - options = arguments[0]; - data = arguments[1]; - } + // remove event listeners here + util.removeEventListener(document, 'mousemove', this.onmousemove); + util.removeEventListener(document, 'mouseup', this.onmouseup); + util.preventDefault(event); + }; - // determine the return type - var returnType; - if (options && options.returnType) { - var allowedValues = ["DataTable", "Array", "Object"]; - returnType = allowedValues.indexOf(options.returnType) == -1 ? "Array" : options.returnType; + /** + * After having moved the mouse, a tooltip should pop up when the mouse is resting on a data point + * @param {Event} event A mouse move event + */ + Graph3d.prototype._onTooltip = function (event) { + var delay = 300; // ms + var boundingRect = this.frame.getBoundingClientRect(); + var mouseX = getMouseX(event) - boundingRect.left; + var mouseY = getMouseY(event) - boundingRect.top; - if (data && (returnType != util.getType(data))) { - throw new Error('Type of parameter "data" (' + util.getType(data) + ') ' + - 'does not correspond with specified options.type (' + options.type + ')'); - } - if (returnType == 'DataTable' && !util.isDataTable(data)) { - throw new Error('Parameter "data" must be a DataTable ' + - 'when options.type is "DataTable"'); - } - } - else if (data) { - returnType = (util.getType(data) == 'DataTable') ? 'DataTable' : 'Array'; - } - else { - returnType = 'Array'; + if (!this.showTooltip) { + return; } - // build options - var type = options && options.type || this._options.type; - var filter = options && options.filter; - var items = [], item, itemId, i, len; - - // convert items - if (id != undefined) { - // return a single item - item = me._getItem(id, type); - if (filter && !filter(item)) { - item = null; - } - } - else if (ids != undefined) { - // return a subset of items - for (i = 0, len = ids.length; i < len; i++) { - item = me._getItem(ids[i], type); - if (!filter || filter(item)) { - items.push(item); - } - } - } - else { - // return all items - for (itemId in this._data) { - if (this._data.hasOwnProperty(itemId)) { - item = me._getItem(itemId, type); - if (!filter || filter(item)) { - items.push(item); - } - } - } + if (this.tooltipTimeout) { + clearTimeout(this.tooltipTimeout); } - // order the results - if (options && options.order && id == undefined) { - this._sort(items, options.order); + // (delayed) display of a tooltip only if no mouse button is down + if (this.leftButtonDown) { + this._hideTooltip(); + return; } - // filter fields of the items - if (options && options.fields) { - var fields = options.fields; - if (id != undefined) { - item = this._filterFields(item, fields); - } - else { - for (i = 0, len = items.length; i < len; i++) { - items[i] = this._filterFields(items[i], fields); + if (this.tooltip && this.tooltip.dataPoint) { + // tooltip is currently visible + var dataPoint = this._dataPointFromXY(mouseX, mouseY); + if (dataPoint !== this.tooltip.dataPoint) { + // datapoint changed + if (dataPoint) { + this._showTooltip(dataPoint); } - } - } - - // return the results - if (returnType == 'DataTable') { - var columns = this._getColumnNames(data); - if (id != undefined) { - // append a single item to the data table - me._appendRow(data, columns, item); - } - else { - // copy the items to the provided data table - for (i = 0; i < items.length; i++) { - me._appendRow(data, columns, items[i]); + else { + this._hideTooltip(); } } - return data; - } - else if (returnType == "Object") { - var result = {}; - for (i = 0; i < items.length; i++) { - result[items[i].id] = items[i]; - } - return result; } else { - // return an array - if (id != undefined) { - // a single item - return item; - } - else { - // multiple items - if (data) { - // copy the items to the provided array - for (i = 0, len = items.length; i < len; i++) { - data.push(items[i]); - } - return data; - } - else { - // just return our array - return items; + // tooltip is currently not visible + var me = this; + this.tooltipTimeout = setTimeout(function () { + me.tooltipTimeout = null; + + // show a tooltip if we have a data point + var dataPoint = me._dataPointFromXY(mouseX, mouseY); + if (dataPoint) { + me._showTooltip(dataPoint); } - } + }, delay); } }; /** - * Get ids of all items or from a filtered set of items. - * @param {Object} [options] An Object with options. Available options: - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * @return {Array} ids + * Event handler for touchstart event on mobile devices */ - DataSet.prototype.getIds = function (options) { - var data = this._data, - filter = options && options.filter, - order = options && options.order, - type = options && options.type || this._options.type, - i, - len, - id, - item, - items, - ids = []; - - if (filter) { - // get filtered items - if (order) { - // create ordered list - items = []; - for (id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (filter(item)) { - items.push(item); - } - } - } - - this._sort(items, order); - - for (i = 0, len = items.length; i < len; i++) { - ids[i] = items[i][this._fieldId]; - } - } - else { - // create unordered list - for (id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (filter(item)) { - ids.push(item[this._fieldId]); - } - } - } - } - } - else { - // get all items - if (order) { - // create an ordered list - items = []; - for (id in data) { - if (data.hasOwnProperty(id)) { - items.push(data[id]); - } - } - - this._sort(items, order); + Graph3d.prototype._onTouchStart = function(event) { + this.touchDown = true; - for (i = 0, len = items.length; i < len; i++) { - ids[i] = items[i][this._fieldId]; - } - } - else { - // create unordered list - for (id in data) { - if (data.hasOwnProperty(id)) { - item = data[id]; - ids.push(item[this._fieldId]); - } - } - } - } + var me = this; + this.ontouchmove = function (event) {me._onTouchMove(event);}; + this.ontouchend = function (event) {me._onTouchEnd(event);}; + util.addEventListener(document, 'touchmove', me.ontouchmove); + util.addEventListener(document, 'touchend', me.ontouchend); - return ids; + this._onMouseDown(event); }; /** - * Returns the DataSet itself. Is overwritten for example by the DataView, - * which returns the DataSet it is connected to instead. + * Event handler for touchmove event on mobile devices */ - DataSet.prototype.getDataSet = function () { - return this; + Graph3d.prototype._onTouchMove = function(event) { + this._onMouseMove(event); }; /** - * Execute a callback function for every item in the dataset. - * @param {function} callback - * @param {Object} [options] Available options: - * {Object.} [type] - * {String[]} [fields] filter fields - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. + * Event handler for touchend event on mobile devices */ - DataSet.prototype.forEach = function (callback, options) { - var filter = options && options.filter, - type = options && options.type || this._options.type, - data = this._data, - item, - id; + Graph3d.prototype._onTouchEnd = function(event) { + this.touchDown = false; - if (options && options.order) { - // execute forEach on ordered list - var items = this.get(options); + util.removeEventListener(document, 'touchmove', this.ontouchmove); + util.removeEventListener(document, 'touchend', this.ontouchend); - for (var i = 0, len = items.length; i < len; i++) { - item = items[i]; - id = item[this._fieldId]; - callback(item, id); - } - } - else { - // unordered - for (id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (!filter || filter(item)) { - callback(item, id); - } - } - } - } + this._onMouseUp(event); }; + /** - * Map every item in the dataset. - * @param {function} callback - * @param {Object} [options] Available options: - * {Object.} [type] - * {String[]} [fields] filter fields - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * @return {Object[]} mappedItems + * Event handler for mouse wheel event, used to zoom the graph + * Code from http://adomas.org/javascript-mouse-wheel/ + * @param {event} event The event */ - DataSet.prototype.map = function (callback, options) { - var filter = options && options.filter, - type = options && options.type || this._options.type, - mappedItems = [], - data = this._data, - item; + Graph3d.prototype._onWheel = function(event) { + if (!event) /* For IE. */ + event = window.event; - // convert and filter items - for (var id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (!filter || filter(item)) { - mappedItems.push(callback(item, id)); - } - } + // retrieve delta + var delta = 0; + if (event.wheelDelta) { /* IE/Opera. */ + delta = event.wheelDelta/120; + } else if (event.detail) { /* Mozilla case. */ + // In Mozilla, sign of delta is different than in IE. + // Also, delta is multiple of 3. + delta = -event.detail/3; } - // order items - if (options && options.order) { - this._sort(mappedItems, options.order); + // If delta is nonzero, handle it. + // Basically, delta is now positive if wheel was scrolled up, + // and negative, if wheel was scrolled down. + if (delta) { + var oldLength = this.camera.getArmLength(); + var newLength = oldLength * (1 - delta / 10); + + this.camera.setArmLength(newLength); + this.redraw(); + + this._hideTooltip(); } - return mappedItems; + // fire a cameraPositionChange event + var parameters = this.getCameraPosition(); + this.emit('cameraPositionChange', parameters); + + // Prevent default actions caused by mouse wheel. + // That might be ugly, but we handle scrolls somehow + // anyway, so don't bother here.. + util.preventDefault(event); }; /** - * Filter the fields of an item - * @param {Object | null} item - * @param {String[]} fields Field names - * @return {Object | null} filteredItem or null if no item is provided + * Test whether a point lies inside given 2D triangle + * @param {Point2d} point + * @param {Point2d[]} triangle + * @return {boolean} Returns true if given point lies inside or on the edge of the triangle * @private */ - DataSet.prototype._filterFields = function (item, fields) { - if (!item) { // item is null - return item; - } - - var filteredItem = {}; + Graph3d.prototype._insideTriangle = function (point, triangle) { + var a = triangle[0], + b = triangle[1], + c = triangle[2]; - for (var field in item) { - if (item.hasOwnProperty(field) && (fields.indexOf(field) != -1)) { - filteredItem[field] = item[field]; - } + function sign (x) { + return x > 0 ? 1 : x < 0 ? -1 : 0; } - return filteredItem; + var as = sign((b.x - a.x) * (point.y - a.y) - (b.y - a.y) * (point.x - a.x)); + var bs = sign((c.x - b.x) * (point.y - b.y) - (c.y - b.y) * (point.x - b.x)); + var cs = sign((a.x - c.x) * (point.y - c.y) - (a.y - c.y) * (point.x - c.x)); + + // each of the three signs must be either equal to each other or zero + return (as == 0 || bs == 0 || as == bs) && + (bs == 0 || cs == 0 || bs == cs) && + (as == 0 || cs == 0 || as == cs); }; /** - * Sort the provided array with items - * @param {Object[]} items - * @param {String | function} order A field name or custom sort function. + * Find a data point close to given screen position (x, y) + * @param {Number} x + * @param {Number} y + * @return {Object | null} The closest data point or null if not close to any data point * @private */ - DataSet.prototype._sort = function (items, order) { - if (util.isString(order)) { - // order by provided field name - var name = order; // field name - items.sort(function (a, b) { - var av = a[name]; - var bv = b[name]; - return (av > bv) ? 1 : ((av < bv) ? -1 : 0); - }); - } - else if (typeof order === 'function') { - // order by sort function - items.sort(order); + Graph3d.prototype._dataPointFromXY = function (x, y) { + var i, + distMax = 100, // px + dataPoint = null, + closestDataPoint = null, + closestDist = null, + center = new Point2d(x, y); + + if (this.style === Graph3d.STYLE.BAR || + this.style === Graph3d.STYLE.BARCOLOR || + this.style === Graph3d.STYLE.BARSIZE) { + // the data points are ordered from far away to closest + for (i = this.dataPoints.length - 1; i >= 0; i--) { + dataPoint = this.dataPoints[i]; + var surfaces = dataPoint.surfaces; + if (surfaces) { + for (var s = surfaces.length - 1; s >= 0; s--) { + // split each surface in two triangles, and see if the center point is inside one of these + var surface = surfaces[s]; + var corners = surface.corners; + var triangle1 = [corners[0].screen, corners[1].screen, corners[2].screen]; + var triangle2 = [corners[2].screen, corners[3].screen, corners[0].screen]; + if (this._insideTriangle(center, triangle1) || + this._insideTriangle(center, triangle2)) { + // return immediately at the first hit + return dataPoint; + } + } + } + } } - // TODO: extend order by an Object {field:String, direction:String} - // where direction can be 'asc' or 'desc' else { - throw new TypeError('Order must be a function or a string'); + // find the closest data point, using distance to the center of the point on 2d screen + for (i = 0; i < this.dataPoints.length; i++) { + dataPoint = this.dataPoints[i]; + var point = dataPoint.screen; + if (point) { + var distX = Math.abs(x - point.x); + var distY = Math.abs(y - point.y); + var dist = Math.sqrt(distX * distX + distY * distY); + + if ((closestDist === null || dist < closestDist) && dist < distMax) { + closestDist = dist; + closestDataPoint = dataPoint; + } + } + } } + + + return closestDataPoint; }; /** - * Remove an object by pointer or by id - * @param {String | Number | Object | Array} id Object or id, or an array with - * objects or ids to be removed - * @param {String} [senderId] Optional sender id - * @return {Array} removedIds + * Display a tooltip for given data point + * @param {Object} dataPoint + * @private */ - DataSet.prototype.remove = function (id, senderId) { - var removedIds = [], - i, len, removedId; + Graph3d.prototype._showTooltip = function (dataPoint) { + var content, line, dot; - if (Array.isArray(id)) { - for (i = 0, len = id.length; i < len; i++) { - removedId = this._remove(id[i]); - if (removedId != null) { - removedIds.push(removedId); + if (!this.tooltip) { + content = document.createElement('div'); + content.style.position = 'absolute'; + content.style.padding = '10px'; + content.style.border = '1px solid #4d4d4d'; + content.style.color = '#1a1a1a'; + content.style.background = 'rgba(255,255,255,0.7)'; + content.style.borderRadius = '2px'; + content.style.boxShadow = '5px 5px 10px rgba(128,128,128,0.5)'; + + line = document.createElement('div'); + line.style.position = 'absolute'; + line.style.height = '40px'; + line.style.width = '0'; + line.style.borderLeft = '1px solid #4d4d4d'; + + dot = document.createElement('div'); + dot.style.position = 'absolute'; + dot.style.height = '0'; + dot.style.width = '0'; + dot.style.border = '5px solid #4d4d4d'; + dot.style.borderRadius = '5px'; + + this.tooltip = { + dataPoint: null, + dom: { + content: content, + line: line, + dot: dot } - } + }; } else { - removedId = this._remove(id); - if (removedId != null) { - removedIds.push(removedId); - } + content = this.tooltip.dom.content; + line = this.tooltip.dom.line; + dot = this.tooltip.dom.dot; } - if (removedIds.length) { - this._trigger('remove', {items: removedIds}, senderId); + this._hideTooltip(); + + this.tooltip.dataPoint = dataPoint; + if (typeof this.showTooltip === 'function') { + content.innerHTML = this.showTooltip(dataPoint.point); + } + else { + content.innerHTML = '' + + '' + + '' + + '' + + '
x:' + dataPoint.point.x + '
y:' + dataPoint.point.y + '
z:' + dataPoint.point.z + '
'; } - return removedIds; + content.style.left = '0'; + content.style.top = '0'; + this.frame.appendChild(content); + this.frame.appendChild(line); + this.frame.appendChild(dot); + + // calculate sizes + var contentWidth = content.offsetWidth; + var contentHeight = content.offsetHeight; + var lineHeight = line.offsetHeight; + var dotWidth = dot.offsetWidth; + var dotHeight = dot.offsetHeight; + + var left = dataPoint.screen.x - contentWidth / 2; + left = Math.min(Math.max(left, 10), this.frame.clientWidth - 10 - contentWidth); + + line.style.left = dataPoint.screen.x + 'px'; + line.style.top = (dataPoint.screen.y - lineHeight) + 'px'; + content.style.left = left + 'px'; + content.style.top = (dataPoint.screen.y - lineHeight - contentHeight) + 'px'; + dot.style.left = (dataPoint.screen.x - dotWidth / 2) + 'px'; + dot.style.top = (dataPoint.screen.y - dotHeight / 2) + 'px'; }; /** - * Remove an item by its id - * @param {Number | String | Object} id id or item - * @returns {Number | String | null} id + * Hide the tooltip when displayed * @private */ - DataSet.prototype._remove = function (id) { - if (util.isNumber(id) || util.isString(id)) { - if (this._data[id]) { - delete this._data[id]; - this.length--; - return id; - } - } - else if (id instanceof Object) { - var itemId = id[this._fieldId]; - if (itemId && this._data[itemId]) { - delete this._data[itemId]; - this.length--; - return itemId; + Graph3d.prototype._hideTooltip = function () { + if (this.tooltip) { + this.tooltip.dataPoint = null; + + for (var prop in this.tooltip.dom) { + if (this.tooltip.dom.hasOwnProperty(prop)) { + var elem = this.tooltip.dom[prop]; + if (elem && elem.parentNode) { + elem.parentNode.removeChild(elem); + } + } } } - return null; }; + /**--------------------------------------------------------------------------**/ + + /** - * Clear the data - * @param {String} [senderId] Optional sender id - * @return {Array} removedIds The ids of all removed items + * Get the horizontal mouse position from a mouse event + * @param {Event} event + * @return {Number} mouse x */ - DataSet.prototype.clear = function (senderId) { - var ids = Object.keys(this._data); + function getMouseX (event) { + if ('clientX' in event) return event.clientX; + return event.targetTouches[0] && event.targetTouches[0].clientX || 0; + } - this._data = {}; - this.length = 0; + /** + * Get the vertical mouse position from a mouse event + * @param {Event} event + * @return {Number} mouse y + */ + function getMouseY (event) { + if ('clientY' in event) return event.clientY; + return event.targetTouches[0] && event.targetTouches[0].clientY || 0; + } - this._trigger('remove', {items: ids}, senderId); + module.exports = Graph3d; - return ids; - }; + +/***/ }, +/* 7 */ +/***/ function(module, exports, __webpack_require__) { + + var Point3d = __webpack_require__(10); /** - * Find the item with maximum value of a specified field - * @param {String} field - * @return {Object | null} item Item containing max value, or null if no items + * @class Camera + * The camera is mounted on a (virtual) camera arm. The camera arm can rotate + * The camera is always looking in the direction of the origin of the arm. + * This way, the camera always rotates around one fixed point, the location + * of the camera arm. + * + * Documentation: + * http://en.wikipedia.org/wiki/3D_projection */ - DataSet.prototype.max = function (field) { - var data = this._data, - max = null, - maxField = null; + function Camera() { + this.armLocation = new Point3d(); + this.armRotation = {}; + this.armRotation.horizontal = 0; + this.armRotation.vertical = 0; + this.armLength = 1.7; - for (var id in data) { - if (data.hasOwnProperty(id)) { - var item = data[id]; - var itemField = item[field]; - if (itemField != null && (!max || itemField > maxField)) { - max = item; - maxField = itemField; - } - } - } + this.cameraLocation = new Point3d(); + this.cameraRotation = new Point3d(0.5*Math.PI, 0, 0); - return max; - }; + this.calculateCameraOrientation(); + } /** - * Find the item with minimum value of a specified field - * @param {String} field - * @return {Object | null} item Item containing max value, or null if no items + * Set the location (origin) of the arm + * @param {Number} x Normalized value of x + * @param {Number} y Normalized value of y + * @param {Number} z Normalized value of z */ - DataSet.prototype.min = function (field) { - var data = this._data, - min = null, - minField = null; - - for (var id in data) { - if (data.hasOwnProperty(id)) { - var item = data[id]; - var itemField = item[field]; - if (itemField != null && (!min || itemField < minField)) { - min = item; - minField = itemField; - } - } - } + Camera.prototype.setArmLocation = function(x, y, z) { + this.armLocation.x = x; + this.armLocation.y = y; + this.armLocation.z = z; - return min; + this.calculateCameraOrientation(); }; /** - * Find all distinct values of a specified field - * @param {String} field - * @return {Array} values Array containing all distinct values. If data items - * do not contain the specified field are ignored. - * The returned array is unordered. + * Set the rotation of the camera arm + * @param {Number} horizontal The horizontal rotation, between 0 and 2*PI. + * Optional, can be left undefined. + * @param {Number} vertical The vertical rotation, between 0 and 0.5*PI + * if vertical=0.5*PI, the graph is shown from the + * top. Optional, can be left undefined. */ - DataSet.prototype.distinct = function (field) { - var data = this._data; - var values = []; - var fieldType = this._options.type && this._options.type[field] || null; - var count = 0; - var i; - - for (var prop in data) { - if (data.hasOwnProperty(prop)) { - var item = data[prop]; - var value = item[field]; - var exists = false; - for (i = 0; i < count; i++) { - if (values[i] == value) { - exists = true; - break; - } - } - if (!exists && (value !== undefined)) { - values[count] = value; - count++; - } - } + Camera.prototype.setArmRotation = function(horizontal, vertical) { + if (horizontal !== undefined) { + this.armRotation.horizontal = horizontal; } - if (fieldType) { - for (i = 0; i < values.length; i++) { - values[i] = util.convert(values[i], fieldType); - } + if (vertical !== undefined) { + this.armRotation.vertical = vertical; + if (this.armRotation.vertical < 0) this.armRotation.vertical = 0; + if (this.armRotation.vertical > 0.5*Math.PI) this.armRotation.vertical = 0.5*Math.PI; } - return values; + if (horizontal !== undefined || vertical !== undefined) { + this.calculateCameraOrientation(); + } }; /** - * Add a single item. Will fail when an item with the same id already exists. - * @param {Object} item - * @return {String} id - * @private + * Retrieve the current arm rotation + * @return {object} An object with parameters horizontal and vertical */ - DataSet.prototype._addItem = function (item) { - var id = item[this._fieldId]; - - if (id != undefined) { - // check whether this id is already taken - if (this._data[id]) { - // item already exists - throw new Error('Cannot add item: item with id ' + id + ' already exists'); - } - } - else { - // generate an id - id = util.randomUUID(); - item[this._fieldId] = id; - } - - var d = {}; - for (var field in item) { - if (item.hasOwnProperty(field)) { - var fieldType = this._type[field]; // type may be undefined - d[field] = util.convert(item[field], fieldType); - } - } - this._data[id] = d; - this.length++; + Camera.prototype.getArmRotation = function() { + var rot = {}; + rot.horizontal = this.armRotation.horizontal; + rot.vertical = this.armRotation.vertical; - return id; + return rot; }; /** - * Get an item. Fields can be converted to a specific type - * @param {String} id - * @param {Object.} [types] field types to convert - * @return {Object | null} item - * @private + * Set the (normalized) length of the camera arm. + * @param {Number} length A length between 0.71 and 5.0 */ - DataSet.prototype._getItem = function (id, types) { - var field, value; + Camera.prototype.setArmLength = function(length) { + if (length === undefined) + return; - // get the item from the dataset - var raw = this._data[id]; - if (!raw) { - return null; - } + this.armLength = length; - // convert the items field types - var converted = {}; - if (types) { - for (field in raw) { - if (raw.hasOwnProperty(field)) { - value = raw[field]; - converted[field] = util.convert(value, types[field]); - } - } - } - else { - // no field types specified, no converting needed - for (field in raw) { - if (raw.hasOwnProperty(field)) { - value = raw[field]; - converted[field] = value; - } - } - } - return converted; + // Radius must be larger than the corner of the graph, + // which has a distance of sqrt(0.5^2+0.5^2) = 0.71 from the center of the + // graph + if (this.armLength < 0.71) this.armLength = 0.71; + if (this.armLength > 5.0) this.armLength = 5.0; + + this.calculateCameraOrientation(); }; /** - * Update a single item: merge with existing item. - * Will fail when the item has no id, or when there does not exist an item - * with the same id. - * @param {Object} item - * @return {String} id - * @private + * Retrieve the arm length + * @return {Number} length */ - DataSet.prototype._updateItem = function (item) { - var id = item[this._fieldId]; - if (id == undefined) { - throw new Error('Cannot update item: item has no id (item: ' + JSON.stringify(item) + ')'); - } - var d = this._data[id]; - if (!d) { - // item doesn't exist - throw new Error('Cannot update item: no item with id ' + id + ' found'); - } - - // merge with current item - for (var field in item) { - if (item.hasOwnProperty(field)) { - var fieldType = this._type[field]; // type may be undefined - d[field] = util.convert(item[field], fieldType); - } - } - - return id; + Camera.prototype.getArmLength = function() { + return this.armLength; }; /** - * Get an array with the column names of a Google DataTable - * @param {DataTable} dataTable - * @return {String[]} columnNames - * @private + * Retrieve the camera location + * @return {Point3d} cameraLocation */ - DataSet.prototype._getColumnNames = function (dataTable) { - var columns = []; - for (var col = 0, cols = dataTable.getNumberOfColumns(); col < cols; col++) { - columns[col] = dataTable.getColumnId(col) || dataTable.getColumnLabel(col); - } - return columns; + Camera.prototype.getCameraLocation = function() { + return this.cameraLocation; }; /** - * Append an item as a row to the dataTable - * @param dataTable - * @param columns - * @param item - * @private + * Retrieve the camera rotation + * @return {Point3d} cameraRotation */ - DataSet.prototype._appendRow = function (dataTable, columns, item) { - var row = dataTable.addRow(); - - for (var col = 0, cols = columns.length; col < cols; col++) { - var field = columns[col]; - dataTable.setValue(row, col, item[field]); - } + Camera.prototype.getCameraRotation = function() { + return this.cameraRotation; }; - module.exports = DataSet; - + /** + * Calculate the location and rotation of the camera based on the + * position and orientation of the camera arm + */ + Camera.prototype.calculateCameraOrientation = function() { + // calculate location of the camera + this.cameraLocation.x = this.armLocation.x - this.armLength * Math.sin(this.armRotation.horizontal) * Math.cos(this.armRotation.vertical); + this.cameraLocation.y = this.armLocation.y - this.armLength * Math.cos(this.armRotation.horizontal) * Math.cos(this.armRotation.vertical); + this.cameraLocation.z = this.armLocation.z + this.armLength * Math.sin(this.armRotation.vertical); + + // calculate rotation of the camera + this.cameraRotation.x = Math.PI/2 - this.armRotation.vertical; + this.cameraRotation.y = 0; + this.cameraRotation.z = -this.armRotation.horizontal; + }; + + module.exports = Camera; /***/ }, /* 8 */ /***/ function(module, exports, __webpack_require__) { + var DataView = __webpack_require__(4); + /** - * A queue - * @param {Object} options - * Available options: - * - delay: number When provided, the queue will be flushed - * automatically after an inactivity of this delay - * in milliseconds. - * Default value is null. - * - max: number When the queue exceeds the given maximum number - * of entries, the queue is flushed automatically. - * Default value of max is Infinity. - * @constructor + * @class Filter + * + * @param {DataSet} data The google data table + * @param {Number} column The index of the column to be filtered + * @param {Graph} graph The graph */ - function Queue(options) { - // options - this.delay = null; - this.max = Infinity; + function Filter (data, column, graph) { + this.data = data; + this.column = column; + this.graph = graph; // the parent graph - // properties - this._queue = []; - this._timeout = null; - this._extended = null; + this.index = undefined; + this.value = undefined; - this.setOptions(options); - } + // read all distinct values and select the first one + this.values = graph.getDistinctValues(data.get(), this.column); - /** - * Update the configuration of the queue - * @param {Object} options - * Available options: - * - delay: number When provided, the queue will be flushed - * automatically after an inactivity of this delay - * in milliseconds. - * Default value is null. - * - max: number When the queue exceeds the given maximum number - * of entries, the queue is flushed automatically. - * Default value of max is Infinity. - * @param options - */ - Queue.prototype.setOptions = function (options) { - if (options && typeof options.delay !== 'undefined') { - this.delay = options.delay; + // sort both numeric and string values correctly + this.values.sort(function (a, b) { + return a > b ? 1 : a < b ? -1 : 0; + }); + + if (this.values.length > 0) { + this.selectValue(0); } - if (options && typeof options.max !== 'undefined') { - this.max = options.max; + + // create an array with the filtered datapoints. this will be loaded afterwards + this.dataPoints = []; + + this.loaded = false; + this.onLoadCallback = undefined; + + if (graph.animationPreload) { + this.loaded = false; + this.loadInBackground(); + } + else { + this.loaded = true; } + }; - this._flushIfNeeded(); + + /** + * Return the label + * @return {string} label + */ + Filter.prototype.isLoaded = function() { + return this.loaded; }; + /** - * Extend an object with queuing functionality. - * The object will be extended with a function flush, and the methods provided - * in options.replace will be replaced with queued ones. - * @param {Object} object - * @param {Object} options - * Available options: - * - replace: Array. - * A list with method names of the methods - * on the object to be replaced with queued ones. - * - delay: number When provided, the queue will be flushed - * automatically after an inactivity of this delay - * in milliseconds. - * Default value is null. - * - max: number When the queue exceeds the given maximum number - * of entries, the queue is flushed automatically. - * Default value of max is Infinity. - * @return {Queue} Returns the created queue + * Return the loaded progress + * @return {Number} percentage between 0 and 100 */ - Queue.extend = function (object, options) { - var queue = new Queue(options); + Filter.prototype.getLoadedProgress = function() { + var len = this.values.length; - if (object.flush !== undefined) { - throw new Error('Target object already has a property flush'); + var i = 0; + while (this.dataPoints[i]) { + i++; } - object.flush = function () { - queue.flush(); - }; - var methods = [{ - name: 'flush', - original: undefined - }]; + return Math.round(i / len * 100); + }; - if (options && options.replace) { - for (var i = 0; i < options.replace.length; i++) { - var name = options.replace[i]; - methods.push({ - name: name, - original: object[name] - }); - queue.replace(object, name); - } - } - queue._extended = { - object: object, - methods: methods - }; + /** + * Return the label + * @return {string} label + */ + Filter.prototype.getLabel = function() { + return this.graph.filterLabel; + }; - return queue; + + /** + * Return the columnIndex of the filter + * @return {Number} columnIndex + */ + Filter.prototype.getColumn = function() { + return this.column; }; /** - * Destroy the queue. The queue will first flush all queued actions, and in - * case it has extended an object, will restore the original object. + * Return the currently selected value. Returns undefined if there is no selection + * @return {*} value */ - Queue.prototype.destroy = function () { - this.flush(); + Filter.prototype.getSelectedValue = function() { + if (this.index === undefined) + return undefined; - if (this._extended) { - var object = this._extended.object; - var methods = this._extended.methods; - for (var i = 0; i < methods.length; i++) { - var method = methods[i]; - if (method.original) { - object[method.name] = method.original; - } - else { - delete object[method.name]; - } - } - this._extended = null; - } + return this.values[this.index]; }; /** - * Replace a method on an object with a queued version - * @param {Object} object Object having the method - * @param {string} method The method name + * Retrieve all values of the filter + * @return {Array} values */ - Queue.prototype.replace = function(object, method) { - var me = this; - var original = object[method]; - if (!original) { - throw new Error('Method ' + method + ' undefined'); - } + Filter.prototype.getValues = function() { + return this.values; + }; - object[method] = function () { - // create an Array with the arguments - var args = []; - for (var i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } + /** + * Retrieve one value of the filter + * @param {Number} index + * @return {*} value + */ + Filter.prototype.getValue = function(index) { + if (index >= this.values.length) + throw 'Error: index out of range'; - // add this call to the queue - me.queue({ - args: args, - fn: original, - context: this - }); - }; + return this.values[index]; }; + /** - * Queue a call - * @param {function | {fn: function, args: Array} | {fn: function, args: Array, context: Object}} entry + * Retrieve the (filtered) dataPoints for the currently selected filter index + * @param {Number} [index] (optional) + * @return {Array} dataPoints */ - Queue.prototype.queue = function(entry) { - if (typeof entry === 'function') { - this._queue.push({fn: entry}); + Filter.prototype._getDataPoints = function(index) { + if (index === undefined) + index = this.index; + + if (index === undefined) + return []; + + var dataPoints; + if (this.dataPoints[index]) { + dataPoints = this.dataPoints[index]; } else { - this._queue.push(entry); + var f = {}; + f.column = this.column; + f.value = this.values[index]; + + var dataView = new DataView(this.data,{filter: function (item) {return (item[f.column] == f.value);}}).get(); + dataPoints = this.graph._getDataPoints(dataView); + + this.dataPoints[index] = dataPoints; } - this._flushIfNeeded(); + return dataPoints; }; + + /** - * Check whether the queue needs to be flushed - * @private + * Set a callback function when the filter is fully loaded. */ - Queue.prototype._flushIfNeeded = function () { - // flush when the maximum is exceeded. - if (this._queue.length > this.max) { - this.flush(); - } + Filter.prototype.setOnLoadCallback = function(callback) { + this.onLoadCallback = callback; + }; - // flush after a period of inactivity when a delay is configured - clearTimeout(this._timeout); - if (this.queue.length > 0 && typeof this.delay === 'number') { - var me = this; - this._timeout = setTimeout(function () { - me.flush(); - }, this.delay); - } + + /** + * Add a value to the list with available values for this filter + * No double entries will be created. + * @param {Number} index + */ + Filter.prototype.selectValue = function(index) { + if (index >= this.values.length) + throw 'Error: index out of range'; + + this.index = index; + this.value = this.values[index]; }; /** - * Flush all queued calls + * Load all filtered rows in the background one by one + * Start this method without providing an index! */ - Queue.prototype.flush = function () { - while (this._queue.length > 0) { - var entry = this._queue.shift(); - entry.fn.apply(entry.context || entry.fn, entry.args || []); + Filter.prototype.loadInBackground = function(index) { + if (index === undefined) + index = 0; + + var frame = this.graph.frame; + + if (index < this.values.length) { + var dataPointsTemp = this._getDataPoints(index); + //this.graph.redrawInfo(); // TODO: not neat + + // create a progress box + if (frame.progress === undefined) { + frame.progress = document.createElement('DIV'); + frame.progress.style.position = 'absolute'; + frame.progress.style.color = 'gray'; + frame.appendChild(frame.progress); + } + var progress = this.getLoadedProgress(); + frame.progress.innerHTML = 'Loading animation... ' + progress + '%'; + // TODO: this is no nice solution... + frame.progress.style.bottom = 60 + 'px'; // TODO: use height of slider + frame.progress.style.left = 10 + 'px'; + + var me = this; + setTimeout(function() {me.loadInBackground(index+1);}, 10); + this.loaded = false; + } + else { + this.loaded = true; + + // remove the progress box + if (frame.progress !== undefined) { + frame.removeChild(frame.progress); + frame.progress = undefined; + } + + if (this.onLoadCallback) + this.onLoadCallback(); } }; - module.exports = Queue; + module.exports = Filter; /***/ }, /* 9 */ /***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(1); - var DataSet = __webpack_require__(7); - /** - * DataView - * - * a dataview offers a filtered view on a dataset or an other dataview. - * - * @param {DataSet | DataView} data - * @param {Object} [options] Available options: see method get - * - * @constructor DataView + * @prototype Point2d + * @param {Number} [x] + * @param {Number} [y] */ - function DataView (data, options) { - this._data = null; - this._ids = {}; // ids of the items currently in memory (just contains a boolean true) - this.length = 0; // number of items in the DataView - this._options = options || {}; - this._fieldId = 'id'; // name of the field containing id - this._subscribers = {}; // event subscribers + function Point2d (x, y) { + this.x = x !== undefined ? x : 0; + this.y = y !== undefined ? y : 0; + } - var me = this; - this.listener = function () { - me._onEvent.apply(me, arguments); - }; + module.exports = Point2d; - this.setData(data); - } - // TODO: implement a function .config() to dynamically update things like configured filter - // and trigger changes accordingly +/***/ }, +/* 10 */ +/***/ function(module, exports, __webpack_require__) { /** - * Set a data source for the view - * @param {DataSet | DataView} data + * @prototype Point3d + * @param {Number} [x] + * @param {Number} [y] + * @param {Number} [z] */ - DataView.prototype.setData = function (data) { - var ids, i, len; + function Point3d(x, y, z) { + this.x = x !== undefined ? x : 0; + this.y = y !== undefined ? y : 0; + this.z = z !== undefined ? z : 0; + }; - if (this._data) { - // unsubscribe from current dataset - if (this._data.unsubscribe) { - this._data.unsubscribe('*', this.listener); - } + /** + * Subtract the two provided points, returns a-b + * @param {Point3d} a + * @param {Point3d} b + * @return {Point3d} a-b + */ + Point3d.subtract = function(a, b) { + var sub = new Point3d(); + sub.x = a.x - b.x; + sub.y = a.y - b.y; + sub.z = a.z - b.z; + return sub; + }; - // trigger a remove of all items in memory - ids = []; - for (var id in this._ids) { - if (this._ids.hasOwnProperty(id)) { - ids.push(id); - } - } - this._ids = {}; - this.length = 0; - this._trigger('remove', {items: ids}); - } + /** + * Add the two provided points, returns a+b + * @param {Point3d} a + * @param {Point3d} b + * @return {Point3d} a+b + */ + Point3d.add = function(a, b) { + var sum = new Point3d(); + sum.x = a.x + b.x; + sum.y = a.y + b.y; + sum.z = a.z + b.z; + return sum; + }; - this._data = data; + /** + * Calculate the average of two 3d points + * @param {Point3d} a + * @param {Point3d} b + * @return {Point3d} The average, (a+b)/2 + */ + Point3d.avg = function(a, b) { + return new Point3d( + (a.x + b.x) / 2, + (a.y + b.y) / 2, + (a.z + b.z) / 2 + ); + }; - if (this._data) { - // update fieldId - this._fieldId = this._options.fieldId || - (this._data && this._data.options && this._data.options.fieldId) || - 'id'; + /** + * Calculate the cross product of the two provided points, returns axb + * Documentation: http://en.wikipedia.org/wiki/Cross_product + * @param {Point3d} a + * @param {Point3d} b + * @return {Point3d} cross product axb + */ + Point3d.crossProduct = function(a, b) { + var crossproduct = new Point3d(); - // trigger an add of all added items - ids = this._data.getIds({filter: this._options && this._options.filter}); - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - this._ids[id] = true; - } - this.length = ids.length; - this._trigger('add', {items: ids}); + crossproduct.x = a.y * b.z - a.z * b.y; + crossproduct.y = a.z * b.x - a.x * b.z; + crossproduct.z = a.x * b.y - a.y * b.x; - // subscribe to new dataset - if (this._data.on) { - this._data.on('*', this.listener); - } - } + return crossproduct; }; + /** - * Refresh the DataView. Useful when the DataView has a filter function - * containing a variable parameter. + * Rtrieve the length of the vector (or the distance from this point to the origin + * @return {Number} length */ - DataView.prototype.refresh = function () { - var id; - var ids = this._data.getIds({filter: this._options && this._options.filter}); - var newIds = {}; - var added = []; - var removed = []; + Point3d.prototype.length = function() { + return Math.sqrt( + this.x * this.x + + this.y * this.y + + this.z * this.z + ); + }; - // check for additions - for (var i = 0; i < ids.length; i++) { - id = ids[i]; - newIds[id] = true; - if (!this._ids[id]) { - added.push(id); - this._ids[id] = true; - this.length++; - } - } + module.exports = Point3d; - // check for removals - for (id in this._ids) { - if (this._ids.hasOwnProperty(id)) { - if (!newIds[id]) { - removed.push(id); - delete this._ids[id]; - this.length--; - } - } - } - // trigger events - if (added.length) { - this._trigger('add', {items: added}); - } - if (removed.length) { - this._trigger('remove', {items: removed}); - } - }; +/***/ }, +/* 11 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); /** - * Get data from the data view - * - * Usage: - * - * get() - * get(options: Object) - * get(options: Object, data: Array | DataTable) - * - * get(id: Number) - * get(id: Number, options: Object) - * get(id: Number, options: Object, data: Array | DataTable) - * - * get(ids: Number[]) - * get(ids: Number[], options: Object) - * get(ids: Number[], options: Object, data: Array | DataTable) - * - * Where: + * @constructor Slider * - * {Number | String} id The id of an item - * {Number[] | String{}} ids An array with ids of items - * {Object} options An Object with options. Available options: - * {String} [type] Type of data to be returned. Can - * be 'DataTable' or 'Array' (default) - * {Object.} [convert] - * {String[]} [fields] field names to be returned - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * {Array | DataTable} [data] If provided, items will be appended to this - * array or table. Required in case of Google - * DataTable. - * @param args + * An html slider control with start/stop/prev/next buttons + * @param {Element} container The element where the slider will be created + * @param {Object} options Available options: + * {boolean} visible If true (default) the + * slider is visible. */ - DataView.prototype.get = function (args) { - var me = this; - - // parse the arguments - var ids, options, data; - var firstType = util.getType(arguments[0]); - if (firstType == 'String' || firstType == 'Number' || firstType == 'Array') { - // get(id(s) [, options] [, data]) - ids = arguments[0]; // can be a single id or an array with ids - options = arguments[1]; - data = arguments[2]; - } - else { - // get([, options] [, data]) - options = arguments[0]; - data = arguments[1]; + function Slider(container, options) { + if (container === undefined) { + throw 'Error: No container element defined'; } + this.container = container; + this.visible = (options && options.visible != undefined) ? options.visible : true; - // extend the options with the default options and provided options - var viewOptions = util.extend({}, this._options, options); + if (this.visible) { + this.frame = document.createElement('DIV'); + //this.frame.style.backgroundColor = '#E5E5E5'; + this.frame.style.width = '100%'; + this.frame.style.position = 'relative'; + this.container.appendChild(this.frame); - // create a combined filter method when needed - if (this._options.filter && options && options.filter) { - viewOptions.filter = function (item) { - return me._options.filter(item) && options.filter(item); - } - } + this.frame.prev = document.createElement('INPUT'); + this.frame.prev.type = 'BUTTON'; + this.frame.prev.value = 'Prev'; + this.frame.appendChild(this.frame.prev); - // build up the call to the linked data set - var getArguments = []; - if (ids != undefined) { - getArguments.push(ids); + this.frame.play = document.createElement('INPUT'); + this.frame.play.type = 'BUTTON'; + this.frame.play.value = 'Play'; + this.frame.appendChild(this.frame.play); + + this.frame.next = document.createElement('INPUT'); + this.frame.next.type = 'BUTTON'; + this.frame.next.value = 'Next'; + this.frame.appendChild(this.frame.next); + + this.frame.bar = document.createElement('INPUT'); + this.frame.bar.type = 'BUTTON'; + this.frame.bar.style.position = 'absolute'; + this.frame.bar.style.border = '1px solid red'; + this.frame.bar.style.width = '100px'; + this.frame.bar.style.height = '6px'; + this.frame.bar.style.borderRadius = '2px'; + this.frame.bar.style.MozBorderRadius = '2px'; + this.frame.bar.style.border = '1px solid #7F7F7F'; + this.frame.bar.style.backgroundColor = '#E5E5E5'; + this.frame.appendChild(this.frame.bar); + + this.frame.slide = document.createElement('INPUT'); + this.frame.slide.type = 'BUTTON'; + this.frame.slide.style.margin = '0px'; + this.frame.slide.value = ' '; + this.frame.slide.style.position = 'relative'; + this.frame.slide.style.left = '-100px'; + this.frame.appendChild(this.frame.slide); + + // create events + var me = this; + this.frame.slide.onmousedown = function (event) {me._onMouseDown(event);}; + this.frame.prev.onclick = function (event) {me.prev(event);}; + this.frame.play.onclick = function (event) {me.togglePlay(event);}; + this.frame.next.onclick = function (event) {me.next(event);}; } - getArguments.push(viewOptions); - getArguments.push(data); - return this._data && this._data.get.apply(this._data, getArguments); - }; + this.onChangeCallback = undefined; + + this.values = []; + this.index = undefined; + + this.playTimeout = undefined; + this.playInterval = 1000; // milliseconds + this.playLoop = true; + } /** - * Get ids of all items or from a filtered set of items. - * @param {Object} [options] An Object with options. Available options: - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * @return {Array} ids + * Select the previous index */ - DataView.prototype.getIds = function (options) { - var ids; + Slider.prototype.prev = function() { + var index = this.getIndex(); + if (index > 0) { + index--; + this.setIndex(index); + } + }; - if (this._data) { - var defaultFilter = this._options.filter; - var filter; + /** + * Select the next index + */ + Slider.prototype.next = function() { + var index = this.getIndex(); + if (index < this.values.length - 1) { + index++; + this.setIndex(index); + } + }; - if (options && options.filter) { - if (defaultFilter) { - filter = function (item) { - return defaultFilter(item) && options.filter(item); - } - } - else { - filter = options.filter; - } - } - else { - filter = defaultFilter; - } + /** + * Select the next index + */ + Slider.prototype.playNext = function() { + var start = new Date(); - ids = this._data.getIds({ - filter: filter, - order: options && options.order - }); + var index = this.getIndex(); + if (index < this.values.length - 1) { + index++; + this.setIndex(index); } - else { - ids = []; + else if (this.playLoop) { + // jump to the start + index = 0; + this.setIndex(index); } - return ids; + var end = new Date(); + var diff = (end - start); + + // calculate how much time it to to set the index and to execute the callback + // function. + var interval = Math.max(this.playInterval - diff, 0); + // document.title = diff // TODO: cleanup + + var me = this; + this.playTimeout = setTimeout(function() {me.playNext();}, interval); }; /** - * Get the DataSet to which this DataView is connected. In case there is a chain - * of multiple DataViews, the root DataSet of this chain is returned. - * @return {DataSet} dataSet + * Toggle start or stop playing */ - DataView.prototype.getDataSet = function () { - var dataSet = this; - while (dataSet instanceof DataView) { - dataSet = dataSet._data; + Slider.prototype.togglePlay = function() { + if (this.playTimeout === undefined) { + this.play(); + } else { + this.stop(); } - return dataSet || null; }; /** - * Event listener. Will propagate all events from the connected data set to - * the subscribers of the DataView, but will filter the items and only trigger - * when there are changes in the filtered data set. - * @param {String} event - * @param {Object | null} params - * @param {String} senderId - * @private + * Start playing */ - DataView.prototype._onEvent = function (event, params, senderId) { - var i, len, id, item, - ids = params && params.items, - data = this._data, - added = [], - updated = [], - removed = []; + Slider.prototype.play = function() { + // Test whether already playing + if (this.playTimeout) return; - if (ids && data) { - switch (event) { - case 'add': - // filter the ids of the added items - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - item = this.get(id); - if (item) { - this._ids[id] = true; - added.push(id); - } - } + this.playNext(); - break; + if (this.frame) { + this.frame.play.value = 'Stop'; + } + }; - case 'update': - // determine the event from the views viewpoint: an updated - // item can be added, updated, or removed from this view. - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - item = this.get(id); + /** + * Stop playing + */ + Slider.prototype.stop = function() { + clearInterval(this.playTimeout); + this.playTimeout = undefined; - if (item) { - if (this._ids[id]) { - updated.push(id); - } - else { - this._ids[id] = true; - added.push(id); - } - } - else { - if (this._ids[id]) { - delete this._ids[id]; - removed.push(id); - } - else { - // nothing interesting for me :-( - } - } - } + if (this.frame) { + this.frame.play.value = 'Play'; + } + }; - break; + /** + * Set a callback function which will be triggered when the value of the + * slider bar has changed. + */ + Slider.prototype.setOnChangeCallback = function(callback) { + this.onChangeCallback = callback; + }; - case 'remove': - // filter the ids of the removed items - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - if (this._ids[id]) { - delete this._ids[id]; - removed.push(id); - } - } + /** + * Set the interval for playing the list + * @param {Number} interval The interval in milliseconds + */ + Slider.prototype.setPlayInterval = function(interval) { + this.playInterval = interval; + }; - break; - } + /** + * Retrieve the current play interval + * @return {Number} interval The interval in milliseconds + */ + Slider.prototype.getPlayInterval = function(interval) { + return this.playInterval; + }; - this.length += added.length - removed.length; + /** + * Set looping on or off + * @pararm {boolean} doLoop If true, the slider will jump to the start when + * the end is passed, and will jump to the end + * when the start is passed. + */ + Slider.prototype.setPlayLoop = function(doLoop) { + this.playLoop = doLoop; + }; - if (added.length) { - this._trigger('add', {items: added}, senderId); - } - if (updated.length) { - this._trigger('update', {items: updated}, senderId); - } - if (removed.length) { - this._trigger('remove', {items: removed}, senderId); - } + + /** + * Execute the onchange callback function + */ + Slider.prototype.onChange = function() { + if (this.onChangeCallback !== undefined) { + this.onChangeCallback(); } }; - // copy subscription functionality from DataSet - DataView.prototype.on = DataSet.prototype.on; - DataView.prototype.off = DataSet.prototype.off; - DataView.prototype._trigger = DataSet.prototype._trigger; + /** + * redraw the slider on the correct place + */ + Slider.prototype.redraw = function() { + if (this.frame) { + // resize the bar + this.frame.bar.style.top = (this.frame.clientHeight/2 - + this.frame.bar.offsetHeight/2) + 'px'; + this.frame.bar.style.width = (this.frame.clientWidth - + this.frame.prev.clientWidth - + this.frame.play.clientWidth - + this.frame.next.clientWidth - 30) + 'px'; - // TODO: make these functions deprecated (replaced with `on` and `off` since version 0.5) - DataView.prototype.subscribe = DataView.prototype.on; - DataView.prototype.unsubscribe = DataView.prototype.off; + // position the slider button + var left = this.indexToLeft(this.index); + this.frame.slide.style.left = (left) + 'px'; + } + }; - module.exports = DataView; -/***/ }, -/* 10 */ -/***/ function(module, exports, __webpack_require__) { + /** + * Set the list with values for the slider + * @param {Array} values A javascript array with values (any type) + */ + Slider.prototype.setValues = function(values) { + this.values = values; - var Emitter = __webpack_require__(11); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(9); - var util = __webpack_require__(1); - var Point3d = __webpack_require__(12); - var Point2d = __webpack_require__(13); - var Camera = __webpack_require__(14); - var Filter = __webpack_require__(15); - var Slider = __webpack_require__(16); - var StepNumber = __webpack_require__(17); + if (this.values.length > 0) + this.setIndex(0); + else + this.index = undefined; + }; /** - * @constructor Graph3d - * Graph3d displays data in 3d. - * - * Graph3d is developed in javascript as a Google Visualization Chart. - * - * @param {Element} container The DOM element in which the Graph3d will - * be created. Normally a div element. - * @param {DataSet | DataView | Array} [data] - * @param {Object} [options] + * Select a value by its index + * @param {Number} index */ - function Graph3d(container, data, options) { - if (!(this instanceof Graph3d)) { - throw new SyntaxError('Constructor must be called with the new operator'); + Slider.prototype.setIndex = function(index) { + if (index < this.values.length) { + this.index = index; + + this.redraw(); + this.onChange(); + } + else { + throw 'Error: index out of range'; } + }; - // create variables and set default values - this.containerElement = container; - this.width = '400px'; - this.height = '400px'; - this.margin = 10; // px - this.defaultXCenter = '55%'; - this.defaultYCenter = '50%'; + /** + * retrieve the index of the currently selected vaue + * @return {Number} index + */ + Slider.prototype.getIndex = function() { + return this.index; + }; - this.xLabel = 'x'; - this.yLabel = 'y'; - this.zLabel = 'z'; - var passValueFn = function(v) { return v; }; - this.xValueLabel = passValueFn; - this.yValueLabel = passValueFn; - this.zValueLabel = passValueFn; - - this.filterLabel = 'time'; - this.legendLabel = 'value'; + /** + * retrieve the currently selected value + * @return {*} value + */ + Slider.prototype.get = function() { + return this.values[this.index]; + }; - this.style = Graph3d.STYLE.DOT; - this.showPerspective = true; - this.showGrid = true; - this.keepAspectRatio = true; - this.showShadow = false; - this.showGrayBottom = false; // TODO: this does not work correctly - this.showTooltip = false; - this.verticalRatio = 0.5; // 0.1 to 1.0, where 1.0 results in a 'cube' - this.animationInterval = 1000; // milliseconds - this.animationPreload = false; + Slider.prototype._onMouseDown = function(event) { + // only react on left mouse button down + var leftButtonDown = event.which ? (event.which === 1) : (event.button === 1); + if (!leftButtonDown) return; - this.camera = new Camera(); - this.eye = new Point3d(0, 0, -1); // TODO: set eye.z about 3/4 of the width of the window? + this.startClientX = event.clientX; + this.startSlideX = parseFloat(this.frame.slide.style.left); - this.dataTable = null; // The original data table - this.dataPoints = null; // The table with point objects + this.frame.style.cursor = 'move'; - // the column indexes - this.colX = undefined; - this.colY = undefined; - this.colZ = undefined; - this.colValue = undefined; - this.colFilter = undefined; + // add event listeners to handle moving the contents + // we store the function onmousemove and onmouseup in the graph, so we can + // remove the eventlisteners lateron in the function mouseUp() + var me = this; + this.onmousemove = function (event) {me._onMouseMove(event);}; + this.onmouseup = function (event) {me._onMouseUp(event);}; + util.addEventListener(document, 'mousemove', this.onmousemove); + util.addEventListener(document, 'mouseup', this.onmouseup); + util.preventDefault(event); + }; - this.xMin = 0; - this.xStep = undefined; // auto by default - this.xMax = 1; - this.yMin = 0; - this.yStep = undefined; // auto by default - this.yMax = 1; - this.zMin = 0; - this.zStep = undefined; // auto by default - this.zMax = 1; - this.valueMin = 0; - this.valueMax = 1; - this.xBarWidth = 1; - this.yBarWidth = 1; - // TODO: customize axis range - // constants - this.colorAxis = '#4D4D4D'; - this.colorGrid = '#D3D3D3'; - this.colorDot = '#7DC1FF'; - this.colorDotBorder = '#3267D2'; + Slider.prototype.leftToIndex = function (left) { + var width = parseFloat(this.frame.bar.style.width) - + this.frame.slide.clientWidth - 10; + var x = left - 3; - // create a frame and canvas - this.create(); + var index = Math.round(x / width * (this.values.length-1)); + if (index < 0) index = 0; + if (index > this.values.length-1) index = this.values.length-1; - // apply options (also when undefined) - this.setOptions(options); + return index; + }; - // apply data - if (data) { - this.setData(data); - } - } + Slider.prototype.indexToLeft = function (index) { + var width = parseFloat(this.frame.bar.style.width) - + this.frame.slide.clientWidth - 10; - // Extend Graph3d with an Emitter mixin - Emitter(Graph3d.prototype); + var x = index / (this.values.length-1) * width; + var left = x + 3; - /** - * Calculate the scaling values, dependent on the range in x, y, and z direction - */ - Graph3d.prototype._setScale = function() { - this.scale = new Point3d(1 / (this.xMax - this.xMin), - 1 / (this.yMax - this.yMin), - 1 / (this.zMax - this.zMin)); + return left; + }; - // keep aspect ration between x and y scale if desired - if (this.keepAspectRatio) { - if (this.scale.x < this.scale.y) { - //noinspection JSSuspiciousNameCombination - this.scale.y = this.scale.x; - } - else { - //noinspection JSSuspiciousNameCombination - this.scale.x = this.scale.y; - } - } - // scale the vertical axis - this.scale.z *= this.verticalRatio; - // TODO: can this be automated? verticalRatio? - // determine scale for (optional) value - this.scale.value = 1 / (this.valueMax - this.valueMin); + Slider.prototype._onMouseMove = function (event) { + var diff = event.clientX - this.startClientX; + var x = this.startSlideX + diff; - // position the camera arm - var xCenter = (this.xMax + this.xMin) / 2 * this.scale.x; - var yCenter = (this.yMax + this.yMin) / 2 * this.scale.y; - var zCenter = (this.zMax + this.zMin) / 2 * this.scale.z; - this.camera.setArmLocation(xCenter, yCenter, zCenter); + var index = this.leftToIndex(x); + + this.setIndex(index); + + util.preventDefault(); }; - /** - * Convert a 3D location to a 2D location on screen - * http://en.wikipedia.org/wiki/3D_projection - * @param {Point3d} point3d A 3D point with parameters x, y, z - * @return {Point2d} point2d A 2D point with parameters x, y - */ - Graph3d.prototype._convert3Dto2D = function(point3d) { - var translation = this._convertPointToTranslation(point3d); - return this._convertTranslationToScreen(translation); + Slider.prototype._onMouseUp = function (event) { + this.frame.style.cursor = 'auto'; + + // remove event listeners + util.removeEventListener(document, 'mousemove', this.onmousemove); + util.removeEventListener(document, 'mouseup', this.onmouseup); + + util.preventDefault(); }; + module.exports = Slider; + + +/***/ }, +/* 12 */ +/***/ function(module, exports, __webpack_require__) { + /** - * Convert a 3D location its translation seen from the camera - * http://en.wikipedia.org/wiki/3D_projection - * @param {Point3d} point3d A 3D point with parameters x, y, z - * @return {Point3d} translation A 3D point with parameters x, y, z This is - * the translation of the point, seen from the - * camera + * @prototype StepNumber + * The class StepNumber is an iterator for Numbers. You provide a start and end + * value, and a best step size. StepNumber itself rounds to fixed values and + * a finds the step that best fits the provided step. + * + * If prettyStep is true, the step size is chosen as close as possible to the + * provided step, but being a round value like 1, 2, 5, 10, 20, 50, .... + * + * Example usage: + * var step = new StepNumber(0, 10, 2.5, true); + * step.start(); + * while (!step.end()) { + * alert(step.getCurrent()); + * step.next(); + * } + * + * Version: 1.0 + * + * @param {Number} start The start value + * @param {Number} end The end value + * @param {Number} step Optional. Step size. Must be a positive value. + * @param {boolean} prettyStep Optional. If true, the step size is rounded + * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...) */ - Graph3d.prototype._convertPointToTranslation = function(point3d) { - var ax = point3d.x * this.scale.x, - ay = point3d.y * this.scale.y, - az = point3d.z * this.scale.z, - - cx = this.camera.getCameraLocation().x, - cy = this.camera.getCameraLocation().y, - cz = this.camera.getCameraLocation().z, + function StepNumber(start, end, step, prettyStep) { + // set default values + this._start = 0; + this._end = 0; + this._step = 1; + this.prettyStep = true; + this.precision = 5; - // calculate angles - sinTx = Math.sin(this.camera.getCameraRotation().x), - cosTx = Math.cos(this.camera.getCameraRotation().x), - sinTy = Math.sin(this.camera.getCameraRotation().y), - cosTy = Math.cos(this.camera.getCameraRotation().y), - sinTz = Math.sin(this.camera.getCameraRotation().z), - cosTz = Math.cos(this.camera.getCameraRotation().z), + this._current = 0; + this.setRange(start, end, step, prettyStep); + }; - // calculate translation - dx = cosTy * (sinTz * (ay - cy) + cosTz * (ax - cx)) - sinTy * (az - cz), - dy = sinTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) + cosTx * (cosTz * (ay - cy) - sinTz * (ax-cx)), - dz = cosTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) - sinTx * (cosTz * (ay - cy) - sinTz * (ax-cx)); + /** + * Set a new range: start, end and step. + * + * @param {Number} start The start value + * @param {Number} end The end value + * @param {Number} step Optional. Step size. Must be a positive value. + * @param {boolean} prettyStep Optional. If true, the step size is rounded + * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...) + */ + StepNumber.prototype.setRange = function(start, end, step, prettyStep) { + this._start = start ? start : 0; + this._end = end ? end : 0; - return new Point3d(dx, dy, dz); + this.setStep(step, prettyStep); }; /** - * Convert a translation point to a point on the screen - * @param {Point3d} translation A 3D point with parameters x, y, z This is - * the translation of the point, seen from the - * camera - * @return {Point2d} point2d A 2D point with parameters x, y + * Set a new step size + * @param {Number} step New step size. Must be a positive value + * @param {boolean} prettyStep Optional. If true, the provided step is rounded + * to a pretty step size (like 1, 2, 5, 10, 20, 50, ...) */ - Graph3d.prototype._convertTranslationToScreen = function(translation) { - var ex = this.eye.x, - ey = this.eye.y, - ez = this.eye.z, - dx = translation.x, - dy = translation.y, - dz = translation.z; + StepNumber.prototype.setStep = function(step, prettyStep) { + if (step === undefined || step <= 0) + return; - // calculate position on screen from translation - var bx; - var by; - if (this.showPerspective) { - bx = (dx - ex) * (ez / dz); - by = (dy - ey) * (ez / dz); - } - else { - bx = dx * -(ez / this.camera.getArmLength()); - by = dy * -(ez / this.camera.getArmLength()); - } + if (prettyStep !== undefined) + this.prettyStep = prettyStep; - // shift and scale the point to the center of the screen - // use the width of the graph to scale both horizontally and vertically. - return new Point2d( - this.xcenter + bx * this.frame.canvas.clientWidth, - this.ycenter - by * this.frame.canvas.clientWidth); + if (this.prettyStep === true) + this._step = StepNumber.calculatePrettyStep(step); + else + this._step = step; }; /** - * Set the background styling for the graph - * @param {string | {fill: string, stroke: string, strokeWidth: string}} backgroundColor + * Calculate a nice step size, closest to the desired step size. + * Returns a value in one of the ranges 1*10^n, 2*10^n, or 5*10^n, where n is an + * integer Number. For example 1, 2, 5, 10, 20, 50, etc... + * @param {Number} step Desired step size + * @return {Number} Nice step size */ - Graph3d.prototype._setBackgroundColor = function(backgroundColor) { - var fill = 'white'; - var stroke = 'gray'; - var strokeWidth = 1; + StepNumber.calculatePrettyStep = function (step) { + var log10 = function (x) {return Math.log(x) / Math.LN10;}; - if (typeof(backgroundColor) === 'string') { - fill = backgroundColor; - stroke = 'none'; - strokeWidth = 0; - } - else if (typeof(backgroundColor) === 'object') { - if (backgroundColor.fill !== undefined) fill = backgroundColor.fill; - if (backgroundColor.stroke !== undefined) stroke = backgroundColor.stroke; - if (backgroundColor.strokeWidth !== undefined) strokeWidth = backgroundColor.strokeWidth; - } - else if (backgroundColor === undefined) { - // use use defaults - } - else { - throw 'Unsupported type of backgroundColor'; - } + // try three steps (multiple of 1, 2, or 5 + var step1 = Math.pow(10, Math.round(log10(step))), + step2 = 2 * Math.pow(10, Math.round(log10(step / 2))), + step5 = 5 * Math.pow(10, Math.round(log10(step / 5))); - this.frame.style.backgroundColor = fill; - this.frame.style.borderColor = stroke; - this.frame.style.borderWidth = strokeWidth + 'px'; - this.frame.style.borderStyle = 'solid'; - }; + // choose the best step (closest to minimum step) + var prettyStep = step1; + if (Math.abs(step2 - step) <= Math.abs(prettyStep - step)) prettyStep = step2; + if (Math.abs(step5 - step) <= Math.abs(prettyStep - step)) prettyStep = step5; + // for safety + if (prettyStep <= 0) { + prettyStep = 1; + } - /// enumerate the available styles - Graph3d.STYLE = { - BAR: 0, - BARCOLOR: 1, - BARSIZE: 2, - DOT : 3, - DOTLINE : 4, - DOTCOLOR: 5, - DOTSIZE: 6, - GRID : 7, - LINE: 8, - SURFACE : 9 + return prettyStep; }; /** - * Retrieve the style index from given styleName - * @param {string} styleName Style name such as 'dot', 'grid', 'dot-line' - * @return {Number} styleNumber Enumeration value representing the style, or -1 - * when not found + * returns the current value of the step + * @return {Number} current value */ - Graph3d.prototype._getStyleNumber = function(styleName) { - switch (styleName) { - case 'dot': return Graph3d.STYLE.DOT; - case 'dot-line': return Graph3d.STYLE.DOTLINE; - case 'dot-color': return Graph3d.STYLE.DOTCOLOR; - case 'dot-size': return Graph3d.STYLE.DOTSIZE; - case 'line': return Graph3d.STYLE.LINE; - case 'grid': return Graph3d.STYLE.GRID; - case 'surface': return Graph3d.STYLE.SURFACE; - case 'bar': return Graph3d.STYLE.BAR; - case 'bar-color': return Graph3d.STYLE.BARCOLOR; - case 'bar-size': return Graph3d.STYLE.BARSIZE; - } + StepNumber.prototype.getCurrent = function () { + return parseFloat(this._current.toPrecision(this.precision)); + }; - return -1; + /** + * returns the current step size + * @return {Number} current step size + */ + StepNumber.prototype.getStep = function () { + return this._step; }; /** - * Determine the indexes of the data columns, based on the given style and data - * @param {DataSet} data - * @param {Number} style + * Set the current value to the largest value smaller than start, which + * is a multiple of the step size */ - Graph3d.prototype._determineColumnIndexes = function(data, style) { - if (this.style === Graph3d.STYLE.DOT || - this.style === Graph3d.STYLE.DOTLINE || - this.style === Graph3d.STYLE.LINE || - this.style === Graph3d.STYLE.GRID || - this.style === Graph3d.STYLE.SURFACE || - this.style === Graph3d.STYLE.BAR) { - // 3 columns expected, and optionally a 4th with filter values - this.colX = 0; - this.colY = 1; - this.colZ = 2; - this.colValue = undefined; + StepNumber.prototype.start = function() { + this._current = this._start - this._start % this._step; + }; - if (data.getNumberOfColumns() > 3) { - this.colFilter = 3; - } - } - else if (this.style === Graph3d.STYLE.DOTCOLOR || - this.style === Graph3d.STYLE.DOTSIZE || - this.style === Graph3d.STYLE.BARCOLOR || - this.style === Graph3d.STYLE.BARSIZE) { - // 4 columns expected, and optionally a 5th with filter values - this.colX = 0; - this.colY = 1; - this.colZ = 2; - this.colValue = 3; + /** + * Do a step, add the step size to the current value + */ + StepNumber.prototype.next = function () { + this._current += this._step; + }; - if (data.getNumberOfColumns() > 4) { - this.colFilter = 4; - } - } - else { - throw 'Unknown style "' + this.style + '"'; - } + /** + * Returns true whether the end is reached + * @return {boolean} True if the current value has passed the end value. + */ + StepNumber.prototype.end = function () { + return (this._current > this._end); }; - Graph3d.prototype.getNumberOfRows = function(data) { - return data.length; - } + module.exports = StepNumber; - Graph3d.prototype.getNumberOfColumns = function(data) { - var counter = 0; - for (var column in data[0]) { - if (data[0].hasOwnProperty(column)) { - counter++; - } - } - return counter; - } +/***/ }, +/* 13 */ +/***/ function(module, exports, __webpack_require__) { + var Emitter = __webpack_require__(56); + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var Range = __webpack_require__(17); + var Core = __webpack_require__(46); + var TimeAxis = __webpack_require__(35); + var CurrentTime = __webpack_require__(26); + var CustomTime = __webpack_require__(27); + var ItemSet = __webpack_require__(32); - Graph3d.prototype.getDistinctValues = function(data, column) { - var distinctValues = []; - for (var i = 0; i < data.length; i++) { - if (distinctValues.indexOf(data[i][column]) == -1) { - distinctValues.push(data[i][column]); - } + /** + * Create a timeline visualization + * @param {HTMLElement} container + * @param {vis.DataSet | vis.DataView | Array | google.visualization.DataTable} [items] + * @param {vis.DataSet | vis.DataView | Array | google.visualization.DataTable} [groups] + * @param {Object} [options] See Timeline.setOptions for the available options. + * @constructor + * @extends Core + */ + function Timeline (container, items, groups, options) { + if (!(this instanceof Timeline)) { + throw new SyntaxError('Constructor must be called with the new operator'); } - return distinctValues; - } - - Graph3d.prototype.getColumnRange = function(data,column) { - var minMax = {min:data[0][column],max:data[0][column]}; - for (var i = 0; i < data.length; i++) { - if (minMax.min > data[i][column]) { minMax.min = data[i][column]; } - if (minMax.max < data[i][column]) { minMax.max = data[i][column]; } + // if the third element is options, the forth is groups (optionally); + if (!(Array.isArray(groups) || groups instanceof DataSet || groups instanceof DataView) && groups instanceof Object) { + var forthArgument = options; + options = groups; + groups = forthArgument; } - return minMax; - }; - /** - * Initialize the data from the data table. Calculate minimum and maximum values - * and column index values - * @param {Array | DataSet | DataView} rawData The data containing the items for the Graph. - * @param {Number} style Style Number - */ - Graph3d.prototype._dataInitialize = function (rawData, style) { var me = this; + this.defaultOptions = { + start: null, + end: null, - // unsubscribe from the dataTable - if (this.dataSet) { - this.dataSet.off('*', this._onChange); - } - - if (rawData === undefined) - return; + autoResize: true, - if (Array.isArray(rawData)) { - rawData = new DataSet(rawData); - } + orientation: 'bottom', + width: null, + height: null, + maxHeight: null, + minHeight: null + }; + this.options = util.deepExtend({}, this.defaultOptions); - var data; - if (rawData instanceof DataSet || rawData instanceof DataView) { - data = rawData.get(); - } - else { - throw new Error('Array, DataSet, or DataView expected'); - } + // Create the DOM, props, and emitter + this._create(container); - if (data.length == 0) - return; + // all components listed here will be repainted automatically + this.components = []; - this.dataSet = rawData; - this.dataTable = data; + this.body = { + dom: this.dom, + domProps: this.props, + emitter: { + on: this.on.bind(this), + off: this.off.bind(this), + emit: this.emit.bind(this) + }, + hiddenDates: [], + util: { + getScale: function () { + return me.timeAxis.step.scale; + }, + getStep: function () { + return me.timeAxis.step.step; + }, - // subscribe to changes in the dataset - this._onChange = function () { - me.setData(me.dataSet); + toScreen: me._toScreen.bind(me), + toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width + toTime: me._toTime.bind(me), + toGlobalTime : me._toGlobalTime.bind(me) + } }; - this.dataSet.on('*', this._onChange); - // _determineColumnIndexes - // getNumberOfRows (points) - // getNumberOfColumns (x,y,z,v,t,t1,t2...) - // getDistinctValues (unique values?) - // getColumnRange - - // determine the location of x,y,z,value,filter columns - this.colX = 'x'; - this.colY = 'y'; - this.colZ = 'z'; - this.colValue = 'style'; - this.colFilter = 'filter'; + // range + this.range = new Range(this.body); + this.components.push(this.range); + this.body.range = this.range; + // time axis + this.timeAxis = new TimeAxis(this.body); + this.components.push(this.timeAxis); + // current time bar + this.currentTime = new CurrentTime(this.body); + this.components.push(this.currentTime); - // check if a filter column is provided - if (data[0].hasOwnProperty('filter')) { - if (this.dataFilter === undefined) { - this.dataFilter = new Filter(rawData, this.colFilter, this); - this.dataFilter.setOnLoadCallback(function() {me.redraw();}); - } - } + // custom time bar + // Note: time bar will be attached in this.setOptions when selected + this.customTime = new CustomTime(this.body); + this.components.push(this.customTime); + // item set + this.itemSet = new ItemSet(this.body); + this.components.push(this.itemSet); - var withBars = this.style == Graph3d.STYLE.BAR || - this.style == Graph3d.STYLE.BARCOLOR || - this.style == Graph3d.STYLE.BARSIZE; + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet - // determine barWidth from data - if (withBars) { - if (this.defaultXBarWidth !== undefined) { - this.xBarWidth = this.defaultXBarWidth; - } - else { - var dataX = this.getDistinctValues(data,this.colX); - this.xBarWidth = (dataX[1] - dataX[0]) || 1; - } + // apply options + if (options) { + this.setOptions(options); + } - if (this.defaultYBarWidth !== undefined) { - this.yBarWidth = this.defaultYBarWidth; - } - else { - var dataY = this.getDistinctValues(data,this.colY); - this.yBarWidth = (dataY[1] - dataY[0]) || 1; - } + // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! + if (groups) { + this.setGroups(groups); } - // calculate minimums and maximums - var xRange = this.getColumnRange(data,this.colX); - if (withBars) { - xRange.min -= this.xBarWidth / 2; - xRange.max += this.xBarWidth / 2; + // create itemset + if (items) { + this.setItems(items); } - this.xMin = (this.defaultXMin !== undefined) ? this.defaultXMin : xRange.min; - this.xMax = (this.defaultXMax !== undefined) ? this.defaultXMax : xRange.max; - if (this.xMax <= this.xMin) this.xMax = this.xMin + 1; - this.xStep = (this.defaultXStep !== undefined) ? this.defaultXStep : (this.xMax-this.xMin)/5; - - var yRange = this.getColumnRange(data,this.colY); - if (withBars) { - yRange.min -= this.yBarWidth / 2; - yRange.max += this.yBarWidth / 2; + else { + this._redraw(); } - this.yMin = (this.defaultYMin !== undefined) ? this.defaultYMin : yRange.min; - this.yMax = (this.defaultYMax !== undefined) ? this.defaultYMax : yRange.max; - if (this.yMax <= this.yMin) this.yMax = this.yMin + 1; - this.yStep = (this.defaultYStep !== undefined) ? this.defaultYStep : (this.yMax-this.yMin)/5; - - var zRange = this.getColumnRange(data,this.colZ); - this.zMin = (this.defaultZMin !== undefined) ? this.defaultZMin : zRange.min; - this.zMax = (this.defaultZMax !== undefined) ? this.defaultZMax : zRange.max; - if (this.zMax <= this.zMin) this.zMax = this.zMin + 1; - this.zStep = (this.defaultZStep !== undefined) ? this.defaultZStep : (this.zMax-this.zMin)/5; + } - if (this.colValue !== undefined) { - var valueRange = this.getColumnRange(data,this.colValue); - this.valueMin = (this.defaultValueMin !== undefined) ? this.defaultValueMin : valueRange.min; - this.valueMax = (this.defaultValueMax !== undefined) ? this.defaultValueMax : valueRange.max; - if (this.valueMax <= this.valueMin) this.valueMax = this.valueMin + 1; - } + // Extend the functionality from Core + Timeline.prototype = new Core(); - // set the scale dependent on the ranges. - this._setScale(); + /** + * Force a redraw. The size of all items will be recalculated. + * Can be useful to manually redraw when option autoResize=false and the window + * has been resized, or when the items CSS has been changed. + */ + Timeline.prototype.redraw = function() { + this.itemSet && this.itemSet.markDirty({refreshItems: true}); + this._redraw(); }; - - /** - * Filter the data based on the current filter - * @param {Array} data - * @return {Array} dataPoints Array with point objects which can be drawn on screen + * Set items + * @param {vis.DataSet | Array | google.visualization.DataTable | null} items */ - Graph3d.prototype._getDataPoints = function (data) { - // TODO: store the created matrix dataPoints in the filters instead of reloading each time - var x, y, i, z, obj, point; - - var dataPoints = []; - - if (this.style === Graph3d.STYLE.GRID || - this.style === Graph3d.STYLE.SURFACE) { - // copy all values from the google data table to a matrix - // the provided values are supposed to form a grid of (x,y) positions - - // create two lists with all present x and y values - var dataX = []; - var dataY = []; - for (i = 0; i < this.getNumberOfRows(data); i++) { - x = data[i][this.colX] || 0; - y = data[i][this.colY] || 0; + Timeline.prototype.setItems = function(items) { + var initialLoad = (this.itemsData == null); - if (dataX.indexOf(x) === -1) { - dataX.push(x); - } - if (dataY.indexOf(y) === -1) { - dataY.push(y); + // convert to type DataSet when needed + var newDataSet; + if (!items) { + newDataSet = null; + } + else if (items instanceof DataSet || items instanceof DataView) { + newDataSet = items; + } + else { + // turn an array into a dataset + newDataSet = new DataSet(items, { + type: { + start: 'Date', + end: 'Date' } - } - - var sortNumber = function (a, b) { - return a - b; - }; - dataX.sort(sortNumber); - dataY.sort(sortNumber); - - // create a grid, a 2d matrix, with all values. - var dataMatrix = []; // temporary data matrix - for (i = 0; i < data.length; i++) { - x = data[i][this.colX] || 0; - y = data[i][this.colY] || 0; - z = data[i][this.colZ] || 0; + }); + } - var xIndex = dataX.indexOf(x); // TODO: implement Array().indexOf() for Internet Explorer - var yIndex = dataY.indexOf(y); + // set items + this.itemsData = newDataSet; + this.itemSet && this.itemSet.setItems(newDataSet); - if (dataMatrix[xIndex] === undefined) { - dataMatrix[xIndex] = []; + if (initialLoad) { + if (this.options.start != undefined || this.options.end != undefined) { + if (this.options.start == undefined || this.options.end == undefined) { + var dataRange = this._getDataRange(); } - var point3d = new Point3d(); - point3d.x = x; - point3d.y = y; - point3d.z = z; - - obj = {}; - obj.point = point3d; - obj.trans = undefined; - obj.screen = undefined; - obj.bottom = new Point3d(x, y, this.zMin); - - dataMatrix[xIndex][yIndex] = obj; - - dataPoints.push(obj); - } + var start = this.options.start != undefined ? this.options.start : dataRange.start; + var end = this.options.end != undefined ? this.options.end : dataRange.end; - // fill in the pointers to the neighbors. - for (x = 0; x < dataMatrix.length; x++) { - for (y = 0; y < dataMatrix[x].length; y++) { - if (dataMatrix[x][y]) { - dataMatrix[x][y].pointRight = (x < dataMatrix.length-1) ? dataMatrix[x+1][y] : undefined; - dataMatrix[x][y].pointTop = (y < dataMatrix[x].length-1) ? dataMatrix[x][y+1] : undefined; - dataMatrix[x][y].pointCross = - (x < dataMatrix.length-1 && y < dataMatrix[x].length-1) ? - dataMatrix[x+1][y+1] : - undefined; - } - } + this.setWindow(start, end, {animate: false}); } - } - else { // 'dot', 'dot-line', etc. - // copy all values from the google data table to a list with Point3d objects - for (i = 0; i < data.length; i++) { - point = new Point3d(); - point.x = data[i][this.colX] || 0; - point.y = data[i][this.colY] || 0; - point.z = data[i][this.colZ] || 0; - - if (this.colValue !== undefined) { - point.value = data[i][this.colValue] || 0; - } - - obj = {}; - obj.point = point; - obj.bottom = new Point3d(point.x, point.y, this.zMin); - obj.trans = undefined; - obj.screen = undefined; - - dataPoints.push(obj); + else { + this.fit({animate: false}); } } - - return dataPoints; }; /** - * Create the main frame for the Graph3d. - * This function is executed once when a Graph3d object is created. The frame - * contains a canvas, and this canvas contains all objects like the axis and - * nodes. + * Set groups + * @param {vis.DataSet | Array | google.visualization.DataTable} groups */ - Graph3d.prototype.create = function () { - // remove all elements from the container element. - while (this.containerElement.hasChildNodes()) { - this.containerElement.removeChild(this.containerElement.firstChild); + Timeline.prototype.setGroups = function(groups) { + // convert to type DataSet when needed + var newDataSet; + if (!groups) { + newDataSet = null; } - - this.frame = document.createElement('div'); - this.frame.style.position = 'relative'; - this.frame.style.overflow = 'hidden'; - - // create the graph canvas (HTML canvas element) - this.frame.canvas = document.createElement( 'canvas' ); - this.frame.canvas.style.position = 'relative'; - this.frame.appendChild(this.frame.canvas); - //if (!this.frame.canvas.getContext) { - { - var noCanvas = document.createElement( 'DIV' ); - noCanvas.style.color = 'red'; - noCanvas.style.fontWeight = 'bold' ; - noCanvas.style.padding = '10px'; - noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; - this.frame.canvas.appendChild(noCanvas); + else if (groups instanceof DataSet || groups instanceof DataView) { + newDataSet = groups; + } + else { + // turn an array into a dataset + newDataSet = new DataSet(groups); } - this.frame.filter = document.createElement( 'div' ); - this.frame.filter.style.position = 'absolute'; - this.frame.filter.style.bottom = '0px'; - this.frame.filter.style.left = '0px'; - this.frame.filter.style.width = '100%'; - this.frame.appendChild(this.frame.filter); - - // add event listeners to handle moving and zooming the contents - var me = this; - var onmousedown = function (event) {me._onMouseDown(event);}; - var ontouchstart = function (event) {me._onTouchStart(event);}; - var onmousewheel = function (event) {me._onWheel(event);}; - var ontooltip = function (event) {me._onTooltip(event);}; - // TODO: these events are never cleaned up... can give a 'memory leakage' - - util.addEventListener(this.frame.canvas, 'keydown', onkeydown); - util.addEventListener(this.frame.canvas, 'mousedown', onmousedown); - util.addEventListener(this.frame.canvas, 'touchstart', ontouchstart); - util.addEventListener(this.frame.canvas, 'mousewheel', onmousewheel); - util.addEventListener(this.frame.canvas, 'mousemove', ontooltip); - - // add the new graph to the container element - this.containerElement.appendChild(this.frame); + this.groupsData = newDataSet; + this.itemSet.setGroups(newDataSet); }; - /** - * Set a new size for the graph - * @param {string} width Width in pixels or percentage (for example '800px' - * or '50%') - * @param {string} height Height in pixels or percentage (for example '400px' - * or '30%') + * Set selected items by their id. Replaces the current selection + * Unknown id's are silently ignored. + * @param {string[] | string} [ids] An array with zero or more id's of the items to be + * selected. If ids is an empty array, all items will be + * unselected. + * @param {Object} [options] Available options: + * `focus: boolean` + * If true, focus will be set to the selected item(s) + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. + * Only applicable when option focus is true. */ - Graph3d.prototype.setSize = function(width, height) { - this.frame.style.width = width; - this.frame.style.height = height; + Timeline.prototype.setSelection = function(ids, options) { + this.itemSet && this.itemSet.setSelection(ids); - this._resizeCanvas(); + if (options && options.focus) { + this.focus(ids, options); + } }; /** - * Resize the canvas to the current size of the frame + * Get the selected items by their id + * @return {Array} ids The ids of the selected items */ - Graph3d.prototype._resizeCanvas = function() { - this.frame.canvas.style.width = '100%'; - this.frame.canvas.style.height = '100%'; - - this.frame.canvas.width = this.frame.canvas.clientWidth; - this.frame.canvas.height = this.frame.canvas.clientHeight; - - // adjust with for margin - this.frame.filter.style.width = (this.frame.canvas.clientWidth - 2 * 10) + 'px'; + Timeline.prototype.getSelection = function() { + return this.itemSet && this.itemSet.getSelection() || []; }; /** - * Start animation + * Adjust the visible window such that the selected item (or multiple items) + * are centered on screen. + * @param {String | String[]} id An item id or array with item ids + * @param {Object} [options] Available options: + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. + * Only applicable when option focus is true */ - Graph3d.prototype.animationStart = function() { - if (!this.frame.filter || !this.frame.filter.slider) - throw 'No animation available'; + Timeline.prototype.focus = function(id, options) { + if (!this.itemsData || id == undefined) return; - this.frame.filter.slider.play(); - }; + var ids = Array.isArray(id) ? id : [id]; + // get the specified item(s) + var itemsData = this.itemsData.getDataSet().get(ids, { + type: { + start: 'Date', + end: 'Date' + } + }); - /** - * Stop animation - */ - Graph3d.prototype.animationStop = function() { - if (!this.frame.filter || !this.frame.filter.slider) return; + // calculate minimum start and maximum end of specified items + var start = null; + var end = null; + itemsData.forEach(function (itemData) { + var s = itemData.start.valueOf(); + var e = 'end' in itemData ? itemData.end.valueOf() : itemData.start.valueOf(); - this.frame.filter.slider.stop(); - }; + if (start === null || s < start) { + start = s; + } + if (end === null || e > end) { + end = e; + } + }); - /** - * Resize the center position based on the current values in this.defaultXCenter - * and this.defaultYCenter (which are strings with a percentage or a value - * in pixels). The center positions are the variables this.xCenter - * and this.yCenter - */ - Graph3d.prototype._resizeCenter = function() { - // calculate the horizontal center position - if (this.defaultXCenter.charAt(this.defaultXCenter.length-1) === '%') { - this.xcenter = - parseFloat(this.defaultXCenter) / 100 * - this.frame.canvas.clientWidth; - } - else { - this.xcenter = parseFloat(this.defaultXCenter); // supposed to be in px - } + if (start !== null && end !== null) { + // calculate the new middle and interval for the window + var middle = (start + end) / 2; + var interval = Math.max((this.range.end - this.range.start), (end - start) * 1.1); - // calculate the vertical center position - if (this.defaultYCenter.charAt(this.defaultYCenter.length-1) === '%') { - this.ycenter = - parseFloat(this.defaultYCenter) / 100 * - (this.frame.canvas.clientHeight - this.frame.filter.clientHeight); - } - else { - this.ycenter = parseFloat(this.defaultYCenter); // supposed to be in px + var animate = (options && options.animate !== undefined) ? options.animate : true; + this.range.setRange(middle - interval / 2, middle + interval / 2, animate); } }; /** - * Set the rotation and distance of the camera - * @param {Object} pos An object with the camera position. The object - * contains three parameters: - * - horizontal {Number} - * The horizontal rotation, between 0 and 2*PI. - * Optional, can be left undefined. - * - vertical {Number} - * The vertical rotation, between 0 and 0.5*PI - * if vertical=0.5*PI, the graph is shown from the - * top. Optional, can be left undefined. - * - distance {Number} - * The (normalized) distance of the camera to the - * center of the graph, a value between 0.71 and 5.0. - * Optional, can be left undefined. + * Get the data range of the item set. + * @returns {{min: Date, max: Date}} range A range with a start and end Date. + * When no minimum is found, min==null + * When no maximum is found, max==null */ - Graph3d.prototype.setCameraPosition = function(pos) { - if (pos === undefined) { - return; - } + Timeline.prototype.getItemRange = function() { + // calculate min from start filed + var dataset = this.itemsData.getDataSet(), + min = null, + max = null; - if (pos.horizontal !== undefined && pos.vertical !== undefined) { - this.camera.setArmRotation(pos.horizontal, pos.vertical); - } + if (dataset) { + // calculate the minimum value of the field 'start' + var minItem = dataset.min('start'); + min = minItem ? util.convert(minItem.start, 'Date').valueOf() : null; + // Note: we convert first to Date and then to number because else + // a conversion from ISODate to Number will fail - if (pos.distance !== undefined) { - this.camera.setArmLength(pos.distance); + // calculate maximum value of fields 'start' and 'end' + var maxStartItem = dataset.max('start'); + if (maxStartItem) { + max = util.convert(maxStartItem.start, 'Date').valueOf(); + } + var maxEndItem = dataset.max('end'); + if (maxEndItem) { + if (max == null) { + max = util.convert(maxEndItem.end, 'Date').valueOf(); + } + else { + max = Math.max(max, util.convert(maxEndItem.end, 'Date').valueOf()); + } + } } - this.redraw(); + return { + min: (min != null) ? new Date(min) : null, + max: (max != null) ? new Date(max) : null + }; }; - /** - * Retrieve the current camera rotation - * @return {object} An object with parameters horizontal, vertical, and - * distance - */ - Graph3d.prototype.getCameraPosition = function() { - var pos = this.camera.getArmRotation(); - pos.distance = this.camera.getArmLength(); - return pos; - }; - - /** - * Load data into the 3D Graph - */ - Graph3d.prototype._readData = function(data) { - // read the data - this._dataInitialize(data, this.style); + module.exports = Timeline; - if (this.dataFilter) { - // apply filtering - this.dataPoints = this.dataFilter._getDataPoints(); - } - else { - // no filtering. load all data - this.dataPoints = this._getDataPoints(this.dataTable); - } +/***/ }, +/* 14 */ +/***/ function(module, exports, __webpack_require__) { - // draw the filter - this._redrawFilter(); - }; + var Emitter = __webpack_require__(56); + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var Range = __webpack_require__(17); + var Core = __webpack_require__(46); + var TimeAxis = __webpack_require__(35); + var CurrentTime = __webpack_require__(26); + var CustomTime = __webpack_require__(27); + var LineGraph = __webpack_require__(34); /** - * Replace the dataset of the Graph3d - * @param {Array | DataSet | DataView} data + * Create a timeline visualization + * @param {HTMLElement} container + * @param {vis.DataSet | Array | google.visualization.DataTable} [items] + * @param {Object} [options] See Graph2d.setOptions for the available options. + * @constructor + * @extends Core */ - Graph3d.prototype.setData = function (data) { - this._readData(data); - this.redraw(); - - // start animation when option is true - if (this.animationAutoStart && this.dataFilter) { - this.animationStart(); + function Graph2d (container, items, groups, options) { + // if the third element is options, the forth is groups (optionally); + if (!(Array.isArray(groups) || groups instanceof DataSet) && groups instanceof Object) { + var forthArgument = options; + options = groups; + groups = forthArgument; } - }; - - /** - * Update the options. Options will be merged with current options - * @param {Object} options - */ - Graph3d.prototype.setOptions = function (options) { - var cameraPosition = undefined; - this.animationStop(); + var me = this; + this.defaultOptions = { + start: null, + end: null, - if (options !== undefined) { - // retrieve parameter values - if (options.width !== undefined) this.width = options.width; - if (options.height !== undefined) this.height = options.height; + autoResize: true, - if (options.xCenter !== undefined) this.defaultXCenter = options.xCenter; - if (options.yCenter !== undefined) this.defaultYCenter = options.yCenter; + orientation: 'bottom', + width: null, + height: null, + maxHeight: null, + minHeight: null + }; + this.options = util.deepExtend({}, this.defaultOptions); - if (options.filterLabel !== undefined) this.filterLabel = options.filterLabel; - if (options.legendLabel !== undefined) this.legendLabel = options.legendLabel; - if (options.xLabel !== undefined) this.xLabel = options.xLabel; - if (options.yLabel !== undefined) this.yLabel = options.yLabel; - if (options.zLabel !== undefined) this.zLabel = options.zLabel; + // Create the DOM, props, and emitter + this._create(container); - if (options.xValueLabel !== undefined) this.xValueLabel = options.xValueLabel; - if (options.yValueLabel !== undefined) this.yValueLabel = options.yValueLabel; - if (options.zValueLabel !== undefined) this.zValueLabel = options.zValueLabel; + // all components listed here will be repainted automatically + this.components = []; - if (options.style !== undefined) { - var styleNumber = this._getStyleNumber(options.style); - if (styleNumber !== -1) { - this.style = styleNumber; - } - } - if (options.showGrid !== undefined) this.showGrid = options.showGrid; - if (options.showPerspective !== undefined) this.showPerspective = options.showPerspective; - if (options.showShadow !== undefined) this.showShadow = options.showShadow; - if (options.tooltip !== undefined) this.showTooltip = options.tooltip; - if (options.showAnimationControls !== undefined) this.showAnimationControls = options.showAnimationControls; - if (options.keepAspectRatio !== undefined) this.keepAspectRatio = options.keepAspectRatio; - if (options.verticalRatio !== undefined) this.verticalRatio = options.verticalRatio; + this.body = { + dom: this.dom, + domProps: this.props, + emitter: { + on: this.on.bind(this), + off: this.off.bind(this), + emit: this.emit.bind(this) + }, + hiddenDates: [], + util: { + toScreen: me._toScreen.bind(me), + toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width + toTime: me._toTime.bind(me), + toGlobalTime : me._toGlobalTime.bind(me) + } + }; - if (options.animationInterval !== undefined) this.animationInterval = options.animationInterval; - if (options.animationPreload !== undefined) this.animationPreload = options.animationPreload; - if (options.animationAutoStart !== undefined)this.animationAutoStart = options.animationAutoStart; + // range + this.range = new Range(this.body); + this.components.push(this.range); + this.body.range = this.range; - if (options.xBarWidth !== undefined) this.defaultXBarWidth = options.xBarWidth; - if (options.yBarWidth !== undefined) this.defaultYBarWidth = options.yBarWidth; + // time axis + this.timeAxis = new TimeAxis(this.body); + this.components.push(this.timeAxis); + //this.body.util.snap = this.timeAxis.snap.bind(this.timeAxis); - if (options.xMin !== undefined) this.defaultXMin = options.xMin; - if (options.xStep !== undefined) this.defaultXStep = options.xStep; - if (options.xMax !== undefined) this.defaultXMax = options.xMax; - if (options.yMin !== undefined) this.defaultYMin = options.yMin; - if (options.yStep !== undefined) this.defaultYStep = options.yStep; - if (options.yMax !== undefined) this.defaultYMax = options.yMax; - if (options.zMin !== undefined) this.defaultZMin = options.zMin; - if (options.zStep !== undefined) this.defaultZStep = options.zStep; - if (options.zMax !== undefined) this.defaultZMax = options.zMax; - if (options.valueMin !== undefined) this.defaultValueMin = options.valueMin; - if (options.valueMax !== undefined) this.defaultValueMax = options.valueMax; + // current time bar + this.currentTime = new CurrentTime(this.body); + this.components.push(this.currentTime); - if (options.cameraPosition !== undefined) cameraPosition = options.cameraPosition; + // custom time bar + // Note: time bar will be attached in this.setOptions when selected + this.customTime = new CustomTime(this.body); + this.components.push(this.customTime); - if (cameraPosition !== undefined) { - this.camera.setArmRotation(cameraPosition.horizontal, cameraPosition.vertical); - this.camera.setArmLength(cameraPosition.distance); - } - else { - this.camera.setArmRotation(1.0, 0.5); - this.camera.setArmLength(1.7); - } - } + // item set + this.linegraph = new LineGraph(this.body); + this.components.push(this.linegraph); - this._setBackgroundColor(options && options.backgroundColor); + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet - this.setSize(this.width, this.height); + // apply options + if (options) { + this.setOptions(options); + } - // re-load the data - if (this.dataTable) { - this.setData(this.dataTable); + // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! + if (groups) { + this.setGroups(groups); } - // start animation when option is true - if (this.animationAutoStart && this.dataFilter) { - this.animationStart(); + // create itemset + if (items) { + this.setItems(items); } - }; + else { + this._redraw(); + } + } + + // Extend the functionality from Core + Graph2d.prototype = new Core(); /** - * Redraw the Graph. + * Set items + * @param {vis.DataSet | Array | google.visualization.DataTable | null} items */ - Graph3d.prototype.redraw = function() { - if (this.dataPoints === undefined) { - throw 'Error: graph data not initialized'; - } - - this._resizeCanvas(); - this._resizeCenter(); - this._redrawSlider(); - this._redrawClear(); - this._redrawAxis(); + Graph2d.prototype.setItems = function(items) { + var initialLoad = (this.itemsData == null); - if (this.style === Graph3d.STYLE.GRID || - this.style === Graph3d.STYLE.SURFACE) { - this._redrawDataGrid(); - } - else if (this.style === Graph3d.STYLE.LINE) { - this._redrawDataLine(); + // convert to type DataSet when needed + var newDataSet; + if (!items) { + newDataSet = null; } - else if (this.style === Graph3d.STYLE.BAR || - this.style === Graph3d.STYLE.BARCOLOR || - this.style === Graph3d.STYLE.BARSIZE) { - this._redrawDataBar(); + else if (items instanceof DataSet || items instanceof DataView) { + newDataSet = items; } else { - // style is DOT, DOTLINE, DOTCOLOR, DOTSIZE - this._redrawDataDot(); + // turn an array into a dataset + newDataSet = new DataSet(items, { + type: { + start: 'Date', + end: 'Date' + } + }); } - this._redrawInfo(); - this._redrawLegend(); + // set items + this.itemsData = newDataSet; + this.linegraph && this.linegraph.setItems(newDataSet); + + if (initialLoad) { + if (this.options.start != undefined || this.options.end != undefined) { + var start = this.options.start != undefined ? this.options.start : null; + var end = this.options.end != undefined ? this.options.end : null; + + this.setWindow(start, end, {animate: false}); + } + else { + this.fit({animate: false}); + } + } }; /** - * Clear the canvas before redrawing + * Set groups + * @param {vis.DataSet | Array | google.visualization.DataTable} groups */ - Graph3d.prototype._redrawClear = function() { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); + Graph2d.prototype.setGroups = function(groups) { + // convert to type DataSet when needed + var newDataSet; + if (!groups) { + newDataSet = null; + } + else if (groups instanceof DataSet || groups instanceof DataView) { + newDataSet = groups; + } + else { + // turn an array into a dataset + newDataSet = new DataSet(groups); + } - ctx.clearRect(0, 0, canvas.width, canvas.height); + this.groupsData = newDataSet; + this.linegraph.setGroups(newDataSet); }; - /** - * Redraw the legend showing the colors + * Returns an object containing an SVG element with the icon of the group (size determined by iconWidth and iconHeight), the label of the group (content) and the yAxisOrientation of the group (left or right). + * @param groupId + * @param width + * @param height */ - Graph3d.prototype._redrawLegend = function() { - var y; - - if (this.style === Graph3d.STYLE.DOTCOLOR || - this.style === Graph3d.STYLE.DOTSIZE) { - - var dotSize = this.frame.clientWidth * 0.02; - - var widthMin, widthMax; - if (this.style === Graph3d.STYLE.DOTSIZE) { - widthMin = dotSize / 2; // px - widthMax = dotSize / 2 + dotSize * 2; // Todo: put this in one function - } - else { - widthMin = 20; // px - widthMax = 20; // px - } - - var height = Math.max(this.frame.clientHeight * 0.25, 100); - var top = this.margin; - var right = this.frame.clientWidth - this.margin; - var left = right - widthMax; - var bottom = top + height; + Graph2d.prototype.getLegend = function(groupId, width, height) { + if (width === undefined) {width = 15;} + if (height === undefined) {height = 15;} + if (this.linegraph.groups[groupId] !== undefined) { + return this.linegraph.groups[groupId].getLegend(width,height); } - - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); - ctx.lineWidth = 1; - ctx.font = '14px arial'; // TODO: put in options - - if (this.style === Graph3d.STYLE.DOTCOLOR) { - // draw the color bar - var ymin = 0; - var ymax = height; // Todo: make height customizable - for (y = ymin; y < ymax; y++) { - var f = (y - ymin) / (ymax - ymin); - - //var width = (dotSize / 2 + (1-f) * dotSize * 2); // Todo: put this in one function - var hue = f * 240; - var color = this._hsv2rgb(hue, 1, 1); - - ctx.strokeStyle = color; - ctx.beginPath(); - ctx.moveTo(left, top + y); - ctx.lineTo(right, top + y); - ctx.stroke(); - } - - ctx.strokeStyle = this.colorAxis; - ctx.strokeRect(left, top, widthMax, height); + else { + return "cannot find group:" + groupId; } + } - if (this.style === Graph3d.STYLE.DOTSIZE) { - // draw border around color bar - ctx.strokeStyle = this.colorAxis; - ctx.fillStyle = this.colorDot; - ctx.beginPath(); - ctx.moveTo(left, top); - ctx.lineTo(right, top); - ctx.lineTo(right - widthMax + widthMin, bottom); - ctx.lineTo(left, bottom); - ctx.closePath(); - ctx.fill(); - ctx.stroke(); + /** + * This checks if the visible option of the supplied group (by ID) is true or false. + * @param groupId + * @returns {*} + */ + Graph2d.prototype.isGroupVisible = function(groupId) { + if (this.linegraph.groups[groupId] !== undefined) { + return (this.linegraph.groups[groupId].visible && (this.linegraph.options.groups.visibility[groupId] === undefined || this.linegraph.options.groups.visibility[groupId] == true)); } + else { + return false; + } + } - if (this.style === Graph3d.STYLE.DOTCOLOR || - this.style === Graph3d.STYLE.DOTSIZE) { - // print values along the color bar - var gridLineLen = 5; // px - var step = new StepNumber(this.valueMin, this.valueMax, (this.valueMax-this.valueMin)/5, true); - step.start(); - if (step.getCurrent() < this.valueMin) { - step.next(); - } - while (!step.end()) { - y = bottom - (step.getCurrent() - this.valueMin) / (this.valueMax - this.valueMin) * height; - - ctx.beginPath(); - ctx.moveTo(left - gridLineLen, y); - ctx.lineTo(left, y); - ctx.stroke(); - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = this.colorAxis; - ctx.fillText(step.getCurrent(), left - 2 * gridLineLen, y); + /** + * Get the data range of the item set. + * @returns {{min: Date, max: Date}} range A range with a start and end Date. + * When no minimum is found, min==null + * When no maximum is found, max==null + */ + Graph2d.prototype.getItemRange = function() { + var min = null; + var max = null; - step.next(); + // calculate min from start filed + for (var groupId in this.linegraph.groups) { + if (this.linegraph.groups.hasOwnProperty(groupId)) { + if (this.linegraph.groups[groupId].visible == true) { + for (var i = 0; i < this.linegraph.groups[groupId].itemsData.length; i++) { + var item = this.linegraph.groups[groupId].itemsData[i]; + var value = util.convert(item.x, 'Date').valueOf(); + min = min == null ? value : min > value ? value : min; + max = max == null ? value : max < value ? value : max; + } + } } - - ctx.textAlign = 'right'; - ctx.textBaseline = 'top'; - var label = this.legendLabel; - ctx.fillText(label, right, bottom + this.margin); } + + return { + min: (min != null) ? new Date(min) : null, + max: (max != null) ? new Date(max) : null + }; }; - /** - * Redraw the filter - */ - Graph3d.prototype._redrawFilter = function() { - this.frame.filter.innerHTML = ''; - if (this.dataFilter) { - var options = { - 'visible': this.showAnimationControls - }; - var slider = new Slider(this.frame.filter, options); - this.frame.filter.slider = slider; - // TODO: css here is not nice here... - this.frame.filter.style.padding = '10px'; - //this.frame.filter.style.backgroundColor = '#EFEFEF'; + module.exports = Graph2d; - slider.setValues(this.dataFilter.values); - slider.setPlayInterval(this.animationInterval); - // create an event handler - var me = this; - var onchange = function () { - var index = slider.getIndex(); +/***/ }, +/* 15 */ +/***/ function(module, exports, __webpack_require__) { - me.dataFilter.selectValue(index); - me.dataPoints = me.dataFilter._getDataPoints(); + /** + * Created by Alex on 10/3/2014. + */ + var moment = __webpack_require__(44); - me.redraw(); - }; - slider.setOnChangeCallback(onchange); - } - else { - this.frame.filter.slider = undefined; - } - }; /** - * Redraw the slider + * used in Core to convert the options into a volatile variable + * + * @param Core */ - Graph3d.prototype._redrawSlider = function() { - if ( this.frame.filter.slider !== undefined) { - this.frame.filter.slider.redraw(); + exports.convertHiddenOptions = function(body, hiddenDates) { + body.hiddenDates = []; + if (hiddenDates) { + if (Array.isArray(hiddenDates) == true) { + for (var i = 0; i < hiddenDates.length; i++) { + if (hiddenDates[i].repeat === undefined) { + var dateItem = {}; + dateItem.start = moment(hiddenDates[i].start).toDate().valueOf(); + dateItem.end = moment(hiddenDates[i].end).toDate().valueOf(); + body.hiddenDates.push(dateItem); + } + } + body.hiddenDates.sort(function (a, b) { + return a.start - b.start; + }); // sort by start time + } } }; /** - * Redraw common information + * create new entrees for the repeating hidden dates + * @param body + * @param hiddenDates */ - Graph3d.prototype._redrawInfo = function() { - if (this.dataFilter) { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); + exports.updateHiddenDates = function (body, hiddenDates) { + if (hiddenDates && body.domProps.centerContainer.width !== undefined) { + exports.convertHiddenOptions(body, hiddenDates); - ctx.font = '14px arial'; // TODO: put in options - ctx.lineStyle = 'gray'; - ctx.fillStyle = 'gray'; - ctx.textAlign = 'left'; - ctx.textBaseline = 'top'; + var start = moment(body.range.start); + var end = moment(body.range.end); - var x = this.margin; - var y = this.margin; - ctx.fillText(this.dataFilter.getLabel() + ': ' + this.dataFilter.getSelectedValue(), x, y); - } - }; + var totalRange = (body.range.end - body.range.start); + var pixelTime = totalRange / body.domProps.centerContainer.width; + for (var i = 0; i < hiddenDates.length; i++) { + if (hiddenDates[i].repeat !== undefined) { + var startDate = moment(hiddenDates[i].start); + var endDate = moment(hiddenDates[i].end); - /** - * Redraw the axis - */ - Graph3d.prototype._redrawAxis = function() { - var canvas = this.frame.canvas, - ctx = canvas.getContext('2d'), - from, to, step, prettyStep, - text, xText, yText, zText, - offset, xOffset, yOffset, - xMin2d, xMax2d; + if (startDate._d == "Invalid Date") { + throw new Error("Supplied start date is not valid: " + hiddenDates[i].start); + } + if (endDate._d == "Invalid Date") { + throw new Error("Supplied end date is not valid: " + hiddenDates[i].end); + } - // TODO: get the actual rendered style of the containerElement - //ctx.font = this.containerElement.style.font; - ctx.font = 24 / this.camera.getArmLength() + 'px arial'; + var duration = endDate - startDate; + if (duration >= 4 * pixelTime) { - // calculate the length for the short grid lines - var gridLenX = 0.025 / this.scale.x; - var gridLenY = 0.025 / this.scale.y; - var textMargin = 5 / this.camera.getArmLength(); // px - var armAngle = this.camera.getArmRotation().horizontal; + var offset = 0; + var runUntil = end.clone(); + switch (hiddenDates[i].repeat) { + case "daily": // case of time + if (startDate.day() != endDate.day()) { + offset = 1; + } + startDate.dayOfYear(start.dayOfYear()); + startDate.year(start.year()); + startDate.subtract(7,'days'); - // draw x-grid lines - ctx.lineWidth = 1; - prettyStep = (this.defaultXStep === undefined); - step = new StepNumber(this.xMin, this.xMax, this.xStep, prettyStep); - step.start(); - if (step.getCurrent() < this.xMin) { - step.next(); - } - while (!step.end()) { - var x = step.getCurrent(); + endDate.dayOfYear(start.dayOfYear()); + endDate.year(start.year()); + endDate.subtract(7 - offset,'days'); - if (this.showGrid) { - from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorGrid; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - } - else { - from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(x, this.yMin+gridLenX, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); + runUntil.add(1, 'weeks'); + break; + case "weekly": + var dayOffset = endDate.diff(startDate,'days') + var day = startDate.day(); - from = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); - to = this._convert3Dto2D(new Point3d(x, this.yMax-gridLenX, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - } + // set the start date to the range.start + startDate.date(start.date()); + startDate.month(start.month()); + startDate.year(start.year()); + endDate = startDate.clone(); - yText = (Math.cos(armAngle) > 0) ? this.yMin : this.yMax; - text = this._convert3Dto2D(new Point3d(x, yText, this.zMin)); - if (Math.cos(armAngle * 2) > 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - text.y += textMargin; - } - else if (Math.sin(armAngle * 2) < 0){ - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - } - else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; - } - ctx.fillStyle = this.colorAxis; - ctx.fillText(' ' + this.xValueLabel(step.getCurrent()) + ' ', text.x, text.y); + // force + startDate.day(day); + endDate.day(day); + endDate.add(dayOffset,'days'); - step.next(); - } + startDate.subtract(1,'weeks'); + endDate.subtract(1,'weeks'); - // draw y-grid lines - ctx.lineWidth = 1; - prettyStep = (this.defaultYStep === undefined); - step = new StepNumber(this.yMin, this.yMax, this.yStep, prettyStep); - step.start(); - if (step.getCurrent() < this.yMin) { - step.next(); - } - while (!step.end()) { - if (this.showGrid) { - from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); - ctx.strokeStyle = this.colorGrid; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - } - else { - from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMin+gridLenY, step.getCurrent(), this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); + runUntil.add(1, 'weeks'); + break + case "monthly": + if (startDate.month() != endDate.month()) { + offset = 1; + } + startDate.month(start.month()); + startDate.year(start.year()); + startDate.subtract(1,'months'); - from = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMax-gridLenY, step.getCurrent(), this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - } + endDate.month(start.month()); + endDate.year(start.year()); + endDate.subtract(1,'months'); + endDate.add(offset,'months'); - xText = (Math.sin(armAngle ) > 0) ? this.xMin : this.xMax; - text = this._convert3Dto2D(new Point3d(xText, step.getCurrent(), this.zMin)); - if (Math.cos(armAngle * 2) < 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - text.y += textMargin; - } - else if (Math.sin(armAngle * 2) > 0){ - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; + runUntil.add(1, 'months'); + break; + case "yearly": + if (startDate.year() != endDate.year()) { + offset = 1; + } + startDate.year(start.year()); + startDate.subtract(1,'years'); + endDate.year(start.year()); + endDate.subtract(1,'years'); + endDate.add(offset,'years'); + + runUntil.add(1, 'years'); + break; + default: + console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:", hiddenDates[i].repeat); + return; + } + while (startDate < runUntil) { + body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()}); + switch (hiddenDates[i].repeat) { + case "daily": + startDate.add(1, 'days'); + endDate.add(1, 'days'); + break; + case "weekly": + startDate.add(1, 'weeks'); + endDate.add(1, 'weeks'); + break + case "monthly": + startDate.add(1, 'months'); + endDate.add(1, 'months'); + break; + case "yearly": + startDate.add(1, 'y'); + endDate.add(1, 'y'); + break; + default: + console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:", hiddenDates[i].repeat); + return; + } + } + body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()}); + } + } } - else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; + // remove duplicates, merge where possible + exports.removeDuplicates(body); + // ensure the new positions are not on hidden dates + var startHidden = exports.isHidden(body.range.start, body.hiddenDates); + var endHidden = exports.isHidden(body.range.end,body.hiddenDates); + var rangeStart = body.range.start; + var rangeEnd = body.range.end; + if (startHidden.hidden == true) {rangeStart = body.range.startToFront == true ? startHidden.startDate - 1 : startHidden.endDate + 1;} + if (endHidden.hidden == true) {rangeEnd = body.range.endToFront == true ? endHidden.startDate - 1 : endHidden.endDate + 1;} + if (startHidden.hidden == true || endHidden.hidden == true) { + body.range._applyRange(rangeStart, rangeEnd); } - ctx.fillStyle = this.colorAxis; - ctx.fillText(' ' + this.yValueLabel(step.getCurrent()) + ' ', text.x, text.y); - - step.next(); } - // draw z-grid lines and axis - ctx.lineWidth = 1; - prettyStep = (this.defaultZStep === undefined); - step = new StepNumber(this.zMin, this.zMax, this.zStep, prettyStep); - step.start(); - if (step.getCurrent() < this.zMin) { - step.next(); - } - xText = (Math.cos(armAngle ) > 0) ? this.xMin : this.xMax; - yText = (Math.sin(armAngle ) < 0) ? this.yMin : this.yMax; - while (!step.end()) { - // TODO: make z-grid lines really 3d? - from = this._convert3Dto2D(new Point3d(xText, yText, step.getCurrent())); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(from.x - textMargin, from.y); - ctx.stroke(); + } - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = this.colorAxis; - ctx.fillText(this.zValueLabel(step.getCurrent()) + ' ', from.x - 5, from.y); - step.next(); + /** + * remove duplicates from the hidden dates list. Duplicates are evil. They mess everything up. + * Scales with N^2 + * @param body + */ + exports.removeDuplicates = function(body) { + var hiddenDates = body.hiddenDates; + var safeDates = []; + for (var i = 0; i < hiddenDates.length; i++) { + for (var j = 0; j < hiddenDates.length; j++) { + if (i != j && hiddenDates[j].remove != true && hiddenDates[i].remove != true) { + // j inside i + if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) { + hiddenDates[j].remove = true; + } + // j start inside i + else if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].start <= hiddenDates[i].end) { + hiddenDates[i].end = hiddenDates[j].end; + hiddenDates[j].remove = true; + } + // j end inside i + else if (hiddenDates[j].end >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) { + hiddenDates[i].start = hiddenDates[j].start; + hiddenDates[j].remove = true; + } + } + } } - ctx.lineWidth = 1; - from = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); - to = this._convert3Dto2D(new Point3d(xText, yText, this.zMax)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - // draw x-axis - ctx.lineWidth = 1; - // line at yMin - xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); - xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(xMin2d.x, xMin2d.y); - ctx.lineTo(xMax2d.x, xMax2d.y); - ctx.stroke(); - // line at ymax - xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); - xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(xMin2d.x, xMin2d.y); - ctx.lineTo(xMax2d.x, xMax2d.y); - ctx.stroke(); + for (var i = 0; i < hiddenDates.length; i++) { + if (hiddenDates[i].remove !== true) { + safeDates.push(hiddenDates[i]); + } + } - // draw y-axis - ctx.lineWidth = 1; - // line at xMin - from = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - // line at xMax - from = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); + body.hiddenDates = safeDates; + body.hiddenDates.sort(function (a, b) { + return a.start - b.start; + }); // sort by start time + } - // draw x-label - var xLabel = this.xLabel; - if (xLabel.length > 0) { - yOffset = 0.1 / this.scale.y; - xText = (this.xMin + this.xMax) / 2; - yText = (Math.cos(armAngle) > 0) ? this.yMin - yOffset: this.yMax + yOffset; - text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); - if (Math.cos(armAngle * 2) > 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - } - else if (Math.sin(armAngle * 2) < 0){ - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - } - else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; - } - ctx.fillStyle = this.colorAxis; - ctx.fillText(xLabel, text.x, text.y); + exports.printDates = function(dates) { + for (var i =0; i < dates.length; i++) { + console.log(i, new Date(dates[i].start),new Date(dates[i].end), dates[i].start, dates[i].end, dates[i].remove); } + } - // draw y-label - var yLabel = this.yLabel; - if (yLabel.length > 0) { - xOffset = 0.1 / this.scale.x; - xText = (Math.sin(armAngle ) > 0) ? this.xMin - xOffset : this.xMax + xOffset; - yText = (this.yMin + this.yMax) / 2; - text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); - if (Math.cos(armAngle * 2) < 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - } - else if (Math.sin(armAngle * 2) > 0){ - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - } - else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; + /** + * Used in TimeStep to avoid the hidden times. + * @param timeStep + * @param previousTime + */ + exports.stepOverHiddenDates = function(timeStep, previousTime) { + var stepInHidden = false; + var currentValue = timeStep.current.valueOf(); + for (var i = 0; i < timeStep.hiddenDates.length; i++) { + var startDate = timeStep.hiddenDates[i].start; + var endDate = timeStep.hiddenDates[i].end; + if (currentValue >= startDate && currentValue < endDate) { + stepInHidden = true; + break; } - ctx.fillStyle = this.colorAxis; - ctx.fillText(yLabel, text.x, text.y); } - // draw z-label - var zLabel = this.zLabel; - if (zLabel.length > 0) { - offset = 30; // pixels. // TODO: relate to the max width of the values on the z axis? - xText = (Math.cos(armAngle ) > 0) ? this.xMin : this.xMax; - yText = (Math.sin(armAngle ) < 0) ? this.yMin : this.yMax; - zText = (this.zMin + this.zMax) / 2; - text = this._convert3Dto2D(new Point3d(xText, yText, zText)); - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = this.colorAxis; - ctx.fillText(zLabel, text.x - offset, text.y); + if (stepInHidden == true && currentValue < timeStep._end.valueOf() && currentValue != previousTime) { + var prevValue = moment(previousTime); + var newValue = moment(endDate); + //check if the next step should be major + if (prevValue.year() != newValue.year()) {timeStep.switchedYear = true;} + else if (prevValue.month() != newValue.month()) {timeStep.switchedMonth = true;} + else if (prevValue.dayOfYear() != newValue.dayOfYear()) {timeStep.switchedDay = true;} + + timeStep.current = newValue.toDate(); } }; + + ///** + // * Used in TimeStep to avoid the hidden times. + // * @param timeStep + // * @param previousTime + // */ + //exports.checkFirstStep = function(timeStep) { + // var stepInHidden = false; + // var currentValue = timeStep.current.valueOf(); + // for (var i = 0; i < timeStep.hiddenDates.length; i++) { + // var startDate = timeStep.hiddenDates[i].start; + // var endDate = timeStep.hiddenDates[i].end; + // if (currentValue >= startDate && currentValue < endDate) { + // stepInHidden = true; + // break; + // } + // } + // + // if (stepInHidden == true && currentValue <= timeStep._end.valueOf()) { + // var newValue = moment(endDate); + // timeStep.current = newValue.toDate(); + // } + //}; + /** - * Calculate the color based on the given value. - * @param {Number} H Hue, a value be between 0 and 360 - * @param {Number} S Saturation, a value between 0 and 1 - * @param {Number} V Value, a value between 0 and 1 + * replaces the Core toScreen methods + * @param Core + * @param time + * @param width + * @returns {number} */ - Graph3d.prototype._hsv2rgb = function(H, S, V) { - var R, G, B, C, Hi, X; + exports.toScreen = function(Core, time, width) { + if (Core.body.hiddenDates.length == 0) { + var conversion = Core.range.conversion(width); + return (time.valueOf() - conversion.offset) * conversion.scale; + } + else { + var hidden = exports.isHidden(time, Core.body.hiddenDates) + if (hidden.hidden == true) { + time = hidden.startDate; + } - C = V * S; - Hi = Math.floor(H/60); // hi = 0,1,2,3,4,5 - X = C * (1 - Math.abs(((H/60) % 2) - 1)); + var duration = exports.getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end); + time = exports.correctTimeForHidden(Core.body.hiddenDates, Core.range, time); - switch (Hi) { - case 0: R = C; G = X; B = 0; break; - case 1: R = X; G = C; B = 0; break; - case 2: R = 0; G = C; B = X; break; - case 3: R = 0; G = X; B = C; break; - case 4: R = X; G = 0; B = C; break; - case 5: R = C; G = 0; B = X; break; + var conversion = Core.range.conversion(width, duration); + return (time.valueOf() - conversion.offset) * conversion.scale; + } + }; - default: R = 0; G = 0; B = 0; break; + + /** + * Replaces the core toTime methods + * @param body + * @param range + * @param x + * @param width + * @returns {Date} + */ + exports.toTime = function(Core, x, width) { + if (Core.body.hiddenDates.length == 0) { + var conversion = Core.range.conversion(width); + return new Date(x / conversion.scale + conversion.offset); } + else { + var hiddenDuration = exports.getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end); + var totalDuration = Core.range.end - Core.range.start - hiddenDuration; + var partialDuration = totalDuration * x / width; + var accumulatedHiddenDuration = exports.getAccumulatedHiddenDuration(Core.body.hiddenDates, Core.range, partialDuration); - return 'RGB(' + parseInt(R*255) + ',' + parseInt(G*255) + ',' + parseInt(B*255) + ')'; + var newTime = new Date(accumulatedHiddenDuration + partialDuration + Core.range.start); + return newTime; + } }; /** - * Draw all datapoints as a grid - * This function can be used when the style is 'grid' + * Support function + * + * @param hiddenDates + * @param range + * @returns {number} */ - Graph3d.prototype._redrawDataGrid = function() { - var canvas = this.frame.canvas, - ctx = canvas.getContext('2d'), - point, right, top, cross, - i, - topSideVisible, fillStyle, strokeStyle, lineWidth, - h, s, v, zAvg; - + exports.getHiddenDurationBetween = function(hiddenDates, start, end) { + var duration = 0; + for (var i = 0; i < hiddenDates.length; i++) { + var startDate = hiddenDates[i].start; + var endDate = hiddenDates[i].end; + // if time after the cutout, and the + if (startDate >= start && endDate < end) { + duration += endDate - startDate; + } + } + return duration; + }; - if (this.dataPoints === undefined || this.dataPoints.length <= 0) - return; // TODO: throw exception? - // calculate the translations and screen position of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); + /** + * Support function + * @param hiddenDates + * @param range + * @param time + * @returns {{duration: number, time: *, offset: number}} + */ + exports.correctTimeForHidden = function(hiddenDates, range, time) { + time = moment(time).toDate().valueOf(); + time -= exports.getHiddenDurationBefore(hiddenDates,range,time); + return time; + }; - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; + exports.getHiddenDurationBefore = function(hiddenDates, range, time) { + var timeOffset = 0; + time = moment(time).toDate().valueOf(); - // calculate the translation of the point at the bottom (needed for sorting) - var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); - this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; + for (var i = 0; i < hiddenDates.length; i++) { + var startDate = hiddenDates[i].start; + var endDate = hiddenDates[i].end; + // if time after the cutout, and the + if (startDate >= range.start && endDate < range.end) { + if (time >= endDate) { + timeOffset += (endDate - startDate); + } + } } + return timeOffset; + } - // sort the points on depth of their (x,y) position (not on z) - var sortDepth = function (a, b) { - return b.dist - a.dist; - }; - this.dataPoints.sort(sortDepth); - - if (this.style === Graph3d.STYLE.SURFACE) { - for (i = 0; i < this.dataPoints.length; i++) { - point = this.dataPoints[i]; - right = this.dataPoints[i].pointRight; - top = this.dataPoints[i].pointTop; - cross = this.dataPoints[i].pointCross; + /** + * sum the duration from start to finish, including the hidden duration, + * until the required amount has been reached, return the accumulated hidden duration + * @param hiddenDates + * @param range + * @param time + * @returns {{duration: number, time: *, offset: number}} + */ + exports.getAccumulatedHiddenDuration = function(hiddenDates, range, requiredDuration) { + var hiddenDuration = 0; + var duration = 0; + var previousPoint = range.start; + //exports.printDates(hiddenDates) + for (var i = 0; i < hiddenDates.length; i++) { + var startDate = hiddenDates[i].start; + var endDate = hiddenDates[i].end; + // if time after the cutout, and the + if (startDate >= range.start && endDate < range.end) { + duration += startDate - previousPoint; + previousPoint = endDate; + if (duration >= requiredDuration) { + break; + } + else { + hiddenDuration += endDate - startDate; + } + } + } - if (point !== undefined && right !== undefined && top !== undefined && cross !== undefined) { + return hiddenDuration; + }; - if (this.showGrayBottom || this.showShadow) { - // calculate the cross product of the two vectors from center - // to left and right, in order to know whether we are looking at the - // bottom or at the top side. We can also use the cross product - // for calculating light intensity - var aDiff = Point3d.subtract(cross.trans, point.trans); - var bDiff = Point3d.subtract(top.trans, right.trans); - var crossproduct = Point3d.crossProduct(aDiff, bDiff); - var len = crossproduct.length(); - // FIXME: there is a bug with determining the surface side (shadow or colored) - topSideVisible = (crossproduct.z > 0); - } - else { - topSideVisible = true; - } - if (topSideVisible) { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - zAvg = (point.point.z + right.point.z + top.point.z + cross.point.z) / 4; - h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; - s = 1; // saturation - - if (this.showShadow) { - v = Math.min(1 + (crossproduct.x / len) / 2, 1); // value. TODO: scale - fillStyle = this._hsv2rgb(h, s, v); - strokeStyle = fillStyle; - } - else { - v = 1; - fillStyle = this._hsv2rgb(h, s, v); - strokeStyle = this.colorAxis; - } - } - else { - fillStyle = 'gray'; - strokeStyle = this.colorAxis; - } - lineWidth = 0.5; - - ctx.lineWidth = lineWidth; - ctx.fillStyle = fillStyle; - ctx.strokeStyle = strokeStyle; - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - ctx.lineTo(right.screen.x, right.screen.y); - ctx.lineTo(cross.screen.x, cross.screen.y); - ctx.lineTo(top.screen.x, top.screen.y); - ctx.closePath(); - ctx.fill(); - ctx.stroke(); + /** + * used to step over to either side of a hidden block. Correction is disabled on tablets, might be set to true + * @param hiddenDates + * @param time + * @param direction + * @param correctionEnabled + * @returns {*} + */ + exports.snapAwayFromHidden = function(hiddenDates, time, direction, correctionEnabled) { + var isHidden = exports.isHidden(time, hiddenDates); + if (isHidden.hidden == true) { + if (direction < 0) { + if (correctionEnabled == true) { + return isHidden.startDate - (isHidden.endDate - time) - 1; + } + else { + return isHidden.startDate - 1; } } - } - else { // grid style - for (i = 0; i < this.dataPoints.length; i++) { - point = this.dataPoints[i]; - right = this.dataPoints[i].pointRight; - top = this.dataPoints[i].pointTop; - - if (point !== undefined) { - if (this.showPerspective) { - lineWidth = 2 / -point.trans.z; - } - else { - lineWidth = 2 * -(this.eye.z / this.camera.getArmLength()); - } + else { + if (correctionEnabled == true) { + return isHidden.endDate + (time - isHidden.startDate) + 1; + } + else { + return isHidden.endDate + 1; } + } + } + else { + return time; + } - if (point !== undefined && right !== undefined) { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - zAvg = (point.point.z + right.point.z) / 2; - h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; + } - ctx.lineWidth = lineWidth; - ctx.strokeStyle = this._hsv2rgb(h, 1, 1); - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - ctx.lineTo(right.screen.x, right.screen.y); - ctx.stroke(); - } - if (point !== undefined && top !== undefined) { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - zAvg = (point.point.z + top.point.z) / 2; - h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; + /** + * Check if a time is hidden + * + * @param time + * @param hiddenDates + * @returns {{hidden: boolean, startDate: Window.start, endDate: *}} + */ + exports.isHidden = function(time, hiddenDates) { + for (var i = 0; i < hiddenDates.length; i++) { + var startDate = hiddenDates[i].start; + var endDate = hiddenDates[i].end; - ctx.lineWidth = lineWidth; - ctx.strokeStyle = this._hsv2rgb(h, 1, 1); - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - ctx.lineTo(top.screen.x, top.screen.y); - ctx.stroke(); - } + if (time >= startDate && time < endDate) { // if the start is entering a hidden zone + return {hidden: true, startDate: startDate, endDate: endDate}; + break; } } - }; + return {hidden: false, startDate: startDate, endDate: endDate}; + } +/***/ }, +/* 16 */ +/***/ function(module, exports, __webpack_require__) { /** - * Draw all datapoints as dots. - * This function can be used when the style is 'dot' or 'dot-line' + * @constructor DataStep + * The class DataStep is an iterator for data for the lineGraph. You provide a start data point and an + * end data point. The class itself determines the best scale (step size) based on the + * provided start Date, end Date, and minimumStep. + * + * If minimumStep is provided, the step size is chosen as close as possible + * to the minimumStep but larger than minimumStep. If minimumStep is not + * provided, the scale is set to 1 DAY. + * The minimumStep should correspond with the onscreen size of about 6 characters + * + * Alternatively, you can set a scale by hand. + * After creation, you can initialize the class by executing first(). Then you + * can iterate from the start date to the end date via next(). You can check if + * the end date is reached with the function hasNext(). After each step, you can + * retrieve the current date via getCurrent(). + * The DataStep has scales ranging from milliseconds, seconds, minutes, hours, + * days, to years. + * + * Version: 1.2 + * + * @param {Date} [start] The start date, for example new Date(2010, 9, 21) + * or new Date(2010, 9, 21, 23, 45, 00) + * @param {Date} [end] The end date + * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds */ - Graph3d.prototype._redrawDataDot = function() { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); - var i; + function DataStep(start, end, minimumStep, containerHeight, customRange, alignZeros) { + // variables + this.current = 0; - if (this.dataPoints === undefined || this.dataPoints.length <= 0) - return; // TODO: throw exception? + this.autoScale = true; + this.stepIndex = 0; + this.step = 1; + this.scale = 1; - // calculate the translations of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; + this.marginStart; + this.marginEnd; + this.deadSpace = 0; - // calculate the distance from the point at the bottom to the camera - var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); - this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; - } + this.majorSteps = [1, 2, 5, 10]; + this.minorSteps = [0.25, 0.5, 1, 2]; - // order the translated points by depth - var sortDepth = function (a, b) { - return b.dist - a.dist; - }; - this.dataPoints.sort(sortDepth); + this.alignZeros = alignZeros; - // draw the datapoints as colored circles - var dotSize = this.frame.clientWidth * 0.02; // px - for (i = 0; i < this.dataPoints.length; i++) { - var point = this.dataPoints[i]; + this.setRange(start, end, minimumStep, containerHeight, customRange); + } - if (this.style === Graph3d.STYLE.DOTLINE) { - // draw a vertical line from the bottom to the graph value - //var from = this._convert3Dto2D(new Point3d(point.point.x, point.point.y, this.zMin)); - var from = this._convert3Dto2D(point.bottom); - ctx.lineWidth = 1; - ctx.strokeStyle = this.colorGrid; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(point.screen.x, point.screen.y); - ctx.stroke(); - } - // calculate radius for the circle - var size; - if (this.style === Graph3d.STYLE.DOTSIZE) { - size = dotSize/2 + 2*dotSize * (point.point.value - this.valueMin) / (this.valueMax - this.valueMin); - } - else { - size = dotSize; - } - var radius; - if (this.showPerspective) { - radius = size / -point.trans.z; - } - else { - radius = size * -(this.eye.z / this.camera.getArmLength()); - } - if (radius < 0) { - radius = 0; - } + /** + * Set a new range + * If minimumStep is provided, the step size is chosen as close as possible + * to the minimumStep but larger than minimumStep. If minimumStep is not + * provided, the scale is set to 1 DAY. + * The minimumStep should correspond with the onscreen size of about 6 characters + * @param {Number} [start] The start date and time. + * @param {Number} [end] The end date and time. + * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds + */ + DataStep.prototype.setRange = function(start, end, minimumStep, containerHeight, customRange) { + this._start = customRange.min === undefined ? start : customRange.min; + this._end = customRange.max === undefined ? end : customRange.max; - var hue, color, borderColor; - if (this.style === Graph3d.STYLE.DOTCOLOR ) { - // calculate the color based on the value - hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); - } - else if (this.style === Graph3d.STYLE.DOTSIZE) { - color = this.colorDot; - borderColor = this.colorDotBorder; - } - else { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); - } + if (this._start == this._end) { + this._start -= 0.75; + this._end += 1; + } - // draw the circle - ctx.lineWidth = 1.0; - ctx.strokeStyle = borderColor; - ctx.fillStyle = color; - ctx.beginPath(); - ctx.arc(point.screen.x, point.screen.y, radius, 0, Math.PI*2, true); - ctx.fill(); - ctx.stroke(); + if (this.autoScale == true) { + this.setMinimumStep(minimumStep, containerHeight); } + + this.setFirst(customRange); }; /** - * Draw all datapoints as bars. - * This function can be used when the style is 'bar', 'bar-color', or 'bar-size' + * Automatically determine the scale that bests fits the provided minimum step + * @param {Number} [minimumStep] The minimum step size in milliseconds */ - Graph3d.prototype._redrawDataBar = function() { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); - var i, j, surface, corners; - - if (this.dataPoints === undefined || this.dataPoints.length <= 0) - return; // TODO: throw exception? + DataStep.prototype.setMinimumStep = function(minimumStep, containerHeight) { + // round to floor + var size = this._end - this._start; + var safeSize = size * 1.2; + var minimumStepValue = minimumStep * (safeSize / containerHeight); + var orderOfMagnitude = Math.round(Math.log(safeSize)/Math.LN10); - // calculate the translations of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; + var minorStepIdx = -1; + var magnitudefactor = Math.pow(10,orderOfMagnitude); - // calculate the distance from the point at the bottom to the camera - var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); - this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; + var start = 0; + if (orderOfMagnitude < 0) { + start = orderOfMagnitude; } - // order the translated points by depth - var sortDepth = function (a, b) { - return b.dist - a.dist; - }; - this.dataPoints.sort(sortDepth); - - // draw the datapoints as bars - var xWidth = this.xBarWidth / 2; - var yWidth = this.yBarWidth / 2; - for (i = 0; i < this.dataPoints.length; i++) { - var point = this.dataPoints[i]; - - // determine color - var hue, color, borderColor; - if (this.style === Graph3d.STYLE.BARCOLOR ) { - // calculate the color based on the value - hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); - } - else if (this.style === Graph3d.STYLE.BARSIZE) { - color = this.colorDot; - borderColor = this.colorDotBorder; - } - else { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); - } - - // calculate size for the bar - if (this.style === Graph3d.STYLE.BARSIZE) { - xWidth = (this.xBarWidth / 2) * ((point.point.value - this.valueMin) / (this.valueMax - this.valueMin) * 0.8 + 0.2); - yWidth = (this.yBarWidth / 2) * ((point.point.value - this.valueMin) / (this.valueMax - this.valueMin) * 0.8 + 0.2); - } - - // calculate all corner points - var me = this; - var point3d = point.point; - var top = [ - {point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, point3d.z)}, - {point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, point3d.z)}, - {point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, point3d.z)}, - {point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, point3d.z)} - ]; - var bottom = [ - {point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, this.zMin)}, - {point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, this.zMin)}, - {point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, this.zMin)}, - {point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, this.zMin)} - ]; - - // calculate screen location of the points - top.forEach(function (obj) { - obj.screen = me._convert3Dto2D(obj.point); - }); - bottom.forEach(function (obj) { - obj.screen = me._convert3Dto2D(obj.point); - }); - - // create five sides, calculate both corner points and center points - var surfaces = [ - {corners: top, center: Point3d.avg(bottom[0].point, bottom[2].point)}, - {corners: [top[0], top[1], bottom[1], bottom[0]], center: Point3d.avg(bottom[1].point, bottom[0].point)}, - {corners: [top[1], top[2], bottom[2], bottom[1]], center: Point3d.avg(bottom[2].point, bottom[1].point)}, - {corners: [top[2], top[3], bottom[3], bottom[2]], center: Point3d.avg(bottom[3].point, bottom[2].point)}, - {corners: [top[3], top[0], bottom[0], bottom[3]], center: Point3d.avg(bottom[0].point, bottom[3].point)} - ]; - point.surfaces = surfaces; - - // calculate the distance of each of the surface centers to the camera - for (j = 0; j < surfaces.length; j++) { - surface = surfaces[j]; - var transCenter = this._convertPointToTranslation(surface.center); - surface.dist = this.showPerspective ? transCenter.length() : -transCenter.z; - // TODO: this dept calculation doesn't work 100% of the cases due to perspective, - // but the current solution is fast/simple and works in 99.9% of all cases - // the issue is visible in example 14, with graph.setCameraPosition({horizontal: 2.97, vertical: 0.5, distance: 0.9}) + var solutionFound = false; + for (var i = start; Math.abs(i) <= Math.abs(orderOfMagnitude); i++) { + magnitudefactor = Math.pow(10,i); + for (var j = 0; j < this.minorSteps.length; j++) { + var stepSize = magnitudefactor * this.minorSteps[j]; + if (stepSize >= minimumStepValue) { + solutionFound = true; + minorStepIdx = j; + break; + } } - - // order the surfaces by their (translated) depth - surfaces.sort(function (a, b) { - var diff = b.dist - a.dist; - if (diff) return diff; - - // if equal depth, sort the top surface last - if (a.corners === top) return 1; - if (b.corners === top) return -1; - - // both are equal - return 0; - }); - - // draw the ordered surfaces - ctx.lineWidth = 1; - ctx.strokeStyle = borderColor; - ctx.fillStyle = color; - // NOTE: we start at j=2 instead of j=0 as we don't need to draw the two surfaces at the backside - for (j = 2; j < surfaces.length; j++) { - surface = surfaces[j]; - corners = surface.corners; - ctx.beginPath(); - ctx.moveTo(corners[3].screen.x, corners[3].screen.y); - ctx.lineTo(corners[0].screen.x, corners[0].screen.y); - ctx.lineTo(corners[1].screen.x, corners[1].screen.y); - ctx.lineTo(corners[2].screen.x, corners[2].screen.y); - ctx.lineTo(corners[3].screen.x, corners[3].screen.y); - ctx.fill(); - ctx.stroke(); + if (solutionFound == true) { + break; } } + this.stepIndex = minorStepIdx; + this.scale = magnitudefactor; + this.step = magnitudefactor * this.minorSteps[minorStepIdx]; }; + /** - * Draw a line through all datapoints. - * This function can be used when the style is 'line' + * Round the current date to the first minor date value + * This must be executed once when the current date is set to start Date */ - Graph3d.prototype._redrawDataLine = function() { - var canvas = this.frame.canvas, - ctx = canvas.getContext('2d'), - point, i; + DataStep.prototype.setFirst = function(customRange) { + if (customRange === undefined) { + customRange = {}; + } - if (this.dataPoints === undefined || this.dataPoints.length <= 0) - return; // TODO: throw exception? + var niceStart = customRange.min === undefined ? this._start - (this.scale * 2 * this.minorSteps[this.stepIndex]) : customRange.min; + var niceEnd = customRange.max === undefined ? this._end + (this.scale * this.minorSteps[this.stepIndex]) : customRange.max; - // calculate the translations of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); + this.marginEnd = customRange.max === undefined ? this.roundToMinor(niceEnd) : customRange.max; + this.marginStart = customRange.min === undefined ? this.roundToMinor(niceStart) : customRange.min; - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; + // if we need to align the zero's we need to make sure that there is a zero to use. + if (this.alignZeros == true && (this.marginEnd - this.marginStart) % this.step != 0) { + this.marginEnd += this.marginEnd % this.step; } - // start the line - if (this.dataPoints.length > 0) { - point = this.dataPoints[0]; + this.deadSpace = this.roundToMinor(niceEnd) - niceEnd + this.roundToMinor(niceStart) - niceStart; + this.marginRange = this.marginEnd - this.marginStart; - ctx.lineWidth = 1; // TODO: make customizable - ctx.strokeStyle = 'blue'; // TODO: make customizable - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - } - // draw the datapoints as colored circles - for (i = 1; i < this.dataPoints.length; i++) { - point = this.dataPoints[i]; - ctx.lineTo(point.screen.x, point.screen.y); - } + this.current = this.marginEnd; + }; - // finish the line - if (this.dataPoints.length > 0) { - ctx.stroke(); + DataStep.prototype.roundToMinor = function(value) { + var rounded = value - (value % (this.scale * this.minorSteps[this.stepIndex])); + if (value % (this.scale * this.minorSteps[this.stepIndex]) > 0.5 * (this.scale * this.minorSteps[this.stepIndex])) { + return rounded + (this.scale * this.minorSteps[this.stepIndex]); } + else { + return rounded; + } + } + + + /** + * Check if the there is a next step + * @return {boolean} true if the current date has not passed the end date + */ + DataStep.prototype.hasNext = function () { + return (this.current >= this.marginStart); }; /** - * Start a moving operation inside the provided parent element - * @param {Event} event The event that occurred (required for - * retrieving the mouse position) + * Do the next step */ - Graph3d.prototype._onMouseDown = function(event) { - event = event || window.event; + DataStep.prototype.next = function() { + var prev = this.current; + this.current -= this.step; - // check if mouse is still down (may be up when focus is lost for example - // in an iframe) - if (this.leftButtonDown) { - this._onMouseUp(event); + // safety mechanism: if current time is still unchanged, move to the end + if (this.current == prev) { + this.current = this._end; } + }; - // only react on left mouse button down - this.leftButtonDown = event.which ? (event.which === 1) : (event.button === 1); - if (!this.leftButtonDown && !this.touchDown) return; - - // get mouse position (different code for IE and all other browsers) - this.startMouseX = getMouseX(event); - this.startMouseY = getMouseY(event); + /** + * Do the next step + */ + DataStep.prototype.previous = function() { + this.current += this.step; + this.marginEnd += this.step; + this.marginRange = this.marginEnd - this.marginStart; + }; - this.startStart = new Date(this.start); - this.startEnd = new Date(this.end); - this.startArmRotation = this.camera.getArmRotation(); - - this.frame.style.cursor = 'move'; - - // add event listeners to handle moving the contents - // we store the function onmousemove and onmouseup in the graph, so we can - // remove the eventlisteners lateron in the function mouseUp() - var me = this; - this.onmousemove = function (event) {me._onMouseMove(event);}; - this.onmouseup = function (event) {me._onMouseUp(event);}; - util.addEventListener(document, 'mousemove', me.onmousemove); - util.addEventListener(document, 'mouseup', me.onmouseup); - util.preventDefault(event); - }; /** - * Perform moving operating. - * This function activated from within the funcion Graph.mouseDown(). - * @param {Event} event Well, eehh, the event + * Get the current datetime + * @return {String} current The current date */ - Graph3d.prototype._onMouseMove = function (event) { - event = event || window.event; - - // calculate change in mouse position - var diffX = parseFloat(getMouseX(event)) - this.startMouseX; - var diffY = parseFloat(getMouseY(event)) - this.startMouseY; - - var horizontalNew = this.startArmRotation.horizontal + diffX / 200; - var verticalNew = this.startArmRotation.vertical + diffY / 200; - - var snapAngle = 4; // degrees - var snapValue = Math.sin(snapAngle / 360 * 2 * Math.PI); - - // snap horizontally to nice angles at 0pi, 0.5pi, 1pi, 1.5pi, etc... - // the -0.001 is to take care that the vertical axis is always drawn at the left front corner - if (Math.abs(Math.sin(horizontalNew)) < snapValue) { - horizontalNew = Math.round((horizontalNew / Math.PI)) * Math.PI - 0.001; - } - if (Math.abs(Math.cos(horizontalNew)) < snapValue) { - horizontalNew = (Math.round((horizontalNew/ Math.PI - 0.5)) + 0.5) * Math.PI - 0.001; - } + DataStep.prototype.getCurrent = function(decimals) { + // prevent round-off errors when close to zero + var current = (Math.abs(this.current) < this.step / 2) ? 0 : this.current; + var toPrecision = '' + Number(current).toPrecision(5); - // snap vertically to nice angles - if (Math.abs(Math.sin(verticalNew)) < snapValue) { - verticalNew = Math.round((verticalNew / Math.PI)) * Math.PI; + // If decimals is specified, then limit or extend the string as required + if(decimals !== undefined && !isNaN(Number(decimals))) { + // If string includes exponent, then we need to add it to the end + var exp = ""; + var index = toPrecision.indexOf("e"); + if(index != -1) { + // Get the exponent + exp = toPrecision.slice(index); + // Remove the exponent in case we need to zero-extend + toPrecision = toPrecision.slice(0, index); + } + index = Math.max(toPrecision.indexOf(","), toPrecision.indexOf(".")); + if(index === -1) { + // No decimal found - if we want decimals, then we need to add it + if(decimals !== 0) { + toPrecision += '.'; + } + // Calculate how long the string should be + index = toPrecision.length + decimals; + } + else if(decimals !== 0) { + // Calculate how long the string should be - accounting for the decimal place + index += decimals + 1; + } + if(index > toPrecision.length) { + // We need to add zeros! + for(var cnt = index - toPrecision.length; cnt > 0; cnt--) { + toPrecision += '0'; + } + } + else { + // we need to remove characters + toPrecision = toPrecision.slice(0, index); + } + // Add the exponent if there is one + toPrecision += exp; } - if (Math.abs(Math.cos(verticalNew)) < snapValue) { - verticalNew = (Math.round((verticalNew/ Math.PI - 0.5)) + 0.5) * Math.PI; + else { + if (toPrecision.indexOf(",") != -1 || toPrecision.indexOf(".") != -1) { + // If no decimal is specified, and there are decimal places, remove trailing zeros + for (var i = toPrecision.length - 1; i > 0; i--) { + if (toPrecision[i] == "0") { + toPrecision = toPrecision.slice(0, i); + } + else if (toPrecision[i] == "." || toPrecision[i] == ",") { + toPrecision = toPrecision.slice(0, i); + break; + } + else { + break; + } + } + } } - this.camera.setArmRotation(horizontalNew, verticalNew); - this.redraw(); - - // fire a cameraPositionChange event - var parameters = this.getCameraPosition(); - this.emit('cameraPositionChange', parameters); - - util.preventDefault(event); + return toPrecision; }; - /** - * Stop moving operating. - * This function activated from within the funcion Graph.mouseDown(). - * @param {event} event The event + * Check if the current value is a major value (for example when the step + * is DAY, a major value is each first day of the MONTH) + * @return {boolean} true if current date is major, else false. */ - Graph3d.prototype._onMouseUp = function (event) { - this.frame.style.cursor = 'auto'; - this.leftButtonDown = false; - - // remove event listeners here - util.removeEventListener(document, 'mousemove', this.onmousemove); - util.removeEventListener(document, 'mouseup', this.onmouseup); - util.preventDefault(event); + DataStep.prototype.isMajor = function() { + return (this.current % (this.scale * this.majorSteps[this.stepIndex]) == 0); }; + module.exports = DataStep; + + +/***/ }, +/* 17 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var hammerUtil = __webpack_require__(47); + var moment = __webpack_require__(44); + var Component = __webpack_require__(25); + var DateUtil = __webpack_require__(15); + /** - * After having moved the mouse, a tooltip should pop up when the mouse is resting on a data point - * @param {Event} event A mouse move event + * @constructor Range + * A Range controls a numeric range with a start and end value. + * The Range adjusts the range based on mouse events or programmatic changes, + * and triggers events when the range is changing or has been changed. + * @param {{dom: Object, domProps: Object, emitter: Emitter}} body + * @param {Object} [options] See description at Range.setOptions */ - Graph3d.prototype._onTooltip = function (event) { - var delay = 300; // ms - var boundingRect = this.frame.getBoundingClientRect(); - var mouseX = getMouseX(event) - boundingRect.left; - var mouseY = getMouseY(event) - boundingRect.top; + function Range(body, options) { + var now = moment().hours(0).minutes(0).seconds(0).milliseconds(0); + this.start = now.clone().add(-3, 'days').valueOf(); // Number + this.end = now.clone().add(4, 'days').valueOf(); // Number - if (!this.showTooltip) { - return; - } + this.body = body; + this.deltaDifference = 0; + this.scaleOffset = 0; + this.startToFront = false; + this.endToFront = true; - if (this.tooltipTimeout) { - clearTimeout(this.tooltipTimeout); - } + // default options + this.defaultOptions = { + start: null, + end: null, + direction: 'horizontal', // 'horizontal' or 'vertical' + moveable: true, + zoomable: true, + min: null, + max: null, + zoomMin: 10, // milliseconds + zoomMax: 1000 * 60 * 60 * 24 * 365 * 10000 // milliseconds + }; + this.options = util.extend({}, this.defaultOptions); - // (delayed) display of a tooltip only if no mouse button is down - if (this.leftButtonDown) { - this._hideTooltip(); - return; - } + this.props = { + touch: {} + }; + this.animateTimer = null; - if (this.tooltip && this.tooltip.dataPoint) { - // tooltip is currently visible - var dataPoint = this._dataPointFromXY(mouseX, mouseY); - if (dataPoint !== this.tooltip.dataPoint) { - // datapoint changed - if (dataPoint) { - this._showTooltip(dataPoint); - } - else { - this._hideTooltip(); - } - } - } - else { - // tooltip is currently not visible - var me = this; - this.tooltipTimeout = setTimeout(function () { - me.tooltipTimeout = null; + // drag listeners for dragging + this.body.emitter.on('dragstart', this._onDragStart.bind(this)); + this.body.emitter.on('drag', this._onDrag.bind(this)); + this.body.emitter.on('dragend', this._onDragEnd.bind(this)); - // show a tooltip if we have a data point - var dataPoint = me._dataPointFromXY(mouseX, mouseY); - if (dataPoint) { - me._showTooltip(dataPoint); - } - }, delay); - } - }; + // ignore dragging when holding + this.body.emitter.on('hold', this._onHold.bind(this)); - /** - * Event handler for touchstart event on mobile devices - */ - Graph3d.prototype._onTouchStart = function(event) { - this.touchDown = true; + // mouse wheel for zooming + this.body.emitter.on('mousewheel', this._onMouseWheel.bind(this)); + this.body.emitter.on('DOMMouseScroll', this._onMouseWheel.bind(this)); // For FF - var me = this; - this.ontouchmove = function (event) {me._onTouchMove(event);}; - this.ontouchend = function (event) {me._onTouchEnd(event);}; - util.addEventListener(document, 'touchmove', me.ontouchmove); - util.addEventListener(document, 'touchend', me.ontouchend); + // pinch to zoom + this.body.emitter.on('touch', this._onTouch.bind(this)); + this.body.emitter.on('pinch', this._onPinch.bind(this)); - this._onMouseDown(event); - }; + this.setOptions(options); + } - /** - * Event handler for touchmove event on mobile devices - */ - Graph3d.prototype._onTouchMove = function(event) { - this._onMouseMove(event); - }; + Range.prototype = new Component(); /** - * Event handler for touchend event on mobile devices + * Set options for the range controller + * @param {Object} options Available options: + * {Number | Date | String} start Start date for the range + * {Number | Date | String} end End date for the range + * {Number} min Minimum value for start + * {Number} max Maximum value for end + * {Number} zoomMin Set a minimum value for + * (end - start). + * {Number} zoomMax Set a maximum value for + * (end - start). + * {Boolean} moveable Enable moving of the range + * by dragging. True by default + * {Boolean} zoomable Enable zooming of the range + * by pinching/scrolling. True by default */ - Graph3d.prototype._onTouchEnd = function(event) { - this.touchDown = false; - - util.removeEventListener(document, 'touchmove', this.ontouchmove); - util.removeEventListener(document, 'touchend', this.ontouchend); + Range.prototype.setOptions = function (options) { + if (options) { + // copy the options that we know + var fields = ['direction', 'min', 'max', 'zoomMin', 'zoomMax', 'moveable', 'zoomable', 'activate', 'hiddenDates']; + util.selectiveExtend(fields, this.options, options); - this._onMouseUp(event); + if ('start' in options || 'end' in options) { + // apply a new range. both start and end are optional + this.setRange(options.start, options.end); + } + } }; - /** - * Event handler for mouse wheel event, used to zoom the graph - * Code from http://adomas.org/javascript-mouse-wheel/ - * @param {event} event The event + * Test whether direction has a valid value + * @param {String} direction 'horizontal' or 'vertical' */ - Graph3d.prototype._onWheel = function(event) { - if (!event) /* For IE. */ - event = window.event; + function validateDirection (direction) { + if (direction != 'horizontal' && direction != 'vertical') { + throw new TypeError('Unknown direction "' + direction + '". ' + + 'Choose "horizontal" or "vertical".'); + } + } - // retrieve delta - var delta = 0; - if (event.wheelDelta) { /* IE/Opera. */ - delta = event.wheelDelta/120; - } else if (event.detail) { /* Mozilla case. */ - // In Mozilla, sign of delta is different than in IE. - // Also, delta is multiple of 3. - delta = -event.detail/3; + /** + * Set a new start and end range + * @param {Date | Number | String} [start] + * @param {Date | Number | String} [end] + * @param {boolean | number} [animate=false] If true, the range is animated + * smoothly to the new window. + * If animate is a number, the + * number is taken as duration + * Default duration is 500 ms. + * @param {Boolean} [byUser=false] + * + */ + Range.prototype.setRange = function(start, end, animate, byUser) { + if (byUser !== true) { + byUser = false; } + var _start = start != undefined ? util.convert(start, 'Date').valueOf() : null; + var _end = end != undefined ? util.convert(end, 'Date').valueOf() : null; + this._cancelAnimation(); - // If delta is nonzero, handle it. - // Basically, delta is now positive if wheel was scrolled up, - // and negative, if wheel was scrolled down. - if (delta) { - var oldLength = this.camera.getArmLength(); - var newLength = oldLength * (1 - delta / 10); + if (animate) { + var me = this; + var initStart = this.start; + var initEnd = this.end; + var duration = typeof animate === 'number' ? animate : 500; + var initTime = new Date().valueOf(); + var anyChanged = false; - this.camera.setArmLength(newLength); - this.redraw(); + var next = function () { + if (!me.props.touch.dragging) { + var now = new Date().valueOf(); + var time = now - initTime; + var done = time > duration; + var s = (done || _start === null) ? _start : util.easeInOutQuad(time, initStart, _start, duration); + var e = (done || _end === null) ? _end : util.easeInOutQuad(time, initEnd, _end, duration); - this._hideTooltip(); - } + changed = me._applyRange(s, e); + DateUtil.updateHiddenDates(me.body, me.options.hiddenDates); + anyChanged = anyChanged || changed; + if (changed) { + me.body.emitter.emit('rangechange', {start: new Date(me.start), end: new Date(me.end), byUser:byUser}); + } - // fire a cameraPositionChange event - var parameters = this.getCameraPosition(); - this.emit('cameraPositionChange', parameters); + if (done) { + if (anyChanged) { + me.body.emitter.emit('rangechanged', {start: new Date(me.start), end: new Date(me.end), byUser:byUser}); + } + } + else { + // animate with as high as possible frame rate, leave 20 ms in between + // each to prevent the browser from blocking + me.animateTimer = setTimeout(next, 20); + } + } + }; - // Prevent default actions caused by mouse wheel. - // That might be ugly, but we handle scrolls somehow - // anyway, so don't bother here.. - util.preventDefault(event); + return next(); + } + else { + var changed = this._applyRange(_start, _end); + DateUtil.updateHiddenDates(this.body, this.options.hiddenDates); + if (changed) { + var params = {start: new Date(this.start), end: new Date(this.end), byUser:byUser}; + this.body.emitter.emit('rangechange', params); + this.body.emitter.emit('rangechanged', params); + } + } }; /** - * Test whether a point lies inside given 2D triangle - * @param {Point2d} point - * @param {Point2d[]} triangle - * @return {boolean} Returns true if given point lies inside or on the edge of the triangle + * Stop an animation * @private */ - Graph3d.prototype._insideTriangle = function (point, triangle) { - var a = triangle[0], - b = triangle[1], - c = triangle[2]; - - function sign (x) { - return x > 0 ? 1 : x < 0 ? -1 : 0; + Range.prototype._cancelAnimation = function () { + if (this.animateTimer) { + clearTimeout(this.animateTimer); + this.animateTimer = null; } - - var as = sign((b.x - a.x) * (point.y - a.y) - (b.y - a.y) * (point.x - a.x)); - var bs = sign((c.x - b.x) * (point.y - b.y) - (c.y - b.y) * (point.x - b.x)); - var cs = sign((a.x - c.x) * (point.y - c.y) - (a.y - c.y) * (point.x - c.x)); - - // each of the three signs must be either equal to each other or zero - return (as == 0 || bs == 0 || as == bs) && - (bs == 0 || cs == 0 || bs == cs) && - (as == 0 || cs == 0 || as == cs); }; /** - * Find a data point close to given screen position (x, y) - * @param {Number} x - * @param {Number} y - * @return {Object | null} The closest data point or null if not close to any data point + * Set a new start and end range. This method is the same as setRange, but + * does not trigger a range change and range changed event, and it returns + * true when the range is changed + * @param {Number} [start] + * @param {Number} [end] + * @return {Boolean} changed * @private */ - Graph3d.prototype._dataPointFromXY = function (x, y) { - var i, - distMax = 100, // px - dataPoint = null, - closestDataPoint = null, - closestDist = null, - center = new Point2d(x, y); + Range.prototype._applyRange = function(start, end) { + var newStart = (start != null) ? util.convert(start, 'Date').valueOf() : this.start, + newEnd = (end != null) ? util.convert(end, 'Date').valueOf() : this.end, + max = (this.options.max != null) ? util.convert(this.options.max, 'Date').valueOf() : null, + min = (this.options.min != null) ? util.convert(this.options.min, 'Date').valueOf() : null, + diff; - if (this.style === Graph3d.STYLE.BAR || - this.style === Graph3d.STYLE.BARCOLOR || - this.style === Graph3d.STYLE.BARSIZE) { - // the data points are ordered from far away to closest - for (i = this.dataPoints.length - 1; i >= 0; i--) { - dataPoint = this.dataPoints[i]; - var surfaces = dataPoint.surfaces; - if (surfaces) { - for (var s = surfaces.length - 1; s >= 0; s--) { - // split each surface in two triangles, and see if the center point is inside one of these - var surface = surfaces[s]; - var corners = surface.corners; - var triangle1 = [corners[0].screen, corners[1].screen, corners[2].screen]; - var triangle2 = [corners[2].screen, corners[3].screen, corners[0].screen]; - if (this._insideTriangle(center, triangle1) || - this._insideTriangle(center, triangle2)) { - // return immediately at the first hit - return dataPoint; - } + // check for valid number + if (isNaN(newStart) || newStart === null) { + throw new Error('Invalid start "' + start + '"'); + } + if (isNaN(newEnd) || newEnd === null) { + throw new Error('Invalid end "' + end + '"'); + } + + // prevent start < end + if (newEnd < newStart) { + newEnd = newStart; + } + + // prevent start < min + if (min !== null) { + if (newStart < min) { + diff = (min - newStart); + newStart += diff; + newEnd += diff; + + // prevent end > max + if (max != null) { + if (newEnd > max) { + newEnd = max; } } } } - else { - // find the closest data point, using distance to the center of the point on 2d screen - for (i = 0; i < this.dataPoints.length; i++) { - dataPoint = this.dataPoints[i]; - var point = dataPoint.screen; - if (point) { - var distX = Math.abs(x - point.x); - var distY = Math.abs(y - point.y); - var dist = Math.sqrt(distX * distX + distY * distY); - if ((closestDist === null || dist < closestDist) && dist < distMax) { - closestDist = dist; - closestDataPoint = dataPoint; + // prevent end > max + if (max !== null) { + if (newEnd > max) { + diff = (newEnd - max); + newStart -= diff; + newEnd -= diff; + + // prevent start < min + if (min != null) { + if (newStart < min) { + newStart = min; } } } } + // prevent (end-start) < zoomMin + if (this.options.zoomMin !== null) { + var zoomMin = parseFloat(this.options.zoomMin); + if (zoomMin < 0) { + zoomMin = 0; + } + if ((newEnd - newStart) < zoomMin) { + if ((this.end - this.start) === zoomMin && newStart > this.start && newEnd < this.end) { + // ignore this action, we are already zoomed to the minimum + newStart = this.start; + newEnd = this.end; + } + else { + // zoom to the minimum + diff = (zoomMin - (newEnd - newStart)); + newStart -= diff / 2; + newEnd += diff / 2; + } + } + } - return closestDataPoint; - }; - - /** - * Display a tooltip for given data point - * @param {Object} dataPoint - * @private - */ - Graph3d.prototype._showTooltip = function (dataPoint) { - var content, line, dot; - - if (!this.tooltip) { - content = document.createElement('div'); - content.style.position = 'absolute'; - content.style.padding = '10px'; - content.style.border = '1px solid #4d4d4d'; - content.style.color = '#1a1a1a'; - content.style.background = 'rgba(255,255,255,0.7)'; - content.style.borderRadius = '2px'; - content.style.boxShadow = '5px 5px 10px rgba(128,128,128,0.5)'; - - line = document.createElement('div'); - line.style.position = 'absolute'; - line.style.height = '40px'; - line.style.width = '0'; - line.style.borderLeft = '1px solid #4d4d4d'; - - dot = document.createElement('div'); - dot.style.position = 'absolute'; - dot.style.height = '0'; - dot.style.width = '0'; - dot.style.border = '5px solid #4d4d4d'; - dot.style.borderRadius = '5px'; + // prevent (end-start) > zoomMax + if (this.options.zoomMax !== null) { + var zoomMax = parseFloat(this.options.zoomMax); + if (zoomMax < 0) { + zoomMax = 0; + } - this.tooltip = { - dataPoint: null, - dom: { - content: content, - line: line, - dot: dot + if ((newEnd - newStart) > zoomMax) { + if ((this.end - this.start) === zoomMax && newStart < this.start && newEnd > this.end) { + // ignore this action, we are already zoomed to the maximum + newStart = this.start; + newEnd = this.end; } - }; - } - else { - content = this.tooltip.dom.content; - line = this.tooltip.dom.line; - dot = this.tooltip.dom.dot; + else { + // zoom to the maximum + diff = ((newEnd - newStart) - zoomMax); + newStart += diff / 2; + newEnd -= diff / 2; + } + } } - this._hideTooltip(); + var changed = (this.start != newStart || this.end != newEnd); - this.tooltip.dataPoint = dataPoint; - if (typeof this.showTooltip === 'function') { - content.innerHTML = this.showTooltip(dataPoint.point); - } - else { - content.innerHTML = '' + - '' + - '' + - '' + - '
x:' + dataPoint.point.x + '
y:' + dataPoint.point.y + '
z:' + dataPoint.point.z + '
'; + // if the new range does NOT overlap with the old range, emit checkRangedItems to avoid not showing ranged items (ranged meaning has end time, not necessarily of type Range) + if (!((newStart >= this.start && newStart <= this.end) || (newEnd >= this.start && newEnd <= this.end)) && + !((this.start >= newStart && this.start <= newEnd) || (this.end >= newStart && this.end <= newEnd) )) { + this.body.emitter.emit('checkRangedItems'); } - content.style.left = '0'; - content.style.top = '0'; - this.frame.appendChild(content); - this.frame.appendChild(line); - this.frame.appendChild(dot); - - // calculate sizes - var contentWidth = content.offsetWidth; - var contentHeight = content.offsetHeight; - var lineHeight = line.offsetHeight; - var dotWidth = dot.offsetWidth; - var dotHeight = dot.offsetHeight; - - var left = dataPoint.screen.x - contentWidth / 2; - left = Math.min(Math.max(left, 10), this.frame.clientWidth - 10 - contentWidth); - - line.style.left = dataPoint.screen.x + 'px'; - line.style.top = (dataPoint.screen.y - lineHeight) + 'px'; - content.style.left = left + 'px'; - content.style.top = (dataPoint.screen.y - lineHeight - contentHeight) + 'px'; - dot.style.left = (dataPoint.screen.x - dotWidth / 2) + 'px'; - dot.style.top = (dataPoint.screen.y - dotHeight / 2) + 'px'; + this.start = newStart; + this.end = newEnd; + return changed; }; /** - * Hide the tooltip when displayed - * @private + * Retrieve the current range. + * @return {Object} An object with start and end properties */ - Graph3d.prototype._hideTooltip = function () { - if (this.tooltip) { - this.tooltip.dataPoint = null; - - for (var prop in this.tooltip.dom) { - if (this.tooltip.dom.hasOwnProperty(prop)) { - var elem = this.tooltip.dom[prop]; - if (elem && elem.parentNode) { - elem.parentNode.removeChild(elem); - } - } - } - } + Range.prototype.getRange = function() { + return { + start: this.start, + end: this.end + }; }; - /**--------------------------------------------------------------------------**/ - + /** + * Calculate the conversion offset and scale for current range, based on + * the provided width + * @param {Number} width + * @returns {{offset: number, scale: number}} conversion + */ + Range.prototype.conversion = function (width, totalHidden) { + return Range.conversion(this.start, this.end, width, totalHidden); + }; /** - * Get the horizontal mouse position from a mouse event - * @param {Event} event - * @return {Number} mouse x + * Static method to calculate the conversion offset and scale for a range, + * based on the provided start, end, and width + * @param {Number} start + * @param {Number} end + * @param {Number} width + * @returns {{offset: number, scale: number}} conversion */ - function getMouseX (event) { - if ('clientX' in event) return event.clientX; - return event.targetTouches[0] && event.targetTouches[0].clientX || 0; - } + Range.conversion = function (start, end, width, totalHidden) { + if (totalHidden === undefined) { + totalHidden = 0; + } + if (width != 0 && (end - start != 0)) { + return { + offset: start, + scale: width / (end - start - totalHidden) + } + } + else { + return { + offset: 0, + scale: 1 + }; + } + }; /** - * Get the vertical mouse position from a mouse event + * Start dragging horizontally or vertically * @param {Event} event - * @return {Number} mouse y + * @private */ - function getMouseY (event) { - if ('clientY' in event) return event.clientY; - return event.targetTouches[0] && event.targetTouches[0].clientY || 0; - } + Range.prototype._onDragStart = function(event) { + this.deltaDifference = 0; + this.previousDelta = 0; + // only allow dragging when configured as movable + if (!this.options.moveable) return; - module.exports = Graph3d; + // refuse to drag when we where pinching to prevent the timeline make a jump + // when releasing the fingers in opposite order from the touch screen + if (!this.props.touch.allowDragging) return; + this.props.touch.start = this.start; + this.props.touch.end = this.end; + this.props.touch.dragging = true; -/***/ }, -/* 11 */ -/***/ function(module, exports, __webpack_require__) { + if (this.body.dom.root) { + this.body.dom.root.style.cursor = 'move'; + } + }; - /** - * Expose `Emitter`. + * Perform dragging operation + * @param {Event} event + * @private */ + Range.prototype._onDrag = function (event) { + // only allow dragging when configured as movable + if (!this.options.moveable) return; + // refuse to drag when we where pinching to prevent the timeline make a jump + // when releasing the fingers in opposite order from the touch screen + if (!this.props.touch.allowDragging) return; - module.exports = Emitter; + var direction = this.options.direction; + validateDirection(direction); - /** - * Initialize a new `Emitter`. - * - * @api public - */ + var delta = (direction == 'horizontal') ? event.gesture.deltaX : event.gesture.deltaY; + delta -= this.deltaDifference; + var interval = (this.props.touch.end - this.props.touch.start); - function Emitter(obj) { - if (obj) return mixin(obj); - }; + // normalize dragging speed if cutout is in between. + var duration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); + interval -= duration; - /** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private - */ + var width = (direction == 'horizontal') ? this.body.domProps.center.width : this.body.domProps.center.height; + var diffRange = -delta / width * interval; + var newStart = this.props.touch.start + diffRange; + var newEnd = this.props.touch.end + diffRange; - function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; + + // snapping times away from hidden zones + var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, this.previousDelta-delta, true); + var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, this.previousDelta-delta, true); + if (safeStart != newStart || safeEnd != newEnd) { + this.deltaDifference += delta; + this.props.touch.start = safeStart; + this.props.touch.end = safeEnd; + this._onDrag(event); + return; } - return obj; - } - /** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ + this.previousDelta = delta; + this._applyRange(newStart, newEnd); - Emitter.prototype.on = - Emitter.prototype.addEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks[event] = this._callbacks[event] || []) - .push(fn); - return this; + // fire a rangechange event + this.body.emitter.emit('rangechange', { + start: new Date(this.start), + end: new Date(this.end), + byUser: true + }); }; /** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public + * Stop dragging operation + * @param {event} event + * @private */ + Range.prototype._onDragEnd = function (event) { + // only allow dragging when configured as movable + if (!this.options.moveable) return; - Emitter.prototype.once = function(event, fn){ - var self = this; - this._callbacks = this._callbacks || {}; + // refuse to drag when we where pinching to prevent the timeline make a jump + // when releasing the fingers in opposite order from the touch screen + if (!this.props.touch.allowDragging) return; - function on() { - self.off(event, on); - fn.apply(this, arguments); + this.props.touch.dragging = false; + if (this.body.dom.root) { + this.body.dom.root.style.cursor = 'auto'; } - on.fn = fn; - this.on(event, on); - return this; + // fire a rangechanged event + this.body.emitter.emit('rangechanged', { + start: new Date(this.start), + end: new Date(this.end), + byUser: true + }); }; /** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public + * Event handler for mouse wheel event, used to zoom + * Code from http://adomas.org/javascript-mouse-wheel/ + * @param {Event} event + * @private */ + Range.prototype._onMouseWheel = function(event) { + // only allow zooming when configured as zoomable and moveable + if (!(this.options.zoomable && this.options.moveable)) return; - Emitter.prototype.off = - Emitter.prototype.removeListener = - Emitter.prototype.removeAllListeners = - Emitter.prototype.removeEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; + // retrieve delta + var delta = 0; + if (event.wheelDelta) { /* IE/Opera. */ + delta = event.wheelDelta / 120; + } else if (event.detail) { /* Mozilla case. */ + // In Mozilla, sign of delta is different than in IE. + // Also, delta is multiple of 3. + delta = -event.detail / 3; } - // specific event - var callbacks = this._callbacks[event]; - if (!callbacks) return this; - - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks[event]; - return this; - } + // If delta is nonzero, handle it. + // Basically, delta is now positive if wheel was scrolled up, + // and negative, if wheel was scrolled down. + if (delta) { + // perform the zoom action. Delta is normally 1 or -1 - // remove specific handler - var cb; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; + // adjust a negative delta such that zooming in with delta 0.1 + // equals zooming out with a delta -0.1 + var scale; + if (delta < 0) { + scale = 1 - (delta / 5); + } + else { + scale = 1 / (1 + (delta / 5)) ; } - } - return this; - }; - - /** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} - */ - Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - var args = [].slice.call(arguments, 1) - , callbacks = this._callbacks[event]; + // calculate center, the date to zoom around + var gesture = hammerUtil.fakeGesture(this, event), + pointer = getPointer(gesture.center, this.body.dom.center), + pointerDate = this._pointerToDate(pointer); - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } + this.zoom(scale, pointerDate, delta); } - return this; + // Prevent default actions caused by mouse wheel + // (else the page and timeline both zoom and scroll) + event.preventDefault(); }; /** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public + * Start of a touch gesture + * @private */ + Range.prototype._onTouch = function (event) { + this.props.touch.start = this.start; + this.props.touch.end = this.end; + this.props.touch.allowDragging = true; + this.props.touch.center = null; + this.scaleOffset = 0; + this.deltaDifference = 0; + }; - Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks[event] || []; + /** + * On start of a hold gesture + * @private + */ + Range.prototype._onHold = function () { + this.props.touch.allowDragging = false; }; /** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public + * Handle pinch event + * @param {Event} event + * @private */ + Range.prototype._onPinch = function (event) { + // only allow zooming when configured as zoomable and moveable + if (!(this.options.zoomable && this.options.moveable)) return; - Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; - }; + this.props.touch.allowDragging = false; + if (event.gesture.touches.length > 1) { + if (!this.props.touch.center) { + this.props.touch.center = getPointer(event.gesture.center, this.body.dom.center); + } -/***/ }, -/* 12 */ -/***/ function(module, exports, __webpack_require__) { + var scale = 1 / (event.gesture.scale + this.scaleOffset); + var centerDate = this._pointerToDate(this.props.touch.center); - /** - * @prototype Point3d - * @param {Number} [x] - * @param {Number} [y] - * @param {Number} [z] - */ - function Point3d(x, y, z) { - this.x = x !== undefined ? x : 0; - this.y = y !== undefined ? y : 0; - this.z = z !== undefined ? z : 0; + var hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); + var hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this, centerDate); + var hiddenDurationAfter = hiddenDuration - hiddenDurationBefore; + + // calculate new start and end + var newStart = (centerDate - hiddenDurationBefore) + (this.props.touch.start - (centerDate - hiddenDurationBefore)) * scale; + var newEnd = (centerDate + hiddenDurationAfter) + (this.props.touch.end - (centerDate + hiddenDurationAfter)) * scale; + + // snapping times away from hidden zones + this.startToFront = 1 - scale > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + this.endToFront = scale - 1 > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + + var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, 1 - scale, true); + var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, scale - 1, true); + if (safeStart != newStart || safeEnd != newEnd) { + this.props.touch.start = safeStart; + this.props.touch.end = safeEnd; + this.scaleOffset = 1 - event.gesture.scale; + newStart = safeStart; + newEnd = safeEnd; + } + + this.setRange(newStart, newEnd, false, true); + + this.startToFront = false; // revert to default + this.endToFront = true; // revert to default + } }; /** - * Subtract the two provided points, returns a-b - * @param {Point3d} a - * @param {Point3d} b - * @return {Point3d} a-b + * Helper function to calculate the center date for zooming + * @param {{x: Number, y: Number}} pointer + * @return {number} date + * @private */ - Point3d.subtract = function(a, b) { - var sub = new Point3d(); - sub.x = a.x - b.x; - sub.y = a.y - b.y; - sub.z = a.z - b.z; - return sub; + Range.prototype._pointerToDate = function (pointer) { + var conversion; + var direction = this.options.direction; + + validateDirection(direction); + + if (direction == 'horizontal') { + return this.body.util.toTime(pointer.x).valueOf(); + } + else { + var height = this.body.domProps.center.height; + conversion = this.conversion(height); + return pointer.y / conversion.scale + conversion.offset; + } }; /** - * Add the two provided points, returns a+b - * @param {Point3d} a - * @param {Point3d} b - * @return {Point3d} a+b - */ - Point3d.add = function(a, b) { - var sum = new Point3d(); - sum.x = a.x + b.x; - sum.y = a.y + b.y; - sum.z = a.z + b.z; - return sum; - }; - - /** - * Calculate the average of two 3d points - * @param {Point3d} a - * @param {Point3d} b - * @return {Point3d} The average, (a+b)/2 + * Get the pointer location relative to the location of the dom element + * @param {{pageX: Number, pageY: Number}} touch + * @param {Element} element HTML DOM element + * @return {{x: Number, y: Number}} pointer + * @private */ - Point3d.avg = function(a, b) { - return new Point3d( - (a.x + b.x) / 2, - (a.y + b.y) / 2, - (a.z + b.z) / 2 - ); - }; + function getPointer (touch, element) { + return { + x: touch.pageX - util.getAbsoluteLeft(element), + y: touch.pageY - util.getAbsoluteTop(element) + }; + } /** - * Calculate the cross product of the two provided points, returns axb - * Documentation: http://en.wikipedia.org/wiki/Cross_product - * @param {Point3d} a - * @param {Point3d} b - * @return {Point3d} cross product axb + * Zoom the range the given scale in or out. Start and end date will + * be adjusted, and the timeline will be redrawn. You can optionally give a + * date around which to zoom. + * For example, try scale = 0.9 or 1.1 + * @param {Number} scale Scaling factor. Values above 1 will zoom out, + * values below 1 will zoom in. + * @param {Number} [center] Value representing a date around which will + * be zoomed. */ - Point3d.crossProduct = function(a, b) { - var crossproduct = new Point3d(); + Range.prototype.zoom = function(scale, center, delta) { + // if centerDate is not provided, take it half between start Date and end Date + if (center == null) { + center = (this.start + this.end) / 2; + } - crossproduct.x = a.y * b.z - a.z * b.y; - crossproduct.y = a.z * b.x - a.x * b.z; - crossproduct.z = a.x * b.y - a.y * b.x; + var hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); + var hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this, center); + var hiddenDurationAfter = hiddenDuration - hiddenDurationBefore; - return crossproduct; + // calculate new start and end + var newStart = (center-hiddenDurationBefore) + (this.start - (center-hiddenDurationBefore)) * scale; + var newEnd = (center+hiddenDurationAfter) + (this.end - (center+hiddenDurationAfter)) * scale; + + // snapping times away from hidden zones + this.startToFront = delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + this.endToFront = -delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, delta, true); + var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, -delta, true); + if (safeStart != newStart || safeEnd != newEnd) { + newStart = safeStart; + newEnd = safeEnd; + } + + this.setRange(newStart, newEnd, false, true); + + this.startToFront = false; // revert to default + this.endToFront = true; // revert to default }; + /** - * Rtrieve the length of the vector (or the distance from this point to the origin - * @return {Number} length + * Move the range with a given delta to the left or right. Start and end + * value will be adjusted. For example, try delta = 0.1 or -0.1 + * @param {Number} delta Moving amount. Positive value will move right, + * negative value will move left */ - Point3d.prototype.length = function() { - return Math.sqrt( - this.x * this.x + - this.y * this.y + - this.z * this.z - ); - }; + Range.prototype.move = function(delta) { + // zoom start Date and end Date relative to the centerDate + var diff = (this.end - this.start); - module.exports = Point3d; + // apply new values + var newStart = this.start + diff * delta; + var newEnd = this.end + diff * delta; + // TODO: reckon with min and max range -/***/ }, -/* 13 */ -/***/ function(module, exports, __webpack_require__) { + this.start = newStart; + this.end = newEnd; + }; /** - * @prototype Point2d - * @param {Number} [x] - * @param {Number} [y] + * Move the range to a new center point + * @param {Number} moveTo New center point of the range */ - function Point2d (x, y) { - this.x = x !== undefined ? x : 0; - this.y = y !== undefined ? y : 0; - } + Range.prototype.moveTo = function(moveTo) { + var center = (this.start + this.end) / 2; - module.exports = Point2d; + var diff = center - moveTo; + // calculate new start and end + var newStart = this.start - diff; + var newEnd = this.end - diff; -/***/ }, -/* 14 */ -/***/ function(module, exports, __webpack_require__) { + this.setRange(newStart, newEnd); + }; - var Point3d = __webpack_require__(12); + module.exports = Range; - /** - * @class Camera - * The camera is mounted on a (virtual) camera arm. The camera arm can rotate - * The camera is always looking in the direction of the origin of the arm. - * This way, the camera always rotates around one fixed point, the location - * of the camera arm. - * - * Documentation: - * http://en.wikipedia.org/wiki/3D_projection - */ - function Camera() { - this.armLocation = new Point3d(); - this.armRotation = {}; - this.armRotation.horizontal = 0; - this.armRotation.vertical = 0; - this.armLength = 1.7; - this.cameraLocation = new Point3d(); - this.cameraRotation = new Point3d(0.5*Math.PI, 0, 0); +/***/ }, +/* 18 */ +/***/ function(module, exports, __webpack_require__) { - this.calculateCameraOrientation(); - } + // Utility functions for ordering and stacking of items + var EPSILON = 0.001; // used when checking collisions, to prevent round-off errors /** - * Set the location (origin) of the arm - * @param {Number} x Normalized value of x - * @param {Number} y Normalized value of y - * @param {Number} z Normalized value of z + * Order items by their start data + * @param {Item[]} items */ - Camera.prototype.setArmLocation = function(x, y, z) { - this.armLocation.x = x; - this.armLocation.y = y; - this.armLocation.z = z; - - this.calculateCameraOrientation(); + exports.orderByStart = function(items) { + items.sort(function (a, b) { + return a.data.start - b.data.start; + }); }; /** - * Set the rotation of the camera arm - * @param {Number} horizontal The horizontal rotation, between 0 and 2*PI. - * Optional, can be left undefined. - * @param {Number} vertical The vertical rotation, between 0 and 0.5*PI - * if vertical=0.5*PI, the graph is shown from the - * top. Optional, can be left undefined. + * Order items by their end date. If they have no end date, their start date + * is used. + * @param {Item[]} items */ - Camera.prototype.setArmRotation = function(horizontal, vertical) { - if (horizontal !== undefined) { - this.armRotation.horizontal = horizontal; - } - - if (vertical !== undefined) { - this.armRotation.vertical = vertical; - if (this.armRotation.vertical < 0) this.armRotation.vertical = 0; - if (this.armRotation.vertical > 0.5*Math.PI) this.armRotation.vertical = 0.5*Math.PI; - } + exports.orderByEnd = function(items) { + items.sort(function (a, b) { + var aTime = ('end' in a.data) ? a.data.end : a.data.start, + bTime = ('end' in b.data) ? b.data.end : b.data.start; - if (horizontal !== undefined || vertical !== undefined) { - this.calculateCameraOrientation(); - } + return aTime - bTime; + }); }; /** - * Retrieve the current arm rotation - * @return {object} An object with parameters horizontal and vertical + * Adjust vertical positions of the items such that they don't overlap each + * other. + * @param {Item[]} items + * All visible items + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * Margins between items and between items and the axis. + * @param {boolean} [force=false] + * If true, all items will be repositioned. If false (default), only + * items having a top===null will be re-stacked */ - Camera.prototype.getArmRotation = function() { - var rot = {}; - rot.horizontal = this.armRotation.horizontal; - rot.vertical = this.armRotation.vertical; - - return rot; - }; + exports.stack = function(items, margin, force) { + var i, iMax; - /** - * Set the (normalized) length of the camera arm. - * @param {Number} length A length between 0.71 and 5.0 - */ - Camera.prototype.setArmLength = function(length) { - if (length === undefined) - return; + if (force) { + // reset top position of all items + for (i = 0, iMax = items.length; i < iMax; i++) { + items[i].top = null; + } + } - this.armLength = length; + // calculate new, non-overlapping positions + for (i = 0, iMax = items.length; i < iMax; i++) { + var item = items[i]; + if (item.stack && item.top === null) { + // initialize top position + item.top = margin.axis; - // Radius must be larger than the corner of the graph, - // which has a distance of sqrt(0.5^2+0.5^2) = 0.71 from the center of the - // graph - if (this.armLength < 0.71) this.armLength = 0.71; - if (this.armLength > 5.0) this.armLength = 5.0; + do { + // TODO: optimize checking for overlap. when there is a gap without items, + // you only need to check for items from the next item on, not from zero + var collidingItem = null; + for (var j = 0, jj = items.length; j < jj; j++) { + var other = items[j]; + if (other.top !== null && other !== item && other.stack && exports.collision(item, other, margin.item)) { + collidingItem = other; + break; + } + } - this.calculateCameraOrientation(); + if (collidingItem != null) { + // There is a collision. Reposition the items above the colliding element + item.top = collidingItem.top + collidingItem.height + margin.item.vertical; + } + } while (collidingItem); + } + } }; - /** - * Retrieve the arm length - * @return {Number} length - */ - Camera.prototype.getArmLength = function() { - return this.armLength; - }; /** - * Retrieve the camera location - * @return {Point3d} cameraLocation + * Adjust vertical positions of the items without stacking them + * @param {Item[]} items + * All visible items + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * Margins between items and between items and the axis. */ - Camera.prototype.getCameraLocation = function() { - return this.cameraLocation; - }; + exports.nostack = function(items, margin, subgroups) { + var i, iMax, newTop; - /** - * Retrieve the camera rotation - * @return {Point3d} cameraRotation - */ - Camera.prototype.getCameraRotation = function() { - return this.cameraRotation; + // reset top position of all items + for (i = 0, iMax = items.length; i < iMax; i++) { + if (items[i].data.subgroup !== undefined) { + newTop = margin.axis; + for (var subgroup in subgroups) { + if (subgroups.hasOwnProperty(subgroup)) { + if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroups[items[i].data.subgroup].index) { + newTop += subgroups[subgroup].height + margin.item.vertical; + } + } + } + items[i].top = newTop; + } + else { + items[i].top = margin.axis; + } + } }; /** - * Calculate the location and rotation of the camera based on the - * position and orientation of the camera arm + * Test if the two provided items collide + * The items must have parameters left, width, top, and height. + * @param {Item} a The first item + * @param {Item} b The second item + * @param {{horizontal: number, vertical: number}} margin + * An object containing a horizontal and vertical + * minimum required margin. + * @return {boolean} true if a and b collide, else false */ - Camera.prototype.calculateCameraOrientation = function() { - // calculate location of the camera - this.cameraLocation.x = this.armLocation.x - this.armLength * Math.sin(this.armRotation.horizontal) * Math.cos(this.armRotation.vertical); - this.cameraLocation.y = this.armLocation.y - this.armLength * Math.cos(this.armRotation.horizontal) * Math.cos(this.armRotation.vertical); - this.cameraLocation.z = this.armLocation.z + this.armLength * Math.sin(this.armRotation.vertical); - - // calculate rotation of the camera - this.cameraRotation.x = Math.PI/2 - this.armRotation.vertical; - this.cameraRotation.y = 0; - this.cameraRotation.z = -this.armRotation.horizontal; + exports.collision = function(a, b, margin) { + return ((a.left - margin.horizontal + EPSILON) < (b.left + b.width) && + (a.left + a.width + margin.horizontal - EPSILON) > b.left && + (a.top - margin.vertical + EPSILON) < (b.top + b.height) && + (a.top + a.height + margin.vertical - EPSILON) > b.top); }; - module.exports = Camera; /***/ }, -/* 15 */ +/* 19 */ /***/ function(module, exports, __webpack_require__) { - var DataView = __webpack_require__(9); + var moment = __webpack_require__(44); + var DateUtil = __webpack_require__(15); + var util = __webpack_require__(1); /** - * @class Filter + * @constructor TimeStep + * The class TimeStep is an iterator for dates. You provide a start date and an + * end date. The class itself determines the best scale (step size) based on the + * provided start Date, end Date, and minimumStep. * - * @param {DataSet} data The google data table - * @param {Number} column The index of the column to be filtered - * @param {Graph} graph The graph + * If minimumStep is provided, the step size is chosen as close as possible + * to the minimumStep but larger than minimumStep. If minimumStep is not + * provided, the scale is set to 1 DAY. + * The minimumStep should correspond with the onscreen size of about 6 characters + * + * Alternatively, you can set a scale by hand. + * After creation, you can initialize the class by executing first(). Then you + * can iterate from the start date to the end date via next(). You can check if + * the end date is reached with the function hasNext(). After each step, you can + * retrieve the current date via getCurrent(). + * The TimeStep has scales ranging from milliseconds, seconds, minutes, hours, + * days, to years. + * + * Version: 1.2 + * + * @param {Date} [start] The start date, for example new Date(2010, 9, 21) + * or new Date(2010, 9, 21, 23, 45, 00) + * @param {Date} [end] The end date + * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds */ - function Filter (data, column, graph) { - this.data = data; - this.column = column; - this.graph = graph; // the parent graph - - this.index = undefined; - this.value = undefined; + function TimeStep(start, end, minimumStep, hiddenDates) { + // variables + this.current = new Date(); + this._start = new Date(); + this._end = new Date(); - // read all distinct values and select the first one - this.values = graph.getDistinctValues(data.get(), this.column); + this.autoScale = true; + this.scale = 'day'; + this.step = 1; - // sort both numeric and string values correctly - this.values.sort(function (a, b) { - return a > b ? 1 : a < b ? -1 : 0; - }); + // initialize the range + this.setRange(start, end, minimumStep); - if (this.values.length > 0) { - this.selectValue(0); + // hidden Dates options + this.switchedDay = false; + this.switchedMonth = false; + this.switchedYear = false; + this.hiddenDates = hiddenDates; + if (hiddenDates === undefined) { + this.hiddenDates = []; } - // create an array with the filtered datapoints. this will be loaded afterwards - this.dataPoints = []; - - this.loaded = false; - this.onLoadCallback = undefined; + this.format = TimeStep.FORMAT; // default formatting + } - if (graph.animationPreload) { - this.loaded = false; - this.loadInBackground(); - } - else { - this.loaded = true; + // Time formatting + TimeStep.FORMAT = { + minorLabels: { + millisecond:'SSS', + second: 's', + minute: 'HH:mm', + hour: 'HH:mm', + weekday: 'ddd D', + day: 'D', + month: 'MMM', + year: 'YYYY' + }, + majorLabels: { + millisecond:'HH:mm:ss', + second: 'D MMMM HH:mm', + minute: 'ddd D MMMM', + hour: 'ddd D MMMM', + weekday: 'MMMM YYYY', + day: 'MMMM YYYY', + month: 'YYYY', + year: '' } }; - /** - * Return the label - * @return {string} label + * Set custom formatting for the minor an major labels of the TimeStep. + * Both `minorLabels` and `majorLabels` are an Object with properties: + * 'millisecond, 'second, 'minute', 'hour', 'weekday, 'day, 'month, 'year'. + * @param {{minorLabels: Object, majorLabels: Object}} format */ - Filter.prototype.isLoaded = function() { - return this.loaded; + TimeStep.prototype.setFormat = function (format) { + var defaultFormat = util.deepExtend({}, TimeStep.FORMAT); + this.format = util.deepExtend(defaultFormat, format); }; - /** - * Return the loaded progress - * @return {Number} percentage between 0 and 100 + * Set a new range + * If minimumStep is provided, the step size is chosen as close as possible + * to the minimumStep but larger than minimumStep. If minimumStep is not + * provided, the scale is set to 1 DAY. + * The minimumStep should correspond with the onscreen size of about 6 characters + * @param {Date} [start] The start date and time. + * @param {Date} [end] The end date and time. + * @param {int} [minimumStep] Optional. Minimum step size in milliseconds */ - Filter.prototype.getLoadedProgress = function() { - var len = this.values.length; - - var i = 0; - while (this.dataPoints[i]) { - i++; + TimeStep.prototype.setRange = function(start, end, minimumStep) { + if (!(start instanceof Date) || !(end instanceof Date)) { + throw "No legal start or end date in method setRange"; } - return Math.round(i / len * 100); - }; + this._start = (start != undefined) ? new Date(start.valueOf()) : new Date(); + this._end = (end != undefined) ? new Date(end.valueOf()) : new Date(); + if (this.autoScale) { + this.setMinimumStep(minimumStep); + } + }; /** - * Return the label - * @return {string} label + * Set the range iterator to the start date. */ - Filter.prototype.getLabel = function() { - return this.graph.filterLabel; + TimeStep.prototype.first = function() { + this.current = new Date(this._start.valueOf()); + this.roundToMinor(); }; - /** - * Return the columnIndex of the filter - * @return {Number} columnIndex + * Round the current date to the first minor date value + * This must be executed once when the current date is set to start Date */ - Filter.prototype.getColumn = function() { - return this.column; + TimeStep.prototype.roundToMinor = function() { + // round to floor + // IMPORTANT: we have no breaks in this switch! (this is no bug) + // noinspection FallThroughInSwitchStatementJS + switch (this.scale) { + case 'year': + this.current.setFullYear(this.step * Math.floor(this.current.getFullYear() / this.step)); + this.current.setMonth(0); + case 'month': this.current.setDate(1); + case 'day': // intentional fall through + case 'weekday': this.current.setHours(0); + case 'hour': this.current.setMinutes(0); + case 'minute': this.current.setSeconds(0); + case 'second': this.current.setMilliseconds(0); + //case 'millisecond': // nothing to do for milliseconds + } + + if (this.step != 1) { + // round down to the first minor value that is a multiple of the current step size + switch (this.scale) { + case 'millisecond': this.current.setMilliseconds(this.current.getMilliseconds() - this.current.getMilliseconds() % this.step); break; + case 'second': this.current.setSeconds(this.current.getSeconds() - this.current.getSeconds() % this.step); break; + case 'minute': this.current.setMinutes(this.current.getMinutes() - this.current.getMinutes() % this.step); break; + case 'hour': this.current.setHours(this.current.getHours() - this.current.getHours() % this.step); break; + case 'weekday': // intentional fall through + case 'day': this.current.setDate((this.current.getDate()-1) - (this.current.getDate()-1) % this.step + 1); break; + case 'month': this.current.setMonth(this.current.getMonth() - this.current.getMonth() % this.step); break; + case 'year': this.current.setFullYear(this.current.getFullYear() - this.current.getFullYear() % this.step); break; + default: break; + } + } }; /** - * Return the currently selected value. Returns undefined if there is no selection - * @return {*} value + * Check if the there is a next step + * @return {boolean} true if the current date has not passed the end date */ - Filter.prototype.getSelectedValue = function() { - if (this.index === undefined) - return undefined; - - return this.values[this.index]; - }; - - /** - * Retrieve all values of the filter - * @return {Array} values - */ - Filter.prototype.getValues = function() { - return this.values; - }; - - /** - * Retrieve one value of the filter - * @param {Number} index - * @return {*} value - */ - Filter.prototype.getValue = function(index) { - if (index >= this.values.length) - throw 'Error: index out of range'; - - return this.values[index]; + TimeStep.prototype.hasNext = function () { + return (this.current.valueOf() <= this._end.valueOf()); }; - /** - * Retrieve the (filtered) dataPoints for the currently selected filter index - * @param {Number} [index] (optional) - * @return {Array} dataPoints + * Do the next step */ - Filter.prototype._getDataPoints = function(index) { - if (index === undefined) - index = this.index; + TimeStep.prototype.next = function() { + var prev = this.current.valueOf(); - if (index === undefined) - return []; + // Two cases, needed to prevent issues with switching daylight savings + // (end of March and end of October) + if (this.current.getMonth() < 6) { + switch (this.scale) { + case 'millisecond': - var dataPoints; - if (this.dataPoints[index]) { - dataPoints = this.dataPoints[index]; + this.current = new Date(this.current.valueOf() + this.step); break; + case 'second': this.current = new Date(this.current.valueOf() + this.step * 1000); break; + case 'minute': this.current = new Date(this.current.valueOf() + this.step * 1000 * 60); break; + case 'hour': + this.current = new Date(this.current.valueOf() + this.step * 1000 * 60 * 60); + // in case of skipping an hour for daylight savings, adjust the hour again (else you get: 0h 5h 9h ... instead of 0h 4h 8h ...) + var h = this.current.getHours(); + this.current.setHours(h - (h % this.step)); + break; + case 'weekday': // intentional fall through + case 'day': this.current.setDate(this.current.getDate() + this.step); break; + case 'month': this.current.setMonth(this.current.getMonth() + this.step); break; + case 'year': this.current.setFullYear(this.current.getFullYear() + this.step); break; + default: break; + } } else { - var f = {}; - f.column = this.column; - f.value = this.values[index]; + switch (this.scale) { + case 'millisecond': this.current = new Date(this.current.valueOf() + this.step); break; + case 'second': this.current.setSeconds(this.current.getSeconds() + this.step); break; + case 'minute': this.current.setMinutes(this.current.getMinutes() + this.step); break; + case 'hour': this.current.setHours(this.current.getHours() + this.step); break; + case 'weekday': // intentional fall through + case 'day': this.current.setDate(this.current.getDate() + this.step); break; + case 'month': this.current.setMonth(this.current.getMonth() + this.step); break; + case 'year': this.current.setFullYear(this.current.getFullYear() + this.step); break; + default: break; + } + } - var dataView = new DataView(this.data,{filter: function (item) {return (item[f.column] == f.value);}}).get(); - dataPoints = this.graph._getDataPoints(dataView); + if (this.step != 1) { + // round down to the correct major value + switch (this.scale) { + case 'millisecond': if(this.current.getMilliseconds() < this.step) this.current.setMilliseconds(0); break; + case 'second': if(this.current.getSeconds() < this.step) this.current.setSeconds(0); break; + case 'minute': if(this.current.getMinutes() < this.step) this.current.setMinutes(0); break; + case 'hour': if(this.current.getHours() < this.step) this.current.setHours(0); break; + case 'weekday': // intentional fall through + case 'day': if(this.current.getDate() < this.step+1) this.current.setDate(1); break; + case 'month': if(this.current.getMonth() < this.step) this.current.setMonth(0); break; + case 'year': break; // nothing to do for year + default: break; + } + } - this.dataPoints[index] = dataPoints; + // safety mechanism: if current time is still unchanged, move to the end + if (this.current.valueOf() == prev) { + this.current = new Date(this._end.valueOf()); } - return dataPoints; + DateUtil.stepOverHiddenDates(this, prev); }; - /** - * Set a callback function when the filter is fully loaded. + * Get the current datetime + * @return {Date} current The current date */ - Filter.prototype.setOnLoadCallback = function(callback) { - this.onLoadCallback = callback; + TimeStep.prototype.getCurrent = function() { + return this.current; }; - /** - * Add a value to the list with available values for this filter - * No double entries will be created. - * @param {Number} index + * Set a custom scale. Autoscaling will be disabled. + * For example setScale('minute', 5) will result + * in minor steps of 5 minutes, and major steps of an hour. + * + * @param {{scale: string, step: number}} params + * An object containing two properties: + * - A string 'scale'. Choose from 'millisecond', 'second', + * 'minute', 'hour', 'weekday, 'day, 'month, 'year'. + * - A number 'step'. A step size, by default 1. + * Choose for example 1, 2, 5, or 10. */ - Filter.prototype.selectValue = function(index) { - if (index >= this.values.length) - throw 'Error: index out of range'; + TimeStep.prototype.setScale = function(params) { + if (params && typeof params.scale == 'string') { + this.scale = params.scale; + this.step = params.step > 0 ? params.step : 1; + this.autoScale = false; + } + }; - this.index = index; - this.value = this.values[index]; + /** + * Enable or disable autoscaling + * @param {boolean} enable If true, autoascaling is set true + */ + TimeStep.prototype.setAutoScale = function (enable) { + this.autoScale = enable; }; + /** - * Load all filtered rows in the background one by one - * Start this method without providing an index! + * Automatically determine the scale that bests fits the provided minimum step + * @param {Number} [minimumStep] The minimum step size in milliseconds */ - Filter.prototype.loadInBackground = function(index) { - if (index === undefined) - index = 0; + TimeStep.prototype.setMinimumStep = function(minimumStep) { + if (minimumStep == undefined) { + return; + } - var frame = this.graph.frame; + //var b = asc + ds; - if (index < this.values.length) { - var dataPointsTemp = this._getDataPoints(index); - //this.graph.redrawInfo(); // TODO: not neat + var stepYear = (1000 * 60 * 60 * 24 * 30 * 12); + var stepMonth = (1000 * 60 * 60 * 24 * 30); + var stepDay = (1000 * 60 * 60 * 24); + var stepHour = (1000 * 60 * 60); + var stepMinute = (1000 * 60); + var stepSecond = (1000); + var stepMillisecond= (1); - // create a progress box - if (frame.progress === undefined) { - frame.progress = document.createElement('DIV'); - frame.progress.style.position = 'absolute'; - frame.progress.style.color = 'gray'; - frame.appendChild(frame.progress); + // find the smallest step that is larger than the provided minimumStep + if (stepYear*1000 > minimumStep) {this.scale = 'year'; this.step = 1000;} + if (stepYear*500 > minimumStep) {this.scale = 'year'; this.step = 500;} + if (stepYear*100 > minimumStep) {this.scale = 'year'; this.step = 100;} + if (stepYear*50 > minimumStep) {this.scale = 'year'; this.step = 50;} + if (stepYear*10 > minimumStep) {this.scale = 'year'; this.step = 10;} + if (stepYear*5 > minimumStep) {this.scale = 'year'; this.step = 5;} + if (stepYear > minimumStep) {this.scale = 'year'; this.step = 1;} + if (stepMonth*3 > minimumStep) {this.scale = 'month'; this.step = 3;} + if (stepMonth > minimumStep) {this.scale = 'month'; this.step = 1;} + if (stepDay*5 > minimumStep) {this.scale = 'day'; this.step = 5;} + if (stepDay*2 > minimumStep) {this.scale = 'day'; this.step = 2;} + if (stepDay > minimumStep) {this.scale = 'day'; this.step = 1;} + if (stepDay/2 > minimumStep) {this.scale = 'weekday'; this.step = 1;} + if (stepHour*4 > minimumStep) {this.scale = 'hour'; this.step = 4;} + if (stepHour > minimumStep) {this.scale = 'hour'; this.step = 1;} + if (stepMinute*15 > minimumStep) {this.scale = 'minute'; this.step = 15;} + if (stepMinute*10 > minimumStep) {this.scale = 'minute'; this.step = 10;} + if (stepMinute*5 > minimumStep) {this.scale = 'minute'; this.step = 5;} + if (stepMinute > minimumStep) {this.scale = 'minute'; this.step = 1;} + if (stepSecond*15 > minimumStep) {this.scale = 'second'; this.step = 15;} + if (stepSecond*10 > minimumStep) {this.scale = 'second'; this.step = 10;} + if (stepSecond*5 > minimumStep) {this.scale = 'second'; this.step = 5;} + if (stepSecond > minimumStep) {this.scale = 'second'; this.step = 1;} + if (stepMillisecond*200 > minimumStep) {this.scale = 'millisecond'; this.step = 200;} + if (stepMillisecond*100 > minimumStep) {this.scale = 'millisecond'; this.step = 100;} + if (stepMillisecond*50 > minimumStep) {this.scale = 'millisecond'; this.step = 50;} + if (stepMillisecond*10 > minimumStep) {this.scale = 'millisecond'; this.step = 10;} + if (stepMillisecond*5 > minimumStep) {this.scale = 'millisecond'; this.step = 5;} + if (stepMillisecond > minimumStep) {this.scale = 'millisecond'; this.step = 1;} + }; + + /** + * Snap a date to a rounded value. + * The snap intervals are dependent on the current scale and step. + * Static function + * @param {Date} date the date to be snapped. + * @param {string} scale Current scale, can be 'millisecond', 'second', + * 'minute', 'hour', 'weekday, 'day, 'month, 'year'. + * @param {number} step Current step (1, 2, 4, 5, ... + * @return {Date} snappedDate + */ + TimeStep.snap = function(date, scale, step) { + var clone = new Date(date.valueOf()); + + if (scale == 'year') { + var year = clone.getFullYear() + Math.round(clone.getMonth() / 12); + clone.setFullYear(Math.round(year / step) * step); + clone.setMonth(0); + clone.setDate(0); + clone.setHours(0); + clone.setMinutes(0); + clone.setSeconds(0); + clone.setMilliseconds(0); + } + else if (scale == 'month') { + if (clone.getDate() > 15) { + clone.setDate(1); + clone.setMonth(clone.getMonth() + 1); + // important: first set Date to 1, after that change the month. + } + else { + clone.setDate(1); } - var progress = this.getLoadedProgress(); - frame.progress.innerHTML = 'Loading animation... ' + progress + '%'; - // TODO: this is no nice solution... - frame.progress.style.bottom = 60 + 'px'; // TODO: use height of slider - frame.progress.style.left = 10 + 'px'; - var me = this; - setTimeout(function() {me.loadInBackground(index+1);}, 10); - this.loaded = false; + clone.setHours(0); + clone.setMinutes(0); + clone.setSeconds(0); + clone.setMilliseconds(0); } - else { - this.loaded = true; + else if (scale == 'day') { + //noinspection FallthroughInSwitchStatementJS + switch (step) { + case 5: + case 2: + clone.setHours(Math.round(clone.getHours() / 24) * 24); break; + default: + clone.setHours(Math.round(clone.getHours() / 12) * 12); break; + } + clone.setMinutes(0); + clone.setSeconds(0); + clone.setMilliseconds(0); + } + else if (scale == 'weekday') { + //noinspection FallthroughInSwitchStatementJS + switch (step) { + case 5: + case 2: + clone.setHours(Math.round(clone.getHours() / 12) * 12); break; + default: + clone.setHours(Math.round(clone.getHours() / 6) * 6); break; + } + clone.setMinutes(0); + clone.setSeconds(0); + clone.setMilliseconds(0); + } + else if (scale == 'hour') { + switch (step) { + case 4: + clone.setMinutes(Math.round(clone.getMinutes() / 60) * 60); break; + default: + clone.setMinutes(Math.round(clone.getMinutes() / 30) * 30); break; + } + clone.setSeconds(0); + clone.setMilliseconds(0); + } else if (scale == 'minute') { + //noinspection FallthroughInSwitchStatementJS + switch (step) { + case 15: + case 10: + clone.setMinutes(Math.round(clone.getMinutes() / 5) * 5); + clone.setSeconds(0); + break; + case 5: + clone.setSeconds(Math.round(clone.getSeconds() / 60) * 60); break; + default: + clone.setSeconds(Math.round(clone.getSeconds() / 30) * 30); break; + } + clone.setMilliseconds(0); + } + else if (scale == 'second') { + //noinspection FallthroughInSwitchStatementJS + switch (step) { + case 15: + case 10: + clone.setSeconds(Math.round(clone.getSeconds() / 5) * 5); + clone.setMilliseconds(0); + break; + case 5: + clone.setMilliseconds(Math.round(clone.getMilliseconds() / 1000) * 1000); break; + default: + clone.setMilliseconds(Math.round(clone.getMilliseconds() / 500) * 500); break; + } + } + else if (scale == 'millisecond') { + var _step = step > 5 ? step / 2 : 1; + clone.setMilliseconds(Math.round(clone.getMilliseconds() / _step) * _step); + } + + return clone; + }; - // remove the progress box - if (frame.progress !== undefined) { - frame.removeChild(frame.progress); - frame.progress = undefined; + /** + * Check if the current value is a major value (for example when the step + * is DAY, a major value is each first day of the MONTH) + * @return {boolean} true if current date is major, else false. + */ + TimeStep.prototype.isMajor = function() { + if (this.switchedYear == true) { + this.switchedYear = false; + switch (this.scale) { + case 'year': + case 'month': + case 'weekday': + case 'day': + case 'hour': + case 'minute': + case 'second': + case 'millisecond': + return true; + default: + return false; + } + } + else if (this.switchedMonth == true) { + this.switchedMonth = false; + switch (this.scale) { + case 'weekday': + case 'day': + case 'hour': + case 'minute': + case 'second': + case 'millisecond': + return true; + default: + return false; + } + } + else if (this.switchedDay == true) { + this.switchedDay = false; + switch (this.scale) { + case 'millisecond': + case 'second': + case 'minute': + case 'hour': + return true; + default: + return false; } + } - if (this.onLoadCallback) - this.onLoadCallback(); + switch (this.scale) { + case 'millisecond': + return (this.current.getMilliseconds() == 0); + case 'second': + return (this.current.getSeconds() == 0); + case 'minute': + return (this.current.getHours() == 0) && (this.current.getMinutes() == 0); + case 'hour': + return (this.current.getHours() == 0); + case 'weekday': // intentional fall through + case 'day': + return (this.current.getDate() == 1); + case 'month': + return (this.current.getMonth() == 0); + case 'year': + return false; + default: + return false; } }; - module.exports = Filter; - -/***/ }, -/* 16 */ -/***/ function(module, exports, __webpack_require__) { + /** + * Returns formatted text for the minor axislabel, depending on the current + * date and the scale. For example when scale is MINUTE, the current time is + * formatted as "hh:mm". + * @param {Date} [date] custom date. if not provided, current date is taken + */ + TimeStep.prototype.getLabelMinor = function(date) { + if (date == undefined) { + date = this.current; + } - var util = __webpack_require__(1); + var format = this.format.minorLabels[this.scale]; + return (format && format.length > 0) ? moment(date).format(format) : ''; + }; /** - * @constructor Slider - * - * An html slider control with start/stop/prev/next buttons - * @param {Element} container The element where the slider will be created - * @param {Object} options Available options: - * {boolean} visible If true (default) the - * slider is visible. + * Returns formatted text for the major axis label, depending on the current + * date and the scale. For example when scale is MINUTE, the major scale is + * hours, and the hour will be formatted as "hh". + * @param {Date} [date] custom date. if not provided, current date is taken */ - function Slider(container, options) { - if (container === undefined) { - throw 'Error: No container element defined'; + TimeStep.prototype.getLabelMajor = function(date) { + if (date == undefined) { + date = this.current; } - this.container = container; - this.visible = (options && options.visible != undefined) ? options.visible : true; - if (this.visible) { - this.frame = document.createElement('DIV'); - //this.frame.style.backgroundColor = '#E5E5E5'; - this.frame.style.width = '100%'; - this.frame.style.position = 'relative'; - this.container.appendChild(this.frame); + var format = this.format.majorLabels[this.scale]; + return (format && format.length > 0) ? moment(date).format(format) : ''; + }; - this.frame.prev = document.createElement('INPUT'); - this.frame.prev.type = 'BUTTON'; - this.frame.prev.value = 'Prev'; - this.frame.appendChild(this.frame.prev); + TimeStep.prototype.getClassName = function() { + var m = moment(this.current); + var date = m.locale ? m.locale('en') : m.lang('en'); // old versions of moment have .lang() function + var step = this.step; - this.frame.play = document.createElement('INPUT'); - this.frame.play.type = 'BUTTON'; - this.frame.play.value = 'Play'; - this.frame.appendChild(this.frame.play); + function even(value) { + return (value / step % 2 == 0) ? ' even' : ' odd'; + } - this.frame.next = document.createElement('INPUT'); - this.frame.next.type = 'BUTTON'; - this.frame.next.value = 'Next'; - this.frame.appendChild(this.frame.next); + function today(date) { + if (date.isSame(new Date(), 'day')) { + return ' today'; + } + if (date.isSame(moment().add(1, 'day'), 'day')) { + return ' tomorrow'; + } + if (date.isSame(moment().add(-1, 'day'), 'day')) { + return ' yesterday'; + } + return ''; + } - this.frame.bar = document.createElement('INPUT'); - this.frame.bar.type = 'BUTTON'; - this.frame.bar.style.position = 'absolute'; - this.frame.bar.style.border = '1px solid red'; - this.frame.bar.style.width = '100px'; - this.frame.bar.style.height = '6px'; - this.frame.bar.style.borderRadius = '2px'; - this.frame.bar.style.MozBorderRadius = '2px'; - this.frame.bar.style.border = '1px solid #7F7F7F'; - this.frame.bar.style.backgroundColor = '#E5E5E5'; - this.frame.appendChild(this.frame.bar); + function currentWeek(date) { + return date.isSame(new Date(), 'week') ? ' current-week' : ''; + } - this.frame.slide = document.createElement('INPUT'); - this.frame.slide.type = 'BUTTON'; - this.frame.slide.style.margin = '0px'; - this.frame.slide.value = ' '; - this.frame.slide.style.position = 'relative'; - this.frame.slide.style.left = '-100px'; - this.frame.appendChild(this.frame.slide); + function currentMonth(date) { + return date.isSame(new Date(), 'month') ? ' current-month' : ''; + } - // create events - var me = this; - this.frame.slide.onmousedown = function (event) {me._onMouseDown(event);}; - this.frame.prev.onclick = function (event) {me.prev(event);}; - this.frame.play.onclick = function (event) {me.togglePlay(event);}; - this.frame.next.onclick = function (event) {me.next(event);}; + function currentYear(date) { + return date.isSame(new Date(), 'year') ? ' current-year' : ''; } - this.onChangeCallback = undefined; + switch (this.scale) { + case 'millisecond': + return even(date.milliseconds()).trim(); - this.values = []; - this.index = undefined; + case 'second': + return even(date.seconds()).trim(); - this.playTimeout = undefined; - this.playInterval = 1000; // milliseconds - this.playLoop = true; - } + case 'minute': + return even(date.minutes()).trim(); - /** - * Select the previous index - */ - Slider.prototype.prev = function() { - var index = this.getIndex(); - if (index > 0) { - index--; - this.setIndex(index); - } - }; + case 'hour': + var hours = date.hours(); + if (this.step == 4) { + hours = hours + '-' + (hours + 4); + } + return hours + 'h' + today(date) + even(date.hours()); - /** - * Select the next index - */ - Slider.prototype.next = function() { - var index = this.getIndex(); - if (index < this.values.length - 1) { - index++; - this.setIndex(index); + case 'weekday': + return date.format('dddd').toLowerCase() + + today(date) + currentWeek(date) + even(date.date()); + + case 'day': + var day = date.date(); + var month = date.format('MMMM').toLowerCase(); + return 'day' + day + ' ' + month + currentMonth(date) + even(day - 1); + + case 'month': + return date.format('MMMM').toLowerCase() + + currentMonth(date) + even(date.month()); + + case 'year': + var year = date.year(); + return 'year' + year + currentYear(date)+ even(year); + + default: + return ''; } }; + module.exports = TimeStep; + + +/***/ }, +/* 20 */ +/***/ function(module, exports, __webpack_require__) { + + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + /** - * Select the next index + * @constructor Item + * @param {Object} data Object containing (optional) parameters type, + * start, end, content, group, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} options Configuration options + * // TODO: describe available options */ - Slider.prototype.playNext = function() { - var start = new Date(); + function Item (data, conversion, options) { + this.id = null; + this.parent = null; + this.data = data; + this.dom = null; + this.conversion = conversion || {}; + this.options = options || {}; - var index = this.getIndex(); - if (index < this.values.length - 1) { - index++; - this.setIndex(index); - } - else if (this.playLoop) { - // jump to the start - index = 0; - this.setIndex(index); - } + this.selected = false; + this.displayed = false; + this.dirty = true; - var end = new Date(); - var diff = (end - start); + this.top = null; + this.left = null; + this.width = null; + this.height = null; + } - // calculate how much time it to to set the index and to execute the callback - // function. - var interval = Math.max(this.playInterval - diff, 0); - // document.title = diff // TODO: cleanup + Item.prototype.stack = true; - var me = this; - this.playTimeout = setTimeout(function() {me.playNext();}, interval); + /** + * Select current item + */ + Item.prototype.select = function() { + this.selected = true; + this.dirty = true; + if (this.displayed) this.redraw(); }; /** - * Toggle start or stop playing + * Unselect current item */ - Slider.prototype.togglePlay = function() { - if (this.playTimeout === undefined) { - this.play(); - } else { - this.stop(); - } + Item.prototype.unselect = function() { + this.selected = false; + this.dirty = true; + if (this.displayed) this.redraw(); }; /** - * Start playing + * Set data for the item. Existing data will be updated. The id should not + * be changed. When the item is displayed, it will be redrawn immediately. + * @param {Object} data */ - Slider.prototype.play = function() { - // Test whether already playing - if (this.playTimeout) return; - - this.playNext(); - - if (this.frame) { - this.frame.play.value = 'Stop'; - } + Item.prototype.setData = function(data) { + this.data = data; + this.dirty = true; + if (this.displayed) this.redraw(); }; /** - * Stop playing + * Set a parent for the item + * @param {ItemSet | Group} parent */ - Slider.prototype.stop = function() { - clearInterval(this.playTimeout); - this.playTimeout = undefined; - - if (this.frame) { - this.frame.play.value = 'Play'; + Item.prototype.setParent = function(parent) { + if (this.displayed) { + this.hide(); + this.parent = parent; + if (this.parent) { + this.show(); + } + } + else { + this.parent = parent; } }; /** - * Set a callback function which will be triggered when the value of the - * slider bar has changed. + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible */ - Slider.prototype.setOnChangeCallback = function(callback) { - this.onChangeCallback = callback; + Item.prototype.isVisible = function(range) { + // Should be implemented by Item implementations + return false; }; /** - * Set the interval for playing the list - * @param {Number} interval The interval in milliseconds + * Show the Item in the DOM (when not already visible) + * @return {Boolean} changed */ - Slider.prototype.setPlayInterval = function(interval) { - this.playInterval = interval; + Item.prototype.show = function() { + return false; }; /** - * Retrieve the current play interval - * @return {Number} interval The interval in milliseconds + * Hide the Item from the DOM (when visible) + * @return {Boolean} changed */ - Slider.prototype.getPlayInterval = function(interval) { - return this.playInterval; + Item.prototype.hide = function() { + return false; }; /** - * Set looping on or off - * @pararm {boolean} doLoop If true, the slider will jump to the start when - * the end is passed, and will jump to the end - * when the start is passed. + * Repaint the item */ - Slider.prototype.setPlayLoop = function(doLoop) { - this.playLoop = doLoop; + Item.prototype.redraw = function() { + // should be implemented by the item }; + /** + * Reposition the Item horizontally + */ + Item.prototype.repositionX = function() { + // should be implemented by the item + }; /** - * Execute the onchange callback function + * Reposition the Item vertically */ - Slider.prototype.onChange = function() { - if (this.onChangeCallback !== undefined) { - this.onChangeCallback(); - } + Item.prototype.repositionY = function() { + // should be implemented by the item }; /** - * redraw the slider on the correct place + * Repaint a delete button on the top right of the item when the item is selected + * @param {HTMLElement} anchor + * @protected */ - Slider.prototype.redraw = function() { - if (this.frame) { - // resize the bar - this.frame.bar.style.top = (this.frame.clientHeight/2 - - this.frame.bar.offsetHeight/2) + 'px'; - this.frame.bar.style.width = (this.frame.clientWidth - - this.frame.prev.clientWidth - - this.frame.play.clientWidth - - this.frame.next.clientWidth - 30) + 'px'; + Item.prototype._repaintDeleteButton = function (anchor) { + if (this.selected && this.options.editable.remove && !this.dom.deleteButton) { + // create and show button + var me = this; - // position the slider button - var left = this.indexToLeft(this.index); - this.frame.slide.style.left = (left) + 'px'; + var deleteButton = document.createElement('div'); + deleteButton.className = 'delete'; + deleteButton.title = 'Delete this item'; + + Hammer(deleteButton, { + preventDefault: true + }).on('tap', function (event) { + me.parent.removeFromDataSet(me); + event.stopPropagation(); + }); + + anchor.appendChild(deleteButton); + this.dom.deleteButton = deleteButton; + } + else if (!this.selected && this.dom.deleteButton) { + // remove button + if (this.dom.deleteButton.parentNode) { + this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton); + } + this.dom.deleteButton = null; } }; - /** - * Set the list with values for the slider - * @param {Array} values A javascript array with values (any type) + * Set HTML contents for the item + * @param {Element} element HTML element to fill with the contents + * @private */ - Slider.prototype.setValues = function(values) { - this.values = values; + Item.prototype._updateContents = function (element) { + var content; + if (this.options.template) { + var itemData = this.parent.itemSet.itemsData.get(this.id); // get a clone of the data from the dataset + content = this.options.template(itemData); + } + else { + content = this.data.content; + } - if (this.values.length > 0) - this.setIndex(0); - else - this.index = undefined; + if(content !== this.content) { + // only replace the content when changed + if (content instanceof Element) { + element.innerHTML = ''; + element.appendChild(content); + } + else if (content != undefined) { + element.innerHTML = content; + } + else { + if (!(this.data.type == 'background' && this.data.content === undefined)) { + throw new Error('Property "content" missing in item ' + this.id); + } + } + + this.content = content; + } }; /** - * Select a value by its index - * @param {Number} index + * Set HTML contents for the item + * @param {Element} element HTML element to fill with the contents + * @private */ - Slider.prototype.setIndex = function(index) { - if (index < this.values.length) { - this.index = index; - - this.redraw(); - this.onChange(); + Item.prototype._updateTitle = function (element) { + if (this.data.title != null) { + element.title = this.data.title || ''; } else { - throw 'Error: index out of range'; + element.removeAttribute('title'); } }; /** - * retrieve the index of the currently selected vaue - * @return {Number} index + * Process dataAttributes timeline option and set as data- attributes on dom.content + * @param {Element} element HTML element to which the attributes will be attached + * @private */ - Slider.prototype.getIndex = function() { - return this.index; - }; + Item.prototype._updateDataAttributes = function(element) { + if (this.options.dataAttributes && this.options.dataAttributes.length > 0) { + var attributes = []; + + if (Array.isArray(this.options.dataAttributes)) { + attributes = this.options.dataAttributes; + } + else if (this.options.dataAttributes == 'all') { + attributes = Object.keys(this.data); + } + else { + return; + } + + for (var i = 0; i < attributes.length; i++) { + var name = attributes[i]; + var value = this.data[name]; + if (value != null) { + element.setAttribute('data-' + name, value); + } + else { + element.removeAttribute('data-' + name); + } + } + } + }; /** - * retrieve the currently selected value - * @return {*} value + * Update custom styles of the element + * @param element + * @private */ - Slider.prototype.get = function() { - return this.values[this.index]; - }; + Item.prototype._updateStyle = function(element) { + // remove old styles + if (this.style) { + util.removeCssText(element, this.style); + this.style = null; + } + // append new styles + if (this.data.style) { + util.addCssText(element, this.data.style); + this.style = this.data.style; + } + }; - Slider.prototype._onMouseDown = function(event) { - // only react on left mouse button down - var leftButtonDown = event.which ? (event.which === 1) : (event.button === 1); - if (!leftButtonDown) return; + module.exports = Item; - this.startClientX = event.clientX; - this.startSlideX = parseFloat(this.frame.slide.style.left); - this.frame.style.cursor = 'move'; +/***/ }, +/* 21 */ +/***/ function(module, exports, __webpack_require__) { - // add event listeners to handle moving the contents - // we store the function onmousemove and onmouseup in the graph, so we can - // remove the eventlisteners lateron in the function mouseUp() - var me = this; - this.onmousemove = function (event) {me._onMouseMove(event);}; - this.onmouseup = function (event) {me._onMouseUp(event);}; - util.addEventListener(document, 'mousemove', this.onmousemove); - util.addEventListener(document, 'mouseup', this.onmouseup); - util.preventDefault(event); - }; + var Hammer = __webpack_require__(45); + var Item = __webpack_require__(20); + var BackgroundGroup = __webpack_require__(31); + var RangeItem = __webpack_require__(24); + /** + * @constructor BackgroundItem + * @extends Item + * @param {Object} data Object containing parameters start, end + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe options + */ + // TODO: implement support for the BackgroundItem just having a start, then being displayed as a sort of an annotation + function BackgroundItem (data, conversion, options) { + this.props = { + content: { + width: 0 + } + }; + this.overflow = false; // if contents can overflow (css styling), this flag is set to true - Slider.prototype.leftToIndex = function (left) { - var width = parseFloat(this.frame.bar.style.width) - - this.frame.slide.clientWidth - 10; - var x = left - 3; + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data.id); + } + if (data.end == undefined) { + throw new Error('Property "end" missing in item ' + data.id); + } + } - var index = Math.round(x / width * (this.values.length-1)); - if (index < 0) index = 0; - if (index > this.values.length-1) index = this.values.length-1; + Item.call(this, data, conversion, options); - return index; - }; + this.emptyContent = false; + } - Slider.prototype.indexToLeft = function (index) { - var width = parseFloat(this.frame.bar.style.width) - - this.frame.slide.clientWidth - 10; + BackgroundItem.prototype = new Item (null, null, null); - var x = index / (this.values.length-1) * width; - var left = x + 3; + BackgroundItem.prototype.baseClassName = 'item background'; + BackgroundItem.prototype.stack = false; - return left; + /** + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible + */ + BackgroundItem.prototype.isVisible = function(range) { + // determine visibility + return (this.data.start < range.end) && (this.data.end > range.start); }; + /** + * Repaint the item + */ + BackgroundItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; + // background box + dom.box = document.createElement('div'); + // className is updated in redraw() - Slider.prototype._onMouseMove = function (event) { - var diff = event.clientX - this.startClientX; - var x = this.startSlideX + diff; + // contents box + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); - var index = this.leftToIndex(x); + // Note: we do NOT attach this item as attribute to the DOM, + // such that background items cannot be selected + //dom.box['timeline-item'] = this; - this.setIndex(index); + this.dirty = true; + } - util.preventDefault(); - }; + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + if (!dom.box.parentNode) { + var background = this.parent.dom.background; + if (!background) { + throw new Error('Cannot redraw item: parent has no background container element'); + } + background.appendChild(dom.box); + } + this.displayed = true; + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.content); + this._updateDataAttributes(this.dom.content); + this._updateStyle(this.dom.box); - Slider.prototype._onMouseUp = function (event) { - this.frame.style.cursor = 'auto'; + // update class + var className = (this.data.className ? (' ' + this.data.className) : '') + + (this.selected ? ' selected' : ''); + dom.box.className = this.baseClassName + className; - // remove event listeners - util.removeEventListener(document, 'mousemove', this.onmousemove); - util.removeEventListener(document, 'mouseup', this.onmouseup); + // determine from css whether this box has overflow + this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; - util.preventDefault(); + // recalculate size + this.props.content.width = this.dom.content.offsetWidth; + this.height = 0; // set height zero, so this item will be ignored when stacking items + + this.dirty = false; + } }; - module.exports = Slider; + /** + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. + */ + BackgroundItem.prototype.show = RangeItem.prototype.show; + /** + * Hide the item from the DOM (when visible) + * @return {Boolean} changed + */ + BackgroundItem.prototype.hide = RangeItem.prototype.hide; -/***/ }, -/* 17 */ -/***/ function(module, exports, __webpack_require__) { + /** + * Reposition the item horizontally + * @Override + */ + BackgroundItem.prototype.repositionX = RangeItem.prototype.repositionX; /** - * @prototype StepNumber - * The class StepNumber is an iterator for Numbers. You provide a start and end - * value, and a best step size. StepNumber itself rounds to fixed values and - * a finds the step that best fits the provided step. - * - * If prettyStep is true, the step size is chosen as close as possible to the - * provided step, but being a round value like 1, 2, 5, 10, 20, 50, .... - * - * Example usage: - * var step = new StepNumber(0, 10, 2.5, true); - * step.start(); - * while (!step.end()) { - * alert(step.getCurrent()); - * step.next(); - * } - * - * Version: 1.0 - * - * @param {Number} start The start value - * @param {Number} end The end value - * @param {Number} step Optional. Step size. Must be a positive value. - * @param {boolean} prettyStep Optional. If true, the step size is rounded - * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...) + * Reposition the item vertically + * @Override */ - function StepNumber(start, end, step, prettyStep) { - // set default values - this._start = 0; - this._end = 0; - this._step = 1; - this.prettyStep = true; - this.precision = 5; + BackgroundItem.prototype.repositionY = function(margin) { + var onTop = this.options.orientation === 'top'; + this.dom.content.style.top = onTop ? '' : '0'; + this.dom.content.style.bottom = onTop ? '0' : ''; + var height; - this._current = 0; - this.setRange(start, end, step, prettyStep); + // special positioning for subgroups + if (this.data.subgroup !== undefined) { + var itemSubgroup = this.data.subgroup; + var subgroups = this.parent.subgroups; + var subgroupIndex = subgroups[itemSubgroup].index; + // if the orientation is top, we need to take the difference in height into account. + if (onTop == true) { + // the first subgroup will have to account for the distance from the top to the first item. + height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; + height += subgroupIndex == 0 ? margin.axis - 0.5*margin.item.vertical : 0; + var newTop = this.parent.top; + for (var subgroup in subgroups) { + if (subgroups.hasOwnProperty(subgroup)) { + if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroupIndex) { + newTop += subgroups[subgroup].height + margin.item.vertical; + } + } + } + + // the others will have to be offset downwards with this same distance. + newTop += subgroupIndex != 0 ? margin.axis - 0.5 * margin.item.vertical : 0; + this.dom.box.style.top = newTop + 'px'; + this.dom.box.style.bottom = ''; + } + // and when the orientation is bottom: + else { + var newTop = this.parent.top; + for (var subgroup in subgroups) { + if (subgroups.hasOwnProperty(subgroup)) { + if (subgroups[subgroup].visible == true && subgroups[subgroup].index > subgroupIndex) { + newTop += subgroups[subgroup].height + margin.item.vertical; + } + } + } + height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; + this.dom.box.style.top = newTop + 'px'; + this.dom.box.style.bottom = ''; + } + } + // and in the case of no subgroups: + else { + // we want backgrounds with groups to only show in groups. + if (this.parent instanceof BackgroundGroup) { + // if the item is not in a group: + height = Math.max(this.parent.height, + this.parent.itemSet.body.domProps.center.height, + this.parent.itemSet.body.domProps.centerContainer.height); + this.dom.box.style.top = onTop ? '0' : ''; + this.dom.box.style.bottom = onTop ? '' : '0'; + } + else { + height = this.parent.height; + // same alignment for items when orientation is top or bottom + this.dom.box.style.top = this.parent.top + 'px'; + this.dom.box.style.bottom = ''; + } + } + this.dom.box.style.height = height + 'px'; }; - /** - * Set a new range: start, end and step. - * - * @param {Number} start The start value - * @param {Number} end The end value - * @param {Number} step Optional. Step size. Must be a positive value. - * @param {boolean} prettyStep Optional. If true, the step size is rounded - * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...) - */ - StepNumber.prototype.setRange = function(start, end, step, prettyStep) { - this._start = start ? start : 0; - this._end = end ? end : 0; + module.exports = BackgroundItem; - this.setStep(step, prettyStep); - }; + +/***/ }, +/* 22 */ +/***/ function(module, exports, __webpack_require__) { + + var Item = __webpack_require__(20); + var util = __webpack_require__(1); /** - * Set a new step size - * @param {Number} step New step size. Must be a positive value - * @param {boolean} prettyStep Optional. If true, the provided step is rounded - * to a pretty step size (like 1, 2, 5, 10, 20, 50, ...) + * @constructor BoxItem + * @extends Item + * @param {Object} data Object containing parameters start + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe available options */ - StepNumber.prototype.setStep = function(step, prettyStep) { - if (step === undefined || step <= 0) - return; + function BoxItem (data, conversion, options) { + this.props = { + dot: { + width: 0, + height: 0 + }, + line: { + width: 0, + height: 0 + } + }; - if (prettyStep !== undefined) - this.prettyStep = prettyStep; + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data); + } + } - if (this.prettyStep === true) - this._step = StepNumber.calculatePrettyStep(step); - else - this._step = step; + Item.call(this, data, conversion, options); + } + + BoxItem.prototype = new Item (null, null, null); + + /** + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible + */ + BoxItem.prototype.isVisible = function(range) { + // determine visibility + // TODO: account for the real width of the item. Right now we just add 1/4 to the window + var interval = (range.end - range.start) / 4; + return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); }; /** - * Calculate a nice step size, closest to the desired step size. - * Returns a value in one of the ranges 1*10^n, 2*10^n, or 5*10^n, where n is an - * integer Number. For example 1, 2, 5, 10, 20, 50, etc... - * @param {Number} step Desired step size - * @return {Number} Nice step size + * Repaint the item */ - StepNumber.calculatePrettyStep = function (step) { - var log10 = function (x) {return Math.log(x) / Math.LN10;}; + BoxItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - // try three steps (multiple of 1, 2, or 5 - var step1 = Math.pow(10, Math.round(log10(step))), - step2 = 2 * Math.pow(10, Math.round(log10(step / 2))), - step5 = 5 * Math.pow(10, Math.round(log10(step / 5))); + // create main box + dom.box = document.createElement('DIV'); - // choose the best step (closest to minimum step) - var prettyStep = step1; - if (Math.abs(step2 - step) <= Math.abs(prettyStep - step)) prettyStep = step2; - if (Math.abs(step5 - step) <= Math.abs(prettyStep - step)) prettyStep = step5; + // contents box (inside the background box). used for making margins + dom.content = document.createElement('DIV'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); - // for safety - if (prettyStep <= 0) { - prettyStep = 1; + // line to axis + dom.line = document.createElement('DIV'); + dom.line.className = 'line'; + + // dot on axis + dom.dot = document.createElement('DIV'); + dom.dot.className = 'dot'; + + // attach this item as attribute + dom.box['timeline-item'] = this; + + this.dirty = true; } - return prettyStep; - }; + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + if (!dom.box.parentNode) { + var foreground = this.parent.dom.foreground; + if (!foreground) throw new Error('Cannot redraw item: parent has no foreground container element'); + foreground.appendChild(dom.box); + } + if (!dom.line.parentNode) { + var background = this.parent.dom.background; + if (!background) throw new Error('Cannot redraw item: parent has no background container element'); + background.appendChild(dom.line); + } + if (!dom.dot.parentNode) { + var axis = this.parent.dom.axis; + if (!background) throw new Error('Cannot redraw item: parent has no axis container element'); + axis.appendChild(dom.dot); + } + this.displayed = true; - /** - * returns the current value of the step - * @return {Number} current value - */ - StepNumber.prototype.getCurrent = function () { - return parseFloat(this._current.toPrecision(this.precision)); - }; + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.box); + this._updateDataAttributes(this.dom.box); + this._updateStyle(this.dom.box); - /** - * returns the current step size - * @return {Number} current step size - */ - StepNumber.prototype.getStep = function () { - return this._step; + // update class + var className = (this.data.className? ' ' + this.data.className : '') + + (this.selected ? ' selected' : ''); + dom.box.className = 'item box' + className; + dom.line.className = 'item line' + className; + dom.dot.className = 'item dot' + className; + + // recalculate size + this.props.dot.height = dom.dot.offsetHeight; + this.props.dot.width = dom.dot.offsetWidth; + this.props.line.width = dom.line.offsetWidth; + this.width = dom.box.offsetWidth; + this.height = dom.box.offsetHeight; + + this.dirty = false; + } + + this._repaintDeleteButton(dom.box); }; /** - * Set the current value to the largest value smaller than start, which - * is a multiple of the step size + * Show the item in the DOM (when not already displayed). The items DOM will + * be created when needed. */ - StepNumber.prototype.start = function() { - this._current = this._start - this._start % this._step; + BoxItem.prototype.show = function() { + if (!this.displayed) { + this.redraw(); + } }; /** - * Do a step, add the step size to the current value + * Hide the item from the DOM (when visible) */ - StepNumber.prototype.next = function () { - this._current += this._step; + BoxItem.prototype.hide = function() { + if (this.displayed) { + var dom = this.dom; + + if (dom.box.parentNode) dom.box.parentNode.removeChild(dom.box); + if (dom.line.parentNode) dom.line.parentNode.removeChild(dom.line); + if (dom.dot.parentNode) dom.dot.parentNode.removeChild(dom.dot); + + this.top = null; + this.left = null; + + this.displayed = false; + } }; /** - * Returns true whether the end is reached - * @return {boolean} True if the current value has passed the end value. + * Reposition the item horizontally + * @Override */ - StepNumber.prototype.end = function () { - return (this._current > this._end); - }; + BoxItem.prototype.repositionX = function() { + var start = this.conversion.toScreen(this.data.start); + var align = this.options.align; + var left; + var box = this.dom.box; + var line = this.dom.line; + var dot = this.dom.dot; - module.exports = StepNumber; + // calculate left position of the box + if (align == 'right') { + this.left = start - this.width; + } + else if (align == 'left') { + this.left = start; + } + else { + // default or 'center' + this.left = start - this.width / 2; + } + // reposition box + box.style.left = this.left + 'px'; -/***/ }, -/* 18 */ -/***/ function(module, exports, __webpack_require__) { + // reposition line + line.style.left = (start - this.props.line.width / 2) + 'px'; - var Emitter = __webpack_require__(11); - var Hammer = __webpack_require__(19); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(9); - var Range = __webpack_require__(21); - var Core = __webpack_require__(25); - var TimeAxis = __webpack_require__(40); - var CurrentTime = __webpack_require__(41); - var CustomTime = __webpack_require__(38); - var ItemSet = __webpack_require__(26); + // reposition dot + dot.style.left = (start - this.props.dot.width / 2) + 'px'; + }; /** - * Create a timeline visualization - * @param {HTMLElement} container - * @param {vis.DataSet | vis.DataView | Array | google.visualization.DataTable} [items] - * @param {vis.DataSet | vis.DataView | Array | google.visualization.DataTable} [groups] - * @param {Object} [options] See Timeline.setOptions for the available options. - * @constructor - * @extends Core + * Reposition the item vertically + * @Override */ - function Timeline (container, items, groups, options) { - if (!(this instanceof Timeline)) { - throw new SyntaxError('Constructor must be called with the new operator'); + BoxItem.prototype.repositionY = function() { + var orientation = this.options.orientation; + var box = this.dom.box; + var line = this.dom.line; + var dot = this.dom.dot; + + if (orientation == 'top') { + box.style.top = (this.top || 0) + 'px'; + + line.style.top = '0'; + line.style.height = (this.parent.top + this.top + 1) + 'px'; + line.style.bottom = ''; } + else { // orientation 'bottom' + var itemSetHeight = this.parent.itemSet.props.height; // TODO: this is nasty + var lineHeight = itemSetHeight - this.parent.top - this.parent.height + this.top; - // if the third element is options, the forth is groups (optionally); - if (!(Array.isArray(groups) || groups instanceof DataSet || groups instanceof DataView) && groups instanceof Object) { - var forthArgument = options; - options = groups; - groups = forthArgument; + box.style.top = (this.parent.height - this.top - this.height || 0) + 'px'; + line.style.top = (itemSetHeight - lineHeight) + 'px'; + line.style.bottom = '0'; } - var me = this; - this.defaultOptions = { - start: null, - end: null, + dot.style.top = (-this.props.dot.height / 2) + 'px'; + }; - autoResize: true, + module.exports = BoxItem; - orientation: 'bottom', - width: null, - height: null, - maxHeight: null, - minHeight: null - }; - this.options = util.deepExtend({}, this.defaultOptions); - // Create the DOM, props, and emitter - this._create(container); +/***/ }, +/* 23 */ +/***/ function(module, exports, __webpack_require__) { - // all components listed here will be repainted automatically - this.components = []; + var Item = __webpack_require__(20); - this.body = { - dom: this.dom, - domProps: this.props, - emitter: { - on: this.on.bind(this), - off: this.off.bind(this), - emit: this.emit.bind(this) + /** + * @constructor PointItem + * @extends Item + * @param {Object} data Object containing parameters start + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe available options + */ + function PointItem (data, conversion, options) { + this.props = { + dot: { + top: 0, + width: 0, + height: 0 }, - hiddenDates: [], - util: { - getScale: function () { - return me.timeAxis.step.scale; - }, - getStep: function () { - return me.timeAxis.step.step; - }, - - toScreen: me._toScreen.bind(me), - toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width - toTime: me._toTime.bind(me), - toGlobalTime : me._toGlobalTime.bind(me) + content: { + height: 0, + marginLeft: 0 } }; - // range - this.range = new Range(this.body); - this.components.push(this.range); - this.body.range = this.range; - - // time axis - this.timeAxis = new TimeAxis(this.body); - this.components.push(this.timeAxis); - - // current time bar - this.currentTime = new CurrentTime(this.body); - this.components.push(this.currentTime); - - // custom time bar - // Note: time bar will be attached in this.setOptions when selected - this.customTime = new CustomTime(this.body); - this.components.push(this.customTime); - - // item set - this.itemSet = new ItemSet(this.body); - this.components.push(this.itemSet); - - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet - - // apply options - if (options) { - this.setOptions(options); - } - - // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! - if (groups) { - this.setGroups(groups); + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data); + } } - // create itemset - if (items) { - this.setItems(items); - } - else { - this._redraw(); - } + Item.call(this, data, conversion, options); } - // Extend the functionality from Core - Timeline.prototype = new Core(); + PointItem.prototype = new Item (null, null, null); /** - * Force a redraw. The size of all items will be recalculated. - * Can be useful to manually redraw when option autoResize=false and the window - * has been resized, or when the items CSS has been changed. + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible */ - Timeline.prototype.redraw = function() { - this.itemSet && this.itemSet.markDirty({refreshItems: true}); - this._redraw(); + PointItem.prototype.isVisible = function(range) { + // determine visibility + // TODO: account for the real width of the item. Right now we just add 1/4 to the window + var interval = (range.end - range.start) / 4; + return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); }; /** - * Set items - * @param {vis.DataSet | Array | google.visualization.DataTable | null} items + * Repaint the item */ - Timeline.prototype.setItems = function(items) { - var initialLoad = (this.itemsData == null); + PointItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - // convert to type DataSet when needed - var newDataSet; - if (!items) { - newDataSet = null; - } - else if (items instanceof DataSet || items instanceof DataView) { - newDataSet = items; - } - else { - // turn an array into a dataset - newDataSet = new DataSet(items, { - type: { - start: 'Date', - end: 'Date' - } - }); - } + // background box + dom.point = document.createElement('div'); + // className is updated in redraw() - // set items - this.itemsData = newDataSet; - this.itemSet && this.itemSet.setItems(newDataSet); + // contents box, right from the dot + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.point.appendChild(dom.content); - if (initialLoad) { - if (this.options.start != undefined || this.options.end != undefined) { - if (this.options.start == undefined || this.options.end == undefined) { - var dataRange = this._getDataRange(); - } + // dot at start + dom.dot = document.createElement('div'); + dom.point.appendChild(dom.dot); - var start = this.options.start != undefined ? this.options.start : dataRange.start; - var end = this.options.end != undefined ? this.options.end : dataRange.end; + // attach this item as attribute + dom.point['timeline-item'] = this; - this.setWindow(start, end, {animate: false}); - } - else { - this.fit({animate: false}); - } + this.dirty = true; } - }; - /** - * Set groups - * @param {vis.DataSet | Array | google.visualization.DataTable} groups - */ - Timeline.prototype.setGroups = function(groups) { - // convert to type DataSet when needed - var newDataSet; - if (!groups) { - newDataSet = null; - } - else if (groups instanceof DataSet || groups instanceof DataView) { - newDataSet = groups; + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); } - else { - // turn an array into a dataset - newDataSet = new DataSet(groups); + if (!dom.point.parentNode) { + var foreground = this.parent.dom.foreground; + if (!foreground) { + throw new Error('Cannot redraw item: parent has no foreground container element'); + } + foreground.appendChild(dom.point); } + this.displayed = true; - this.groupsData = newDataSet; - this.itemSet.setGroups(newDataSet); - }; + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.point); + this._updateDataAttributes(this.dom.point); + this._updateStyle(this.dom.point); - /** - * Set selected items by their id. Replaces the current selection - * Unknown id's are silently ignored. - * @param {string[] | string} [ids] An array with zero or more id's of the items to be - * selected. If ids is an empty array, all items will be - * unselected. - * @param {Object} [options] Available options: - * `focus: boolean` - * If true, focus will be set to the selected item(s) - * `animate: boolean | number` - * If true (default), the range is animated - * smoothly to the new window. - * If a number, the number is taken as duration - * for the animation. Default duration is 500 ms. - * Only applicable when option focus is true. - */ - Timeline.prototype.setSelection = function(ids, options) { - this.itemSet && this.itemSet.setSelection(ids); + // update class + var className = (this.data.className? ' ' + this.data.className : '') + + (this.selected ? ' selected' : ''); + dom.point.className = 'item point' + className; + dom.dot.className = 'item dot' + className; - if (options && options.focus) { - this.focus(ids, options); + // recalculate size + this.width = dom.point.offsetWidth; + this.height = dom.point.offsetHeight; + this.props.dot.width = dom.dot.offsetWidth; + this.props.dot.height = dom.dot.offsetHeight; + this.props.content.height = dom.content.offsetHeight; + + // resize contents + dom.content.style.marginLeft = 2 * this.props.dot.width + 'px'; + //dom.content.style.marginRight = ... + 'px'; // TODO: margin right + + dom.dot.style.top = ((this.height - this.props.dot.height) / 2) + 'px'; + dom.dot.style.left = (this.props.dot.width / 2) + 'px'; + + this.dirty = false; } + + this._repaintDeleteButton(dom.point); }; /** - * Get the selected items by their id - * @return {Array} ids The ids of the selected items + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. */ - Timeline.prototype.getSelection = function() { - return this.itemSet && this.itemSet.getSelection() || []; + PointItem.prototype.show = function() { + if (!this.displayed) { + this.redraw(); + } }; /** - * Adjust the visible window such that the selected item (or multiple items) - * are centered on screen. - * @param {String | String[]} id An item id or array with item ids - * @param {Object} [options] Available options: - * `animate: boolean | number` - * If true (default), the range is animated - * smoothly to the new window. - * If a number, the number is taken as duration - * for the animation. Default duration is 500 ms. - * Only applicable when option focus is true + * Hide the item from the DOM (when visible) */ - Timeline.prototype.focus = function(id, options) { - if (!this.itemsData || id == undefined) return; - - var ids = Array.isArray(id) ? id : [id]; - - // get the specified item(s) - var itemsData = this.itemsData.getDataSet().get(ids, { - type: { - start: 'Date', - end: 'Date' + PointItem.prototype.hide = function() { + if (this.displayed) { + if (this.dom.point.parentNode) { + this.dom.point.parentNode.removeChild(this.dom.point); } - }); - // calculate minimum start and maximum end of specified items - var start = null; - var end = null; - itemsData.forEach(function (itemData) { - var s = itemData.start.valueOf(); - var e = 'end' in itemData ? itemData.end.valueOf() : itemData.start.valueOf(); + this.top = null; + this.left = null; - if (start === null || s < start) { - start = s; - } + this.displayed = false; + } + }; - if (end === null || e > end) { - end = e; - } - }); + /** + * Reposition the item horizontally + * @Override + */ + PointItem.prototype.repositionX = function() { + var start = this.conversion.toScreen(this.data.start); - if (start !== null && end !== null) { - // calculate the new middle and interval for the window - var middle = (start + end) / 2; - var interval = Math.max((this.range.end - this.range.start), (end - start) * 1.1); + this.left = start - this.props.dot.width; - var animate = (options && options.animate !== undefined) ? options.animate : true; - this.range.setRange(middle - interval / 2, middle + interval / 2, animate); - } + // reposition point + this.dom.point.style.left = this.left + 'px'; }; /** - * Get the data range of the item set. - * @returns {{min: Date, max: Date}} range A range with a start and end Date. - * When no minimum is found, min==null - * When no maximum is found, max==null + * Reposition the item vertically + * @Override */ - Timeline.prototype.getItemRange = function() { - // calculate min from start filed - var dataset = this.itemsData.getDataSet(), - min = null, - max = null; - - if (dataset) { - // calculate the minimum value of the field 'start' - var minItem = dataset.min('start'); - min = minItem ? util.convert(minItem.start, 'Date').valueOf() : null; - // Note: we convert first to Date and then to number because else - // a conversion from ISODate to Number will fail + PointItem.prototype.repositionY = function() { + var orientation = this.options.orientation, + point = this.dom.point; - // calculate maximum value of fields 'start' and 'end' - var maxStartItem = dataset.max('start'); - if (maxStartItem) { - max = util.convert(maxStartItem.start, 'Date').valueOf(); - } - var maxEndItem = dataset.max('end'); - if (maxEndItem) { - if (max == null) { - max = util.convert(maxEndItem.end, 'Date').valueOf(); - } - else { - max = Math.max(max, util.convert(maxEndItem.end, 'Date').valueOf()); - } - } + if (orientation == 'top') { + point.style.top = this.top + 'px'; + } + else { + point.style.top = (this.parent.height - this.top - this.height) + 'px'; } - - return { - min: (min != null) ? new Date(min) : null, - max: (max != null) ? new Date(max) : null - }; }; - - module.exports = Timeline; + module.exports = PointItem; /***/ }, -/* 19 */ +/* 24 */ /***/ function(module, exports, __webpack_require__) { - // Only load hammer.js when in a browser environment - // (loading hammer.js in a node.js environment gives errors) - if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(20); - } - else { - module.exports = function () { - throw Error('hammer.js is only available in a browser, not in node.js.'); - } - } + var Hammer = __webpack_require__(45); + var Item = __webpack_require__(20); + /** + * @constructor RangeItem + * @extends Item + * @param {Object} data Object containing parameters start, end + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe options + */ + function RangeItem (data, conversion, options) { + this.props = { + content: { + width: 0 + } + }; + this.overflow = false; // if contents can overflow (css styling), this flag is set to true -/***/ }, -/* 20 */ -/***/ function(module, exports, __webpack_require__) { + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data.id); + } + if (data.end == undefined) { + throw new Error('Property "end" missing in item ' + data.id); + } + } - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 - * http://eightmedia.github.io/hammer.js - * - * Copyright (c) 2014 Jorik Tangelder ; - * Licensed under the MIT license */ + Item.call(this, data, conversion, options); + } - (function(window, undefined) { - 'use strict'; + RangeItem.prototype = new Item (null, null, null); - /** - * @main - * @module hammer - * - * @class Hammer - * @static - */ + RangeItem.prototype.baseClassName = 'item range'; /** - * Hammer, use this to create instances - * ```` - * var hammertime = new Hammer(myElement); - * ```` - * - * @method Hammer - * @param {HTMLElement} element - * @param {Object} [options={}] - * @return {Hammer.Instance} + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible */ - var Hammer = function Hammer(element, options) { - return new Hammer.Instance(element, options || {}); + RangeItem.prototype.isVisible = function(range) { + // determine visibility + return (this.data.start < range.end) && (this.data.end > range.start); }; /** - * version, as defined in package.json - * the value will be set at each build - * @property VERSION - * @final - * @type {String} - */ - Hammer.VERSION = '1.1.3'; - - /** - * default settings. - * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled - * by setting it's name (like `swipe`) to false. - * You can set the defaults for all instances by changing this object before creating an instance. - * @example - * ```` - * Hammer.defaults.drag = false; - * Hammer.defaults.behavior.touchAction = 'pan-y'; - * delete Hammer.defaults.behavior.userSelect; - * ```` - * @property defaults - * @type {Object} + * Repaint the item */ - Hammer.defaults = { - /** - * this setting object adds styles and attributes to the element to prevent the browser from doing - * its native behavior. The css properties are auto prefixed for the browsers when needed. - * @property defaults.behavior - * @type {Object} - */ - behavior: { - /** - * Disables text selection to improve the dragging gesture. When the value is `none` it also sets - * `onselectstart=false` for IE on the element. Mainly for desktop browsers. - * @property defaults.behavior.userSelect - * @type {String} - * @default 'none' - */ - userSelect: 'none', + RangeItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - /** - * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). - * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. - * @property defaults.behavior.touchAction - * @type {String} - * @default: 'pan-y' - */ - touchAction: 'pan-y', + // background box + dom.box = document.createElement('div'); + // className is updated in redraw() - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @property defaults.behavior.touchCallout - * @type {String} - * @default 'none' - */ - touchCallout: 'none', + // contents box + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', + // attach this item as attribute + dom.box['timeline-item'] = this; - /** - * Specifies that an entire element should be draggable instead of its contents. - * Mainly for desktop browsers. - * @property defaults.behavior.userDrag - * @type {String} - * @default 'none' - */ - userDrag: 'none', + this.dirty = true; + } - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. - * - * If you don't specify an alpha value, Safari on iPhone applies a default alpha value - * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). - * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. - * @property defaults.behavior.tapHighlightColor - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: 'rgba(0,0,0,0)' + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + if (!dom.box.parentNode) { + var foreground = this.parent.dom.foreground; + if (!foreground) { + throw new Error('Cannot redraw item: parent has no foreground container element'); } + foreground.appendChild(dom.box); + } + this.displayed = true; + + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.box); + this._updateDataAttributes(this.dom.box); + this._updateStyle(this.dom.box); + + // update class + var className = (this.data.className ? (' ' + this.data.className) : '') + + (this.selected ? ' selected' : ''); + dom.box.className = this.baseClassName + className; + + // determine from css whether this box has overflow + this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; + + // recalculate size + // turn off max-width to be able to calculate the real width + // this causes an extra browser repaint/reflow, but so be it + this.dom.content.style.maxWidth = 'none'; + this.props.content.width = this.dom.content.offsetWidth; + this.height = this.dom.box.offsetHeight; + this.dom.content.style.maxWidth = ''; + + this.dirty = false; + } + + this._repaintDeleteButton(dom.box); + this._repaintDragLeft(); + this._repaintDragRight(); }; /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. */ - Hammer.DOCUMENT = document; + RangeItem.prototype.show = function() { + if (!this.displayed) { + this.redraw(); + } + }; /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} + * Hide the item from the DOM (when visible) + * @return {Boolean} changed */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + RangeItem.prototype.hide = function() { + if (this.displayed) { + var box = this.dom.box; - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} - */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + if (box.parentNode) { + box.parentNode.removeChild(box); + } - /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} - */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + this.top = null; + this.left = null; - /** - * detect if we want to support mouseevents at all - * @property NO_MOUSEEVENTS - * @type {Boolean} - */ - Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; + this.displayed = false; + } + }; /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 + * Reposition the item horizontally + * @Override */ - Hammer.CALCULATE_INTERVAL = 25; - - /** - * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` - * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) - * @property EVENT_TYPES - * @private - * @writeOnce - * @type {Object} + RangeItem.prototype.repositionX = function() { + var parentWidth = this.parent.width; + var start = this.conversion.toScreen(this.data.start); + var end = this.conversion.toScreen(this.data.end); + var contentLeft; + var contentWidth; + + // limit the width of the this, as browsers cannot draw very wide divs + if (start < -parentWidth) { + start = -parentWidth; + } + if (end > 2 * parentWidth) { + end = 2 * parentWidth; + } + var boxWidth = Math.max(end - start, 1); + + if (this.overflow) { + this.left = start; + this.width = boxWidth + this.props.content.width; + contentWidth = this.props.content.width; + + // Note: The calculation of width is an optimistic calculation, giving + // a width which will not change when moving the Timeline + // So no re-stacking needed, which is nicer for the eye; + } + else { + this.left = start; + this.width = boxWidth; + contentWidth = Math.min(end - start - 2 * this.options.padding, this.props.content.width); + } + + this.dom.box.style.left = this.left + 'px'; + this.dom.box.style.width = boxWidth + 'px'; + + switch (this.options.align) { + case 'left': + this.dom.content.style.left = '0'; + break; + + case 'right': + this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding), 0) + 'px'; + break; + + case 'center': + this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding) / 2, 0) + 'px'; + break; + + default: // 'auto' + // when range exceeds left of the window, position the contents at the left of the visible area + if (this.overflow) { + if (end > 0) { + contentLeft = Math.max(-start, 0); + } + else { + contentLeft = -contentWidth; // ensure it's not visible anymore + } + } + else { + if (start < 0) { + contentLeft = Math.min(-start, + (end - start - contentWidth - 2 * this.options.padding)); + // TODO: remove the need for options.padding. it's terrible. + } + else { + contentLeft = 0; + } + } + this.dom.content.style.left = contentLeft + 'px'; + } + }; + + /** + * Reposition the item vertically + * @Override */ - var EVENT_TYPES = {}; + RangeItem.prototype.repositionY = function() { + var orientation = this.options.orientation, + box = this.dom.box; + + if (orientation == 'top') { + box.style.top = this.top + 'px'; + } + else { + box.style.top = (this.parent.height - this.top - this.height) + 'px'; + } + }; /** - * direction strings, for safe comparisons - * @property DIRECTION_DOWN|LEFT|UP|RIGHT - * @final - * @type {String} - * @default 'down' 'left' 'up' 'right' + * Repaint a drag area on the left side of the range when the range is selected + * @protected */ - var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; - var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; - var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; - var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + RangeItem.prototype._repaintDragLeft = function () { + if (this.selected && this.options.editable.updateTime && !this.dom.dragLeft) { + // create and show drag area + var dragLeft = document.createElement('div'); + dragLeft.className = 'drag-left'; + dragLeft.dragLeftItem = this; + + // TODO: this should be redundant? + Hammer(dragLeft, { + preventDefault: true + }).on('drag', function () { + //console.log('drag left') + }); + + this.dom.box.appendChild(dragLeft); + this.dom.dragLeft = dragLeft; + } + else if (!this.selected && this.dom.dragLeft) { + // delete drag area + if (this.dom.dragLeft.parentNode) { + this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft); + } + this.dom.dragLeft = null; + } + }; /** - * pointertype strings, for safe comparisons - * @property POINTER_MOUSE|TOUCH|PEN - * @final - * @type {String} - * @default 'mouse' 'touch' 'pen' + * Repaint a drag area on the right side of the range when the range is selected + * @protected */ - var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; - var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; - var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; + RangeItem.prototype._repaintDragRight = function () { + if (this.selected && this.options.editable.updateTime && !this.dom.dragRight) { + // create and show drag area + var dragRight = document.createElement('div'); + dragRight.className = 'drag-right'; + dragRight.dragRightItem = this; + + // TODO: this should be redundant? + Hammer(dragRight, { + preventDefault: true + }).on('drag', function () { + //console.log('drag right') + }); + + this.dom.box.appendChild(dragRight); + this.dom.dragRight = dragRight; + } + else if (!this.selected && this.dom.dragRight) { + // delete drag area + if (this.dom.dragRight.parentNode) { + this.dom.dragRight.parentNode.removeChild(this.dom.dragRight); + } + this.dom.dragRight = null; + } + }; + + module.exports = RangeItem; + + +/***/ }, +/* 25 */ +/***/ function(module, exports, __webpack_require__) { /** - * eventtypes - * @property EVENT_START|MOVE|END|RELEASE|TOUCH - * @final - * @type {String} - * @default 'start' 'change' 'move' 'end' 'release' 'touch' + * Prototype for visual components + * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body] + * @param {Object} [options] */ - var EVENT_START = Hammer.EVENT_START = 'start'; - var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; - var EVENT_END = Hammer.EVENT_END = 'end'; - var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; - var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + function Component (body, options) { + this.options = null; + this.props = null; + } /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false + * Set options for the component. The new options will be merged into the + * current options. + * @param {Object} options */ - Hammer.READY = false; + Component.prototype.setOptions = function(options) { + if (options) { + util.extend(this.options, options); + } + }; /** - * plugins namespace - * @property plugins - * @type {Object} + * Repaint the component + * @return {boolean} Returns true if the component is resized */ - Hammer.plugins = Hammer.plugins || {}; + Component.prototype.redraw = function() { + // should be implemented by the component + return false; + }; /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} + * Destroy the component. Cleanup DOM and event listeners */ - Hammer.gestures = Hammer.gestures || {}; + Component.prototype.destroy = function() { + // should be implemented by the component + }; /** - * setup events to detect gestures on the document - * this function is called when creating an new instance - * @private + * Test whether the component is resized since the last time _isResized() was + * called. + * @return {Boolean} Returns true if the component is resized + * @protected */ - function setup() { - if(Hammer.READY) { - return; - } + Component.prototype._isResized = function() { + var resized = (this.props._previousWidth !== this.props.width || + this.props._previousHeight !== this.props.height); - // find what eventtypes we add listeners to - Event.determineEventTypes(); + this.props._previousWidth = this.props.width; + this.props._previousHeight = this.props.height; - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); + return resized; + }; - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + module.exports = Component; - // Hammer is ready...! - Hammer.READY = true; - } + +/***/ }, +/* 26 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var Component = __webpack_require__(25); + var moment = __webpack_require__(44); + var locales = __webpack_require__(48); /** - * @module hammer - * - * @class Utils - * @static + * A current time bar + * @param {{range: Range, dom: Object, domProps: Object}} body + * @param {Object} [options] Available parameters: + * {Boolean} [showCurrentTime] + * @constructor CurrentTime + * @extends Component */ - var Utils = Hammer.utils = { - /** - * extend method, could also be used for cloning when `dest` is an empty object. - * changes the dest object - * @method extend - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge=false] do a merge - * @return {Object} dest - */ - extend: function extend(dest, src, merge) { - for(var key in src) { - if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { - continue; - } - dest[key] = src[key]; - } - return dest; - }, + function CurrentTime (body, options) { + this.body = body; - /** - * simple addEventListener wrapper - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - on: function on(element, type, handler) { - element.addEventListener(type, handler, false); - }, + // default options + this.defaultOptions = { + showCurrentTime: true, - /** - * simple removeEventListener wrapper - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - off: function off(element, type, handler) { - element.removeEventListener(type, handler, false); - }, + locales: locales, + locale: 'en' + }; + this.options = util.extend({}, this.defaultOptions); + this.offset = 0; - /** - * forEach over arrays and objects - * @method each - * @param {Object|Array} obj - * @param {Function} iterator - * @param {any} iterator.item - * @param {Number} iterator.index - * @param {Object|Array} iterator.obj the source object - * @param {Object} context value to use as `this` in the iterator - */ - each: function each(obj, iterator, context) { - var i, len; + this._create(); - // native forEach on arrays - if('forEach' in obj) { - obj.forEach(iterator, context); - // arrays - } else if(obj.length !== undefined) { - for(i = 0, len = obj.length; i < len; i++) { - if(iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - // objects - } else { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - } - }, + this.setOptions(options); + } - /** - * find if a string contains the string using indexOf - * @method inStr - * @param {String} src - * @param {String} find - * @return {Boolean} found - */ - inStr: function inStr(src, find) { - return src.indexOf(find) > -1; - }, + CurrentTime.prototype = new Component(); - /** - * find if a array contains the object using indexOf or a simple polyfill - * @method inArray - * @param {String} src - * @param {String} find - * @return {Boolean|Number} false when not found, or the index - */ - inArray: function inArray(src, find) { - if(src.indexOf) { - var index = src.indexOf(find); - return (index === -1) ? false : index; - } else { - for(var i = 0, len = src.length; i < len; i++) { - if(src[i] === find) { - return i; - } - } - return false; - } - }, + /** + * Create the HTML DOM for the current time bar + * @private + */ + CurrentTime.prototype._create = function() { + var bar = document.createElement('div'); + bar.className = 'currenttime'; + bar.style.position = 'absolute'; + bar.style.top = '0px'; + bar.style.height = '100%'; - /** - * convert an array-like object (`arguments`, `touchlist`) to an array - * @method toArray - * @param {Object} obj - * @return {Array} - */ - toArray: function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - }, + this.bar = bar; + }; - /** - * find if a node is in the given parent - * @method hasParent - * @param {HTMLElement} node - * @param {HTMLElement} parent - * @return {Boolean} found - */ - hasParent: function hasParent(node, parent) { - while(node) { - if(node == parent) { - return true; - } - node = node.parentNode; - } - return false; - }, + /** + * Destroy the CurrentTime bar + */ + CurrentTime.prototype.destroy = function () { + this.options.showCurrentTime = false; + this.redraw(); // will remove the bar from the DOM and stop refreshing - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; + this.body = null; + }; - // no need to loop when only one touch - if(touches.length === 1) { - return { - pageX: touches[0].pageX, - pageY: touches[0].pageY, - clientX: touches[0].clientX, - clientY: touches[0].clientY - }; - } + /** + * Set options for the component. Options will be merged in current options. + * @param {Object} options Available parameters: + * {boolean} [showCurrentTime] + */ + CurrentTime.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + util.selectiveExtend(['showCurrentTime', 'locale', 'locales'], this.options, options); + } + }; - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + CurrentTime.prototype.redraw = function() { + if (this.options.showCurrentTime) { + var parent = this.body.dom.backgroundVertical; + if (this.bar.parentNode != parent) { + // attach to the dom + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); + } + parent.appendChild(this.bar); - return { - pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, - pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, - clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, - clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 - }; - }, + this.start(); + } - /** - * calculate the velocity between two points. unit is in px per ms. - * @method getVelocity - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - * @return {Object} velocity `x` and `y` - */ - getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { - return { - x: Math.abs(deltaX / deltaTime) || 0, - y: Math.abs(deltaY / deltaTime) || 0 - }; - }, + var now = new Date(new Date().valueOf() + this.offset); + var x = this.body.util.toScreen(now); - /** - * calculate the angle between two coordinates - * @method getAngle - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {Number} angle - */ - getAngle: function getAngle(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; - - return Math.atan2(y, x) * 180 / Math.PI; - }, - - /** - * do a small comparision to get the direction between two touches. - * @method getDirection - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` - */ - getDirection: function getDirection(touch1, touch2) { - var x = Math.abs(touch1.clientX - touch2.clientX), - y = Math.abs(touch1.clientY - touch2.clientY); + var locale = this.options.locales[this.options.locale]; + var title = locale.current + ' ' + locale.time + ': ' + moment(now).format('dddd, MMMM Do YYYY, H:mm:ss'); + title = title.charAt(0).toUpperCase() + title.substring(1); - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, + this.bar.style.left = x + 'px'; + this.bar.title = title; + } + else { + // remove the line from the DOM + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); + } + this.stop(); + } - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + return false; + }; - return Math.sqrt((x * x) + (y * y)); - }, + /** + * Start auto refreshing the current time bar + */ + CurrentTime.prototype.start = function() { + var me = this; - /** - * calculate the scale factor between two touchLists - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @method getScale - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} scale - */ - getScale: function getScale(start, end) { - // need two fingers... - if(start.length >= 2 && end.length >= 2) { - return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); - } - return 1; - }, + function update () { + me.stop(); - /** - * calculate the rotation degrees between two touchLists - * @method getRotation - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} rotation - */ - getRotation: function getRotation(start, end) { - // need two fingers - if(start.length >= 2 && end.length >= 2) { - return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); - } - return 0; - }, + // determine interval to refresh + var scale = me.body.range.conversion(me.body.domProps.center.width).scale; + var interval = 1 / scale / 10; + if (interval < 30) interval = 30; + if (interval > 1000) interval = 1000; - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, + me.redraw(); - /** - * set css properties with their prefixes - * @param {HTMLElement} element - * @param {String} prop - * @param {String} value - * @param {Boolean} [toggle=true] - * @return {Boolean} - */ - setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { - var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; - prop = Utils.toCamelCase(prop); + // start a timer to adjust for the new time + me.currentTimeTimer = setTimeout(update, interval); + } - for(var i = 0; i < prefixes.length; i++) { - var p = prop; - // prefixes - if(prefixes[i]) { - p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); - } + update(); + }; - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; - } - } - }, + /** + * Stop auto refreshing the current time bar + */ + CurrentTime.prototype.stop = function() { + if (this.currentTimeTimer !== undefined) { + clearTimeout(this.currentTimeTimer); + delete this.currentTimeTimer; + } + }; - /** - * toggle browser default behavior by setting css properties. - * `userSelect='none'` also sets `element.onselectstart` to false - * `userDrag='none'` also sets `element.ondragstart` to false - * - * @method toggleBehavior - * @param {HtmlElement} element - * @param {Object} props - * @param {Boolean} [toggle=true] - */ - toggleBehavior: function toggleBehavior(element, props, toggle) { - if(!props || !element || !element.style) { - return; - } + /** + * Set a current time. This can be used for example to ensure that a client's + * time is synchronized with a shared server time. + * @param {Date | String | Number} time A Date, unix timestamp, or + * ISO date string. + */ + CurrentTime.prototype.setCurrentTime = function(time) { + var t = util.convert(time, 'Date').valueOf(); + var now = new Date().valueOf(); + this.offset = t - now; + this.redraw(); + }; - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); + /** + * Get the current time. + * @return {Date} Returns the current time. + */ + CurrentTime.prototype.getCurrentTime = function() { + return new Date(new Date().valueOf() + this.offset); + }; - var falseFn = toggle && function() { - return false; - }; + module.exports = CurrentTime; - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; - } - }, - /** - * convert a string with underscores to camelCase - * so prevent_default becomes preventDefault - * @param {String} str - * @return {String} camelCaseStr - */ - toCamelCase: function toCamelCase(str) { - return str.replace(/[_-]([a-z])/g, function(s) { - return s[1].toUpperCase(); - }); - } - }; +/***/ }, +/* 27 */ +/***/ function(module, exports, __webpack_require__) { + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + var Component = __webpack_require__(25); + var moment = __webpack_require__(44); + var locales = __webpack_require__(48); /** - * @module hammer - */ - /** - * @class Event - * @static + * A custom time bar + * @param {{range: Range, dom: Object}} body + * @param {Object} [options] Available parameters: + * {Boolean} [showCustomTime] + * @constructor CustomTime + * @extends Component */ - var Event = Hammer.event = { - /** - * when touch events have been fired, this is true - * this is used to stop mouse events - * @property prevent_mouseevents - * @private - * @type {Boolean} - */ - preventMouseEvents: false, - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, + function CustomTime (body, options) { + this.body = body; - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, + // default options + this.defaultOptions = { + showCustomTime: false, + locales: locales, + locale: 'en', + id: 0 + }; + this.options = util.extend({}, this.defaultOptions); - /** - * simple event binder with a hook and support for multiple types - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - on: function on(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.on(element, type, handler); - hook && hook(type); - }); - }, + if (options && options.time) { + this.customTime = options.time; + } else { + this.customTime = new Date(); + } + + this.eventParams = {}; // stores state parameters while dragging the bar - /** - * simple event unbinder with a hook and support for multiple types - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - off: function off(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.off(element, type, handler); - hook && hook(type); - }); - }, + // create the DOM + this._create(); - /** - * the core touch event handler. - * this finds out if we should to detect gestures - * @method onTouch - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Function} handler - * @return onTouchHandler {Function} the core event handler - */ - onTouch: function onTouch(element, eventType, handler) { - var self = this; + this.setOptions(options); + } - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; + CustomTime.prototype = new Component(); - // if we are in a mouseevent, but there has been a touchevent triggered in this session - // we want to do nothing. simply break out of the event. - if(isMouse && self.preventMouseEvents) { - return; + /** + * Set options for the component. Options will be merged in current options. + * @param {Object} options Available parameters: + * {boolean} [showCustomTime] + */ + CustomTime.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + util.selectiveExtend(['showCustomTime', 'locale', 'locales', 'id'], this.options, options); - // mousebutton must be down - } else if(isMouse && eventType == EVENT_START && ev.button === 0) { - self.preventMouseEvents = false; - self.shouldDetect = true; - } else if(isPointer && eventType == EVENT_START) { - self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); - // just a valid start event, but no mouse - } else if(!isMouse && eventType == EVENT_START) { - self.preventMouseEvents = true; - self.shouldDetect = true; - } + // Triggered by addCustomTimeBar, redraw to add new bar + if (this.options.id) { + this.redraw(); + } + } + }; - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } + /** + * Create the DOM for the custom time + * @private + */ + CustomTime.prototype._create = function() { + var bar = document.createElement('div'); + bar.className = 'customtime'; + bar.style.position = 'absolute'; + bar.style.top = '0px'; + bar.style.height = '100%'; + this.bar = bar; - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } + var drag = document.createElement('div'); + drag.style.position = 'relative'; + drag.style.top = '0px'; + drag.style.left = '-10px'; + drag.style.height = '100%'; + drag.style.width = '20px'; + bar.appendChild(drag); - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - if(triggerType == EVENT_END) { - self.preventMouseEvents = false; - self.shouldDetect = false; - PointerEvent.reset(); - // update the pointerevent object after the detection - } + // attach event listeners + this.hammer = Hammer(bar, { + prevent_default: true + }); + this.hammer.on('dragstart', this._onDragStart.bind(this)); + this.hammer.on('drag', this._onDrag.bind(this)); + this.hammer.on('dragend', this._onDragEnd.bind(this)); + }; - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - }; + /** + * Destroy the CustomTime bar + */ + CustomTime.prototype.destroy = function () { + this.options.showCustomTime = false; + this.redraw(); // will remove the bar from the DOM - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, + this.hammer.enable(false); + this.hammer = null; - /** - * the core detection method - * this finds out what hammer-touch-events to trigger - * @method doDetect - * @param {Object} ev - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {HTMLElement} element - * @param {Function} handler - * @return {String} triggerType matches `EVENT_START|MOVE|END` - */ - doDetect: function doDetect(ev, eventType, element, handler) { - var touchList = this.getTouchList(ev, eventType); - var touchListLength = touchList.length; - var triggerType = eventType; - var triggerChange = touchList.trigger; // used by fakeMultitouch plugin - var changedLength = touchListLength; + this.body = null; + }; - // at each touchstart-like event we want also want to trigger a TOUCH event... - if(eventType == EVENT_START) { - triggerChange = EVENT_TOUCH; - // ...the same for a touchend-like event - } else if(eventType == EVENT_END) { - triggerChange = EVENT_RELEASE; + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + CustomTime.prototype.redraw = function () { + if (this.options.showCustomTime) { + var parent = this.body.dom.backgroundVertical; + if (this.bar.parentNode != parent) { + // attach to the dom + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); + } + parent.appendChild(this.bar); + } - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); - } + var x = this.body.util.toScreen(this.customTime); - // after there are still touches on the screen, - // we just want to trigger a MOVE event. so change the START or END to a MOVE - // but only after detection has been started, the first time we actualy want a START - if(changedLength > 0 && this.started) { - triggerType = EVENT_MOVE; - } + var locale = this.options.locales[this.options.locale]; + var title = locale.time + ': ' + moment(this.customTime).format('dddd, MMMM Do YYYY, H:mm:ss'); + title = title.charAt(0).toUpperCase() + title.substring(1); - // detection has been started, we keep track of this, see above - this.started = true; + this.bar.style.left = x + 'px'; + this.bar.title = title; + } + else { + // remove the line from the DOM + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); + } + } - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + return false; + }; - // trigger the triggerType event before the change (TOUCH, RELEASE) events - // but the END event should be at last - if(eventType != EVENT_END) { - handler.call(Detection, evData); - } + /** + * Set custom time. + * @param {Date | number | string} time + */ + CustomTime.prototype.setCustomTime = function(time) { + this.customTime = util.convert(time, 'Date'); + this.redraw(); + }; - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; + /** + * Retrieve the current custom time. + * @return {Date} customTime + */ + CustomTime.prototype.getCustomTime = function() { + return new Date(this.customTime.valueOf()); + }; - handler.call(Detection, evData); + /** + * Start moving horizontally + * @param {Event} event + * @private + */ + CustomTime.prototype._onDragStart = function(event) { + this.eventParams.dragging = true; + this.eventParams.customTime = this.customTime; - evData.eventType = triggerType; - delete evData.changedLength; - } + event.stopPropagation(); + event.preventDefault(); + }; - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); + /** + * Perform moving operating. + * @param {Event} event + * @private + */ + CustomTime.prototype._onDrag = function (event) { + if (!this.eventParams.dragging) return; - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; - } - - return triggerType; - }, - - /** - * we have different events for each device/browser - * determine what we need and set them in the EVENT_TYPES constant - * the `onTouch` method is bind to these properties. - * @method determineEventTypes - * @return {Object} events - */ - determineEventTypes: function determineEventTypes() { - var types; - if(Hammer.HAS_POINTEREVENTS) { - if(window.PointerEvent) { - types = [ - 'pointerdown', - 'pointermove', - 'pointerup pointercancel lostpointercapture' - ]; - } else { - types = [ - 'MSPointerDown', - 'MSPointerMove', - 'MSPointerUp MSPointerCancel MSLostPointerCapture' - ]; - } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; - } else { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; - } - - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, - - /** - * create touchList depending on the event - * @method getTouchList - * @param {Object} ev - * @param {String} eventType - * @return {Array} touches - */ - getTouchList: function getTouchList(ev, eventType) { - // get the fake pointerEvent touchlist - if(Hammer.HAS_POINTEREVENTS) { - return PointerEvent.getTouchList(); - } - - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; - } + var deltaX = event.gesture.deltaX, + x = this.body.util.toScreen(this.eventParams.customTime) + deltaX, + time = this.body.util.toTime(x); - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; + this.setCustomTime(time); - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); - } - identifiers.push(touch.identifier); - }); + // fire a timechange event + this.body.emitter.emit('timechange', { + id: this.options.id, + time: new Date(this.customTime.valueOf()) + }); - return touchList; - } + event.stopPropagation(); + event.preventDefault(); + }; - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, + /** + * Stop moving operating. + * @param {event} event + * @private + */ + CustomTime.prototype._onDragEnd = function (event) { + if (!this.eventParams.dragging) return; - /** - * collect basic event data - * @method collectEventData - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Array} touches - * @param {Object} ev - * @return {Object} ev - */ - collectEventData: function collectEventData(element, eventType, touches, ev) { - // find out pointerType - var pointerType = POINTER_TOUCH; - if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { - pointerType = POINTER_MOUSE; - } else if(PointerEvent.matchType(POINTER_PEN, ev)) { - pointerType = POINTER_PEN; - } + // fire a timechanged event + this.body.emitter.emit('timechanged', { + id: this.options.id, + time: new Date(this.customTime.valueOf()) + }); - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, + event.stopPropagation(); + event.preventDefault(); + }; - /** - * prevent the browser default actions - * mostly used to disable scrolling of the browser - */ - preventDefault: function() { - var srcEvent = this.srcEvent; - srcEvent.preventManipulation && srcEvent.preventManipulation(); - srcEvent.preventDefault && srcEvent.preventDefault(); - }, + module.exports = CustomTime; - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; - } - }; +/***/ }, +/* 28 */ +/***/ function(module, exports, __webpack_require__) { + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(2); + var Component = __webpack_require__(25); + var DataStep = __webpack_require__(16); /** - * @module hammer - * - * @class PointerEvent - * @static + * A horizontal time axis + * @param {Object} [options] See DataAxis.setOptions for the available + * options. + * @constructor DataAxis + * @extends Component + * @param body */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, + function DataAxis (body, options, svg, linegraphOptions) { + this.id = util.randomUUID(); + this.body = body; - /** - * get the pointers as an array - * @method getTouchList - * @return {Array} touchlist - */ - getTouchList: function getTouchList() { - var touchlist = []; - // we can use forEach since pointerEvents only is in IE10 - Utils.each(this.pointers, function(pointer) { - touchlist.push(pointer); - }); - return touchlist; + this.defaultOptions = { + orientation: 'left', // supported: 'left', 'right' + showMinorLabels: true, + showMajorLabels: true, + icons: true, + majorLinesOffset: 7, + minorLinesOffset: 4, + labelOffsetX: 10, + labelOffsetY: 2, + iconWidth: 20, + width: '40px', + visible: true, + alignZeros: true, + customRange: { + left: {min:undefined, max:undefined}, + right: {min:undefined, max:undefined} }, - - /** - * update the position of a pointer - * @method updatePointer - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Object} pointerEvent - */ - updatePointer: function updatePointer(eventType, pointerEvent) { - if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { - delete this.pointers[pointerEvent.pointerId]; - } else { - pointerEvent.identifier = pointerEvent.pointerId; - this.pointers[pointerEvent.pointerId] = pointerEvent; - } + title: { + left: {text:undefined}, + right: {text:undefined} }, + format: { + left: {decimals: undefined}, + right: {decimals: undefined} + } + }; - /** - * check if ev matches pointertype - * @method matchType - * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` - * @param {PointerEvent} ev - */ - matchType: function matchType(pointerType, ev) { - if(!ev.pointerType) { - return false; - } - - var pt = ev.pointerType, - types = {}; + this.linegraphOptions = linegraphOptions; + this.linegraphSVG = svg; + this.props = {}; + this.DOMelements = { // dynamic elements + lines: {}, + labels: {}, + title: {} + }; - types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); - types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); - types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); - return types[pointerType]; - }, + this.dom = {}; - /** - * reset the stored pointers - * @method reset - */ - reset: function resetList() { - this.pointers = {}; - } - }; + this.range = {start:0, end:0}; + this.options = util.extend({}, this.defaultOptions); + this.conversionFactor = 1; - /** - * @module hammer - * - * @class Detection - * @static - */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], + this.setOptions(options); + this.width = Number(('' + this.options.width).replace("px","")); + this.minWidth = this.width; + this.height = this.linegraphSVG.offsetHeight; + this.hidden = false; - // data of the current Hammer.gesture detection session - current: null, + this.stepPixels = 25; + this.stepPixelsForced = 25; + this.zeroCrossing = -1; - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, + this.lineOffset = 0; + this.master = true; + this.svgElements = {}; + this.iconsRemoved = false; - // when this becomes true, no gestures are fired - stopped: false, - /** - * start Hammer.gesture detection - * @method startDetect - * @param {Hammer.Instance} inst - * @param {Object} eventData - */ - startDetect: function startDetect(inst, eventData) { - // already busy with a Hammer.gesture detection on an element - if(this.current) { - return; - } + this.groups = {}; + this.amountOfGroups = 0; - this.stopped = false; + // create the HTML DOM + this._create(); - // holds current session - this.current = { - inst: inst, // reference to HammerInstance we're working for - startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc - lastEvent: false, // last eventData - lastCalcEvent: false, // last eventData for calculations. - futureCalcEvent: false, // last eventData for calculations. - lastCalcData: {}, // last lastCalcData - name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc - }; + var me = this; + this.body.emitter.on("verticalDrag", function() { + me.dom.lineContainer.style.top = me.body.domProps.scrollTop + 'px'; + }); + } - this.detect(eventData); - }, + DataAxis.prototype = new Component(); - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; - } - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); + DataAxis.prototype.addGroup = function(label, graphOptions) { + if (!this.groups.hasOwnProperty(label)) { + this.groups[label] = graphOptions; + } + this.amountOfGroups += 1; + }; - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; + DataAxis.prototype.updateGroup = function(label, graphOptions) { + this.groups[label] = graphOptions; + }; - // call Hammer.gesture handlers - Utils.each(this.gestures, function triggerGesture(gesture) { - // only when the instance options have enabled this gesture - if(!this.stopped && inst.enabled && instOptions[gesture.name]) { - gesture.handler.call(gesture, eventData, inst); - } - }, this); + DataAxis.prototype.removeGroup = function(label) { + if (this.groups.hasOwnProperty(label)) { + delete this.groups[label]; + this.amountOfGroups -= 1; + } + }; - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; - } - if(eventData.eventType == EVENT_END) { - this.stopDetect(); - } + DataAxis.prototype.setOptions = function (options) { + if (options) { + var redraw = false; + if (this.options.orientation != options.orientation && options.orientation !== undefined) { + redraw = true; + } + var fields = [ + 'orientation', + 'showMinorLabels', + 'showMajorLabels', + 'icons', + 'majorLinesOffset', + 'minorLinesOffset', + 'labelOffsetX', + 'labelOffsetY', + 'iconWidth', + 'width', + 'visible', + 'customRange', + 'title', + 'format', + 'alignZeros' + ]; + util.selectiveExtend(fields, this.options, options); - return eventData; - }, + this.minWidth = Number(('' + this.options.width).replace("px","")); - /** - * clear the Hammer.gesture vars - * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected - * to stop other Hammer.gestures from being fired - * @method stopDetect - */ - stopDetect: function stopDetect() { - // clone current data to the store as the previous gesture - // used for the double tap gesture, since this is an other gesture detect session - this.previous = Utils.extend({}, this.current); + if (redraw == true && this.dom.frame) { + this.hide(); + this.show(); + } + } + }; - // reset the current - this.current = null; - this.stopped = true; - }, - /** - * calculate velocity, angle and direction - * @method getVelocityData - * @param {Object} ev - * @param {Object} center - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - */ - getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { - var cur = this.current, - recalc = false, - calcEv = cur.lastCalcEvent, - calcData = cur.lastCalcData; + /** + * Create the HTML DOM for the DataAxis + */ + DataAxis.prototype._create = function() { + this.dom.frame = document.createElement('div'); + this.dom.frame.style.width = this.options.width; + this.dom.frame.style.height = this.height; - if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { - center = calcEv.center; - deltaTime = ev.timeStamp - calcEv.timeStamp; - deltaX = ev.center.clientX - calcEv.center.clientX; - deltaY = ev.center.clientY - calcEv.center.clientY; - recalc = true; - } + this.dom.lineContainer = document.createElement('div'); + this.dom.lineContainer.style.width = '100%'; + this.dom.lineContainer.style.height = this.height; + this.dom.lineContainer.style.position = 'relative'; - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; - } + // create svg element for graph drawing. + this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); + this.svg.style.position = "absolute"; + this.svg.style.top = '0px'; + this.svg.style.height = '100%'; + this.svg.style.width = '100%'; + this.svg.style.display = "block"; + this.dom.frame.appendChild(this.svg); + }; - if(!cur.lastCalcEvent || recalc) { - calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); - calcData.angle = Utils.getAngle(center, ev.center); - calcData.direction = Utils.getDirection(center, ev.center); + DataAxis.prototype._redrawGroupIcons = function () { + DOMutil.prepareElements(this.svgElements); - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; - } + var x; + var iconWidth = this.options.iconWidth; + var iconHeight = 15; + var iconOffset = 4; + var y = iconOffset + 0.5 * iconHeight; - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, + if (this.options.orientation == 'left') { + x = iconOffset; + } + else { + x = this.width - iconWidth - iconOffset; + } - /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev - */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); + y += iconHeight + iconOffset; + } + } + } - // update the start touchlist to calculate the scale/rotation - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - startEv.touches = []; - Utils.each(ev.touches, function(touch) { - startEv.touches.push({ - clientX: touch.clientX, - clientY: touch.clientY - }); - }); - } + DOMutil.cleanupElements(this.svgElements); + this.iconsRemoved = false; + }; - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; + DataAxis.prototype._cleanupIcons = function() { + if (this.iconsRemoved == false) { + DOMutil.prepareElements(this.svgElements); + DOMutil.cleanupElements(this.svgElements); + this.iconsRemoved = true; + } + } - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); + /** + * Create the HTML DOM for the DataAxis + */ + DataAxis.prototype.show = function() { + this.hidden = false; + if (!this.dom.frame.parentNode) { + if (this.options.orientation == 'left') { + this.body.dom.left.appendChild(this.dom.frame); + } + else { + this.body.dom.right.appendChild(this.dom.frame); + } + } - Utils.extend(ev, { - startEvent: startEv, + if (!this.dom.lineContainer.parentNode) { + this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer); + } + }; - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, + /** + * Create the HTML DOM for the DataAxis + */ + DataAxis.prototype.hide = function() { + this.hidden = true; + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); + } - distance: Utils.getDistance(startEv.center, ev.center), - angle: Utils.getAngle(startEv.center, ev.center), - direction: Utils.getDirection(startEv.center, ev.center), - scale: Utils.getScale(startEv.touches, ev.touches), - rotation: Utils.getRotation(startEv.touches, ev.touches) - }); + if (this.dom.lineContainer.parentNode) { + this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer); + } + }; - return ev; - }, + /** + * Set a range (start and end) + * @param end + * @param start + * @param end + */ + DataAxis.prototype.setRange = function (start, end) { + if (this.master == false && this.options.alignZeros == true && this.zeroCrossing != -1) { + if (start > 0) { + start = 0; + } + } + this.range.start = start; + this.range.end = end; + }; - /** - * register new gesture - * @method register - * @param {Object} gesture object, see `gestures/` for documentation - * @return {Array} gestures - */ - register: function register(gesture) { - // add an enable gesture options if there is no given - var options = gesture.defaults || {}; - if(options[gesture.name] === undefined) { - options[gesture.name] = true; - } + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + DataAxis.prototype.redraw = function () { + var resized = false; + var activeGroups = 0; + + // Make sure the line container adheres to the vertical scrolling. + this.dom.lineContainer.style.top = this.body.domProps.scrollTop + 'px'; - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + activeGroups++; + } + } + } + if (this.amountOfGroups == 0 || activeGroups == 0) { + this.hide(); + } + else { + this.show(); + this.height = Number(this.linegraphSVG.style.height.replace("px","")); - // set its index - gesture.index = gesture.index || 1000; + // svg offsetheight did not work in firefox and explorer... + this.dom.lineContainer.style.height = this.height + 'px'; + this.width = this.options.visible == true ? Number(('' + this.options.width).replace("px","")) : 0; - // add Hammer.gesture to the list - this.gestures.push(gesture); + var props = this.props; + var frame = this.dom.frame; - // sort the list by index - this.gestures.sort(function(a, b) { - if(a.index < b.index) { - return -1; - } - if(a.index > b.index) { - return 1; - } - return 0; - }); + // update classname + frame.className = 'dataaxis'; - return this.gestures; + // calculate character width and height + this._calculateCharSize(); + + var orientation = this.options.orientation; + var showMinorLabels = this.options.showMinorLabels; + var showMajorLabels = this.options.showMajorLabels; + + // determine the width and height of the elements for the axis + props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; + props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; + + props.minorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.minorLinesOffset; + props.minorLineHeight = 1; + props.majorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.majorLinesOffset; + props.majorLineHeight = 1; + + // take frame offline while updating (is almost twice as fast) + if (orientation == 'left') { + frame.style.top = '0'; + frame.style.left = '0'; + frame.style.bottom = ''; + frame.style.width = this.width + 'px'; + frame.style.height = this.height + "px"; + this.props.width = this.body.domProps.left.width; + this.props.height = this.body.domProps.left.height; } - }; + else { // right + frame.style.top = ''; + frame.style.bottom = '0'; + frame.style.left = '0'; + frame.style.width = this.width + 'px'; + frame.style.height = this.height + "px"; + this.props.width = this.body.domProps.right.width; + this.props.height = this.body.domProps.right.height; + } + + resized = this._redrawLabels(); + resized = this._isResized() || resized; + if (this.options.icons == true) { + this._redrawGroupIcons(); + } + else { + this._cleanupIcons(); + } - /** - * @module hammer - */ + this._redrawTitle(orientation); + } + return resized; + }; /** - * create new hammer instance - * all methods should return the instance itself, so it is chainable. - * - * @class Instance - * @constructor - * @param {HTMLElement} element - * @param {Object} [options={}] options are merged with `Hammer.defaults` - * @return {Hammer.Instance} + * Repaint major and minor text labels and vertical grid lines + * @private */ - Hammer.Instance = function(element, options) { - var self = this; - - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); + DataAxis.prototype._redrawLabels = function () { + var resized = false; + DOMutil.prepareElements(this.DOMelements.lines); + DOMutil.prepareElements(this.DOMelements.labels); - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; + var orientation = this.options['orientation']; - /** - * @property enabled - * @type {Boolean} - * @protected - */ - this.enabled = true; + // calculate range and step (step such that we have space for 7 characters per label) + var minimumStep = this.master ? this.props.majorCharHeight || 10 : this.stepPixelsForced; - /** - * options, merged with the defaults - * options with an _ are converted to camelCase - * @property options - * @type {Object} - */ - Utils.each(options, function(value, name) { - delete options[name]; - options[Utils.toCamelCase(name)] = value; - }); + var step = new DataStep( + this.range.start, + this.range.end, + minimumStep, + this.dom.frame.offsetHeight, + this.options.customRange[this.options.orientation], + this.master == false && this.options.alignZeros // doess the step have to align zeros? only if not master and the options is on + ); - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + this.step = step; + // get the distance in pixels for a step + // dead space is space that is "left over" after a step + var stepPixels = (this.dom.frame.offsetHeight - (step.deadSpace * (this.dom.frame.offsetHeight / step.marginRange))) / (((step.marginRange - step.deadSpace) / step.step)); - // add some css to the element to prevent the browser from doing its native behavoir - if(this.options.behavior) { - Utils.toggleBehavior(this.element, this.options.behavior, true); - } + this.stepPixels = stepPixels; - /** - * event start handler on the element to start the detection - * @property eventStartHandler - * @type {Object} - */ - this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { - if(self.enabled && ev.eventType == EVENT_START) { - Detection.startDetect(self, ev); - } else if(ev.eventType == EVENT_TOUCH) { - Detection.detect(ev); - } - }); + var amountOfSteps = this.height / stepPixels; + var stepDifference = 0; - /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} - */ - this.eventHandlers = []; - }; + // the slave axis needs to use the same horizontal lines as the master axis. + if (this.master == false) { + stepPixels = this.stepPixelsForced; + stepDifference = Math.round((this.dom.frame.offsetHeight / stepPixels) - amountOfSteps); + for (var i = 0; i < 0.5 * stepDifference; i++) { + step.previous(); + } + amountOfSteps = this.height / stepPixels; - Hammer.Instance.prototype = { - /** - * bind events to the instance - * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space - * @param {Function} handler - * @param {Object} handler.ev event object - */ - on: function onEvent(gestures, handler) { - var self = this; - Event.on(self.element, gestures, handler, function(type) { - self.eventHandlers.push({ gesture: type, handler: handler }); - }); - return self; - }, + if (this.zeroCrossing != -1 && this.options.alignZeros == true) { + var zeroStepDifference = (step.marginEnd / step.step) - this.zeroCrossing; + if (zeroStepDifference > 0) { + for (var i = 0; i < zeroStepDifference; i++) {step.next();} + } + else if (zeroStepDifference < 0) { + for (var i = 0; i < -zeroStepDifference; i++) {step.previous();} + } + } + } + else { + amountOfSteps += 0.25; + } - /** - * unbind events to the instance - * @method off - * @chainable - * @param {String} gestures - * @param {Function} handler - */ - off: function offEvent(gestures, handler) { - var self = this; - Event.off(self.element, gestures, handler, function(type) { - var index = Utils.inArray({ gesture: type, handler: handler }); - if(index !== false) { - self.eventHandlers.splice(index, 1); - } - }); - return self; - }, + this.valueAtZero = step.marginEnd; + var marginStartPos = 0; - /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] - */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; - } + // do not draw the first label + var max = 1; - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; + // Get the number of decimal places + var decimals; + if(this.options.format[orientation] !== undefined) { + decimals = this.options.format[orientation].decimals; + } - // trigger on the target if it is in the instance element, - // this is for event delegation tricks - var element = this.element; - if(Utils.hasParent(eventData.target, element)) { - element = eventData.target; - } + this.maxLabelSize = 0; + var y = 0; + while (max < Math.round(amountOfSteps)) { + step.next(); + y = Math.round(max * stepPixels); + marginStartPos = max * stepPixels; + var isMajor = step.isMajor(); - element.dispatchEvent(event); - return this; - }, + if (this.options['showMinorLabels'] && isMajor == false || this.master == false && this.options['showMinorLabels'] == true) { + this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis minor', this.props.minorCharHeight); + } - /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state - */ - enable: function enable(state) { - this.enabled = state; - return this; - }, + if (isMajor && this.options['showMajorLabels'] && this.master == true || + this.options['showMinorLabels'] == false && this.master == false && isMajor == true) { + if (y >= 0) { + this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis major', this.props.majorCharHeight); + } + this._redrawLine(y, orientation, 'grid horizontal major', this.options.majorLinesOffset, this.props.majorLineWidth); + } + else { + this._redrawLine(y, orientation, 'grid horizontal minor', this.options.minorLinesOffset, this.props.minorLineWidth); + } - /** - * dispose this hammer instance - * @method dispose - * @return {Null} - */ - dispose: function dispose() { - var i, eh; + if (this.master == true && step.current == 0) { + this.zeroCrossing = max; + } - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); + max++; + } - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); - } + if (this.master == false) { + this.conversionFactor = y / (this.valueAtZero - step.current); + } + else { + this.conversionFactor = this.dom.frame.offsetHeight / step.marginRange; + } - this.eventHandlers = []; + // Note that title is rotated, so we're using the height, not width! + var titleWidth = 0; + if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { + titleWidth = this.props.titleCharHeight; + } + var offset = this.options.icons == true ? Math.max(this.options.iconWidth, titleWidth) + this.options.labelOffsetX + 15 : titleWidth + this.options.labelOffsetX + 15; - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + // this will resize the yAxis to accommodate the labels. + if (this.maxLabelSize > (this.width - offset) && this.options.visible == true) { + this.width = this.maxLabelSize + offset; + this.options.width = this.width + "px"; + DOMutil.cleanupElements(this.DOMelements.lines); + DOMutil.cleanupElements(this.DOMelements.labels); + this.redraw(); + resized = true; + } + // this will resize the yAxis if it is too big for the labels. + else if (this.maxLabelSize < (this.width - offset) && this.options.visible == true && this.width > this.minWidth) { + this.width = Math.max(this.minWidth,this.maxLabelSize + offset); + this.options.width = this.width + "px"; + DOMutil.cleanupElements(this.DOMelements.lines); + DOMutil.cleanupElements(this.DOMelements.labels); + this.redraw(); + resized = true; + } + else { + DOMutil.cleanupElements(this.DOMelements.lines); + DOMutil.cleanupElements(this.DOMelements.labels); + resized = false; + } - return null; - } + return resized; }; + DataAxis.prototype.convertValue = function (value) { + var invertedValue = this.valueAtZero - value; + var convertedValue = invertedValue * this.conversionFactor; + return convertedValue; + }; /** - * @module gestures - */ - /** - * Move with x fingers (default 1) around on the page. - * Preventing the default browser behavior is a good way to improve feel and working. - * ```` - * hammertime.on("drag", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Drag - * @static + * Create a label for the axis at position x + * @private + * @param y + * @param text + * @param orientation + * @param className + * @param characterHeight */ + DataAxis.prototype._redrawLabel = function (y, text, orientation, className, characterHeight) { + // reuse redundant label + var label = DOMutil.getDOMElement('div',this.DOMelements.labels, this.dom.frame); //this.dom.redundant.labels.shift(); + label.className = className; + label.innerHTML = text; + if (orientation == 'left') { + label.style.left = '-' + this.options.labelOffsetX + 'px'; + label.style.textAlign = "right"; + } + else { + label.style.right = '-' + this.options.labelOffsetX + 'px'; + label.style.textAlign = "left"; + } + + label.style.top = y - 0.5 * characterHeight + this.options.labelOffsetY + 'px'; + + text += ''; + + var largestWidth = Math.max(this.props.majorCharWidth,this.props.minorCharWidth); + if (this.maxLabelSize < text.length * largestWidth) { + this.maxLabelSize = text.length * largestWidth; + } + }; + /** - * @event drag - * @param {Object} ev - */ - /** - * @event dragstart - * @param {Object} ev - */ - /** - * @event dragend - * @param {Object} ev - */ - /** - * @event drapleft - * @param {Object} ev - */ - /** - * @event dragright - * @param {Object} ev - */ - /** - * @event dragup - * @param {Object} ev - */ - /** - * @event dragdown - * @param {Object} ev + * Create a minor line for the axis at position y + * @param y + * @param orientation + * @param className + * @param offset + * @param width */ + DataAxis.prototype._redrawLine = function (y, orientation, className, offset, width) { + if (this.master == true) { + var line = DOMutil.getDOMElement('div',this.DOMelements.lines, this.dom.lineContainer);//this.dom.redundant.lines.shift(); + line.className = className; + line.innerHTML = ''; + + if (orientation == 'left') { + line.style.left = (this.width - offset) + 'px'; + } + else { + line.style.right = (this.width - offset) + 'px'; + } + + line.style.width = width + 'px'; + line.style.top = y + 'px'; + } + }; /** - * @param {String} name + * Create a title for the axis + * @private + * @param orientation */ - (function(name) { - var triggered = false; - - function dragGesture(ev, inst) { - var cur = Detection.current; + DataAxis.prototype._redrawTitle = function (orientation) { + DOMutil.prepareElements(this.DOMelements.title); - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; - } + // Check if the title is defined for this axes + if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { + var title = DOMutil.getDOMElement('div', this.DOMelements.title, this.dom.frame); + title.className = 'yAxis title ' + orientation; + title.innerHTML = this.options.title[orientation].text; - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + // Add style - if provided + if (this.options.title[orientation].style !== undefined) { + util.addCssText(title, this.options.title[orientation].style); + } - case EVENT_MOVE: - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.distance < inst.options.dragMinDistance && - cur.name != name) { - return; - } + if (orientation == 'left') { + title.style.left = this.props.titleCharHeight + 'px'; + } + else { + title.style.right = this.props.titleCharHeight + 'px'; + } - var startCenter = cur.startEvent.center; + title.style.width = this.height + 'px'; + } - // we are dragging! - if(cur.name != name) { - cur.name = name; - if(inst.options.dragDistanceCorrection && ev.distance > 0) { - // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. - // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. - // It might be useful to save the original start point somewhere - var factor = Math.abs(inst.options.dragMinDistance / ev.distance); - startCenter.pageX += ev.deltaX * factor; - startCenter.pageY += ev.deltaY * factor; - startCenter.clientX += ev.deltaX * factor; - startCenter.clientY += ev.deltaY * factor; + // we need to clean up in case we did not use all elements. + DOMutil.cleanupElements(this.DOMelements.title); + }; - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } - // keep direction on the axis that the drag gesture started on - var lastDirection = cur.lastEvent.direction; - if(ev.dragLockToAxis && lastDirection !== ev.direction) { - if(Utils.isVertical(lastDirection)) { - ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; - } else { - ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - } - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + /** + * Determine the size of text on the axis (both major and minor axis). + * The size is calculated only once and then cached in this.props. + * @private + */ + DataAxis.prototype._calculateCharSize = function () { + // determine the char width and height on the minor axis + if (!('minorCharHeight' in this.props)) { + var textMinor = document.createTextNode('0'); + var measureCharMinor = document.createElement('div'); + measureCharMinor.className = 'yAxis minor measure'; + measureCharMinor.appendChild(textMinor); + this.dom.frame.appendChild(measureCharMinor); - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + this.props.minorCharHeight = measureCharMinor.clientHeight; + this.props.minorCharWidth = measureCharMinor.clientWidth; - var isVertical = Utils.isVertical(ev.direction); + this.dom.frame.removeChild(measureCharMinor); + } - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + if (!('majorCharHeight' in this.props)) { + var textMajor = document.createTextNode('0'); + var measureCharMajor = document.createElement('div'); + measureCharMajor.className = 'yAxis major measure'; + measureCharMajor.appendChild(textMajor); + this.dom.frame.appendChild(measureCharMajor); - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + this.props.majorCharHeight = measureCharMajor.clientHeight; + this.props.majorCharWidth = measureCharMajor.clientWidth; - case EVENT_END: - triggered = false; - break; - } - } + this.dom.frame.removeChild(measureCharMajor); + } - Hammer.gestures.Drag = { - name: name, - index: 50, - handler: dragGesture, - defaults: { - /** - * minimal movement that have to be made before the drag event gets triggered - * @property dragMinDistance - * @type {Number} - * @default 10 - */ - dragMinDistance: 10, + if (!('titleCharHeight' in this.props)) { + var textTitle = document.createTextNode('0'); + var measureCharTitle = document.createElement('div'); + measureCharTitle.className = 'yAxis title measure'; + measureCharTitle.appendChild(textTitle); + this.dom.frame.appendChild(measureCharTitle); - /** - * Set dragDistanceCorrection to true to make the starting point of the drag - * be calculated from where the drag was triggered, not from where the touch started. - * Useful to avoid a jerk-starting drag, which can make fine-adjustments - * through dragging difficult, and be visually unappealing. - * @property dragDistanceCorrection - * @type {Boolean} - * @default true - */ - dragDistanceCorrection: true, + this.props.titleCharHeight = measureCharTitle.clientHeight; + this.props.titleCharWidth = measureCharTitle.clientWidth; - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + this.dom.frame.removeChild(measureCharTitle); + } + }; - /** - * prevent default browser behavior when dragging occurs - * be careful with it, it makes the element a blocking element - * when you are using the drag gesture, it is a good practice to set this true - * @property dragBlockHorizontal - * @type {Boolean} - * @default false - */ - dragBlockHorizontal: false, + module.exports = DataAxis; - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, - /** - * dragLockToAxis keeps the drag gesture on the axis that it started on, - * It disallows vertical directions if the initial direction was horizontal, and vice versa. - * @property dragLockToAxis - * @type {Boolean} - * @default false - */ - dragLockToAxis: false, +/***/ }, +/* 29 */ +/***/ function(module, exports, __webpack_require__) { - /** - * drag lock only kicks in when distance > dragLockMinDistance - * This way, locking occurs only when the distance has become large enough to reliably determine the direction - * @property dragLockMinDistance - * @type {Number} - * @default 25 - */ - dragLockMinDistance: 25 - } - }; - })('drag'); + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(2); + var Line = __webpack_require__(49); + var Bar = __webpack_require__(50); + var Points = __webpack_require__(51); /** - * @module gestures - */ - /** - * trigger a simple gesture event, so you can do anything in your handler. - * only usable if you know what your doing... - * - * @class Gesture - * @static + * /** + * @param {object} group | the object of the group from the dataset + * @param {string} groupId | ID of the group + * @param {object} options | the default options + * @param {array} groupsUsingDefaultStyles | this array has one entree. + * It is passed as an array so it is passed by reference. + * It enumerates through the default styles + * @constructor */ + function GraphGroup (group, groupId, options, groupsUsingDefaultStyles) { + this.id = groupId; + var fields = ['sampling','style','sort','yAxisOrientation','barChart','drawPoints','shaded','catmullRom'] + this.options = util.selectiveBridgeObject(fields,options); + this.usingDefaultStyle = group.className === undefined; + this.groupsUsingDefaultStyles = groupsUsingDefaultStyles; + this.zeroPosition = 0; + this.update(group); + if (this.usingDefaultStyle == true) { + this.groupsUsingDefaultStyles[0] += 1; + } + this.itemsData = []; + this.visible = group.visible === undefined ? true : group.visible; + } + + /** - * @event gesture - * @param {Object} ev + * this loads a reference to all items in this group into this group. + * @param {array} items */ - Hammer.gestures.Gesture = { - name: 'gesture', - index: 1337, - handler: function releaseGesture(ev, inst) { - inst.trigger(this.name, ev); + GraphGroup.prototype.setItems = function(items) { + if (items != null) { + this.itemsData = items; + if (this.options.sort == true) { + this.itemsData.sort(function (a,b) {return a.x - b.x;}) } + } + else { + this.itemsData = []; + } }; - /** - * @module gestures - */ - /** - * Touch stays at the same place for x time - * - * @class Hold - * @static - */ - /** - * @event hold - * @param {Object} ev - */ /** - * @param {String} name + * this is used for plotting barcharts, this way, we only have to calculate it once. + * @param pos */ - (function(name) { - var timer; - - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; - - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + GraphGroup.prototype.setZeroPosition = function(pos) { + this.zeroPosition = pos; + }; - // set the gesture so we can check in the timeout if it still is - current.name = name; - // set timer and if after the timeout it still is hold, - // we trigger the hold event - timer = setTimeout(function() { - if(current && current.name == name) { - inst.trigger(name, ev); - } - }, options.holdTimeout); - break; + /** + * set the options of the graph group over the default options. + * @param options + */ + GraphGroup.prototype.setOptions = function(options) { + if (options !== undefined) { + var fields = ['sampling','style','sort','yAxisOrientation','barChart']; + util.selectiveDeepExtend(fields, this.options, options); - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); - } - break; + util.mergeOptions(this.options, options,'catmullRom'); + util.mergeOptions(this.options, options,'drawPoints'); + util.mergeOptions(this.options, options,'shaded'); - case EVENT_RELEASE: - clearTimeout(timer); - break; + if (options.catmullRom) { + if (typeof options.catmullRom == 'object') { + if (options.catmullRom.parametrization) { + if (options.catmullRom.parametrization == 'uniform') { + this.options.catmullRom.alpha = 0; + } + else if (options.catmullRom.parametrization == 'chordal') { + this.options.catmullRom.alpha = 1.0; + } + else { + this.options.catmullRom.parametrization = 'centripetal'; + this.options.catmullRom.alpha = 0.5; + } } + } } + } - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { - /** - * @property holdTimeout - * @type {Number} - * @default 500 - */ - holdTimeout: 500, + if (this.options.style == 'line') { + this.type = new Line(this.id, this.options); + } + else if (this.options.style == 'bar') { + this.type = new Bar(this.id, this.options); + } + else if (this.options.style == 'points') { + this.type = new Points(this.id, this.options); + } + }; - /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 - */ - holdThreshold: 2 - }, - handler: holdGesture - }; - })('hold'); /** - * @module gestures + * this updates the current group class with the latest group dataset entree, used in _updateGroup in linegraph + * @param group */ + GraphGroup.prototype.update = function(group) { + this.group = group; + this.content = group.content || 'graph'; + this.className = group.className || this.className || "graphGroup" + this.groupsUsingDefaultStyles[0] % 10; + this.visible = group.visible === undefined ? true : group.visible; + this.style = group.style; + this.setOptions(group.options); + }; + + /** - * when a touch is being released from the page + * draw the icon for the legend. * - * @class Release - * @static - */ - /** - * @event release - * @param {Object} ev + * @param x + * @param y + * @param JSONcontainer + * @param SVGcontainer + * @param iconWidth + * @param iconHeight */ - Hammer.gestures.Release = { - name: 'release', - index: Infinity, - handler: function releaseGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - inst.trigger(this.name, ev); - } + GraphGroup.prototype.drawIcon = function(x, y, JSONcontainer, SVGcontainer, iconWidth, iconHeight) { + var fillHeight = iconHeight * 0.5; + var path, fillPath; + + var outline = DOMutil.getSVGElement("rect", JSONcontainer, SVGcontainer); + outline.setAttributeNS(null, "x", x); + outline.setAttributeNS(null, "y", y - fillHeight); + outline.setAttributeNS(null, "width", iconWidth); + outline.setAttributeNS(null, "height", 2*fillHeight); + outline.setAttributeNS(null, "class", "outline"); + + if (this.options.style == 'line') { + path = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); + path.setAttributeNS(null, "class", this.className); + if(this.style !== undefined) { + path.setAttributeNS(null, "style", this.style); + } + + path.setAttributeNS(null, "d", "M" + x + ","+y+" L" + (x + iconWidth) + ","+y+""); + if (this.options.shaded.enabled == true) { + fillPath = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); + if (this.options.shaded.orientation == 'top') { + fillPath.setAttributeNS(null, "d", "M"+x+", " + (y - fillHeight) + + "L"+x+","+y+" L"+ (x + iconWidth) + ","+y+" L"+ (x + iconWidth) + "," + (y - fillHeight)); + } + else { + fillPath.setAttributeNS(null, "d", "M"+x+","+y+" " + + "L"+x+"," + (y + fillHeight) + " " + + "L"+ (x + iconWidth) + "," + (y + fillHeight) + + "L"+ (x + iconWidth) + ","+y); + } + fillPath.setAttributeNS(null, "class", this.className + " iconFill"); + } + + if (this.options.drawPoints.enabled == true) { + DOMutil.drawPoint(x + 0.5 * iconWidth,y, this, JSONcontainer, SVGcontainer); } + } + else { + var barWidth = Math.round(0.3 * iconWidth); + var bar1Height = Math.round(0.4 * iconHeight); + var bar2Height = Math.round(0.75 * iconHeight); + + var offset = Math.round((iconWidth - (2 * barWidth))/3); + + DOMutil.drawBar(x + 0.5*barWidth + offset , y + fillHeight - bar1Height - 1, barWidth, bar1Height, this.className + ' bar', JSONcontainer, SVGcontainer); + DOMutil.drawBar(x + 1.5*barWidth + offset + 2, y + fillHeight - bar2Height - 1, barWidth, bar2Height, this.className + ' bar', JSONcontainer, SVGcontainer); + } }; + /** - * @module gestures - */ - /** - * triggers swipe events when the end velocity is above the threshold - * for best usage, set `preventDefault` (on the drag gesture) to `true` - * ```` - * hammertime.on("dragleft swipeleft", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` + * return the legend entree for this group. * - * @class Swipe - * @static - */ - /** - * @event swipe - * @param {Object} ev - */ - /** - * @event swipeleft - * @param {Object} ev + * @param iconWidth + * @param iconHeight + * @returns {{icon: HTMLElement, label: (group.content|*|string), orientation: (.options.yAxisOrientation|*)}} */ - /** - * @event swiperight - * @param {Object} ev - */ - /** - * @event swipeup - * @param {Object} ev - */ - /** - * @event swipedown - * @param {Object} ev - */ - Hammer.gestures.Swipe = { - name: 'swipe', - index: 40, - defaults: { - /** - * @property swipeMinTouches - * @type {Number} - * @default 1 - */ - swipeMinTouches: 1, + GraphGroup.prototype.getLegend = function(iconWidth, iconHeight) { + var svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); + this.drawIcon(0,0.5*iconHeight,[],svg,iconWidth,iconHeight); + return {icon: svg, label: this.content, orientation:this.options.yAxisOrientation}; + } - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, + GraphGroup.prototype.getYRange = function(groupData) { + return this.type.getYRange(groupData); + } - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, + GraphGroup.prototype.draw = function(dataset, group, framework) { + this.type.draw(dataset, group, framework); + } - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 - }, - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; + module.exports = GraphGroup; - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; - } - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.velocityX > options.swipeVelocityX || - ev.velocityY > options.swipeVelocityY) { - // trigger swipe events - inst.trigger(this.name, ev); - inst.trigger(this.name + ev.direction, ev); - } - } - } - }; +/***/ }, +/* 30 */ +/***/ function(module, exports, __webpack_require__) { - /** - * @module gestures - */ - /** - * Single tap and a double tap on a place - * - * @class Tap - * @static - */ - /** - * @event tap - * @param {Object} ev - */ - /** - * @event doubletap - * @param {Object} ev - */ + var util = __webpack_require__(1); + var stack = __webpack_require__(18); + var RangeItem = __webpack_require__(24); /** - * @param {String} name + * @constructor Group + * @param {Number | String} groupId + * @param {Object} data + * @param {ItemSet} itemSet */ - (function(name) { - var hasMoved = false; - - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; + function Group (groupId, data, itemSet) { + this.groupId = groupId; + this.subgroups = {}; + this.subgroupIndex = 0; + this.subgroupOrderer = data && data.subgroupOrder; + this.itemSet = itemSet; - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; + this.dom = {}; + this.props = { + label: { + width: 0, + height: 0 + } + }; + this.className = null; - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; + this.items = {}; // items filtered by groupId of this group + this.visibleItems = []; // items currently visible in window + this.orderedItems = { + byStart: [], + byEnd: [] + }; + this.checkRangedItems = false; // needed to refresh the ranged items if the window is programatically changed with NO overlap. + var me = this; + this.itemSet.body.emitter.on("checkRangedItems", function () { + me.checkRangedItems = true; + }) - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; + this._create(); - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } + this.setData(data); + } - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; - } - } + /** + * Create DOM elements for the group + * @private + */ + Group.prototype._create = function() { + var label = document.createElement('div'); + label.className = 'vlabel'; + this.dom.label = label; - Hammer.gestures.Tap = { - name: name, - index: 100, - handler: tapGesture, - defaults: { - /** - * max time of a tap, this is for the slow tappers - * @property tapMaxTime - * @type {Number} - * @default 250 - */ - tapMaxTime: 250, + var inner = document.createElement('div'); + inner.className = 'inner'; + label.appendChild(inner); + this.dom.inner = inner; - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, + var foreground = document.createElement('div'); + foreground.className = 'group'; + foreground['timeline-group'] = this; + this.dom.foreground = foreground; - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, + this.dom.background = document.createElement('div'); + this.dom.background.className = 'group'; - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, + this.dom.axis = document.createElement('div'); + this.dom.axis.className = 'group'; - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 - } - }; - })('tap'); + // create a hidden marker to detect when the Timelines container is attached + // to the DOM, or the style of a parent of the Timeline is changed from + // display:none is changed to visible. + this.dom.marker = document.createElement('div'); + this.dom.marker.style.visibility = 'hidden'; // TODO: ask jos why this is not none? + this.dom.marker.innerHTML = '?'; + this.dom.background.appendChild(this.dom.marker); + }; /** - * @module gestures - */ - /** - * when a touch is being touched at the page - * - * @class Touch - * @static - */ - /** - * @event touch - * @param {Object} ev + * Set the group data for this group + * @param {Object} data Group data, can contain properties content and className */ - Hammer.gestures.Touch = { - name: 'touch', - index: -Infinity, - defaults: { - /** - * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, - * but it improves gestures like transforming and dragging. - * be careful with using this, it can be very annoying for users to be stuck on the page - * @property preventDefault - * @type {Boolean} - * @default false - */ - preventDefault: false, + Group.prototype.setData = function(data) { + // update contents + var content = data && data.content; + if (content instanceof Element) { + this.dom.inner.appendChild(content); + } + else if (content !== undefined && content !== null) { + this.dom.inner.innerHTML = content; + } + else { + this.dom.inner.innerHTML = this.groupId || ''; // groupId can be null + } - /** - * disable mouse events, so only touch (or pen!) input triggers events - * @property preventMouse - * @type {Boolean} - * @default false - */ - preventMouse: false - }, - handler: function touchGesture(ev, inst) { - if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { - ev.stopDetect(); - return; - } + // update title + this.dom.label.title = data && data.title || ''; - if(inst.options.preventDefault) { - ev.preventDefault(); - } + if (!this.dom.inner.firstChild) { + util.addClassName(this.dom.inner, 'hidden'); + } + else { + util.removeClassName(this.dom.inner, 'hidden'); + } - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); - } + // update className + var className = data && data.className || null; + if (className != this.className) { + if (this.className) { + util.removeClassName(this.dom.label, this.className); + util.removeClassName(this.dom.foreground, this.className); + util.removeClassName(this.dom.background, this.className); + util.removeClassName(this.dom.axis, this.className); } + util.addClassName(this.dom.label, className); + util.addClassName(this.dom.foreground, className); + util.addClassName(this.dom.background, className); + util.addClassName(this.dom.axis, className); + this.className = className; + } + + // update style + if (this.style) { + util.removeCssText(this.dom.label, this.style); + this.style = null; + } + if (data && data.style) { + util.addCssText(this.dom.label, data.style); + this.style = data.style; + } }; /** - * @module gestures - */ - /** - * User want to scale or rotate with 2 fingers - * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the - * `preventDefault` option. - * - * @class Transform - * @static - */ - /** - * @event transform - * @param {Object} ev - */ - /** - * @event transformstart - * @param {Object} ev - */ - /** - * @event transformend - * @param {Object} ev - */ - /** - * @event pinchin - * @param {Object} ev - */ - /** - * @event pinchout - * @param {Object} ev - */ - /** - * @event rotate - * @param {Object} ev + * Get the width of the group label + * @return {number} width */ + Group.prototype.getLabelWidth = function() { + return this.props.label.width; + }; + /** - * @param {String} name + * Repaint this group + * @param {{start: number, end: number}} range + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @param {boolean} [restack=false] Force restacking of all items + * @return {boolean} Returns true if the group is resized */ - (function(name) { - var triggered = false; - - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; - - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } + Group.prototype.redraw = function(range, margin, restack) { + var resized = false; - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(scaleThreshold < inst.options.transformMinScale && - rotationThreshold < inst.options.transformMinRotation) { - return; - } + // force recalculation of the height of the items when the marker height changed + // (due to the Timeline being attached to the DOM or changed from display:none to visible) + var markerHeight = this.dom.marker.clientHeight; + if (markerHeight != this.lastMarkerHeight) { + this.lastMarkerHeight = markerHeight; - // we are transforming! - Detection.current.name = name; + util.forEach(this.items, function (item) { + item.dirty = true; + if (item.displayed) item.redraw(); + }); - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + restack = true; + } - inst.trigger(name, ev); // basic transform event + // reposition visible items vertically + if (this.itemSet.options.stack) { // TODO: ugly way to access options... + stack.stack(this.visibleItems, margin, restack); + } + else { // no stacking + stack.nostack(this.visibleItems, margin, this.subgroups); + } - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } + // recalculate the height of the group + var height = this._calculateHeight(margin); - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + // calculate actual size and position + var foreground = this.dom.foreground; + this.top = foreground.offsetTop; + this.left = foreground.offsetLeft; + this.width = foreground.offsetWidth; + resized = util.updateProperty(this, 'height', height) || resized; - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; - } - } + // recalculate size of label + resized = util.updateProperty(this.props.label, 'width', this.dom.inner.clientWidth) || resized; + resized = util.updateProperty(this.props.label, 'height', this.dom.inner.clientHeight) || resized; - Hammer.gestures.Transform = { - name: name, - index: 45, - defaults: { - /** - * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 - * @property transformMinScale - * @type {Number} - * @default 0.01 - */ - transformMinScale: 0.01, + // apply new height + this.dom.background.style.height = height + 'px'; + this.dom.foreground.style.height = height + 'px'; + this.dom.label.style.height = height + 'px'; - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 - }, + // update vertical position of items after they are re-stacked and the height of the group is calculated + for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { + var item = this.visibleItems[i]; + item.repositionY(margin); + } - handler: transformGesture - }; - })('transform'); + return resized; + }; /** - * @module hammer + * recalculate the height of the group + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @returns {number} Returns the height + * @private */ - - // AMD export - if(true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - // commonjs export - } else if(typeof module !== 'undefined' && module.exports) { - module.exports = Hammer; - // browser export - } else { - window.Hammer = Hammer; - } - - })(window); - -/***/ }, -/* 21 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(22); - var moment = __webpack_require__(2); - var Component = __webpack_require__(23); - var DateUtil = __webpack_require__(24); - - /** - * @constructor Range - * A Range controls a numeric range with a start and end value. - * The Range adjusts the range based on mouse events or programmatic changes, - * and triggers events when the range is changing or has been changed. - * @param {{dom: Object, domProps: Object, emitter: Emitter}} body - * @param {Object} [options] See description at Range.setOptions - */ - function Range(body, options) { - var now = moment().hours(0).minutes(0).seconds(0).milliseconds(0); - this.start = now.clone().add(-3, 'days').valueOf(); // Number - this.end = now.clone().add(4, 'days').valueOf(); // Number - - this.body = body; - this.deltaDifference = 0; - this.scaleOffset = 0; - this.startToFront = false; - this.endToFront = true; - - // default options - this.defaultOptions = { - start: null, - end: null, - direction: 'horizontal', // 'horizontal' or 'vertical' - moveable: true, - zoomable: true, - min: null, - max: null, - zoomMin: 10, // milliseconds - zoomMax: 1000 * 60 * 60 * 24 * 365 * 10000 // milliseconds - }; - this.options = util.extend({}, this.defaultOptions); - - this.props = { - touch: {} - }; - this.animateTimer = null; - - // drag listeners for dragging - this.body.emitter.on('dragstart', this._onDragStart.bind(this)); - this.body.emitter.on('drag', this._onDrag.bind(this)); - this.body.emitter.on('dragend', this._onDragEnd.bind(this)); - - // ignore dragging when holding - this.body.emitter.on('hold', this._onHold.bind(this)); - - // mouse wheel for zooming - this.body.emitter.on('mousewheel', this._onMouseWheel.bind(this)); - this.body.emitter.on('DOMMouseScroll', this._onMouseWheel.bind(this)); // For FF - - // pinch to zoom - this.body.emitter.on('touch', this._onTouch.bind(this)); - this.body.emitter.on('pinch', this._onPinch.bind(this)); - - this.setOptions(options); - } - - Range.prototype = new Component(); - - /** - * Set options for the range controller - * @param {Object} options Available options: - * {Number | Date | String} start Start date for the range - * {Number | Date | String} end End date for the range - * {Number} min Minimum value for start - * {Number} max Maximum value for end - * {Number} zoomMin Set a minimum value for - * (end - start). - * {Number} zoomMax Set a maximum value for - * (end - start). - * {Boolean} moveable Enable moving of the range - * by dragging. True by default - * {Boolean} zoomable Enable zooming of the range - * by pinching/scrolling. True by default - */ - Range.prototype.setOptions = function (options) { - if (options) { - // copy the options that we know - var fields = ['direction', 'min', 'max', 'zoomMin', 'zoomMax', 'moveable', 'zoomable', 'activate', 'hiddenDates']; - util.selectiveExtend(fields, this.options, options); - - if ('start' in options || 'end' in options) { - // apply a new range. both start and end are optional - this.setRange(options.start, options.end); + Group.prototype._calculateHeight = function (margin) { + // recalculate the height of the group + var height; + var visibleItems = this.visibleItems; + //var visibleSubgroups = []; + //this.visibleSubgroups = 0; + this.resetSubgroups(); + var me = this; + if (visibleItems.length) { + var min = visibleItems[0].top; + var max = visibleItems[0].top + visibleItems[0].height; + util.forEach(visibleItems, function (item) { + min = Math.min(min, item.top); + max = Math.max(max, (item.top + item.height)); + if (item.data.subgroup !== undefined) { + me.subgroups[item.data.subgroup].height = Math.max(me.subgroups[item.data.subgroup].height,item.height); + me.subgroups[item.data.subgroup].visible = true; + //if (visibleSubgroups.indexOf(item.data.subgroup) == -1){ + // visibleSubgroups.push(item.data.subgroup); + // me.visibleSubgroups += 1; + //} + } + }); + if (min > margin.axis) { + // there is an empty gap between the lowest item and the axis + var offset = min - margin.axis; + max -= offset; + util.forEach(visibleItems, function (item) { + item.top -= offset; + }); } + height = max + margin.item.vertical / 2; + } + else { + height = margin.axis + margin.item.vertical; } + height = Math.max(height, this.props.label.height); + + return height; }; /** - * Test whether direction has a valid value - * @param {String} direction 'horizontal' or 'vertical' + * Show this group: attach to the DOM */ - function validateDirection (direction) { - if (direction != 'horizontal' && direction != 'vertical') { - throw new TypeError('Unknown direction "' + direction + '". ' + - 'Choose "horizontal" or "vertical".'); + Group.prototype.show = function() { + if (!this.dom.label.parentNode) { + this.itemSet.dom.labelSet.appendChild(this.dom.label); } - } - /** - * Set a new start and end range - * @param {Date | Number | String} [start] - * @param {Date | Number | String} [end] - * @param {boolean | number} [animate=false] If true, the range is animated - * smoothly to the new window. - * If animate is a number, the - * number is taken as duration - * Default duration is 500 ms. - * @param {Boolean} [byUser=false] - * - */ - Range.prototype.setRange = function(start, end, animate, byUser) { - if (byUser !== true) { - byUser = false; + if (!this.dom.foreground.parentNode) { + this.itemSet.dom.foreground.appendChild(this.dom.foreground); } - var _start = start != undefined ? util.convert(start, 'Date').valueOf() : null; - var _end = end != undefined ? util.convert(end, 'Date').valueOf() : null; - this._cancelAnimation(); - - if (animate) { - var me = this; - var initStart = this.start; - var initEnd = this.end; - var duration = typeof animate === 'number' ? animate : 500; - var initTime = new Date().valueOf(); - var anyChanged = false; - - var next = function () { - if (!me.props.touch.dragging) { - var now = new Date().valueOf(); - var time = now - initTime; - var done = time > duration; - var s = (done || _start === null) ? _start : util.easeInOutQuad(time, initStart, _start, duration); - var e = (done || _end === null) ? _end : util.easeInOutQuad(time, initEnd, _end, duration); - - changed = me._applyRange(s, e); - DateUtil.updateHiddenDates(me.body, me.options.hiddenDates); - anyChanged = anyChanged || changed; - if (changed) { - me.body.emitter.emit('rangechange', {start: new Date(me.start), end: new Date(me.end), byUser:byUser}); - } - - if (done) { - if (anyChanged) { - me.body.emitter.emit('rangechanged', {start: new Date(me.start), end: new Date(me.end), byUser:byUser}); - } - } - else { - // animate with as high as possible frame rate, leave 20 ms in between - // each to prevent the browser from blocking - me.animateTimer = setTimeout(next, 20); - } - } - }; - return next(); - } - else { - var changed = this._applyRange(_start, _end); - DateUtil.updateHiddenDates(this.body, this.options.hiddenDates); - if (changed) { - var params = {start: new Date(this.start), end: new Date(this.end), byUser:byUser}; - this.body.emitter.emit('rangechange', params); - this.body.emitter.emit('rangechanged', params); - } + if (!this.dom.background.parentNode) { + this.itemSet.dom.background.appendChild(this.dom.background); } - }; - /** - * Stop an animation - * @private - */ - Range.prototype._cancelAnimation = function () { - if (this.animateTimer) { - clearTimeout(this.animateTimer); - this.animateTimer = null; + if (!this.dom.axis.parentNode) { + this.itemSet.dom.axis.appendChild(this.dom.axis); } }; /** - * Set a new start and end range. This method is the same as setRange, but - * does not trigger a range change and range changed event, and it returns - * true when the range is changed - * @param {Number} [start] - * @param {Number} [end] - * @return {Boolean} changed - * @private + * Hide this group: remove from the DOM */ - Range.prototype._applyRange = function(start, end) { - var newStart = (start != null) ? util.convert(start, 'Date').valueOf() : this.start, - newEnd = (end != null) ? util.convert(end, 'Date').valueOf() : this.end, - max = (this.options.max != null) ? util.convert(this.options.max, 'Date').valueOf() : null, - min = (this.options.min != null) ? util.convert(this.options.min, 'Date').valueOf() : null, - diff; + Group.prototype.hide = function() { + var label = this.dom.label; + if (label.parentNode) { + label.parentNode.removeChild(label); + } - // check for valid number - if (isNaN(newStart) || newStart === null) { - throw new Error('Invalid start "' + start + '"'); + var foreground = this.dom.foreground; + if (foreground.parentNode) { + foreground.parentNode.removeChild(foreground); } - if (isNaN(newEnd) || newEnd === null) { - throw new Error('Invalid end "' + end + '"'); + + var background = this.dom.background; + if (background.parentNode) { + background.parentNode.removeChild(background); } - // prevent start < end - if (newEnd < newStart) { - newEnd = newStart; + var axis = this.dom.axis; + if (axis.parentNode) { + axis.parentNode.removeChild(axis); } + }; - // prevent start < min - if (min !== null) { - if (newStart < min) { - diff = (min - newStart); - newStart += diff; - newEnd += diff; + /** + * Add an item to the group + * @param {Item} item + */ + Group.prototype.add = function(item) { + this.items[item.id] = item; + item.setParent(this); - // prevent end > max - if (max != null) { - if (newEnd > max) { - newEnd = max; - } - } + // add to + if (item.data.subgroup !== undefined) { + if (this.subgroups[item.data.subgroup] === undefined) { + this.subgroups[item.data.subgroup] = {height:0, visible: false, index:this.subgroupIndex, items: []}; + this.subgroupIndex++; } + this.subgroups[item.data.subgroup].items.push(item); } + this.orderSubgroups(); - // prevent end > max - if (max !== null) { - if (newEnd > max) { - diff = (newEnd - max); - newStart -= diff; - newEnd -= diff; - - // prevent start < min - if (min != null) { - if (newStart < min) { - newStart = min; - } - } - } + if (this.visibleItems.indexOf(item) == -1) { + var range = this.itemSet.body.range; // TODO: not nice accessing the range like this + this._checkIfVisible(item, this.visibleItems, range); } + }; - // prevent (end-start) < zoomMin - if (this.options.zoomMin !== null) { - var zoomMin = parseFloat(this.options.zoomMin); - if (zoomMin < 0) { - zoomMin = 0; - } - if ((newEnd - newStart) < zoomMin) { - if ((this.end - this.start) === zoomMin && newStart > this.start && newEnd < this.end) { - // ignore this action, we are already zoomed to the minimum - newStart = this.start; - newEnd = this.end; - } - else { - // zoom to the minimum - diff = (zoomMin - (newEnd - newStart)); - newStart -= diff / 2; - newEnd += diff / 2; + Group.prototype.orderSubgroups = function() { + if (this.subgroupOrderer !== undefined) { + var sortArray = []; + if (typeof this.subgroupOrderer == 'string') { + for (var subgroup in this.subgroups) { + sortArray.push({subgroup: subgroup, sortField: this.subgroups[subgroup].items[0].data[this.subgroupOrderer]}) } + sortArray.sort(function (a, b) { + return a.sortField - b.sortField; + }) } - } - - // prevent (end-start) > zoomMax - if (this.options.zoomMax !== null) { - var zoomMax = parseFloat(this.options.zoomMax); - if (zoomMax < 0) { - zoomMax = 0; + else if (typeof this.subgroupOrderer == 'function') { + for (var subgroup in this.subgroups) { + sortArray.push(this.subgroups[subgroup].items[0].data); + } + sortArray.sort(this.subgroupOrderer); } - if ((newEnd - newStart) > zoomMax) { - if ((this.end - this.start) === zoomMax && newStart < this.start && newEnd > this.end) { - // ignore this action, we are already zoomed to the maximum - newStart = this.start; - newEnd = this.end; - } - else { - // zoom to the maximum - diff = ((newEnd - newStart) - zoomMax); - newStart += diff / 2; - newEnd -= diff / 2; + if (sortArray.length > 0) { + for (var i = 0; i < sortArray.length; i++) { + this.subgroups[sortArray[i].subgroup].index = i; } } } + }; - var changed = (this.start != newStart || this.end != newEnd); - - // if the new range does NOT overlap with the old range, emit checkRangedItems to avoid not showing ranged items (ranged meaning has end time, not necessarily of type Range) - if (!((newStart >= this.start && newStart <= this.end) || (newEnd >= this.start && newEnd <= this.end)) && - !((this.start >= newStart && this.start <= newEnd) || (this.end >= newStart && this.end <= newEnd) )) { - this.body.emitter.emit('checkRangedItems'); + Group.prototype.resetSubgroups = function() { + for (var subgroup in this.subgroups) { + if (this.subgroups.hasOwnProperty(subgroup)) { + this.subgroups[subgroup].visible = false; + } } - - this.start = newStart; - this.end = newEnd; - return changed; }; /** - * Retrieve the current range. - * @return {Object} An object with start and end properties + * Remove an item from the group + * @param {Item} item */ - Range.prototype.getRange = function() { - return { - start: this.start, - end: this.end - }; + Group.prototype.remove = function(item) { + delete this.items[item.id]; + item.setParent(null); + + // remove from visible items + var index = this.visibleItems.indexOf(item); + if (index != -1) this.visibleItems.splice(index, 1); + + // TODO: also remove from ordered items? }; + /** - * Calculate the conversion offset and scale for current range, based on - * the provided width - * @param {Number} width - * @returns {{offset: number, scale: number}} conversion + * Remove an item from the corresponding DataSet + * @param {Item} item */ - Range.prototype.conversion = function (width, totalHidden) { - return Range.conversion(this.start, this.end, width, totalHidden); + Group.prototype.removeFromDataSet = function(item) { + this.itemSet.removeItem(item.id); }; + /** - * Static method to calculate the conversion offset and scale for a range, - * based on the provided start, end, and width - * @param {Number} start - * @param {Number} end - * @param {Number} width - * @returns {{offset: number, scale: number}} conversion + * Reorder the items */ - Range.conversion = function (start, end, width, totalHidden) { - if (totalHidden === undefined) { - totalHidden = 0; - } - if (width != 0 && (end - start != 0)) { - return { - offset: start, - scale: width / (end - start - totalHidden) + Group.prototype.order = function() { + var array = util.toArray(this.items); + var startArray = []; + var endArray = []; + + for (var i = 0; i < array.length; i++) { + if (array[i].data.end !== undefined) { + endArray.push(array[i]); } + startArray.push(array[i]); } - else { - return { - offset: 0, - scale: 1 - }; - } + this.orderedItems = { + byStart: startArray, + byEnd: endArray + }; + + stack.orderByStart(this.orderedItems.byStart); + stack.orderByEnd(this.orderedItems.byEnd); }; + /** - * Start dragging horizontally or vertically - * @param {Event} event + * Update the visible items + * @param {{byStart: Item[], byEnd: Item[]}} orderedItems All items ordered by start date and by end date + * @param {Item[]} visibleItems The previously visible items. + * @param {{start: number, end: number}} range Visible range + * @return {Item[]} visibleItems The new visible items. * @private */ - Range.prototype._onDragStart = function(event) { - this.deltaDifference = 0; - this.previousDelta = 0; - // only allow dragging when configured as movable - if (!this.options.moveable) return; - - // refuse to drag when we where pinching to prevent the timeline make a jump - // when releasing the fingers in opposite order from the touch screen - if (!this.props.touch.allowDragging) return; + Group.prototype._updateVisibleItems = function(orderedItems, oldVisibleItems, range) { + var visibleItems = []; + var visibleItemsLookup = {}; // we keep this to quickly look up if an item already exists in the list without using indexOf on visibleItems + var interval = (range.end - range.start) / 4; + var lowerBound = range.start - interval; + var upperBound = range.end + interval; + var item, i; - this.props.touch.start = this.start; - this.props.touch.end = this.end; - this.props.touch.dragging = true; + // this function is used to do the binary search. + var searchFunction = function (value) { + if (value < lowerBound) {return -1;} + else if (value <= upperBound) {return 0;} + else {return 1;} + } - if (this.body.dom.root) { - this.body.dom.root.style.cursor = 'move'; + // first check if the items that were in view previously are still in view. + // IMPORTANT: this handles the case for the items with startdate before the window and enddate after the window! + // also cleans up invisible items. + if (oldVisibleItems.length > 0) { + for (i = 0; i < oldVisibleItems.length; i++) { + this._checkIfVisibleWithReference(oldVisibleItems[i], visibleItems, visibleItemsLookup, range); + } } - }; - /** - * Perform dragging operation - * @param {Event} event - * @private - */ - Range.prototype._onDrag = function (event) { - // only allow dragging when configured as movable - if (!this.options.moveable) return; - // refuse to drag when we where pinching to prevent the timeline make a jump - // when releasing the fingers in opposite order from the touch screen - if (!this.props.touch.allowDragging) return; + // we do a binary search for the items that have only start values. + var initialPosByStart = util.binarySearchCustom(orderedItems.byStart, searchFunction, 'data','start'); - var direction = this.options.direction; - validateDirection(direction); + // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the start values. + this._traceVisible(initialPosByStart, orderedItems.byStart, visibleItems, visibleItemsLookup, function (item) { + return (item.data.start < lowerBound || item.data.start > upperBound); + }); - var delta = (direction == 'horizontal') ? event.gesture.deltaX : event.gesture.deltaY; - delta -= this.deltaDifference; - var interval = (this.props.touch.end - this.props.touch.start); + // if the window has changed programmatically without overlapping the old window, the ranged items with start < lowerBound and end > upperbound are not shown. + // We therefore have to brute force check all items in the byEnd list + if (this.checkRangedItems == true) { + this.checkRangedItems = false; + for (i = 0; i < orderedItems.byEnd.length; i++) { + this._checkIfVisibleWithReference(orderedItems.byEnd[i], visibleItems, visibleItemsLookup, range); + } + } + else { + // we do a binary search for the items that have defined end times. + var initialPosByEnd = util.binarySearchCustom(orderedItems.byEnd, searchFunction, 'data','end'); - // normalize dragging speed if cutout is in between. - var duration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); - interval -= duration; - - var width = (direction == 'horizontal') ? this.body.domProps.center.width : this.body.domProps.center.height; - var diffRange = -delta / width * interval; - var newStart = this.props.touch.start + diffRange; - var newEnd = this.props.touch.end + diffRange; + // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the end values. + this._traceVisible(initialPosByEnd, orderedItems.byEnd, visibleItems, visibleItemsLookup, function (item) { + return (item.data.end < lowerBound || item.data.end > upperBound); + }); + } - // snapping times away from hidden zones - var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, this.previousDelta-delta, true); - var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, this.previousDelta-delta, true); - if (safeStart != newStart || safeEnd != newEnd) { - this.deltaDifference += delta; - this.props.touch.start = safeStart; - this.props.touch.end = safeEnd; - this._onDrag(event); - return; + // finally, we reposition all the visible items. + for (i = 0; i < visibleItems.length; i++) { + item = visibleItems[i]; + if (!item.displayed) item.show(); + // reposition item horizontally + item.repositionX(); } - this.previousDelta = delta; - this._applyRange(newStart, newEnd); + // debug + //console.log("new line") + //if (this.groupId == null) { + // for (i = 0; i < orderedItems.byStart.length; i++) { + // item = orderedItems.byStart[i].data; + // console.log('start',i,initialPosByStart, item.start.valueOf(), item.content, item.start >= lowerBound && item.start <= upperBound,i == initialPosByStart ? "<------------------- HEREEEE" : "") + // } + // for (i = 0; i < orderedItems.byEnd.length; i++) { + // item = orderedItems.byEnd[i].data; + // console.log('rangeEnd',i,initialPosByEnd, item.end.valueOf(), item.content, item.end >= range.start && item.end <= range.end,i == initialPosByEnd ? "<------------------- HEREEEE" : "") + // } + //} - // fire a rangechange event - this.body.emitter.emit('rangechange', { - start: new Date(this.start), - end: new Date(this.end), - byUser: true - }); + return visibleItems; }; - /** - * Stop dragging operation - * @param {event} event - * @private - */ - Range.prototype._onDragEnd = function (event) { - // only allow dragging when configured as movable - if (!this.options.moveable) return; + Group.prototype._traceVisible = function (initialPos, items, visibleItems, visibleItemsLookup, breakCondition) { + var item; + var i; - // refuse to drag when we where pinching to prevent the timeline make a jump - // when releasing the fingers in opposite order from the touch screen - if (!this.props.touch.allowDragging) return; + if (initialPos != -1) { + for (i = initialPos; i >= 0; i--) { + item = items[i]; + if (breakCondition(item)) { + break; + } + else { + if (visibleItemsLookup[item.id] === undefined) { + visibleItemsLookup[item.id] = true; + visibleItems.push(item); + } + } + } - this.props.touch.dragging = false; - if (this.body.dom.root) { - this.body.dom.root.style.cursor = 'auto'; + for (i = initialPos + 1; i < items.length; i++) { + item = items[i]; + if (breakCondition(item)) { + break; + } + else { + if (visibleItemsLookup[item.id] === undefined) { + visibleItemsLookup[item.id] = true; + visibleItems.push(item); + } + } + } } + } - // fire a rangechanged event - this.body.emitter.emit('rangechanged', { - start: new Date(this.start), - end: new Date(this.end), - byUser: true - }); - }; /** - * Event handler for mouse wheel event, used to zoom - * Code from http://adomas.org/javascript-mouse-wheel/ - * @param {Event} event + * this function is very similar to the _checkIfInvisible() but it does not + * return booleans, hides the item if it should not be seen and always adds to + * the visibleItems. + * this one is for brute forcing and hiding. + * + * @param {Item} item + * @param {Array} visibleItems + * @param {{start:number, end:number}} range * @private */ - Range.prototype._onMouseWheel = function(event) { - // only allow zooming when configured as zoomable and moveable - if (!(this.options.zoomable && this.options.moveable)) return; - - // retrieve delta - var delta = 0; - if (event.wheelDelta) { /* IE/Opera. */ - delta = event.wheelDelta / 120; - } else if (event.detail) { /* Mozilla case. */ - // In Mozilla, sign of delta is different than in IE. - // Also, delta is multiple of 3. - delta = -event.detail / 3; - } - - // If delta is nonzero, handle it. - // Basically, delta is now positive if wheel was scrolled up, - // and negative, if wheel was scrolled down. - if (delta) { - // perform the zoom action. Delta is normally 1 or -1 - - // adjust a negative delta such that zooming in with delta 0.1 - // equals zooming out with a delta -0.1 - var scale; - if (delta < 0) { - scale = 1 - (delta / 5); + Group.prototype._checkIfVisible = function(item, visibleItems, range) { + if (item.isVisible(range)) { + if (!item.displayed) item.show(); + // reposition item horizontally + item.repositionX(); + visibleItems.push(item); } else { - scale = 1 / (1 + (delta / 5)) ; + if (item.displayed) item.hide(); } - - // calculate center, the date to zoom around - var gesture = hammerUtil.fakeGesture(this, event), - pointer = getPointer(gesture.center, this.body.dom.center), - pointerDate = this._pointerToDate(pointer); - - this.zoom(scale, pointerDate, delta); - } - - // Prevent default actions caused by mouse wheel - // (else the page and timeline both zoom and scroll) - event.preventDefault(); - }; - - /** - * Start of a touch gesture - * @private - */ - Range.prototype._onTouch = function (event) { - this.props.touch.start = this.start; - this.props.touch.end = this.end; - this.props.touch.allowDragging = true; - this.props.touch.center = null; - this.scaleOffset = 0; - this.deltaDifference = 0; }; - /** - * On start of a hold gesture - * @private - */ - Range.prototype._onHold = function () { - this.props.touch.allowDragging = false; - }; /** - * Handle pinch event - * @param {Event} event + * this function is very similar to the _checkIfInvisible() but it does not + * return booleans, hides the item if it should not be seen and always adds to + * the visibleItems. + * this one is for brute forcing and hiding. + * + * @param {Item} item + * @param {Array} visibleItems + * @param {{start:number, end:number}} range * @private */ - Range.prototype._onPinch = function (event) { - // only allow zooming when configured as zoomable and moveable - if (!(this.options.zoomable && this.options.moveable)) return; - - this.props.touch.allowDragging = false; - - if (event.gesture.touches.length > 1) { - if (!this.props.touch.center) { - this.props.touch.center = getPointer(event.gesture.center, this.body.dom.center); + Group.prototype._checkIfVisibleWithReference = function(item, visibleItems, visibleItemsLookup, range) { + if (item.isVisible(range)) { + if (visibleItemsLookup[item.id] === undefined) { + visibleItemsLookup[item.id] = true; + visibleItems.push(item); } + } + else { + if (item.displayed) item.hide(); + } + }; - var scale = 1 / (event.gesture.scale + this.scaleOffset); - var centerDate = this._pointerToDate(this.props.touch.center); - - var hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); - var hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this, centerDate); - var hiddenDurationAfter = hiddenDuration - hiddenDurationBefore; - // calculate new start and end - var newStart = (centerDate - hiddenDurationBefore) + (this.props.touch.start - (centerDate - hiddenDurationBefore)) * scale; - var newEnd = (centerDate + hiddenDurationAfter) + (this.props.touch.end - (centerDate + hiddenDurationAfter)) * scale; - // snapping times away from hidden zones - this.startToFront = 1 - scale > 0 ? false : true; // used to do the right autocorrection with periodic hidden times - this.endToFront = scale - 1 > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + module.exports = Group; - var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, 1 - scale, true); - var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, scale - 1, true); - if (safeStart != newStart || safeEnd != newEnd) { - this.props.touch.start = safeStart; - this.props.touch.end = safeEnd; - this.scaleOffset = 1 - event.gesture.scale; - newStart = safeStart; - newEnd = safeEnd; - } - this.setRange(newStart, newEnd, false, true); +/***/ }, +/* 31 */ +/***/ function(module, exports, __webpack_require__) { - this.startToFront = false; // revert to default - this.endToFront = true; // revert to default - } - }; + var util = __webpack_require__(1); + var Group = __webpack_require__(30); /** - * Helper function to calculate the center date for zooming - * @param {{x: Number, y: Number}} pointer - * @return {number} date - * @private + * @constructor BackgroundGroup + * @param {Number | String} groupId + * @param {Object} data + * @param {ItemSet} itemSet */ - Range.prototype._pointerToDate = function (pointer) { - var conversion; - var direction = this.options.direction; + function BackgroundGroup (groupId, data, itemSet) { + Group.call(this, groupId, data, itemSet); - validateDirection(direction); + this.width = 0; + this.height = 0; + this.top = 0; + this.left = 0; + } - if (direction == 'horizontal') { - return this.body.util.toTime(pointer.x).valueOf(); - } - else { - var height = this.body.domProps.center.height; - conversion = this.conversion(height); - return pointer.y / conversion.scale + conversion.offset; - } - }; + BackgroundGroup.prototype = Object.create(Group.prototype); /** - * Get the pointer location relative to the location of the dom element - * @param {{pageX: Number, pageY: Number}} touch - * @param {Element} element HTML DOM element - * @return {{x: Number, y: Number}} pointer - * @private + * Repaint this group + * @param {{start: number, end: number}} range + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @param {boolean} [restack=false] Force restacking of all items + * @return {boolean} Returns true if the group is resized */ - function getPointer (touch, element) { - return { - x: touch.pageX - util.getAbsoluteLeft(element), - y: touch.pageY - util.getAbsoluteTop(element) - }; - } + BackgroundGroup.prototype.redraw = function(range, margin, restack) { + var resized = false; - /** - * Zoom the range the given scale in or out. Start and end date will - * be adjusted, and the timeline will be redrawn. You can optionally give a - * date around which to zoom. - * For example, try scale = 0.9 or 1.1 - * @param {Number} scale Scaling factor. Values above 1 will zoom out, - * values below 1 will zoom in. - * @param {Number} [center] Value representing a date around which will - * be zoomed. - */ - Range.prototype.zoom = function(scale, center, delta) { - // if centerDate is not provided, take it half between start Date and end Date - if (center == null) { - center = (this.start + this.end) / 2; - } + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - var hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); - var hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this, center); - var hiddenDurationAfter = hiddenDuration - hiddenDurationBefore; + // calculate actual size + this.width = this.dom.background.offsetWidth; - // calculate new start and end - var newStart = (center-hiddenDurationBefore) + (this.start - (center-hiddenDurationBefore)) * scale; - var newEnd = (center+hiddenDurationAfter) + (this.end - (center+hiddenDurationAfter)) * scale; + // apply new height (just always zero for BackgroundGroup + this.dom.background.style.height = '0'; - // snapping times away from hidden zones - this.startToFront = delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times - this.endToFront = -delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times - var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, delta, true); - var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, -delta, true); - if (safeStart != newStart || safeEnd != newEnd) { - newStart = safeStart; - newEnd = safeEnd; + // update vertical position of items after they are re-stacked and the height of the group is calculated + for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { + var item = this.visibleItems[i]; + item.repositionY(margin); } - this.setRange(newStart, newEnd, false, true); + return resized; + }; - this.startToFront = false; // revert to default - this.endToFront = true; // revert to default + /** + * Show this group: attach to the DOM + */ + BackgroundGroup.prototype.show = function() { + if (!this.dom.background.parentNode) { + this.itemSet.dom.background.appendChild(this.dom.background); + } }; + module.exports = BackgroundGroup; - /** - * Move the range with a given delta to the left or right. Start and end - * value will be adjusted. For example, try delta = 0.1 or -0.1 - * @param {Number} delta Moving amount. Positive value will move right, - * negative value will move left - */ - Range.prototype.move = function(delta) { - // zoom start Date and end Date relative to the centerDate - var diff = (this.end - this.start); +/***/ }, +/* 32 */ +/***/ function(module, exports, __webpack_require__) { - // apply new values - var newStart = this.start + diff * delta; - var newEnd = this.end + diff * delta; + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var TimeStep = __webpack_require__(19); + var Component = __webpack_require__(25); + var Group = __webpack_require__(30); + var BackgroundGroup = __webpack_require__(31); + var BoxItem = __webpack_require__(22); + var PointItem = __webpack_require__(23); + var RangeItem = __webpack_require__(24); + var BackgroundItem = __webpack_require__(21); - // TODO: reckon with min and max range - this.start = newStart; - this.end = newEnd; - }; + var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items + var BACKGROUND = '__background__'; // reserved group id for background items without group /** - * Move the range to a new center point - * @param {Number} moveTo New center point of the range + * An ItemSet holds a set of items and ranges which can be displayed in a + * range. The width is determined by the parent of the ItemSet, and the height + * is determined by the size of the items. + * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body + * @param {Object} [options] See ItemSet.setOptions for the available options. + * @constructor ItemSet + * @extends Component */ - Range.prototype.moveTo = function(moveTo) { - var center = (this.start + this.end) / 2; + function ItemSet(body, options) { + this.body = body; - var diff = center - moveTo; + this.defaultOptions = { + type: null, // 'box', 'point', 'range', 'background' + orientation: 'bottom', // 'top' or 'bottom' + align: 'auto', // alignment of box items + stack: true, + groupOrder: null, - // calculate new start and end - var newStart = this.start - diff; - var newEnd = this.end - diff; + selectable: true, + editable: { + updateTime: false, + updateGroup: false, + add: false, + remove: false + }, - this.setRange(newStart, newEnd); - }; + snap: TimeStep.snap, - module.exports = Range; + onAdd: function (item, callback) { + callback(item); + }, + onUpdate: function (item, callback) { + callback(item); + }, + onMove: function (item, callback) { + callback(item); + }, + onRemove: function (item, callback) { + callback(item); + }, + onMoving: function (item, callback) { + callback(item); + }, + margin: { + item: { + horizontal: 10, + vertical: 10 + }, + axis: 20 + }, + padding: 5 + }; -/***/ }, -/* 22 */ -/***/ function(module, exports, __webpack_require__) { + // options is shared by this ItemSet and all its items + this.options = util.extend({}, this.defaultOptions); - var Hammer = __webpack_require__(19); + // options for getting items from the DataSet with the correct type + this.itemOptions = { + type: {start: 'Date', end: 'Date'} + }; - /** - * Fake a hammer.js gesture. Event can be a ScrollEvent or MouseMoveEvent - * @param {Element} element - * @param {Event} event - */ - exports.fakeGesture = function(element, event) { - var eventType = null; + this.conversion = { + toScreen: body.util.toScreen, + toTime: body.util.toTime + }; + this.dom = {}; + this.props = {}; + this.hammer = null; - // for hammer.js 1.0.5 - // var gesture = Hammer.event.collectEventData(this, eventType, event); + var me = this; + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet - // for hammer.js 1.0.6+ - var touches = Hammer.event.getTouchList(event, eventType); - var gesture = Hammer.event.collectEventData(this, eventType, touches, event); + // listeners for the DataSet of the items + this.itemListeners = { + 'add': function (event, params, senderId) { + me._onAdd(params.items); + }, + 'update': function (event, params, senderId) { + me._onUpdate(params.items); + }, + 'remove': function (event, params, senderId) { + me._onRemove(params.items); + } + }; - // on IE in standards mode, no touches are recognized by hammer.js, - // resulting in NaN values for center.pageX and center.pageY - if (isNaN(gesture.center.pageX)) { - gesture.center.pageX = event.pageX; - } - if (isNaN(gesture.center.pageY)) { - gesture.center.pageY = event.pageY; - } + // listeners for the DataSet of the groups + this.groupListeners = { + 'add': function (event, params, senderId) { + me._onAddGroups(params.items); + }, + 'update': function (event, params, senderId) { + me._onUpdateGroups(params.items); + }, + 'remove': function (event, params, senderId) { + me._onRemoveGroups(params.items); + } + }; - return gesture; - }; + this.items = {}; // object with an Item for every data item + this.groups = {}; // Group object for every group + this.groupIds = []; + this.selection = []; // list with the ids of all selected nodes + this.stackDirty = true; // if true, all items will be restacked on next redraw -/***/ }, -/* 23 */ -/***/ function(module, exports, __webpack_require__) { + this.touchParams = {}; // stores properties while dragging + // create the HTML DOM - /** - * Prototype for visual components - * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body] - * @param {Object} [options] - */ - function Component (body, options) { - this.options = null; - this.props = null; + this._create(); + + this.setOptions(options); } - /** - * Set options for the component. The new options will be merged into the - * current options. - * @param {Object} options - */ - Component.prototype.setOptions = function(options) { - if (options) { - util.extend(this.options, options); - } + ItemSet.prototype = new Component(); + + // available item types will be registered here + ItemSet.types = { + background: BackgroundItem, + box: BoxItem, + range: RangeItem, + point: PointItem }; /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * Create the HTML DOM for the ItemSet */ - Component.prototype.redraw = function() { - // should be implemented by the component - return false; - }; + ItemSet.prototype._create = function(){ + var frame = document.createElement('div'); + frame.className = 'itemset'; + frame['timeline-itemset'] = this; + this.dom.frame = frame; - /** - * Destroy the component. Cleanup DOM and event listeners - */ - Component.prototype.destroy = function() { - // should be implemented by the component - }; + // create background panel + var background = document.createElement('div'); + background.className = 'background'; + frame.appendChild(background); + this.dom.background = background; - /** - * Test whether the component is resized since the last time _isResized() was - * called. - * @return {Boolean} Returns true if the component is resized - * @protected - */ - Component.prototype._isResized = function() { - var resized = (this.props._previousWidth !== this.props.width || - this.props._previousHeight !== this.props.height); + // create foreground panel + var foreground = document.createElement('div'); + foreground.className = 'foreground'; + frame.appendChild(foreground); + this.dom.foreground = foreground; - this.props._previousWidth = this.props.width; - this.props._previousHeight = this.props.height; + // create axis panel + var axis = document.createElement('div'); + axis.className = 'axis'; + this.dom.axis = axis; - return resized; - }; + // create labelset + var labelSet = document.createElement('div'); + labelSet.className = 'labelset'; + this.dom.labelSet = labelSet; - module.exports = Component; + // create ungrouped Group + this._updateUngrouped(); + // create background Group + var backgroundGroup = new BackgroundGroup(BACKGROUND, null, this); + backgroundGroup.show(); + this.groups[BACKGROUND] = backgroundGroup; -/***/ }, -/* 24 */ -/***/ function(module, exports, __webpack_require__) { + // attach event listeners + // Note: we bind to the centerContainer for the case where the height + // of the center container is larger than of the ItemSet, so we + // can click in the empty area to create a new item or deselect an item. + this.hammer = Hammer(this.body.dom.centerContainer, { + preventDefault: true + }); - /** - * Created by Alex on 10/3/2014. - */ - var moment = __webpack_require__(2); + // drag items when selected + this.hammer.on('touch', this._onTouch.bind(this)); + this.hammer.on('dragstart', this._onDragStart.bind(this)); + this.hammer.on('drag', this._onDrag.bind(this)); + this.hammer.on('dragend', this._onDragEnd.bind(this)); + // single select (or unselect) when tapping an item + this.hammer.on('tap', this._onSelectItem.bind(this)); - /** - * used in Core to convert the options into a volatile variable - * - * @param Core - */ - exports.convertHiddenOptions = function(body, hiddenDates) { - body.hiddenDates = []; - if (hiddenDates) { - if (Array.isArray(hiddenDates) == true) { - for (var i = 0; i < hiddenDates.length; i++) { - if (hiddenDates[i].repeat === undefined) { - var dateItem = {}; - dateItem.start = moment(hiddenDates[i].start).toDate().valueOf(); - dateItem.end = moment(hiddenDates[i].end).toDate().valueOf(); - body.hiddenDates.push(dateItem); - } - } - body.hiddenDates.sort(function (a, b) { - return a.start - b.start; - }); // sort by start time - } - } - }; + // multi select when holding mouse/touch, or on ctrl+click + this.hammer.on('hold', this._onMultiSelectItem.bind(this)); + // add item on doubletap + this.hammer.on('doubletap', this._onAddItem.bind(this)); + + // attach to the DOM + this.show(); + }; /** - * create new entrees for the repeating hidden dates - * @param body - * @param hiddenDates + * Set options for the ItemSet. Existing options will be extended/overwritten. + * @param {Object} [options] The following options are available: + * {String} type + * Default type for the items. Choose from 'box' + * (default), 'point', 'range', or 'background'. + * The default style can be overwritten by + * individual items. + * {String} align + * Alignment for the items, only applicable for + * BoxItem. Choose 'center' (default), 'left', or + * 'right'. + * {String} orientation + * Orientation of the item set. Choose 'top' or + * 'bottom' (default). + * {Function} groupOrder + * A sorting function for ordering groups + * {Boolean} stack + * If true (deafult), items will be stacked on + * top of each other. + * {Number} margin.axis + * Margin between the axis and the items in pixels. + * Default is 20. + * {Number} margin.item.horizontal + * Horizontal margin between items in pixels. + * Default is 10. + * {Number} margin.item.vertical + * Vertical Margin between items in pixels. + * Default is 10. + * {Number} margin.item + * Margin between items in pixels in both horizontal + * and vertical direction. Default is 10. + * {Number} margin + * Set margin for both axis and items in pixels. + * {Number} padding + * Padding of the contents of an item in pixels. + * Must correspond with the items css. Default is 5. + * {Boolean} selectable + * If true (default), items can be selected. + * {Boolean} editable + * Set all editable options to true or false + * {Boolean} editable.updateTime + * Allow dragging an item to an other moment in time + * {Boolean} editable.updateGroup + * Allow dragging an item to an other group + * {Boolean} editable.add + * Allow creating new items on double tap + * {Boolean} editable.remove + * Allow removing items by clicking the delete button + * top right of a selected item. + * {Function(item: Item, callback: Function)} onAdd + * Callback function triggered when an item is about to be added: + * when the user double taps an empty space in the Timeline. + * {Function(item: Item, callback: Function)} onUpdate + * Callback function fired when an item is about to be updated. + * This function typically has to show a dialog where the user + * change the item. If not implemented, nothing happens. + * {Function(item: Item, callback: Function)} onMove + * Fired when an item has been moved. If not implemented, + * the move action will be accepted. + * {Function(item: Item, callback: Function)} onRemove + * Fired when an item is about to be deleted. + * If not implemented, the item will be always removed. */ - exports.updateHiddenDates = function (body, hiddenDates) { - if (hiddenDates && body.domProps.centerContainer.width !== undefined) { - exports.convertHiddenOptions(body, hiddenDates); - - var start = moment(body.range.start); - var end = moment(body.range.end); - - var totalRange = (body.range.end - body.range.start); - var pixelTime = totalRange / body.domProps.centerContainer.width; - - for (var i = 0; i < hiddenDates.length; i++) { - if (hiddenDates[i].repeat !== undefined) { - var startDate = moment(hiddenDates[i].start); - var endDate = moment(hiddenDates[i].end); - - if (startDate._d == "Invalid Date") { - throw new Error("Supplied start date is not valid: " + hiddenDates[i].start); - } - if (endDate._d == "Invalid Date") { - throw new Error("Supplied end date is not valid: " + hiddenDates[i].end); - } - - var duration = endDate - startDate; - if (duration >= 4 * pixelTime) { - - var offset = 0; - var runUntil = end.clone(); - switch (hiddenDates[i].repeat) { - case "daily": // case of time - if (startDate.day() != endDate.day()) { - offset = 1; - } - startDate.dayOfYear(start.dayOfYear()); - startDate.year(start.year()); - startDate.subtract(7,'days'); - - endDate.dayOfYear(start.dayOfYear()); - endDate.year(start.year()); - endDate.subtract(7 - offset,'days'); - - runUntil.add(1, 'weeks'); - break; - case "weekly": - var dayOffset = endDate.diff(startDate,'days') - var day = startDate.day(); - - // set the start date to the range.start - startDate.date(start.date()); - startDate.month(start.month()); - startDate.year(start.year()); - endDate = startDate.clone(); - - // force - startDate.day(day); - endDate.day(day); - endDate.add(dayOffset,'days'); - - startDate.subtract(1,'weeks'); - endDate.subtract(1,'weeks'); - - runUntil.add(1, 'weeks'); - break - case "monthly": - if (startDate.month() != endDate.month()) { - offset = 1; - } - startDate.month(start.month()); - startDate.year(start.year()); - startDate.subtract(1,'months'); - - endDate.month(start.month()); - endDate.year(start.year()); - endDate.subtract(1,'months'); - endDate.add(offset,'months'); - - runUntil.add(1, 'months'); - break; - case "yearly": - if (startDate.year() != endDate.year()) { - offset = 1; - } - startDate.year(start.year()); - startDate.subtract(1,'years'); - endDate.year(start.year()); - endDate.subtract(1,'years'); - endDate.add(offset,'years'); + ItemSet.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + var fields = ['type', 'align', 'orientation', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide', 'snap']; + util.selectiveExtend(fields, this.options, options); - runUntil.add(1, 'years'); - break; - default: - console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:", hiddenDates[i].repeat); - return; + if ('margin' in options) { + if (typeof options.margin === 'number') { + this.options.margin.axis = options.margin; + this.options.margin.item.horizontal = options.margin; + this.options.margin.item.vertical = options.margin; + } + else if (typeof options.margin === 'object') { + util.selectiveExtend(['axis'], this.options.margin, options.margin); + if ('item' in options.margin) { + if (typeof options.margin.item === 'number') { + this.options.margin.item.horizontal = options.margin.item; + this.options.margin.item.vertical = options.margin.item; } - while (startDate < runUntil) { - body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()}); - switch (hiddenDates[i].repeat) { - case "daily": - startDate.add(1, 'days'); - endDate.add(1, 'days'); - break; - case "weekly": - startDate.add(1, 'weeks'); - endDate.add(1, 'weeks'); - break - case "monthly": - startDate.add(1, 'months'); - endDate.add(1, 'months'); - break; - case "yearly": - startDate.add(1, 'y'); - endDate.add(1, 'y'); - break; - default: - console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:", hiddenDates[i].repeat); - return; - } + else if (typeof options.margin.item === 'object') { + util.selectiveExtend(['horizontal', 'vertical'], this.options.margin.item, options.margin.item); } - body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()}); } } } - // remove duplicates, merge where possible - exports.removeDuplicates(body); - // ensure the new positions are not on hidden dates - var startHidden = exports.isHidden(body.range.start, body.hiddenDates); - var endHidden = exports.isHidden(body.range.end,body.hiddenDates); - var rangeStart = body.range.start; - var rangeEnd = body.range.end; - if (startHidden.hidden == true) {rangeStart = body.range.startToFront == true ? startHidden.startDate - 1 : startHidden.endDate + 1;} - if (endHidden.hidden == true) {rangeEnd = body.range.endToFront == true ? endHidden.startDate - 1 : endHidden.endDate + 1;} - if (startHidden.hidden == true || endHidden.hidden == true) { - body.range._applyRange(rangeStart, rangeEnd); - } - } - - } + if ('editable' in options) { + if (typeof options.editable === 'boolean') { + this.options.editable.updateTime = options.editable; + this.options.editable.updateGroup = options.editable; + this.options.editable.add = options.editable; + this.options.editable.remove = options.editable; + } + else if (typeof options.editable === 'object') { + util.selectiveExtend(['updateTime', 'updateGroup', 'add', 'remove'], this.options.editable, options.editable); + } + } - /** - * remove duplicates from the hidden dates list. Duplicates are evil. They mess everything up. - * Scales with N^2 - * @param body - */ - exports.removeDuplicates = function(body) { - var hiddenDates = body.hiddenDates; - var safeDates = []; - for (var i = 0; i < hiddenDates.length; i++) { - for (var j = 0; j < hiddenDates.length; j++) { - if (i != j && hiddenDates[j].remove != true && hiddenDates[i].remove != true) { - // j inside i - if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) { - hiddenDates[j].remove = true; - } - // j start inside i - else if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].start <= hiddenDates[i].end) { - hiddenDates[i].end = hiddenDates[j].end; - hiddenDates[j].remove = true; - } - // j end inside i - else if (hiddenDates[j].end >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) { - hiddenDates[i].start = hiddenDates[j].start; - hiddenDates[j].remove = true; + // callback functions + var addCallback = (function (name) { + var fn = options[name]; + if (fn) { + if (!(fn instanceof Function)) { + throw new Error('option ' + name + ' must be a function ' + name + '(item, callback)'); } + this.options[name] = fn; } - } - } + }).bind(this); + ['onAdd', 'onUpdate', 'onRemove', 'onMove', 'onMoving'].forEach(addCallback); - for (var i = 0; i < hiddenDates.length; i++) { - if (hiddenDates[i].remove !== true) { - safeDates.push(hiddenDates[i]); - } + // force the itemSet to refresh: options like orientation and margins may be changed + this.markDirty(); } + }; - body.hiddenDates = safeDates; - body.hiddenDates.sort(function (a, b) { - return a.start - b.start; - }); // sort by start time - } + /** + * Mark the ItemSet dirty so it will refresh everything with next redraw. + * Optionally, all items can be marked as dirty and be refreshed. + * @param {{refreshItems: boolean}} [options] + */ + ItemSet.prototype.markDirty = function(options) { + this.groupIds = []; + this.stackDirty = true; - exports.printDates = function(dates) { - for (var i =0; i < dates.length; i++) { - console.log(i, new Date(dates[i].start),new Date(dates[i].end), dates[i].start, dates[i].end, dates[i].remove); + if (options && options.refreshItems) { + util.forEach(this.items, function (item) { + item.dirty = true; + if (item.displayed) item.redraw(); + }); } - } + }; /** - * Used in TimeStep to avoid the hidden times. - * @param timeStep - * @param previousTime + * Destroy the ItemSet */ - exports.stepOverHiddenDates = function(timeStep, previousTime) { - var stepInHidden = false; - var currentValue = timeStep.current.valueOf(); - for (var i = 0; i < timeStep.hiddenDates.length; i++) { - var startDate = timeStep.hiddenDates[i].start; - var endDate = timeStep.hiddenDates[i].end; - if (currentValue >= startDate && currentValue < endDate) { - stepInHidden = true; - break; - } - } + ItemSet.prototype.destroy = function() { + this.hide(); + this.setItems(null); + this.setGroups(null); - if (stepInHidden == true && currentValue < timeStep._end.valueOf() && currentValue != previousTime) { - var prevValue = moment(previousTime); - var newValue = moment(endDate); - //check if the next step should be major - if (prevValue.year() != newValue.year()) {timeStep.switchedYear = true;} - else if (prevValue.month() != newValue.month()) {timeStep.switchedMonth = true;} - else if (prevValue.dayOfYear() != newValue.dayOfYear()) {timeStep.switchedDay = true;} + this.hammer = null; - timeStep.current = newValue.toDate(); - } + this.body = null; + this.conversion = null; }; - - ///** - // * Used in TimeStep to avoid the hidden times. - // * @param timeStep - // * @param previousTime - // */ - //exports.checkFirstStep = function(timeStep) { - // var stepInHidden = false; - // var currentValue = timeStep.current.valueOf(); - // for (var i = 0; i < timeStep.hiddenDates.length; i++) { - // var startDate = timeStep.hiddenDates[i].start; - // var endDate = timeStep.hiddenDates[i].end; - // if (currentValue >= startDate && currentValue < endDate) { - // stepInHidden = true; - // break; - // } - // } - // - // if (stepInHidden == true && currentValue <= timeStep._end.valueOf()) { - // var newValue = moment(endDate); - // timeStep.current = newValue.toDate(); - // } - //}; - /** - * replaces the Core toScreen methods - * @param Core - * @param time - * @param width - * @returns {number} + * Hide the component from the DOM */ - exports.toScreen = function(Core, time, width) { - if (Core.body.hiddenDates.length == 0) { - var conversion = Core.range.conversion(width); - return (time.valueOf() - conversion.offset) * conversion.scale; + ItemSet.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); } - else { - var hidden = exports.isHidden(time, Core.body.hiddenDates) - if (hidden.hidden == true) { - time = hidden.startDate; - } - var duration = exports.getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end); - time = exports.correctTimeForHidden(Core.body.hiddenDates, Core.range, time); + // remove the axis with dots + if (this.dom.axis.parentNode) { + this.dom.axis.parentNode.removeChild(this.dom.axis); + } - var conversion = Core.range.conversion(width, duration); - return (time.valueOf() - conversion.offset) * conversion.scale; + // remove the labelset containing all group labels + if (this.dom.labelSet.parentNode) { + this.dom.labelSet.parentNode.removeChild(this.dom.labelSet); } }; - /** - * Replaces the core toTime methods - * @param body - * @param range - * @param x - * @param width - * @returns {Date} + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed */ - exports.toTime = function(Core, x, width) { - if (Core.body.hiddenDates.length == 0) { - var conversion = Core.range.conversion(width); - return new Date(x / conversion.scale + conversion.offset); + ItemSet.prototype.show = function() { + // show frame containing the items + if (!this.dom.frame.parentNode) { + this.body.dom.center.appendChild(this.dom.frame); } - else { - var hiddenDuration = exports.getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end); - var totalDuration = Core.range.end - Core.range.start - hiddenDuration; - var partialDuration = totalDuration * x / width; - var accumulatedHiddenDuration = exports.getAccumulatedHiddenDuration(Core.body.hiddenDates, Core.range, partialDuration); - var newTime = new Date(accumulatedHiddenDuration + partialDuration + Core.range.start); - return newTime; + // show axis with dots + if (!this.dom.axis.parentNode) { + this.body.dom.backgroundVertical.appendChild(this.dom.axis); } - }; + // show labelset containing labels + if (!this.dom.labelSet.parentNode) { + this.body.dom.left.appendChild(this.dom.labelSet); + } + }; /** - * Support function - * - * @param hiddenDates - * @param range - * @returns {number} + * Set selected items by their id. Replaces the current selection + * Unknown id's are silently ignored. + * @param {string[] | string} [ids] An array with zero or more id's of the items to be + * selected, or a single item id. If ids is undefined + * or an empty array, all items will be unselected. */ - exports.getHiddenDurationBetween = function(hiddenDates, start, end) { - var duration = 0; - for (var i = 0; i < hiddenDates.length; i++) { - var startDate = hiddenDates[i].start; - var endDate = hiddenDates[i].end; - // if time after the cutout, and the - if (startDate >= start && endDate < end) { - duration += endDate - startDate; - } - } - return duration; - }; - + ItemSet.prototype.setSelection = function(ids) { + var i, ii, id, item; - /** - * Support function - * @param hiddenDates - * @param range - * @param time - * @returns {{duration: number, time: *, offset: number}} - */ - exports.correctTimeForHidden = function(hiddenDates, range, time) { - time = moment(time).toDate().valueOf(); - time -= exports.getHiddenDurationBefore(hiddenDates,range,time); - return time; - }; + if (ids == undefined) ids = []; + if (!Array.isArray(ids)) ids = [ids]; - exports.getHiddenDurationBefore = function(hiddenDates, range, time) { - var timeOffset = 0; - time = moment(time).toDate().valueOf(); + // unselect currently selected items + for (i = 0, ii = this.selection.length; i < ii; i++) { + id = this.selection[i]; + item = this.items[id]; + if (item) item.unselect(); + } - for (var i = 0; i < hiddenDates.length; i++) { - var startDate = hiddenDates[i].start; - var endDate = hiddenDates[i].end; - // if time after the cutout, and the - if (startDate >= range.start && endDate < range.end) { - if (time >= endDate) { - timeOffset += (endDate - startDate); - } + // select items + this.selection = []; + for (i = 0, ii = ids.length; i < ii; i++) { + id = ids[i]; + item = this.items[id]; + if (item) { + this.selection.push(id); + item.select(); } } - return timeOffset; - } + }; /** - * sum the duration from start to finish, including the hidden duration, - * until the required amount has been reached, return the accumulated hidden duration - * @param hiddenDates - * @param range - * @param time - * @returns {{duration: number, time: *, offset: number}} + * Get the selected items by their id + * @return {Array} ids The ids of the selected items */ - exports.getAccumulatedHiddenDuration = function(hiddenDates, range, requiredDuration) { - var hiddenDuration = 0; - var duration = 0; - var previousPoint = range.start; - //exports.printDates(hiddenDates) - for (var i = 0; i < hiddenDates.length; i++) { - var startDate = hiddenDates[i].start; - var endDate = hiddenDates[i].end; - // if time after the cutout, and the - if (startDate >= range.start && endDate < range.end) { - duration += startDate - previousPoint; - previousPoint = endDate; - if (duration >= requiredDuration) { - break; - } - else { - hiddenDuration += endDate - startDate; - } - } - } - - return hiddenDuration; + ItemSet.prototype.getSelection = function() { + return this.selection.concat([]); }; - - /** - * used to step over to either side of a hidden block. Correction is disabled on tablets, might be set to true - * @param hiddenDates - * @param time - * @param direction - * @param correctionEnabled - * @returns {*} + * Get the id's of the currently visible items. + * @returns {Array} The ids of the visible items */ - exports.snapAwayFromHidden = function(hiddenDates, time, direction, correctionEnabled) { - var isHidden = exports.isHidden(time, hiddenDates); - if (isHidden.hidden == true) { - if (direction < 0) { - if (correctionEnabled == true) { - return isHidden.startDate - (isHidden.endDate - time) - 1; - } - else { - return isHidden.startDate - 1; - } - } - else { - if (correctionEnabled == true) { - return isHidden.endDate + (time - isHidden.startDate) + 1; - } - else { - return isHidden.endDate + 1; + ItemSet.prototype.getVisibleItems = function() { + var range = this.body.range.getRange(); + var left = this.body.util.toScreen(range.start); + var right = this.body.util.toScreen(range.end); + + var ids = []; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + var group = this.groups[groupId]; + var rawVisibleItems = group.visibleItems; + + // filter the "raw" set with visibleItems into a set which is really + // visible by pixels + for (var i = 0; i < rawVisibleItems.length; i++) { + var item = rawVisibleItems[i]; + // TODO: also check whether visible vertically + if ((item.left < right) && (item.left + item.width > left)) { + ids.push(item.id); + } } } } - else { - return time; - } - - } + return ids; + }; /** - * Check if a time is hidden - * - * @param time - * @param hiddenDates - * @returns {{hidden: boolean, startDate: Window.start, endDate: *}} + * Deselect a selected item + * @param {String | Number} id + * @private */ - exports.isHidden = function(time, hiddenDates) { - for (var i = 0; i < hiddenDates.length; i++) { - var startDate = hiddenDates[i].start; - var endDate = hiddenDates[i].end; - - if (time >= startDate && time < endDate) { // if the start is entering a hidden zone - return {hidden: true, startDate: startDate, endDate: endDate}; + ItemSet.prototype._deselect = function(id) { + var selection = this.selection; + for (var i = 0, ii = selection.length; i < ii; i++) { + if (selection[i] == id) { // non-strict comparison! + selection.splice(i, 1); break; } } - return {hidden: false, startDate: startDate, endDate: endDate}; - } - -/***/ }, -/* 25 */ -/***/ function(module, exports, __webpack_require__) { - - var Emitter = __webpack_require__(11); - var Hammer = __webpack_require__(19); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(9); - var Range = __webpack_require__(21); - var ItemSet = __webpack_require__(26); - var Activator = __webpack_require__(36); - var DateUtil = __webpack_require__(24); - var CustomTime = __webpack_require__(38); + }; /** - * Create a timeline visualization - * @param {HTMLElement} container - * @param {vis.DataSet | Array | google.visualization.DataTable} [items] - * @param {Object} [options] See Core.setOptions for the available options. - * @constructor + * Repaint the component + * @return {boolean} Returns true if the component is resized */ - function Core () {} + ItemSet.prototype.redraw = function() { + var margin = this.options.margin, + range = this.body.range, + asSize = util.option.asSize, + options = this.options, + orientation = options.orientation, + resized = false, + frame = this.dom.frame, + editable = options.editable.updateTime || options.editable.updateGroup; - // turn Core into an event emitter - Emitter(Core.prototype); + // recalculate absolute position (before redrawing groups) + this.props.top = this.body.domProps.top.height + this.body.domProps.border.top; + this.props.left = this.body.domProps.left.width + this.body.domProps.border.left; - /** - * Create the main DOM for the Core: a root panel containing left, right, - * top, bottom, content, and background panel. - * @param {Element} container The container element where the Core will - * be attached. - * @private - */ - Core.prototype._create = function (container) { - this.dom = {}; + // update class name + frame.className = 'itemset' + (editable ? ' editable' : ''); - this.dom.root = document.createElement('div'); - this.dom.background = document.createElement('div'); - this.dom.backgroundVertical = document.createElement('div'); - this.dom.backgroundHorizontal = document.createElement('div'); - this.dom.centerContainer = document.createElement('div'); - this.dom.leftContainer = document.createElement('div'); - this.dom.rightContainer = document.createElement('div'); - this.dom.center = document.createElement('div'); - this.dom.left = document.createElement('div'); - this.dom.right = document.createElement('div'); - this.dom.top = document.createElement('div'); - this.dom.bottom = document.createElement('div'); - this.dom.shadowTop = document.createElement('div'); - this.dom.shadowBottom = document.createElement('div'); - this.dom.shadowTopLeft = document.createElement('div'); - this.dom.shadowBottomLeft = document.createElement('div'); - this.dom.shadowTopRight = document.createElement('div'); - this.dom.shadowBottomRight = document.createElement('div'); + // reorder the groups (if needed) + resized = this._orderGroups() || resized; - this.dom.root.className = 'vis timeline root'; - this.dom.background.className = 'vispanel background'; - this.dom.backgroundVertical.className = 'vispanel background vertical'; - this.dom.backgroundHorizontal.className = 'vispanel background horizontal'; - this.dom.centerContainer.className = 'vispanel center'; - this.dom.leftContainer.className = 'vispanel left'; - this.dom.rightContainer.className = 'vispanel right'; - this.dom.top.className = 'vispanel top'; - this.dom.bottom.className = 'vispanel bottom'; - this.dom.left.className = 'content'; - this.dom.center.className = 'content'; - this.dom.right.className = 'content'; - this.dom.shadowTop.className = 'shadow top'; - this.dom.shadowBottom.className = 'shadow bottom'; - this.dom.shadowTopLeft.className = 'shadow top'; - this.dom.shadowBottomLeft.className = 'shadow bottom'; - this.dom.shadowTopRight.className = 'shadow top'; - this.dom.shadowBottomRight.className = 'shadow bottom'; + // check whether zoomed (in that case we need to re-stack everything) + // TODO: would be nicer to get this as a trigger from Range + var visibleInterval = range.end - range.start; + var zoomed = (visibleInterval != this.lastVisibleInterval) || (this.props.width != this.props.lastWidth); + if (zoomed) this.stackDirty = true; + this.lastVisibleInterval = visibleInterval; + this.props.lastWidth = this.props.width; - this.dom.root.appendChild(this.dom.background); - this.dom.root.appendChild(this.dom.backgroundVertical); - this.dom.root.appendChild(this.dom.backgroundHorizontal); - this.dom.root.appendChild(this.dom.centerContainer); - this.dom.root.appendChild(this.dom.leftContainer); - this.dom.root.appendChild(this.dom.rightContainer); - this.dom.root.appendChild(this.dom.top); - this.dom.root.appendChild(this.dom.bottom); + var restack = this.stackDirty; + var firstGroup = this._firstGroup(); + var firstMargin = { + item: margin.item, + axis: margin.axis + }; + var nonFirstMargin = { + item: margin.item, + axis: margin.item.vertical / 2 + }; + var height = 0; + var minHeight = margin.axis + margin.item.vertical; - this.dom.centerContainer.appendChild(this.dom.center); - this.dom.leftContainer.appendChild(this.dom.left); - this.dom.rightContainer.appendChild(this.dom.right); + // redraw the background group + this.groups[BACKGROUND].redraw(range, nonFirstMargin, restack); - this.dom.centerContainer.appendChild(this.dom.shadowTop); - this.dom.centerContainer.appendChild(this.dom.shadowBottom); - this.dom.leftContainer.appendChild(this.dom.shadowTopLeft); - this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft); - this.dom.rightContainer.appendChild(this.dom.shadowTopRight); - this.dom.rightContainer.appendChild(this.dom.shadowBottomRight); + // redraw all regular groups + util.forEach(this.groups, function (group) { + var groupMargin = (group == firstGroup) ? firstMargin : nonFirstMargin; + var groupResized = group.redraw(range, groupMargin, restack); + resized = groupResized || resized; + height += group.height; + }); + height = Math.max(height, minHeight); + this.stackDirty = false; - this.on('rangechange', this._redraw.bind(this)); - this.on('touch', this._onTouch.bind(this)); - this.on('pinch', this._onPinch.bind(this)); - this.on('dragstart', this._onDragStart.bind(this)); - this.on('drag', this._onDrag.bind(this)); + // update frame height + frame.style.height = asSize(height); - var me = this; - this.on('change', function (properties) { - if (properties && properties.queue == true) { - // redraw once on next tick - if (!me._redrawTimer) { - me._redrawTimer = setTimeout(function () { - me._redrawTimer = null; - me._redraw(); - }, 0) - } - } - else { - // redraw immediately - me._redraw(); - } - }); + // calculate actual size + this.props.width = frame.offsetWidth; + this.props.height = height; - // create event listeners for all interesting events, these events will be - // emitted via emitter - this.hammer = Hammer(this.dom.root, { - preventDefault: true - }); - this.listeners = {}; + // reposition axis + this.dom.axis.style.top = asSize((orientation == 'top') ? + (this.body.domProps.top.height + this.body.domProps.border.top) : + (this.body.domProps.top.height + this.body.domProps.centerContainer.height)); + this.dom.axis.style.left = '0'; - var events = [ - 'touch', 'pinch', - 'tap', 'doubletap', 'hold', - 'dragstart', 'drag', 'dragend', - 'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox - ]; - events.forEach(function (event) { - var listener = function () { - var args = [event].concat(Array.prototype.slice.call(arguments, 0)); - if (me.isActive()) { - me.emit.apply(me, args); - } - }; - me.hammer.on(event, listener); - me.listeners[event] = listener; - }); + // check if this component is resized + resized = this._isResized() || resized; - // size properties of each of the panels - this.props = { - root: {}, - background: {}, - centerContainer: {}, - leftContainer: {}, - rightContainer: {}, - center: {}, - left: {}, - right: {}, - top: {}, - bottom: {}, - border: {}, - scrollTop: 0, - scrollTopMin: 0 - }; - this.touch = {}; // store state information needed for touch events + return resized; + }; - this.redrawCount = 0; + /** + * Get the first group, aligned with the axis + * @return {Group | null} firstGroup + * @private + */ + ItemSet.prototype._firstGroup = function() { + var firstGroupIndex = (this.options.orientation == 'top') ? 0 : (this.groupIds.length - 1); + var firstGroupId = this.groupIds[firstGroupIndex]; + var firstGroup = this.groups[firstGroupId] || this.groups[UNGROUPED]; - // attach the root panel to the provided container - if (!container) throw new Error('No container provided'); - container.appendChild(this.dom.root); + return firstGroup || null; }; /** - * Set options. Options will be passed to all components loaded in the Timeline. - * @param {Object} [options] - * {String} orientation - * Vertical orientation for the Timeline, - * can be 'bottom' (default) or 'top'. - * {String | Number} width - * Width for the timeline, a number in pixels or - * a css string like '1000px' or '75%'. '100%' by default. - * {String | Number} height - * Fixed height for the Timeline, a number in pixels or - * a css string like '400px' or '75%'. If undefined, - * The Timeline will automatically size such that - * its contents fit. - * {String | Number} minHeight - * Minimum height for the Timeline, a number in pixels or - * a css string like '400px' or '75%'. - * {String | Number} maxHeight - * Maximum height for the Timeline, a number in pixels or - * a css string like '400px' or '75%'. - * {Number | Date | String} start - * Start date for the visible window - * {Number | Date | String} end - * End date for the visible window + * Create or delete the group holding all ungrouped items. This group is used when + * there are no groups specified. + * @protected */ - Core.prototype.setOptions = function (options) { - if (options) { - // copy the known options - var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'orientation', 'clickToUse', 'dataAttributes', 'hiddenDates']; - util.selectiveExtend(fields, this.options, options); + ItemSet.prototype._updateUngrouped = function() { + var ungrouped = this.groups[UNGROUPED]; + var background = this.groups[BACKGROUND]; + var item, itemId; - if ('hiddenDates' in this.options) { - DateUtil.convertHiddenOptions(this.body, this.options.hiddenDates); - } + if (this.groupsData) { + // remove the group holding all ungrouped items + if (ungrouped) { + ungrouped.hide(); + delete this.groups[UNGROUPED]; - if ('clickToUse' in options) { - if (options.clickToUse) { - if (!this.activator) { - this.activator = new Activator(this.dom.root); - } - } - else { - if (this.activator) { - this.activator.destroy(); - delete this.activator; + for (itemId in this.items) { + if (this.items.hasOwnProperty(itemId)) { + item = this.items[itemId]; + item.parent && item.parent.remove(item); + var groupId = this._getGroupId(item.data); + var group = this.groups[groupId]; + group && group.add(item) || item.hide(); } } } - - // enable/disable autoResize - this._initAutoResize(); } + else { + // create a group holding all (unfiltered) items + if (!ungrouped) { + var id = null; + var data = null; + ungrouped = new Group(id, data, this); + this.groups[UNGROUPED] = ungrouped; - // propagate options to all components - this.components.forEach(function (component) { - component.setOptions(options); - }); + for (itemId in this.items) { + if (this.items.hasOwnProperty(itemId)) { + item = this.items[itemId]; + ungrouped.add(item); + } + } - // TODO: remove deprecation error one day (deprecated since version 0.8.0) - if (options && options.order) { - throw new Error('Option order is deprecated. There is no replacement for this feature.'); + ungrouped.show(); + } } - - // redraw everything - this._redraw(); }; /** - * Returns true when the Timeline is active. - * @returns {boolean} + * Get the element for the labelset + * @return {HTMLElement} labelSet */ - Core.prototype.isActive = function () { - return !this.activator || this.activator.active; + ItemSet.prototype.getLabelSet = function() { + return this.dom.labelSet; }; /** - * Destroy the Core, clean up all DOM elements and event listeners. + * Set items + * @param {vis.DataSet | null} items */ - Core.prototype.destroy = function () { - // unbind datasets - this.clear(); - - // remove all event listeners - this.off(); - - // stop checking for changed size - this._stopAutoResize(); + ItemSet.prototype.setItems = function(items) { + var me = this, + ids, + oldItemsData = this.itemsData; - // remove from DOM - if (this.dom.root.parentNode) { - this.dom.root.parentNode.removeChild(this.dom.root); + // replace the dataset + if (!items) { + this.itemsData = null; } - this.dom = null; - - // remove Activator - if (this.activator) { - this.activator.destroy(); - delete this.activator; + else if (items instanceof DataSet || items instanceof DataView) { + this.itemsData = items; } - - // cleanup hammer touch events - for (var event in this.listeners) { - if (this.listeners.hasOwnProperty(event)) { - delete this.listeners[event]; - } + else { + throw new TypeError('Data must be an instance of DataSet or DataView'); } - this.listeners = null; - this.hammer = null; - - // give all components the opportunity to cleanup - this.components.forEach(function (component) { - component.destroy(); - }); - - this.body = null; - }; + if (oldItemsData) { + // unsubscribe from old dataset + util.forEach(this.itemListeners, function (callback, event) { + oldItemsData.off(event, callback); + }); - /** - * Set a custom time bar - * @param {Date} time - * @param {int} id - */ - Core.prototype.setCustomTime = function (time, id) { - if (!this.customTime) { - throw new Error('Cannot get custom time: Custom time bar is not enabled'); + // remove all drawn items + ids = oldItemsData.getIds(); + this._onRemove(ids); } - var barId = id || 0; + if (this.itemsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.itemListeners, function (callback, event) { + me.itemsData.on(event, callback, id); + }); - this.components.forEach(function (element, index, components) { - if (element instanceof CustomTime && element.options.id === barId) { - element.setCustomTime(time); - } - }); + // add all new items + ids = this.itemsData.getIds(); + this._onAdd(ids); + + // update the group holding all ungrouped items + this._updateUngrouped(); + } }; /** - * Retrieve the current custom time. - * @return {Date} customTime - * @param {int} id + * Get the current items + * @returns {vis.DataSet | null} */ - Core.prototype.getCustomTime = function(id) { - if (!this.customTime) { - throw new Error('Cannot get custom time: Custom time bar is not enabled'); - } - - var barId = id || 0, - customTime = this.customTime.getCustomTime(); - - this.components.forEach(function (element, index, components) { - if (element instanceof CustomTime && element.options.id === barId) { - customTime = element.getCustomTime(); - } - }); - - return customTime; + ItemSet.prototype.getItems = function() { + return this.itemsData; }; /** - * Add custom vertical bar - * @param {Date | String | Number} time A Date, unix timestamp, or - * ISO date string. Time point where the new bar should be placed - * @param {Number | String} ID of the new bar - * @return {Number | String} ID of the new bar + * Set groups + * @param {vis.DataSet} groups */ - Core.prototype.addCustomTime = function (time, id) { - if (!this.currentTime) { - throw new Error('Option showCurrentTime must be true'); - } - - if (time === undefined) { - throw new Error('Time parameter for the custom bar must be provided'); - } + ItemSet.prototype.setGroups = function(groups) { + var me = this, + ids; - var ts = util.convert(time, 'Date').valueOf(), - numIds, customTime, customBarId; + // unsubscribe from current dataset + if (this.groupsData) { + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.unsubscribe(event, callback); + }); - // All bar IDs are kept in 1 array, mixed types - // Bar with ID 0 is the default bar. - if (!this.customBarIds || this.customBarIds.constructor !== Array) { - this.customBarIds = [0]; + // remove all drawn groups + ids = this.groupsData.getIds(); + this.groupsData = null; + this._onRemoveGroups(ids); // note: this will cause a redraw } - // If the ID is not provided, generate one, otherwise just use it - if (id === undefined) { - - numIds = this.customBarIds.filter(function (element) { - return util.isNumber(element); - }); - - customBarId = numIds.length > 0 ? Math.max.apply(null, numIds) + 1 : 1; + // replace the dataset + if (!groups) { + this.groupsData = null; + } + else if (groups instanceof DataSet || groups instanceof DataView) { + this.groupsData = groups; + } + else { + throw new TypeError('Data must be an instance of DataSet or DataView'); + } - } else { - - // Check for duplicates - this.customBarIds.forEach(function (element) { - if (element === id) { - throw new Error('Custom time ID already exists'); - } + if (this.groupsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.on(event, callback, id); }); - customBarId = id; + // draw all ms + ids = this.groupsData.getIds(); + this._onAddGroups(ids); } - this.customBarIds.push(customBarId); - - customTime = new CustomTime(this.body, { - showCustomTime : true, - time : ts, - id : customBarId - }); + // update the group holding all ungrouped items + this._updateUngrouped(); - this.components.push(customTime); - this.redraw(); + // update the order of all items in each group + this._order(); - return customBarId; + this.body.emitter.emit('change', {queue: true}); }; /** - * Remove previously added custom bar - * @param {int} id ID of the custom bar to be removed - * @return {boolean} True if the bar exists and is removed, false otherwise + * Get the current groups + * @returns {vis.DataSet | null} groups */ - Core.prototype.removeCustomTime = function (id) { + ItemSet.prototype.getGroups = function() { + return this.groupsData; + }; - var me = this; + /** + * Remove an item by its id + * @param {String | Number} id + */ + ItemSet.prototype.removeItem = function(id) { + var item = this.itemsData.get(id), + dataset = this.itemsData.getDataSet(); - this.components.forEach(function (bar, index, components) { - if (bar instanceof CustomTime && bar.options.id === id) { - // Only the lines added by the user will be removed - if (bar.options.id !== 0) { - me.customBarIds.splice(me.customBarIds.indexOf(id), 1); - components.splice(index, 1); - bar.destroy(); + if (item) { + // confirm deletion + this.options.onRemove(item, function (item) { + if (item) { + // remove by id here, it is possible that an item has no id defined + // itself, so better not delete by the item itself + dataset.remove(id); } - } - }); + }); + } }; - /** - * Get the id's of the currently visible items. - * @returns {Array} The ids of the visible items + * Get the time of an item based on it's data and options.type + * @param {Object} itemData + * @returns {string} Returns the type + * @private */ - Core.prototype.getVisibleItems = function() { - return this.itemSet && this.itemSet.getVisibleItems() || []; + ItemSet.prototype._getType = function (itemData) { + return itemData.type || this.options.type || (itemData.end ? 'range' : 'box'); }; - /** - * Clear the Core. By Default, items, groups and options are cleared. - * Example usage: - * - * timeline.clear(); // clear items, groups, and options - * timeline.clear({options: true}); // clear options only - * - * @param {Object} [what] Optionally specify what to clear. By default: - * {items: true, groups: true, options: true} + * Get the group id for an item + * @param {Object} itemData + * @returns {string} Returns the groupId + * @private */ - Core.prototype.clear = function(what) { - // clear items - if (!what || what.items) { - this.setItems(null); - } - - // clear groups - if (!what || what.groups) { - this.setGroups(null); + ItemSet.prototype._getGroupId = function (itemData) { + var type = this._getType(itemData); + if (type == 'background' && itemData.group == undefined) { + return BACKGROUND; } - - // clear options of timeline and of each of the components - if (!what || what.options) { - this.components.forEach(function (component) { - component.setOptions(component.defaultOptions); - }); - - this.setOptions(this.defaultOptions); // this will also do a redraw + else { + return this.groupsData ? itemData.group : UNGROUPED; } }; /** - * Set Core window such that it fits all items - * @param {Object} [options] Available options: - * `animate: boolean | number` - * If true (default), the range is animated - * smoothly to the new window. - * If a number, the number is taken as duration - * for the animation. Default duration is 500 ms. + * Handle updated items + * @param {Number[]} ids + * @protected */ - Core.prototype.fit = function(options) { - var range = this._getDataRange(); + ItemSet.prototype._onUpdate = function(ids) { + var me = this; - // skip range set if there is no start and end date - if (range.start === null && range.end === null) { - return; - } + ids.forEach(function (id) { + var itemData = me.itemsData.get(id, me.itemOptions); + var item = me.items[id]; + var type = me._getType(itemData); - var animate = (options && options.animate !== undefined) ? options.animate : true; - this.range.setRange(range.start, range.end, animate); + var constructor = ItemSet.types[type]; + + if (item) { + // update item + if (!constructor || !(item instanceof constructor)) { + // item type has changed, delete the item and recreate it + me._removeItem(item); + item = null; + } + else { + me._updateItem(item, itemData); + } + } + + if (!item) { + // create item + if (constructor) { + item = new constructor(itemData, me.conversion, me.options); + item.id = id; // TODO: not so nice setting id afterwards + me._addItem(item); + } + else if (type == 'rangeoverflow') { + // TODO: deprecated since version 2.1.0 (or 3.0.0?). cleanup some day + throw new TypeError('Item type "rangeoverflow" is deprecated. Use css styling instead: ' + + '.vis.timeline .item.range .content {overflow: visible;}'); + } + else { + throw new TypeError('Unknown item type "' + type + '"'); + } + } + }); + + this._order(); + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change', {queue: true}); }; /** - * Calculate the data range of the items and applies a 5% window around it. - * @returns {{start: Date | null, end: Date | null}} + * Handle added items + * @param {Number[]} ids * @protected */ - Core.prototype._getDataRange = function() { - // apply the data range as range - var dataRange = this.getItemRange(); + ItemSet.prototype._onAdd = ItemSet.prototype._onUpdate; - // add 5% space on both sides - var start = dataRange.min; - var end = dataRange.max; - if (start != null && end != null) { - var interval = (end.valueOf() - start.valueOf()); - if (interval <= 0) { - // prevent an empty interval - interval = 24 * 60 * 60 * 1000; // 1 day + /** + * Handle removed items + * @param {Number[]} ids + * @protected + */ + ItemSet.prototype._onRemove = function(ids) { + var count = 0; + var me = this; + ids.forEach(function (id) { + var item = me.items[id]; + if (item) { + count++; + me._removeItem(item); } - start = new Date(start.valueOf() - interval * 0.05); - end = new Date(end.valueOf() + interval * 0.05); - } + }); - return { - start: start, - end: end + if (count) { + // update order + this._order(); + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change', {queue: true}); } }; /** - * Set the visible window. Both parameters are optional, you can change only - * start or only end. Syntax: - * - * TimeLine.setWindow(start, end) - * TimeLine.setWindow(start, end, options) - * TimeLine.setWindow(range) - * - * Where start and end can be a Date, number, or string, and range is an - * object with properties start and end. - * - * @param {Date | Number | String | Object} [start] Start date of visible window - * @param {Date | Number | String} [end] End date of visible window - * @param {Object} [options] Available options: - * `animate: boolean | number` - * If true (default), the range is animated - * smoothly to the new window. - * If a number, the number is taken as duration - * for the animation. Default duration is 500 ms. + * Update the order of item in all groups + * @private */ - Core.prototype.setWindow = function(start, end, options) { - var animate; - if (arguments.length == 1) { - var range = arguments[0]; - animate = (range.animate !== undefined) ? range.animate : true; - this.range.setRange(range.start, range.end, animate); - } - else { - animate = (options && options.animate !== undefined) ? options.animate : true; - this.range.setRange(start, end, animate); - } + ItemSet.prototype._order = function() { + // reorder the items in all groups + // TODO: optimization: only reorder groups affected by the changed items + util.forEach(this.groups, function (group) { + group.order(); + }); }; /** - * Move the window such that given time is centered on screen. - * @param {Date | Number | String} time - * @param {Object} [options] Available options: - * `animate: boolean | number` - * If true (default), the range is animated - * smoothly to the new window. - * If a number, the number is taken as duration - * for the animation. Default duration is 500 ms. + * Handle updated groups + * @param {Number[]} ids + * @private */ - Core.prototype.moveTo = function(time, options) { - var interval = this.range.end - this.range.start; - var t = util.convert(time, 'Date').valueOf(); - - var start = t - interval / 2; - var end = t + interval / 2; - var animate = (options && options.animate !== undefined) ? options.animate : true; - - this.range.setRange(start, end, animate); + ItemSet.prototype._onUpdateGroups = function(ids) { + this._onAddGroups(ids); }; /** - * Get the visible window - * @return {{start: Date, end: Date}} Visible range + * Handle changed groups (added or updated) + * @param {Number[]} ids + * @private */ - Core.prototype.getWindow = function() { - var range = this.range.getRange(); - return { - start: new Date(range.start), - end: new Date(range.end) - }; + ItemSet.prototype._onAddGroups = function(ids) { + var me = this; + + ids.forEach(function (id) { + var groupData = me.groupsData.get(id); + var group = me.groups[id]; + + if (!group) { + // check for reserved ids + if (id == UNGROUPED || id == BACKGROUND) { + throw new Error('Illegal group id. ' + id + ' is a reserved id.'); + } + + var groupOptions = Object.create(me.options); + util.extend(groupOptions, { + height: null + }); + + group = new Group(id, groupData, me); + me.groups[id] = group; + + // add items with this groupId to the new group + for (var itemId in me.items) { + if (me.items.hasOwnProperty(itemId)) { + var item = me.items[itemId]; + if (item.data.group == id) { + group.add(item); + } + } + } + + group.order(); + group.show(); + } + else { + // update group + group.setData(groupData); + } + }); + + this.body.emitter.emit('change', {queue: true}); }; /** - * Force a redraw. Can be overridden by implementations of Core + * Handle removed groups + * @param {Number[]} ids + * @private */ - Core.prototype.redraw = function() { - this._redraw(); + ItemSet.prototype._onRemoveGroups = function(ids) { + var groups = this.groups; + ids.forEach(function (id) { + var group = groups[id]; + + if (group) { + group.hide(); + delete groups[id]; + } + }); + + this.markDirty(); + + this.body.emitter.emit('change', {queue: true}); }; /** - * Redraw for internal use. Redraws all components. See also the public - * method redraw. - * @protected + * Reorder the groups if needed + * @return {boolean} changed + * @private */ - Core.prototype._redraw = function() { - var resized = false; - var options = this.options; - var props = this.props; - var dom = this.dom; + ItemSet.prototype._orderGroups = function () { + if (this.groupsData) { + // reorder the groups + var groupIds = this.groupsData.getIds({ + order: this.options.groupOrder + }); - if (!dom) return; // when destroyed + var changed = !util.equalArray(groupIds, this.groupIds); + if (changed) { + // hide all groups, removes them from the DOM + var groups = this.groups; + groupIds.forEach(function (groupId) { + groups[groupId].hide(); + }); - DateUtil.updateHiddenDates(this.body, this.options.hiddenDates); + // show the groups again, attach them to the DOM in correct order + groupIds.forEach(function (groupId) { + groups[groupId].show(); + }); - // update class names - if (options.orientation == 'top') { - util.addClassName(dom.root, 'top'); - util.removeClassName(dom.root, 'bottom'); + this.groupIds = groupIds; + } + + return changed; } else { - util.removeClassName(dom.root, 'top'); - util.addClassName(dom.root, 'bottom'); + return false; } - - // update root width and height options - dom.root.style.maxHeight = util.option.asSize(options.maxHeight, ''); - dom.root.style.minHeight = util.option.asSize(options.minHeight, ''); - dom.root.style.width = util.option.asSize(options.width, ''); - - // calculate border widths - props.border.left = (dom.centerContainer.offsetWidth - dom.centerContainer.clientWidth) / 2; - props.border.right = props.border.left; - props.border.top = (dom.centerContainer.offsetHeight - dom.centerContainer.clientHeight) / 2; - props.border.bottom = props.border.top; - var borderRootHeight= dom.root.offsetHeight - dom.root.clientHeight; - var borderRootWidth = dom.root.offsetWidth - dom.root.clientWidth; - - // workaround for a bug in IE: the clientWidth of an element with - // a height:0px and overflow:hidden is not calculated and always has value 0 - if (dom.centerContainer.clientHeight === 0) { - props.border.left = props.border.top; - props.border.right = props.border.left; - } - if (dom.root.clientHeight === 0) { - borderRootWidth = borderRootHeight; - } - - // calculate the heights. If any of the side panels is empty, we set the height to - // minus the border width, such that the border will be invisible - props.center.height = dom.center.offsetHeight; - props.left.height = dom.left.offsetHeight; - props.right.height = dom.right.offsetHeight; - props.top.height = dom.top.clientHeight || -props.border.top; - props.bottom.height = dom.bottom.clientHeight || -props.border.bottom; - - // TODO: compensate borders when any of the panels is empty. - - // apply auto height - // TODO: only calculate autoHeight when needed (else we cause an extra reflow/repaint of the DOM) - var contentHeight = Math.max(props.left.height, props.center.height, props.right.height); - var autoHeight = props.top.height + contentHeight + props.bottom.height + - borderRootHeight + props.border.top + props.border.bottom; - dom.root.style.height = util.option.asSize(options.height, autoHeight + 'px'); - - // calculate heights of the content panels - props.root.height = dom.root.offsetHeight; - props.background.height = props.root.height - borderRootHeight; - var containerHeight = props.root.height - props.top.height - props.bottom.height - - borderRootHeight; - props.centerContainer.height = containerHeight; - props.leftContainer.height = containerHeight; - props.rightContainer.height = props.leftContainer.height; - - // calculate the widths of the panels - props.root.width = dom.root.offsetWidth; - props.background.width = props.root.width - borderRootWidth; - props.left.width = dom.leftContainer.clientWidth || -props.border.left; - props.leftContainer.width = props.left.width; - props.right.width = dom.rightContainer.clientWidth || -props.border.right; - props.rightContainer.width = props.right.width; - var centerWidth = props.root.width - props.left.width - props.right.width - borderRootWidth; - props.center.width = centerWidth; - props.centerContainer.width = centerWidth; - props.top.width = centerWidth; - props.bottom.width = centerWidth; - - // resize the panels - dom.background.style.height = props.background.height + 'px'; - dom.backgroundVertical.style.height = props.background.height + 'px'; - dom.backgroundHorizontal.style.height = props.centerContainer.height + 'px'; - dom.centerContainer.style.height = props.centerContainer.height + 'px'; - dom.leftContainer.style.height = props.leftContainer.height + 'px'; - dom.rightContainer.style.height = props.rightContainer.height + 'px'; - - dom.background.style.width = props.background.width + 'px'; - dom.backgroundVertical.style.width = props.centerContainer.width + 'px'; - dom.backgroundHorizontal.style.width = props.background.width + 'px'; - dom.centerContainer.style.width = props.center.width + 'px'; - dom.top.style.width = props.top.width + 'px'; - dom.bottom.style.width = props.bottom.width + 'px'; - - // reposition the panels - dom.background.style.left = '0'; - dom.background.style.top = '0'; - dom.backgroundVertical.style.left = (props.left.width + props.border.left) + 'px'; - dom.backgroundVertical.style.top = '0'; - dom.backgroundHorizontal.style.left = '0'; - dom.backgroundHorizontal.style.top = props.top.height + 'px'; - dom.centerContainer.style.left = props.left.width + 'px'; - dom.centerContainer.style.top = props.top.height + 'px'; - dom.leftContainer.style.left = '0'; - dom.leftContainer.style.top = props.top.height + 'px'; - dom.rightContainer.style.left = (props.left.width + props.center.width) + 'px'; - dom.rightContainer.style.top = props.top.height + 'px'; - dom.top.style.left = props.left.width + 'px'; - dom.top.style.top = '0'; - dom.bottom.style.left = props.left.width + 'px'; - dom.bottom.style.top = (props.top.height + props.centerContainer.height) + 'px'; - - // update the scrollTop, feasible range for the offset can be changed - // when the height of the Core or of the contents of the center changed - this._updateScrollTop(); - - // reposition the scrollable contents - var offset = this.props.scrollTop; - if (options.orientation == 'bottom') { - offset += Math.max(this.props.centerContainer.height - this.props.center.height - - this.props.border.top - this.props.border.bottom, 0); - } - dom.center.style.left = '0'; - dom.center.style.top = offset + 'px'; - dom.left.style.left = '0'; - dom.left.style.top = offset + 'px'; - dom.right.style.left = '0'; - dom.right.style.top = offset + 'px'; - - // show shadows when vertical scrolling is available - var visibilityTop = this.props.scrollTop == 0 ? 'hidden' : ''; - var visibilityBottom = this.props.scrollTop == this.props.scrollTopMin ? 'hidden' : ''; - dom.shadowTop.style.visibility = visibilityTop; - dom.shadowBottom.style.visibility = visibilityBottom; - dom.shadowTopLeft.style.visibility = visibilityTop; - dom.shadowBottomLeft.style.visibility = visibilityBottom; - dom.shadowTopRight.style.visibility = visibilityTop; - dom.shadowBottomRight.style.visibility = visibilityBottom; - - // redraw all components - this.components.forEach(function (component) { - resized = component.redraw() || resized; - }); - if (resized) { - // keep repainting until all sizes are settled - var MAX_REDRAWS = 3; // maximum number of consecutive redraws - if (this.redrawCount < MAX_REDRAWS) { - this.redrawCount++; - this._redraw(); - } - else { - console.log('WARNING: infinite loop in redraw?'); - } - this.redrawCount = 0; - } - - this.emit("finishedRedraw"); - }; - - // TODO: deprecated since version 1.1.0, remove some day - Core.prototype.repaint = function () { - throw new Error('Function repaint is deprecated. Use redraw instead.'); - }; + }; /** - * Set a current time. This can be used for example to ensure that a client's - * time is synchronized with a shared server time. - * Only applicable when option `showCurrentTime` is true. - * @param {Date | String | Number} time A Date, unix timestamp, or - * ISO date string. + * Add a new item + * @param {Item} item + * @private */ - Core.prototype.setCurrentTime = function(time) { - if (!this.currentTime) { - throw new Error('Option showCurrentTime must be true'); - } + ItemSet.prototype._addItem = function(item) { + this.items[item.id] = item; - this.currentTime.setCurrentTime(time); + // add to group + var groupId = this._getGroupId(item.data); + var group = this.groups[groupId]; + if (group) group.add(item); }; /** - * Get the current time. - * Only applicable when option `showCurrentTime` is true. - * @return {Date} Returns the current time. + * Update an existing item + * @param {Item} item + * @param {Object} itemData + * @private */ - Core.prototype.getCurrentTime = function() { - if (!this.currentTime) { - throw new Error('Option showCurrentTime must be true'); - } + ItemSet.prototype._updateItem = function(item, itemData) { + var oldGroupId = item.data.group; - return this.currentTime.getCurrentTime(); - }; + // update the items data (will redraw the item when displayed) + item.setData(itemData); - /** - * Convert a position on screen (pixels) to a datetime - * @param {int} x Position on the screen in pixels - * @return {Date} time The datetime the corresponds with given position x - * @private - */ - // TODO: move this function to Range - Core.prototype._toTime = function(x) { - return DateUtil.toTime(this, x, this.props.center.width); - }; + // update group + if (oldGroupId != item.data.group) { + var oldGroup = this.groups[oldGroupId]; + if (oldGroup) oldGroup.remove(item); - /** - * Convert a position on the global screen (pixels) to a datetime - * @param {int} x Position on the screen in pixels - * @return {Date} time The datetime the corresponds with given position x - * @private - */ - // TODO: move this function to Range - Core.prototype._toGlobalTime = function(x) { - return DateUtil.toTime(this, x, this.props.root.width); - //var conversion = this.range.conversion(this.props.root.width); - //return new Date(x / conversion.scale + conversion.offset); + var groupId = this._getGroupId(item.data); + var group = this.groups[groupId]; + if (group) group.add(item); + } }; /** - * Convert a datetime (Date object) into a position on the screen - * @param {Date} time A date - * @return {int} x The position on the screen in pixels which corresponds - * with the given date. + * Delete an item from the ItemSet: remove it from the DOM, from the map + * with items, and from the map with visible items, and from the selection + * @param {Item} item * @private */ - // TODO: move this function to Range - Core.prototype._toScreen = function(time) { - return DateUtil.toScreen(this, time, this.props.center.width); - }; + ItemSet.prototype._removeItem = function(item) { + // remove from DOM + item.hide(); + + // remove from items + delete this.items[item.id]; + // remove from selection + var index = this.selection.indexOf(item.id); + if (index != -1) this.selection.splice(index, 1); + // remove from group + item.parent && item.parent.remove(item); + }; /** - * Convert a datetime (Date object) into a position on the root - * This is used to get the pixel density estimate for the screen, not the center panel - * @param {Date} time A date - * @return {int} x The position on root in pixels which corresponds - * with the given date. + * Create an array containing all items being a range (having an end date) + * @param array + * @returns {Array} * @private */ - // TODO: move this function to Range - Core.prototype._toGlobalScreen = function(time) { - return DateUtil.toScreen(this, time, this.props.root.width); - //var conversion = this.range.conversion(this.props.root.width); - //return (time.valueOf() - conversion.offset) * conversion.scale; - }; + ItemSet.prototype._constructByEndArray = function(array) { + var endArray = []; + for (var i = 0; i < array.length; i++) { + if (array[i] instanceof RangeItem) { + endArray.push(array[i]); + } + } + return endArray; + }; /** - * Initialize watching when option autoResize is true + * Register the clicked item on touch, before dragStart is initiated. + * + * dragStart is initiated from a mousemove event, which can have left the item + * already resulting in an item == null + * + * @param {Event} event * @private */ - Core.prototype._initAutoResize = function () { - if (this.options.autoResize == true) { - this._startAutoResize(); - } - else { - this._stopAutoResize(); - } + ItemSet.prototype._onTouch = function (event) { + // store the touched item, used in _onDragStart + this.touchParams.item = ItemSet.itemFromTarget(event); }; /** - * Watch for changes in the size of the container. On resize, the Panel will - * automatically redraw itself. + * Start dragging the selected events + * @param {Event} event * @private */ - Core.prototype._startAutoResize = function () { + ItemSet.prototype._onDragStart = function (event) { + if (!this.options.editable.updateTime && !this.options.editable.updateGroup) { + return; + } + + var item = this.touchParams.item || null; var me = this; + var props; - this._stopAutoResize(); + if (item && item.selected) { + var dragLeftItem = event.target.dragLeftItem; + var dragRightItem = event.target.dragRightItem; - this._onResize = function() { - if (me.options.autoResize != true) { - // stop watching when the option autoResize is changed to false - me._stopAutoResize(); - return; - } + if (dragLeftItem) { + props = { + item: dragLeftItem, + initialX: event.gesture.center.clientX + }; - if (me.dom.root) { - // check whether the frame is resized - // Note: we compare offsetWidth here, not clientWidth. For some reason, - // IE does not restore the clientWidth from 0 to the actual width after - // changing the timeline's container display style from none to visible - if ((me.dom.root.offsetWidth != me.props.lastWidth) || - (me.dom.root.offsetHeight != me.props.lastHeight)) { - me.props.lastWidth = me.dom.root.offsetWidth; - me.props.lastHeight = me.dom.root.offsetHeight; + if (me.options.editable.updateTime) { + props.start = item.data.start.valueOf(); + } + if (me.options.editable.updateGroup) { + if ('group' in item.data) props.group = item.data.group; + } - me.emit('change'); + this.touchParams.itemProps = [props]; + } + else if (dragRightItem) { + props = { + item: dragRightItem, + initialX: event.gesture.center.clientX + }; + + if (me.options.editable.updateTime) { + props.end = item.data.end.valueOf(); + } + if (me.options.editable.updateGroup) { + if ('group' in item.data) props.group = item.data.group; } + + this.touchParams.itemProps = [props]; } - }; + else { + this.touchParams.itemProps = this.getSelection().map(function (id) { + var item = me.items[id]; + var props = { + item: item, + initialX: event.gesture.center.clientX + }; - // add event listener to window resize - util.addEventListener(window, 'resize', this._onResize); + if (me.options.editable.updateTime) { + if ('start' in item.data) { + props.start = item.data.start.valueOf(); - this.watchTimer = setInterval(this._onResize, 1000); - }; + if ('end' in item.data) { + // we store a duration here in order not to change the width + // of the item when moving it. + props.duration = item.data.end.valueOf() - props.start; + } + } + } + if (me.options.editable.updateGroup) { + if ('group' in item.data) props.group = item.data.group; + } - /** - * Stop watching for a resize of the frame. - * @private - */ - Core.prototype._stopAutoResize = function () { - if (this.watchTimer) { - clearInterval(this.watchTimer); - this.watchTimer = undefined; - } + return props; + }); + } - // remove event listener on window.resize - util.removeEventListener(window, 'resize', this._onResize); - this._onResize = null; + event.stopPropagation(); + } }; /** - * Start moving the timeline vertically + * Drag selected items * @param {Event} event * @private */ - Core.prototype._onTouch = function (event) { - this.touch.allowDragging = true; - }; + ItemSet.prototype._onDrag = function (event) { + event.preventDefault(); - /** - * Start moving the timeline vertically - * @param {Event} event - * @private - */ - Core.prototype._onPinch = function (event) { - this.touch.allowDragging = false; - }; + if (this.touchParams.itemProps) { + var me = this; + var snap = this.options.snap || null; + var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width; + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); - /** - * Start moving the timeline vertically - * @param {Event} event - * @private - */ - Core.prototype._onDragStart = function (event) { - this.touch.initialScrollTop = this.props.scrollTop; - }; + // move + this.touchParams.itemProps.forEach(function (props) { + var newProps = {}; + var current = me.body.util.toTime(event.gesture.center.clientX - xOffset); + var initial = me.body.util.toTime(props.initialX - xOffset); + var offset = current - initial; - /** - * Move the timeline vertically - * @param {Event} event - * @private - */ - Core.prototype._onDrag = function (event) { - // refuse to drag when we where pinching to prevent the timeline make a jump - // when releasing the fingers in opposite order from the touch screen - if (!this.touch.allowDragging) return; + if ('start' in props) { + var start = new Date(props.start + offset); + newProps.start = snap ? snap(start, scale, step) : start; + } - var delta = event.gesture.deltaY; + if ('end' in props) { + var end = new Date(props.end + offset); + newProps.end = snap ? snap(end, scale, step) : end; + } + else if ('duration' in props) { + newProps.end = new Date(newProps.start.valueOf() + props.duration); + } - var oldScrollTop = this._getScrollTop(); - var newScrollTop = this._setScrollTop(this.touch.initialScrollTop + delta); + if ('group' in props) { + // drag from one group to another + var group = me.groupFromTarget(event); + newProps.group = group && group.groupId; + } + // confirm moving the item + var itemData = util.extend({}, props.item.data, newProps); + me.options.onMoving(itemData, function (itemData) { + if (itemData) { + me._updateItemProps(props.item, itemData); + } + }); + }); - if (newScrollTop != oldScrollTop) { - this._redraw(); // TODO: this causes two redraws when dragging, the other is triggered by rangechange already - this.emit("verticalDrag"); + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change'); + + event.stopPropagation(); } }; /** - * Apply a scrollTop - * @param {Number} scrollTop - * @returns {Number} scrollTop Returns the applied scrollTop + * Update an items properties + * @param {Item} item + * @param {Object} props Can contain properties start, end, and group. * @private */ - Core.prototype._setScrollTop = function (scrollTop) { - this.props.scrollTop = scrollTop; - this._updateScrollTop(); - return this.props.scrollTop; + ItemSet.prototype._updateItemProps = function(item, props) { + // TODO: copy all properties from props to item? (also new ones) + if ('start' in props) { + item.data.start = props.start; + } + if ('end' in props) { + item.data.end = props.end; + } + else if ('duration' in props) { + item.data.end = new Date(props.start.valueOf() + props.duration); + } + if ('group' in props && item.data.group != props.group) { + this._moveToGroup(item, props.group) + } }; /** - * Update the current scrollTop when the height of the containers has been changed - * @returns {Number} scrollTop Returns the applied scrollTop + * Move an item to another group + * @param {Item} item + * @param {String | Number} groupId * @private */ - Core.prototype._updateScrollTop = function () { - // recalculate the scrollTopMin - var scrollTopMin = Math.min(this.props.centerContainer.height - this.props.center.height, 0); // is negative or zero - if (scrollTopMin != this.props.scrollTopMin) { - // in case of bottom orientation, change the scrollTop such that the contents - // do not move relative to the time axis at the bottom - if (this.options.orientation == 'bottom') { - this.props.scrollTop += (scrollTopMin - this.props.scrollTopMin); - } - this.props.scrollTopMin = scrollTopMin; - } - - // limit the scrollTop to the feasible scroll range - if (this.props.scrollTop > 0) this.props.scrollTop = 0; - if (this.props.scrollTop < scrollTopMin) this.props.scrollTop = scrollTopMin; + ItemSet.prototype._moveToGroup = function(item, groupId) { + var group = this.groups[groupId]; + if (group && group.groupId != item.data.group) { + var oldGroup = item.parent; + oldGroup.remove(item); + oldGroup.order(); + group.add(item); + group.order(); - return this.props.scrollTop; + item.data.group = group.groupId; + } }; /** - * Get the current scrollTop - * @returns {number} scrollTop + * End of dragging selected items + * @param {Event} event * @private */ - Core.prototype._getScrollTop = function () { - return this.props.scrollTop; - }; - - module.exports = Core; + ItemSet.prototype._onDragEnd = function (event) { + event.preventDefault() + if (this.touchParams.itemProps) { + // prepare a change set for the changed items + var changes = [], + me = this, + dataset = this.itemsData.getDataSet(); -/***/ }, -/* 26 */ -/***/ function(module, exports, __webpack_require__) { + var itemProps = this.touchParams.itemProps ; + this.touchParams.itemProps = null; + itemProps.forEach(function (props) { + var id = props.item.id, + itemData = me.itemsData.get(id, me.itemOptions); - var Hammer = __webpack_require__(19); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(9); - var TimeStep = __webpack_require__(27); - var Component = __webpack_require__(23); - var Group = __webpack_require__(28); - var BackgroundGroup = __webpack_require__(32); - var BoxItem = __webpack_require__(33); - var PointItem = __webpack_require__(34); - var RangeItem = __webpack_require__(30); - var BackgroundItem = __webpack_require__(35); + var changed = false; + if ('start' in props.item.data) { + changed = (props.start != props.item.data.start.valueOf()); + itemData.start = util.convert(props.item.data.start, + dataset._options.type && dataset._options.type.start || 'Date'); + } + if ('end' in props.item.data) { + changed = changed || (props.end != props.item.data.end.valueOf()); + itemData.end = util.convert(props.item.data.end, + dataset._options.type && dataset._options.type.end || 'Date'); + } + if ('group' in props.item.data) { + changed = changed || (props.group != props.item.data.group); + itemData.group = props.item.data.group; + } + + // only apply changes when start or end is actually changed + if (changed) { + me.options.onMove(itemData, function (itemData) { + if (itemData) { + // apply changes + itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) + changes.push(itemData); + } + else { + // restore original values + me._updateItemProps(props.item, props); + me.stackDirty = true; // force re-stacking of all items next redraw + me.body.emitter.emit('change'); + } + }); + } + }); - var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items - var BACKGROUND = '__background__'; // reserved group id for background items without group + // apply the changes to the data (if there are changes) + if (changes.length) { + dataset.update(changes); + } + + event.stopPropagation(); + } + }; /** - * An ItemSet holds a set of items and ranges which can be displayed in a - * range. The width is determined by the parent of the ItemSet, and the height - * is determined by the size of the items. - * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body - * @param {Object} [options] See ItemSet.setOptions for the available options. - * @constructor ItemSet - * @extends Component + * Handle selecting/deselecting an item when tapping it + * @param {Event} event + * @private */ - function ItemSet(body, options) { - this.body = body; + ItemSet.prototype._onSelectItem = function (event) { + if (!this.options.selectable) return; - this.defaultOptions = { - type: null, // 'box', 'point', 'range', 'background' - orientation: 'bottom', // 'top' or 'bottom' - align: 'auto', // alignment of box items - stack: true, - groupOrder: null, + var ctrlKey = event.gesture.srcEvent && event.gesture.srcEvent.ctrlKey; + var shiftKey = event.gesture.srcEvent && event.gesture.srcEvent.shiftKey; + if (ctrlKey || shiftKey) { + this._onMultiSelectItem(event); + return; + } - selectable: true, - editable: { - updateTime: false, - updateGroup: false, - add: false, - remove: false - }, + var oldSelection = this.getSelection(); - snap: TimeStep.snap, + var item = ItemSet.itemFromTarget(event); + var selection = item ? [item.id] : []; + this.setSelection(selection); - onAdd: function (item, callback) { - callback(item); - }, - onUpdate: function (item, callback) { - callback(item); - }, - onMove: function (item, callback) { - callback(item); - }, - onRemove: function (item, callback) { - callback(item); - }, - onMoving: function (item, callback) { - callback(item); - }, + var newSelection = this.getSelection(); - margin: { - item: { - horizontal: 10, - vertical: 10 - }, - axis: 20 - }, - padding: 5 - }; + // emit a select event, + // except when old selection is empty and new selection is still empty + if (newSelection.length > 0 || oldSelection.length > 0) { + this.body.emitter.emit('select', { + items: newSelection + }); + } + }; - // options is shared by this ItemSet and all its items - this.options = util.extend({}, this.defaultOptions); + /** + * Handle creation and updates of an item on double tap + * @param event + * @private + */ + ItemSet.prototype._onAddItem = function (event) { + if (!this.options.selectable) return; + if (!this.options.editable.add) return; - // options for getting items from the DataSet with the correct type - this.itemOptions = { - type: {start: 'Date', end: 'Date'} - }; + var me = this, + snap = this.options.snap || null, + item = ItemSet.itemFromTarget(event); - this.conversion = { - toScreen: body.util.toScreen, - toTime: body.util.toTime - }; - this.dom = {}; - this.props = {}; - this.hammer = null; + if (item) { + // update item - var me = this; - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet + // execute async handler to update the item (or cancel it) + var itemData = me.itemsData.get(item.id); // get a clone of the data from the dataset + this.options.onUpdate(itemData, function (itemData) { + if (itemData) { + me.itemsData.getDataSet().update(itemData); + } + }); + } + else { + // add item + var xAbs = util.getAbsoluteLeft(this.dom.frame); + var x = event.gesture.center.pageX - xAbs; + var start = this.body.util.toTime(x); + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); - // listeners for the DataSet of the items - this.itemListeners = { - 'add': function (event, params, senderId) { - me._onAdd(params.items); - }, - 'update': function (event, params, senderId) { - me._onUpdate(params.items); - }, - 'remove': function (event, params, senderId) { - me._onRemove(params.items); - } - }; + var newItem = { + start: snap ? snap(start, scale, step) : start, + content: 'new item' + }; - // listeners for the DataSet of the groups - this.groupListeners = { - 'add': function (event, params, senderId) { - me._onAddGroups(params.items); - }, - 'update': function (event, params, senderId) { - me._onUpdateGroups(params.items); - }, - 'remove': function (event, params, senderId) { - me._onRemoveGroups(params.items); + // when default type is a range, add a default end date to the new item + if (this.options.type === 'range') { + var end = this.body.util.toTime(x + this.props.width / 5); + newItem.end = snap ? snap(end, scale, step) : end; } - }; - - this.items = {}; // object with an Item for every data item - this.groups = {}; // Group object for every group - this.groupIds = []; - - this.selection = []; // list with the ids of all selected nodes - this.stackDirty = true; // if true, all items will be restacked on next redraw - - this.touchParams = {}; // stores properties while dragging - // create the HTML DOM - - this._create(); - this.setOptions(options); - } + newItem[this.itemsData._fieldId] = util.randomUUID(); - ItemSet.prototype = new Component(); + var group = this.groupFromTarget(event); + if (group) { + newItem.group = group.groupId; + } - // available item types will be registered here - ItemSet.types = { - background: BackgroundItem, - box: BoxItem, - range: RangeItem, - point: PointItem + // execute async handler to customize (or cancel) adding an item + this.options.onAdd(newItem, function (item) { + if (item) { + me.itemsData.getDataSet().add(item); + // TODO: need to trigger a redraw? + } + }); + } }; /** - * Create the HTML DOM for the ItemSet + * Handle selecting/deselecting multiple items when holding an item + * @param {Event} event + * @private */ - ItemSet.prototype._create = function(){ - var frame = document.createElement('div'); - frame.className = 'itemset'; - frame['timeline-itemset'] = this; - this.dom.frame = frame; - - // create background panel - var background = document.createElement('div'); - background.className = 'background'; - frame.appendChild(background); - this.dom.background = background; - - // create foreground panel - var foreground = document.createElement('div'); - foreground.className = 'foreground'; - frame.appendChild(foreground); - this.dom.foreground = foreground; - - // create axis panel - var axis = document.createElement('div'); - axis.className = 'axis'; - this.dom.axis = axis; - - // create labelset - var labelSet = document.createElement('div'); - labelSet.className = 'labelset'; - this.dom.labelSet = labelSet; - - // create ungrouped Group - this._updateUngrouped(); - - // create background Group - var backgroundGroup = new BackgroundGroup(BACKGROUND, null, this); - backgroundGroup.show(); - this.groups[BACKGROUND] = backgroundGroup; - - // attach event listeners - // Note: we bind to the centerContainer for the case where the height - // of the center container is larger than of the ItemSet, so we - // can click in the empty area to create a new item or deselect an item. - this.hammer = Hammer(this.body.dom.centerContainer, { - preventDefault: true - }); - - // drag items when selected - this.hammer.on('touch', this._onTouch.bind(this)); - this.hammer.on('dragstart', this._onDragStart.bind(this)); - this.hammer.on('drag', this._onDrag.bind(this)); - this.hammer.on('dragend', this._onDragEnd.bind(this)); + ItemSet.prototype._onMultiSelectItem = function (event) { + if (!this.options.selectable) return; - // single select (or unselect) when tapping an item - this.hammer.on('tap', this._onSelectItem.bind(this)); + var selection, + item = ItemSet.itemFromTarget(event); - // multi select when holding mouse/touch, or on ctrl+click - this.hammer.on('hold', this._onMultiSelectItem.bind(this)); + if (item) { + // multi select items + selection = this.getSelection(); // current selection - // add item on doubletap - this.hammer.on('doubletap', this._onAddItem.bind(this)); + var shiftKey = event.gesture.touches[0] && event.gesture.touches[0].shiftKey || false; + if (shiftKey) { + // select all items between the old selection and the tapped item - // attach to the DOM - this.show(); - }; + // determine the selection range + selection.push(item.id); + var range = ItemSet._getItemRange(this.itemsData.get(selection, this.itemOptions)); - /** - * Set options for the ItemSet. Existing options will be extended/overwritten. - * @param {Object} [options] The following options are available: - * {String} type - * Default type for the items. Choose from 'box' - * (default), 'point', 'range', or 'background'. - * The default style can be overwritten by - * individual items. - * {String} align - * Alignment for the items, only applicable for - * BoxItem. Choose 'center' (default), 'left', or - * 'right'. - * {String} orientation - * Orientation of the item set. Choose 'top' or - * 'bottom' (default). - * {Function} groupOrder - * A sorting function for ordering groups - * {Boolean} stack - * If true (deafult), items will be stacked on - * top of each other. - * {Number} margin.axis - * Margin between the axis and the items in pixels. - * Default is 20. - * {Number} margin.item.horizontal - * Horizontal margin between items in pixels. - * Default is 10. - * {Number} margin.item.vertical - * Vertical Margin between items in pixels. - * Default is 10. - * {Number} margin.item - * Margin between items in pixels in both horizontal - * and vertical direction. Default is 10. - * {Number} margin - * Set margin for both axis and items in pixels. - * {Number} padding - * Padding of the contents of an item in pixels. - * Must correspond with the items css. Default is 5. - * {Boolean} selectable - * If true (default), items can be selected. - * {Boolean} editable - * Set all editable options to true or false - * {Boolean} editable.updateTime - * Allow dragging an item to an other moment in time - * {Boolean} editable.updateGroup - * Allow dragging an item to an other group - * {Boolean} editable.add - * Allow creating new items on double tap - * {Boolean} editable.remove - * Allow removing items by clicking the delete button - * top right of a selected item. - * {Function(item: Item, callback: Function)} onAdd - * Callback function triggered when an item is about to be added: - * when the user double taps an empty space in the Timeline. - * {Function(item: Item, callback: Function)} onUpdate - * Callback function fired when an item is about to be updated. - * This function typically has to show a dialog where the user - * change the item. If not implemented, nothing happens. - * {Function(item: Item, callback: Function)} onMove - * Fired when an item has been moved. If not implemented, - * the move action will be accepted. - * {Function(item: Item, callback: Function)} onRemove - * Fired when an item is about to be deleted. - * If not implemented, the item will be always removed. - */ - ItemSet.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - var fields = ['type', 'align', 'orientation', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide', 'snap']; - util.selectiveExtend(fields, this.options, options); + // select all items within the selection range + selection = []; + for (var id in this.items) { + if (this.items.hasOwnProperty(id)) { + var _item = this.items[id]; + var start = _item.data.start; + var end = (_item.data.end !== undefined) ? _item.data.end : start; - if ('margin' in options) { - if (typeof options.margin === 'number') { - this.options.margin.axis = options.margin; - this.options.margin.item.horizontal = options.margin; - this.options.margin.item.vertical = options.margin; - } - else if (typeof options.margin === 'object') { - util.selectiveExtend(['axis'], this.options.margin, options.margin); - if ('item' in options.margin) { - if (typeof options.margin.item === 'number') { - this.options.margin.item.horizontal = options.margin.item; - this.options.margin.item.vertical = options.margin.item; - } - else if (typeof options.margin.item === 'object') { - util.selectiveExtend(['horizontal', 'vertical'], this.options.margin.item, options.margin.item); + if (start >= range.min && end <= range.max) { + selection.push(_item.id); // do not use id but item.id, id itself is stringified } } } } - - if ('editable' in options) { - if (typeof options.editable === 'boolean') { - this.options.editable.updateTime = options.editable; - this.options.editable.updateGroup = options.editable; - this.options.editable.add = options.editable; - this.options.editable.remove = options.editable; + else { + // add/remove this item from the current selection + var index = selection.indexOf(item.id); + if (index == -1) { + // item is not yet selected -> select it + selection.push(item.id); } - else if (typeof options.editable === 'object') { - util.selectiveExtend(['updateTime', 'updateGroup', 'add', 'remove'], this.options.editable, options.editable); + else { + // item is already selected -> deselect it + selection.splice(index, 1); } } - // callback functions - var addCallback = (function (name) { - var fn = options[name]; - if (fn) { - if (!(fn instanceof Function)) { - throw new Error('option ' + name + ' must be a function ' + name + '(item, callback)'); - } - this.options[name] = fn; - } - }).bind(this); - ['onAdd', 'onUpdate', 'onRemove', 'onMove', 'onMoving'].forEach(addCallback); + this.setSelection(selection); - // force the itemSet to refresh: options like orientation and margins may be changed - this.markDirty(); + this.body.emitter.emit('select', { + items: this.getSelection() + }); } }; /** - * Mark the ItemSet dirty so it will refresh everything with next redraw. - * Optionally, all items can be marked as dirty and be refreshed. - * @param {{refreshItems: boolean}} [options] + * Calculate the time range of a list of items + * @param {Array.} itemsData + * @return {{min: Date, max: Date}} Returns the range of the provided items + * @private */ - ItemSet.prototype.markDirty = function(options) { - this.groupIds = []; - this.stackDirty = true; + ItemSet._getItemRange = function(itemsData) { + var max = null; + var min = null; - if (options && options.refreshItems) { - util.forEach(this.items, function (item) { - item.dirty = true; - if (item.displayed) item.redraw(); - }); + itemsData.forEach(function (data) { + if (min == null || data.start < min) { + min = data.start; + } + + if (data.end != undefined) { + if (max == null || data.end > max) { + max = data.end; + } + } + else { + if (max == null || data.start > max) { + max = data.start; + } + } + }); + + return { + min: min, + max: max } }; /** - * Destroy the ItemSet + * Find an item from an event target: + * searches for the attribute 'timeline-item' in the event target's element tree + * @param {Event} event + * @return {Item | null} item */ - ItemSet.prototype.destroy = function() { - this.hide(); - this.setItems(null); - this.setGroups(null); - - this.hammer = null; + ItemSet.itemFromTarget = function(event) { + var target = event.target; + while (target) { + if (target.hasOwnProperty('timeline-item')) { + return target['timeline-item']; + } + target = target.parentNode; + } - this.body = null; - this.conversion = null; + return null; }; /** - * Hide the component from the DOM + * Find the Group from an event target: + * searches for the attribute 'timeline-group' in the event target's element tree + * @param {Event} event + * @return {Group | null} group */ - ItemSet.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); - } - - // remove the axis with dots - if (this.dom.axis.parentNode) { - this.dom.axis.parentNode.removeChild(this.dom.axis); - } - - // remove the labelset containing all group labels - if (this.dom.labelSet.parentNode) { - this.dom.labelSet.parentNode.removeChild(this.dom.labelSet); - } - }; + ItemSet.prototype.groupFromTarget = function(event) { + // TODO: cleanup when the new solution is stable (also on mobile) + //var target = event.target; + //while (target) { + // if (target.hasOwnProperty('timeline-group')) { + // return target['timeline-group']; + // } + // target = target.parentNode; + //} + // - /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed - */ - ItemSet.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); - } + var clientY = event.gesture.center.clientY; + for (var i = 0; i < this.groupIds.length; i++) { + var groupId = this.groupIds[i]; + var group = this.groups[groupId]; + var foreground = group.dom.foreground; + var top = util.getAbsoluteTop(foreground); + if (clientY > top && clientY < top + foreground.offsetHeight) { + return group; + } - // show axis with dots - if (!this.dom.axis.parentNode) { - this.body.dom.backgroundVertical.appendChild(this.dom.axis); + if (this.options.orientation === 'top') { + if (i === this.groupIds.length - 1 && clientY > top) { + return group; + } + } + else { + if (i === 0 && clientY < top + foreground.offset) { + return group; + } + } } - // show labelset containing labels - if (!this.dom.labelSet.parentNode) { - this.body.dom.left.appendChild(this.dom.labelSet); - } + return null; }; /** - * Set selected items by their id. Replaces the current selection - * Unknown id's are silently ignored. - * @param {string[] | string} [ids] An array with zero or more id's of the items to be - * selected, or a single item id. If ids is undefined - * or an empty array, all items will be unselected. + * Find the ItemSet from an event target: + * searches for the attribute 'timeline-itemset' in the event target's element tree + * @param {Event} event + * @return {ItemSet | null} item */ - ItemSet.prototype.setSelection = function(ids) { - var i, ii, id, item; - - if (ids == undefined) ids = []; - if (!Array.isArray(ids)) ids = [ids]; - - // unselect currently selected items - for (i = 0, ii = this.selection.length; i < ii; i++) { - id = this.selection[i]; - item = this.items[id]; - if (item) item.unselect(); - } - - // select items - this.selection = []; - for (i = 0, ii = ids.length; i < ii; i++) { - id = ids[i]; - item = this.items[id]; - if (item) { - this.selection.push(id); - item.select(); + ItemSet.itemSetFromTarget = function(event) { + var target = event.target; + while (target) { + if (target.hasOwnProperty('timeline-itemset')) { + return target['timeline-itemset']; } + target = target.parentNode; } - }; - /** - * Get the selected items by their id - * @return {Array} ids The ids of the selected items - */ - ItemSet.prototype.getSelection = function() { - return this.selection.concat([]); + return null; }; - /** - * Get the id's of the currently visible items. - * @returns {Array} The ids of the visible items - */ - ItemSet.prototype.getVisibleItems = function() { - var range = this.body.range.getRange(); - var left = this.body.util.toScreen(range.start); - var right = this.body.util.toScreen(range.end); + module.exports = ItemSet; - var ids = []; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - var group = this.groups[groupId]; - var rawVisibleItems = group.visibleItems; - // filter the "raw" set with visibleItems into a set which is really - // visible by pixels - for (var i = 0; i < rawVisibleItems.length; i++) { - var item = rawVisibleItems[i]; - // TODO: also check whether visible vertically - if ((item.left < right) && (item.left + item.width > left)) { - ids.push(item.id); - } - } - } - } +/***/ }, +/* 33 */ +/***/ function(module, exports, __webpack_require__) { - return ids; - }; + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(2); + var Component = __webpack_require__(25); /** - * Deselect a selected item - * @param {String | Number} id - * @private + * Legend for Graph2d */ - ItemSet.prototype._deselect = function(id) { - var selection = this.selection; - for (var i = 0, ii = selection.length; i < ii; i++) { - if (selection[i] == id) { // non-strict comparison! - selection.splice(i, 1); - break; + function Legend(body, options, side, linegraphOptions) { + this.body = body; + this.defaultOptions = { + enabled: true, + icons: true, + iconSize: 20, + iconSpacing: 6, + left: { + visible: true, + position: 'top-left' // top/bottom - left,center,right + }, + right: { + visible: true, + position: 'top-left' // top/bottom - left,center,right } } - }; - - /** - * Repaint the component - * @return {boolean} Returns true if the component is resized - */ - ItemSet.prototype.redraw = function() { - var margin = this.options.margin, - range = this.body.range, - asSize = util.option.asSize, - options = this.options, - orientation = options.orientation, - resized = false, - frame = this.dom.frame, - editable = options.editable.updateTime || options.editable.updateGroup; + this.side = side; + this.options = util.extend({},this.defaultOptions); + this.linegraphOptions = linegraphOptions; - // recalculate absolute position (before redrawing groups) - this.props.top = this.body.domProps.top.height + this.body.domProps.border.top; - this.props.left = this.body.domProps.left.width + this.body.domProps.border.left; + this.svgElements = {}; + this.dom = {}; + this.groups = {}; + this.amountOfGroups = 0; + this._create(); - // update class name - frame.className = 'itemset' + (editable ? ' editable' : ''); + this.setOptions(options); + } - // reorder the groups (if needed) - resized = this._orderGroups() || resized; + Legend.prototype = new Component(); - // check whether zoomed (in that case we need to re-stack everything) - // TODO: would be nicer to get this as a trigger from Range - var visibleInterval = range.end - range.start; - var zoomed = (visibleInterval != this.lastVisibleInterval) || (this.props.width != this.props.lastWidth); - if (zoomed) this.stackDirty = true; - this.lastVisibleInterval = visibleInterval; - this.props.lastWidth = this.props.width; + Legend.prototype.clear = function() { + this.groups = {}; + this.amountOfGroups = 0; + } - var restack = this.stackDirty; - var firstGroup = this._firstGroup(); - var firstMargin = { - item: margin.item, - axis: margin.axis - }; - var nonFirstMargin = { - item: margin.item, - axis: margin.item.vertical / 2 - }; - var height = 0; - var minHeight = margin.axis + margin.item.vertical; + Legend.prototype.addGroup = function(label, graphOptions) { - // redraw the background group - this.groups[BACKGROUND].redraw(range, nonFirstMargin, restack); + if (!this.groups.hasOwnProperty(label)) { + this.groups[label] = graphOptions; + } + this.amountOfGroups += 1; + }; - // redraw all regular groups - util.forEach(this.groups, function (group) { - var groupMargin = (group == firstGroup) ? firstMargin : nonFirstMargin; - var groupResized = group.redraw(range, groupMargin, restack); - resized = groupResized || resized; - height += group.height; - }); - height = Math.max(height, minHeight); - this.stackDirty = false; + Legend.prototype.updateGroup = function(label, graphOptions) { + this.groups[label] = graphOptions; + }; - // update frame height - frame.style.height = asSize(height); + Legend.prototype.removeGroup = function(label) { + if (this.groups.hasOwnProperty(label)) { + delete this.groups[label]; + this.amountOfGroups -= 1; + } + }; - // calculate actual size - this.props.width = frame.offsetWidth; - this.props.height = height; + Legend.prototype._create = function() { + this.dom.frame = document.createElement('div'); + this.dom.frame.className = 'legend'; + this.dom.frame.style.position = "absolute"; + this.dom.frame.style.top = "10px"; + this.dom.frame.style.display = "block"; - // reposition axis - this.dom.axis.style.top = asSize((orientation == 'top') ? - (this.body.domProps.top.height + this.body.domProps.border.top) : - (this.body.domProps.top.height + this.body.domProps.centerContainer.height)); - this.dom.axis.style.left = '0'; + this.dom.textArea = document.createElement('div'); + this.dom.textArea.className = 'legendText'; + this.dom.textArea.style.position = "relative"; + this.dom.textArea.style.top = "0px"; - // check if this component is resized - resized = this._isResized() || resized; + this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); + this.svg.style.position = 'absolute'; + this.svg.style.top = 0 +'px'; + this.svg.style.width = this.options.iconSize + 5 + 'px'; + this.svg.style.height = '100%'; - return resized; + this.dom.frame.appendChild(this.svg); + this.dom.frame.appendChild(this.dom.textArea); }; /** - * Get the first group, aligned with the axis - * @return {Group | null} firstGroup - * @private + * Hide the component from the DOM */ - ItemSet.prototype._firstGroup = function() { - var firstGroupIndex = (this.options.orientation == 'top') ? 0 : (this.groupIds.length - 1); - var firstGroupId = this.groupIds[firstGroupIndex]; - var firstGroup = this.groups[firstGroupId] || this.groups[UNGROUPED]; - - return firstGroup || null; + Legend.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); + } }; /** - * Create or delete the group holding all ungrouped items. This group is used when - * there are no groups specified. - * @protected + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed */ - ItemSet.prototype._updateUngrouped = function() { - var ungrouped = this.groups[UNGROUPED]; - var background = this.groups[BACKGROUND]; - var item, itemId; - - if (this.groupsData) { - // remove the group holding all ungrouped items - if (ungrouped) { - ungrouped.hide(); - delete this.groups[UNGROUPED]; - - for (itemId in this.items) { - if (this.items.hasOwnProperty(itemId)) { - item = this.items[itemId]; - item.parent && item.parent.remove(item); - var groupId = this._getGroupId(item.data); - var group = this.groups[groupId]; - group && group.add(item) || item.hide(); - } - } - } - } - else { - // create a group holding all (unfiltered) items - if (!ungrouped) { - var id = null; - var data = null; - ungrouped = new Group(id, data, this); - this.groups[UNGROUPED] = ungrouped; - - for (itemId in this.items) { - if (this.items.hasOwnProperty(itemId)) { - item = this.items[itemId]; - ungrouped.add(item); - } - } - - ungrouped.show(); - } + Legend.prototype.show = function() { + // show frame containing the items + if (!this.dom.frame.parentNode) { + this.body.dom.center.appendChild(this.dom.frame); } }; - /** - * Get the element for the labelset - * @return {HTMLElement} labelSet - */ - ItemSet.prototype.getLabelSet = function() { - return this.dom.labelSet; + Legend.prototype.setOptions = function(options) { + var fields = ['enabled','orientation','icons','left','right']; + util.selectiveDeepExtend(fields, this.options, options); }; - /** - * Set items - * @param {vis.DataSet | null} items - */ - ItemSet.prototype.setItems = function(items) { - var me = this, - ids, - oldItemsData = this.itemsData; - - // replace the dataset - if (!items) { - this.itemsData = null; - } - else if (items instanceof DataSet || items instanceof DataView) { - this.itemsData = items; - } - else { - throw new TypeError('Data must be an instance of DataSet or DataView'); + Legend.prototype.redraw = function() { + var activeGroups = 0; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + activeGroups++; + } + } } - if (oldItemsData) { - // unsubscribe from old dataset - util.forEach(this.itemListeners, function (callback, event) { - oldItemsData.off(event, callback); - }); - - // remove all drawn items - ids = oldItemsData.getIds(); - this._onRemove(ids); + if (this.options[this.side].visible == false || this.amountOfGroups == 0 || this.options.enabled == false || activeGroups == 0) { + this.hide(); } + else { + this.show(); + if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'bottom-left') { + this.dom.frame.style.left = '4px'; + this.dom.frame.style.textAlign = "left"; + this.dom.textArea.style.textAlign = "left"; + this.dom.textArea.style.left = (this.options.iconSize + 15) + 'px'; + this.dom.textArea.style.right = ''; + this.svg.style.left = 0 +'px'; + this.svg.style.right = ''; + } + else { + this.dom.frame.style.right = '4px'; + this.dom.frame.style.textAlign = "right"; + this.dom.textArea.style.textAlign = "right"; + this.dom.textArea.style.right = (this.options.iconSize + 15) + 'px'; + this.dom.textArea.style.left = ''; + this.svg.style.right = 0 +'px'; + this.svg.style.left = ''; + } - if (this.itemsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.itemListeners, function (callback, event) { - me.itemsData.on(event, callback, id); - }); + if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'top-right') { + this.dom.frame.style.top = 4 - Number(this.body.dom.center.style.top.replace("px","")) + 'px'; + this.dom.frame.style.bottom = ''; + } + else { + var scrollableHeight = this.body.domProps.center.height - this.body.domProps.centerContainer.height; + this.dom.frame.style.bottom = 4 + scrollableHeight + Number(this.body.dom.center.style.top.replace("px","")) + 'px'; + this.dom.frame.style.top = ''; + } - // add all new items - ids = this.itemsData.getIds(); - this._onAdd(ids); + if (this.options.icons == false) { + this.dom.frame.style.width = this.dom.textArea.offsetWidth + 10 + 'px'; + this.dom.textArea.style.right = ''; + this.dom.textArea.style.left = ''; + this.svg.style.width = '0px'; + } + else { + this.dom.frame.style.width = this.options.iconSize + 15 + this.dom.textArea.offsetWidth + 10 + 'px' + this.drawLegendIcons(); + } - // update the group holding all ungrouped items - this._updateUngrouped(); + var content = ''; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + content += this.groups[groupId].content + '
'; + } + } + } + this.dom.textArea.innerHTML = content; + this.dom.textArea.style.lineHeight = ((0.75 * this.options.iconSize) + this.options.iconSpacing) + 'px'; } }; - /** - * Get the current items - * @returns {vis.DataSet | null} - */ - ItemSet.prototype.getItems = function() { - return this.itemsData; - }; - - /** - * Set groups - * @param {vis.DataSet} groups - */ - ItemSet.prototype.setGroups = function(groups) { - var me = this, - ids; + Legend.prototype.drawLegendIcons = function() { + if (this.dom.frame.parentNode) { + DOMutil.prepareElements(this.svgElements); + var padding = window.getComputedStyle(this.dom.frame).paddingTop; + var iconOffset = Number(padding.replace('px','')); + var x = iconOffset; + var iconWidth = this.options.iconSize; + var iconHeight = 0.75 * this.options.iconSize; + var y = iconOffset + 0.5 * iconHeight + 3; - // unsubscribe from current dataset - if (this.groupsData) { - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.unsubscribe(event, callback); - }); + this.svg.style.width = iconWidth + 5 + iconOffset + 'px'; - // remove all drawn groups - ids = this.groupsData.getIds(); - this.groupsData = null; - this._onRemoveGroups(ids); // note: this will cause a redraw - } + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); + y += iconHeight + this.options.iconSpacing; + } + } + } - // replace the dataset - if (!groups) { - this.groupsData = null; - } - else if (groups instanceof DataSet || groups instanceof DataView) { - this.groupsData = groups; - } - else { - throw new TypeError('Data must be an instance of DataSet or DataView'); + DOMutil.cleanupElements(this.svgElements); } + }; - if (this.groupsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.on(event, callback, id); - }); + module.exports = Legend; - // draw all ms - ids = this.groupsData.getIds(); - this._onAddGroups(ids); - } - // update the group holding all ungrouped items - this._updateUngrouped(); +/***/ }, +/* 34 */ +/***/ function(module, exports, __webpack_require__) { - // update the order of all items in each group - this._order(); + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(2); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var Component = __webpack_require__(25); + var DataAxis = __webpack_require__(28); + var GraphGroup = __webpack_require__(29); + var Legend = __webpack_require__(33); + var BarGraphFunctions = __webpack_require__(50); - this.body.emitter.emit('change', {queue: true}); - }; + var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items /** - * Get the current groups - * @returns {vis.DataSet | null} groups - */ - ItemSet.prototype.getGroups = function() { - return this.groupsData; - }; - - /** - * Remove an item by its id - * @param {String | Number} id + * This is the constructor of the LineGraph. It requires a Timeline body and options. + * + * @param body + * @param options + * @constructor */ - ItemSet.prototype.removeItem = function(id) { - var item = this.itemsData.get(id), - dataset = this.itemsData.getDataSet(); + function LineGraph(body, options) { + this.id = util.randomUUID(); + this.body = body; - if (item) { - // confirm deletion - this.options.onRemove(item, function (item) { - if (item) { - // remove by id here, it is possible that an item has no id defined - // itself, so better not delete by the item itself - dataset.remove(id); + this.defaultOptions = { + yAxisOrientation: 'left', + defaultGroup: 'default', + sort: true, + sampling: true, + graphHeight: '400px', + shaded: { + enabled: false, + orientation: 'bottom' // top, bottom + }, + style: 'line', // line, bar + barChart: { + width: 50, + handleOverlap: 'overlap', + align: 'center' // left, center, right + }, + catmullRom: { + enabled: true, + parametrization: 'centripetal', // uniform (alpha = 0.0), chordal (alpha = 1.0), centripetal (alpha = 0.5) + alpha: 0.5 + }, + drawPoints: { + enabled: true, + size: 6, + style: 'square' // square, circle + }, + dataAxis: { + showMinorLabels: true, + showMajorLabels: true, + icons: false, + width: '40px', + visible: true, + alignZeros: true, + customRange: { + left: {min:undefined, max:undefined}, + right: {min:undefined, max:undefined} } - }); - } - }; + //, these options are not set by default, but this shows the format they will be in + //format: { + // left: {decimals: 2}, + // right: {decimals: 2} + //}, + //title: { + // left: { + // text: 'left', + // style: 'color:black;' + // }, + // right: { + // text: 'right', + // style: 'color:black;' + // } + //} + }, + legend: { + enabled: false, + icons: true, + left: { + visible: true, + position: 'top-left' // top/bottom - left,right + }, + right: { + visible: true, + position: 'top-right' // top/bottom - left,right + } + }, + groups: { + visibility: {} + } + }; - /** - * Get the time of an item based on it's data and options.type - * @param {Object} itemData - * @returns {string} Returns the type - * @private - */ - ItemSet.prototype._getType = function (itemData) { - return itemData.type || this.options.type || (itemData.end ? 'range' : 'box'); - }; + // options is shared by this ItemSet and all its items + this.options = util.extend({}, this.defaultOptions); + this.dom = {}; + this.props = {}; + this.hammer = null; + this.groups = {}; + this.abortedGraphUpdate = false; + this.updateSVGheight = false; + this.updateSVGheightOnResize = false; + var me = this; + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet - /** - * Get the group id for an item - * @param {Object} itemData - * @returns {string} Returns the groupId - * @private - */ - ItemSet.prototype._getGroupId = function (itemData) { - var type = this._getType(itemData); - if (type == 'background' && itemData.group == undefined) { - return BACKGROUND; - } - else { - return this.groupsData ? itemData.group : UNGROUPED; - } - }; + // listeners for the DataSet of the items + this.itemListeners = { + 'add': function (event, params, senderId) { + me._onAdd(params.items); + }, + 'update': function (event, params, senderId) { + me._onUpdate(params.items); + }, + 'remove': function (event, params, senderId) { + me._onRemove(params.items); + } + }; + + // listeners for the DataSet of the groups + this.groupListeners = { + 'add': function (event, params, senderId) { + me._onAddGroups(params.items); + }, + 'update': function (event, params, senderId) { + me._onUpdateGroups(params.items); + }, + 'remove': function (event, params, senderId) { + me._onRemoveGroups(params.items); + } + }; + + this.items = {}; // object with an Item for every data item + this.selection = []; // list with the ids of all selected nodes + this.lastStart = this.body.range.start; + this.touchParams = {}; // stores properties while dragging + + this.svgElements = {}; + this.setOptions(options); + this.groupsUsingDefaultStyles = [0]; + this.COUNTER = 0; + this.body.emitter.on('rangechanged', function() { + me.lastStart = me.body.range.start; + me.svg.style.left = util.option.asSize(-me.props.width); + me.redraw.call(me,true); + }); + + // create the HTML DOM + this._create(); + this.framework = {svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups}; + this.body.emitter.emit('change'); + + } + + LineGraph.prototype = new Component(); /** - * Handle updated items - * @param {Number[]} ids - * @protected + * Create the HTML DOM for the ItemSet */ - ItemSet.prototype._onUpdate = function(ids) { - var me = this; + LineGraph.prototype._create = function(){ + var frame = document.createElement('div'); + frame.className = 'LineGraph'; + this.dom.frame = frame; - ids.forEach(function (id) { - var itemData = me.itemsData.get(id, me.itemOptions); - var item = me.items[id]; - var type = me._getType(itemData); + // create svg element for graph drawing. + this.svg = document.createElementNS('http://www.w3.org/2000/svg','svg'); + this.svg.style.position = 'relative'; + this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; + this.svg.style.display = 'block'; + frame.appendChild(this.svg); - var constructor = ItemSet.types[type]; + // data axis + this.options.dataAxis.orientation = 'left'; + this.yAxisLeft = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); - if (item) { - // update item - if (!constructor || !(item instanceof constructor)) { - // item type has changed, delete the item and recreate it - me._removeItem(item); - item = null; - } - else { - me._updateItem(item, itemData); + this.options.dataAxis.orientation = 'right'; + this.yAxisRight = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); + delete this.options.dataAxis.orientation; + + // legends + this.legendLeft = new Legend(this.body, this.options.legend, 'left', this.options.groups); + this.legendRight = new Legend(this.body, this.options.legend, 'right', this.options.groups); + + this.show(); + }; + + /** + * set the options of the LineGraph. the mergeOptions is used for subObjects that have an enabled element. + * @param {object} options + */ + LineGraph.prototype.setOptions = function(options) { + if (options) { + var fields = ['sampling','defaultGroup','height','graphHeight','yAxisOrientation','style','barChart','dataAxis','sort','groups']; + if (options.graphHeight === undefined && options.height !== undefined && this.body.domProps.centerContainer.height !== undefined) { + this.updateSVGheight = true; + this.updateSVGheightOnResize = true; + } + else if (this.body.domProps.centerContainer.height !== undefined && options.graphHeight !== undefined) { + if (parseInt((options.graphHeight + '').replace("px",'')) < this.body.domProps.centerContainer.height) { + this.updateSVGheight = true; } } + util.selectiveDeepExtend(fields, this.options, options); + util.mergeOptions(this.options, options,'catmullRom'); + util.mergeOptions(this.options, options,'drawPoints'); + util.mergeOptions(this.options, options,'shaded'); + util.mergeOptions(this.options, options,'legend'); - if (!item) { - // create item - if (constructor) { - item = new constructor(itemData, me.conversion, me.options); - item.id = id; // TODO: not so nice setting id afterwards - me._addItem(item); - } - else if (type == 'rangeoverflow') { - // TODO: deprecated since version 2.1.0 (or 3.0.0?). cleanup some day - throw new TypeError('Item type "rangeoverflow" is deprecated. Use css styling instead: ' + - '.vis.timeline .item.range .content {overflow: visible;}'); - } - else { - throw new TypeError('Unknown item type "' + type + '"'); + if (options.catmullRom) { + if (typeof options.catmullRom == 'object') { + if (options.catmullRom.parametrization) { + if (options.catmullRom.parametrization == 'uniform') { + this.options.catmullRom.alpha = 0; + } + else if (options.catmullRom.parametrization == 'chordal') { + this.options.catmullRom.alpha = 1.0; + } + else { + this.options.catmullRom.parametrization = 'centripetal'; + this.options.catmullRom.alpha = 0.5; + } + } } } - }); - this._order(); - this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change', {queue: true}); - }; + if (this.yAxisLeft) { + if (options.dataAxis !== undefined) { + this.yAxisLeft.setOptions(this.options.dataAxis); + this.yAxisRight.setOptions(this.options.dataAxis); + } + } - /** - * Handle added items - * @param {Number[]} ids - * @protected - */ - ItemSet.prototype._onAdd = ItemSet.prototype._onUpdate; + if (this.legendLeft) { + if (options.legend !== undefined) { + this.legendLeft.setOptions(this.options.legend); + this.legendRight.setOptions(this.options.legend); + } + } - /** - * Handle removed items - * @param {Number[]} ids - * @protected - */ - ItemSet.prototype._onRemove = function(ids) { - var count = 0; - var me = this; - ids.forEach(function (id) { - var item = me.items[id]; - if (item) { - count++; - me._removeItem(item); + if (this.groups.hasOwnProperty(UNGROUPED)) { + this.groups[UNGROUPED].setOptions(options); } - }); + } - if (count) { - // update order - this._order(); - this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change', {queue: true}); + // this is used to redraw the graph if the visibility of the groups is changed. + if (this.dom.frame) { + this.redraw(true); } }; /** - * Update the order of item in all groups - * @private + * Hide the component from the DOM */ - ItemSet.prototype._order = function() { - // reorder the items in all groups - // TODO: optimization: only reorder groups affected by the changed items - util.forEach(this.groups, function (group) { - group.order(); - }); + LineGraph.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); + } }; + /** - * Handle updated groups - * @param {Number[]} ids - * @private + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed */ - ItemSet.prototype._onUpdateGroups = function(ids) { - this._onAddGroups(ids); + LineGraph.prototype.show = function() { + // show frame containing the items + if (!this.dom.frame.parentNode) { + this.body.dom.center.appendChild(this.dom.frame); + } }; + /** - * Handle changed groups (added or updated) - * @param {Number[]} ids - * @private + * Set items + * @param {vis.DataSet | null} items */ - ItemSet.prototype._onAddGroups = function(ids) { - var me = this; - - ids.forEach(function (id) { - var groupData = me.groupsData.get(id); - var group = me.groups[id]; - - if (!group) { - // check for reserved ids - if (id == UNGROUPED || id == BACKGROUND) { - throw new Error('Illegal group id. ' + id + ' is a reserved id.'); - } + LineGraph.prototype.setItems = function(items) { + var me = this, + ids, + oldItemsData = this.itemsData; - var groupOptions = Object.create(me.options); - util.extend(groupOptions, { - height: null - }); + // replace the dataset + if (!items) { + this.itemsData = null; + } + else if (items instanceof DataSet || items instanceof DataView) { + this.itemsData = items; + } + else { + throw new TypeError('Data must be an instance of DataSet or DataView'); + } - group = new Group(id, groupData, me); - me.groups[id] = group; + if (oldItemsData) { + // unsubscribe from old dataset + util.forEach(this.itemListeners, function (callback, event) { + oldItemsData.off(event, callback); + }); - // add items with this groupId to the new group - for (var itemId in me.items) { - if (me.items.hasOwnProperty(itemId)) { - var item = me.items[itemId]; - if (item.data.group == id) { - group.add(item); - } - } - } + // remove all drawn items + ids = oldItemsData.getIds(); + this._onRemove(ids); + } - group.order(); - group.show(); - } - else { - // update group - group.setData(groupData); - } - }); + if (this.itemsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.itemListeners, function (callback, event) { + me.itemsData.on(event, callback, id); + }); - this.body.emitter.emit('change', {queue: true}); + // add all new items + ids = this.itemsData.getIds(); + this._onAdd(ids); + } + this._updateUngrouped(); + //this._updateGraph(); + this.redraw(true); }; - /** - * Handle removed groups - * @param {Number[]} ids - * @private - */ - ItemSet.prototype._onRemoveGroups = function(ids) { - var groups = this.groups; - ids.forEach(function (id) { - var group = groups[id]; - - if (group) { - group.hide(); - delete groups[id]; - } - }); - - this.markDirty(); - - this.body.emitter.emit('change', {queue: true}); - }; /** - * Reorder the groups if needed - * @return {boolean} changed - * @private + * Set groups + * @param {vis.DataSet} groups */ - ItemSet.prototype._orderGroups = function () { + LineGraph.prototype.setGroups = function(groups) { + var me = this; + var ids; + + // unsubscribe from current dataset if (this.groupsData) { - // reorder the groups - var groupIds = this.groupsData.getIds({ - order: this.options.groupOrder + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.unsubscribe(event, callback); }); - var changed = !util.equalArray(groupIds, this.groupIds); - if (changed) { - // hide all groups, removes them from the DOM - var groups = this.groups; - groupIds.forEach(function (groupId) { - groups[groupId].hide(); - }); - - // show the groups again, attach them to the DOM in correct order - groupIds.forEach(function (groupId) { - groups[groupId].show(); - }); - - this.groupIds = groupIds; - } + // remove all drawn groups + ids = this.groupsData.getIds(); + this.groupsData = null; + this._onRemoveGroups(ids); // note: this will cause a redraw + } - return changed; + // replace the dataset + if (!groups) { + this.groupsData = null; + } + else if (groups instanceof DataSet || groups instanceof DataView) { + this.groupsData = groups; } else { - return false; + throw new TypeError('Data must be an instance of DataSet or DataView'); + } + + if (this.groupsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.on(event, callback, id); + }); + + // draw all ms + ids = this.groupsData.getIds(); + this._onAddGroups(ids); } + this._onUpdate(); }; + /** - * Add a new item - * @param {Item} item + * Update the data + * @param [ids] * @private */ - ItemSet.prototype._addItem = function(item) { - this.items[item.id] = item; - - // add to group - var groupId = this._getGroupId(item.data); - var group = this.groups[groupId]; - if (group) group.add(item); + LineGraph.prototype._onUpdate = function(ids) { + this._updateUngrouped(); + this._updateAllGroupData(); + //this._updateGraph(); + this.redraw(true); }; - - /** - * Update an existing item - * @param {Item} item - * @param {Object} itemData - * @private - */ - ItemSet.prototype._updateItem = function(item, itemData) { - var oldGroupId = item.data.group; - - // update the items data (will redraw the item when displayed) - item.setData(itemData); - - // update group - if (oldGroupId != item.data.group) { - var oldGroup = this.groups[oldGroupId]; - if (oldGroup) oldGroup.remove(item); - - var groupId = this._getGroupId(item.data); - var group = this.groups[groupId]; - if (group) group.add(item); + LineGraph.prototype._onAdd = function (ids) {this._onUpdate(ids);}; + LineGraph.prototype._onRemove = function (ids) {this._onUpdate(ids);}; + LineGraph.prototype._onUpdateGroups = function (groupIds) { + for (var i = 0; i < groupIds.length; i++) { + var group = this.groupsData.get(groupIds[i]); + this._updateGroup(group, groupIds[i]); } - }; - - /** - * Delete an item from the ItemSet: remove it from the DOM, from the map - * with items, and from the map with visible items, and from the selection - * @param {Item} item - * @private - */ - ItemSet.prototype._removeItem = function(item) { - // remove from DOM - item.hide(); - // remove from items - delete this.items[item.id]; - - // remove from selection - var index = this.selection.indexOf(item.id); - if (index != -1) this.selection.splice(index, 1); - - // remove from group - item.parent && item.parent.remove(item); + //this._updateGraph(); + this.redraw(true); }; + LineGraph.prototype._onAddGroups = function (groupIds) {this._onUpdateGroups(groupIds);}; + /** - * Create an array containing all items being a range (having an end date) - * @param array - * @returns {Array} + * this cleans the group out off the legends and the dataaxis, updates the ungrouped and updates the graph + * @param {Array} groupIds * @private */ - ItemSet.prototype._constructByEndArray = function(array) { - var endArray = []; - - for (var i = 0; i < array.length; i++) { - if (array[i] instanceof RangeItem) { - endArray.push(array[i]); + LineGraph.prototype._onRemoveGroups = function (groupIds) { + for (var i = 0; i < groupIds.length; i++) { + if (this.groups.hasOwnProperty(groupIds[i])) { + if (this.groups[groupIds[i]].options.yAxisOrientation == 'right') { + this.yAxisRight.removeGroup(groupIds[i]); + this.legendRight.removeGroup(groupIds[i]); + this.legendRight.redraw(); + } + else { + this.yAxisLeft.removeGroup(groupIds[i]); + this.legendLeft.removeGroup(groupIds[i]); + this.legendLeft.redraw(); + } + delete this.groups[groupIds[i]]; } } - return endArray; + this._updateUngrouped(); + //this._updateGraph(); + this.redraw(true); }; + /** - * Register the clicked item on touch, before dragStart is initiated. - * - * dragStart is initiated from a mousemove event, which can have left the item - * already resulting in an item == null + * update a group object with the group dataset entree * - * @param {Event} event + * @param group + * @param groupId * @private */ - ItemSet.prototype._onTouch = function (event) { - // store the touched item, used in _onDragStart - this.touchParams.item = ItemSet.itemFromTarget(event); + LineGraph.prototype._updateGroup = function (group, groupId) { + if (!this.groups.hasOwnProperty(groupId)) { + this.groups[groupId] = new GraphGroup(group, groupId, this.options, this.groupsUsingDefaultStyles); + if (this.groups[groupId].options.yAxisOrientation == 'right') { + this.yAxisRight.addGroup(groupId, this.groups[groupId]); + this.legendRight.addGroup(groupId, this.groups[groupId]); + } + else { + this.yAxisLeft.addGroup(groupId, this.groups[groupId]); + this.legendLeft.addGroup(groupId, this.groups[groupId]); + } + } + else { + this.groups[groupId].update(group); + if (this.groups[groupId].options.yAxisOrientation == 'right') { + this.yAxisRight.updateGroup(groupId, this.groups[groupId]); + this.legendRight.updateGroup(groupId, this.groups[groupId]); + } + else { + this.yAxisLeft.updateGroup(groupId, this.groups[groupId]); + this.legendLeft.updateGroup(groupId, this.groups[groupId]); + } + } + this.legendLeft.redraw(); + this.legendRight.redraw(); }; + /** - * Start dragging the selected events - * @param {Event} event + * this updates all groups, it is used when there is an update the the itemset. + * * @private */ - ItemSet.prototype._onDragStart = function (event) { - if (!this.options.editable.updateTime && !this.options.editable.updateGroup) { - return; - } - - var item = this.touchParams.item || null; - var me = this; - var props; - - if (item && item.selected) { - var dragLeftItem = event.target.dragLeftItem; - var dragRightItem = event.target.dragRightItem; - - if (dragLeftItem) { - props = { - item: dragLeftItem, - initialX: event.gesture.center.clientX - }; - - if (me.options.editable.updateTime) { - props.start = item.data.start.valueOf(); - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; + LineGraph.prototype._updateAllGroupData = function () { + if (this.itemsData != null) { + var groupsContent = {}; + var groupId; + for (groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + groupsContent[groupId] = []; } - - this.touchParams.itemProps = [props]; } - else if (dragRightItem) { - props = { - item: dragRightItem, - initialX: event.gesture.center.clientX - }; - - if (me.options.editable.updateTime) { - props.end = item.data.end.valueOf(); + for (var itemId in this.itemsData._data) { + if (this.itemsData._data.hasOwnProperty(itemId)) { + var item = this.itemsData._data[itemId]; + if (groupsContent[item.group] === undefined) { + throw new Error('Cannot find referenced group. Possible reason: items added before groups? Groups need to be added before items, as items refer to groups.') + } + item.x = util.convert(item.x,'Date'); + groupsContent[item.group].push(item); } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; + } + for (groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + this.groups[groupId].setItems(groupsContent[groupId]); } - - this.touchParams.itemProps = [props]; } - else { - this.touchParams.itemProps = this.getSelection().map(function (id) { - var item = me.items[id]; - var props = { - item: item, - initialX: event.gesture.center.clientX - }; + } + }; - if (me.options.editable.updateTime) { - if ('start' in item.data) { - props.start = item.data.start.valueOf(); - if ('end' in item.data) { - // we store a duration here in order not to change the width - // of the item when moving it. - props.duration = item.data.end.valueOf() - props.start; + /** + * Create or delete the group holding all ungrouped items. This group is used when + * there are no groups specified. This anonymous group is called 'graph'. + * @protected + */ + LineGraph.prototype._updateUngrouped = function() { + if (this.itemsData && this.itemsData != null) { + var ungroupedCounter = 0; + for (var itemId in this.itemsData._data) { + if (this.itemsData._data.hasOwnProperty(itemId)) { + var item = this.itemsData._data[itemId]; + if (item != undefined) { + if (item.hasOwnProperty('group')) { + if (item.group === undefined) { + item.group = UNGROUPED; } } + else { + item.group = UNGROUPED; + } + ungroupedCounter = item.group == UNGROUPED ? ungroupedCounter + 1 : ungroupedCounter; } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } - - return props; - }); + } } - event.stopPropagation(); + if (ungroupedCounter == 0) { + delete this.groups[UNGROUPED]; + this.legendLeft.removeGroup(UNGROUPED); + this.legendRight.removeGroup(UNGROUPED); + this.yAxisLeft.removeGroup(UNGROUPED); + this.yAxisRight.removeGroup(UNGROUPED); + } + else { + var group = {id: UNGROUPED, content: this.options.defaultGroup}; + this._updateGroup(group, UNGROUPED); + } + } + else { + delete this.groups[UNGROUPED]; + this.legendLeft.removeGroup(UNGROUPED); + this.legendRight.removeGroup(UNGROUPED); + this.yAxisLeft.removeGroup(UNGROUPED); + this.yAxisRight.removeGroup(UNGROUPED); } + + this.legendLeft.redraw(); + this.legendRight.redraw(); }; + /** - * Drag selected items - * @param {Event} event - * @private + * Redraw the component, mandatory function + * @return {boolean} Returns true if the component is resized */ - ItemSet.prototype._onDrag = function (event) { - event.preventDefault(); - - if (this.touchParams.itemProps) { - var me = this; - var snap = this.options.snap || null; - var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width; - var scale = this.body.util.getScale(); - var step = this.body.util.getStep(); + LineGraph.prototype.redraw = function(forceGraphUpdate) { + var resized = false; - // move - this.touchParams.itemProps.forEach(function (props) { - var newProps = {}; - var current = me.body.util.toTime(event.gesture.center.clientX - xOffset); - var initial = me.body.util.toTime(props.initialX - xOffset); - var offset = current - initial; + // calculate actual size and position + this.props.width = this.dom.frame.offsetWidth; + this.props.height = this.body.domProps.centerContainer.height; - if ('start' in props) { - var start = new Date(props.start + offset); - newProps.start = snap ? snap(start, scale, step) : start; - } + // update the graph if there is no lastWidth or with, used for the initial draw + if (this.lastWidth === undefined && this.props.width) { + forceGraphUpdate = true; + } - if ('end' in props) { - var end = new Date(props.end + offset); - newProps.end = snap ? snap(end, scale, step) : end; - } - else if ('duration' in props) { - newProps.end = new Date(newProps.start.valueOf() + props.duration); - } + // check if this component is resized + resized = this._isResized() || resized; - if ('group' in props) { - // drag from one group to another - var group = me.groupFromTarget(event); - newProps.group = group && group.groupId; - } + // check whether zoomed (in that case we need to re-stack everything) + var visibleInterval = this.body.range.end - this.body.range.start; + var zoomed = (visibleInterval != this.lastVisibleInterval); + this.lastVisibleInterval = visibleInterval; - // confirm moving the item - var itemData = util.extend({}, props.item.data, newProps); - me.options.onMoving(itemData, function (itemData) { - if (itemData) { - me._updateItemProps(props.item, itemData); - } - }); - }); - this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change'); + // the svg element is three times as big as the width, this allows for fully dragging left and right + // without reloading the graph. the controls for this are bound to events in the constructor + if (resized == true) { + this.svg.style.width = util.option.asSize(3*this.props.width); + this.svg.style.left = util.option.asSize(-this.props.width); - event.stopPropagation(); + // if the height of the graph is set as proportional, change the height of the svg + if ((this.options.height + '').indexOf("%") != -1 || this.updateSVGheightOnResize == true) { + this.updateSVGheight = true; + } } - }; - /** - * Update an items properties - * @param {Item} item - * @param {Object} props Can contain properties start, end, and group. - * @private - */ - ItemSet.prototype._updateItemProps = function(item, props) { - // TODO: copy all properties from props to item? (also new ones) - if ('start' in props) item.data.start = props.start; - if ('end' in props) item.data.end = props.end; - if ('group' in props && item.data.group != props.group) { - this._moveToGroup(item, props.group) + // update the height of the graph on each redraw of the graph. + if (this.updateSVGheight == true) { + if (this.options.graphHeight != this.body.domProps.centerContainer.height + 'px') { + this.options.graphHeight = this.body.domProps.centerContainer.height + 'px'; + this.svg.style.height = this.body.domProps.centerContainer.height + 'px'; + } + this.updateSVGheight = false; + } + else { + this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; } - }; - - /** - * Move an item to another group - * @param {Item} item - * @param {String | Number} groupId - * @private - */ - ItemSet.prototype._moveToGroup = function(item, groupId) { - var group = this.groups[groupId]; - if (group && group.groupId != item.data.group) { - var oldGroup = item.parent; - oldGroup.remove(item); - oldGroup.order(); - group.add(item); - group.order(); - item.data.group = group.groupId; + // zoomed is here to ensure that animations are shown correctly. + if (resized == true || zoomed == true || this.abortedGraphUpdate == true || forceGraphUpdate == true) { + resized = this._updateGraph() || resized; + } + else { + // move the whole svg while dragging + if (this.lastStart != 0) { + var offset = this.body.range.start - this.lastStart; + var range = this.body.range.end - this.body.range.start; + if (this.props.width != 0) { + var rangePerPixelInv = this.props.width/range; + var xOffset = offset * rangePerPixelInv; + this.svg.style.left = (-this.props.width - xOffset) + 'px'; + } + } } + + this.legendLeft.redraw(); + this.legendRight.redraw(); + return resized; }; + /** - * End of dragging selected items - * @param {Event} event - * @private + * Update and redraw the graph. + * */ - ItemSet.prototype._onDragEnd = function (event) { - event.preventDefault() + LineGraph.prototype._updateGraph = function () { + // reset the svg elements + DOMutil.prepareElements(this.svgElements); + if (this.props.width != 0 && this.itemsData != null) { + var group, i; + var preprocessedGroupData = {}; + var processedGroupData = {}; + var groupRanges = {}; + var changeCalled = false; - if (this.touchParams.itemProps) { - // prepare a change set for the changed items - var changes = [], - me = this, - dataset = this.itemsData.getDataSet(); + // getting group Ids + var groupIds = []; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + group = this.groups[groupId]; + if (group.visible == true && (this.options.groups.visibility[groupId] === undefined || this.options.groups.visibility[groupId] == true)) { + groupIds.push(groupId); + } + } + } + if (groupIds.length > 0) { + // this is the range of the SVG canvas + var minDate = this.body.util.toGlobalTime(-this.body.domProps.root.width); + var maxDate = this.body.util.toGlobalTime(2 * this.body.domProps.root.width); + var groupsData = {}; + // fill groups data, this only loads the data we require based on the timewindow + this._getRelevantData(groupIds, groupsData, minDate, maxDate); - var itemProps = this.touchParams.itemProps ; - this.touchParams.itemProps = null; - itemProps.forEach(function (props) { - var id = props.item.id, - itemData = me.itemsData.get(id, me.itemOptions); + // apply sampling, if disabled, it will pass through this function. + this._applySampling(groupIds, groupsData); - var changed = false; - if ('start' in props.item.data) { - changed = (props.start != props.item.data.start.valueOf()); - itemData.start = util.convert(props.item.data.start, - dataset._options.type && dataset._options.type.start || 'Date'); - } - if ('end' in props.item.data) { - changed = changed || (props.end != props.item.data.end.valueOf()); - itemData.end = util.convert(props.item.data.end, - dataset._options.type && dataset._options.type.end || 'Date'); + // we transform the X coordinates to detect collisions + for (i = 0; i < groupIds.length; i++) { + preprocessedGroupData[groupIds[i]] = this._convertXcoordinates(groupsData[groupIds[i]]); } - if ('group' in props.item.data) { - changed = changed || (props.group != props.item.data.group); - itemData.group = props.item.data.group; + + // now all needed data has been collected we start the processing. + this._getYRanges(groupIds, preprocessedGroupData, groupRanges); + + // update the Y axis first, we use this data to draw at the correct Y points + // changeCalled is required to clean the SVG on a change emit. + changeCalled = this._updateYAxis(groupIds, groupRanges); + var MAX_CYCLES = 5; + if (changeCalled == true && this.COUNTER < MAX_CYCLES) { + DOMutil.cleanupElements(this.svgElements); + this.abortedGraphUpdate = true; + this.COUNTER++; + this.body.emitter.emit('change'); + return true; } + else { + if (this.COUNTER > MAX_CYCLES) { + console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle.") + } + this.COUNTER = 0; + this.abortedGraphUpdate = false; - // only apply changes when start or end is actually changed - if (changed) { - me.options.onMove(itemData, function (itemData) { - if (itemData) { - // apply changes - itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) - changes.push(itemData); - } - else { - // restore original values - me._updateItemProps(props.item, props); + // With the yAxis scaled correctly, use this to get the Y values of the points. + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + processedGroupData[groupIds[i]] = this._convertYcoordinates(groupsData[groupIds[i]], group); + } - me.stackDirty = true; // force re-stacking of all items next redraw - me.body.emitter.emit('change'); + // draw the groups + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (group.options.style != 'bar') { // bar needs to be drawn enmasse + group.draw(processedGroupData[groupIds[i]], group, this.framework); } - }); + } + BarGraphFunctions.draw(groupIds, processedGroupData, this.framework); } - }); - - // apply the changes to the data (if there are changes) - if (changes.length) { - dataset.update(changes); } - - event.stopPropagation(); } + + // cleanup unused svg elements + DOMutil.cleanupElements(this.svgElements); + return false; }; - /** - * Handle selecting/deselecting an item when tapping it - * @param {Event} event - * @private - */ - ItemSet.prototype._onSelectItem = function (event) { - if (!this.options.selectable) return; - - var ctrlKey = event.gesture.srcEvent && event.gesture.srcEvent.ctrlKey; - var shiftKey = event.gesture.srcEvent && event.gesture.srcEvent.shiftKey; - if (ctrlKey || shiftKey) { - this._onMultiSelectItem(event); - return; - } - - var oldSelection = this.getSelection(); - - var item = ItemSet.itemFromTarget(event); - var selection = item ? [item.id] : []; - this.setSelection(selection); - - var newSelection = this.getSelection(); - - // emit a select event, - // except when old selection is empty and new selection is still empty - if (newSelection.length > 0 || oldSelection.length > 0) { - this.body.emitter.emit('select', { - items: newSelection - }); - } - }; /** - * Handle creation and updates of an item on double tap - * @param event + * first select and preprocess the data from the datasets. + * the groups have their preselection of data, we now loop over this data to see + * what data we need to draw. Sorted data is much faster. + * more optimization is possible by doing the sampling before and using the binary search + * to find the end date to determine the increment. + * + * @param {array} groupIds + * @param {object} groupsData + * @param {date} minDate + * @param {date} maxDate * @private */ - ItemSet.prototype._onAddItem = function (event) { - if (!this.options.selectable) return; - if (!this.options.editable.add) return; - - var me = this, - snap = this.options.snap || null, - item = ItemSet.itemFromTarget(event); - - if (item) { - // update item - - // execute async handler to update the item (or cancel it) - var itemData = me.itemsData.get(item.id); // get a clone of the data from the dataset - this.options.onUpdate(itemData, function (itemData) { - if (itemData) { - me.itemsData.getDataSet().update(itemData); + LineGraph.prototype._getRelevantData = function (groupIds, groupsData, minDate, maxDate) { + var group, i, j, item; + if (groupIds.length > 0) { + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + groupsData[groupIds[i]] = []; + var dataContainer = groupsData[groupIds[i]]; + // optimization for sorted data + if (group.options.sort == true) { + var guess = Math.max(0, util.binarySearchValue(group.itemsData, minDate, 'x', 'before')); + for (j = guess; j < group.itemsData.length; j++) { + item = group.itemsData[j]; + if (item !== undefined) { + if (item.x > maxDate) { + dataContainer.push(item); + break; + } + else { + dataContainer.push(item); + } + } + } } - }); - } - else { - // add item - var xAbs = util.getAbsoluteLeft(this.dom.frame); - var x = event.gesture.center.pageX - xAbs; - var start = this.body.util.toTime(x); - var scale = this.body.util.getScale(); - var step = this.body.util.getStep(); - - var newItem = { - start: snap ? snap(start, scale, step) : start, - content: 'new item' - }; - - // when default type is a range, add a default end date to the new item - if (this.options.type === 'range') { - var end = this.body.util.toTime(x + this.props.width / 5); - newItem.end = snap ? snap(end, scale, step) : end; - } - - newItem[this.itemsData._fieldId] = util.randomUUID(); - - var group = this.groupFromTarget(event); - if (group) { - newItem.group = group.groupId; - } - - // execute async handler to customize (or cancel) adding an item - this.options.onAdd(newItem, function (item) { - if (item) { - me.itemsData.getDataSet().add(item); - // TODO: need to trigger a redraw? + else { + for (j = 0; j < group.itemsData.length; j++) { + item = group.itemsData[j]; + if (item !== undefined) { + if (item.x > minDate && item.x < maxDate) { + dataContainer.push(item); + } + } + } } - }); + } } }; + /** - * Handle selecting/deselecting multiple items when holding an item - * @param {Event} event + * + * @param groupIds + * @param groupsData * @private */ - ItemSet.prototype._onMultiSelectItem = function (event) { - if (!this.options.selectable) return; - - var selection, - item = ItemSet.itemFromTarget(event); - - if (item) { - // multi select items - selection = this.getSelection(); // current selection - - var shiftKey = event.gesture.touches[0] && event.gesture.touches[0].shiftKey || false; - if (shiftKey) { - // select all items between the old selection and the tapped item + LineGraph.prototype._applySampling = function (groupIds, groupsData) { + var group; + if (groupIds.length > 0) { + for (var i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (group.options.sampling == true) { + var dataContainer = groupsData[groupIds[i]]; + if (dataContainer.length > 0) { + var increment = 1; + var amountOfPoints = dataContainer.length; - // determine the selection range - selection.push(item.id); - var range = ItemSet._getItemRange(this.itemsData.get(selection, this.itemOptions)); + // the global screen is used because changing the width of the yAxis may affect the increment, resulting in an endless loop + // of width changing of the yAxis. + var xDistance = this.body.util.toGlobalScreen(dataContainer[dataContainer.length - 1].x) - this.body.util.toGlobalScreen(dataContainer[0].x); + var pointsPerPixel = amountOfPoints / xDistance; + increment = Math.min(Math.ceil(0.2 * amountOfPoints), Math.max(1, Math.round(pointsPerPixel))); - // select all items within the selection range - selection = []; - for (var id in this.items) { - if (this.items.hasOwnProperty(id)) { - var _item = this.items[id]; - var start = _item.data.start; - var end = (_item.data.end !== undefined) ? _item.data.end : start; + var sampledData = []; + for (var j = 0; j < amountOfPoints; j += increment) { + sampledData.push(dataContainer[j]); - if (start >= range.min && end <= range.max) { - selection.push(_item.id); // do not use id but item.id, id itself is stringified } + groupsData[groupIds[i]] = sampledData; } } } - else { - // add/remove this item from the current selection - var index = selection.indexOf(item.id); - if (index == -1) { - // item is not yet selected -> select it - selection.push(item.id); - } - else { - // item is already selected -> deselect it - selection.splice(index, 1); + } + }; + + + /** + * + * + * @param {array} groupIds + * @param {object} groupsData + * @param {object} groupRanges | this is being filled here + * @private + */ + LineGraph.prototype._getYRanges = function (groupIds, groupsData, groupRanges) { + var groupData, group, i; + var barCombinedDataLeft = []; + var barCombinedDataRight = []; + var options; + if (groupIds.length > 0) { + for (i = 0; i < groupIds.length; i++) { + groupData = groupsData[groupIds[i]]; + options = this.groups[groupIds[i]].options; + if (groupData.length > 0) { + group = this.groups[groupIds[i]]; + // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. + if (options.barChart.handleOverlap == 'stack' && options.style == 'bar') { + if (options.yAxisOrientation == 'left') {barCombinedDataLeft = barCombinedDataLeft.concat(group.getYRange(groupData)) ;} + else {barCombinedDataRight = barCombinedDataRight.concat(group.getYRange(groupData));} + } + else { + groupRanges[groupIds[i]] = group.getYRange(groupData,groupIds[i]); + } } } - this.setSelection(selection); - - this.body.emitter.emit('select', { - items: this.getSelection() - }); + // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. + BarGraphFunctions.getStackedBarYRange(barCombinedDataLeft , groupRanges, groupIds, '__barchartLeft' , 'left' ); + BarGraphFunctions.getStackedBarYRange(barCombinedDataRight, groupRanges, groupIds, '__barchartRight', 'right'); } }; + /** - * Calculate the time range of a list of items - * @param {Array.} itemsData - * @return {{min: Date, max: Date}} Returns the range of the provided items + * this sets the Y ranges for the Y axis. It also determines which of the axis should be shown or hidden. + * @param {Array} groupIds + * @param {Object} groupRanges * @private */ - ItemSet._getItemRange = function(itemsData) { - var max = null; - var min = null; - - itemsData.forEach(function (data) { - if (min == null || data.start < min) { - min = data.start; + LineGraph.prototype._updateYAxis = function (groupIds, groupRanges) { + var resized = false; + var yAxisLeftUsed = false; + var yAxisRightUsed = false; + var minLeft = 1e9, minRight = 1e9, maxLeft = -1e9, maxRight = -1e9, minVal, maxVal; + // if groups are present + if (groupIds.length > 0) { + // this is here to make sure that if there are no items in the axis but there are groups, that there is no infinite draw/redraw loop. + for (var i = 0; i < groupIds.length; i++) { + var group = this.groups[groupIds[i]]; + if (group && group.options.yAxisOrientation != 'right') { + yAxisLeftUsed = true; + minLeft = 0; + maxLeft = 0; + } + else if (group && group.options.yAxisOrientation) { + yAxisRightUsed = true; + minRight = 0; + maxRight = 0; + } } - if (data.end != undefined) { - if (max == null || data.end > max) { - max = data.end; + // if there are items: + for (var i = 0; i < groupIds.length; i++) { + if (groupRanges.hasOwnProperty(groupIds[i])) { + if (groupRanges[groupIds[i]].ignore !== true) { + minVal = groupRanges[groupIds[i]].min; + maxVal = groupRanges[groupIds[i]].max; + + if (groupRanges[groupIds[i]].yAxisOrientation != 'right') { + yAxisLeftUsed = true; + minLeft = minLeft > minVal ? minVal : minLeft; + maxLeft = maxLeft < maxVal ? maxVal : maxLeft; + } + else { + yAxisRightUsed = true; + minRight = minRight > minVal ? minVal : minRight; + maxRight = maxRight < maxVal ? maxVal : maxRight; + } + } } } - else { - if (max == null || data.start > max) { - max = data.start; - } + + if (yAxisLeftUsed == true) { + this.yAxisLeft.setRange(minLeft, maxLeft); } - }); + if (yAxisRightUsed == true) { + this.yAxisRight.setRange(minRight, maxRight); + } + } + resized = this._toggleAxisVisiblity(yAxisLeftUsed , this.yAxisLeft) || resized; + resized = this._toggleAxisVisiblity(yAxisRightUsed, this.yAxisRight) || resized; - return { - min: min, - max: max + if (yAxisRightUsed == true && yAxisLeftUsed == true) { + this.yAxisLeft.drawIcons = true; + this.yAxisRight.drawIcons = true; } + else { + this.yAxisLeft.drawIcons = false; + this.yAxisRight.drawIcons = false; + } + this.yAxisRight.master = !yAxisLeftUsed; + if (this.yAxisRight.master == false) { + if (yAxisRightUsed == true) {this.yAxisLeft.lineOffset = this.yAxisRight.width;} + else {this.yAxisLeft.lineOffset = 0;} + + resized = this.yAxisLeft.redraw() || resized; + this.yAxisRight.stepPixelsForced = this.yAxisLeft.stepPixels; + this.yAxisRight.zeroCrossing = this.yAxisLeft.zeroCrossing; + resized = this.yAxisRight.redraw() || resized; + } + else { + resized = this.yAxisRight.redraw() || resized; + } + + // clean the accumulated lists + if (groupIds.indexOf('__barchartLeft') != -1) { + groupIds.splice(groupIds.indexOf('__barchartLeft'),1); + } + if (groupIds.indexOf('__barchartRight') != -1) { + groupIds.splice(groupIds.indexOf('__barchartRight'),1); + } + + return resized; }; + /** - * Find an item from an event target: - * searches for the attribute 'timeline-item' in the event target's element tree - * @param {Event} event - * @return {Item | null} item + * This shows or hides the Y axis if needed. If there is a change, the changed event is emitted by the updateYAxis function + * + * @param {boolean} axisUsed + * @returns {boolean} + * @private + * @param axis */ - ItemSet.itemFromTarget = function(event) { - var target = event.target; - while (target) { - if (target.hasOwnProperty('timeline-item')) { - return target['timeline-item']; + LineGraph.prototype._toggleAxisVisiblity = function (axisUsed, axis) { + var changed = false; + if (axisUsed == false) { + if (axis.dom.frame.parentNode && axis.hidden == false) { + axis.hide() + changed = true; } - target = target.parentNode; } - - return null; + else { + if (!axis.dom.frame.parentNode && axis.hidden == true) { + axis.show(); + changed = true; + } + } + return changed; }; + /** - * Find the Group from an event target: - * searches for the attribute 'timeline-group' in the event target's element tree - * @param {Event} event - * @return {Group | null} group + * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the + * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for + * the yAxis. + * + * @param datapoints + * @returns {Array} + * @private */ - ItemSet.prototype.groupFromTarget = function(event) { - // TODO: cleanup when the new solution is stable (also on mobile) - //var target = event.target; - //while (target) { - // if (target.hasOwnProperty('timeline-group')) { - // return target['timeline-group']; - // } - // target = target.parentNode; - //} - // - - var clientY = event.gesture.center.clientY; - for (var i = 0; i < this.groupIds.length; i++) { - var groupId = this.groupIds[i]; - var group = this.groups[groupId]; - var foreground = group.dom.foreground; - var top = util.getAbsoluteTop(foreground); - if (clientY > top && clientY < top + foreground.offsetHeight) { - return group; - } + LineGraph.prototype._convertXcoordinates = function (datapoints) { + var extractedData = []; + var xValue, yValue; + var toScreen = this.body.util.toScreen; - if (this.options.orientation === 'top') { - if (i === this.groupIds.length - 1 && clientY > top) { - return group; - } - } - else { - if (i === 0 && clientY < top + foreground.offset) { - return group; - } - } + for (var i = 0; i < datapoints.length; i++) { + xValue = toScreen(datapoints[i].x) + this.props.width; + yValue = datapoints[i].y; + extractedData.push({x: xValue, y: yValue}); } - return null; + return extractedData; }; + /** - * Find the ItemSet from an event target: - * searches for the attribute 'timeline-itemset' in the event target's element tree - * @param {Event} event - * @return {ItemSet | null} item + * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the + * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for + * the yAxis. + * + * @param datapoints + * @param group + * @returns {Array} + * @private */ - ItemSet.itemSetFromTarget = function(event) { - var target = event.target; - while (target) { - if (target.hasOwnProperty('timeline-itemset')) { - return target['timeline-itemset']; - } - target = target.parentNode; + LineGraph.prototype._convertYcoordinates = function (datapoints, group) { + var extractedData = []; + var xValue, yValue; + var toScreen = this.body.util.toScreen; + var axis = this.yAxisLeft; + var svgHeight = Number(this.svg.style.height.replace('px','')); + if (group.options.yAxisOrientation == 'right') { + axis = this.yAxisRight; } - return null; + for (var i = 0; i < datapoints.length; i++) { + var labelValue; + //if (datapoints[i].label) { + // labelValue = datapoints[i].label; + //} + //else { + // labelValue = null; + //} + labelValue = datapoints[i].label ? datapoints[i].label : null; + xValue = toScreen(datapoints[i].x) + this.props.width; + yValue = Math.round(axis.convertValue(datapoints[i].y)); + extractedData.push({x: xValue, y: yValue, label:labelValue}); + } + + group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0))); + + return extractedData; }; - module.exports = ItemSet; + + module.exports = LineGraph; /***/ }, -/* 27 */ +/* 35 */ /***/ function(module, exports, __webpack_require__) { - var moment = __webpack_require__(2); - var DateUtil = __webpack_require__(24); var util = __webpack_require__(1); + var Component = __webpack_require__(25); + var TimeStep = __webpack_require__(19); + var DateUtil = __webpack_require__(15); + var moment = __webpack_require__(44); /** - * @constructor TimeStep - * The class TimeStep is an iterator for dates. You provide a start date and an - * end date. The class itself determines the best scale (step size) based on the - * provided start Date, end Date, and minimumStep. - * - * If minimumStep is provided, the step size is chosen as close as possible - * to the minimumStep but larger than minimumStep. If minimumStep is not - * provided, the scale is set to 1 DAY. - * The minimumStep should correspond with the onscreen size of about 6 characters - * - * Alternatively, you can set a scale by hand. - * After creation, you can initialize the class by executing first(). Then you - * can iterate from the start date to the end date via next(). You can check if - * the end date is reached with the function hasNext(). After each step, you can - * retrieve the current date via getCurrent(). - * The TimeStep has scales ranging from milliseconds, seconds, minutes, hours, - * days, to years. - * - * Version: 1.2 - * - * @param {Date} [start] The start date, for example new Date(2010, 9, 21) - * or new Date(2010, 9, 21, 23, 45, 00) - * @param {Date} [end] The end date - * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds + * A horizontal time axis + * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body + * @param {Object} [options] See TimeAxis.setOptions for the available + * options. + * @constructor TimeAxis + * @extends Component */ - function TimeStep(start, end, minimumStep, hiddenDates) { - // variables - this.current = new Date(); - this._start = new Date(); - this._end = new Date(); - - this.autoScale = true; - this.scale = 'day'; - this.step = 1; - - // initialize the range - this.setRange(start, end, minimumStep); + function TimeAxis (body, options) { + this.dom = { + foreground: null, + lines: [], + majorTexts: [], + minorTexts: [], + redundant: { + lines: [], + majorTexts: [], + minorTexts: [] + } + }; + this.props = { + range: { + start: 0, + end: 0, + minimumStep: 0 + }, + lineTop: 0 + }; - // hidden Dates options - this.switchedDay = false; - this.switchedMonth = false; - this.switchedYear = false; - this.hiddenDates = hiddenDates; - if (hiddenDates === undefined) { - this.hiddenDates = []; - } + this.defaultOptions = { + orientation: 'bottom', // supported: 'top', 'bottom' + // TODO: implement timeaxis orientations 'left' and 'right' + showMinorLabels: true, + showMajorLabels: true, + format: null, + timeAxis: null + }; + this.options = util.extend({}, this.defaultOptions); - this.format = TimeStep.FORMAT; // default formatting - } + this.body = body; - // Time formatting - TimeStep.FORMAT = { - minorLabels: { - millisecond:'SSS', - second: 's', - minute: 'HH:mm', - hour: 'HH:mm', - weekday: 'ddd D', - day: 'D', - month: 'MMM', - year: 'YYYY' - }, - majorLabels: { - millisecond:'HH:mm:ss', - second: 'D MMMM HH:mm', - minute: 'ddd D MMMM', - hour: 'ddd D MMMM', - weekday: 'MMMM YYYY', - day: 'MMMM YYYY', - month: 'YYYY', - year: '' - } - }; + // create the HTML DOM + this._create(); - /** - * Set custom formatting for the minor an major labels of the TimeStep. - * Both `minorLabels` and `majorLabels` are an Object with properties: - * 'millisecond, 'second, 'minute', 'hour', 'weekday, 'day, 'month, 'year'. - * @param {{minorLabels: Object, majorLabels: Object}} format - */ - TimeStep.prototype.setFormat = function (format) { - var defaultFormat = util.deepExtend({}, TimeStep.FORMAT); - this.format = util.deepExtend(defaultFormat, format); - }; + this.setOptions(options); + } + + TimeAxis.prototype = new Component(); /** - * Set a new range - * If minimumStep is provided, the step size is chosen as close as possible - * to the minimumStep but larger than minimumStep. If minimumStep is not - * provided, the scale is set to 1 DAY. - * The minimumStep should correspond with the onscreen size of about 6 characters - * @param {Date} [start] The start date and time. - * @param {Date} [end] The end date and time. - * @param {int} [minimumStep] Optional. Minimum step size in milliseconds + * Set options for the TimeAxis. + * Parameters will be merged in current options. + * @param {Object} options Available options: + * {string} [orientation] + * {boolean} [showMinorLabels] + * {boolean} [showMajorLabels] */ - TimeStep.prototype.setRange = function(start, end, minimumStep) { - if (!(start instanceof Date) || !(end instanceof Date)) { - throw "No legal start or end date in method setRange"; - } - - this._start = (start != undefined) ? new Date(start.valueOf()) : new Date(); - this._end = (end != undefined) ? new Date(end.valueOf()) : new Date(); + TimeAxis.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + util.selectiveExtend([ + 'orientation', + 'showMinorLabels', + 'showMajorLabels', + 'hiddenDates', + 'format', + 'timeAxis' + ], this.options, options); - if (this.autoScale) { - this.setMinimumStep(minimumStep); + // apply locale to moment.js + // TODO: not so nice, this is applied globally to moment.js + if ('locale' in options) { + if (typeof moment.locale === 'function') { + // moment.js 2.8.1+ + moment.locale(options.locale); + } + else { + moment.lang(options.locale); + } + } } }; /** - * Set the range iterator to the start date. + * Create the HTML DOM for the TimeAxis */ - TimeStep.prototype.first = function() { - this.current = new Date(this._start.valueOf()); - this.roundToMinor(); + TimeAxis.prototype._create = function() { + this.dom.foreground = document.createElement('div'); + this.dom.background = document.createElement('div'); + + this.dom.foreground.className = 'timeaxis foreground'; + this.dom.background.className = 'timeaxis background'; }; /** - * Round the current date to the first minor date value - * This must be executed once when the current date is set to start Date + * Destroy the TimeAxis */ - TimeStep.prototype.roundToMinor = function() { - // round to floor - // IMPORTANT: we have no breaks in this switch! (this is no bug) - // noinspection FallThroughInSwitchStatementJS - switch (this.scale) { - case 'year': - this.current.setFullYear(this.step * Math.floor(this.current.getFullYear() / this.step)); - this.current.setMonth(0); - case 'month': this.current.setDate(1); - case 'day': // intentional fall through - case 'weekday': this.current.setHours(0); - case 'hour': this.current.setMinutes(0); - case 'minute': this.current.setSeconds(0); - case 'second': this.current.setMilliseconds(0); - //case 'millisecond': // nothing to do for milliseconds + TimeAxis.prototype.destroy = function() { + // remove from DOM + if (this.dom.foreground.parentNode) { + this.dom.foreground.parentNode.removeChild(this.dom.foreground); } - - if (this.step != 1) { - // round down to the first minor value that is a multiple of the current step size - switch (this.scale) { - case 'millisecond': this.current.setMilliseconds(this.current.getMilliseconds() - this.current.getMilliseconds() % this.step); break; - case 'second': this.current.setSeconds(this.current.getSeconds() - this.current.getSeconds() % this.step); break; - case 'minute': this.current.setMinutes(this.current.getMinutes() - this.current.getMinutes() % this.step); break; - case 'hour': this.current.setHours(this.current.getHours() - this.current.getHours() % this.step); break; - case 'weekday': // intentional fall through - case 'day': this.current.setDate((this.current.getDate()-1) - (this.current.getDate()-1) % this.step + 1); break; - case 'month': this.current.setMonth(this.current.getMonth() - this.current.getMonth() % this.step); break; - case 'year': this.current.setFullYear(this.current.getFullYear() - this.current.getFullYear() % this.step); break; - default: break; - } + if (this.dom.background.parentNode) { + this.dom.background.parentNode.removeChild(this.dom.background); } + + this.body = null; }; /** - * Check if the there is a next step - * @return {boolean} true if the current date has not passed the end date + * Repaint the component + * @return {boolean} Returns true if the component is resized */ - TimeStep.prototype.hasNext = function () { - return (this.current.valueOf() <= this._end.valueOf()); + TimeAxis.prototype.redraw = function () { + var options = this.options; + var props = this.props; + var foreground = this.dom.foreground; + var background = this.dom.background; + + // determine the correct parent DOM element (depending on option orientation) + var parent = (options.orientation == 'top') ? this.body.dom.top : this.body.dom.bottom; + var parentChanged = (foreground.parentNode !== parent); + + // calculate character width and height + this._calculateCharSize(); + + // TODO: recalculate sizes only needed when parent is resized or options is changed + var orientation = this.options.orientation, + showMinorLabels = this.options.showMinorLabels, + showMajorLabels = this.options.showMajorLabels; + + // determine the width and height of the elemens for the axis + props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; + props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; + props.height = props.minorLabelHeight + props.majorLabelHeight; + props.width = foreground.offsetWidth; + + props.minorLineHeight = this.body.domProps.root.height - props.majorLabelHeight - + (options.orientation == 'top' ? this.body.domProps.bottom.height : this.body.domProps.top.height); + props.minorLineWidth = 1; // TODO: really calculate width + props.majorLineHeight = props.minorLineHeight + props.majorLabelHeight; + props.majorLineWidth = 1; // TODO: really calculate width + + // take foreground and background offline while updating (is almost twice as fast) + var foregroundNextSibling = foreground.nextSibling; + var backgroundNextSibling = background.nextSibling; + foreground.parentNode && foreground.parentNode.removeChild(foreground); + background.parentNode && background.parentNode.removeChild(background); + + foreground.style.height = this.props.height + 'px'; + + this._repaintLabels(); + + // put DOM online again (at the same place) + if (foregroundNextSibling) { + parent.insertBefore(foreground, foregroundNextSibling); + } + else { + parent.appendChild(foreground) + } + if (backgroundNextSibling) { + this.body.dom.backgroundVertical.insertBefore(background, backgroundNextSibling); + } + else { + this.body.dom.backgroundVertical.appendChild(background) + } + + return this._isResized() || parentChanged; }; /** - * Do the next step + * Repaint major and minor text labels and vertical grid lines + * @private */ - TimeStep.prototype.next = function() { - var prev = this.current.valueOf(); + TimeAxis.prototype._repaintLabels = function () { + var orientation = this.options.orientation; - // Two cases, needed to prevent issues with switching daylight savings - // (end of March and end of October) - if (this.current.getMonth() < 6) { - switch (this.scale) { - case 'millisecond': + // calculate range and step (step such that we have space for 7 characters per label) + var start = util.convert(this.body.range.start, 'Number'); + var end = util.convert(this.body.range.end, 'Number'); + var timeLabelsize = this.body.util.toTime((this.props.minorCharWidth || 10) * 7).valueOf(); + var minimumStep = timeLabelsize - DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this.body.range, timeLabelsize); + minimumStep -= this.body.util.toTime(0).valueOf(); - this.current = new Date(this.current.valueOf() + this.step); break; - case 'second': this.current = new Date(this.current.valueOf() + this.step * 1000); break; - case 'minute': this.current = new Date(this.current.valueOf() + this.step * 1000 * 60); break; - case 'hour': - this.current = new Date(this.current.valueOf() + this.step * 1000 * 60 * 60); - // in case of skipping an hour for daylight savings, adjust the hour again (else you get: 0h 5h 9h ... instead of 0h 4h 8h ...) - var h = this.current.getHours(); - this.current.setHours(h - (h % this.step)); - break; - case 'weekday': // intentional fall through - case 'day': this.current.setDate(this.current.getDate() + this.step); break; - case 'month': this.current.setMonth(this.current.getMonth() + this.step); break; - case 'year': this.current.setFullYear(this.current.getFullYear() + this.step); break; - default: break; - } + var step = new TimeStep(new Date(start), new Date(end), minimumStep, this.body.hiddenDates); + if (this.options.format) { + step.setFormat(this.options.format); } - else { - switch (this.scale) { - case 'millisecond': this.current = new Date(this.current.valueOf() + this.step); break; - case 'second': this.current.setSeconds(this.current.getSeconds() + this.step); break; - case 'minute': this.current.setMinutes(this.current.getMinutes() + this.step); break; - case 'hour': this.current.setHours(this.current.getHours() + this.step); break; - case 'weekday': // intentional fall through - case 'day': this.current.setDate(this.current.getDate() + this.step); break; - case 'month': this.current.setMonth(this.current.getMonth() + this.step); break; - case 'year': this.current.setFullYear(this.current.getFullYear() + this.step); break; - default: break; - } + if (this.options.timeAxis) { + step.setScale(this.options.timeAxis); } + this.step = step; - if (this.step != 1) { - // round down to the correct major value - switch (this.scale) { - case 'millisecond': if(this.current.getMilliseconds() < this.step) this.current.setMilliseconds(0); break; - case 'second': if(this.current.getSeconds() < this.step) this.current.setSeconds(0); break; - case 'minute': if(this.current.getMinutes() < this.step) this.current.setMinutes(0); break; - case 'hour': if(this.current.getHours() < this.step) this.current.setHours(0); break; - case 'weekday': // intentional fall through - case 'day': if(this.current.getDate() < this.step+1) this.current.setDate(1); break; - case 'month': if(this.current.getMonth() < this.step) this.current.setMonth(0); break; - case 'year': break; // nothing to do for year - default: break; + // Move all DOM elements to a "redundant" list, where they + // can be picked for re-use, and clear the lists with lines and texts. + // At the end of the function _repaintLabels, left over elements will be cleaned up + var dom = this.dom; + dom.redundant.lines = dom.lines; + dom.redundant.majorTexts = dom.majorTexts; + dom.redundant.minorTexts = dom.minorTexts; + dom.lines = []; + dom.majorTexts = []; + dom.minorTexts = []; + + var cur; + var x = 0; + var isMajor; + var xPrev = 0; + var width = 0; + var prevLine; + var xFirstMajorLabel = undefined; + var max = 0; + var className; + + step.first(); + while (step.hasNext() && max < 1000) { + max++; + + cur = step.getCurrent(); + isMajor = step.isMajor(); + className = step.getClassName(); + + xPrev = x; + x = this.body.util.toScreen(cur); + width = x - xPrev; + if (prevLine) { + prevLine.style.width = width + 'px'; } - } - // safety mechanism: if current time is still unchanged, move to the end - if (this.current.valueOf() == prev) { - this.current = new Date(this._end.valueOf()); + if (this.options.showMinorLabels) { + this._repaintMinorText(x, step.getLabelMinor(), orientation, className); + } + + if (isMajor && this.options.showMajorLabels) { + if (x > 0) { + if (xFirstMajorLabel == undefined) { + xFirstMajorLabel = x; + } + this._repaintMajorText(x, step.getLabelMajor(), orientation, className); + } + prevLine = this._repaintMajorLine(x, orientation, className); + } + else { + prevLine = this._repaintMinorLine(x, orientation, className); + } + + step.next(); } - DateUtil.stepOverHiddenDates(this, prev); - }; + // create a major label on the left when needed + if (this.options.showMajorLabels) { + var leftTime = this.body.util.toTime(0), + leftText = step.getLabelMajor(leftTime), + widthText = leftText.length * (this.props.majorCharWidth || 10) + 10; // upper bound estimation + if (xFirstMajorLabel == undefined || widthText < xFirstMajorLabel) { + this._repaintMajorText(0, leftText, orientation, className); + } + } - /** - * Get the current datetime - * @return {Date} current The current date - */ - TimeStep.prototype.getCurrent = function() { - return this.current; + // Cleanup leftover DOM elements from the redundant list + util.forEach(this.dom.redundant, function (arr) { + while (arr.length) { + var elem = arr.pop(); + if (elem && elem.parentNode) { + elem.parentNode.removeChild(elem); + } + } + }); }; /** - * Set a custom scale. Autoscaling will be disabled. - * For example setScale('minute', 5) will result - * in minor steps of 5 minutes, and major steps of an hour. - * - * @param {{scale: string, step: number}} params - * An object containing two properties: - * - A string 'scale'. Choose from 'millisecond', 'second', - * 'minute', 'hour', 'weekday, 'day, 'month, 'year'. - * - A number 'step'. A step size, by default 1. - * Choose for example 1, 2, 5, or 10. + * Create a minor label for the axis at position x + * @param {Number} x + * @param {String} text + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @private */ - TimeStep.prototype.setScale = function(params) { - if (params && typeof params.scale == 'string') { - this.scale = params.scale; - this.step = params.step > 0 ? params.step : 1; - this.autoScale = false; + TimeAxis.prototype._repaintMinorText = function (x, text, orientation, className) { + // reuse redundant label + var label = this.dom.redundant.minorTexts.shift(); + + if (!label) { + // create new label + var content = document.createTextNode(''); + label = document.createElement('div'); + label.appendChild(content); + this.dom.foreground.appendChild(label); } + this.dom.minorTexts.push(label); + + label.childNodes[0].nodeValue = text; + + label.style.top = (orientation == 'top') ? (this.props.majorLabelHeight + 'px') : '0'; + label.style.left = x + 'px'; + label.className = 'text minor ' + className; + //label.title = title; // TODO: this is a heavy operation }; /** - * Enable or disable autoscaling - * @param {boolean} enable If true, autoascaling is set true + * Create a Major label for the axis at position x + * @param {Number} x + * @param {String} text + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @private */ - TimeStep.prototype.setAutoScale = function (enable) { - this.autoScale = enable; - }; + TimeAxis.prototype._repaintMajorText = function (x, text, orientation, className) { + // reuse redundant label + var label = this.dom.redundant.majorTexts.shift(); + + if (!label) { + // create label + var content = document.createTextNode(text); + label = document.createElement('div'); + label.appendChild(content); + this.dom.foreground.appendChild(label); + } + this.dom.majorTexts.push(label); + + label.childNodes[0].nodeValue = text; + label.className = 'text major ' + className; + //label.title = title; // TODO: this is a heavy operation + label.style.top = (orientation == 'top') ? '0' : (this.props.minorLabelHeight + 'px'); + label.style.left = x + 'px'; + }; /** - * Automatically determine the scale that bests fits the provided minimum step - * @param {Number} [minimumStep] The minimum step size in milliseconds + * Create a minor line for the axis at position x + * @param {Number} x + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @return {Element} Returns the created line + * @private */ - TimeStep.prototype.setMinimumStep = function(minimumStep) { - if (minimumStep == undefined) { - return; + TimeAxis.prototype._repaintMinorLine = function (x, orientation, className) { + // reuse redundant line + var line = this.dom.redundant.lines.shift(); + if (!line) { + // create vertical line + line = document.createElement('div'); + this.dom.background.appendChild(line); } + this.dom.lines.push(line); - //var b = asc + ds; + var props = this.props; + if (orientation == 'top') { + line.style.top = props.majorLabelHeight + 'px'; + } + else { + line.style.top = this.body.domProps.top.height + 'px'; + } + line.style.height = props.minorLineHeight + 'px'; + line.style.left = (x - props.minorLineWidth / 2) + 'px'; - var stepYear = (1000 * 60 * 60 * 24 * 30 * 12); - var stepMonth = (1000 * 60 * 60 * 24 * 30); - var stepDay = (1000 * 60 * 60 * 24); - var stepHour = (1000 * 60 * 60); - var stepMinute = (1000 * 60); - var stepSecond = (1000); - var stepMillisecond= (1); + line.className = 'grid vertical minor ' + className; - // find the smallest step that is larger than the provided minimumStep - if (stepYear*1000 > minimumStep) {this.scale = 'year'; this.step = 1000;} - if (stepYear*500 > minimumStep) {this.scale = 'year'; this.step = 500;} - if (stepYear*100 > minimumStep) {this.scale = 'year'; this.step = 100;} - if (stepYear*50 > minimumStep) {this.scale = 'year'; this.step = 50;} - if (stepYear*10 > minimumStep) {this.scale = 'year'; this.step = 10;} - if (stepYear*5 > minimumStep) {this.scale = 'year'; this.step = 5;} - if (stepYear > minimumStep) {this.scale = 'year'; this.step = 1;} - if (stepMonth*3 > minimumStep) {this.scale = 'month'; this.step = 3;} - if (stepMonth > minimumStep) {this.scale = 'month'; this.step = 1;} - if (stepDay*5 > minimumStep) {this.scale = 'day'; this.step = 5;} - if (stepDay*2 > minimumStep) {this.scale = 'day'; this.step = 2;} - if (stepDay > minimumStep) {this.scale = 'day'; this.step = 1;} - if (stepDay/2 > minimumStep) {this.scale = 'weekday'; this.step = 1;} - if (stepHour*4 > minimumStep) {this.scale = 'hour'; this.step = 4;} - if (stepHour > minimumStep) {this.scale = 'hour'; this.step = 1;} - if (stepMinute*15 > minimumStep) {this.scale = 'minute'; this.step = 15;} - if (stepMinute*10 > minimumStep) {this.scale = 'minute'; this.step = 10;} - if (stepMinute*5 > minimumStep) {this.scale = 'minute'; this.step = 5;} - if (stepMinute > minimumStep) {this.scale = 'minute'; this.step = 1;} - if (stepSecond*15 > minimumStep) {this.scale = 'second'; this.step = 15;} - if (stepSecond*10 > minimumStep) {this.scale = 'second'; this.step = 10;} - if (stepSecond*5 > minimumStep) {this.scale = 'second'; this.step = 5;} - if (stepSecond > minimumStep) {this.scale = 'second'; this.step = 1;} - if (stepMillisecond*200 > minimumStep) {this.scale = 'millisecond'; this.step = 200;} - if (stepMillisecond*100 > minimumStep) {this.scale = 'millisecond'; this.step = 100;} - if (stepMillisecond*50 > minimumStep) {this.scale = 'millisecond'; this.step = 50;} - if (stepMillisecond*10 > minimumStep) {this.scale = 'millisecond'; this.step = 10;} - if (stepMillisecond*5 > minimumStep) {this.scale = 'millisecond'; this.step = 5;} - if (stepMillisecond > minimumStep) {this.scale = 'millisecond'; this.step = 1;} + return line; }; /** - * Snap a date to a rounded value. - * The snap intervals are dependent on the current scale and step. - * Static function - * @param {Date} date the date to be snapped. - * @param {string} scale Current scale, can be 'millisecond', 'second', - * 'minute', 'hour', 'weekday, 'day, 'month, 'year'. - * @param {number} step Current step (1, 2, 4, 5, ... - * @return {Date} snappedDate + * Create a Major line for the axis at position x + * @param {Number} x + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @return {Element} Returns the created line + * @private */ - TimeStep.snap = function(date, scale, step) { - var clone = new Date(date.valueOf()); - - if (scale == 'year') { - var year = clone.getFullYear() + Math.round(clone.getMonth() / 12); - clone.setFullYear(Math.round(year / step) * step); - clone.setMonth(0); - clone.setDate(0); - clone.setHours(0); - clone.setMinutes(0); - clone.setSeconds(0); - clone.setMilliseconds(0); - } - else if (scale == 'month') { - if (clone.getDate() > 15) { - clone.setDate(1); - clone.setMonth(clone.getMonth() + 1); - // important: first set Date to 1, after that change the month. - } - else { - clone.setDate(1); - } - - clone.setHours(0); - clone.setMinutes(0); - clone.setSeconds(0); - clone.setMilliseconds(0); - } - else if (scale == 'day') { - //noinspection FallthroughInSwitchStatementJS - switch (step) { - case 5: - case 2: - clone.setHours(Math.round(clone.getHours() / 24) * 24); break; - default: - clone.setHours(Math.round(clone.getHours() / 12) * 12); break; - } - clone.setMinutes(0); - clone.setSeconds(0); - clone.setMilliseconds(0); - } - else if (scale == 'weekday') { - //noinspection FallthroughInSwitchStatementJS - switch (step) { - case 5: - case 2: - clone.setHours(Math.round(clone.getHours() / 12) * 12); break; - default: - clone.setHours(Math.round(clone.getHours() / 6) * 6); break; - } - clone.setMinutes(0); - clone.setSeconds(0); - clone.setMilliseconds(0); - } - else if (scale == 'hour') { - switch (step) { - case 4: - clone.setMinutes(Math.round(clone.getMinutes() / 60) * 60); break; - default: - clone.setMinutes(Math.round(clone.getMinutes() / 30) * 30); break; - } - clone.setSeconds(0); - clone.setMilliseconds(0); - } else if (scale == 'minute') { - //noinspection FallthroughInSwitchStatementJS - switch (step) { - case 15: - case 10: - clone.setMinutes(Math.round(clone.getMinutes() / 5) * 5); - clone.setSeconds(0); - break; - case 5: - clone.setSeconds(Math.round(clone.getSeconds() / 60) * 60); break; - default: - clone.setSeconds(Math.round(clone.getSeconds() / 30) * 30); break; - } - clone.setMilliseconds(0); - } - else if (scale == 'second') { - //noinspection FallthroughInSwitchStatementJS - switch (step) { - case 15: - case 10: - clone.setSeconds(Math.round(clone.getSeconds() / 5) * 5); - clone.setMilliseconds(0); - break; - case 5: - clone.setMilliseconds(Math.round(clone.getMilliseconds() / 1000) * 1000); break; - default: - clone.setMilliseconds(Math.round(clone.getMilliseconds() / 500) * 500); break; - } - } - else if (scale == 'millisecond') { - var _step = step > 5 ? step / 2 : 1; - clone.setMilliseconds(Math.round(clone.getMilliseconds() / _step) * _step); + TimeAxis.prototype._repaintMajorLine = function (x, orientation, className) { + // reuse redundant line + var line = this.dom.redundant.lines.shift(); + if (!line) { + // create vertical line + line = document.createElement('div'); + this.dom.background.appendChild(line); } - - return clone; - }; + this.dom.lines.push(line); - /** - * Check if the current value is a major value (for example when the step - * is DAY, a major value is each first day of the MONTH) - * @return {boolean} true if current date is major, else false. - */ - TimeStep.prototype.isMajor = function() { - if (this.switchedYear == true) { - this.switchedYear = false; - switch (this.scale) { - case 'year': - case 'month': - case 'weekday': - case 'day': - case 'hour': - case 'minute': - case 'second': - case 'millisecond': - return true; - default: - return false; - } - } - else if (this.switchedMonth == true) { - this.switchedMonth = false; - switch (this.scale) { - case 'weekday': - case 'day': - case 'hour': - case 'minute': - case 'second': - case 'millisecond': - return true; - default: - return false; - } - } - else if (this.switchedDay == true) { - this.switchedDay = false; - switch (this.scale) { - case 'millisecond': - case 'second': - case 'minute': - case 'hour': - return true; - default: - return false; - } + var props = this.props; + if (orientation == 'top') { + line.style.top = '0'; } - - switch (this.scale) { - case 'millisecond': - return (this.current.getMilliseconds() == 0); - case 'second': - return (this.current.getSeconds() == 0); - case 'minute': - return (this.current.getHours() == 0) && (this.current.getMinutes() == 0); - case 'hour': - return (this.current.getHours() == 0); - case 'weekday': // intentional fall through - case 'day': - return (this.current.getDate() == 1); - case 'month': - return (this.current.getMonth() == 0); - case 'year': - return false; - default: - return false; + else { + line.style.top = this.body.domProps.top.height + 'px'; } - }; - + line.style.left = (x - props.majorLineWidth / 2) + 'px'; + line.style.height = props.majorLineHeight + 'px'; - /** - * Returns formatted text for the minor axislabel, depending on the current - * date and the scale. For example when scale is MINUTE, the current time is - * formatted as "hh:mm". - * @param {Date} [date] custom date. if not provided, current date is taken - */ - TimeStep.prototype.getLabelMinor = function(date) { - if (date == undefined) { - date = this.current; - } + line.className = 'grid vertical major ' + className; - var format = this.format.minorLabels[this.scale]; - return (format && format.length > 0) ? moment(date).format(format) : ''; + return line; }; /** - * Returns formatted text for the major axis label, depending on the current - * date and the scale. For example when scale is MINUTE, the major scale is - * hours, and the hour will be formatted as "hh". - * @param {Date} [date] custom date. if not provided, current date is taken + * Determine the size of text on the axis (both major and minor axis). + * The size is calculated only once and then cached in this.props. + * @private */ - TimeStep.prototype.getLabelMajor = function(date) { - if (date == undefined) { - date = this.current; - } - - var format = this.format.majorLabels[this.scale]; - return (format && format.length > 0) ? moment(date).format(format) : ''; - }; - - TimeStep.prototype.getClassName = function() { - var m = moment(this.current); - var date = m.locale ? m.locale('en') : m.lang('en'); // old versions of moment have .lang() function - var step = this.step; - - function even(value) { - return (value / step % 2 == 0) ? ' even' : ' odd'; - } - - function today(date) { - if (date.isSame(new Date(), 'day')) { - return ' today'; - } - if (date.isSame(moment().add(1, 'day'), 'day')) { - return ' tomorrow'; - } - if (date.isSame(moment().add(-1, 'day'), 'day')) { - return ' yesterday'; - } - return ''; - } - - function currentWeek(date) { - return date.isSame(new Date(), 'week') ? ' current-week' : ''; - } + TimeAxis.prototype._calculateCharSize = function () { + // Note: We calculate char size with every redraw. Size may change, for + // example when any of the timelines parents had display:none for example. - function currentMonth(date) { - return date.isSame(new Date(), 'month') ? ' current-month' : ''; - } + // determine the char width and height on the minor axis + if (!this.dom.measureCharMinor) { + this.dom.measureCharMinor = document.createElement('DIV'); + this.dom.measureCharMinor.className = 'text minor measure'; + this.dom.measureCharMinor.style.position = 'absolute'; - function currentYear(date) { - return date.isSame(new Date(), 'year') ? ' current-year' : ''; + this.dom.measureCharMinor.appendChild(document.createTextNode('0')); + this.dom.foreground.appendChild(this.dom.measureCharMinor); } + this.props.minorCharHeight = this.dom.measureCharMinor.clientHeight; + this.props.minorCharWidth = this.dom.measureCharMinor.clientWidth; - switch (this.scale) { - case 'millisecond': - return even(date.milliseconds()).trim(); - - case 'second': - return even(date.seconds()).trim(); - - case 'minute': - return even(date.minutes()).trim(); - - case 'hour': - var hours = date.hours(); - if (this.step == 4) { - hours = hours + '-' + (hours + 4); - } - return hours + 'h' + today(date) + even(date.hours()); - - case 'weekday': - return date.format('dddd').toLowerCase() + - today(date) + currentWeek(date) + even(date.date()); - - case 'day': - var day = date.date(); - var month = date.format('MMMM').toLowerCase(); - return 'day' + day + ' ' + month + currentMonth(date) + even(day - 1); - - case 'month': - return date.format('MMMM').toLowerCase() + - currentMonth(date) + even(date.month()); - - case 'year': - var year = date.year(); - return 'year' + year + currentYear(date)+ even(year); + // determine the char width and height on the major axis + if (!this.dom.measureCharMajor) { + this.dom.measureCharMajor = document.createElement('DIV'); + this.dom.measureCharMajor.className = 'text major measure'; + this.dom.measureCharMajor.style.position = 'absolute'; - default: - return ''; + this.dom.measureCharMajor.appendChild(document.createTextNode('0')); + this.dom.foreground.appendChild(this.dom.measureCharMajor); } + this.props.majorCharHeight = this.dom.measureCharMajor.clientHeight; + this.props.majorCharWidth = this.dom.measureCharMajor.clientWidth; }; - module.exports = TimeStep; + module.exports = TimeAxis; /***/ }, -/* 28 */ +/* 36 */ /***/ function(module, exports, __webpack_require__) { + var Emitter = __webpack_require__(56); + var Hammer = __webpack_require__(45); + var keycharm = __webpack_require__(57); var util = __webpack_require__(1); - var stack = __webpack_require__(29); - var RangeItem = __webpack_require__(30); - - /** - * @constructor Group - * @param {Number | String} groupId - * @param {Object} data - * @param {ItemSet} itemSet - */ - function Group (groupId, data, itemSet) { - this.groupId = groupId; - this.subgroups = {}; - this.subgroupIndex = 0; - this.subgroupOrderer = data && data.subgroupOrder; - this.itemSet = itemSet; - - this.dom = {}; - this.props = { - label: { - width: 0, - height: 0 - } - }; - this.className = null; - - this.items = {}; // items filtered by groupId of this group - this.visibleItems = []; // items currently visible in window - this.orderedItems = { - byStart: [], - byEnd: [] - }; - this.checkRangedItems = false; // needed to refresh the ranged items if the window is programatically changed with NO overlap. - var me = this; - this.itemSet.body.emitter.on("checkRangedItems", function () { - me.checkRangedItems = true; - }) - - this._create(); - - this.setData(data); - } - - /** - * Create DOM elements for the group - * @private - */ - Group.prototype._create = function() { - var label = document.createElement('div'); - label.className = 'vlabel'; - this.dom.label = label; - - var inner = document.createElement('div'); - inner.className = 'inner'; - label.appendChild(inner); - this.dom.inner = inner; - - var foreground = document.createElement('div'); - foreground.className = 'group'; - foreground['timeline-group'] = this; - this.dom.foreground = foreground; - - this.dom.background = document.createElement('div'); - this.dom.background.className = 'group'; - - this.dom.axis = document.createElement('div'); - this.dom.axis.className = 'group'; - - // create a hidden marker to detect when the Timelines container is attached - // to the DOM, or the style of a parent of the Timeline is changed from - // display:none is changed to visible. - this.dom.marker = document.createElement('div'); - this.dom.marker.style.visibility = 'hidden'; // TODO: ask jos why this is not none? - this.dom.marker.innerHTML = '?'; - this.dom.background.appendChild(this.dom.marker); - }; - - /** - * Set the group data for this group - * @param {Object} data Group data, can contain properties content and className - */ - Group.prototype.setData = function(data) { - // update contents - var content = data && data.content; - if (content instanceof Element) { - this.dom.inner.appendChild(content); - } - else if (content !== undefined && content !== null) { - this.dom.inner.innerHTML = content; - } - else { - this.dom.inner.innerHTML = this.groupId || ''; // groupId can be null - } - - // update title - this.dom.label.title = data && data.title || ''; - - if (!this.dom.inner.firstChild) { - util.addClassName(this.dom.inner, 'hidden'); - } - else { - util.removeClassName(this.dom.inner, 'hidden'); - } - - // update className - var className = data && data.className || null; - if (className != this.className) { - if (this.className) { - util.removeClassName(this.dom.label, this.className); - util.removeClassName(this.dom.foreground, this.className); - util.removeClassName(this.dom.background, this.className); - util.removeClassName(this.dom.axis, this.className); - } - util.addClassName(this.dom.label, className); - util.addClassName(this.dom.foreground, className); - util.addClassName(this.dom.background, className); - util.addClassName(this.dom.axis, className); - this.className = className; - } - - // update style - if (this.style) { - util.removeCssText(this.dom.label, this.style); - this.style = null; - } - if (data && data.style) { - util.addCssText(this.dom.label, data.style); - this.style = data.style; - } - }; - - /** - * Get the width of the group label - * @return {number} width - */ - Group.prototype.getLabelWidth = function() { - return this.props.label.width; - }; + var hammerUtil = __webpack_require__(47); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var dotparser = __webpack_require__(42); + var gephiParser = __webpack_require__(43); + var Groups = __webpack_require__(38); + var Images = __webpack_require__(39); + var Node = __webpack_require__(40); + var Edge = __webpack_require__(37); + var Popup = __webpack_require__(41); + var MixinLoader = __webpack_require__(52); + var Activator = __webpack_require__(53); + var locales = __webpack_require__(54); + // Load custom shapes into CanvasRenderingContext2D + __webpack_require__(55); /** - * Repaint this group - * @param {{start: number, end: number}} range - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * @param {boolean} [restack=false] Force restacking of all items - * @return {boolean} Returns true if the group is resized + * @constructor Network + * Create a network visualization, displaying nodes and edges. + * + * @param {Element} container The DOM element in which the Network will + * be created. Normally a div element. + * @param {Object} data An object containing parameters + * {Array} nodes + * {Array} edges + * @param {Object} options Options */ - Group.prototype.redraw = function(range, margin, restack) { - var resized = false; - - this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - - // force recalculation of the height of the items when the marker height changed - // (due to the Timeline being attached to the DOM or changed from display:none to visible) - var markerHeight = this.dom.marker.clientHeight; - if (markerHeight != this.lastMarkerHeight) { - this.lastMarkerHeight = markerHeight; - - util.forEach(this.items, function (item) { - item.dirty = true; - if (item.displayed) item.redraw(); - }); - - restack = true; - } - - // reposition visible items vertically - if (this.itemSet.options.stack) { // TODO: ugly way to access options... - stack.stack(this.visibleItems, margin, restack); - } - else { // no stacking - stack.nostack(this.visibleItems, margin, this.subgroups); + function Network (container, data, options) { + if (!(this instanceof Network)) { + throw new SyntaxError('Constructor must be called with the new operator'); } - // recalculate the height of the group - var height = this._calculateHeight(margin); + this._determineBrowserMethod(); + this._initializeMixinLoaders(); - // calculate actual size and position - var foreground = this.dom.foreground; - this.top = foreground.offsetTop; - this.left = foreground.offsetLeft; - this.width = foreground.offsetWidth; - resized = util.updateProperty(this, 'height', height) || resized; + // create variables and set default values + this.containerElement = container; - // recalculate size of label - resized = util.updateProperty(this.props.label, 'width', this.dom.inner.clientWidth) || resized; - resized = util.updateProperty(this.props.label, 'height', this.dom.inner.clientHeight) || resized; + // render and calculation settings + this.renderRefreshRate = 60; // hz (fps) + this.renderTimestep = 1000 / this.renderRefreshRate; // ms -- saves calculation later on + this.renderTime = 0; // measured time it takes to render a frame + this.physicsTime = 0; // measured time it takes to render a frame + this.runDoubleSpeed = false; + this.physicsDiscreteStepsize = 0.50; // discrete stepsize of the simulation - // apply new height - this.dom.background.style.height = height + 'px'; - this.dom.foreground.style.height = height + 'px'; - this.dom.label.style.height = height + 'px'; + this.initializing = true; - // update vertical position of items after they are re-stacked and the height of the group is calculated - for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { - var item = this.visibleItems[i]; - item.repositionY(margin); - } + this.triggerFunctions = {add:null,edit:null,editEdge:null,connect:null,del:null}; - return resized; - }; - - /** - * recalculate the height of the group - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * @returns {number} Returns the height - * @private - */ - Group.prototype._calculateHeight = function (margin) { - // recalculate the height of the group - var height; - var visibleItems = this.visibleItems; - //var visibleSubgroups = []; - //this.visibleSubgroups = 0; - this.resetSubgroups(); - var me = this; - if (visibleItems.length) { - var min = visibleItems[0].top; - var max = visibleItems[0].top + visibleItems[0].height; - util.forEach(visibleItems, function (item) { - min = Math.min(min, item.top); - max = Math.max(max, (item.top + item.height)); - if (item.data.subgroup !== undefined) { - me.subgroups[item.data.subgroup].height = Math.max(me.subgroups[item.data.subgroup].height,item.height); - me.subgroups[item.data.subgroup].visible = true; - //if (visibleSubgroups.indexOf(item.data.subgroup) == -1){ - // visibleSubgroups.push(item.data.subgroup); - // me.visibleSubgroups += 1; - //} - } - }); - if (min > margin.axis) { - // there is an empty gap between the lowest item and the axis - var offset = min - margin.axis; - max -= offset; - util.forEach(visibleItems, function (item) { - item.top -= offset; - }); + var customScalingFunction = function (min,max,total,value) { + if (max == min) { + return 0.5; } - height = max + margin.item.vertical / 2; - } - else { - height = margin.axis + margin.item.vertical; - } - height = Math.max(height, this.props.label.height); + else { + var scale = 1 / (max - min); + return Math.max(0,(value - min)*scale); + } + }; + // set constant values + this.defaultOptions = { + nodes: { + customScalingFunction: customScalingFunction, + mass: 1, + radiusMin: 10, + radiusMax: 30, + radius: 10, + shape: 'ellipse', + image: undefined, + widthMin: 16, // px + widthMax: 64, // px + fontColor: 'black', + fontSize: 14, // px + fontFace: 'verdana', + fontFill: undefined, + fontStrokeWidth: 0, // px + fontStrokeColor: '#ffffff', + fontDrawThreshold: 3, + scaleFontWithValue: false, + fontSizeMin: 14, + fontSizeMax: 30, + fontSizeMaxVisible: 30, + level: -1, + color: { + border: '#2B7CE9', + background: '#97C2FC', + highlight: { + border: '#2B7CE9', + background: '#D2E5FF' + }, + hover: { + border: '#2B7CE9', + background: '#D2E5FF' + } + }, + group: undefined, + borderWidth: 1, + borderWidthSelected: undefined + }, + edges: { + customScalingFunction: customScalingFunction, + widthMin: 1, // + widthMax: 15,// + width: 1, + widthSelectionMultiplier: 2, + hoverWidth: 1.5, + style: 'line', + color: { + color:'#848484', + highlight:'#848484', + hover: '#848484' + }, + opacity:1.0, + fontColor: '#343434', + fontSize: 14, // px + fontFace: 'arial', + fontFill: 'white', + fontStrokeWidth: 0, // px + fontStrokeColor: 'white', + labelAlignment:'horizontal', + arrowScaleFactor: 1, + dash: { + length: 10, + gap: 5, + altLength: undefined + }, + inheritColor: "from", // to, from, false, true (== from) + useGradients: false // release in 4.0 + }, + configurePhysics:false, + physics: { + barnesHut: { + enabled: true, + thetaInverted: 1 / 0.5, // inverted to save time during calculation + gravitationalConstant: -2000, + centralGravity: 0.3, + springLength: 95, + springConstant: 0.04, + damping: 0.09 + }, + repulsion: { + centralGravity: 0.0, + springLength: 200, + springConstant: 0.05, + nodeDistance: 100, + damping: 0.09 + }, + hierarchicalRepulsion: { + enabled: false, + centralGravity: 0.0, + springLength: 100, + springConstant: 0.01, + nodeDistance: 150, + damping: 0.09 + }, + damping: null, + centralGravity: null, + springLength: null, + springConstant: null + }, + clustering: { // Per Node in Cluster = PNiC + enabled: false, // (Boolean) | global on/off switch for clustering. + initialMaxNodes: 100, // (# nodes) | if the initial amount of nodes is larger than this, we cluster until the total number is less than this threshold. + clusterThreshold:500, // (# nodes) | during calculate forces, we check if the total number of nodes is larger than this. If it is, cluster until reduced to reduceToNodes + reduceToNodes:300, // (# nodes) | during calculate forces, we check if the total number of nodes is larger than clusterThreshold. If it is, cluster until reduced to this + chainThreshold: 0.4, // (% of all drawn nodes)| maximum percentage of allowed chainnodes (long strings of connected nodes) within all nodes. (lower means less chains). + clusterEdgeThreshold: 20, // (px) | edge length threshold. if smaller, this node is clustered. + sectorThreshold: 100, // (# nodes in cluster) | cluster size threshold. If larger, expanding in own sector. + screenSizeThreshold: 0.2, // (% of canvas) | relative size threshold. If the width or height of a clusternode takes up this much of the screen, decluster node. + fontSizeMultiplier: 4.0, // (px PNiC) | how much the cluster font size grows per node in cluster (in px). + maxFontSize: 1000, + forceAmplification: 0.1, // (multiplier PNiC) | factor of increase fo the repulsion force of a cluster (per node in cluster). + distanceAmplification: 0.1, // (multiplier PNiC) | factor how much the repulsion distance of a cluster increases (per node in cluster). + edgeGrowth: 20, // (px PNiC) | amount of clusterSize connected to the edge is multiplied with this and added to edgeLength. + nodeScaling: {width: 1, // (px PNiC) | growth of the width per node in cluster. + height: 1, // (px PNiC) | growth of the height per node in cluster. + radius: 1}, // (px PNiC) | growth of the radius per node in cluster. + maxNodeSizeIncrements: 600, // (# increments) | max growth of the width per node in cluster. + activeAreaBoxSize: 80, // (px) | box area around the curser where clusters are popped open. + clusterLevelDifference: 2, // used for normalization of the cluster levels + clusterByZoom: true // enable clustering through zooming in and out + }, + navigation: { + enabled: false + }, + keyboard: { + enabled: false, + speed: {x: 10, y: 10, zoom: 0.02}, + bindToWindow: true + }, + dataManipulation: { + enabled: false, + initiallyVisible: false + }, + hierarchicalLayout: { + enabled:false, + levelSeparation: 150, + nodeSpacing: 100, + direction: "UD", // UD, DU, LR, RL + layout: "hubsize" // hubsize, directed + }, + freezeForStabilization: false, + smoothCurves: { + enabled: true, + dynamic: true, + type: "continuous", + roundness: 0.5 + }, + maxVelocity: 50, + minVelocity: 0.1, // px/s + stabilize: true, // stabilize before displaying the network + stabilizationIterations: 1000, // maximum number of iteration to stabilize + zoomExtentOnStabilize: true, + locale: 'en', + locales: locales, + tooltip: { + delay: 300, + fontColor: 'black', + fontSize: 14, // px + fontFace: 'verdana', + color: { + border: '#666', + background: '#FFFFC6' + } + }, + dragNetwork: true, + dragNodes: true, + zoomable: true, + hover: false, + hideEdgesOnDrag: false, + hideNodesOnDrag: false, + width : '100%', + height : '100%', + selectable: true, + useDefaultGroups: true + }; + this.constants = util.extend({}, this.defaultOptions); + this.pixelRatio = 1; + + + this.hoverObj = {nodes:{},edges:{}}; + this.controlNodesActive = false; + this.navigationHammers = []; + this.manipulationHammers = []; - return height; - }; + // animation properties + this.animationSpeed = 1/this.renderRefreshRate; + this.animationEasingFunction = "easeInOutQuint"; + this.animating = false; + this.easingTime = 0; + this.sourceScale = 0; + this.targetScale = 0; + this.sourceTranslation = 0; + this.targetTranslation = 0; + this.lockedOnNodeId = null; + this.lockedOnNodeOffset = null; + this.touchTime = 0; + this.redrawRequested = false; - /** - * Show this group: attach to the DOM - */ - Group.prototype.show = function() { - if (!this.dom.label.parentNode) { - this.itemSet.dom.labelSet.appendChild(this.dom.label); - } + // Node variables + var network = this; + this.groups = new Groups(); // object with groups + this.images = new Images(); // object with images + this.images.setOnloadCallback(function (status) { + network._requestRedraw(); + }); - if (!this.dom.foreground.parentNode) { - this.itemSet.dom.foreground.appendChild(this.dom.foreground); - } + // keyboard navigation variables + this.xIncrement = 0; + this.yIncrement = 0; + this.zoomIncrement = 0; - if (!this.dom.background.parentNode) { - this.itemSet.dom.background.appendChild(this.dom.background); - } + // loading all the mixins: + // load the force calculation functions, grouped under the physics system. + this._loadPhysicsSystem(); + // create a frame and canvas + this._create(); + // load the sector system. (mandatory, fully integrated with Network) + this._loadSectorSystem(); + // load the cluster system. (mandatory, even when not using the cluster system, there are function calls to it) + this._loadClusterSystem(); + // load the selection system. (mandatory, required by Network) + this._loadSelectionSystem(); + // load the selection system. (mandatory, required by Network) + this._loadHierarchySystem(); - if (!this.dom.axis.parentNode) { - this.itemSet.dom.axis.appendChild(this.dom.axis); - } - }; - /** - * Hide this group: remove from the DOM - */ - Group.prototype.hide = function() { - var label = this.dom.label; - if (label.parentNode) { - label.parentNode.removeChild(label); - } + // apply options + this._setTranslation(this.frame.clientWidth / 2, this.frame.clientHeight / 2); + this._setScale(1); + this.setOptions(options); - var foreground = this.dom.foreground; - if (foreground.parentNode) { - foreground.parentNode.removeChild(foreground); - } + // other vars + this.freezeSimulationEnabled = false;// freeze the simulation + this.cachedFunctions = {}; + this.startedStabilization = false; + this.stabilized = false; + this.stabilizationIterations = null; + this.draggingNodes = false; - var background = this.dom.background; - if (background.parentNode) { - background.parentNode.removeChild(background); - } + // containers for nodes and edges + this.calculationNodes = {}; + this.calculationNodeIndices = []; + this.nodeIndices = []; // array with all the indices of the nodes. Used to speed up forces calculation + this.nodes = {}; // object with Node objects + this.edges = {}; // object with Edge objects - var axis = this.dom.axis; - if (axis.parentNode) { - axis.parentNode.removeChild(axis); - } - }; + // position and scale variables and objects + this.canvasTopLeft = {"x": 0,"y": 0}; // coordinates of the top left of the canvas. they will be set during _redraw. + this.canvasBottomRight = {"x": 0,"y": 0}; // coordinates of the bottom right of the canvas. they will be set during _redraw + this.pointerPosition = {"x": 0,"y": 0}; // coordinates of the bottom right of the canvas. they will be set during _redraw + this.areaCenter = {}; // object with x and y elements used for determining the center of the zoom action + this.scale = 1; // defining the global scale variable in the constructor + this.previousScale = this.scale; // this is used to check if the zoom operation is zooming in or out - /** - * Add an item to the group - * @param {Item} item - */ - Group.prototype.add = function(item) { - this.items[item.id] = item; - item.setParent(this); + // datasets or dataviews + this.nodesData = null; // A DataSet or DataView + this.edgesData = null; // A DataSet or DataView - // add to - if (item.data.subgroup !== undefined) { - if (this.subgroups[item.data.subgroup] === undefined) { - this.subgroups[item.data.subgroup] = {height:0, visible: false, index:this.subgroupIndex, items: []}; - this.subgroupIndex++; + // create event listeners used to subscribe on the DataSets of the nodes and edges + this.nodesListeners = { + 'add': function (event, params) { + network._addNodes(params.items); + network.start(); + }, + 'update': function (event, params) { + network._updateNodes(params.items); + network.start(); + }, + 'remove': function (event, params) { + network._removeNodes(params.items); + network.start(); } - this.subgroups[item.data.subgroup].items.push(item); - } - this.orderSubgroups(); + }; + this.edgesListeners = { + 'add': function (event, params) { + network._addEdges(params.items); + network.start(); + }, + 'update': function (event, params) { + network._updateEdges(params.items); + network.start(); + }, + 'remove': function (event, params) { + network._removeEdges(params.items); + network.start(); + } + }; - if (this.visibleItems.indexOf(item) == -1) { - var range = this.itemSet.body.range; // TODO: not nice accessing the range like this - this._checkIfVisible(item, this.visibleItems, range); - } - }; + // properties for the animation + this.moving = true; + this.timer = undefined; // Scheduling function. Is definded in this.start(); - Group.prototype.orderSubgroups = function() { - if (this.subgroupOrderer !== undefined) { - var sortArray = []; - if (typeof this.subgroupOrderer == 'string') { - for (var subgroup in this.subgroups) { - sortArray.push({subgroup: subgroup, sortField: this.subgroups[subgroup].items[0].data[this.subgroupOrderer]}) - } - sortArray.sort(function (a, b) { - return a.sortField - b.sortField; - }) - } - else if (typeof this.subgroupOrderer == 'function') { - for (var subgroup in this.subgroups) { - sortArray.push(this.subgroups[subgroup].items[0].data); - } - sortArray.sort(this.subgroupOrderer); - } + // load data (the disable start variable will be the same as the enabled clustering) + this.setData(data,this.constants.clustering.enabled || this.constants.hierarchicalLayout.enabled); - if (sortArray.length > 0) { - for (var i = 0; i < sortArray.length; i++) { - this.subgroups[sortArray[i].subgroup].index = i; - } - } + // hierarchical layout + this.initializing = false; + if (this.constants.hierarchicalLayout.enabled == true) { + this._setupHierarchicalLayout(); } - }; - - Group.prototype.resetSubgroups = function() { - for (var subgroup in this.subgroups) { - if (this.subgroups.hasOwnProperty(subgroup)) { - this.subgroups[subgroup].visible = false; + else { + // zoom so all data will fit on the screen, if clustering is enabled, we do not want start to be called here. + if (this.constants.stabilize == false) { + this.zoomExtent({duration:0}, true, this.constants.clustering.enabled); } } - }; - - /** - * Remove an item from the group - * @param {Item} item - */ - Group.prototype.remove = function(item) { - delete this.items[item.id]; - item.setParent(null); - - // remove from visible items - var index = this.visibleItems.indexOf(item); - if (index != -1) this.visibleItems.splice(index, 1); - // TODO: also remove from ordered items? - }; + // if clustering is disabled, the simulation will have started in the setData function + if (this.constants.clustering.enabled) { + this.startWithClustering(); + } + } + // Extend Network with an Emitter mixin + Emitter(Network.prototype); /** - * Remove an item from the corresponding DataSet - * @param {Item} item + * Determine if the browser requires a setTimeout or a requestAnimationFrame. This was required because + * some implementations (safari and IE9) did not support requestAnimationFrame + * @private */ - Group.prototype.removeFromDataSet = function(item) { - this.itemSet.removeItem(item.id); - }; + Network.prototype._determineBrowserMethod = function() { + var browserType = navigator.userAgent.toLowerCase(); + this.requiresTimeout = false; + if (browserType.indexOf('msie 9.0') != -1) { // IE 9 + this.requiresTimeout = true; + } + else if (browserType.indexOf('safari') != -1) { // safari + if (browserType.indexOf('chrome') <= -1) { + this.requiresTimeout = true; + } + } + } /** - * Reorder the items + * Get the script path where the vis.js library is located + * + * @returns {string | null} path Path or null when not found. Path does not + * end with a slash. + * @private */ - Group.prototype.order = function() { - var array = util.toArray(this.items); - var startArray = []; - var endArray = []; + Network.prototype._getScriptPath = function() { + var scripts = document.getElementsByTagName( 'script' ); - for (var i = 0; i < array.length; i++) { - if (array[i].data.end !== undefined) { - endArray.push(array[i]); + // find script named vis.js or vis.min.js + for (var i = 0; i < scripts.length; i++) { + var src = scripts[i].src; + var match = src && /\/?vis(.min)?\.js$/.exec(src); + if (match) { + // return path without the script name + return src.substring(0, src.length - match[0].length); } - startArray.push(array[i]); } - this.orderedItems = { - byStart: startArray, - byEnd: endArray - }; - stack.orderByStart(this.orderedItems.byStart); - stack.orderByEnd(this.orderedItems.byEnd); + return null; }; /** - * Update the visible items - * @param {{byStart: Item[], byEnd: Item[]}} orderedItems All items ordered by start date and by end date - * @param {Item[]} visibleItems The previously visible items. - * @param {{start: number, end: number}} range Visible range - * @return {Item[]} visibleItems The new visible items. + * Find the center position of the network * @private */ - Group.prototype._updateVisibleItems = function(orderedItems, oldVisibleItems, range) { - var visibleItems = []; - var visibleItemsLookup = {}; // we keep this to quickly look up if an item already exists in the list without using indexOf on visibleItems - var interval = (range.end - range.start) / 4; - var lowerBound = range.start - interval; - var upperBound = range.end + interval; - var item, i; - - // this function is used to do the binary search. - var searchFunction = function (value) { - if (value < lowerBound) {return -1;} - else if (value <= upperBound) {return 0;} - else {return 1;} + Network.prototype._getRange = function(specificNodes) { + var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; + if (specificNodes.length > 0) { + for (var i = 0; i < specificNodes.length; i++) { + node = this.nodes[specificNodes[i]]; + if (minX > (node.boundingBox.left)) { + minX = node.boundingBox.left; + } + if (maxX < (node.boundingBox.right)) { + maxX = node.boundingBox.right; + } + if (minY > (node.boundingBox.bottom)) { + minY = node.boundingBox.top; + } // top is negative, bottom is positive + if (maxY < (node.boundingBox.top)) { + maxY = node.boundingBox.bottom; + } // top is negative, bottom is positive + } } - - // first check if the items that were in view previously are still in view. - // IMPORTANT: this handles the case for the items with startdate before the window and enddate after the window! - // also cleans up invisible items. - if (oldVisibleItems.length > 0) { - for (i = 0; i < oldVisibleItems.length; i++) { - this._checkIfVisibleWithReference(oldVisibleItems[i], visibleItems, visibleItemsLookup, range); + else { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (minX > (node.boundingBox.left)) { + minX = node.boundingBox.left; + } + if (maxX < (node.boundingBox.right)) { + maxX = node.boundingBox.right; + } + if (minY > (node.boundingBox.bottom)) { + minY = node.boundingBox.top; + } // top is negative, bottom is positive + if (maxY < (node.boundingBox.top)) { + maxY = node.boundingBox.bottom; + } // top is negative, bottom is positive + } } } - // we do a binary search for the items that have only start values. - var initialPosByStart = util.binarySearchCustom(orderedItems.byStart, searchFunction, 'data','start'); + if (minX == 1e9 && maxX == -1e9 && minY == 1e9 && maxY == -1e9) { + minY = 0, maxY = 0, minX = 0, maxX = 0; + } + return {minX: minX, maxX: maxX, minY: minY, maxY: maxY}; + }; - // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the start values. - this._traceVisible(initialPosByStart, orderedItems.byStart, visibleItems, visibleItemsLookup, function (item) { - return (item.data.start < lowerBound || item.data.start > upperBound); - }); - // if the window has changed programmatically without overlapping the old window, the ranged items with start < lowerBound and end > upperbound are not shown. - // We therefore have to brute force check all items in the byEnd list - if (this.checkRangedItems == true) { - this.checkRangedItems = false; - for (i = 0; i < orderedItems.byEnd.length; i++) { - this._checkIfVisibleWithReference(orderedItems.byEnd[i], visibleItems, visibleItemsLookup, range); - } - } - else { - // we do a binary search for the items that have defined end times. - var initialPosByEnd = util.binarySearchCustom(orderedItems.byEnd, searchFunction, 'data','end'); + /** + * @param {object} range = {minX: minX, maxX: maxX, minY: minY, maxY: maxY}; + * @returns {{x: number, y: number}} + * @private + */ + Network.prototype._findCenter = function(range) { + return {x: (0.5 * (range.maxX + range.minX)), + y: (0.5 * (range.maxY + range.minY))}; + }; - // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the end values. - this._traceVisible(initialPosByEnd, orderedItems.byEnd, visibleItems, visibleItemsLookup, function (item) { - return (item.data.end < lowerBound || item.data.end > upperBound); - }); - } + /** + * This function zooms out to fit all data on screen based on amount of nodes + * + * @param {Boolean} [initialZoom] | zoom based on fitted formula or range, true = fitted, default = false; + * @param {Boolean} [disableStart] | If true, start is not called. + */ + Network.prototype.zoomExtent = function(options, initialZoom, disableStart) { + this._redraw(true); - // finally, we reposition all the visible items. - for (i = 0; i < visibleItems.length; i++) { - item = visibleItems[i]; - if (!item.displayed) item.show(); - // reposition item horizontally - item.repositionX(); + if (initialZoom === undefined) {initialZoom = false;} + if (disableStart === undefined) {disableStart = false;} + if (options === undefined) {options = {nodes:[]};} + if (options.nodes === undefined) { + options.nodes = []; } - // debug - //console.log("new line") - //if (this.groupId == null) { - // for (i = 0; i < orderedItems.byStart.length; i++) { - // item = orderedItems.byStart[i].data; - // console.log('start',i,initialPosByStart, item.start.valueOf(), item.content, item.start >= lowerBound && item.start <= upperBound,i == initialPosByStart ? "<------------------- HEREEEE" : "") - // } - // for (i = 0; i < orderedItems.byEnd.length; i++) { - // item = orderedItems.byEnd[i].data; - // console.log('rangeEnd',i,initialPosByEnd, item.end.valueOf(), item.content, item.end >= range.start && item.end <= range.end,i == initialPosByEnd ? "<------------------- HEREEEE" : "") - // } - //} + var range; + var zoomLevel; - return visibleItems; - }; + if (initialZoom == true) { + // check if more than half of the nodes have a predefined position. If so, we use the range, not the approximation. + var positionDefined = 0; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.predefinedPosition == true) { + positionDefined += 1; + } + } + } + if (positionDefined > 0.5 * this.nodeIndices.length) { + this.zoomExtent(options,false,disableStart); + return; + } - Group.prototype._traceVisible = function (initialPos, items, visibleItems, visibleItemsLookup, breakCondition) { - var item; - var i; + range = this._getRange(options.nodes); - if (initialPos != -1) { - for (i = initialPos; i >= 0; i--) { - item = items[i]; - if (breakCondition(item)) { - break; + var numberOfNodes = this.nodeIndices.length; + if (this.constants.smoothCurves == true) { + if (this.constants.clustering.enabled == true && + numberOfNodes >= this.constants.clustering.initialMaxNodes) { + zoomLevel = 49.07548 / (numberOfNodes + 142.05338) + 9.1444e-04; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. } else { - if (visibleItemsLookup[item.id] === undefined) { - visibleItemsLookup[item.id] = true; - visibleItems.push(item); - } + zoomLevel = 12.662 / (numberOfNodes + 7.4147) + 0.0964822; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. } } - - for (i = initialPos + 1; i < items.length; i++) { - item = items[i]; - if (breakCondition(item)) { - break; + else { + if (this.constants.clustering.enabled == true && + numberOfNodes >= this.constants.clustering.initialMaxNodes) { + zoomLevel = 77.5271985 / (numberOfNodes + 187.266146) + 4.76710517e-05; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. } else { - if (visibleItemsLookup[item.id] === undefined) { - visibleItemsLookup[item.id] = true; - visibleItems.push(item); - } + zoomLevel = 30.5062972 / (numberOfNodes + 19.93597763) + 0.08413486; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. } } + + // correct for larger canvasses. + var factor = Math.min(this.frame.canvas.clientWidth / 600, this.frame.canvas.clientHeight / 600); + zoomLevel *= factor; } - } + else { + range = this._getRange(options.nodes); + var xDistance = Math.abs(range.maxX - range.minX) * 1.1; + var yDistance = Math.abs(range.maxY - range.minY) * 1.1; + var xZoomLevel = this.frame.canvas.clientWidth / xDistance; + var yZoomLevel = this.frame.canvas.clientHeight / yDistance; + zoomLevel = (xZoomLevel <= yZoomLevel) ? xZoomLevel : yZoomLevel; + } - /** - * this function is very similar to the _checkIfInvisible() but it does not - * return booleans, hides the item if it should not be seen and always adds to - * the visibleItems. - * this one is for brute forcing and hiding. - * - * @param {Item} item - * @param {Array} visibleItems - * @param {{start:number, end:number}} range - * @private - */ - Group.prototype._checkIfVisible = function(item, visibleItems, range) { - if (item.isVisible(range)) { - if (!item.displayed) item.show(); - // reposition item horizontally - item.repositionX(); - visibleItems.push(item); - } - else { - if (item.displayed) item.hide(); - } - }; + if (zoomLevel > 1.0) { + zoomLevel = 1.0; + } - /** - * this function is very similar to the _checkIfInvisible() but it does not - * return booleans, hides the item if it should not be seen and always adds to - * the visibleItems. - * this one is for brute forcing and hiding. - * - * @param {Item} item - * @param {Array} visibleItems - * @param {{start:number, end:number}} range - * @private - */ - Group.prototype._checkIfVisibleWithReference = function(item, visibleItems, visibleItemsLookup, range) { - if (item.isVisible(range)) { - if (visibleItemsLookup[item.id] === undefined) { - visibleItemsLookup[item.id] = true; - visibleItems.push(item); - } + var center = this._findCenter(range); + if (disableStart == false) { + var options = {position: center, scale: zoomLevel, animation: options}; + this.moveTo(options); + this.moving = true; + this.start(); } else { - if (item.displayed) item.hide(); + center.x *= zoomLevel; + center.y *= zoomLevel; + center.x -= 0.5 * this.frame.canvas.clientWidth; + center.y -= 0.5 * this.frame.canvas.clientHeight; + this._setScale(zoomLevel); + this._setTranslation(-center.x,-center.y); } }; - - module.exports = Group; - - -/***/ }, -/* 29 */ -/***/ function(module, exports, __webpack_require__) { - - // Utility functions for ordering and stacking of items - var EPSILON = 0.001; // used when checking collisions, to prevent round-off errors - /** - * Order items by their start data - * @param {Item[]} items + * Update the this.nodeIndices with the most recent node index list + * @private */ - exports.orderByStart = function(items) { - items.sort(function (a, b) { - return a.data.start - b.data.start; - }); + Network.prototype._updateNodeIndexList = function() { + this._clearNodeIndexList(); + for (var idx in this.nodes) { + if (this.nodes.hasOwnProperty(idx)) { + this.nodeIndices.push(idx); + } + } }; - /** - * Order items by their end date. If they have no end date, their start date - * is used. - * @param {Item[]} items - */ - exports.orderByEnd = function(items) { - items.sort(function (a, b) { - var aTime = ('end' in a.data) ? a.data.end : a.data.start, - bTime = ('end' in b.data) ? b.data.end : b.data.start; - - return aTime - bTime; - }); - }; /** - * Adjust vertical positions of the items such that they don't overlap each - * other. - * @param {Item[]} items - * All visible items - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * Margins between items and between items and the axis. - * @param {boolean} [force=false] - * If true, all items will be repositioned. If false (default), only - * items having a top===null will be re-stacked + * Set nodes and edges, and optionally options as well. + * + * @param {Object} data Object containing parameters: + * {Array | DataSet | DataView} [nodes] Array with nodes + * {Array | DataSet | DataView} [edges] Array with edges + * {String} [dot] String containing data in DOT format + * {String} [gephi] String containing data in gephi JSON format + * {Options} [options] Object with options + * @param {Boolean} [disableStart] | optional: disable the calling of the start function. */ - exports.stack = function(items, margin, force) { - var i, iMax; - - if (force) { - // reset top position of all items - for (i = 0, iMax = items.length; i < iMax; i++) { - items[i].top = null; - } + Network.prototype.setData = function(data, disableStart) { + if (disableStart === undefined) { + disableStart = false; } - // calculate new, non-overlapping positions - for (i = 0, iMax = items.length; i < iMax; i++) { - var item = items[i]; - if (item.stack && item.top === null) { - // initialize top position - item.top = margin.axis; + // unselect all to ensure no selections from old data are carried over. + this._unselectAll(true); - do { - // TODO: optimize checking for overlap. when there is a gap without items, - // you only need to check for items from the next item on, not from zero - var collidingItem = null; - for (var j = 0, jj = items.length; j < jj; j++) { - var other = items[j]; - if (other.top !== null && other !== item && other.stack && exports.collision(item, other, margin.item)) { - collidingItem = other; - break; - } - } + // we set initializing to true to ensure that the hierarchical layout is not performed until both nodes and edges are added. + this.initializing = true; - if (collidingItem != null) { - // There is a collision. Reposition the items above the colliding element - item.top = collidingItem.top + collidingItem.height + margin.item.vertical; - } - } while (collidingItem); - } + if (data && data.dot && (data.nodes || data.edges)) { + throw new SyntaxError('Data must contain either parameter "dot" or ' + + ' parameter pair "nodes" and "edges", but not both.'); } - }; - - /** - * Adjust vertical positions of the items without stacking them - * @param {Item[]} items - * All visible items - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * Margins between items and between items and the axis. - */ - exports.nostack = function(items, margin, subgroups) { - var i, iMax, newTop; + // clean up in case there is anyone in an active mode of the manipulation. This is the same option as bound to the escape button. + if (this.constants.dataManipulation.enabled == true) { + this._createManipulatorBar(); + } - // reset top position of all items - for (i = 0, iMax = items.length; i < iMax; i++) { - if (items[i].data.subgroup !== undefined) { - newTop = margin.axis; - for (var subgroup in subgroups) { - if (subgroups.hasOwnProperty(subgroup)) { - if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroups[items[i].data.subgroup].index) { - newTop += subgroups[subgroup].height + margin.item.vertical; - } - } - } - items[i].top = newTop; + // set options + this.setOptions(data && data.options); + // set all data + if (data && data.dot) { + // parse DOT file + if(data && data.dot) { + var dotData = dotparser.DOTToGraph(data.dot); + this.setData(dotData); + return; + } + } + else if (data && data.gephi) { + // parse DOT file + if(data && data.gephi) { + var gephiData = gephiParser.parseGephi(data.gephi); + this.setData(gephiData); + return; + } + } + else { + this._setNodes(data && data.nodes); + this._setEdges(data && data.edges); + } + this._putDataInSector(); + if (disableStart == false) { + if (this.constants.hierarchicalLayout.enabled == true) { + this._resetLevels(); + this._setupHierarchicalLayout(); } else { - items[i].top = margin.axis; + // find a stable position or start animating to a stable position + if (this.constants.stabilize == true) { + this._stabilize(); + } } + this.start(); } + this.initializing = false; }; /** - * Test if the two provided items collide - * The items must have parameters left, width, top, and height. - * @param {Item} a The first item - * @param {Item} b The second item - * @param {{horizontal: number, vertical: number}} margin - * An object containing a horizontal and vertical - * minimum required margin. - * @return {boolean} true if a and b collide, else false + * Set options + * @param {Object} options */ - exports.collision = function(a, b, margin) { - return ((a.left - margin.horizontal + EPSILON) < (b.left + b.width) && - (a.left + a.width + margin.horizontal - EPSILON) > b.left && - (a.top - margin.vertical + EPSILON) < (b.top + b.height) && - (a.top + a.height + margin.vertical - EPSILON) > b.top); - }; + Network.prototype.setOptions = function (options) { + if (options) { + var prop; + var fields = ['nodes','edges','smoothCurves','hierarchicalLayout','clustering','navigation', + 'keyboard','dataManipulation','onAdd','onEdit','onEditEdge','onConnect','onDelete','clickToUse' + ]; + // extend all but the values in fields + util.selectiveNotDeepExtend(fields,this.constants, options); + util.selectiveNotDeepExtend(['color'],this.constants.nodes, options.nodes); + util.selectiveNotDeepExtend(['color','length'],this.constants.edges, options.edges); + this.groups.useDefaultGroups = this.constants.useDefaultGroups; + if (options.physics) { + util.mergeOptions(this.constants.physics, options.physics,'barnesHut'); + util.mergeOptions(this.constants.physics, options.physics,'repulsion'); -/***/ }, -/* 30 */ -/***/ function(module, exports, __webpack_require__) { + if (options.physics.hierarchicalRepulsion) { + this.constants.hierarchicalLayout.enabled = true; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this.constants.physics.barnesHut.enabled = false; + for (prop in options.physics.hierarchicalRepulsion) { + if (options.physics.hierarchicalRepulsion.hasOwnProperty(prop)) { + this.constants.physics.hierarchicalRepulsion[prop] = options.physics.hierarchicalRepulsion[prop]; + } + } + } + } - var Hammer = __webpack_require__(19); - var Item = __webpack_require__(31); + if (options.onAdd) {this.triggerFunctions.add = options.onAdd;} + if (options.onEdit) {this.triggerFunctions.edit = options.onEdit;} + if (options.onEditEdge) {this.triggerFunctions.editEdge = options.onEditEdge;} + if (options.onConnect) {this.triggerFunctions.connect = options.onConnect;} + if (options.onDelete) {this.triggerFunctions.del = options.onDelete;} - /** - * @constructor RangeItem - * @extends Item - * @param {Object} data Object containing parameters start, end - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe options - */ - function RangeItem (data, conversion, options) { - this.props = { - content: { - width: 0 - } - }; - this.overflow = false; // if contents can overflow (css styling), this flag is set to true + util.mergeOptions(this.constants, options,'smoothCurves'); + util.mergeOptions(this.constants, options,'hierarchicalLayout'); + util.mergeOptions(this.constants, options,'clustering'); + util.mergeOptions(this.constants, options,'navigation'); + util.mergeOptions(this.constants, options,'keyboard'); + util.mergeOptions(this.constants, options,'dataManipulation'); - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data.id); - } - if (data.end == undefined) { - throw new Error('Property "end" missing in item ' + data.id); + + if (options.dataManipulation) { + this.editMode = this.constants.dataManipulation.initiallyVisible; } - } - Item.call(this, data, conversion, options); - } - RangeItem.prototype = new Item (null, null, null); + // TODO: work out these options and document them + if (options.edges) { + if (options.edges.color !== undefined) { + if (util.isString(options.edges.color)) { + this.constants.edges.color = {}; + this.constants.edges.color.color = options.edges.color; + this.constants.edges.color.highlight = options.edges.color; + this.constants.edges.color.hover = options.edges.color; + } + else { + if (options.edges.color.color !== undefined) {this.constants.edges.color.color = options.edges.color.color;} + if (options.edges.color.highlight !== undefined) {this.constants.edges.color.highlight = options.edges.color.highlight;} + if (options.edges.color.hover !== undefined) {this.constants.edges.color.hover = options.edges.color.hover;} + } + this.constants.edges.inheritColor = false; + } - RangeItem.prototype.baseClassName = 'item range'; + if (!options.edges.fontColor) { + if (options.edges.color !== undefined) { + if (util.isString(options.edges.color)) {this.constants.edges.fontColor = options.edges.color;} + else if (options.edges.color.color !== undefined) {this.constants.edges.fontColor = options.edges.color.color;} + } + } + } - /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible - */ - RangeItem.prototype.isVisible = function(range) { - // determine visibility - return (this.data.start < range.end) && (this.data.end > range.start); - }; - - /** - * Repaint the item - */ - RangeItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; - - // background box - dom.box = document.createElement('div'); - // className is updated in redraw() - - // contents box - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); + if (options.nodes) { + if (options.nodes.color) { + var newColorObj = util.parseColor(options.nodes.color); + this.constants.nodes.color.background = newColorObj.background; + this.constants.nodes.color.border = newColorObj.border; + this.constants.nodes.color.highlight.background = newColorObj.highlight.background; + this.constants.nodes.color.highlight.border = newColorObj.highlight.border; + this.constants.nodes.color.hover.background = newColorObj.hover.background; + this.constants.nodes.color.hover.border = newColorObj.hover.border; + } + } + if (options.groups) { + for (var groupname in options.groups) { + if (options.groups.hasOwnProperty(groupname)) { + var group = options.groups[groupname]; + this.groups.add(groupname, group); + } + } + } - // attach this item as attribute - dom.box['timeline-item'] = this; + if (options.tooltip) { + for (prop in options.tooltip) { + if (options.tooltip.hasOwnProperty(prop)) { + this.constants.tooltip[prop] = options.tooltip[prop]; + } + } + if (options.tooltip.color) { + this.constants.tooltip.color = util.parseColor(options.tooltip.color); + } + } - this.dirty = true; - } + if ('clickToUse' in options) { + if (options.clickToUse) { + if (!this.activator) { + this.activator = new Activator(this.frame); + this.activator.on('change', this._createKeyBinds.bind(this)); + } + } + else { + if (this.activator) { + this.activator.destroy(); + delete this.activator; + } + } + } - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); - } - if (!dom.box.parentNode) { - var foreground = this.parent.dom.foreground; - if (!foreground) { - throw new Error('Cannot redraw item: parent has no foreground container element'); + if (options.labels) { + throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.'); } - foreground.appendChild(dom.box); - } - this.displayed = true; - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.box); - this._updateDataAttributes(this.dom.box); - this._updateStyle(this.dom.box); - // update class - var className = (this.data.className ? (' ' + this.data.className) : '') + - (this.selected ? ' selected' : ''); - dom.box.className = this.baseClassName + className; + // (Re)loading the mixins that can be enabled or disabled in the options. + // load the force calculation functions, grouped under the physics system. + this._loadPhysicsSystem(); + // load the navigation system. + this._loadNavigationControls(); + // load the data manipulation system + this._loadManipulationSystem(); + // configure the smooth curves + this._configureSmoothCurves(); - // determine from css whether this box has overflow - this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; + // bind hammer + this._bindHammer(); - // recalculate size - // turn off max-width to be able to calculate the real width - // this causes an extra browser repaint/reflow, but so be it - this.dom.content.style.maxWidth = 'none'; - this.props.content.width = this.dom.content.offsetWidth; - this.height = this.dom.box.offsetHeight; - this.dom.content.style.maxWidth = ''; + // bind keys. If disabled, this will not do anything; + this._createKeyBinds(); - this.dirty = false; + this._markAllEdgesAsDirty(); + this.setSize(this.constants.width, this.constants.height); + this.moving = true; + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + this.start(); } - - this._repaintDeleteButton(dom.box); - this._repaintDragLeft(); - this._repaintDragRight(); }; + + /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. + * Create the main frame for the Network. + * This function is executed once when a Network object is created. The frame + * contains a canvas, and this canvas contains all objects like the axis and + * nodes. + * @private */ - RangeItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); + Network.prototype._create = function () { + // remove all elements from the container element. + while (this.containerElement.hasChildNodes()) { + this.containerElement.removeChild(this.containerElement.firstChild); } - }; - /** - * Hide the item from the DOM (when visible) - * @return {Boolean} changed - */ - RangeItem.prototype.hide = function() { - if (this.displayed) { - var box = this.dom.box; + this.frame = document.createElement('div'); + this.frame.className = 'vis network-frame'; + this.frame.style.position = 'relative'; + this.frame.style.overflow = 'hidden'; + this.frame.tabIndex = 900; - if (box.parentNode) { - box.parentNode.removeChild(box); - } - this.top = null; - this.left = null; + ////////////////////////////////////////////////////////////////// - this.displayed = false; + this.frame.canvas = document.createElement("canvas"); + this.frame.canvas.style.position = 'relative'; + this.frame.appendChild(this.frame.canvas); + + if (!this.frame.canvas.getContext) { + var noCanvas = document.createElement( 'DIV' ); + noCanvas.style.color = 'red'; + noCanvas.style.fontWeight = 'bold' ; + noCanvas.style.padding = '10px'; + noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; + this.frame.canvas.appendChild(noCanvas); + } + else { + var ctx = this.frame.canvas.getContext("2d"); + this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || + ctx.mozBackingStorePixelRatio || + ctx.msBackingStorePixelRatio || + ctx.oBackingStorePixelRatio || + ctx.backingStorePixelRatio || 1); + + //this.pixelRatio = Math.max(1,this.pixelRatio); // this is to account for browser zooming out. The pixel ratio is ment to switch between 1 and 2 for HD screens. + this.frame.canvas.getContext("2d").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); } + + this._bindHammer(); }; + /** - * Reposition the item horizontally - * @Override + * This function binds hammer, it can be repeated over and over due to the uniqueness check. + * @private */ - RangeItem.prototype.repositionX = function() { - var parentWidth = this.parent.width; - var start = this.conversion.toScreen(this.data.start); - var end = this.conversion.toScreen(this.data.end); - var contentLeft; - var contentWidth; - - // limit the width of the this, as browsers cannot draw very wide divs - if (start < -parentWidth) { - start = -parentWidth; - } - if (end > 2 * parentWidth) { - end = 2 * parentWidth; + Network.prototype._bindHammer = function() { + var me = this; + if (this.hammer !== undefined) { + this.hammer.dispose(); } - var boxWidth = Math.max(end - start, 1); - - if (this.overflow) { - this.left = start; - this.width = boxWidth + this.props.content.width; - contentWidth = this.props.content.width; + this.drag = {}; + this.pinch = {}; + this.hammer = Hammer(this.frame.canvas, { + prevent_default: true + }); + this.hammer.on('tap', me._onTap.bind(me) ); + this.hammer.on('doubletap', me._onDoubleTap.bind(me) ); + this.hammer.on('hold', me._onHold.bind(me) ); + this.hammer.on('touch', me._onTouch.bind(me) ); + this.hammer.on('dragstart', me._onDragStart.bind(me) ); + this.hammer.on('drag', me._onDrag.bind(me) ); + this.hammer.on('dragend', me._onDragEnd.bind(me) ); - // Note: The calculation of width is an optimistic calculation, giving - // a width which will not change when moving the Timeline - // So no re-stacking needed, which is nicer for the eye; - } - else { - this.left = start; - this.width = boxWidth; - contentWidth = Math.min(end - start - 2 * this.options.padding, this.props.content.width); + if (this.constants.zoomable == true) { + this.hammer.on('mousewheel', me._onMouseWheel.bind(me)); + this.hammer.on('DOMMouseScroll', me._onMouseWheel.bind(me)); // for FF + this.hammer.on('pinch', me._onPinch.bind(me) ); } - this.dom.box.style.left = this.left + 'px'; - this.dom.box.style.width = boxWidth + 'px'; - - switch (this.options.align) { - case 'left': - this.dom.content.style.left = '0'; - break; - - case 'right': - this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding), 0) + 'px'; - break; + this.hammer.on('mousemove', me._onMouseMoveTitle.bind(me) ); - case 'center': - this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding) / 2, 0) + 'px'; - break; + this.hammerFrame = Hammer(this.frame, { + prevent_default: true + }); + this.hammerFrame.on('release', me._onRelease.bind(me) ); - default: // 'auto' - // when range exceeds left of the window, position the contents at the left of the visible area - if (this.overflow) { - if (end > 0) { - contentLeft = Math.max(-start, 0); - } - else { - contentLeft = -contentWidth; // ensure it's not visible anymore - } - } - else { - if (start < 0) { - contentLeft = Math.min(-start, - (end - start - contentWidth - 2 * this.options.padding)); - // TODO: remove the need for options.padding. it's terrible. - } - else { - contentLeft = 0; - } - } - this.dom.content.style.left = contentLeft + 'px'; - } - }; + // add the frame to the container element + this.containerElement.appendChild(this.frame); + } /** - * Reposition the item vertically - * @Override + * Binding the keys for keyboard navigation. These functions are defined in the NavigationMixin + * @private */ - RangeItem.prototype.repositionY = function() { - var orientation = this.options.orientation, - box = this.dom.box; + Network.prototype._createKeyBinds = function() { + var me = this; + if (this.keycharm !== undefined) { + this.keycharm.destroy(); + } - if (orientation == 'top') { - box.style.top = this.top + 'px'; + if (this.constants.keyboard.bindToWindow == true) { + this.keycharm = keycharm({container: window, preventDefault: false}); } else { - box.style.top = (this.parent.height - this.top - this.height) + 'px'; + this.keycharm = keycharm({container: this.frame, preventDefault: false}); } - }; - - /** - * Repaint a drag area on the left side of the range when the range is selected - * @protected - */ - RangeItem.prototype._repaintDragLeft = function () { - if (this.selected && this.options.editable.updateTime && !this.dom.dragLeft) { - // create and show drag area - var dragLeft = document.createElement('div'); - dragLeft.className = 'drag-left'; - dragLeft.dragLeftItem = this; - // TODO: this should be redundant? - Hammer(dragLeft, { - preventDefault: true - }).on('drag', function () { - //console.log('drag left') - }); + this.keycharm.reset(); - this.dom.box.appendChild(dragLeft); - this.dom.dragLeft = dragLeft; + if (this.constants.keyboard.enabled && this.isActive()) { + this.keycharm.bind("up", this._moveUp.bind(me) , "keydown"); + this.keycharm.bind("up", this._yStopMoving.bind(me), "keyup"); + this.keycharm.bind("down", this._moveDown.bind(me) , "keydown"); + this.keycharm.bind("down", this._yStopMoving.bind(me), "keyup"); + this.keycharm.bind("left", this._moveLeft.bind(me) , "keydown"); + this.keycharm.bind("left", this._xStopMoving.bind(me), "keyup"); + this.keycharm.bind("right",this._moveRight.bind(me), "keydown"); + this.keycharm.bind("right",this._xStopMoving.bind(me), "keyup"); + this.keycharm.bind("=", this._zoomIn.bind(me), "keydown"); + this.keycharm.bind("=", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("num+", this._zoomIn.bind(me), "keydown"); + this.keycharm.bind("num+", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("num-", this._zoomOut.bind(me), "keydown"); + this.keycharm.bind("num-", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("-", this._zoomOut.bind(me), "keydown"); + this.keycharm.bind("-", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("[", this._zoomIn.bind(me), "keydown"); + this.keycharm.bind("[", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("]", this._zoomOut.bind(me), "keydown"); + this.keycharm.bind("]", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("pageup",this._zoomIn.bind(me), "keydown"); + this.keycharm.bind("pageup",this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("pagedown",this._zoomOut.bind(me),"keydown"); + this.keycharm.bind("pagedown",this._stopZoom.bind(me), "keyup"); } - else if (!this.selected && this.dom.dragLeft) { - // delete drag area - if (this.dom.dragLeft.parentNode) { - this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft); - } - this.dom.dragLeft = null; + + if (this.constants.dataManipulation.enabled == true) { + this.keycharm.bind("esc",this._createManipulatorBar.bind(me)); + this.keycharm.bind("delete",this._deleteSelected.bind(me)); } }; /** - * Repaint a drag area on the right side of the range when the range is selected - * @protected + * Cleans up all bindings of the network, removing it fully from the memory IF the variable is set to null after calling this function. + * var network = new vis.Network(..); + * network.destroy(); + * network = null; */ - RangeItem.prototype._repaintDragRight = function () { - if (this.selected && this.options.editable.updateTime && !this.dom.dragRight) { - // create and show drag area - var dragRight = document.createElement('div'); - dragRight.className = 'drag-right'; - dragRight.dragRightItem = this; - - // TODO: this should be redundant? - Hammer(dragRight, { - preventDefault: true - }).on('drag', function () { - //console.log('drag right') - }); - - this.dom.box.appendChild(dragRight); - this.dom.dragRight = dragRight; - } - else if (!this.selected && this.dom.dragRight) { - // delete drag area - if (this.dom.dragRight.parentNode) { - this.dom.dragRight.parentNode.removeChild(this.dom.dragRight); - } - this.dom.dragRight = null; - } - }; - - module.exports = RangeItem; - + Network.prototype.destroy = function() { + this.start = function () {}; + this.redraw = function () {}; + this.timer = false; -/***/ }, -/* 31 */ -/***/ function(module, exports, __webpack_require__) { + // cleanup physicsConfiguration if it exists + this._cleanupPhysicsConfiguration(); - var Hammer = __webpack_require__(19); - var util = __webpack_require__(1); + // remove keybindings + this.keycharm.reset(); - /** - * @constructor Item - * @param {Object} data Object containing (optional) parameters type, - * start, end, content, group, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} options Configuration options - * // TODO: describe available options - */ - function Item (data, conversion, options) { - this.id = null; - this.parent = null; - this.data = data; - this.dom = null; - this.conversion = conversion || {}; - this.options = options || {}; + // clear hammer bindings + this.hammer.dispose(); - this.selected = false; - this.displayed = false; - this.dirty = true; + // clear events + this.off(); - this.top = null; - this.left = null; - this.width = null; - this.height = null; + this._recursiveDOMDelete(this.containerElement); } - Item.prototype.stack = true; + Network.prototype._recursiveDOMDelete = function(DOMobject) { + while (DOMobject.hasChildNodes() == true) { + this._recursiveDOMDelete(DOMobject.firstChild); + DOMobject.removeChild(DOMobject.firstChild); + } + } /** - * Select current item + * Get the pointer location from a touch location + * @param {{pageX: Number, pageY: Number}} touch + * @return {{x: Number, y: Number}} pointer + * @private */ - Item.prototype.select = function() { - this.selected = true; - this.dirty = true; - if (this.displayed) this.redraw(); + Network.prototype._getPointer = function (touch) { + return { + x: touch.pageX - util.getAbsoluteLeft(this.frame.canvas), + y: touch.pageY - util.getAbsoluteTop(this.frame.canvas) + }; }; /** - * Unselect current item + * On start of a touch gesture, store the pointer + * @param event + * @private */ - Item.prototype.unselect = function() { - this.selected = false; - this.dirty = true; - if (this.displayed) this.redraw(); - }; + Network.prototype._onTouch = function (event) { + if (new Date().valueOf() - this.touchTime > 100) { + this.drag.pointer = this._getPointer(event.gesture.center); + this.drag.pinched = false; + this.pinch.scale = this._getScale(); - /** - * Set data for the item. Existing data will be updated. The id should not - * be changed. When the item is displayed, it will be redrawn immediately. - * @param {Object} data - */ - Item.prototype.setData = function(data) { - this.data = data; - this.dirty = true; - if (this.displayed) this.redraw(); - }; + // to avoid double fireing of this event because we have two hammer instances. (on canvas and on frame) + this.touchTime = new Date().valueOf(); - /** - * Set a parent for the item - * @param {ItemSet | Group} parent - */ - Item.prototype.setParent = function(parent) { - if (this.displayed) { - this.hide(); - this.parent = parent; - if (this.parent) { - this.show(); - } - } - else { - this.parent = parent; + this._handleTouch(this.drag.pointer); } }; /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible + * handle drag start event + * @private */ - Item.prototype.isVisible = function(range) { - // Should be implemented by Item implementations - return false; + Network.prototype._onDragStart = function (event) { + this._handleDragStart(event); }; + /** - * Show the Item in the DOM (when not already visible) - * @return {Boolean} changed + * This function is called by _onDragStart. + * It is separated out because we can then overload it for the datamanipulation system. + * + * @private */ - Item.prototype.show = function() { - return false; - }; + Network.prototype._handleDragStart = function(event) { + // in case the touch event was triggered on an external div, do the initial touch now. + if (this.drag.pointer === undefined) { + this._onTouch(event); + } - /** - * Hide the Item from the DOM (when visible) - * @return {Boolean} changed - */ - Item.prototype.hide = function() { - return false; - }; + var node = this._getNodeAt(this.drag.pointer); + // note: drag.pointer is set in _onTouch to get the initial touch location - /** - * Repaint the item - */ - Item.prototype.redraw = function() { - // should be implemented by the item - }; + this.drag.dragging = true; + this.drag.selection = []; + this.drag.translation = this._getTranslation(); + this.drag.nodeId = null; + this.draggingNodes = false; - /** - * Reposition the Item horizontally - */ - Item.prototype.repositionX = function() { - // should be implemented by the item + if (node != null && this.constants.dragNodes == true) { + this.draggingNodes = true; + this.drag.nodeId = node.id; + // select the clicked node if not yet selected + if (!node.isSelected()) { + this._selectObject(node,false); + } + + this.emit("dragStart",{nodeIds:this.getSelection().nodes}); + + // create an array with the selected nodes and their original location and status + for (var objectId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(objectId)) { + var object = this.selectionObj.nodes[objectId]; + var s = { + id: object.id, + node: object, + + // store original x, y, xFixed and yFixed, make the node temporarily Fixed + x: object.x, + y: object.y, + xFixed: object.xFixed, + yFixed: object.yFixed + }; + + object.xFixed = true; + object.yFixed = true; + + this.drag.selection.push(s); + } + } + } }; + /** - * Reposition the Item vertically + * handle drag event + * @private */ - Item.prototype.repositionY = function() { - // should be implemented by the item + Network.prototype._onDrag = function (event) { + this._handleOnDrag(event) }; + /** - * Repaint a delete button on the top right of the item when the item is selected - * @param {HTMLElement} anchor - * @protected + * This function is called by _onDrag. + * It is separated out because we can then overload it for the datamanipulation system. + * + * @private */ - Item.prototype._repaintDeleteButton = function (anchor) { - if (this.selected && this.options.editable.remove && !this.dom.deleteButton) { - // create and show button - var me = this; + Network.prototype._handleOnDrag = function(event) { + if (this.drag.pinched) { + return; + } - var deleteButton = document.createElement('div'); - deleteButton.className = 'delete'; - deleteButton.title = 'Delete this item'; + // remove the focus on node if it is focussed on by the focusOnNode + this.releaseNode(); - Hammer(deleteButton, { - preventDefault: true - }).on('tap', function (event) { - me.parent.removeFromDataSet(me); - event.stopPropagation(); + var pointer = this._getPointer(event.gesture.center); + var me = this; + var drag = this.drag; + var selection = drag.selection; + if (selection && selection.length && this.constants.dragNodes == true) { + // calculate delta's and new location + var deltaX = pointer.x - drag.pointer.x; + var deltaY = pointer.y - drag.pointer.y; + + // update position of all selected nodes + selection.forEach(function (s) { + var node = s.node; + + if (!s.xFixed) { + node.x = me._XconvertDOMtoCanvas(me._XconvertCanvasToDOM(s.x) + deltaX); + } + + if (!s.yFixed) { + node.y = me._YconvertDOMtoCanvas(me._YconvertCanvasToDOM(s.y) + deltaY); + } }); - anchor.appendChild(deleteButton); - this.dom.deleteButton = deleteButton; + + // start _animationStep if not yet running + if (!this.moving) { + this.moving = true; + this.start(); + } } - else if (!this.selected && this.dom.deleteButton) { - // remove button - if (this.dom.deleteButton.parentNode) { - this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton); + else { + // move the network + if (this.constants.dragNetwork == true) { + // if the drag was not started properly because the click started outside the network div, start it now. + if (this.drag.pointer === undefined) { + this._handleDragStart(event); + return; + } + var diffX = pointer.x - this.drag.pointer.x; + var diffY = pointer.y - this.drag.pointer.y; + + this._setTranslation( + this.drag.translation.x + diffX, + this.drag.translation.y + diffY + ); + this._redraw(); } - this.dom.deleteButton = null; } }; /** - * Set HTML contents for the item - * @param {Element} element HTML element to fill with the contents + * handle drag start event * @private */ - Item.prototype._updateContents = function (element) { - var content; - if (this.options.template) { - var itemData = this.parent.itemSet.itemsData.get(this.id); // get a clone of the data from the dataset - content = this.options.template(itemData); + Network.prototype._onDragEnd = function (event) { + this._handleDragEnd(event); + }; + + + Network.prototype._handleDragEnd = function(event) { + this.drag.dragging = false; + var selection = this.drag.selection; + if (selection && selection.length) { + selection.forEach(function (s) { + // restore original xFixed and yFixed + s.node.xFixed = s.xFixed; + s.node.yFixed = s.yFixed; + }); + this.moving = true; + this.start(); } else { - content = this.data.content; + this._redraw(); + } + if (this.draggingNodes == false) { + this.emit("dragEnd",{nodeIds:[]}); + } + else { + this.emit("dragEnd",{nodeIds:this.getSelection().nodes}); } - if(content !== this.content) { - // only replace the content when changed - if (content instanceof Element) { - element.innerHTML = ''; - element.appendChild(content); - } - else if (content != undefined) { - element.innerHTML = content; - } - else { - if (!(this.data.type == 'background' && this.data.content === undefined)) { - throw new Error('Property "content" missing in item ' + this.id); - } - } + } + /** + * handle tap/click event: select/unselect a node + * @private + */ + Network.prototype._onTap = function (event) { + var pointer = this._getPointer(event.gesture.center); + this.pointerPosition = pointer; + this._handleTap(pointer); - this.content = content; - } }; + /** - * Set HTML contents for the item - * @param {Element} element HTML element to fill with the contents + * handle doubletap event * @private */ - Item.prototype._updateTitle = function (element) { - if (this.data.title != null) { - element.title = this.data.title || ''; - } - else { - element.removeAttribute('title'); - } + Network.prototype._onDoubleTap = function (event) { + var pointer = this._getPointer(event.gesture.center); + this._handleDoubleTap(pointer); }; + /** - * Process dataAttributes timeline option and set as data- attributes on dom.content - * @param {Element} element HTML element to which the attributes will be attached + * handle long tap event: multi select nodes * @private */ - Item.prototype._updateDataAttributes = function(element) { - if (this.options.dataAttributes && this.options.dataAttributes.length > 0) { - var attributes = []; + Network.prototype._onHold = function (event) { + var pointer = this._getPointer(event.gesture.center); + this.pointerPosition = pointer; + this._handleOnHold(pointer); + }; - if (Array.isArray(this.options.dataAttributes)) { - attributes = this.options.dataAttributes; - } - else if (this.options.dataAttributes == 'all') { - attributes = Object.keys(this.data); - } - else { - return; - } + /** + * handle the release of the screen + * + * @private + */ + Network.prototype._onRelease = function (event) { + var pointer = this._getPointer(event.gesture.center); + this._handleOnRelease(pointer); + }; - for (var i = 0; i < attributes.length; i++) { - var name = attributes[i]; - var value = this.data[name]; + /** + * Handle pinch event + * @param event + * @private + */ + Network.prototype._onPinch = function (event) { + var pointer = this._getPointer(event.gesture.center); - if (value != null) { - element.setAttribute('data-' + name, value); - } - else { - element.removeAttribute('data-' + name); - } - } + this.drag.pinched = true; + if (!('scale' in this.pinch)) { + this.pinch.scale = 1; } + + // TODO: enabled moving while pinching? + var scale = this.pinch.scale * event.gesture.scale; + this._zoom(scale, pointer) }; /** - * Update custom styles of the element - * @param element + * Zoom the network in or out + * @param {Number} scale a number around 1, and between 0.01 and 10 + * @param {{x: Number, y: Number}} pointer Position on screen + * @return {Number} appliedScale scale is limited within the boundaries * @private */ - Item.prototype._updateStyle = function(element) { - // remove old styles - if (this.style) { - util.removeCssText(element, this.style); - this.style = null; - } + Network.prototype._zoom = function(scale, pointer) { + if (this.constants.zoomable == true) { + var scaleOld = this._getScale(); + if (scale < 0.00001) { + scale = 0.00001; + } + if (scale > 10) { + scale = 10; + } - // append new styles - if (this.data.style) { - util.addCssText(element, this.data.style); - this.style = this.data.style; - } - }; + var preScaleDragPointer = null; + if (this.drag !== undefined) { + if (this.drag.dragging == true) { + preScaleDragPointer = this.DOMtoCanvas(this.drag.pointer); + } + } + // + this.frame.canvas.clientHeight / 2 + var translation = this._getTranslation(); - module.exports = Item; + var scaleFrac = scale / scaleOld; + var tx = (1 - scaleFrac) * pointer.x + translation.x * scaleFrac; + var ty = (1 - scaleFrac) * pointer.y + translation.y * scaleFrac; + this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), + "y" : this._YconvertDOMtoCanvas(pointer.y)}; -/***/ }, -/* 32 */ -/***/ function(module, exports, __webpack_require__) { + this._setScale(scale); + this._setTranslation(tx, ty); + this.updateClustersDefault(); - var util = __webpack_require__(1); - var Group = __webpack_require__(28); + if (preScaleDragPointer != null) { + var postScaleDragPointer = this.canvasToDOM(preScaleDragPointer); + this.drag.pointer.x = postScaleDragPointer.x; + this.drag.pointer.y = postScaleDragPointer.y; + } - /** - * @constructor BackgroundGroup - * @param {Number | String} groupId - * @param {Object} data - * @param {ItemSet} itemSet - */ - function BackgroundGroup (groupId, data, itemSet) { - Group.call(this, groupId, data, itemSet); + this._redraw(); - this.width = 0; - this.height = 0; - this.top = 0; - this.left = 0; - } + if (scaleOld < scale) { + this.emit("zoom", {direction:"+"}); + } + else { + this.emit("zoom", {direction:"-"}); + } + + return scale; + } + }; - BackgroundGroup.prototype = Object.create(Group.prototype); /** - * Repaint this group - * @param {{start: number, end: number}} range - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * @param {boolean} [restack=false] Force restacking of all items - * @return {boolean} Returns true if the group is resized + * Event handler for mouse wheel event, used to zoom the timeline + * See http://adomas.org/javascript-mouse-wheel/ + * https://github.com/EightMedia/hammer.js/issues/256 + * @param {MouseEvent} event + * @private */ - BackgroundGroup.prototype.redraw = function(range, margin, restack) { - var resized = false; + Network.prototype._onMouseWheel = function(event) { + // retrieve delta + var delta = 0; + if (event.wheelDelta) { /* IE/Opera. */ + delta = event.wheelDelta/120; + } else if (event.detail) { /* Mozilla case. */ + // In Mozilla, sign of delta is different than in IE. + // Also, delta is multiple of 3. + delta = -event.detail/3; + } - this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); + // If delta is nonzero, handle it. + // Basically, delta is now positive if wheel was scrolled up, + // and negative, if wheel was scrolled down. + if (delta) { - // calculate actual size - this.width = this.dom.background.offsetWidth; + // calculate the new scale + var scale = this._getScale(); + var zoom = delta / 10; + if (delta < 0) { + zoom = zoom / (1 - zoom); + } + scale *= (1 + zoom); - // apply new height (just always zero for BackgroundGroup - this.dom.background.style.height = '0'; + // calculate the pointer location + var gesture = hammerUtil.fakeGesture(this, event); + var pointer = this._getPointer(gesture.center); - // update vertical position of items after they are re-stacked and the height of the group is calculated - for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { - var item = this.visibleItems[i]; - item.repositionY(margin); + // apply the new scale + this._zoom(scale, pointer); } - return resized; + // Prevent default actions caused by mouse wheel. + event.preventDefault(); }; + /** - * Show this group: attach to the DOM + * Mouse move handler for checking whether the title moves over a node with a title. + * @param {Event} event + * @private */ - BackgroundGroup.prototype.show = function() { - if (!this.dom.background.parentNode) { - this.itemSet.dom.background.appendChild(this.dom.background); - } - }; - - module.exports = BackgroundGroup; + Network.prototype._onMouseMoveTitle = function (event) { + var gesture = hammerUtil.fakeGesture(this, event); + var pointer = this._getPointer(gesture.center); + var popupVisible = false; + // check if the previously selected node is still selected + if (this.popup !== undefined) { + if (this.popup.hidden === false) { + this._checkHidePopup(pointer); + } -/***/ }, -/* 33 */ -/***/ function(module, exports, __webpack_require__) { + // if the popup was not hidden above + if (this.popup.hidden === false) { + popupVisible = true; + this.popup.setPosition(pointer.x + 3,pointer.y - 5) + this.popup.show(); + } + } - var Item = __webpack_require__(31); - var util = __webpack_require__(1); + // if we bind the keyboard to the div, we have to highlight it to use it. This highlights it on mouse over + if (this.constants.keyboard.bindToWindow == false && this.constants.keyboard.enabled == true) { + this.frame.focus(); + } - /** - * @constructor BoxItem - * @extends Item - * @param {Object} data Object containing parameters start - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe available options - */ - function BoxItem (data, conversion, options) { - this.props = { - dot: { - width: 0, - height: 0 - }, - line: { - width: 0, - height: 0 + // start a timeout that will check if the mouse is positioned above an element + if (popupVisible === false) { + var me = this; + var checkShow = function () { + me._checkShowPopup(pointer); + }; + if (this.popupTimer) { + clearInterval(this.popupTimer); // stop any running calculationTimer } - }; - - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data); + if (!this.drag.dragging) { + this.popupTimer = setTimeout(checkShow, this.constants.tooltip.delay); } } - Item.call(this, data, conversion, options); - } + /** + * Adding hover highlights + */ + if (this.constants.hover == true) { + // removing all hover highlights + for (var edgeId in this.hoverObj.edges) { + if (this.hoverObj.edges.hasOwnProperty(edgeId)) { + this.hoverObj.edges[edgeId].hover = false; + delete this.hoverObj.edges[edgeId]; + } + } - BoxItem.prototype = new Item (null, null, null); + // adding hover highlights + var obj = this._getNodeAt(pointer); + if (obj == null) { + obj = this._getEdgeAt(pointer); + } + if (obj != null) { + this._hoverObject(obj); + } + + // removing all node hover highlights except for the selected one. + for (var nodeId in this.hoverObj.nodes) { + if (this.hoverObj.nodes.hasOwnProperty(nodeId)) { + if (obj instanceof Node && obj.id != nodeId || obj instanceof Edge || obj == null) { + this._blurObject(this.hoverObj.nodes[nodeId]); + delete this.hoverObj.nodes[nodeId]; + } + } + } + this.redraw(); + } + }; /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible + * Check if there is an element on the given position in the network + * (a node or edge). If so, and if this element has a title, + * show a popup window with its title. + * + * @param {{x:Number, y:Number}} pointer + * @private */ - BoxItem.prototype.isVisible = function(range) { - // determine visibility - // TODO: account for the real width of the item. Right now we just add 1/4 to the window - var interval = (range.end - range.start) / 4; - return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); - }; + Network.prototype._checkShowPopup = function (pointer) { + var obj = { + left: this._XconvertDOMtoCanvas(pointer.x), + top: this._YconvertDOMtoCanvas(pointer.y), + right: this._XconvertDOMtoCanvas(pointer.x), + bottom: this._YconvertDOMtoCanvas(pointer.y) + }; - /** - * Repaint the item - */ - BoxItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; + var id; + var previousPopupObjId = this.popupObj === undefined ? "" : this.popupObj.id; + var nodeUnderCursor = false; + var popupType = "node"; - // create main box - dom.box = document.createElement('DIV'); + if (this.popupObj == undefined) { + // search the nodes for overlap, select the top one in case of multiple nodes + var nodes = this.nodes; + var overlappingNodes = []; + for (id in nodes) { + if (nodes.hasOwnProperty(id)) { + var node = nodes[id]; + if (node.isOverlappingWith(obj)) { + if (node.getTitle() !== undefined) { + overlappingNodes.push(id); + } + } + } + } - // contents box (inside the background box). used for making margins - dom.content = document.createElement('DIV'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); + if (overlappingNodes.length > 0) { + // if there are overlapping nodes, select the last one, this is the + // one which is drawn on top of the others + this.popupObj = this.nodes[overlappingNodes[overlappingNodes.length - 1]]; + // if you hover over a node, the title of the edge is not supposed to be shown. + nodeUnderCursor = true; + } + } - // line to axis - dom.line = document.createElement('DIV'); - dom.line.className = 'line'; + if (this.popupObj === undefined && nodeUnderCursor == false) { + // search the edges for overlap + var edges = this.edges; + var overlappingEdges = []; + for (id in edges) { + if (edges.hasOwnProperty(id)) { + var edge = edges[id]; + if (edge.connected && (edge.getTitle() !== undefined) && + edge.isOverlappingWith(obj)) { + overlappingEdges.push(id); + } + } + } - // dot on axis - dom.dot = document.createElement('DIV'); - dom.dot.className = 'dot'; + if (overlappingEdges.length > 0) { + this.popupObj = this.edges[overlappingEdges[overlappingEdges.length - 1]]; + popupType = "edge"; + } + } - // attach this item as attribute - dom.box['timeline-item'] = this; + if (this.popupObj) { + // show popup message window + if (this.popupObj.id != previousPopupObjId) { + if (this.popup === undefined) { + this.popup = new Popup(this.frame, this.constants.tooltip); + } - this.dirty = true; - } + this.popup.popupTargetType = popupType; + this.popup.popupTargetId = this.popupObj.id; - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); - } - if (!dom.box.parentNode) { - var foreground = this.parent.dom.foreground; - if (!foreground) throw new Error('Cannot redraw item: parent has no foreground container element'); - foreground.appendChild(dom.box); - } - if (!dom.line.parentNode) { - var background = this.parent.dom.background; - if (!background) throw new Error('Cannot redraw item: parent has no background container element'); - background.appendChild(dom.line); + // adjust a small offset such that the mouse cursor is located in the + // bottom left location of the popup, and you can easily move over the + // popup area + this.popup.setPosition(pointer.x + 3, pointer.y - 5); + this.popup.setText(this.popupObj.getTitle()); + this.popup.show(); + } } - if (!dom.dot.parentNode) { - var axis = this.parent.dom.axis; - if (!background) throw new Error('Cannot redraw item: parent has no axis container element'); - axis.appendChild(dom.dot); + else { + if (this.popup) { + this.popup.hide(); + } } - this.displayed = true; - - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.box); - this._updateDataAttributes(this.dom.box); - this._updateStyle(this.dom.box); + }; - // update class - var className = (this.data.className? ' ' + this.data.className : '') + - (this.selected ? ' selected' : ''); - dom.box.className = 'item box' + className; - dom.line.className = 'item line' + className; - dom.dot.className = 'item dot' + className; - // recalculate size - this.props.dot.height = dom.dot.offsetHeight; - this.props.dot.width = dom.dot.offsetWidth; - this.props.line.width = dom.line.offsetWidth; - this.width = dom.box.offsetWidth; - this.height = dom.box.offsetHeight; + /** + * Check if the popup must be hidden, which is the case when the mouse is no + * longer hovering on the object + * @param {{x:Number, y:Number}} pointer + * @private + */ + Network.prototype._checkHidePopup = function (pointer) { + var pointerObj = { + left: this._XconvertDOMtoCanvas(pointer.x), + top: this._YconvertDOMtoCanvas(pointer.y), + right: this._XconvertDOMtoCanvas(pointer.x), + bottom: this._YconvertDOMtoCanvas(pointer.y) + }; - this.dirty = false; + var stillOnObj = false; + if (this.popup.popupTargetType == 'node') { + stillOnObj = this.nodes[this.popup.popupTargetId].isOverlappingWith(pointerObj); + if (stillOnObj === true) { + var overNode = this._getNodeAt(pointer); + stillOnObj = overNode.id == this.popup.popupTargetId; + } + } + else { + if (this._getNodeAt(pointer) === null) { + stillOnObj = this.edges[this.popup.popupTargetId].isOverlappingWith(pointerObj); + } } - this._repaintDeleteButton(dom.box); - }; - /** - * Show the item in the DOM (when not already displayed). The items DOM will - * be created when needed. - */ - BoxItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); + if (stillOnObj === false) { + this.popupObj = undefined; + this.popup.hide(); } }; + /** - * Hide the item from the DOM (when visible) + * Set a new size for the network + * @param {string} width Width in pixels or percentage (for example '800px' + * or '50%') + * @param {string} height Height in pixels or percentage (for example '400px' + * or '30%') */ - BoxItem.prototype.hide = function() { - if (this.displayed) { - var dom = this.dom; + Network.prototype.setSize = function(width, height) { + var emitEvent = false; + var oldWidth = this.frame.canvas.width; + var oldHeight = this.frame.canvas.height; + if (width != this.constants.width || height != this.constants.height || this.frame.style.width != width || this.frame.style.height != height) { + this.frame.style.width = width; + this.frame.style.height = height; - if (dom.box.parentNode) dom.box.parentNode.removeChild(dom.box); - if (dom.line.parentNode) dom.line.parentNode.removeChild(dom.line); - if (dom.dot.parentNode) dom.dot.parentNode.removeChild(dom.dot); + this.frame.canvas.style.width = '100%'; + this.frame.canvas.style.height = '100%'; - this.top = null; - this.left = null; + this.frame.canvas.width = this.frame.canvas.clientWidth * this.pixelRatio; + this.frame.canvas.height = this.frame.canvas.clientHeight * this.pixelRatio; - this.displayed = false; + this.constants.width = width; + this.constants.height = height; + + emitEvent = true; + } + else { + // this would adapt the width of the canvas to the width from 100% if and only if + // there is a change. + + if (this.frame.canvas.width != this.frame.canvas.clientWidth * this.pixelRatio) { + this.frame.canvas.width = this.frame.canvas.clientWidth * this.pixelRatio; + emitEvent = true; + } + if (this.frame.canvas.height != this.frame.canvas.clientHeight * this.pixelRatio) { + this.frame.canvas.height = this.frame.canvas.clientHeight * this.pixelRatio; + emitEvent = true; + } + } + + if (emitEvent == true) { + this.emit('resize', {width:this.frame.canvas.width * this.pixelRatio,height:this.frame.canvas.height * this.pixelRatio, oldWidth: oldWidth * this.pixelRatio, oldHeight: oldHeight * this.pixelRatio}); } }; /** - * Reposition the item horizontally - * @Override + * Set a data set with nodes for the network + * @param {Array | DataSet | DataView} nodes The data containing the nodes. + * @private */ - BoxItem.prototype.repositionX = function() { - var start = this.conversion.toScreen(this.data.start); - var align = this.options.align; - var left; - var box = this.dom.box; - var line = this.dom.line; - var dot = this.dom.dot; + Network.prototype._setNodes = function(nodes) { + var oldNodesData = this.nodesData; - // calculate left position of the box - if (align == 'right') { - this.left = start - this.width; + if (nodes instanceof DataSet || nodes instanceof DataView) { + this.nodesData = nodes; } - else if (align == 'left') { - this.left = start; + else if (Array.isArray(nodes)) { + this.nodesData = new DataSet(); + this.nodesData.add(nodes); + } + else if (!nodes) { + this.nodesData = new DataSet(); } else { - // default or 'center' - this.left = start - this.width / 2; + throw new TypeError('Array or DataSet expected'); } - // reposition box - box.style.left = this.left + 'px'; + if (oldNodesData) { + // unsubscribe from old dataset + util.forEach(this.nodesListeners, function (callback, event) { + oldNodesData.off(event, callback); + }); + } - // reposition line - line.style.left = (start - this.props.line.width / 2) + 'px'; + // remove drawn nodes + this.nodes = {}; - // reposition dot - dot.style.left = (start - this.props.dot.width / 2) + 'px'; + if (this.nodesData) { + // subscribe to new dataset + var me = this; + util.forEach(this.nodesListeners, function (callback, event) { + me.nodesData.on(event, callback); + }); + + // draw all new nodes + var ids = this.nodesData.getIds(); + this._addNodes(ids); + } + this._updateSelection(); }; /** - * Reposition the item vertically - * @Override + * Add nodes + * @param {Number[] | String[]} ids + * @private */ - BoxItem.prototype.repositionY = function() { - var orientation = this.options.orientation; - var box = this.dom.box; - var line = this.dom.line; - var dot = this.dom.dot; - - if (orientation == 'top') { - box.style.top = (this.top || 0) + 'px'; - - line.style.top = '0'; - line.style.height = (this.parent.top + this.top + 1) + 'px'; - line.style.bottom = ''; + Network.prototype._addNodes = function(ids) { + var id; + for (var i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + var data = this.nodesData.get(id); + var node = new Node(data, this.images, this.groups, this.constants); + this.nodes[id] = node; // note: this may replace an existing node + if ((node.xFixed == false || node.yFixed == false) && (node.x === null || node.y === null)) { + var radius = 10 * 0.1*ids.length + 10; + var angle = 2 * Math.PI * Math.random(); + if (node.xFixed == false) {node.x = radius * Math.cos(angle);} + if (node.yFixed == false) {node.y = radius * Math.sin(angle);} + } + this.moving = true; } - else { // orientation 'bottom' - var itemSetHeight = this.parent.itemSet.props.height; // TODO: this is nasty - var lineHeight = itemSetHeight - this.parent.top - this.parent.height + this.top; - box.style.top = (this.parent.height - this.top - this.height || 0) + 'px'; - line.style.top = (itemSetHeight - lineHeight) + 'px'; - line.style.bottom = '0'; + this._updateNodeIndexList(); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); } - - dot.style.top = (-this.props.dot.height / 2) + 'px'; + this._updateCalculationNodes(); + this._reconnectEdges(); + this._updateValueRange(this.nodes); + this.updateLabels(); }; - module.exports = BoxItem; + /** + * Update existing nodes, or create them when not yet existing + * @param {Number[] | String[]} ids + * @private + */ + Network.prototype._updateNodes = function(ids) { + var nodesData = this.nodesData.get(ids); + var nodes = this.nodes; + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; + var node = nodes[id]; + var data = nodesData[i]; + if (node) { + // update node + node.setProperties(data, this.constants); + } + else { + // create node + node = new Node(properties, this.images, this.groups, this.constants); + nodes[id] = node; + } + } + this.moving = true; + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + this._updateNodeIndexList(); + this._updateValueRange(nodes); + this._markAllEdgesAsDirty(); + }; -/***/ }, -/* 34 */ -/***/ function(module, exports, __webpack_require__) { - var Item = __webpack_require__(31); + Network.prototype._markAllEdgesAsDirty = function() { + for (var edgeId in this.edges) { + this.edges[edgeId].colorDirty = true; + } + } /** - * @constructor PointItem - * @extends Item - * @param {Object} data Object containing parameters start - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe available options + * Remove existing nodes. If nodes do not exist, the method will just ignore it. + * @param {Number[] | String[]} ids + * @private */ - function PointItem (data, conversion, options) { - this.props = { - dot: { - top: 0, - width: 0, - height: 0 - }, - content: { - height: 0, - marginLeft: 0 - } - }; + Network.prototype._removeNodes = function(ids) { + var nodes = this.nodes; - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data); + // remove from selection + for (var i = 0, len = ids.length; i < len; i++) { + if (this.selectionObj.nodes[ids[i]] !== undefined) { + this.nodes[ids[i]].unselect(); + this._removeFromSelection(this.nodes[ids[i]]); } } - Item.call(this, data, conversion, options); - } + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; + delete nodes[id]; + } - PointItem.prototype = new Item (null, null, null); - /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible - */ - PointItem.prototype.isVisible = function(range) { - // determine visibility - // TODO: account for the real width of the item. Right now we just add 1/4 to the window - var interval = (range.end - range.start) / 4; - return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); + + this._updateNodeIndexList(); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + this._updateCalculationNodes(); + this._reconnectEdges(); + this._updateSelection(); + this._updateValueRange(nodes); }; /** - * Repaint the item + * Load edges by reading the data table + * @param {Array | DataSet | DataView} edges The data containing the edges. + * @private + * @private */ - PointItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; + Network.prototype._setEdges = function(edges) { + var oldEdgesData = this.edgesData; - // background box - dom.point = document.createElement('div'); - // className is updated in redraw() + if (edges instanceof DataSet || edges instanceof DataView) { + this.edgesData = edges; + } + else if (Array.isArray(edges)) { + this.edgesData = new DataSet(); + this.edgesData.add(edges); + } + else if (!edges) { + this.edgesData = new DataSet(); + } + else { + throw new TypeError('Array or DataSet expected'); + } - // contents box, right from the dot - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.point.appendChild(dom.content); + if (oldEdgesData) { + // unsubscribe from old dataset + util.forEach(this.edgesListeners, function (callback, event) { + oldEdgesData.off(event, callback); + }); + } - // dot at start - dom.dot = document.createElement('div'); - dom.point.appendChild(dom.dot); + // remove drawn edges + this.edges = {}; - // attach this item as attribute - dom.point['timeline-item'] = this; + if (this.edgesData) { + // subscribe to new dataset + var me = this; + util.forEach(this.edgesListeners, function (callback, event) { + me.edgesData.on(event, callback); + }); - this.dirty = true; + // draw all new nodes + var ids = this.edgesData.getIds(); + this._addEdges(ids); } - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); - } - if (!dom.point.parentNode) { - var foreground = this.parent.dom.foreground; - if (!foreground) { - throw new Error('Cannot redraw item: parent has no foreground container element'); - } - foreground.appendChild(dom.point); - } - this.displayed = true; + this._reconnectEdges(); + }; - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.point); - this._updateDataAttributes(this.dom.point); - this._updateStyle(this.dom.point); + /** + * Add edges + * @param {Number[] | String[]} ids + * @private + */ + Network.prototype._addEdges = function (ids) { + var edges = this.edges, + edgesData = this.edgesData; - // update class - var className = (this.data.className? ' ' + this.data.className : '') + - (this.selected ? ' selected' : ''); - dom.point.className = 'item point' + className; - dom.dot.className = 'item dot' + className; + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; - // recalculate size - this.width = dom.point.offsetWidth; - this.height = dom.point.offsetHeight; - this.props.dot.width = dom.dot.offsetWidth; - this.props.dot.height = dom.dot.offsetHeight; - this.props.content.height = dom.content.offsetHeight; + var oldEdge = edges[id]; + if (oldEdge) { + oldEdge.disconnect(); + } - // resize contents - dom.content.style.marginLeft = 2 * this.props.dot.width + 'px'; - //dom.content.style.marginRight = ... + 'px'; // TODO: margin right + var data = edgesData.get(id, {"showInternalIds" : true}); + edges[id] = new Edge(data, this, this.constants); + } + this.moving = true; + this._updateValueRange(edges); + this._createBezierNodes(); + this._updateCalculationNodes(); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + }; - dom.dot.style.top = ((this.height - this.props.dot.height) / 2) + 'px'; - dom.dot.style.left = (this.props.dot.width / 2) + 'px'; + /** + * Update existing edges, or create them when not yet existing + * @param {Number[] | String[]} ids + * @private + */ + Network.prototype._updateEdges = function (ids) { + var edges = this.edges, + edgesData = this.edgesData; + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; - this.dirty = false; + var data = edgesData.get(id); + var edge = edges[id]; + if (edge) { + // update edge + edge.disconnect(); + edge.setProperties(data, this.constants); + edge.connect(); + } + else { + // create edge + edge = new Edge(data, this, this.constants); + this.edges[id] = edge; + } } - this._repaintDeleteButton(dom.point); + this._createBezierNodes(); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + this.moving = true; + this._updateValueRange(edges); }; /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. + * Remove existing edges. Non existing ids will be ignored + * @param {Number[] | String[]} ids + * @private */ - PointItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); + Network.prototype._removeEdges = function (ids) { + var edges = this.edges; + + // remove from selection + for (var i = 0, len = ids.length; i < len; i++) { + if (this.selectionObj.edges[ids[i]] !== undefined) { + edges[ids[i]].unselect(); + this._removeFromSelection(edges[ids[i]]); + } + } + + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; + var edge = edges[id]; + if (edge) { + if (edge.via != null) { + delete this.sectors['support']['nodes'][edge.via.id]; + } + edge.disconnect(); + delete edges[id]; + } + } + + this.moving = true; + this._updateValueRange(edges); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); } + this._updateCalculationNodes(); }; /** - * Hide the item from the DOM (when visible) + * Reconnect all edges + * @private */ - PointItem.prototype.hide = function() { - if (this.displayed) { - if (this.dom.point.parentNode) { - this.dom.point.parentNode.removeChild(this.dom.point); + Network.prototype._reconnectEdges = function() { + var id, + nodes = this.nodes, + edges = this.edges; + for (id in nodes) { + if (nodes.hasOwnProperty(id)) { + nodes[id].edges = []; + nodes[id].dynamicEdges = []; } + } - this.top = null; - this.left = null; - - this.displayed = false; + for (id in edges) { + if (edges.hasOwnProperty(id)) { + var edge = edges[id]; + edge.from = null; + edge.to = null; + edge.connect(); + } } }; /** - * Reposition the item horizontally - * @Override + * Update the values of all object in the given array according to the current + * value range of the objects in the array. + * @param {Object} obj An object containing a set of Edges or Nodes + * The objects must have a method getValue() and + * setValueRange(min, max). + * @private */ - PointItem.prototype.repositionX = function() { - var start = this.conversion.toScreen(this.data.start); + Network.prototype._updateValueRange = function(obj) { + var id; - this.left = start - this.props.dot.width; + // determine the range of the objects + var valueMin = undefined; + var valueMax = undefined; + var valueTotal = 0; + for (id in obj) { + if (obj.hasOwnProperty(id)) { + var value = obj[id].getValue(); + if (value !== undefined) { + valueMin = (valueMin === undefined) ? value : Math.min(value, valueMin); + valueMax = (valueMax === undefined) ? value : Math.max(value, valueMax); + valueTotal += value; + } + } + } - // reposition point - this.dom.point.style.left = this.left + 'px'; + // adjust the range of all objects + if (valueMin !== undefined && valueMax !== undefined) { + for (id in obj) { + if (obj.hasOwnProperty(id)) { + obj[id].setValueRange(valueMin, valueMax, valueTotal); + } + } + } }; /** - * Reposition the item vertically - * @Override + * Redraw the network with the current data + * chart will be resized too. */ - PointItem.prototype.repositionY = function() { - var orientation = this.options.orientation, - point = this.dom.point; + Network.prototype.redraw = function() { + this.setSize(this.constants.width, this.constants.height); + this._redraw(); + }; - if (orientation == 'top') { - point.style.top = this.top + 'px'; - } - else { - point.style.top = (this.parent.height - this.top - this.height) + 'px'; + /** + * Redraw the network with the current data + * @param hidden | used to get the first estimate of the node sizes. only the nodes are drawn after which they are quickly drawn over. + * @private + */ + Network.prototype._requestRedraw = function(hidden) { + if (this.redrawRequested !== true) { + this.redrawRequested = true; + if (this.requiresTimeout === true) { + window.setTimeout(this._redraw.bind(this, hidden),0); + } + else { + window.requestAnimationFrame(this._redraw.bind(this, hidden, true)); + } } }; - module.exports = PointItem; + Network.prototype._redraw = function(hidden, requested) { + if (hidden === undefined) { + hidden = false; + } + this.redrawRequested = false; + var ctx = this.frame.canvas.getContext('2d'); + ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); -/***/ }, -/* 35 */ -/***/ function(module, exports, __webpack_require__) { + // clear the canvas + var w = this.frame.canvas.clientWidth; + var h = this.frame.canvas.clientHeight; + ctx.clearRect(0, 0, w, h); - var Hammer = __webpack_require__(19); - var Item = __webpack_require__(31); - var BackgroundGroup = __webpack_require__(32); - var RangeItem = __webpack_require__(30); + // set scaling and translation + ctx.save(); + ctx.translate(this.translation.x, this.translation.y); + ctx.scale(this.scale, this.scale); - /** - * @constructor BackgroundItem - * @extends Item - * @param {Object} data Object containing parameters start, end - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe options - */ - // TODO: implement support for the BackgroundItem just having a start, then being displayed as a sort of an annotation - function BackgroundItem (data, conversion, options) { - this.props = { - content: { - width: 0 - } + this.canvasTopLeft = { + "x": this._XconvertDOMtoCanvas(0), + "y": this._YconvertDOMtoCanvas(0) + }; + this.canvasBottomRight = { + "x": this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth), + "y": this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight) }; - this.overflow = false; // if contents can overflow (css styling), this flag is set to true - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data.id); - } - if (data.end == undefined) { - throw new Error('Property "end" missing in item ' + data.id); + if (hidden === false) { + this._doInAllSectors("_drawAllSectorNodes", ctx); + if (this.drag.dragging == false || this.drag.dragging === undefined || this.constants.hideEdgesOnDrag == false) { + this._doInAllSectors("_drawEdges", ctx); } } - Item.call(this, data, conversion, options); + if (this.drag.dragging == false || this.drag.dragging === undefined || this.constants.hideNodesOnDrag == false) { + this._doInAllSectors("_drawNodes",ctx,false); + } - this.emptyContent = false; - } + if (hidden === false) { + if (this.controlNodesActive == true) { + this._doInAllSectors("_drawControlNodes", ctx); + } + } - BackgroundItem.prototype = new Item (null, null, null); + // this._doInSupportSector("_drawNodes",ctx,true); + // this._drawTree(ctx,"#F00F0F"); - BackgroundItem.prototype.baseClassName = 'item background'; - BackgroundItem.prototype.stack = false; + // restore original scaling and translation + ctx.restore(); - /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible - */ - BackgroundItem.prototype.isVisible = function(range) { - // determine visibility - return (this.data.start < range.end) && (this.data.end > range.start); - }; + if (hidden === true) { + ctx.clearRect(0, 0, w, h); + } + } /** - * Repaint the item + * Set the translation of the network + * @param {Number} offsetX Horizontal offset + * @param {Number} offsetY Vertical offset + * @private */ - BackgroundItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; - - // background box - dom.box = document.createElement('div'); - // className is updated in redraw() - - // contents box - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); - - // Note: we do NOT attach this item as attribute to the DOM, - // such that background items cannot be selected - //dom.box['timeline-item'] = this; - - this.dirty = true; + Network.prototype._setTranslation = function(offsetX, offsetY) { + if (this.translation === undefined) { + this.translation = { + x: 0, + y: 0 + }; } - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); + if (offsetX !== undefined) { + this.translation.x = offsetX; } - if (!dom.box.parentNode) { - var background = this.parent.dom.background; - if (!background) { - throw new Error('Cannot redraw item: parent has no background container element'); - } - background.appendChild(dom.box); + if (offsetY !== undefined) { + this.translation.y = offsetY; } - this.displayed = true; - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.content); - this._updateDataAttributes(this.dom.content); - this._updateStyle(this.dom.box); + this.emit('viewChanged'); + }; - // update class - var className = (this.data.className ? (' ' + this.data.className) : '') + - (this.selected ? ' selected' : ''); - dom.box.className = this.baseClassName + className; + /** + * Get the translation of the network + * @return {Object} translation An object with parameters x and y, both a number + * @private + */ + Network.prototype._getTranslation = function() { + return { + x: this.translation.x, + y: this.translation.y + }; + }; - // determine from css whether this box has overflow - this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; + /** + * Scale the network + * @param {Number} scale Scaling factor 1.0 is unscaled + * @private + */ + Network.prototype._setScale = function(scale) { + this.scale = scale; + }; - // recalculate size - this.props.content.width = this.dom.content.offsetWidth; - this.height = 0; // set height zero, so this item will be ignored when stacking items + /** + * Get the current scale of the network + * @return {Number} scale Scaling factor 1.0 is unscaled + * @private + */ + Network.prototype._getScale = function() { + return this.scale; + }; - this.dirty = false; - } + /** + * Convert the X coordinate in DOM-space (coordinate point in browser relative to the container div) to + * the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon) + * @param {number} x + * @returns {number} + * @private + */ + Network.prototype._XconvertDOMtoCanvas = function(x) { + return (x - this.translation.x) / this.scale; }; /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. + * Convert the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon) to + * the X coordinate in DOM-space (coordinate point in browser relative to the container div) + * @param {number} x + * @returns {number} + * @private */ - BackgroundItem.prototype.show = RangeItem.prototype.show; + Network.prototype._XconvertCanvasToDOM = function(x) { + return x * this.scale + this.translation.x; + }; /** - * Hide the item from the DOM (when visible) - * @return {Boolean} changed + * Convert the Y coordinate in DOM-space (coordinate point in browser relative to the container div) to + * the Y coordinate in canvas-space (the simulation sandbox, which the camera looks upon) + * @param {number} y + * @returns {number} + * @private */ - BackgroundItem.prototype.hide = RangeItem.prototype.hide; + Network.prototype._YconvertDOMtoCanvas = function(y) { + return (y - this.translation.y) / this.scale; + }; /** - * Reposition the item horizontally - * @Override + * Convert the Y coordinate in canvas-space (the simulation sandbox, which the camera looks upon) to + * the Y coordinate in DOM-space (coordinate point in browser relative to the container div) + * @param {number} y + * @returns {number} + * @private */ - BackgroundItem.prototype.repositionX = RangeItem.prototype.repositionX; + Network.prototype._YconvertCanvasToDOM = function(y) { + return y * this.scale + this.translation.y ; + }; + /** - * Reposition the item vertically - * @Override + * + * @param {object} pos = {x: number, y: number} + * @returns {{x: number, y: number}} + * @constructor */ - BackgroundItem.prototype.repositionY = function(margin) { - var onTop = this.options.orientation === 'top'; - this.dom.content.style.top = onTop ? '' : '0'; - this.dom.content.style.bottom = onTop ? '0' : ''; - var height; + Network.prototype.canvasToDOM = function (pos) { + return {x: this._XconvertCanvasToDOM(pos.x), y: this._YconvertCanvasToDOM(pos.y)}; + }; - // special positioning for subgroups - if (this.data.subgroup !== undefined) { - var itemSubgroup = this.data.subgroup; - var subgroups = this.parent.subgroups; - var subgroupIndex = subgroups[itemSubgroup].index; - // if the orientation is top, we need to take the difference in height into account. - if (onTop == true) { - // the first subgroup will have to account for the distance from the top to the first item. - height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; - height += subgroupIndex == 0 ? margin.axis - 0.5*margin.item.vertical : 0; - var newTop = this.parent.top; - for (var subgroup in subgroups) { - if (subgroups.hasOwnProperty(subgroup)) { - if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroupIndex) { - newTop += subgroups[subgroup].height + margin.item.vertical; - } + /** + * + * @param {object} pos = {x: number, y: number} + * @returns {{x: number, y: number}} + * @constructor + */ + Network.prototype.DOMtoCanvas = function (pos) { + return {x: this._XconvertDOMtoCanvas(pos.x), y: this._YconvertDOMtoCanvas(pos.y)}; + }; + + /** + * Redraw all nodes + * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); + * @param {CanvasRenderingContext2D} ctx + * @param {Boolean} [alwaysShow] + * @private + */ + Network.prototype._drawNodes = function(ctx,alwaysShow) { + if (alwaysShow === undefined) { + alwaysShow = false; + } + + // first draw the unselected nodes + var nodes = this.nodes; + var selected = []; + + for (var id in nodes) { + if (nodes.hasOwnProperty(id)) { + nodes[id].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight); + if (nodes[id].isSelected()) { + selected.push(id); + } + else { + if (nodes[id].inArea() || alwaysShow) { + nodes[id].draw(ctx); } } + } + } - // the others will have to be offset downwards with this same distance. - newTop += subgroupIndex != 0 ? margin.axis - 0.5 * margin.item.vertical : 0; - this.dom.box.style.top = newTop + 'px'; - this.dom.box.style.bottom = ''; - } - // and when the orientation is bottom: - else { - var newTop = this.parent.top; - for (var subgroup in subgroups) { - if (subgroups.hasOwnProperty(subgroup)) { - if (subgroups[subgroup].visible == true && subgroups[subgroup].index > subgroupIndex) { - newTop += subgroups[subgroup].height + margin.item.vertical; - } - } - } - height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; - this.dom.box.style.top = newTop + 'px'; - this.dom.box.style.bottom = ''; - } - } - // and in the case of no subgroups: - else { - // we want backgrounds with groups to only show in groups. - if (this.parent instanceof BackgroundGroup) { - // if the item is not in a group: - height = Math.max(this.parent.height, - this.parent.itemSet.body.domProps.center.height, - this.parent.itemSet.body.domProps.centerContainer.height); - this.dom.box.style.top = onTop ? '0' : ''; - this.dom.box.style.bottom = onTop ? '' : '0'; - } - else { - height = this.parent.height; - // same alignment for items when orientation is top or bottom - this.dom.box.style.top = this.parent.top + 'px'; - this.dom.box.style.bottom = ''; + // draw the selected nodes on top + for (var s = 0, sMax = selected.length; s < sMax; s++) { + if (nodes[selected[s]].inArea() || alwaysShow) { + nodes[selected[s]].draw(ctx); } } - this.dom.box.style.height = height + 'px'; }; - module.exports = BackgroundItem; - - -/***/ }, -/* 36 */ -/***/ function(module, exports, __webpack_require__) { - - var keycharm = __webpack_require__(37); - var Emitter = __webpack_require__(11); - var Hammer = __webpack_require__(19); - var util = __webpack_require__(1); - /** - * Turn an element into an clickToUse element. - * When not active, the element has a transparent overlay. When the overlay is - * clicked, the mode is changed to active. - * When active, the element is displayed with a blue border around it, and - * the interactive contents of the element can be used. When clicked outside - * the element, the elements mode is changed to inactive. - * @param {Element} container - * @constructor + * Redraw all edges + * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); + * @param {CanvasRenderingContext2D} ctx + * @private */ - function Activator(container) { - this.active = false; - - this.dom = { - container: container - }; - - this.dom.overlay = document.createElement('div'); - this.dom.overlay.className = 'overlay'; - - this.dom.container.appendChild(this.dom.overlay); - - this.hammer = Hammer(this.dom.overlay, {prevent_default: false}); - this.hammer.on('tap', this._onTapOverlay.bind(this)); - - // block all touch events (except tap) - var me = this; - var events = [ - 'touch', 'pinch', - 'doubletap', 'hold', - 'dragstart', 'drag', 'dragend', - 'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox - ]; - events.forEach(function (event) { - me.hammer.on(event, function (event) { - event.stopPropagation(); - }); - }); - - // attach a tap event to the window, in order to deactivate when clicking outside the timeline - this.windowHammer = Hammer(window, {prevent_default: false}); - this.windowHammer.on('tap', function (event) { - // deactivate when clicked outside the container - if (!_hasParent(event.target, container)) { - me.deactivate(); + Network.prototype._drawEdges = function(ctx) { + var edges = this.edges; + for (var id in edges) { + if (edges.hasOwnProperty(id)) { + var edge = edges[id]; + edge.setScale(this.scale); + if (edge.connected) { + edges[id].draw(ctx); + } } - }); - - if (this.keycharm !== undefined) { - this.keycharm.destroy(); } - this.keycharm = keycharm(); - - // keycharm listener only bounded when active) - this.escListener = this.deactivate.bind(this); - } - - // turn into an event emitter - Emitter(Activator.prototype); - - // The currently active activator - Activator.current = null; + }; /** - * Destroy the activator. Cleans up all created DOM and event listeners + * Redraw all edges + * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); + * @param {CanvasRenderingContext2D} ctx + * @private */ - Activator.prototype.destroy = function () { - this.deactivate(); - - // remove dom - this.dom.overlay.parentNode.removeChild(this.dom.overlay); - - // cleanup hammer instances - this.hammer = null; - this.windowHammer = null; - // FIXME: cleaning up hammer instances doesn't work (Timeline not removed from memory) + Network.prototype._drawControlNodes = function(ctx) { + var edges = this.edges; + for (var id in edges) { + if (edges.hasOwnProperty(id)) { + edges[id]._drawControlNodes(ctx); + } + } }; /** - * Activate the element - * Overlay is hidden, element is decorated with a blue shadow border + * Find a stable position for all nodes + * @private */ - Activator.prototype.activate = function () { - // we allow only one active activator at a time - if (Activator.current) { - Activator.current.deactivate(); + Network.prototype._stabilize = function() { + if (this.constants.freezeForStabilization == true) { + this._freezeDefinedNodes(); } - Activator.current = this; - this.active = true; - this.dom.overlay.style.display = 'none'; - util.addClassName(this.dom.container, 'vis-active'); + // find stable position + var count = 0; + while (this.moving && count < this.constants.stabilizationIterations) { + this._physicsTick(); + count++; + } - this.emit('change'); - this.emit('activate'); - // ugly hack: bind ESC after emitting the events, as the Network rebinds all - // keyboard events on a 'change' event - this.keycharm.bind('esc', this.escListener); + if (this.constants.zoomExtentOnStabilize == true) { + this.zoomExtent({duration:0}, false, true); + } + + if (this.constants.freezeForStabilization == true) { + this._restoreFrozenNodes(); + } + + this.emit("stabilizationIterationsDone"); }; /** - * Deactivate the element - * Overlay is displayed on top of the element + * When initializing and stabilizing, we can freeze nodes with a predefined position. This greatly speeds up stabilization + * because only the supportnodes for the smoothCurves have to settle. + * + * @private */ - Activator.prototype.deactivate = function () { - this.active = false; - this.dom.overlay.style.display = ''; - util.removeClassName(this.dom.container, 'vis-active'); - this.keycharm.unbind('esc', this.escListener); - - this.emit('change'); - this.emit('deactivate'); + Network.prototype._freezeDefinedNodes = function() { + var nodes = this.nodes; + for (var id in nodes) { + if (nodes.hasOwnProperty(id)) { + if (nodes[id].x != null && nodes[id].y != null) { + nodes[id].fixedData.x = nodes[id].xFixed; + nodes[id].fixedData.y = nodes[id].yFixed; + nodes[id].xFixed = true; + nodes[id].yFixed = true; + } + } + } }; /** - * Handle a tap event: activate the container - * @param event + * Unfreezes the nodes that have been frozen by _freezeDefinedNodes. + * * @private */ - Activator.prototype._onTapOverlay = function (event) { - // activate the container - this.activate(); - event.stopPropagation(); + Network.prototype._restoreFrozenNodes = function() { + var nodes = this.nodes; + for (var id in nodes) { + if (nodes.hasOwnProperty(id)) { + if (nodes[id].fixedData.x != null) { + nodes[id].xFixed = nodes[id].fixedData.x; + nodes[id].yFixed = nodes[id].fixedData.y; + } + } + } }; + /** - * Test whether the element has the requested parent element somewhere in - * its chain of parent nodes. - * @param {HTMLElement} element - * @param {HTMLElement} parent - * @returns {boolean} Returns true when the parent is found somewhere in the - * chain of parent nodes. + * Check if any of the nodes is still moving + * @param {number} vmin the minimum velocity considered as 'moving' + * @return {boolean} true if moving, false if non of the nodes is moving * @private */ - function _hasParent(element, parent) { - while (element) { - if (element === parent) { - return true + Network.prototype._isMoving = function(vmin) { + var nodes = this.nodes; + for (var id in nodes) { + if (nodes[id] !== undefined) { + if (nodes[id].isMoving(vmin) == true) { + return true; + } } - element = element.parentNode; } return false; - } - - module.exports = Activator; - + }; -/***/ }, -/* 37 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; /** - * Created by Alex on 11/6/2014. + * /** + * Perform one discrete step for all nodes + * + * @private */ + Network.prototype._discreteStepNodes = function() { + var interval = this.physicsDiscreteStepsize; + var nodes = this.nodes; + var nodeId; + var nodesPresent = false; - // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 - // if the module has no dependencies, the above pattern can be simplified to - (function (root, factory) { - if (true) { - // AMD. Register as an anonymous module. - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (typeof exports === 'object') { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(); - } else { - // Browser globals (root is window) - root.keycharm = factory(); + if (this.constants.maxVelocity > 0) { + for (nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + nodes[nodeId].discreteStepLimited(interval, this.constants.maxVelocity); + nodesPresent = true; + } + } + } + else { + for (nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + nodes[nodeId].discreteStep(interval); + nodesPresent = true; + } + } } - }(this, function () { - - function keycharm(options) { - var preventDefault = options && options.preventDefault || false; - - var container = options && options.container || window; - var _exportFunctions = {}; - var _bound = {keydown:{}, keyup:{}}; - var _keys = {}; - var i; - - // a - z - for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} - // A - Z - for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} - // 0 - 9 - for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} - // F1 - F12 - for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} - // num0 - num9 - for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} - - // numpad misc - _keys['num*'] = {code:106, shift: false}; - _keys['num+'] = {code:107, shift: false}; - _keys['num-'] = {code:109, shift: false}; - _keys['num/'] = {code:111, shift: false}; - _keys['num.'] = {code:110, shift: false}; - // arrows - _keys['left'] = {code:37, shift: false}; - _keys['up'] = {code:38, shift: false}; - _keys['right'] = {code:39, shift: false}; - _keys['down'] = {code:40, shift: false}; - // extra keys - _keys['space'] = {code:32, shift: false}; - _keys['enter'] = {code:13, shift: false}; - _keys['shift'] = {code:16, shift: undefined}; - _keys['esc'] = {code:27, shift: false}; - _keys['backspace'] = {code:8, shift: false}; - _keys['tab'] = {code:9, shift: false}; - _keys['ctrl'] = {code:17, shift: false}; - _keys['alt'] = {code:18, shift: false}; - _keys['delete'] = {code:46, shift: false}; - _keys['pageup'] = {code:33, shift: false}; - _keys['pagedown'] = {code:34, shift: false}; - // symbols - _keys['='] = {code:187, shift: false}; - _keys['-'] = {code:189, shift: false}; - _keys[']'] = {code:221, shift: false}; - _keys['['] = {code:219, shift: false}; - - - var down = function(event) {handleEvent(event,'keydown');}; - var up = function(event) {handleEvent(event,'keyup');}; + if (nodesPresent == true) { + var vminCorrected = this.constants.minVelocity / Math.max(this.scale,0.05); + if (vminCorrected > 0.5*this.constants.maxVelocity) { + return true; + } + else { + return this._isMoving(vminCorrected); + } + } + return false; + }; - // handle the actualy bound key with the event - var handleEvent = function(event,type) { - if (_bound[type][event.keyCode] !== undefined) { - var bound = _bound[type][event.keyCode]; - for (var i = 0; i < bound.length; i++) { - if (bound[i].shift === undefined) { - bound[i].fn(event); - } - else if (bound[i].shift == true && event.shiftKey == true) { - bound[i].fn(event); - } - else if (bound[i].shift == false && event.shiftKey == false) { - bound[i].fn(event); - } - } - if (preventDefault == true) { - event.preventDefault(); - } - } - }; + Network.prototype._revertPhysicsState = function() { + var nodes = this.nodes; + for (var nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + nodes[nodeId].revertPosition(); + } + } + } - // bind a key to a callback - _exportFunctions.bind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (_bound[type][_keys[key].code] === undefined) { - _bound[type][_keys[key].code] = []; - } - _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); - }; + Network.prototype._revertPhysicsTick = function() { + this._doInAllActiveSectors("_revertPhysicsState"); + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this._doInSupportSector("_revertPhysicsState"); + } + } + /** + * A single simulation step (or "tick") in the physics simulation + * + * @private + */ + Network.prototype._physicsTick = function() { + if (!this.freezeSimulationEnabled) { + if (this.moving == true) { + var mainMovingStatus = false; + var supportMovingStatus = false; - // bind all keys to a call back (demo purposes) - _exportFunctions.bindAll = function(callback, type) { - if (type === undefined) { - type = 'keydown'; - } - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - _exportFunctions.bind(key,callback,type); - } + this._doInAllActiveSectors("_initializeForceCalculation"); + var mainMoving = this._doInAllActiveSectors("_discreteStepNodes"); + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + supportMovingStatus = this._doInSupportSector("_discreteStepNodes"); } - }; - // get the key label from an event - _exportFunctions.getKey = function(event) { - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { - return key; - } - else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { - return key; - } - else if (event.keyCode == _keys[key].code && key == 'shift') { - return key; - } - } + // gather movement data from all sectors, if one moves, we are NOT stabilzied + for (var i = 0; i < mainMoving.length; i++) { + mainMovingStatus = mainMoving[i] || mainMovingStatus; } - return "unknown key, currently not supported"; - }; - // unbind either a specific callback from a key or all of them (by leaving callback undefined) - _exportFunctions.unbind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (callback !== undefined) { - var newBindings = []; - var bound = _bound[type][_keys[key].code]; - if (bound !== undefined) { - for (var i = 0; i < bound.length; i++) { - if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { - newBindings.push(_bound[type][_keys[key].code][i]); - } - } - } - _bound[type][_keys[key].code] = newBindings; + // determine if the network has stabilzied + this.moving = mainMovingStatus || supportMovingStatus; + if (this.moving == false) { + this._revertPhysicsTick(); } else { - _bound[type][_keys[key].code] = []; + // this is here to ensure that there is no start event when the network is already stable. + if (this.startedStabilization == false) { + this.emit("startStabilization"); + this.startedStabilization = true; + } } - }; - // reset all bound variables. - _exportFunctions.reset = function() { - _bound = {keydown:{}, keyup:{}}; - }; + this.stabilizationIterations++; + } + } + }; - // unbind all listeners and reset all variables. - _exportFunctions.destroy = function() { - _bound = {keydown:{}, keyup:{}}; - container.removeEventListener('keydown', down, true); - container.removeEventListener('keyup', up, true); - }; - // create listeners. - container.addEventListener('keydown',down,true); - container.addEventListener('keyup',up,true); + /** + * This function runs one step of the animation. It calls an x amount of physics ticks and one render tick. + * It reschedules itself at the beginning of the function + * + * @private + */ + Network.prototype._animationStep = function() { + // reset the timer so a new scheduled animation step can be set + this.timer = undefined; - // return the public functions. - return _exportFunctions; + if (this.requiresTimeout == true) { + // this schedules a new animation step + this.start(); } - return keycharm; - })); - + // handle the keyboad movement + this._handleNavigation(); + // check if the physics have settled + if (this.moving == true) { + var startTime = Date.now(); + this._physicsTick(); + var physicsTime = Date.now() - startTime; + // run double speed if it is a little graph + if ((this.renderTimestep - this.renderTime > 2 * physicsTime || this.runDoubleSpeed == true) && this.moving == true) { + this._physicsTick(); -/***/ }, -/* 38 */ -/***/ function(module, exports, __webpack_require__) { - - var Hammer = __webpack_require__(19); - var util = __webpack_require__(1); - var Component = __webpack_require__(23); - var moment = __webpack_require__(2); - var locales = __webpack_require__(39); - - /** - * A custom time bar - * @param {{range: Range, dom: Object}} body - * @param {Object} [options] Available parameters: - * {Boolean} [showCustomTime] - * @constructor CustomTime - * @extends Component - */ - - function CustomTime (body, options) { - this.body = body; + // this makes sure there is no jitter. The decision is taken once to run it at double speed. + if (this.renderTime != 0) { + this.runDoubleSpeed = true + } + } + } - // default options - this.defaultOptions = { - showCustomTime: false, - locales: locales, - locale: 'en', - id: 0 - }; - this.options = util.extend({}, this.defaultOptions); + var renderStartTime = Date.now(); + this._redraw(); + this.renderTime = Date.now() - renderStartTime; - if (options && options.time) { - this.customTime = options.time; - } else { - this.customTime = new Date(); + if (this.requiresTimeout == false) { + // this schedules a new animation step + this.start(); } - - this.eventParams = {}; // stores state parameters while dragging the bar - - // create the DOM - this._create(); + }; - this.setOptions(options); + if (typeof window !== 'undefined') { + window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || + window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; } - CustomTime.prototype = new Component(); - /** - * Set options for the component. Options will be merged in current options. - * @param {Object} options Available parameters: - * {boolean} [showCustomTime] + * Schedule a animation step with the refreshrate interval. */ - CustomTime.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - util.selectiveExtend(['showCustomTime', 'locale', 'locales', 'id'], this.options, options); - - // Triggered by addCustomTimeBar, redraw to add new bar - if (this.options.id) { - this.redraw(); + Network.prototype.start = function() { + if (this.freezeSimulationEnabled == true) { + this.moving = false; + } + if (this.moving == true || this.xIncrement != 0 || this.yIncrement != 0 || this.zoomIncrement != 0 || this.animating == true) { + if (!this.timer) { + if (this.requiresTimeout == true) { + this.timer = window.setTimeout(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function + } + else { + this.timer = window.requestAnimationFrame(this._animationStep.bind(this)); // wait this.renderTimeStep milliseconds and perform the animation step function + } + } + } + else { + this._requestRedraw(); + // this check is to ensure that the network does not emit these events if it was already stabilized and setOptions is called (setting moving to true and calling start()) + if (this.stabilizationIterations > 1) { + // trigger the "stabilized" event. + // The event is triggered on the next tick, to prevent the case that + // it is fired while initializing the Network, in which case you would not + // be able to catch it + var me = this; + var params = { + iterations: me.stabilizationIterations + }; + this.stabilizationIterations = 0; + this.startedStabilization = false; + setTimeout(function () { + me.emit("stabilized", params); + }, 0); + } + else { + this.stabilizationIterations = 0; } } }; + /** - * Create the DOM for the custom time + * Move the network according to the keyboard presses. + * * @private */ - CustomTime.prototype._create = function() { - var bar = document.createElement('div'); - bar.className = 'customtime'; - bar.style.position = 'absolute'; - bar.style.top = '0px'; - bar.style.height = '100%'; - this.bar = bar; - - var drag = document.createElement('div'); - drag.style.position = 'relative'; - drag.style.top = '0px'; - drag.style.left = '-10px'; - drag.style.height = '100%'; - drag.style.width = '20px'; - bar.appendChild(drag); - - // attach event listeners - this.hammer = Hammer(bar, { - prevent_default: true - }); - this.hammer.on('dragstart', this._onDragStart.bind(this)); - this.hammer.on('drag', this._onDrag.bind(this)); - this.hammer.on('dragend', this._onDragEnd.bind(this)); + Network.prototype._handleNavigation = function() { + if (this.xIncrement != 0 || this.yIncrement != 0) { + var translation = this._getTranslation(); + this._setTranslation(translation.x+this.xIncrement, translation.y+this.yIncrement); + } + if (this.zoomIncrement != 0) { + var center = { + x: this.frame.canvas.clientWidth / 2, + y: this.frame.canvas.clientHeight / 2 + }; + this._zoom(this.scale*(1 + this.zoomIncrement), center); + } }; + /** - * Destroy the CustomTime bar + * Freeze the _animationStep */ - CustomTime.prototype.destroy = function () { - this.options.showCustomTime = false; - this.redraw(); // will remove the bar from the DOM - - this.hammer.enable(false); - this.hammer = null; - - this.body = null; + Network.prototype.freezeSimulation = function(freeze) { + if (freeze == true) { + this.freezeSimulationEnabled = true; + this.moving = false; + } + else { + this.freezeSimulationEnabled = false; + this.moving = true; + this.start(); + } }; + /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * This function cleans the support nodes if they are not needed and adds them when they are. + * + * @param {boolean} [disableStart] + * @private */ - CustomTime.prototype.redraw = function () { - if (this.options.showCustomTime) { - var parent = this.body.dom.backgroundVertical; - if (this.bar.parentNode != parent) { - // attach to the dom - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); + Network.prototype._configureSmoothCurves = function(disableStart) { + if (disableStart === undefined) { + disableStart = true; + } + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this._createBezierNodes(); + // cleanup unused support nodes + for (var nodeId in this.sectors['support']['nodes']) { + if (this.sectors['support']['nodes'].hasOwnProperty(nodeId)) { + if (this.edges[this.sectors['support']['nodes'][nodeId].parentEdgeId] === undefined) { + delete this.sectors['support']['nodes'][nodeId]; + } } - parent.appendChild(this.bar); } - - var x = this.body.util.toScreen(this.customTime); - - var locale = this.options.locales[this.options.locale]; - var title = locale.time + ': ' + moment(this.customTime).format('dddd, MMMM Do YYYY, H:mm:ss'); - title = title.charAt(0).toUpperCase() + title.substring(1); - - this.bar.style.left = x + 'px'; - this.bar.title = title; } else { - // remove the line from the DOM - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); + // delete the support nodes + this.sectors['support']['nodes'] = {}; + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + this.edges[edgeId].via = null; + } } } - return false; - }; - /** - * Set custom time. - * @param {Date | number | string} time - */ - CustomTime.prototype.setCustomTime = function(time) { - this.customTime = util.convert(time, 'Date'); - this.redraw(); + this._updateCalculationNodes(); + if (!disableStart) { + this.moving = true; + this.start(); + } }; - /** - * Retrieve the current custom time. - * @return {Date} customTime - */ - CustomTime.prototype.getCustomTime = function() { - return new Date(this.customTime.valueOf()); - }; /** - * Start moving horizontally - * @param {Event} event + * Bezier curves require an anchor point to calculate the smooth flow. These points are nodes. These nodes are invisible but + * are used for the force calculation. + * * @private */ - CustomTime.prototype._onDragStart = function(event) { - this.eventParams.dragging = true; - this.eventParams.customTime = this.customTime; - - event.stopPropagation(); - event.preventDefault(); + Network.prototype._createBezierNodes = function() { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + var edge = this.edges[edgeId]; + if (edge.via == null) { + var nodeId = "edgeId:".concat(edge.id); + this.sectors['support']['nodes'][nodeId] = new Node( + {id:nodeId, + mass:1, + shape:'circle', + image:"", + internalMultiplier:1 + },{},{},this.constants); + edge.via = this.sectors['support']['nodes'][nodeId]; + edge.via.parentEdgeId = edge.id; + edge.positionBezierNode(); + } + } + } + } }; /** - * Perform moving operating. - * @param {Event} event + * load the functions that load the mixins into the prototype. + * * @private */ - CustomTime.prototype._onDrag = function (event) { - if (!this.eventParams.dragging) return; - - var deltaX = event.gesture.deltaX, - x = this.body.util.toScreen(this.eventParams.customTime) + deltaX, - time = this.body.util.toTime(x); - - this.setCustomTime(time); - - // fire a timechange event - this.body.emitter.emit('timechange', { - id: this.options.id, - time: new Date(this.customTime.valueOf()) - }); - - event.stopPropagation(); - event.preventDefault(); + Network.prototype._initializeMixinLoaders = function () { + for (var mixin in MixinLoader) { + if (MixinLoader.hasOwnProperty(mixin)) { + Network.prototype[mixin] = MixinLoader[mixin]; + } + } }; /** - * Stop moving operating. - * @param {event} event - * @private + * Load the XY positions of the nodes into the dataset. */ - CustomTime.prototype._onDragEnd = function (event) { - if (!this.eventParams.dragging) return; - - // fire a timechanged event - this.body.emitter.emit('timechanged', { - id: this.options.id, - time: new Date(this.customTime.valueOf()) - }); - - event.stopPropagation(); - event.preventDefault(); - }; - - module.exports = CustomTime; - - -/***/ }, -/* 39 */ -/***/ function(module, exports, __webpack_require__) { - - // English - exports['en'] = { - current: 'current', - time: 'time' - }; - exports['en_EN'] = exports['en']; - exports['en_US'] = exports['en']; - - // Dutch - exports['nl'] = { - custom: 'aangepaste', - time: 'tijd' + Network.prototype.storePosition = function() { + console.log("storePosition is depricated: use .storePositions() from now on.") + this.storePositions(); }; - exports['nl_NL'] = exports['nl']; - exports['nl_BE'] = exports['nl']; - - -/***/ }, -/* 40 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var Component = __webpack_require__(23); - var TimeStep = __webpack_require__(27); - var DateUtil = __webpack_require__(24); - var moment = __webpack_require__(2); /** - * A horizontal time axis - * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body - * @param {Object} [options] See TimeAxis.setOptions for the available - * options. - * @constructor TimeAxis - * @extends Component + * Load the XY positions of the nodes into the dataset. */ - function TimeAxis (body, options) { - this.dom = { - foreground: null, - lines: [], - majorTexts: [], - minorTexts: [], - redundant: { - lines: [], - majorTexts: [], - minorTexts: [] + Network.prototype.storePositions = function() { + var dataArray = []; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + var allowedToMoveX = !this.nodes.xFixed; + var allowedToMoveY = !this.nodes.yFixed; + if (this.nodesData._data[nodeId].x != Math.round(node.x) || this.nodesData._data[nodeId].y != Math.round(node.y)) { + dataArray.push({id:nodeId,x:Math.round(node.x),y:Math.round(node.y),allowedToMoveX:allowedToMoveX,allowedToMoveY:allowedToMoveY}); + } } - }; - this.props = { - range: { - start: 0, - end: 0, - minimumStep: 0 - }, - lineTop: 0 - }; - - this.defaultOptions = { - orientation: 'bottom', // supported: 'top', 'bottom' - // TODO: implement timeaxis orientations 'left' and 'right' - showMinorLabels: true, - showMajorLabels: true, - format: null, - timeAxis: null - }; - this.options = util.extend({}, this.defaultOptions); - - this.body = body; - - // create the HTML DOM - this._create(); - - this.setOptions(options); - } - - TimeAxis.prototype = new Component(); + } + this.nodesData.update(dataArray); + }; /** - * Set options for the TimeAxis. - * Parameters will be merged in current options. - * @param {Object} options Available options: - * {string} [orientation] - * {boolean} [showMinorLabels] - * {boolean} [showMajorLabels] + * Return the positions of the nodes. */ - TimeAxis.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - util.selectiveExtend([ - 'orientation', - 'showMinorLabels', - 'showMajorLabels', - 'hiddenDates', - 'format', - 'timeAxis' - ], this.options, options); - - // apply locale to moment.js - // TODO: not so nice, this is applied globally to moment.js - if ('locale' in options) { - if (typeof moment.locale === 'function') { - // moment.js 2.8.1+ - moment.locale(options.locale); + Network.prototype.getPositions = function(ids) { + var dataArray = {}; + if (ids !== undefined) { + if (Array.isArray(ids) == true) { + for (var i = 0; i < ids.length; i++) { + if (this.nodes[ids[i]] !== undefined) { + var node = this.nodes[ids[i]]; + dataArray[ids[i]] = {x: Math.round(node.x), y: Math.round(node.y)}; + } } - else { - moment.lang(options.locale); + } + else { + if (this.nodes[ids] !== undefined) { + var node = this.nodes[ids]; + dataArray[ids] = {x: Math.round(node.x), y: Math.round(node.y)}; + } + } + } + else { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + dataArray[nodeId] = {x: Math.round(node.x), y: Math.round(node.y)}; } } } + return dataArray; }; + + /** - * Create the HTML DOM for the TimeAxis + * Center a node in view. + * + * @param {Number} nodeId + * @param {Number} [options] */ - TimeAxis.prototype._create = function() { - this.dom.foreground = document.createElement('div'); - this.dom.background = document.createElement('div'); + Network.prototype.focusOnNode = function (nodeId, options) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (options === undefined) { + options = {}; + } + var nodePosition = {x: this.nodes[nodeId].x, y: this.nodes[nodeId].y}; + options.position = nodePosition; + options.lockedOnNode = nodeId; - this.dom.foreground.className = 'timeaxis foreground'; - this.dom.background.className = 'timeaxis background'; + this.moveTo(options) + } + else { + console.log("This nodeId cannot be found."); + } }; /** - * Destroy the TimeAxis + * + * @param {Object} options | options.offset = {x:Number, y:Number} // offset from the center in DOM pixels + * | options.scale = Number // scale to move to + * | options.position = {x:Number, y:Number} // position to move to + * | options.animation = {duration:Number, easingFunction:String} || Boolean // position to move to */ - TimeAxis.prototype.destroy = function() { - // remove from DOM - if (this.dom.foreground.parentNode) { - this.dom.foreground.parentNode.removeChild(this.dom.foreground); - } - if (this.dom.background.parentNode) { - this.dom.background.parentNode.removeChild(this.dom.background); + Network.prototype.moveTo = function (options) { + if (options === undefined) { + options = {}; + return; } + if (options.offset === undefined) {options.offset = {x: 0, y: 0}; } + if (options.offset.x === undefined) {options.offset.x = 0; } + if (options.offset.y === undefined) {options.offset.y = 0; } + if (options.scale === undefined) {options.scale = this._getScale(); } + if (options.position === undefined) {options.position = this._getTranslation();} + if (options.animation === undefined) {options.animation = {duration:0}; } + if (options.animation === false ) {options.animation = {duration:0}; } + if (options.animation === true ) {options.animation = {}; } + if (options.animation.duration === undefined) {options.animation.duration = 1000; } // default duration + if (options.animation.easingFunction === undefined) {options.animation.easingFunction = "easeInOutQuad"; } // default easing function - this.body = null; + this.animateView(options); }; /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * + * @param {Object} options | options.offset = {x:Number, y:Number} // offset from the center in DOM pixels + * | options.time = Number // animation time in milliseconds + * | options.scale = Number // scale to animate to + * | options.position = {x:Number, y:Number} // position to animate to + * | options.easingFunction = String // linear, easeInQuad, easeOutQuad, easeInOutQuad, + * // easeInCubic, easeOutCubic, easeInOutCubic, + * // easeInQuart, easeOutQuart, easeInOutQuart, + * // easeInQuint, easeOutQuint, easeInOutQuint */ - TimeAxis.prototype.redraw = function () { - var options = this.options; - var props = this.props; - var foreground = this.dom.foreground; - var background = this.dom.background; - - // determine the correct parent DOM element (depending on option orientation) - var parent = (options.orientation == 'top') ? this.body.dom.top : this.body.dom.bottom; - var parentChanged = (foreground.parentNode !== parent); - - // calculate character width and height - this._calculateCharSize(); - - // TODO: recalculate sizes only needed when parent is resized or options is changed - var orientation = this.options.orientation, - showMinorLabels = this.options.showMinorLabels, - showMajorLabels = this.options.showMajorLabels; - - // determine the width and height of the elemens for the axis - props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; - props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; - props.height = props.minorLabelHeight + props.majorLabelHeight; - props.width = foreground.offsetWidth; + Network.prototype.animateView = function (options) { + if (options === undefined) { + options = {}; + return; + } - props.minorLineHeight = this.body.domProps.root.height - props.majorLabelHeight - - (options.orientation == 'top' ? this.body.domProps.bottom.height : this.body.domProps.top.height); - props.minorLineWidth = 1; // TODO: really calculate width - props.majorLineHeight = props.minorLineHeight + props.majorLabelHeight; - props.majorLineWidth = 1; // TODO: really calculate width + // release if something focussed on the node + this.releaseNode(); + if (options.locked == true) { + this.lockedOnNodeId = options.lockedOnNode; + this.lockedOnNodeOffset = options.offset; + } - // take foreground and background offline while updating (is almost twice as fast) - var foregroundNextSibling = foreground.nextSibling; - var backgroundNextSibling = background.nextSibling; - foreground.parentNode && foreground.parentNode.removeChild(foreground); - background.parentNode && background.parentNode.removeChild(background); + // forcefully complete the old animation if it was still running + if (this.easingTime != 0) { + this._transitionRedraw(1); // by setting easingtime to 1, we finish the animation. + } - foreground.style.height = this.props.height + 'px'; + this.sourceScale = this._getScale(); + this.sourceTranslation = this._getTranslation(); + this.targetScale = options.scale; - this._repaintLabels(); + // set the scale so the viewCenter is based on the correct zoom level. This is overridden in the transitionRedraw + // but at least then we'll have the target transition + this._setScale(this.targetScale); + var viewCenter = this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); + var distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node + x: viewCenter.x - options.position.x, + y: viewCenter.y - options.position.y + }; + this.targetTranslation = { + x: this.sourceTranslation.x + distanceFromCenter.x * this.targetScale + options.offset.x, + y: this.sourceTranslation.y + distanceFromCenter.y * this.targetScale + options.offset.y + }; - // put DOM online again (at the same place) - if (foregroundNextSibling) { - parent.insertBefore(foreground, foregroundNextSibling); - } - else { - parent.appendChild(foreground) - } - if (backgroundNextSibling) { - this.body.dom.backgroundVertical.insertBefore(background, backgroundNextSibling); + // if the time is set to 0, don't do an animation + if (options.animation.duration == 0) { + if (this.lockedOnNodeId != null) { + this._classicRedraw = this._redraw; + this._redraw = this._lockedRedraw; + } + else { + this._setScale(this.targetScale); + this._setTranslation(this.targetTranslation.x, this.targetTranslation.y); + this._redraw(); + } } else { - this.body.dom.backgroundVertical.appendChild(background) + this.animating = true; + this.animationSpeed = 1 / (this.renderRefreshRate * options.animation.duration * 0.001) || 1 / this.renderRefreshRate; + this.animationEasingFunction = options.animation.easingFunction; + this._classicRedraw = this._redraw; + this._redraw = this._transitionRedraw; + this._redraw(); + this.start(); } - - return this._isResized() || parentChanged; }; /** - * Repaint major and minor text labels and vertical grid lines + * used to animate smoothly by hijacking the redraw function. * @private */ - TimeAxis.prototype._repaintLabels = function () { - var orientation = this.options.orientation; + Network.prototype._lockedRedraw = function () { + var nodePosition = {x: this.nodes[this.lockedOnNodeId].x, y: this.nodes[this.lockedOnNodeId].y}; + var viewCenter = this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); + var distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node + x: viewCenter.x - nodePosition.x, + y: viewCenter.y - nodePosition.y + }; + var sourceTranslation = this._getTranslation(); + var targetTranslation = { + x: sourceTranslation.x + distanceFromCenter.x * this.scale + this.lockedOnNodeOffset.x, + y: sourceTranslation.y + distanceFromCenter.y * this.scale + this.lockedOnNodeOffset.y + }; - // calculate range and step (step such that we have space for 7 characters per label) - var start = util.convert(this.body.range.start, 'Number'); - var end = util.convert(this.body.range.end, 'Number'); - var timeLabelsize = this.body.util.toTime((this.props.minorCharWidth || 10) * 7).valueOf(); - var minimumStep = timeLabelsize - DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this.body.range, timeLabelsize); - minimumStep -= this.body.util.toTime(0).valueOf(); + this._setTranslation(targetTranslation.x,targetTranslation.y); + this._classicRedraw(); + } - var step = new TimeStep(new Date(start), new Date(end), minimumStep, this.body.hiddenDates); - if (this.options.format) { - step.setFormat(this.options.format); - } - if (this.options.timeAxis) { - step.setScale(this.options.timeAxis); + Network.prototype.releaseNode = function () { + if (this.lockedOnNodeId != null) { + this._redraw = this._classicRedraw; + this.lockedOnNodeId = null; + this.lockedOnNodeOffset = null; } - this.step = step; - - // Move all DOM elements to a "redundant" list, where they - // can be picked for re-use, and clear the lists with lines and texts. - // At the end of the function _repaintLabels, left over elements will be cleaned up - var dom = this.dom; - dom.redundant.lines = dom.lines; - dom.redundant.majorTexts = dom.majorTexts; - dom.redundant.minorTexts = dom.minorTexts; - dom.lines = []; - dom.majorTexts = []; - dom.minorTexts = []; - - var cur; - var x = 0; - var isMajor; - var xPrev = 0; - var width = 0; - var prevLine; - var xFirstMajorLabel = undefined; - var max = 0; - var className; + } - step.first(); - while (step.hasNext() && max < 1000) { - max++; + /** + * + * @param easingTime + * @private + */ + Network.prototype._transitionRedraw = function (easingTime) { + this.easingTime = easingTime || this.easingTime + this.animationSpeed; + this.easingTime += this.animationSpeed; - cur = step.getCurrent(); - isMajor = step.isMajor(); - className = step.getClassName(); + var progress = util.easingFunctions[this.animationEasingFunction](this.easingTime); - xPrev = x; - x = this.body.util.toScreen(cur); - width = x - xPrev; - if (prevLine) { - prevLine.style.width = width + 'px'; - } + this._setScale(this.sourceScale + (this.targetScale - this.sourceScale) * progress); + this._setTranslation( + this.sourceTranslation.x + (this.targetTranslation.x - this.sourceTranslation.x) * progress, + this.sourceTranslation.y + (this.targetTranslation.y - this.sourceTranslation.y) * progress + ); - if (this.options.showMinorLabels) { - this._repaintMinorText(x, step.getLabelMinor(), orientation, className); - } + this._classicRedraw(); - if (isMajor && this.options.showMajorLabels) { - if (x > 0) { - if (xFirstMajorLabel == undefined) { - xFirstMajorLabel = x; - } - this._repaintMajorText(x, step.getLabelMajor(), orientation, className); - } - prevLine = this._repaintMajorLine(x, orientation, className); + // cleanup + if (this.easingTime >= 1.0) { + this.animating = false; + this.easingTime = 0; + if (this.lockedOnNodeId != null) { + this._redraw = this._lockedRedraw; } else { - prevLine = this._repaintMinorLine(x, orientation, className); - } - - step.next(); - } - - // create a major label on the left when needed - if (this.options.showMajorLabels) { - var leftTime = this.body.util.toTime(0), - leftText = step.getLabelMajor(leftTime), - widthText = leftText.length * (this.props.majorCharWidth || 10) + 10; // upper bound estimation - - if (xFirstMajorLabel == undefined || widthText < xFirstMajorLabel) { - this._repaintMajorText(0, leftText, orientation, className); + this._redraw = this._classicRedraw; } + this.emit("animationFinished"); } + }; - // Cleanup leftover DOM elements from the redundant list - util.forEach(this.dom.redundant, function (arr) { - while (arr.length) { - var elem = arr.pop(); - if (elem && elem.parentNode) { - elem.parentNode.removeChild(elem); - } - } - }); + Network.prototype._classicRedraw = function () { + // placeholder function to be overloaded by animations; }; /** - * Create a minor label for the axis at position x - * @param {Number} x - * @param {String} text - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className - * @private + * Returns true when the Network is active. + * @returns {boolean} */ - TimeAxis.prototype._repaintMinorText = function (x, text, orientation, className) { - // reuse redundant label - var label = this.dom.redundant.minorTexts.shift(); - - if (!label) { - // create new label - var content = document.createTextNode(''); - label = document.createElement('div'); - label.appendChild(content); - this.dom.foreground.appendChild(label); - } - this.dom.minorTexts.push(label); - - label.childNodes[0].nodeValue = text; - - label.style.top = (orientation == 'top') ? (this.props.majorLabelHeight + 'px') : '0'; - label.style.left = x + 'px'; - label.className = 'text minor ' + className; - //label.title = title; // TODO: this is a heavy operation + Network.prototype.isActive = function () { + return !this.activator || this.activator.active; }; + /** - * Create a Major label for the axis at position x - * @param {Number} x - * @param {String} text - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className - * @private + * Sets the scale + * @returns {Number} */ - TimeAxis.prototype._repaintMajorText = function (x, text, orientation, className) { - // reuse redundant label - var label = this.dom.redundant.majorTexts.shift(); - - if (!label) { - // create label - var content = document.createTextNode(text); - label = document.createElement('div'); - label.appendChild(content); - this.dom.foreground.appendChild(label); - } - this.dom.majorTexts.push(label); - - label.childNodes[0].nodeValue = text; - label.className = 'text major ' + className; - //label.title = title; // TODO: this is a heavy operation - - label.style.top = (orientation == 'top') ? '0' : (this.props.minorLabelHeight + 'px'); - label.style.left = x + 'px'; + Network.prototype.setScale = function () { + return this._setScale(); }; + /** - * Create a minor line for the axis at position x - * @param {Number} x - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className - * @return {Element} Returns the created line - * @private + * Returns the scale + * @returns {Number} */ - TimeAxis.prototype._repaintMinorLine = function (x, orientation, className) { - // reuse redundant line - var line = this.dom.redundant.lines.shift(); - if (!line) { - // create vertical line - line = document.createElement('div'); - this.dom.background.appendChild(line); - } - this.dom.lines.push(line); - - var props = this.props; - if (orientation == 'top') { - line.style.top = props.majorLabelHeight + 'px'; - } - else { - line.style.top = this.body.domProps.top.height + 'px'; - } - line.style.height = props.minorLineHeight + 'px'; - line.style.left = (x - props.minorLineWidth / 2) + 'px'; - - line.className = 'grid vertical minor ' + className; - - return line; + Network.prototype.getScale = function () { + return this._getScale(); }; + /** - * Create a Major line for the axis at position x - * @param {Number} x - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className - * @return {Element} Returns the created line - * @private + * Returns the scale + * @returns {Number} */ - TimeAxis.prototype._repaintMajorLine = function (x, orientation, className) { - // reuse redundant line - var line = this.dom.redundant.lines.shift(); - if (!line) { - // create vertical line - line = document.createElement('div'); - this.dom.background.appendChild(line); - } - this.dom.lines.push(line); - - var props = this.props; - if (orientation == 'top') { - line.style.top = '0'; - } - else { - line.style.top = this.body.domProps.top.height + 'px'; - } - line.style.left = (x - props.majorLineWidth / 2) + 'px'; - line.style.height = props.majorLineHeight + 'px'; - - line.className = 'grid vertical major ' + className; - - return line; + Network.prototype.getCenterCoordinates = function () { + return this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); }; - /** - * Determine the size of text on the axis (both major and minor axis). - * The size is calculated only once and then cached in this.props. - * @private - */ - TimeAxis.prototype._calculateCharSize = function () { - // Note: We calculate char size with every redraw. Size may change, for - // example when any of the timelines parents had display:none for example. - // determine the char width and height on the minor axis - if (!this.dom.measureCharMinor) { - this.dom.measureCharMinor = document.createElement('DIV'); - this.dom.measureCharMinor.className = 'text minor measure'; - this.dom.measureCharMinor.style.position = 'absolute'; + Network.prototype.getBoundingBox = function(nodeId) { + if (this.nodes[nodeId] !== undefined) { + return this.nodes[nodeId].boundingBox; + } + } - this.dom.measureCharMinor.appendChild(document.createTextNode('0')); - this.dom.foreground.appendChild(this.dom.measureCharMinor); + Network.prototype.getConnectedNodes = function(nodeId) { + var nodeList = []; + if (this.nodes[nodeId] !== undefined) { + var node = this.nodes[nodeId]; + var nodeObj = {nodeId : true}; // used to quickly check if node already exists + for (var i = 0; i < node.edges.length; i++) { + var edge = node.edges[i]; + if (edge.toId == nodeId) { + if (nodeObj[edge.fromId] === undefined) { + nodeList.push(edge.fromId); + nodeObj[edge.fromId] = true; + } + } + else if (edge.fromId == nodeId) { + if (nodeObj[edge.toId] === undefined) { + nodeList.push(edge.toId) + nodeObj[edge.toId] = true; + } + } + } } - this.props.minorCharHeight = this.dom.measureCharMinor.clientHeight; - this.props.minorCharWidth = this.dom.measureCharMinor.clientWidth; + return nodeList; + } - // determine the char width and height on the major axis - if (!this.dom.measureCharMajor) { - this.dom.measureCharMajor = document.createElement('DIV'); - this.dom.measureCharMajor.className = 'text major measure'; - this.dom.measureCharMajor.style.position = 'absolute'; - this.dom.measureCharMajor.appendChild(document.createTextNode('0')); - this.dom.foreground.appendChild(this.dom.measureCharMajor); + Network.prototype.getEdgesFromNode = function(nodeId) { + var edgesList = []; + if (this.nodes[nodeId] !== undefined) { + var node = this.nodes[nodeId]; + for (var i = 0; i < node.edges.length; i++) { + edgesList.push(node.edges[i].id); + } } - this.props.majorCharHeight = this.dom.measureCharMajor.clientHeight; - this.props.majorCharWidth = this.dom.measureCharMajor.clientWidth; - }; + return edgesList; + } - module.exports = TimeAxis; + Network.prototype.generateColorObject = function(color) { + return util.parseColor(color); + + } + + module.exports = Network; /***/ }, -/* 41 */ +/* 37 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Component = __webpack_require__(23); - var moment = __webpack_require__(2); - var locales = __webpack_require__(39); + var Node = __webpack_require__(40); /** - * A current time bar - * @param {{range: Range, dom: Object, domProps: Object}} body - * @param {Object} [options] Available parameters: - * {Boolean} [showCurrentTime] - * @constructor CurrentTime - * @extends Component + * @class Edge + * + * A edge connects two nodes + * @param {Object} properties Object with properties. Must contain + * At least properties from and to. + * Available properties: from (number), + * to (number), label (string, color (string), + * width (number), style (string), + * length (number), title (string) + * @param {Network} network A Network object, used to find and edge to + * nodes. + * @param {Object} constants An object with default values for + * example for the color */ - function CurrentTime (body, options) { - this.body = body; + function Edge (properties, network, networkConstants) { + if (!network) { + throw "No network provided"; + } + var fields = ['edges','physics']; + var constants = util.selectiveBridgeObject(fields,networkConstants); + this.options = constants.edges; + this.physics = constants.physics; + this.options['smoothCurves'] = networkConstants['smoothCurves']; - // default options - this.defaultOptions = { - showCurrentTime: true, - locales: locales, - locale: 'en' - }; - this.options = util.extend({}, this.defaultOptions); - this.offset = 0; + this.network = network; - this._create(); + // initialize variables + this.id = undefined; + this.fromId = undefined; + this.toId = undefined; + this.title = undefined; + this.widthSelected = this.options.width * this.options.widthSelectionMultiplier; + this.value = undefined; + this.selected = false; + this.hover = false; + this.labelDimensions = {top:0,left:0,width:0,height:0,yLine:0}; // could be cached + this.dirtyLabel = true; + this.colorDirty = true; - this.setOptions(options); - } + this.from = null; // a node + this.to = null; // a node + this.via = null; // a temp node - CurrentTime.prototype = new Component(); + this.fromBackup = null; // used to clean up after reconnect + this.toBackup = null;; // used to clean up after reconnect - /** - * Create the HTML DOM for the current time bar - * @private - */ - CurrentTime.prototype._create = function() { - var bar = document.createElement('div'); - bar.className = 'currenttime'; - bar.style.position = 'absolute'; - bar.style.top = '0px'; - bar.style.height = '100%'; + // we use this to be able to reconnect the edge to a cluster if its node is put into a cluster + // by storing the original information we can revert to the original connection when the cluser is opened. + this.originalFromId = []; + this.originalToId = []; - this.bar = bar; - }; + this.connected = false; - /** - * Destroy the CurrentTime bar - */ - CurrentTime.prototype.destroy = function () { - this.options.showCurrentTime = false; - this.redraw(); // will remove the bar from the DOM and stop refreshing + this.widthFixed = false; + this.lengthFixed = false; - this.body = null; - }; + this.setProperties(properties); + + this.controlNodesEnabled = false; + this.controlNodes = {from:null, to:null, positions:{}}; + this.connectedNode = null; + } /** - * Set options for the component. Options will be merged in current options. - * @param {Object} options Available parameters: - * {boolean} [showCurrentTime] + * Set or overwrite properties for the edge + * @param {Object} properties an object with properties + * @param {Object} constants and object with default, global properties */ - CurrentTime.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - util.selectiveExtend(['showCurrentTime', 'locale', 'locales'], this.options, options); + Edge.prototype.setProperties = function(properties) { + this.colorDirty = true; + if (!properties) { + return; } - }; - /** - * Repaint the component - * @return {boolean} Returns true if the component is resized - */ - CurrentTime.prototype.redraw = function() { - if (this.options.showCurrentTime) { - var parent = this.body.dom.backgroundVertical; - if (this.bar.parentNode != parent) { - // attach to the dom - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); - } - parent.appendChild(this.bar); + var fields = ['style','fontSize','fontFace','fontColor','fontFill','fontStrokeWidth','fontStrokeColor','width', + 'widthSelectionMultiplier','hoverWidth','arrowScaleFactor','dash','inheritColor','labelAlignment', 'opacity', + 'customScalingFunction','useGradients' + ]; + util.selectiveDeepExtend(fields, this.options, properties); - this.start(); - } + if (properties.from !== undefined) {this.fromId = properties.from;} + if (properties.to !== undefined) {this.toId = properties.to;} - var now = new Date(new Date().valueOf() + this.offset); - var x = this.body.util.toScreen(now); + if (properties.id !== undefined) {this.id = properties.id;} + if (properties.label !== undefined) {this.label = properties.label; this.dirtyLabel = true;} - var locale = this.options.locales[this.options.locale]; - var title = locale.current + ' ' + locale.time + ': ' + moment(now).format('dddd, MMMM Do YYYY, H:mm:ss'); - title = title.charAt(0).toUpperCase() + title.substring(1); + if (properties.title !== undefined) {this.title = properties.title;} + if (properties.value !== undefined) {this.value = properties.value;} + if (properties.length !== undefined) {this.physics.springLength = properties.length;} - this.bar.style.left = x + 'px'; - this.bar.title = title; - } - else { - // remove the line from the DOM - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); + if (properties.color !== undefined) { + this.options.inheritColor = false; + if (util.isString(properties.color)) { + this.options.color.color = properties.color; + this.options.color.highlight = properties.color; + } + else { + if (properties.color.color !== undefined) {this.options.color.color = properties.color.color;} + if (properties.color.highlight !== undefined) {this.options.color.highlight = properties.color.highlight;} + if (properties.color.hover !== undefined) {this.options.color.hover = properties.color.hover;} } - this.stop(); } - return false; - }; - /** - * Start auto refreshing the current time bar - */ - CurrentTime.prototype.start = function() { - var me = this; - function update () { - me.stop(); + // A node is connected when it has a from and to node. + this.connect(); - // determine interval to refresh - var scale = me.body.range.conversion(me.body.domProps.center.width).scale; - var interval = 1 / scale / 10; - if (interval < 30) interval = 30; - if (interval > 1000) interval = 1000; + this.widthFixed = this.widthFixed || (properties.width !== undefined); + this.lengthFixed = this.lengthFixed || (properties.length !== undefined); - me.redraw(); + this.widthSelected = this.options.width* this.options.widthSelectionMultiplier; - // start a timer to adjust for the new time - me.currentTimeTimer = setTimeout(update, interval); + // set draw method based on style + switch (this.options.style) { + case 'line': this.draw = this._drawLine; break; + case 'arrow': this.draw = this._drawArrow; break; + case 'arrow-center': this.draw = this._drawArrowCenter; break; + case 'dash-line': this.draw = this._drawDashLine; break; + default: this.draw = this._drawLine; break; } - - update(); }; + /** - * Stop auto refreshing the current time bar + * Connect an edge to its nodes */ - CurrentTime.prototype.stop = function() { - if (this.currentTimeTimer !== undefined) { - clearTimeout(this.currentTimeTimer); - delete this.currentTimeTimer; + Edge.prototype.connect = function () { + this.disconnect(); + + this.from = this.network.nodes[this.fromId] || null; + this.to = this.network.nodes[this.toId] || null; + this.connected = (this.from && this.to); + + if (this.connected) { + this.from.attachEdge(this); + this.to.attachEdge(this); + } + else { + if (this.from) { + this.from.detachEdge(this); + } + if (this.to) { + this.to.detachEdge(this); + } } }; /** - * Set a current time. This can be used for example to ensure that a client's - * time is synchronized with a shared server time. - * @param {Date | String | Number} time A Date, unix timestamp, or - * ISO date string. + * Disconnect an edge from its nodes */ - CurrentTime.prototype.setCurrentTime = function(time) { - var t = util.convert(time, 'Date').valueOf(); - var now = new Date().valueOf(); - this.offset = t - now; - this.redraw(); + Edge.prototype.disconnect = function () { + if (this.from) { + this.from.detachEdge(this); + this.from = null; + } + if (this.to) { + this.to.detachEdge(this); + this.to = null; + } + + this.connected = false; }; /** - * Get the current time. - * @return {Date} Returns the current time. + * get the title of this edge. + * @return {string} title The title of the edge, or undefined when no title + * has been set. */ - CurrentTime.prototype.getCurrentTime = function() { - return new Date(new Date().valueOf() + this.offset); + Edge.prototype.getTitle = function() { + return typeof this.title === "function" ? this.title() : this.title; }; - module.exports = CurrentTime; - - -/***/ }, -/* 42 */ -/***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(11); - var Hammer = __webpack_require__(19); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(9); - var Range = __webpack_require__(21); - var Core = __webpack_require__(25); - var TimeAxis = __webpack_require__(40); - var CurrentTime = __webpack_require__(41); - var CustomTime = __webpack_require__(38); - var LineGraph = __webpack_require__(43); + /** + * Retrieve the value of the edge. Can be undefined + * @return {Number} value + */ + Edge.prototype.getValue = function() { + return this.value; + }; /** - * Create a timeline visualization - * @param {HTMLElement} container - * @param {vis.DataSet | Array | google.visualization.DataTable} [items] - * @param {Object} [options] See Graph2d.setOptions for the available options. - * @constructor - * @extends Core + * Adjust the value range of the edge. The edge will adjust it's width + * based on its value. + * @param {Number} min + * @param {Number} max */ - function Graph2d (container, items, groups, options) { - // if the third element is options, the forth is groups (optionally); - if (!(Array.isArray(groups) || groups instanceof DataSet) && groups instanceof Object) { - var forthArgument = options; - options = groups; - groups = forthArgument; + Edge.prototype.setValueRange = function(min, max, total) { + if (!this.widthFixed && this.value !== undefined) { + var scale = this.options.customScalingFunction(min, max, total, this.value); + var widthDiff = this.options.widthMax - this.options.widthMin; + this.options.width = this.options.widthMin + scale * widthDiff; + this.widthSelected = this.options.width* this.options.widthSelectionMultiplier; } + }; - var me = this; - this.defaultOptions = { - start: null, - end: null, - - autoResize: true, - - orientation: 'bottom', - width: null, - height: null, - maxHeight: null, - minHeight: null - }; - this.options = util.deepExtend({}, this.defaultOptions); - - // Create the DOM, props, and emitter - this._create(container); - - // all components listed here will be repainted automatically - this.components = []; - - this.body = { - dom: this.dom, - domProps: this.props, - emitter: { - on: this.on.bind(this), - off: this.off.bind(this), - emit: this.emit.bind(this) - }, - hiddenDates: [], - util: { - toScreen: me._toScreen.bind(me), - toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width - toTime: me._toTime.bind(me), - toGlobalTime : me._toGlobalTime.bind(me) - } - }; - - // range - this.range = new Range(this.body); - this.components.push(this.range); - this.body.range = this.range; + /** + * Redraw a edge + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + */ + Edge.prototype.draw = function(ctx) { + throw "Method draw not initialized in edge"; + }; - // time axis - this.timeAxis = new TimeAxis(this.body); - this.components.push(this.timeAxis); - //this.body.util.snap = this.timeAxis.snap.bind(this.timeAxis); + /** + * Check if this object is overlapping with the provided object + * @param {Object} obj an object with parameters left, top + * @return {boolean} True if location is located on the edge + */ + Edge.prototype.isOverlappingWith = function(obj) { + if (this.connected) { + var distMax = 10; + var xFrom = this.from.x; + var yFrom = this.from.y; + var xTo = this.to.x; + var yTo = this.to.y; + var xObj = obj.left; + var yObj = obj.top; - // current time bar - this.currentTime = new CurrentTime(this.body); - this.components.push(this.currentTime); + var dist = this._getDistanceToEdge(xFrom, yFrom, xTo, yTo, xObj, yObj); - // custom time bar - // Note: time bar will be attached in this.setOptions when selected - this.customTime = new CustomTime(this.body); - this.components.push(this.customTime); + return (dist < distMax); + } + else { + return false + } + }; - // item set - this.linegraph = new LineGraph(this.body); - this.components.push(this.linegraph); + Edge.prototype._getColor = function(ctx) { + var colorObj = this.options.color; + if (this.options.useGradients == true) { + var grd = ctx.createLinearGradient(this.from.x, this.from.y, this.to.x, this.to.y); + var fromColor, toColor; + fromColor = this.from.options.color.highlight.border; + toColor = this.to.options.color.highlight.border; - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet - // apply options - if (options) { - this.setOptions(options); + if (this.from.selected == false && this.to.selected == false) { + fromColor = util.overrideOpacity(this.from.options.color.border, this.options.opacity); + toColor = util.overrideOpacity(this.to.options.color.border, this.options.opacity); + } + else if (this.from.selected == true && this.to.selected == false) { + toColor = this.to.options.color.border; + } + else if (this.from.selected == false && this.to.selected == true) { + fromColor = this.from.options.color.border; + } + grd.addColorStop(0, fromColor); + grd.addColorStop(1, toColor); + return grd; } - // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! - if (groups) { - this.setGroups(groups); + if (this.colorDirty === true) { + if (this.options.inheritColor == "to") { + colorObj = { + highlight: this.to.options.color.highlight.border, + hover: this.to.options.color.hover.border, + color: util.overrideOpacity(this.from.options.color.border, this.options.opacity) + }; + } + else if (this.options.inheritColor == "from" || this.options.inheritColor == true) { + colorObj = { + highlight: this.from.options.color.highlight.border, + hover: this.from.options.color.hover.border, + color: util.overrideOpacity(this.from.options.color.border, this.options.opacity) + }; + } + this.options.color = colorObj; + this.colorDirty = false; } - // create itemset - if (items) { - this.setItems(items); - } - else { - this._redraw(); - } - } - // Extend the functionality from Core - Graph2d.prototype = new Core(); + + if (this.selected == true) {return colorObj.highlight;} + else if (this.hover == true) {return colorObj.hover;} + else {return colorObj.color;} + }; + /** - * Set items - * @param {vis.DataSet | Array | google.visualization.DataTable | null} items + * Redraw a edge as a line + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + * @private */ - Graph2d.prototype.setItems = function(items) { - var initialLoad = (this.itemsData == null); + Edge.prototype._drawLine = function(ctx) { + // set style + ctx.strokeStyle = this._getColor(ctx); + ctx.lineWidth = this._getLineWidth(); - // convert to type DataSet when needed - var newDataSet; - if (!items) { - newDataSet = null; - } - else if (items instanceof DataSet || items instanceof DataView) { - newDataSet = items; - } - else { - // turn an array into a dataset - newDataSet = new DataSet(items, { - type: { - start: 'Date', - end: 'Date' + if (this.from != this.to) { + // draw line + var via = this._line(ctx); + + // draw label + var point; + if (this.label) { + if (this.options.smoothCurves.enabled == true && via != null) { + var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); + var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); + point = {x:midpointX, y:midpointY}; } - }); + else { + point = this._pointOnLine(0.5); + } + this._label(ctx, this.label, point.x, point.y); + } } - - // set items - this.itemsData = newDataSet; - this.linegraph && this.linegraph.setItems(newDataSet); - - if (initialLoad) { - if (this.options.start != undefined || this.options.end != undefined) { - var start = this.options.start != undefined ? this.options.start : null; - var end = this.options.end != undefined ? this.options.end : null; - - this.setWindow(start, end, {animate: false}); + else { + var x, y; + var radius = this.physics.springLength / 4; + var node = this.from; + if (!node.width) { + node.resize(ctx); + } + if (node.width > node.height) { + x = node.x + node.width / 2; + y = node.y - radius; } else { - this.fit({animate: false}); + x = node.x + radius; + y = node.y - node.height / 2; } + this._circle(ctx, x, y, radius); + point = this._pointOnCircle(x, y, radius, 0.5); + this._label(ctx, this.label, point.x, point.y); } }; /** - * Set groups - * @param {vis.DataSet | Array | google.visualization.DataTable} groups + * Get the line width of the edge. Depends on width and whether one of the + * connected nodes is selected. + * @return {Number} width + * @private */ - Graph2d.prototype.setGroups = function(groups) { - // convert to type DataSet when needed - var newDataSet; - if (!groups) { - newDataSet = null; - } - else if (groups instanceof DataSet || groups instanceof DataView) { - newDataSet = groups; + Edge.prototype._getLineWidth = function() { + if (this.selected == true) { + return Math.max(Math.min(this.widthSelected, this.options.widthMax), 0.3*this.networkScaleInv); } else { - // turn an array into a dataset - newDataSet = new DataSet(groups); + if (this.hover == true) { + return Math.max(Math.min(this.options.hoverWidth, this.options.widthMax), 0.3*this.networkScaleInv); + } + else { + return Math.max(this.options.width, 0.3*this.networkScaleInv); + } } - - this.groupsData = newDataSet; - this.linegraph.setGroups(newDataSet); }; - /** - * Returns an object containing an SVG element with the icon of the group (size determined by iconWidth and iconHeight), the label of the group (content) and the yAxisOrientation of the group (left or right). - * @param groupId - * @param width - * @param height - */ - Graph2d.prototype.getLegend = function(groupId, width, height) { - if (width === undefined) {width = 15;} - if (height === undefined) {height = 15;} - if (this.linegraph.groups[groupId] !== undefined) { - return this.linegraph.groups[groupId].getLegend(width,height); - } - else { - return "cannot find group:" + groupId; + Edge.prototype._getViaCoordinates = function () { + if (this.options.smoothCurves.dynamic == true && this.options.smoothCurves.enabled == true ) { + return this.via; } - } - - /** - * This checks if the visible option of the supplied group (by ID) is true or false. - * @param groupId - * @returns {*} - */ - Graph2d.prototype.isGroupVisible = function(groupId) { - if (this.linegraph.groups[groupId] !== undefined) { - return (this.linegraph.groups[groupId].visible && (this.linegraph.options.groups.visibility[groupId] === undefined || this.linegraph.options.groups.visibility[groupId] == true)); + else if (this.options.smoothCurves.enabled == false) { + return {x:0,y:0}; } else { - return false; - } - } - - - /** - * Get the data range of the item set. - * @returns {{min: Date, max: Date}} range A range with a start and end Date. - * When no minimum is found, min==null - * When no maximum is found, max==null - */ - Graph2d.prototype.getItemRange = function() { - var min = null; - var max = null; - - // calculate min from start filed - for (var groupId in this.linegraph.groups) { - if (this.linegraph.groups.hasOwnProperty(groupId)) { - if (this.linegraph.groups[groupId].visible == true) { - for (var i = 0; i < this.linegraph.groups[groupId].itemsData.length; i++) { - var item = this.linegraph.groups[groupId].itemsData[i]; - var value = util.convert(item.x, 'Date').valueOf(); - min = min == null ? value : min > value ? value : min; - max = max == null ? value : max < value ? value : max; + var xVia = null; + var yVia = null; + var factor = this.options.smoothCurves.roundness; + var type = this.options.smoothCurves.type; + var dx = Math.abs(this.from.x - this.to.x); + var dy = Math.abs(this.from.y - this.to.y); + if (type == 'discrete' || type == 'diagonalCross') { + if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { + if (this.from.y > this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dy; + yVia = this.from.y - factor * dy; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dy; + yVia = this.from.y - factor * dy; + } + } + else if (this.from.y < this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dy; + yVia = this.from.y + factor * dy; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dy; + yVia = this.from.y + factor * dy; + } + } + if (type == "discrete") { + xVia = dx < factor * dy ? this.from.x : xVia; } } - } - } - - return { - min: (min != null) ? new Date(min) : null, - max: (max != null) ? new Date(max) : null - }; - }; - - - - module.exports = Graph2d; - - -/***/ }, -/* 43 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(6); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(9); - var Component = __webpack_require__(23); - var DataAxis = __webpack_require__(44); - var GraphGroup = __webpack_require__(46); - var Legend = __webpack_require__(50); - var BarGraphFunctions = __webpack_require__(49); - - var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items - - /** - * This is the constructor of the LineGraph. It requires a Timeline body and options. - * - * @param body - * @param options - * @constructor - */ - function LineGraph(body, options) { - this.id = util.randomUUID(); - this.body = body; - - this.defaultOptions = { - yAxisOrientation: 'left', - defaultGroup: 'default', - sort: true, - sampling: true, - graphHeight: '400px', - shaded: { - enabled: false, - orientation: 'bottom' // top, bottom - }, - style: 'line', // line, bar - barChart: { - width: 50, - handleOverlap: 'overlap', - align: 'center' // left, center, right - }, - catmullRom: { - enabled: true, - parametrization: 'centripetal', // uniform (alpha = 0.0), chordal (alpha = 1.0), centripetal (alpha = 0.5) - alpha: 0.5 - }, - drawPoints: { - enabled: true, - size: 6, - style: 'square' // square, circle - }, - dataAxis: { - showMinorLabels: true, - showMajorLabels: true, - icons: false, - width: '40px', - visible: true, - alignZeros: true, - customRange: { - left: {min:undefined, max:undefined}, - right: {min:undefined, max:undefined} - } - //, these options are not set by default, but this shows the format they will be in - //format: { - // left: {decimals: 2}, - // right: {decimals: 2} - //}, - //title: { - // left: { - // text: 'left', - // style: 'color:black;' - // }, - // right: { - // text: 'right', - // style: 'color:black;' - // } - //} - }, - legend: { - enabled: false, - icons: true, - left: { - visible: true, - position: 'top-left' // top/bottom - left,right - }, - right: { - visible: true, - position: 'top-right' // top/bottom - left,right + else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { + if (this.from.y > this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dx; + yVia = this.from.y - factor * dx; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dx; + yVia = this.from.y - factor * dx; + } + } + else if (this.from.y < this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dx; + yVia = this.from.y + factor * dx; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dx; + yVia = this.from.y + factor * dx; + } + } + if (type == "discrete") { + yVia = dy < factor * dx ? this.from.y : yVia; + } } - }, - groups: { - visibility: {} } - }; - - // options is shared by this ItemSet and all its items - this.options = util.extend({}, this.defaultOptions); - this.dom = {}; - this.props = {}; - this.hammer = null; - this.groups = {}; - this.abortedGraphUpdate = false; - this.updateSVGheight = false; - this.updateSVGheightOnResize = false; - - var me = this; - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet - - // listeners for the DataSet of the items - this.itemListeners = { - 'add': function (event, params, senderId) { - me._onAdd(params.items); - }, - 'update': function (event, params, senderId) { - me._onUpdate(params.items); - }, - 'remove': function (event, params, senderId) { - me._onRemove(params.items); + else if (type == "straightCross") { + if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { // up - down + xVia = this.from.x; + if (this.from.y < this.to.y) { + yVia = this.to.y - (1 - factor) * dy; + } + else { + yVia = this.to.y + (1 - factor) * dy; + } + } + else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { // left - right + if (this.from.x < this.to.x) { + xVia = this.to.x - (1 - factor) * dx; + } + else { + xVia = this.to.x + (1 - factor) * dx; + } + yVia = this.from.y; + } } - }; - - // listeners for the DataSet of the groups - this.groupListeners = { - 'add': function (event, params, senderId) { - me._onAddGroups(params.items); - }, - 'update': function (event, params, senderId) { - me._onUpdateGroups(params.items); - }, - 'remove': function (event, params, senderId) { - me._onRemoveGroups(params.items); + else if (type == 'horizontal') { + if (this.from.x < this.to.x) { + xVia = this.to.x - (1 - factor) * dx; + } + else { + xVia = this.to.x + (1 - factor) * dx; + } + yVia = this.from.y; } - }; - - this.items = {}; // object with an Item for every data item - this.selection = []; // list with the ids of all selected nodes - this.lastStart = this.body.range.start; - this.touchParams = {}; // stores properties while dragging - - this.svgElements = {}; - this.setOptions(options); - this.groupsUsingDefaultStyles = [0]; - this.COUNTER = 0; - this.body.emitter.on('rangechanged', function() { - me.lastStart = me.body.range.start; - me.svg.style.left = util.option.asSize(-me.props.width); - me.redraw.call(me,true); - }); - - // create the HTML DOM - this._create(); - this.framework = {svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups}; - this.body.emitter.emit('change'); - - } - - LineGraph.prototype = new Component(); - - /** - * Create the HTML DOM for the ItemSet - */ - LineGraph.prototype._create = function(){ - var frame = document.createElement('div'); - frame.className = 'LineGraph'; - this.dom.frame = frame; - - // create svg element for graph drawing. - this.svg = document.createElementNS('http://www.w3.org/2000/svg','svg'); - this.svg.style.position = 'relative'; - this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; - this.svg.style.display = 'block'; - frame.appendChild(this.svg); - - // data axis - this.options.dataAxis.orientation = 'left'; - this.yAxisLeft = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); + else if (type == 'vertical') { + xVia = this.from.x; + if (this.from.y < this.to.y) { + yVia = this.to.y - (1 - factor) * dy; + } + else { + yVia = this.to.y + (1 - factor) * dy; + } + } + else if (type == 'curvedCW') { + var dx = this.to.x - this.from.x; + var dy = this.from.y - this.to.y; + var radius = Math.sqrt(dx*dx + dy*dy); + var pi = Math.PI; - this.options.dataAxis.orientation = 'right'; - this.yAxisRight = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); - delete this.options.dataAxis.orientation; + var originalAngle = Math.atan2(dy,dx); + var myAngle = (originalAngle + ((factor * 0.5) + 0.5) * pi) % (2 * pi); - // legends - this.legendLeft = new Legend(this.body, this.options.legend, 'left', this.options.groups); - this.legendRight = new Legend(this.body, this.options.legend, 'right', this.options.groups); + xVia = this.from.x + (factor*0.5 + 0.5)*radius*Math.sin(myAngle); + yVia = this.from.y + (factor*0.5 + 0.5)*radius*Math.cos(myAngle); + } + else if (type == 'curvedCCW') { + var dx = this.to.x - this.from.x; + var dy = this.from.y - this.to.y; + var radius = Math.sqrt(dx*dx + dy*dy); + var pi = Math.PI; - this.show(); - }; + var originalAngle = Math.atan2(dy,dx); + var myAngle = (originalAngle + ((-factor * 0.5) + 0.5) * pi) % (2 * pi); - /** - * set the options of the LineGraph. the mergeOptions is used for subObjects that have an enabled element. - * @param {object} options - */ - LineGraph.prototype.setOptions = function(options) { - if (options) { - var fields = ['sampling','defaultGroup','height','graphHeight','yAxisOrientation','style','barChart','dataAxis','sort','groups']; - if (options.graphHeight === undefined && options.height !== undefined && this.body.domProps.centerContainer.height !== undefined) { - this.updateSVGheight = true; - this.updateSVGheightOnResize = true; - } - else if (this.body.domProps.centerContainer.height !== undefined && options.graphHeight !== undefined) { - if (parseInt((options.graphHeight + '').replace("px",'')) < this.body.domProps.centerContainer.height) { - this.updateSVGheight = true; - } + xVia = this.from.x + (factor*0.5 + 0.5)*radius*Math.sin(myAngle); + yVia = this.from.y + (factor*0.5 + 0.5)*radius*Math.cos(myAngle); } - util.selectiveDeepExtend(fields, this.options, options); - util.mergeOptions(this.options, options,'catmullRom'); - util.mergeOptions(this.options, options,'drawPoints'); - util.mergeOptions(this.options, options,'shaded'); - util.mergeOptions(this.options, options,'legend'); - - if (options.catmullRom) { - if (typeof options.catmullRom == 'object') { - if (options.catmullRom.parametrization) { - if (options.catmullRom.parametrization == 'uniform') { - this.options.catmullRom.alpha = 0; + else { // continuous + if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { + if (this.from.y > this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dy; + yVia = this.from.y - factor * dy; + xVia = this.to.x < xVia ? this.to.x : xVia; } - else if (options.catmullRom.parametrization == 'chordal') { - this.options.catmullRom.alpha = 1.0; + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dy; + yVia = this.from.y - factor * dy; + xVia = this.to.x > xVia ? this.to.x : xVia; } - else { - this.options.catmullRom.parametrization = 'centripetal'; - this.options.catmullRom.alpha = 0.5; + } + else if (this.from.y < this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dy; + yVia = this.from.y + factor * dy; + xVia = this.to.x < xVia ? this.to.x : xVia; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dy; + yVia = this.from.y + factor * dy; + xVia = this.to.x > xVia ? this.to.x : xVia; } } } - } - - if (this.yAxisLeft) { - if (options.dataAxis !== undefined) { - this.yAxisLeft.setOptions(this.options.dataAxis); - this.yAxisRight.setOptions(this.options.dataAxis); - } - } - - if (this.legendLeft) { - if (options.legend !== undefined) { - this.legendLeft.setOptions(this.options.legend); - this.legendRight.setOptions(this.options.legend); + else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { + if (this.from.y > this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dx; + yVia = this.from.y - factor * dx; + yVia = this.to.y > yVia ? this.to.y : yVia; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dx; + yVia = this.from.y - factor * dx; + yVia = this.to.y > yVia ? this.to.y : yVia; + } + } + else if (this.from.y < this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dx; + yVia = this.from.y + factor * dx; + yVia = this.to.y < yVia ? this.to.y : yVia; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dx; + yVia = this.from.y + factor * dx; + yVia = this.to.y < yVia ? this.to.y : yVia; + } + } } } - if (this.groups.hasOwnProperty(UNGROUPED)) { - this.groups[UNGROUPED].setOptions(options); - } - } - // this is used to redraw the graph if the visibility of the groups is changed. - if (this.dom.frame) { - this.redraw(true); + return {x: xVia, y: yVia}; } }; /** - * Hide the component from the DOM + * Draw a line between two nodes + * @param {CanvasRenderingContext2D} ctx + * @private */ - LineGraph.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); + Edge.prototype._line = function (ctx) { + // draw a straight line + ctx.beginPath(); + ctx.moveTo(this.from.x, this.from.y); + if (this.options.smoothCurves.enabled == true) { + if (this.options.smoothCurves.dynamic == false) { + var via = this._getViaCoordinates(); + if (via.x == null) { + ctx.lineTo(this.to.x, this.to.y); + ctx.stroke(); + return null; + } + else { + // this.via.x = via.x; + // this.via.y = via.y; + ctx.quadraticCurveTo(via.x,via.y,this.to.x, this.to.y); + ctx.stroke(); + //ctx.circle(via.x,via.y,2) + //ctx.stroke(); + return via; + } + } + else { + ctx.quadraticCurveTo(this.via.x,this.via.y,this.to.x, this.to.y); + ctx.stroke(); + return this.via; + } + } + else { + ctx.lineTo(this.to.x, this.to.y); + ctx.stroke(); + return null; } }; - /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed + * Draw a line from a node to itself, a circle + * @param {CanvasRenderingContext2D} ctx + * @param {Number} x + * @param {Number} y + * @param {Number} radius + * @private */ - LineGraph.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); - } + Edge.prototype._circle = function (ctx, x, y, radius) { + // draw a circle + ctx.beginPath(); + ctx.arc(x, y, radius, 0, 2 * Math.PI, false); + ctx.stroke(); }; - /** - * Set items - * @param {vis.DataSet | null} items + * Draw label with white background and with the middle at (x, y) + * @param {CanvasRenderingContext2D} ctx + * @param {String} text + * @param {Number} x + * @param {Number} y + * @private */ - LineGraph.prototype.setItems = function(items) { - var me = this, - ids, - oldItemsData = this.itemsData; + Edge.prototype._label = function (ctx, text, x, y) { + if (text) { + ctx.font = ((this.from.selected || this.to.selected) ? "bold " : "") + + this.options.fontSize + "px " + this.options.fontFace; + var yLine; - // replace the dataset - if (!items) { - this.itemsData = null; - } - else if (items instanceof DataSet || items instanceof DataView) { - this.itemsData = items; - } - else { - throw new TypeError('Data must be an instance of DataSet or DataView'); - } + if (this.dirtyLabel == true) { + var lines = String(text).split('\n'); + var lineCount = lines.length; + var fontSize = Number(this.options.fontSize); + yLine = y + (1 - lineCount) / 2 * fontSize; - if (oldItemsData) { - // unsubscribe from old dataset - util.forEach(this.itemListeners, function (callback, event) { - oldItemsData.off(event, callback); - }); + var width = ctx.measureText(lines[0]).width; + for (var i = 1; i < lineCount; i++) { + var lineWidth = ctx.measureText(lines[i]).width; + width = lineWidth > width ? lineWidth : width; + } + var height = this.options.fontSize * lineCount; + var left = x - width / 2; + var top = y - height / 2; - // remove all drawn items - ids = oldItemsData.getIds(); - this._onRemove(ids); - } + // cache + this.labelDimensions = {top:top,left:left,width:width,height:height,yLine:yLine}; + } - if (this.itemsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.itemListeners, function (callback, event) { - me.itemsData.on(event, callback, id); - }); + var yLine = this.labelDimensions.yLine; + + ctx.save(); + + if (this.options.labelAlignment != "horizontal"){ + ctx.translate(x, yLine); + this._rotateForLabelAlignment(ctx); + x = 0; + yLine = 0; + } - // add all new items - ids = this.itemsData.getIds(); - this._onAdd(ids); + + this._drawLabelRect(ctx); + this._drawLabelText(ctx,x,yLine, lines, lineCount, fontSize); + + ctx.restore(); } - this._updateUngrouped(); - //this._updateGraph(); - this.redraw(true); }; - /** - * Set groups - * @param {vis.DataSet} groups - */ - LineGraph.prototype.setGroups = function(groups) { - var me = this; - var ids; + * Rotates the canvas so the text is most readable + * @param {CanvasRenderingContext2D} ctx + * @private + */ + Edge.prototype._rotateForLabelAlignment = function(ctx) { + var dy = this.from.y - this.to.y; + var dx = this.from.x - this.to.x; + var angleInDegrees = Math.atan2(dy, dx); - // unsubscribe from current dataset - if (this.groupsData) { - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.unsubscribe(event, callback); - }); + // rotate so label it is readable + if((angleInDegrees < -1 && dx < 0) || (angleInDegrees > 0 && dx < 0)){ + angleInDegrees = angleInDegrees + Math.PI; + } + + ctx.rotate(angleInDegrees); + }; - // remove all drawn groups - ids = this.groupsData.getIds(); - this.groupsData = null; - this._onRemoveGroups(ids); // note: this will cause a redraw - } + /** + * Draws the label rectangle + * @param {CanvasRenderingContext2D} ctx + * @param {String} labelAlignment + * @private + */ + Edge.prototype._drawLabelRect = function(ctx) { + if (this.options.fontFill !== undefined && this.options.fontFill !== null && this.options.fontFill !== "none") { + ctx.fillStyle = this.options.fontFill; + + var lineMargin = 2; - // replace the dataset - if (!groups) { - this.groupsData = null; + if (this.options.labelAlignment == 'line-center') { + ctx.fillRect(-this.labelDimensions.width * 0.5, -this.labelDimensions.height * 0.5, this.labelDimensions.width, this.labelDimensions.height); + } + else if (this.options.labelAlignment == 'line-above') { + ctx.fillRect(-this.labelDimensions.width * 0.5, -(this.labelDimensions.height + lineMargin), this.labelDimensions.width, this.labelDimensions.height); + } + else if (this.options.labelAlignment == 'line-below') { + ctx.fillRect(-this.labelDimensions.width * 0.5, lineMargin, this.labelDimensions.width, this.labelDimensions.height); + } + else { + ctx.fillRect(this.labelDimensions.left, this.labelDimensions.top, this.labelDimensions.width, this.labelDimensions.height); + } } - else if (groups instanceof DataSet || groups instanceof DataView) { - this.groupsData = groups; + }; + + /** + * Draws the label text + * @param {CanvasRenderingContext2D} ctx + * @param {Number} x + * @param {Number} yLine + * @param {Array} lines + * @param {Number} lineCount + * @param {Number} fontSize + * @private + */ + Edge.prototype._drawLabelText = function(ctx, x, yLine, lines, lineCount, fontSize) { + // draw text + ctx.fillStyle = this.options.fontColor || "black"; + ctx.textAlign = "center"; + + // check for label alignment + if (this.options.labelAlignment != 'horizontal') { + var lineMargin = 2; + if (this.options.labelAlignment == 'line-above') { + ctx.textBaseline = "alphabetic"; + yLine -= 2 * lineMargin; // distance from edge, required because we use alphabetic. Alphabetic has less difference between browsers + } + else if (this.options.labelAlignment == 'line-below') { + ctx.textBaseline = "hanging"; + yLine += 2 * lineMargin;// distance from edge, required because we use hanging. Hanging has less difference between browsers + } + else { + ctx.textBaseline = "middle"; + } } else { - throw new TypeError('Data must be an instance of DataSet or DataView'); + ctx.textBaseline = "middle"; } - if (this.groupsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.on(event, callback, id); - }); - - // draw all ms - ids = this.groupsData.getIds(); - this._onAddGroups(ids); + // check for strokeWidth + if (this.options.fontStrokeWidth > 0){ + ctx.lineWidth = this.options.fontStrokeWidth; + ctx.strokeStyle = this.options.fontStrokeColor; + ctx.lineJoin = 'round'; } - this._onUpdate(); + for (var i = 0; i < lineCount; i++) { + if(this.options.fontStrokeWidth > 0){ + ctx.strokeText(lines[i], x, yLine); + } + ctx.fillText(lines[i], x, yLine); + yLine += fontSize; + } }; - /** - * Update the data - * @param [ids] + * Redraw a edge as a dashed line + * Draw this edge in the given canvas + * @author David Jordan + * @date 2012-08-08 + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx * @private */ - LineGraph.prototype._onUpdate = function(ids) { - this._updateUngrouped(); - this._updateAllGroupData(); - //this._updateGraph(); - this.redraw(true); - }; - LineGraph.prototype._onAdd = function (ids) {this._onUpdate(ids);}; - LineGraph.prototype._onRemove = function (ids) {this._onUpdate(ids);}; - LineGraph.prototype._onUpdateGroups = function (groupIds) { - for (var i = 0; i < groupIds.length; i++) { - var group = this.groupsData.get(groupIds[i]); - this._updateGroup(group, groupIds[i]); + Edge.prototype._drawDashLine = function(ctx) { + // set style + ctx.strokeStyle = this._getColor(ctx); + ctx.lineWidth = this._getLineWidth(); + + var via = null; + // only firefox and chrome support this method, else we use the legacy one. + if (ctx.setLineDash !== undefined) { + ctx.save(); + // configure the dash pattern + var pattern = [0]; + if (this.options.dash.length !== undefined && this.options.dash.gap !== undefined) { + pattern = [this.options.dash.length,this.options.dash.gap]; + } + else { + pattern = [5,5]; + } + + // set dash settings for chrome or firefox + ctx.setLineDash(pattern); + ctx.lineDashOffset = 0; + + // draw the line + via = this._line(ctx); + + // restore the dash settings. + ctx.setLineDash([0]); + ctx.lineDashOffset = 0; + ctx.restore(); + } + else { // unsupporting smooth lines + // draw dashed line + ctx.beginPath(); + ctx.lineCap = 'round'; + if (this.options.dash.altLength !== undefined) //If an alt dash value has been set add to the array this value + { + ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y, + [this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]); + } + else if (this.options.dash.length !== undefined && this.options.dash.gap !== undefined) //If a dash and gap value has been set add to the array this value + { + ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y, + [this.options.dash.length,this.options.dash.gap]); + } + else //If all else fails draw a line + { + ctx.moveTo(this.from.x, this.from.y); + ctx.lineTo(this.to.x, this.to.y); + } + ctx.stroke(); } - //this._updateGraph(); - this.redraw(true); + // draw label + if (this.label) { + var point; + if (this.options.smoothCurves.enabled == true && via != null) { + var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); + var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); + point = {x:midpointX, y:midpointY}; + } + else { + point = this._pointOnLine(0.5); + } + this._label(ctx, this.label, point.x, point.y); + } }; - LineGraph.prototype._onAddGroups = function (groupIds) {this._onUpdateGroups(groupIds);}; - /** - * this cleans the group out off the legends and the dataaxis, updates the ungrouped and updates the graph - * @param {Array} groupIds + * Get a point on a line + * @param {Number} percentage. Value between 0 (line start) and 1 (line end) + * @return {Object} point * @private */ - LineGraph.prototype._onRemoveGroups = function (groupIds) { - for (var i = 0; i < groupIds.length; i++) { - if (this.groups.hasOwnProperty(groupIds[i])) { - if (this.groups[groupIds[i]].options.yAxisOrientation == 'right') { - this.yAxisRight.removeGroup(groupIds[i]); - this.legendRight.removeGroup(groupIds[i]); - this.legendRight.redraw(); - } - else { - this.yAxisLeft.removeGroup(groupIds[i]); - this.legendLeft.removeGroup(groupIds[i]); - this.legendLeft.redraw(); - } - delete this.groups[groupIds[i]]; - } + Edge.prototype._pointOnLine = function (percentage) { + return { + x: (1 - percentage) * this.from.x + percentage * this.to.x, + y: (1 - percentage) * this.from.y + percentage * this.to.y } - this._updateUngrouped(); - //this._updateGraph(); - this.redraw(true); }; + /** + * Get a point on a circle + * @param {Number} x + * @param {Number} y + * @param {Number} radius + * @param {Number} percentage. Value between 0 (line start) and 1 (line end) + * @return {Object} point + * @private + */ + Edge.prototype._pointOnCircle = function (x, y, radius, percentage) { + var angle = (percentage - 3/8) * 2 * Math.PI; + return { + x: x + radius * Math.cos(angle), + y: y - radius * Math.sin(angle) + } + }; /** - * update a group object with the group dataset entree - * - * @param group - * @param groupId + * Redraw a edge as a line with an arrow halfway the line + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx * @private */ - LineGraph.prototype._updateGroup = function (group, groupId) { - if (!this.groups.hasOwnProperty(groupId)) { - this.groups[groupId] = new GraphGroup(group, groupId, this.options, this.groupsUsingDefaultStyles); - if (this.groups[groupId].options.yAxisOrientation == 'right') { - this.yAxisRight.addGroup(groupId, this.groups[groupId]); - this.legendRight.addGroup(groupId, this.groups[groupId]); + Edge.prototype._drawArrowCenter = function(ctx) { + var point; + // set style + ctx.strokeStyle = this._getColor(ctx); + ctx.fillStyle = ctx.strokeStyle; + ctx.lineWidth = this._getLineWidth(); + + if (this.from != this.to) { + // draw line + var via = this._line(ctx); + + var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); + var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; + // draw an arrow halfway the line + if (this.options.smoothCurves.enabled == true && via != null) { + var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); + var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); + point = {x:midpointX, y:midpointY}; } else { - this.yAxisLeft.addGroup(groupId, this.groups[groupId]); - this.legendLeft.addGroup(groupId, this.groups[groupId]); + point = this._pointOnLine(0.5); + } + + ctx.arrow(point.x, point.y, angle, length); + ctx.fill(); + ctx.stroke(); + + // draw label + if (this.label) { + this._label(ctx, this.label, point.x, point.y); } } else { - this.groups[groupId].update(group); - if (this.groups[groupId].options.yAxisOrientation == 'right') { - this.yAxisRight.updateGroup(groupId, this.groups[groupId]); - this.legendRight.updateGroup(groupId, this.groups[groupId]); + // draw circle + var x, y; + var radius = 0.25 * Math.max(100,this.physics.springLength); + var node = this.from; + if (!node.width) { + node.resize(ctx); + } + if (node.width > node.height) { + x = node.x + node.width * 0.5; + y = node.y - radius; } else { - this.yAxisLeft.updateGroup(groupId, this.groups[groupId]); - this.legendLeft.updateGroup(groupId, this.groups[groupId]); + x = node.x + radius; + y = node.y - node.height * 0.5; + } + this._circle(ctx, x, y, radius); + + // draw all arrows + var angle = 0.2 * Math.PI; + var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; + point = this._pointOnCircle(x, y, radius, 0.5); + ctx.arrow(point.x, point.y, angle, length); + ctx.fill(); + ctx.stroke(); + + // draw label + if (this.label) { + point = this._pointOnCircle(x, y, radius, 0.5); + this._label(ctx, this.label, point.x, point.y); } } - this.legendLeft.redraw(); - this.legendRight.redraw(); }; + Edge.prototype._pointOnBezier = function(t) { + var via = this._getViaCoordinates(); + + var x = Math.pow(1-t,2)*this.from.x + (2*t*(1 - t))*via.x + Math.pow(t,2)*this.to.x; + var y = Math.pow(1-t,2)*this.from.y + (2*t*(1 - t))*via.y + Math.pow(t,2)*this.to.y; + + return {x:x,y:y}; + } /** - * this updates all groups, it is used when there is an update the the itemset. + * This function uses binary search to look for the point where the bezier curve crosses the border of the node. * + * @param from + * @param ctx + * @returns {*} * @private */ - LineGraph.prototype._updateAllGroupData = function () { - if (this.itemsData != null) { - var groupsContent = {}; - var groupId; - for (groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - groupsContent[groupId] = []; - } - } - for (var itemId in this.itemsData._data) { - if (this.itemsData._data.hasOwnProperty(itemId)) { - var item = this.itemsData._data[itemId]; - if (groupsContent[item.group] === undefined) { - throw new Error('Cannot find referenced group. Possible reason: items added before groups? Groups need to be added before items, as items refer to groups.') - } - item.x = util.convert(item.x,'Date'); - groupsContent[item.group].push(item); - } - } - for (groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - this.groups[groupId].setItems(groupsContent[groupId]); - } - } + Edge.prototype._findBorderPosition = function(from,ctx) { + var maxIterations = 10; + var iteration = 0; + var low = 0; + var high = 1; + var pos,angle,distanceToBorder, distanceToNodes, difference; + var threshold = 0.2; + var node = this.to; + if (from == true) { + node = this.from; } - }; + while (low <= high && iteration < maxIterations) { + var middle = (low + high) * 0.5; - /** - * Create or delete the group holding all ungrouped items. This group is used when - * there are no groups specified. This anonymous group is called 'graph'. - * @protected - */ - LineGraph.prototype._updateUngrouped = function() { - if (this.itemsData && this.itemsData != null) { - var ungroupedCounter = 0; - for (var itemId in this.itemsData._data) { - if (this.itemsData._data.hasOwnProperty(itemId)) { - var item = this.itemsData._data[itemId]; - if (item != undefined) { - if (item.hasOwnProperty('group')) { - if (item.group === undefined) { - item.group = UNGROUPED; - } - } - else { - item.group = UNGROUPED; - } - ungroupedCounter = item.group == UNGROUPED ? ungroupedCounter + 1 : ungroupedCounter; - } - } + pos = this._pointOnBezier(middle); + angle = Math.atan2((node.y - pos.y), (node.x - pos.x)); + distanceToBorder = node.distanceToBorder(ctx,angle); + distanceToNodes = Math.sqrt(Math.pow(pos.x-node.x,2) + Math.pow(pos.y-node.y,2)); + difference = distanceToBorder - distanceToNodes; + if (Math.abs(difference) < threshold) { + break; // found } - - if (ungroupedCounter == 0) { - delete this.groups[UNGROUPED]; - this.legendLeft.removeGroup(UNGROUPED); - this.legendRight.removeGroup(UNGROUPED); - this.yAxisLeft.removeGroup(UNGROUPED); - this.yAxisRight.removeGroup(UNGROUPED); + else if (difference < 0) { // distance to nodes is larger than distance to border --> t needs to be bigger if we're looking at the to node. + if (from == false) { + low = middle; + } + else { + high = middle; + } } else { - var group = {id: UNGROUPED, content: this.options.defaultGroup}; - this._updateGroup(group, UNGROUPED); + if (from == false) { + high = middle; + } + else { + low = middle; + } } + + iteration++; } - else { - delete this.groups[UNGROUPED]; - this.legendLeft.removeGroup(UNGROUPED); - this.legendRight.removeGroup(UNGROUPED); - this.yAxisLeft.removeGroup(UNGROUPED); - this.yAxisRight.removeGroup(UNGROUPED); - } + pos.t = middle; - this.legendLeft.redraw(); - this.legendRight.redraw(); + return pos; }; - /** - * Redraw the component, mandatory function - * @return {boolean} Returns true if the component is resized + * Redraw a edge as a line with an arrow + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + * @private */ - LineGraph.prototype.redraw = function(forceGraphUpdate) { - var resized = false; - - // calculate actual size and position - this.props.width = this.dom.frame.offsetWidth; - this.props.height = this.body.domProps.centerContainer.height; - - // update the graph if there is no lastWidth or with, used for the initial draw - if (this.lastWidth === undefined && this.props.width) { - forceGraphUpdate = true; - } - - // check if this component is resized - resized = this._isResized() || resized; - - // check whether zoomed (in that case we need to re-stack everything) - var visibleInterval = this.body.range.end - this.body.range.start; - var zoomed = (visibleInterval != this.lastVisibleInterval); - this.lastVisibleInterval = visibleInterval; + Edge.prototype._drawArrow = function(ctx) { + // set style + ctx.strokeStyle = this._getColor(ctx); + ctx.fillStyle = ctx.strokeStyle; + ctx.lineWidth = this._getLineWidth(); + // set vars + var angle, length, arrowPos; - // the svg element is three times as big as the width, this allows for fully dragging left and right - // without reloading the graph. the controls for this are bound to events in the constructor - if (resized == true) { - this.svg.style.width = util.option.asSize(3*this.props.width); - this.svg.style.left = util.option.asSize(-this.props.width); + // if not connected to itself + if (this.from != this.to) { + // draw line + this._line(ctx); - // if the height of the graph is set as proportional, change the height of the svg - if ((this.options.height + '').indexOf("%") != -1 || this.updateSVGheightOnResize == true) { - this.updateSVGheight = true; + // draw arrow head + if (this.options.smoothCurves.enabled == true) { + var via = this._getViaCoordinates(); + arrowPos = this._findBorderPosition(false, ctx); + var guidePos = this._pointOnBezier(Math.max(0.0, arrowPos.t - 0.1)) + angle = Math.atan2((arrowPos.y - guidePos.y), (arrowPos.x - guidePos.x)); } - } + else { + angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); + var dx = (this.to.x - this.from.x); + var dy = (this.to.y - this.from.y); + var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); + var toBorderDist = this.to.distanceToBorder(ctx, angle); + var toBorderPoint = (edgeSegmentLength - toBorderDist) / edgeSegmentLength; - // update the height of the graph on each redraw of the graph. - if (this.updateSVGheight == true) { - if (this.options.graphHeight != this.body.domProps.centerContainer.height + 'px') { - this.options.graphHeight = this.body.domProps.centerContainer.height + 'px'; - this.svg.style.height = this.body.domProps.centerContainer.height + 'px'; + arrowPos = {}; + arrowPos.x = (1 - toBorderPoint) * this.from.x + toBorderPoint * this.to.x; + arrowPos.y = (1 - toBorderPoint) * this.from.y + toBorderPoint * this.to.y; } - this.updateSVGheight = false; - } - else { - this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; - } - // zoomed is here to ensure that animations are shown correctly. - if (resized == true || zoomed == true || this.abortedGraphUpdate == true || forceGraphUpdate == true) { - resized = this._updateGraph() || resized; - } - else { - // move the whole svg while dragging - if (this.lastStart != 0) { - var offset = this.body.range.start - this.lastStart; - var range = this.body.range.end - this.body.range.start; - if (this.props.width != 0) { - var rangePerPixelInv = this.props.width/range; - var xOffset = offset * rangePerPixelInv; - this.svg.style.left = (-this.props.width - xOffset) + 'px'; + // draw arrow at the end of the line + length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; + ctx.arrow(arrowPos.x,arrowPos.y, angle, length); + ctx.fill(); + ctx.stroke(); + + // draw label + if (this.label) { + var point; + if (this.options.smoothCurves.enabled == true && via != null) { + point = this._pointOnBezier(0.5); + } + else { + point = this._pointOnLine(0.5); } + this._label(ctx, this.label, point.x, point.y); } } - - this.legendLeft.redraw(); - this.legendRight.redraw(); - return resized; - }; - - - /** - * Update and redraw the graph. - * - */ - LineGraph.prototype._updateGraph = function () { - // reset the svg elements - DOMutil.prepareElements(this.svgElements); - if (this.props.width != 0 && this.itemsData != null) { - var group, i; - var preprocessedGroupData = {}; - var processedGroupData = {}; - var groupRanges = {}; - var changeCalled = false; - - // getting group Ids - var groupIds = []; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - group = this.groups[groupId]; - if (group.visible == true && (this.options.groups.visibility[groupId] === undefined || this.options.groups.visibility[groupId] == true)) { - groupIds.push(groupId); - } - } + else { + // draw circle + var node = this.from; + var x, y, arrow; + var radius = 0.25 * Math.max(100,this.physics.springLength); + if (!node.width) { + node.resize(ctx); } - if (groupIds.length > 0) { - // this is the range of the SVG canvas - var minDate = this.body.util.toGlobalTime(-this.body.domProps.root.width); - var maxDate = this.body.util.toGlobalTime(2 * this.body.domProps.root.width); - var groupsData = {}; - // fill groups data, this only loads the data we require based on the timewindow - this._getRelevantData(groupIds, groupsData, minDate, maxDate); - - // apply sampling, if disabled, it will pass through this function. - this._applySampling(groupIds, groupsData); - - // we transform the X coordinates to detect collisions - for (i = 0; i < groupIds.length; i++) { - preprocessedGroupData[groupIds[i]] = this._convertXcoordinates(groupsData[groupIds[i]]); - } - - // now all needed data has been collected we start the processing. - this._getYRanges(groupIds, preprocessedGroupData, groupRanges); - - // update the Y axis first, we use this data to draw at the correct Y points - // changeCalled is required to clean the SVG on a change emit. - changeCalled = this._updateYAxis(groupIds, groupRanges); - var MAX_CYCLES = 5; - if (changeCalled == true && this.COUNTER < MAX_CYCLES) { - DOMutil.cleanupElements(this.svgElements); - this.abortedGraphUpdate = true; - this.COUNTER++; - this.body.emitter.emit('change'); - return true; - } - else { - if (this.COUNTER > MAX_CYCLES) { - console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle.") - } - this.COUNTER = 0; - this.abortedGraphUpdate = false; + if (node.width > node.height) { + x = node.x + node.width * 0.5; + y = node.y - radius; + arrow = { + x: x, + y: node.y, + angle: 0.9 * Math.PI + }; + } + else { + x = node.x + radius; + y = node.y - node.height * 0.5; + arrow = { + x: node.x, + y: y, + angle: 0.6 * Math.PI + }; + } + ctx.beginPath(); + // TODO: similarly, for a line without arrows, draw to the border of the nodes instead of the center + ctx.arc(x, y, radius, 0, 2 * Math.PI, false); + ctx.stroke(); - // With the yAxis scaled correctly, use this to get the Y values of the points. - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - processedGroupData[groupIds[i]] = this._convertYcoordinates(groupsData[groupIds[i]], group); - } + // draw all arrows + var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; + ctx.arrow(arrow.x, arrow.y, arrow.angle, length); + ctx.fill(); + ctx.stroke(); - // draw the groups - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - if (group.options.style != 'bar') { // bar needs to be drawn enmasse - group.draw(processedGroupData[groupIds[i]], group, this.framework); - } - } - BarGraphFunctions.draw(groupIds, processedGroupData, this.framework); - } + // draw label + if (this.label) { + point = this._pointOnCircle(x, y, radius, 0.5); + this._label(ctx, this.label, point.x, point.y); } } - - // cleanup unused svg elements - DOMutil.cleanupElements(this.svgElements); - return false; }; - /** - * first select and preprocess the data from the datasets. - * the groups have their preselection of data, we now loop over this data to see - * what data we need to draw. Sorted data is much faster. - * more optimization is possible by doing the sampling before and using the binary search - * to find the end date to determine the increment. - * - * @param {array} groupIds - * @param {object} groupsData - * @param {date} minDate - * @param {date} maxDate + * Calculate the distance between a point (x3,y3) and a line segment from + * (x1,y1) to (x2,y2). + * http://stackoverflow.com/questions/849211/shortest-distancae-between-a-point-and-a-line-segment + * @param {number} x1 + * @param {number} y1 + * @param {number} x2 + * @param {number} y2 + * @param {number} x3 + * @param {number} y3 * @private */ - LineGraph.prototype._getRelevantData = function (groupIds, groupsData, minDate, maxDate) { - var group, i, j, item; - if (groupIds.length > 0) { - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - groupsData[groupIds[i]] = []; - var dataContainer = groupsData[groupIds[i]]; - // optimization for sorted data - if (group.options.sort == true) { - var guess = Math.max(0, util.binarySearchValue(group.itemsData, minDate, 'x', 'before')); - for (j = guess; j < group.itemsData.length; j++) { - item = group.itemsData[j]; - if (item !== undefined) { - if (item.x > maxDate) { - dataContainer.push(item); - break; - } - else { - dataContainer.push(item); - } - } - } + Edge.prototype._getDistanceToEdge = function (x1,y1, x2,y2, x3,y3) { // x3,y3 is the point + var returnValue = 0; + if (this.from != this.to) { + if (this.options.smoothCurves.enabled == true) { + var xVia, yVia; + if (this.options.smoothCurves.enabled == true && this.options.smoothCurves.dynamic == true) { + xVia = this.via.x; + yVia = this.via.y; } else { - for (j = 0; j < group.itemsData.length; j++) { - item = group.itemsData[j]; - if (item !== undefined) { - if (item.x > minDate && item.x < maxDate) { - dataContainer.push(item); - } - } + var via = this._getViaCoordinates(); + xVia = via.x; + yVia = via.y; + } + var minDistance = 1e9; + var distance; + var i,t,x,y, lastX, lastY; + for (i = 0; i < 10; i++) { + t = 0.1*i; + x = Math.pow(1-t,2)*x1 + (2*t*(1 - t))*xVia + Math.pow(t,2)*x2; + y = Math.pow(1-t,2)*y1 + (2*t*(1 - t))*yVia + Math.pow(t,2)*y2; + if (i > 0) { + distance = this._getDistanceToLine(lastX,lastY,x,y, x3,y3); + minDistance = distance < minDistance ? distance : minDistance; } + lastX = x; lastY = y; } + returnValue = minDistance; + } + else { + returnValue = this._getDistanceToLine(x1,y1,x2,y2,x3,y3); } } + else { + var x, y, dx, dy; + var radius = 0.25 * this.physics.springLength; + var node = this.from; + if (node.width > node.height) { + x = node.x + 0.5 * node.width; + y = node.y - radius; + } + else { + x = node.x + radius; + y = node.y - 0.5 * node.height; + } + dx = x - x3; + dy = y - y3; + returnValue = Math.abs(Math.sqrt(dx*dx + dy*dy) - radius); + } + + if (this.labelDimensions.left < x3 && + this.labelDimensions.left + this.labelDimensions.width > x3 && + this.labelDimensions.top < y3 && + this.labelDimensions.top + this.labelDimensions.height > y3) { + return 0; + } + else { + return returnValue; + } }; + Edge.prototype._getDistanceToLine = function(x1,y1,x2,y2,x3,y3) { + var px = x2-x1, + py = y2-y1, + something = px*px + py*py, + u = ((x3 - x1) * px + (y3 - y1) * py) / something; - /** - * - * @param groupIds - * @param groupsData - * @private - */ - LineGraph.prototype._applySampling = function (groupIds, groupsData) { - var group; - if (groupIds.length > 0) { - for (var i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - if (group.options.sampling == true) { - var dataContainer = groupsData[groupIds[i]]; - if (dataContainer.length > 0) { - var increment = 1; - var amountOfPoints = dataContainer.length; + if (u > 1) { + u = 1; + } + else if (u < 0) { + u = 0; + } - // the global screen is used because changing the width of the yAxis may affect the increment, resulting in an endless loop - // of width changing of the yAxis. - var xDistance = this.body.util.toGlobalScreen(dataContainer[dataContainer.length - 1].x) - this.body.util.toGlobalScreen(dataContainer[0].x); - var pointsPerPixel = amountOfPoints / xDistance; - increment = Math.min(Math.ceil(0.2 * amountOfPoints), Math.max(1, Math.round(pointsPerPixel))); + var x = x1 + u * px, + y = y1 + u * py, + dx = x - x3, + dy = y - y3; - var sampledData = []; - for (var j = 0; j < amountOfPoints; j += increment) { - sampledData.push(dataContainer[j]); + //# Note: If the actual distance does not matter, + //# if you only want to compare what this function + //# returns to other results of this function, you + //# can just return the squared distance instead + //# (i.e. remove the sqrt) to gain a little performance - } - groupsData[groupIds[i]] = sampledData; - } - } - } - } + return Math.sqrt(dx*dx + dy*dy); }; - /** + * This allows the zoom level of the network to influence the rendering * - * - * @param {array} groupIds - * @param {object} groupsData - * @param {object} groupRanges | this is being filled here - * @private + * @param scale */ - LineGraph.prototype._getYRanges = function (groupIds, groupsData, groupRanges) { - var groupData, group, i; - var barCombinedDataLeft = []; - var barCombinedDataRight = []; - var options; - if (groupIds.length > 0) { - for (i = 0; i < groupIds.length; i++) { - groupData = groupsData[groupIds[i]]; - options = this.groups[groupIds[i]].options; - if (groupData.length > 0) { - group = this.groups[groupIds[i]]; - // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. - if (options.barChart.handleOverlap == 'stack' && options.style == 'bar') { - if (options.yAxisOrientation == 'left') {barCombinedDataLeft = barCombinedDataLeft.concat(group.getYRange(groupData)) ;} - else {barCombinedDataRight = barCombinedDataRight.concat(group.getYRange(groupData));} - } - else { - groupRanges[groupIds[i]] = group.getYRange(groupData,groupIds[i]); - } - } - } + Edge.prototype.setScale = function(scale) { + this.networkScaleInv = 1.0/scale; + }; - // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. - BarGraphFunctions.getStackedBarYRange(barCombinedDataLeft , groupRanges, groupIds, '__barchartLeft' , 'left' ); - BarGraphFunctions.getStackedBarYRange(barCombinedDataRight, groupRanges, groupIds, '__barchartRight', 'right'); - } + + Edge.prototype.select = function() { + this.selected = true; + }; + + Edge.prototype.unselect = function() { + this.selected = false; }; + Edge.prototype.positionBezierNode = function() { + if (this.via !== null && this.from !== null && this.to !== null) { + this.via.x = 0.5 * (this.from.x + this.to.x); + this.via.y = 0.5 * (this.from.y + this.to.y); + } + else if (this.via !== null) { + this.via.x = 0; + this.via.y = 0; + } + }; /** - * this sets the Y ranges for the Y axis. It also determines which of the axis should be shown or hidden. - * @param {Array} groupIds - * @param {Object} groupRanges - * @private + * This function draws the control nodes for the manipulator. + * In order to enable this, only set the this.controlNodesEnabled to true. + * @param ctx */ - LineGraph.prototype._updateYAxis = function (groupIds, groupRanges) { - var resized = false; - var yAxisLeftUsed = false; - var yAxisRightUsed = false; - var minLeft = 1e9, minRight = 1e9, maxLeft = -1e9, maxRight = -1e9, minVal, maxVal; - // if groups are present - if (groupIds.length > 0) { - // this is here to make sure that if there are no items in the axis but there are groups, that there is no infinite draw/redraw loop. - for (var i = 0; i < groupIds.length; i++) { - var group = this.groups[groupIds[i]]; - if (group && group.options.yAxisOrientation != 'right') { - yAxisLeftUsed = true; - minLeft = 0; - maxLeft = 0; - } - else if (group && group.options.yAxisOrientation) { - yAxisRightUsed = true; - minRight = 0; - maxRight = 0; - } - } - - // if there are items: - for (var i = 0; i < groupIds.length; i++) { - if (groupRanges.hasOwnProperty(groupIds[i])) { - if (groupRanges[groupIds[i]].ignore !== true) { - minVal = groupRanges[groupIds[i]].min; - maxVal = groupRanges[groupIds[i]].max; - - if (groupRanges[groupIds[i]].yAxisOrientation != 'right') { - yAxisLeftUsed = true; - minLeft = minLeft > minVal ? minVal : minLeft; - maxLeft = maxLeft < maxVal ? maxVal : maxLeft; - } - else { - yAxisRightUsed = true; - minRight = minRight > minVal ? minVal : minRight; - maxRight = maxRight < maxVal ? maxVal : maxRight; - } - } - } + Edge.prototype._drawControlNodes = function(ctx) { + if (this.controlNodesEnabled == true) { + if (this.controlNodes.from === null && this.controlNodes.to === null) { + var nodeIdFrom = "edgeIdFrom:".concat(this.id); + var nodeIdTo = "edgeIdTo:".concat(this.id); + var constants = { + nodes:{group:'', radius:7, borderWidth:2, borderWidthSelected: 2}, + physics:{damping:0}, + clustering: {maxNodeSizeIncrements: 0 ,nodeScaling: {width:0, height: 0, radius:0}} + }; + this.controlNodes.from = new Node( + {id:nodeIdFrom, + shape:'dot', + color:{background:'#ff0000', border:'#3c3c3c', highlight: {background:'#07f968'}} + },{},{},constants); + this.controlNodes.to = new Node( + {id:nodeIdTo, + shape:'dot', + color:{background:'#ff0000', border:'#3c3c3c', highlight: {background:'#07f968'}} + },{},{},constants); } - if (yAxisLeftUsed == true) { - this.yAxisLeft.setRange(minLeft, maxLeft); + this.controlNodes.positions = {}; + if (this.controlNodes.from.selected == false) { + this.controlNodes.positions.from = this.getControlNodeFromPosition(ctx); + this.controlNodes.from.x = this.controlNodes.positions.from.x; + this.controlNodes.from.y = this.controlNodes.positions.from.y; } - if (yAxisRightUsed == true) { - this.yAxisRight.setRange(minRight, maxRight); + if (this.controlNodes.to.selected == false) { + this.controlNodes.positions.to = this.getControlNodeToPosition(ctx); + this.controlNodes.to.x = this.controlNodes.positions.to.x; + this.controlNodes.to.y = this.controlNodes.positions.to.y; } - } - resized = this._toggleAxisVisiblity(yAxisLeftUsed , this.yAxisLeft) || resized; - resized = this._toggleAxisVisiblity(yAxisRightUsed, this.yAxisRight) || resized; - - if (yAxisRightUsed == true && yAxisLeftUsed == true) { - this.yAxisLeft.drawIcons = true; - this.yAxisRight.drawIcons = true; - } - else { - this.yAxisLeft.drawIcons = false; - this.yAxisRight.drawIcons = false; - } - this.yAxisRight.master = !yAxisLeftUsed; - if (this.yAxisRight.master == false) { - if (yAxisRightUsed == true) {this.yAxisLeft.lineOffset = this.yAxisRight.width;} - else {this.yAxisLeft.lineOffset = 0;} - resized = this.yAxisLeft.redraw() || resized; - this.yAxisRight.stepPixelsForced = this.yAxisLeft.stepPixels; - this.yAxisRight.zeroCrossing = this.yAxisLeft.zeroCrossing; - resized = this.yAxisRight.redraw() || resized; + this.controlNodes.from.draw(ctx); + this.controlNodes.to.draw(ctx); } else { - resized = this.yAxisRight.redraw() || resized; - } - - // clean the accumulated lists - if (groupIds.indexOf('__barchartLeft') != -1) { - groupIds.splice(groupIds.indexOf('__barchartLeft'),1); - } - if (groupIds.indexOf('__barchartRight') != -1) { - groupIds.splice(groupIds.indexOf('__barchartRight'),1); + this.controlNodes = {from:null, to:null, positions:{}}; } - - return resized; }; + /** + * Enable control nodes. + * @private + */ + Edge.prototype._enableControlNodes = function() { + this.fromBackup = this.from; + this.toBackup = this.to; + this.controlNodesEnabled = true; + }; /** - * This shows or hides the Y axis if needed. If there is a change, the changed event is emitted by the updateYAxis function - * - * @param {boolean} axisUsed - * @returns {boolean} + * disable control nodes and remove from dynamicEdges from old node * @private - * @param axis */ - LineGraph.prototype._toggleAxisVisiblity = function (axisUsed, axis) { - var changed = false; - if (axisUsed == false) { - if (axis.dom.frame.parentNode && axis.hidden == false) { - axis.hide() - changed = true; - } + Edge.prototype._disableControlNodes = function() { + this.fromId = this.from.id; + this.toId = this.to.id; + if (this.fromId != this.fromBackup.id) { // from was changed, remove edge from old 'from' node dynamic edges + this.fromBackup.detachEdge(this); } - else { - if (!axis.dom.frame.parentNode && axis.hidden == true) { - axis.show(); - changed = true; - } + else if (this.toId != this.toBackup.id) { // to was changed, remove edge from old 'to' node dynamic edges + this.toBackup.detachEdge(this); } - return changed; + + this.fromBackup = null; + this.toBackup = null; + this.controlNodesEnabled = false; }; /** - * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the - * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for - * the yAxis. - * - * @param datapoints - * @returns {Array} + * This checks if one of the control nodes is selected and if so, returns the control node object. Else it returns null. + * @param x + * @param y + * @returns {null} * @private */ - LineGraph.prototype._convertXcoordinates = function (datapoints) { - var extractedData = []; - var xValue, yValue; - var toScreen = this.body.util.toScreen; + Edge.prototype._getSelectedControlNode = function(x,y) { + var positions = this.controlNodes.positions; + var fromDistance = Math.sqrt(Math.pow(x - positions.from.x,2) + Math.pow(y - positions.from.y,2)); + var toDistance = Math.sqrt(Math.pow(x - positions.to.x ,2) + Math.pow(y - positions.to.y ,2)); - for (var i = 0; i < datapoints.length; i++) { - xValue = toScreen(datapoints[i].x) + this.props.width; - yValue = datapoints[i].y; - extractedData.push({x: xValue, y: yValue}); + if (fromDistance < 15) { + this.connectedNode = this.from; + this.from = this.controlNodes.from; + return this.controlNodes.from; + } + else if (toDistance < 15) { + this.connectedNode = this.to; + this.to = this.controlNodes.to; + return this.controlNodes.to; + } + else { + return null; } - - return extractedData; }; /** - * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the - * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for - * the yAxis. - * - * @param datapoints - * @param group - * @returns {Array} + * this resets the control nodes to their original position. * @private */ - LineGraph.prototype._convertYcoordinates = function (datapoints, group) { - var extractedData = []; - var xValue, yValue; - var toScreen = this.body.util.toScreen; - var axis = this.yAxisLeft; - var svgHeight = Number(this.svg.style.height.replace('px','')); - if (group.options.yAxisOrientation == 'right') { - axis = this.yAxisRight; + Edge.prototype._restoreControlNodes = function() { + if (this.controlNodes.from.selected == true) { + this.from = this.connectedNode; + this.connectedNode = null; + this.controlNodes.from.unselect(); + } + else if (this.controlNodes.to.selected == true) { + this.to = this.connectedNode; + this.connectedNode = null; + this.controlNodes.to.unselect(); } + }; - for (var i = 0; i < datapoints.length; i++) { - var labelValue; - //if (datapoints[i].label) { - // labelValue = datapoints[i].label; - //} - //else { - // labelValue = null; - //} - labelValue = datapoints[i].label ? datapoints[i].label : null; - xValue = toScreen(datapoints[i].x) + this.props.width; - yValue = Math.round(axis.convertValue(datapoints[i].y)); - extractedData.push({x: xValue, y: yValue, label:labelValue}); + /** + * this calculates the position of the control nodes on the edges of the parent nodes. + * + * @param ctx + * @returns {x: *, y: *} + */ + Edge.prototype.getControlNodeFromPosition = function(ctx) { + // draw arrow head + var controlnodeFromPos; + if (this.options.smoothCurves.enabled == true) { + controlnodeFromPos = this._findBorderPosition(true, ctx); } + else { + var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); + var dx = (this.to.x - this.from.x); + var dy = (this.to.y - this.from.y); + var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); - group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0))); + var fromBorderDist = this.from.distanceToBorder(ctx, angle + Math.PI); + var fromBorderPoint = (edgeSegmentLength - fromBorderDist) / edgeSegmentLength; + controlnodeFromPos = {}; + controlnodeFromPos.x = (fromBorderPoint) * this.from.x + (1 - fromBorderPoint) * this.to.x; + controlnodeFromPos.y = (fromBorderPoint) * this.from.y + (1 - fromBorderPoint) * this.to.y; + } - return extractedData; + return controlnodeFromPos; }; + /** + * this calculates the position of the control nodes on the edges of the parent nodes. + * + * @param ctx + * @returns {{from: {x: number, y: number}, to: {x: *, y: *}}} + */ + Edge.prototype.getControlNodeToPosition = function(ctx) { + // draw arrow head + var controlnodeFromPos,controlnodeToPos; + if (this.options.smoothCurves.enabled == true) { + controlnodeToPos = this._findBorderPosition(false, ctx); + } + else { + var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); + var dx = (this.to.x - this.from.x); + var dy = (this.to.y - this.from.y); + var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); + var toBorderDist = this.to.distanceToBorder(ctx, angle); + var toBorderPoint = (edgeSegmentLength - toBorderDist) / edgeSegmentLength; - module.exports = LineGraph; + controlnodeToPos = {}; + controlnodeToPos.x = (1 - toBorderPoint) * this.from.x + toBorderPoint * this.to.x; + controlnodeToPos.y = (1 - toBorderPoint) * this.from.y + toBorderPoint * this.to.y; + } + return controlnodeToPos; + }; + + module.exports = Edge; /***/ }, -/* 44 */ +/* 38 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var DOMutil = __webpack_require__(6); - var Component = __webpack_require__(23); - var DataStep = __webpack_require__(45); /** - * A horizontal time axis - * @param {Object} [options] See DataAxis.setOptions for the available - * options. - * @constructor DataAxis - * @extends Component - * @param body + * @class Groups + * This class can store groups and properties specific for groups. */ - function DataAxis (body, options, svg, linegraphOptions) { - this.id = util.randomUUID(); - this.body = body; - - this.defaultOptions = { - orientation: 'left', // supported: 'left', 'right' - showMinorLabels: true, - showMajorLabels: true, - icons: true, - majorLinesOffset: 7, - minorLinesOffset: 4, - labelOffsetX: 10, - labelOffsetY: 2, - iconWidth: 20, - width: '40px', - visible: true, - alignZeros: true, - customRange: { - left: {min:undefined, max:undefined}, - right: {min:undefined, max:undefined} - }, - title: { - left: {text:undefined}, - right: {text:undefined} - }, - format: { - left: {decimals: undefined}, - right: {decimals: undefined} - } - }; - - this.linegraphOptions = linegraphOptions; - this.linegraphSVG = svg; - this.props = {}; - this.DOMelements = { // dynamic elements - lines: {}, - labels: {}, - title: {} - }; - - this.dom = {}; - - this.range = {start:0, end:0}; - - this.options = util.extend({}, this.defaultOptions); - this.conversionFactor = 1; - - this.setOptions(options); - this.width = Number(('' + this.options.width).replace("px","")); - this.minWidth = this.width; - this.height = this.linegraphSVG.offsetHeight; - this.hidden = false; - - this.stepPixels = 25; - this.stepPixelsForced = 25; - this.zeroCrossing = -1; - - this.lineOffset = 0; - this.master = true; - this.svgElements = {}; - this.iconsRemoved = false; - - - this.groups = {}; - this.amountOfGroups = 0; - - // create the HTML DOM - this._create(); - - var me = this; - this.body.emitter.on("verticalDrag", function() { - me.dom.lineContainer.style.top = me.body.domProps.scrollTop + 'px'; - }); + function Groups() { + this.clear(); + this.defaultIndex = 0; + this.groupsArray = []; + this.groupIndex = 0; + this.useDefaultGroups = true; } - DataAxis.prototype = new Component(); - - - DataAxis.prototype.addGroup = function(label, graphOptions) { - if (!this.groups.hasOwnProperty(label)) { - this.groups[label] = graphOptions; - } - this.amountOfGroups += 1; - }; - - DataAxis.prototype.updateGroup = function(label, graphOptions) { - this.groups[label] = graphOptions; - }; - - DataAxis.prototype.removeGroup = function(label) { - if (this.groups.hasOwnProperty(label)) { - delete this.groups[label]; - this.amountOfGroups -= 1; - } - }; - - - DataAxis.prototype.setOptions = function (options) { - if (options) { - var redraw = false; - if (this.options.orientation != options.orientation && options.orientation !== undefined) { - redraw = true; - } - var fields = [ - 'orientation', - 'showMinorLabels', - 'showMajorLabels', - 'icons', - 'majorLinesOffset', - 'minorLinesOffset', - 'labelOffsetX', - 'labelOffsetY', - 'iconWidth', - 'width', - 'visible', - 'customRange', - 'title', - 'format', - 'alignZeros' - ]; - util.selectiveExtend(fields, this.options, options); - - this.minWidth = Number(('' + this.options.width).replace("px","")); - - if (redraw == true && this.dom.frame) { - this.hide(); - this.show(); - } - } - }; - /** - * Create the HTML DOM for the DataAxis + * default constants for group colors */ - DataAxis.prototype._create = function() { - this.dom.frame = document.createElement('div'); - this.dom.frame.style.width = this.options.width; - this.dom.frame.style.height = this.height; - - this.dom.lineContainer = document.createElement('div'); - this.dom.lineContainer.style.width = '100%'; - this.dom.lineContainer.style.height = this.height; - this.dom.lineContainer.style.position = 'relative'; + Groups.DEFAULT = [ + {border: "#2B7CE9", background: "#97C2FC", highlight: {border: "#2B7CE9", background: "#D2E5FF"}, hover: {border: "#2B7CE9", background: "#D2E5FF"}}, // 0: blue + {border: "#FFA500", background: "#FFFF00", highlight: {border: "#FFA500", background: "#FFFFA3"}, hover: {border: "#FFA500", background: "#FFFFA3"}}, // 1: yellow + {border: "#FA0A10", background: "#FB7E81", highlight: {border: "#FA0A10", background: "#FFAFB1"}, hover: {border: "#FA0A10", background: "#FFAFB1"}}, // 2: red + {border: "#41A906", background: "#7BE141", highlight: {border: "#41A906", background: "#A1EC76"}, hover: {border: "#41A906", background: "#A1EC76"}}, // 3: green + {border: "#E129F0", background: "#EB7DF4", highlight: {border: "#E129F0", background: "#F0B3F5"}, hover: {border: "#E129F0", background: "#F0B3F5"}}, // 4: magenta + {border: "#7C29F0", background: "#AD85E4", highlight: {border: "#7C29F0", background: "#D3BDF0"}, hover: {border: "#7C29F0", background: "#D3BDF0"}}, // 5: purple + {border: "#C37F00", background: "#FFA807", highlight: {border: "#C37F00", background: "#FFCA66"}, hover: {border: "#C37F00", background: "#FFCA66"}}, // 6: orange + {border: "#4220FB", background: "#6E6EFD", highlight: {border: "#4220FB", background: "#9B9BFD"}, hover: {border: "#4220FB", background: "#9B9BFD"}}, // 7: darkblue + {border: "#FD5A77", background: "#FFC0CB", highlight: {border: "#FD5A77", background: "#FFD1D9"}, hover: {border: "#FD5A77", background: "#FFD1D9"}}, // 8: pink + {border: "#4AD63A", background: "#C2FABC", highlight: {border: "#4AD63A", background: "#E6FFE3"}, hover: {border: "#4AD63A", background: "#E6FFE3"}}, // 9: mint - // create svg element for graph drawing. - this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); - this.svg.style.position = "absolute"; - this.svg.style.top = '0px'; - this.svg.style.height = '100%'; - this.svg.style.width = '100%'; - this.svg.style.display = "block"; - this.dom.frame.appendChild(this.svg); - }; + {border: "#990000", background: "#EE0000", highlight: {border: "#BB0000", background: "#FF3333"}, hover: {border: "#BB0000", background: "#FF3333"}}, // 10:bright red - DataAxis.prototype._redrawGroupIcons = function () { - DOMutil.prepareElements(this.svgElements); + {border: "#FF6000", background: "#FF6000", highlight: {border: "#FF6000", background: "#FF6000"}, hover: {border: "#FF6000", background: "#FF6000"}}, // 12: real orange + {border: "#97C2FC", background: "#2B7CE9", highlight: {border: "#D2E5FF", background: "#2B7CE9"}, hover: {border: "#D2E5FF", background: "#2B7CE9"}}, // 13: blue + {border: "#399605", background: "#255C03", highlight: {border: "#399605", background: "#255C03"}, hover: {border: "#399605", background: "#255C03"}}, // 14: green + {border: "#B70054", background: "#FF007E", highlight: {border: "#B70054", background: "#FF007E"}, hover: {border: "#B70054", background: "#FF007E"}}, // 15: magenta + {border: "#AD85E4", background: "#7C29F0", highlight: {border: "#D3BDF0", background: "#7C29F0"}, hover: {border: "#D3BDF0", background: "#7C29F0"}}, // 16: purple + {border: "#4557FA", background: "#000EA1", highlight: {border: "#6E6EFD", background: "#000EA1"}, hover: {border: "#6E6EFD", background: "#000EA1"}}, // 17: darkblue + {border: "#FFC0CB", background: "#FD5A77", highlight: {border: "#FFD1D9", background: "#FD5A77"}, hover: {border: "#FFD1D9", background: "#FD5A77"}}, // 18: pink + {border: "#C2FABC", background: "#74D66A", highlight: {border: "#E6FFE3", background: "#74D66A"}, hover: {border: "#E6FFE3", background: "#74D66A"}}, // 19: mint - var x; - var iconWidth = this.options.iconWidth; - var iconHeight = 15; - var iconOffset = 4; - var y = iconOffset + 0.5 * iconHeight; + {border: "#EE0000", background: "#990000", highlight: {border: "#FF3333", background: "#BB0000"}, hover: {border: "#FF3333", background: "#BB0000"}}, // 20:bright red + ]; - if (this.options.orientation == 'left') { - x = iconOffset; - } - else { - x = this.width - iconWidth - iconOffset; - } - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); - y += iconHeight + iconOffset; + /** + * Clear all groups + */ + Groups.prototype.clear = function () { + this.groups = {}; + this.groups.length = function() + { + var i = 0; + for ( var p in this ) { + if (this.hasOwnProperty(p)) { + i++; } } + return i; } - - DOMutil.cleanupElements(this.svgElements); - this.iconsRemoved = false; }; - DataAxis.prototype._cleanupIcons = function() { - if (this.iconsRemoved == false) { - DOMutil.prepareElements(this.svgElements); - DOMutil.cleanupElements(this.svgElements); - this.iconsRemoved = true; - } - } /** - * Create the HTML DOM for the DataAxis + * get group properties of a groupname. If groupname is not found, a new group + * is added. + * @param {*} groupname Can be a number, string, Date, etc. + * @return {Object} group The created group, containing all group properties */ - DataAxis.prototype.show = function() { - this.hidden = false; - if (!this.dom.frame.parentNode) { - if (this.options.orientation == 'left') { - this.body.dom.left.appendChild(this.dom.frame); + Groups.prototype.get = function (groupname) { + var group = this.groups[groupname]; + if (group == undefined) { + if (this.useDefaultGroups === false && this.groupsArray.length > 0) { + // create new group + var index = this.groupIndex % this.groupsArray.length; + this.groupIndex++; + group = {}; + group.color = this.groups[this.groupsArray[index]]; + this.groups[groupname] = group; } else { - this.body.dom.right.appendChild(this.dom.frame); + // create new group + var index = this.defaultIndex % Groups.DEFAULT.length; + this.defaultIndex++; + group = {}; + group.color = Groups.DEFAULT[index]; + this.groups[groupname] = group; } } - if (!this.dom.lineContainer.parentNode) { - this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer); - } + return group; }; /** - * Create the HTML DOM for the DataAxis + * Add a custom group style + * @param {String} groupName + * @param {Object} style An object containing borderColor, + * backgroundColor, etc. + * @return {Object} group The created group object */ - DataAxis.prototype.hide = function() { - this.hidden = true; - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); - } - - if (this.dom.lineContainer.parentNode) { - this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer); - } + Groups.prototype.add = function (groupName, style) { + this.groups[groupName] = style; + this.groupsArray.push(groupName); + return style; }; + module.exports = Groups; + + +/***/ }, +/* 39 */ +/***/ function(module, exports, __webpack_require__) { + /** - * Set a range (start and end) - * @param end - * @param start - * @param end + * @class Images + * This class loads images and keeps them stored. */ - DataAxis.prototype.setRange = function (start, end) { - if (this.master == false && this.options.alignZeros == true && this.zeroCrossing != -1) { - if (start > 0) { - start = 0; - } - } - this.range.start = start; - this.range.end = end; - }; + function Images() { + this.images = {}; + this.imageBroken = {}; + this.callback = undefined; + } /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * Set an onload callback function. This will be called each time an image + * is loaded + * @param {function} callback */ - DataAxis.prototype.redraw = function () { - var resized = false; - var activeGroups = 0; - - // Make sure the line container adheres to the vertical scrolling. - this.dom.lineContainer.style.top = this.body.domProps.scrollTop + 'px'; + Images.prototype.setOnloadCallback = function(callback) { + this.callback = callback; + }; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - activeGroups++; + /** + * + * @param {string} url Url of the image + * @param {string} url Url of an image to use if the url image is not found + * @return {Image} img The image object + */ + Images.prototype.load = function(url, brokenUrl) { + var img = this.images[url]; // make a pointer + if (img === undefined) { + // create the image + var me = this; + img = new Image(); + img.onload = function () { + // IE11 fix -- thanks dponch! + if (this.width == 0) { + document.body.appendChild(this); + this.width = this.offsetWidth; + this.height = this.offsetHeight; + document.body.removeChild(this); } - } - } - if (this.amountOfGroups == 0 || activeGroups == 0) { - this.hide(); - } - else { - this.show(); - this.height = Number(this.linegraphSVG.style.height.replace("px","")); - // svg offsetheight did not work in firefox and explorer... - this.dom.lineContainer.style.height = this.height + 'px'; - this.width = this.options.visible == true ? Number(('' + this.options.width).replace("px","")) : 0; + if (me.callback) { + me.images[url] = img; + me.callback(this); + } + }; - var props = this.props; - var frame = this.dom.frame; + img.onerror = function () { + if (brokenUrl === undefined) { + console.error("Could not load image:", url); + delete this.src; + if (me.callback) { + me.callback(this); + } + } + else { + if (me.imageBroken[url] === true) { + if (this.src == brokenUrl) { + console.error("Could not load brokenImage:", brokenUrl); + delete this.src; + if (me.callback) { + me.callback(this); + } + } + else { + console.error("Could not load image:", url); + this.src = brokenUrl; + } + } + else { + console.error("Could not load image:", url); + this.src = brokenUrl; + me.imageBroken[url] = true; + } + } + }; - // update classname - frame.className = 'dataaxis'; - - // calculate character width and height - this._calculateCharSize(); - - var orientation = this.options.orientation; - var showMinorLabels = this.options.showMinorLabels; - var showMajorLabels = this.options.showMajorLabels; - - // determine the width and height of the elements for the axis - props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; - props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; + img.src = url; + } - props.minorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.minorLinesOffset; - props.minorLineHeight = 1; - props.majorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.majorLinesOffset; - props.majorLineHeight = 1; + return img; + }; - // take frame offline while updating (is almost twice as fast) - if (orientation == 'left') { - frame.style.top = '0'; - frame.style.left = '0'; - frame.style.bottom = ''; - frame.style.width = this.width + 'px'; - frame.style.height = this.height + "px"; - this.props.width = this.body.domProps.left.width; - this.props.height = this.body.domProps.left.height; - } - else { // right - frame.style.top = ''; - frame.style.bottom = '0'; - frame.style.left = '0'; - frame.style.width = this.width + 'px'; - frame.style.height = this.height + "px"; - this.props.width = this.body.domProps.right.width; - this.props.height = this.body.domProps.right.height; - } + module.exports = Images; - resized = this._redrawLabels(); - resized = this._isResized() || resized; - if (this.options.icons == true) { - this._redrawGroupIcons(); - } - else { - this._cleanupIcons(); - } +/***/ }, +/* 40 */ +/***/ function(module, exports, __webpack_require__) { - this._redrawTitle(orientation); - } - return resized; - }; + var util = __webpack_require__(1); /** - * Repaint major and minor text labels and vertical grid lines - * @private + * @class Node + * A node. A node can be connected to other nodes via one or multiple edges. + * @param {object} properties An object containing properties for the node. All + * properties are optional, except for the id. + * {number} id Id of the node. Required + * {string} label Text label for the node + * {number} x Horizontal position of the node + * {number} y Vertical position of the node + * {string} shape Node shape, available: + * "database", "circle", "ellipse", + * "box", "image", "text", "dot", + * "star", "triangle", "triangleDown", + * "square", "icon" + * {string} image An image url + * {string} title An title text, can be HTML + * {anytype} group A group name or number + * @param {Network.Images} imagelist A list with images. Only needed + * when the node has an image + * @param {Network.Groups} grouplist A list with groups. Needed for + * retrieving group properties + * @param {Object} constants An object with default values for + * example for the color + * */ - DataAxis.prototype._redrawLabels = function () { - var resized = false; - DOMutil.prepareElements(this.DOMelements.lines); - DOMutil.prepareElements(this.DOMelements.labels); - - var orientation = this.options['orientation']; - - // calculate range and step (step such that we have space for 7 characters per label) - var minimumStep = this.master ? this.props.majorCharHeight || 10 : this.stepPixelsForced; - - var step = new DataStep( - this.range.start, - this.range.end, - minimumStep, - this.dom.frame.offsetHeight, - this.options.customRange[this.options.orientation], - this.master == false && this.options.alignZeros // doess the step have to align zeros? only if not master and the options is on - ); + function Node(properties, imagelist, grouplist, networkConstants) { + var constants = util.selectiveBridgeObject(['nodes'],networkConstants); + this.options = constants.nodes; - this.step = step; - // get the distance in pixels for a step - // dead space is space that is "left over" after a step - var stepPixels = (this.dom.frame.offsetHeight - (step.deadSpace * (this.dom.frame.offsetHeight / step.marginRange))) / (((step.marginRange - step.deadSpace) / step.step)); + this.selected = false; + this.hover = false; - this.stepPixels = stepPixels; + this.edges = []; // all edges connected to this node + this.dynamicEdges = []; + this.reroutedEdges = {}; - var amountOfSteps = this.height / stepPixels; - var stepDifference = 0; + // set defaults for the properties + this.id = undefined; + this.allowedToMoveX = false; + this.allowedToMoveY = false; + this.xFixed = false; + this.yFixed = false; + this.horizontalAlignLeft = true; // these are for the navigation controls + this.verticalAlignTop = true; // these are for the navigation controls + this.baseRadiusValue = networkConstants.nodes.radius; + this.radiusFixed = false; + this.level = -1; + this.preassignedLevel = false; + this.hierarchyEnumerated = false; + this.labelDimensions = {top:0, left:0, width:0, height:0, yLine:0}; // could be cached + this.boundingBox = {top:0, left:0, right:0, bottom:0}; - // the slave axis needs to use the same horizontal lines as the master axis. - if (this.master == false) { - stepPixels = this.stepPixelsForced; - stepDifference = Math.round((this.dom.frame.offsetHeight / stepPixels) - amountOfSteps); - for (var i = 0; i < 0.5 * stepDifference; i++) { - step.previous(); - } - amountOfSteps = this.height / stepPixels; + this.imagelist = imagelist; + this.grouplist = grouplist; - if (this.zeroCrossing != -1 && this.options.alignZeros == true) { - var zeroStepDifference = (step.marginEnd / step.step) - this.zeroCrossing; - if (zeroStepDifference > 0) { - for (var i = 0; i < zeroStepDifference; i++) {step.next();} - } - else if (zeroStepDifference < 0) { - for (var i = 0; i < -zeroStepDifference; i++) {step.previous();} - } - } - } - else { - amountOfSteps += 0.25; - } + // physics properties + this.fx = 0.0; // external force x + this.fy = 0.0; // external force y + this.vx = 0.0; // velocity x + this.vy = 0.0; // velocity y + this.x = null; + this.y = null; + this.predefinedPosition = false; // used to check if initial zoomExtent should just take the range or approximate + // used for reverting to previous position on stabilization + this.previousState = {vx:0,vy:0,x:0,y:0}; - this.valueAtZero = step.marginEnd; - var marginStartPos = 0; + this.damping = networkConstants.physics.damping; // written every time gravity is calculated + this.fixedData = {x:null,y:null}; - // do not draw the first label - var max = 1; + this.setProperties(properties, constants); - // Get the number of decimal places - var decimals; - if(this.options.format[orientation] !== undefined) { - decimals = this.options.format[orientation].decimals; - } + // creating the variables for clustering + this.resetCluster(); + this.clusterSession = 0; + this.clusterSizeWidthFactor = networkConstants.clustering.nodeScaling.width; + this.clusterSizeHeightFactor = networkConstants.clustering.nodeScaling.height; + this.clusterSizeRadiusFactor = networkConstants.clustering.nodeScaling.radius; + this.maxNodeSizeIncrements = networkConstants.clustering.maxNodeSizeIncrements; + this.growthIndicator = 0; - this.maxLabelSize = 0; - var y = 0; - while (max < Math.round(amountOfSteps)) { - step.next(); - y = Math.round(max * stepPixels); - marginStartPos = max * stepPixels; - var isMajor = step.isMajor(); + // variables to tell the node about the network. + this.networkScaleInv = 1; + this.networkScale = 1; + this.canvasTopLeft = {"x": -300, "y": -300}; + this.canvasBottomRight = {"x": 300, "y": 300}; + this.parentEdgeId = null; + } - if (this.options['showMinorLabels'] && isMajor == false || this.master == false && this.options['showMinorLabels'] == true) { - this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis minor', this.props.minorCharHeight); - } - if (isMajor && this.options['showMajorLabels'] && this.master == true || - this.options['showMinorLabels'] == false && this.master == false && isMajor == true) { - if (y >= 0) { - this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis major', this.props.majorCharHeight); - } - this._redrawLine(y, orientation, 'grid horizontal major', this.options.majorLinesOffset, this.props.majorLineWidth); - } - else { - this._redrawLine(y, orientation, 'grid horizontal minor', this.options.minorLinesOffset, this.props.minorLineWidth); - } + /** + * Revert the position and velocity of the previous step. + */ + Node.prototype.revertPosition = function() { + this.x = this.previousState.x; + this.y = this.previousState.y; + this.vx = this.previousState.vx; + this.vy = this.previousState.vy; + } - if (this.master == true && step.current == 0) { - this.zeroCrossing = max; - } - max++; - } + /** + * (re)setting the clustering variables and objects + */ + Node.prototype.resetCluster = function() { + // clustering variables + this.formationScale = undefined; // this is used to determine when to open the cluster + this.clusterSize = 1; // this signifies the total amount of nodes in this cluster + this.containedNodes = {}; + this.containedEdges = {}; + this.clusterSessions = []; + }; - if (this.master == false) { - this.conversionFactor = y / (this.valueAtZero - step.current); - } - else { - this.conversionFactor = this.dom.frame.offsetHeight / step.marginRange; + /** + * Attach a edge to the node + * @param {Edge} edge + */ + Node.prototype.attachEdge = function(edge) { + if (this.edges.indexOf(edge) == -1) { + this.edges.push(edge); } - - // Note that title is rotated, so we're using the height, not width! - var titleWidth = 0; - if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { - titleWidth = this.props.titleCharHeight; + if (this.dynamicEdges.indexOf(edge) == -1) { + this.dynamicEdges.push(edge); } - var offset = this.options.icons == true ? Math.max(this.options.iconWidth, titleWidth) + this.options.labelOffsetX + 15 : titleWidth + this.options.labelOffsetX + 15; + }; - // this will resize the yAxis to accommodate the labels. - if (this.maxLabelSize > (this.width - offset) && this.options.visible == true) { - this.width = this.maxLabelSize + offset; - this.options.width = this.width + "px"; - DOMutil.cleanupElements(this.DOMelements.lines); - DOMutil.cleanupElements(this.DOMelements.labels); - this.redraw(); - resized = true; - } - // this will resize the yAxis if it is too big for the labels. - else if (this.maxLabelSize < (this.width - offset) && this.options.visible == true && this.width > this.minWidth) { - this.width = Math.max(this.minWidth,this.maxLabelSize + offset); - this.options.width = this.width + "px"; - DOMutil.cleanupElements(this.DOMelements.lines); - DOMutil.cleanupElements(this.DOMelements.labels); - this.redraw(); - resized = true; + /** + * Detach a edge from the node + * @param {Edge} edge + */ + Node.prototype.detachEdge = function(edge) { + var index = this.edges.indexOf(edge); + if (index != -1) { + this.edges.splice(index, 1); } - else { - DOMutil.cleanupElements(this.DOMelements.lines); - DOMutil.cleanupElements(this.DOMelements.labels); - resized = false; + index = this.dynamicEdges.indexOf(edge); + if (index != -1) { + this.dynamicEdges.splice(index, 1); } - - return resized; }; - DataAxis.prototype.convertValue = function (value) { - var invertedValue = this.valueAtZero - value; - var convertedValue = invertedValue * this.conversionFactor; - return convertedValue; - }; /** - * Create a label for the axis at position x - * @private - * @param y - * @param text - * @param orientation - * @param className - * @param characterHeight + * Set or overwrite properties for the node + * @param {Object} properties an object with properties + * @param {Object} constants and object with default, global properties */ - DataAxis.prototype._redrawLabel = function (y, text, orientation, className, characterHeight) { - // reuse redundant label - var label = DOMutil.getDOMElement('div',this.DOMelements.labels, this.dom.frame); //this.dom.redundant.labels.shift(); - label.className = className; - label.innerHTML = text; - if (orientation == 'left') { - label.style.left = '-' + this.options.labelOffsetX + 'px'; - label.style.textAlign = "right"; - } - else { - label.style.right = '-' + this.options.labelOffsetX + 'px'; - label.style.textAlign = "left"; + Node.prototype.setProperties = function(properties, constants) { + if (!properties) { + return; } - label.style.top = y - 0.5 * characterHeight + this.options.labelOffsetY + 'px'; + var fields = ['borderWidth','borderWidthSelected','shape','image','brokenImage','radius','fontColor', + 'fontSize','fontFace','fontFill','fontStrokeWidth','fontStrokeColor','group','mass','fontDrawThreshold', + 'scaleFontWithValue','fontSizeMaxVisible','customScalingFunction','iconFontFace', 'icon', 'iconColor', 'iconSize' + ]; + util.selectiveDeepExtend(fields, this.options, properties); - text += ''; + // basic properties + if (properties.id !== undefined) {this.id = properties.id;} + if (properties.label !== undefined) {this.label = properties.label; this.originalLabel = properties.label;} + if (properties.title !== undefined) {this.title = properties.title;} + if (properties.x !== undefined) {this.x = properties.x; this.predefinedPosition = true;} + if (properties.y !== undefined) {this.y = properties.y; this.predefinedPosition = true;} + if (properties.value !== undefined) {this.value = properties.value;} + if (properties.level !== undefined) {this.level = properties.level; this.preassignedLevel = true;} - var largestWidth = Math.max(this.props.majorCharWidth,this.props.minorCharWidth); - if (this.maxLabelSize < text.length * largestWidth) { - this.maxLabelSize = text.length * largestWidth; + // navigation controls properties + if (properties.horizontalAlignLeft !== undefined) {this.horizontalAlignLeft = properties.horizontalAlignLeft;} + if (properties.verticalAlignTop !== undefined) {this.verticalAlignTop = properties.verticalAlignTop;} + if (properties.triggerFunction !== undefined) {this.triggerFunction = properties.triggerFunction;} + + if (this.id === undefined) { + throw "Node must have an id"; } - }; - /** - * Create a minor line for the axis at position y - * @param y - * @param orientation - * @param className - * @param offset - * @param width - */ - DataAxis.prototype._redrawLine = function (y, orientation, className, offset, width) { - if (this.master == true) { - var line = DOMutil.getDOMElement('div',this.DOMelements.lines, this.dom.lineContainer);//this.dom.redundant.lines.shift(); - line.className = className; - line.innerHTML = ''; + // copy group properties + if (typeof properties.group === 'number' || (typeof properties.group === 'string' && properties.group != '')) { + var groupObj = this.grouplist.get(properties.group); + util.deepExtend(this.options, groupObj); + // the color object needs to be completely defined. Since groups can partially overwrite the colors, we parse it again, just in case. + this.options.color = util.parseColor(this.options.color); + } + // individual shape properties + if (properties.radius !== undefined) {this.baseRadiusValue = this.options.radius;} + if (properties.color !== undefined) {this.options.color = util.parseColor(properties.color);} - if (orientation == 'left') { - line.style.left = (this.width - offset) + 'px'; + if (this.options.image !== undefined && this.options.image!= "") { + if (this.imagelist) { + this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage); } else { - line.style.right = (this.width - offset) + 'px'; + throw "No imagelist provided"; } + } - line.style.width = width + 'px'; - line.style.top = y + 'px'; + if (properties.allowedToMoveX !== undefined) { + this.xFixed = !properties.allowedToMoveX; + this.allowedToMoveX = properties.allowedToMoveX; + } + else if (properties.x !== undefined && this.allowedToMoveX == false) { + this.xFixed = true; } - }; - /** - * Create a title for the axis - * @private - * @param orientation - */ - DataAxis.prototype._redrawTitle = function (orientation) { - DOMutil.prepareElements(this.DOMelements.title); - // Check if the title is defined for this axes - if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { - var title = DOMutil.getDOMElement('div', this.DOMelements.title, this.dom.frame); - title.className = 'yAxis title ' + orientation; - title.innerHTML = this.options.title[orientation].text; + if (properties.allowedToMoveY !== undefined) { + this.yFixed = !properties.allowedToMoveY; + this.allowedToMoveY = properties.allowedToMoveY; + } + else if (properties.y !== undefined && this.allowedToMoveY == false) { + this.yFixed = true; + } - // Add style - if provided - if (this.options.title[orientation].style !== undefined) { - util.addCssText(title, this.options.title[orientation].style); - } + this.radiusFixed = this.radiusFixed || (properties.radius !== undefined); - if (orientation == 'left') { - title.style.left = this.props.titleCharHeight + 'px'; - } - else { - title.style.right = this.props.titleCharHeight + 'px'; - } + if (this.options.shape === 'image' || this.options.shape === 'circularImage') { + this.options.radiusMin = constants.nodes.widthMin; + this.options.radiusMax = constants.nodes.widthMax; + } - title.style.width = this.height + 'px'; + // choose draw method depending on the shape + switch (this.options.shape) { + case 'database': this.draw = this._drawDatabase; this.resize = this._resizeDatabase; break; + case 'box': this.draw = this._drawBox; this.resize = this._resizeBox; break; + case 'circle': this.draw = this._drawCircle; this.resize = this._resizeCircle; break; + case 'ellipse': this.draw = this._drawEllipse; this.resize = this._resizeEllipse; break; + // TODO: add diamond shape + case 'image': this.draw = this._drawImage; this.resize = this._resizeImage; break; + case 'circularImage': this.draw = this._drawCircularImage; this.resize = this._resizeCircularImage; break; + case 'text': this.draw = this._drawText; this.resize = this._resizeText; break; + case 'dot': this.draw = this._drawDot; this.resize = this._resizeShape; break; + case 'square': this.draw = this._drawSquare; this.resize = this._resizeShape; break; + case 'triangle': this.draw = this._drawTriangle; this.resize = this._resizeShape; break; + case 'triangleDown': this.draw = this._drawTriangleDown; this.resize = this._resizeShape; break; + case 'star': this.draw = this._drawStar; this.resize = this._resizeShape; break; + case 'icon': this.draw = this._drawIcon; this.resize = this._resizeIcon; break; + default: this.draw = this._drawEllipse; this.resize = this._resizeEllipse; break; } + // reset the size of the node, this can be changed + this._reset(); - // we need to clean up in case we did not use all elements. - DOMutil.cleanupElements(this.DOMelements.title); }; + /** + * select this node + */ + Node.prototype.select = function() { + this.selected = true; + this._reset(); + }; + + /** + * unselect this node + */ + Node.prototype.unselect = function() { + this.selected = false; + this._reset(); + }; + /** + * Reset the calculated size of the node, forces it to recalculate its size + */ + Node.prototype.clearSizeCache = function() { + this._reset(); + }; /** - * Determine the size of text on the axis (both major and minor axis). - * The size is calculated only once and then cached in this.props. + * Reset the calculated size of the node, forces it to recalculate its size * @private */ - DataAxis.prototype._calculateCharSize = function () { - // determine the char width and height on the minor axis - if (!('minorCharHeight' in this.props)) { - var textMinor = document.createTextNode('0'); - var measureCharMinor = document.createElement('div'); - measureCharMinor.className = 'yAxis minor measure'; - measureCharMinor.appendChild(textMinor); - this.dom.frame.appendChild(measureCharMinor); - - this.props.minorCharHeight = measureCharMinor.clientHeight; - this.props.minorCharWidth = measureCharMinor.clientWidth; - - this.dom.frame.removeChild(measureCharMinor); - } + Node.prototype._reset = function() { + this.width = undefined; + this.height = undefined; + }; - if (!('majorCharHeight' in this.props)) { - var textMajor = document.createTextNode('0'); - var measureCharMajor = document.createElement('div'); - measureCharMajor.className = 'yAxis major measure'; - measureCharMajor.appendChild(textMajor); - this.dom.frame.appendChild(measureCharMajor); + /** + * get the title of this node. + * @return {string} title The title of the node, or undefined when no title + * has been set. + */ + Node.prototype.getTitle = function() { + return typeof this.title === "function" ? this.title() : this.title; + }; - this.props.majorCharHeight = measureCharMajor.clientHeight; - this.props.majorCharWidth = measureCharMajor.clientWidth; + /** + * Calculate the distance to the border of the Node + * @param {CanvasRenderingContext2D} ctx + * @param {Number} angle Angle in radians + * @returns {number} distance Distance to the border in pixels + */ + Node.prototype.distanceToBorder = function (ctx, angle) { + var borderWidth = 1; - this.dom.frame.removeChild(measureCharMajor); + if (!this.width) { + this.resize(ctx); } - if (!('titleCharHeight' in this.props)) { - var textTitle = document.createTextNode('0'); - var measureCharTitle = document.createElement('div'); - measureCharTitle.className = 'yAxis title measure'; - measureCharTitle.appendChild(textTitle); - this.dom.frame.appendChild(measureCharTitle); - - this.props.titleCharHeight = measureCharTitle.clientHeight; - this.props.titleCharWidth = measureCharTitle.clientWidth; + switch (this.options.shape) { + case 'circle': + case 'dot': + return this.options.radius+ borderWidth; - this.dom.frame.removeChild(measureCharTitle); - } - }; + case 'ellipse': + var a = this.width / 2; + var b = this.height / 2; + var w = (Math.sin(angle) * a); + var h = (Math.cos(angle) * b); + return a * b / Math.sqrt(w * w + h * h); - module.exports = DataAxis; + // TODO: implement distanceToBorder for database + // TODO: implement distanceToBorder for triangle + // TODO: implement distanceToBorder for triangleDown + case 'box': + case 'image': + case 'text': + default: + if (this.width) { + return Math.min( + Math.abs(this.width / 2 / Math.cos(angle)), + Math.abs(this.height / 2 / Math.sin(angle))) + borderWidth; + // TODO: reckon with border radius too in case of box + } + else { + return 0; + } -/***/ }, -/* 45 */ -/***/ function(module, exports, __webpack_require__) { + } + // TODO: implement calculation of distance to border for all shapes + }; /** - * @constructor DataStep - * The class DataStep is an iterator for data for the lineGraph. You provide a start data point and an - * end data point. The class itself determines the best scale (step size) based on the - * provided start Date, end Date, and minimumStep. - * - * If minimumStep is provided, the step size is chosen as close as possible - * to the minimumStep but larger than minimumStep. If minimumStep is not - * provided, the scale is set to 1 DAY. - * The minimumStep should correspond with the onscreen size of about 6 characters - * - * Alternatively, you can set a scale by hand. - * After creation, you can initialize the class by executing first(). Then you - * can iterate from the start date to the end date via next(). You can check if - * the end date is reached with the function hasNext(). After each step, you can - * retrieve the current date via getCurrent(). - * The DataStep has scales ranging from milliseconds, seconds, minutes, hours, - * days, to years. - * - * Version: 1.2 - * - * @param {Date} [start] The start date, for example new Date(2010, 9, 21) - * or new Date(2010, 9, 21, 23, 45, 00) - * @param {Date} [end] The end date - * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds + * Set forces acting on the node + * @param {number} fx Force in horizontal direction + * @param {number} fy Force in vertical direction */ - function DataStep(start, end, minimumStep, containerHeight, customRange, alignZeros) { - // variables - this.current = 0; - - this.autoScale = true; - this.stepIndex = 0; - this.step = 1; - this.scale = 1; - - this.marginStart; - this.marginEnd; - this.deadSpace = 0; - - this.majorSteps = [1, 2, 5, 10]; - this.minorSteps = [0.25, 0.5, 1, 2]; - - this.alignZeros = alignZeros; - - this.setRange(start, end, minimumStep, containerHeight, customRange); - } - - + Node.prototype._setForce = function(fx, fy) { + this.fx = fx; + this.fy = fy; + }; /** - * Set a new range - * If minimumStep is provided, the step size is chosen as close as possible - * to the minimumStep but larger than minimumStep. If minimumStep is not - * provided, the scale is set to 1 DAY. - * The minimumStep should correspond with the onscreen size of about 6 characters - * @param {Number} [start] The start date and time. - * @param {Number} [end] The end date and time. - * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds + * Add forces acting on the node + * @param {number} fx Force in horizontal direction + * @param {number} fy Force in vertical direction + * @private */ - DataStep.prototype.setRange = function(start, end, minimumStep, containerHeight, customRange) { - this._start = customRange.min === undefined ? start : customRange.min; - this._end = customRange.max === undefined ? end : customRange.max; - - if (this._start == this._end) { - this._start -= 0.75; - this._end += 1; - } - - if (this.autoScale == true) { - this.setMinimumStep(minimumStep, containerHeight); - } - - this.setFirst(customRange); + Node.prototype._addForce = function(fx, fy) { + this.fx += fx; + this.fy += fy; }; /** - * Automatically determine the scale that bests fits the provided minimum step - * @param {Number} [minimumStep] The minimum step size in milliseconds + * Store the state before the next step */ - DataStep.prototype.setMinimumStep = function(minimumStep, containerHeight) { - // round to floor - var size = this._end - this._start; - var safeSize = size * 1.2; - var minimumStepValue = minimumStep * (safeSize / containerHeight); - var orderOfMagnitude = Math.round(Math.log(safeSize)/Math.LN10); - - var minorStepIdx = -1; - var magnitudefactor = Math.pow(10,orderOfMagnitude); + Node.prototype.storeState = function() { + this.previousState.x = this.x; + this.previousState.y = this.y; + this.previousState.vx = this.vx; + this.previousState.vy = this.vy; + } - var start = 0; - if (orderOfMagnitude < 0) { - start = orderOfMagnitude; + /** + * Perform one discrete step for the node + * @param {number} interval Time interval in seconds + */ + Node.prototype.discreteStep = function(interval) { + this.storeState(); + if (!this.xFixed) { + var dx = this.damping * this.vx; // damping force + var ax = (this.fx - dx) / this.options.mass; // acceleration + this.vx += ax * interval; // velocity + this.x += this.vx * interval; // position + } + else { + this.fx = 0; + this.vx = 0; } - var solutionFound = false; - for (var i = start; Math.abs(i) <= Math.abs(orderOfMagnitude); i++) { - magnitudefactor = Math.pow(10,i); - for (var j = 0; j < this.minorSteps.length; j++) { - var stepSize = magnitudefactor * this.minorSteps[j]; - if (stepSize >= minimumStepValue) { - solutionFound = true; - minorStepIdx = j; - break; - } - } - if (solutionFound == true) { - break; - } + if (!this.yFixed) { + var dy = this.damping * this.vy; // damping force + var ay = (this.fy - dy) / this.options.mass; // acceleration + this.vy += ay * interval; // velocity + this.y += this.vy * interval; // position + } + else { + this.fy = 0; + this.vy = 0; } - this.stepIndex = minorStepIdx; - this.scale = magnitudefactor; - this.step = magnitudefactor * this.minorSteps[minorStepIdx]; }; /** - * Round the current date to the first minor date value - * This must be executed once when the current date is set to start Date + * Perform one discrete step for the node + * @param {number} interval Time interval in seconds + * @param {number} maxVelocity The speed limit imposed on the velocity */ - DataStep.prototype.setFirst = function(customRange) { - if (customRange === undefined) { - customRange = {}; + Node.prototype.discreteStepLimited = function(interval, maxVelocity) { + this.storeState(); + if (!this.xFixed) { + var dx = this.damping * this.vx; // damping force + var ax = (this.fx - dx) / this.options.mass; // acceleration + this.vx += ax * interval; // velocity + this.vx = (Math.abs(this.vx) > maxVelocity) ? ((this.vx > 0) ? maxVelocity : -maxVelocity) : this.vx; + this.x += this.vx * interval; // position } - - var niceStart = customRange.min === undefined ? this._start - (this.scale * 2 * this.minorSteps[this.stepIndex]) : customRange.min; - var niceEnd = customRange.max === undefined ? this._end + (this.scale * this.minorSteps[this.stepIndex]) : customRange.max; - - this.marginEnd = customRange.max === undefined ? this.roundToMinor(niceEnd) : customRange.max; - this.marginStart = customRange.min === undefined ? this.roundToMinor(niceStart) : customRange.min; - - // if we need to align the zero's we need to make sure that there is a zero to use. - if (this.alignZeros == true && (this.marginEnd - this.marginStart) % this.step != 0) { - this.marginEnd += this.marginEnd % this.step; + else { + this.fx = 0; + this.vx = 0; } - this.deadSpace = this.roundToMinor(niceEnd) - niceEnd + this.roundToMinor(niceStart) - niceStart; - this.marginRange = this.marginEnd - this.marginStart; - - - this.current = this.marginEnd; - }; - - DataStep.prototype.roundToMinor = function(value) { - var rounded = value - (value % (this.scale * this.minorSteps[this.stepIndex])); - if (value % (this.scale * this.minorSteps[this.stepIndex]) > 0.5 * (this.scale * this.minorSteps[this.stepIndex])) { - return rounded + (this.scale * this.minorSteps[this.stepIndex]); + if (!this.yFixed) { + var dy = this.damping * this.vy; // damping force + var ay = (this.fy - dy) / this.options.mass; // acceleration + this.vy += ay * interval; // velocity + this.vy = (Math.abs(this.vy) > maxVelocity) ? ((this.vy > 0) ? maxVelocity : -maxVelocity) : this.vy; + this.y += this.vy * interval; // position } else { - return rounded; + this.fy = 0; + this.vy = 0; } - } - + }; /** - * Check if the there is a next step - * @return {boolean} true if the current date has not passed the end date + * Check if this node has a fixed x and y position + * @return {boolean} true if fixed, false if not */ - DataStep.prototype.hasNext = function () { - return (this.current >= this.marginStart); + Node.prototype.isFixed = function() { + return (this.xFixed && this.yFixed); }; /** - * Do the next step + * Check if this node is moving + * @param {number} vmin the minimum velocity considered as "moving" + * @return {boolean} true if moving, false if it has no velocity */ - DataStep.prototype.next = function() { - var prev = this.current; - this.current -= this.step; - - // safety mechanism: if current time is still unchanged, move to the end - if (this.current == prev) { - this.current = this._end; - } + Node.prototype.isMoving = function(vmin) { + var velocity = Math.sqrt(Math.pow(this.vx,2) + Math.pow(this.vy,2)); + // this.velocity = Math.sqrt(Math.pow(this.vx,2) + Math.pow(this.vy,2)) + return (velocity > vmin); }; /** - * Do the next step + * check if this node is selecte + * @return {boolean} selected True if node is selected, else false */ - DataStep.prototype.previous = function() { - this.current += this.step; - this.marginEnd += this.step; - this.marginRange = this.marginEnd - this.marginStart; + Node.prototype.isSelected = function() { + return this.selected; }; - - /** - * Get the current datetime - * @return {String} current The current date + * Retrieve the value of the node. Can be undefined + * @return {Number} value */ - DataStep.prototype.getCurrent = function(decimals) { - // prevent round-off errors when close to zero - var current = (Math.abs(this.current) < this.step / 2) ? 0 : this.current; - var toPrecision = '' + Number(current).toPrecision(5); - - // If decimals is specified, then limit or extend the string as required - if(decimals !== undefined && !isNaN(Number(decimals))) { - // If string includes exponent, then we need to add it to the end - var exp = ""; - var index = toPrecision.indexOf("e"); - if(index != -1) { - // Get the exponent - exp = toPrecision.slice(index); - // Remove the exponent in case we need to zero-extend - toPrecision = toPrecision.slice(0, index); - } - index = Math.max(toPrecision.indexOf(","), toPrecision.indexOf(".")); - if(index === -1) { - // No decimal found - if we want decimals, then we need to add it - if(decimals !== 0) { - toPrecision += '.'; - } - // Calculate how long the string should be - index = toPrecision.length + decimals; - } - else if(decimals !== 0) { - // Calculate how long the string should be - accounting for the decimal place - index += decimals + 1; - } - if(index > toPrecision.length) { - // We need to add zeros! - for(var cnt = index - toPrecision.length; cnt > 0; cnt--) { - toPrecision += '0'; - } - } - else { - // we need to remove characters - toPrecision = toPrecision.slice(0, index); - } - // Add the exponent if there is one - toPrecision += exp; - } - else { - if (toPrecision.indexOf(",") != -1 || toPrecision.indexOf(".") != -1) { - // If no decimal is specified, and there are decimal places, remove trailing zeros - for (var i = toPrecision.length - 1; i > 0; i--) { - if (toPrecision[i] == "0") { - toPrecision = toPrecision.slice(0, i); - } - else if (toPrecision[i] == "." || toPrecision[i] == ",") { - toPrecision = toPrecision.slice(0, i); - break; - } - else { - break; - } - } - } - } - - return toPrecision; + Node.prototype.getValue = function() { + return this.value; }; /** - * Check if the current value is a major value (for example when the step - * is DAY, a major value is each first day of the MONTH) - * @return {boolean} true if current date is major, else false. + * Calculate the distance from the nodes location to the given location (x,y) + * @param {Number} x + * @param {Number} y + * @return {Number} value */ - DataStep.prototype.isMajor = function() { - return (this.current % (this.scale * this.majorSteps[this.stepIndex]) == 0); + Node.prototype.getDistance = function(x, y) { + var dx = this.x - x, + dy = this.y - y; + return Math.sqrt(dx * dx + dy * dy); }; - module.exports = DataStep; - - -/***/ }, -/* 46 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(6); - var Line = __webpack_require__(47); - var Bar = __webpack_require__(49); - var Points = __webpack_require__(48); /** - * /** - * @param {object} group | the object of the group from the dataset - * @param {string} groupId | ID of the group - * @param {object} options | the default options - * @param {array} groupsUsingDefaultStyles | this array has one entree. - * It is passed as an array so it is passed by reference. - * It enumerates through the default styles - * @constructor + * Adjust the value range of the node. The node will adjust it's radius + * based on its value. + * @param {Number} min + * @param {Number} max */ - function GraphGroup (group, groupId, options, groupsUsingDefaultStyles) { - this.id = groupId; - var fields = ['sampling','style','sort','yAxisOrientation','barChart','drawPoints','shaded','catmullRom'] - this.options = util.selectiveBridgeObject(fields,options); - this.usingDefaultStyle = group.className === undefined; - this.groupsUsingDefaultStyles = groupsUsingDefaultStyles; - this.zeroPosition = 0; - this.update(group); - if (this.usingDefaultStyle == true) { - this.groupsUsingDefaultStyles[0] += 1; + Node.prototype.setValueRange = function(min, max, total) { + if (!this.radiusFixed && this.value !== undefined) { + var scale = this.options.customScalingFunction(min, max, total, this.value); + var radiusDiff = this.options.radiusMax - this.options.radiusMin; + if (this.options.scaleFontWithValue == true) { + var fontDiff = this.options.fontSizeMax - this.options.fontSizeMin; + this.options.fontSize = this.options.fontSizeMin + scale * fontDiff; + } + this.options.radius = this.options.radiusMin + scale * radiusDiff; } - this.itemsData = []; - this.visible = group.visible === undefined ? true : group.visible; - } + this.baseRadiusValue = this.options.radius; + }; /** - * this loads a reference to all items in this group into this group. - * @param {array} items + * Draw this node in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx */ - GraphGroup.prototype.setItems = function(items) { - if (items != null) { - this.itemsData = items; - if (this.options.sort == true) { - this.itemsData.sort(function (a,b) {return a.x - b.x;}) - } - } - else { - this.itemsData = []; - } + Node.prototype.draw = function(ctx) { + throw "Draw method not initialized for node"; }; - /** - * this is used for plotting barcharts, this way, we only have to calculate it once. - * @param pos + * Recalculate the size of this node in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx */ - GraphGroup.prototype.setZeroPosition = function(pos) { - this.zeroPosition = pos; + Node.prototype.resize = function(ctx) { + throw "Resize method not initialized for node"; }; - /** - * set the options of the graph group over the default options. - * @param options + * Check if this object is overlapping with the provided object + * @param {Object} obj an object with parameters left, top, right, bottom + * @return {boolean} True if location is located on node */ - GraphGroup.prototype.setOptions = function(options) { - if (options !== undefined) { - var fields = ['sampling','style','sort','yAxisOrientation','barChart']; - util.selectiveDeepExtend(fields, this.options, options); + Node.prototype.isOverlappingWith = function(obj) { + return (this.left < obj.right && + this.left + this.width > obj.left && + this.top < obj.bottom && + this.top + this.height > obj.top); + }; - util.mergeOptions(this.options, options,'catmullRom'); - util.mergeOptions(this.options, options,'drawPoints'); - util.mergeOptions(this.options, options,'shaded'); + Node.prototype._resizeImage = function (ctx) { + // TODO: pre calculate the image size - if (options.catmullRom) { - if (typeof options.catmullRom == 'object') { - if (options.catmullRom.parametrization) { - if (options.catmullRom.parametrization == 'uniform') { - this.options.catmullRom.alpha = 0; - } - else if (options.catmullRom.parametrization == 'chordal') { - this.options.catmullRom.alpha = 1.0; - } - else { - this.options.catmullRom.parametrization = 'centripetal'; - this.options.catmullRom.alpha = 0.5; - } - } + if (!this.width || !this.height) { // undefined or 0 + var width, height; + if (this.value) { + this.options.radius= this.baseRadiusValue; + var scale = this.imageObj.height / this.imageObj.width; + if (scale !== undefined) { + width = this.options.radius|| this.imageObj.width; + height = this.options.radius* scale || this.imageObj.height; + } + else { + width = 0; + height = 0; } } - } + else { + width = this.imageObj.width; + height = this.imageObj.height; + } + this.width = width; + this.height = height; - if (this.options.style == 'line') { - this.type = new Line(this.id, this.options); - } - else if (this.options.style == 'bar') { - this.type = new Bar(this.id, this.options); - } - else if (this.options.style == 'points') { - this.type = new Points(this.id, this.options); + this.growthIndicator = 0; + if (this.width > 0 && this.height > 0) { + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - width; + } } }; + Node.prototype._drawImageAtPosition = function (ctx) { + if (this.imageObj.width != 0 ) { + // draw the shade + if (this.clusterSize > 1) { + var lineWidth = ((this.clusterSize > 1) ? 10 : 0.0); + lineWidth *= this.networkScaleInv; + lineWidth = Math.min(0.2 * this.width,lineWidth); - /** - * this updates the current group class with the latest group dataset entree, used in _updateGroup in linegraph - * @param group - */ - GraphGroup.prototype.update = function(group) { - this.group = group; - this.content = group.content || 'graph'; - this.className = group.className || this.className || "graphGroup" + this.groupsUsingDefaultStyles[0] % 10; - this.visible = group.visible === undefined ? true : group.visible; - this.style = group.style; - this.setOptions(group.options); + ctx.globalAlpha = 0.5; + ctx.drawImage(this.imageObj, this.left - lineWidth, this.top - lineWidth, this.width + 2*lineWidth, this.height + 2*lineWidth); + } + + // draw the image + ctx.globalAlpha = 1.0; + ctx.drawImage(this.imageObj, this.left, this.top, this.width, this.height); + } }; + Node.prototype._drawImageLabel = function (ctx) { + var yLabel; + var offset = 0; + + if (this.height){ + offset = this.height / 2; + var labelDimensions = this.getTextSize(ctx); + + if (labelDimensions.lineCount >= 1){ + offset += labelDimensions.height / 2; + offset += 3; + } + } + + yLabel = this.y + offset; - /** - * draw the icon for the legend. - * - * @param x - * @param y - * @param JSONcontainer - * @param SVGcontainer - * @param iconWidth - * @param iconHeight - */ - GraphGroup.prototype.drawIcon = function(x, y, JSONcontainer, SVGcontainer, iconWidth, iconHeight) { - var fillHeight = iconHeight * 0.5; - var path, fillPath; + this._label(ctx, this.label, this.x, yLabel, undefined); + }; - var outline = DOMutil.getSVGElement("rect", JSONcontainer, SVGcontainer); - outline.setAttributeNS(null, "x", x); - outline.setAttributeNS(null, "y", y - fillHeight); - outline.setAttributeNS(null, "width", iconWidth); - outline.setAttributeNS(null, "height", 2*fillHeight); - outline.setAttributeNS(null, "class", "outline"); + Node.prototype._drawImage = function (ctx) { + this._resizeImage(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - if (this.options.style == 'line') { - path = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); - path.setAttributeNS(null, "class", this.className); - if(this.style !== undefined) { - path.setAttributeNS(null, "style", this.style); - } + this._drawImageAtPosition(ctx); - path.setAttributeNS(null, "d", "M" + x + ","+y+" L" + (x + iconWidth) + ","+y+""); - if (this.options.shaded.enabled == true) { - fillPath = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); - if (this.options.shaded.orientation == 'top') { - fillPath.setAttributeNS(null, "d", "M"+x+", " + (y - fillHeight) + - "L"+x+","+y+" L"+ (x + iconWidth) + ","+y+" L"+ (x + iconWidth) + "," + (y - fillHeight)); - } - else { - fillPath.setAttributeNS(null, "d", "M"+x+","+y+" " + - "L"+x+"," + (y + fillHeight) + " " + - "L"+ (x + iconWidth) + "," + (y + fillHeight) + - "L"+ (x + iconWidth) + ","+y); - } - fillPath.setAttributeNS(null, "class", this.className + " iconFill"); - } + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; - if (this.options.drawPoints.enabled == true) { - DOMutil.drawPoint(x + 0.5 * iconWidth,y, this, JSONcontainer, SVGcontainer); + this._drawImageLabel(ctx); + this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); + }; + + Node.prototype._resizeCircularImage = function (ctx) { + if(!this.imageObj.src || !this.imageObj.width || !this.imageObj.height){ + if (!this.width) { + var diameter = this.options.radius * 2; + this.width = diameter; + this.height = diameter; + + // scaling used for clustering + //this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; + //this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; + this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; + this.growthIndicator = this.options.radius- 0.5*diameter; + this._swapToImageResizeWhenImageLoaded = true; } } else { - var barWidth = Math.round(0.3 * iconWidth); - var bar1Height = Math.round(0.4 * iconHeight); - var bar2Height = Math.round(0.75 * iconHeight); - - var offset = Math.round((iconWidth - (2 * barWidth))/3); - - DOMutil.drawBar(x + 0.5*barWidth + offset , y + fillHeight - bar1Height - 1, barWidth, bar1Height, this.className + ' bar', JSONcontainer, SVGcontainer); - DOMutil.drawBar(x + 1.5*barWidth + offset + 2, y + fillHeight - bar2Height - 1, barWidth, bar2Height, this.className + ' bar', JSONcontainer, SVGcontainer); + if (this._swapToImageResizeWhenImageLoaded) { + this.width = 0; + this.height = 0; + delete this._swapToImageResizeWhenImageLoaded; + } + this._resizeImage(ctx); } + }; + Node.prototype._drawCircularImage = function (ctx) { + this._resizeCircularImage(ctx); - /** - * return the legend entree for this group. - * - * @param iconWidth - * @param iconHeight - * @returns {{icon: HTMLElement, label: (group.content|*|string), orientation: (.options.yAxisOrientation|*)}} - */ - GraphGroup.prototype.getLegend = function(iconWidth, iconHeight) { - var svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); - this.drawIcon(0,0.5*iconHeight,[],svg,iconWidth,iconHeight); - return {icon: svg, label: this.content, orientation:this.options.yAxisOrientation}; - } + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; + + var centerX = this.left + (this.width / 2); + var centerY = this.top + (this.height / 2); + var radius = Math.abs(this.height / 2); - GraphGroup.prototype.getYRange = function(groupData) { - return this.type.getYRange(groupData); - } + this._drawRawCircle(ctx, centerX, centerY, radius); - GraphGroup.prototype.draw = function(dataset, group, framework) { - this.type.draw(dataset, group, framework); - } + ctx.save(); + ctx.circle(this.x, this.y, radius); + ctx.stroke(); + ctx.clip(); + this._drawImageAtPosition(ctx); - module.exports = GraphGroup; + ctx.restore(); + this.boundingBox.top = this.y - this.options.radius; + this.boundingBox.left = this.x - this.options.radius; + this.boundingBox.right = this.x + this.options.radius; + this.boundingBox.bottom = this.y + this.options.radius; -/***/ }, -/* 47 */ -/***/ function(module, exports, __webpack_require__) { + this._drawImageLabel(ctx); + + this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); + }; - /** - * Created by Alex on 11/11/2014. - */ - var DOMutil = __webpack_require__(6); - var Points = __webpack_require__(48); + Node.prototype._resizeBox = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + this.width = textSize.width + 2 * margin; + this.height = textSize.height + 2 * margin; - function Line(groupId, options) { - this.groupId = groupId; - this.options = options; - } + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; + this.growthIndicator = this.width - (textSize.width + 2 * margin); + // this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; - Line.prototype.getYRange = function(groupData) { - var yMin = groupData[0].y; - var yMax = groupData[0].y; - for (var j = 0; j < groupData.length; j++) { - yMin = yMin > groupData[j].y ? groupData[j].y : yMin; - yMax = yMax < groupData[j].y ? groupData[j].y : yMax; } - return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; }; + Node.prototype._drawBox = function (ctx) { + this._resizeBox(ctx); - /** - * draw a line graph - * - * @param dataset - * @param group - */ - Line.prototype.draw = function (dataset, group, framework) { - if (dataset != null) { - if (dataset.length > 0) { - var path, d; - var svgHeight = Number(framework.svg.style.height.replace('px','')); - path = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); - path.setAttributeNS(null, "class", group.className); - if(group.style !== undefined) { - path.setAttributeNS(null, "style", group.style); - } + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - // construct path from dataset - if (group.options.catmullRom.enabled == true) { - d = Line._catmullRom(dataset, group); - } - else { - d = Line._linear(dataset); - } + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - // append with points for fill and finalize the path - if (group.options.shaded.enabled == true) { - var fillPath = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); - var dFill; - if (group.options.shaded.orientation == 'top') { - dFill = 'M' + dataset[0].x + ',' + 0 + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + 0; - } - else { - dFill = 'M' + dataset[0].x + ',' + svgHeight + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + svgHeight; - } - fillPath.setAttributeNS(null, "class", group.className + " fill"); - if(group.options.shaded.style !== undefined) { - fillPath.setAttributeNS(null, "style", group.options.shaded.style); - } - fillPath.setAttributeNS(null, "d", dFill); - } - // copy properties to path for drawing. - path.setAttributeNS(null, 'd', 'M' + d); + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - // draw points - if (group.options.drawPoints.enabled == true) { - Points.draw(dataset, group, framework); - } - } - } - }; + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + ctx.roundRect(this.left-2*ctx.lineWidth, this.top-2*ctx.lineWidth, this.width+4*ctx.lineWidth, this.height+4*ctx.lineWidth, this.options.radius); + ctx.stroke(); + } + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - /** - * This uses an uniform parametrization of the CatmullRom algorithm: - * 'On the Parameterization of Catmull-Rom Curves' by Cem Yuksel et al. - * @param data - * @returns {string} - * @private - */ - Line._catmullRomUniform = function(data) { - // catmull rom - var p0, p1, p2, p3, bp1, bp2; - var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; - var normalization = 1/6; - var length = data.length; - for (var i = 0; i < length - 1; i++) { + ctx.roundRect(this.left, this.top, this.width, this.height, this.options.radius); + ctx.fill(); + ctx.stroke(); - p0 = (i == 0) ? data[0] : data[i-1]; - p1 = data[i]; - p2 = data[i+1]; - p3 = (i + 2 < length) ? data[i+2] : p2; + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; + this._label(ctx, this.label, this.x, this.y); + }; - // Catmull-Rom to Cubic Bezier conversion matrix - // 0 1 0 0 - // -1/6 1 1/6 0 - // 0 1/6 1 -1/6 - // 0 0 1 0 - // bp0 = { x: p1.x, y: p1.y }; - bp1 = { x: ((-p0.x + 6*p1.x + p2.x) *normalization), y: ((-p0.y + 6*p1.y + p2.y) *normalization)}; - bp2 = { x: (( p1.x + 6*p2.x - p3.x) *normalization), y: (( p1.y + 6*p2.y - p3.y) *normalization)}; - // bp0 = { x: p2.x, y: p2.y }; + Node.prototype._resizeDatabase = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + var size = textSize.width + 2 * margin; + this.width = size; + this.height = size; - d += 'C' + - bp1.x + ',' + - bp1.y + ' ' + - bp2.x + ',' + - bp2.y + ' ' + - p2.x + ',' + - p2.y + ' '; + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - size; } - - return d; }; - /** - * This uses either the chordal or centripetal parameterization of the catmull-rom algorithm. - * By default, the centripetal parameterization is used because this gives the nicest results. - * These parameterizations are relatively heavy because the distance between 4 points have to be calculated. - * - * One optimization can be used to reuse distances since this is a sliding window approach. - * @param data - * @param group - * @returns {string} - * @private - */ - Line._catmullRom = function(data, group) { - var alpha = group.options.catmullRom.alpha; - if (alpha == 0 || alpha === undefined) { - return this._catmullRomUniform(data); - } - else { - var p0, p1, p2, p3, bp1, bp2, d1,d2,d3, A, B, N, M; - var d3powA, d2powA, d3pow2A, d2pow2A, d1pow2A, d1powA; - var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; - var length = data.length; - for (var i = 0; i < length - 1; i++) { + Node.prototype._drawDatabase = function (ctx) { + this._resizeDatabase(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - p0 = (i == 0) ? data[0] : data[i-1]; - p1 = data[i]; - p2 = data[i+1]; - p3 = (i + 2 < length) ? data[i+2] : p2; + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - d1 = Math.sqrt(Math.pow(p0.x - p1.x,2) + Math.pow(p0.y - p1.y,2)); - d2 = Math.sqrt(Math.pow(p1.x - p2.x,2) + Math.pow(p1.y - p2.y,2)); - d3 = Math.sqrt(Math.pow(p2.x - p3.x,2) + Math.pow(p2.y - p3.y,2)); + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - // Catmull-Rom to Cubic Bezier conversion matrix + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - // A = 2d1^2a + 3d1^a * d2^a + d3^2a - // B = 2d3^2a + 3d3^a * d2^a + d2^2a + ctx.database(this.x - this.width/2 - 2*ctx.lineWidth, this.y - this.height*0.5 - 2*ctx.lineWidth, this.width + 4*ctx.lineWidth, this.height + 4*ctx.lineWidth); + ctx.stroke(); + } + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - // [ 0 1 0 0 ] - // [ -d2^2a /N A/N d1^2a /N 0 ] - // [ 0 d3^2a /M B/M -d2^2a /M ] - // [ 0 0 1 0 ] + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; + ctx.database(this.x - this.width/2, this.y - this.height*0.5, this.width, this.height); + ctx.fill(); + ctx.stroke(); - d3powA = Math.pow(d3, alpha); - d3pow2A = Math.pow(d3,2*alpha); - d2powA = Math.pow(d2, alpha); - d2pow2A = Math.pow(d2,2*alpha); - d1powA = Math.pow(d1, alpha); - d1pow2A = Math.pow(d1,2*alpha); + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; - A = 2*d1pow2A + 3*d1powA * d2powA + d2pow2A; - B = 2*d3pow2A + 3*d3powA * d2powA + d2pow2A; - N = 3*d1powA * (d1powA + d2powA); - if (N > 0) {N = 1 / N;} - M = 3*d3powA * (d3powA + d2powA); - if (M > 0) {M = 1 / M;} + this._label(ctx, this.label, this.x, this.y); + }; - bp1 = { x: ((-d2pow2A * p0.x + A*p1.x + d1pow2A * p2.x) * N), - y: ((-d2pow2A * p0.y + A*p1.y + d1pow2A * p2.y) * N)}; - bp2 = { x: (( d3pow2A * p1.x + B*p2.x - d2pow2A * p3.x) * M), - y: (( d3pow2A * p1.y + B*p2.y - d2pow2A * p3.y) * M)}; + Node.prototype._resizeCircle = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + var diameter = Math.max(textSize.width, textSize.height) + 2 * margin; + this.options.radius = diameter / 2; - if (bp1.x == 0 && bp1.y == 0) {bp1 = p1;} - if (bp2.x == 0 && bp2.y == 0) {bp2 = p2;} - d += 'C' + - bp1.x + ',' + - bp1.y + ' ' + - bp2.x + ',' + - bp2.y + ' ' + - p2.x + ',' + - p2.y + ' '; - } + this.width = diameter; + this.height = diameter; - return d; + // scaling used for clustering + // this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; + // this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; + this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; + this.growthIndicator = this.options.radius- 0.5*diameter; } }; - /** - * this generates the SVG path for a linear drawing between datapoints. - * @param data - * @returns {string} - * @private - */ - Line._linear = function(data) { - // linear - var d = ''; - for (var i = 0; i < data.length; i++) { - if (i == 0) { - d += data[i].x + ',' + data[i].y; - } - else { - d += ' ' + data[i].x + ',' + data[i].y; - } + Node.prototype._drawRawCircle = function (ctx, x, y, radius) { + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; + + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + + ctx.circle(x, y, radius+2*ctx.lineWidth); + ctx.stroke(); } - return d; + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; + ctx.circle(this.x, this.y, radius); + ctx.fill(); + ctx.stroke(); }; - module.exports = Line; + Node.prototype._drawCircle = function (ctx) { + this._resizeCircle(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; + this._drawRawCircle(ctx, this.x, this.y, this.options.radius); -/***/ }, -/* 48 */ -/***/ function(module, exports, __webpack_require__) { + this.boundingBox.top = this.y - this.options.radius; + this.boundingBox.left = this.x - this.options.radius; + this.boundingBox.right = this.x + this.options.radius; + this.boundingBox.bottom = this.y + this.options.radius; - /** - * Created by Alex on 11/11/2014. - */ - var DOMutil = __webpack_require__(6); + this._label(ctx, this.label, this.x, this.y); + }; - function Points(groupId, options) { - this.groupId = groupId; - this.options = options; - } + Node.prototype._resizeEllipse = function (ctx) { + if (!this.width) { + var textSize = this.getTextSize(ctx); + this.width = textSize.width * 1.5; + this.height = textSize.height * 2; + if (this.width < this.height) { + this.width = this.height; + } + var defaultSize = this.width; - Points.prototype.getYRange = function(groupData) { - var yMin = groupData[0].y; - var yMax = groupData[0].y; - for (var j = 0; j < groupData.length; j++) { - yMin = yMin > groupData[j].y ? groupData[j].y : yMin; - yMax = yMax < groupData[j].y ? groupData[j].y : yMax; + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - defaultSize; } - return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; }; - Points.prototype.draw = function(dataset, group, framework, offset) { - Points.draw(dataset, group, framework, offset); - } + Node.prototype._drawEllipse = function (ctx) { + this._resizeEllipse(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - /** - * draw the data points - * - * @param {Array} dataset - * @param {Object} JSONcontainer - * @param {Object} svg | SVG DOM element - * @param {GraphGroup} group - * @param {Number} [offset] - */ - Points.draw = function (dataset, group, framework, offset) { - if (offset === undefined) {offset = 0;} - for (var i = 0; i < dataset.length; i++) { - DOMutil.drawPoint(dataset[i].x + offset, dataset[i].y, group, framework.svgElements, framework.svg, dataset[i].label); - } - }; - - - module.exports = Points; - -/***/ }, -/* 49 */ -/***/ function(module, exports, __webpack_require__) { + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - /** - * Created by Alex on 11/11/2014. - */ - var DOMutil = __webpack_require__(6); - var Points = __webpack_require__(48); + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - function Bargraph(groupId, options) { - this.groupId = groupId; - this.options = options; - } + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - Bargraph.prototype.getYRange = function(groupData) { - if (this.options.barChart.handleOverlap != 'stack') { - var yMin = groupData[0].y; - var yMax = groupData[0].y; - for (var j = 0; j < groupData.length; j++) { - yMin = yMin > groupData[j].y ? groupData[j].y : yMin; - yMax = yMax < groupData[j].y ? groupData[j].y : yMax; - } - return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; - } - else { - var barCombinedData = []; - for (var j = 0; j < groupData.length; j++) { - barCombinedData.push({ - x: groupData[j].x, - y: groupData[j].y, - groupId: this.groupId - }); - } - return barCombinedData; + ctx.ellipse(this.left-2*ctx.lineWidth, this.top-2*ctx.lineWidth, this.width+4*ctx.lineWidth, this.height+4*ctx.lineWidth); + ctx.stroke(); } - }; - + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - /** - * draw a bar graph - * - * @param groupIds - * @param processedGroupData - */ - Bargraph.draw = function (groupIds, processedGroupData, framework) { - var combinedData = []; - var intersections = {}; - var coreDistance; - var key, drawData; - var group; - var i,j; - var barPoints = 0; + ctx.ellipse(this.left, this.top, this.width, this.height); + ctx.fill(); + ctx.stroke(); - // combine all barchart data - for (i = 0; i < groupIds.length; i++) { - group = framework.groups[groupIds[i]]; - if (group.options.style == 'bar') { - if (group.visible == true && (framework.options.groups.visibility[groupIds[i]] === undefined || framework.options.groups.visibility[groupIds[i]] == true)) { - for (j = 0; j < processedGroupData[groupIds[i]].length; j++) { - combinedData.push({ - x: processedGroupData[groupIds[i]][j].x, - y: processedGroupData[groupIds[i]][j].y, - groupId: groupIds[i] - }); - barPoints += 1; - } - } - } - } + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; - if (barPoints == 0) {return;} + this._label(ctx, this.label, this.x, this.y); + }; - // sort by time and by group - combinedData.sort(function (a, b) { - if (a.x == b.x) { - return a.groupId - b.groupId; - } else { - return a.x - b.x; - } - }); + Node.prototype._drawDot = function (ctx) { + this._drawShape(ctx, 'circle'); + }; - // get intersections - Bargraph._getDataIntersections(intersections, combinedData); + Node.prototype._drawTriangle = function (ctx) { + this._drawShape(ctx, 'triangle'); + }; - // plot barchart - for (i = 0; i < combinedData.length; i++) { - group = framework.groups[combinedData[i].groupId]; - var minWidth = 0.1 * group.options.barChart.width; + Node.prototype._drawTriangleDown = function (ctx) { + this._drawShape(ctx, 'triangleDown'); + }; - key = combinedData[i].x; - var heightOffset = 0; - if (intersections[key] === undefined) { - if (i+1 < combinedData.length) {coreDistance = Math.abs(combinedData[i+1].x - key);} - if (i > 0) {coreDistance = Math.min(coreDistance,Math.abs(combinedData[i-1].x - key));} - drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth); - } - else { - var nextKey = i + (intersections[key].amount - intersections[key].resolved); - var prevKey = i - (intersections[key].resolved + 1); - if (nextKey < combinedData.length) {coreDistance = Math.abs(combinedData[nextKey].x - key);} - if (prevKey > 0) {coreDistance = Math.min(coreDistance,Math.abs(combinedData[prevKey].x - key));} - drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth); - intersections[key].resolved += 1; + Node.prototype._drawSquare = function (ctx) { + this._drawShape(ctx, 'square'); + }; - if (group.options.barChart.handleOverlap == 'stack') { - heightOffset = intersections[key].accumulated; - intersections[key].accumulated += group.zeroPosition - combinedData[i].y; - } - else if (group.options.barChart.handleOverlap == 'sideBySide') { - drawData.width = drawData.width / intersections[key].amount; - drawData.offset += (intersections[key].resolved) * drawData.width - (0.5*drawData.width * (intersections[key].amount+1)); - if (group.options.barChart.align == 'left') {drawData.offset -= 0.5*drawData.width;} - else if (group.options.barChart.align == 'right') {drawData.offset += 0.5*drawData.width;} - } - } - DOMutil.drawBar(combinedData[i].x + drawData.offset, combinedData[i].y - heightOffset, drawData.width, group.zeroPosition - combinedData[i].y, group.className + ' bar', framework.svgElements, framework.svg); - // draw points - if (group.options.drawPoints.enabled == true) { - DOMutil.drawPoint(combinedData[i].x + drawData.offset, combinedData[i].y, group, framework.svgElements, framework.svg); - } - } + Node.prototype._drawStar = function (ctx) { + this._drawShape(ctx, 'star'); }; + Node.prototype._resizeShape = function (ctx) { + if (!this.width) { + this.options.radius= this.baseRadiusValue; + var size = 2 * this.options.radius; + this.width = size; + this.height = size; - /** - * Fill the intersections object with counters of how many datapoints share the same x coordinates - * @param intersections - * @param combinedData - * @private - */ - Bargraph._getDataIntersections = function (intersections, combinedData) { - // get intersections - var coreDistance; - for (var i = 0; i < combinedData.length; i++) { - if (i + 1 < combinedData.length) { - coreDistance = Math.abs(combinedData[i + 1].x - combinedData[i].x); - } - if (i > 0) { - coreDistance = Math.min(coreDistance, Math.abs(combinedData[i - 1].x - combinedData[i].x)); - } - if (coreDistance == 0) { - if (intersections[combinedData[i].x] === undefined) { - intersections[combinedData[i].x] = {amount: 0, resolved: 0, accumulated: 0}; - } - intersections[combinedData[i].x].amount += 1; - } + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - size; } }; + Node.prototype._drawShape = function (ctx, shape) { + this._resizeShape(ctx); - /** - * Get the width and offset for bargraphs based on the coredistance between datapoints - * - * @param coreDistance - * @param group - * @param minWidth - * @returns {{width: Number, offset: Number}} - * @private - */ - Bargraph._getSafeDrawData = function (coreDistance, group, minWidth) { - var width, offset; - if (coreDistance < group.options.barChart.width && coreDistance > 0) { - width = coreDistance < minWidth ? minWidth : coreDistance; + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - offset = 0; // recalculate offset with the new width; - if (group.options.barChart.align == 'left') { - offset -= 0.5 * coreDistance; - } - else if (group.options.barChart.align == 'right') { - offset += 0.5 * coreDistance; - } + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + var radiusMultiplier = 2; + + // choose draw method depending on the shape + switch (shape) { + case 'dot': radiusMultiplier = 2; break; + case 'square': radiusMultiplier = 2; break; + case 'triangle': radiusMultiplier = 3; break; + case 'triangleDown': radiusMultiplier = 3; break; + case 'star': radiusMultiplier = 4; break; } - else { - // default settings - width = group.options.barChart.width; - offset = 0; - if (group.options.barChart.align == 'left') { - offset -= 0.5 * group.options.barChart.width; - } - else if (group.options.barChart.align == 'right') { - offset += 0.5 * group.options.barChart.width; - } + + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + + ctx[shape](this.x, this.y, this.options.radius+ radiusMultiplier * ctx.lineWidth); + ctx.stroke(); } + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - return {width: width, offset: offset}; - }; + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; + ctx[shape](this.x, this.y, this.options.radius); + ctx.fill(); + ctx.stroke(); - Bargraph.getStackedBarYRange = function(barCombinedData, groupRanges, groupIds, groupLabel, orientation) { - if (barCombinedData.length > 0) { - // sort by time and by group - barCombinedData.sort(function (a, b) { - if (a.x == b.x) { - return a.groupId - b.groupId; - } else { - return a.x - b.x; - } - }); - var intersections = {}; + this.boundingBox.top = this.y - this.options.radius; + this.boundingBox.left = this.x - this.options.radius; + this.boundingBox.right = this.x + this.options.radius; + this.boundingBox.bottom = this.y + this.options.radius; - Bargraph._getDataIntersections(intersections, barCombinedData); - groupRanges[groupLabel] = Bargraph._getStackedBarYRange(intersections, barCombinedData); - groupRanges[groupLabel].yAxisOrientation = orientation; - groupIds.push(groupLabel); + if (this.label) { + this._label(ctx, this.label, this.x, this.y + this.height / 2, undefined, 'hanging',true); + this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); } - } + }; - Bargraph._getStackedBarYRange = function (intersections, combinedData) { - var key; - var yMin = combinedData[0].y; - var yMax = combinedData[0].y; - for (var i = 0; i < combinedData.length; i++) { - key = combinedData[i].x; - if (intersections[key] === undefined) { - yMin = yMin > combinedData[i].y ? combinedData[i].y : yMin; - yMax = yMax < combinedData[i].y ? combinedData[i].y : yMax; - } - else { - intersections[key].accumulated += combinedData[i].y; - } - } - for (var xpos in intersections) { - if (intersections.hasOwnProperty(xpos)) { - yMin = yMin > intersections[xpos].accumulated ? intersections[xpos].accumulated : yMin; - yMax = yMax < intersections[xpos].accumulated ? intersections[xpos].accumulated : yMax; - } - } + Node.prototype._resizeText = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + this.width = textSize.width + 2 * margin; + this.height = textSize.height + 2 * margin; - return {min: yMin, max: yMax}; + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - (textSize.width + 2 * margin); + } }; - module.exports = Bargraph; + Node.prototype._drawText = function (ctx) { + this._resizeText(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; -/***/ }, -/* 50 */ -/***/ function(module, exports, __webpack_require__) { + this._label(ctx, this.label, this.x, this.y); - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(6); - var Component = __webpack_require__(23); + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; + }; - /** - * Legend for Graph2d - */ - function Legend(body, options, side, linegraphOptions) { - this.body = body; - this.defaultOptions = { - enabled: true, - icons: true, - iconSize: 20, - iconSpacing: 6, - left: { - visible: true, - position: 'top-left' // top/bottom - left,center,right - }, - right: { - visible: true, - position: 'top-left' // top/bottom - left,center,right - } - } - this.side = side; - this.options = util.extend({},this.defaultOptions); - this.linegraphOptions = linegraphOptions; + Node.prototype._resizeIcon = function (ctx) { + if (!this.width) { + var margin = 5; + var iconSize = + { + width: Number(this.options.iconSize), + height: Number(this.options.iconSize) + }; + this.width = iconSize.width + 2 * margin; + this.height = iconSize.height + 2 * margin; - this.svgElements = {}; - this.dom = {}; - this.groups = {}; - this.amountOfGroups = 0; - this._create(); + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - (iconSize.width + 2 * margin); + } + }; - this.setOptions(options); - } + Node.prototype._drawIcon = function (ctx) { + this._resizeIcon(ctx); - Legend.prototype = new Component(); + this.options.iconSize = this.options.iconSize || 50; - Legend.prototype.clear = function() { - this.groups = {}; - this.amountOfGroups = 0; - } + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; + this._icon(ctx); - Legend.prototype.addGroup = function(label, graphOptions) { - if (!this.groups.hasOwnProperty(label)) { - this.groups[label] = graphOptions; - } - this.amountOfGroups += 1; - }; + this.boundingBox.top = this.y - this.options.iconSize/2; + this.boundingBox.left = this.x - this.options.iconSize/2; + this.boundingBox.right = this.x + this.options.iconSize/2; + this.boundingBox.bottom = this.y + this.options.iconSize/2; - Legend.prototype.updateGroup = function(label, graphOptions) { - this.groups[label] = graphOptions; - }; + if (this.label) { + var iconTextSpacing = 5; + this._label(ctx, this.label, this.x, this.y + this.height / 2 + iconTextSpacing, 'top', true); - Legend.prototype.removeGroup = function(label) { - if (this.groups.hasOwnProperty(label)) { - delete this.groups[label]; - this.amountOfGroups -= 1; + this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); } }; - Legend.prototype._create = function() { - this.dom.frame = document.createElement('div'); - this.dom.frame.className = 'legend'; - this.dom.frame.style.position = "absolute"; - this.dom.frame.style.top = "10px"; - this.dom.frame.style.display = "block"; - - this.dom.textArea = document.createElement('div'); - this.dom.textArea.className = 'legendText'; - this.dom.textArea.style.position = "relative"; - this.dom.textArea.style.top = "0px"; + Node.prototype._icon = function (ctx) { + var relativeIconSize = Number(this.options.iconSize) * this.networkScale; + + if (this.options.icon && relativeIconSize > this.options.fontDrawThreshold - 1) { - this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); - this.svg.style.position = 'absolute'; - this.svg.style.top = 0 +'px'; - this.svg.style.width = this.options.iconSize + 5 + 'px'; - this.svg.style.height = '100%'; + var iconSize = Number(this.options.iconSize); - this.dom.frame.appendChild(this.svg); - this.dom.frame.appendChild(this.dom.textArea); - }; + ctx.font = (this.selected ? "bold " : "") + iconSize + "px " + this.options.iconFontFace; - /** - * Hide the component from the DOM - */ - Legend.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); + // draw icon + ctx.fillStyle = this.options.iconColor || "black"; + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + ctx.fillText(this.options.icon, this.x, this.y); } }; + + Node.prototype._label = function (ctx, text, x, y, align, baseline, labelUnderNode) { + var relativeFontSize = Number(this.options.fontSize) * this.networkScale; + if (text && relativeFontSize >= this.options.fontDrawThreshold - 1) { + var fontSize = Number(this.options.fontSize); - /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed - */ - Legend.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); - } - }; + // this ensures that there will not be HUGE letters on screen by setting an upper limit on the visible text size (regardless of zoomLevel) + if (relativeFontSize >= this.options.fontSizeMaxVisible) { + fontSize = Number(this.options.fontSizeMaxVisible) * this.networkScaleInv; + } - Legend.prototype.setOptions = function(options) { - var fields = ['enabled','orientation','icons','left','right']; - util.selectiveDeepExtend(fields, this.options, options); - }; + // fade in when relative scale is between threshold and threshold - 1 + var fontColor = this.options.fontColor || "#000000"; + var strokecolor = this.options.fontStrokeColor; + if (relativeFontSize <= this.options.fontDrawThreshold) { + var opacity = Math.max(0,Math.min(1,1 - (this.options.fontDrawThreshold - relativeFontSize))); + fontColor = util.overrideOpacity(fontColor, opacity); + strokecolor = util.overrideOpacity(strokecolor, opacity); - Legend.prototype.redraw = function() { - var activeGroups = 0; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - activeGroups++; - } } - } - if (this.options[this.side].visible == false || this.amountOfGroups == 0 || this.options.enabled == false || activeGroups == 0) { - this.hide(); - } - else { - this.show(); - if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'bottom-left') { - this.dom.frame.style.left = '4px'; - this.dom.frame.style.textAlign = "left"; - this.dom.textArea.style.textAlign = "left"; - this.dom.textArea.style.left = (this.options.iconSize + 15) + 'px'; - this.dom.textArea.style.right = ''; - this.svg.style.left = 0 +'px'; - this.svg.style.right = ''; - } - else { - this.dom.frame.style.right = '4px'; - this.dom.frame.style.textAlign = "right"; - this.dom.textArea.style.textAlign = "right"; - this.dom.textArea.style.right = (this.options.iconSize + 15) + 'px'; - this.dom.textArea.style.left = ''; - this.svg.style.right = 0 +'px'; - this.svg.style.left = ''; + ctx.font = (this.selected ? "bold " : "") + fontSize + "px " + this.options.fontFace; + + var lines = text.split('\n'); + var lineCount = lines.length; + var yLine = y + (1 - lineCount) / 2 * fontSize; + if (labelUnderNode == true) { + yLine = y + (1 - lineCount) / (2 * fontSize); } - if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'top-right') { - this.dom.frame.style.top = 4 - Number(this.body.dom.center.style.top.replace("px","")) + 'px'; - this.dom.frame.style.bottom = ''; + // font fill from edges now for nodes! + var width = ctx.measureText(lines[0]).width; + for (var i = 1; i < lineCount; i++) { + var lineWidth = ctx.measureText(lines[i]).width; + width = lineWidth > width ? lineWidth : width; } - else { - var scrollableHeight = this.body.domProps.center.height - this.body.domProps.centerContainer.height; - this.dom.frame.style.bottom = 4 + scrollableHeight + Number(this.body.dom.center.style.top.replace("px","")) + 'px'; - this.dom.frame.style.top = ''; + var height = fontSize * lineCount; + var left = x - width / 2; + var top = y - height / 2; + if (baseline == "hanging") { + top += 0.5 * fontSize; + top += 4; // distance from node, required because we use hanging. Hanging has less difference between browsers + yLine += 4; // distance from node } + this.labelDimensions = {top:top,left:left,width:width,height:height,yLine:yLine}; - if (this.options.icons == false) { - this.dom.frame.style.width = this.dom.textArea.offsetWidth + 10 + 'px'; - this.dom.textArea.style.right = ''; - this.dom.textArea.style.left = ''; - this.svg.style.width = '0px'; - } - else { - this.dom.frame.style.width = this.options.iconSize + 15 + this.dom.textArea.offsetWidth + 10 + 'px' - this.drawLegendIcons(); + // create the fontfill background + if (this.options.fontFill !== undefined && this.options.fontFill !== null && this.options.fontFill !== "none") { + ctx.fillStyle = this.options.fontFill; + ctx.fillRect(left, top, width, height); } - var content = ''; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - content += this.groups[groupId].content + '
'; - } + // draw text + ctx.fillStyle = fontColor; + ctx.textAlign = align || "center"; + ctx.textBaseline = baseline || "middle"; + if (this.options.fontStrokeWidth > 0){ + ctx.lineWidth = this.options.fontStrokeWidth; + ctx.strokeStyle = strokecolor; + ctx.lineJoin = 'round'; + } + for (var i = 0; i < lineCount; i++) { + if(this.options.fontStrokeWidth){ + ctx.strokeText(lines[i], x, yLine); } + ctx.fillText(lines[i], x, yLine); + yLine += fontSize; } - this.dom.textArea.innerHTML = content; - this.dom.textArea.style.lineHeight = ((0.75 * this.options.iconSize) + this.options.iconSpacing) + 'px'; } }; - Legend.prototype.drawLegendIcons = function() { - if (this.dom.frame.parentNode) { - DOMutil.prepareElements(this.svgElements); - var padding = window.getComputedStyle(this.dom.frame).paddingTop; - var iconOffset = Number(padding.replace('px','')); - var x = iconOffset; - var iconWidth = this.options.iconSize; - var iconHeight = 0.75 * this.options.iconSize; - var y = iconOffset + 0.5 * iconHeight + 3; - this.svg.style.width = iconWidth + 5 + iconOffset + 'px'; + Node.prototype.getTextSize = function(ctx) { + if (this.label !== undefined) { + var fontSize = Number(this.options.fontSize); + if (fontSize * this.networkScale > this.options.fontSizeMaxVisible) { + fontSize = Number(this.options.fontSizeMaxVisible) * this.networkScaleInv; + } + ctx.font = (this.selected ? "bold " : "") + fontSize + "px " + this.options.fontFace; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); - y += iconHeight + this.options.iconSpacing; - } - } + var lines = this.label.split('\n'), + height = (fontSize + 4) * lines.length, + width = 0; + + for (var i = 0, iMax = lines.length; i < iMax; i++) { + width = Math.max(width, ctx.measureText(lines[i]).width); } - DOMutil.cleanupElements(this.svgElements); + return {"width": width, "height": height, lineCount: lines.length}; + } + else { + return {"width": 0, "height": 0, lineCount: 0}; } }; - module.exports = Legend; - + /** + * this is used to determine if a node is visible at all. this is used to determine when it needs to be drawn. + * there is a safety margin of 0.3 * width; + * + * @returns {boolean} + */ + Node.prototype.inArea = function() { + if (this.width !== undefined) { + return (this.x + this.width *this.networkScaleInv >= this.canvasTopLeft.x && + this.x - this.width *this.networkScaleInv < this.canvasBottomRight.x && + this.y + this.height*this.networkScaleInv >= this.canvasTopLeft.y && + this.y - this.height*this.networkScaleInv < this.canvasBottomRight.y); + } + else { + return true; + } + }; -/***/ }, -/* 51 */ -/***/ function(module, exports, __webpack_require__) { + /** + * checks if the core of the node is in the display area, this is used for opening clusters around zoom + * @returns {boolean} + */ + Node.prototype.inView = function() { + return (this.x >= this.canvasTopLeft.x && + this.x < this.canvasBottomRight.x && + this.y >= this.canvasTopLeft.y && + this.y < this.canvasBottomRight.y); + }; - var Emitter = __webpack_require__(11); - var Hammer = __webpack_require__(19); - var keycharm = __webpack_require__(37); - var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(22); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(9); - var dotparser = __webpack_require__(52); - var gephiParser = __webpack_require__(53); - var Groups = __webpack_require__(54); - var Images = __webpack_require__(55); - var Node = __webpack_require__(56); - var Edge = __webpack_require__(57); - var Popup = __webpack_require__(58); - var MixinLoader = __webpack_require__(59); - var Activator = __webpack_require__(36); - var locales = __webpack_require__(70); + /** + * This allows the zoom level of the network to influence the rendering + * We store the inverted scale and the coordinates of the top left, and bottom right points of the canvas + * + * @param scale + * @param canvasTopLeft + * @param canvasBottomRight + */ + Node.prototype.setScaleAndPos = function(scale,canvasTopLeft,canvasBottomRight) { + this.networkScaleInv = 1.0/scale; + this.networkScale = scale; + this.canvasTopLeft = canvasTopLeft; + this.canvasBottomRight = canvasBottomRight; + }; - // Load custom shapes into CanvasRenderingContext2D - __webpack_require__(71); /** - * @constructor Network - * Create a network visualization, displaying nodes and edges. + * This allows the zoom level of the network to influence the rendering * - * @param {Element} container The DOM element in which the Network will - * be created. Normally a div element. - * @param {Object} data An object containing parameters - * {Array} nodes - * {Array} edges - * @param {Object} options Options + * @param scale */ - function Network (container, data, options) { - if (!(this instanceof Network)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } + Node.prototype.setScale = function(scale) { + this.networkScaleInv = 1.0/scale; + this.networkScale = scale; + }; - this._determineBrowserMethod(); - this._initializeMixinLoaders(); - // create variables and set default values - this.containerElement = container; - // render and calculation settings - this.renderRefreshRate = 60; // hz (fps) - this.renderTimestep = 1000 / this.renderRefreshRate; // ms -- saves calculation later on - this.renderTime = 0; // measured time it takes to render a frame - this.physicsTime = 0; // measured time it takes to render a frame - this.runDoubleSpeed = false; - this.physicsDiscreteStepsize = 0.50; // discrete stepsize of the simulation + /** + * set the velocity at 0. Is called when this node is contained in another during clustering + */ + Node.prototype.clearVelocity = function() { + this.vx = 0; + this.vy = 0; + }; - this.initializing = true; - this.triggerFunctions = {add:null,edit:null,editEdge:null,connect:null,del:null}; + /** + * Basic preservation of (kinectic) energy + * + * @param massBeforeClustering + */ + Node.prototype.updateVelocity = function(massBeforeClustering) { + var energyBefore = this.vx * this.vx * massBeforeClustering; + //this.vx = (this.vx < 0) ? -Math.sqrt(energyBefore/this.options.mass) : Math.sqrt(energyBefore/this.options.mass); + this.vx = Math.sqrt(energyBefore/this.options.mass); + energyBefore = this.vy * this.vy * massBeforeClustering; + //this.vy = (this.vy < 0) ? -Math.sqrt(energyBefore/this.options.mass) : Math.sqrt(energyBefore/this.options.mass); + this.vy = Math.sqrt(energyBefore/this.options.mass); + }; - var customScalingFunction = function (min,max,total,value) { - if (max == min) { - return 0.5; - } - else { - var scale = 1 / (max - min); - return Math.max(0,(value - min)*scale); - } - }; - // set constant values - this.defaultOptions = { - nodes: { - customScalingFunction: customScalingFunction, - mass: 1, - radiusMin: 10, - radiusMax: 30, - radius: 10, - shape: 'ellipse', - image: undefined, - widthMin: 16, // px - widthMax: 64, // px - fontColor: 'black', - fontSize: 14, // px - fontFace: 'verdana', - fontFill: undefined, - fontStrokeWidth: 0, // px - fontStrokeColor: '#ffffff', - fontDrawThreshold: 3, - scaleFontWithValue: false, - fontSizeMin: 14, - fontSizeMax: 30, - fontSizeMaxVisible: 30, - level: -1, - color: { - border: '#2B7CE9', - background: '#97C2FC', - highlight: { - border: '#2B7CE9', - background: '#D2E5FF' - }, - hover: { - border: '#2B7CE9', - background: '#D2E5FF' - } - }, - group: undefined, - borderWidth: 1, - borderWidthSelected: undefined - }, - edges: { - customScalingFunction: customScalingFunction, - widthMin: 1, // - widthMax: 15,// - width: 1, - widthSelectionMultiplier: 2, - hoverWidth: 1.5, - style: 'line', - color: { - color:'#848484', - highlight:'#848484', - hover: '#848484' - }, - opacity:1.0, - fontColor: '#343434', - fontSize: 14, // px - fontFace: 'arial', - fontFill: 'white', - fontStrokeWidth: 0, // px - fontStrokeColor: 'white', - labelAlignment:'horizontal', - arrowScaleFactor: 1, - dash: { - length: 10, - gap: 5, - altLength: undefined - }, - inheritColor: "from", // to, from, false, true (== from) - useGradients: false // release in 4.0 - }, - configurePhysics:false, - physics: { - barnesHut: { - enabled: true, - thetaInverted: 1 / 0.5, // inverted to save time during calculation - gravitationalConstant: -2000, - centralGravity: 0.3, - springLength: 95, - springConstant: 0.04, - damping: 0.09 - }, - repulsion: { - centralGravity: 0.0, - springLength: 200, - springConstant: 0.05, - nodeDistance: 100, - damping: 0.09 - }, - hierarchicalRepulsion: { - enabled: false, - centralGravity: 0.0, - springLength: 100, - springConstant: 0.01, - nodeDistance: 150, - damping: 0.09 - }, - damping: null, - centralGravity: null, - springLength: null, - springConstant: null - }, - clustering: { // Per Node in Cluster = PNiC - enabled: false, // (Boolean) | global on/off switch for clustering. - initialMaxNodes: 100, // (# nodes) | if the initial amount of nodes is larger than this, we cluster until the total number is less than this threshold. - clusterThreshold:500, // (# nodes) | during calculate forces, we check if the total number of nodes is larger than this. If it is, cluster until reduced to reduceToNodes - reduceToNodes:300, // (# nodes) | during calculate forces, we check if the total number of nodes is larger than clusterThreshold. If it is, cluster until reduced to this - chainThreshold: 0.4, // (% of all drawn nodes)| maximum percentage of allowed chainnodes (long strings of connected nodes) within all nodes. (lower means less chains). - clusterEdgeThreshold: 20, // (px) | edge length threshold. if smaller, this node is clustered. - sectorThreshold: 100, // (# nodes in cluster) | cluster size threshold. If larger, expanding in own sector. - screenSizeThreshold: 0.2, // (% of canvas) | relative size threshold. If the width or height of a clusternode takes up this much of the screen, decluster node. - fontSizeMultiplier: 4.0, // (px PNiC) | how much the cluster font size grows per node in cluster (in px). - maxFontSize: 1000, - forceAmplification: 0.1, // (multiplier PNiC) | factor of increase fo the repulsion force of a cluster (per node in cluster). - distanceAmplification: 0.1, // (multiplier PNiC) | factor how much the repulsion distance of a cluster increases (per node in cluster). - edgeGrowth: 20, // (px PNiC) | amount of clusterSize connected to the edge is multiplied with this and added to edgeLength. - nodeScaling: {width: 1, // (px PNiC) | growth of the width per node in cluster. - height: 1, // (px PNiC) | growth of the height per node in cluster. - radius: 1}, // (px PNiC) | growth of the radius per node in cluster. - maxNodeSizeIncrements: 600, // (# increments) | max growth of the width per node in cluster. - activeAreaBoxSize: 80, // (px) | box area around the curser where clusters are popped open. - clusterLevelDifference: 2, // used for normalization of the cluster levels - clusterByZoom: true // enable clustering through zooming in and out - }, - navigation: { - enabled: false - }, - keyboard: { - enabled: false, - speed: {x: 10, y: 10, zoom: 0.02}, - bindToWindow: true - }, - dataManipulation: { - enabled: false, - initiallyVisible: false - }, - hierarchicalLayout: { - enabled:false, - levelSeparation: 150, - nodeSpacing: 100, - direction: "UD", // UD, DU, LR, RL - layout: "hubsize" // hubsize, directed - }, - freezeForStabilization: false, - smoothCurves: { - enabled: true, - dynamic: true, - type: "continuous", - roundness: 0.5 - }, - maxVelocity: 50, - minVelocity: 0.1, // px/s - stabilize: true, // stabilize before displaying the network - stabilizationIterations: 1000, // maximum number of iteration to stabilize - zoomExtentOnStabilize: true, - locale: 'en', - locales: locales, - tooltip: { - delay: 300, - fontColor: 'black', - fontSize: 14, // px - fontFace: 'verdana', - color: { - border: '#666', - background: '#FFFFC6' - } - }, - dragNetwork: true, - dragNodes: true, - zoomable: true, - hover: false, - hideEdgesOnDrag: false, - hideNodesOnDrag: false, - width : '100%', - height : '100%', - selectable: true, - useDefaultGroups: true - }; - this.constants = util.extend({}, this.defaultOptions); - this.pixelRatio = 1; - - - this.hoverObj = {nodes:{},edges:{}}; - this.controlNodesActive = false; - this.navigationHammers = []; - this.manipulationHammers = []; + module.exports = Node; - // animation properties - this.animationSpeed = 1/this.renderRefreshRate; - this.animationEasingFunction = "easeInOutQuint"; - this.animating = false; - this.easingTime = 0; - this.sourceScale = 0; - this.targetScale = 0; - this.sourceTranslation = 0; - this.targetTranslation = 0; - this.lockedOnNodeId = null; - this.lockedOnNodeOffset = null; - this.touchTime = 0; - this.redrawRequested = false; - // Node variables - var network = this; - this.groups = new Groups(); // object with groups - this.images = new Images(); // object with images - this.images.setOnloadCallback(function (status) { - network._requestRedraw(); - }); +/***/ }, +/* 41 */ +/***/ function(module, exports, __webpack_require__) { - // keyboard navigation variables - this.xIncrement = 0; - this.yIncrement = 0; - this.zoomIncrement = 0; + /** + * Popup is a class to create a popup window with some text + * @param {Element} container The container object. + * @param {Number} [x] + * @param {Number} [y] + * @param {String} [text] + * @param {Object} [style] An object containing borderColor, + * backgroundColor, etc. + */ + function Popup(container, x, y, text, style) { + if (container) { + this.container = container; + } + else { + this.container = document.body; + } - // loading all the mixins: - // load the force calculation functions, grouped under the physics system. - this._loadPhysicsSystem(); - // create a frame and canvas - this._create(); - // load the sector system. (mandatory, fully integrated with Network) - this._loadSectorSystem(); - // load the cluster system. (mandatory, even when not using the cluster system, there are function calls to it) - this._loadClusterSystem(); - // load the selection system. (mandatory, required by Network) - this._loadSelectionSystem(); - // load the selection system. (mandatory, required by Network) - this._loadHierarchySystem(); + // x, y and text are optional, see if a style object was passed in their place + if (style === undefined) { + if (typeof x === "object") { + style = x; + x = undefined; + } else if (typeof text === "object") { + style = text; + text = undefined; + } else { + // for backwards compatibility, in case clients other than Network are creating Popup directly + style = { + fontColor: 'black', + fontSize: 14, // px + fontFace: 'verdana', + color: { + border: '#666', + background: '#FFFFC6' + } + } + } + } + this.x = 0; + this.y = 0; + this.padding = 5; + this.hidden = false; - // apply options - this._setTranslation(this.frame.clientWidth / 2, this.frame.clientHeight / 2); - this._setScale(1); - this.setOptions(options); + if (x !== undefined && y !== undefined) { + this.setPosition(x, y); + } + if (text !== undefined) { + this.setText(text); + } - // other vars - this.freezeSimulationEnabled = false;// freeze the simulation - this.cachedFunctions = {}; - this.startedStabilization = false; - this.stabilized = false; - this.stabilizationIterations = null; - this.draggingNodes = false; + // create the frame + this.frame = document.createElement('div'); + this.frame.className = 'network-tooltip'; + this.frame.style.color = style.fontColor; + this.frame.style.backgroundColor = style.color.background; + this.frame.style.borderColor = style.color.border; + this.frame.style.fontSize = style.fontSize + 'px'; + this.frame.style.fontFamily = style.fontFace; + this.container.appendChild(this.frame); + } - // containers for nodes and edges - this.calculationNodes = {}; - this.calculationNodeIndices = []; - this.nodeIndices = []; // array with all the indices of the nodes. Used to speed up forces calculation - this.nodes = {}; // object with Node objects - this.edges = {}; // object with Edge objects + /** + * @param {number} x Horizontal position of the popup window + * @param {number} y Vertical position of the popup window + */ + Popup.prototype.setPosition = function(x, y) { + this.x = parseInt(x); + this.y = parseInt(y); + }; - // position and scale variables and objects - this.canvasTopLeft = {"x": 0,"y": 0}; // coordinates of the top left of the canvas. they will be set during _redraw. - this.canvasBottomRight = {"x": 0,"y": 0}; // coordinates of the bottom right of the canvas. they will be set during _redraw - this.pointerPosition = {"x": 0,"y": 0}; // coordinates of the bottom right of the canvas. they will be set during _redraw - this.areaCenter = {}; // object with x and y elements used for determining the center of the zoom action - this.scale = 1; // defining the global scale variable in the constructor - this.previousScale = this.scale; // this is used to check if the zoom operation is zooming in or out + /** + * Set the content for the popup window. This can be HTML code or text. + * @param {string | Element} content + */ + Popup.prototype.setText = function(content) { + if (content instanceof Element) { + this.frame.innerHTML = ''; + this.frame.appendChild(content); + } + else { + this.frame.innerHTML = content; // string containing text or HTML + } + }; - // datasets or dataviews - this.nodesData = null; // A DataSet or DataView - this.edgesData = null; // A DataSet or DataView + /** + * Show the popup window + * @param {boolean} show Optional. Show or hide the window + */ + Popup.prototype.show = function (show) { + if (show === undefined) { + show = true; + } - // create event listeners used to subscribe on the DataSets of the nodes and edges - this.nodesListeners = { - 'add': function (event, params) { - network._addNodes(params.items); - network.start(); - }, - 'update': function (event, params) { - network._updateNodes(params.items, params.data); - network.start(); - }, - 'remove': function (event, params) { - network._removeNodes(params.items); - network.start(); + if (show) { + var height = this.frame.clientHeight; + var width = this.frame.clientWidth; + var maxHeight = this.frame.parentNode.clientHeight; + var maxWidth = this.frame.parentNode.clientWidth; + + var top = (this.y - height); + if (top + height + this.padding > maxHeight) { + top = maxHeight - height - this.padding; } - }; - this.edgesListeners = { - 'add': function (event, params) { - network._addEdges(params.items); - network.start(); - }, - 'update': function (event, params) { - network._updateEdges(params.items); - network.start(); - }, - 'remove': function (event, params) { - network._removeEdges(params.items); - network.start(); + if (top < this.padding) { + top = this.padding; } - }; - - // properties for the animation - this.moving = true; - this.timer = undefined; // Scheduling function. Is definded in this.start(); - // load data (the disable start variable will be the same as the enabled clustering) - this.setData(data,this.constants.clustering.enabled || this.constants.hierarchicalLayout.enabled); + var left = this.x; + if (left + width + this.padding > maxWidth) { + left = maxWidth - width - this.padding; + } + if (left < this.padding) { + left = this.padding; + } - // hierarchical layout - this.initializing = false; - if (this.constants.hierarchicalLayout.enabled == true) { - this._setupHierarchicalLayout(); + this.frame.style.left = left + "px"; + this.frame.style.top = top + "px"; + this.frame.style.visibility = "visible"; + this.hidden = false; } else { - // zoom so all data will fit on the screen, if clustering is enabled, we do not want start to be called here. - if (this.constants.stabilize == false) { - this.zoomExtent({duration:0}, true, this.constants.clustering.enabled); - } - } - - // if clustering is disabled, the simulation will have started in the setData function - if (this.constants.clustering.enabled) { - this.startWithClustering(); + this.hide(); } - } - - // Extend Network with an Emitter mixin - Emitter(Network.prototype); + }; /** - * Determine if the browser requires a setTimeout or a requestAnimationFrame. This was required because - * some implementations (safari and IE9) did not support requestAnimationFrame - * @private + * Hide the popup window */ - Network.prototype._determineBrowserMethod = function() { - var browserType = navigator.userAgent.toLowerCase(); - this.requiresTimeout = false; - if (browserType.indexOf('msie 9.0') != -1) { // IE 9 - this.requiresTimeout = true; - } - else if (browserType.indexOf('safari') != -1) { // safari - if (browserType.indexOf('chrome') <= -1) { - this.requiresTimeout = true; - } - } - } + Popup.prototype.hide = function () { + this.hidden = true; + this.frame.style.visibility = "hidden"; + }; + + module.exports = Popup; + +/***/ }, +/* 42 */ +/***/ function(module, exports, __webpack_require__) { /** - * Get the script path where the vis.js library is located + * Parse a text source containing data in DOT language into a JSON object. + * The object contains two lists: one with nodes and one with edges. * - * @returns {string | null} path Path or null when not found. Path does not - * end with a slash. - * @private + * DOT language reference: http://www.graphviz.org/doc/info/lang.html + * + * @param {String} data Text containing a graph in DOT-notation + * @return {Object} graph An object containing two parameters: + * {Object[]} nodes + * {Object[]} edges */ - Network.prototype._getScriptPath = function() { - var scripts = document.getElementsByTagName( 'script' ); + function parseDOT (data) { + dot = data; + return parseGraph(); + } - // find script named vis.js or vis.min.js - for (var i = 0; i < scripts.length; i++) { - var src = scripts[i].src; - var match = src && /\/?vis(.min)?\.js$/.exec(src); - if (match) { - // return path without the script name - return src.substring(0, src.length - match[0].length); - } - } + // token types enumeration + var TOKENTYPE = { + NULL : 0, + DELIMITER : 1, + IDENTIFIER: 2, + UNKNOWN : 3 + }; - return null; + // map with all delimiters + var DELIMITERS = { + '{': true, + '}': true, + '[': true, + ']': true, + ';': true, + '=': true, + ',': true, + + '->': true, + '--': true }; + var dot = ''; // current dot file + var index = 0; // current index in dot file + var c = ''; // current token character in expr + var token = ''; // current token + var tokenType = TOKENTYPE.NULL; // type of the token /** - * Find the center position of the network - * @private + * Get the first character from the dot file. + * The character is stored into the char c. If the end of the dot file is + * reached, the function puts an empty string in c. */ - Network.prototype._getRange = function(specificNodes) { - var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; - if (specificNodes.length > 0) { - for (var i = 0; i < specificNodes.length; i++) { - node = this.nodes[specificNodes[i]]; - if (minX > (node.boundingBox.left)) { - minX = node.boundingBox.left; - } - if (maxX < (node.boundingBox.right)) { - maxX = node.boundingBox.right; - } - if (minY > (node.boundingBox.bottom)) { - minY = node.boundingBox.top; - } // top is negative, bottom is positive - if (maxY < (node.boundingBox.top)) { - maxY = node.boundingBox.bottom; - } // top is negative, bottom is positive - } - } - else { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (minX > (node.boundingBox.left)) { - minX = node.boundingBox.left; - } - if (maxX < (node.boundingBox.right)) { - maxX = node.boundingBox.right; - } - if (minY > (node.boundingBox.bottom)) { - minY = node.boundingBox.top; - } // top is negative, bottom is positive - if (maxY < (node.boundingBox.top)) { - maxY = node.boundingBox.bottom; - } // top is negative, bottom is positive - } - } - } - - if (minX == 1e9 && maxX == -1e9 && minY == 1e9 && maxY == -1e9) { - minY = 0, maxY = 0, minX = 0, maxX = 0; - } - return {minX: minX, maxX: maxX, minY: minY, maxY: maxY}; - }; - + function first() { + index = 0; + c = dot.charAt(0); + } /** - * @param {object} range = {minX: minX, maxX: maxX, minY: minY, maxY: maxY}; - * @returns {{x: number, y: number}} - * @private + * Get the next character from the dot file. + * The character is stored into the char c. If the end of the dot file is + * reached, the function puts an empty string in c. */ - Network.prototype._findCenter = function(range) { - return {x: (0.5 * (range.maxX + range.minX)), - y: (0.5 * (range.maxY + range.minY))}; - }; + function next() { + index++; + c = dot.charAt(index); + } + /** + * Preview the next character from the dot file. + * @return {String} cNext + */ + function nextPreview() { + return dot.charAt(index + 1); + } /** - * This function zooms out to fit all data on screen based on amount of nodes - * - * @param {Boolean} [initialZoom] | zoom based on fitted formula or range, true = fitted, default = false; - * @param {Boolean} [disableStart] | If true, start is not called. + * Test whether given character is alphabetic or numeric + * @param {String} c + * @return {Boolean} isAlphaNumeric */ - Network.prototype.zoomExtent = function(options, initialZoom, disableStart) { - this._redraw(true); + var regexAlphaNumeric = /[a-zA-Z_0-9.:#]/; + function isAlphaNumeric(c) { + return regexAlphaNumeric.test(c); + } - if (initialZoom === undefined) {initialZoom = false;} - if (disableStart === undefined) {disableStart = false;} - if (options === undefined) {options = {nodes:[]};} - if (options.nodes === undefined) { - options.nodes = []; + /** + * Merge all properties of object b into object b + * @param {Object} a + * @param {Object} b + * @return {Object} a + */ + function merge (a, b) { + if (!a) { + a = {}; } - var range; - var zoomLevel; - - if (initialZoom == true) { - // check if more than half of the nodes have a predefined position. If so, we use the range, not the approximation. - var positionDefined = 0; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.predefinedPosition == true) { - positionDefined += 1; - } + if (b) { + for (var name in b) { + if (b.hasOwnProperty(name)) { + a[name] = b[name]; } } - if (positionDefined > 0.5 * this.nodeIndices.length) { - this.zoomExtent(options,false,disableStart); - return; - } - - range = this._getRange(options.nodes); + } + return a; + } - var numberOfNodes = this.nodeIndices.length; - if (this.constants.smoothCurves == true) { - if (this.constants.clustering.enabled == true && - numberOfNodes >= this.constants.clustering.initialMaxNodes) { - zoomLevel = 49.07548 / (numberOfNodes + 142.05338) + 9.1444e-04; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. - } - else { - zoomLevel = 12.662 / (numberOfNodes + 7.4147) + 0.0964822; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. + /** + * Set a value in an object, where the provided parameter name can be a + * path with nested parameters. For example: + * + * var obj = {a: 2}; + * setValue(obj, 'b.c', 3); // obj = {a: 2, b: {c: 3}} + * + * @param {Object} obj + * @param {String} path A parameter name or dot-separated parameter path, + * like "color.highlight.border". + * @param {*} value + */ + function setValue(obj, path, value) { + var keys = path.split('.'); + var o = obj; + while (keys.length) { + var key = keys.shift(); + if (keys.length) { + // this isn't the end point + if (!o[key]) { + o[key] = {}; } + o = o[key]; } else { - if (this.constants.clustering.enabled == true && - numberOfNodes >= this.constants.clustering.initialMaxNodes) { - zoomLevel = 77.5271985 / (numberOfNodes + 187.266146) + 4.76710517e-05; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. - } - else { - zoomLevel = 30.5062972 / (numberOfNodes + 19.93597763) + 0.08413486; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. - } + // this is the end point + o[key] = value; } + } + } - // correct for larger canvasses. - var factor = Math.min(this.frame.canvas.clientWidth / 600, this.frame.canvas.clientHeight / 600); - zoomLevel *= factor; + /** + * Add a node to a graph object. If there is already a node with + * the same id, their attributes will be merged. + * @param {Object} graph + * @param {Object} node + */ + function addNode(graph, node) { + var i, len; + var current = null; + + // find root graph (in case of subgraph) + var graphs = [graph]; // list with all graphs from current graph to root graph + var root = graph; + while (root.parent) { + graphs.push(root.parent); + root = root.parent; } - else { - range = this._getRange(options.nodes); - var xDistance = Math.abs(range.maxX - range.minX) * 1.1; - var yDistance = Math.abs(range.maxY - range.minY) * 1.1; - var xZoomLevel = this.frame.canvas.clientWidth / xDistance; - var yZoomLevel = this.frame.canvas.clientHeight / yDistance; - zoomLevel = (xZoomLevel <= yZoomLevel) ? xZoomLevel : yZoomLevel; + // find existing node (at root level) by its id + if (root.nodes) { + for (i = 0, len = root.nodes.length; i < len; i++) { + if (node.id === root.nodes[i].id) { + current = root.nodes[i]; + break; + } + } } - if (zoomLevel > 1.0) { - zoomLevel = 1.0; + if (!current) { + // this is a new node + current = { + id: node.id + }; + if (graph.node) { + // clone default attributes + current.attr = merge(current.attr, graph.node); + } } + // add node to this (sub)graph and all its parent graphs + for (i = graphs.length - 1; i >= 0; i--) { + var g = graphs[i]; - var center = this._findCenter(range); - if (disableStart == false) { - var options = {position: center, scale: zoomLevel, animation: options}; - this.moveTo(options); - this.moving = true; - this.start(); - } - else { - center.x *= zoomLevel; - center.y *= zoomLevel; - center.x -= 0.5 * this.frame.canvas.clientWidth; - center.y -= 0.5 * this.frame.canvas.clientHeight; - this._setScale(zoomLevel); - this._setTranslation(-center.x,-center.y); + if (!g.nodes) { + g.nodes = []; + } + if (g.nodes.indexOf(current) == -1) { + g.nodes.push(current); + } } - }; + // merge attributes + if (node.attr) { + current.attr = merge(current.attr, node.attr); + } + } /** - * Update the this.nodeIndices with the most recent node index list - * @private + * Add an edge to a graph object + * @param {Object} graph + * @param {Object} edge */ - Network.prototype._updateNodeIndexList = function() { - this._clearNodeIndexList(); - for (var idx in this.nodes) { - if (this.nodes.hasOwnProperty(idx)) { - this.nodeIndices.push(idx); - } + function addEdge(graph, edge) { + if (!graph.edges) { + graph.edges = []; } - }; - + graph.edges.push(edge); + if (graph.edge) { + var attr = merge({}, graph.edge); // clone default attributes + edge.attr = merge(attr, edge.attr); // merge attributes + } + } /** - * Set nodes and edges, and optionally options as well. - * - * @param {Object} data Object containing parameters: - * {Array | DataSet | DataView} [nodes] Array with nodes - * {Array | DataSet | DataView} [edges] Array with edges - * {String} [dot] String containing data in DOT format - * {String} [gephi] String containing data in gephi JSON format - * {Options} [options] Object with options - * @param {Boolean} [disableStart] | optional: disable the calling of the start function. + * Create an edge to a graph object + * @param {Object} graph + * @param {String | Number | Object} from + * @param {String | Number | Object} to + * @param {String} type + * @param {Object | null} attr + * @return {Object} edge */ - Network.prototype.setData = function(data, disableStart) { - if (disableStart === undefined) { - disableStart = false; + function createEdge(graph, from, to, type, attr) { + var edge = { + from: from, + to: to, + type: type + }; + + if (graph.edge) { + edge.attr = merge({}, graph.edge); // clone default attributes } + edge.attr = merge(edge.attr || {}, attr); // merge attributes - // unselect all to ensure no selections from old data are carried over. - this._unselectAll(true); + return edge; + } - // we set initializing to true to ensure that the hierarchical layout is not performed until both nodes and edges are added. - this.initializing = true; + /** + * Get next token in the current dot file. + * The token and token type are available as token and tokenType + */ + function getToken() { + tokenType = TOKENTYPE.NULL; + token = ''; - if (data && data.dot && (data.nodes || data.edges)) { - throw new SyntaxError('Data must contain either parameter "dot" or ' + - ' parameter pair "nodes" and "edges", but not both.'); + // skip over whitespaces + while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { // space, tab, enter + next(); } - // clean up in case there is anyone in an active mode of the manipulation. This is the same option as bound to the escape button. - if (this.constants.dataManipulation.enabled == true) { - this._createManipulatorBar(); - } + do { + var isComment = false; - // set options - this.setOptions(data && data.options); - // set all data - if (data && data.dot) { - // parse DOT file - if(data && data.dot) { - var dotData = dotparser.DOTToGraph(data.dot); - this.setData(dotData); - return; - } - } - else if (data && data.gephi) { - // parse DOT file - if(data && data.gephi) { - var gephiData = gephiParser.parseGephi(data.gephi); - this.setData(gephiData); - return; - } - } - else { - this._setNodes(data && data.nodes); - this._setEdges(data && data.edges); - } - this._putDataInSector(); - if (disableStart == false) { - if (this.constants.hierarchicalLayout.enabled == true) { - this._resetLevels(); - this._setupHierarchicalLayout(); + // skip comment + if (c == '#') { + // find the previous non-space character + var i = index - 1; + while (dot.charAt(i) == ' ' || dot.charAt(i) == '\t') { + i--; + } + if (dot.charAt(i) == '\n' || dot.charAt(i) == '') { + // the # is at the start of a line, this is indeed a line comment + while (c != '' && c != '\n') { + next(); + } + isComment = true; + } } - else { - // find a stable position or start animating to a stable position - if (this.constants.stabilize == true) { - this._stabilize(); + if (c == '/' && nextPreview() == '/') { + // skip line comment + while (c != '' && c != '\n') { + next(); } + isComment = true; } - this.start(); - } - this.initializing = false; - }; - - /** - * Set options - * @param {Object} options - */ - Network.prototype.setOptions = function (options) { - if (options) { - var prop; - var fields = ['nodes','edges','smoothCurves','hierarchicalLayout','clustering','navigation', - 'keyboard','dataManipulation','onAdd','onEdit','onEditEdge','onConnect','onDelete','clickToUse' - ]; - // extend all but the values in fields - util.selectiveNotDeepExtend(fields,this.constants, options); - util.selectiveNotDeepExtend(['color'],this.constants.nodes, options.nodes); - util.selectiveNotDeepExtend(['color','length'],this.constants.edges, options.edges); - - this.groups.useDefaultGroups = this.constants.useDefaultGroups; - if (options.physics) { - util.mergeOptions(this.constants.physics, options.physics,'barnesHut'); - util.mergeOptions(this.constants.physics, options.physics,'repulsion'); - - if (options.physics.hierarchicalRepulsion) { - this.constants.hierarchicalLayout.enabled = true; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this.constants.physics.barnesHut.enabled = false; - for (prop in options.physics.hierarchicalRepulsion) { - if (options.physics.hierarchicalRepulsion.hasOwnProperty(prop)) { - this.constants.physics.hierarchicalRepulsion[prop] = options.physics.hierarchicalRepulsion[prop]; - } + if (c == '/' && nextPreview() == '*') { + // skip block comment + while (c != '') { + if (c == '*' && nextPreview() == '/') { + // end of block comment found. skip these last two characters + next(); + next(); + break; + } + else { + next(); } } + isComment = true; } - if (options.onAdd) {this.triggerFunctions.add = options.onAdd;} - if (options.onEdit) {this.triggerFunctions.edit = options.onEdit;} - if (options.onEditEdge) {this.triggerFunctions.editEdge = options.onEditEdge;} - if (options.onConnect) {this.triggerFunctions.connect = options.onConnect;} - if (options.onDelete) {this.triggerFunctions.del = options.onDelete;} - - util.mergeOptions(this.constants, options,'smoothCurves'); - util.mergeOptions(this.constants, options,'hierarchicalLayout'); - util.mergeOptions(this.constants, options,'clustering'); - util.mergeOptions(this.constants, options,'navigation'); - util.mergeOptions(this.constants, options,'keyboard'); - util.mergeOptions(this.constants, options,'dataManipulation'); + // skip over whitespaces + while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { // space, tab, enter + next(); + } + } + while (isComment); + // check for end of dot file + if (c == '') { + // token is still empty + tokenType = TOKENTYPE.DELIMITER; + return; + } - if (options.dataManipulation) { - this.editMode = this.constants.dataManipulation.initiallyVisible; - } + // check for delimiters consisting of 2 characters + var c2 = c + nextPreview(); + if (DELIMITERS[c2]) { + tokenType = TOKENTYPE.DELIMITER; + token = c2; + next(); + next(); + return; + } + // check for delimiters consisting of 1 character + if (DELIMITERS[c]) { + tokenType = TOKENTYPE.DELIMITER; + token = c; + next(); + return; + } - // TODO: work out these options and document them - if (options.edges) { - if (options.edges.color !== undefined) { - if (util.isString(options.edges.color)) { - this.constants.edges.color = {}; - this.constants.edges.color.color = options.edges.color; - this.constants.edges.color.highlight = options.edges.color; - this.constants.edges.color.hover = options.edges.color; - } - else { - if (options.edges.color.color !== undefined) {this.constants.edges.color.color = options.edges.color.color;} - if (options.edges.color.highlight !== undefined) {this.constants.edges.color.highlight = options.edges.color.highlight;} - if (options.edges.color.hover !== undefined) {this.constants.edges.color.hover = options.edges.color.hover;} - } - this.constants.edges.inheritColor = false; - } + // check for an identifier (number or string) + // TODO: more precise parsing of numbers/strings (and the port separator ':') + if (isAlphaNumeric(c) || c == '-') { + token += c; + next(); - if (!options.edges.fontColor) { - if (options.edges.color !== undefined) { - if (util.isString(options.edges.color)) {this.constants.edges.fontColor = options.edges.color;} - else if (options.edges.color.color !== undefined) {this.constants.edges.fontColor = options.edges.color.color;} - } - } + while (isAlphaNumeric(c)) { + token += c; + next(); } - - if (options.nodes) { - if (options.nodes.color) { - var newColorObj = util.parseColor(options.nodes.color); - this.constants.nodes.color.background = newColorObj.background; - this.constants.nodes.color.border = newColorObj.border; - this.constants.nodes.color.highlight.background = newColorObj.highlight.background; - this.constants.nodes.color.highlight.border = newColorObj.highlight.border; - this.constants.nodes.color.hover.background = newColorObj.hover.background; - this.constants.nodes.color.hover.border = newColorObj.hover.border; - } + if (token == 'false') { + token = false; // convert to boolean } - if (options.groups) { - for (var groupname in options.groups) { - if (options.groups.hasOwnProperty(groupname)) { - var group = options.groups[groupname]; - this.groups.add(groupname, group); - } - } + else if (token == 'true') { + token = true; // convert to boolean } - - if (options.tooltip) { - for (prop in options.tooltip) { - if (options.tooltip.hasOwnProperty(prop)) { - this.constants.tooltip[prop] = options.tooltip[prop]; - } - } - if (options.tooltip.color) { - this.constants.tooltip.color = util.parseColor(options.tooltip.color); - } + else if (!isNaN(Number(token))) { + token = Number(token); // convert to number } + tokenType = TOKENTYPE.IDENTIFIER; + return; + } - if ('clickToUse' in options) { - if (options.clickToUse) { - if (!this.activator) { - this.activator = new Activator(this.frame); - this.activator.on('change', this._createKeyBinds.bind(this)); - } - } - else { - if (this.activator) { - this.activator.destroy(); - delete this.activator; - } + // check for a string enclosed by double quotes + if (c == '"') { + next(); + while (c != '' && (c != '"' || (c == '"' && nextPreview() == '"'))) { + token += c; + if (c == '"') { // skip the escape character + next(); } + next(); } - - if (options.labels) { - throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.'); - } - - - // (Re)loading the mixins that can be enabled or disabled in the options. - // load the force calculation functions, grouped under the physics system. - this._loadPhysicsSystem(); - // load the navigation system. - this._loadNavigationControls(); - // load the data manipulation system - this._loadManipulationSystem(); - // configure the smooth curves - this._configureSmoothCurves(); - - // bind hammer - this._bindHammer(); - - // bind keys. If disabled, this will not do anything; - this._createKeyBinds(); - - this._markAllEdgesAsDirty(); - this.setSize(this.constants.width, this.constants.height); - this.moving = true; - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); + if (c != '"') { + throw newSyntaxError('End of string " expected'); } - this.start(); + next(); + tokenType = TOKENTYPE.IDENTIFIER; + return; } - }; - + // something unknown is found, wrong characters, a syntax error + tokenType = TOKENTYPE.UNKNOWN; + while (c != '') { + token += c; + next(); + } + throw new SyntaxError('Syntax error in part "' + chop(token, 30) + '"'); + } /** - * Create the main frame for the Network. - * This function is executed once when a Network object is created. The frame - * contains a canvas, and this canvas contains all objects like the axis and - * nodes. - * @private + * Parse a graph. + * @returns {Object} graph */ - Network.prototype._create = function () { - // remove all elements from the container element. - while (this.containerElement.hasChildNodes()) { - this.containerElement.removeChild(this.containerElement.firstChild); - } - - this.frame = document.createElement('div'); - this.frame.className = 'vis network-frame'; - this.frame.style.position = 'relative'; - this.frame.style.overflow = 'hidden'; - this.frame.tabIndex = 900; - + function parseGraph() { + var graph = {}; - ////////////////////////////////////////////////////////////////// + first(); + getToken(); - this.frame.canvas = document.createElement("canvas"); - this.frame.canvas.style.position = 'relative'; - this.frame.appendChild(this.frame.canvas); + // optional strict keyword + if (token == 'strict') { + graph.strict = true; + getToken(); + } - if (!this.frame.canvas.getContext) { - var noCanvas = document.createElement( 'DIV' ); - noCanvas.style.color = 'red'; - noCanvas.style.fontWeight = 'bold' ; - noCanvas.style.padding = '10px'; - noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; - this.frame.canvas.appendChild(noCanvas); + // graph or digraph keyword + if (token == 'graph' || token == 'digraph') { + graph.type = token; + getToken(); } - else { - var ctx = this.frame.canvas.getContext("2d"); - this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || - ctx.mozBackingStorePixelRatio || - ctx.msBackingStorePixelRatio || - ctx.oBackingStorePixelRatio || - ctx.backingStorePixelRatio || 1); - //this.pixelRatio = Math.max(1,this.pixelRatio); // this is to account for browser zooming out. The pixel ratio is ment to switch between 1 and 2 for HD screens. - this.frame.canvas.getContext("2d").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); + // optional graph id + if (tokenType == TOKENTYPE.IDENTIFIER) { + graph.id = token; + getToken(); } - this._bindHammer(); - }; + // open angle bracket + if (token != '{') { + throw newSyntaxError('Angle bracket { expected'); + } + getToken(); + // statements + parseStatements(graph); - /** - * This function binds hammer, it can be repeated over and over due to the uniqueness check. - * @private - */ - Network.prototype._bindHammer = function() { - var me = this; - if (this.hammer !== undefined) { - this.hammer.dispose(); + // close angle bracket + if (token != '}') { + throw newSyntaxError('Angle bracket } expected'); } - this.drag = {}; - this.pinch = {}; - this.hammer = Hammer(this.frame.canvas, { - prevent_default: true - }); - this.hammer.on('tap', me._onTap.bind(me) ); - this.hammer.on('doubletap', me._onDoubleTap.bind(me) ); - this.hammer.on('hold', me._onHold.bind(me) ); - this.hammer.on('touch', me._onTouch.bind(me) ); - this.hammer.on('dragstart', me._onDragStart.bind(me) ); - this.hammer.on('drag', me._onDrag.bind(me) ); - this.hammer.on('dragend', me._onDragEnd.bind(me) ); + getToken(); - if (this.constants.zoomable == true) { - this.hammer.on('mousewheel', me._onMouseWheel.bind(me)); - this.hammer.on('DOMMouseScroll', me._onMouseWheel.bind(me)); // for FF - this.hammer.on('pinch', me._onPinch.bind(me) ); + // end of file + if (token !== '') { + throw newSyntaxError('End of file expected'); } + getToken(); - this.hammer.on('mousemove', me._onMouseMoveTitle.bind(me) ); - - this.hammerFrame = Hammer(this.frame, { - prevent_default: true - }); - this.hammerFrame.on('release', me._onRelease.bind(me) ); + // remove temporary default properties + delete graph.node; + delete graph.edge; + delete graph.graph; - // add the frame to the container element - this.containerElement.appendChild(this.frame); + return graph; } /** - * Binding the keys for keyboard navigation. These functions are defined in the NavigationMixin - * @private + * Parse a list with statements. + * @param {Object} graph */ - Network.prototype._createKeyBinds = function() { - var me = this; - if (this.keycharm !== undefined) { - this.keycharm.destroy(); + function parseStatements (graph) { + while (token !== '' && token != '}') { + parseStatement(graph); + if (token == ';') { + getToken(); + } } + } - if (this.constants.keyboard.bindToWindow == true) { - this.keycharm = keycharm({container: window, preventDefault: false}); - } - else { - this.keycharm = keycharm({container: this.frame, preventDefault: false}); + /** + * Parse a single statement. Can be a an attribute statement, node + * statement, a series of node statements and edge statements, or a + * parameter. + * @param {Object} graph + */ + function parseStatement(graph) { + // parse subgraph + var subgraph = parseSubgraph(graph); + if (subgraph) { + // edge statements + parseEdge(graph, subgraph); + + return; } - this.keycharm.reset(); + // parse an attribute statement + var attr = parseAttributeStatement(graph); + if (attr) { + return; + } - if (this.constants.keyboard.enabled && this.isActive()) { - this.keycharm.bind("up", this._moveUp.bind(me) , "keydown"); - this.keycharm.bind("up", this._yStopMoving.bind(me), "keyup"); - this.keycharm.bind("down", this._moveDown.bind(me) , "keydown"); - this.keycharm.bind("down", this._yStopMoving.bind(me), "keyup"); - this.keycharm.bind("left", this._moveLeft.bind(me) , "keydown"); - this.keycharm.bind("left", this._xStopMoving.bind(me), "keyup"); - this.keycharm.bind("right",this._moveRight.bind(me), "keydown"); - this.keycharm.bind("right",this._xStopMoving.bind(me), "keyup"); - this.keycharm.bind("=", this._zoomIn.bind(me), "keydown"); - this.keycharm.bind("=", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("num+", this._zoomIn.bind(me), "keydown"); - this.keycharm.bind("num+", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("num-", this._zoomOut.bind(me), "keydown"); - this.keycharm.bind("num-", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("-", this._zoomOut.bind(me), "keydown"); - this.keycharm.bind("-", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("[", this._zoomIn.bind(me), "keydown"); - this.keycharm.bind("[", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("]", this._zoomOut.bind(me), "keydown"); - this.keycharm.bind("]", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("pageup",this._zoomIn.bind(me), "keydown"); - this.keycharm.bind("pageup",this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("pagedown",this._zoomOut.bind(me),"keydown"); - this.keycharm.bind("pagedown",this._stopZoom.bind(me), "keyup"); + // parse node + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Identifier expected'); } + var id = token; // id can be a string or a number + getToken(); - if (this.constants.dataManipulation.enabled == true) { - this.keycharm.bind("esc",this._createManipulatorBar.bind(me)); - this.keycharm.bind("delete",this._deleteSelected.bind(me)); + if (token == '=') { + // id statement + getToken(); + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Identifier expected'); + } + graph[id] = token; + getToken(); + // TODO: implement comma separated list with "a_list: ID=ID [','] [a_list] " } - }; + else { + parseNodeStatement(graph, id); + } + } /** - * Cleans up all bindings of the network, removing it fully from the memory IF the variable is set to null after calling this function. - * var network = new vis.Network(..); - * network.destroy(); - * network = null; + * Parse a subgraph + * @param {Object} graph parent graph object + * @return {Object | null} subgraph */ - Network.prototype.destroy = function() { - this.start = function () {}; - this.redraw = function () {}; - this.timer = false; + function parseSubgraph (graph) { + var subgraph = null; - // cleanup physicsConfiguration if it exists - this._cleanupPhysicsConfiguration(); + // optional subgraph keyword + if (token == 'subgraph') { + subgraph = {}; + subgraph.type = 'subgraph'; + getToken(); - // remove keybindings - this.keycharm.reset(); + // optional graph id + if (tokenType == TOKENTYPE.IDENTIFIER) { + subgraph.id = token; + getToken(); + } + } - // clear hammer bindings - this.hammer.dispose(); + // open angle bracket + if (token == '{') { + getToken(); - // clear events - this.off(); + if (!subgraph) { + subgraph = {}; + } + subgraph.parent = graph; + subgraph.node = graph.node; + subgraph.edge = graph.edge; + subgraph.graph = graph.graph; - this._recursiveDOMDelete(this.containerElement); - } + // statements + parseStatements(subgraph); - Network.prototype._recursiveDOMDelete = function(DOMobject) { - while (DOMobject.hasChildNodes() == true) { - this._recursiveDOMDelete(DOMobject.firstChild); - DOMobject.removeChild(DOMobject.firstChild); - } - } + // close angle bracket + if (token != '}') { + throw newSyntaxError('Angle bracket } expected'); + } + getToken(); - /** - * Get the pointer location from a touch location - * @param {{pageX: Number, pageY: Number}} touch - * @return {{x: Number, y: Number}} pointer - * @private - */ - Network.prototype._getPointer = function (touch) { - return { - x: touch.pageX - util.getAbsoluteLeft(this.frame.canvas), - y: touch.pageY - util.getAbsoluteTop(this.frame.canvas) - }; - }; + // remove temporary default properties + delete subgraph.node; + delete subgraph.edge; + delete subgraph.graph; + delete subgraph.parent; + + // register at the parent graph + if (!graph.subgraphs) { + graph.subgraphs = []; + } + graph.subgraphs.push(subgraph); + } + + return subgraph; + } /** - * On start of a touch gesture, store the pointer - * @param event - * @private + * parse an attribute statement like "node [shape=circle fontSize=16]". + * Available keywords are 'node', 'edge', 'graph'. + * The previous list with default attributes will be replaced + * @param {Object} graph + * @returns {String | null} keyword Returns the name of the parsed attribute + * (node, edge, graph), or null if nothing + * is parsed. */ - Network.prototype._onTouch = function (event) { - if (new Date().valueOf() - this.touchTime > 100) { - this.drag.pointer = this._getPointer(event.gesture.center); - this.drag.pinched = false; - this.pinch.scale = this._getScale(); + function parseAttributeStatement (graph) { + // attribute statements + if (token == 'node') { + getToken(); - // to avoid double fireing of this event because we have two hammer instances. (on canvas and on frame) - this.touchTime = new Date().valueOf(); + // node attributes + graph.node = parseAttributeList(); + return 'node'; + } + else if (token == 'edge') { + getToken(); - this._handleTouch(this.drag.pointer); + // edge attributes + graph.edge = parseAttributeList(); + return 'edge'; } - }; + else if (token == 'graph') { + getToken(); - /** - * handle drag start event - * @private - */ - Network.prototype._onDragStart = function (event) { - this._handleDragStart(event); - }; + // graph attributes + graph.graph = parseAttributeList(); + return 'graph'; + } + return null; + } /** - * This function is called by _onDragStart. - * It is separated out because we can then overload it for the datamanipulation system. - * - * @private + * parse a node statement + * @param {Object} graph + * @param {String | Number} id */ - Network.prototype._handleDragStart = function(event) { - // in case the touch event was triggered on an external div, do the initial touch now. - if (this.drag.pointer === undefined) { - this._onTouch(event); + function parseNodeStatement(graph, id) { + // node statement + var node = { + id: id + }; + var attr = parseAttributeList(); + if (attr) { + node.attr = attr; } + addNode(graph, node); - var node = this._getNodeAt(this.drag.pointer); - // note: drag.pointer is set in _onTouch to get the initial touch location + // edge statements + parseEdge(graph, id); + } - this.drag.dragging = true; - this.drag.selection = []; - this.drag.translation = this._getTranslation(); - this.drag.nodeId = null; - this.draggingNodes = false; + /** + * Parse an edge or a series of edges + * @param {Object} graph + * @param {String | Number} from Id of the from node + */ + function parseEdge(graph, from) { + while (token == '->' || token == '--') { + var to; + var type = token; + getToken(); - if (node != null && this.constants.dragNodes == true) { - this.draggingNodes = true; - this.drag.nodeId = node.id; - // select the clicked node if not yet selected - if (!node.isSelected()) { - this._selectObject(node,false); + var subgraph = parseSubgraph(graph); + if (subgraph) { + to = subgraph; } - - this.emit("dragStart",{nodeIds:this.getSelection().nodes}); - - // create an array with the selected nodes and their original location and status - for (var objectId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(objectId)) { - var object = this.selectionObj.nodes[objectId]; - var s = { - id: object.id, - node: object, - - // store original x, y, xFixed and yFixed, make the node temporarily Fixed - x: object.x, - y: object.y, - xFixed: object.xFixed, - yFixed: object.yFixed - }; - - object.xFixed = true; - object.yFixed = true; - - this.drag.selection.push(s); + else { + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Identifier or subgraph expected'); } + to = token; + addNode(graph, { + id: to + }); + getToken(); } - } - }; + // parse edge attributes + var attr = parseAttributeList(); - /** - * handle drag event - * @private - */ - Network.prototype._onDrag = function (event) { - this._handleOnDrag(event) - }; + // create edge + var edge = createEdge(graph, from, to, type, attr); + addEdge(graph, edge); + from = to; + } + } /** - * This function is called by _onDrag. - * It is separated out because we can then overload it for the datamanipulation system. - * - * @private + * Parse a set with attributes, + * for example [label="1.000", shape=solid] + * @return {Object | null} attr */ - Network.prototype._handleOnDrag = function(event) { - if (this.drag.pinched) { - return; - } - - // remove the focus on node if it is focussed on by the focusOnNode - this.releaseNode(); - - var pointer = this._getPointer(event.gesture.center); - var me = this; - var drag = this.drag; - var selection = drag.selection; - if (selection && selection.length && this.constants.dragNodes == true) { - // calculate delta's and new location - var deltaX = pointer.x - drag.pointer.x; - var deltaY = pointer.y - drag.pointer.y; - - // update position of all selected nodes - selection.forEach(function (s) { - var node = s.node; + function parseAttributeList() { + var attr = null; - if (!s.xFixed) { - node.x = me._XconvertDOMtoCanvas(me._XconvertCanvasToDOM(s.x) + deltaX); + while (token == '[') { + getToken(); + attr = {}; + while (token !== '' && token != ']') { + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Attribute name expected'); } + var name = token; - if (!s.yFixed) { - node.y = me._YconvertDOMtoCanvas(me._YconvertCanvasToDOM(s.y) + deltaY); + getToken(); + if (token != '=') { + throw newSyntaxError('Equal sign = expected'); } - }); + getToken(); + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Attribute value expected'); + } + var value = token; + setValue(attr, name, value); // name can be a path - // start _animationStep if not yet running - if (!this.moving) { - this.moving = true; - this.start(); - } - } - else { - // move the network - if (this.constants.dragNetwork == true) { - // if the drag was not started properly because the click started outside the network div, start it now. - if (this.drag.pointer === undefined) { - this._handleDragStart(event); - return; + getToken(); + if (token ==',') { + getToken(); } - var diffX = pointer.x - this.drag.pointer.x; - var diffY = pointer.y - this.drag.pointer.y; + } - this._setTranslation( - this.drag.translation.x + diffX, - this.drag.translation.y + diffY - ); - this._redraw(); + if (token != ']') { + throw newSyntaxError('Bracket ] expected'); } + getToken(); } - }; + + return attr; + } /** - * handle drag start event - * @private + * Create a syntax error with extra information on current token and index. + * @param {String} message + * @returns {SyntaxError} err */ - Network.prototype._onDragEnd = function (event) { - this._handleDragEnd(event); - }; + function newSyntaxError(message) { + return new SyntaxError(message + ', got "' + chop(token, 30) + '" (char ' + index + ')'); + } + /** + * Chop off text after a maximum length + * @param {String} text + * @param {Number} maxLength + * @returns {String} + */ + function chop (text, maxLength) { + return (text.length <= maxLength) ? text : (text.substr(0, 27) + '...'); + } - Network.prototype._handleDragEnd = function(event) { - this.drag.dragging = false; - var selection = this.drag.selection; - if (selection && selection.length) { - selection.forEach(function (s) { - // restore original xFixed and yFixed - s.node.xFixed = s.xFixed; - s.node.yFixed = s.yFixed; + /** + * Execute a function fn for each pair of elements in two arrays + * @param {Array | *} array1 + * @param {Array | *} array2 + * @param {function} fn + */ + function forEach2(array1, array2, fn) { + if (Array.isArray(array1)) { + array1.forEach(function (elem1) { + if (Array.isArray(array2)) { + array2.forEach(function (elem2) { + fn(elem1, elem2); + }); + } + else { + fn(elem1, array2); + } }); - this.moving = true; - this.start(); - } - else { - this._redraw(); - } - if (this.draggingNodes == false) { - this.emit("dragEnd",{nodeIds:[]}); } else { - this.emit("dragEnd",{nodeIds:this.getSelection().nodes}); + if (Array.isArray(array2)) { + array2.forEach(function (elem2) { + fn(array1, elem2); + }); + } + else { + fn(array1, array2); + } } - } - /** - * handle tap/click event: select/unselect a node - * @private - */ - Network.prototype._onTap = function (event) { - var pointer = this._getPointer(event.gesture.center); - this.pointerPosition = pointer; - this._handleTap(pointer); - - }; - /** - * handle doubletap event - * @private + * Convert a string containing a graph in DOT language into a map containing + * with nodes and edges in the format of graph. + * @param {String} data Text containing a graph in DOT-notation + * @return {Object} graphData */ - Network.prototype._onDoubleTap = function (event) { - var pointer = this._getPointer(event.gesture.center); - this._handleDoubleTap(pointer); - }; - + function DOTToGraph (data) { + // parse the DOT file + var dotData = parseDOT(data); + var graphData = { + nodes: [], + edges: [], + options: {} + }; - /** - * handle long tap event: multi select nodes - * @private - */ - Network.prototype._onHold = function (event) { - var pointer = this._getPointer(event.gesture.center); - this.pointerPosition = pointer; - this._handleOnHold(pointer); - }; + // copy the nodes + if (dotData.nodes) { + dotData.nodes.forEach(function (dotNode) { + var graphNode = { + id: dotNode.id, + label: String(dotNode.label || dotNode.id) + }; + merge(graphNode, dotNode.attr); + if (graphNode.image) { + graphNode.shape = 'image'; + } + graphData.nodes.push(graphNode); + }); + } - /** - * handle the release of the screen - * - * @private - */ - Network.prototype._onRelease = function (event) { - var pointer = this._getPointer(event.gesture.center); - this._handleOnRelease(pointer); - }; + // copy the edges + if (dotData.edges) { + /** + * Convert an edge in DOT format to an edge with VisGraph format + * @param {Object} dotEdge + * @returns {Object} graphEdge + */ + var convertEdge = function (dotEdge) { + var graphEdge = { + from: dotEdge.from, + to: dotEdge.to + }; + merge(graphEdge, dotEdge.attr); + graphEdge.style = (dotEdge.type == '->') ? 'arrow' : 'line'; + return graphEdge; + } - /** - * Handle pinch event - * @param event - * @private - */ - Network.prototype._onPinch = function (event) { - var pointer = this._getPointer(event.gesture.center); + dotData.edges.forEach(function (dotEdge) { + var from, to; + if (dotEdge.from instanceof Object) { + from = dotEdge.from.nodes; + } + else { + from = { + id: dotEdge.from + } + } - this.drag.pinched = true; - if (!('scale' in this.pinch)) { - this.pinch.scale = 1; - } + if (dotEdge.to instanceof Object) { + to = dotEdge.to.nodes; + } + else { + to = { + id: dotEdge.to + } + } - // TODO: enabled moving while pinching? - var scale = this.pinch.scale * event.gesture.scale; - this._zoom(scale, pointer) - }; + if (dotEdge.from instanceof Object && dotEdge.from.edges) { + dotEdge.from.edges.forEach(function (subEdge) { + var graphEdge = convertEdge(subEdge); + graphData.edges.push(graphEdge); + }); + } - /** - * Zoom the network in or out - * @param {Number} scale a number around 1, and between 0.01 and 10 - * @param {{x: Number, y: Number}} pointer Position on screen - * @return {Number} appliedScale scale is limited within the boundaries - * @private - */ - Network.prototype._zoom = function(scale, pointer) { - if (this.constants.zoomable == true) { - var scaleOld = this._getScale(); - if (scale < 0.00001) { - scale = 0.00001; - } - if (scale > 10) { - scale = 10; - } + forEach2(from, to, function (from, to) { + var subEdge = createEdge(graphData, from.id, to.id, dotEdge.type, dotEdge.attr); + var graphEdge = convertEdge(subEdge); + graphData.edges.push(graphEdge); + }); - var preScaleDragPointer = null; - if (this.drag !== undefined) { - if (this.drag.dragging == true) { - preScaleDragPointer = this.DOMtoCanvas(this.drag.pointer); + if (dotEdge.to instanceof Object && dotEdge.to.edges) { + dotEdge.to.edges.forEach(function (subEdge) { + var graphEdge = convertEdge(subEdge); + graphData.edges.push(graphEdge); + }); } - } - // + this.frame.canvas.clientHeight / 2 - var translation = this._getTranslation(); + }); + } - var scaleFrac = scale / scaleOld; - var tx = (1 - scaleFrac) * pointer.x + translation.x * scaleFrac; - var ty = (1 - scaleFrac) * pointer.y + translation.y * scaleFrac; + // copy the options + if (dotData.attr) { + graphData.options = dotData.attr; + } - this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), - "y" : this._YconvertDOMtoCanvas(pointer.y)}; + return graphData; + } - this._setScale(scale); - this._setTranslation(tx, ty); - this.updateClustersDefault(); + // exports + exports.parseDOT = parseDOT; + exports.DOTToGraph = DOTToGraph; - if (preScaleDragPointer != null) { - var postScaleDragPointer = this.canvasToDOM(preScaleDragPointer); - this.drag.pointer.x = postScaleDragPointer.x; - this.drag.pointer.y = postScaleDragPointer.y; - } - this._redraw(); +/***/ }, +/* 43 */ +/***/ function(module, exports, __webpack_require__) { - if (scaleOld < scale) { - this.emit("zoom", {direction:"+"}); - } - else { - this.emit("zoom", {direction:"-"}); + + function parseGephi(gephiJSON, options) { + var edges = []; + var nodes = []; + this.options = { + edges: { + inheritColor: true + }, + nodes: { + allowedToMove: false, + parseColor: false } + }; - return scale; + if (options !== undefined) { + this.options.nodes['allowedToMove'] = options.allowedToMove | false; + this.options.nodes['parseColor'] = options.parseColor | false; + this.options.edges['inheritColor'] = options.inheritColor | true; } - }; - - /** - * Event handler for mouse wheel event, used to zoom the timeline - * See http://adomas.org/javascript-mouse-wheel/ - * https://github.com/EightMedia/hammer.js/issues/256 - * @param {MouseEvent} event - * @private - */ - Network.prototype._onMouseWheel = function(event) { - // retrieve delta - var delta = 0; - if (event.wheelDelta) { /* IE/Opera. */ - delta = event.wheelDelta/120; - } else if (event.detail) { /* Mozilla case. */ - // In Mozilla, sign of delta is different than in IE. - // Also, delta is multiple of 3. - delta = -event.detail/3; + var gEdges = gephiJSON.edges; + var gNodes = gephiJSON.nodes; + for (var i = 0; i < gEdges.length; i++) { + var edge = {}; + var gEdge = gEdges[i]; + edge['id'] = gEdge.id; + edge['from'] = gEdge.source; + edge['to'] = gEdge.target; + edge['attributes'] = gEdge.attributes; + // edge['value'] = gEdge.attributes !== undefined ? gEdge.attributes.Weight : undefined; + // edge['width'] = edge['value'] !== undefined ? undefined : edgegEdge.size; + edge['color'] = gEdge.color; + edge['inheritColor'] = edge['color'] !== undefined ? false : this.options.inheritColor; + edges.push(edge); } - // If delta is nonzero, handle it. - // Basically, delta is now positive if wheel was scrolled up, - // and negative, if wheel was scrolled down. - if (delta) { - - // calculate the new scale - var scale = this._getScale(); - var zoom = delta / 10; - if (delta < 0) { - zoom = zoom / (1 - zoom); + for (var i = 0; i < gNodes.length; i++) { + var node = {}; + var gNode = gNodes[i]; + node['id'] = gNode.id; + node['attributes'] = gNode.attributes; + node['x'] = gNode.x; + node['y'] = gNode.y; + node['label'] = gNode.label; + if (this.options.nodes.parseColor == true) { + node['color'] = gNode.color; } - scale *= (1 + zoom); + else { + node['color'] = gNode.color !== undefined ? {background:gNode.color, border:gNode.color} : undefined; + } + node['radius'] = gNode.size; + node['allowedToMoveX'] = this.options.nodes.allowedToMove; + node['allowedToMoveY'] = this.options.nodes.allowedToMove; + nodes.push(node); + } - // calculate the pointer location - var gesture = hammerUtil.fakeGesture(this, event); - var pointer = this._getPointer(gesture.center); + return {nodes:nodes, edges:edges}; + } - // apply the new scale - this._zoom(scale, pointer); - } + exports.parseGephi = parseGephi; - // Prevent default actions caused by mouse wheel. - event.preventDefault(); - }; +/***/ }, +/* 44 */ +/***/ function(module, exports, __webpack_require__) { + // first check if moment.js is already loaded in the browser window, if so, + // use this instance. Else, load via commonjs. + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(58); - /** - * Mouse move handler for checking whether the title moves over a node with a title. - * @param {Event} event - * @private - */ - Network.prototype._onMouseMoveTitle = function (event) { - var gesture = hammerUtil.fakeGesture(this, event); - var pointer = this._getPointer(gesture.center); - var popupVisible = false; - // check if the previously selected node is still selected - if (this.popup !== undefined) { - if (this.popup.hidden === false) { - this._checkHidePopup(pointer); - } +/***/ }, +/* 45 */ +/***/ function(module, exports, __webpack_require__) { - // if the popup was not hidden above - if (this.popup.hidden === false) { - popupVisible = true; - this.popup.setPosition(pointer.x + 3,pointer.y - 5) - this.popup.show(); - } + // Only load hammer.js when in a browser environment + // (loading hammer.js in a node.js environment gives errors) + if (typeof window !== 'undefined') { + module.exports = window['Hammer'] || __webpack_require__(59); + } + else { + module.exports = function () { + throw Error('hammer.js is only available in a browser, not in node.js.'); } + } - // if we bind the keyboard to the div, we have to highlight it to use it. This highlights it on mouse over - if (this.constants.keyboard.bindToWindow == false && this.constants.keyboard.enabled == true) { - this.frame.focus(); - } - // start a timeout that will check if the mouse is positioned above an element - if (popupVisible === false) { - var me = this; - var checkShow = function () { - me._checkShowPopup(pointer); - }; - if (this.popupTimer) { - clearInterval(this.popupTimer); // stop any running calculationTimer - } - if (!this.drag.dragging) { - this.popupTimer = setTimeout(checkShow, this.constants.tooltip.delay); - } - } +/***/ }, +/* 46 */ +/***/ function(module, exports, __webpack_require__) { - /** - * Adding hover highlights - */ - if (this.constants.hover == true) { - // removing all hover highlights - for (var edgeId in this.hoverObj.edges) { - if (this.hoverObj.edges.hasOwnProperty(edgeId)) { - this.hoverObj.edges[edgeId].hover = false; - delete this.hoverObj.edges[edgeId]; - } - } + var Emitter = __webpack_require__(56); + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var Range = __webpack_require__(17); + var ItemSet = __webpack_require__(32); + var Activator = __webpack_require__(53); + var DateUtil = __webpack_require__(15); + var CustomTime = __webpack_require__(27); - // adding hover highlights - var obj = this._getNodeAt(pointer); - if (obj == null) { - obj = this._getEdgeAt(pointer); - } - if (obj != null) { - this._hoverObject(obj); - } + /** + * Create a timeline visualization + * @param {HTMLElement} container + * @param {vis.DataSet | Array | google.visualization.DataTable} [items] + * @param {Object} [options] See Core.setOptions for the available options. + * @constructor + */ + function Core () {} - // removing all node hover highlights except for the selected one. - for (var nodeId in this.hoverObj.nodes) { - if (this.hoverObj.nodes.hasOwnProperty(nodeId)) { - if (obj instanceof Node && obj.id != nodeId || obj instanceof Edge || obj == null) { - this._blurObject(this.hoverObj.nodes[nodeId]); - delete this.hoverObj.nodes[nodeId]; - } - } - } - this.redraw(); - } - }; + // turn Core into an event emitter + Emitter(Core.prototype); /** - * Check if there is an element on the given position in the network - * (a node or edge). If so, and if this element has a title, - * show a popup window with its title. - * - * @param {{x:Number, y:Number}} pointer + * Create the main DOM for the Core: a root panel containing left, right, + * top, bottom, content, and background panel. + * @param {Element} container The container element where the Core will + * be attached. * @private */ - Network.prototype._checkShowPopup = function (pointer) { - var obj = { - left: this._XconvertDOMtoCanvas(pointer.x), - top: this._YconvertDOMtoCanvas(pointer.y), - right: this._XconvertDOMtoCanvas(pointer.x), - bottom: this._YconvertDOMtoCanvas(pointer.y) - }; + Core.prototype._create = function (container) { + this.dom = {}; - var id; - var previousPopupObjId = this.popupObj === undefined ? "" : this.popupObj.id; - var nodeUnderCursor = false; - var popupType = "node"; + this.dom.root = document.createElement('div'); + this.dom.background = document.createElement('div'); + this.dom.backgroundVertical = document.createElement('div'); + this.dom.backgroundHorizontal = document.createElement('div'); + this.dom.centerContainer = document.createElement('div'); + this.dom.leftContainer = document.createElement('div'); + this.dom.rightContainer = document.createElement('div'); + this.dom.center = document.createElement('div'); + this.dom.left = document.createElement('div'); + this.dom.right = document.createElement('div'); + this.dom.top = document.createElement('div'); + this.dom.bottom = document.createElement('div'); + this.dom.shadowTop = document.createElement('div'); + this.dom.shadowBottom = document.createElement('div'); + this.dom.shadowTopLeft = document.createElement('div'); + this.dom.shadowBottomLeft = document.createElement('div'); + this.dom.shadowTopRight = document.createElement('div'); + this.dom.shadowBottomRight = document.createElement('div'); - if (this.popupObj == undefined) { - // search the nodes for overlap, select the top one in case of multiple nodes - var nodes = this.nodes; - var overlappingNodes = []; - for (id in nodes) { - if (nodes.hasOwnProperty(id)) { - var node = nodes[id]; - if (node.isOverlappingWith(obj)) { - if (node.getTitle() !== undefined) { - overlappingNodes.push(id); - } - } - } - } + this.dom.root.className = 'vis timeline root'; + this.dom.background.className = 'vispanel background'; + this.dom.backgroundVertical.className = 'vispanel background vertical'; + this.dom.backgroundHorizontal.className = 'vispanel background horizontal'; + this.dom.centerContainer.className = 'vispanel center'; + this.dom.leftContainer.className = 'vispanel left'; + this.dom.rightContainer.className = 'vispanel right'; + this.dom.top.className = 'vispanel top'; + this.dom.bottom.className = 'vispanel bottom'; + this.dom.left.className = 'content'; + this.dom.center.className = 'content'; + this.dom.right.className = 'content'; + this.dom.shadowTop.className = 'shadow top'; + this.dom.shadowBottom.className = 'shadow bottom'; + this.dom.shadowTopLeft.className = 'shadow top'; + this.dom.shadowBottomLeft.className = 'shadow bottom'; + this.dom.shadowTopRight.className = 'shadow top'; + this.dom.shadowBottomRight.className = 'shadow bottom'; - if (overlappingNodes.length > 0) { - // if there are overlapping nodes, select the last one, this is the - // one which is drawn on top of the others - this.popupObj = this.nodes[overlappingNodes[overlappingNodes.length - 1]]; - // if you hover over a node, the title of the edge is not supposed to be shown. - nodeUnderCursor = true; - } - } + this.dom.root.appendChild(this.dom.background); + this.dom.root.appendChild(this.dom.backgroundVertical); + this.dom.root.appendChild(this.dom.backgroundHorizontal); + this.dom.root.appendChild(this.dom.centerContainer); + this.dom.root.appendChild(this.dom.leftContainer); + this.dom.root.appendChild(this.dom.rightContainer); + this.dom.root.appendChild(this.dom.top); + this.dom.root.appendChild(this.dom.bottom); - if (this.popupObj === undefined && nodeUnderCursor == false) { - // search the edges for overlap - var edges = this.edges; - var overlappingEdges = []; - for (id in edges) { - if (edges.hasOwnProperty(id)) { - var edge = edges[id]; - if (edge.connected && (edge.getTitle() !== undefined) && - edge.isOverlappingWith(obj)) { - overlappingEdges.push(id); - } + this.dom.centerContainer.appendChild(this.dom.center); + this.dom.leftContainer.appendChild(this.dom.left); + this.dom.rightContainer.appendChild(this.dom.right); + + this.dom.centerContainer.appendChild(this.dom.shadowTop); + this.dom.centerContainer.appendChild(this.dom.shadowBottom); + this.dom.leftContainer.appendChild(this.dom.shadowTopLeft); + this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft); + this.dom.rightContainer.appendChild(this.dom.shadowTopRight); + this.dom.rightContainer.appendChild(this.dom.shadowBottomRight); + + this.on('rangechange', this._redraw.bind(this)); + this.on('touch', this._onTouch.bind(this)); + this.on('pinch', this._onPinch.bind(this)); + this.on('dragstart', this._onDragStart.bind(this)); + this.on('drag', this._onDrag.bind(this)); + + var me = this; + this.on('change', function (properties) { + if (properties && properties.queue == true) { + // redraw once on next tick + if (!me._redrawTimer) { + me._redrawTimer = setTimeout(function () { + me._redrawTimer = null; + me._redraw(); + }, 0) } } - - if (overlappingEdges.length > 0) { - this.popupObj = this.edges[overlappingEdges[overlappingEdges.length - 1]]; - popupType = "edge"; + else { + // redraw immediately + me._redraw(); } - } + }); - if (this.popupObj) { - // show popup message window - if (this.popupObj.id != previousPopupObjId) { - if (this.popup === undefined) { - this.popup = new Popup(this.frame, this.constants.tooltip); + // create event listeners for all interesting events, these events will be + // emitted via emitter + this.hammer = Hammer(this.dom.root, { + preventDefault: true + }); + this.listeners = {}; + + var events = [ + 'touch', 'pinch', + 'tap', 'doubletap', 'hold', + 'dragstart', 'drag', 'dragend', + 'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox + ]; + events.forEach(function (event) { + var listener = function () { + var args = [event].concat(Array.prototype.slice.call(arguments, 0)); + if (me.isActive()) { + me.emit.apply(me, args); } + }; + me.hammer.on(event, listener); + me.listeners[event] = listener; + }); - this.popup.popupTargetType = popupType; - this.popup.popupTargetId = this.popupObj.id; + // size properties of each of the panels + this.props = { + root: {}, + background: {}, + centerContainer: {}, + leftContainer: {}, + rightContainer: {}, + center: {}, + left: {}, + right: {}, + top: {}, + bottom: {}, + border: {}, + scrollTop: 0, + scrollTopMin: 0 + }; + this.touch = {}; // store state information needed for touch events - // adjust a small offset such that the mouse cursor is located in the - // bottom left location of the popup, and you can easily move over the - // popup area - this.popup.setPosition(pointer.x + 3, pointer.y - 5); - this.popup.setText(this.popupObj.getTitle()); - this.popup.show(); - } - } - else { - if (this.popup) { - this.popup.hide(); - } - } - }; + this.redrawCount = 0; + // attach the root panel to the provided container + if (!container) throw new Error('No container provided'); + container.appendChild(this.dom.root); + }; /** - * Check if the popup must be hidden, which is the case when the mouse is no - * longer hovering on the object - * @param {{x:Number, y:Number}} pointer - * @private + * Set options. Options will be passed to all components loaded in the Timeline. + * @param {Object} [options] + * {String} orientation + * Vertical orientation for the Timeline, + * can be 'bottom' (default) or 'top'. + * {String | Number} width + * Width for the timeline, a number in pixels or + * a css string like '1000px' or '75%'. '100%' by default. + * {String | Number} height + * Fixed height for the Timeline, a number in pixels or + * a css string like '400px' or '75%'. If undefined, + * The Timeline will automatically size such that + * its contents fit. + * {String | Number} minHeight + * Minimum height for the Timeline, a number in pixels or + * a css string like '400px' or '75%'. + * {String | Number} maxHeight + * Maximum height for the Timeline, a number in pixels or + * a css string like '400px' or '75%'. + * {Number | Date | String} start + * Start date for the visible window + * {Number | Date | String} end + * End date for the visible window */ - Network.prototype._checkHidePopup = function (pointer) { - var pointerObj = { - left: this._XconvertDOMtoCanvas(pointer.x), - top: this._YconvertDOMtoCanvas(pointer.y), - right: this._XconvertDOMtoCanvas(pointer.x), - bottom: this._YconvertDOMtoCanvas(pointer.y) - }; + Core.prototype.setOptions = function (options) { + if (options) { + // copy the known options + var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'orientation', 'clickToUse', 'dataAttributes', 'hiddenDates']; + util.selectiveExtend(fields, this.options, options); - var stillOnObj = false; - if (this.popup.popupTargetType == 'node') { - stillOnObj = this.nodes[this.popup.popupTargetId].isOverlappingWith(pointerObj); - if (stillOnObj === true) { - var overNode = this._getNodeAt(pointer); - stillOnObj = overNode.id == this.popup.popupTargetId; + if ('hiddenDates' in this.options) { + DateUtil.convertHiddenOptions(this.body, this.options.hiddenDates); } - } - else { - if (this._getNodeAt(pointer) === null) { - stillOnObj = this.edges[this.popup.popupTargetId].isOverlappingWith(pointerObj); + + if ('clickToUse' in options) { + if (options.clickToUse) { + if (!this.activator) { + this.activator = new Activator(this.dom.root); + } + } + else { + if (this.activator) { + this.activator.destroy(); + delete this.activator; + } + } } + + // enable/disable autoResize + this._initAutoResize(); } + // propagate options to all components + this.components.forEach(function (component) { + component.setOptions(options); + }); - if (stillOnObj === false) { - this.popupObj = undefined; - this.popup.hide(); + // TODO: remove deprecation error one day (deprecated since version 0.8.0) + if (options && options.order) { + throw new Error('Option order is deprecated. There is no replacement for this feature.'); } + + // redraw everything + this._redraw(); }; + /** + * Returns true when the Timeline is active. + * @returns {boolean} + */ + Core.prototype.isActive = function () { + return !this.activator || this.activator.active; + }; /** - * Set a new size for the network - * @param {string} width Width in pixels or percentage (for example '800px' - * or '50%') - * @param {string} height Height in pixels or percentage (for example '400px' - * or '30%') + * Destroy the Core, clean up all DOM elements and event listeners. */ - Network.prototype.setSize = function(width, height) { - var emitEvent = false; - var oldWidth = this.frame.canvas.width; - var oldHeight = this.frame.canvas.height; - if (width != this.constants.width || height != this.constants.height || this.frame.style.width != width || this.frame.style.height != height) { - this.frame.style.width = width; - this.frame.style.height = height; + Core.prototype.destroy = function () { + // unbind datasets + this.clear(); - this.frame.canvas.style.width = '100%'; - this.frame.canvas.style.height = '100%'; + // remove all event listeners + this.off(); - this.frame.canvas.width = this.frame.canvas.clientWidth * this.pixelRatio; - this.frame.canvas.height = this.frame.canvas.clientHeight * this.pixelRatio; + // stop checking for changed size + this._stopAutoResize(); - this.constants.width = width; - this.constants.height = height; + // remove from DOM + if (this.dom.root.parentNode) { + this.dom.root.parentNode.removeChild(this.dom.root); + } + this.dom = null; - emitEvent = true; + // remove Activator + if (this.activator) { + this.activator.destroy(); + delete this.activator; } - else { - // this would adapt the width of the canvas to the width from 100% if and only if - // there is a change. - if (this.frame.canvas.width != this.frame.canvas.clientWidth * this.pixelRatio) { - this.frame.canvas.width = this.frame.canvas.clientWidth * this.pixelRatio; - emitEvent = true; - } - if (this.frame.canvas.height != this.frame.canvas.clientHeight * this.pixelRatio) { - this.frame.canvas.height = this.frame.canvas.clientHeight * this.pixelRatio; - emitEvent = true; + // cleanup hammer touch events + for (var event in this.listeners) { + if (this.listeners.hasOwnProperty(event)) { + delete this.listeners[event]; } } + this.listeners = null; + this.hammer = null; - if (emitEvent == true) { - this.emit('resize', {width:this.frame.canvas.width * this.pixelRatio,height:this.frame.canvas.height * this.pixelRatio, oldWidth: oldWidth * this.pixelRatio, oldHeight: oldHeight * this.pixelRatio}); - } - }; + // give all components the opportunity to cleanup + this.components.forEach(function (component) { + component.destroy(); + }); - /** - * Set a data set with nodes for the network - * @param {Array | DataSet | DataView} nodes The data containing the nodes. - * @private - */ - Network.prototype._setNodes = function(nodes) { - var oldNodesData = this.nodesData; + this.body = null; + }; - if (nodes instanceof DataSet || nodes instanceof DataView) { - this.nodesData = nodes; - } - else if (Array.isArray(nodes)) { - this.nodesData = new DataSet(); - this.nodesData.add(nodes); - } - else if (!nodes) { - this.nodesData = new DataSet(); - } - else { - throw new TypeError('Array or DataSet expected'); - } - if (oldNodesData) { - // unsubscribe from old dataset - util.forEach(this.nodesListeners, function (callback, event) { - oldNodesData.off(event, callback); - }); + /** + * Set a custom time bar + * @param {Date} time + * @param {int} id + */ + Core.prototype.setCustomTime = function (time, id) { + if (!this.customTime) { + throw new Error('Cannot get custom time: Custom time bar is not enabled'); } - // remove drawn nodes - this.nodes = {}; - - if (this.nodesData) { - // subscribe to new dataset - var me = this; - util.forEach(this.nodesListeners, function (callback, event) { - me.nodesData.on(event, callback); - }); + var barId = id || 0; - // draw all new nodes - var ids = this.nodesData.getIds(); - this._addNodes(ids); - } - this._updateSelection(); + this.components.forEach(function (element, index, components) { + if (element instanceof CustomTime && element.options.id === barId) { + element.setCustomTime(time); + } + }); }; /** - * Add nodes - * @param {Number[] | String[]} ids - * @private + * Retrieve the current custom time. + * @return {Date} customTime + * @param {int} id */ - Network.prototype._addNodes = function(ids) { - var id; - for (var i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - var data = this.nodesData.get(id); - var node = new Node(data, this.images, this.groups, this.constants); - this.nodes[id] = node; // note: this may replace an existing node - if ((node.xFixed == false || node.yFixed == false) && (node.x === null || node.y === null)) { - var radius = 10 * 0.1*ids.length + 10; - var angle = 2 * Math.PI * Math.random(); - if (node.xFixed == false) {node.x = radius * Math.cos(angle);} - if (node.yFixed == false) {node.y = radius * Math.sin(angle);} - } - this.moving = true; + Core.prototype.getCustomTime = function(id) { + if (!this.customTime) { + throw new Error('Cannot get custom time: Custom time bar is not enabled'); } - this._updateNodeIndexList(); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); - } - this._updateCalculationNodes(); - this._reconnectEdges(); - this._updateValueRange(this.nodes); - this.updateLabels(); + var barId = id || 0, + customTime = this.customTime.getCustomTime(); + + this.components.forEach(function (element, index, components) { + if (element instanceof CustomTime && element.options.id === barId) { + customTime = element.getCustomTime(); + } + }); + + return customTime; }; /** - * Update existing nodes, or create them when not yet existing - * @param {Number[] | String[]} ids - * @private + * Add custom vertical bar + * @param {Date | String | Number} time A Date, unix timestamp, or + * ISO date string. Time point where the new bar should be placed + * @param {Number | String} ID of the new bar + * @return {Number | String} ID of the new bar */ - Network.prototype._updateNodes = function(ids,changedData) { - var nodes = this.nodes; - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; - var node = nodes[id]; - var data = changedData[i]; - if (node) { - // update node - node.setProperties(data, this.constants); - } - else { - // create node - node = new Node(properties, this.images, this.groups, this.constants); - nodes[id] = node; - } + Core.prototype.addCustomTime = function (time, id) { + if (!this.currentTime) { + throw new Error('Option showCurrentTime must be true'); } - this.moving = true; - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); + + if (time === undefined) { + throw new Error('Time parameter for the custom bar must be provided'); } - this._updateNodeIndexList(); - this._updateValueRange(nodes); - this._markAllEdgesAsDirty(); - }; + var ts = util.convert(time, 'Date').valueOf(), + numIds, customTime, customBarId; - Network.prototype._markAllEdgesAsDirty = function() { - for (var edgeId in this.edges) { - this.edges[edgeId].colorDirty = true; + // All bar IDs are kept in 1 array, mixed types + // Bar with ID 0 is the default bar. + if (!this.customBarIds || this.customBarIds.constructor !== Array) { + this.customBarIds = [0]; } - } - /** - * Remove existing nodes. If nodes do not exist, the method will just ignore it. - * @param {Number[] | String[]} ids - * @private - */ - Network.prototype._removeNodes = function(ids) { - var nodes = this.nodes; + // If the ID is not provided, generate one, otherwise just use it + if (id === undefined) { - // remove from selection - for (var i = 0, len = ids.length; i < len; i++) { - if (this.selectionObj.nodes[ids[i]] !== undefined) { - this.nodes[ids[i]].unselect(); - this._removeFromSelection(this.nodes[ids[i]]); - } - } + numIds = this.customBarIds.filter(function (element) { + return util.isNumber(element); + }); - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; - delete nodes[id]; + customBarId = numIds.length > 0 ? Math.max.apply(null, numIds) + 1 : 1; + + } else { + + // Check for duplicates + this.customBarIds.forEach(function (element) { + if (element === id) { + throw new Error('Custom time ID already exists'); + } + }); + + customBarId = id; } + this.customBarIds.push(customBarId); + customTime = new CustomTime(this.body, { + showCustomTime : true, + time : ts, + id : customBarId + }); - this._updateNodeIndexList(); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); - } - this._updateCalculationNodes(); - this._reconnectEdges(); - this._updateSelection(); - this._updateValueRange(nodes); + this.components.push(customTime); + this.redraw(); + + return customBarId; }; /** - * Load edges by reading the data table - * @param {Array | DataSet | DataView} edges The data containing the edges. - * @private - * @private + * Remove previously added custom bar + * @param {int} id ID of the custom bar to be removed + * @return {boolean} True if the bar exists and is removed, false otherwise */ - Network.prototype._setEdges = function(edges) { - var oldEdgesData = this.edgesData; + Core.prototype.removeCustomTime = function (id) { - if (edges instanceof DataSet || edges instanceof DataView) { - this.edgesData = edges; - } - else if (Array.isArray(edges)) { - this.edgesData = new DataSet(); - this.edgesData.add(edges); - } - else if (!edges) { - this.edgesData = new DataSet(); - } - else { - throw new TypeError('Array or DataSet expected'); - } + var me = this; - if (oldEdgesData) { - // unsubscribe from old dataset - util.forEach(this.edgesListeners, function (callback, event) { - oldEdgesData.off(event, callback); - }); - } + this.components.forEach(function (bar, index, components) { + if (bar instanceof CustomTime && bar.options.id === id) { + // Only the lines added by the user will be removed + if (bar.options.id !== 0) { + me.customBarIds.splice(me.customBarIds.indexOf(id), 1); + components.splice(index, 1); + bar.destroy(); + } + } + }); + }; - // remove drawn edges - this.edges = {}; - if (this.edgesData) { - // subscribe to new dataset - var me = this; - util.forEach(this.edgesListeners, function (callback, event) { - me.edgesData.on(event, callback); - }); + /** + * Get the id's of the currently visible items. + * @returns {Array} The ids of the visible items + */ + Core.prototype.getVisibleItems = function() { + return this.itemSet && this.itemSet.getVisibleItems() || []; + }; - // draw all new nodes - var ids = this.edgesData.getIds(); - this._addEdges(ids); - } - this._reconnectEdges(); - }; /** - * Add edges - * @param {Number[] | String[]} ids - * @private + * Clear the Core. By Default, items, groups and options are cleared. + * Example usage: + * + * timeline.clear(); // clear items, groups, and options + * timeline.clear({options: true}); // clear options only + * + * @param {Object} [what] Optionally specify what to clear. By default: + * {items: true, groups: true, options: true} */ - Network.prototype._addEdges = function (ids) { - var edges = this.edges, - edgesData = this.edgesData; + Core.prototype.clear = function(what) { + // clear items + if (!what || what.items) { + this.setItems(null); + } - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; + // clear groups + if (!what || what.groups) { + this.setGroups(null); + } - var oldEdge = edges[id]; - if (oldEdge) { - oldEdge.disconnect(); - } + // clear options of timeline and of each of the components + if (!what || what.options) { + this.components.forEach(function (component) { + component.setOptions(component.defaultOptions); + }); - var data = edgesData.get(id, {"showInternalIds" : true}); - edges[id] = new Edge(data, this, this.constants); - } - this.moving = true; - this._updateValueRange(edges); - this._createBezierNodes(); - this._updateCalculationNodes(); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); + this.setOptions(this.defaultOptions); // this will also do a redraw } }; /** - * Update existing edges, or create them when not yet existing - * @param {Number[] | String[]} ids - * @private + * Set Core window such that it fits all items + * @param {Object} [options] Available options: + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. */ - Network.prototype._updateEdges = function (ids) { - var edges = this.edges, - edgesData = this.edgesData; - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; + Core.prototype.fit = function(options) { + var range = this._getDataRange(); - var data = edgesData.get(id); - var edge = edges[id]; - if (edge) { - // update edge - edge.disconnect(); - edge.setProperties(data, this.constants); - edge.connect(); - } - else { - // create edge - edge = new Edge(data, this, this.constants); - this.edges[id] = edge; - } + // skip range set if there is no start and end date + if (range.start === null && range.end === null) { + return; } - this._createBezierNodes(); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); - } - this.moving = true; - this._updateValueRange(edges); + var animate = (options && options.animate !== undefined) ? options.animate : true; + this.range.setRange(range.start, range.end, animate); }; /** - * Remove existing edges. Non existing ids will be ignored - * @param {Number[] | String[]} ids - * @private + * Calculate the data range of the items and applies a 5% window around it. + * @returns {{start: Date | null, end: Date | null}} + * @protected */ - Network.prototype._removeEdges = function (ids) { - var edges = this.edges; - - // remove from selection - for (var i = 0, len = ids.length; i < len; i++) { - if (this.selectionObj.edges[ids[i]] !== undefined) { - edges[ids[i]].unselect(); - this._removeFromSelection(edges[ids[i]]); - } - } + Core.prototype._getDataRange = function() { + // apply the data range as range + var dataRange = this.getItemRange(); - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; - var edge = edges[id]; - if (edge) { - if (edge.via != null) { - delete this.sectors['support']['nodes'][edge.via.id]; - } - edge.disconnect(); - delete edges[id]; + // add 5% space on both sides + var start = dataRange.min; + var end = dataRange.max; + if (start != null && end != null) { + var interval = (end.valueOf() - start.valueOf()); + if (interval <= 0) { + // prevent an empty interval + interval = 24 * 60 * 60 * 1000; // 1 day } + start = new Date(start.valueOf() - interval * 0.05); + end = new Date(end.valueOf() + interval * 0.05); } - this.moving = true; - this._updateValueRange(edges); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); + return { + start: start, + end: end } - this._updateCalculationNodes(); }; /** - * Reconnect all edges - * @private + * Set the visible window. Both parameters are optional, you can change only + * start or only end. Syntax: + * + * TimeLine.setWindow(start, end) + * TimeLine.setWindow(start, end, options) + * TimeLine.setWindow(range) + * + * Where start and end can be a Date, number, or string, and range is an + * object with properties start and end. + * + * @param {Date | Number | String | Object} [start] Start date of visible window + * @param {Date | Number | String} [end] End date of visible window + * @param {Object} [options] Available options: + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. */ - Network.prototype._reconnectEdges = function() { - var id, - nodes = this.nodes, - edges = this.edges; - for (id in nodes) { - if (nodes.hasOwnProperty(id)) { - nodes[id].edges = []; - nodes[id].dynamicEdges = []; - } + Core.prototype.setWindow = function(start, end, options) { + var animate; + if (arguments.length == 1) { + var range = arguments[0]; + animate = (range.animate !== undefined) ? range.animate : true; + this.range.setRange(range.start, range.end, animate); } - - for (id in edges) { - if (edges.hasOwnProperty(id)) { - var edge = edges[id]; - edge.from = null; - edge.to = null; - edge.connect(); - } + else { + animate = (options && options.animate !== undefined) ? options.animate : true; + this.range.setRange(start, end, animate); } }; /** - * Update the values of all object in the given array according to the current - * value range of the objects in the array. - * @param {Object} obj An object containing a set of Edges or Nodes - * The objects must have a method getValue() and - * setValueRange(min, max). - * @private + * Move the window such that given time is centered on screen. + * @param {Date | Number | String} time + * @param {Object} [options] Available options: + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. */ - Network.prototype._updateValueRange = function(obj) { - var id; + Core.prototype.moveTo = function(time, options) { + var interval = this.range.end - this.range.start; + var t = util.convert(time, 'Date').valueOf(); - // determine the range of the objects - var valueMin = undefined; - var valueMax = undefined; - var valueTotal = 0; - for (id in obj) { - if (obj.hasOwnProperty(id)) { - var value = obj[id].getValue(); - if (value !== undefined) { - valueMin = (valueMin === undefined) ? value : Math.min(value, valueMin); - valueMax = (valueMax === undefined) ? value : Math.max(value, valueMax); - valueTotal += value; - } - } - } + var start = t - interval / 2; + var end = t + interval / 2; + var animate = (options && options.animate !== undefined) ? options.animate : true; - // adjust the range of all objects - if (valueMin !== undefined && valueMax !== undefined) { - for (id in obj) { - if (obj.hasOwnProperty(id)) { - obj[id].setValueRange(valueMin, valueMax, valueTotal); - } - } - } + this.range.setRange(start, end, animate); }; /** - * Redraw the network with the current data - * chart will be resized too. + * Get the visible window + * @return {{start: Date, end: Date}} Visible range */ - Network.prototype.redraw = function() { - this.setSize(this.constants.width, this.constants.height); - this._redraw(); + Core.prototype.getWindow = function() { + var range = this.range.getRange(); + return { + start: new Date(range.start), + end: new Date(range.end) + }; }; /** - * Redraw the network with the current data - * @param hidden | used to get the first estimate of the node sizes. only the nodes are drawn after which they are quickly drawn over. - * @private + * Force a redraw. Can be overridden by implementations of Core */ - Network.prototype._requestRedraw = function(hidden) { - if (this.redrawRequested !== true) { - this.redrawRequested = true; - if (this.requiresTimeout === true) { - window.setTimeout(this._redraw.bind(this, hidden),0); - } - else { - window.requestAnimationFrame(this._redraw.bind(this, hidden, true)); - } - } + Core.prototype.redraw = function() { + this._redraw(); }; - Network.prototype._redraw = function(hidden, requested) { - if (hidden === undefined) { - hidden = false; - } - this.redrawRequested = false; - var ctx = this.frame.canvas.getContext('2d'); + /** + * Redraw for internal use. Redraws all components. See also the public + * method redraw. + * @protected + */ + Core.prototype._redraw = function() { + var resized = false; + var options = this.options; + var props = this.props; + var dom = this.dom; - ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); + if (!dom) return; // when destroyed - // clear the canvas - var w = this.frame.canvas.clientWidth; - var h = this.frame.canvas.clientHeight; - ctx.clearRect(0, 0, w, h); + DateUtil.updateHiddenDates(this.body, this.options.hiddenDates); - // set scaling and translation - ctx.save(); - ctx.translate(this.translation.x, this.translation.y); - ctx.scale(this.scale, this.scale); + // update class names + if (options.orientation == 'top') { + util.addClassName(dom.root, 'top'); + util.removeClassName(dom.root, 'bottom'); + } + else { + util.removeClassName(dom.root, 'top'); + util.addClassName(dom.root, 'bottom'); + } - this.canvasTopLeft = { - "x": this._XconvertDOMtoCanvas(0), - "y": this._YconvertDOMtoCanvas(0) - }; - this.canvasBottomRight = { - "x": this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth), - "y": this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight) - }; + // update root width and height options + dom.root.style.maxHeight = util.option.asSize(options.maxHeight, ''); + dom.root.style.minHeight = util.option.asSize(options.minHeight, ''); + dom.root.style.width = util.option.asSize(options.width, ''); - if (hidden === false) { - this._doInAllSectors("_drawAllSectorNodes", ctx); - if (this.drag.dragging == false || this.drag.dragging === undefined || this.constants.hideEdgesOnDrag == false) { - this._doInAllSectors("_drawEdges", ctx); - } + // calculate border widths + props.border.left = (dom.centerContainer.offsetWidth - dom.centerContainer.clientWidth) / 2; + props.border.right = props.border.left; + props.border.top = (dom.centerContainer.offsetHeight - dom.centerContainer.clientHeight) / 2; + props.border.bottom = props.border.top; + var borderRootHeight= dom.root.offsetHeight - dom.root.clientHeight; + var borderRootWidth = dom.root.offsetWidth - dom.root.clientWidth; + + // workaround for a bug in IE: the clientWidth of an element with + // a height:0px and overflow:hidden is not calculated and always has value 0 + if (dom.centerContainer.clientHeight === 0) { + props.border.left = props.border.top; + props.border.right = props.border.left; + } + if (dom.root.clientHeight === 0) { + borderRootWidth = borderRootHeight; } - if (this.drag.dragging == false || this.drag.dragging === undefined || this.constants.hideNodesOnDrag == false) { - this._doInAllSectors("_drawNodes",ctx,false); + // calculate the heights. If any of the side panels is empty, we set the height to + // minus the border width, such that the border will be invisible + props.center.height = dom.center.offsetHeight; + props.left.height = dom.left.offsetHeight; + props.right.height = dom.right.offsetHeight; + props.top.height = dom.top.clientHeight || -props.border.top; + props.bottom.height = dom.bottom.clientHeight || -props.border.bottom; + + // TODO: compensate borders when any of the panels is empty. + + // apply auto height + // TODO: only calculate autoHeight when needed (else we cause an extra reflow/repaint of the DOM) + var contentHeight = Math.max(props.left.height, props.center.height, props.right.height); + var autoHeight = props.top.height + contentHeight + props.bottom.height + + borderRootHeight + props.border.top + props.border.bottom; + dom.root.style.height = util.option.asSize(options.height, autoHeight + 'px'); + + // calculate heights of the content panels + props.root.height = dom.root.offsetHeight; + props.background.height = props.root.height - borderRootHeight; + var containerHeight = props.root.height - props.top.height - props.bottom.height - + borderRootHeight; + props.centerContainer.height = containerHeight; + props.leftContainer.height = containerHeight; + props.rightContainer.height = props.leftContainer.height; + + // calculate the widths of the panels + props.root.width = dom.root.offsetWidth; + props.background.width = props.root.width - borderRootWidth; + props.left.width = dom.leftContainer.clientWidth || -props.border.left; + props.leftContainer.width = props.left.width; + props.right.width = dom.rightContainer.clientWidth || -props.border.right; + props.rightContainer.width = props.right.width; + var centerWidth = props.root.width - props.left.width - props.right.width - borderRootWidth; + props.center.width = centerWidth; + props.centerContainer.width = centerWidth; + props.top.width = centerWidth; + props.bottom.width = centerWidth; + + // resize the panels + dom.background.style.height = props.background.height + 'px'; + dom.backgroundVertical.style.height = props.background.height + 'px'; + dom.backgroundHorizontal.style.height = props.centerContainer.height + 'px'; + dom.centerContainer.style.height = props.centerContainer.height + 'px'; + dom.leftContainer.style.height = props.leftContainer.height + 'px'; + dom.rightContainer.style.height = props.rightContainer.height + 'px'; + + dom.background.style.width = props.background.width + 'px'; + dom.backgroundVertical.style.width = props.centerContainer.width + 'px'; + dom.backgroundHorizontal.style.width = props.background.width + 'px'; + dom.centerContainer.style.width = props.center.width + 'px'; + dom.top.style.width = props.top.width + 'px'; + dom.bottom.style.width = props.bottom.width + 'px'; + + // reposition the panels + dom.background.style.left = '0'; + dom.background.style.top = '0'; + dom.backgroundVertical.style.left = (props.left.width + props.border.left) + 'px'; + dom.backgroundVertical.style.top = '0'; + dom.backgroundHorizontal.style.left = '0'; + dom.backgroundHorizontal.style.top = props.top.height + 'px'; + dom.centerContainer.style.left = props.left.width + 'px'; + dom.centerContainer.style.top = props.top.height + 'px'; + dom.leftContainer.style.left = '0'; + dom.leftContainer.style.top = props.top.height + 'px'; + dom.rightContainer.style.left = (props.left.width + props.center.width) + 'px'; + dom.rightContainer.style.top = props.top.height + 'px'; + dom.top.style.left = props.left.width + 'px'; + dom.top.style.top = '0'; + dom.bottom.style.left = props.left.width + 'px'; + dom.bottom.style.top = (props.top.height + props.centerContainer.height) + 'px'; + + // update the scrollTop, feasible range for the offset can be changed + // when the height of the Core or of the contents of the center changed + this._updateScrollTop(); + + // reposition the scrollable contents + var offset = this.props.scrollTop; + if (options.orientation == 'bottom') { + offset += Math.max(this.props.centerContainer.height - this.props.center.height - + this.props.border.top - this.props.border.bottom, 0); } + dom.center.style.left = '0'; + dom.center.style.top = offset + 'px'; + dom.left.style.left = '0'; + dom.left.style.top = offset + 'px'; + dom.right.style.left = '0'; + dom.right.style.top = offset + 'px'; - if (hidden === false) { - if (this.controlNodesActive == true) { - this._doInAllSectors("_drawControlNodes", ctx); + // show shadows when vertical scrolling is available + var visibilityTop = this.props.scrollTop == 0 ? 'hidden' : ''; + var visibilityBottom = this.props.scrollTop == this.props.scrollTopMin ? 'hidden' : ''; + dom.shadowTop.style.visibility = visibilityTop; + dom.shadowBottom.style.visibility = visibilityBottom; + dom.shadowTopLeft.style.visibility = visibilityTop; + dom.shadowBottomLeft.style.visibility = visibilityBottom; + dom.shadowTopRight.style.visibility = visibilityTop; + dom.shadowBottomRight.style.visibility = visibilityBottom; + + // redraw all components + this.components.forEach(function (component) { + resized = component.redraw() || resized; + }); + if (resized) { + // keep repainting until all sizes are settled + var MAX_REDRAWS = 3; // maximum number of consecutive redraws + if (this.redrawCount < MAX_REDRAWS) { + this.redrawCount++; + this._redraw(); } + else { + console.log('WARNING: infinite loop in redraw?'); + } + this.redrawCount = 0; } - // this._doInSupportSector("_drawNodes",ctx,true); - // this._drawTree(ctx,"#F00F0F"); - - // restore original scaling and translation - ctx.restore(); + this.emit("finishedRedraw"); + }; - if (hidden === true) { - ctx.clearRect(0, 0, w, h); - } - } + // TODO: deprecated since version 1.1.0, remove some day + Core.prototype.repaint = function () { + throw new Error('Function repaint is deprecated. Use redraw instead.'); + }; /** - * Set the translation of the network - * @param {Number} offsetX Horizontal offset - * @param {Number} offsetY Vertical offset - * @private + * Set a current time. This can be used for example to ensure that a client's + * time is synchronized with a shared server time. + * Only applicable when option `showCurrentTime` is true. + * @param {Date | String | Number} time A Date, unix timestamp, or + * ISO date string. */ - Network.prototype._setTranslation = function(offsetX, offsetY) { - if (this.translation === undefined) { - this.translation = { - x: 0, - y: 0 - }; + Core.prototype.setCurrentTime = function(time) { + if (!this.currentTime) { + throw new Error('Option showCurrentTime must be true'); } - if (offsetX !== undefined) { - this.translation.x = offsetX; - } - if (offsetY !== undefined) { - this.translation.y = offsetY; + this.currentTime.setCurrentTime(time); + }; + + /** + * Get the current time. + * Only applicable when option `showCurrentTime` is true. + * @return {Date} Returns the current time. + */ + Core.prototype.getCurrentTime = function() { + if (!this.currentTime) { + throw new Error('Option showCurrentTime must be true'); } - this.emit('viewChanged'); + return this.currentTime.getCurrentTime(); }; /** - * Get the translation of the network - * @return {Object} translation An object with parameters x and y, both a number + * Convert a position on screen (pixels) to a datetime + * @param {int} x Position on the screen in pixels + * @return {Date} time The datetime the corresponds with given position x * @private */ - Network.prototype._getTranslation = function() { - return { - x: this.translation.x, - y: this.translation.y - }; + // TODO: move this function to Range + Core.prototype._toTime = function(x) { + return DateUtil.toTime(this, x, this.props.center.width); }; /** - * Scale the network - * @param {Number} scale Scaling factor 1.0 is unscaled + * Convert a position on the global screen (pixels) to a datetime + * @param {int} x Position on the screen in pixels + * @return {Date} time The datetime the corresponds with given position x * @private */ - Network.prototype._setScale = function(scale) { - this.scale = scale; + // TODO: move this function to Range + Core.prototype._toGlobalTime = function(x) { + return DateUtil.toTime(this, x, this.props.root.width); + //var conversion = this.range.conversion(this.props.root.width); + //return new Date(x / conversion.scale + conversion.offset); }; /** - * Get the current scale of the network - * @return {Number} scale Scaling factor 1.0 is unscaled + * Convert a datetime (Date object) into a position on the screen + * @param {Date} time A date + * @return {int} x The position on the screen in pixels which corresponds + * with the given date. * @private */ - Network.prototype._getScale = function() { - return this.scale; + // TODO: move this function to Range + Core.prototype._toScreen = function(time) { + return DateUtil.toScreen(this, time, this.props.center.width); }; + + /** - * Convert the X coordinate in DOM-space (coordinate point in browser relative to the container div) to - * the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon) - * @param {number} x - * @returns {number} + * Convert a datetime (Date object) into a position on the root + * This is used to get the pixel density estimate for the screen, not the center panel + * @param {Date} time A date + * @return {int} x The position on root in pixels which corresponds + * with the given date. * @private */ - Network.prototype._XconvertDOMtoCanvas = function(x) { - return (x - this.translation.x) / this.scale; + // TODO: move this function to Range + Core.prototype._toGlobalScreen = function(time) { + return DateUtil.toScreen(this, time, this.props.root.width); + //var conversion = this.range.conversion(this.props.root.width); + //return (time.valueOf() - conversion.offset) * conversion.scale; }; + /** - * Convert the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon) to - * the X coordinate in DOM-space (coordinate point in browser relative to the container div) - * @param {number} x - * @returns {number} + * Initialize watching when option autoResize is true * @private */ - Network.prototype._XconvertCanvasToDOM = function(x) { - return x * this.scale + this.translation.x; + Core.prototype._initAutoResize = function () { + if (this.options.autoResize == true) { + this._startAutoResize(); + } + else { + this._stopAutoResize(); + } }; /** - * Convert the Y coordinate in DOM-space (coordinate point in browser relative to the container div) to - * the Y coordinate in canvas-space (the simulation sandbox, which the camera looks upon) - * @param {number} y - * @returns {number} + * Watch for changes in the size of the container. On resize, the Panel will + * automatically redraw itself. * @private */ - Network.prototype._YconvertDOMtoCanvas = function(y) { - return (y - this.translation.y) / this.scale; + Core.prototype._startAutoResize = function () { + var me = this; + + this._stopAutoResize(); + + this._onResize = function() { + if (me.options.autoResize != true) { + // stop watching when the option autoResize is changed to false + me._stopAutoResize(); + return; + } + + if (me.dom.root) { + // check whether the frame is resized + // Note: we compare offsetWidth here, not clientWidth. For some reason, + // IE does not restore the clientWidth from 0 to the actual width after + // changing the timeline's container display style from none to visible + if ((me.dom.root.offsetWidth != me.props.lastWidth) || + (me.dom.root.offsetHeight != me.props.lastHeight)) { + me.props.lastWidth = me.dom.root.offsetWidth; + me.props.lastHeight = me.dom.root.offsetHeight; + + me.emit('change'); + } + } + }; + + // add event listener to window resize + util.addEventListener(window, 'resize', this._onResize); + + this.watchTimer = setInterval(this._onResize, 1000); }; /** - * Convert the Y coordinate in canvas-space (the simulation sandbox, which the camera looks upon) to - * the Y coordinate in DOM-space (coordinate point in browser relative to the container div) - * @param {number} y - * @returns {number} + * Stop watching for a resize of the frame. * @private */ - Network.prototype._YconvertCanvasToDOM = function(y) { - return y * this.scale + this.translation.y ; + Core.prototype._stopAutoResize = function () { + if (this.watchTimer) { + clearInterval(this.watchTimer); + this.watchTimer = undefined; + } + + // remove event listener on window.resize + util.removeEventListener(window, 'resize', this._onResize); + this._onResize = null; }; + /** + * Start moving the timeline vertically + * @param {Event} event + * @private + */ + Core.prototype._onTouch = function (event) { + this.touch.allowDragging = true; + }; /** - * - * @param {object} pos = {x: number, y: number} - * @returns {{x: number, y: number}} - * @constructor + * Start moving the timeline vertically + * @param {Event} event + * @private */ - Network.prototype.canvasToDOM = function (pos) { - return {x: this._XconvertCanvasToDOM(pos.x), y: this._YconvertCanvasToDOM(pos.y)}; + Core.prototype._onPinch = function (event) { + this.touch.allowDragging = false; }; /** - * - * @param {object} pos = {x: number, y: number} - * @returns {{x: number, y: number}} - * @constructor + * Start moving the timeline vertically + * @param {Event} event + * @private */ - Network.prototype.DOMtoCanvas = function (pos) { - return {x: this._XconvertDOMtoCanvas(pos.x), y: this._YconvertDOMtoCanvas(pos.y)}; + Core.prototype._onDragStart = function (event) { + this.touch.initialScrollTop = this.props.scrollTop; }; /** - * Redraw all nodes - * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); - * @param {CanvasRenderingContext2D} ctx - * @param {Boolean} [alwaysShow] + * Move the timeline vertically + * @param {Event} event * @private */ - Network.prototype._drawNodes = function(ctx,alwaysShow) { - if (alwaysShow === undefined) { - alwaysShow = false; - } + Core.prototype._onDrag = function (event) { + // refuse to drag when we where pinching to prevent the timeline make a jump + // when releasing the fingers in opposite order from the touch screen + if (!this.touch.allowDragging) return; - // first draw the unselected nodes - var nodes = this.nodes; - var selected = []; + var delta = event.gesture.deltaY; - for (var id in nodes) { - if (nodes.hasOwnProperty(id)) { - nodes[id].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight); - if (nodes[id].isSelected()) { - selected.push(id); - } - else { - if (nodes[id].inArea() || alwaysShow) { - nodes[id].draw(ctx); - } - } - } - } + var oldScrollTop = this._getScrollTop(); + var newScrollTop = this._setScrollTop(this.touch.initialScrollTop + delta); - // draw the selected nodes on top - for (var s = 0, sMax = selected.length; s < sMax; s++) { - if (nodes[selected[s]].inArea() || alwaysShow) { - nodes[selected[s]].draw(ctx); - } + + if (newScrollTop != oldScrollTop) { + this._redraw(); // TODO: this causes two redraws when dragging, the other is triggered by rangechange already + this.emit("verticalDrag"); } }; /** - * Redraw all edges - * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); - * @param {CanvasRenderingContext2D} ctx + * Apply a scrollTop + * @param {Number} scrollTop + * @returns {Number} scrollTop Returns the applied scrollTop * @private */ - Network.prototype._drawEdges = function(ctx) { - var edges = this.edges; - for (var id in edges) { - if (edges.hasOwnProperty(id)) { - var edge = edges[id]; - edge.setScale(this.scale); - if (edge.connected) { - edges[id].draw(ctx); - } - } - } + Core.prototype._setScrollTop = function (scrollTop) { + this.props.scrollTop = scrollTop; + this._updateScrollTop(); + return this.props.scrollTop; }; /** - * Redraw all edges - * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); - * @param {CanvasRenderingContext2D} ctx + * Update the current scrollTop when the height of the containers has been changed + * @returns {Number} scrollTop Returns the applied scrollTop * @private */ - Network.prototype._drawControlNodes = function(ctx) { - var edges = this.edges; - for (var id in edges) { - if (edges.hasOwnProperty(id)) { - edges[id]._drawControlNodes(ctx); + Core.prototype._updateScrollTop = function () { + // recalculate the scrollTopMin + var scrollTopMin = Math.min(this.props.centerContainer.height - this.props.center.height, 0); // is negative or zero + if (scrollTopMin != this.props.scrollTopMin) { + // in case of bottom orientation, change the scrollTop such that the contents + // do not move relative to the time axis at the bottom + if (this.options.orientation == 'bottom') { + this.props.scrollTop += (scrollTopMin - this.props.scrollTopMin); } + this.props.scrollTopMin = scrollTopMin; } + + // limit the scrollTop to the feasible scroll range + if (this.props.scrollTop > 0) this.props.scrollTop = 0; + if (this.props.scrollTop < scrollTopMin) this.props.scrollTop = scrollTopMin; + + return this.props.scrollTop; }; /** - * Find a stable position for all nodes + * Get the current scrollTop + * @returns {number} scrollTop * @private */ - Network.prototype._stabilize = function() { - if (this.constants.freezeForStabilization == true) { - this._freezeDefinedNodes(); - } - - // find stable position - var count = 0; - while (this.moving && count < this.constants.stabilizationIterations) { - this._physicsTick(); - count++; - } + Core.prototype._getScrollTop = function () { + return this.props.scrollTop; + }; + module.exports = Core; - if (this.constants.zoomExtentOnStabilize == true) { - this.zoomExtent({duration:0}, false, true); - } - if (this.constants.freezeForStabilization == true) { - this._restoreFrozenNodes(); - } +/***/ }, +/* 47 */ +/***/ function(module, exports, __webpack_require__) { - this.emit("stabilizationIterationsDone"); - }; + var Hammer = __webpack_require__(45); /** - * When initializing and stabilizing, we can freeze nodes with a predefined position. This greatly speeds up stabilization - * because only the supportnodes for the smoothCurves have to settle. - * - * @private - */ - Network.prototype._freezeDefinedNodes = function() { - var nodes = this.nodes; - for (var id in nodes) { - if (nodes.hasOwnProperty(id)) { - if (nodes[id].x != null && nodes[id].y != null) { - nodes[id].fixedData.x = nodes[id].xFixed; - nodes[id].fixedData.y = nodes[id].yFixed; - nodes[id].xFixed = true; - nodes[id].yFixed = true; - } - } + * Fake a hammer.js gesture. Event can be a ScrollEvent or MouseMoveEvent + * @param {Element} element + * @param {Event} event + */ + exports.fakeGesture = function(element, event) { + var eventType = null; + + // for hammer.js 1.0.5 + // var gesture = Hammer.event.collectEventData(this, eventType, event); + + // for hammer.js 1.0.6+ + var touches = Hammer.event.getTouchList(event, eventType); + var gesture = Hammer.event.collectEventData(this, eventType, touches, event); + + // on IE in standards mode, no touches are recognized by hammer.js, + // resulting in NaN values for center.pageX and center.pageY + if (isNaN(gesture.center.pageX)) { + gesture.center.pageX = event.pageX; } + if (isNaN(gesture.center.pageY)) { + gesture.center.pageY = event.pageY; + } + + return gesture; }; - /** - * Unfreezes the nodes that have been frozen by _freezeDefinedNodes. - * - * @private - */ - Network.prototype._restoreFrozenNodes = function() { - var nodes = this.nodes; - for (var id in nodes) { - if (nodes.hasOwnProperty(id)) { - if (nodes[id].fixedData.x != null) { - nodes[id].xFixed = nodes[id].fixedData.x; - nodes[id].yFixed = nodes[id].fixedData.y; - } - } - } + +/***/ }, +/* 48 */ +/***/ function(module, exports, __webpack_require__) { + + // English + exports['en'] = { + current: 'current', + time: 'time' + }; + exports['en_EN'] = exports['en']; + exports['en_US'] = exports['en']; + + // Dutch + exports['nl'] = { + custom: 'aangepaste', + time: 'tijd' }; + exports['nl_NL'] = exports['nl']; + exports['nl_BE'] = exports['nl']; + +/***/ }, +/* 49 */ +/***/ function(module, exports, __webpack_require__) { /** - * Check if any of the nodes is still moving - * @param {number} vmin the minimum velocity considered as 'moving' - * @return {boolean} true if moving, false if non of the nodes is moving - * @private + * Created by Alex on 11/11/2014. */ - Network.prototype._isMoving = function(vmin) { - var nodes = this.nodes; - for (var id in nodes) { - if (nodes[id] !== undefined) { - if (nodes[id].isMoving(vmin) == true) { - return true; - } - } + var DOMutil = __webpack_require__(2); + var Points = __webpack_require__(51); + + function Line(groupId, options) { + this.groupId = groupId; + this.options = options; + } + + Line.prototype.getYRange = function(groupData) { + var yMin = groupData[0].y; + var yMax = groupData[0].y; + for (var j = 0; j < groupData.length; j++) { + yMin = yMin > groupData[j].y ? groupData[j].y : yMin; + yMax = yMax < groupData[j].y ? groupData[j].y : yMax; } - return false; + return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; }; /** - * /** - * Perform one discrete step for all nodes + * draw a line graph * - * @private + * @param dataset + * @param group */ - Network.prototype._discreteStepNodes = function() { - var interval = this.physicsDiscreteStepsize; - var nodes = this.nodes; - var nodeId; - var nodesPresent = false; + Line.prototype.draw = function (dataset, group, framework) { + if (dataset != null) { + if (dataset.length > 0) { + var path, d; + var svgHeight = Number(framework.svg.style.height.replace('px','')); + path = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); + path.setAttributeNS(null, "class", group.className); + if(group.style !== undefined) { + path.setAttributeNS(null, "style", group.style); + } - if (this.constants.maxVelocity > 0) { - for (nodeId in nodes) { - if (nodes.hasOwnProperty(nodeId)) { - nodes[nodeId].discreteStepLimited(interval, this.constants.maxVelocity); - nodesPresent = true; + // construct path from dataset + if (group.options.catmullRom.enabled == true) { + d = Line._catmullRom(dataset, group); } - } - } - else { - for (nodeId in nodes) { - if (nodes.hasOwnProperty(nodeId)) { - nodes[nodeId].discreteStep(interval); - nodesPresent = true; + else { + d = Line._linear(dataset); } - } - } - if (nodesPresent == true) { - var vminCorrected = this.constants.minVelocity / Math.max(this.scale,0.05); - if (vminCorrected > 0.5*this.constants.maxVelocity) { - return true; - } - else { - return this._isMoving(vminCorrected); + // append with points for fill and finalize the path + if (group.options.shaded.enabled == true) { + var fillPath = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); + var dFill; + if (group.options.shaded.orientation == 'top') { + dFill = 'M' + dataset[0].x + ',' + 0 + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + 0; + } + else { + dFill = 'M' + dataset[0].x + ',' + svgHeight + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + svgHeight; + } + fillPath.setAttributeNS(null, "class", group.className + " fill"); + if(group.options.shaded.style !== undefined) { + fillPath.setAttributeNS(null, "style", group.options.shaded.style); + } + fillPath.setAttributeNS(null, "d", dFill); + } + // copy properties to path for drawing. + path.setAttributeNS(null, 'd', 'M' + d); + + // draw points + if (group.options.drawPoints.enabled == true) { + Points.draw(dataset, group, framework); + } } } - return false; }; - Network.prototype._revertPhysicsState = function() { - var nodes = this.nodes; - for (var nodeId in nodes) { - if (nodes.hasOwnProperty(nodeId)) { - nodes[nodeId].revertPosition(); - } - } - } - - Network.prototype._revertPhysicsTick = function() { - this._doInAllActiveSectors("_revertPhysicsState"); - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this._doInSupportSector("_revertPhysicsState"); - } - } /** - * A single simulation step (or "tick") in the physics simulation - * + * This uses an uniform parametrization of the CatmullRom algorithm: + * 'On the Parameterization of Catmull-Rom Curves' by Cem Yuksel et al. + * @param data + * @returns {string} * @private */ - Network.prototype._physicsTick = function() { - if (!this.freezeSimulationEnabled) { - if (this.moving == true) { - var mainMovingStatus = false; - var supportMovingStatus = false; + Line._catmullRomUniform = function(data) { + // catmull rom + var p0, p1, p2, p3, bp1, bp2; + var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; + var normalization = 1/6; + var length = data.length; + for (var i = 0; i < length - 1; i++) { - this._doInAllActiveSectors("_initializeForceCalculation"); - var mainMoving = this._doInAllActiveSectors("_discreteStepNodes"); - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - supportMovingStatus = this._doInSupportSector("_discreteStepNodes"); - } + p0 = (i == 0) ? data[0] : data[i-1]; + p1 = data[i]; + p2 = data[i+1]; + p3 = (i + 2 < length) ? data[i+2] : p2; - // gather movement data from all sectors, if one moves, we are NOT stabilzied - for (var i = 0; i < mainMoving.length; i++) { - mainMovingStatus = mainMoving[i] || mainMovingStatus; - } - // determine if the network has stabilzied - this.moving = mainMovingStatus || supportMovingStatus; - if (this.moving == false) { - this._revertPhysicsTick(); - } - else { - // this is here to ensure that there is no start event when the network is already stable. - if (this.startedStabilization == false) { - this.emit("startStabilization"); - this.startedStabilization = true; - } - } + // Catmull-Rom to Cubic Bezier conversion matrix + // 0 1 0 0 + // -1/6 1 1/6 0 + // 0 1/6 1 -1/6 + // 0 0 1 0 - this.stabilizationIterations++; - } + // bp0 = { x: p1.x, y: p1.y }; + bp1 = { x: ((-p0.x + 6*p1.x + p2.x) *normalization), y: ((-p0.y + 6*p1.y + p2.y) *normalization)}; + bp2 = { x: (( p1.x + 6*p2.x - p3.x) *normalization), y: (( p1.y + 6*p2.y - p3.y) *normalization)}; + // bp0 = { x: p2.x, y: p2.y }; + + d += 'C' + + bp1.x + ',' + + bp1.y + ' ' + + bp2.x + ',' + + bp2.y + ' ' + + p2.x + ',' + + p2.y + ' '; } - }; + return d; + }; /** - * This function runs one step of the animation. It calls an x amount of physics ticks and one render tick. - * It reschedules itself at the beginning of the function + * This uses either the chordal or centripetal parameterization of the catmull-rom algorithm. + * By default, the centripetal parameterization is used because this gives the nicest results. + * These parameterizations are relatively heavy because the distance between 4 points have to be calculated. * + * One optimization can be used to reuse distances since this is a sliding window approach. + * @param data + * @param group + * @returns {string} * @private */ - Network.prototype._animationStep = function() { - // reset the timer so a new scheduled animation step can be set - this.timer = undefined; - - if (this.requiresTimeout == true) { - // this schedules a new animation step - this.start(); + Line._catmullRom = function(data, group) { + var alpha = group.options.catmullRom.alpha; + if (alpha == 0 || alpha === undefined) { + return this._catmullRomUniform(data); } + else { + var p0, p1, p2, p3, bp1, bp2, d1,d2,d3, A, B, N, M; + var d3powA, d2powA, d3pow2A, d2pow2A, d1pow2A, d1powA; + var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; + var length = data.length; + for (var i = 0; i < length - 1; i++) { - // handle the keyboad movement - this._handleNavigation(); + p0 = (i == 0) ? data[0] : data[i-1]; + p1 = data[i]; + p2 = data[i+1]; + p3 = (i + 2 < length) ? data[i+2] : p2; - // check if the physics have settled - if (this.moving == true) { - var startTime = Date.now(); - this._physicsTick(); - var physicsTime = Date.now() - startTime; + d1 = Math.sqrt(Math.pow(p0.x - p1.x,2) + Math.pow(p0.y - p1.y,2)); + d2 = Math.sqrt(Math.pow(p1.x - p2.x,2) + Math.pow(p1.y - p2.y,2)); + d3 = Math.sqrt(Math.pow(p2.x - p3.x,2) + Math.pow(p2.y - p3.y,2)); - // run double speed if it is a little graph - if ((this.renderTimestep - this.renderTime > 2 * physicsTime || this.runDoubleSpeed == true) && this.moving == true) { - this._physicsTick(); + // Catmull-Rom to Cubic Bezier conversion matrix - // this makes sure there is no jitter. The decision is taken once to run it at double speed. - if (this.renderTime != 0) { - this.runDoubleSpeed = true - } - } - } + // A = 2d1^2a + 3d1^a * d2^a + d3^2a + // B = 2d3^2a + 3d3^a * d2^a + d2^2a - var renderStartTime = Date.now(); - this._redraw(); - this.renderTime = Date.now() - renderStartTime; + // [ 0 1 0 0 ] + // [ -d2^2a /N A/N d1^2a /N 0 ] + // [ 0 d3^2a /M B/M -d2^2a /M ] + // [ 0 0 1 0 ] - if (this.requiresTimeout == false) { - // this schedules a new animation step - this.start(); + d3powA = Math.pow(d3, alpha); + d3pow2A = Math.pow(d3,2*alpha); + d2powA = Math.pow(d2, alpha); + d2pow2A = Math.pow(d2,2*alpha); + d1powA = Math.pow(d1, alpha); + d1pow2A = Math.pow(d1,2*alpha); + + A = 2*d1pow2A + 3*d1powA * d2powA + d2pow2A; + B = 2*d3pow2A + 3*d3powA * d2powA + d2pow2A; + N = 3*d1powA * (d1powA + d2powA); + if (N > 0) {N = 1 / N;} + M = 3*d3powA * (d3powA + d2powA); + if (M > 0) {M = 1 / M;} + + bp1 = { x: ((-d2pow2A * p0.x + A*p1.x + d1pow2A * p2.x) * N), + y: ((-d2pow2A * p0.y + A*p1.y + d1pow2A * p2.y) * N)}; + + bp2 = { x: (( d3pow2A * p1.x + B*p2.x - d2pow2A * p3.x) * M), + y: (( d3pow2A * p1.y + B*p2.y - d2pow2A * p3.y) * M)}; + + if (bp1.x == 0 && bp1.y == 0) {bp1 = p1;} + if (bp2.x == 0 && bp2.y == 0) {bp2 = p2;} + d += 'C' + + bp1.x + ',' + + bp1.y + ' ' + + bp2.x + ',' + + bp2.y + ' ' + + p2.x + ',' + + p2.y + ' '; + } + + return d; } }; - if (typeof window !== 'undefined') { - window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || - window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; - } - /** - * Schedule a animation step with the refreshrate interval. + * this generates the SVG path for a linear drawing between datapoints. + * @param data + * @returns {string} + * @private */ - Network.prototype.start = function() { - if (this.freezeSimulationEnabled == true) { - this.moving = false; - } - if (this.moving == true || this.xIncrement != 0 || this.yIncrement != 0 || this.zoomIncrement != 0 || this.animating == true) { - if (!this.timer) { - if (this.requiresTimeout == true) { - this.timer = window.setTimeout(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function - } - else { - this.timer = window.requestAnimationFrame(this._animationStep.bind(this)); // wait this.renderTimeStep milliseconds and perform the animation step function - } - } - } - else { - this._requestRedraw(); - // this check is to ensure that the network does not emit these events if it was already stabilized and setOptions is called (setting moving to true and calling start()) - if (this.stabilizationIterations > 1) { - // trigger the "stabilized" event. - // The event is triggered on the next tick, to prevent the case that - // it is fired while initializing the Network, in which case you would not - // be able to catch it - var me = this; - var params = { - iterations: me.stabilizationIterations - }; - this.stabilizationIterations = 0; - this.startedStabilization = false; - setTimeout(function () { - me.emit("stabilized", params); - }, 0); + Line._linear = function(data) { + // linear + var d = ''; + for (var i = 0; i < data.length; i++) { + if (i == 0) { + d += data[i].x + ',' + data[i].y; } else { - this.stabilizationIterations = 0; + d += ' ' + data[i].x + ',' + data[i].y; } } + return d; }; + module.exports = Line; - /** - * Move the network according to the keyboard presses. - * - * @private - */ - Network.prototype._handleNavigation = function() { - if (this.xIncrement != 0 || this.yIncrement != 0) { - var translation = this._getTranslation(); - this._setTranslation(translation.x+this.xIncrement, translation.y+this.yIncrement); - } - if (this.zoomIncrement != 0) { - var center = { - x: this.frame.canvas.clientWidth / 2, - y: this.frame.canvas.clientHeight / 2 - }; - this._zoom(this.scale*(1 + this.zoomIncrement), center); - } - }; +/***/ }, +/* 50 */ +/***/ function(module, exports, __webpack_require__) { /** - * Freeze the _animationStep + * Created by Alex on 11/11/2014. */ - Network.prototype.freezeSimulation = function(freeze) { - if (freeze == true) { - this.freezeSimulationEnabled = true; - this.moving = false; + var DOMutil = __webpack_require__(2); + var Points = __webpack_require__(51); + + function Bargraph(groupId, options) { + this.groupId = groupId; + this.options = options; + } + + Bargraph.prototype.getYRange = function(groupData) { + if (this.options.barChart.handleOverlap != 'stack') { + var yMin = groupData[0].y; + var yMax = groupData[0].y; + for (var j = 0; j < groupData.length; j++) { + yMin = yMin > groupData[j].y ? groupData[j].y : yMin; + yMax = yMax < groupData[j].y ? groupData[j].y : yMax; + } + return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; } else { - this.freezeSimulationEnabled = false; - this.moving = true; - this.start(); + var barCombinedData = []; + for (var j = 0; j < groupData.length; j++) { + barCombinedData.push({ + x: groupData[j].x, + y: groupData[j].y, + groupId: this.groupId + }); + } + return barCombinedData; } }; + /** - * This function cleans the support nodes if they are not needed and adds them when they are. + * draw a bar graph * - * @param {boolean} [disableStart] - * @private + * @param groupIds + * @param processedGroupData */ - Network.prototype._configureSmoothCurves = function(disableStart) { - if (disableStart === undefined) { - disableStart = true; - } - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this._createBezierNodes(); - // cleanup unused support nodes - for (var nodeId in this.sectors['support']['nodes']) { - if (this.sectors['support']['nodes'].hasOwnProperty(nodeId)) { - if (this.edges[this.sectors['support']['nodes'][nodeId].parentEdgeId] === undefined) { - delete this.sectors['support']['nodes'][nodeId]; + Bargraph.draw = function (groupIds, processedGroupData, framework) { + var combinedData = []; + var intersections = {}; + var coreDistance; + var key, drawData; + var group; + var i,j; + var barPoints = 0; + + // combine all barchart data + for (i = 0; i < groupIds.length; i++) { + group = framework.groups[groupIds[i]]; + if (group.options.style == 'bar') { + if (group.visible == true && (framework.options.groups.visibility[groupIds[i]] === undefined || framework.options.groups.visibility[groupIds[i]] == true)) { + for (j = 0; j < processedGroupData[groupIds[i]].length; j++) { + combinedData.push({ + x: processedGroupData[groupIds[i]][j].x, + y: processedGroupData[groupIds[i]][j].y, + groupId: groupIds[i] + }); + barPoints += 1; } } } } - else { - // delete the support nodes - this.sectors['support']['nodes'] = {}; - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - this.edges[edgeId].via = null; - } - } - } + if (barPoints == 0) {return;} - this._updateCalculationNodes(); - if (!disableStart) { - this.moving = true; - this.start(); - } - }; - + // sort by time and by group + combinedData.sort(function (a, b) { + if (a.x == b.x) { + return a.groupId - b.groupId; + } else { + return a.x - b.x; + } + }); - /** - * Bezier curves require an anchor point to calculate the smooth flow. These points are nodes. These nodes are invisible but - * are used for the force calculation. - * - * @private - */ - Network.prototype._createBezierNodes = function() { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - var edge = this.edges[edgeId]; - if (edge.via == null) { - var nodeId = "edgeId:".concat(edge.id); - this.sectors['support']['nodes'][nodeId] = new Node( - {id:nodeId, - mass:1, - shape:'circle', - image:"", - internalMultiplier:1 - },{},{},this.constants); - edge.via = this.sectors['support']['nodes'][nodeId]; - edge.via.parentEdgeId = edge.id; - edge.positionBezierNode(); - } + // get intersections + Bargraph._getDataIntersections(intersections, combinedData); + + // plot barchart + for (i = 0; i < combinedData.length; i++) { + group = framework.groups[combinedData[i].groupId]; + var minWidth = 0.1 * group.options.barChart.width; + + key = combinedData[i].x; + var heightOffset = 0; + if (intersections[key] === undefined) { + if (i+1 < combinedData.length) {coreDistance = Math.abs(combinedData[i+1].x - key);} + if (i > 0) {coreDistance = Math.min(coreDistance,Math.abs(combinedData[i-1].x - key));} + drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth); + } + else { + var nextKey = i + (intersections[key].amount - intersections[key].resolved); + var prevKey = i - (intersections[key].resolved + 1); + if (nextKey < combinedData.length) {coreDistance = Math.abs(combinedData[nextKey].x - key);} + if (prevKey > 0) {coreDistance = Math.min(coreDistance,Math.abs(combinedData[prevKey].x - key));} + drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth); + intersections[key].resolved += 1; + + if (group.options.barChart.handleOverlap == 'stack') { + heightOffset = intersections[key].accumulated; + intersections[key].accumulated += group.zeroPosition - combinedData[i].y; + } + else if (group.options.barChart.handleOverlap == 'sideBySide') { + drawData.width = drawData.width / intersections[key].amount; + drawData.offset += (intersections[key].resolved) * drawData.width - (0.5*drawData.width * (intersections[key].amount+1)); + if (group.options.barChart.align == 'left') {drawData.offset -= 0.5*drawData.width;} + else if (group.options.barChart.align == 'right') {drawData.offset += 0.5*drawData.width;} } } + DOMutil.drawBar(combinedData[i].x + drawData.offset, combinedData[i].y - heightOffset, drawData.width, group.zeroPosition - combinedData[i].y, group.className + ' bar', framework.svgElements, framework.svg); + // draw points + if (group.options.drawPoints.enabled == true) { + DOMutil.drawPoint(combinedData[i].x + drawData.offset, combinedData[i].y, group, framework.svgElements, framework.svg); + } } }; + /** - * load the functions that load the mixins into the prototype. - * + * Fill the intersections object with counters of how many datapoints share the same x coordinates + * @param intersections + * @param combinedData * @private */ - Network.prototype._initializeMixinLoaders = function () { - for (var mixin in MixinLoader) { - if (MixinLoader.hasOwnProperty(mixin)) { - Network.prototype[mixin] = MixinLoader[mixin]; + Bargraph._getDataIntersections = function (intersections, combinedData) { + // get intersections + var coreDistance; + for (var i = 0; i < combinedData.length; i++) { + if (i + 1 < combinedData.length) { + coreDistance = Math.abs(combinedData[i + 1].x - combinedData[i].x); + } + if (i > 0) { + coreDistance = Math.min(coreDistance, Math.abs(combinedData[i - 1].x - combinedData[i].x)); + } + if (coreDistance == 0) { + if (intersections[combinedData[i].x] === undefined) { + intersections[combinedData[i].x] = {amount: 0, resolved: 0, accumulated: 0}; + } + intersections[combinedData[i].x].amount += 1; } } }; - /** - * Load the XY positions of the nodes into the dataset. - */ - Network.prototype.storePosition = function() { - console.log("storePosition is depricated: use .storePositions() from now on.") - this.storePositions(); - }; /** - * Load the XY positions of the nodes into the dataset. + * Get the width and offset for bargraphs based on the coredistance between datapoints + * + * @param coreDistance + * @param group + * @param minWidth + * @returns {{width: Number, offset: Number}} + * @private */ - Network.prototype.storePositions = function() { - var dataArray = []; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - var allowedToMoveX = !this.nodes.xFixed; - var allowedToMoveY = !this.nodes.yFixed; - if (this.nodesData._data[nodeId].x != Math.round(node.x) || this.nodesData._data[nodeId].y != Math.round(node.y)) { - dataArray.push({id:nodeId,x:Math.round(node.x),y:Math.round(node.y),allowedToMoveX:allowedToMoveX,allowedToMoveY:allowedToMoveY}); - } + Bargraph._getSafeDrawData = function (coreDistance, group, minWidth) { + var width, offset; + if (coreDistance < group.options.barChart.width && coreDistance > 0) { + width = coreDistance < minWidth ? minWidth : coreDistance; + + offset = 0; // recalculate offset with the new width; + if (group.options.barChart.align == 'left') { + offset -= 0.5 * coreDistance; + } + else if (group.options.barChart.align == 'right') { + offset += 0.5 * coreDistance; } } - this.nodesData.update(dataArray); + else { + // default settings + width = group.options.barChart.width; + offset = 0; + if (group.options.barChart.align == 'left') { + offset -= 0.5 * group.options.barChart.width; + } + else if (group.options.barChart.align == 'right') { + offset += 0.5 * group.options.barChart.width; + } + } + + return {width: width, offset: offset}; }; - /** - * Return the positions of the nodes. - */ - Network.prototype.getPositions = function(ids) { - var dataArray = {}; - if (ids !== undefined) { - if (Array.isArray(ids) == true) { - for (var i = 0; i < ids.length; i++) { - if (this.nodes[ids[i]] !== undefined) { - var node = this.nodes[ids[i]]; - dataArray[ids[i]] = {x: Math.round(node.x), y: Math.round(node.y)}; - } + Bargraph.getStackedBarYRange = function(barCombinedData, groupRanges, groupIds, groupLabel, orientation) { + if (barCombinedData.length > 0) { + // sort by time and by group + barCombinedData.sort(function (a, b) { + if (a.x == b.x) { + return a.groupId - b.groupId; + } else { + return a.x - b.x; } + }); + var intersections = {}; + + Bargraph._getDataIntersections(intersections, barCombinedData); + groupRanges[groupLabel] = Bargraph._getStackedBarYRange(intersections, barCombinedData); + groupRanges[groupLabel].yAxisOrientation = orientation; + groupIds.push(groupLabel); + } + } + + Bargraph._getStackedBarYRange = function (intersections, combinedData) { + var key; + var yMin = combinedData[0].y; + var yMax = combinedData[0].y; + for (var i = 0; i < combinedData.length; i++) { + key = combinedData[i].x; + if (intersections[key] === undefined) { + yMin = yMin > combinedData[i].y ? combinedData[i].y : yMin; + yMax = yMax < combinedData[i].y ? combinedData[i].y : yMax; } else { - if (this.nodes[ids] !== undefined) { - var node = this.nodes[ids]; - dataArray[ids] = {x: Math.round(node.x), y: Math.round(node.y)}; - } + intersections[key].accumulated += combinedData[i].y; } } - else { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - dataArray[nodeId] = {x: Math.round(node.x), y: Math.round(node.y)}; - } + for (var xpos in intersections) { + if (intersections.hasOwnProperty(xpos)) { + yMin = yMin > intersections[xpos].accumulated ? intersections[xpos].accumulated : yMin; + yMax = yMax < intersections[xpos].accumulated ? intersections[xpos].accumulated : yMax; } } - return dataArray; + + return {min: yMin, max: yMax}; }; + module.exports = Bargraph; +/***/ }, +/* 51 */ +/***/ function(module, exports, __webpack_require__) { /** - * Center a node in view. - * - * @param {Number} nodeId - * @param {Number} [options] + * Created by Alex on 11/11/2014. */ - Network.prototype.focusOnNode = function (nodeId, options) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (options === undefined) { - options = {}; - } - var nodePosition = {x: this.nodes[nodeId].x, y: this.nodes[nodeId].y}; - options.position = nodePosition; - options.lockedOnNode = nodeId; + var DOMutil = __webpack_require__(2); - this.moveTo(options) - } - else { - console.log("This nodeId cannot be found."); - } - }; + function Points(groupId, options) { + this.groupId = groupId; + this.options = options; + } - /** - * - * @param {Object} options | options.offset = {x:Number, y:Number} // offset from the center in DOM pixels - * | options.scale = Number // scale to move to - * | options.position = {x:Number, y:Number} // position to move to - * | options.animation = {duration:Number, easingFunction:String} || Boolean // position to move to - */ - Network.prototype.moveTo = function (options) { - if (options === undefined) { - options = {}; - return; - } - if (options.offset === undefined) {options.offset = {x: 0, y: 0}; } - if (options.offset.x === undefined) {options.offset.x = 0; } - if (options.offset.y === undefined) {options.offset.y = 0; } - if (options.scale === undefined) {options.scale = this._getScale(); } - if (options.position === undefined) {options.position = this._getTranslation();} - if (options.animation === undefined) {options.animation = {duration:0}; } - if (options.animation === false ) {options.animation = {duration:0}; } - if (options.animation === true ) {options.animation = {}; } - if (options.animation.duration === undefined) {options.animation.duration = 1000; } // default duration - if (options.animation.easingFunction === undefined) {options.animation.easingFunction = "easeInOutQuad"; } // default easing function - this.animateView(options); + Points.prototype.getYRange = function(groupData) { + var yMin = groupData[0].y; + var yMax = groupData[0].y; + for (var j = 0; j < groupData.length; j++) { + yMin = yMin > groupData[j].y ? groupData[j].y : yMin; + yMax = yMax < groupData[j].y ? groupData[j].y : yMax; + } + return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; }; + Points.prototype.draw = function(dataset, group, framework, offset) { + Points.draw(dataset, group, framework, offset); + } + /** + * draw the data points * - * @param {Object} options | options.offset = {x:Number, y:Number} // offset from the center in DOM pixels - * | options.time = Number // animation time in milliseconds - * | options.scale = Number // scale to animate to - * | options.position = {x:Number, y:Number} // position to animate to - * | options.easingFunction = String // linear, easeInQuad, easeOutQuad, easeInOutQuad, - * // easeInCubic, easeOutCubic, easeInOutCubic, - * // easeInQuart, easeOutQuart, easeInOutQuart, - * // easeInQuint, easeOutQuint, easeInOutQuint + * @param {Array} dataset + * @param {Object} JSONcontainer + * @param {Object} svg | SVG DOM element + * @param {GraphGroup} group + * @param {Number} [offset] */ - Network.prototype.animateView = function (options) { - if (options === undefined) { - options = {}; - return; - } - - // release if something focussed on the node - this.releaseNode(); - if (options.locked == true) { - this.lockedOnNodeId = options.lockedOnNode; - this.lockedOnNodeOffset = options.offset; + Points.draw = function (dataset, group, framework, offset) { + if (offset === undefined) {offset = 0;} + for (var i = 0; i < dataset.length; i++) { + DOMutil.drawPoint(dataset[i].x + offset, dataset[i].y, group, framework.svgElements, framework.svg, dataset[i].label); } + }; - // forcefully complete the old animation if it was still running - if (this.easingTime != 0) { - this._transitionRedraw(1); // by setting easingtime to 1, we finish the animation. - } - this.sourceScale = this._getScale(); - this.sourceTranslation = this._getTranslation(); - this.targetScale = options.scale; + module.exports = Points; - // set the scale so the viewCenter is based on the correct zoom level. This is overridden in the transitionRedraw - // but at least then we'll have the target transition - this._setScale(this.targetScale); - var viewCenter = this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); - var distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node - x: viewCenter.x - options.position.x, - y: viewCenter.y - options.position.y - }; - this.targetTranslation = { - x: this.sourceTranslation.x + distanceFromCenter.x * this.targetScale + options.offset.x, - y: this.sourceTranslation.y + distanceFromCenter.y * this.targetScale + options.offset.y - }; +/***/ }, +/* 52 */ +/***/ function(module, exports, __webpack_require__) { - // if the time is set to 0, don't do an animation - if (options.animation.duration == 0) { - if (this.lockedOnNodeId != null) { - this._classicRedraw = this._redraw; - this._redraw = this._lockedRedraw; - } - else { - this._setScale(this.targetScale); - this._setTranslation(this.targetTranslation.x, this.targetTranslation.y); - this._redraw(); - } - } - else { - this.animating = true; - this.animationSpeed = 1 / (this.renderRefreshRate * options.animation.duration * 0.001) || 1 / this.renderRefreshRate; - this.animationEasingFunction = options.animation.easingFunction; - this._classicRedraw = this._redraw; - this._redraw = this._transitionRedraw; - this._redraw(); - this.start(); - } - }; + var PhysicsMixin = __webpack_require__(60); + var ClusterMixin = __webpack_require__(61); + var SectorsMixin = __webpack_require__(62); + var SelectionMixin = __webpack_require__(63); + var ManipulationMixin = __webpack_require__(64); + var NavigationMixin = __webpack_require__(65); + var HierarchicalLayoutMixin = __webpack_require__(66); /** - * used to animate smoothly by hijacking the redraw function. + * Load a mixin into the network object + * + * @param {Object} sourceVariable | this object has to contain functions. * @private */ - Network.prototype._lockedRedraw = function () { - var nodePosition = {x: this.nodes[this.lockedOnNodeId].x, y: this.nodes[this.lockedOnNodeId].y}; - var viewCenter = this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); - var distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node - x: viewCenter.x - nodePosition.x, - y: viewCenter.y - nodePosition.y - }; - var sourceTranslation = this._getTranslation(); - var targetTranslation = { - x: sourceTranslation.x + distanceFromCenter.x * this.scale + this.lockedOnNodeOffset.x, - y: sourceTranslation.y + distanceFromCenter.y * this.scale + this.lockedOnNodeOffset.y - }; - - this._setTranslation(targetTranslation.x,targetTranslation.y); - this._classicRedraw(); - } - - Network.prototype.releaseNode = function () { - if (this.lockedOnNodeId != null) { - this._redraw = this._classicRedraw; - this.lockedOnNodeId = null; - this.lockedOnNodeOffset = null; + exports._loadMixin = function (sourceVariable) { + for (var mixinFunction in sourceVariable) { + if (sourceVariable.hasOwnProperty(mixinFunction)) { + this[mixinFunction] = sourceVariable[mixinFunction]; + } } - } + }; + /** + * removes a mixin from the network object. * - * @param easingTime + * @param {Object} sourceVariable | this object has to contain functions. * @private */ - Network.prototype._transitionRedraw = function (easingTime) { - this.easingTime = easingTime || this.easingTime + this.animationSpeed; - this.easingTime += this.animationSpeed; - - var progress = util.easingFunctions[this.animationEasingFunction](this.easingTime); - - this._setScale(this.sourceScale + (this.targetScale - this.sourceScale) * progress); - this._setTranslation( - this.sourceTranslation.x + (this.targetTranslation.x - this.sourceTranslation.x) * progress, - this.sourceTranslation.y + (this.targetTranslation.y - this.sourceTranslation.y) * progress - ); - - this._classicRedraw(); - - // cleanup - if (this.easingTime >= 1.0) { - this.animating = false; - this.easingTime = 0; - if (this.lockedOnNodeId != null) { - this._redraw = this._lockedRedraw; - } - else { - this._redraw = this._classicRedraw; + exports._clearMixin = function (sourceVariable) { + for (var mixinFunction in sourceVariable) { + if (sourceVariable.hasOwnProperty(mixinFunction)) { + this[mixinFunction] = undefined; } - this.emit("animationFinished"); } }; - Network.prototype._classicRedraw = function () { - // placeholder function to be overloaded by animations; - }; /** - * Returns true when the Network is active. - * @returns {boolean} + * Mixin the physics system and initialize the parameters required. + * + * @private */ - Network.prototype.isActive = function () { - return !this.activator || this.activator.active; + exports._loadPhysicsSystem = function () { + this._loadMixin(PhysicsMixin); + this._loadSelectedForceSolver(); + if (this.constants.configurePhysics == true) { + this._loadPhysicsConfiguration(); + } + else { + this._cleanupPhysicsConfiguration(); + } }; /** - * Sets the scale - * @returns {Number} + * Mixin the cluster system and initialize the parameters required. + * + * @private */ - Network.prototype.setScale = function () { - return this._setScale(); + exports._loadClusterSystem = function () { + this.clusterSession = 0; + this.hubThreshold = 5; + this._loadMixin(ClusterMixin); }; /** - * Returns the scale - * @returns {Number} + * Mixin the sector system and initialize the parameters required + * + * @private */ - Network.prototype.getScale = function () { - return this._getScale(); + exports._loadSectorSystem = function () { + this.sectors = {}; + this.activeSector = ["default"]; + this.sectors["active"] = {}; + this.sectors["active"]["default"] = {"nodes": {}, + "edges": {}, + "nodeIndices": [], + "formationScale": 1.0, + "drawingNode": undefined }; + this.sectors["frozen"] = {}; + this.sectors["support"] = {"nodes": {}, + "edges": {}, + "nodeIndices": [], + "formationScale": 1.0, + "drawingNode": undefined }; + + this.nodeIndices = this.sectors["active"]["default"]["nodeIndices"]; // the node indices list is used to speed up the computation of the repulsion fields + + this._loadMixin(SectorsMixin); }; /** - * Returns the scale - * @returns {Number} + * Mixin the selection system and initialize the parameters required + * + * @private */ - Network.prototype.getCenterCoordinates = function () { - return this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); + exports._loadSelectionSystem = function () { + this.selectionObj = {nodes: {}, edges: {}}; + + this._loadMixin(SelectionMixin); }; - Network.prototype.getBoundingBox = function(nodeId) { - if (this.nodes[nodeId] !== undefined) { - return this.nodes[nodeId].boundingBox; - } - } + /** + * Mixin the navigationUI (User Interface) system and initialize the parameters required + * + * @private + */ + exports._loadManipulationSystem = function () { + // reset global variables -- these are used by the selection of nodes and edges. + this.blockConnectingEdgeSelection = false; + this.forceAppendSelection = false; - Network.prototype.getConnectedNodes = function(nodeId) { - var nodeList = []; - if (this.nodes[nodeId] !== undefined) { - var node = this.nodes[nodeId]; - var nodeObj = {nodeId : true}; // used to quickly check if node already exists - for (var i = 0; i < node.edges.length; i++) { - var edge = node.edges[i]; - if (edge.toId == nodeId) { - if (nodeObj[edge.fromId] === undefined) { - nodeList.push(edge.fromId); - nodeObj[edge.fromId] = true; - } + if (this.constants.dataManipulation.enabled == true) { + // load the manipulator HTML elements. All styling done in css. + if (this.manipulationDiv === undefined) { + this.manipulationDiv = document.createElement('div'); + this.manipulationDiv.className = 'network-manipulationDiv'; + if (this.editMode == true) { + this.manipulationDiv.style.display = "block"; } - else if (edge.fromId == nodeId) { - if (nodeObj[edge.toId] === undefined) { - nodeList.push(edge.toId) - nodeObj[edge.toId] = true; - } + else { + this.manipulationDiv.style.display = "none"; } + this.frame.appendChild(this.manipulationDiv); } - } - return nodeList; - } - - Network.prototype.getEdgesFromNode = function(nodeId) { - var edgesList = []; - if (this.nodes[nodeId] !== undefined) { - var node = this.nodes[nodeId]; - for (var i = 0; i < node.edges.length; i++) { - edgesList.push(node.edges[i].id); + if (this.editModeDiv === undefined) { + this.editModeDiv = document.createElement('div'); + this.editModeDiv.className = 'network-manipulation-editMode'; + if (this.editMode == true) { + this.editModeDiv.style.display = "none"; + } + else { + this.editModeDiv.style.display = "block"; + } + this.frame.appendChild(this.editModeDiv); } - } - return edgesList; - } - Network.prototype.generateColorObject = function(color) { - return util.parseColor(color); + if (this.closeDiv === undefined) { + this.closeDiv = document.createElement('div'); + this.closeDiv.className = 'network-manipulation-closeDiv'; + this.closeDiv.style.display = this.manipulationDiv.style.display; + this.frame.appendChild(this.closeDiv); + } - } + // load the manipulation functions + this._loadMixin(ManipulationMixin); - module.exports = Network; + // create the manipulator toolbar + this._createManipulatorBar(); + } + else { + if (this.manipulationDiv !== undefined) { + // removes all the bindings and overloads + this._createManipulatorBar(); + // remove the manipulation divs + this.frame.removeChild(this.manipulationDiv); + this.frame.removeChild(this.editModeDiv); + this.frame.removeChild(this.closeDiv); + + this.manipulationDiv = undefined; + this.editModeDiv = undefined; + this.closeDiv = undefined; + // remove the mixin functions + this._clearMixin(ManipulationMixin); + } + } + }; -/***/ }, -/* 52 */ -/***/ function(module, exports, __webpack_require__) { /** - * Parse a text source containing data in DOT language into a JSON object. - * The object contains two lists: one with nodes and one with edges. - * - * DOT language reference: http://www.graphviz.org/doc/info/lang.html + * Mixin the navigation (User Interface) system and initialize the parameters required * - * @param {String} data Text containing a graph in DOT-notation - * @return {Object} graph An object containing two parameters: - * {Object[]} nodes - * {Object[]} edges + * @private */ - function parseDOT (data) { - dot = data; - return parseGraph(); - } - - // token types enumeration - var TOKENTYPE = { - NULL : 0, - DELIMITER : 1, - IDENTIFIER: 2, - UNKNOWN : 3 + exports._loadNavigationControls = function () { + this._loadMixin(NavigationMixin); + // the clean function removes the button divs, this is done to remove the bindings. + this._cleanNavigation(); + if (this.constants.navigation.enabled == true) { + this._loadNavigationElements(); + } }; - // map with all delimiters - var DELIMITERS = { - '{': true, - '}': true, - '[': true, - ']': true, - ';': true, - '=': true, - ',': true, - '->': true, - '--': true + /** + * Mixin the hierarchical layout system. + * + * @private + */ + exports._loadHierarchySystem = function () { + this._loadMixin(HierarchicalLayoutMixin); }; - var dot = ''; // current dot file - var index = 0; // current index in dot file - var c = ''; // current token character in expr - var token = ''; // current token - var tokenType = TOKENTYPE.NULL; // type of the token - /** - * Get the first character from the dot file. - * The character is stored into the char c. If the end of the dot file is - * reached, the function puts an empty string in c. - */ - function first() { - index = 0; - c = dot.charAt(0); - } +/***/ }, +/* 53 */ +/***/ function(module, exports, __webpack_require__) { - /** - * Get the next character from the dot file. - * The character is stored into the char c. If the end of the dot file is - * reached, the function puts an empty string in c. - */ - function next() { - index++; - c = dot.charAt(index); - } + var keycharm = __webpack_require__(57); + var Emitter = __webpack_require__(56); + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); /** - * Preview the next character from the dot file. - * @return {String} cNext + * Turn an element into an clickToUse element. + * When not active, the element has a transparent overlay. When the overlay is + * clicked, the mode is changed to active. + * When active, the element is displayed with a blue border around it, and + * the interactive contents of the element can be used. When clicked outside + * the element, the elements mode is changed to inactive. + * @param {Element} container + * @constructor */ - function nextPreview() { - return dot.charAt(index + 1); - } + function Activator(container) { + this.active = false; - /** - * Test whether given character is alphabetic or numeric - * @param {String} c - * @return {Boolean} isAlphaNumeric - */ - var regexAlphaNumeric = /[a-zA-Z_0-9.:#]/; - function isAlphaNumeric(c) { - return regexAlphaNumeric.test(c); - } + this.dom = { + container: container + }; - /** - * Merge all properties of object b into object b - * @param {Object} a - * @param {Object} b - * @return {Object} a - */ - function merge (a, b) { - if (!a) { - a = {}; - } + this.dom.overlay = document.createElement('div'); + this.dom.overlay.className = 'overlay'; - if (b) { - for (var name in b) { - if (b.hasOwnProperty(name)) { - a[name] = b[name]; - } - } - } - return a; - } + this.dom.container.appendChild(this.dom.overlay); - /** - * Set a value in an object, where the provided parameter name can be a - * path with nested parameters. For example: - * - * var obj = {a: 2}; - * setValue(obj, 'b.c', 3); // obj = {a: 2, b: {c: 3}} - * - * @param {Object} obj - * @param {String} path A parameter name or dot-separated parameter path, - * like "color.highlight.border". - * @param {*} value - */ - function setValue(obj, path, value) { - var keys = path.split('.'); - var o = obj; - while (keys.length) { - var key = keys.shift(); - if (keys.length) { - // this isn't the end point - if (!o[key]) { - o[key] = {}; - } - o = o[key]; - } - else { - // this is the end point - o[key] = value; + this.hammer = Hammer(this.dom.overlay, {prevent_default: false}); + this.hammer.on('tap', this._onTapOverlay.bind(this)); + + // block all touch events (except tap) + var me = this; + var events = [ + 'touch', 'pinch', + 'doubletap', 'hold', + 'dragstart', 'drag', 'dragend', + 'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox + ]; + events.forEach(function (event) { + me.hammer.on(event, function (event) { + event.stopPropagation(); + }); + }); + + // attach a tap event to the window, in order to deactivate when clicking outside the timeline + this.windowHammer = Hammer(window, {prevent_default: false}); + this.windowHammer.on('tap', function (event) { + // deactivate when clicked outside the container + if (!_hasParent(event.target, container)) { + me.deactivate(); } + }); + + if (this.keycharm !== undefined) { + this.keycharm.destroy(); } + this.keycharm = keycharm(); + + // keycharm listener only bounded when active) + this.escListener = this.deactivate.bind(this); } + // turn into an event emitter + Emitter(Activator.prototype); + + // The currently active activator + Activator.current = null; + /** - * Add a node to a graph object. If there is already a node with - * the same id, their attributes will be merged. - * @param {Object} graph - * @param {Object} node + * Destroy the activator. Cleans up all created DOM and event listeners */ - function addNode(graph, node) { - var i, len; - var current = null; + Activator.prototype.destroy = function () { + this.deactivate(); - // find root graph (in case of subgraph) - var graphs = [graph]; // list with all graphs from current graph to root graph - var root = graph; - while (root.parent) { - graphs.push(root.parent); - root = root.parent; - } + // remove dom + this.dom.overlay.parentNode.removeChild(this.dom.overlay); - // find existing node (at root level) by its id - if (root.nodes) { - for (i = 0, len = root.nodes.length; i < len; i++) { - if (node.id === root.nodes[i].id) { - current = root.nodes[i]; - break; - } - } - } + // cleanup hammer instances + this.hammer = null; + this.windowHammer = null; + // FIXME: cleaning up hammer instances doesn't work (Timeline not removed from memory) + }; - if (!current) { - // this is a new node - current = { - id: node.id - }; - if (graph.node) { - // clone default attributes - current.attr = merge(current.attr, graph.node); - } + /** + * Activate the element + * Overlay is hidden, element is decorated with a blue shadow border + */ + Activator.prototype.activate = function () { + // we allow only one active activator at a time + if (Activator.current) { + Activator.current.deactivate(); } + Activator.current = this; - // add node to this (sub)graph and all its parent graphs - for (i = graphs.length - 1; i >= 0; i--) { - var g = graphs[i]; + this.active = true; + this.dom.overlay.style.display = 'none'; + util.addClassName(this.dom.container, 'vis-active'); - if (!g.nodes) { - g.nodes = []; - } - if (g.nodes.indexOf(current) == -1) { - g.nodes.push(current); - } - } + this.emit('change'); + this.emit('activate'); - // merge attributes - if (node.attr) { - current.attr = merge(current.attr, node.attr); - } - } + // ugly hack: bind ESC after emitting the events, as the Network rebinds all + // keyboard events on a 'change' event + this.keycharm.bind('esc', this.escListener); + }; /** - * Add an edge to a graph object - * @param {Object} graph - * @param {Object} edge + * Deactivate the element + * Overlay is displayed on top of the element */ - function addEdge(graph, edge) { - if (!graph.edges) { - graph.edges = []; - } - graph.edges.push(edge); - if (graph.edge) { - var attr = merge({}, graph.edge); // clone default attributes - edge.attr = merge(attr, edge.attr); // merge attributes - } - } + Activator.prototype.deactivate = function () { + this.active = false; + this.dom.overlay.style.display = ''; + util.removeClassName(this.dom.container, 'vis-active'); + this.keycharm.unbind('esc', this.escListener); + + this.emit('change'); + this.emit('deactivate'); + }; /** - * Create an edge to a graph object - * @param {Object} graph - * @param {String | Number | Object} from - * @param {String | Number | Object} to - * @param {String} type - * @param {Object | null} attr - * @return {Object} edge + * Handle a tap event: activate the container + * @param event + * @private */ - function createEdge(graph, from, to, type, attr) { - var edge = { - from: from, - to: to, - type: type - }; + Activator.prototype._onTapOverlay = function (event) { + // activate the container + this.activate(); + event.stopPropagation(); + }; - if (graph.edge) { - edge.attr = merge({}, graph.edge); // clone default attributes + /** + * Test whether the element has the requested parent element somewhere in + * its chain of parent nodes. + * @param {HTMLElement} element + * @param {HTMLElement} parent + * @returns {boolean} Returns true when the parent is found somewhere in the + * chain of parent nodes. + * @private + */ + function _hasParent(element, parent) { + while (element) { + if (element === parent) { + return true + } + element = element.parentNode; } - edge.attr = merge(edge.attr || {}, attr); // merge attributes - - return edge; + return false; } - /** - * Get next token in the current dot file. - * The token and token type are available as token and tokenType - */ - function getToken() { - tokenType = TOKENTYPE.NULL; - token = ''; + module.exports = Activator; - // skip over whitespaces - while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { // space, tab, enter - next(); - } - do { - var isComment = false; +/***/ }, +/* 54 */ +/***/ function(module, exports, __webpack_require__) { - // skip comment - if (c == '#') { - // find the previous non-space character - var i = index - 1; - while (dot.charAt(i) == ' ' || dot.charAt(i) == '\t') { - i--; - } - if (dot.charAt(i) == '\n' || dot.charAt(i) == '') { - // the # is at the start of a line, this is indeed a line comment - while (c != '' && c != '\n') { - next(); - } - isComment = true; - } - } - if (c == '/' && nextPreview() == '/') { - // skip line comment - while (c != '' && c != '\n') { - next(); - } - isComment = true; - } - if (c == '/' && nextPreview() == '*') { - // skip block comment - while (c != '') { - if (c == '*' && nextPreview() == '/') { - // end of block comment found. skip these last two characters - next(); - next(); - break; - } - else { - next(); - } - } - isComment = true; - } + // English + exports['en'] = { + edit: 'Edit', + del: 'Delete selected', + back: 'Back', + addNode: 'Add Node', + addEdge: 'Add Edge', + editNode: 'Edit Node', + editEdge: 'Edit Edge', + addDescription: 'Click in an empty space to place a new node.', + edgeDescription: 'Click on a node and drag the edge to another node to connect them.', + editEdgeDescription: 'Click on the control points and drag them to a node to connect to it.', + createEdgeError: 'Cannot link edges to a cluster.', + deleteClusterError: 'Clusters cannot be deleted.' + }; + exports['en_EN'] = exports['en']; + exports['en_US'] = exports['en']; - // skip over whitespaces - while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { // space, tab, enter - next(); - } - } - while (isComment); + // Dutch + exports['nl'] = { + edit: 'Wijzigen', + del: 'Selectie verwijderen', + back: 'Terug', + addNode: 'Node toevoegen', + addEdge: 'Link toevoegen', + editNode: 'Node wijzigen', + editEdge: 'Link wijzigen', + addDescription: 'Klik op een leeg gebied om een nieuwe node te maken.', + edgeDescription: 'Klik op een node en sleep de link naar een andere node om ze te verbinden.', + editEdgeDescription: 'Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.', + createEdgeError: 'Kan geen link maken naar een cluster.', + deleteClusterError: 'Clusters kunnen niet worden verwijderd.' + }; + exports['nl_NL'] = exports['nl']; + exports['nl_BE'] = exports['nl']; - // check for end of dot file - if (c == '') { - // token is still empty - tokenType = TOKENTYPE.DELIMITER; - return; - } - // check for delimiters consisting of 2 characters - var c2 = c + nextPreview(); - if (DELIMITERS[c2]) { - tokenType = TOKENTYPE.DELIMITER; - token = c2; - next(); - next(); - return; - } +/***/ }, +/* 55 */ +/***/ function(module, exports, __webpack_require__) { - // check for delimiters consisting of 1 character - if (DELIMITERS[c]) { - tokenType = TOKENTYPE.DELIMITER; - token = c; - next(); - return; - } + /** + * Canvas shapes used by Network + */ + if (typeof CanvasRenderingContext2D !== 'undefined') { - // check for an identifier (number or string) - // TODO: more precise parsing of numbers/strings (and the port separator ':') - if (isAlphaNumeric(c) || c == '-') { - token += c; - next(); + /** + * Draw a circle shape + */ + CanvasRenderingContext2D.prototype.circle = function(x, y, r) { + this.beginPath(); + this.arc(x, y, r, 0, 2*Math.PI, false); + }; - while (isAlphaNumeric(c)) { - token += c; - next(); - } - if (token == 'false') { - token = false; // convert to boolean - } - else if (token == 'true') { - token = true; // convert to boolean - } - else if (!isNaN(Number(token))) { - token = Number(token); // convert to number - } - tokenType = TOKENTYPE.IDENTIFIER; - return; - } + /** + * Draw a square shape + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r size, width and height of the square + */ + CanvasRenderingContext2D.prototype.square = function(x, y, r) { + this.beginPath(); + this.rect(x - r, y - r, r * 2, r * 2); + }; - // check for a string enclosed by double quotes - if (c == '"') { - next(); - while (c != '' && (c != '"' || (c == '"' && nextPreview() == '"'))) { - token += c; - if (c == '"') { // skip the escape character - next(); - } - next(); - } - if (c != '"') { - throw newSyntaxError('End of string " expected'); - } - next(); - tokenType = TOKENTYPE.IDENTIFIER; - return; - } + /** + * Draw a triangle shape + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius, half the length of the sides of the triangle + */ + CanvasRenderingContext2D.prototype.triangle = function(x, y, r) { + // http://en.wikipedia.org/wiki/Equilateral_triangle + this.beginPath(); - // something unknown is found, wrong characters, a syntax error - tokenType = TOKENTYPE.UNKNOWN; - while (c != '') { - token += c; - next(); - } - throw new SyntaxError('Syntax error in part "' + chop(token, 30) + '"'); - } + var s = r * 2; + var s2 = s / 2; + var ir = Math.sqrt(3) / 6 * s; // radius of inner circle + var h = Math.sqrt(s * s - s2 * s2); // height - /** - * Parse a graph. - * @returns {Object} graph - */ - function parseGraph() { - var graph = {}; + this.moveTo(x, y - (h - ir)); + this.lineTo(x + s2, y + ir); + this.lineTo(x - s2, y + ir); + this.lineTo(x, y - (h - ir)); + this.closePath(); + }; - first(); - getToken(); + /** + * Draw a triangle shape in downward orientation + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius + */ + CanvasRenderingContext2D.prototype.triangleDown = function(x, y, r) { + // http://en.wikipedia.org/wiki/Equilateral_triangle + this.beginPath(); - // optional strict keyword - if (token == 'strict') { - graph.strict = true; - getToken(); - } + var s = r * 2; + var s2 = s / 2; + var ir = Math.sqrt(3) / 6 * s; // radius of inner circle + var h = Math.sqrt(s * s - s2 * s2); // height - // graph or digraph keyword - if (token == 'graph' || token == 'digraph') { - graph.type = token; - getToken(); - } + this.moveTo(x, y + (h - ir)); + this.lineTo(x + s2, y - ir); + this.lineTo(x - s2, y - ir); + this.lineTo(x, y + (h - ir)); + this.closePath(); + }; - // optional graph id - if (tokenType == TOKENTYPE.IDENTIFIER) { - graph.id = token; - getToken(); - } + /** + * Draw a star shape, a star with 5 points + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius, half the length of the sides of the triangle + */ + CanvasRenderingContext2D.prototype.star = function(x, y, r) { + // http://www.html5canvastutorials.com/labs/html5-canvas-star-spinner/ + this.beginPath(); - // open angle bracket - if (token != '{') { - throw newSyntaxError('Angle bracket { expected'); - } - getToken(); + for (var n = 0; n < 10; n++) { + var radius = (n % 2 === 0) ? r * 1.3 : r * 0.5; + this.lineTo( + x + radius * Math.sin(n * 2 * Math.PI / 10), + y - radius * Math.cos(n * 2 * Math.PI / 10) + ); + } - // statements - parseStatements(graph); + this.closePath(); + }; - // close angle bracket - if (token != '}') { - throw newSyntaxError('Angle bracket } expected'); - } - getToken(); + /** + * http://stackoverflow.com/questions/1255512/how-to-draw-a-rounded-rectangle-on-html-canvas + */ + CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) { + var r2d = Math.PI/180; + if( w - ( 2 * r ) < 0 ) { r = ( w / 2 ); } //ensure that the radius isn't too large for x + if( h - ( 2 * r ) < 0 ) { r = ( h / 2 ); } //ensure that the radius isn't too large for y + this.beginPath(); + this.moveTo(x+r,y); + this.lineTo(x+w-r,y); + this.arc(x+w-r,y+r,r,r2d*270,r2d*360,false); + this.lineTo(x+w,y+h-r); + this.arc(x+w-r,y+h-r,r,0,r2d*90,false); + this.lineTo(x+r,y+h); + this.arc(x+r,y+h-r,r,r2d*90,r2d*180,false); + this.lineTo(x,y+r); + this.arc(x+r,y+r,r,r2d*180,r2d*270,false); + }; - // end of file - if (token !== '') { - throw newSyntaxError('End of file expected'); - } - getToken(); + /** + * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + */ + CanvasRenderingContext2D.prototype.ellipse = function(x, y, w, h) { + var kappa = .5522848, + ox = (w / 2) * kappa, // control point offset horizontal + oy = (h / 2) * kappa, // control point offset vertical + xe = x + w, // x-end + ye = y + h, // y-end + xm = x + w / 2, // x-middle + ym = y + h / 2; // y-middle - // remove temporary default properties - delete graph.node; - delete graph.edge; - delete graph.graph; + this.beginPath(); + this.moveTo(x, ym); + this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + }; - return graph; - } - /** - * Parse a list with statements. - * @param {Object} graph - */ - function parseStatements (graph) { - while (token !== '' && token != '}') { - parseStatement(graph); - if (token == ';') { - getToken(); - } - } - } - /** - * Parse a single statement. Can be a an attribute statement, node - * statement, a series of node statements and edge statements, or a - * parameter. - * @param {Object} graph - */ - function parseStatement(graph) { - // parse subgraph - var subgraph = parseSubgraph(graph); - if (subgraph) { - // edge statements - parseEdge(graph, subgraph); + /** + * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + */ + CanvasRenderingContext2D.prototype.database = function(x, y, w, h) { + var f = 1/3; + var wEllipse = w; + var hEllipse = h * f; - return; - } + var kappa = .5522848, + ox = (wEllipse / 2) * kappa, // control point offset horizontal + oy = (hEllipse / 2) * kappa, // control point offset vertical + xe = x + wEllipse, // x-end + ye = y + hEllipse, // y-end + xm = x + wEllipse / 2, // x-middle + ym = y + hEllipse / 2, // y-middle + ymb = y + (h - hEllipse/2), // y-midlle, bottom ellipse + yeb = y + h; // y-end, bottom ellipse - // parse an attribute statement - var attr = parseAttributeStatement(graph); - if (attr) { - return; - } + this.beginPath(); + this.moveTo(xe, ym); - // parse node - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Identifier expected'); - } - var id = token; // id can be a string or a number - getToken(); + this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - if (token == '=') { - // id statement - getToken(); - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Identifier expected'); - } - graph[id] = token; - getToken(); - // TODO: implement comma separated list with "a_list: ID=ID [','] [a_list] " - } - else { - parseNodeStatement(graph, id); - } - } + this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - /** - * Parse a subgraph - * @param {Object} graph parent graph object - * @return {Object | null} subgraph - */ - function parseSubgraph (graph) { - var subgraph = null; + this.lineTo(xe, ymb); - // optional subgraph keyword - if (token == 'subgraph') { - subgraph = {}; - subgraph.type = 'subgraph'; - getToken(); + this.bezierCurveTo(xe, ymb + oy, xm + ox, yeb, xm, yeb); + this.bezierCurveTo(xm - ox, yeb, x, ymb + oy, x, ymb); - // optional graph id - if (tokenType == TOKENTYPE.IDENTIFIER) { - subgraph.id = token; - getToken(); - } - } + this.lineTo(x, ym); + }; - // open angle bracket - if (token == '{') { - getToken(); - if (!subgraph) { - subgraph = {}; - } - subgraph.parent = graph; - subgraph.node = graph.node; - subgraph.edge = graph.edge; - subgraph.graph = graph.graph; + /** + * Draw an arrow point (no line) + */ + CanvasRenderingContext2D.prototype.arrow = function(x, y, angle, length) { + // tail + var xt = x - length * Math.cos(angle); + var yt = y - length * Math.sin(angle); - // statements - parseStatements(subgraph); + // inner tail + // TODO: allow to customize different shapes + var xi = x - length * 0.9 * Math.cos(angle); + var yi = y - length * 0.9 * Math.sin(angle); - // close angle bracket - if (token != '}') { - throw newSyntaxError('Angle bracket } expected'); - } - getToken(); + // left + var xl = xt + length / 3 * Math.cos(angle + 0.5 * Math.PI); + var yl = yt + length / 3 * Math.sin(angle + 0.5 * Math.PI); - // remove temporary default properties - delete subgraph.node; - delete subgraph.edge; - delete subgraph.graph; - delete subgraph.parent; + // right + var xr = xt + length / 3 * Math.cos(angle - 0.5 * Math.PI); + var yr = yt + length / 3 * Math.sin(angle - 0.5 * Math.PI); - // register at the parent graph - if (!graph.subgraphs) { - graph.subgraphs = []; + this.beginPath(); + this.moveTo(x, y); + this.lineTo(xl, yl); + this.lineTo(xi, yi); + this.lineTo(xr, yr); + this.closePath(); + }; + + /** + * Sets up the dashedLine functionality for drawing + * Original code came from http://stackoverflow.com/questions/4576724/dotted-stroke-in-canvas + * @author David Jordan + * @date 2012-08-08 + */ + CanvasRenderingContext2D.prototype.dashedLine = function(x,y,x2,y2,dashArray){ + if (!dashArray) dashArray=[10,5]; + if (dashLength==0) dashLength = 0.001; // Hack for Safari + var dashCount = dashArray.length; + this.moveTo(x, y); + var dx = (x2-x), dy = (y2-y); + var slope = dy/dx; + var distRemaining = Math.sqrt( dx*dx + dy*dy ); + var dashIndex=0, draw=true; + while (distRemaining>=0.1){ + var dashLength = dashArray[dashIndex++%dashCount]; + if (dashLength > distRemaining) dashLength = distRemaining; + var xStep = Math.sqrt( dashLength*dashLength / (1 + slope*slope) ); + if (dx<0) xStep = -xStep; + x += xStep; + y += slope*xStep; + this[draw ? 'lineTo' : 'moveTo'](x,y); + distRemaining -= dashLength; + draw = !draw; } - graph.subgraphs.push(subgraph); - } + }; - return subgraph; + // TODO: add diamond shape } + +/***/ }, +/* 56 */ +/***/ function(module, exports, __webpack_require__) { + + /** - * parse an attribute statement like "node [shape=circle fontSize=16]". - * Available keywords are 'node', 'edge', 'graph'. - * The previous list with default attributes will be replaced - * @param {Object} graph - * @returns {String | null} keyword Returns the name of the parsed attribute - * (node, edge, graph), or null if nothing - * is parsed. + * Expose `Emitter`. */ - function parseAttributeStatement (graph) { - // attribute statements - if (token == 'node') { - getToken(); - - // node attributes - graph.node = parseAttributeList(); - return 'node'; - } - else if (token == 'edge') { - getToken(); - // edge attributes - graph.edge = parseAttributeList(); - return 'edge'; - } - else if (token == 'graph') { - getToken(); + module.exports = Emitter; - // graph attributes - graph.graph = parseAttributeList(); - return 'graph'; - } + /** + * Initialize a new `Emitter`. + * + * @api public + */ - return null; - } + function Emitter(obj) { + if (obj) return mixin(obj); + }; /** - * parse a node statement - * @param {Object} graph - * @param {String | Number} id + * Mixin the emitter properties. + * + * @param {Object} obj + * @return {Object} + * @api private */ - function parseNodeStatement(graph, id) { - // node statement - var node = { - id: id - }; - var attr = parseAttributeList(); - if (attr) { - node.attr = attr; - } - addNode(graph, node); - // edge statements - parseEdge(graph, id); + function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; + } + return obj; } /** - * Parse an edge or a series of edges - * @param {Object} graph - * @param {String | Number} from Id of the from node + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public */ - function parseEdge(graph, from) { - while (token == '->' || token == '--') { - var to; - var type = token; - getToken(); - var subgraph = parseSubgraph(graph); - if (subgraph) { - to = subgraph; - } - else { - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Identifier or subgraph expected'); - } - to = token; - addNode(graph, { - id: to - }); - getToken(); - } + Emitter.prototype.on = + Emitter.prototype.addEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + (this._callbacks[event] = this._callbacks[event] || []) + .push(fn); + return this; + }; - // parse edge attributes - var attr = parseAttributeList(); + /** + * Adds an `event` listener that will be invoked a single + * time then automatically removed. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ - // create edge - var edge = createEdge(graph, from, to, type, attr); - addEdge(graph, edge); + Emitter.prototype.once = function(event, fn){ + var self = this; + this._callbacks = this._callbacks || {}; - from = to; + function on() { + self.off(event, on); + fn.apply(this, arguments); } - } + + on.fn = fn; + this.on(event, on); + return this; + }; /** - * Parse a set with attributes, - * for example [label="1.000", shape=solid] - * @return {Object | null} attr + * Remove the given callback for `event` or all + * registered callbacks. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public */ - function parseAttributeList() { - var attr = null; - while (token == '[') { - getToken(); - attr = {}; - while (token !== '' && token != ']') { - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Attribute name expected'); - } - var name = token; + Emitter.prototype.off = + Emitter.prototype.removeListener = + Emitter.prototype.removeAllListeners = + Emitter.prototype.removeEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; - getToken(); - if (token != '=') { - throw newSyntaxError('Equal sign = expected'); - } - getToken(); + // all + if (0 == arguments.length) { + this._callbacks = {}; + return this; + } - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Attribute value expected'); - } - var value = token; - setValue(attr, name, value); // name can be a path + // specific event + var callbacks = this._callbacks[event]; + if (!callbacks) return this; - getToken(); - if (token ==',') { - getToken(); - } - } + // remove all handlers + if (1 == arguments.length) { + delete this._callbacks[event]; + return this; + } - if (token != ']') { - throw newSyntaxError('Bracket ] expected'); + // remove specific handler + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; } - getToken(); } - - return attr; - } + return this; + }; /** - * Create a syntax error with extra information on current token and index. - * @param {String} message - * @returns {SyntaxError} err + * Emit `event` with the given args. + * + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} */ - function newSyntaxError(message) { - return new SyntaxError(message + ', got "' + chop(token, 30) + '" (char ' + index + ')'); - } + + Emitter.prototype.emit = function(event){ + this._callbacks = this._callbacks || {}; + var args = [].slice.call(arguments, 1) + , callbacks = this._callbacks[event]; + + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); + } + } + + return this; + }; /** - * Chop off text after a maximum length - * @param {String} text - * @param {Number} maxLength - * @returns {String} + * Return array of callbacks for `event`. + * + * @param {String} event + * @return {Array} + * @api public */ - function chop (text, maxLength) { - return (text.length <= maxLength) ? text : (text.substr(0, 27) + '...'); - } + + Emitter.prototype.listeners = function(event){ + this._callbacks = this._callbacks || {}; + return this._callbacks[event] || []; + }; /** - * Execute a function fn for each pair of elements in two arrays - * @param {Array | *} array1 - * @param {Array | *} array2 - * @param {function} fn + * Check if this emitter has `event` handlers. + * + * @param {String} event + * @return {Boolean} + * @api public */ - function forEach2(array1, array2, fn) { - if (Array.isArray(array1)) { - array1.forEach(function (elem1) { - if (Array.isArray(array2)) { - array2.forEach(function (elem2) { - fn(elem1, elem2); - }); - } - else { - fn(elem1, array2); - } - }); - } - else { - if (Array.isArray(array2)) { - array2.forEach(function (elem2) { - fn(array1, elem2); - }); - } - else { - fn(array1, array2); - } - } - } + Emitter.prototype.hasListeners = function(event){ + return !! this.listeners(event).length; + }; + + +/***/ }, +/* 57 */ +/***/ function(module, exports, __webpack_require__) { + + var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; /** - * Convert a string containing a graph in DOT language into a map containing - * with nodes and edges in the format of graph. - * @param {String} data Text containing a graph in DOT-notation - * @return {Object} graphData + * Created by Alex on 11/6/2014. */ - function DOTToGraph (data) { - // parse the DOT file - var dotData = parseDOT(data); - var graphData = { - nodes: [], - edges: [], - options: {} - }; - // copy the nodes - if (dotData.nodes) { - dotData.nodes.forEach(function (dotNode) { - var graphNode = { - id: dotNode.id, - label: String(dotNode.label || dotNode.id) - }; - merge(graphNode, dotNode.attr); - if (graphNode.image) { - graphNode.shape = 'image'; - } - graphData.nodes.push(graphNode); - }); + // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 + // if the module has no dependencies, the above pattern can be simplified to + (function (root, factory) { + if (true) { + // AMD. Register as an anonymous module. + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(); + } else { + // Browser globals (root is window) + root.keycharm = factory(); } + }(this, function () { - // copy the edges - if (dotData.edges) { - /** - * Convert an edge in DOT format to an edge with VisGraph format - * @param {Object} dotEdge - * @returns {Object} graphEdge - */ - var convertEdge = function (dotEdge) { - var graphEdge = { - from: dotEdge.from, - to: dotEdge.to - }; - merge(graphEdge, dotEdge.attr); - graphEdge.style = (dotEdge.type == '->') ? 'arrow' : 'line'; - return graphEdge; - } + function keycharm(options) { + var preventDefault = options && options.preventDefault || false; - dotData.edges.forEach(function (dotEdge) { - var from, to; - if (dotEdge.from instanceof Object) { - from = dotEdge.from.nodes; - } - else { - from = { - id: dotEdge.from + var container = options && options.container || window; + + var _exportFunctions = {}; + var _bound = {keydown:{}, keyup:{}}; + var _keys = {}; + var i; + + // a - z + for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} + // A - Z + for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} + // 0 - 9 + for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} + // F1 - F12 + for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} + // num0 - num9 + for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} + + // numpad misc + _keys['num*'] = {code:106, shift: false}; + _keys['num+'] = {code:107, shift: false}; + _keys['num-'] = {code:109, shift: false}; + _keys['num/'] = {code:111, shift: false}; + _keys['num.'] = {code:110, shift: false}; + // arrows + _keys['left'] = {code:37, shift: false}; + _keys['up'] = {code:38, shift: false}; + _keys['right'] = {code:39, shift: false}; + _keys['down'] = {code:40, shift: false}; + // extra keys + _keys['space'] = {code:32, shift: false}; + _keys['enter'] = {code:13, shift: false}; + _keys['shift'] = {code:16, shift: undefined}; + _keys['esc'] = {code:27, shift: false}; + _keys['backspace'] = {code:8, shift: false}; + _keys['tab'] = {code:9, shift: false}; + _keys['ctrl'] = {code:17, shift: false}; + _keys['alt'] = {code:18, shift: false}; + _keys['delete'] = {code:46, shift: false}; + _keys['pageup'] = {code:33, shift: false}; + _keys['pagedown'] = {code:34, shift: false}; + // symbols + _keys['='] = {code:187, shift: false}; + _keys['-'] = {code:189, shift: false}; + _keys[']'] = {code:221, shift: false}; + _keys['['] = {code:219, shift: false}; + + + + var down = function(event) {handleEvent(event,'keydown');}; + var up = function(event) {handleEvent(event,'keyup');}; + + // handle the actualy bound key with the event + var handleEvent = function(event,type) { + if (_bound[type][event.keyCode] !== undefined) { + var bound = _bound[type][event.keyCode]; + for (var i = 0; i < bound.length; i++) { + if (bound[i].shift === undefined) { + bound[i].fn(event); + } + else if (bound[i].shift == true && event.shiftKey == true) { + bound[i].fn(event); + } + else if (bound[i].shift == false && event.shiftKey == false) { + bound[i].fn(event); + } } - } - if (dotEdge.to instanceof Object) { - to = dotEdge.to.nodes; - } - else { - to = { - id: dotEdge.to + if (preventDefault == true) { + event.preventDefault(); } } + }; - if (dotEdge.from instanceof Object && dotEdge.from.edges) { - dotEdge.from.edges.forEach(function (subEdge) { - var graphEdge = convertEdge(subEdge); - graphData.edges.push(graphEdge); - }); + // bind a key to a callback + _exportFunctions.bind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (_bound[type][_keys[key].code] === undefined) { + _bound[type][_keys[key].code] = []; } + _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); + }; - forEach2(from, to, function (from, to) { - var subEdge = createEdge(graphData, from.id, to.id, dotEdge.type, dotEdge.attr); - var graphEdge = convertEdge(subEdge); - graphData.edges.push(graphEdge); - }); - if (dotEdge.to instanceof Object && dotEdge.to.edges) { - dotEdge.to.edges.forEach(function (subEdge) { - var graphEdge = convertEdge(subEdge); - graphData.edges.push(graphEdge); - }); + // bind all keys to a call back (demo purposes) + _exportFunctions.bindAll = function(callback, type) { + if (type === undefined) { + type = 'keydown'; } - }); - } - - // copy the options - if (dotData.attr) { - graphData.options = dotData.attr; - } + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + _exportFunctions.bind(key,callback,type); + } + } + }; - return graphData; - } + // get the key label from an event + _exportFunctions.getKey = function(event) { + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { + return key; + } + else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { + return key; + } + else if (event.keyCode == _keys[key].code && key == 'shift') { + return key; + } + } + } + return "unknown key, currently not supported"; + }; - // exports - exports.parseDOT = parseDOT; - exports.DOTToGraph = DOTToGraph; + // unbind either a specific callback from a key or all of them (by leaving callback undefined) + _exportFunctions.unbind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (callback !== undefined) { + var newBindings = []; + var bound = _bound[type][_keys[key].code]; + if (bound !== undefined) { + for (var i = 0; i < bound.length; i++) { + if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { + newBindings.push(_bound[type][_keys[key].code][i]); + } + } + } + _bound[type][_keys[key].code] = newBindings; + } + else { + _bound[type][_keys[key].code] = []; + } + }; + // reset all bound variables. + _exportFunctions.reset = function() { + _bound = {keydown:{}, keyup:{}}; + }; -/***/ }, -/* 53 */ -/***/ function(module, exports, __webpack_require__) { + // unbind all listeners and reset all variables. + _exportFunctions.destroy = function() { + _bound = {keydown:{}, keyup:{}}; + container.removeEventListener('keydown', down, true); + container.removeEventListener('keyup', up, true); + }; - - function parseGephi(gephiJSON, options) { - var edges = []; - var nodes = []; - this.options = { - edges: { - inheritColor: true - }, - nodes: { - allowedToMove: false, - parseColor: false - } - }; + // create listeners. + container.addEventListener('keydown',down,true); + container.addEventListener('keyup',up,true); - if (options !== undefined) { - this.options.nodes['allowedToMove'] = options.allowedToMove | false; - this.options.nodes['parseColor'] = options.parseColor | false; - this.options.edges['inheritColor'] = options.inheritColor | true; + // return the public functions. + return _exportFunctions; } - var gEdges = gephiJSON.edges; - var gNodes = gephiJSON.nodes; - for (var i = 0; i < gEdges.length; i++) { - var edge = {}; - var gEdge = gEdges[i]; - edge['id'] = gEdge.id; - edge['from'] = gEdge.source; - edge['to'] = gEdge.target; - edge['attributes'] = gEdge.attributes; - // edge['value'] = gEdge.attributes !== undefined ? gEdge.attributes.Weight : undefined; - // edge['width'] = edge['value'] !== undefined ? undefined : edgegEdge.size; - edge['color'] = gEdge.color; - edge['inheritColor'] = edge['color'] !== undefined ? false : this.options.inheritColor; - edges.push(edge); - } + return keycharm; + })); - for (var i = 0; i < gNodes.length; i++) { - var node = {}; - var gNode = gNodes[i]; - node['id'] = gNode.id; - node['attributes'] = gNode.attributes; - node['x'] = gNode.x; - node['y'] = gNode.y; - node['label'] = gNode.label; - if (this.options.nodes.parseColor == true) { - node['color'] = gNode.color; - } - else { - node['color'] = gNode.color !== undefined ? {background:gNode.color, border:gNode.color} : undefined; - } - node['radius'] = gNode.size; - node['allowedToMoveX'] = this.options.nodes.allowedToMove; - node['allowedToMoveY'] = this.options.nodes.allowedToMove; - nodes.push(node); - } - return {nodes:nodes, edges:edges}; - } - exports.parseGephi = parseGephi; /***/ }, -/* 54 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(1); + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js + //! version : 2.9.0 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com - /** - * @class Groups - * This class can store groups and properties specific for groups. - */ - function Groups() { - this.clear(); - this.defaultIndex = 0; - this.groupsArray = []; - this.groupIndex = 0; - this.useDefaultGroups = true; - } + (function (undefined) { + /************************************ + Constants + ************************************/ + var moment, + VERSION = '2.9.0', + // the global-scope this is NOT the global object in Node.js + globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, + oldGlobalMoment, + round = Math.round, + hasOwnProperty = Object.prototype.hasOwnProperty, + i, - /** - * default constants for group colors - */ - Groups.DEFAULT = [ - {border: "#2B7CE9", background: "#97C2FC", highlight: {border: "#2B7CE9", background: "#D2E5FF"}, hover: {border: "#2B7CE9", background: "#D2E5FF"}}, // 0: blue - {border: "#FFA500", background: "#FFFF00", highlight: {border: "#FFA500", background: "#FFFFA3"}, hover: {border: "#FFA500", background: "#FFFFA3"}}, // 1: yellow - {border: "#FA0A10", background: "#FB7E81", highlight: {border: "#FA0A10", background: "#FFAFB1"}, hover: {border: "#FA0A10", background: "#FFAFB1"}}, // 2: red - {border: "#41A906", background: "#7BE141", highlight: {border: "#41A906", background: "#A1EC76"}, hover: {border: "#41A906", background: "#A1EC76"}}, // 3: green - {border: "#E129F0", background: "#EB7DF4", highlight: {border: "#E129F0", background: "#F0B3F5"}, hover: {border: "#E129F0", background: "#F0B3F5"}}, // 4: magenta - {border: "#7C29F0", background: "#AD85E4", highlight: {border: "#7C29F0", background: "#D3BDF0"}, hover: {border: "#7C29F0", background: "#D3BDF0"}}, // 5: purple - {border: "#C37F00", background: "#FFA807", highlight: {border: "#C37F00", background: "#FFCA66"}, hover: {border: "#C37F00", background: "#FFCA66"}}, // 6: orange - {border: "#4220FB", background: "#6E6EFD", highlight: {border: "#4220FB", background: "#9B9BFD"}, hover: {border: "#4220FB", background: "#9B9BFD"}}, // 7: darkblue - {border: "#FD5A77", background: "#FFC0CB", highlight: {border: "#FD5A77", background: "#FFD1D9"}, hover: {border: "#FD5A77", background: "#FFD1D9"}}, // 8: pink - {border: "#4AD63A", background: "#C2FABC", highlight: {border: "#4AD63A", background: "#E6FFE3"}, hover: {border: "#4AD63A", background: "#E6FFE3"}}, // 9: mint + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, - {border: "#990000", background: "#EE0000", highlight: {border: "#BB0000", background: "#FF3333"}, hover: {border: "#BB0000", background: "#FF3333"}}, // 10:bright red + // internal storage for locale config files + locales = {}, - {border: "#FF6000", background: "#FF6000", highlight: {border: "#FF6000", background: "#FF6000"}, hover: {border: "#FF6000", background: "#FF6000"}}, // 12: real orange - {border: "#97C2FC", background: "#2B7CE9", highlight: {border: "#D2E5FF", background: "#2B7CE9"}, hover: {border: "#D2E5FF", background: "#2B7CE9"}}, // 13: blue - {border: "#399605", background: "#255C03", highlight: {border: "#399605", background: "#255C03"}, hover: {border: "#399605", background: "#255C03"}}, // 14: green - {border: "#B70054", background: "#FF007E", highlight: {border: "#B70054", background: "#FF007E"}, hover: {border: "#B70054", background: "#FF007E"}}, // 15: magenta - {border: "#AD85E4", background: "#7C29F0", highlight: {border: "#D3BDF0", background: "#7C29F0"}, hover: {border: "#D3BDF0", background: "#7C29F0"}}, // 16: purple - {border: "#4557FA", background: "#000EA1", highlight: {border: "#6E6EFD", background: "#000EA1"}, hover: {border: "#6E6EFD", background: "#000EA1"}}, // 17: darkblue - {border: "#FFC0CB", background: "#FD5A77", highlight: {border: "#FFD1D9", background: "#FD5A77"}, hover: {border: "#FFD1D9", background: "#FD5A77"}}, // 18: pink - {border: "#C2FABC", background: "#74D66A", highlight: {border: "#E6FFE3", background: "#74D66A"}, hover: {border: "#E6FFE3", background: "#74D66A"}}, // 19: mint - - {border: "#EE0000", background: "#990000", highlight: {border: "#FF3333", background: "#BB0000"}, hover: {border: "#FF3333", background: "#BB0000"}}, // 20:bright red - ]; + // extra moment internal properties (plugins register props here) + momentProperties = [], + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module && module.exports), - /** - * Clear all groups - */ - Groups.prototype.clear = function () { - this.groups = {}; - this.groups.length = function() - { - var i = 0; - for ( var p in this ) { - if (this.hasOwnProperty(p)) { - i++; - } - } - return i; - } - }; + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, - /** - * get group properties of a groupname. If groupname is not found, a new group - * is added. - * @param {*} groupname Can be a number, string, Date, etc. - * @return {Object} group The created group, containing all group properties - */ - Groups.prototype.get = function (groupname) { - var group = this.groups[groupname]; - if (group == undefined) { - if (this.useDefaultGroups === false && this.groupsArray.length > 0) { - // create new group - var index = this.groupIndex % this.groupsArray.length; - this.groupIndex++; - group = {}; - group.color = this.groups[this.groupsArray[index]]; - this.groups[groupname] = group; - } - else { - // create new group - var index = this.defaultIndex % Groups.DEFAULT.length; - this.defaultIndex++; - group = {}; - group.color = Groups.DEFAULT[index]; - this.groups[groupname] = group; - } - } + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, - return group; - }; + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - /** - * Add a custom group style - * @param {String} groupName - * @param {Object} style An object containing borderColor, - * backgroundColor, etc. - * @return {Object} group The created group object - */ - Groups.prototype.add = function (groupName, style) { - this.groups[groupName] = style; - this.groupsArray.push(groupName); - return style; - }; + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - module.exports = Groups; + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', -/***/ }, -/* 55 */ -/***/ function(module, exports, __webpack_require__) { + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], - /** - * @class Images - * This class loads images and keeps them stored. - */ - function Images() { - this.images = {}; - this.imageBroken = {}; - this.callback = undefined; - } + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], - /** - * Set an onload callback function. This will be called each time an image - * is loaded - * @param {function} callback - */ - Images.prototype.setOnloadCallback = function(callback) { - this.callback = callback; - }; + // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, - /** - * - * @param {string} url Url of the image - * @param {string} url Url of an image to use if the url image is not found - * @return {Image} img The image object - */ - Images.prototype.load = function(url, brokenUrl) { - var img = this.images[url]; // make a pointer - if (img === undefined) { - // create the image - var me = this; - img = new Image(); - img.onload = function () { - // IE11 fix -- thanks dponch! - if (this.width == 0) { - document.body.appendChild(this); - this.width = this.offsetWidth; - this.height = this.offsetHeight; - document.body.removeChild(this); - } + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 + }, - if (me.callback) { - me.images[url] = img; - me.callback(this); - } - }; + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + Q : 'quarter', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' + }, - img.onerror = function () { - if (brokenUrl === undefined) { - console.error("Could not load image:", url); - delete this.src; - if (me.callback) { - me.callback(this); - } - } - else { - if (me.imageBroken[url] === true) { - if (this.src == brokenUrl) { - console.error("Could not load brokenImage:", brokenUrl); - delete this.src; - if (me.callback) { - me.callback(this); - } - } - else { - console.error("Could not load image:", url); - this.src = brokenUrl; - } - } - else { - console.error("Could not load image:", url); - this.src = brokenUrl; - me.imageBroken[url] = true; - } - } - }; + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' + }, - img.src = url; - } + // format function strings + formatFunctions = {}, - return img; - }; + // default relative time thresholds + relativeTimeThresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }, - module.exports = Images; + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.localeData().monthsShort(this, format); + }, + MMMM : function (format) { + return this.localeData().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.localeData().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.localeData().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.localeData().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); + }, + z : function () { + return this.zoneAbbr(); + }, + zz : function () { + return this.zoneName(); + }, + x : function () { + return this.valueOf(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); + } + }, -/***/ }, -/* 56 */ -/***/ function(module, exports, __webpack_require__) { + deprecations = {}, - var util = __webpack_require__(1); + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], - /** - * @class Node - * A node. A node can be connected to other nodes via one or multiple edges. - * @param {object} properties An object containing properties for the node. All - * properties are optional, except for the id. - * {number} id Id of the node. Required - * {string} label Text label for the node - * {number} x Horizontal position of the node - * {number} y Vertical position of the node - * {string} shape Node shape, available: - * "database", "circle", "ellipse", - * "box", "image", "text", "dot", - * "star", "triangle", "triangleDown", - * "square", "icon" - * {string} image An image url - * {string} title An title text, can be HTML - * {anytype} group A group name or number - * @param {Network.Images} imagelist A list with images. Only needed - * when the node has an image - * @param {Network.Groups} grouplist A list with groups. Needed for - * retrieving group properties - * @param {Object} constants An object with default values for - * example for the color - * - */ - function Node(properties, imagelist, grouplist, networkConstants) { - var constants = util.selectiveBridgeObject(['nodes'],networkConstants); - this.options = constants.nodes; + updateInProgress = false; - this.selected = false; - this.hover = false; + // Pick the first defined of two or three arguments. dfl comes from + // default. + function dfl(a, b, c) { + switch (arguments.length) { + case 2: return a != null ? a : b; + case 3: return a != null ? a : b != null ? b : c; + default: throw new Error('Implement me'); + } + } - this.edges = []; // all edges connected to this node - this.dynamicEdges = []; - this.reroutedEdges = {}; + function hasOwnProp(a, b) { + return hasOwnProperty.call(a, b); + } - // set defaults for the properties - this.id = undefined; - this.allowedToMoveX = false; - this.allowedToMoveY = false; - this.xFixed = false; - this.yFixed = false; - this.horizontalAlignLeft = true; // these are for the navigation controls - this.verticalAlignTop = true; // these are for the navigation controls - this.baseRadiusValue = networkConstants.nodes.radius; - this.radiusFixed = false; - this.level = -1; - this.preassignedLevel = false; - this.hierarchyEnumerated = false; - this.labelDimensions = {top:0, left:0, width:0, height:0, yLine:0}; // could be cached - this.boundingBox = {top:0, left:0, right:0, bottom:0}; + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; + } - this.imagelist = imagelist; - this.grouplist = grouplist; + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } - // physics properties - this.fx = 0.0; // external force x - this.fy = 0.0; // external force y - this.vx = 0.0; // velocity x - this.vy = 0.0; // velocity y - this.x = null; - this.y = null; - this.predefinedPosition = false; // used to check if initial zoomExtent should just take the range or approximate + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + printMsg(msg); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } - // used for reverting to previous position on stabilization - this.previousState = {vx:0,vy:0,x:0,y:0}; + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; + } + } - this.damping = networkConstants.physics.damping; // written every time gravity is calculated - this.fixedData = {x:null,y:null}; + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.localeData().ordinal(func.call(this, a), period); + }; + } - this.setProperties(properties, constants); - - // creating the variables for clustering - this.resetCluster(); - this.clusterSession = 0; - this.clusterSizeWidthFactor = networkConstants.clustering.nodeScaling.width; - this.clusterSizeHeightFactor = networkConstants.clustering.nodeScaling.height; - this.clusterSizeRadiusFactor = networkConstants.clustering.nodeScaling.radius; - this.maxNodeSizeIncrements = networkConstants.clustering.maxNodeSizeIncrements; - this.growthIndicator = 0; - - // variables to tell the node about the network. - this.networkScaleInv = 1; - this.networkScale = 1; - this.canvasTopLeft = {"x": -300, "y": -300}; - this.canvasBottomRight = {"x": 300, "y": 300}; - this.parentEdgeId = null; - } + function monthDiff(a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } - /** - * Revert the position and velocity of the previous step. - */ - Node.prototype.revertPosition = function() { - this.x = this.previousState.x; - this.y = this.previousState.y; - this.vx = this.previousState.vx; - this.vy = this.previousState.vy; - } + return -(wholeMonthDiff + adjust); + } + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - /** - * (re)setting the clustering variables and objects - */ - Node.prototype.resetCluster = function() { - // clustering variables - this.formationScale = undefined; // this is used to determine when to open the cluster - this.clusterSize = 1; // this signifies the total amount of nodes in this cluster - this.containedNodes = {}; - this.containedEdges = {}; - this.clusterSessions = []; - }; - /** - * Attach a edge to the node - * @param {Edge} edge - */ - Node.prototype.attachEdge = function(edge) { - if (this.edges.indexOf(edge) == -1) { - this.edges.push(edge); - } - if (this.dynamicEdges.indexOf(edge) == -1) { - this.dynamicEdges.push(edge); - } - }; + function meridiemFixWrap(locale, hour, meridiem) { + var isPm; - /** - * Detach a edge from the node - * @param {Edge} edge - */ - Node.prototype.detachEdge = function(edge) { - var index = this.edges.indexOf(edge); - if (index != -1) { - this.edges.splice(index, 1); - } - index = this.dynamicEdges.indexOf(edge); - if (index != -1) { - this.dynamicEdges.splice(index, 1); - } - }; + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // thie is not supposed to happen + return hour; + } + } + /************************************ + Constructors + ************************************/ - /** - * Set or overwrite properties for the node - * @param {Object} properties an object with properties - * @param {Object} constants and object with default, global properties - */ - Node.prototype.setProperties = function(properties, constants) { - if (!properties) { - return; - } + function Locale() { + } - var fields = ['borderWidth','borderWidthSelected','shape','image','brokenImage','radius','fontColor', - 'fontSize','fontFace','fontFill','fontStrokeWidth','fontStrokeColor','group','mass','fontDrawThreshold', - 'scaleFontWithValue','fontSizeMaxVisible','customScalingFunction','iconFontFace', 'icon', 'iconColor', 'iconSize' - ]; - util.selectiveDeepExtend(fields, this.options, properties); + // Moment prototype object + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); + } + copyConfig(this, config); + this._d = new Date(+config._d); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + moment.updateOffset(this); + updateInProgress = false; + } + } - // basic properties - if (properties.id !== undefined) {this.id = properties.id;} - if (properties.label !== undefined) {this.label = properties.label; this.originalLabel = properties.label;} - if (properties.title !== undefined) {this.title = properties.title;} - if (properties.x !== undefined) {this.x = properties.x; this.predefinedPosition = true;} - if (properties.y !== undefined) {this.y = properties.y; this.predefinedPosition = true;} - if (properties.value !== undefined) {this.value = properties.value;} - if (properties.level !== undefined) {this.level = properties.level; this.preassignedLevel = true;} + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; - // navigation controls properties - if (properties.horizontalAlignLeft !== undefined) {this.horizontalAlignLeft = properties.horizontalAlignLeft;} - if (properties.verticalAlignTop !== undefined) {this.verticalAlignTop = properties.verticalAlignTop;} - if (properties.triggerFunction !== undefined) {this.triggerFunction = properties.triggerFunction;} + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; - if (this.id === undefined) { - throw "Node must have an id"; - } + this._data = {}; - // copy group properties - if (typeof properties.group === 'number' || (typeof properties.group === 'string' && properties.group != '')) { - var groupObj = this.grouplist.get(properties.group); - util.deepExtend(this.options, groupObj); - // the color object needs to be completely defined. Since groups can partially overwrite the colors, we parse it again, just in case. - this.options.color = util.parseColor(this.options.color); - } - // individual shape properties - if (properties.radius !== undefined) {this.baseRadiusValue = this.options.radius;} - if (properties.color !== undefined) {this.options.color = util.parseColor(properties.color);} + this._locale = moment.localeData(); - if (this.options.image !== undefined && this.options.image!= "") { - if (this.imagelist) { - this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage); - } - else { - throw "No imagelist provided"; + this._bubble(); } - } - - if (properties.allowedToMoveX !== undefined) { - this.xFixed = !properties.allowedToMoveX; - this.allowedToMoveX = properties.allowedToMoveX; - } - else if (properties.x !== undefined && this.allowedToMoveX == false) { - this.xFixed = true; - } + /************************************ + Helpers + ************************************/ - if (properties.allowedToMoveY !== undefined) { - this.yFixed = !properties.allowedToMoveY; - this.allowedToMoveY = properties.allowedToMoveY; - } - else if (properties.y !== undefined && this.allowedToMoveY == false) { - this.yFixed = true; - } - - this.radiusFixed = this.radiusFixed || (properties.radius !== undefined); - if (this.options.shape === 'image' || this.options.shape === 'circularImage') { - this.options.radiusMin = constants.nodes.widthMin; - this.options.radiusMax = constants.nodes.widthMax; - } + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } - // choose draw method depending on the shape - switch (this.options.shape) { - case 'database': this.draw = this._drawDatabase; this.resize = this._resizeDatabase; break; - case 'box': this.draw = this._drawBox; this.resize = this._resizeBox; break; - case 'circle': this.draw = this._drawCircle; this.resize = this._resizeCircle; break; - case 'ellipse': this.draw = this._drawEllipse; this.resize = this._resizeEllipse; break; - // TODO: add diamond shape - case 'image': this.draw = this._drawImage; this.resize = this._resizeImage; break; - case 'circularImage': this.draw = this._drawCircularImage; this.resize = this._resizeCircularImage; break; - case 'text': this.draw = this._drawText; this.resize = this._resizeText; break; - case 'dot': this.draw = this._drawDot; this.resize = this._resizeShape; break; - case 'square': this.draw = this._drawSquare; this.resize = this._resizeShape; break; - case 'triangle': this.draw = this._drawTriangle; this.resize = this._resizeShape; break; - case 'triangleDown': this.draw = this._drawTriangleDown; this.resize = this._resizeShape; break; - case 'star': this.draw = this._drawStar; this.resize = this._resizeShape; break; - case 'icon': this.draw = this._drawIcon; this.resize = this._resizeIcon; break; - default: this.draw = this._drawEllipse; this.resize = this._resizeEllipse; break; - } - // reset the size of the node, this can be changed - this._reset(); + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } - }; + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } - /** - * select this node - */ - Node.prototype.select = function() { - this.selected = true; - this._reset(); - }; + return a; + } - /** - * unselect this node - */ - Node.prototype.unselect = function() { - this.selected = false; - this._reset(); - }; + function copyConfig(to, from) { + var i, prop, val; + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } - /** - * Reset the calculated size of the node, forces it to recalculate its size - */ - Node.prototype.clearSizeCache = function() { - this._reset(); - }; + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } + } + } - /** - * Reset the calculated size of the node, forces it to recalculate its size - * @private - */ - Node.prototype._reset = function() { - this.width = undefined; - this.height = undefined; - }; + return to; + } - /** - * get the title of this node. - * @return {string} title The title of the node, or undefined when no title - * has been set. - */ - Node.prototype.getTitle = function() { - return typeof this.title === "function" ? this.title() : this.title; - }; + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } - /** - * Calculate the distance to the border of the Node - * @param {CanvasRenderingContext2D} ctx - * @param {Number} angle Angle in radians - * @returns {number} distance Distance to the border in pixels - */ - Node.prototype.distanceToBorder = function (ctx, angle) { - var borderWidth = 1; + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; - if (!this.width) { - this.resize(ctx); - } + while (output.length < targetLength) { + output = '0' + output; + } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } - switch (this.options.shape) { - case 'circle': - case 'dot': - return this.options.radius+ borderWidth; + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; - case 'ellipse': - var a = this.width / 2; - var b = this.height / 2; - var w = (Math.sin(angle) * a); - var h = (Math.cos(angle) * b); - return a * b / Math.sqrt(w * w + h * h); + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } - // TODO: implement distanceToBorder for database - // TODO: implement distanceToBorder for triangle - // TODO: implement distanceToBorder for triangleDown + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - case 'box': - case 'image': - case 'text': - default: - if (this.width) { - return Math.min( - Math.abs(this.width / 2 / Math.cos(angle)), - Math.abs(this.height / 2 / Math.sin(angle))) + borderWidth; - // TODO: reckon with border radius too in case of box - } - else { - return 0; - } + return res; + } - } - // TODO: implement calculation of distance to border for all shapes - }; + function momentsDifference(base, other) { + var res; + other = makeAs(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } - /** - * Set forces acting on the node - * @param {number} fx Force in horizontal direction - * @param {number} fy Force in vertical direction - */ - Node.prototype._setForce = function(fx, fy) { - this.fx = fx; - this.fy = fy; - }; + return res; + } - /** - * Add forces acting on the node - * @param {number} fx Force in horizontal direction - * @param {number} fy Force in vertical direction - * @private - */ - Node.prototype._addForce = function(fx, fy) { - this.fx += fx; - this.fy += fy; - }; + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } - /** - * Store the state before the next step - */ - Node.prototype.storeState = function() { - this.previousState.x = this.x; - this.previousState.y = this.y; - this.previousState.vx = this.vx; - this.previousState.vy = this.vy; - } + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); + return this; + }; + } - /** - * Perform one discrete step for the node - * @param {number} interval Time interval in seconds - */ - Node.prototype.discreteStep = function(interval) { - this.storeState(); - if (!this.xFixed) { - var dx = this.damping * this.vx; // damping force - var ax = (this.fx - dx) / this.options.mass; // acceleration - this.vx += ax * interval; // velocity - this.x += this.vx * interval; // position - } - else { - this.fx = 0; - this.vx = 0; - } + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; - if (!this.yFixed) { - var dy = this.damping * this.vy; // damping force - var ay = (this.fy - dy) / this.options.mass; // acceleration - this.vy += ay * interval; // velocity - this.y += this.vy * interval; // position - } - else { - this.fy = 0; - this.vy = 0; - } - }; + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); + } + if (months) { + rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + moment.updateOffset(mom, days || months); + } + } + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } - /** - * Perform one discrete step for the node - * @param {number} interval Time interval in seconds - * @param {number} maxVelocity The speed limit imposed on the velocity - */ - Node.prototype.discreteStepLimited = function(interval, maxVelocity) { - this.storeState(); - if (!this.xFixed) { - var dx = this.damping * this.vx; // damping force - var ax = (this.fx - dx) / this.options.mass; // acceleration - this.vx += ax * interval; // velocity - this.vx = (Math.abs(this.vx) > maxVelocity) ? ((this.vx > 0) ? maxVelocity : -maxVelocity) : this.vx; - this.x += this.vx * interval; // position - } - else { - this.fx = 0; - this.vx = 0; - } - - if (!this.yFixed) { - var dy = this.damping * this.vy; // damping force - var ay = (this.fy - dy) / this.options.mass; // acceleration - this.vy += ay * interval; // velocity - this.vy = (Math.abs(this.vy) > maxVelocity) ? ((this.vy > 0) ? maxVelocity : -maxVelocity) : this.vy; - this.y += this.vy * interval; // position - } - else { - this.fy = 0; - this.vy = 0; - } - }; + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } - /** - * Check if this node has a fixed x and y position - * @return {boolean} true if fixed, false if not - */ - Node.prototype.isFixed = function() { - return (this.xFixed && this.yFixed); - }; + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } - /** - * Check if this node is moving - * @param {number} vmin the minimum velocity considered as "moving" - * @return {boolean} true if moving, false if it has no velocity - */ - Node.prototype.isMoving = function(vmin) { - var velocity = Math.sqrt(Math.pow(this.vx,2) + Math.pow(this.vy,2)); - // this.velocity = Math.sqrt(Math.pow(this.vx,2) + Math.pow(this.vy,2)) - return (velocity > vmin); - }; + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; - /** - * check if this node is selecte - * @return {boolean} selected True if node is selected, else false - */ - Node.prototype.isSelected = function() { - return this.selected; - }; + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } - /** - * Retrieve the value of the node. Can be undefined - * @return {Number} value - */ - Node.prototype.getValue = function() { - return this.value; - }; + return normalizedInput; + } - /** - * Calculate the distance from the nodes location to the given location (x,y) - * @param {Number} x - * @param {Number} y - * @return {Number} value - */ - Node.prototype.getDistance = function(x, y) { - var dx = this.x - x, - dy = this.y - y; - return Math.sqrt(dx * dx + dy * dy); - }; + function makeList(field) { + var count, setter; + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; + } - /** - * Adjust the value range of the node. The node will adjust it's radius - * based on its value. - * @param {Number} min - * @param {Number} max - */ - Node.prototype.setValueRange = function(min, max, total) { - if (!this.radiusFixed && this.value !== undefined) { - var scale = this.options.customScalingFunction(min, max, total, this.value); - var radiusDiff = this.options.radiusMax - this.options.radiusMin; - if (this.options.scaleFontWithValue == true) { - var fontDiff = this.options.fontSizeMax - this.options.fontSizeMin; - this.options.fontSize = this.options.fontSizeMin + scale * fontDiff; - } - this.options.radius = this.options.radiusMin + scale * radiusDiff; - } + moment[field] = function (format, index) { + var i, getter, + method = moment._locale[field], + results = []; - this.baseRadiusValue = this.options.radius; - }; + if (typeof format === 'number') { + index = format; + format = undefined; + } - /** - * Draw this node in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - */ - Node.prototype.draw = function(ctx) { - throw "Draw method not initialized for node"; - }; + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment._locale, m, format || ''); + }; - /** - * Recalculate the size of this node in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - */ - Node.prototype.resize = function(ctx) { - throw "Resize method not initialized for node"; - }; + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } + }; + } - /** - * Check if this object is overlapping with the provided object - * @param {Object} obj an object with parameters left, top, right, bottom - * @return {boolean} True if location is located on node - */ - Node.prototype.isOverlappingWith = function(obj) { - return (this.left < obj.right && - this.left + this.width > obj.left && - this.top < obj.bottom && - this.top + this.height > obj.top); - }; + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - Node.prototype._resizeImage = function (ctx) { - // TODO: pre calculate the image size + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } + } - if (!this.width || !this.height) { // undefined or 0 - var width, height; - if (this.value) { - this.options.radius= this.baseRadiusValue; - var scale = this.imageObj.height / this.imageObj.width; - if (scale !== undefined) { - width = this.options.radius|| this.imageObj.width; - height = this.options.radius* scale || this.imageObj.height; - } - else { - width = 0; - height = 0; - } - } - else { - width = this.imageObj.width; - height = this.imageObj.height; + return value; } - this.width = width; - this.height = height; - this.growthIndicator = 0; - if (this.width > 0 && this.height > 0) { - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - width; + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); } - } - }; - - Node.prototype._drawImageAtPosition = function (ctx) { - if (this.imageObj.width != 0 ) { - // draw the shade - if (this.clusterSize > 1) { - var lineWidth = ((this.clusterSize > 1) ? 10 : 0.0); - lineWidth *= this.networkScaleInv; - lineWidth = Math.min(0.2 * this.width,lineWidth); - ctx.globalAlpha = 0.5; - ctx.drawImage(this.imageObj, this.left - lineWidth, this.top - lineWidth, this.width + 2*lineWidth, this.height + 2*lineWidth); + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; } - // draw the image - ctx.globalAlpha = 1.0; - ctx.drawImage(this.imageObj, this.left, this.top, this.width, this.height); - } - }; + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } - Node.prototype._drawImageLabel = function (ctx) { - var yLabel; - var offset = 0; - - if (this.height){ - offset = this.height / 2; - var labelDimensions = this.getTextSize(ctx); - - if (labelDimensions.lineCount >= 1){ - offset += labelDimensions.height / 2; - offset += 3; + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; } - } - - yLabel = this.y + offset; - this._label(ctx, this.label, this.x, yLabel, undefined); - }; + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 24 || + (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || + m._a[SECOND] !== 0 || + m._a[MILLISECOND] !== 0)) ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; - Node.prototype._drawImage = function (ctx) { - this._resizeImage(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } - this._drawImageAtPosition(ctx); + m._pf.overflow = overflow; + } + } - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; - this._drawImageLabel(ctx); - this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); - this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); - this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); - }; + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0 && + m._pf.bigHour === undefined; + } + } + return m._isValid; + } - Node.prototype._resizeCircularImage = function (ctx) { - if(!this.imageObj.src || !this.imageObj.width || !this.imageObj.height){ - if (!this.width) { - var diameter = this.options.radius * 2; - this.width = diameter; - this.height = diameter; + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } - // scaling used for clustering - //this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; - //this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; - this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; - this.growthIndicator = this.options.radius- 0.5*diameter; - this._swapToImageResizeWhenImageLoaded = true; + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; } - } - else { - if (this._swapToImageResizeWhenImageLoaded) { - this.width = 0; - this.height = 0; - delete this._swapToImageResizeWhenImageLoaded; + + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } + } + return locales[name]; } - this._resizeImage(ctx); - } - }; + // Return a moment from input, that is local/utc/utcOffset equivalent to + // model. + function makeAs(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (moment.isMoment(input) || isDate(input) ? + +input : +moment(input)) - (+res); + // Use low-level api, because this fn is low-level api. + res._d.setTime(+res._d + diff); + moment.updateOffset(res, false); + return res; + } else { + return moment(input).local(); + } + } - Node.prototype._drawCircularImage = function (ctx) { - this._resizeCircularImage(ctx); + /************************************ + Locale + ************************************/ - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; - - var centerX = this.left + (this.width / 2); - var centerY = this.top + (this.height / 2); - var radius = Math.abs(this.height / 2); - this._drawRawCircle(ctx, centerX, centerY, radius); + extend(Locale.prototype, { - ctx.save(); - ctx.circle(this.x, this.y, radius); - ctx.stroke(); - ctx.clip(); + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); + }, - this._drawImageAtPosition(ctx); + _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + months : function (m) { + return this._months[m.month()]; + }, - ctx.restore(); + _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, - this.boundingBox.top = this.y - this.options.radius; - this.boundingBox.left = this.x - this.options.radius; - this.boundingBox.right = this.x + this.options.radius; - this.boundingBox.bottom = this.y + this.options.radius; + monthsParse : function (monthName, format, strict) { + var i, mom, regex; - this._drawImageLabel(ctx); - - this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); - this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); - this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); - }; + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } - Node.prototype._resizeBox = function (ctx) { - if (!this.width) { - var margin = 5; - var textSize = this.getTextSize(ctx); - this.width = textSize.width + 2 * margin; - this.height = textSize.height + 2 * margin; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = moment.utc([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + }, - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; - this.growthIndicator = this.width - (textSize.width + 2 * margin); - // this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; + _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, - } - }; + _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, - Node.prototype._drawBox = function (ctx) { - this._resizeBox(ctx); + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + weekdaysParse : function (weekdayName) { + var i, mom, regex; - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - - ctx.roundRect(this.left-2*ctx.lineWidth, this.top-2*ctx.lineWidth, this.width+4*ctx.lineWidth, this.height+4*ctx.lineWidth, this.options.radius); - ctx.stroke(); - } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - - ctx.roundRect(this.left, this.top, this.width, this.height, this.options.radius); - ctx.fill(); - ctx.stroke(); - - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; - - this._label(ctx, this.label, this.x, this.y); - }; - - - Node.prototype._resizeDatabase = function (ctx) { - if (!this.width) { - var margin = 5; - var textSize = this.getTextSize(ctx); - var size = textSize.width + 2 * margin; - this.width = size; - this.height = size; - - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - size; - } - }; - - Node.prototype._drawDatabase = function (ctx) { - this._resizeDatabase(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; - - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + }, - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + _longDateFormat : { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; + } + return output; + }, - ctx.database(this.x - this.width/2 - 2*ctx.lineWidth, this.y - this.height*0.5 - 2*ctx.lineWidth, this.width + 4*ctx.lineWidth, this.height + 4*ctx.lineWidth); - ctx.stroke(); - } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - ctx.database(this.x - this.width/2, this.y - this.height*0.5, this.width, this.height); - ctx.fill(); - ctx.stroke(); + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; - this._label(ctx, this.label, this.x, this.y); - }; + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom, now) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom, [now]) : output; + }, + _relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, - Node.prototype._resizeCircle = function (ctx) { - if (!this.width) { - var margin = 5; - var textSize = this.getTextSize(ctx); - var diameter = Math.max(textSize.width, textSize.height) + 2 * margin; - this.options.radius = diameter / 2; + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, - this.width = diameter; - this.height = diameter; + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, - // scaling used for clustering - // this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; - // this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; - this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; - this.growthIndicator = this.options.radius- 0.5*diameter; - } - }; + ordinal : function (number) { + return this._ordinal.replace('%d', number); + }, + _ordinal : '%d', + _ordinalParse : /\d{1,2}/, - Node.prototype._drawRawCircle = function (ctx, x, y, radius) { - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; + preparse : function (string) { + return string; + }, - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + postformat : function (string) { + return string; + }, - ctx.circle(x, y, radius+2*ctx.lineWidth); - ctx.stroke(); - } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - ctx.circle(this.x, this.y, radius); - ctx.fill(); - ctx.stroke(); - }; + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, - Node.prototype._drawCircle = function (ctx) { - this._resizeCircle(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + firstDayOfWeek : function () { + return this._week.dow; + }, - this._drawRawCircle(ctx, this.x, this.y, this.options.radius); + firstDayOfYear : function () { + return this._week.doy; + }, - this.boundingBox.top = this.y - this.options.radius; - this.boundingBox.left = this.x - this.options.radius; - this.boundingBox.right = this.x + this.options.radius; - this.boundingBox.bottom = this.y + this.options.radius; + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; + } + }); - this._label(ctx, this.label, this.x, this.y); - }; + /************************************ + Formatting + ************************************/ - Node.prototype._resizeEllipse = function (ctx) { - if (!this.width) { - var textSize = this.getTextSize(ctx); - this.width = textSize.width * 1.5; - this.height = textSize.height * 2; - if (this.width < this.height) { - this.width = this.height; + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); } - var defaultSize = this.width; - - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - defaultSize; - } - }; - Node.prototype._drawEllipse = function (ctx) { - this._resizeEllipse(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } - ctx.ellipse(this.left-2*ctx.lineWidth, this.top-2*ctx.lineWidth, this.width+4*ctx.lineWidth, this.height+4*ctx.lineWidth); - ctx.stroke(); - } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + format = expandFormat(format, m.localeData()); - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } - ctx.ellipse(this.left, this.top, this.width, this.height); - ctx.fill(); - ctx.stroke(); + return formatFunctions[format](m); + } - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; + function expandFormat(format, locale) { + var i = 5; - this._label(ctx, this.label, this.x, this.y); - }; + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } - Node.prototype._drawDot = function (ctx) { - this._drawShape(ctx, 'circle'); - }; + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } - Node.prototype._drawTriangle = function (ctx) { - this._drawShape(ctx, 'triangle'); - }; + return format; + } - Node.prototype._drawTriangleDown = function (ctx) { - this._drawShape(ctx, 'triangleDown'); - }; - Node.prototype._drawSquare = function (ctx) { - this._drawShape(ctx, 'square'); - }; + /************************************ + Parsing + ************************************/ - Node.prototype._drawStar = function (ctx) { - this._drawShape(ctx, 'star'); - }; - Node.prototype._resizeShape = function (ctx) { - if (!this.width) { - this.options.radius= this.baseRadiusValue; - var size = 2 * this.options.radius; - this.width = size; - this.height = size; + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'Q': + return parseTokenOneDigit; + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { + return parseTokenOneDigit; + } + /* falls through */ + case 'SS': + if (strict) { + return parseTokenTwoDigits; + } + /* falls through */ + case 'SSS': + if (strict) { + return parseTokenThreeDigits; + } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return config._locale._meridiemParse; + case 'x': + return parseTokenOffsetMs; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + case 'Do': + return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); + return a; + } + } - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - size; - } - }; + function utcOffsetFromString(string) { + string = string || ''; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); - Node.prototype._drawShape = function (ctx, shape) { - this._resizeShape(ctx); + return parts[0] === '+' ? minutes : -minutes; + } - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - var radiusMultiplier = 2; + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + case 'Do' : + if (input != null) { + datePartArray[DATE] = toInt(parseInt( + input.match(/\d{1,2}/)[0], 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); + } - // choose draw method depending on the shape - switch (shape) { - case 'dot': radiusMultiplier = 2; break; - case 'square': radiusMultiplier = 2; break; - case 'triangle': radiusMultiplier = 3; break; - case 'triangleDown': radiusMultiplier = 3; break; - case 'star': radiusMultiplier = 4; break; - } - - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = moment.parseTwoDigitYear(input); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._meridiem = input; + // config._isPm = config._locale.isPM(input); + break; + // HOUR + case 'h' : // fall through to hh + case 'hh' : + config._pf.bigHour = true; + /* falls through */ + case 'H' : // fall through to HH + case 'HH' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX OFFSET (MILLISECONDS) + case 'x': + config._d = new Date(toInt(input)); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = utcOffsetFromString(input); + break; + // WEEKDAY - human + case 'dd': + case 'ddd': + case 'dddd': + a = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (a != null) { + config._w = config._w || {}; + config._w['d'] = a; + } else { + config._pf.invalidWeekday = input; + } + break; + // WEEK, WEEK DAY - numeric + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gggg': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = toInt(input); + } + break; + case 'gg': + case 'GG': + config._w = config._w || {}; + config._w[token] = moment.parseTwoDigitYear(input); + } + } - ctx[shape](this.x, this.y, this.options.radius+ radiusMultiplier * ctx.lineWidth); - ctx.stroke(); - } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - ctx[shape](this.x, this.y, this.options.radius); - ctx.fill(); - ctx.stroke(); + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - this.boundingBox.top = this.y - this.options.radius; - this.boundingBox.left = this.x - this.options.radius; - this.boundingBox.right = this.x + this.options.radius; - this.boundingBox.bottom = this.y + this.options.radius; + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); + week = dfl(w.W, 1); + weekday = dfl(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; - if (this.label) { - this._label(ctx, this.label, this.x, this.y + this.height / 2, undefined, 'hanging',true); - this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); - this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); - this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); - } - }; + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); - Node.prototype._resizeText = function (ctx) { - if (!this.width) { - var margin = 5; - var textSize = this.getTextSize(ctx); - this.width = textSize.width + 2 * margin; - this.height = textSize.height + 2 * margin; + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; + } + } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - (textSize.width + 2 * margin); - } - }; + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } - Node.prototype._drawText = function (ctx) { - this._resizeText(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; - this._label(ctx, this.label, this.x, this.y); + if (config._d) { + return; + } - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; - }; + currentDate = currentDateArray(config); - Node.prototype._resizeIcon = function (ctx) { - if (!this.width) { - var margin = 5; - var iconSize = - { - width: Number(this.options.iconSize), - height: Number(this.options.iconSize) - }; - this.width = iconSize.width + 2 * margin; - this.height = iconSize.height + 2 * margin; + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - (iconSize.width + 2 * margin); - } - }; + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - Node.prototype._drawIcon = function (ctx) { - this._resizeIcon(ctx); + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; + } - this.options.iconSize = this.options.iconSize || 50; + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; - this._icon(ctx); + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } - this.boundingBox.top = this.y - this.options.iconSize/2; - this.boundingBox.left = this.x - this.options.iconSize/2; - this.boundingBox.right = this.x + this.options.iconSize/2; - this.boundingBox.bottom = this.y + this.options.iconSize/2; + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } - if (this.label) { - var iconTextSpacing = 5; - this._label(ctx, this.label, this.x, this.y + this.height / 2 + iconTextSpacing, 'top', true); + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } - this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); - this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); - this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); - } - }; + if (config._nextDay) { + config._a[HOUR] = 24; + } + } - Node.prototype._icon = function (ctx) { - var relativeIconSize = Number(this.options.iconSize) * this.networkScale; - - if (this.options.icon && relativeIconSize > this.options.fontDrawThreshold - 1) { + function dateFromObject(config) { + var normalizedInput; - var iconSize = Number(this.options.iconSize); + if (config._d) { + return; + } - ctx.font = (this.selected ? "bold " : "") + iconSize + "px " + this.options.iconFontFace; + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day || normalizedInput.date, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; - // draw icon - ctx.fillStyle = this.options.iconColor || "black"; - ctx.textAlign = "center"; - ctx.textBaseline = "middle"; - ctx.fillText(this.options.icon, this.x, this.y); - } - }; - - Node.prototype._label = function (ctx, text, x, y, align, baseline, labelUnderNode) { - var relativeFontSize = Number(this.options.fontSize) * this.networkScale; - if (text && relativeFontSize >= this.options.fontDrawThreshold - 1) { - var fontSize = Number(this.options.fontSize); + dateFromConfig(config); + } - // this ensures that there will not be HUGE letters on screen by setting an upper limit on the visible text size (regardless of zoomLevel) - if (relativeFontSize >= this.options.fontSizeMaxVisible) { - fontSize = Number(this.options.fontSizeMaxVisible) * this.networkScaleInv; + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } } - // fade in when relative scale is between threshold and threshold - 1 - var fontColor = this.options.fontColor || "#000000"; - var strokecolor = this.options.fontStrokeColor; - if (relativeFontSize <= this.options.fontDrawThreshold) { - var opacity = Math.max(0,Math.min(1,1 - (this.options.fontDrawThreshold - relativeFontSize))); - fontColor = util.overrideOpacity(fontColor, opacity); - strokecolor = util.overrideOpacity(strokecolor, opacity); + // date from string and format string + function makeDateFromStringAndFormat(config) { + if (config._f === moment.ISO_8601) { + parseISO(config); + return; + } - } + config._a = []; + config._pf.empty = true; - ctx.font = (this.selected ? "bold " : "") + fontSize + "px " + this.options.fontFace; + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; - var lines = text.split('\n'); - var lineCount = lines.length; - var yLine = y + (1 - lineCount) / 2 * fontSize; - if (labelUnderNode == true) { - yLine = y + (1 - lineCount) / (2 * fontSize); - } + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - // font fill from edges now for nodes! - var width = ctx.measureText(lines[0]).width; - for (var i = 1; i < lineCount; i++) { - var lineWidth = ctx.measureText(lines[i]).width; - width = lineWidth > width ? lineWidth : width; - } - var height = fontSize * lineCount; - var left = x - width / 2; - var top = y - height / 2; - if (baseline == "hanging") { - top += 0.5 * fontSize; - top += 4; // distance from node, required because we use hanging. Hanging has less difference between browsers - yLine += 4; // distance from node - } - this.labelDimensions = {top:top,left:left,width:width,height:height,yLine:yLine}; + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; + } + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } + } - // create the fontfill background - if (this.options.fontFill !== undefined && this.options.fontFill !== null && this.options.fontFill !== "none") { - ctx.fillStyle = this.options.fontFill; - ctx.fillRect(left, top, width, height); + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (config._pf.bigHour === true && config._a[HOUR] <= 12) { + config._pf.bigHour = undefined; + } + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], + config._meridiem); + dateFromConfig(config); + checkOverflow(config); } - // draw text - ctx.fillStyle = fontColor; - ctx.textAlign = align || "center"; - ctx.textBaseline = baseline || "middle"; - if (this.options.fontStrokeWidth > 0){ - ctx.lineWidth = this.options.fontStrokeWidth; - ctx.strokeStyle = strokecolor; - ctx.lineJoin = 'round'; + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); } - for (var i = 0; i < lineCount; i++) { - if(this.options.fontStrokeWidth){ - ctx.strokeText(lines[i], x, yLine); - } - ctx.fillText(lines[i], x, yLine); - yLine += fontSize; + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } - } - }; + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, - Node.prototype.getTextSize = function(ctx) { - if (this.label !== undefined) { - var fontSize = Number(this.options.fontSize); - if (fontSize * this.networkScale > this.options.fontSizeMaxVisible) { - fontSize = Number(this.options.fontSizeMaxVisible) * this.networkScaleInv; - } - ctx.font = (this.selected ? "bold " : "") + fontSize + "px " + this.options.fontFace; + scoreToBeat, + i, + currentScore; - var lines = this.label.split('\n'), - height = (fontSize + 4) * lines.length, - width = 0; + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } - for (var i = 0, iMax = lines.length; i < iMax; i++) { - width = Math.max(width, ctx.measureText(lines[i]).width); - } + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); - return {"width": width, "height": height, lineCount: lines.length}; - } - else { - return {"width": 0, "height": 0, lineCount: 0}; - } - }; + if (!isValid(tempConfig)) { + continue; + } - /** - * this is used to determine if a node is visible at all. this is used to determine when it needs to be drawn. - * there is a safety margin of 0.3 * width; - * - * @returns {boolean} - */ - Node.prototype.inArea = function() { - if (this.width !== undefined) { - return (this.x + this.width *this.networkScaleInv >= this.canvasTopLeft.x && - this.x - this.width *this.networkScaleInv < this.canvasBottomRight.x && - this.y + this.height*this.networkScaleInv >= this.canvasTopLeft.y && - this.y - this.height*this.networkScaleInv < this.canvasBottomRight.y); - } - else { - return true; - } - }; + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; - /** - * checks if the core of the node is in the display area, this is used for opening clusters around zoom - * @returns {boolean} - */ - Node.prototype.inView = function() { - return (this.x >= this.canvasTopLeft.x && - this.x < this.canvasBottomRight.x && - this.y >= this.canvasTopLeft.y && - this.y < this.canvasBottomRight.y); - }; + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; - /** - * This allows the zoom level of the network to influence the rendering - * We store the inverted scale and the coordinates of the top left, and bottom right points of the canvas - * - * @param scale - * @param canvasTopLeft - * @param canvasBottomRight - */ - Node.prototype.setScaleAndPos = function(scale,canvasTopLeft,canvasBottomRight) { - this.networkScaleInv = 1.0/scale; - this.networkScale = scale; - this.canvasTopLeft = canvasTopLeft; - this.canvasBottomRight = canvasBottomRight; - }; + tempConfig._pf.score = currentScore; + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } - /** - * This allows the zoom level of the network to influence the rendering - * - * @param scale - */ - Node.prototype.setScale = function(scale) { - this.networkScaleInv = 1.0/scale; - this.networkScale = scale; - }; + extend(config, bestMoment || tempConfig); + } + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(parseTokenTimezone)) { + config._f += 'Z'; + } + makeDateFromStringAndFormat(config); + } else { + config._isValid = false; + } + } - /** - * set the velocity at 0. Is called when this node is contained in another during clustering - */ - Node.prototype.clearVelocity = function() { - this.vx = 0; - this.vy = 0; - }; + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); + } + } + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } - /** - * Basic preservation of (kinectic) energy - * - * @param massBeforeClustering - */ - Node.prototype.updateVelocity = function(massBeforeClustering) { - var energyBefore = this.vx * this.vx * massBeforeClustering; - //this.vx = (this.vx < 0) ? -Math.sqrt(energyBefore/this.options.mass) : Math.sqrt(energyBefore/this.options.mass); - this.vx = Math.sqrt(energyBefore/this.options.mass); - energyBefore = this.vy * this.vy * massBeforeClustering; - //this.vy = (this.vy < 0) ? -Math.sqrt(energyBefore/this.options.mass) : Math.sqrt(energyBefore/this.options.mass); - this.vy = Math.sqrt(energyBefore/this.options.mass); - }; + function makeDateFromInput(config) { + var input = config._i, matched; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + dateFromConfig(config); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); + } + } - module.exports = Node; + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } -/***/ }, -/* 57 */ -/***/ function(module, exports, __webpack_require__) { + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } - var util = __webpack_require__(1); - var Node = __webpack_require__(56); + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } + } + } + return input; + } - /** - * @class Edge - * - * A edge connects two nodes - * @param {Object} properties Object with properties. Must contain - * At least properties from and to. - * Available properties: from (number), - * to (number), label (string, color (string), - * width (number), style (string), - * length (number), title (string) - * @param {Network} network A Network object, used to find and edge to - * nodes. - * @param {Object} constants An object with default values for - * example for the color - */ - function Edge (properties, network, networkConstants) { - if (!network) { - throw "No network provided"; - } - var fields = ['edges','physics']; - var constants = util.selectiveBridgeObject(fields,networkConstants); - this.options = constants.edges; - this.physics = constants.physics; - this.options['smoothCurves'] = networkConstants['smoothCurves']; + /************************************ + Relative Time + ************************************/ - this.network = network; + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } - // initialize variables - this.id = undefined; - this.fromId = undefined; - this.toId = undefined; - this.title = undefined; - this.widthSelected = this.options.width * this.options.widthSelectionMultiplier; - this.value = undefined; - this.selected = false; - this.hover = false; - this.labelDimensions = {top:0,left:0,width:0,height:0,yLine:0}; // could be cached - this.dirtyLabel = true; - this.colorDirty = true; + function relativeTime(posNegDuration, withoutSuffix, locale) { + var duration = moment.duration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + years = round(duration.as('y')), - this.from = null; // a node - this.to = null; // a node - this.via = null; // a temp node + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < relativeTimeThresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < relativeTimeThresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; - this.fromBackup = null; // used to clean up after reconnect - this.toBackup = null;; // used to clean up after reconnect + args[2] = withoutSuffix; + args[3] = +posNegDuration > 0; + args[4] = locale; + return substituteTimeAgo.apply({}, args); + } - // we use this to be able to reconnect the edge to a cluster if its node is put into a cluster - // by storing the original information we can revert to the original connection when the cluser is opened. - this.originalFromId = []; - this.originalToId = []; - this.connected = false; + /************************************ + Week of Year + ************************************/ - this.widthFixed = false; - this.lengthFixed = false; - this.setProperties(properties); + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; - this.controlNodesEnabled = false; - this.controlNodes = {from:null, to:null, positions:{}}; - this.connectedNode = null; - } - /** - * Set or overwrite properties for the edge - * @param {Object} properties an object with properties - * @param {Object} constants and object with default, global properties - */ - Edge.prototype.setProperties = function(properties) { - this.colorDirty = true; - if (!properties) { - return; - } + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; + } - var fields = ['style','fontSize','fontFace','fontColor','fontFill','fontStrokeWidth','fontStrokeColor','width', - 'widthSelectionMultiplier','hoverWidth','arrowScaleFactor','dash','inheritColor','labelAlignment', 'opacity', - 'customScalingFunction','useGradients' - ]; - util.selectiveDeepExtend(fields, this.options, properties); + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } - if (properties.from !== undefined) {this.fromId = properties.from;} - if (properties.to !== undefined) {this.toId = properties.to;} + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } - if (properties.id !== undefined) {this.id = properties.id;} - if (properties.label !== undefined) {this.label = properties.label; this.dirtyLabel = true;} + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - if (properties.title !== undefined) {this.title = properties.title;} - if (properties.value !== undefined) {this.value = properties.value;} - if (properties.length !== undefined) {this.physics.springLength = properties.length;} + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; - if (properties.color !== undefined) { - this.options.inheritColor = false; - if (util.isString(properties.color)) { - this.options.color.color = properties.color; - this.options.color.highlight = properties.color; - } - else { - if (properties.color.color !== undefined) {this.options.color.color = properties.color.color;} - if (properties.color.highlight !== undefined) {this.options.color.highlight = properties.color.highlight;} - if (properties.color.hover !== undefined) {this.options.color.hover = properties.color.hover;} + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; } - } + /************************************ + Top Level Functions + ************************************/ + function makeMoment(config) { + var input = config._i, + format = config._f, + res; - // A node is connected when it has a from and to node. - this.connect(); - - this.widthFixed = this.widthFixed || (properties.width !== undefined); - this.lengthFixed = this.lengthFixed || (properties.length !== undefined); - - this.widthSelected = this.options.width* this.options.widthSelectionMultiplier; + config._locale = config._locale || moment.localeData(config._l); - // set draw method based on style - switch (this.options.style) { - case 'line': this.draw = this._drawLine; break; - case 'arrow': this.draw = this._drawArrow; break; - case 'arrow-center': this.draw = this._drawArrowCenter; break; - case 'dash-line': this.draw = this._drawDashLine; break; - default: this.draw = this._drawLine; break; - } - }; + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); + } + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } - /** - * Connect an edge to its nodes - */ - Edge.prototype.connect = function () { - this.disconnect(); + if (moment.isMoment(input)) { + return new Moment(input, true); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); + } - this.from = this.network.nodes[this.fromId] || null; - this.to = this.network.nodes[this.toId] || null; - this.connected = (this.from && this.to); + res = new Moment(config); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } - if (this.connected) { - this.from.attachEdge(this); - this.to.attachEdge(this); - } - else { - if (this.from) { - this.from.detachEdge(this); - } - if (this.to) { - this.to.detachEdge(this); + return res; } - } - }; - /** - * Disconnect an edge from its nodes - */ - Edge.prototype.disconnect = function () { - if (this.from) { - this.from.detachEdge(this); - this.from = null; - } - if (this.to) { - this.to.detachEdge(this); - this.to = null; - } + moment = function (input, format, locale, strict) { + var c; - this.connected = false; - }; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = locale; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); - /** - * get the title of this edge. - * @return {string} title The title of the edge, or undefined when no title - * has been set. - */ - Edge.prototype.getTitle = function() { - return typeof this.title === "function" ? this.title() : this.title; - }; + return makeMoment(c); + }; + moment.suppressDeprecationWarnings = false; - /** - * Retrieve the value of the edge. Can be undefined - * @return {Number} value - */ - Edge.prototype.getValue = function() { - return this.value; - }; + moment.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); - /** - * Adjust the value range of the edge. The edge will adjust it's width - * based on its value. - * @param {Number} min - * @param {Number} max - */ - Edge.prototype.setValueRange = function(min, max, total) { - if (!this.widthFixed && this.value !== undefined) { - var scale = this.options.customScalingFunction(min, max, total, this.value); - var widthDiff = this.options.widthMax - this.options.widthMin; - this.options.width = this.options.widthMin + scale * widthDiff; - this.widthSelected = this.options.width* this.options.widthSelectionMultiplier; - } - }; + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return moment(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; + } + } + return res; + } - /** - * Redraw a edge - * Draw this edge in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - */ - Edge.prototype.draw = function(ctx) { - throw "Method draw not initialized in edge"; - }; + moment.min = function () { + var args = [].slice.call(arguments, 0); - /** - * Check if this object is overlapping with the provided object - * @param {Object} obj an object with parameters left, top - * @return {boolean} True if location is located on the edge - */ - Edge.prototype.isOverlappingWith = function(obj) { - if (this.connected) { - var distMax = 10; - var xFrom = this.from.x; - var yFrom = this.from.y; - var xTo = this.to.x; - var yTo = this.to.y; - var xObj = obj.left; - var yObj = obj.top; + return pickBy('isBefore', args); + }; - var dist = this._getDistanceToEdge(xFrom, yFrom, xTo, yTo, xObj, yObj); + moment.max = function () { + var args = [].slice.call(arguments, 0); - return (dist < distMax); - } - else { - return false - } - }; + return pickBy('isAfter', args); + }; - Edge.prototype._getColor = function(ctx) { - var colorObj = this.options.color; - if (this.options.useGradients == true) { - var grd = ctx.createLinearGradient(this.from.x, this.from.y, this.to.x, this.to.y); - var fromColor, toColor; - fromColor = this.from.options.color.highlight.border; - toColor = this.to.options.color.highlight.border; + // creating with utc + moment.utc = function (input, format, locale, strict) { + var c; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); - if (this.from.selected == false && this.to.selected == false) { - fromColor = util.overrideOpacity(this.from.options.color.border, this.options.opacity); - toColor = util.overrideOpacity(this.to.options.color.border, this.options.opacity); - } - else if (this.from.selected == true && this.to.selected == false) { - toColor = this.to.options.color.border; - } - else if (this.from.selected == false && this.to.selected == true) { - fromColor = this.from.options.color.border; - } - grd.addColorStop(0, fromColor); - grd.addColorStop(1, toColor); - return grd; - } + return makeMoment(c).utc(); + }; - if (this.colorDirty === true) { - if (this.options.inheritColor == "to") { - colorObj = { - highlight: this.to.options.color.highlight.border, - hover: this.to.options.color.hover.border, - color: util.overrideOpacity(this.from.options.color.border, this.options.opacity) - }; - } - else if (this.options.inheritColor == "from" || this.options.inheritColor == true) { - colorObj = { - highlight: this.from.options.color.highlight.border, - hover: this.from.options.color.hover.border, - color: util.overrideOpacity(this.from.options.color.border, this.options.opacity) - }; - } - this.options.color = colorObj; - this.colorDirty = false; - } + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso, + diffRes; + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); - if (this.selected == true) {return colorObj.highlight;} - else if (this.hover == true) {return colorObj.hover;} - else {return colorObj.color;} - }; + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + ret = new Duration(duration); - /** - * Redraw a edge as a line - * Draw this edge in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - * @private - */ - Edge.prototype._drawLine = function(ctx) { - // set style - ctx.strokeStyle = this._getColor(ctx); - ctx.lineWidth = this._getLineWidth(); + if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } - if (this.from != this.to) { - // draw line - var via = this._line(ctx); + return ret; + }; - // draw label - var point; - if (this.label) { - if (this.options.smoothCurves.enabled == true && via != null) { - var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); - var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); - point = {x:midpointX, y:midpointY}; - } - else { - point = this._pointOnLine(0.5); - } - this._label(ctx, this.label, point.x, point.y); - } - } - else { - var x, y; - var radius = this.physics.springLength / 4; - var node = this.from; - if (!node.width) { - node.resize(ctx); - } - if (node.width > node.height) { - x = node.x + node.width / 2; - y = node.y - radius; - } - else { - x = node.x + radius; - y = node.y - node.height / 2; - } - this._circle(ctx, x, y, radius); - point = this._pointOnCircle(x, y, radius, 0.5); - this._label(ctx, this.label, point.x, point.y); - } - }; + // version number + moment.version = VERSION; - /** - * Get the line width of the edge. Depends on width and whether one of the - * connected nodes is selected. - * @return {Number} width - * @private - */ - Edge.prototype._getLineWidth = function() { - if (this.selected == true) { - return Math.max(Math.min(this.widthSelected, this.options.widthMax), 0.3*this.networkScaleInv); - } - else { - if (this.hover == true) { - return Math.max(Math.min(this.options.hoverWidth, this.options.widthMax), 0.3*this.networkScaleInv); - } - else { - return Math.max(this.options.width, 0.3*this.networkScaleInv); - } - } - }; + // default format + moment.defaultFormat = isoFormat; - Edge.prototype._getViaCoordinates = function () { - if (this.options.smoothCurves.dynamic == true && this.options.smoothCurves.enabled == true ) { - return this.via; - } - else if (this.options.smoothCurves.enabled == false) { - return {x:0,y:0}; - } - else { - var xVia = null; - var yVia = null; - var factor = this.options.smoothCurves.roundness; - var type = this.options.smoothCurves.type; - var dx = Math.abs(this.from.x - this.to.x); - var dy = Math.abs(this.from.y - this.to.y); - if (type == 'discrete' || type == 'diagonalCross') { - if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { - if (this.from.y > this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dy; - yVia = this.from.y - factor * dy; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dy; - yVia = this.from.y - factor * dy; - } - } - else if (this.from.y < this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dy; - yVia = this.from.y + factor * dy; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dy; - yVia = this.from.y + factor * dy; - } + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; + + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; + + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function (threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; } - if (type == "discrete") { - xVia = dx < factor * dy ? this.from.x : xVia; + if (limit === undefined) { + return relativeTimeThresholds[threshold]; } - } - else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { - if (this.from.y > this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dx; - yVia = this.from.y - factor * dx; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dx; - yVia = this.from.y - factor * dx; - } + relativeTimeThresholds[threshold] = limit; + return true; + }; + + moment.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + function (key, value) { + return moment.locale(key, value); } - else if (this.from.y < this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dx; - yVia = this.from.y + factor * dx; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dx; - yVia = this.from.y + factor * dx; - } + ); + + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + moment.locale = function (key, values) { + var data; + if (key) { + if (typeof(values) !== 'undefined') { + data = moment.defineLocale(key, values); + } + else { + data = moment.localeData(key); + } + + if (data) { + moment.duration._locale = moment._locale = data; + } } - if (type == "discrete") { - yVia = dy < factor * dx ? this.from.y : yVia; + + return moment._locale._abbr; + }; + + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); + } + locales[name].set(values); + + // backwards compat for now: also set the locale + moment.locale(name); + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; } - } - } - else if (type == "straightCross") { - if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { // up - down - xVia = this.from.x; - if (this.from.y < this.to.y) { - yVia = this.to.y - (1 - factor) * dy; + }; + + moment.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + function (key) { + return moment.localeData(key); } - else { - yVia = this.to.y + (1 - factor) * dy; + ); + + // returns locale data + moment.localeData = function (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; } - } - else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { // left - right - if (this.from.x < this.to.x) { - xVia = this.to.x - (1 - factor) * dx; + + if (!key) { + return moment._locale; } - else { - xVia = this.to.x + (1 - factor) * dx; + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; } - yVia = this.from.y; - } - } - else if (type == 'horizontal') { - if (this.from.x < this.to.x) { - xVia = this.to.x - (1 - factor) * dx; - } - else { - xVia = this.to.x + (1 - factor) * dx; - } - yVia = this.from.y; - } - else if (type == 'vertical') { - xVia = this.from.x; - if (this.from.y < this.to.y) { - yVia = this.to.y - (1 - factor) * dy; - } - else { - yVia = this.to.y + (1 - factor) * dy; - } - } - else if (type == 'curvedCW') { - var dx = this.to.x - this.from.x; - var dy = this.from.y - this.to.y; - var radius = Math.sqrt(dx*dx + dy*dy); - var pi = Math.PI; - var originalAngle = Math.atan2(dy,dx); - var myAngle = (originalAngle + ((factor * 0.5) + 0.5) * pi) % (2 * pi); + return chooseLocale(key); + }; - xVia = this.from.x + (factor*0.5 + 0.5)*radius*Math.sin(myAngle); - yVia = this.from.y + (factor*0.5 + 0.5)*radius*Math.cos(myAngle); - } - else if (type == 'curvedCCW') { - var dx = this.to.x - this.from.x; - var dy = this.from.y - this.to.y; - var radius = Math.sqrt(dx*dx + dy*dy); - var pi = Math.PI; + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && hasOwnProp(obj, '_isAMomentObject')); + }; - var originalAngle = Math.atan2(dy,dx); - var myAngle = (originalAngle + ((-factor * 0.5) + 0.5) * pi) % (2 * pi); + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; - xVia = this.from.x + (factor*0.5 + 0.5)*radius*Math.sin(myAngle); - yVia = this.from.y + (factor*0.5 + 0.5)*radius*Math.cos(myAngle); + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); } - else { // continuous - if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { - if (this.from.y > this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dy; - yVia = this.from.y - factor * dy; - xVia = this.to.x < xVia ? this.to.x : xVia; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dy; - yVia = this.from.y - factor * dy; - xVia = this.to.x > xVia ? this.to.x : xVia; - } - } - else if (this.from.y < this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dy; - yVia = this.from.y + factor * dy; - xVia = this.to.x < xVia ? this.to.x : xVia; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dy; - yVia = this.from.y + factor * dy; - xVia = this.to.x > xVia ? this.to.x : xVia; - } - } - } - else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { - if (this.from.y > this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dx; - yVia = this.from.y - factor * dx; - yVia = this.to.y > yVia ? this.to.y : yVia; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dx; - yVia = this.from.y - factor * dx; - yVia = this.to.y > yVia ? this.to.y : yVia; - } + + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; + + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); } - else if (this.from.y < this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dx; - yVia = this.from.y + factor * dx; - yVia = this.to.y < yVia ? this.to.y : yVia; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dx; - yVia = this.from.y + factor * dx; - yVia = this.to.y < yVia ? this.to.y : yVia; - } + else { + m._pf.userInvalidated = true; } - } - } + return m; + }; - return {x: xVia, y: yVia}; - } - }; + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; - /** - * Draw a line between two nodes - * @param {CanvasRenderingContext2D} ctx - * @private - */ - Edge.prototype._line = function (ctx) { - // draw a straight line - ctx.beginPath(); - ctx.moveTo(this.from.x, this.from.y); - if (this.options.smoothCurves.enabled == true) { - if (this.options.smoothCurves.dynamic == false) { - var via = this._getViaCoordinates(); - if (via.x == null) { - ctx.lineTo(this.to.x, this.to.y); - ctx.stroke(); - return null; - } - else { - // this.via.x = via.x; - // this.via.y = via.y; - ctx.quadraticCurveTo(via.x,via.y,this.to.x, this.to.y); - ctx.stroke(); - //ctx.circle(via.x,via.y,2) - //ctx.stroke(); - return via; - } - } - else { - ctx.quadraticCurveTo(this.via.x,this.via.y,this.to.x, this.to.y); - ctx.stroke(); - return this.via; + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + moment.isDate = isDate; + + /************************************ + Moment Prototype + ************************************/ + + + extend(moment.fn = Moment.prototype, { + + clone : function () { + return moment(this); + }, + + valueOf : function () { + return +this._d - ((this._offset || 0) * 60000); + }, + + unix : function () { + return Math.floor(+this / 1000); + }, + + toString : function () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + }, + + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, + + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + if ('function' === typeof Date.prototype.toISOString) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + }, + + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, + + isValid : function () { + return isValid(this); + }, + + isDSTShifted : function () { + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } + + return false; + }, + + parsingFlags : function () { + return extend({}, this._pf); + }, + + invalidAt: function () { + return this._pf.overflow; + }, + + utc : function (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + }, + + local : function (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(this._dateUtcOffset(), 'm'); + } + } + return this; + }, + + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.localeData().postformat(output); + }, + + add : createAdder(1, 'add'), + + subtract : createAdder(-1, 'subtract'), + + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, + anchor, diff, output, daysAdjust; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + diff = this - that; + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; + } + return asFloat ? output : absRound(output); + }, + + from : function (time, withoutSuffix) { + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + }, + + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, + + calendar : function (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're locat/utc/offset + // or not. + var now = time || moment(), + sod = makeAs(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this, moment(now))); + }, + + isLeapYear : function () { + return isLeapYear(this.year()); + }, + + isDST : function () { + return (this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset()); + }, + + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + }, + + month : makeAccessor('Month', true), + + startOf : function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; + }, + + endOf: function (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + }, + + isAfter: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this > +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return inputMs < +this.clone().startOf(units); + } + }, + + isBefore: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this < +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return +this.clone().endOf(units) < inputMs; + } + }, + + isBetween: function (from, to, units) { + return this.isAfter(from, units) && this.isBefore(to, units); + }, + + isSame: function (input, units) { + var inputMs; + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this === +input; + } else { + inputMs = +moment(input); + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + } + }, + + min: deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), + + max: deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; + } + ), + + zone : deprecate( + 'moment().zone is deprecated, use moment().utcOffset instead. ' + + 'https://github.com/moment/moment/issues/1779', + function (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } + } + ), + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + utcOffset : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = utcOffsetFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._dateUtcOffset(); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } + } + + return this; + } else { + return this._isUTC ? offset : this._dateUtcOffset(); + } + }, + + isLocal : function () { + return !this._isUTC; + }, + + isUtcOffset : function () { + return this._isUTC; + }, + + isUtc : function () { + return this._isUTC && this._offset === 0; + }, + + zoneAbbr : function () { + return this._isUTC ? 'UTC' : ''; + }, + + zoneName : function () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + }, + + parseZone : function () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(utcOffsetFromString(this._i)); + } + return this; + }, + + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).utcOffset(); + } + + return (this.utcOffset() - input) % 60 === 0; + }, + + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, + + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + }, + + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, + + weekYear : function (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + }, + + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + }, + + week : function (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + }, + + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + }, + + weekday : function (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + }, + + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + }, + + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, + + weeksInYear : function () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, + + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, + + set : function (units, value) { + var unit; + if (typeof units === 'object') { + for (unit in units) { + this.set(unit, units[unit]); + } + } + else { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + } + return this; + }, + + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + locale : function (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = moment.localeData(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + }, + + lang : deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ), + + localeData : function () { + return this._locale; + }, + + _dateUtcOffset : function () { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(this._d.getTimezoneOffset() / 15) * 15; + } + + }); + + function rawMonthSetter(mom, value) { + var dayOfMonth; + + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } + + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } + + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } + + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } + + function makeAccessor(unit, keepTime) { + return function (value) { + if (value != null) { + rawSetter(this, unit, value); + moment.updateOffset(this, keepTime); + return this; + } else { + return rawGetter(this, unit); + } + }; + } + + moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); + moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); + moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); + // moment.fn.month is defined separately + moment.fn.date = makeAccessor('Date', true); + moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); + moment.fn.year = makeAccessor('FullYear', true); + moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + moment.fn.quarters = moment.fn.quarter; + + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; + + // alias isUtc for dev-friendliness + moment.fn.isUTC = moment.fn.isUtc; + + /************************************ + Duration Prototype + ************************************/ + + + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; + } + + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; + } + + extend(moment.duration.fn = Duration.prototype, { + + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years = 0; + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; + + hours = absRound(minutes / 60); + data.hours = hours % 24; + + days += absRound(hours / 24); + + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); + + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absRound(days / 30); + days %= 30; + + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + }, + + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); + + this._data.milliseconds = Math.abs(this._data.milliseconds); + this._data.seconds = Math.abs(this._data.seconds); + this._data.minutes = Math.abs(this._data.minutes); + this._data.hours = Math.abs(this._data.hours); + this._data.months = Math.abs(this._data.months); + this._data.years = Math.abs(this._data.years); + + return this; + }, + + weeks : function () { + return absRound(this.days() / 7); + }, + + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, + + humanize : function (withSuffix) { + var output = relativeTime(this, !withSuffix, this.localeData()); + + if (withSuffix) { + output = this.localeData().pastFuture(+this, output); + } + + return this.localeData().postformat(output); + }, + + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); + + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; + + this._bubble(); + + return this; + }, + + subtract : function (input, val) { + var dur = moment.duration(input, val); + + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; + + this._bubble(); + + return this; + }, + + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, + + as : function (units) { + var days, months; + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + this._milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(yearsToDays(this._months / 12)); + switch (units) { + case 'week': return days / 7 + this._milliseconds / 6048e5; + case 'day': return days + this._milliseconds / 864e5; + case 'hour': return days * 24 + this._milliseconds / 36e5; + case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; + case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + }, + + lang : moment.fn.lang, + locale : moment.fn.locale, + + toIsoString : deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead ' + + '(notice the capitals)', + function () { + return this.toISOString(); + } + ), + + toISOString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); + }, + + localeData : function () { + return this._locale; + }, + + toJSON : function () { + return this.toISOString(); + } + }); + + moment.duration.fn.toString = moment.duration.fn.toISOString; + + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; + } + + for (i in unitMillisecondFactors) { + if (hasOwnProp(unitMillisecondFactors, i)) { + makeDurationGetter(i.toLowerCase()); + } + } + + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); + }; + moment.duration.fn.asSeconds = function () { + return this.as('s'); + }; + moment.duration.fn.asMinutes = function () { + return this.as('m'); + }; + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; + moment.duration.fn.asMonths = function () { + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); + }; + + /************************************ + Default Locale + ************************************/ + + + // Set default locale, other locale will inherit from English. + moment.locale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + /* EMBED_LOCALES */ + + /************************************ + Exposing Moment + ************************************/ + + function makeGlobal(shouldDeprecate) { + /*global ender:false */ + if (typeof ender !== 'undefined') { + return; + } + oldGlobalMoment = globalScope.moment; + if (shouldDeprecate) { + globalScope.moment = deprecate( + 'Accessing Moment through the global scope is ' + + 'deprecated, and will be removed in an upcoming ' + + 'release.', + moment); + } else { + globalScope.moment = moment; + } + } + + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } else if (true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal === true) { + // release the global variable + globalScope.moment = oldGlobalMoment; + } + + return moment; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + makeGlobal(true); + } else { + makeGlobal(); + } + }).call(this); + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) + +/***/ }, +/* 59 */ +/***/ function(module, exports, __webpack_require__) { + + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 + * http://eightmedia.github.io/hammer.js + * + * Copyright (c) 2014 Jorik Tangelder ; + * Licensed under the MIT license */ + + (function(window, undefined) { + 'use strict'; + + /** + * @main + * @module hammer + * + * @class Hammer + * @static + */ + + /** + * Hammer, use this to create instances + * ```` + * var hammertime = new Hammer(myElement); + * ```` + * + * @method Hammer + * @param {HTMLElement} element + * @param {Object} [options={}] + * @return {Hammer.Instance} + */ + var Hammer = function Hammer(element, options) { + return new Hammer.Instance(element, options || {}); + }; + + /** + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} + */ + Hammer.VERSION = '1.1.3'; + + /** + * default settings. + * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled + * by setting it's name (like `swipe`) to false. + * You can set the defaults for all instances by changing this object before creating an instance. + * @example + * ```` + * Hammer.defaults.drag = false; + * Hammer.defaults.behavior.touchAction = 'pan-y'; + * delete Hammer.defaults.behavior.userSelect; + * ```` + * @property defaults + * @type {Object} + */ + Hammer.defaults = { + /** + * this setting object adds styles and attributes to the element to prevent the browser from doing + * its native behavior. The css properties are auto prefixed for the browsers when needed. + * @property defaults.behavior + * @type {Object} + */ + behavior: { + /** + * Disables text selection to improve the dragging gesture. When the value is `none` it also sets + * `onselectstart=false` for IE on the element. Mainly for desktop browsers. + * @property defaults.behavior.userSelect + * @type {String} + * @default 'none' + */ + userSelect: 'none', + + /** + * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). + * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. + * @property defaults.behavior.touchAction + * @type {String} + * @default: 'pan-y' + */ + touchAction: 'pan-y', + + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @property defaults.behavior.touchCallout + * @type {String} + * @default 'none' + */ + touchCallout: 'none', + + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', + + /** + * Specifies that an entire element should be draggable instead of its contents. + * Mainly for desktop browsers. + * @property defaults.behavior.userDrag + * @type {String} + * @default 'none' + */ + userDrag: 'none', + + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. + * + * If you don't specify an alpha value, Safari on iPhone applies a default alpha value + * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). + * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. + * @property defaults.behavior.tapHighlightColor + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' + } + }; + + /** + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document + */ + Hammer.DOCUMENT = document; + + /** + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} + */ + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + + /** + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} + */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + + /** + * detect if we want to support mouseevents at all + * @property NO_MOUSEEVENTS + * @type {Boolean} + */ + Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; + + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; + + /** + * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` + * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) + * @property EVENT_TYPES + * @private + * @writeOnce + * @type {Object} + */ + var EVENT_TYPES = {}; + + /** + * direction strings, for safe comparisons + * @property DIRECTION_DOWN|LEFT|UP|RIGHT + * @final + * @type {String} + * @default 'down' 'left' 'up' 'right' + */ + var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; + var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; + var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; + var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + + /** + * pointertype strings, for safe comparisons + * @property POINTER_MOUSE|TOUCH|PEN + * @final + * @type {String} + * @default 'mouse' 'touch' 'pen' + */ + var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; + var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; + var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; + + /** + * eventtypes + * @property EVENT_START|MOVE|END|RELEASE|TOUCH + * @final + * @type {String} + * @default 'start' 'change' 'move' 'end' 'release' 'touch' + */ + var EVENT_START = Hammer.EVENT_START = 'start'; + var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; + var EVENT_END = Hammer.EVENT_END = 'end'; + var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; + var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; + + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; + + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; + + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; + } + + // find what eventtypes we add listeners to + Event.determineEventTypes(); + + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); + }); + + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + + // Hammer is ready...! + Hammer.READY = true; + } + + /** + * @module hammer + * + * @class Utils + * @static + */ + var Utils = Hammer.utils = { + /** + * extend method, could also be used for cloning when `dest` is an empty object. + * changes the dest object + * @method extend + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] do a merge + * @return {Object} dest + */ + extend: function extend(dest, src, merge) { + for(var key in src) { + if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { + continue; + } + dest[key] = src[key]; + } + return dest; + }, + + /** + * simple addEventListener wrapper + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + on: function on(element, type, handler) { + element.addEventListener(type, handler, false); + }, + + /** + * simple removeEventListener wrapper + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); + }, + + /** + * forEach over arrays and objects + * @method each + * @param {Object|Array} obj + * @param {Function} iterator + * @param {any} iterator.item + * @param {Number} iterator.index + * @param {Object|Array} iterator.obj the source object + * @param {Object} context value to use as `this` in the iterator + */ + each: function each(obj, iterator, context) { + var i, len; + + // native forEach on arrays + if('forEach' in obj) { + obj.forEach(iterator, context); + // arrays + } else if(obj.length !== undefined) { + for(i = 0, len = obj.length; i < len; i++) { + if(iterator.call(context, obj[i], i, obj) === false) { + return; + } + } + // objects + } else { + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; + } + } + } + }, + + /** + * find if a string contains the string using indexOf + * @method inStr + * @param {String} src + * @param {String} find + * @return {Boolean} found + */ + inStr: function inStr(src, find) { + return src.indexOf(find) > -1; + }, + + /** + * find if a array contains the object using indexOf or a simple polyfill + * @method inArray + * @param {String} src + * @param {String} find + * @return {Boolean|Number} false when not found, or the index + */ + inArray: function inArray(src, find) { + if(src.indexOf) { + var index = src.indexOf(find); + return (index === -1) ? false : index; + } else { + for(var i = 0, len = src.length; i < len; i++) { + if(src[i] === find) { + return i; + } + } + return false; + } + }, + + /** + * convert an array-like object (`arguments`, `touchlist`) to an array + * @method toArray + * @param {Object} obj + * @return {Array} + */ + toArray: function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + }, + + /** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ + hasParent: function hasParent(node, parent) { + while(node) { + if(node == parent) { + return true; + } + node = node.parentNode; + } + return false; + }, + + /** + * get the center of all the touches + * @method getCenter + * @param {Array} touches + * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties + */ + getCenter: function getCenter(touches) { + var pageX = [], + pageY = [], + clientX = [], + clientY = [], + min = Math.min, + max = Math.max; + + // no need to loop when only one touch + if(touches.length === 1) { + return { + pageX: touches[0].pageX, + pageY: touches[0].pageY, + clientX: touches[0].clientX, + clientY: touches[0].clientY + }; + } + + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); + + return { + pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, + pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, + clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, + clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 + }; + }, + + /** + * calculate the velocity between two points. unit is in px per ms. + * @method getVelocity + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + * @return {Object} velocity `x` and `y` + */ + getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { + return { + x: Math.abs(deltaX / deltaTime) || 0, + y: Math.abs(deltaY / deltaTime) || 0 + }; + }, + + /** + * calculate the angle between two coordinates + * @method getAngle + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {Number} angle + */ + getAngle: function getAngle(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; + + return Math.atan2(y, x) * 180 / Math.PI; + }, + + /** + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` + */ + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); + + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, + + /** + * calculate the distance between two touches + * @method getDistance + * @param {Touch}touch1 + * @param {Touch} touch2 + * @return {Number} distance + */ + getDistance: function getDistance(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; + + return Math.sqrt((x * x) + (y * y)); + }, + + /** + * calculate the scale factor between two touchLists + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @method getScale + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} scale + */ + getScale: function getScale(start, end) { + // need two fingers... + if(start.length >= 2 && end.length >= 2) { + return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); + } + return 1; + }, + + /** + * calculate the rotation degrees between two touchLists + * @method getRotation + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} rotation + */ + getRotation: function getRotation(start, end) { + // need two fingers + if(start.length >= 2 && end.length >= 2) { + return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); + } + return 0; + }, + + /** + * find out if the direction is vertical * + * @method isVertical + * @param {String} direction matches `DIRECTION_UP|DOWN` + * @return {Boolean} is_vertical + */ + isVertical: function isVertical(direction) { + return direction == DIRECTION_UP || direction == DIRECTION_DOWN; + }, + + /** + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} + */ + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); + + for(var i = 0; i < prefixes.length; i++) { + var p = prop; + // prefixes + if(prefixes[i]) { + p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + } + + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; + } + } + }, + + /** + * toggle browser default behavior by setting css properties. + * `userSelect='none'` also sets `element.onselectstart` to false + * `userDrag='none'` also sets `element.ondragstart` to false + * + * @method toggleBehavior + * @param {HtmlElement} element + * @param {Object} props + * @param {Boolean} [toggle=true] + */ + toggleBehavior: function toggleBehavior(element, props, toggle) { + if(!props || !element || !element.style) { + return; + } + + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); + + var falseFn = toggle && function() { + return false; + }; + + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; + } + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; + } + }, + + /** + * convert a string with underscores to camelCase + * so prevent_default becomes preventDefault + * @param {String} str + * @return {String} camelCaseStr + */ + toCamelCase: function toCamelCase(str) { + return str.replace(/[_-]([a-z])/g, function(s) { + return s[1].toUpperCase(); + }); } - } - else { - ctx.lineTo(this.to.x, this.to.y); - ctx.stroke(); - return null; - } }; + /** - * Draw a line from a node to itself, a circle - * @param {CanvasRenderingContext2D} ctx - * @param {Number} x - * @param {Number} y - * @param {Number} radius - * @private + * @module hammer */ - Edge.prototype._circle = function (ctx, x, y, radius) { - // draw a circle - ctx.beginPath(); - ctx.arc(x, y, radius, 0, 2 * Math.PI, false); - ctx.stroke(); - }; - /** - * Draw label with white background and with the middle at (x, y) - * @param {CanvasRenderingContext2D} ctx - * @param {String} text - * @param {Number} x - * @param {Number} y - * @private + * @class Event + * @static */ - Edge.prototype._label = function (ctx, text, x, y) { - if (text) { - ctx.font = ((this.from.selected || this.to.selected) ? "bold " : "") + - this.options.fontSize + "px " + this.options.fontFace; - var yLine; + var Event = Hammer.event = { + /** + * when touch events have been fired, this is true + * this is used to stop mouse events + * @property prevent_mouseevents + * @private + * @type {Boolean} + */ + preventMouseEvents: false, - if (this.dirtyLabel == true) { - var lines = String(text).split('\n'); - var lineCount = lines.length; - var fontSize = Number(this.options.fontSize); - yLine = y + (1 - lineCount) / 2 * fontSize; + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, - var width = ctx.measureText(lines[0]).width; - for (var i = 1; i < lineCount; i++) { - var lineWidth = ctx.measureText(lines[i]).width; - width = lineWidth > width ? lineWidth : width; - } - var height = this.options.fontSize * lineCount; - var left = x - width / 2; - var top = y - height / 2; + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, - // cache - this.labelDimensions = {top:top,left:left,width:width,height:height,yLine:yLine}; - } + /** + * simple event binder with a hook and support for multiple types + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + on: function on(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.on(element, type, handler); + hook && hook(type); + }); + }, - var yLine = this.labelDimensions.yLine; - - ctx.save(); - - if (this.options.labelAlignment != "horizontal"){ - ctx.translate(x, yLine); - this._rotateForLabelAlignment(ctx); - x = 0; - yLine = 0; - } + /** + * simple event unbinder with a hook and support for multiple types + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + off: function off(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.off(element, type, handler); + hook && hook(type); + }); + }, - - this._drawLabelRect(ctx); - this._drawLabelText(ctx,x,yLine, lines, lineCount, fontSize); - - ctx.restore(); - } - }; + /** + * the core touch event handler. + * this finds out if we should to detect gestures + * @method onTouch + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Function} handler + * @return onTouchHandler {Function} the core event handler + */ + onTouch: function onTouch(element, eventType, handler) { + var self = this; - /** - * Rotates the canvas so the text is most readable - * @param {CanvasRenderingContext2D} ctx - * @private - */ - Edge.prototype._rotateForLabelAlignment = function(ctx) { - var dy = this.from.y - this.to.y; - var dx = this.from.x - this.to.x; - var angleInDegrees = Math.atan2(dy, dx); + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - // rotate so label it is readable - if((angleInDegrees < -1 && dx < 0) || (angleInDegrees > 0 && dx < 0)){ - angleInDegrees = angleInDegrees + Math.PI; - } - - ctx.rotate(angleInDegrees); - }; + // if we are in a mouseevent, but there has been a touchevent triggered in this session + // we want to do nothing. simply break out of the event. + if(isMouse && self.preventMouseEvents) { + return; - /** - * Draws the label rectangle - * @param {CanvasRenderingContext2D} ctx - * @param {String} labelAlignment - * @private - */ - Edge.prototype._drawLabelRect = function(ctx) { - if (this.options.fontFill !== undefined && this.options.fontFill !== null && this.options.fontFill !== "none") { - ctx.fillStyle = this.options.fontFill; - - var lineMargin = 2; + // mousebutton must be down + } else if(isMouse && eventType == EVENT_START && ev.button === 0) { + self.preventMouseEvents = false; + self.shouldDetect = true; + } else if(isPointer && eventType == EVENT_START) { + self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); + // just a valid start event, but no mouse + } else if(!isMouse && eventType == EVENT_START) { + self.preventMouseEvents = true; + self.shouldDetect = true; + } - if (this.options.labelAlignment == 'line-center') { - ctx.fillRect(-this.labelDimensions.width * 0.5, -this.labelDimensions.height * 0.5, this.labelDimensions.width, this.labelDimensions.height); - } - else if (this.options.labelAlignment == 'line-above') { - ctx.fillRect(-this.labelDimensions.width * 0.5, -(this.labelDimensions.height + lineMargin), this.labelDimensions.width, this.labelDimensions.height); - } - else if (this.options.labelAlignment == 'line-below') { - ctx.fillRect(-this.labelDimensions.width * 0.5, lineMargin, this.labelDimensions.width, this.labelDimensions.height); - } - else { - ctx.fillRect(this.labelDimensions.left, this.labelDimensions.top, this.labelDimensions.width, this.labelDimensions.height); - } - } - }; + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } - /** - * Draws the label text - * @param {CanvasRenderingContext2D} ctx - * @param {Number} x - * @param {Number} yLine - * @param {Array} lines - * @param {Number} lineCount - * @param {Number} fontSize - * @private - */ - Edge.prototype._drawLabelText = function(ctx, x, yLine, lines, lineCount, fontSize) { - // draw text - ctx.fillStyle = this.options.fontColor || "black"; - ctx.textAlign = "center"; + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); + } - // check for label alignment - if (this.options.labelAlignment != 'horizontal') { - var lineMargin = 2; - if (this.options.labelAlignment == 'line-above') { - ctx.textBaseline = "alphabetic"; - yLine -= 2 * lineMargin; // distance from edge, required because we use alphabetic. Alphabetic has less difference between browsers - } - else if (this.options.labelAlignment == 'line-below') { - ctx.textBaseline = "hanging"; - yLine += 2 * lineMargin;// distance from edge, required because we use hanging. Hanging has less difference between browsers - } - else { - ctx.textBaseline = "middle"; - } - } - else { - ctx.textBaseline = "middle"; - } + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + if(triggerType == EVENT_END) { + self.preventMouseEvents = false; + self.shouldDetect = false; + PointerEvent.reset(); + // update the pointerevent object after the detection + } - // check for strokeWidth - if (this.options.fontStrokeWidth > 0){ - ctx.lineWidth = this.options.fontStrokeWidth; - ctx.strokeStyle = this.options.fontStrokeColor; - ctx.lineJoin = 'round'; - } - for (var i = 0; i < lineCount; i++) { - if(this.options.fontStrokeWidth > 0){ - ctx.strokeText(lines[i], x, yLine); - } - ctx.fillText(lines[i], x, yLine); - yLine += fontSize; - } - }; + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } + }; - /** - * Redraw a edge as a dashed line - * Draw this edge in the given canvas - * @author David Jordan - * @date 2012-08-08 - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - * @private - */ - Edge.prototype._drawDashLine = function(ctx) { - // set style - ctx.strokeStyle = this._getColor(ctx); - ctx.lineWidth = this._getLineWidth(); + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, + + /** + * the core detection method + * this finds out what hammer-touch-events to trigger + * @method doDetect + * @param {Object} ev + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {HTMLElement} element + * @param {Function} handler + * @return {String} triggerType matches `EVENT_START|MOVE|END` + */ + doDetect: function doDetect(ev, eventType, element, handler) { + var touchList = this.getTouchList(ev, eventType); + var touchListLength = touchList.length; + var triggerType = eventType; + var triggerChange = touchList.trigger; // used by fakeMultitouch plugin + var changedLength = touchListLength; + + // at each touchstart-like event we want also want to trigger a TOUCH event... + if(eventType == EVENT_START) { + triggerChange = EVENT_TOUCH; + // ...the same for a touchend-like event + } else if(eventType == EVENT_END) { + triggerChange = EVENT_RELEASE; + + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + } + + // after there are still touches on the screen, + // we just want to trigger a MOVE event. so change the START or END to a MOVE + // but only after detection has been started, the first time we actualy want a START + if(changedLength > 0 && this.started) { + triggerType = EVENT_MOVE; + } + + // detection has been started, we keep track of this, see above + this.started = true; + + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); + + // trigger the triggerType event before the change (TOUCH, RELEASE) events + // but the END event should be at last + if(eventType != EVENT_END) { + handler.call(Detection, evData); + } + + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; + + handler.call(Detection, evData); + + evData.eventType = triggerType; + delete evData.changedLength; + } + + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); + + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; + } + + return triggerType; + }, + + /** + * we have different events for each device/browser + * determine what we need and set them in the EVENT_TYPES constant + * the `onTouch` method is bind to these properties. + * @method determineEventTypes + * @return {Object} events + */ + determineEventTypes: function determineEventTypes() { + var types; + if(Hammer.HAS_POINTEREVENTS) { + if(window.PointerEvent) { + types = [ + 'pointerdown', + 'pointermove', + 'pointerup pointercancel lostpointercapture' + ]; + } else { + types = [ + 'MSPointerDown', + 'MSPointerMove', + 'MSPointerUp MSPointerCancel MSLostPointerCapture' + ]; + } + } else if(Hammer.NO_MOUSEEVENTS) { + types = [ + 'touchstart', + 'touchmove', + 'touchend touchcancel' + ]; + } else { + types = [ + 'touchstart mousedown', + 'touchmove mousemove', + 'touchend touchcancel mouseup' + ]; + } + + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, + + /** + * create touchList depending on the event + * @method getTouchList + * @param {Object} ev + * @param {String} eventType + * @return {Array} touches + */ + getTouchList: function getTouchList(ev, eventType) { + // get the fake pointerEvent touchlist + if(Hammer.HAS_POINTEREVENTS) { + return PointerEvent.getTouchList(); + } + + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; + } + + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; + + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); + } + identifiers.push(touch.identifier); + }); - var via = null; - // only firefox and chrome support this method, else we use the legacy one. - if (ctx.setLineDash !== undefined) { - ctx.save(); - // configure the dash pattern - var pattern = [0]; - if (this.options.dash.length !== undefined && this.options.dash.gap !== undefined) { - pattern = [this.options.dash.length,this.options.dash.gap]; - } - else { - pattern = [5,5]; - } + return touchList; + } - // set dash settings for chrome or firefox - ctx.setLineDash(pattern); - ctx.lineDashOffset = 0; + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, - // draw the line - via = this._line(ctx); + /** + * collect basic event data + * @method collectEventData + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Array} touches + * @param {Object} ev + * @return {Object} ev + */ + collectEventData: function collectEventData(element, eventType, touches, ev) { + // find out pointerType + var pointerType = POINTER_TOUCH; + if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { + pointerType = POINTER_MOUSE; + } else if(PointerEvent.matchType(POINTER_PEN, ev)) { + pointerType = POINTER_PEN; + } - // restore the dash settings. - ctx.setLineDash([0]); - ctx.lineDashOffset = 0; - ctx.restore(); - } - else { // unsupporting smooth lines - // draw dashed line - ctx.beginPath(); - ctx.lineCap = 'round'; - if (this.options.dash.altLength !== undefined) //If an alt dash value has been set add to the array this value - { - ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y, - [this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]); - } - else if (this.options.dash.length !== undefined && this.options.dash.gap !== undefined) //If a dash and gap value has been set add to the array this value - { - ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y, - [this.options.dash.length,this.options.dash.gap]); - } - else //If all else fails draw a line - { - ctx.moveTo(this.from.x, this.from.y); - ctx.lineTo(this.to.x, this.to.y); - } - ctx.stroke(); - } + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, - // draw label - if (this.label) { - var point; - if (this.options.smoothCurves.enabled == true && via != null) { - var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); - var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); - point = {x:midpointX, y:midpointY}; - } - else { - point = this._pointOnLine(0.5); - } - this._label(ctx, this.label, point.x, point.y); - } - }; + /** + * prevent the browser default actions + * mostly used to disable scrolling of the browser + */ + preventDefault: function() { + var srcEvent = this.srcEvent; + srcEvent.preventManipulation && srcEvent.preventManipulation(); + srcEvent.preventDefault && srcEvent.preventDefault(); + }, - /** - * Get a point on a line - * @param {Number} percentage. Value between 0 (line start) and 1 (line end) - * @return {Object} point - * @private - */ - Edge.prototype._pointOnLine = function (percentage) { - return { - x: (1 - percentage) * this.from.x + percentage * this.to.x, - y: (1 - percentage) * this.from.y + percentage * this.to.y - } - }; + /** + * stop bubbling the event up to its parents + */ + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, - /** - * Get a point on a circle - * @param {Number} x - * @param {Number} y - * @param {Number} radius - * @param {Number} percentage. Value between 0 (line start) and 1 (line end) - * @return {Object} point - * @private - */ - Edge.prototype._pointOnCircle = function (x, y, radius, percentage) { - var angle = (percentage - 3/8) * 2 * Math.PI; - return { - x: x + radius * Math.cos(angle), - y: y - radius * Math.sin(angle) - } + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); + } + }; + } }; + /** - * Redraw a edge as a line with an arrow halfway the line - * Draw this edge in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - * @private + * @module hammer + * + * @class PointerEvent + * @static */ - Edge.prototype._drawArrowCenter = function(ctx) { - var point; - // set style - ctx.strokeStyle = this._getColor(ctx); - ctx.fillStyle = ctx.strokeStyle; - ctx.lineWidth = this._getLineWidth(); + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, - if (this.from != this.to) { - // draw line - var via = this._line(ctx); + /** + * get the pointers as an array + * @method getTouchList + * @return {Array} touchlist + */ + getTouchList: function getTouchList() { + var touchlist = []; + // we can use forEach since pointerEvents only is in IE10 + Utils.each(this.pointers, function(pointer) { + touchlist.push(pointer); + }); + return touchlist; + }, - var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); - var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; - // draw an arrow halfway the line - if (this.options.smoothCurves.enabled == true && via != null) { - var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); - var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); - point = {x:midpointX, y:midpointY}; - } - else { - point = this._pointOnLine(0.5); - } + /** + * update the position of a pointer + * @method updatePointer + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Object} pointerEvent + */ + updatePointer: function updatePointer(eventType, pointerEvent) { + if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { + delete this.pointers[pointerEvent.pointerId]; + } else { + pointerEvent.identifier = pointerEvent.pointerId; + this.pointers[pointerEvent.pointerId] = pointerEvent; + } + }, - ctx.arrow(point.x, point.y, angle, length); - ctx.fill(); - ctx.stroke(); + /** + * check if ev matches pointertype + * @method matchType + * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` + * @param {PointerEvent} ev + */ + matchType: function matchType(pointerType, ev) { + if(!ev.pointerType) { + return false; + } - // draw label - if (this.label) { - this._label(ctx, this.label, point.x, point.y); - } - } - else { - // draw circle - var x, y; - var radius = 0.25 * Math.max(100,this.physics.springLength); - var node = this.from; - if (!node.width) { - node.resize(ctx); - } - if (node.width > node.height) { - x = node.x + node.width * 0.5; - y = node.y - radius; - } - else { - x = node.x + radius; - y = node.y - node.height * 0.5; - } - this._circle(ctx, x, y, radius); + var pt = ev.pointerType, + types = {}; - // draw all arrows - var angle = 0.2 * Math.PI; - var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; - point = this._pointOnCircle(x, y, radius, 0.5); - ctx.arrow(point.x, point.y, angle, length); - ctx.fill(); - ctx.stroke(); + types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); + types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); + types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); + return types[pointerType]; + }, - // draw label - if (this.label) { - point = this._pointOnCircle(x, y, radius, 0.5); - this._label(ctx, this.label, point.x, point.y); + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; } - } }; - Edge.prototype._pointOnBezier = function(t) { - var via = this._getViaCoordinates(); - - var x = Math.pow(1-t,2)*this.from.x + (2*t*(1 - t))*via.x + Math.pow(t,2)*this.to.x; - var y = Math.pow(1-t,2)*this.from.y + (2*t*(1 - t))*via.y + Math.pow(t,2)*this.to.y; - - return {x:x,y:y}; - } /** - * This function uses binary search to look for the point where the bezier curve crosses the border of the node. + * @module hammer * - * @param from - * @param ctx - * @returns {*} - * @private + * @class Detection + * @static */ - Edge.prototype._findBorderPosition = function(from,ctx) { - var maxIterations = 10; - var iteration = 0; - var low = 0; - var high = 1; - var pos,angle,distanceToBorder, distanceToNodes, difference; - var threshold = 0.2; - var node = this.to; - if (from == true) { - node = this.from; - } - - while (low <= high && iteration < maxIterations) { - var middle = (low + high) * 0.5; - - pos = this._pointOnBezier(middle); - angle = Math.atan2((node.y - pos.y), (node.x - pos.x)); - distanceToBorder = node.distanceToBorder(ctx,angle); - distanceToNodes = Math.sqrt(Math.pow(pos.x-node.x,2) + Math.pow(pos.y-node.y,2)); - difference = distanceToBorder - distanceToNodes; - if (Math.abs(difference) < threshold) { - break; // found - } - else if (difference < 0) { // distance to nodes is larger than distance to border --> t needs to be bigger if we're looking at the to node. - if (from == false) { - low = middle; - } - else { - high = middle; - } - } - else { - if (from == false) { - high = middle; - } - else { - low = middle; - } - } - - iteration++; - } - pos.t = middle; + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], - return pos; - }; + // data of the current Hammer.gesture detection session + current: null, - /** - * Redraw a edge as a line with an arrow - * Draw this edge in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - * @private - */ - Edge.prototype._drawArrow = function(ctx) { - // set style - ctx.strokeStyle = this._getColor(ctx); - ctx.fillStyle = ctx.strokeStyle; - ctx.lineWidth = this._getLineWidth(); + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, - // set vars - var angle, length, arrowPos; + // when this becomes true, no gestures are fired + stopped: false, - // if not connected to itself - if (this.from != this.to) { - // draw line - this._line(ctx); + /** + * start Hammer.gesture detection + * @method startDetect + * @param {Hammer.Instance} inst + * @param {Object} eventData + */ + startDetect: function startDetect(inst, eventData) { + // already busy with a Hammer.gesture detection on an element + if(this.current) { + return; + } - // draw arrow head - if (this.options.smoothCurves.enabled == true) { - var via = this._getViaCoordinates(); - arrowPos = this._findBorderPosition(false, ctx); - var guidePos = this._pointOnBezier(Math.max(0.0, arrowPos.t - 0.1)) - angle = Math.atan2((arrowPos.y - guidePos.y), (arrowPos.x - guidePos.x)); - } - else { - angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); - var dx = (this.to.x - this.from.x); - var dy = (this.to.y - this.from.y); - var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); - var toBorderDist = this.to.distanceToBorder(ctx, angle); - var toBorderPoint = (edgeSegmentLength - toBorderDist) / edgeSegmentLength; + this.stopped = false; - arrowPos = {}; - arrowPos.x = (1 - toBorderPoint) * this.from.x + toBorderPoint * this.to.x; - arrowPos.y = (1 - toBorderPoint) * this.from.y + toBorderPoint * this.to.y; - } + // holds current session + this.current = { + inst: inst, // reference to HammerInstance we're working for + startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc + lastEvent: false, // last eventData + lastCalcEvent: false, // last eventData for calculations. + futureCalcEvent: false, // last eventData for calculations. + lastCalcData: {}, // last lastCalcData + name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc + }; - // draw arrow at the end of the line - length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; - ctx.arrow(arrowPos.x,arrowPos.y, angle, length); - ctx.fill(); - ctx.stroke(); + this.detect(eventData); + }, - // draw label - if (this.label) { - var point; - if (this.options.smoothCurves.enabled == true && via != null) { - point = this._pointOnBezier(0.5); - } - else { - point = this._pointOnLine(0.5); - } - this._label(ctx, this.label, point.x, point.y); - } - } - else { - // draw circle - var node = this.from; - var x, y, arrow; - var radius = 0.25 * Math.max(100,this.physics.springLength); - if (!node.width) { - node.resize(ctx); - } - if (node.width > node.height) { - x = node.x + node.width * 0.5; - y = node.y - radius; - arrow = { - x: x, - y: node.y, - angle: 0.9 * Math.PI - }; - } - else { - x = node.x + radius; - y = node.y - node.height * 0.5; - arrow = { - x: node.x, - y: y, - angle: 0.6 * Math.PI - }; - } - ctx.beginPath(); - // TODO: similarly, for a line without arrows, draw to the border of the nodes instead of the center - ctx.arc(x, y, radius, 0, 2 * Math.PI, false); - ctx.stroke(); + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; + } - // draw all arrows - var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; - ctx.arrow(arrow.x, arrow.y, arrow.angle, length); - ctx.fill(); - ctx.stroke(); + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); - // draw label - if (this.label) { - point = this._pointOnCircle(x, y, radius, 0.5); - this._label(ctx, this.label, point.x, point.y); - } - } - }; + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; - /** - * Calculate the distance between a point (x3,y3) and a line segment from - * (x1,y1) to (x2,y2). - * http://stackoverflow.com/questions/849211/shortest-distancae-between-a-point-and-a-line-segment - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 - * @param {number} x3 - * @param {number} y3 - * @private - */ - Edge.prototype._getDistanceToEdge = function (x1,y1, x2,y2, x3,y3) { // x3,y3 is the point - var returnValue = 0; - if (this.from != this.to) { - if (this.options.smoothCurves.enabled == true) { - var xVia, yVia; - if (this.options.smoothCurves.enabled == true && this.options.smoothCurves.dynamic == true) { - xVia = this.via.x; - yVia = this.via.y; - } - else { - var via = this._getViaCoordinates(); - xVia = via.x; - yVia = via.y; - } - var minDistance = 1e9; - var distance; - var i,t,x,y, lastX, lastY; - for (i = 0; i < 10; i++) { - t = 0.1*i; - x = Math.pow(1-t,2)*x1 + (2*t*(1 - t))*xVia + Math.pow(t,2)*x2; - y = Math.pow(1-t,2)*y1 + (2*t*(1 - t))*yVia + Math.pow(t,2)*y2; - if (i > 0) { - distance = this._getDistanceToLine(lastX,lastY,x,y, x3,y3); - minDistance = distance < minDistance ? distance : minDistance; + // call Hammer.gesture handlers + Utils.each(this.gestures, function triggerGesture(gesture) { + // only when the instance options have enabled this gesture + if(!this.stopped && inst.enabled && instOptions[gesture.name]) { + gesture.handler.call(gesture, eventData, inst); + } + }, this); + + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; } - lastX = x; lastY = y; - } - returnValue = minDistance; - } - else { - returnValue = this._getDistanceToLine(x1,y1,x2,y2,x3,y3); - } - } - else { - var x, y, dx, dy; - var radius = 0.25 * this.physics.springLength; - var node = this.from; - if (node.width > node.height) { - x = node.x + 0.5 * node.width; - y = node.y - radius; - } - else { - x = node.x + radius; - y = node.y - 0.5 * node.height; - } - dx = x - x3; - dy = y - y3; - returnValue = Math.abs(Math.sqrt(dx*dx + dy*dy) - radius); - } - if (this.labelDimensions.left < x3 && - this.labelDimensions.left + this.labelDimensions.width > x3 && - this.labelDimensions.top < y3 && - this.labelDimensions.top + this.labelDimensions.height > y3) { - return 0; - } - else { - return returnValue; - } - }; + if(eventData.eventType == EVENT_END) { + this.stopDetect(); + } - Edge.prototype._getDistanceToLine = function(x1,y1,x2,y2,x3,y3) { - var px = x2-x1, - py = y2-y1, - something = px*px + py*py, - u = ((x3 - x1) * px + (y3 - y1) * py) / something; + return eventData; + }, - if (u > 1) { - u = 1; - } - else if (u < 0) { - u = 0; - } + /** + * clear the Hammer.gesture vars + * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected + * to stop other Hammer.gestures from being fired + * @method stopDetect + */ + stopDetect: function stopDetect() { + // clone current data to the store as the previous gesture + // used for the double tap gesture, since this is an other gesture detect session + this.previous = Utils.extend({}, this.current); - var x = x1 + u * px, - y = y1 + u * py, - dx = x - x3, - dy = y - y3; + // reset the current + this.current = null; + this.stopped = true; + }, - //# Note: If the actual distance does not matter, - //# if you only want to compare what this function - //# returns to other results of this function, you - //# can just return the squared distance instead - //# (i.e. remove the sqrt) to gain a little performance + /** + * calculate velocity, angle and direction + * @method getVelocityData + * @param {Object} ev + * @param {Object} center + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + */ + getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { + var cur = this.current, + recalc = false, + calcEv = cur.lastCalcEvent, + calcData = cur.lastCalcData; - return Math.sqrt(dx*dx + dy*dy); - }; + if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { + center = calcEv.center; + deltaTime = ev.timeStamp - calcEv.timeStamp; + deltaX = ev.center.clientX - calcEv.center.clientX; + deltaY = ev.center.clientY - calcEv.center.clientY; + recalc = true; + } - /** - * This allows the zoom level of the network to influence the rendering - * - * @param scale - */ - Edge.prototype.setScale = function(scale) { - this.networkScaleInv = 1.0/scale; - }; + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; + } + if(!cur.lastCalcEvent || recalc) { + calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); + calcData.angle = Utils.getAngle(center, ev.center); + calcData.direction = Utils.getDirection(center, ev.center); - Edge.prototype.select = function() { - this.selected = true; - }; + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; + } - Edge.prototype.unselect = function() { - this.selected = false; - }; + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, - Edge.prototype.positionBezierNode = function() { - if (this.via !== null && this.from !== null && this.to !== null) { - this.via.x = 0.5 * (this.from.x + this.to.x); - this.via.y = 0.5 * (this.from.y + this.to.y); - } - else if (this.via !== null) { - this.via.x = 0; - this.via.y = 0; - } - }; + /** + * extend eventData for Hammer.gestures + * @method extendEventData + * @param {Object} ev + * @return {Object} ev + */ + extendEventData: function extendEventData(ev) { + var cur = this.current, + startEv = cur.startEvent, + lastEv = cur.lastEvent || startEv; - /** - * This function draws the control nodes for the manipulator. - * In order to enable this, only set the this.controlNodesEnabled to true. - * @param ctx - */ - Edge.prototype._drawControlNodes = function(ctx) { - if (this.controlNodesEnabled == true) { - if (this.controlNodes.from === null && this.controlNodes.to === null) { - var nodeIdFrom = "edgeIdFrom:".concat(this.id); - var nodeIdTo = "edgeIdTo:".concat(this.id); - var constants = { - nodes:{group:'', radius:7, borderWidth:2, borderWidthSelected: 2}, - physics:{damping:0}, - clustering: {maxNodeSizeIncrements: 0 ,nodeScaling: {width:0, height: 0, radius:0}} - }; - this.controlNodes.from = new Node( - {id:nodeIdFrom, - shape:'dot', - color:{background:'#ff0000', border:'#3c3c3c', highlight: {background:'#07f968'}} - },{},{},constants); - this.controlNodes.to = new Node( - {id:nodeIdTo, - shape:'dot', - color:{background:'#ff0000', border:'#3c3c3c', highlight: {background:'#07f968'}} - },{},{},constants); - } + // update the start touchlist to calculate the scale/rotation + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + startEv.touches = []; + Utils.each(ev.touches, function(touch) { + startEv.touches.push({ + clientX: touch.clientX, + clientY: touch.clientY + }); + }); + } - this.controlNodes.positions = {}; - if (this.controlNodes.from.selected == false) { - this.controlNodes.positions.from = this.getControlNodeFromPosition(ctx); - this.controlNodes.from.x = this.controlNodes.positions.from.x; - this.controlNodes.from.y = this.controlNodes.positions.from.y; - } - if (this.controlNodes.to.selected == false) { - this.controlNodes.positions.to = this.getControlNodeToPosition(ctx); - this.controlNodes.to.x = this.controlNodes.positions.to.x; - this.controlNodes.to.y = this.controlNodes.positions.to.y; - } + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - this.controlNodes.from.draw(ctx); - this.controlNodes.to.draw(ctx); - } - else { - this.controlNodes = {from:null, to:null, positions:{}}; - } - }; + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - /** - * Enable control nodes. - * @private - */ - Edge.prototype._enableControlNodes = function() { - this.fromBackup = this.from; - this.toBackup = this.to; - this.controlNodesEnabled = true; - }; + Utils.extend(ev, { + startEvent: startEv, - /** - * disable control nodes and remove from dynamicEdges from old node - * @private - */ - Edge.prototype._disableControlNodes = function() { - this.fromId = this.from.id; - this.toId = this.to.id; - if (this.fromId != this.fromBackup.id) { // from was changed, remove edge from old 'from' node dynamic edges - this.fromBackup.detachEdge(this); - } - else if (this.toId != this.toBackup.id) { // to was changed, remove edge from old 'to' node dynamic edges - this.toBackup.detachEdge(this); - } + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, - this.fromBackup = null; - this.toBackup = null; - this.controlNodesEnabled = false; - }; + distance: Utils.getDistance(startEv.center, ev.center), + angle: Utils.getAngle(startEv.center, ev.center), + direction: Utils.getDirection(startEv.center, ev.center), + scale: Utils.getScale(startEv.touches, ev.touches), + rotation: Utils.getRotation(startEv.touches, ev.touches) + }); + return ev; + }, - /** - * This checks if one of the control nodes is selected and if so, returns the control node object. Else it returns null. - * @param x - * @param y - * @returns {null} - * @private - */ - Edge.prototype._getSelectedControlNode = function(x,y) { - var positions = this.controlNodes.positions; - var fromDistance = Math.sqrt(Math.pow(x - positions.from.x,2) + Math.pow(y - positions.from.y,2)); - var toDistance = Math.sqrt(Math.pow(x - positions.to.x ,2) + Math.pow(y - positions.to.y ,2)); + /** + * register new gesture + * @method register + * @param {Object} gesture object, see `gestures/` for documentation + * @return {Array} gestures + */ + register: function register(gesture) { + // add an enable gesture options if there is no given + var options = gesture.defaults || {}; + if(options[gesture.name] === undefined) { + options[gesture.name] = true; + } - if (fromDistance < 15) { - this.connectedNode = this.from; - this.from = this.controlNodes.from; - return this.controlNodes.from; - } - else if (toDistance < 15) { - this.connectedNode = this.to; - this.to = this.controlNodes.to; - return this.controlNodes.to; - } - else { - return null; - } - }; + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); + // set its index + gesture.index = gesture.index || 1000; - /** - * this resets the control nodes to their original position. - * @private - */ - Edge.prototype._restoreControlNodes = function() { - if (this.controlNodes.from.selected == true) { - this.from = this.connectedNode; - this.connectedNode = null; - this.controlNodes.from.unselect(); - } - else if (this.controlNodes.to.selected == true) { - this.to = this.connectedNode; - this.connectedNode = null; - this.controlNodes.to.unselect(); - } + // add Hammer.gesture to the list + this.gestures.push(gesture); + + // sort the list by index + this.gestures.sort(function(a, b) { + if(a.index < b.index) { + return -1; + } + if(a.index > b.index) { + return 1; + } + return 0; + }); + + return this.gestures; + } }; + /** - * this calculates the position of the control nodes on the edges of the parent nodes. - * - * @param ctx - * @returns {x: *, y: *} + * @module hammer */ - Edge.prototype.getControlNodeFromPosition = function(ctx) { - // draw arrow head - var controlnodeFromPos; - if (this.options.smoothCurves.enabled == true) { - controlnodeFromPos = this._findBorderPosition(true, ctx); - } - else { - var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); - var dx = (this.to.x - this.from.x); - var dy = (this.to.y - this.from.y); - var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); - - var fromBorderDist = this.from.distanceToBorder(ctx, angle + Math.PI); - var fromBorderPoint = (edgeSegmentLength - fromBorderDist) / edgeSegmentLength; - controlnodeFromPos = {}; - controlnodeFromPos.x = (fromBorderPoint) * this.from.x + (1 - fromBorderPoint) * this.to.x; - controlnodeFromPos.y = (fromBorderPoint) * this.from.y + (1 - fromBorderPoint) * this.to.y; - } - - return controlnodeFromPos; - }; /** - * this calculates the position of the control nodes on the edges of the parent nodes. + * create new hammer instance + * all methods should return the instance itself, so it is chainable. * - * @param ctx - * @returns {{from: {x: number, y: number}, to: {x: *, y: *}}} + * @class Instance + * @constructor + * @param {HTMLElement} element + * @param {Object} [options={}] options are merged with `Hammer.defaults` + * @return {Hammer.Instance} */ - Edge.prototype.getControlNodeToPosition = function(ctx) { - // draw arrow head - var controlnodeFromPos,controlnodeToPos; - if (this.options.smoothCurves.enabled == true) { - controlnodeToPos = this._findBorderPosition(false, ctx); - } - else { - var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); - var dx = (this.to.x - this.from.x); - var dy = (this.to.y - this.from.y); - var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); - var toBorderDist = this.to.distanceToBorder(ctx, angle); - var toBorderPoint = (edgeSegmentLength - toBorderDist) / edgeSegmentLength; + Hammer.Instance = function(element, options) { + var self = this; - controlnodeToPos = {}; - controlnodeToPos.x = (1 - toBorderPoint) * this.from.x + toBorderPoint * this.to.x; - controlnodeToPos.y = (1 - toBorderPoint) * this.from.y + toBorderPoint * this.to.y; - } + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - return controlnodeToPos; - }; + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - module.exports = Edge; + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; -/***/ }, -/* 58 */ -/***/ function(module, exports, __webpack_require__) { + /** + * options, merged with the defaults + * options with an _ are converted to camelCase + * @property options + * @type {Object} + */ + Utils.each(options, function(value, name) { + delete options[name]; + options[Utils.toCamelCase(name)] = value; + }); - /** - * Popup is a class to create a popup window with some text - * @param {Element} container The container object. - * @param {Number} [x] - * @param {Number} [y] - * @param {String} [text] - * @param {Object} [style] An object containing borderColor, - * backgroundColor, etc. - */ - function Popup(container, x, y, text, style) { - if (container) { - this.container = container; - } - else { - this.container = document.body; - } + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - // x, y and text are optional, see if a style object was passed in their place - if (style === undefined) { - if (typeof x === "object") { - style = x; - x = undefined; - } else if (typeof text === "object") { - style = text; - text = undefined; - } else { - // for backwards compatibility, in case clients other than Network are creating Popup directly - style = { - fontColor: 'black', - fontSize: 14, // px - fontFace: 'verdana', - color: { - border: '#666', - background: '#FFFFC6' - } - } + // add some css to the element to prevent the browser from doing its native behavoir + if(this.options.behavior) { + Utils.toggleBehavior(this.element, this.options.behavior, true); } - } - this.x = 0; - this.y = 0; - this.padding = 5; - this.hidden = false; + /** + * event start handler on the element to start the detection + * @property eventStartHandler + * @type {Object} + */ + this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { + if(self.enabled && ev.eventType == EVENT_START) { + Detection.startDetect(self, ev); + } else if(ev.eventType == EVENT_TOUCH) { + Detection.detect(ev); + } + }); - if (x !== undefined && y !== undefined) { - this.setPosition(x, y); - } - if (text !== undefined) { - this.setText(text); - } + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; + }; - // create the frame - this.frame = document.createElement('div'); - this.frame.className = 'network-tooltip'; - this.frame.style.color = style.fontColor; - this.frame.style.backgroundColor = style.color.background; - this.frame.style.borderColor = style.color.border; - this.frame.style.fontSize = style.fontSize + 'px'; - this.frame.style.fontFamily = style.fontFace; - this.container.appendChild(this.frame); - } + Hammer.Instance.prototype = { + /** + * bind events to the instance + * @method on + * @chainable + * @param {String} gestures multiple gestures by splitting with a space + * @param {Function} handler + * @param {Object} handler.ev event object + */ + on: function onEvent(gestures, handler) { + var self = this; + Event.on(self.element, gestures, handler, function(type) { + self.eventHandlers.push({ gesture: type, handler: handler }); + }); + return self; + }, - /** - * @param {number} x Horizontal position of the popup window - * @param {number} y Vertical position of the popup window - */ - Popup.prototype.setPosition = function(x, y) { - this.x = parseInt(x); - this.y = parseInt(y); - }; + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; - /** - * Set the content for the popup window. This can be HTML code or text. - * @param {string | Element} content - */ - Popup.prototype.setText = function(content) { - if (content instanceof Element) { - this.frame.innerHTML = ''; - this.frame.appendChild(content); - } - else { - this.frame.innerHTML = content; // string containing text or HTML - } - }; + Event.off(self.element, gestures, handler, function(type) { + var index = Utils.inArray({ gesture: type, handler: handler }); + if(index !== false) { + self.eventHandlers.splice(index, 1); + } + }); + return self; + }, - /** - * Show the popup window - * @param {boolean} show Optional. Show or hide the window - */ - Popup.prototype.show = function (show) { - if (show === undefined) { - show = true; - } + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; + } - if (show) { - var height = this.frame.clientHeight; - var width = this.frame.clientWidth; - var maxHeight = this.frame.parentNode.clientHeight; - var maxWidth = this.frame.parentNode.clientWidth; + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; - var top = (this.y - height); - if (top + height + this.padding > maxHeight) { - top = maxHeight - height - this.padding; - } - if (top < this.padding) { - top = this.padding; - } + // trigger on the target if it is in the instance element, + // this is for event delegation tricks + var element = this.element; + if(Utils.hasParent(eventData.target, element)) { + element = eventData.target; + } - var left = this.x; - if (left + width + this.padding > maxWidth) { - left = maxWidth - width - this.padding; - } - if (left < this.padding) { - left = this.padding; - } + element.dispatchEvent(event); + return this; + }, - this.frame.style.left = left + "px"; - this.frame.style.top = top + "px"; - this.frame.style.visibility = "visible"; - this.hidden = false; - } - else { - this.hide(); - } - }; + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, - /** - * Hide the popup window - */ - Popup.prototype.hide = function () { - this.hidden = true; - this.frame.style.visibility = "hidden"; - }; + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; - module.exports = Popup; + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); + } -/***/ }, -/* 59 */ -/***/ function(module, exports, __webpack_require__) { + this.eventHandlers = []; - var PhysicsMixin = __webpack_require__(60); - var ClusterMixin = __webpack_require__(64); - var SectorsMixin = __webpack_require__(65); - var SelectionMixin = __webpack_require__(66); - var ManipulationMixin = __webpack_require__(67); - var NavigationMixin = __webpack_require__(68); - var HierarchicalLayoutMixin = __webpack_require__(69); + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); - /** - * Load a mixin into the network object - * - * @param {Object} sourceVariable | this object has to contain functions. - * @private - */ - exports._loadMixin = function (sourceVariable) { - for (var mixinFunction in sourceVariable) { - if (sourceVariable.hasOwnProperty(mixinFunction)) { - this[mixinFunction] = sourceVariable[mixinFunction]; + return null; } - } }; /** - * removes a mixin from the network object. - * - * @param {Object} sourceVariable | this object has to contain functions. - * @private + * @module gestures */ - exports._clearMixin = function (sourceVariable) { - for (var mixinFunction in sourceVariable) { - if (sourceVariable.hasOwnProperty(mixinFunction)) { - this[mixinFunction] = undefined; - } - } - }; - - /** - * Mixin the physics system and initialize the parameters required. + * Move with x fingers (default 1) around on the page. + * Preventing the default browser behavior is a good way to improve feel and working. + * ```` + * hammertime.on("drag", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` * - * @private + * @class Drag + * @static */ - exports._loadPhysicsSystem = function () { - this._loadMixin(PhysicsMixin); - this._loadSelectedForceSolver(); - if (this.constants.configurePhysics == true) { - this._loadPhysicsConfiguration(); - } - else { - this._cleanupPhysicsConfiguration(); - } - }; - - /** - * Mixin the cluster system and initialize the parameters required. - * - * @private + * @event drag + * @param {Object} ev */ - exports._loadClusterSystem = function () { - this.clusterSession = 0; - this.hubThreshold = 5; - this._loadMixin(ClusterMixin); - }; - - /** - * Mixin the sector system and initialize the parameters required - * - * @private + * @event dragstart + * @param {Object} ev */ - exports._loadSectorSystem = function () { - this.sectors = {}; - this.activeSector = ["default"]; - this.sectors["active"] = {}; - this.sectors["active"]["default"] = {"nodes": {}, - "edges": {}, - "nodeIndices": [], - "formationScale": 1.0, - "drawingNode": undefined }; - this.sectors["frozen"] = {}; - this.sectors["support"] = {"nodes": {}, - "edges": {}, - "nodeIndices": [], - "formationScale": 1.0, - "drawingNode": undefined }; - - this.nodeIndices = this.sectors["active"]["default"]["nodeIndices"]; // the node indices list is used to speed up the computation of the repulsion fields - - this._loadMixin(SectorsMixin); - }; - - /** - * Mixin the selection system and initialize the parameters required - * - * @private + * @event dragend + * @param {Object} ev */ - exports._loadSelectionSystem = function () { - this.selectionObj = {nodes: {}, edges: {}}; - - this._loadMixin(SelectionMixin); - }; - - /** - * Mixin the navigationUI (User Interface) system and initialize the parameters required - * - * @private + * @event drapleft + * @param {Object} ev + */ + /** + * @event dragright + * @param {Object} ev + */ + /** + * @event dragup + * @param {Object} ev + */ + /** + * @event dragdown + * @param {Object} ev */ - exports._loadManipulationSystem = function () { - // reset global variables -- these are used by the selection of nodes and edges. - this.blockConnectingEdgeSelection = false; - this.forceAppendSelection = false; - if (this.constants.dataManipulation.enabled == true) { - // load the manipulator HTML elements. All styling done in css. - if (this.manipulationDiv === undefined) { - this.manipulationDiv = document.createElement('div'); - this.manipulationDiv.className = 'network-manipulationDiv'; - if (this.editMode == true) { - this.manipulationDiv.style.display = "block"; - } - else { - this.manipulationDiv.style.display = "none"; - } - this.frame.appendChild(this.manipulationDiv); - } + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - if (this.editModeDiv === undefined) { - this.editModeDiv = document.createElement('div'); - this.editModeDiv.className = 'network-manipulation-editMode'; - if (this.editMode == true) { - this.editModeDiv.style.display = "none"; - } - else { - this.editModeDiv.style.display = "block"; - } - this.frame.appendChild(this.editModeDiv); - } + function dragGesture(ev, inst) { + var cur = Detection.current; - if (this.closeDiv === undefined) { - this.closeDiv = document.createElement('div'); - this.closeDiv.className = 'network-manipulation-closeDiv'; - this.closeDiv.style.display = this.manipulationDiv.style.display; - this.frame.appendChild(this.closeDiv); - } + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { + return; + } - // load the manipulation functions - this._loadMixin(ManipulationMixin); + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - // create the manipulator toolbar - this._createManipulatorBar(); - } - else { - if (this.manipulationDiv !== undefined) { - // removes all the bindings and overloads - this._createManipulatorBar(); + case EVENT_MOVE: + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.distance < inst.options.dragMinDistance && + cur.name != name) { + return; + } - // remove the manipulation divs - this.frame.removeChild(this.manipulationDiv); - this.frame.removeChild(this.editModeDiv); - this.frame.removeChild(this.closeDiv); + var startCenter = cur.startEvent.center; - this.manipulationDiv = undefined; - this.editModeDiv = undefined; - this.closeDiv = undefined; - // remove the mixin functions - this._clearMixin(ManipulationMixin); - } - } - }; + // we are dragging! + if(cur.name != name) { + cur.name = name; + if(inst.options.dragDistanceCorrection && ev.distance > 0) { + // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. + // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. + // It might be useful to save the original start point somewhere + var factor = Math.abs(inst.options.dragMinDistance / ev.distance); + startCenter.pageX += ev.deltaX * factor; + startCenter.pageY += ev.deltaY * factor; + startCenter.clientX += ev.deltaX * factor; + startCenter.clientY += ev.deltaY * factor; + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } - /** - * Mixin the navigation (User Interface) system and initialize the parameters required - * - * @private - */ - exports._loadNavigationControls = function () { - this._loadMixin(NavigationMixin); - // the clean function removes the button divs, this is done to remove the bindings. - this._cleanNavigation(); - if (this.constants.navigation.enabled == true) { - this._loadNavigationElements(); - } - }; + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; + } + // keep direction on the axis that the drag gesture started on + var lastDirection = cur.lastEvent.direction; + if(ev.dragLockToAxis && lastDirection !== ev.direction) { + if(Utils.isVertical(lastDirection)) { + ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; + } else { + ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + } - /** - * Mixin the hierarchical layout system. - * - * @private - */ - exports._loadHierarchySystem = function () { - this._loadMixin(HierarchicalLayoutMixin); - }; + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); -/***/ }, -/* 60 */ -/***/ function(module, exports, __webpack_require__) { + var isVertical = Utils.isVertical(ev.direction); - var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(61); - var HierarchialRepulsionMixin = __webpack_require__(62); - var BarnesHutMixin = __webpack_require__(63); + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - /** - * Toggling barnes Hut calculation on and off. - * - * @private - */ - exports._toggleBarnesHut = function () { - this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; - this._loadSelectedForceSolver(); - this.moving = true; - this.start(); - }; + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; + case EVENT_END: + triggered = false; + break; + } + } - /** - * This loads the node force solver based on the barnes hut or repulsion algorithm - * - * @private - */ - exports._loadSelectedForceSolver = function () { - // this overloads the this._calculateNodeForces - if (this.constants.physics.barnesHut.enabled == true) { - this._clearMixin(RepulsionMixin); - this._clearMixin(HierarchialRepulsionMixin); + Hammer.gestures.Drag = { + name: name, + index: 50, + handler: dragGesture, + defaults: { + /** + * minimal movement that have to be made before the drag event gets triggered + * @property dragMinDistance + * @type {Number} + * @default 10 + */ + dragMinDistance: 10, - this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity; - this.constants.physics.springLength = this.constants.physics.barnesHut.springLength; - this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant; - this.constants.physics.damping = this.constants.physics.barnesHut.damping; + /** + * Set dragDistanceCorrection to true to make the starting point of the drag + * be calculated from where the drag was triggered, not from where the touch started. + * Useful to avoid a jerk-starting drag, which can make fine-adjustments + * through dragging difficult, and be visually unappealing. + * @property dragDistanceCorrection + * @type {Boolean} + * @default true + */ + dragDistanceCorrection: true, - this._loadMixin(BarnesHutMixin); - } - else if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._clearMixin(BarnesHutMixin); - this._clearMixin(RepulsionMixin); + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, - this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity; - this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength; - this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant; - this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping; + /** + * prevent default browser behavior when dragging occurs + * be careful with it, it makes the element a blocking element + * when you are using the drag gesture, it is a good practice to set this true + * @property dragBlockHorizontal + * @type {Boolean} + * @default false + */ + dragBlockHorizontal: false, - this._loadMixin(HierarchialRepulsionMixin); - } - else { - this._clearMixin(BarnesHutMixin); - this._clearMixin(HierarchialRepulsionMixin); - this.barnesHutTree = undefined; + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, - this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity; - this.constants.physics.springLength = this.constants.physics.repulsion.springLength; - this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant; - this.constants.physics.damping = this.constants.physics.repulsion.damping; + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, - this._loadMixin(RepulsionMixin); - } - }; + /** + * drag lock only kicks in when distance > dragLockMinDistance + * This way, locking occurs only when the distance has become large enough to reliably determine the direction + * @property dragLockMinDistance + * @type {Number} + * @default 25 + */ + dragLockMinDistance: 25 + } + }; + })('drag'); /** - * Before calculating the forces, we check if we need to cluster to keep up performance and we check - * if there is more than one node. If it is just one node, we dont calculate anything. + * @module gestures + */ + /** + * trigger a simple gesture event, so you can do anything in your handler. + * only usable if you know what your doing... * - * @private + * @class Gesture + * @static */ - exports._initializeForceCalculation = function () { - // stop calculation if there is only one node - if (this.nodeIndices.length == 1) { - this.nodes[this.nodeIndices[0]]._setForce(0, 0); - } - else { - // if there are too many nodes on screen, we cluster without repositioning - if (this.nodeIndices.length > this.constants.clustering.clusterThreshold && this.constants.clustering.enabled == true) { - this.clusterToFit(this.constants.clustering.reduceToNodes, false); + /** + * @event gesture + * @param {Object} ev + */ + Hammer.gestures.Gesture = { + name: 'gesture', + index: 1337, + handler: function releaseGesture(ev, inst) { + inst.trigger(this.name, ev); } - - // we now start the force calculation - this._calculateForces(); - } }; + /** + * @module gestures + */ + /** + * Touch stays at the same place for x time + * + * @class Hold + * @static + */ + /** + * @event hold + * @param {Object} ev + */ /** - * Calculate the external forces acting on the nodes - * Forces are caused by: edges, repulsing forces between nodes, gravity - * @private + * @param {String} name */ - exports._calculateForces = function () { - // Gravity is required to keep separated groups from floating off - // the forces are reset to zero in this loop by using _setForce instead - // of _addForce + (function(name) { + var timer; - this._calculateGravitationalForces(); - this._calculateNodeForces(); + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; - if (this.constants.physics.springConstant > 0) { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this._calculateSpringForcesWithSupport(); - } - else { - if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._calculateHierarchicalSpringForces(); - } - else { - this._calculateSpringForces(); - } + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); + + // set the gesture so we can check in the timeout if it still is + current.name = name; + + // set timer and if after the timeout it still is hold, + // we trigger the hold event + timer = setTimeout(function() { + if(current && current.name == name) { + inst.trigger(name, ev); + } + }, options.holdTimeout); + break; + + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; + + case EVENT_RELEASE: + clearTimeout(timer); + break; + } } - } - }; + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, + + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture + }; + })('hold'); /** - * Smooth curves are created by adding invisible nodes in the center of the edges. These nodes are also - * handled in the calculateForces function. We then use a quadratic curve with the center node as control. - * This function joins the datanodes and invisible (called support) nodes into one object. - * We do this so we do not contaminate this.nodes with the support nodes. + * @module gestures + */ + /** + * when a touch is being released from the page * - * @private + * @class Release + * @static */ - exports._updateCalculationNodes = function () { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this.calculationNodes = {}; - this.calculationNodeIndices = []; - - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.calculationNodes[nodeId] = this.nodes[nodeId]; - } - } - var supportNodes = this.sectors['support']['nodes']; - for (var supportNodeId in supportNodes) { - if (supportNodes.hasOwnProperty(supportNodeId)) { - if (this.edges.hasOwnProperty(supportNodes[supportNodeId].parentEdgeId)) { - this.calculationNodes[supportNodeId] = supportNodes[supportNodeId]; - } - else { - supportNodes[supportNodeId]._setForce(0, 0); + /** + * @event release + * @param {Object} ev + */ + Hammer.gestures.Release = { + name: 'release', + index: Infinity, + handler: function releaseGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + inst.trigger(this.name, ev); } - } - } - - for (var idx in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(idx)) { - this.calculationNodeIndices.push(idx); - } } - } - else { - this.calculationNodes = this.nodes; - this.calculationNodeIndices = this.nodeIndices; - } }; - /** - * this function applies the central gravity effect to keep groups from floating off + * @module gestures + */ + /** + * triggers swipe events when the end velocity is above the threshold + * for best usage, set `preventDefault` (on the drag gesture) to `true` + * ```` + * hammertime.on("dragleft swipeleft", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` * - * @private + * @class Swipe + * @static */ - exports._calculateGravitationalForces = function () { - var dx, dy, distance, node, i; - var nodes = this.calculationNodes; - var gravity = this.constants.physics.centralGravity; - var gravityForce = 0; + /** + * @event swipe + * @param {Object} ev + */ + /** + * @event swipeleft + * @param {Object} ev + */ + /** + * @event swiperight + * @param {Object} ev + */ + /** + * @event swipeup + * @param {Object} ev + */ + /** + * @event swipedown + * @param {Object} ev + */ + Hammer.gestures.Swipe = { + name: 'swipe', + index: 40, + defaults: { + /** + * @property swipeMinTouches + * @type {Number} + * @default 1 + */ + swipeMinTouches: 1, - for (i = 0; i < this.calculationNodeIndices.length; i++) { - node = nodes[this.calculationNodeIndices[i]]; - node.damping = this.constants.physics.damping; // possibly add function to alter damping properties of clusters. - // gravity does not apply when we are in a pocket sector - if (this._sector() == "default" && gravity != 0) { - dx = -node.x; - dy = -node.y; - distance = Math.sqrt(dx * dx + dy * dy); + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - gravityForce = (distance == 0) ? 0 : (gravity / distance); - node.fx = dx * gravityForce; - node.fy = dy * gravityForce; - } - else { - node.fx = 0; - node.fy = 0; - } - } - }; + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, + + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; + } + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.velocityX > options.swipeVelocityX || + ev.velocityY > options.swipeVelocityY) { + // trigger swipe events + inst.trigger(this.name, ev); + inst.trigger(this.name + ev.direction, ev); + } + } + } + }; /** - * this function calculates the effects of the springs in the case of unsmooth curves. + * @module gestures + */ + /** + * Single tap and a double tap on a place * - * @private + * @class Tap + * @static + */ + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev */ - exports._calculateSpringForces = function () { - var edgeLength, edge, edgeId; - var dx, dy, fx, fy, springForce, distance; - var edges = this.edges; - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - edgeLength = edge.physics.springLength; - // this implies that the edges between big clusters are longer - edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; - dx = (edge.from.x - edge.to.x); - dy = (edge.from.y - edge.to.y); - distance = Math.sqrt(dx * dx + dy * dy); + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - if (distance == 0) { - distance = 0.01; - } + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - fx = dx * springForce; - fy = dy * springForce; + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; - edge.from.fx += fx; - edge.from.fy += fy; - edge.to.fx -= fx; - edge.to.fy -= fy; + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } + + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } + } + break; } - } } - } - }; + Hammer.gestures.Tap = { + name: name, + index: 100, + handler: tapGesture, + defaults: { + /** + * max time of a tap, this is for the slow tappers + * @property tapMaxTime + * @type {Number} + * @default 250 + */ + tapMaxTime: 250, + + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, + + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 + } + }; + })('tap'); /** - * This function calculates the springforces on the nodes, accounting for the support nodes. + * @module gestures + */ + /** + * when a touch is being touched at the page * - * @private + * @class Touch + * @static */ - exports._calculateSpringForcesWithSupport = function () { - var edgeLength, edge, edgeId, combinedClusterSize; - var edges = this.edges; - - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - if (edge.via != null) { - var node1 = edge.to; - var node2 = edge.via; - var node3 = edge.from; + /** + * @event touch + * @param {Object} ev + */ + Hammer.gestures.Touch = { + name: 'touch', + index: -Infinity, + defaults: { + /** + * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, + * but it improves gestures like transforming and dragging. + * be careful with using this, it can be very annoying for users to be stuck on the page + * @property preventDefault + * @type {Boolean} + * @default false + */ + preventDefault: false, - edgeLength = edge.physics.springLength; + /** + * disable mouse events, so only touch (or pen!) input triggers events + * @property preventMouse + * @type {Boolean} + * @default false + */ + preventMouse: false + }, + handler: function touchGesture(ev, inst) { + if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { + ev.stopDetect(); + return; + } - combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; + if(inst.options.preventDefault) { + ev.preventDefault(); + } - // this implies that the edges between big clusters are longer - edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth; - this._calculateSpringForce(node1, node2, 0.5 * edgeLength); - this._calculateSpringForce(node2, node3, 0.5 * edgeLength); - } + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); } - } } - } }; - /** - * This is the code actually performing the calculation for the function above. It is split out to avoid repetition. - * - * @param node1 - * @param node2 - * @param edgeLength - * @private + * @module gestures + */ + /** + * User want to scale or rotate with 2 fingers + * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the + * `preventDefault` option. + * + * @class Transform + * @static + */ + /** + * @event transform + * @param {Object} ev + */ + /** + * @event transformstart + * @param {Object} ev + */ + /** + * @event transformend + * @param {Object} ev + */ + /** + * @event pinchin + * @param {Object} ev + */ + /** + * @event pinchout + * @param {Object} ev + */ + /** + * @event rotate + * @param {Object} ev */ - exports._calculateSpringForce = function (node1, node2, edgeLength) { - var dx, dy, fx, fy, springForce, distance; - - dx = (node1.x - node2.x); - dy = (node1.y - node2.y); - distance = Math.sqrt(dx * dx + dy * dy); - if (distance == 0) { - distance = 0.01; - } + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - fx = dx * springForce; - fy = dy * springForce; + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - node1.fx += fx; - node1.fy += fy; - node2.fx -= fx; - node2.fy -= fy; - }; + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; + } - exports._cleanupPhysicsConfiguration = function() { - if (this.physicsConfiguration !== undefined) { - while (this.physicsConfiguration.hasChildNodes()) { - this.physicsConfiguration.removeChild(this.physicsConfiguration.firstChild); - } + // we are transforming! + Detection.current.name = name; - this.physicsConfiguration.parentNode.removeChild(this.physicsConfiguration); - this.physicsConfiguration = undefined; - } - } + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - /** - * Load the HTML for the physics config and bind it - * @private - */ - exports._loadPhysicsConfiguration = function () { - if (this.physicsConfiguration === undefined) { - this.backupConstants = {}; - util.deepExtend(this.backupConstants,this.constants); + inst.trigger(name, ev); // basic transform event - var maxGravitational = Math.max(20000, (-1 * this.constants.physics.barnesHut.gravitationalConstant) * 10); - var maxSpring = Math.min(0.05, this.constants.physics.barnesHut.springConstant * 10) + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } - var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"]; - this.physicsConfiguration = document.createElement('div'); - this.physicsConfiguration.className = "PhysicsConfiguration"; - this.physicsConfiguration.innerHTML = '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
Simulation Mode:
Barnes HutRepulsionHierarchical
' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
Options:
' - this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement); - this.optionsDiv = document.createElement("div"); - this.optionsDiv.style.fontSize = "14px"; - this.optionsDiv.style.fontFamily = "verdana"; - this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement); + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; - var rangeElement; - rangeElement = document.getElementById('graph_BH_gc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant"); - rangeElement = document.getElementById('graph_BH_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_BH_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_BH_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_BH_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping"); + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; + } + } - rangeElement = document.getElementById('graph_R_nd'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance"); - rangeElement = document.getElementById('graph_R_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_R_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_R_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_R_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping"); + Hammer.gestures.Transform = { + name: name, + index: 45, + defaults: { + /** + * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 + * @property transformMinScale + * @type {Number} + * @default 0.01 + */ + transformMinScale: 0.01, - rangeElement = document.getElementById('graph_H_nd'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); - rangeElement = document.getElementById('graph_H_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_H_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_H_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_H_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping"); - rangeElement = document.getElementById('graph_H_direction'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction"); - rangeElement = document.getElementById('graph_H_levsep'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation"); - rangeElement = document.getElementById('graph_H_nspac'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing"); + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 + }, - var radioButton1 = document.getElementById("graph_physicsMethod1"); - var radioButton2 = document.getElementById("graph_physicsMethod2"); - var radioButton3 = document.getElementById("graph_physicsMethod3"); - radioButton2.checked = true; - if (this.constants.physics.barnesHut.enabled) { - radioButton1.checked = true; - } - if (this.constants.hierarchicalLayout.enabled) { - radioButton3.checked = true; - } + handler: transformGesture + }; + })('transform'); - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - var graph_repositionNodes = document.getElementById("graph_repositionNodes"); - var graph_generateOptions = document.getElementById("graph_generateOptions"); + /** + * @module hammer + */ - graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this); - graph_repositionNodes.onclick = graphRepositionNodes.bind(this); - graph_generateOptions.onclick = graphGenerateOptions.bind(this); - if (this.constants.smoothCurves == true && this.constants.dynamicSmoothCurves == false) { - graph_toggleSmooth.style.background = "#A4FF56"; - } - else { - graph_toggleSmooth.style.background = "#FF8532"; - } + // AMD export + if(true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + // commonjs export + } else if(typeof module !== 'undefined' && module.exports) { + module.exports = Hammer; + // browser export + } else { + window.Hammer = Hammer; + } + })(window); - switchConfigurations.apply(this); +/***/ }, +/* 60 */ +/***/ function(module, exports, __webpack_require__) { - radioButton1.onchange = switchConfigurations.bind(this); - radioButton2.onchange = switchConfigurations.bind(this); - radioButton3.onchange = switchConfigurations.bind(this); - } - }; + var util = __webpack_require__(1); + var RepulsionMixin = __webpack_require__(68); + var HierarchialRepulsionMixin = __webpack_require__(69); + var BarnesHutMixin = __webpack_require__(70); /** - * This overwrites the this.constants. + * Toggling barnes Hut calculation on and off. * - * @param constantsVariableName - * @param value * @private */ - exports._overWriteGraphConstants = function (constantsVariableName, value) { - var nameArray = constantsVariableName.split("_"); - if (nameArray.length == 1) { - this.constants[nameArray[0]] = value; - } - else if (nameArray.length == 2) { - this.constants[nameArray[0]][nameArray[1]] = value; - } - else if (nameArray.length == 3) { - this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value; - } + exports._toggleBarnesHut = function () { + this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; + this._loadSelectedForceSolver(); + this.moving = true; + this.start(); }; /** - * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. + * This loads the node force solver based on the barnes hut or repulsion algorithm + * + * @private */ - function graphToggleSmoothCurves () { - this.constants.smoothCurves.enabled = !this.constants.smoothCurves.enabled; - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} - else {graph_toggleSmooth.style.background = "#FF8532";} + exports._loadSelectedForceSolver = function () { + // this overloads the this._calculateNodeForces + if (this.constants.physics.barnesHut.enabled == true) { + this._clearMixin(RepulsionMixin); + this._clearMixin(HierarchialRepulsionMixin); - this._configureSmoothCurves(false); - } + this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity; + this.constants.physics.springLength = this.constants.physics.barnesHut.springLength; + this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant; + this.constants.physics.damping = this.constants.physics.barnesHut.damping; - /** - * this function is used to scramble the nodes - * - */ - function graphRepositionNodes () { - for (var nodeId in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(nodeId)) { - this.calculationNodes[nodeId].vx = 0; this.calculationNodes[nodeId].vy = 0; - this.calculationNodes[nodeId].fx = 0; this.calculationNodes[nodeId].fy = 0; - } - } - if (this.constants.hierarchicalLayout.enabled == true) { - this._setupHierarchicalLayout(); - showValueOfRange.call(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); - showValueOfRange.call(this, 'graph_H_cg', 1, "physics_centralGravity"); - showValueOfRange.call(this, 'graph_H_sc', 1, "physics_springConstant"); - showValueOfRange.call(this, 'graph_H_sl', 1, "physics_springLength"); - showValueOfRange.call(this, 'graph_H_damp', 1, "physics_damping"); - } - else { - this.repositionNodes(); + this._loadMixin(BarnesHutMixin); } - this.moving = true; - this.start(); - } + else if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._clearMixin(BarnesHutMixin); + this._clearMixin(RepulsionMixin); - /** - * this is used to generate an options file from the playing with physics system. - */ - function graphGenerateOptions () { - var options = "No options are required, default values used."; - var optionsSpecific = []; - var radioButton1 = document.getElementById("graph_physicsMethod1"); - var radioButton2 = document.getElementById("graph_physicsMethod2"); - if (radioButton1.checked == true) { - if (this.constants.physics.barnesHut.gravitationalConstant != this.backupConstants.physics.barnesHut.gravitationalConstant) {optionsSpecific.push("gravitationalConstant: " + this.constants.physics.barnesHut.gravitationalConstant);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.barnesHut.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.barnesHut.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options = "var options = {"; - options += "physics: {barnesHut: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } - } - options += '}}' - } - if (this.constants.smoothCurves.enabled != this.backupConstants.smoothCurves.enabled) { - if (optionsSpecific.length == 0) {options = "var options = {";} - else {options += ", "} - options += "smoothCurves: " + this.constants.smoothCurves.enabled; - } - if (options != "No options are required, default values used.") { - options += '};' - } - } - else if (radioButton2.checked == true) { - options = "var options = {"; - options += "physics: {barnesHut: {enabled: false}"; - if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.repulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options += ", repulsion: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } - } - options += '}}' - } - if (optionsSpecific.length == 0) {options += "}"} - if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { - options += ", smoothCurves: " + this.constants.smoothCurves; - } - options += '};' + this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity; + this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength; + this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant; + this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping; + + this._loadMixin(HierarchialRepulsionMixin); } else { - options = "var options = {"; - if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options += "physics: {hierarchicalRepulsion: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", "; - } - } - options += '}},'; - } - options += 'hierarchicalLayout: {'; - optionsSpecific = []; - if (this.constants.hierarchicalLayout.direction != this.backupConstants.hierarchicalLayout.direction) {optionsSpecific.push("direction: " + this.constants.hierarchicalLayout.direction);} - if (Math.abs(this.constants.hierarchicalLayout.levelSeparation) != this.backupConstants.hierarchicalLayout.levelSeparation) {optionsSpecific.push("levelSeparation: " + this.constants.hierarchicalLayout.levelSeparation);} - if (this.constants.hierarchicalLayout.nodeSpacing != this.backupConstants.hierarchicalLayout.nodeSpacing) {optionsSpecific.push("nodeSpacing: " + this.constants.hierarchicalLayout.nodeSpacing);} - if (optionsSpecific.length != 0) { - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } - } - options += '}' - } - else { - options += "enabled:true}"; - } - options += '};' - } - + this._clearMixin(BarnesHutMixin); + this._clearMixin(HierarchialRepulsionMixin); + this.barnesHutTree = undefined; - this.optionsDiv.innerHTML = options; - } + this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity; + this.constants.physics.springLength = this.constants.physics.repulsion.springLength; + this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant; + this.constants.physics.damping = this.constants.physics.repulsion.damping; - /** - * this is used to switch between barnesHut, repulsion and hierarchical. - * - */ - function switchConfigurations () { - var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"]; - var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value; - var tableId = "graph_" + radioButton + "_table"; - var table = document.getElementById(tableId); - table.style.display = "block"; - for (var i = 0; i < ids.length; i++) { - if (ids[i] != tableId) { - table = document.getElementById(ids[i]); - table.style.display = "none"; - } - } - this._restoreNodes(); - if (radioButton == "R") { - this.constants.hierarchicalLayout.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = false; - this.constants.physics.barnesHut.enabled = false; - } - else if (radioButton == "H") { - if (this.constants.hierarchicalLayout.enabled == false) { - this.constants.hierarchicalLayout.enabled = true; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this.constants.physics.barnesHut.enabled = false; - this.constants.smoothCurves.enabled = false; - this._setupHierarchicalLayout(); - } - } - else { - this.constants.hierarchicalLayout.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = false; - this.constants.physics.barnesHut.enabled = true; + this._loadMixin(RepulsionMixin); } - this._loadSelectedForceSolver(); - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} - else {graph_toggleSmooth.style.background = "#FF8532";} - this.moving = true; - this.start(); - } - + }; /** - * this generates the ranges depending on the iniital values. + * Before calculating the forces, we check if we need to cluster to keep up performance and we check + * if there is more than one node. If it is just one node, we dont calculate anything. * - * @param id - * @param map - * @param constantsVariableName + * @private */ - function showValueOfRange (id,map,constantsVariableName) { - var valueId = id + "_value"; - var rangeValue = document.getElementById(id).value; - - if (Array.isArray(map)) { - document.getElementById(valueId).value = map[parseInt(rangeValue)]; - this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); + exports._initializeForceCalculation = function () { + // stop calculation if there is only one node + if (this.nodeIndices.length == 1) { + this.nodes[this.nodeIndices[0]]._setForce(0, 0); } else { - document.getElementById(valueId).value = parseInt(map) * parseFloat(rangeValue); - this._overWriteGraphConstants(constantsVariableName, parseInt(map) * parseFloat(rangeValue)); - } + // if there are too many nodes on screen, we cluster without repositioning + if (this.nodeIndices.length > this.constants.clustering.clusterThreshold && this.constants.clustering.enabled == true) { + this.clusterToFit(this.constants.clustering.reduceToNodes, false); + } - if (constantsVariableName == "hierarchicalLayout_direction" || - constantsVariableName == "hierarchicalLayout_levelSeparation" || - constantsVariableName == "hierarchicalLayout_nodeSpacing") { - this._setupHierarchicalLayout(); + // we now start the force calculation + this._calculateForces(); } - this.moving = true; - this.start(); - } - - - + }; -/***/ }, -/* 61 */ -/***/ function(module, exports, __webpack_require__) { /** - * Calculate the forces the nodes apply on each other based on a repulsion field. - * This field is linearly approximated. - * + * Calculate the external forces acting on the nodes + * Forces are caused by: edges, repulsing forces between nodes, gravity * @private */ - exports._calculateNodeForces = function () { - var dx, dy, angle, distance, fx, fy, combinedClusterSize, - repulsingForce, node1, node2, i, j; - - var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; + exports._calculateForces = function () { + // Gravity is required to keep separated groups from floating off + // the forces are reset to zero in this loop by using _setForce instead + // of _addForce - // approximation constants - var a_base = -2 / 3; - var b = 4 / 3; + this._calculateGravitationalForces(); + this._calculateNodeForces(); - // repulsing forces between nodes - var nodeDistance = this.constants.physics.repulsion.nodeDistance; - var minimumDistance = nodeDistance; + if (this.constants.physics.springConstant > 0) { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this._calculateSpringForcesWithSupport(); + } + else { + if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._calculateHierarchicalSpringForces(); + } + else { + this._calculateSpringForces(); + } + } + } + }; - // we loop from i over all but the last entree in the array - // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j - for (i = 0; i < nodeIndices.length - 1; i++) { - node1 = nodes[nodeIndices[i]]; - for (j = i + 1; j < nodeIndices.length; j++) { - node2 = nodes[nodeIndices[j]]; - combinedClusterSize = node1.clusterSize + node2.clusterSize - 2; - dx = node2.x - node1.x; - dy = node2.y - node1.y; - distance = Math.sqrt(dx * dx + dy * dy); + /** + * Smooth curves are created by adding invisible nodes in the center of the edges. These nodes are also + * handled in the calculateForces function. We then use a quadratic curve with the center node as control. + * This function joins the datanodes and invisible (called support) nodes into one object. + * We do this so we do not contaminate this.nodes with the support nodes. + * + * @private + */ + exports._updateCalculationNodes = function () { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this.calculationNodes = {}; + this.calculationNodeIndices = []; - // same condition as BarnesHut, making sure nodes are never 100% overlapping. - if (distance == 0) { - distance = 0.1*Math.random(); - dx = distance; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.calculationNodes[nodeId] = this.nodes[nodeId]; } - - minimumDistance = (combinedClusterSize == 0) ? nodeDistance : (nodeDistance * (1 + combinedClusterSize * this.constants.clustering.distanceAmplification)); - var a = a_base / minimumDistance; - if (distance < 2 * minimumDistance) { - if (distance < 0.5 * minimumDistance) { - repulsingForce = 1.0; + } + var supportNodes = this.sectors['support']['nodes']; + for (var supportNodeId in supportNodes) { + if (supportNodes.hasOwnProperty(supportNodeId)) { + if (this.edges.hasOwnProperty(supportNodes[supportNodeId].parentEdgeId)) { + this.calculationNodes[supportNodeId] = supportNodes[supportNodeId]; } else { - repulsingForce = a * distance + b; // linear approx of 1 / (1 + Math.exp((distance / minimumDistance - 1) * steepness)) + supportNodes[supportNodeId]._setForce(0, 0); } + } + } - // amplify the repulsion for clusters. - repulsingForce *= (combinedClusterSize == 0) ? 1 : 1 + combinedClusterSize * this.constants.clustering.forceAmplification; - repulsingForce = repulsingForce / Math.max(distance,0.01*minimumDistance); - - fx = dx * repulsingForce; - fy = dy * repulsingForce; - node1.fx -= fx; - node1.fy -= fy; - node2.fx += fx; - node2.fy += fy; - + for (var idx in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(idx)) { + this.calculationNodeIndices.push(idx); } } } + else { + this.calculationNodes = this.nodes; + this.calculationNodeIndices = this.nodeIndices; + } }; -/***/ }, -/* 62 */ -/***/ function(module, exports, __webpack_require__) { - /** - * Calculate the forces the nodes apply on eachother based on a repulsion field. - * This field is linearly approximated. + * this function applies the central gravity effect to keep groups from floating off * * @private */ - exports._calculateNodeForces = function () { - var dx, dy, distance, fx, fy, - repulsingForce, node1, node2, i, j; - + exports._calculateGravitationalForces = function () { + var dx, dy, distance, node, i; var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; - - // repulsing forces between nodes - var nodeDistance = this.constants.physics.hierarchicalRepulsion.nodeDistance; - - // we loop from i over all but the last entree in the array - // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j - for (i = 0; i < nodeIndices.length - 1; i++) { - node1 = nodes[nodeIndices[i]]; - for (j = i + 1; j < nodeIndices.length; j++) { - node2 = nodes[nodeIndices[j]]; - - // nodes only affect nodes on their level - if (node1.level == node2.level) { - - dx = node2.x - node1.x; - dy = node2.y - node1.y; - distance = Math.sqrt(dx * dx + dy * dy); - + var gravity = this.constants.physics.centralGravity; + var gravityForce = 0; - var steepness = 0.05; - if (distance < nodeDistance) { - repulsingForce = -Math.pow(steepness*distance,2) + Math.pow(steepness*nodeDistance,2); - } - else { - repulsingForce = 0; - } - // normalize force with - if (distance == 0) { - distance = 0.01; - } - else { - repulsingForce = repulsingForce / distance; - } - fx = dx * repulsingForce; - fy = dy * repulsingForce; + for (i = 0; i < this.calculationNodeIndices.length; i++) { + node = nodes[this.calculationNodeIndices[i]]; + node.damping = this.constants.physics.damping; // possibly add function to alter damping properties of clusters. + // gravity does not apply when we are in a pocket sector + if (this._sector() == "default" && gravity != 0) { + dx = -node.x; + dy = -node.y; + distance = Math.sqrt(dx * dx + dy * dy); - node1.fx -= fx; - node1.fy -= fy; - node2.fx += fx; - node2.fy += fy; - } + gravityForce = (distance == 0) ? 0 : (gravity / distance); + node.fx = dx * gravityForce; + node.fy = dy * gravityForce; + } + else { + node.fx = 0; + node.fy = 0; } } }; + + /** * this function calculates the effects of the springs in the case of unsmooth curves. * * @private */ - exports._calculateHierarchicalSpringForces = function () { + exports._calculateSpringForces = function () { var edgeLength, edge, edgeId; var dx, dy, fx, fy, springForce, distance; var edges = this.edges; - var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; - - - for (var i = 0; i < nodeIndices.length; i++) { - var node1 = nodes[nodeIndices[i]]; - node1.springFx = 0; - node1.springFy = 0; - } - - // forces caused by the edges, modelled as springs for (edgeId in edges) { if (edges.hasOwnProperty(edgeId)) { @@ -30913,87 +30489,50 @@ return /******/ (function(modules) { // webpackBootstrap fx = dx * springForce; fy = dy * springForce; - - - if (edge.to.level != edge.from.level) { - edge.to.springFx -= fx; - edge.to.springFy -= fy; - edge.from.springFx += fx; - edge.from.springFy += fy; - } - else { - var factor = 0.5; - edge.to.fx -= factor*fx; - edge.to.fy -= factor*fy; - edge.from.fx += factor*fx; - edge.from.fy += factor*fy; - } + edge.from.fx += fx; + edge.from.fy += fy; + edge.to.fx -= fx; + edge.to.fy -= fy; } } } } + }; - // normalize spring forces - var springForce = 1; - var springFx, springFy; - for (i = 0; i < nodeIndices.length; i++) { - var node = nodes[nodeIndices[i]]; - springFx = Math.min(springForce,Math.max(-springForce,node.springFx)); - springFy = Math.min(springForce,Math.max(-springForce,node.springFy)); - - node.fx += springFx; - node.fy += springFy; - } - - // retain energy balance - var totalFx = 0; - var totalFy = 0; - for (i = 0; i < nodeIndices.length; i++) { - var node = nodes[nodeIndices[i]]; - totalFx += node.fx; - totalFy += node.fy; - } - var correctionFx = totalFx / nodeIndices.length; - var correctionFy = totalFy / nodeIndices.length; - - for (i = 0; i < nodeIndices.length; i++) { - var node = nodes[nodeIndices[i]]; - node.fx -= correctionFx; - node.fy -= correctionFy; - } - }; -/***/ }, -/* 63 */ -/***/ function(module, exports, __webpack_require__) { /** - * This function calculates the forces the nodes apply on eachother based on a gravitational model. - * The Barnes Hut method is used to speed up this N-body simulation. + * This function calculates the springforces on the nodes, accounting for the support nodes. * * @private */ - exports._calculateNodeForces = function() { - if (this.constants.physics.barnesHut.gravitationalConstant != 0) { - var node; - var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; - var nodeCount = nodeIndices.length; + exports._calculateSpringForcesWithSupport = function () { + var edgeLength, edge, edgeId, combinedClusterSize; + var edges = this.edges; - this._formBarnesHutTree(nodes,nodeIndices); + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + if (edge.via != null) { + var node1 = edge.to; + var node2 = edge.via; + var node3 = edge.from; - var barnesHutTree = this.barnesHutTree; + edgeLength = edge.physics.springLength; - // place the nodes one by one recursively - for (var i = 0; i < nodeCount; i++) { - node = nodes[nodeIndices[i]]; - if (node.options.mass > 0) { - // starting with root is irrelevant, it never passes the BarnesHut condition - this._getForceContribution(barnesHutTree.root.children.NW,node); - this._getForceContribution(barnesHutTree.root.children.NE,node); - this._getForceContribution(barnesHutTree.root.children.SW,node); - this._getForceContribution(barnesHutTree.root.children.SE,node); + combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; + + // this implies that the edges between big clusters are longer + edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth; + this._calculateSpringForce(node1, node2, 0.5 * edgeLength); + this._calculateSpringForce(node2, node3, 0.5 * edgeLength); + } + } } } } @@ -31001,376 +30540,458 @@ return /******/ (function(modules) { // webpackBootstrap /** - * This function traverses the barnesHutTree. It checks when it can approximate distant nodes with their center of mass. - * If a region contains a single node, we check if it is not itself, then we apply the force. + * This is the code actually performing the calculation for the function above. It is split out to avoid repetition. * - * @param parentBranch - * @param node + * @param node1 + * @param node2 + * @param edgeLength * @private */ - exports._getForceContribution = function(parentBranch,node) { - // we get no force contribution from an empty region - if (parentBranch.childrenCount > 0) { - var dx,dy,distance; + exports._calculateSpringForce = function (node1, node2, edgeLength) { + var dx, dy, fx, fy, springForce, distance; + + dx = (node1.x - node2.x); + dy = (node1.y - node2.y); + distance = Math.sqrt(dx * dx + dy * dy); + + if (distance == 0) { + distance = 0.01; + } + + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + + fx = dx * springForce; + fy = dy * springForce; + + node1.fx += fx; + node1.fy += fy; + node2.fx -= fx; + node2.fy -= fy; + }; + + + exports._cleanupPhysicsConfiguration = function() { + if (this.physicsConfiguration !== undefined) { + while (this.physicsConfiguration.hasChildNodes()) { + this.physicsConfiguration.removeChild(this.physicsConfiguration.firstChild); + } + + this.physicsConfiguration.parentNode.removeChild(this.physicsConfiguration); + this.physicsConfiguration = undefined; + } + } + + /** + * Load the HTML for the physics config and bind it + * @private + */ + exports._loadPhysicsConfiguration = function () { + if (this.physicsConfiguration === undefined) { + this.backupConstants = {}; + util.deepExtend(this.backupConstants,this.constants); + + var maxGravitational = Math.max(20000, (-1 * this.constants.physics.barnesHut.gravitationalConstant) * 10); + var maxSpring = Math.min(0.05, this.constants.physics.barnesHut.springConstant * 10) + + var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"]; + this.physicsConfiguration = document.createElement('div'); + this.physicsConfiguration.className = "PhysicsConfiguration"; + this.physicsConfiguration.innerHTML = '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
Simulation Mode:
Barnes HutRepulsionHierarchical
' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
Options:
' + this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement); + this.optionsDiv = document.createElement("div"); + this.optionsDiv.style.fontSize = "14px"; + this.optionsDiv.style.fontFamily = "verdana"; + this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement); + + var rangeElement; + rangeElement = document.getElementById('graph_BH_gc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant"); + rangeElement = document.getElementById('graph_BH_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_BH_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_BH_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_BH_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping"); + + rangeElement = document.getElementById('graph_R_nd'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance"); + rangeElement = document.getElementById('graph_R_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_R_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_R_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_R_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping"); + + rangeElement = document.getElementById('graph_H_nd'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); + rangeElement = document.getElementById('graph_H_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_H_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_H_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_H_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping"); + rangeElement = document.getElementById('graph_H_direction'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction"); + rangeElement = document.getElementById('graph_H_levsep'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation"); + rangeElement = document.getElementById('graph_H_nspac'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing"); + + var radioButton1 = document.getElementById("graph_physicsMethod1"); + var radioButton2 = document.getElementById("graph_physicsMethod2"); + var radioButton3 = document.getElementById("graph_physicsMethod3"); + radioButton2.checked = true; + if (this.constants.physics.barnesHut.enabled) { + radioButton1.checked = true; + } + if (this.constants.hierarchicalLayout.enabled) { + radioButton3.checked = true; + } - // get the distance from the center of mass to the node. - dx = parentBranch.centerOfMass.x - node.x; - dy = parentBranch.centerOfMass.y - node.y; - distance = Math.sqrt(dx * dx + dy * dy); + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + var graph_repositionNodes = document.getElementById("graph_repositionNodes"); + var graph_generateOptions = document.getElementById("graph_generateOptions"); - // BarnesHut condition - // original condition : s/d < thetaInverted = passed === d/s > 1/theta = passed - // calcSize = 1/s --> d * 1/s > 1/theta = passed - if (distance * parentBranch.calcSize > this.constants.physics.barnesHut.thetaInverted) { - // duplicate code to reduce function calls to speed up program - if (distance == 0) { - distance = 0.1*Math.random(); - dx = distance; - } - var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.options.mass / (distance * distance * distance); - var fx = dx * gravityForce; - var fy = dy * gravityForce; - node.fx += fx; - node.fy += fy; + graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this); + graph_repositionNodes.onclick = graphRepositionNodes.bind(this); + graph_generateOptions.onclick = graphGenerateOptions.bind(this); + if (this.constants.smoothCurves == true && this.constants.dynamicSmoothCurves == false) { + graph_toggleSmooth.style.background = "#A4FF56"; } else { - // Did not pass the condition, go into children if available - if (parentBranch.childrenCount == 4) { - this._getForceContribution(parentBranch.children.NW,node); - this._getForceContribution(parentBranch.children.NE,node); - this._getForceContribution(parentBranch.children.SW,node); - this._getForceContribution(parentBranch.children.SE,node); - } - else { // parentBranch must have only one node, if it was empty we wouldnt be here - if (parentBranch.children.data.id != node.id) { // if it is not self - // duplicate code to reduce function calls to speed up program - if (distance == 0) { - distance = 0.5*Math.random(); - dx = distance; - } - var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.options.mass / (distance * distance * distance); - var fx = dx * gravityForce; - var fy = dy * gravityForce; - node.fx += fx; - node.fy += fy; - } - } + graph_toggleSmooth.style.background = "#FF8532"; } + + + switchConfigurations.apply(this); + + radioButton1.onchange = switchConfigurations.bind(this); + radioButton2.onchange = switchConfigurations.bind(this); + radioButton3.onchange = switchConfigurations.bind(this); } }; /** - * This function constructs the barnesHut tree recursively. It creates the root, splits it and starts placing the nodes. + * This overwrites the this.constants. * - * @param nodes - * @param nodeIndices + * @param constantsVariableName + * @param value * @private */ - exports._formBarnesHutTree = function(nodes,nodeIndices) { - var node; - var nodeCount = nodeIndices.length; - - var minX = Number.MAX_VALUE, - minY = Number.MAX_VALUE, - maxX =-Number.MAX_VALUE, - maxY =-Number.MAX_VALUE; - - // get the range of the nodes - for (var i = 0; i < nodeCount; i++) { - var x = nodes[nodeIndices[i]].x; - var y = nodes[nodeIndices[i]].y; - if (nodes[nodeIndices[i]].options.mass > 0) { - if (x < minX) { minX = x; } - if (x > maxX) { maxX = x; } - if (y < minY) { minY = y; } - if (y > maxY) { maxY = y; } - } + exports._overWriteGraphConstants = function (constantsVariableName, value) { + var nameArray = constantsVariableName.split("_"); + if (nameArray.length == 1) { + this.constants[nameArray[0]] = value; } - // make the range a square - var sizeDiff = Math.abs(maxX - minX) - Math.abs(maxY - minY); // difference between X and Y - if (sizeDiff > 0) {minY -= 0.5 * sizeDiff; maxY += 0.5 * sizeDiff;} // xSize > ySize - else {minX += 0.5 * sizeDiff; maxX -= 0.5 * sizeDiff;} // xSize < ySize - - - var minimumTreeSize = 1e-5; - var rootSize = Math.max(minimumTreeSize,Math.abs(maxX - minX)); - var halfRootSize = 0.5 * rootSize; - var centerX = 0.5 * (minX + maxX), centerY = 0.5 * (minY + maxY); - - // construct the barnesHutTree - var barnesHutTree = { - root:{ - centerOfMass: {x:0, y:0}, - mass:0, - range: { - minX: centerX-halfRootSize,maxX:centerX+halfRootSize, - minY: centerY-halfRootSize,maxY:centerY+halfRootSize - }, - size: rootSize, - calcSize: 1 / rootSize, - children: { data:null}, - maxWidth: 0, - level: 0, - childrenCount: 4 - } - }; - this._splitBranch(barnesHutTree.root); - - // place the nodes one by one recursively - for (i = 0; i < nodeCount; i++) { - node = nodes[nodeIndices[i]]; - if (node.options.mass > 0) { - this._placeInTree(barnesHutTree.root,node); - } + else if (nameArray.length == 2) { + this.constants[nameArray[0]][nameArray[1]] = value; + } + else if (nameArray.length == 3) { + this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value; } - - // make global - this.barnesHutTree = barnesHutTree }; /** - * this updates the mass of a branch. this is increased by adding a node. - * - * @param parentBranch - * @param node - * @private + * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. */ - exports._updateBranchMass = function(parentBranch, node) { - var totalMass = parentBranch.mass + node.options.mass; - var totalMassInv = 1/totalMass; - - parentBranch.centerOfMass.x = parentBranch.centerOfMass.x * parentBranch.mass + node.x * node.options.mass; - parentBranch.centerOfMass.x *= totalMassInv; - - parentBranch.centerOfMass.y = parentBranch.centerOfMass.y * parentBranch.mass + node.y * node.options.mass; - parentBranch.centerOfMass.y *= totalMassInv; - - parentBranch.mass = totalMass; - var biggestSize = Math.max(Math.max(node.height,node.radius),node.width); - parentBranch.maxWidth = (parentBranch.maxWidth < biggestSize) ? biggestSize : parentBranch.maxWidth; - - }; + function graphToggleSmoothCurves () { + this.constants.smoothCurves.enabled = !this.constants.smoothCurves.enabled; + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} + else {graph_toggleSmooth.style.background = "#FF8532";} + this._configureSmoothCurves(false); + } /** - * determine in which branch the node will be placed. + * this function is used to scramble the nodes * - * @param parentBranch - * @param node - * @param skipMassUpdate - * @private */ - exports._placeInTree = function(parentBranch,node,skipMassUpdate) { - if (skipMassUpdate != true || skipMassUpdate === undefined) { - // update the mass of the branch. - this._updateBranchMass(parentBranch,node); + function graphRepositionNodes () { + for (var nodeId in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(nodeId)) { + this.calculationNodes[nodeId].vx = 0; this.calculationNodes[nodeId].vy = 0; + this.calculationNodes[nodeId].fx = 0; this.calculationNodes[nodeId].fy = 0; + } } + if (this.constants.hierarchicalLayout.enabled == true) { + this._setupHierarchicalLayout(); + showValueOfRange.call(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); + showValueOfRange.call(this, 'graph_H_cg', 1, "physics_centralGravity"); + showValueOfRange.call(this, 'graph_H_sc', 1, "physics_springConstant"); + showValueOfRange.call(this, 'graph_H_sl', 1, "physics_springLength"); + showValueOfRange.call(this, 'graph_H_damp', 1, "physics_damping"); + } + else { + this.repositionNodes(); + } + this.moving = true; + this.start(); + } - if (parentBranch.children.NW.range.maxX > node.x) { // in NW or SW - if (parentBranch.children.NW.range.maxY > node.y) { // in NW - this._placeInRegion(parentBranch,node,"NW"); + /** + * this is used to generate an options file from the playing with physics system. + */ + function graphGenerateOptions () { + var options = "No options are required, default values used."; + var optionsSpecific = []; + var radioButton1 = document.getElementById("graph_physicsMethod1"); + var radioButton2 = document.getElementById("graph_physicsMethod2"); + if (radioButton1.checked == true) { + if (this.constants.physics.barnesHut.gravitationalConstant != this.backupConstants.physics.barnesHut.gravitationalConstant) {optionsSpecific.push("gravitationalConstant: " + this.constants.physics.barnesHut.gravitationalConstant);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.barnesHut.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.barnesHut.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options = "var options = {"; + options += "physics: {barnesHut: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } + } + options += '}}' } - else { // in SW - this._placeInRegion(parentBranch,node,"SW"); + if (this.constants.smoothCurves.enabled != this.backupConstants.smoothCurves.enabled) { + if (optionsSpecific.length == 0) {options = "var options = {";} + else {options += ", "} + options += "smoothCurves: " + this.constants.smoothCurves.enabled; + } + if (options != "No options are required, default values used.") { + options += '};' } } - else { // in NE or SE - if (parentBranch.children.NW.range.maxY > node.y) { // in NE - this._placeInRegion(parentBranch,node,"NE"); + else if (radioButton2.checked == true) { + options = "var options = {"; + options += "physics: {barnesHut: {enabled: false}"; + if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.repulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options += ", repulsion: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } + } + options += '}}' } - else { // in SE - this._placeInRegion(parentBranch,node,"SE"); + if (optionsSpecific.length == 0) {options += "}"} + if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { + options += ", smoothCurves: " + this.constants.smoothCurves; } + options += '};' } - }; - - - /** - * actually place the node in a region (or branch) - * - * @param parentBranch - * @param node - * @param region - * @private - */ - exports._placeInRegion = function(parentBranch,node,region) { - switch (parentBranch.children[region].childrenCount) { - case 0: // place node here - parentBranch.children[region].children.data = node; - parentBranch.children[region].childrenCount = 1; - this._updateBranchMass(parentBranch.children[region],node); - break; - case 1: // convert into children - // if there are two nodes exactly overlapping (on init, on opening of cluster etc.) - // we move one node a pixel and we do not put it in the tree. - if (parentBranch.children[region].children.data.x == node.x && - parentBranch.children[region].children.data.y == node.y) { - node.x += Math.random(); - node.y += Math.random(); + else { + options = "var options = {"; + if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options += "physics: {hierarchicalRepulsion: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", "; + } } - else { - this._splitBranch(parentBranch.children[region]); - this._placeInTree(parentBranch.children[region],node); + options += '}},'; + } + options += 'hierarchicalLayout: {'; + optionsSpecific = []; + if (this.constants.hierarchicalLayout.direction != this.backupConstants.hierarchicalLayout.direction) {optionsSpecific.push("direction: " + this.constants.hierarchicalLayout.direction);} + if (Math.abs(this.constants.hierarchicalLayout.levelSeparation) != this.backupConstants.hierarchicalLayout.levelSeparation) {optionsSpecific.push("levelSeparation: " + this.constants.hierarchicalLayout.levelSeparation);} + if (this.constants.hierarchicalLayout.nodeSpacing != this.backupConstants.hierarchicalLayout.nodeSpacing) {optionsSpecific.push("nodeSpacing: " + this.constants.hierarchicalLayout.nodeSpacing);} + if (optionsSpecific.length != 0) { + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } } - break; - case 4: // place in branch - this._placeInTree(parentBranch.children[region],node); - break; + options += '}' + } + else { + options += "enabled:true}"; + } + options += '};' } - }; + this.optionsDiv.innerHTML = options; + } + /** - * this function splits a branch into 4 sub branches. If the branch contained a node, we place it in the subbranch - * after the split is complete. + * this is used to switch between barnesHut, repulsion and hierarchical. * - * @param parentBranch - * @private */ - exports._splitBranch = function(parentBranch) { - // if the branch is shaded with a node, replace the node in the new subset. - var containedNode = null; - if (parentBranch.childrenCount == 1) { - containedNode = parentBranch.children.data; - parentBranch.mass = 0; parentBranch.centerOfMass.x = 0; parentBranch.centerOfMass.y = 0; + function switchConfigurations () { + var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"]; + var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value; + var tableId = "graph_" + radioButton + "_table"; + var table = document.getElementById(tableId); + table.style.display = "block"; + for (var i = 0; i < ids.length; i++) { + if (ids[i] != tableId) { + table = document.getElementById(ids[i]); + table.style.display = "none"; + } } - parentBranch.childrenCount = 4; - parentBranch.children.data = null; - this._insertRegion(parentBranch,"NW"); - this._insertRegion(parentBranch,"NE"); - this._insertRegion(parentBranch,"SW"); - this._insertRegion(parentBranch,"SE"); - - if (containedNode != null) { - this._placeInTree(parentBranch,containedNode); + this._restoreNodes(); + if (radioButton == "R") { + this.constants.hierarchicalLayout.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = false; + this.constants.physics.barnesHut.enabled = false; } - }; - - - /** - * This function subdivides the region into four new segments. - * Specifically, this inserts a single new segment. - * It fills the children section of the parentBranch - * - * @param parentBranch - * @param region - * @param parentRange - * @private - */ - exports._insertRegion = function(parentBranch, region) { - var minX,maxX,minY,maxY; - var childSize = 0.5 * parentBranch.size; - switch (region) { - case "NW": - minX = parentBranch.range.minX; - maxX = parentBranch.range.minX + childSize; - minY = parentBranch.range.minY; - maxY = parentBranch.range.minY + childSize; - break; - case "NE": - minX = parentBranch.range.minX + childSize; - maxX = parentBranch.range.maxX; - minY = parentBranch.range.minY; - maxY = parentBranch.range.minY + childSize; - break; - case "SW": - minX = parentBranch.range.minX; - maxX = parentBranch.range.minX + childSize; - minY = parentBranch.range.minY + childSize; - maxY = parentBranch.range.maxY; - break; - case "SE": - minX = parentBranch.range.minX + childSize; - maxX = parentBranch.range.maxX; - minY = parentBranch.range.minY + childSize; - maxY = parentBranch.range.maxY; - break; + else if (radioButton == "H") { + if (this.constants.hierarchicalLayout.enabled == false) { + this.constants.hierarchicalLayout.enabled = true; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this.constants.physics.barnesHut.enabled = false; + this.constants.smoothCurves.enabled = false; + this._setupHierarchicalLayout(); + } } - - - parentBranch.children[region] = { - centerOfMass:{x:0,y:0}, - mass:0, - range:{minX:minX,maxX:maxX,minY:minY,maxY:maxY}, - size: 0.5 * parentBranch.size, - calcSize: 2 * parentBranch.calcSize, - children: {data:null}, - maxWidth: 0, - level: parentBranch.level+1, - childrenCount: 0 - }; - }; + else { + this.constants.hierarchicalLayout.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = false; + this.constants.physics.barnesHut.enabled = true; + } + this._loadSelectedForceSolver(); + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} + else {graph_toggleSmooth.style.background = "#FF8532";} + this.moving = true; + this.start(); + } /** - * This function is for debugging purposed, it draws the tree. + * this generates the ranges depending on the iniital values. * - * @param ctx - * @param color - * @private + * @param id + * @param map + * @param constantsVariableName */ - exports._drawTree = function(ctx,color) { - if (this.barnesHutTree !== undefined) { - - ctx.lineWidth = 1; + function showValueOfRange (id,map,constantsVariableName) { + var valueId = id + "_value"; + var rangeValue = document.getElementById(id).value; - this._drawBranch(this.barnesHutTree.root,ctx,color); + if (Array.isArray(map)) { + document.getElementById(valueId).value = map[parseInt(rangeValue)]; + this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); } - }; - - - /** - * This function is for debugging purposes. It draws the branches recursively. - * - * @param branch - * @param ctx - * @param color - * @private - */ - exports._drawBranch = function(branch,ctx,color) { - if (color === undefined) { - color = "#FF0000"; + else { + document.getElementById(valueId).value = parseInt(map) * parseFloat(rangeValue); + this._overWriteGraphConstants(constantsVariableName, parseInt(map) * parseFloat(rangeValue)); } - if (branch.childrenCount == 4) { - this._drawBranch(branch.children.NW,ctx); - this._drawBranch(branch.children.NE,ctx); - this._drawBranch(branch.children.SE,ctx); - this._drawBranch(branch.children.SW,ctx); + if (constantsVariableName == "hierarchicalLayout_direction" || + constantsVariableName == "hierarchicalLayout_levelSeparation" || + constantsVariableName == "hierarchicalLayout_nodeSpacing") { + this._setupHierarchicalLayout(); } - ctx.strokeStyle = color; - ctx.beginPath(); - ctx.moveTo(branch.range.minX,branch.range.minY); - ctx.lineTo(branch.range.maxX,branch.range.minY); - ctx.stroke(); - - ctx.beginPath(); - ctx.moveTo(branch.range.maxX,branch.range.minY); - ctx.lineTo(branch.range.maxX,branch.range.maxY); - ctx.stroke(); - - ctx.beginPath(); - ctx.moveTo(branch.range.maxX,branch.range.maxY); - ctx.lineTo(branch.range.minX,branch.range.maxY); - ctx.stroke(); + this.moving = true; + this.start(); + } - ctx.beginPath(); - ctx.moveTo(branch.range.minX,branch.range.maxY); - ctx.lineTo(branch.range.minX,branch.range.minY); - ctx.stroke(); - /* - if (branch.mass > 0) { - ctx.circle(branch.centerOfMass.x, branch.centerOfMass.y, 3*branch.mass); - ctx.stroke(); - } - */ - }; /***/ }, -/* 64 */ +/* 61 */ /***/ function(module, exports, __webpack_require__) { /** @@ -32505,11 +32126,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 65 */ +/* 62 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Node = __webpack_require__(56); + var Node = __webpack_require__(40); /** * Creation of the SectorMixin var. @@ -33064,10 +32685,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 66 */ +/* 63 */ /***/ function(module, exports, __webpack_require__) { - var Node = __webpack_require__(56); + var Node = __webpack_require__(40); /** * This function can be called from the _doInAllSectors function @@ -33778,13 +33399,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 67 */ +/* 64 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Node = __webpack_require__(56); - var Edge = __webpack_require__(57); - var Hammer = __webpack_require__(19); + var Node = __webpack_require__(40); + var Edge = __webpack_require__(37); + var Hammer = __webpack_require__(45); /** * clears the toolbar div element of children @@ -34501,11 +34122,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 68 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Hammer = __webpack_require__(19); + var Hammer = __webpack_require__(45); exports._cleanNavigation = function() { // clean hammer bindings @@ -34649,33 +34270,521 @@ return /******/ (function(modules) { // webpackBootstrap }; - /** - * Stop zooming and unhighlight the zoom controls - * @private - */ - exports._stopZoom = function(event) { - this.zoomIncrement = 0; - event && event.preventDefault(); - }; + /** + * Stop zooming and unhighlight the zoom controls + * @private + */ + exports._stopZoom = function(event) { + this.zoomIncrement = 0; + event && event.preventDefault(); + }; + + + /** + * Stop moving in the Y direction and unHighlight the up and down + * @private + */ + exports._yStopMoving = function(event) { + this.yIncrement = 0; + event && event.preventDefault(); + }; + + + /** + * Stop moving in the X direction and unHighlight left and right. + * @private + */ + exports._xStopMoving = function(event) { + this.xIncrement = 0; + event && event.preventDefault(); + }; + + +/***/ }, +/* 66 */ +/***/ function(module, exports, __webpack_require__) { + + exports._resetLevels = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.preassignedLevel == false) { + node.level = -1; + node.hierarchyEnumerated = false; + } + } + } + }; + + /** + * This is the main function to layout the nodes in a hierarchical way. + * It checks if the node details are supplied correctly + * + * @private + */ + exports._setupHierarchicalLayout = function() { + if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { + // get the size of the largest hubs and check if the user has defined a level for a node. + var hubsize = 0; + var node, nodeId; + var definedLevel = false; + var undefinedLevel = false; + + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level != -1) { + definedLevel = true; + } + else { + undefinedLevel = true; + } + if (hubsize < node.edges.length) { + hubsize = node.edges.length; + } + } + } + + // if the user defined some levels but not all, alert and run without hierarchical layout + if (undefinedLevel == true && definedLevel == true) { + throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); + this.zoomExtent({duration:0},true,this.constants.clustering.enabled); + if (!this.constants.clustering.enabled) { + this.start(); + } + } + else { + // setup the system to use hierarchical method. + this._changeConstants(); + + // define levels if undefined by the users. Based on hubsize + if (undefinedLevel == true) { + if (this.constants.hierarchicalLayout.layout == "hubsize") { + this._determineLevels(hubsize); + } + else { + this._determineLevelsDirected(false); + } + + } + // check the distribution of the nodes per level. + var distribution = this._getDistribution(); + + // place the nodes on the canvas. This also stablilizes the system. + this._placeNodesByHierarchy(distribution); + + // start the simulation. + this.start(); + } + } + }; + + + /** + * This function places the nodes on the canvas based on the hierarchial distribution. + * + * @param {Object} distribution | obtained by the function this._getDistribution() + * @private + */ + exports._placeNodesByHierarchy = function(distribution) { + var nodeId, node; + + // start placing all the level 0 nodes first. Then recursively position their branches. + for (var level in distribution) { + if (distribution.hasOwnProperty(level)) { + + for (nodeId in distribution[level].nodes) { + if (distribution[level].nodes.hasOwnProperty(nodeId)) { + node = distribution[level].nodes[nodeId]; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (node.xFixed) { + node.x = distribution[level].minPos; + node.xFixed = false; + + distribution[level].minPos += distribution[level].nodeSpacing; + } + } + else { + if (node.yFixed) { + node.y = distribution[level].minPos; + node.yFixed = false; + + distribution[level].minPos += distribution[level].nodeSpacing; + } + } + this._placeBranchNodes(node.edges,node.id,distribution,node.level); + } + } + } + } + + // stabilize the system after positioning. This function calls zoomExtent. + this._stabilize(); + }; + + + /** + * This function get the distribution of levels based on hubsize + * + * @returns {Object} + * @private + */ + exports._getDistribution = function() { + var distribution = {}; + var nodeId, node, level; + + // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. + // the fix of X is removed after the x value has been set. + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.xFixed = true; + node.yFixed = true; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + else { + node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + if (distribution[node.level] === undefined) { + distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; + } + distribution[node.level].amount += 1; + distribution[node.level].nodes[nodeId] = node; + } + } + + // determine the largest amount of nodes of all levels + var maxCount = 0; + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + if (maxCount < distribution[level].amount) { + maxCount = distribution[level].amount; + } + } + } + + // set the initial position and spacing of each nodes accordingly + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; + distribution[level].nodeSpacing /= (distribution[level].amount + 1); + distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); + } + } + + return distribution; + }; + + + /** + * this function allocates nodes in levels based on the recursive branching from the largest hubs. + * + * @param hubsize + * @private + */ + exports._determineLevels = function(hubsize) { + var nodeId, node; + + // determine hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.edges.length == hubsize) { + node.level = 0; + } + } + } + + // branch from hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level == 0) { + this._setLevel(1,node.edges,node.id); + } + } + } + }; + + + + /** + * this function allocates nodes in levels based on the direction of the edges + * + * @param hubsize + * @private + */ + exports._determineLevelsDirected = function() { + var nodeId, node, firstNode; + var minLevel = 10000; + + // set first node to source + firstNode = this.nodes[this.nodeIndices[0]]; + firstNode.level = minLevel; + this._setLevelDirected(minLevel,firstNode.edges,firstNode.id); + + // get the minimum level + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + minLevel = node.level < minLevel ? node.level : minLevel; + } + } + + // subtract the minimum from the set so we have a range starting from 0 + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.level -= minLevel; + } + } + }; + + + /** + * Since hierarchical layout does not support: + * - smooth curves (based on the physics), + * - clustering (based on dynamic node counts) + * + * We disable both features so there will be no problems. + * + * @private + */ + exports._changeConstants = function() { + this.constants.clustering.enabled = false; + this.constants.physics.barnesHut.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this._loadSelectedForceSolver(); + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.dynamic = false; + } + this._configureSmoothCurves(); + + var config = this.constants.hierarchicalLayout; + config.levelSeparation = Math.abs(config.levelSeparation); + if (config.direction == "RL" || config.direction == "DU") { + config.levelSeparation *= -1; + } + + if (config.direction == "RL" || config.direction == "LR") { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "vertical"; + } + } + else { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "horizontal"; + } + } + }; + + + /** + * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes + * on a X position that ensures there will be no overlap. + * + * @param edges + * @param parentId + * @param distribution + * @param parentLevel + * @private + */ + exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + } + else { + childNode = edges[i].to; + } + + // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. + var nodeMoved = false; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (childNode.xFixed && childNode.level > parentLevel) { + childNode.xFixed = false; + childNode.x = distribution[childNode.level].minPos; + nodeMoved = true; + } + } + else { + if (childNode.yFixed && childNode.level > parentLevel) { + childNode.yFixed = false; + childNode.y = distribution[childNode.level].minPos; + nodeMoved = true; + } + } + + if (nodeMoved == true) { + distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; + if (childNode.edges.length > 1) { + this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); + } + } + } + }; + + + /** + * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. + * + * @param level + * @param edges + * @param parentId + * @private + */ + exports._setLevel = function(level, edges, parentId) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + } + else { + childNode = edges[i].to; + } + if (childNode.level == -1 || childNode.level > level) { + childNode.level = level; + if (childNode.edges.length > 1) { + this._setLevel(level+1, childNode.edges, childNode.id); + } + } + } + }; + + + /** + * this function is called recursively to enumerate the branched of the first node and give each node a level based on edge direction + * + * @param level + * @param edges + * @param parentId + * @private + */ + exports._setLevelDirected = function(level, edges, parentId) { + this.nodes[parentId].hierarchyEnumerated = true; + var childNode, direction; + for (var i = 0; i < edges.length; i++) { + direction = 1; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + direction = -1; + } + else { + childNode = edges[i].to; + } + if (childNode.level == -1) { + childNode.level = level + direction; + } + } + + for (var i = 0; i < edges.length; i++) { + if (edges[i].toId == parentId) {childNode = edges[i].from;} + else {childNode = edges[i].to;} + + if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { + this._setLevelDirected(childNode.level, childNode.edges, childNode.id); + } + } + }; + + + /** + * Unfix nodes + * + * @private + */ + exports._restoreNodes = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.nodes[nodeId].xFixed = false; + this.nodes[nodeId].yFixed = false; + } + } + }; + + +/***/ }, +/* 67 */ +/***/ function(module, exports, __webpack_require__) { + + function webpackContext(req) { + throw new Error("Cannot find module '" + req + "'."); + } + webpackContext.keys = function() { return []; }; + webpackContext.resolve = webpackContext; + module.exports = webpackContext; + webpackContext.id = 67; + + +/***/ }, +/* 68 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Calculate the forces the nodes apply on each other based on a repulsion field. + * This field is linearly approximated. + * + * @private + */ + exports._calculateNodeForces = function () { + var dx, dy, angle, distance, fx, fy, combinedClusterSize, + repulsingForce, node1, node2, i, j; + + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; + + // approximation constants + var a_base = -2 / 3; + var b = 4 / 3; + + // repulsing forces between nodes + var nodeDistance = this.constants.physics.repulsion.nodeDistance; + var minimumDistance = nodeDistance; + + // we loop from i over all but the last entree in the array + // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j + for (i = 0; i < nodeIndices.length - 1; i++) { + node1 = nodes[nodeIndices[i]]; + for (j = i + 1; j < nodeIndices.length; j++) { + node2 = nodes[nodeIndices[j]]; + combinedClusterSize = node1.clusterSize + node2.clusterSize - 2; + + dx = node2.x - node1.x; + dy = node2.y - node1.y; + distance = Math.sqrt(dx * dx + dy * dy); + + // same condition as BarnesHut, making sure nodes are never 100% overlapping. + if (distance == 0) { + distance = 0.1*Math.random(); + dx = distance; + } + minimumDistance = (combinedClusterSize == 0) ? nodeDistance : (nodeDistance * (1 + combinedClusterSize * this.constants.clustering.distanceAmplification)); + var a = a_base / minimumDistance; + if (distance < 2 * minimumDistance) { + if (distance < 0.5 * minimumDistance) { + repulsingForce = 1.0; + } + else { + repulsingForce = a * distance + b; // linear approx of 1 / (1 + Math.exp((distance / minimumDistance - 1) * steepness)) + } - /** - * Stop moving in the Y direction and unHighlight the up and down - * @private - */ - exports._yStopMoving = function(event) { - this.yIncrement = 0; - event && event.preventDefault(); - }; + // amplify the repulsion for clusters. + repulsingForce *= (combinedClusterSize == 0) ? 1 : 1 + combinedClusterSize * this.constants.clustering.forceAmplification; + repulsingForce = repulsingForce / Math.max(distance,0.01*minimumDistance); + fx = dx * repulsingForce; + fy = dy * repulsingForce; + node1.fx -= fx; + node1.fy -= fy; + node2.fx += fx; + node2.fy += fy; - /** - * Stop moving in the X direction and unHighlight left and right. - * @private - */ - exports._xStopMoving = function(event) { - this.xIncrement = 0; - event && event.preventDefault(); + } + } + } }; @@ -34683,676 +34792,579 @@ return /******/ (function(modules) { // webpackBootstrap /* 69 */ /***/ function(module, exports, __webpack_require__) { - exports._resetLevels = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.preassignedLevel == false) { - node.level = -1; - node.hierarchyEnumerated = false; - } - } - } - }; - /** - * This is the main function to layout the nodes in a hierarchical way. - * It checks if the node details are supplied correctly + * Calculate the forces the nodes apply on eachother based on a repulsion field. + * This field is linearly approximated. * * @private */ - exports._setupHierarchicalLayout = function() { - if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { - // get the size of the largest hubs and check if the user has defined a level for a node. - var hubsize = 0; - var node, nodeId; - var definedLevel = false; - var undefinedLevel = false; + exports._calculateNodeForces = function () { + var dx, dy, distance, fx, fy, + repulsingForce, node1, node2, i, j; - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level != -1) { - definedLevel = true; - } - else { - undefinedLevel = true; - } - if (hubsize < node.edges.length) { - hubsize = node.edges.length; - } - } - } + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; - // if the user defined some levels but not all, alert and run without hierarchical layout - if (undefinedLevel == true && definedLevel == true) { - throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); - this.zoomExtent({duration:0},true,this.constants.clustering.enabled); - if (!this.constants.clustering.enabled) { - this.start(); - } - } - else { - // setup the system to use hierarchical method. - this._changeConstants(); + // repulsing forces between nodes + var nodeDistance = this.constants.physics.hierarchicalRepulsion.nodeDistance; - // define levels if undefined by the users. Based on hubsize - if (undefinedLevel == true) { - if (this.constants.hierarchicalLayout.layout == "hubsize") { - this._determineLevels(hubsize); + // we loop from i over all but the last entree in the array + // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j + for (i = 0; i < nodeIndices.length - 1; i++) { + node1 = nodes[nodeIndices[i]]; + for (j = i + 1; j < nodeIndices.length; j++) { + node2 = nodes[nodeIndices[j]]; + + // nodes only affect nodes on their level + if (node1.level == node2.level) { + + dx = node2.x - node1.x; + dy = node2.y - node1.y; + distance = Math.sqrt(dx * dx + dy * dy); + + + var steepness = 0.05; + if (distance < nodeDistance) { + repulsingForce = -Math.pow(steepness*distance,2) + Math.pow(steepness*nodeDistance,2); } else { - this._determineLevelsDirected(false); + repulsingForce = 0; } + // normalize force with + if (distance == 0) { + distance = 0.01; + } + else { + repulsingForce = repulsingForce / distance; + } + fx = dx * repulsingForce; + fy = dy * repulsingForce; + node1.fx -= fx; + node1.fy -= fy; + node2.fx += fx; + node2.fy += fy; } - // check the distribution of the nodes per level. - var distribution = this._getDistribution(); - - // place the nodes on the canvas. This also stablilizes the system. - this._placeNodesByHierarchy(distribution); - - // start the simulation. - this.start(); } } }; /** - * This function places the nodes on the canvas based on the hierarchial distribution. + * this function calculates the effects of the springs in the case of unsmooth curves. * - * @param {Object} distribution | obtained by the function this._getDistribution() * @private */ - exports._placeNodesByHierarchy = function(distribution) { - var nodeId, node; + exports._calculateHierarchicalSpringForces = function () { + var edgeLength, edge, edgeId; + var dx, dy, fx, fy, springForce, distance; + var edges = this.edges; - // start placing all the level 0 nodes first. Then recursively position their branches. - for (var level in distribution) { - if (distribution.hasOwnProperty(level)) { + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; - for (nodeId in distribution[level].nodes) { - if (distribution[level].nodes.hasOwnProperty(nodeId)) { - node = distribution[level].nodes[nodeId]; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (node.xFixed) { - node.x = distribution[level].minPos; - node.xFixed = false; - distribution[level].minPos += distribution[level].nodeSpacing; - } + for (var i = 0; i < nodeIndices.length; i++) { + var node1 = nodes[nodeIndices[i]]; + node1.springFx = 0; + node1.springFy = 0; + } + + + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + edgeLength = edge.physics.springLength; + // this implies that the edges between big clusters are longer + edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; + + dx = (edge.from.x - edge.to.x); + dy = (edge.from.y - edge.to.y); + distance = Math.sqrt(dx * dx + dy * dy); + + if (distance == 0) { + distance = 0.01; } - else { - if (node.yFixed) { - node.y = distribution[level].minPos; - node.yFixed = false; - distribution[level].minPos += distribution[level].nodeSpacing; - } + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + + fx = dx * springForce; + fy = dy * springForce; + + + + if (edge.to.level != edge.from.level) { + edge.to.springFx -= fx; + edge.to.springFy -= fy; + edge.from.springFx += fx; + edge.from.springFy += fy; + } + else { + var factor = 0.5; + edge.to.fx -= factor*fx; + edge.to.fy -= factor*fy; + edge.from.fx += factor*fx; + edge.from.fy += factor*fy; } - this._placeBranchNodes(node.edges,node.id,distribution,node.level); } } } } - // stabilize the system after positioning. This function calls zoomExtent. - this._stabilize(); + // normalize spring forces + var springForce = 1; + var springFx, springFy; + for (i = 0; i < nodeIndices.length; i++) { + var node = nodes[nodeIndices[i]]; + springFx = Math.min(springForce,Math.max(-springForce,node.springFx)); + springFy = Math.min(springForce,Math.max(-springForce,node.springFy)); + + node.fx += springFx; + node.fy += springFy; + } + + // retain energy balance + var totalFx = 0; + var totalFy = 0; + for (i = 0; i < nodeIndices.length; i++) { + var node = nodes[nodeIndices[i]]; + totalFx += node.fx; + totalFy += node.fy; + } + var correctionFx = totalFx / nodeIndices.length; + var correctionFy = totalFy / nodeIndices.length; + + for (i = 0; i < nodeIndices.length; i++) { + var node = nodes[nodeIndices[i]]; + node.fx -= correctionFx; + node.fy -= correctionFy; + } + }; +/***/ }, +/* 70 */ +/***/ function(module, exports, __webpack_require__) { /** - * This function get the distribution of levels based on hubsize + * This function calculates the forces the nodes apply on eachother based on a gravitational model. + * The Barnes Hut method is used to speed up this N-body simulation. * - * @returns {Object} * @private */ - exports._getDistribution = function() { - var distribution = {}; - var nodeId, node, level; + exports._calculateNodeForces = function() { + if (this.constants.physics.barnesHut.gravitationalConstant != 0) { + var node; + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; + var nodeCount = nodeIndices.length; - // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. - // the fix of X is removed after the x value has been set. - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.xFixed = true; - node.yFixed = true; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - else { - node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - if (distribution[node.level] === undefined) { - distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; - } - distribution[node.level].amount += 1; - distribution[node.level].nodes[nodeId] = node; - } - } + this._formBarnesHutTree(nodes,nodeIndices); - // determine the largest amount of nodes of all levels - var maxCount = 0; - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - if (maxCount < distribution[level].amount) { - maxCount = distribution[level].amount; - } - } - } + var barnesHutTree = this.barnesHutTree; - // set the initial position and spacing of each nodes accordingly - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; - distribution[level].nodeSpacing /= (distribution[level].amount + 1); - distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); + // place the nodes one by one recursively + for (var i = 0; i < nodeCount; i++) { + node = nodes[nodeIndices[i]]; + if (node.options.mass > 0) { + // starting with root is irrelevant, it never passes the BarnesHut condition + this._getForceContribution(barnesHutTree.root.children.NW,node); + this._getForceContribution(barnesHutTree.root.children.NE,node); + this._getForceContribution(barnesHutTree.root.children.SW,node); + this._getForceContribution(barnesHutTree.root.children.SE,node); + } } } - - return distribution; }; /** - * this function allocates nodes in levels based on the recursive branching from the largest hubs. + * This function traverses the barnesHutTree. It checks when it can approximate distant nodes with their center of mass. + * If a region contains a single node, we check if it is not itself, then we apply the force. * - * @param hubsize + * @param parentBranch + * @param node * @private */ - exports._determineLevels = function(hubsize) { - var nodeId, node; + exports._getForceContribution = function(parentBranch,node) { + // we get no force contribution from an empty region + if (parentBranch.childrenCount > 0) { + var dx,dy,distance; - // determine hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.edges.length == hubsize) { - node.level = 0; + // get the distance from the center of mass to the node. + dx = parentBranch.centerOfMass.x - node.x; + dy = parentBranch.centerOfMass.y - node.y; + distance = Math.sqrt(dx * dx + dy * dy); + + // BarnesHut condition + // original condition : s/d < thetaInverted = passed === d/s > 1/theta = passed + // calcSize = 1/s --> d * 1/s > 1/theta = passed + if (distance * parentBranch.calcSize > this.constants.physics.barnesHut.thetaInverted) { + // duplicate code to reduce function calls to speed up program + if (distance == 0) { + distance = 0.1*Math.random(); + dx = distance; } + var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.options.mass / (distance * distance * distance); + var fx = dx * gravityForce; + var fy = dy * gravityForce; + node.fx += fx; + node.fy += fy; } - } - - // branch from hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level == 0) { - this._setLevel(1,node.edges,node.id); + else { + // Did not pass the condition, go into children if available + if (parentBranch.childrenCount == 4) { + this._getForceContribution(parentBranch.children.NW,node); + this._getForceContribution(parentBranch.children.NE,node); + this._getForceContribution(parentBranch.children.SW,node); + this._getForceContribution(parentBranch.children.SE,node); + } + else { // parentBranch must have only one node, if it was empty we wouldnt be here + if (parentBranch.children.data.id != node.id) { // if it is not self + // duplicate code to reduce function calls to speed up program + if (distance == 0) { + distance = 0.5*Math.random(); + dx = distance; + } + var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.options.mass / (distance * distance * distance); + var fx = dx * gravityForce; + var fy = dy * gravityForce; + node.fx += fx; + node.fy += fy; + } } } } }; - - /** - * this function allocates nodes in levels based on the direction of the edges + * This function constructs the barnesHut tree recursively. It creates the root, splits it and starts placing the nodes. * - * @param hubsize + * @param nodes + * @param nodeIndices * @private */ - exports._determineLevelsDirected = function() { - var nodeId, node, firstNode; - var minLevel = 10000; + exports._formBarnesHutTree = function(nodes,nodeIndices) { + var node; + var nodeCount = nodeIndices.length; - // set first node to source - firstNode = this.nodes[this.nodeIndices[0]]; - firstNode.level = minLevel; - this._setLevelDirected(minLevel,firstNode.edges,firstNode.id); + var minX = Number.MAX_VALUE, + minY = Number.MAX_VALUE, + maxX =-Number.MAX_VALUE, + maxY =-Number.MAX_VALUE; - // get the minimum level - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - minLevel = node.level < minLevel ? node.level : minLevel; + // get the range of the nodes + for (var i = 0; i < nodeCount; i++) { + var x = nodes[nodeIndices[i]].x; + var y = nodes[nodeIndices[i]].y; + if (nodes[nodeIndices[i]].options.mass > 0) { + if (x < minX) { minX = x; } + if (x > maxX) { maxX = x; } + if (y < minY) { minY = y; } + if (y > maxY) { maxY = y; } } } + // make the range a square + var sizeDiff = Math.abs(maxX - minX) - Math.abs(maxY - minY); // difference between X and Y + if (sizeDiff > 0) {minY -= 0.5 * sizeDiff; maxY += 0.5 * sizeDiff;} // xSize > ySize + else {minX += 0.5 * sizeDiff; maxX -= 0.5 * sizeDiff;} // xSize < ySize - // subtract the minimum from the set so we have a range starting from 0 - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.level -= minLevel; + + var minimumTreeSize = 1e-5; + var rootSize = Math.max(minimumTreeSize,Math.abs(maxX - minX)); + var halfRootSize = 0.5 * rootSize; + var centerX = 0.5 * (minX + maxX), centerY = 0.5 * (minY + maxY); + + // construct the barnesHutTree + var barnesHutTree = { + root:{ + centerOfMass: {x:0, y:0}, + mass:0, + range: { + minX: centerX-halfRootSize,maxX:centerX+halfRootSize, + minY: centerY-halfRootSize,maxY:centerY+halfRootSize + }, + size: rootSize, + calcSize: 1 / rootSize, + children: { data:null}, + maxWidth: 0, + level: 0, + childrenCount: 4 + } + }; + this._splitBranch(barnesHutTree.root); + + // place the nodes one by one recursively + for (i = 0; i < nodeCount; i++) { + node = nodes[nodeIndices[i]]; + if (node.options.mass > 0) { + this._placeInTree(barnesHutTree.root,node); } } + + // make global + this.barnesHutTree = barnesHutTree }; /** - * Since hierarchical layout does not support: - * - smooth curves (based on the physics), - * - clustering (based on dynamic node counts) - * - * We disable both features so there will be no problems. + * this updates the mass of a branch. this is increased by adding a node. * + * @param parentBranch + * @param node * @private */ - exports._changeConstants = function() { - this.constants.clustering.enabled = false; - this.constants.physics.barnesHut.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this._loadSelectedForceSolver(); - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.dynamic = false; - } - this._configureSmoothCurves(); + exports._updateBranchMass = function(parentBranch, node) { + var totalMass = parentBranch.mass + node.options.mass; + var totalMassInv = 1/totalMass; - var config = this.constants.hierarchicalLayout; - config.levelSeparation = Math.abs(config.levelSeparation); - if (config.direction == "RL" || config.direction == "DU") { - config.levelSeparation *= -1; - } + parentBranch.centerOfMass.x = parentBranch.centerOfMass.x * parentBranch.mass + node.x * node.options.mass; + parentBranch.centerOfMass.x *= totalMassInv; + + parentBranch.centerOfMass.y = parentBranch.centerOfMass.y * parentBranch.mass + node.y * node.options.mass; + parentBranch.centerOfMass.y *= totalMassInv; + + parentBranch.mass = totalMass; + var biggestSize = Math.max(Math.max(node.height,node.radius),node.width); + parentBranch.maxWidth = (parentBranch.maxWidth < biggestSize) ? biggestSize : parentBranch.maxWidth; - if (config.direction == "RL" || config.direction == "LR") { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "vertical"; - } - } - else { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "horizontal"; - } - } }; /** - * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes - * on a X position that ensures there will be no overlap. + * determine in which branch the node will be placed. * - * @param edges - * @param parentId - * @param distribution - * @param parentLevel + * @param parentBranch + * @param node + * @param skipMassUpdate * @private */ - exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } + exports._placeInTree = function(parentBranch,node,skipMassUpdate) { + if (skipMassUpdate != true || skipMassUpdate === undefined) { + // update the mass of the branch. + this._updateBranchMass(parentBranch,node); + } - // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. - var nodeMoved = false; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (childNode.xFixed && childNode.level > parentLevel) { - childNode.xFixed = false; - childNode.x = distribution[childNode.level].minPos; - nodeMoved = true; - } + if (parentBranch.children.NW.range.maxX > node.x) { // in NW or SW + if (parentBranch.children.NW.range.maxY > node.y) { // in NW + this._placeInRegion(parentBranch,node,"NW"); } - else { - if (childNode.yFixed && childNode.level > parentLevel) { - childNode.yFixed = false; - childNode.y = distribution[childNode.level].minPos; - nodeMoved = true; - } + else { // in SW + this._placeInRegion(parentBranch,node,"SW"); } - - if (nodeMoved == true) { - distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; - if (childNode.edges.length > 1) { - this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); - } + } + else { // in NE or SE + if (parentBranch.children.NW.range.maxY > node.y) { // in NE + this._placeInRegion(parentBranch,node,"NE"); + } + else { // in SE + this._placeInRegion(parentBranch,node,"SE"); } } }; /** - * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. + * actually place the node in a region (or branch) * - * @param level - * @param edges - * @param parentId + * @param parentBranch + * @param node + * @param region * @private */ - exports._setLevel = function(level, edges, parentId) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } - if (childNode.level == -1 || childNode.level > level) { - childNode.level = level; - if (childNode.edges.length > 1) { - this._setLevel(level+1, childNode.edges, childNode.id); + exports._placeInRegion = function(parentBranch,node,region) { + switch (parentBranch.children[region].childrenCount) { + case 0: // place node here + parentBranch.children[region].children.data = node; + parentBranch.children[region].childrenCount = 1; + this._updateBranchMass(parentBranch.children[region],node); + break; + case 1: // convert into children + // if there are two nodes exactly overlapping (on init, on opening of cluster etc.) + // we move one node a pixel and we do not put it in the tree. + if (parentBranch.children[region].children.data.x == node.x && + parentBranch.children[region].children.data.y == node.y) { + node.x += Math.random(); + node.y += Math.random(); } - } + else { + this._splitBranch(parentBranch.children[region]); + this._placeInTree(parentBranch.children[region],node); + } + break; + case 4: // place in branch + this._placeInTree(parentBranch.children[region],node); + break; } }; /** - * this function is called recursively to enumerate the branched of the first node and give each node a level based on edge direction + * this function splits a branch into 4 sub branches. If the branch contained a node, we place it in the subbranch + * after the split is complete. * - * @param level - * @param edges - * @param parentId + * @param parentBranch * @private */ - exports._setLevelDirected = function(level, edges, parentId) { - this.nodes[parentId].hierarchyEnumerated = true; - var childNode, direction; - for (var i = 0; i < edges.length; i++) { - direction = 1; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - direction = -1; - } - else { - childNode = edges[i].to; - } - if (childNode.level == -1) { - childNode.level = level + direction; - } + exports._splitBranch = function(parentBranch) { + // if the branch is shaded with a node, replace the node in the new subset. + var containedNode = null; + if (parentBranch.childrenCount == 1) { + containedNode = parentBranch.children.data; + parentBranch.mass = 0; parentBranch.centerOfMass.x = 0; parentBranch.centerOfMass.y = 0; } + parentBranch.childrenCount = 4; + parentBranch.children.data = null; + this._insertRegion(parentBranch,"NW"); + this._insertRegion(parentBranch,"NE"); + this._insertRegion(parentBranch,"SW"); + this._insertRegion(parentBranch,"SE"); - for (var i = 0; i < edges.length; i++) { - if (edges[i].toId == parentId) {childNode = edges[i].from;} - else {childNode = edges[i].to;} - - if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { - this._setLevelDirected(childNode.level, childNode.edges, childNode.id); - } + if (containedNode != null) { + this._placeInTree(parentBranch,containedNode); } }; /** - * Unfix nodes + * This function subdivides the region into four new segments. + * Specifically, this inserts a single new segment. + * It fills the children section of the parentBranch * + * @param parentBranch + * @param region + * @param parentRange * @private */ - exports._restoreNodes = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.nodes[nodeId].xFixed = false; - this.nodes[nodeId].yFixed = false; - } + exports._insertRegion = function(parentBranch, region) { + var minX,maxX,minY,maxY; + var childSize = 0.5 * parentBranch.size; + switch (region) { + case "NW": + minX = parentBranch.range.minX; + maxX = parentBranch.range.minX + childSize; + minY = parentBranch.range.minY; + maxY = parentBranch.range.minY + childSize; + break; + case "NE": + minX = parentBranch.range.minX + childSize; + maxX = parentBranch.range.maxX; + minY = parentBranch.range.minY; + maxY = parentBranch.range.minY + childSize; + break; + case "SW": + minX = parentBranch.range.minX; + maxX = parentBranch.range.minX + childSize; + minY = parentBranch.range.minY + childSize; + maxY = parentBranch.range.maxY; + break; + case "SE": + minX = parentBranch.range.minX + childSize; + maxX = parentBranch.range.maxX; + minY = parentBranch.range.minY + childSize; + maxY = parentBranch.range.maxY; + break; } - }; - - -/***/ }, -/* 70 */ -/***/ function(module, exports, __webpack_require__) { - // English - exports['en'] = { - edit: 'Edit', - del: 'Delete selected', - back: 'Back', - addNode: 'Add Node', - addEdge: 'Add Edge', - editNode: 'Edit Node', - editEdge: 'Edit Edge', - addDescription: 'Click in an empty space to place a new node.', - edgeDescription: 'Click on a node and drag the edge to another node to connect them.', - editEdgeDescription: 'Click on the control points and drag them to a node to connect to it.', - createEdgeError: 'Cannot link edges to a cluster.', - deleteClusterError: 'Clusters cannot be deleted.' - }; - exports['en_EN'] = exports['en']; - exports['en_US'] = exports['en']; - // Dutch - exports['nl'] = { - edit: 'Wijzigen', - del: 'Selectie verwijderen', - back: 'Terug', - addNode: 'Node toevoegen', - addEdge: 'Link toevoegen', - editNode: 'Node wijzigen', - editEdge: 'Link wijzigen', - addDescription: 'Klik op een leeg gebied om een nieuwe node te maken.', - edgeDescription: 'Klik op een node en sleep de link naar een andere node om ze te verbinden.', - editEdgeDescription: 'Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.', - createEdgeError: 'Kan geen link maken naar een cluster.', - deleteClusterError: 'Clusters kunnen niet worden verwijderd.' + parentBranch.children[region] = { + centerOfMass:{x:0,y:0}, + mass:0, + range:{minX:minX,maxX:maxX,minY:minY,maxY:maxY}, + size: 0.5 * parentBranch.size, + calcSize: 2 * parentBranch.calcSize, + children: {data:null}, + maxWidth: 0, + level: parentBranch.level+1, + childrenCount: 0 + }; }; - exports['nl_NL'] = exports['nl']; - exports['nl_BE'] = exports['nl']; - -/***/ }, -/* 71 */ -/***/ function(module, exports, __webpack_require__) { /** - * Canvas shapes used by Network + * This function is for debugging purposed, it draws the tree. + * + * @param ctx + * @param color + * @private */ - if (typeof CanvasRenderingContext2D !== 'undefined') { - - /** - * Draw a circle shape - */ - CanvasRenderingContext2D.prototype.circle = function(x, y, r) { - this.beginPath(); - this.arc(x, y, r, 0, 2*Math.PI, false); - }; - - /** - * Draw a square shape - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r size, width and height of the square - */ - CanvasRenderingContext2D.prototype.square = function(x, y, r) { - this.beginPath(); - this.rect(x - r, y - r, r * 2, r * 2); - }; - - /** - * Draw a triangle shape - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius, half the length of the sides of the triangle - */ - CanvasRenderingContext2D.prototype.triangle = function(x, y, r) { - // http://en.wikipedia.org/wiki/Equilateral_triangle - this.beginPath(); - - var s = r * 2; - var s2 = s / 2; - var ir = Math.sqrt(3) / 6 * s; // radius of inner circle - var h = Math.sqrt(s * s - s2 * s2); // height - - this.moveTo(x, y - (h - ir)); - this.lineTo(x + s2, y + ir); - this.lineTo(x - s2, y + ir); - this.lineTo(x, y - (h - ir)); - this.closePath(); - }; - - /** - * Draw a triangle shape in downward orientation - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius - */ - CanvasRenderingContext2D.prototype.triangleDown = function(x, y, r) { - // http://en.wikipedia.org/wiki/Equilateral_triangle - this.beginPath(); - - var s = r * 2; - var s2 = s / 2; - var ir = Math.sqrt(3) / 6 * s; // radius of inner circle - var h = Math.sqrt(s * s - s2 * s2); // height - - this.moveTo(x, y + (h - ir)); - this.lineTo(x + s2, y - ir); - this.lineTo(x - s2, y - ir); - this.lineTo(x, y + (h - ir)); - this.closePath(); - }; - - /** - * Draw a star shape, a star with 5 points - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius, half the length of the sides of the triangle - */ - CanvasRenderingContext2D.prototype.star = function(x, y, r) { - // http://www.html5canvastutorials.com/labs/html5-canvas-star-spinner/ - this.beginPath(); - - for (var n = 0; n < 10; n++) { - var radius = (n % 2 === 0) ? r * 1.3 : r * 0.5; - this.lineTo( - x + radius * Math.sin(n * 2 * Math.PI / 10), - y - radius * Math.cos(n * 2 * Math.PI / 10) - ); - } - - this.closePath(); - }; - - /** - * http://stackoverflow.com/questions/1255512/how-to-draw-a-rounded-rectangle-on-html-canvas - */ - CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) { - var r2d = Math.PI/180; - if( w - ( 2 * r ) < 0 ) { r = ( w / 2 ); } //ensure that the radius isn't too large for x - if( h - ( 2 * r ) < 0 ) { r = ( h / 2 ); } //ensure that the radius isn't too large for y - this.beginPath(); - this.moveTo(x+r,y); - this.lineTo(x+w-r,y); - this.arc(x+w-r,y+r,r,r2d*270,r2d*360,false); - this.lineTo(x+w,y+h-r); - this.arc(x+w-r,y+h-r,r,0,r2d*90,false); - this.lineTo(x+r,y+h); - this.arc(x+r,y+h-r,r,r2d*90,r2d*180,false); - this.lineTo(x,y+r); - this.arc(x+r,y+r,r,r2d*180,r2d*270,false); - }; - - /** - * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - */ - CanvasRenderingContext2D.prototype.ellipse = function(x, y, w, h) { - var kappa = .5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle - - this.beginPath(); - this.moveTo(x, ym); - this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - }; - - - - /** - * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - */ - CanvasRenderingContext2D.prototype.database = function(x, y, w, h) { - var f = 1/3; - var wEllipse = w; - var hEllipse = h * f; + exports._drawTree = function(ctx,color) { + if (this.barnesHutTree !== undefined) { - var kappa = .5522848, - ox = (wEllipse / 2) * kappa, // control point offset horizontal - oy = (hEllipse / 2) * kappa, // control point offset vertical - xe = x + wEllipse, // x-end - ye = y + hEllipse, // y-end - xm = x + wEllipse / 2, // x-middle - ym = y + hEllipse / 2, // y-middle - ymb = y + (h - hEllipse/2), // y-midlle, bottom ellipse - yeb = y + h; // y-end, bottom ellipse + ctx.lineWidth = 1; - this.beginPath(); - this.moveTo(xe, ym); + this._drawBranch(this.barnesHutTree.root,ctx,color); + } + }; - this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + /** + * This function is for debugging purposes. It draws the branches recursively. + * + * @param branch + * @param ctx + * @param color + * @private + */ + exports._drawBranch = function(branch,ctx,color) { + if (color === undefined) { + color = "#FF0000"; + } - this.lineTo(xe, ymb); + if (branch.childrenCount == 4) { + this._drawBranch(branch.children.NW,ctx); + this._drawBranch(branch.children.NE,ctx); + this._drawBranch(branch.children.SE,ctx); + this._drawBranch(branch.children.SW,ctx); + } + ctx.strokeStyle = color; + ctx.beginPath(); + ctx.moveTo(branch.range.minX,branch.range.minY); + ctx.lineTo(branch.range.maxX,branch.range.minY); + ctx.stroke(); - this.bezierCurveTo(xe, ymb + oy, xm + ox, yeb, xm, yeb); - this.bezierCurveTo(xm - ox, yeb, x, ymb + oy, x, ymb); + ctx.beginPath(); + ctx.moveTo(branch.range.maxX,branch.range.minY); + ctx.lineTo(branch.range.maxX,branch.range.maxY); + ctx.stroke(); - this.lineTo(x, ym); - }; + ctx.beginPath(); + ctx.moveTo(branch.range.maxX,branch.range.maxY); + ctx.lineTo(branch.range.minX,branch.range.maxY); + ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(branch.range.minX,branch.range.maxY); + ctx.lineTo(branch.range.minX,branch.range.minY); + ctx.stroke(); - /** - * Draw an arrow point (no line) + /* + if (branch.mass > 0) { + ctx.circle(branch.centerOfMass.x, branch.centerOfMass.y, 3*branch.mass); + ctx.stroke(); + } */ - CanvasRenderingContext2D.prototype.arrow = function(x, y, angle, length) { - // tail - var xt = x - length * Math.cos(angle); - var yt = y - length * Math.sin(angle); - - // inner tail - // TODO: allow to customize different shapes - var xi = x - length * 0.9 * Math.cos(angle); - var yi = y - length * 0.9 * Math.sin(angle); - - // left - var xl = xt + length / 3 * Math.cos(angle + 0.5 * Math.PI); - var yl = yt + length / 3 * Math.sin(angle + 0.5 * Math.PI); - - // right - var xr = xt + length / 3 * Math.cos(angle - 0.5 * Math.PI); - var yr = yt + length / 3 * Math.sin(angle - 0.5 * Math.PI); + }; - this.beginPath(); - this.moveTo(x, y); - this.lineTo(xl, yl); - this.lineTo(xi, yi); - this.lineTo(xr, yr); - this.closePath(); - }; - /** - * Sets up the dashedLine functionality for drawing - * Original code came from http://stackoverflow.com/questions/4576724/dotted-stroke-in-canvas - * @author David Jordan - * @date 2012-08-08 - */ - CanvasRenderingContext2D.prototype.dashedLine = function(x,y,x2,y2,dashArray){ - if (!dashArray) dashArray=[10,5]; - if (dashLength==0) dashLength = 0.001; // Hack for Safari - var dashCount = dashArray.length; - this.moveTo(x, y); - var dx = (x2-x), dy = (y2-y); - var slope = dy/dx; - var distRemaining = Math.sqrt( dx*dx + dy*dy ); - var dashIndex=0, draw=true; - while (distRemaining>=0.1){ - var dashLength = dashArray[dashIndex++%dashCount]; - if (dashLength > distRemaining) dashLength = distRemaining; - var xStep = Math.sqrt( dashLength*dashLength / (1 + slope*slope) ); - if (dx<0) xStep = -xStep; - x += xStep; - y += slope*xStep; - this[draw ? 'lineTo' : 'moveTo'](x,y); - distRemaining -= dashLength; - draw = !draw; - } - }; +/***/ }, +/* 71 */ +/***/ function(module, exports, __webpack_require__) { - // TODO: add diamond shape + module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + module.children = []; + module.webpackPolyfill = 1; + } + return module; } diff --git a/dist/vis.map b/dist/vis.map index 53593247..7661731d 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","existing","_new","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","changedData","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","boundFunction","edgeBeingEdited","selectedControlNode","_createAddNodeToolbar","_createAddEdgeToolbar","_editNode","_createEditEdgeToolbar","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis.min.css b/dist/vis.min.css index ce5ab00d..5b953651 100644 --- a/dist/vis.min.css +++ b/dist/vis.min.css @@ -1 +1 @@ -.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}.vis.timeline.root{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right,.vis.timeline .vispanel.top{border:1px #bfbfbf}.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.top{border-left-style:solid;border-right-style:solid}.vis.timeline .background{overflow:hidden}.vis.timeline .vispanel>.content{position:relative}.vis.timeline .vispanel .shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis.timeline .vispanel .shadow.top{top:-1px;left:0}.vis.timeline .vispanel .shadow.bottom{bottom:-1px;left:0}.vis.timeline .labelset{position:relative;overflow:hidden;box-sizing:border-box}.vis.timeline .labelset .vlabel{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .labelset .vlabel:last-child{border-bottom:none}.vis.timeline .labelset .vlabel .inner{display:inline-block;padding:5px}.vis.timeline .labelset .vlabel .inner.hidden{padding:0}.vis.timeline .itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis.timeline .itemset .background,.vis.timeline .itemset .foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis.timeline .axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis.timeline .foreground .group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .foreground .group:last-child{border-bottom:none}.vis.timeline .item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block;padding:5px}.vis.timeline .item.selected{border-color:#FFC200;background-color:#FFF785;z-index:2}.vis.timeline .editable .item.selected{cursor:move}.vis.timeline .item.point.selected{background-color:#FFF785}.vis.timeline .item.box{text-align:center;border-style:solid;border-radius:2px}.vis.timeline .item.point{background:0 0}.vis.timeline .item.dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis.timeline .item.range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis.timeline .item.background{overflow:hidden;border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis.timeline .item.range .content{position:relative;display:inline-block;max-width:100%;overflow:hidden}.vis.timeline .item.background .content{position:absolute;display:inline-block;overflow:hidden;max-width:100%;margin:5px}.vis.timeline .item.line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis.timeline .item .content{white-space:nowrap;overflow:hidden}.vis.timeline .item .delete{background:url(img/timeline/delete.png) top center no-repeat;position:absolute;width:24px;height:24px;top:0;right:-24px;cursor:pointer}.vis.timeline .item.range .drag-left{position:absolute;width:24px;height:100%;top:0;left:-4px;cursor:w-resize}.vis.timeline .item.range .drag-right{position:absolute;width:24px;height:100%;top:0;right:-4px;cursor:e-resize}.vis.timeline .timeaxis{position:relative;overflow:hidden}.vis.timeline .timeaxis.foreground{top:0;left:0;width:100%}.vis.timeline .timeaxis.background{position:absolute;top:0;left:0;width:100%;height:100%}.vis.timeline .timeaxis .text{position:absolute;color:#4d4d4d;padding:3px;white-space:nowrap}.vis.timeline .timeaxis .text.measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis.timeline .timeaxis .grid.vertical{position:absolute;border-left:1px solid}.vis.timeline .timeaxis .grid.minor{border-color:#e5e5e5}.vis.timeline .timeaxis .grid.major{border-color:#bfbfbf}.vis.timeline .currenttime{background-color:#FF7F6E;width:2px;z-index:1}.vis.timeline .customtime{background-color:#6E94FF;width:2px;cursor:move;z-index:1}.vis.timeline .vispanel.background.horizontal .grid.horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis.timeline .vispanel.background.horizontal .grid.minor{border-color:#e5e5e5}.vis.timeline .vispanel.background.horizontal .grid.major{border-color:#bfbfbf}.vis.timeline .dataaxis .yAxis.major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis.timeline .dataaxis .yAxis.major.measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis.timeline .dataaxis .yAxis.minor.measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis.timeline .dataaxis .yAxis.title.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.title.left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis.timeline .dataaxis .yAxis.title.right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis.timeline .legend{background-color:rgba(247,252,255,.65);padding:5px;border-color:#b3b3b3;border-style:solid;border-width:1px;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis.timeline .legendText{white-space:nowrap;display:inline-block}.vis.timeline .graphGroup0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis.timeline .graphGroup1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis.timeline .graphGroup2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis.timeline .graphGroup3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis.timeline .graphGroup4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis.timeline .graphGroup5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis.timeline .graphGroup6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis.timeline .graphGroup7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis.timeline .graphGroup8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis.timeline .graphGroup9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis.timeline .fill{fill-opacity:.1;stroke:none}.vis.timeline .bar{fill-opacity:.5;stroke-width:1px}.vis.timeline .point{stroke-width:2px;fill-opacity:1}.vis.timeline .legendBackground{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis.timeline .outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis.timeline .iconFill{fill-opacity:.3;stroke:none}div.network-manipulationDiv{border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0);position:absolute;left:0;top:0;width:100%;height:30px}div.network-manipulation-editMode{position:absolute;left:0;top:15px;height:30px}div.network-manipulation-closeDiv{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-manipulation-closeDiv:hover{opacity:.6}div.network-manipulationUI{position:relative;top:-7px;font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin:0 0 0 10px;vertical-align:middle;cursor:pointer;padding:0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-manipulationUI:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}div.network-manipulationUI:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}div.network-manipulationUI.back{background-image:url(img/network/backIcon.png)}div.network-manipulationUI.none:hover{box-shadow:1px 1px 8px transparent;cursor:default}div.network-manipulationUI.none:active{box-shadow:1px 1px 8px transparent}div.network-manipulationUI.none{padding:0}div.network-manipulationUI.notification{margin:2px;font-weight:700}div.network-manipulationUI.add{background-image:url(img/network/addNodeIcon.png)}div.network-manipulationUI.edit{background-image:url(img/network/editIcon.png)}div.network-manipulationUI.edit.editmode{background-color:#fcfcfc;border-style:solid;border-width:1px;border-color:#ccc}div.network-manipulationUI.connect{background-image:url(img/network/connectIcon.png)}div.network-manipulationUI.delete{background-image:url(img/network/deleteIcon.png)}div.network-manipulationLabel{margin:0 0 0 23px;line-height:25px}div.network-seperatorLine{display:inline-block;width:1px;height:20px;background-color:#bdbdbd;margin:5px 7px 0 15px}div.network-navigation_wrapper{position:absolute;left:0;top:0;width:100%;height:100%}div.network-navigation{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-navigation:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.network-navigation:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.network-navigation.up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.network-navigation.down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.network-navigation.left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.network-navigation.right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.network-navigation.zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.network-navigation.zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.network-navigation.zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px}div.network-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid;box-shadow:3px 3px 10px rgba(128,128,128,.5)} \ No newline at end of file +div.network-manipulation-closeDiv,div.network-manipulationUI,div.network-navigation{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;-khtml-user-select:none}div.network-manipulation-closeDiv,div.network-manipulationUI{background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none}.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}.vis.timeline.root{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right,.vis.timeline .vispanel.top{border:1px #bfbfbf}.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.top{border-left-style:solid;border-right-style:solid}.vis.timeline .background{overflow:hidden}.vis.timeline .vispanel>.content{position:relative}.vis.timeline .vispanel .shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis.timeline .vispanel .shadow.top{top:-1px;left:0}.vis.timeline .vispanel .shadow.bottom{bottom:-1px;left:0}.vis.timeline .labelset{position:relative;overflow:hidden;box-sizing:border-box}.vis.timeline .labelset .vlabel{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .labelset .vlabel:last-child{border-bottom:none}.vis.timeline .labelset .vlabel .inner{display:inline-block;padding:5px}.vis.timeline .labelset .vlabel .inner.hidden{padding:0}.vis.timeline .itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis.timeline .itemset .background,.vis.timeline .itemset .foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis.timeline .axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis.timeline .foreground .group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .foreground .group:last-child{border-bottom:none}.vis.timeline .item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block;padding:5px}.vis.timeline .item.selected{border-color:#FFC200;background-color:#FFF785;z-index:2}.vis.timeline .editable .item.selected{cursor:move}.vis.timeline .item.point.selected{background-color:#FFF785}.vis.timeline .item.box{text-align:center;border-style:solid;border-radius:2px}.vis.timeline .item.point{background:0 0}.vis.timeline .item.dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis.timeline .item.range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis.timeline .item.background{overflow:hidden;border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis.timeline .item.range .content{position:relative;display:inline-block;max-width:100%;overflow:hidden}.vis.timeline .item.background .content{position:absolute;display:inline-block;overflow:hidden;max-width:100%;margin:5px}.vis.timeline .item.line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis.timeline .item .content{white-space:nowrap;overflow:hidden}.vis.timeline .item .delete{background:url(img/timeline/delete.png)top center no-repeat;position:absolute;width:24px;height:24px;top:0;right:-24px;cursor:pointer}.vis.timeline .item.range .drag-left{position:absolute;width:24px;max-width:20%;height:100%;top:0;left:-4px;cursor:w-resize}.vis.timeline .item.range .drag-right{position:absolute;width:24px;max-width:20%;height:100%;top:0;right:-4px;cursor:e-resize}.vis.timeline .timeaxis{position:relative;overflow:hidden}.vis.timeline .timeaxis.foreground{top:0;left:0;width:100%}.vis.timeline .timeaxis.background{position:absolute;top:0;left:0;width:100%;height:100%}.vis.timeline .timeaxis .text{position:absolute;color:#4d4d4d;padding:3px;white-space:nowrap}.vis.timeline .timeaxis .text.measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis.timeline .timeaxis .grid.vertical{position:absolute;border-left:1px solid}.vis.timeline .timeaxis .grid.minor{border-color:#e5e5e5}.vis.timeline .timeaxis .grid.major{border-color:#bfbfbf}.vis.timeline .currenttime{background-color:#FF7F6E;width:2px;z-index:1}.vis.timeline .customtime{background-color:#6E94FF;width:2px;cursor:move;z-index:1}.vis.timeline .vispanel.background.horizontal .grid.horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis.timeline .vispanel.background.horizontal .grid.minor{border-color:#e5e5e5}.vis.timeline .vispanel.background.horizontal .grid.major{border-color:#bfbfbf}.vis.timeline .dataaxis .yAxis.major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis.timeline .dataaxis .yAxis.major.measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis.timeline .dataaxis .yAxis.minor.measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis.timeline .dataaxis .yAxis.title.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.title.left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis.timeline .dataaxis .yAxis.title.right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis.timeline .legend{background-color:rgba(247,252,255,.65);padding:5px;border-color:#b3b3b3;border-style:solid;border-width:1px;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis.timeline .legendText{white-space:nowrap;display:inline-block}.vis.timeline .graphGroup0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis.timeline .graphGroup1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis.timeline .graphGroup2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis.timeline .graphGroup3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis.timeline .graphGroup4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis.timeline .graphGroup5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis.timeline .graphGroup6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis.timeline .graphGroup7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis.timeline .graphGroup8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis.timeline .graphGroup9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis.timeline .fill{fill-opacity:.1;stroke:none}.vis.timeline .bar{fill-opacity:.5;stroke-width:1px}.vis.timeline .point{stroke-width:2px;fill-opacity:1}.vis.timeline .legendBackground{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis.timeline .outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis.timeline .iconFill{fill-opacity:.3;stroke:none}div.network-manipulationDiv{border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0);position:absolute;left:0;top:0;width:100%;height:30px}div.network-manipulation-editMode{position:absolute;left:0;top:15px;height:30px}div.network-manipulation-closeDiv{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-image:url(img/network/cross.png);user-select:none}div.network-manipulation-closeDiv:hover{opacity:.6}div.network-manipulationUI{position:relative;top:-7px;font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;height:24px;margin:0 0 0 10px;vertical-align:middle;padding:0 8px;user-select:none}div.network-manipulationUI:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}div.network-manipulationUI:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}div.network-manipulationUI.back{background-image:url(img/network/backIcon.png)}div.network-manipulationUI.none:hover{box-shadow:1px 1px 8px transparent;cursor:default}div.network-manipulationUI.none:active{box-shadow:1px 1px 8px transparent}div.network-manipulationUI.none{padding:0}div.network-manipulationUI.notification{margin:2px;font-weight:700}div.network-manipulationUI.add{background-image:url(img/network/addNodeIcon.png)}div.network-manipulationUI.edit{background-image:url(img/network/editIcon.png)}div.network-manipulationUI.edit.editmode{background-color:#fcfcfc;border-style:solid;border-width:1px;border-color:#ccc}div.network-manipulationUI.connect{background-image:url(img/network/connectIcon.png)}div.network-manipulationUI.delete{background-image:url(img/network/deleteIcon.png)}div.network-manipulationLabel{margin:0 0 0 23px;line-height:25px}div.network-seperatorLine{display:inline-block;width:1px;height:20px;background-color:#bdbdbd;margin:5px 7px 0 15px}div.network-navigation_wrapper{position:absolute;left:0;top:0;width:100%;height:100%}div.network-navigation{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;user-select:none}div.network-navigation:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.network-navigation:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.network-navigation.up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.network-navigation.down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.network-navigation.left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.network-navigation.right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.network-navigation.zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.network-navigation.zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.network-navigation.zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px}div.network-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid;box-shadow:3px 3px 10px rgba(128,128,128,.5)} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index b50cc19c..2f3c79b2 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.10.1-SNAPSHOT - * @date 2015-02-24 + * @date 2015-03-02 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -22,18 +22,18 @@ * * Vis.js may be distributed under either license. */ -"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(39),Groups:i(37),Images:i(38),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(45)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(43),e.hammer=i(44)},function(t,e,i){var s=i(43);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,d.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?l.push(n):(this._ids[n]=!0,d.push(n)):this._ids[n]&&(delete this._ids[n],c.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],c.push(n))}this.length+=d.length-c.length,d.length&&this._trigger("add",{items:d},i),l.length&&this._trigger("update",{items:l},i),c.length&&this._trigger("remove",{items:c},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var M=this.yLabel;M.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(M,o.x,o.y));var S=this.zLabel;S.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(S,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+M.x/S/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[]; -var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(44),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(44),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(43);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(43),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(43),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step); -break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(44),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?o>0?Math.max(-s,0):-e:0>s?Math.min(-s,o-s-e-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(43),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(44),n=i(1),r=i(25),a=i(43),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n) -}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(44),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l=this.body.util.getScale(),c=this.body.util.getStep(),p={start:i?i(d,l,c):d,content:"new item"};if("range"===this.options.type){var u=this.body.util.toTime(h+this.props.width/5);p.end=i?i(u,l,c):u}p[this.itemsData._fieldId]=n.randomUUID();var m=this.groupFromTarget(t);m&&(p.group=m.groupId),this.options.onAdd(p,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"]; -e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture.center.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers={existing:[],_new:[]},this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items,e.data),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(44),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(45),u=i(37),m=i(38),f=i(40),g=i(39),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486; -var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t,e){for(var i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;o0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i){if(!e)throw"No network provided";var s=["edges","physics"],n=o.selectiveBridgeObject(s,i);this.options=n.edges,this.physics=n.physics,this.options.smoothCurves=i.smoothCurves,this.network=e,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.title=void 0,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.value=void 0,this.selected=!1,this.hover=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.dirtyLabel=!0,this.colorDirty=!0,this.from=null,this.to=null,this.via=null,this.fromBackup=null,this.toBackup=null,this.originalFromId=[],this.originalToId=[],this.connected=!1,this.widthFixed=!1,this.lengthFixed=!1,this.setProperties(t),this.controlNodesEnabled=!1,this.controlNodes={from:null,to:null,positions:{}},this.connectedNode=null}var o=i(1),n=i(40);s.prototype.setProperties=function(t){if(this.colorDirty=!0,t){var e=["style","fontSize","fontFace","fontColor","fontFill","fontStrokeWidth","fontStrokeColor","width","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","inheritColor","labelAlignment","opacity","customScalingFunction","useGradients"];switch(o.selectiveDeepExtend(e,this.options,t),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.dirtyLabel=!0),void 0!==t.title&&(this.title=t.title),void 0!==t.value&&(this.value=t.value),void 0!==t.length&&(this.physics.springLength=t.length),void 0!==t.color&&(this.options.inheritColor=!1,o.isString(t.color)?(this.options.color.color=t.color,this.options.color.highlight=t.color):(void 0!==t.color.color&&(this.options.color.color=t.color.color),void 0!==t.color.highlight&&(this.options.color.highlight=t.color.highlight),void 0!==t.color.hover&&(this.options.color.hover=t.color.hover))),this.connect(),this.widthFixed=this.widthFixed||void 0!==t.width,this.lengthFixed=this.lengthFixed||void 0!==t.length,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.options.style){case"line":this.draw=this._drawLine;break;case"arrow":this.draw=this._drawArrow;break;case"arrow-center":this.draw=this._drawArrowCenter;break;case"dash-line":this.draw=this._drawDashLine;break;default:this.draw=this._drawLine}}},s.prototype.connect=function(){this.disconnect(),this.from=this.network.nodes[this.fromId]||null,this.to=this.network.nodes[this.toId]||null,this.connected=this.from&&this.to,this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this))},s.prototype.disconnect=function(){this.from&&(this.from.detachEdge(this),this.from=null),this.to&&(this.to.detachEdge(this),this.to=null),this.connected=!1},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.getValue=function(){return this.value},s.prototype.setValueRange=function(t,e,i){if(!this.widthFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.widthMax-this.options.widthMin;this.options.width=this.options.widthMin+s*o,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier}},s.prototype.draw=function(){throw"Method draw not initialized in edge"},s.prototype.isOverlappingWith=function(t){if(this.connected){var e=10,i=this.from.x,s=this.from.y,o=this.to.x,n=this.to.y,r=t.left,a=t.top,h=this._getDistanceToEdge(i,s,o,n,r,a);return e>h}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset() -},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=D.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=D.DELIMITER);var i=E+n();if(C[i])return N=D.DELIMITER,k=i,o(),void o();if(C[E])return N=D.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=D.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=D.IDENTIFIER)}for(N=D.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==D.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=D.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=D.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==D.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=D.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=D.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=D.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function M(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function S(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),M(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var D={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=D.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=S},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(58)},function(t,e,i){t.exports="undefined"!=typeof window?window.Hammer||i(59):function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new d(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof d&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){h.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),d=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,d+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",M=t.length,S=0;M-1>S;S++)s=0==S?t[0]:t[S-1],o=t[S],n=t[S+1],r=M>S+2?t[S+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Di===!1&&(Di=!0,Ce.updateOffset(this),Di=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[Be])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[Be]<0||t._a[Be]>999?Be:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e) -}function B(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function H(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!He[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return He[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Be]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[Be]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Mi={},Si=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Di=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[Be])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=S(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,He[t]||(He[t]=new g),He[t].set(e),Ce.locale(t),He[t]):(delete He[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Si.length-1;Oe>=0;--Oe)I(Si[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:D(1,"add"),subtract:D(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Me(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Me(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Se(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),De(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){S.register(t)}),w.onTouch(a.DOCUMENT,v,S.detect),w.onTouch(a.DOCUMENT,y,S.detect),a.READY=!0)}var a=function D(t,e){return new D.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY) -}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(S,d),a&&(d.changedLength=h,d.eventType=a,s.call(S,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(S,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return M.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||M.matchType(u,s)?o=u:M.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return S.stopDetect()}}}},M=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},S=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?S.startDetect(i,t):t.eventType==_&&S.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=S.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=S.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=S.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=S.current,h=S.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing"); -var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(39);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulationEnabled=!1},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.existing.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.edges.connectionEdge;i.to.x=this._XconvertDOMtoCanvas(e.x),i.to.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(44));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var M=this.yLabel;M.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(M,o.x,o.y));var D=this.zLabel;D.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(D,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+M.x/D/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[]; +var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step); +break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?o>0?Math.max(-s,0):-e:0>s?Math.min(-s,o-s-e-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n) +}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l=this.body.util.getScale(),c=this.body.util.getStep(),p={start:i?i(d,l,c):d,content:"new item"};if("range"===this.options.type){var u=this.body.util.toTime(h+this.props.width/5);p.end=i?i(u,l,c):u}p[this.itemsData._fieldId]=n.randomUUID();var m=this.groupFromTarget(t);m&&(p.group=m.groupId),this.options.onAdd(p,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start) +}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture.center.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486; +var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset() +},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=S.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=S.DELIMITER);var i=E+n();if(C[i])return N=S.DELIMITER,k=i,o(),void o();if(C[E])return N=S.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=S.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=S.IDENTIFIER)}for(N=S.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==S.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=S.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=S.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==S.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=S.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=S.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=S.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function M(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),M(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var S={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=S.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new d(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof d&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){h.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),d=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,d+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",M=t.length,D=0;M-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=M>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Si===!1&&(Si=!0,Ce.updateOffset(this),Si=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e) +}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Mi={},Di=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Si=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=D(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Di.length-1;Oe>=0;--Oe)I(Di[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Me(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Me(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&De(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function S(t,e){return new S.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY) +}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return M.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||M.matchType(u,s)?o=u:M.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},M=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing"); +var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/lib/timeline/component/css/item.css b/lib/timeline/component/css/item.css index bdc67340..0655edb6 100644 --- a/lib/timeline/component/css/item.css +++ b/lib/timeline/component/css/item.css @@ -99,6 +99,7 @@ .vis.timeline .item.range .drag-left { position: absolute; width: 24px; + max-width: 20%; height: 100%; top: 0; left: -4px; @@ -109,6 +110,7 @@ .vis.timeline .item.range .drag-right { position: absolute; width: 24px; + max-width: 20%; height: 100%; top: 0; right: -4px; From eb5afcfc6a9d95fec38ce0ad5e019ae4f0a137ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=CC=8Ans=20Beckman?= Date: Mon, 2 Mar 2015 21:00:50 +0100 Subject: [PATCH 05/43] Added possibility to rename fields on a DataSet.get() Added functionality to extend the fields array, to a fields object, similar to the type declaration. This makes it possible rename properies when you get them. --- lib/DataSet.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/DataSet.js b/lib/DataSet.js index ccb2c2d6..9aa0238e 100644 --- a/lib/DataSet.js +++ b/lib/DataSet.js @@ -664,8 +664,14 @@ DataSet.prototype._filterFields = function (item, fields) { var filteredItem = {}; for (var field in item) { - if (item.hasOwnProperty(field) && (fields.indexOf(field) != -1)) { - filteredItem[field] = item[field]; + if(Array.isArray(fields)){ + if (item.hasOwnProperty(field) && (fields.indexOf(field) != -1)) { + filteredItem[field] = item[field]; + } + }else{ + if (item.hasOwnProperty(field) && fields.hasOwnProperty(field)) { + filteredItem[fields[field]] = item[field]; + } } } From f29176bcacded741070b27966b95152b3f751c33 Mon Sep 17 00:00:00 2001 From: jos Date: Tue, 3 Mar 2015 12:04:35 +0100 Subject: [PATCH 06/43] Fixed #665, fixed #149: Implemented orientation option `'both'`, displaying a time axis both on top and bottom. --- HISTORY.md | 2 ++ dist/vis.js | 28 ++++++++++++++++++++++++++-- dist/vis.map | 2 +- dist/vis.min.js | 12 ++++++------ docs/graph2d.html | 2 +- docs/timeline.html | 2 +- lib/timeline/Core.js | 23 +++++++++++++++++++++++ lib/timeline/Timeline.js | 3 ++- test/timeline.html | 1 + 9 files changed, 63 insertions(+), 12 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 10b9a741..7ccfd7d0 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -18,6 +18,8 @@ http://visjs.org ### Timeline +- Implemented orientation option `'both'`, displaying a time axis both on top + and bottom (#665). - Fixed not property initializing with a DataView for groups. - Merged add custom timebar functionality, thanks @aytech! - Fixed #664: end of item not restored when canceling a move event. diff --git a/dist/vis.js b/dist/vis.js index ebd22067..2b232976 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.10.1-SNAPSHOT - * @date 2015-03-02 + * @date 2015-03-03 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -6504,7 +6504,7 @@ return /******/ (function(modules) { // webpackBootstrap autoResize: true, - orientation: 'bottom', + orientation: 'bottom', // 'bottom', 'top', or 'both' width: null, height: null, maxHeight: null, @@ -6549,6 +6549,7 @@ return /******/ (function(modules) { // webpackBootstrap // time axis this.timeAxis = new TimeAxis(this.body); + this.timeAxis2 = null; // used in case of orientation option 'both' this.components.push(this.timeAxis); // current time bar @@ -22503,6 +22504,7 @@ return /******/ (function(modules) { // webpackBootstrap var DataView = __webpack_require__(4); var Range = __webpack_require__(17); var ItemSet = __webpack_require__(32); + var TimeAxis = __webpack_require__(35); var Activator = __webpack_require__(53); var DateUtil = __webpack_require__(15); var CustomTime = __webpack_require__(27); @@ -22690,6 +22692,28 @@ return /******/ (function(modules) { // webpackBootstrap var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'orientation', 'clickToUse', 'dataAttributes', 'hiddenDates']; util.selectiveExtend(fields, this.options, options); + if (this.options.orientation === 'both') { + if (!this.timeAxis2) { + var timeAxis2 = this.timeAxis2 = new TimeAxis(this.body); + timeAxis2.setOptions = function (options) { + var _options = options ? util.extend({}, options) : {}; + _options.orientation = 'top'; // override the orientation option, always top + TimeAxis.prototype.setOptions.call(timeAxis2, _options); + }; + this.components.push(timeAxis2); + } + } + else { + if (this.timeAxis2) { + var index = this.components.indexOf(this.timeAxis2); + if (index !== -1) { + this.components.splice(index, 1); + } + this.timeAxis2.destroy(); + this.timeAxis2 = null; + } + } + if ('hiddenDates' in this.options) { DateUtil.convertHiddenOptions(this.body, this.options.hiddenDates); } diff --git a/dist/vis.map b/dist/vis.map index 7661731d..5f0c0c22 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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QF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAO3IrJ,EAAO0Q,UAAUsD,MAAQ,WACvBrX,KAAK40B,UACL50B,KAAK40B,OAAO5uB,OAAS,WAEnB,GAAIH,GAAI,CACR,KAAM,GAAInF,KAAKV,MACTA,KAAKmG,eAAezF,IACtBmF,GAGJ,OAAOA,KAWXxC,EAAO0Q,UAAU+B,IAAM,SAAUo0C,GAC/B,GAAI33C,GAAQvS,KAAK40B,OAAOs1B,EACxB,IAAarjD,QAAT0L,EACF,GAAIvS,KAAKojD,oBAAqB,GAASpjD,KAAK49D,YAAY53D,OAAS,EAAG,CAElE,GAAI0C,GAAQ1I,KAAK69D,WAAa79D,KAAK49D,YAAY53D,MAC/ChG,MAAK69D,aACLtrD,KACAA,EAAMnH,MAAQpL,KAAK40B,OAAO50B,KAAK49D,YAAYl1D,IAC3C1I,KAAK40B,OAAOs1B,GAAa33C,MAEtB,CAEH,GAAI7J,GAAQ1I,KAAK29D,aAAet6D,EAAOy6D,QAAQ93D,MAC/ChG,MAAK29D,eACLprD,KACAA,EAAMnH,MAAQ/H,EAAOy6D,QAAQp1D,GAC7B1I,KAAK40B,OAAOs1B,GAAa33C,EAI7B,MAAOA,IAUTlP,EAAO0Q,UAAUF,IAAM,SAAUkqD,EAAWxwD,GAG1C,MAFAvN,MAAK40B,OAAOmpC,GAAaxwD,EACzBvN,KAAK49D,YAAYr1D,KAAKw1D,GACfxwD,GAGT1N,EAAOD,QAAUyD,GAKb,SAASxD,GAMb,QAASyD,KACPtD,KAAKukD,UACLvkD,KAAKg+D,eACLh+D,KAAK6I,SAAWhC,OAQlBvD,EAAOyQ,UAAUywC,kBAAoB,SAAS37C,GAC5C7I,KAAK6I,SAAWA,GASlBvF,EAAOyQ,UAAUkqD,KAAO,SAASC,EAAKC,GACpC,GAAIC,GAAMp+D,KAAKukD,OAAO2Z,EACtB,IAAYr3D,SAARu3D,EAAmB,CAErB,GAAIrpD,GAAK/U,IACTo+D,GAAM,GAAIC,OACVD,EAAIE,OAAS,WAEO,GAAdt+D,KAAKmT,QACPtB,SAASujB,KAAKrjB,YAAY/R,MAC1BA,KAAKmT,MAAQnT,KAAK6wB,YAClB7wB,KAAKoT,OAASpT,KAAK+wB,aACnBlf,SAASujB,KAAK3jB,YAAYzR,OAGxB+U,EAAGlM,WACLkM,EAAGwvC,OAAO2Z,GAAOE,EACjBrpD,EAAGlM,SAAS7I,QAIhBo+D,EAAIG,QAAU,WACM13D,SAAds3D,GACF3kC,QAAQglC,MAAM,wBAAyBN,SAChCl+D,MAAKunD,IACRxyC,EAAGlM,UACLkM,EAAGlM,SAAS7I,OAIV+U,EAAGipD,YAAYE,MAAS,EACtBl+D,KAAKunD,KAAO4W,GACd3kC,QAAQglC,MAAM,8BAA+BL,SACtCn+D,MAAKunD,IACRxyC,EAAGlM,UACLkM,EAAGlM,SAAS7I,QAIdw5B,QAAQglC,MAAM,wBAAyBN,GACvCl+D,KAAKunD,IAAM4W,IAIb3kC,QAAQglC,MAAM,wBAAyBN,GACvCl+D,KAAKunD,IAAM4W,EACXppD,EAAGipD,YAAYE,IAAO,IAK5BE,EAAI7W,IAAM2W,EAGZ,MAAOE,IAGTv+D,EAAOD,QAAU0D,GAKb,SAASzD,EAAQD,EAASM,GA6B9B,QAASqD,GAAK2tD,EAAYuN,EAAWC,EAAW9H,GAC9C,GAAIvT,GAAY1iD,EAAK4N,uBAAuB,SAASqoD,EACrD52D,MAAK+O,QAAUs0C,EAAUnF,MAEzBl+C,KAAKylC,UAAW,EAChBzlC,KAAK6M,OAAQ,EAEb7M,KAAKq/C,SACLr/C,KAAK4xD,gBACL5xD,KAAK2+D,iBAGL3+D,KAAKK,GAAKwG,OACV7G,KAAKm1D,gBAAiB,EACtBn1D,KAAKo1D,gBAAiB,EACtBp1D,KAAKqtD,QAAS,EACdrtD,KAAKstD,QAAS,EACdttD,KAAK4+D,qBAAsB,EAC3B5+D,KAAK6+D,kBAAsB,EAC3B7+D,KAAK8+D,gBAAkBlI,EAAiB1Y,MAAM/xB,OAC9CnsB,KAAK++D,aAAc,EACnB/+D,KAAKm/C,MAAQ,GACbn/C,KAAKg/D,kBAAmB,EACxBh/D,KAAKi/D,qBAAsB,EAC3Bj/D,KAAK82D,iBAAmB7uD,IAAI,EAAGJ,KAAK,EAAGsL,MAAM,EAAGC,OAAO,EAAG2jD,MAAM,GAChE/2D,KAAK+nD,aAAe9/C,IAAI,EAAGJ,KAAK,EAAGqgB,MAAM,EAAG/D,OAAO,GAEnDnkB,KAAKy+D,UAAYA,EACjBz+D,KAAK0+D,UAAYA,EAGjB1+D,KAAKk/D,GAAK,EACVl/D,KAAKm/D,GAAK,EACVn/D,KAAKo/D,GAAK,EACVp/D,KAAKq/D,GAAK,EACVr/D,KAAKqS,EAAI,KACTrS,KAAKsS,EAAI,KACTtS,KAAKsoD,oBAAqB,EAG1BtoD,KAAKs/D,eAAiBF,GAAG,EAAEC,GAAG,EAAEhtD,EAAE,EAAEC,EAAE,GAEtCtS,KAAKugD,QAAUqW,EAAiB5W,QAAQO,QACxCvgD,KAAKizD,WAAa5gD,EAAE,KAAKC,EAAE,MAE3BtS,KAAKixD,cAAcC,EAAY7N,GAG/BrjD,KAAKu/D,eACLv/D,KAAKw/D,eAAiB,EACtBx/D,KAAKy/D,uBAA0B7I,EAAiBjW,WAAWa,YAAYruC,MACvEnT,KAAK0/D,wBAA0B9I,EAAiBjW,WAAWa,YAAYpuC,OACvEpT,KAAK2/D,wBAA0B/I,EAAiBjW,WAAWa,YAAYr1B,OACvEnsB,KAAKyhD,sBAA0BmV,EAAiBjW,WAAWc,sBAC3DzhD,KAAK4/D,gBAAkB,EAGvB5/D,KAAKy5D,gBAAkB,EACvBz5D,KAAK6/D,aAAe,EACpB7/D,KAAK2lD,eAAiBtzC,EAAK,KAAMC,EAAK,MACtCtS,KAAK4lD,mBAAqBvzC,EAAM,IAAKC,EAAM,KAC3CtS,KAAK40D,aAAe,KAxFtB,GAAIj0D,GAAOT,EAAoB,EA+F/BqD,GAAKwQ,UAAU4/C,eAAiB,WAC9B3zD,KAAKqS,EAAIrS,KAAKs/D,cAAcjtD,EAC5BrS,KAAKsS,EAAItS,KAAKs/D,cAAchtD,EAC5BtS,KAAKo/D,GAAKp/D,KAAKs/D,cAAcF,GAC7Bp/D,KAAKq/D,GAAKr/D,KAAKs/D,cAAcD,IAO/B97D,EAAKwQ,UAAUwrD,aAAe,WAE5Bv/D,KAAK8/D,eAAiBj5D,OACtB7G,KAAK+/D,YAAc,EACnB//D,KAAKggE,kBACLhgE,KAAKigE,kBACLjgE,KAAKkgE,oBAOP38D,EAAKwQ,UAAUgkD,WAAa,SAAShI,GACH,IAA5B/vD,KAAKq/C,MAAMr4C,QAAQ+oD,IACrB/vD,KAAKq/C,MAAM92C,KAAKwnD,GAEqB,IAAnC/vD,KAAK4xD,aAAa5qD,QAAQ+oD,IAC5B/vD,KAAK4xD,aAAarpD,KAAKwnD,IAQ3BxsD,EAAKwQ,UAAUikD,WAAa,SAASjI,GACnC,GAAIrnD,GAAQ1I,KAAKq/C,MAAMr4C,QAAQ+oD,EAClB,KAATrnD,GACF1I,KAAKq/C,MAAM12C,OAAOD,EAAO,GAE3BA,EAAQ1I,KAAK4xD,aAAa5qD,QAAQ+oD,GACrB,IAATrnD,GACF1I,KAAK4xD,aAAajpD,OAAOD,EAAO,IAUpCnF,EAAKwQ,UAAUk9C,cAAgB,SAASC,EAAY7N,GAClD,GAAK6N,EAAL,CAIA,GAAI1iD,IAAU,cAAc,sBAAsB,QAAQ,QAAQ,cAAc,SAAS,YACvF,WAAW,WAAW,WAAW,kBAAkB,kBAAkB,QAAQ,OAAO,oBACpF,qBAAqB,qBAAqB,wBAAwB,eAAgB,OAAQ,YAAa,WAkBzG,IAhBA7N,EAAK6F,oBAAoBgI,EAAQxO,KAAK+O,QAASmiD,GAGzBrqD,SAAlBqqD,EAAW7wD,KAA0BL,KAAKK,GAAK6wD,EAAW7wD,IACrCwG,SAArBqqD,EAAWr+C,QAA0B7S,KAAK6S,MAAQq+C,EAAWr+C,MAAO7S,KAAKmgE,cAAgBjP,EAAWr+C,OAC/EhM,SAArBqqD,EAAWzqB,QAA0BzmC,KAAKymC,MAAQyqB,EAAWzqB,OAC5C5/B,SAAjBqqD,EAAW7+C,IAA0BrS,KAAKqS,EAAI6+C,EAAW7+C,EAAGrS,KAAKsoD,oBAAqB,GACrEzhD,SAAjBqqD,EAAW5+C,IAA0BtS,KAAKsS,EAAI4+C,EAAW5+C,EAAGtS,KAAKsoD,oBAAqB,GACjEzhD,SAArBqqD,EAAW5sD,QAA0BtE,KAAKsE,MAAQ4sD,EAAW5sD,OACxCuC,SAArBqqD,EAAW/R,QAA0Bn/C,KAAKm/C,MAAQ+R,EAAW/R,MAAOn/C,KAAKg/D,kBAAmB,GAGzDn4D,SAAnCqqD,EAAW0N,sBAAoC5+D,KAAK4+D,oBAAsB1N,EAAW0N,qBAClD/3D,SAAnCqqD,EAAW2N,mBAAoC7+D,KAAK6+D,iBAAsB3N,EAAW2N,kBAClDh4D,SAAnCqqD,EAAWkP,kBAAoCpgE,KAAKogE,gBAAsBlP,EAAWkP,iBAEzEv5D,SAAZ7G,KAAKK,GACP,KAAM,sBAIR,IAAgC,gBAArB6wD,GAAW3+C,OAAmD,gBAArB2+C,GAAW3+C,OAA0C,IAApB2+C,EAAW3+C,MAAc,CAC5G,GAAI8tD,GAAWrgE,KAAK0+D,UAAU5oD,IAAIo7C,EAAW3+C,MAC7C5R,GAAKmG,WAAW9G,KAAK+O,QAASsxD,GAE9BrgE,KAAK+O,QAAQ3D,MAAQzK,EAAKkL,WAAW7L,KAAK+O,QAAQ3D,OAMpD,GAH0BvE,SAAtBqqD,EAAW/kC,SAA+BnsB,KAAK8+D,gBAAkB9+D,KAAK+O,QAAQod,QACzDtlB,SAArBqqD,EAAW9lD,QAA+BpL,KAAK+O,QAAQ3D,MAAQzK,EAAKkL,WAAWqlD,EAAW9lD,QAEnEvE,SAAvB7G,KAAK+O,QAAQwvC,OAA4C,IAArBv+C,KAAK+O,QAAQwvC,MAAY,CAC/D,IAAIv+C,KAAKy+D,UAIP,KAAM,uBAHNz+D,MAAKsgE,SAAWtgE,KAAKy+D,UAAUR,KAAKj+D,KAAK+O,QAAQwvC,MAAOv+C,KAAK+O,QAAQwxD,aAgCzE,OAzBkC15D,SAA9BqqD,EAAWiE,gBACbn1D,KAAKqtD,QAAU6D,EAAWiE,eAC1Bn1D,KAAKm1D,eAAiBjE,EAAWiE,gBAETtuD,SAAjBqqD,EAAW7+C,GAA0C,GAAvBrS,KAAKm1D,iBAC1Cn1D,KAAKqtD,QAAS,GAIkBxmD,SAA9BqqD,EAAWkE,gBACbp1D,KAAKstD,QAAU4D,EAAWkE,eAC1Bp1D,KAAKo1D,eAAiBlE,EAAWkE,gBAETvuD,SAAjBqqD,EAAW5+C,GAA0C,GAAvBtS,KAAKo1D,iBAC1Cp1D,KAAKstD,QAAS,GAGhBttD,KAAK++D,YAAc/+D,KAAK++D,aAAsCl4D,SAAtBqqD,EAAW/kC,QAExB,UAAvBnsB,KAAK+O,QAAQuvC,OAA4C,kBAAvBt+C,KAAK+O,QAAQuvC,SACjDt+C,KAAK+O,QAAQqvC,UAAYiF,EAAUnF,MAAMn2B,SACzC/nB,KAAK+O,QAAQsvC,UAAYgF,EAAUnF,MAAMl2B,UAInChoB,KAAK+O,QAAQuvC,OACnB,IAAK,WAAiBt+C,KAAK+vC,KAAO/vC,KAAKwgE,cAAexgE,KAAKs5D,OAASt5D,KAAKygE,eAAiB,MAC1F,KAAK,MAAiBzgE,KAAK+vC,KAAO/vC,KAAK0gE,SAAU1gE,KAAKs5D,OAASt5D,KAAK2gE,UAAY,MAChF,KAAK,SAAiB3gE,KAAK+vC,KAAO/vC,KAAK4gE,YAAa5gE,KAAKs5D,OAASt5D,KAAK6gE,aAAe,MACtF,KAAK,UAAiB7gE,KAAK+vC,KAAO/vC,KAAK8gE,aAAc9gE,KAAKs5D,OAASt5D,KAAK+gE,cAAgB,MAExF,KAAK,QAAiB/gE,KAAK+vC,KAAO/vC,KAAKghE,WAAYhhE,KAAKs5D,OAASt5D,KAAKihE,YAAc,MACpF,KAAK,gBAAiBjhE,KAAK+vC,KAAO/vC,KAAKkhE,mBAAoBlhE,KAAKs5D,OAASt5D,KAAKmhE,oBAAsB,MACpG,KAAK,OAAiBnhE,KAAK+vC,KAAO/vC,KAAKohE,UAAWphE,KAAKs5D,OAASt5D,KAAKqhE,WAAa,MAClF,KAAK,MAAiBrhE,KAAK+vC,KAAO/vC,KAAKshE,SAAUthE,KAAKs5D,OAASt5D,KAAKuhE,YAAc,MAClF,KAAK,SAAiBvhE,KAAK+vC,KAAO/vC,KAAKwhE,YAAaxhE,KAAKs5D,OAASt5D,KAAKuhE,YAAc,MACrF,KAAK,WAAiBvhE,KAAK+vC,KAAO/vC,KAAKyhE,cAAezhE,KAAKs5D,OAASt5D,KAAKuhE,YAAc,MACvF,KAAK,eAAiBvhE,KAAK+vC,KAAO/vC,KAAK0hE,kBAAmB1hE,KAAKs5D,OAASt5D,KAAKuhE,YAAc,MAC3F,KAAK,OAAiBvhE,KAAK+vC,KAAO/vC,KAAK2hE,UAAW3hE,KAAKs5D,OAASt5D,KAAKuhE,YAAc,MACnF,KAAK,OAAiBvhE,KAAK+vC,KAAO/vC,KAAK4hE,UAAW5hE,KAAKs5D,OAASt5D,KAAK6hE,WAAa,MAClF,SAAsB7hE,KAAK+vC,KAAO/vC,KAAK8gE,aAAc9gE,KAAKs5D,OAASt5D,KAAK+gE,eAG1E/gE,KAAK8hE,WAOPv+D,EAAKwQ,UAAU8xB,OAAS,WACtB7lC,KAAKylC,UAAW,EAChBzlC,KAAK8hE,UAMPv+D,EAAKwQ,UAAU+xB,SAAW,WACxB9lC,KAAKylC,UAAW,EAChBzlC,KAAK8hE,UAOPv+D,EAAKwQ,UAAUguD,eAAiB,WAC9B/hE,KAAK8hE;EAOPv+D,EAAKwQ,UAAU+tD,OAAS,WACtB9hE,KAAKmT,MAAQtM,OACb7G,KAAKoT,OAASvM,QAQhBtD,EAAKwQ,UAAU87C,SAAW,WACxB,MAA6B,kBAAf7vD,MAAKymC,MAAuBzmC,KAAKymC,QAAUzmC,KAAKymC,OAShEljC,EAAKwQ,UAAUunD,iBAAmB,SAAU1zC,EAAKgpC,GAC/C,GAAI/vC,GAAc,CAMlB,QAJK7gB,KAAKmT,OACRnT,KAAKs5D,OAAO1xC,GAGN5nB,KAAK+O,QAAQuvC,OACnB,IAAK,SACL,IAAK,MACH,MAAOt+C,MAAK+O,QAAQod,OAAQtL,CAE9B,KAAK,UACH,GAAIjb,GAAI5F,KAAKmT,MAAQ,EACjB1M,EAAIzG,KAAKoT,OAAS,EAClB4+C,EAAKxtD,KAAKya,IAAI2xC,GAAShrD,EACvBuG,EAAK3H,KAAK4a,IAAIwxC,GAASnqD,CAC3B,OAAOb,GAAIa,EAAIjC,KAAK6rB,KAAK2hC,EAAIA,EAAI7lD,EAAIA,EAMvC,KAAK,MACL,IAAK,QACL,IAAK,OACL,QACE,MAAInM,MAAKmT,MACA3O,KAAKL,IACRK,KAAK+mB,IAAIvrB,KAAKmT,MAAQ,EAAI3O,KAAK4a,IAAIwxC,IACnCpsD,KAAK+mB,IAAIvrB,KAAKoT,OAAS,EAAI5O,KAAKya,IAAI2xC,KAAW/vC,EAI5C,IAYftd,EAAKwQ,UAAUiuD,UAAY,SAAS9C,EAAIC,GACtCn/D,KAAKk/D,GAAKA,EACVl/D,KAAKm/D,GAAKA,GASZ57D,EAAKwQ,UAAUkuD,UAAY,SAAS/C,EAAIC,GACtCn/D,KAAKk/D,IAAMA,EACXl/D,KAAKm/D,IAAMA,GAMb57D,EAAKwQ,UAAUmuD,WAAa,WAC1BliE,KAAKs/D,cAAcjtD,EAAIrS,KAAKqS,EAC5BrS,KAAKs/D,cAAchtD,EAAItS,KAAKsS,EAC5BtS,KAAKs/D,cAAcF,GAAKp/D,KAAKo/D,GAC7Bp/D,KAAKs/D,cAAcD,GAAKr/D,KAAKq/D,IAO/B97D,EAAKwQ,UAAUy/C,aAAe,SAASvgC,GAErC,GADAjzB,KAAKkiE,aACAliE,KAAKqtD,OAORrtD,KAAKk/D,GAAK,EACVl/D,KAAKo/D,GAAK,MARM,CAChB,GAAI3/C,GAAOzf,KAAKugD,QAAUvgD,KAAKo/D,GAC3B3gD,GAAQze,KAAKk/D,GAAKz/C,GAAMzf,KAAK+O,QAAQovC,IACzCn+C,MAAKo/D,IAAM3gD,EAAKwU,EAChBjzB,KAAKqS,GAAMrS,KAAKo/D,GAAKnsC,EAOvB,GAAKjzB,KAAKstD,OAORttD,KAAKm/D,GAAK,EACVn/D,KAAKq/D,GAAK,MARM,CAChB,GAAI3/C,GAAO1f,KAAKugD,QAAUvgD,KAAKq/D,GAC3B3gD,GAAQ1e,KAAKm/D,GAAKz/C,GAAM1f,KAAK+O,QAAQovC,IACzCn+C,MAAKq/D,IAAM3gD,EAAKuU,EAChBjzB,KAAKsS,GAAMtS,KAAKq/D,GAAKpsC,IAezB1vB,EAAKwQ,UAAUw/C,oBAAsB,SAAStgC,EAAU0vB,GAEtD,GADA3iD,KAAKkiE,aACAliE,KAAKqtD,OAQRrtD,KAAKk/D,GAAK,EACVl/D,KAAKo/D,GAAK,MATM,CAChB,GAAI3/C,GAAOzf,KAAKugD,QAAUvgD,KAAKo/D,GAC3B3gD,GAAQze,KAAKk/D,GAAKz/C,GAAMzf,KAAK+O,QAAQovC,IACzCn+C,MAAKo/D,IAAM3gD,EAAKwU,EAChBjzB,KAAKo/D,GAAM56D,KAAK+mB,IAAIvrB,KAAKo/D,IAAMzc,EAAiB3iD,KAAKo/D,GAAK,EAAKzc,GAAeA,EAAe3iD,KAAKo/D,GAClGp/D,KAAKqS,GAAMrS,KAAKo/D,GAAKnsC,EAOvB,GAAKjzB,KAAKstD,OAQRttD,KAAKm/D,GAAK,EACVn/D,KAAKq/D,GAAK,MATM,CAChB,GAAI3/C,GAAO1f,KAAKugD,QAAUvgD,KAAKq/D,GAC3B3gD,GAAQ1e,KAAKm/D,GAAKz/C,GAAM1f,KAAK+O,QAAQovC,IACzCn+C,MAAKq/D,IAAM3gD,EAAKuU,EAChBjzB,KAAKq/D,GAAM76D,KAAK+mB,IAAIvrB,KAAKq/D,IAAM1c,EAAiB3iD,KAAKq/D,GAAK,EAAK1c,GAAeA,EAAe3iD,KAAKq/D,GAClGr/D,KAAKsS,GAAMtS,KAAKq/D,GAAKpsC,IAYzB1vB,EAAKwQ,UAAUouD,QAAU,WACvB,MAAQniE,MAAKqtD,QAAUrtD,KAAKstD,QAQ9B/pD,EAAKwQ,UAAUq/C,SAAW,SAASD,GACjC,GAAIiP,GAAW59D,KAAK6rB,KAAK7rB,KAAK+vB,IAAIv0B,KAAKo/D,GAAG,GAAK56D,KAAK+vB,IAAIv0B,KAAKq/D,GAAG,GAEhE,OAAQ+C,GAAWjP,GAOrB5vD,EAAKwQ,UAAUi5C,WAAa,WAC1B,MAAOhtD,MAAKylC,UAOdliC,EAAKwQ,UAAUyB,SAAW,WACxB,MAAOxV,MAAKsE,OASdf,EAAKwQ,UAAUsuD,YAAc,SAAShwD,EAAGC,GACvC,GAAImN,GAAKzf,KAAKqS,EAAIA,EACdqN,EAAK1f,KAAKsS,EAAIA,CAClB,OAAO9N,MAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,IAUlCnc,EAAKwQ,UAAU+9C,cAAgB,SAAS3tD,EAAKC,EAAKC,GAChD,IAAKrE,KAAK++D,aAA8Bl4D,SAAf7G,KAAKsE,MAAqB,CACjD,GAAIC,GAAQvE,KAAK+O,QAAQkvC,sBAAsB95C,EAAKC,EAAKC,EAAOrE,KAAKsE,OACjEg+D,EAAatiE,KAAK+O,QAAQsvC,UAAYr+C,KAAK+O,QAAQqvC,SACvD,IAAuC,GAAnCp+C,KAAK+O,QAAQgwC,mBAA4B,CAC3C,GAAIwjB,GAAWviE,KAAK+O,QAAQkwC,YAAcj/C,KAAK+O,QAAQiwC,WACvDh/C,MAAK+O,QAAQ0vC,SAAWz+C,KAAK+O,QAAQiwC,YAAcz6C,EAAQg+D,EAE7DviE,KAAK+O,QAAQod,OAASnsB,KAAK+O,QAAQqvC,UAAY75C,EAAQ+9D,EAGzDtiE,KAAK8+D,gBAAkB9+D,KAAK+O,QAAQod,QAQtC5oB,EAAKwQ,UAAUg8B,KAAO,WACpB,KAAM,wCAQRxsC,EAAKwQ,UAAUulD,OAAS,WACtB,KAAM,0CAQR/1D,EAAKwQ,UAAU67C,kBAAoB,SAAShsC,GAC1C,MAAQ5jB,MAAK6H,KAAoB+b,EAAIsE,OAC7BloB,KAAK6H,KAAO7H,KAAKmT,MAAQyQ,EAAI/b,MAC7B7H,KAAKiI,IAAoB2b,EAAIO,QAC7BnkB,KAAKiI,IAAMjI,KAAKoT,OAASwQ,EAAI3b,KAGvC1E,EAAKwQ,UAAUktD,aAAe,WAG5B,IAAKjhE,KAAKmT,QAAUnT,KAAKoT,OAAQ,CAC/B,GAAID,GAAOC,CACX,IAAIpT,KAAKsE,MAAO,CACdtE,KAAK+O,QAAQod,OAAQnsB,KAAK8+D,eAC1B,IAAIv6D,GAAQvE,KAAKsgE,SAASltD,OAASpT,KAAKsgE,SAASntD,KACnCtM,UAAVtC,GACF4O,EAAQnT,KAAK+O,QAAQod,QAASnsB,KAAKsgE,SAASntD,MAC5CC,EAASpT,KAAK+O,QAAQod,OAAQ5nB,GAASvE,KAAKsgE,SAASltD,SAGrDD,EAAQ,EACRC,EAAS,OAIXD,GAAQnT,KAAKsgE,SAASntD,MACtBC,EAASpT,KAAKsgE,SAASltD,MAEzBpT,MAAKmT,MAASA,EACdnT,KAAKoT,OAASA,EAEdpT,KAAK4/D,gBAAkB,EACnB5/D,KAAKmT,MAAQ,GAAKnT,KAAKoT,OAAS,IAClCpT,KAAKmT,OAAU3O,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAA0BzhD,KAAKy/D,uBAClFz/D,KAAKoT,QAAU5O,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAK0/D,wBACjF1/D,KAAK+O,QAAQod,QAAS3nB,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAK2/D,wBACxF3/D,KAAK4/D,gBAAkB5/D,KAAKmT,MAAQA,KAK1C5P,EAAKwQ,UAAUyuD,qBAAuB,SAAU56C,GAC9C,GAA2B,GAAvB5nB,KAAKsgE,SAASntD,MAAa,CAE7B,GAAInT,KAAK+/D,YAAc,EAAG,CACxB,GAAI53C,GAAcnoB,KAAK+/D,YAAc,EAAK,GAAK,CAC/C53C,IAAanoB,KAAKy5D,gBAClBtxC,EAAY3jB,KAAKL,IAAI,GAAMnE,KAAKmT,MAAMgV,GAEtCP,EAAI66C,YAAc,GAClB76C,EAAI86C,UAAU1iE,KAAKsgE,SAAUtgE,KAAK6H,KAAOsgB,EAAWnoB,KAAKiI,IAAMkgB,EAAWnoB,KAAKmT,MAAQ,EAAEgV,EAAWnoB,KAAKoT,OAAS,EAAE+U,GAItHP,EAAI66C,YAAc,EAClB76C,EAAI86C,UAAU1iE,KAAKsgE,SAAUtgE,KAAK6H,KAAM7H,KAAKiI,IAAKjI,KAAKmT,MAAOnT,KAAKoT,UAIvE7P,EAAKwQ,UAAU4uD,gBAAkB,SAAU/6C,GACzC,GAAIhN,GACA2P,EAAS,CAEb,IAAIvqB,KAAKoT,OAAO,CACdmX,EAASvqB,KAAKoT,OAAS,CACvB,IAAI0jD,GAAkB92D,KAAK4iE,YAAYh7C,EAEnCkvC,GAAgBoD,WAAa,IAC/B3vC,GAAUusC,EAAgB1jD,OAAS,EACnCmX,GAAU,GAId3P,EAAS5a,KAAKsS,EAAIiY,EAElBvqB,KAAKq5D,OAAOzxC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGuI,EAAQ/T,SAG/CtD,EAAKwQ,UAAUitD,WAAa,SAAUp5C,GACpC5nB,KAAKihE,aAAar5C,GAClB5nB,KAAK6H,KAAS7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EACpCnT,KAAKiI,IAASjI,KAAKsS,EAAItS,KAAKoT,OAAS,EAErCpT,KAAKwiE,qBAAqB56C,GAE1B5nB,KAAK+nD,YAAY9/C,IAAMjI,KAAKiI,IAC5BjI,KAAK+nD,YAAYlgD,KAAO7H,KAAK6H,KAC7B7H,KAAK+nD,YAAY7/B,MAAQloB,KAAK6H,KAAO7H,KAAKmT,MAC1CnT,KAAK+nD,YAAY5jC,OAASnkB,KAAKiI,IAAMjI,KAAKoT,OAE1CpT,KAAK2iE,gBAAgB/6C,GACrB5nB,KAAK+nD,YAAYlgD,KAAOrD,KAAKL,IAAInE,KAAK+nD,YAAYlgD,KAAM7H,KAAK82D,gBAAgBjvD,MAC7E7H,KAAK+nD,YAAY7/B,MAAQ1jB,KAAKJ,IAAIpE,KAAK+nD,YAAY7/B,MAAOloB,KAAK82D,gBAAgBjvD,KAAO7H,KAAK82D,gBAAgB3jD,OAC3GnT,KAAK+nD,YAAY5jC,OAAS3f,KAAKJ,IAAIpE,KAAK+nD,YAAY5jC,OAAQnkB,KAAK+nD,YAAY5jC,OAASnkB,KAAK82D,gBAAgB1jD,SAG7G7P,EAAKwQ,UAAUotD,qBAAuB,SAAUv5C,GAC9C,GAAI5nB,KAAKsgE,SAAS/Y,KAAQvnD,KAAKsgE,SAASntD,OAAUnT,KAAKsgE,SAASltD,OAe1DpT,KAAK6iE,oCACP7iE,KAAKmT,MAAQ,EACbnT,KAAKoT,OAAS,QACPpT,MAAK6iE,mCAEd7iE,KAAKihE,aAAar5C,OAnBlB,KAAK5nB,KAAKmT,MAAO,CACf,GAAI2vD,GAAiC,EAAtB9iE,KAAK+O,QAAQod,MAC5BnsB,MAAKmT,MAAQ2vD,EACb9iE,KAAKoT,OAAS0vD,EAKd9iE,KAAK+O,QAAQod,QAAuE,GAA7D3nB,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAA+BzhD,KAAK2/D,wBAC/F3/D,KAAK4/D,gBAAkB5/D,KAAK+O,QAAQod,OAAQ,GAAI22C,EAChD9iE,KAAK6iE,mCAAoC,IAc/Ct/D,EAAKwQ,UAAUmtD,mBAAqB,SAAUt5C,GAC5C5nB,KAAKmhE,qBAAqBv5C,GAE1B5nB,KAAK6H,KAAS7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EACpCnT,KAAKiI,IAASjI,KAAKsS,EAAItS,KAAKoT,OAAS,CAErC,IAAI2vD,GAAU/iE,KAAK6H,KAAQ7H,KAAKmT,MAAQ,EACpC6vD,EAAUhjE,KAAKiI,IAAOjI,KAAKoT,OAAS,EACpC+Y,EAAS3nB,KAAK+mB,IAAIvrB,KAAKoT,OAAS,EAEpCpT,MAAKijE,eAAer7C,EAAKm7C,EAASC,EAAS72C,GAE3CvE,EAAIqqC,OACJrqC,EAAIs7C,OAAOljE,KAAKqS,EAAGrS,KAAKsS,EAAG6Z,GAC3BvE,EAAIlH,SACJkH,EAAIu7C,OAEJnjE,KAAKwiE,qBAAqB56C,GAE1BA,EAAIwqC,UAEJpyD,KAAK+nD,YAAY9/C,IAAMjI,KAAKsS,EAAItS,KAAK+O,QAAQod,OAC7CnsB,KAAK+nD,YAAYlgD,KAAO7H,KAAKqS,EAAIrS,KAAK+O,QAAQod,OAC9CnsB,KAAK+nD,YAAY7/B,MAAQloB,KAAKqS,EAAIrS,KAAK+O,QAAQod,OAC/CnsB,KAAK+nD,YAAY5jC,OAASnkB,KAAKsS,EAAItS,KAAK+O,QAAQod,OAEhDnsB,KAAK2iE,gBAAgB/6C,GAErB5nB,KAAK+nD,YAAYlgD,KAAOrD,KAAKL,IAAInE,KAAK+nD,YAAYlgD,KAAM7H,KAAK82D,gBAAgBjvD,MAC7E7H,KAAK+nD,YAAY7/B,MAAQ1jB,KAAKJ,IAAIpE,KAAK+nD,YAAY7/B,MAAOloB,KAAK82D,gBAAgBjvD,KAAO7H,KAAK82D,gBAAgB3jD,OAC3GnT,KAAK+nD,YAAY5jC,OAAS3f,KAAKJ,IAAIpE,KAAK+nD,YAAY5jC,OAAQnkB,KAAK+nD,YAAY5jC,OAASnkB,KAAK82D,gBAAgB1jD,SAG7G7P,EAAKwQ,UAAU4sD,WAAa,SAAU/4C,GACpC,IAAK5nB,KAAKmT,MAAO,CACf,GAAIqH,GAAS,EACT4oD,EAAWpjE,KAAK4iE,YAAYh7C,EAChC5nB,MAAKmT,MAAQiwD,EAASjwD,MAAQ,EAAIqH,EAClCxa,KAAKoT,OAASgwD,EAAShwD,OAAS,EAAIoH,EAEpCxa,KAAKmT,OAAuE,GAA7D3O,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAA+BzhD,KAAKy/D,uBACvFz/D,KAAKoT,QAAuE,GAA7D5O,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAA+BzhD,KAAK0/D,wBACvF1/D,KAAK4/D,gBAAkB5/D,KAAKmT,OAASiwD,EAASjwD,MAAQ,EAAIqH,KAM9DjX,EAAKwQ,UAAU2sD,SAAW,SAAU94C,GAClC5nB,KAAK2gE,WAAW/4C,GAEhB5nB,KAAK6H,KAAO7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EAClCnT,KAAKiI,IAAMjI,KAAKsS,EAAItS,KAAKoT,OAAS,CAElC,IAAIiwD,GAAmB,IACnBxiD,EAAc7gB,KAAK+O,QAAQ8R,YAC3ByiD,EAAqBtjE,KAAK+O,QAAQqwC,qBAAuB,EAAIp/C,KAAK+O,QAAQ8R,WAE9E+G,GAAIY,YAAcxoB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUD,OAAS3M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMF,OAAS3M,KAAK+O,QAAQ3D,MAAMuB,OAGtI3M,KAAK+/D,YAAc,IACrBn4C,EAAIO,WAAanoB,KAAKylC,SAAW69B,EAAqBziD,IAAiB7gB,KAAK+/D,YAAc,EAAKsD,EAAmB,GAClHz7C,EAAIO,WAAanoB,KAAKy5D,gBACtB7xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAI27C,UAAUvjE,KAAK6H,KAAK,EAAE+f,EAAIO,UAAWnoB,KAAKiI,IAAI,EAAE2f,EAAIO,UAAWnoB,KAAKmT,MAAM,EAAEyU,EAAIO,UAAWnoB,KAAKoT,OAAO,EAAEwU,EAAIO,UAAWnoB,KAAK+O,QAAQod,QACzIvE,EAAIlH,UAENkH,EAAIO,WAAanoB,KAAKylC,SAAW69B,EAAqBziD,IAAiB7gB,KAAK+/D,YAAc,EAAKsD,EAAmB,GAClHz7C,EAAIO,WAAanoB,KAAKy5D,gBACtB7xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAY7oB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUF,WAAa1M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMH,WAAa1M,KAAK+O,QAAQ3D,MAAMsB,WAEhJkb,EAAI27C,UAAUvjE,KAAK6H,KAAM7H,KAAKiI,IAAKjI,KAAKmT,MAAOnT,KAAKoT,OAAQpT,KAAK+O,QAAQod,QACzEvE,EAAInH,OACJmH,EAAIlH,SAEJ1gB,KAAK+nD,YAAY9/C,IAAMjI,KAAKiI,IAC5BjI,KAAK+nD,YAAYlgD,KAAO7H,KAAK6H,KAC7B7H,KAAK+nD,YAAY7/B,MAAQloB,KAAK6H,KAAO7H,KAAKmT,MAC1CnT,KAAK+nD,YAAY5jC,OAASnkB,KAAKiI,IAAMjI,KAAKoT,OAE1CpT,KAAKq5D,OAAOzxC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGrS,KAAKsS,IAI5C/O,EAAKwQ,UAAU0sD,gBAAkB,SAAU74C,GACzC,IAAK5nB,KAAKmT,MAAO,CACf,GAAIqH,GAAS,EACT4oD,EAAWpjE,KAAK4iE,YAAYh7C,GAC5BhV,EAAOwwD,EAASjwD,MAAQ,EAAIqH,CAChCxa,MAAKmT,MAAQP,EACb5S,KAAKoT,OAASR,EAGd5S,KAAKmT,OAAU3O,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAKy/D,uBACjFz/D,KAAKoT,QAAU5O,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAK0/D,wBACjF1/D,KAAK+O,QAAQod,QAAS3nB,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAK2/D,wBACxF3/D,KAAK4/D,gBAAkB5/D,KAAKmT,MAAQP,IAIxCrP,EAAKwQ,UAAUysD,cAAgB,SAAU54C,GACvC5nB,KAAKygE,gBAAgB74C,GACrB5nB,KAAK6H,KAAO7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EAClCnT,KAAKiI,IAAMjI,KAAKsS,EAAItS,KAAKoT,OAAS,CAElC,IAAIiwD,GAAmB,IACnBxiD,EAAc7gB,KAAK+O,QAAQ8R,YAC3ByiD,EAAqBtjE,KAAK+O,QAAQqwC,qBAAuB,EAAIp/C,KAAK+O,QAAQ8R,WAE9E+G,GAAIY,YAAcxoB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUD,OAAS3M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMF,OAAS3M,KAAK+O,QAAQ3D,MAAMuB,OAGtI3M,KAAK+/D,YAAc,IACrBn4C,EAAIO,WAAanoB,KAAKylC,SAAW69B,EAAqBziD,IAAiB7gB,KAAK+/D,YAAc,EAAKsD,EAAmB,GAClHz7C,EAAIO,WAAanoB,KAAKy5D,gBACtB7xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAI47C,SAASxjE,KAAKqS,EAAIrS,KAAKmT,MAAM,EAAI,EAAEyU,EAAIO,UAAWnoB,KAAKsS,EAAgB,GAAZtS,KAAKoT,OAAa,EAAEwU,EAAIO,UAAWnoB,KAAKmT,MAAQ,EAAEyU,EAAIO,UAAWnoB,KAAKoT,OAAS,EAAEwU,EAAIO,WACpJP,EAAIlH,UAENkH,EAAIO,WAAanoB,KAAKylC,SAAW69B,EAAqBziD,IAAiB7gB,KAAK+/D,YAAc,EAAKsD,EAAmB,GAClHz7C,EAAIO,WAAanoB,KAAKy5D,gBACtB7xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAY7oB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUF,WAAa1M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMH,WAAa1M,KAAK+O,QAAQ3D,MAAMsB,WAChJkb,EAAI47C,SAASxjE,KAAKqS,EAAIrS,KAAKmT,MAAM,EAAGnT,KAAKsS,EAAgB,GAAZtS,KAAKoT,OAAYpT,KAAKmT,MAAOnT,KAAKoT,QAC/EwU,EAAInH,OACJmH,EAAIlH,SAEJ1gB,KAAK+nD,YAAY9/C,IAAMjI,KAAKiI,IAC5BjI,KAAK+nD,YAAYlgD,KAAO7H,KAAK6H,KAC7B7H,KAAK+nD,YAAY7/B,MAAQloB,KAAK6H,KAAO7H,KAAKmT,MAC1CnT,KAAK+nD,YAAY5jC,OAASnkB,KAAKiI,IAAMjI,KAAKoT,OAE1CpT,KAAKq5D,OAAOzxC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGrS,KAAKsS,IAI5C/O,EAAKwQ,UAAU8sD,cAAgB,SAAUj5C,GACvC,IAAK5nB,KAAKmT,MAAO,CACf,GAAIqH,GAAS,EACT4oD,EAAWpjE,KAAK4iE,YAAYh7C,GAC5Bk7C,EAAWt+D,KAAKJ,IAAIg/D,EAASjwD,MAAOiwD,EAAShwD,QAAU,EAAIoH,CAC/Dxa,MAAK+O,QAAQod,OAAS22C,EAAW,EAEjC9iE,KAAKmT,MAAQ2vD,EACb9iE,KAAKoT,OAAS0vD,EAKd9iE,KAAK+O,QAAQod,QAAuE,GAA7D3nB,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAA+BzhD,KAAK2/D,wBAC/F3/D,KAAK4/D,gBAAkB5/D,KAAK+O,QAAQod,OAAQ,GAAI22C,IAIpDv/D,EAAKwQ,UAAUkvD,eAAiB,SAAUr7C,EAAKvV,EAAGC,EAAG6Z,GACnD,GAAIk3C,GAAmB,IACnBxiD,EAAc7gB,KAAK+O,QAAQ8R,YAC3ByiD,EAAqBtjE,KAAK+O,QAAQqwC,qBAAuB,EAAIp/C,KAAK+O,QAAQ8R,WAE9E+G,GAAIY,YAAcxoB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUD,OAAS3M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMF,OAAS3M,KAAK+O,QAAQ3D,MAAMuB,OAGtI3M,KAAK+/D,YAAc,IACrBn4C,EAAIO,WAAanoB,KAAKylC,SAAW69B,EAAqBziD,IAAiB7gB,KAAK+/D,YAAc,EAAKsD,EAAmB,GAClHz7C,EAAIO,WAAanoB,KAAKy5D,gBACtB7xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAIs7C,OAAO7wD,EAAGC,EAAG6Z,EAAO,EAAEvE,EAAIO,WAC9BP,EAAIlH,UAENkH,EAAIO,WAAanoB,KAAKylC,SAAW69B,EAAqBziD,IAAiB7gB,KAAK+/D,YAAc,EAAKsD,EAAmB,GAClHz7C,EAAIO,WAAanoB,KAAKy5D,gBACtB7xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAY7oB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUF,WAAa1M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMH,WAAa1M,KAAK+O,QAAQ3D,MAAMsB,WAChJkb,EAAIs7C,OAAOljE,KAAKqS,EAAGrS,KAAKsS,EAAG6Z,GAC3BvE,EAAInH,OACJmH,EAAIlH,UAGNnd,EAAKwQ,UAAU6sD,YAAc,SAAUh5C,GACrC5nB,KAAK6gE,cAAcj5C,GACnB5nB,KAAK6H,KAAO7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EAClCnT,KAAKiI,IAAMjI,KAAKsS,EAAItS,KAAKoT,OAAS,EAElCpT,KAAKijE,eAAer7C,EAAK5nB,KAAKqS,EAAGrS,KAAKsS,EAAGtS,KAAK+O,QAAQod,QAEtDnsB,KAAK+nD,YAAY9/C,IAAMjI,KAAKsS,EAAItS,KAAK+O,QAAQod,OAC7CnsB,KAAK+nD,YAAYlgD,KAAO7H,KAAKqS,EAAIrS,KAAK+O,QAAQod,OAC9CnsB,KAAK+nD,YAAY7/B,MAAQloB,KAAKqS,EAAIrS,KAAK+O,QAAQod,OAC/CnsB,KAAK+nD,YAAY5jC,OAASnkB,KAAKsS,EAAItS,KAAK+O,QAAQod,OAEhDnsB,KAAKq5D,OAAOzxC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGrS,KAAKsS,IAG5C/O,EAAKwQ,UAAUgtD,eAAiB,SAAUn5C,GACxC,IAAK5nB,KAAKmT,MAAO,CACf,GAAIiwD,GAAWpjE,KAAK4iE,YAAYh7C,EAEhC5nB,MAAKmT,MAAyB,IAAjBiwD,EAASjwD,MACtBnT,KAAKoT,OAA2B,EAAlBgwD,EAAShwD,OACnBpT,KAAKmT,MAAQnT,KAAKoT,SACpBpT,KAAKmT,MAAQnT,KAAKoT,OAEpB,IAAIqwD,GAAczjE,KAAKmT,KAGvBnT,MAAKmT,OAAU3O,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAKy/D,uBACjFz/D,KAAKoT,QAAU5O,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAK0/D,wBACjF1/D,KAAK+O,QAAQod,QAAU3nB,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAK2/D,wBACzF3/D,KAAK4/D,gBAAkB5/D,KAAKmT,MAAQswD,IAIxClgE,EAAKwQ,UAAU+sD,aAAe,SAAUl5C,GACtC5nB,KAAK+gE,eAAen5C,GACpB5nB,KAAK6H,KAAO7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EAClCnT,KAAKiI,IAAMjI,KAAKsS,EAAItS,KAAKoT,OAAS,CAElC,IAAIiwD,GAAmB,IACnBxiD,EAAc7gB,KAAK+O,QAAQ8R,YAC3ByiD,EAAqBtjE,KAAK+O,QAAQqwC,qBAAuB,EAAIp/C,KAAK+O,QAAQ8R,WAE9E+G,GAAIY,YAAcxoB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUD,OAAS3M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMF,OAAS3M,KAAK+O,QAAQ3D,MAAMuB,OAGtI3M,KAAK+/D,YAAc,IACrBn4C,EAAIO,WAAanoB,KAAKylC,SAAW69B,EAAqBziD,IAAiB7gB,KAAK+/D,YAAc,EAAKsD,EAAmB,GAClHz7C,EAAIO,WAAanoB,KAAKy5D,gBACtB7xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAI87C,QAAQ1jE,KAAK6H,KAAK,EAAE+f,EAAIO,UAAWnoB,KAAKiI,IAAI,EAAE2f,EAAIO,UAAWnoB,KAAKmT,MAAM,EAAEyU,EAAIO,UAAWnoB,KAAKoT,OAAO,EAAEwU,EAAIO,WAC/GP,EAAIlH,UAENkH,EAAIO,WAAanoB,KAAKylC,SAAW69B,EAAqBziD,IAAiB7gB,KAAK+/D,YAAc,EAAKsD,EAAmB,GAClHz7C,EAAIO,WAAanoB,KAAKy5D,gBACtB7xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAY7oB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUF,WAAa1M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMH,WAAa1M,KAAK+O,QAAQ3D,MAAMsB,WAEhJkb,EAAI87C,QAAQ1jE,KAAK6H,KAAM7H,KAAKiI,IAAKjI,KAAKmT,MAAOnT,KAAKoT,QAClDwU,EAAInH,OACJmH,EAAIlH,SAEJ1gB,KAAK+nD,YAAY9/C,IAAMjI,KAAKiI,IAC5BjI,KAAK+nD,YAAYlgD,KAAO7H,KAAK6H,KAC7B7H,KAAK+nD,YAAY7/B,MAAQloB,KAAK6H,KAAO7H,KAAKmT,MAC1CnT,KAAK+nD,YAAY5jC,OAASnkB,KAAKiI,IAAMjI,KAAKoT,OAE1CpT,KAAKq5D,OAAOzxC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGrS,KAAKsS,IAG5C/O,EAAKwQ,UAAUutD,SAAW,SAAU15C,GAClC5nB,KAAK2jE,WAAW/7C,EAAK,WAGvBrkB,EAAKwQ,UAAU0tD,cAAgB,SAAU75C,GACvC5nB,KAAK2jE,WAAW/7C,EAAK,aAGvBrkB,EAAKwQ,UAAU2tD,kBAAoB,SAAU95C,GAC3C5nB,KAAK2jE,WAAW/7C,EAAK,iBAGvBrkB,EAAKwQ,UAAUytD,YAAc,SAAU55C,GACrC5nB,KAAK2jE,WAAW/7C,EAAK,WAGvBrkB,EAAKwQ,UAAU4tD,UAAY,SAAU/5C,GACnC5nB,KAAK2jE,WAAW/7C,EAAK,SAGvBrkB,EAAKwQ,UAAUwtD,aAAe,WAC5B,IAAKvhE,KAAKmT,MAAO,CACfnT,KAAK+O,QAAQod,OAAQnsB,KAAK8+D,eAC1B,IAAIlsD,GAAO,EAAI5S,KAAK+O,QAAQod,MAC5BnsB,MAAKmT,MAAQP,EACb5S,KAAKoT,OAASR,EAGd5S,KAAKmT,OAAU3O,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAKy/D,uBACjFz/D,KAAKoT,QAAU5O,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAK0/D,wBACjF1/D,KAAK+O,QAAQod,QAAsE,GAA7D3nB,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAA+BzhD,KAAK2/D,wBAC9F3/D,KAAK4/D,gBAAkB5/D,KAAKmT,MAAQP,IAIxCrP,EAAKwQ,UAAU4vD,WAAa,SAAU/7C,EAAK02B,GACzCt+C,KAAKuhE,aAAa35C,GAElB5nB,KAAK6H,KAAO7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EAClCnT,KAAKiI,IAAMjI,KAAKsS,EAAItS,KAAKoT,OAAS,CAElC,IAAIiwD,GAAmB,IACnBxiD,EAAc7gB,KAAK+O,QAAQ8R,YAC3ByiD,EAAqBtjE,KAAK+O,QAAQqwC,qBAAuB,EAAIp/C,KAAK+O,QAAQ8R,YAC1E+iD,EAAmB,CAGvB,QAAQtlB,GACN,IAAK,MAAiBslB,EAAmB,CAAG,MAC5C,KAAK,SAAiBA,EAAmB,CAAG,MAC5C,KAAK,WAAiBA,EAAmB,CAAG,MAC5C,KAAK,eAAiBA,EAAmB,CAAG,MAC5C,KAAK,OAAiBA,EAAmB,EAG3Ch8C,EAAIY,YAAcxoB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUD,OAAS3M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMF,OAAS3M,KAAK+O,QAAQ3D,MAAMuB,OAEtI3M,KAAK+/D,YAAc,IACrBn4C,EAAIO,WAAanoB,KAAKylC,SAAW69B,EAAqBziD,IAAiB7gB,KAAK+/D,YAAc,EAAKsD,EAAmB,GAClHz7C,EAAIO,WAAanoB,KAAKy5D,gBACtB7xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAI02B,GAAOt+C,KAAKqS,EAAGrS,KAAKsS,EAAGtS,KAAK+O,QAAQod,OAAQy3C,EAAmBh8C,EAAIO,WACvEP,EAAIlH,UAENkH,EAAIO,WAAanoB,KAAKylC,SAAW69B,EAAqBziD,IAAiB7gB,KAAK+/D,YAAc,EAAKsD,EAAmB,GAClHz7C,EAAIO,WAAanoB,KAAKy5D,gBACtB7xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAY7oB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUF,WAAa1M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMH,WAAa1M,KAAK+O,QAAQ3D,MAAMsB,WAChJkb,EAAI02B,GAAOt+C,KAAKqS,EAAGrS,KAAKsS,EAAGtS,KAAK+O,QAAQod,QACxCvE,EAAInH,OACJmH,EAAIlH,SAEJ1gB,KAAK+nD,YAAY9/C,IAAMjI,KAAKsS,EAAItS,KAAK+O,QAAQod,OAC7CnsB,KAAK+nD,YAAYlgD,KAAO7H,KAAKqS,EAAIrS,KAAK+O,QAAQod,OAC9CnsB,KAAK+nD,YAAY7/B,MAAQloB,KAAKqS,EAAIrS,KAAK+O,QAAQod,OAC/CnsB,KAAK+nD,YAAY5jC,OAASnkB,KAAKsS,EAAItS,KAAK+O,QAAQod,OAE5CnsB,KAAK6S,QACP7S,KAAKq5D,OAAOzxC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGrS,KAAKsS,EAAItS,KAAKoT,OAAS,EAAGvM,OAAW,WAAU,GACpF7G,KAAK+nD,YAAYlgD,KAAOrD,KAAKL,IAAInE,KAAK+nD,YAAYlgD,KAAM7H,KAAK82D,gBAAgBjvD,MAC7E7H,KAAK+nD,YAAY7/B,MAAQ1jB,KAAKJ,IAAIpE,KAAK+nD,YAAY7/B,MAAOloB,KAAK82D,gBAAgBjvD,KAAO7H,KAAK82D,gBAAgB3jD,OAC3GnT,KAAK+nD,YAAY5jC,OAAS3f,KAAKJ,IAAIpE,KAAK+nD,YAAY5jC,OAAQnkB,KAAK+nD,YAAY5jC,OAASnkB,KAAK82D,gBAAgB1jD,UAI/G7P,EAAKwQ,UAAUstD,YAAc,SAAUz5C,GACrC,IAAK5nB,KAAKmT,MAAO,CACf,GAAIqH,GAAS,EACT4oD,EAAWpjE,KAAK4iE,YAAYh7C,EAChC5nB,MAAKmT,MAAQiwD,EAASjwD,MAAQ,EAAIqH,EAClCxa,KAAKoT,OAASgwD,EAAShwD,OAAS,EAAIoH,EAGpCxa,KAAKmT,OAAU3O,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAKy/D,uBACjFz/D,KAAKoT,QAAU5O,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAK0/D,wBACjF1/D,KAAK+O,QAAQod,QAAS3nB,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAK2/D,wBACxF3/D,KAAK4/D,gBAAkB5/D,KAAKmT,OAASiwD,EAASjwD,MAAQ,EAAIqH,KAI9DjX,EAAKwQ,UAAUqtD,UAAY,SAAUx5C,GACnC5nB,KAAKqhE,YAAYz5C,GACjB5nB,KAAK6H,KAAO7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EAClCnT,KAAKiI,IAAMjI,KAAKsS,EAAItS,KAAKoT,OAAS,EAElCpT,KAAKq5D,OAAOzxC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGrS,KAAKsS,GAE1CtS,KAAK+nD,YAAY9/C,IAAMjI,KAAKiI,IAC5BjI,KAAK+nD,YAAYlgD,KAAO7H,KAAK6H,KAC7B7H,KAAK+nD,YAAY7/B,MAAQloB,KAAK6H,KAAO7H,KAAKmT,MAC1CnT,KAAK+nD,YAAY5jC,OAASnkB,KAAKiI,IAAMjI,KAAKoT,QAG5C7P,EAAKwQ,UAAU8tD,YAAc,WAC3B,IAAK7hE,KAAKmT,MAAO,CACf,GAAIqH,GAAS,EACT28B,GAEFhkC,MAAOlP,OAAOjE,KAAK+O,QAAQooC,UAC3B/jC,OAAQnP,OAAOjE,KAAK+O,QAAQooC,UAE9Bn3C,MAAKmT,MAAQgkC,EAAShkC,MAAQ,EAAIqH,EAClCxa,KAAKoT,OAAS+jC,EAAS/jC,OAAS,EAAIoH,EAGpCxa,KAAKmT,OAAS3O,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAKy/D,uBAChFz/D,KAAKoT,QAAU5O,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAK0/D,wBACjF1/D,KAAK+O,QAAQod,QAAU3nB,KAAKL,IAAInE,KAAK+/D,YAAc,EAAG//D,KAAKyhD,uBAAyBzhD,KAAK2/D,wBACzF3/D,KAAK4/D,gBAAkB5/D,KAAKmT,OAASgkC,EAAShkC,MAAQ,EAAIqH,KAI9DjX,EAAKwQ,UAAU6tD,UAAY,SAAUh6C,GAenC,GAdA5nB,KAAK6hE,YAAYj6C,GAEjB5nB,KAAK+O,QAAQooC,SAAWn3C,KAAK+O,QAAQooC,UAAY,GAEjDn3C,KAAK6H,KAAO7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EAClCnT,KAAKiI,IAAMjI,KAAKsS,EAAItS,KAAKoT,OAAS,EAClCpT,KAAK6jE,MAAMj8C,GAGX5nB,KAAK+nD,YAAY9/C,IAAMjI,KAAKsS,EAAItS,KAAK+O,QAAQooC,SAAS,EACtDn3C,KAAK+nD,YAAYlgD,KAAO7H,KAAKqS,EAAIrS,KAAK+O,QAAQooC,SAAS,EACvDn3C,KAAK+nD,YAAY7/B,MAAQloB,KAAKqS,EAAIrS,KAAK+O,QAAQooC,SAAS,EACxDn3C,KAAK+nD,YAAY5jC,OAASnkB,KAAKsS,EAAItS,KAAK+O,QAAQooC,SAAS,EAErDn3C,KAAK6S,MAAO,CACd,GAAIixD,GAAkB,CACtB9jE,MAAKq5D,OAAOzxC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGrS,KAAKsS,EAAItS,KAAKoT,OAAS,EAAI0wD,EAAiB,OAAO,GAExF9jE,KAAK+nD,YAAYlgD,KAAOrD,KAAKL,IAAInE,KAAK+nD,YAAYlgD,KAAM7H,KAAK82D,gBAAgBjvD,MAC7E7H,KAAK+nD,YAAY7/B,MAAQ1jB,KAAKJ,IAAIpE,KAAK+nD,YAAY7/B,MAAOloB,KAAK82D,gBAAgBjvD,KAAO7H,KAAK82D,gBAAgB3jD,OAC3GnT,KAAK+nD,YAAY5jC,OAAS3f,KAAKJ,IAAIpE,KAAK+nD,YAAY5jC,OAAQnkB,KAAK+nD,YAAY5jC,OAASnkB,KAAK82D,gBAAgB1jD,UAI/G7P,EAAKwQ,UAAU8vD,MAAQ,SAAUj8C,GAC/B,GAAIm8C,GAAmB9/D,OAAOjE,KAAK+O,QAAQooC,UAAYn3C,KAAK6/D,YAE5D,IAAI7/D,KAAK+O,QAAQ4gC,MAAQo0B,EAAmB/jE,KAAK+O,QAAQ+vC,kBAAoB,EAAG,CAE5E,GAAI3H,GAAWlzC,OAAOjE,KAAK+O,QAAQooC,SAEnCvvB,GAAIQ,MAAQpoB,KAAKylC,SAAW,QAAU,IAAM0R,EAAW,MAAQn3C,KAAK+O,QAAQi1D,aAG5Ep8C,EAAIiB,UAAY7oB,KAAK+O,QAAQk1D,WAAa,QAC1Cr8C,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,SACnBxB,EAAIyB,SAASrpB,KAAK+O,QAAQ4gC,KAAM3vC,KAAKqS,EAAGrS,KAAKsS,KAInD/O,EAAKwQ,UAAUslD,OAAS,SAAUzxC,EAAKuC,EAAM9X,EAAGC,EAAGw1B,EAAOo8B,EAAUC,GAClE,GAAIC,GAAmBngE,OAAOjE,KAAK+O,QAAQ0vC,UAAYz+C,KAAK6/D,YAC5D,IAAI11C,GAAQi6C,GAAoBpkE,KAAK+O,QAAQ+vC,kBAAoB,EAAG,CAClE,GAAIL,GAAWx6C,OAAOjE,KAAK+O,QAAQ0vC,SAG/B2lB,IAAoBpkE,KAAK+O,QAAQmwC,qBACnCT,EAAWx6C,OAAOjE,KAAK+O,QAAQmwC,oBAAsBl/C,KAAKy5D,gBAI5D,IAAIjb,GAAYx+C,KAAK+O,QAAQyvC,WAAa,UACtC6lB,EAAcrkE,KAAK+O,QAAQ8vC,eAC/B,IAAIulB,GAAoBpkE,KAAK+O,QAAQ+vC,kBAAmB,CACtD,GAAIzzC,GAAU7G,KAAKJ,IAAI,EAAEI,KAAKL,IAAI,EAAE,GAAKnE,KAAK+O,QAAQ+vC,kBAAoBslB,IAC1E5lB,GAAc79C,EAAKwK,gBAAgBqzC,EAAanzC,GAChDg5D,EAAc1jE,EAAKwK,gBAAgBk5D,EAAah5D,GAIlDuc,EAAIQ,MAAQpoB,KAAKylC,SAAW,QAAU,IAAMgZ,EAAW,MAAQz+C,KAAK+O,QAAQ2vC,QAE5E,IAAIhU,GAAQvgB,EAAK7hB,MAAM,MACnB4xD,EAAYxvB,EAAM1kC,OAClB+wD,EAAQzkD,GAAK,EAAI4nD,GAAa,EAAIzb,CAChB,IAAlB0lB,IACFpN,EAAQzkD,GAAK,EAAI4nD,IAAc,EAAIzb,GAKrC,KAAK,GADDtrC,GAAQyU,EAAIuyC,YAAYzvB,EAAM,IAAIv3B,MAC7BtN,EAAI,EAAOq0D,EAAJr0D,EAAeA,IAAK,CAClC,GAAIsiB,GAAYP,EAAIuyC,YAAYzvB,EAAM7kC,IAAIsN,KAC1CA,GAAQgV,EAAYhV,EAAQgV,EAAYhV,EAE1C,GAAIC,GAASqrC,EAAWyb,EACpBryD,EAAOwK,EAAIc,EAAQ,EACnBlL,EAAMqK,EAAIc,EAAS,CACP,YAAZ8wD,IACFj8D,GAAO,GAAMw2C,EACbx2C,GAAO,EACP8uD,GAAS,GAEX/2D,KAAK82D,iBAAmB7uD,IAAIA,EAAIJ,KAAKA,EAAKsL,MAAMA,EAAMC,OAAOA,EAAO2jD,MAAMA,GAG5ClwD,SAA1B7G,KAAK+O,QAAQ4vC,UAAoD,OAA1B3+C,KAAK+O,QAAQ4vC,UAA+C,SAA1B3+C,KAAK+O,QAAQ4vC,WACxF/2B,EAAIiB,UAAY7oB,KAAK+O,QAAQ4vC,SAC7B/2B,EAAI8yC,SAAS7yD,EAAMI,EAAKkL,EAAOC,IAIjCwU,EAAIiB,UAAY21B,EAChB52B,EAAIuB,UAAY2e,GAAS,SACzBlgB,EAAIwB,aAAe86C,GAAY,SAC3BlkE,KAAK+O,QAAQ6vC,gBAAkB,IACjCh3B,EAAIO,UAAcnoB,KAAK+O,QAAQ6vC,gBAC/Bh3B,EAAIY,YAAc67C,EAClBz8C,EAAI+yC,SAAc,QAEpB,KAAK,GAAI90D,GAAI,EAAOq0D,EAAJr0D,EAAeA,IAC1B7F,KAAK+O,QAAQ6vC,iBACdh3B,EAAIgzC,WAAWlwB,EAAM7kC,GAAIwM,EAAG0kD,GAE9BnvC,EAAIyB,SAASqhB,EAAM7kC,GAAIwM,EAAG0kD,GAC1BA,GAAStY,IAMfl7C,EAAKwQ,UAAU6uD,YAAc,SAASh7C,GACpC,GAAmB/gB,SAAf7G,KAAK6S,MAAqB,CAC5B,GAAI4rC,GAAWx6C,OAAOjE,KAAK+O,QAAQ0vC,SAC/BA,GAAWz+C,KAAK6/D,aAAe7/D,KAAK+O,QAAQmwC,qBAC9CT,EAAWx6C,OAAOjE,KAAK+O,QAAQmwC,oBAAsBl/C,KAAKy5D,iBAE5D7xC,EAAIQ,MAAQpoB,KAAKylC,SAAW,QAAU,IAAMgZ,EAAW,MAAQz+C,KAAK+O,QAAQ2vC,QAM5E,KAAK,GAJDhU,GAAQ1qC,KAAK6S,MAAMvK,MAAM,MACzB8K,GAAUqrC,EAAW,GAAK/T,EAAM1kC,OAChCmN,EAAQ,EAEHtN,EAAI,EAAGi8B,EAAO4I,EAAM1kC,OAAY87B,EAAJj8B,EAAUA,IAC7CsN,EAAQ3O,KAAKJ,IAAI+O,EAAOyU,EAAIuyC,YAAYzvB,EAAM7kC,IAAIsN,MAGpD,QAAQA,MAASA,EAAOC,OAAUA,EAAQ8mD,UAAWxvB,EAAM1kC,QAG3D,OAAQmN,MAAS,EAAGC,OAAU,EAAG8mD,UAAW,IAUhD32D,EAAKwQ,UAAU2+C,OAAS,WACtB,MAAmB7rD,UAAf7G,KAAKmT,MACDnT,KAAKqS,EAAIrS,KAAKmT,MAAOnT,KAAKy5D,iBAAoBz5D,KAAK2lD,cAActzC,GACjErS,KAAKqS,EAAIrS,KAAKmT,MAAOnT,KAAKy5D,gBAAoBz5D,KAAK4lD,kBAAkBvzC,GACrErS,KAAKsS,EAAItS,KAAKoT,OAAOpT,KAAKy5D,iBAAoBz5D,KAAK2lD,cAAcrzC,GACjEtS,KAAKsS,EAAItS,KAAKoT,OAAOpT,KAAKy5D,gBAAoBz5D,KAAK4lD,kBAAkBtzC,GAGpE,GAQX/O,EAAKwQ,UAAUuwD,OAAS,WACtB,MAAQtkE,MAAKqS,GAAKrS,KAAK2lD,cAActzC,GAC7BrS,KAAKqS,EAAIrS,KAAK4lD,kBAAkBvzC,GAChCrS,KAAKsS,GAAKtS,KAAK2lD,cAAcrzC,GAC7BtS,KAAKsS,EAAItS,KAAK4lD,kBAAkBtzC,GAW1C/O,EAAKwQ,UAAU0+C,eAAiB,SAASluD,EAAMohD,EAAcC,GAC3D5lD,KAAKy5D,gBAAkB,EAAIl1D,EAC3BvE,KAAK6/D,aAAet7D,EACpBvE,KAAK2lD,cAAgBA,EACrB3lD,KAAK4lD,kBAAoBA,GAS3BriD,EAAKwQ,UAAUkwB,SAAW,SAAS1/B,GACjCvE,KAAKy5D,gBAAkB,EAAIl1D,EAC3BvE,KAAK6/D,aAAet7D,GAQtBhB,EAAKwQ,UAAUwwD,cAAgB,WAC7BvkE,KAAKo/D,GAAK,EACVp/D,KAAKq/D,GAAK,GASZ97D,EAAKwQ,UAAUywD,eAAiB,SAASC,GACvC,GAAIC,GAAe1kE,KAAKo/D,GAAKp/D,KAAKo/D,GAAKqF,CAEvCzkE,MAAKo/D,GAAK56D,KAAK6rB,KAAKq0C,EAAa1kE,KAAK+O,QAAQovC,MAC9CumB,EAAe1kE,KAAKq/D,GAAKr/D,KAAKq/D,GAAKoF,EAEnCzkE,KAAKq/D,GAAK76D,KAAK6rB,KAAKq0C,EAAa1kE,KAAK+O,QAAQovC,OAGhDt+C,EAAOD,QAAU2D,GAKb,SAAS1D,GAWb,QAAS2D,GAAM6W,EAAWhI,EAAGC,EAAG6X,EAAM5c,GAElCvN,KAAKqa,UADHA,EACeA,EAGAxI,SAASujB,KAIdvuB,SAAV0G,IACe,gBAAN8E,IACT9E,EAAQ8E,EACRA,EAAIxL,QACqB,gBAATsjB,IAChB5c,EAAQ4c,EACRA,EAAOtjB,QAGP0G,GACEixC,UAAW,QACXC,SAAU,GACVC,SAAU,UACVtzC,OACEuB,OAAQ,OACRD,WAAY,aAMpB1M,KAAKqS,EAAI,EACTrS,KAAKsS,EAAI,EACTtS,KAAK6kB,QAAU,EACf7kB,KAAK+5B,QAAS,EAEJlzB,SAANwL,GAAyBxL,SAANyL,GACrBtS,KAAK+uD,YAAY18C,EAAGC,GAETzL,SAATsjB,GACFnqB,KAAKmwD,QAAQhmC,GAIfnqB,KAAKmgB,MAAQtO,SAASM,cAAc,OACpCnS,KAAKmgB,MAAM/X,UAAY,kBACvBpI,KAAKmgB,MAAM5S,MAAMnC,MAAkBmC,EAAMixC,UACzCx+C,KAAKmgB,MAAM5S,MAAMiT,gBAAkBjT,EAAMnC,MAAMsB,WAC/C1M,KAAKmgB,MAAM5S,MAAMqT,YAAkBrT,EAAMnC,MAAMuB,OAC/C3M,KAAKmgB,MAAM5S,MAAMkxC,SAAkBlxC,EAAMkxC,SAAW,KACpDz+C,KAAKmgB,MAAM5S,MAAMo3D,WAAkBp3D,EAAMmxC,SACzC1+C,KAAKqa,UAAUtI,YAAY/R,KAAKmgB,OAOlC3c,EAAMuQ,UAAUg7C,YAAc,SAAS18C,EAAGC,GACxCtS,KAAKqS,EAAInH,SAASmH,GAClBrS,KAAKsS,EAAIpH,SAASoH,IAOpB9O,EAAMuQ,UAAUo8C,QAAU,SAASn9C,GAC7BA,YAAmB8zB,UACrB9mC,KAAKmgB,MAAM2E,UAAY,GACvB9kB,KAAKmgB,MAAMpO,YAAYiB,IAGvBhT,KAAKmgB,MAAM2E,UAAY9R,GAQ3BxP,EAAMuQ,UAAUkyB,KAAO,SAAUA,GAK/B,GAJap/B,SAATo/B,IACFA,GAAO,GAGLA,EAAM,CACR,GAAI7yB,GAASpT,KAAKmgB,MAAMuF,aACpBvS,EAASnT,KAAKmgB,MAAME,YACpB4U,EAAYj1B,KAAKmgB,MAAMhW,WAAWub,aAClCuiB,EAAWjoC,KAAKmgB,MAAMhW,WAAWkW,YAEjCpY,EAAOjI,KAAKsS,EAAIc,CAChBnL,GAAMmL,EAASpT,KAAK6kB,QAAUoQ,IAChChtB,EAAMgtB,EAAY7hB,EAASpT,KAAK6kB,SAE9B5c,EAAMjI,KAAK6kB,UACb5c,EAAMjI,KAAK6kB,QAGb,IAAIhd,GAAO7H,KAAKqS,CACZxK,GAAOsL,EAAQnT,KAAK6kB,QAAUojB,IAChCpgC,EAAOogC,EAAW90B,EAAQnT,KAAK6kB,SAE7Bhd,EAAO7H,KAAK6kB,UACdhd,EAAO7H,KAAK6kB,SAGd7kB,KAAKmgB,MAAM5S,MAAM1F,KAAOA,EAAO,KAC/B7H,KAAKmgB,MAAM5S,MAAMtF,IAAMA,EAAM,KAC7BjI,KAAKmgB,MAAM5S,MAAM8qB,WAAa,UAC9Br4B,KAAK+5B,QAAS,MAGd/5B,MAAKgmC,QAOTxiC,EAAMuQ,UAAUiyB,KAAO,WACrBhmC,KAAK+5B,QAAS,EACd/5B,KAAKmgB,MAAM5S,MAAM8qB,WAAa,UAGhCx4B,EAAOD,QAAU4D,GAKb,SAAS3D,EAAQD,GAarB,QAASglE,GAAUtxD,GAEjB,MADAid,GAAMjd,EACCuxD,IAoCT,QAAS3hC,KACPx6B,EAAQ,EACRjI,EAAI8vB,EAAItK,OAAO,GAQjB,QAASiD,KACPxgB,IACAjI,EAAI8vB,EAAItK,OAAOvd,GAOjB,QAASo8D,KACP,MAAOv0C,GAAItK,OAAOvd,EAAQ,GAS5B,QAASq8D,GAAetkE,GACtB,MAAOukE,GAAkB12D,KAAK7N,GAShC,QAASwkE,GAAOr/D,EAAGa,GAKjB,GAJKb,IACHA,MAGEa,EACF,IAAK,GAAIoQ,KAAQpQ,GACXA,EAAEN,eAAe0Q,KACnBjR,EAAEiR,GAAQpQ,EAAEoQ,GAIlB,OAAOjR,GAeT,QAAS4S,GAASoL,EAAKurB,EAAM7qC,GAG3B,IAFA,GAAIoJ,GAAOyhC,EAAK7mC,MAAM,KAClB48D,EAAIthD,EACDlW,EAAK1H,QAAQ,CAClB,GAAIiD,GAAMyE,EAAKkE,OACXlE,GAAK1H,QAEFk/D,EAAEj8D,KACLi8D,EAAEj8D,OAEJi8D,EAAIA,EAAEj8D,IAINi8D,EAAEj8D,GAAO3E,GAWf,QAAS6gE,GAAQzzC,EAAOg2B,GAOtB,IANA,GAAI7hD,GAAGC,EACH60B,EAAU,KAGVyqC,GAAU1zC,GACVhyB,EAAOgyB,EACJhyB,EAAK8lC,QACV4/B,EAAO78D,KAAK7I,EAAK8lC,QACjB9lC,EAAOA,EAAK8lC,MAId,IAAI9lC,EAAKw+C,MACP,IAAKr4C,EAAI,EAAGC,EAAMpG,EAAKw+C,MAAMl4C,OAAYF,EAAJD,EAASA,IAC5C,GAAI6hD,EAAKrnD,KAAOX,EAAKw+C,MAAMr4C,GAAGxF,GAAI,CAChCs6B,EAAUj7B,EAAKw+C,MAAMr4C,EACrB,OAiBN,IAZK80B,IAEHA,GACEt6B,GAAIqnD,EAAKrnD,IAEPqxB,EAAMg2B,OAER/sB,EAAQ0qC,KAAOJ,EAAMtqC,EAAQ0qC,KAAM3zC,EAAMg2B,QAKxC7hD,EAAIu/D,EAAOp/D,OAAS,EAAGH,GAAK,EAAGA,IAAK,CACvC,GAAImF,GAAIo6D,EAAOv/D,EAEVmF,GAAEkzC,QACLlzC,EAAEkzC,UAE4B,IAA5BlzC,EAAEkzC,MAAMl3C,QAAQ2zB,IAClB3vB,EAAEkzC,MAAM31C,KAAKoyB,GAKb+sB,EAAK2d,OACP1qC,EAAQ0qC,KAAOJ,EAAMtqC,EAAQ0qC,KAAM3d,EAAK2d,OAS5C,QAASC,GAAQ5zC,EAAOq+B,GAKtB,GAJKr+B,EAAM2tB,QACT3tB,EAAM2tB,UAER3tB,EAAM2tB,MAAM92C,KAAKwnD,GACbr+B,EAAMq+B,KAAM,CACd,GAAIsV,GAAOJ,KAAUvzC,EAAMq+B,KAC3BA,GAAKsV,KAAOJ,EAAMI,EAAMtV,EAAKsV,OAajC,QAASE,GAAW7zC,EAAO1H,EAAMC,EAAI9iB,EAAMk+D,GACzC,GAAItV,IACF/lC,KAAMA,EACNC,GAAIA,EACJ9iB,KAAMA,EAQR,OALIuqB,GAAMq+B,OACRA,EAAKsV,KAAOJ,KAAUvzC,EAAMq+B,OAE9BA,EAAKsV,KAAOJ,EAAMlV,EAAKsV,SAAYA,GAE5BtV,EAOT,QAASyV,KAKP,IAJAC,EAAYC,EAAUC,KACtBC,EAAQ,GAGI,KAALnlE,GAAiB,KAALA,GAAkB,MAALA,GAAkB,MAALA,GAC3CyoB,GAGF,GAAG,CACD,GAAI28C,IAAY,CAGhB,IAAS,KAALplE,EAAU,CAGZ,IADA,GAAIoF,GAAI6C,EAAQ,EACQ,KAAjB6nB,EAAItK,OAAOpgB,IAA8B,KAAjB0qB,EAAItK,OAAOpgB,IACxCA,GAEF,IAAqB,MAAjB0qB,EAAItK,OAAOpgB,IAA+B,IAAjB0qB,EAAItK,OAAOpgB,GAAU,CAEhD,KAAY,IAALpF,GAAgB,MAALA,GAChByoB,GAEF28C,IAAY,GAGhB,GAAS,KAALplE,GAA6B,KAAjBqkE,IAAsB,CAEpC,KAAY,IAALrkE,GAAgB,MAALA,GAChByoB,GAEF28C,IAAY,EAEd,GAAS,KAALplE,GAA6B,KAAjBqkE,IAAsB,CAEpC,KAAY,IAALrkE,GAAS,CACd,GAAS,KAALA,GAA6B,KAAjBqkE,IAAsB,CAEpC57C,IACAA,GACA,OAGAA,IAGJ28C,GAAY,EAId,KAAY,KAALplE,GAAiB,KAALA,GAAkB,MAALA,GAAkB,MAALA,GAC3CyoB,UAGG28C,EAGP,IAAS,IAALplE,EAGF,YADAglE,EAAYC,EAAUI,UAKxB,IAAIC,GAAKtlE,EAAIqkE,GACb,IAAIkB,EAAWD,GAKb,MAJAN,GAAYC,EAAUI,UACtBF,EAAQG,EACR78C,QACAA,IAKF,IAAI88C,EAAWvlE,GAIb,MAHAglE,GAAYC,EAAUI,UACtBF,EAAQnlE,MACRyoB,IAMF,IAAI67C,EAAetkE,IAAW,KAALA,EAAU,CAIjC,IAHAmlE,GAASnlE,EACTyoB,IAEO67C,EAAetkE,IACpBmlE,GAASnlE,EACTyoB,GAYF,OAVa,SAAT08C,EACFA,GAAQ,EAEQ,QAATA,EACPA,GAAQ,EAEA5gE,MAAMf,OAAO2hE,MACrBA,EAAQ3hE,OAAO2hE,SAEjBH,EAAYC,EAAUO,YAKxB,GAAS,KAALxlE,EAAU,CAEZ,IADAyoB,IACY,IAALzoB,IAAiB,KAALA,GAAkB,KAALA,GAA6B,KAAjBqkE,MAC1Cc,GAASnlE,EACA,KAALA,GACFyoB,IAEFA,GAEF,IAAS,KAALzoB,EACF,KAAMylE,GAAe,2BAIvB,OAFAh9C,UACAu8C,EAAYC,EAAUO,YAMxB,IADAR,EAAYC,EAAUS,QACV,IAAL1lE,GACLmlE,GAASnlE,EACTyoB,GAEF,MAAM,IAAI5O,aAAY,yBAA2B8rD,EAAKR,EAAO,IAAM,KAOrE,QAASf,KACP,GAAInzC,KAwBJ,IAtBAwR,IACAsiC,IAGa,UAATI,IACFl0C,EAAM20C,QAAS,EACfb,MAIW,SAATI,GAA6B,WAATA,KACtBl0C,EAAMvqB,KAAOy+D,EACbJ,KAIEC,GAAaC,EAAUO,aACzBv0C,EAAMrxB,GAAKulE,EACXJ,KAIW,KAATI,EACF,KAAMM,GAAe,2BAQvB,IANAV,IAGAc,EAAgB50C,GAGH,KAATk0C,EACF,KAAMM,GAAe,2BAKvB,IAHAV,IAGc,KAAVI,EACF,KAAMM,GAAe,uBASvB,OAPAV,WAGO9zC,GAAMg2B,WACNh2B,GAAMq+B,WACNr+B,GAAMA,MAENA,EAOT,QAAS40C,GAAiB50C,GACxB,KAAiB,KAAVk0C,GAAyB,KAATA,GACrBW,EAAe70C,GACF,KAATk0C,GACFJ,IAWN,QAASe,GAAe70C,GAEtB,GAAI80C,GAAWC,EAAc/0C,EAC7B,IAAI80C,EAIF,WAFAE,GAAUh1C,EAAO80C,EAMnB,IAAInB,GAAOsB,EAAwBj1C,EACnC,KAAI2zC,EAAJ,CAKA,GAAII,GAAaC,EAAUO,WACzB,KAAMC,GAAe,sBAEvB,IAAI7lE,GAAKulE,CAGT,IAFAJ,IAEa,KAATI,EAAc,CAGhB,GADAJ,IACIC,GAAaC,EAAUO,WACzB,KAAMC,GAAe,sBAEvBx0C,GAAMrxB,GAAMulE,EACZJ,QAIAoB,GAAmBl1C,EAAOrxB,IAS9B,QAASomE,GAAe/0C,GACtB,GAAI80C,GAAW,IAgBf,IAba,YAATZ,IACFY,KACAA,EAASr/D,KAAO,WAChBq+D,IAGIC,GAAaC,EAAUO,aACzBO,EAASnmE,GAAKulE,EACdJ,MAKS,KAATI,EAAc,CAehB,GAdAJ,IAEKgB,IACHA,MAEFA,EAAShhC,OAAS9T,EAClB80C,EAAS9e,KAAOh2B,EAAMg2B,KACtB8e,EAASzW,KAAOr+B,EAAMq+B,KACtByW,EAAS90C,MAAQA,EAAMA,MAGvB40C,EAAgBE,GAGH,KAATZ,EACF,KAAMM,GAAe,2BAEvBV,WAGOgB,GAAS9e,WACT8e,GAASzW,WACTyW,GAAS90C,YACT80C,GAAShhC,OAGX9T,EAAMm1C,YACTn1C,EAAMm1C,cAERn1C,EAAMm1C,UAAUt+D,KAAKi+D,GAGvB,MAAOA,GAYT,QAASG,GAAyBj1C,GAEhC,MAAa,QAATk0C,GACFJ,IAGA9zC,EAAMg2B,KAAOof,IACN,QAES,QAATlB,GACPJ,IAGA9zC,EAAMq+B,KAAO+W,IACN,QAES,SAATlB,GACPJ,IAGA9zC,EAAMA,MAAQo1C,IACP,SAGF,KAQT,QAASF,GAAmBl1C,EAAOrxB,GAEjC,GAAIqnD,IACFrnD,GAAIA,GAEFglE,EAAOyB,GACPzB,KACF3d,EAAK2d,KAAOA,GAEdF,EAAQzzC,EAAOg2B,GAGfgf,EAAUh1C,EAAOrxB,GAQnB,QAASqmE,GAAUh1C,EAAO1H,GACxB,KAAgB,MAAT47C,GAA0B,MAATA,GAAe,CACrC,GAAI37C,GACA9iB,EAAOy+D,CACXJ,IAEA,IAAIgB,GAAWC,EAAc/0C,EAC7B,IAAI80C,EACFv8C,EAAKu8C,MAEF,CACH,GAAIf,GAAaC,EAAUO,WACzB,KAAMC,GAAe,kCAEvBj8C,GAAK27C,EACLT,EAAQzzC,GACNrxB,GAAI4pB,IAENu7C,IAIF,GAAIH,GAAOyB,IAGP/W,EAAOwV,EAAW7zC,EAAO1H,EAAMC,EAAI9iB,EAAMk+D,EAC7CC,GAAQ5zC,EAAOq+B,GAEf/lC,EAAOC,GASX,QAAS68C,KAGP,IAFA,GAAIzB,GAAO,KAEK,KAATO,GAAc,CAGnB,IAFAJ,IACAH,KACiB,KAAVO,GAAyB,KAATA,GAAc,CACnC,GAAIH,GAAaC,EAAUO,WACzB,KAAMC,GAAe,0BAEvB,IAAIrvD,GAAO+uD,CAGX,IADAJ,IACa,KAATI,EACF,KAAMM,GAAe,wBAIvB,IAFAV,IAEIC,GAAaC,EAAUO,WACzB,KAAMC,GAAe,2BAEvB,IAAI5hE,GAAQshE,CACZptD,GAAS6sD,EAAMxuD,EAAMvS,GAErBkhE,IACY,KAARI,GACFJ,IAIJ,GAAa,KAATI,EACF,KAAMM,GAAe,qBAEvBV,KAGF,MAAOH,GAQT,QAASa,GAAea,GACtB,MAAO,IAAIzsD,aAAYysD,EAAU,UAAYX,EAAKR,EAAO,IAAM,WAAal9D,EAAQ,KAStF,QAAS09D,GAAMj8C,EAAM68C,GACnB,MAAQ78C,GAAKnkB,QAAUghE,EAAa78C,EAAQA,EAAK5e,OAAO,EAAG,IAAM,MASnE,QAAS07D,GAASC,EAAQC,EAAQntD,GAC5B1T,MAAMC,QAAQ2gE,GAChBA,EAAOt+D,QAAQ,SAAUw+D,GACnB9gE,MAAMC,QAAQ4gE,GAChBA,EAAOv+D,QAAQ,SAAUy+D,GACvBrtD,EAAGotD,EAAOC,KAIZrtD,EAAGotD,EAAOD,KAKV7gE,MAAMC,QAAQ4gE,GAChBA,EAAOv+D,QAAQ,SAAUy+D,GACvBrtD,EAAGktD,EAAQG,KAIbrtD,EAAGktD,EAAQC,GAWjB,QAAShe,GAAY71C,GAEnB,GAAI41C,GAAU0b,EAAStxD,GACnBg0D,GACFppB,SACAmB,SACAtwC,WAmBF,IAfIm6C,EAAQhL,OACVgL,EAAQhL,MAAMt1C,QAAQ,SAAU2+D,GAC9B,GAAIC,IACFnnE,GAAIknE,EAAQlnE,GACZwS,MAAOnO,OAAO6iE,EAAQ10D,OAAS00D,EAAQlnE,IAEzC4kE,GAAMuC,EAAWD,EAAQlC,MACrBmC,EAAUjpB,QACZipB,EAAUlpB,MAAQ,SAEpBgpB,EAAUppB,MAAM31C,KAAKi/D,KAKrBte,EAAQ7J,MAAO,CAMjB,GAAIooB,GAAc,SAAUC,GAC1B,GAAIC,IACF39C,KAAM09C,EAAQ19C,KACdC,GAAIy9C,EAAQz9C,GAId,OAFAg7C,GAAM0C,EAAWD,EAAQrC,MACzBsC,EAAUp6D,MAAyB,MAAhBm6D,EAAQvgE,KAAgB,QAAU,OAC9CwgE,EAGTze,GAAQ7J,MAAMz2C,QAAQ,SAAU8+D,GAC9B,GAAI19C,GAAMC,CAERD,GADE09C,EAAQ19C,eAAgBpjB,QACnB8gE,EAAQ19C,KAAKk0B,OAIlB79C,GAAIqnE,EAAQ19C,MAKdC,EADEy9C,EAAQz9C,aAAcrjB,QACnB8gE,EAAQz9C,GAAGi0B,OAId79C,GAAIqnE,EAAQz9C,IAIZy9C,EAAQ19C,eAAgBpjB,SAAU8gE,EAAQ19C,KAAKq1B,OACjDqoB,EAAQ19C,KAAKq1B,MAAMz2C,QAAQ,SAAUg/D,GACnC,GAAID,GAAYF,EAAYG,EAC5BN,GAAUjoB,MAAM92C,KAAKo/D,KAIzBV,EAASj9C,EAAMC,EAAI,SAAUD,EAAMC,GACjC,GAAI29C,GAAUrC,EAAW+B,EAAWt9C,EAAK3pB,GAAI4pB,EAAG5pB,GAAIqnE,EAAQvgE,KAAMugE,EAAQrC,MACtEsC,EAAYF,EAAYG,EAC5BN,GAAUjoB,MAAM92C,KAAKo/D,KAGnBD,EAAQz9C,aAAcrjB,SAAU8gE,EAAQz9C,GAAGo1B,OAC7CqoB,EAAQz9C,GAAGo1B,MAAMz2C,QAAQ,SAAUg/D,GACjC,GAAID,GAAYF,EAAYG,EAC5BN,GAAUjoB,MAAM92C,KAAKo/D,OAW7B,MAJIze,GAAQmc,OACViC,EAAUv4D,QAAUm6C,EAAQmc,MAGvBiC,EAnyBT,GAAI5B,IACFC,KAAO,EACPG,UAAY,EACZG,WAAY,EACZE,QAAU,GAIRH,GACF6B,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EAELC,MAAM,EACNC,MAAM,GAGJ93C,EAAM,GACN7nB,EAAQ,EACRjI,EAAI,GACJmlE,EAAQ,GACRH,EAAYC,EAAUC,KAmCtBX,EAAoB,iBA2uBxBplE,GAAQglE,SAAWA,EACnBhlE,EAAQupD,WAAaA,GAKjB,SAAStpD,EAAQD,GAGrB,QAAS0pD,GAAWgf,EAAWv5D,GAC7B,GAAIswC,MACAnB,IACJl+C,MAAK+O,SACHswC,OACEQ,cAAc,GAEhB3B,OACEqqB,eAAe,EACf18D,YAAY,IAIAhF,SAAZkI,IACF/O,KAAK+O,QAAQmvC,MAAqB,cAAInvC,EAAQw5D,eAAgB,EAC9DvoE,KAAK+O,QAAQmvC,MAAkB,WAAOnvC,EAAQlD,YAAgB,EAC9D7L,KAAK+O,QAAQswC,MAAoB,aAAKtwC,EAAQ8wC,cAAgB,EAKhE,KAAK,GAFD2oB,GAASF,EAAUjpB,MACnBopB,EAASH,EAAUpqB,MACdr4C,EAAI,EAAGA,EAAI2iE,EAAOxiE,OAAQH,IAAK,CACtC,GAAIkqD,MACA2Y,EAAQF,EAAO3iE,EACnBkqD,GAAS,GAAI2Y,EAAMroE,GACnB0vD,EAAW,KAAI2Y,EAAMC,OACrB5Y,EAAS,GAAI2Y,EAAM1+D,OACnB+lD,EAAiB,WAAI2Y,EAAMvhC,WAG3B4oB,EAAY,MAAI2Y,EAAMt9D,MACtB2kD,EAAmB,aAAsBlpD,SAAlBkpD,EAAY,OAAkB,EAAQ/vD,KAAK+O,QAAQ8wC,aAC1ER,EAAM92C,KAAKwnD,GAGb,IAAK,GAAIlqD,GAAI,EAAGA,EAAI4iE,EAAOziE,OAAQH,IAAK,CACtC,GAAI6hD,MACAkhB,EAAQH,EAAO5iE,EACnB6hD,GAAS,GAAIkhB,EAAMvoE,GACnBqnD,EAAiB,WAAIkhB,EAAMzhC,WAC3BugB,EAAQ,EAAIkhB,EAAMv2D,EAClBq1C,EAAQ,EAAIkhB,EAAMt2D,EAClBo1C,EAAY,MAAIkhB,EAAM/1D,MAEpB60C,EAAY,MADuB,GAAjC1nD,KAAK+O,QAAQmvC,MAAMryC,WACL+8D,EAAMx9D,MAGUvE,SAAhB+hE,EAAMx9D,OAAuBsB,WAAWk8D,EAAMx9D,MAAOuB,OAAOi8D,EAAMx9D,OAASvE,OAE7F6gD,EAAa,OAAIkhB,EAAMh2D,KACvB80C,EAAqB,eAAI1nD,KAAK+O,QAAQmvC,MAAMqqB,cAC5C7gB,EAAqB,eAAI1nD,KAAK+O,QAAQmvC,MAAMqqB,cAC5CrqB,EAAM31C,KAAKm/C,GAGb,OAAQxJ,MAAMA,EAAOmB,MAAMA,GAG7Bz/C,EAAQ0pD,WAAaA,GAIjB,SAASzpD,EAAQD,EAASM,GAI9BL,EAAOD,QAA6B,mBAAXkI,SAA2BA,OAAe,QAAK5H,EAAoB,KAKxF,SAASL,EAAQD,EAASM,GAK5BL,EAAOD,QADa,mBAAXkI,QACQA,OAAe,QAAK5H,EAAoB,IAGxC,WACf,KAAM0D,OAAM,+DAOZ,SAAS/D,EAAQD,EAASM,GAqB9B,QAAS22B,MAnBT,GAAIhZ,GAAU3d,EAAoB,IAC9B0lC,EAAS1lC,EAAoB,IAC7BS,EAAOT,EAAoB,GAK3B+C,GAJU/C,EAAoB,GACnBA,EAAoB,GACvBA,EAAoB,IAClBA,EAAoB,IACnBA,EAAoB,KAC/B+mD,EAAY/mD,EAAoB,IAChCyB,EAAWzB,EAAoB,IAC/BuC,EAAavC,EAAoB,GAYrC2d,GAAQgZ,EAAK9iB,WASb8iB,EAAK9iB,UAAUohB,QAAU,SAAU9a,GACjCra,KAAKwwB,OAELxwB,KAAKwwB,IAAI9wB,KAAuBmS,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI9jB,WAAuBmF,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI0Y,mBAAuBr3B,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI0b,qBAAuBr6B,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIkI,gBAAuB7mB,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIq4C,cAAuBh3D,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIs4C,eAAuBj3D,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI5D,OAAuB/a,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI3oB,KAAuBgK,SAASM,cAAc,OACvDnS,KAAKwwB,IAAItI,MAAuBrW,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIvoB,IAAuB4J,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIrM,OAAuBtS,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIu4C,UAAuBl3D,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIw4C,aAAuBn3D,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIy4C,cAAuBp3D,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI04C,iBAAuBr3D,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI24C,eAAuBt3D,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI44C,kBAAuBv3D,SAASM,cAAc,OAEvDnS,KAAKwwB,IAAI9wB,KAAK0I,UAA4B,oBAC1CpI,KAAKwwB,IAAI9jB,WAAWtE,UAAsB,sBAC1CpI,KAAKwwB,IAAI0Y,mBAAmB9gC,UAAc,+BAC1CpI,KAAKwwB,IAAI0b,qBAAqB9jC,UAAY,iCAC1CpI,KAAKwwB,IAAIkI,gBAAgBtwB,UAAiB,kBAC1CpI,KAAKwwB,IAAIq4C,cAAczgE,UAAmB,gBAC1CpI,KAAKwwB,IAAIs4C,eAAe1gE,UAAkB,iBAC1CpI,KAAKwwB,IAAIvoB,IAAIG,UAA6B,eAC1CpI,KAAKwwB,IAAIrM,OAAO/b,UAA0B,kBAC1CpI,KAAKwwB,IAAI3oB,KAAKO,UAA4B,UAC1CpI,KAAKwwB,IAAI5D,OAAOxkB,UAA0B,UAC1CpI,KAAKwwB,IAAItI,MAAM9f,UAA2B,UAC1CpI,KAAKwwB,IAAIu4C,UAAU3gE,UAAuB,aAC1CpI,KAAKwwB,IAAIw4C,aAAa5gE,UAAoB,gBAC1CpI,KAAKwwB,IAAIy4C,cAAc7gE,UAAmB,aAC1CpI,KAAKwwB,IAAI04C,iBAAiB9gE,UAAgB,gBAC1CpI,KAAKwwB,IAAI24C,eAAe/gE,UAAkB,aAC1CpI,KAAKwwB,IAAI44C,kBAAkBhhE,UAAe,gBAE1CpI,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAI9jB,YACnC1M,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAI0Y,oBACnClpC,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAI0b,sBACnClsC,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAIkI,iBACnC14B,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAIq4C,eACnC7oE,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAIs4C,gBACnC9oE,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAIvoB,KACnCjI,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAIrM,QAEnCnkB,KAAKwwB,IAAIkI,gBAAgB3mB,YAAY/R,KAAKwwB,IAAI5D,QAC9C5sB,KAAKwwB,IAAIq4C,cAAc92D,YAAY/R,KAAKwwB,IAAI3oB,MAC5C7H,KAAKwwB,IAAIs4C,eAAe/2D,YAAY/R,KAAKwwB,IAAItI,OAE7CloB,KAAKwwB,IAAIkI,gBAAgB3mB,YAAY/R,KAAKwwB,IAAIu4C,WAC9C/oE,KAAKwwB,IAAIkI,gBAAgB3mB,YAAY/R,KAAKwwB,IAAIw4C,cAC9ChpE,KAAKwwB,IAAIq4C,cAAc92D,YAAY/R,KAAKwwB,IAAIy4C,eAC5CjpE,KAAKwwB,IAAIq4C,cAAc92D,YAAY/R,KAAKwwB,IAAI04C,kBAC5ClpE,KAAKwwB,IAAIs4C,eAAe/2D,YAAY/R,KAAKwwB,IAAI24C,gBAC7CnpE,KAAKwwB,IAAIs4C,eAAe/2D,YAAY/R,KAAKwwB,IAAI44C,mBAE7CppE,KAAKmU,GAAG,cAAenU,KAAK42B,QAAQrB,KAAKv1B,OACzCA,KAAKmU,GAAG,QAASnU,KAAKk/B,SAAS3J,KAAKv1B,OACpCA,KAAKmU,GAAG,QAASnU,KAAKm/B,SAAS5J,KAAKv1B,OACpCA,KAAKmU,GAAG,YAAanU,KAAK6+B,aAAatJ,KAAKv1B,OAC5CA,KAAKmU,GAAG,OAAQnU,KAAK8+B,QAAQvJ,KAAKv1B,MAElC,IAAI+U,GAAK/U,IACTA,MAAKmU,GAAG,SAAU,SAAU+8C,GACtBA,GAAkC,GAApBA,EAAWl9C,MAEtBe,EAAGs0D,eACNt0D,EAAGs0D,aAAejvD,WAAW,WAC3BrF,EAAGs0D,aAAe,KAClBt0D,EAAG6hB,WACF,IAKL7hB,EAAG6hB,YAMP52B,KAAK8D,OAAS8hC,EAAO5lC,KAAKwwB,IAAI9wB,MAC5BkK,gBAAgB,IAElB5J,KAAKspE,YAEL,IAAIC,IACF,QAAS,QACT,MAAO,YAAa,OACpB,YAAa,OAAQ,UACrB,aAAc,iBAkChB,IAhCAA,EAAO3gE,QAAQ,SAAUiB,GACvB,GAAIR,GAAW,WACb,GAAI0Q,IAAQlQ,GAAO+K,OAAOtO,MAAMyN,UAAUnI,MAAMrL,KAAKwF,UAAW,GAC5DgP,GAAG42C,YACL52C,EAAGuZ,KAAK3V,MAAM5D,EAAIgF,GAGtBhF,GAAGjR,OAAOqQ,GAAGtK,EAAOR,GACpB0L,EAAGu0D,UAAUz/D,GAASR,IAIxBrJ,KAAKqG,OACH3G,QACAgN,cACAgsB,mBACAmwC,iBACAC,kBACAl8C,UACA/kB,QACAqgB,SACAjgB,OACAkc,UACAxX,UACA4+B,UAAW,EACXi+B,aAAc,GAEhBxpE,KAAK2+B,SAEL3+B,KAAKypE,YAAc,GAGdpvD,EAAW,KAAM,IAAIzW,OAAM,wBAChCyW,GAAUtI,YAAY/R,KAAKwwB,IAAI9wB,OA4BjCm3B,EAAK9iB,UAAUD,WAAa,SAAU/E,GACpC,GAAIA,EAAS,CAEX,GAAIP,IAAU,QAAS,SAAU,YAAa,YAAa,aAAc,QAAS,MAAO,cAAe,aAAc,iBAAkB,cAGxI,IAFA7N,EAAKyF,gBAAgBoI,EAAQxO,KAAK+O,QAASA,GAEV,SAA7B/O,KAAK+O,QAAQimB,aACf,IAAKh1B,KAAKo2B,UAAW,CACnB,GAAIA,GAAYp2B,KAAKo2B,UAAY,GAAInzB,GAASjD,KAAKo1B,KACnDgB,GAAUtiB,WAAa,SAAU/E,GAC/B,GAAIwE,GAAWxE,EAAUpO,EAAKgF,UAAWoJ,KACzCwE,GAASyhB,YAAc,MACvB/xB,EAAS8Q,UAAUD,WAAWvT,KAAK61B,EAAW7iB,IAEhDvT,KAAKgC,WAAWuG,KAAK6tB,QAIvB,IAAIp2B,KAAKo2B,UAAW,CAClB,GAAI1tB,GAAQ1I,KAAKgC,WAAWgF,QAAQhH,KAAKo2B,UAC3B,MAAV1tB,GACF1I,KAAKgC,WAAW2G,OAAOD,EAAO,GAEhC1I,KAAKo2B,UAAUliB,UACflU,KAAKo2B,UAAY,KAIjB,eAAiBp2B,MAAK+O,SACxBpN,EAAS22B,qBAAqBt4B,KAAKo1B,KAAMp1B,KAAK+O,QAAQymB,aAGpD,cAAgBzmB,KACdA,EAAQo7C,WACLnqD,KAAKoqD,YACRpqD,KAAKoqD,UAAY,GAAInD,GAAUjnD,KAAKwwB,IAAI9wB,OAItCM,KAAKoqD,YACPpqD,KAAKoqD,UAAUl2C,gBACRlU,MAAKoqD,YAMlBpqD,KAAK0pE;CASP,GALA1pE,KAAKgC,WAAW4G,QAAQ,SAAU+gE,GAChCA,EAAU71D,WAAW/E,KAInBA,GAAWA,EAAQsH,MACrB,KAAM,IAAIzS,OAAM,wEAIlB5D,MAAK42B,WAOPC,EAAK9iB,UAAU43C,SAAW,WACxB,OAAQ3rD,KAAKoqD,WAAapqD,KAAKoqD,UAAU6L,QAM3Cp/B,EAAK9iB,UAAUG,QAAU,WAEvBlU,KAAKqX,QAGLrX,KAAKsU,MAGLtU,KAAK4pE,kBAGD5pE,KAAKwwB,IAAI9wB,KAAKyK,YAChBnK,KAAKwwB,IAAI9wB,KAAKyK,WAAWsH,YAAYzR,KAAKwwB,IAAI9wB,MAEhDM,KAAKwwB,IAAM,KAGPxwB,KAAKoqD,YACPpqD,KAAKoqD,UAAUl2C,gBACRlU,MAAKoqD,UAId,KAAK,GAAIvgD,KAAS7J,MAAKspE,UACjBtpE,KAAKspE,UAAUnjE,eAAe0D,UACzB7J,MAAKspE,UAAUz/D,EAG1B7J,MAAKspE,UAAY,KACjBtpE,KAAK8D,OAAS,KAGd9D,KAAKgC,WAAW4G,QAAQ,SAAU+gE,GAChCA,EAAUz1D,YAGZlU,KAAKo1B,KAAO,MASdyB,EAAK9iB,UAAU61B,cAAgB,SAAU5O,EAAM36B,GAC7C,IAAKL,KAAKs2B,WACR,KAAM,IAAI1yB,OAAM,yDAGlB,IAAIimE,GAAQxpE,GAAM,CAElBL,MAAKgC,WAAW4G,QAAQ,SAAUO,GAC5BA,YAAmB1G,IAAc0G,EAAQ4F,QAAQ1O,KAAOwpE,GAC1D1gE,EAAQygC,cAAc5O,MAU5BnE,EAAK9iB,UAAU81B,cAAgB,SAASxpC,GACtC,IAAKL,KAAKs2B,WACR,KAAM,IAAI1yB,OAAM,yDAGlB,IAAIimE,GAAQxpE,GAAM,EACdi2B,EAAat2B,KAAKs2B,WAAWuT,eAQjC,OANA7pC,MAAKgC,WAAW4G,QAAQ,SAAUO,GAC5BA,YAAmB1G,IAAc0G,EAAQ4F,QAAQ1O,KAAOwpE,IAC1DvzC,EAAantB,EAAQ0gC,mBAIlBvT,GAUTO,EAAK9iB,UAAU+1D,cAAgB,SAAU9uC,EAAM36B,GAC7C,IAAKL,KAAKq2B,YACR,KAAM,IAAIzyB,OAAM,sCAGlB,IAAaiD,SAATm0B,EACF,KAAM,IAAIp3B,OAAM,qDAGlB,IACImmE,GAAQzzC,EAAY0zC,EADpBC,EAAKtpE,EAAKuG,QAAQ8zB,EAAM,QAAQ3zB,SAyCpC,OApCKrH,MAAKkqE,cAAgBlqE,KAAKkqE,aAAavjE,cAAgBL,QAC1DtG,KAAKkqE,cAAgB,IAIZrjE,SAAPxG,GAEF0pE,EAAS/pE,KAAKkqE,aAAa31D,OAAO,SAAUpL,GAC1C,MAAOxI,GAAKoD,SAASoF,KAGvB6gE,EAAcD,EAAO/jE,OAAS,EAAIxB,KAAKJ,IAAIuU,MAAM,KAAMoxD,GAAU,EAAI,IAKrE/pE,KAAKkqE,aAAathE,QAAQ,SAAUO,GAClC,GAAIA,IAAY9I,EACd,KAAM,IAAIuD,OAAM,mCAIpBomE,EAAc3pE,GAGhBL,KAAKkqE,aAAa3hE,KAAKyhE,GAEvB1zC,EAAa,GAAI7zB,GAAWzC,KAAKo1B,MAC/BoU,gBAAiB,EACjBxO,KAAOivC,EACP5pE,GAAK2pE,IAGPhqE,KAAKgC,WAAWuG,KAAK+tB,GACrBt2B,KAAKsiB,SAEE0nD,GAQTnzC,EAAK9iB,UAAUo2D,iBAAmB,SAAU9pE,GAE1C,GAAI0U,GAAK/U,IAETA,MAAKgC,WAAW4G,QAAQ,SAAU0pB,EAAK5pB,EAAO1G,GACxCswB,YAAe7vB,IAAc6vB,EAAIvjB,QAAQ1O,KAAOA,GAE3B,IAAnBiyB,EAAIvjB,QAAQ1O,KACd0U,EAAGm1D,aAAavhE,OAAOoM,EAAGm1D,aAAaljE,QAAQ3G,GAAK,GACpD2B,EAAW2G,OAAOD,EAAO,GACzB4pB,EAAIpe,cAWZ2iB,EAAK9iB,UAAUmgC,gBAAkB,WAC/B,MAAOl0C,MAAKu2B,SAAWv2B,KAAKu2B,QAAQ2d,uBAetCrd,EAAK9iB,UAAUsD,MAAQ,SAAS+yD,KAEzBA,GAAQA,EAAKnoE,QAChBjC,KAAK22B,SAAS,QAIXyzC,GAAQA,EAAKx1C,SAChB50B,KAAK02B,UAAU,QAIZ0zC,GAAQA,EAAKr7D,WAChB/O,KAAKgC,WAAW4G,QAAQ,SAAU+gE,GAChCA,EAAU71D,WAAW61D,EAAU70C,kBAGjC90B,KAAK8T,WAAW9T,KAAK80B,kBAazB+B,EAAK9iB,UAAUujB,IAAM,SAASvoB,GAC5B,GAAIonB,GAAQn2B,KAAKm3B,eAGjB,IAAoB,OAAhBhB,EAAMjmB,OAAgC,OAAdimB,EAAMhmB,IAAlC,CAIA,GAAIknB,GAAWtoB,GAA+BlI,SAApBkI,EAAQsoB,QAAyBtoB,EAAQsoB,SAAU,CAC7Er3B,MAAKm2B,MAAMnC,SAASmC,EAAMjmB,MAAOimB,EAAMhmB,IAAKknB,KAQ9CR,EAAK9iB,UAAUojB,cAAgB,WAE7B,GAAID,GAAYl3B,KAAK43B,eAGjB1nB,EAAQgnB,EAAU/yB,IAClBgM,EAAM+mB,EAAU9yB,GACpB,IAAa,MAAT8L,GAAwB,MAAPC,EAAa,CAChC,GAAI8iB,GAAY9iB,EAAI9I,UAAY6I,EAAM7I,SACtB,IAAZ4rB,IAEFA,EAAW,OAEb/iB,EAAQ,GAAItL,MAAKsL,EAAM7I,UAAuB,IAAX4rB,GACnC9iB,EAAM,GAAIvL,MAAKuL,EAAI9I,UAAuB,IAAX4rB,GAGjC,OACE/iB,MAAOA,EACPC,IAAKA,IAwBT0mB,EAAK9iB,UAAUqjB,UAAY,SAASlnB,EAAOC,EAAKpB,GAC9C,GAAIsoB,EACJ,IAAwB,GAApBtxB,UAAUC,OAAa,CACzB,GAAImwB,GAAQpwB,UAAU,EACtBsxB,GAA6BxwB,SAAlBsvB,EAAMkB,QAAyBlB,EAAMkB,SAAU,EAC1Dr3B,KAAKm2B,MAAMnC,SAASmC,EAAMjmB,MAAOimB,EAAMhmB,IAAKknB,OAG5CA,GAAWtoB,GAA+BlI,SAApBkI,EAAQsoB,QAAyBtoB,EAAQsoB,SAAU,EACzEr3B,KAAKm2B,MAAMnC,SAAS9jB,EAAOC,EAAKknB,IAcpCR,EAAK9iB,UAAU2U,OAAS,SAASsS,EAAMjsB,GACrC,GAAIkkB,GAAWjzB,KAAKm2B,MAAMhmB,IAAMnQ,KAAKm2B,MAAMjmB,MACvC9B,EAAIzN,EAAKuG,QAAQ8zB,EAAM,QAAQ3zB,UAE/B6I,EAAQ9B,EAAI6kB,EAAW,EACvB9iB,EAAM/B,EAAI6kB,EAAW,EACrBoE,EAAWtoB,GAA+BlI,SAApBkI,EAAQsoB,QAAyBtoB,EAAQsoB,SAAU,CAE7Er3B,MAAKm2B,MAAMnC,SAAS9jB,EAAOC,EAAKknB,IAOlCR,EAAK9iB,UAAUs2D,UAAY,WACzB,GAAIl0C,GAAQn2B,KAAKm2B,MAAMiK,UACvB,QACElwB,MAAO,GAAItL,MAAKuxB,EAAMjmB,OACtBC,IAAK,GAAIvL,MAAKuxB,EAAMhmB,OAOxB0mB,EAAK9iB,UAAUuO,OAAS,WACtBtiB,KAAK42B,WAQPC,EAAK9iB,UAAU6iB,QAAU,WACvB,GAAIiS,IAAU,EACV95B,EAAU/O,KAAK+O,QACf1I,EAAQrG,KAAKqG,MACbmqB,EAAMxwB,KAAKwwB,GAEf,IAAKA,EAAL,CAEA7uB,EAAS82B,kBAAkBz4B,KAAKo1B,KAAMp1B,KAAK+O,QAAQymB,aAGxB,OAAvBzmB,EAAQimB,aACVr0B,EAAKwH,aAAaqoB,EAAI9wB,KAAM,OAC5BiB,EAAK8H,gBAAgB+nB,EAAI9wB,KAAM,YAG/BiB,EAAK8H,gBAAgB+nB,EAAI9wB,KAAM,OAC/BiB,EAAKwH,aAAaqoB,EAAI9wB,KAAM,WAI9B8wB,EAAI9wB,KAAK6N,MAAM0nB,UAAYt0B,EAAKyJ,OAAOK,OAAOsE,EAAQkmB,UAAW,IACjEzE,EAAI9wB,KAAK6N,MAAM2nB,UAAYv0B,EAAKyJ,OAAOK,OAAOsE,EAAQmmB,UAAW,IACjE1E,EAAI9wB,KAAK6N,MAAM4F,MAAQxS,EAAKyJ,OAAOK,OAAOsE,EAAQoE,MAAO,IAGzD9M,EAAMsG,OAAO9E,MAAU2oB,EAAIkI,gBAAgB7H,YAAcL,EAAIkI,gBAAgBrY,aAAe,EAC5Fha,EAAMsG,OAAOub,MAAS7hB,EAAMsG,OAAO9E,KACnCxB,EAAMsG,OAAO1E,KAAUuoB,EAAIkI,gBAAgB3H,aAAeP,EAAIkI,gBAAgBhT,cAAgB,EAC9Frf,EAAMsG,OAAOwX,OAAS9d,EAAMsG,OAAO1E,GACnC,IAAIqiE,GAAkB95C,EAAI9wB,KAAKqxB,aAAeP,EAAI9wB,KAAKgmB,aACnD6kD,EAAkB/5C,EAAI9wB,KAAKmxB,YAAcL,EAAI9wB,KAAK2gB,WAIb,KAArCmQ,EAAIkI,gBAAgBhT,eACtBrf,EAAMsG,OAAO9E,KAAOxB,EAAMsG,OAAO1E,IACjC5B,EAAMsG,OAAOub,MAAS7hB,EAAMsG,OAAO9E,MAEP,IAA1B2oB,EAAI9wB,KAAKgmB,eACX6kD,EAAkBD,GAKpBjkE,EAAMumB,OAAOxZ,OAASod,EAAI5D,OAAOmE,aACjC1qB,EAAMwB,KAAKuL,OAAWod,EAAI3oB,KAAKkpB,aAC/B1qB,EAAM6hB,MAAM9U,OAAUod,EAAItI,MAAM6I,aAChC1qB,EAAM4B,IAAImL,OAAYod,EAAIvoB,IAAIyd,eAAoBrf,EAAMsG,OAAO1E,IAC/D5B,EAAM8d,OAAO/Q,OAASod,EAAIrM,OAAOuB,eAAiBrf,EAAMsG,OAAOwX,MAM/D,IAAI2M,GAAgBtsB,KAAKJ,IAAIiC,EAAMwB,KAAKuL,OAAQ/M,EAAMumB,OAAOxZ,OAAQ/M,EAAM6hB,MAAM9U,QAC7Eo3D,EAAankE,EAAM4B,IAAImL,OAAS0d,EAAgBzqB,EAAM8d,OAAO/Q,OAC/Dk3D,EAAmBjkE,EAAMsG,OAAO1E,IAAM5B,EAAMsG,OAAOwX,MACrDqM,GAAI9wB,KAAK6N,MAAM6F,OAASzS,EAAKyJ,OAAOK,OAAOsE,EAAQqE,OAAQo3D,EAAa,MAGxEnkE,EAAM3G,KAAK0T,OAASod,EAAI9wB,KAAKqxB,aAC7B1qB,EAAMqG,WAAW0G,OAAS/M,EAAM3G,KAAK0T,OAASk3D,CAC9C,IAAIpuC,GAAkB71B,EAAM3G,KAAK0T,OAAS/M,EAAM4B,IAAImL,OAAS/M,EAAM8d,OAAO/Q,OACxEk3D,CACFjkE,GAAMqyB,gBAAgBtlB,OAAU8oB,EAChC71B,EAAMwiE,cAAcz1D,OAAY8oB,EAChC71B,EAAMyiE,eAAe11D,OAAW/M,EAAMwiE,cAAcz1D,OAGpD/M,EAAM3G,KAAKyT,MAAQqd,EAAI9wB,KAAKmxB,YAC5BxqB,EAAMqG,WAAWyG,MAAQ9M,EAAM3G,KAAKyT,MAAQo3D,EAC5ClkE,EAAMwB,KAAKsL,MAAQqd,EAAIq4C,cAAcxoD,cAAkBha,EAAMsG,OAAO9E,KACpExB,EAAMwiE,cAAc11D,MAAQ9M,EAAMwB,KAAKsL,MACvC9M,EAAM6hB,MAAM/U,MAAQqd,EAAIs4C,eAAezoD,cAAgBha,EAAMsG,OAAOub,MACpE7hB,EAAMyiE,eAAe31D,MAAQ9M,EAAM6hB,MAAM/U,KACzC,IAAIs3D,GAAcpkE,EAAM3G,KAAKyT,MAAQ9M,EAAMwB,KAAKsL,MAAQ9M,EAAM6hB,MAAM/U,MAAQo3D,CAC5ElkE,GAAMumB,OAAOzZ,MAAiBs3D,EAC9BpkE,EAAMqyB,gBAAgBvlB,MAAQs3D,EAC9BpkE,EAAM4B,IAAIkL,MAAoBs3D,EAC9BpkE,EAAM8d,OAAOhR,MAAiBs3D,EAG9Bj6C,EAAI9jB,WAAWa,MAAM6F,OAAmB/M,EAAMqG,WAAW0G,OAAS,KAClEod,EAAI0Y,mBAAmB37B,MAAM6F,OAAW/M,EAAMqG,WAAW0G,OAAS,KAClEod,EAAI0b,qBAAqB3+B,MAAM6F,OAAS/M,EAAMqyB,gBAAgBtlB,OAAS,KACvEod,EAAIkI,gBAAgBnrB,MAAM6F,OAAc/M,EAAMqyB,gBAAgBtlB,OAAS,KACvEod,EAAIq4C,cAAct7D,MAAM6F,OAAgB/M,EAAMwiE,cAAcz1D,OAAS,KACrEod,EAAIs4C,eAAev7D,MAAM6F,OAAe/M,EAAMyiE,eAAe11D,OAAS,KAEtEod,EAAI9jB,WAAWa,MAAM4F,MAAmB9M,EAAMqG,WAAWyG,MAAQ,KACjEqd,EAAI0Y,mBAAmB37B,MAAM4F,MAAW9M,EAAMqyB,gBAAgBvlB,MAAQ,KACtEqd,EAAI0b,qBAAqB3+B,MAAM4F,MAAS9M,EAAMqG,WAAWyG,MAAQ,KACjEqd,EAAIkI,gBAAgBnrB,MAAM4F,MAAc9M,EAAMumB,OAAOzZ,MAAQ,KAC7Dqd,EAAIvoB,IAAIsF,MAAM4F,MAA0B9M,EAAM4B,IAAIkL,MAAQ,KAC1Dqd,EAAIrM,OAAO5W,MAAM4F,MAAuB9M,EAAM8d,OAAOhR,MAAQ,KAG7Dqd,EAAI9jB,WAAWa,MAAM1F,KAAiB,IACtC2oB,EAAI9jB,WAAWa,MAAMtF,IAAiB,IACtCuoB,EAAI0Y,mBAAmB37B,MAAM1F,KAAUxB,EAAMwB,KAAKsL,MAAQ9M,EAAMsG,OAAO9E,KAAQ,KAC/E2oB,EAAI0Y,mBAAmB37B,MAAMtF,IAAS,IACtCuoB,EAAI0b,qBAAqB3+B,MAAM1F,KAAO,IACtC2oB,EAAI0b,qBAAqB3+B,MAAMtF,IAAO5B,EAAM4B,IAAImL,OAAS,KACzDod,EAAIkI,gBAAgBnrB,MAAM1F,KAAYxB,EAAMwB,KAAKsL,MAAQ,KACzDqd,EAAIkI,gBAAgBnrB,MAAMtF,IAAY5B,EAAM4B,IAAImL,OAAS,KACzDod,EAAIq4C,cAAct7D,MAAM1F,KAAc,IACtC2oB,EAAIq4C,cAAct7D,MAAMtF,IAAc5B,EAAM4B,IAAImL,OAAS,KACzDod,EAAIs4C,eAAev7D,MAAM1F,KAAcxB,EAAMwB,KAAKsL,MAAQ9M,EAAMumB,OAAOzZ,MAAS,KAChFqd,EAAIs4C,eAAev7D,MAAMtF,IAAa5B,EAAM4B,IAAImL,OAAS,KACzDod,EAAIvoB,IAAIsF,MAAM1F,KAAwBxB,EAAMwB,KAAKsL,MAAQ,KACzDqd,EAAIvoB,IAAIsF,MAAMtF,IAAwB,IACtCuoB,EAAIrM,OAAO5W,MAAM1F,KAAqBxB,EAAMwB,KAAKsL,MAAQ,KACzDqd,EAAIrM,OAAO5W,MAAMtF,IAAsB5B,EAAM4B,IAAImL,OAAS/M,EAAMqyB,gBAAgBtlB,OAAU,KAI1FpT,KAAK0qE,kBAGL,IAAIngD,GAASvqB,KAAKqG,MAAMklC,SACG,WAAvBx8B,EAAQimB,cACVzK,GAAU/lB,KAAKJ,IAAIpE,KAAKqG,MAAMqyB,gBAAgBtlB,OAASpT,KAAKqG,MAAMumB,OAAOxZ,OACvEpT,KAAKqG,MAAMsG,OAAO1E,IAAMjI,KAAKqG,MAAMsG,OAAOwX,OAAQ,IAEtDqM,EAAI5D,OAAOrf,MAAM1F,KAAO,IACxB2oB,EAAI5D,OAAOrf,MAAMtF,IAAOsiB,EAAS,KACjCiG,EAAI3oB,KAAK0F,MAAM1F,KAAS,IACxB2oB,EAAI3oB,KAAK0F,MAAMtF,IAASsiB,EAAS,KACjCiG,EAAItI,MAAM3a,MAAM1F,KAAQ,IACxB2oB,EAAItI,MAAM3a,MAAMtF,IAAQsiB,EAAS,IAGjC,IAAIogD,GAAwC,GAAxB3qE,KAAKqG,MAAMklC,UAAiB,SAAW,GACvDq/B,EAAmB5qE,KAAKqG,MAAMklC,WAAavrC,KAAKqG,MAAMmjE,aAAe,SAAW,EAYpF,IAXAh5C,EAAIu4C,UAAUx7D,MAAM8qB,WAAsBsyC,EAC1Cn6C,EAAIw4C,aAAaz7D,MAAM8qB,WAAmBuyC,EAC1Cp6C,EAAIy4C,cAAc17D,MAAM8qB,WAAkBsyC,EAC1Cn6C,EAAI04C,iBAAiB37D,MAAM8qB,WAAeuyC,EAC1Cp6C,EAAI24C,eAAe57D,MAAM8qB,WAAiBsyC,EAC1Cn6C,EAAI44C,kBAAkB77D,MAAM8qB,WAAcuyC,EAG1C5qE,KAAKgC,WAAW4G,QAAQ,SAAU+gE,GAChC9gC,EAAU8gC,EAAUrnD,UAAYumB,IAE9BA,EAAS,CAEX,GAAIgiC,GAAc,CACd7qE,MAAKypE,YAAcoB,GACrB7qE,KAAKypE,cACLzpE,KAAK42B,WAGL4C,QAAQpF,IAAI,qCAEdp0B,KAAKypE,YAAc,EAGrBzpE,KAAKsuB,KAAK,oBAIZuI,EAAK9iB,UAAU+2D,QAAU,WACvB,KAAM,IAAIlnE,OAAM,wDAUlBizB,EAAK9iB,UAAUu1B,eAAiB,SAAStO,GACvC,IAAKh7B,KAAKq2B,YACR,KAAM,IAAIzyB,OAAM,sCAGlB5D,MAAKq2B,YAAYiT,eAAetO,IAQlCnE,EAAK9iB,UAAUw1B,eAAiB,WAC9B,IAAKvpC,KAAKq2B,YACR,KAAM,IAAIzyB,OAAM,sCAGlB,OAAO5D,MAAKq2B,YAAYkT,kBAU1B1S,EAAK9iB,UAAUiiB,QAAU,SAAS3jB,GAChC,MAAO1Q,GAASo0B,OAAO/1B,KAAMqS,EAAGrS,KAAKqG,MAAMumB,OAAOzZ,QAUpD0jB,EAAK9iB,UAAUmiB,cAAgB,SAAS7jB,GACtC,MAAO1Q,GAASo0B,OAAO/1B,KAAMqS,EAAGrS,KAAKqG,MAAM3G,KAAKyT,QAalD0jB,EAAK9iB,UAAU6hB,UAAY,SAASoF,GAClC,MAAOr5B,GAASg0B,SAAS31B,KAAMg7B,EAAMh7B,KAAKqG,MAAMumB,OAAOzZ,QAczD0jB,EAAK9iB,UAAU+hB,gBAAkB,SAASkF,GACxC,MAAOr5B,GAASg0B,SAAS31B,KAAMg7B,EAAMh7B,KAAKqG,MAAM3G,KAAKyT,QAUvD0jB,EAAK9iB,UAAU21D,gBAAkB,WACA,GAA3B1pE,KAAK+O,QAAQgmB,WACf/0B,KAAK+qE,mBAGL/qE,KAAK4pE,mBAST/yC,EAAK9iB,UAAUg3D,iBAAmB,WAChC,GAAIh2D,GAAK/U,IAETA,MAAK4pE,kBAEL5pE,KAAKgrE,UAAY,WACf,MAA6B,IAAzBj2D,EAAGhG,QAAQgmB,eAEbhgB,GAAG60D,uBAID70D,EAAGyb,IAAI9wB,OAKJqV,EAAGyb,IAAI9wB,KAAKmxB,aAAe9b,EAAG1O,MAAMouC,WACtC1/B,EAAGyb,IAAI9wB,KAAKqxB,cAAgBhc,EAAG1O,MAAM4kE,cACtCl2D,EAAG1O,MAAMouC,UAAY1/B,EAAGyb,IAAI9wB,KAAKmxB,YACjC9b,EAAG1O,MAAM4kE,WAAal2D,EAAGyb,IAAI9wB,KAAKqxB,aAElChc,EAAGuZ,KAAK,aAMd3tB,EAAKuI,iBAAiBpB,OAAQ,SAAU9H,KAAKgrE,WAE7ChrE,KAAKkrE,WAAaC,YAAYnrE,KAAKgrE,UAAW,MAOhDn0C,EAAK9iB,UAAU61D,gBAAkB,WAC3B5pE,KAAKkrE,aACPh4C,cAAclzB,KAAKkrE,YACnBlrE,KAAKkrE,WAAarkE,QAIpBlG,EAAK+I,oBAAoB5B,OAAQ,SAAU9H,KAAKgrE,WAChDhrE,KAAKgrE,UAAY,MAQnBn0C,EAAK9iB,UAAUmrB,SAAW,WACxBl/B,KAAK2+B,MAAM4B,eAAgB,GAQ7B1J,EAAK9iB,UAAUorB,SAAW,WACxBn/B,KAAK2+B,MAAM4B,eAAgB,GAQ7B1J,EAAK9iB,UAAU8qB,aAAe,WAC5B7+B,KAAK2+B,MAAMysC,iBAAmBprE,KAAKqG,MAAMklC,WAQ3C1U,EAAK9iB,UAAU+qB,QAAU,SAAUj1B,GAGjC,GAAK7J,KAAK2+B,MAAM4B,cAAhB,CAEA,GAAIpR,GAAQtlB,EAAM22B,QAAQE,OAEtB2qC,EAAerrE,KAAKsrE,gBACpBC,EAAevrE,KAAKwrE,cAAcxrE,KAAK2+B,MAAMysC,iBAAmBj8C,EAGhEo8C,IAAgBF,IAClBrrE,KAAK42B,UACL52B,KAAKsuB,KAAK,mBAUduI,EAAK9iB,UAAUy3D,cAAgB,SAAUjgC,GAGvC,MAFAvrC,MAAKqG,MAAMklC,UAAYA,EACvBvrC,KAAK0qE,mBACE1qE,KAAKqG,MAAMklC,WAQpB1U,EAAK9iB,UAAU22D,iBAAmB,WAEhC,GAAIlB,GAAehlE,KAAKL,IAAInE,KAAKqG,MAAMqyB,gBAAgBtlB,OAASpT,KAAKqG,MAAMumB,OAAOxZ,OAAQ,EAc1F,OAbIo2D,IAAgBxpE,KAAKqG,MAAMmjE,eAGG,UAA5BxpE,KAAK+O,QAAQimB,cACfh1B,KAAKqG,MAAMklC,WAAci+B,EAAexpE,KAAKqG,MAAMmjE,cAErDxpE,KAAKqG,MAAMmjE,aAAeA,GAIxBxpE,KAAKqG,MAAMklC,UAAY,IAAGvrC,KAAKqG,MAAMklC,UAAY,GACjDvrC,KAAKqG,MAAMklC,UAAYi+B,IAAcxpE,KAAKqG,MAAMklC,UAAYi+B,GAEzDxpE,KAAKqG,MAAMklC,WAQpB1U,EAAK9iB,UAAUu3D,cAAgB,WAC7B,MAAOtrE,MAAKqG,MAAMklC,WAGpB1rC,EAAOD,QAAUi3B,GAKb,SAASh3B,EAAQD,EAASM,GAE9B,GAAI0lC,GAAS1lC,EAAoB,GAOjCN,GAAQkhC,YAAc,SAAS33B,EAASU,GACtC,GAAI4hE,GAAY,KAMZtqC,EAAUyE,EAAO/7B,MAAM6hE,aAAa7hE,EAAO4hE,GAC3CjrC,EAAUoF,EAAO/7B,MAAM8hE,iBAAiB3rE,KAAMyrE,EAAWtqC,EAASt3B,EAWtE,OAPI7E,OAAMw7B,EAAQ5T,OAAO0S,SACvBkB,EAAQ5T,OAAO0S,MAAQz1B,EAAMy1B,OAE3Bt6B,MAAMw7B,EAAQ5T,OAAO2S,SACvBiB,EAAQ5T,OAAO2S,MAAQ11B,EAAM01B,OAGxBiB,IAML,SAAS3gC,EAAQD,GAGrBA,EAAY,IACV+6B,QAAS,UACTK,KAAM,QAERp7B,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,GAG/BA,EAAY,IACVgsE,OAAQ,aACR5wC,KAAM,QAERp7B,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,IAK3B,SAASC,EAAQD,EAASM,GAQ9B,QAASyuC,GAAKxW,EAASppB,GACrB/O,KAAKm4B,QAAUA,EACfn4B,KAAK+O,QAAUA,EALjB,GAAInO,GAAUV,EAAoB,GAC9B2uC,EAAS3uC,EAAoB,GAOjCyuC,GAAK56B,UAAU87B,UAAY,SAASC,GAGlC,IAAK,GAFDpzB,GAAOozB,EAAU,GAAGx9B,EACpBsK,EAAOkzB,EAAU,GAAGx9B,EACfga,EAAI,EAAGA,EAAIwjB,EAAU9pC,OAAQsmB,IACpC5P,EAAOA,EAAOozB,EAAUxjB,GAAGha,EAAIw9B,EAAUxjB,GAAGha,EAAIoK,EAChDE,EAAOA,EAAOkzB,EAAUxjB,GAAGha,EAAIw9B,EAAUxjB,GAAGha,EAAIsK,CAElD,QAAQzY,IAAKuY,EAAMtY,IAAKwY,EAAMgzB,iBAAkB5vC,KAAK+O,QAAQ6gC,mBAU/DjB,EAAK56B,UAAUg8B,KAAO,SAAUlY,EAAStlB,EAAOy9B,GAC9C,GAAe,MAAXnY,GACEA,EAAQ7xB,OAAS,EAAG,CACtB,GAAImpC,GAAMliC,EACNwuC,EAAYx3C,OAAO+rC,EAAUlG,IAAIv8B,MAAM6F,OAAOtI,QAAQ,KAAK,IAgB/D,IAfAqkC,EAAOvuC,EAAQ8Q,cAAc,OAAQs+B,EAAU7E,YAAa6E,EAAUlG,KACtEqF,EAAKx8B,eAAe,KAAM,QAASJ,EAAMnK,WACtBvB,SAAhB0L,EAAMhF,OACP4hC,EAAKx8B,eAAe,KAAM,QAASJ,EAAMhF,OAKzCN,EADsC,GAApCsF,EAAMxD,QAAQggC,WAAW//B,QACvB2/B,EAAKk9B,YAAYh0C,EAAStlB,GAG1Bo8B,EAAKm9B,QAAQj0C,GAIiB,GAAhCtlB,EAAMxD,QAAQwgC,OAAOvgC,QAAiB,CACxC,GACI+8D,GADA38B,EAAWxuC,EAAQ8Q,cAAc,OAAQs+B,EAAU7E,YAAa6E,EAAUlG,IAG5EiiC,GADsC,OAApCx5D,EAAMxD,QAAQwgC,OAAOva,YACf,IAAM6C,EAAQ,GAAGxlB,EAAI,MAAgBpF,EAAI,IAAM4qB,EAAQA,EAAQ7xB,OAAS,GAAGqM,EAAI,KAG/E,IAAMwlB,EAAQ,GAAGxlB,EAAI,IAAMopC,EAAY,IAAMxuC,EAAI,IAAM4qB,EAAQA,EAAQ7xB,OAAS,GAAGqM,EAAI,IAAMopC,EAEvGrM,EAASz8B,eAAe,KAAM,QAASJ,EAAMnK,UAAY,SACvBvB,SAA/B0L,EAAMxD,QAAQwgC,OAAOhiC,OACtB6hC,EAASz8B,eAAe,KAAM,QAASJ,EAAMxD,QAAQwgC,OAAOhiC,OAE9D6hC,EAASz8B,eAAe,KAAM,IAAKo5D,GAGrC58B,EAAKx8B,eAAe,KAAM,IAAK,IAAM1F,GAGG,GAApCsF,EAAMxD,QAAQ2D,WAAW1D,SAC3B6/B,EAAOkB,KAAKlY,EAAStlB,EAAOy9B,KAepCrB,EAAKq9B,mBAAqB,SAAS14D,GAMjC,IAAK,GAJD24D,GAAIC,EAAIC,EAAIC,EAAIC,EAAKC,EACrBr/D,EAAIzI,KAAK4pB,MAAM9a,EAAK,GAAGjB,GAAK,IAAM7N,KAAK4pB,MAAM9a,EAAK,GAAGhB,GAAK,IAC1Di6D,EAAgB,EAAE,EAClBvmE,EAASsN,EAAKtN,OACTH,EAAI,EAAOG,EAAS,EAAbH,EAAgBA,IAE9BomE,EAAW,GAALpmE,EAAUyN,EAAK,GAAKA,EAAKzN,EAAE,GACjCqmE,EAAK54D,EAAKzN,GACVsmE,EAAK74D,EAAKzN,EAAE,GACZumE,EAAcpmE,EAARH,EAAI,EAAcyN,EAAKzN,EAAE,GAAKsmE,EAUpCE,GAAQh6D,IAAM45D,EAAG55D,EAAI,EAAE65D,EAAG75D,EAAI85D,EAAG95D,GAAIk6D,EAAgBj6D,IAAM25D,EAAG35D,EAAI,EAAE45D,EAAG55D,EAAI65D,EAAG75D,GAAIi6D,GAClFD,GAAQj6D,GAAM65D,EAAG75D,EAAI,EAAE85D,EAAG95D,EAAI+5D,EAAG/5D,GAAIk6D,EAAgBj6D,GAAM45D,EAAG55D,EAAI,EAAE65D,EAAG75D,EAAI85D,EAAG95D,GAAIi6D,GAGlFt/D,GAAK,IACLo/D,EAAIh6D,EAAI,IACRg6D,EAAI/5D,EAAI,IACRg6D,EAAIj6D,EAAI,IACRi6D,EAAIh6D,EAAI,IACR65D,EAAG95D,EAAI,IACP85D,EAAG75D,EAAI,GAGT,OAAOrF,IAcT0hC,EAAKk9B,YAAc,SAASv4D,EAAMf,GAChC,GAAI08B,GAAQ18B,EAAMxD,QAAQggC,WAAWE,KACrC,IAAa,GAATA,GAAwBpoC,SAAVooC,EAChB,MAAOjvC,MAAKgsE,mBAAmB14D,EAO/B,KAAK,GAJD24D,GAAIC,EAAIC,EAAIC,EAAIC,EAAKC,EAAKE,EAAGC,EAAGC,EAAIC,EAAGxhD,EAAGyhD,EAAGC,EAC7CC,EAAQC,EAAQC,EAASC,EAASC,EAASC,EAC3ClgE,EAAIzI,KAAK4pB,MAAM9a,EAAK,GAAGjB,GAAK,IAAM7N,KAAK4pB,MAAM9a,EAAK,GAAGhB,GAAK,IAC1DtM,EAASsN,EAAKtN,OACTH,EAAI,EAAOG,EAAS,EAAbH,EAAgBA,IAE9BomE,EAAW,GAALpmE,EAAUyN,EAAK,GAAKA,EAAKzN,EAAE,GACjCqmE,EAAK54D,EAAKzN,GACVsmE,EAAK74D,EAAKzN,EAAE,GACZumE,EAAcpmE,EAARH,EAAI,EAAcyN,EAAKzN,EAAE,GAAKsmE,EAEpCK,EAAKhoE,KAAK6rB,KAAK7rB,KAAK+vB,IAAI03C,EAAG55D,EAAI65D,EAAG75D,EAAE,GAAK7N,KAAK+vB,IAAI03C,EAAG35D,EAAI45D,EAAG55D,EAAE,IAC9Dm6D,EAAKjoE,KAAK6rB,KAAK7rB,KAAK+vB,IAAI23C,EAAG75D,EAAI85D,EAAG95D,EAAE,GAAK7N,KAAK+vB,IAAI23C,EAAG55D,EAAI65D,EAAG75D,EAAE,IAC9Do6D,EAAKloE,KAAK6rB,KAAK7rB,KAAK+vB,IAAI43C,EAAG95D,EAAI+5D,EAAG/5D,EAAE,GAAK7N,KAAK+vB,IAAI43C,EAAG75D,EAAI85D,EAAG95D,EAAE,IAY9Dw6D,EAAUtoE,KAAK+vB,IAAIm4C,EAAKz9B,GACxB+9B,EAAUxoE,KAAK+vB,IAAIm4C,EAAG,EAAEz9B,GACxB89B,EAAUvoE,KAAK+vB,IAAIk4C,EAAKx9B,GACxBg+B,EAAUzoE,KAAK+vB,IAAIk4C,EAAG,EAAEx9B,GACxBk+B,EAAU3oE,KAAK+vB,IAAIi4C,EAAKv9B,GACxBi+B,EAAU1oE,KAAK+vB,IAAIi4C,EAAG,EAAEv9B,GAExB09B,EAAI,EAAEO,EAAU,EAAEC,EAASJ,EAASE,EACpC9hD,EAAI,EAAE6hD,EAAU,EAAEF,EAASC,EAASE,EACpCL,EAAI,EAAEO,GAAUA,EAASJ,GACrBH,EAAI,IAAIA,EAAI,EAAIA,GACpBC,EAAI,EAAEC,GAAUA,EAASC,GACrBF,EAAI,IAAIA,EAAI,EAAIA,GAEpBR,GAAQh6D,IAAM46D,EAAUhB,EAAG55D,EAAIs6D,EAAET,EAAG75D,EAAI66D,EAAUf,EAAG95D,GAAKu6D,EACxDt6D,IAAM26D,EAAUhB,EAAG35D,EAAIq6D,EAAET,EAAG55D,EAAI46D,EAAUf,EAAG75D,GAAKs6D,GAEpDN,GAAQj6D,GAAM26D,EAAUd,EAAG75D,EAAI8Y,EAAEghD,EAAG95D,EAAI46D,EAAUb,EAAG/5D,GAAKw6D,EACxDv6D,GAAM06D,EAAUd,EAAG55D,EAAI6Y,EAAEghD,EAAG75D,EAAI26D,EAAUb,EAAG95D,GAAKu6D,GAEvC,GAATR,EAAIh6D,GAAmB,GAATg6D,EAAI/5D,IAAS+5D,EAAMH,GACxB,GAATI,EAAIj6D,GAAmB,GAATi6D,EAAIh6D,IAASg6D,EAAMH,GACrCl/D,GAAK,IACLo/D,EAAIh6D,EAAI,IACRg6D,EAAI/5D,EAAI,IACRg6D,EAAIj6D,EAAI,IACRi6D,EAAIh6D,EAAI,IACR65D,EAAG95D,EAAI,IACP85D,EAAG75D,EAAI,GAGT,OAAOrF,IAUX0hC,EAAKm9B,QAAU,SAASx4D,GAGtB,IAAK,GADDrG,GAAI,GACCpH,EAAI,EAAGA,EAAIyN,EAAKtN,OAAQH,IAE7BoH,GADO,GAALpH,EACGyN,EAAKzN,GAAGwM,EAAI,IAAMiB,EAAKzN,GAAGyM,EAG1B,IAAMgB,EAAKzN,GAAGwM,EAAI,IAAMiB,EAAKzN,GAAGyM,CAGzC,OAAOrF,IAGTpN,EAAOD,QAAU+uC,GAKb,SAAS9uC,EAAQD,EAASM,GAQ9B,QAASktE,GAASj1C,EAASppB,GACzB/O,KAAKm4B,QAAUA,EACfn4B,KAAK+O,QAAUA,EALjB,CAAA,GAAInO,GAAUV,EAAoB,EACrBA,GAAoB,IAOjCktE,EAASr5D,UAAU87B,UAAY,SAASC,GACtC,GAA2C,SAAvC9vC,KAAK+O,QAAQ6oC,SAASC,cAA0B,CAGlD,IAAK,GAFDn7B,GAAOozB,EAAU,GAAGx9B,EACpBsK,EAAOkzB,EAAU,GAAGx9B,EACfga,EAAI,EAAGA,EAAIwjB,EAAU9pC,OAAQsmB,IACpC5P,EAAOA,EAAOozB,EAAUxjB,GAAGha,EAAIw9B,EAAUxjB,GAAGha,EAAIoK,EAChDE,EAAOA,EAAOkzB,EAAUxjB,GAAGha,EAAIw9B,EAAUxjB,GAAGha,EAAIsK,CAElD,QAAQzY,IAAKuY,EAAMtY,IAAKwY,EAAMgzB,iBAAkB5vC,KAAK+O,QAAQ6gC,kBAI7D,IAAK,GADDy9B,MACK/gD,EAAI,EAAGA,EAAIwjB,EAAU9pC,OAAQsmB,IACpC+gD,EAAgB9kE,MACd8J,EAAGy9B,EAAUxjB,GAAGja,EAChBC,EAAGw9B,EAAUxjB,GAAGha,EAChB6lB,QAASn4B,KAAKm4B,SAGlB,OAAOk1C,IAYXD,EAASr9B,KAAO,SAAUsD,EAAU6F,EAAoBlJ,GACtD,GAEIs9B,GACArkE,EAAKskE,EACLh7D,EACA1M,EAAEymB,EALFkhD,KACAC,KAKAC,EAAY,CAGhB,KAAK7nE,EAAI,EAAGA,EAAIwtC,EAASrtC,OAAQH,IAE/B,GADA0M,EAAQy9B,EAAUpb,OAAOye,EAASxtC,IACP,OAAvB0M,EAAMxD,QAAQxB,OACK,GAAjBgF,EAAM+W,UAAyEziB,SAArDmpC,EAAUjhC,QAAQ6lB,OAAOyD,WAAWgb,EAASxtC,KAAyE,GAApDmqC,EAAUjhC,QAAQ6lB,OAAOyD,WAAWgb,EAASxtC,KAC3I,IAAKymB,EAAI,EAAGA,EAAI4sB,EAAmB7F,EAASxtC,IAAIG,OAAQsmB,IACtDkhD,EAAajlE,MACX8J,EAAG6mC,EAAmB7F,EAASxtC,IAAIymB,GAAGja,EACtCC,EAAG4mC,EAAmB7F,EAASxtC,IAAIymB,GAAGha,EACtC6lB,QAASkb,EAASxtC,KAEpB6nE,GAAa,CAMrB,IAAiB,GAAbA,EAeJ,IAZAF,EAAa12D,KAAK,SAAUlR,EAAGa,GAC7B,MAAIb,GAAEyM,GAAK5L,EAAE4L,EACJzM,EAAEuyB,QAAU1xB,EAAE0xB,QAEdvyB,EAAEyM,EAAI5L,EAAE4L,IAKnB+6D,EAASO,sBAAsBF,EAAeD,GAGzC3nE,EAAI,EAAGA,EAAI2nE,EAAaxnE,OAAQH,IAAK,CACxC0M,EAAQy9B,EAAUpb,OAAO44C,EAAa3nE,GAAGsyB,QACzC,IAAI0S,GAAW,GAAMt4B,EAAMxD,QAAQ6oC,SAASzkC,KAE5ClK,GAAMukE,EAAa3nE,GAAGwM,CACtB,IAAIu7D,GAAe,CACnB,IAA2B/mE,SAAvB4mE,EAAcxkE,GACZpD,EAAE,EAAI2nE,EAAaxnE,SAASsnE,EAAe9oE,KAAK+mB,IAAIiiD,EAAa3nE,EAAE,GAAGwM,EAAIpJ,IAC1EpD,EAAI,IAAwBynE,EAAe9oE,KAAKL,IAAImpE,EAAa9oE,KAAK+mB,IAAIiiD,EAAa3nE,EAAE,GAAGwM,EAAIpJ,KACpGskE,EAAWH,EAASS,iBAAiBP,EAAc/6D,EAAOs4B,OAEvD,CACH,GAAIijC,GAAUjoE,GAAK4nE,EAAcxkE,GAAK8kE,OAASN,EAAcxkE,GAAK+kE,UAC9DC,EAAUpoE,GAAK4nE,EAAcxkE,GAAK+kE,SAAW,EAC7CF,GAAUN,EAAaxnE,SAASsnE,EAAe9oE,KAAK+mB,IAAIiiD,EAAaM,GAASz7D,EAAIpJ,IAClFglE,EAAU,IAAsBX,EAAe9oE,KAAKL,IAAImpE,EAAa9oE,KAAK+mB,IAAIiiD,EAAaS,GAAS57D,EAAIpJ,KAC5GskE,EAAWH,EAASS,iBAAiBP,EAAc/6D,EAAOs4B,GAC1D4iC,EAAcxkE,GAAK+kE,UAAY,EAEa,SAAxCz7D,EAAMxD,QAAQ6oC,SAASC,eACzB+1B,EAAeH,EAAcxkE,GAAKilE,YAClCT,EAAcxkE,GAAKilE,aAAe37D,EAAMm8B,aAAe8+B,EAAa3nE,GAAGyM,GAExB,cAAxCC,EAAMxD,QAAQ6oC,SAASC,gBAC9B01B,EAASp6D,MAAQo6D,EAASp6D,MAAQs6D,EAAcxkE,GAAK8kE,OACrDR,EAAShjD,QAAWkjD,EAAcxkE,GAAa,SAAIskE,EAASp6D,MAAS,GAAIo6D,EAASp6D,OAASs6D,EAAcxkE,GAAK8kE,OAAO,GACjF,QAAhCx7D,EAAMxD,QAAQ6oC,SAAS9P,MAAwBylC,EAAShjD,QAAU,GAAIgjD,EAASp6D,MAC1C,SAAhCZ,EAAMxD,QAAQ6oC,SAAS9P,QAAmBylC,EAAShjD,QAAU,GAAIgjD,EAASp6D,QAGvFvS,EAAQsS,QAAQs6D,EAAa3nE,GAAGwM,EAAIk7D,EAAShjD,OAAQijD,EAAa3nE,GAAGyM,EAAIs7D,EAAcL,EAASp6D,MAAOZ,EAAMm8B,aAAe8+B,EAAa3nE,GAAGyM,EAAGC,EAAMnK,UAAY,OAAQ4nC,EAAU7E,YAAa6E,EAAUlG,KAElK,GAApCv3B,EAAMxD,QAAQ2D,WAAW1D,SAC3BpO,EAAQwR,UAAUo7D,EAAa3nE,GAAGwM,EAAIk7D,EAAShjD,OAAQijD,EAAa3nE,GAAGyM,EAAGC,EAAOy9B,EAAU7E,YAAa6E,EAAUlG,OAYxHsjC,EAASO,sBAAwB,SAAUF,EAAeD,GAGxD,IAAK,GADDF,GACKznE,EAAI,EAAGA,EAAI2nE,EAAaxnE,OAAQH,IACnCA,EAAI,EAAI2nE,EAAaxnE,SACvBsnE,EAAe9oE,KAAK+mB,IAAIiiD,EAAa3nE,EAAI,GAAGwM,EAAIm7D,EAAa3nE,GAAGwM,IAE9DxM,EAAI,IACNynE,EAAe9oE,KAAKL,IAAImpE,EAAc9oE,KAAK+mB,IAAIiiD,EAAa3nE,EAAI,GAAGwM,EAAIm7D,EAAa3nE,GAAGwM,KAErE,GAAhBi7D,IACuCzmE,SAArC4mE,EAAcD,EAAa3nE,GAAGwM,KAChCo7D,EAAcD,EAAa3nE,GAAGwM,IAAM07D,OAAQ,EAAGC,SAAU,EAAGE,YAAa,IAE3ET,EAAcD,EAAa3nE,GAAGwM,GAAG07D,QAAU,IAejDX,EAASS,iBAAmB,SAAUP,EAAc/6D,EAAOs4B,GACzD,GAAI13B,GAAOoX,CAwBX,OAvBI+iD,GAAe/6D,EAAMxD,QAAQ6oC,SAASzkC,OAASm6D,EAAe,GAChEn6D,EAAuB03B,EAAfyiC,EAA0BziC,EAAWyiC,EAE7C/iD,EAAS,EAC2B,QAAhChY,EAAMxD,QAAQ6oC,SAAS9P,MACzBvd,GAAU,GAAM+iD,EAEuB,SAAhC/6D,EAAMxD,QAAQ6oC,SAAS9P,QAC9Bvd,GAAU,GAAM+iD,KAKlBn6D,EAAQZ,EAAMxD,QAAQ6oC,SAASzkC,MAC/BoX,EAAS,EAC2B,QAAhChY,EAAMxD,QAAQ6oC,SAAS9P,MACzBvd,GAAU,GAAMhY,EAAMxD,QAAQ6oC,SAASzkC,MAEA,SAAhCZ,EAAMxD,QAAQ6oC,SAAS9P,QAC9Bvd,GAAU,GAAMhY,EAAMxD,QAAQ6oC,SAASzkC,SAInCA,MAAOA,EAAOoX,OAAQA,IAGhC6iD,EAAS5yB,oBAAsB,SAAS6yB,EAAiBl0B,EAAa9F,EAAU86B,EAAYn5C,GAC1F,GAAIq4C,EAAgBrnE,OAAS,EAAG,CAE9BqnE,EAAgBv2D,KAAK,SAAUlR,EAAGa,GAChC,MAAIb,GAAEyM,GAAK5L,EAAE4L,EACJzM,EAAEuyB,QAAU1xB,EAAE0xB,QAEdvyB,EAAEyM,EAAI5L,EAAE4L,GAGnB,IAAIo7D,KAEJL,GAASO,sBAAsBF,EAAeJ,GAC9Cl0B,EAAYg1B,GAAcf,EAASgB,qBAAqBX,EAAeJ,GACvEl0B,EAAYg1B,GAAYv+B,iBAAmB5a,EAC3Cqe,EAAS9qC,KAAK4lE,KAIlBf,EAASgB,qBAAuB,SAAUX,EAAeD,GAIvD,IAAK,GAHDvkE,GACAyT,EAAO8wD,EAAa,GAAGl7D,EACvBsK,EAAO4wD,EAAa,GAAGl7D,EAClBzM,EAAI,EAAGA,EAAI2nE,EAAaxnE,OAAQH,IACvCoD,EAAMukE,EAAa3nE,GAAGwM,EACKxL,SAAvB4mE,EAAcxkE,IAChByT,EAAOA,EAAO8wD,EAAa3nE,GAAGyM,EAAIk7D,EAAa3nE,GAAGyM,EAAIoK,EACtDE,EAAOA,EAAO4wD,EAAa3nE,GAAGyM,EAAIk7D,EAAa3nE,GAAGyM,EAAIsK,GAGtD6wD,EAAcxkE,GAAKilE,aAAeV,EAAa3nE,GAAGyM,CAGtD,KAAK,GAAI+7D,KAAQZ,GACXA,EAActnE,eAAekoE,KAC/B3xD,EAAOA,EAAO+wD,EAAcY,GAAMH,YAAcT,EAAcY,GAAMH,YAAcxxD,EAClFE,EAAOA,EAAO6wD,EAAcY,GAAMH,YAAcT,EAAcY,GAAMH,YAActxD,EAItF,QAAQzY,IAAKuY,EAAMtY,IAAKwY,IAG1B/c,EAAOD,QAAUwtE,GAIb,SAASvtE,EAAQD,EAASM,GAO9B,QAAS2uC,GAAO1W,EAASppB,GACvB/O,KAAKm4B,QAAUA,EACfn4B,KAAK+O,QAAUA,EAJjB,GAAInO,GAAUV,EAAoB,EAQlC2uC,GAAO96B,UAAU87B,UAAY,SAASC,GAGpC,IAAK,GAFDpzB,GAAOozB,EAAU,GAAGx9B,EACpBsK,EAAOkzB,EAAU,GAAGx9B,EACfga,EAAI,EAAGA,EAAIwjB,EAAU9pC,OAAQsmB,IACpC5P,EAAOA,EAAOozB,EAAUxjB,GAAGha,EAAIw9B,EAAUxjB,GAAGha,EAAIoK,EAChDE,EAAOA,EAAOkzB,EAAUxjB,GAAGha,EAAIw9B,EAAUxjB,GAAGha,EAAIsK,CAElD,QAAQzY,IAAKuY,EAAMtY,IAAKwY,EAAMgzB,iBAAkB5vC,KAAK+O,QAAQ6gC,mBAG/Df,EAAO96B,UAAUg8B,KAAO,SAASlY,EAAStlB,EAAOy9B,EAAWzlB,GAC1DskB,EAAOkB,KAAKlY,EAAStlB,EAAOy9B,EAAWzlB,IAYzCskB,EAAOkB,KAAO,SAAUlY,EAAStlB,EAAOy9B,EAAWzlB,GAClC1jB,SAAX0jB,IAAuBA,EAAS,EACpC,KAAK,GAAI1kB,GAAI,EAAGA,EAAIgyB,EAAQ7xB,OAAQH,IAClCjF,EAAQwR,UAAUylB,EAAQhyB,GAAGwM,EAAIkY,EAAQsN,EAAQhyB,GAAGyM,EAAGC,EAAOy9B,EAAU7E,YAAa6E,EAAUlG,IAAKjS,EAAQhyB,GAAGgN,QAKnHhT,EAAOD,QAAUivC,GAIb,SAAShvC,EAAQD,EAASM,GAE9B,GAAIouE,GAAepuE,EAAoB,IACnCquE,EAAeruE,EAAoB,IACnCsuE,EAAetuE,EAAoB,IACnCuuE,EAAiBvuE,EAAoB,IACrCwuE,EAAoBxuE,EAAoB,IACxCyuE,EAAkBzuE,EAAoB,IACtC0uE,EAA0B1uE,EAAoB,GAQlDN,GAAQivE,WAAa,SAAUC,GAC7B,IAAK,GAAIC,KAAiBD,GACpBA,EAAe3oE,eAAe4oE,KAChC/uE,KAAK+uE,GAAiBD,EAAeC,KAY3CnvE,EAAQovE,YAAc,SAAUF,GAC9B,IAAK,GAAIC,KAAiBD,GACpBA,EAAe3oE,eAAe4oE,KAChC/uE,KAAK+uE,GAAiBloE,SAW5BjH,EAAQilD,mBAAqB,WAC3B7kD,KAAK6uE,WAAWP,GAChBtuE,KAAKivE,2BACkC,GAAnCjvE,KAAKqjD,UAAUtD,iBACjB//C,KAAKkvE,4BAGLlvE,KAAKssD,gCAUT1sD,EAAQmlD,mBAAqB,WAC3B/kD,KAAKw/D,eAAiB,EACtBx/D,KAAKmvE,aAAe,EACpBnvE,KAAK6uE,WAAWN,IASlB3uE,EAAQklD,kBAAoB,WAC1B9kD,KAAK2xD,WACL3xD,KAAKovE,cAAgB,WACrBpvE,KAAK2xD,QAAgB,UACrB3xD,KAAK2xD,QAAgB,OAAE,YAAczT,SACnCmB,SACAqG,eACAoa,eAAkB,EAClBuP,YAAexoE,QACjB7G,KAAK2xD,QAAgB,UACrB3xD,KAAK2xD,QAAiB,SAAKzT,SACzBmB,SACAqG,eACAoa,eAAkB,EAClBuP,YAAexoE,QAEjB7G,KAAK0lD,YAAc1lD,KAAK2xD,QAAgB,OAAE,WAAwB,YAElE3xD,KAAK6uE,WAAWL,IASlB5uE,EAAQolD,qBAAuB,WAC7BhlD,KAAKotD,cAAgBlP,SAAWmB,UAEhCr/C,KAAK6uE,WAAWJ,IASlB7uE,EAAQ2qD,wBAA0B,WAEhCvqD,KAAKsvE,8BAA+B,EACpCtvE,KAAKuvE,sBAAuB,EAEmB,GAA3CvvE,KAAKqjD,UAAUpB,iBAAiBjzC,SAELnI,SAAzB7G,KAAKwvE,kBACPxvE,KAAKwvE,gBAAkB39D,SAASM,cAAc,OAC9CnS,KAAKwvE,gBAAgBpnE,UAAY,0BAE/BpI,KAAKwvE,gBAAgBjiE,MAAMq+B,QADR,GAAjB5rC,KAAKgqD,SAC8B,QAGA,OAEvChqD,KAAKmgB,MAAMpO,YAAY/R,KAAKwvE,kBAGL3oE,SAArB7G,KAAKyvE,cACPzvE,KAAKyvE,YAAc59D,SAASM,cAAc,OAC1CnS,KAAKyvE,YAAYrnE,UAAY,gCAE3BpI,KAAKyvE,YAAYliE,MAAMq+B,QADJ,GAAjB5rC,KAAKgqD,SAC0B,OAGA,QAEnChqD,KAAKmgB,MAAMpO,YAAY/R,KAAKyvE,cAGR5oE,SAAlB7G,KAAK0vE,WACP1vE,KAAK0vE,SAAW79D,SAASM,cAAc,OACvCnS,KAAK0vE,SAAStnE,UAAY,gCAC1BpI,KAAK0vE,SAASniE,MAAMq+B,QAAU5rC,KAAKwvE,gBAAgBjiE,MAAMq+B,QACzD5rC,KAAKmgB,MAAMpO,YAAY/R,KAAK0vE,WAI9B1vE,KAAK6uE,WAAWH,GAGhB1uE,KAAKipD,yBAGwBpiD,SAAzB7G,KAAKwvE,kBAEPxvE,KAAKipD,wBAGLjpD,KAAKmgB,MAAM1O,YAAYzR,KAAKwvE,iBAC5BxvE,KAAKmgB,MAAM1O,YAAYzR,KAAKyvE,aAC5BzvE,KAAKmgB,MAAM1O,YAAYzR,KAAK0vE,UAE5B1vE,KAAKwvE,gBAAkB3oE,OACvB7G,KAAKyvE,YAAc5oE,OACnB7G,KAAK0vE,SAAW7oE,OAEhB7G,KAAKgvE,YAAYN,KAWvB9uE,EAAQ0qD,wBAA0B,WAChCtqD,KAAK6uE,WAAWF,GAEhB3uE,KAAK2vE,mBACoC,GAArC3vE,KAAKqjD,UAAUxB,WAAW7yC,SAC5BhP,KAAK4vE,2BAUThwE,EAAQqlD,qBAAuB,WAC7BjlD,KAAK6uE,WAAWD,KAMd,SAAS/uE,EAAQD,EAASM,GAiB9B,QAAS+mD,GAAU5sC,GACjBra,KAAKi2D,QAAS,EAEdj2D,KAAKwwB,KACHnW,UAAWA,GAGbra,KAAKwwB,IAAIq/C,QAAUh+D,SAASM,cAAc,OAC1CnS,KAAKwwB,IAAIq/C,QAAQznE,UAAY,UAE7BpI,KAAKwwB,IAAInW,UAAUtI,YAAY/R,KAAKwwB,IAAIq/C,SAExC7vE,KAAK8D,OAAS8hC,EAAO5lC,KAAKwwB,IAAIq/C,SAAUlmC,iBAAiB,IACzD3pC,KAAK8D,OAAOqQ,GAAG,MAAOnU,KAAK8vE,cAAcv6C,KAAKv1B,MAG9C,IAAI+U,GAAK/U,KACLupE,GACF,QAAS,QACT,YAAa,OACb,YAAa,OAAQ,UACrB,aAAc,iBAEhBA,GAAO3gE,QAAQ,SAAUiB,GACvBkL,EAAGjR,OAAOqQ,GAAGtK,EAAO,SAAUA,GAC5BA,EAAM88B,sBAKV3mC,KAAK+vE,aAAenqC,EAAO99B,QAAS6hC,iBAAiB,IACrD3pC,KAAK+vE,aAAa57D,GAAG,MAAO,SAAUtK,GAE/BmmE,EAAWnmE,EAAMG,OAAQqQ,IAC5BtF,EAAGk7D,eAIeppE,SAAlB7G,KAAK+mD,UACP/mD,KAAK+mD,SAAS7yC,UAEhBlU,KAAK+mD,SAAWA,IAGhB/mD,KAAKkwE,YAAclwE,KAAKiwE,WAAW16C,KAAKv1B,MAiF1C,QAASgwE,GAAW7mE,EAASq8B,GAC3B,KAAOr8B,GAAS,CACd,GAAIA,IAAYq8B,EACd,OAAO,CAETr8B,GAAUA,EAAQgB,WAEpB,OAAO,EAnJT,GAAI48C,GAAW7mD,EAAoB,IAC/B2d,EAAU3d,EAAoB,IAC9B0lC,EAAS1lC,EAAoB,IAC7BS,EAAOT,EAAoB,EA4D/B2d,GAAQopC,EAAUlzC,WAGlBkzC,EAAUtsB,QAAU,KAKpBssB,EAAUlzC,UAAUG,QAAU,WAC5BlU,KAAKiwE,aAGLjwE,KAAKwwB,IAAIq/C,QAAQ1lE,WAAWsH,YAAYzR,KAAKwwB,IAAIq/C,SAGjD7vE,KAAK8D,OAAS,KACd9D,KAAK+vE,aAAe,MAQtB9oB,EAAUlzC,UAAUo8D,SAAW,WAEzBlpB,EAAUtsB,SACZssB,EAAUtsB,QAAQs1C,aAEpBhpB,EAAUtsB,QAAU36B,KAEpBA,KAAKi2D,QAAS,EACdj2D,KAAKwwB,IAAIq/C,QAAQtiE,MAAMq+B,QAAU,OACjCjrC,EAAKwH,aAAanI,KAAKwwB,IAAInW,UAAW,cAEtCra,KAAKsuB,KAAK,UACVtuB,KAAKsuB,KAAK,YAIVtuB,KAAK+mD,SAASxxB,KAAK,MAAOv1B,KAAKkwE,cAOjCjpB,EAAUlzC,UAAUk8D,WAAa,WAC/BjwE,KAAKi2D,QAAS,EACdj2D,KAAKwwB,IAAIq/C,QAAQtiE,MAAMq+B,QAAU,GACjCjrC,EAAK8H,gBAAgBzI,KAAKwwB,IAAInW,UAAW,cACzCra,KAAK+mD,SAASqpB,OAAO,MAAOpwE,KAAKkwE,aAEjClwE,KAAKsuB,KAAK,UACVtuB,KAAKsuB,KAAK,eAQZ24B,EAAUlzC,UAAU+7D,cAAgB,SAAUjmE,GAE5C7J,KAAKmwE,WACLtmE,EAAM88B,mBAsBR9mC,EAAOD,QAAUqnD,GAKb,SAASpnD,EAAQD,GAGrBA,EAAY,IACVi+C,KAAM,OACNG,IAAK,kBACLqyB,KAAM,OACNlL,QAAS,WACTG,QAAS,WACTgL,SAAU,YACVxyB,SAAU,YACVyyB,eAAgB,+CAChBC,gBAAiB,qEACjBC,oBAAqB,wEACrBC,gBAAiB,kCACjBC,mBAAoB,+BAEtB/wE,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,GAG/BA,EAAY,IACVi+C,KAAM,WACNG,IAAK,uBACLqyB,KAAM,QACNlL,QAAS,iBACTG,QAAS,iBACTgL,SAAU,gBACVxyB,SAAU,gBACVyyB,eAAgB,uDAChBC,gBAAiB,6EACjBC,oBAAqB,kFACrBC,gBAAiB,wCACjBC,mBAAoB,2CAEtB/wE,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,IAK3B,WAKoC,mBAA7BgxE,4BAKTA,yBAAyB78D,UAAUmvD,OAAS,SAAS7wD,EAAGC,EAAGvH,GACzD/K,KAAKyoB,YACLzoB,KAAKosB,IAAI/Z,EAAGC,EAAGvH,EAAG,EAAG,EAAEvG,KAAK6nB,IAAI,IASlCukD,yBAAyB78D,UAAU88D,OAAS,SAASx+D,EAAGC,EAAGvH,GACzD/K,KAAKyoB,YACLzoB,KAAKqT,KAAKhB,EAAItH,EAAGuH,EAAIvH,EAAO,EAAJA,EAAW,EAAJA,IASjC6lE,yBAAyB78D,UAAU0b,SAAW,SAASpd,EAAGC,EAAGvH,GAE3D/K,KAAKyoB,WAEL,IAAIrc,GAAQ,EAAJrB,EACJ+lE,EAAK1kE,EAAI,EACT2kE,EAAKvsE,KAAK6rB,KAAK,GAAK,EAAIjkB,EACxBD,EAAI3H,KAAK6rB,KAAKjkB,EAAIA,EAAI0kE,EAAKA,EAE/B9wE,MAAK0oB,OAAOrW,EAAGC,GAAKnG,EAAI4kE,IACxB/wE,KAAK2oB,OAAOtW,EAAIy+D,EAAIx+D,EAAIy+D,GACxB/wE,KAAK2oB,OAAOtW,EAAIy+D,EAAIx+D,EAAIy+D,GACxB/wE,KAAK2oB,OAAOtW,EAAGC,GAAKnG,EAAI4kE,IACxB/wE,KAAK8oB,aASP8nD,yBAAyB78D,UAAUi9D,aAAe,SAAS3+D,EAAGC,EAAGvH,GAE/D/K,KAAKyoB,WAEL,IAAIrc,GAAQ,EAAJrB,EACJ+lE,EAAK1kE,EAAI,EACT2kE,EAAKvsE,KAAK6rB,KAAK,GAAK,EAAIjkB,EACxBD,EAAI3H,KAAK6rB,KAAKjkB,EAAIA,EAAI0kE,EAAKA,EAE/B9wE,MAAK0oB,OAAOrW,EAAGC,GAAKnG,EAAI4kE,IACxB/wE,KAAK2oB,OAAOtW,EAAIy+D,EAAIx+D,EAAIy+D,GACxB/wE,KAAK2oB,OAAOtW,EAAIy+D,EAAIx+D,EAAIy+D,GACxB/wE,KAAK2oB,OAAOtW,EAAGC,GAAKnG,EAAI4kE,IACxB/wE,KAAK8oB,aASP8nD,yBAAyB78D,UAAUk9D,KAAO,SAAS5+D,EAAGC,EAAGvH,GAEvD/K,KAAKyoB,WAEL,KAAK,GAAIyoD,GAAI,EAAO,GAAJA,EAAQA,IAAK,CAC3B,GAAI/kD,GAAU+kD,EAAI,IAAM,EAAS,IAAJnmE,EAAc,GAAJA,CACvC/K,MAAK2oB,OACDtW,EAAI8Z,EAAS3nB,KAAKya,IAAQ,EAAJiyD,EAAQ1sE,KAAK6nB,GAAK,IACxC/Z,EAAI6Z,EAAS3nB,KAAK4a,IAAQ,EAAJ8xD,EAAQ1sE,KAAK6nB,GAAK,KAI9CrsB,KAAK8oB,aAMP8nD,yBAAyB78D,UAAUwvD,UAAY,SAASlxD,EAAGC,EAAG0/C,EAAG7lD,EAAGpB,GAClE,GAAIomE,GAAM3sE,KAAK6nB,GAAG,GACE,GAAhB2lC,EAAM,EAAIjnD,IAAYA,EAAMinD,EAAI,GAChB,EAAhB7lD,EAAM,EAAIpB,IAAYA,EAAMoB,EAAI,GACpCnM,KAAKyoB,YACLzoB,KAAK0oB,OAAOrW,EAAEtH,EAAEuH,GAChBtS,KAAK2oB,OAAOtW,EAAE2/C,EAAEjnD,EAAEuH,GAClBtS,KAAKosB,IAAI/Z,EAAE2/C,EAAEjnD,EAAEuH,EAAEvH,EAAEA,EAAM,IAAJomE,EAAY,IAAJA,GAAQ,GACrCnxE,KAAK2oB,OAAOtW,EAAE2/C,EAAE1/C,EAAEnG,EAAEpB,GACpB/K,KAAKosB,IAAI/Z,EAAE2/C,EAAEjnD,EAAEuH,EAAEnG,EAAEpB,EAAEA,EAAE,EAAM,GAAJomE,GAAO,GAChCnxE,KAAK2oB,OAAOtW,EAAEtH,EAAEuH,EAAEnG,GAClBnM,KAAKosB,IAAI/Z,EAAEtH,EAAEuH,EAAEnG,EAAEpB,EAAEA,EAAM,GAAJomE,EAAW,IAAJA,GAAQ,GACpCnxE,KAAK2oB,OAAOtW,EAAEC,EAAEvH,GAChB/K,KAAKosB,IAAI/Z,EAAEtH,EAAEuH,EAAEvH,EAAEA,EAAM,IAAJomE,EAAY,IAAJA,GAAQ,IAMrCP,yBAAyB78D,UAAU2vD,QAAU,SAASrxD,EAAGC,EAAG0/C,EAAG7lD,GAC7D,GAAIilE,GAAQ,SACRC,EAAMrf,EAAI,EAAKof,EACfE,EAAMnlE,EAAI,EAAKilE,EACfG,EAAKl/D,EAAI2/C,EACTwf,EAAKl/D,EAAInG,EACTslE,EAAKp/D,EAAI2/C,EAAI,EACb0f,EAAKp/D,EAAInG,EAAI,CAEjBnM,MAAKyoB,YACLzoB,KAAK0oB,OAAOrW,EAAGq/D,GACf1xE,KAAK2xE,cAAct/D,EAAGq/D,EAAKJ,EAAIG,EAAKJ,EAAI/+D,EAAGm/D,EAAIn/D,GAC/CtS,KAAK2xE,cAAcF,EAAKJ,EAAI/+D,EAAGi/D,EAAIG,EAAKJ,EAAIC,EAAIG,GAChD1xE,KAAK2xE,cAAcJ,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACjDxxE,KAAK2xE,cAAcF,EAAKJ,EAAIG,EAAIn/D,EAAGq/D,EAAKJ,EAAIj/D,EAAGq/D,IAQjDd,yBAAyB78D,UAAUyvD,SAAW,SAASnxD,EAAGC,EAAG0/C,EAAG7lD,GAC9D,GAAI+B,GAAI,EAAE,EACN0jE,EAAW5f,EACX6f,EAAW1lE,EAAI+B,EAEfkjE,EAAQ,SACRC,EAAMO,EAAW,EAAKR,EACtBE,EAAMO,EAAW,EAAKT,EACtBG,EAAKl/D,EAAIu/D,EACTJ,EAAKl/D,EAAIu/D,EACTJ,EAAKp/D,EAAIu/D,EAAW,EACpBF,EAAKp/D,EAAIu/D,EAAW,EACpBC,EAAMx/D,GAAKnG,EAAI0lE,EAAS,GACxBE,EAAMz/D,EAAInG,CAEdnM,MAAKyoB,YACLzoB,KAAK0oB,OAAO6oD,EAAIG,GAEhB1xE,KAAK2xE,cAAcJ,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACjDxxE,KAAK2xE,cAAcF,EAAKJ,EAAIG,EAAIn/D,EAAGq/D,EAAKJ,EAAIj/D,EAAGq/D,GAE/C1xE,KAAK2xE,cAAct/D,EAAGq/D,EAAKJ,EAAIG,EAAKJ,EAAI/+D,EAAGm/D,EAAIn/D,GAC/CtS,KAAK2xE,cAAcF,EAAKJ,EAAI/+D,EAAGi/D,EAAIG,EAAKJ,EAAIC,EAAIG,GAEhD1xE,KAAK2oB,OAAO4oD,EAAIO,GAEhB9xE,KAAK2xE,cAAcJ,EAAIO,EAAMR,EAAIG,EAAKJ,EAAIU,EAAKN,EAAIM,GACnD/xE,KAAK2xE,cAAcF,EAAKJ,EAAIU,EAAK1/D,EAAGy/D,EAAMR,EAAIj/D,EAAGy/D,GAEjD9xE,KAAK2oB,OAAOtW,EAAGq/D,IAOjBd,yBAAyB78D,UAAUonD,MAAQ,SAAS9oD,EAAGC,EAAGs+C,EAAO5qD,GAE/D,GAAIgsE,GAAK3/D,EAAIrM,EAASxB,KAAK4a,IAAIwxC,GAC3BqhB,EAAK3/D,EAAItM,EAASxB,KAAKya,IAAI2xC,GAI3BshB,EAAK7/D,EAAa,GAATrM,EAAexB,KAAK4a,IAAIwxC,GACjCuhB,EAAK7/D,EAAa,GAATtM,EAAexB,KAAKya,IAAI2xC,GAGjCwhB,EAAKJ,EAAKhsE,EAAS,EAAIxB,KAAK4a,IAAIwxC,EAAQ,GAAMpsD,KAAK6nB,IACnDgmD,EAAKJ,EAAKjsE,EAAS,EAAIxB,KAAKya,IAAI2xC,EAAQ,GAAMpsD,KAAK6nB,IAGnDimD,EAAKN,EAAKhsE,EAAS,EAAIxB,KAAK4a,IAAIwxC,EAAQ,GAAMpsD,KAAK6nB,IACnDkmD,EAAKN,EAAKjsE,EAAS,EAAIxB,KAAKya,IAAI2xC,EAAQ,GAAMpsD,KAAK6nB,GAEvDrsB,MAAKyoB,YACLzoB,KAAK0oB,OAAOrW,EAAGC,GACftS,KAAK2oB,OAAOypD,EAAIC,GAChBryE,KAAK2oB,OAAOupD,EAAIC,GAChBnyE,KAAK2oB,OAAO2pD,EAAIC,GAChBvyE,KAAK8oB,aASP8nD,yBAAyB78D,UAAUknD,WAAa,SAAS5oD,EAAEC,EAAE2pD,EAAGC,EAAGsW,GAC5DA,IAAWA,GAAW,GAAG,IACd,GAAZC,IAAeA,EAAa,KAChC,IAAIC,GAAYF,EAAUxsE,MAC1BhG,MAAK0oB,OAAOrW,EAAGC,EAKf,KAJA,GAAImN,GAAMw8C,EAAG5pD,EAAIqN,EAAMw8C,EAAG5pD,EACtBqgE,EAAQjzD,EAAGD,EACXmzD,EAAgBpuE,KAAK6rB,KAAM5Q,EAAGA,EAAKC,EAAGA,GACtCmzD,EAAU,EAAG9iC,GAAK,EACf6iC,GAAe,IAAI,CACxB,GAAIH,GAAaD,EAAUK,IAAYH,EACnCD,GAAaG,IAAeH,EAAaG,EAC7C,IAAIp2D,GAAQhY,KAAK6rB,KAAMoiD,EAAWA,GAAc,EAAIE,EAAMA,GACnD,GAAHlzD,IAAMjD,GAASA,GACnBnK,GAAKmK,EACLlK,GAAKqgE,EAAMn2D,EACXxc,KAAK+vC,EAAO,SAAW,UAAU19B,EAAEC,GACnCsgE,GAAiBH,EACjB1iC,GAAQA,MAUV,SAASlwC,GAeb,QAASge,GAAQ+F,GACf,MAAIA,GAAYmxC,EAAMnxC,GAAtB,OAWF,QAASmxC,GAAMnxC,GACb,IAAK,GAAI3a,KAAO4U,GAAQ9J,UACtB6P,EAAI3a,GAAO4U,EAAQ9J,UAAU9K,EAE/B,OAAO2a,GAxBT/jB,EAAOD,QAAUie,EAoCjBA,EAAQ9J,UAAUI,GAClB0J,EAAQ9J,UAAU7K,iBAAmB,SAASW,EAAOmQ,GAInD,MAHAha,MAAK8yE,WAAa9yE,KAAK8yE,gBACtB9yE,KAAK8yE,WAAWjpE,GAAS7J,KAAK8yE,WAAWjpE,QACvCtB,KAAKyR,GACDha,MAaT6d,EAAQ9J,UAAUg/D,KAAO,SAASlpE,EAAOmQ,GAIvC,QAAS7F,KACP6+D,EAAK1+D,IAAIzK,EAAOsK,GAChB6F,EAAGrB,MAAM3Y,KAAM+F,WALjB,GAAIitE,GAAOhzE,IAUX,OATAA,MAAK8yE,WAAa9yE,KAAK8yE,eAOvB3+D,EAAG6F,GAAKA,EACRha,KAAKmU,GAAGtK,EAAOsK,GACRnU,MAaT6d,EAAQ9J,UAAUO,IAClBuJ,EAAQ9J,UAAUk/D,eAClBp1D,EAAQ9J,UAAUm/D,mBAClBr1D,EAAQ9J,UAAUrK,oBAAsB,SAASG,EAAOmQ,GAItD,GAHAha,KAAK8yE,WAAa9yE,KAAK8yE,eAGnB,GAAK/sE,UAAUC,OAEjB,MADAhG,MAAK8yE,cACE9yE,IAIT,IAAImzE,GAAYnzE,KAAK8yE,WAAWjpE,EAChC,KAAKspE,EAAW,MAAOnzE,KAGvB,IAAI,GAAK+F,UAAUC,OAEjB,aADOhG,MAAK8yE,WAAWjpE,GAChB7J,IAKT,KAAK,GADDozE,GACKvtE,EAAI,EAAGA,EAAIstE,EAAUntE,OAAQH,IAEpC,GADAutE,EAAKD,EAAUttE,GACXutE,IAAOp5D,GAAMo5D,EAAGp5D,KAAOA,EAAI,CAC7Bm5D,EAAUxqE,OAAO9C,EAAG,EACpB,OAGJ,MAAO7F,OAWT6d,EAAQ9J,UAAUua,KAAO,SAASzkB,GAChC7J,KAAK8yE,WAAa9yE,KAAK8yE,cACvB,IAAI/4D,MAAUnO,MAAMrL,KAAKwF,UAAW,GAChCotE,EAAYnzE,KAAK8yE,WAAWjpE,EAEhC,IAAIspE,EAAW,CACbA,EAAYA,EAAUvnE,MAAM,EAC5B,KAAK,GAAI/F,GAAI,EAAGC,EAAMqtE,EAAUntE,OAAYF,EAAJD,IAAWA,EACjDstE,EAAUttE,GAAG8S,MAAM3Y,KAAM+Z,GAI7B,MAAO/Z,OAWT6d,EAAQ9J,UAAUu1D,UAAY,SAASz/D,GAErC,MADA7J,MAAK8yE,WAAa9yE,KAAK8yE,eAChB9yE,KAAK8yE,WAAWjpE,QAWzBgU,EAAQ9J,UAAUs/D,aAAe,SAASxpE,GACxC,QAAU7J,KAAKspE,UAAUz/D,GAAO7D,SAM9B,SAASnG,EAAQD,GAErB,GAAI0zE,GAAgCC,EAA8BC,GAOjE,SAAU9zE,EAAMC,GAGX4zE,KAAmCD,EAAiC,EAAWE,EAA2E,kBAAnCF,GAAiDA,EAA+B36D,MAAM/Y,EAAS2zE,GAAiCD,IAAmEzsE,SAAlC2sE,IAAgD3zE,EAAOD,QAAU4zE,KAU7VxzE,KAAM,WAEN,QAAS+mD,GAASh4C,GAChB,GAOIlJ,GAPA+D,EAAiBmF,GAAWA,EAAQnF,iBAAkB,EAEtDyQ,EAAYtL,GAAWA,EAAQsL,WAAavS,OAE5C2rE,KACAC,GAAUC,WAAYC,UACtBC,IAIJ,KAAKhuE,EAAI,GAAS,KAALA,EAAUA,IAAMguE,EAAMnvE,OAAOovE,aAAajuE,KAAOkuE,KAAK,IAAMluE,EAAI,IAAK+L,OAAO,EAEzF,KAAK/L,EAAI,GAAS,IAALA,EAASA,IAAMguE,EAAMnvE,OAAOovE,aAAajuE,KAAOkuE,KAAKluE,EAAG+L,OAAO,EAE5E,KAAK/L,EAAI,EAAS,GAALA,EAAUA,IAAMguE,EAAM,GAAKhuE,IAAMkuE,KAAK,GAAKluE,EAAG+L,OAAO,EAElE,KAAK/L,EAAI,EAAS,IAALA,EAAWA,IAAMguE,EAAM,IAAMhuE,IAAMkuE,KAAK,IAAMluE,EAAG+L,OAAO,EAErE,KAAK/L,EAAI,EAAS,GAALA,EAAUA,IAAMguE,EAAM,MAAQhuE,IAAMkuE,KAAK,GAAKluE,EAAG+L,OAAO,EAGrEiiE,GAAM,SAAWE,KAAK,IAAKniE,OAAO,GAClCiiE,EAAM,SAAWE,KAAK,IAAKniE,OAAO,GAClCiiE,EAAM,SAAWE,KAAK,IAAKniE,OAAO,GAClCiiE,EAAM,SAAWE,KAAK,IAAKniE,OAAO,GAClCiiE,EAAM,SAAWE,KAAK,IAAKniE,OAAO,GAElCiiE,EAAY,MAAME,KAAK,GAAIniE,OAAO,GAClCiiE,EAAU,IAAQE,KAAK,GAAIniE,OAAO,GAClCiiE,EAAa,OAAKE,KAAK,GAAIniE,OAAO,GAClCiiE,EAAY,MAAME,KAAK,GAAIniE,OAAO,GAElCiiE,EAAa,OAAKE,KAAK,GAAIniE,OAAO,GAClCiiE,EAAa,OAAKE,KAAK,GAAIniE,OAAO,GAClCiiE,EAAa,OAAKE,KAAK,GAAIniE,MAAO/K,QAClCgtE,EAAW,KAAOE,KAAK,GAAIniE,OAAO,GAClCiiE,EAAiB,WAAKE,KAAK,EAAGniE,OAAO,GACrCiiE,EAAW,KAAWE,KAAK,EAAGniE,OAAO,GACrCiiE,EAAY,MAAUE,KAAK,GAAIniE,OAAO,GACtCiiE,EAAW,KAAWE,KAAK,GAAIniE,OAAO,GACtCiiE,EAAM,WAAgBE,KAAK,GAAIniE,OAAO,GACtCiiE,EAAc,QAAQE,KAAK,GAAIniE,OAAO,GACtCiiE,EAAgB,UAAME,KAAK,GAAIniE,OAAO,GAEtCiiE,EAAM,MAAYE,KAAK,IAAKniE,OAAO,GACnCiiE,EAAM,MAAYE,KAAK,IAAKniE,OAAO,GACnCiiE,EAAM,MAAYE,KAAK,IAAKniE,OAAO,GACnCiiE,EAAM,MAAYE,KAAK,IAAKniE,OAAO,EAInC,IAAIoiE,GAAO,SAASnqE,GAAQoqE,EAAYpqE,EAAM,YAC1CqqE,EAAK,SAASrqE,GAAQoqE,EAAYpqE,EAAM,UAGxCoqE,EAAc,SAASpqE,EAAM1C,GAC/B,GAAoCN,SAAhC6sE,EAAOvsE,GAAM0C,EAAMsqE,SAAwB,CAE7C,IAAK,GADDC,GAAQV,EAAOvsE,GAAM0C,EAAMsqE,SACtBtuE,EAAI,EAAGA,EAAIuuE,EAAMpuE,OAAQH,IACTgB,SAAnButE,EAAMvuE,GAAG+L,MACXwiE,EAAMvuE,GAAGmU,GAAGnQ,GAEa,GAAlBuqE,EAAMvuE,GAAG+L,OAAmC,GAAlB/H,EAAM6sC,SACvC09B,EAAMvuE,GAAGmU,GAAGnQ,GAEa,GAAlBuqE,EAAMvuE,GAAG+L,OAAoC,GAAlB/H,EAAM6sC,UACxC09B,EAAMvuE,GAAGmU,GAAGnQ,EAIM,IAAlBD,GACFC,EAAMD,kBA4FZ,OAtFA6pE,GAAiBl+C,KAAO,SAAStsB,EAAKJ,EAAU1B,GAI9C,GAHaN,SAATM,IACFA,EAAO,WAEUN,SAAfgtE,EAAM5qE,GACR,KAAM,IAAIrF,OAAM,oBAAsBqF,EAEFpC,UAAlC6sE,EAAOvsE,GAAM0sE,EAAM5qE,GAAK8qE,QAC1BL,EAAOvsE,GAAM0sE,EAAM5qE,GAAK8qE,UAE1BL,EAAOvsE,GAAM0sE,EAAM5qE,GAAK8qE,MAAMxrE,MAAMyR,GAAGnR,EAAU+I,MAAMiiE,EAAM5qE,GAAK2I,SAKpE6hE,EAAiBY,QAAU,SAASxrE,EAAU1B,GAC/BN,SAATM,IACFA,EAAO,UAET,KAAK,GAAI8B,KAAO4qE,GACVA,EAAM1tE,eAAe8C,IACvBwqE,EAAiBl+C,KAAKtsB,EAAIJ,EAAS1B,IAMzCssE,EAAiBa,OAAS,SAASzqE,GACjC,IAAK,GAAIZ,KAAO4qE,GACd,GAAIA,EAAM1tE,eAAe8C,GAAM,CAC7B,GAAsB,GAAlBY,EAAM6sC,UAAwC,GAApBm9B,EAAM5qE,GAAK2I,OAAiB/H,EAAMsqE,SAAWN,EAAM5qE,GAAK8qE,KACpF,MAAO9qE,EAEJ,IAAsB,GAAlBY,EAAM6sC,UAAyC,GAApBm9B,EAAM5qE,GAAK2I,OAAkB/H,EAAMsqE,SAAWN,EAAM5qE,GAAK8qE,KAC3F,MAAO9qE,EAEJ,IAAIY,EAAMsqE,SAAWN,EAAM5qE,GAAK8qE,MAAe,SAAP9qE,EAC3C,MAAOA,GAIb,MAAO,wCAITwqE,EAAiBrD,OAAS,SAASnnE,EAAKJ,EAAU1B,GAIhD,GAHaN,SAATM,IACFA,EAAO,WAEUN,SAAfgtE,EAAM5qE,GACR,KAAM,IAAIrF,OAAM,oBAAsBqF,EAExC,IAAiBpC,SAAbgC,EAAwB,CAC1B,GAAI0rE,MACAH,EAAQV,EAAOvsE,GAAM0sE,EAAM5qE,GAAK8qE,KACpC,IAAcltE,SAAVutE,EACF,IAAK,GAAIvuE,GAAI,EAAGA,EAAIuuE,EAAMpuE,OAAQH,KAC1BuuE,EAAMvuE,GAAGmU,IAAMnR,GAAYurE,EAAMvuE,GAAG+L,OAASiiE,EAAM5qE,GAAK2I,QAC5D2iE,EAAYhsE,KAAKmrE,EAAOvsE,GAAM0sE,EAAM5qE,GAAK8qE,MAAMluE,GAIrD6tE,GAAOvsE,GAAM0sE,EAAM5qE,GAAK8qE,MAAQQ,MAGhCb,GAAOvsE,GAAM0sE,EAAM5qE,GAAK8qE,UAK5BN,EAAiB/nB,MAAQ,WACvBgoB,GAAUC,WAAYC,WAIxBH,EAAiBv/D,QAAU,WACzBw/D,GAAUC,WAAYC,UACtBv5D,EAAU3Q,oBAAoB,UAAWsqE,GAAM,GAC/C35D,EAAU3Q,oBAAoB,QAASwqE,GAAI,IAI7C75D,EAAUnR,iBAAiB,UAAU8qE,GAAK,GAC1C35D,EAAUnR,iBAAiB,QAAQgrE,GAAG,GAG/BT,EAGT,MAAO1sB,MAQL,SAASlnD,EAAQD,EAASM,GAE9B,GAAIszE,IAA0D,SAASgB,EAAQ30E,IAM/E,SAAWgH,GA+RP,QAAS4tE,GAAI7uE,EAAGa,EAAGhG,GACf,OAAQsF,UAAUC,QACd,IAAK,GAAG,MAAY,OAALJ,EAAYA,EAAIa,CAC/B,KAAK,GAAG,MAAY,OAALb,EAAYA,EAAS,MAALa,EAAYA,EAAIhG,CAC/C,SAAS,KAAM,IAAImD,OAAM,iBAIjC,QAAS8wE,GAAW9uE,EAAGa,GACnB,MAAON,IAAe5F,KAAKqF,EAAGa,GAGlC,QAASkuE,KAGL,OACIC,OAAQ,EACRC,gBACAC,eACApwD,SAAW,GACXqwD,cAAgB,EAChBC,WAAY,EACZC,aAAe,KACfC,eAAgB,EAChBC,iBAAkB,EAClBC,KAAK,GAIb,QAASC,GAASC,GACVzxE,GAAO0xE,+BAAgC,GAChB,mBAAZ/7C,UAA2BA,QAAQg8C,MAC9Ch8C,QAAQg8C,KAAK,wBAA0BF,GAI/C,QAASG,GAAUH,EAAKt7D,GACpB,GAAI07D,IAAY,CAChB,OAAO/vE,GAAO,WAKV,MAJI+vE,KACAL,EAASC,GACTI,GAAY,GAET17D,EAAGrB,MAAM3Y,KAAM+F,YACvBiU,GAGP,QAAS27D,GAAgB9+D,EAAMy+D,GACtBM,GAAa/+D,KACdw+D,EAASC,GACTM,GAAa/+D,IAAQ,GAI7B,QAASg/D,GAASC,EAAMl+D,GACpB,MAAO,UAAUhS,GACb,MAAOmwE,GAAaD,EAAKv1E,KAAKP,KAAM4F,GAAIgS,IAGhD,QAASo+D,GAAgBF,EAAMG,GAC3B,MAAO,UAAUrwE,GACb,MAAO5F,MAAKk2E,aAAaC,QAAQL,EAAKv1E,KAAKP,KAAM4F,GAAIqwE,IAI7D,QAASG,GAAUxwE,EAAGa,GAElB,GAGI4vE,GAASC,EAHTC,EAA0C,IAAvB9vE,EAAE2yB,OAASxzB,EAAEwzB,SAAiB3yB,EAAE8yB,QAAU3zB,EAAE2zB,SAE/D+M,EAAS1gC,EAAEqzB,QAAQplB,IAAI0iE,EAAgB,SAa3C,OAViB,GAAb9vE,EAAI6/B,GACJ+vC,EAAUzwE,EAAEqzB,QAAQplB,IAAI0iE,EAAiB,EAAG,UAE5CD,GAAU7vE,EAAI6/B,IAAWA,EAAS+vC,KAElCA,EAAUzwE,EAAEqzB,QAAQplB,IAAI0iE,EAAiB,EAAG,UAE5CD,GAAU7vE,EAAI6/B,IAAW+vC,EAAU/vC,MAG9BiwC,EAAiBD,GAc9B,QAASE,GAAgBnxC,EAAQxC,EAAM4zC,GACnC,GAAIC,EAEJ,OAAgB,OAAZD,EAEO5zC,EAEgB,MAAvBwC,EAAOsxC,aACAtxC,EAAOsxC,aAAa9zC,EAAM4zC,GACX,MAAfpxC,EAAOuxC,MAEdF,EAAOrxC,EAAOuxC,KAAKH,GACfC,GAAe,GAAP7zC,IACRA,GAAQ,IAEP6zC,GAAiB,KAAT7zC,IACTA,EAAO,GAEJA,GAGAA,EAQf,QAASg0C,MAIT,QAASC,GAAOC,EAAQC,GAChBA,KAAiB,GACjBC,EAAcF,GAElBG,EAAWl3E,KAAM+2E,GACjB/2E,KAAK+4B,GAAK,GAAIn0B,OAAMmyE,EAAOh+C,IAGvBo+C,MAAqB,IACrBA,IAAmB,EACnBtzE,GAAOuzE,aAAap3E,MACpBm3E,IAAmB,GAK3B,QAASE,GAASjnE,GACd,GAAIknE,GAAkBC,EAAqBnnE,GACvConE,EAAQF,EAAgBl+C,MAAQ,EAChCq+C,EAAWH,EAAgBI,SAAW,EACtCC,EAASL,EAAgB/9C,OAAS,EAClCq+C,EAAQN,EAAgBO,MAAQ,EAChCC,EAAOR,EAAgBp+C,KAAO,EAC9B+E,EAAQq5C,EAAgBz0C,MAAQ,EAChC3E,EAAUo5C,EAAgB10C,QAAU,EACpCzE,EAAUm5C,EAAgB30C,QAAU,EACpCvE,EAAek5C,EAAgB50C,aAAe,CAGlD1iC,MAAK+3E,eAAiB35C,EACR,IAAVD,EACU,IAAVD,EACQ,KAARD,EAGJj+B,KAAKg4E,OAASF,EACF,EAARF,EAIJ53E,KAAKi4E,SAAWN,EACD,EAAXF,EACQ,GAARD,EAEJx3E,KAAKwT,SAELxT,KAAKk4E,QAAUr0E,GAAOqyE,aAEtBl2E,KAAKm4E,UAQT,QAASxyE,GAAOC,EAAGa,GACf,IAAK,GAAIZ,KAAKY,GACNiuE,EAAWjuE,EAAGZ,KACdD,EAAEC,GAAKY,EAAEZ,GAYjB,OARI6uE,GAAWjuE,EAAG,cACdb,EAAEF,SAAWe,EAAEf,UAGfgvE,EAAWjuE,EAAG,aACdb,EAAEyB,QAAUZ,EAAEY,SAGXzB,EAGX,QAASsxE,GAAWjtD,EAAID,GACpB,GAAInkB,GAAGK,EAAMkyE,CAiCb,IA/BqC,mBAA1BpuD,GAAKquD,mBACZpuD,EAAGouD,iBAAmBruD,EAAKquD,kBAER,mBAAZruD,GAAKsuD,KACZruD,EAAGquD,GAAKtuD,EAAKsuD,IAEM,mBAAZtuD,GAAKuuD,KACZtuD,EAAGsuD,GAAKvuD,EAAKuuD,IAEM,mBAAZvuD,GAAKwuD,KACZvuD,EAAGuuD,GAAKxuD,EAAKwuD,IAEW,mBAAjBxuD,GAAKyuD,UACZxuD,EAAGwuD,QAAUzuD,EAAKyuD,SAEG,mBAAdzuD,GAAK0uD,OACZzuD,EAAGyuD,KAAO1uD,EAAK0uD,MAEQ,mBAAhB1uD,GAAK2uD,SACZ1uD,EAAG0uD,OAAS3uD,EAAK2uD,QAEO,mBAAjB3uD,GAAK4uD,UACZ3uD,EAAG2uD,QAAU5uD,EAAK4uD,SAEE,mBAAb5uD,GAAK6uD,MACZ5uD,EAAG4uD,IAAM7uD,EAAK6uD,KAEU,mBAAjB7uD,GAAKkuD,UACZjuD,EAAGiuD,QAAUluD,EAAKkuD,SAGlBY,GAAiB9yE,OAAS,EAC1B,IAAKH,IAAKizE,IACN5yE,EAAO4yE,GAAiBjzE,GACxBuyE,EAAMpuD,EAAK9jB,GACQ,mBAARkyE,KACPnuD,EAAG/jB,GAAQkyE,EAKvB,OAAOnuD,GAGX,QAAS8uD,GAASC,GACd,MAAa,GAATA,EACOx0E,KAAK41C,KAAK4+B,GAEVx0E,KAAKgB,MAAMwzE,GAM1B,QAASjD,GAAaiD,EAAQC,EAAcC,GAIxC,IAHA,GAAIC,GAAS,GAAK30E,KAAK+mB,IAAIytD,GACvBtpD,EAAOspD,GAAU,EAEdG,EAAOnzE,OAASizE,GACnBE,EAAS,IAAMA,CAEnB,QAAQzpD,EAAQwpD,EAAY,IAAM,GAAM,KAAOC,EAGnD,QAASC,GAA0BC,EAAMpzE,GACrC,GAAIqzE,IAAOl7C,aAAc,EAAGu5C,OAAQ,EAUpC,OARA2B,GAAI3B,OAAS1xE,EAAMszB,QAAU8/C,EAAK9/C,QACC,IAA9BtzB,EAAMmzB,OAASigD,EAAKjgD,QACrBigD,EAAKpgD,QAAQplB,IAAIylE,EAAI3B,OAAQ,KAAK4B,QAAQtzE,MACxCqzE,EAAI3B,OAGV2B,EAAIl7C,cAAgBn4B,GAAUozE,EAAKpgD,QAAQplB,IAAIylE,EAAI3B,OAAQ,KAEpD2B,EAGX,QAASE,GAAkBH,EAAMpzE,GAC7B,GAAIqzE,EAUJ,OATArzE,GAAQwzE,EAAOxzE,EAAOozE,GAClBA,EAAKK,SAASzzE,GACdqzE,EAAMF,EAA0BC,EAAMpzE,IAEtCqzE,EAAMF,EAA0BnzE,EAAOozE,GACvCC,EAAIl7C,cAAgBk7C,EAAIl7C,aACxBk7C,EAAI3B,QAAU2B,EAAI3B,QAGf2B,EAIX,QAASK,GAAY59C,EAAWllB,GAC5B,MAAO,UAAUuhE,EAAKnC,GAClB,GAAI2D,GAAKC,CAUT,OARe,QAAX5D,GAAoBjxE,OAAOixE,KAC3BN,EAAgB9+D,EAAM,YAAcA,EAAQ,uDAAyDA,EAAO,qBAC5GgjE,EAAMzB,EAAKA,EAAMnC,EAAQA,EAAS4D,GAGtCzB,EAAqB,gBAARA,IAAoBA,EAAMA,EACvCwB,EAAM/1E,GAAOuM,SAASgoE,EAAKnC,GAC3B6D,EAAgC95E,KAAM45E,EAAK79C,GACpC/7B,MAIf,QAAS85E,GAAgCC,EAAK3pE,EAAU4pE,EAAU5C,GAC9D,GAAIh5C,GAAehuB,EAAS2nE,cACxBD,EAAO1nE,EAAS4nE,MAChBL,EAASvnE,EAAS6nE,OACtBb,GAA+B,MAAhBA,GAAuB,EAAOA,EAEzCh5C,GACA27C,EAAIhhD,GAAGkhD,SAASF,EAAIhhD,GAAKqF,EAAe47C,GAExClC,GACAoC,GAAUH,EAAK,OAAQI,GAAUJ,EAAK,QAAUjC,EAAOkC,GAEvDrC,GACAyC,GAAeL,EAAKI,GAAUJ,EAAK,SAAWpC,EAASqC,GAEvD5C,GACAvzE,GAAOuzE,aAAa2C,EAAKjC,GAAQH,GAKzC,QAASpxE,GAAQ8zE,GACb,MAAiD,mBAA1CzzE,OAAOmN,UAAUrO,SAASnF,KAAK85E,GAG1C,QAAS11E,GAAO01E,GACZ,MAAiD,kBAA1CzzE,OAAOmN,UAAUrO,SAASnF,KAAK85E,IAClCA,YAAiBz1E,MAIzB,QAAS01E,GAAcpT,EAAQC,EAAQoT,GACnC,GAGI10E,GAHAC,EAAMtB,KAAKL,IAAI+iE,EAAOlhE,OAAQmhE,EAAOnhE,QACrCw0E,EAAah2E,KAAK+mB,IAAI27C,EAAOlhE,OAASmhE,EAAOnhE,QAC7Cy0E,EAAQ,CAEZ,KAAK50E,EAAI,EAAOC,EAAJD,EAASA,KACZ00E,GAAerT,EAAOrhE,KAAOshE,EAAOthE,KACnC00E,GAAeG,EAAMxT,EAAOrhE,MAAQ60E,EAAMvT,EAAOthE,MACnD40E,GAGR,OAAOA,GAAQD,EAGnB,QAASG,GAAeC,GACpB,GAAIA,EAAO,CACP,GAAIC,GAAUD,EAAMr1C,cAAcz6B,QAAQ,QAAS,KACnD8vE,GAAQE,GAAYF,IAAUG,GAAeF,IAAYA,EAE7D,MAAOD,GAGX,QAASrD,GAAqByD,GAC1B,GACIC,GACA/0E,EAFAoxE,IAIJ,KAAKpxE,IAAQ80E,GACLtG,EAAWsG,EAAa90E,KACxB+0E,EAAiBN,EAAez0E,GAC5B+0E,IACA3D,EAAgB2D,GAAkBD,EAAY90E,IAK1D,OAAOoxE,GAGX,QAAS4D,GAAS9rE,GACd,GAAIwI,GAAOujE,CAEX,IAA8B,IAA1B/rE,EAAMpI,QAAQ,QACd4Q,EAAQ,EACRujE,EAAS,UAER,CAAA,GAA+B,IAA3B/rE,EAAMpI,QAAQ,SAKnB,MAJA4Q,GAAQ,GACRujE,EAAS,QAMbt3E,GAAOuL,GAAS,SAAUmzB,EAAQ75B,GAC9B,GAAI7C,GAAGu1E,EACHthE,EAASjW,GAAOq0E,QAAQ9oE,GACxBisE,IAYJ,IAVsB,gBAAX94C,KACP75B,EAAQ65B,EACRA,EAAS17B,GAGbu0E,EAAS,SAAUv1E,GACf,GAAIrF,GAAIqD,KAASy3E,MAAMC,IAAIJ,EAAQt1E,EACnC,OAAOiU,GAAOvZ,KAAKsD,GAAOq0E,QAAS13E,EAAG+hC,GAAU,KAGvC,MAAT75B,EACA,MAAO0yE,GAAO1yE,EAGd,KAAK7C,EAAI,EAAO+R,EAAJ/R,EAAWA,IACnBw1E,EAAQ9yE,KAAK6yE,EAAOv1E,GAExB,OAAOw1E,IAKnB,QAASX,GAAMc,GACX,GAAIC,IAAiBD,EACjBl3E,EAAQ,CAUZ,OARsB,KAAlBm3E,GAAuBC,SAASD,KAE5Bn3E,EADAm3E,GAAiB,EACTj3E,KAAKgB,MAAMi2E,GAEXj3E,KAAK41C,KAAKqhC,IAInBn3E,EAGX,QAASq3E,GAAYviD,EAAMG,GACvB,MAAO,IAAI30B,MAAKA,KAAKg3E,IAAIxiD,EAAMG,EAAQ,EAAG,IAAIsiD,aAGlD,QAASC,GAAY1iD,EAAM2iD,EAAKC,GAC5B,MAAOC,IAAWp4E,IAAQu1B,EAAM,GAAI,GAAK2iD,EAAMC,IAAOD,EAAKC,GAAKnE;CAGpE,QAASqE,GAAW9iD,GAChB,MAAO+iD,GAAW/iD,GAAQ,IAAM,IAGpC,QAAS+iD,GAAW/iD,GAChB,MAAQA,GAAO,IAAM,GAAKA,EAAO,MAAQ,GAAMA,EAAO,MAAQ,EAGlE,QAAS69C,GAAcz2E,GACnB,GAAIkkB,EACAlkB,GAAE47E,IAAyB,KAAnB57E,EAAEq4E,IAAIn0D,WACdA,EACIlkB,EAAE47E,GAAGC,IAAS,GAAK77E,EAAE47E,GAAGC,IAAS,GAAKA,GACtC77E,EAAE47E,GAAGE,IAAQ,GAAK97E,EAAE47E,GAAGE,IAAQX,EAAYn7E,EAAE47E,GAAGG,IAAO/7E,EAAE47E,GAAGC,KAAUC,GACtE97E,EAAE47E,GAAGI,IAAQ,GAAKh8E,EAAE47E,GAAGI,IAAQ,IACX,KAAfh8E,EAAE47E,GAAGI,MAAkC,IAAjBh8E,EAAE47E,GAAGK,KACY,IAAjBj8E,EAAE47E,GAAGM,KACiB,IAAtBl8E,EAAE47E,GAAGO,KAAuBH,GACvDh8E,EAAE47E,GAAGK,IAAU,GAAKj8E,EAAE47E,GAAGK,IAAU,GAAKA,GACxCj8E,EAAE47E,GAAGM,IAAU,GAAKl8E,EAAE47E,GAAGM,IAAU,GAAKA,GACxCl8E,EAAE47E,GAAGO,IAAe,GAAKn8E,EAAE47E,GAAGO,IAAe,IAAMA,GACnD,GAEAn8E,EAAEq4E,IAAI+D,qBAAkCL,GAAX73D,GAAmBA,EAAW43D,MAC3D53D,EAAW43D,IAGf97E,EAAEq4E,IAAIn0D,SAAWA,GAIzB,QAASm4D,GAAQr8E,GAiBb,MAhBkB,OAAdA,EAAEs8E,WACFt8E,EAAEs8E,UAAY93E,MAAMxE,EAAEu4B,GAAGgkD,YACrBv8E,EAAEq4E,IAAIn0D,SAAW,IAChBlkB,EAAEq4E,IAAIjE,QACNp0E,EAAEq4E,IAAI5D,eACNz0E,EAAEq4E,IAAI7D,YACNx0E,EAAEq4E,IAAI3D,gBACN10E,EAAEq4E,IAAI1D,gBAEP30E,EAAEi4E,UACFj4E,EAAEs8E,SAAWt8E,EAAEs8E,UACa,IAAxBt8E,EAAEq4E,IAAI9D,eACwB,IAA9Bv0E,EAAEq4E,IAAIhE,aAAa7uE,QACnBxF,EAAEq4E,IAAImE,UAAYn2E,IAGvBrG,EAAEs8E,SAGb,QAASG,GAAgBh0E,GACrB,MAAOA,GAAMA,EAAIs8B,cAAcz6B,QAAQ,IAAK,KAAO7B,EAMvD,QAASi0E,GAAaC,GAGlB,IAFA,GAAW7wD,GAAGpD,EAAMmc,EAAQ/8B,EAAxBzC,EAAI,EAEDA,EAAIs3E,EAAMn3E,QAAQ,CAKrB,IAJAsC,EAAQ20E,EAAgBE,EAAMt3E,IAAIyC,MAAM,KACxCgkB,EAAIhkB,EAAMtC,OACVkjB,EAAO+zD,EAAgBE,EAAMt3E,EAAI,IACjCqjB,EAAOA,EAAOA,EAAK5gB,MAAM,KAAO,KACzBgkB,EAAI,GAAG,CAEV,GADA+Y,EAAS+3C,EAAW90E,EAAMsD,MAAM,EAAG0gB,GAAG9jB,KAAK,MAEvC,MAAO68B,EAEX,IAAInc,GAAQA,EAAKljB,QAAUsmB,GAAKguD,EAAchyE,EAAO4gB,GAAM,IAASoD,EAAI,EAEpE,KAEJA,KAEJzmB,IAEJ,MAAO,MAGX,QAASu3E,GAAWvmE,GAChB,GAAIwmE,GAAY,IAChB,KAAKp0C,GAAQpyB,IAASymE,GAClB,IACID,EAAYx5E,GAAOwhC,UACjB,WAAkC,GAAI1N,GAAI,GAAI/zB,OAAM,gCAAiE,MAA7B+zB,GAAEo8C,KAAO,mBAA0Bp8C,KAE7H9zB,GAAOwhC,OAAOg4C,GAChB,MAAO1lD,IAEb,MAAOsR,IAAQpyB,GAKnB,QAAS4iE,GAAOY,EAAOkD,GACnB,GAAIjE,GAAKvsD,CACT,OAAIwwD,GAAM5E,QACNW,EAAMiE,EAAMtkD,QACZlM,GAAQlpB,GAAOyD,SAAS+yE,IAAU11E,EAAO01E,IAChCA,GAASx2E,GAAOw2E,KAAYf,EAErCA,EAAIvgD,GAAGkhD,SAASX,EAAIvgD,GAAKhM,GACzBlpB,GAAOuzE,aAAakC,GAAK,GAClBA,GAEAz1E,GAAOw2E,GAAOmD,QA6N7B,QAASC,GAAuBpD,GAC5B,MAAIA,GAAMx1E,MAAM,YACLw1E,EAAMvvE,QAAQ,WAAY,IAE9BuvE,EAAMvvE,QAAQ,MAAO,IAGhC,QAAS4yE,GAAmBn7C,GACxB,GAA4C18B,GAAGG,EAA3C+C,EAAQw5B,EAAO19B,MAAM84E,GAEzB,KAAK93E,EAAI,EAAGG,EAAS+C,EAAM/C,OAAYA,EAAJH,EAAYA,IAEvCkD,EAAMlD,GADN+3E,GAAqB70E,EAAMlD,IAChB+3E,GAAqB70E,EAAMlD,IAE3B43E,EAAuB10E,EAAMlD,GAIhD,OAAO,UAAUk0E,GACb,GAAIZ,GAAS,EACb,KAAKtzE,EAAI,EAAOG,EAAJH,EAAYA,IACpBszE,GAAUpwE,EAAMlD,YAAcouC,UAAWlrC,EAAMlD,GAAGtF,KAAKw5E,EAAKx3C,GAAUx5B,EAAMlD,EAEhF,OAAOszE,IAKf,QAAS0E,GAAar9E,EAAG+hC,GACrB,MAAK/hC,GAAEq8E,WAIPt6C,EAASu7C,EAAav7C,EAAQ/hC,EAAE01E,cAE3B6H,GAAgBx7C,KACjBw7C,GAAgBx7C,GAAUm7C,EAAmBn7C,IAG1Cw7C,GAAgBx7C,GAAQ/hC,IATpBA,EAAE01E,aAAa8H,cAY9B,QAASF,GAAav7C,EAAQ8C,GAG1B,QAAS44C,GAA4B5D,GACjC,MAAOh1C,GAAO64C,eAAe7D,IAAUA,EAH3C,GAAIx0E,GAAI,CAOR,KADAs4E,GAAsBC,UAAY,EAC3Bv4E,GAAK,GAAKs4E,GAAsB7vE,KAAKi0B,IACxCA,EAASA,EAAOz3B,QAAQqzE,GAAuBF,GAC/CE,GAAsBC,UAAY,EAClCv4E,GAAK,CAGT,OAAO08B,GAUX,QAAS87C,GAAsBzY,EAAOmR,GAClC,GAAInxE,GAAGygE,EAAS0Q,EAAO0B,OACvB,QAAQ7S,GACR,IAAK,IACD,MAAO0Y,GACX,KAAK,OACD,MAAOC,GACX,KAAK,OACL,IAAK,OACL,IAAK,OACD,MAAOlY,GAASmY,GAAuBC,EAC3C,KAAK,IACL,IAAK,IACL,IAAK,IACD,MAAOC,GACX,KAAK,SACL,IAAK,QACL,IAAK,QACL,IAAK,QACD,MAAOrY,GAASsY,GAAsBC,EAC1C,KAAK,IACD,GAAIvY,EACA,MAAOiY,GAGf,KAAK,KACD,GAAIjY,EACA,MAAOwY,GAGf,KAAK,MACD,GAAIxY,EACA,MAAOkY,GAGf,KAAK,MACD,MAAOO,GACX,KAAK,MACL,IAAK,OACL,IAAK,KACL,IAAK,MACL,IAAK,OACD,MAAOC,GACX,KAAK,IACL,IAAK,IACD,MAAOhI,GAAOmB,QAAQ8G,cAC1B,KAAK,IACD,MAAOC,GACX,KAAK,IACD,MAAOC,GACX,KAAK,IACL,IAAK,KACD,MAAOC,GACX,KAAK,IACD,MAAOC,GACX,KAAK,OACD,MAAOC,GACX,KAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACD,MAAOhZ,GAASwY,GAAsBS,EAC1C,KAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,MAAOA,GACX,KAAK,KACD,MAAOjZ,GAAS0Q,EAAOmB,QAAQqH,cAAgBxI,EAAOmB,QAAQsH,oBAClE,SAEI,MADA55E,GAAI,GAAI65E,QAAOC,GAAaC,GAAe/Z,EAAM96D,QAAQ,KAAM,KAAM,OAK7E,QAAS80E,GAAoBC,GACzBA,EAASA,GAAU,EACnB,IAAIC,GAAqBD,EAAOh7E,MAAMs6E,QAClCY,EAAUD,EAAkBA,EAAkB95E,OAAS,OACvDyH,GAASsyE,EAAU,IAAIl7E,MAAMm7E,MAA0B,IAAK,EAAG,GAC/D9hD,IAAuB,GAAXzwB,EAAM,IAAWitE,EAAMjtE,EAAM,GAE7C,OAAoB,MAAbA,EAAM,GAAaywB,GAAWA,EAIzC,QAAS+hD,GAAwBra,EAAOyU,EAAOtD,GAC3C,GAAInxE,GAAGs6E,EAAgBnJ,EAAOqF,EAE9B,QAAQxW,GAER,IAAK,IACY,MAATyU,IACA6F,EAAc7D,IAA8B,GAApB3B,EAAML,GAAS,GAE3C,MAEJ,KAAK,IACL,IAAK,KACY,MAATA,IACA6F,EAAc7D,IAAS3B,EAAML,GAAS,EAE1C,MACJ,KAAK,MACL,IAAK,OACDz0E,EAAImxE,EAAOmB,QAAQiI,YAAY9F,EAAOzU,EAAOmR,EAAO0B,SAE3C,MAAL7yE,EACAs6E,EAAc7D,IAASz2E,EAEvBmxE,EAAO8B,IAAI5D,aAAeoF,CAE9B,MAEJ,KAAK,IACL,IAAK,KACY,MAATA,IACA6F,EAAc5D,IAAQ5B,EAAML,GAEhC,MACJ,KAAK,KACY,MAATA,IACA6F,EAAc5D,IAAQ5B,EAAMxvE,SAChBmvE,EAAMx1E,MAAM,WAAW,GAAI,KAE3C,MAEJ,KAAK,MACL,IAAK,OACY,MAATw1E,IACAtD,EAAOqJ,WAAa1F,EAAML,GAG9B,MAEJ,KAAK,KACD6F,EAAc3D,IAAQ14E,GAAOw8E,kBAAkBhG,EAC/C,MACJ,KAAK,OACL,IAAK,QACL,IAAK,SACD6F,EAAc3D,IAAQ7B,EAAML,EAC5B,MAEJ,KAAK,IACL,IAAK,IACDtD,EAAOuJ,UAAYjG,CAEnB,MAEJ,KAAK,IACL,IAAK,KACDtD,EAAO8B,IAAImE,SAAU,CAEzB,KAAK,IACL,IAAK,KACDkD,EAAc1D,IAAQ9B,EAAML,EAC5B,MAEJ,KAAK,IACL,IAAK,KACD6F,EAAczD,IAAU/B,EAAML,EAC9B,MAEJ,KAAK,IACL,IAAK,KACD6F,EAAcxD,IAAUhC,EAAML,EAC9B,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,OACD6F,EAAcvD,IAAejC,EAAuB,KAAhB,KAAOL,GAC3C,MAEJ,KAAK,IACDtD,EAAOh+C,GAAK,GAAIn0B,MAAK81E,EAAML,GAC3B,MAEJ,KAAK,IACDtD,EAAOh+C,GAAK,GAAIn0B,MAAyB,IAApBshB,WAAWm0D,GAChC,MAEJ,KAAK,IACL,IAAK,KACDtD,EAAOwJ,SAAU,EACjBxJ,EAAO2B,KAAOkH,EAAoBvF,EAClC,MAEJ,KAAK,KACL,IAAK,MACL,IAAK,OACDz0E,EAAImxE,EAAOmB,QAAQsI,cAAcnG,GAExB,MAALz0E,GACAmxE,EAAO0J,GAAK1J,EAAO0J,OACnB1J,EAAO0J,GAAM,EAAI76E,GAEjBmxE,EAAO8B,IAAI6H,eAAiBrG,CAEhC,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACDzU,EAAQA,EAAMr6D,OAAO,EAAG,EAE5B,KAAK,OACL,IAAK,OACL,IAAK,QACDq6D,EAAQA,EAAMr6D,OAAO,EAAG,GACpB8uE,IACAtD,EAAO0J,GAAK1J,EAAO0J,OACnB1J,EAAO0J,GAAG7a,GAAS8U,EAAML,GAE7B,MACJ,KAAK,KACL,IAAK,KACDtD,EAAO0J,GAAK1J,EAAO0J,OACnB1J,EAAO0J,GAAG7a,GAAS/hE,GAAOw8E,kBAAkBhG,IAIpD,QAASsG,GAAsB5J,GAC3B,GAAI/kB,GAAG4uB,EAAU/I,EAAM/0C,EAASi5C,EAAKC,EAAK6E,CAE1C7uB,GAAI+kB,EAAO0J,GACC,MAARzuB,EAAE8uB,IAAqB,MAAP9uB,EAAE+uB,GAAoB,MAAP/uB,EAAEgvB,GACjCjF,EAAM,EACNC,EAAM,EAMN4E,EAAWnM,EAAIziB,EAAE8uB,GAAI/J,EAAOqF,GAAGG,IAAON,GAAWp4E,KAAU,EAAG,GAAGu1B,MACjEy+C,EAAOpD,EAAIziB,EAAE+uB,EAAG,GAChBj+C,EAAU2xC,EAAIziB,EAAEgvB,EAAG,KAEnBjF,EAAMhF,EAAOmB,QAAQ+I,MAAMlF,IAC3BC,EAAMjF,EAAOmB,QAAQ+I,MAAMjF,IAE3B4E,EAAWnM,EAAIziB,EAAEkvB,GAAInK,EAAOqF,GAAGG,IAAON,GAAWp4E,KAAUk4E,EAAKC,GAAK5iD,MACrEy+C,EAAOpD,EAAIziB,EAAEA,EAAG,GAEL,MAAPA,EAAE/kD,GAEF61B,EAAUkvB,EAAE/kD,EACE8uE,EAAVj5C,KACE+0C,GAIN/0C,EAFc,MAAPkvB,EAAEr6B,EAECq6B,EAAEr6B,EAAIokD,EAGNA,GAGlB8E,EAAOM,GAAmBP,EAAU/I,EAAM/0C,EAASk5C,EAAKD,GAExDhF,EAAOqF,GAAGG,IAAQsE,EAAKznD,KACvB29C,EAAOqJ,WAAaS,EAAK1nD,UAO7B,QAASioD,GAAerK,GACpB,GAAIlxE,GAAGyzB,EAAkB+nD,EAAaC,EAAzBjH,IAEb,KAAItD,EAAOh+C,GAAX,CA6BA,IAzBAsoD,EAAcE,GAAiBxK,GAG3BA,EAAO0J,IAAyB,MAAnB1J,EAAOqF,GAAGE,KAAqC,MAApBvF,EAAOqF,GAAGC,KAClDsE,EAAsB5J,GAItBA,EAAOqJ,aACPkB,EAAY7M,EAAIsC,EAAOqF,GAAGG,IAAO8E,EAAY9E,KAEzCxF,EAAOqJ,WAAalE,EAAWoF,KAC/BvK,EAAO8B,IAAI+D,oBAAqB,GAGpCtjD,EAAOkoD,GAAYF,EAAW,EAAGvK,EAAOqJ,YACxCrJ,EAAOqF,GAAGC,IAAS/iD,EAAKmoD,cACxB1K,EAAOqF,GAAGE,IAAQhjD,EAAKuiD,cAQtBh2E,EAAI,EAAO,EAAJA,GAAyB,MAAhBkxE,EAAOqF,GAAGv2E,KAAcA,EACzCkxE,EAAOqF,GAAGv2E,GAAKw0E,EAAMx0E,GAAKw7E,EAAYx7E,EAI1C,MAAW,EAAJA,EAAOA,IACVkxE,EAAOqF,GAAGv2E,GAAKw0E,EAAMx0E,GAAsB,MAAhBkxE,EAAOqF,GAAGv2E,GAAqB,IAANA,EAAU,EAAI,EAAKkxE,EAAOqF,GAAGv2E,EAI7D,MAApBkxE,EAAOqF,GAAGI,KACgB,IAAtBzF,EAAOqF,GAAGK,KACY,IAAtB1F,EAAOqF,GAAGM,KACiB,IAA3B3F,EAAOqF,GAAGO,MACd5F,EAAO2K,UAAW,EAClB3K,EAAOqF,GAAGI,IAAQ,GAGtBzF,EAAOh+C,IAAMg+C,EAAOwJ,QAAUiB,GAAcG,IAAUhpE,MAAM,KAAM0hE,GAG/C,MAAftD,EAAO2B,MACP3B,EAAOh+C,GAAG6oD,cAAc7K,EAAOh+C,GAAG8oD,gBAAkB9K,EAAO2B,MAG3D3B,EAAO2K,WACP3K,EAAOqF,GAAGI,IAAQ,KAI1B,QAASsF,GAAe/K,GACpB,GAAIO,EAEAP,GAAOh+C,KAIXu+C,EAAkBC,EAAqBR,EAAOuB,IAC9CvB,EAAOqF,IACH9E,EAAgBl+C,KAChBk+C,EAAgB/9C,MAChB+9C,EAAgBp+C,KAAOo+C,EAAgBh+C,KACvCg+C,EAAgBz0C,KAChBy0C,EAAgB10C,OAChB00C,EAAgB30C,OAChB20C,EAAgB50C,aAGpB0+C,EAAerK,IAGnB,QAASwK,IAAiBxK,GACtB,GAAI/4C,GAAM,GAAIp5B,KACd,OAAImyE,GAAOwJ,SAEHviD,EAAI+jD,iBACJ/jD,EAAIyjD,cACJzjD,EAAI69C,eAGA79C,EAAIoF,cAAepF,EAAIgG,WAAYhG,EAAI+F,WAKvD,QAASi+C,IAA4BjL,GACjC,GAAIA,EAAOwB,KAAO10E,GAAOo+E,SAErB,WADAC,IAASnL,EAIbA,GAAOqF,MACPrF,EAAO8B,IAAIjE,OAAQ,CAGnB,IACI/uE,GAAGs8E,EAAaC,EAAQxc,EAAOyc,EAD/BxC,EAAS,GAAK9I,EAAOuB,GAErBgK,EAAezC,EAAO75E,OACtBu8E,EAAyB,CAI7B,KAFAH,EAAStE,EAAa/G,EAAOwB,GAAIxB,EAAOmB,SAASrzE,MAAM84E,QAElD93E,EAAI,EAAGA,EAAIu8E,EAAOp8E,OAAQH,IAC3B+/D,EAAQwc,EAAOv8E,GACfs8E,GAAetC,EAAOh7E,MAAMw5E,EAAsBzY,EAAOmR,SAAgB,GACrEoL,IACAE,EAAUxC,EAAOt0E,OAAO,EAAGs0E,EAAO74E,QAAQm7E,IACtCE,EAAQr8E,OAAS,GACjB+wE,EAAO8B,IAAI/D,YAAYvsE,KAAK85E,GAEhCxC,EAASA,EAAOj0E,MAAMi0E,EAAO74E,QAAQm7E,GAAeA,EAAYn8E,QAChEu8E,GAA0BJ,EAAYn8E,QAGtC43E,GAAqBhY,IACjBuc,EACApL,EAAO8B,IAAIjE,OAAQ,EAGnBmC,EAAO8B,IAAIhE,aAAatsE,KAAKq9D,GAEjCqa,EAAwBra,EAAOuc,EAAapL,IAEvCA,EAAO0B,UAAY0J,GACxBpL,EAAO8B,IAAIhE,aAAatsE,KAAKq9D,EAKrCmR,GAAO8B,IAAI9D,cAAgBuN,EAAeC,EACtC1C,EAAO75E,OAAS,GAChB+wE,EAAO8B,IAAI/D,YAAYvsE,KAAKs3E,GAI5B9I,EAAO8B,IAAImE,WAAY,GAAQjG,EAAOqF,GAAGI,KAAS,KAClDzF,EAAO8B,IAAImE,QAAUn2E,GAGzBkwE,EAAOqF,GAAGI,IAAQhG,EAAgBO,EAAOmB,QAASnB,EAAOqF,GAAGI,IACpDzF,EAAOuJ,WACfc,EAAerK,GACfE,EAAcF,GAGlB,QAAS4I,IAAevzE,GACpB,MAAOA,GAAEtB,QAAQ,sCAAuC,SAAU03E,EAAStW,EAAIC,EAAIC,EAAIqW,GACnF,MAAOvW,IAAMC,GAAMC,GAAMqW,IAKjC,QAAS/C,IAAatzE,GAClB,MAAOA,GAAEtB,QAAQ,yBAA0B,QAI/C,QAAS43E,IAA2B3L,GAChC,GAAI4L,GACAC,EAEAC,EACAh9E,EACAi9E,CAEJ,IAAyB,IAArB/L,EAAOwB,GAAGvyE,OAGV,MAFA+wE,GAAO8B,IAAI3D,eAAgB,OAC3B6B,EAAOh+C,GAAK,GAAIn0B,MAAKm+E,KAIzB,KAAKl9E,EAAI,EAAGA,EAAIkxE,EAAOwB,GAAGvyE,OAAQH,IAC9Bi9E,EAAe,EACfH,EAAazL,KAAeH,GACN,MAAlBA,EAAOwJ,UACPoC,EAAWpC,QAAUxJ,EAAOwJ,SAEhCoC,EAAW9J,IAAMlE,IACjBgO,EAAWpK,GAAKxB,EAAOwB,GAAG1yE,GAC1Bm8E,GAA4BW,GAEvB9F,EAAQ8F,KAKbG,GAAgBH,EAAW9J,IAAI9D,cAG/B+N,GAAqD,GAArCH,EAAW9J,IAAIhE,aAAa7uE,OAE5C28E,EAAW9J,IAAImK,MAAQF,GAEJ,MAAfD,GAAsCA,EAAfC,KACvBD,EAAcC,EACdF,EAAaD,GAIrBh9E,GAAOoxE,EAAQ6L,GAAcD,GAIjC,QAAST,IAASnL,GACd,GAAIlxE,GAAGo9E,EACHpD,EAAS9I,EAAOuB,GAChBzzE,EAAQq+E,GAASn+E,KAAK86E,EAE1B,IAAIh7E,EAAO,CAEP,IADAkyE,EAAO8B,IAAIzD,KAAM,EACZvvE,EAAI,EAAGo9E,EAAIE,GAASn9E,OAAYi9E,EAAJp9E,EAAOA,IACpC,GAAIs9E,GAASt9E,GAAG,GAAGd,KAAK86E,GAAS,CAE7B9I,EAAOwB,GAAK4K,GAASt9E,GAAG,IAAMhB,EAAM,IAAM,IAC1C,OAGR,IAAKgB,EAAI,EAAGo9E,EAAIG,GAASp9E,OAAYi9E,EAAJp9E,EAAOA,IACpC,GAAIu9E,GAASv9E,GAAG,GAAGd,KAAK86E,GAAS,CAC7B9I,EAAOwB,IAAM6K,GAASv9E,GAAG,EACzB,OAGJg6E,EAAOh7E,MAAMs6E,MACbpI,EAAOwB,IAAM,KAEjByJ,GAA4BjL,OAE5BA,GAAO+F,UAAW,EAK1B,QAASuG,IAAmBtM,GACxBmL,GAASnL,GACLA,EAAO+F,YAAa,UACb/F,GAAO+F,SACdj5E,GAAOy/E,wBAAwBvM,IAIvC,QAASppE,IAAIovC,EAAK/iC,GACd,GAAcnU,GAAVyzE,IACJ,KAAKzzE,EAAI,EAAGA,EAAIk3C,EAAI/2C,SAAUH,EAC1ByzE,EAAI/wE,KAAKyR,EAAG+iC,EAAIl3C,GAAIA,GAExB,OAAOyzE,GAGX,QAASiK,IAAkBxM,GACvB,GAAuByL,GAAnBnI,EAAQtD,EAAOuB,EACf+B,KAAUxzE,EACVkwE,EAAOh+C,GAAK,GAAIn0B,MACTD,EAAO01E,GACdtD,EAAOh+C,GAAK,GAAIn0B,OAAMy1E,GAC6B,QAA3CmI,EAAUgB,GAAgBz+E,KAAKs1E,IACvCtD,EAAOh+C,GAAK,GAAIn0B,OAAM49E,EAAQ,IACN,gBAAVnI,GACdgJ,GAAmBtM,GACZxwE,EAAQ8zE,IACftD,EAAOqF,GAAKzuE,GAAI0sE,EAAMzuE,MAAM,GAAI,SAAUgY,GACtC,MAAO1Y,UAAS0Y,EAAK,MAEzBw9D,EAAerK,IACU,gBAAZ,GACb+K,EAAe/K,GACU,gBAAZ,GAEbA,EAAOh+C,GAAK,GAAIn0B,MAAKy1E,GAErBx2E,GAAOy/E,wBAAwBvM,GAIvC,QAAS4K,IAASrvE,EAAG9R,EAAGyM,EAAGd,EAAG0gE,EAAGzgE,EAAGq3E,GAGhC,GAAInqD,GAAO,GAAI10B,MAAK0N,EAAG9R,EAAGyM,EAAGd,EAAG0gE,EAAGzgE,EAAGq3E,EAMtC,OAHQ,MAAJnxE,GACAgnB,EAAK6J,YAAY7wB,GAEdgnB,EAGX,QAASkoD,IAAYlvE,GACjB,GAAIgnB,GAAO,GAAI10B,MAAKA,KAAKg3E,IAAIjjE,MAAM,KAAM5S,WAIzC,OAHQ,MAAJuM,GACAgnB,EAAKoqD,eAAepxE,GAEjBgnB,EAGX,QAASqqD,IAAatJ,EAAOh1C,GACzB,GAAqB,gBAAVg1C,GACP,GAAKr1E,MAAMq1E,IAKP,GADAA,EAAQh1C,EAAOm7C,cAAcnG,GACR,gBAAVA,GACP,MAAO,UALXA,GAAQnvE,SAASmvE,EAAO,GAShC,OAAOA,GASX,QAASuJ,IAAkB/D,EAAQ7G,EAAQ6K,EAAeC,EAAUz+C,GAChE,MAAOA,GAAO0+C,aAAa/K,GAAU,IAAK6K,EAAehE,EAAQiE,GAGrE,QAASC,IAAaC,EAAgBH,EAAex+C,GACjD,GAAIj1B,GAAWvM,GAAOuM,SAAS4zE,GAAgBz4D,MAC3C4S,EAAU/P,GAAMhe,EAASuf,GAAG,MAC5BuO,EAAU9P,GAAMhe,EAASuf,GAAG,MAC5BsO,EAAQ7P,GAAMhe,EAASuf,GAAG,MAC1BmoD,EAAO1pD,GAAMhe,EAASuf,GAAG,MACzBgoD,EAASvpD,GAAMhe,EAASuf,GAAG,MAC3B6nD,EAAQppD,GAAMhe,EAASuf,GAAG,MAE1B5V,EAAOokB,EAAU8lD,GAAuB73E,IAAM,IAAK+xB,IACnC,IAAZD,IAAkB,MAClBA,EAAU+lD,GAAuBzjF,IAAM,KAAM09B,IACnC,IAAVD,IAAgB,MAChBA,EAAQgmD,GAAuB93E,IAAM,KAAM8xB,IAClC,IAAT65C,IAAe,MACfA,EAAOmM,GAAuBh3E,IAAM,KAAM6qE,IAC/B,IAAXH,IAAiB,MACjBA,EAASsM,GAAuBpX,IAAM,KAAM8K,IAClC,IAAVH,IAAgB,OAAS,KAAMA,EAKvC,OAHAz9D,GAAK,GAAK8pE,EACV9pE,EAAK,IAAMiqE,EAAiB,EAC5BjqE,EAAK,GAAKsrB,EACHu+C,GAAkBjrE,SAAUoB,GAgBvC,QAASkiE,IAAWlC,EAAKmK,EAAgBC,GACrC,GAEIC,GAFAj0E,EAAMg0E,EAAuBD,EAC7BG,EAAkBF,EAAuBpK,EAAI7gD,KAajD,OATImrD,GAAkBl0E,IAClBk0E,GAAmB,GAGDl0E,EAAM,EAAxBk0E,IACAA,GAAmB,GAGvBD,EAAiBvgF,GAAOk2E,GAAKlmE,IAAIwwE,EAAiB,MAE9CxM,KAAMrzE,KAAK41C,KAAKgqC,EAAejrD,YAAc,GAC7CC,KAAMgrD,EAAehrD,QAK7B,QAAS+nD,IAAmB/nD,EAAMy+C,EAAM/0C,EAASqhD,EAAsBD,GACnE,GAA6CI,GAAWnrD,EAApDlsB,EAAIu0E,GAAYpoD,EAAM,EAAG,GAAGmrD,WAOhC,OALAt3E,GAAU,IAANA,EAAU,EAAIA,EAClB61B,EAAqB,MAAXA,EAAkBA,EAAUohD,EACtCI,EAAYJ,EAAiBj3E,GAAKA,EAAIk3E,EAAuB,EAAI,IAAUD,EAAJj3E,EAAqB,EAAI,GAChGksB,EAAY,GAAK0+C,EAAO,IAAM/0C,EAAUohD,GAAkBI,EAAY,GAGlElrD,KAAMD,EAAY,EAAIC,EAAOA,EAAO,EACpCD,UAAWA,EAAY,EAAKA,EAAY+iD,EAAW9iD,EAAO,GAAKD,GAQvE,QAASqrD,IAAWzN,GAChB,GAEIuC,GAFAe,EAAQtD,EAAOuB,GACf/1C,EAASw0C,EAAOwB,EAKpB,OAFAxB,GAAOmB,QAAUnB,EAAOmB,SAAWr0E,GAAOqyE,WAAWa,EAAOyB,IAE9C,OAAV6B,GAAmB93C,IAAW17B,GAAuB,KAAVwzE,EACpCx2E,GAAO4gF,SAASzP,WAAW,KAGjB,gBAAVqF,KACPtD,EAAOuB,GAAK+B,EAAQtD,EAAOmB,QAAQwM,SAASrK,IAG5Cx2E,GAAOyD,SAAS+yE,GACT,GAAIvD,GAAOuD,GAAO,IAClB93C,EACHh8B,EAAQg8B,GACRmgD,GAA2B3L,GAE3BiL,GAA4BjL,GAGhCwM,GAAkBxM,GAGtBuC,EAAM,GAAIxC,GAAOC,GACbuC,EAAIoI,WAEJpI,EAAIzlE,IAAI,EAAG,KACXylE,EAAIoI,SAAW76E,GAGZyyE,IAyCX,QAASqL,IAAO3qE,EAAI4qE,GAChB,GAAItL,GAAKzzE,CAIT,IAHuB,IAAnB++E,EAAQ5+E,QAAgBO,EAAQq+E,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQ5+E,OACT,MAAOnC,KAGX,KADAy1E,EAAMsL,EAAQ,GACT/+E,EAAI,EAAGA,EAAI++E,EAAQ5+E,SAAUH,EAC1B++E,EAAQ/+E,GAAGmU,GAAIs/D,KACfA,EAAMsL,EAAQ/+E,GAGtB,OAAOyzE,GAsvBX,QAASc,IAAeL,EAAKz1E,GACzB,GAAIugF,EAGJ,OAAqB,gBAAVvgF,KACPA,EAAQy1E,EAAI7D,aAAaiK,YAAY77E,GAEhB,gBAAVA,IACAy1E,GAIf8K,EAAargF,KAAKL,IAAI41E,EAAIzgD,OAClBqiD,EAAY5B,EAAI3gD,OAAQ90B,IAChCy1E,EAAIhhD,GAAG,OAASghD,EAAIpB,OAAS,MAAQ,IAAM,SAASr0E,EAAOugF,GACpD9K,GAGX,QAASI,IAAUJ,EAAK+K,GACpB,MAAO/K,GAAIhhD,GAAG,OAASghD,EAAIpB,OAAS,MAAQ,IAAMmM,KAGtD,QAAS5K,IAAUH,EAAK+K,EAAMxgF,GAC1B,MAAa,UAATwgF,EACO1K,GAAeL,EAAKz1E,GAEpBy1E,EAAIhhD,GAAG,OAASghD,EAAIpB,OAAS,MAAQ,IAAMmM,GAAMxgF,GAIhE,QAASygF,IAAaD,EAAME,GACxB,MAAO,UAAU1gF,GACb,MAAa,OAATA,GACA41E,GAAUl6E,KAAM8kF,EAAMxgF,GACtBT,GAAOuzE,aAAap3E,KAAMglF,GACnBhlF,MAEAm6E,GAAUn6E,KAAM8kF,IAqCnC,QAASG,IAAanN,GAElB,MAAc,KAAPA,EAAa,OAGxB,QAASoN,IAAa1N,GAGlB,MAAe,QAARA,EAAiB,IAuL5B,QAAS2N,IAAmBtuE,GACxBhT,GAAOuM,SAAS4J,GAAGnD,GAAQ,WACvB,MAAO7W,MAAKwT,MAAMqD,IA2D1B,QAASuuE,IAAWC,GAEK,mBAAVC,SAGXC,GAAkBC,GAAY3hF,OAE1B2hF,GAAY3hF,OADZwhF,EACqB5P,EACb,uGAGA5xE,IAEaA,IAplF7B,IA/WA,GAAIA,IAIA0hF,GAGA1/E,GANA4/E,GAAU,QAEVD,GAAiC,mBAAXhR,IAA6C,mBAAX1sE,SAA0BA,SAAW0sE,EAAO1sE,OAAoB9H,KAATw0E,EAE/GpmD,GAAQ5pB,KAAK4pB,MACbjoB,GAAiBS,OAAOmN,UAAU5N,eAGlCo2E,GAAO,EACPF,GAAQ,EACRC,GAAO,EACPE,GAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,EAGd1zC,MAGA6vC,MAGAwE,GAA+B,mBAAXz9E,IAA0BA,GAAUA,EAAOD,QAG/D4jF,GAAkB,sBAClBkC,GAA0B,uDAI1BC,GAAmB,gIAGnBhI,GAAmB,qKACnBQ,GAAwB,6CAGxBmB,GAA2B,QAC3BR,GAA6B,UAC7BL,GAA4B,UAC5BG,GAA2B,gBAC3BS,GAAmB,MACnBN,GAAiB,mHACjBI,GAAqB,uBACrBC,GAAc,KACdH,GAAqB,aACrBC,GAAwB,yBAGxBZ,GAAqB,KACrBO,GAAsB,OACtBN,GAAwB,QACxBC,GAAuB,QACvBG,GAAsB,aACtBD,GAAyB,WAIzBwE,GAAW,4IAEX0C,GAAY,uBAEZzC,KACK,eAAgB,0BAChB,aAAc,sBACd,eAAgB,oBAChB,aAAc,iBACd,WAAY,gBAIjBC,KACK,gBAAiB,6BACjB,WAAY,wBACZ,QAAS,mBACT,KAAM,cAIXpD,GAAuB,kBAIvB6F,IADyB,0CAA0Cv9E,MAAM,MAErEw9E,aAAiB,EACjBC,QAAY,IACZC,QAAY,IACZC,MAAU,KACVC,KAAS,MACTC,OAAW,OACXC,MAAU,UAGdtL,IACI2I,GAAK,cACLr3E,EAAI,SACJ5L,EAAI,SACJ2L,EAAI,OACJc,EAAI,MACJo5E,EAAI,OACJr0B,EAAI,OACJ+uB,EAAI,UACJlU,EAAI,QACJyZ,EAAI,UACJh0E,EAAI,OACJi0E,IAAM,YACN5uD,EAAI,UACJqpD,EAAI,aACJE,GAAI,WACJJ,GAAI,eAGR/F,IACIyL,UAAY,YACZC,WAAa,aACbC,QAAU,UACVC,SAAW,WACXC,YAAc,eAIlB7I,MAGAkG,IACI73E,EAAG,GACH5L,EAAG,GACH2L,EAAG,GACHc,EAAG,GACH4/D,EAAG,IAIPga,GAAmB,gBAAgBv+E,MAAM,KACzCw+E,GAAe,kBAAkBx+E,MAAM,KAEvCs1E,IACI/Q,EAAO,WACH,MAAO7sE,MAAKu5B,QAAU,GAE1BwtD,IAAO,SAAUxkD,GACb,MAAOviC,MAAKk2E,aAAa8Q,YAAYhnF,KAAMuiC,IAE/C0kD,KAAO,SAAU1kD,GACb,MAAOviC,MAAKk2E,aAAayB,OAAO33E,KAAMuiC,IAE1C8jD,EAAO,WACH,MAAOrmF,MAAKs5B,QAEhBitD,IAAO,WACH,MAAOvmF,MAAKm5B,aAEhBlsB,EAAO,WACH,MAAOjN,MAAKk5B,OAEhBguD,GAAO,SAAU3kD,GACb,MAAOviC,MAAKk2E,aAAaiR,YAAYnnF,KAAMuiC,IAE/C6kD,IAAO,SAAU7kD,GACb,MAAOviC,MAAKk2E,aAAamR,cAAcrnF,KAAMuiC,IAEjD+kD,KAAO,SAAU/kD,GACb,MAAOviC,MAAKk2E,aAAaqR,SAASvnF,KAAMuiC,IAE5CyvB,EAAO,WACH,MAAOhyD,MAAK63E,QAEhBkJ,EAAO,WACH,MAAO/gF,MAAKwnF,WAEhBC,GAAO,WACH,MAAO1R,GAAa/1E,KAAKo5B,OAAS,IAAK,IAE3CsuD,KAAO,WACH,MAAO3R,GAAa/1E,KAAKo5B,OAAQ,IAErCuuD,MAAQ,WACJ,MAAO5R,GAAa/1E,KAAKo5B,OAAQ,IAErCwuD,OAAS,WACL,GAAIt1E,GAAItS,KAAKo5B,OAAQ1J,EAAOpd,GAAK,EAAI,IAAM,GAC3C,OAAOod,GAAOqmD,EAAavxE,KAAK+mB,IAAIjZ,GAAI,IAE5C4uE,GAAO,WACH,MAAOnL,GAAa/1E,KAAK4gF,WAAa,IAAK,IAE/CiH,KAAO,WACH,MAAO9R,GAAa/1E,KAAK4gF,WAAY,IAEzCkH,MAAQ,WACJ,MAAO/R,GAAa/1E,KAAK4gF,WAAY,IAEzCE,GAAO,WACH,MAAO/K,GAAa/1E,KAAK+nF,cAAgB,IAAK,IAElDC,KAAO,WACH,MAAOjS,GAAa/1E,KAAK+nF,cAAe,IAE5CE,MAAQ,WACJ,MAAOlS,GAAa/1E,KAAK+nF,cAAe,IAE5CpwD,EAAI,WACA,MAAO33B,MAAK8iC,WAEhBk+C,EAAI,WACA,MAAOhhF,MAAKkoF,cAEhBtiF,EAAO,WACH,MAAO5F,MAAKk2E,aAAaO,SAASz2E,KAAKi+B,QAASj+B,KAAKk+B,WAAW,IAEpEyuC,EAAO,WACH,MAAO3sE,MAAKk2E,aAAaO,SAASz2E,KAAKi+B,QAASj+B,KAAKk+B,WAAW,IAEpEpT,EAAO,WACH,MAAO9qB,MAAKi+B,SAEhB9xB,EAAO,WACH,MAAOnM,MAAKi+B,QAAU,IAAM,IAEhCz9B,EAAO,WACH,MAAOR,MAAKk+B,WAEhB9xB,EAAO,WACH,MAAOpM,MAAKm+B,WAEhBpT,EAAO,WACH,MAAO2vD,GAAM16E,KAAKo+B,eAAiB,MAEvC+pD,GAAO,WACH,MAAOpS,GAAa2E,EAAM16E,KAAKo+B,eAAiB,IAAK,IAEzDgqD,IAAO,WACH,MAAOrS,GAAa/1E,KAAKo+B,eAAgB,IAE7CiqD,KAAO,WACH,MAAOtS,GAAa/1E,KAAKo+B,eAAgB,IAE7CkqD,EAAO,WACH,GAAI1iF,GAAI5F,KAAKuoF,YACT9hF,EAAI,GAKR,OAJQ,GAAJb,IACAA,GAAKA,EACLa,EAAI,KAEDA,EAAIsvE,EAAa2E,EAAM90E,EAAI,IAAK,GAAK,IAAMmwE,EAAa2E,EAAM90E,GAAK,GAAI,IAElF4iF,GAAO,WACH,GAAI5iF,GAAI5F,KAAKuoF,YACT9hF,EAAI,GAKR,OAJQ,GAAJb,IACAA,GAAKA,EACLa,EAAI,KAEDA,EAAIsvE,EAAa2E,EAAM90E,EAAI,IAAK,GAAKmwE,EAAa2E,EAAM90E,GAAK,GAAI,IAE5EmY,EAAI,WACA,MAAO/d,MAAKyoF,YAEhBC,GAAK,WACD,MAAO1oF,MAAK2oF,YAEhBt2E,EAAO,WACH,MAAOrS,MAAKqH,WAEhBikB,EAAO,WACH,MAAOtrB,MAAK4oF,QAEhBtC,EAAI,WACA,MAAOtmF,MAAK03E,YAIpB9B,MAEAiT,IAAS,SAAU,cAAe,WAAY,gBAAiB,eAE/D1R,IAAmB,EAyFhB0P,GAAiB7gF,QACpBH,GAAIghF,GAAiB7pC,MACrB4gC,GAAqB/3E,GAAI,KAAOmwE,EAAgB4H,GAAqB/3E,IAAIA,GAE7E,MAAOihF,GAAa9gF,QAChBH,GAAIihF,GAAa9pC,MACjB4gC,GAAqB/3E,GAAIA,IAAKgwE,EAAS+H,GAAqB/3E,IAAI,EAEpE+3E,IAAqBkL,KAAOjT,EAAS+H,GAAqB2I,IAAK,GA0d/D5gF,EAAOkxE,EAAO9iE,WAEVwnE,IAAM,SAAUxE,GACZ,GAAI7wE,GAAML,CACV,KAAKA,IAAKkxE,GACN7wE,EAAO6wE,EAAOlxE,GACM,kBAATK,GACPlG,KAAK6F,GAAKK,EAEVlG,KAAK,IAAM6F,GAAKK,CAKxBlG,MAAKw/E,qBAAuB,GAAIC,QAAOz/E,KAAKu/E,cAAc5W,OAAS,IAAM,UAAUA,SAGvFsP,QAAU,wFAAwF3vE,MAAM,KACxGqvE,OAAS,SAAUn3E,GACf,MAAOR,MAAKi4E,QAAQz3E,EAAE+4B,UAG1BwvD,aAAe,kDAAkDzgF,MAAM,KACvE0+E,YAAc,SAAUxmF,GACpB,MAAOR,MAAK+oF,aAAavoF,EAAE+4B,UAG/B4mD,YAAc,SAAU6I,EAAWzmD,EAAQ8jC,GACvC,GAAIxgE,GAAGk0E,EAAKkP,CAQZ,KANKjpF,KAAKkpF,eACNlpF,KAAKkpF,gBACLlpF,KAAKmpF,oBACLnpF,KAAKopF,sBAGJvjF,EAAI,EAAO,GAAJA,EAAQA,IAAK,CAYrB,GAVAk0E,EAAMl2E,GAAOy3E,KAAK,IAAMz1E,IACpBwgE,IAAWrmE,KAAKmpF,iBAAiBtjF,KACjC7F,KAAKmpF,iBAAiBtjF,GAAK,GAAI45E,QAAO,IAAMz/E,KAAK23E,OAAOoC,EAAK,IAAIjvE,QAAQ,IAAK,IAAM,IAAK,KACzF9K,KAAKopF,kBAAkBvjF,GAAK,GAAI45E,QAAO,IAAMz/E,KAAKgnF,YAAYjN,EAAK,IAAIjvE,QAAQ,IAAK,IAAM,IAAK,MAE9Fu7D,GAAWrmE,KAAKkpF,aAAarjF,KAC9BojF,EAAQ,IAAMjpF,KAAK23E,OAAOoC,EAAK,IAAM,KAAO/5E,KAAKgnF,YAAYjN,EAAK,IAClE/5E,KAAKkpF,aAAarjF,GAAK,GAAI45E,QAAOwJ,EAAMn+E,QAAQ,IAAK,IAAK,MAG1Du7D,GAAqB,SAAX9jC,GAAqBviC,KAAKmpF,iBAAiBtjF,GAAGyI,KAAK06E,GAC7D,MAAOnjF,EACJ,IAAIwgE,GAAqB,QAAX9jC,GAAoBviC,KAAKopF,kBAAkBvjF,GAAGyI,KAAK06E,GACpE,MAAOnjF,EACJ,KAAKwgE,GAAUrmE,KAAKkpF,aAAarjF,GAAGyI,KAAK06E,GAC5C,MAAOnjF,KAKnBwjF,UAAY,2DAA2D/gF,MAAM,KAC7Ei/E,SAAW,SAAU/mF,GACjB,MAAOR,MAAKqpF,UAAU7oF,EAAE04B,QAG5BowD,eAAiB,8BAA8BhhF,MAAM,KACrD++E,cAAgB,SAAU7mF,GACtB,MAAOR,MAAKspF,eAAe9oF,EAAE04B,QAGjCqwD,aAAe,uBAAuBjhF,MAAM,KAC5C6+E,YAAc,SAAU3mF,GACpB,MAAOR,MAAKupF,aAAa/oF,EAAE04B,QAG/BsnD,cAAgB,SAAUgJ,GACtB,GAAI3jF,GAAGk0E,EAAKkP,CAMZ,KAJKjpF,KAAKypF,iBACNzpF,KAAKypF,mBAGJ5jF,EAAI,EAAO,EAAJA,EAAOA,IAQf,GANK7F,KAAKypF,eAAe5jF,KACrBk0E,EAAMl2E,IAAQ,IAAM,IAAIq1B,IAAIrzB,GAC5BojF,EAAQ,IAAMjpF,KAAKunF,SAASxN,EAAK,IAAM,KAAO/5E,KAAKqnF,cAActN,EAAK,IAAM,KAAO/5E,KAAKmnF,YAAYpN,EAAK,IACzG/5E,KAAKypF,eAAe5jF,GAAK,GAAI45E,QAAOwJ,EAAMn+E,QAAQ,IAAK,IAAK,MAG5D9K,KAAKypF,eAAe5jF,GAAGyI,KAAKk7E,GAC5B,MAAO3jF,IAKnB6jF,iBACIC,IAAM,YACNC,GAAK,SACLC,EAAI,aACJC,GAAK,eACLC,IAAM,kBACNC,KAAO,yBAEX9L,eAAiB,SAAUj1E,GACvB,GAAIkwE,GAASn5E,KAAK0pF,gBAAgBzgF,EAOlC,QANKkwE,GAAUn5E,KAAK0pF,gBAAgBzgF,EAAIkgC,iBACpCgwC,EAASn5E,KAAK0pF,gBAAgBzgF,EAAIkgC,eAAer+B,QAAQ,mBAAoB,SAAUstE,GACnF,MAAOA,GAAIxsE,MAAM,KAErB5L,KAAK0pF,gBAAgBzgF,GAAOkwE,GAEzBA,GAGXvC,KAAO,SAAUyD,GAGb,MAAiD,OAAxCA,EAAQ,IAAI90C,cAActf,OAAO,IAG9C+4D,eAAiB,gBACjBvI,SAAW,SAAUx4C,EAAOC,EAAS+rD,GACjC,MAAIhsD,GAAQ,GACDgsD,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAKhCC,WACIC,QAAU,gBACVC,QAAU,mBACVC,SAAW,eACXC,QAAU,oBACVC,SAAW,sBACXC,SAAW,KAEfC,SAAW,SAAUxhF,EAAK8wE,EAAK/7C,GAC3B,GAAIm7C,GAASn5E,KAAKkqF,UAAUjhF,EAC5B,OAAyB,kBAAXkwE,GAAwBA,EAAOxgE,MAAMohE,GAAM/7C,IAAQm7C,GAGrEuR,eACIC,OAAS,QACTC,KAAO,SACPx+E,EAAI,gBACJ5L,EAAI,WACJqqF,GAAK,aACL1+E,EAAI,UACJ2+E,GAAK,WACL79E,EAAI,QACJi6E,GAAK,UACLra,EAAI,UACJke,GAAK,YACLz4E,EAAI,SACJ04E,GAAK,YAGTjH,aAAe,SAAU/K,EAAQ6K,EAAehE,EAAQiE,GACpD,GAAI3K,GAASn5E,KAAK0qF,cAAc7K,EAChC,OAA0B,kBAAX1G,GACXA,EAAOH,EAAQ6K,EAAehE,EAAQiE,GACtC3K,EAAOruE,QAAQ,MAAOkuE,IAG9BiS,WAAa,SAAUl+D,EAAMosD,GACzB,GAAI52C,GAASviC,KAAK0qF,cAAc39D,EAAO,EAAI,SAAW,OACtD,OAAyB,kBAAXwV,GAAwBA,EAAO42C,GAAU52C,EAAOz3B,QAAQ,MAAOquE,IAGjFhD,QAAU,SAAU6C,GAChB,MAAOh5E,MAAKkrF,SAASpgF,QAAQ,KAAMkuE,IAEvCkS,SAAW,KACX3L,cAAgB,UAEhBmF,SAAW,SAAU7E,GACjB,MAAOA,IAGXsL,WAAa,SAAUtL,GACnB,MAAOA,IAGXhI,KAAO,SAAUkC,GACb,MAAOkC,IAAWlC,EAAK/5E,KAAKihF,MAAMlF,IAAK/7E,KAAKihF,MAAMjF,KAAKnE,MAG3DoJ,OACIlF,IAAM,EACNC,IAAM,GAGVkI,eAAiB,WACb,MAAOlkF,MAAKihF,MAAMlF,KAGtBqP,eAAiB,WACb,MAAOprF,MAAKihF,MAAMjF,KAGtBqP,aAAc,eACdrN,YAAa,WACT,MAAOh+E,MAAKqrF,gBA0yBpBxnF,GAAS,SAAUw2E,EAAO93C,EAAQ8C,EAAQghC,GACtC,GAAI5lE,EAiBJ,OAfuB,iBAAb,KACN4lE,EAAShhC,EACTA,EAASx+B,GAIbpG,KACAA,EAAE43E,kBAAmB,EACrB53E,EAAE63E,GAAK+B,EACP55E,EAAE83E,GAAKh2C,EACP9hC,EAAE+3E,GAAKnzC,EACP5kC,EAAEg4E,QAAUpS,EACZ5lE,EAAEk4E,QAAS,EACXl4E,EAAEo4E,IAAMlE,IAED6P,GAAW/jF,IAGtBoD,GAAO0xE,6BAA8B,EAErC1xE,GAAOy/E,wBAA0B7N,EAC7B,4LAIA,SAAUsB,GACNA,EAAOh+C,GAAK,GAAIn0B,MAAKmyE,EAAOuB,IAAMvB,EAAOwJ,QAAU,OAAS,OA0BpE18E,GAAOM,IAAM,WACT,GAAI4V,MAAUnO,MAAMrL,KAAKwF,UAAW,EAEpC,OAAO4+E,IAAO,WAAY5qE,IAG9BlW,GAAOO,IAAM,WACT,GAAI2V,MAAUnO,MAAMrL,KAAKwF,UAAW,EAEpC,OAAO4+E,IAAO,UAAW5qE,IAI7BlW,GAAOy3E,IAAM,SAAUjB,EAAO93C,EAAQ8C,EAAQghC,GAC1C,GAAI5lE,EAkBJ,OAhBuB,iBAAb,KACN4lE,EAAShhC,EACTA,EAASx+B,GAIbpG,KACAA,EAAE43E,kBAAmB,EACrB53E,EAAE8/E,SAAU,EACZ9/E,EAAEk4E,QAAS,EACXl4E,EAAE+3E,GAAKnzC,EACP5kC,EAAE63E,GAAK+B,EACP55E,EAAE83E,GAAKh2C,EACP9hC,EAAEg4E,QAAUpS,EACZ5lE,EAAEo4E,IAAMlE,IAED6P,GAAW/jF,GAAG66E,OAIzBz3E,GAAO+kF,KAAO,SAAUvO,GACpB,MAAOx2E,IAAe,IAARw2E,IAIlBx2E,GAAOuM,SAAW,SAAUiqE,EAAOpxE,GAC/B,GAGIymB,GACA47D,EACAC,EACAC,EANAp7E,EAAWiqE,EAEXx1E,EAAQ,IAiEZ,OA3DIhB,IAAO4nF,WAAWpR,GAClBjqE,GACIqzE,GAAIpJ,EAAMtC,cACV9qE,EAAGotE,EAAMrC,MACTnL,EAAGwN,EAAMpC,SAEW,gBAAVoC,IACdjqE,KACInH,EACAmH,EAASnH,GAAOoxE,EAEhBjqE,EAASguB,aAAei8C,IAElBx1E,EAAQ6gF,GAAwB3gF,KAAKs1E,KAC/C3qD,EAAqB,MAAb7qB,EAAM,GAAc,GAAK,EACjCuL,GACIkC,EAAG,EACHrF,EAAGytE,EAAM71E,EAAMy3E,KAAS5sD,EACxBvjB,EAAGuuE,EAAM71E,EAAM23E,KAAS9sD,EACxBlvB,EAAGk6E,EAAM71E,EAAM43E,KAAW/sD,EAC1BtjB,EAAGsuE,EAAM71E,EAAM63E,KAAWhtD,EAC1B+zD,GAAI/I,EAAM71E,EAAM83E,KAAgBjtD,KAE1B7qB,EAAQ8gF,GAAiB5gF,KAAKs1E,KACxC3qD,EAAqB,MAAb7qB,EAAM,GAAc,GAAK,EACjC0mF,EAAW,SAAUG,GAIjB,GAAIpS,GAAMoS,GAAOxlE,WAAWwlE,EAAI5gF,QAAQ,IAAK,KAE7C,QAAQ9F,MAAMs0E,GAAO,EAAIA,GAAO5pD,GAEpCtf,GACIkC,EAAGi5E,EAAS1mF,EAAM,IAClBgoE,EAAG0e,EAAS1mF,EAAM,IAClBoI,EAAGs+E,EAAS1mF,EAAM,IAClBsH,EAAGo/E,EAAS1mF,EAAM,IAClBrE,EAAG+qF,EAAS1mF,EAAM,IAClBuH,EAAGm/E,EAAS1mF,EAAM,IAClBmtD,EAAGu5B,EAAS1mF,EAAM,MAEH,MAAZuL,EACPA,KAC2B,gBAAbA,KACT,QAAUA,IAAY,MAAQA,MACnCo7E,EAAUhS,EAAkB31E,GAAOuM,EAAS4Z,MAAOnmB,GAAOuM,EAAS6Z,KAEnE7Z,KACAA,EAASqzE,GAAK+H,EAAQptD,aACtBhuB,EAASy8D,EAAI2e,EAAQ7T,QAGzB2T,EAAM,GAAIjU,GAASjnE,GAEfvM,GAAO4nF,WAAWpR,IAAU3F,EAAW2F,EAAO,aAC9CiR,EAAIpT,QAAUmC,EAAMnC,SAGjBoT,GAIXznF,GAAO8nF,QAAUlG,GAGjB5hF,GAAOo/B,cAAgB2iD,GAGvB/hF,GAAOo+E,SAAW,aAIlBp+E,GAAOi1E,iBAAmBA,GAI1Bj1E,GAAOuzE,aAAe,aAGtBvzE,GAAO+nF,sBAAwB,SAAUnwB,EAAWowB,GAChD,MAAI5H,IAAuBxoB,KAAe50D,GAC/B,EAEPglF,IAAUhlF,EACHo9E,GAAuBxoB,IAElCwoB,GAAuBxoB,GAAaowB,GAC7B,IAGXhoF,GAAOyhC,KAAOmwC,EACV,wDACA,SAAUxsE,EAAK3E,GACX,MAAOT,IAAOwhC,OAAOp8B,EAAK3E,KAOlCT,GAAOwhC,OAAS,SAAUp8B,EAAKyO,GAC3B,GAAIpE,EAcJ,OAbIrK,KAEIqK,EADmB,mBAAb,GACCzP,GAAOioF,aAAa7iF,EAAKyO,GAGzB7T,GAAOqyE,WAAWjtE,GAGzBqK,IACAzP,GAAOuM,SAAS8nE,QAAUr0E,GAAOq0E,QAAU5kE,IAI5CzP,GAAOq0E,QAAQ6T,OAG1BloF,GAAOioF,aAAe,SAAUj1E,EAAMa,GAClC,MAAe,QAAXA,GACAA,EAAOs0E,KAAOn1E,EACToyB,GAAQpyB,KACToyB,GAAQpyB,GAAQ,GAAIggE,IAExB5tC,GAAQpyB,GAAM0kE,IAAI7jE,GAGlB7T,GAAOwhC,OAAOxuB,GAEPoyB,GAAQpyB,WAGRoyB,IAAQpyB,GACR,OAIfhT,GAAOooF,SAAWxW,EACd,gEACA,SAAUxsE,GACN,MAAOpF,IAAOqyE,WAAWjtE,KAKjCpF,GAAOqyE,WAAa,SAAUjtE,GAC1B,GAAIo8B,EAMJ,IAJIp8B,GAAOA,EAAIivE,SAAWjvE,EAAIivE,QAAQ6T,QAClC9iF,EAAMA,EAAIivE,QAAQ6T,QAGjB9iF,EACD,MAAOpF,IAAOq0E,OAGlB,KAAK3xE,EAAQ0C,GAAM,CAGf,GADAo8B,EAAS+3C,EAAWn0E,GAEhB,MAAOo8B,EAEXp8B,IAAOA,GAGX,MAAOi0E,GAAaj0E,IAIxBpF,GAAOyD,SAAW,SAAUsc,GACxB,MAAOA,aAAekzD,IACV,MAAPlzD,GAAe8wD,EAAW9wD,EAAK,qBAIxC/f,GAAO4nF,WAAa,SAAU7nE,GAC1B,MAAOA,aAAeyzD,GAG1B,KAAKxxE,GAAIgjF,GAAM7iF,OAAS,EAAGH,IAAK,IAAKA,GACjCq1E,EAAS2N,GAAMhjF,IAGnBhC,IAAO82E,eAAiB,SAAUC,GAC9B,MAAOD,GAAeC,IAG1B/2E,GAAO4gF,QAAU,SAAUyH,GACvB,GAAI1rF,GAAIqD,GAAOy3E,IAAIyH,IAQnB,OAPa,OAATmJ,EACAvmF,EAAOnF,EAAEq4E,IAAKqT,GAGd1rF,EAAEq4E,IAAI1D,iBAAkB,EAGrB30E,GAGXqD,GAAOsoF,UAAY,WACf,MAAOtoF,IAAO8U,MAAM,KAAM5S,WAAWomF,aAGzCtoF,GAAOw8E,kBAAoB,SAAUhG,GACjC,MAAOK,GAAML,IAAUK,EAAML,GAAS,GAAK,KAAO,MAGtDx2E,GAAOc,OAASA,EAOhBgB,EAAO9B,GAAOmW,GAAK88D,EAAO/iE,WAEtBklB,MAAQ,WACJ,MAAOp1B,IAAO7D,OAGlBqH,QAAU,WACN,OAAQrH,KAAK+4B,GAA4B,KAArB/4B,KAAK44E,SAAW,IAGxCgQ,KAAO,WACH,MAAOpkF,MAAKgB,OAAOxF,KAAO,MAG9B0F,SAAW,WACP,MAAO1F,MAAKi5B,QAAQoM,OAAO,MAAM9C,OAAO,qCAG5Ch7B,OAAS,WACL,MAAOvH,MAAK44E,QAAU,GAAIh0E,OAAM5E,MAAQA,KAAK+4B,IAGjDtxB,YAAc,WACV,GAAIjH,GAAIqD,GAAO7D,MAAMs7E,KACrB,OAAI,GAAI96E,EAAE44B,QAAU54B,EAAE44B,QAAU,KACxB,kBAAsBx0B,MAAKmP,UAAUtM,YAE9BzH,KAAKuH,SAASE,cAEdo2E,EAAar9E,EAAG,gCAGpBq9E,EAAar9E,EAAG,mCAI/BsI,QAAU,WACN,GAAItI,GAAIR,IACR,QACIQ,EAAE44B,OACF54B,EAAE+4B,QACF/4B,EAAE84B,OACF94B,EAAEy9B,QACFz9B,EAAE09B,UACF19B,EAAE29B,UACF39B,EAAE49B,iBAIVy+C,QAAU,WACN,MAAOA,GAAQ78E,OAGnBosF,aAAe,WACX,MAAIpsF,MAAKo8E,GACEp8E,KAAK68E,WAAavC,EAAct6E,KAAKo8E,IAAKp8E,KAAK24E,OAAS90E,GAAOy3E,IAAIt7E,KAAKo8E,IAAMv4E,GAAO7D,KAAKo8E,KAAKtzE,WAAa,GAGhH,GAGXujF,aAAe,WACX,MAAO1mF,MAAW3F,KAAK64E,MAG3ByT,UAAW,WACP,MAAOtsF,MAAK64E,IAAIn0D,UAGpB42D,IAAM,SAAUiR,GACZ,MAAOvsF,MAAKuoF,UAAU,EAAGgE,IAG7B/O,MAAQ,SAAU+O,GASd,MARIvsF,MAAK24E,SACL34E,KAAKuoF,UAAU,EAAGgE,GAClBvsF,KAAK24E,QAAS,EAEV4T,GACAvsF,KAAK+rB,SAAS/rB,KAAKwsF,iBAAkB,MAGtCxsF,MAGXuiC,OAAS,SAAUkqD,GACf,GAAItT,GAAS0E,EAAa79E,KAAMysF,GAAe5oF,GAAOo/B,cACtD,OAAOjjC,MAAKk2E,aAAaiV,WAAWhS,IAGxCtlE,IAAM8lE,EAAY,EAAG,OAErB5tD,SAAW4tD,EAAY,GAAI,YAE3B5sD,KAAO,SAAUstD,EAAOO,EAAO8R,GAC3B,GAEY3/D,GAAMosD,EAFdwT,EAAOlT,EAAOY,EAAOr6E,MACrB4sF,EAAmD,KAAvCD,EAAKpE,YAAcvoF,KAAKuoF,YAqBxC,OAlBA3N,GAAQD,EAAeC,GAET,SAAVA,GAA8B,UAAVA,GAA+B,YAAVA,GACzCzB,EAAS/C,EAAUp2E,KAAM2sF,GACX,YAAV/R,EACAzB,GAAkB,EACD,SAAVyB,IACPzB,GAAkB,MAGtBpsD,EAAO/sB,KAAO2sF,EACdxT,EAAmB,WAAVyB,EAAqB7tD,EAAO,IACvB,WAAV6tD,EAAqB7tD,EAAO,IAClB,SAAV6tD,EAAmB7tD,EAAO,KAChB,QAAV6tD,GAAmB7tD,EAAO6/D,GAAY,MAC5B,SAAVhS,GAAoB7tD,EAAO6/D,GAAY,OACvC7/D,GAED2/D,EAAUvT,EAASJ,EAASI,IAGvCnvD,KAAO,SAAUgR,EAAM6oD,GACnB,MAAOhgF,IAAOuM,UAAU6Z,GAAIjqB,KAAMgqB,KAAMgR,IAAOqK,OAAOrlC,KAAKqlC,UAAUwnD,UAAUhJ,IAGnFiJ,QAAU,SAAUjJ,GAChB,MAAO7jF,MAAKgqB,KAAKnmB,KAAUggF,IAG/B4G,SAAW,SAAUzvD,GAIjB,GAAIgD,GAAMhD,GAAQn3B,KACdkpF,EAAMtT,EAAOz7C,EAAKh+B,MAAMgtF,QAAQ,OAChCjgE,EAAO/sB,KAAK+sB,KAAKggE,EAAK,QAAQ,GAC9BxqD,EAAgB,GAAPxV,EAAY,WACV,GAAPA,EAAY,WACL,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,WAAa,UAChC,OAAO/sB,MAAKuiC,OAAOviC,KAAKk2E,aAAauU,SAASloD,EAAQviC,KAAM6D,GAAOm6B,MAGvEm+C,WAAa,WACT,MAAOA,GAAWn8E,KAAKo5B,SAG3B6zD,MAAQ,WACJ,MAAQjtF,MAAKuoF,YAAcvoF,KAAKi5B,QAAQM,MAAM,GAAGgvD,aAC7CvoF,KAAKuoF,YAAcvoF,KAAKi5B,QAAQM,MAAM,GAAGgvD,aAGjDrvD,IAAM,SAAUmhD,GACZ,GAAInhD,GAAMl5B,KAAK24E,OAAS34E,KAAK+4B,GAAGwrD,YAAcvkF,KAAK+4B,GAAGm0D,QACtD,OAAa,OAAT7S,GACAA,EAAQsJ,GAAatJ,EAAOr6E,KAAKk2E,cAC1Bl2E,KAAK6T,IAAIwmE,EAAQnhD,EAAK,MAEtBA,GAIfK,MAAQwrD,GAAa,SAAS,GAE9BiI,QAAU,SAAUpS,GAIhB,OAHAA,EAAQD,EAAeC,IAIvB,IAAK,OACD56E,KAAKu5B,MAAM,EAEf,KAAK,UACL,IAAK,QACDv5B,KAAKs5B,KAAK,EAEd,KAAK,OACL,IAAK,UACL,IAAK,MACDt5B,KAAKi+B,MAAM,EAEf,KAAK,OACDj+B,KAAKk+B,QAAQ,EAEjB,KAAK,SACDl+B,KAAKm+B,QAAQ,EAEjB,KAAK,SACDn+B,KAAKo+B,aAAa,GAgBtB,MAXc,SAAVw8C,EACA56E,KAAK8iC,QAAQ,GACI,YAAV83C,GACP56E,KAAKkoF,WAAW,GAIN,YAAVtN,GACA56E,KAAKu5B,MAAqC,EAA/B/0B,KAAKgB,MAAMxF,KAAKu5B,QAAU,IAGlCv5B,MAGXmtF,MAAO,SAAUvS,GAEb,MADAA,GAAQD,EAAeC,GACnBA,IAAU/zE,GAAuB,gBAAV+zE,EAChB56E,KAEJA,KAAKgtF,QAAQpS,GAAO/mE,IAAI,EAAc,YAAV+mE,EAAsB,OAASA,GAAQ7uD,SAAS,EAAG,OAG1FwtD,QAAS,SAAUc,EAAOO,GACtB,GAAIwS,EAEJ,OADAxS,GAAQD,EAAgC,mBAAVC,GAAwBA,EAAQ,eAChD,gBAAVA,GACAP,EAAQx2E,GAAOyD,SAAS+yE,GAASA,EAAQx2E,GAAOw2E,IACxCr6E,MAAQq6E,IAEhB+S,EAAUvpF,GAAOyD,SAAS+yE,IAAUA,GAASx2E,GAAOw2E,GAC7C+S,GAAWptF,KAAKi5B,QAAQ+zD,QAAQpS,KAI/ClB,SAAU,SAAUW,EAAOO,GACvB,GAAIwS,EAEJ,OADAxS,GAAQD,EAAgC,mBAAVC,GAAwBA,EAAQ,eAChD,gBAAVA,GACAP,EAAQx2E,GAAOyD,SAAS+yE,GAASA,EAAQx2E,GAAOw2E,IAChCA,GAARr6E,OAERotF,EAAUvpF,GAAOyD,SAAS+yE,IAAUA,GAASx2E,GAAOw2E,IAC5Cr6E,KAAKi5B,QAAQk0D,MAAMvS,GAASwS,IAI5CC,UAAW,SAAUrjE,EAAMC,EAAI2wD,GAC3B,MAAO56E,MAAKu5E,QAAQvvD,EAAM4wD,IAAU56E,KAAK05E,SAASzvD,EAAI2wD,IAG1D31C,OAAQ,SAAUo1C,EAAOO,GACrB,GAAIwS,EAEJ,OADAxS,GAAQD,EAAeC,GAAS,eAClB,gBAAVA,GACAP,EAAQx2E,GAAOyD,SAAS+yE,GAASA,EAAQx2E,GAAOw2E,IACxCr6E,QAAUq6E,IAElB+S,GAAWvpF,GAAOw2E,IACTr6E,KAAKi5B,QAAQ+zD,QAAQpS,IAAWwS,GAAWA,IAAaptF,KAAKi5B,QAAQk0D,MAAMvS,KAI5Fz2E,IAAKsxE,EACI,mGACA,SAAUxvE,GAEN,MADAA,GAAQpC,GAAO8U,MAAM,KAAM5S,WACZ/F,KAARiG,EAAejG,KAAOiG,IAI1C7B,IAAKqxE,EACG,mGACA,SAAUxvE,GAEN,MADAA,GAAQpC,GAAO8U,MAAM,KAAM5S,WACpBE,EAAQjG,KAAOA,KAAOiG,IAIzCqnF,KAAO7X,EACC,4GAEA,SAAU4E,EAAOkS,GACb,MAAa,OAATlS,GACqB,gBAAVA,KACPA,GAASA,GAGbr6E,KAAKuoF,UAAUlO,EAAOkS,GAEfvsF,OAECA,KAAKuoF,cAe7BA,UAAY,SAAUlO,EAAOkS,GACzB,GACIgB,GADAhjE,EAASvqB,KAAK44E,SAAW,CAE7B,OAAa,OAATyB,GACqB,gBAAVA,KACPA,EAAQuF,EAAoBvF,IAE5B71E,KAAK+mB,IAAI8uD,GAAS,KAClBA,EAAgB,GAARA,IAEPr6E,KAAK24E,QAAU4T,IAChBgB,EAAcvtF,KAAKwsF,kBAEvBxsF,KAAK44E,QAAUyB,EACfr6E,KAAK24E,QAAS,EACK,MAAf4U,GACAvtF,KAAK6T,IAAI05E,EAAa,KAEtBhjE,IAAW8vD,KACNkS,GAAiBvsF,KAAKwtF,kBACvB1T,EAAgC95E,KACxB6D,GAAOuM,SAASiqE,EAAQ9vD,EAAQ,KAAM,GAAG,GACzCvqB,KAAKwtF,oBACbxtF,KAAKwtF,mBAAoB,EACzB3pF,GAAOuzE,aAAap3E,MAAM,GAC1BA,KAAKwtF,kBAAoB,OAI1BxtF,MAEAA,KAAK24E,OAASpuD,EAASvqB,KAAKwsF,kBAI3CiB,QAAU,WACN,OAAQztF,KAAK24E,QAGjB+U,YAAc,WACV,MAAO1tF,MAAK24E,QAGhBgV,MAAQ,WACJ,MAAO3tF,MAAK24E,QAA2B,IAAjB34E,KAAK44E,SAG/B6P,SAAW,WACP,MAAOzoF,MAAK24E,OAAS,MAAQ,IAGjCgQ,SAAW,WACP,MAAO3oF,MAAK24E,OAAS,6BAA+B,IAGxDwT,UAAY,WAMR,MALInsF,MAAK04E,KACL14E,KAAKuoF,UAAUvoF,KAAK04E,MACM,gBAAZ14E,MAAKs4E,IACnBt4E,KAAKuoF,UAAU3I,EAAoB5/E,KAAKs4E,KAErCt4E,MAGX4tF,qBAAuB,SAAUvT,GAQ7B,MAHIA,GAJCA,EAIOx2E,GAAOw2E,GAAOkO,YAHd,GAMJvoF,KAAKuoF,YAAclO,GAAS,KAAO,GAG/CsB,YAAc,WACV,MAAOA,GAAY37E,KAAKo5B,OAAQp5B,KAAKu5B,UAGzCJ,UAAY,SAAUkhD,GAClB,GAAIlhD,GAAY/K,IAAOvqB,GAAO7D,MAAMgtF,QAAQ,OAASnpF,GAAO7D,MAAMgtF,QAAQ,SAAW,OAAS,CAC9F,OAAgB,OAAT3S,EAAgBlhD,EAAYn5B,KAAK6T,IAAKwmE,EAAQlhD,EAAY,MAGrEu+C,QAAU,SAAU2C,GAChB,MAAgB,OAATA,EAAgB71E,KAAK41C,MAAMp6C,KAAKu5B,QAAU,GAAK,GAAKv5B,KAAKu5B,MAAoB,GAAb8gD,EAAQ,GAASr6E,KAAKu5B,QAAU,IAG3GqnD,SAAW,SAAUvG,GACjB,GAAIjhD,GAAO6iD,GAAWj8E,KAAMA,KAAKk2E,aAAa+K,MAAMlF,IAAK/7E,KAAKk2E,aAAa+K,MAAMjF,KAAK5iD,IACtF,OAAgB,OAATihD,EAAgBjhD,EAAOp5B,KAAK6T,IAAKwmE,EAAQjhD,EAAO,MAG3D2uD,YAAc,SAAU1N,GACpB,GAAIjhD,GAAO6iD,GAAWj8E,KAAM,EAAG,GAAGo5B,IAClC,OAAgB,OAATihD,EAAgBjhD,EAAOp5B,KAAK6T,IAAKwmE,EAAQjhD,EAAO,MAG3Dy+C,KAAO,SAAUwC,GACb,GAAIxC,GAAO73E,KAAKk2E,aAAa2B,KAAK73E,KAClC,OAAgB,OAATq6E,EAAgBxC,EAAO73E,KAAK6T,IAAqB,GAAhBwmE,EAAQxC,GAAW,MAG/D2P,QAAU,SAAUnN,GAChB,GAAIxC,GAAOoE,GAAWj8E,KAAM,EAAG,GAAG63E,IAClC,OAAgB,OAATwC,EAAgBxC,EAAO73E,KAAK6T,IAAqB,GAAhBwmE,EAAQxC,GAAW,MAG/D/0C,QAAU,SAAUu3C,GAChB,GAAIv3C,IAAW9iC,KAAKk5B,MAAQ,EAAIl5B,KAAKk2E,aAAa+K,MAAMlF,KAAO,CAC/D,OAAgB,OAAT1B,EAAgBv3C,EAAU9iC,KAAK6T,IAAIwmE,EAAQv3C,EAAS,MAG/DolD,WAAa,SAAU7N,GAInB,MAAgB,OAATA,EAAgBr6E,KAAKk5B,OAAS,EAAIl5B,KAAKk5B,IAAIl5B,KAAKk5B,MAAQ,EAAImhD,EAAQA,EAAQ,IAGvFwT,eAAiB,WACb,MAAO/R,GAAY97E,KAAKo5B,OAAQ,EAAG,IAGvC0iD,YAAc,WACV,GAAIgS,GAAW9tF,KAAKk2E,aAAa+K,KACjC,OAAOnF,GAAY97E,KAAKo5B,OAAQ00D,EAAS/R,IAAK+R,EAAS9R,MAG3DlmE,IAAM,SAAU8kE,GAEZ,MADAA,GAAQD,EAAeC,GAChB56E,KAAK46E,MAGhBW,IAAM,SAAUX,EAAOt2E,GACnB,GAAIwgF,EACJ,IAAqB,gBAAVlK,GACP,IAAKkK,IAAQlK,GACT56E,KAAKu7E,IAAIuJ,EAAMlK,EAAMkK,QAIzBlK,GAAQD,EAAeC,GACI,kBAAhB56E,MAAK46E,IACZ56E,KAAK46E,GAAOt2E,EAGpB,OAAOtE,OAMXqlC,OAAS,SAAUp8B,GACf,GAAI8kF,EAEJ,OAAI9kF,KAAQpC,EACD7G,KAAKk4E,QAAQ6T,OAEpBgC,EAAgBlqF,GAAOqyE,WAAWjtE,GACb,MAAjB8kF,IACA/tF,KAAKk4E,QAAU6V,GAEZ/tF,OAIfslC,KAAOmwC,EACH,kJACA,SAAUxsE,GACN,MAAIA,KAAQpC,EACD7G,KAAKk2E,aAELl2E,KAAKqlC,OAAOp8B,KAK/BitE,WAAa,WACT,MAAOl2E,MAAKk4E,SAGhBsU,eAAiB,WAGb,MAAuD,KAA/ChoF,KAAK4pB,MAAMpuB,KAAK+4B,GAAGi1D,oBAAsB,OA+CzDnqF,GAAOmW,GAAG0oB,YAAc7+B,GAAOmW,GAAGokB,aAAe2mD,GAAa,gBAAgB,GAC9ElhF,GAAOmW,GAAG2oB,OAAS9+B,GAAOmW,GAAGmkB,QAAU4mD,GAAa,WAAW,GAC/DlhF,GAAOmW,GAAG4oB,OAAS/+B,GAAOmW,GAAGkkB,QAAU6mD,GAAa,WAAW,GAK/DlhF,GAAOmW,GAAG6oB,KAAOh/B,GAAOmW,GAAGikB,MAAQ8mD,GAAa,SAAS,GAEzDlhF,GAAOmW,GAAGsf,KAAOyrD,GAAa,QAAQ,GACtClhF,GAAOmW,GAAGqgB,MAAQo7C,EAAU,kDAAmDsP,GAAa,QAAQ,IACpGlhF,GAAOmW,GAAGof,KAAO2rD,GAAa,YAAY,GAC1ClhF,GAAOmW,GAAGw9D,MAAQ/B,EAAU,kDAAmDsP,GAAa,YAAY,IAGxGlhF,GAAOmW,GAAG89D,KAAOj0E,GAAOmW,GAAGkf,IAC3Br1B,GAAOmW,GAAG29D,OAAS9zE,GAAOmW,GAAGuf,MAC7B11B,GAAOmW,GAAG49D,MAAQ/zE,GAAOmW,GAAG69D,KAC5Bh0E,GAAOmW,GAAGi0E,SAAWpqF,GAAOmW,GAAGwtE,QAC/B3jF,GAAOmW,GAAGy9D,SAAW5zE,GAAOmW,GAAG09D,QAG/B7zE,GAAOmW,GAAGk0E,OAASrqF,GAAOmW,GAAGvS,YAG7B5D,GAAOmW,GAAGm0E,MAAQtqF,GAAOmW,GAAG2zE,MAkB5BhoF,EAAO9B,GAAOuM,SAAS4J,GAAKq9D,EAAStjE,WAEjCokE,QAAU,WACN,GAIIh6C,GAASD,EAASD,EAJlBG,EAAep+B,KAAK+3E,cACpBD,EAAO93E,KAAKg4E,MACZL,EAAS33E,KAAKi4E,QACd3kE,EAAOtT,KAAKwT,MACagkE,EAAQ,CAIrClkE,GAAK8qB,aAAeA,EAAe,IAEnCD,EAAU46C,EAAS36C,EAAe,KAClC9qB,EAAK6qB,QAAUA,EAAU,GAEzBD,EAAU66C,EAAS56C,EAAU,IAC7B7qB,EAAK4qB,QAAUA,EAAU,GAEzBD,EAAQ86C,EAAS76C,EAAU,IAC3B5qB,EAAK2qB,MAAQA,EAAQ,GAErB65C,GAAQiB,EAAS96C,EAAQ,IAGzBu5C,EAAQuB,EAASkM,GAAYnN,IAC7BA,GAAQiB,EAASmM,GAAY1N,IAI7BG,GAAUoB,EAASjB,EAAO,IAC1BA,GAAQ,GAGRN,GAASuB,EAASpB,EAAS,IAC3BA,GAAU,GAEVrkE,EAAKwkE,KAAOA,EACZxkE,EAAKqkE,OAASA,EACdrkE,EAAKkkE,MAAQA,GAGjBjsD,IAAM,WAYF,MAXAvrB,MAAK+3E,cAAgBvzE,KAAK+mB,IAAIvrB,KAAK+3E,eACnC/3E,KAAKg4E,MAAQxzE,KAAK+mB,IAAIvrB,KAAKg4E,OAC3Bh4E,KAAKi4E,QAAUzzE,KAAK+mB,IAAIvrB,KAAKi4E,SAE7Bj4E,KAAKwT,MAAM4qB,aAAe55B,KAAK+mB,IAAIvrB,KAAKwT,MAAM4qB,cAC9Cp+B,KAAKwT,MAAM2qB,QAAU35B,KAAK+mB,IAAIvrB,KAAKwT,MAAM2qB,SACzCn+B,KAAKwT,MAAM0qB,QAAU15B,KAAK+mB,IAAIvrB,KAAKwT,MAAM0qB,SACzCl+B,KAAKwT,MAAMyqB,MAAQz5B,KAAK+mB,IAAIvrB,KAAKwT,MAAMyqB,OACvCj+B,KAAKwT,MAAMmkE,OAASnzE,KAAK+mB,IAAIvrB,KAAKwT,MAAMmkE,QACxC33E,KAAKwT,MAAMgkE,MAAQhzE,KAAK+mB,IAAIvrB,KAAKwT,MAAMgkE,OAEhCx3E,MAGX43E,MAAQ,WACJ,MAAOmB,GAAS/4E,KAAK83E,OAAS,IAGlCzwE,QAAU,WACN,MAAOrH,MAAK+3E,cACG,MAAb/3E,KAAKg4E,MACJh4E,KAAKi4E,QAAU,GAAM,OACK,QAA3ByC,EAAM16E,KAAKi4E,QAAU,KAG3B4U,SAAW,SAAUuB,GACjB,GAAIjV,GAAS4K,GAAa/jF,MAAOouF,EAAYpuF,KAAKk2E,aAMlD,OAJIkY,KACAjV,EAASn5E,KAAKk2E,aAAa+U,YAAYjrF,KAAMm5E,IAG1Cn5E,KAAKk2E,aAAaiV,WAAWhS,IAGxCtlE,IAAM,SAAUwmE,EAAOjC,GAEnB,GAAIwB,GAAM/1E,GAAOuM,SAASiqE,EAAOjC,EAQjC,OANAp4E,MAAK+3E,eAAiB6B,EAAI7B,cAC1B/3E,KAAKg4E,OAAS4B,EAAI5B,MAClBh4E,KAAKi4E,SAAW2B,EAAI3B,QAEpBj4E,KAAKm4E,UAEEn4E,MAGX+rB,SAAW,SAAUsuD,EAAOjC,GACxB,GAAIwB,GAAM/1E,GAAOuM,SAASiqE,EAAOjC,EAQjC,OANAp4E,MAAK+3E,eAAiB6B,EAAI7B,cAC1B/3E,KAAKg4E,OAAS4B,EAAI5B,MAClBh4E,KAAKi4E,SAAW2B,EAAI3B,QAEpBj4E,KAAKm4E,UAEEn4E,MAGX8V,IAAM,SAAU8kE,GAEZ,MADAA,GAAQD,EAAeC,GAChB56E,KAAK46E,EAAMr1C,cAAgB,QAGtC5V,GAAK,SAAUirD,GACX,GAAI9C,GAAMH,CAGV,IAFAiD,EAAQD,EAAeC,GAET,UAAVA,GAA+B,SAAVA,EAGrB,MAFA9C,GAAO93E,KAAKg4E,MAAQh4E,KAAK+3E,cAAgB,MACzCJ,EAAS33E,KAAKi4E,QAA8B,GAApBgN,GAAYnN,GACnB,UAAV8C,EAAoBjD,EAASA,EAAS,EAI7C,QADAG,EAAO93E,KAAKg4E,MAAQxzE,KAAK4pB,MAAM82D,GAAYllF,KAAKi4E,QAAU,KAClD2C,GACJ,IAAK,OAAQ,MAAO9C,GAAO,EAAI93E,KAAK+3E,cAAgB,MACpD,KAAK,MAAO,MAAOD,GAAO93E,KAAK+3E,cAAgB,KAC/C,KAAK,OAAQ,MAAc,IAAPD,EAAY93E,KAAK+3E,cAAgB,IACrD,KAAK,SAAU,MAAc,IAAPD,EAAY,GAAK93E,KAAK+3E,cAAgB,GAC5D,KAAK,SAAU,MAAc,IAAPD,EAAY,GAAK,GAAK93E,KAAK+3E,cAAgB,GAEjE,KAAK,cAAe,MAAOvzE,MAAKgB,MAAa,GAAPsyE,EAAY,GAAK,GAAK,KAAQ93E,KAAK+3E,aACzE,SAAS,KAAM,IAAIn0E,OAAM,gBAAkBg3E,KAKvDt1C,KAAOzhC,GAAOmW,GAAGsrB,KACjBD,OAASxhC,GAAOmW,GAAGqrB,OAEnBgpD,YAAc5Y,EACV,sFAEA,WACI,MAAOz1E,MAAKyH,gBAIpBA,YAAc,WAEV,GAAI+vE,GAAQhzE,KAAK+mB,IAAIvrB,KAAKw3E,SACtBG,EAASnzE,KAAK+mB,IAAIvrB,KAAK23E,UACvBG,EAAOtzE,KAAK+mB,IAAIvrB,KAAK83E,QACrB75C,EAAQz5B,KAAK+mB,IAAIvrB,KAAKi+B,SACtBC,EAAU15B,KAAK+mB,IAAIvrB,KAAKk+B,WACxBC,EAAU35B,KAAK+mB,IAAIvrB,KAAKm+B,UAAYn+B,KAAKo+B,eAAiB,IAE9D,OAAKp+B,MAAKsuF,aAMFtuF,KAAKsuF,YAAc,EAAI,IAAM,IACjC,KACC9W,EAAQA,EAAQ,IAAM,KACtBG,EAASA,EAAS,IAAM,KACxBG,EAAOA,EAAO,IAAM,KACnB75C,GAASC,GAAWC,EAAW,IAAM,KACtCF,EAAQA,EAAQ,IAAM,KACtBC,EAAUA,EAAU,IAAM,KAC1BC,EAAUA,EAAU,IAAM,IAXpB,OAcf+3C,WAAa,WACT,MAAOl2E,MAAKk4E,SAGhBgW,OAAS,WACL,MAAOluF,MAAKyH,iBAIpB5D,GAAOuM,SAAS4J,GAAGtU,SAAW7B,GAAOuM,SAAS4J,GAAGvS,WAQjD,KAAK5B,KAAKggF,IACFnR,EAAWmR,GAAwBhgF,KACnCs/E,GAAmBt/E,GAAE0/B,cAI7B1hC,IAAOuM,SAAS4J,GAAGu0E,eAAiB,WAChC,MAAOvuF,MAAK2vB,GAAG,OAEnB9rB,GAAOuM,SAAS4J,GAAGs0E,UAAY,WAC3B,MAAOtuF,MAAK2vB,GAAG,MAEnB9rB,GAAOuM,SAAS4J,GAAGw0E,UAAY,WAC3B,MAAOxuF,MAAK2vB,GAAG,MAEnB9rB,GAAOuM,SAAS4J,GAAGy0E,QAAU,WACzB,MAAOzuF,MAAK2vB,GAAG,MAEnB9rB,GAAOuM,SAAS4J,GAAG00E,OAAS,WACxB,MAAO1uF,MAAK2vB,GAAG,MAEnB9rB,GAAOuM,SAAS4J,GAAG20E,QAAU,WACzB,MAAO3uF,MAAK2vB,GAAG,UAEnB9rB,GAAOuM,SAAS4J,GAAG40E,SAAW,WAC1B,MAAO5uF,MAAK2vB,GAAG,MAEnB9rB,GAAOuM,SAAS4J,GAAG60E,QAAU,WACzB,MAAO7uF,MAAK2vB,GAAG,MASnB9rB,GAAOwhC,OAAO,MACVypD,aAAc,uBACd3Y,QAAU,SAAU6C,GAChB,GAAIvyE,GAAIuyE,EAAS,GACbG,EAAuC,IAA7BuB,EAAM1B,EAAS,IAAM,IAAa,KACrC,IAANvyE,EAAW,KACL,IAANA,EAAW,KACL,IAANA,EAAW,KAAO,IACvB,OAAOuyE,GAASG,KA4BpBmE,GACAz9E,EAAOD,QAAUiE,IAEf2vE,EAAgC,SAAUub,EAASnvF,EAASC,GAM1D,MALIA,GAAOk3E,QAAUl3E,EAAOk3E,UAAYl3E,EAAOk3E,SAASiY,YAAa,IAEjExJ,GAAY3hF,OAAS0hF,IAGlB1hF,IACTtD,KAAKX,EAASM,EAAqBN,EAASC,KAAS2zE,IAAkC3sE,IAAchH,EAAOD,QAAU4zE,IACxH4R,IAAW,MAIhB7kF,KAAKP,QAEqBO,KAAKX,EAAU,WAAa,MAAOI,SAAYE,EAAoB,IAAIL,KAIhG,SAASA,EAAQD,EAASM,GAE9B,GAAIszE,IAMJ,SAAU1rE,EAAQjB,GA4OlB,QAASooF,KACFrpD,EAAOspD,QAKVC,EAAMC,sBAGNC,EAAMC,KAAK1pD,EAAO2pD,SAAU,SAAS/uD,GACjCgvD,EAAUC,SAASjvD,KAIvB2uD,EAAMO,QAAQ9pD,EAAO+pD,SAAUC,EAAYJ,EAAUK,QACrDV,EAAMO,QAAQ9pD,EAAO+pD,SAAUG,EAAWN,EAAUK,QAGpDjqD,EAAOspD,OAAQ,GAxOnB,GAAItpD,GAAS,QAASA,GAAOz8B,EAAS4F,GAClC,MAAO,IAAI62B,GAAOmqD,SAAS5mF,EAAS4F,OAUxC62B,GAAO6/C,QAAU,QAgBjB7/C,EAAOoqD,UAOHC,UAQIC,WAAY,OASZC,YAAa,QAUbC,aAAc,OAQdC,eAAgB,OAShBC,SAAU,OAaVC,kBAAmB,kBAU3B3qD,EAAO+pD,SAAW99E,SAOlB+zB,EAAO4qD,kBAAoBjnF,UAAUknF,gBAAkBlnF,UAAUmnF,iBAOjE9qD,EAAO+qD,gBAAmB,gBAAkB7oF,GAO5C89B,EAAOgrD,UAAY,6CAA6CtiF,KAAK/E,UAAUC,WAO/Eo8B,EAAOirD,eAAkBjrD,EAAO+qD,iBAAmB/qD,EAAOgrD,WAAchrD,EAAO4qD,kBAQ/E5qD,EAAOkrD,mBAAqB,EAU5B,IAAIC,MASAC,EAAiBprD,EAAOorD,eAAiB,OACzCC,EAAiBrrD,EAAOqrD,eAAiB,OACzCC,EAAetrD,EAAOsrD,aAAe,KACrCC,EAAkBvrD,EAAOurD,gBAAkB,QAS3CC,EAAgBxrD,EAAOwrD,cAAgB,QACvCC,EAAgBzrD,EAAOyrD,cAAgB,QACvCC,EAAc1rD,EAAO0rD,YAAc,MASnCC,EAAc3rD,EAAO2rD,YAAc,QACnC3B,EAAahqD,EAAOgqD,WAAa,OACjCE,EAAYlqD,EAAOkqD,UAAY,MAC/B0B,EAAgB5rD,EAAO4rD,cAAgB,UACvCC,EAAc7rD,EAAO6rD,YAAc,OASvC7rD,GAAOspD,OAAQ,EAOftpD,EAAO8rD,QAAU9rD,EAAO8rD,YAQxB9rD,EAAO2pD,SAAW3pD,EAAO2pD,YAkCzB,IAAIF,GAAQzpD,EAAO+rD,OAUfhsF,OAAQ,SAAgBisF,EAAMrqC,EAAK0d,GAC/B,IAAI,GAAIh8D,KAAOs+C,IACPA,EAAIphD,eAAe8C,IAAS2oF,EAAK3oF,KAASpC,GAAao+D,IAG3D2sB,EAAK3oF,GAAOs+C,EAAIt+C,GAEpB,OAAO2oF,IAUXz9E,GAAI,SAAYhL,EAAShC,EAAM0qF,GAC3B1oF,EAAQD,iBAAiB/B,EAAM0qF,GAAS,IAU5Cv9E,IAAK,SAAanL,EAAShC,EAAM0qF,GAC7B1oF,EAAQO,oBAAoBvC,EAAM0qF,GAAS,IAa/CvC,KAAM,SAAc1rE,EAAKkuE,EAAU73E,GAC/B,GAAIpU,GAAGC,CAGP,IAAG,WAAa8d,GACZA,EAAIhb,QAAQkpF,EAAU73E,OAEnB,IAAG2J,EAAI5d,SAAWa,GACrB,IAAIhB,EAAI,EAAGC,EAAM8d,EAAI5d,OAAYF,EAAJD,EAASA,IAClC,GAAGisF,EAASvxF,KAAK0Z,EAAS2J,EAAI/d,GAAIA,EAAG+d,MAAS,EAC1C,WAKR,KAAI/d,IAAK+d,GACL,GAAGA,EAAIzd,eAAeN,IAClBisF,EAASvxF,KAAK0Z,EAAS2J,EAAI/d,GAAIA,EAAG+d,MAAS,EAC3C,QAahBmuE,MAAO,SAAexqC,EAAKyqC,GACvB,MAAOzqC,GAAIvgD,QAAQgrF,GAAQ;EAU/BC,QAAS,SAAiB1qC,EAAKyqC,GAC3B,GAAGzqC,EAAIvgD,QAAS,CACZ,GAAI0B,GAAQ6+C,EAAIvgD,QAAQgrF,EACxB,OAAkB,KAAVtpF,GAAgB,EAAQA,EAEhC,IAAI,GAAI7C,GAAI,EAAGC,EAAMyhD,EAAIvhD,OAAYF,EAAJD,EAASA,IACtC,GAAG0hD,EAAI1hD,KAAOmsF,EACV,MAAOnsF,EAGf,QAAO,GAUfiD,QAAS,SAAiB8a,GACtB,MAAOtd,OAAMyN,UAAUnI,MAAMrL,KAAKqjB,EAAK,IAU3CsuE,UAAW,SAAmBxqC,EAAMliB,GAChC,KAAMkiB,GAAM,CACR,GAAGA,GAAQliB,EACP,OAAO,CAEXkiB,GAAOA,EAAKv9C,WAEhB,OAAO,GASXgoF,UAAW,SAAmBhxD,GAC1B,GAAI7B,MACAC,KACA9hB,KACAG,KACAzZ,EAAMK,KAAKL,IACXC,EAAMI,KAAKJ,GAGf,OAAsB,KAAnB+8B,EAAQn7B,QAEHs5B,MAAO6B,EAAQ,GAAG7B,MAClBC,MAAO4B,EAAQ,GAAG5B,MAClB9hB,QAAS0jB,EAAQ,GAAG1jB,QACpBG,QAASujB,EAAQ,GAAGvjB,UAI5ByxE,EAAMC,KAAKnuD,EAAS,SAASxC,GACzBW,EAAM/2B,KAAKo2B,EAAMW,OACjBC,EAAMh3B,KAAKo2B,EAAMY,OACjB9hB,EAAQlV,KAAKo2B,EAAMlhB,SACnBG,EAAQrV,KAAKo2B,EAAM/gB,YAInB0hB,OAAQn7B,EAAIwU,MAAMnU,KAAM86B,GAASl7B,EAAIuU,MAAMnU,KAAM86B,IAAU,EAC3DC,OAAQp7B,EAAIwU,MAAMnU,KAAM+6B,GAASn7B,EAAIuU,MAAMnU,KAAM+6B,IAAU,EAC3D9hB,SAAUtZ,EAAIwU,MAAMnU,KAAMiZ,GAAWrZ,EAAIuU,MAAMnU,KAAMiZ,IAAY,EACjEG,SAAUzZ,EAAIwU,MAAMnU,KAAMoZ,GAAWxZ,EAAIuU,MAAMnU,KAAMoZ,IAAY,KAYzEw0E,YAAa,SAAqBC,EAAW5xD,EAAQC,GACjD,OACIruB,EAAG7N,KAAK+mB,IAAIkV,EAAS4xD,IAAc,EACnC//E,EAAG9N,KAAK+mB,IAAImV,EAAS2xD,IAAc,IAW3CC,SAAU,SAAkBC,EAAQC,GAChC,GAAIngF,GAAImgF,EAAO/0E,QAAU80E,EAAO90E,QAC5BnL,EAAIkgF,EAAO50E,QAAU20E,EAAO30E,OAEhC,OAA0B,KAAnBpZ,KAAKu1D,MAAMznD,EAAGD,GAAW7N,KAAK6nB,IAUzComE,aAAc,SAAsBF,EAAQC,GACxC,GAAIngF,GAAI7N,KAAK+mB,IAAIgnE,EAAO90E,QAAU+0E,EAAO/0E,SACrCnL,EAAI9N,KAAK+mB,IAAIgnE,EAAO30E,QAAU40E,EAAO50E,QAEzC,OAAGvL,IAAKC,EACGigF,EAAO90E,QAAU+0E,EAAO/0E,QAAU,EAAIwzE,EAAiBE,EAE3DoB,EAAO30E,QAAU40E,EAAO50E,QAAU,EAAIszE,EAAeF,GAUhE3uB,YAAa,SAAqBkwB,EAAQC,GACtC,GAAIngF,GAAImgF,EAAO/0E,QAAU80E,EAAO90E,QAC5BnL,EAAIkgF,EAAO50E,QAAU20E,EAAO30E,OAEhC,OAAOpZ,MAAK6rB,KAAMhe,EAAIA,EAAMC,EAAIA,IAWpCmjB,SAAU,SAAkBvlB,EAAOC,GAE/B,MAAGD,GAAMlK,QAAU,GAAKmK,EAAInK,QAAU,EAC3BhG,KAAKqiE,YAAYlyD,EAAI,GAAIA,EAAI,IAAMnQ,KAAKqiE,YAAYnyD,EAAM,GAAIA,EAAM,IAExE,GAUXwiF,YAAa,SAAqBxiF,EAAOC,GAErC,MAAGD,GAAMlK,QAAU,GAAKmK,EAAInK,QAAU,EAC3BhG,KAAKsyF,SAASniF,EAAI,GAAIA,EAAI,IAAMnQ,KAAKsyF,SAASpiF,EAAM,GAAIA,EAAM,IAElE,GASXyiF,WAAY,SAAoB52D,GAC5B,MAAOA,IAAam1D,GAAgBn1D,GAAai1D,GAWrD4B,eAAgB,SAAwBzpF,EAASjD,EAAM5B,EAAOuuF,GAC1D,GAAIC,IAAY,GAAI,SAAU,MAAO,IAAK,KAC1C5sF,GAAOmpF,EAAM0D,YAAY7sF,EAEzB,KAAI,GAAIL,GAAI,EAAGA,EAAIitF,EAAS9sF,OAAQH,IAAK,CACrC,GAAInF,GAAIwF,CAOR,IALG4sF,EAASjtF,KACRnF,EAAIoyF,EAASjtF,GAAKnF,EAAEkL,MAAM,EAAG,GAAGu9B,cAAgBzoC,EAAEkL,MAAM,IAIzDlL,IAAKyI,GAAQoE,MAAO,CACnBpE,EAAQoE,MAAM7M,IAAgB,MAAVmyF,GAAkBA,IAAWvuF,GAAS,EAC1D,UAeZ0uF,eAAgB,SAAwB7pF,EAAS9C,EAAOwsF,GACpD,GAAIxsF,GAAU8C,GAAYA,EAAQoE,MAAlC,CAKA8hF,EAAMC,KAAKjpF,EAAO,SAAS/B,EAAO4B,GAC9BmpF,EAAMuD,eAAezpF,EAASjD,EAAM5B,EAAOuuF,IAG/C,IAAII,GAAUJ,GAAU,WACpB,OAAO,EAIY,SAApBxsF,EAAM6pF,aACL/mF,EAAQ+pF,cAAgBD,GAGP,QAAlB5sF,EAAMiqF,WACLnnF,EAAQgqF,YAAcF,KAU9BF,YAAa,SAAqBK,GAC9B,MAAOA,GAAItoF,QAAQ,eAAgB,SAASsB,GACxC,MAAOA,GAAE,GAAG+8B,kBAapBgmD,EAAQvpD,EAAO/7B,OAQfwpF,oBAAoB,EAQpBC,SAAS,EAQTC,cAAc,EAWdp/E,GAAI,SAAYhL,EAAShC,EAAM0qF,EAAS2B,GACpC,GAAI17E,GAAQ3Q,EAAKmB,MAAM,IACvB+mF,GAAMC,KAAKx3E,EAAO,SAAS3Q,GACvBkoF,EAAMl7E,GAAGhL,EAAShC,EAAM0qF,GACxB2B,GAAQA,EAAKrsF,MAarBmN,IAAK,SAAanL,EAAShC,EAAM0qF,EAAS2B,GACtC,GAAI17E,GAAQ3Q,EAAKmB,MAAM,IACvB+mF,GAAMC,KAAKx3E,EAAO,SAAS3Q,GACvBkoF,EAAM/6E,IAAInL,EAAShC,EAAM0qF,GACzB2B,GAAQA,EAAKrsF,MAarBuoF,QAAS,SAAiBvmF,EAASsiE,EAAWomB,GAC1C,GAAI7e,GAAOhzE,KAEPyzF,EAAiB,SAAwBC,GACzC,GAGIC,GAHAC,EAAUF,EAAGvsF,KAAKo+B,cAClBsuD,EAAYjuD,EAAO4qD,kBACnBsD,EAAUzE,EAAM0C,MAAM6B,EAAS,QAKhCE,IAAW9gB,EAAKqgB,qBAITS,GAAWroB,GAAa8lB,GAA6B,IAAdmC,EAAGvmE,QAChD6lD,EAAKqgB,oBAAqB,EAC1BrgB,EAAKugB,cAAe,GACdM,GAAapoB,GAAa8lB,EAChCve,EAAKugB,aAA+B,IAAfG,EAAGK,SAAiBC,EAAaC,UAAU5C,EAAeqC,GAExEI,GAAWroB,GAAa8lB,IAC/Bve,EAAKqgB,oBAAqB,EAC1BrgB,EAAKugB,cAAe,GAIrBM,GAAapoB,GAAaqkB,GACzBkE,EAAaE,cAAczoB,EAAWioB,GAIvC1gB,EAAKugB,eACJI,EAAc3gB,EAAKmhB,SAAS5zF,KAAKyyE,EAAM0gB,EAAIjoB,EAAWtiE,EAAS0oF,IAKhE8B,GAAe7D,IACd9c,EAAKqgB,oBAAqB,EAC1BrgB,EAAKugB,cAAe,EACpBS,EAAatoC,SAIdmoC,GAAapoB,GAAaqkB,GACzBkE,EAAaE,cAAczoB,EAAWioB,IAK9C,OADA1zF,MAAKmU,GAAGhL,EAAS4nF,EAAYtlB,GAAYgoB,GAClCA,GAaXU,SAAU,SAAkBT,EAAIjoB,EAAWtiE,EAAS0oF,GAChD,GAAIuC,GAAYp0F,KAAK0rE,aAAagoB,EAAIjoB,GAClC4oB,EAAkBD,EAAUpuF,OAC5B2tF,EAAcloB,EACd6oB,EAAgBF,EAAUG,QAC1BC,EAAgBH,CAGjB5oB,IAAa8lB,EACZ+C,EAAgB7C,EAEVhmB,GAAaqkB,IACnBwE,EAAgB9C,EAGhBgD,EAAgBJ,EAAUpuF,QAAW0tF,EAAiB,eAAIA,EAAGe,eAAezuF,OAAS,IAMtFwuF,EAAgB,GAAKx0F,KAAKszF,UACzBK,EAAc/D,GAIlB5vF,KAAKszF,SAAU,CAGf,IAAIoB,GAAS10F,KAAK2rE,iBAAiBxiE,EAASwqF,EAAaS,EAAWV,EA4BpE,OAxBGjoB,IAAaqkB,GACZ+B,EAAQtxF,KAAKivF,EAAWkF,GAIzBJ,IACCI,EAAOF,cAAgBA,EACvBE,EAAOjpB,UAAY6oB,EAEnBzC,EAAQtxF,KAAKivF,EAAWkF,GAExBA,EAAOjpB,UAAYkoB,QACZe,GAAOF,eAIfb,GAAe7D,IACd+B,EAAQtxF,KAAKivF,EAAWkF,GAIxB10F,KAAKszF,SAAU,GAGZK,GAUXvE,oBAAqB,WACjB,GAAIt3E,EAgCJ,OA7BQA,GAFL8tB,EAAO4qD,kBACH1oF,EAAOksF,cAEF,cACA,cACA,+CAIA,gBACA,gBACA,oDAGFpuD,EAAOirD,gBAET,aACA,YACA,yBAIA,uBACA,sBACA,gCAIRE,EAAYQ,GAAez5E,EAAM,GACjCi5E,EAAYnB,GAAc93E,EAAM,GAChCi5E,EAAYjB,GAAah4E,EAAM,GACxBi5E,GAUXrlB,aAAc,SAAsBgoB,EAAIjoB,GAEpC,GAAG7lC,EAAO4qD,kBACN,MAAOwD,GAAatoB,cAIxB,IAAGgoB,EAAGvyD,QAAS,CACX,GAAGsqC,GAAamkB,EACZ,MAAO8D,GAAGvyD,OAGd,IAAIwzD,MACA//E,KAAYA,OAAOy6E,EAAMvmF,QAAQ4qF,EAAGvyD,SAAUkuD,EAAMvmF,QAAQ4qF,EAAGe,iBAC/DL,IASJ,OAPA/E,GAAMC,KAAK16E,EAAQ,SAAS+pB,GACrB0wD,EAAM4C,QAAQ0C,EAAah2D,EAAMi2D,eAAgB,GAChDR,EAAU7rF,KAAKo2B,GAEnBg2D,EAAYpsF,KAAKo2B,EAAMi2D,cAGpBR,EAKX,MADAV,GAAGkB,WAAa,GACRlB,IAYZ/nB,iBAAkB,SAA0BxiE,EAASsiE,EAAWtqC,EAASuyD,GAErE,GAAImB,GAAcxD,CAOlB,OANGhC,GAAM0C,MAAM2B,EAAGvsF,KAAM,UAAY6sF,EAAaC,UAAU7C,EAAesC,GACtEmB,EAAczD,EACR4C,EAAaC,UAAU3C,EAAaoC,KAC1CmB,EAAcvD,IAId1kE,OAAQyiE,EAAM8C,UAAUhxD,GACxB2zD,UAAWlwF,KAAKo5B,MAChBh0B,OAAQ0pF,EAAG1pF,OACXm3B,QAASA,EACTsqC,UAAWA,EACXopB,YAAaA,EACbp+C,SAAUi9C,EAMV9pF,eAAgB,WACZ,GAAI6sC,GAAWz2C,KAAKy2C,QACpBA,GAASs+C,qBAAuBt+C,EAASs+C,sBACzCt+C,EAAS7sC,gBAAkB6sC,EAAS7sC,kBAMxC+8B,gBAAiB,WACb3mC,KAAKy2C,SAAS9P,mBAQlBquD,WAAY,WACR,MAAOxF,GAAUwF,iBAa7BhB,EAAepuD,EAAOouD,cAMtBiB,YAOAvpB,aAAc,WACV,GAAIwpB,KAKJ,OAHA7F,GAAMC,KAAKtvF,KAAKi1F,SAAU,SAASl0D,GAC/Bm0D,EAAU3sF,KAAKw4B,KAEZm0D,GASXhB,cAAe,SAAuBzoB,EAAW0pB,GAC1C1pB,GAAaqkB,GAAcrkB,GAAaqkB,GAAsC,IAAzBqF,EAAapB,cAC1D/zF,MAAKi1F,SAASE,EAAaC,YAElCD,EAAaP,WAAaO,EAAaC,UACvCp1F,KAAKi1F,SAASE,EAAaC,WAAaD,IAUhDlB,UAAW,SAAmBY,EAAanB,GACvC,IAAIA,EAAGmB,YACH,OAAO,CAGX,IAAIQ,GAAK3B,EAAGmB,YACR/8E,IAKJ,OAHAA,GAAMs5E,GAAkBiE,KAAQ3B,EAAG4B,sBAAwBlE,GAC3Dt5E,EAAMu5E,GAAkBgE,KAAQ3B,EAAG6B,sBAAwBlE,GAC3Dv5E,EAAMw5E,GAAgB+D,KAAQ3B,EAAG8B,oBAAsBlE,GAChDx5E,EAAM+8E,IAOjBnpC,MAAO,WACH1rD,KAAKi1F,cAWTzF,EAAY5pD,EAAO6vD,WAEnBlG,YAGA50D,QAAS,KAITgD,SAAU,KAGV+3D,SAAS,EAQTC,YAAa,SAAqBC,EAAMC,GAEjC71F,KAAK26B,UAIR36B,KAAK01F,SAAU,EAGf11F,KAAK26B,SACDi7D,KAAMA,EACNE,WAAYzG,EAAM1pF,UAAWkwF,GAC7BE,WAAW,EACXC,eAAe,EACfC,iBAAiB,EACjBC,gBACAr/E,KAAM,IAGV7W,KAAK6vF,OAAOgG,KAShBhG,OAAQ,SAAgBgG,GACpB,GAAI71F,KAAK26B,UAAW36B,KAAK01F,QAAzB,CAKAG,EAAY71F,KAAKm2F,gBAAgBN,EAGjC,IAAID,GAAO51F,KAAK26B,QAAQi7D,KACpBQ,EAAcR,EAAK7mF,OAmBvB,OAhBAsgF,GAAMC,KAAKtvF,KAAKuvF,SAAU,SAAwB/uD,IAE1CxgC,KAAK01F,SAAWE,EAAK5mF,SAAWonF,EAAY51D,EAAQ3pB,OACpD2pB,EAAQqxD,QAAQtxF,KAAKigC,EAASq1D,EAAWD,IAE9C51F,MAGAA,KAAK26B,UACJ36B,KAAK26B,QAAQo7D,UAAYF,GAG1BA,EAAUpqB,WAAaqkB,GACtB9vF,KAAKg1F,aAGFa,IASXb,WAAY,WAGRh1F,KAAK29B,SAAW0xD,EAAM1pF,UAAW3F,KAAK26B,SAGtC36B,KAAK26B,QAAU,KACf36B,KAAK01F,SAAU,GAYnBW,kBAAmB,SAA2B3C,EAAI9mE,EAAQylE,EAAW5xD,EAAQC,GACzE,GAAI0b,GAAMp8C,KAAK26B,QACX27D,GAAS,EACTC,EAASn6C,EAAI45C,cACbQ,EAAWp6C,EAAI85C,YAEhBK,IAAU7C,EAAGoB,UAAYyB,EAAOzB,UAAYlvD,EAAOkrD,qBAClDlkE,EAAS2pE,EAAO3pE,OAChBylE,EAAYqB,EAAGoB,UAAYyB,EAAOzB,UAClCr0D,EAASizD,EAAG9mE,OAAOnP,QAAU84E,EAAO3pE,OAAOnP,QAC3CijB,EAASgzD,EAAG9mE,OAAOhP,QAAU24E,EAAO3pE,OAAOhP,QAC3C04E,GAAS,IAGV5C,EAAGjoB,WAAagmB,GAAeiC,EAAGjoB,WAAa+lB,KAC9Cp1C,EAAI65C,gBAAkBvC,KAGtBt3C,EAAI45C,eAAiBM,KACrBE,EAASp0B,SAAWitB,EAAM+C,YAAYC,EAAW5xD,EAAQC,GACzD81D,EAAS5lC,MAAQy+B,EAAMiD,SAAS1lE,EAAQ8mE,EAAG9mE,QAC3C4pE,EAASz6D,UAAYszD,EAAMoD,aAAa7lE,EAAQ8mE,EAAG9mE,QAEnDwvB,EAAI45C,cAAgB55C,EAAI65C,iBAAmBvC,EAC3Ct3C,EAAI65C,gBAAkBvC,GAG1BA,EAAG+C,UAAYD,EAASp0B,SAAS/vD,EACjCqhF,EAAGgD,UAAYF,EAASp0B,SAAS9vD,EACjCohF,EAAGiD,aAAeH,EAAS5lC,MAC3B8iC,EAAGkD,iBAAmBJ,EAASz6D,WASnCo6D,gBAAiB,SAAyBzC,GACtC,GAAIt3C,GAAMp8C,KAAK26B,QACXk8D,EAAUz6C,EAAI05C,WACdgB,EAAS16C,EAAI25C,WAAac,GAG3BnD,EAAGjoB,WAAagmB,GAAeiC,EAAGjoB,WAAa+lB,KAC9CqF,EAAQ11D,WACRkuD,EAAMC,KAAKoE,EAAGvyD,QAAS,SAASxC,GAC5Bk4D,EAAQ11D,QAAQ54B,MACZkV,QAASkhB,EAAMlhB,QACfG,QAAS+gB,EAAM/gB,YAK3B,IAAIy0E,GAAYqB,EAAGoB,UAAY+B,EAAQ/B,UACnCr0D,EAASizD,EAAG9mE,OAAOnP,QAAUo5E,EAAQjqE,OAAOnP,QAC5CijB,EAASgzD,EAAG9mE,OAAOhP,QAAUi5E,EAAQjqE,OAAOhP,OAkBhD,OAhBA5d,MAAKq2F,kBAAkB3C,EAAIoD,EAAOlqE,OAAQylE,EAAW5xD,EAAQC,GAE7D2uD,EAAM1pF,OAAO+tF,GACToC,WAAYe,EAEZxE,UAAWA,EACX5xD,OAAQA,EACRC,OAAQA,EAERla,SAAU6oE,EAAMhtB,YAAYw0B,EAAQjqE,OAAQ8mE,EAAG9mE,QAC/CgkC,MAAOy+B,EAAMiD,SAASuE,EAAQjqE,OAAQ8mE,EAAG9mE,QACzCmP,UAAWszD,EAAMoD,aAAaoE,EAAQjqE,OAAQ8mE,EAAG9mE,QACjDroB,MAAO8qF,EAAM55D,SAASohE,EAAQ11D,QAASuyD,EAAGvyD,SAC1C41D,SAAU1H,EAAMqD,YAAYmE,EAAQ11D,QAASuyD,EAAGvyD,WAG7CuyD,GASXjE,SAAU,SAAkBjvD,GAExB,GAAIzxB,GAAUyxB,EAAQwvD,YAyBtB,OAxBGjhF,GAAQyxB,EAAQ3pB,QAAUhQ,IACzBkI,EAAQyxB,EAAQ3pB,OAAQ,GAI5Bw4E,EAAM1pF,OAAOigC,EAAOoqD,SAAUjhF,GAAS,GAGvCyxB,EAAQ93B,MAAQ83B,EAAQ93B,OAAS,IAGjC1I,KAAKuvF,SAAShnF,KAAKi4B,GAGnBxgC,KAAKuvF,SAASz4E,KAAK,SAASlR,EAAGa,GAC3B,MAAGb,GAAE8C,MAAQjC,EAAEiC,MACJ,GAER9C,EAAE8C,MAAQjC,EAAEiC,MACJ,EAEJ,IAGJ1I,KAAKuvF,UAmBpB3pD,GAAOmqD,SAAW,SAAS5mF,EAAS4F,GAChC,GAAIikE,GAAOhzE,IAIXivF,KAMAjvF,KAAKmJ,QAAUA,EAOfnJ,KAAKgP,SAAU,EAQfqgF,EAAMC,KAAKvgF,EAAS,SAASzK,EAAOuS,SACzB9H,GAAQ8H,GACf9H,EAAQsgF,EAAM0D,YAAYl8E,IAASvS,IAGvCtE,KAAK+O,QAAUsgF,EAAM1pF,OAAO0pF,EAAM1pF,UAAWigC,EAAOoqD,UAAWjhF,OAG5D/O,KAAK+O,QAAQkhF,UACZZ,EAAM2D,eAAehzF,KAAKmJ,QAASnJ,KAAK+O,QAAQkhF,UAAU,GAQ9DjwF,KAAKg3F,kBAAoB7H,EAAMO,QAAQvmF,EAASooF,EAAa,SAASmC,GAC/D1gB,EAAKhkE,SAAW0kF,EAAGjoB,WAAa8lB,EAC/B/B,EAAUmG,YAAY3iB,EAAM0gB,GACtBA,EAAGjoB,WAAagmB,GACtBjC,EAAUK,OAAO6D,KASzB1zF,KAAKi3F,kBAGTrxD,EAAOmqD,SAASh8E,WASZI,GAAI,SAAiBo7E,EAAUsC,GAC3B,GAAI7e,GAAOhzE,IAIX,OAHAmvF,GAAMh7E,GAAG6+D,EAAK7pE,QAASomF,EAAUsC,EAAS,SAAS1qF,GAC/C6rE,EAAKikB,cAAc1uF,MAAOi4B,QAASr5B,EAAM0qF,QAASA,MAE/C7e,GAUX1+D,IAAK,SAAkBi7E,EAAUsC,GAC7B,GAAI7e,GAAOhzE,IAQX,OANAmvF,GAAM76E,IAAI0+D,EAAK7pE,QAASomF,EAAUsC,EAAS,SAAS1qF,GAChD,GAAIuB,GAAQ2mF,EAAM4C,SAAUzxD,QAASr5B,EAAM0qF,QAASA,GACjDnpF,MAAU,GACTsqE,EAAKikB,cAActuF,OAAOD,EAAO,KAGlCsqE,GAUXuhB,QAAS,SAAsB/zD,EAASq1D,GAEhCA,IACAA,KAIJ,IAAIhsF,GAAQ+7B,EAAO+pD,SAASuH,YAAY,QACxCrtF,GAAMstF,UAAU32D,GAAS,GAAM,GAC/B32B,EAAM22B,QAAUq1D,CAIhB,IAAI1sF,GAAUnJ,KAAKmJ,OAMnB,OALGkmF,GAAM6C,UAAU2D,EAAU7rF,OAAQb,KACjCA,EAAU0sF,EAAU7rF,QAGxBb,EAAQiuF,cAAcvtF,GACf7J,MASXmkC,OAAQ,SAAgBkzD,GAEpB,MADAr3F,MAAKgP,QAAUqoF,EACRr3F,MAQXmrD,QAAS,WACL,GAAItlD,GAAGyxF,CAMP,KAHAjI,EAAM2D,eAAehzF,KAAKmJ,QAASnJ,KAAK+O,QAAQkhF,UAAU,GAGtDpqF,EAAI,GAAKyxF,EAAKt3F,KAAKi3F,gBAAgBpxF,IACnCwpF,EAAM/6E,IAAItU,KAAKmJ,QAASmuF,EAAG92D,QAAS82D,EAAGzF,QAQ3C,OALA7xF,MAAKi3F,iBAGL9H,EAAM76E,IAAItU,KAAKmJ,QAAS4nF,EAAYQ,GAAcvxF,KAAKg3F,mBAEhD,OAqDf,SAAUngF,GAGN,QAAS0gF,GAAY7D,EAAIkC,GACrB,GAAIx5C,GAAMozC,EAAU70D,OAGpB,MAAGi7D,EAAK7mF,QAAQyoF,eAAiB,GAC7B9D,EAAGvyD,QAAQn7B,OAAS4vF,EAAK7mF,QAAQyoF,gBAIrC,OAAO9D,EAAGjoB,WACN,IAAK8lB,GACDkG,GAAY,CACZ,MAEJ,KAAK7H,GAGD,GAAG8D,EAAGltE,SAAWovE,EAAK7mF,QAAQ2oF,iBAC1Bt7C,EAAIvlC,MAAQA,EACZ,MAGJ,IAAI8gF,GAAcv7C,EAAI05C,WAAWlpE,MAGjC,IAAGwvB,EAAIvlC,MAAQA,IACXulC,EAAIvlC,KAAOA,EACR++E,EAAK7mF,QAAQ6oF,wBAA0BlE,EAAGltE,SAAW,GAAG,CAIvD,GAAIgiC,GAAShkD,KAAK+mB,IAAIqqE,EAAK7mF,QAAQ2oF,gBAAkBhE,EAAGltE,SACxDmxE,GAAYr4D,OAASo0D,EAAGjzD,OAAS+nB,EACjCmvC,EAAYp4D,OAASm0D,EAAGhzD,OAAS8nB,EACjCmvC,EAAYl6E,SAAWi2E,EAAGjzD,OAAS+nB,EACnCmvC,EAAY/5E,SAAW81E,EAAGhzD,OAAS8nB,EAGnCkrC,EAAKlE,EAAU2G,gBAAgBzC,IAKpCt3C,EAAI25C,UAAU8B,gBACXjC,EAAK7mF,QAAQ8oF,gBACXjC,EAAK7mF,QAAQ+oF,qBAAuBpE,EAAGltE,YAE3CktE,EAAGmE,gBAAiB,EAIxB,IAAIE,GAAgB37C,EAAI25C,UAAUh6D,SAC/B23D,GAAGmE,gBAAkBE,IAAkBrE,EAAG33D,YAErC23D,EAAG33D,UADJszD,EAAMsD,WAAWoF,GACArE,EAAGhzD,OAAS,EAAKwwD,EAAeF,EAEhC0C,EAAGjzD,OAAS,EAAKwwD,EAAiBE,GAKtDsG,IACA7B,EAAKrB,QAAQ19E,EAAO,QAAS68E,GAC7B+D,GAAY,GAIhB7B,EAAKrB,QAAQ19E,EAAM68E,GACnBkC,EAAKrB,QAAQ19E,EAAO68E,EAAG33D,UAAW23D,EAElC,IAAIf,GAAatD,EAAMsD,WAAWe,EAAG33D,YAGjC65D,EAAK7mF,QAAQipF,mBAAqBrF,GACjCiD,EAAK7mF,QAAQkpF,sBAAwBtF,IACtCe,EAAG9pF,gBAEP,MAEJ,KAAK4nF,GACEiG,GAAa/D,EAAGc,eAAiBoB,EAAK7mF,QAAQyoF,iBAC7C5B,EAAKrB,QAAQ19E,EAAO,MAAO68E,GAC3B+D,GAAY,EAEhB,MAEJ,KAAK3H,GACD2H,GAAY,GAzFxB,GAAIA,IAAY,CA8FhB7xD,GAAO2pD,SAAS2I,MACZrhF,KAAMA,EACNnO,MAAO,GACPmpF,QAAS0F,EACTvH,UAOI0H,gBAAiB,GAWjBE,wBAAwB,EAQxBJ,eAAgB,EAUhBS,qBAAqB,EAQrBD,mBAAmB,EASnBH,gBAAgB,EAShBC,oBAAqB,MAG9B,QAgBHlyD,EAAO2pD,SAAS4I,SACZthF,KAAM,UACNnO,MAAO,KACPmpF,QAAS,SAAwB6B,EAAIkC,GACjCA,EAAKrB,QAAQv0F,KAAK6W,KAAM68E,KAqBhC,SAAU78E,GAGN,QAASuhF,GAAY1E,EAAIkC,GACrB,GAAI7mF,GAAU6mF,EAAK7mF,QACf4rB,EAAU60D,EAAU70D,OAExB,QAAO+4D,EAAGjoB,WACN,IAAK8lB,GACDp3E,aAAawsC,GAGbhsB,EAAQ9jB,KAAOA,EAIf8vC,EAAQvsC,WAAW,WACZugB,GAAWA,EAAQ9jB,MAAQA,GAC1B++E,EAAKrB,QAAQ19E,EAAM68E,IAExB3kF,EAAQspF,YACX,MAEJ,KAAKzI,GACE8D,EAAGltE,SAAWzX,EAAQupF,eACrBn+E,aAAawsC,EAEjB,MAEJ,KAAK6qC,GACDr3E,aAAawsC,IA7BzB,GAAIA,EAkCJ/gB,GAAO2pD,SAASgJ,MACZ1hF,KAAMA,EACNnO,MAAO,GACPsnF,UAMIqI,YAAa,IAQbC,cAAe,GAEnBzG,QAASuG,IAEd,QAeHxyD,EAAO2pD,SAASiJ,SACZ3hF,KAAM,UACNnO,MAAO6Q,IACPs4E,QAAS,SAAwB6B,EAAIkC,GAC9BlC,EAAGjoB,WAAa+lB,GACfoE,EAAKrB,QAAQv0F,KAAK6W,KAAM68E,KAyCpC9tD,EAAO2pD,SAASkJ,OACZ5hF,KAAM,QACNnO,MAAO,GACPsnF,UAMI0I,gBAAiB,EAOjBC,gBAAiB,EAQjBC,eAAgB,GAQhBC,eAAgB,IAGpBhH,QAAS,SAAsB6B,EAAIkC,GAC/B,GAAGlC,EAAGjoB,WAAa+lB,EAAe,CAC9B,GAAIrwD,GAAUuyD,EAAGvyD,QAAQn7B,OACrB+I,EAAU6mF,EAAK7mF,OAGnB,IAAGoyB,EAAUpyB,EAAQ2pF,iBACjBv3D,EAAUpyB,EAAQ4pF,gBAClB,QAKDjF,EAAG+C,UAAY1nF,EAAQ6pF,gBACtBlF,EAAGgD,UAAY3nF,EAAQ8pF,kBAEvBjD,EAAKrB,QAAQv0F,KAAK6W,KAAM68E,GACxBkC,EAAKrB,QAAQv0F,KAAK6W,KAAO68E,EAAG33D,UAAW23D,OA2BvD,SAAU78E,GAGN,QAASiiF,GAAWpF,EAAIkC,GACpB,GAGImD,GACAC,EAJAjqF,EAAU6mF,EAAK7mF,QACf4rB,EAAU60D,EAAU70D,QACpBtI,EAAOm9D,EAAU7xD,QAIrB,QAAO+1D,EAAGjoB,WACN,IAAK8lB,GACD0H,GAAW,CACX,MAEJ,KAAKrJ,GACDqJ,EAAWA,GAAavF,EAAGltE,SAAWzX,EAAQmqF,cAC9C,MAEJ,KAAKpJ,IACGT,EAAM0C,MAAM2B,EAAGj9C,SAAStvC,KAAM,WAAausF,EAAGrB,UAAYtjF,EAAQoqF,aAAeF,IAEjFF,EAAY1mE,GAAQA,EAAK0jE,WAAarC,EAAGoB,UAAYziE,EAAK0jE,UAAUjB,UACpEkE,GAAe,EAGZ3mE,GAAQA,EAAKxb,MAAQA,GACnBkiF,GAAaA,EAAYhqF,EAAQqqF,mBAClC1F,EAAGltE,SAAWzX,EAAQsqF,oBACtBzD,EAAKrB,QAAQ,YAAab,GAC1BsF,GAAe,KAIfA,GAAgBjqF,EAAQuqF,aACxB3+D,EAAQ9jB,KAAOA,EACf++E,EAAKrB,QAAQ55D,EAAQ9jB,KAAM68E,MAnC/C,GAAIuF,IAAW,CA0CfrzD,GAAO2pD,SAASgK,KACZ1iF,KAAMA,EACNnO,MAAO,IACPmpF,QAASiH,EACT9I,UAOImJ,WAAY,IAQZD,eAAgB,GAQhBI,WAAW,EAQXD,kBAAmB,GAQnBD,kBAAmB,OAG5B,OAeHxzD,EAAO2pD,SAASiK,OACZ3iF,KAAM,QACNnO,OAAQ6Q,IACRy2E,UASIpmF,gBAAgB,EAQhB6vF,cAAc,GAElB5H,QAAS,SAAsB6B,EAAIkC,GAC/B,MAAGA,GAAK7mF,QAAQ0qF,cAAgB/F,EAAGmB,aAAezD,MAC9CsC,GAAGsB,cAIJY,EAAK7mF,QAAQnF,gBACZ8pF,EAAG9pF,sBAGJ8pF,EAAGjoB,WAAagmB,GACfmE,EAAKrB,QAAQ,QAASb,OA4ClC,SAAU78E,GAGN,QAAS6iF,GAAiBhG,EAAIkC,GAC1B,OAAOlC,EAAGjoB,WACN,IAAK8lB,GACDkG,GAAY,CACZ,MAEJ,KAAK7H,GAED,GAAG8D,EAAGvyD,QAAQn7B,OAAS,EACnB,MAGJ,IAAI2zF,GAAiBn1F,KAAK+mB,IAAI,EAAImoE,EAAGnvF,OACjCq1F,EAAoBp1F,KAAK+mB,IAAImoE,EAAGqD,SAIpC,IAAG4C,EAAiB/D,EAAK7mF,QAAQ8qF,mBAC7BD,EAAoBhE,EAAK7mF,QAAQ+qF,qBACjC,MAIJtK,GAAU70D,QAAQ9jB,KAAOA,EAGrB4gF,IACA7B,EAAKrB,QAAQ19E,EAAO,QAAS68E,GAC7B+D,GAAY,GAGhB7B,EAAKrB,QAAQ19E,EAAM68E,GAGhBkG,EAAoBhE,EAAK7mF,QAAQ+qF,sBAChClE,EAAKrB,QAAQ,SAAUb,GAIxBiG,EAAiB/D,EAAK7mF,QAAQ8qF,oBAC7BjE,EAAKrB,QAAQ,QAASb,GACtBkC,EAAKrB,QAAQ,SAAWb,EAAGnvF,MAAQ,EAAI,KAAO,OAAQmvF,GAE1D,MAEJ,KAAKlC,GACEiG,GAAa/D,EAAGc,cAAgB,IAC/BoB,EAAKrB,QAAQ19E,EAAO,MAAO68E,GAC3B+D,GAAY,IAlD5B,GAAIA,IAAY,CAwDhB7xD,GAAO2pD,SAASwK,WACZljF,KAAMA,EACNnO,MAAO,GACPsnF,UAOI6J,kBAAmB,IAQnBC,qBAAsB,GAG1BjI,QAAS6H,IAEd,aAQGlmB,EAAgC,WAC9B,MAAO5tC,IACTrlC,KAAKX,EAASM,EAAqBN,EAASC,KAAS2zE,IAAkC3sE,IAAchH,EAAOD,QAAU4zE,KASzH1rE,SAIC,SAASjI,EAAQD,EAASM,GAqgB9B,QAAS85F,KACPh6F,KAAKqjD,UAAUb,aAAaxzC,SAAWhP,KAAKqjD,UAAUb,aAAaxzC,OACnE,IAAIirF,GAAqBpoF,SAASqoF,eAAe,qBACCD,GAAmB1sF,MAAMb,WAAhC,GAAvC1M,KAAKqjD,UAAUb,aAAaxzC,QAAwD,UACR,UAEhFhP,KAAKwqD,wBAAuB,GAO9B,QAAS2vC,KACP,IAAK,GAAInyC,KAAUhoD,MAAKwlD,iBAClBxlD,KAAKwlD,iBAAiBr/C,eAAe6hD,KACvChoD,KAAKwlD,iBAAiBwC,GAAQoX,GAAK,EAAIp/D,KAAKwlD,iBAAiBwC,GAAQqX,GAAK,EAC1Er/D,KAAKwlD,iBAAiBwC,GAAQkX,GAAK,EAAIl/D,KAAKwlD,iBAAiBwC,GAAQmX,GAAK,EAG7B,IAA7Cn/D,KAAKqjD,UAAUlB,mBAAmBnzC,SACpChP,KAAK4mD,2BACLwzC,EAAiB75F,KAAKP,KAAM,aAAc,EAAG,8CAC7Co6F,EAAiB75F,KAAKP,KAAM,aAAc,EAAG,0BAC7Co6F,EAAiB75F,KAAKP,KAAM,aAAc,EAAG,0BAC7Co6F,EAAiB75F,KAAKP,KAAM,aAAc,EAAG,wBAC7Co6F,EAAiB75F,KAAKP,KAAM,eAAgB,EAAG,oBAG/CA,KAAKq6F,kBAEPr6F,KAAK0mD,QAAS,EACd1mD,KAAKkQ,QAMP,QAASoqF,KACP,GAAIvrF,GAAU,gDACVwrF,KACAC,EAAe3oF,SAASqoF,eAAe,wBACvCO,EAAe5oF,SAASqoF,eAAe,uBAC3C,IAA4B,GAAxBM,EAAaE,QAAiB,CAMhC,GALI16F,KAAKqjD,UAAUrD,QAAQC,UAAUE,uBAAyBngD,KAAK26F,gBAAgB36C,QAAQC,UAAUE,uBAAwBo6C,EAAgBhyF,KAAK,0BAA4BvI,KAAKqjD,UAAUrD,QAAQC,UAAUE,uBAC3MngD,KAAKqjD,UAAUrD,QAAQI,gBAAkBpgD,KAAK26F,gBAAgB36C,QAAQC,UAAUG,gBAAyCm6C,EAAgBhyF,KAAK,mBAAqBvI,KAAKqjD,UAAUrD,QAAQI,gBAC1LpgD,KAAKqjD,UAAUrD,QAAQK,cAAgBrgD,KAAK26F,gBAAgB36C,QAAQC,UAAUI,cAA2Ck6C,EAAgBhyF,KAAK,iBAAmBvI,KAAKqjD,UAAUrD,QAAQK,cACxLrgD,KAAKqjD,UAAUrD,QAAQM,gBAAkBtgD,KAAK26F,gBAAgB36C,QAAQC,UAAUK,gBAAyCi6C,EAAgBhyF,KAAK,mBAAqBvI,KAAKqjD,UAAUrD,QAAQM,gBAC1LtgD,KAAKqjD,UAAUrD,QAAQO,SAAWvgD,KAAK26F,gBAAgB36C,QAAQC,UAAUM,SAAgDg6C,EAAgBhyF,KAAK,YAAcvI,KAAKqjD,UAAUrD,QAAQO,SACzJ,GAA1Bg6C,EAAgBv0F,OAAa,CAC/B+I,EAAU,kBACVA,GAAW,wBACX,KAAK,GAAIlJ,GAAI,EAAGA,EAAI00F,EAAgBv0F,OAAQH,IAC1CkJ,GAAWwrF,EAAgB10F,GACvBA,EAAI00F,EAAgBv0F,OAAS,IAC/B+I,GAAW,KAGfA,IAAW,KAET/O,KAAKqjD,UAAUb,aAAaxzC,SAAWhP,KAAK26F,gBAAgBn4C,aAAaxzC,UAC7C,GAA1BurF,EAAgBv0F,OAAc+I,EAAU,kBACtCA,GAAW,KACjBA,GAAW,iBAAmB/O,KAAKqjD,UAAUb,aAAaxzC,SAE7C,iDAAXD,IACFA,GAAW,UAGV,IAA4B,GAAxB0rF,EAAaC,QAAiB,CAQrC,GAPA3rF,EAAU,kBACVA,GAAW,wCACP/O,KAAKqjD,UAAUrD,QAAQQ,UAAUC,cAAgBzgD,KAAK26F,gBAAgB36C,QAAQQ,UAAUC,cAAgB85C,EAAgBhyF,KAAK,iBAAmBvI,KAAKqjD,UAAUrD,QAAQQ,UAAUC,cACjLzgD,KAAKqjD,UAAUrD,QAAQI,gBAAkBpgD,KAAK26F,gBAAgB36C,QAAQQ,UAAUJ,gBAAwBm6C,EAAgBhyF,KAAK,mBAAqBvI,KAAKqjD,UAAUrD,QAAQI,gBACzKpgD,KAAKqjD,UAAUrD,QAAQK,cAAgBrgD,KAAK26F,gBAAgB36C,QAAQQ,UAAUH,cAA0Bk6C,EAAgBhyF,KAAK,iBAAmBvI,KAAKqjD,UAAUrD,QAAQK,cACvKrgD,KAAKqjD,UAAUrD,QAAQM,gBAAkBtgD,KAAK26F,gBAAgB36C,QAAQQ,UAAUF,gBAAwBi6C,EAAgBhyF,KAAK,mBAAqBvI,KAAKqjD,UAAUrD,QAAQM,gBACzKtgD,KAAKqjD,UAAUrD,QAAQO,SAAWvgD,KAAK26F,gBAAgB36C,QAAQQ,UAAUD,SAA+Bg6C,EAAgBhyF,KAAK,YAAcvI,KAAKqjD,UAAUrD,QAAQO,SACxI,GAA1Bg6C,EAAgBv0F,OAAa,CAC/B+I,GAAW,gBACX,KAAK,GAAIlJ,GAAI,EAAGA,EAAI00F,EAAgBv0F,OAAQH,IAC1CkJ,GAAWwrF,EAAgB10F,GACvBA,EAAI00F,EAAgBv0F,OAAS,IAC/B+I,GAAW,KAGfA,IAAW,KAEiB,GAA1BwrF,EAAgBv0F,SAAc+I,GAAW,KACzC/O,KAAKqjD,UAAUb,cAAgBxiD,KAAK26F,gBAAgBn4C,eACtDzzC,GAAW,mBAAqB/O,KAAKqjD,UAAUb,cAEjDzzC,GAAW,SAER,CAOH,GANAA,EAAU,kBACN/O,KAAKqjD,UAAUrD,QAAQU,sBAAsBD,cAAgBzgD,KAAK26F,gBAAgB36C,QAAQU,sBAAsBD,cAAgB85C,EAAgBhyF,KAAK,iBAAmBvI,KAAKqjD,UAAUrD,QAAQU,sBAAsBD,cACrNzgD,KAAKqjD,UAAUrD,QAAQI,gBAAkBpgD,KAAK26F,gBAAgB36C,QAAQU,sBAAsBN,gBAAwBm6C,EAAgBhyF,KAAK,mBAAqBvI,KAAKqjD,UAAUrD,QAAQI,gBACrLpgD,KAAKqjD,UAAUrD,QAAQK,cAAgBrgD,KAAK26F,gBAAgB36C,QAAQU,sBAAsBL,cAA0Bk6C,EAAgBhyF,KAAK,iBAAmBvI,KAAKqjD,UAAUrD,QAAQK,cACnLrgD,KAAKqjD,UAAUrD,QAAQM,gBAAkBtgD,KAAK26F,gBAAgB36C,QAAQU,sBAAsBJ,gBAAwBi6C,EAAgBhyF,KAAK,mBAAqBvI,KAAKqjD,UAAUrD,QAAQM,gBACrLtgD,KAAKqjD,UAAUrD,QAAQO,SAAWvgD,KAAK26F,gBAAgB36C,QAAQU,sBAAsBH,SAA+Bg6C,EAAgBhyF,KAAK,YAAcvI,KAAKqjD,UAAUrD,QAAQO,SACpJ,GAA1Bg6C,EAAgBv0F,OAAa,CAC/B+I,GAAW,oCACX,KAAK,GAAIlJ,GAAI,EAAGA,EAAI00F,EAAgBv0F,OAAQH,IAC1CkJ,GAAWwrF,EAAgB10F,GACvBA,EAAI00F,EAAgBv0F,OAAS,IAC/B+I,GAAW,KAGfA,IAAW,MAOb,GALAA,GAAW,wBACXwrF,KACIv6F,KAAKqjD,UAAUlB,mBAAmBpmB,WAAa/7B,KAAK26F,gBAAgBx4C,mBAAmBpmB,WAAkCw+D,EAAgBhyF,KAAK,cAAgBvI,KAAKqjD,UAAUlB,mBAAmBpmB,WAChMv3B,KAAK+mB,IAAIvrB,KAAKqjD,UAAUlB,mBAAmBC,kBAAoBpiD,KAAK26F,gBAAgBx4C,mBAAmBC,iBAAkBm4C,EAAgBhyF,KAAK,oBAAsBvI,KAAKqjD,UAAUlB,mBAAmBC,iBACtMpiD,KAAKqjD,UAAUlB,mBAAmBE,aAAeriD,KAAK26F,gBAAgBx4C,mBAAmBE,aAAgCk4C,EAAgBhyF,KAAK,gBAAkBvI,KAAKqjD,UAAUlB,mBAAmBE,aACxK,GAA1Bk4C,EAAgBv0F,OAAa,CAC/B,IAAK,GAAIH,GAAI,EAAGA,EAAI00F,EAAgBv0F,OAAQH,IAC1CkJ,GAAWwrF,EAAgB10F,GACvBA,EAAI00F,EAAgBv0F,OAAS,IAC/B+I,GAAW,KAGfA,IAAW,QAGXA,IAAW,eAEbA,IAAW,KAIb/O,KAAK46F,WAAW91E,UAAY/V,EAO9B,QAAS8rF,KACP,GAAI9kF,IAAO,iBAAkB,gBAAiB,iBAC1C+kF,EAAcjpF,SAASkpF,cAAc,6CAA6Cz2F,MAClF02F,EAAU,SAAWF,EAAc,SACnCG,EAAQppF,SAASqoF,eAAec,EACpCC,GAAM1tF,MAAMq+B,QAAU,OACtB,KAAK,GAAI/lC,GAAI,EAAGA,EAAIkQ,EAAI/P,OAAQH,IAC1BkQ,EAAIlQ,IAAMm1F,IACZC,EAAQppF,SAASqoF,eAAenkF,EAAIlQ,IACpCo1F,EAAM1tF,MAAMq+B,QAAU,OAG1B5rC,MAAKk7F,gBACc,KAAfJ,GACF96F,KAAKqjD,UAAUlB,mBAAmBnzC,SAAU,EAC5ChP,KAAKqjD,UAAUrD,QAAQU,sBAAsB1xC,SAAU,EACvDhP,KAAKqjD,UAAUrD,QAAQC,UAAUjxC,SAAU,GAErB,KAAf8rF,EAC0C,GAA7C96F,KAAKqjD,UAAUlB,mBAAmBnzC,UACpChP,KAAKqjD,UAAUlB,mBAAmBnzC,SAAU,EAC5ChP,KAAKqjD,UAAUrD,QAAQU,sBAAsB1xC,SAAU,EACvDhP,KAAKqjD,UAAUrD,QAAQC,UAAUjxC,SAAU,EAC3ChP,KAAKqjD,UAAUb,aAAaxzC,SAAU,EACtChP,KAAK4mD,6BAIP5mD,KAAKqjD,UAAUlB,mBAAmBnzC,SAAU,EAC5ChP,KAAKqjD,UAAUrD,QAAQU,sBAAsB1xC,SAAU,EACvDhP,KAAKqjD,UAAUrD,QAAQC,UAAUjxC,SAAU,GAE7ChP,KAAKivE,0BACL,IAAIgrB,GAAqBpoF,SAASqoF,eAAe,qBACCD,GAAmB1sF,MAAMb,WAAhC,GAAvC1M,KAAKqjD,UAAUb,aAAaxzC,QAAwD,UACR,UAChFhP,KAAK0mD,QAAS,EACd1mD,KAAKkQ,QAWP,QAASkqF,GAAkB/5F,EAAGsN,EAAIwtF,GAChC,GAAIC,GAAU/6F,EAAK,SACfg7F,EAAaxpF,SAASqoF,eAAe75F,GAAIiE,KAEzCgC,OAAMC,QAAQoH,IAChBkE,SAASqoF,eAAekB,GAAS92F,MAAQqJ,EAAIzC,SAASmwF,IACtDr7F,KAAKs7F,yBAAyBH,EAAsBxtF,EAAIzC,SAASmwF,OAGjExpF,SAASqoF,eAAekB,GAAS92F,MAAQ4G,SAASyC,GAAOuY,WAAWm1E,GACpEr7F,KAAKs7F,yBAAyBH,EAAuBjwF,SAASyC,GAAOuY,WAAWm1E,MAGrD,gCAAzBF,GACuB,sCAAzBA,GACyB,kCAAzBA,IACAn7F,KAAK4mD,2BAEP5mD,KAAK0mD,QAAS,EACd1mD,KAAKkQ,QAhtBP,GAAIvP,GAAOT,EAAoB,GAC3Bq7F,EAAiBr7F,EAAoB,IACrCs7F,EAA4Bt7F,EAAoB,IAChDu7F,EAAiBv7F,EAAoB,GAOzCN,GAAQ87F,iBAAmB,WACzB17F,KAAKqjD,UAAUrD,QAAQC,UAAUjxC,SAAWhP,KAAKqjD,UAAUrD,QAAQC,UAAUjxC,QAC7EhP,KAAKivE,2BACLjvE,KAAK0mD,QAAS,EACd1mD,KAAKkQ,SASPtQ,EAAQqvE,yBAA2B,WAEe,GAA5CjvE,KAAKqjD,UAAUrD,QAAQC,UAAUjxC,SACnChP,KAAKgvE,YAAYusB,GACjBv7F,KAAKgvE,YAAYwsB,GAEjBx7F,KAAKqjD,UAAUrD,QAAQI,eAAiBpgD,KAAKqjD,UAAUrD,QAAQC,UAAUG,eACzEpgD,KAAKqjD,UAAUrD,QAAQK,aAAergD,KAAKqjD,UAAUrD,QAAQC,UAAUI,aACvErgD,KAAKqjD,UAAUrD,QAAQM,eAAiBtgD,KAAKqjD,UAAUrD,QAAQC,UAAUK,eACzEtgD,KAAKqjD,UAAUrD,QAAQO,QAAUvgD,KAAKqjD,UAAUrD,QAAQC,UAAUM,QAElEvgD,KAAK6uE,WAAW4sB,IAE+C,GAAxDz7F,KAAKqjD,UAAUrD,QAAQU,sBAAsB1xC,SACpDhP,KAAKgvE,YAAYysB,GACjBz7F,KAAKgvE,YAAYusB,GAEjBv7F,KAAKqjD,UAAUrD,QAAQI,eAAiBpgD,KAAKqjD,UAAUrD,QAAQU,sBAAsBN,eACrFpgD,KAAKqjD,UAAUrD,QAAQK,aAAergD,KAAKqjD,UAAUrD,QAAQU,sBAAsBL,aACnFrgD,KAAKqjD,UAAUrD,QAAQM,eAAiBtgD,KAAKqjD,UAAUrD,QAAQU,sBAAsBJ,eACrFtgD,KAAKqjD,UAAUrD,QAAQO,QAAUvgD,KAAKqjD,UAAUrD,QAAQU,sBAAsBH,QAE9EvgD,KAAK6uE,WAAW2sB,KAGhBx7F,KAAKgvE,YAAYysB,GACjBz7F,KAAKgvE,YAAYwsB,GACjBx7F,KAAK27F,cAAgB90F,OAErB7G,KAAKqjD,UAAUrD,QAAQI,eAAiBpgD,KAAKqjD,UAAUrD,QAAQQ,UAAUJ,eACzEpgD,KAAKqjD,UAAUrD,QAAQK,aAAergD,KAAKqjD,UAAUrD,QAAQQ,UAAUH,aACvErgD,KAAKqjD,UAAUrD,QAAQM,eAAiBtgD,KAAKqjD,UAAUrD,QAAQQ,UAAUF,eACzEtgD,KAAKqjD,UAAUrD,QAAQO,QAAUvgD,KAAKqjD,UAAUrD,QAAQQ,UAAUD,QAElEvgD,KAAK6uE,WAAW0sB,KAUpB37F,EAAQg8F,4BAA8B,WAEL,GAA3B57F,KAAK0lD,YAAY1/C,OACnBhG,KAAKk+C,MAAMl+C,KAAK0lD,YAAY,IAAIsc,UAAU,EAAG,IAIzChiE,KAAK0lD,YAAY1/C,OAAShG,KAAKqjD,UAAU1C,WAAWE,kBAAyD,GAArC7gD,KAAKqjD,UAAU1C,WAAW3xC,SACpGhP,KAAK67F,aAAa77F,KAAKqjD,UAAU1C,WAAWG,eAAe,GAI7D9gD,KAAK87F,qBAUTl8F,EAAQk8F,iBAAmB,WAKzB97F,KAAK+7F,gCACL/7F,KAAKg8F,uBAEDh8F,KAAKqjD,UAAUrD,QAAQM,eAAiB,IACC,GAAvCtgD,KAAKqjD,UAAUb,aAAaxzC,SAA0D,GAAvChP,KAAKqjD,UAAUb,aAAaC,QAC7EziD,KAAKi8F,oCAGuD,GAAxDj8F,KAAKqjD,UAAUrD,QAAQU,sBAAsB1xC,QAC/ChP,KAAKk8F,qCAGLl8F,KAAKm8F,2BAebv8F,EAAQixD,wBAA0B,WAChC,GAA2C,GAAvC7wD,KAAKqjD,UAAUb,aAAaxzC,SAA0D,GAAvChP,KAAKqjD,UAAUb,aAAaC,QAAiB,CAC9FziD,KAAKwlD,oBACLxlD,KAAKylD,yBAEL,KAAK,GAAIuC,KAAUhoD,MAAKk+C,MAClBl+C,KAAKk+C,MAAM/3C,eAAe6hD,KAC5BhoD,KAAKwlD,iBAAiBwC,GAAUhoD,KAAKk+C,MAAM8J,GAG/C,IAAIo0C,GAAep8F,KAAK2xD,QAAiB,QAAS,KAClD,KAAK,GAAI0qC,KAAiBD,GACpBA,EAAaj2F,eAAek2F,KAC1Br8F,KAAKq/C,MAAMl5C,eAAei2F,EAAaC,GAAeznC,cACxD50D,KAAKwlD,iBAAiB62C,GAAiBD,EAAaC,GAGpDD,EAAaC,GAAer6B,UAAU,EAAG,GAK/C,KAAK,GAAIjZ,KAAO/oD,MAAKwlD,iBACfxlD,KAAKwlD,iBAAiBr/C,eAAe4iD,IACvC/oD,KAAKylD,uBAAuBl9C,KAAKwgD,OAKrC/oD,MAAKwlD,iBAAmBxlD,KAAKk+C,MAC7Bl+C,KAAKylD,uBAAyBzlD,KAAK0lD,aAUvC9lD,EAAQm8F,8BAAgC,WACtC,GAAIt8E,GAAIC,EAAI8G,EAAUkhC,EAAM7hD,EACxBq4C,EAAQl+C,KAAKwlD,iBACb82C,EAAUt8F,KAAKqjD,UAAUrD,QAAQI,eACjCm8C,EAAe,CAEnB,KAAK12F,EAAI,EAAGA,EAAI7F,KAAKylD,uBAAuBz/C,OAAQH,IAClD6hD,EAAOxJ,EAAMl+C,KAAKylD,uBAAuB5/C,IACzC6hD,EAAKnH,QAAUvgD,KAAKqjD,UAAUrD,QAAQO,QAEhB,WAAlBvgD,KAAKw8F,WAAqC,GAAXF,GACjC78E,GAAMioC,EAAKr1C,EACXqN,GAAMgoC,EAAKp1C,EACXkU,EAAWhiB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAEpC68E,EAA4B,GAAZ/1E,EAAiB,EAAK81E,EAAU91E,EAChDkhC,EAAKwX,GAAKz/C,EAAK88E,EACf70C,EAAKyX,GAAKz/C,EAAK68E,IAGf70C,EAAKwX,GAAK,EACVxX,EAAKyX,GAAK,IAahBv/D,EAAQu8F,uBAAyB,WAC/B,GAAIM,GAAY1sC,EAAMZ,EAClB1vC,EAAIC,EAAIw/C,EAAIC,EAAIu9B,EAAal2E,EAC7B64B,EAAQr/C,KAAKq/C,KAGjB,KAAK8P,IAAU9P,GACTA,EAAMl5C,eAAegpD,KACvBY,EAAO1Q,EAAM8P,GACTY,EAAKC,WAEHhwD,KAAKk+C,MAAM/3C,eAAe4pD,EAAKwG,OAASv2D,KAAKk+C,MAAM/3C,eAAe4pD,EAAKyG,UACzEimC,EAAa1sC,EAAK/P,QAAQK,aAE1Bo8C,IAAe1sC,EAAK9lC,GAAG81C,YAAchQ,EAAK/lC,KAAK+1C,YAAc,GAAK//D,KAAKqjD,UAAU1C,WAAWY,WAE5F9hC,EAAMswC,EAAK/lC,KAAK3X,EAAI09C,EAAK9lC,GAAG5X,EAC5BqN,EAAMqwC,EAAK/lC,KAAK1X,EAAIy9C,EAAK9lC,GAAG3X,EAC5BkU,EAAWhiB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIbk2E,EAAc18F,KAAKqjD,UAAUrD,QAAQM,gBAAkBm8C,EAAaj2E,GAAYA,EAEhF04C,EAAKz/C,EAAKi9E,EACVv9B,EAAKz/C,EAAKg9E,EAEV3sC,EAAK/lC,KAAKk1C,IAAMA,EAChBnP,EAAK/lC,KAAKm1C,IAAMA,EAChBpP,EAAK9lC,GAAGi1C,IAAMA,EACdnP,EAAK9lC,GAAGk1C,IAAMA,KAexBv/D,EAAQq8F,kCAAoC,WAC1C,GAAIQ,GAAY1sC,EAAMZ,EAAQwtC,EAC1Bt9C,EAAQr/C,KAAKq/C,KAGjB,KAAK8P,IAAU9P,GACb,GAAIA,EAAMl5C,eAAegpD,KACvBY,EAAO1Q,EAAM8P,GACTY,EAAKC,WAEHhwD,KAAKk+C,MAAM/3C,eAAe4pD,EAAKwG,OAASv2D,KAAKk+C,MAAM/3C,eAAe4pD,EAAKyG,SACzD,MAAZzG,EAAK2B,KAAa,CACpB,GAAIkrC,GAAQ7sC,EAAK9lC,GACb4yE,EAAQ9sC,EAAK2B,IACborC,EAAQ/sC,EAAK/lC,IAEjByyE,GAAa1sC,EAAK/P,QAAQK,aAE1Bs8C,EAAsBC,EAAM78B,YAAc+8B,EAAM/8B,YAAc,EAG9D08B,GAAcE,EAAsB38F,KAAKqjD,UAAU1C,WAAWY,WAC9DvhD,KAAK+8F,sBAAsBH,EAAOC,EAAO,GAAMJ,GAC/Cz8F,KAAK+8F,sBAAsBF,EAAOC,EAAO,GAAML,KAiB3D78F,EAAQm9F,sBAAwB,SAAUH,EAAOC,EAAOJ,GACtD,GAAIh9E,GAAIC,EAAIw/C,EAAIC,EAAIu9B,EAAal2E,CAEjC/G,GAAMm9E,EAAMvqF,EAAIwqF,EAAMxqF,EACtBqN,EAAMk9E,EAAMtqF,EAAIuqF,EAAMvqF,EACtBkU,EAAWhiB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIbk2E,EAAc18F,KAAKqjD,UAAUrD,QAAQM,gBAAkBm8C,EAAaj2E,GAAYA,EAEhF04C,EAAKz/C,EAAKi9E,EACVv9B,EAAKz/C,EAAKg9E,EAEVE,EAAM19B,IAAMA,EACZ09B,EAAMz9B,IAAMA,EACZ09B,EAAM39B,IAAMA,EACZ29B,EAAM19B,IAAMA,GAIdv/D,EAAQ0sD,6BAA+B,WACrC,GAAkCzlD,SAA9B7G,KAAKg9F,qBAAoC,CAC3C,KAAOh9F,KAAKg9F,qBAAqBz4E,iBAC/BvkB,KAAKg9F,qBAAqBvrF,YAAYzR,KAAKg9F,qBAAqBx4E,WAGlExkB,MAAKg9F,qBAAqB7yF,WAAWsH,YAAYzR,KAAKg9F,sBACtDh9F,KAAKg9F,qBAAuBn2F,SAQhCjH,EAAQsvE,0BAA4B,WAClC,GAAkCroE,SAA9B7G,KAAKg9F,qBAAoC,CAC3Ch9F,KAAK26F,mBACLh6F,EAAKmG,WAAW9G,KAAK26F,gBAAgB36F,KAAKqjD,UAE1C,IAAI45C,GAAmBz4F,KAAKJ,IAAI,IAAQ,GAAKpE,KAAKqjD,UAAUrD,QAAQC,UAAUE,sBAAyB,IACnG+8C,EAAY14F,KAAKL,IAAI,IAAwD,GAAlDnE,KAAKqjD,UAAUrD,QAAQC,UAAUK,gBAE5D68C,GAAgC,KAAM,KAAM,KAAM,KACtDn9F,MAAKg9F,qBAAuBnrF,SAASM,cAAc,OACnDnS,KAAKg9F,qBAAqB50F,UAAY,uBACtCpI,KAAKg9F,qBAAqBl4E,UAAY,smBAW0Dm4E,EAAiB,YAAe,GAAKj9F,KAAKqjD,UAAUrD,QAAQC,UAAUE,sBAAyB,4EAA4E88C,EAAiB,0BAA6Bj9F,KAAKqjD,UAAUrD,QAAQC,UAA+B,sBAAI,4JAG7QjgD,KAAKqjD,UAAUrD,QAAQC,UAAUG,eAAiB,wFAA0FpgD,KAAKqjD,UAAUrD,QAAQC,UAAUG,eAAiB,2JAG/LpgD,KAAKqjD,UAAUrD,QAAQC,UAAUI,aAAe,sFAAwFrgD,KAAKqjD,UAAUrD,QAAQC,UAAUI,aAAe,iJAGpM68C,EAAU,YAAcl9F,KAAKqjD,UAAUrD,QAAQC,UAAUK,eAAiB,iEAAiE48C,EAAU,0BAA4Bl9F,KAAKqjD,UAAUrD,QAAQC,UAAUK,eAAiB,sJAG5NtgD,KAAKqjD,UAAUrD,QAAQC,UAAUM,QAAU,4FAA8FvgD,KAAKqjD,UAAUrD,QAAQC,UAAUM,QAAU,sPAM/KvgD,KAAKqjD,UAAUrD,QAAQQ,UAAUC,aAAe,kGAAoGzgD,KAAKqjD,UAAUrD,QAAQQ,UAAUC,aAAe,2JAGnMzgD,KAAKqjD,UAAUrD,QAAQQ,UAAUJ,eAAiB,uFAAyFpgD,KAAKqjD,UAAUrD,QAAQQ,UAAUJ,eAAiB,0JAG9LpgD,KAAKqjD,UAAUrD,QAAQQ,UAAUH,aAAe,qFAAuFrgD,KAAKqjD,UAAUrD,QAAQQ,UAAUH,aAAe,4JAGrLrgD,KAAKqjD,UAAUrD,QAAQQ,UAAUF,eAAiB,yFAA2FtgD,KAAKqjD,UAAUrD,QAAQQ,UAAUF,eAAiB,qJAGtMtgD,KAAKqjD,UAAUrD,QAAQQ,UAAUD,QAAU,2FAA6FvgD,KAAKqjD,UAAUrD,QAAQQ,UAAUD,QAAU,oQAM9KvgD,KAAKqjD,UAAUrD,QAAQU,sBAAsBD,aAAe,kGAAoGzgD,KAAKqjD,UAAUrD,QAAQU,sBAAsBD,aAAe,2JAG3NzgD,KAAKqjD,UAAUrD,QAAQU,sBAAsBN,eAAiB,uFAAyFpgD,KAAKqjD,UAAUrD,QAAQU,sBAAsBN,eAAiB,0JAGtNpgD,KAAKqjD,UAAUrD,QAAQU,sBAAsBL,aAAe,qFAAuFrgD,KAAKqjD,UAAUrD,QAAQU,sBAAsBL,aAAe,4JAG7MrgD,KAAKqjD,UAAUrD,QAAQU,sBAAsBJ,eAAiB,yFAA2FtgD,KAAKqjD,UAAUrD,QAAQU,sBAAsBJ,eAAiB,qJAG9NtgD,KAAKqjD,UAAUrD,QAAQU,sBAAsBH,QAAU,2FAA6FvgD,KAAKqjD,UAAUrD,QAAQU,sBAAsBH,QAAU,uJAG3M48C,EAA6Bn2F,QAAQhH,KAAKqjD,UAAUlB,mBAAmBpmB,WAAa,0FAA4F/7B,KAAKqjD,UAAUlB,mBAAmBpmB,UAAY,oKAGtN/7B,KAAKqjD,UAAUlB,mBAAmBC,gBAAkB,yFAA2FpiD,KAAKqjD,UAAUlB,mBAAmBC,gBAAkB,6JAGvMpiD,KAAKqjD,UAAUlB,mBAAmBE,YAAc,wFAA0FriD,KAAKqjD,UAAUlB,mBAAmBE,YAAc,odAU9RriD,KAAKua,iBAAiB6iF,cAAclrF,aAAalS,KAAKg9F,qBAAsBh9F,KAAKua,kBACjFva,KAAK46F,WAAa/oF,SAASM,cAAc,OACzCnS,KAAK46F,WAAWrtF,MAAMkxC,SAAW,OACjCz+C,KAAK46F,WAAWrtF,MAAMo3D,WAAa,UACnC3kE,KAAKua,iBAAiB6iF,cAAclrF,aAAalS,KAAK46F,WAAY56F,KAAKua,iBAEvE,IAAI8iF,EACJA,GAAexrF,SAASqoF,eAAe,eACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,cAAe,GAAI,2CACvEq9F,EAAexrF,SAASqoF,eAAe,eACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,cAAe,EAAG,0BACtEq9F,EAAexrF,SAASqoF,eAAe,eACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,cAAe,EAAG,0BACtEq9F,EAAexrF,SAASqoF,eAAe,eACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,cAAe,EAAG,wBACtEq9F,EAAexrF,SAASqoF,eAAe,iBACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,gBAAiB,EAAG,mBAExEq9F,EAAexrF,SAASqoF,eAAe,cACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,aAAc,EAAG,kCACrEq9F,EAAexrF,SAASqoF,eAAe,cACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,aAAc,EAAG,0BACrEq9F,EAAexrF,SAASqoF,eAAe,cACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,aAAc,EAAG,0BACrEq9F,EAAexrF,SAASqoF,eAAe,cACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,aAAc,EAAG,wBACrEq9F,EAAexrF,SAASqoF,eAAe,gBACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,eAAgB,EAAG,mBAEvEq9F,EAAexrF,SAASqoF,eAAe,cACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,aAAc,EAAG,8CACrEq9F,EAAexrF,SAASqoF,eAAe,cACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,aAAc,EAAG,0BACrEq9F,EAAexrF,SAASqoF,eAAe,cACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,aAAc,EAAG,0BACrEq9F,EAAexrF,SAASqoF,eAAe,cACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,aAAc,EAAG,wBACrEq9F,EAAexrF,SAASqoF,eAAe,gBACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,eAAgB,EAAG,mBACvEq9F,EAAexrF,SAASqoF,eAAe,qBACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,oBAAqBm9F,EAA8B,gCACvGE,EAAexrF,SAASqoF,eAAe,kBACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,iBAAkB,EAAG,sCACzEq9F,EAAexrF,SAASqoF,eAAe,iBACvCmD,EAAa5zE,SAAW2wE,EAAiB7kE,KAAKv1B,KAAM,gBAAiB,EAAG,iCAExE;GAAIw6F,GAAe3oF,SAASqoF,eAAe,wBACvCO,EAAe5oF,SAASqoF,eAAe,wBACvCoD,EAAezrF,SAASqoF,eAAe,uBAC3CO,GAAaC,SAAU,EACnB16F,KAAKqjD,UAAUrD,QAAQC,UAAUjxC,UACnCwrF,EAAaE,SAAU,GAErB16F,KAAKqjD,UAAUlB,mBAAmBnzC,UACpCsuF,EAAa5C,SAAU,EAGzB,IAAIT,GAAqBpoF,SAASqoF,eAAe,sBAC7CqD,EAAwB1rF,SAASqoF,eAAe,yBAChDsD,EAAwB3rF,SAASqoF,eAAe,wBAEpDD,GAAmBxnE,QAAUunE,EAAwBzkE,KAAKv1B,MAC1Du9F,EAAsB9qE,QAAU0nE,EAAqB5kE,KAAKv1B,MAC1Dw9F,EAAsB/qE,QAAU6nE,EAAqB/kE,KAAKv1B,MAExDi6F,EAAmB1sF,MAAMb,WADQ,GAA/B1M,KAAKqjD,UAAUb,cAA8D,GAAtCxiD,KAAKqjD,UAAUo6C,oBAClB,UAGA,UAIxC5C,EAAqBliF,MAAM3Y,MAE3Bw6F,EAAa/wE,SAAWoxE,EAAqBtlE,KAAKv1B,MAClDy6F,EAAahxE,SAAWoxE,EAAqBtlE,KAAKv1B,MAClDs9F,EAAa7zE,SAAWoxE,EAAqBtlE,KAAKv1B,QAWtDJ,EAAQ07F,yBAA2B,SAAUH,EAAuB72F,GAClE,GAAIo5F,GAAYvC,EAAsB7yF,MAAM,IACpB,IAApBo1F,EAAU13F,OACZhG,KAAKqjD,UAAUq6C,EAAU,IAAMp5F,EAEJ,GAApBo5F,EAAU13F,OACjBhG,KAAKqjD,UAAUq6C,EAAU,IAAIA,EAAU,IAAMp5F,EAElB,GAApBo5F,EAAU13F,SACjBhG,KAAKqjD,UAAUq6C,EAAU,IAAIA,EAAU,IAAIA,EAAU,IAAMp5F,KA6N3D,SAASzE,EAAQD,GAYrBA,EAAQknD,oBAAsB,WAE7B9mD,KAAK67F,aAAa77F,KAAKqjD,UAAU1C,WAAWC,iBAAiB,GAG7D5gD,KAAKgxD,eAI2B,GAA5BhxD,KAAKqjD,UAAUR,WACjB7iD,KAAK2pD,aAEP3pD,KAAKkQ,SASNtQ,EAAQi8F,aAAe,SAAS8B,EAAkBC,GAOhD,IANA,GAAIr1C,GAAgBvoD,KAAK0lD,YAAY1/C,OAEjC63F,EAAY,GACZ1+C,EAAQ,EAGLoJ,EAAgBo1C,GAA4BE,EAAR1+C,GACrCA,EAAQ,GAAK,GACfn/C,KAAK89F,oBAAmB,GACxB99F,KAAK+9F,0BAGL/9F,KAAKg+F,uBAEPh+F,KAAK89F,oBAAmB,GACxBv1C,EAAgBvoD,KAAK0lD,YAAY1/C,OACjCm5C,GAAS,CAIPA,GAAQ,GAAmB,GAAdy+C,GACf59F,KAAKq6F,kBAEPr6F,KAAK6wD,2BASPjxD,EAAQq+F,YAAc,SAASv2C,GAC7B,GAAIw2C,GAA2Bl+F,KAAK0mD,MACpC,IAAIgB,EAAKqY,YAAc//D,KAAKqjD,UAAU1C,WAAWM,iBAAmBjhD,KAAKm+F,kBAAkBz2C,KACrE,WAAlB1nD,KAAKw8F,WAAqD,GAA3Bx8F,KAAK0lD,YAAY1/C,QAAc,CAEhEhG,KAAKo+F,WAAW12C,EAIhB,KAHA,GAAIvI,GAAQ,EAGJn/C,KAAK0lD,YAAY1/C,OAAShG,KAAKqjD,UAAU1C,WAAWC,iBAA6B,GAARzB,GAC/En/C,KAAKq+F,uBACLl/C,GAAS,MAKXn/C,MAAKs+F,mBAAmB52C,GAAK,GAAM,GAGnC1nD,KAAK6oD,uBACL7oD,KAAK6wD,0BACL7wD,KAAKgxD,cAIHhxD,MAAK0mD,QAAUw3C,GACjBl+F,KAAKkQ,SAQTtQ,EAAQ6uD,sBAAwB,WACW,GAArCzuD,KAAKqjD,UAAU1C,WAAW3xC,SAA8D,GAA3ChP,KAAKqjD,UAAU1C,WAAWiB,eACzE5hD,KAAKu+F,eAAe,GAAE,GAAM,IAUhC3+F,EAAQo+F,qBAAuB,WAC7Bh+F,KAAKu+F,eAAe,IAAG,GAAM,IAS/B3+F,EAAQy+F,qBAAuB,WAC7Br+F,KAAKu+F,eAAe,GAAE,GAAM,IAgB9B3+F,EAAQ2+F,eAAiB,SAASC,EAAcC,EAAU58D,EAAM68D,GAC9D,GAAIR,GAA2Bl+F,KAAK0mD,OAChCi4C,EAAgB3+F,KAAK0lD,YAAY1/C,OAEjC44F,EAAqB5+F,KAAK+lD,cAAgB/lD,KAAKuE,OAA0B,GAAjBi6F,EACxDK,EAAsB7+F,KAAK+lD,cAAgB/lD,KAAKuE,OAA0B,GAAjBi6F,CAGnC,IAAtBK,GACF7+F,KAAK8+F,kBAImB,GAAtBD,GAA+C,IAAjBL,EAGhCx+F,KAAK++F,cAAcl9D,IAES,GAArB+8D,GAA8C,GAAjBJ,KACvB,GAAT38D,EAGF7hC,KAAKg/F,cAAcP,EAAU58D,GAK7B7hC,KAAKg/F,cAAcP,GAAW,IAGlCz+F,KAAK6oD,uBAGD7oD,KAAK0lD,YAAY1/C,QAAU24F,GAAwC,GAAtBE,GAA+C,IAAjBL,IAC7Ex+F,KAAKi/F,eAAep9D,GACpB7hC,KAAK6oD,yBAImB,GAAtBg2C,GAA+C,IAAjBL,KAChCx+F,KAAKk/F,eACLl/F,KAAK6oD,wBAGP7oD,KAAK+lD,cAAgB/lD,KAAKuE,MAG1BvE,KAAKgxD,eAGDhxD,KAAK0lD,YAAY1/C,OAAS24F,IAC5B3+F,KAAKw/D,gBAAkB,EAEvBx/D,KAAK+9F,2BAGW,GAAdW,GAAsC73F,SAAf63F,IAErB1+F,KAAK0mD,QAAUw3C,GACjBl+F,KAAKkQ,QAITlQ,KAAK6wD,2BAMPjxD,EAAQs/F,aAAe,WAErB,GAAIC,GAAkBn/F,KAAKo/F,mBACvBD,GAAkBn/F,KAAKqjD,UAAU1C,WAAWI,gBAC9C/gD,KAAKq/F,sBAAsB,EAAIr/F,KAAKqjD,UAAU1C,WAAWI,eAAiBo+C,IAW9Ev/F,EAAQq/F,eAAiB,SAASp9D,GAChC7hC,KAAKs/F,cACLt/F,KAAKu/F,mBAAmB19D,GAAM,IAQhCjiC,EAAQk+F,mBAAqB,SAASY,GACpC,GAAIR,GAA2Bl+F,KAAK0mD,OAChCi4C,EAAgB3+F,KAAK0lD,YAAY1/C,MAErChG,MAAKi/F,gBAAe,GAGpBj/F,KAAK6oD,uBACL7oD,KAAKgxD,eAELhxD,KAAK6wD,0BAGD7wD,KAAK0lD,YAAY1/C,QAAU24F,IAC7B3+F,KAAKw/D,gBAAkB,IAGP,GAAdk/B,GAAsC73F,SAAf63F,IAErB1+F,KAAK0mD,QAAUw3C,GACjBl+F,KAAKkQ,SAUXtQ,EAAQ4/F,oBAAsB,WAC5B,GAA+C,GAA3Cx/F,KAAKqjD,UAAU1C,WAAWiB,cAC5B,IAAK,GAAIoG,KAAUhoD,MAAKk+C,MACtB,GAAIl+C,KAAKk+C,MAAM/3C,eAAe6hD,GAAS,CACrC,GAAIN,GAAO1nD,KAAKk+C,MAAM8J,EACD,IAAjBN,EAAK4c,WACF5c,EAAKv0C,MAAQnT,KAAKuE,MAAQvE,KAAKqjD,UAAU1C,WAAWO,oBAAsBlhD,KAAKmgB,MAAMC,OAAOC,aAC9FqnC,EAAKt0C,OAASpT,KAAKuE,MAAQvE,KAAKqjD,UAAU1C,WAAWO,oBAAsBlhD,KAAKmgB,MAAMC,OAAOsF,eAC9F1lB,KAAKi+F,YAAYv2C,KAe7B9nD,EAAQo/F,cAAgB,SAASP,EAAU58D,GACzC,IAAK,GAAIh8B,GAAI,EAAGA,EAAI7F,KAAK0lD,YAAY1/C,OAAQH,IAAK,CAChD,GAAI6hD,GAAO1nD,KAAKk+C,MAAMl+C,KAAK0lD,YAAY7/C,GACvC7F,MAAKs+F,mBAAmB52C,EAAK+2C,EAAU58D,GACvC7hC,KAAK6wD,4BAeTjxD,EAAQ0+F,mBAAqB,SAASn0F,EAAYs0F,EAAW58D,EAAO49D,GAElE,GAAIt1F,EAAW41D,YAAc,IACXl5D,SAAZ44F,IACFA,GAAU,GAIZhB,EAAYgB,GAAWhB,EAEnBt0F,EAAW21D,eAAiB9/D,KAAKuE,OAAkB,GAATs9B,GAE5C,IAAK,GAAI69D,KAAmBv1F,GAAW61D,eACrC,GAAI71D,EAAW61D,eAAe75D,eAAeu5F,GAAkB,CAC7D,GAAIC,GAAYx1F,EAAW61D,eAAe0/B,EAI7B,IAAT79D,GACE89D,EAAUngC,gBAAkBr1D,EAAW+1D,gBAAgB/1D,EAAW+1D,gBAAgBl6D,OAAO,IACtFy5F,IACLz/F,KAAK4/F,sBAAsBz1F,EAAWu1F,EAAgBjB,EAAU58D,EAAM49D,GAIpEz/F,KAAKm+F,kBAAkBh0F,IACzBnK,KAAK4/F,sBAAsBz1F,EAAWu1F,EAAgBjB,EAAU58D,EAAM49D,KAwBpF7/F,EAAQggG,sBAAwB,SAASz1F,EAAYu1F,EAAiBjB,EAAW58D,EAAO49D,GACtF,GAAIE,GAAYx1F,EAAW61D,eAAe0/B,EAG1C,IAAIC,EAAU7/B,eAAiB9/D,KAAKuE,OAAkB,GAATs9B,EAAe,CAE1D7hC,KAAKgpD,eAGLhpD,KAAKk+C,MAAMwhD,GAAmBC,EAG9B3/F,KAAK6/F,uBAAuB11F,EAAWw1F,GAGvC3/F,KAAK8/F,wBAAwB31F,EAAWw1F,GAGxC3/F,KAAK+/F,eAAe51F,GAGpBA,EAAW4E,QAAQovC,MAAQwhD,EAAU5wF,QAAQovC,KAC7Ch0C,EAAW41D,aAAe4/B,EAAU5/B,YACpC51D,EAAW4E,QAAQ0vC,SAAWj6C,KAAKL,IAAInE,KAAKqjD,UAAU1C,WAAWS,YAAaphD,KAAKqjD,UAAUnF,MAAMO,SAAWz+C,KAAKqjD,UAAU1C,WAAWQ,oBAAoBh3C,EAAW41D,YAAY,IAGnL4/B,EAAUttF,EAAIlI,EAAWkI,EAAIlI,EAAWy1D,iBAAmB,GAAMp7D,KAAKiB,UACtEk6F,EAAUrtF,EAAInI,EAAWmI,EAAInI,EAAWy1D,iBAAmB,GAAMp7D,KAAKiB,gBAG/D0E,GAAW61D,eAAe0/B,EAGjC,IAAIM,IAAgB,CACpB,KAAK,GAAIC,KAAe91F,GAAW61D,eACjC,GAAI71D,EAAW61D,eAAe75D,eAAe85F,IACvC91F,EAAW61D,eAAeigC,GAAazgC,gBAAkBmgC,EAAUngC,eAAgB,CACrFwgC,GAAgB,CAChB,OAKe,GAAjBA,GACF71F,EAAW+1D,gBAAgBljB,MAG7Bh9C,KAAKkgG,uBAAuBP,GAI5BA,EAAUngC,eAAiB,EAG3Br1D,EAAW43D,iBAGX/hE,KAAK0mD,QAAS,EAIC,GAAb+3C,GACFz+F,KAAKs+F,mBAAmBqB,EAAUlB,EAAU58D,EAAM49D,IAWtD7/F,EAAQsgG,uBAAyB,SAASx4C,GACxC,IAAK,GAAI7hD,GAAI,EAAGA,EAAI6hD,EAAKkK,aAAa5rD,OAAQH,IAC5C6hD,EAAKkK,aAAa/rD,GAAGivD,sBAczBl1D,EAAQm/F,cAAgB,SAASl9D,GAClB,GAATA,EAC6C,GAA3C7hC,KAAKqjD,UAAU1C,WAAWiB,eAC5B5hD,KAAKmgG,sBAIPngG,KAAKogG,wBAUTxgG,EAAQugG,oBAAsB,WAC5B,GAAI1gF,GAAGC,EAAG1Z,EACNq6F,EAAYrgG,KAAKqjD,UAAU1C,WAAWK,qBAAqBhhD,KAAKuE,KAIpE,KAAK,GAAI4qD,KAAUnvD,MAAKq/C,MACtB,GAAIr/C,KAAKq/C,MAAMl5C,eAAegpD,GAAS,CACrC,GAAIY,GAAO/vD,KAAKq/C,MAAM8P,EACtB,IAAIY,EAAKC,WACHD,EAAKwG,MAAQxG,EAAKyG,SACpB/2C,EAAMswC,EAAK9lC,GAAG5X,EAAI09C,EAAK/lC,KAAK3X,EAC5BqN,EAAMqwC,EAAK9lC,GAAG3X,EAAIy9C,EAAK/lC,KAAK1X,EAC5BtM,EAASxB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAGrB2gF,EAATr6F,GAAoB,CAEtB,GAAImE,GAAa4lD,EAAK/lC,KAClB21E,EAAY5vC,EAAK9lC,EACjB8lC,GAAK9lC,GAAGlb,QAAQovC,KAAO4R,EAAK/lC,KAAKjb,QAAQovC,OAC3Ch0C,EAAa4lD,EAAK9lC,GAClB01E,EAAY5vC,EAAK/lC,MAGkB,GAAjC21E,EAAU/tC,aAAa5rD,OACzBhG,KAAKsgG,cAAcn2F,EAAWw1F,GAAU,GAEC,GAAlCx1F,EAAWynD,aAAa5rD,QAC/BhG,KAAKsgG,cAAcX,EAAUx1F,GAAW,MAetDvK,EAAQwgG,qBAAuB,WAC7B,IAAK,GAAIp4C,KAAUhoD,MAAKk+C,MAEtB,GAAIl+C,KAAKk+C,MAAM/3C,eAAe6hD,GAAS,CACrC,GAAI23C,GAAY3/F,KAAKk+C,MAAM8J,EAG3B,IAAqC,GAAjC23C,EAAU/tC,aAAa5rD,OAAa,CACtC,GAAI+pD,GAAO4vC,EAAU/tC,aAAa,GAC9BznD,EAAc4lD,EAAKwG,MAAQopC,EAAUt/F,GAAML,KAAKk+C,MAAM6R,EAAKyG,QAAUx2D,KAAKk+C,MAAM6R,EAAKwG,KAErFopC,GAAUt/F,IAAM8J,EAAW9J,KACzB8J,EAAW4E,QAAQovC,KAAOwhD,EAAU5wF,QAAQovC,KAC9Cn+C,KAAKsgG,cAAcn2F,EAAWw1F,GAAU,GAGxC3/F,KAAKsgG,cAAcX,EAAUx1F,GAAW,OAgBpDvK,EAAQ2gG,4BAA8B,SAAS74C,GAG7C,IAAK,GAFD84C,GAAoB,GACpBC,EAAwB,KACnB56F,EAAI,EAAGA,EAAI6hD,EAAKkK,aAAa5rD,OAAQH,IAC5C,GAA6BgB,SAAzB6gD,EAAKkK,aAAa/rD,GAAkB,CACtC,GAAI66F,GAAY,IACZh5C,GAAKkK,aAAa/rD,GAAG2wD,QAAU9O,EAAKrnD,GACtCqgG,EAAYh5C,EAAKkK,aAAa/rD,GAAGmkB,KAE1B09B,EAAKkK,aAAa/rD,GAAG0wD,MAAQ7O,EAAKrnD,KACzCqgG,EAAYh5C,EAAKkK,aAAa/rD,GAAGokB,IAIlB,MAAby2E,GAAqBF,EAAoBE,EAAUxgC,gBAAgBl6D,SACrEw6F,EAAoBE,EAAUxgC,gBAAgBl6D,OAC9Cy6F,EAAwBC,GAKb,MAAbA,GAAkD75F,SAA7B7G,KAAKk+C,MAAMwiD,EAAUrgG,KAC5CL,KAAKsgG,cAAcI,EAAWh5C,GAAM,IAYxC9nD,EAAQ2/F,mBAAqB,SAAS19D,EAAO8+D,GAE3C,IAAK,GAAI34C,KAAUhoD,MAAKk+C,MAElBl+C,KAAKk+C,MAAM/3C,eAAe6hD,IAC5BhoD,KAAK4gG,oBAAoB5gG,KAAKk+C,MAAM8J,GAAQnmB,EAAM8+D,IAcxD/gG,EAAQghG,oBAAsB,SAASC,EAASh/D,EAAO8+D,EAAWG,GAShE,GAR6Bj6F,SAAzBi6F,IACFA,EAAuB,GAOpBD,EAAQjvC,aAAa5rD,QAAUhG,KAAKmvE,cAA6B,GAAbwxB,GACtDE,EAAQjvC,aAAa5rD,QAAUhG,KAAKmvE,cAA6B,GAAbwxB,EAAoB,CASzE,IAAK,GAPDlhF,GAAGC,EAAG1Z,EACNq6F,EAAYrgG,KAAKqjD,UAAU1C,WAAWK,qBAAqBhhD,KAAKuE,MAChEw8F,GAAe,EAGfC,KACAC,EAAuBJ,EAAQjvC,aAAa5rD,OACvCsmB,EAAI,EAAO20E,EAAJ30E,EAA0BA,IACxC00E,EAAaz4F,KAAKs4F,EAAQjvC,aAAatlC,GAAGjsB,GAK5C,IAAa,GAATwhC,EAEF,IADAk/D,GAAe,EACVz0E,EAAI,EAAO20E,EAAJ30E,EAA0BA,IAAK,CACzC,GAAIyjC,GAAO/vD,KAAKq/C,MAAM2hD,EAAa10E,GACnC,IAAazlB,SAATkpD,GACEA,EAAKC,WACHD,EAAKwG,MAAQxG,EAAKyG,SACpB/2C,EAAMswC,EAAK9lC,GAAG5X,EAAI09C,EAAK/lC,KAAK3X,EAC5BqN,EAAMqwC,EAAK9lC,GAAG3X,EAAIy9C,EAAK/lC,KAAK1X,EAC5BtM,EAASxB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAErB2gF,EAATr6F,GAAoB,CACtB+6F,GAAe,CACf,QASZ,IAAMl/D,GAASk/D,GAAiBl/D,EAAO,CACrC,GAAIq/D,MACAC,IAEJ,KAAK70E,EAAI,EAAO20E,EAAJ30E,EAA0BA,IAAK,CACzCyjC,EAAO/vD,KAAKq/C,MAAM2hD,EAAa10E,GAC/B,IAAIqzE,GAAY3/F,KAAKk+C,MAAO6R,EAAKyG,QAAUqqC,EAAQxgG,GAAM0vD,EAAKwG,KAAOxG,EAAKyG,OACxC3vD,UAA9Bs6F,EAAYxB,EAAUt/F,MACxB8gG,EAAYxB,EAAUt/F,KAAM,EAC5B6gG,EAAS34F,KAAKo3F,IAIlB,IAAKrzE,EAAI,EAAGA,EAAI40E,EAASl7F,OAAQsmB,IAAK,CACpC,GAAIqzE,GAAYuB,EAAS50E,EAEpBqzE,GAAU/tC,aAAa5rD,QAAWhG,KAAKmvE,aAAe2xB,GACxDnB,EAAUt/F,IAAMwgG,EAAQxgG,IACzBL,KAAKsgG,cAAcO,EAAQlB,EAAU99D,OAsB/CjiC,EAAQ0gG,cAAgB,SAASn2F,EAAYw1F,EAAW99D,GAEtD13B,EAAW61D,eAAe2/B,EAAUt/F,IAAMs/F,CAG1C,KAAK,GAAI95F,GAAI,EAAGA,EAAI85F,EAAU/tC,aAAa5rD,OAAQH,IAAK,CACtD,GAAIkqD,GAAO4vC,EAAU/tC,aAAa/rD,EAC9BkqD,GAAKwG,MAAQpsD,EAAW9J,IAAM0vD,EAAKyG,QAAUrsD,EAAW9J,GAE1DL,KAAKohG,qBAAqBj3F,EAAWw1F,EAAU5vC,GAI/C/vD,KAAKqhG,sBAAsBl3F,EAAWw1F,EAAU5vC,GAIpD4vC,EAAU/tC,gBAGV5xD,KAAKshG,8BAA8Bn3F,EAAWw1F,SAIvC3/F,MAAKk+C,MAAMyhD,EAAUt/F,GAG5B,IAAIkhG,GAAap3F,EAAW4E,QAAQovC,IACpCwhD,GAAUngC,eAAiBx/D,KAAKw/D,eAChCr1D,EAAW4E,QAAQovC,MAAQwhD,EAAU5wF,QAAQovC,KAC7Ch0C,EAAW41D,aAAe4/B,EAAU5/B,YACpC51D,EAAW4E,QAAQ0vC,SAAWj6C,KAAKL,IAAInE,KAAKqjD,UAAU1C,WAAWS,YAAaphD,KAAKqjD,UAAUnF,MAAMO,SAAWz+C,KAAKqjD,UAAU1C,WAAWQ,mBAAmBh3C,EAAW41D,aAGlK51D,EAAW+1D,gBAAgB/1D,EAAW+1D,gBAAgBl6D,OAAS,IAAMhG,KAAKw/D,gBAC5Er1D,EAAW+1D,gBAAgB33D,KAAKvI,KAAKw/D,gBAKrCr1D,EAAW21D,eADA,GAATj+B,EAC0B,EAGA7hC,KAAKuE,MAInC4F,EAAW43D,iBAGX53D,EAAW61D,eAAe2/B,EAAUt/F,IAAIy/D,eAAiB31D,EAAW21D,eAGpE6/B,EAAUp7B,gBAGVp6D,EAAWq6D,eAAe+8B,GAG1BvhG,KAAK0mD,QAAS,GAYhB9mD,EAAQwhG,qBAAuB,SAASj3F,EAAYw1F,EAAW5vC,GAEblpD,SAA5CsD,EAAW81D,eAAe0/B,EAAUt/F,MACtC8J,EAAW81D,eAAe0/B,EAAUt/F,QAGtC8J,EAAW81D,eAAe0/B,EAAUt/F,IAAIkI,KAAKwnD,SAGtC/vD,MAAKq/C,MAAM0Q,EAAK1vD,GAGvB,KAAK,GAAIwF,GAAI,EAAGA,EAAIsE,EAAWynD,aAAa5rD,OAAQH,IAClD,GAAIsE,EAAWynD,aAAa/rD,GAAGxF,IAAM0vD,EAAK1vD,GAAI,CAC5C8J,EAAWynD,aAAajpD,OAAO9C,EAAE,EACjC,SAcNjG,EAAQyhG,sBAAwB,SAASl3F,EAAYw1F,EAAW5vC,GAE1DA,EAAKwG,MAAQxG,EAAKyG,OACpBx2D,KAAKohG,qBAAqBj3F,EAAYw1F,EAAW5vC,IAG7CA,EAAKwG,MAAQopC,EAAUt/F,IACzB0vD,EAAKqH,aAAa7uD,KAAKo3F,EAAUt/F,IACjC0vD,EAAK9lC,GAAK9f,EACV4lD,EAAKwG,KAAOpsD,EAAW9J,KAGvB0vD,EAAKoH,eAAe5uD,KAAKo3F,EAAUt/F,IACnC0vD,EAAK/lC,KAAO7f,EACZ4lD,EAAKyG,OAASrsD,EAAW9J,IAG3BL,KAAKwhG,oBAAoBr3F,EAAWw1F,EAAU5vC,KAalDnwD,EAAQ0hG,8BAAgC,SAASn3F,EAAYw1F,GAE3D,IAAK,GAAI95F,GAAI,EAAGA,EAAIsE,EAAWynD,aAAa5rD,OAAQH,IAAK,CACvD,GAAIkqD,GAAO5lD,EAAWynD,aAAa/rD,EAE/BkqD,GAAKwG,MAAQxG,EAAKyG,QACpBx2D,KAAKohG,qBAAqBj3F,EAAYw1F,EAAW5vC,KAcvDnwD,EAAQ4hG,oBAAsB,SAASr3F,EAAYw1F,EAAW5vC,GAGtD5lD,EAAWw0D,cAAcx4D,eAAew5F,EAAUt/F,MACtD8J,EAAWw0D,cAAcghC,EAAUt/F,QAErC8J,EAAWw0D,cAAcghC,EAAUt/F,IAAIkI,KAAKwnD,GAG5C5lD,EAAWynD,aAAarpD,KAAKwnD,IAY/BnwD,EAAQkgG,wBAA0B,SAAS31F,EAAYw1F,GACrD,GAAIx1F,EAAWw0D,cAAcx4D,eAAew5F,EAAUt/F,IAAK,CACzD,IAAK,GAAIwF,GAAI,EAAGA,EAAIsE,EAAWw0D,cAAcghC,EAAUt/F,IAAI2F,OAAQH,IAAK,CACtE,GAAIkqD,GAAO5lD,EAAWw0D,cAAcghC,EAAUt/F,IAAIwF,EAC9CkqD,GAAKoH,eAAepH,EAAKoH,eAAenxD,OAAO,IAAM25F,EAAUt/F,IACjE0vD,EAAKoH,eAAena,MACpB+S,EAAKyG,OAASmpC,EAAUt/F,GACxB0vD,EAAK/lC,KAAO21E,IAGZ5vC,EAAKqH,aAAapa,MAClB+S,EAAKwG,KAAOopC,EAAUt/F,GACtB0vD,EAAK9lC,GAAK01E,GAIZA,EAAU/tC,aAAarpD,KAAKwnD,EAG5B,KAAK,GAAIzjC,GAAI,EAAGA,EAAIniB,EAAWynD,aAAa5rD,OAAQsmB,IAClD,GAAIniB,EAAWynD,aAAatlC,GAAGjsB,IAAM0vD,EAAK1vD,GAAI,CAC5C8J,EAAWynD,aAAajpD,OAAO2jB,EAAE,EACjC,cAKCniB,GAAWw0D,cAAcghC,EAAUt/F,MAa9CT,EAAQmgG,eAAiB,SAAS51F,GAEhC,IAAK,GADDynD,MACK/rD,EAAI,EAAGA,EAAIsE,EAAWynD,aAAa5rD,OAAQH,IAAK,CACvD,GAAIkqD,GAAO5lD,EAAWynD,aAAa/rD,IAC/BsE,EAAW9J,IAAM0vD,EAAKwG,MAAQpsD,EAAW9J,IAAM0vD,EAAKyG,SACtD5E,EAAarpD,KAAKwnD,GAGtB5lD,EAAWynD,aAAeA,GAY5BhyD,EAAQigG,uBAAyB,SAAS11F,EAAYw1F,GACpD,IAAK,GAAI95F,GAAI,EAAGA,EAAIsE,EAAW81D,eAAe0/B,EAAUt/F,IAAI2F,OAAQH,IAAK,CACvE,GAAIkqD,GAAO5lD,EAAW81D,eAAe0/B,EAAUt/F,IAAIwF,EAGnD7F,MAAKq/C,MAAM0Q,EAAK1vD,IAAM0vD,EAGtB4vC,EAAU/tC,aAAarpD,KAAKwnD,GAC5B5lD,EAAWynD,aAAarpD,KAAKwnD,SAGxB5lD,GAAW81D,eAAe0/B,EAAUt/F,KAa7CT,EAAQoxD,aAAe,WACrB,GAAIhJ,EAEJ,KAAKA,IAAUhoD,MAAKk+C,MAClB,GAAIl+C,KAAKk+C,MAAM/3C,eAAe6hD,GAAS,CACrC,GAAIN,GAAO1nD,KAAKk+C,MAAM8J,EAClBN,GAAKqY,YAAc,IACrBrY,EAAK70C,MAAQ,IAAI+B,OAAOlQ,OAAOgjD,EAAKqY,aAAa,MAMvD,IAAK/X,IAAUhoD,MAAKk+C,MACdl+C,KAAKk+C,MAAM/3C,eAAe6hD,KAC5BN,EAAO1nD,KAAKk+C,MAAM8J,GACM,GAApBN,EAAKqY,cAELrY,EAAK70C,MADoBhM,SAAvB6gD,EAAKyY,cACMzY,EAAKyY,cAGLz7D,OAAOgjD,EAAKrnD,OAuBnCT,EAAQm+F,uBAAyB,WAC/B,GAGI/1C,GAHAy5C,EAAW,EACXC,EAAW,IACXC,EAAe,CAInB,KAAK35C,IAAUhoD,MAAKk+C,MACdl+C,KAAKk+C,MAAM/3C,eAAe6hD,KAC5B25C,EAAe3hG,KAAKk+C,MAAM8J,GAAQkY,gBAAgBl6D,OACnC27F,EAAXF,IAA0BA,EAAWE,GACrCD,EAAWC,IAAeD,EAAWC,GAI7C,IAAIF,EAAWC,EAAW1hG,KAAKqjD,UAAU1C,WAAWgB,uBAAwB,CAC1E,GAAIg9C,GAAgB3+F,KAAK0lD,YAAY1/C,OACjC47F,EAAcH,EAAWzhG,KAAKqjD,UAAU1C,WAAWgB,sBAEvD,KAAKqG,IAAUhoD,MAAKk+C,MACdl+C,KAAKk+C,MAAM/3C,eAAe6hD,IACxBhoD,KAAKk+C,MAAM8J,GAAQkY,gBAAgBl6D,OAAS47F,GAC9C5hG,KAAKugG,4BAA4BvgG,KAAKk+C,MAAM8J,GAIlDhoD,MAAK6oD,uBAED7oD,KAAK0lD,YAAY1/C,QAAU24F,IAC7B3+F,KAAKw/D,gBAAkB,KAe7B5/D,EAAQu+F,kBAAoB,SAASz2C,GACnC,MACEljD,MAAK+mB,IAAIm8B,EAAKr1C,EAAIrS,KAAK8lD,WAAWzzC,IAAMrS,KAAKqjD,UAAU1C,WAAWe,kBAAkB1hD,KAAKuE,OAEzFC,KAAK+mB,IAAIm8B,EAAKp1C,EAAItS,KAAK8lD,WAAWxzC,IAAMtS,KAAKqjD,UAAU1C,WAAWe,kBAAkB1hD,KAAKuE,OAU7F3E,EAAQy6F,gBAAkB,WACxB,IAAK,GAAIx0F,GAAI,EAAGA,EAAI7F,KAAK0lD,YAAY1/C,OAAQH,IAAK,CAChD,GAAI6hD,GAAO1nD,KAAKk+C,MAAMl+C,KAAK0lD,YAAY7/C,GACvC,IAAoB,GAAf6hD,EAAK2F,QAAkC,GAAf3F,EAAK4F,OAAkB,CAClD,GAAInhC,GAAS,EAASnsB,KAAK0lD,YAAY1/C,OAASxB,KAAKL,IAAI,IAAIujD,EAAK34C,QAAQovC,MACtEyS,EAAQ,EAAIpsD,KAAK6nB,GAAK7nB,KAAKiB,QACZ,IAAfiiD,EAAK2F,SAAkB3F,EAAKr1C,EAAI8Z,EAAS3nB,KAAK4a,IAAIwxC,IACnC,GAAflJ,EAAK4F,SAAkB5F,EAAKp1C,EAAI6Z,EAAS3nB,KAAKya,IAAI2xC,IACtD5wD,KAAKkgG,uBAAuBx4C,MAYlC9nD,EAAQ0/F,YAAc,WAMpB,IAAK,GALDuC,GAAU,EACVC,EAAiB,EACjBC,EAAa,EACbC,EAAa,EAERn8F,EAAI,EAAGA,EAAI7F,KAAK0lD,YAAY1/C,OAAQH,IAAK,CAEhD,GAAI6hD,GAAO1nD,KAAKk+C,MAAMl+C,KAAK0lD,YAAY7/C,GACnC6hD,GAAKkK,aAAa5rD,OAASg8F,IAC7BA,EAAat6C,EAAKkK,aAAa5rD,QAEjC67F,GAAWn6C,EAAKkK,aAAa5rD,OAC7B87F,GAAkBt9F,KAAK+vB,IAAImzB,EAAKkK,aAAa5rD,OAAO,GACpD+7F,GAAc,EAEhBF,GAAoBE,EACpBD,GAAkCC,CAElC,IAAIE,GAAWH,EAAiBt9F,KAAK+vB,IAAIstE,EAAQ,GAE7CK,EAAoB19F,KAAK6rB,KAAK4xE,EAElCjiG,MAAKmvE,aAAe3qE,KAAKgB,MAAMq8F,EAAU,EAAEK,GAGvCliG,KAAKmvE,aAAe6yB,IACtBhiG,KAAKmvE,aAAe6yB,IAexBpiG,EAAQy/F,sBAAwB,SAAS8C,GACvCniG,KAAKmvE,aAAe,CACpB,IAAIizB,GAAe59F,KAAKgB,MAAMxF,KAAK0lD,YAAY1/C,OAASm8F,EACxD,KAAK,GAAIn6C,KAAUhoD,MAAKk+C,MAClBl+C,KAAKk+C,MAAM/3C,eAAe6hD,IACkB,GAA1ChoD,KAAKk+C,MAAM8J,GAAQ4J,aAAa5rD,QAC9Bo8F,EAAe,IACjBpiG,KAAK4gG,oBAAoB5gG,KAAKk+C,MAAM8J,IAAQ,GAAK,EAAK,GACtDo6C,GAAgB,IAa1BxiG,EAAQw/F,kBAAoB,WAC1B,GAAIiD,GAAS,EACTh+F,EAAQ,CACZ,KAAK,GAAI2jD,KAAUhoD,MAAKk+C,MAClBl+C,KAAKk+C,MAAM/3C,eAAe6hD,KACkB,GAA1ChoD,KAAKk+C,MAAM8J,GAAQ4J,aAAa5rD,SAClCq8F,GAAU,GAEZh+F,GAAS,EAGb,OAAOg+F,GAAOh+F,IAMZ,SAASxE,EAAQD,EAASM,GAE9B,GAAIS,GAAOT,EAAoB,GAC3BqD,EAAOrD,EAAoB,GAgB/BN,GAAQ6pD,iBAAmB,WACzBzpD,KAAK2xD,QAAgB,OAAE3xD,KAAKw8F,WAAWt+C,MAAQl+C,KAAKk+C,MACpDl+C,KAAK2xD,QAAgB,OAAE3xD,KAAKw8F,WAAWn9C,MAAQr/C,KAAKq/C,MACpDr/C,KAAK2xD,QAAgB,OAAE3xD,KAAKw8F,WAAW92C,YAAc1lD,KAAK0lD,aAa5D9lD,EAAQ0iG,gBAAkB,SAASC,EAAUC,GACxB37F,SAAf27F,GAA0C,UAAdA,EAC9BxiG,KAAKyiG,sBAAsBF,GAG3BviG,KAAK0iG,sBAAsBH,IAY/B3iG,EAAQ6iG,sBAAwB,SAASF,GACvCviG,KAAK0lD,YAAc1lD,KAAK2xD,QAAgB,OAAE4wC,GAAuB,YACjEviG,KAAKk+C,MAAcl+C,KAAK2xD,QAAgB,OAAE4wC,GAAiB,MAC3DviG,KAAKq/C,MAAcr/C,KAAK2xD,QAAgB,OAAE4wC,GAAiB,OAU7D3iG,EAAQ+iG,uBAAyB,WAC/B3iG,KAAK0lD,YAAc1lD,KAAK2xD,QAAiB,QAAe,YACxD3xD,KAAKk+C,MAAcl+C,KAAK2xD,QAAiB,QAAS,MAClD3xD,KAAKq/C,MAAcr/C,KAAK2xD,QAAiB,QAAS,OAWpD/xD,EAAQ8iG,sBAAwB,SAASH,GACvCviG,KAAK0lD,YAAc1lD,KAAK2xD,QAAgB,OAAE4wC,GAAuB,YACjEviG,KAAKk+C,MAAcl+C,KAAK2xD,QAAgB,OAAE4wC,GAAiB,MAC3DviG,KAAKq/C,MAAcr/C,KAAK2xD,QAAgB,OAAE4wC,GAAiB,OAU7D3iG,EAAQgjG,kBAAoB,WAC1B5iG,KAAKsiG,gBAAgBtiG,KAAKw8F,YAU5B58F,EAAQ48F,QAAU,WAChB,MAAOx8F,MAAKovE,aAAapvE,KAAKovE,aAAappE,OAAO,IAUpDpG,EAAQijG,gBAAkB,WACxB,GAAI7iG,KAAKovE,aAAappE,OAAS,EAC7B,MAAOhG,MAAKovE,aAAapvE,KAAKovE,aAAappE,OAAO,EAGlD,MAAM,IAAIU,WAAU,iEAaxB9G,EAAQkjG,iBAAmB,SAASC,GAClC/iG,KAAKovE,aAAa7mE,KAAKw6F,IAUzBnjG,EAAQojG,kBAAoB,WAC1BhjG,KAAKovE,aAAapyB,OAWpBp9C,EAAQqjG,iBAAmB,SAASF,GAElC/iG,KAAK2xD,QAAgB,OAAEoxC,IAAU7kD,SACAmB,SACAqG,eACAoa,eAAkB9/D,KAAKuE,MACvB8qE,YAAexoE,QAGhD7G,KAAK2xD,QAAgB,OAAEoxC,GAAoB,YAAI,GAAIx/F,IAC9ClD,GAAG0iG,EACF33F,OACEsB,WAAY,UACZC,OAAQ,iBAEJ3M,KAAKqjD,WACjBrjD,KAAK2xD,QAAgB,OAAEoxC,GAAoB,YAAEhjC,YAAc,GAW7DngE,EAAQsjG,oBAAsB,SAASX,SAC9BviG,MAAK2xD,QAAgB,OAAE4wC,IAWhC3iG,EAAQujG,oBAAsB,SAASZ,SAC9BviG,MAAK2xD,QAAgB,OAAE4wC,IAWhC3iG,EAAQwjG,cAAgB,SAASb,GAE/BviG,KAAK2xD,QAAgB,OAAE4wC,GAAYviG,KAAK2xD,QAAgB,OAAE4wC,GAG1DviG,KAAKkjG,oBAAoBX,IAW3B3iG,EAAQyjG,gBAAkB,SAASd,GAEjCviG,KAAK2xD,QAAgB,OAAE4wC,GAAYviG,KAAK2xD,QAAgB,OAAE4wC,GAG1DviG,KAAKmjG,oBAAoBZ,IAa3B3iG,EAAQ0jG,qBAAuB,SAASf,GAEtC,IAAK,GAAIv6C,KAAUhoD,MAAKk+C,MAClBl+C,KAAKk+C,MAAM/3C,eAAe6hD,KAC5BhoD,KAAK2xD,QAAgB,OAAE4wC,GAAiB,MAAEv6C,GAAUhoD,KAAKk+C,MAAM8J,GAKnE,KAAK,GAAImH,KAAUnvD,MAAKq/C,MAClBr/C,KAAKq/C,MAAMl5C,eAAegpD,KAC5BnvD,KAAK2xD,QAAgB,OAAE4wC,GAAiB,MAAEpzC,GAAUnvD,KAAKq/C,MAAM8P,GAKnE,KAAK,GAAItpD,GAAI,EAAGA,EAAI7F,KAAK0lD,YAAY1/C,OAAQH,IAC3C7F,KAAK2xD,QAAgB,OAAE4wC,GAAuB,YAAEh6F,KAAKvI,KAAK0lD,YAAY7/C,KAW1EjG,EAAQ2jG,6BAA+B,WACrCvjG,KAAK67F,aAAa,GAAE,IAUtBj8F,EAAQw+F,WAAa,SAAS12C,GAE5B,GAAI87C,GAASxjG,KAAKw8F,gBAWXx8F,MAAKk+C,MAAMwJ,EAAKrnD,GAEvB,IAAIojG,GAAmB9iG,EAAK2E,YAG5BtF,MAAKojG,cAAcI,GAGnBxjG,KAAKijG,iBAAiBQ,GAGtBzjG,KAAK8iG,iBAAiBW,GAGtBzjG,KAAKsiG,gBAAgBtiG,KAAKw8F,WAG1Bx8F,KAAKk+C,MAAMwJ,EAAKrnD,IAAMqnD,GAUxB9nD,EAAQk/F,gBAAkB,WAExB,GAAI0E,GAASxjG,KAAKw8F,SAGlB,IAAc,WAAVgH,IAC8B,GAA3BxjG,KAAK0lD,YAAY1/C,QACpBhG,KAAK2xD,QAAgB,OAAE6xC,GAAqB,YAAErwF,MAAMnT,KAAKuE,MAAQvE,KAAKqjD,UAAU1C,WAAWO,oBAAsBlhD,KAAKmgB,MAAMC,OAAOC,aACnIrgB,KAAK2xD,QAAgB,OAAE6xC,GAAqB,YAAEpwF,OAAOpT,KAAKuE,MAAQvE,KAAKqjD,UAAU1C,WAAWO,oBAAsBlhD,KAAKmgB,MAAMC,OAAOsF,cAAe,CACnJ,GAAIg+E,GAAiB1jG,KAAK6iG,iBAG1B7iG,MAAKujG,+BAILvjG,KAAKsjG,qBAAqBI,GAI1B1jG,KAAKkjG,oBAAoBM,GAGzBxjG,KAAKqjG,gBAAgBK,GAGrB1jG,KAAKsiG,gBAAgBoB,GAGrB1jG,KAAKgjG,oBAGLhjG,KAAK6oD,uBAGL7oD,KAAK6wD,4BAeXjxD,EAAQi0D,sBAAwB,SAAS8vC,EAAYC,GACnD,GAAIC,KACJ,IAAiBh9F,SAAb+8F,EACF,IAAK,GAAIJ,KAAUxjG,MAAK2xD,QAAgB,OAClC3xD,KAAK2xD,QAAgB,OAAExrD,eAAeq9F,KAExCxjG,KAAKyiG,sBAAsBe,GAC3BK,EAAat7F,KAAMvI,KAAK2jG,WAK5B,KAAK,GAAIH,KAAUxjG,MAAK2xD,QAAgB,OACtC,GAAI3xD,KAAK2xD,QAAgB,OAAExrD,eAAeq9F,GAAS,CAEjDxjG,KAAKyiG,sBAAsBe,EAC3B,IAAIzpF,GAAOzT,MAAMyN,UAAUpL,OAAOpI,KAAKwF,UAAW,EAEhD89F,GAAat7F,KADXwR,EAAK/T,OAAS,EACGhG,KAAK2jG,GAAa5pF,EAAK,GAAGA,EAAK,IAG/B/Z,KAAK2jG,GAAaC,IAO7C,MADA5jG,MAAK4iG,oBACEiB,GAaTjkG,EAAQk0D,mBAAqB,SAAS6vC,EAAYC,GAChD,GAAIC,IAAe,CACnB,IAAiBh9F,SAAb+8F,EACF5jG,KAAK2iG,yBACLkB,EAAe7jG,KAAK2jG,SAEjB,CACH3jG,KAAK2iG,wBACL,IAAI5oF,GAAOzT,MAAMyN,UAAUpL,OAAOpI,KAAKwF,UAAW,EAEhD89F,GADE9pF,EAAK/T,OAAS,EACDhG,KAAK2jG,GAAa5pF,EAAK,GAAGA,EAAK,IAG/B/Z,KAAK2jG,GAAaC,GAKrC,MADA5jG,MAAK4iG,oBACEiB,GAaTjkG,EAAQkkG,sBAAwB,SAASH,EAAYC,GACnD,GAAiB/8F,SAAb+8F,EACF,IAAK,GAAIJ,KAAUxjG,MAAK2xD,QAAgB,OAClC3xD,KAAK2xD,QAAgB,OAAExrD,eAAeq9F,KAExCxjG,KAAK0iG,sBAAsBc,GAC3BxjG,KAAK2jG,UAKT,KAAK,GAAIH,KAAUxjG,MAAK2xD,QAAgB,OACtC,GAAI3xD,KAAK2xD,QAAgB,OAAExrD,eAAeq9F,GAAS,CAEjDxjG,KAAK0iG,sBAAsBc,EAC3B,IAAIzpF,GAAOzT,MAAMyN,UAAUpL,OAAOpI,KAAKwF,UAAW,EAC9CgU,GAAK/T,OAAS,EAChBhG,KAAK2jG,GAAa5pF,EAAK,GAAGA,EAAK,IAG/B/Z,KAAK2jG,GAAaC,GAK1B5jG,KAAK4iG,qBAaPhjG,EAAQuyD,gBAAkB,SAASwxC,EAAYC,GAC7C,GAAI7pF,GAAOzT,MAAMyN,UAAUpL,OAAOpI,KAAKwF,UAAW,EACjCc,UAAb+8F,GACF5jG,KAAK6zD,sBAAsB8vC,GAC3B3jG,KAAK8jG,sBAAsBH,IAGvB5pF,EAAK/T,OAAS,GAChBhG,KAAK6zD,sBAAsB8vC,EAAY5pF,EAAK,GAAGA,EAAK,IACpD/Z,KAAK8jG,sBAAsBH,EAAY5pF,EAAK,GAAGA,EAAK,MAGpD/Z,KAAK6zD,sBAAsB8vC,EAAYC,GACvC5jG,KAAK8jG,sBAAsBH,EAAYC,KAY7ChkG,EAAQkpD,oBAAsB,WAC5B,GAAI06C,GAASxjG,KAAKw8F,SAClBx8F,MAAK2xD,QAAgB,OAAE6xC,GAAqB,eAC5CxjG,KAAK0lD,YAAc1lD,KAAK2xD,QAAgB,OAAE6xC,GAAqB,aAWjE5jG,EAAQmkG,iBAAmB,SAASn8E,EAAI46E,GACtC,GAAsD96C,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,KAAK,GAAI07C,KAAUxjG,MAAK2xD,QAAQ6wC,GAC9B,GAAIxiG,KAAK2xD,QAAQ6wC,GAAYr8F,eAAeq9F,IACc38F,SAApD7G,KAAK2xD,QAAQ6wC,GAAYgB,GAAqB,YAAiB,CAEjExjG,KAAKsiG,gBAAgBkB,EAAOhB,GAE5B76C,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAC5C,KAAK,GAAIE,KAAUhoD,MAAKk+C,MAClBl+C,KAAKk+C,MAAM/3C,eAAe6hD,KAC5BN,EAAO1nD,KAAKk+C,MAAM8J,GAClBN,EAAK4R,OAAO1xC,GACRigC,EAAOH,EAAKr1C,EAAI,GAAMq1C,EAAKv0C,QAAQ00C,EAAOH,EAAKr1C,EAAI,GAAMq1C,EAAKv0C,OAC9D20C,EAAOJ,EAAKr1C,EAAI,GAAMq1C,EAAKv0C,QAAQ20C,EAAOJ,EAAKr1C,EAAI,GAAMq1C,EAAKv0C,OAC9Dw0C,EAAOD,EAAKp1C,EAAI,GAAMo1C,EAAKt0C,SAASu0C,EAAOD,EAAKp1C,EAAI,GAAMo1C,EAAKt0C,QAC/Dw0C,EAAOF,EAAKp1C,EAAI,GAAMo1C,EAAKt0C,SAASw0C,EAAOF,EAAKp1C,EAAI,GAAMo1C,EAAKt0C,QAGvEs0C,GAAO1nD,KAAK2xD,QAAQ6wC,GAAYgB,GAAqB,YACrD97C,EAAKr1C,EAAI,IAAOy1C,EAAOD,GACvBH,EAAKp1C,EAAI,IAAOs1C,EAAOD,GACvBD,EAAKv0C,MAAQ,GAAKu0C,EAAKr1C,EAAIw1C,GAC3BH,EAAKt0C,OAAS,GAAKs0C,EAAKp1C,EAAIq1C,GAC5BD,EAAK34C,QAAQod,OAAS3nB,KAAK6rB,KAAK7rB,KAAK+vB,IAAI,GAAImzB,EAAKv0C,MAAM,GAAK3O,KAAK+vB,IAAI,GAAImzB,EAAKt0C,OAAO,IACtFs0C,EAAKzjB,SAASjkC,KAAKuE,OACnBmjD,EAAKkZ,YAAYh5C,KAMzBhoB,EAAQokG,oBAAsB,SAASp8E,GACrC5nB,KAAK+jG,iBAAiBn8E,EAAI,UAC1B5nB,KAAK+jG,iBAAiBn8E,EAAI,UAC1B5nB,KAAK4iG,sBAMH,SAAS/iG,EAAQD,EAASM,GAE9B,GAAIqD,GAAOrD,EAAoB,GAS/BN,GAAQqkG,yBAA2B,SAASjgG,EAAQ2rD,GAClD,GAAIzR,GAAQl+C,KAAKk+C,KACjB,KAAK,GAAI8J,KAAU9J,GACbA,EAAM/3C,eAAe6hD,IACnB9J,EAAM8J,GAAQ4H,kBAAkB5rD,IAClC2rD,EAAiBpnD,KAAKy/C,IAY9BpoD,EAAQskG,4BAA8B,SAAUlgG,GAC9C,GAAI2rD,KAEJ,OADA3vD,MAAK6zD,sBAAsB,2BAA2B7vD,EAAO2rD,GACtDA,GAWT/vD,EAAQukG,yBAA2B,SAASpjE,GAC1C,GAAI1uB,GAAIrS,KAAKytD,qBAAqB1sB,EAAQ1uB,GACtCC,EAAItS,KAAK2tD,qBAAqB5sB,EAAQzuB,EAE1C,QACEzK,KAAQwK,EACRpK,IAAQqK,EACR4V,MAAQ7V,EACR8R,OAAQ7R,IAYZ1S,EAAQktD,WAAa,SAAU/rB,GAE7B,GAAIqjE,GAAiBpkG,KAAKmkG,yBAAyBpjE,GAC/C4uB,EAAmB3vD,KAAKkkG,4BAA4BE,EAIxD,OAAIz0C,GAAiB3pD,OAAS,EACpBhG,KAAKk+C,MAAMyR,EAAiBA,EAAiB3pD,OAAS,IAGvD,MAWXpG,EAAQykG,yBAA2B,SAAUrgG,EAAQ8rD,GACnD,GAAIzQ,GAAQr/C,KAAKq/C,KACjB,KAAK,GAAI8P,KAAU9P,GACbA,EAAMl5C,eAAegpD,IACnB9P,EAAM8P,GAAQS,kBAAkB5rD,IAClC8rD,EAAiBvnD,KAAK4mD,IAa9BvvD,EAAQ0kG,4BAA8B,SAAUtgG,GAC9C,GAAI8rD,KAEJ,OADA9vD,MAAK6zD,sBAAsB,2BAA2B7vD,EAAO8rD,GACtDA,GAWTlwD,EAAQwvD,WAAa,SAASruB,GAC5B,GAAIqjE,GAAiBpkG,KAAKmkG,yBAAyBpjE,GAC/C+uB,EAAmB9vD,KAAKskG,4BAA4BF,EAExD,OAAIt0C,GAAiB9pD,OAAS,EACrBhG,KAAKq/C,MAAMyQ,EAAiBA,EAAiB9pD,OAAS,IAGtD,MAWXpG,EAAQ2kG,gBAAkB,SAAS3gF,GAC7BA,YAAergB,GACjBvD,KAAKotD,aAAalP,MAAMt6B,EAAIvjB,IAAMujB,EAGlC5jB,KAAKotD,aAAa/N,MAAMz7B,EAAIvjB,IAAMujB,GAUtChkB,EAAQ4kG,YAAc,SAAS5gF,GACzBA,YAAergB,GACjBvD,KAAKujD,SAASrF,MAAMt6B,EAAIvjB,IAAMujB,EAG9B5jB,KAAKujD,SAASlE,MAAMz7B,EAAIvjB,IAAMujB,GAWlChkB,EAAQwxD,qBAAuB,SAASxtC,GAClCA,YAAergB,SACVvD,MAAKotD,aAAalP,MAAMt6B,EAAIvjB,UAG5BL,MAAKotD,aAAa/N,MAAMz7B,EAAIvjB,KAUvCT,EAAQopD,aAAe,SAASy7C,GACT59F,SAAjB49F,IACFA,GAAe,EAEjB,KAAI,GAAIz8C,KAAUhoD,MAAKotD,aAAalP,MAC/Bl+C,KAAKotD,aAAalP,MAAM/3C,eAAe6hD,IACxChoD,KAAKotD,aAAalP,MAAM8J,GAAQliB,UAGpC,KAAI,GAAIqpB,KAAUnvD,MAAKotD,aAAa/N,MAC/Br/C,KAAKotD,aAAa/N,MAAMl5C,eAAegpD,IACxCnvD,KAAKotD,aAAa/N,MAAM8P,GAAQrpB,UAIpC9lC,MAAKotD,cAAgBlP,SAASmB,UAEV,GAAhBolD,GACFzkG,KAAKsuB,KAAK,SAAUtuB,KAAKy3B,iBAU7B73B,EAAQ8kG,kBAAoB,SAASD,GACd59F,SAAjB49F,IACFA,GAAe,EAGjB,KAAK,GAAIz8C,KAAUhoD,MAAKotD,aAAalP,MAC/Bl+C,KAAKotD,aAAalP,MAAM/3C,eAAe6hD,IACrChoD,KAAKotD,aAAalP,MAAM8J,GAAQ+X,YAAc,IAChD//D,KAAKotD,aAAalP,MAAM8J,GAAQliB,WAChC9lC,KAAKoxD,qBAAqBpxD,KAAKotD,aAAalP,MAAM8J,IAKpC,IAAhBy8C,GACFzkG,KAAKsuB,KAAK,SAAUtuB,KAAKy3B,iBAW7B73B,EAAQ+kG,sBAAwB,WAC9B,GAAI/sF,GAAQ,CACZ,KAAK,GAAIowC,KAAUhoD,MAAKotD,aAAalP,MAC/Bl+C,KAAKotD,aAAalP,MAAM/3C,eAAe6hD,KACzCpwC,GAAS,EAGb,OAAOA,IASThY,EAAQglG,iBAAmB,WACzB,IAAK,GAAI58C,KAAUhoD,MAAKotD,aAAalP,MACnC,GAAIl+C,KAAKotD,aAAalP,MAAM/3C,eAAe6hD,GACzC,MAAOhoD,MAAKotD,aAAalP,MAAM8J,EAGnC,OAAO,OASTpoD,EAAQilG,iBAAmB,WACzB,IAAK,GAAI11C,KAAUnvD,MAAKotD,aAAa/N,MACnC,GAAIr/C,KAAKotD,aAAa/N,MAAMl5C,eAAegpD,GACzC,MAAOnvD,MAAKotD,aAAa/N,MAAM8P,EAGnC,OAAO,OAUTvvD,EAAQklG,sBAAwB,WAC9B,GAAIltF,GAAQ,CACZ,KAAK,GAAIu3C,KAAUnvD,MAAKotD,aAAa/N,MAC/Br/C,KAAKotD,aAAa/N,MAAMl5C,eAAegpD,KACzCv3C,GAAS,EAGb,OAAOA,IAUThY,EAAQmlG,wBAA0B,WAChC,GAAIntF,GAAQ,CACZ,KAAI,GAAIowC,KAAUhoD,MAAKotD,aAAalP,MAC/Bl+C,KAAKotD,aAAalP,MAAM/3C,eAAe6hD,KACxCpwC,GAAS,EAGb,KAAI,GAAIu3C,KAAUnvD,MAAKotD,aAAa/N,MAC/Br/C,KAAKotD,aAAa/N,MAAMl5C,eAAegpD,KACxCv3C,GAAS,EAGb,OAAOA,IASThY,EAAQolG,kBAAoB,WAC1B,IAAI,GAAIh9C,KAAUhoD,MAAKotD,aAAalP,MAClC,GAAGl+C,KAAKotD,aAAalP,MAAM/3C,eAAe6hD,GACxC,OAAO,CAGX,KAAI,GAAImH,KAAUnvD,MAAKotD,aAAa/N,MAClC,GAAGr/C,KAAKotD,aAAa/N,MAAMl5C,eAAegpD,GACxC,OAAO,CAGX,QAAO,GAUTvvD,EAAQqlG,oBAAsB,WAC5B,IAAI,GAAIj9C,KAAUhoD,MAAKotD,aAAalP,MAClC,GAAGl+C,KAAKotD,aAAalP,MAAM/3C,eAAe6hD,IACpChoD,KAAKotD,aAAalP,MAAM8J,GAAQ+X,YAAc,EAChD,OAAO,CAIb,QAAO,GASTngE,EAAQslG,sBAAwB,SAASx9C,GACvC,IAAK,GAAI7hD,GAAI,EAAGA,EAAI6hD,EAAKkK,aAAa5rD,OAAQH,IAAK,CACjD,GAAIkqD,GAAOrI,EAAKkK,aAAa/rD,EAC7BkqD,GAAKlqB,SACL7lC,KAAKukG,gBAAgBx0C,KAUzBnwD,EAAQulG,qBAAuB,SAASz9C,GACtC,IAAK,GAAI7hD,GAAI,EAAGA,EAAI6hD,EAAKkK,aAAa5rD,OAAQH,IAAK,CACjD,GAAIkqD,GAAOrI,EAAKkK,aAAa/rD,EAC7BkqD,GAAKljD,OAAQ,EACb7M,KAAKwkG,YAAYz0C,KAWrBnwD,EAAQwlG,wBAA0B,SAAS19C,GACzC,IAAK,GAAI7hD,GAAI,EAAGA,EAAI6hD,EAAKkK,aAAa5rD,OAAQH,IAAK,CACjD,GAAIkqD,GAAOrI,EAAKkK,aAAa/rD,EAC7BkqD,GAAKjqB,WACL9lC,KAAKoxD,qBAAqBrB,KAgB9BnwD,EAAQqtD,cAAgB,SAASjpD,EAAQqhG,EAAQZ,EAAca,EAAgBC,GACxD1+F,SAAjB49F,IACFA,GAAe,GAEM59F,SAAnBy+F,IACFA,GAAiB,GAGa,GAA5BtlG,KAAKglG,qBAA0C,GAAVK,GAAgD,GAA7BrlG,KAAKuvE,sBAC/DvvE,KAAKgpD,cAAa,GAIG,GAAnBhlD,EAAOyhC,UAAmD,GAA7BzlC,KAAKqjD,UAAU/Q,aAAsBizD,EAQ1C,GAAnBvhG,EAAOyhC,UACdzlC,KAAKukG,gBAAgBvgG,GACrBygG,GAAe,IAGfzgG,EAAO8hC,WACP9lC,KAAKoxD,qBAAqBptD,KAb1BA,EAAO6hC,SACP7lC,KAAKukG,gBAAgBvgG,GACjBA,YAAkBT,IAA6C,GAArCvD,KAAKsvE,8BAA2D,GAAlBg2B,GAC1EtlG,KAAKklG,sBAAsBlhG,IAaX,GAAhBygG,GACFzkG,KAAKsuB,KAAK,SAAUtuB,KAAKy3B,iBAY7B73B,EAAQ0vD,YAAc,SAAStrD,GACT,GAAhBA,EAAO6I,QACT7I,EAAO6I,OAAQ,EACf7M,KAAKsuB,KAAK,YAAYo5B,KAAK1jD,EAAO3D,OAWtCT,EAAQyvD,aAAe,SAASrrD,GACV,GAAhBA,EAAO6I,QACT7I,EAAO6I,OAAQ,EACf7M,KAAKwkG,YAAYxgG,GACbA,YAAkBT,IACpBvD,KAAKsuB,KAAK,aAAao5B,KAAK1jD,EAAO3D,MAGnC2D,YAAkBT,IACpBvD,KAAKmlG,qBAAqBnhG,IAa9BpE,EAAQgtD,aAAe,aAUvBhtD,EAAQkuD,WAAa,SAAS/sB,GAC5B,GAAI2mB,GAAO1nD,KAAK8sD,WAAW/rB,EAC3B,IAAY,MAAR2mB,EACF1nD,KAAKitD,cAAcvF,GAAM,OAEtB,CACH,GAAIqI,GAAO/vD,KAAKovD,WAAWruB,EACf,OAARgvB,EACF/vD,KAAKitD,cAAc8C,GAAM,GAGzB/vD,KAAKgpD,eAGT,GAAIkI,GAAalxD,KAAKy3B,cACtBy5B,GAAoB,SAClBs0C,KAAMnzF,EAAG0uB,EAAQ1uB,EAAGC,EAAGyuB,EAAQzuB,GAC/B8N,QAAS/N,EAAGrS,KAAKytD,qBAAqB1sB,EAAQ1uB,GAAIC,EAAGtS,KAAK2tD,qBAAqB5sB,EAAQzuB,KAEzFtS,KAAKsuB,KAAK,QAAS4iC,GACnBlxD,KAAKykD,kBAUP7kD,EAAQmuD,iBAAmB,SAAShtB,GAClC,GAAI2mB,GAAO1nD,KAAK8sD,WAAW/rB,EACf,OAAR2mB,GAAyB7gD,SAAT6gD,IAElB1nD,KAAK8lD,YAAezzC,EAAMrS,KAAKytD,qBAAqB1sB,EAAQ1uB,GACxCC,EAAMtS,KAAK2tD,qBAAqB5sB,EAAQzuB,IAC5DtS,KAAKi+F,YAAYv2C,GAEnB,IAAIwJ,GAAalxD,KAAKy3B,cACtBy5B,GAAoB,SAClBs0C,KAAMnzF,EAAG0uB,EAAQ1uB,EAAGC,EAAGyuB,EAAQzuB,GAC/B8N,QAAS/N,EAAGrS,KAAKytD,qBAAqB1sB,EAAQ1uB,GAAIC,EAAGtS,KAAK2tD,qBAAqB5sB,EAAQzuB,KAEzFtS,KAAKsuB,KAAK,cAAe4iC,IAU3BtxD,EAAQouD,cAAgB,SAASjtB,GAC/B,GAAI2mB,GAAO1nD,KAAK8sD,WAAW/rB,EAC3B,IAAY,MAAR2mB,EACF1nD,KAAKitD,cAAcvF,GAAK,OAErB,CACH,GAAIqI,GAAO/vD,KAAKovD,WAAWruB,EACf,OAARgvB,GACF/vD,KAAKitD,cAAc8C,GAAK,GAG5B/vD,KAAKykD,kBAUP7kD,EAAQquD,iBAAmB,SAASltB,GAClC/gC,KAAKylG,6BAA6B1kE,GAClC/gC,KAAK0lG,2BAA2B3kE,IAGlCnhC,EAAQ6lG,6BAA+B,aACvC7lG,EAAQ8lG,2BAA6B,aAOrC9lG,EAAQ63B,aAAe,WACrB,GAAIy1B,GAAUltD,KAAK2lG,mBACfC,EAAU5lG,KAAK6lG,kBACnB,QAAQ3nD,MAAMgP,EAAS7N,MAAMumD,IAS/BhmG,EAAQ+lG,iBAAmB,WACzB,GAAIG,KACJ,IAAiC,GAA7B9lG,KAAKqjD,UAAU/Q,WACjB,IAAK,GAAI0V,KAAUhoD,MAAKotD,aAAalP,MAC/Bl+C,KAAKotD,aAAalP,MAAM/3C,eAAe6hD,IACzC89C,EAAQv9F,KAAKy/C,EAInB,OAAO89C,IASTlmG,EAAQimG,iBAAmB,WACzB,GAAIC,KACJ,IAAiC,GAA7B9lG,KAAKqjD,UAAU/Q,WACjB,IAAK,GAAI6c,KAAUnvD,MAAKotD,aAAa/N,MAC/Br/C,KAAKotD,aAAa/N,MAAMl5C,eAAegpD,IACzC22C,EAAQv9F,KAAK4mD,EAInB,OAAO22C,IASTlmG,EAAQ23B,aAAe,WACrBiC,QAAQpF,IAAI,gEAUdx0B,EAAQmmG,YAAc,SAASzyD,EAAWgyD,GACxC,GAAIz/F,GAAGi8B,EAAMzhC,CAEb,KAAKizC,GAAkCzsC,QAApBysC,EAAUttC,OAC3B,KAAM,qCAKR,KAFAhG,KAAKgpD,cAAa,GAEbnjD,EAAI,EAAGi8B,EAAOwR,EAAUttC,OAAY87B,EAAJj8B,EAAUA,IAAK,CAClDxF,EAAKizC,EAAUztC,EAEf,IAAI6hD,GAAO1nD,KAAKk+C,MAAM79C,EACtB,KAAKqnD,EACH,KAAM,IAAIs+C,YAAW,iBAAmB3lG,EAAK,cAE/CL,MAAKitD,cAAcvF,GAAK,GAAK,EAAK49C,GAAe,GAEnDtlG,KAAKsiB,UASP1iB,EAAQqmG,YAAc,SAAS3yD,GAC7B,GAAIztC,GAAGi8B,EAAMzhC,CAEb,KAAKizC,GAAkCzsC,QAApBysC,EAAUttC,OAC3B,KAAM,qCAKR,KAFAhG,KAAKgpD,cAAa,GAEbnjD,EAAI,EAAGi8B,EAAOwR,EAAUttC,OAAY87B,EAAJj8B,EAAUA,IAAK,CAClDxF,EAAKizC,EAAUztC,EAEf,IAAIkqD,GAAO/vD,KAAKq/C,MAAMh/C,EACtB,KAAK0vD,EACH,KAAM,IAAIi2C,YAAW,iBAAmB3lG,EAAK,cAE/CL,MAAKitD,cAAc8C,GAAK,GAAK,GAAK,GAAM,GAE1C/vD,KAAKsiB,UAOP1iB,EAAQ+wD,iBAAmB,WACzB,IAAI,GAAI3I,KAAUhoD,MAAKotD,aAAalP,MAC/Bl+C,KAAKotD,aAAalP,MAAM/3C,eAAe6hD,KACnChoD,KAAKk+C,MAAM/3C,eAAe6hD,UACtBhoD,MAAKotD,aAAalP,MAAM8J,GAIrC,KAAI,GAAImH,KAAUnvD,MAAKotD,aAAa/N,MAC/Br/C,KAAKotD,aAAa/N,MAAMl5C,eAAegpD,KACnCnvD,KAAKq/C,MAAMl5C,eAAegpD,UACtBnvD,MAAKotD,aAAa/N,MAAM8P,MASnC,SAAStvD,EAAQD,EAASM,GAE9B,GAAIS,GAAOT,EAAoB,GAC3BqD,EAAOrD,EAAoB,IAC3BkD,EAAOlD,EAAoB,IAC3B0lC,EAAS1lC,EAAoB,GAOjCN,GAAQsmG,qBAAuB,WAC7BlmG,KAAKusD,oBAAoBvsD,KAAKwvE,iBAC9BxvE,KAAKmmG,mBAELnmG,KAAKomG,2BAELpmG,KAAKylG,6BAA+B,mBAC7BzlG,MAAK2xD,QAAiB,QAAS,MAAc,iBAC7C3xD,MAAK2xD,QAAiB,QAAS,MAAiB,cACvD3xD,KAAKwjD,oBAAqB,EAC1BxjD,KAAK00D,kBAAiB,IAIxB90D,EAAQwmG,yBAA2B,WAEjC,GAAuC,GAAnCpmG,KAAK0jD,oBAAoB19C,OAAa,CACxC,IAAK,GAAIH,GAAI,EAAGA,EAAI7F,KAAK0jD,oBAAoB19C,OAAQH,IACnD7F,KAAK0jD,oBAAoB79C,GAAGslD,SAE9BnrD,MAAK0jD,yBAWT9jD,EAAQymG,4BAA8B,WACpC,IAAK,GAAIC,KAAgBtmG,MAAKolD,gBACxBplD,KAAKolD,gBAAgBj/C,eAAemgG,KACtCtmG,KAAKsmG,GAAgBtmG,KAAKolD,gBAAgBkhD,SACnCtmG,MAAKolD,gBAAgBkhD,KAUlC1mG,EAAQ2mG,gBAAkB,WACxBvmG,KAAKgqD,UAAYhqD,KAAKgqD,QACtB,IAAIw8C,GAAUxmG,KAAKwvE,gBACfE,EAAW1vE,KAAK0vE,SAChBD,EAAczvE,KAAKyvE,WACF,IAAjBzvE,KAAKgqD,UACPw8C,EAAQj5F,MAAMq+B,QAAQ,QACtB8jC,EAASniE,MAAMq+B,QAAQ,QACvB6jC,EAAYliE,MAAMq+B,QAAQ,OAC1B5rC,KAAKymG,iBAAiB/2B,EAAS,qBAG/B82B,EAAQj5F,MAAMq+B,QAAQ,OACtB8jC,EAASniE,MAAMq+B,QAAQ,OACvB6jC,EAAYliE,MAAMq+B,QAAQ,SAE5B5rC,KAAKipD,yBAQPrpD,EAAQqpD,sBAAwB,WAE1BjpD,KAAK0mG,eACP1mG,KAAKsU,IAAI,SAAUtU,KAAK0mG,eAG1B1mG,KAAKomG,0BAEL,IAAI/gE,GAASrlC,KAAKqjD,UAAUpa,QAAQjpC,KAAKqjD,UAAUhe,OAqBnD,IAnB6Bx+B,SAAzB7G,KAAK2mG,kBACP3mG,KAAK2mG,gBAAgBzpC,uBACrBl9D,KAAK2mG,gBAAkB9/F,OACvB7G,KAAK4mG,oBAAsB,KAC3B5mG,KAAKwjD,oBAAqB,EAC1BxjD,KAAK42B,WAIP52B,KAAKqmG,8BAGLrmG,KAAK00D,kBAAiB,GAGtB10D,KAAKsvE,8BAA+B,EACpCtvE,KAAKuvE,sBAAuB,EAC5BvvE,KAAKmmG,mBAEgB,GAAjBnmG,KAAKgqD,SAAkB,CACzB,KAAOhqD,KAAKwvE,gBAAgBjrD,iBAC1BvkB,KAAKwvE,gBAAgB/9D,YAAYzR,KAAKwvE,gBAAgBhrD,WAGxDxkB,MAAKmmG,gBAA6B,YAAIt0F,SAASM,cAAc,OAC7DnS,KAAKmmG,gBAA6B,YAAE/9F,UAAY,6BAEhDpI,KAAKmmG,gBAAkC,iBAAIt0F,SAASM,cAAc,OAClEnS,KAAKmmG,gBAAkC,iBAAE/9F,UAAY,4BACrDpI,KAAKmmG,gBAAkC,iBAAErhF,UAAYugB,EAAgB,QACrErlC,KAAKmmG,gBAA6B,YAAEp0F,YAAY/R,KAAKmmG,gBAAkC,kBAEvFnmG,KAAKmmG,gBAAmC,kBAAIt0F,SAASM,cAAc,OACnEnS,KAAKmmG,gBAAmC,kBAAE/9F,UAAY,wBAEtDpI,KAAKmmG,gBAA6B,YAAIt0F,SAASM,cAAc,OAC7DnS,KAAKmmG,gBAA6B,YAAE/9F,UAAY,iCAChDpI,KAAKmmG,gBAAkC,iBAAIt0F,SAASM,cAAc,OAClEnS,KAAKmmG,gBAAkC,iBAAE/9F,UAAY,4BACrDpI,KAAKmmG,gBAAkC,iBAAErhF,UAAYugB,EAAgB,QACrErlC,KAAKmmG,gBAA6B,YAAEp0F,YAAY/R,KAAKmmG,gBAAkC,kBAEvFnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAA6B,aACnEnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAAmC,mBACzEnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAA6B,aAE/B,GAAhCnmG,KAAK2kG,yBAAgC3kG,KAAK49C,iBAAiBC,MAC7D79C,KAAKmmG,gBAAmC,kBAAIt0F,SAASM,cAAc,OACnEnS,KAAKmmG,gBAAmC,kBAAE/9F,UAAY,wBAEtDpI,KAAKmmG,gBAA8B,aAAIt0F,SAASM,cAAc,OAC9DnS,KAAKmmG,gBAA8B,aAAE/9F,UAAY,8BACjDpI,KAAKmmG,gBAAmC,kBAAIt0F,SAASM,cAAc,OACnEnS,KAAKmmG,gBAAmC,kBAAE/9F,UAAY,4BACtDpI,KAAKmmG,gBAAmC,kBAAErhF,UAAYugB,EAAiB,SACvErlC,KAAKmmG,gBAA8B,aAAEp0F,YAAY/R,KAAKmmG,gBAAmC,mBAEzFnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAAmC,mBACzEnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAA8B,eAE7B,GAAhCnmG,KAAK8kG,yBAAgE,GAAhC9kG,KAAK2kG,0BACjD3kG,KAAKmmG,gBAAmC,kBAAIt0F,SAASM,cAAc,OACnEnS,KAAKmmG,gBAAmC,kBAAE/9F,UAAY,wBAEtDpI,KAAKmmG,gBAA8B,aAAIt0F,SAASM,cAAc,OAC9DnS,KAAKmmG,gBAA8B,aAAE/9F,UAAY,8BACjDpI,KAAKmmG,gBAAmC,kBAAIt0F,SAASM,cAAc,OACnEnS,KAAKmmG,gBAAmC,kBAAE/9F,UAAY,4BACtDpI,KAAKmmG,gBAAmC,kBAAErhF,UAAYugB,EAAiB,SACvErlC,KAAKmmG,gBAA8B,aAAEp0F,YAAY/R,KAAKmmG,gBAAmC,mBAEzFnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAAmC,mBACzEnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAA8B,eAEtC,GAA5BnmG,KAAKglG,sBACPhlG,KAAKmmG,gBAAmC,kBAAIt0F,SAASM,cAAc,OACnEnS,KAAKmmG,gBAAmC,kBAAE/9F,UAAY,wBAEtDpI,KAAKmmG,gBAA4B,WAAIt0F,SAASM,cAAc,OAC5DnS,KAAKmmG,gBAA4B,WAAE/9F,UAAY,gCAC/CpI,KAAKmmG,gBAAiC,gBAAIt0F,SAASM,cAAc,OACjEnS,KAAKmmG,gBAAiC,gBAAE/9F,UAAY,4BACpDpI,KAAKmmG,gBAAiC,gBAAErhF,UAAYugB,EAAY,IAChErlC,KAAKmmG,gBAA4B,WAAEp0F,YAAY/R,KAAKmmG,gBAAiC,iBAErFnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAAmC,mBACzEnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAA4B,aAIpEnmG,KAAKymG,iBAAiBzmG,KAAKmmG,gBAA6B,YAAE,yBAC1DnmG,KAAKymG,iBAAiBzmG,KAAKmmG,gBAA6B,YAAE,yBAC1DnmG,KAAKymG,iBAAiBzmG,KAAK0vE,SAAS,mBAEA,GAAhC1vE,KAAK2kG,yBAAgC3kG,KAAK49C,iBAAiBC,KAC7D79C,KAAKymG,iBAAiBzmG,KAAKmmG,gBAA8B,aAAE,aAEpB,GAAhCnmG,KAAK8kG,yBAAgE,GAAhC9kG,KAAK2kG,yBACjD3kG,KAAKymG,iBAAiBzmG,KAAKmmG,gBAA8B,aAAE,0BAE7B,GAA5BnmG,KAAKglG,qBACPhlG,KAAKymG,iBAAiBzmG,KAAKmmG,gBAA4B,WAAE,kBAG3D,IAAIpxF,GAAK/U,IACTA,MAAK0mG,cAAgB3xF,EAAGk0C,sBACxBjpD,KAAKmU,GAAG,SAAUnU,KAAK0mG,mBAEpB,CACH,KAAO1mG,KAAKyvE,YAAYlrD,iBACtBvkB,KAAKyvE,YAAYh+D,YAAYzR,KAAKyvE,YAAYjrD,WAGhDxkB,MAAKmmG,gBAA8B,aAAIt0F,SAASM,cAAc,OAC9DnS,KAAKmmG,gBAA8B,aAAE/9F,UAAY,uCACjDpI,KAAKmmG,gBAAmC,kBAAIt0F,SAASM,cAAc,OACnEnS,KAAKmmG,gBAAmC,kBAAE/9F,UAAY,4BACtDpI,KAAKmmG,gBAAmC,kBAAErhF,UAAYugB,EAAa,KACnErlC,KAAKmmG,gBAA8B,aAAEp0F,YAAY/R,KAAKmmG,gBAAmC,mBAEzFnmG,KAAKyvE,YAAY19D,YAAY/R,KAAKmmG,gBAA8B,cAEhEnmG,KAAKymG,iBAAiBzmG,KAAKmmG,gBAA8B,aAAE,qBAK/DvmG,EAAQ6mG,iBAAmB,SAASI,EAAYC,GAC9C,GAAIhjG,GAAS8hC,EAAOihE,GAAal9D,iBAAiB,GAClD7lC,GAAOqQ,GAAG,QAASnU,KAAK8mG,GAAOvxE,KAAKv1B,OACpCA,KAAK0jD,oBAAoBn7C,KAAKzE,IAShClE,EAAQmnG,sBAAwB,WAE9B/mG,KAAKkmG,uBACDlmG,KAAK0mG,eACP1mG,KAAKsU,IAAI,SAAUtU,KAAK0mG,cAG1B,IAAIrhE,GAASrlC,KAAKqjD,UAAUpa,QAAQjpC,KAAKqjD,UAAUhe,OAEnDrlC,MAAKmmG,mBACLnmG,KAAKmmG,gBAA0B,SAAIt0F,SAASM,cAAc,OAC1DnS,KAAKmmG,gBAA0B,SAAE/9F,UAAY,8BAC7CpI,KAAKmmG,gBAA+B,cAAIt0F,SAASM,cAAc,OAC/DnS,KAAKmmG,gBAA+B,cAAE/9F,UAAY,4BAClDpI,KAAKmmG,gBAA+B,cAAErhF,UAAYugB,EAAa,KAC/DrlC,KAAKmmG,gBAA0B,SAAEp0F,YAAY/R,KAAKmmG,gBAA+B,eAEjFnmG,KAAKmmG,gBAAmC,kBAAIt0F,SAASM,cAAc,OACnEnS,KAAKmmG,gBAAmC,kBAAE/9F,UAAY,wBAEtDpI,KAAKmmG,gBAAiC,gBAAIt0F,SAASM,cAAc,OACjEnS,KAAKmmG,gBAAiC,gBAAE/9F,UAAY,8BACpDpI,KAAKmmG,gBAAsC,qBAAIt0F,SAASM,cAAc,OACtEnS,KAAKmmG,gBAAsC,qBAAE/9F,UAAY,4BACzDpI,KAAKmmG,gBAAsC,qBAAErhF,UAAYugB,EAAuB,eAChFrlC,KAAKmmG,gBAAiC,gBAAEp0F,YAAY/R,KAAKmmG,gBAAsC,sBAE/FnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAA0B,UAChEnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAAmC,mBACzEnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAAiC,iBAGvEnmG,KAAKymG,iBAAiBzmG,KAAKmmG,gBAA0B,SAAE,wBAGvD;GAAIpxF,GAAK/U,IACTA,MAAK0mG,cAAgB3xF,EAAGiyF,SACxBhnG,KAAKmU,GAAG,SAAUnU,KAAK0mG,gBASzB9mG,EAAQqnG,sBAAwB,WAE9BjnG,KAAKkmG,uBACLlmG,KAAKgpD,cAAa,GAClBhpD,KAAK00D,kBAAiB,GAElB10D,KAAK0mG,eACP1mG,KAAKsU,IAAI,SAAUtU,KAAK0mG,cAG1B,IAAIrhE,GAASrlC,KAAKqjD,UAAUpa,QAAQjpC,KAAKqjD,UAAUhe,OAEnDrlC,MAAKgpD,eACLhpD,KAAKuvE,sBAAuB,EAC5BvvE,KAAKsvE,8BAA+B,EAEpCtvE,KAAKmmG,mBACLnmG,KAAKmmG,gBAA0B,SAAIt0F,SAASM,cAAc,OAC1DnS,KAAKmmG,gBAA0B,SAAE/9F,UAAY,8BAC7CpI,KAAKmmG,gBAA+B,cAAIt0F,SAASM,cAAc,OAC/DnS,KAAKmmG,gBAA+B,cAAE/9F,UAAY,4BAClDpI,KAAKmmG,gBAA+B,cAAErhF,UAAYugB,EAAa,KAC/DrlC,KAAKmmG,gBAA0B,SAAEp0F,YAAY/R,KAAKmmG,gBAA+B,eAEjFnmG,KAAKmmG,gBAAmC,kBAAIt0F,SAASM,cAAc,OACnEnS,KAAKmmG,gBAAmC,kBAAE/9F,UAAY,wBAEtDpI,KAAKmmG,gBAAiC,gBAAIt0F,SAASM,cAAc,OACjEnS,KAAKmmG,gBAAiC,gBAAE/9F,UAAY,8BACpDpI,KAAKmmG,gBAAsC,qBAAIt0F,SAASM,cAAc,OACtEnS,KAAKmmG,gBAAsC,qBAAE/9F,UAAY,4BACzDpI,KAAKmmG,gBAAsC,qBAAErhF,UAAYugB,EAAwB,gBACjFrlC,KAAKmmG,gBAAiC,gBAAEp0F,YAAY/R,KAAKmmG,gBAAsC,sBAE/FnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAA0B,UAChEnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAAmC,mBACzEnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAAiC,iBAGvEnmG,KAAKymG,iBAAiBzmG,KAAKmmG,gBAA0B,SAAE,wBAGvD,IAAIpxF,GAAK/U,IACTA,MAAK0mG,cAAgB3xF,EAAGmyF,eACxBlnG,KAAKmU,GAAG,SAAUnU,KAAK0mG,eAGvB1mG,KAAKolD,gBAA8B,aAAIplD,KAAK4sD,aAC5C5sD,KAAKolD,gBAA8C,6BAAIplD,KAAKylG,6BAC5DzlG,KAAKolD,gBAAkC,iBAAIplD,KAAK6sD,iBAChD7sD,KAAKolD,gBAAgC,eAAIplD,KAAK6tD,eAC9C7tD,KAAKolD,gBAA+B,cAAIplD,KAAKguD,cAC7ChuD,KAAK4sD,aAAe5sD,KAAKknG,eACzBlnG,KAAKylG,6BAA+B,aACpCzlG,KAAKguD,cAAmB,aACxBhuD,KAAK6sD,iBAAmB,aACxB7sD,KAAK6tD,eAAmB7tD,KAAKmnG,eAG7BnnG,KAAK42B,WAQPh3B,EAAQwnG,uBAAyB,WAE/BpnG,KAAKkmG,uBACLlmG,KAAKwjD,oBAAqB,EAEtBxjD,KAAK0mG,eACP1mG,KAAKsU,IAAI,SAAUtU,KAAK0mG,eAG1B1mG,KAAK2mG,gBAAkB3mG,KAAK6kG,mBAC5B7kG,KAAK2mG,gBAAgB1pC,qBAErB,IAAI53B,GAASrlC,KAAKqjD,UAAUpa,QAAQjpC,KAAKqjD,UAAUhe,OAEnDrlC,MAAKmmG,mBACLnmG,KAAKmmG,gBAA0B,SAAIt0F,SAASM,cAAc,OAC1DnS,KAAKmmG,gBAA0B,SAAE/9F,UAAY,8BAC7CpI,KAAKmmG,gBAA+B,cAAIt0F,SAASM,cAAc,OAC/DnS,KAAKmmG,gBAA+B,cAAE/9F,UAAY,4BAClDpI,KAAKmmG,gBAA+B,cAAErhF,UAAYugB,EAAa,KAC/DrlC,KAAKmmG,gBAA0B,SAAEp0F,YAAY/R,KAAKmmG,gBAA+B,eAEjFnmG,KAAKmmG,gBAAmC,kBAAIt0F,SAASM,cAAc,OACnEnS,KAAKmmG,gBAAmC,kBAAE/9F,UAAY,wBAEtDpI,KAAKmmG,gBAAiC,gBAAIt0F,SAASM,cAAc,OACjEnS,KAAKmmG,gBAAiC,gBAAE/9F,UAAY,8BACpDpI,KAAKmmG,gBAAsC,qBAAIt0F,SAASM,cAAc,OACtEnS,KAAKmmG,gBAAsC,qBAAE/9F,UAAY,4BACzDpI,KAAKmmG,gBAAsC,qBAAErhF,UAAYugB,EAA4B,oBACrFrlC,KAAKmmG,gBAAiC,gBAAEp0F,YAAY/R,KAAKmmG,gBAAsC,sBAE/FnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAA0B,UAChEnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAAmC,mBACzEnmG,KAAKwvE,gBAAgBz9D,YAAY/R,KAAKmmG,gBAAiC,iBAGvEnmG,KAAKymG,iBAAiBzmG,KAAKmmG,gBAA0B,SAAE,yBAGvDnmG,KAAKolD,gBAA8B,aAASplD,KAAK4sD,aACjD5sD,KAAKolD,gBAA8C,6BAAKplD,KAAKylG,6BAC7DzlG,KAAKolD,gBAA4B,WAAWplD,KAAK8tD,WACjD9tD,KAAKolD,gBAAkC,iBAAKplD,KAAK6sD,iBACjD7sD,KAAKolD,gBAA+B,cAAQplD,KAAKutD,cACjDvtD,KAAK4sD,aAAmB5sD,KAAKqnG,mBAC7BrnG,KAAK8tD,WAAmB,aACxB9tD,KAAKutD,cAAmBvtD,KAAKsnG,iBAC7BtnG,KAAK6sD,iBAAmB,aACxB7sD,KAAKylG,6BAA+BzlG,KAAKunG,oBAGzCvnG,KAAK42B,WAUPh3B,EAAQynG,mBAAqB,SAAStmE,GACpC/gC,KAAK2mG,gBAAgBnvC,aAAaxtC,KAAK8b,WACvC9lC,KAAK2mG,gBAAgBnvC,aAAavtC,GAAG6b,WACrC9lC,KAAK4mG,oBAAsB5mG,KAAK2mG,gBAAgBxpC,wBAAwBn9D,KAAKytD,qBAAqB1sB,EAAQ1uB,GAAGrS,KAAK2tD,qBAAqB5sB,EAAQzuB,IAC9G,OAA7BtS,KAAK4mG,sBACP5mG,KAAK4mG,oBAAoB/gE,SACzB7lC,KAAK00D,kBAAiB,IAExB10D,KAAK42B,WAUPh3B,EAAQ0nG,iBAAmB,SAASz9F,GAClC,GAAIk3B,GAAU/gC,KAAKysD,YAAY5iD,EAAM22B,QAAQ5T,OACZ,QAA7B5sB,KAAK4mG,qBAA6D//F,SAA7B7G,KAAK4mG,sBAC5C5mG,KAAK4mG,oBAAoBv0F,EAAIrS,KAAKytD,qBAAqB1sB,EAAQ1uB,GAC/DrS,KAAK4mG,oBAAoBt0F,EAAItS,KAAK2tD,qBAAqB5sB,EAAQzuB,IAEjEtS,KAAK42B,WASPh3B,EAAQ2nG,oBAAsB,SAASxmE,GACrC,GAAIymE,GAAUxnG,KAAK8sD,WAAW/rB,EACd,QAAZymE,GACqD,GAAnDxnG,KAAK2mG,gBAAgBnvC,aAAaxtC,KAAKyb,WACzCzlC,KAAK2mG,gBAAgBrpC,uBACrBt9D,KAAKynG,UAAUD,EAAQnnG,GAAIL,KAAK2mG,gBAAgB18E,GAAG5pB,IACnDL,KAAK2mG,gBAAgBnvC,aAAaxtC,KAAK8b,YAEY,GAAjD9lC,KAAK2mG,gBAAgBnvC,aAAavtC,GAAGwb,WACvCzlC,KAAK2mG,gBAAgBrpC,uBACrBt9D,KAAKynG,UAAUznG,KAAK2mG,gBAAgB38E,KAAK3pB,GAAImnG,EAAQnnG,IACrDL,KAAK2mG,gBAAgBnvC,aAAavtC,GAAG6b,aAIvC9lC,KAAK2mG,gBAAgBrpC,uBAEvBt9D,KAAK00D,kBAAiB,GACtB10D,KAAK42B,WASPh3B,EAAQsnG,eAAiB,SAASnmE,GAChC,GAAoC,GAAhC/gC,KAAK2kG,wBAA8B,CACrC,GAAIj9C,GAAO1nD,KAAK8sD,WAAW/rB,EAE3B,IAAY,MAAR2mB,EACF,GAAIA,EAAKqY,YAAc,EACrB2nC,MAAM1nG,KAAKqjD,UAAUpa,QAAQjpC,KAAKqjD,UAAUhe,QAAyB,qBAElE,CACHrlC,KAAKitD,cAAcvF,GAAK,EACxB,IAAI00C,GAAep8F,KAAK2xD,QAAiB,QAAS,KAGlDyqC,GAAyB,WAAI,GAAI74F,IAAMlD,GAAG,oBAAoBL,KAAKqjD,UACnE,IAAIskD,GAAavL,EAAyB,UAC1CuL,GAAWt1F,EAAIq1C,EAAKr1C,EACpBs1F,EAAWr1F,EAAIo1C,EAAKp1C,EAGpBtS,KAAKq/C,MAAsB,eAAI,GAAIj8C,IAAM/C,GAAG,iBAAiB2pB,KAAK09B,EAAKrnD,GAAG4pB,GAAG09E,EAAWtnG,IAAKL,KAAMA,KAAKqjD,UACxG,IAAIukD,GAAiB5nG,KAAKq/C,MAAsB,cAChDuoD,GAAe59E,KAAO09B,EACtBkgD,EAAe53C,WAAY,EAC3B43C,EAAe74F,QAAQyzC,cAAgBxzC,SAAS,EAC5CyzC,SAAS,EACTt7C,KAAM,aACNu7C,UAAW,IAEfklD,EAAeniE,UAAW,EAC1BmiE,EAAe39E,GAAK09E,EAEpB3nG,KAAKolD,gBAA+B,cAAIplD,KAAKutD,aAC7C,IAAIx4C,GAAK/U,IACTA,MAAKutD,cAAgB,SAAS1jD,GAC5B,GAAIk3B,GAAU/gC,KAAKysD,YAAY5iD,EAAM22B,QAAQ5T,QACzCg7E,EAAiB7yF,EAAGsqC,MAAsB,cAC9CuoD,GAAe39E,GAAG5X,EAAI0C,EAAG04C,qBAAqB1sB,EAAQ1uB,GACtDu1F,EAAe39E,GAAG3X,EAAIyC,EAAG44C,qBAAqB5sB,EAAQzuB,GACtDyC,EAAG6hB,WAGL52B,KAAK0mD,QAAS,EACd1mD,KAAKkQ,WAMbtQ,EAAQunG,eAAiB,SAASt9F,GAChC,GAAoC,GAAhC7J,KAAK2kG,wBAA8B,CACrC,GAAI5jE,GAAU/gC,KAAKysD,YAAY5iD,EAAM22B,QAAQ5T,OAE7C5sB,MAAKutD,cAAgBvtD,KAAKolD,gBAA+B,oBAClDplD,MAAKolD,gBAA+B,aAG3C,IAAIyiD,GAAgB7nG,KAAKq/C,MAAsB,eAAEmX,aAG1Cx2D,MAAKq/C,MAAsB,qBAC3Br/C,MAAK2xD,QAAiB,QAAS,MAAc,iBAC7C3xD,MAAK2xD,QAAiB,QAAS,MAAiB,aAEvD,IAAIjK,GAAO1nD,KAAK8sD,WAAW/rB,EACf,OAAR2mB,IACEA,EAAKqY,YAAc,EACrB2nC,MAAM1nG,KAAKqjD,UAAUpa,QAAQjpC,KAAKqjD,UAAUhe,QAAyB,kBAGrErlC,KAAK8nG,YAAYD,EAAcngD,EAAKrnD,IACpCL,KAAKipD,0BAGTjpD,KAAKgpD,iBAQTppD,EAAQonG,SAAW,WACjB,GAAIhnG,KAAKglG,qBAAwC,GAAjBhlG,KAAKgqD,SAAkB,CACrD,GAAIo6C,GAAiBpkG,KAAKmkG,yBAAyBnkG,KAAK6lD,iBACpDkiD,GAAe1nG,GAAGM,EAAK2E,aAAa+M,EAAE+xF,EAAev8F,KAAKyK,EAAE8xF,EAAen8F,IAAI4K,MAAM,MAAMsiD,gBAAe,EAAKC,gBAAe,EAClI,IAAIp1D,KAAK49C,iBAAiB/pC,IAAK,CAC7B,GAAwC,GAApC7T,KAAK49C,iBAAiB/pC,IAAI7N,OAU5B,KAAM,IAAIpC,OAAM,sEAThB,IAAImR,GAAK/U,IACTA,MAAK49C,iBAAiB/pC,IAAIk0F,EAAa,SAASC,GAC9CjzF,EAAGixC,UAAUnyC,IAAIm0F,GACjBjzF,EAAGk0C,wBACHl0C,EAAG2xC,QAAS,EACZ3xC,EAAG7E,cAWPlQ,MAAKgmD,UAAUnyC,IAAIk0F,GACnB/nG,KAAKipD,wBACLjpD,KAAK0mD,QAAS,EACd1mD,KAAKkQ,UAWXtQ,EAAQkoG,YAAc,SAASG,EAAaC,GAC1C,GAAqB,GAAjBloG,KAAKgqD,SAAkB,CACzB,GAAI+9C,IAAe/9E,KAAKi+E,EAAch+E,GAAGi+E,EACzC,IAAIloG,KAAK49C,iBAAiBG,QAAS,CACjC,GAA4C,GAAxC/9C,KAAK49C,iBAAiBG,QAAQ/3C,OAShC,KAAM,IAAIpC,OAAM,0EARhB,IAAImR,GAAK/U,IACTA,MAAK49C,iBAAiBG,QAAQgqD,EAAa,SAASC,GAClDjzF,EAAGkxC,UAAUpyC,IAAIm0F,GACjBjzF,EAAG2xC,QAAS,EACZ3xC,EAAG7E,cAUPlQ,MAAKimD,UAAUpyC,IAAIk0F,GACnB/nG,KAAK0mD,QAAS,EACd1mD,KAAKkQ,UAUXtQ,EAAQ6nG,UAAY,SAASQ,EAAaC,GACxC,GAAqB,GAAjBloG,KAAKgqD,SAAkB,CACzB,GAAI+9C,IAAe1nG,GAAIL,KAAK2mG,gBAAgBtmG,GAAI2pB,KAAKi+E,EAAch+E,GAAGi+E,EACtE,IAAIloG,KAAK49C,iBAAiBE,SAAU,CAClC,GAA6C,GAAzC99C,KAAK49C,iBAAiBE,SAAS93C,OASjC,KAAM,IAAIpC,OAAM,wEARhB,IAAImR,GAAK/U,IACTA,MAAK49C,iBAAiBE,SAASiqD,EAAa,SAASC,GACnDjzF,EAAGkxC,UAAUxwC,OAAOuyF,GACpBjzF,EAAG2xC,QAAS,EACZ3xC,EAAG7E,cAUPlQ,MAAKimD,UAAUxwC,OAAOsyF,GACtB/nG,KAAK0mD,QAAS,EACd1mD,KAAKkQ,UAUXtQ,EAAQuoG,UAAY,WAClB,IAAInoG,KAAK49C,iBAAiBC,MAAyB,GAAjB79C,KAAKgqD,SA4BrC,KAAM,IAAIpmD,OAAM,iDA3BhB,IAAI8jD,GAAO1nD,KAAK4kG,mBACZtxF,GAAQjT,GAAGqnD,EAAKrnD,GAClBwS,MAAO60C,EAAK70C,MACZN,MAAOm1C,EAAK34C,QAAQwD,MACpB+rC,MAAOoJ,EAAK34C,QAAQuvC,MACpBlzC,OACEsB,WAAWg7C,EAAK34C,QAAQ3D,MAAMsB,WAC9BC,OAAO+6C,EAAK34C,QAAQ3D,MAAMuB,OAC1BC,WACEF,WAAWg7C,EAAK34C,QAAQ3D,MAAMwB,UAAUF,WACxCC,OAAO+6C,EAAK34C,QAAQ3D,MAAMwB,UAAUD,SAG1C,IAAyC,GAArC3M,KAAK49C,iBAAiBC,KAAK73C,OAU7B,KAAM,IAAIpC,OAAM,wEAThB,IAAImR,GAAK/U,IACTA,MAAK49C,iBAAiBC,KAAKvqC,EAAM,SAAU00F,GACzCjzF,EAAGixC,UAAUvwC,OAAOuyF,GACpBjzF,EAAGk0C,wBACHl0C,EAAG2xC,QAAS,EACZ3xC,EAAG7E,WAoBXtQ,EAAQysD,gBAAkB,WACxB,IAAKrsD,KAAKglG,qBAAwC,GAAjBhlG,KAAKgqD,SACpC,GAAKhqD,KAAKilG,sBA4BRyC,MAAM1nG,KAAKqjD,UAAUpa,QAAQjpC,KAAKqjD,UAAUhe,QAA4B,wBA5BzC,CAC/B,GAAI+iE,GAAgBpoG,KAAK2lG,mBACrB0C,EAAgBroG,KAAK6lG,kBACzB,IAAI7lG,KAAK49C,iBAAiBI,IAAK,CAC7B,GAAIjpC,GAAK/U,KACLsT,GAAQ4qC,MAAOkqD,EAAe/oD,MAAOgpD,EACzC,IAAwC,GAApCroG,KAAK49C,iBAAiBI,IAAIh4C,OAU5B,KAAM,IAAIpC,OAAM,0EAThB5D,MAAK49C,iBAAiBI,IAAI1qC,EAAM,SAAU00F,GACxCjzF,EAAGkxC,UAAUhvC,OAAO+wF,EAAc3oD,OAClCtqC,EAAGixC,UAAU/uC,OAAO+wF,EAAc9pD,OAClCnpC,EAAGi0C,eACHj0C,EAAG2xC,QAAS,EACZ3xC,EAAG7E,cAQPlQ,MAAKimD,UAAUhvC,OAAOoxF,GACtBroG,KAAKgmD,UAAU/uC,OAAOmxF,GACtBpoG,KAAKgpD,eACLhpD,KAAK0mD,QAAS,EACd1mD,KAAKkQ,WAYT,SAASrQ,EAAQD,EAASM,GAE9B,GACI0lC,IADO1lC,EAAoB,GAClBA,EAAoB,IAEjCN,GAAQ+vE,iBAAmB,WAEzB,GAAqC,GAAjC3vE,KAAKyjD,kBAAkBz9C,OAAa,CACtC,IAAK,GAAIH,GAAI,EAAGA,EAAI7F,KAAKyjD,kBAAkBz9C,OAAQH,IACjD7F,KAAKyjD,kBAAkB59C,GAAGslD,SAE5BnrD,MAAKyjD,qBAGPzjD,KAAK0lG,2BAA6B,aAG9B1lG,KAAKsoG,eAAiBtoG,KAAKsoG,cAAuB,SAAKtoG,KAAKsoG,cAAuB,QAAEn+F,YACvFnK,KAAKsoG,cAAuB,QAAEn+F,WAAWsH,YAAYzR,KAAKsoG,cAAuB,UAYrF1oG,EAAQgwE,wBAA0B,WAChC5vE,KAAK2vE,mBAEL3vE,KAAKsoG,gBACL,IAAIC,IAAkB,KAAK,OAAO,OAAO,QAAQ,SAAS,UAAU,eAChEC,GAAwB,UAAU,YAAY,YAAY,aAAa,UAAU,WAAW,cAEhGxoG,MAAKsoG,cAAuB,QAAIz2F,SAASM,cAAc,OACvDnS,KAAKmgB,MAAMpO,YAAY/R,KAAKsoG,cAAuB,QAEnD,KAAK,GAAIziG,GAAI,EAAGA,EAAI0iG,EAAeviG,OAAQH,IAAK,CAC9C7F,KAAKsoG,cAAcC,EAAe1iG,IAAMgM,SAASM,cAAc,OAC/DnS,KAAKsoG,cAAcC,EAAe1iG,IAAIuC,UAAY,sBAAwBmgG,EAAe1iG,GACzF7F,KAAKsoG,cAAuB,QAAEv2F,YAAY/R,KAAKsoG,cAAcC,EAAe1iG,IAE5E,IAAI/B,GAAS8hC,EAAO5lC,KAAKsoG,cAAcC,EAAe1iG,KAAM8jC,iBAAiB,GAC7E7lC,GAAOqQ,GAAG,QAASnU,KAAKwoG,EAAqB3iG,IAAI0vB,KAAKv1B,OACtDA,KAAKyjD,kBAAkBl7C,KAAKzE,GAG9B9D,KAAK0lG,2BAA6B1lG,KAAKyoG,eAUzC7oG,EAAQ8oG,YAAc,SAAS7+F,GAC7B7J,KAAK6mD,YAAYz2C,SAAS,MAC1BvG,EAAM88B,mBAQR/mC,EAAQ6oG,cAAgB,WACtBzoG,KAAKgsD,eACLhsD,KAAK6rD,eACL7rD,KAAKmsD,aAYPvsD,EAAQgsD,QAAU,SAAS/hD,GACzB7J,KAAK2kD,WAAa3kD,KAAKqjD,UAAUvB,SAASC,MAAMzvC,EAChDtS,KAAKkQ,QACLrG,EAAMD,kBAQRhK,EAAQksD,UAAY,SAASjiD,GAC3B7J,KAAK2kD,YAAc3kD,KAAKqjD,UAAUvB,SAASC,MAAMzvC,EACjDtS,KAAKkQ,QACLrG,EAAMD,kBAQRhK,EAAQmsD,UAAY,SAASliD,GAC3B7J,KAAK0kD,WAAa1kD,KAAKqjD,UAAUvB,SAASC,MAAM1vC,EAChDrS,KAAKkQ,QACLrG,EAAMD,kBAQRhK,EAAQqsD,WAAa,SAASpiD,GAC5B7J,KAAK0kD,YAAc1kD,KAAKqjD,UAAUvB,SAASC,MAAMzvC,EACjDtS,KAAKkQ,QACLrG,EAAMD,kBAQRhK,EAAQssD,QAAU,SAASriD,GACzB7J,KAAK4kD,cAAgB5kD,KAAKqjD,UAAUvB,SAASC,MAAM7gB,KACnDlhC,KAAKkQ,QACLrG,EAAMD,kBAQRhK,EAAQwsD,SAAW,SAASviD,GAC1B7J,KAAK4kD,eAAiB5kD,KAAKqjD,UAAUvB,SAASC,MAAM7gB,KACpDlhC,KAAKkQ,QACLrG,EAAMD,kBAQRhK,EAAQusD,UAAY,SAAStiD,GAC3B7J,KAAK4kD,cAAgB,EACrB/6C,GAASA,EAAMD,kBAQjBhK,EAAQisD,aAAe,SAAShiD,GAC9B7J,KAAK2kD,WAAa,EAClB96C,GAASA,EAAMD,kBAQjBhK,EAAQosD,aAAe,SAASniD,GAC9B7J,KAAK0kD,WAAa,EAClB76C,GAASA,EAAMD,mBAMb,SAAS/J,EAAQD,GAErBA,EAAQ8pD,aAAe,WACrB,IAAK,GAAI1B,KAAUhoD,MAAKk+C,MACtB,GAAIl+C,KAAKk+C,MAAM/3C,eAAe6hD,GAAS,CACrC,GAAIN,GAAO1nD,KAAKk+C,MAAM8J,EACO,IAAzBN,EAAKsX,mBACPtX,EAAKvI,MAAQ,GACbuI,EAAKuX,qBAAsB,KAYnCr/D,EAAQgnD,yBAA2B,WACjC,GAAiD,GAA7C5mD,KAAKqjD,UAAUlB,mBAAmBnzC,SAAmBhP,KAAK0lD,YAAY1/C,OAAS,EAAG,CAEpF,GACI0hD,GAAMM,EADN2gD,EAAU,EAEVC,GAAe,EACfC,GAAiB,CAErB,KAAK7gD,IAAUhoD,MAAKk+C,MACdl+C,KAAKk+C,MAAM/3C,eAAe6hD,KAC5BN,EAAO1nD,KAAKk+C,MAAM8J,GACA,IAAdN,EAAKvI,MACPypD,GAAe,EAGfC,GAAiB,EAEfF,EAAUjhD,EAAKrI,MAAMr5C,SACvB2iG,EAAUjhD,EAAKrI,MAAMr5C,QAM3B,IAAsB,GAAlB6iG,GAA0C,GAAhBD,EAC5B,KAAM,IAAIhlG,OAAM,wHAQhB5D,MAAK8oG,mBAGiB,GAAlBD,IAC8C,WAA5C7oG,KAAKqjD,UAAUlB,mBAAmBG,OACpCtiD,KAAK+oG,iBAAiBJ,GAGtB3oG,KAAKgpG,0BAAyB,GAKlC,IAAIC,GAAejpG,KAAKkpG,kBAGxBlpG,MAAKmpG,uBAAuBF,GAG5BjpG,KAAKkQ,UAYXtQ,EAAQupG,uBAAyB,SAASF,GACxC,GAAIjhD,GAAQN,CAGZ,KAAK,GAAIvI,KAAS8pD,GAChB,GAAIA,EAAa9iG,eAAeg5C,GAE9B,IAAK6I,IAAUihD,GAAa9pD,GAAOjB,MAC7B+qD,EAAa9pD,GAAOjB,MAAM/3C,eAAe6hD,KAC3CN,EAAOuhD,EAAa9pD,GAAOjB,MAAM8J,GACkB,MAA/ChoD,KAAKqjD,UAAUlB,mBAAmBpmB,WAAoE,MAA/C/7B,KAAKqjD,UAAUlB,mBAAmBpmB,UACvF2rB,EAAK2F,SACP3F,EAAKr1C,EAAI42F,EAAa9pD,GAAOiqD,OAC7B1hD,EAAK2F,QAAS,EAEd47C,EAAa9pD,GAAOiqD,QAAUH,EAAa9pD,GAAOkD,aAIhDqF,EAAK4F,SACP5F,EAAKp1C,EAAI22F,EAAa9pD,GAAOiqD,OAC7B1hD,EAAK4F,QAAS,EAEd27C,EAAa9pD,GAAOiqD,QAAUH,EAAa9pD,GAAOkD,aAGtDriD,KAAKqpG,kBAAkB3hD,EAAKrI,MAAMqI,EAAKrnD,GAAG4oG,EAAavhD,EAAKvI,OAOpEn/C,MAAK2pD,cAUP/pD,EAAQspG,iBAAmB,WACzB,GACIlhD,GAAQN,EAAMvI,EADd8pD,IAKJ,KAAKjhD,IAAUhoD,MAAKk+C,MACdl+C,KAAKk+C,MAAM/3C,eAAe6hD,KAC5BN,EAAO1nD,KAAKk+C,MAAM8J,GAClBN,EAAK2F,QAAS,EACd3F,EAAK4F,QAAS,EACqC,MAA/CttD,KAAKqjD,UAAUlB,mBAAmBpmB,WAAoE,MAA/C/7B,KAAKqjD,UAAUlB,mBAAmBpmB,UAC3F2rB,EAAKp1C,EAAItS,KAAKqjD,UAAUlB,mBAAmBC,gBAAgBsF,EAAKvI,MAGhEuI,EAAKr1C,EAAIrS,KAAKqjD,UAAUlB,mBAAmBC,gBAAgBsF,EAAKvI,MAEjCt4C,SAA7BoiG,EAAavhD,EAAKvI,SACpB8pD,EAAavhD,EAAKvI,QAAU4uB,OAAQ,EAAG7vB,SAAWkrD,OAAO,EAAG/mD,YAAY,IAE1E4mD,EAAavhD,EAAKvI,OAAO4uB,QAAU,EACnCk7B,EAAavhD,EAAKvI,OAAOjB,MAAM8J,GAAUN,EAK7C,IAAI4hD,GAAW,CACf,KAAKnqD,IAAS8pD,GACRA,EAAa9iG,eAAeg5C,IAC1BmqD,EAAWL,EAAa9pD,GAAO4uB,SACjCu7B,EAAWL,EAAa9pD,GAAO4uB,OAMrC,KAAK5uB,IAAS8pD,GACRA,EAAa9iG,eAAeg5C,KAC9B8pD,EAAa9pD,GAAOkD,aAAeinD,EAAW,GAAKtpG,KAAKqjD,UAAUlB,mBAAmBE,YACrF4mD,EAAa9pD,GAAOkD,aAAgB4mD,EAAa9pD,GAAO4uB,OAAS,EACjEk7B,EAAa9pD,GAAOiqD,OAASH,EAAa9pD,GAAOkD,YAAe,IAAO4mD,EAAa9pD,GAAO4uB,OAAS,GAAKk7B,EAAa9pD,GAAOkD,YAIjI,OAAO4mD,IAUTrpG,EAAQmpG,iBAAmB,SAASJ,GAClC,GAAI3gD,GAAQN,CAGZ,KAAKM,IAAUhoD,MAAKk+C,MACdl+C,KAAKk+C,MAAM/3C,eAAe6hD,KAC5BN,EAAO1nD,KAAKk+C,MAAM8J,GACdN,EAAKrI,MAAMr5C,QAAU2iG,IACvBjhD,EAAKvI,MAAQ,GAMnB,KAAK6I,IAAUhoD,MAAKk+C,MACdl+C,KAAKk+C,MAAM/3C,eAAe6hD,KAC5BN,EAAO1nD,KAAKk+C,MAAM8J,GACA,GAAdN,EAAKvI,OACPn/C,KAAKupG,UAAU,EAAE7hD,EAAKrI,MAAMqI,EAAKrnD,MAczCT,EAAQopG,yBAA2B,WACjC,GAAIhhD,GAAQN,EAAM8hD,EACd9H,EAAW,GAGf8H,GAAYxpG,KAAKk+C,MAAMl+C,KAAK0lD,YAAY,IACxC8jD,EAAUrqD,MAAQuiD,EAClB1hG,KAAKypG,kBAAkB/H,EAAS8H,EAAUnqD,MAAMmqD,EAAUnpG,GAG1D,KAAK2nD,IAAUhoD,MAAKk+C,MACdl+C,KAAKk+C,MAAM/3C,eAAe6hD,KAC5BN,EAAO1nD,KAAKk+C,MAAM8J,GAClB05C,EAAWh6C,EAAKvI,MAAQuiD,EAAWh6C,EAAKvI,MAAQuiD,EAKpD,KAAK15C,IAAUhoD,MAAKk+C,MACdl+C,KAAKk+C,MAAM/3C,eAAe6hD,KAC5BN,EAAO1nD,KAAKk+C,MAAM8J,GAClBN,EAAKvI,OAASuiD,IAepB9hG,EAAQkpG,iBAAmB,WACzB9oG,KAAKqjD,UAAU1C,WAAW3xC,SAAU,EACpChP,KAAKqjD,UAAUrD,QAAQC,UAAUjxC,SAAU,EAC3ChP,KAAKqjD,UAAUrD,QAAQU,sBAAsB1xC,SAAU,EACvDhP,KAAKivE,2BACsC,GAAvCjvE,KAAKqjD,UAAUb,aAAaxzC,UAC9BhP,KAAKqjD,UAAUb,aAAaC,SAAU,GAExCziD,KAAKwqD,wBAEL,IAAIusB,GAAS/2E,KAAKqjD,UAAUlB,kBAC5B40B,GAAO30B,gBAAkB59C,KAAK+mB,IAAIwrD,EAAO30B,kBACjB,MAApB20B,EAAOh7C,WAAyC,MAApBg7C,EAAOh7C,aACrCg7C,EAAO30B,iBAAmB,IAGJ,MAApB20B,EAAOh7C,WAAyC,MAApBg7C,EAAOh7C,UACM,GAAvC/7B,KAAKqjD,UAAUb,aAAaxzC,UAC9BhP,KAAKqjD,UAAUb,aAAar7C,KAAO,YAIM,GAAvCnH,KAAKqjD,UAAUb,aAAaxzC,UAC9BhP,KAAKqjD,UAAUb,aAAar7C,KAAO,eAgBzCvH,EAAQypG,kBAAoB,SAAShqD,EAAOqqD,EAAUT,EAAcU,GAClE,IAAK,GAAI9jG,GAAI,EAAGA,EAAIw5C,EAAMr5C,OAAQH,IAAK,CACrC,GAAI85F,GAAY,IAEdA,GADEtgD,EAAMx5C,GAAG0wD,MAAQmzC,EACPrqD,EAAMx5C,GAAGmkB,KAGTq1B,EAAMx5C,GAAGokB,EAIvB,IAAI2/E,IAAY,CACmC,OAA/C5pG,KAAKqjD,UAAUlB,mBAAmBpmB,WAAoE,MAA/C/7B,KAAKqjD,UAAUlB,mBAAmBpmB,UACvF4jE,EAAUtyC,QAAUsyC,EAAUxgD,MAAQwqD,IACxChK,EAAUtyC,QAAS,EACnBsyC,EAAUttF,EAAI42F,EAAatJ,EAAUxgD,OAAOiqD,OAC5CQ,GAAY,GAIVjK,EAAUryC,QAAUqyC,EAAUxgD,MAAQwqD,IACxChK,EAAUryC,QAAS,EACnBqyC,EAAUrtF,EAAI22F,EAAatJ,EAAUxgD,OAAOiqD,OAC5CQ,GAAY,GAIC,GAAbA,IACFX,EAAatJ,EAAUxgD,OAAOiqD,QAAUH,EAAatJ,EAAUxgD,OAAOkD,YAClEs9C,EAAUtgD,MAAMr5C,OAAS,GAC3BhG,KAAKqpG,kBAAkB1J,EAAUtgD,MAAMsgD,EAAUt/F,GAAG4oG,EAAatJ,EAAUxgD,UAenFv/C,EAAQ2pG,UAAY,SAASpqD,EAAOE,EAAOqqD,GACzC,IAAK,GAAI7jG,GAAI,EAAGA,EAAIw5C,EAAMr5C,OAAQH,IAAK,CACrC,GAAI85F,GAAY,IAEdA,GADEtgD,EAAMx5C,GAAG0wD,MAAQmzC,EACPrqD,EAAMx5C,GAAGmkB,KAGTq1B,EAAMx5C,GAAGokB,IAEA,IAAnB01E,EAAUxgD,OAAewgD,EAAUxgD,MAAQA,KAC7CwgD,EAAUxgD,MAAQA,EACdwgD,EAAUtgD,MAAMr5C,OAAS,GAC3BhG,KAAKupG,UAAUpqD,EAAM,EAAGwgD,EAAUtgD,MAAOsgD,EAAUt/F,OAe3DT,EAAQ6pG,kBAAoB,SAAStqD,EAAOE,EAAOqqD,GACjD1pG,KAAKk+C,MAAMwrD,GAAUzqC,qBAAsB,CAE3C,KAAK,GADD0gC,GAAW5jE,EACNl2B,EAAI,EAAGA,EAAIw5C,EAAMr5C,OAAQH,IAChCk2B,EAAY,EACRsjB,EAAMx5C,GAAG0wD,MAAQmzC,GACnB/J,EAAYtgD,EAAMx5C,GAAGmkB,KACrB+R,EAAY,IAGZ4jE,EAAYtgD,EAAMx5C,GAAGokB,GAEA,IAAnB01E,EAAUxgD,QACZwgD,EAAUxgD,MAAQA,EAAQpjB,EAI9B,KAAK,GAAIl2B,GAAI,EAAGA,EAAIw5C,EAAMr5C,OAAQH,IACA85F,EAA5BtgD,EAAMx5C,GAAG0wD,MAAQmzC,EAAuBrqD,EAAMx5C,GAAGmkB,KACnCq1B,EAAMx5C,GAAGokB,GAEvB01E,EAAUtgD,MAAMr5C,OAAS,GAAK25F,EAAU1gC,uBAAwB,GAClEj/D,KAAKypG,kBAAkB9J,EAAUxgD,MAAOwgD,EAAUtgD,MAAOsgD,EAAUt/F,KAWzET,EAAQs7F,cAAgB,WACtB,IAAK,GAAIlzC,KAAUhoD,MAAKk+C,MAClBl+C,KAAKk+C,MAAM/3C,eAAe6hD,KAC5BhoD,KAAKk+C,MAAM8J,GAAQqF,QAAS,EAC5BrtD,KAAKk+C,MAAM8J,GAAQsF,QAAS,KAQ9B,SAASztD,GAEb,QAASgqG,GAAeC,GACvB,KAAM,IAAIlmG,OAAM,uBAAyBkmG,EAAM,MAEhDD,EAAen8F,KAAO,WAAa,UACnCm8F,EAAeE,QAAUF,EACzBhqG,EAAOD,QAAUiqG,EACjBA,EAAexpG,GAAK,IAKhB,SAASR,EAAQD,GAQrBA,EAAQo8F,qBAAuB,WAC7B,GAAIv8E,GAAIC,EAAW8G,EAAU04C,EAAIC,EAAIw9B,EACnCqN,EAAgBpN,EAAOC,EAAOh3F,EAAGymB,EAE/B4xB,EAAQl+C,KAAKwlD,iBACbE,EAAc1lD,KAAKylD,uBAGnBwkD,EAAS,GAAK,EACdxjG,EAAI,EAAI,EAGRg6C,EAAezgD,KAAKqjD,UAAUrD,QAAQQ,UAAUC,aAChDypD,EAAkBzpD,CAItB,KAAK56C,EAAI,EAAGA,EAAI6/C,EAAY1/C,OAAS,EAAGH,IAEtC,IADA+2F,EAAQ1+C,EAAMwH,EAAY7/C,IACrBymB,EAAIzmB,EAAI,EAAGymB,EAAIo5B,EAAY1/C,OAAQsmB,IAAK,CAC3CuwE,EAAQ3+C,EAAMwH,EAAYp5B,IAC1BqwE,EAAsBC,EAAM78B,YAAc88B,EAAM98B,YAAc,EAE9DtgD,EAAKo9E,EAAMxqF,EAAIuqF,EAAMvqF,EACrBqN,EAAKm9E,EAAMvqF,EAAIsqF,EAAMtqF,EACrBkU,EAAWhiB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAGpB,GAAZ8G,IACFA,EAAW,GAAIhiB,KAAKiB,SACpBga,EAAK+G,GAGP0jF,EAA0C,GAAvBvN,EAA4Bl8C,EAAgBA,GAAgB,EAAIk8C,EAAsB38F,KAAKqjD,UAAU1C,WAAWW,sBACnI,IAAI17C,GAAIqkG,EAASC,CACF,GAAIA,EAAf1jF,IAEAwjF,EADa,GAAME,EAAjB1jF,EACe,EAGA5gB,EAAI4gB,EAAW/f,EAIlCujG,GAA0C,GAAvBrN,EAA4B,EAAI,EAAIA,EAAsB38F,KAAKqjD,UAAU1C,WAAWU,mBACvG2oD,GAAkCxlG,KAAKJ,IAAIoiB,EAAS,IAAK0jF,GAEzDhrC,EAAKz/C,EAAKuqF,EACV7qC,EAAKz/C,EAAKsqF,EACVpN,EAAM19B,IAAMA,EACZ09B,EAAMz9B,IAAMA,EACZ09B,EAAM39B,IAAMA,EACZ29B,EAAM19B,IAAMA,MAUhB,SAASt/D,EAAQD,GAQrBA,EAAQo8F,qBAAuB,WAC7B,GAAIv8E,GAAIC,EAAI8G,EAAU04C,EAAIC,EACxB6qC,EAAgBpN,EAAOC,EAAOh3F,EAAGymB,EAE/B4xB,EAAQl+C,KAAKwlD,iBACbE,EAAc1lD,KAAKylD,uBAGnBhF,EAAezgD,KAAKqjD,UAAUrD,QAAQU,sBAAsBD,YAIhE,KAAK56C,EAAI,EAAGA,EAAI6/C,EAAY1/C,OAAS,EAAGH,IAEtC,IADA+2F,EAAQ1+C,EAAMwH,EAAY7/C,IACrBymB,EAAIzmB,EAAI,EAAGymB,EAAIo5B,EAAY1/C,OAAQsmB,IAItC,GAHAuwE,EAAQ3+C,EAAMwH,EAAYp5B,IAGtBswE,EAAMz9C,OAAS09C,EAAM19C,MAAO,CAE9B1/B,EAAKo9E,EAAMxqF,EAAIuqF,EAAMvqF,EACrBqN,EAAKm9E,EAAMvqF,EAAIsqF,EAAMtqF,EACrBkU,EAAWhiB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,EAGpC,IAAIyqF,GAAY,GAEdH,GADavpD,EAAXj6B,GACgBhiB,KAAK+vB,IAAI41E,EAAU3jF,EAAS,GAAKhiB,KAAK+vB,IAAI41E,EAAU1pD,EAAa,GAGlE,EAGD,GAAZj6B,EACFA,EAAW,IAGXwjF,GAAkCxjF,EAEpC04C,EAAKz/C,EAAKuqF,EACV7qC,EAAKz/C,EAAKsqF,EAEVpN,EAAM19B,IAAMA,EACZ09B,EAAMz9B,IAAMA,EACZ09B,EAAM39B,IAAMA,EACZ29B,EAAM19B,IAAMA,IAYtBv/D,EAAQs8F,mCAAqC,WAS3C,IAAK,GARDO,GAAY1sC,EAAMZ,EAClB1vC,EAAIC,EAAIw/C,EAAIC,EAAIu9B,EAAal2E,EAC7B64B,EAAQr/C,KAAKq/C,MAEbnB,EAAQl+C,KAAKwlD,iBACbE,EAAc1lD,KAAKylD,uBAGd5/C,EAAI,EAAGA,EAAI6/C,EAAY1/C,OAAQH,IAAK,CAC3C,GAAI+2F,GAAQ1+C,EAAMwH,EAAY7/C,GAC9B+2F,GAAMwN,SAAW,EACjBxN,EAAMyN,SAAW,EAKnB,IAAKl7C,IAAU9P,GACb,GAAIA,EAAMl5C,eAAegpD,KACvBY,EAAO1Q,EAAM8P,GACTY,EAAKC,WAEHhwD,KAAKk+C,MAAM/3C,eAAe4pD,EAAKwG,OAASv2D,KAAKk+C,MAAM/3C,eAAe4pD,EAAKyG,SAqBzE,GApBAimC,EAAa1sC,EAAK/P,QAAQK,aAE1Bo8C,IAAe1sC,EAAK9lC,GAAG81C,YAAchQ,EAAK/lC,KAAK+1C,YAAc,GAAK//D,KAAKqjD,UAAU1C,WAAWY,WAE5F9hC,EAAMswC,EAAK/lC,KAAK3X,EAAI09C,EAAK9lC,GAAG5X,EAC5BqN,EAAMqwC,EAAK/lC,KAAK1X,EAAIy9C,EAAK9lC,GAAG3X,EAC5BkU,EAAWhiB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIbk2E,EAAc18F,KAAKqjD,UAAUrD,QAAQM,gBAAkBm8C,EAAaj2E,GAAYA,EAEhF04C,EAAKz/C,EAAKi9E,EACVv9B,EAAKz/C,EAAKg9E,EAIN3sC,EAAK9lC,GAAGk1B,OAAS4Q,EAAK/lC,KAAKm1B,MAC7B4Q,EAAK9lC,GAAGmgF,UAAYlrC,EACpBnP,EAAK9lC,GAAGogF,UAAYlrC,EACpBpP,EAAK/lC,KAAKogF,UAAYlrC,EACtBnP,EAAK/lC,KAAKqgF,UAAYlrC,MAEnB,CACH,GAAI3W,GAAS,EACbuH,GAAK9lC,GAAGi1C,IAAM1W,EAAO0W,EACrBnP,EAAK9lC,GAAGk1C,IAAM3W,EAAO2W,EACrBpP,EAAK/lC,KAAKk1C,IAAM1W,EAAO0W,EACvBnP,EAAK/lC,KAAKm1C,IAAM3W,EAAO2W,EAQjC,GACIirC,GAAUC,EADV3N,EAAc,CAElB,KAAK72F,EAAI,EAAGA,EAAI6/C,EAAY1/C,OAAQH,IAAK,CACvC,GAAI6hD,GAAOxJ,EAAMwH,EAAY7/C,GAC7BukG,GAAW5lG,KAAKL,IAAIu4F,EAAYl4F,KAAKJ,KAAKs4F,EAAYh1C,EAAK0iD,WAC3DC,EAAW7lG,KAAKL,IAAIu4F,EAAYl4F,KAAKJ,KAAKs4F,EAAYh1C,EAAK2iD,WAE3D3iD,EAAKwX,IAAMkrC,EACX1iD,EAAKyX,IAAMkrC,EAIb,GAAIC,GAAU,EACVC,EAAU,CACd,KAAK1kG,EAAI,EAAGA,EAAI6/C,EAAY1/C,OAAQH,IAAK,CACvC,GAAI6hD,GAAOxJ,EAAMwH,EAAY7/C,GAC7BykG,IAAW5iD,EAAKwX,GAChBqrC,GAAW7iD,EAAKyX,GAElB,GAAIqrC,GAAeF,EAAU5kD,EAAY1/C,OACrCykG,EAAeF,EAAU7kD,EAAY1/C,MAEzC,KAAKH,EAAI,EAAGA,EAAI6/C,EAAY1/C,OAAQH,IAAK,CACvC,GAAI6hD,GAAOxJ,EAAMwH,EAAY7/C,GAC7B6hD,GAAKwX,IAAMsrC,EACX9iD,EAAKyX,IAAMsrC,KAOX,SAAS5qG,EAAQD,GAQrBA,EAAQo8F,qBAAuB,WAC7B,GAA8D,GAA1Dh8F,KAAKqjD,UAAUrD,QAAQC,UAAUE,sBAA4B,CAC/D,GAAIuH,GACAxJ,EAAQl+C,KAAKwlD,iBACbE,EAAc1lD,KAAKylD,uBACnBilD,EAAYhlD,EAAY1/C,MAE5BhG,MAAK2qG,mBAAmBzsD,EAAMwH,EAK9B,KAAK,GAHDi2C,GAAgB37F,KAAK27F,cAGhB91F,EAAI,EAAO6kG,EAAJ7kG,EAAeA,IAC7B6hD,EAAOxJ,EAAMwH,EAAY7/C,IACrB6hD,EAAK34C,QAAQovC,KAAO,IAEtBn+C,KAAK4qG,sBAAsBjP,EAAcj8F,KAAKwhG,SAAS2J,GAAGnjD,GAC1D1nD,KAAK4qG,sBAAsBjP,EAAcj8F,KAAKwhG,SAAS4J,GAAGpjD,GAC1D1nD,KAAK4qG,sBAAsBjP,EAAcj8F,KAAKwhG,SAAS6J,GAAGrjD,GAC1D1nD,KAAK4qG,sBAAsBjP,EAAcj8F,KAAKwhG,SAAS8J,GAAGtjD,MAelE9nD,EAAQgrG,sBAAwB,SAASK,EAAavjD,GAEpD,GAAIujD,EAAaC,cAAgB,EAAG,CAClC,GAAIzrF,GAAGC,EAAG8G,CAUV,IAPA/G,EAAKwrF,EAAaE,aAAa94F,EAAIq1C,EAAKr1C,EACxCqN,EAAKurF,EAAaE,aAAa74F,EAAIo1C,EAAKp1C,EACxCkU,EAAWhiB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAKhC8G,EAAWykF,EAAaG,SAAWprG,KAAKqjD,UAAUrD,QAAQC,UAAUC,cAAe,CAErE,GAAZ15B,IACFA,EAAW,GAAIhiB,KAAKiB,SACpBga,EAAK+G,EAEP,IAAI+1E,GAAev8F,KAAKqjD,UAAUrD,QAAQC,UAAUE,sBAAwB8qD,EAAa9sD,KAAOuJ,EAAK34C,QAAQovC,MAAQ33B,EAAWA,EAAWA,GACvI04C,EAAKz/C,EAAK88E,EACVp9B,EAAKz/C,EAAK68E,CACd70C,GAAKwX,IAAMA,EACXxX,EAAKyX,IAAMA,MAIX,IAAkC,GAA9B8rC,EAAaC,cACflrG,KAAK4qG,sBAAsBK,EAAa/J,SAAS2J,GAAGnjD,GACpD1nD,KAAK4qG,sBAAsBK,EAAa/J,SAAS4J,GAAGpjD,GACpD1nD,KAAK4qG,sBAAsBK,EAAa/J,SAAS6J,GAAGrjD,GACpD1nD,KAAK4qG,sBAAsBK,EAAa/J,SAAS8J,GAAGtjD,OAGpD,IAAIujD,EAAa/J,SAAS5tF,KAAKjT,IAAMqnD,EAAKrnD,GAAI,CAE5B,GAAZmmB,IACFA,EAAW,GAAIhiB,KAAKiB,SACpBga,EAAK+G,EAEP,IAAI+1E,GAAev8F,KAAKqjD,UAAUrD,QAAQC,UAAUE,sBAAwB8qD,EAAa9sD,KAAOuJ,EAAK34C,QAAQovC,MAAQ33B,EAAWA,EAAWA,GACvI04C,EAAKz/C,EAAK88E,EACVp9B,EAAKz/C,EAAK68E,CACd70C,GAAKwX,IAAMA,EACXxX,EAAKyX,IAAMA,KAcrBv/D,EAAQ+qG,mBAAqB,SAASzsD,EAAMwH,GAU1C,IAAK,GATDgC,GACAgjD,EAAYhlD,EAAY1/C,OAExB6hD,EAAO5jD,OAAOonG,UAChB1jD,EAAO1jD,OAAOonG,UACdvjD,GAAO7jD,OAAOonG,UACdzjD,GAAO3jD,OAAOonG,UAGPxlG,EAAI,EAAO6kG,EAAJ7kG,EAAeA,IAAK,CAClC,GAAIwM,GAAI6rC,EAAMwH,EAAY7/C,IAAIwM,EAC1BC,EAAI4rC,EAAMwH,EAAY7/C,IAAIyM,CAC1B4rC,GAAMwH,EAAY7/C,IAAIkJ,QAAQovC,KAAO,IAC/B0J,EAAJx1C,IAAYw1C,EAAOx1C,GACnBA,EAAIy1C,IAAQA,EAAOz1C,GACfs1C,EAAJr1C,IAAYq1C,EAAOr1C,GACnBA,EAAIs1C,IAAQA,EAAOt1C,IAI3B,GAAIg5F,GAAW9mG,KAAK+mB,IAAIu8B,EAAOD,GAAQrjD,KAAK+mB,IAAIq8B,EAAOD,EACnD2jD,GAAW,GAAI3jD,GAAQ,GAAM2jD,EAAU1jD,GAAQ,GAAM0jD,IACtCzjD,GAAQ,GAAMyjD,EAAUxjD,GAAQ,GAAMwjD,EAGzD,IAAIC,GAAkB,KAClBC,EAAWhnG,KAAKJ,IAAImnG,EAAgB/mG,KAAK+mB,IAAIu8B,EAAOD,IACpD4jD,EAAe,GAAMD,EACrBzoC,EAAU,IAAOlb,EAAOC,GAAOkb,EAAU,IAAOrb,EAAOC,GAGvD+zC,GACFj8F,MACEyrG,cAAe94F,EAAE,EAAGC,EAAE,GACtB6rC,KAAK,EACLhoB,OACE0xB,KAAMkb,EAAQ0oC,EAAa3jD,KAAKib,EAAQ0oC,EACxC9jD,KAAMqb,EAAQyoC,EAAa7jD,KAAKob,EAAQyoC,GAE1C74F,KAAM44F,EACNJ,SAAU,EAAII,EACdtK,UAAY5tF,KAAK,MACjB20B,SAAU,EACVkX,MAAO,EACP+rD,cAAe,GAMnB,KAHAlrG,KAAK0rG,aAAa/P,EAAcj8F,MAG3BmG,EAAI,EAAO6kG,EAAJ7kG,EAAeA,IACzB6hD,EAAOxJ,EAAMwH,EAAY7/C,IACrB6hD,EAAK34C,QAAQovC,KAAO,GACtBn+C,KAAK2rG,aAAahQ,EAAcj8F,KAAKgoD,EAKzC1nD,MAAK27F,cAAgBA,GAWvB/7F,EAAQgsG,kBAAoB,SAASX,EAAcvjD,GACjD,GAAImkD,GAAYZ,EAAa9sD,KAAOuJ,EAAK34C,QAAQovC,KAC7C2tD,EAAe,EAAED,CAErBZ,GAAaE,aAAa94F,EAAI44F,EAAaE,aAAa94F,EAAI44F,EAAa9sD,KAAOuJ,EAAKr1C,EAAIq1C,EAAK34C,QAAQovC,KACtG8sD,EAAaE,aAAa94F,GAAKy5F,EAE/Bb,EAAaE,aAAa74F,EAAI24F,EAAaE,aAAa74F,EAAI24F,EAAa9sD,KAAOuJ,EAAKp1C,EAAIo1C,EAAK34C,QAAQovC,KACtG8sD,EAAaE,aAAa74F,GAAKw5F,EAE/Bb,EAAa9sD,KAAO0tD,CACpB,IAAIE,GAAcvnG,KAAKJ,IAAII,KAAKJ,IAAIsjD,EAAKt0C,OAAOs0C,EAAKv7B,QAAQu7B,EAAKv0C,MAClE83F,GAAahjE,SAAYgjE,EAAahjE,SAAW8jE,EAAeA,EAAcd,EAAahjE,UAa7FroC,EAAQ+rG,aAAe,SAASV,EAAavjD,EAAKskD,IAC1B,GAAlBA,GAA6CnlG,SAAnBmlG,IAE5BhsG,KAAK4rG,kBAAkBX,EAAavjD,GAGlCujD,EAAa/J,SAAS2J,GAAG10E,MAAM2xB,KAAOJ,EAAKr1C,EACzC44F,EAAa/J,SAAS2J,GAAG10E,MAAMyxB,KAAOF,EAAKp1C,EAC7CtS,KAAKisG,eAAehB,EAAavjD,EAAK,MAGtC1nD,KAAKisG,eAAehB,EAAavjD,EAAK,MAIpCujD,EAAa/J,SAAS2J,GAAG10E,MAAMyxB,KAAOF,EAAKp1C,EAC7CtS,KAAKisG,eAAehB,EAAavjD,EAAK,MAGtC1nD,KAAKisG,eAAehB,EAAavjD,EAAK,OAc5C9nD,EAAQqsG,eAAiB,SAAShB,EAAavjD,EAAKwkD,GAClD,OAAQjB,EAAa/J,SAASgL,GAAQhB,eACpC,IAAK,GACHD,EAAa/J,SAASgL,GAAQhL,SAAS5tF,KAAOo0C,EAC9CujD,EAAa/J,SAASgL,GAAQhB,cAAgB,EAC9ClrG,KAAK4rG,kBAAkBX,EAAa/J,SAASgL,GAAQxkD,EACrD,MACF,KAAK,GAGCujD,EAAa/J,SAASgL,GAAQhL,SAAS5tF,KAAKjB,GAAKq1C,EAAKr1C,GACtD44F,EAAa/J,SAASgL,GAAQhL,SAAS5tF,KAAKhB,GAAKo1C,EAAKp1C,GACxDo1C,EAAKr1C,GAAK7N,KAAKiB,SACfiiD,EAAKp1C,GAAK9N,KAAKiB,WAGfzF,KAAK0rG,aAAaT,EAAa/J,SAASgL,IACxClsG,KAAK2rG,aAAaV,EAAa/J,SAASgL,GAAQxkD,GAElD,MACF,KAAK,GACH1nD,KAAK2rG,aAAaV,EAAa/J,SAASgL,GAAQxkD,KAatD9nD,EAAQ8rG,aAAe,SAAST,GAE9B,GAAIkB,GAAgB,IACc,IAA9BlB,EAAaC,gBACfiB,EAAgBlB,EAAa/J,SAAS5tF,KACtC23F,EAAa9sD,KAAO,EAAG8sD,EAAaE,aAAa94F,EAAI,EAAG44F,EAAaE,aAAa74F,EAAI,GAExF24F,EAAaC,cAAgB,EAC7BD,EAAa/J,SAAS5tF,KAAO,KAC7BtT,KAAKosG,cAAcnB,EAAa,MAChCjrG,KAAKosG,cAAcnB,EAAa,MAChCjrG,KAAKosG,cAAcnB,EAAa,MAChCjrG,KAAKosG,cAAcnB,EAAa,MAEX,MAAjBkB,GACFnsG,KAAK2rG,aAAaV,EAAakB,IAenCvsG,EAAQwsG,cAAgB,SAASnB,EAAciB,GAC7C,GAAIrkD,GAAKC,EAAKH,EAAKC,EACfykD,EAAY,GAAMpB,EAAar4F,IACnC,QAAQs5F,GACN,IAAK,KACHrkD,EAAOojD,EAAa90E,MAAM0xB,KAC1BC,EAAOmjD,EAAa90E,MAAM0xB,KAAOwkD,EACjC1kD,EAAOsjD,EAAa90E,MAAMwxB,KAC1BC,EAAOqjD,EAAa90E,MAAMwxB,KAAO0kD,CACjC,MACF,KAAK,KACHxkD,EAAOojD,EAAa90E,MAAM0xB,KAAOwkD,EACjCvkD,EAAOmjD,EAAa90E,MAAM2xB,KAC1BH,EAAOsjD,EAAa90E,MAAMwxB,KAC1BC,EAAOqjD,EAAa90E,MAAMwxB,KAAO0kD,CACjC,MACF,KAAK,KACHxkD,EAAOojD,EAAa90E,MAAM0xB,KAC1BC,EAAOmjD,EAAa90E,MAAM0xB,KAAOwkD,EACjC1kD,EAAOsjD,EAAa90E,MAAMwxB,KAAO0kD,EACjCzkD,EAAOqjD,EAAa90E,MAAMyxB,IAC1B,MACF,KAAK,KACHC,EAAOojD,EAAa90E,MAAM0xB,KAAOwkD,EACjCvkD,EAAOmjD,EAAa90E,MAAM2xB,KAC1BH,EAAOsjD,EAAa90E,MAAMwxB,KAAO0kD,EACjCzkD,EAAOqjD,EAAa90E,MAAMyxB,KAK9BqjD,EAAa/J,SAASgL,IACpBf,cAAc94F,EAAE,EAAEC,EAAE,GACpB6rC,KAAK,EACLhoB,OAAO0xB,KAAKA,EAAKC,KAAKA,EAAKH,KAAKA,EAAKC,KAAKA,GAC1Ch1C,KAAM,GAAMq4F,EAAar4F,KACzBw4F,SAAU,EAAIH,EAAaG,SAC3BlK,UAAW5tF,KAAK,MAChB20B,SAAU,EACVkX,MAAO8rD,EAAa9rD,MAAM,EAC1B+rD,cAAe,IAYnBtrG,EAAQ0sG,UAAY,SAAS1kF,EAAIxc,GACJvE,SAAvB7G,KAAK27F,gBAEP/zE,EAAIO,UAAY,EAEhBnoB,KAAKusG,YAAYvsG,KAAK27F,cAAcj8F,KAAKkoB,EAAIxc,KAajDxL,EAAQ2sG,YAAc,SAASC,EAAO5kF,EAAIxc,GAC1BvE,SAAVuE,IACFA,EAAQ,WAGkB,GAAxBohG,EAAOtB,gBACTlrG,KAAKusG,YAAYC,EAAOtL,SAAS2J,GAAGjjF,GACpC5nB,KAAKusG,YAAYC,EAAOtL,SAAS4J,GAAGljF,GACpC5nB,KAAKusG,YAAYC,EAAOtL,SAAS8J,GAAGpjF,GACpC5nB,KAAKusG,YAAYC,EAAOtL,SAAS6J,GAAGnjF,IAEtCA,EAAIY,YAAcpd,EAClBwc,EAAIa,YACJb,EAAIc,OAAO8jF,EAAOr2E,MAAM0xB,KAAK2kD,EAAOr2E,MAAMwxB,MAC1C//B,EAAIe,OAAO6jF,EAAOr2E,MAAM2xB,KAAK0kD,EAAOr2E,MAAMwxB,MAC1C//B,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAO8jF,EAAOr2E,MAAM2xB,KAAK0kD,EAAOr2E,MAAMwxB,MAC1C//B,EAAIe,OAAO6jF,EAAOr2E,MAAM2xB,KAAK0kD,EAAOr2E,MAAMyxB,MAC1ChgC,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAO8jF,EAAOr2E,MAAM2xB,KAAK0kD,EAAOr2E,MAAMyxB,MAC1ChgC,EAAIe,OAAO6jF,EAAOr2E,MAAM0xB,KAAK2kD,EAAOr2E,MAAMyxB,MAC1ChgC,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAO8jF,EAAOr2E,MAAM0xB,KAAK2kD,EAAOr2E,MAAMyxB,MAC1ChgC,EAAIe,OAAO6jF,EAAOr2E,MAAM0xB,KAAK2kD,EAAOr2E,MAAMwxB,MAC1C//B,EAAIlH,WAaF,SAAS7gB,GAEbA,EAAOD,QAAU,SAASC,GAQzB,MAPIA,GAAO4sG,kBACV5sG,EAAO41E,UAAY,aACnB51E,EAAO6sG,SAEP7sG,EAAOqhG,YACPrhG,EAAO4sG,gBAAkB,GAEnB5sG"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 2f3c79b2..a17f6851 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.10.1-SNAPSHOT - * @date 2015-03-02 + * @date 2015-03-03 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -24,16 +24,16 @@ */ "use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var M=this.yLabel;M.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(M,o.x,o.y));var D=this.zLabel;D.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(D,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+M.x/D/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[]; -var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step); +var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step); break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?o>0?Math.max(-s,0):-e:0>s?Math.min(-s,o-s-e-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n) }return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l=this.body.util.getScale(),c=this.body.util.getStep(),p={start:i?i(d,l,c):d,content:"new item"};if("range"===this.options.type){var u=this.body.util.toTime(h+this.props.width/5);p.end=i?i(u,l,c):u}p[this.itemsData._fieldId]=n.randomUUID();var m=this.groupFromTarget(t);m&&(p.group=m.groupId),this.options.onAdd(p,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start) }),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture.center.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486; var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset() -},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=S.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=S.DELIMITER);var i=E+n();if(C[i])return N=S.DELIMITER,k=i,o(),void o();if(C[E])return N=S.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=S.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=S.IDENTIFIER)}for(N=S.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==S.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=S.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=S.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==S.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=S.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=S.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=S.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function M(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),M(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var S={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=S.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new d(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof d&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){h.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),d=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,d+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",M=t.length,D=0;M-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=M>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Si===!1&&(Si=!0,Ce.updateOffset(this),Si=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e) -}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Mi={},Di=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Si=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=D(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Di.length-1;Oe>=0;--Oe)I(Di[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Me(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Me(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&De(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function S(t,e){return new S.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY) -}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return M.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||M.matchType(u,s)?o=u:M.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},M=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing"); +},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=S.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=S.DELIMITER);var i=E+n();if(C[i])return N=S.DELIMITER,k=i,o(),void o();if(C[E])return N=S.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=S.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=S.IDENTIFIER)}for(N=S.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==S.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=S.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=S.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==S.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=S.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=S.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=S.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function M(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),M(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var S={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=S.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",M=t.length,D=0;M-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=M>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Si===!1&&(Si=!0,Ce.updateOffset(this),Si=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week +}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Mi={},Di=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Si=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=D(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Di.length-1;Oe>=0;--Oe)I(Di[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Me(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Me(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&De(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function S(t,e){return new S.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1 +},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return M.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||M.matchType(u,s)?o=u:M.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},M=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing"); var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/docs/graph2d.html b/docs/graph2d.html index a4355b1b..05b741a1 100644 --- a/docs/graph2d.html +++ b/docs/graph2d.html @@ -678,7 +678,7 @@ The options colored in green can also be used as options for the groups. All opt orientation String 'bottom' - Orientation of the timeline: 'top' or 'bottom' (default). If orientation is 'bottom', the time axis is drawn at the bottom, and if 'top', the axis is drawn on top. + Orientation of the timeline: 'top', 'bottom' (default), or 'both'. If orientation is 'bottom', the time axis is drawn at the bottom. When 'top', the axis is drawn on top. When 'both', two axes are drawn, both on top and at the bottom. diff --git a/docs/timeline.html b/docs/timeline.html index cc07b99a..8bfa691b 100644 --- a/docs/timeline.html +++ b/docs/timeline.html @@ -681,7 +681,7 @@ var options = { orientation String 'bottom' - Orientation of the timeline: 'top' or 'bottom' (default). If orientation is 'bottom', the time axis is drawn at the bottom, and if 'top', the axis is drawn on top. + Orientation of the timeline: 'top', 'bottom' (default), or 'both'. If orientation is 'bottom', the time axis is drawn at the bottom. When 'top', the axis is drawn on top. When 'both', two axes are drawn, both on top and at the bottom. diff --git a/lib/timeline/Core.js b/lib/timeline/Core.js index 5b3b16e6..d8ac161e 100644 --- a/lib/timeline/Core.js +++ b/lib/timeline/Core.js @@ -5,6 +5,7 @@ var DataSet = require('../DataSet'); var DataView = require('../DataView'); var Range = require('./Range'); var ItemSet = require('./component/ItemSet'); +var TimeAxis = require('./component/TimeAxis'); var Activator = require('../shared/Activator'); var DateUtil = require('./DateUtil'); var CustomTime = require('./component/CustomTime'); @@ -192,6 +193,28 @@ Core.prototype.setOptions = function (options) { var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'orientation', 'clickToUse', 'dataAttributes', 'hiddenDates']; util.selectiveExtend(fields, this.options, options); + if (this.options.orientation === 'both') { + if (!this.timeAxis2) { + var timeAxis2 = this.timeAxis2 = new TimeAxis(this.body); + timeAxis2.setOptions = function (options) { + var _options = options ? util.extend({}, options) : {}; + _options.orientation = 'top'; // override the orientation option, always top + TimeAxis.prototype.setOptions.call(timeAxis2, _options); + }; + this.components.push(timeAxis2); + } + } + else { + if (this.timeAxis2) { + var index = this.components.indexOf(this.timeAxis2); + if (index !== -1) { + this.components.splice(index, 1); + } + this.timeAxis2.destroy(); + this.timeAxis2 = null; + } + } + if ('hiddenDates' in this.options) { DateUtil.convertHiddenOptions(this.body, this.options.hiddenDates); } diff --git a/lib/timeline/Timeline.js b/lib/timeline/Timeline.js index 2a61d12e..67c1da44 100644 --- a/lib/timeline/Timeline.js +++ b/lib/timeline/Timeline.js @@ -38,7 +38,7 @@ function Timeline (container, items, groups, options) { autoResize: true, - orientation: 'bottom', + orientation: 'bottom', // 'bottom', 'top', or 'both' width: null, height: null, maxHeight: null, @@ -83,6 +83,7 @@ function Timeline (container, items, groups, options) { // time axis this.timeAxis = new TimeAxis(this.body); + this.timeAxis2 = null; // used in case of orientation option 'both' this.components.push(this.timeAxis); // current time bar diff --git a/test/timeline.html b/test/timeline.html index 43b2b318..84b7ce99 100644 --- a/test/timeline.html +++ b/test/timeline.html @@ -102,6 +102,7 @@ var options = { editable: true, //orientation: 'top', + orientation: 'both', start: now.clone().add(-7, 'days'), end: now.clone().add(7, 'days'), //maxHeight: 200, From f6217d9d5e9e9812b64723af031fd31c8fcf9d18 Mon Sep 17 00:00:00 2001 From: jos Date: Tue, 3 Mar 2015 15:00:19 +0100 Subject: [PATCH 07/43] Implemented creating new range items by dragging in an empty space with the ctrl key down. --- HISTORY.md | 2 + dist/vis.js | 9112 +++++++++++++------------- dist/vis.map | 2 +- dist/vis.min.js | 22 +- docs/timeline.html | 10 +- examples/timeline/08_edit_items.html | 1 + lib/timeline/component/ItemSet.js | 130 +- 7 files changed, 4709 insertions(+), 4570 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 7ccfd7d0..da99dc53 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -20,6 +20,8 @@ http://visjs.org - Implemented orientation option `'both'`, displaying a time axis both on top and bottom (#665). +- Implemented creating new range items by dragging in an empty space with the + ctrl key down. - Fixed not property initializing with a DataView for groups. - Merged add custom timebar functionality, thanks @aytech! - Fixed #664: end of item not restored when canceling a move event. diff --git a/dist/vis.js b/dist/vis.js index 2b232976..6f95c67e 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -13507,6 +13507,54 @@ return /******/ (function(modules) { // webpackBootstrap event.stopPropagation(); } + else if (this.options.editable.add && event.gesture.srcEvent.ctrlKey) { + // create a new range item when dragging with ctrl key down + this._onDragStartAddItem(event); + } + }; + + /** + * Start creating a new range item by dragging. + * @param {Event} event + * @private + */ + ItemSet.prototype._onDragStartAddItem = function (event) { + var snap = this.options.snap || null; + var xAbs = util.getAbsoluteLeft(this.dom.frame); + var x = event.gesture.center.pageX - xAbs - 10; // minus 10 to compensate for the drag starting as soon as you've moved 10px + var time = this.body.util.toTime(x); + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); + var start = snap ? snap(time, scale, step) : start; + var end = start; + + var itemData = { + type: 'range', + start: start, + end: end, + content: 'new item' + }; + + var id = util.randomUUID(); + itemData[this.itemsData._fieldId] = id; + + var group = this.groupFromTarget(event); + if (group) { + itemData.group = group.groupId; + } + + var newItem = new RangeItem(itemData, this.conversion, this.options); + newItem.id = id; // TODO: not so nice setting id afterwards + this._addItem(newItem); + + var props = { + item: newItem, + end: end.valueOf(), + initialX: event.gesture.center.clientX + }; + this.touchParams.itemProps = [props]; + + event.stopPropagation(); }; /** @@ -13617,49 +13665,65 @@ return /******/ (function(modules) { // webpackBootstrap if (this.touchParams.itemProps) { // prepare a change set for the changed items - var changes = [], - me = this, - dataset = this.itemsData.getDataSet(); + var changes = []; + var me = this; + var dataset = this.itemsData.getDataSet(); var itemProps = this.touchParams.itemProps ; this.touchParams.itemProps = null; itemProps.forEach(function (props) { - var id = props.item.id, - itemData = me.itemsData.get(id, me.itemOptions); - - var changed = false; - if ('start' in props.item.data) { - changed = (props.start != props.item.data.start.valueOf()); - itemData.start = util.convert(props.item.data.start, - dataset._options.type && dataset._options.type.start || 'Date'); - } - if ('end' in props.item.data) { - changed = changed || (props.end != props.item.data.end.valueOf()); - itemData.end = util.convert(props.item.data.end, - dataset._options.type && dataset._options.type.end || 'Date'); - } - if ('group' in props.item.data) { - changed = changed || (props.group != props.item.data.group); - itemData.group = props.item.data.group; - } + var id = props.item.id; + var itemData = me.itemsData.get(id, me.itemOptions); - // only apply changes when start or end is actually changed - if (changed) { - me.options.onMove(itemData, function (itemData) { + if (!itemData) { + // add a new item + me.options.onAdd(props.item.data, function (itemData) { + me._removeItem(props.item); // remove temporary item if (itemData) { - // apply changes - itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) - changes.push(itemData); + me.itemsData.getDataSet().add(itemData); } - else { - // restore original values - me._updateItemProps(props.item, props); - me.stackDirty = true; // force re-stacking of all items next redraw - me.body.emitter.emit('change'); - } + // force re-stacking of all items next redraw + me.stackDirty = true; + me.body.emitter.emit('change'); }); } + else { + // update existing item + var changed = false; + if ('start' in props.item.data) { + changed = (props.start != props.item.data.start.valueOf()); + itemData.start = util.convert(props.item.data.start, + dataset._options.type && dataset._options.type.start || 'Date'); + } + if ('end' in props.item.data) { + changed = changed || (props.end != props.item.data.end.valueOf()); + itemData.end = util.convert(props.item.data.end, + dataset._options.type && dataset._options.type.end || 'Date'); + } + if ('group' in props.item.data) { + changed = changed || (props.group != props.item.data.group); + itemData.group = props.item.data.group; + } + + // only apply changes when start or end is actually changed + if (changed) { + me.options.onMove(itemData, function (itemData) { + if (itemData) { + // apply changes + itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) + changes.push(itemData); + } + else { + // restore original values + me._updateItemProps(props.item, props); + + me.stackDirty = true; // force re-stacking of all items next redraw + me.body.emitter.emit('change'); + } + }); + } + } }); // apply the changes to the data (if there are changes) @@ -22474,7 +22538,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(58); + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(59); /***/ }, @@ -22484,7 +22548,7 @@ return /******/ (function(modules) { // webpackBootstrap // Only load hammer.js when in a browser environment // (loading hammer.js in a node.js environment gives errors) if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(59); + module.exports = window['Hammer'] || __webpack_require__(58); } else { module.exports = function () { @@ -25071,5218 +25135,5218 @@ return /******/ (function(modules) { // webpackBootstrap /* 58 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.9.0 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 + * http://eightmedia.github.io/hammer.js + * + * Copyright (c) 2014 Jorik Tangelder ; + * Licensed under the MIT license */ - (function (undefined) { - /************************************ - Constants - ************************************/ + (function(window, undefined) { + 'use strict'; - var moment, - VERSION = '2.9.0', - // the global-scope this is NOT the global object in Node.js - globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, - oldGlobalMoment, - round = Math.round, - hasOwnProperty = Object.prototype.hasOwnProperty, - i, + /** + * @main + * @module hammer + * + * @class Hammer + * @static + */ - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, + /** + * Hammer, use this to create instances + * ```` + * var hammertime = new Hammer(myElement); + * ```` + * + * @method Hammer + * @param {HTMLElement} element + * @param {Object} [options={}] + * @return {Hammer.Instance} + */ + var Hammer = function Hammer(element, options) { + return new Hammer.Instance(element, options || {}); + }; - // internal storage for locale config files - locales = {}, + /** + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} + */ + Hammer.VERSION = '1.1.3'; - // extra moment internal properties (plugins register props here) - momentProperties = [], + /** + * default settings. + * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled + * by setting it's name (like `swipe`) to false. + * You can set the defaults for all instances by changing this object before creating an instance. + * @example + * ```` + * Hammer.defaults.drag = false; + * Hammer.defaults.behavior.touchAction = 'pan-y'; + * delete Hammer.defaults.behavior.userSelect; + * ```` + * @property defaults + * @type {Object} + */ + Hammer.defaults = { + /** + * this setting object adds styles and attributes to the element to prevent the browser from doing + * its native behavior. The css properties are auto prefixed for the browsers when needed. + * @property defaults.behavior + * @type {Object} + */ + behavior: { + /** + * Disables text selection to improve the dragging gesture. When the value is `none` it also sets + * `onselectstart=false` for IE on the element. Mainly for desktop browsers. + * @property defaults.behavior.userSelect + * @type {String} + * @default 'none' + */ + userSelect: 'none', - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module && module.exports), + /** + * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). + * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. + * @property defaults.behavior.touchAction + * @type {String} + * @default: 'pan-y' + */ + touchAction: 'pan-y', - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @property defaults.behavior.touchCallout + * @type {String} + * @default 'none' + */ + touchCallout: 'none', - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, + /** + * Specifies that an entire element should be draggable instead of its contents. + * Mainly for desktop browsers. + * @property defaults.behavior.userDrag + * @type {String} + * @default 'none' + */ + userDrag: 'none', - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. + * + * If you don't specify an alpha value, Safari on iPhone applies a default alpha value + * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). + * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. + * @property defaults.behavior.tapHighlightColor + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' + } + }; - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + /** + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document + */ + Hammer.DOCUMENT = document; - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + /** + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} + */ + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + /** + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} + */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], + /** + * detect if we want to support mouseevents at all + * @property NO_MOUSEEVENTS + * @type {Boolean} + */ + Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; - // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, + /** + * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` + * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) + * @property EVENT_TYPES + * @private + * @writeOnce + * @type {Object} + */ + var EVENT_TYPES = {}; - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, + /** + * direction strings, for safe comparisons + * @property DIRECTION_DOWN|LEFT|UP|RIGHT + * @final + * @type {String} + * @default 'down' 'left' 'up' 'right' + */ + var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; + var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; + var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; + var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, + /** + * pointertype strings, for safe comparisons + * @property POINTER_MOUSE|TOUCH|PEN + * @final + * @type {String} + * @default 'mouse' 'touch' 'pen' + */ + var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; + var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; + var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; - // format function strings - formatFunctions = {}, + /** + * eventtypes + * @property EVENT_START|MOVE|END|RELEASE|TOUCH + * @final + * @type {String} + * @default 'start' 'change' 'move' 'end' 'release' 'touch' + */ + var EVENT_START = Hammer.EVENT_START = 'start'; + var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; + var EVENT_END = Hammer.EVENT_END = 'end'; + var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; + var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; - // default relative time thresholds - relativeTimeThresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }, + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.localeData().monthsShort(this, format); - }, - MMMM : function (format) { - return this.localeData().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.localeData().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.localeData().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.localeData().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - x : function () { - return this.valueOf(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); - } - }, + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; - deprecations = {}, - - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], - - updateInProgress = false; - - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error('Implement me'); - } - } - - function hasOwnProp(a, b) { - return hasOwnProperty.call(a, b); - } - - function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; - } - - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; } - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } + // find what eventtypes we add listeners to + Event.determineEventTypes(); - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; - } - } + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); + }); - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.localeData().ordinal(func.call(this, a), period); - }; - } + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); - function monthDiff(a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; + // Hammer is ready...! + Hammer.READY = true; + } - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); + /** + * @module hammer + * + * @class Utils + * @static + */ + var Utils = Hammer.utils = { + /** + * extend method, could also be used for cloning when `dest` is an empty object. + * changes the dest object + * @method extend + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] do a merge + * @return {Object} dest + */ + extend: function extend(dest, src, merge) { + for(var key in src) { + if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { + continue; + } + dest[key] = src[key]; } + return dest; + }, - return -(wholeMonthDiff + adjust); - } - - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); - } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); - } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + /** + * simple addEventListener wrapper + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + on: function on(element, type, handler) { + element.addEventListener(type, handler, false); + }, + /** + * simple removeEventListener wrapper + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); + }, - function meridiemFixWrap(locale, hour, meridiem) { - var isPm; + /** + * forEach over arrays and objects + * @method each + * @param {Object|Array} obj + * @param {Function} iterator + * @param {any} iterator.item + * @param {Number} iterator.index + * @param {Object|Array} iterator.obj the source object + * @param {Object} context value to use as `this` in the iterator + */ + each: function each(obj, iterator, context) { + var i, len; - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; + // native forEach on arrays + if('forEach' in obj) { + obj.forEach(iterator, context); + // arrays + } else if(obj.length !== undefined) { + for(i = 0, len = obj.length; i < len; i++) { + if(iterator.call(context, obj[i], i, obj) === false) { + return; + } } - return hour; + // objects } else { - // thie is not supposed to happen - return hour; + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; + } + } } - } - - /************************************ - Constructors - ************************************/ + }, - function Locale() { - } + /** + * find if a string contains the string using indexOf + * @method inStr + * @param {String} src + * @param {String} find + * @return {Boolean} found + */ + inStr: function inStr(src, find) { + return src.indexOf(find) > -1; + }, - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - moment.updateOffset(this); - updateInProgress = false; + /** + * find if a array contains the object using indexOf or a simple polyfill + * @method inArray + * @param {String} src + * @param {String} find + * @return {Boolean|Number} false when not found, or the index + */ + inArray: function inArray(src, find) { + if(src.indexOf) { + var index = src.indexOf(find); + return (index === -1) ? false : index; + } else { + for(var i = 0, len = src.length; i < len; i++) { + if(src[i] === find) { + return i; + } + } + return false; } - } - - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = moment.localeData(); - - this._bubble(); - } - - /************************************ - Helpers - ************************************/ + }, + /** + * convert an array-like object (`arguments`, `touchlist`) to an array + * @method toArray + * @param {Object} obj + * @return {Array} + */ + toArray: function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + }, - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; + /** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ + hasParent: function hasParent(node, parent) { + while(node) { + if(node == parent) { + return true; } + node = node.parentNode; } + return false; + }, - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } - - return a; - } - - function copyConfig(to, from) { - var i, prop, val; + /** + * get the center of all the touches + * @method getCenter + * @param {Array} touches + * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties + */ + getCenter: function getCenter(touches) { + var pageX = [], + pageY = [], + clientX = [], + clientY = [], + min = Math.min, + max = Math.max; - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = from._pf; - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; + // no need to loop when only one touch + if(touches.length === 1) { + return { + pageX: touches[0].pageX, + pageY: touches[0].pageY, + clientX: touches[0].clientX, + clientY: touches[0].clientY + }; } - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); - return to; - } + return { + pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, + pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, + clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, + clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 + }; + }, - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } - } + /** + * calculate the velocity between two points. unit is in px per ms. + * @method getVelocity + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + * @return {Object} velocity `x` and `y` + */ + getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { + return { + x: Math.abs(deltaX / deltaTime) || 0, + y: Math.abs(deltaY / deltaTime) || 0 + }; + }, - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; + /** + * calculate the angle between two coordinates + * @method getAngle + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {Number} angle + */ + getAngle: function getAngle(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - while (output.length < targetLength) { - output = '0' + output; - } - return (sign ? (forceSign ? '+' : '') : '-') + output; - } + return Math.atan2(y, x) * 180 / Math.PI; + }, - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; + /** + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` + */ + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + /** + * calculate the distance between two touches + * @method getDistance + * @param {Touch}touch1 + * @param {Touch} touch2 + * @return {Number} distance + */ + getDistance: function getDistance(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - return res; - } + return Math.sqrt((x * x) + (y * y)); + }, - function momentsDifference(base, other) { - var res; - other = makeAs(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; + /** + * calculate the scale factor between two touchLists + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @method getScale + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} scale + */ + getScale: function getScale(start, end) { + // need two fingers... + if(start.length >= 2 && end.length >= 2) { + return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); } + return 1; + }, - return res; - } - - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; - } - - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; - } - - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); - } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - moment.updateOffset(mom, days || months); + /** + * calculate the rotation degrees between two touchLists + * @method getRotation + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} rotation + */ + getRotation: function getRotation(start, end) { + // need two fingers + if(start.length >= 2 && end.length >= 2) { + return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); } - } + return 0; + }, - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } + /** + * find out if the direction is vertical * + * @method isVertical + * @param {String} direction matches `DIRECTION_UP|DOWN` + * @return {Boolean} is_vertical + */ + isVertical: function isVertical(direction) { + return direction == DIRECTION_UP || direction == DIRECTION_DOWN; + }, - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } + /** + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} + */ + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; + for(var i = 0; i < prefixes.length; i++) { + var p = prop; + // prefixes + if(prefixes[i]) { + p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); } - } - return diffs + lengthDiff; - } - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; - } - return units; - } - - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; } } + }, - return normalizedInput; - } - - function makeList(field) { - var count, setter; - - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { + /** + * toggle browser default behavior by setting css properties. + * `userSelect='none'` also sets `element.onselectstart` to false + * `userDrag='none'` also sets `element.ondragstart` to false + * + * @method toggleBehavior + * @param {HtmlElement} element + * @param {Object} props + * @param {Boolean} [toggle=true] + */ + toggleBehavior: function toggleBehavior(element, props, toggle) { + if(!props || !element || !element.style) { return; } - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; - - if (typeof format === 'number') { - index = format; - format = undefined; - } - - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } + var falseFn = toggle && function() { + return false; }; - } - - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; + } + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; } + }, - return value; + /** + * convert a string with underscores to camelCase + * so prevent_default becomes preventDefault + * @param {String} str + * @return {String} camelCaseStr + */ + toCamelCase: function toCamelCase(str) { + return str.replace(/[_-]([a-z])/g, function(s) { + return s[1].toUpperCase(); + }); } + }; - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } + /** + * @module hammer + */ + /** + * @class Event + * @static + */ + var Event = Hammer.event = { + /** + * when touch events have been fired, this is true + * this is used to stop mouse events + * @property prevent_mouseevents + * @private + * @type {Boolean} + */ + preventMouseEvents: false, - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 24 || - (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || - m._a[SECOND] !== 0 || - m._a[MILLISECOND] !== 0)) ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; + /** + * simple event binder with a hook and support for multiple types + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + on: function on(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.on(element, type, handler); + hook && hook(type); + }); + }, - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } + /** + * simple event unbinder with a hook and support for multiple types + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + off: function off(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.off(element, type, handler); + hook && hook(type); + }); + }, - m._pf.overflow = overflow; - } - } + /** + * the core touch event handler. + * this finds out if we should to detect gestures + * @method onTouch + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Function} handler + * @return onTouchHandler {Function} the core event handler + */ + onTouch: function onTouch(element, eventType, handler) { + var self = this; - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0 && - m._pf.bigHour === undefined; + // if we are in a mouseevent, but there has been a touchevent triggered in this session + // we want to do nothing. simply break out of the event. + if(isMouse && self.preventMouseEvents) { + return; + + // mousebutton must be down + } else if(isMouse && eventType == EVENT_START && ev.button === 0) { + self.preventMouseEvents = false; + self.shouldDetect = true; + } else if(isPointer && eventType == EVENT_START) { + self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); + // just a valid start event, but no mouse + } else if(!isMouse && eventType == EVENT_START) { + self.preventMouseEvents = true; + self.shouldDetect = true; } - } - return m._isValid; - } - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); + } - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + if(triggerType == EVENT_END) { + self.preventMouseEvents = false; + self.shouldDetect = false; + PointerEvent.reset(); + // update the pointerevent object after the detection } - i++; - } - return null; - } - function loadLocale(name) { - var oldLocale = null; - if (!locales[name] && hasModule) { - try { - oldLocale = moment.locale(); - !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); - // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales - moment.locale(oldLocale); - } catch (e) { } - } - return locales[name]; - } + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } + }; - // Return a moment from input, that is local/utc/utcOffset equivalent to - // model. - function makeAs(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (moment.isMoment(input) || isDate(input) ? - +input : +moment(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - moment.updateOffset(res, false); - return res; - } else { - return moment(input).local(); + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, + + /** + * the core detection method + * this finds out what hammer-touch-events to trigger + * @method doDetect + * @param {Object} ev + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {HTMLElement} element + * @param {Function} handler + * @return {String} triggerType matches `EVENT_START|MOVE|END` + */ + doDetect: function doDetect(ev, eventType, element, handler) { + var touchList = this.getTouchList(ev, eventType); + var touchListLength = touchList.length; + var triggerType = eventType; + var triggerChange = touchList.trigger; // used by fakeMultitouch plugin + var changedLength = touchListLength; + + // at each touchstart-like event we want also want to trigger a TOUCH event... + if(eventType == EVENT_START) { + triggerChange = EVENT_TOUCH; + // ...the same for a touchend-like event + } else if(eventType == EVENT_END) { + triggerChange = EVENT_RELEASE; + + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); } - } - /************************************ - Locale - ************************************/ + // after there are still touches on the screen, + // we just want to trigger a MOVE event. so change the START or END to a MOVE + // but only after detection has been started, the first time we actualy want a START + if(changedLength > 0 && this.started) { + triggerType = EVENT_MOVE; + } + // detection has been started, we keep track of this, see above + this.started = true; - extend(Locale.prototype, { + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); - }, + // trigger the triggerType event before the change (TOUCH, RELEASE) events + // but the END event should be at last + if(eventType != EVENT_END) { + handler.call(Detection, evData); + } - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, + handler.call(Detection, evData); - monthsParse : function (monthName, format, strict) { - var i, mom, regex; + evData.eventType = triggerType; + delete evData.changedLength; + } - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = moment.utc([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - }, - - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; + } - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, + return triggerType; + }, - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, + /** + * we have different events for each device/browser + * determine what we need and set them in the EVENT_TYPES constant + * the `onTouch` method is bind to these properties. + * @method determineEventTypes + * @return {Object} events + */ + determineEventTypes: function determineEventTypes() { + var types; + if(Hammer.HAS_POINTEREVENTS) { + if(window.PointerEvent) { + types = [ + 'pointerdown', + 'pointermove', + 'pointerup pointercancel lostpointercapture' + ]; + } else { + types = [ + 'MSPointerDown', + 'MSPointerMove', + 'MSPointerUp MSPointerCancel MSLostPointerCapture' + ]; + } + } else if(Hammer.NO_MOUSEEVENTS) { + types = [ + 'touchstart', + 'touchmove', + 'touchend touchcancel' + ]; + } else { + types = [ + 'touchstart mousedown', + 'touchmove mousemove', + 'touchend touchcancel mouseup' + ]; + } - weekdaysParse : function (weekdayName) { - var i, mom, regex; + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } + /** + * create touchList depending on the event + * @method getTouchList + * @param {Object} ev + * @param {String} eventType + * @return {Array} touches + */ + getTouchList: function getTouchList(ev, eventType) { + // get the fake pointerEvent touchlist + if(Hammer.HAS_POINTEREVENTS) { + return PointerEvent.getTouchList(); + } - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; } - }, - _longDateFormat : { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; - } - return output; - }, + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - }, + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); + } + identifiers.push(touch.identifier); + }); - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - }, + return touchList; + } + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom, [now]) : output; - }, + /** + * collect basic event data + * @method collectEventData + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Array} touches + * @param {Object} ev + * @return {Object} ev + */ + collectEventData: function collectEventData(element, eventType, touches, ev) { + // find out pointerType + var pointerType = POINTER_TOUCH; + if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { + pointerType = POINTER_MOUSE; + } else if(PointerEvent.matchType(POINTER_PEN, ev)) { + pointerType = POINTER_PEN; + } - _relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, + /** + * prevent the browser default actions + * mostly used to disable scrolling of the browser + */ + preventDefault: function() { + var srcEvent = this.srcEvent; + srcEvent.preventManipulation && srcEvent.preventManipulation(); + srcEvent.preventDefault && srcEvent.preventDefault(); + }, - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, + /** + * stop bubbling the event up to its parents + */ + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', - _ordinalParse : /\d{1,2}/, + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); + } + }; + } + }; - preparse : function (string) { - return string; - }, - postformat : function (string) { - return string; - }, - - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, - - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }, + /** + * @module hammer + * + * @class PointerEvent + * @static + */ + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, - firstDayOfWeek : function () { - return this._week.dow; - }, + /** + * get the pointers as an array + * @method getTouchList + * @return {Array} touchlist + */ + getTouchList: function getTouchList() { + var touchlist = []; + // we can use forEach since pointerEvents only is in IE10 + Utils.each(this.pointers, function(pointer) { + touchlist.push(pointer); + }); + return touchlist; + }, - firstDayOfYear : function () { - return this._week.doy; - }, + /** + * update the position of a pointer + * @method updatePointer + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Object} pointerEvent + */ + updatePointer: function updatePointer(eventType, pointerEvent) { + if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { + delete this.pointers[pointerEvent.pointerId]; + } else { + pointerEvent.identifier = pointerEvent.pointerId; + this.pointers[pointerEvent.pointerId] = pointerEvent; + } + }, - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; + /** + * check if ev matches pointertype + * @method matchType + * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` + * @param {PointerEvent} ev + */ + matchType: function matchType(pointerType, ev) { + if(!ev.pointerType) { + return false; } - }); - /************************************ - Formatting - ************************************/ + var pt = ev.pointerType, + types = {}; + types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); + types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); + types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); + return types[pointerType]; + }, - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; } + }; - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } + /** + * @module hammer + * + * @class Detection + * @static + */ + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], + + // data of the current Hammer.gesture detection session + current: null, + + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, + + // when this becomes true, no gestures are fired + stopped: false, + + /** + * start Hammer.gesture detection + * @method startDetect + * @param {Hammer.Instance} inst + * @param {Object} eventData + */ + startDetect: function startDetect(inst, eventData) { + // already busy with a Hammer.gesture detection on an element + if(this.current) { + return; } - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; + this.stopped = false; + + // holds current session + this.current = { + inst: inst, // reference to HammerInstance we're working for + startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc + lastEvent: false, // last eventData + lastCalcEvent: false, // last eventData for calculations. + futureCalcEvent: false, // last eventData for calculations. + lastCalcData: {}, // last lastCalcData + name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc }; - } - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); + this.detect(eventData); + }, + + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; } - format = expandFormat(format, m.localeData()); + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; + + // call Hammer.gesture handlers + Utils.each(this.gestures, function triggerGesture(gesture) { + // only when the instance options have enabled this gesture + if(!this.stopped && inst.enabled && instOptions[gesture.name]) { + gesture.handler.call(gesture, eventData, inst); + } + }, this); + + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; } - return formatFunctions[format](m); - } + if(eventData.eventType == EVENT_END) { + this.stopDetect(); + } - function expandFormat(format, locale) { - var i = 5; + return eventData; + }, - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; + /** + * clear the Hammer.gesture vars + * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected + * to stop other Hammer.gestures from being fired + * @method stopDetect + */ + stopDetect: function stopDetect() { + // clone current data to the store as the previous gesture + // used for the double tap gesture, since this is an other gesture detect session + this.previous = Utils.extend({}, this.current); + + // reset the current + this.current = null; + this.stopped = true; + }, + + /** + * calculate velocity, angle and direction + * @method getVelocityData + * @param {Object} ev + * @param {Object} center + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + */ + getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { + var cur = this.current, + recalc = false, + calcEv = cur.lastCalcEvent, + calcData = cur.lastCalcData; + + if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { + center = calcEv.center; + deltaTime = ev.timeStamp - calcEv.timeStamp; + deltaX = ev.center.clientX - calcEv.center.clientX; + deltaY = ev.center.clientY - calcEv.center.clientY; + recalc = true; } - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; } - return format; - } + if(!cur.lastCalcEvent || recalc) { + calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); + calcData.angle = Utils.getAngle(center, ev.center); + calcData.direction = Utils.getDirection(center, ev.center); + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; + } - /************************************ - Parsing - ************************************/ + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, + /** + * extend eventData for Hammer.gestures + * @method extendEventData + * @param {Object} ev + * @return {Object} ev + */ + extendEventData: function extendEventData(ev) { + var cur = this.current, + startEv = cur.startEvent, + lastEv = cur.lastEvent || startEv; - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { - return parseTokenOneDigit; - } - /* falls through */ - case 'SS': - if (strict) { - return parseTokenTwoDigits; - } - /* falls through */ - case 'SSS': - if (strict) { - return parseTokenThreeDigits; - } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return config._locale._meridiemParse; - case 'x': - return parseTokenOffsetMs; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); - return a; + // update the start touchlist to calculate the scale/rotation + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + startEv.touches = []; + Utils.each(ev.touches, function(touch) { + startEv.touches.push({ + clientX: touch.clientX, + clientY: touch.clientY + }); + }); } - } - function utcOffsetFromString(string) { - string = string || ''; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - return parts[0] === '+' ? minutes : -minutes; - } + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + Utils.extend(ev, { + startEvent: startEv, - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; - } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt( - input.match(/\d{1,2}/)[0], 10)); + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, + + distance: Utils.getDistance(startEv.center, ev.center), + angle: Utils.getAngle(startEv.center, ev.center), + direction: Utils.getDirection(startEv.center, ev.center), + scale: Utils.getScale(startEv.touches, ev.touches), + rotation: Utils.getRotation(startEv.touches, ev.touches) + }); + + return ev; + }, + + /** + * register new gesture + * @method register + * @param {Object} gesture object, see `gestures/` for documentation + * @return {Array} gestures + */ + register: function register(gesture) { + // add an enable gesture options if there is no given + var options = gesture.defaults || {}; + if(options[gesture.name] === undefined) { + options[gesture.name] = true; + } + + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); + + // set its index + gesture.index = gesture.index || 1000; + + // add Hammer.gesture to the list + this.gestures.push(gesture); + + // sort the list by index + this.gestures.sort(function(a, b) { + if(a.index < b.index) { + return -1; } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); + if(a.index > b.index) { + return 1; } + return 0; + }); - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._meridiem = input; - // config._isPm = config._locale.isPM(input); - break; - // HOUR - case 'h' : // fall through to hh - case 'hh' : - config._pf.bigHour = true; - /* falls through */ - case 'H' : // fall through to HH - case 'HH' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX OFFSET (MILLISECONDS) - case 'x': - config._d = new Date(toInt(input)); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = utcOffsetFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; - } else { - config._pf.invalidWeekday = input; - } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); - } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); - } + return this.gestures; } + }; - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + /** + * @module hammer + */ - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; + /** + * create new hammer instance + * all methods should return the instance itself, so it is chainable. + * + * @class Instance + * @constructor + * @param {HTMLElement} element + * @param {Object} [options={}] options are merged with `Hammer.defaults` + * @return {Hammer.Instance} + */ + Hammer.Instance = function(element, options) { + var self = this; - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; + /** + * options, merged with the defaults + * options with an _ are converted to camelCase + * @property options + * @type {Object} + */ + Utils.each(options, function(value, name) { + delete options[name]; + options[Utils.toCamelCase(name)] = value; + }); - if (config._d) { - return; - } + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - currentDate = currentDateArray(config); + // add some css to the element to prevent the browser from doing its native behavoir + if(this.options.behavior) { + Utils.toggleBehavior(this.element, this.options.behavior, true); + } - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); + /** + * event start handler on the element to start the detection + * @property eventStartHandler + * @type {Object} + */ + this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { + if(self.enabled && ev.eventType == EVENT_START) { + Detection.startDetect(self, ev); + } else if(ev.eventType == EVENT_TOUCH) { + Detection.detect(ev); } + }); - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; - } + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; + }; - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + Hammer.Instance.prototype = { + /** + * bind events to the instance + * @method on + * @chainable + * @param {String} gestures multiple gestures by splitting with a space + * @param {Function} handler + * @param {Object} handler.ev event object + */ + on: function onEvent(gestures, handler) { + var self = this; + Event.on(self.element, gestures, handler, function(type) { + self.eventHandlers.push({ gesture: type, handler: handler }); + }); + return self; + }, - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } + Event.off(self.element, gestures, handler, function(type) { + var index = Utils.inArray({ gesture: type, handler: handler }); + if(index !== false) { + self.eventHandlers.splice(index, 1); + } + }); + return self; + }, - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; } - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; - if (config._nextDay) { - config._a[HOUR] = 24; + // trigger on the target if it is in the instance element, + // this is for event delegation tricks + var element = this.element; + if(Utils.hasParent(eventData.target, element)) { + element = eventData.target; } - } - function dateFromObject(config) { - var normalizedInput; + element.dispatchEvent(event); + return this; + }, - if (config._d) { - return; - } - - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day || normalizedInput.date, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, - dateFromConfig(config); - } + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; - } - } + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); } - config._a = []; - config._pf.empty = true; - - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; - - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - config._pf.empty = false; - } - else { - config._pf.unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); - } - } + this.eventHandlers = []; - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); - } + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); - // clear _12h flag if hour is <= 12 - if (config._pf.bigHour === true && config._a[HOUR] <= 12) { - config._pf.bigHour = undefined; - } - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], - config._meridiem); - dateFromConfig(config); - checkOverflow(config); + return null; } + }; - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); - } - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } + /** + * @module gestures + */ + /** + * Move with x fingers (default 1) around on the page. + * Preventing the default browser behavior is a good way to improve feel and working. + * ```` + * hammertime.on("drag", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Drag + * @static + */ + /** + * @event drag + * @param {Object} ev + */ + /** + * @event dragstart + * @param {Object} ev + */ + /** + * @event dragend + * @param {Object} ev + */ + /** + * @event drapleft + * @param {Object} ev + */ + /** + * @event dragright + * @param {Object} ev + */ + /** + * @event dragup + * @param {Object} ev + */ + /** + * @event dragdown + * @param {Object} ev + */ - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - scoreToBeat, - i, - currentScore; + function dragGesture(ev, inst) { + var cur = Detection.current; - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { return; } - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - if (!isValid(tempConfig)) { - continue; - } + case EVENT_MOVE: + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.distance < inst.options.dragMinDistance && + cur.name != name) { + return; + } - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + var startCenter = cur.startEvent.center; - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + // we are dragging! + if(cur.name != name) { + cur.name = name; + if(inst.options.dragDistanceCorrection && ev.distance > 0) { + // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. + // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. + // It might be useful to save the original start point somewhere + var factor = Math.abs(inst.options.dragMinDistance / ev.distance); + startCenter.pageX += ev.deltaX * factor; + startCenter.pageY += ev.deltaY * factor; + startCenter.clientX += ev.deltaX * factor; + startCenter.clientY += ev.deltaY * factor; - tempConfig._pf.score = currentScore; + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; + } - extend(config, bestMoment || tempConfig); - } + // keep direction on the axis that the drag gesture started on + var lastDirection = cur.lastEvent.direction; + if(ev.dragLockToAxis && lastDirection !== ev.direction) { + if(Utils.isVertical(lastDirection)) { + ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; + } else { + ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + } - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); - - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be 'T' or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; } - } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; - } - } - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); - } - } + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } + var isVertical = Utils.isVertical(ev.direction); - function makeDateFromInput(config) { - var input = config._i, matched; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - dateFromConfig(config); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - moment.createFromInputFallback(config); - } - } + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - function makeDate(y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); + case EVENT_END: + triggered = false; + break; } - return date; } - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; - } + Hammer.gestures.Drag = { + name: name, + index: 50, + handler: dragGesture, + defaults: { + /** + * minimal movement that have to be made before the drag event gets triggered + * @property dragMinDistance + * @type {Number} + * @default 10 + */ + dragMinDistance: 10, - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } - } - } - return input; - } + /** + * Set dragDistanceCorrection to true to make the starting point of the drag + * be calculated from where the drag was triggered, not from where the touch started. + * Useful to avoid a jerk-starting drag, which can make fine-adjustments + * through dragging difficult, and be visually unappealing. + * @property dragDistanceCorrection + * @type {Boolean} + * @default true + */ + dragDistanceCorrection: true, - /************************************ - Relative Time - ************************************/ + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, + /** + * prevent default browser behavior when dragging occurs + * be careful with it, it makes the element a blocking element + * when you are using the drag gesture, it is a good practice to set this true + * @property dragBlockHorizontal + * @type {Boolean} + * @default false + */ + dragBlockHorizontal: false, - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, - function relativeTime(posNegDuration, withoutSuffix, locale) { - var duration = moment.duration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - years = round(duration.as('y')), + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < relativeTimeThresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < relativeTimeThresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; + /** + * drag lock only kicks in when distance > dragLockMinDistance + * This way, locking occurs only when the distance has become large enough to reliably determine the direction + * @property dragLockMinDistance + * @type {Number} + * @default 25 + */ + dragLockMinDistance: 25 + } + }; + })('drag'); - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); + /** + * @module gestures + */ + /** + * trigger a simple gesture event, so you can do anything in your handler. + * only usable if you know what your doing... + * + * @class Gesture + * @static + */ + /** + * @event gesture + * @param {Object} ev + */ + Hammer.gestures.Gesture = { + name: 'gesture', + index: 1337, + handler: function releaseGesture(ev, inst) { + inst.trigger(this.name, ev); } + }; + /** + * @module gestures + */ + /** + * Touch stays at the same place for x time + * + * @class Hold + * @static + */ + /** + * @event hold + * @param {Object} ev + */ - /************************************ - Week of Year - ************************************/ + /** + * @param {String} name + */ + (function(name) { + var timer; + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); + // set the gesture so we can check in the timeout if it still is + current.name = name; - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } + // set timer and if after the timeout it still is hold, + // we trigger the hold event + timer = setTimeout(function() { + if(current && current.name == name) { + inst.trigger(name, ev); + } + }, options.holdTimeout); + break; - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; + case EVENT_RELEASE: + clearTimeout(timer); + break; + } } - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture + }; + })('hold'); - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; + /** + * @module gestures + */ + /** + * when a touch is being released from the page + * + * @class Release + * @static + */ + /** + * @event release + * @param {Object} ev + */ + Hammer.gestures.Release = { + name: 'release', + index: Infinity, + handler: function releaseGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + inst.trigger(this.name, ev); + } } + }; - /************************************ - Top Level Functions - ************************************/ + /** + * @module gestures + */ + /** + * triggers swipe events when the end velocity is above the threshold + * for best usage, set `preventDefault` (on the drag gesture) to `true` + * ```` + * hammertime.on("dragleft swipeleft", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Swipe + * @static + */ + /** + * @event swipe + * @param {Object} ev + */ + /** + * @event swipeleft + * @param {Object} ev + */ + /** + * @event swiperight + * @param {Object} ev + */ + /** + * @event swipeup + * @param {Object} ev + */ + /** + * @event swipedown + * @param {Object} ev + */ + Hammer.gestures.Swipe = { + name: 'swipe', + index: 40, + defaults: { + /** + * @property swipeMinTouches + * @type {Number} + * @default 1 + */ + swipeMinTouches: 1, - function makeMoment(config) { - var input = config._i, - format = config._f, - res; + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - config._locale = config._locale || moment.localeData(config._l); + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; } - } else { - makeDateFromInput(config); - } - res = new Moment(config); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.velocityX > options.swipeVelocityX || + ev.velocityY > options.swipeVelocityY) { + // trigger swipe events + inst.trigger(this.name, ev); + inst.trigger(this.name + ev.direction, ev); + } } - - return res; } + }; - moment = function (input, format, locale, strict) { - var c; - - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = locale; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); + /** + * @module gestures + */ + /** + * Single tap and a double tap on a place + * + * @class Tap + * @static + */ + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev + */ - return makeMoment(c); - }; + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; - moment.suppressDeprecationWarnings = false; + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - moment.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); - - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return moment(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; - } - } - return res; - } - - moment.min = function () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); - }; + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - moment.max = function () { - var args = [].slice.call(arguments, 0); + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - return pickBy('isAfter', args); - }; + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } + } + break; } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); - - return makeMoment(c).utc(); - }; - - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + } - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; + Hammer.gestures.Tap = { + name: name, + index: 100, + handler: tapGesture, + defaults: { + /** + * max time of a tap, this is for the slow tappers + * @property tapMaxTime + * @type {Number} + * @default 250 + */ + tapMaxTime: 250, - if (moment.isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; - duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && - ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - ret = new Duration(duration); + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, - if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 } - - return ret; }; + })('tap'); - // version number - moment.version = VERSION; + /** + * @module gestures + */ + /** + * when a touch is being touched at the page + * + * @class Touch + * @static + */ + /** + * @event touch + * @param {Object} ev + */ + Hammer.gestures.Touch = { + name: 'touch', + index: -Infinity, + defaults: { + /** + * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, + * but it improves gestures like transforming and dragging. + * be careful with using this, it can be very annoying for users to be stuck on the page + * @property preventDefault + * @type {Boolean} + * @default false + */ + preventDefault: false, - // default format - moment.defaultFormat = isoFormat; + /** + * disable mouse events, so only touch (or pen!) input triggers events + * @property preventMouse + * @type {Boolean} + * @default false + */ + preventMouse: false + }, + handler: function touchGesture(ev, inst) { + if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { + ev.stopDetect(); + return; + } - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + if(inst.options.preventDefault) { + ev.preventDefault(); + } - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); + } + } + }; - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; - - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function (threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return relativeTimeThresholds[threshold]; - } - relativeTimeThresholds[threshold] = limit; - return true; - }; - - moment.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - function (key, value) { - return moment.locale(key, value); - } - ); + /** + * @module gestures + */ + /** + * User want to scale or rotate with 2 fingers + * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the + * `preventDefault` option. + * + * @class Transform + * @static + */ + /** + * @event transform + * @param {Object} ev + */ + /** + * @event transformstart + * @param {Object} ev + */ + /** + * @event transformend + * @param {Object} ev + */ + /** + * @event pinchin + * @param {Object} ev + */ + /** + * @event pinchout + * @param {Object} ev + */ + /** + * @event rotate + * @param {Object} ev + */ - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - moment.locale = function (key, values) { - var data; - if (key) { - if (typeof(values) !== 'undefined') { - data = moment.defineLocale(key, values); - } - else { - data = moment.localeData(key); - } + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - if (data) { - moment.duration._locale = moment._locale = data; - } - } + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - return moment._locale._abbr; - }; + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); - } - locales[name].set(values); + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); - // backwards compat for now: also set the locale - moment.locale(name); + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; + } - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - }; + // we are transforming! + Detection.current.name = name; - moment.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - function (key) { - return moment.localeData(key); - } - ); + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - // returns locale data - moment.localeData = function (key) { - var locale; + inst.trigger(name, ev); // basic transform event - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } - if (!key) { - return moment._locale; - } + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; } + } - return chooseLocale(key); - }; - - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && hasOwnProp(obj, '_isAMomentObject')); - }; - - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; + Hammer.gestures.Transform = { + name: name, + index: 45, + defaults: { + /** + * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 + * @property transformMinScale + * @type {Number} + * @default 0.01 + */ + transformMinScale: 0.01, - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); - } + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 + }, - moment.normalizeUnits = function (units) { - return normalizeUnits(units); + handler: transformGesture }; + })('transform'); - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; - } + /** + * @module hammer + */ - return m; - }; + // AMD export + if(true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + // commonjs export + } else if(typeof module !== 'undefined' && module.exports) { + module.exports = Hammer; + // browser export + } else { + window.Hammer = Hammer; + } - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + })(window); - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; +/***/ }, +/* 59 */ +/***/ function(module, exports, __webpack_require__) { - moment.isDate = isDate; + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js + //! version : 2.9.0 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com + (function (undefined) { /************************************ - Moment Prototype + Constants ************************************/ + var moment, + VERSION = '2.9.0', + // the global-scope this is NOT the global object in Node.js + globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, + oldGlobalMoment, + round = Math.round, + hasOwnProperty = Object.prototype.hasOwnProperty, + i, - extend(moment.fn = Moment.prototype, { - - clone : function () { - return moment(this); - }, - - valueOf : function () { - return +this._d - ((this._offset || 0) * 60000); - }, - - unix : function () { - return Math.floor(+this / 1000); - }, - - toString : function () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - }, - - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, - - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - }, - - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, - - isValid : function () { - return isValid(this); - }, - - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, - return false; - }, + // internal storage for locale config files + locales = {}, - parsingFlags : function () { - return extend({}, this._pf); - }, + // extra moment internal properties (plugins register props here) + momentProperties = [], - invalidAt: function () { - return this._pf.overflow; - }, + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module && module.exports), - utc : function (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - }, + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - local : function (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, - if (keepLocalTime) { - this.subtract(this._dateUtcOffset(), 'm'); - } - } - return this; - }, + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - add : createAdder(1, 'add'), + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - subtract : createAdder(-1, 'subtract'), + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, - anchor, diff, output, daysAdjust; + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - units = normalizeUnits(units); + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - diff = this - that; - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, + // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 }, - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're locat/utc/offset - // or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this, moment(now))); + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + Q : 'quarter', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' }, - isLeapYear : function () { - return isLeapYear(this.year()); + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' }, - isDST : function () { - return (this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset()); - }, + // format function strings + formatFunctions = {}, - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } + // default relative time thresholds + relativeTimeThresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year }, - month : makeAccessor('Month', true), + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), - startOf : function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.localeData().monthsShort(this, format); + }, + MMMM : function (format) { + return this.localeData().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.localeData().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.localeData().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.localeData().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); + }, + z : function () { + return this.zoneAbbr(); + }, + zz : function () { + return this.zoneName(); + }, + x : function () { + return this.valueOf(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); } + }, - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } + deprecations = {}, - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], - return this; - }, + updateInProgress = false; - endOf: function (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, + // Pick the first defined of two or three arguments. dfl comes from + // default. + function dfl(a, b, c) { + switch (arguments.length) { + case 2: return a != null ? a : b; + case 3: return a != null ? a : b != null ? b : c; + default: throw new Error('Implement me'); + } + } - isAfter: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this > +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return inputMs < +this.clone().startOf(units); - } - }, + function hasOwnProp(a, b) { + return hasOwnProperty.call(a, b); + } - isBefore: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this < +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return +this.clone().endOf(units) < inputMs; - } - }, + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; + } - isBetween: function (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); - }, + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } - isSame: function (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this === +input; - } else { - inputMs = +moment(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + printMsg(msg); + firstTime = false; } - }, - - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), + return fn.apply(this, arguments); + }, fn); + } - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; + } + } - zone : deprecate( - 'moment().zone is deprecated, use moment().utcOffset instead. ' + - 'https://github.com/moment/moment/issues/1779', - function (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.localeData().ordinal(func.call(this, a), period); + }; + } - this.utcOffset(input, keepLocalTime); + function monthDiff(a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; - return this; - } else { - return -this.utcOffset(); - } - } - ), + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - utcOffset : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = utcOffsetFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._dateUtcOffset(); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } - } + return -(wholeMonthDiff + adjust); + } - return this; - } else { - return this._isUTC ? offset : this._dateUtcOffset(); - } - }, + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - isLocal : function () { - return !this._isUTC; - }, - isUtcOffset : function () { - return this._isUTC; - }, + function meridiemFixWrap(locale, hour, meridiem) { + var isPm; - isUtc : function () { - return this._isUTC && this._offset === 0; - }, + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // thie is not supposed to happen + return hour; + } + } - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, + /************************************ + Constructors + ************************************/ - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, + function Locale() { + } - parseZone : function () { - if (this._tzm) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - this.utcOffset(utcOffsetFromString(this._i)); - } - return this; - }, + // Moment prototype object + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); + } + copyConfig(this, config); + this._d = new Date(+config._d); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + moment.updateOffset(this); + updateInProgress = false; + } + } - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).utcOffset(); - } + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; - return (this.utcOffset() - input) % 60 === 0; - }, + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + this._data = {}; - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - }, + this._locale = moment.localeData(); - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + this._bubble(); + } - weekYear : function (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - }, + /************************************ + Helpers + ************************************/ - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, - - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, + return a; + } - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, + function copyConfig(to, from) { + var i, prop, val; - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } - set : function (units, value) { - var unit; - if (typeof units === 'object') { - for (unit in units) { - this.set(unit, units[unit]); - } - } - else { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; } } - return this; - }, - - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - var newLocaleData; + } - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = moment.localeData(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - }, + return to; + } - lang : deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ), + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } - localeData : function () { - return this._locale; - }, + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; - _dateUtcOffset : function () { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(this._d.getTimezoneOffset() / 15) * 15; + while (output.length < targetLength) { + output = '0' + output; } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } - }); - - function rawMonthSetter(mom, value) { - var dayOfMonth; + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; } - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + return res; } - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); + function momentsDifference(base, other) { + var res; + other = makeAs(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; } + + return res; } - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; - } else { - return rawGetter(this, unit); + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; } + + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); + return this; }; } - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); - - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; - - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; - - // alias isUtc for dev-friendliness - moment.fn.isUTC = moment.fn.isUtc; + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; - /************************************ - Duration Prototype - ************************************/ + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); + } + if (months) { + rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + moment.updateOffset(mom, days || months); + } + } + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; } - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; } - extend(moment.duration.fn = Duration.prototype, { + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + return normalizedInput; + } - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + function makeList(field) { + var count, setter; - hours = absRound(minutes / 60); - data.hours = hours % 24; + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; + } - days += absRound(hours / 24); + moment[field] = function (format, index) { + var i, getter, + method = moment._locale[field], + results = []; - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); + if (typeof format === 'number') { + index = format; + format = undefined; + } - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment._locale, m, format || ''); + }; - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } + }; + } - data.days = days; - data.months = months; - data.years = years; - }, + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } + } - this._data.milliseconds = Math.abs(this._data.milliseconds); - this._data.seconds = Math.abs(this._data.seconds); - this._data.minutes = Math.abs(this._data.minutes); - this._data.hours = Math.abs(this._data.hours); - this._data.months = Math.abs(this._data.months); - this._data.years = Math.abs(this._data.years); + return value; + } - return this; - }, + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } - weeks : function () { - return absRound(this.days() / 7); - }, + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; + } - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 24 || + (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || + m._a[SECOND] !== 0 || + m._a[MILLISECOND] !== 0)) ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; } - return this.localeData().postformat(output); - }, + m._pf.overflow = overflow; + } + } - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0 && + m._pf.bigHour === undefined; + } + } + return m._isValid; + } - this._bubble(); + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } - return this; - }, + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; - subtract : function (input, val) { - var dur = moment.duration(input, val); + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } + } + return locales[name]; + } - this._bubble(); + // Return a moment from input, that is local/utc/utcOffset equivalent to + // model. + function makeAs(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (moment.isMoment(input) || isDate(input) ? + +input : +moment(input)) - (+res); + // Use low-level api, because this fn is low-level api. + res._d.setTime(+res._d + diff); + moment.updateOffset(res, false); + return res; + } else { + return moment(input).local(); + } + } - return this; - }, + /************************************ + Locale + ************************************/ - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, - as : function (units) { - var days, months; - units = normalizeUnits(units); + extend(Locale.prototype, { - if (units === 'month' || units === 'year') { - days = this._days + this._milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(yearsToDays(this._months / 12)); - switch (units) { - case 'week': return days / 7 + this._milliseconds / 6048e5; - case 'day': return days + this._milliseconds / 864e5; - case 'hour': return days * 24 + this._milliseconds / 36e5; - case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; - case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; - default: throw new Error('Unknown unit ' + units); + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; } } + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); }, - lang : moment.fn.lang, - locale : moment.fn.locale, + _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + months : function (m) { + return this._months[m.month()]; + }, - toIsoString : deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead ' + - '(notice the capitals)', - function () { - return this.toISOString(); - } - ), + _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, - toISOString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + monthsParse : function (monthName, format, strict) { + var i, mom, regex; - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; } - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = moment.utc([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } }, - localeData : function () { - return this._locale; + _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdays : function (m) { + return this._weekdays[m.day()]; }, - toJSON : function () { - return this.toISOString(); - } - }); - - moment.duration.fn.toString = moment.duration.fn.toISOString; - - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; - } - - for (i in unitMillisecondFactors) { - if (hasOwnProp(unitMillisecondFactors, i)) { - makeDurationGetter(i.toLowerCase()); - } - } - - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); - }; + _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, - /************************************ - Default Locale - ************************************/ + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, + weekdaysParse : function (weekdayName) { + var i, mom, regex; - // Set default locale, other locale will inherit from English. - moment.locale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } - /* EMBED_LOCALES */ + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + }, - /************************************ - Exposing Moment - ************************************/ + _longDateFormat : { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; + } + return output; + }, - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - 'Accessing Moment through the global scope is ' + - 'deprecated, and will be removed in an upcoming ' + - 'release.', - moment); - } else { - globalScope.moment = moment; - } - } + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; } + }, - return moment; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - makeGlobal(true); - } else { - makeGlobal(); - } - }).call(this); - - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) - -/***/ }, -/* 59 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 - * http://eightmedia.github.io/hammer.js - * - * Copyright (c) 2014 Jorik Tangelder ; - * Licensed under the MIT license */ + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom, now) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom, [now]) : output; + }, - (function(window, undefined) { - 'use strict'; + _relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, - /** - * @main - * @module hammer - * - * @class Hammer - * @static - */ + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, - /** - * Hammer, use this to create instances - * ```` - * var hammertime = new Hammer(myElement); - * ```` - * - * @method Hammer - * @param {HTMLElement} element - * @param {Object} [options={}] - * @return {Hammer.Instance} - */ - var Hammer = function Hammer(element, options) { - return new Hammer.Instance(element, options || {}); - }; + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, - /** - * version, as defined in package.json - * the value will be set at each build - * @property VERSION - * @final - * @type {String} - */ - Hammer.VERSION = '1.1.3'; + ordinal : function (number) { + return this._ordinal.replace('%d', number); + }, + _ordinal : '%d', + _ordinalParse : /\d{1,2}/, - /** - * default settings. - * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled - * by setting it's name (like `swipe`) to false. - * You can set the defaults for all instances by changing this object before creating an instance. - * @example - * ```` - * Hammer.defaults.drag = false; - * Hammer.defaults.behavior.touchAction = 'pan-y'; - * delete Hammer.defaults.behavior.userSelect; - * ```` - * @property defaults - * @type {Object} - */ - Hammer.defaults = { - /** - * this setting object adds styles and attributes to the element to prevent the browser from doing - * its native behavior. The css properties are auto prefixed for the browsers when needed. - * @property defaults.behavior - * @type {Object} - */ - behavior: { - /** - * Disables text selection to improve the dragging gesture. When the value is `none` it also sets - * `onselectstart=false` for IE on the element. Mainly for desktop browsers. - * @property defaults.behavior.userSelect - * @type {String} - * @default 'none' - */ - userSelect: 'none', + preparse : function (string) { + return string; + }, - /** - * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). - * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. - * @property defaults.behavior.touchAction - * @type {String} - * @default: 'pan-y' - */ - touchAction: 'pan-y', + postformat : function (string) { + return string; + }, - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @property defaults.behavior.touchCallout - * @type {String} - * @default 'none' - */ - touchCallout: 'none', + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, - /** - * Specifies that an entire element should be draggable instead of its contents. - * Mainly for desktop browsers. - * @property defaults.behavior.userDrag - * @type {String} - * @default 'none' - */ - userDrag: 'none', + firstDayOfWeek : function () { + return this._week.dow; + }, - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. - * - * If you don't specify an alpha value, Safari on iPhone applies a default alpha value - * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). - * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. - * @property defaults.behavior.tapHighlightColor - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: 'rgba(0,0,0,0)' - } - }; + firstDayOfYear : function () { + return this._week.doy; + }, - /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document - */ - Hammer.DOCUMENT = document; + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; + } + }); - /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} - */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + /************************************ + Formatting + ************************************/ - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} - */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); - /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} - */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } - /** - * detect if we want to support mouseevents at all - * @property NO_MOUSEEVENTS - * @type {Boolean} - */ - Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; - /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 - */ - Hammer.CALCULATE_INTERVAL = 25; + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } - /** - * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` - * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) - * @property EVENT_TYPES - * @private - * @writeOnce - * @type {Object} - */ - var EVENT_TYPES = {}; + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } - /** - * direction strings, for safe comparisons - * @property DIRECTION_DOWN|LEFT|UP|RIGHT - * @final - * @type {String} - * @default 'down' 'left' 'up' 'right' - */ - var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; - var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; - var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; - var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } - /** - * pointertype strings, for safe comparisons - * @property POINTER_MOUSE|TOUCH|PEN - * @final - * @type {String} - * @default 'mouse' 'touch' 'pen' - */ - var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; - var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; - var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; + format = expandFormat(format, m.localeData()); - /** - * eventtypes - * @property EVENT_START|MOVE|END|RELEASE|TOUCH - * @final - * @type {String} - * @default 'start' 'change' 'move' 'end' 'release' 'touch' - */ - var EVENT_START = Hammer.EVENT_START = 'start'; - var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; - var EVENT_END = Hammer.EVENT_END = 'end'; - var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; - var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } - /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false - */ - Hammer.READY = false; + return formatFunctions[format](m); + } - /** - * plugins namespace - * @property plugins - * @type {Object} - */ - Hammer.plugins = Hammer.plugins || {}; + function expandFormat(format, locale) { + var i = 5; - /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} - */ - Hammer.gestures = Hammer.gestures || {}; + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } - /** - * setup events to detect gestures on the document - * this function is called when creating an new instance - * @private - */ - function setup() { - if(Hammer.READY) { - return; + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; + } + + + /************************************ + Parsing + ************************************/ + + + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'Q': + return parseTokenOneDigit; + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { + return parseTokenOneDigit; + } + /* falls through */ + case 'SS': + if (strict) { + return parseTokenTwoDigits; + } + /* falls through */ + case 'SSS': + if (strict) { + return parseTokenThreeDigits; + } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return config._locale._meridiemParse; + case 'x': + return parseTokenOffsetMs; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + case 'Do': + return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); + return a; + } + } + + function utcOffsetFromString(string) { + string = string || ''; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); + + return parts[0] === '+' ? minutes : -minutes; + } + + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; + + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + case 'Do' : + if (input != null) { + datePartArray[DATE] = toInt(parseInt( + input.match(/\d{1,2}/)[0], 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); + } + + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = moment.parseTwoDigitYear(input); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._meridiem = input; + // config._isPm = config._locale.isPM(input); + break; + // HOUR + case 'h' : // fall through to hh + case 'hh' : + config._pf.bigHour = true; + /* falls through */ + case 'H' : // fall through to HH + case 'HH' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX OFFSET (MILLISECONDS) + case 'x': + config._d = new Date(toInt(input)); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = utcOffsetFromString(input); + break; + // WEEKDAY - human + case 'dd': + case 'ddd': + case 'dddd': + a = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (a != null) { + config._w = config._w || {}; + config._w['d'] = a; + } else { + config._pf.invalidWeekday = input; + } + break; + // WEEK, WEEK DAY - numeric + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gggg': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = toInt(input); + } + break; + case 'gg': + case 'GG': + config._w = config._w || {}; + config._w[token] = moment.parseTwoDigitYear(input); + } } - // find what eventtypes we add listeners to - Event.determineEventTypes(); + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); + week = dfl(w.W, 1); + weekday = dfl(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; - // Hammer is ready...! - Hammer.READY = true; - } + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); - /** - * @module hammer - * - * @class Utils - * @static - */ - var Utils = Hammer.utils = { - /** - * extend method, could also be used for cloning when `dest` is an empty object. - * changes the dest object - * @method extend - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge=false] do a merge - * @return {Object} dest - */ - extend: function extend(dest, src, merge) { - for(var key in src) { - if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { - continue; + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; } - dest[key] = src[key]; } - return dest; - }, + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - /** - * simple addEventListener wrapper - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - on: function on(element, type, handler) { - element.addEventListener(type, handler, false); - }, + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } - /** - * simple removeEventListener wrapper - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - off: function off(element, type, handler) { - element.removeEventListener(type, handler, false); - }, + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; - /** - * forEach over arrays and objects - * @method each - * @param {Object|Array} obj - * @param {Function} iterator - * @param {any} iterator.item - * @param {Number} iterator.index - * @param {Object|Array} iterator.obj the source object - * @param {Object} context value to use as `this` in the iterator - */ - each: function each(obj, iterator, context) { - var i, len; + if (config._d) { + return; + } - // native forEach on arrays - if('forEach' in obj) { - obj.forEach(iterator, context); - // arrays - } else if(obj.length !== undefined) { - for(i = 0, len = obj.length; i < len; i++) { - if(iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - // objects - } else { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; - } - } + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); } - }, - /** - * find if a string contains the string using indexOf - * @method inStr - * @param {String} src - * @param {String} find - * @return {Boolean} found - */ - inStr: function inStr(src, find) { - return src.indexOf(find) > -1; - }, + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - /** - * find if a array contains the object using indexOf or a simple polyfill - * @method inArray - * @param {String} src - * @param {String} find - * @return {Boolean|Number} false when not found, or the index - */ - inArray: function inArray(src, find) { - if(src.indexOf) { - var index = src.indexOf(find); - return (index === -1) ? false : index; - } else { - for(var i = 0, len = src.length; i < len; i++) { - if(src[i] === find) { - return i; - } + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; } - return false; + + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); } - }, - /** - * convert an array-like object (`arguments`, `touchlist`) to an array - * @method toArray - * @param {Object} obj - * @return {Array} - */ - toArray: function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - }, + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } - /** - * find if a node is in the given parent - * @method hasParent - * @param {HTMLElement} node - * @param {HTMLElement} parent - * @return {Boolean} found - */ - hasParent: function hasParent(node, parent) { - while(node) { - if(node == parent) { - return true; - } - node = node.parentNode; + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; } - return false; - }, - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } - // no need to loop when only one touch - if(touches.length === 1) { - return { - pageX: touches[0].pageX, - pageY: touches[0].pageY, - clientX: touches[0].clientX, - clientY: touches[0].clientY - }; + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); } - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); + if (config._nextDay) { + config._a[HOUR] = 24; + } + } - return { - pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, - pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, - clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, - clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 - }; - }, + function dateFromObject(config) { + var normalizedInput; - /** - * calculate the velocity between two points. unit is in px per ms. - * @method getVelocity - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - * @return {Object} velocity `x` and `y` - */ - getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { - return { - x: Math.abs(deltaX / deltaTime) || 0, - y: Math.abs(deltaY / deltaTime) || 0 - }; - }, + if (config._d) { + return; + } - /** - * calculate the angle between two coordinates - * @method getAngle - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {Number} angle - */ - getAngle: function getAngle(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day || normalizedInput.date, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; - return Math.atan2(y, x) * 180 / Math.PI; - }, + dateFromConfig(config); + } - /** - * do a small comparision to get the direction between two touches. - * @method getDirection - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` - */ - getDirection: function getDirection(touch1, touch2) { - var x = Math.abs(touch1.clientX - touch2.clientX), - y = Math.abs(touch1.clientY - touch2.clientY); + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + } - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + // date from string and format string + function makeDateFromStringAndFormat(config) { + if (config._f === moment.ISO_8601) { + parseISO(config); + return; } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + config._a = []; + config._pf.empty = true; - return Math.sqrt((x * x) + (y * y)); - }, + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; - /** - * calculate the scale factor between two touchLists - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @method getScale - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} scale - */ - getScale: function getScale(start, end) { - // need two fingers... - if(start.length >= 2 && end.length >= 2) { - return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; + } + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } } - return 1; - }, - /** - * calculate the rotation degrees between two touchLists - * @method getRotation - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} rotation - */ - getRotation: function getRotation(start, end) { - // need two fingers - if(start.length >= 2 && end.length >= 2) { - return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); } - return 0; - }, - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, + // clear _12h flag if hour is <= 12 + if (config._pf.bigHour === true && config._a[HOUR] <= 12) { + config._pf.bigHour = undefined; + } + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], + config._meridiem); + dateFromConfig(config); + checkOverflow(config); + } - /** - * set css properties with their prefixes - * @param {HTMLElement} element - * @param {String} prop - * @param {String} value - * @param {Boolean} [toggle=true] - * @return {Boolean} - */ - setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { - var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; - prop = Utils.toCamelCase(prop); + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } - for(var i = 0; i < prefixes.length; i++) { - var p = prop; - // prefixes - if(prefixes[i]) { - p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; } + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; + if (!isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; + + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; + + tempConfig._pf.score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; } } - }, - - /** - * toggle browser default behavior by setting css properties. - * `userSelect='none'` also sets `element.onselectstart` to false - * `userDrag='none'` also sets `element.ondragstart` to false - * - * @method toggleBehavior - * @param {HtmlElement} element - * @param {Object} props - * @param {Boolean} [toggle=true] - */ - toggleBehavior: function toggleBehavior(element, props, toggle) { - if(!props || !element || !element.style) { - return; - } - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); + extend(config, bestMoment || tempConfig); + } - var falseFn = toggle && function() { - return false; - }; + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(parseTokenTimezone)) { + config._f += 'Z'; + } + makeDateFromStringAndFormat(config); + } else { + config._isValid = false; } - }, + } - /** - * convert a string with underscores to camelCase - * so prevent_default becomes preventDefault - * @param {String} str - * @return {String} camelCaseStr - */ - toCamelCase: function toCamelCase(str) { - return str.replace(/[_-]([a-z])/g, function(s) { - return s[1].toUpperCase(); - }); + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); + } } - }; + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } - /** - * @module hammer - */ - /** - * @class Event - * @static - */ - var Event = Hammer.event = { - /** - * when touch events have been fired, this is true - * this is used to stop mouse events - * @property prevent_mouseevents - * @private - * @type {Boolean} - */ - preventMouseEvents: false, + function makeDateFromInput(config) { + var input = config._i, matched; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + dateFromConfig(config); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); + } + } - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } - /** - * simple event binder with a hook and support for multiple types - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - on: function on(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.on(element, type, handler); - hook && hook(type); - }); - }, + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } - /** - * simple event unbinder with a hook and support for multiple types - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - off: function off(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.off(element, type, handler); - hook && hook(type); - }); - }, + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } + } + } + return input; + } - /** - * the core touch event handler. - * this finds out if we should to detect gestures - * @method onTouch - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Function} handler - * @return onTouchHandler {Function} the core event handler - */ - onTouch: function onTouch(element, eventType, handler) { - var self = this; + /************************************ + Relative Time + ************************************/ - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; - // if we are in a mouseevent, but there has been a touchevent triggered in this session - // we want to do nothing. simply break out of the event. - if(isMouse && self.preventMouseEvents) { - return; + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } - // mousebutton must be down - } else if(isMouse && eventType == EVENT_START && ev.button === 0) { - self.preventMouseEvents = false; - self.shouldDetect = true; - } else if(isPointer && eventType == EVENT_START) { - self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); - // just a valid start event, but no mouse - } else if(!isMouse && eventType == EVENT_START) { - self.preventMouseEvents = true; - self.shouldDetect = true; - } + function relativeTime(posNegDuration, withoutSuffix, locale) { + var duration = moment.duration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + years = round(duration.as('y')), - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < relativeTimeThresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < relativeTimeThresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } + args[2] = withoutSuffix; + args[3] = +posNegDuration > 0; + args[4] = locale; + return substituteTimeAgo.apply({}, args); + } - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - if(triggerType == EVENT_END) { - self.preventMouseEvents = false; - self.shouldDetect = false; - PointerEvent.reset(); - // update the pointerevent object after the detection - } - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - }; + /************************************ + Week of Year + ************************************/ - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, - /** - * the core detection method - * this finds out what hammer-touch-events to trigger - * @method doDetect - * @param {Object} ev - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {HTMLElement} element - * @param {Function} handler - * @return {String} triggerType matches `EVENT_START|MOVE|END` - */ - doDetect: function doDetect(ev, eventType, element, handler) { - var touchList = this.getTouchList(ev, eventType); - var touchListLength = touchList.length; - var triggerType = eventType; - var triggerChange = touchList.trigger; // used by fakeMultitouch plugin - var changedLength = touchListLength; + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; - // at each touchstart-like event we want also want to trigger a TOUCH event... - if(eventType == EVENT_START) { - triggerChange = EVENT_TOUCH; - // ...the same for a touchend-like event - } else if(eventType == EVENT_END) { - triggerChange = EVENT_RELEASE; - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; } - // after there are still touches on the screen, - // we just want to trigger a MOVE event. so change the START or END to a MOVE - // but only after detection has been started, the first time we actualy want a START - if(changedLength > 0 && this.started) { - triggerType = EVENT_MOVE; + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; } - // detection has been started, we keep track of this, see above - this.started = true; + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - // trigger the triggerType event before the change (TOUCH, RELEASE) events - // but the END event should be at last - if(eventType != EVENT_END) { - handler.call(Detection, evData); - } + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; + } - handler.call(Detection, evData); + /************************************ + Top Level Functions + ************************************/ - evData.eventType = triggerType; - delete evData.changedLength; - } + function makeMoment(config) { + var input = config._i, + format = config._f, + res; - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); + config._locale = config._locale || moment.localeData(config._l); - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); } - return triggerType; - }, + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } - /** - * we have different events for each device/browser - * determine what we need and set them in the EVENT_TYPES constant - * the `onTouch` method is bind to these properties. - * @method determineEventTypes - * @return {Object} events - */ - determineEventTypes: function determineEventTypes() { - var types; - if(Hammer.HAS_POINTEREVENTS) { - if(window.PointerEvent) { - types = [ - 'pointerdown', - 'pointermove', - 'pointerup pointercancel lostpointercapture' - ]; + if (moment.isMoment(input)) { + return new Moment(input, true); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); } else { - types = [ - 'MSPointerDown', - 'MSPointerMove', - 'MSPointerUp MSPointerCancel MSLostPointerCapture' - ]; + makeDateFromStringAndFormat(config); } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; } else { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; + makeDateFromInput(config); } - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, + res = new Moment(config); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } - /** - * create touchList depending on the event - * @method getTouchList - * @param {Object} ev - * @param {String} eventType - * @return {Array} touches - */ - getTouchList: function getTouchList(ev, eventType) { - // get the fake pointerEvent touchlist - if(Hammer.HAS_POINTEREVENTS) { - return PointerEvent.getTouchList(); + return res; + } + + moment = function (input, format, locale, strict) { + var c; + + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = locale; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; - } + return makeMoment(c); + }; - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; + moment.suppressDeprecationWarnings = false; - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); - } - identifiers.push(touch.identifier); - }); + moment.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); - return touchList; + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return moment(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; + } } + return res; + } - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, + moment.min = function () { + var args = [].slice.call(arguments, 0); - /** - * collect basic event data - * @method collectEventData - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Array} touches - * @param {Object} ev - * @return {Object} ev - */ - collectEventData: function collectEventData(element, eventType, touches, ev) { - // find out pointerType - var pointerType = POINTER_TOUCH; - if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { - pointerType = POINTER_MOUSE; - } else if(PointerEvent.matchType(POINTER_PEN, ev)) { - pointerType = POINTER_PEN; - } + return pickBy('isBefore', args); + }; - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, + moment.max = function () { + var args = [].slice.call(arguments, 0); - /** - * prevent the browser default actions - * mostly used to disable scrolling of the browser - */ - preventDefault: function() { - var srcEvent = this.srcEvent; - srcEvent.preventManipulation && srcEvent.preventManipulation(); - srcEvent.preventDefault && srcEvent.preventDefault(); - }, + return pickBy('isAfter', args); + }; - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, + // creating with utc + moment.utc = function (input, format, locale, strict) { + var c; - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; - } - }; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); + return makeMoment(c).utc(); + }; - /** - * @module hammer - * - * @class PointerEvent - * @static - */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; - /** - * get the pointers as an array - * @method getTouchList - * @return {Array} touchlist - */ - getTouchList: function getTouchList() { - var touchlist = []; - // we can use forEach since pointerEvents only is in IE10 - Utils.each(this.pointers, function(pointer) { - touchlist.push(pointer); - }); - return touchlist; - }, + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso, + diffRes; - /** - * update the position of a pointer - * @method updatePointer - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Object} pointerEvent - */ - updatePointer: function updatePointer(eventType, pointerEvent) { - if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { - delete this.pointers[pointerEvent.pointerId]; - } else { - pointerEvent.identifier = pointerEvent.pointerId; - this.pointers[pointerEvent.pointerId] = pointerEvent; + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; } - }, - /** - * check if ev matches pointertype - * @method matchType - * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` - * @param {PointerEvent} ev - */ - matchType: function matchType(pointerType, ev) { - if(!ev.pointerType) { - return false; + ret = new Duration(duration); + + if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; } - var pt = ev.pointerType, - types = {}; + return ret; + }; - types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); - types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); - types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); - return types[pointerType]; - }, + // version number + moment.version = VERSION; - /** - * reset the stored pointers - * @method reset - */ - reset: function resetList() { - this.pointers = {}; - } - }; + // default format + moment.defaultFormat = isoFormat; + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; - /** - * @module hammer - * - * @class Detection - * @static - */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; - // data of the current Hammer.gesture detection session - current: null, + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function (threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return relativeTimeThresholds[threshold]; + } + relativeTimeThresholds[threshold] = limit; + return true; + }; - // when this becomes true, no gestures are fired - stopped: false, + moment.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + function (key, value) { + return moment.locale(key, value); + } + ); - /** - * start Hammer.gesture detection - * @method startDetect - * @param {Hammer.Instance} inst - * @param {Object} eventData - */ - startDetect: function startDetect(inst, eventData) { - // already busy with a Hammer.gesture detection on an element - if(this.current) { - return; + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + moment.locale = function (key, values) { + var data; + if (key) { + if (typeof(values) !== 'undefined') { + data = moment.defineLocale(key, values); + } + else { + data = moment.localeData(key); + } + + if (data) { + moment.duration._locale = moment._locale = data; + } } - this.stopped = false; + return moment._locale._abbr; + }; - // holds current session - this.current = { - inst: inst, // reference to HammerInstance we're working for - startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc - lastEvent: false, // last eventData - lastCalcEvent: false, // last eventData for calculations. - futureCalcEvent: false, // last eventData for calculations. - lastCalcData: {}, // last lastCalcData - name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc - }; + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); + } + locales[name].set(values); - this.detect(eventData); - }, + // backwards compat for now: also set the locale + moment.locale(name); - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; } + }; - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); + moment.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + function (key) { + return moment.localeData(key); + } + ); - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; + // returns locale data + moment.localeData = function (key) { + var locale; - // call Hammer.gesture handlers - Utils.each(this.gestures, function triggerGesture(gesture) { - // only when the instance options have enabled this gesture - if(!this.stopped && inst.enabled && instOptions[gesture.name]) { - gesture.handler.call(gesture, eventData, inst); - } - }, this); + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; + if (!key) { + return moment._locale; } - if(eventData.eventType == EVENT_END) { - this.stopDetect(); + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; } - return eventData; - }, + return chooseLocale(key); + }; - /** - * clear the Hammer.gesture vars - * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected - * to stop other Hammer.gestures from being fired - * @method stopDetect - */ - stopDetect: function stopDetect() { - // clone current data to the store as the previous gesture - // used for the double tap gesture, since this is an other gesture detect session - this.previous = Utils.extend({}, this.current); + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && hasOwnProp(obj, '_isAMomentObject')); + }; - // reset the current - this.current = null; - this.stopped = true; - }, + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; - /** - * calculate velocity, angle and direction - * @method getVelocityData - * @param {Object} ev - * @param {Object} center - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - */ - getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { - var cur = this.current, - recalc = false, - calcEv = cur.lastCalcEvent, - calcData = cur.lastCalcData; + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); + } - if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { - center = calcEv.center; - deltaTime = ev.timeStamp - calcEv.timeStamp; - deltaX = ev.center.clientX - calcEv.center.clientX; - deltaY = ev.center.clientY - calcEv.center.clientY; - recalc = true; - } + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); } - - if(!cur.lastCalcEvent || recalc) { - calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); - calcData.angle = Utils.getAngle(center, ev.center); - calcData.direction = Utils.getDirection(center, ev.center); - - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; + else { + m._pf.userInvalidated = true; } - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, - - /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev - */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; + return m; + }; - // update the start touchlist to calculate the scale/rotation - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - startEv.touches = []; - Utils.each(ev.touches, function(touch) { - startEv.touches.push({ - clientX: touch.clientX, - clientY: touch.clientY - }); - }); - } + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); + moment.isDate = isDate; - Utils.extend(ev, { - startEvent: startEv, + /************************************ + Moment Prototype + ************************************/ - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, - distance: Utils.getDistance(startEv.center, ev.center), - angle: Utils.getAngle(startEv.center, ev.center), - direction: Utils.getDirection(startEv.center, ev.center), - scale: Utils.getScale(startEv.touches, ev.touches), - rotation: Utils.getRotation(startEv.touches, ev.touches) - }); + extend(moment.fn = Moment.prototype, { - return ev; - }, + clone : function () { + return moment(this); + }, - /** - * register new gesture - * @method register - * @param {Object} gesture object, see `gestures/` for documentation - * @return {Array} gestures - */ - register: function register(gesture) { - // add an enable gesture options if there is no given - var options = gesture.defaults || {}; - if(options[gesture.name] === undefined) { - options[gesture.name] = true; - } + valueOf : function () { + return +this._d - ((this._offset || 0) * 60000); + }, - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); + unix : function () { + return Math.floor(+this / 1000); + }, - // set its index - gesture.index = gesture.index || 1000; + toString : function () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + }, - // add Hammer.gesture to the list - this.gestures.push(gesture); + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, - // sort the list by index - this.gestures.sort(function(a, b) { - if(a.index < b.index) { - return -1; - } - if(a.index > b.index) { - return 1; + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + if ('function' === typeof Date.prototype.toISOString) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); } - return 0; - }); + }, - return this.gestures; - } - }; + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, + isValid : function () { + return isValid(this); + }, - /** - * @module hammer - */ + isDSTShifted : function () { + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } - /** - * create new hammer instance - * all methods should return the instance itself, so it is chainable. - * - * @class Instance - * @constructor - * @param {HTMLElement} element - * @param {Object} [options={}] options are merged with `Hammer.defaults` - * @return {Hammer.Instance} - */ - Hammer.Instance = function(element, options) { - var self = this; + return false; + }, - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); + parsingFlags : function () { + return extend({}, this._pf); + }, - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; + invalidAt: function () { + return this._pf.overflow; + }, - /** - * @property enabled - * @type {Boolean} - * @protected - */ - this.enabled = true; + utc : function (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + }, - /** - * options, merged with the defaults - * options with an _ are converted to camelCase - * @property options - * @type {Object} - */ - Utils.each(options, function(value, name) { - delete options[name]; - options[Utils.toCamelCase(name)] = value; - }); + local : function (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + if (keepLocalTime) { + this.subtract(this._dateUtcOffset(), 'm'); + } + } + return this; + }, - // add some css to the element to prevent the browser from doing its native behavoir - if(this.options.behavior) { - Utils.toggleBehavior(this.element, this.options.behavior, true); - } + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.localeData().postformat(output); + }, - /** - * event start handler on the element to start the detection - * @property eventStartHandler - * @type {Object} - */ - this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { - if(self.enabled && ev.eventType == EVENT_START) { - Detection.startDetect(self, ev); - } else if(ev.eventType == EVENT_TOUCH) { - Detection.detect(ev); - } - }); + add : createAdder(1, 'add'), - /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} - */ - this.eventHandlers = []; - }; + subtract : createAdder(-1, 'subtract'), - Hammer.Instance.prototype = { - /** - * bind events to the instance - * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space - * @param {Function} handler - * @param {Object} handler.ev event object - */ - on: function onEvent(gestures, handler) { - var self = this; - Event.on(self.element, gestures, handler, function(type) { - self.eventHandlers.push({ gesture: type, handler: handler }); - }); - return self; - }, + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, + anchor, diff, output, daysAdjust; - /** - * unbind events to the instance - * @method off - * @chainable - * @param {String} gestures - * @param {Function} handler - */ - off: function offEvent(gestures, handler) { - var self = this; + units = normalizeUnits(units); - Event.off(self.element, gestures, handler, function(type) { - var index = Utils.inArray({ gesture: type, handler: handler }); - if(index !== false) { - self.eventHandlers.splice(index, 1); + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + diff = this - that; + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; } - }); - return self; - }, + return asFloat ? output : absRound(output); + }, - /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] - */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; - } + from : function (time, withoutSuffix) { + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + }, - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, + + calendar : function (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're locat/utc/offset + // or not. + var now = time || moment(), + sod = makeAs(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this, moment(now))); + }, + + isLeapYear : function () { + return isLeapYear(this.year()); + }, + + isDST : function () { + return (this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset()); + }, + + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + }, - // trigger on the target if it is in the instance element, - // this is for event delegation tricks - var element = this.element; - if(Utils.hasParent(eventData.target, element)) { - element = eventData.target; - } + month : makeAccessor('Month', true), - element.dispatchEvent(event); - return this; - }, + startOf : function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } - /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state - */ - enable: function enable(state) { - this.enabled = state; - return this; - }, + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } - /** - * dispose this hammer instance - * @method dispose - * @return {Null} - */ - dispose: function dispose() { - var i, eh; + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); + return this; + }, - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); - } + endOf: function (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + }, - this.eventHandlers = []; + isAfter: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this > +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return inputMs < +this.clone().startOf(units); + } + }, - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + isBefore: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this < +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return +this.clone().endOf(units) < inputMs; + } + }, - return null; - } - }; + isBetween: function (from, to, units) { + return this.isAfter(from, units) && this.isBefore(to, units); + }, + isSame: function (input, units) { + var inputMs; + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this === +input; + } else { + inputMs = +moment(input); + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + } + }, - /** - * @module gestures - */ - /** - * Move with x fingers (default 1) around on the page. - * Preventing the default browser behavior is a good way to improve feel and working. - * ```` - * hammertime.on("drag", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Drag - * @static - */ - /** - * @event drag - * @param {Object} ev - */ - /** - * @event dragstart - * @param {Object} ev - */ - /** - * @event dragend - * @param {Object} ev - */ - /** - * @event drapleft - * @param {Object} ev - */ - /** - * @event dragright - * @param {Object} ev - */ - /** - * @event dragup - * @param {Object} ev - */ - /** - * @event dragdown - * @param {Object} ev - */ + min: deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + max: deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; + } + ), - function dragGesture(ev, inst) { - var cur = Detection.current; + zone : deprecate( + 'moment().zone is deprecated, use moment().utcOffset instead. ' + + 'https://github.com/moment/moment/issues/1779', + function (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; - } + this.utcOffset(input, keepLocalTime); - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + return this; + } else { + return -this.utcOffset(); + } + } + ), - case EVENT_MOVE: - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.distance < inst.options.dragMinDistance && - cur.name != name) { - return; + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + utcOffset : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = utcOffsetFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._dateUtcOffset(); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } } - var startCenter = cur.startEvent.center; + return this; + } else { + return this._isUTC ? offset : this._dateUtcOffset(); + } + }, - // we are dragging! - if(cur.name != name) { - cur.name = name; - if(inst.options.dragDistanceCorrection && ev.distance > 0) { - // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. - // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. - // It might be useful to save the original start point somewhere - var factor = Math.abs(inst.options.dragMinDistance / ev.distance); - startCenter.pageX += ev.deltaX * factor; - startCenter.pageY += ev.deltaY * factor; - startCenter.clientX += ev.deltaX * factor; - startCenter.clientY += ev.deltaY * factor; + isLocal : function () { + return !this._isUTC; + }, - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } + isUtcOffset : function () { + return this._isUTC; + }, - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } + isUtc : function () { + return this._isUTC && this._offset === 0; + }, - // keep direction on the axis that the drag gesture started on - var lastDirection = cur.lastEvent.direction; - if(ev.dragLockToAxis && lastDirection !== ev.direction) { - if(Utils.isVertical(lastDirection)) { - ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; - } else { - ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - } + zoneAbbr : function () { + return this._isUTC ? 'UTC' : ''; + }, - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + zoneName : function () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + }, - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + parseZone : function () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(utcOffsetFromString(this._i)); + } + return this; + }, - var isVertical = Utils.isVertical(ev.direction); + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).utcOffset(); + } - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + return (this.utcOffset() - input) % 60 === 0; + }, - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, - case EVENT_END: - triggered = false; - break; - } - } + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + }, - Hammer.gestures.Drag = { - name: name, - index: 50, - handler: dragGesture, - defaults: { - /** - * minimal movement that have to be made before the drag event gets triggered - * @property dragMinDistance - * @type {Number} - * @default 10 - */ - dragMinDistance: 10, + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, - /** - * Set dragDistanceCorrection to true to make the starting point of the drag - * be calculated from where the drag was triggered, not from where the touch started. - * Useful to avoid a jerk-starting drag, which can make fine-adjustments - * through dragging difficult, and be visually unappealing. - * @property dragDistanceCorrection - * @type {Boolean} - * @default true - */ - dragDistanceCorrection: true, + weekYear : function (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + }, - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + }, - /** - * prevent default browser behavior when dragging occurs - * be careful with it, it makes the element a blocking element - * when you are using the drag gesture, it is a good practice to set this true - * @property dragBlockHorizontal - * @type {Boolean} - * @default false - */ - dragBlockHorizontal: false, + week : function (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - /** - * dragLockToAxis keeps the drag gesture on the axis that it started on, - * It disallows vertical directions if the initial direction was horizontal, and vice versa. - * @property dragLockToAxis - * @type {Boolean} - * @default false - */ - dragLockToAxis: false, + weekday : function (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + }, - /** - * drag lock only kicks in when distance > dragLockMinDistance - * This way, locking occurs only when the distance has become large enough to reliably determine the direction - * @property dragLockMinDistance - * @type {Number} - * @default 25 - */ - dragLockMinDistance: 25 - } - }; - })('drag'); + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + }, - /** - * @module gestures - */ - /** - * trigger a simple gesture event, so you can do anything in your handler. - * only usable if you know what your doing... - * - * @class Gesture - * @static - */ - /** - * @event gesture - * @param {Object} ev - */ - Hammer.gestures.Gesture = { - name: 'gesture', - index: 1337, - handler: function releaseGesture(ev, inst) { - inst.trigger(this.name, ev); - } - }; + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, - /** - * @module gestures - */ - /** - * Touch stays at the same place for x time - * - * @class Hold - * @static - */ - /** - * @event hold - * @param {Object} ev - */ + weeksInYear : function () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, + + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, + + set : function (units, value) { + var unit; + if (typeof units === 'object') { + for (unit in units) { + this.set(unit, units[unit]); + } + } + else { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + } + return this; + }, - /** - * @param {String} name - */ - (function(name) { - var timer; + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + locale : function (key) { + var newLocaleData; - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = moment.localeData(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + }, - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + lang : deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ), - // set the gesture so we can check in the timeout if it still is - current.name = name; + localeData : function () { + return this._locale; + }, - // set timer and if after the timeout it still is hold, - // we trigger the hold event - timer = setTimeout(function() { - if(current && current.name == name) { - inst.trigger(name, ev); - } - }, options.holdTimeout); - break; + _dateUtcOffset : function () { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(this._d.getTimezoneOffset() / 15) * 15; + } - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); - } - break; + }); - case EVENT_RELEASE: - clearTimeout(timer); - break; + function rawMonthSetter(mom, value) { + var dayOfMonth; + + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } } - } - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { - /** - * @property holdTimeout - * @type {Number} - * @default 500 - */ - holdTimeout: 500, + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } - /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 - */ - holdThreshold: 2 - }, - handler: holdGesture - }; - })('hold'); + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } - /** - * @module gestures - */ - /** - * when a touch is being released from the page - * - * @class Release - * @static - */ - /** - * @event release - * @param {Object} ev - */ - Hammer.gestures.Release = { - name: 'release', - index: Infinity, - handler: function releaseGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - inst.trigger(this.name, ev); + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); } } - }; - /** - * @module gestures - */ - /** - * triggers swipe events when the end velocity is above the threshold - * for best usage, set `preventDefault` (on the drag gesture) to `true` - * ```` - * hammertime.on("dragleft swipeleft", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Swipe - * @static - */ - /** - * @event swipe - * @param {Object} ev - */ - /** - * @event swipeleft - * @param {Object} ev - */ - /** - * @event swiperight - * @param {Object} ev - */ - /** - * @event swipeup - * @param {Object} ev - */ - /** - * @event swipedown - * @param {Object} ev - */ - Hammer.gestures.Swipe = { - name: 'swipe', - index: 40, - defaults: { - /** - * @property swipeMinTouches - * @type {Number} - * @default 1 - */ - swipeMinTouches: 1, + function makeAccessor(unit, keepTime) { + return function (value) { + if (value != null) { + rawSetter(this, unit, value); + moment.updateOffset(this, keepTime); + return this; + } else { + return rawGetter(this, unit); + } + }; + } - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, + moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); + moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); + moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); + // moment.fn.month is defined separately + moment.fn.date = makeAccessor('Date', true); + moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); + moment.fn.year = makeAccessor('FullYear', true); + moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + moment.fn.quarters = moment.fn.quarter; - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 - }, + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; + // alias isUtc for dev-friendliness + moment.fn.isUTC = moment.fn.isUtc; - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; - } + /************************************ + Duration Prototype + ************************************/ - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.velocityX > options.swipeVelocityX || - ev.velocityY > options.swipeVelocityY) { - // trigger swipe events - inst.trigger(this.name, ev); - inst.trigger(this.name + ev.direction, ev); - } - } + + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; } - }; - /** - * @module gestures - */ - /** - * Single tap and a double tap on a place - * - * @class Tap - * @static - */ - /** - * @event tap - * @param {Object} ev - */ - /** - * @event doubletap - * @param {Object} ev - */ + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; + } - /** - * @param {String} name - */ - (function(name) { - var hasMoved = false; + extend(moment.duration.fn = Duration.prototype, { - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years = 0; - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } + hours = absRound(minutes / 60); + data.hours = hours % 24; - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; - } - } + days += absRound(hours / 24); - Hammer.gestures.Tap = { - name: name, - index: 100, - handler: tapGesture, - defaults: { - /** - * max time of a tap, this is for the slow tappers - * @property tapMaxTime - * @type {Number} - * @default 250 - */ - tapMaxTime: 250, + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absRound(days / 30); + days %= 30; - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, + data.days = days; + data.months = months; + data.years = years; + }, - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 - } - }; - })('tap'); + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); - /** - * @module gestures - */ - /** - * when a touch is being touched at the page - * - * @class Touch - * @static - */ - /** - * @event touch - * @param {Object} ev - */ - Hammer.gestures.Touch = { - name: 'touch', - index: -Infinity, - defaults: { - /** - * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, - * but it improves gestures like transforming and dragging. - * be careful with using this, it can be very annoying for users to be stuck on the page - * @property preventDefault - * @type {Boolean} - * @default false - */ - preventDefault: false, + this._data.milliseconds = Math.abs(this._data.milliseconds); + this._data.seconds = Math.abs(this._data.seconds); + this._data.minutes = Math.abs(this._data.minutes); + this._data.hours = Math.abs(this._data.hours); + this._data.months = Math.abs(this._data.months); + this._data.years = Math.abs(this._data.years); - /** - * disable mouse events, so only touch (or pen!) input triggers events - * @property preventMouse - * @type {Boolean} - * @default false - */ - preventMouse: false - }, - handler: function touchGesture(ev, inst) { - if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { - ev.stopDetect(); - return; - } + return this; + }, - if(inst.options.preventDefault) { - ev.preventDefault(); - } + weeks : function () { + return absRound(this.days() / 7); + }, - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); - } - } - }; + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, - /** - * @module gestures - */ - /** - * User want to scale or rotate with 2 fingers - * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the - * `preventDefault` option. - * - * @class Transform - * @static - */ - /** - * @event transform - * @param {Object} ev - */ - /** - * @event transformstart - * @param {Object} ev - */ - /** - * @event transformend - * @param {Object} ev - */ - /** - * @event pinchin - * @param {Object} ev - */ - /** - * @event pinchout - * @param {Object} ev - */ - /** - * @event rotate - * @param {Object} ev - */ + humanize : function (withSuffix) { + var output = relativeTime(this, !withSuffix, this.localeData()); + + if (withSuffix) { + output = this.localeData().pastFuture(+this, output); + } + + return this.localeData().postformat(output); + }, + + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); + + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + this._bubble(); - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + return this; + }, - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } + subtract : function (input, val) { + var dur = moment.duration(input, val); - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(scaleThreshold < inst.options.transformMinScale && - rotationThreshold < inst.options.transformMinRotation) { - return; - } + this._bubble(); - // we are transforming! - Detection.current.name = name; + return this; + }, - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, - inst.trigger(name, ev); // basic transform event + as : function (units) { + var days, months; + units = normalizeUnits(units); - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); + if (units === 'month' || units === 'year') { + days = this._days + this._milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(yearsToDays(this._months / 12)); + switch (units) { + case 'week': return days / 7 + this._milliseconds / 6048e5; + case 'day': return days + this._milliseconds / 864e5; + case 'hour': return days * 24 + this._milliseconds / 36e5; + case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; + case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; + default: throw new Error('Unknown unit ' + units); } + } + }, - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + lang : moment.fn.lang, + locale : moment.fn.locale, - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; - } - } + toIsoString : deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead ' + + '(notice the capitals)', + function () { + return this.toISOString(); + } + ), - Hammer.gestures.Transform = { - name: name, - index: 45, - defaults: { - /** - * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 - * @property transformMinScale - * @type {Number} - * @default 0.01 - */ - transformMinScale: 0.01, + toISOString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); }, - handler: transformGesture + localeData : function () { + return this._locale; + }, + + toJSON : function () { + return this.toISOString(); + } + }); + + moment.duration.fn.toString = moment.duration.fn.toISOString; + + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; + } + + for (i in unitMillisecondFactors) { + if (hasOwnProp(unitMillisecondFactors, i)) { + makeDurationGetter(i.toLowerCase()); + } + } + + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); + }; + moment.duration.fn.asSeconds = function () { + return this.as('s'); + }; + moment.duration.fn.asMinutes = function () { + return this.as('m'); + }; + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; + moment.duration.fn.asMonths = function () { + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); }; - })('transform'); - /** - * @module hammer - */ + /************************************ + Default Locale + ************************************/ - // AMD export - if(true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - // commonjs export - } else if(typeof module !== 'undefined' && module.exports) { - module.exports = Hammer; - // browser export - } else { - window.Hammer = Hammer; - } - })(window); + // Set default locale, other locale will inherit from English. + moment.locale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + /* EMBED_LOCALES */ + + /************************************ + Exposing Moment + ************************************/ + + function makeGlobal(shouldDeprecate) { + /*global ender:false */ + if (typeof ender !== 'undefined') { + return; + } + oldGlobalMoment = globalScope.moment; + if (shouldDeprecate) { + globalScope.moment = deprecate( + 'Accessing Moment through the global scope is ' + + 'deprecated, and will be removed in an upcoming ' + + 'release.', + moment); + } else { + globalScope.moment = moment; + } + } + + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } else if (true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal === true) { + // release the global variable + globalScope.moment = oldGlobalMoment; + } + + return moment; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + makeGlobal(true); + } else { + makeGlobal(); + } + }).call(this); + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) /***/ }, /* 60 */ diff --git a/dist/vis.map b/dist/vis.map index 5f0c0c22..9e803a99 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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QF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,W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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","groupFromTarget","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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AWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAO3IrJ,EAAO0Q,UAAUsD,MAAQ,WACvBrX,KAAK40B,UACL50B,KAAK40B,OAAO5uB,OAAS,WAEnB,GAAIH,GAAI,CACR,KAAM,GAAInF,KAAKV,MACTA,KAAKmG,eAAezF,IACtBmF,GAGJ,OAAOA,KAWXxC,EAAO0Q,UAAU+B,IAAM,SAAUq0C,GAC/B,GAAI53C,GAAQvS,KAAK40B,OAAOu1B,EACxB,IAAatjD,QAAT0L,EACF,GAAIvS,KAAKqjD,oBAAqB,GAASrjD,KAAK69D,YAAY73D,OAAS,EAAG,CAElE,GAAI0C,GAAQ1I,KAAK89D,WAAa99D,KAAK69D,YAAY73D,MAC/ChG,MAAK89D,aACLvrD,KACAA,EAAMnH,MAAQpL,KAAK40B,OAAO50B,KAAK69D,YAAYn1D,IAC3C1I,KAAK40B,OAAOu1B,GAAa53C,MAEtB,CAEH,GAAI7J,GAAQ1I,KAAK49D,aAAev6D,EAAO06D,QAAQ/3D,MAC/ChG,MAAK49D,eACLrrD,KACAA,EAAMnH,MAAQ/H,EAAO06D,QAAQr1D,GAC7B1I,KAAK40B,OAAOu1B,GAAa53C,EAI7B,MAAOA,IAUTlP,EAAO0Q,UAAUF,IAAM,SAAUmqD,EAAWzwD,GAG1C,MAFAvN,MAAK40B,OAAOopC,GAAazwD,EACzBvN,KAAK69D,YAAYt1D,KAAKy1D,GACfzwD,GAGT1N,EAAOD,QAAUyD,GAKb,SAASxD,GAMb,QAASyD,KACPtD,KAAKwkD,UACLxkD,KAAKi+D,eACLj+D,KAAK6I,SAAWhC,OAQlBvD,EAAOyQ,UAAU0wC,kBAAoB,SAAS57C,GAC5C7I,KAAK6I,SAAWA,GASlBvF,EAAOyQ,UAAUmqD,KAAO,SAASC,EAAKC,GACpC,GAAIC,GAAMr+D,KAAKwkD,OAAO2Z,EACtB,IAAYt3D,SAARw3D,EAAmB,CAErB,GAAItpD,GAAK/U,IACTq+D,GAAM,GAAIC,OACVD,EAAIE,OAAS,WAEO,GAAdv+D,KAAKmT,QACPtB,SAASujB,KAAKrjB,YAAY/R,MAC1BA,KAAKmT,MAAQnT,KAAK6wB,YAClB7wB,KAAKoT,OAASpT,KAAK+wB,aACnBlf,SAASujB,KAAK3jB,YAAYzR,OAGxB+U,EAAGlM,WACLkM,EAAGyvC,OAAO2Z,GAAOE,EACjBtpD,EAAGlM,SAAS7I,QAIhBq+D,EAAIG,QAAU,WACM33D,SAAdu3D,GACF5kC,QAAQilC,MAAM,wBAAyBN,SAChCn+D,MAAKwnD,IACRzyC,EAAGlM,UACLkM,EAAGlM,SAAS7I,OAIV+U,EAAGkpD,YAAYE,MAAS,EACtBn+D,KAAKwnD,KAAO4W,GACd5kC,QAAQilC,MAAM,8BAA+BL,SACtCp+D,MAAKwnD,IACRzyC,EAAGlM,UACLkM,EAAGlM,SAAS7I,QAIdw5B,QAAQilC,MAAM,wBAAyBN,GACvCn+D,KAAKwnD,IAAM4W,IAIb5kC,QAAQilC,MAAM,wBAAyBN,GACvCn+D,KAAKwnD,IAAM4W,EACXrpD,EAAGkpD,YAAYE,IAAO,IAK5BE,EAAI7W,IAAM2W,EAGZ,MAAOE,IAGTx+D,EAAOD,QAAU0D,GAKb,SAASzD,EAAQD,EAASM,GA6B9B,QAASqD,GAAK4tD,EAAYuN,EAAWC,EAAW9H,GAC9C,GAAIvT,GAAY3iD,EAAK4N,uBAAuB,SAASsoD,EACrD72D,MAAK+O,QAAUu0C,EAAUnF,MAEzBn+C,KAAKylC,UAAW,EAChBzlC,KAAK6M,OAAQ,EAEb7M,KAAKs/C,SACLt/C,KAAK6xD,gBACL7xD,KAAK4+D,iBAGL5+D,KAAKK,GAAKwG,OACV7G,KAAKo1D,gBAAiB,EACtBp1D,KAAKq1D,gBAAiB,EACtBr1D,KAAKstD,QAAS,EACdttD,KAAKutD,QAAS,EACdvtD,KAAK6+D,qBAAsB,EAC3B7+D,KAAK8+D,kBAAsB,EAC3B9+D,KAAK++D,gBAAkBlI,EAAiB1Y,MAAMhyB,OAC9CnsB,KAAKg/D,aAAc,EACnBh/D,KAAKo/C,MAAQ,GACbp/C,KAAKi/D,kBAAmB,EACxBj/D,KAAKk/D,qBAAsB,EAC3Bl/D,KAAK+2D,iBAAmB9uD,IAAI,EAAGJ,KAAK,EAAGsL,MAAM,EAAGC,OAAO,EAAG4jD,MAAM,GAChEh3D,KAAKgoD,aAAe//C,IAAI,EAAGJ,KAAK,EAAGqgB,MAAM,EAAG/D,OAAO,GAEnDnkB,KAAK0+D,UAAYA,EACjB1+D,KAAK2+D,UAAYA,EAGjB3+D,KAAKm/D,GAAK,EACVn/D,KAAKo/D,GAAK,EACVp/D,KAAKq/D,GAAK,EACVr/D,KAAKs/D,GAAK,EACVt/D,KAAKqS,EAAI,KACTrS,KAAKsS,EAAI,KACTtS,KAAKuoD,oBAAqB,EAG1BvoD,KAAKu/D,eAAiBF,GAAG,EAAEC,GAAG,EAAEjtD,EAAE,EAAEC,EAAE,GAEtCtS,KAAKwgD,QAAUqW,EAAiB5W,QAAQO,QACxCxgD,KAAKkzD,WAAa7gD,EAAE,KAAKC,EAAE,MAE3BtS,KAAKkxD,cAAcC,EAAY7N,GAG/BtjD,KAAKw/D,eACLx/D,KAAKy/D,eAAiB,EACtBz/D,KAAK0/D,uBAA0B7I,EAAiBjW,WAAWa,YAAYtuC,MACvEnT,KAAK2/D,wBAA0B9I,EAAiBjW,WAAWa,YAAYruC,OACvEpT,KAAK4/D,wBAA0B/I,EAAiBjW,WAAWa,YAAYt1B,OACvEnsB,KAAK0hD,sBAA0BmV,EAAiBjW,WAAWc,sBAC3D1hD,KAAK6/D,gBAAkB,EAGvB7/D,KAAK05D,gBAAkB,EACvB15D,KAAK8/D,aAAe,EACpB9/D,KAAK4lD,eAAiBvzC,EAAK,KAAMC,EAAK,MACtCtS,KAAK6lD,mBAAqBxzC,EAAM,IAAKC,EAAM,KAC3CtS,KAAK60D,aAAe,KAxFtB,GAAIl0D,GAAOT,EAAoB,EA+F/BqD,GAAKwQ,UAAU6/C,eAAiB,WAC9B5zD,KAAKqS,EAAIrS,KAAKu/D,cAAcltD,EAC5BrS,KAAKsS,EAAItS,KAAKu/D,cAAcjtD,EAC5BtS,KAAKq/D,GAAKr/D,KAAKu/D,cAAcF,GAC7Br/D,KAAKs/D,GAAKt/D,KAAKu/D,cAAcD,IAO/B/7D,EAAKwQ,UAAUyrD,aAAe,WAE5Bx/D,KAAK+/D,eAAiBl5D,OACtB7G,KAAKggE,YAAc,EACnBhgE,KAAKigE,kBACLjgE,KAAKkgE,kBACLlgE,KAAKmgE,oBAOP58D,EAAKwQ,UAAUikD,WAAa,SAAShI,GACH,IAA5BhwD,KAAKs/C,MAAMt4C,QAAQgpD,IACrBhwD,KAAKs/C,MAAM/2C,KAAKynD,GAEqB,IAAnChwD,KAAK6xD,aAAa7qD,QAAQgpD,IAC5BhwD,KAAK6xD,aAAatpD,KAAKynD,IAQ3BzsD,EAAKwQ,UAAUkkD,WAAa,SAASjI,GACnC,GAAItnD,GAAQ1I,KAAKs/C,MAAMt4C,QAAQgpD,EAClB,KAATtnD,GACF1I,KAAKs/C,MAAM32C,OAAOD,EAAO,GAE3BA,EAAQ1I,KAAK6xD,aAAa7qD,QAAQgpD,GACrB,IAATtnD,GACF1I,KAAK6xD,aAAalpD,OAAOD,EAAO,IAUpCnF,EAAKwQ,UAAUm9C,cAAgB,SAASC,EAAY7N,GAClD,GAAK6N,EAAL,CAIA,GAAI3iD,IAAU,cAAc,sBAAsB,QAAQ,QAAQ,cAAc,SAAS,YACvF,WAAW,WAAW,WAAW,kBAAkB,kBAAkB,QAAQ,OAAO,oBACpF,qBAAqB,qBAAqB,wBAAwB,eAAgB,OAAQ,YAAa,WAkBzG,IAhBA7N,EAAK6F,oBAAoBgI,EAAQxO,KAAK+O,QAASoiD,GAGzBtqD,SAAlBsqD,EAAW9wD,KAA0BL,KAAKK,GAAK8wD,EAAW9wD,IACrCwG,SAArBsqD,EAAWt+C,QAA0B7S,KAAK6S,MAAQs+C,EAAWt+C,MAAO7S,KAAKogE,cAAgBjP,EAAWt+C,OAC/EhM,SAArBsqD,EAAW1qB,QAA0BzmC,KAAKymC,MAAQ0qB,EAAW1qB,OAC5C5/B,SAAjBsqD,EAAW9+C,IAA0BrS,KAAKqS,EAAI8+C,EAAW9+C,EAAGrS,KAAKuoD,oBAAqB,GACrE1hD,SAAjBsqD,EAAW7+C,IAA0BtS,KAAKsS,EAAI6+C,EAAW7+C,EAAGtS,KAAKuoD,oBAAqB,GACjE1hD,SAArBsqD,EAAW7sD,QAA0BtE,KAAKsE,MAAQ6sD,EAAW7sD,OACxCuC,SAArBsqD,EAAW/R,QAA0Bp/C,KAAKo/C,MAAQ+R,EAAW/R,MAAOp/C,KAAKi/D,kBAAmB,GAGzDp4D,SAAnCsqD,EAAW0N,sBAAoC7+D,KAAK6+D,oBAAsB1N,EAAW0N,qBAClDh4D,SAAnCsqD,EAAW2N,mBAAoC9+D,KAAK8+D,iBAAsB3N,EAAW2N,kBAClDj4D,SAAnCsqD,EAAWkP,kBAAoCrgE,KAAKqgE,gBAAsBlP,EAAWkP,iBAEzEx5D,SAAZ7G,KAAKK,GACP,KAAM,sBAIR,IAAgC,gBAArB8wD,GAAW5+C,OAAmD,gBAArB4+C,GAAW5+C,OAA0C,IAApB4+C,EAAW5+C,MAAc,CAC5G,GAAI+tD,GAAWtgE,KAAK2+D,UAAU7oD,IAAIq7C,EAAW5+C,MAC7C5R,GAAKmG,WAAW9G,KAAK+O,QAASuxD,GAE9BtgE,KAAK+O,QAAQ3D,MAAQzK,EAAKkL,WAAW7L,KAAK+O,QAAQ3D,OAMpD,GAH0BvE,SAAtBsqD,EAAWhlC,SAA+BnsB,KAAK++D,gBAAkB/+D,KAAK+O,QAAQod,QACzDtlB,SAArBsqD,EAAW/lD,QAA+BpL,KAAK+O,QAAQ3D,MAAQzK,EAAKkL,WAAWslD,EAAW/lD,QAEnEvE,SAAvB7G,KAAK+O,QAAQyvC,OAA4C,IAArBx+C,KAAK+O,QAAQyvC,MAAY,CAC/D,IAAIx+C,KAAK0+D,UAIP,KAAM,uBAHN1+D,MAAKugE,SAAWvgE,KAAK0+D,UAAUR,KAAKl+D,KAAK+O,QAAQyvC,MAAOx+C,KAAK+O,QAAQyxD,aAgCzE,OAzBkC35D,SAA9BsqD,EAAWiE,gBACbp1D,KAAKstD,QAAU6D,EAAWiE,eAC1Bp1D,KAAKo1D,eAAiBjE,EAAWiE,gBAETvuD,SAAjBsqD,EAAW9+C,GAA0C,GAAvBrS,KAAKo1D,iBAC1Cp1D,KAAKstD,QAAS,GAIkBzmD,SAA9BsqD,EAAWkE,gBACbr1D,KAAKutD,QAAU4D,EAAWkE,eAC1Br1D,KAAKq1D,eAAiBlE,EAAWkE,gBAETxuD,SAAjBsqD,EAAW7+C,GAA0C,GAAvBtS,KAAKq1D,iBAC1Cr1D,KAAKutD,QAAS,GAGhBvtD,KAAKg/D,YAAch/D,KAAKg/D,aAAsCn4D,SAAtBsqD,EAAWhlC,QAExB,UAAvBnsB,KAAK+O,QAAQwvC,OAA4C,kBAAvBv+C,KAAK+O,QAAQwvC,SACjDv+C,KAAK+O,QAAQsvC,UAAYiF,EAAUnF,MAAMp2B,SACzC/nB,KAAK+O,QAAQuvC,UAAYgF,EAAUnF,MAAMn2B,UAInChoB,KAAK+O,QAAQwvC,OACnB,IAAK,WAAiBv+C,KAAK+vC,KAAO/vC,KAAKygE,cAAezgE,KAAKu5D,OAASv5D,KAAK0gE,eAAiB,MAC1F,KAAK,MAAiB1gE,KAAK+vC,KAAO/vC,KAAK2gE,SAAU3gE,KAAKu5D,OAASv5D,KAAK4gE,UAAY,MAChF,KAAK,SAAiB5gE,KAAK+vC,KAAO/vC,KAAK6gE,YAAa7gE,KAAKu5D,OAASv5D,KAAK8gE,aAAe,MACtF,KAAK,UAAiB9gE,KAAK+vC,KAAO/vC,KAAK+gE,aAAc/gE,KAAKu5D,OAASv5D,KAAKghE,cAAgB,MAExF,KAAK,QAAiBhhE,KAAK+vC,KAAO/vC,KAAKihE,WAAYjhE,KAAKu5D,OAASv5D,KAAKkhE,YAAc,MACpF,KAAK,gBAAiBlhE,KAAK+vC,KAAO/vC,KAAKmhE,mBAAoBnhE,KAAKu5D,OAASv5D,KAAKohE,oBAAsB;KACpG,KAAK,OAAiBphE,KAAK+vC,KAAO/vC,KAAKqhE,UAAWrhE,KAAKu5D,OAASv5D,KAAKshE,WAAa,MAClF,KAAK,MAAiBthE,KAAK+vC,KAAO/vC,KAAKuhE,SAAUvhE,KAAKu5D,OAASv5D,KAAKwhE,YAAc,MAClF,KAAK,SAAiBxhE,KAAK+vC,KAAO/vC,KAAKyhE,YAAazhE,KAAKu5D,OAASv5D,KAAKwhE,YAAc,MACrF,KAAK,WAAiBxhE,KAAK+vC,KAAO/vC,KAAK0hE,cAAe1hE,KAAKu5D,OAASv5D,KAAKwhE,YAAc,MACvF,KAAK,eAAiBxhE,KAAK+vC,KAAO/vC,KAAK2hE,kBAAmB3hE,KAAKu5D,OAASv5D,KAAKwhE,YAAc,MAC3F,KAAK,OAAiBxhE,KAAK+vC,KAAO/vC,KAAK4hE,UAAW5hE,KAAKu5D,OAASv5D,KAAKwhE,YAAc,MACnF,KAAK,OAAiBxhE,KAAK+vC,KAAO/vC,KAAK6hE,UAAW7hE,KAAKu5D,OAASv5D,KAAK8hE,WAAa,MAClF,SAAsB9hE,KAAK+vC,KAAO/vC,KAAK+gE,aAAc/gE,KAAKu5D,OAASv5D,KAAKghE,eAG1EhhE,KAAK+hE,WAOPx+D,EAAKwQ,UAAU8xB,OAAS,WACtB7lC,KAAKylC,UAAW,EAChBzlC,KAAK+hE,UAMPx+D,EAAKwQ,UAAU+xB,SAAW,WACxB9lC,KAAKylC,UAAW,EAChBzlC,KAAK+hE,UAOPx+D,EAAKwQ,UAAUiuD,eAAiB,WAC9BhiE,KAAK+hE,UAOPx+D,EAAKwQ,UAAUguD,OAAS,WACtB/hE,KAAKmT,MAAQtM,OACb7G,KAAKoT,OAASvM,QAQhBtD,EAAKwQ,UAAU+7C,SAAW,WACxB,MAA6B,kBAAf9vD,MAAKymC,MAAuBzmC,KAAKymC,QAAUzmC,KAAKymC,OAShEljC,EAAKwQ,UAAUwnD,iBAAmB,SAAU3zC,EAAKipC,GAC/C,GAAIhwC,GAAc,CAMlB,QAJK7gB,KAAKmT,OACRnT,KAAKu5D,OAAO3xC,GAGN5nB,KAAK+O,QAAQwvC,OACnB,IAAK,SACL,IAAK,MACH,MAAOv+C,MAAK+O,QAAQod,OAAQtL,CAE9B,KAAK,UACH,GAAIjb,GAAI5F,KAAKmT,MAAQ,EACjB1M,EAAIzG,KAAKoT,OAAS,EAClB6+C,EAAKztD,KAAKya,IAAI4xC,GAASjrD,EACvBuG,EAAK3H,KAAK4a,IAAIyxC,GAASpqD,CAC3B,OAAOb,GAAIa,EAAIjC,KAAK6rB,KAAK4hC,EAAIA,EAAI9lD,EAAIA,EAMvC,KAAK,MACL,IAAK,QACL,IAAK,OACL,QACE,MAAInM,MAAKmT,MACA3O,KAAKL,IACRK,KAAK+mB,IAAIvrB,KAAKmT,MAAQ,EAAI3O,KAAK4a,IAAIyxC,IACnCrsD,KAAK+mB,IAAIvrB,KAAKoT,OAAS,EAAI5O,KAAKya,IAAI4xC,KAAWhwC,EAI5C,IAYftd,EAAKwQ,UAAUkuD,UAAY,SAAS9C,EAAIC,GACtCp/D,KAAKm/D,GAAKA,EACVn/D,KAAKo/D,GAAKA,GASZ77D,EAAKwQ,UAAUmuD,UAAY,SAAS/C,EAAIC,GACtCp/D,KAAKm/D,IAAMA,EACXn/D,KAAKo/D,IAAMA,GAMb77D,EAAKwQ,UAAUouD,WAAa,WAC1BniE,KAAKu/D,cAAcltD,EAAIrS,KAAKqS,EAC5BrS,KAAKu/D,cAAcjtD,EAAItS,KAAKsS,EAC5BtS,KAAKu/D,cAAcF,GAAKr/D,KAAKq/D,GAC7Br/D,KAAKu/D,cAAcD,GAAKt/D,KAAKs/D,IAO/B/7D,EAAKwQ,UAAU0/C,aAAe,SAASxgC,GAErC,GADAjzB,KAAKmiE,aACAniE,KAAKstD,OAORttD,KAAKm/D,GAAK,EACVn/D,KAAKq/D,GAAK,MARM,CAChB,GAAI5/C,GAAOzf,KAAKwgD,QAAUxgD,KAAKq/D,GAC3B5gD,GAAQze,KAAKm/D,GAAK1/C,GAAMzf,KAAK+O,QAAQqvC,IACzCp+C,MAAKq/D,IAAM5gD,EAAKwU,EAChBjzB,KAAKqS,GAAMrS,KAAKq/D,GAAKpsC,EAOvB,GAAKjzB,KAAKutD,OAORvtD,KAAKo/D,GAAK,EACVp/D,KAAKs/D,GAAK,MARM,CAChB,GAAI5/C,GAAO1f,KAAKwgD,QAAUxgD,KAAKs/D,GAC3B5gD,GAAQ1e,KAAKo/D,GAAK1/C,GAAM1f,KAAK+O,QAAQqvC,IACzCp+C,MAAKs/D,IAAM5gD,EAAKuU,EAChBjzB,KAAKsS,GAAMtS,KAAKs/D,GAAKrsC,IAezB1vB,EAAKwQ,UAAUy/C,oBAAsB,SAASvgC,EAAU2vB,GAEtD,GADA5iD,KAAKmiE,aACAniE,KAAKstD,OAQRttD,KAAKm/D,GAAK,EACVn/D,KAAKq/D,GAAK,MATM,CAChB,GAAI5/C,GAAOzf,KAAKwgD,QAAUxgD,KAAKq/D,GAC3B5gD,GAAQze,KAAKm/D,GAAK1/C,GAAMzf,KAAK+O,QAAQqvC,IACzCp+C,MAAKq/D,IAAM5gD,EAAKwU,EAChBjzB,KAAKq/D,GAAM76D,KAAK+mB,IAAIvrB,KAAKq/D,IAAMzc,EAAiB5iD,KAAKq/D,GAAK,EAAKzc,GAAeA,EAAe5iD,KAAKq/D,GAClGr/D,KAAKqS,GAAMrS,KAAKq/D,GAAKpsC,EAOvB,GAAKjzB,KAAKutD,OAQRvtD,KAAKo/D,GAAK,EACVp/D,KAAKs/D,GAAK,MATM,CAChB,GAAI5/C,GAAO1f,KAAKwgD,QAAUxgD,KAAKs/D,GAC3B5gD,GAAQ1e,KAAKo/D,GAAK1/C,GAAM1f,KAAK+O,QAAQqvC,IACzCp+C,MAAKs/D,IAAM5gD,EAAKuU,EAChBjzB,KAAKs/D,GAAM96D,KAAK+mB,IAAIvrB,KAAKs/D,IAAM1c,EAAiB5iD,KAAKs/D,GAAK,EAAK1c,GAAeA,EAAe5iD,KAAKs/D,GAClGt/D,KAAKsS,GAAMtS,KAAKs/D,GAAKrsC,IAYzB1vB,EAAKwQ,UAAUquD,QAAU,WACvB,MAAQpiE,MAAKstD,QAAUttD,KAAKutD,QAQ9BhqD,EAAKwQ,UAAUs/C,SAAW,SAASD,GACjC,GAAIiP,GAAW79D,KAAK6rB,KAAK7rB,KAAK+vB,IAAIv0B,KAAKq/D,GAAG,GAAK76D,KAAK+vB,IAAIv0B,KAAKs/D,GAAG,GAEhE,OAAQ+C,GAAWjP,GAOrB7vD,EAAKwQ,UAAUk5C,WAAa,WAC1B,MAAOjtD,MAAKylC,UAOdliC,EAAKwQ,UAAUyB,SAAW,WACxB,MAAOxV,MAAKsE,OASdf,EAAKwQ,UAAUuuD,YAAc,SAASjwD,EAAGC,GACvC,GAAImN,GAAKzf,KAAKqS,EAAIA,EACdqN,EAAK1f,KAAKsS,EAAIA,CAClB,OAAO9N,MAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,IAUlCnc,EAAKwQ,UAAUg+C,cAAgB,SAAS5tD,EAAKC,EAAKC,GAChD,IAAKrE,KAAKg/D,aAA8Bn4D,SAAf7G,KAAKsE,MAAqB,CACjD,GAAIC,GAAQvE,KAAK+O,QAAQmvC,sBAAsB/5C,EAAKC,EAAKC,EAAOrE,KAAKsE,OACjEi+D,EAAaviE,KAAK+O,QAAQuvC,UAAYt+C,KAAK+O,QAAQsvC,SACvD,IAAuC,GAAnCr+C,KAAK+O,QAAQiwC,mBAA4B,CAC3C,GAAIwjB,GAAWxiE,KAAK+O,QAAQmwC,YAAcl/C,KAAK+O,QAAQkwC,WACvDj/C,MAAK+O,QAAQ2vC,SAAW1+C,KAAK+O,QAAQkwC,YAAc16C,EAAQi+D,EAE7DxiE,KAAK+O,QAAQod,OAASnsB,KAAK+O,QAAQsvC,UAAY95C,EAAQg+D,EAGzDviE,KAAK++D,gBAAkB/+D,KAAK+O,QAAQod,QAQtC5oB,EAAKwQ,UAAUg8B,KAAO,WACpB,KAAM,wCAQRxsC,EAAKwQ,UAAUwlD,OAAS,WACtB,KAAM,0CAQRh2D,EAAKwQ,UAAU87C,kBAAoB,SAASjsC,GAC1C,MAAQ5jB,MAAK6H,KAAoB+b,EAAIsE,OAC7BloB,KAAK6H,KAAO7H,KAAKmT,MAAQyQ,EAAI/b,MAC7B7H,KAAKiI,IAAoB2b,EAAIO,QAC7BnkB,KAAKiI,IAAMjI,KAAKoT,OAASwQ,EAAI3b,KAGvC1E,EAAKwQ,UAAUmtD,aAAe,WAG5B,IAAKlhE,KAAKmT,QAAUnT,KAAKoT,OAAQ,CAC/B,GAAID,GAAOC,CACX,IAAIpT,KAAKsE,MAAO,CACdtE,KAAK+O,QAAQod,OAAQnsB,KAAK++D,eAC1B,IAAIx6D,GAAQvE,KAAKugE,SAASntD,OAASpT,KAAKugE,SAASptD,KACnCtM,UAAVtC,GACF4O,EAAQnT,KAAK+O,QAAQod,QAASnsB,KAAKugE,SAASptD,MAC5CC,EAASpT,KAAK+O,QAAQod,OAAQ5nB,GAASvE,KAAKugE,SAASntD,SAGrDD,EAAQ,EACRC,EAAS,OAIXD,GAAQnT,KAAKugE,SAASptD,MACtBC,EAASpT,KAAKugE,SAASntD,MAEzBpT,MAAKmT,MAASA,EACdnT,KAAKoT,OAASA,EAEdpT,KAAK6/D,gBAAkB,EACnB7/D,KAAKmT,MAAQ,GAAKnT,KAAKoT,OAAS,IAClCpT,KAAKmT,OAAU3O,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAA0B1hD,KAAK0/D,uBAClF1/D,KAAKoT,QAAU5O,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK2/D,wBACjF3/D,KAAK+O,QAAQod,QAAS3nB,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK4/D,wBACxF5/D,KAAK6/D,gBAAkB7/D,KAAKmT,MAAQA,KAK1C5P,EAAKwQ,UAAU0uD,qBAAuB,SAAU76C,GAC9C,GAA2B,GAAvB5nB,KAAKugE,SAASptD,MAAa,CAE7B,GAAInT,KAAKggE,YAAc,EAAG,CACxB,GAAI73C,GAAcnoB,KAAKggE,YAAc,EAAK,GAAK,CAC/C73C,IAAanoB,KAAK05D,gBAClBvxC,EAAY3jB,KAAKL,IAAI,GAAMnE,KAAKmT,MAAMgV,GAEtCP,EAAI86C,YAAc,GAClB96C,EAAI+6C,UAAU3iE,KAAKugE,SAAUvgE,KAAK6H,KAAOsgB,EAAWnoB,KAAKiI,IAAMkgB,EAAWnoB,KAAKmT,MAAQ,EAAEgV,EAAWnoB,KAAKoT,OAAS,EAAE+U,GAItHP,EAAI86C,YAAc,EAClB96C,EAAI+6C,UAAU3iE,KAAKugE,SAAUvgE,KAAK6H,KAAM7H,KAAKiI,IAAKjI,KAAKmT,MAAOnT,KAAKoT,UAIvE7P,EAAKwQ,UAAU6uD,gBAAkB,SAAUh7C,GACzC,GAAIhN,GACA2P,EAAS,CAEb,IAAIvqB,KAAKoT,OAAO,CACdmX,EAASvqB,KAAKoT,OAAS,CACvB,IAAI2jD,GAAkB/2D,KAAK6iE,YAAYj7C,EAEnCmvC,GAAgBoD,WAAa,IAC/B5vC,GAAUwsC,EAAgB3jD,OAAS,EACnCmX,GAAU,GAId3P,EAAS5a,KAAKsS,EAAIiY,EAElBvqB,KAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGuI,EAAQ/T,SAG/CtD,EAAKwQ,UAAUktD,WAAa,SAAUr5C,GACpC5nB,KAAKkhE,aAAat5C,GAClB5nB,KAAK6H,KAAS7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EACpCnT,KAAKiI,IAASjI,KAAKsS,EAAItS,KAAKoT,OAAS,EAErCpT,KAAKyiE,qBAAqB76C,GAE1B5nB,KAAKgoD,YAAY//C,IAAMjI,KAAKiI,IAC5BjI,KAAKgoD,YAAYngD,KAAO7H,KAAK6H,KAC7B7H,KAAKgoD,YAAY9/B,MAAQloB,KAAK6H,KAAO7H,KAAKmT,MAC1CnT,KAAKgoD,YAAY7jC,OAASnkB,KAAKiI,IAAMjI,KAAKoT,OAE1CpT,KAAK4iE,gBAAgBh7C,GACrB5nB,KAAKgoD,YAAYngD,KAAOrD,KAAKL,IAAInE,KAAKgoD,YAAYngD,KAAM7H,KAAK+2D,gBAAgBlvD,MAC7E7H,KAAKgoD,YAAY9/B,MAAQ1jB,KAAKJ,IAAIpE,KAAKgoD,YAAY9/B,MAAOloB,KAAK+2D,gBAAgBlvD,KAAO7H,KAAK+2D,gBAAgB5jD,OAC3GnT,KAAKgoD,YAAY7jC,OAAS3f,KAAKJ,IAAIpE,KAAKgoD,YAAY7jC,OAAQnkB,KAAKgoD,YAAY7jC,OAASnkB,KAAK+2D,gBAAgB3jD,SAG7G7P,EAAKwQ,UAAUqtD,qBAAuB,SAAUx5C,GAC9C,GAAI5nB,KAAKugE,SAAS/Y,KAAQxnD,KAAKugE,SAASptD,OAAUnT,KAAKugE,SAASntD,OAe1DpT,KAAK8iE,oCACP9iE,KAAKmT,MAAQ,EACbnT,KAAKoT,OAAS,QACPpT,MAAK8iE,mCAEd9iE,KAAKkhE,aAAat5C,OAnBlB,KAAK5nB,KAAKmT,MAAO,CACf,GAAI4vD,GAAiC,EAAtB/iE,KAAK+O,QAAQod,MAC5BnsB,MAAKmT,MAAQ4vD,EACb/iE,KAAKoT,OAAS2vD,EAKd/iE,KAAK+O,QAAQod,QAAuE,GAA7D3nB,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAA+B1hD,KAAK4/D,wBAC/F5/D,KAAK6/D,gBAAkB7/D,KAAK+O,QAAQod,OAAQ,GAAI42C,EAChD/iE,KAAK8iE,mCAAoC,IAc/Cv/D,EAAKwQ,UAAUotD,mBAAqB,SAAUv5C,GAC5C5nB,KAAKohE,qBAAqBx5C,GAE1B5nB,KAAK6H,KAAS7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EACpCnT,KAAKiI,IAASjI,KAAKsS,EAAItS,KAAKoT,OAAS,CAErC,IAAI4vD,GAAUhjE,KAAK6H,KAAQ7H,KAAKmT,MAAQ,EACpC8vD,EAAUjjE,KAAKiI,IAAOjI,KAAKoT,OAAS,EACpC+Y,EAAS3nB,KAAK+mB,IAAIvrB,KAAKoT,OAAS,EAEpCpT,MAAKkjE,eAAet7C,EAAKo7C,EAASC,EAAS92C,GAE3CvE,EAAIsqC,OACJtqC,EAAIu7C,OAAOnjE,KAAKqS,EAAGrS,KAAKsS,EAAG6Z,GAC3BvE,EAAIlH,SACJkH,EAAIw7C,OAEJpjE,KAAKyiE,qBAAqB76C,GAE1BA,EAAIyqC,UAEJryD,KAAKgoD,YAAY//C,IAAMjI,KAAKsS,EAAItS,KAAK+O,QAAQod,OAC7CnsB,KAAKgoD,YAAYngD,KAAO7H,KAAKqS,EAAIrS,KAAK+O,QAAQod,OAC9CnsB,KAAKgoD,YAAY9/B,MAAQloB,KAAKqS,EAAIrS,KAAK+O,QAAQod,OAC/CnsB,KAAKgoD,YAAY7jC,OAASnkB,KAAKsS,EAAItS,KAAK+O,QAAQod,OAEhDnsB,KAAK4iE,gBAAgBh7C,GAErB5nB,KAAKgoD,YAAYngD,KAAOrD,KAAKL,IAAInE,KAAKgoD,YAAYngD,KAAM7H,KAAK+2D,gBAAgBlvD,MAC7E7H,KAAKgoD,YAAY9/B,MAAQ1jB,KAAKJ,IAAIpE,KAAKgoD,YAAY9/B,MAAOloB,KAAK+2D,gBAAgBlvD,KAAO7H,KAAK+2D,gBAAgB5jD,OAC3GnT,KAAKgoD,YAAY7jC,OAAS3f,KAAKJ,IAAIpE,KAAKgoD,YAAY7jC,OAAQnkB,KAAKgoD,YAAY7jC,OAASnkB,KAAK+2D,gBAAgB3jD,SAG7G7P,EAAKwQ,UAAU6sD,WAAa,SAAUh5C,GACpC,IAAK5nB,KAAKmT,MAAO,CACf,GAAIqH,GAAS,EACT6oD,EAAWrjE,KAAK6iE,YAAYj7C,EAChC5nB,MAAKmT,MAAQkwD,EAASlwD,MAAQ,EAAIqH,EAClCxa,KAAKoT,OAASiwD,EAASjwD,OAAS,EAAIoH,EAEpCxa,KAAKmT,OAAuE,GAA7D3O,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAA+B1hD,KAAK0/D,uBACvF1/D,KAAKoT,QAAuE,GAA7D5O,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAA+B1hD,KAAK2/D,wBACvF3/D,KAAK6/D,gBAAkB7/D,KAAKmT,OAASkwD,EAASlwD,MAAQ,EAAIqH,KAM9DjX,EAAKwQ,UAAU4sD,SAAW,SAAU/4C,GAClC5nB,KAAK4gE,WAAWh5C,GAEhB5nB,KAAK6H,KAAO7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EAClCnT,KAAKiI,IAAMjI,KAAKsS,EAAItS,KAAKoT,OAAS,CAElC,IAAIkwD,GAAmB,IACnBziD,EAAc7gB,KAAK+O,QAAQ8R,YAC3B0iD,EAAqBvjE,KAAK+O,QAAQswC,qBAAuB,EAAIr/C,KAAK+O,QAAQ8R,WAE9E+G,GAAIY,YAAcxoB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUD,OAAS3M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMF,OAAS3M,KAAK+O,QAAQ3D,MAAMuB,OAGtI3M,KAAKggE,YAAc,IACrBp4C,EAAIO,WAAanoB,KAAKylC,SAAW89B,EAAqB1iD,IAAiB7gB,KAAKggE,YAAc,EAAKsD,EAAmB,GAClH17C,EAAIO,WAAanoB,KAAK05D,gBACtB9xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAI47C,UAAUxjE,KAAK6H,KAAK,EAAE+f,EAAIO,UAAWnoB,KAAKiI,IAAI,EAAE2f,EAAIO,UAAWnoB,KAAKmT,MAAM,EAAEyU,EAAIO,UAAWnoB,KAAKoT,OAAO,EAAEwU,EAAIO,UAAWnoB,KAAK+O,QAAQod,QACzIvE,EAAIlH,UAENkH,EAAIO,WAAanoB,KAAKylC,SAAW89B,EAAqB1iD,IAAiB7gB,KAAKggE,YAAc,EAAKsD,EAAmB,GAClH17C,EAAIO,WAAanoB,KAAK05D,gBACtB9xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAY7oB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUF,WAAa1M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMH,WAAa1M,KAAK+O,QAAQ3D,MAAMsB,WAEhJkb,EAAI47C,UAAUxjE,KAAK6H,KAAM7H,KAAKiI,IAAKjI,KAAKmT,MAAOnT,KAAKoT,OAAQpT,KAAK+O,QAAQod,QACzEvE,EAAInH,OACJmH,EAAIlH,SAEJ1gB,KAAKgoD,YAAY//C,IAAMjI,KAAKiI,IAC5BjI,KAAKgoD,YAAYngD,KAAO7H,KAAK6H,KAC7B7H,KAAKgoD,YAAY9/B,MAAQloB,KAAK6H,KAAO7H,KAAKmT,MAC1CnT,KAAKgoD,YAAY7jC,OAASnkB,KAAKiI,IAAMjI,KAAKoT,OAE1CpT,KAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGrS,KAAKsS,IAI5C/O,EAAKwQ,UAAU2sD,gBAAkB,SAAU94C,GACzC,IAAK5nB,KAAKmT,MAAO,CACf,GAAIqH,GAAS,EACT6oD,EAAWrjE,KAAK6iE,YAAYj7C,GAC5BhV,EAAOywD,EAASlwD,MAAQ,EAAIqH,CAChCxa,MAAKmT,MAAQP,EACb5S,KAAKoT,OAASR,EAGd5S,KAAKmT,OAAU3O,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK0/D,uBACjF1/D,KAAKoT,QAAU5O,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK2/D,wBACjF3/D,KAAK+O,QAAQod,QAAS3nB,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK4/D,wBACxF5/D,KAAK6/D,gBAAkB7/D,KAAKmT,MAAQP,IAIxCrP,EAAKwQ,UAAU0sD,cAAgB,SAAU74C,GACvC5nB,KAAK0gE,gBAAgB94C,GACrB5nB,KAAK6H,KAAO7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EAClCnT,KAAKiI,IAAMjI,KAAKsS,EAAItS,KAAKoT,OAAS,CAElC,IAAIkwD,GAAmB,IACnBziD,EAAc7gB,KAAK+O,QAAQ8R,YAC3B0iD,EAAqBvjE,KAAK+O,QAAQswC,qBAAuB,EAAIr/C,KAAK+O,QAAQ8R,WAE9E+G,GAAIY,YAAcxoB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUD,OAAS3M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMF,OAAS3M,KAAK+O,QAAQ3D,MAAMuB,OAGtI3M,KAAKggE,YAAc,IACrBp4C,EAAIO,WAAanoB,KAAKylC,SAAW89B,EAAqB1iD,IAAiB7gB,KAAKggE,YAAc,EAAKsD,EAAmB,GAClH17C,EAAIO,WAAanoB,KAAK05D,gBACtB9xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAI67C,SAASzjE,KAAKqS,EAAIrS,KAAKmT,MAAM,EAAI,EAAEyU,EAAIO,UAAWnoB,KAAKsS,EAAgB,GAAZtS,KAAKoT,OAAa,EAAEwU,EAAIO,UAAWnoB,KAAKmT,MAAQ,EAAEyU,EAAIO,UAAWnoB,KAAKoT,OAAS,EAAEwU,EAAIO,WACpJP,EAAIlH,UAENkH,EAAIO,WAAanoB,KAAKylC,SAAW89B,EAAqB1iD,IAAiB7gB,KAAKggE,YAAc,EAAKsD,EAAmB,GAClH17C,EAAIO,WAAanoB,KAAK05D,gBACtB9xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAY7oB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUF,WAAa1M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMH,WAAa1M,KAAK+O,QAAQ3D,MAAMsB,WAChJkb,EAAI67C,SAASzjE,KAAKqS,EAAIrS,KAAKmT,MAAM,EAAGnT,KAAKsS,EAAgB,GAAZtS,KAAKoT,OAAYpT,KAAKmT,MAAOnT,KAAKoT,QAC/EwU,EAAInH,OACJmH,EAAIlH,SAEJ1gB,KAAKgoD,YAAY//C,IAAMjI,KAAKiI,IAC5BjI,KAAKgoD,YAAYngD,KAAO7H,KAAK6H,KAC7B7H,KAAKgoD,YAAY9/B,MAAQloB,KAAK6H,KAAO7H,KAAKmT,MAC1CnT,KAAKgoD,YAAY7jC,OAASnkB,KAAKiI,IAAMjI,KAAKoT,OAE1CpT,KAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGrS,KAAKsS,IAI5C/O,EAAKwQ,UAAU+sD,cAAgB,SAAUl5C,GACvC,IAAK5nB,KAAKmT,MAAO,CACf,GAAIqH,GAAS,EACT6oD,EAAWrjE,KAAK6iE,YAAYj7C,GAC5Bm7C,EAAWv+D,KAAKJ,IAAIi/D,EAASlwD,MAAOkwD,EAASjwD,QAAU,EAAIoH,CAC/Dxa,MAAK+O,QAAQod,OAAS42C,EAAW,EAEjC/iE,KAAKmT,MAAQ4vD,EACb/iE,KAAKoT,OAAS2vD,EAKd/iE,KAAK+O,QAAQod,QAAuE,GAA7D3nB,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAA+B1hD,KAAK4/D,wBAC/F5/D,KAAK6/D,gBAAkB7/D,KAAK+O,QAAQod,OAAQ,GAAI42C,IAIpDx/D,EAAKwQ,UAAUmvD,eAAiB,SAAUt7C,EAAKvV,EAAGC,EAAG6Z,GACnD,GAAIm3C,GAAmB,IACnBziD,EAAc7gB,KAAK+O,QAAQ8R,YAC3B0iD,EAAqBvjE,KAAK+O,QAAQswC,qBAAuB,EAAIr/C,KAAK+O,QAAQ8R,WAE9E+G,GAAIY,YAAcxoB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUD,OAAS3M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMF,OAAS3M,KAAK+O,QAAQ3D,MAAMuB,OAGtI3M,KAAKggE,YAAc,IACrBp4C,EAAIO,WAAanoB,KAAKylC,SAAW89B,EAAqB1iD,IAAiB7gB,KAAKggE,YAAc,EAAKsD,EAAmB,GAClH17C,EAAIO,WAAanoB,KAAK05D,gBACtB9xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAIu7C,OAAO9wD,EAAGC,EAAG6Z,EAAO,EAAEvE,EAAIO,WAC9BP,EAAIlH,UAENkH,EAAIO,WAAanoB,KAAKylC,SAAW89B,EAAqB1iD,IAAiB7gB,KAAKggE,YAAc,EAAKsD,EAAmB,GAClH17C,EAAIO,WAAanoB,KAAK05D,gBACtB9xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAY7oB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUF,WAAa1M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMH,WAAa1M,KAAK+O,QAAQ3D,MAAMsB,WAChJkb,EAAIu7C,OAAOnjE,KAAKqS,EAAGrS,KAAKsS,EAAG6Z,GAC3BvE,EAAInH,OACJmH,EAAIlH,UAGNnd,EAAKwQ,UAAU8sD,YAAc,SAAUj5C,GACrC5nB,KAAK8gE,cAAcl5C,GACnB5nB,KAAK6H,KAAO7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EAClCnT,KAAKiI,IAAMjI,KAAKsS,EAAItS,KAAKoT,OAAS,EAElCpT,KAAKkjE,eAAet7C,EAAK5nB,KAAKqS,EAAGrS,KAAKsS,EAAGtS,KAAK+O,QAAQod,QAEtDnsB,KAAKgoD,YAAY//C,IAAMjI,KAAKsS,EAAItS,KAAK+O,QAAQod,OAC7CnsB,KAAKgoD,YAAYngD,KAAO7H,KAAKqS,EAAIrS,KAAK+O,QAAQod,OAC9CnsB,KAAKgoD,YAAY9/B,MAAQloB,KAAKqS,EAAIrS,KAAK+O,QAAQod,OAC/CnsB,KAAKgoD,YAAY7jC,OAASnkB,KAAKsS,EAAItS,KAAK+O,QAAQod,OAEhDnsB,KAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGrS,KAAKsS,IAG5C/O,EAAKwQ,UAAUitD,eAAiB,SAAUp5C,GACxC,IAAK5nB,KAAKmT,MAAO,CACf,GAAIkwD,GAAWrjE,KAAK6iE,YAAYj7C,EAEhC5nB,MAAKmT,MAAyB,IAAjBkwD,EAASlwD,MACtBnT,KAAKoT,OAA2B,EAAlBiwD,EAASjwD,OACnBpT,KAAKmT,MAAQnT,KAAKoT,SACpBpT,KAAKmT,MAAQnT,KAAKoT,OAEpB,IAAIswD,GAAc1jE,KAAKmT,KAGvBnT,MAAKmT,OAAU3O,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK0/D,uBACjF1/D,KAAKoT,QAAU5O,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK2/D,wBACjF3/D,KAAK+O,QAAQod,QAAU3nB,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK4/D,wBACzF5/D,KAAK6/D,gBAAkB7/D,KAAKmT,MAAQuwD,IAIxCngE,EAAKwQ,UAAUgtD,aAAe,SAAUn5C,GACtC5nB,KAAKghE,eAAep5C,GACpB5nB,KAAK6H,KAAO7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EAClCnT,KAAKiI,IAAMjI,KAAKsS,EAAItS,KAAKoT,OAAS,CAElC,IAAIkwD,GAAmB,IACnBziD,EAAc7gB,KAAK+O,QAAQ8R,YAC3B0iD,EAAqBvjE,KAAK+O,QAAQswC,qBAAuB,EAAIr/C,KAAK+O,QAAQ8R,WAE9E+G,GAAIY,YAAcxoB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUD,OAAS3M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMF,OAAS3M,KAAK+O,QAAQ3D,MAAMuB,OAGtI3M,KAAKggE,YAAc,IACrBp4C,EAAIO,WAAanoB,KAAKylC,SAAW89B,EAAqB1iD,IAAiB7gB,KAAKggE,YAAc,EAAKsD,EAAmB,GAClH17C,EAAIO,WAAanoB,KAAK05D,gBACtB9xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAI+7C,QAAQ3jE,KAAK6H,KAAK,EAAE+f,EAAIO,UAAWnoB,KAAKiI,IAAI,EAAE2f,EAAIO,UAAWnoB,KAAKmT,MAAM,EAAEyU,EAAIO,UAAWnoB,KAAKoT,OAAO,EAAEwU,EAAIO,WAC/GP,EAAIlH,UAENkH,EAAIO,WAAanoB,KAAKylC,SAAW89B,EAAqB1iD,IAAiB7gB,KAAKggE,YAAc,EAAKsD,EAAmB,GAClH17C,EAAIO,WAAanoB,KAAK05D,gBACtB9xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAY7oB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUF,WAAa1M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMH,WAAa1M,KAAK+O,QAAQ3D,MAAMsB,WAEhJkb,EAAI+7C,QAAQ3jE,KAAK6H,KAAM7H,KAAKiI,IAAKjI,KAAKmT,MAAOnT,KAAKoT,QAClDwU,EAAInH,OACJmH,EAAIlH,SAEJ1gB,KAAKgoD,YAAY//C,IAAMjI,KAAKiI,IAC5BjI,KAAKgoD,YAAYngD,KAAO7H,KAAK6H,KAC7B7H,KAAKgoD,YAAY9/B,MAAQloB,KAAK6H,KAAO7H,KAAKmT,MAC1CnT,KAAKgoD,YAAY7jC,OAASnkB,KAAKiI,IAAMjI,KAAKoT,OAE1CpT,KAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGrS,KAAKsS,IAG5C/O,EAAKwQ,UAAUwtD,SAAW,SAAU35C,GAClC5nB,KAAK4jE,WAAWh8C,EAAK,WAGvBrkB,EAAKwQ,UAAU2tD,cAAgB,SAAU95C,GACvC5nB,KAAK4jE,WAAWh8C,EAAK,aAGvBrkB,EAAKwQ,UAAU4tD,kBAAoB,SAAU/5C,GAC3C5nB,KAAK4jE,WAAWh8C,EAAK,iBAGvBrkB,EAAKwQ,UAAU0tD,YAAc,SAAU75C,GACrC5nB,KAAK4jE,WAAWh8C,EAAK,WAGvBrkB,EAAKwQ,UAAU6tD,UAAY,SAAUh6C,GACnC5nB,KAAK4jE,WAAWh8C,EAAK,SAGvBrkB,EAAKwQ,UAAUytD,aAAe,WAC5B,IAAKxhE,KAAKmT,MAAO,CACfnT,KAAK+O,QAAQod,OAAQnsB,KAAK++D,eAC1B,IAAInsD,GAAO,EAAI5S,KAAK+O,QAAQod,MAC5BnsB,MAAKmT,MAAQP,EACb5S,KAAKoT,OAASR,EAGd5S,KAAKmT,OAAU3O,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK0/D,uBACjF1/D,KAAKoT,QAAU5O,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK2/D,wBACjF3/D,KAAK+O,QAAQod,QAAsE,GAA7D3nB,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAA+B1hD,KAAK4/D,wBAC9F5/D,KAAK6/D,gBAAkB7/D,KAAKmT,MAAQP,IAIxCrP,EAAKwQ,UAAU6vD,WAAa,SAAUh8C,EAAK22B,GACzCv+C,KAAKwhE,aAAa55C,GAElB5nB,KAAK6H,KAAO7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EAClCnT,KAAKiI,IAAMjI,KAAKsS,EAAItS,KAAKoT,OAAS,CAElC,IAAIkwD,GAAmB,IACnBziD,EAAc7gB,KAAK+O,QAAQ8R,YAC3B0iD,EAAqBvjE,KAAK+O,QAAQswC,qBAAuB,EAAIr/C,KAAK+O,QAAQ8R,YAC1EgjD,EAAmB,CAGvB,QAAQtlB,GACN,IAAK,MAAiBslB,EAAmB,CAAG,MAC5C,KAAK,SAAiBA,EAAmB,CAAG,MAC5C,KAAK,WAAiBA,EAAmB,CAAG,MAC5C,KAAK,eAAiBA,EAAmB,CAAG,MAC5C,KAAK,OAAiBA,EAAmB,EAG3Cj8C,EAAIY,YAAcxoB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUD,OAAS3M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMF,OAAS3M,KAAK+O,QAAQ3D,MAAMuB,OAEtI3M,KAAKggE,YAAc,IACrBp4C,EAAIO,WAAanoB,KAAKylC,SAAW89B,EAAqB1iD,IAAiB7gB,KAAKggE,YAAc,EAAKsD,EAAmB,GAClH17C,EAAIO,WAAanoB,KAAK05D,gBACtB9xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAI22B,GAAOv+C,KAAKqS,EAAGrS,KAAKsS,EAAGtS,KAAK+O,QAAQod,OAAQ03C,EAAmBj8C,EAAIO,WACvEP,EAAIlH,UAENkH,EAAIO,WAAanoB,KAAKylC,SAAW89B,EAAqB1iD,IAAiB7gB,KAAKggE,YAAc,EAAKsD,EAAmB,GAClH17C,EAAIO,WAAanoB,KAAK05D,gBACtB9xC,EAAIO,UAAY3jB,KAAKL,IAAInE,KAAKmT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAY7oB,KAAKylC,SAAWzlC,KAAK+O,QAAQ3D,MAAMwB,UAAUF,WAAa1M,KAAK6M,MAAQ7M,KAAK+O,QAAQ3D,MAAMyB,MAAMH,WAAa1M,KAAK+O,QAAQ3D,MAAMsB,WAChJkb,EAAI22B,GAAOv+C,KAAKqS,EAAGrS,KAAKsS,EAAGtS,KAAK+O,QAAQod,QACxCvE,EAAInH,OACJmH,EAAIlH,SAEJ1gB,KAAKgoD,YAAY//C,IAAMjI,KAAKsS,EAAItS,KAAK+O,QAAQod,OAC7CnsB,KAAKgoD,YAAYngD,KAAO7H,KAAKqS,EAAIrS,KAAK+O,QAAQod,OAC9CnsB,KAAKgoD,YAAY9/B,MAAQloB,KAAKqS,EAAIrS,KAAK+O,QAAQod,OAC/CnsB,KAAKgoD,YAAY7jC,OAASnkB,KAAKsS,EAAItS,KAAK+O,QAAQod,OAE5CnsB,KAAK6S,QACP7S,KAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGrS,KAAKsS,EAAItS,KAAKoT,OAAS,EAAGvM,OAAW,WAAU,GACpF7G,KAAKgoD,YAAYngD,KAAOrD,KAAKL,IAAInE,KAAKgoD,YAAYngD,KAAM7H,KAAK+2D,gBAAgBlvD,MAC7E7H,KAAKgoD,YAAY9/B,MAAQ1jB,KAAKJ,IAAIpE,KAAKgoD,YAAY9/B,MAAOloB,KAAK+2D,gBAAgBlvD,KAAO7H,KAAK+2D,gBAAgB5jD,OAC3GnT,KAAKgoD,YAAY7jC,OAAS3f,KAAKJ,IAAIpE,KAAKgoD,YAAY7jC,OAAQnkB,KAAKgoD,YAAY7jC,OAASnkB,KAAK+2D,gBAAgB3jD,UAI/G7P,EAAKwQ,UAAUutD,YAAc,SAAU15C,GACrC,IAAK5nB,KAAKmT,MAAO,CACf,GAAIqH,GAAS,EACT6oD,EAAWrjE,KAAK6iE,YAAYj7C,EAChC5nB,MAAKmT,MAAQkwD,EAASlwD,MAAQ,EAAIqH,EAClCxa,KAAKoT,OAASiwD,EAASjwD,OAAS,EAAIoH,EAGpCxa,KAAKmT,OAAU3O,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK0/D,uBACjF1/D,KAAKoT,QAAU5O,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK2/D,wBACjF3/D,KAAK+O,QAAQod,QAAS3nB,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK4/D,wBACxF5/D,KAAK6/D,gBAAkB7/D,KAAKmT,OAASkwD,EAASlwD,MAAQ,EAAIqH,KAI9DjX,EAAKwQ,UAAUstD,UAAY,SAAUz5C,GACnC5nB,KAAKshE,YAAY15C,GACjB5nB,KAAK6H,KAAO7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EAClCnT,KAAKiI,IAAMjI,KAAKsS,EAAItS,KAAKoT,OAAS,EAElCpT,KAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGrS,KAAKsS,GAE1CtS,KAAKgoD,YAAY//C,IAAMjI,KAAKiI,IAC5BjI,KAAKgoD,YAAYngD,KAAO7H,KAAK6H,KAC7B7H,KAAKgoD,YAAY9/B,MAAQloB,KAAK6H,KAAO7H,KAAKmT,MAC1CnT,KAAKgoD,YAAY7jC,OAASnkB,KAAKiI,IAAMjI,KAAKoT,QAG5C7P,EAAKwQ,UAAU+tD,YAAc,WAC3B,IAAK9hE,KAAKmT,MAAO,CACf,GAAIqH,GAAS,EACT48B,GAEFjkC,MAAOlP,OAAOjE,KAAK+O,QAAQqoC,UAC3BhkC,OAAQnP,OAAOjE,KAAK+O,QAAQqoC,UAE9Bp3C,MAAKmT,MAAQikC,EAASjkC,MAAQ,EAAIqH,EAClCxa,KAAKoT,OAASgkC,EAAShkC,OAAS,EAAIoH,EAGpCxa,KAAKmT,OAAS3O,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK0/D,uBAChF1/D,KAAKoT,QAAU5O,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK2/D,wBACjF3/D,KAAK+O,QAAQod,QAAU3nB,KAAKL,IAAInE,KAAKggE,YAAc,EAAGhgE,KAAK0hD,uBAAyB1hD,KAAK4/D,wBACzF5/D,KAAK6/D,gBAAkB7/D,KAAKmT,OAASikC,EAASjkC,MAAQ,EAAIqH,KAI9DjX,EAAKwQ,UAAU8tD,UAAY,SAAUj6C,GAenC,GAdA5nB,KAAK8hE,YAAYl6C,GAEjB5nB,KAAK+O,QAAQqoC,SAAWp3C,KAAK+O,QAAQqoC,UAAY,GAEjDp3C,KAAK6H,KAAO7H,KAAKqS,EAAIrS,KAAKmT,MAAQ,EAClCnT,KAAKiI,IAAMjI,KAAKsS,EAAItS,KAAKoT,OAAS,EAClCpT,KAAK8jE,MAAMl8C,GAGX5nB,KAAKgoD,YAAY//C,IAAMjI,KAAKsS,EAAItS,KAAK+O,QAAQqoC,SAAS,EACtDp3C,KAAKgoD,YAAYngD,KAAO7H,KAAKqS,EAAIrS,KAAK+O,QAAQqoC,SAAS,EACvDp3C,KAAKgoD,YAAY9/B,MAAQloB,KAAKqS,EAAIrS,KAAK+O,QAAQqoC,SAAS,EACxDp3C,KAAKgoD,YAAY7jC,OAASnkB,KAAKsS,EAAItS,KAAK+O,QAAQqoC,SAAS,EAErDp3C,KAAK6S,MAAO,CACd,GAAIkxD,GAAkB,CACtB/jE,MAAKs5D,OAAO1xC,EAAK5nB,KAAK6S,MAAO7S,KAAKqS,EAAGrS,KAAKsS,EAAItS,KAAKoT,OAAS,EAAI2wD,EAAiB,OAAO,GAExF/jE,KAAKgoD,YAAYngD,KAAOrD,KAAKL,IAAInE,KAAKgoD,YAAYngD,KAAM7H,KAAK+2D,gBAAgBlvD,MAC7E7H,KAAKgoD,YAAY9/B,MAAQ1jB,KAAKJ,IAAIpE,KAAKgoD,YAAY9/B,MAAOloB,KAAK+2D,gBAAgBlvD,KAAO7H,KAAK+2D,gBAAgB5jD,OAC3GnT,KAAKgoD,YAAY7jC,OAAS3f,KAAKJ,IAAIpE,KAAKgoD,YAAY7jC,OAAQnkB,KAAKgoD,YAAY7jC,OAASnkB,KAAK+2D,gBAAgB3jD,UAI/G7P,EAAKwQ,UAAU+vD,MAAQ,SAAUl8C,GAC/B,GAAIo8C,GAAmB//D,OAAOjE,KAAK+O,QAAQqoC,UAAYp3C,KAAK8/D,YAE5D,IAAI9/D,KAAK+O,QAAQ4gC,MAAQq0B,EAAmBhkE,KAAK+O,QAAQgwC,kBAAoB,EAAG,CAE5E,GAAI3H,GAAWnzC,OAAOjE,KAAK+O,QAAQqoC,SAEnCxvB,GAAIQ,MAAQpoB,KAAKylC,SAAW,QAAU,IAAM2R,EAAW,MAAQp3C,KAAK+O,QAAQk1D,aAG5Er8C,EAAIiB,UAAY7oB,KAAK+O,QAAQm1D,WAAa,QAC1Ct8C,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,SACnBxB,EAAIyB,SAASrpB,KAAK+O,QAAQ4gC,KAAM3vC,KAAKqS,EAAGrS,KAAKsS,KAInD/O,EAAKwQ,UAAUulD,OAAS,SAAU1xC,EAAKuC,EAAM9X,EAAGC,EAAGw1B,EAAOq8B,EAAUC,GAClE,GAAIC,GAAmBpgE,OAAOjE,KAAK+O,QAAQ2vC,UAAY1+C,KAAK8/D,YAC5D,IAAI31C,GAAQk6C,GAAoBrkE,KAAK+O,QAAQgwC,kBAAoB,EAAG,CAClE,GAAIL,GAAWz6C,OAAOjE,KAAK+O,QAAQ2vC,SAG/B2lB,IAAoBrkE,KAAK+O,QAAQowC,qBACnCT,EAAWz6C,OAAOjE,KAAK+O,QAAQowC,oBAAsBn/C,KAAK05D,gBAI5D,IAAIjb,GAAYz+C,KAAK+O,QAAQ0vC,WAAa,UACtC6lB,EAActkE,KAAK+O,QAAQ+vC,eAC/B,IAAIulB,GAAoBrkE,KAAK+O,QAAQgwC,kBAAmB,CACtD,GAAI1zC,GAAU7G,KAAKJ,IAAI,EAAEI,KAAKL,IAAI,EAAE,GAAKnE,KAAK+O,QAAQgwC,kBAAoBslB,IAC1E5lB,GAAc99C,EAAKwK,gBAAgBszC,EAAapzC,GAChDi5D,EAAc3jE,EAAKwK,gBAAgBm5D,EAAaj5D,GAIlDuc,EAAIQ,MAAQpoB,KAAKylC,SAAW,QAAU,IAAMiZ,EAAW,MAAQ1+C,KAAK+O,QAAQ4vC,QAE5E,IAAIjU,GAAQvgB,EAAK7hB,MAAM,MACnB6xD,EAAYzvB,EAAM1kC,OAClBgxD,EAAQ1kD,GAAK,EAAI6nD,GAAa,EAAIzb,CAChB,IAAlB0lB,IACFpN,EAAQ1kD,GAAK,EAAI6nD,IAAc,EAAIzb,GAKrC,KAAK,GADDvrC,GAAQyU,EAAIwyC,YAAY1vB,EAAM,IAAIv3B,MAC7BtN,EAAI,EAAOs0D,EAAJt0D,EAAeA,IAAK,CAClC,GAAIsiB,GAAYP,EAAIwyC,YAAY1vB,EAAM7kC,IAAIsN,KAC1CA,GAAQgV,EAAYhV,EAAQgV,EAAYhV,EAE1C,GAAIC,GAASsrC,EAAWyb,EACpBtyD,EAAOwK,EAAIc,EAAQ,EACnBlL,EAAMqK,EAAIc,EAAS,CACP,YAAZ+wD,IACFl8D,GAAO,GAAMy2C,EACbz2C,GAAO,EACP+uD,GAAS,GAEXh3D,KAAK+2D,iBAAmB9uD,IAAIA,EAAIJ,KAAKA,EAAKsL,MAAMA,EAAMC,OAAOA,EAAO4jD,MAAMA,GAG5CnwD,SAA1B7G,KAAK+O,QAAQ6vC,UAAoD,OAA1B5+C,KAAK+O,QAAQ6vC,UAA+C,SAA1B5+C,KAAK+O,QAAQ6vC,WACxFh3B,EAAIiB,UAAY7oB,KAAK+O,QAAQ6vC,SAC7Bh3B,EAAI+yC,SAAS9yD,EAAMI,EAAKkL,EAAOC,IAIjCwU,EAAIiB,UAAY41B,EAChB72B,EAAIuB,UAAY2e,GAAS,SACzBlgB,EAAIwB,aAAe+6C,GAAY,SAC3BnkE,KAAK+O,QAAQ8vC,gBAAkB,IACjCj3B,EAAIO,UAAcnoB,KAAK+O,QAAQ8vC,gBAC/Bj3B,EAAIY,YAAc87C,EAClB18C,EAAIgzC,SAAc,QAEpB,KAAK,GAAI/0D,GAAI,EAAOs0D,EAAJt0D,EAAeA,IAC1B7F,KAAK+O,QAAQ8vC,iBACdj3B,EAAIizC,WAAWnwB,EAAM7kC,GAAIwM,EAAG2kD,GAE9BpvC,EAAIyB,SAASqhB,EAAM7kC,GAAIwM,EAAG2kD,GAC1BA,GAAStY,IAMfn7C,EAAKwQ,UAAU8uD,YAAc,SAASj7C,GACpC,GAAmB/gB,SAAf7G,KAAK6S,MAAqB,CAC5B,GAAI6rC,GAAWz6C,OAAOjE,KAAK+O,QAAQ2vC,SAC/BA,GAAW1+C,KAAK8/D,aAAe9/D,KAAK+O,QAAQowC,qBAC9CT,EAAWz6C,OAAOjE,KAAK+O,QAAQowC,oBAAsBn/C,KAAK05D,iBAE5D9xC,EAAIQ,MAAQpoB,KAAKylC,SAAW,QAAU,IAAMiZ,EAAW,MAAQ1+C,KAAK+O,QAAQ4vC,QAM5E,KAAK,GAJDjU,GAAQ1qC,KAAK6S,MAAMvK,MAAM,MACzB8K,GAAUsrC,EAAW,GAAKhU,EAAM1kC,OAChCmN,EAAQ,EAEHtN,EAAI,EAAGi8B,EAAO4I,EAAM1kC,OAAY87B,EAAJj8B,EAAUA,IAC7CsN,EAAQ3O,KAAKJ,IAAI+O,EAAOyU,EAAIwyC,YAAY1vB,EAAM7kC,IAAIsN,MAGpD,QAAQA,MAASA,EAAOC,OAAUA,EAAQ+mD,UAAWzvB,EAAM1kC,QAG3D,OAAQmN,MAAS,EAAGC,OAAU,EAAG+mD,UAAW,IAUhD52D,EAAKwQ,UAAU4+C,OAAS,WACtB,MAAmB9rD,UAAf7G,KAAKmT,MACDnT,KAAKqS,EAAIrS,KAAKmT,MAAOnT,KAAK05D,iBAAoB15D,KAAK4lD,cAAcvzC,GACjErS,KAAKqS,EAAIrS,KAAKmT,MAAOnT,KAAK05D,gBAAoB15D,KAAK6lD,kBAAkBxzC,GACrErS,KAAKsS,EAAItS,KAAKoT,OAAOpT,KAAK05D,iBAAoB15D,KAAK4lD,cAActzC,GACjEtS,KAAKsS,EAAItS,KAAKoT,OAAOpT,KAAK05D,gBAAoB15D,KAAK6lD,kBAAkBvzC,GAGpE,GAQX/O,EAAKwQ,UAAUwwD,OAAS,WACtB,MAAQvkE,MAAKqS,GAAKrS,KAAK4lD,cAAcvzC,GAC7BrS,KAAKqS,EAAIrS,KAAK6lD,kBAAkBxzC,GAChCrS,KAAKsS,GAAKtS,KAAK4lD,cAActzC,GAC7BtS,KAAKsS,EAAItS,KAAK6lD,kBAAkBvzC,GAW1C/O,EAAKwQ,UAAU2+C,eAAiB,SAASnuD,EAAMqhD,EAAcC,GAC3D7lD,KAAK05D,gBAAkB,EAAIn1D,EAC3BvE,KAAK8/D,aAAev7D,EACpBvE,KAAK4lD,cAAgBA,EACrB5lD,KAAK6lD,kBAAoBA,GAS3BtiD,EAAKwQ,UAAUkwB,SAAW,SAAS1/B,GACjCvE,KAAK05D,gBAAkB,EAAIn1D,EAC3BvE,KAAK8/D,aAAev7D,GAQtBhB,EAAKwQ,UAAUywD,cAAgB,WAC7BxkE,KAAKq/D,GAAK,EACVr/D,KAAKs/D,GAAK,GASZ/7D,EAAKwQ,UAAU0wD,eAAiB,SAASC,GACvC,GAAIC,GAAe3kE,KAAKq/D,GAAKr/D,KAAKq/D,GAAKqF,CAEvC1kE,MAAKq/D,GAAK76D,KAAK6rB,KAAKs0C,EAAa3kE,KAAK+O,QAAQqvC,MAC9CumB,EAAe3kE,KAAKs/D,GAAKt/D,KAAKs/D,GAAKoF,EAEnC1kE,KAAKs/D,GAAK96D,KAAK6rB,KAAKs0C,EAAa3kE,KAAK+O,QAAQqvC,OAGhDv+C,EAAOD,QAAU2D,GAKb,SAAS1D,GAWb,QAAS2D,GAAM6W,EAAWhI,EAAGC,EAAG6X,EAAM5c,GAElCvN,KAAKqa,UADHA,EACeA,EAGAxI,SAASujB,KAIdvuB,SAAV0G,IACe,gBAAN8E,IACT9E,EAAQ8E,EACRA,EAAIxL,QACqB,gBAATsjB,IAChB5c,EAAQ4c,EACRA,EAAOtjB,QAGP0G,GACEkxC,UAAW,QACXC,SAAU,GACVC,SAAU,UACVvzC,OACEuB,OAAQ,OACRD,WAAY,aAMpB1M,KAAKqS,EAAI,EACTrS,KAAKsS,EAAI,EACTtS,KAAK6kB,QAAU,EACf7kB,KAAK+5B,QAAS,EAEJlzB,SAANwL,GAAyBxL,SAANyL,GACrBtS,KAAKgvD,YAAY38C,EAAGC,GAETzL,SAATsjB,GACFnqB,KAAKowD,QAAQjmC,GAIfnqB,KAAKmgB,MAAQtO,SAASM,cAAc,OACpCnS,KAAKmgB,MAAM/X,UAAY,kBACvBpI,KAAKmgB,MAAM5S,MAAMnC,MAAkBmC,EAAMkxC,UACzCz+C,KAAKmgB,MAAM5S,MAAMiT,gBAAkBjT,EAAMnC,MAAMsB,WAC/C1M,KAAKmgB,MAAM5S,MAAMqT,YAAkBrT,EAAMnC,MAAMuB,OAC/C3M,KAAKmgB,MAAM5S,MAAMmxC,SAAkBnxC,EAAMmxC,SAAW,KACpD1+C,KAAKmgB,MAAM5S,MAAMq3D,WAAkBr3D,EAAMoxC,SACzC3+C,KAAKqa,UAAUtI,YAAY/R,KAAKmgB,OAOlC3c,EAAMuQ,UAAUi7C,YAAc,SAAS38C,EAAGC,GACxCtS,KAAKqS,EAAInH,SAASmH,GAClBrS,KAAKsS,EAAIpH,SAASoH,IAOpB9O,EAAMuQ,UAAUq8C,QAAU,SAASp9C,GAC7BA,YAAmB8zB,UACrB9mC,KAAKmgB,MAAM2E,UAAY,GACvB9kB,KAAKmgB,MAAMpO,YAAYiB,IAGvBhT,KAAKmgB,MAAM2E,UAAY9R,GAQ3BxP,EAAMuQ,UAAUkyB,KAAO,SAAUA,GAK/B,GAJap/B,SAATo/B,IACFA,GAAO,GAGLA,EAAM,CACR,GAAI7yB,GAASpT,KAAKmgB,MAAMuF,aACpBvS,EAASnT,KAAKmgB,MAAME,YACpB4U,EAAYj1B,KAAKmgB,MAAMhW,WAAWub,aAClCuiB,EAAWjoC,KAAKmgB,MAAMhW,WAAWkW,YAEjCpY,EAAOjI,KAAKsS,EAAIc,CAChBnL,GAAMmL,EAASpT,KAAK6kB,QAAUoQ,IAChChtB,EAAMgtB,EAAY7hB,EAASpT,KAAK6kB,SAE9B5c,EAAMjI,KAAK6kB,UACb5c,EAAMjI,KAAK6kB,QAGb,IAAIhd,GAAO7H,KAAKqS,CACZxK,GAAOsL,EAAQnT,KAAK6kB,QAAUojB,IAChCpgC,EAAOogC,EAAW90B,EAAQnT,KAAK6kB,SAE7Bhd,EAAO7H,KAAK6kB,UACdhd,EAAO7H,KAAK6kB,SAGd7kB,KAAKmgB,MAAM5S,MAAM1F,KAAOA,EAAO,KAC/B7H,KAAKmgB,MAAM5S,MAAMtF,IAAMA,EAAM,KAC7BjI,KAAKmgB,MAAM5S,MAAM8qB,WAAa,UAC9Br4B,KAAK+5B,QAAS,MAGd/5B,MAAKgmC,QAOTxiC,EAAMuQ,UAAUiyB,KAAO,WACrBhmC,KAAK+5B,QAAS,EACd/5B,KAAKmgB,MAAM5S,MAAM8qB,WAAa,UAGhCx4B,EAAOD,QAAU4D,GAKb,SAAS3D,EAAQD,GAarB,QAASilE,GAAUvxD,GAEjB,MADAid,GAAMjd,EACCwxD,IAoCT,QAAS5hC,KACPx6B,EAAQ,EACRjI,EAAI8vB,EAAItK,OAAO,GAQjB,QAASiD,KACPxgB,IACAjI,EAAI8vB,EAAItK,OAAOvd,GAOjB,QAASq8D,KACP,MAAOx0C,GAAItK,OAAOvd,EAAQ,GAS5B,QAASs8D,GAAevkE,GACtB,MAAOwkE,GAAkB32D,KAAK7N,GAShC,QAASykE,GAAOt/D,EAAGa,GAKjB,GAJKb,IACHA,MAGEa,EACF,IAAK,GAAIoQ,KAAQpQ,GACXA,EAAEN,eAAe0Q,KACnBjR,EAAEiR,GAAQpQ,EAAEoQ,GAIlB,OAAOjR,GAeT,QAAS4S,GAASoL,EAAKurB,EAAM7qC,GAG3B,IAFA,GAAIoJ,GAAOyhC,EAAK7mC,MAAM,KAClB68D,EAAIvhD,EACDlW,EAAK1H,QAAQ,CAClB,GAAIiD,GAAMyE,EAAKkE,OACXlE,GAAK1H,QAEFm/D,EAAEl8D,KACLk8D,EAAEl8D,OAEJk8D,EAAIA,EAAEl8D,IAINk8D,EAAEl8D,GAAO3E,GAWf,QAAS8gE,GAAQ1zC,EAAOi2B,GAOtB,IANA,GAAI9hD,GAAGC,EACH60B,EAAU,KAGV0qC,GAAU3zC,GACVhyB,EAAOgyB,EACJhyB,EAAK8lC,QACV6/B,EAAO98D,KAAK7I,EAAK8lC,QACjB9lC,EAAOA,EAAK8lC,MAId,IAAI9lC,EAAKy+C,MACP,IAAKt4C,EAAI,EAAGC,EAAMpG,EAAKy+C,MAAMn4C,OAAYF,EAAJD,EAASA,IAC5C,GAAI8hD,EAAKtnD,KAAOX,EAAKy+C,MAAMt4C,GAAGxF,GAAI,CAChCs6B,EAAUj7B,EAAKy+C,MAAMt4C,EACrB,OAiBN,IAZK80B,IAEHA,GACEt6B,GAAIsnD,EAAKtnD,IAEPqxB,EAAMi2B,OAERhtB,EAAQ2qC,KAAOJ,EAAMvqC,EAAQ2qC,KAAM5zC,EAAMi2B,QAKxC9hD,EAAIw/D,EAAOr/D,OAAS,EAAGH,GAAK,EAAGA,IAAK,CACvC,GAAImF,GAAIq6D,EAAOx/D,EAEVmF,GAAEmzC,QACLnzC,EAAEmzC,UAE4B,IAA5BnzC,EAAEmzC,MAAMn3C,QAAQ2zB,IAClB3vB,EAAEmzC,MAAM51C,KAAKoyB,GAKbgtB,EAAK2d,OACP3qC,EAAQ2qC,KAAOJ,EAAMvqC,EAAQ2qC,KAAM3d,EAAK2d,OAS5C,QAASC,GAAQ7zC,EAAOs+B,GAKtB,GAJKt+B,EAAM4tB,QACT5tB,EAAM4tB,UAER5tB,EAAM4tB,MAAM/2C,KAAKynD,GACbt+B,EAAMs+B,KAAM,CACd,GAAIsV,GAAOJ,KAAUxzC,EAAMs+B,KAC3BA,GAAKsV,KAAOJ,EAAMI,EAAMtV,EAAKsV,OAajC,QAASE,GAAW9zC,EAAO1H,EAAMC,EAAI9iB,EAAMm+D,GACzC,GAAItV,IACFhmC,KAAMA,EACNC,GAAIA,EACJ9iB,KAAMA,EAQR,OALIuqB,GAAMs+B,OACRA,EAAKsV,KAAOJ,KAAUxzC,EAAMs+B,OAE9BA,EAAKsV,KAAOJ,EAAMlV,EAAKsV,SAAYA,GAE5BtV,EAOT,QAASyV,KAKP,IAJAC,EAAYC,EAAUC,KACtBC,EAAQ,GAGI,KAALplE,GAAiB,KAALA,GAAkB,MAALA,GAAkB,MAALA,GAC3CyoB,GAGF,GAAG,CACD,GAAI48C,IAAY,CAGhB,IAAS,KAALrlE,EAAU,CAGZ,IADA,GAAIoF,GAAI6C,EAAQ,EACQ,KAAjB6nB,EAAItK,OAAOpgB,IAA8B,KAAjB0qB,EAAItK,OAAOpgB,IACxCA,GAEF,IAAqB,MAAjB0qB,EAAItK,OAAOpgB,IAA+B,IAAjB0qB,EAAItK,OAAOpgB,GAAU,CAEhD,KAAY,IAALpF,GAAgB,MAALA,GAChByoB,GAEF48C,IAAY,GAGhB,GAAS,KAALrlE,GAA6B,KAAjBskE,IAAsB,CAEpC,KAAY,IAALtkE,GAAgB,MAALA,GAChByoB,GAEF48C,IAAY,EAEd,GAAS,KAALrlE,GAA6B,KAAjBskE,IAAsB,CAEpC,KAAY,IAALtkE,GAAS,CACd,GAAS,KAALA,GAA6B,KAAjBskE,IAAsB,CAEpC77C,IACAA,GACA,OAGAA,IAGJ48C,GAAY,EAId,KAAY,KAALrlE,GAAiB,KAALA,GAAkB,MAALA,GAAkB,MAALA,GAC3CyoB,UAGG48C,EAGP,IAAS,IAALrlE,EAGF,YADAilE,EAAYC,EAAUI,UAKxB,IAAIC,GAAKvlE,EAAIskE,GACb,IAAIkB,EAAWD,GAKb,MAJAN,GAAYC,EAAUI,UACtBF,EAAQG,EACR98C,QACAA,IAKF,IAAI+8C,EAAWxlE,GAIb,MAHAilE,GAAYC,EAAUI,UACtBF,EAAQplE,MACRyoB,IAMF,IAAI87C,EAAevkE,IAAW,KAALA,EAAU,CAIjC,IAHAolE,GAASplE,EACTyoB,IAEO87C,EAAevkE,IACpBolE,GAASplE,EACTyoB,GAYF,OAVa,SAAT28C,EACFA,GAAQ,EAEQ,QAATA,EACPA,GAAQ,EAEA7gE,MAAMf,OAAO4hE,MACrBA,EAAQ5hE,OAAO4hE,SAEjBH,EAAYC,EAAUO,YAKxB,GAAS,KAALzlE,EAAU,CAEZ,IADAyoB,IACY,IAALzoB,IAAiB,KAALA,GAAkB,KAALA,GAA6B,KAAjBskE,MAC1Cc,GAASplE,EACA,KAALA,GACFyoB,IAEFA,GAEF,IAAS,KAALzoB,EACF,KAAM0lE,GAAe,2BAIvB,OAFAj9C,UACAw8C,EAAYC,EAAUO,YAMxB,IADAR,EAAYC,EAAUS,QACV,IAAL3lE,GACLolE,GAASplE,EACTyoB,GAEF,MAAM,IAAI5O,aAAY,yBAA2B+rD,EAAKR,EAAO,IAAM,KAOrE,QAASf,KACP,GAAIpzC,KAwBJ,IAtBAwR,IACAuiC,IAGa,UAATI,IACFn0C,EAAM40C,QAAS,EACfb,MAIW,SAATI,GAA6B,WAATA,KACtBn0C,EAAMvqB,KAAO0+D,EACbJ,KAIEC,GAAaC,EAAUO,aACzBx0C,EAAMrxB,GAAKwlE,EACXJ,KAIW,KAATI,EACF,KAAMM,GAAe,2BAQvB,IANAV,IAGAc,EAAgB70C,GAGH,KAATm0C,EACF,KAAMM,GAAe,2BAKvB,IAHAV,IAGc,KAAVI,EACF,KAAMM,GAAe,uBASvB,OAPAV,WAGO/zC,GAAMi2B,WACNj2B,GAAMs+B,WACNt+B,GAAMA,MAENA,EAOT,QAAS60C,GAAiB70C,GACxB,KAAiB,KAAVm0C,GAAyB,KAATA,GACrBW,EAAe90C,GACF,KAATm0C,GACFJ,IAWN,QAASe,GAAe90C,GAEtB,GAAI+0C,GAAWC,EAAch1C,EAC7B,IAAI+0C,EAIF,WAFAE,GAAUj1C,EAAO+0C,EAMnB,IAAInB,GAAOsB,EAAwBl1C,EACnC,KAAI4zC,EAAJ,CAKA,GAAII,GAAaC,EAAUO,WACzB,KAAMC,GAAe,sBAEvB,IAAI9lE,GAAKwlE,CAGT,IAFAJ,IAEa,KAATI,EAAc,CAGhB,GADAJ,IACIC,GAAaC,EAAUO,WACzB,KAAMC,GAAe,sBAEvBz0C,GAAMrxB,GAAMwlE,EACZJ,QAIAoB,GAAmBn1C,EAAOrxB,IAS9B,QAASqmE,GAAeh1C,GACtB,GAAI+0C,GAAW,IAgBf,IAba,YAATZ,IACFY,KACAA,EAASt/D,KAAO,WAChBs+D,IAGIC,GAAaC,EAAUO,aACzBO,EAASpmE,GAAKwlE,EACdJ,MAKS,KAATI,EAAc,CAehB,GAdAJ,IAEKgB,IACHA,MAEFA,EAASjhC,OAAS9T,EAClB+0C,EAAS9e,KAAOj2B,EAAMi2B,KACtB8e,EAASzW,KAAOt+B,EAAMs+B,KACtByW,EAAS/0C,MAAQA,EAAMA,MAGvB60C,EAAgBE,GAGH,KAATZ,EACF,KAAMM,GAAe,2BAEvBV,WAGOgB,GAAS9e,WACT8e,GAASzW,WACTyW,GAAS/0C,YACT+0C,GAASjhC,OAGX9T,EAAMo1C,YACTp1C,EAAMo1C,cAERp1C,EAAMo1C,UAAUv+D,KAAKk+D,GAGvB,MAAOA,GAYT,QAASG,GAAyBl1C,GAEhC,MAAa,QAATm0C,GACFJ,IAGA/zC,EAAMi2B,KAAOof,IACN,QAES,QAATlB,GACPJ,IAGA/zC,EAAMs+B,KAAO+W,IACN,QAES,SAATlB,GACPJ,IAGA/zC,EAAMA,MAAQq1C,IACP,SAGF,KAQT,QAASF,GAAmBn1C,EAAOrxB,GAEjC,GAAIsnD,IACFtnD,GAAIA,GAEFilE,EAAOyB,GACPzB,KACF3d,EAAK2d,KAAOA,GAEdF,EAAQ1zC,EAAOi2B,GAGfgf,EAAUj1C,EAAOrxB,GAQnB,QAASsmE,GAAUj1C,EAAO1H,GACxB,KAAgB,MAAT67C,GAA0B,MAATA,GAAe,CACrC,GAAI57C,GACA9iB,EAAO0+D,CACXJ,IAEA,IAAIgB,GAAWC,EAAch1C,EAC7B,IAAI+0C,EACFx8C,EAAKw8C,MAEF,CACH,GAAIf,GAAaC,EAAUO,WACzB,KAAMC,GAAe,kCAEvBl8C,GAAK47C,EACLT,EAAQ1zC,GACNrxB,GAAI4pB,IAENw7C,IAIF,GAAIH,GAAOyB,IAGP/W,EAAOwV,EAAW9zC,EAAO1H,EAAMC,EAAI9iB,EAAMm+D,EAC7CC,GAAQ7zC,EAAOs+B,GAEfhmC,EAAOC,GASX,QAAS88C,KAGP,IAFA,GAAIzB,GAAO,KAEK,KAATO,GAAc,CAGnB,IAFAJ,IACAH,KACiB,KAAVO,GAAyB,KAATA,GAAc,CACnC,GAAIH,GAAaC,EAAUO,WACzB,KAAMC,GAAe,0BAEvB,IAAItvD,GAAOgvD,CAGX,IADAJ,IACa,KAATI,EACF,KAAMM,GAAe,wBAIvB,IAFAV,IAEIC,GAAaC,EAAUO,WACzB,KAAMC,GAAe,2BAEvB,IAAI7hE,GAAQuhE,CACZrtD,GAAS8sD,EAAMzuD,EAAMvS,GAErBmhE,IACY,KAARI,GACFJ,IAIJ,GAAa,KAATI,EACF,KAAMM,GAAe,qBAEvBV,KAGF,MAAOH,GAQT,QAASa,GAAea,GACtB,MAAO,IAAI1sD,aAAY0sD,EAAU,UAAYX,EAAKR,EAAO,IAAM,WAAan9D,EAAQ,KAStF,QAAS29D,GAAMl8C,EAAM88C,GACnB,MAAQ98C,GAAKnkB,QAAUihE,EAAa98C,EAAQA,EAAK5e,OAAO,EAAG,IAAM,MASnE,QAAS27D,GAASC,EAAQC,EAAQptD,GAC5B1T,MAAMC,QAAQ4gE,GAChBA,EAAOv+D,QAAQ,SAAUy+D,GACnB/gE,MAAMC,QAAQ6gE,GAChBA,EAAOx+D,QAAQ,SAAU0+D,GACvBttD,EAAGqtD,EAAOC,KAIZttD,EAAGqtD,EAAOD,KAKV9gE,MAAMC,QAAQ6gE,GAChBA,EAAOx+D,QAAQ,SAAU0+D,GACvBttD,EAAGmtD,EAAQG,KAIbttD,EAAGmtD,EAAQC,GAWjB,QAAShe,GAAY91C,GAEnB,GAAI61C,GAAU0b,EAASvxD,GACnBi0D,GACFppB,SACAmB,SACAvwC,WAmBF,IAfIo6C,EAAQhL,OACVgL,EAAQhL,MAAMv1C,QAAQ,SAAU4+D,GAC9B,GAAIC,IACFpnE,GAAImnE,EAAQnnE,GACZwS,MAAOnO,OAAO8iE,EAAQ30D,OAAS20D,EAAQnnE,IAEzC6kE,GAAMuC,EAAWD,EAAQlC,MACrBmC,EAAUjpB,QACZipB,EAAUlpB,MAAQ,SAEpBgpB,EAAUppB,MAAM51C,KAAKk/D,KAKrBte,EAAQ7J,MAAO,CAMjB,GAAIooB,GAAc,SAAUC,GAC1B,GAAIC,IACF59C,KAAM29C,EAAQ39C,KACdC,GAAI09C,EAAQ19C,GAId,OAFAi7C,GAAM0C,EAAWD,EAAQrC,MACzBsC,EAAUr6D,MAAyB,MAAhBo6D,EAAQxgE,KAAgB,QAAU,OAC9CygE,EAGTze,GAAQ7J,MAAM12C,QAAQ,SAAU++D,GAC9B,GAAI39C,GAAMC,CAERD,GADE29C,EAAQ39C,eAAgBpjB,QACnB+gE,EAAQ39C,KAAKm0B,OAIlB99C,GAAIsnE,EAAQ39C,MAKdC,EADE09C,EAAQ19C,aAAcrjB,QACnB+gE,EAAQ19C,GAAGk0B,OAId99C,GAAIsnE,EAAQ19C,IAIZ09C,EAAQ39C,eAAgBpjB,SAAU+gE,EAAQ39C,KAAKs1B,OACjDqoB,EAAQ39C,KAAKs1B,MAAM12C,QAAQ,SAAUi/D,GACnC,GAAID,GAAYF,EAAYG,EAC5BN,GAAUjoB,MAAM/2C,KAAKq/D,KAIzBV,EAASl9C,EAAMC,EAAI,SAAUD,EAAMC,GACjC,GAAI49C,GAAUrC,EAAW+B,EAAWv9C,EAAK3pB,GAAI4pB,EAAG5pB,GAAIsnE,EAAQxgE,KAAMwgE,EAAQrC,MACtEsC,EAAYF,EAAYG,EAC5BN,GAAUjoB,MAAM/2C,KAAKq/D,KAGnBD,EAAQ19C,aAAcrjB,SAAU+gE,EAAQ19C,GAAGq1B,OAC7CqoB,EAAQ19C,GAAGq1B,MAAM12C,QAAQ,SAAUi/D,GACjC,GAAID,GAAYF,EAAYG,EAC5BN,GAAUjoB,MAAM/2C,KAAKq/D,OAW7B,MAJIze,GAAQmc,OACViC,EAAUx4D,QAAUo6C,EAAQmc,MAGvBiC,EAnyBT,GAAI5B,IACFC,KAAO,EACPG,UAAY,EACZG,WAAY,EACZE,QAAU,GAIRH,GACF6B,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EAELC,MAAM,EACNC,MAAM,GAGJ/3C,EAAM,GACN7nB,EAAQ,EACRjI,EAAI,GACJolE,EAAQ,GACRH,EAAYC,EAAUC,KAmCtBX,EAAoB,iBA2uBxBrlE,GAAQilE,SAAWA,EACnBjlE,EAAQwpD,WAAaA,GAKjB,SAASvpD,EAAQD,GAGrB,QAAS2pD,GAAWgf,EAAWx5D,GAC7B,GAAIuwC,MACAnB,IACJn+C,MAAK+O,SACHuwC,OACEQ,cAAc,GAEhB3B,OACEqqB,eAAe,EACf38D,YAAY,IAIAhF,SAAZkI,IACF/O,KAAK+O,QAAQovC,MAAqB,cAAIpvC,EAAQy5D,eAAgB,EAC9DxoE,KAAK+O,QAAQovC,MAAkB,WAAOpvC,EAAQlD,YAAgB,EAC9D7L,KAAK+O,QAAQuwC,MAAoB,aAAKvwC,EAAQ+wC,cAAgB,EAKhE,KAAK,GAFD2oB,GAASF,EAAUjpB,MACnBopB,EAASH,EAAUpqB,MACdt4C,EAAI,EAAGA,EAAI4iE,EAAOziE,OAAQH,IAAK,CACtC,GAAImqD,MACA2Y,EAAQF,EAAO5iE,EACnBmqD,GAAS,GAAI2Y,EAAMtoE,GACnB2vD,EAAW,KAAI2Y,EAAMC,OACrB5Y,EAAS,GAAI2Y,EAAM3+D,OACnBgmD,EAAiB,WAAI2Y,EAAMxhC,WAG3B6oB,EAAY,MAAI2Y,EAAMv9D,MACtB4kD,EAAmB,aAAsBnpD,SAAlBmpD,EAAY,OAAkB,EAAQhwD,KAAK+O,QAAQ+wC,aAC1ER,EAAM/2C,KAAKynD,GAGb,IAAK,GAAInqD,GAAI,EAAGA,EAAI6iE,EAAO1iE,OAAQH,IAAK,CACtC,GAAI8hD,MACAkhB,EAAQH,EAAO7iE,EACnB8hD,GAAS,GAAIkhB,EAAMxoE,GACnBsnD,EAAiB,WAAIkhB,EAAM1hC,WAC3BwgB,EAAQ,EAAIkhB,EAAMx2D,EAClBs1C,EAAQ,EAAIkhB,EAAMv2D,EAClBq1C,EAAY,MAAIkhB,EAAMh2D,MAEpB80C,EAAY,MADuB,GAAjC3nD,KAAK+O,QAAQovC,MAAMtyC,WACLg9D,EAAMz9D,MAGUvE,SAAhBgiE,EAAMz9D,OAAuBsB,WAAWm8D,EAAMz9D,MAAOuB,OAAOk8D,EAAMz9D,OAASvE,OAE7F8gD,EAAa,OAAIkhB,EAAMj2D,KACvB+0C,EAAqB,eAAI3nD,KAAK+O,QAAQovC,MAAMqqB,cAC5C7gB,EAAqB,eAAI3nD,KAAK+O,QAAQovC,MAAMqqB,cAC5CrqB,EAAM51C,KAAKo/C,GAGb,OAAQxJ,MAAMA,EAAOmB,MAAMA,GAG7B1/C,EAAQ2pD,WAAaA,GAIjB,SAAS1pD,EAAQD,EAASM,GAI9BL,EAAOD,QAA6B,mBAAXkI,SAA2BA,OAAe,QAAK5H,EAAoB,KAKxF,SAASL,EAAQD,EAASM,GAK5BL,EAAOD,QADa,mBAAXkI,QACQA,OAAe,QAAK5H,EAAoB,IAGxC,WACf,KAAM0D,OAAM,+DAOZ,SAAS/D,EAAQD,EAASM,GAqB9B,QAAS22B,MAnBT,GAAIhZ,GAAU3d,EAAoB,IAC9B0lC,EAAS1lC,EAAoB,IAC7BS,EAAOT,EAAoB,GAK3B+C,GAJU/C,EAAoB,GACnBA,EAAoB,GACvBA,EAAoB,IAClBA,EAAoB,IACnBA,EAAoB,KAC/BgnD,EAAYhnD,EAAoB,IAChCyB,EAAWzB,EAAoB,IAC/BuC,EAAavC,EAAoB,GAYrC2d,GAAQgZ,EAAK9iB,WASb8iB,EAAK9iB,UAAUohB,QAAU,SAAU9a,GACjCra,KAAKwwB,OAELxwB,KAAKwwB,IAAI9wB,KAAuBmS,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI9jB,WAAuBmF,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI0Y,mBAAuBr3B,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI0b,qBAAuBr6B,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIkI,gBAAuB7mB,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIs4C,cAAuBj3D,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIu4C,eAAuBl3D,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI5D,OAAuB/a,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI3oB,KAAuBgK,SAASM,cAAc,OACvDnS,KAAKwwB,IAAItI,MAAuBrW,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIvoB,IAAuB4J,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIrM,OAAuBtS,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIw4C,UAAuBn3D,SAASM,cAAc,OACvDnS,KAAKwwB,IAAIy4C,aAAuBp3D,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI04C,cAAuBr3D,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI24C,iBAAuBt3D,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI44C,eAAuBv3D,SAASM,cAAc,OACvDnS,KAAKwwB,IAAI64C,kBAAuBx3D,SAASM,cAAc,OAEvDnS,KAAKwwB,IAAI9wB,KAAK0I,UAA4B,oBAC1CpI,KAAKwwB,IAAI9jB,WAAWtE,UAAsB,sBAC1CpI,KAAKwwB,IAAI0Y,mBAAmB9gC,UAAc,+BAC1CpI,KAAKwwB,IAAI0b,qBAAqB9jC,UAAY,iCAC1CpI,KAAKwwB,IAAIkI,gBAAgBtwB,UAAiB,kBAC1CpI,KAAKwwB,IAAIs4C,cAAc1gE,UAAmB,gBAC1CpI,KAAKwwB,IAAIu4C,eAAe3gE,UAAkB,iBAC1CpI,KAAKwwB,IAAIvoB,IAAIG,UAA6B,eAC1CpI,KAAKwwB,IAAIrM,OAAO/b,UAA0B,kBAC1CpI,KAAKwwB,IAAI3oB,KAAKO,UAA4B,UAC1CpI,KAAKwwB,IAAI5D,OAAOxkB,UAA0B,UAC1CpI,KAAKwwB,IAAItI,MAAM9f,UAA2B,UAC1CpI,KAAKwwB,IAAIw4C,UAAU5gE,UAAuB,aAC1CpI,KAAKwwB,IAAIy4C,aAAa7gE,UAAoB,gBAC1CpI,KAAKwwB,IAAI04C,cAAc9gE,UAAmB,aAC1CpI,KAAKwwB,IAAI24C,iBAAiB/gE,UAAgB,gBAC1CpI,KAAKwwB,IAAI44C,eAAehhE,UAAkB,aAC1CpI,KAAKwwB,IAAI64C,kBAAkBjhE,UAAe,gBAE1CpI,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAI9jB,YACnC1M,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAI0Y,oBACnClpC,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAI0b,sBACnClsC,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAIkI,iBACnC14B,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAIs4C,eACnC9oE,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAIu4C,gBACnC/oE,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAIvoB,KACnCjI,KAAKwwB,IAAI9wB,KAAKqS,YAAY/R,KAAKwwB,IAAIrM,QAEnCnkB,KAAKwwB,IAAIkI,gBAAgB3mB,YAAY/R,KAAKwwB,IAAI5D,QAC9C5sB,KAAKwwB,IAAIs4C,cAAc/2D,YAAY/R,KAAKwwB,IAAI3oB,MAC5C7H,KAAKwwB,IAAIu4C,eAAeh3D,YAAY/R,KAAKwwB,IAAItI,OAE7CloB,KAAKwwB,IAAIkI,gBAAgB3mB,YAAY/R,KAAKwwB,IAAIw4C,WAC9ChpE,KAAKwwB,IAAIkI,gBAAgB3mB,YAAY/R,KAAKwwB,IAAIy4C,cAC9CjpE,KAAKwwB,IAAIs4C,cAAc/2D,YAAY/R,KAAKwwB,IAAI04C,eAC5ClpE,KAAKwwB,IAAIs4C,cAAc/2D,YAAY/R,KAAKwwB,IAAI24C,kBAC5CnpE,KAAKwwB,IAAIu4C,eAAeh3D,YAAY/R,KAAKwwB,IAAI44C,gBAC7CppE,KAAKwwB,IAAIu4C,eAAeh3D,YAAY/R,KAAKwwB,IAAI64C,mBAE7CrpE,KAAKmU,GAAG,cAAenU,KAAK42B,QAAQrB,KAAKv1B,OACzCA,KAAKmU,GAAG,QAASnU,KAAKk/B,SAAS3J,KAAKv1B,OACpCA,KAAKmU,GAAG,QAASnU,KAAKm/B,SAAS5J,KAAKv1B,OACpCA,KAAKmU,GAAG,YAAanU,KAAK6+B,aAAatJ,KAAKv1B,OAC5CA,KAAKmU,GAAG,OAAQnU,KAAK8+B,QAAQvJ,KAAKv1B,MAElC,IAAI+U,GAAK/U,IACTA,MAAKmU,GAAG,SAAU,SAAUg9C,GACtBA,GAAkC,GAApBA,EAAWn9C,MAEtBe,EAAGu0D,eACNv0D,EAAGu0D,aAAelvD,WAAW,WAC3BrF,EAAGu0D,aAAe,KAClBv0D,EAAG6hB,WACF,IAKL7hB,EAAG6hB,YAMP52B,KAAK8D,OAAS8hC,EAAO5lC,KAAKwwB,IAAI9wB,MAC5BkK,gBAAgB,IAElB5J,KAAKupE,YAEL,IAAIC,IACF,QAAS,QACT,MAAO,YAAa,OACpB,YAAa,OAAQ,UACrB,aAAc,iBAkChB,IAhCAA,EAAO5gE,QAAQ,SAAUiB,GACvB,GAAIR,GAAW,WACb,GAAI0Q,IAAQlQ,GAAO+K,OAAOtO,MAAMyN,UAAUnI,MAAMrL,KAAKwF,UAAW,GAC5DgP,GAAG62C,YACL72C,EAAGuZ,KAAK3V,MAAM5D,EAAIgF,GAGtBhF,GAAGjR,OAAOqQ,GAAGtK,EAAOR,GACpB0L,EAAGw0D,UAAU1/D,GAASR,IAIxBrJ,KAAKqG,OACH3G,QACAgN,cACAgsB,mBACAowC,iBACAC,kBACAn8C,UACA/kB,QACAqgB,SACAjgB,OACAkc,UACAxX,UACA4+B,UAAW,EACXk+B,aAAc,GAEhBzpE,KAAK2+B,SAEL3+B,KAAK0pE,YAAc,GAGdrvD,EAAW,KAAM,IAAIzW,OAAM,wBAChCyW;EAAUtI,YAAY/R,KAAKwwB,IAAI9wB,OA4BjCm3B,EAAK9iB,UAAUD,WAAa,SAAU/E,GACpC,GAAIA,EAAS,CAEX,GAAIP,IAAU,QAAS,SAAU,YAAa,YAAa,aAAc,QAAS,MAAO,cAAe,aAAc,iBAAkB,cAGxI,IAFA7N,EAAKyF,gBAAgBoI,EAAQxO,KAAK+O,QAASA,GAEV,SAA7B/O,KAAK+O,QAAQimB,aACf,IAAKh1B,KAAKo2B,UAAW,CACnB,GAAIA,GAAYp2B,KAAKo2B,UAAY,GAAInzB,GAASjD,KAAKo1B,KACnDgB,GAAUtiB,WAAa,SAAU/E,GAC/B,GAAIwE,GAAWxE,EAAUpO,EAAKgF,UAAWoJ,KACzCwE,GAASyhB,YAAc,MACvB/xB,EAAS8Q,UAAUD,WAAWvT,KAAK61B,EAAW7iB,IAEhDvT,KAAKgC,WAAWuG,KAAK6tB,QAIvB,IAAIp2B,KAAKo2B,UAAW,CAClB,GAAI1tB,GAAQ1I,KAAKgC,WAAWgF,QAAQhH,KAAKo2B,UAC3B,MAAV1tB,GACF1I,KAAKgC,WAAW2G,OAAOD,EAAO,GAEhC1I,KAAKo2B,UAAUliB,UACflU,KAAKo2B,UAAY,KAIjB,eAAiBp2B,MAAK+O,SACxBpN,EAAS22B,qBAAqBt4B,KAAKo1B,KAAMp1B,KAAK+O,QAAQymB,aAGpD,cAAgBzmB,KACdA,EAAQq7C,WACLpqD,KAAKqqD,YACRrqD,KAAKqqD,UAAY,GAAInD,GAAUlnD,KAAKwwB,IAAI9wB,OAItCM,KAAKqqD,YACPrqD,KAAKqqD,UAAUn2C,gBACRlU,MAAKqqD,YAMlBrqD,KAAK2pE,kBASP,GALA3pE,KAAKgC,WAAW4G,QAAQ,SAAUghE,GAChCA,EAAU91D,WAAW/E,KAInBA,GAAWA,EAAQsH,MACrB,KAAM,IAAIzS,OAAM,wEAIlB5D,MAAK42B,WAOPC,EAAK9iB,UAAU63C,SAAW,WACxB,OAAQ5rD,KAAKqqD,WAAarqD,KAAKqqD,UAAU6L,QAM3Cr/B,EAAK9iB,UAAUG,QAAU,WAEvBlU,KAAKqX,QAGLrX,KAAKsU,MAGLtU,KAAK6pE,kBAGD7pE,KAAKwwB,IAAI9wB,KAAKyK,YAChBnK,KAAKwwB,IAAI9wB,KAAKyK,WAAWsH,YAAYzR,KAAKwwB,IAAI9wB,MAEhDM,KAAKwwB,IAAM,KAGPxwB,KAAKqqD,YACPrqD,KAAKqqD,UAAUn2C,gBACRlU,MAAKqqD,UAId,KAAK,GAAIxgD,KAAS7J,MAAKupE,UACjBvpE,KAAKupE,UAAUpjE,eAAe0D,UACzB7J,MAAKupE,UAAU1/D,EAG1B7J,MAAKupE,UAAY,KACjBvpE,KAAK8D,OAAS,KAGd9D,KAAKgC,WAAW4G,QAAQ,SAAUghE,GAChCA,EAAU11D,YAGZlU,KAAKo1B,KAAO,MASdyB,EAAK9iB,UAAU61B,cAAgB,SAAU5O,EAAM36B,GAC7C,IAAKL,KAAKs2B,WACR,KAAM,IAAI1yB,OAAM,yDAGlB,IAAIkmE,GAAQzpE,GAAM,CAElBL,MAAKgC,WAAW4G,QAAQ,SAAUO,GAC5BA,YAAmB1G,IAAc0G,EAAQ4F,QAAQ1O,KAAOypE,GAC1D3gE,EAAQygC,cAAc5O,MAU5BnE,EAAK9iB,UAAU81B,cAAgB,SAASxpC,GACtC,IAAKL,KAAKs2B,WACR,KAAM,IAAI1yB,OAAM,yDAGlB,IAAIkmE,GAAQzpE,GAAM,EACdi2B,EAAat2B,KAAKs2B,WAAWuT,eAQjC,OANA7pC,MAAKgC,WAAW4G,QAAQ,SAAUO,GAC5BA,YAAmB1G,IAAc0G,EAAQ4F,QAAQ1O,KAAOypE,IAC1DxzC,EAAantB,EAAQ0gC,mBAIlBvT,GAUTO,EAAK9iB,UAAUg2D,cAAgB,SAAU/uC,EAAM36B,GAC7C,IAAKL,KAAKq2B,YACR,KAAM,IAAIzyB,OAAM,sCAGlB,IAAaiD,SAATm0B,EACF,KAAM,IAAIp3B,OAAM,qDAGlB,IACIomE,GAAQ1zC,EAAY2zC,EADpBC,EAAKvpE,EAAKuG,QAAQ8zB,EAAM,QAAQ3zB,SAyCpC,OApCKrH,MAAKmqE,cAAgBnqE,KAAKmqE,aAAaxjE,cAAgBL,QAC1DtG,KAAKmqE,cAAgB,IAIZtjE,SAAPxG,GAEF2pE,EAAShqE,KAAKmqE,aAAa51D,OAAO,SAAUpL,GAC1C,MAAOxI,GAAKoD,SAASoF,KAGvB8gE,EAAcD,EAAOhkE,OAAS,EAAIxB,KAAKJ,IAAIuU,MAAM,KAAMqxD,GAAU,EAAI,IAKrEhqE,KAAKmqE,aAAavhE,QAAQ,SAAUO,GAClC,GAAIA,IAAY9I,EACd,KAAM,IAAIuD,OAAM,mCAIpBqmE,EAAc5pE,GAGhBL,KAAKmqE,aAAa5hE,KAAK0hE,GAEvB3zC,EAAa,GAAI7zB,GAAWzC,KAAKo1B,MAC/BoU,gBAAiB,EACjBxO,KAAOkvC,EACP7pE,GAAK4pE,IAGPjqE,KAAKgC,WAAWuG,KAAK+tB,GACrBt2B,KAAKsiB,SAEE2nD,GAQTpzC,EAAK9iB,UAAUq2D,iBAAmB,SAAU/pE,GAE1C,GAAI0U,GAAK/U,IAETA,MAAKgC,WAAW4G,QAAQ,SAAU0pB,EAAK5pB,EAAO1G,GACxCswB,YAAe7vB,IAAc6vB,EAAIvjB,QAAQ1O,KAAOA,GAE3B,IAAnBiyB,EAAIvjB,QAAQ1O,KACd0U,EAAGo1D,aAAaxhE,OAAOoM,EAAGo1D,aAAanjE,QAAQ3G,GAAK,GACpD2B,EAAW2G,OAAOD,EAAO,GACzB4pB,EAAIpe,cAWZ2iB,EAAK9iB,UAAUmgC,gBAAkB,WAC/B,MAAOl0C,MAAKu2B,SAAWv2B,KAAKu2B,QAAQ2d,uBAetCrd,EAAK9iB,UAAUsD,MAAQ,SAASgzD,KAEzBA,GAAQA,EAAKpoE,QAChBjC,KAAK22B,SAAS,QAIX0zC,GAAQA,EAAKz1C,SAChB50B,KAAK02B,UAAU,QAIZ2zC,GAAQA,EAAKt7D,WAChB/O,KAAKgC,WAAW4G,QAAQ,SAAUghE,GAChCA,EAAU91D,WAAW81D,EAAU90C,kBAGjC90B,KAAK8T,WAAW9T,KAAK80B,kBAazB+B,EAAK9iB,UAAUujB,IAAM,SAASvoB,GAC5B,GAAIonB,GAAQn2B,KAAKm3B,eAGjB,IAAoB,OAAhBhB,EAAMjmB,OAAgC,OAAdimB,EAAMhmB,IAAlC,CAIA,GAAIknB,GAAWtoB,GAA+BlI,SAApBkI,EAAQsoB,QAAyBtoB,EAAQsoB,SAAU,CAC7Er3B,MAAKm2B,MAAMnC,SAASmC,EAAMjmB,MAAOimB,EAAMhmB,IAAKknB,KAQ9CR,EAAK9iB,UAAUojB,cAAgB,WAE7B,GAAID,GAAYl3B,KAAK43B,eAGjB1nB,EAAQgnB,EAAU/yB,IAClBgM,EAAM+mB,EAAU9yB,GACpB,IAAa,MAAT8L,GAAwB,MAAPC,EAAa,CAChC,GAAI8iB,GAAY9iB,EAAI9I,UAAY6I,EAAM7I,SACtB,IAAZ4rB,IAEFA,EAAW,OAEb/iB,EAAQ,GAAItL,MAAKsL,EAAM7I,UAAuB,IAAX4rB,GACnC9iB,EAAM,GAAIvL,MAAKuL,EAAI9I,UAAuB,IAAX4rB,GAGjC,OACE/iB,MAAOA,EACPC,IAAKA,IAwBT0mB,EAAK9iB,UAAUqjB,UAAY,SAASlnB,EAAOC,EAAKpB,GAC9C,GAAIsoB,EACJ,IAAwB,GAApBtxB,UAAUC,OAAa,CACzB,GAAImwB,GAAQpwB,UAAU,EACtBsxB,GAA6BxwB,SAAlBsvB,EAAMkB,QAAyBlB,EAAMkB,SAAU,EAC1Dr3B,KAAKm2B,MAAMnC,SAASmC,EAAMjmB,MAAOimB,EAAMhmB,IAAKknB,OAG5CA,GAAWtoB,GAA+BlI,SAApBkI,EAAQsoB,QAAyBtoB,EAAQsoB,SAAU,EACzEr3B,KAAKm2B,MAAMnC,SAAS9jB,EAAOC,EAAKknB,IAcpCR,EAAK9iB,UAAU2U,OAAS,SAASsS,EAAMjsB,GACrC,GAAIkkB,GAAWjzB,KAAKm2B,MAAMhmB,IAAMnQ,KAAKm2B,MAAMjmB,MACvC9B,EAAIzN,EAAKuG,QAAQ8zB,EAAM,QAAQ3zB,UAE/B6I,EAAQ9B,EAAI6kB,EAAW,EACvB9iB,EAAM/B,EAAI6kB,EAAW,EACrBoE,EAAWtoB,GAA+BlI,SAApBkI,EAAQsoB,QAAyBtoB,EAAQsoB,SAAU,CAE7Er3B,MAAKm2B,MAAMnC,SAAS9jB,EAAOC,EAAKknB,IAOlCR,EAAK9iB,UAAUu2D,UAAY,WACzB,GAAIn0C,GAAQn2B,KAAKm2B,MAAMiK,UACvB,QACElwB,MAAO,GAAItL,MAAKuxB,EAAMjmB,OACtBC,IAAK,GAAIvL,MAAKuxB,EAAMhmB,OAOxB0mB,EAAK9iB,UAAUuO,OAAS,WACtBtiB,KAAK42B,WAQPC,EAAK9iB,UAAU6iB,QAAU,WACvB,GAAIiS,IAAU,EACV95B,EAAU/O,KAAK+O,QACf1I,EAAQrG,KAAKqG,MACbmqB,EAAMxwB,KAAKwwB,GAEf,IAAKA,EAAL,CAEA7uB,EAAS82B,kBAAkBz4B,KAAKo1B,KAAMp1B,KAAK+O,QAAQymB,aAGxB,OAAvBzmB,EAAQimB,aACVr0B,EAAKwH,aAAaqoB,EAAI9wB,KAAM,OAC5BiB,EAAK8H,gBAAgB+nB,EAAI9wB,KAAM,YAG/BiB,EAAK8H,gBAAgB+nB,EAAI9wB,KAAM,OAC/BiB,EAAKwH,aAAaqoB,EAAI9wB,KAAM,WAI9B8wB,EAAI9wB,KAAK6N,MAAM0nB,UAAYt0B,EAAKyJ,OAAOK,OAAOsE,EAAQkmB,UAAW,IACjEzE,EAAI9wB,KAAK6N,MAAM2nB,UAAYv0B,EAAKyJ,OAAOK,OAAOsE,EAAQmmB,UAAW,IACjE1E,EAAI9wB,KAAK6N,MAAM4F,MAAQxS,EAAKyJ,OAAOK,OAAOsE,EAAQoE,MAAO,IAGzD9M,EAAMsG,OAAO9E,MAAU2oB,EAAIkI,gBAAgB7H,YAAcL,EAAIkI,gBAAgBrY,aAAe,EAC5Fha,EAAMsG,OAAOub,MAAS7hB,EAAMsG,OAAO9E,KACnCxB,EAAMsG,OAAO1E,KAAUuoB,EAAIkI,gBAAgB3H,aAAeP,EAAIkI,gBAAgBhT,cAAgB,EAC9Frf,EAAMsG,OAAOwX,OAAS9d,EAAMsG,OAAO1E,GACnC,IAAIsiE,GAAkB/5C,EAAI9wB,KAAKqxB,aAAeP,EAAI9wB,KAAKgmB,aACnD8kD,EAAkBh6C,EAAI9wB,KAAKmxB,YAAcL,EAAI9wB,KAAK2gB,WAIb,KAArCmQ,EAAIkI,gBAAgBhT,eACtBrf,EAAMsG,OAAO9E,KAAOxB,EAAMsG,OAAO1E,IACjC5B,EAAMsG,OAAOub,MAAS7hB,EAAMsG,OAAO9E,MAEP,IAA1B2oB,EAAI9wB,KAAKgmB,eACX8kD,EAAkBD,GAKpBlkE,EAAMumB,OAAOxZ,OAASod,EAAI5D,OAAOmE,aACjC1qB,EAAMwB,KAAKuL,OAAWod,EAAI3oB,KAAKkpB,aAC/B1qB,EAAM6hB,MAAM9U,OAAUod,EAAItI,MAAM6I,aAChC1qB,EAAM4B,IAAImL,OAAYod,EAAIvoB,IAAIyd,eAAoBrf,EAAMsG,OAAO1E,IAC/D5B,EAAM8d,OAAO/Q,OAASod,EAAIrM,OAAOuB,eAAiBrf,EAAMsG,OAAOwX,MAM/D,IAAI2M,GAAgBtsB,KAAKJ,IAAIiC,EAAMwB,KAAKuL,OAAQ/M,EAAMumB,OAAOxZ,OAAQ/M,EAAM6hB,MAAM9U,QAC7Eq3D,EAAapkE,EAAM4B,IAAImL,OAAS0d,EAAgBzqB,EAAM8d,OAAO/Q,OAC/Dm3D,EAAmBlkE,EAAMsG,OAAO1E,IAAM5B,EAAMsG,OAAOwX,MACrDqM,GAAI9wB,KAAK6N,MAAM6F,OAASzS,EAAKyJ,OAAOK,OAAOsE,EAAQqE,OAAQq3D,EAAa,MAGxEpkE,EAAM3G,KAAK0T,OAASod,EAAI9wB,KAAKqxB,aAC7B1qB,EAAMqG,WAAW0G,OAAS/M,EAAM3G,KAAK0T,OAASm3D,CAC9C,IAAIruC,GAAkB71B,EAAM3G,KAAK0T,OAAS/M,EAAM4B,IAAImL,OAAS/M,EAAM8d,OAAO/Q,OACxEm3D,CACFlkE,GAAMqyB,gBAAgBtlB,OAAU8oB,EAChC71B,EAAMyiE,cAAc11D,OAAY8oB,EAChC71B,EAAM0iE,eAAe31D,OAAW/M,EAAMyiE,cAAc11D,OAGpD/M,EAAM3G,KAAKyT,MAAQqd,EAAI9wB,KAAKmxB,YAC5BxqB,EAAMqG,WAAWyG,MAAQ9M,EAAM3G,KAAKyT,MAAQq3D,EAC5CnkE,EAAMwB,KAAKsL,MAAQqd,EAAIs4C,cAAczoD,cAAkBha,EAAMsG,OAAO9E,KACpExB,EAAMyiE,cAAc31D,MAAQ9M,EAAMwB,KAAKsL,MACvC9M,EAAM6hB,MAAM/U,MAAQqd,EAAIu4C,eAAe1oD,cAAgBha,EAAMsG,OAAOub,MACpE7hB,EAAM0iE,eAAe51D,MAAQ9M,EAAM6hB,MAAM/U,KACzC,IAAIu3D,GAAcrkE,EAAM3G,KAAKyT,MAAQ9M,EAAMwB,KAAKsL,MAAQ9M,EAAM6hB,MAAM/U,MAAQq3D,CAC5EnkE,GAAMumB,OAAOzZ,MAAiBu3D,EAC9BrkE,EAAMqyB,gBAAgBvlB,MAAQu3D,EAC9BrkE,EAAM4B,IAAIkL,MAAoBu3D,EAC9BrkE,EAAM8d,OAAOhR,MAAiBu3D,EAG9Bl6C,EAAI9jB,WAAWa,MAAM6F,OAAmB/M,EAAMqG,WAAW0G,OAAS,KAClEod,EAAI0Y,mBAAmB37B,MAAM6F,OAAW/M,EAAMqG,WAAW0G,OAAS,KAClEod,EAAI0b,qBAAqB3+B,MAAM6F,OAAS/M,EAAMqyB,gBAAgBtlB,OAAS,KACvEod,EAAIkI,gBAAgBnrB,MAAM6F,OAAc/M,EAAMqyB,gBAAgBtlB,OAAS,KACvEod,EAAIs4C,cAAcv7D,MAAM6F,OAAgB/M,EAAMyiE,cAAc11D,OAAS,KACrEod,EAAIu4C,eAAex7D,MAAM6F,OAAe/M,EAAM0iE,eAAe31D,OAAS,KAEtEod,EAAI9jB,WAAWa,MAAM4F,MAAmB9M,EAAMqG,WAAWyG,MAAQ,KACjEqd,EAAI0Y,mBAAmB37B,MAAM4F,MAAW9M,EAAMqyB,gBAAgBvlB,MAAQ,KACtEqd,EAAI0b,qBAAqB3+B,MAAM4F,MAAS9M,EAAMqG,WAAWyG,MAAQ,KACjEqd,EAAIkI,gBAAgBnrB,MAAM4F,MAAc9M,EAAMumB,OAAOzZ,MAAQ,KAC7Dqd,EAAIvoB,IAAIsF,MAAM4F,MAA0B9M,EAAM4B,IAAIkL,MAAQ,KAC1Dqd,EAAIrM,OAAO5W,MAAM4F,MAAuB9M,EAAM8d,OAAOhR,MAAQ,KAG7Dqd,EAAI9jB,WAAWa,MAAM1F,KAAiB,IACtC2oB,EAAI9jB,WAAWa,MAAMtF,IAAiB,IACtCuoB,EAAI0Y,mBAAmB37B,MAAM1F,KAAUxB,EAAMwB,KAAKsL,MAAQ9M,EAAMsG,OAAO9E,KAAQ,KAC/E2oB,EAAI0Y,mBAAmB37B,MAAMtF,IAAS,IACtCuoB,EAAI0b,qBAAqB3+B,MAAM1F,KAAO,IACtC2oB,EAAI0b,qBAAqB3+B,MAAMtF,IAAO5B,EAAM4B,IAAImL,OAAS,KACzDod,EAAIkI,gBAAgBnrB,MAAM1F,KAAYxB,EAAMwB,KAAKsL,MAAQ,KACzDqd,EAAIkI,gBAAgBnrB,MAAMtF,IAAY5B,EAAM4B,IAAImL,OAAS,KACzDod,EAAIs4C,cAAcv7D,MAAM1F,KAAc,IACtC2oB,EAAIs4C,cAAcv7D,MAAMtF,IAAc5B,EAAM4B,IAAImL,OAAS,KACzDod,EAAIu4C,eAAex7D,MAAM1F,KAAcxB,EAAMwB,KAAKsL,MAAQ9M,EAAMumB,OAAOzZ,MAAS,KAChFqd,EAAIu4C,eAAex7D,MAAMtF,IAAa5B,EAAM4B,IAAImL,OAAS,KACzDod,EAAIvoB,IAAIsF,MAAM1F,KAAwBxB,EAAMwB,KAAKsL,MAAQ,KACzDqd,EAAIvoB,IAAIsF,MAAMtF,IAAwB,IACtCuoB,EAAIrM,OAAO5W,MAAM1F,KAAqBxB,EAAMwB,KAAKsL,MAAQ,KACzDqd,EAAIrM,OAAO5W,MAAMtF,IAAsB5B,EAAM4B,IAAImL,OAAS/M,EAAMqyB,gBAAgBtlB,OAAU,KAI1FpT,KAAK2qE,kBAGL,IAAIpgD,GAASvqB,KAAKqG,MAAMklC,SACG,WAAvBx8B,EAAQimB,cACVzK,GAAU/lB,KAAKJ,IAAIpE,KAAKqG,MAAMqyB,gBAAgBtlB,OAASpT,KAAKqG,MAAMumB,OAAOxZ,OACvEpT,KAAKqG,MAAMsG,OAAO1E,IAAMjI,KAAKqG,MAAMsG,OAAOwX,OAAQ,IAEtDqM,EAAI5D,OAAOrf,MAAM1F,KAAO,IACxB2oB,EAAI5D,OAAOrf,MAAMtF,IAAOsiB,EAAS,KACjCiG,EAAI3oB,KAAK0F,MAAM1F,KAAS,IACxB2oB,EAAI3oB,KAAK0F,MAAMtF,IAASsiB,EAAS,KACjCiG,EAAItI,MAAM3a,MAAM1F,KAAQ,IACxB2oB,EAAItI,MAAM3a,MAAMtF,IAAQsiB,EAAS,IAGjC,IAAIqgD,GAAwC,GAAxB5qE,KAAKqG,MAAMklC,UAAiB,SAAW,GACvDs/B,EAAmB7qE,KAAKqG,MAAMklC,WAAavrC,KAAKqG,MAAMojE,aAAe,SAAW,EAYpF,IAXAj5C,EAAIw4C,UAAUz7D,MAAM8qB,WAAsBuyC,EAC1Cp6C,EAAIy4C,aAAa17D,MAAM8qB,WAAmBwyC,EAC1Cr6C,EAAI04C,cAAc37D,MAAM8qB,WAAkBuyC,EAC1Cp6C,EAAI24C,iBAAiB57D,MAAM8qB,WAAewyC,EAC1Cr6C,EAAI44C,eAAe77D,MAAM8qB,WAAiBuyC,EAC1Cp6C,EAAI64C,kBAAkB97D,MAAM8qB,WAAcwyC,EAG1C7qE,KAAKgC,WAAW4G,QAAQ,SAAUghE,GAChC/gC,EAAU+gC,EAAUtnD,UAAYumB,IAE9BA,EAAS,CAEX,GAAIiiC,GAAc,CACd9qE,MAAK0pE,YAAcoB,GACrB9qE,KAAK0pE,cACL1pE,KAAK42B,WAGL4C,QAAQpF,IAAI,qCAEdp0B,KAAK0pE,YAAc,EAGrB1pE,KAAKsuB,KAAK,oBAIZuI,EAAK9iB,UAAUg3D,QAAU,WACvB,KAAM,IAAInnE,OAAM,wDAUlBizB,EAAK9iB,UAAUu1B,eAAiB,SAAStO,GACvC,IAAKh7B,KAAKq2B,YACR,KAAM,IAAIzyB,OAAM,sCAGlB5D,MAAKq2B,YAAYiT,eAAetO,IAQlCnE,EAAK9iB,UAAUw1B,eAAiB,WAC9B,IAAKvpC,KAAKq2B,YACR,KAAM,IAAIzyB,OAAM,sCAGlB,OAAO5D,MAAKq2B,YAAYkT,kBAU1B1S,EAAK9iB,UAAUiiB,QAAU,SAAS3jB,GAChC,MAAO1Q,GAASo0B,OAAO/1B,KAAMqS,EAAGrS,KAAKqG,MAAMumB,OAAOzZ,QAUpD0jB,EAAK9iB,UAAUmiB,cAAgB,SAAS7jB,GACtC,MAAO1Q,GAASo0B,OAAO/1B,KAAMqS,EAAGrS,KAAKqG,MAAM3G,KAAKyT,QAalD0jB,EAAK9iB,UAAU6hB,UAAY,SAASoF,GAClC,MAAOr5B,GAASg0B,SAAS31B,KAAMg7B,EAAMh7B,KAAKqG,MAAMumB,OAAOzZ,QAczD0jB,EAAK9iB,UAAU+hB,gBAAkB,SAASkF,GACxC,MAAOr5B,GAASg0B,SAAS31B,KAAMg7B,EAAMh7B,KAAKqG,MAAM3G,KAAKyT,QAUvD0jB,EAAK9iB,UAAU41D,gBAAkB,WACA,GAA3B3pE,KAAK+O,QAAQgmB,WACf/0B,KAAKgrE,mBAGLhrE,KAAK6pE,mBASThzC,EAAK9iB,UAAUi3D,iBAAmB,WAChC,GAAIj2D,GAAK/U,IAETA,MAAK6pE,kBAEL7pE,KAAKirE,UAAY,WACf,MAA6B,IAAzBl2D,EAAGhG,QAAQgmB,eAEbhgB,GAAG80D,uBAID90D,EAAGyb,IAAI9wB,OAKJqV,EAAGyb,IAAI9wB,KAAKmxB,aAAe9b,EAAG1O,MAAMouC,WACtC1/B,EAAGyb,IAAI9wB,KAAKqxB,cAAgBhc,EAAG1O,MAAM6kE,cACtCn2D,EAAG1O,MAAMouC,UAAY1/B,EAAGyb,IAAI9wB,KAAKmxB,YACjC9b,EAAG1O,MAAM6kE,WAAan2D,EAAGyb,IAAI9wB,KAAKqxB,aAElChc,EAAGuZ,KAAK,aAMd3tB,EAAKuI,iBAAiBpB,OAAQ,SAAU9H,KAAKirE,WAE7CjrE,KAAKmrE,WAAaC,YAAYprE,KAAKirE,UAAW,MAOhDp0C,EAAK9iB,UAAU81D,gBAAkB,WAC3B7pE,KAAKmrE,aACPj4C,cAAclzB,KAAKmrE,YACnBnrE,KAAKmrE,WAAatkE,QAIpBlG,EAAK+I,oBAAoB5B,OAAQ,SAAU9H,KAAKirE,WAChDjrE,KAAKirE,UAAY,MAQnBp0C,EAAK9iB,UAAUmrB,SAAW,WACxBl/B,KAAK2+B,MAAM4B,eAAgB,GAQ7B1J,EAAK9iB,UAAUorB,SAAW,WACxBn/B,KAAK2+B,MAAM4B,eAAgB,GAQ7B1J,EAAK9iB,UAAU8qB,aAAe,WAC5B7+B,KAAK2+B,MAAM0sC,iBAAmBrrE,KAAKqG,MAAMklC,WAQ3C1U,EAAK9iB,UAAU+qB,QAAU,SAAUj1B,GAGjC,GAAK7J,KAAK2+B,MAAM4B,cAAhB,CAEA,GAAIpR,GAAQtlB,EAAM22B,QAAQE,OAEtB4qC,EAAetrE,KAAKurE,gBACpBC,EAAexrE,KAAKyrE,cAAczrE,KAAK2+B,MAAM0sC,iBAAmBl8C,EAGhEq8C,IAAgBF,IAClBtrE,KAAK42B,UACL52B,KAAKsuB,KAAK,mBAUduI,EAAK9iB,UAAU03D,cAAgB,SAAUlgC,GAGvC,MAFAvrC,MAAKqG,MAAMklC,UAAYA,EACvBvrC,KAAK2qE,mBACE3qE,KAAKqG,MAAMklC,WAQpB1U,EAAK9iB,UAAU42D,iBAAmB,WAEhC,GAAIlB,GAAejlE,KAAKL,IAAInE,KAAKqG,MAAMqyB,gBAAgBtlB,OAASpT,KAAKqG,MAAMumB,OAAOxZ,OAAQ,EAc1F,OAbIq2D,IAAgBzpE,KAAKqG,MAAMojE,eAGG,UAA5BzpE,KAAK+O,QAAQimB,cACfh1B,KAAKqG,MAAMklC,WAAck+B,EAAezpE,KAAKqG,MAAMojE,cAErDzpE,KAAKqG,MAAMojE,aAAeA,GAIxBzpE,KAAKqG,MAAMklC,UAAY,IAAGvrC,KAAKqG,MAAMklC,UAAY,GACjDvrC,KAAKqG,MAAMklC,UAAYk+B,IAAczpE,KAAKqG,MAAMklC,UAAYk+B,GAEzDzpE,KAAKqG,MAAMklC,WAQpB1U,EAAK9iB,UAAUw3D,cAAgB,WAC7B,MAAOvrE,MAAKqG,MAAMklC,WAGpB1rC,EAAOD,QAAUi3B,GAKb,SAASh3B,EAAQD,EAASM,GAE9B,GAAI0lC,GAAS1lC,EAAoB,GAOjCN,GAAQkhC,YAAc,SAAS33B,EAASU,GACtC,GAAI6hE,GAAY,KAMZvqC,EAAUyE,EAAO/7B,MAAM8hE,aAAa9hE,EAAO6hE,GAC3ClrC,EAAUoF,EAAO/7B,MAAM+hE,iBAAiB5rE,KAAM0rE,EAAWvqC,EAASt3B,EAWtE,OAPI7E,OAAMw7B,EAAQ5T,OAAO0S,SACvBkB,EAAQ5T,OAAO0S,MAAQz1B,EAAMy1B,OAE3Bt6B,MAAMw7B,EAAQ5T,OAAO2S,SACvBiB,EAAQ5T,OAAO2S,MAAQ11B,EAAM01B,OAGxBiB,IAML,SAAS3gC,EAAQD,GAGrBA,EAAY,IACV+6B,QAAS,UACTK,KAAM,QAERp7B,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,GAG/BA,EAAY,IACVisE,OAAQ,aACR7wC,KAAM,QAERp7B,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,IAK3B,SAASC,EAAQD,EAASM,GAQ9B,QAASyuC,GAAKxW,EAASppB,GACrB/O,KAAKm4B,QAAUA,EACfn4B,KAAK+O,QAAUA,EALjB,GAAInO,GAAUV,EAAoB,GAC9B2uC,EAAS3uC,EAAoB,GAOjCyuC,GAAK56B,UAAU87B,UAAY,SAASC,GAGlC,IAAK,GAFDpzB,GAAOozB,EAAU,GAAGx9B,EACpBsK,EAAOkzB,EAAU,GAAGx9B,EACfga,EAAI,EAAGA,EAAIwjB,EAAU9pC,OAAQsmB,IACpC5P,EAAOA,EAAOozB,EAAUxjB,GAAGha,EAAIw9B,EAAUxjB,GAAGha,EAAIoK,EAChDE,EAAOA,EAAOkzB,EAAUxjB,GAAGha,EAAIw9B,EAAUxjB,GAAGha,EAAIsK,CAElD,QAAQzY,IAAKuY,EAAMtY,IAAKwY,EAAMgzB,iBAAkB5vC,KAAK+O,QAAQ6gC,mBAU/DjB,EAAK56B,UAAUg8B,KAAO,SAAUlY,EAAStlB,EAAOy9B,GAC9C,GAAe,MAAXnY,GACEA,EAAQ7xB,OAAS,EAAG,CACtB,GAAImpC,GAAMliC,EACNyuC,EAAYz3C,OAAO+rC,EAAUlG,IAAIv8B,MAAM6F,OAAOtI,QAAQ,KAAK,IAgB/D,IAfAqkC,EAAOvuC,EAAQ8Q,cAAc,OAAQs+B,EAAU7E,YAAa6E,EAAUlG,KACtEqF,EAAKx8B,eAAe,KAAM,QAASJ,EAAMnK,WACtBvB,SAAhB0L,EAAMhF,OACP4hC,EAAKx8B,eAAe,KAAM,QAASJ,EAAMhF,OAKzCN,EADsC,GAApCsF,EAAMxD,QAAQggC,WAAW//B,QACvB2/B,EAAKm9B,YAAYj0C,EAAStlB,GAG1Bo8B,EAAKo9B,QAAQl0C,GAIiB,GAAhCtlB,EAAMxD,QAAQwgC,OAAOvgC,QAAiB,CACxC,GACIg9D,GADA58B,EAAWxuC,EAAQ8Q,cAAc,OAAQs+B,EAAU7E,YAAa6E,EAAUlG,IAG5EkiC,GADsC,OAApCz5D,EAAMxD,QAAQwgC,OAAOva,YACf,IAAM6C,EAAQ,GAAGxlB,EAAI,MAAgBpF,EAAI,IAAM4qB,EAAQA,EAAQ7xB,OAAS,GAAGqM,EAAI,KAG/E,IAAMwlB,EAAQ,GAAGxlB,EAAI,IAAMqpC,EAAY,IAAMzuC,EAAI,IAAM4qB,EAAQA,EAAQ7xB,OAAS,GAAGqM,EAAI,IAAMqpC,EAEvGtM,EAASz8B,eAAe,KAAM,QAASJ,EAAMnK,UAAY,SACvBvB,SAA/B0L,EAAMxD,QAAQwgC,OAAOhiC,OACtB6hC,EAASz8B,eAAe,KAAM,QAASJ,EAAMxD,QAAQwgC,OAAOhiC,OAE9D6hC,EAASz8B,eAAe,KAAM,IAAKq5D,GAGrC78B,EAAKx8B,eAAe,KAAM,IAAK,IAAM1F,GAGG,GAApCsF,EAAMxD,QAAQ2D,WAAW1D,SAC3B6/B,EAAOkB,KAAKlY,EAAStlB,EAAOy9B,KAepCrB,EAAKs9B,mBAAqB,SAAS34D,GAMjC,IAAK,GAJD44D,GAAIC,EAAIC,EAAIC,EAAIC,EAAKC,EACrBt/D,EAAIzI,KAAK4pB,MAAM9a,EAAK,GAAGjB,GAAK,IAAM7N,KAAK4pB,MAAM9a,EAAK,GAAGhB,GAAK,IAC1Dk6D,EAAgB,EAAE,EAClBxmE,EAASsN,EAAKtN,OACTH,EAAI,EAAOG,EAAS,EAAbH,EAAgBA,IAE9BqmE,EAAW,GAALrmE,EAAUyN,EAAK,GAAKA,EAAKzN,EAAE,GACjCsmE,EAAK74D,EAAKzN,GACVumE,EAAK94D,EAAKzN,EAAE,GACZwmE,EAAcrmE,EAARH,EAAI,EAAcyN,EAAKzN,EAAE,GAAKumE,EAUpCE,GAAQj6D,IAAM65D,EAAG75D,EAAI,EAAE85D,EAAG95D,EAAI+5D,EAAG/5D,GAAIm6D,EAAgBl6D,IAAM45D,EAAG55D,EAAI,EAAE65D,EAAG75D,EAAI85D,EAAG95D,GAAIk6D,GAClFD,GAAQl6D,GAAM85D,EAAG95D,EAAI,EAAE+5D,EAAG/5D,EAAIg6D,EAAGh6D,GAAIm6D,EAAgBl6D,GAAM65D,EAAG75D,EAAI,EAAE85D,EAAG95D,EAAI+5D,EAAG/5D,GAAIk6D,GAGlFv/D,GAAK,IACLq/D,EAAIj6D,EAAI,IACRi6D,EAAIh6D,EAAI,IACRi6D,EAAIl6D,EAAI,IACRk6D,EAAIj6D,EAAI,IACR85D,EAAG/5D,EAAI,IACP+5D,EAAG95D,EAAI,GAGT,OAAOrF,IAcT0hC,EAAKm9B,YAAc,SAASx4D,EAAMf,GAChC,GAAI08B,GAAQ18B,EAAMxD,QAAQggC,WAAWE,KACrC,IAAa,GAATA,GAAwBpoC,SAAVooC,EAChB,MAAOjvC,MAAKisE,mBAAmB34D,EAO/B,KAAK,GAJD44D,GAAIC,EAAIC,EAAIC,EAAIC,EAAKC,EAAKE,EAAGC,EAAGC,EAAIC,EAAGzhD,EAAG0hD,EAAGC,EAC7CC,EAAQC,EAAQC,EAASC,EAASC,EAASC,EAC3CngE,EAAIzI,KAAK4pB,MAAM9a,EAAK,GAAGjB,GAAK,IAAM7N,KAAK4pB,MAAM9a,EAAK,GAAGhB,GAAK,IAC1DtM,EAASsN,EAAKtN,OACTH,EAAI,EAAOG,EAAS,EAAbH,EAAgBA,IAE9BqmE,EAAW,GAALrmE,EAAUyN,EAAK,GAAKA,EAAKzN,EAAE,GACjCsmE,EAAK74D,EAAKzN,GACVumE,EAAK94D,EAAKzN,EAAE,GACZwmE,EAAcrmE,EAARH,EAAI,EAAcyN,EAAKzN,EAAE,GAAKumE,EAEpCK,EAAKjoE,KAAK6rB,KAAK7rB,KAAK+vB,IAAI23C,EAAG75D,EAAI85D,EAAG95D,EAAE,GAAK7N,KAAK+vB,IAAI23C,EAAG55D,EAAI65D,EAAG75D,EAAE,IAC9Do6D,EAAKloE,KAAK6rB,KAAK7rB,KAAK+vB,IAAI43C,EAAG95D,EAAI+5D,EAAG/5D,EAAE,GAAK7N,KAAK+vB,IAAI43C,EAAG75D,EAAI85D,EAAG95D,EAAE,IAC9Dq6D,EAAKnoE,KAAK6rB,KAAK7rB,KAAK+vB,IAAI63C,EAAG/5D,EAAIg6D,EAAGh6D,EAAE,GAAK7N,KAAK+vB,IAAI63C,EAAG95D,EAAI+5D,EAAG/5D,EAAE,IAY9Dy6D,EAAUvoE,KAAK+vB,IAAIo4C,EAAK19B,GACxBg+B,EAAUzoE,KAAK+vB,IAAIo4C,EAAG,EAAE19B,GACxB+9B,EAAUxoE,KAAK+vB,IAAIm4C,EAAKz9B,GACxBi+B,EAAU1oE,KAAK+vB,IAAIm4C,EAAG,EAAEz9B,GACxBm+B,EAAU5oE,KAAK+vB,IAAIk4C,EAAKx9B,GACxBk+B,EAAU3oE,KAAK+vB,IAAIk4C,EAAG,EAAEx9B,GAExB29B,EAAI,EAAEO,EAAU,EAAEC,EAASJ,EAASE,EACpC/hD,EAAI,EAAE8hD,EAAU,EAAEF,EAASC,EAASE,EACpCL,EAAI,EAAEO,GAAUA,EAASJ,GACrBH,EAAI,IAAIA,EAAI,EAAIA,GACpBC,EAAI,EAAEC,GAAUA,EAASC,GACrBF,EAAI,IAAIA,EAAI,EAAIA,GAEpBR,GAAQj6D,IAAM66D,EAAUhB,EAAG75D,EAAIu6D,EAAET,EAAG95D,EAAI86D,EAAUf,EAAG/5D,GAAKw6D,EACxDv6D,IAAM46D,EAAUhB,EAAG55D,EAAIs6D,EAAET,EAAG75D,EAAI66D,EAAUf,EAAG95D,GAAKu6D,GAEpDN,GAAQl6D,GAAM46D,EAAUd,EAAG95D,EAAI8Y,EAAEihD,EAAG/5D,EAAI66D,EAAUb,EAAGh6D,GAAKy6D,EACxDx6D,GAAM26D,EAAUd,EAAG75D,EAAI6Y,EAAEihD,EAAG95D,EAAI46D,EAAUb,EAAG/5D,GAAKw6D,GAEvC,GAATR,EAAIj6D,GAAmB,GAATi6D,EAAIh6D,IAASg6D,EAAMH,GACxB,GAATI,EAAIl6D,GAAmB,GAATk6D,EAAIj6D,IAASi6D,EAAMH,GACrCn/D,GAAK,IACLq/D,EAAIj6D,EAAI,IACRi6D,EAAIh6D,EAAI,IACRi6D,EAAIl6D,EAAI,IACRk6D,EAAIj6D,EAAI,IACR85D,EAAG/5D,EAAI,IACP+5D,EAAG95D,EAAI,GAGT,OAAOrF,IAUX0hC,EAAKo9B,QAAU,SAASz4D,GAGtB,IAAK,GADDrG,GAAI,GACCpH,EAAI,EAAGA,EAAIyN,EAAKtN,OAAQH,IAE7BoH,GADO,GAALpH,EACGyN,EAAKzN,GAAGwM,EAAI,IAAMiB,EAAKzN,GAAGyM,EAG1B,IAAMgB,EAAKzN,GAAGwM,EAAI,IAAMiB,EAAKzN,GAAGyM,CAGzC,OAAOrF,IAGTpN,EAAOD,QAAU+uC,GAKb,SAAS9uC,EAAQD,EAASM,GAQ9B,QAASmtE,GAASl1C,EAASppB,GACzB/O,KAAKm4B,QAAUA,EACfn4B,KAAK+O,QAAUA,EALjB,CAAA,GAAInO,GAAUV,EAAoB,EACrBA,GAAoB,IAOjCmtE,EAASt5D,UAAU87B,UAAY,SAASC,GACtC,GAA2C,SAAvC9vC,KAAK+O,QAAQ8oC,SAASC,cAA0B,CAGlD,IAAK,GAFDp7B,GAAOozB,EAAU,GAAGx9B,EACpBsK,EAAOkzB,EAAU,GAAGx9B,EACfga,EAAI,EAAGA,EAAIwjB,EAAU9pC,OAAQsmB,IACpC5P,EAAOA,EAAOozB,EAAUxjB,GAAGha,EAAIw9B,EAAUxjB,GAAGha,EAAIoK,EAChDE,EAAOA,EAAOkzB,EAAUxjB,GAAGha,EAAIw9B,EAAUxjB,GAAGha,EAAIsK,CAElD,QAAQzY,IAAKuY,EAAMtY,IAAKwY,EAAMgzB,iBAAkB5vC,KAAK+O,QAAQ6gC,kBAI7D,IAAK,GADD09B,MACKhhD,EAAI,EAAGA,EAAIwjB,EAAU9pC,OAAQsmB,IACpCghD,EAAgB/kE,MACd8J,EAAGy9B,EAAUxjB,GAAGja,EAChBC,EAAGw9B,EAAUxjB,GAAGha,EAChB6lB,QAASn4B,KAAKm4B,SAGlB,OAAOm1C,IAYXD,EAASt9B,KAAO,SAAUsD,EAAU8F,EAAoBnJ,GACtD,GAEIu9B,GACAtkE,EAAKukE,EACLj7D,EACA1M,EAAEymB,EALFmhD,KACAC,KAKAC,EAAY,CAGhB,KAAK9nE,EAAI,EAAGA,EAAIwtC,EAASrtC,OAAQH,IAE/B,GADA0M,EAAQy9B,EAAUpb,OAAOye,EAASxtC,IACP,OAAvB0M,EAAMxD,QAAQxB,OACK,GAAjBgF,EAAM+W,UAAyEziB,SAArDmpC,EAAUjhC,QAAQ6lB,OAAOyD,WAAWgb,EAASxtC,KAAyE,GAApDmqC,EAAUjhC,QAAQ6lB,OAAOyD,WAAWgb,EAASxtC,KAC3I,IAAKymB,EAAI,EAAGA,EAAI6sB,EAAmB9F,EAASxtC,IAAIG,OAAQsmB,IACtDmhD,EAAallE,MACX8J,EAAG8mC,EAAmB9F,EAASxtC,IAAIymB,GAAGja,EACtCC,EAAG6mC,EAAmB9F,EAASxtC,IAAIymB,GAAGha,EACtC6lB,QAASkb,EAASxtC,KAEpB8nE,GAAa,CAMrB,IAAiB,GAAbA,EAeJ,IAZAF,EAAa32D,KAAK,SAAUlR,EAAGa,GAC7B,MAAIb,GAAEyM,GAAK5L,EAAE4L,EACJzM,EAAEuyB,QAAU1xB,EAAE0xB,QAEdvyB,EAAEyM,EAAI5L,EAAE4L,IAKnBg7D,EAASO,sBAAsBF,EAAeD,GAGzC5nE,EAAI,EAAGA,EAAI4nE,EAAaznE,OAAQH,IAAK,CACxC0M,EAAQy9B,EAAUpb,OAAO64C,EAAa5nE,GAAGsyB,QACzC,IAAI0S,GAAW,GAAMt4B,EAAMxD,QAAQ8oC,SAAS1kC,KAE5ClK,GAAMwkE,EAAa5nE,GAAGwM,CACtB,IAAIw7D,GAAe,CACnB,IAA2BhnE,SAAvB6mE,EAAczkE,GACZpD,EAAE,EAAI4nE,EAAaznE,SAASunE,EAAe/oE,KAAK+mB,IAAIkiD,EAAa5nE,EAAE,GAAGwM,EAAIpJ,IAC1EpD,EAAI,IAAwB0nE,EAAe/oE,KAAKL,IAAIopE,EAAa/oE,KAAK+mB,IAAIkiD,EAAa5nE,EAAE,GAAGwM,EAAIpJ,KACpGukE,EAAWH,EAASS,iBAAiBP,EAAch7D,EAAOs4B,OAEvD,CACH,GAAIkjC,GAAUloE,GAAK6nE,EAAczkE,GAAK+kE,OAASN,EAAczkE,GAAKglE,UAC9DC,EAAUroE,GAAK6nE,EAAczkE,GAAKglE,SAAW,EAC7CF,GAAUN,EAAaznE,SAASunE,EAAe/oE,KAAK+mB,IAAIkiD,EAAaM,GAAS17D,EAAIpJ,IAClFilE,EAAU,IAAsBX,EAAe/oE,KAAKL,IAAIopE,EAAa/oE,KAAK+mB,IAAIkiD,EAAaS,GAAS77D,EAAIpJ,KAC5GukE,EAAWH,EAASS,iBAAiBP,EAAch7D,EAAOs4B,GAC1D6iC,EAAczkE,GAAKglE,UAAY,EAEa,SAAxC17D,EAAMxD,QAAQ8oC,SAASC,eACzB+1B,EAAeH,EAAczkE,GAAKklE,YAClCT,EAAczkE,GAAKklE,aAAe57D,EAAMm8B,aAAe++B,EAAa5nE,GAAGyM,GAExB,cAAxCC,EAAMxD,QAAQ8oC,SAASC,gBAC9B01B,EAASr6D,MAAQq6D,EAASr6D,MAAQu6D,EAAczkE,GAAK+kE,OACrDR,EAASjjD,QAAWmjD,EAAczkE,GAAa,SAAIukE,EAASr6D,MAAS,GAAIq6D,EAASr6D,OAASu6D,EAAczkE,GAAK+kE,OAAO,GACjF,QAAhCz7D,EAAMxD,QAAQ8oC,SAAS/P,MAAwB0lC,EAASjjD,QAAU,GAAIijD,EAASr6D,MAC1C,SAAhCZ,EAAMxD,QAAQ8oC,SAAS/P,QAAmB0lC,EAASjjD,QAAU,GAAIijD,EAASr6D,QAGvFvS,EAAQsS,QAAQu6D,EAAa5nE,GAAGwM,EAAIm7D,EAASjjD,OAAQkjD,EAAa5nE,GAAGyM,EAAIu7D,EAAcL,EAASr6D,MAAOZ,EAAMm8B,aAAe++B,EAAa5nE,GAAGyM,EAAGC,EAAMnK,UAAY,OAAQ4nC,EAAU7E,YAAa6E,EAAUlG,KAElK,GAApCv3B,EAAMxD,QAAQ2D,WAAW1D,SAC3BpO,EAAQwR,UAAUq7D,EAAa5nE,GAAGwM,EAAIm7D,EAASjjD,OAAQkjD,EAAa5nE,GAAGyM,EAAGC,EAAOy9B,EAAU7E,YAAa6E,EAAUlG,OAYxHujC,EAASO,sBAAwB,SAAUF,EAAeD,GAGxD,IAAK,GADDF,GACK1nE,EAAI,EAAGA,EAAI4nE,EAAaznE,OAAQH,IACnCA,EAAI,EAAI4nE,EAAaznE,SACvBunE,EAAe/oE,KAAK+mB,IAAIkiD,EAAa5nE,EAAI,GAAGwM,EAAIo7D,EAAa5nE,GAAGwM,IAE9DxM,EAAI,IACN0nE,EAAe/oE,KAAKL,IAAIopE,EAAc/oE,KAAK+mB,IAAIkiD,EAAa5nE,EAAI,GAAGwM,EAAIo7D,EAAa5nE,GAAGwM,KAErE,GAAhBk7D,IACuC1mE,SAArC6mE,EAAcD,EAAa5nE,GAAGwM,KAChCq7D,EAAcD,EAAa5nE,GAAGwM,IAAM27D,OAAQ,EAAGC,SAAU,EAAGE,YAAa,IAE3ET,EAAcD,EAAa5nE,GAAGwM,GAAG27D,QAAU,IAejDX,EAASS,iBAAmB,SAAUP,EAAch7D,EAAOs4B,GACzD,GAAI13B,GAAOoX,CAwBX,OAvBIgjD,GAAeh7D,EAAMxD,QAAQ8oC,SAAS1kC,OAASo6D,EAAe,GAChEp6D,EAAuB03B,EAAf0iC,EAA0B1iC,EAAW0iC,EAE7ChjD,EAAS,EAC2B,QAAhChY,EAAMxD,QAAQ8oC,SAAS/P,MACzBvd,GAAU,GAAMgjD,EAEuB,SAAhCh7D,EAAMxD,QAAQ8oC,SAAS/P,QAC9Bvd,GAAU,GAAMgjD,KAKlBp6D,EAAQZ,EAAMxD,QAAQ8oC,SAAS1kC,MAC/BoX,EAAS,EAC2B,QAAhChY,EAAMxD,QAAQ8oC,SAAS/P,MACzBvd,GAAU,GAAMhY,EAAMxD,QAAQ8oC,SAAS1kC,MAEA,SAAhCZ,EAAMxD,QAAQ8oC,SAAS/P,QAC9Bvd,GAAU,GAAMhY,EAAMxD,QAAQ8oC,SAAS1kC,SAInCA,MAAOA,EAAOoX,OAAQA,IAGhC8iD,EAAS5yB,oBAAsB,SAAS6yB,EAAiBl0B,EAAa/F,EAAU+6B,EAAYp5C,GAC1F,GAAIs4C,EAAgBtnE,OAAS,EAAG,CAE9BsnE,EAAgBx2D,KAAK,SAAUlR,EAAGa,GAChC,MAAIb,GAAEyM,GAAK5L,EAAE4L,EACJzM,EAAEuyB,QAAU1xB,EAAE0xB,QAEdvyB,EAAEyM,EAAI5L,EAAE4L,GAGnB,IAAIq7D,KAEJL,GAASO,sBAAsBF,EAAeJ,GAC9Cl0B,EAAYg1B,GAAcf,EAASgB,qBAAqBX,EAAeJ,GACvEl0B,EAAYg1B,GAAYx+B,iBAAmB5a,EAC3Cqe,EAAS9qC,KAAK6lE,KAIlBf,EAASgB,qBAAuB,SAAUX,EAAeD,GAIvD,IAAK,GAHDxkE,GACAyT,EAAO+wD,EAAa,GAAGn7D,EACvBsK,EAAO6wD,EAAa,GAAGn7D,EAClBzM,EAAI,EAAGA,EAAI4nE,EAAaznE,OAAQH,IACvCoD,EAAMwkE,EAAa5nE,GAAGwM,EACKxL,SAAvB6mE,EAAczkE,IAChByT,EAAOA,EAAO+wD,EAAa5nE,GAAGyM,EAAIm7D,EAAa5nE,GAAGyM,EAAIoK,EACtDE,EAAOA,EAAO6wD,EAAa5nE,GAAGyM,EAAIm7D,EAAa5nE,GAAGyM,EAAIsK,GAGtD8wD,EAAczkE,GAAKklE,aAAeV,EAAa5nE,GAAGyM,CAGtD,KAAK,GAAIg8D,KAAQZ,GACXA,EAAcvnE,eAAemoE,KAC/B5xD,EAAOA,EAAOgxD,EAAcY,GAAMH,YAAcT,EAAcY,GAAMH,YAAczxD,EAClFE,EAAOA,EAAO8wD,EAAcY,GAAMH,YAAcT,EAAcY,GAAMH,YAAcvxD,EAItF,QAAQzY,IAAKuY,EAAMtY,IAAKwY,IAG1B/c,EAAOD,QAAUytE,GAIb,SAASxtE,EAAQD,EAASM,GAO9B,QAAS2uC,GAAO1W,EAASppB,GACvB/O,KAAKm4B,QAAUA,EACfn4B,KAAK+O,QAAUA,EAJjB,GAAInO,GAAUV,EAAoB,EAQlC2uC,GAAO96B,UAAU87B,UAAY,SAASC,GAGpC,IAAK,GAFDpzB,GAAOozB,EAAU,GAAGx9B,EACpBsK,EAAOkzB,EAAU,GAAGx9B,EACfga,EAAI,EAAGA,EAAIwjB,EAAU9pC,OAAQsmB,IACpC5P,EAAOA,EAAOozB,EAAUxjB,GAAGha,EAAIw9B,EAAUxjB,GAAGha,EAAIoK,EAChDE,EAAOA,EAAOkzB,EAAUxjB,GAAGha,EAAIw9B,EAAUxjB,GAAGha,EAAIsK,CAElD,QAAQzY,IAAKuY,EAAMtY,IAAKwY,EAAMgzB,iBAAkB5vC,KAAK+O,QAAQ6gC,mBAG/Df,EAAO96B,UAAUg8B,KAAO,SAASlY,EAAStlB,EAAOy9B,EAAWzlB,GAC1DskB,EAAOkB,KAAKlY,EAAStlB,EAAOy9B,EAAWzlB,IAYzCskB,EAAOkB,KAAO,SAAUlY,EAAStlB,EAAOy9B,EAAWzlB,GAClC1jB,SAAX0jB,IAAuBA,EAAS,EACpC,KAAK,GAAI1kB,GAAI,EAAGA,EAAIgyB,EAAQ7xB,OAAQH,IAClCjF,EAAQwR,UAAUylB,EAAQhyB,GAAGwM,EAAIkY,EAAQsN,EAAQhyB,GAAGyM,EAAGC,EAAOy9B,EAAU7E,YAAa6E,EAAUlG,IAAKjS,EAAQhyB,GAAGgN,QAKnHhT,EAAOD,QAAUivC,GAIb,SAAShvC,EAAQD,EAASM,GAE9B,GAAIquE,GAAeruE,EAAoB,IACnCsuE,EAAetuE,EAAoB,IACnCuuE,EAAevuE,EAAoB,IACnCwuE,EAAiBxuE,EAAoB,IACrCyuE,EAAoBzuE,EAAoB,IACxC0uE,EAAkB1uE,EAAoB,IACtC2uE,EAA0B3uE,EAAoB,GAQlDN,GAAQkvE,WAAa,SAAUC,GAC7B,IAAK,GAAIC,KAAiBD,GACpBA,EAAe5oE,eAAe6oE,KAChChvE,KAAKgvE,GAAiBD,EAAeC,KAY3CpvE,EAAQqvE,YAAc,SAAUF,GAC9B,IAAK,GAAIC,KAAiBD,GACpBA,EAAe5oE,eAAe6oE,KAChChvE,KAAKgvE,GAAiBnoE,SAW5BjH,EAAQklD,mBAAqB,WAC3B9kD,KAAK8uE,WAAWP,GAChBvuE,KAAKkvE,2BACkC,GAAnClvE,KAAKsjD,UAAUtD,iBACjBhgD,KAAKmvE,4BAGLnvE,KAAKusD,gCAUT3sD,EAAQolD,mBAAqB,WAC3BhlD,KAAKy/D,eAAiB,EACtBz/D,KAAKovE,aAAe,EACpBpvE,KAAK8uE,WAAWN,IASlB5uE,EAAQmlD,kBAAoB,WAC1B/kD,KAAK4xD,WACL5xD,KAAKqvE,cAAgB,WACrBrvE,KAAK4xD,QAAgB,UACrB5xD,KAAK4xD,QAAgB,OAAE,YAAczT,SACnCmB,SACAqG,eACAoa,eAAkB,EAClBuP,YAAezoE,QACjB7G,KAAK4xD,QAAgB,UACrB5xD,KAAK4xD,QAAiB,SAAKzT,SACzBmB,SACAqG,eACAoa,eAAkB,EAClBuP,YAAezoE,QAEjB7G,KAAK2lD,YAAc3lD,KAAK4xD,QAAgB,OAAE,WAAwB,YAElE5xD,KAAK8uE,WAAWL,IASlB7uE,EAAQqlD,qBAAuB,WAC7BjlD,KAAKqtD,cAAgBlP,SAAWmB,UAEhCt/C,KAAK8uE,WAAWJ,IASlB9uE,EAAQ4qD,wBAA0B,WAEhCxqD,KAAKuvE,8BAA+B,EACpCvvE,KAAKwvE,sBAAuB,EAEmB,GAA3CxvE,KAAKsjD,UAAUpB,iBAAiBlzC,SAELnI,SAAzB7G,KAAKyvE,kBACPzvE,KAAKyvE,gBAAkB59D,SAASM,cAAc,OAC9CnS,KAAKyvE,gBAAgBrnE,UAAY,0BAE/BpI,KAAKyvE,gBAAgBliE,MAAMq+B,QADR,GAAjB5rC,KAAKiqD,SAC8B,QAGA,OAEvCjqD,KAAKmgB,MAAMpO,YAAY/R,KAAKyvE,kBAGL5oE,SAArB7G,KAAK0vE,cACP1vE,KAAK0vE,YAAc79D,SAASM,cAAc,OAC1CnS,KAAK0vE,YAAYtnE,UAAY,gCAE3BpI,KAAK0vE,YAAYniE,MAAMq+B,QADJ,GAAjB5rC,KAAKiqD,SAC0B,OAGA,QAEnCjqD,KAAKmgB,MAAMpO,YAAY/R,KAAK0vE,cAGR7oE,SAAlB7G,KAAK2vE,WACP3vE,KAAK2vE,SAAW99D,SAASM,cAAc,OACvCnS,KAAK2vE,SAASvnE,UAAY,gCAC1BpI,KAAK2vE,SAASpiE,MAAMq+B,QAAU5rC,KAAKyvE,gBAAgBliE,MAAMq+B,QACzD5rC,KAAKmgB,MAAMpO,YAAY/R,KAAK2vE,WAI9B3vE,KAAK8uE,WAAWH,GAGhB3uE,KAAKkpD,yBAGwBriD,SAAzB7G,KAAKyvE,kBAEPzvE,KAAKkpD,wBAGLlpD,KAAKmgB,MAAM1O,YAAYzR,KAAKyvE,iBAC5BzvE,KAAKmgB,MAAM1O,YAAYzR,KAAK0vE,aAC5B1vE,KAAKmgB,MAAM1O,YAAYzR,KAAK2vE,UAE5B3vE,KAAKyvE,gBAAkB5oE,OACvB7G,KAAK0vE,YAAc7oE,OACnB7G,KAAK2vE,SAAW9oE,OAEhB7G,KAAKivE,YAAYN,KAWvB/uE,EAAQ2qD,wBAA0B,WAChCvqD,KAAK8uE,WAAWF,GAEhB5uE,KAAK4vE,mBACoC,GAArC5vE,KAAKsjD,UAAUxB,WAAW9yC,SAC5BhP,KAAK6vE,2BAUTjwE,EAAQslD,qBAAuB,WAC7BllD,KAAK8uE,WAAWD,KAMd,SAAShvE,EAAQD,EAASM,GAiB9B,QAASgnD,GAAU7sC,GACjBra,KAAKk2D,QAAS,EAEdl2D,KAAKwwB,KACHnW,UAAWA,GAGbra,KAAKwwB,IAAIs/C,QAAUj+D,SAASM,cAAc,OAC1CnS,KAAKwwB,IAAIs/C,QAAQ1nE,UAAY,UAE7BpI,KAAKwwB,IAAInW,UAAUtI,YAAY/R,KAAKwwB,IAAIs/C,SAExC9vE,KAAK8D,OAAS8hC,EAAO5lC,KAAKwwB,IAAIs/C,SAAUnmC,iBAAiB,IACzD3pC,KAAK8D,OAAOqQ,GAAG,MAAOnU,KAAK+vE,cAAcx6C,KAAKv1B,MAG9C,IAAI+U,GAAK/U,KACLwpE,GACF,QAAS,QACT,YAAa,OACb,YAAa,OAAQ,UACrB,aAAc,iBAEhBA,GAAO5gE,QAAQ,SAAUiB,GACvBkL,EAAGjR,OAAOqQ,GAAGtK,EAAO,SAAUA,GAC5BA,EAAM88B,sBAKV3mC,KAAKgwE,aAAepqC,EAAO99B,QAAS6hC,iBAAiB,IACrD3pC,KAAKgwE,aAAa77D,GAAG,MAAO,SAAUtK,GAE/BomE,EAAWpmE,EAAMG,OAAQqQ,IAC5BtF,EAAGm7D,eAIerpE,SAAlB7G,KAAKgnD,UACPhnD,KAAKgnD,SAAS9yC,UAEhBlU,KAAKgnD,SAAWA,IAGhBhnD,KAAKmwE,YAAcnwE,KAAKkwE,WAAW36C,KAAKv1B,MAiF1C,QAASiwE,GAAW9mE,EAASq8B,GAC3B,KAAOr8B,GAAS,CACd,GAAIA,IAAYq8B,EACd,OAAO,CAETr8B,GAAUA,EAAQgB,WAEpB,OAAO,EAnJT,GAAI68C,GAAW9mD,EAAoB,IAC/B2d,EAAU3d,EAAoB,IAC9B0lC,EAAS1lC,EAAoB,IAC7BS,EAAOT,EAAoB,EA4D/B2d,GAAQqpC,EAAUnzC,WAGlBmzC,EAAUvsB,QAAU,KAKpBusB,EAAUnzC,UAAUG,QAAU,WAC5BlU,KAAKkwE,aAGLlwE,KAAKwwB,IAAIs/C,QAAQ3lE,WAAWsH,YAAYzR,KAAKwwB,IAAIs/C,SAGjD9vE,KAAK8D,OAAS,KACd9D,KAAKgwE,aAAe,MAQtB9oB,EAAUnzC,UAAUq8D,SAAW,WAEzBlpB,EAAUvsB,SACZusB,EAAUvsB,QAAQu1C,aAEpBhpB,EAAUvsB,QAAU36B,KAEpBA,KAAKk2D,QAAS,EACdl2D,KAAKwwB,IAAIs/C,QAAQviE,MAAMq+B,QAAU,OACjCjrC,EAAKwH,aAAanI,KAAKwwB,IAAInW,UAAW,cAEtCra,KAAKsuB,KAAK,UACVtuB,KAAKsuB,KAAK,YAIVtuB,KAAKgnD,SAASzxB,KAAK,MAAOv1B,KAAKmwE,cAOjCjpB,EAAUnzC,UAAUm8D,WAAa,WAC/BlwE,KAAKk2D,QAAS,EACdl2D,KAAKwwB,IAAIs/C,QAAQviE,MAAMq+B,QAAU,GACjCjrC,EAAK8H,gBAAgBzI,KAAKwwB,IAAInW,UAAW,cACzCra,KAAKgnD,SAASqpB,OAAO,MAAOrwE,KAAKmwE,aAEjCnwE,KAAKsuB,KAAK,UACVtuB,KAAKsuB,KAAK,eAQZ44B,EAAUnzC,UAAUg8D,cAAgB,SAAUlmE,GAE5C7J,KAAKowE,WACLvmE,EAAM88B,mBAsBR9mC,EAAOD,QAAUsnD,GAKb,SAASrnD,EAAQD,GAGrBA,EAAY,IACVk+C,KAAM,OACNG,IAAK,kBACLqyB,KAAM,OACNlL,QAAS,WACTG,QAAS,WACTgL,SAAU,YACVxyB,SAAU,YACVyyB,eAAgB,+CAChBC,gBAAiB,qEACjBC,oBAAqB,wEACrBC,gBAAiB,kCACjBC,mBAAoB,+BAEtBhxE,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,GAG/BA,EAAY,IACVk+C,KAAM,WACNG,IAAK,uBACLqyB,KAAM,QACNlL,QAAS,iBACTG,QAAS,iBACTgL,SAAU,gBACVxyB,SAAU,gBACVyyB,eAAgB,uDAChBC,gBAAiB,6EACjBC,oBAAqB,kFACrBC,gBAAiB,wCACjBC,mBAAoB,2CAEtBhxE,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,IAK3B,WAKoC,mBAA7BixE,4BAKTA,yBAAyB98D,UAAUovD,OAAS,SAAS9wD,EAAGC,EAAGvH,GACzD/K,KAAKyoB,YACLzoB,KAAKosB,IAAI/Z,EAAGC,EAAGvH,EAAG,EAAG,EAAEvG,KAAK6nB,IAAI,IASlCwkD,yBAAyB98D,UAAU+8D,OAAS,SAASz+D,EAAGC,EAAGvH,GACzD/K,KAAKyoB,YACLzoB,KAAKqT,KAAKhB,EAAItH,EAAGuH,EAAIvH,EAAO,EAAJA,EAAW,EAAJA,IASjC8lE,yBAAyB98D,UAAU0b,SAAW,SAASpd,EAAGC,EAAGvH,GAE3D/K,KAAKyoB,WAEL,IAAIrc,GAAQ,EAAJrB,EACJgmE,EAAK3kE,EAAI,EACT4kE,EAAKxsE,KAAK6rB,KAAK,GAAK,EAAIjkB,EACxBD,EAAI3H,KAAK6rB,KAAKjkB,EAAIA,EAAI2kE,EAAKA,EAE/B/wE,MAAK0oB,OAAOrW,EAAGC,GAAKnG,EAAI6kE,IACxBhxE,KAAK2oB,OAAOtW,EAAI0+D,EAAIz+D,EAAI0+D,GACxBhxE,KAAK2oB,OAAOtW,EAAI0+D,EAAIz+D,EAAI0+D,GACxBhxE,KAAK2oB,OAAOtW,EAAGC,GAAKnG,EAAI6kE,IACxBhxE,KAAK8oB,aASP+nD,yBAAyB98D,UAAUk9D,aAAe,SAAS5+D,EAAGC,EAAGvH,GAE/D/K,KAAKyoB,WAEL,IAAIrc,GAAQ,EAAJrB,EACJgmE,EAAK3kE,EAAI,EACT4kE,EAAKxsE,KAAK6rB,KAAK,GAAK,EAAIjkB,EACxBD,EAAI3H,KAAK6rB,KAAKjkB,EAAIA,EAAI2kE,EAAKA,EAE/B/wE,MAAK0oB,OAAOrW,EAAGC,GAAKnG,EAAI6kE,IACxBhxE,KAAK2oB,OAAOtW,EAAI0+D,EAAIz+D,EAAI0+D,GACxBhxE,KAAK2oB,OAAOtW,EAAI0+D,EAAIz+D,EAAI0+D,GACxBhxE,KAAK2oB,OAAOtW,EAAGC,GAAKnG,EAAI6kE,IACxBhxE,KAAK8oB,aASP+nD,yBAAyB98D,UAAUm9D,KAAO,SAAS7+D,EAAGC,EAAGvH,GAEvD/K,KAAKyoB,WAEL,KAAK,GAAI0oD,GAAI,EAAO,GAAJA,EAAQA,IAAK,CAC3B,GAAIhlD,GAAUglD,EAAI,IAAM,EAAS,IAAJpmE,EAAc,GAAJA,CACvC/K,MAAK2oB,OACDtW,EAAI8Z,EAAS3nB,KAAKya,IAAQ,EAAJkyD,EAAQ3sE,KAAK6nB,GAAK,IACxC/Z,EAAI6Z,EAAS3nB,KAAK4a,IAAQ,EAAJ+xD,EAAQ3sE,KAAK6nB,GAAK,KAI9CrsB,KAAK8oB,aAMP+nD,yBAAyB98D,UAAUyvD,UAAY,SAASnxD,EAAGC,EAAG2/C,EAAG9lD,EAAGpB,GAClE,GAAIqmE,GAAM5sE,KAAK6nB,GAAG,GACE,GAAhB4lC,EAAM,EAAIlnD,IAAYA,EAAMknD,EAAI,GAChB,EAAhB9lD,EAAM,EAAIpB,IAAYA,EAAMoB,EAAI,GACpCnM,KAAKyoB,YACLzoB,KAAK0oB,OAAOrW,EAAEtH,EAAEuH,GAChBtS,KAAK2oB,OAAOtW,EAAE4/C,EAAElnD,EAAEuH,GAClBtS,KAAKosB,IAAI/Z,EAAE4/C,EAAElnD,EAAEuH,EAAEvH,EAAEA,EAAM,IAAJqmE,EAAY,IAAJA,GAAQ,GACrCpxE,KAAK2oB,OAAOtW,EAAE4/C,EAAE3/C,EAAEnG,EAAEpB,GACpB/K,KAAKosB,IAAI/Z,EAAE4/C,EAAElnD,EAAEuH,EAAEnG,EAAEpB,EAAEA,EAAE,EAAM,GAAJqmE,GAAO,GAChCpxE,KAAK2oB,OAAOtW,EAAEtH,EAAEuH,EAAEnG,GAClBnM,KAAKosB,IAAI/Z,EAAEtH,EAAEuH,EAAEnG,EAAEpB,EAAEA,EAAM,GAAJqmE,EAAW,IAAJA,GAAQ,GACpCpxE,KAAK2oB,OAAOtW,EAAEC,EAAEvH,GAChB/K,KAAKosB,IAAI/Z,EAAEtH,EAAEuH,EAAEvH,EAAEA,EAAM,IAAJqmE,EAAY,IAAJA,GAAQ,IAMrCP,yBAAyB98D,UAAU4vD,QAAU,SAAStxD,EAAGC,EAAG2/C,EAAG9lD,GAC7D,GAAIklE,GAAQ,SACRC,EAAMrf,EAAI,EAAKof,EACfE,EAAMplE,EAAI,EAAKklE,EACfG,EAAKn/D,EAAI4/C,EACTwf,EAAKn/D,EAAInG,EACTulE,EAAKr/D,EAAI4/C,EAAI,EACb0f,EAAKr/D,EAAInG,EAAI,CAEjBnM,MAAKyoB,YACLzoB,KAAK0oB,OAAOrW,EAAGs/D,GACf3xE,KAAK4xE,cAAcv/D,EAAGs/D,EAAKJ,EAAIG,EAAKJ,EAAIh/D,EAAGo/D,EAAIp/D,GAC/CtS,KAAK4xE,cAAcF,EAAKJ,EAAIh/D,EAAGk/D,EAAIG,EAAKJ,EAAIC,EAAIG,GAChD3xE,KAAK4xE,cAAcJ,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACjDzxE,KAAK4xE,cAAcF,EAAKJ,EAAIG,EAAIp/D,EAAGs/D,EAAKJ,EAAIl/D,EAAGs/D,IAQjDd,yBAAyB98D,UAAU0vD,SAAW,SAASpxD,EAAGC,EAAG2/C,EAAG9lD,GAC9D,GAAI+B,GAAI,EAAE,EACN2jE,EAAW5f,EACX6f,EAAW3lE,EAAI+B,EAEfmjE,EAAQ,SACRC,EAAMO,EAAW,EAAKR,EACtBE,EAAMO,EAAW,EAAKT,EACtBG,EAAKn/D,EAAIw/D,EACTJ,EAAKn/D,EAAIw/D,EACTJ,EAAKr/D,EAAIw/D,EAAW,EACpBF,EAAKr/D,EAAIw/D,EAAW,EACpBC,EAAMz/D,GAAKnG,EAAI2lE,EAAS,GACxBE,EAAM1/D,EAAInG,CAEdnM,MAAKyoB,YACLzoB,KAAK0oB,OAAO8oD,EAAIG,GAEhB3xE,KAAK4xE,cAAcJ,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACjDzxE,KAAK4xE,cAAcF,EAAKJ,EAAIG,EAAIp/D,EAAGs/D,EAAKJ,EAAIl/D,EAAGs/D,GAE/C3xE,KAAK4xE,cAAcv/D,EAAGs/D,EAAKJ,EAAIG,EAAKJ,EAAIh/D,EAAGo/D,EAAIp/D,GAC/CtS,KAAK4xE,cAAcF,EAAKJ,EAAIh/D,EAAGk/D,EAAIG,EAAKJ,EAAIC,EAAIG,GAEhD3xE,KAAK2oB,OAAO6oD,EAAIO,GAEhB/xE,KAAK4xE,cAAcJ,EAAIO,EAAMR,EAAIG,EAAKJ,EAAIU,EAAKN,EAAIM,GACnDhyE,KAAK4xE,cAAcF,EAAKJ,EAAIU,EAAK3/D,EAAG0/D,EAAMR,EAAIl/D,EAAG0/D,GAEjD/xE,KAAK2oB,OAAOtW,EAAGs/D,IAOjBd,yBAAyB98D,UAAUqnD,MAAQ,SAAS/oD,EAAGC,EAAGu+C,EAAO7qD,GAE/D,GAAIisE,GAAK5/D,EAAIrM,EAASxB,KAAK4a,IAAIyxC,GAC3BqhB,EAAK5/D,EAAItM,EAASxB,KAAKya,IAAI4xC,GAI3BshB,EAAK9/D,EAAa,GAATrM,EAAexB,KAAK4a,IAAIyxC,GACjCuhB,EAAK9/D,EAAa,GAATtM,EAAexB,KAAKya,IAAI4xC,GAGjCwhB,EAAKJ,EAAKjsE,EAAS,EAAIxB,KAAK4a,IAAIyxC,EAAQ,GAAMrsD,KAAK6nB,IACnDimD,EAAKJ,EAAKlsE,EAAS,EAAIxB,KAAKya,IAAI4xC,EAAQ,GAAMrsD,KAAK6nB,IAGnDkmD,EAAKN,EAAKjsE,EAAS,EAAIxB,KAAK4a,IAAIyxC,EAAQ,GAAMrsD,KAAK6nB,IACnDmmD,EAAKN,EAAKlsE,EAAS,EAAIxB,KAAKya,IAAI4xC,EAAQ,GAAMrsD,KAAK6nB,GAEvDrsB,MAAKyoB,YACLzoB,KAAK0oB,OAAOrW,EAAGC,GACftS,KAAK2oB,OAAO0pD,EAAIC,GAChBtyE,KAAK2oB,OAAOwpD,EAAIC,GAChBpyE,KAAK2oB,OAAO4pD,EAAIC,GAChBxyE,KAAK8oB,aASP+nD,yBAAyB98D,UAAUmnD,WAAa,SAAS7oD,EAAEC,EAAE4pD,EAAGC,EAAGsW,GAC5DA,IAAWA,GAAW,GAAG,IACd,GAAZC,IAAeA,EAAa,KAChC,IAAIC,GAAYF,EAAUzsE,MAC1BhG,MAAK0oB,OAAOrW,EAAGC,EAKf,KAJA,GAAImN,GAAMy8C,EAAG7pD,EAAIqN,EAAMy8C,EAAG7pD,EACtBsgE,EAAQlzD,EAAGD,EACXozD,EAAgBruE,KAAK6rB,KAAM5Q,EAAGA,EAAKC,EAAGA,GACtCozD,EAAU,EAAG/iC,GAAK,EACf8iC,GAAe,IAAI,CACxB,GAAIH,GAAaD,EAAUK,IAAYH,EACnCD,GAAaG,IAAeH,EAAaG,EAC7C,IAAIr2D,GAAQhY,KAAK6rB,KAAMqiD,EAAWA,GAAc,EAAIE,EAAMA,GACnD,GAAHnzD,IAAMjD,GAASA,GACnBnK,GAAKmK,EACLlK,GAAKsgE,EAAMp2D,EACXxc,KAAK+vC,EAAO,SAAW,UAAU19B,EAAEC,GACnCugE,GAAiBH,EACjB3iC,GAAQA,MAUV,SAASlwC,GAeb,QAASge,GAAQ+F,GACf,MAAIA,GAAYoxC,EAAMpxC,GAAtB,OAWF,QAASoxC,GAAMpxC,GACb,IAAK,GAAI3a,KAAO4U,GAAQ9J,UACtB6P,EAAI3a,GAAO4U,EAAQ9J,UAAU9K,EAE/B,OAAO2a,GAxBT/jB,EAAOD,QAAUie,EAoCjBA,EAAQ9J,UAAUI,GAClB0J,EAAQ9J,UAAU7K,iBAAmB,SAASW,EAAOmQ,GAInD,MAHAha,MAAK+yE,WAAa/yE,KAAK+yE,gBACtB/yE,KAAK+yE,WAAWlpE,GAAS7J,KAAK+yE,WAAWlpE,QACvCtB,KAAKyR,GACDha,MAaT6d,EAAQ9J,UAAUi/D,KAAO,SAASnpE,EAAOmQ,GAIvC,QAAS7F,KACP8+D,EAAK3+D,IAAIzK,EAAOsK,GAChB6F,EAAGrB,MAAM3Y,KAAM+F,WALjB,GAAIktE,GAAOjzE,IAUX,OATAA,MAAK+yE,WAAa/yE,KAAK+yE,eAOvB5+D,EAAG6F,GAAKA,EACRha,KAAKmU,GAAGtK,EAAOsK,GACRnU,MAaT6d,EAAQ9J,UAAUO,IAClBuJ,EAAQ9J,UAAUm/D,eAClBr1D,EAAQ9J,UAAUo/D,mBAClBt1D,EAAQ9J,UAAUrK,oBAAsB,SAASG,EAAOmQ,GAItD,GAHAha,KAAK+yE,WAAa/yE,KAAK+yE,eAGnB,GAAKhtE,UAAUC,OAEjB,MADAhG,MAAK+yE,cACE/yE,IAIT,IAAIozE,GAAYpzE,KAAK+yE,WAAWlpE,EAChC,KAAKupE,EAAW,MAAOpzE,KAGvB,IAAI,GAAK+F,UAAUC,OAEjB,aADOhG,MAAK+yE,WAAWlpE,GAChB7J,IAKT,KAAK,GADDqzE,GACKxtE,EAAI,EAAGA,EAAIutE,EAAUptE,OAAQH,IAEpC,GADAwtE,EAAKD,EAAUvtE,GACXwtE,IAAOr5D,GAAMq5D,EAAGr5D,KAAOA,EAAI,CAC7Bo5D,EAAUzqE,OAAO9C,EAAG,EACpB,OAGJ,MAAO7F,OAWT6d,EAAQ9J,UAAUua,KAAO,SAASzkB,GAChC7J,KAAK+yE,WAAa/yE,KAAK+yE,cACvB,IAAIh5D,MAAUnO,MAAMrL,KAAKwF,UAAW,GAChCqtE,EAAYpzE,KAAK+yE,WAAWlpE,EAEhC,IAAIupE,EAAW,CACbA,EAAYA,EAAUxnE,MAAM,EAC5B,KAAK,GAAI/F,GAAI,EAAGC,EAAMstE,EAAUptE,OAAYF,EAAJD,IAAWA,EACjDutE,EAAUvtE,GAAG8S,MAAM3Y,KAAM+Z,GAI7B,MAAO/Z,OAWT6d,EAAQ9J,UAAUw1D,UAAY,SAAS1/D,GAErC,MADA7J,MAAK+yE,WAAa/yE,KAAK+yE,eAChB/yE,KAAK+yE,WAAWlpE,QAWzBgU,EAAQ9J,UAAUu/D,aAAe,SAASzpE,GACxC,QAAU7J,KAAKupE,UAAU1/D,GAAO7D,SAM9B,SAASnG,EAAQD,GAErB,GAAI2zE,GAAgCC,EAA8BC,GAOjE,SAAU/zE,EAAMC,GAGX6zE,KAAmCD,EAAiC,EAAWE,EAA2E,kBAAnCF,GAAiDA,EAA+B56D,MAAM/Y,EAAS4zE,GAAiCD,IAAmE1sE,SAAlC4sE,IAAgD5zE,EAAOD,QAAU6zE,KAU7VzzE,KAAM,WAEN,QAASgnD,GAASj4C,GAChB,GAOIlJ,GAPA+D,EAAiBmF,GAAWA,EAAQnF,iBAAkB,EAEtDyQ,EAAYtL,GAAWA,EAAQsL,WAAavS,OAE5C4rE,KACAC,GAAUC,WAAYC,UACtBC,IAIJ,KAAKjuE,EAAI,GAAS,KAALA,EAAUA,IAAMiuE,EAAMpvE,OAAOqvE,aAAaluE,KAAOmuE,KAAK,IAAMnuE,EAAI,IAAK+L,OAAO,EAEzF,KAAK/L,EAAI,GAAS,IAALA,EAASA,IAAMiuE,EAAMpvE,OAAOqvE,aAAaluE,KAAOmuE,KAAKnuE,EAAG+L,OAAO,EAE5E,KAAK/L,EAAI,EAAS,GAALA,EAAUA,IAAMiuE,EAAM,GAAKjuE,IAAMmuE,KAAK,GAAKnuE,EAAG+L,OAAO,EAElE,KAAK/L,EAAI,EAAS,IAALA,EAAWA,IAAMiuE,EAAM,IAAMjuE,IAAMmuE,KAAK,IAAMnuE,EAAG+L,OAAO,EAErE,KAAK/L,EAAI,EAAS,GAALA,EAAUA,IAAMiuE,EAAM,MAAQjuE,IAAMmuE,KAAK,GAAKnuE,EAAG+L,OAAO,EAGrEkiE,GAAM,SAAWE,KAAK,IAAKpiE,OAAO,GAClCkiE,EAAM,SAAWE,KAAK,IAAKpiE,OAAO,GAClCkiE,EAAM,SAAWE,KAAK,IAAKpiE,OAAO,GAClCkiE,EAAM,SAAWE,KAAK,IAAKpiE,OAAO,GAClCkiE,EAAM,SAAWE,KAAK,IAAKpiE,OAAO,GAElCkiE,EAAY,MAAME,KAAK,GAAIpiE,OAAO,GAClCkiE,EAAU,IAAQE,KAAK,GAAIpiE,OAAO,GAClCkiE,EAAa,OAAKE,KAAK,GAAIpiE,OAAO,GAClCkiE,EAAY,MAAME,KAAK,GAAIpiE,OAAO,GAElCkiE,EAAa,OAAKE,KAAK,GAAIpiE,OAAO,GAClCkiE,EAAa,OAAKE,KAAK,GAAIpiE,OAAO,GAClCkiE,EAAa,OAAKE,KAAK,GAAIpiE,MAAO/K,QAClCitE,EAAW,KAAOE,KAAK,GAAIpiE,OAAO,GAClCkiE,EAAiB,WAAKE,KAAK,EAAGpiE,OAAO,GACrCkiE,EAAW,KAAWE,KAAK,EAAGpiE,OAAO,GACrCkiE,EAAY,MAAUE,KAAK,GAAIpiE,OAAO,GACtCkiE,EAAW,KAAWE,KAAK,GAAIpiE,OAAO,GACtCkiE,EAAM,WAAgBE,KAAK,GAAIpiE,OAAO,GACtCkiE,EAAc,QAAQE,KAAK,GAAIpiE,OAAO,GACtCkiE,EAAgB,UAAME,KAAK,GAAIpiE,OAAO,GAEtCkiE,EAAM,MAAYE,KAAK,IAAKpiE,OAAO,GACnCkiE,EAAM,MAAYE,KAAK,IAAKpiE,OAAO,GACnCkiE,EAAM,MAAYE,KAAK,IAAKpiE,OAAO,GACnCkiE,EAAM,MAAYE,KAAK,IAAKpiE,OAAO,EAInC,IAAIqiE,GAAO,SAASpqE,GAAQqqE,EAAYrqE,EAAM,YAC1CsqE,EAAK,SAAStqE,GAAQqqE,EAAYrqE,EAAM,UAGxCqqE,EAAc,SAASrqE,EAAM1C,GAC/B,GAAoCN,SAAhC8sE,EAAOxsE,GAAM0C,EAAMuqE,SAAwB,CAE7C,IAAK,GADDC,GAAQV,EAAOxsE,GAAM0C,EAAMuqE,SACtBvuE,EAAI,EAAGA,EAAIwuE,EAAMruE,OAAQH,IACTgB,SAAnBwtE,EAAMxuE,GAAG+L,MACXyiE,EAAMxuE,GAAGmU,GAAGnQ,GAEa,GAAlBwqE,EAAMxuE,GAAG+L,OAAmC,GAAlB/H,EAAMgtC,SACvCw9B,EAAMxuE,GAAGmU,GAAGnQ,GAEa,GAAlBwqE,EAAMxuE,GAAG+L,OAAoC,GAAlB/H,EAAMgtC,UACxCw9B,EAAMxuE,GAAGmU,GAAGnQ,EAIM,IAAlBD,GACFC,EAAMD,kBA4FZ,OAtFA8pE,GAAiBn+C,KAAO,SAAStsB,EAAKJ,EAAU1B,GAI9C,GAHaN,SAATM,IACFA,EAAO,WAEUN,SAAfitE,EAAM7qE,GACR,KAAM,IAAIrF,OAAM,oBAAsBqF,EAEFpC,UAAlC8sE,EAAOxsE,GAAM2sE,EAAM7qE,GAAK+qE,QAC1BL,EAAOxsE,GAAM2sE,EAAM7qE,GAAK+qE,UAE1BL,EAAOxsE,GAAM2sE,EAAM7qE,GAAK+qE,MAAMzrE,MAAMyR,GAAGnR,EAAU+I,MAAMkiE,EAAM7qE,GAAK2I,SAKpE8hE,EAAiBY,QAAU,SAASzrE,EAAU1B,GAC/BN,SAATM,IACFA,EAAO,UAET,KAAK,GAAI8B,KAAO6qE,GACVA,EAAM3tE,eAAe8C,IACvByqE,EAAiBn+C,KAAKtsB,EAAIJ,EAAS1B,IAMzCusE,EAAiBa,OAAS,SAAS1qE,GACjC,IAAK,GAAIZ,KAAO6qE,GACd,GAAIA,EAAM3tE,eAAe8C,GAAM,CAC7B,GAAsB,GAAlBY,EAAMgtC,UAAwC,GAApBi9B,EAAM7qE,GAAK2I,OAAiB/H,EAAMuqE,SAAWN,EAAM7qE,GAAK+qE,KACpF,MAAO/qE,EAEJ,IAAsB,GAAlBY,EAAMgtC,UAAyC,GAApBi9B,EAAM7qE,GAAK2I,OAAkB/H,EAAMuqE,SAAWN,EAAM7qE,GAAK+qE,KAC3F,MAAO/qE,EAEJ,IAAIY,EAAMuqE,SAAWN,EAAM7qE,GAAK+qE,MAAe,SAAP/qE,EAC3C,MAAOA,GAIb,MAAO,wCAITyqE,EAAiBrD,OAAS,SAASpnE,EAAKJ,EAAU1B,GAIhD,GAHaN,SAATM,IACFA,EAAO,WAEUN,SAAfitE,EAAM7qE,GACR,KAAM,IAAIrF,OAAM,oBAAsBqF,EAExC,IAAiBpC,SAAbgC,EAAwB,CAC1B,GAAI2rE,MACAH,EAAQV,EAAOxsE,GAAM2sE,EAAM7qE,GAAK+qE,KACpC,IAAcntE,SAAVwtE,EACF,IAAK,GAAIxuE,GAAI,EAAGA,EAAIwuE,EAAMruE,OAAQH,KAC1BwuE,EAAMxuE,GAAGmU,IAAMnR,GAAYwrE,EAAMxuE,GAAG+L,OAASkiE,EAAM7qE,GAAK2I,QAC5D4iE,EAAYjsE,KAAKorE,EAAOxsE,GAAM2sE,EAAM7qE,GAAK+qE,MAAMnuE,GAIrD8tE,GAAOxsE,GAAM2sE,EAAM7qE,GAAK+qE,MAAQQ,MAGhCb,GAAOxsE,GAAM2sE,EAAM7qE,GAAK+qE,UAK5BN,EAAiB/nB,MAAQ,WACvBgoB,GAAUC,WAAYC,WAIxBH,EAAiBx/D,QAAU,WACzBy/D,GAAUC,WAAYC,UACtBx5D,EAAU3Q,oBAAoB,UAAWuqE,GAAM,GAC/C55D,EAAU3Q,oBAAoB,QAASyqE,GAAI,IAI7C95D,EAAUnR,iBAAiB,UAAU+qE,GAAK,GAC1C55D,EAAUnR,iBAAiB,QAAQirE,GAAG,GAG/BT,EAGT,MAAO1sB,MAQL,SAASnnD,EAAQD,EAASM,GAE9B,GAAIuzE,IAMJ,SAAU3rE,EAAQjB,GA4OlB,QAAS4tE,KACF7uC,EAAO8uC,QAKVC,EAAMC,sBAGNC,EAAMC,KAAKlvC,EAAOmvC,SAAU,SAASv0C,GACjCw0C,EAAUC,SAASz0C,KAIvBm0C,EAAMO,QAAQtvC,EAAOuvC,SAAUC,EAAYJ,EAAUK,QACrDV,EAAMO,QAAQtvC,EAAOuvC,SAAUG,EAAWN,EAAUK,QAGpDzvC,EAAO8uC,OAAQ,GAxOnB,GAAI9uC,GAAS,QAASA,GAAOz8B,EAAS4F,GAClC,MAAO,IAAI62B,GAAO2vC,SAASpsE,EAAS4F,OAUxC62B,GAAO4vC,QAAU,QAgBjB5vC,EAAO6vC,UAOHC,UAQIC,WAAY,OASZC,YAAa,QAUbC,aAAc,OAQdC,eAAgB,OAShBC,SAAU,OAaVC,kBAAmB,kBAU3BpwC,EAAOuvC,SAAWtjE,SAOlB+zB,EAAOqwC,kBAAoB1sE,UAAU2sE,gBAAkB3sE,UAAU4sE,iBAOjEvwC,EAAOwwC,gBAAmB,gBAAkBtuE,GAO5C89B,EAAOywC,UAAY,6CAA6C/nE,KAAK/E,UAAUC,WAO/Eo8B,EAAO0wC,eAAkB1wC,EAAOwwC,iBAAmBxwC,EAAOywC,WAAczwC,EAAOqwC,kBAQ/ErwC,EAAO2wC,mBAAqB,EAU5B,IAAIC,MASAC,EAAiB7wC,EAAO6wC,eAAiB,OACzCC,EAAiB9wC,EAAO8wC,eAAiB,OACzCC,EAAe/wC,EAAO+wC,aAAe,KACrCC,EAAkBhxC,EAAOgxC,gBAAkB,QAS3CC,EAAgBjxC,EAAOixC,cAAgB,QACvCC,EAAgBlxC,EAAOkxC,cAAgB,QACvCC,EAAcnxC,EAAOmxC,YAAc,MASnCC,EAAcpxC,EAAOoxC,YAAc,QACnC5B,EAAaxvC,EAAOwvC,WAAa,OACjCE,EAAY1vC,EAAO0vC,UAAY,MAC/B2B,EAAgBrxC,EAAOqxC,cAAgB,UACvCC,EAActxC,EAAOsxC,YAAc,OASvCtxC,GAAO8uC,OAAQ,EAOf9uC,EAAOuxC,QAAUvxC,EAAOuxC,YAQxBvxC,EAAOmvC,SAAWnvC,EAAOmvC,YAkCzB,IAAIF,GAAQjvC,EAAOwxC,OAUfzxE,OAAQ,SAAgB0xE,EAAM7vB,EAAK0d,GAC/B,IAAI,GAAIj8D,KAAOu+C,IACPA,EAAIrhD,eAAe8C,IAASouE,EAAKpuE,KAASpC,GAAaq+D,IAG3DmS,EAAKpuE,GAAOu+C,EAAIv+C,GAEpB,OAAOouE,IAUXljE,GAAI,SAAYhL,EAAShC,EAAMmwE,GAC3BnuE,EAAQD,iBAAiB/B,EAAMmwE,GAAS,IAU5ChjE,IAAK,SAAanL,EAAShC,EAAMmwE,GAC7BnuE,EAAQO,oBAAoBvC,EAAMmwE,GAAS,IAa/CxC,KAAM,SAAclxD,EAAK2zD,EAAUt9D,GAC/B,GAAIpU,GAAGC,CAGP,IAAG,WAAa8d,GACZA,EAAIhb,QAAQ2uE,EAAUt9D,OAEnB,IAAG2J,EAAI5d,SAAWa,GACrB,IAAIhB,EAAI,EAAGC,EAAM8d,EAAI5d,OAAYF,EAAJD,EAASA,IAClC,GAAG0xE,EAASh3E,KAAK0Z,EAAS2J,EAAI/d,GAAIA,EAAG+d,MAAS,EAC1C,WAKR,KAAI/d,IAAK+d,GACL,GAAGA,EAAIzd,eAAeN,IAClB0xE,EAASh3E,KAAK0Z,EAAS2J,EAAI/d,GAAIA,EAAG+d,MAAS,EAC3C,QAahB4zD,MAAO,SAAehwB,EAAKiwB,GACvB,MAAOjwB,GAAIxgD,QAAQywE,GAAQ,IAU/BC,QAAS,SAAiBlwB,EAAKiwB,GAC3B,GAAGjwB,EAAIxgD,QAAS,CACZ,GAAI0B,GAAQ8+C,EAAIxgD,QAAQywE,EACxB,OAAkB,KAAV/uE,GAAgB,EAAQA,EAEhC,IAAI,GAAI7C,GAAI,EAAGC,EAAM0hD,EAAIxhD,OAAYF,EAAJD,EAASA,IACtC,GAAG2hD,EAAI3hD,KAAO4xE,EACV,MAAO5xE,EAGf,QAAO,GAUfiD,QAAS,SAAiB8a,GACtB,MAAOtd,OAAMyN,UAAUnI,MAAMrL,KAAKqjB,EAAK,IAU3C+zD,UAAW,SAAmBhwB,EAAMniB,GAChC,KAAMmiB,GAAM,CACR,GAAGA,GAAQniB,EACP,OAAO,CAEXmiB,GAAOA,EAAKx9C,WAEhB,OAAO,GASXytE,UAAW,SAAmBz2C,GAC1B,GAAI7B,MACAC,KACA9hB,KACAG,KACAzZ,EAAMK,KAAKL,IACXC,EAAMI,KAAKJ,GAGf,OAAsB,KAAnB+8B,EAAQn7B,QAEHs5B,MAAO6B,EAAQ,GAAG7B,MAClBC,MAAO4B,EAAQ,GAAG5B,MAClB9hB,QAAS0jB,EAAQ,GAAG1jB,QACpBG,QAASujB,EAAQ,GAAGvjB,UAI5Bi3D,EAAMC,KAAK3zC,EAAS,SAASxC,GACzBW,EAAM/2B,KAAKo2B,EAAMW,OACjBC,EAAMh3B,KAAKo2B,EAAMY,OACjB9hB,EAAQlV,KAAKo2B,EAAMlhB,SACnBG,EAAQrV,KAAKo2B,EAAM/gB,YAInB0hB,OAAQn7B,EAAIwU,MAAMnU,KAAM86B,GAASl7B,EAAIuU,MAAMnU,KAAM86B,IAAU,EAC3DC,OAAQp7B,EAAIwU,MAAMnU,KAAM+6B,GAASn7B,EAAIuU,MAAMnU,KAAM+6B,IAAU,EAC3D9hB,SAAUtZ,EAAIwU,MAAMnU,KAAMiZ,GAAWrZ,EAAIuU,MAAMnU,KAAMiZ,IAAY,EACjEG,SAAUzZ,EAAIwU,MAAMnU,KAAMoZ,GAAWxZ,EAAIuU,MAAMnU,KAAMoZ,IAAY,KAYzEi6D,YAAa,SAAqBC,EAAWr3C,EAAQC,GACjD,OACIruB,EAAG7N,KAAK+mB,IAAIkV,EAASq3C,IAAc,EACnCxlE,EAAG9N,KAAK+mB,IAAImV,EAASo3C,IAAc,IAW3CC,SAAU,SAAkBC,EAAQC,GAChC,GAAI5lE,GAAI4lE,EAAOx6D,QAAUu6D,EAAOv6D,QAC5BnL,EAAI2lE,EAAOr6D,QAAUo6D,EAAOp6D,OAEhC,OAA0B,KAAnBpZ,KAAKw1D,MAAM1nD,EAAGD,GAAW7N,KAAK6nB,IAUzC6rD,aAAc,SAAsBF,EAAQC,GACxC,GAAI5lE,GAAI7N,KAAK+mB,IAAIysD,EAAOv6D,QAAUw6D,EAAOx6D,SACrCnL,EAAI9N,KAAK+mB,IAAIysD,EAAOp6D,QAAUq6D,EAAOr6D,QAEzC,OAAGvL,IAAKC,EACG0lE,EAAOv6D,QAAUw6D,EAAOx6D,QAAU,EAAIi5D,EAAiBE,EAE3DoB,EAAOp6D,QAAUq6D,EAAOr6D,QAAU,EAAI+4D,EAAeF,GAUhEnU,YAAa,SAAqB0V,EAAQC,GACtC,GAAI5lE,GAAI4lE,EAAOx6D,QAAUu6D,EAAOv6D,QAC5BnL,EAAI2lE,EAAOr6D,QAAUo6D,EAAOp6D,OAEhC,OAAOpZ,MAAK6rB,KAAMhe,EAAIA,EAAMC,EAAIA,IAWpCmjB,SAAU,SAAkBvlB,EAAOC,GAE/B,MAAGD,GAAMlK,QAAU,GAAKmK,EAAInK,QAAU,EAC3BhG,KAAKsiE,YAAYnyD,EAAI,GAAIA,EAAI,IAAMnQ,KAAKsiE,YAAYpyD,EAAM,GAAIA,EAAM,IAExE,GAUXioE,YAAa,SAAqBjoE,EAAOC,GAErC,MAAGD,GAAMlK,QAAU,GAAKmK,EAAInK,QAAU,EAC3BhG,KAAK+3E,SAAS5nE,EAAI,GAAIA,EAAI,IAAMnQ,KAAK+3E,SAAS7nE,EAAM,GAAIA,EAAM,IAElE,GASXkoE,WAAY,SAAoBr8C,GAC5B,MAAOA,IAAa46C,GAAgB56C,GAAa06C,GAWrD4B,eAAgB,SAAwBlvE,EAASjD,EAAM5B,EAAOg0E,GAC1D,GAAIC,IAAY,GAAI,SAAU,MAAO,IAAK,KAC1CryE,GAAO2uE,EAAM2D,YAAYtyE,EAEzB,KAAI,GAAIL,GAAI,EAAGA,EAAI0yE,EAASvyE,OAAQH,IAAK,CACrC,GAAInF,GAAIwF,CAOR,IALGqyE,EAAS1yE,KACRnF,EAAI63E,EAAS1yE,GAAKnF,EAAEkL,MAAM,EAAG,GAAGu9B,cAAgBzoC,EAAEkL,MAAM,IAIzDlL,IAAKyI,GAAQoE,MAAO,CACnBpE,EAAQoE,MAAM7M,IAAgB,MAAV43E,GAAkBA,IAAWh0E,GAAS,EAC1D,UAeZm0E,eAAgB,SAAwBtvE,EAAS9C,EAAOiyE,GACpD,GAAIjyE,GAAU8C,GAAYA,EAAQoE,MAAlC,CAKAsnE,EAAMC,KAAKzuE,EAAO,SAAS/B,EAAO4B,GAC9B2uE,EAAMwD,eAAelvE,EAASjD,EAAM5B,EAAOg0E,IAG/C,IAAII,GAAUJ,GAAU,WACpB,OAAO,EAIY,SAApBjyE,EAAMsvE,aACLxsE,EAAQwvE,cAAgBD,GAGP,QAAlBryE,EAAM0vE,WACL5sE,EAAQyvE,YAAcF;GAU9BF,YAAa,SAAqBK,GAC9B,MAAOA,GAAI/tE,QAAQ,eAAgB,SAASsB,GACxC,MAAOA,GAAE,GAAG+8B,kBAapBwrC,EAAQ/uC,EAAO/7B,OAQfivE,oBAAoB,EAQpBC,SAAS,EAQTC,cAAc,EAWd7kE,GAAI,SAAYhL,EAAShC,EAAMmwE,EAAS2B,GACpC,GAAInhE,GAAQ3Q,EAAKmB,MAAM,IACvBusE,GAAMC,KAAKh9D,EAAO,SAAS3Q,GACvB0tE,EAAM1gE,GAAGhL,EAAShC,EAAMmwE,GACxB2B,GAAQA,EAAK9xE,MAarBmN,IAAK,SAAanL,EAAShC,EAAMmwE,EAAS2B,GACtC,GAAInhE,GAAQ3Q,EAAKmB,MAAM,IACvBusE,GAAMC,KAAKh9D,EAAO,SAAS3Q,GACvB0tE,EAAMvgE,IAAInL,EAAShC,EAAMmwE,GACzB2B,GAAQA,EAAK9xE,MAarB+tE,QAAS,SAAiB/rE,EAASuiE,EAAW4L,GAC1C,GAAIrE,GAAOjzE,KAEPk5E,EAAiB,SAAwBC,GACzC,GAGIC,GAHAC,EAAUF,EAAGhyE,KAAKo+B,cAClB+zC,EAAY1zC,EAAOqwC,kBACnBsD,EAAU1E,EAAM2C,MAAM6B,EAAS,QAKhCE,IAAWtG,EAAK6F,qBAITS,GAAW7N,GAAasL,GAA6B,IAAdmC,EAAGhsD,QAChD8lD,EAAK6F,oBAAqB,EAC1B7F,EAAK+F,cAAe,GACdM,GAAa5N,GAAasL,EAChC/D,EAAK+F,aAA+B,IAAfG,EAAGK,SAAiBC,EAAaC,UAAU5C,EAAeqC,GAExEI,GAAW7N,GAAasL,IAC/B/D,EAAK6F,oBAAqB,EAC1B7F,EAAK+F,cAAe,GAIrBM,GAAa5N,GAAa4J,GACzBmE,EAAaE,cAAcjO,EAAWyN,GAIvClG,EAAK+F,eACJI,EAAcnG,EAAK2G,SAASr5E,KAAK0yE,EAAMkG,EAAIzN,EAAWviE,EAASmuE,IAKhE8B,GAAe9D,IACdrC,EAAK6F,oBAAqB,EAC1B7F,EAAK+F,cAAe,EACpBS,EAAa9tB,SAId2tB,GAAa5N,GAAa4J,GACzBmE,EAAaE,cAAcjO,EAAWyN,IAK9C,OADAn5E,MAAKmU,GAAGhL,EAASqtE,EAAY9K,GAAYwN,GAClCA,GAaXU,SAAU,SAAkBT,EAAIzN,EAAWviE,EAASmuE,GAChD,GAAIuC,GAAY75E,KAAK2rE,aAAawN,EAAIzN,GAClCoO,EAAkBD,EAAU7zE,OAC5BozE,EAAc1N,EACdqO,EAAgBF,EAAUG,QAC1BC,EAAgBH,CAGjBpO,IAAasL,EACZ+C,EAAgB7C,EAEVxL,GAAa4J,IACnByE,EAAgB9C,EAGhBgD,EAAgBJ,EAAU7zE,QAAWmzE,EAAiB,eAAIA,EAAGe,eAAel0E,OAAS,IAMtFi0E,EAAgB,GAAKj6E,KAAK+4E,UACzBK,EAAchE,GAIlBp1E,KAAK+4E,SAAU,CAGf,IAAIoB,GAASn6E,KAAK4rE,iBAAiBziE,EAASiwE,EAAaS,EAAWV,EA4BpE,OAxBGzN,IAAa4J,GACZgC,EAAQ/2E,KAAKy0E,EAAWmF,GAIzBJ,IACCI,EAAOF,cAAgBA,EACvBE,EAAOzO,UAAYqO,EAEnBzC,EAAQ/2E,KAAKy0E,EAAWmF,GAExBA,EAAOzO,UAAY0N,QACZe,GAAOF,eAIfb,GAAe9D,IACdgC,EAAQ/2E,KAAKy0E,EAAWmF,GAIxBn6E,KAAK+4E,SAAU,GAGZK,GAUXxE,oBAAqB,WACjB,GAAI98D,EAgCJ,OA7BQA,GAFL8tB,EAAOqwC,kBACHnuE,EAAO2xE,cAEF,cACA,cACA,+CAIA,gBACA,gBACA,oDAGF7zC,EAAO0wC,gBAET,aACA,YACA,yBAIA,uBACA,sBACA,gCAIRE,EAAYQ,GAAel/D,EAAM,GACjC0+D,EAAYpB,GAAct9D,EAAM,GAChC0+D,EAAYlB,GAAax9D,EAAM,GACxB0+D,GAUX7K,aAAc,SAAsBwN,EAAIzN,GAEpC,GAAG9lC,EAAOqwC,kBACN,MAAOwD,GAAa9N,cAIxB,IAAGwN,EAAGh4C,QAAS,CACX,GAAGuqC,GAAa0J,EACZ,MAAO+D,GAAGh4C,OAGd,IAAIi5C,MACAxlE,KAAYA,OAAOigE,EAAM/rE,QAAQqwE,EAAGh4C,SAAU0zC,EAAM/rE,QAAQqwE,EAAGe,iBAC/DL,IASJ,OAPAhF,GAAMC,KAAKlgE,EAAQ,SAAS+pB,GACrBk2C,EAAM6C,QAAQ0C,EAAaz7C,EAAM07C,eAAgB,GAChDR,EAAUtxE,KAAKo2B,GAEnBy7C,EAAY7xE,KAAKo2B,EAAM07C,cAGpBR,EAKX,MADAV,GAAGkB,WAAa,GACRlB,IAYZvN,iBAAkB,SAA0BziE,EAASuiE,EAAWvqC,EAASg4C,GAErE,GAAImB,GAAcxD,CAOlB,OANGjC,GAAM2C,MAAM2B,EAAGhyE,KAAM,UAAYsyE,EAAaC,UAAU7C,EAAesC,GACtEmB,EAAczD,EACR4C,EAAaC,UAAU3C,EAAaoC,KAC1CmB,EAAcvD,IAIdnqD,OAAQioD,EAAM+C,UAAUz2C,GACxBo5C,UAAW31E,KAAKo5B,MAChBh0B,OAAQmvE,EAAGnvE,OACXm3B,QAASA,EACTuqC,UAAWA,EACX4O,YAAaA,EACbpkC,SAAUijC,EAMVvvE,eAAgB,WACZ,GAAIssC,GAAWl2C,KAAKk2C,QACpBA,GAASskC,qBAAuBtkC,EAASskC,sBACzCtkC,EAAStsC,gBAAkBssC,EAAStsC,kBAMxC+8B,gBAAiB,WACb3mC,KAAKk2C,SAASvP,mBAQlB8zC,WAAY,WACR,MAAOzF,GAAUyF,iBAa7BhB,EAAe7zC,EAAO6zC,cAMtBiB,YAOA/O,aAAc,WACV,GAAIgP,KAKJ,OAHA9F,GAAMC,KAAK90E,KAAK06E,SAAU,SAAS35C,GAC/B45C,EAAUpyE,KAAKw4B,KAEZ45C,GASXhB,cAAe,SAAuBjO,EAAWkP,GAC1ClP,GAAa4J,GAAc5J,GAAa4J,GAAsC,IAAzBsF,EAAapB,cAC1Dx5E,MAAK06E,SAASE,EAAaC,YAElCD,EAAaP,WAAaO,EAAaC,UACvC76E,KAAK06E,SAASE,EAAaC,WAAaD,IAUhDlB,UAAW,SAAmBY,EAAanB,GACvC,IAAIA,EAAGmB,YACH,OAAO,CAGX,IAAIQ,GAAK3B,EAAGmB,YACRxiE,IAKJ,OAHAA,GAAM++D,GAAkBiE,KAAQ3B,EAAG4B,sBAAwBlE,GAC3D/+D,EAAMg/D,GAAkBgE,KAAQ3B,EAAG6B,sBAAwBlE,GAC3Dh/D,EAAMi/D,GAAgB+D,KAAQ3B,EAAG8B,oBAAsBlE,GAChDj/D,EAAMwiE,IAOjB3uB,MAAO,WACH3rD,KAAK06E,cAWT1F,EAAYpvC,EAAOs1C,WAEnBnG,YAGAp6C,QAAS,KAITgD,SAAU,KAGVw9C,SAAS,EAQTC,YAAa,SAAqBC,EAAMC,GAEjCt7E,KAAK26B,UAIR36B,KAAKm7E,SAAU,EAGfn7E,KAAK26B,SACD0gD,KAAMA,EACNE,WAAY1G,EAAMlvE,UAAW21E,GAC7BE,WAAW,EACXC,eAAe,EACfC,iBAAiB,EACjBC,gBACA9kE,KAAM,IAGV7W,KAAKq1E,OAAOiG,KAShBjG,OAAQ,SAAgBiG,GACpB,GAAIt7E,KAAK26B,UAAW36B,KAAKm7E,QAAzB,CAKAG,EAAYt7E,KAAK47E,gBAAgBN,EAGjC,IAAID,GAAOr7E,KAAK26B,QAAQ0gD,KACpBQ,EAAcR,EAAKtsE,OAmBvB,OAhBA8lE,GAAMC,KAAK90E,KAAK+0E,SAAU,SAAwBv0C,IAE1CxgC,KAAKm7E,SAAWE,EAAKrsE,SAAW6sE,EAAYr7C,EAAQ3pB,OACpD2pB,EAAQ82C,QAAQ/2E,KAAKigC,EAAS86C,EAAWD,IAE9Cr7E,MAGAA,KAAK26B,UACJ36B,KAAK26B,QAAQ6gD,UAAYF,GAG1BA,EAAU5P,WAAa4J,GACtBt1E,KAAKy6E,aAGFa,IASXb,WAAY,WAGRz6E,KAAK29B,SAAWk3C,EAAMlvE,UAAW3F,KAAK26B,SAGtC36B,KAAK26B,QAAU,KACf36B,KAAKm7E,SAAU,GAYnBW,kBAAmB,SAA2B3C,EAAIvsD,EAAQkrD,EAAWr3C,EAAQC,GACzE,GAAI2b,GAAMr8C,KAAK26B,QACXohD,GAAS,EACTC,EAAS3/B,EAAIo/B,cACbQ,EAAW5/B,EAAIs/B,YAEhBK,IAAU7C,EAAGoB,UAAYyB,EAAOzB,UAAY30C,EAAO2wC,qBAClD3pD,EAASovD,EAAOpvD,OAChBkrD,EAAYqB,EAAGoB,UAAYyB,EAAOzB,UAClC95C,EAAS04C,EAAGvsD,OAAOnP,QAAUu+D,EAAOpvD,OAAOnP,QAC3CijB,EAASy4C,EAAGvsD,OAAOhP,QAAUo+D,EAAOpvD,OAAOhP,QAC3Cm+D,GAAS,IAGV5C,EAAGzN,WAAawL,GAAeiC,EAAGzN,WAAauL,KAC9C56B,EAAIq/B,gBAAkBvC,KAGtB98B,EAAIo/B,eAAiBM,KACrBE,EAAS5Z,SAAWwS,EAAMgD,YAAYC,EAAWr3C,EAAQC,GACzDu7C,EAASprB,MAAQgkB,EAAMkD,SAASnrD,EAAQusD,EAAGvsD,QAC3CqvD,EAASlgD,UAAY84C,EAAMqD,aAAatrD,EAAQusD,EAAGvsD,QAEnDyvB,EAAIo/B,cAAgBp/B,EAAIq/B,iBAAmBvC,EAC3C98B,EAAIq/B,gBAAkBvC,GAG1BA,EAAG+C,UAAYD,EAAS5Z,SAAShwD,EACjC8mE,EAAGgD,UAAYF,EAAS5Z,SAAS/vD,EACjC6mE,EAAGiD,aAAeH,EAASprB,MAC3BsoB,EAAGkD,iBAAmBJ,EAASlgD,WASnC6/C,gBAAiB,SAAyBzC,GACtC,GAAI98B,GAAMr8C,KAAK26B,QACX2hD,EAAUjgC,EAAIk/B,WACdgB,EAASlgC,EAAIm/B,WAAac,GAG3BnD,EAAGzN,WAAawL,GAAeiC,EAAGzN,WAAauL,KAC9CqF,EAAQn7C,WACR0zC,EAAMC,KAAKqE,EAAGh4C,QAAS,SAASxC,GAC5B29C,EAAQn7C,QAAQ54B,MACZkV,QAASkhB,EAAMlhB,QACfG,QAAS+gB,EAAM/gB,YAK3B,IAAIk6D,GAAYqB,EAAGoB,UAAY+B,EAAQ/B,UACnC95C,EAAS04C,EAAGvsD,OAAOnP,QAAU6+D,EAAQ1vD,OAAOnP,QAC5CijB,EAASy4C,EAAGvsD,OAAOhP,QAAU0+D,EAAQ1vD,OAAOhP,OAkBhD,OAhBA5d,MAAK87E,kBAAkB3C,EAAIoD,EAAO3vD,OAAQkrD,EAAWr3C,EAAQC,GAE7Dm0C,EAAMlvE,OAAOwzE,GACToC,WAAYe,EAEZxE,UAAWA,EACXr3C,OAAQA,EACRC,OAAQA,EAERla,SAAUquD,EAAMvS,YAAYga,EAAQ1vD,OAAQusD,EAAGvsD,QAC/CikC,MAAOgkB,EAAMkD,SAASuE,EAAQ1vD,OAAQusD,EAAGvsD,QACzCmP,UAAW84C,EAAMqD,aAAaoE,EAAQ1vD,OAAQusD,EAAGvsD,QACjDroB,MAAOswE,EAAMp/C,SAAS6mD,EAAQn7C,QAASg4C,EAAGh4C,SAC1Cq7C,SAAU3H,EAAMsD,YAAYmE,EAAQn7C,QAASg4C,EAAGh4C,WAG7Cg4C,GASXlE,SAAU,SAAkBz0C,GAExB,GAAIzxB,GAAUyxB,EAAQi1C,YAyBtB,OAxBG1mE,GAAQyxB,EAAQ3pB,QAAUhQ,IACzBkI,EAAQyxB,EAAQ3pB,OAAQ,GAI5Bg+D,EAAMlvE,OAAOigC,EAAO6vC,SAAU1mE,GAAS,GAGvCyxB,EAAQ93B,MAAQ83B,EAAQ93B,OAAS,IAGjC1I,KAAK+0E,SAASxsE,KAAKi4B,GAGnBxgC,KAAK+0E,SAASj+D,KAAK,SAASlR,EAAGa,GAC3B,MAAGb,GAAE8C,MAAQjC,EAAEiC,MACJ,GAER9C,EAAE8C,MAAQjC,EAAEiC,MACJ,EAEJ,IAGJ1I,KAAK+0E,UAmBpBnvC,GAAO2vC,SAAW,SAASpsE,EAAS4F,GAChC,GAAIkkE,GAAOjzE,IAIXy0E,KAMAz0E,KAAKmJ,QAAUA,EAOfnJ,KAAKgP,SAAU,EAQf6lE,EAAMC,KAAK/lE,EAAS,SAASzK,EAAOuS,SACzB9H,GAAQ8H,GACf9H,EAAQ8lE,EAAM2D,YAAY3hE,IAASvS,IAGvCtE,KAAK+O,QAAU8lE,EAAMlvE,OAAOkvE,EAAMlvE,UAAWigC,EAAO6vC,UAAW1mE,OAG5D/O,KAAK+O,QAAQ2mE,UACZb,EAAM4D,eAAez4E,KAAKmJ,QAASnJ,KAAK+O,QAAQ2mE,UAAU,GAQ9D11E,KAAKy8E,kBAAoB9H,EAAMO,QAAQ/rE,EAAS6tE,EAAa,SAASmC,GAC/DlG,EAAKjkE,SAAWmqE,EAAGzN,WAAasL,EAC/BhC,EAAUoG,YAAYnI,EAAMkG,GACtBA,EAAGzN,WAAawL,GACtBlC,EAAUK,OAAO8D,KASzBn5E,KAAK08E,kBAGT92C,EAAO2vC,SAASxhE,WASZI,GAAI,SAAiB4gE,EAAUuC,GAC3B,GAAIrE,GAAOjzE,IAIX,OAHA20E,GAAMxgE,GAAG8+D,EAAK9pE,QAAS4rE,EAAUuC,EAAS,SAASnwE,GAC/C8rE,EAAKyJ,cAAcn0E,MAAOi4B,QAASr5B,EAAMmwE,QAASA,MAE/CrE,GAUX3+D,IAAK,SAAkBygE,EAAUuC,GAC7B,GAAIrE,GAAOjzE,IAQX,OANA20E,GAAMrgE,IAAI2+D,EAAK9pE,QAAS4rE,EAAUuC,EAAS,SAASnwE,GAChD,GAAIuB,GAAQmsE,EAAM6C,SAAUl3C,QAASr5B,EAAMmwE,QAASA,GACjD5uE,MAAU,GACTuqE,EAAKyJ,cAAc/zE,OAAOD,EAAO,KAGlCuqE,GAUX+G,QAAS,SAAsBx5C,EAAS86C,GAEhCA,IACAA,KAIJ,IAAIzxE,GAAQ+7B,EAAOuvC,SAASwH,YAAY,QACxC9yE,GAAM+yE,UAAUp8C,GAAS,GAAM,GAC/B32B,EAAM22B,QAAU86C,CAIhB,IAAInyE,GAAUnJ,KAAKmJ,OAMnB,OALG0rE,GAAM8C,UAAU2D,EAAUtxE,OAAQb,KACjCA,EAAUmyE,EAAUtxE,QAGxBb,EAAQ0zE,cAAchzE,GACf7J,MASXmkC,OAAQ,SAAgB24C,GAEpB,MADA98E,MAAKgP,QAAU8tE,EACR98E,MAQXorD,QAAS,WACL,GAAIvlD,GAAGk3E,CAMP,KAHAlI,EAAM4D,eAAez4E,KAAKmJ,QAASnJ,KAAK+O,QAAQ2mE,UAAU,GAGtD7vE,EAAI,GAAKk3E,EAAK/8E,KAAK08E,gBAAgB72E,IACnCgvE,EAAMvgE,IAAItU,KAAKmJ,QAAS4zE,EAAGv8C,QAASu8C,EAAGzF,QAQ3C,OALAt3E,MAAK08E,iBAGL/H,EAAMrgE,IAAItU,KAAKmJ,QAASqtE,EAAYQ,GAAch3E,KAAKy8E,mBAEhD,OAqDf,SAAU5lE,GAGN,QAASmmE,GAAY7D,EAAIkC,GACrB,GAAIh/B,GAAM24B,EAAUr6C,OAGpB,MAAG0gD,EAAKtsE,QAAQkuE,eAAiB,GAC7B9D,EAAGh4C,QAAQn7B,OAASq1E,EAAKtsE,QAAQkuE,gBAIrC,OAAO9D,EAAGzN,WACN,IAAKsL,GACDkG,GAAY,CACZ,MAEJ,KAAK9H,GAGD,GAAG+D,EAAG3yD,SAAW60D,EAAKtsE,QAAQouE,iBAC1B9gC,EAAIxlC,MAAQA,EACZ,MAGJ,IAAIumE,GAAc/gC,EAAIk/B,WAAW3uD,MAGjC,IAAGyvB,EAAIxlC,MAAQA,IACXwlC,EAAIxlC,KAAOA,EACRwkE,EAAKtsE,QAAQsuE,wBAA0BlE,EAAG3yD,SAAW,GAAG,CAIvD,GAAIiiC,GAASjkD,KAAK+mB,IAAI8vD,EAAKtsE,QAAQouE,gBAAkBhE,EAAG3yD,SACxD42D,GAAY99C,OAAS65C,EAAG14C,OAASgoB,EACjC20B,EAAY79C,OAAS45C,EAAGz4C,OAAS+nB,EACjC20B,EAAY3/D,SAAW07D,EAAG14C,OAASgoB,EACnC20B,EAAYx/D,SAAWu7D,EAAGz4C,OAAS+nB,EAGnC0wB,EAAKnE,EAAU4G,gBAAgBzC,IAKpC98B,EAAIm/B,UAAU8B,gBACXjC,EAAKtsE,QAAQuuE,gBACXjC,EAAKtsE,QAAQwuE,qBAAuBpE,EAAG3yD,YAE3C2yD,EAAGmE,gBAAiB,EAIxB,IAAIE,GAAgBnhC,EAAIm/B,UAAUz/C,SAC/Bo9C,GAAGmE,gBAAkBE,IAAkBrE,EAAGp9C,YAErCo9C,EAAGp9C,UADJ84C,EAAMuD,WAAWoF,GACArE,EAAGz4C,OAAS,EAAKi2C,EAAeF,EAEhC0C,EAAG14C,OAAS,EAAKi2C,EAAiBE,GAKtDsG,IACA7B,EAAKrB,QAAQnjE,EAAO,QAASsiE,GAC7B+D,GAAY,GAIhB7B,EAAKrB,QAAQnjE,EAAMsiE,GACnBkC,EAAKrB,QAAQnjE,EAAOsiE,EAAGp9C,UAAWo9C,EAElC,IAAIf,GAAavD,EAAMuD,WAAWe,EAAGp9C,YAGjCs/C,EAAKtsE,QAAQ0uE,mBAAqBrF,GACjCiD,EAAKtsE,QAAQ2uE,sBAAwBtF,IACtCe,EAAGvvE,gBAEP,MAEJ,KAAKqtE,GACEiG,GAAa/D,EAAGc,eAAiBoB,EAAKtsE,QAAQkuE,iBAC7C5B,EAAKrB,QAAQnjE,EAAO,MAAOsiE,GAC3B+D,GAAY,EAEhB,MAEJ,KAAK5H,GACD4H,GAAY,GAzFxB,GAAIA,IAAY,CA8FhBt3C,GAAOmvC,SAAS4I,MACZ9mE,KAAMA,EACNnO,MAAO,GACP4uE,QAAS0F,EACTvH,UAOI0H,gBAAiB,GAWjBE,wBAAwB,EAQxBJ,eAAgB,EAUhBS,qBAAqB,EAQrBD,mBAAmB,EASnBH,gBAAgB,EAShBC,oBAAqB,MAG9B,QAgBH33C,EAAOmvC,SAAS6I,SACZ/mE,KAAM,UACNnO,MAAO,KACP4uE,QAAS,SAAwB6B,EAAIkC,GACjCA,EAAKrB,QAAQh6E,KAAK6W,KAAMsiE,KAqBhC,SAAUtiE,GAGN,QAASgnE,GAAY1E,EAAIkC,GACrB,GAAItsE,GAAUssE,EAAKtsE,QACf4rB,EAAUq6C,EAAUr6C,OAExB,QAAOw+C,EAAGzN,WACN,IAAKsL,GACD78D,aAAaysC,GAGbjsB,EAAQ9jB,KAAOA,EAIf+vC,EAAQxsC,WAAW,WACZugB,GAAWA,EAAQ9jB,MAAQA,GAC1BwkE,EAAKrB,QAAQnjE,EAAMsiE,IAExBpqE,EAAQ+uE,YACX,MAEJ,KAAK1I,GACE+D,EAAG3yD,SAAWzX,EAAQgvE,eACrB5jE,aAAaysC,EAEjB,MAEJ,KAAKqwB,GACD98D,aAAaysC,IA7BzB,GAAIA,EAkCJhhB,GAAOmvC,SAASiJ,MACZnnE,KAAMA,EACNnO,MAAO,GACP+sE,UAMIqI,YAAa,IAQbC,cAAe,GAEnBzG,QAASuG,IAEd,QAeHj4C,EAAOmvC,SAASkJ,SACZpnE,KAAM,UACNnO,MAAO6Q,IACP+9D,QAAS,SAAwB6B,EAAIkC,GAC9BlC,EAAGzN,WAAauL,GACfoE,EAAKrB,QAAQh6E,KAAK6W,KAAMsiE,KAyCpCvzC,EAAOmvC,SAASmJ,OACZrnE,KAAM,QACNnO,MAAO,GACP+sE,UAMI0I,gBAAiB,EAOjBC,gBAAiB,EAQjBC,eAAgB,GAQhBC,eAAgB,IAGpBhH,QAAS,SAAsB6B,EAAIkC,GAC/B,GAAGlC,EAAGzN,WAAauL,EAAe,CAC9B,GAAI91C,GAAUg4C,EAAGh4C,QAAQn7B,OACrB+I,EAAUssE,EAAKtsE,OAGnB,IAAGoyB,EAAUpyB,EAAQovE,iBACjBh9C,EAAUpyB,EAAQqvE,gBAClB,QAKDjF,EAAG+C,UAAYntE,EAAQsvE,gBACtBlF,EAAGgD,UAAYptE,EAAQuvE,kBAEvBjD,EAAKrB,QAAQh6E,KAAK6W,KAAMsiE,GACxBkC,EAAKrB,QAAQh6E,KAAK6W,KAAOsiE,EAAGp9C,UAAWo9C,OA2BvD,SAAUtiE,GAGN,QAAS0nE,GAAWpF,EAAIkC,GACpB,GAGImD,GACAC,EAJA1vE,EAAUssE,EAAKtsE,QACf4rB,EAAUq6C,EAAUr6C,QACpBtI,EAAO2iD,EAAUr3C,QAIrB,QAAOw7C,EAAGzN,WACN,IAAKsL,GACD0H,GAAW,CACX,MAEJ,KAAKtJ,GACDsJ,EAAWA,GAAavF,EAAG3yD,SAAWzX,EAAQ4vE,cAC9C,MAEJ,KAAKrJ,IACGT,EAAM2C,MAAM2B,EAAGjjC,SAAS/uC,KAAM,WAAagyE,EAAGrB,UAAY/oE,EAAQ6vE,aAAeF,IAEjFF,EAAYnsD,GAAQA,EAAKmpD,WAAarC,EAAGoB,UAAYloD,EAAKmpD,UAAUjB,UACpEkE,GAAe,EAGZpsD,GAAQA,EAAKxb,MAAQA,GACnB2nE,GAAaA,EAAYzvE,EAAQ8vE,mBAClC1F,EAAG3yD,SAAWzX,EAAQ+vE,oBACtBzD,EAAKrB,QAAQ,YAAab,GAC1BsF,GAAe,KAIfA,GAAgB1vE,EAAQgwE,aACxBpkD,EAAQ9jB,KAAOA,EACfwkE,EAAKrB,QAAQr/C,EAAQ9jB,KAAMsiE,MAnC/C,GAAIuF,IAAW,CA0Cf94C,GAAOmvC,SAASiK,KACZnoE,KAAMA,EACNnO,MAAO,IACP4uE,QAASiH,EACT9I,UAOImJ,WAAY,IAQZD,eAAgB,GAQhBI,WAAW,EAQXD,kBAAmB,GAQnBD,kBAAmB,OAG5B,OAeHj5C,EAAOmvC,SAASkK,OACZpoE,KAAM,QACNnO,OAAQ6Q,IACRk8D,UASI7rE,gBAAgB,EAQhBs1E,cAAc,GAElB5H,QAAS,SAAsB6B,EAAIkC,GAC/B,MAAGA,GAAKtsE,QAAQmwE,cAAgB/F,EAAGmB,aAAezD,MAC9CsC,GAAGsB,cAIJY,EAAKtsE,QAAQnF,gBACZuvE,EAAGvvE,sBAGJuvE,EAAGzN,WAAawL,GACfmE,EAAKrB,QAAQ,QAASb,OA4ClC,SAAUtiE,GAGN,QAASsoE,GAAiBhG,EAAIkC,GAC1B,OAAOlC,EAAGzN,WACN,IAAKsL,GACDkG,GAAY,CACZ,MAEJ,KAAK9H,GAED,GAAG+D,EAAGh4C,QAAQn7B,OAAS,EACnB,MAGJ,IAAIo5E,GAAiB56E,KAAK+mB,IAAI,EAAI4tD,EAAG50E,OACjC86E,EAAoB76E,KAAK+mB,IAAI4tD,EAAGqD,SAIpC,IAAG4C,EAAiB/D,EAAKtsE,QAAQuwE,mBAC7BD,EAAoBhE,EAAKtsE,QAAQwwE,qBACjC,MAIJvK,GAAUr6C,QAAQ9jB,KAAOA,EAGrBqmE,IACA7B,EAAKrB,QAAQnjE,EAAO,QAASsiE,GAC7B+D,GAAY,GAGhB7B,EAAKrB,QAAQnjE,EAAMsiE,GAGhBkG,EAAoBhE,EAAKtsE,QAAQwwE,sBAChClE,EAAKrB,QAAQ,SAAUb,GAIxBiG,EAAiB/D,EAAKtsE,QAAQuwE,oBAC7BjE,EAAKrB,QAAQ,QAASb,GACtBkC,EAAKrB,QAAQ,SAAWb,EAAG50E,MAAQ,EAAI,KAAO,OAAQ40E,GAE1D,MAEJ,KAAKlC,GACEiG,GAAa/D,EAAGc,cAAgB,IAC/BoB,EAAKrB,QAAQnjE,EAAO,MAAOsiE,GAC3B+D,GAAY,IAlD5B,GAAIA,IAAY,CAwDhBt3C,GAAOmvC,SAASyK,WACZ3oE,KAAMA,EACNnO,MAAO,GACP+sE,UAOI6J,kBAAmB,IAQnBC,qBAAsB,GAG1BjI,QAAS6H,IAEd,aAQG1L,EAAgC,WAC9B,MAAO7tC,IACTrlC,KAAKX,EAASM,EAAqBN,EAASC,KAAS4zE,IAAkC5sE,IAAchH,EAAOD,QAAU6zE,KASzH3rE,SAIC,SAASjI,EAAQD,EAASM,GAE9B,GAAIuzE,IAA0D,SAASgM,EAAQ5/E,IAM/E,SAAWgH,GA+RP,QAAS64E,GAAI95E,EAAGa,EAAGhG,GACf,OAAQsF,UAAUC,QACd,IAAK,GAAG,MAAY,OAALJ,EAAYA,EAAIa,CAC/B,KAAK,GAAG,MAAY,OAALb,EAAYA,EAAS,MAALa,EAAYA,EAAIhG,CAC/C,SAAS,KAAM,IAAImD,OAAM,iBAIjC,QAAS+7E,GAAW/5E,EAAGa,GACnB,MAAON,IAAe5F,KAAKqF,EAAGa,GAGlC,QAASm5E,KAGL,OACIC,OAAQ,EACRC,gBACAC,eACAr7D,SAAW,GACXs7D,cAAgB,EAChBC,WAAY,EACZC,aAAe,KACfC,eAAgB,EAChBC,iBAAkB,EAClBC,KAAK,GAIb,QAASC,GAASC,GACV18E,GAAO28E,+BAAgC,GAChB,mBAAZhnD,UAA2BA,QAAQinD,MAC9CjnD,QAAQinD,KAAK,wBAA0BF,GAI/C,QAASG,GAAUH,EAAKvmE,GACpB,GAAI2mE,IAAY,CAChB,OAAOh7E,GAAO,WAKV,MAJIg7E,KACAL,EAASC,GACTI,GAAY,GAET3mE,EAAGrB,MAAM3Y,KAAM+F,YACvBiU,GAGP,QAAS4mE,GAAgB/pE,EAAM0pE,GACtBM,GAAahqE,KACdypE,EAASC,GACTM,GAAahqE,IAAQ,GAI7B,QAASiqE,GAASC,EAAMnpE,GACpB,MAAO,UAAUhS,GACb,MAAOo7E,GAAaD,EAAKxgF,KAAKP,KAAM4F,GAAIgS,IAGhD,QAASqpE,GAAgBF,EAAMG,GAC3B,MAAO,UAAUt7E,GACb,MAAO5F,MAAKmhF,aAAaC,QAAQL,EAAKxgF,KAAKP,KAAM4F,GAAIs7E,IAI7D,QAASG,GAAUz7E,EAAGa,GAElB,GAGI66E,GAASC,EAHTC,EAA0C,IAAvB/6E,EAAE2yB,OAASxzB,EAAEwzB,SAAiB3yB,EAAE8yB,QAAU3zB,EAAE2zB,SAE/D+M,EAAS1gC,EAAEqzB,QAAQplB,IAAI2tE,EAAgB,SAa3C,OAViB,GAAb/6E,EAAI6/B,GACJg7C,EAAU17E,EAAEqzB,QAAQplB,IAAI2tE,EAAiB,EAAG,UAE5CD,GAAU96E,EAAI6/B,IAAWA,EAASg7C,KAElCA,EAAU17E,EAAEqzB,QAAQplB,IAAI2tE,EAAiB,EAAG,UAE5CD,GAAU96E,EAAI6/B,IAAWg7C,EAAUh7C,MAG9Bk7C,EAAiBD,GAc9B,QAASE,GAAgBp8C,EAAQxC,EAAM6+C,GACnC,GAAIC,EAEJ,OAAgB,OAAZD,EAEO7+C,EAEgB,MAAvBwC,EAAOu8C,aACAv8C,EAAOu8C,aAAa/+C,EAAM6+C,GACX,MAAfr8C,EAAOw8C,MAEdF,EAAOt8C,EAAOw8C,KAAKH,GACfC,GAAe,GAAP9+C,IACRA,GAAQ,IAEP8+C,GAAiB,KAAT9+C,IACTA,EAAO,GAEJA,GAGAA,EAQf,QAASi/C,MAIT,QAASC,GAAOC,EAAQC,GAChBA,KAAiB,GACjBC,EAAcF,GAElBG,EAAWniF,KAAMgiF,GACjBhiF,KAAK+4B,GAAK,GAAIn0B,OAAMo9E,EAAOjpD,IAGvBqpD,MAAqB,IACrBA,IAAmB,EACnBv+E,GAAOw+E,aAAariF,MACpBoiF,IAAmB,GAK3B,QAASE,GAASlyE,GACd,GAAImyE,GAAkBC,EAAqBpyE,GACvCqyE,EAAQF,EAAgBnpD,MAAQ,EAChCspD,EAAWH,EAAgBI,SAAW,EACtCC,EAASL,EAAgBhpD,OAAS,EAClCspD,EAAQN,EAAgBO,MAAQ,EAChCC,EAAOR,EAAgBrpD,KAAO,EAC9B+E,EAAQskD,EAAgB1/C,MAAQ,EAChC3E,EAAUqkD,EAAgB3/C,QAAU,EACpCzE,EAAUokD,EAAgB5/C,QAAU,EACpCvE,EAAemkD,EAAgB7/C,aAAe,CAGlD1iC,MAAKgjF,eAAiB5kD,EACR,IAAVD,EACU,IAAVD,EACQ,KAARD,EAGJj+B,KAAKijF,OAASF,EACF,EAARF,EAIJ7iF,KAAKkjF,SAAWN,EACD,EAAXF,EACQ,GAARD,EAEJziF,KAAKwT,SAELxT,KAAKmjF,QAAUt/E,GAAOs9E,aAEtBnhF,KAAKojF,UAQT,QAASz9E,GAAOC,EAAGa,GACf,IAAK,GAAIZ,KAAKY,GACNk5E,EAAWl5E,EAAGZ,KACdD,EAAEC,GAAKY,EAAEZ,GAYjB,OARI85E,GAAWl5E,EAAG,cACdb,EAAEF,SAAWe,EAAEf,UAGfi6E,EAAWl5E,EAAG,aACdb,EAAEyB,QAAUZ,EAAEY,SAGXzB,EAGX,QAASu8E,GAAWl4D,EAAID,GACpB,GAAInkB,GAAGK,EAAMm9E,CAiCb,IA/BqC,mBAA1Br5D,GAAKs5D,mBACZr5D,EAAGq5D,iBAAmBt5D,EAAKs5D,kBAER,mBAAZt5D,GAAKu5D,KACZt5D,EAAGs5D,GAAKv5D,EAAKu5D,IAEM,mBAAZv5D,GAAKw5D,KACZv5D,EAAGu5D,GAAKx5D,EAAKw5D,IAEM,mBAAZx5D,GAAKy5D,KACZx5D,EAAGw5D,GAAKz5D,EAAKy5D,IAEW,mBAAjBz5D,GAAK05D,UACZz5D,EAAGy5D,QAAU15D,EAAK05D,SAEG,mBAAd15D,GAAK25D,OACZ15D,EAAG05D,KAAO35D,EAAK25D,MAEQ,mBAAhB35D,GAAK45D,SACZ35D,EAAG25D,OAAS55D,EAAK45D,QAEO,mBAAjB55D,GAAK65D,UACZ55D,EAAG45D,QAAU75D,EAAK65D,SAEE,mBAAb75D,GAAK85D,MACZ75D,EAAG65D,IAAM95D,EAAK85D,KAEU,mBAAjB95D,GAAKm5D,UACZl5D,EAAGk5D,QAAUn5D,EAAKm5D,SAGlBY,GAAiB/9E,OAAS,EAC1B,IAAKH,IAAKk+E,IACN79E,EAAO69E,GAAiBl+E,GACxBw9E,EAAMr5D,EAAK9jB,GACQ,mBAARm9E,KACPp5D,EAAG/jB,GAAQm9E,EAKvB,OAAOp5D,GAGX,QAAS+5D,GAASC,GACd,MAAa,GAATA,EACOz/E,KAAK61C,KAAK4pC,GAEVz/E,KAAKgB,MAAMy+E,GAM1B,QAASjD,GAAaiD,EAAQC,EAAcC,GAIxC,IAHA,GAAIC,GAAS,GAAK5/E,KAAK+mB,IAAI04D,GACvBv0D,EAAOu0D,GAAU,EAEdG,EAAOp+E,OAASk+E,GACnBE,EAAS,IAAMA,CAEnB,QAAQ10D,EAAQy0D,EAAY,IAAM,GAAM,KAAOC,EAGnD,QAASC,GAA0BC,EAAMr+E,GACrC,GAAIs+E,IAAOnmD,aAAc,EAAGwkD,OAAQ,EAUpC,OARA2B,GAAI3B,OAAS38E,EAAMszB,QAAU+qD,EAAK/qD,QACC,IAA9BtzB,EAAMmzB,OAASkrD,EAAKlrD,QACrBkrD,EAAKrrD,QAAQplB,IAAI0wE,EAAI3B,OAAQ,KAAK4B,QAAQv+E,MACxCs+E,EAAI3B,OAGV2B,EAAInmD,cAAgBn4B,GAAUq+E,EAAKrrD,QAAQplB,IAAI0wE,EAAI3B,OAAQ,KAEpD2B,EAGX,QAASE,GAAkBH,EAAMr+E,GAC7B,GAAIs+E,EAUJ,OATAt+E,GAAQy+E,EAAOz+E,EAAOq+E,GAClBA,EAAKK,SAAS1+E,GACds+E,EAAMF,EAA0BC,EAAMr+E,IAEtCs+E,EAAMF,EAA0Bp+E,EAAOq+E,GACvCC,EAAInmD,cAAgBmmD,EAAInmD,aACxBmmD,EAAI3B,QAAU2B,EAAI3B,QAGf2B,EAIX,QAASK,GAAY7oD,EAAWllB,GAC5B,MAAO,UAAUwsE,EAAKnC,GAClB,GAAI2D,GAAKC,CAUT,OARe,QAAX5D,GAAoBl8E,OAAOk8E,KAC3BN,EAAgB/pE,EAAM,YAAcA,EAAQ,uDAAyDA,EAAO,qBAC5GiuE,EAAMzB,EAAKA,EAAMnC,EAAQA,EAAS4D,GAGtCzB,EAAqB,gBAARA,IAAoBA,EAAMA,EACvCwB,EAAMhhF,GAAOuM,SAASizE,EAAKnC,GAC3B6D,EAAgC/kF,KAAM6kF,EAAK9oD,GACpC/7B,MAIf,QAAS+kF,GAAgCC,EAAK50E,EAAU60E,EAAU5C,GAC9D,GAAIjkD,GAAehuB,EAAS4yE,cACxBD,EAAO3yE,EAAS6yE,MAChBL,EAASxyE,EAAS8yE,OACtBb,GAA+B,MAAhBA,GAAuB,EAAOA,EAEzCjkD,GACA4mD,EAAIjsD,GAAGmsD,SAASF,EAAIjsD,GAAKqF,EAAe6mD,GAExClC,GACAoC,GAAUH,EAAK,OAAQI,GAAUJ,EAAK,QAAUjC,EAAOkC,GAEvDrC,GACAyC,GAAeL,EAAKI,GAAUJ,EAAK,SAAWpC,EAASqC,GAEvD5C,GACAx+E,GAAOw+E,aAAa2C,EAAKjC,GAAQH,GAKzC,QAASr8E,GAAQ++E,GACb,MAAiD,mBAA1C1+E,OAAOmN,UAAUrO,SAASnF,KAAK+kF,GAG1C,QAAS3gF,GAAO2gF,GACZ,MAAiD,kBAA1C1+E,OAAOmN,UAAUrO,SAASnF,KAAK+kF,IAClCA,YAAiB1gF,MAIzB,QAAS2gF,GAAcpe,EAAQC,EAAQoe,GACnC,GAGI3/E,GAHAC,EAAMtB,KAAKL,IAAIgjE,EAAOnhE,OAAQohE,EAAOphE,QACrCy/E,EAAajhF,KAAK+mB,IAAI47C,EAAOnhE,OAASohE,EAAOphE,QAC7C0/E,EAAQ,CAEZ,KAAK7/E,EAAI,EAAOC,EAAJD,EAASA,KACZ2/E,GAAere,EAAOthE,KAAOuhE,EAAOvhE,KACnC2/E,GAAeG,EAAMxe,EAAOthE,MAAQ8/E,EAAMve,EAAOvhE,MACnD6/E,GAGR,OAAOA,GAAQD,EAGnB,QAASG,GAAeC,GACpB,GAAIA,EAAO,CACP,GAAIC,GAAUD,EAAMtgD,cAAcz6B,QAAQ,QAAS,KACnD+6E,GAAQE,GAAYF,IAAUG,GAAeF,IAAYA,EAE7D,MAAOD,GAGX,QAASrD,GAAqByD,GAC1B,GACIC,GACAhgF,EAFAq8E,IAIJ,KAAKr8E,IAAQ+/E,GACLtG,EAAWsG,EAAa//E,KACxBggF,EAAiBN,EAAe1/E,GAC5BggF,IACA3D,EAAgB2D,GAAkBD,EAAY//E,IAK1D,OAAOq8E,GAGX,QAAS4D,GAAS/2E,GACd,GAAIwI,GAAOwuE,CAEX,IAA8B,IAA1Bh3E,EAAMpI,QAAQ,QACd4Q,EAAQ,EACRwuE,EAAS,UAER,CAAA,GAA+B,IAA3Bh3E,EAAMpI,QAAQ,SAKnB,MAJA4Q,GAAQ,GACRwuE,EAAS,QAMbviF,GAAOuL,GAAS,SAAUmzB,EAAQ75B,GAC9B,GAAI7C,GAAGwgF,EACHvsE,EAASjW,GAAOs/E,QAAQ/zE,GACxBk3E,IAYJ,IAVsB,gBAAX/jD,KACP75B,EAAQ65B,EACRA,EAAS17B,GAGbw/E,EAAS,SAAUxgF,GACf,GAAIrF,GAAIqD,KAAS0iF,MAAMC,IAAIJ,EAAQvgF,EACnC,OAAOiU,GAAOvZ,KAAKsD,GAAOs/E,QAAS3iF,EAAG+hC,GAAU,KAGvC,MAAT75B,EACA,MAAO29E,GAAO39E,EAGd,KAAK7C,EAAI,EAAO+R,EAAJ/R,EAAWA,IACnBygF,EAAQ/9E,KAAK89E,EAAOxgF,GAExB,OAAOygF,IAKnB,QAASX,GAAMc,GACX,GAAIC,IAAiBD,EACjBniF,EAAQ,CAUZ,OARsB,KAAlBoiF,GAAuBC,SAASD,KAE5BpiF,EADAoiF,GAAiB,EACTliF,KAAKgB,MAAMkhF,GAEXliF,KAAK61C,KAAKqsC,IAInBpiF,EAGX,QAASsiF,GAAYxtD,EAAMG,GACvB,MAAO,IAAI30B,MAAKA,KAAKiiF,IAAIztD,EAAMG,EAAQ,EAAG,IAAIutD,aAGlD,QAASC,GAAY3tD,EAAM4tD,EAAKC,GAC5B,MAAOC,IAAWrjF,IAAQu1B,EAAM,GAAI,GAAK4tD,EAAMC,IAAOD,EAAKC,GAAKnE,KAGpE,QAASqE,GAAW/tD,GAChB,MAAOguD,GAAWhuD,GAAQ,IAAM,IAGpC,QAASguD,GAAWhuD,GAChB,MAAQA,GAAO,IAAM,GAAKA,EAAO,MAAQ,GAAMA,EAAO,MAAQ,EAGlE,QAAS8oD,GAAc1hF,GACnB,GAAIkkB,EACAlkB,GAAE6mF,IAAyB,KAAnB7mF,EAAEsjF,IAAIp/D,WACdA,EACIlkB,EAAE6mF,GAAGC,IAAS,GAAK9mF,EAAE6mF,GAAGC,IAAS,GAAKA,GACtC9mF,EAAE6mF,GAAGE,IAAQ,GAAK/mF,EAAE6mF,GAAGE,IAAQX,EAAYpmF,EAAE6mF,GAAGG,IAAOhnF,EAAE6mF,GAAGC,KAAUC,GACtE/mF,EAAE6mF,GAAGI,IAAQ,GAAKjnF,EAAE6mF,GAAGI,IAAQ,IACX,KAAfjnF,EAAE6mF,GAAGI,MAAkC,IAAjBjnF,EAAE6mF,GAAGK,KACY,IAAjBlnF,EAAE6mF,GAAGM,KACiB,IAAtBnnF,EAAE6mF,GAAGO,KAAuBH,GACvDjnF,EAAE6mF,GAAGK,IAAU,GAAKlnF,EAAE6mF,GAAGK,IAAU,GAAKA,GACxClnF,EAAE6mF,GAAGM,IAAU,GAAKnnF,EAAE6mF,GAAGM,IAAU,GAAKA,GACxCnnF,EAAE6mF,GAAGO,IAAe,GAAKpnF,EAAE6mF,GAAGO,IAAe,IAAMA,GACnD,GAEApnF,EAAEsjF,IAAI+D,qBAAkCL,GAAX9iE,GAAmBA,EAAW6iE,MAC3D7iE,EAAW6iE,IAGf/mF,EAAEsjF,IAAIp/D,SAAWA,GAIzB,QAASojE,GAAQtnF,GAiBb,MAhBkB,OAAdA,EAAEunF,WACFvnF,EAAEunF,UAAY/iF,MAAMxE,EAAEu4B,GAAGivD,YACrBxnF,EAAEsjF,IAAIp/D,SAAW,IAChBlkB,EAAEsjF,IAAIjE,QACNr/E,EAAEsjF,IAAI5D,eACN1/E,EAAEsjF,IAAI7D,YACNz/E,EAAEsjF,IAAI3D,gBACN3/E,EAAEsjF,IAAI1D,gBAEP5/E,EAAEkjF,UACFljF,EAAEunF,SAAWvnF,EAAEunF,UACa,IAAxBvnF,EAAEsjF,IAAI9D,eACwB,IAA9Bx/E,EAAEsjF,IAAIhE,aAAa95E,QACnBxF,EAAEsjF,IAAImE,UAAYphF,IAGvBrG,EAAEunF,SAGb,QAASG,GAAgBj/E,GACrB,MAAOA,GAAMA,EAAIs8B,cAAcz6B,QAAQ,IAAK,KAAO7B,EAMvD,QAASk/E,GAAaC,GAGlB,IAFA,GAAW97D,GAAGpD,EAAMmc,EAAQ/8B,EAAxBzC,EAAI,EAEDA,EAAIuiF,EAAMpiF,QAAQ,CAKrB,IAJAsC,EAAQ4/E,EAAgBE,EAAMviF,IAAIyC,MAAM,KACxCgkB,EAAIhkB,EAAMtC,OACVkjB,EAAOg/D,EAAgBE,EAAMviF,EAAI,IACjCqjB,EAAOA,EAAOA,EAAK5gB,MAAM,KAAO,KACzBgkB,EAAI,GAAG,CAEV,GADA+Y,EAASgjD,EAAW//E,EAAMsD,MAAM,EAAG0gB,GAAG9jB,KAAK,MAEvC,MAAO68B,EAEX,IAAInc,GAAQA,EAAKljB,QAAUsmB,GAAKi5D,EAAcj9E,EAAO4gB,GAAM,IAASoD,EAAI,EAEpE,KAEJA,KAEJzmB,IAEJ,MAAO,MAGX,QAASwiF,GAAWxxE,GAChB,GAAIyxE,GAAY,IAChB,KAAKr/C,GAAQpyB,IAAS0xE,GAClB,IACID,EAAYzkF,GAAOwhC,UACjB,WAAkC,GAAI1N,GAAI,GAAI/zB,OAAM,gCAAiE,MAA7B+zB,GAAEq8C,KAAO,mBAA0Br8C,KAE7H9zB,GAAOwhC,OAAOijD,GAChB,MAAO3wD,IAEb,MAAOsR,IAAQpyB,GAKnB,QAAS6tE,GAAOY,EAAOkD,GACnB,GAAIjE,GAAKx3D,CACT,OAAIy7D,GAAM5E,QACNW,EAAMiE,EAAMvvD,QACZlM,GAAQlpB,GAAOyD,SAASg+E,IAAU3gF,EAAO2gF,IAChCA,GAASzhF,GAAOyhF,KAAYf,EAErCA,EAAIxrD,GAAGmsD,SAASX,EAAIxrD,GAAKhM,GACzBlpB,GAAOw+E,aAAakC,GAAK,GAClBA,GAEA1gF,GAAOyhF,GAAOmD,QA6N7B,QAASC,GAAuBpD,GAC5B,MAAIA,GAAMzgF,MAAM,YACLygF,EAAMx6E,QAAQ,WAAY,IAE9Bw6E,EAAMx6E,QAAQ,MAAO,IAGhC,QAAS69E,GAAmBpmD,GACxB,GAA4C18B,GAAGG,EAA3C+C,EAAQw5B,EAAO19B,MAAM+jF,GAEzB,KAAK/iF,EAAI,EAAGG,EAAS+C,EAAM/C,OAAYA,EAAJH,EAAYA,IAEvCkD,EAAMlD,GADNgjF,GAAqB9/E,EAAMlD,IAChBgjF,GAAqB9/E,EAAMlD,IAE3B6iF,EAAuB3/E,EAAMlD,GAIhD,OAAO,UAAUm/E,GACb,GAAIZ,GAAS,EACb,KAAKv+E,EAAI,EAAOG,EAAJH,EAAYA,IACpBu+E,GAAUr7E,EAAMlD,YAAcouC,UAAWlrC,EAAMlD,GAAGtF,KAAKykF,EAAKziD,GAAUx5B,EAAMlD,EAEhF,OAAOu+E,IAKf,QAAS0E,GAAatoF,EAAG+hC,GACrB,MAAK/hC,GAAEsnF,WAIPvlD,EAASwmD,EAAaxmD,EAAQ/hC,EAAE2gF,cAE3B6H,GAAgBzmD,KACjBymD,GAAgBzmD,GAAUomD,EAAmBpmD,IAG1CymD,GAAgBzmD,GAAQ/hC,IATpBA,EAAE2gF,aAAa8H,cAY9B,QAASF,GAAaxmD,EAAQ8C,GAG1B,QAAS6jD,GAA4B5D,GACjC,MAAOjgD,GAAO8jD,eAAe7D,IAAUA,EAH3C,GAAIz/E,GAAI,CAOR,KADAujF,GAAsBC,UAAY,EAC3BxjF,GAAK,GAAKujF,GAAsB96E,KAAKi0B,IACxCA,EAASA,EAAOz3B,QAAQs+E,GAAuBF,GAC/CE,GAAsBC,UAAY,EAClCxjF,GAAK,CAGT,OAAO08B,GAUX,QAAS+mD,GAAsBzjB,EAAOmc,GAClC,GAAIp8E,GAAG0gE,EAAS0b,EAAO0B,OACvB,QAAQ7d,GACR,IAAK,IACD,MAAO0jB,GACX,KAAK,OACD,MAAOC,GACX,KAAK,OACL,IAAK,OACL,IAAK,OACD,MAAOljB,GAASmjB,GAAuBC,EAC3C,KAAK,IACL,IAAK,IACL,IAAK,IACD,MAAOC,GACX,KAAK,SACL,IAAK,QACL,IAAK,QACL,IAAK,QACD,MAAOrjB,GAASsjB,GAAsBC,EAC1C,KAAK,IACD,GAAIvjB,EACA,MAAOijB,GAGf,KAAK,KACD,GAAIjjB,EACA,MAAOwjB,GAGf,KAAK,MACD,GAAIxjB,EACA,MAAOkjB,GAGf,KAAK,MACD,MAAOO,GACX,KAAK,MACL,IAAK,OACL,IAAK,KACL,IAAK,MACL,IAAK,OACD,MAAOC,GACX,KAAK,IACL,IAAK,IACD,MAAOhI,GAAOmB,QAAQ8G,cAC1B,KAAK,IACD,MAAOC,GACX,KAAK,IACD,MAAOC,GACX,KAAK,IACL,IAAK,KACD,MAAOC,GACX,KAAK,IACD,MAAOC,GACX,KAAK,OACD,MAAOC,GACX,KAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACD,MAAOhkB,GAASwjB,GAAsBS,EAC1C,KAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,MAAOA,GACX,KAAK,KACD,MAAOjkB,GAAS0b,EAAOmB,QAAQqH,cAAgBxI,EAAOmB,QAAQsH,oBAClE,SAEI,MADA7kF,GAAI,GAAI8kF,QAAOC,GAAaC,GAAe/kB,EAAM/6D,QAAQ,KAAM,KAAM,OAK7E,QAAS+/E,GAAoBC,GACzBA,EAASA,GAAU,EACnB,IAAIC,GAAqBD,EAAOjmF,MAAMulF,QAClCY,EAAUD,EAAkBA,EAAkB/kF,OAAS,OACvDyH,GAASu9E,EAAU,IAAInmF,MAAMomF,MAA0B,IAAK,EAAG,GAC/D/sD,IAAuB,GAAXzwB,EAAM,IAAWk4E,EAAMl4E,EAAM,GAE7C,OAAoB,MAAbA,EAAM,GAAaywB,GAAWA,EAIzC,QAASgtD,GAAwBrlB,EAAOyf,EAAOtD,GAC3C,GAAIp8E,GAAGulF,EAAgBnJ,EAAOqF,EAE9B,QAAQxhB,GAER,IAAK,IACY,MAATyf,IACA6F,EAAc7D,IAA8B,GAApB3B,EAAML,GAAS,GAE3C,MAEJ,KAAK,IACL,IAAK,KACY,MAATA,IACA6F,EAAc7D,IAAS3B,EAAML,GAAS,EAE1C,MACJ,KAAK,MACL,IAAK,OACD1/E,EAAIo8E,EAAOmB,QAAQiI,YAAY9F,EAAOzf,EAAOmc,EAAO0B,SAE3C,MAAL99E,EACAulF,EAAc7D,IAAS1hF,EAEvBo8E,EAAO8B,IAAI5D,aAAeoF,CAE9B,MAEJ,KAAK,IACL,IAAK,KACY,MAATA,IACA6F,EAAc5D,IAAQ5B,EAAML,GAEhC,MACJ,KAAK,KACY,MAATA,IACA6F,EAAc5D,IAAQ5B,EAAMz6E,SAChBo6E,EAAMzgF,MAAM,WAAW,GAAI,KAE3C,MAEJ,KAAK,MACL,IAAK,OACY,MAATygF,IACAtD,EAAOqJ,WAAa1F,EAAML,GAG9B,MAEJ,KAAK,KACD6F,EAAc3D,IAAQ3jF,GAAOynF,kBAAkBhG,EAC/C,MACJ,KAAK,OACL,IAAK,QACL,IAAK,SACD6F,EAAc3D,IAAQ7B,EAAML,EAC5B,MAEJ,KAAK,IACL,IAAK,IACDtD,EAAOuJ,UAAYjG,CAEnB,MAEJ,KAAK,IACL,IAAK,KACDtD,EAAO8B,IAAImE,SAAU,CAEzB,KAAK,IACL,IAAK,KACDkD,EAAc1D,IAAQ9B,EAAML,EAC5B,MAEJ,KAAK,IACL,IAAK,KACD6F,EAAczD,IAAU/B,EAAML,EAC9B,MAEJ,KAAK,IACL,IAAK,KACD6F,EAAcxD,IAAUhC,EAAML,EAC9B,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,OACD6F,EAAcvD,IAAejC,EAAuB,KAAhB,KAAOL,GAC3C,MAEJ,KAAK,IACDtD,EAAOjpD,GAAK,GAAIn0B,MAAK+gF,EAAML,GAC3B,MAEJ,KAAK,IACDtD,EAAOjpD,GAAK,GAAIn0B,MAAyB,IAApBshB,WAAWo/D,GAChC,MAEJ,KAAK,IACL,IAAK,KACDtD,EAAOwJ,SAAU,EACjBxJ,EAAO2B,KAAOkH,EAAoBvF,EAClC,MAEJ,KAAK,KACL,IAAK,MACL,IAAK,OACD1/E,EAAIo8E,EAAOmB,QAAQsI,cAAcnG,GAExB,MAAL1/E,GACAo8E,EAAO0J,GAAK1J,EAAO0J,OACnB1J,EAAO0J,GAAM,EAAI9lF,GAEjBo8E,EAAO8B,IAAI6H,eAAiBrG,CAEhC,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACDzf,EAAQA,EAAMt6D,OAAO,EAAG,EAE5B,KAAK,OACL,IAAK,OACL,IAAK,QACDs6D,EAAQA,EAAMt6D,OAAO,EAAG,GACpB+5E,IACAtD,EAAO0J,GAAK1J,EAAO0J,OACnB1J,EAAO0J,GAAG7lB,GAAS8f,EAAML,GAE7B,MACJ,KAAK,KACL,IAAK,KACDtD,EAAO0J,GAAK1J,EAAO0J,OACnB1J,EAAO0J,GAAG7lB,GAAShiE,GAAOynF,kBAAkBhG,IAIpD,QAASsG,GAAsB5J,GAC3B,GAAI/vB,GAAG45B,EAAU/I,EAAMhgD,EAASkkD,EAAKC,EAAK6E,CAE1C75B,GAAI+vB,EAAO0J,GACC,MAARz5B,EAAE85B,IAAqB,MAAP95B,EAAE+5B,GAAoB,MAAP/5B,EAAEg6B,GACjCjF,EAAM,EACNC,EAAM,EAMN4E,EAAWnM,EAAIztB,EAAE85B,GAAI/J,EAAOqF,GAAGG,IAAON,GAAWrjF,KAAU,EAAG,GAAGu1B,MACjE0pD,EAAOpD,EAAIztB,EAAE+5B,EAAG,GAChBlpD,EAAU48C,EAAIztB,EAAEg6B,EAAG,KAEnBjF,EAAMhF,EAAOmB,QAAQ+I,MAAMlF,IAC3BC,EAAMjF,EAAOmB,QAAQ+I,MAAMjF,IAE3B4E,EAAWnM,EAAIztB,EAAEk6B,GAAInK,EAAOqF,GAAGG,IAAON,GAAWrjF,KAAUmjF,EAAKC,GAAK7tD,MACrE0pD,EAAOpD,EAAIztB,EAAEA,EAAG,GAEL,MAAPA,EAAEhlD,GAEF61B,EAAUmvB,EAAEhlD,EACE+5E,EAAVlkD,KACEggD,GAINhgD,EAFc,MAAPmvB,EAAEt6B,EAECs6B,EAAEt6B,EAAIqvD,EAGNA,GAGlB8E,EAAOM,GAAmBP,EAAU/I,EAAMhgD,EAASmkD,EAAKD,GAExDhF,EAAOqF,GAAGG,IAAQsE,EAAK1yD,KACvB4oD,EAAOqJ,WAAaS,EAAK3yD,UAO7B,QAASkzD,GAAerK,GACpB,GAAIn8E,GAAGyzB,EAAkBgzD,EAAaC,EAAzBjH,IAEb,KAAItD,EAAOjpD,GAAX,CA6BA,IAzBAuzD,EAAcE,GAAiBxK,GAG3BA,EAAO0J,IAAyB,MAAnB1J,EAAOqF,GAAGE,KAAqC,MAApBvF,EAAOqF,GAAGC,KAClDsE,EAAsB5J,GAItBA,EAAOqJ,aACPkB,EAAY7M,EAAIsC,EAAOqF,GAAGG,IAAO8E,EAAY9E,KAEzCxF,EAAOqJ,WAAalE,EAAWoF,KAC/BvK,EAAO8B,IAAI+D,oBAAqB,GAGpCvuD,EAAOmzD,GAAYF,EAAW,EAAGvK,EAAOqJ,YACxCrJ,EAAOqF,GAAGC,IAAShuD,EAAKozD,cACxB1K,EAAOqF,GAAGE,IAAQjuD,EAAKwtD,cAQtBjhF,EAAI,EAAO,EAAJA,GAAyB,MAAhBm8E,EAAOqF,GAAGxhF,KAAcA,EACzCm8E,EAAOqF,GAAGxhF,GAAKy/E,EAAMz/E,GAAKymF,EAAYzmF,EAI1C,MAAW,EAAJA,EAAOA,IACVm8E,EAAOqF,GAAGxhF,GAAKy/E,EAAMz/E,GAAsB,MAAhBm8E,EAAOqF,GAAGxhF,GAAqB,IAANA,EAAU,EAAI,EAAKm8E,EAAOqF,GAAGxhF,EAI7D,MAApBm8E,EAAOqF,GAAGI,KACgB,IAAtBzF,EAAOqF,GAAGK,KACY,IAAtB1F,EAAOqF,GAAGM,KACiB,IAA3B3F,EAAOqF,GAAGO,MACd5F,EAAO2K,UAAW,EAClB3K,EAAOqF,GAAGI,IAAQ,GAGtBzF,EAAOjpD,IAAMipD,EAAOwJ,QAAUiB,GAAcG,IAAUj0E,MAAM,KAAM2sE,GAG/C,MAAftD,EAAO2B,MACP3B,EAAOjpD,GAAG8zD,cAAc7K,EAAOjpD,GAAG+zD,gBAAkB9K,EAAO2B,MAG3D3B,EAAO2K,WACP3K,EAAOqF,GAAGI,IAAQ,KAI1B,QAASsF,GAAe/K,GACpB,GAAIO,EAEAP,GAAOjpD,KAIXwpD,EAAkBC,EAAqBR,EAAOuB,IAC9CvB,EAAOqF,IACH9E,EAAgBnpD,KAChBmpD,EAAgBhpD,MAChBgpD,EAAgBrpD,KAAOqpD,EAAgBjpD,KACvCipD,EAAgB1/C,KAChB0/C,EAAgB3/C,OAChB2/C,EAAgB5/C,OAChB4/C,EAAgB7/C,aAGpB2pD,EAAerK,IAGnB,QAASwK,IAAiBxK,GACtB,GAAIhkD,GAAM,GAAIp5B,KACd,OAAIo9E,GAAOwJ,SAEHxtD,EAAIgvD,iBACJhvD,EAAI0uD,cACJ1uD,EAAI8oD,eAGA9oD,EAAIoF,cAAepF,EAAIgG,WAAYhG,EAAI+F,WAKvD,QAASkpD,IAA4BjL,GACjC,GAAIA,EAAOwB,KAAO3/E,GAAOqpF,SAErB,WADAC,IAASnL,EAIbA,GAAOqF,MACPrF,EAAO8B,IAAIjE,OAAQ,CAGnB,IACIh6E,GAAGunF,EAAaC,EAAQxnB,EAAOynB,EAD/BxC,EAAS,GAAK9I,EAAOuB,GAErBgK,EAAezC,EAAO9kF,OACtBwnF,EAAyB,CAI7B,KAFAH,EAAStE,EAAa/G,EAAOwB,GAAIxB,EAAOmB,SAASt+E,MAAM+jF,QAElD/iF,EAAI,EAAGA,EAAIwnF,EAAOrnF,OAAQH,IAC3BggE,EAAQwnB,EAAOxnF,GACfunF,GAAetC,EAAOjmF,MAAMykF,EAAsBzjB,EAAOmc,SAAgB,GACrEoL,IACAE,EAAUxC,EAAOv/E,OAAO,EAAGu/E,EAAO9jF,QAAQomF,IACtCE,EAAQtnF,OAAS,GACjBg8E,EAAO8B,IAAI/D,YAAYx3E,KAAK+kF,GAEhCxC,EAASA,EAAOl/E,MAAMk/E,EAAO9jF,QAAQomF,GAAeA,EAAYpnF,QAChEwnF,GAA0BJ,EAAYpnF,QAGtC6iF,GAAqBhjB,IACjBunB,EACApL,EAAO8B,IAAIjE,OAAQ,EAGnBmC,EAAO8B,IAAIhE,aAAav3E,KAAKs9D,GAEjCqlB,EAAwBrlB,EAAOunB,EAAapL,IAEvCA,EAAO0B,UAAY0J,GACxBpL,EAAO8B,IAAIhE,aAAav3E,KAAKs9D,EAKrCmc,GAAO8B,IAAI9D,cAAgBuN,EAAeC,EACtC1C,EAAO9kF,OAAS,GAChBg8E,EAAO8B,IAAI/D,YAAYx3E,KAAKuiF,GAI5B9I,EAAO8B,IAAImE,WAAY,GAAQjG,EAAOqF,GAAGI,KAAS,KAClDzF,EAAO8B,IAAImE,QAAUphF,GAGzBm7E,EAAOqF,GAAGI,IAAQhG,EAAgBO,EAAOmB,QAASnB,EAAOqF,GAAGI,IACpDzF,EAAOuJ,WACfc,EAAerK,GACfE,EAAcF,GAGlB,QAAS4I,IAAex+E,GACpB,MAAOA,GAAEtB,QAAQ,sCAAuC,SAAU2iF,EAASthB,EAAIC,EAAIC,EAAIqhB,GACnF,MAAOvhB,IAAMC,GAAMC,GAAMqhB,IAKjC,QAAS/C,IAAav+E,GAClB,MAAOA,GAAEtB,QAAQ,yBAA0B,QAI/C,QAAS6iF,IAA2B3L,GAChC,GAAI4L,GACAC,EAEAC,EACAjoF,EACAkoF,CAEJ,IAAyB,IAArB/L,EAAOwB,GAAGx9E,OAGV,MAFAg8E,GAAO8B,IAAI3D,eAAgB,OAC3B6B,EAAOjpD,GAAK,GAAIn0B,MAAKopF,KAIzB,KAAKnoF,EAAI,EAAGA,EAAIm8E,EAAOwB,GAAGx9E,OAAQH,IAC9BkoF,EAAe,EACfH,EAAazL,KAAeH,GACN,MAAlBA,EAAOwJ,UACPoC,EAAWpC,QAAUxJ,EAAOwJ,SAEhCoC,EAAW9J,IAAMlE,IACjBgO,EAAWpK,GAAKxB,EAAOwB,GAAG39E,GAC1BonF,GAA4BW,GAEvB9F,EAAQ8F,KAKbG,GAAgBH,EAAW9J,IAAI9D,cAG/B+N,GAAqD,GAArCH,EAAW9J,IAAIhE,aAAa95E,OAE5C4nF,EAAW9J,IAAImK,MAAQF,GAEJ,MAAfD,GAAsCA,EAAfC,KACvBD,EAAcC,EACdF,EAAaD,GAIrBjoF,GAAOq8E,EAAQ6L,GAAcD,GAIjC,QAAST,IAASnL,GACd,GAAIn8E,GAAGqoF,EACHpD,EAAS9I,EAAOuB,GAChB1+E,EAAQspF,GAASppF,KAAK+lF,EAE1B,IAAIjmF,EAAO,CAEP,IADAm9E,EAAO8B,IAAIzD,KAAM,EACZx6E,EAAI,EAAGqoF,EAAIE,GAASpoF,OAAYkoF,EAAJroF,EAAOA,IACpC,GAAIuoF,GAASvoF,GAAG,GAAGd,KAAK+lF,GAAS,CAE7B9I,EAAOwB,GAAK4K,GAASvoF,GAAG,IAAMhB,EAAM,IAAM,IAC1C,OAGR,IAAKgB,EAAI,EAAGqoF,EAAIG,GAASroF,OAAYkoF,EAAJroF,EAAOA,IACpC,GAAIwoF,GAASxoF,GAAG,GAAGd,KAAK+lF,GAAS,CAC7B9I,EAAOwB,IAAM6K,GAASxoF,GAAG,EACzB,OAGJilF,EAAOjmF,MAAMulF,MACbpI,EAAOwB,IAAM,KAEjByJ,GAA4BjL,OAE5BA,GAAO+F,UAAW,EAK1B,QAASuG,IAAmBtM,GACxBmL,GAASnL,GACLA,EAAO+F,YAAa,UACb/F,GAAO+F,SACdlkF,GAAO0qF,wBAAwBvM,IAIvC,QAASr0E,IAAIqvC,EAAKhjC,GACd,GAAcnU,GAAV0+E,IACJ,KAAK1+E,EAAI,EAAGA,EAAIm3C,EAAIh3C,SAAUH,EAC1B0+E,EAAIh8E,KAAKyR,EAAGgjC,EAAIn3C,GAAIA,GAExB,OAAO0+E,GAGX,QAASiK,IAAkBxM,GACvB,GAAuByL,GAAnBnI,EAAQtD,EAAOuB,EACf+B,KAAUz+E,EACVm7E,EAAOjpD,GAAK,GAAIn0B,MACTD,EAAO2gF,GACdtD,EAAOjpD,GAAK,GAAIn0B,OAAM0gF,GAC6B,QAA3CmI,EAAUgB,GAAgB1pF,KAAKugF,IACvCtD,EAAOjpD,GAAK,GAAIn0B,OAAM6oF,EAAQ,IACN,gBAAVnI,GACdgJ,GAAmBtM,GACZz7E,EAAQ++E,IACftD,EAAOqF,GAAK15E,GAAI23E,EAAM15E,MAAM,GAAI,SAAUgY,GACtC,MAAO1Y,UAAS0Y,EAAK,MAEzByoE,EAAerK,IACU,gBAAZ,GACb+K,EAAe/K,GACU,gBAAZ,GAEbA,EAAOjpD,GAAK,GAAIn0B,MAAK0gF,GAErBzhF,GAAO0qF,wBAAwBvM,GAIvC,QAAS4K,IAASt6E,EAAG9R,EAAGyM,EAAGd,EAAG2gE,EAAG1gE,EAAGsiF,GAGhC,GAAIp1D,GAAO,GAAI10B,MAAK0N,EAAG9R,EAAGyM,EAAGd,EAAG2gE,EAAG1gE,EAAGsiF,EAMtC,OAHQ,MAAJp8E,GACAgnB,EAAK6J,YAAY7wB,GAEdgnB,EAGX,QAASmzD,IAAYn6E,GACjB,GAAIgnB,GAAO,GAAI10B,MAAKA,KAAKiiF,IAAIluE,MAAM,KAAM5S,WAIzC,OAHQ,MAAJuM,GACAgnB,EAAKq1D,eAAer8E,GAEjBgnB,EAGX,QAASs1D,IAAatJ,EAAOjgD,GACzB,GAAqB,gBAAVigD,GACP,GAAKtgF,MAAMsgF,IAKP,GADAA,EAAQjgD,EAAOomD,cAAcnG,GACR,gBAAVA,GACP,MAAO,UALXA,GAAQp6E,SAASo6E,EAAO,GAShC,OAAOA,GASX,QAASuJ,IAAkB/D,EAAQ7G,EAAQ6K,EAAeC,EAAU1pD,GAChE,MAAOA,GAAO2pD,aAAa/K,GAAU,IAAK6K,EAAehE,EAAQiE,GAGrE,QAASC,IAAaC,EAAgBH,EAAezpD,GACjD,GAAIj1B,GAAWvM,GAAOuM,SAAS6+E,GAAgB1jE,MAC3C4S,EAAU/P,GAAMhe,EAASuf,GAAG,MAC5BuO,EAAU9P,GAAMhe,EAASuf,GAAG,MAC5BsO,EAAQ7P,GAAMhe,EAASuf,GAAG,MAC1BozD,EAAO30D,GAAMhe,EAASuf,GAAG,MACzBizD,EAASx0D,GAAMhe,EAASuf,GAAG,MAC3B8yD,EAAQr0D,GAAMhe,EAASuf,GAAG,MAE1B5V,EAAOokB,EAAU+wD,GAAuB9iF,IAAM,IAAK+xB,IACnC,IAAZD,IAAkB,MAClBA,EAAUgxD,GAAuB1uF,IAAM,KAAM09B,IACnC,IAAVD,IAAgB,MAChBA,EAAQixD,GAAuB/iF,IAAM,KAAM8xB,IAClC,IAAT8kD,IAAe,MACfA,EAAOmM,GAAuBjiF,IAAM,KAAM81E,IAC/B,IAAXH,IAAiB,MACjBA,EAASsM,GAAuBpiB,IAAM,KAAM8V,IAClC,IAAVH,IAAgB,OAAS,KAAMA,EAKvC,OAHA1oE,GAAK,GAAK+0E,EACV/0E,EAAK,IAAMk1E,EAAiB,EAC5Bl1E,EAAK,GAAKsrB,EACHwpD,GAAkBl2E,SAAUoB,GAgBvC,QAASmtE,IAAWlC,EAAKmK,EAAgBC,GACrC,GAEIC,GAFAl/E,EAAMi/E,EAAuBD,EAC7BG,EAAkBF,EAAuBpK,EAAI9rD,KAajD,OATIo2D,GAAkBn/E,IAClBm/E,GAAmB,GAGDn/E,EAAM,EAAxBm/E,IACAA,GAAmB,GAGvBD,EAAiBxrF,GAAOmhF,GAAKnxE,IAAIy7E,EAAiB,MAE9CxM,KAAMt+E,KAAK61C,KAAKg1C,EAAel2D,YAAc,GAC7CC,KAAMi2D,EAAej2D,QAK7B,QAASgzD,IAAmBhzD,EAAM0pD,EAAMhgD,EAASssD,EAAsBD,GACnE,GAA6CI,GAAWp2D,EAApDlsB,EAAIw/E,GAAYrzD,EAAM,EAAG,GAAGo2D,WAOhC,OALAviF,GAAU,IAANA,EAAU,EAAIA,EAClB61B,EAAqB,MAAXA,EAAkBA,EAAUqsD,EACtCI,EAAYJ,EAAiBliF,GAAKA,EAAImiF,EAAuB,EAAI,IAAUD,EAAJliF,EAAqB,EAAI,GAChGksB,EAAY,GAAK2pD,EAAO,IAAMhgD,EAAUqsD,GAAkBI,EAAY,GAGlEn2D,KAAMD,EAAY,EAAIC,EAAOA,EAAO,EACpCD,UAAWA,EAAY,EAAKA,EAAYguD,EAAW/tD,EAAO,GAAKD,GAQvE,QAASs2D,IAAWzN,GAChB,GAEIuC,GAFAe,EAAQtD,EAAOuB,GACfhhD,EAASy/C,EAAOwB,EAKpB,OAFAxB,GAAOmB,QAAUnB,EAAOmB,SAAWt/E,GAAOs9E,WAAWa,EAAOyB,IAE9C,OAAV6B,GAAmB/iD,IAAW17B,GAAuB,KAAVy+E,EACpCzhF,GAAO6rF,SAASzP,WAAW,KAGjB,gBAAVqF,KACPtD,EAAOuB,GAAK+B,EAAQtD,EAAOmB,QAAQwM,SAASrK,IAG5CzhF,GAAOyD,SAASg+E,GACT,GAAIvD,GAAOuD,GAAO,IAClB/iD,EACHh8B,EAAQg8B,GACRorD,GAA2B3L,GAE3BiL,GAA4BjL,GAGhCwM,GAAkBxM,GAGtBuC,EAAM,GAAIxC,GAAOC,GACbuC,EAAIoI,WAEJpI,EAAI1wE,IAAI,EAAG,KACX0wE,EAAIoI,SAAW9lF,GAGZ09E,IAyCX,QAASqL,IAAO51E,EAAI61E,GAChB,GAAItL,GAAK1+E,CAIT,IAHuB,IAAnBgqF,EAAQ7pF,QAAgBO,EAAQspF,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQ7pF,OACT,MAAOnC,KAGX,KADA0gF,EAAMsL,EAAQ,GACThqF,EAAI,EAAGA,EAAIgqF,EAAQ7pF,SAAUH,EAC1BgqF,EAAQhqF,GAAGmU,GAAIuqE,KACfA,EAAMsL,EAAQhqF,GAGtB,OAAO0+E,GAsvBX,QAASc,IAAeL,EAAK1gF,GACzB,GAAIwrF,EAGJ,OAAqB,gBAAVxrF,KACPA,EAAQ0gF,EAAI7D,aAAaiK,YAAY9mF,GAEhB,gBAAVA,IACA0gF,GAIf8K,EAAatrF,KAAKL,IAAI6gF,EAAI1rD,OAClBstD,EAAY5B,EAAI5rD,OAAQ90B,IAChC0gF,EAAIjsD,GAAG,OAASisD,EAAIpB,OAAS,MAAQ,IAAM,SAASt/E,EAAOwrF,GACpD9K,GAGX,QAASI,IAAUJ,EAAK+K,GACpB,MAAO/K,GAAIjsD,GAAG,OAASisD,EAAIpB,OAAS,MAAQ,IAAMmM,KAGtD,QAAS5K,IAAUH,EAAK+K,EAAMzrF,GAC1B,MAAa,UAATyrF,EACO1K,GAAeL,EAAK1gF,GAEpB0gF,EAAIjsD,GAAG,OAASisD,EAAIpB,OAAS,MAAQ,IAAMmM,GAAMzrF,GAIhE,QAAS0rF,IAAaD,EAAME,GACxB,MAAO,UAAU3rF,GACb,MAAa,OAATA,GACA6gF,GAAUnlF,KAAM+vF,EAAMzrF,GACtBT,GAAOw+E,aAAariF,KAAMiwF,GACnBjwF,MAEAolF,GAAUplF,KAAM+vF,IAqCnC,QAASG,IAAanN,GAElB,MAAc,KAAPA,EAAa,OAGxB,QAASoN,IAAa1N,GAGlB,MAAe,QAARA,EAAiB,IAuL5B,QAAS2N,IAAmBv5E,GACxBhT,GAAOuM,SAAS4J,GAAGnD,GAAQ,WACvB,MAAO7W,MAAKwT,MAAMqD,IA2D1B,QAASw5E,IAAWC,GAEK,mBAAVC,SAGXC,GAAkBC,GAAY5sF,OAE1B4sF,GAAY5sF,OADZysF,EACqB5P,EACb,uGAGA78E,IAEaA,IAplF7B,IA/WA,GAAIA,IAIA2sF,GAGA3qF,GANA2vE,GAAU,QAEVib,GAAiC,mBAAXhR,IAA6C,mBAAX33E,SAA0BA,SAAW23E,EAAO33E,OAAoB9H,KAATy/E,EAE/GrxD,GAAQ5pB,KAAK4pB,MACbjoB,GAAiBS,OAAOmN,UAAU5N,eAGlCqhF,GAAO,EACPF,GAAQ,EACRC,GAAO,EACPE,GAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,EAGd3+C,MAGA86C,MAGAwE,GAA+B,mBAAX1oF,IAA0BA,GAAUA,EAAOD,QAG/D6uF,GAAkB,sBAClBiC,GAA0B,uDAI1BC,GAAmB,gIAGnB/H,GAAmB,qKACnBQ,GAAwB,6CAGxBmB,GAA2B,QAC3BR,GAA6B,UAC7BL,GAA4B,UAC5BG,GAA2B,gBAC3BS,GAAmB,MACnBN,GAAiB,mHACjBI,GAAqB,uBACrBC,GAAc,KACdH,GAAqB,aACrBC,GAAwB,yBAGxBZ,GAAqB,KACrBO,GAAsB,OACtBN,GAAwB,QACxBC,GAAuB,QACvBG,GAAsB,aACtBD,GAAyB,WAIzBwE,GAAW,4IAEXyC,GAAY,uBAEZxC,KACK,eAAgB,0BAChB,aAAc,sBACd,eAAgB,oBAChB,aAAc,iBACd,WAAY,gBAIjBC,KACK,gBAAiB,6BACjB,WAAY,wBACZ,QAAS,mBACT,KAAM,cAIXpD,GAAuB,kBAIvB4F,IADyB,0CAA0CvoF,MAAM,MAErEwoF,aAAiB,EACjBC,QAAY,IACZC,QAAY,IACZC,MAAU,KACVC,KAAS,MACTC,OAAW,OACXC,MAAU,UAGdrL,IACI2I,GAAK,cACLtiF,EAAI,SACJ5L,EAAI,SACJ2L,EAAI,OACJc,EAAI,MACJokF,EAAI,OACJp/B,EAAI,OACJ+5B,EAAI,UACJlf,EAAI,QACJwkB,EAAI,UACJh/E,EAAI,OACJi/E,IAAM,YACN55D,EAAI,UACJs0D,EAAI,aACJE,GAAI,WACJJ,GAAI,eAGR/F,IACIwL,UAAY,YACZC,WAAa,aACbC,QAAU,UACVC,SAAW,WACXC,YAAc,eAIlB5I,MAGAkG,IACI9iF,EAAG,GACH5L,EAAG,GACH2L,EAAG,GACHc,EAAG,GACH6/D,EAAG,IAIP+kB,GAAmB,gBAAgBvpF,MAAM,KACzCwpF,GAAe,kBAAkBxpF,MAAM,KAEvCugF,IACI/b,EAAO,WACH,MAAO9sE,MAAKu5B,QAAU,GAE1Bw4D,IAAO,SAAUxvD,GACb,MAAOviC,MAAKmhF,aAAa6Q,YAAYhyF,KAAMuiC,IAE/C0vD,KAAO,SAAU1vD,GACb,MAAOviC,MAAKmhF,aAAayB,OAAO5iF,KAAMuiC,IAE1C8uD,EAAO,WACH,MAAOrxF,MAAKs5B,QAEhBi4D,IAAO,WACH,MAAOvxF,MAAKm5B,aAEhBlsB,EAAO,WACH,MAAOjN,MAAKk5B,OAEhBg5D,GAAO,SAAU3vD,GACb,MAAOviC,MAAKmhF,aAAagR,YAAYnyF,KAAMuiC,IAE/C6vD,IAAO,SAAU7vD,GACb,MAAOviC,MAAKmhF,aAAakR,cAAcryF,KAAMuiC,IAEjD+vD,KAAO,SAAU/vD,GACb,MAAOviC,MAAKmhF,aAAaoR,SAASvyF,KAAMuiC,IAE5C0vB,EAAO,WACH,MAAOjyD,MAAK8iF,QAEhBkJ,EAAO,WACH,MAAOhsF,MAAKwyF,WAEhBC,GAAO,WACH,MAAOzR,GAAahhF,KAAKo5B,OAAS,IAAK,IAE3Cs5D,KAAO,WACH,MAAO1R,GAAahhF,KAAKo5B,OAAQ,IAErCu5D,MAAQ,WACJ,MAAO3R,GAAahhF,KAAKo5B,OAAQ,IAErCw5D,OAAS,WACL,GAAItgF,GAAItS,KAAKo5B,OAAQ1J,EAAOpd,GAAK,EAAI,IAAM,GAC3C,OAAOod,GAAOsxD,EAAax8E,KAAK+mB,IAAIjZ,GAAI,IAE5C65E,GAAO,WACH,MAAOnL,GAAahhF,KAAK6rF,WAAa,IAAK,IAE/CgH,KAAO,WACH,MAAO7R,GAAahhF,KAAK6rF,WAAY,IAEzCiH,MAAQ,WACJ,MAAO9R,GAAahhF,KAAK6rF,WAAY,IAEzCE,GAAO,WACH,MAAO/K,GAAahhF,KAAK+yF,cAAgB,IAAK,IAElDC,KAAO,WACH,MAAOhS,GAAahhF,KAAK+yF,cAAe,IAE5CE,MAAQ,WACJ,MAAOjS,GAAahhF,KAAK+yF,cAAe,IAE5Cp7D,EAAI,WACA,MAAO33B,MAAK8iC,WAEhBmpD,EAAI,WACA,MAAOjsF,MAAKkzF,cAEhBttF,EAAO,WACH,MAAO5F,MAAKmhF,aAAaO,SAAS1hF,KAAKi+B,QAASj+B,KAAKk+B,WAAW,IAEpE0uC,EAAO,WACH,MAAO5sE,MAAKmhF,aAAaO,SAAS1hF,KAAKi+B,QAASj+B,KAAKk+B,WAAW,IAEpEpT,EAAO,WACH,MAAO9qB,MAAKi+B,SAEhB9xB,EAAO,WACH,MAAOnM,MAAKi+B,QAAU,IAAM,IAEhCz9B,EAAO,WACH,MAAOR,MAAKk+B,WAEhB9xB,EAAO,WACH,MAAOpM,MAAKm+B,WAEhBpT,EAAO,WACH,MAAO46D,GAAM3lF,KAAKo+B,eAAiB,MAEvC+0D,GAAO,WACH,MAAOnS,GAAa2E,EAAM3lF,KAAKo+B,eAAiB,IAAK,IAEzDg1D,IAAO,WACH,MAAOpS,GAAahhF,KAAKo+B,eAAgB,IAE7Ci1D,KAAO,WACH,MAAOrS,GAAahhF,KAAKo+B,eAAgB,IAE7Ck1D,EAAO,WACH,GAAI1tF,GAAI5F,KAAKuzF,YACT9sF,EAAI,GAKR,OAJQ,GAAJb,IACAA,GAAKA,EACLa,EAAI,KAEDA,EAAIu6E,EAAa2E,EAAM//E,EAAI,IAAK,GAAK,IAAMo7E,EAAa2E,EAAM//E,GAAK,GAAI,IAElF4tF,GAAO,WACH,GAAI5tF,GAAI5F,KAAKuzF,YACT9sF,EAAI,GAKR,OAJQ,GAAJb,IACAA,GAAKA,EACLa,EAAI,KAEDA,EAAIu6E,EAAa2E,EAAM//E,EAAI,IAAK,GAAKo7E,EAAa2E,EAAM//E,GAAK,GAAI,IAE5EmY,EAAI,WACA,MAAO/d,MAAKyzF,YAEhBC,GAAK,WACD,MAAO1zF,MAAK2zF,YAEhBthF,EAAO,WACH,MAAOrS,MAAKqH,WAEhBikB,EAAO,WACH,MAAOtrB,MAAK4zF,QAEhBtC,EAAI,WACA,MAAOtxF,MAAK2iF,YAIpB9B,MAEAgT,IAAS,SAAU,cAAe,WAAY,gBAAiB,eAE/DzR,IAAmB,EAyFhByP,GAAiB7rF,QACpBH,GAAIgsF,GAAiB50C,MACrB4rC,GAAqBhjF,GAAI,KAAOo7E,EAAgB4H,GAAqBhjF,IAAIA,GAE7E,MAAOisF,GAAa9rF,QAChBH,GAAIisF,GAAa70C,MACjB4rC,GAAqBhjF,GAAIA,IAAKi7E,EAAS+H,GAAqBhjF,IAAI,EAEpEgjF,IAAqBiL,KAAOhT,EAAS+H,GAAqB0I,IAAK,GA0d/D5rF,EAAOm8E,EAAO/tE,WAEVyyE,IAAM,SAAUxE,GACZ,GAAI97E,GAAML,CACV,KAAKA,IAAKm8E,GACN97E,EAAO87E,EAAOn8E,GACM,kBAATK,GACPlG,KAAK6F,GAAKK,EAEVlG,KAAK,IAAM6F,GAAKK,CAKxBlG,MAAKyqF,qBAAuB,GAAIC,QAAO1qF,KAAKwqF,cAAc5hB,OAAS,IAAM,UAAUA,SAGvFsa,QAAU,wFAAwF56E,MAAM,KACxGs6E,OAAS,SAAUpiF,GACf,MAAOR,MAAKkjF,QAAQ1iF,EAAE+4B,UAG1Bw6D,aAAe,kDAAkDzrF,MAAM,KACvE0pF,YAAc,SAAUxxF,GACpB,MAAOR,MAAK+zF,aAAavzF,EAAE+4B,UAG/B6xD,YAAc,SAAU4I,EAAWzxD,EAAQ+jC,GACvC,GAAIzgE,GAAGm/E,EAAKiP,CAQZ,KANKj0F,KAAKk0F,eACNl0F,KAAKk0F,gBACLl0F,KAAKm0F,oBACLn0F,KAAKo0F,sBAGJvuF,EAAI,EAAO,GAAJA,EAAQA,IAAK,CAYrB,GAVAm/E,EAAMnhF,GAAO0iF,KAAK,IAAM1gF,IACpBygE,IAAWtmE,KAAKm0F,iBAAiBtuF,KACjC7F,KAAKm0F,iBAAiBtuF,GAAK,GAAI6kF,QAAO,IAAM1qF,KAAK4iF,OAAOoC,EAAK,IAAIl6E,QAAQ,IAAK,IAAM,IAAK,KACzF9K,KAAKo0F,kBAAkBvuF,GAAK,GAAI6kF,QAAO,IAAM1qF,KAAKgyF,YAAYhN,EAAK,IAAIl6E,QAAQ,IAAK,IAAM,IAAK,MAE9Fw7D,GAAWtmE,KAAKk0F,aAAaruF,KAC9BouF,EAAQ,IAAMj0F,KAAK4iF,OAAOoC,EAAK,IAAM,KAAOhlF,KAAKgyF,YAAYhN,EAAK,IAClEhlF,KAAKk0F,aAAaruF,GAAK,GAAI6kF,QAAOuJ,EAAMnpF,QAAQ,IAAK,IAAK,MAG1Dw7D,GAAqB,SAAX/jC,GAAqBviC,KAAKm0F,iBAAiBtuF,GAAGyI,KAAK0lF,GAC7D,MAAOnuF,EACJ,IAAIygE,GAAqB,QAAX/jC,GAAoBviC,KAAKo0F,kBAAkBvuF,GAAGyI,KAAK0lF,GACpE,MAAOnuF,EACJ,KAAKygE,GAAUtmE,KAAKk0F,aAAaruF,GAAGyI,KAAK0lF,GAC5C,MAAOnuF,KAKnBwuF,UAAY,2DAA2D/rF,MAAM,KAC7EiqF,SAAW,SAAU/xF,GACjB,MAAOR,MAAKq0F,UAAU7zF,EAAE04B,QAG5Bo7D,eAAiB,8BAA8BhsF,MAAM,KACrD+pF,cAAgB,SAAU7xF,GACtB,MAAOR,MAAKs0F,eAAe9zF,EAAE04B,QAGjCq7D,aAAe,uBAAuBjsF,MAAM,KAC5C6pF,YAAc,SAAU3xF,GACpB,MAAOR,MAAKu0F,aAAa/zF,EAAE04B,QAG/BuyD,cAAgB,SAAU+I,GACtB,GAAI3uF,GAAGm/E,EAAKiP,CAMZ,KAJKj0F,KAAKy0F,iBACNz0F,KAAKy0F,mBAGJ5uF,EAAI,EAAO,EAAJA,EAAOA,IAQf,GANK7F,KAAKy0F,eAAe5uF,KACrBm/E,EAAMnhF,IAAQ,IAAM,IAAIq1B,IAAIrzB,GAC5BouF,EAAQ,IAAMj0F,KAAKuyF,SAASvN,EAAK,IAAM,KAAOhlF,KAAKqyF,cAAcrN,EAAK,IAAM,KAAOhlF,KAAKmyF,YAAYnN,EAAK,IACzGhlF,KAAKy0F,eAAe5uF,GAAK,GAAI6kF,QAAOuJ,EAAMnpF,QAAQ,IAAK,IAAK,MAG5D9K,KAAKy0F,eAAe5uF,GAAGyI,KAAKkmF,GAC5B,MAAO3uF,IAKnB6uF,iBACIC,IAAM,YACNC,GAAK,SACLC,EAAI,aACJC,GAAK,eACLC,IAAM,kBACNC,KAAO,yBAEX7L,eAAiB,SAAUlgF,GACvB,GAAIm7E,GAASpkF,KAAK00F,gBAAgBzrF,EAOlC,QANKm7E,GAAUpkF,KAAK00F,gBAAgBzrF,EAAIkgC,iBACpCi7C,EAASpkF,KAAK00F,gBAAgBzrF,EAAIkgC,eAAer+B,QAAQ,mBAAoB,SAAUu4E,GACnF,MAAOA,GAAIz3E,MAAM,KAErB5L,KAAK00F,gBAAgBzrF,GAAOm7E,GAEzBA,GAGXvC,KAAO,SAAUyD,GAGb,MAAiD,OAAxCA,EAAQ,IAAI//C,cAActf,OAAO,IAG9CgkE,eAAiB,gBACjBvI,SAAW,SAAUzjD,EAAOC,EAAS+2D,GACjC,MAAIh3D,GAAQ,GACDg3D,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAKhCC,WACIC,QAAU,gBACVC,QAAU,mBACVC,SAAW,eACXC,QAAU,oBACVC,SAAW,sBACXC,SAAW,KAEfC,SAAW,SAAUxsF,EAAK+7E,EAAKhnD,GAC3B,GAAIomD,GAASpkF,KAAKk1F,UAAUjsF,EAC5B,OAAyB,kBAAXm7E,GAAwBA,EAAOzrE,MAAMqsE,GAAMhnD,IAAQomD,GAGrEsR,eACIC,OAAS,QACTC,KAAO,SACPxpF,EAAI,gBACJ5L,EAAI,WACJq1F,GAAK,aACL1pF,EAAI,UACJ2pF,GAAK,WACL7oF,EAAI,QACJilF,GAAK,UACLplB,EAAI,UACJipB,GAAK,YACLzjF,EAAI,SACJ0jF,GAAK,YAGThH,aAAe,SAAU/K,EAAQ6K,EAAehE,EAAQiE,GACpD,GAAI3K,GAASpkF,KAAK01F,cAAc5K,EAChC,OAA0B,kBAAX1G,GACXA,EAAOH,EAAQ6K,EAAehE,EAAQiE,GACtC3K,EAAOt5E,QAAQ,MAAOm5E,IAG9BgS,WAAa,SAAUlpE,EAAMq3D,GACzB,GAAI7hD,GAASviC,KAAK01F,cAAc3oE,EAAO,EAAI,SAAW,OACtD,OAAyB,kBAAXwV,GAAwBA,EAAO6hD,GAAU7hD,EAAOz3B,QAAQ,MAAOs5E,IAGjFhD,QAAU,SAAU6C,GAChB,MAAOjkF,MAAKk2F,SAASprF,QAAQ,KAAMm5E,IAEvCiS,SAAW,KACX1L,cAAgB,UAEhBmF,SAAW,SAAU7E,GACjB,MAAOA,IAGXqL,WAAa,SAAUrL,GACnB,MAAOA,IAGXhI,KAAO,SAAUkC,GACb,MAAOkC,IAAWlC,EAAKhlF,KAAKksF,MAAMlF,IAAKhnF,KAAKksF,MAAMjF,KAAKnE,MAG3DoJ,OACIlF,IAAM,EACNC,IAAM,GAGVkI,eAAiB,WACb,MAAOnvF,MAAKksF,MAAMlF,KAGtBoP,eAAiB,WACb,MAAOp2F,MAAKksF,MAAMjF,KAGtBoP,aAAc,eACdpN,YAAa,WACT,MAAOjpF,MAAKq2F,gBA0yBpBxyF,GAAS,SAAUyhF,EAAO/iD,EAAQ8C,EAAQihC,GACtC,GAAI7lE,EAiBJ,OAfuB,iBAAb,KACN6lE,EAASjhC,EACTA,EAASx+B,GAIbpG,KACAA,EAAE6iF,kBAAmB,EACrB7iF,EAAE8iF,GAAK+B,EACP7kF,EAAE+iF,GAAKjhD,EACP9hC,EAAEgjF,GAAKp+C,EACP5kC,EAAEijF,QAAUpd,EACZ7lE,EAAEmjF,QAAS,EACXnjF,EAAEqjF,IAAMlE,IAED6P,GAAWhvF,IAGtBoD,GAAO28E,6BAA8B,EAErC38E,GAAO0qF,wBAA0B7N,EAC7B,4LAIA,SAAUsB,GACNA,EAAOjpD,GAAK,GAAIn0B,MAAKo9E,EAAOuB,IAAMvB,EAAOwJ,QAAU,OAAS,OA0BpE3nF,GAAOM,IAAM,WACT,GAAI4V,MAAUnO,MAAMrL,KAAKwF,UAAW,EAEpC,OAAO6pF,IAAO,WAAY71E,IAG9BlW,GAAOO,IAAM,WACT,GAAI2V,MAAUnO,MAAMrL,KAAKwF,UAAW,EAEpC,OAAO6pF,IAAO,UAAW71E,IAI7BlW,GAAO0iF,IAAM,SAAUjB,EAAO/iD,EAAQ8C,EAAQihC,GAC1C,GAAI7lE,EAkBJ;MAhBuB,iBAAb,KACN6lE,EAASjhC,EACTA,EAASx+B,GAIbpG,KACAA,EAAE6iF,kBAAmB,EACrB7iF,EAAE+qF,SAAU,EACZ/qF,EAAEmjF,QAAS,EACXnjF,EAAEgjF,GAAKp+C,EACP5kC,EAAE8iF,GAAK+B,EACP7kF,EAAE+iF,GAAKjhD,EACP9hC,EAAEijF,QAAUpd,EACZ7lE,EAAEqjF,IAAMlE,IAED6P,GAAWhvF,GAAG8lF,OAIzB1iF,GAAO+vF,KAAO,SAAUtO,GACpB,MAAOzhF,IAAe,IAARyhF,IAIlBzhF,GAAOuM,SAAW,SAAUk1E,EAAOr8E,GAC/B,GAGIymB,GACA4mE,EACAC,EACAC,EANApmF,EAAWk1E,EAEXzgF,EAAQ,IAiEZ,OA3DIhB,IAAO4yF,WAAWnR,GAClBl1E,GACIs+E,GAAIpJ,EAAMtC,cACV/1E,EAAGq4E,EAAMrC,MACTnW,EAAGwY,EAAMpC,SAEW,gBAAVoC,IACdl1E,KACInH,EACAmH,EAASnH,GAAOq8E,EAEhBl1E,EAASguB,aAAeknD,IAElBzgF,EAAQ6rF,GAAwB3rF,KAAKugF,KAC/C51D,EAAqB,MAAb7qB,EAAM,GAAc,GAAK,EACjCuL,GACIkC,EAAG,EACHrF,EAAG04E,EAAM9gF,EAAM0iF,KAAS73D,EACxBvjB,EAAGw5E,EAAM9gF,EAAM4iF,KAAS/3D,EACxBlvB,EAAGmlF,EAAM9gF,EAAM6iF,KAAWh4D,EAC1BtjB,EAAGu5E,EAAM9gF,EAAM8iF,KAAWj4D,EAC1Bg/D,GAAI/I,EAAM9gF,EAAM+iF,KAAgBl4D,KAE1B7qB,EAAQ8rF,GAAiB5rF,KAAKugF,KACxC51D,EAAqB,MAAb7qB,EAAM,GAAc,GAAK,EACjC0xF,EAAW,SAAUG,GAIjB,GAAInS,GAAMmS,GAAOxwE,WAAWwwE,EAAI5rF,QAAQ,IAAK,KAE7C,QAAQ9F,MAAMu/E,GAAO,EAAIA,GAAO70D,GAEpCtf,GACIkC,EAAGikF,EAAS1xF,EAAM,IAClBioE,EAAGypB,EAAS1xF,EAAM,IAClBoI,EAAGspF,EAAS1xF,EAAM,IAClBsH,EAAGoqF,EAAS1xF,EAAM,IAClBrE,EAAG+1F,EAAS1xF,EAAM,IAClBuH,EAAGmqF,EAAS1xF,EAAM,IAClBotD,EAAGskC,EAAS1xF,EAAM,MAEH,MAAZuL,EACPA,KAC2B,gBAAbA,KACT,QAAUA,IAAY,MAAQA,MACnComF,EAAU/R,EAAkB5gF,GAAOuM,EAAS4Z,MAAOnmB,GAAOuM,EAAS6Z,KAEnE7Z,KACAA,EAASs+E,GAAK8H,EAAQp4D,aACtBhuB,EAAS08D,EAAI0pB,EAAQ5T,QAGzB0T,EAAM,GAAIhU,GAASlyE,GAEfvM,GAAO4yF,WAAWnR,IAAU3F,EAAW2F,EAAO,aAC9CgR,EAAInT,QAAUmC,EAAMnC,SAGjBmT,GAIXzyF,GAAO8yF,QAAUnhB,GAGjB3xE,GAAOo/B,cAAgB2tD,GAGvB/sF,GAAOqpF,SAAW,aAIlBrpF,GAAOkgF,iBAAmBA,GAI1BlgF,GAAOw+E,aAAe,aAGtBx+E,GAAO+yF,sBAAwB,SAAUl7B,EAAWm7B,GAChD,MAAI3H,IAAuBxzB,KAAe70D,GAC/B,EAEPgwF,IAAUhwF,EACHqoF,GAAuBxzB,IAElCwzB,GAAuBxzB,GAAam7B,GAC7B,IAGXhzF,GAAOyhC,KAAOo7C,EACV,wDACA,SAAUz3E,EAAK3E,GACX,MAAOT,IAAOwhC,OAAOp8B,EAAK3E,KAOlCT,GAAOwhC,OAAS,SAAUp8B,EAAKyO,GAC3B,GAAIpE,EAcJ,OAbIrK,KAEIqK,EADmB,mBAAb,GACCzP,GAAOizF,aAAa7tF,EAAKyO,GAGzB7T,GAAOs9E,WAAWl4E,GAGzBqK,IACAzP,GAAOuM,SAAS+yE,QAAUt/E,GAAOs/E,QAAU7vE,IAI5CzP,GAAOs/E,QAAQ4T,OAG1BlzF,GAAOizF,aAAe,SAAUjgF,EAAMa,GAClC,MAAe,QAAXA,GACAA,EAAOs/E,KAAOngF,EACToyB,GAAQpyB,KACToyB,GAAQpyB,GAAQ,GAAIirE,IAExB74C,GAAQpyB,GAAM2vE,IAAI9uE,GAGlB7T,GAAOwhC,OAAOxuB,GAEPoyB,GAAQpyB,WAGRoyB,IAAQpyB,GACR,OAIfhT,GAAOozF,SAAWvW,EACd,gEACA,SAAUz3E,GACN,MAAOpF,IAAOs9E,WAAWl4E,KAKjCpF,GAAOs9E,WAAa,SAAUl4E,GAC1B,GAAIo8B,EAMJ,IAJIp8B,GAAOA,EAAIk6E,SAAWl6E,EAAIk6E,QAAQ4T,QAClC9tF,EAAMA,EAAIk6E,QAAQ4T,QAGjB9tF,EACD,MAAOpF,IAAOs/E,OAGlB,KAAK58E,EAAQ0C,GAAM,CAGf,GADAo8B,EAASgjD,EAAWp/E,GAEhB,MAAOo8B,EAEXp8B,IAAOA,GAGX,MAAOk/E,GAAal/E,IAIxBpF,GAAOyD,SAAW,SAAUsc,GACxB,MAAOA,aAAem+D,IACV,MAAPn+D,GAAe+7D,EAAW/7D,EAAK,qBAIxC/f,GAAO4yF,WAAa,SAAU7yE,GAC1B,MAAOA,aAAe0+D,GAG1B,KAAKz8E,GAAIguF,GAAM7tF,OAAS,EAAGH,IAAK,IAAKA,GACjCsgF,EAAS0N,GAAMhuF,IAGnBhC,IAAO+hF,eAAiB,SAAUC,GAC9B,MAAOD,GAAeC,IAG1BhiF,GAAO6rF,QAAU,SAAUwH,GACvB,GAAI12F,GAAIqD,GAAO0iF,IAAIyH,IAQnB,OAPa,OAATkJ,EACAvxF,EAAOnF,EAAEsjF,IAAKoT,GAGd12F,EAAEsjF,IAAI1D,iBAAkB,EAGrB5/E,GAGXqD,GAAOszF,UAAY,WACf,MAAOtzF,IAAO8U,MAAM,KAAM5S,WAAWoxF,aAGzCtzF,GAAOynF,kBAAoB,SAAUhG,GACjC,MAAOK,GAAML,IAAUK,EAAML,GAAS,GAAK,KAAO,MAGtDzhF,GAAOc,OAASA,EAOhBgB,EAAO9B,GAAOmW,GAAK+nE,EAAOhuE,WAEtBklB,MAAQ,WACJ,MAAOp1B,IAAO7D,OAGlBqH,QAAU,WACN,OAAQrH,KAAK+4B,GAA4B,KAArB/4B,KAAK6jF,SAAW,IAGxC+P,KAAO,WACH,MAAOpvF,MAAKgB,OAAOxF,KAAO,MAG9B0F,SAAW,WACP,MAAO1F,MAAKi5B,QAAQoM,OAAO,MAAM9C,OAAO,qCAG5Ch7B,OAAS,WACL,MAAOvH,MAAK6jF,QAAU,GAAIj/E,OAAM5E,MAAQA,KAAK+4B,IAGjDtxB,YAAc,WACV,GAAIjH,GAAIqD,GAAO7D,MAAMumF,KACrB,OAAI,GAAI/lF,EAAE44B,QAAU54B,EAAE44B,QAAU,KACxB,kBAAsBx0B,MAAKmP,UAAUtM,YAE9BzH,KAAKuH,SAASE,cAEdqhF,EAAatoF,EAAG,gCAGpBsoF,EAAatoF,EAAG,mCAI/BsI,QAAU,WACN,GAAItI,GAAIR,IACR,QACIQ,EAAE44B,OACF54B,EAAE+4B,QACF/4B,EAAE84B,OACF94B,EAAEy9B,QACFz9B,EAAE09B,UACF19B,EAAE29B,UACF39B,EAAE49B,iBAIV0pD,QAAU,WACN,MAAOA,GAAQ9nF,OAGnBo3F,aAAe,WACX,MAAIp3F,MAAKqnF,GACErnF,KAAK8nF,WAAavC,EAAcvlF,KAAKqnF,IAAKrnF,KAAK4jF,OAAS//E,GAAO0iF,IAAIvmF,KAAKqnF,IAAMxjF,GAAO7D,KAAKqnF,KAAKv+E,WAAa,GAGhH,GAGXuuF,aAAe,WACX,MAAO1xF,MAAW3F,KAAK8jF,MAG3BwT,UAAW,WACP,MAAOt3F,MAAK8jF,IAAIp/D,UAGpB6hE,IAAM,SAAUgR,GACZ,MAAOv3F,MAAKuzF,UAAU,EAAGgE,IAG7B9O,MAAQ,SAAU8O,GASd,MARIv3F,MAAK4jF,SACL5jF,KAAKuzF,UAAU,EAAGgE,GAClBv3F,KAAK4jF,QAAS,EAEV2T,GACAv3F,KAAK+rB,SAAS/rB,KAAKw3F,iBAAkB,MAGtCx3F,MAGXuiC,OAAS,SAAUk1D,GACf,GAAIrT,GAAS0E,EAAa9oF,KAAMy3F,GAAe5zF,GAAOo/B,cACtD,OAAOjjC,MAAKmhF,aAAagV,WAAW/R,IAGxCvwE,IAAM+wE,EAAY,EAAG,OAErB74D,SAAW64D,EAAY,GAAI,YAE3B73D,KAAO,SAAUu4D,EAAOO,EAAO6R,GAC3B,GAEY3qE,GAAMq3D,EAFduT,EAAOjT,EAAOY,EAAOtlF,MACrB43F,EAAmD,KAAvCD,EAAKpE,YAAcvzF,KAAKuzF,YAqBxC,OAlBA1N,GAAQD,EAAeC,GAET,SAAVA,GAA8B,UAAVA,GAA+B,YAAVA,GACzCzB,EAAS/C,EAAUrhF,KAAM23F,GACX,YAAV9R,EACAzB,GAAkB,EACD,SAAVyB,IACPzB,GAAkB,MAGtBr3D,EAAO/sB,KAAO23F,EACdvT,EAAmB,WAAVyB,EAAqB94D,EAAO,IACvB,WAAV84D,EAAqB94D,EAAO,IAClB,SAAV84D,EAAmB94D,EAAO,KAChB,QAAV84D,GAAmB94D,EAAO6qE,GAAY,MAC5B,SAAV/R,GAAoB94D,EAAO6qE,GAAY,OACvC7qE,GAED2qE,EAAUtT,EAASJ,EAASI,IAGvCp6D,KAAO,SAAUgR,EAAM8zD,GACnB,MAAOjrF,IAAOuM,UAAU6Z,GAAIjqB,KAAMgqB,KAAMgR,IAAOqK,OAAOrlC,KAAKqlC,UAAUwyD,UAAU/I,IAGnFgJ,QAAU,SAAUhJ,GAChB,MAAO9uF,MAAKgqB,KAAKnmB,KAAUirF,IAG/B2G,SAAW,SAAUz6D,GAIjB,GAAIgD,GAAMhD,GAAQn3B,KACdk0F,EAAMrT,EAAO1mD,EAAKh+B,MAAMg4F,QAAQ,OAChCjrE,EAAO/sB,KAAK+sB,KAAKgrE,EAAK,QAAQ,GAC9Bx1D,EAAgB,GAAPxV,EAAY,WACV,GAAPA,EAAY,WACL,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,WAAa,UAChC,OAAO/sB,MAAKuiC,OAAOviC,KAAKmhF,aAAasU,SAASlzD,EAAQviC,KAAM6D,GAAOm6B,MAGvEopD,WAAa,WACT,MAAOA,GAAWpnF,KAAKo5B,SAG3B6+D,MAAQ,WACJ,MAAQj4F,MAAKuzF,YAAcvzF,KAAKi5B,QAAQM,MAAM,GAAGg6D,aAC7CvzF,KAAKuzF,YAAcvzF,KAAKi5B,QAAQM,MAAM,GAAGg6D,aAGjDr6D,IAAM,SAAUosD,GACZ,GAAIpsD,GAAMl5B,KAAK4jF,OAAS5jF,KAAK+4B,GAAGy2D,YAAcxvF,KAAK+4B,GAAGm/D,QACtD,OAAa,OAAT5S,GACAA,EAAQsJ,GAAatJ,EAAOtlF,KAAKmhF,cAC1BnhF,KAAK6T,IAAIyxE,EAAQpsD,EAAK,MAEtBA,GAIfK,MAAQy2D,GAAa,SAAS,GAE9BgI,QAAU,SAAUnS,GAIhB,OAHAA,EAAQD,EAAeC,IAIvB,IAAK,OACD7lF,KAAKu5B,MAAM,EAEf,KAAK,UACL,IAAK,QACDv5B,KAAKs5B,KAAK,EAEd,KAAK,OACL,IAAK,UACL,IAAK,MACDt5B,KAAKi+B,MAAM,EAEf,KAAK,OACDj+B,KAAKk+B,QAAQ,EAEjB,KAAK,SACDl+B,KAAKm+B,QAAQ,EAEjB,KAAK,SACDn+B,KAAKo+B,aAAa,GAgBtB,MAXc,SAAVynD,EACA7lF,KAAK8iC,QAAQ,GACI,YAAV+iD,GACP7lF,KAAKkzF,WAAW,GAIN,YAAVrN,GACA7lF,KAAKu5B,MAAqC,EAA/B/0B,KAAKgB,MAAMxF,KAAKu5B,QAAU,IAGlCv5B,MAGXm4F,MAAO,SAAUtS,GAEb,MADAA,GAAQD,EAAeC,GACnBA,IAAUh/E,GAAuB,gBAAVg/E,EAChB7lF,KAEJA,KAAKg4F,QAAQnS,GAAOhyE,IAAI,EAAc,YAAVgyE,EAAsB,OAASA,GAAQ95D,SAAS,EAAG,OAG1Fy4D,QAAS,SAAUc,EAAOO,GACtB,GAAIuS,EAEJ,OADAvS,GAAQD,EAAgC,mBAAVC,GAAwBA,EAAQ,eAChD,gBAAVA,GACAP,EAAQzhF,GAAOyD,SAASg+E,GAASA,EAAQzhF,GAAOyhF,IACxCtlF,MAAQslF,IAEhB8S,EAAUv0F,GAAOyD,SAASg+E,IAAUA,GAASzhF,GAAOyhF,GAC7C8S,GAAWp4F,KAAKi5B,QAAQ++D,QAAQnS,KAI/ClB,SAAU,SAAUW,EAAOO,GACvB,GAAIuS,EAEJ,OADAvS,GAAQD,EAAgC,mBAAVC,GAAwBA,EAAQ,eAChD,gBAAVA,GACAP,EAAQzhF,GAAOyD,SAASg+E,GAASA,EAAQzhF,GAAOyhF,IAChCA,GAARtlF,OAERo4F,EAAUv0F,GAAOyD,SAASg+E,IAAUA,GAASzhF,GAAOyhF,IAC5CtlF,KAAKi5B,QAAQk/D,MAAMtS,GAASuS,IAI5CC,UAAW,SAAUruE,EAAMC,EAAI47D,GAC3B,MAAO7lF,MAAKwkF,QAAQx6D,EAAM67D,IAAU7lF,KAAK2kF,SAAS16D,EAAI47D,IAG1D5gD,OAAQ,SAAUqgD,EAAOO,GACrB,GAAIuS,EAEJ,OADAvS,GAAQD,EAAeC,GAAS,eAClB,gBAAVA,GACAP,EAAQzhF,GAAOyD,SAASg+E,GAASA,EAAQzhF,GAAOyhF,IACxCtlF,QAAUslF,IAElB8S,GAAWv0F,GAAOyhF,IACTtlF,KAAKi5B,QAAQ++D,QAAQnS,IAAWuS,GAAWA,IAAap4F,KAAKi5B,QAAQk/D,MAAMtS,KAI5F1hF,IAAKu8E,EACI,mGACA,SAAUz6E,GAEN,MADAA,GAAQpC,GAAO8U,MAAM,KAAM5S,WACZ/F,KAARiG,EAAejG,KAAOiG,IAI1C7B,IAAKs8E,EACG,mGACA,SAAUz6E,GAEN,MADAA,GAAQpC,GAAO8U,MAAM,KAAM5S,WACpBE,EAAQjG,KAAOA,KAAOiG,IAIzCqyF,KAAO5X,EACC,4GAEA,SAAU4E,EAAOiS,GACb,MAAa,OAATjS,GACqB,gBAAVA,KACPA,GAASA,GAGbtlF,KAAKuzF,UAAUjO,EAAOiS,GAEfv3F,OAECA,KAAKuzF,cAe7BA,UAAY,SAAUjO,EAAOiS,GACzB,GACIgB,GADAhuE,EAASvqB,KAAK6jF,SAAW,CAE7B,OAAa,OAATyB,GACqB,gBAAVA,KACPA,EAAQuF,EAAoBvF,IAE5B9gF,KAAK+mB,IAAI+5D,GAAS,KAClBA,EAAgB,GAARA,IAEPtlF,KAAK4jF,QAAU2T,IAChBgB,EAAcv4F,KAAKw3F,kBAEvBx3F,KAAK6jF,QAAUyB,EACftlF,KAAK4jF,QAAS,EACK,MAAf2U,GACAv4F,KAAK6T,IAAI0kF,EAAa,KAEtBhuE,IAAW+6D,KACNiS,GAAiBv3F,KAAKw4F,kBACvBzT,EAAgC/kF,KACxB6D,GAAOuM,SAASk1E,EAAQ/6D,EAAQ,KAAM,GAAG,GACzCvqB,KAAKw4F,oBACbx4F,KAAKw4F,mBAAoB,EACzB30F,GAAOw+E,aAAariF,MAAM,GAC1BA,KAAKw4F,kBAAoB,OAI1Bx4F,MAEAA,KAAK4jF,OAASr5D,EAASvqB,KAAKw3F,kBAI3CiB,QAAU,WACN,OAAQz4F,KAAK4jF,QAGjB8U,YAAc,WACV,MAAO14F,MAAK4jF,QAGhB+U,MAAQ,WACJ,MAAO34F,MAAK4jF,QAA2B,IAAjB5jF,KAAK6jF,SAG/B4P,SAAW,WACP,MAAOzzF,MAAK4jF,OAAS,MAAQ,IAGjC+P,SAAW,WACP,MAAO3zF,MAAK4jF,OAAS,6BAA+B,IAGxDuT,UAAY,WAMR,MALIn3F,MAAK2jF,KACL3jF,KAAKuzF,UAAUvzF,KAAK2jF,MACM,gBAAZ3jF,MAAKujF,IACnBvjF,KAAKuzF,UAAU1I,EAAoB7qF,KAAKujF,KAErCvjF,MAGX44F,qBAAuB,SAAUtT,GAQ7B,MAHIA,GAJCA,EAIOzhF,GAAOyhF,GAAOiO,YAHd,GAMJvzF,KAAKuzF,YAAcjO,GAAS,KAAO,GAG/CsB,YAAc,WACV,MAAOA,GAAY5mF,KAAKo5B,OAAQp5B,KAAKu5B,UAGzCJ,UAAY,SAAUmsD,GAClB,GAAInsD,GAAY/K,IAAOvqB,GAAO7D,MAAMg4F,QAAQ,OAASn0F,GAAO7D,MAAMg4F,QAAQ,SAAW,OAAS,CAC9F,OAAgB,OAAT1S,EAAgBnsD,EAAYn5B,KAAK6T,IAAKyxE,EAAQnsD,EAAY,MAGrEwpD,QAAU,SAAU2C,GAChB,MAAgB,OAATA,EAAgB9gF,KAAK61C,MAAMr6C,KAAKu5B,QAAU,GAAK,GAAKv5B,KAAKu5B,MAAoB,GAAb+rD,EAAQ,GAAStlF,KAAKu5B,QAAU,IAG3GsyD,SAAW,SAAUvG,GACjB,GAAIlsD,GAAO8tD,GAAWlnF,KAAMA,KAAKmhF,aAAa+K,MAAMlF,IAAKhnF,KAAKmhF,aAAa+K,MAAMjF,KAAK7tD,IACtF,OAAgB,OAATksD,EAAgBlsD,EAAOp5B,KAAK6T,IAAKyxE,EAAQlsD,EAAO,MAG3D25D,YAAc,SAAUzN,GACpB,GAAIlsD,GAAO8tD,GAAWlnF,KAAM,EAAG,GAAGo5B,IAClC,OAAgB,OAATksD,EAAgBlsD,EAAOp5B,KAAK6T,IAAKyxE,EAAQlsD,EAAO,MAG3D0pD,KAAO,SAAUwC,GACb,GAAIxC,GAAO9iF,KAAKmhF,aAAa2B,KAAK9iF,KAClC,OAAgB,OAATslF,EAAgBxC,EAAO9iF,KAAK6T,IAAqB,GAAhByxE,EAAQxC,GAAW,MAG/D0P,QAAU,SAAUlN,GAChB,GAAIxC,GAAOoE,GAAWlnF,KAAM,EAAG,GAAG8iF,IAClC,OAAgB,OAATwC,EAAgBxC,EAAO9iF,KAAK6T,IAAqB,GAAhByxE,EAAQxC,GAAW,MAG/DhgD,QAAU,SAAUwiD,GAChB,GAAIxiD,IAAW9iC,KAAKk5B,MAAQ,EAAIl5B,KAAKmhF,aAAa+K,MAAMlF,KAAO,CAC/D,OAAgB,OAAT1B,EAAgBxiD,EAAU9iC,KAAK6T,IAAIyxE,EAAQxiD,EAAS,MAG/DowD,WAAa,SAAU5N,GAInB,MAAgB,OAATA,EAAgBtlF,KAAKk5B,OAAS,EAAIl5B,KAAKk5B,IAAIl5B,KAAKk5B,MAAQ,EAAIosD,EAAQA,EAAQ,IAGvFuT,eAAiB,WACb,MAAO9R,GAAY/mF,KAAKo5B,OAAQ,EAAG,IAGvC2tD,YAAc,WACV,GAAI+R,GAAW94F,KAAKmhF,aAAa+K,KACjC,OAAOnF,GAAY/mF,KAAKo5B,OAAQ0/D,EAAS9R,IAAK8R,EAAS7R,MAG3DnxE,IAAM,SAAU+vE,GAEZ,MADAA,GAAQD,EAAeC,GAChB7lF,KAAK6lF,MAGhBW,IAAM,SAAUX,EAAOvhF,GACnB,GAAIyrF,EACJ,IAAqB,gBAAVlK,GACP,IAAKkK,IAAQlK,GACT7lF,KAAKwmF,IAAIuJ,EAAMlK,EAAMkK,QAIzBlK,GAAQD,EAAeC,GACI,kBAAhB7lF,MAAK6lF,IACZ7lF,KAAK6lF,GAAOvhF,EAGpB,OAAOtE,OAMXqlC,OAAS,SAAUp8B,GACf,GAAI8vF,EAEJ,OAAI9vF,KAAQpC,EACD7G,KAAKmjF,QAAQ4T,OAEpBgC,EAAgBl1F,GAAOs9E,WAAWl4E,GACb,MAAjB8vF,IACA/4F,KAAKmjF,QAAU4V,GAEZ/4F,OAIfslC,KAAOo7C,EACH,kJACA,SAAUz3E,GACN,MAAIA,KAAQpC,EACD7G,KAAKmhF,aAELnhF,KAAKqlC,OAAOp8B,KAK/Bk4E,WAAa,WACT,MAAOnhF,MAAKmjF,SAGhBqU,eAAiB,WAGb,MAAuD,KAA/ChzF,KAAK4pB,MAAMpuB,KAAK+4B,GAAGigE,oBAAsB,OA+CzDn1F,GAAOmW,GAAG0oB,YAAc7+B,GAAOmW,GAAGokB,aAAe4xD,GAAa,gBAAgB,GAC9EnsF,GAAOmW,GAAG2oB,OAAS9+B,GAAOmW,GAAGmkB,QAAU6xD,GAAa,WAAW,GAC/DnsF,GAAOmW,GAAG4oB,OAAS/+B,GAAOmW,GAAGkkB,QAAU8xD,GAAa,WAAW,GAK/DnsF,GAAOmW,GAAG6oB,KAAOh/B,GAAOmW,GAAGikB,MAAQ+xD,GAAa,SAAS,GAEzDnsF,GAAOmW,GAAGsf,KAAO02D,GAAa,QAAQ,GACtCnsF,GAAOmW,GAAGqgB,MAAQqmD,EAAU,kDAAmDsP,GAAa,QAAQ,IACpGnsF,GAAOmW,GAAGof,KAAO42D,GAAa,YAAY,GAC1CnsF,GAAOmW,GAAGyoE,MAAQ/B,EAAU,kDAAmDsP,GAAa,YAAY,IAGxGnsF,GAAOmW,GAAG+oE,KAAOl/E,GAAOmW,GAAGkf,IAC3Br1B,GAAOmW,GAAG4oE,OAAS/+E,GAAOmW,GAAGuf,MAC7B11B,GAAOmW,GAAG6oE,MAAQh/E,GAAOmW,GAAG8oE,KAC5Bj/E,GAAOmW,GAAGi/E,SAAWp1F,GAAOmW,GAAGw4E,QAC/B3uF,GAAOmW,GAAG0oE,SAAW7+E,GAAOmW,GAAG2oE,QAG/B9+E,GAAOmW,GAAGk/E,OAASr1F,GAAOmW,GAAGvS,YAG7B5D,GAAOmW,GAAGm/E,MAAQt1F,GAAOmW,GAAG2+E,MAkB5BhzF,EAAO9B,GAAOuM,SAAS4J,GAAKsoE,EAASvuE,WAEjCqvE,QAAU,WACN,GAIIjlD,GAASD,EAASD,EAJlBG,EAAep+B,KAAKgjF,cACpBD,EAAO/iF,KAAKijF,MACZL,EAAS5iF,KAAKkjF,QACd5vE,EAAOtT,KAAKwT,MACaivE,EAAQ,CAIrCnvE,GAAK8qB,aAAeA,EAAe,IAEnCD,EAAU6lD,EAAS5lD,EAAe,KAClC9qB,EAAK6qB,QAAUA,EAAU,GAEzBD,EAAU8lD,EAAS7lD,EAAU,IAC7B7qB,EAAK4qB,QAAUA,EAAU,GAEzBD,EAAQ+lD,EAAS9lD,EAAU,IAC3B5qB,EAAK2qB,MAAQA,EAAQ,GAErB8kD,GAAQiB,EAAS/lD,EAAQ,IAGzBwkD,EAAQuB,EAASkM,GAAYnN,IAC7BA,GAAQiB,EAASmM,GAAY1N,IAI7BG,GAAUoB,EAASjB,EAAO,IAC1BA,GAAQ,GAGRN,GAASuB,EAASpB,EAAS,IAC3BA,GAAU,GAEVtvE,EAAKyvE,KAAOA,EACZzvE,EAAKsvE,OAASA,EACdtvE,EAAKmvE,MAAQA,GAGjBl3D,IAAM,WAYF,MAXAvrB,MAAKgjF,cAAgBx+E,KAAK+mB,IAAIvrB,KAAKgjF,eACnChjF,KAAKijF,MAAQz+E,KAAK+mB,IAAIvrB,KAAKijF,OAC3BjjF,KAAKkjF,QAAU1+E,KAAK+mB,IAAIvrB,KAAKkjF,SAE7BljF,KAAKwT,MAAM4qB,aAAe55B,KAAK+mB,IAAIvrB,KAAKwT,MAAM4qB,cAC9Cp+B,KAAKwT,MAAM2qB,QAAU35B,KAAK+mB,IAAIvrB,KAAKwT,MAAM2qB,SACzCn+B,KAAKwT,MAAM0qB,QAAU15B,KAAK+mB,IAAIvrB,KAAKwT,MAAM0qB,SACzCl+B,KAAKwT,MAAMyqB,MAAQz5B,KAAK+mB,IAAIvrB,KAAKwT,MAAMyqB,OACvCj+B,KAAKwT,MAAMovE,OAASp+E,KAAK+mB,IAAIvrB,KAAKwT,MAAMovE,QACxC5iF,KAAKwT,MAAMivE,MAAQj+E,KAAK+mB,IAAIvrB,KAAKwT,MAAMivE,OAEhCziF,MAGX6iF,MAAQ,WACJ,MAAOmB,GAAShkF,KAAK+iF,OAAS,IAGlC17E,QAAU,WACN,MAAOrH,MAAKgjF,cACG,MAAbhjF,KAAKijF,MACJjjF,KAAKkjF,QAAU,GAAM,OACK,QAA3ByC,EAAM3lF,KAAKkjF,QAAU,KAG3B2U,SAAW,SAAUuB,GACjB,GAAIhV,GAAS4K,GAAahvF,MAAOo5F,EAAYp5F,KAAKmhF,aAMlD,OAJIiY,KACAhV,EAASpkF,KAAKmhF,aAAa8U,YAAYj2F,KAAMokF,IAG1CpkF,KAAKmhF,aAAagV,WAAW/R,IAGxCvwE,IAAM,SAAUyxE,EAAOjC,GAEnB,GAAIwB,GAAMhhF,GAAOuM,SAASk1E,EAAOjC,EAQjC,OANArjF,MAAKgjF,eAAiB6B,EAAI7B,cAC1BhjF,KAAKijF,OAAS4B,EAAI5B,MAClBjjF,KAAKkjF,SAAW2B,EAAI3B,QAEpBljF,KAAKojF,UAEEpjF,MAGX+rB,SAAW,SAAUu5D,EAAOjC,GACxB,GAAIwB,GAAMhhF,GAAOuM,SAASk1E,EAAOjC,EAQjC,OANArjF,MAAKgjF,eAAiB6B,EAAI7B,cAC1BhjF,KAAKijF,OAAS4B,EAAI5B,MAClBjjF,KAAKkjF,SAAW2B,EAAI3B,QAEpBljF,KAAKojF,UAEEpjF,MAGX8V,IAAM,SAAU+vE,GAEZ,MADAA,GAAQD,EAAeC,GAChB7lF,KAAK6lF,EAAMtgD,cAAgB,QAGtC5V,GAAK,SAAUk2D,GACX,GAAI9C,GAAMH,CAGV,IAFAiD,EAAQD,EAAeC,GAET,UAAVA,GAA+B,SAAVA,EAGrB,MAFA9C,GAAO/iF,KAAKijF,MAAQjjF,KAAKgjF,cAAgB,MACzCJ,EAAS5iF,KAAKkjF,QAA8B,GAApBgN,GAAYnN,GACnB,UAAV8C,EAAoBjD,EAASA,EAAS,EAI7C,QADAG,EAAO/iF,KAAKijF,MAAQz+E,KAAK4pB,MAAM+hE,GAAYnwF,KAAKkjF,QAAU,KAClD2C,GACJ,IAAK,OAAQ,MAAO9C,GAAO,EAAI/iF,KAAKgjF,cAAgB,MACpD,KAAK,MAAO,MAAOD,GAAO/iF,KAAKgjF,cAAgB,KAC/C,KAAK,OAAQ,MAAc,IAAPD,EAAY/iF,KAAKgjF,cAAgB,IACrD,KAAK,SAAU,MAAc,IAAPD,EAAY,GAAK/iF,KAAKgjF,cAAgB,GAC5D,KAAK,SAAU,MAAc,IAAPD,EAAY,GAAK,GAAK/iF,KAAKgjF,cAAgB,GAEjE,KAAK,cAAe,MAAOx+E,MAAKgB,MAAa,GAAPu9E,EAAY,GAAK,GAAK,KAAQ/iF,KAAKgjF,aACzE,SAAS,KAAM,IAAIp/E,OAAM,gBAAkBiiF,KAKvDvgD,KAAOzhC,GAAOmW,GAAGsrB,KACjBD,OAASxhC,GAAOmW,GAAGqrB,OAEnBg0D,YAAc3Y,EACV,sFAEA,WACI,MAAO1gF,MAAKyH,gBAIpBA,YAAc,WAEV,GAAIg7E,GAAQj+E,KAAK+mB,IAAIvrB,KAAKyiF,SACtBG,EAASp+E,KAAK+mB,IAAIvrB,KAAK4iF,UACvBG,EAAOv+E,KAAK+mB,IAAIvrB,KAAK+iF,QACrB9kD,EAAQz5B,KAAK+mB,IAAIvrB,KAAKi+B,SACtBC,EAAU15B,KAAK+mB,IAAIvrB,KAAKk+B,WACxBC,EAAU35B,KAAK+mB,IAAIvrB,KAAKm+B,UAAYn+B,KAAKo+B,eAAiB,IAE9D,OAAKp+B,MAAKs5F,aAMFt5F,KAAKs5F,YAAc,EAAI,IAAM,IACjC,KACC7W,EAAQA,EAAQ,IAAM,KACtBG,EAASA,EAAS,IAAM,KACxBG,EAAOA,EAAO,IAAM,KACnB9kD,GAASC,GAAWC,EAAW,IAAM,KACtCF,EAAQA,EAAQ,IAAM,KACtBC,EAAUA,EAAU,IAAM,KAC1BC,EAAUA,EAAU,IAAM,IAXpB,OAcfgjD,WAAa,WACT,MAAOnhF,MAAKmjF,SAGhB+V,OAAS,WACL,MAAOl5F,MAAKyH,iBAIpB5D,GAAOuM,SAAS4J,GAAGtU,SAAW7B,GAAOuM,SAAS4J,GAAGvS,WAQjD,KAAK5B,KAAKgrF,IACFlR,EAAWkR,GAAwBhrF,KACnCuqF,GAAmBvqF,GAAE0/B,cAI7B1hC,IAAOuM,SAAS4J,GAAGu/E,eAAiB,WAChC,MAAOv5F,MAAK2vB,GAAG,OAEnB9rB,GAAOuM,SAAS4J,GAAGs/E,UAAY,WAC3B,MAAOt5F,MAAK2vB,GAAG,MAEnB9rB,GAAOuM,SAAS4J,GAAGw/E,UAAY,WAC3B,MAAOx5F,MAAK2vB,GAAG,MAEnB9rB,GAAOuM,SAAS4J,GAAGy/E,QAAU,WACzB,MAAOz5F,MAAK2vB,GAAG,MAEnB9rB,GAAOuM,SAAS4J,GAAG0/E,OAAS,WACxB,MAAO15F,MAAK2vB,GAAG,MAEnB9rB,GAAOuM,SAAS4J,GAAG2/E,QAAU,WACzB,MAAO35F,MAAK2vB,GAAG,UAEnB9rB,GAAOuM,SAAS4J,GAAG4/E,SAAW,WAC1B,MAAO55F,MAAK2vB,GAAG,MAEnB9rB,GAAOuM,SAAS4J,GAAG6/E,QAAU,WACzB,MAAO75F,MAAK2vB,GAAG,MASnB9rB,GAAOwhC,OAAO,MACVy0D,aAAc,uBACd1Y,QAAU,SAAU6C,GAChB,GAAIx9E,GAAIw9E,EAAS,GACbG,EAAuC,IAA7BuB,EAAM1B,EAAS,IAAM,IAAa,KACrC,IAANx9E,EAAW,KACL,IAANA,EAAW,KACL,IAANA,EAAW,KAAO,IACvB,OAAOw9E,GAASG,KA4BpBmE,GACA1oF,EAAOD,QAAUiE,IAEf4vE,EAAgC,SAAUsmB,EAASn6F,EAASC,GAM1D,MALIA,GAAOmiF,QAAUniF,EAAOmiF,UAAYniF,EAAOmiF,SAASgY,YAAa,IAEjEvJ,GAAY5sF,OAAS2sF,IAGlB3sF,IACTtD,KAAKX,EAASM,EAAqBN,EAASC,KAAS4zE,IAAkC5sE,IAAchH,EAAOD,QAAU6zE,IACxH4c,IAAW,MAIhB9vF,KAAKP,QAEqBO,KAAKX,EAAU,WAAa,MAAOI,SAAYE,EAAoB,IAAIL,KAIhG,SAASA,EAAQD,EAASM,GAqgB9B,QAAS+5F,KACPj6F,KAAKsjD,UAAUb,aAAazzC,SAAWhP,KAAKsjD,UAAUb,aAAazzC,OACnE,IAAIkrF,GAAqBroF,SAASsoF,eAAe,qBACCD,GAAmB3sF,MAAMb,WAAhC,GAAvC1M,KAAKsjD,UAAUb,aAAazzC,QAAwD,UACR,UAEhFhP,KAAKyqD,wBAAuB,GAO9B,QAAS2vC,KACP,IAAK,GAAInyC,KAAUjoD,MAAKylD,iBAClBzlD,KAAKylD,iBAAiBt/C,eAAe8hD,KACvCjoD,KAAKylD,iBAAiBwC,GAAQoX,GAAK,EAAIr/D,KAAKylD,iBAAiBwC,GAAQqX,GAAK,EAC1Et/D,KAAKylD,iBAAiBwC,GAAQkX,GAAK,EAAIn/D,KAAKylD,iBAAiBwC,GAAQmX,GAAK,EAG7B,IAA7Cp/D,KAAKsjD,UAAUlB,mBAAmBpzC,SACpChP,KAAK6mD,2BACLwzC,EAAiB95F,KAAKP,KAAM,aAAc,EAAG,8CAC7Cq6F,EAAiB95F,KAAKP,KAAM,aAAc,EAAG,0BAC7Cq6F,EAAiB95F,KAAKP,KAAM,aAAc,EAAG,0BAC7Cq6F,EAAiB95F,KAAKP,KAAM,aAAc,EAAG,wBAC7Cq6F,EAAiB95F,KAAKP,KAAM,eAAgB,EAAG,oBAG/CA,KAAKs6F,kBAEPt6F,KAAK2mD,QAAS,EACd3mD,KAAKkQ,QAMP,QAASqqF,KACP,GAAIxrF,GAAU,gDACVyrF,KACAC,EAAe5oF,SAASsoF,eAAe,wBACvCO,EAAe7oF,SAASsoF,eAAe,uBAC3C,IAA4B,GAAxBM,EAAaE,QAAiB,CAMhC,GALI36F,KAAKsjD,UAAUrD,QAAQC,UAAUE,uBAAyBpgD,KAAK46F,gBAAgB36C,QAAQC,UAAUE,uBAAwBo6C,EAAgBjyF,KAAK,0BAA4BvI,KAAKsjD,UAAUrD,QAAQC,UAAUE,uBAC3MpgD,KAAKsjD,UAAUrD,QAAQI,gBAAkBrgD,KAAK46F,gBAAgB36C,QAAQC,UAAUG,gBAAyCm6C,EAAgBjyF,KAAK,mBAAqBvI,KAAKsjD,UAAUrD,QAAQI,gBAC1LrgD,KAAKsjD,UAAUrD,QAAQK,cAAgBtgD,KAAK46F,gBAAgB36C,QAAQC,UAAUI,cAA2Ck6C,EAAgBjyF,KAAK,iBAAmBvI,KAAKsjD,UAAUrD,QAAQK,cACxLtgD,KAAKsjD,UAAUrD,QAAQM,gBAAkBvgD,KAAK46F,gBAAgB36C,QAAQC,UAAUK,gBAAyCi6C,EAAgBjyF,KAAK,mBAAqBvI,KAAKsjD,UAAUrD,QAAQM,gBAC1LvgD,KAAKsjD,UAAUrD,QAAQO,SAAWxgD,KAAK46F,gBAAgB36C,QAAQC,UAAUM,SAAgDg6C,EAAgBjyF,KAAK,YAAcvI,KAAKsjD,UAAUrD,QAAQO,SACzJ,GAA1Bg6C,EAAgBx0F,OAAa,CAC/B+I,EAAU,kBACVA,GAAW,wBACX,KAAK,GAAIlJ,GAAI,EAAGA,EAAI20F,EAAgBx0F,OAAQH,IAC1CkJ,GAAWyrF,EAAgB30F,GACvBA,EAAI20F,EAAgBx0F,OAAS,IAC/B+I,GAAW,KAGfA,IAAW,KAET/O,KAAKsjD,UAAUb,aAAazzC,SAAWhP,KAAK46F,gBAAgBn4C,aAAazzC,UAC7C,GAA1BwrF,EAAgBx0F,OAAc+I,EAAU,kBACtCA,GAAW,KACjBA,GAAW,iBAAmB/O,KAAKsjD,UAAUb,aAAazzC,SAE7C,iDAAXD,IACFA,GAAW,UAGV,IAA4B,GAAxB2rF,EAAaC,QAAiB,CAQrC,GAPA5rF,EAAU,kBACVA,GAAW,wCACP/O,KAAKsjD,UAAUrD,QAAQQ,UAAUC,cAAgB1gD,KAAK46F,gBAAgB36C,QAAQQ,UAAUC,cAAgB85C,EAAgBjyF,KAAK,iBAAmBvI,KAAKsjD,UAAUrD,QAAQQ,UAAUC,cACjL1gD,KAAKsjD,UAAUrD,QAAQI,gBAAkBrgD,KAAK46F,gBAAgB36C,QAAQQ,UAAUJ,gBAAwBm6C,EAAgBjyF,KAAK,mBAAqBvI,KAAKsjD,UAAUrD,QAAQI,gBACzKrgD,KAAKsjD,UAAUrD,QAAQK,cAAgBtgD,KAAK46F,gBAAgB36C,QAAQQ,UAAUH,cAA0Bk6C,EAAgBjyF,KAAK,iBAAmBvI,KAAKsjD,UAAUrD,QAAQK,cACvKtgD,KAAKsjD,UAAUrD,QAAQM,gBAAkBvgD,KAAK46F,gBAAgB36C,QAAQQ,UAAUF,gBAAwBi6C,EAAgBjyF,KAAK,mBAAqBvI,KAAKsjD,UAAUrD,QAAQM,gBACzKvgD,KAAKsjD,UAAUrD,QAAQO,SAAWxgD,KAAK46F,gBAAgB36C,QAAQQ,UAAUD,SAA+Bg6C,EAAgBjyF,KAAK,YAAcvI,KAAKsjD,UAAUrD,QAAQO,SACxI,GAA1Bg6C,EAAgBx0F,OAAa,CAC/B+I,GAAW,gBACX,KAAK,GAAIlJ,GAAI,EAAGA,EAAI20F,EAAgBx0F,OAAQH,IAC1CkJ,GAAWyrF,EAAgB30F,GACvBA,EAAI20F,EAAgBx0F,OAAS,IAC/B+I,GAAW,KAGfA,IAAW,KAEiB,GAA1ByrF,EAAgBx0F,SAAc+I,GAAW,KACzC/O,KAAKsjD,UAAUb,cAAgBziD,KAAK46F,gBAAgBn4C,eACtD1zC,GAAW,mBAAqB/O,KAAKsjD,UAAUb,cAEjD1zC,GAAW,SAER,CAOH,GANAA,EAAU,kBACN/O,KAAKsjD,UAAUrD,QAAQU,sBAAsBD,cAAgB1gD,KAAK46F,gBAAgB36C,QAAQU,sBAAsBD,cAAgB85C,EAAgBjyF,KAAK,iBAAmBvI,KAAKsjD,UAAUrD,QAAQU,sBAAsBD,cACrN1gD,KAAKsjD,UAAUrD,QAAQI,gBAAkBrgD,KAAK46F,gBAAgB36C,QAAQU,sBAAsBN,gBAAwBm6C,EAAgBjyF,KAAK,mBAAqBvI,KAAKsjD,UAAUrD,QAAQI,gBACrLrgD,KAAKsjD,UAAUrD,QAAQK,cAAgBtgD,KAAK46F,gBAAgB36C,QAAQU,sBAAsBL,cAA0Bk6C,EAAgBjyF,KAAK,iBAAmBvI,KAAKsjD,UAAUrD,QAAQK,cACnLtgD,KAAKsjD,UAAUrD,QAAQM,gBAAkBvgD,KAAK46F,gBAAgB36C,QAAQU,sBAAsBJ,gBAAwBi6C,EAAgBjyF,KAAK,mBAAqBvI,KAAKsjD,UAAUrD,QAAQM,gBACrLvgD,KAAKsjD,UAAUrD,QAAQO,SAAWxgD,KAAK46F,gBAAgB36C,QAAQU,sBAAsBH,SAA+Bg6C,EAAgBjyF,KAAK,YAAcvI,KAAKsjD,UAAUrD,QAAQO,SACpJ,GAA1Bg6C,EAAgBx0F,OAAa,CAC/B+I,GAAW,oCACX,KAAK,GAAIlJ,GAAI,EAAGA,EAAI20F,EAAgBx0F,OAAQH,IAC1CkJ,GAAWyrF,EAAgB30F,GACvBA,EAAI20F,EAAgBx0F,OAAS,IAC/B+I,GAAW,KAGfA,IAAW,MAOb,GALAA,GAAW,wBACXyrF,KACIx6F,KAAKsjD,UAAUlB,mBAAmBrmB,WAAa/7B,KAAK46F,gBAAgBx4C,mBAAmBrmB,WAAkCy+D,EAAgBjyF,KAAK,cAAgBvI,KAAKsjD,UAAUlB,mBAAmBrmB,WAChMv3B,KAAK+mB,IAAIvrB,KAAKsjD,UAAUlB,mBAAmBC,kBAAoBriD,KAAK46F,gBAAgBx4C,mBAAmBC,iBAAkBm4C,EAAgBjyF,KAAK,oBAAsBvI,KAAKsjD,UAAUlB,mBAAmBC,iBACtMriD,KAAKsjD,UAAUlB,mBAAmBE,aAAetiD,KAAK46F,gBAAgBx4C,mBAAmBE,aAAgCk4C,EAAgBjyF,KAAK,gBAAkBvI,KAAKsjD,UAAUlB,mBAAmBE,aACxK,GAA1Bk4C,EAAgBx0F,OAAa,CAC/B,IAAK,GAAIH,GAAI,EAAGA,EAAI20F,EAAgBx0F,OAAQH,IAC1CkJ,GAAWyrF,EAAgB30F,GACvBA,EAAI20F,EAAgBx0F,OAAS,IAC/B+I,GAAW,KAGfA,IAAW,QAGXA,IAAW,eAEbA,IAAW,KAIb/O,KAAK66F,WAAW/1E,UAAY/V,EAO9B,QAAS+rF,KACP,GAAI/kF,IAAO,iBAAkB,gBAAiB,iBAC1CglF,EAAclpF,SAASmpF,cAAc,6CAA6C12F,MAClF22F,EAAU,SAAWF,EAAc,SACnCG,EAAQrpF,SAASsoF,eAAec,EACpCC,GAAM3tF,MAAMq+B,QAAU,OACtB,KAAK,GAAI/lC,GAAI,EAAGA,EAAIkQ,EAAI/P,OAAQH,IAC1BkQ,EAAIlQ,IAAMo1F,IACZC,EAAQrpF,SAASsoF,eAAepkF,EAAIlQ,IACpCq1F,EAAM3tF,MAAMq+B,QAAU,OAG1B5rC,MAAKm7F,gBACc,KAAfJ,GACF/6F,KAAKsjD,UAAUlB,mBAAmBpzC,SAAU,EAC5ChP,KAAKsjD,UAAUrD,QAAQU,sBAAsB3xC,SAAU,EACvDhP,KAAKsjD,UAAUrD,QAAQC,UAAUlxC,SAAU,GAErB,KAAf+rF,EAC0C,GAA7C/6F,KAAKsjD,UAAUlB,mBAAmBpzC,UACpChP,KAAKsjD,UAAUlB,mBAAmBpzC,SAAU,EAC5ChP,KAAKsjD,UAAUrD,QAAQU,sBAAsB3xC,SAAU,EACvDhP,KAAKsjD,UAAUrD,QAAQC,UAAUlxC,SAAU,EAC3ChP,KAAKsjD,UAAUb,aAAazzC,SAAU,EACtChP,KAAK6mD,6BAIP7mD,KAAKsjD,UAAUlB,mBAAmBpzC,SAAU,EAC5ChP,KAAKsjD,UAAUrD,QAAQU,sBAAsB3xC,SAAU,EACvDhP,KAAKsjD,UAAUrD,QAAQC,UAAUlxC,SAAU,GAE7ChP,KAAKkvE,0BACL,IAAIgrB,GAAqBroF,SAASsoF,eAAe,qBACCD,GAAmB3sF,MAAMb,WAAhC,GAAvC1M,KAAKsjD,UAAUb,aAAazzC,QAAwD,UACR,UAChFhP,KAAK2mD,QAAS,EACd3mD,KAAKkQ,QAWP,QAASmqF,GAAkBh6F,EAAGsN,EAAIytF,GAChC,GAAIC,GAAUh7F,EAAK,SACfi7F,EAAazpF,SAASsoF,eAAe95F,GAAIiE,KAEzCgC,OAAMC,QAAQoH,IAChBkE,SAASsoF,eAAekB,GAAS/2F,MAAQqJ,EAAIzC,SAASowF,IACtDt7F,KAAKu7F,yBAAyBH,EAAsBztF,EAAIzC,SAASowF,OAGjEzpF,SAASsoF,eAAekB,GAAS/2F,MAAQ4G,SAASyC,GAAOuY,WAAWo1E,GACpEt7F,KAAKu7F,yBAAyBH,EAAuBlwF,SAASyC,GAAOuY,WAAWo1E,MAGrD,gCAAzBF,GACuB,sCAAzBA,GACyB,kCAAzBA,IACAp7F,KAAK6mD,2BAEP7mD,KAAK2mD,QAAS,EACd3mD,KAAKkQ,QAhtBP,GAAIvP,GAAOT,EAAoB,GAC3Bs7F,EAAiBt7F,EAAoB,IACrCu7F,EAA4Bv7F,EAAoB,IAChDw7F,EAAiBx7F,EAAoB,GAOzCN,GAAQ+7F,iBAAmB,WACzB37F,KAAKsjD,UAAUrD,QAAQC,UAAUlxC,SAAWhP,KAAKsjD,UAAUrD,QAAQC,UAAUlxC,QAC7EhP,KAAKkvE,2BACLlvE,KAAK2mD,QAAS,EACd3mD,KAAKkQ,SASPtQ,EAAQsvE,yBAA2B,WAEe,GAA5ClvE,KAAKsjD,UAAUrD,QAAQC,UAAUlxC,SACnChP,KAAKivE,YAAYusB,GACjBx7F,KAAKivE,YAAYwsB,GAEjBz7F,KAAKsjD,UAAUrD,QAAQI,eAAiBrgD,KAAKsjD,UAAUrD,QAAQC,UAAUG,eACzErgD,KAAKsjD,UAAUrD,QAAQK,aAAetgD,KAAKsjD,UAAUrD,QAAQC,UAAUI,aACvEtgD,KAAKsjD,UAAUrD,QAAQM,eAAiBvgD,KAAKsjD,UAAUrD,QAAQC,UAAUK,eACzEvgD,KAAKsjD,UAAUrD,QAAQO,QAAUxgD,KAAKsjD,UAAUrD,QAAQC,UAAUM,QAElExgD,KAAK8uE,WAAW4sB,IAE+C,GAAxD17F,KAAKsjD,UAAUrD,QAAQU,sBAAsB3xC,SACpDhP,KAAKivE,YAAYysB,GACjB17F,KAAKivE,YAAYusB,GAEjBx7F,KAAKsjD,UAAUrD,QAAQI,eAAiBrgD,KAAKsjD,UAAUrD,QAAQU,sBAAsBN,eACrFrgD,KAAKsjD,UAAUrD,QAAQK,aAAetgD,KAAKsjD,UAAUrD,QAAQU,sBAAsBL,aACnFtgD,KAAKsjD,UAAUrD,QAAQM,eAAiBvgD,KAAKsjD,UAAUrD,QAAQU,sBAAsBJ,eACrFvgD,KAAKsjD,UAAUrD,QAAQO,QAAUxgD,KAAKsjD,UAAUrD,QAAQU,sBAAsBH,QAE9ExgD,KAAK8uE,WAAW2sB,KAGhBz7F,KAAKivE,YAAYysB,GACjB17F,KAAKivE,YAAYwsB,GACjBz7F,KAAK47F,cAAgB/0F,OAErB7G,KAAKsjD,UAAUrD,QAAQI,eAAiBrgD,KAAKsjD,UAAUrD,QAAQQ,UAAUJ,eACzErgD,KAAKsjD,UAAUrD,QAAQK,aAAetgD,KAAKsjD,UAAUrD,QAAQQ,UAAUH,aACvEtgD,KAAKsjD,UAAUrD,QAAQM,eAAiBvgD,KAAKsjD,UAAUrD,QAAQQ,UAAUF,eACzEvgD,KAAKsjD,UAAUrD,QAAQO,QAAUxgD,KAAKsjD,UAAUrD,QAAQQ,UAAUD,QAElExgD,KAAK8uE,WAAW0sB,KAUpB57F,EAAQi8F,4BAA8B,WAEL,GAA3B77F,KAAK2lD,YAAY3/C,OACnBhG,KAAKm+C,MAAMn+C,KAAK2lD,YAAY,IAAIsc,UAAU,EAAG,IAIzCjiE,KAAK2lD,YAAY3/C,OAAShG,KAAKsjD,UAAU1C,WAAWE,kBAAyD,GAArC9gD,KAAKsjD,UAAU1C,WAAW5xC,SACpGhP,KAAK87F,aAAa97F,KAAKsjD,UAAU1C,WAAWG,eAAe,GAI7D/gD,KAAK+7F,qBAUTn8F,EAAQm8F,iBAAmB,WAKzB/7F,KAAKg8F,gCACLh8F,KAAKi8F,uBAEDj8F,KAAKsjD,UAAUrD,QAAQM,eAAiB,IACC,GAAvCvgD,KAAKsjD,UAAUb,aAAazzC,SAA0D,GAAvChP,KAAKsjD,UAAUb,aAAaC,QAC7E1iD,KAAKk8F,oCAGuD,GAAxDl8F,KAAKsjD,UAAUrD,QAAQU,sBAAsB3xC,QAC/ChP,KAAKm8F,qCAGLn8F,KAAKo8F,2BAebx8F,EAAQkxD,wBAA0B,WAChC,GAA2C,GAAvC9wD,KAAKsjD,UAAUb,aAAazzC,SAA0D,GAAvChP,KAAKsjD,UAAUb,aAAaC,QAAiB,CAC9F1iD,KAAKylD,oBACLzlD,KAAK0lD,yBAEL,KAAK,GAAIuC,KAAUjoD,MAAKm+C,MAClBn+C,KAAKm+C,MAAMh4C,eAAe8hD,KAC5BjoD,KAAKylD,iBAAiBwC,GAAUjoD,KAAKm+C,MAAM8J,GAG/C,IAAIo0C,GAAer8F,KAAK4xD,QAAiB,QAAS,KAClD,KAAK,GAAI0qC,KAAiBD,GACpBA,EAAal2F,eAAem2F,KAC1Bt8F,KAAKs/C,MAAMn5C,eAAek2F,EAAaC,GAAeznC,cACxD70D,KAAKylD,iBAAiB62C,GAAiBD,EAAaC,GAGpDD,EAAaC,GAAer6B,UAAU,EAAG,GAK/C,KAAK,GAAIjZ,KAAOhpD,MAAKylD,iBACfzlD,KAAKylD,iBAAiBt/C,eAAe6iD,IACvChpD,KAAK0lD,uBAAuBn9C,KAAKygD,OAKrChpD,MAAKylD,iBAAmBzlD,KAAKm+C,MAC7Bn+C,KAAK0lD,uBAAyB1lD,KAAK2lD,aAUvC/lD,EAAQo8F,8BAAgC,WACtC,GAAIv8E,GAAIC,EAAI8G,EAAUmhC,EAAM9hD,EACxBs4C,EAAQn+C,KAAKylD,iBACb82C,EAAUv8F,KAAKsjD,UAAUrD,QAAQI,eACjCm8C,EAAe,CAEnB,KAAK32F,EAAI,EAAGA,EAAI7F,KAAK0lD,uBAAuB1/C,OAAQH,IAClD8hD,EAAOxJ,EAAMn+C,KAAK0lD,uBAAuB7/C,IACzC8hD,EAAKnH,QAAUxgD,KAAKsjD,UAAUrD,QAAQO,QAEhB,WAAlBxgD,KAAKy8F,WAAqC,GAAXF,GACjC98E,GAAMkoC,EAAKt1C,EACXqN,GAAMioC,EAAKr1C,EACXkU,EAAWhiB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAEpC88E,EAA4B,GAAZh2E,EAAiB,EAAK+1E,EAAU/1E,EAChDmhC,EAAKwX,GAAK1/C,EAAK+8E,EACf70C,EAAKyX,GAAK1/C,EAAK88E,IAGf70C,EAAKwX,GAAK,EACVxX,EAAKyX,GAAK,IAahBx/D,EAAQw8F,uBAAyB,WAC/B,GAAIM,GAAY1sC,EAAMZ,EAClB3vC,EAAIC,EAAIy/C,EAAIC,EAAIu9B,EAAan2E,EAC7B84B,EAAQt/C,KAAKs/C,KAGjB,KAAK8P,IAAU9P,GACTA,EAAMn5C,eAAeipD,KACvBY,EAAO1Q,EAAM8P,GACTY,EAAKC,WAEHjwD,KAAKm+C,MAAMh4C,eAAe6pD,EAAKwG,OAASx2D,KAAKm+C,MAAMh4C,eAAe6pD,EAAKyG,UACzEimC,EAAa1sC,EAAK/P,QAAQK,aAE1Bo8C,IAAe1sC,EAAK/lC,GAAG+1C,YAAchQ,EAAKhmC,KAAKg2C,YAAc,GAAKhgE,KAAKsjD,UAAU1C,WAAWY,WAE5F/hC,EAAMuwC,EAAKhmC,KAAK3X,EAAI29C,EAAK/lC,GAAG5X,EAC5BqN,EAAMswC,EAAKhmC,KAAK1X,EAAI09C,EAAK/lC,GAAG3X,EAC5BkU,EAAWhiB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIbm2E,EAAc38F,KAAKsjD,UAAUrD,QAAQM,gBAAkBm8C,EAAal2E,GAAYA,EAEhF24C,EAAK1/C,EAAKk9E,EACVv9B,EAAK1/C,EAAKi9E,EAEV3sC,EAAKhmC,KAAKm1C,IAAMA,EAChBnP,EAAKhmC,KAAKo1C,IAAMA,EAChBpP,EAAK/lC,GAAGk1C,IAAMA,EACdnP,EAAK/lC,GAAGm1C,IAAMA,KAexBx/D,EAAQs8F,kCAAoC,WAC1C,GAAIQ,GAAY1sC,EAAMZ,EAAQwtC,EAC1Bt9C,EAAQt/C,KAAKs/C,KAGjB,KAAK8P,IAAU9P,GACb,GAAIA,EAAMn5C,eAAeipD,KACvBY,EAAO1Q,EAAM8P,GACTY,EAAKC,WAEHjwD,KAAKm+C,MAAMh4C,eAAe6pD,EAAKwG,OAASx2D,KAAKm+C,MAAMh4C,eAAe6pD,EAAKyG,SACzD,MAAZzG,EAAK2B,KAAa,CACpB,GAAIkrC,GAAQ7sC,EAAK/lC,GACb6yE,EAAQ9sC,EAAK2B,IACborC,EAAQ/sC,EAAKhmC,IAEjB0yE,GAAa1sC,EAAK/P,QAAQK,aAE1Bs8C,EAAsBC,EAAM78B,YAAc+8B,EAAM/8B,YAAc,EAG9D08B,GAAcE,EAAsB58F,KAAKsjD,UAAU1C,WAAWY,WAC9DxhD,KAAKg9F,sBAAsBH,EAAOC,EAAO,GAAMJ,GAC/C18F,KAAKg9F,sBAAsBF,EAAOC,EAAO,GAAML,KAiB3D98F,EAAQo9F,sBAAwB,SAAUH,EAAOC,EAAOJ,GACtD,GAAIj9E,GAAIC,EAAIy/C,EAAIC,EAAIu9B,EAAan2E,CAEjC/G,GAAMo9E,EAAMxqF,EAAIyqF,EAAMzqF,EACtBqN,EAAMm9E,EAAMvqF,EAAIwqF,EAAMxqF,EACtBkU,EAAWhiB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIbm2E,EAAc38F,KAAKsjD,UAAUrD,QAAQM,gBAAkBm8C,EAAal2E,GAAYA,EAEhF24C,EAAK1/C,EAAKk9E,EACVv9B,EAAK1/C,EAAKi9E,EAEVE,EAAM19B,IAAMA,EACZ09B,EAAMz9B,IAAMA,EACZ09B,EAAM39B,IAAMA,EACZ29B,EAAM19B,IAAMA,GAIdx/D,EAAQ2sD,6BAA+B,WACrC,GAAkC1lD,SAA9B7G,KAAKi9F,qBAAoC,CAC3C,KAAOj9F,KAAKi9F,qBAAqB14E,iBAC/BvkB,KAAKi9F,qBAAqBxrF,YAAYzR,KAAKi9F,qBAAqBz4E,WAGlExkB,MAAKi9F,qBAAqB9yF,WAAWsH,YAAYzR,KAAKi9F,sBACtDj9F,KAAKi9F,qBAAuBp2F,SAQhCjH,EAAQuvE,0BAA4B,WAClC,GAAkCtoE,SAA9B7G,KAAKi9F,qBAAoC,CAC3Cj9F,KAAK46F,mBACLj6F,EAAKmG,WAAW9G,KAAK46F,gBAAgB56F,KAAKsjD,UAE1C,IAAI45C,GAAmB14F,KAAKJ,IAAI,IAAQ,GAAKpE,KAAKsjD,UAAUrD,QAAQC,UAAUE,sBAAyB,IACnG+8C,EAAY34F,KAAKL,IAAI,IAAwD,GAAlDnE,KAAKsjD,UAAUrD,QAAQC,UAAUK,gBAE5D68C,GAAgC,KAAM,KAAM,KAAM,KACtDp9F,MAAKi9F,qBAAuBprF,SAASM,cAAc,OACnDnS,KAAKi9F,qBAAqB70F,UAAY,uBACtCpI,KAAKi9F,qBAAqBn4E,UAAY,smBAW0Do4E,EAAiB,YAAe,GAAKl9F,KAAKsjD,UAAUrD,QAAQC,UAAUE,sBAAyB,4EAA4E88C,EAAiB,0BAA6Bl9F,KAAKsjD,UAAUrD,QAAQC,UAA+B,sBAAI,4JAG7QlgD,KAAKsjD,UAAUrD,QAAQC,UAAUG,eAAiB,wFAA0FrgD,KAAKsjD,UAAUrD,QAAQC,UAAUG,eAAiB,2JAG/LrgD,KAAKsjD,UAAUrD,QAAQC,UAAUI,aAAe,sFAAwFtgD,KAAKsjD,UAAUrD,QAAQC,UAAUI,aAAe,iJAGpM68C,EAAU,YAAcn9F,KAAKsjD,UAAUrD,QAAQC,UAAUK,eAAiB,iEAAiE48C,EAAU,0BAA4Bn9F,KAAKsjD,UAAUrD,QAAQC,UAAUK,eAAiB,sJAG5NvgD,KAAKsjD,UAAUrD,QAAQC,UAAUM,QAAU,4FAA8FxgD,KAAKsjD,UAAUrD,QAAQC,UAAUM,QAAU,sPAM/KxgD,KAAKsjD,UAAUrD,QAAQQ,UAAUC,aAAe,kGAAoG1gD,KAAKsjD,UAAUrD,QAAQQ,UAAUC,aAAe,2JAGnM1gD,KAAKsjD,UAAUrD,QAAQQ,UAAUJ,eAAiB,uFAAyFrgD,KAAKsjD,UAAUrD,QAAQQ,UAAUJ,eAAiB,0JAG9LrgD,KAAKsjD,UAAUrD,QAAQQ,UAAUH,aAAe,qFAAuFtgD,KAAKsjD,UAAUrD,QAAQQ,UAAUH,aAAe,4JAGrLtgD,KAAKsjD,UAAUrD,QAAQQ,UAAUF,eAAiB,yFAA2FvgD,KAAKsjD,UAAUrD,QAAQQ,UAAUF,eAAiB,qJAGtMvgD,KAAKsjD,UAAUrD,QAAQQ,UAAUD,QAAU,2FAA6FxgD,KAAKsjD,UAAUrD,QAAQQ,UAAUD,QAAU,oQAM9KxgD,KAAKsjD,UAAUrD,QAAQU,sBAAsBD,aAAe,kGAAoG1gD,KAAKsjD,UAAUrD,QAAQU,sBAAsBD,aAAe,2JAG3N1gD,KAAKsjD,UAAUrD,QAAQU,sBAAsBN,eAAiB,uFAAyFrgD,KAAKsjD,UAAUrD,QAAQU,sBAAsBN,eAAiB,0JAGtNrgD,KAAKsjD,UAAUrD,QAAQU,sBAAsBL,aAAe,qFAAuFtgD,KAAKsjD,UAAUrD,QAAQU,sBAAsBL,aAAe,4JAG7MtgD,KAAKsjD,UAAUrD,QAAQU,sBAAsBJ,eAAiB,yFAA2FvgD,KAAKsjD,UAAUrD,QAAQU,sBAAsBJ,eAAiB,qJAG9NvgD,KAAKsjD,UAAUrD,QAAQU,sBAAsBH,QAAU,2FAA6FxgD,KAAKsjD,UAAUrD,QAAQU,sBAAsBH,QAAU,uJAG3M48C,EAA6Bp2F,QAAQhH,KAAKsjD,UAAUlB,mBAAmBrmB,WAAa,0FAA4F/7B,KAAKsjD,UAAUlB,mBAAmBrmB,UAAY,oKAGtN/7B,KAAKsjD,UAAUlB,mBAAmBC,gBAAkB,yFAA2FriD,KAAKsjD,UAAUlB,mBAAmBC,gBAAkB,6JAGvMriD,KAAKsjD,UAAUlB,mBAAmBE,YAAc,wFAA0FtiD,KAAKsjD,UAAUlB,mBAAmBE,YAAc,odAU9RtiD,KAAKua,iBAAiB8iF,cAAcnrF,aAAalS,KAAKi9F,qBAAsBj9F,KAAKua,kBACjFva,KAAK66F,WAAahpF,SAASM,cAAc,OACzCnS,KAAK66F,WAAWttF,MAAMmxC,SAAW,OACjC1+C,KAAK66F,WAAWttF,MAAMq3D,WAAa,UACnC5kE,KAAKua,iBAAiB8iF,cAAcnrF,aAAalS,KAAK66F,WAAY76F,KAAKua,iBAEvE;GAAI+iF,EACJA,GAAezrF,SAASsoF,eAAe,eACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,cAAe,GAAI,2CACvEs9F,EAAezrF,SAASsoF,eAAe,eACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,cAAe,EAAG,0BACtEs9F,EAAezrF,SAASsoF,eAAe,eACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,cAAe,EAAG,0BACtEs9F,EAAezrF,SAASsoF,eAAe,eACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,cAAe,EAAG,wBACtEs9F,EAAezrF,SAASsoF,eAAe,iBACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,gBAAiB,EAAG,mBAExEs9F,EAAezrF,SAASsoF,eAAe,cACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,aAAc,EAAG,kCACrEs9F,EAAezrF,SAASsoF,eAAe,cACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,aAAc,EAAG,0BACrEs9F,EAAezrF,SAASsoF,eAAe,cACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,aAAc,EAAG,0BACrEs9F,EAAezrF,SAASsoF,eAAe,cACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,aAAc,EAAG,wBACrEs9F,EAAezrF,SAASsoF,eAAe,gBACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,eAAgB,EAAG,mBAEvEs9F,EAAezrF,SAASsoF,eAAe,cACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,aAAc,EAAG,8CACrEs9F,EAAezrF,SAASsoF,eAAe,cACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,aAAc,EAAG,0BACrEs9F,EAAezrF,SAASsoF,eAAe,cACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,aAAc,EAAG,0BACrEs9F,EAAezrF,SAASsoF,eAAe,cACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,aAAc,EAAG,wBACrEs9F,EAAezrF,SAASsoF,eAAe,gBACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,eAAgB,EAAG,mBACvEs9F,EAAezrF,SAASsoF,eAAe,qBACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,oBAAqBo9F,EAA8B,gCACvGE,EAAezrF,SAASsoF,eAAe,kBACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,iBAAkB,EAAG,sCACzEs9F,EAAezrF,SAASsoF,eAAe,iBACvCmD,EAAa7zE,SAAW4wE,EAAiB9kE,KAAKv1B,KAAM,gBAAiB,EAAG,iCAExE,IAAIy6F,GAAe5oF,SAASsoF,eAAe,wBACvCO,EAAe7oF,SAASsoF,eAAe,wBACvCoD,EAAe1rF,SAASsoF,eAAe,uBAC3CO,GAAaC,SAAU,EACnB36F,KAAKsjD,UAAUrD,QAAQC,UAAUlxC,UACnCyrF,EAAaE,SAAU,GAErB36F,KAAKsjD,UAAUlB,mBAAmBpzC,UACpCuuF,EAAa5C,SAAU,EAGzB,IAAIT,GAAqBroF,SAASsoF,eAAe,sBAC7CqD,EAAwB3rF,SAASsoF,eAAe,yBAChDsD,EAAwB5rF,SAASsoF,eAAe,wBAEpDD,GAAmBznE,QAAUwnE,EAAwB1kE,KAAKv1B,MAC1Dw9F,EAAsB/qE,QAAU2nE,EAAqB7kE,KAAKv1B,MAC1Dy9F,EAAsBhrE,QAAU8nE,EAAqBhlE,KAAKv1B,MAExDk6F,EAAmB3sF,MAAMb,WADQ,GAA/B1M,KAAKsjD,UAAUb,cAA8D,GAAtCziD,KAAKsjD,UAAUo6C,oBAClB,UAGA,UAIxC5C,EAAqBniF,MAAM3Y,MAE3By6F,EAAahxE,SAAWqxE,EAAqBvlE,KAAKv1B,MAClD06F,EAAajxE,SAAWqxE,EAAqBvlE,KAAKv1B,MAClDu9F,EAAa9zE,SAAWqxE,EAAqBvlE,KAAKv1B,QAWtDJ,EAAQ27F,yBAA2B,SAAUH,EAAuB92F,GAClE,GAAIq5F,GAAYvC,EAAsB9yF,MAAM,IACpB,IAApBq1F,EAAU33F,OACZhG,KAAKsjD,UAAUq6C,EAAU,IAAMr5F,EAEJ,GAApBq5F,EAAU33F,OACjBhG,KAAKsjD,UAAUq6C,EAAU,IAAIA,EAAU,IAAMr5F,EAElB,GAApBq5F,EAAU33F,SACjBhG,KAAKsjD,UAAUq6C,EAAU,IAAIA,EAAU,IAAIA,EAAU,IAAMr5F,KA6N3D,SAASzE,EAAQD,GAYrBA,EAAQmnD,oBAAsB,WAE7B/mD,KAAK87F,aAAa97F,KAAKsjD,UAAU1C,WAAWC,iBAAiB,GAG7D7gD,KAAKixD,eAI2B,GAA5BjxD,KAAKsjD,UAAUR,WACjB9iD,KAAK4pD,aAEP5pD,KAAKkQ,SASNtQ,EAAQk8F,aAAe,SAAS8B,EAAkBC,GAOhD,IANA,GAAIr1C,GAAgBxoD,KAAK2lD,YAAY3/C,OAEjC83F,EAAY,GACZ1+C,EAAQ,EAGLoJ,EAAgBo1C,GAA4BE,EAAR1+C,GACrCA,EAAQ,GAAK,GACfp/C,KAAK+9F,oBAAmB,GACxB/9F,KAAKg+F,0BAGLh+F,KAAKi+F,uBAEPj+F,KAAK+9F,oBAAmB,GACxBv1C,EAAgBxoD,KAAK2lD,YAAY3/C,OACjCo5C,GAAS,CAIPA,GAAQ,GAAmB,GAAdy+C,GACf79F,KAAKs6F,kBAEPt6F,KAAK8wD,2BASPlxD,EAAQs+F,YAAc,SAASv2C,GAC7B,GAAIw2C,GAA2Bn+F,KAAK2mD,MACpC,IAAIgB,EAAKqY,YAAchgE,KAAKsjD,UAAU1C,WAAWM,iBAAmBlhD,KAAKo+F,kBAAkBz2C,KACrE,WAAlB3nD,KAAKy8F,WAAqD,GAA3Bz8F,KAAK2lD,YAAY3/C,QAAc,CAEhEhG,KAAKq+F,WAAW12C,EAIhB,KAHA,GAAIvI,GAAQ,EAGJp/C,KAAK2lD,YAAY3/C,OAAShG,KAAKsjD,UAAU1C,WAAWC,iBAA6B,GAARzB,GAC/Ep/C,KAAKs+F,uBACLl/C,GAAS,MAKXp/C,MAAKu+F,mBAAmB52C,GAAK,GAAM,GAGnC3nD,KAAK8oD,uBACL9oD,KAAK8wD,0BACL9wD,KAAKixD,cAIHjxD,MAAK2mD,QAAUw3C,GACjBn+F,KAAKkQ,SAQTtQ,EAAQ8uD,sBAAwB,WACW,GAArC1uD,KAAKsjD,UAAU1C,WAAW5xC,SAA8D,GAA3ChP,KAAKsjD,UAAU1C,WAAWiB,eACzE7hD,KAAKw+F,eAAe,GAAE,GAAM,IAUhC5+F,EAAQq+F,qBAAuB,WAC7Bj+F,KAAKw+F,eAAe,IAAG,GAAM,IAS/B5+F,EAAQ0+F,qBAAuB,WAC7Bt+F,KAAKw+F,eAAe,GAAE,GAAM,IAgB9B5+F,EAAQ4+F,eAAiB,SAASC,EAAcC,EAAU78D,EAAM88D,GAC9D,GAAIR,GAA2Bn+F,KAAK2mD,OAChCi4C,EAAgB5+F,KAAK2lD,YAAY3/C,OAEjC64F,EAAqB7+F,KAAKgmD,cAAgBhmD,KAAKuE,OAA0B,GAAjBk6F,EACxDK,EAAsB9+F,KAAKgmD,cAAgBhmD,KAAKuE,OAA0B,GAAjBk6F,CAGnC,IAAtBK,GACF9+F,KAAK++F,kBAImB,GAAtBD,GAA+C,IAAjBL,EAGhCz+F,KAAKg/F,cAAcn9D,IAES,GAArBg9D,GAA8C,GAAjBJ,KACvB,GAAT58D,EAGF7hC,KAAKi/F,cAAcP,EAAU78D,GAK7B7hC,KAAKi/F,cAAcP,GAAW,IAGlC1+F,KAAK8oD,uBAGD9oD,KAAK2lD,YAAY3/C,QAAU44F,GAAwC,GAAtBE,GAA+C,IAAjBL,IAC7Ez+F,KAAKk/F,eAAer9D,GACpB7hC,KAAK8oD,yBAImB,GAAtBg2C,GAA+C,IAAjBL,KAChCz+F,KAAKm/F,eACLn/F,KAAK8oD,wBAGP9oD,KAAKgmD,cAAgBhmD,KAAKuE,MAG1BvE,KAAKixD,eAGDjxD,KAAK2lD,YAAY3/C,OAAS44F,IAC5B5+F,KAAKy/D,gBAAkB,EAEvBz/D,KAAKg+F,2BAGW,GAAdW,GAAsC93F,SAAf83F,IAErB3+F,KAAK2mD,QAAUw3C,GACjBn+F,KAAKkQ,QAITlQ,KAAK8wD,2BAMPlxD,EAAQu/F,aAAe,WAErB,GAAIC,GAAkBp/F,KAAKq/F,mBACvBD,GAAkBp/F,KAAKsjD,UAAU1C,WAAWI,gBAC9ChhD,KAAKs/F,sBAAsB,EAAIt/F,KAAKsjD,UAAU1C,WAAWI,eAAiBo+C,IAW9Ex/F,EAAQs/F,eAAiB,SAASr9D,GAChC7hC,KAAKu/F,cACLv/F,KAAKw/F,mBAAmB39D,GAAM,IAQhCjiC,EAAQm+F,mBAAqB,SAASY,GACpC,GAAIR,GAA2Bn+F,KAAK2mD,OAChCi4C,EAAgB5+F,KAAK2lD,YAAY3/C,MAErChG,MAAKk/F,gBAAe,GAGpBl/F,KAAK8oD,uBACL9oD,KAAKixD,eAELjxD,KAAK8wD,0BAGD9wD,KAAK2lD,YAAY3/C,QAAU44F,IAC7B5+F,KAAKy/D,gBAAkB,IAGP,GAAdk/B,GAAsC93F,SAAf83F,IAErB3+F,KAAK2mD,QAAUw3C,GACjBn+F,KAAKkQ,SAUXtQ,EAAQ6/F,oBAAsB,WAC5B,GAA+C,GAA3Cz/F,KAAKsjD,UAAU1C,WAAWiB,cAC5B,IAAK,GAAIoG,KAAUjoD,MAAKm+C,MACtB,GAAIn+C,KAAKm+C,MAAMh4C,eAAe8hD,GAAS,CACrC,GAAIN,GAAO3nD,KAAKm+C,MAAM8J,EACD,IAAjBN,EAAK4c,WACF5c,EAAKx0C,MAAQnT,KAAKuE,MAAQvE,KAAKsjD,UAAU1C,WAAWO,oBAAsBnhD,KAAKmgB,MAAMC,OAAOC,aAC9FsnC,EAAKv0C,OAASpT,KAAKuE,MAAQvE,KAAKsjD,UAAU1C,WAAWO,oBAAsBnhD,KAAKmgB,MAAMC,OAAOsF,eAC9F1lB,KAAKk+F,YAAYv2C,KAe7B/nD,EAAQq/F,cAAgB,SAASP,EAAU78D,GACzC,IAAK,GAAIh8B,GAAI,EAAGA,EAAI7F,KAAK2lD,YAAY3/C,OAAQH,IAAK,CAChD,GAAI8hD,GAAO3nD,KAAKm+C,MAAMn+C,KAAK2lD,YAAY9/C,GACvC7F,MAAKu+F,mBAAmB52C,EAAK+2C,EAAU78D,GACvC7hC,KAAK8wD,4BAeTlxD,EAAQ2+F,mBAAqB,SAASp0F,EAAYu0F,EAAW78D,EAAO69D,GAElE,GAAIv1F,EAAW61D,YAAc,IACXn5D,SAAZ64F,IACFA,GAAU,GAIZhB,EAAYgB,GAAWhB,EAEnBv0F,EAAW41D,eAAiB//D,KAAKuE,OAAkB,GAATs9B,GAE5C,IAAK,GAAI89D,KAAmBx1F,GAAW81D,eACrC,GAAI91D,EAAW81D,eAAe95D,eAAew5F,GAAkB,CAC7D,GAAIC,GAAYz1F,EAAW81D,eAAe0/B,EAI7B,IAAT99D,GACE+9D,EAAUngC,gBAAkBt1D,EAAWg2D,gBAAgBh2D,EAAWg2D,gBAAgBn6D,OAAO,IACtF05F,IACL1/F,KAAK6/F,sBAAsB11F,EAAWw1F,EAAgBjB,EAAU78D,EAAM69D,GAIpE1/F,KAAKo+F,kBAAkBj0F,IACzBnK,KAAK6/F,sBAAsB11F,EAAWw1F,EAAgBjB,EAAU78D,EAAM69D,KAwBpF9/F,EAAQigG,sBAAwB,SAAS11F,EAAYw1F,EAAiBjB,EAAW78D,EAAO69D,GACtF,GAAIE,GAAYz1F,EAAW81D,eAAe0/B,EAG1C,IAAIC,EAAU7/B,eAAiB//D,KAAKuE,OAAkB,GAATs9B,EAAe,CAE1D7hC,KAAKipD,eAGLjpD,KAAKm+C,MAAMwhD,GAAmBC,EAG9B5/F,KAAK8/F,uBAAuB31F,EAAWy1F,GAGvC5/F,KAAK+/F,wBAAwB51F,EAAWy1F,GAGxC5/F,KAAKggG,eAAe71F,GAGpBA,EAAW4E,QAAQqvC,MAAQwhD,EAAU7wF,QAAQqvC,KAC7Cj0C,EAAW61D,aAAe4/B,EAAU5/B,YACpC71D,EAAW4E,QAAQ2vC,SAAWl6C,KAAKL,IAAInE,KAAKsjD,UAAU1C,WAAWS,YAAarhD,KAAKsjD,UAAUnF,MAAMO,SAAW1+C,KAAKsjD,UAAU1C,WAAWQ,oBAAoBj3C,EAAW61D,YAAY,IAGnL4/B,EAAUvtF,EAAIlI,EAAWkI,EAAIlI,EAAW01D,iBAAmB,GAAMr7D,KAAKiB,UACtEm6F,EAAUttF,EAAInI,EAAWmI,EAAInI,EAAW01D,iBAAmB,GAAMr7D,KAAKiB,gBAG/D0E,GAAW81D,eAAe0/B,EAGjC,IAAIM,IAAgB,CACpB,KAAK,GAAIC,KAAe/1F,GAAW81D,eACjC,GAAI91D,EAAW81D,eAAe95D,eAAe+5F,IACvC/1F,EAAW81D,eAAeigC,GAAazgC,gBAAkBmgC,EAAUngC,eAAgB,CACrFwgC,GAAgB,CAChB,OAKe,GAAjBA,GACF91F,EAAWg2D,gBAAgBljB,MAG7Bj9C,KAAKmgG,uBAAuBP,GAI5BA,EAAUngC,eAAiB,EAG3Bt1D,EAAW63D,iBAGXhiE,KAAK2mD,QAAS,EAIC,GAAb+3C,GACF1+F,KAAKu+F,mBAAmBqB,EAAUlB,EAAU78D,EAAM69D,IAWtD9/F,EAAQugG,uBAAyB,SAASx4C,GACxC,IAAK,GAAI9hD,GAAI,EAAGA,EAAI8hD,EAAKkK,aAAa7rD,OAAQH,IAC5C8hD,EAAKkK,aAAahsD,GAAGkvD,sBAczBn1D,EAAQo/F,cAAgB,SAASn9D,GAClB,GAATA,EAC6C,GAA3C7hC,KAAKsjD,UAAU1C,WAAWiB,eAC5B7hD,KAAKogG,sBAIPpgG,KAAKqgG,wBAUTzgG,EAAQwgG,oBAAsB,WAC5B,GAAI3gF,GAAGC,EAAG1Z,EACNs6F,EAAYtgG,KAAKsjD,UAAU1C,WAAWK,qBAAqBjhD,KAAKuE,KAIpE,KAAK,GAAI6qD,KAAUpvD,MAAKs/C,MACtB,GAAIt/C,KAAKs/C,MAAMn5C,eAAeipD,GAAS,CACrC,GAAIY,GAAOhwD,KAAKs/C,MAAM8P,EACtB,IAAIY,EAAKC,WACHD,EAAKwG,MAAQxG,EAAKyG,SACpBh3C,EAAMuwC,EAAK/lC,GAAG5X,EAAI29C,EAAKhmC,KAAK3X,EAC5BqN,EAAMswC,EAAK/lC,GAAG3X,EAAI09C,EAAKhmC,KAAK1X,EAC5BtM,EAASxB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAGrB4gF,EAATt6F,GAAoB,CAEtB,GAAImE,GAAa6lD,EAAKhmC,KAClB41E,EAAY5vC,EAAK/lC,EACjB+lC,GAAK/lC,GAAGlb,QAAQqvC,KAAO4R,EAAKhmC,KAAKjb,QAAQqvC,OAC3Cj0C,EAAa6lD,EAAK/lC,GAClB21E,EAAY5vC,EAAKhmC,MAGkB,GAAjC41E,EAAU/tC,aAAa7rD,OACzBhG,KAAKugG,cAAcp2F,EAAWy1F,GAAU,GAEC,GAAlCz1F,EAAW0nD,aAAa7rD,QAC/BhG,KAAKugG,cAAcX,EAAUz1F,GAAW,MAetDvK,EAAQygG,qBAAuB,WAC7B,IAAK,GAAIp4C,KAAUjoD,MAAKm+C,MAEtB,GAAIn+C,KAAKm+C,MAAMh4C,eAAe8hD,GAAS,CACrC,GAAI23C,GAAY5/F,KAAKm+C,MAAM8J,EAG3B,IAAqC,GAAjC23C,EAAU/tC,aAAa7rD,OAAa,CACtC,GAAIgqD,GAAO4vC,EAAU/tC,aAAa,GAC9B1nD,EAAc6lD,EAAKwG,MAAQopC,EAAUv/F,GAAML,KAAKm+C,MAAM6R,EAAKyG,QAAUz2D,KAAKm+C,MAAM6R,EAAKwG,KAErFopC,GAAUv/F,IAAM8J,EAAW9J,KACzB8J,EAAW4E,QAAQqvC,KAAOwhD,EAAU7wF,QAAQqvC,KAC9Cp+C,KAAKugG,cAAcp2F,EAAWy1F,GAAU,GAGxC5/F,KAAKugG,cAAcX,EAAUz1F,GAAW,OAgBpDvK,EAAQ4gG,4BAA8B,SAAS74C,GAG7C,IAAK,GAFD84C,GAAoB,GACpBC,EAAwB,KACnB76F,EAAI,EAAGA,EAAI8hD,EAAKkK,aAAa7rD,OAAQH,IAC5C,GAA6BgB,SAAzB8gD,EAAKkK,aAAahsD,GAAkB,CACtC,GAAI86F,GAAY,IACZh5C,GAAKkK,aAAahsD,GAAG4wD,QAAU9O,EAAKtnD,GACtCsgG,EAAYh5C,EAAKkK,aAAahsD,GAAGmkB,KAE1B29B,EAAKkK,aAAahsD,GAAG2wD,MAAQ7O,EAAKtnD,KACzCsgG,EAAYh5C,EAAKkK,aAAahsD,GAAGokB,IAIlB,MAAb02E,GAAqBF,EAAoBE,EAAUxgC,gBAAgBn6D,SACrEy6F,EAAoBE,EAAUxgC,gBAAgBn6D,OAC9C06F,EAAwBC,GAKb,MAAbA,GAAkD95F,SAA7B7G,KAAKm+C,MAAMwiD,EAAUtgG,KAC5CL,KAAKugG,cAAcI,EAAWh5C,GAAM,IAYxC/nD,EAAQ4/F,mBAAqB,SAAS39D,EAAO++D,GAE3C,IAAK,GAAI34C,KAAUjoD,MAAKm+C,MAElBn+C,KAAKm+C,MAAMh4C,eAAe8hD,IAC5BjoD,KAAK6gG,oBAAoB7gG,KAAKm+C,MAAM8J,GAAQpmB,EAAM++D,IAcxDhhG,EAAQihG,oBAAsB,SAASC,EAASj/D,EAAO++D,EAAWG,GAShE,GAR6Bl6F,SAAzBk6F,IACFA,EAAuB,GAOpBD,EAAQjvC,aAAa7rD,QAAUhG,KAAKovE,cAA6B,GAAbwxB,GACtDE,EAAQjvC,aAAa7rD,QAAUhG,KAAKovE,cAA6B,GAAbwxB,EAAoB,CASzE,IAAK,GAPDnhF,GAAGC,EAAG1Z,EACNs6F,EAAYtgG,KAAKsjD,UAAU1C,WAAWK,qBAAqBjhD,KAAKuE,MAChEy8F,GAAe,EAGfC,KACAC,EAAuBJ,EAAQjvC,aAAa7rD,OACvCsmB,EAAI,EAAO40E,EAAJ50E,EAA0BA,IACxC20E,EAAa14F,KAAKu4F,EAAQjvC,aAAavlC,GAAGjsB,GAK5C,IAAa,GAATwhC,EAEF,IADAm/D,GAAe,EACV10E,EAAI,EAAO40E,EAAJ50E,EAA0BA,IAAK,CACzC,GAAI0jC,GAAOhwD,KAAKs/C,MAAM2hD,EAAa30E,GACnC,IAAazlB,SAATmpD,GACEA,EAAKC,WACHD,EAAKwG,MAAQxG,EAAKyG,SACpBh3C,EAAMuwC,EAAK/lC,GAAG5X,EAAI29C,EAAKhmC,KAAK3X,EAC5BqN,EAAMswC,EAAK/lC,GAAG3X,EAAI09C,EAAKhmC,KAAK1X,EAC5BtM,EAASxB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAErB4gF,EAATt6F,GAAoB,CACtBg7F,GAAe,CACf,QASZ,IAAMn/D,GAASm/D,GAAiBn/D,EAAO,CACrC,GAAIs/D,MACAC,IAEJ,KAAK90E,EAAI,EAAO40E,EAAJ50E,EAA0BA,IAAK,CACzC0jC,EAAOhwD,KAAKs/C,MAAM2hD,EAAa30E,GAC/B,IAAIszE,GAAY5/F,KAAKm+C,MAAO6R,EAAKyG,QAAUqqC,EAAQzgG,GAAM2vD,EAAKwG,KAAOxG,EAAKyG,OACxC5vD,UAA9Bu6F,EAAYxB,EAAUv/F,MACxB+gG,EAAYxB,EAAUv/F,KAAM,EAC5B8gG,EAAS54F,KAAKq3F,IAIlB,IAAKtzE,EAAI,EAAGA,EAAI60E,EAASn7F,OAAQsmB,IAAK,CACpC,GAAIszE,GAAYuB,EAAS70E,EAEpBszE,GAAU/tC,aAAa7rD,QAAWhG,KAAKovE,aAAe2xB,GACxDnB,EAAUv/F,IAAMygG,EAAQzgG,IACzBL,KAAKugG,cAAcO,EAAQlB,EAAU/9D,OAsB/CjiC,EAAQ2gG,cAAgB,SAASp2F,EAAYy1F,EAAW/9D,GAEtD13B,EAAW81D,eAAe2/B,EAAUv/F,IAAMu/F,CAG1C,KAAK,GAAI/5F,GAAI,EAAGA,EAAI+5F,EAAU/tC,aAAa7rD,OAAQH,IAAK,CACtD,GAAImqD,GAAO4vC,EAAU/tC,aAAahsD,EAC9BmqD,GAAKwG,MAAQrsD,EAAW9J,IAAM2vD,EAAKyG,QAAUtsD,EAAW9J,GAE1DL,KAAKqhG,qBAAqBl3F,EAAWy1F,EAAU5vC,GAI/ChwD,KAAKshG,sBAAsBn3F,EAAWy1F,EAAU5vC,GAIpD4vC,EAAU/tC,gBAGV7xD,KAAKuhG,8BAA8Bp3F,EAAWy1F,SAIvC5/F,MAAKm+C,MAAMyhD,EAAUv/F,GAG5B,IAAImhG,GAAar3F,EAAW4E,QAAQqvC,IACpCwhD,GAAUngC,eAAiBz/D,KAAKy/D,eAChCt1D,EAAW4E,QAAQqvC,MAAQwhD,EAAU7wF,QAAQqvC,KAC7Cj0C,EAAW61D,aAAe4/B,EAAU5/B,YACpC71D,EAAW4E,QAAQ2vC,SAAWl6C,KAAKL,IAAInE,KAAKsjD,UAAU1C,WAAWS,YAAarhD,KAAKsjD,UAAUnF,MAAMO,SAAW1+C,KAAKsjD,UAAU1C,WAAWQ,mBAAmBj3C,EAAW61D,aAGlK71D,EAAWg2D,gBAAgBh2D,EAAWg2D,gBAAgBn6D,OAAS,IAAMhG,KAAKy/D,gBAC5Et1D,EAAWg2D,gBAAgB53D,KAAKvI,KAAKy/D,gBAKrCt1D,EAAW41D,eADA,GAATl+B,EAC0B,EAGA7hC,KAAKuE,MAInC4F,EAAW63D,iBAGX73D,EAAW81D,eAAe2/B,EAAUv/F,IAAI0/D,eAAiB51D,EAAW41D,eAGpE6/B,EAAUp7B,gBAGVr6D,EAAWs6D,eAAe+8B,GAG1BxhG,KAAK2mD,QAAS,GAYhB/mD,EAAQyhG,qBAAuB,SAASl3F,EAAYy1F,EAAW5vC,GAEbnpD,SAA5CsD,EAAW+1D,eAAe0/B,EAAUv/F,MACtC8J,EAAW+1D,eAAe0/B,EAAUv/F,QAGtC8J,EAAW+1D,eAAe0/B,EAAUv/F,IAAIkI,KAAKynD,SAGtChwD,MAAKs/C,MAAM0Q,EAAK3vD,GAGvB,KAAK,GAAIwF,GAAI,EAAGA,EAAIsE,EAAW0nD,aAAa7rD,OAAQH,IAClD,GAAIsE,EAAW0nD,aAAahsD,GAAGxF,IAAM2vD,EAAK3vD,GAAI,CAC5C8J,EAAW0nD,aAAalpD,OAAO9C,EAAE,EACjC,SAcNjG,EAAQ0hG,sBAAwB,SAASn3F,EAAYy1F,EAAW5vC,GAE1DA,EAAKwG,MAAQxG,EAAKyG,OACpBz2D,KAAKqhG,qBAAqBl3F,EAAYy1F,EAAW5vC,IAG7CA,EAAKwG,MAAQopC,EAAUv/F,IACzB2vD,EAAKqH,aAAa9uD,KAAKq3F,EAAUv/F,IACjC2vD,EAAK/lC,GAAK9f,EACV6lD,EAAKwG,KAAOrsD,EAAW9J,KAGvB2vD,EAAKoH,eAAe7uD,KAAKq3F,EAAUv/F,IACnC2vD,EAAKhmC,KAAO7f,EACZ6lD,EAAKyG,OAAStsD,EAAW9J,IAG3BL,KAAKyhG,oBAAoBt3F,EAAWy1F,EAAU5vC,KAalDpwD,EAAQ2hG,8BAAgC,SAASp3F,EAAYy1F,GAE3D,IAAK,GAAI/5F,GAAI,EAAGA,EAAIsE,EAAW0nD,aAAa7rD,OAAQH,IAAK,CACvD,GAAImqD,GAAO7lD,EAAW0nD,aAAahsD,EAE/BmqD,GAAKwG,MAAQxG,EAAKyG,QACpBz2D,KAAKqhG,qBAAqBl3F,EAAYy1F,EAAW5vC,KAcvDpwD,EAAQ6hG,oBAAsB,SAASt3F,EAAYy1F,EAAW5vC,GAGtD7lD,EAAWy0D,cAAcz4D,eAAey5F,EAAUv/F,MACtD8J,EAAWy0D,cAAcghC,EAAUv/F,QAErC8J,EAAWy0D,cAAcghC,EAAUv/F,IAAIkI,KAAKynD,GAG5C7lD,EAAW0nD,aAAatpD,KAAKynD,IAY/BpwD,EAAQmgG,wBAA0B,SAAS51F,EAAYy1F,GACrD,GAAIz1F,EAAWy0D,cAAcz4D,eAAey5F,EAAUv/F,IAAK,CACzD,IAAK,GAAIwF,GAAI,EAAGA,EAAIsE,EAAWy0D,cAAcghC,EAAUv/F,IAAI2F,OAAQH,IAAK,CACtE,GAAImqD,GAAO7lD,EAAWy0D,cAAcghC,EAAUv/F,IAAIwF,EAC9CmqD,GAAKoH,eAAepH,EAAKoH,eAAepxD,OAAO,IAAM45F,EAAUv/F,IACjE2vD,EAAKoH,eAAena,MACpB+S,EAAKyG,OAASmpC,EAAUv/F,GACxB2vD,EAAKhmC,KAAO41E,IAGZ5vC,EAAKqH,aAAapa,MAClB+S,EAAKwG,KAAOopC,EAAUv/F,GACtB2vD,EAAK/lC,GAAK21E,GAIZA,EAAU/tC,aAAatpD,KAAKynD,EAG5B,KAAK,GAAI1jC,GAAI,EAAGA,EAAIniB,EAAW0nD,aAAa7rD,OAAQsmB,IAClD,GAAIniB,EAAW0nD,aAAavlC,GAAGjsB,IAAM2vD,EAAK3vD,GAAI,CAC5C8J,EAAW0nD,aAAalpD,OAAO2jB,EAAE,EACjC,cAKCniB,GAAWy0D,cAAcghC,EAAUv/F,MAa9CT,EAAQogG,eAAiB,SAAS71F,GAEhC,IAAK,GADD0nD,MACKhsD,EAAI,EAAGA,EAAIsE,EAAW0nD,aAAa7rD,OAAQH,IAAK,CACvD,GAAImqD,GAAO7lD,EAAW0nD,aAAahsD,IAC/BsE,EAAW9J,IAAM2vD,EAAKwG,MAAQrsD,EAAW9J,IAAM2vD,EAAKyG,SACtD5E,EAAatpD,KAAKynD,GAGtB7lD,EAAW0nD,aAAeA,GAY5BjyD,EAAQkgG,uBAAyB,SAAS31F,EAAYy1F,GACpD,IAAK,GAAI/5F,GAAI,EAAGA,EAAIsE,EAAW+1D,eAAe0/B,EAAUv/F,IAAI2F,OAAQH,IAAK,CACvE,GAAImqD,GAAO7lD,EAAW+1D,eAAe0/B,EAAUv/F,IAAIwF,EAGnD7F,MAAKs/C,MAAM0Q,EAAK3vD,IAAM2vD,EAGtB4vC,EAAU/tC,aAAatpD,KAAKynD,GAC5B7lD,EAAW0nD,aAAatpD,KAAKynD,SAGxB7lD,GAAW+1D,eAAe0/B,EAAUv/F,KAa7CT,EAAQqxD,aAAe,WACrB,GAAIhJ,EAEJ,KAAKA,IAAUjoD,MAAKm+C,MAClB,GAAIn+C,KAAKm+C,MAAMh4C,eAAe8hD,GAAS,CACrC,GAAIN,GAAO3nD,KAAKm+C,MAAM8J,EAClBN,GAAKqY,YAAc,IACrBrY,EAAK90C,MAAQ,IAAI+B,OAAOlQ,OAAOijD,EAAKqY,aAAa,MAMvD,IAAK/X,IAAUjoD,MAAKm+C,MACdn+C,KAAKm+C,MAAMh4C,eAAe8hD,KAC5BN,EAAO3nD,KAAKm+C,MAAM8J,GACM,GAApBN,EAAKqY,cAELrY,EAAK90C,MADoBhM,SAAvB8gD,EAAKyY,cACMzY,EAAKyY,cAGL17D,OAAOijD,EAAKtnD,OAuBnCT,EAAQo+F,uBAAyB,WAC/B,GAGI/1C,GAHAy5C,EAAW,EACXC,EAAW,IACXC,EAAe,CAInB,KAAK35C,IAAUjoD,MAAKm+C,MACdn+C,KAAKm+C,MAAMh4C,eAAe8hD,KAC5B25C,EAAe5hG,KAAKm+C,MAAM8J,GAAQkY,gBAAgBn6D,OACnC47F,EAAXF,IAA0BA,EAAWE,GACrCD,EAAWC,IAAeD,EAAWC,GAI7C,IAAIF,EAAWC,EAAW3hG,KAAKsjD,UAAU1C,WAAWgB,uBAAwB,CAC1E,GAAIg9C,GAAgB5+F,KAAK2lD,YAAY3/C,OACjC67F,EAAcH,EAAW1hG,KAAKsjD,UAAU1C,WAAWgB,sBAEvD,KAAKqG,IAAUjoD,MAAKm+C,MACdn+C,KAAKm+C,MAAMh4C,eAAe8hD,IACxBjoD,KAAKm+C,MAAM8J,GAAQkY,gBAAgBn6D,OAAS67F,GAC9C7hG,KAAKwgG,4BAA4BxgG,KAAKm+C,MAAM8J,GAIlDjoD,MAAK8oD,uBAED9oD,KAAK2lD,YAAY3/C,QAAU44F,IAC7B5+F,KAAKy/D,gBAAkB,KAe7B7/D,EAAQw+F,kBAAoB,SAASz2C,GACnC,MACEnjD,MAAK+mB,IAAIo8B,EAAKt1C,EAAIrS,KAAK+lD,WAAW1zC,IAAMrS,KAAKsjD,UAAU1C,WAAWe,kBAAkB3hD,KAAKuE,OAEzFC,KAAK+mB,IAAIo8B,EAAKr1C,EAAItS,KAAK+lD,WAAWzzC,IAAMtS,KAAKsjD,UAAU1C,WAAWe,kBAAkB3hD,KAAKuE,OAU7F3E,EAAQ06F,gBAAkB,WACxB,IAAK,GAAIz0F,GAAI,EAAGA,EAAI7F,KAAK2lD,YAAY3/C,OAAQH,IAAK,CAChD,GAAI8hD,GAAO3nD,KAAKm+C,MAAMn+C,KAAK2lD,YAAY9/C,GACvC,IAAoB,GAAf8hD,EAAK2F,QAAkC,GAAf3F,EAAK4F,OAAkB,CAClD,GAAIphC,GAAS,EAASnsB,KAAK2lD,YAAY3/C,OAASxB,KAAKL,IAAI,IAAIwjD,EAAK54C,QAAQqvC,MACtEyS,EAAQ,EAAIrsD,KAAK6nB,GAAK7nB,KAAKiB,QACZ,IAAfkiD,EAAK2F,SAAkB3F,EAAKt1C,EAAI8Z,EAAS3nB,KAAK4a,IAAIyxC,IACnC,GAAflJ,EAAK4F,SAAkB5F,EAAKr1C,EAAI6Z,EAAS3nB,KAAKya,IAAI4xC,IACtD7wD,KAAKmgG,uBAAuBx4C,MAYlC/nD,EAAQ2/F,YAAc,WAMpB,IAAK,GALDuC,GAAU,EACVC,EAAiB,EACjBC,EAAa,EACbC,EAAa,EAERp8F,EAAI,EAAGA,EAAI7F,KAAK2lD,YAAY3/C,OAAQH,IAAK,CAEhD,GAAI8hD,GAAO3nD,KAAKm+C,MAAMn+C,KAAK2lD,YAAY9/C,GACnC8hD,GAAKkK,aAAa7rD,OAASi8F,IAC7BA,EAAat6C,EAAKkK,aAAa7rD,QAEjC87F,GAAWn6C,EAAKkK,aAAa7rD,OAC7B+7F,GAAkBv9F,KAAK+vB,IAAIozB,EAAKkK,aAAa7rD,OAAO,GACpDg8F,GAAc,EAEhBF,GAAoBE,EACpBD,GAAkCC,CAElC,IAAIE,GAAWH,EAAiBv9F,KAAK+vB,IAAIutE,EAAQ,GAE7CK,EAAoB39F,KAAK6rB,KAAK6xE,EAElCliG,MAAKovE,aAAe5qE,KAAKgB,MAAMs8F,EAAU,EAAEK,GAGvCniG,KAAKovE,aAAe6yB,IACtBjiG,KAAKovE,aAAe6yB,IAexBriG,EAAQ0/F,sBAAwB,SAAS8C,GACvCpiG,KAAKovE,aAAe,CACpB,IAAIizB,GAAe79F,KAAKgB,MAAMxF,KAAK2lD,YAAY3/C,OAASo8F,EACxD,KAAK,GAAIn6C,KAAUjoD,MAAKm+C,MAClBn+C,KAAKm+C,MAAMh4C,eAAe8hD,IACkB,GAA1CjoD,KAAKm+C,MAAM8J,GAAQ4J,aAAa7rD,QAC9Bq8F,EAAe,IACjBriG,KAAK6gG,oBAAoB7gG,KAAKm+C,MAAM8J,IAAQ,GAAK,EAAK,GACtDo6C,GAAgB,IAa1BziG,EAAQy/F,kBAAoB,WAC1B,GAAIiD,GAAS,EACTj+F,EAAQ,CACZ,KAAK,GAAI4jD,KAAUjoD,MAAKm+C,MAClBn+C,KAAKm+C,MAAMh4C,eAAe8hD,KACkB,GAA1CjoD,KAAKm+C,MAAM8J,GAAQ4J,aAAa7rD,SAClCs8F,GAAU,GAEZj+F,GAAS,EAGb,OAAOi+F,GAAOj+F,IAMZ,SAASxE,EAAQD,EAASM,GAE9B,GAAIS,GAAOT,EAAoB,GAC3BqD,EAAOrD,EAAoB,GAgB/BN,GAAQ8pD,iBAAmB,WACzB1pD,KAAK4xD,QAAgB,OAAE5xD,KAAKy8F,WAAWt+C,MAAQn+C,KAAKm+C,MACpDn+C,KAAK4xD,QAAgB,OAAE5xD,KAAKy8F,WAAWn9C,MAAQt/C,KAAKs/C,MACpDt/C,KAAK4xD,QAAgB,OAAE5xD,KAAKy8F,WAAW92C,YAAc3lD,KAAK2lD,aAa5D/lD,EAAQ2iG,gBAAkB,SAASC,EAAUC,GACxB57F,SAAf47F,GAA0C,UAAdA,EAC9BziG,KAAK0iG,sBAAsBF,GAG3BxiG,KAAK2iG,sBAAsBH,IAY/B5iG,EAAQ8iG,sBAAwB,SAASF,GACvCxiG,KAAK2lD,YAAc3lD,KAAK4xD,QAAgB,OAAE4wC,GAAuB,YACjExiG,KAAKm+C,MAAcn+C,KAAK4xD,QAAgB,OAAE4wC,GAAiB,MAC3DxiG,KAAKs/C,MAAct/C,KAAK4xD,QAAgB,OAAE4wC,GAAiB,OAU7D5iG,EAAQgjG,uBAAyB,WAC/B5iG,KAAK2lD,YAAc3lD,KAAK4xD,QAAiB,QAAe,YACxD5xD,KAAKm+C,MAAcn+C,KAAK4xD,QAAiB,QAAS,MAClD5xD,KAAKs/C,MAAct/C,KAAK4xD,QAAiB,QAAS,OAWpDhyD,EAAQ+iG,sBAAwB,SAASH,GACvCxiG,KAAK2lD,YAAc3lD,KAAK4xD,QAAgB,OAAE4wC,GAAuB,YACjExiG,KAAKm+C,MAAcn+C,KAAK4xD,QAAgB,OAAE4wC,GAAiB,MAC3DxiG,KAAKs/C,MAAct/C,KAAK4xD,QAAgB,OAAE4wC,GAAiB,OAU7D5iG,EAAQijG,kBAAoB,WAC1B7iG,KAAKuiG,gBAAgBviG,KAAKy8F,YAU5B78F,EAAQ68F,QAAU,WAChB,MAAOz8F,MAAKqvE,aAAarvE,KAAKqvE,aAAarpE,OAAO,IAUpDpG,EAAQkjG,gBAAkB,WACxB,GAAI9iG,KAAKqvE,aAAarpE,OAAS,EAC7B,MAAOhG,MAAKqvE,aAAarvE,KAAKqvE,aAAarpE,OAAO,EAGlD,MAAM,IAAIU,WAAU,iEAaxB9G,EAAQmjG,iBAAmB,SAASC,GAClChjG,KAAKqvE,aAAa9mE,KAAKy6F,IAUzBpjG,EAAQqjG,kBAAoB,WAC1BjjG,KAAKqvE,aAAapyB,OAWpBr9C,EAAQsjG,iBAAmB,SAASF,GAElChjG,KAAK4xD,QAAgB,OAAEoxC,IAAU7kD,SACAmB,SACAqG,eACAoa,eAAkB//D,KAAKuE,MACvB+qE,YAAezoE,QAGhD7G,KAAK4xD,QAAgB,OAAEoxC,GAAoB,YAAI,GAAIz/F,IAC9ClD,GAAG2iG,EACF53F,OACEsB,WAAY,UACZC,OAAQ,iBAEJ3M,KAAKsjD,WACjBtjD,KAAK4xD,QAAgB,OAAEoxC,GAAoB,YAAEhjC,YAAc,GAW7DpgE,EAAQujG,oBAAsB,SAASX,SAC9BxiG,MAAK4xD,QAAgB,OAAE4wC,IAWhC5iG,EAAQwjG,oBAAsB,SAASZ,SAC9BxiG,MAAK4xD,QAAgB,OAAE4wC,IAWhC5iG,EAAQyjG,cAAgB,SAASb,GAE/BxiG,KAAK4xD,QAAgB,OAAE4wC,GAAYxiG,KAAK4xD,QAAgB,OAAE4wC,GAG1DxiG,KAAKmjG,oBAAoBX,IAW3B5iG,EAAQ0jG,gBAAkB,SAASd,GAEjCxiG,KAAK4xD,QAAgB,OAAE4wC,GAAYxiG,KAAK4xD,QAAgB,OAAE4wC,GAG1DxiG,KAAKojG,oBAAoBZ,IAa3B5iG,EAAQ2jG,qBAAuB,SAASf,GAEtC,IAAK,GAAIv6C,KAAUjoD,MAAKm+C,MAClBn+C,KAAKm+C,MAAMh4C,eAAe8hD,KAC5BjoD,KAAK4xD,QAAgB,OAAE4wC,GAAiB,MAAEv6C,GAAUjoD,KAAKm+C,MAAM8J,GAKnE,KAAK,GAAImH,KAAUpvD,MAAKs/C,MAClBt/C,KAAKs/C,MAAMn5C,eAAeipD,KAC5BpvD,KAAK4xD,QAAgB,OAAE4wC,GAAiB,MAAEpzC,GAAUpvD,KAAKs/C,MAAM8P,GAKnE,KAAK,GAAIvpD,GAAI,EAAGA,EAAI7F,KAAK2lD,YAAY3/C,OAAQH,IAC3C7F,KAAK4xD,QAAgB,OAAE4wC,GAAuB,YAAEj6F,KAAKvI,KAAK2lD,YAAY9/C,KAW1EjG,EAAQ4jG,6BAA+B,WACrCxjG,KAAK87F,aAAa,GAAE,IAUtBl8F,EAAQy+F,WAAa,SAAS12C,GAE5B,GAAI87C,GAASzjG,KAAKy8F,gBAWXz8F,MAAKm+C,MAAMwJ,EAAKtnD,GAEvB,IAAIqjG,GAAmB/iG,EAAK2E,YAG5BtF,MAAKqjG,cAAcI,GAGnBzjG,KAAKkjG,iBAAiBQ,GAGtB1jG,KAAK+iG,iBAAiBW,GAGtB1jG,KAAKuiG,gBAAgBviG,KAAKy8F,WAG1Bz8F,KAAKm+C,MAAMwJ,EAAKtnD,IAAMsnD,GAUxB/nD,EAAQm/F,gBAAkB,WAExB,GAAI0E,GAASzjG,KAAKy8F,SAGlB,IAAc,WAAVgH,IAC8B,GAA3BzjG,KAAK2lD,YAAY3/C,QACpBhG,KAAK4xD,QAAgB,OAAE6xC,GAAqB,YAAEtwF,MAAMnT,KAAKuE,MAAQvE,KAAKsjD,UAAU1C,WAAWO,oBAAsBnhD,KAAKmgB,MAAMC,OAAOC,aACnIrgB,KAAK4xD,QAAgB,OAAE6xC,GAAqB,YAAErwF,OAAOpT,KAAKuE,MAAQvE,KAAKsjD,UAAU1C,WAAWO,oBAAsBnhD,KAAKmgB,MAAMC,OAAOsF,cAAe,CACnJ,GAAIi+E,GAAiB3jG,KAAK8iG,iBAG1B9iG,MAAKwjG,+BAILxjG,KAAKujG,qBAAqBI,GAI1B3jG,KAAKmjG,oBAAoBM,GAGzBzjG,KAAKsjG,gBAAgBK,GAGrB3jG,KAAKuiG,gBAAgBoB,GAGrB3jG,KAAKijG,oBAGLjjG,KAAK8oD,uBAGL9oD,KAAK8wD,4BAeXlxD,EAAQk0D,sBAAwB,SAAS8vC,EAAYC,GACnD,GAAIC,KACJ,IAAiBj9F,SAAbg9F,EACF,IAAK,GAAIJ,KAAUzjG,MAAK4xD,QAAgB,OAClC5xD,KAAK4xD,QAAgB,OAAEzrD,eAAes9F,KAExCzjG,KAAK0iG,sBAAsBe,GAC3BK,EAAav7F,KAAMvI,KAAK4jG,WAK5B,KAAK,GAAIH,KAAUzjG,MAAK4xD,QAAgB,OACtC,GAAI5xD,KAAK4xD,QAAgB,OAAEzrD,eAAes9F,GAAS,CAEjDzjG,KAAK0iG,sBAAsBe,EAC3B,IAAI1pF,GAAOzT,MAAMyN,UAAUpL,OAAOpI,KAAKwF,UAAW,EAEhD+9F,GAAav7F,KADXwR,EAAK/T,OAAS,EACGhG,KAAK4jG,GAAa7pF,EAAK,GAAGA,EAAK,IAG/B/Z,KAAK4jG,GAAaC,IAO7C,MADA7jG,MAAK6iG,oBACEiB,GAaTlkG,EAAQm0D,mBAAqB,SAAS6vC,EAAYC,GAChD,GAAIC,IAAe,CACnB,IAAiBj9F,SAAbg9F,EACF7jG,KAAK4iG,yBACLkB,EAAe9jG,KAAK4jG,SAEjB,CACH5jG,KAAK4iG,wBACL,IAAI7oF,GAAOzT,MAAMyN,UAAUpL,OAAOpI,KAAKwF,UAAW,EAEhD+9F,GADE/pF,EAAK/T,OAAS,EACDhG,KAAK4jG,GAAa7pF,EAAK,GAAGA,EAAK,IAG/B/Z,KAAK4jG,GAAaC,GAKrC,MADA7jG,MAAK6iG,oBACEiB,GAaTlkG,EAAQmkG,sBAAwB,SAASH,EAAYC,GACnD,GAAiBh9F,SAAbg9F,EACF,IAAK,GAAIJ,KAAUzjG,MAAK4xD,QAAgB,OAClC5xD,KAAK4xD,QAAgB,OAAEzrD,eAAes9F,KAExCzjG,KAAK2iG,sBAAsBc,GAC3BzjG,KAAK4jG,UAKT,KAAK,GAAIH,KAAUzjG,MAAK4xD,QAAgB,OACtC,GAAI5xD,KAAK4xD,QAAgB,OAAEzrD,eAAes9F,GAAS,CAEjDzjG,KAAK2iG,sBAAsBc,EAC3B,IAAI1pF,GAAOzT,MAAMyN,UAAUpL,OAAOpI,KAAKwF,UAAW,EAC9CgU,GAAK/T,OAAS,EAChBhG,KAAK4jG,GAAa7pF,EAAK,GAAGA,EAAK,IAG/B/Z,KAAK4jG,GAAaC,GAK1B7jG,KAAK6iG,qBAaPjjG,EAAQwyD,gBAAkB,SAASwxC,EAAYC,GAC7C,GAAI9pF,GAAOzT,MAAMyN,UAAUpL,OAAOpI,KAAKwF,UAAW,EACjCc,UAAbg9F,GACF7jG,KAAK8zD,sBAAsB8vC,GAC3B5jG,KAAK+jG,sBAAsBH,IAGvB7pF,EAAK/T,OAAS,GAChBhG,KAAK8zD,sBAAsB8vC,EAAY7pF,EAAK,GAAGA,EAAK,IACpD/Z,KAAK+jG,sBAAsBH,EAAY7pF,EAAK,GAAGA,EAAK,MAGpD/Z,KAAK8zD,sBAAsB8vC,EAAYC,GACvC7jG,KAAK+jG,sBAAsBH,EAAYC,KAY7CjkG,EAAQmpD,oBAAsB,WAC5B,GAAI06C,GAASzjG,KAAKy8F,SAClBz8F,MAAK4xD,QAAgB,OAAE6xC,GAAqB,eAC5CzjG,KAAK2lD,YAAc3lD,KAAK4xD,QAAgB,OAAE6xC,GAAqB,aAWjE7jG,EAAQokG,iBAAmB,SAASp8E,EAAI66E,GACtC,GAAsD96C,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,KAAK,GAAI07C,KAAUzjG,MAAK4xD,QAAQ6wC,GAC9B,GAAIziG,KAAK4xD,QAAQ6wC,GAAYt8F,eAAes9F,IACc58F,SAApD7G,KAAK4xD,QAAQ6wC,GAAYgB,GAAqB,YAAiB,CAEjEzjG,KAAKuiG,gBAAgBkB,EAAOhB,GAE5B76C,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAC5C,KAAK,GAAIE,KAAUjoD,MAAKm+C,MAClBn+C,KAAKm+C,MAAMh4C,eAAe8hD,KAC5BN,EAAO3nD,KAAKm+C,MAAM8J,GAClBN,EAAK4R,OAAO3xC,GACRkgC,EAAOH,EAAKt1C,EAAI,GAAMs1C,EAAKx0C,QAAQ20C,EAAOH,EAAKt1C,EAAI,GAAMs1C,EAAKx0C,OAC9D40C,EAAOJ,EAAKt1C,EAAI,GAAMs1C,EAAKx0C,QAAQ40C,EAAOJ,EAAKt1C,EAAI,GAAMs1C,EAAKx0C,OAC9Dy0C,EAAOD,EAAKr1C,EAAI,GAAMq1C,EAAKv0C,SAASw0C,EAAOD,EAAKr1C,EAAI,GAAMq1C,EAAKv0C,QAC/Dy0C,EAAOF,EAAKr1C,EAAI,GAAMq1C,EAAKv0C,SAASy0C,EAAOF,EAAKr1C,EAAI,GAAMq1C,EAAKv0C,QAGvEu0C,GAAO3nD,KAAK4xD,QAAQ6wC,GAAYgB,GAAqB,YACrD97C,EAAKt1C,EAAI,IAAO01C,EAAOD,GACvBH,EAAKr1C,EAAI,IAAOu1C,EAAOD,GACvBD,EAAKx0C,MAAQ,GAAKw0C,EAAKt1C,EAAIy1C,GAC3BH,EAAKv0C,OAAS,GAAKu0C,EAAKr1C,EAAIs1C,GAC5BD,EAAK54C,QAAQod,OAAS3nB,KAAK6rB,KAAK7rB,KAAK+vB,IAAI,GAAIozB,EAAKx0C,MAAM,GAAK3O,KAAK+vB,IAAI,GAAIozB,EAAKv0C,OAAO,IACtFu0C,EAAK1jB,SAASjkC,KAAKuE,OACnBojD,EAAKkZ,YAAYj5C,KAMzBhoB,EAAQqkG,oBAAsB,SAASr8E,GACrC5nB,KAAKgkG,iBAAiBp8E,EAAI,UAC1B5nB,KAAKgkG,iBAAiBp8E,EAAI,UAC1B5nB,KAAK6iG,sBAMH,SAAShjG,EAAQD,EAASM,GAE9B,GAAIqD,GAAOrD,EAAoB,GAS/BN,GAAQskG,yBAA2B,SAASlgG,EAAQ4rD,GAClD,GAAIzR,GAAQn+C,KAAKm+C,KACjB,KAAK,GAAI8J,KAAU9J,GACbA,EAAMh4C,eAAe8hD,IACnB9J,EAAM8J,GAAQ4H,kBAAkB7rD,IAClC4rD,EAAiBrnD,KAAK0/C,IAY9BroD,EAAQukG,4BAA8B,SAAUngG,GAC9C,GAAI4rD,KAEJ,OADA5vD,MAAK8zD,sBAAsB,2BAA2B9vD,EAAO4rD,GACtDA,GAWThwD,EAAQwkG,yBAA2B,SAASrjE,GAC1C,GAAI1uB,GAAIrS,KAAK0tD,qBAAqB3sB,EAAQ1uB,GACtCC,EAAItS,KAAK4tD,qBAAqB7sB,EAAQzuB,EAE1C,QACEzK,KAAQwK,EACRpK,IAAQqK,EACR4V,MAAQ7V,EACR8R,OAAQ7R,IAYZ1S,EAAQmtD,WAAa,SAAUhsB,GAE7B,GAAIsjE,GAAiBrkG,KAAKokG,yBAAyBrjE,GAC/C6uB,EAAmB5vD,KAAKmkG,4BAA4BE,EAIxD,OAAIz0C,GAAiB5pD,OAAS,EACpBhG,KAAKm+C,MAAMyR,EAAiBA,EAAiB5pD,OAAS,IAGvD,MAWXpG,EAAQ0kG,yBAA2B,SAAUtgG,EAAQ+rD,GACnD,GAAIzQ,GAAQt/C,KAAKs/C,KACjB,KAAK,GAAI8P,KAAU9P,GACbA,EAAMn5C,eAAeipD,IACnB9P,EAAM8P,GAAQS,kBAAkB7rD,IAClC+rD,EAAiBxnD,KAAK6mD,IAa9BxvD,EAAQ2kG,4BAA8B,SAAUvgG,GAC9C,GAAI+rD,KAEJ,OADA/vD,MAAK8zD,sBAAsB,2BAA2B9vD,EAAO+rD,GACtDA,GAWTnwD,EAAQyvD,WAAa,SAAStuB,GAC5B,GAAIsjE,GAAiBrkG,KAAKokG,yBAAyBrjE,GAC/CgvB,EAAmB/vD,KAAKukG,4BAA4BF,EAExD,OAAIt0C,GAAiB/pD,OAAS,EACrBhG,KAAKs/C,MAAMyQ,EAAiBA,EAAiB/pD,OAAS,IAGtD,MAWXpG,EAAQ4kG,gBAAkB,SAAS5gF,GAC7BA,YAAergB,GACjBvD,KAAKqtD,aAAalP,MAAMv6B,EAAIvjB,IAAMujB,EAGlC5jB,KAAKqtD,aAAa/N,MAAM17B,EAAIvjB,IAAMujB,GAUtChkB,EAAQ6kG,YAAc,SAAS7gF,GACzBA,YAAergB,GACjBvD,KAAKwjD,SAASrF,MAAMv6B,EAAIvjB,IAAMujB,EAG9B5jB,KAAKwjD,SAASlE,MAAM17B,EAAIvjB,IAAMujB,GAWlChkB,EAAQyxD,qBAAuB,SAASztC,GAClCA,YAAergB,SACVvD,MAAKqtD,aAAalP,MAAMv6B,EAAIvjB,UAG5BL,MAAKqtD,aAAa/N,MAAM17B,EAAIvjB,KAUvCT,EAAQqpD,aAAe,SAASy7C,GACT79F,SAAjB69F,IACFA,GAAe,EAEjB,KAAI,GAAIz8C,KAAUjoD,MAAKqtD,aAAalP,MAC/Bn+C,KAAKqtD,aAAalP,MAAMh4C,eAAe8hD,IACxCjoD,KAAKqtD,aAAalP,MAAM8J,GAAQniB,UAGpC,KAAI,GAAIspB,KAAUpvD,MAAKqtD,aAAa/N,MAC/Bt/C,KAAKqtD,aAAa/N,MAAMn5C,eAAeipD,IACxCpvD,KAAKqtD,aAAa/N,MAAM8P,GAAQtpB,UAIpC9lC,MAAKqtD,cAAgBlP,SAASmB,UAEV,GAAhBolD,GACF1kG,KAAKsuB,KAAK,SAAUtuB,KAAKy3B,iBAU7B73B,EAAQ+kG,kBAAoB,SAASD,GACd79F,SAAjB69F,IACFA,GAAe,EAGjB,KAAK,GAAIz8C,KAAUjoD,MAAKqtD,aAAalP,MAC/Bn+C,KAAKqtD,aAAalP,MAAMh4C,eAAe8hD,IACrCjoD,KAAKqtD,aAAalP,MAAM8J,GAAQ+X,YAAc,IAChDhgE,KAAKqtD,aAAalP,MAAM8J,GAAQniB,WAChC9lC,KAAKqxD,qBAAqBrxD,KAAKqtD,aAAalP,MAAM8J,IAKpC,IAAhBy8C,GACF1kG,KAAKsuB,KAAK,SAAUtuB,KAAKy3B,iBAW7B73B,EAAQglG,sBAAwB,WAC9B,GAAIhtF,GAAQ,CACZ,KAAK,GAAIqwC,KAAUjoD,MAAKqtD,aAAalP,MAC/Bn+C,KAAKqtD,aAAalP,MAAMh4C,eAAe8hD,KACzCrwC,GAAS,EAGb,OAAOA,IASThY,EAAQilG,iBAAmB,WACzB,IAAK,GAAI58C,KAAUjoD,MAAKqtD,aAAalP,MACnC,GAAIn+C,KAAKqtD,aAAalP,MAAMh4C,eAAe8hD,GACzC,MAAOjoD,MAAKqtD,aAAalP,MAAM8J,EAGnC,OAAO,OASTroD,EAAQklG,iBAAmB,WACzB,IAAK,GAAI11C,KAAUpvD,MAAKqtD,aAAa/N,MACnC,GAAIt/C,KAAKqtD,aAAa/N,MAAMn5C,eAAeipD,GACzC,MAAOpvD,MAAKqtD,aAAa/N,MAAM8P,EAGnC,OAAO,OAUTxvD,EAAQmlG,sBAAwB,WAC9B,GAAIntF,GAAQ,CACZ,KAAK,GAAIw3C,KAAUpvD,MAAKqtD,aAAa/N,MAC/Bt/C,KAAKqtD,aAAa/N,MAAMn5C,eAAeipD,KACzCx3C,GAAS,EAGb,OAAOA,IAUThY,EAAQolG,wBAA0B,WAChC,GAAIptF,GAAQ,CACZ,KAAI,GAAIqwC,KAAUjoD,MAAKqtD,aAAalP,MAC/Bn+C,KAAKqtD,aAAalP,MAAMh4C,eAAe8hD,KACxCrwC,GAAS,EAGb,KAAI,GAAIw3C,KAAUpvD,MAAKqtD,aAAa/N,MAC/Bt/C,KAAKqtD,aAAa/N,MAAMn5C,eAAeipD,KACxCx3C,GAAS,EAGb,OAAOA,IASThY,EAAQqlG,kBAAoB,WAC1B,IAAI,GAAIh9C,KAAUjoD,MAAKqtD,aAAalP,MAClC,GAAGn+C,KAAKqtD,aAAalP,MAAMh4C,eAAe8hD,GACxC,OAAO,CAGX,KAAI,GAAImH,KAAUpvD,MAAKqtD,aAAa/N,MAClC,GAAGt/C,KAAKqtD,aAAa/N,MAAMn5C,eAAeipD,GACxC,OAAO,CAGX,QAAO,GAUTxvD,EAAQslG,oBAAsB,WAC5B,IAAI,GAAIj9C,KAAUjoD,MAAKqtD,aAAalP,MAClC,GAAGn+C,KAAKqtD,aAAalP,MAAMh4C,eAAe8hD,IACpCjoD,KAAKqtD,aAAalP,MAAM8J,GAAQ+X,YAAc,EAChD,OAAO,CAIb,QAAO,GASTpgE,EAAQulG,sBAAwB,SAASx9C,GACvC,IAAK,GAAI9hD,GAAI,EAAGA,EAAI8hD,EAAKkK,aAAa7rD,OAAQH,IAAK,CACjD,GAAImqD,GAAOrI,EAAKkK,aAAahsD,EAC7BmqD,GAAKnqB,SACL7lC,KAAKwkG,gBAAgBx0C,KAUzBpwD,EAAQwlG,qBAAuB,SAASz9C,GACtC,IAAK,GAAI9hD,GAAI,EAAGA,EAAI8hD,EAAKkK,aAAa7rD,OAAQH,IAAK,CACjD,GAAImqD,GAAOrI,EAAKkK,aAAahsD,EAC7BmqD,GAAKnjD,OAAQ,EACb7M,KAAKykG,YAAYz0C,KAWrBpwD,EAAQylG,wBAA0B,SAAS19C,GACzC,IAAK,GAAI9hD,GAAI,EAAGA,EAAI8hD,EAAKkK,aAAa7rD,OAAQH,IAAK,CACjD,GAAImqD,GAAOrI,EAAKkK,aAAahsD,EAC7BmqD,GAAKlqB,WACL9lC,KAAKqxD,qBAAqBrB,KAgB9BpwD,EAAQstD,cAAgB,SAASlpD,EAAQshG,EAAQZ,EAAca,EAAgBC,GACxD3+F,SAAjB69F,IACFA,GAAe,GAEM79F,SAAnB0+F,IACFA,GAAiB,GAGa,GAA5BvlG,KAAKilG,qBAA0C,GAAVK,GAAgD,GAA7BtlG,KAAKwvE,sBAC/DxvE,KAAKipD,cAAa,GAIG,GAAnBjlD,EAAOyhC,UAAmD,GAA7BzlC,KAAKsjD,UAAUhR,aAAsBkzD,EAQ1C,GAAnBxhG,EAAOyhC,UACdzlC,KAAKwkG,gBAAgBxgG,GACrB0gG,GAAe,IAGf1gG,EAAO8hC,WACP9lC,KAAKqxD,qBAAqBrtD,KAb1BA,EAAO6hC,SACP7lC,KAAKwkG,gBAAgBxgG,GACjBA,YAAkBT,IAA6C,GAArCvD,KAAKuvE,8BAA2D,GAAlBg2B,GAC1EvlG,KAAKmlG,sBAAsBnhG,IAaX,GAAhB0gG,GACF1kG,KAAKsuB,KAAK,SAAUtuB,KAAKy3B,iBAY7B73B,EAAQ2vD,YAAc,SAASvrD,GACT,GAAhBA,EAAO6I,QACT7I,EAAO6I,OAAQ,EACf7M,KAAKsuB,KAAK,YAAYq5B,KAAK3jD,EAAO3D,OAWtCT,EAAQ0vD,aAAe,SAAStrD,GACV,GAAhBA,EAAO6I,QACT7I,EAAO6I,OAAQ,EACf7M,KAAKykG,YAAYzgG,GACbA,YAAkBT,IACpBvD,KAAKsuB,KAAK,aAAaq5B,KAAK3jD,EAAO3D,MAGnC2D,YAAkBT,IACpBvD,KAAKolG,qBAAqBphG,IAa9BpE,EAAQitD,aAAe,aAUvBjtD,EAAQmuD,WAAa,SAAShtB,GAC5B,GAAI4mB,GAAO3nD,KAAK+sD,WAAWhsB,EAC3B,IAAY,MAAR4mB,EACF3nD,KAAKktD,cAAcvF,GAAM,OAEtB,CACH,GAAIqI,GAAOhwD,KAAKqvD,WAAWtuB,EACf,OAARivB,EACFhwD,KAAKktD,cAAc8C,GAAM,GAGzBhwD,KAAKipD,eAGT,GAAIkI,GAAanxD,KAAKy3B,cACtB05B,GAAoB,SAClBs0C,KAAMpzF,EAAG0uB,EAAQ1uB,EAAGC,EAAGyuB,EAAQzuB,GAC/B8N,QAAS/N,EAAGrS,KAAK0tD,qBAAqB3sB,EAAQ1uB,GAAIC,EAAGtS,KAAK4tD,qBAAqB7sB,EAAQzuB,KAEzFtS,KAAKsuB,KAAK,QAAS6iC,GACnBnxD,KAAK0kD,kBAUP9kD,EAAQouD,iBAAmB,SAASjtB,GAClC,GAAI4mB,GAAO3nD,KAAK+sD,WAAWhsB,EACf,OAAR4mB,GAAyB9gD,SAAT8gD,IAElB3nD,KAAK+lD,YAAe1zC,EAAMrS,KAAK0tD,qBAAqB3sB,EAAQ1uB,GACxCC,EAAMtS,KAAK4tD,qBAAqB7sB,EAAQzuB,IAC5DtS,KAAKk+F,YAAYv2C,GAEnB,IAAIwJ,GAAanxD,KAAKy3B,cACtB05B,GAAoB,SAClBs0C,KAAMpzF,EAAG0uB,EAAQ1uB,EAAGC,EAAGyuB,EAAQzuB,GAC/B8N,QAAS/N,EAAGrS,KAAK0tD,qBAAqB3sB,EAAQ1uB,GAAIC,EAAGtS,KAAK4tD,qBAAqB7sB,EAAQzuB,KAEzFtS,KAAKsuB,KAAK,cAAe6iC,IAU3BvxD,EAAQquD,cAAgB,SAASltB,GAC/B,GAAI4mB,GAAO3nD,KAAK+sD,WAAWhsB,EAC3B,IAAY,MAAR4mB,EACF3nD,KAAKktD,cAAcvF,GAAK,OAErB,CACH,GAAIqI,GAAOhwD,KAAKqvD,WAAWtuB,EACf,OAARivB,GACFhwD,KAAKktD,cAAc8C,GAAK,GAG5BhwD,KAAK0kD,kBAUP9kD,EAAQsuD,iBAAmB,SAASntB,GAClC/gC,KAAK0lG,6BAA6B3kE,GAClC/gC,KAAK2lG,2BAA2B5kE,IAGlCnhC,EAAQ8lG,6BAA+B,aACvC9lG,EAAQ+lG,2BAA6B,aAOrC/lG,EAAQ63B,aAAe,WACrB,GAAI01B,GAAUntD,KAAK4lG,mBACfC,EAAU7lG,KAAK8lG,kBACnB,QAAQ3nD,MAAMgP,EAAS7N,MAAMumD,IAS/BjmG,EAAQgmG,iBAAmB,WACzB,GAAIG,KACJ,IAAiC,GAA7B/lG,KAAKsjD,UAAUhR,WACjB,IAAK,GAAI2V,KAAUjoD,MAAKqtD,aAAalP,MAC/Bn+C,KAAKqtD,aAAalP,MAAMh4C,eAAe8hD,IACzC89C,EAAQx9F,KAAK0/C,EAInB,OAAO89C,IASTnmG,EAAQkmG,iBAAmB,WACzB,GAAIC,KACJ,IAAiC,GAA7B/lG,KAAKsjD,UAAUhR,WACjB,IAAK,GAAI8c,KAAUpvD,MAAKqtD,aAAa/N,MAC/Bt/C,KAAKqtD,aAAa/N,MAAMn5C,eAAeipD,IACzC22C,EAAQx9F,KAAK6mD,EAInB,OAAO22C,IASTnmG,EAAQ23B,aAAe,WACrBiC,QAAQpF,IAAI,gEAUdx0B,EAAQomG,YAAc,SAAS1yD,EAAWiyD,GACxC,GAAI1/F,GAAGi8B,EAAMzhC,CAEb,KAAKizC,GAAkCzsC,QAApBysC,EAAUttC,OAC3B,KAAM,qCAKR,KAFAhG,KAAKipD,cAAa,GAEbpjD,EAAI,EAAGi8B,EAAOwR,EAAUttC,OAAY87B,EAAJj8B,EAAUA,IAAK,CAClDxF,EAAKizC,EAAUztC,EAEf,IAAI8hD,GAAO3nD,KAAKm+C,MAAM99C,EACtB,KAAKsnD,EACH,KAAM,IAAIs+C,YAAW,iBAAmB5lG,EAAK,cAE/CL,MAAKktD,cAAcvF,GAAK,GAAK,EAAK49C,GAAe,GAEnDvlG,KAAKsiB,UASP1iB,EAAQsmG,YAAc,SAAS5yD,GAC7B,GAAIztC,GAAGi8B,EAAMzhC,CAEb,KAAKizC,GAAkCzsC,QAApBysC,EAAUttC,OAC3B,KAAM,qCAKR,KAFAhG,KAAKipD,cAAa,GAEbpjD,EAAI,EAAGi8B,EAAOwR,EAAUttC,OAAY87B,EAAJj8B,EAAUA,IAAK,CAClDxF,EAAKizC,EAAUztC,EAEf,IAAImqD,GAAOhwD,KAAKs/C,MAAMj/C,EACtB,KAAK2vD,EACH,KAAM,IAAIi2C,YAAW,iBAAmB5lG,EAAK,cAE/CL,MAAKktD,cAAc8C,GAAK,GAAK,GAAK,GAAM,GAE1ChwD,KAAKsiB,UAOP1iB,EAAQgxD,iBAAmB,WACzB,IAAI,GAAI3I,KAAUjoD,MAAKqtD,aAAalP,MAC/Bn+C,KAAKqtD,aAAalP,MAAMh4C,eAAe8hD,KACnCjoD,KAAKm+C,MAAMh4C,eAAe8hD,UACtBjoD,MAAKqtD,aAAalP,MAAM8J,GAIrC,KAAI,GAAImH,KAAUpvD,MAAKqtD,aAAa/N,MAC/Bt/C,KAAKqtD,aAAa/N,MAAMn5C,eAAeipD,KACnCpvD,KAAKs/C,MAAMn5C,eAAeipD,UACtBpvD,MAAKqtD,aAAa/N,MAAM8P,MASnC,SAASvvD,EAAQD,EAASM,GAE9B,GAAIS,GAAOT,EAAoB,GAC3BqD,EAAOrD,EAAoB,IAC3BkD,EAAOlD,EAAoB,IAC3B0lC,EAAS1lC,EAAoB,GAOjCN,GAAQumG,qBAAuB,WAC7BnmG,KAAKwsD,oBAAoBxsD,KAAKyvE,iBAC9BzvE,KAAKomG,mBAELpmG,KAAKqmG,2BAELrmG,KAAK0lG,6BAA+B,mBAC7B1lG,MAAK4xD,QAAiB,QAAS,MAAc,iBAC7C5xD,MAAK4xD,QAAiB,QAAS,MAAiB,cACvD5xD,KAAKyjD,oBAAqB,EAC1BzjD,KAAK20D,kBAAiB,IAIxB/0D,EAAQymG,yBAA2B,WAEjC,GAAuC,GAAnCrmG,KAAK2jD,oBAAoB39C,OAAa,CACxC,IAAK,GAAIH,GAAI,EAAGA,EAAI7F,KAAK2jD,oBAAoB39C,OAAQH,IACnD7F,KAAK2jD,oBAAoB99C,GAAGulD,SAE9BprD,MAAK2jD,yBAWT/jD,EAAQ0mG,4BAA8B,WACpC,IAAK,GAAIC,KAAgBvmG,MAAKqlD,gBACxBrlD,KAAKqlD,gBAAgBl/C,eAAeogG,KACtCvmG,KAAKumG,GAAgBvmG,KAAKqlD,gBAAgBkhD,SACnCvmG,MAAKqlD,gBAAgBkhD,KAUlC3mG,EAAQ4mG,gBAAkB,WACxBxmG,KAAKiqD,UAAYjqD,KAAKiqD,QACtB,IAAIw8C,GAAUzmG,KAAKyvE,gBACfE,EAAW3vE,KAAK2vE,SAChBD,EAAc1vE,KAAK0vE,WACF,IAAjB1vE,KAAKiqD,UACPw8C,EAAQl5F,MAAMq+B,QAAQ,QACtB+jC,EAASpiE,MAAMq+B,QAAQ,QACvB8jC,EAAYniE,MAAMq+B,QAAQ,OAC1B5rC,KAAK0mG,iBAAiB/2B,EAAS,qBAG/B82B,EAAQl5F,MAAMq+B,QAAQ,OACtB+jC,EAASpiE,MAAMq+B,QAAQ,OACvB8jC,EAAYniE,MAAMq+B,QAAQ,SAE5B5rC,KAAKkpD,yBAQPtpD,EAAQspD,sBAAwB,WAE1BlpD,KAAK2mG,eACP3mG,KAAKsU,IAAI,SAAUtU,KAAK2mG,eAG1B3mG,KAAKqmG,0BAEL,IAAIhhE,GAASrlC,KAAKsjD,UAAUra,QAAQjpC,KAAKsjD,UAAUje,OAqBnD,IAnB6Bx+B,SAAzB7G,KAAK4mG,kBACP5mG,KAAK4mG,gBAAgBzpC,uBACrBn9D,KAAK4mG,gBAAkB//F,OACvB7G,KAAK6mG,oBAAsB,KAC3B7mG,KAAKyjD,oBAAqB,EAC1BzjD,KAAK42B,WAIP52B,KAAKsmG,8BAGLtmG,KAAK20D,kBAAiB,GAGtB30D,KAAKuvE,8BAA+B,EACpCvvE,KAAKwvE,sBAAuB,EAC5BxvE,KAAKomG,mBAEgB,GAAjBpmG,KAAKiqD,SAAkB,CACzB,KAAOjqD,KAAKyvE,gBAAgBlrD,iBAC1BvkB,KAAKyvE,gBAAgBh+D,YAAYzR,KAAKyvE,gBAAgBjrD,WAGxDxkB,MAAKomG,gBAA6B,YAAIv0F,SAASM,cAAc,OAC7DnS,KAAKomG,gBAA6B,YAAEh+F,UAAY,6BAEhDpI,KAAKomG,gBAAkC,iBAAIv0F,SAASM,cAAc,OAClEnS,KAAKomG,gBAAkC,iBAAEh+F,UAAY,4BACrDpI,KAAKomG,gBAAkC,iBAAEthF,UAAYugB,EAAgB,QACrErlC,KAAKomG,gBAA6B,YAAEr0F,YAAY/R,KAAKomG,gBAAkC,kBAEvFpmG,KAAKomG,gBAAmC,kBAAIv0F,SAASM,cAAc,OACnEnS,KAAKomG,gBAAmC,kBAAEh+F,UAAY,wBAEtDpI,KAAKomG,gBAA6B,YAAIv0F,SAASM,cAAc,OAC7DnS,KAAKomG,gBAA6B,YAAEh+F,UAAY,iCAChDpI,KAAKomG,gBAAkC,iBAAIv0F,SAASM,cAAc,OAClEnS,KAAKomG,gBAAkC,iBAAEh+F,UAAY,4BACrDpI,KAAKomG,gBAAkC,iBAAEthF,UAAYugB,EAAgB,QACrErlC,KAAKomG,gBAA6B,YAAEr0F,YAAY/R,KAAKomG,gBAAkC,kBAEvFpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAA6B,aACnEpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAAmC,mBACzEpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAA6B,aAE/B,GAAhCpmG,KAAK4kG,yBAAgC5kG,KAAK69C,iBAAiBC,MAC7D99C,KAAKomG,gBAAmC,kBAAIv0F,SAASM,cAAc,OACnEnS,KAAKomG,gBAAmC,kBAAEh+F,UAAY,wBAEtDpI,KAAKomG,gBAA8B,aAAIv0F,SAASM,cAAc,OAC9DnS,KAAKomG,gBAA8B,aAAEh+F,UAAY,8BACjDpI,KAAKomG,gBAAmC,kBAAIv0F,SAASM,cAAc,OACnEnS,KAAKomG,gBAAmC,kBAAEh+F,UAAY,4BACtDpI,KAAKomG,gBAAmC,kBAAEthF,UAAYugB,EAAiB,SACvErlC,KAAKomG,gBAA8B,aAAEr0F,YAAY/R,KAAKomG,gBAAmC,mBAEzFpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAAmC,mBACzEpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAA8B,eAE7B,GAAhCpmG,KAAK+kG,yBAAgE,GAAhC/kG,KAAK4kG,0BACjD5kG,KAAKomG,gBAAmC,kBAAIv0F,SAASM,cAAc,OACnEnS,KAAKomG,gBAAmC,kBAAEh+F,UAAY,wBAEtDpI,KAAKomG,gBAA8B,aAAIv0F,SAASM,cAAc,OAC9DnS,KAAKomG,gBAA8B,aAAEh+F,UAAY,8BACjDpI,KAAKomG,gBAAmC,kBAAIv0F,SAASM,cAAc,OACnEnS,KAAKomG,gBAAmC,kBAAEh+F,UAAY,4BACtDpI,KAAKomG,gBAAmC,kBAAEthF,UAAYugB,EAAiB,SACvErlC,KAAKomG,gBAA8B,aAAEr0F,YAAY/R,KAAKomG,gBAAmC,mBAEzFpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAAmC,mBACzEpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAA8B,eAEtC,GAA5BpmG,KAAKilG,sBACPjlG,KAAKomG,gBAAmC,kBAAIv0F,SAASM,cAAc,OACnEnS,KAAKomG,gBAAmC,kBAAEh+F,UAAY,wBAEtDpI,KAAKomG,gBAA4B,WAAIv0F,SAASM,cAAc,OAC5DnS,KAAKomG,gBAA4B,WAAEh+F,UAAY,gCAC/CpI,KAAKomG,gBAAiC,gBAAIv0F,SAASM,cAAc,OACjEnS,KAAKomG,gBAAiC,gBAAEh+F,UAAY,4BACpDpI,KAAKomG,gBAAiC,gBAAEthF,UAAYugB,EAAY,IAChErlC,KAAKomG,gBAA4B,WAAEr0F,YAAY/R,KAAKomG,gBAAiC,iBAErFpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAAmC,mBACzEpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAA4B,aAIpEpmG,KAAK0mG,iBAAiB1mG,KAAKomG,gBAA6B,YAAE,yBAC1DpmG,KAAK0mG,iBAAiB1mG,KAAKomG,gBAA6B,YAAE,yBAC1DpmG,KAAK0mG,iBAAiB1mG,KAAK2vE,SAAS,mBAEA,GAAhC3vE,KAAK4kG,yBAAgC5kG,KAAK69C,iBAAiBC,KAC7D99C,KAAK0mG,iBAAiB1mG,KAAKomG,gBAA8B,aAAE,aAEpB,GAAhCpmG,KAAK+kG,yBAAgE,GAAhC/kG,KAAK4kG,yBACjD5kG,KAAK0mG,iBAAiB1mG,KAAKomG,gBAA8B,aAAE,0BAE7B,GAA5BpmG,KAAKilG,qBACPjlG,KAAK0mG,iBAAiB1mG,KAAKomG,gBAA4B,WAAE,kBAG3D;GAAIrxF,GAAK/U,IACTA,MAAK2mG,cAAgB5xF,EAAGm0C,sBACxBlpD,KAAKmU,GAAG,SAAUnU,KAAK2mG,mBAEpB,CACH,KAAO3mG,KAAK0vE,YAAYnrD,iBACtBvkB,KAAK0vE,YAAYj+D,YAAYzR,KAAK0vE,YAAYlrD,WAGhDxkB,MAAKomG,gBAA8B,aAAIv0F,SAASM,cAAc,OAC9DnS,KAAKomG,gBAA8B,aAAEh+F,UAAY,uCACjDpI,KAAKomG,gBAAmC,kBAAIv0F,SAASM,cAAc,OACnEnS,KAAKomG,gBAAmC,kBAAEh+F,UAAY,4BACtDpI,KAAKomG,gBAAmC,kBAAEthF,UAAYugB,EAAa,KACnErlC,KAAKomG,gBAA8B,aAAEr0F,YAAY/R,KAAKomG,gBAAmC,mBAEzFpmG,KAAK0vE,YAAY39D,YAAY/R,KAAKomG,gBAA8B,cAEhEpmG,KAAK0mG,iBAAiB1mG,KAAKomG,gBAA8B,aAAE,qBAK/DxmG,EAAQ8mG,iBAAmB,SAASI,EAAYC,GAC9C,GAAIjjG,GAAS8hC,EAAOkhE,GAAan9D,iBAAiB,GAClD7lC,GAAOqQ,GAAG,QAASnU,KAAK+mG,GAAOxxE,KAAKv1B,OACpCA,KAAK2jD,oBAAoBp7C,KAAKzE,IAShClE,EAAQonG,sBAAwB,WAE9BhnG,KAAKmmG,uBACDnmG,KAAK2mG,eACP3mG,KAAKsU,IAAI,SAAUtU,KAAK2mG,cAG1B,IAAIthE,GAASrlC,KAAKsjD,UAAUra,QAAQjpC,KAAKsjD,UAAUje,OAEnDrlC,MAAKomG,mBACLpmG,KAAKomG,gBAA0B,SAAIv0F,SAASM,cAAc,OAC1DnS,KAAKomG,gBAA0B,SAAEh+F,UAAY,8BAC7CpI,KAAKomG,gBAA+B,cAAIv0F,SAASM,cAAc,OAC/DnS,KAAKomG,gBAA+B,cAAEh+F,UAAY,4BAClDpI,KAAKomG,gBAA+B,cAAEthF,UAAYugB,EAAa,KAC/DrlC,KAAKomG,gBAA0B,SAAEr0F,YAAY/R,KAAKomG,gBAA+B,eAEjFpmG,KAAKomG,gBAAmC,kBAAIv0F,SAASM,cAAc,OACnEnS,KAAKomG,gBAAmC,kBAAEh+F,UAAY,wBAEtDpI,KAAKomG,gBAAiC,gBAAIv0F,SAASM,cAAc,OACjEnS,KAAKomG,gBAAiC,gBAAEh+F,UAAY,8BACpDpI,KAAKomG,gBAAsC,qBAAIv0F,SAASM,cAAc,OACtEnS,KAAKomG,gBAAsC,qBAAEh+F,UAAY,4BACzDpI,KAAKomG,gBAAsC,qBAAEthF,UAAYugB,EAAuB,eAChFrlC,KAAKomG,gBAAiC,gBAAEr0F,YAAY/R,KAAKomG,gBAAsC,sBAE/FpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAA0B,UAChEpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAAmC,mBACzEpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAAiC,iBAGvEpmG,KAAK0mG,iBAAiB1mG,KAAKomG,gBAA0B,SAAE,wBAGvD,IAAIrxF,GAAK/U,IACTA,MAAK2mG,cAAgB5xF,EAAGkyF,SACxBjnG,KAAKmU,GAAG,SAAUnU,KAAK2mG,gBASzB/mG,EAAQsnG,sBAAwB,WAE9BlnG,KAAKmmG,uBACLnmG,KAAKipD,cAAa,GAClBjpD,KAAK20D,kBAAiB,GAElB30D,KAAK2mG,eACP3mG,KAAKsU,IAAI,SAAUtU,KAAK2mG,cAG1B,IAAIthE,GAASrlC,KAAKsjD,UAAUra,QAAQjpC,KAAKsjD,UAAUje,OAEnDrlC,MAAKipD,eACLjpD,KAAKwvE,sBAAuB,EAC5BxvE,KAAKuvE,8BAA+B,EAEpCvvE,KAAKomG,mBACLpmG,KAAKomG,gBAA0B,SAAIv0F,SAASM,cAAc,OAC1DnS,KAAKomG,gBAA0B,SAAEh+F,UAAY,8BAC7CpI,KAAKomG,gBAA+B,cAAIv0F,SAASM,cAAc,OAC/DnS,KAAKomG,gBAA+B,cAAEh+F,UAAY,4BAClDpI,KAAKomG,gBAA+B,cAAEthF,UAAYugB,EAAa,KAC/DrlC,KAAKomG,gBAA0B,SAAEr0F,YAAY/R,KAAKomG,gBAA+B,eAEjFpmG,KAAKomG,gBAAmC,kBAAIv0F,SAASM,cAAc,OACnEnS,KAAKomG,gBAAmC,kBAAEh+F,UAAY,wBAEtDpI,KAAKomG,gBAAiC,gBAAIv0F,SAASM,cAAc,OACjEnS,KAAKomG,gBAAiC,gBAAEh+F,UAAY,8BACpDpI,KAAKomG,gBAAsC,qBAAIv0F,SAASM,cAAc,OACtEnS,KAAKomG,gBAAsC,qBAAEh+F,UAAY,4BACzDpI,KAAKomG,gBAAsC,qBAAEthF,UAAYugB,EAAwB,gBACjFrlC,KAAKomG,gBAAiC,gBAAEr0F,YAAY/R,KAAKomG,gBAAsC,sBAE/FpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAA0B,UAChEpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAAmC,mBACzEpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAAiC,iBAGvEpmG,KAAK0mG,iBAAiB1mG,KAAKomG,gBAA0B,SAAE,wBAGvD,IAAIrxF,GAAK/U,IACTA,MAAK2mG,cAAgB5xF,EAAGoyF,eACxBnnG,KAAKmU,GAAG,SAAUnU,KAAK2mG,eAGvB3mG,KAAKqlD,gBAA8B,aAAIrlD,KAAK6sD,aAC5C7sD,KAAKqlD,gBAA8C,6BAAIrlD,KAAK0lG,6BAC5D1lG,KAAKqlD,gBAAkC,iBAAIrlD,KAAK8sD,iBAChD9sD,KAAKqlD,gBAAgC,eAAIrlD,KAAK8tD,eAC9C9tD,KAAKqlD,gBAA+B,cAAIrlD,KAAKiuD,cAC7CjuD,KAAK6sD,aAAe7sD,KAAKmnG,eACzBnnG,KAAK0lG,6BAA+B,aACpC1lG,KAAKiuD,cAAmB,aACxBjuD,KAAK8sD,iBAAmB,aACxB9sD,KAAK8tD,eAAmB9tD,KAAKonG,eAG7BpnG,KAAK42B,WAQPh3B,EAAQynG,uBAAyB,WAE/BrnG,KAAKmmG,uBACLnmG,KAAKyjD,oBAAqB,EAEtBzjD,KAAK2mG,eACP3mG,KAAKsU,IAAI,SAAUtU,KAAK2mG,eAG1B3mG,KAAK4mG,gBAAkB5mG,KAAK8kG,mBAC5B9kG,KAAK4mG,gBAAgB1pC,qBAErB,IAAI73B,GAASrlC,KAAKsjD,UAAUra,QAAQjpC,KAAKsjD,UAAUje,OAEnDrlC,MAAKomG,mBACLpmG,KAAKomG,gBAA0B,SAAIv0F,SAASM,cAAc,OAC1DnS,KAAKomG,gBAA0B,SAAEh+F,UAAY,8BAC7CpI,KAAKomG,gBAA+B,cAAIv0F,SAASM,cAAc,OAC/DnS,KAAKomG,gBAA+B,cAAEh+F,UAAY,4BAClDpI,KAAKomG,gBAA+B,cAAEthF,UAAYugB,EAAa,KAC/DrlC,KAAKomG,gBAA0B,SAAEr0F,YAAY/R,KAAKomG,gBAA+B,eAEjFpmG,KAAKomG,gBAAmC,kBAAIv0F,SAASM,cAAc,OACnEnS,KAAKomG,gBAAmC,kBAAEh+F,UAAY,wBAEtDpI,KAAKomG,gBAAiC,gBAAIv0F,SAASM,cAAc,OACjEnS,KAAKomG,gBAAiC,gBAAEh+F,UAAY,8BACpDpI,KAAKomG,gBAAsC,qBAAIv0F,SAASM,cAAc,OACtEnS,KAAKomG,gBAAsC,qBAAEh+F,UAAY,4BACzDpI,KAAKomG,gBAAsC,qBAAEthF,UAAYugB,EAA4B,oBACrFrlC,KAAKomG,gBAAiC,gBAAEr0F,YAAY/R,KAAKomG,gBAAsC,sBAE/FpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAA0B,UAChEpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAAmC,mBACzEpmG,KAAKyvE,gBAAgB19D,YAAY/R,KAAKomG,gBAAiC,iBAGvEpmG,KAAK0mG,iBAAiB1mG,KAAKomG,gBAA0B,SAAE,yBAGvDpmG,KAAKqlD,gBAA8B,aAASrlD,KAAK6sD,aACjD7sD,KAAKqlD,gBAA8C,6BAAKrlD,KAAK0lG,6BAC7D1lG,KAAKqlD,gBAA4B,WAAWrlD,KAAK+tD,WACjD/tD,KAAKqlD,gBAAkC,iBAAKrlD,KAAK8sD,iBACjD9sD,KAAKqlD,gBAA+B,cAAQrlD,KAAKwtD,cACjDxtD,KAAK6sD,aAAmB7sD,KAAKsnG,mBAC7BtnG,KAAK+tD,WAAmB,aACxB/tD,KAAKwtD,cAAmBxtD,KAAKunG,iBAC7BvnG,KAAK8sD,iBAAmB,aACxB9sD,KAAK0lG,6BAA+B1lG,KAAKwnG,oBAGzCxnG,KAAK42B,WAUPh3B,EAAQ0nG,mBAAqB,SAASvmE,GACpC/gC,KAAK4mG,gBAAgBnvC,aAAaztC,KAAK8b,WACvC9lC,KAAK4mG,gBAAgBnvC,aAAaxtC,GAAG6b,WACrC9lC,KAAK6mG,oBAAsB7mG,KAAK4mG,gBAAgBxpC,wBAAwBp9D,KAAK0tD,qBAAqB3sB,EAAQ1uB,GAAGrS,KAAK4tD,qBAAqB7sB,EAAQzuB,IAC9G,OAA7BtS,KAAK6mG,sBACP7mG,KAAK6mG,oBAAoBhhE,SACzB7lC,KAAK20D,kBAAiB,IAExB30D,KAAK42B,WAUPh3B,EAAQ2nG,iBAAmB,SAAS19F,GAClC,GAAIk3B,GAAU/gC,KAAK0sD,YAAY7iD,EAAM22B,QAAQ5T,OACZ,QAA7B5sB,KAAK6mG,qBAA6DhgG,SAA7B7G,KAAK6mG,sBAC5C7mG,KAAK6mG,oBAAoBx0F,EAAIrS,KAAK0tD,qBAAqB3sB,EAAQ1uB,GAC/DrS,KAAK6mG,oBAAoBv0F,EAAItS,KAAK4tD,qBAAqB7sB,EAAQzuB,IAEjEtS,KAAK42B,WASPh3B,EAAQ4nG,oBAAsB,SAASzmE,GACrC,GAAI0mE,GAAUznG,KAAK+sD,WAAWhsB,EACd,QAAZ0mE,GACqD,GAAnDznG,KAAK4mG,gBAAgBnvC,aAAaztC,KAAKyb,WACzCzlC,KAAK4mG,gBAAgBrpC,uBACrBv9D,KAAK0nG,UAAUD,EAAQpnG,GAAIL,KAAK4mG,gBAAgB38E,GAAG5pB,IACnDL,KAAK4mG,gBAAgBnvC,aAAaztC,KAAK8b,YAEY,GAAjD9lC,KAAK4mG,gBAAgBnvC,aAAaxtC,GAAGwb,WACvCzlC,KAAK4mG,gBAAgBrpC,uBACrBv9D,KAAK0nG,UAAU1nG,KAAK4mG,gBAAgB58E,KAAK3pB,GAAIonG,EAAQpnG,IACrDL,KAAK4mG,gBAAgBnvC,aAAaxtC,GAAG6b,aAIvC9lC,KAAK4mG,gBAAgBrpC,uBAEvBv9D,KAAK20D,kBAAiB,GACtB30D,KAAK42B,WASPh3B,EAAQunG,eAAiB,SAASpmE,GAChC,GAAoC,GAAhC/gC,KAAK4kG,wBAA8B,CACrC,GAAIj9C,GAAO3nD,KAAK+sD,WAAWhsB,EAE3B,IAAY,MAAR4mB,EACF,GAAIA,EAAKqY,YAAc,EACrB2nC,MAAM3nG,KAAKsjD,UAAUra,QAAQjpC,KAAKsjD,UAAUje,QAAyB,qBAElE,CACHrlC,KAAKktD,cAAcvF,GAAK,EACxB,IAAI00C,GAAer8F,KAAK4xD,QAAiB,QAAS,KAGlDyqC,GAAyB,WAAI,GAAI94F,IAAMlD,GAAG,oBAAoBL,KAAKsjD,UACnE,IAAIskD,GAAavL,EAAyB,UAC1CuL,GAAWv1F,EAAIs1C,EAAKt1C,EACpBu1F,EAAWt1F,EAAIq1C,EAAKr1C,EAGpBtS,KAAKs/C,MAAsB,eAAI,GAAIl8C,IAAM/C,GAAG,iBAAiB2pB,KAAK29B,EAAKtnD,GAAG4pB,GAAG29E,EAAWvnG,IAAKL,KAAMA,KAAKsjD,UACxG,IAAIukD,GAAiB7nG,KAAKs/C,MAAsB,cAChDuoD,GAAe79E,KAAO29B,EACtBkgD,EAAe53C,WAAY,EAC3B43C,EAAe94F,QAAQ0zC,cAAgBzzC,SAAS,EAC5C0zC,SAAS,EACTv7C,KAAM,aACNw7C,UAAW,IAEfklD,EAAepiE,UAAW,EAC1BoiE,EAAe59E,GAAK29E,EAEpB5nG,KAAKqlD,gBAA+B,cAAIrlD,KAAKwtD,aAC7C,IAAIz4C,GAAK/U,IACTA,MAAKwtD,cAAgB,SAAS3jD,GAC5B,GAAIk3B,GAAU/gC,KAAK0sD,YAAY7iD,EAAM22B,QAAQ5T,QACzCi7E,EAAiB9yF,EAAGuqC,MAAsB,cAC9CuoD,GAAe59E,GAAG5X,EAAI0C,EAAG24C,qBAAqB3sB,EAAQ1uB,GACtDw1F,EAAe59E,GAAG3X,EAAIyC,EAAG64C,qBAAqB7sB,EAAQzuB,GACtDyC,EAAG6hB,WAGL52B,KAAK2mD,QAAS,EACd3mD,KAAKkQ,WAMbtQ,EAAQwnG,eAAiB,SAASv9F,GAChC,GAAoC,GAAhC7J,KAAK4kG,wBAA8B,CACrC,GAAI7jE,GAAU/gC,KAAK0sD,YAAY7iD,EAAM22B,QAAQ5T,OAE7C5sB,MAAKwtD,cAAgBxtD,KAAKqlD,gBAA+B,oBAClDrlD,MAAKqlD,gBAA+B,aAG3C,IAAIyiD,GAAgB9nG,KAAKs/C,MAAsB,eAAEmX,aAG1Cz2D,MAAKs/C,MAAsB,qBAC3Bt/C,MAAK4xD,QAAiB,QAAS,MAAc,iBAC7C5xD,MAAK4xD,QAAiB,QAAS,MAAiB,aAEvD,IAAIjK,GAAO3nD,KAAK+sD,WAAWhsB,EACf,OAAR4mB,IACEA,EAAKqY,YAAc,EACrB2nC,MAAM3nG,KAAKsjD,UAAUra,QAAQjpC,KAAKsjD,UAAUje,QAAyB,kBAGrErlC,KAAK+nG,YAAYD,EAAcngD,EAAKtnD,IACpCL,KAAKkpD,0BAGTlpD,KAAKipD,iBAQTrpD,EAAQqnG,SAAW,WACjB,GAAIjnG,KAAKilG,qBAAwC,GAAjBjlG,KAAKiqD,SAAkB,CACrD,GAAIo6C,GAAiBrkG,KAAKokG,yBAAyBpkG,KAAK8lD,iBACpDkiD,GAAe3nG,GAAGM,EAAK2E,aAAa+M,EAAEgyF,EAAex8F,KAAKyK,EAAE+xF,EAAep8F,IAAI4K,MAAM,MAAMuiD,gBAAe,EAAKC,gBAAe,EAClI,IAAIr1D,KAAK69C,iBAAiBhqC,IAAK,CAC7B,GAAwC,GAApC7T,KAAK69C,iBAAiBhqC,IAAI7N,OAU5B,KAAM,IAAIpC,OAAM,sEAThB,IAAImR,GAAK/U,IACTA,MAAK69C,iBAAiBhqC,IAAIm0F,EAAa,SAASC,GAC9ClzF,EAAGkxC,UAAUpyC,IAAIo0F,GACjBlzF,EAAGm0C,wBACHn0C,EAAG4xC,QAAS,EACZ5xC,EAAG7E,cAWPlQ,MAAKimD,UAAUpyC,IAAIm0F,GACnBhoG,KAAKkpD,wBACLlpD,KAAK2mD,QAAS,EACd3mD,KAAKkQ,UAWXtQ,EAAQmoG,YAAc,SAASG,EAAaC,GAC1C,GAAqB,GAAjBnoG,KAAKiqD,SAAkB,CACzB,GAAI+9C,IAAeh+E,KAAKk+E,EAAcj+E,GAAGk+E,EACzC,IAAInoG,KAAK69C,iBAAiBG,QAAS,CACjC,GAA4C,GAAxCh+C,KAAK69C,iBAAiBG,QAAQh4C,OAShC,KAAM,IAAIpC,OAAM,0EARhB,IAAImR,GAAK/U,IACTA,MAAK69C,iBAAiBG,QAAQgqD,EAAa,SAASC,GAClDlzF,EAAGmxC,UAAUryC,IAAIo0F,GACjBlzF,EAAG4xC,QAAS,EACZ5xC,EAAG7E,cAUPlQ,MAAKkmD,UAAUryC,IAAIm0F,GACnBhoG,KAAK2mD,QAAS,EACd3mD,KAAKkQ,UAUXtQ,EAAQ8nG,UAAY,SAASQ,EAAaC,GACxC,GAAqB,GAAjBnoG,KAAKiqD,SAAkB,CACzB,GAAI+9C,IAAe3nG,GAAIL,KAAK4mG,gBAAgBvmG,GAAI2pB,KAAKk+E,EAAcj+E,GAAGk+E,EACtE,IAAInoG,KAAK69C,iBAAiBE,SAAU,CAClC,GAA6C,GAAzC/9C,KAAK69C,iBAAiBE,SAAS/3C,OASjC,KAAM,IAAIpC,OAAM,wEARhB,IAAImR,GAAK/U,IACTA,MAAK69C,iBAAiBE,SAASiqD,EAAa,SAASC,GACnDlzF,EAAGmxC,UAAUzwC,OAAOwyF,GACpBlzF,EAAG4xC,QAAS,EACZ5xC,EAAG7E,cAUPlQ,MAAKkmD,UAAUzwC,OAAOuyF,GACtBhoG,KAAK2mD,QAAS,EACd3mD,KAAKkQ,UAUXtQ,EAAQwoG,UAAY,WAClB,IAAIpoG,KAAK69C,iBAAiBC,MAAyB,GAAjB99C,KAAKiqD,SA4BrC,KAAM,IAAIrmD,OAAM,iDA3BhB,IAAI+jD,GAAO3nD,KAAK6kG,mBACZvxF,GAAQjT,GAAGsnD,EAAKtnD,GAClBwS,MAAO80C,EAAK90C,MACZN,MAAOo1C,EAAK54C,QAAQwD,MACpBgsC,MAAOoJ,EAAK54C,QAAQwvC,MACpBnzC,OACEsB,WAAWi7C,EAAK54C,QAAQ3D,MAAMsB,WAC9BC,OAAOg7C,EAAK54C,QAAQ3D,MAAMuB,OAC1BC,WACEF,WAAWi7C,EAAK54C,QAAQ3D,MAAMwB,UAAUF,WACxCC,OAAOg7C,EAAK54C,QAAQ3D,MAAMwB,UAAUD,SAG1C,IAAyC,GAArC3M,KAAK69C,iBAAiBC,KAAK93C,OAU7B,KAAM,IAAIpC,OAAM,wEAThB,IAAImR,GAAK/U,IACTA,MAAK69C,iBAAiBC,KAAKxqC,EAAM,SAAU20F,GACzClzF,EAAGkxC,UAAUxwC,OAAOwyF,GACpBlzF,EAAGm0C,wBACHn0C,EAAG4xC,QAAS,EACZ5xC,EAAG7E,WAoBXtQ,EAAQ0sD,gBAAkB,WACxB,IAAKtsD,KAAKilG,qBAAwC,GAAjBjlG,KAAKiqD,SACpC,GAAKjqD,KAAKklG,sBA4BRyC,MAAM3nG,KAAKsjD,UAAUra,QAAQjpC,KAAKsjD,UAAUje,QAA4B,wBA5BzC,CAC/B,GAAIgjE,GAAgBroG,KAAK4lG,mBACrB0C,EAAgBtoG,KAAK8lG,kBACzB,IAAI9lG,KAAK69C,iBAAiBI,IAAK,CAC7B,GAAIlpC,GAAK/U,KACLsT,GAAQ6qC,MAAOkqD,EAAe/oD,MAAOgpD,EACzC,IAAwC,GAApCtoG,KAAK69C,iBAAiBI,IAAIj4C,OAU5B,KAAM,IAAIpC,OAAM,0EAThB5D,MAAK69C,iBAAiBI,IAAI3qC,EAAM,SAAU20F,GACxClzF,EAAGmxC,UAAUjvC,OAAOgxF,EAAc3oD,OAClCvqC,EAAGkxC,UAAUhvC,OAAOgxF,EAAc9pD,OAClCppC,EAAGk0C,eACHl0C,EAAG4xC,QAAS,EACZ5xC,EAAG7E,cAQPlQ,MAAKkmD,UAAUjvC,OAAOqxF,GACtBtoG,KAAKimD,UAAUhvC,OAAOoxF,GACtBroG,KAAKipD,eACLjpD,KAAK2mD,QAAS,EACd3mD,KAAKkQ,WAYT,SAASrQ,EAAQD,EAASM,GAE9B,GACI0lC,IADO1lC,EAAoB,GAClBA,EAAoB,IAEjCN,GAAQgwE,iBAAmB,WAEzB,GAAqC,GAAjC5vE,KAAK0jD,kBAAkB19C,OAAa,CACtC,IAAK,GAAIH,GAAI,EAAGA,EAAI7F,KAAK0jD,kBAAkB19C,OAAQH,IACjD7F,KAAK0jD,kBAAkB79C,GAAGulD,SAE5BprD,MAAK0jD,qBAGP1jD,KAAK2lG,2BAA6B,aAG9B3lG,KAAKuoG,eAAiBvoG,KAAKuoG,cAAuB,SAAKvoG,KAAKuoG,cAAuB,QAAEp+F,YACvFnK,KAAKuoG,cAAuB,QAAEp+F,WAAWsH,YAAYzR,KAAKuoG,cAAuB,UAYrF3oG,EAAQiwE,wBAA0B,WAChC7vE,KAAK4vE,mBAEL5vE,KAAKuoG,gBACL,IAAIC,IAAkB,KAAK,OAAO,OAAO,QAAQ,SAAS,UAAU,eAChEC,GAAwB,UAAU,YAAY,YAAY,aAAa,UAAU,WAAW,cAEhGzoG,MAAKuoG,cAAuB,QAAI12F,SAASM,cAAc,OACvDnS,KAAKmgB,MAAMpO,YAAY/R,KAAKuoG,cAAuB,QAEnD,KAAK,GAAI1iG,GAAI,EAAGA,EAAI2iG,EAAexiG,OAAQH,IAAK,CAC9C7F,KAAKuoG,cAAcC,EAAe3iG,IAAMgM,SAASM,cAAc,OAC/DnS,KAAKuoG,cAAcC,EAAe3iG,IAAIuC,UAAY,sBAAwBogG,EAAe3iG,GACzF7F,KAAKuoG,cAAuB,QAAEx2F,YAAY/R,KAAKuoG,cAAcC,EAAe3iG,IAE5E,IAAI/B,GAAS8hC,EAAO5lC,KAAKuoG,cAAcC,EAAe3iG,KAAM8jC,iBAAiB,GAC7E7lC,GAAOqQ,GAAG,QAASnU,KAAKyoG,EAAqB5iG,IAAI0vB,KAAKv1B,OACtDA,KAAK0jD,kBAAkBn7C,KAAKzE,GAG9B9D,KAAK2lG,2BAA6B3lG,KAAK0oG,eAUzC9oG,EAAQ+oG,YAAc,SAAS9+F,GAC7B7J,KAAK8mD,YAAY12C,SAAS,MAC1BvG,EAAM88B,mBAQR/mC,EAAQ8oG,cAAgB,WACtB1oG,KAAKisD,eACLjsD,KAAK8rD,eACL9rD,KAAKosD,aAYPxsD,EAAQisD,QAAU,SAAShiD,GACzB7J,KAAK4kD,WAAa5kD,KAAKsjD,UAAUvB,SAASC,MAAM1vC,EAChDtS,KAAKkQ,QACLrG,EAAMD,kBAQRhK,EAAQmsD,UAAY,SAASliD,GAC3B7J,KAAK4kD,YAAc5kD,KAAKsjD,UAAUvB,SAASC,MAAM1vC,EACjDtS,KAAKkQ,QACLrG,EAAMD,kBAQRhK,EAAQosD,UAAY,SAASniD,GAC3B7J,KAAK2kD,WAAa3kD,KAAKsjD,UAAUvB,SAASC,MAAM3vC,EAChDrS,KAAKkQ,QACLrG,EAAMD,kBAQRhK,EAAQssD,WAAa,SAASriD,GAC5B7J,KAAK2kD,YAAc3kD,KAAKsjD,UAAUvB,SAASC,MAAM1vC,EACjDtS,KAAKkQ,QACLrG,EAAMD,kBAQRhK,EAAQusD,QAAU,SAAStiD,GACzB7J,KAAK6kD,cAAgB7kD,KAAKsjD,UAAUvB,SAASC,MAAM9gB,KACnDlhC,KAAKkQ,QACLrG,EAAMD,kBAQRhK,EAAQysD,SAAW,SAASxiD,GAC1B7J,KAAK6kD,eAAiB7kD,KAAKsjD,UAAUvB,SAASC,MAAM9gB,KACpDlhC,KAAKkQ,QACLrG,EAAMD,kBAQRhK,EAAQwsD,UAAY,SAASviD,GAC3B7J,KAAK6kD,cAAgB,EACrBh7C,GAASA,EAAMD,kBAQjBhK,EAAQksD,aAAe,SAASjiD,GAC9B7J,KAAK4kD,WAAa,EAClB/6C,GAASA,EAAMD,kBAQjBhK,EAAQqsD,aAAe,SAASpiD,GAC9B7J,KAAK2kD,WAAa,EAClB96C,GAASA,EAAMD,mBAMb,SAAS/J,EAAQD,GAErBA,EAAQ+pD,aAAe,WACrB,IAAK,GAAI1B,KAAUjoD,MAAKm+C,MACtB,GAAIn+C,KAAKm+C,MAAMh4C,eAAe8hD,GAAS,CACrC,GAAIN,GAAO3nD,KAAKm+C,MAAM8J,EACO,IAAzBN,EAAKsX,mBACPtX,EAAKvI,MAAQ,GACbuI,EAAKuX,qBAAsB,KAYnCt/D,EAAQinD,yBAA2B,WACjC,GAAiD,GAA7C7mD,KAAKsjD,UAAUlB,mBAAmBpzC,SAAmBhP,KAAK2lD,YAAY3/C,OAAS,EAAG,CAEpF,GACI2hD,GAAMM,EADN2gD,EAAU,EAEVC,GAAe,EACfC,GAAiB,CAErB,KAAK7gD,IAAUjoD,MAAKm+C,MACdn+C,KAAKm+C,MAAMh4C,eAAe8hD,KAC5BN,EAAO3nD,KAAKm+C,MAAM8J,GACA,IAAdN,EAAKvI,MACPypD,GAAe,EAGfC,GAAiB,EAEfF,EAAUjhD,EAAKrI,MAAMt5C,SACvB4iG,EAAUjhD,EAAKrI,MAAMt5C,QAM3B,IAAsB,GAAlB8iG,GAA0C,GAAhBD,EAC5B,KAAM,IAAIjlG,OAAM,wHAQhB5D,MAAK+oG,mBAGiB,GAAlBD,IAC8C,WAA5C9oG,KAAKsjD,UAAUlB,mBAAmBG,OACpCviD,KAAKgpG,iBAAiBJ,GAGtB5oG,KAAKipG,0BAAyB,GAKlC,IAAIC,GAAelpG,KAAKmpG,kBAGxBnpG,MAAKopG,uBAAuBF,GAG5BlpG,KAAKkQ,UAYXtQ,EAAQwpG,uBAAyB,SAASF,GACxC,GAAIjhD,GAAQN,CAGZ,KAAK,GAAIvI,KAAS8pD,GAChB,GAAIA,EAAa/iG,eAAei5C,GAE9B,IAAK6I,IAAUihD,GAAa9pD,GAAOjB,MAC7B+qD,EAAa9pD,GAAOjB,MAAMh4C,eAAe8hD,KAC3CN,EAAOuhD,EAAa9pD,GAAOjB,MAAM8J,GACkB,MAA/CjoD,KAAKsjD,UAAUlB,mBAAmBrmB,WAAoE,MAA/C/7B,KAAKsjD,UAAUlB,mBAAmBrmB,UACvF4rB,EAAK2F,SACP3F,EAAKt1C,EAAI62F,EAAa9pD,GAAOiqD,OAC7B1hD,EAAK2F,QAAS,EAEd47C,EAAa9pD,GAAOiqD,QAAUH,EAAa9pD,GAAOkD,aAIhDqF,EAAK4F,SACP5F,EAAKr1C,EAAI42F,EAAa9pD,GAAOiqD,OAC7B1hD,EAAK4F,QAAS,EAEd27C,EAAa9pD,GAAOiqD,QAAUH,EAAa9pD,GAAOkD,aAGtDtiD,KAAKspG,kBAAkB3hD,EAAKrI,MAAMqI,EAAKtnD,GAAG6oG,EAAavhD,EAAKvI,OAOpEp/C,MAAK4pD,cAUPhqD,EAAQupG,iBAAmB,WACzB,GACIlhD,GAAQN,EAAMvI,EADd8pD,IAKJ,KAAKjhD,IAAUjoD,MAAKm+C,MACdn+C,KAAKm+C,MAAMh4C,eAAe8hD,KAC5BN,EAAO3nD,KAAKm+C,MAAM8J,GAClBN,EAAK2F,QAAS,EACd3F,EAAK4F,QAAS,EACqC,MAA/CvtD,KAAKsjD,UAAUlB,mBAAmBrmB,WAAoE,MAA/C/7B,KAAKsjD,UAAUlB,mBAAmBrmB,UAC3F4rB,EAAKr1C,EAAItS,KAAKsjD,UAAUlB,mBAAmBC,gBAAgBsF,EAAKvI,MAGhEuI,EAAKt1C,EAAIrS,KAAKsjD,UAAUlB,mBAAmBC,gBAAgBsF,EAAKvI,MAEjCv4C,SAA7BqiG,EAAavhD,EAAKvI,SACpB8pD,EAAavhD,EAAKvI,QAAU4uB,OAAQ,EAAG7vB,SAAWkrD,OAAO,EAAG/mD,YAAY,IAE1E4mD,EAAavhD,EAAKvI,OAAO4uB,QAAU,EACnCk7B,EAAavhD,EAAKvI,OAAOjB,MAAM8J,GAAUN,EAK7C,IAAI4hD,GAAW,CACf,KAAKnqD,IAAS8pD,GACRA,EAAa/iG,eAAei5C,IAC1BmqD,EAAWL,EAAa9pD,GAAO4uB,SACjCu7B,EAAWL,EAAa9pD,GAAO4uB,OAMrC,KAAK5uB,IAAS8pD,GACRA,EAAa/iG,eAAei5C,KAC9B8pD,EAAa9pD,GAAOkD,aAAeinD,EAAW,GAAKvpG,KAAKsjD,UAAUlB,mBAAmBE,YACrF4mD,EAAa9pD,GAAOkD,aAAgB4mD,EAAa9pD,GAAO4uB,OAAS,EACjEk7B,EAAa9pD,GAAOiqD,OAASH,EAAa9pD,GAAOkD,YAAe,IAAO4mD,EAAa9pD,GAAO4uB,OAAS,GAAKk7B,EAAa9pD,GAAOkD,YAIjI,OAAO4mD,IAUTtpG,EAAQopG,iBAAmB,SAASJ,GAClC,GAAI3gD,GAAQN,CAGZ,KAAKM,IAAUjoD,MAAKm+C,MACdn+C,KAAKm+C,MAAMh4C,eAAe8hD,KAC5BN,EAAO3nD,KAAKm+C,MAAM8J,GACdN,EAAKrI,MAAMt5C,QAAU4iG,IACvBjhD,EAAKvI,MAAQ,GAMnB,KAAK6I,IAAUjoD,MAAKm+C,MACdn+C,KAAKm+C,MAAMh4C,eAAe8hD,KAC5BN,EAAO3nD,KAAKm+C,MAAM8J,GACA,GAAdN,EAAKvI,OACPp/C,KAAKwpG,UAAU,EAAE7hD,EAAKrI,MAAMqI,EAAKtnD,MAczCT,EAAQqpG,yBAA2B,WACjC,GAAIhhD,GAAQN,EAAM8hD,EACd9H,EAAW,GAGf8H,GAAYzpG,KAAKm+C,MAAMn+C,KAAK2lD,YAAY,IACxC8jD,EAAUrqD,MAAQuiD,EAClB3hG,KAAK0pG,kBAAkB/H,EAAS8H,EAAUnqD,MAAMmqD,EAAUppG,GAG1D,KAAK4nD,IAAUjoD,MAAKm+C,MACdn+C,KAAKm+C,MAAMh4C,eAAe8hD,KAC5BN,EAAO3nD,KAAKm+C,MAAM8J,GAClB05C,EAAWh6C,EAAKvI,MAAQuiD,EAAWh6C,EAAKvI,MAAQuiD,EAKpD,KAAK15C,IAAUjoD,MAAKm+C,MACdn+C,KAAKm+C,MAAMh4C,eAAe8hD,KAC5BN,EAAO3nD,KAAKm+C,MAAM8J,GAClBN,EAAKvI,OAASuiD,IAepB/hG,EAAQmpG,iBAAmB,WACzB/oG,KAAKsjD,UAAU1C,WAAW5xC,SAAU,EACpChP,KAAKsjD,UAAUrD,QAAQC,UAAUlxC,SAAU,EAC3ChP,KAAKsjD,UAAUrD,QAAQU,sBAAsB3xC,SAAU,EACvDhP,KAAKkvE,2BACsC,GAAvClvE,KAAKsjD,UAAUb,aAAazzC,UAC9BhP,KAAKsjD,UAAUb,aAAaC,SAAU,GAExC1iD,KAAKyqD,wBAEL,IAAIu3B,GAAShiF,KAAKsjD,UAAUlB,kBAC5B4/B,GAAO3/B,gBAAkB79C,KAAK+mB,IAAIy2D,EAAO3/B,kBACjB,MAApB2/B,EAAOjmD,WAAyC,MAApBimD,EAAOjmD,aACrCimD,EAAO3/B,iBAAmB,IAGJ,MAApB2/B,EAAOjmD,WAAyC,MAApBimD,EAAOjmD,UACM,GAAvC/7B,KAAKsjD,UAAUb,aAAazzC,UAC9BhP,KAAKsjD,UAAUb,aAAat7C,KAAO,YAIM,GAAvCnH,KAAKsjD,UAAUb,aAAazzC,UAC9BhP,KAAKsjD,UAAUb,aAAat7C,KAAO,eAgBzCvH,EAAQ0pG,kBAAoB,SAAShqD,EAAOqqD,EAAUT,EAAcU,GAClE,IAAK,GAAI/jG,GAAI,EAAGA,EAAIy5C,EAAMt5C,OAAQH,IAAK,CACrC,GAAI+5F,GAAY,IAEdA,GADEtgD,EAAMz5C,GAAG2wD,MAAQmzC,EACPrqD,EAAMz5C,GAAGmkB,KAGTs1B,EAAMz5C,GAAGokB,EAIvB,IAAI4/E,IAAY,CACmC,OAA/C7pG,KAAKsjD,UAAUlB,mBAAmBrmB,WAAoE,MAA/C/7B,KAAKsjD,UAAUlB,mBAAmBrmB,UACvF6jE,EAAUtyC,QAAUsyC,EAAUxgD,MAAQwqD,IACxChK,EAAUtyC,QAAS,EACnBsyC,EAAUvtF,EAAI62F,EAAatJ,EAAUxgD,OAAOiqD,OAC5CQ,GAAY,GAIVjK,EAAUryC,QAAUqyC,EAAUxgD,MAAQwqD,IACxChK,EAAUryC,QAAS,EACnBqyC,EAAUttF,EAAI42F,EAAatJ,EAAUxgD,OAAOiqD,OAC5CQ,GAAY,GAIC,GAAbA,IACFX,EAAatJ,EAAUxgD,OAAOiqD,QAAUH,EAAatJ,EAAUxgD,OAAOkD,YAClEs9C,EAAUtgD,MAAMt5C,OAAS,GAC3BhG,KAAKspG,kBAAkB1J,EAAUtgD,MAAMsgD,EAAUv/F,GAAG6oG,EAAatJ,EAAUxgD,UAenFx/C,EAAQ4pG,UAAY,SAASpqD,EAAOE,EAAOqqD,GACzC,IAAK,GAAI9jG,GAAI,EAAGA,EAAIy5C,EAAMt5C,OAAQH,IAAK,CACrC,GAAI+5F,GAAY,IAEdA,GADEtgD,EAAMz5C,GAAG2wD,MAAQmzC,EACPrqD,EAAMz5C,GAAGmkB,KAGTs1B,EAAMz5C,GAAGokB,IAEA,IAAnB21E,EAAUxgD,OAAewgD,EAAUxgD,MAAQA,KAC7CwgD,EAAUxgD,MAAQA,EACdwgD,EAAUtgD,MAAMt5C,OAAS,GAC3BhG,KAAKwpG,UAAUpqD,EAAM,EAAGwgD,EAAUtgD,MAAOsgD,EAAUv/F,OAe3DT,EAAQ8pG,kBAAoB,SAAStqD,EAAOE,EAAOqqD,GACjD3pG,KAAKm+C,MAAMwrD,GAAUzqC,qBAAsB,CAE3C,KAAK,GADD0gC,GAAW7jE,EACNl2B,EAAI,EAAGA,EAAIy5C,EAAMt5C,OAAQH,IAChCk2B,EAAY,EACRujB,EAAMz5C,GAAG2wD,MAAQmzC,GACnB/J,EAAYtgD,EAAMz5C,GAAGmkB,KACrB+R,EAAY,IAGZ6jE,EAAYtgD,EAAMz5C,GAAGokB,GAEA,IAAnB21E,EAAUxgD,QACZwgD,EAAUxgD,MAAQA,EAAQrjB,EAI9B,KAAK,GAAIl2B,GAAI,EAAGA,EAAIy5C,EAAMt5C,OAAQH,IACA+5F,EAA5BtgD,EAAMz5C,GAAG2wD,MAAQmzC,EAAuBrqD,EAAMz5C,GAAGmkB,KACnCs1B,EAAMz5C,GAAGokB,GAEvB21E,EAAUtgD,MAAMt5C,OAAS,GAAK45F,EAAU1gC,uBAAwB,GAClEl/D,KAAK0pG,kBAAkB9J,EAAUxgD,MAAOwgD,EAAUtgD,MAAOsgD,EAAUv/F,KAWzET,EAAQu7F,cAAgB,WACtB,IAAK,GAAIlzC,KAAUjoD,MAAKm+C,MAClBn+C,KAAKm+C,MAAMh4C,eAAe8hD,KAC5BjoD,KAAKm+C,MAAM8J,GAAQqF,QAAS,EAC5BttD,KAAKm+C,MAAM8J,GAAQsF,QAAS,KAQ9B,SAAS1tD,GAEb,QAASiqG,GAAeC,GACvB,KAAM,IAAInmG,OAAM,uBAAyBmmG,EAAM,MAEhDD,EAAep8F,KAAO,WAAa,UACnCo8F,EAAeE,QAAUF,EACzBjqG,EAAOD,QAAUkqG,EACjBA,EAAezpG,GAAK,IAKhB,SAASR,EAAQD,GAQrBA,EAAQq8F,qBAAuB,WAC7B,GAAIx8E,GAAIC,EAAW8G,EAAU24C,EAAIC,EAAIw9B,EACnCqN,EAAgBpN,EAAOC,EAAOj3F,EAAGymB,EAE/B6xB,EAAQn+C,KAAKylD,iBACbE,EAAc3lD,KAAK0lD,uBAGnBwkD,EAAS,GAAK,EACdzjG,EAAI,EAAI,EAGRi6C,EAAe1gD,KAAKsjD,UAAUrD,QAAQQ,UAAUC,aAChDypD,EAAkBzpD,CAItB,KAAK76C,EAAI,EAAGA,EAAI8/C,EAAY3/C,OAAS,EAAGH,IAEtC,IADAg3F,EAAQ1+C,EAAMwH,EAAY9/C,IACrBymB,EAAIzmB,EAAI,EAAGymB,EAAIq5B,EAAY3/C,OAAQsmB,IAAK,CAC3CwwE,EAAQ3+C,EAAMwH,EAAYr5B,IAC1BswE,EAAsBC,EAAM78B,YAAc88B,EAAM98B,YAAc,EAE9DvgD,EAAKq9E,EAAMzqF,EAAIwqF,EAAMxqF,EACrBqN,EAAKo9E,EAAMxqF,EAAIuqF,EAAMvqF,EACrBkU,EAAWhiB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAGpB,GAAZ8G,IACFA,EAAW,GAAIhiB,KAAKiB,SACpBga,EAAK+G,GAGP2jF,EAA0C,GAAvBvN,EAA4Bl8C,EAAgBA,GAAgB,EAAIk8C,EAAsB58F,KAAKsjD,UAAU1C,WAAWW,sBACnI,IAAI37C,GAAIskG,EAASC,CACF,GAAIA,EAAf3jF,IAEAyjF,EADa,GAAME,EAAjB3jF,EACe,EAGA5gB,EAAI4gB,EAAW/f,EAIlCwjG,GAA0C,GAAvBrN,EAA4B,EAAI,EAAIA,EAAsB58F,KAAKsjD,UAAU1C,WAAWU,mBACvG2oD,GAAkCzlG,KAAKJ,IAAIoiB,EAAS,IAAK2jF,GAEzDhrC,EAAK1/C,EAAKwqF,EACV7qC,EAAK1/C,EAAKuqF,EACVpN,EAAM19B,IAAMA,EACZ09B,EAAMz9B,IAAMA,EACZ09B,EAAM39B,IAAMA,EACZ29B,EAAM19B,IAAMA,MAUhB,SAASv/D,EAAQD,GAQrBA,EAAQq8F,qBAAuB,WAC7B,GAAIx8E,GAAIC,EAAI8G,EAAU24C,EAAIC,EACxB6qC,EAAgBpN,EAAOC,EAAOj3F,EAAGymB,EAE/B6xB,EAAQn+C,KAAKylD,iBACbE,EAAc3lD,KAAK0lD,uBAGnBhF,EAAe1gD,KAAKsjD,UAAUrD,QAAQU,sBAAsBD,YAIhE,KAAK76C,EAAI,EAAGA,EAAI8/C,EAAY3/C,OAAS,EAAGH,IAEtC,IADAg3F,EAAQ1+C,EAAMwH,EAAY9/C,IACrBymB,EAAIzmB,EAAI,EAAGymB,EAAIq5B,EAAY3/C,OAAQsmB,IAItC,GAHAwwE,EAAQ3+C,EAAMwH,EAAYr5B,IAGtBuwE,EAAMz9C,OAAS09C,EAAM19C,MAAO,CAE9B3/B,EAAKq9E,EAAMzqF,EAAIwqF,EAAMxqF,EACrBqN,EAAKo9E,EAAMxqF,EAAIuqF,EAAMvqF,EACrBkU,EAAWhiB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,EAGpC,IAAI0qF,GAAY,GAEdH,GADavpD,EAAXl6B,GACgBhiB,KAAK+vB,IAAI61E,EAAU5jF,EAAS,GAAKhiB,KAAK+vB,IAAI61E,EAAU1pD,EAAa,GAGlE,EAGD,GAAZl6B,EACFA,EAAW,IAGXyjF,GAAkCzjF,EAEpC24C,EAAK1/C,EAAKwqF,EACV7qC,EAAK1/C,EAAKuqF,EAEVpN,EAAM19B,IAAMA,EACZ09B,EAAMz9B,IAAMA,EACZ09B,EAAM39B,IAAMA,EACZ29B,EAAM19B,IAAMA,IAYtBx/D,EAAQu8F,mCAAqC,WAS3C,IAAK,GARDO,GAAY1sC,EAAMZ,EAClB3vC,EAAIC,EAAIy/C,EAAIC,EAAIu9B,EAAan2E,EAC7B84B,EAAQt/C,KAAKs/C,MAEbnB,EAAQn+C,KAAKylD,iBACbE,EAAc3lD,KAAK0lD,uBAGd7/C,EAAI,EAAGA,EAAI8/C,EAAY3/C,OAAQH,IAAK,CAC3C,GAAIg3F,GAAQ1+C,EAAMwH,EAAY9/C,GAC9Bg3F,GAAMwN,SAAW,EACjBxN,EAAMyN,SAAW,EAKnB,IAAKl7C,IAAU9P,GACb,GAAIA,EAAMn5C,eAAeipD,KACvBY,EAAO1Q,EAAM8P,GACTY,EAAKC,WAEHjwD,KAAKm+C,MAAMh4C,eAAe6pD,EAAKwG,OAASx2D,KAAKm+C,MAAMh4C,eAAe6pD,EAAKyG,SAqBzE,GApBAimC,EAAa1sC,EAAK/P,QAAQK,aAE1Bo8C,IAAe1sC,EAAK/lC,GAAG+1C,YAAchQ,EAAKhmC,KAAKg2C,YAAc,GAAKhgE,KAAKsjD,UAAU1C,WAAWY,WAE5F/hC,EAAMuwC,EAAKhmC,KAAK3X,EAAI29C,EAAK/lC,GAAG5X,EAC5BqN,EAAMswC,EAAKhmC,KAAK1X,EAAI09C,EAAK/lC,GAAG3X,EAC5BkU,EAAWhiB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIbm2E,EAAc38F,KAAKsjD,UAAUrD,QAAQM,gBAAkBm8C,EAAal2E,GAAYA,EAEhF24C,EAAK1/C,EAAKk9E,EACVv9B,EAAK1/C,EAAKi9E,EAIN3sC,EAAK/lC,GAAGm1B,OAAS4Q,EAAKhmC,KAAKo1B,MAC7B4Q,EAAK/lC,GAAGogF,UAAYlrC,EACpBnP,EAAK/lC,GAAGqgF,UAAYlrC,EACpBpP,EAAKhmC,KAAKqgF,UAAYlrC,EACtBnP,EAAKhmC,KAAKsgF,UAAYlrC,MAEnB,CACH,GAAI3W,GAAS,EACbuH,GAAK/lC,GAAGk1C,IAAM1W,EAAO0W,EACrBnP,EAAK/lC,GAAGm1C,IAAM3W,EAAO2W,EACrBpP,EAAKhmC,KAAKm1C,IAAM1W,EAAO0W,EACvBnP,EAAKhmC,KAAKo1C,IAAM3W,EAAO2W,EAQjC,GACIirC,GAAUC,EADV3N,EAAc,CAElB,KAAK92F,EAAI,EAAGA,EAAI8/C,EAAY3/C,OAAQH,IAAK,CACvC,GAAI8hD,GAAOxJ,EAAMwH,EAAY9/C,GAC7BwkG,GAAW7lG,KAAKL,IAAIw4F,EAAYn4F,KAAKJ,KAAKu4F,EAAYh1C,EAAK0iD,WAC3DC,EAAW9lG,KAAKL,IAAIw4F,EAAYn4F,KAAKJ,KAAKu4F,EAAYh1C,EAAK2iD,WAE3D3iD,EAAKwX,IAAMkrC,EACX1iD,EAAKyX,IAAMkrC,EAIb,GAAIC,GAAU,EACVC,EAAU,CACd,KAAK3kG,EAAI,EAAGA,EAAI8/C,EAAY3/C,OAAQH,IAAK,CACvC,GAAI8hD,GAAOxJ,EAAMwH,EAAY9/C,GAC7B0kG,IAAW5iD,EAAKwX,GAChBqrC,GAAW7iD,EAAKyX,GAElB,GAAIqrC,GAAeF,EAAU5kD,EAAY3/C,OACrC0kG,EAAeF,EAAU7kD,EAAY3/C,MAEzC,KAAKH,EAAI,EAAGA,EAAI8/C,EAAY3/C,OAAQH,IAAK,CACvC,GAAI8hD,GAAOxJ,EAAMwH,EAAY9/C,GAC7B8hD,GAAKwX,IAAMsrC,EACX9iD,EAAKyX,IAAMsrC,KAOX,SAAS7qG,EAAQD,GAQrBA,EAAQq8F,qBAAuB,WAC7B,GAA8D,GAA1Dj8F,KAAKsjD,UAAUrD,QAAQC,UAAUE,sBAA4B,CAC/D,GAAIuH,GACAxJ,EAAQn+C,KAAKylD,iBACbE,EAAc3lD,KAAK0lD,uBACnBilD,EAAYhlD,EAAY3/C,MAE5BhG,MAAK4qG,mBAAmBzsD,EAAMwH,EAK9B,KAAK,GAHDi2C,GAAgB57F,KAAK47F,cAGhB/1F,EAAI,EAAO8kG,EAAJ9kG,EAAeA,IAC7B8hD,EAAOxJ,EAAMwH,EAAY9/C,IACrB8hD,EAAK54C,QAAQqvC,KAAO,IAEtBp+C,KAAK6qG,sBAAsBjP,EAAcl8F,KAAKyhG,SAAS2J,GAAGnjD,GAC1D3nD,KAAK6qG,sBAAsBjP,EAAcl8F,KAAKyhG,SAAS4J,GAAGpjD,GAC1D3nD,KAAK6qG,sBAAsBjP,EAAcl8F,KAAKyhG,SAAS6J,GAAGrjD,GAC1D3nD,KAAK6qG,sBAAsBjP,EAAcl8F,KAAKyhG,SAAS8J,GAAGtjD,MAelE/nD,EAAQirG,sBAAwB,SAASK,EAAavjD,GAEpD,GAAIujD,EAAaC,cAAgB,EAAG,CAClC,GAAI1rF,GAAGC,EAAG8G,CAUV,IAPA/G,EAAKyrF,EAAaE,aAAa/4F,EAAIs1C,EAAKt1C,EACxCqN,EAAKwrF,EAAaE,aAAa94F,EAAIq1C,EAAKr1C,EACxCkU,EAAWhiB,KAAK6rB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAKhC8G,EAAW0kF,EAAaG,SAAWrrG,KAAKsjD,UAAUrD,QAAQC,UAAUC,cAAe,CAErE,GAAZ35B,IACFA,EAAW,GAAIhiB,KAAKiB,SACpBga,EAAK+G,EAEP,IAAIg2E,GAAex8F,KAAKsjD,UAAUrD,QAAQC,UAAUE,sBAAwB8qD,EAAa9sD,KAAOuJ,EAAK54C,QAAQqvC,MAAQ53B,EAAWA,EAAWA,GACvI24C,EAAK1/C,EAAK+8E,EACVp9B,EAAK1/C,EAAK88E,CACd70C,GAAKwX,IAAMA,EACXxX,EAAKyX,IAAMA,MAIX,IAAkC,GAA9B8rC,EAAaC,cACfnrG,KAAK6qG,sBAAsBK,EAAa/J,SAAS2J,GAAGnjD,GACpD3nD,KAAK6qG,sBAAsBK,EAAa/J,SAAS4J,GAAGpjD,GACpD3nD,KAAK6qG,sBAAsBK,EAAa/J,SAAS6J,GAAGrjD,GACpD3nD,KAAK6qG,sBAAsBK,EAAa/J,SAAS8J,GAAGtjD,OAGpD,IAAIujD,EAAa/J,SAAS7tF,KAAKjT,IAAMsnD,EAAKtnD,GAAI,CAE5B,GAAZmmB,IACFA,EAAW,GAAIhiB,KAAKiB,SACpBga,EAAK+G,EAEP,IAAIg2E,GAAex8F,KAAKsjD,UAAUrD,QAAQC,UAAUE,sBAAwB8qD,EAAa9sD,KAAOuJ,EAAK54C,QAAQqvC,MAAQ53B,EAAWA,EAAWA,GACvI24C,EAAK1/C,EAAK+8E,EACVp9B,EAAK1/C,EAAK88E,CACd70C,GAAKwX,IAAMA,EACXxX,EAAKyX,IAAMA,KAcrBx/D,EAAQgrG,mBAAqB,SAASzsD,EAAMwH,GAU1C,IAAK,GATDgC,GACAgjD,EAAYhlD,EAAY3/C,OAExB8hD,EAAO7jD,OAAOqnG,UAChB1jD,EAAO3jD,OAAOqnG,UACdvjD,GAAO9jD,OAAOqnG,UACdzjD,GAAO5jD,OAAOqnG,UAGPzlG,EAAI,EAAO8kG,EAAJ9kG,EAAeA,IAAK,CAClC,GAAIwM,GAAI8rC,EAAMwH,EAAY9/C,IAAIwM,EAC1BC,EAAI6rC,EAAMwH,EAAY9/C,IAAIyM,CAC1B6rC,GAAMwH,EAAY9/C,IAAIkJ,QAAQqvC,KAAO,IAC/B0J,EAAJz1C,IAAYy1C,EAAOz1C,GACnBA,EAAI01C,IAAQA,EAAO11C,GACfu1C,EAAJt1C,IAAYs1C,EAAOt1C,GACnBA,EAAIu1C,IAAQA,EAAOv1C,IAI3B,GAAIi5F,GAAW/mG,KAAK+mB,IAAIw8B,EAAOD,GAAQtjD,KAAK+mB,IAAIs8B,EAAOD,EACnD2jD,GAAW,GAAI3jD,GAAQ,GAAM2jD,EAAU1jD,GAAQ,GAAM0jD,IACtCzjD,GAAQ,GAAMyjD,EAAUxjD,GAAQ,GAAMwjD,EAGzD,IAAIC,GAAkB,KAClBC,EAAWjnG,KAAKJ,IAAIonG,EAAgBhnG,KAAK+mB,IAAIw8B,EAAOD,IACpD4jD,EAAe,GAAMD,EACrBzoC,EAAU,IAAOlb,EAAOC,GAAOkb,EAAU,IAAOrb,EAAOC,GAGvD+zC,GACFl8F,MACE0rG,cAAe/4F,EAAE,EAAGC,EAAE,GACtB8rC,KAAK,EACLjoB,OACE2xB,KAAMkb,EAAQ0oC,EAAa3jD,KAAKib,EAAQ0oC,EACxC9jD,KAAMqb,EAAQyoC,EAAa7jD,KAAKob,EAAQyoC,GAE1C94F,KAAM64F,EACNJ,SAAU,EAAII,EACdtK,UAAY7tF,KAAK,MACjB20B,SAAU,EACVmX,MAAO,EACP+rD,cAAe,GAMnB,KAHAnrG,KAAK2rG,aAAa/P,EAAcl8F,MAG3BmG,EAAI,EAAO8kG,EAAJ9kG,EAAeA,IACzB8hD,EAAOxJ,EAAMwH,EAAY9/C,IACrB8hD,EAAK54C,QAAQqvC,KAAO,GACtBp+C,KAAK4rG,aAAahQ,EAAcl8F,KAAKioD,EAKzC3nD,MAAK47F,cAAgBA,GAWvBh8F,EAAQisG,kBAAoB,SAASX,EAAcvjD,GACjD,GAAImkD,GAAYZ,EAAa9sD,KAAOuJ,EAAK54C,QAAQqvC,KAC7C2tD,EAAe,EAAED,CAErBZ,GAAaE,aAAa/4F,EAAI64F,EAAaE,aAAa/4F,EAAI64F,EAAa9sD,KAAOuJ,EAAKt1C,EAAIs1C,EAAK54C,QAAQqvC,KACtG8sD,EAAaE,aAAa/4F,GAAK05F,EAE/Bb,EAAaE,aAAa94F,EAAI44F,EAAaE,aAAa94F,EAAI44F,EAAa9sD,KAAOuJ,EAAKr1C,EAAIq1C,EAAK54C,QAAQqvC,KACtG8sD,EAAaE,aAAa94F,GAAKy5F,EAE/Bb,EAAa9sD,KAAO0tD,CACpB,IAAIE,GAAcxnG,KAAKJ,IAAII,KAAKJ,IAAIujD,EAAKv0C,OAAOu0C,EAAKx7B,QAAQw7B,EAAKx0C,MAClE+3F,GAAajjE,SAAYijE,EAAajjE,SAAW+jE,EAAeA,EAAcd,EAAajjE,UAa7FroC,EAAQgsG,aAAe,SAASV,EAAavjD,EAAKskD,IAC1B,GAAlBA,GAA6CplG,SAAnBolG,IAE5BjsG,KAAK6rG,kBAAkBX,EAAavjD,GAGlCujD,EAAa/J,SAAS2J,GAAG30E,MAAM4xB,KAAOJ,EAAKt1C,EACzC64F,EAAa/J,SAAS2J,GAAG30E,MAAM0xB,KAAOF,EAAKr1C,EAC7CtS,KAAKksG,eAAehB,EAAavjD,EAAK,MAGtC3nD,KAAKksG,eAAehB,EAAavjD,EAAK,MAIpCujD,EAAa/J,SAAS2J,GAAG30E,MAAM0xB,KAAOF,EAAKr1C,EAC7CtS,KAAKksG,eAAehB,EAAavjD,EAAK,MAGtC3nD,KAAKksG,eAAehB,EAAavjD,EAAK,OAc5C/nD,EAAQssG,eAAiB,SAAShB,EAAavjD,EAAKwkD,GAClD,OAAQjB,EAAa/J,SAASgL,GAAQhB,eACpC,IAAK,GACHD,EAAa/J,SAASgL,GAAQhL,SAAS7tF,KAAOq0C,EAC9CujD,EAAa/J,SAASgL,GAAQhB,cAAgB,EAC9CnrG,KAAK6rG,kBAAkBX,EAAa/J,SAASgL,GAAQxkD,EACrD,MACF,KAAK,GAGCujD,EAAa/J,SAASgL,GAAQhL,SAAS7tF,KAAKjB,GAAKs1C,EAAKt1C,GACtD64F,EAAa/J,SAASgL,GAAQhL,SAAS7tF,KAAKhB,GAAKq1C,EAAKr1C,GACxDq1C,EAAKt1C,GAAK7N,KAAKiB,SACfkiD,EAAKr1C,GAAK9N,KAAKiB,WAGfzF,KAAK2rG,aAAaT,EAAa/J,SAASgL,IACxCnsG,KAAK4rG,aAAaV,EAAa/J,SAASgL,GAAQxkD,GAElD,MACF,KAAK,GACH3nD,KAAK4rG,aAAaV,EAAa/J,SAASgL,GAAQxkD,KAatD/nD,EAAQ+rG,aAAe,SAAST,GAE9B,GAAIkB,GAAgB,IACc,IAA9BlB,EAAaC,gBACfiB,EAAgBlB,EAAa/J,SAAS7tF,KACtC43F,EAAa9sD,KAAO,EAAG8sD,EAAaE,aAAa/4F,EAAI,EAAG64F,EAAaE,aAAa94F,EAAI,GAExF44F,EAAaC,cAAgB,EAC7BD,EAAa/J,SAAS7tF,KAAO,KAC7BtT,KAAKqsG,cAAcnB,EAAa,MAChClrG,KAAKqsG,cAAcnB,EAAa,MAChClrG,KAAKqsG,cAAcnB,EAAa,MAChClrG,KAAKqsG,cAAcnB,EAAa,MAEX,MAAjBkB,GACFpsG,KAAK4rG,aAAaV,EAAakB,IAenCxsG,EAAQysG,cAAgB,SAASnB,EAAciB,GAC7C,GAAIrkD,GAAKC,EAAKH,EAAKC,EACfykD,EAAY,GAAMpB,EAAat4F,IACnC,QAAQu5F,GACN,IAAK,KACHrkD,EAAOojD,EAAa/0E,MAAM2xB,KAC1BC,EAAOmjD,EAAa/0E,MAAM2xB,KAAOwkD,EACjC1kD,EAAOsjD,EAAa/0E,MAAMyxB,KAC1BC,EAAOqjD,EAAa/0E,MAAMyxB,KAAO0kD,CACjC,MACF,KAAK,KACHxkD,EAAOojD,EAAa/0E,MAAM2xB,KAAOwkD,EACjCvkD,EAAOmjD,EAAa/0E,MAAM4xB,KAC1BH,EAAOsjD,EAAa/0E,MAAMyxB,KAC1BC,EAAOqjD,EAAa/0E,MAAMyxB,KAAO0kD,CACjC,MACF,KAAK,KACHxkD,EAAOojD,EAAa/0E,MAAM2xB,KAC1BC,EAAOmjD,EAAa/0E,MAAM2xB,KAAOwkD,EACjC1kD,EAAOsjD,EAAa/0E,MAAMyxB,KAAO0kD,EACjCzkD,EAAOqjD,EAAa/0E,MAAM0xB,IAC1B,MACF,KAAK,KACHC,EAAOojD,EAAa/0E,MAAM2xB,KAAOwkD,EACjCvkD,EAAOmjD,EAAa/0E,MAAM4xB,KAC1BH,EAAOsjD,EAAa/0E,MAAMyxB,KAAO0kD,EACjCzkD,EAAOqjD,EAAa/0E,MAAM0xB,KAK9BqjD,EAAa/J,SAASgL,IACpBf,cAAc/4F,EAAE,EAAEC,EAAE,GACpB8rC,KAAK,EACLjoB,OAAO2xB,KAAKA,EAAKC,KAAKA,EAAKH,KAAKA,EAAKC,KAAKA,GAC1Cj1C,KAAM,GAAMs4F,EAAat4F,KACzBy4F,SAAU,EAAIH,EAAaG,SAC3BlK,UAAW7tF,KAAK,MAChB20B,SAAU,EACVmX,MAAO8rD,EAAa9rD,MAAM,EAC1B+rD,cAAe,IAYnBvrG,EAAQ2sG,UAAY,SAAS3kF,EAAIxc,GACJvE,SAAvB7G,KAAK47F,gBAEPh0E,EAAIO,UAAY,EAEhBnoB,KAAKwsG,YAAYxsG,KAAK47F,cAAcl8F,KAAKkoB,EAAIxc,KAajDxL,EAAQ4sG,YAAc,SAASC,EAAO7kF,EAAIxc,GAC1BvE,SAAVuE,IACFA,EAAQ,WAGkB,GAAxBqhG,EAAOtB,gBACTnrG,KAAKwsG,YAAYC,EAAOtL,SAAS2J,GAAGljF,GACpC5nB,KAAKwsG,YAAYC,EAAOtL,SAAS4J,GAAGnjF,GACpC5nB,KAAKwsG,YAAYC,EAAOtL,SAAS8J,GAAGrjF,GACpC5nB,KAAKwsG,YAAYC,EAAOtL,SAAS6J,GAAGpjF,IAEtCA,EAAIY,YAAcpd,EAClBwc,EAAIa,YACJb,EAAIc,OAAO+jF,EAAOt2E,MAAM2xB,KAAK2kD,EAAOt2E,MAAMyxB,MAC1ChgC,EAAIe,OAAO8jF,EAAOt2E,MAAM4xB,KAAK0kD,EAAOt2E,MAAMyxB,MAC1ChgC,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAO+jF,EAAOt2E,MAAM4xB,KAAK0kD,EAAOt2E,MAAMyxB,MAC1ChgC,EAAIe,OAAO8jF,EAAOt2E,MAAM4xB,KAAK0kD,EAAOt2E,MAAM0xB,MAC1CjgC,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAO+jF,EAAOt2E,MAAM4xB,KAAK0kD,EAAOt2E,MAAM0xB,MAC1CjgC,EAAIe,OAAO8jF,EAAOt2E,MAAM2xB,KAAK2kD,EAAOt2E,MAAM0xB,MAC1CjgC,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAO+jF,EAAOt2E,MAAM2xB,KAAK2kD,EAAOt2E,MAAM0xB,MAC1CjgC,EAAIe,OAAO8jF,EAAOt2E,MAAM2xB,KAAK2kD,EAAOt2E,MAAMyxB,MAC1ChgC,EAAIlH,WAaF,SAAS7gB,GAEbA,EAAOD,QAAU,SAASC,GAQzB,MAPIA,GAAO6sG,kBACV7sG,EAAO6gF,UAAY,aACnB7gF,EAAO8sG,SAEP9sG,EAAOshG,YACPthG,EAAO6sG,gBAAkB,GAEnB7sG"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index a17f6851..0166401d 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -23,17 +23,17 @@ * Vis.js may be distributed under either license. */ "use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var M=this.yLabel;M.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(M,o.x,o.y));var D=this.zLabel;D.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(D,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+M.x/D/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[]; +if(i=t.get(),0!=i.length){this.dataSet=t,this.dataTable=i,this._onChange=function(){e.setData(e.dataSet)},this.dataSet.on("*",this._onChange),this.colX="x",this.colY="y",this.colZ="z",this.colValue="style",this.colFilter="filter",i[0].hasOwnProperty("filter")&&void 0===this.dataFilter&&(this.dataFilter=new u(t,this.colFilter,this),this.dataFilter.setOnLoadCallback(function(){e.redraw()}));var o=this.style==s.STYLE.BAR||this.style==s.STYLE.BARCOLOR||this.style==s.STYLE.BARSIZE;if(o){if(void 0!==this.defaultXBarWidth)this.xBarWidth=this.defaultXBarWidth;else{var n=this.getDistinctValues(i,this.colX);this.xBarWidth=n[1]-n[0]||1}if(void 0!==this.defaultYBarWidth)this.yBarWidth=this.defaultYBarWidth;else{var r=this.getDistinctValues(i,this.colY);this.yBarWidth=r[1]-r[0]||1}}var d=this.getColumnRange(i,this.colX);o&&(d.min-=this.xBarWidth/2,d.max+=this.xBarWidth/2),this.xMin=void 0!==this.defaultXMin?this.defaultXMin:d.min,this.xMax=void 0!==this.defaultXMax?this.defaultXMax:d.max,this.xMax<=this.xMin&&(this.xMax=this.xMin+1),this.xStep=void 0!==this.defaultXStep?this.defaultXStep:(this.xMax-this.xMin)/5;var l=this.getColumnRange(i,this.colY);o&&(l.min-=this.yBarWidth/2,l.max+=this.yBarWidth/2),this.yMin=void 0!==this.defaultYMin?this.defaultYMin:l.min,this.yMax=void 0!==this.defaultYMax?this.defaultYMax:l.max,this.yMax<=this.yMin&&(this.yMax=this.yMin+1),this.yStep=void 0!==this.defaultYStep?this.defaultYStep:(this.yMax-this.yMin)/5;var c=this.getColumnRange(i,this.colZ);if(this.zMin=void 0!==this.defaultZMin?this.defaultZMin:c.min,this.zMax=void 0!==this.defaultZMax?this.defaultZMax:c.max,this.zMax<=this.zMin&&(this.zMax=this.zMin+1),this.zStep=void 0!==this.defaultZStep?this.defaultZStep:(this.zMax-this.zMin)/5,void 0!==this.colValue){var p=this.getColumnRange(i,this.colValue);this.valueMin=void 0!==this.defaultValueMin?this.defaultValueMin:p.min,this.valueMax=void 0!==this.defaultValueMax?this.defaultValueMax:p.max,this.valueMax<=this.valueMin&&(this.valueMax=this.valueMin+1)}this._setScale()}}},s.prototype._getDataPoints=function(t){var e,i,o,n,r,a,h=[];if(this.style===s.STYLE.GRID||this.style===s.STYLE.SURFACE){var d=[],c=[];for(o=0;ot;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var D=this.yLabel;D.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(D,o.x,o.y));var M=this.zLabel;M.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(M,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+D.x/M/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[]; var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step); break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?o>0?Math.max(-s,0):-e:0>s?Math.min(-s,o-s-e-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n) -}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l=this.body.util.getScale(),c=this.body.util.getStep(),p={start:i?i(d,l,c):d,content:"new item"};if("range"===this.options.type){var u=this.body.util.toTime(h+this.props.width/5);p.end=i?i(u,l,c):u}p[this.itemsData._fieldId]=n.randomUUID();var m=this.groupFromTarget(t);m&&(p.group=m.groupId),this.options.onAdd(p,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start) -}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture.center.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486; -var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset() -},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=S.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=S.DELIMITER);var i=E+n();if(C[i])return N=S.DELIMITER,k=i,o(),void o();if(C[E])return N=S.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=S.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=S.IDENTIFIER)}for(N=S.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==S.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=S.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=S.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==S.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=S.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=S.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=S.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function M(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),M(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var S={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=S.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",M=t.length,D=0;M-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=M>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Si===!1&&(Si=!0,Ce.updateOffset(this),Si=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week -}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Mi={},Di=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Si=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=D(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Di.length-1;Oe>=0;--Oe)I(Di[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Me(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Me(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&De(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function S(t,e){return new S.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1 -},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return M.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||M.matchType(u,s)?o=u:M.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},M=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing"); -var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l=this.body.util.getScale(),c=this.body.util.getStep(),p={start:i?i(d,l,c):d,content:"new item"};if("range"===this.options.type){var u=this.body.util.toTime(h+this.props.width/5);p.end=i?i(u,l,c):u}p[this.itemsData._fieldId]=n.randomUUID();var m=this.groupFromTarget(t);m&&(p.group=m.groupId),this.options.onAdd(p,function(t){t&&e.itemsData.getDataSet().add(t) +})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture.center.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage; +break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=S.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=S.DELIMITER);var i=E+n();if(C[i])return N=S.DELIMITER,k=i,o(),void o();if(C[E])return N=S.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=S.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=S.IDENTIFIER)}for(N=S.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==S.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=S.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=S.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==S.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=S.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=S.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=S.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),D(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var S={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=S.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=M},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",D=t.length,M=0;D-1>M;M++)s=0==M?t[0]:t[M-1],o=t[M],n=t[M+1],r=D>M+2?t[M+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;os;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(M,d),a&&(d.changedLength=h,d.eventType=a,s.call(M,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(M,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return D.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||D.matchType(u,s)?o=u:D.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return M.stopDetect()}}}},D=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},M=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?M.startDetect(i,t):t.eventType==_&&M.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=M.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=M.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=M.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=M.current,h=M.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Ie.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Ce.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return b(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){Di[t]||(d(e),Di[t]=!0)}function p(t,e){return function(i){return w(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function m(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Si===!1&&(Si=!0,Ce.updateOffset(this),Si=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Di={},Mi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Si=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o; +return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=M(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Mi.length-1;Oe>=0;--Oe)I(Mi[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(De(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(De(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Me(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); +var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/docs/timeline.html b/docs/timeline.html index 8bfa691b..83addbe2 100644 --- a/docs/timeline.html +++ b/docs/timeline.html @@ -1170,8 +1170,16 @@ timeline.off('select', onSelect);

Editing Items

- When the Timeline is configured to be editable (both options selectable and editable are true), the user can move items by dragging them, can create a new item by double tapping on an empty space, can update an item by double tapping it, and can delete a selected item by clicking the delete button on the top right. + When the Timeline is configured to be editable (both options selectable and editable are true), the user can:

+
    +
  • Select an item by clicking it, and use ctrl+click to or shift+click to select multiple items
  • +
  • Move selected items by dragging them.
  • +
  • Create a new item by double tapping on an empty space.
  • +
  • Create a new range item by dragging on an empty space with the ctrl key down.
  • +
  • Update an item by double tapping it.
  • +
  • Delete a selected item by clicking the delete button on the top right.
  • +

Option editable accepts a boolean or an object. When editable is a boolean, all manipulation actions will be either enabled or disabled. When editable is an object, one can enable individual manipulation actions:

diff --git a/examples/timeline/08_edit_items.html b/examples/timeline/08_edit_items.html index 9948098b..b8213586 100644 --- a/examples/timeline/08_edit_items.html +++ b/examples/timeline/08_edit_items.html @@ -64,6 +64,7 @@ onMoving: function (item, callback) { if (item.start < min) item.start = min; if (item.start > max) item.start = max; + if (item.end > max) item.end = max; callback(item); // send back the (possibly) changed item }, diff --git a/lib/timeline/component/ItemSet.js b/lib/timeline/component/ItemSet.js index 571e87ea..9ba5adb6 100644 --- a/lib/timeline/component/ItemSet.js +++ b/lib/timeline/component/ItemSet.js @@ -1162,6 +1162,54 @@ ItemSet.prototype._onDragStart = function (event) { event.stopPropagation(); } + else if (this.options.editable.add && event.gesture.srcEvent.ctrlKey) { + // create a new range item when dragging with ctrl key down + this._onDragStartAddItem(event); + } +}; + +/** + * Start creating a new range item by dragging. + * @param {Event} event + * @private + */ +ItemSet.prototype._onDragStartAddItem = function (event) { + var snap = this.options.snap || null; + var xAbs = util.getAbsoluteLeft(this.dom.frame); + var x = event.gesture.center.pageX - xAbs - 10; // minus 10 to compensate for the drag starting as soon as you've moved 10px + var time = this.body.util.toTime(x); + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); + var start = snap ? snap(time, scale, step) : start; + var end = start; + + var itemData = { + type: 'range', + start: start, + end: end, + content: 'new item' + }; + + var id = util.randomUUID(); + itemData[this.itemsData._fieldId] = id; + + var group = this.groupFromTarget(event); + if (group) { + itemData.group = group.groupId; + } + + var newItem = new RangeItem(itemData, this.conversion, this.options); + newItem.id = id; // TODO: not so nice setting id afterwards + this._addItem(newItem); + + var props = { + item: newItem, + end: end.valueOf(), + initialX: event.gesture.center.clientX + }; + this.touchParams.itemProps = [props]; + + event.stopPropagation(); }; /** @@ -1272,49 +1320,65 @@ ItemSet.prototype._onDragEnd = function (event) { if (this.touchParams.itemProps) { // prepare a change set for the changed items - var changes = [], - me = this, - dataset = this.itemsData.getDataSet(); + var changes = []; + var me = this; + var dataset = this.itemsData.getDataSet(); var itemProps = this.touchParams.itemProps ; this.touchParams.itemProps = null; itemProps.forEach(function (props) { - var id = props.item.id, - itemData = me.itemsData.get(id, me.itemOptions); - - var changed = false; - if ('start' in props.item.data) { - changed = (props.start != props.item.data.start.valueOf()); - itemData.start = util.convert(props.item.data.start, - dataset._options.type && dataset._options.type.start || 'Date'); - } - if ('end' in props.item.data) { - changed = changed || (props.end != props.item.data.end.valueOf()); - itemData.end = util.convert(props.item.data.end, - dataset._options.type && dataset._options.type.end || 'Date'); - } - if ('group' in props.item.data) { - changed = changed || (props.group != props.item.data.group); - itemData.group = props.item.data.group; - } + var id = props.item.id; + var itemData = me.itemsData.get(id, me.itemOptions); - // only apply changes when start or end is actually changed - if (changed) { - me.options.onMove(itemData, function (itemData) { + if (!itemData) { + // add a new item + me.options.onAdd(props.item.data, function (itemData) { + me._removeItem(props.item); // remove temporary item if (itemData) { - // apply changes - itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) - changes.push(itemData); + me.itemsData.getDataSet().add(itemData); } - else { - // restore original values - me._updateItemProps(props.item, props); - me.stackDirty = true; // force re-stacking of all items next redraw - me.body.emitter.emit('change'); - } + // force re-stacking of all items next redraw + me.stackDirty = true; + me.body.emitter.emit('change'); }); } + else { + // update existing item + var changed = false; + if ('start' in props.item.data) { + changed = (props.start != props.item.data.start.valueOf()); + itemData.start = util.convert(props.item.data.start, + dataset._options.type && dataset._options.type.start || 'Date'); + } + if ('end' in props.item.data) { + changed = changed || (props.end != props.item.data.end.valueOf()); + itemData.end = util.convert(props.item.data.end, + dataset._options.type && dataset._options.type.end || 'Date'); + } + if ('group' in props.item.data) { + changed = changed || (props.group != props.item.data.group); + itemData.group = props.item.data.group; + } + + // only apply changes when start or end is actually changed + if (changed) { + me.options.onMove(itemData, function (itemData) { + if (itemData) { + // apply changes + itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) + changes.push(itemData); + } + else { + // restore original values + me._updateItemProps(props.item, props); + + me.stackDirty = true; // force re-stacking of all items next redraw + me.body.emitter.emit('change'); + } + }); + } + } }); // apply the changes to the data (if there are changes) From 3e9b7ff06ce46b04523dbceb2a05ee3c9e48ed16 Mon Sep 17 00:00:00 2001 From: jos Date: Wed, 4 Mar 2015 09:26:08 +0100 Subject: [PATCH 08/43] Added a file CONTRIBUTING.md --- CONTRIBUTING.md | 16 + dist/vis.js | 50971 +++++++++++----------- examples/timeline/35_item_ordering.html | 78 + examples/timeline/index.html | 1 + lib/timeline/Core.js | 5 - lib/timeline/component/Group.js | 26 +- lib/timeline/component/ItemSet.js | 2 +- 7 files changed, 25616 insertions(+), 25483 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 examples/timeline/35_item_ordering.html diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..bb81dda8 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,16 @@ +## Contributing + +Contributions to the vis.js library are very welcome! We can't do this alone. +You can contribute in different ways: spread the word, report bugs, come up with +ideas and suggestions, and contribute to the code. + +There are a few preferences regarding code contributions: + +- vis.js follows the node.js code style as described + [here](http://nodeguide.com/style.html). +- When implementing new features, please update the documentation accordingly. +- Send pull requests to the `develop` branch, not the `master` branch. +- Only commit changes done in the source files under `lib`, not to the builds + which are located in the folder `dist`. + +Thanks! diff --git a/dist/vis.js b/dist/vis.js index 6f95c67e..f496689b 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -83,67 +83,67 @@ return /******/ (function(modules) { // webpackBootstrap // utils exports.util = __webpack_require__(1); - exports.DOMutil = __webpack_require__(2); + exports.DOMutil = __webpack_require__(6); // data - exports.DataSet = __webpack_require__(3); - exports.DataView = __webpack_require__(4); - exports.Queue = __webpack_require__(5); + exports.DataSet = __webpack_require__(7); + exports.DataView = __webpack_require__(9); + exports.Queue = __webpack_require__(8); // Graph3d - exports.Graph3d = __webpack_require__(6); + exports.Graph3d = __webpack_require__(10); exports.graph3d = { - Camera: __webpack_require__(7), - Filter: __webpack_require__(8), - Point2d: __webpack_require__(9), - Point3d: __webpack_require__(10), - Slider: __webpack_require__(11), - StepNumber: __webpack_require__(12) + Camera: __webpack_require__(14), + Filter: __webpack_require__(15), + Point2d: __webpack_require__(13), + Point3d: __webpack_require__(12), + Slider: __webpack_require__(16), + StepNumber: __webpack_require__(17) }; // Timeline - exports.Timeline = __webpack_require__(13); - exports.Graph2d = __webpack_require__(14); + exports.Timeline = __webpack_require__(18); + exports.Graph2d = __webpack_require__(41); exports.timeline = { - DateUtil: __webpack_require__(15), - DataStep: __webpack_require__(16), - Range: __webpack_require__(17), - stack: __webpack_require__(18), - TimeStep: __webpack_require__(19), + DateUtil: __webpack_require__(24), + DataStep: __webpack_require__(44), + Range: __webpack_require__(21), + stack: __webpack_require__(50), + TimeStep: __webpack_require__(27), components: { items: { - Item: __webpack_require__(20), - BackgroundItem: __webpack_require__(21), - BoxItem: __webpack_require__(22), - PointItem: __webpack_require__(23), - RangeItem: __webpack_require__(24) + Item: __webpack_require__(31), + BackgroundItem: __webpack_require__(34), + BoxItem: __webpack_require__(30), + PointItem: __webpack_require__(32), + RangeItem: __webpack_require__(33) }, - Component: __webpack_require__(25), - CurrentTime: __webpack_require__(26), - CustomTime: __webpack_require__(27), - DataAxis: __webpack_require__(28), - GraphGroup: __webpack_require__(29), - Group: __webpack_require__(30), - BackgroundGroup: __webpack_require__(31), - ItemSet: __webpack_require__(32), - Legend: __webpack_require__(33), - LineGraph: __webpack_require__(34), + Component: __webpack_require__(23), + CurrentTime: __webpack_require__(40), + CustomTime: __webpack_require__(38), + DataAxis: __webpack_require__(43), + GraphGroup: __webpack_require__(45), + Group: __webpack_require__(28), + BackgroundGroup: __webpack_require__(29), + ItemSet: __webpack_require__(26), + Legend: __webpack_require__(49), + LineGraph: __webpack_require__(42), TimeAxis: __webpack_require__(35) } }; // Network - exports.Network = __webpack_require__(36); + exports.Network = __webpack_require__(51); exports.network = { - Edge: __webpack_require__(37), - Groups: __webpack_require__(38), - Images: __webpack_require__(39), - Node: __webpack_require__(40), - Popup: __webpack_require__(41), - dotparser: __webpack_require__(42), - gephiParser: __webpack_require__(43) + Edge: __webpack_require__(57), + Groups: __webpack_require__(54), + Images: __webpack_require__(55), + Node: __webpack_require__(56), + Popup: __webpack_require__(58), + dotparser: __webpack_require__(52), + gephiParser: __webpack_require__(53) }; // Deprecated since v3.0.0 @@ -152,8 +152,8 @@ return /******/ (function(modules) { // webpackBootstrap }; // bundled external libraries - exports.moment = __webpack_require__(44); - exports.hammer = __webpack_require__(45); + exports.moment = __webpack_require__(2); + exports.hammer = __webpack_require__(19); /***/ }, @@ -164,7 +164,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - var moment = __webpack_require__(44); + var moment = __webpack_require__(2); /** * Test whether given object is a number @@ -1438,29120 +1438,29575 @@ return /******/ (function(modules) { // webpackBootstrap /* 2 */ /***/ function(module, exports, __webpack_require__) { - // DOM utility methods - - /** - * this prepares the JSON container for allocating SVG elements - * @param JSONcontainer - * @private - */ - exports.prepareElements = function(JSONcontainer) { - // cleanup the redundant svgElements; - for (var elementType in JSONcontainer) { - if (JSONcontainer.hasOwnProperty(elementType)) { - JSONcontainer[elementType].redundant = JSONcontainer[elementType].used; - JSONcontainer[elementType].used = []; - } - } - }; - - /** - * this cleans up all the unused SVG elements. By asking for the parentNode, we only need to supply the JSON container from - * which to remove the redundant elements. - * - * @param JSONcontainer - * @private - */ - exports.cleanupElements = function(JSONcontainer) { - // cleanup the redundant svgElements; - for (var elementType in JSONcontainer) { - if (JSONcontainer.hasOwnProperty(elementType)) { - if (JSONcontainer[elementType].redundant) { - for (var i = 0; i < JSONcontainer[elementType].redundant.length; i++) { - JSONcontainer[elementType].redundant[i].parentNode.removeChild(JSONcontainer[elementType].redundant[i]); - } - JSONcontainer[elementType].redundant = []; - } - } - } - }; - - /** - * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer - * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. - * - * @param elementType - * @param JSONcontainer - * @param svgContainer - * @returns {*} - * @private - */ - exports.getSVGElement = function (elementType, JSONcontainer, svgContainer) { - var element; - // allocate SVG element, if it doesnt yet exist, create one. - if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before - // check if there is an redundant element - if (JSONcontainer[elementType].redundant.length > 0) { - element = JSONcontainer[elementType].redundant[0]; - JSONcontainer[elementType].redundant.shift(); - } - else { - // create a new element and add it to the SVG - element = document.createElementNS('http://www.w3.org/2000/svg', elementType); - svgContainer.appendChild(element); - } - } - else { - // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. - element = document.createElementNS('http://www.w3.org/2000/svg', elementType); - JSONcontainer[elementType] = {used: [], redundant: []}; - svgContainer.appendChild(element); - } - JSONcontainer[elementType].used.push(element); - return element; - }; - - - /** - * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer - * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. - * - * @param elementType - * @param JSONcontainer - * @param DOMContainer - * @returns {*} - * @private - */ - exports.getDOMElement = function (elementType, JSONcontainer, DOMContainer, insertBefore) { - var element; - // allocate DOM element, if it doesnt yet exist, create one. - if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before - // check if there is an redundant element - if (JSONcontainer[elementType].redundant.length > 0) { - element = JSONcontainer[elementType].redundant[0]; - JSONcontainer[elementType].redundant.shift(); - } - else { - // create a new element and add it to the SVG - element = document.createElement(elementType); - if (insertBefore !== undefined) { - DOMContainer.insertBefore(element, insertBefore); - } - else { - DOMContainer.appendChild(element); - } - } - } - else { - // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. - element = document.createElement(elementType); - JSONcontainer[elementType] = {used: [], redundant: []}; - if (insertBefore !== undefined) { - DOMContainer.insertBefore(element, insertBefore); - } - else { - DOMContainer.appendChild(element); - } - } - JSONcontainer[elementType].used.push(element); - return element; - }; - - - - - /** - * draw a point object. this is a seperate function because it can also be called by the legend. - * The reason the JSONcontainer and the target SVG svgContainer have to be supplied is so the legend can use these functions - * as well. - * - * @param x - * @param y - * @param group - * @param JSONcontainer - * @param svgContainer - * @param labelObj - * @returns {*} - */ - exports.drawPoint = function(x, y, group, JSONcontainer, svgContainer, labelObj) { - var point; - if (group.options.drawPoints.style == 'circle') { - point = exports.getSVGElement('circle',JSONcontainer,svgContainer); - point.setAttributeNS(null, "cx", x); - point.setAttributeNS(null, "cy", y); - point.setAttributeNS(null, "r", 0.5 * group.options.drawPoints.size); - } - else { - point = exports.getSVGElement('rect',JSONcontainer,svgContainer); - point.setAttributeNS(null, "x", x - 0.5*group.options.drawPoints.size); - point.setAttributeNS(null, "y", y - 0.5*group.options.drawPoints.size); - point.setAttributeNS(null, "width", group.options.drawPoints.size); - point.setAttributeNS(null, "height", group.options.drawPoints.size); - } - - if(group.options.drawPoints.styles !== undefined) { - point.setAttributeNS(null, "style", group.group.options.drawPoints.styles); - } - point.setAttributeNS(null, "class", group.className + " point"); - //handle label - var label = exports.getSVGElement('text',JSONcontainer,svgContainer); - if (labelObj){ - if (labelObj.xOffset) { - x = x + labelObj.xOffset; - } - - if (labelObj.yOffset) { - y = y + labelObj.yOffset; - } - if (labelObj.content) { - label.textContent = labelObj.content; - } - - if (labelObj.className) { - label.setAttributeNS(null, "class", labelObj.className + " label"); - } - - - } - label.setAttributeNS(null, "x", x); - label.setAttributeNS(null, "y", y); - return point; - }; + // first check if moment.js is already loaded in the browser window, if so, + // use this instance. Else, load via commonjs. + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(3); - /** - * draw a bar SVG element centered on the X coordinate - * - * @param x - * @param y - * @param className - */ - exports.drawBar = function (x, y, width, height, className, JSONcontainer, svgContainer) { - if (height != 0) { - if (height < 0) { - height *= -1; - y -= height; - } - var rect = exports.getSVGElement('rect',JSONcontainer, svgContainer); - rect.setAttributeNS(null, "x", x - 0.5 * width); - rect.setAttributeNS(null, "y", y); - rect.setAttributeNS(null, "width", width); - rect.setAttributeNS(null, "height", height); - rect.setAttributeNS(null, "class", className); - } - }; /***/ }, /* 3 */ /***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(1); - var Queue = __webpack_require__(5); - - /** - * DataSet - * - * Usage: - * var dataSet = new DataSet({ - * fieldId: '_id', - * type: { - * // ... - * } - * }); - * - * dataSet.add(item); - * dataSet.add(data); - * dataSet.update(item); - * dataSet.update(data); - * dataSet.remove(id); - * dataSet.remove(ids); - * var data = dataSet.get(); - * var data = dataSet.get(id); - * var data = dataSet.get(ids); - * var data = dataSet.get(ids, options, data); - * dataSet.clear(); - * - * A data set can: - * - add/remove/update data - * - gives triggers upon changes in the data - * - can import/export data in various data formats - * - * @param {Array | DataTable} [data] Optional array with initial data - * @param {Object} [options] Available options: - * {String} fieldId Field name of the id in the - * items, 'id' by default. - * {Object.} [type] - * {String[]} [fields] field names to be returned - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * {Array | DataTable} [data] If provided, items will be appended to this - * array or table. Required in case of Google - * DataTable. - * - * @throws Error - */ - DataSet.prototype.get = function (args) { - var me = this; - - // parse the arguments - var id, ids, options, data; - var firstType = util.getType(arguments[0]); - if (firstType == 'String' || firstType == 'Number') { - // get(id [, options] [, data]) - id = arguments[0]; - options = arguments[1]; - data = arguments[2]; - } - else if (firstType == 'Array') { - // get(ids [, options] [, data]) - ids = arguments[0]; - options = arguments[1]; - data = arguments[2]; - } - else { - // get([, options] [, data]) - options = arguments[0]; - data = arguments[1]; - } - - // determine the return type - var returnType; - if (options && options.returnType) { - var allowedValues = ["DataTable", "Array", "Object"]; - returnType = allowedValues.indexOf(options.returnType) == -1 ? "Array" : options.returnType; - - if (data && (returnType != util.getType(data))) { - throw new Error('Type of parameter "data" (' + util.getType(data) + ') ' + - 'does not correspond with specified options.type (' + options.type + ')'); - } - if (returnType == 'DataTable' && !util.isDataTable(data)) { - throw new Error('Parameter "data" must be a DataTable ' + - 'when options.type is "DataTable"'); - } - } - else if (data) { - returnType = (util.getType(data) == 'DataTable') ? 'DataTable' : 'Array'; - } - else { - returnType = 'Array'; - } - - // build options - var type = options && options.type || this._options.type; - var filter = options && options.filter; - var items = [], item, itemId, i, len; - - // convert items - if (id != undefined) { - // return a single item - item = me._getItem(id, type); - if (filter && !filter(item)) { - item = null; - } - } - else if (ids != undefined) { - // return a subset of items - for (i = 0, len = ids.length; i < len; i++) { - item = me._getItem(ids[i], type); - if (!filter || filter(item)) { - items.push(item); - } - } - } - else { - // return all items - for (itemId in this._data) { - if (this._data.hasOwnProperty(itemId)) { - item = me._getItem(itemId, type); - if (!filter || filter(item)) { - items.push(item); - } - } - } - } - - // order the results - if (options && options.order && id == undefined) { - this._sort(items, options.order); - } - - // filter fields of the items - if (options && options.fields) { - var fields = options.fields; - if (id != undefined) { - item = this._filterFields(item, fields); - } - else { - for (i = 0, len = items.length; i < len; i++) { - items[i] = this._filterFields(items[i], fields); - } - } - } - - // return the results - if (returnType == 'DataTable') { - var columns = this._getColumnNames(data); - if (id != undefined) { - // append a single item to the data table - me._appendRow(data, columns, item); - } - else { - // copy the items to the provided data table - for (i = 0; i < items.length; i++) { - me._appendRow(data, columns, items[i]); - } - } - return data; - } - else if (returnType == "Object") { - var result = {}; - for (i = 0; i < items.length; i++) { - result[items[i].id] = items[i]; - } - return result; - } - else { - // return an array - if (id != undefined) { - // a single item - return item; - } - else { - // multiple items - if (data) { - // copy the items to the provided array - for (i = 0, len = items.length; i < len; i++) { - data.push(items[i]); - } - return data; - } - else { - // just return our array - return items; - } - } - } - }; - - /** - * Get ids of all items or from a filtered set of items. - * @param {Object} [options] An Object with options. Available options: - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * @return {Array} ids - */ - DataSet.prototype.getIds = function (options) { - var data = this._data, - filter = options && options.filter, - order = options && options.order, - type = options && options.type || this._options.type, - i, - len, - id, - item, - items, - ids = []; - - if (filter) { - // get filtered items - if (order) { - // create ordered list - items = []; - for (id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (filter(item)) { - items.push(item); - } - } - } - - this._sort(items, order); - - for (i = 0, len = items.length; i < len; i++) { - ids[i] = items[i][this._fieldId]; - } - } - else { - // create unordered list - for (id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (filter(item)) { - ids.push(item[this._fieldId]); - } - } - } - } - } - else { - // get all items - if (order) { - // create an ordered list - items = []; - for (id in data) { - if (data.hasOwnProperty(id)) { - items.push(data[id]); - } - } - - this._sort(items, order); - - for (i = 0, len = items.length; i < len; i++) { - ids[i] = items[i][this._fieldId]; - } - } - else { - // create unordered list - for (id in data) { - if (data.hasOwnProperty(id)) { - item = data[id]; - ids.push(item[this._fieldId]); - } - } - } - } - - return ids; - }; - - /** - * Returns the DataSet itself. Is overwritten for example by the DataView, - * which returns the DataSet it is connected to instead. - */ - DataSet.prototype.getDataSet = function () { - return this; - }; - - /** - * Execute a callback function for every item in the dataset. - * @param {function} callback - * @param {Object} [options] Available options: - * {Object.} [type] - * {String[]} [fields] filter fields - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - */ - DataSet.prototype.forEach = function (callback, options) { - var filter = options && options.filter, - type = options && options.type || this._options.type, - data = this._data, - item, - id; - - if (options && options.order) { - // execute forEach on ordered list - var items = this.get(options); - - for (var i = 0, len = items.length; i < len; i++) { - item = items[i]; - id = item[this._fieldId]; - callback(item, id); - } - } - else { - // unordered - for (id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (!filter || filter(item)) { - callback(item, id); - } - } - } - } - }; - - /** - * Map every item in the dataset. - * @param {function} callback - * @param {Object} [options] Available options: - * {Object.} [type] - * {String[]} [fields] filter fields - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * @return {Object[]} mappedItems - */ - DataSet.prototype.map = function (callback, options) { - var filter = options && options.filter, - type = options && options.type || this._options.type, - mappedItems = [], - data = this._data, - item; - - // convert and filter items - for (var id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (!filter || filter(item)) { - mappedItems.push(callback(item, id)); - } - } - } - - // order items - if (options && options.order) { - this._sort(mappedItems, options.order); - } - - return mappedItems; - }; - - /** - * Filter the fields of an item - * @param {Object | null} item - * @param {String[]} fields Field names - * @return {Object | null} filteredItem or null if no item is provided - * @private - */ - DataSet.prototype._filterFields = function (item, fields) { - if (!item) { // item is null - return item; - } - - var filteredItem = {}; - - for (var field in item) { - if (item.hasOwnProperty(field) && (fields.indexOf(field) != -1)) { - filteredItem[field] = item[field]; - } - } - - return filteredItem; - }; - - /** - * Sort the provided array with items - * @param {Object[]} items - * @param {String | function} order A field name or custom sort function. - * @private - */ - DataSet.prototype._sort = function (items, order) { - if (util.isString(order)) { - // order by provided field name - var name = order; // field name - items.sort(function (a, b) { - var av = a[name]; - var bv = b[name]; - return (av > bv) ? 1 : ((av < bv) ? -1 : 0); - }); - } - else if (typeof order === 'function') { - // order by sort function - items.sort(order); - } - // TODO: extend order by an Object {field:String, direction:String} - // where direction can be 'asc' or 'desc' - else { - throw new TypeError('Order must be a function or a string'); - } - }; - - /** - * Remove an object by pointer or by id - * @param {String | Number | Object | Array} id Object or id, or an array with - * objects or ids to be removed - * @param {String} [senderId] Optional sender id - * @return {Array} removedIds - */ - DataSet.prototype.remove = function (id, senderId) { - var removedIds = [], - i, len, removedId; - - if (Array.isArray(id)) { - for (i = 0, len = id.length; i < len; i++) { - removedId = this._remove(id[i]); - if (removedId != null) { - removedIds.push(removedId); - } - } - } - else { - removedId = this._remove(id); - if (removedId != null) { - removedIds.push(removedId); - } - } - - if (removedIds.length) { - this._trigger('remove', {items: removedIds}, senderId); - } - - return removedIds; - }; - - /** - * Remove an item by its id - * @param {Number | String | Object} id id or item - * @returns {Number | String | null} id - * @private - */ - DataSet.prototype._remove = function (id) { - if (util.isNumber(id) || util.isString(id)) { - if (this._data[id]) { - delete this._data[id]; - this.length--; - return id; - } - } - else if (id instanceof Object) { - var itemId = id[this._fieldId]; - if (itemId && this._data[itemId]) { - delete this._data[itemId]; - this.length--; - return itemId; - } - } - return null; - }; - - /** - * Clear the data - * @param {String} [senderId] Optional sender id - * @return {Array} removedIds The ids of all removed items - */ - DataSet.prototype.clear = function (senderId) { - var ids = Object.keys(this._data); - - this._data = {}; - this.length = 0; - - this._trigger('remove', {items: ids}, senderId); - - return ids; - }; - - /** - * Find the item with maximum value of a specified field - * @param {String} field - * @return {Object | null} item Item containing max value, or null if no items - */ - DataSet.prototype.max = function (field) { - var data = this._data, - max = null, - maxField = null; - - for (var id in data) { - if (data.hasOwnProperty(id)) { - var item = data[id]; - var itemField = item[field]; - if (itemField != null && (!max || itemField > maxField)) { - max = item; - maxField = itemField; - } - } - } - - return max; - }; - - /** - * Find the item with minimum value of a specified field - * @param {String} field - * @return {Object | null} item Item containing max value, or null if no items - */ - DataSet.prototype.min = function (field) { - var data = this._data, - min = null, - minField = null; - - for (var id in data) { - if (data.hasOwnProperty(id)) { - var item = data[id]; - var itemField = item[field]; - if (itemField != null && (!min || itemField < minField)) { - min = item; - minField = itemField; - } - } - } - - return min; - }; - - /** - * Find all distinct values of a specified field - * @param {String} field - * @return {Array} values Array containing all distinct values. If data items - * do not contain the specified field are ignored. - * The returned array is unordered. - */ - DataSet.prototype.distinct = function (field) { - var data = this._data; - var values = []; - var fieldType = this._options.type && this._options.type[field] || null; - var count = 0; - var i; - - for (var prop in data) { - if (data.hasOwnProperty(prop)) { - var item = data[prop]; - var value = item[field]; - var exists = false; - for (i = 0; i < count; i++) { - if (values[i] == value) { - exists = true; - break; - } - } - if (!exists && (value !== undefined)) { - values[count] = value; - count++; - } - } - } - - if (fieldType) { - for (i = 0; i < values.length; i++) { - values[i] = util.convert(values[i], fieldType); - } - } - - return values; - }; - - /** - * Add a single item. Will fail when an item with the same id already exists. - * @param {Object} item - * @return {String} id - * @private - */ - DataSet.prototype._addItem = function (item) { - var id = item[this._fieldId]; - - if (id != undefined) { - // check whether this id is already taken - if (this._data[id]) { - // item already exists - throw new Error('Cannot add item: item with id ' + id + ' already exists'); - } - } - else { - // generate an id - id = util.randomUUID(); - item[this._fieldId] = id; - } - - var d = {}; - for (var field in item) { - if (item.hasOwnProperty(field)) { - var fieldType = this._type[field]; // type may be undefined - d[field] = util.convert(item[field], fieldType); - } - } - this._data[id] = d; - this.length++; - - return id; - }; - - /** - * Get an item. Fields can be converted to a specific type - * @param {String} id - * @param {Object.} [types] field types to convert - * @return {Object | null} item - * @private - */ - DataSet.prototype._getItem = function (id, types) { - var field, value; - - // get the item from the dataset - var raw = this._data[id]; - if (!raw) { - return null; - } - - // convert the items field types - var converted = {}; - if (types) { - for (field in raw) { - if (raw.hasOwnProperty(field)) { - value = raw[field]; - converted[field] = util.convert(value, types[field]); - } - } - } - else { - // no field types specified, no converting needed - for (field in raw) { - if (raw.hasOwnProperty(field)) { - value = raw[field]; - converted[field] = value; - } - } - } - return converted; - }; - - /** - * Update a single item: merge with existing item. - * Will fail when the item has no id, or when there does not exist an item - * with the same id. - * @param {Object} item - * @return {String} id - * @private - */ - DataSet.prototype._updateItem = function (item) { - var id = item[this._fieldId]; - if (id == undefined) { - throw new Error('Cannot update item: item has no id (item: ' + JSON.stringify(item) + ')'); - } - var d = this._data[id]; - if (!d) { - // item doesn't exist - throw new Error('Cannot update item: no item with id ' + id + ' found'); - } - - // merge with current item - for (var field in item) { - if (item.hasOwnProperty(field)) { - var fieldType = this._type[field]; // type may be undefined - d[field] = util.convert(item[field], fieldType); - } - } - - return id; - }; - - /** - * Get an array with the column names of a Google DataTable - * @param {DataTable} dataTable - * @return {String[]} columnNames - * @private - */ - DataSet.prototype._getColumnNames = function (dataTable) { - var columns = []; - for (var col = 0, cols = dataTable.getNumberOfColumns(); col < cols; col++) { - columns[col] = dataTable.getColumnId(col) || dataTable.getColumnLabel(col); - } - return columns; - }; - - /** - * Append an item as a row to the dataTable - * @param dataTable - * @param columns - * @param item - * @private - */ - DataSet.prototype._appendRow = function (dataTable, columns, item) { - var row = dataTable.addRow(); - - for (var col = 0, cols = columns.length; col < cols; col++) { - var field = columns[col]; - dataTable.setValue(row, col, item[field]); - } - }; - - module.exports = DataSet; - - -/***/ }, -/* 4 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var DataSet = __webpack_require__(3); - - /** - * DataView - * - * a dataview offers a filtered view on a dataset or an other dataview. - * - * @param {DataSet | DataView} data - * @param {Object} [options] Available options: see method get - * - * @constructor DataView - */ - function DataView (data, options) { - this._data = null; - this._ids = {}; // ids of the items currently in memory (just contains a boolean true) - this.length = 0; // number of items in the DataView - this._options = options || {}; - this._fieldId = 'id'; // name of the field containing id - this._subscribers = {}; // event subscribers - - var me = this; - this.listener = function () { - me._onEvent.apply(me, arguments); - }; - - this.setData(data); - } - - // TODO: implement a function .config() to dynamically update things like configured filter - // and trigger changes accordingly - - /** - * Set a data source for the view - * @param {DataSet | DataView} data - */ - DataView.prototype.setData = function (data) { - var ids, i, len; - - if (this._data) { - // unsubscribe from current dataset - if (this._data.unsubscribe) { - this._data.unsubscribe('*', this.listener); - } - - // trigger a remove of all items in memory - ids = []; - for (var id in this._ids) { - if (this._ids.hasOwnProperty(id)) { - ids.push(id); - } - } - this._ids = {}; - this.length = 0; - this._trigger('remove', {items: ids}); - } - - this._data = data; - - if (this._data) { - // update fieldId - this._fieldId = this._options.fieldId || - (this._data && this._data.options && this._data.options.fieldId) || - 'id'; - - // trigger an add of all added items - ids = this._data.getIds({filter: this._options && this._options.filter}); - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - this._ids[id] = true; - } - this.length = ids.length; - this._trigger('add', {items: ids}); - - // subscribe to new dataset - if (this._data.on) { - this._data.on('*', this.listener); - } - } - }; - - /** - * Refresh the DataView. Useful when the DataView has a filter function - * containing a variable parameter. - */ - DataView.prototype.refresh = function () { - var id; - var ids = this._data.getIds({filter: this._options && this._options.filter}); - var newIds = {}; - var added = []; - var removed = []; - - // check for additions - for (var i = 0; i < ids.length; i++) { - id = ids[i]; - newIds[id] = true; - if (!this._ids[id]) { - added.push(id); - this._ids[id] = true; - this.length++; - } - } - - // check for removals - for (id in this._ids) { - if (this._ids.hasOwnProperty(id)) { - if (!newIds[id]) { - removed.push(id); - delete this._ids[id]; - this.length--; - } - } - } - - // trigger events - if (added.length) { - this._trigger('add', {items: added}); - } - if (removed.length) { - this._trigger('remove', {items: removed}); - } - }; - - /** - * Get data from the data view - * - * Usage: - * - * get() - * get(options: Object) - * get(options: Object, data: Array | DataTable) - * - * get(id: Number) - * get(id: Number, options: Object) - * get(id: Number, options: Object, data: Array | DataTable) - * - * get(ids: Number[]) - * get(ids: Number[], options: Object) - * get(ids: Number[], options: Object, data: Array | DataTable) - * - * Where: - * - * {Number | String} id The id of an item - * {Number[] | String{}} ids An array with ids of items - * {Object} options An Object with options. Available options: - * {String} [type] Type of data to be returned. Can - * be 'DataTable' or 'Array' (default) - * {Object.} [convert] - * {String[]} [fields] field names to be returned - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * {Array | DataTable} [data] If provided, items will be appended to this - * array or table. Required in case of Google - * DataTable. - * @param args - */ - DataView.prototype.get = function (args) { - var me = this; - - // parse the arguments - var ids, options, data; - var firstType = util.getType(arguments[0]); - if (firstType == 'String' || firstType == 'Number' || firstType == 'Array') { - // get(id(s) [, options] [, data]) - ids = arguments[0]; // can be a single id or an array with ids - options = arguments[1]; - data = arguments[2]; - } - else { - // get([, options] [, data]) - options = arguments[0]; - data = arguments[1]; - } - - // extend the options with the default options and provided options - var viewOptions = util.extend({}, this._options, options); - - // create a combined filter method when needed - if (this._options.filter && options && options.filter) { - viewOptions.filter = function (item) { - return me._options.filter(item) && options.filter(item); - } - } - - // build up the call to the linked data set - var getArguments = []; - if (ids != undefined) { - getArguments.push(ids); - } - getArguments.push(viewOptions); - getArguments.push(data); - - return this._data && this._data.get.apply(this._data, getArguments); - }; - - /** - * Get ids of all items or from a filtered set of items. - * @param {Object} [options] An Object with options. Available options: - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * @return {Array} ids - */ - DataView.prototype.getIds = function (options) { - var ids; - - if (this._data) { - var defaultFilter = this._options.filter; - var filter; - - if (options && options.filter) { - if (defaultFilter) { - filter = function (item) { - return defaultFilter(item) && options.filter(item); - } - } - else { - filter = options.filter; - } - } - else { - filter = defaultFilter; - } - - ids = this._data.getIds({ - filter: filter, - order: options && options.order - }); - } - else { - ids = []; - } - - return ids; - }; - - /** - * Get the DataSet to which this DataView is connected. In case there is a chain - * of multiple DataViews, the root DataSet of this chain is returned. - * @return {DataSet} dataSet - */ - DataView.prototype.getDataSet = function () { - var dataSet = this; - while (dataSet instanceof DataView) { - dataSet = dataSet._data; - } - return dataSet || null; - }; - - /** - * Event listener. Will propagate all events from the connected data set to - * the subscribers of the DataView, but will filter the items and only trigger - * when there are changes in the filtered data set. - * @param {String} event - * @param {Object | null} params - * @param {String} senderId - * @private - */ - DataView.prototype._onEvent = function (event, params, senderId) { - var i, len, id, item; - var ids = params && params.items; - var data = this._data; - var updatedData = []; - var added = []; - var updated = []; - var removed = []; - - if (ids && data) { - switch (event) { - case 'add': - // filter the ids of the added items - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - item = this.get(id); - if (item) { - this._ids[id] = true; - added.push(id); - } - } - - break; - - case 'update': - // determine the event from the views viewpoint: an updated - // item can be added, updated, or removed from this view. - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - item = this.get(id); - - if (item) { - if (this._ids[id]) { - updated.push(id); - updatedData.push(params.data[i]); - } - else { - this._ids[id] = true; - added.push(id); - } - } - else { - if (this._ids[id]) { - delete this._ids[id]; - removed.push(id); - } - else { - // nothing interesting for me :-( - } - } - } - - break; - - case 'remove': - // filter the ids of the removed items - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - if (this._ids[id]) { - delete this._ids[id]; - removed.push(id); - } - } - - break; - } - - this.length += added.length - removed.length; - - if (added.length) { - this._trigger('add', {items: added}, senderId); - } - if (updated.length) { - this._trigger('update', {items: updated, data: updatedData}, senderId); - } - if (removed.length) { - this._trigger('remove', {items: removed}, senderId); - } - } - }; - - // copy subscription functionality from DataSet - DataView.prototype.on = DataSet.prototype.on; - DataView.prototype.off = DataSet.prototype.off; - DataView.prototype._trigger = DataSet.prototype._trigger; - - // TODO: make these functions deprecated (replaced with `on` and `off` since version 0.5) - DataView.prototype.subscribe = DataView.prototype.on; - DataView.prototype.unsubscribe = DataView.prototype.off; - - module.exports = DataView; - -/***/ }, -/* 5 */ -/***/ function(module, exports, __webpack_require__) { - - /** - * A queue - * @param {Object} options - * Available options: - * - delay: number When provided, the queue will be flushed - * automatically after an inactivity of this delay - * in milliseconds. - * Default value is null. - * - max: number When the queue exceeds the given maximum number - * of entries, the queue is flushed automatically. - * Default value of max is Infinity. - * @constructor - */ - function Queue(options) { - // options - this.delay = null; - this.max = Infinity; - - // properties - this._queue = []; - this._timeout = null; - this._extended = null; - - this.setOptions(options); - } - - /** - * Update the configuration of the queue - * @param {Object} options - * Available options: - * - delay: number When provided, the queue will be flushed - * automatically after an inactivity of this delay - * in milliseconds. - * Default value is null. - * - max: number When the queue exceeds the given maximum number - * of entries, the queue is flushed automatically. - * Default value of max is Infinity. - * @param options - */ - Queue.prototype.setOptions = function (options) { - if (options && typeof options.delay !== 'undefined') { - this.delay = options.delay; - } - if (options && typeof options.max !== 'undefined') { - this.max = options.max; - } - - this._flushIfNeeded(); - }; - - /** - * Extend an object with queuing functionality. - * The object will be extended with a function flush, and the methods provided - * in options.replace will be replaced with queued ones. - * @param {Object} object - * @param {Object} options - * Available options: - * - replace: Array. - * A list with method names of the methods - * on the object to be replaced with queued ones. - * - delay: number When provided, the queue will be flushed - * automatically after an inactivity of this delay - * in milliseconds. - * Default value is null. - * - max: number When the queue exceeds the given maximum number - * of entries, the queue is flushed automatically. - * Default value of max is Infinity. - * @return {Queue} Returns the created queue - */ - Queue.extend = function (object, options) { - var queue = new Queue(options); - - if (object.flush !== undefined) { - throw new Error('Target object already has a property flush'); - } - object.flush = function () { - queue.flush(); - }; - - var methods = [{ - name: 'flush', - original: undefined - }]; - - if (options && options.replace) { - for (var i = 0; i < options.replace.length; i++) { - var name = options.replace[i]; - methods.push({ - name: name, - original: object[name] - }); - queue.replace(object, name); - } - } - - queue._extended = { - object: object, - methods: methods - }; - - return queue; - }; - - /** - * Destroy the queue. The queue will first flush all queued actions, and in - * case it has extended an object, will restore the original object. - */ - Queue.prototype.destroy = function () { - this.flush(); - - if (this._extended) { - var object = this._extended.object; - var methods = this._extended.methods; - for (var i = 0; i < methods.length; i++) { - var method = methods[i]; - if (method.original) { - object[method.name] = method.original; - } - else { - delete object[method.name]; - } - } - this._extended = null; - } - }; - - /** - * Replace a method on an object with a queued version - * @param {Object} object Object having the method - * @param {string} method The method name - */ - Queue.prototype.replace = function(object, method) { - var me = this; - var original = object[method]; - if (!original) { - throw new Error('Method ' + method + ' undefined'); - } - - object[method] = function () { - // create an Array with the arguments - var args = []; - for (var i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } - - // add this call to the queue - me.queue({ - args: args, - fn: original, - context: this - }); - }; - }; - - /** - * Queue a call - * @param {function | {fn: function, args: Array} | {fn: function, args: Array, context: Object}} entry - */ - Queue.prototype.queue = function(entry) { - if (typeof entry === 'function') { - this._queue.push({fn: entry}); - } - else { - this._queue.push(entry); - } - - this._flushIfNeeded(); - }; - - /** - * Check whether the queue needs to be flushed - * @private - */ - Queue.prototype._flushIfNeeded = function () { - // flush when the maximum is exceeded. - if (this._queue.length > this.max) { - this.flush(); - } - - // flush after a period of inactivity when a delay is configured - clearTimeout(this._timeout); - if (this.queue.length > 0 && typeof this.delay === 'number') { - var me = this; - this._timeout = setTimeout(function () { - me.flush(); - }, this.delay); - } - }; - - /** - * Flush all queued calls - */ - Queue.prototype.flush = function () { - while (this._queue.length > 0) { - var entry = this._queue.shift(); - entry.fn.apply(entry.context || entry.fn, entry.args || []); - } - }; - - module.exports = Queue; - - -/***/ }, -/* 6 */ -/***/ function(module, exports, __webpack_require__) { - - var Emitter = __webpack_require__(56); - var DataSet = __webpack_require__(3); - var DataView = __webpack_require__(4); - var util = __webpack_require__(1); - var Point3d = __webpack_require__(10); - var Point2d = __webpack_require__(9); - var Camera = __webpack_require__(7); - var Filter = __webpack_require__(8); - var Slider = __webpack_require__(11); - var StepNumber = __webpack_require__(12); - - /** - * @constructor Graph3d - * Graph3d displays data in 3d. - * - * Graph3d is developed in javascript as a Google Visualization Chart. - * - * @param {Element} container The DOM element in which the Graph3d will - * be created. Normally a div element. - * @param {DataSet | DataView | Array} [data] - * @param {Object} [options] - */ - function Graph3d(container, data, options) { - if (!(this instanceof Graph3d)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - // create variables and set default values - this.containerElement = container; - this.width = '400px'; - this.height = '400px'; - this.margin = 10; // px - this.defaultXCenter = '55%'; - this.defaultYCenter = '50%'; - - this.xLabel = 'x'; - this.yLabel = 'y'; - this.zLabel = 'z'; - - var passValueFn = function(v) { return v; }; - this.xValueLabel = passValueFn; - this.yValueLabel = passValueFn; - this.zValueLabel = passValueFn; - - this.filterLabel = 'time'; - this.legendLabel = 'value'; - - this.style = Graph3d.STYLE.DOT; - this.showPerspective = true; - this.showGrid = true; - this.keepAspectRatio = true; - this.showShadow = false; - this.showGrayBottom = false; // TODO: this does not work correctly - this.showTooltip = false; - this.verticalRatio = 0.5; // 0.1 to 1.0, where 1.0 results in a 'cube' - - this.animationInterval = 1000; // milliseconds - this.animationPreload = false; - - this.camera = new Camera(); - this.eye = new Point3d(0, 0, -1); // TODO: set eye.z about 3/4 of the width of the window? - - this.dataTable = null; // The original data table - this.dataPoints = null; // The table with point objects - - // the column indexes - this.colX = undefined; - this.colY = undefined; - this.colZ = undefined; - this.colValue = undefined; - this.colFilter = undefined; - - this.xMin = 0; - this.xStep = undefined; // auto by default - this.xMax = 1; - this.yMin = 0; - this.yStep = undefined; // auto by default - this.yMax = 1; - this.zMin = 0; - this.zStep = undefined; // auto by default - this.zMax = 1; - this.valueMin = 0; - this.valueMax = 1; - this.xBarWidth = 1; - this.yBarWidth = 1; - // TODO: customize axis range - - // constants - this.colorAxis = '#4D4D4D'; - this.colorGrid = '#D3D3D3'; - this.colorDot = '#7DC1FF'; - this.colorDotBorder = '#3267D2'; - - // create a frame and canvas - this.create(); - - // apply options (also when undefined) - this.setOptions(options); - - // apply data - if (data) { - this.setData(data); - } - } - - // Extend Graph3d with an Emitter mixin - Emitter(Graph3d.prototype); - - /** - * Calculate the scaling values, dependent on the range in x, y, and z direction - */ - Graph3d.prototype._setScale = function() { - this.scale = new Point3d(1 / (this.xMax - this.xMin), - 1 / (this.yMax - this.yMin), - 1 / (this.zMax - this.zMin)); - - // keep aspect ration between x and y scale if desired - if (this.keepAspectRatio) { - if (this.scale.x < this.scale.y) { - //noinspection JSSuspiciousNameCombination - this.scale.y = this.scale.x; - } - else { - //noinspection JSSuspiciousNameCombination - this.scale.x = this.scale.y; - } - } - - // scale the vertical axis - this.scale.z *= this.verticalRatio; - // TODO: can this be automated? verticalRatio? - - // determine scale for (optional) value - this.scale.value = 1 / (this.valueMax - this.valueMin); - - // position the camera arm - var xCenter = (this.xMax + this.xMin) / 2 * this.scale.x; - var yCenter = (this.yMax + this.yMin) / 2 * this.scale.y; - var zCenter = (this.zMax + this.zMin) / 2 * this.scale.z; - this.camera.setArmLocation(xCenter, yCenter, zCenter); - }; - - - /** - * Convert a 3D location to a 2D location on screen - * http://en.wikipedia.org/wiki/3D_projection - * @param {Point3d} point3d A 3D point with parameters x, y, z - * @return {Point2d} point2d A 2D point with parameters x, y - */ - Graph3d.prototype._convert3Dto2D = function(point3d) { - var translation = this._convertPointToTranslation(point3d); - return this._convertTranslationToScreen(translation); - }; - - /** - * Convert a 3D location its translation seen from the camera - * http://en.wikipedia.org/wiki/3D_projection - * @param {Point3d} point3d A 3D point with parameters x, y, z - * @return {Point3d} translation A 3D point with parameters x, y, z This is - * the translation of the point, seen from the - * camera - */ - Graph3d.prototype._convertPointToTranslation = function(point3d) { - var ax = point3d.x * this.scale.x, - ay = point3d.y * this.scale.y, - az = point3d.z * this.scale.z, - - cx = this.camera.getCameraLocation().x, - cy = this.camera.getCameraLocation().y, - cz = this.camera.getCameraLocation().z, - - // calculate angles - sinTx = Math.sin(this.camera.getCameraRotation().x), - cosTx = Math.cos(this.camera.getCameraRotation().x), - sinTy = Math.sin(this.camera.getCameraRotation().y), - cosTy = Math.cos(this.camera.getCameraRotation().y), - sinTz = Math.sin(this.camera.getCameraRotation().z), - cosTz = Math.cos(this.camera.getCameraRotation().z), - - // calculate translation - dx = cosTy * (sinTz * (ay - cy) + cosTz * (ax - cx)) - sinTy * (az - cz), - dy = sinTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) + cosTx * (cosTz * (ay - cy) - sinTz * (ax-cx)), - dz = cosTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) - sinTx * (cosTz * (ay - cy) - sinTz * (ax-cx)); - - return new Point3d(dx, dy, dz); - }; - - /** - * Convert a translation point to a point on the screen - * @param {Point3d} translation A 3D point with parameters x, y, z This is - * the translation of the point, seen from the - * camera - * @return {Point2d} point2d A 2D point with parameters x, y - */ - Graph3d.prototype._convertTranslationToScreen = function(translation) { - var ex = this.eye.x, - ey = this.eye.y, - ez = this.eye.z, - dx = translation.x, - dy = translation.y, - dz = translation.z; - - // calculate position on screen from translation - var bx; - var by; - if (this.showPerspective) { - bx = (dx - ex) * (ez / dz); - by = (dy - ey) * (ez / dz); - } - else { - bx = dx * -(ez / this.camera.getArmLength()); - by = dy * -(ez / this.camera.getArmLength()); - } - - // shift and scale the point to the center of the screen - // use the width of the graph to scale both horizontally and vertically. - return new Point2d( - this.xcenter + bx * this.frame.canvas.clientWidth, - this.ycenter - by * this.frame.canvas.clientWidth); - }; - - /** - * Set the background styling for the graph - * @param {string | {fill: string, stroke: string, strokeWidth: string}} backgroundColor - */ - Graph3d.prototype._setBackgroundColor = function(backgroundColor) { - var fill = 'white'; - var stroke = 'gray'; - var strokeWidth = 1; - - if (typeof(backgroundColor) === 'string') { - fill = backgroundColor; - stroke = 'none'; - strokeWidth = 0; - } - else if (typeof(backgroundColor) === 'object') { - if (backgroundColor.fill !== undefined) fill = backgroundColor.fill; - if (backgroundColor.stroke !== undefined) stroke = backgroundColor.stroke; - if (backgroundColor.strokeWidth !== undefined) strokeWidth = backgroundColor.strokeWidth; - } - else if (backgroundColor === undefined) { - // use use defaults - } - else { - throw 'Unsupported type of backgroundColor'; - } - - this.frame.style.backgroundColor = fill; - this.frame.style.borderColor = stroke; - this.frame.style.borderWidth = strokeWidth + 'px'; - this.frame.style.borderStyle = 'solid'; - }; - - - /// enumerate the available styles - Graph3d.STYLE = { - BAR: 0, - BARCOLOR: 1, - BARSIZE: 2, - DOT : 3, - DOTLINE : 4, - DOTCOLOR: 5, - DOTSIZE: 6, - GRID : 7, - LINE: 8, - SURFACE : 9 - }; - - /** - * Retrieve the style index from given styleName - * @param {string} styleName Style name such as 'dot', 'grid', 'dot-line' - * @return {Number} styleNumber Enumeration value representing the style, or -1 - * when not found - */ - Graph3d.prototype._getStyleNumber = function(styleName) { - switch (styleName) { - case 'dot': return Graph3d.STYLE.DOT; - case 'dot-line': return Graph3d.STYLE.DOTLINE; - case 'dot-color': return Graph3d.STYLE.DOTCOLOR; - case 'dot-size': return Graph3d.STYLE.DOTSIZE; - case 'line': return Graph3d.STYLE.LINE; - case 'grid': return Graph3d.STYLE.GRID; - case 'surface': return Graph3d.STYLE.SURFACE; - case 'bar': return Graph3d.STYLE.BAR; - case 'bar-color': return Graph3d.STYLE.BARCOLOR; - case 'bar-size': return Graph3d.STYLE.BARSIZE; - } - - return -1; - }; - - /** - * Determine the indexes of the data columns, based on the given style and data - * @param {DataSet} data - * @param {Number} style - */ - Graph3d.prototype._determineColumnIndexes = function(data, style) { - if (this.style === Graph3d.STYLE.DOT || - this.style === Graph3d.STYLE.DOTLINE || - this.style === Graph3d.STYLE.LINE || - this.style === Graph3d.STYLE.GRID || - this.style === Graph3d.STYLE.SURFACE || - this.style === Graph3d.STYLE.BAR) { - // 3 columns expected, and optionally a 4th with filter values - this.colX = 0; - this.colY = 1; - this.colZ = 2; - this.colValue = undefined; - - if (data.getNumberOfColumns() > 3) { - this.colFilter = 3; - } - } - else if (this.style === Graph3d.STYLE.DOTCOLOR || - this.style === Graph3d.STYLE.DOTSIZE || - this.style === Graph3d.STYLE.BARCOLOR || - this.style === Graph3d.STYLE.BARSIZE) { - // 4 columns expected, and optionally a 5th with filter values - this.colX = 0; - this.colY = 1; - this.colZ = 2; - this.colValue = 3; - - if (data.getNumberOfColumns() > 4) { - this.colFilter = 4; - } - } - else { - throw 'Unknown style "' + this.style + '"'; - } - }; - - Graph3d.prototype.getNumberOfRows = function(data) { - return data.length; - } - - - Graph3d.prototype.getNumberOfColumns = function(data) { - var counter = 0; - for (var column in data[0]) { - if (data[0].hasOwnProperty(column)) { - counter++; - } - } - return counter; - } - - - Graph3d.prototype.getDistinctValues = function(data, column) { - var distinctValues = []; - for (var i = 0; i < data.length; i++) { - if (distinctValues.indexOf(data[i][column]) == -1) { - distinctValues.push(data[i][column]); - } - } - return distinctValues; - } - - - Graph3d.prototype.getColumnRange = function(data,column) { - var minMax = {min:data[0][column],max:data[0][column]}; - for (var i = 0; i < data.length; i++) { - if (minMax.min > data[i][column]) { minMax.min = data[i][column]; } - if (minMax.max < data[i][column]) { minMax.max = data[i][column]; } - } - return minMax; - }; - - /** - * Initialize the data from the data table. Calculate minimum and maximum values - * and column index values - * @param {Array | DataSet | DataView} rawData The data containing the items for the Graph. - * @param {Number} style Style Number - */ - Graph3d.prototype._dataInitialize = function (rawData, style) { - var me = this; - - // unsubscribe from the dataTable - if (this.dataSet) { - this.dataSet.off('*', this._onChange); - } - - if (rawData === undefined) - return; - - if (Array.isArray(rawData)) { - rawData = new DataSet(rawData); - } - - var data; - if (rawData instanceof DataSet || rawData instanceof DataView) { - data = rawData.get(); - } - else { - throw new Error('Array, DataSet, or DataView expected'); - } - - if (data.length == 0) - return; - - this.dataSet = rawData; - this.dataTable = data; - - // subscribe to changes in the dataset - this._onChange = function () { - me.setData(me.dataSet); - }; - this.dataSet.on('*', this._onChange); - - // _determineColumnIndexes - // getNumberOfRows (points) - // getNumberOfColumns (x,y,z,v,t,t1,t2...) - // getDistinctValues (unique values?) - // getColumnRange - - // determine the location of x,y,z,value,filter columns - this.colX = 'x'; - this.colY = 'y'; - this.colZ = 'z'; - this.colValue = 'style'; - this.colFilter = 'filter'; - - - - // check if a filter column is provided - if (data[0].hasOwnProperty('filter')) { - if (this.dataFilter === undefined) { - this.dataFilter = new Filter(rawData, this.colFilter, this); - this.dataFilter.setOnLoadCallback(function() {me.redraw();}); - } - } - - - var withBars = this.style == Graph3d.STYLE.BAR || - this.style == Graph3d.STYLE.BARCOLOR || - this.style == Graph3d.STYLE.BARSIZE; - - // determine barWidth from data - if (withBars) { - if (this.defaultXBarWidth !== undefined) { - this.xBarWidth = this.defaultXBarWidth; - } - else { - var dataX = this.getDistinctValues(data,this.colX); - this.xBarWidth = (dataX[1] - dataX[0]) || 1; - } - - if (this.defaultYBarWidth !== undefined) { - this.yBarWidth = this.defaultYBarWidth; - } - else { - var dataY = this.getDistinctValues(data,this.colY); - this.yBarWidth = (dataY[1] - dataY[0]) || 1; - } - } - - // calculate minimums and maximums - var xRange = this.getColumnRange(data,this.colX); - if (withBars) { - xRange.min -= this.xBarWidth / 2; - xRange.max += this.xBarWidth / 2; - } - this.xMin = (this.defaultXMin !== undefined) ? this.defaultXMin : xRange.min; - this.xMax = (this.defaultXMax !== undefined) ? this.defaultXMax : xRange.max; - if (this.xMax <= this.xMin) this.xMax = this.xMin + 1; - this.xStep = (this.defaultXStep !== undefined) ? this.defaultXStep : (this.xMax-this.xMin)/5; - - var yRange = this.getColumnRange(data,this.colY); - if (withBars) { - yRange.min -= this.yBarWidth / 2; - yRange.max += this.yBarWidth / 2; - } - this.yMin = (this.defaultYMin !== undefined) ? this.defaultYMin : yRange.min; - this.yMax = (this.defaultYMax !== undefined) ? this.defaultYMax : yRange.max; - if (this.yMax <= this.yMin) this.yMax = this.yMin + 1; - this.yStep = (this.defaultYStep !== undefined) ? this.defaultYStep : (this.yMax-this.yMin)/5; - - var zRange = this.getColumnRange(data,this.colZ); - this.zMin = (this.defaultZMin !== undefined) ? this.defaultZMin : zRange.min; - this.zMax = (this.defaultZMax !== undefined) ? this.defaultZMax : zRange.max; - if (this.zMax <= this.zMin) this.zMax = this.zMin + 1; - this.zStep = (this.defaultZStep !== undefined) ? this.defaultZStep : (this.zMax-this.zMin)/5; - - if (this.colValue !== undefined) { - var valueRange = this.getColumnRange(data,this.colValue); - this.valueMin = (this.defaultValueMin !== undefined) ? this.defaultValueMin : valueRange.min; - this.valueMax = (this.defaultValueMax !== undefined) ? this.defaultValueMax : valueRange.max; - if (this.valueMax <= this.valueMin) this.valueMax = this.valueMin + 1; - } - - // set the scale dependent on the ranges. - this._setScale(); - }; - - - - /** - * Filter the data based on the current filter - * @param {Array} data - * @return {Array} dataPoints Array with point objects which can be drawn on screen - */ - Graph3d.prototype._getDataPoints = function (data) { - // TODO: store the created matrix dataPoints in the filters instead of reloading each time - var x, y, i, z, obj, point; - - var dataPoints = []; - - if (this.style === Graph3d.STYLE.GRID || - this.style === Graph3d.STYLE.SURFACE) { - // copy all values from the google data table to a matrix - // the provided values are supposed to form a grid of (x,y) positions - - // create two lists with all present x and y values - var dataX = []; - var dataY = []; - for (i = 0; i < this.getNumberOfRows(data); i++) { - x = data[i][this.colX] || 0; - y = data[i][this.colY] || 0; - - if (dataX.indexOf(x) === -1) { - dataX.push(x); - } - if (dataY.indexOf(y) === -1) { - dataY.push(y); - } - } - - var sortNumber = function (a, b) { - return a - b; - }; - dataX.sort(sortNumber); - dataY.sort(sortNumber); - - // create a grid, a 2d matrix, with all values. - var dataMatrix = []; // temporary data matrix - for (i = 0; i < data.length; i++) { - x = data[i][this.colX] || 0; - y = data[i][this.colY] || 0; - z = data[i][this.colZ] || 0; - - var xIndex = dataX.indexOf(x); // TODO: implement Array().indexOf() for Internet Explorer - var yIndex = dataY.indexOf(y); - - if (dataMatrix[xIndex] === undefined) { - dataMatrix[xIndex] = []; - } - - var point3d = new Point3d(); - point3d.x = x; - point3d.y = y; - point3d.z = z; - - obj = {}; - obj.point = point3d; - obj.trans = undefined; - obj.screen = undefined; - obj.bottom = new Point3d(x, y, this.zMin); - - dataMatrix[xIndex][yIndex] = obj; - - dataPoints.push(obj); - } - - // fill in the pointers to the neighbors. - for (x = 0; x < dataMatrix.length; x++) { - for (y = 0; y < dataMatrix[x].length; y++) { - if (dataMatrix[x][y]) { - dataMatrix[x][y].pointRight = (x < dataMatrix.length-1) ? dataMatrix[x+1][y] : undefined; - dataMatrix[x][y].pointTop = (y < dataMatrix[x].length-1) ? dataMatrix[x][y+1] : undefined; - dataMatrix[x][y].pointCross = - (x < dataMatrix.length-1 && y < dataMatrix[x].length-1) ? - dataMatrix[x+1][y+1] : - undefined; - } - } - } - } - else { // 'dot', 'dot-line', etc. - // copy all values from the google data table to a list with Point3d objects - for (i = 0; i < data.length; i++) { - point = new Point3d(); - point.x = data[i][this.colX] || 0; - point.y = data[i][this.colY] || 0; - point.z = data[i][this.colZ] || 0; - - if (this.colValue !== undefined) { - point.value = data[i][this.colValue] || 0; - } - - obj = {}; - obj.point = point; - obj.bottom = new Point3d(point.x, point.y, this.zMin); - obj.trans = undefined; - obj.screen = undefined; - - dataPoints.push(obj); - } - } - - return dataPoints; - }; - - /** - * Create the main frame for the Graph3d. - * This function is executed once when a Graph3d object is created. The frame - * contains a canvas, and this canvas contains all objects like the axis and - * nodes. - */ - Graph3d.prototype.create = function () { - // remove all elements from the container element. - while (this.containerElement.hasChildNodes()) { - this.containerElement.removeChild(this.containerElement.firstChild); - } - - this.frame = document.createElement('div'); - this.frame.style.position = 'relative'; - this.frame.style.overflow = 'hidden'; - - // create the graph canvas (HTML canvas element) - this.frame.canvas = document.createElement( 'canvas' ); - this.frame.canvas.style.position = 'relative'; - this.frame.appendChild(this.frame.canvas); - //if (!this.frame.canvas.getContext) { - { - var noCanvas = document.createElement( 'DIV' ); - noCanvas.style.color = 'red'; - noCanvas.style.fontWeight = 'bold' ; - noCanvas.style.padding = '10px'; - noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; - this.frame.canvas.appendChild(noCanvas); - } - - this.frame.filter = document.createElement( 'div' ); - this.frame.filter.style.position = 'absolute'; - this.frame.filter.style.bottom = '0px'; - this.frame.filter.style.left = '0px'; - this.frame.filter.style.width = '100%'; - this.frame.appendChild(this.frame.filter); - - // add event listeners to handle moving and zooming the contents - var me = this; - var onmousedown = function (event) {me._onMouseDown(event);}; - var ontouchstart = function (event) {me._onTouchStart(event);}; - var onmousewheel = function (event) {me._onWheel(event);}; - var ontooltip = function (event) {me._onTooltip(event);}; - // TODO: these events are never cleaned up... can give a 'memory leakage' - - util.addEventListener(this.frame.canvas, 'keydown', onkeydown); - util.addEventListener(this.frame.canvas, 'mousedown', onmousedown); - util.addEventListener(this.frame.canvas, 'touchstart', ontouchstart); - util.addEventListener(this.frame.canvas, 'mousewheel', onmousewheel); - util.addEventListener(this.frame.canvas, 'mousemove', ontooltip); - - // add the new graph to the container element - this.containerElement.appendChild(this.frame); - }; - - - /** - * Set a new size for the graph - * @param {string} width Width in pixels or percentage (for example '800px' - * or '50%') - * @param {string} height Height in pixels or percentage (for example '400px' - * or '30%') - */ - Graph3d.prototype.setSize = function(width, height) { - this.frame.style.width = width; - this.frame.style.height = height; - - this._resizeCanvas(); - }; - - /** - * Resize the canvas to the current size of the frame - */ - Graph3d.prototype._resizeCanvas = function() { - this.frame.canvas.style.width = '100%'; - this.frame.canvas.style.height = '100%'; - - this.frame.canvas.width = this.frame.canvas.clientWidth; - this.frame.canvas.height = this.frame.canvas.clientHeight; - - // adjust with for margin - this.frame.filter.style.width = (this.frame.canvas.clientWidth - 2 * 10) + 'px'; - }; + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - /** - * Start animation - */ - Graph3d.prototype.animationStart = function() { - if (!this.frame.filter || !this.frame.filter.slider) - throw 'No animation available'; + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - this.frame.filter.slider.play(); - }; + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - /** - * Stop animation - */ - Graph3d.prototype.animationStop = function() { - if (!this.frame.filter || !this.frame.filter.slider) return; + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], - this.frame.filter.slider.stop(); - }; + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], + // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, - /** - * Resize the center position based on the current values in this.defaultXCenter - * and this.defaultYCenter (which are strings with a percentage or a value - * in pixels). The center positions are the variables this.xCenter - * and this.yCenter - */ - Graph3d.prototype._resizeCenter = function() { - // calculate the horizontal center position - if (this.defaultXCenter.charAt(this.defaultXCenter.length-1) === '%') { - this.xcenter = - parseFloat(this.defaultXCenter) / 100 * - this.frame.canvas.clientWidth; - } - else { - this.xcenter = parseFloat(this.defaultXCenter); // supposed to be in px - } + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 + }, - // calculate the vertical center position - if (this.defaultYCenter.charAt(this.defaultYCenter.length-1) === '%') { - this.ycenter = - parseFloat(this.defaultYCenter) / 100 * - (this.frame.canvas.clientHeight - this.frame.filter.clientHeight); - } - else { - this.ycenter = parseFloat(this.defaultYCenter); // supposed to be in px - } - }; + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + Q : 'quarter', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' + }, - /** - * Set the rotation and distance of the camera - * @param {Object} pos An object with the camera position. The object - * contains three parameters: - * - horizontal {Number} - * The horizontal rotation, between 0 and 2*PI. - * Optional, can be left undefined. - * - vertical {Number} - * The vertical rotation, between 0 and 0.5*PI - * if vertical=0.5*PI, the graph is shown from the - * top. Optional, can be left undefined. - * - distance {Number} - * The (normalized) distance of the camera to the - * center of the graph, a value between 0.71 and 5.0. - * Optional, can be left undefined. - */ - Graph3d.prototype.setCameraPosition = function(pos) { - if (pos === undefined) { - return; - } + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' + }, - if (pos.horizontal !== undefined && pos.vertical !== undefined) { - this.camera.setArmRotation(pos.horizontal, pos.vertical); - } + // format function strings + formatFunctions = {}, - if (pos.distance !== undefined) { - this.camera.setArmLength(pos.distance); - } + // default relative time thresholds + relativeTimeThresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }, - this.redraw(); - }; + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.localeData().monthsShort(this, format); + }, + MMMM : function (format) { + return this.localeData().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.localeData().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.localeData().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.localeData().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); + }, + z : function () { + return this.zoneAbbr(); + }, + zz : function () { + return this.zoneName(); + }, + x : function () { + return this.valueOf(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); + } + }, - /** - * Retrieve the current camera rotation - * @return {object} An object with parameters horizontal, vertical, and - * distance - */ - Graph3d.prototype.getCameraPosition = function() { - var pos = this.camera.getArmRotation(); - pos.distance = this.camera.getArmLength(); - return pos; - }; + deprecations = {}, - /** - * Load data into the 3D Graph - */ - Graph3d.prototype._readData = function(data) { - // read the data - this._dataInitialize(data, this.style); + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], + updateInProgress = false; - if (this.dataFilter) { - // apply filtering - this.dataPoints = this.dataFilter._getDataPoints(); - } - else { - // no filtering. load all data - this.dataPoints = this._getDataPoints(this.dataTable); - } + // Pick the first defined of two or three arguments. dfl comes from + // default. + function dfl(a, b, c) { + switch (arguments.length) { + case 2: return a != null ? a : b; + case 3: return a != null ? a : b != null ? b : c; + default: throw new Error('Implement me'); + } + } - // draw the filter - this._redrawFilter(); - }; + function hasOwnProp(a, b) { + return hasOwnProperty.call(a, b); + } - /** - * Replace the dataset of the Graph3d - * @param {Array | DataSet | DataView} data - */ - Graph3d.prototype.setData = function (data) { - this._readData(data); - this.redraw(); + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; + } - // start animation when option is true - if (this.animationAutoStart && this.dataFilter) { - this.animationStart(); - } - }; + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } - /** - * Update the options. Options will be merged with current options - * @param {Object} options - */ - Graph3d.prototype.setOptions = function (options) { - var cameraPosition = undefined; + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + printMsg(msg); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } - this.animationStop(); + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; + } + } - if (options !== undefined) { - // retrieve parameter values - if (options.width !== undefined) this.width = options.width; - if (options.height !== undefined) this.height = options.height; + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.localeData().ordinal(func.call(this, a), period); + }; + } - if (options.xCenter !== undefined) this.defaultXCenter = options.xCenter; - if (options.yCenter !== undefined) this.defaultYCenter = options.yCenter; + function monthDiff(a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; - if (options.filterLabel !== undefined) this.filterLabel = options.filterLabel; - if (options.legendLabel !== undefined) this.legendLabel = options.legendLabel; - if (options.xLabel !== undefined) this.xLabel = options.xLabel; - if (options.yLabel !== undefined) this.yLabel = options.yLabel; - if (options.zLabel !== undefined) this.zLabel = options.zLabel; + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } - if (options.xValueLabel !== undefined) this.xValueLabel = options.xValueLabel; - if (options.yValueLabel !== undefined) this.yValueLabel = options.yValueLabel; - if (options.zValueLabel !== undefined) this.zValueLabel = options.zValueLabel; + return -(wholeMonthDiff + adjust); + } - if (options.style !== undefined) { - var styleNumber = this._getStyleNumber(options.style); - if (styleNumber !== -1) { - this.style = styleNumber; - } + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); } - if (options.showGrid !== undefined) this.showGrid = options.showGrid; - if (options.showPerspective !== undefined) this.showPerspective = options.showPerspective; - if (options.showShadow !== undefined) this.showShadow = options.showShadow; - if (options.tooltip !== undefined) this.showTooltip = options.tooltip; - if (options.showAnimationControls !== undefined) this.showAnimationControls = options.showAnimationControls; - if (options.keepAspectRatio !== undefined) this.keepAspectRatio = options.keepAspectRatio; - if (options.verticalRatio !== undefined) this.verticalRatio = options.verticalRatio; + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - if (options.animationInterval !== undefined) this.animationInterval = options.animationInterval; - if (options.animationPreload !== undefined) this.animationPreload = options.animationPreload; - if (options.animationAutoStart !== undefined)this.animationAutoStart = options.animationAutoStart; - if (options.xBarWidth !== undefined) this.defaultXBarWidth = options.xBarWidth; - if (options.yBarWidth !== undefined) this.defaultYBarWidth = options.yBarWidth; + function meridiemFixWrap(locale, hour, meridiem) { + var isPm; - if (options.xMin !== undefined) this.defaultXMin = options.xMin; - if (options.xStep !== undefined) this.defaultXStep = options.xStep; - if (options.xMax !== undefined) this.defaultXMax = options.xMax; - if (options.yMin !== undefined) this.defaultYMin = options.yMin; - if (options.yStep !== undefined) this.defaultYStep = options.yStep; - if (options.yMax !== undefined) this.defaultYMax = options.yMax; - if (options.zMin !== undefined) this.defaultZMin = options.zMin; - if (options.zStep !== undefined) this.defaultZStep = options.zStep; - if (options.zMax !== undefined) this.defaultZMax = options.zMax; - if (options.valueMin !== undefined) this.defaultValueMin = options.valueMin; - if (options.valueMax !== undefined) this.defaultValueMax = options.valueMax; + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // thie is not supposed to happen + return hour; + } + } - if (options.cameraPosition !== undefined) cameraPosition = options.cameraPosition; + /************************************ + Constructors + ************************************/ - if (cameraPosition !== undefined) { - this.camera.setArmRotation(cameraPosition.horizontal, cameraPosition.vertical); - this.camera.setArmLength(cameraPosition.distance); + function Locale() { } - else { - this.camera.setArmRotation(1.0, 0.5); - this.camera.setArmLength(1.7); + + // Moment prototype object + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); + } + copyConfig(this, config); + this._d = new Date(+config._d); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + moment.updateOffset(this); + updateInProgress = false; + } } - } - this._setBackgroundColor(options && options.backgroundColor); + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; - this.setSize(this.width, this.height); + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; - // re-load the data - if (this.dataTable) { - this.setData(this.dataTable); - } + this._data = {}; - // start animation when option is true - if (this.animationAutoStart && this.dataFilter) { - this.animationStart(); - } - }; + this._locale = moment.localeData(); - /** - * Redraw the Graph. - */ - Graph3d.prototype.redraw = function() { - if (this.dataPoints === undefined) { - throw 'Error: graph data not initialized'; - } + this._bubble(); + } - this._resizeCanvas(); - this._resizeCenter(); - this._redrawSlider(); - this._redrawClear(); - this._redrawAxis(); + /************************************ + Helpers + ************************************/ - if (this.style === Graph3d.STYLE.GRID || - this.style === Graph3d.STYLE.SURFACE) { - this._redrawDataGrid(); - } - else if (this.style === Graph3d.STYLE.LINE) { - this._redrawDataLine(); - } - else if (this.style === Graph3d.STYLE.BAR || - this.style === Graph3d.STYLE.BARCOLOR || - this.style === Graph3d.STYLE.BARSIZE) { - this._redrawDataBar(); - } - else { - // style is DOT, DOTLINE, DOTCOLOR, DOTSIZE - this._redrawDataDot(); - } - this._redrawInfo(); - this._redrawLegend(); - }; + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } - /** - * Clear the canvas before redrawing - */ - Graph3d.prototype._redrawClear = function() { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } - ctx.clearRect(0, 0, canvas.width, canvas.height); - }; + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + return a; + } - /** - * Redraw the legend showing the colors - */ - Graph3d.prototype._redrawLegend = function() { - var y; + function copyConfig(to, from) { + var i, prop, val; - if (this.style === Graph3d.STYLE.DOTCOLOR || - this.style === Graph3d.STYLE.DOTSIZE) { + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } - var dotSize = this.frame.clientWidth * 0.02; + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } + } + } - var widthMin, widthMax; - if (this.style === Graph3d.STYLE.DOTSIZE) { - widthMin = dotSize / 2; // px - widthMax = dotSize / 2 + dotSize * 2; // Todo: put this in one function + return to; } - else { - widthMin = 20; // px - widthMax = 20; // px + + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } } - var height = Math.max(this.frame.clientHeight * 0.25, 100); - var top = this.margin; - var right = this.frame.clientWidth - this.margin; - var left = right - widthMax; - var bottom = top + height; - } + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); - ctx.lineWidth = 1; - ctx.font = '14px arial'; // TODO: put in options + while (output.length < targetLength) { + output = '0' + output; + } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } - if (this.style === Graph3d.STYLE.DOTCOLOR) { - // draw the color bar - var ymin = 0; - var ymax = height; // Todo: make height customizable - for (y = ymin; y < ymax; y++) { - var f = (y - ymin) / (ymax - ymin); + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; - //var width = (dotSize / 2 + (1-f) * dotSize * 2); // Todo: put this in one function - var hue = f * 240; - var color = this._hsv2rgb(hue, 1, 1); + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } - ctx.strokeStyle = color; - ctx.beginPath(); - ctx.moveTo(left, top + y); - ctx.lineTo(right, top + y); - ctx.stroke(); + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; } - ctx.strokeStyle = this.colorAxis; - ctx.strokeRect(left, top, widthMax, height); - } + function momentsDifference(base, other) { + var res; + other = makeAs(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } - if (this.style === Graph3d.STYLE.DOTSIZE) { - // draw border around color bar - ctx.strokeStyle = this.colorAxis; - ctx.fillStyle = this.colorDot; - ctx.beginPath(); - ctx.moveTo(left, top); - ctx.lineTo(right, top); - ctx.lineTo(right - widthMax + widthMin, bottom); - ctx.lineTo(left, bottom); - ctx.closePath(); - ctx.fill(); - ctx.stroke(); - } + return res; + } - if (this.style === Graph3d.STYLE.DOTCOLOR || - this.style === Graph3d.STYLE.DOTSIZE) { - // print values along the color bar - var gridLineLen = 5; // px - var step = new StepNumber(this.valueMin, this.valueMax, (this.valueMax-this.valueMin)/5, true); - step.start(); - if (step.getCurrent() < this.valueMin) { - step.next(); + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); + return this; + }; } - while (!step.end()) { - y = bottom - (step.getCurrent() - this.valueMin) / (this.valueMax - this.valueMin) * height; - ctx.beginPath(); - ctx.moveTo(left - gridLineLen, y); - ctx.lineTo(left, y); - ctx.stroke(); + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = this.colorAxis; - ctx.fillText(step.getCurrent(), left - 2 * gridLineLen, y); + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); + } + if (months) { + rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + moment.updateOffset(mom, days || months); + } + } - step.next(); + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; } - ctx.textAlign = 'right'; - ctx.textBaseline = 'top'; - var label = this.legendLabel; - ctx.fillText(label, right, bottom + this.margin); - } - }; + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } - /** - * Redraw the filter - */ - Graph3d.prototype._redrawFilter = function() { - this.frame.filter.innerHTML = ''; + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } - if (this.dataFilter) { - var options = { - 'visible': this.showAnimationControls - }; - var slider = new Slider(this.frame.filter, options); - this.frame.filter.slider = slider; + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } - // TODO: css here is not nice here... - this.frame.filter.style.padding = '10px'; - //this.frame.filter.style.backgroundColor = '#EFEFEF'; + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; - slider.setValues(this.dataFilter.values); - slider.setPlayInterval(this.animationInterval); + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } - // create an event handler - var me = this; - var onchange = function () { - var index = slider.getIndex(); + return normalizedInput; + } - me.dataFilter.selectValue(index); - me.dataPoints = me.dataFilter._getDataPoints(); + function makeList(field) { + var count, setter; - me.redraw(); - }; - slider.setOnChangeCallback(onchange); - } - else { - this.frame.filter.slider = undefined; - } - }; + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; + } - /** - * Redraw the slider - */ - Graph3d.prototype._redrawSlider = function() { - if ( this.frame.filter.slider !== undefined) { - this.frame.filter.slider.redraw(); - } - }; + moment[field] = function (format, index) { + var i, getter, + method = moment._locale[field], + results = []; + if (typeof format === 'number') { + index = format; + format = undefined; + } - /** - * Redraw common information - */ - Graph3d.prototype._redrawInfo = function() { - if (this.dataFilter) { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment._locale, m, format || ''); + }; - ctx.font = '14px arial'; // TODO: put in options - ctx.lineStyle = 'gray'; - ctx.fillStyle = 'gray'; - ctx.textAlign = 'left'; - ctx.textBaseline = 'top'; + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } + }; + } - var x = this.margin; - var y = this.margin; - ctx.fillText(this.dataFilter.getLabel() + ': ' + this.dataFilter.getSelectedValue(), x, y); - } - }; + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } + } - /** - * Redraw the axis - */ - Graph3d.prototype._redrawAxis = function() { - var canvas = this.frame.canvas, - ctx = canvas.getContext('2d'), - from, to, step, prettyStep, - text, xText, yText, zText, - offset, xOffset, yOffset, - xMin2d, xMax2d; + return value; + } - // TODO: get the actual rendered style of the containerElement - //ctx.font = this.containerElement.style.font; - ctx.font = 24 / this.camera.getArmLength() + 'px arial'; + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } - // calculate the length for the short grid lines - var gridLenX = 0.025 / this.scale.x; - var gridLenY = 0.025 / this.scale.y; - var textMargin = 5 / this.camera.getArmLength(); // px - var armAngle = this.camera.getArmRotation().horizontal; + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; + } - // draw x-grid lines - ctx.lineWidth = 1; - prettyStep = (this.defaultXStep === undefined); - step = new StepNumber(this.xMin, this.xMax, this.xStep, prettyStep); - step.start(); - if (step.getCurrent() < this.xMin) { - step.next(); - } - while (!step.end()) { - var x = step.getCurrent(); + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } - if (this.showGrid) { - from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorGrid; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; } - else { - from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(x, this.yMin+gridLenX, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - from = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); - to = this._convert3Dto2D(new Point3d(x, this.yMax-gridLenX, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 24 || + (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || + m._a[SECOND] !== 0 || + m._a[MILLISECOND] !== 0)) ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + + m._pf.overflow = overflow; + } } - yText = (Math.cos(armAngle) > 0) ? this.yMin : this.yMax; - text = this._convert3Dto2D(new Point3d(x, yText, this.zMin)); - if (Math.cos(armAngle * 2) > 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - text.y += textMargin; - } - else if (Math.sin(armAngle * 2) < 0){ - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; + + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0 && + m._pf.bigHour === undefined; + } + } + return m._isValid; } - else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; + + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; } - ctx.fillStyle = this.colorAxis; - ctx.fillText(' ' + this.xValueLabel(step.getCurrent()) + ' ', text.x, text.y); - step.next(); - } + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; - // draw y-grid lines - ctx.lineWidth = 1; - prettyStep = (this.defaultYStep === undefined); - step = new StepNumber(this.yMin, this.yMax, this.yStep, prettyStep); - step.start(); - if (step.getCurrent() < this.yMin) { - step.next(); - } - while (!step.end()) { - if (this.showGrid) { - from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); - ctx.strokeStyle = this.colorGrid; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; } - else { - from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMin+gridLenY, step.getCurrent(), this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - from = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMax-gridLenY, step.getCurrent(), this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } + } + return locales[name]; } - xText = (Math.sin(armAngle ) > 0) ? this.xMin : this.xMax; - text = this._convert3Dto2D(new Point3d(xText, step.getCurrent(), this.zMin)); - if (Math.cos(armAngle * 2) < 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - text.y += textMargin; - } - else if (Math.sin(armAngle * 2) > 0){ - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - } - else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; + // Return a moment from input, that is local/utc/utcOffset equivalent to + // model. + function makeAs(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (moment.isMoment(input) || isDate(input) ? + +input : +moment(input)) - (+res); + // Use low-level api, because this fn is low-level api. + res._d.setTime(+res._d + diff); + moment.updateOffset(res, false); + return res; + } else { + return moment(input).local(); + } } - ctx.fillStyle = this.colorAxis; - ctx.fillText(' ' + this.yValueLabel(step.getCurrent()) + ' ', text.x, text.y); - step.next(); - } + /************************************ + Locale + ************************************/ - // draw z-grid lines and axis - ctx.lineWidth = 1; - prettyStep = (this.defaultZStep === undefined); - step = new StepNumber(this.zMin, this.zMax, this.zStep, prettyStep); - step.start(); - if (step.getCurrent() < this.zMin) { - step.next(); - } - xText = (Math.cos(armAngle ) > 0) ? this.xMin : this.xMax; - yText = (Math.sin(armAngle ) < 0) ? this.yMin : this.yMax; - while (!step.end()) { - // TODO: make z-grid lines really 3d? - from = this._convert3Dto2D(new Point3d(xText, yText, step.getCurrent())); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(from.x - textMargin, from.y); - ctx.stroke(); - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = this.colorAxis; - ctx.fillText(this.zValueLabel(step.getCurrent()) + ' ', from.x - 5, from.y); + extend(Locale.prototype, { - step.next(); - } - ctx.lineWidth = 1; - from = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); - to = this._convert3Dto2D(new Point3d(xText, yText, this.zMax)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); + }, - // draw x-axis - ctx.lineWidth = 1; - // line at yMin - xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); - xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(xMin2d.x, xMin2d.y); - ctx.lineTo(xMax2d.x, xMax2d.y); - ctx.stroke(); - // line at ymax - xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); - xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(xMin2d.x, xMin2d.y); - ctx.lineTo(xMax2d.x, xMax2d.y); - ctx.stroke(); + _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + months : function (m) { + return this._months[m.month()]; + }, - // draw y-axis - ctx.lineWidth = 1; - // line at xMin - from = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - // line at xMax - from = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); + _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, - // draw x-label - var xLabel = this.xLabel; - if (xLabel.length > 0) { - yOffset = 0.1 / this.scale.y; - xText = (this.xMin + this.xMax) / 2; - yText = (Math.cos(armAngle) > 0) ? this.yMin - yOffset: this.yMax + yOffset; - text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); - if (Math.cos(armAngle * 2) > 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - } - else if (Math.sin(armAngle * 2) < 0){ - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - } - else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; - } - ctx.fillStyle = this.colorAxis; - ctx.fillText(xLabel, text.x, text.y); - } + monthsParse : function (monthName, format, strict) { + var i, mom, regex; - // draw y-label - var yLabel = this.yLabel; - if (yLabel.length > 0) { - xOffset = 0.1 / this.scale.x; - xText = (Math.sin(armAngle ) > 0) ? this.xMin - xOffset : this.xMax + xOffset; - yText = (this.yMin + this.yMax) / 2; - text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); - if (Math.cos(armAngle * 2) < 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - } - else if (Math.sin(armAngle * 2) > 0){ - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - } - else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; - } - ctx.fillStyle = this.colorAxis; - ctx.fillText(yLabel, text.x, text.y); - } + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } - // draw z-label - var zLabel = this.zLabel; - if (zLabel.length > 0) { - offset = 30; // pixels. // TODO: relate to the max width of the values on the z axis? - xText = (Math.cos(armAngle ) > 0) ? this.xMin : this.xMax; - yText = (Math.sin(armAngle ) < 0) ? this.yMin : this.yMax; - zText = (this.zMin + this.zMax) / 2; - text = this._convert3Dto2D(new Point3d(xText, yText, zText)); - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = this.colorAxis; - ctx.fillText(zLabel, text.x - offset, text.y); - } - }; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = moment.utc([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + }, - /** - * Calculate the color based on the given value. - * @param {Number} H Hue, a value be between 0 and 360 - * @param {Number} S Saturation, a value between 0 and 1 - * @param {Number} V Value, a value between 0 and 1 - */ - Graph3d.prototype._hsv2rgb = function(H, S, V) { - var R, G, B, C, Hi, X; + _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, - C = V * S; - Hi = Math.floor(H/60); // hi = 0,1,2,3,4,5 - X = C * (1 - Math.abs(((H/60) % 2) - 1)); + _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, - switch (Hi) { - case 0: R = C; G = X; B = 0; break; - case 1: R = X; G = C; B = 0; break; - case 2: R = 0; G = C; B = X; break; - case 3: R = 0; G = X; B = C; break; - case 4: R = X; G = 0; B = C; break; - case 5: R = C; G = 0; B = X; break; + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, - default: R = 0; G = 0; B = 0; break; - } + weekdaysParse : function (weekdayName) { + var i, mom, regex; - return 'RGB(' + parseInt(R*255) + ',' + parseInt(G*255) + ',' + parseInt(B*255) + ')'; - }; + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + }, - /** - * Draw all datapoints as a grid - * This function can be used when the style is 'grid' - */ - Graph3d.prototype._redrawDataGrid = function() { - var canvas = this.frame.canvas, - ctx = canvas.getContext('2d'), - point, right, top, cross, - i, - topSideVisible, fillStyle, strokeStyle, lineWidth, - h, s, v, zAvg; + _longDateFormat : { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; + } + return output; + }, + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, - if (this.dataPoints === undefined || this.dataPoints.length <= 0) - return; // TODO: throw exception? + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, - // calculate the translations and screen position of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom, now) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom, [now]) : output; + }, - // calculate the translation of the point at the bottom (needed for sorting) - var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); - this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; - } + _relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, - // sort the points on depth of their (x,y) position (not on z) - var sortDepth = function (a, b) { - return b.dist - a.dist; - }; - this.dataPoints.sort(sortDepth); + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, - if (this.style === Graph3d.STYLE.SURFACE) { - for (i = 0; i < this.dataPoints.length; i++) { - point = this.dataPoints[i]; - right = this.dataPoints[i].pointRight; - top = this.dataPoints[i].pointTop; - cross = this.dataPoints[i].pointCross; + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, + + ordinal : function (number) { + return this._ordinal.replace('%d', number); + }, + _ordinal : '%d', + _ordinalParse : /\d{1,2}/, + + preparse : function (string) { + return string; + }, + + postformat : function (string) { + return string; + }, + + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, + + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, + + firstDayOfWeek : function () { + return this._week.dow; + }, + + firstDayOfYear : function () { + return this._week.doy; + }, - if (point !== undefined && right !== undefined && top !== undefined && cross !== undefined) { + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; + } + }); - if (this.showGrayBottom || this.showShadow) { - // calculate the cross product of the two vectors from center - // to left and right, in order to know whether we are looking at the - // bottom or at the top side. We can also use the cross product - // for calculating light intensity - var aDiff = Point3d.subtract(cross.trans, point.trans); - var bDiff = Point3d.subtract(top.trans, right.trans); - var crossproduct = Point3d.crossProduct(aDiff, bDiff); - var len = crossproduct.length(); - // FIXME: there is a bug with determining the surface side (shadow or colored) + /************************************ + Formatting + ************************************/ - topSideVisible = (crossproduct.z > 0); + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); } - else { - topSideVisible = true; + return input.replace(/\\/g, ''); + } + + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } } - if (topSideVisible) { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - zAvg = (point.point.z + right.point.z + top.point.z + cross.point.z) / 4; - h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; - s = 1; // saturation + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } - if (this.showShadow) { - v = Math.min(1 + (crossproduct.x / len) / 2, 1); // value. TODO: scale - fillStyle = this._hsv2rgb(h, s, v); - strokeStyle = fillStyle; - } - else { - v = 1; - fillStyle = this._hsv2rgb(h, s, v); - strokeStyle = this.colorAxis; - } + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); } - else { - fillStyle = 'gray'; - strokeStyle = this.colorAxis; + + format = expandFormat(format, m.localeData()); + + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); } - lineWidth = 0.5; - ctx.lineWidth = lineWidth; - ctx.fillStyle = fillStyle; - ctx.strokeStyle = strokeStyle; - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - ctx.lineTo(right.screen.x, right.screen.y); - ctx.lineTo(cross.screen.x, cross.screen.y); - ctx.lineTo(top.screen.x, top.screen.y); - ctx.closePath(); - ctx.fill(); - ctx.stroke(); - } + return formatFunctions[format](m); } - } - else { // grid style - for (i = 0; i < this.dataPoints.length; i++) { - point = this.dataPoints[i]; - right = this.dataPoints[i].pointRight; - top = this.dataPoints[i].pointTop; - if (point !== undefined) { - if (this.showPerspective) { - lineWidth = 2 / -point.trans.z; + function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; } - else { - lineWidth = 2 * -(this.eye.z / this.camera.getArmLength()); + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; } - } - if (point !== undefined && right !== undefined) { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - zAvg = (point.point.z + right.point.z) / 2; - h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; + return format; + } - ctx.lineWidth = lineWidth; - ctx.strokeStyle = this._hsv2rgb(h, 1, 1); - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - ctx.lineTo(right.screen.x, right.screen.y); - ctx.stroke(); - } - if (point !== undefined && top !== undefined) { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - zAvg = (point.point.z + top.point.z) / 2; - h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; + /************************************ + Parsing + ************************************/ - ctx.lineWidth = lineWidth; - ctx.strokeStyle = this._hsv2rgb(h, 1, 1); - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - ctx.lineTo(top.screen.x, top.screen.y); - ctx.stroke(); - } + + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'Q': + return parseTokenOneDigit; + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { + return parseTokenOneDigit; + } + /* falls through */ + case 'SS': + if (strict) { + return parseTokenTwoDigits; + } + /* falls through */ + case 'SSS': + if (strict) { + return parseTokenThreeDigits; + } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return config._locale._meridiemParse; + case 'x': + return parseTokenOffsetMs; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + case 'Do': + return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); + return a; + } } - } - }; + function utcOffsetFromString(string) { + string = string || ''; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); - /** - * Draw all datapoints as dots. - * This function can be used when the style is 'dot' or 'dot-line' - */ - Graph3d.prototype._redrawDataDot = function() { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); - var i; + return parts[0] === '+' ? minutes : -minutes; + } - if (this.dataPoints === undefined || this.dataPoints.length <= 0) - return; // TODO: throw exception? + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; - // calculate the translations of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + case 'Do' : + if (input != null) { + datePartArray[DATE] = toInt(parseInt( + input.match(/\d{1,2}/)[0], 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); + } - // calculate the distance from the point at the bottom to the camera - var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); - this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; - } + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = moment.parseTwoDigitYear(input); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._meridiem = input; + // config._isPm = config._locale.isPM(input); + break; + // HOUR + case 'h' : // fall through to hh + case 'hh' : + config._pf.bigHour = true; + /* falls through */ + case 'H' : // fall through to HH + case 'HH' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX OFFSET (MILLISECONDS) + case 'x': + config._d = new Date(toInt(input)); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = utcOffsetFromString(input); + break; + // WEEKDAY - human + case 'dd': + case 'ddd': + case 'dddd': + a = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (a != null) { + config._w = config._w || {}; + config._w['d'] = a; + } else { + config._pf.invalidWeekday = input; + } + break; + // WEEK, WEEK DAY - numeric + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gggg': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = toInt(input); + } + break; + case 'gg': + case 'GG': + config._w = config._w || {}; + config._w[token] = moment.parseTwoDigitYear(input); + } + } - // order the translated points by depth - var sortDepth = function (a, b) { - return b.dist - a.dist; - }; - this.dataPoints.sort(sortDepth); + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; - // draw the datapoints as colored circles - var dotSize = this.frame.clientWidth * 0.02; // px - for (i = 0; i < this.dataPoints.length; i++) { - var point = this.dataPoints[i]; + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - if (this.style === Graph3d.STYLE.DOTLINE) { - // draw a vertical line from the bottom to the graph value - //var from = this._convert3Dto2D(new Point3d(point.point.x, point.point.y, this.zMin)); - var from = this._convert3Dto2D(point.bottom); - ctx.lineWidth = 1; - ctx.strokeStyle = this.colorGrid; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(point.screen.x, point.screen.y); - ctx.stroke(); - } + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); + week = dfl(w.W, 1); + weekday = dfl(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; - // calculate radius for the circle - var size; - if (this.style === Graph3d.STYLE.DOTSIZE) { - size = dotSize/2 + 2*dotSize * (point.point.value - this.valueMin) / (this.valueMax - this.valueMin); - } - else { - size = dotSize; - } + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); - var radius; - if (this.showPerspective) { - radius = size / -point.trans.z; - } - else { - radius = size * -(this.eye.z / this.camera.getArmLength()); - } - if (radius < 0) { - radius = 0; - } + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; + } + } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - var hue, color, borderColor; - if (this.style === Graph3d.STYLE.DOTCOLOR ) { - // calculate the color based on the value - hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); - } - else if (this.style === Graph3d.STYLE.DOTSIZE) { - color = this.colorDot; - borderColor = this.colorDotBorder; - } - else { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; } - // draw the circle - ctx.lineWidth = 1.0; - ctx.strokeStyle = borderColor; - ctx.fillStyle = color; - ctx.beginPath(); - ctx.arc(point.screen.x, point.screen.y, radius, 0, Math.PI*2, true); - ctx.fill(); - ctx.stroke(); - } - }; - - /** - * Draw all datapoints as bars. - * This function can be used when the style is 'bar', 'bar-color', or 'bar-size' - */ - Graph3d.prototype._redrawDataBar = function() { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); - var i, j, surface, corners; + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; - if (this.dataPoints === undefined || this.dataPoints.length <= 0) - return; // TODO: throw exception? + if (config._d) { + return; + } - // calculate the translations of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; + currentDate = currentDateArray(config); - // calculate the distance from the point at the bottom to the camera - var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); - this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; - } + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } - // order the translated points by depth - var sortDepth = function (a, b) { - return b.dist - a.dist; - }; - this.dataPoints.sort(sortDepth); + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - // draw the datapoints as bars - var xWidth = this.xBarWidth / 2; - var yWidth = this.yBarWidth / 2; - for (i = 0; i < this.dataPoints.length; i++) { - var point = this.dataPoints[i]; + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; + } - // determine color - var hue, color, borderColor; - if (this.style === Graph3d.STYLE.BARCOLOR ) { - // calculate the color based on the value - hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); - } - else if (this.style === Graph3d.STYLE.BARSIZE) { - color = this.colorDot; - borderColor = this.colorDotBorder; - } - else { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); - } + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } - // calculate size for the bar - if (this.style === Graph3d.STYLE.BARSIZE) { - xWidth = (this.xBarWidth / 2) * ((point.point.value - this.valueMin) / (this.valueMax - this.valueMin) * 0.8 + 0.2); - yWidth = (this.yBarWidth / 2) * ((point.point.value - this.valueMin) / (this.valueMax - this.valueMin) * 0.8 + 0.2); - } + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } - // calculate all corner points - var me = this; - var point3d = point.point; - var top = [ - {point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, point3d.z)}, - {point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, point3d.z)}, - {point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, point3d.z)}, - {point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, point3d.z)} - ]; - var bottom = [ - {point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, this.zMin)}, - {point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, this.zMin)}, - {point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, this.zMin)}, - {point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, this.zMin)} - ]; + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } - // calculate screen location of the points - top.forEach(function (obj) { - obj.screen = me._convert3Dto2D(obj.point); - }); - bottom.forEach(function (obj) { - obj.screen = me._convert3Dto2D(obj.point); - }); + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } - // create five sides, calculate both corner points and center points - var surfaces = [ - {corners: top, center: Point3d.avg(bottom[0].point, bottom[2].point)}, - {corners: [top[0], top[1], bottom[1], bottom[0]], center: Point3d.avg(bottom[1].point, bottom[0].point)}, - {corners: [top[1], top[2], bottom[2], bottom[1]], center: Point3d.avg(bottom[2].point, bottom[1].point)}, - {corners: [top[2], top[3], bottom[3], bottom[2]], center: Point3d.avg(bottom[3].point, bottom[2].point)}, - {corners: [top[3], top[0], bottom[0], bottom[3]], center: Point3d.avg(bottom[0].point, bottom[3].point)} - ]; - point.surfaces = surfaces; + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } - // calculate the distance of each of the surface centers to the camera - for (j = 0; j < surfaces.length; j++) { - surface = surfaces[j]; - var transCenter = this._convertPointToTranslation(surface.center); - surface.dist = this.showPerspective ? transCenter.length() : -transCenter.z; - // TODO: this dept calculation doesn't work 100% of the cases due to perspective, - // but the current solution is fast/simple and works in 99.9% of all cases - // the issue is visible in example 14, with graph.setCameraPosition({horizontal: 2.97, vertical: 0.5, distance: 0.9}) + if (config._nextDay) { + config._a[HOUR] = 24; + } } - // order the surfaces by their (translated) depth - surfaces.sort(function (a, b) { - var diff = b.dist - a.dist; - if (diff) return diff; + function dateFromObject(config) { + var normalizedInput; - // if equal depth, sort the top surface last - if (a.corners === top) return 1; - if (b.corners === top) return -1; + if (config._d) { + return; + } - // both are equal - return 0; - }); + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day || normalizedInput.date, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; - // draw the ordered surfaces - ctx.lineWidth = 1; - ctx.strokeStyle = borderColor; - ctx.fillStyle = color; - // NOTE: we start at j=2 instead of j=0 as we don't need to draw the two surfaces at the backside - for (j = 2; j < surfaces.length; j++) { - surface = surfaces[j]; - corners = surface.corners; - ctx.beginPath(); - ctx.moveTo(corners[3].screen.x, corners[3].screen.y); - ctx.lineTo(corners[0].screen.x, corners[0].screen.y); - ctx.lineTo(corners[1].screen.x, corners[1].screen.y); - ctx.lineTo(corners[2].screen.x, corners[2].screen.y); - ctx.lineTo(corners[3].screen.x, corners[3].screen.y); - ctx.fill(); - ctx.stroke(); + dateFromConfig(config); } - } - }; + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + } - /** - * Draw a line through all datapoints. - * This function can be used when the style is 'line' - */ - Graph3d.prototype._redrawDataLine = function() { - var canvas = this.frame.canvas, - ctx = canvas.getContext('2d'), - point, i; + // date from string and format string + function makeDateFromStringAndFormat(config) { + if (config._f === moment.ISO_8601) { + parseISO(config); + return; + } - if (this.dataPoints === undefined || this.dataPoints.length <= 0) - return; // TODO: throw exception? + config._a = []; + config._pf.empty = true; - // calculate the translations of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; - } + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - // start the line - if (this.dataPoints.length > 0) { - point = this.dataPoints[0]; + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; + } + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } + } - ctx.lineWidth = 1; // TODO: make customizable - ctx.strokeStyle = 'blue'; // TODO: make customizable - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - } + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } - // draw the datapoints as colored circles - for (i = 1; i < this.dataPoints.length; i++) { - point = this.dataPoints[i]; - ctx.lineTo(point.screen.x, point.screen.y); - } + // clear _12h flag if hour is <= 12 + if (config._pf.bigHour === true && config._a[HOUR] <= 12) { + config._pf.bigHour = undefined; + } + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], + config._meridiem); + dateFromConfig(config); + checkOverflow(config); + } - // finish the line - if (this.dataPoints.length > 0) { - ctx.stroke(); - } - }; + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } - /** - * Start a moving operation inside the provided parent element - * @param {Event} event The event that occurred (required for - * retrieving the mouse position) - */ - Graph3d.prototype._onMouseDown = function(event) { - event = event || window.event; + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } - // check if mouse is still down (may be up when focus is lost for example - // in an iframe) - if (this.leftButtonDown) { - this._onMouseUp(event); - } + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, - // only react on left mouse button down - this.leftButtonDown = event.which ? (event.which === 1) : (event.button === 1); - if (!this.leftButtonDown && !this.touchDown) return; + scoreToBeat, + i, + currentScore; - // get mouse position (different code for IE and all other browsers) - this.startMouseX = getMouseX(event); - this.startMouseY = getMouseY(event); + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } - this.startStart = new Date(this.start); - this.startEnd = new Date(this.end); - this.startArmRotation = this.camera.getArmRotation(); + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); - this.frame.style.cursor = 'move'; + if (!isValid(tempConfig)) { + continue; + } - // add event listeners to handle moving the contents - // we store the function onmousemove and onmouseup in the graph, so we can - // remove the eventlisteners lateron in the function mouseUp() - var me = this; - this.onmousemove = function (event) {me._onMouseMove(event);}; - this.onmouseup = function (event) {me._onMouseUp(event);}; - util.addEventListener(document, 'mousemove', me.onmousemove); - util.addEventListener(document, 'mouseup', me.onmouseup); - util.preventDefault(event); - }; + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; - /** - * Perform moving operating. - * This function activated from within the funcion Graph.mouseDown(). - * @param {Event} event Well, eehh, the event - */ - Graph3d.prototype._onMouseMove = function (event) { - event = event || window.event; + tempConfig._pf.score = currentScore; - // calculate change in mouse position - var diffX = parseFloat(getMouseX(event)) - this.startMouseX; - var diffY = parseFloat(getMouseY(event)) - this.startMouseY; + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } - var horizontalNew = this.startArmRotation.horizontal + diffX / 200; - var verticalNew = this.startArmRotation.vertical + diffY / 200; + extend(config, bestMoment || tempConfig); + } - var snapAngle = 4; // degrees - var snapValue = Math.sin(snapAngle / 360 * 2 * Math.PI); + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); - // snap horizontally to nice angles at 0pi, 0.5pi, 1pi, 1.5pi, etc... - // the -0.001 is to take care that the vertical axis is always drawn at the left front corner - if (Math.abs(Math.sin(horizontalNew)) < snapValue) { - horizontalNew = Math.round((horizontalNew / Math.PI)) * Math.PI - 0.001; - } - if (Math.abs(Math.cos(horizontalNew)) < snapValue) { - horizontalNew = (Math.round((horizontalNew/ Math.PI - 0.5)) + 0.5) * Math.PI - 0.001; - } + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(parseTokenTimezone)) { + config._f += 'Z'; + } + makeDateFromStringAndFormat(config); + } else { + config._isValid = false; + } + } - // snap vertically to nice angles - if (Math.abs(Math.sin(verticalNew)) < snapValue) { - verticalNew = Math.round((verticalNew / Math.PI)) * Math.PI; - } - if (Math.abs(Math.cos(verticalNew)) < snapValue) { - verticalNew = (Math.round((verticalNew/ Math.PI - 0.5)) + 0.5) * Math.PI; - } + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); + } + } - this.camera.setArmRotation(horizontalNew, verticalNew); - this.redraw(); + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } - // fire a cameraPositionChange event - var parameters = this.getCameraPosition(); - this.emit('cameraPositionChange', parameters); + function makeDateFromInput(config) { + var input = config._i, matched; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + dateFromConfig(config); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); + } + } - util.preventDefault(event); - }; + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } - /** - * Stop moving operating. - * This function activated from within the funcion Graph.mouseDown(). - * @param {event} event The event - */ - Graph3d.prototype._onMouseUp = function (event) { - this.frame.style.cursor = 'auto'; - this.leftButtonDown = false; + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } - // remove event listeners here - util.removeEventListener(document, 'mousemove', this.onmousemove); - util.removeEventListener(document, 'mouseup', this.onmouseup); - util.preventDefault(event); - }; + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } + } + } + return input; + } - /** - * After having moved the mouse, a tooltip should pop up when the mouse is resting on a data point - * @param {Event} event A mouse move event - */ - Graph3d.prototype._onTooltip = function (event) { - var delay = 300; // ms - var boundingRect = this.frame.getBoundingClientRect(); - var mouseX = getMouseX(event) - boundingRect.left; - var mouseY = getMouseY(event) - boundingRect.top; + /************************************ + Relative Time + ************************************/ - if (!this.showTooltip) { - return; - } - if (this.tooltipTimeout) { - clearTimeout(this.tooltipTimeout); - } + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } - // (delayed) display of a tooltip only if no mouse button is down - if (this.leftButtonDown) { - this._hideTooltip(); - return; - } + function relativeTime(posNegDuration, withoutSuffix, locale) { + var duration = moment.duration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + years = round(duration.as('y')), - if (this.tooltip && this.tooltip.dataPoint) { - // tooltip is currently visible - var dataPoint = this._dataPointFromXY(mouseX, mouseY); - if (dataPoint !== this.tooltip.dataPoint) { - // datapoint changed - if (dataPoint) { - this._showTooltip(dataPoint); - } - else { - this._hideTooltip(); - } + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < relativeTimeThresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < relativeTimeThresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; + + args[2] = withoutSuffix; + args[3] = +posNegDuration > 0; + args[4] = locale; + return substituteTimeAgo.apply({}, args); } - } - else { - // tooltip is currently not visible - var me = this; - this.tooltipTimeout = setTimeout(function () { - me.tooltipTimeout = null; - // show a tooltip if we have a data point - var dataPoint = me._dataPointFromXY(mouseX, mouseY); - if (dataPoint) { - me._showTooltip(dataPoint); - } - }, delay); - } - }; - /** - * Event handler for touchstart event on mobile devices - */ - Graph3d.prototype._onTouchStart = function(event) { - this.touchDown = true; + /************************************ + Week of Year + ************************************/ - var me = this; - this.ontouchmove = function (event) {me._onTouchMove(event);}; - this.ontouchend = function (event) {me._onTouchEnd(event);}; - util.addEventListener(document, 'touchmove', me.ontouchmove); - util.addEventListener(document, 'touchend', me.ontouchend); - this._onMouseDown(event); - }; + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; - /** - * Event handler for touchmove event on mobile devices - */ - Graph3d.prototype._onTouchMove = function(event) { - this._onMouseMove(event); - }; - /** - * Event handler for touchend event on mobile devices - */ - Graph3d.prototype._onTouchEnd = function(event) { - this.touchDown = false; + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; + } - util.removeEventListener(document, 'touchmove', this.ontouchmove); - util.removeEventListener(document, 'touchend', this.ontouchend); + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } - this._onMouseUp(event); - }; + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - /** - * Event handler for mouse wheel event, used to zoom the graph - * Code from http://adomas.org/javascript-mouse-wheel/ - * @param {event} event The event - */ - Graph3d.prototype._onWheel = function(event) { - if (!event) /* For IE. */ - event = window.event; + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; - // retrieve delta - var delta = 0; - if (event.wheelDelta) { /* IE/Opera. */ - delta = event.wheelDelta/120; - } else if (event.detail) { /* Mozilla case. */ - // In Mozilla, sign of delta is different than in IE. - // Also, delta is multiple of 3. - delta = -event.detail/3; - } + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; + } - // If delta is nonzero, handle it. - // Basically, delta is now positive if wheel was scrolled up, - // and negative, if wheel was scrolled down. - if (delta) { - var oldLength = this.camera.getArmLength(); - var newLength = oldLength * (1 - delta / 10); + /************************************ + Top Level Functions + ************************************/ - this.camera.setArmLength(newLength); - this.redraw(); + function makeMoment(config) { + var input = config._i, + format = config._f, + res; - this._hideTooltip(); - } + config._locale = config._locale || moment.localeData(config._l); - // fire a cameraPositionChange event - var parameters = this.getCameraPosition(); - this.emit('cameraPositionChange', parameters); + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); + } - // Prevent default actions caused by mouse wheel. - // That might be ugly, but we handle scrolls somehow - // anyway, so don't bother here.. - util.preventDefault(event); - }; + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } - /** - * Test whether a point lies inside given 2D triangle - * @param {Point2d} point - * @param {Point2d[]} triangle - * @return {boolean} Returns true if given point lies inside or on the edge of the triangle - * @private - */ - Graph3d.prototype._insideTriangle = function (point, triangle) { - var a = triangle[0], - b = triangle[1], - c = triangle[2]; + if (moment.isMoment(input)) { + return new Moment(input, true); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); + } - function sign (x) { - return x > 0 ? 1 : x < 0 ? -1 : 0; - } + res = new Moment(config); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } - var as = sign((b.x - a.x) * (point.y - a.y) - (b.y - a.y) * (point.x - a.x)); - var bs = sign((c.x - b.x) * (point.y - b.y) - (c.y - b.y) * (point.x - b.x)); - var cs = sign((a.x - c.x) * (point.y - c.y) - (a.y - c.y) * (point.x - c.x)); + return res; + } - // each of the three signs must be either equal to each other or zero - return (as == 0 || bs == 0 || as == bs) && - (bs == 0 || cs == 0 || bs == cs) && - (as == 0 || cs == 0 || as == cs); - }; + moment = function (input, format, locale, strict) { + var c; - /** - * Find a data point close to given screen position (x, y) - * @param {Number} x - * @param {Number} y - * @return {Object | null} The closest data point or null if not close to any data point - * @private - */ - Graph3d.prototype._dataPointFromXY = function (x, y) { - var i, - distMax = 100, // px - dataPoint = null, - closestDataPoint = null, - closestDist = null, - center = new Point2d(x, y); + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = locale; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); - if (this.style === Graph3d.STYLE.BAR || - this.style === Graph3d.STYLE.BARCOLOR || - this.style === Graph3d.STYLE.BARSIZE) { - // the data points are ordered from far away to closest - for (i = this.dataPoints.length - 1; i >= 0; i--) { - dataPoint = this.dataPoints[i]; - var surfaces = dataPoint.surfaces; - if (surfaces) { - for (var s = surfaces.length - 1; s >= 0; s--) { - // split each surface in two triangles, and see if the center point is inside one of these - var surface = surfaces[s]; - var corners = surface.corners; - var triangle1 = [corners[0].screen, corners[1].screen, corners[2].screen]; - var triangle2 = [corners[2].screen, corners[3].screen, corners[0].screen]; - if (this._insideTriangle(center, triangle1) || - this._insideTriangle(center, triangle2)) { - // return immediately at the first hit - return dataPoint; - } + return makeMoment(c); + }; + + moment.suppressDeprecationWarnings = false; + + moment.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); } - } - } - } - else { - // find the closest data point, using distance to the center of the point on 2d screen - for (i = 0; i < this.dataPoints.length; i++) { - dataPoint = this.dataPoints[i]; - var point = dataPoint.screen; - if (point) { - var distX = Math.abs(x - point.x); - var distY = Math.abs(y - point.y); - var dist = Math.sqrt(distX * distX + distY * distY); + ); - if ((closestDist === null || dist < closestDist) && dist < distMax) { - closestDist = dist; - closestDataPoint = dataPoint; + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; } - } + if (!moments.length) { + return moment(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; + } + } + return res; } - } + moment.min = function () { + var args = [].slice.call(arguments, 0); - return closestDataPoint; - }; + return pickBy('isBefore', args); + }; - /** - * Display a tooltip for given data point - * @param {Object} dataPoint - * @private - */ - Graph3d.prototype._showTooltip = function (dataPoint) { - var content, line, dot; + moment.max = function () { + var args = [].slice.call(arguments, 0); - if (!this.tooltip) { - content = document.createElement('div'); - content.style.position = 'absolute'; - content.style.padding = '10px'; - content.style.border = '1px solid #4d4d4d'; - content.style.color = '#1a1a1a'; - content.style.background = 'rgba(255,255,255,0.7)'; - content.style.borderRadius = '2px'; - content.style.boxShadow = '5px 5px 10px rgba(128,128,128,0.5)'; + return pickBy('isAfter', args); + }; - line = document.createElement('div'); - line.style.position = 'absolute'; - line.style.height = '40px'; - line.style.width = '0'; - line.style.borderLeft = '1px solid #4d4d4d'; + // creating with utc + moment.utc = function (input, format, locale, strict) { + var c; - dot = document.createElement('div'); - dot.style.position = 'absolute'; - dot.style.height = '0'; - dot.style.width = '0'; - dot.style.border = '5px solid #4d4d4d'; - dot.style.borderRadius = '5px'; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); - this.tooltip = { - dataPoint: null, - dom: { - content: content, - line: line, - dot: dot - } + return makeMoment(c).utc(); }; - } - else { - content = this.tooltip.dom.content; - line = this.tooltip.dom.line; - dot = this.tooltip.dom.dot; - } - this._hideTooltip(); + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; - this.tooltip.dataPoint = dataPoint; - if (typeof this.showTooltip === 'function') { - content.innerHTML = this.showTooltip(dataPoint.point); - } - else { - content.innerHTML = '' + - '' + - '' + - '' + - '
x:' + dataPoint.point.x + '
y:' + dataPoint.point.y + '
z:' + dataPoint.point.z + '
'; - } + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso, + diffRes; - content.style.left = '0'; - content.style.top = '0'; - this.frame.appendChild(content); - this.frame.appendChild(line); - this.frame.appendChild(dot); + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); - // calculate sizes - var contentWidth = content.offsetWidth; - var contentHeight = content.offsetHeight; - var lineHeight = line.offsetHeight; - var dotWidth = dot.offsetWidth; - var dotHeight = dot.offsetHeight; + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } - var left = dataPoint.screen.x - contentWidth / 2; - left = Math.min(Math.max(left, 10), this.frame.clientWidth - 10 - contentWidth); + ret = new Duration(duration); - line.style.left = dataPoint.screen.x + 'px'; - line.style.top = (dataPoint.screen.y - lineHeight) + 'px'; - content.style.left = left + 'px'; - content.style.top = (dataPoint.screen.y - lineHeight - contentHeight) + 'px'; - dot.style.left = (dataPoint.screen.x - dotWidth / 2) + 'px'; - dot.style.top = (dataPoint.screen.y - dotHeight / 2) + 'px'; - }; + if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } - /** - * Hide the tooltip when displayed - * @private - */ - Graph3d.prototype._hideTooltip = function () { - if (this.tooltip) { - this.tooltip.dataPoint = null; + return ret; + }; - for (var prop in this.tooltip.dom) { - if (this.tooltip.dom.hasOwnProperty(prop)) { - var elem = this.tooltip.dom[prop]; - if (elem && elem.parentNode) { - elem.parentNode.removeChild(elem); - } - } - } - } - }; + // version number + moment.version = VERSION; - /**--------------------------------------------------------------------------**/ + // default format + moment.defaultFormat = isoFormat; + + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; - /** - * Get the horizontal mouse position from a mouse event - * @param {Event} event - * @return {Number} mouse x - */ - function getMouseX (event) { - if ('clientX' in event) return event.clientX; - return event.targetTouches[0] && event.targetTouches[0].clientX || 0; - } + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; - /** - * Get the vertical mouse position from a mouse event - * @param {Event} event - * @return {Number} mouse y - */ - function getMouseY (event) { - if ('clientY' in event) return event.clientY; - return event.targetTouches[0] && event.targetTouches[0].clientY || 0; - } + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function (threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return relativeTimeThresholds[threshold]; + } + relativeTimeThresholds[threshold] = limit; + return true; + }; - module.exports = Graph3d; + moment.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + function (key, value) { + return moment.locale(key, value); + } + ); + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + moment.locale = function (key, values) { + var data; + if (key) { + if (typeof(values) !== 'undefined') { + data = moment.defineLocale(key, values); + } + else { + data = moment.localeData(key); + } -/***/ }, -/* 7 */ -/***/ function(module, exports, __webpack_require__) { + if (data) { + moment.duration._locale = moment._locale = data; + } + } - var Point3d = __webpack_require__(10); + return moment._locale._abbr; + }; - /** - * @class Camera - * The camera is mounted on a (virtual) camera arm. The camera arm can rotate - * The camera is always looking in the direction of the origin of the arm. - * This way, the camera always rotates around one fixed point, the location - * of the camera arm. - * - * Documentation: - * http://en.wikipedia.org/wiki/3D_projection - */ - function Camera() { - this.armLocation = new Point3d(); - this.armRotation = {}; - this.armRotation.horizontal = 0; - this.armRotation.vertical = 0; - this.armLength = 1.7; + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); + } + locales[name].set(values); - this.cameraLocation = new Point3d(); - this.cameraRotation = new Point3d(0.5*Math.PI, 0, 0); + // backwards compat for now: also set the locale + moment.locale(name); - this.calculateCameraOrientation(); - } + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + }; - /** - * Set the location (origin) of the arm - * @param {Number} x Normalized value of x - * @param {Number} y Normalized value of y - * @param {Number} z Normalized value of z - */ - Camera.prototype.setArmLocation = function(x, y, z) { - this.armLocation.x = x; - this.armLocation.y = y; - this.armLocation.z = z; + moment.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + function (key) { + return moment.localeData(key); + } + ); - this.calculateCameraOrientation(); - }; + // returns locale data + moment.localeData = function (key) { + var locale; - /** - * Set the rotation of the camera arm - * @param {Number} horizontal The horizontal rotation, between 0 and 2*PI. - * Optional, can be left undefined. - * @param {Number} vertical The vertical rotation, between 0 and 0.5*PI - * if vertical=0.5*PI, the graph is shown from the - * top. Optional, can be left undefined. - */ - Camera.prototype.setArmRotation = function(horizontal, vertical) { - if (horizontal !== undefined) { - this.armRotation.horizontal = horizontal; - } + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } - if (vertical !== undefined) { - this.armRotation.vertical = vertical; - if (this.armRotation.vertical < 0) this.armRotation.vertical = 0; - if (this.armRotation.vertical > 0.5*Math.PI) this.armRotation.vertical = 0.5*Math.PI; - } + if (!key) { + return moment._locale; + } - if (horizontal !== undefined || vertical !== undefined) { - this.calculateCameraOrientation(); - } - }; + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } - /** - * Retrieve the current arm rotation - * @return {object} An object with parameters horizontal and vertical - */ - Camera.prototype.getArmRotation = function() { - var rot = {}; - rot.horizontal = this.armRotation.horizontal; - rot.vertical = this.armRotation.vertical; + return chooseLocale(key); + }; - return rot; - }; + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && hasOwnProp(obj, '_isAMomentObject')); + }; - /** - * Set the (normalized) length of the camera arm. - * @param {Number} length A length between 0.71 and 5.0 - */ - Camera.prototype.setArmLength = function(length) { - if (length === undefined) - return; + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; - this.armLength = length; + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); + } - // Radius must be larger than the corner of the graph, - // which has a distance of sqrt(0.5^2+0.5^2) = 0.71 from the center of the - // graph - if (this.armLength < 0.71) this.armLength = 0.71; - if (this.armLength > 5.0) this.armLength = 5.0; + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; - this.calculateCameraOrientation(); - }; + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); + } + else { + m._pf.userInvalidated = true; + } - /** - * Retrieve the arm length - * @return {Number} length - */ - Camera.prototype.getArmLength = function() { - return this.armLength; - }; + return m; + }; - /** - * Retrieve the camera location - * @return {Point3d} cameraLocation - */ - Camera.prototype.getCameraLocation = function() { - return this.cameraLocation; - }; + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; - /** - * Retrieve the camera rotation - * @return {Point3d} cameraRotation - */ - Camera.prototype.getCameraRotation = function() { - return this.cameraRotation; - }; + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; - /** - * Calculate the location and rotation of the camera based on the - * position and orientation of the camera arm - */ - Camera.prototype.calculateCameraOrientation = function() { - // calculate location of the camera - this.cameraLocation.x = this.armLocation.x - this.armLength * Math.sin(this.armRotation.horizontal) * Math.cos(this.armRotation.vertical); - this.cameraLocation.y = this.armLocation.y - this.armLength * Math.cos(this.armRotation.horizontal) * Math.cos(this.armRotation.vertical); - this.cameraLocation.z = this.armLocation.z + this.armLength * Math.sin(this.armRotation.vertical); + moment.isDate = isDate; - // calculate rotation of the camera - this.cameraRotation.x = Math.PI/2 - this.armRotation.vertical; - this.cameraRotation.y = 0; - this.cameraRotation.z = -this.armRotation.horizontal; - }; + /************************************ + Moment Prototype + ************************************/ - module.exports = Camera; -/***/ }, -/* 8 */ -/***/ function(module, exports, __webpack_require__) { + extend(moment.fn = Moment.prototype, { - var DataView = __webpack_require__(4); + clone : function () { + return moment(this); + }, - /** - * @class Filter - * - * @param {DataSet} data The google data table - * @param {Number} column The index of the column to be filtered - * @param {Graph} graph The graph - */ - function Filter (data, column, graph) { - this.data = data; - this.column = column; - this.graph = graph; // the parent graph + valueOf : function () { + return +this._d - ((this._offset || 0) * 60000); + }, - this.index = undefined; - this.value = undefined; + unix : function () { + return Math.floor(+this / 1000); + }, - // read all distinct values and select the first one - this.values = graph.getDistinctValues(data.get(), this.column); + toString : function () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + }, - // sort both numeric and string values correctly - this.values.sort(function (a, b) { - return a > b ? 1 : a < b ? -1 : 0; - }); + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, - if (this.values.length > 0) { - this.selectValue(0); - } + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + if ('function' === typeof Date.prototype.toISOString) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + }, - // create an array with the filtered datapoints. this will be loaded afterwards - this.dataPoints = []; + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, - this.loaded = false; - this.onLoadCallback = undefined; + isValid : function () { + return isValid(this); + }, - if (graph.animationPreload) { - this.loaded = false; - this.loadInBackground(); - } - else { - this.loaded = true; - } - }; + isDSTShifted : function () { + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } + return false; + }, - /** - * Return the label - * @return {string} label - */ - Filter.prototype.isLoaded = function() { - return this.loaded; - }; + parsingFlags : function () { + return extend({}, this._pf); + }, + invalidAt: function () { + return this._pf.overflow; + }, - /** - * Return the loaded progress - * @return {Number} percentage between 0 and 100 - */ - Filter.prototype.getLoadedProgress = function() { - var len = this.values.length; + utc : function (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + }, - var i = 0; - while (this.dataPoints[i]) { - i++; - } + local : function (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; - return Math.round(i / len * 100); - }; + if (keepLocalTime) { + this.subtract(this._dateUtcOffset(), 'm'); + } + } + return this; + }, + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.localeData().postformat(output); + }, - /** - * Return the label - * @return {string} label - */ - Filter.prototype.getLabel = function() { - return this.graph.filterLabel; - }; + add : createAdder(1, 'add'), + subtract : createAdder(-1, 'subtract'), - /** - * Return the columnIndex of the filter - * @return {Number} columnIndex - */ - Filter.prototype.getColumn = function() { - return this.column; - }; + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, + anchor, diff, output, daysAdjust; - /** - * Return the currently selected value. Returns undefined if there is no selection - * @return {*} value - */ - Filter.prototype.getSelectedValue = function() { - if (this.index === undefined) - return undefined; + units = normalizeUnits(units); - return this.values[this.index]; - }; + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + diff = this - that; + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; + } + return asFloat ? output : absRound(output); + }, - /** - * Retrieve all values of the filter - * @return {Array} values - */ - Filter.prototype.getValues = function() { - return this.values; - }; + from : function (time, withoutSuffix) { + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + }, - /** - * Retrieve one value of the filter - * @param {Number} index - * @return {*} value - */ - Filter.prototype.getValue = function(index) { - if (index >= this.values.length) - throw 'Error: index out of range'; + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, - return this.values[index]; - }; + calendar : function (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're locat/utc/offset + // or not. + var now = time || moment(), + sod = makeAs(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this, moment(now))); + }, + isLeapYear : function () { + return isLeapYear(this.year()); + }, - /** - * Retrieve the (filtered) dataPoints for the currently selected filter index - * @param {Number} [index] (optional) - * @return {Array} dataPoints - */ - Filter.prototype._getDataPoints = function(index) { - if (index === undefined) - index = this.index; + isDST : function () { + return (this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset()); + }, - if (index === undefined) - return []; + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + }, - var dataPoints; - if (this.dataPoints[index]) { - dataPoints = this.dataPoints[index]; - } - else { - var f = {}; - f.column = this.column; - f.value = this.values[index]; + month : makeAccessor('Month', true), - var dataView = new DataView(this.data,{filter: function (item) {return (item[f.column] == f.value);}}).get(); - dataPoints = this.graph._getDataPoints(dataView); + startOf : function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } - this.dataPoints[index] = dataPoints; - } + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } - return dataPoints; - }; + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + return this; + }, + endOf: function (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + }, - /** - * Set a callback function when the filter is fully loaded. - */ - Filter.prototype.setOnLoadCallback = function(callback) { - this.onLoadCallback = callback; - }; + isAfter: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this > +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return inputMs < +this.clone().startOf(units); + } + }, + isBefore: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this < +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return +this.clone().endOf(units) < inputMs; + } + }, - /** - * Add a value to the list with available values for this filter - * No double entries will be created. - * @param {Number} index - */ - Filter.prototype.selectValue = function(index) { - if (index >= this.values.length) - throw 'Error: index out of range'; + isBetween: function (from, to, units) { + return this.isAfter(from, units) && this.isBefore(to, units); + }, - this.index = index; - this.value = this.values[index]; - }; + isSame: function (input, units) { + var inputMs; + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this === +input; + } else { + inputMs = +moment(input); + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + } + }, - /** - * Load all filtered rows in the background one by one - * Start this method without providing an index! - */ - Filter.prototype.loadInBackground = function(index) { - if (index === undefined) - index = 0; + min: deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), - var frame = this.graph.frame; + max: deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; + } + ), - if (index < this.values.length) { - var dataPointsTemp = this._getDataPoints(index); - //this.graph.redrawInfo(); // TODO: not neat + zone : deprecate( + 'moment().zone is deprecated, use moment().utcOffset instead. ' + + 'https://github.com/moment/moment/issues/1779', + function (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } - // create a progress box - if (frame.progress === undefined) { - frame.progress = document.createElement('DIV'); - frame.progress.style.position = 'absolute'; - frame.progress.style.color = 'gray'; - frame.appendChild(frame.progress); - } - var progress = this.getLoadedProgress(); - frame.progress.innerHTML = 'Loading animation... ' + progress + '%'; - // TODO: this is no nice solution... - frame.progress.style.bottom = 60 + 'px'; // TODO: use height of slider - frame.progress.style.left = 10 + 'px'; + this.utcOffset(input, keepLocalTime); - var me = this; - setTimeout(function() {me.loadInBackground(index+1);}, 10); - this.loaded = false; - } - else { - this.loaded = true; + return this; + } else { + return -this.utcOffset(); + } + } + ), - // remove the progress box - if (frame.progress !== undefined) { - frame.removeChild(frame.progress); - frame.progress = undefined; - } + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + utcOffset : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = utcOffsetFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._dateUtcOffset(); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } + } - if (this.onLoadCallback) - this.onLoadCallback(); - } - }; + return this; + } else { + return this._isUTC ? offset : this._dateUtcOffset(); + } + }, - module.exports = Filter; + isLocal : function () { + return !this._isUTC; + }, + isUtcOffset : function () { + return this._isUTC; + }, -/***/ }, -/* 9 */ -/***/ function(module, exports, __webpack_require__) { + isUtc : function () { + return this._isUTC && this._offset === 0; + }, - /** - * @prototype Point2d - * @param {Number} [x] - * @param {Number} [y] - */ - function Point2d (x, y) { - this.x = x !== undefined ? x : 0; - this.y = y !== undefined ? y : 0; - } + zoneAbbr : function () { + return this._isUTC ? 'UTC' : ''; + }, - module.exports = Point2d; + zoneName : function () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + }, + parseZone : function () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(utcOffsetFromString(this._i)); + } + return this; + }, -/***/ }, -/* 10 */ -/***/ function(module, exports, __webpack_require__) { + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).utcOffset(); + } - /** - * @prototype Point3d - * @param {Number} [x] - * @param {Number} [y] - * @param {Number} [z] - */ - function Point3d(x, y, z) { - this.x = x !== undefined ? x : 0; - this.y = y !== undefined ? y : 0; - this.z = z !== undefined ? z : 0; - }; + return (this.utcOffset() - input) % 60 === 0; + }, - /** - * Subtract the two provided points, returns a-b - * @param {Point3d} a - * @param {Point3d} b - * @return {Point3d} a-b - */ - Point3d.subtract = function(a, b) { - var sub = new Point3d(); - sub.x = a.x - b.x; - sub.y = a.y - b.y; - sub.z = a.z - b.z; - return sub; - }; + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, - /** - * Add the two provided points, returns a+b - * @param {Point3d} a - * @param {Point3d} b - * @return {Point3d} a+b - */ - Point3d.add = function(a, b) { - var sum = new Point3d(); - sum.x = a.x + b.x; - sum.y = a.y + b.y; - sum.z = a.z + b.z; - return sum; - }; + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + }, - /** - * Calculate the average of two 3d points - * @param {Point3d} a - * @param {Point3d} b - * @return {Point3d} The average, (a+b)/2 - */ - Point3d.avg = function(a, b) { - return new Point3d( - (a.x + b.x) / 2, - (a.y + b.y) / 2, - (a.z + b.z) / 2 - ); - }; + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, - /** - * Calculate the cross product of the two provided points, returns axb - * Documentation: http://en.wikipedia.org/wiki/Cross_product - * @param {Point3d} a - * @param {Point3d} b - * @return {Point3d} cross product axb - */ - Point3d.crossProduct = function(a, b) { - var crossproduct = new Point3d(); + weekYear : function (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + }, - crossproduct.x = a.y * b.z - a.z * b.y; - crossproduct.y = a.z * b.x - a.x * b.z; - crossproduct.z = a.x * b.y - a.y * b.x; + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + }, - return crossproduct; - }; + week : function (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + }, + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - /** - * Rtrieve the length of the vector (or the distance from this point to the origin - * @return {Number} length - */ - Point3d.prototype.length = function() { - return Math.sqrt( - this.x * this.x + - this.y * this.y + - this.z * this.z - ); - }; + weekday : function (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + }, - module.exports = Point3d; + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + }, + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, -/***/ }, -/* 11 */ -/***/ function(module, exports, __webpack_require__) { + weeksInYear : function () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, - var util = __webpack_require__(1); + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, - /** - * @constructor Slider - * - * An html slider control with start/stop/prev/next buttons - * @param {Element} container The element where the slider will be created - * @param {Object} options Available options: - * {boolean} visible If true (default) the - * slider is visible. - */ - function Slider(container, options) { - if (container === undefined) { - throw 'Error: No container element defined'; - } - this.container = container; - this.visible = (options && options.visible != undefined) ? options.visible : true; + set : function (units, value) { + var unit; + if (typeof units === 'object') { + for (unit in units) { + this.set(unit, units[unit]); + } + } + else { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + } + return this; + }, - if (this.visible) { - this.frame = document.createElement('DIV'); - //this.frame.style.backgroundColor = '#E5E5E5'; - this.frame.style.width = '100%'; - this.frame.style.position = 'relative'; - this.container.appendChild(this.frame); + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + locale : function (key) { + var newLocaleData; - this.frame.prev = document.createElement('INPUT'); - this.frame.prev.type = 'BUTTON'; - this.frame.prev.value = 'Prev'; - this.frame.appendChild(this.frame.prev); + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = moment.localeData(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + }, - this.frame.play = document.createElement('INPUT'); - this.frame.play.type = 'BUTTON'; - this.frame.play.value = 'Play'; - this.frame.appendChild(this.frame.play); + lang : deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ), - this.frame.next = document.createElement('INPUT'); - this.frame.next.type = 'BUTTON'; - this.frame.next.value = 'Next'; - this.frame.appendChild(this.frame.next); + localeData : function () { + return this._locale; + }, - this.frame.bar = document.createElement('INPUT'); - this.frame.bar.type = 'BUTTON'; - this.frame.bar.style.position = 'absolute'; - this.frame.bar.style.border = '1px solid red'; - this.frame.bar.style.width = '100px'; - this.frame.bar.style.height = '6px'; - this.frame.bar.style.borderRadius = '2px'; - this.frame.bar.style.MozBorderRadius = '2px'; - this.frame.bar.style.border = '1px solid #7F7F7F'; - this.frame.bar.style.backgroundColor = '#E5E5E5'; - this.frame.appendChild(this.frame.bar); + _dateUtcOffset : function () { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(this._d.getTimezoneOffset() / 15) * 15; + } - this.frame.slide = document.createElement('INPUT'); - this.frame.slide.type = 'BUTTON'; - this.frame.slide.style.margin = '0px'; - this.frame.slide.value = ' '; - this.frame.slide.style.position = 'relative'; - this.frame.slide.style.left = '-100px'; - this.frame.appendChild(this.frame.slide); + }); - // create events - var me = this; - this.frame.slide.onmousedown = function (event) {me._onMouseDown(event);}; - this.frame.prev.onclick = function (event) {me.prev(event);}; - this.frame.play.onclick = function (event) {me.togglePlay(event);}; - this.frame.next.onclick = function (event) {me.next(event);}; - } + function rawMonthSetter(mom, value) { + var dayOfMonth; - this.onChangeCallback = undefined; + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } - this.values = []; - this.index = undefined; + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } - this.playTimeout = undefined; - this.playInterval = 1000; // milliseconds - this.playLoop = true; - } + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } - /** - * Select the previous index - */ - Slider.prototype.prev = function() { - var index = this.getIndex(); - if (index > 0) { - index--; - this.setIndex(index); - } - }; + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } - /** - * Select the next index - */ - Slider.prototype.next = function() { - var index = this.getIndex(); - if (index < this.values.length - 1) { - index++; - this.setIndex(index); - } - }; + function makeAccessor(unit, keepTime) { + return function (value) { + if (value != null) { + rawSetter(this, unit, value); + moment.updateOffset(this, keepTime); + return this; + } else { + return rawGetter(this, unit); + } + }; + } - /** - * Select the next index - */ - Slider.prototype.playNext = function() { - var start = new Date(); + moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); + moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); + moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); + // moment.fn.month is defined separately + moment.fn.date = makeAccessor('Date', true); + moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); + moment.fn.year = makeAccessor('FullYear', true); + moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); - var index = this.getIndex(); - if (index < this.values.length - 1) { - index++; - this.setIndex(index); - } - else if (this.playLoop) { - // jump to the start - index = 0; - this.setIndex(index); - } + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + moment.fn.quarters = moment.fn.quarter; - var end = new Date(); - var diff = (end - start); + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; - // calculate how much time it to to set the index and to execute the callback - // function. - var interval = Math.max(this.playInterval - diff, 0); - // document.title = diff // TODO: cleanup + // alias isUtc for dev-friendliness + moment.fn.isUTC = moment.fn.isUtc; - var me = this; - this.playTimeout = setTimeout(function() {me.playNext();}, interval); - }; + /************************************ + Duration Prototype + ************************************/ - /** - * Toggle start or stop playing - */ - Slider.prototype.togglePlay = function() { - if (this.playTimeout === undefined) { - this.play(); - } else { - this.stop(); - } - }; - /** - * Start playing - */ - Slider.prototype.play = function() { - // Test whether already playing - if (this.playTimeout) return; + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; + } - this.playNext(); + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; + } - if (this.frame) { - this.frame.play.value = 'Stop'; - } - }; + extend(moment.duration.fn = Duration.prototype, { - /** - * Stop playing - */ - Slider.prototype.stop = function() { - clearInterval(this.playTimeout); - this.playTimeout = undefined; + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years = 0; - if (this.frame) { - this.frame.play.value = 'Play'; - } - }; + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - /** - * Set a callback function which will be triggered when the value of the - * slider bar has changed. - */ - Slider.prototype.setOnChangeCallback = function(callback) { - this.onChangeCallback = callback; - }; + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; - /** - * Set the interval for playing the list - * @param {Number} interval The interval in milliseconds - */ - Slider.prototype.setPlayInterval = function(interval) { - this.playInterval = interval; - }; + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; - /** - * Retrieve the current play interval - * @return {Number} interval The interval in milliseconds - */ - Slider.prototype.getPlayInterval = function(interval) { - return this.playInterval; - }; + hours = absRound(minutes / 60); + data.hours = hours % 24; - /** - * Set looping on or off - * @pararm {boolean} doLoop If true, the slider will jump to the start when - * the end is passed, and will jump to the end - * when the start is passed. - */ - Slider.prototype.setPlayLoop = function(doLoop) { - this.playLoop = doLoop; - }; + days += absRound(hours / 24); + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); - /** - * Execute the onchange callback function - */ - Slider.prototype.onChange = function() { - if (this.onChangeCallback !== undefined) { - this.onChangeCallback(); - } - }; + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absRound(days / 30); + days %= 30; - /** - * redraw the slider on the correct place - */ - Slider.prototype.redraw = function() { - if (this.frame) { - // resize the bar - this.frame.bar.style.top = (this.frame.clientHeight/2 - - this.frame.bar.offsetHeight/2) + 'px'; - this.frame.bar.style.width = (this.frame.clientWidth - - this.frame.prev.clientWidth - - this.frame.play.clientWidth - - this.frame.next.clientWidth - 30) + 'px'; + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; - // position the slider button - var left = this.indexToLeft(this.index); - this.frame.slide.style.left = (left) + 'px'; - } - }; + data.days = days; + data.months = months; + data.years = years; + }, + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); - /** - * Set the list with values for the slider - * @param {Array} values A javascript array with values (any type) - */ - Slider.prototype.setValues = function(values) { - this.values = values; + this._data.milliseconds = Math.abs(this._data.milliseconds); + this._data.seconds = Math.abs(this._data.seconds); + this._data.minutes = Math.abs(this._data.minutes); + this._data.hours = Math.abs(this._data.hours); + this._data.months = Math.abs(this._data.months); + this._data.years = Math.abs(this._data.years); - if (this.values.length > 0) - this.setIndex(0); - else - this.index = undefined; - }; + return this; + }, - /** - * Select a value by its index - * @param {Number} index - */ - Slider.prototype.setIndex = function(index) { - if (index < this.values.length) { - this.index = index; + weeks : function () { + return absRound(this.days() / 7); + }, - this.redraw(); - this.onChange(); - } - else { - throw 'Error: index out of range'; - } - }; + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, - /** - * retrieve the index of the currently selected vaue - * @return {Number} index - */ - Slider.prototype.getIndex = function() { - return this.index; - }; + humanize : function (withSuffix) { + var output = relativeTime(this, !withSuffix, this.localeData()); + if (withSuffix) { + output = this.localeData().pastFuture(+this, output); + } - /** - * retrieve the currently selected value - * @return {*} value - */ - Slider.prototype.get = function() { - return this.values[this.index]; - }; + return this.localeData().postformat(output); + }, + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); - Slider.prototype._onMouseDown = function(event) { - // only react on left mouse button down - var leftButtonDown = event.which ? (event.which === 1) : (event.button === 1); - if (!leftButtonDown) return; + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; - this.startClientX = event.clientX; - this.startSlideX = parseFloat(this.frame.slide.style.left); + this._bubble(); - this.frame.style.cursor = 'move'; + return this; + }, - // add event listeners to handle moving the contents - // we store the function onmousemove and onmouseup in the graph, so we can - // remove the eventlisteners lateron in the function mouseUp() - var me = this; - this.onmousemove = function (event) {me._onMouseMove(event);}; - this.onmouseup = function (event) {me._onMouseUp(event);}; - util.addEventListener(document, 'mousemove', this.onmousemove); - util.addEventListener(document, 'mouseup', this.onmouseup); - util.preventDefault(event); - }; + subtract : function (input, val) { + var dur = moment.duration(input, val); + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; - Slider.prototype.leftToIndex = function (left) { - var width = parseFloat(this.frame.bar.style.width) - - this.frame.slide.clientWidth - 10; - var x = left - 3; + this._bubble(); - var index = Math.round(x / width * (this.values.length-1)); - if (index < 0) index = 0; - if (index > this.values.length-1) index = this.values.length-1; + return this; + }, - return index; - }; + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, - Slider.prototype.indexToLeft = function (index) { - var width = parseFloat(this.frame.bar.style.width) - - this.frame.slide.clientWidth - 10; + as : function (units) { + var days, months; + units = normalizeUnits(units); - var x = index / (this.values.length-1) * width; - var left = x + 3; + if (units === 'month' || units === 'year') { + days = this._days + this._milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(yearsToDays(this._months / 12)); + switch (units) { + case 'week': return days / 7 + this._milliseconds / 6048e5; + case 'day': return days + this._milliseconds / 864e5; + case 'hour': return days * 24 + this._milliseconds / 36e5; + case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; + case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + }, - return left; - }; + lang : moment.fn.lang, + locale : moment.fn.locale, + toIsoString : deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead ' + + '(notice the capitals)', + function () { + return this.toISOString(); + } + ), + toISOString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); - Slider.prototype._onMouseMove = function (event) { - var diff = event.clientX - this.startClientX; - var x = this.startSlideX + diff; + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } - var index = this.leftToIndex(x); + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); + }, - this.setIndex(index); + localeData : function () { + return this._locale; + }, - util.preventDefault(); - }; + toJSON : function () { + return this.toISOString(); + } + }); + moment.duration.fn.toString = moment.duration.fn.toISOString; - Slider.prototype._onMouseUp = function (event) { - this.frame.style.cursor = 'auto'; + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; + } - // remove event listeners - util.removeEventListener(document, 'mousemove', this.onmousemove); - util.removeEventListener(document, 'mouseup', this.onmouseup); + for (i in unitMillisecondFactors) { + if (hasOwnProp(unitMillisecondFactors, i)) { + makeDurationGetter(i.toLowerCase()); + } + } - util.preventDefault(); - }; + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); + }; + moment.duration.fn.asSeconds = function () { + return this.as('s'); + }; + moment.duration.fn.asMinutes = function () { + return this.as('m'); + }; + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; + moment.duration.fn.asMonths = function () { + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); + }; - module.exports = Slider; + /************************************ + Default Locale + ************************************/ -/***/ }, -/* 12 */ -/***/ function(module, exports, __webpack_require__) { + // Set default locale, other locale will inherit from English. + moment.locale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); - /** - * @prototype StepNumber - * The class StepNumber is an iterator for Numbers. You provide a start and end - * value, and a best step size. StepNumber itself rounds to fixed values and - * a finds the step that best fits the provided step. - * - * If prettyStep is true, the step size is chosen as close as possible to the - * provided step, but being a round value like 1, 2, 5, 10, 20, 50, .... - * - * Example usage: - * var step = new StepNumber(0, 10, 2.5, true); - * step.start(); - * while (!step.end()) { - * alert(step.getCurrent()); - * step.next(); - * } - * - * Version: 1.0 - * - * @param {Number} start The start value - * @param {Number} end The end value - * @param {Number} step Optional. Step size. Must be a positive value. - * @param {boolean} prettyStep Optional. If true, the step size is rounded - * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...) - */ - function StepNumber(start, end, step, prettyStep) { - // set default values - this._start = 0; - this._end = 0; - this._step = 1; - this.prettyStep = true; - this.precision = 5; + /* EMBED_LOCALES */ - this._current = 0; - this.setRange(start, end, step, prettyStep); - }; + /************************************ + Exposing Moment + ************************************/ + + function makeGlobal(shouldDeprecate) { + /*global ender:false */ + if (typeof ender !== 'undefined') { + return; + } + oldGlobalMoment = globalScope.moment; + if (shouldDeprecate) { + globalScope.moment = deprecate( + 'Accessing Moment through the global scope is ' + + 'deprecated, and will be removed in an upcoming ' + + 'release.', + moment); + } else { + globalScope.moment = moment; + } + } - /** - * Set a new range: start, end and step. - * - * @param {Number} start The start value - * @param {Number} end The end value - * @param {Number} step Optional. Step size. Must be a positive value. - * @param {boolean} prettyStep Optional. If true, the step size is rounded - * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...) - */ - StepNumber.prototype.setRange = function(start, end, step, prettyStep) { - this._start = start ? start : 0; - this._end = end ? end : 0; + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } else if (true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal === true) { + // release the global variable + globalScope.moment = oldGlobalMoment; + } - this.setStep(step, prettyStep); - }; + return moment; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + makeGlobal(true); + } else { + makeGlobal(); + } + }).call(this); + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(5)(module))) - /** - * Set a new step size - * @param {Number} step New step size. Must be a positive value - * @param {boolean} prettyStep Optional. If true, the provided step is rounded - * to a pretty step size (like 1, 2, 5, 10, 20, 50, ...) - */ - StepNumber.prototype.setStep = function(step, prettyStep) { - if (step === undefined || step <= 0) - return; +/***/ }, +/* 4 */ +/***/ function(module, exports, __webpack_require__) { - if (prettyStep !== undefined) - this.prettyStep = prettyStep; + function webpackContext(req) { + throw new Error("Cannot find module '" + req + "'."); + } + webpackContext.keys = function() { return []; }; + webpackContext.resolve = webpackContext; + module.exports = webpackContext; + webpackContext.id = 4; - if (this.prettyStep === true) - this._step = StepNumber.calculatePrettyStep(step); - else - this._step = step; - }; - /** - * Calculate a nice step size, closest to the desired step size. - * Returns a value in one of the ranges 1*10^n, 2*10^n, or 5*10^n, where n is an - * integer Number. For example 1, 2, 5, 10, 20, 50, etc... - * @param {Number} step Desired step size - * @return {Number} Nice step size - */ - StepNumber.calculatePrettyStep = function (step) { - var log10 = function (x) {return Math.log(x) / Math.LN10;}; +/***/ }, +/* 5 */ +/***/ function(module, exports, __webpack_require__) { - // try three steps (multiple of 1, 2, or 5 - var step1 = Math.pow(10, Math.round(log10(step))), - step2 = 2 * Math.pow(10, Math.round(log10(step / 2))), - step5 = 5 * Math.pow(10, Math.round(log10(step / 5))); + module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + module.children = []; + module.webpackPolyfill = 1; + } + return module; + } - // choose the best step (closest to minimum step) - var prettyStep = step1; - if (Math.abs(step2 - step) <= Math.abs(prettyStep - step)) prettyStep = step2; - if (Math.abs(step5 - step) <= Math.abs(prettyStep - step)) prettyStep = step5; - // for safety - if (prettyStep <= 0) { - prettyStep = 1; - } +/***/ }, +/* 6 */ +/***/ function(module, exports, __webpack_require__) { - return prettyStep; - }; + // DOM utility methods /** - * returns the current value of the step - * @return {Number} current value + * this prepares the JSON container for allocating SVG elements + * @param JSONcontainer + * @private */ - StepNumber.prototype.getCurrent = function () { - return parseFloat(this._current.toPrecision(this.precision)); + exports.prepareElements = function(JSONcontainer) { + // cleanup the redundant svgElements; + for (var elementType in JSONcontainer) { + if (JSONcontainer.hasOwnProperty(elementType)) { + JSONcontainer[elementType].redundant = JSONcontainer[elementType].used; + JSONcontainer[elementType].used = []; + } + } }; /** - * returns the current step size - * @return {Number} current step size + * this cleans up all the unused SVG elements. By asking for the parentNode, we only need to supply the JSON container from + * which to remove the redundant elements. + * + * @param JSONcontainer + * @private */ - StepNumber.prototype.getStep = function () { - return this._step; + exports.cleanupElements = function(JSONcontainer) { + // cleanup the redundant svgElements; + for (var elementType in JSONcontainer) { + if (JSONcontainer.hasOwnProperty(elementType)) { + if (JSONcontainer[elementType].redundant) { + for (var i = 0; i < JSONcontainer[elementType].redundant.length; i++) { + JSONcontainer[elementType].redundant[i].parentNode.removeChild(JSONcontainer[elementType].redundant[i]); + } + JSONcontainer[elementType].redundant = []; + } + } + } }; /** - * Set the current value to the largest value smaller than start, which - * is a multiple of the step size + * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer + * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. + * + * @param elementType + * @param JSONcontainer + * @param svgContainer + * @returns {*} + * @private */ - StepNumber.prototype.start = function() { - this._current = this._start - this._start % this._step; + exports.getSVGElement = function (elementType, JSONcontainer, svgContainer) { + var element; + // allocate SVG element, if it doesnt yet exist, create one. + if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before + // check if there is an redundant element + if (JSONcontainer[elementType].redundant.length > 0) { + element = JSONcontainer[elementType].redundant[0]; + JSONcontainer[elementType].redundant.shift(); + } + else { + // create a new element and add it to the SVG + element = document.createElementNS('http://www.w3.org/2000/svg', elementType); + svgContainer.appendChild(element); + } + } + else { + // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. + element = document.createElementNS('http://www.w3.org/2000/svg', elementType); + JSONcontainer[elementType] = {used: [], redundant: []}; + svgContainer.appendChild(element); + } + JSONcontainer[elementType].used.push(element); + return element; }; - /** - * Do a step, add the step size to the current value - */ - StepNumber.prototype.next = function () { - this._current += this._step; - }; /** - * Returns true whether the end is reached - * @return {boolean} True if the current value has passed the end value. + * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer + * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. + * + * @param elementType + * @param JSONcontainer + * @param DOMContainer + * @returns {*} + * @private */ - StepNumber.prototype.end = function () { - return (this._current > this._end); + exports.getDOMElement = function (elementType, JSONcontainer, DOMContainer, insertBefore) { + var element; + // allocate DOM element, if it doesnt yet exist, create one. + if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before + // check if there is an redundant element + if (JSONcontainer[elementType].redundant.length > 0) { + element = JSONcontainer[elementType].redundant[0]; + JSONcontainer[elementType].redundant.shift(); + } + else { + // create a new element and add it to the SVG + element = document.createElement(elementType); + if (insertBefore !== undefined) { + DOMContainer.insertBefore(element, insertBefore); + } + else { + DOMContainer.appendChild(element); + } + } + } + else { + // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. + element = document.createElement(elementType); + JSONcontainer[elementType] = {used: [], redundant: []}; + if (insertBefore !== undefined) { + DOMContainer.insertBefore(element, insertBefore); + } + else { + DOMContainer.appendChild(element); + } + } + JSONcontainer[elementType].used.push(element); + return element; }; - module.exports = StepNumber; - -/***/ }, -/* 13 */ -/***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(56); - var Hammer = __webpack_require__(45); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(3); - var DataView = __webpack_require__(4); - var Range = __webpack_require__(17); - var Core = __webpack_require__(46); - var TimeAxis = __webpack_require__(35); - var CurrentTime = __webpack_require__(26); - var CustomTime = __webpack_require__(27); - var ItemSet = __webpack_require__(32); /** - * Create a timeline visualization - * @param {HTMLElement} container - * @param {vis.DataSet | vis.DataView | Array | google.visualization.DataTable} [items] - * @param {vis.DataSet | vis.DataView | Array | google.visualization.DataTable} [groups] - * @param {Object} [options] See Timeline.setOptions for the available options. - * @constructor - * @extends Core + * draw a point object. this is a seperate function because it can also be called by the legend. + * The reason the JSONcontainer and the target SVG svgContainer have to be supplied is so the legend can use these functions + * as well. + * + * @param x + * @param y + * @param group + * @param JSONcontainer + * @param svgContainer + * @param labelObj + * @returns {*} */ - function Timeline (container, items, groups, options) { - if (!(this instanceof Timeline)) { - throw new SyntaxError('Constructor must be called with the new operator'); + exports.drawPoint = function(x, y, group, JSONcontainer, svgContainer, labelObj) { + var point; + if (group.options.drawPoints.style == 'circle') { + point = exports.getSVGElement('circle',JSONcontainer,svgContainer); + point.setAttributeNS(null, "cx", x); + point.setAttributeNS(null, "cy", y); + point.setAttributeNS(null, "r", 0.5 * group.options.drawPoints.size); } - - // if the third element is options, the forth is groups (optionally); - if (!(Array.isArray(groups) || groups instanceof DataSet || groups instanceof DataView) && groups instanceof Object) { - var forthArgument = options; - options = groups; - groups = forthArgument; + else { + point = exports.getSVGElement('rect',JSONcontainer,svgContainer); + point.setAttributeNS(null, "x", x - 0.5*group.options.drawPoints.size); + point.setAttributeNS(null, "y", y - 0.5*group.options.drawPoints.size); + point.setAttributeNS(null, "width", group.options.drawPoints.size); + point.setAttributeNS(null, "height", group.options.drawPoints.size); } - var me = this; - this.defaultOptions = { - start: null, - end: null, - - autoResize: true, - - orientation: 'bottom', // 'bottom', 'top', or 'both' - width: null, - height: null, - maxHeight: null, - minHeight: null - }; - this.options = util.deepExtend({}, this.defaultOptions); - - // Create the DOM, props, and emitter - this._create(container); - - // all components listed here will be repainted automatically - this.components = []; - - this.body = { - dom: this.dom, - domProps: this.props, - emitter: { - on: this.on.bind(this), - off: this.off.bind(this), - emit: this.emit.bind(this) - }, - hiddenDates: [], - util: { - getScale: function () { - return me.timeAxis.step.scale; - }, - getStep: function () { - return me.timeAxis.step.step; - }, - - toScreen: me._toScreen.bind(me), - toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width - toTime: me._toTime.bind(me), - toGlobalTime : me._toGlobalTime.bind(me) - } - }; - - // range - this.range = new Range(this.body); - this.components.push(this.range); - this.body.range = this.range; - - // time axis - this.timeAxis = new TimeAxis(this.body); - this.timeAxis2 = null; // used in case of orientation option 'both' - this.components.push(this.timeAxis); - - // current time bar - this.currentTime = new CurrentTime(this.body); - this.components.push(this.currentTime); + if(group.options.drawPoints.styles !== undefined) { + point.setAttributeNS(null, "style", group.group.options.drawPoints.styles); + } + point.setAttributeNS(null, "class", group.className + " point"); + //handle label + var label = exports.getSVGElement('text',JSONcontainer,svgContainer); + if (labelObj){ + if (labelObj.xOffset) { + x = x + labelObj.xOffset; + } - // custom time bar - // Note: time bar will be attached in this.setOptions when selected - this.customTime = new CustomTime(this.body); - this.components.push(this.customTime); + if (labelObj.yOffset) { + y = y + labelObj.yOffset; + } + if (labelObj.content) { + label.textContent = labelObj.content; + } - // item set - this.itemSet = new ItemSet(this.body); - this.components.push(this.itemSet); + if (labelObj.className) { + label.setAttributeNS(null, "class", labelObj.className + " label"); + } - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet - // apply options - if (options) { - this.setOptions(options); } + label.setAttributeNS(null, "x", x); + label.setAttributeNS(null, "y", y); + return point; + }; - // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! - if (groups) { - this.setGroups(groups); + /** + * draw a bar SVG element centered on the X coordinate + * + * @param x + * @param y + * @param className + */ + exports.drawBar = function (x, y, width, height, className, JSONcontainer, svgContainer) { + if (height != 0) { + if (height < 0) { + height *= -1; + y -= height; + } + var rect = exports.getSVGElement('rect',JSONcontainer, svgContainer); + rect.setAttributeNS(null, "x", x - 0.5 * width); + rect.setAttributeNS(null, "y", y); + rect.setAttributeNS(null, "width", width); + rect.setAttributeNS(null, "height", height); + rect.setAttributeNS(null, "class", className); } + }; - // create itemset - if (items) { - this.setItems(items); - } - else { - this._redraw(); - } - } +/***/ }, +/* 7 */ +/***/ function(module, exports, __webpack_require__) { - // Extend the functionality from Core - Timeline.prototype = new Core(); + var util = __webpack_require__(1); + var Queue = __webpack_require__(8); /** - * Force a redraw. The size of all items will be recalculated. - * Can be useful to manually redraw when option autoResize=false and the window - * has been resized, or when the items CSS has been changed. + * DataSet + * + * Usage: + * var dataSet = new DataSet({ + * fieldId: '_id', + * type: { + * // ... + * } + * }); + * + * dataSet.add(item); + * dataSet.add(data); + * dataSet.update(item); + * dataSet.update(data); + * dataSet.remove(id); + * dataSet.remove(ids); + * var data = dataSet.get(); + * var data = dataSet.get(id); + * var data = dataSet.get(ids); + * var data = dataSet.get(ids, options, data); + * dataSet.clear(); + * + * A data set can: + * - add/remove/update data + * - gives triggers upon changes in the data + * - can import/export data in various data formats + * + * @param {Array | DataTable} [data] Optional array with initial data + * @param {Object} [options] Available options: + * {String} fieldId Field name of the id in the + * items, 'id' by default. + * {Object. end) { - end = e; + for (var i = 0; i < subscribers.length; i++) { + var subscriber = subscribers[i]; + if (subscriber.callback) { + subscriber.callback(event, params, senderId || null); } - }); - - if (start !== null && end !== null) { - // calculate the new middle and interval for the window - var middle = (start + end) / 2; - var interval = Math.max((this.range.end - this.range.start), (end - start) * 1.1); - - var animate = (options && options.animate !== undefined) ? options.animate : true; - this.range.setRange(middle - interval / 2, middle + interval / 2, animate); } }; /** - * Get the data range of the item set. - * @returns {{min: Date, max: Date}} range A range with a start and end Date. - * When no minimum is found, min==null - * When no maximum is found, max==null + * Add data. + * Adding an item will fail when there already is an item with the same id. + * @param {Object | Array | DataTable} data + * @param {String} [senderId] Optional sender id + * @return {Array} addedIds Array with the ids of the added items */ - Timeline.prototype.getItemRange = function() { - // calculate min from start filed - var dataset = this.itemsData.getDataSet(), - min = null, - max = null; - - if (dataset) { - // calculate the minimum value of the field 'start' - var minItem = dataset.min('start'); - min = minItem ? util.convert(minItem.start, 'Date').valueOf() : null; - // Note: we convert first to Date and then to number because else - // a conversion from ISODate to Number will fail + DataSet.prototype.add = function (data, senderId) { + var addedIds = [], + id, + me = this; - // calculate maximum value of fields 'start' and 'end' - var maxStartItem = dataset.max('start'); - if (maxStartItem) { - max = util.convert(maxStartItem.start, 'Date').valueOf(); + if (Array.isArray(data)) { + // Array + for (var i = 0, len = data.length; i < len; i++) { + id = me._addItem(data[i]); + addedIds.push(id); } - var maxEndItem = dataset.max('end'); - if (maxEndItem) { - if (max == null) { - max = util.convert(maxEndItem.end, 'Date').valueOf(); - } - else { - max = Math.max(max, util.convert(maxEndItem.end, 'Date').valueOf()); + } + else if (util.isDataTable(data)) { + // Google DataTable + var columns = this._getColumnNames(data); + for (var row = 0, rows = data.getNumberOfRows(); row < rows; row++) { + var item = {}; + for (var col = 0, cols = columns.length; col < cols; col++) { + var field = columns[col]; + item[field] = data.getValue(row, col); } + + id = me._addItem(item); + addedIds.push(id); } } + else if (data instanceof Object) { + // Single item + id = me._addItem(data); + addedIds.push(id); + } + else { + throw new Error('Unknown dataType'); + } - return { - min: (min != null) ? new Date(min) : null, - max: (max != null) ? new Date(max) : null - }; - }; - - - module.exports = Timeline; - - -/***/ }, -/* 14 */ -/***/ function(module, exports, __webpack_require__) { + if (addedIds.length) { + this._trigger('add', {items: addedIds}, senderId); + } - var Emitter = __webpack_require__(56); - var Hammer = __webpack_require__(45); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(3); - var DataView = __webpack_require__(4); - var Range = __webpack_require__(17); - var Core = __webpack_require__(46); - var TimeAxis = __webpack_require__(35); - var CurrentTime = __webpack_require__(26); - var CustomTime = __webpack_require__(27); - var LineGraph = __webpack_require__(34); + return addedIds; + }; /** - * Create a timeline visualization - * @param {HTMLElement} container - * @param {vis.DataSet | Array | google.visualization.DataTable} [items] - * @param {Object} [options] See Graph2d.setOptions for the available options. - * @constructor - * @extends Core + * Update existing items. When an item does not exist, it will be created + * @param {Object | Array | DataTable} data + * @param {String} [senderId] Optional sender id + * @return {Array} updatedIds The ids of the added or updated items */ - function Graph2d (container, items, groups, options) { - // if the third element is options, the forth is groups (optionally); - if (!(Array.isArray(groups) || groups instanceof DataSet) && groups instanceof Object) { - var forthArgument = options; - options = groups; - groups = forthArgument; - } - + DataSet.prototype.update = function (data, senderId) { + var addedIds = []; + var updatedIds = []; + var updatedData = []; var me = this; - this.defaultOptions = { - start: null, - end: null, - - autoResize: true, - - orientation: 'bottom', - width: null, - height: null, - maxHeight: null, - minHeight: null - }; - this.options = util.deepExtend({}, this.defaultOptions); - - // Create the DOM, props, and emitter - this._create(container); - - // all components listed here will be repainted automatically - this.components = []; + var fieldId = me._fieldId; - this.body = { - dom: this.dom, - domProps: this.props, - emitter: { - on: this.on.bind(this), - off: this.off.bind(this), - emit: this.emit.bind(this) - }, - hiddenDates: [], - util: { - toScreen: me._toScreen.bind(me), - toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width - toTime: me._toTime.bind(me), - toGlobalTime : me._toGlobalTime.bind(me) + var addOrUpdate = function (item) { + var id = item[fieldId]; + if (me._data[id]) { + // update item + id = me._updateItem(item); + updatedIds.push(id); + updatedData.push(item); + } + else { + // add new item + id = me._addItem(item); + addedIds.push(id); } }; - // range - this.range = new Range(this.body); - this.components.push(this.range); - this.body.range = this.range; - - // time axis - this.timeAxis = new TimeAxis(this.body); - this.components.push(this.timeAxis); - //this.body.util.snap = this.timeAxis.snap.bind(this.timeAxis); - - // current time bar - this.currentTime = new CurrentTime(this.body); - this.components.push(this.currentTime); - - // custom time bar - // Note: time bar will be attached in this.setOptions when selected - this.customTime = new CustomTime(this.body); - this.components.push(this.customTime); - - // item set - this.linegraph = new LineGraph(this.body); - this.components.push(this.linegraph); - - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet - - // apply options - if (options) { - this.setOptions(options); + if (Array.isArray(data)) { + // Array + for (var i = 0, len = data.length; i < len; i++) { + addOrUpdate(data[i]); + } } + else if (util.isDataTable(data)) { + // Google DataTable + var columns = this._getColumnNames(data); + for (var row = 0, rows = data.getNumberOfRows(); row < rows; row++) { + var item = {}; + for (var col = 0, cols = columns.length; col < cols; col++) { + var field = columns[col]; + item[field] = data.getValue(row, col); + } - // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! - if (groups) { - this.setGroups(groups); + addOrUpdate(item); + } } - - // create itemset - if (items) { - this.setItems(items); + else if (data instanceof Object) { + // Single item + addOrUpdate(data); } else { - this._redraw(); + throw new Error('Unknown dataType'); } - } - - // Extend the functionality from Core - Graph2d.prototype = new Core(); - - /** - * Set items - * @param {vis.DataSet | Array | google.visualization.DataTable | null} items - */ - Graph2d.prototype.setItems = function(items) { - var initialLoad = (this.itemsData == null); - // convert to type DataSet when needed - var newDataSet; - if (!items) { - newDataSet = null; - } - else if (items instanceof DataSet || items instanceof DataView) { - newDataSet = items; + if (addedIds.length) { + this._trigger('add', {items: addedIds}, senderId); } - else { - // turn an array into a dataset - newDataSet = new DataSet(items, { - type: { - start: 'Date', - end: 'Date' - } - }); + if (updatedIds.length) { + this._trigger('update', {items: updatedIds, data: updatedData}, senderId); } - // set items - this.itemsData = newDataSet; - this.linegraph && this.linegraph.setItems(newDataSet); - - if (initialLoad) { - if (this.options.start != undefined || this.options.end != undefined) { - var start = this.options.start != undefined ? this.options.start : null; - var end = this.options.end != undefined ? this.options.end : null; - - this.setWindow(start, end, {animate: false}); - } - else { - this.fit({animate: false}); - } - } + return addedIds.concat(updatedIds); }; /** - * Set groups - * @param {vis.DataSet | Array | google.visualization.DataTable} groups + * Get a data item or multiple items. + * + * Usage: + * + * get() + * get(options: Object) + * get(options: Object, data: Array | DataTable) + * + * get(id: Number | String) + * get(id: Number | String, options: Object) + * get(id: Number | String, options: Object, data: Array | DataTable) + * + * get(ids: Number[] | String[]) + * get(ids: Number[] | String[], options: Object) + * get(ids: Number[] | String[], options: Object, data: Array | DataTable) + * + * Where: + * + * {Number | String} id The id of an item + * {Number[] | String{}} ids An array with ids of items + * {Object} options An Object with options. Available options: + * {String} [returnType] Type of data to be + * returned. Can be 'DataTable' or 'Array' (default) + * {Object.} [type] + * {String[]} [fields] field names to be returned + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * {Array | DataTable} [data] If provided, items will be appended to this + * array or table. Required in case of Google + * DataTable. + * + * @throws Error */ - Graph2d.prototype.setGroups = function(groups) { - // convert to type DataSet when needed - var newDataSet; - if (!groups) { - newDataSet = null; + DataSet.prototype.get = function (args) { + var me = this; + + // parse the arguments + var id, ids, options, data; + var firstType = util.getType(arguments[0]); + if (firstType == 'String' || firstType == 'Number') { + // get(id [, options] [, data]) + id = arguments[0]; + options = arguments[1]; + data = arguments[2]; } - else if (groups instanceof DataSet || groups instanceof DataView) { - newDataSet = groups; + else if (firstType == 'Array') { + // get(ids [, options] [, data]) + ids = arguments[0]; + options = arguments[1]; + data = arguments[2]; } else { - // turn an array into a dataset - newDataSet = new DataSet(groups); + // get([, options] [, data]) + options = arguments[0]; + data = arguments[1]; } - this.groupsData = newDataSet; - this.linegraph.setGroups(newDataSet); - }; + // determine the return type + var returnType; + if (options && options.returnType) { + var allowedValues = ["DataTable", "Array", "Object"]; + returnType = allowedValues.indexOf(options.returnType) == -1 ? "Array" : options.returnType; - /** - * Returns an object containing an SVG element with the icon of the group (size determined by iconWidth and iconHeight), the label of the group (content) and the yAxisOrientation of the group (left or right). - * @param groupId - * @param width - * @param height - */ - Graph2d.prototype.getLegend = function(groupId, width, height) { - if (width === undefined) {width = 15;} - if (height === undefined) {height = 15;} - if (this.linegraph.groups[groupId] !== undefined) { - return this.linegraph.groups[groupId].getLegend(width,height); - } - else { - return "cannot find group:" + groupId; + if (data && (returnType != util.getType(data))) { + throw new Error('Type of parameter "data" (' + util.getType(data) + ') ' + + 'does not correspond with specified options.type (' + options.type + ')'); + } + if (returnType == 'DataTable' && !util.isDataTable(data)) { + throw new Error('Parameter "data" must be a DataTable ' + + 'when options.type is "DataTable"'); + } } - } - - /** - * This checks if the visible option of the supplied group (by ID) is true or false. - * @param groupId - * @returns {*} - */ - Graph2d.prototype.isGroupVisible = function(groupId) { - if (this.linegraph.groups[groupId] !== undefined) { - return (this.linegraph.groups[groupId].visible && (this.linegraph.options.groups.visibility[groupId] === undefined || this.linegraph.options.groups.visibility[groupId] == true)); + else if (data) { + returnType = (util.getType(data) == 'DataTable') ? 'DataTable' : 'Array'; } else { - return false; + returnType = 'Array'; } - } - - /** - * Get the data range of the item set. - * @returns {{min: Date, max: Date}} range A range with a start and end Date. - * When no minimum is found, min==null - * When no maximum is found, max==null - */ - Graph2d.prototype.getItemRange = function() { - var min = null; - var max = null; + // build options + var type = options && options.type || this._options.type; + var filter = options && options.filter; + var items = [], item, itemId, i, len; - // calculate min from start filed - for (var groupId in this.linegraph.groups) { - if (this.linegraph.groups.hasOwnProperty(groupId)) { - if (this.linegraph.groups[groupId].visible == true) { - for (var i = 0; i < this.linegraph.groups[groupId].itemsData.length; i++) { - var item = this.linegraph.groups[groupId].itemsData[i]; - var value = util.convert(item.x, 'Date').valueOf(); - min = min == null ? value : min > value ? value : min; - max = max == null ? value : max < value ? value : max; + // convert items + if (id != undefined) { + // return a single item + item = me._getItem(id, type); + if (filter && !filter(item)) { + item = null; + } + } + else if (ids != undefined) { + // return a subset of items + for (i = 0, len = ids.length; i < len; i++) { + item = me._getItem(ids[i], type); + if (!filter || filter(item)) { + items.push(item); + } + } + } + else { + // return all items + for (itemId in this._data) { + if (this._data.hasOwnProperty(itemId)) { + item = me._getItem(itemId, type); + if (!filter || filter(item)) { + items.push(item); } } } } - return { - min: (min != null) ? new Date(min) : null, - max: (max != null) ? new Date(max) : null - }; - }; - - - - module.exports = Graph2d; - - -/***/ }, -/* 15 */ -/***/ function(module, exports, __webpack_require__) { - - /** - * Created by Alex on 10/3/2014. - */ - var moment = __webpack_require__(44); + // order the results + if (options && options.order && id == undefined) { + this._sort(items, options.order); + } + // filter fields of the items + if (options && options.fields) { + var fields = options.fields; + if (id != undefined) { + item = this._filterFields(item, fields); + } + else { + for (i = 0, len = items.length; i < len; i++) { + items[i] = this._filterFields(items[i], fields); + } + } + } - /** - * used in Core to convert the options into a volatile variable - * - * @param Core - */ - exports.convertHiddenOptions = function(body, hiddenDates) { - body.hiddenDates = []; - if (hiddenDates) { - if (Array.isArray(hiddenDates) == true) { - for (var i = 0; i < hiddenDates.length; i++) { - if (hiddenDates[i].repeat === undefined) { - var dateItem = {}; - dateItem.start = moment(hiddenDates[i].start).toDate().valueOf(); - dateItem.end = moment(hiddenDates[i].end).toDate().valueOf(); - body.hiddenDates.push(dateItem); + // return the results + if (returnType == 'DataTable') { + var columns = this._getColumnNames(data); + if (id != undefined) { + // append a single item to the data table + me._appendRow(data, columns, item); + } + else { + // copy the items to the provided data table + for (i = 0; i < items.length; i++) { + me._appendRow(data, columns, items[i]); + } + } + return data; + } + else if (returnType == "Object") { + var result = {}; + for (i = 0; i < items.length; i++) { + result[items[i].id] = items[i]; + } + return result; + } + else { + // return an array + if (id != undefined) { + // a single item + return item; + } + else { + // multiple items + if (data) { + // copy the items to the provided array + for (i = 0, len = items.length; i < len; i++) { + data.push(items[i]); } + return data; + } + else { + // just return our array + return items; } - body.hiddenDates.sort(function (a, b) { - return a.start - b.start; - }); // sort by start time } } }; - /** - * create new entrees for the repeating hidden dates - * @param body - * @param hiddenDates + * Get ids of all items or from a filtered set of items. + * @param {Object} [options] An Object with options. Available options: + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Array} ids */ - exports.updateHiddenDates = function (body, hiddenDates) { - if (hiddenDates && body.domProps.centerContainer.width !== undefined) { - exports.convertHiddenOptions(body, hiddenDates); - - var start = moment(body.range.start); - var end = moment(body.range.end); + DataSet.prototype.getIds = function (options) { + var data = this._data, + filter = options && options.filter, + order = options && options.order, + type = options && options.type || this._options.type, + i, + len, + id, + item, + items, + ids = []; - var totalRange = (body.range.end - body.range.start); - var pixelTime = totalRange / body.domProps.centerContainer.width; + if (filter) { + // get filtered items + if (order) { + // create ordered list + items = []; + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (filter(item)) { + items.push(item); + } + } + } - for (var i = 0; i < hiddenDates.length; i++) { - if (hiddenDates[i].repeat !== undefined) { - var startDate = moment(hiddenDates[i].start); - var endDate = moment(hiddenDates[i].end); + this._sort(items, order); - if (startDate._d == "Invalid Date") { - throw new Error("Supplied start date is not valid: " + hiddenDates[i].start); + for (i = 0, len = items.length; i < len; i++) { + ids[i] = items[i][this._fieldId]; + } + } + else { + // create unordered list + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (filter(item)) { + ids.push(item[this._fieldId]); + } } - if (endDate._d == "Invalid Date") { - throw new Error("Supplied end date is not valid: " + hiddenDates[i].end); + } + } + } + else { + // get all items + if (order) { + // create an ordered list + items = []; + for (id in data) { + if (data.hasOwnProperty(id)) { + items.push(data[id]); } + } - var duration = endDate - startDate; - if (duration >= 4 * pixelTime) { - - var offset = 0; - var runUntil = end.clone(); - switch (hiddenDates[i].repeat) { - case "daily": // case of time - if (startDate.day() != endDate.day()) { - offset = 1; - } - startDate.dayOfYear(start.dayOfYear()); - startDate.year(start.year()); - startDate.subtract(7,'days'); - - endDate.dayOfYear(start.dayOfYear()); - endDate.year(start.year()); - endDate.subtract(7 - offset,'days'); - - runUntil.add(1, 'weeks'); - break; - case "weekly": - var dayOffset = endDate.diff(startDate,'days') - var day = startDate.day(); - - // set the start date to the range.start - startDate.date(start.date()); - startDate.month(start.month()); - startDate.year(start.year()); - endDate = startDate.clone(); - - // force - startDate.day(day); - endDate.day(day); - endDate.add(dayOffset,'days'); - - startDate.subtract(1,'weeks'); - endDate.subtract(1,'weeks'); - - runUntil.add(1, 'weeks'); - break - case "monthly": - if (startDate.month() != endDate.month()) { - offset = 1; - } - startDate.month(start.month()); - startDate.year(start.year()); - startDate.subtract(1,'months'); - - endDate.month(start.month()); - endDate.year(start.year()); - endDate.subtract(1,'months'); - endDate.add(offset,'months'); - - runUntil.add(1, 'months'); - break; - case "yearly": - if (startDate.year() != endDate.year()) { - offset = 1; - } - startDate.year(start.year()); - startDate.subtract(1,'years'); - endDate.year(start.year()); - endDate.subtract(1,'years'); - endDate.add(offset,'years'); + this._sort(items, order); - runUntil.add(1, 'years'); - break; - default: - console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:", hiddenDates[i].repeat); - return; - } - while (startDate < runUntil) { - body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()}); - switch (hiddenDates[i].repeat) { - case "daily": - startDate.add(1, 'days'); - endDate.add(1, 'days'); - break; - case "weekly": - startDate.add(1, 'weeks'); - endDate.add(1, 'weeks'); - break - case "monthly": - startDate.add(1, 'months'); - endDate.add(1, 'months'); - break; - case "yearly": - startDate.add(1, 'y'); - endDate.add(1, 'y'); - break; - default: - console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:", hiddenDates[i].repeat); - return; - } - } - body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()}); - } + for (i = 0, len = items.length; i < len; i++) { + ids[i] = items[i][this._fieldId]; } } - // remove duplicates, merge where possible - exports.removeDuplicates(body); - // ensure the new positions are not on hidden dates - var startHidden = exports.isHidden(body.range.start, body.hiddenDates); - var endHidden = exports.isHidden(body.range.end,body.hiddenDates); - var rangeStart = body.range.start; - var rangeEnd = body.range.end; - if (startHidden.hidden == true) {rangeStart = body.range.startToFront == true ? startHidden.startDate - 1 : startHidden.endDate + 1;} - if (endHidden.hidden == true) {rangeEnd = body.range.endToFront == true ? endHidden.startDate - 1 : endHidden.endDate + 1;} - if (startHidden.hidden == true || endHidden.hidden == true) { - body.range._applyRange(rangeStart, rangeEnd); + else { + // create unordered list + for (id in data) { + if (data.hasOwnProperty(id)) { + item = data[id]; + ids.push(item[this._fieldId]); + } + } } } - } + return ids; + }; + /** + * Returns the DataSet itself. Is overwritten for example by the DataView, + * which returns the DataSet it is connected to instead. + */ + DataSet.prototype.getDataSet = function () { + return this; + }; /** - * remove duplicates from the hidden dates list. Duplicates are evil. They mess everything up. - * Scales with N^2 - * @param body + * Execute a callback function for every item in the dataset. + * @param {function} callback + * @param {Object} [options] Available options: + * {Object.} [type] + * {String[]} [fields] filter fields + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. */ - exports.removeDuplicates = function(body) { - var hiddenDates = body.hiddenDates; - var safeDates = []; - for (var i = 0; i < hiddenDates.length; i++) { - for (var j = 0; j < hiddenDates.length; j++) { - if (i != j && hiddenDates[j].remove != true && hiddenDates[i].remove != true) { - // j inside i - if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) { - hiddenDates[j].remove = true; - } - // j start inside i - else if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].start <= hiddenDates[i].end) { - hiddenDates[i].end = hiddenDates[j].end; - hiddenDates[j].remove = true; - } - // j end inside i - else if (hiddenDates[j].end >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) { - hiddenDates[i].start = hiddenDates[j].start; - hiddenDates[j].remove = true; - } - } - } - } + DataSet.prototype.forEach = function (callback, options) { + var filter = options && options.filter, + type = options && options.type || this._options.type, + data = this._data, + item, + id; - for (var i = 0; i < hiddenDates.length; i++) { - if (hiddenDates[i].remove !== true) { - safeDates.push(hiddenDates[i]); + if (options && options.order) { + // execute forEach on ordered list + var items = this.get(options); + + for (var i = 0, len = items.length; i < len; i++) { + item = items[i]; + id = item[this._fieldId]; + callback(item, id); } } - - body.hiddenDates = safeDates; - body.hiddenDates.sort(function (a, b) { - return a.start - b.start; - }); // sort by start time - } - - exports.printDates = function(dates) { - for (var i =0; i < dates.length; i++) { - console.log(i, new Date(dates[i].start),new Date(dates[i].end), dates[i].start, dates[i].end, dates[i].remove); + else { + // unordered + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (!filter || filter(item)) { + callback(item, id); + } + } + } } - } + }; /** - * Used in TimeStep to avoid the hidden times. - * @param timeStep - * @param previousTime + * Map every item in the dataset. + * @param {function} callback + * @param {Object} [options] Available options: + * {Object.} [type] + * {String[]} [fields] filter fields + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Object[]} mappedItems */ - exports.stepOverHiddenDates = function(timeStep, previousTime) { - var stepInHidden = false; - var currentValue = timeStep.current.valueOf(); - for (var i = 0; i < timeStep.hiddenDates.length; i++) { - var startDate = timeStep.hiddenDates[i].start; - var endDate = timeStep.hiddenDates[i].end; - if (currentValue >= startDate && currentValue < endDate) { - stepInHidden = true; - break; + DataSet.prototype.map = function (callback, options) { + var filter = options && options.filter, + type = options && options.type || this._options.type, + mappedItems = [], + data = this._data, + item; + + // convert and filter items + for (var id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (!filter || filter(item)) { + mappedItems.push(callback(item, id)); + } } } - if (stepInHidden == true && currentValue < timeStep._end.valueOf() && currentValue != previousTime) { - var prevValue = moment(previousTime); - var newValue = moment(endDate); - //check if the next step should be major - if (prevValue.year() != newValue.year()) {timeStep.switchedYear = true;} - else if (prevValue.month() != newValue.month()) {timeStep.switchedMonth = true;} - else if (prevValue.dayOfYear() != newValue.dayOfYear()) {timeStep.switchedDay = true;} - - timeStep.current = newValue.toDate(); + // order items + if (options && options.order) { + this._sort(mappedItems, options.order); } - }; - - ///** - // * Used in TimeStep to avoid the hidden times. - // * @param timeStep - // * @param previousTime - // */ - //exports.checkFirstStep = function(timeStep) { - // var stepInHidden = false; - // var currentValue = timeStep.current.valueOf(); - // for (var i = 0; i < timeStep.hiddenDates.length; i++) { - // var startDate = timeStep.hiddenDates[i].start; - // var endDate = timeStep.hiddenDates[i].end; - // if (currentValue >= startDate && currentValue < endDate) { - // stepInHidden = true; - // break; - // } - // } - // - // if (stepInHidden == true && currentValue <= timeStep._end.valueOf()) { - // var newValue = moment(endDate); - // timeStep.current = newValue.toDate(); - // } - //}; + return mappedItems; + }; - /** - * replaces the Core toScreen methods - * @param Core - * @param time - * @param width - * @returns {number} + /** + * Filter the fields of an item + * @param {Object | null} item + * @param {String[]} fields Field names + * @return {Object | null} filteredItem or null if no item is provided + * @private */ - exports.toScreen = function(Core, time, width) { - if (Core.body.hiddenDates.length == 0) { - var conversion = Core.range.conversion(width); - return (time.valueOf() - conversion.offset) * conversion.scale; + DataSet.prototype._filterFields = function (item, fields) { + if (!item) { // item is null + return item; } - else { - var hidden = exports.isHidden(time, Core.body.hiddenDates) - if (hidden.hidden == true) { - time = hidden.startDate; - } - var duration = exports.getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end); - time = exports.correctTimeForHidden(Core.body.hiddenDates, Core.range, time); + var filteredItem = {}; - var conversion = Core.range.conversion(width, duration); - return (time.valueOf() - conversion.offset) * conversion.scale; + for (var field in item) { + if (item.hasOwnProperty(field) && (fields.indexOf(field) != -1)) { + filteredItem[field] = item[field]; + } } + + return filteredItem; }; + /** + * Sort the provided array with items + * @param {Object[]} items + * @param {String | function} order A field name or custom sort function. + * @private + */ + DataSet.prototype._sort = function (items, order) { + if (util.isString(order)) { + // order by provided field name + var name = order; // field name + items.sort(function (a, b) { + var av = a[name]; + var bv = b[name]; + return (av > bv) ? 1 : ((av < bv) ? -1 : 0); + }); + } + else if (typeof order === 'function') { + // order by sort function + items.sort(order); + } + // TODO: extend order by an Object {field:String, direction:String} + // where direction can be 'asc' or 'desc' + else { + throw new TypeError('Order must be a function or a string'); + } + }; /** - * Replaces the core toTime methods - * @param body - * @param range - * @param x - * @param width - * @returns {Date} + * Remove an object by pointer or by id + * @param {String | Number | Object | Array} id Object or id, or an array with + * objects or ids to be removed + * @param {String} [senderId] Optional sender id + * @return {Array} removedIds */ - exports.toTime = function(Core, x, width) { - if (Core.body.hiddenDates.length == 0) { - var conversion = Core.range.conversion(width); - return new Date(x / conversion.scale + conversion.offset); + DataSet.prototype.remove = function (id, senderId) { + var removedIds = [], + i, len, removedId; + + if (Array.isArray(id)) { + for (i = 0, len = id.length; i < len; i++) { + removedId = this._remove(id[i]); + if (removedId != null) { + removedIds.push(removedId); + } + } } else { - var hiddenDuration = exports.getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end); - var totalDuration = Core.range.end - Core.range.start - hiddenDuration; - var partialDuration = totalDuration * x / width; - var accumulatedHiddenDuration = exports.getAccumulatedHiddenDuration(Core.body.hiddenDates, Core.range, partialDuration); + removedId = this._remove(id); + if (removedId != null) { + removedIds.push(removedId); + } + } - var newTime = new Date(accumulatedHiddenDuration + partialDuration + Core.range.start); - return newTime; + if (removedIds.length) { + this._trigger('remove', {items: removedIds}, senderId); } - }; + return removedIds; + }; /** - * Support function - * - * @param hiddenDates - * @param range - * @returns {number} + * Remove an item by its id + * @param {Number | String | Object} id id or item + * @returns {Number | String | null} id + * @private */ - exports.getHiddenDurationBetween = function(hiddenDates, start, end) { - var duration = 0; - for (var i = 0; i < hiddenDates.length; i++) { - var startDate = hiddenDates[i].start; - var endDate = hiddenDates[i].end; - // if time after the cutout, and the - if (startDate >= start && endDate < end) { - duration += endDate - startDate; + DataSet.prototype._remove = function (id) { + if (util.isNumber(id) || util.isString(id)) { + if (this._data[id]) { + delete this._data[id]; + this.length--; + return id; } } - return duration; + else if (id instanceof Object) { + var itemId = id[this._fieldId]; + if (itemId && this._data[itemId]) { + delete this._data[itemId]; + this.length--; + return itemId; + } + } + return null; }; - /** - * Support function - * @param hiddenDates - * @param range - * @param time - * @returns {{duration: number, time: *, offset: number}} + * Clear the data + * @param {String} [senderId] Optional sender id + * @return {Array} removedIds The ids of all removed items */ - exports.correctTimeForHidden = function(hiddenDates, range, time) { - time = moment(time).toDate().valueOf(); - time -= exports.getHiddenDurationBefore(hiddenDates,range,time); - return time; + DataSet.prototype.clear = function (senderId) { + var ids = Object.keys(this._data); + + this._data = {}; + this.length = 0; + + this._trigger('remove', {items: ids}, senderId); + + return ids; }; - exports.getHiddenDurationBefore = function(hiddenDates, range, time) { - var timeOffset = 0; - time = moment(time).toDate().valueOf(); + /** + * Find the item with maximum value of a specified field + * @param {String} field + * @return {Object | null} item Item containing max value, or null if no items + */ + DataSet.prototype.max = function (field) { + var data = this._data, + max = null, + maxField = null; - for (var i = 0; i < hiddenDates.length; i++) { - var startDate = hiddenDates[i].start; - var endDate = hiddenDates[i].end; - // if time after the cutout, and the - if (startDate >= range.start && endDate < range.end) { - if (time >= endDate) { - timeOffset += (endDate - startDate); + for (var id in data) { + if (data.hasOwnProperty(id)) { + var item = data[id]; + var itemField = item[field]; + if (itemField != null && (!max || itemField > maxField)) { + max = item; + maxField = itemField; } } } - return timeOffset; - } + + return max; + }; /** - * sum the duration from start to finish, including the hidden duration, - * until the required amount has been reached, return the accumulated hidden duration - * @param hiddenDates - * @param range - * @param time - * @returns {{duration: number, time: *, offset: number}} + * Find the item with minimum value of a specified field + * @param {String} field + * @return {Object | null} item Item containing max value, or null if no items */ - exports.getAccumulatedHiddenDuration = function(hiddenDates, range, requiredDuration) { - var hiddenDuration = 0; - var duration = 0; - var previousPoint = range.start; - //exports.printDates(hiddenDates) - for (var i = 0; i < hiddenDates.length; i++) { - var startDate = hiddenDates[i].start; - var endDate = hiddenDates[i].end; - // if time after the cutout, and the - if (startDate >= range.start && endDate < range.end) { - duration += startDate - previousPoint; - previousPoint = endDate; - if (duration >= requiredDuration) { - break; - } - else { - hiddenDuration += endDate - startDate; + DataSet.prototype.min = function (field) { + var data = this._data, + min = null, + minField = null; + + for (var id in data) { + if (data.hasOwnProperty(id)) { + var item = data[id]; + var itemField = item[field]; + if (itemField != null && (!min || itemField < minField)) { + min = item; + minField = itemField; } } } - return hiddenDuration; + return min; }; - - /** - * used to step over to either side of a hidden block. Correction is disabled on tablets, might be set to true - * @param hiddenDates - * @param time - * @param direction - * @param correctionEnabled - * @returns {*} + * Find all distinct values of a specified field + * @param {String} field + * @return {Array} values Array containing all distinct values. If data items + * do not contain the specified field are ignored. + * The returned array is unordered. */ - exports.snapAwayFromHidden = function(hiddenDates, time, direction, correctionEnabled) { - var isHidden = exports.isHidden(time, hiddenDates); - if (isHidden.hidden == true) { - if (direction < 0) { - if (correctionEnabled == true) { - return isHidden.startDate - (isHidden.endDate - time) - 1; + DataSet.prototype.distinct = function (field) { + var data = this._data; + var values = []; + var fieldType = this._options.type && this._options.type[field] || null; + var count = 0; + var i; + + for (var prop in data) { + if (data.hasOwnProperty(prop)) { + var item = data[prop]; + var value = item[field]; + var exists = false; + for (i = 0; i < count; i++) { + if (values[i] == value) { + exists = true; + break; + } } - else { - return isHidden.startDate - 1; + if (!exists && (value !== undefined)) { + values[count] = value; + count++; } } - else { - if (correctionEnabled == true) { - return isHidden.endDate + (time - isHidden.startDate) + 1; - } - else { - return isHidden.endDate + 1; - } + } + + if (fieldType) { + for (i = 0; i < values.length; i++) { + values[i] = util.convert(values[i], fieldType); + } + } + + return values; + }; + + /** + * Add a single item. Will fail when an item with the same id already exists. + * @param {Object} item + * @return {String} id + * @private + */ + DataSet.prototype._addItem = function (item) { + var id = item[this._fieldId]; + + if (id != undefined) { + // check whether this id is already taken + if (this._data[id]) { + // item already exists + throw new Error('Cannot add item: item with id ' + id + ' already exists'); } } else { - return time; + // generate an id + id = util.randomUUID(); + item[this._fieldId] = id; } - } + var d = {}; + for (var field in item) { + if (item.hasOwnProperty(field)) { + var fieldType = this._type[field]; // type may be undefined + d[field] = util.convert(item[field], fieldType); + } + } + this._data[id] = d; + this.length++; + return id; + }; /** - * Check if a time is hidden - * - * @param time - * @param hiddenDates - * @returns {{hidden: boolean, startDate: Window.start, endDate: *}} + * Get an item. Fields can be converted to a specific type + * @param {String} id + * @param {Object.} [types] field types to convert + * @return {Object | null} item + * @private */ - exports.isHidden = function(time, hiddenDates) { - for (var i = 0; i < hiddenDates.length; i++) { - var startDate = hiddenDates[i].start; - var endDate = hiddenDates[i].end; + DataSet.prototype._getItem = function (id, types) { + var field, value; - if (time >= startDate && time < endDate) { // if the start is entering a hidden zone - return {hidden: true, startDate: startDate, endDate: endDate}; - break; - } + // get the item from the dataset + var raw = this._data[id]; + if (!raw) { + return null; } - return {hidden: false, startDate: startDate, endDate: endDate}; - } -/***/ }, -/* 16 */ -/***/ function(module, exports, __webpack_require__) { + // convert the items field types + var converted = {}; + if (types) { + for (field in raw) { + if (raw.hasOwnProperty(field)) { + value = raw[field]; + converted[field] = util.convert(value, types[field]); + } + } + } + else { + // no field types specified, no converting needed + for (field in raw) { + if (raw.hasOwnProperty(field)) { + value = raw[field]; + converted[field] = value; + } + } + } + return converted; + }; /** - * @constructor DataStep - * The class DataStep is an iterator for data for the lineGraph. You provide a start data point and an - * end data point. The class itself determines the best scale (step size) based on the - * provided start Date, end Date, and minimumStep. - * - * If minimumStep is provided, the step size is chosen as close as possible - * to the minimumStep but larger than minimumStep. If minimumStep is not - * provided, the scale is set to 1 DAY. - * The minimumStep should correspond with the onscreen size of about 6 characters - * - * Alternatively, you can set a scale by hand. - * After creation, you can initialize the class by executing first(). Then you - * can iterate from the start date to the end date via next(). You can check if - * the end date is reached with the function hasNext(). After each step, you can - * retrieve the current date via getCurrent(). - * The DataStep has scales ranging from milliseconds, seconds, minutes, hours, - * days, to years. - * - * Version: 1.2 - * - * @param {Date} [start] The start date, for example new Date(2010, 9, 21) - * or new Date(2010, 9, 21, 23, 45, 00) - * @param {Date} [end] The end date - * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds + * Update a single item: merge with existing item. + * Will fail when the item has no id, or when there does not exist an item + * with the same id. + * @param {Object} item + * @return {String} id + * @private */ - function DataStep(start, end, minimumStep, containerHeight, customRange, alignZeros) { - // variables - this.current = 0; + DataSet.prototype._updateItem = function (item) { + var id = item[this._fieldId]; + if (id == undefined) { + throw new Error('Cannot update item: item has no id (item: ' + JSON.stringify(item) + ')'); + } + var d = this._data[id]; + if (!d) { + // item doesn't exist + throw new Error('Cannot update item: no item with id ' + id + ' found'); + } - this.autoScale = true; - this.stepIndex = 0; - this.step = 1; - this.scale = 1; + // merge with current item + for (var field in item) { + if (item.hasOwnProperty(field)) { + var fieldType = this._type[field]; // type may be undefined + d[field] = util.convert(item[field], fieldType); + } + } - this.marginStart; - this.marginEnd; - this.deadSpace = 0; + return id; + }; - this.majorSteps = [1, 2, 5, 10]; - this.minorSteps = [0.25, 0.5, 1, 2]; + /** + * Get an array with the column names of a Google DataTable + * @param {DataTable} dataTable + * @return {String[]} columnNames + * @private + */ + DataSet.prototype._getColumnNames = function (dataTable) { + var columns = []; + for (var col = 0, cols = dataTable.getNumberOfColumns(); col < cols; col++) { + columns[col] = dataTable.getColumnId(col) || dataTable.getColumnLabel(col); + } + return columns; + }; - this.alignZeros = alignZeros; + /** + * Append an item as a row to the dataTable + * @param dataTable + * @param columns + * @param item + * @private + */ + DataSet.prototype._appendRow = function (dataTable, columns, item) { + var row = dataTable.addRow(); - this.setRange(start, end, minimumStep, containerHeight, customRange); - } + for (var col = 0, cols = columns.length; col < cols; col++) { + var field = columns[col]; + dataTable.setValue(row, col, item[field]); + } + }; + + module.exports = DataSet; +/***/ }, +/* 8 */ +/***/ function(module, exports, __webpack_require__) { /** - * Set a new range - * If minimumStep is provided, the step size is chosen as close as possible - * to the minimumStep but larger than minimumStep. If minimumStep is not - * provided, the scale is set to 1 DAY. - * The minimumStep should correspond with the onscreen size of about 6 characters - * @param {Number} [start] The start date and time. - * @param {Number} [end] The end date and time. - * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds + * A queue + * @param {Object} options + * Available options: + * - delay: number When provided, the queue will be flushed + * automatically after an inactivity of this delay + * in milliseconds. + * Default value is null. + * - max: number When the queue exceeds the given maximum number + * of entries, the queue is flushed automatically. + * Default value of max is Infinity. + * @constructor */ - DataStep.prototype.setRange = function(start, end, minimumStep, containerHeight, customRange) { - this._start = customRange.min === undefined ? start : customRange.min; - this._end = customRange.max === undefined ? end : customRange.max; + function Queue(options) { + // options + this.delay = null; + this.max = Infinity; - if (this._start == this._end) { - this._start -= 0.75; - this._end += 1; - } + // properties + this._queue = []; + this._timeout = null; + this._extended = null; - if (this.autoScale == true) { - this.setMinimumStep(minimumStep, containerHeight); + this.setOptions(options); + } + + /** + * Update the configuration of the queue + * @param {Object} options + * Available options: + * - delay: number When provided, the queue will be flushed + * automatically after an inactivity of this delay + * in milliseconds. + * Default value is null. + * - max: number When the queue exceeds the given maximum number + * of entries, the queue is flushed automatically. + * Default value of max is Infinity. + * @param options + */ + Queue.prototype.setOptions = function (options) { + if (options && typeof options.delay !== 'undefined') { + this.delay = options.delay; + } + if (options && typeof options.max !== 'undefined') { + this.max = options.max; } - this.setFirst(customRange); + this._flushIfNeeded(); }; /** - * Automatically determine the scale that bests fits the provided minimum step - * @param {Number} [minimumStep] The minimum step size in milliseconds + * Extend an object with queuing functionality. + * The object will be extended with a function flush, and the methods provided + * in options.replace will be replaced with queued ones. + * @param {Object} object + * @param {Object} options + * Available options: + * - replace: Array. + * A list with method names of the methods + * on the object to be replaced with queued ones. + * - delay: number When provided, the queue will be flushed + * automatically after an inactivity of this delay + * in milliseconds. + * Default value is null. + * - max: number When the queue exceeds the given maximum number + * of entries, the queue is flushed automatically. + * Default value of max is Infinity. + * @return {Queue} Returns the created queue */ - DataStep.prototype.setMinimumStep = function(minimumStep, containerHeight) { - // round to floor - var size = this._end - this._start; - var safeSize = size * 1.2; - var minimumStepValue = minimumStep * (safeSize / containerHeight); - var orderOfMagnitude = Math.round(Math.log(safeSize)/Math.LN10); - - var minorStepIdx = -1; - var magnitudefactor = Math.pow(10,orderOfMagnitude); + Queue.extend = function (object, options) { + var queue = new Queue(options); - var start = 0; - if (orderOfMagnitude < 0) { - start = orderOfMagnitude; + if (object.flush !== undefined) { + throw new Error('Target object already has a property flush'); } + object.flush = function () { + queue.flush(); + }; - var solutionFound = false; - for (var i = start; Math.abs(i) <= Math.abs(orderOfMagnitude); i++) { - magnitudefactor = Math.pow(10,i); - for (var j = 0; j < this.minorSteps.length; j++) { - var stepSize = magnitudefactor * this.minorSteps[j]; - if (stepSize >= minimumStepValue) { - solutionFound = true; - minorStepIdx = j; - break; - } - } - if (solutionFound == true) { - break; + var methods = [{ + name: 'flush', + original: undefined + }]; + + if (options && options.replace) { + for (var i = 0; i < options.replace.length; i++) { + var name = options.replace[i]; + methods.push({ + name: name, + original: object[name] + }); + queue.replace(object, name); } } - this.stepIndex = minorStepIdx; - this.scale = magnitudefactor; - this.step = magnitudefactor * this.minorSteps[minorStepIdx]; - }; + queue._extended = { + object: object, + methods: methods + }; + return queue; + }; /** - * Round the current date to the first minor date value - * This must be executed once when the current date is set to start Date + * Destroy the queue. The queue will first flush all queued actions, and in + * case it has extended an object, will restore the original object. */ - DataStep.prototype.setFirst = function(customRange) { - if (customRange === undefined) { - customRange = {}; - } - - var niceStart = customRange.min === undefined ? this._start - (this.scale * 2 * this.minorSteps[this.stepIndex]) : customRange.min; - var niceEnd = customRange.max === undefined ? this._end + (this.scale * this.minorSteps[this.stepIndex]) : customRange.max; - - this.marginEnd = customRange.max === undefined ? this.roundToMinor(niceEnd) : customRange.max; - this.marginStart = customRange.min === undefined ? this.roundToMinor(niceStart) : customRange.min; + Queue.prototype.destroy = function () { + this.flush(); - // if we need to align the zero's we need to make sure that there is a zero to use. - if (this.alignZeros == true && (this.marginEnd - this.marginStart) % this.step != 0) { - this.marginEnd += this.marginEnd % this.step; + if (this._extended) { + var object = this._extended.object; + var methods = this._extended.methods; + for (var i = 0; i < methods.length; i++) { + var method = methods[i]; + if (method.original) { + object[method.name] = method.original; + } + else { + delete object[method.name]; + } + } + this._extended = null; } - - this.deadSpace = this.roundToMinor(niceEnd) - niceEnd + this.roundToMinor(niceStart) - niceStart; - this.marginRange = this.marginEnd - this.marginStart; - - - this.current = this.marginEnd; }; - DataStep.prototype.roundToMinor = function(value) { - var rounded = value - (value % (this.scale * this.minorSteps[this.stepIndex])); - if (value % (this.scale * this.minorSteps[this.stepIndex]) > 0.5 * (this.scale * this.minorSteps[this.stepIndex])) { - return rounded + (this.scale * this.minorSteps[this.stepIndex]); - } - else { - return rounded; + /** + * Replace a method on an object with a queued version + * @param {Object} object Object having the method + * @param {string} method The method name + */ + Queue.prototype.replace = function(object, method) { + var me = this; + var original = object[method]; + if (!original) { + throw new Error('Method ' + method + ' undefined'); } - } + object[method] = function () { + // create an Array with the arguments + var args = []; + for (var i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; + } - /** - * Check if the there is a next step - * @return {boolean} true if the current date has not passed the end date - */ - DataStep.prototype.hasNext = function () { - return (this.current >= this.marginStart); + // add this call to the queue + me.queue({ + args: args, + fn: original, + context: this + }); + }; }; /** - * Do the next step + * Queue a call + * @param {function | {fn: function, args: Array} | {fn: function, args: Array, context: Object}} entry */ - DataStep.prototype.next = function() { - var prev = this.current; - this.current -= this.step; - - // safety mechanism: if current time is still unchanged, move to the end - if (this.current == prev) { - this.current = this._end; + Queue.prototype.queue = function(entry) { + if (typeof entry === 'function') { + this._queue.push({fn: entry}); + } + else { + this._queue.push(entry); } - }; - /** - * Do the next step - */ - DataStep.prototype.previous = function() { - this.current += this.step; - this.marginEnd += this.step; - this.marginRange = this.marginEnd - this.marginStart; + this._flushIfNeeded(); }; - - /** - * Get the current datetime - * @return {String} current The current date + * Check whether the queue needs to be flushed + * @private */ - DataStep.prototype.getCurrent = function(decimals) { - // prevent round-off errors when close to zero - var current = (Math.abs(this.current) < this.step / 2) ? 0 : this.current; - var toPrecision = '' + Number(current).toPrecision(5); - - // If decimals is specified, then limit or extend the string as required - if(decimals !== undefined && !isNaN(Number(decimals))) { - // If string includes exponent, then we need to add it to the end - var exp = ""; - var index = toPrecision.indexOf("e"); - if(index != -1) { - // Get the exponent - exp = toPrecision.slice(index); - // Remove the exponent in case we need to zero-extend - toPrecision = toPrecision.slice(0, index); - } - index = Math.max(toPrecision.indexOf(","), toPrecision.indexOf(".")); - if(index === -1) { - // No decimal found - if we want decimals, then we need to add it - if(decimals !== 0) { - toPrecision += '.'; - } - // Calculate how long the string should be - index = toPrecision.length + decimals; - } - else if(decimals !== 0) { - // Calculate how long the string should be - accounting for the decimal place - index += decimals + 1; - } - if(index > toPrecision.length) { - // We need to add zeros! - for(var cnt = index - toPrecision.length; cnt > 0; cnt--) { - toPrecision += '0'; - } - } - else { - // we need to remove characters - toPrecision = toPrecision.slice(0, index); - } - // Add the exponent if there is one - toPrecision += exp; - } - else { - if (toPrecision.indexOf(",") != -1 || toPrecision.indexOf(".") != -1) { - // If no decimal is specified, and there are decimal places, remove trailing zeros - for (var i = toPrecision.length - 1; i > 0; i--) { - if (toPrecision[i] == "0") { - toPrecision = toPrecision.slice(0, i); - } - else if (toPrecision[i] == "." || toPrecision[i] == ",") { - toPrecision = toPrecision.slice(0, i); - break; - } - else { - break; - } - } - } + Queue.prototype._flushIfNeeded = function () { + // flush when the maximum is exceeded. + if (this._queue.length > this.max) { + this.flush(); } - return toPrecision; + // flush after a period of inactivity when a delay is configured + clearTimeout(this._timeout); + if (this.queue.length > 0 && typeof this.delay === 'number') { + var me = this; + this._timeout = setTimeout(function () { + me.flush(); + }, this.delay); + } }; /** - * Check if the current value is a major value (for example when the step - * is DAY, a major value is each first day of the MONTH) - * @return {boolean} true if current date is major, else false. + * Flush all queued calls */ - DataStep.prototype.isMajor = function() { - return (this.current % (this.scale * this.majorSteps[this.stepIndex]) == 0); + Queue.prototype.flush = function () { + while (this._queue.length > 0) { + var entry = this._queue.shift(); + entry.fn.apply(entry.context || entry.fn, entry.args || []); + } }; - module.exports = DataStep; + module.exports = Queue; /***/ }, -/* 17 */ +/* 9 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(47); - var moment = __webpack_require__(44); - var Component = __webpack_require__(25); - var DateUtil = __webpack_require__(15); + var DataSet = __webpack_require__(7); /** - * @constructor Range - * A Range controls a numeric range with a start and end value. - * The Range adjusts the range based on mouse events or programmatic changes, - * and triggers events when the range is changing or has been changed. - * @param {{dom: Object, domProps: Object, emitter: Emitter}} body - * @param {Object} [options] See description at Range.setOptions + * DataView + * + * a dataview offers a filtered view on a dataset or an other dataview. + * + * @param {DataSet | DataView} data + * @param {Object} [options] Available options: see method get + * + * @constructor DataView */ - function Range(body, options) { - var now = moment().hours(0).minutes(0).seconds(0).milliseconds(0); - this.start = now.clone().add(-3, 'days').valueOf(); // Number - this.end = now.clone().add(4, 'days').valueOf(); // Number - - this.body = body; - this.deltaDifference = 0; - this.scaleOffset = 0; - this.startToFront = false; - this.endToFront = true; + function DataView (data, options) { + this._data = null; + this._ids = {}; // ids of the items currently in memory (just contains a boolean true) + this.length = 0; // number of items in the DataView + this._options = options || {}; + this._fieldId = 'id'; // name of the field containing id + this._subscribers = {}; // event subscribers - // default options - this.defaultOptions = { - start: null, - end: null, - direction: 'horizontal', // 'horizontal' or 'vertical' - moveable: true, - zoomable: true, - min: null, - max: null, - zoomMin: 10, // milliseconds - zoomMax: 1000 * 60 * 60 * 24 * 365 * 10000 // milliseconds + var me = this; + this.listener = function () { + me._onEvent.apply(me, arguments); }; - this.options = util.extend({}, this.defaultOptions); - this.props = { - touch: {} - }; - this.animateTimer = null; + this.setData(data); + } - // drag listeners for dragging - this.body.emitter.on('dragstart', this._onDragStart.bind(this)); - this.body.emitter.on('drag', this._onDrag.bind(this)); - this.body.emitter.on('dragend', this._onDragEnd.bind(this)); + // TODO: implement a function .config() to dynamically update things like configured filter + // and trigger changes accordingly - // ignore dragging when holding - this.body.emitter.on('hold', this._onHold.bind(this)); + /** + * Set a data source for the view + * @param {DataSet | DataView} data + */ + DataView.prototype.setData = function (data) { + var ids, i, len; - // mouse wheel for zooming - this.body.emitter.on('mousewheel', this._onMouseWheel.bind(this)); - this.body.emitter.on('DOMMouseScroll', this._onMouseWheel.bind(this)); // For FF + if (this._data) { + // unsubscribe from current dataset + if (this._data.unsubscribe) { + this._data.unsubscribe('*', this.listener); + } - // pinch to zoom - this.body.emitter.on('touch', this._onTouch.bind(this)); - this.body.emitter.on('pinch', this._onPinch.bind(this)); + // trigger a remove of all items in memory + ids = []; + for (var id in this._ids) { + if (this._ids.hasOwnProperty(id)) { + ids.push(id); + } + } + this._ids = {}; + this.length = 0; + this._trigger('remove', {items: ids}); + } - this.setOptions(options); - } + this._data = data; - Range.prototype = new Component(); + if (this._data) { + // update fieldId + this._fieldId = this._options.fieldId || + (this._data && this._data.options && this._data.options.fieldId) || + 'id'; - /** - * Set options for the range controller - * @param {Object} options Available options: - * {Number | Date | String} start Start date for the range - * {Number | Date | String} end End date for the range - * {Number} min Minimum value for start - * {Number} max Maximum value for end - * {Number} zoomMin Set a minimum value for - * (end - start). - * {Number} zoomMax Set a maximum value for - * (end - start). - * {Boolean} moveable Enable moving of the range - * by dragging. True by default - * {Boolean} zoomable Enable zooming of the range - * by pinching/scrolling. True by default - */ - Range.prototype.setOptions = function (options) { - if (options) { - // copy the options that we know - var fields = ['direction', 'min', 'max', 'zoomMin', 'zoomMax', 'moveable', 'zoomable', 'activate', 'hiddenDates']; - util.selectiveExtend(fields, this.options, options); + // trigger an add of all added items + ids = this._data.getIds({filter: this._options && this._options.filter}); + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + this._ids[id] = true; + } + this.length = ids.length; + this._trigger('add', {items: ids}); - if ('start' in options || 'end' in options) { - // apply a new range. both start and end are optional - this.setRange(options.start, options.end); + // subscribe to new dataset + if (this._data.on) { + this._data.on('*', this.listener); } } }; /** - * Test whether direction has a valid value - * @param {String} direction 'horizontal' or 'vertical' + * Refresh the DataView. Useful when the DataView has a filter function + * containing a variable parameter. */ - function validateDirection (direction) { - if (direction != 'horizontal' && direction != 'vertical') { - throw new TypeError('Unknown direction "' + direction + '". ' + - 'Choose "horizontal" or "vertical".'); + DataView.prototype.refresh = function () { + var id; + var ids = this._data.getIds({filter: this._options && this._options.filter}); + var newIds = {}; + var added = []; + var removed = []; + + // check for additions + for (var i = 0; i < ids.length; i++) { + id = ids[i]; + newIds[id] = true; + if (!this._ids[id]) { + added.push(id); + this._ids[id] = true; + this.length++; + } } - } + + // check for removals + for (id in this._ids) { + if (this._ids.hasOwnProperty(id)) { + if (!newIds[id]) { + removed.push(id); + delete this._ids[id]; + this.length--; + } + } + } + + // trigger events + if (added.length) { + this._trigger('add', {items: added}); + } + if (removed.length) { + this._trigger('remove', {items: removed}); + } + }; /** - * Set a new start and end range - * @param {Date | Number | String} [start] - * @param {Date | Number | String} [end] - * @param {boolean | number} [animate=false] If true, the range is animated - * smoothly to the new window. - * If animate is a number, the - * number is taken as duration - * Default duration is 500 ms. - * @param {Boolean} [byUser=false] + * Get data from the data view + * + * Usage: + * + * get() + * get(options: Object) + * get(options: Object, data: Array | DataTable) + * + * get(id: Number) + * get(id: Number, options: Object) + * get(id: Number, options: Object, data: Array | DataTable) + * + * get(ids: Number[]) + * get(ids: Number[], options: Object) + * get(ids: Number[], options: Object, data: Array | DataTable) + * + * Where: * + * {Number | String} id The id of an item + * {Number[] | String{}} ids An array with ids of items + * {Object} options An Object with options. Available options: + * {String} [type] Type of data to be returned. Can + * be 'DataTable' or 'Array' (default) + * {Object.} [convert] + * {String[]} [fields] field names to be returned + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * {Array | DataTable} [data] If provided, items will be appended to this + * array or table. Required in case of Google + * DataTable. + * @param args */ - Range.prototype.setRange = function(start, end, animate, byUser) { - if (byUser !== true) { - byUser = false; + DataView.prototype.get = function (args) { + var me = this; + + // parse the arguments + var ids, options, data; + var firstType = util.getType(arguments[0]); + if (firstType == 'String' || firstType == 'Number' || firstType == 'Array') { + // get(id(s) [, options] [, data]) + ids = arguments[0]; // can be a single id or an array with ids + options = arguments[1]; + data = arguments[2]; + } + else { + // get([, options] [, data]) + options = arguments[0]; + data = arguments[1]; + } + + // extend the options with the default options and provided options + var viewOptions = util.extend({}, this._options, options); + + // create a combined filter method when needed + if (this._options.filter && options && options.filter) { + viewOptions.filter = function (item) { + return me._options.filter(item) && options.filter(item); + } } - var _start = start != undefined ? util.convert(start, 'Date').valueOf() : null; - var _end = end != undefined ? util.convert(end, 'Date').valueOf() : null; - this._cancelAnimation(); - if (animate) { - var me = this; - var initStart = this.start; - var initEnd = this.end; - var duration = typeof animate === 'number' ? animate : 500; - var initTime = new Date().valueOf(); - var anyChanged = false; + // build up the call to the linked data set + var getArguments = []; + if (ids != undefined) { + getArguments.push(ids); + } + getArguments.push(viewOptions); + getArguments.push(data); - var next = function () { - if (!me.props.touch.dragging) { - var now = new Date().valueOf(); - var time = now - initTime; - var done = time > duration; - var s = (done || _start === null) ? _start : util.easeInOutQuad(time, initStart, _start, duration); - var e = (done || _end === null) ? _end : util.easeInOutQuad(time, initEnd, _end, duration); + return this._data && this._data.get.apply(this._data, getArguments); + }; - changed = me._applyRange(s, e); - DateUtil.updateHiddenDates(me.body, me.options.hiddenDates); - anyChanged = anyChanged || changed; - if (changed) { - me.body.emitter.emit('rangechange', {start: new Date(me.start), end: new Date(me.end), byUser:byUser}); - } + /** + * Get ids of all items or from a filtered set of items. + * @param {Object} [options] An Object with options. Available options: + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Array} ids + */ + DataView.prototype.getIds = function (options) { + var ids; - if (done) { - if (anyChanged) { - me.body.emitter.emit('rangechanged', {start: new Date(me.start), end: new Date(me.end), byUser:byUser}); - } - } - else { - // animate with as high as possible frame rate, leave 20 ms in between - // each to prevent the browser from blocking - me.animateTimer = setTimeout(next, 20); + if (this._data) { + var defaultFilter = this._options.filter; + var filter; + + if (options && options.filter) { + if (defaultFilter) { + filter = function (item) { + return defaultFilter(item) && options.filter(item); } } - }; + else { + filter = options.filter; + } + } + else { + filter = defaultFilter; + } - return next(); + ids = this._data.getIds({ + filter: filter, + order: options && options.order + }); } else { - var changed = this._applyRange(_start, _end); - DateUtil.updateHiddenDates(this.body, this.options.hiddenDates); - if (changed) { - var params = {start: new Date(this.start), end: new Date(this.end), byUser:byUser}; - this.body.emitter.emit('rangechange', params); - this.body.emitter.emit('rangechanged', params); - } + ids = []; } + + return ids; }; /** - * Stop an animation - * @private + * Get the DataSet to which this DataView is connected. In case there is a chain + * of multiple DataViews, the root DataSet of this chain is returned. + * @return {DataSet} dataSet */ - Range.prototype._cancelAnimation = function () { - if (this.animateTimer) { - clearTimeout(this.animateTimer); - this.animateTimer = null; + DataView.prototype.getDataSet = function () { + var dataSet = this; + while (dataSet instanceof DataView) { + dataSet = dataSet._data; } + return dataSet || null; }; /** - * Set a new start and end range. This method is the same as setRange, but - * does not trigger a range change and range changed event, and it returns - * true when the range is changed - * @param {Number} [start] - * @param {Number} [end] - * @return {Boolean} changed + * Event listener. Will propagate all events from the connected data set to + * the subscribers of the DataView, but will filter the items and only trigger + * when there are changes in the filtered data set. + * @param {String} event + * @param {Object | null} params + * @param {String} senderId * @private */ - Range.prototype._applyRange = function(start, end) { - var newStart = (start != null) ? util.convert(start, 'Date').valueOf() : this.start, - newEnd = (end != null) ? util.convert(end, 'Date').valueOf() : this.end, - max = (this.options.max != null) ? util.convert(this.options.max, 'Date').valueOf() : null, - min = (this.options.min != null) ? util.convert(this.options.min, 'Date').valueOf() : null, - diff; + DataView.prototype._onEvent = function (event, params, senderId) { + var i, len, id, item; + var ids = params && params.items; + var data = this._data; + var updatedData = []; + var added = []; + var updated = []; + var removed = []; - // check for valid number - if (isNaN(newStart) || newStart === null) { - throw new Error('Invalid start "' + start + '"'); - } - if (isNaN(newEnd) || newEnd === null) { - throw new Error('Invalid end "' + end + '"'); - } + if (ids && data) { + switch (event) { + case 'add': + // filter the ids of the added items + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + item = this.get(id); + if (item) { + this._ids[id] = true; + added.push(id); + } + } - // prevent start < end - if (newEnd < newStart) { - newEnd = newStart; - } + break; - // prevent start < min - if (min !== null) { - if (newStart < min) { - diff = (min - newStart); - newStart += diff; - newEnd += diff; + case 'update': + // determine the event from the views viewpoint: an updated + // item can be added, updated, or removed from this view. + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + item = this.get(id); - // prevent end > max - if (max != null) { - if (newEnd > max) { - newEnd = max; + if (item) { + if (this._ids[id]) { + updated.push(id); + updatedData.push(params.data[i]); + } + else { + this._ids[id] = true; + added.push(id); + } + } + else { + if (this._ids[id]) { + delete this._ids[id]; + removed.push(id); + } + else { + // nothing interesting for me :-( + } + } } - } - } - } - // prevent end > max - if (max !== null) { - if (newEnd > max) { - diff = (newEnd - max); - newStart -= diff; - newEnd -= diff; + break; - // prevent start < min - if (min != null) { - if (newStart < min) { - newStart = min; + case 'remove': + // filter the ids of the removed items + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + if (this._ids[id]) { + delete this._ids[id]; + removed.push(id); + } } - } - } - } - // prevent (end-start) < zoomMin - if (this.options.zoomMin !== null) { - var zoomMin = parseFloat(this.options.zoomMin); - if (zoomMin < 0) { - zoomMin = 0; - } - if ((newEnd - newStart) < zoomMin) { - if ((this.end - this.start) === zoomMin && newStart > this.start && newEnd < this.end) { - // ignore this action, we are already zoomed to the minimum - newStart = this.start; - newEnd = this.end; - } - else { - // zoom to the minimum - diff = (zoomMin - (newEnd - newStart)); - newStart -= diff / 2; - newEnd += diff / 2; - } + break; } - } - // prevent (end-start) > zoomMax - if (this.options.zoomMax !== null) { - var zoomMax = parseFloat(this.options.zoomMax); - if (zoomMax < 0) { - zoomMax = 0; - } + this.length += added.length - removed.length; - if ((newEnd - newStart) > zoomMax) { - if ((this.end - this.start) === zoomMax && newStart < this.start && newEnd > this.end) { - // ignore this action, we are already zoomed to the maximum - newStart = this.start; - newEnd = this.end; - } - else { - // zoom to the maximum - diff = ((newEnd - newStart) - zoomMax); - newStart += diff / 2; - newEnd -= diff / 2; - } + if (added.length) { + this._trigger('add', {items: added}, senderId); } - } - - var changed = (this.start != newStart || this.end != newEnd); - - // if the new range does NOT overlap with the old range, emit checkRangedItems to avoid not showing ranged items (ranged meaning has end time, not necessarily of type Range) - if (!((newStart >= this.start && newStart <= this.end) || (newEnd >= this.start && newEnd <= this.end)) && - !((this.start >= newStart && this.start <= newEnd) || (this.end >= newStart && this.end <= newEnd) )) { - this.body.emitter.emit('checkRangedItems'); - } - - this.start = newStart; - this.end = newEnd; - return changed; - }; - - /** - * Retrieve the current range. - * @return {Object} An object with start and end properties - */ - Range.prototype.getRange = function() { - return { - start: this.start, - end: this.end - }; - }; - - /** - * Calculate the conversion offset and scale for current range, based on - * the provided width - * @param {Number} width - * @returns {{offset: number, scale: number}} conversion - */ - Range.prototype.conversion = function (width, totalHidden) { - return Range.conversion(this.start, this.end, width, totalHidden); - }; - - /** - * Static method to calculate the conversion offset and scale for a range, - * based on the provided start, end, and width - * @param {Number} start - * @param {Number} end - * @param {Number} width - * @returns {{offset: number, scale: number}} conversion - */ - Range.conversion = function (start, end, width, totalHidden) { - if (totalHidden === undefined) { - totalHidden = 0; - } - if (width != 0 && (end - start != 0)) { - return { - offset: start, - scale: width / (end - start - totalHidden) + if (updated.length) { + this._trigger('update', {items: updated, data: updatedData}, senderId); + } + if (removed.length) { + this._trigger('remove', {items: removed}, senderId); } - } - else { - return { - offset: 0, - scale: 1 - }; } }; - /** - * Start dragging horizontally or vertically - * @param {Event} event - * @private - */ - Range.prototype._onDragStart = function(event) { - this.deltaDifference = 0; - this.previousDelta = 0; - // only allow dragging when configured as movable - if (!this.options.moveable) return; + // copy subscription functionality from DataSet + DataView.prototype.on = DataSet.prototype.on; + DataView.prototype.off = DataSet.prototype.off; + DataView.prototype._trigger = DataSet.prototype._trigger; - // refuse to drag when we where pinching to prevent the timeline make a jump - // when releasing the fingers in opposite order from the touch screen - if (!this.props.touch.allowDragging) return; + // TODO: make these functions deprecated (replaced with `on` and `off` since version 0.5) + DataView.prototype.subscribe = DataView.prototype.on; + DataView.prototype.unsubscribe = DataView.prototype.off; - this.props.touch.start = this.start; - this.props.touch.end = this.end; - this.props.touch.dragging = true; + module.exports = DataView; - if (this.body.dom.root) { - this.body.dom.root.style.cursor = 'move'; - } - }; +/***/ }, +/* 10 */ +/***/ function(module, exports, __webpack_require__) { + + var Emitter = __webpack_require__(11); + var DataSet = __webpack_require__(7); + var DataView = __webpack_require__(9); + var util = __webpack_require__(1); + var Point3d = __webpack_require__(12); + var Point2d = __webpack_require__(13); + var Camera = __webpack_require__(14); + var Filter = __webpack_require__(15); + var Slider = __webpack_require__(16); + var StepNumber = __webpack_require__(17); /** - * Perform dragging operation - * @param {Event} event - * @private + * @constructor Graph3d + * Graph3d displays data in 3d. + * + * Graph3d is developed in javascript as a Google Visualization Chart. + * + * @param {Element} container The DOM element in which the Graph3d will + * be created. Normally a div element. + * @param {DataSet | DataView | Array} [data] + * @param {Object} [options] */ - Range.prototype._onDrag = function (event) { - // only allow dragging when configured as movable - if (!this.options.moveable) return; - // refuse to drag when we where pinching to prevent the timeline make a jump - // when releasing the fingers in opposite order from the touch screen - if (!this.props.touch.allowDragging) return; - - var direction = this.options.direction; - validateDirection(direction); + function Graph3d(container, data, options) { + if (!(this instanceof Graph3d)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } - var delta = (direction == 'horizontal') ? event.gesture.deltaX : event.gesture.deltaY; - delta -= this.deltaDifference; - var interval = (this.props.touch.end - this.props.touch.start); + // create variables and set default values + this.containerElement = container; + this.width = '400px'; + this.height = '400px'; + this.margin = 10; // px + this.defaultXCenter = '55%'; + this.defaultYCenter = '50%'; - // normalize dragging speed if cutout is in between. - var duration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); - interval -= duration; + this.xLabel = 'x'; + this.yLabel = 'y'; + this.zLabel = 'z'; - var width = (direction == 'horizontal') ? this.body.domProps.center.width : this.body.domProps.center.height; - var diffRange = -delta / width * interval; - var newStart = this.props.touch.start + diffRange; - var newEnd = this.props.touch.end + diffRange; + var passValueFn = function(v) { return v; }; + this.xValueLabel = passValueFn; + this.yValueLabel = passValueFn; + this.zValueLabel = passValueFn; + + this.filterLabel = 'time'; + this.legendLabel = 'value'; + this.style = Graph3d.STYLE.DOT; + this.showPerspective = true; + this.showGrid = true; + this.keepAspectRatio = true; + this.showShadow = false; + this.showGrayBottom = false; // TODO: this does not work correctly + this.showTooltip = false; + this.verticalRatio = 0.5; // 0.1 to 1.0, where 1.0 results in a 'cube' - // snapping times away from hidden zones - var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, this.previousDelta-delta, true); - var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, this.previousDelta-delta, true); - if (safeStart != newStart || safeEnd != newEnd) { - this.deltaDifference += delta; - this.props.touch.start = safeStart; - this.props.touch.end = safeEnd; - this._onDrag(event); - return; - } + this.animationInterval = 1000; // milliseconds + this.animationPreload = false; - this.previousDelta = delta; - this._applyRange(newStart, newEnd); + this.camera = new Camera(); + this.eye = new Point3d(0, 0, -1); // TODO: set eye.z about 3/4 of the width of the window? - // fire a rangechange event - this.body.emitter.emit('rangechange', { - start: new Date(this.start), - end: new Date(this.end), - byUser: true - }); - }; + this.dataTable = null; // The original data table + this.dataPoints = null; // The table with point objects - /** - * Stop dragging operation - * @param {event} event - * @private - */ - Range.prototype._onDragEnd = function (event) { - // only allow dragging when configured as movable - if (!this.options.moveable) return; + // the column indexes + this.colX = undefined; + this.colY = undefined; + this.colZ = undefined; + this.colValue = undefined; + this.colFilter = undefined; - // refuse to drag when we where pinching to prevent the timeline make a jump - // when releasing the fingers in opposite order from the touch screen - if (!this.props.touch.allowDragging) return; + this.xMin = 0; + this.xStep = undefined; // auto by default + this.xMax = 1; + this.yMin = 0; + this.yStep = undefined; // auto by default + this.yMax = 1; + this.zMin = 0; + this.zStep = undefined; // auto by default + this.zMax = 1; + this.valueMin = 0; + this.valueMax = 1; + this.xBarWidth = 1; + this.yBarWidth = 1; + // TODO: customize axis range - this.props.touch.dragging = false; - if (this.body.dom.root) { - this.body.dom.root.style.cursor = 'auto'; - } + // constants + this.colorAxis = '#4D4D4D'; + this.colorGrid = '#D3D3D3'; + this.colorDot = '#7DC1FF'; + this.colorDotBorder = '#3267D2'; - // fire a rangechanged event - this.body.emitter.emit('rangechanged', { - start: new Date(this.start), - end: new Date(this.end), - byUser: true - }); - }; + // create a frame and canvas + this.create(); - /** - * Event handler for mouse wheel event, used to zoom - * Code from http://adomas.org/javascript-mouse-wheel/ - * @param {Event} event - * @private - */ - Range.prototype._onMouseWheel = function(event) { - // only allow zooming when configured as zoomable and moveable - if (!(this.options.zoomable && this.options.moveable)) return; + // apply options (also when undefined) + this.setOptions(options); - // retrieve delta - var delta = 0; - if (event.wheelDelta) { /* IE/Opera. */ - delta = event.wheelDelta / 120; - } else if (event.detail) { /* Mozilla case. */ - // In Mozilla, sign of delta is different than in IE. - // Also, delta is multiple of 3. - delta = -event.detail / 3; + // apply data + if (data) { + this.setData(data); } + } - // If delta is nonzero, handle it. - // Basically, delta is now positive if wheel was scrolled up, - // and negative, if wheel was scrolled down. - if (delta) { - // perform the zoom action. Delta is normally 1 or -1 + // Extend Graph3d with an Emitter mixin + Emitter(Graph3d.prototype); - // adjust a negative delta such that zooming in with delta 0.1 - // equals zooming out with a delta -0.1 - var scale; - if (delta < 0) { - scale = 1 - (delta / 5); + /** + * Calculate the scaling values, dependent on the range in x, y, and z direction + */ + Graph3d.prototype._setScale = function() { + this.scale = new Point3d(1 / (this.xMax - this.xMin), + 1 / (this.yMax - this.yMin), + 1 / (this.zMax - this.zMin)); + + // keep aspect ration between x and y scale if desired + if (this.keepAspectRatio) { + if (this.scale.x < this.scale.y) { + //noinspection JSSuspiciousNameCombination + this.scale.y = this.scale.x; } else { - scale = 1 / (1 + (delta / 5)) ; + //noinspection JSSuspiciousNameCombination + this.scale.x = this.scale.y; } + } - // calculate center, the date to zoom around - var gesture = hammerUtil.fakeGesture(this, event), - pointer = getPointer(gesture.center, this.body.dom.center), - pointerDate = this._pointerToDate(pointer); + // scale the vertical axis + this.scale.z *= this.verticalRatio; + // TODO: can this be automated? verticalRatio? - this.zoom(scale, pointerDate, delta); - } + // determine scale for (optional) value + this.scale.value = 1 / (this.valueMax - this.valueMin); - // Prevent default actions caused by mouse wheel - // (else the page and timeline both zoom and scroll) - event.preventDefault(); + // position the camera arm + var xCenter = (this.xMax + this.xMin) / 2 * this.scale.x; + var yCenter = (this.yMax + this.yMin) / 2 * this.scale.y; + var zCenter = (this.zMax + this.zMin) / 2 * this.scale.z; + this.camera.setArmLocation(xCenter, yCenter, zCenter); }; - /** - * Start of a touch gesture - * @private - */ - Range.prototype._onTouch = function (event) { - this.props.touch.start = this.start; - this.props.touch.end = this.end; - this.props.touch.allowDragging = true; - this.props.touch.center = null; - this.scaleOffset = 0; - this.deltaDifference = 0; - }; /** - * On start of a hold gesture - * @private + * Convert a 3D location to a 2D location on screen + * http://en.wikipedia.org/wiki/3D_projection + * @param {Point3d} point3d A 3D point with parameters x, y, z + * @return {Point2d} point2d A 2D point with parameters x, y */ - Range.prototype._onHold = function () { - this.props.touch.allowDragging = false; + Graph3d.prototype._convert3Dto2D = function(point3d) { + var translation = this._convertPointToTranslation(point3d); + return this._convertTranslationToScreen(translation); }; /** - * Handle pinch event - * @param {Event} event - * @private + * Convert a 3D location its translation seen from the camera + * http://en.wikipedia.org/wiki/3D_projection + * @param {Point3d} point3d A 3D point with parameters x, y, z + * @return {Point3d} translation A 3D point with parameters x, y, z This is + * the translation of the point, seen from the + * camera */ - Range.prototype._onPinch = function (event) { - // only allow zooming when configured as zoomable and moveable - if (!(this.options.zoomable && this.options.moveable)) return; - - this.props.touch.allowDragging = false; - - if (event.gesture.touches.length > 1) { - if (!this.props.touch.center) { - this.props.touch.center = getPointer(event.gesture.center, this.body.dom.center); - } - - var scale = 1 / (event.gesture.scale + this.scaleOffset); - var centerDate = this._pointerToDate(this.props.touch.center); + Graph3d.prototype._convertPointToTranslation = function(point3d) { + var ax = point3d.x * this.scale.x, + ay = point3d.y * this.scale.y, + az = point3d.z * this.scale.z, - var hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); - var hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this, centerDate); - var hiddenDurationAfter = hiddenDuration - hiddenDurationBefore; + cx = this.camera.getCameraLocation().x, + cy = this.camera.getCameraLocation().y, + cz = this.camera.getCameraLocation().z, - // calculate new start and end - var newStart = (centerDate - hiddenDurationBefore) + (this.props.touch.start - (centerDate - hiddenDurationBefore)) * scale; - var newEnd = (centerDate + hiddenDurationAfter) + (this.props.touch.end - (centerDate + hiddenDurationAfter)) * scale; + // calculate angles + sinTx = Math.sin(this.camera.getCameraRotation().x), + cosTx = Math.cos(this.camera.getCameraRotation().x), + sinTy = Math.sin(this.camera.getCameraRotation().y), + cosTy = Math.cos(this.camera.getCameraRotation().y), + sinTz = Math.sin(this.camera.getCameraRotation().z), + cosTz = Math.cos(this.camera.getCameraRotation().z), - // snapping times away from hidden zones - this.startToFront = 1 - scale > 0 ? false : true; // used to do the right autocorrection with periodic hidden times - this.endToFront = scale - 1 > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + // calculate translation + dx = cosTy * (sinTz * (ay - cy) + cosTz * (ax - cx)) - sinTy * (az - cz), + dy = sinTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) + cosTx * (cosTz * (ay - cy) - sinTz * (ax-cx)), + dz = cosTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) - sinTx * (cosTz * (ay - cy) - sinTz * (ax-cx)); - var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, 1 - scale, true); - var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, scale - 1, true); - if (safeStart != newStart || safeEnd != newEnd) { - this.props.touch.start = safeStart; - this.props.touch.end = safeEnd; - this.scaleOffset = 1 - event.gesture.scale; - newStart = safeStart; - newEnd = safeEnd; - } + return new Point3d(dx, dy, dz); + }; - this.setRange(newStart, newEnd, false, true); + /** + * Convert a translation point to a point on the screen + * @param {Point3d} translation A 3D point with parameters x, y, z This is + * the translation of the point, seen from the + * camera + * @return {Point2d} point2d A 2D point with parameters x, y + */ + Graph3d.prototype._convertTranslationToScreen = function(translation) { + var ex = this.eye.x, + ey = this.eye.y, + ez = this.eye.z, + dx = translation.x, + dy = translation.y, + dz = translation.z; - this.startToFront = false; // revert to default - this.endToFront = true; // revert to default + // calculate position on screen from translation + var bx; + var by; + if (this.showPerspective) { + bx = (dx - ex) * (ez / dz); + by = (dy - ey) * (ez / dz); + } + else { + bx = dx * -(ez / this.camera.getArmLength()); + by = dy * -(ez / this.camera.getArmLength()); } + + // shift and scale the point to the center of the screen + // use the width of the graph to scale both horizontally and vertically. + return new Point2d( + this.xcenter + bx * this.frame.canvas.clientWidth, + this.ycenter - by * this.frame.canvas.clientWidth); }; /** - * Helper function to calculate the center date for zooming - * @param {{x: Number, y: Number}} pointer - * @return {number} date - * @private + * Set the background styling for the graph + * @param {string | {fill: string, stroke: string, strokeWidth: string}} backgroundColor */ - Range.prototype._pointerToDate = function (pointer) { - var conversion; - var direction = this.options.direction; - - validateDirection(direction); + Graph3d.prototype._setBackgroundColor = function(backgroundColor) { + var fill = 'white'; + var stroke = 'gray'; + var strokeWidth = 1; - if (direction == 'horizontal') { - return this.body.util.toTime(pointer.x).valueOf(); + if (typeof(backgroundColor) === 'string') { + fill = backgroundColor; + stroke = 'none'; + strokeWidth = 0; + } + else if (typeof(backgroundColor) === 'object') { + if (backgroundColor.fill !== undefined) fill = backgroundColor.fill; + if (backgroundColor.stroke !== undefined) stroke = backgroundColor.stroke; + if (backgroundColor.strokeWidth !== undefined) strokeWidth = backgroundColor.strokeWidth; + } + else if (backgroundColor === undefined) { + // use use defaults } else { - var height = this.body.domProps.center.height; - conversion = this.conversion(height); - return pointer.y / conversion.scale + conversion.offset; + throw 'Unsupported type of backgroundColor'; } + + this.frame.style.backgroundColor = fill; + this.frame.style.borderColor = stroke; + this.frame.style.borderWidth = strokeWidth + 'px'; + this.frame.style.borderStyle = 'solid'; }; - /** - * Get the pointer location relative to the location of the dom element - * @param {{pageX: Number, pageY: Number}} touch - * @param {Element} element HTML DOM element - * @return {{x: Number, y: Number}} pointer - * @private - */ - function getPointer (touch, element) { - return { - x: touch.pageX - util.getAbsoluteLeft(element), - y: touch.pageY - util.getAbsoluteTop(element) - }; - } + + /// enumerate the available styles + Graph3d.STYLE = { + BAR: 0, + BARCOLOR: 1, + BARSIZE: 2, + DOT : 3, + DOTLINE : 4, + DOTCOLOR: 5, + DOTSIZE: 6, + GRID : 7, + LINE: 8, + SURFACE : 9 + }; /** - * Zoom the range the given scale in or out. Start and end date will - * be adjusted, and the timeline will be redrawn. You can optionally give a - * date around which to zoom. - * For example, try scale = 0.9 or 1.1 - * @param {Number} scale Scaling factor. Values above 1 will zoom out, - * values below 1 will zoom in. - * @param {Number} [center] Value representing a date around which will - * be zoomed. + * Retrieve the style index from given styleName + * @param {string} styleName Style name such as 'dot', 'grid', 'dot-line' + * @return {Number} styleNumber Enumeration value representing the style, or -1 + * when not found */ - Range.prototype.zoom = function(scale, center, delta) { - // if centerDate is not provided, take it half between start Date and end Date - if (center == null) { - center = (this.start + this.end) / 2; + Graph3d.prototype._getStyleNumber = function(styleName) { + switch (styleName) { + case 'dot': return Graph3d.STYLE.DOT; + case 'dot-line': return Graph3d.STYLE.DOTLINE; + case 'dot-color': return Graph3d.STYLE.DOTCOLOR; + case 'dot-size': return Graph3d.STYLE.DOTSIZE; + case 'line': return Graph3d.STYLE.LINE; + case 'grid': return Graph3d.STYLE.GRID; + case 'surface': return Graph3d.STYLE.SURFACE; + case 'bar': return Graph3d.STYLE.BAR; + case 'bar-color': return Graph3d.STYLE.BARCOLOR; + case 'bar-size': return Graph3d.STYLE.BARSIZE; } - var hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); - var hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this, center); - var hiddenDurationAfter = hiddenDuration - hiddenDurationBefore; + return -1; + }; - // calculate new start and end - var newStart = (center-hiddenDurationBefore) + (this.start - (center-hiddenDurationBefore)) * scale; - var newEnd = (center+hiddenDurationAfter) + (this.end - (center+hiddenDurationAfter)) * scale; + /** + * Determine the indexes of the data columns, based on the given style and data + * @param {DataSet} data + * @param {Number} style + */ + Graph3d.prototype._determineColumnIndexes = function(data, style) { + if (this.style === Graph3d.STYLE.DOT || + this.style === Graph3d.STYLE.DOTLINE || + this.style === Graph3d.STYLE.LINE || + this.style === Graph3d.STYLE.GRID || + this.style === Graph3d.STYLE.SURFACE || + this.style === Graph3d.STYLE.BAR) { + // 3 columns expected, and optionally a 4th with filter values + this.colX = 0; + this.colY = 1; + this.colZ = 2; + this.colValue = undefined; - // snapping times away from hidden zones - this.startToFront = delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times - this.endToFront = -delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times - var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, delta, true); - var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, -delta, true); - if (safeStart != newStart || safeEnd != newEnd) { - newStart = safeStart; - newEnd = safeEnd; + if (data.getNumberOfColumns() > 3) { + this.colFilter = 3; + } } + else if (this.style === Graph3d.STYLE.DOTCOLOR || + this.style === Graph3d.STYLE.DOTSIZE || + this.style === Graph3d.STYLE.BARCOLOR || + this.style === Graph3d.STYLE.BARSIZE) { + // 4 columns expected, and optionally a 5th with filter values + this.colX = 0; + this.colY = 1; + this.colZ = 2; + this.colValue = 3; - this.setRange(newStart, newEnd, false, true); - - this.startToFront = false; // revert to default - this.endToFront = true; // revert to default + if (data.getNumberOfColumns() > 4) { + this.colFilter = 4; + } + } + else { + throw 'Unknown style "' + this.style + '"'; + } }; + Graph3d.prototype.getNumberOfRows = function(data) { + return data.length; + } - /** - * Move the range with a given delta to the left or right. Start and end - * value will be adjusted. For example, try delta = 0.1 or -0.1 - * @param {Number} delta Moving amount. Positive value will move right, - * negative value will move left - */ - Range.prototype.move = function(delta) { - // zoom start Date and end Date relative to the centerDate - var diff = (this.end - this.start); + Graph3d.prototype.getNumberOfColumns = function(data) { + var counter = 0; + for (var column in data[0]) { + if (data[0].hasOwnProperty(column)) { + counter++; + } + } + return counter; + } - // apply new values - var newStart = this.start + diff * delta; - var newEnd = this.end + diff * delta; - // TODO: reckon with min and max range + Graph3d.prototype.getDistinctValues = function(data, column) { + var distinctValues = []; + for (var i = 0; i < data.length; i++) { + if (distinctValues.indexOf(data[i][column]) == -1) { + distinctValues.push(data[i][column]); + } + } + return distinctValues; + } - this.start = newStart; - this.end = newEnd; + + Graph3d.prototype.getColumnRange = function(data,column) { + var minMax = {min:data[0][column],max:data[0][column]}; + for (var i = 0; i < data.length; i++) { + if (minMax.min > data[i][column]) { minMax.min = data[i][column]; } + if (minMax.max < data[i][column]) { minMax.max = data[i][column]; } + } + return minMax; }; /** - * Move the range to a new center point - * @param {Number} moveTo New center point of the range + * Initialize the data from the data table. Calculate minimum and maximum values + * and column index values + * @param {Array | DataSet | DataView} rawData The data containing the items for the Graph. + * @param {Number} style Style Number */ - Range.prototype.moveTo = function(moveTo) { - var center = (this.start + this.end) / 2; + Graph3d.prototype._dataInitialize = function (rawData, style) { + var me = this; - var diff = center - moveTo; + // unsubscribe from the dataTable + if (this.dataSet) { + this.dataSet.off('*', this._onChange); + } - // calculate new start and end - var newStart = this.start - diff; - var newEnd = this.end - diff; + if (rawData === undefined) + return; - this.setRange(newStart, newEnd); - }; + if (Array.isArray(rawData)) { + rawData = new DataSet(rawData); + } - module.exports = Range; + var data; + if (rawData instanceof DataSet || rawData instanceof DataView) { + data = rawData.get(); + } + else { + throw new Error('Array, DataSet, or DataView expected'); + } + if (data.length == 0) + return; -/***/ }, -/* 18 */ -/***/ function(module, exports, __webpack_require__) { + this.dataSet = rawData; + this.dataTable = data; - // Utility functions for ordering and stacking of items - var EPSILON = 0.001; // used when checking collisions, to prevent round-off errors + // subscribe to changes in the dataset + this._onChange = function () { + me.setData(me.dataSet); + }; + this.dataSet.on('*', this._onChange); - /** - * Order items by their start data - * @param {Item[]} items - */ - exports.orderByStart = function(items) { - items.sort(function (a, b) { - return a.data.start - b.data.start; - }); - }; + // _determineColumnIndexes + // getNumberOfRows (points) + // getNumberOfColumns (x,y,z,v,t,t1,t2...) + // getDistinctValues (unique values?) + // getColumnRange - /** - * Order items by their end date. If they have no end date, their start date - * is used. - * @param {Item[]} items - */ - exports.orderByEnd = function(items) { - items.sort(function (a, b) { - var aTime = ('end' in a.data) ? a.data.end : a.data.start, - bTime = ('end' in b.data) ? b.data.end : b.data.start; + // determine the location of x,y,z,value,filter columns + this.colX = 'x'; + this.colY = 'y'; + this.colZ = 'z'; + this.colValue = 'style'; + this.colFilter = 'filter'; - return aTime - bTime; - }); - }; - /** - * Adjust vertical positions of the items such that they don't overlap each - * other. - * @param {Item[]} items - * All visible items - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * Margins between items and between items and the axis. - * @param {boolean} [force=false] - * If true, all items will be repositioned. If false (default), only - * items having a top===null will be re-stacked - */ - exports.stack = function(items, margin, force) { - var i, iMax; - if (force) { - // reset top position of all items - for (i = 0, iMax = items.length; i < iMax; i++) { - items[i].top = null; + // check if a filter column is provided + if (data[0].hasOwnProperty('filter')) { + if (this.dataFilter === undefined) { + this.dataFilter = new Filter(rawData, this.colFilter, this); + this.dataFilter.setOnLoadCallback(function() {me.redraw();}); } } - // calculate new, non-overlapping positions - for (i = 0, iMax = items.length; i < iMax; i++) { - var item = items[i]; - if (item.stack && item.top === null) { - // initialize top position - item.top = margin.axis; - do { - // TODO: optimize checking for overlap. when there is a gap without items, - // you only need to check for items from the next item on, not from zero - var collidingItem = null; - for (var j = 0, jj = items.length; j < jj; j++) { - var other = items[j]; - if (other.top !== null && other !== item && other.stack && exports.collision(item, other, margin.item)) { - collidingItem = other; - break; - } - } + var withBars = this.style == Graph3d.STYLE.BAR || + this.style == Graph3d.STYLE.BARCOLOR || + this.style == Graph3d.STYLE.BARSIZE; - if (collidingItem != null) { - // There is a collision. Reposition the items above the colliding element - item.top = collidingItem.top + collidingItem.height + margin.item.vertical; - } - } while (collidingItem); + // determine barWidth from data + if (withBars) { + if (this.defaultXBarWidth !== undefined) { + this.xBarWidth = this.defaultXBarWidth; + } + else { + var dataX = this.getDistinctValues(data,this.colX); + this.xBarWidth = (dataX[1] - dataX[0]) || 1; } - } - }; - - - /** - * Adjust vertical positions of the items without stacking them - * @param {Item[]} items - * All visible items - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * Margins between items and between items and the axis. - */ - exports.nostack = function(items, margin, subgroups) { - var i, iMax, newTop; - // reset top position of all items - for (i = 0, iMax = items.length; i < iMax; i++) { - if (items[i].data.subgroup !== undefined) { - newTop = margin.axis; - for (var subgroup in subgroups) { - if (subgroups.hasOwnProperty(subgroup)) { - if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroups[items[i].data.subgroup].index) { - newTop += subgroups[subgroup].height + margin.item.vertical; - } - } - } - items[i].top = newTop; + if (this.defaultYBarWidth !== undefined) { + this.yBarWidth = this.defaultYBarWidth; } else { - items[i].top = margin.axis; + var dataY = this.getDistinctValues(data,this.colY); + this.yBarWidth = (dataY[1] - dataY[0]) || 1; } } + + // calculate minimums and maximums + var xRange = this.getColumnRange(data,this.colX); + if (withBars) { + xRange.min -= this.xBarWidth / 2; + xRange.max += this.xBarWidth / 2; + } + this.xMin = (this.defaultXMin !== undefined) ? this.defaultXMin : xRange.min; + this.xMax = (this.defaultXMax !== undefined) ? this.defaultXMax : xRange.max; + if (this.xMax <= this.xMin) this.xMax = this.xMin + 1; + this.xStep = (this.defaultXStep !== undefined) ? this.defaultXStep : (this.xMax-this.xMin)/5; + + var yRange = this.getColumnRange(data,this.colY); + if (withBars) { + yRange.min -= this.yBarWidth / 2; + yRange.max += this.yBarWidth / 2; + } + this.yMin = (this.defaultYMin !== undefined) ? this.defaultYMin : yRange.min; + this.yMax = (this.defaultYMax !== undefined) ? this.defaultYMax : yRange.max; + if (this.yMax <= this.yMin) this.yMax = this.yMin + 1; + this.yStep = (this.defaultYStep !== undefined) ? this.defaultYStep : (this.yMax-this.yMin)/5; + + var zRange = this.getColumnRange(data,this.colZ); + this.zMin = (this.defaultZMin !== undefined) ? this.defaultZMin : zRange.min; + this.zMax = (this.defaultZMax !== undefined) ? this.defaultZMax : zRange.max; + if (this.zMax <= this.zMin) this.zMax = this.zMin + 1; + this.zStep = (this.defaultZStep !== undefined) ? this.defaultZStep : (this.zMax-this.zMin)/5; + + if (this.colValue !== undefined) { + var valueRange = this.getColumnRange(data,this.colValue); + this.valueMin = (this.defaultValueMin !== undefined) ? this.defaultValueMin : valueRange.min; + this.valueMax = (this.defaultValueMax !== undefined) ? this.defaultValueMax : valueRange.max; + if (this.valueMax <= this.valueMin) this.valueMax = this.valueMin + 1; + } + + // set the scale dependent on the ranges. + this._setScale(); }; + + /** - * Test if the two provided items collide - * The items must have parameters left, width, top, and height. - * @param {Item} a The first item - * @param {Item} b The second item - * @param {{horizontal: number, vertical: number}} margin - * An object containing a horizontal and vertical - * minimum required margin. - * @return {boolean} true if a and b collide, else false + * Filter the data based on the current filter + * @param {Array} data + * @return {Array} dataPoints Array with point objects which can be drawn on screen */ - exports.collision = function(a, b, margin) { - return ((a.left - margin.horizontal + EPSILON) < (b.left + b.width) && - (a.left + a.width + margin.horizontal - EPSILON) > b.left && - (a.top - margin.vertical + EPSILON) < (b.top + b.height) && - (a.top + a.height + margin.vertical - EPSILON) > b.top); - }; + Graph3d.prototype._getDataPoints = function (data) { + // TODO: store the created matrix dataPoints in the filters instead of reloading each time + var x, y, i, z, obj, point; + var dataPoints = []; -/***/ }, -/* 19 */ -/***/ function(module, exports, __webpack_require__) { + if (this.style === Graph3d.STYLE.GRID || + this.style === Graph3d.STYLE.SURFACE) { + // copy all values from the google data table to a matrix + // the provided values are supposed to form a grid of (x,y) positions - var moment = __webpack_require__(44); - var DateUtil = __webpack_require__(15); - var util = __webpack_require__(1); + // create two lists with all present x and y values + var dataX = []; + var dataY = []; + for (i = 0; i < this.getNumberOfRows(data); i++) { + x = data[i][this.colX] || 0; + y = data[i][this.colY] || 0; - /** - * @constructor TimeStep - * The class TimeStep is an iterator for dates. You provide a start date and an - * end date. The class itself determines the best scale (step size) based on the - * provided start Date, end Date, and minimumStep. - * - * If minimumStep is provided, the step size is chosen as close as possible - * to the minimumStep but larger than minimumStep. If minimumStep is not - * provided, the scale is set to 1 DAY. - * The minimumStep should correspond with the onscreen size of about 6 characters - * - * Alternatively, you can set a scale by hand. - * After creation, you can initialize the class by executing first(). Then you - * can iterate from the start date to the end date via next(). You can check if - * the end date is reached with the function hasNext(). After each step, you can - * retrieve the current date via getCurrent(). - * The TimeStep has scales ranging from milliseconds, seconds, minutes, hours, - * days, to years. - * - * Version: 1.2 - * - * @param {Date} [start] The start date, for example new Date(2010, 9, 21) - * or new Date(2010, 9, 21, 23, 45, 00) - * @param {Date} [end] The end date - * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds - */ - function TimeStep(start, end, minimumStep, hiddenDates) { - // variables - this.current = new Date(); - this._start = new Date(); - this._end = new Date(); + if (dataX.indexOf(x) === -1) { + dataX.push(x); + } + if (dataY.indexOf(y) === -1) { + dataY.push(y); + } + } - this.autoScale = true; - this.scale = 'day'; - this.step = 1; + var sortNumber = function (a, b) { + return a - b; + }; + dataX.sort(sortNumber); + dataY.sort(sortNumber); - // initialize the range - this.setRange(start, end, minimumStep); + // create a grid, a 2d matrix, with all values. + var dataMatrix = []; // temporary data matrix + for (i = 0; i < data.length; i++) { + x = data[i][this.colX] || 0; + y = data[i][this.colY] || 0; + z = data[i][this.colZ] || 0; - // hidden Dates options - this.switchedDay = false; - this.switchedMonth = false; - this.switchedYear = false; - this.hiddenDates = hiddenDates; - if (hiddenDates === undefined) { - this.hiddenDates = []; - } + var xIndex = dataX.indexOf(x); // TODO: implement Array().indexOf() for Internet Explorer + var yIndex = dataY.indexOf(y); - this.format = TimeStep.FORMAT; // default formatting - } + if (dataMatrix[xIndex] === undefined) { + dataMatrix[xIndex] = []; + } - // Time formatting - TimeStep.FORMAT = { - minorLabels: { - millisecond:'SSS', - second: 's', - minute: 'HH:mm', - hour: 'HH:mm', - weekday: 'ddd D', - day: 'D', - month: 'MMM', - year: 'YYYY' - }, - majorLabels: { - millisecond:'HH:mm:ss', - second: 'D MMMM HH:mm', - minute: 'ddd D MMMM', - hour: 'ddd D MMMM', - weekday: 'MMMM YYYY', - day: 'MMMM YYYY', - month: 'YYYY', - year: '' - } - }; + var point3d = new Point3d(); + point3d.x = x; + point3d.y = y; + point3d.z = z; - /** - * Set custom formatting for the minor an major labels of the TimeStep. - * Both `minorLabels` and `majorLabels` are an Object with properties: - * 'millisecond, 'second, 'minute', 'hour', 'weekday, 'day, 'month, 'year'. - * @param {{minorLabels: Object, majorLabels: Object}} format - */ - TimeStep.prototype.setFormat = function (format) { - var defaultFormat = util.deepExtend({}, TimeStep.FORMAT); - this.format = util.deepExtend(defaultFormat, format); - }; + obj = {}; + obj.point = point3d; + obj.trans = undefined; + obj.screen = undefined; + obj.bottom = new Point3d(x, y, this.zMin); - /** - * Set a new range - * If minimumStep is provided, the step size is chosen as close as possible - * to the minimumStep but larger than minimumStep. If minimumStep is not - * provided, the scale is set to 1 DAY. - * The minimumStep should correspond with the onscreen size of about 6 characters - * @param {Date} [start] The start date and time. - * @param {Date} [end] The end date and time. - * @param {int} [minimumStep] Optional. Minimum step size in milliseconds - */ - TimeStep.prototype.setRange = function(start, end, minimumStep) { - if (!(start instanceof Date) || !(end instanceof Date)) { - throw "No legal start or end date in method setRange"; - } + dataMatrix[xIndex][yIndex] = obj; - this._start = (start != undefined) ? new Date(start.valueOf()) : new Date(); - this._end = (end != undefined) ? new Date(end.valueOf()) : new Date(); + dataPoints.push(obj); + } - if (this.autoScale) { - this.setMinimumStep(minimumStep); + // fill in the pointers to the neighbors. + for (x = 0; x < dataMatrix.length; x++) { + for (y = 0; y < dataMatrix[x].length; y++) { + if (dataMatrix[x][y]) { + dataMatrix[x][y].pointRight = (x < dataMatrix.length-1) ? dataMatrix[x+1][y] : undefined; + dataMatrix[x][y].pointTop = (y < dataMatrix[x].length-1) ? dataMatrix[x][y+1] : undefined; + dataMatrix[x][y].pointCross = + (x < dataMatrix.length-1 && y < dataMatrix[x].length-1) ? + dataMatrix[x+1][y+1] : + undefined; + } + } + } } - }; + else { // 'dot', 'dot-line', etc. + // copy all values from the google data table to a list with Point3d objects + for (i = 0; i < data.length; i++) { + point = new Point3d(); + point.x = data[i][this.colX] || 0; + point.y = data[i][this.colY] || 0; + point.z = data[i][this.colZ] || 0; - /** - * Set the range iterator to the start date. - */ - TimeStep.prototype.first = function() { - this.current = new Date(this._start.valueOf()); - this.roundToMinor(); - }; + if (this.colValue !== undefined) { + point.value = data[i][this.colValue] || 0; + } - /** - * Round the current date to the first minor date value - * This must be executed once when the current date is set to start Date - */ - TimeStep.prototype.roundToMinor = function() { - // round to floor - // IMPORTANT: we have no breaks in this switch! (this is no bug) - // noinspection FallThroughInSwitchStatementJS - switch (this.scale) { - case 'year': - this.current.setFullYear(this.step * Math.floor(this.current.getFullYear() / this.step)); - this.current.setMonth(0); - case 'month': this.current.setDate(1); - case 'day': // intentional fall through - case 'weekday': this.current.setHours(0); - case 'hour': this.current.setMinutes(0); - case 'minute': this.current.setSeconds(0); - case 'second': this.current.setMilliseconds(0); - //case 'millisecond': // nothing to do for milliseconds - } + obj = {}; + obj.point = point; + obj.bottom = new Point3d(point.x, point.y, this.zMin); + obj.trans = undefined; + obj.screen = undefined; - if (this.step != 1) { - // round down to the first minor value that is a multiple of the current step size - switch (this.scale) { - case 'millisecond': this.current.setMilliseconds(this.current.getMilliseconds() - this.current.getMilliseconds() % this.step); break; - case 'second': this.current.setSeconds(this.current.getSeconds() - this.current.getSeconds() % this.step); break; - case 'minute': this.current.setMinutes(this.current.getMinutes() - this.current.getMinutes() % this.step); break; - case 'hour': this.current.setHours(this.current.getHours() - this.current.getHours() % this.step); break; - case 'weekday': // intentional fall through - case 'day': this.current.setDate((this.current.getDate()-1) - (this.current.getDate()-1) % this.step + 1); break; - case 'month': this.current.setMonth(this.current.getMonth() - this.current.getMonth() % this.step); break; - case 'year': this.current.setFullYear(this.current.getFullYear() - this.current.getFullYear() % this.step); break; - default: break; + dataPoints.push(obj); } } - }; - /** - * Check if the there is a next step - * @return {boolean} true if the current date has not passed the end date - */ - TimeStep.prototype.hasNext = function () { - return (this.current.valueOf() <= this._end.valueOf()); + return dataPoints; }; /** - * Do the next step + * Create the main frame for the Graph3d. + * This function is executed once when a Graph3d object is created. The frame + * contains a canvas, and this canvas contains all objects like the axis and + * nodes. */ - TimeStep.prototype.next = function() { - var prev = this.current.valueOf(); - - // Two cases, needed to prevent issues with switching daylight savings - // (end of March and end of October) - if (this.current.getMonth() < 6) { - switch (this.scale) { - case 'millisecond': - - this.current = new Date(this.current.valueOf() + this.step); break; - case 'second': this.current = new Date(this.current.valueOf() + this.step * 1000); break; - case 'minute': this.current = new Date(this.current.valueOf() + this.step * 1000 * 60); break; - case 'hour': - this.current = new Date(this.current.valueOf() + this.step * 1000 * 60 * 60); - // in case of skipping an hour for daylight savings, adjust the hour again (else you get: 0h 5h 9h ... instead of 0h 4h 8h ...) - var h = this.current.getHours(); - this.current.setHours(h - (h % this.step)); - break; - case 'weekday': // intentional fall through - case 'day': this.current.setDate(this.current.getDate() + this.step); break; - case 'month': this.current.setMonth(this.current.getMonth() + this.step); break; - case 'year': this.current.setFullYear(this.current.getFullYear() + this.step); break; - default: break; - } - } - else { - switch (this.scale) { - case 'millisecond': this.current = new Date(this.current.valueOf() + this.step); break; - case 'second': this.current.setSeconds(this.current.getSeconds() + this.step); break; - case 'minute': this.current.setMinutes(this.current.getMinutes() + this.step); break; - case 'hour': this.current.setHours(this.current.getHours() + this.step); break; - case 'weekday': // intentional fall through - case 'day': this.current.setDate(this.current.getDate() + this.step); break; - case 'month': this.current.setMonth(this.current.getMonth() + this.step); break; - case 'year': this.current.setFullYear(this.current.getFullYear() + this.step); break; - default: break; - } + Graph3d.prototype.create = function () { + // remove all elements from the container element. + while (this.containerElement.hasChildNodes()) { + this.containerElement.removeChild(this.containerElement.firstChild); } - if (this.step != 1) { - // round down to the correct major value - switch (this.scale) { - case 'millisecond': if(this.current.getMilliseconds() < this.step) this.current.setMilliseconds(0); break; - case 'second': if(this.current.getSeconds() < this.step) this.current.setSeconds(0); break; - case 'minute': if(this.current.getMinutes() < this.step) this.current.setMinutes(0); break; - case 'hour': if(this.current.getHours() < this.step) this.current.setHours(0); break; - case 'weekday': // intentional fall through - case 'day': if(this.current.getDate() < this.step+1) this.current.setDate(1); break; - case 'month': if(this.current.getMonth() < this.step) this.current.setMonth(0); break; - case 'year': break; // nothing to do for year - default: break; - } - } + this.frame = document.createElement('div'); + this.frame.style.position = 'relative'; + this.frame.style.overflow = 'hidden'; - // safety mechanism: if current time is still unchanged, move to the end - if (this.current.valueOf() == prev) { - this.current = new Date(this._end.valueOf()); + // create the graph canvas (HTML canvas element) + this.frame.canvas = document.createElement( 'canvas' ); + this.frame.canvas.style.position = 'relative'; + this.frame.appendChild(this.frame.canvas); + //if (!this.frame.canvas.getContext) { + { + var noCanvas = document.createElement( 'DIV' ); + noCanvas.style.color = 'red'; + noCanvas.style.fontWeight = 'bold' ; + noCanvas.style.padding = '10px'; + noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; + this.frame.canvas.appendChild(noCanvas); } - DateUtil.stepOverHiddenDates(this, prev); - }; + this.frame.filter = document.createElement( 'div' ); + this.frame.filter.style.position = 'absolute'; + this.frame.filter.style.bottom = '0px'; + this.frame.filter.style.left = '0px'; + this.frame.filter.style.width = '100%'; + this.frame.appendChild(this.frame.filter); + // add event listeners to handle moving and zooming the contents + var me = this; + var onmousedown = function (event) {me._onMouseDown(event);}; + var ontouchstart = function (event) {me._onTouchStart(event);}; + var onmousewheel = function (event) {me._onWheel(event);}; + var ontooltip = function (event) {me._onTooltip(event);}; + // TODO: these events are never cleaned up... can give a 'memory leakage' - /** - * Get the current datetime - * @return {Date} current The current date - */ - TimeStep.prototype.getCurrent = function() { - return this.current; - }; + util.addEventListener(this.frame.canvas, 'keydown', onkeydown); + util.addEventListener(this.frame.canvas, 'mousedown', onmousedown); + util.addEventListener(this.frame.canvas, 'touchstart', ontouchstart); + util.addEventListener(this.frame.canvas, 'mousewheel', onmousewheel); + util.addEventListener(this.frame.canvas, 'mousemove', ontooltip); - /** - * Set a custom scale. Autoscaling will be disabled. - * For example setScale('minute', 5) will result - * in minor steps of 5 minutes, and major steps of an hour. - * - * @param {{scale: string, step: number}} params - * An object containing two properties: - * - A string 'scale'. Choose from 'millisecond', 'second', - * 'minute', 'hour', 'weekday, 'day, 'month, 'year'. - * - A number 'step'. A step size, by default 1. - * Choose for example 1, 2, 5, or 10. - */ - TimeStep.prototype.setScale = function(params) { - if (params && typeof params.scale == 'string') { - this.scale = params.scale; - this.step = params.step > 0 ? params.step : 1; - this.autoScale = false; - } + // add the new graph to the container element + this.containerElement.appendChild(this.frame); }; + /** - * Enable or disable autoscaling - * @param {boolean} enable If true, autoascaling is set true + * Set a new size for the graph + * @param {string} width Width in pixels or percentage (for example '800px' + * or '50%') + * @param {string} height Height in pixels or percentage (for example '400px' + * or '30%') */ - TimeStep.prototype.setAutoScale = function (enable) { - this.autoScale = enable; - }; + Graph3d.prototype.setSize = function(width, height) { + this.frame.style.width = width; + this.frame.style.height = height; + this._resizeCanvas(); + }; /** - * Automatically determine the scale that bests fits the provided minimum step - * @param {Number} [minimumStep] The minimum step size in milliseconds + * Resize the canvas to the current size of the frame */ - TimeStep.prototype.setMinimumStep = function(minimumStep) { - if (minimumStep == undefined) { - return; - } - - //var b = asc + ds; + Graph3d.prototype._resizeCanvas = function() { + this.frame.canvas.style.width = '100%'; + this.frame.canvas.style.height = '100%'; - var stepYear = (1000 * 60 * 60 * 24 * 30 * 12); - var stepMonth = (1000 * 60 * 60 * 24 * 30); - var stepDay = (1000 * 60 * 60 * 24); - var stepHour = (1000 * 60 * 60); - var stepMinute = (1000 * 60); - var stepSecond = (1000); - var stepMillisecond= (1); + this.frame.canvas.width = this.frame.canvas.clientWidth; + this.frame.canvas.height = this.frame.canvas.clientHeight; - // find the smallest step that is larger than the provided minimumStep - if (stepYear*1000 > minimumStep) {this.scale = 'year'; this.step = 1000;} - if (stepYear*500 > minimumStep) {this.scale = 'year'; this.step = 500;} - if (stepYear*100 > minimumStep) {this.scale = 'year'; this.step = 100;} - if (stepYear*50 > minimumStep) {this.scale = 'year'; this.step = 50;} - if (stepYear*10 > minimumStep) {this.scale = 'year'; this.step = 10;} - if (stepYear*5 > minimumStep) {this.scale = 'year'; this.step = 5;} - if (stepYear > minimumStep) {this.scale = 'year'; this.step = 1;} - if (stepMonth*3 > minimumStep) {this.scale = 'month'; this.step = 3;} - if (stepMonth > minimumStep) {this.scale = 'month'; this.step = 1;} - if (stepDay*5 > minimumStep) {this.scale = 'day'; this.step = 5;} - if (stepDay*2 > minimumStep) {this.scale = 'day'; this.step = 2;} - if (stepDay > minimumStep) {this.scale = 'day'; this.step = 1;} - if (stepDay/2 > minimumStep) {this.scale = 'weekday'; this.step = 1;} - if (stepHour*4 > minimumStep) {this.scale = 'hour'; this.step = 4;} - if (stepHour > minimumStep) {this.scale = 'hour'; this.step = 1;} - if (stepMinute*15 > minimumStep) {this.scale = 'minute'; this.step = 15;} - if (stepMinute*10 > minimumStep) {this.scale = 'minute'; this.step = 10;} - if (stepMinute*5 > minimumStep) {this.scale = 'minute'; this.step = 5;} - if (stepMinute > minimumStep) {this.scale = 'minute'; this.step = 1;} - if (stepSecond*15 > minimumStep) {this.scale = 'second'; this.step = 15;} - if (stepSecond*10 > minimumStep) {this.scale = 'second'; this.step = 10;} - if (stepSecond*5 > minimumStep) {this.scale = 'second'; this.step = 5;} - if (stepSecond > minimumStep) {this.scale = 'second'; this.step = 1;} - if (stepMillisecond*200 > minimumStep) {this.scale = 'millisecond'; this.step = 200;} - if (stepMillisecond*100 > minimumStep) {this.scale = 'millisecond'; this.step = 100;} - if (stepMillisecond*50 > minimumStep) {this.scale = 'millisecond'; this.step = 50;} - if (stepMillisecond*10 > minimumStep) {this.scale = 'millisecond'; this.step = 10;} - if (stepMillisecond*5 > minimumStep) {this.scale = 'millisecond'; this.step = 5;} - if (stepMillisecond > minimumStep) {this.scale = 'millisecond'; this.step = 1;} + // adjust with for margin + this.frame.filter.style.width = (this.frame.canvas.clientWidth - 2 * 10) + 'px'; }; /** - * Snap a date to a rounded value. - * The snap intervals are dependent on the current scale and step. - * Static function - * @param {Date} date the date to be snapped. - * @param {string} scale Current scale, can be 'millisecond', 'second', - * 'minute', 'hour', 'weekday, 'day, 'month, 'year'. - * @param {number} step Current step (1, 2, 4, 5, ... - * @return {Date} snappedDate - */ - TimeStep.snap = function(date, scale, step) { - var clone = new Date(date.valueOf()); - - if (scale == 'year') { - var year = clone.getFullYear() + Math.round(clone.getMonth() / 12); - clone.setFullYear(Math.round(year / step) * step); - clone.setMonth(0); - clone.setDate(0); - clone.setHours(0); - clone.setMinutes(0); - clone.setSeconds(0); - clone.setMilliseconds(0); - } - else if (scale == 'month') { - if (clone.getDate() > 15) { - clone.setDate(1); - clone.setMonth(clone.getMonth() + 1); - // important: first set Date to 1, after that change the month. - } - else { - clone.setDate(1); - } + * Start animation + */ + Graph3d.prototype.animationStart = function() { + if (!this.frame.filter || !this.frame.filter.slider) + throw 'No animation available'; - clone.setHours(0); - clone.setMinutes(0); - clone.setSeconds(0); - clone.setMilliseconds(0); - } - else if (scale == 'day') { - //noinspection FallthroughInSwitchStatementJS - switch (step) { - case 5: - case 2: - clone.setHours(Math.round(clone.getHours() / 24) * 24); break; - default: - clone.setHours(Math.round(clone.getHours() / 12) * 12); break; - } - clone.setMinutes(0); - clone.setSeconds(0); - clone.setMilliseconds(0); - } - else if (scale == 'weekday') { - //noinspection FallthroughInSwitchStatementJS - switch (step) { - case 5: - case 2: - clone.setHours(Math.round(clone.getHours() / 12) * 12); break; - default: - clone.setHours(Math.round(clone.getHours() / 6) * 6); break; - } - clone.setMinutes(0); - clone.setSeconds(0); - clone.setMilliseconds(0); + this.frame.filter.slider.play(); + }; + + + /** + * Stop animation + */ + Graph3d.prototype.animationStop = function() { + if (!this.frame.filter || !this.frame.filter.slider) return; + + this.frame.filter.slider.stop(); + }; + + + /** + * Resize the center position based on the current values in this.defaultXCenter + * and this.defaultYCenter (which are strings with a percentage or a value + * in pixels). The center positions are the variables this.xCenter + * and this.yCenter + */ + Graph3d.prototype._resizeCenter = function() { + // calculate the horizontal center position + if (this.defaultXCenter.charAt(this.defaultXCenter.length-1) === '%') { + this.xcenter = + parseFloat(this.defaultXCenter) / 100 * + this.frame.canvas.clientWidth; } - else if (scale == 'hour') { - switch (step) { - case 4: - clone.setMinutes(Math.round(clone.getMinutes() / 60) * 60); break; - default: - clone.setMinutes(Math.round(clone.getMinutes() / 30) * 30); break; - } - clone.setSeconds(0); - clone.setMilliseconds(0); - } else if (scale == 'minute') { - //noinspection FallthroughInSwitchStatementJS - switch (step) { - case 15: - case 10: - clone.setMinutes(Math.round(clone.getMinutes() / 5) * 5); - clone.setSeconds(0); - break; - case 5: - clone.setSeconds(Math.round(clone.getSeconds() / 60) * 60); break; - default: - clone.setSeconds(Math.round(clone.getSeconds() / 30) * 30); break; - } - clone.setMilliseconds(0); + else { + this.xcenter = parseFloat(this.defaultXCenter); // supposed to be in px } - else if (scale == 'second') { - //noinspection FallthroughInSwitchStatementJS - switch (step) { - case 15: - case 10: - clone.setSeconds(Math.round(clone.getSeconds() / 5) * 5); - clone.setMilliseconds(0); - break; - case 5: - clone.setMilliseconds(Math.round(clone.getMilliseconds() / 1000) * 1000); break; - default: - clone.setMilliseconds(Math.round(clone.getMilliseconds() / 500) * 500); break; - } + + // calculate the vertical center position + if (this.defaultYCenter.charAt(this.defaultYCenter.length-1) === '%') { + this.ycenter = + parseFloat(this.defaultYCenter) / 100 * + (this.frame.canvas.clientHeight - this.frame.filter.clientHeight); } - else if (scale == 'millisecond') { - var _step = step > 5 ? step / 2 : 1; - clone.setMilliseconds(Math.round(clone.getMilliseconds() / _step) * _step); + else { + this.ycenter = parseFloat(this.defaultYCenter); // supposed to be in px } - - return clone; }; /** - * Check if the current value is a major value (for example when the step - * is DAY, a major value is each first day of the MONTH) - * @return {boolean} true if current date is major, else false. + * Set the rotation and distance of the camera + * @param {Object} pos An object with the camera position. The object + * contains three parameters: + * - horizontal {Number} + * The horizontal rotation, between 0 and 2*PI. + * Optional, can be left undefined. + * - vertical {Number} + * The vertical rotation, between 0 and 0.5*PI + * if vertical=0.5*PI, the graph is shown from the + * top. Optional, can be left undefined. + * - distance {Number} + * The (normalized) distance of the camera to the + * center of the graph, a value between 0.71 and 5.0. + * Optional, can be left undefined. */ - TimeStep.prototype.isMajor = function() { - if (this.switchedYear == true) { - this.switchedYear = false; - switch (this.scale) { - case 'year': - case 'month': - case 'weekday': - case 'day': - case 'hour': - case 'minute': - case 'second': - case 'millisecond': - return true; - default: - return false; - } - } - else if (this.switchedMonth == true) { - this.switchedMonth = false; - switch (this.scale) { - case 'weekday': - case 'day': - case 'hour': - case 'minute': - case 'second': - case 'millisecond': - return true; - default: - return false; - } + Graph3d.prototype.setCameraPosition = function(pos) { + if (pos === undefined) { + return; } - else if (this.switchedDay == true) { - this.switchedDay = false; - switch (this.scale) { - case 'millisecond': - case 'second': - case 'minute': - case 'hour': - return true; - default: - return false; - } + + if (pos.horizontal !== undefined && pos.vertical !== undefined) { + this.camera.setArmRotation(pos.horizontal, pos.vertical); } - switch (this.scale) { - case 'millisecond': - return (this.current.getMilliseconds() == 0); - case 'second': - return (this.current.getSeconds() == 0); - case 'minute': - return (this.current.getHours() == 0) && (this.current.getMinutes() == 0); - case 'hour': - return (this.current.getHours() == 0); - case 'weekday': // intentional fall through - case 'day': - return (this.current.getDate() == 1); - case 'month': - return (this.current.getMonth() == 0); - case 'year': - return false; - default: - return false; + if (pos.distance !== undefined) { + this.camera.setArmLength(pos.distance); } + + this.redraw(); }; /** - * Returns formatted text for the minor axislabel, depending on the current - * date and the scale. For example when scale is MINUTE, the current time is - * formatted as "hh:mm". - * @param {Date} [date] custom date. if not provided, current date is taken + * Retrieve the current camera rotation + * @return {object} An object with parameters horizontal, vertical, and + * distance */ - TimeStep.prototype.getLabelMinor = function(date) { - if (date == undefined) { - date = this.current; - } - - var format = this.format.minorLabels[this.scale]; - return (format && format.length > 0) ? moment(date).format(format) : ''; + Graph3d.prototype.getCameraPosition = function() { + var pos = this.camera.getArmRotation(); + pos.distance = this.camera.getArmLength(); + return pos; }; /** - * Returns formatted text for the major axis label, depending on the current - * date and the scale. For example when scale is MINUTE, the major scale is - * hours, and the hour will be formatted as "hh". - * @param {Date} [date] custom date. if not provided, current date is taken + * Load data into the 3D Graph */ - TimeStep.prototype.getLabelMajor = function(date) { - if (date == undefined) { - date = this.current; + Graph3d.prototype._readData = function(data) { + // read the data + this._dataInitialize(data, this.style); + + + if (this.dataFilter) { + // apply filtering + this.dataPoints = this.dataFilter._getDataPoints(); + } + else { + // no filtering. load all data + this.dataPoints = this._getDataPoints(this.dataTable); } - var format = this.format.majorLabels[this.scale]; - return (format && format.length > 0) ? moment(date).format(format) : ''; + // draw the filter + this._redrawFilter(); }; - TimeStep.prototype.getClassName = function() { - var m = moment(this.current); - var date = m.locale ? m.locale('en') : m.lang('en'); // old versions of moment have .lang() function - var step = this.step; + /** + * Replace the dataset of the Graph3d + * @param {Array | DataSet | DataView} data + */ + Graph3d.prototype.setData = function (data) { + this._readData(data); + this.redraw(); - function even(value) { - return (value / step % 2 == 0) ? ' even' : ' odd'; + // start animation when option is true + if (this.animationAutoStart && this.dataFilter) { + this.animationStart(); } + }; - function today(date) { - if (date.isSame(new Date(), 'day')) { - return ' today'; + /** + * Update the options. Options will be merged with current options + * @param {Object} options + */ + Graph3d.prototype.setOptions = function (options) { + var cameraPosition = undefined; + + this.animationStop(); + + if (options !== undefined) { + // retrieve parameter values + if (options.width !== undefined) this.width = options.width; + if (options.height !== undefined) this.height = options.height; + + if (options.xCenter !== undefined) this.defaultXCenter = options.xCenter; + if (options.yCenter !== undefined) this.defaultYCenter = options.yCenter; + + if (options.filterLabel !== undefined) this.filterLabel = options.filterLabel; + if (options.legendLabel !== undefined) this.legendLabel = options.legendLabel; + if (options.xLabel !== undefined) this.xLabel = options.xLabel; + if (options.yLabel !== undefined) this.yLabel = options.yLabel; + if (options.zLabel !== undefined) this.zLabel = options.zLabel; + + if (options.xValueLabel !== undefined) this.xValueLabel = options.xValueLabel; + if (options.yValueLabel !== undefined) this.yValueLabel = options.yValueLabel; + if (options.zValueLabel !== undefined) this.zValueLabel = options.zValueLabel; + + if (options.style !== undefined) { + var styleNumber = this._getStyleNumber(options.style); + if (styleNumber !== -1) { + this.style = styleNumber; + } } - if (date.isSame(moment().add(1, 'day'), 'day')) { - return ' tomorrow'; + if (options.showGrid !== undefined) this.showGrid = options.showGrid; + if (options.showPerspective !== undefined) this.showPerspective = options.showPerspective; + if (options.showShadow !== undefined) this.showShadow = options.showShadow; + if (options.tooltip !== undefined) this.showTooltip = options.tooltip; + if (options.showAnimationControls !== undefined) this.showAnimationControls = options.showAnimationControls; + if (options.keepAspectRatio !== undefined) this.keepAspectRatio = options.keepAspectRatio; + if (options.verticalRatio !== undefined) this.verticalRatio = options.verticalRatio; + + if (options.animationInterval !== undefined) this.animationInterval = options.animationInterval; + if (options.animationPreload !== undefined) this.animationPreload = options.animationPreload; + if (options.animationAutoStart !== undefined)this.animationAutoStart = options.animationAutoStart; + + if (options.xBarWidth !== undefined) this.defaultXBarWidth = options.xBarWidth; + if (options.yBarWidth !== undefined) this.defaultYBarWidth = options.yBarWidth; + + if (options.xMin !== undefined) this.defaultXMin = options.xMin; + if (options.xStep !== undefined) this.defaultXStep = options.xStep; + if (options.xMax !== undefined) this.defaultXMax = options.xMax; + if (options.yMin !== undefined) this.defaultYMin = options.yMin; + if (options.yStep !== undefined) this.defaultYStep = options.yStep; + if (options.yMax !== undefined) this.defaultYMax = options.yMax; + if (options.zMin !== undefined) this.defaultZMin = options.zMin; + if (options.zStep !== undefined) this.defaultZStep = options.zStep; + if (options.zMax !== undefined) this.defaultZMax = options.zMax; + if (options.valueMin !== undefined) this.defaultValueMin = options.valueMin; + if (options.valueMax !== undefined) this.defaultValueMax = options.valueMax; + + if (options.cameraPosition !== undefined) cameraPosition = options.cameraPosition; + + if (cameraPosition !== undefined) { + this.camera.setArmRotation(cameraPosition.horizontal, cameraPosition.vertical); + this.camera.setArmLength(cameraPosition.distance); } - if (date.isSame(moment().add(-1, 'day'), 'day')) { - return ' yesterday'; + else { + this.camera.setArmRotation(1.0, 0.5); + this.camera.setArmLength(1.7); } - return ''; } - function currentWeek(date) { - return date.isSame(new Date(), 'week') ? ' current-week' : ''; + this._setBackgroundColor(options && options.backgroundColor); + + this.setSize(this.width, this.height); + + // re-load the data + if (this.dataTable) { + this.setData(this.dataTable); } - function currentMonth(date) { - return date.isSame(new Date(), 'month') ? ' current-month' : ''; + // start animation when option is true + if (this.animationAutoStart && this.dataFilter) { + this.animationStart(); } + }; - function currentYear(date) { - return date.isSame(new Date(), 'year') ? ' current-year' : ''; + /** + * Redraw the Graph. + */ + Graph3d.prototype.redraw = function() { + if (this.dataPoints === undefined) { + throw 'Error: graph data not initialized'; } - switch (this.scale) { - case 'millisecond': - return even(date.milliseconds()).trim(); + this._resizeCanvas(); + this._resizeCenter(); + this._redrawSlider(); + this._redrawClear(); + this._redrawAxis(); - case 'second': - return even(date.seconds()).trim(); + if (this.style === Graph3d.STYLE.GRID || + this.style === Graph3d.STYLE.SURFACE) { + this._redrawDataGrid(); + } + else if (this.style === Graph3d.STYLE.LINE) { + this._redrawDataLine(); + } + else if (this.style === Graph3d.STYLE.BAR || + this.style === Graph3d.STYLE.BARCOLOR || + this.style === Graph3d.STYLE.BARSIZE) { + this._redrawDataBar(); + } + else { + // style is DOT, DOTLINE, DOTCOLOR, DOTSIZE + this._redrawDataDot(); + } - case 'minute': - return even(date.minutes()).trim(); + this._redrawInfo(); + this._redrawLegend(); + }; - case 'hour': - var hours = date.hours(); - if (this.step == 4) { - hours = hours + '-' + (hours + 4); - } - return hours + 'h' + today(date) + even(date.hours()); + /** + * Clear the canvas before redrawing + */ + Graph3d.prototype._redrawClear = function() { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); - case 'weekday': - return date.format('dddd').toLowerCase() + - today(date) + currentWeek(date) + even(date.date()); + ctx.clearRect(0, 0, canvas.width, canvas.height); + }; - case 'day': - var day = date.date(); - var month = date.format('MMMM').toLowerCase(); - return 'day' + day + ' ' + month + currentMonth(date) + even(day - 1); - case 'month': - return date.format('MMMM').toLowerCase() + - currentMonth(date) + even(date.month()); + /** + * Redraw the legend showing the colors + */ + Graph3d.prototype._redrawLegend = function() { + var y; - case 'year': - var year = date.year(); - return 'year' + year + currentYear(date)+ even(year); + if (this.style === Graph3d.STYLE.DOTCOLOR || + this.style === Graph3d.STYLE.DOTSIZE) { - default: - return ''; + var dotSize = this.frame.clientWidth * 0.02; + + var widthMin, widthMax; + if (this.style === Graph3d.STYLE.DOTSIZE) { + widthMin = dotSize / 2; // px + widthMax = dotSize / 2 + dotSize * 2; // Todo: put this in one function + } + else { + widthMin = 20; // px + widthMax = 20; // px + } + + var height = Math.max(this.frame.clientHeight * 0.25, 100); + var top = this.margin; + var right = this.frame.clientWidth - this.margin; + var left = right - widthMax; + var bottom = top + height; } - }; - module.exports = TimeStep; + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); + ctx.lineWidth = 1; + ctx.font = '14px arial'; // TODO: put in options + + if (this.style === Graph3d.STYLE.DOTCOLOR) { + // draw the color bar + var ymin = 0; + var ymax = height; // Todo: make height customizable + for (y = ymin; y < ymax; y++) { + var f = (y - ymin) / (ymax - ymin); + //var width = (dotSize / 2 + (1-f) * dotSize * 2); // Todo: put this in one function + var hue = f * 240; + var color = this._hsv2rgb(hue, 1, 1); -/***/ }, -/* 20 */ -/***/ function(module, exports, __webpack_require__) { + ctx.strokeStyle = color; + ctx.beginPath(); + ctx.moveTo(left, top + y); + ctx.lineTo(right, top + y); + ctx.stroke(); + } - var Hammer = __webpack_require__(45); - var util = __webpack_require__(1); + ctx.strokeStyle = this.colorAxis; + ctx.strokeRect(left, top, widthMax, height); + } - /** - * @constructor Item - * @param {Object} data Object containing (optional) parameters type, - * start, end, content, group, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} options Configuration options - * // TODO: describe available options - */ - function Item (data, conversion, options) { - this.id = null; - this.parent = null; - this.data = data; - this.dom = null; - this.conversion = conversion || {}; - this.options = options || {}; + if (this.style === Graph3d.STYLE.DOTSIZE) { + // draw border around color bar + ctx.strokeStyle = this.colorAxis; + ctx.fillStyle = this.colorDot; + ctx.beginPath(); + ctx.moveTo(left, top); + ctx.lineTo(right, top); + ctx.lineTo(right - widthMax + widthMin, bottom); + ctx.lineTo(left, bottom); + ctx.closePath(); + ctx.fill(); + ctx.stroke(); + } - this.selected = false; - this.displayed = false; - this.dirty = true; + if (this.style === Graph3d.STYLE.DOTCOLOR || + this.style === Graph3d.STYLE.DOTSIZE) { + // print values along the color bar + var gridLineLen = 5; // px + var step = new StepNumber(this.valueMin, this.valueMax, (this.valueMax-this.valueMin)/5, true); + step.start(); + if (step.getCurrent() < this.valueMin) { + step.next(); + } + while (!step.end()) { + y = bottom - (step.getCurrent() - this.valueMin) / (this.valueMax - this.valueMin) * height; + + ctx.beginPath(); + ctx.moveTo(left - gridLineLen, y); + ctx.lineTo(left, y); + ctx.stroke(); - this.top = null; - this.left = null; - this.width = null; - this.height = null; - } + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = this.colorAxis; + ctx.fillText(step.getCurrent(), left - 2 * gridLineLen, y); - Item.prototype.stack = true; + step.next(); + } - /** - * Select current item - */ - Item.prototype.select = function() { - this.selected = true; - this.dirty = true; - if (this.displayed) this.redraw(); + ctx.textAlign = 'right'; + ctx.textBaseline = 'top'; + var label = this.legendLabel; + ctx.fillText(label, right, bottom + this.margin); + } }; /** - * Unselect current item + * Redraw the filter */ - Item.prototype.unselect = function() { - this.selected = false; - this.dirty = true; - if (this.displayed) this.redraw(); - }; + Graph3d.prototype._redrawFilter = function() { + this.frame.filter.innerHTML = ''; - /** - * Set data for the item. Existing data will be updated. The id should not - * be changed. When the item is displayed, it will be redrawn immediately. - * @param {Object} data - */ - Item.prototype.setData = function(data) { - this.data = data; - this.dirty = true; - if (this.displayed) this.redraw(); - }; + if (this.dataFilter) { + var options = { + 'visible': this.showAnimationControls + }; + var slider = new Slider(this.frame.filter, options); + this.frame.filter.slider = slider; - /** - * Set a parent for the item - * @param {ItemSet | Group} parent - */ - Item.prototype.setParent = function(parent) { - if (this.displayed) { - this.hide(); - this.parent = parent; - if (this.parent) { - this.show(); - } + // TODO: css here is not nice here... + this.frame.filter.style.padding = '10px'; + //this.frame.filter.style.backgroundColor = '#EFEFEF'; + + slider.setValues(this.dataFilter.values); + slider.setPlayInterval(this.animationInterval); + + // create an event handler + var me = this; + var onchange = function () { + var index = slider.getIndex(); + + me.dataFilter.selectValue(index); + me.dataPoints = me.dataFilter._getDataPoints(); + + me.redraw(); + }; + slider.setOnChangeCallback(onchange); } else { - this.parent = parent; + this.frame.filter.slider = undefined; } }; /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible + * Redraw the slider */ - Item.prototype.isVisible = function(range) { - // Should be implemented by Item implementations - return false; + Graph3d.prototype._redrawSlider = function() { + if ( this.frame.filter.slider !== undefined) { + this.frame.filter.slider.redraw(); + } }; - /** - * Show the Item in the DOM (when not already visible) - * @return {Boolean} changed - */ - Item.prototype.show = function() { - return false; - }; /** - * Hide the Item from the DOM (when visible) - * @return {Boolean} changed + * Redraw common information */ - Item.prototype.hide = function() { - return false; - }; + Graph3d.prototype._redrawInfo = function() { + if (this.dataFilter) { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); - /** - * Repaint the item - */ - Item.prototype.redraw = function() { - // should be implemented by the item - }; + ctx.font = '14px arial'; // TODO: put in options + ctx.lineStyle = 'gray'; + ctx.fillStyle = 'gray'; + ctx.textAlign = 'left'; + ctx.textBaseline = 'top'; - /** - * Reposition the Item horizontally - */ - Item.prototype.repositionX = function() { - // should be implemented by the item + var x = this.margin; + var y = this.margin; + ctx.fillText(this.dataFilter.getLabel() + ': ' + this.dataFilter.getSelectedValue(), x, y); + } }; - /** - * Reposition the Item vertically - */ - Item.prototype.repositionY = function() { - // should be implemented by the item - }; /** - * Repaint a delete button on the top right of the item when the item is selected - * @param {HTMLElement} anchor - * @protected + * Redraw the axis */ - Item.prototype._repaintDeleteButton = function (anchor) { - if (this.selected && this.options.editable.remove && !this.dom.deleteButton) { - // create and show button - var me = this; + Graph3d.prototype._redrawAxis = function() { + var canvas = this.frame.canvas, + ctx = canvas.getContext('2d'), + from, to, step, prettyStep, + text, xText, yText, zText, + offset, xOffset, yOffset, + xMin2d, xMax2d; - var deleteButton = document.createElement('div'); - deleteButton.className = 'delete'; - deleteButton.title = 'Delete this item'; + // TODO: get the actual rendered style of the containerElement + //ctx.font = this.containerElement.style.font; + ctx.font = 24 / this.camera.getArmLength() + 'px arial'; - Hammer(deleteButton, { - preventDefault: true - }).on('tap', function (event) { - me.parent.removeFromDataSet(me); - event.stopPropagation(); - }); + // calculate the length for the short grid lines + var gridLenX = 0.025 / this.scale.x; + var gridLenY = 0.025 / this.scale.y; + var textMargin = 5 / this.camera.getArmLength(); // px + var armAngle = this.camera.getArmRotation().horizontal; - anchor.appendChild(deleteButton); - this.dom.deleteButton = deleteButton; + // draw x-grid lines + ctx.lineWidth = 1; + prettyStep = (this.defaultXStep === undefined); + step = new StepNumber(this.xMin, this.xMax, this.xStep, prettyStep); + step.start(); + if (step.getCurrent() < this.xMin) { + step.next(); } - else if (!this.selected && this.dom.deleteButton) { - // remove button - if (this.dom.deleteButton.parentNode) { - this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton); + while (!step.end()) { + var x = step.getCurrent(); + + if (this.showGrid) { + from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorGrid; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); } - this.dom.deleteButton = null; - } - }; + else { + from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(x, this.yMin+gridLenX, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - /** - * Set HTML contents for the item - * @param {Element} element HTML element to fill with the contents - * @private - */ - Item.prototype._updateContents = function (element) { - var content; - if (this.options.template) { - var itemData = this.parent.itemSet.itemsData.get(this.id); // get a clone of the data from the dataset - content = this.options.template(itemData); + from = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); + to = this._convert3Dto2D(new Point3d(x, this.yMax-gridLenX, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + } + + yText = (Math.cos(armAngle) > 0) ? this.yMin : this.yMax; + text = this._convert3Dto2D(new Point3d(x, yText, this.zMin)); + if (Math.cos(armAngle * 2) > 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + text.y += textMargin; + } + else if (Math.sin(armAngle * 2) < 0){ + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + } + else { + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + } + ctx.fillStyle = this.colorAxis; + ctx.fillText(' ' + this.xValueLabel(step.getCurrent()) + ' ', text.x, text.y); + + step.next(); } - else { - content = this.data.content; + + // draw y-grid lines + ctx.lineWidth = 1; + prettyStep = (this.defaultYStep === undefined); + step = new StepNumber(this.yMin, this.yMax, this.yStep, prettyStep); + step.start(); + if (step.getCurrent() < this.yMin) { + step.next(); } + while (!step.end()) { + if (this.showGrid) { + from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); + ctx.strokeStyle = this.colorGrid; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + } + else { + from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMin+gridLenY, step.getCurrent(), this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - if(content !== this.content) { - // only replace the content when changed - if (content instanceof Element) { - element.innerHTML = ''; - element.appendChild(content); + from = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMax-gridLenY, step.getCurrent(), this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); } - else if (content != undefined) { - element.innerHTML = content; + + xText = (Math.sin(armAngle ) > 0) ? this.xMin : this.xMax; + text = this._convert3Dto2D(new Point3d(xText, step.getCurrent(), this.zMin)); + if (Math.cos(armAngle * 2) < 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + text.y += textMargin; + } + else if (Math.sin(armAngle * 2) > 0){ + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; } else { - if (!(this.data.type == 'background' && this.data.content === undefined)) { - throw new Error('Property "content" missing in item ' + this.id); - } + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; } + ctx.fillStyle = this.colorAxis; + ctx.fillText(' ' + this.yValueLabel(step.getCurrent()) + ' ', text.x, text.y); - this.content = content; + step.next(); } - }; - /** - * Set HTML contents for the item - * @param {Element} element HTML element to fill with the contents - * @private - */ - Item.prototype._updateTitle = function (element) { - if (this.data.title != null) { - element.title = this.data.title || ''; + // draw z-grid lines and axis + ctx.lineWidth = 1; + prettyStep = (this.defaultZStep === undefined); + step = new StepNumber(this.zMin, this.zMax, this.zStep, prettyStep); + step.start(); + if (step.getCurrent() < this.zMin) { + step.next(); } - else { - element.removeAttribute('title'); + xText = (Math.cos(armAngle ) > 0) ? this.xMin : this.xMax; + yText = (Math.sin(armAngle ) < 0) ? this.yMin : this.yMax; + while (!step.end()) { + // TODO: make z-grid lines really 3d? + from = this._convert3Dto2D(new Point3d(xText, yText, step.getCurrent())); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(from.x - textMargin, from.y); + ctx.stroke(); + + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = this.colorAxis; + ctx.fillText(this.zValueLabel(step.getCurrent()) + ' ', from.x - 5, from.y); + + step.next(); } - }; + ctx.lineWidth = 1; + from = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); + to = this._convert3Dto2D(new Point3d(xText, yText, this.zMax)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - /** - * Process dataAttributes timeline option and set as data- attributes on dom.content - * @param {Element} element HTML element to which the attributes will be attached - * @private - */ - Item.prototype._updateDataAttributes = function(element) { - if (this.options.dataAttributes && this.options.dataAttributes.length > 0) { - var attributes = []; + // draw x-axis + ctx.lineWidth = 1; + // line at yMin + xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); + xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(xMin2d.x, xMin2d.y); + ctx.lineTo(xMax2d.x, xMax2d.y); + ctx.stroke(); + // line at ymax + xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); + xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(xMin2d.x, xMin2d.y); + ctx.lineTo(xMax2d.x, xMax2d.y); + ctx.stroke(); - if (Array.isArray(this.options.dataAttributes)) { - attributes = this.options.dataAttributes; + // draw y-axis + ctx.lineWidth = 1; + // line at xMin + from = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + // line at xMax + from = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + + // draw x-label + var xLabel = this.xLabel; + if (xLabel.length > 0) { + yOffset = 0.1 / this.scale.y; + xText = (this.xMin + this.xMax) / 2; + yText = (Math.cos(armAngle) > 0) ? this.yMin - yOffset: this.yMax + yOffset; + text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); + if (Math.cos(armAngle * 2) > 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; } - else if (this.options.dataAttributes == 'all') { - attributes = Object.keys(this.data); + else if (Math.sin(armAngle * 2) < 0){ + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; } else { - return; + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; } + ctx.fillStyle = this.colorAxis; + ctx.fillText(xLabel, text.x, text.y); + } - for (var i = 0; i < attributes.length; i++) { - var name = attributes[i]; - var value = this.data[name]; - - if (value != null) { - element.setAttribute('data-' + name, value); - } - else { - element.removeAttribute('data-' + name); - } + // draw y-label + var yLabel = this.yLabel; + if (yLabel.length > 0) { + xOffset = 0.1 / this.scale.x; + xText = (Math.sin(armAngle ) > 0) ? this.xMin - xOffset : this.xMax + xOffset; + yText = (this.yMin + this.yMax) / 2; + text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); + if (Math.cos(armAngle * 2) < 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + } + else if (Math.sin(armAngle * 2) > 0){ + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; } + else { + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + } + ctx.fillStyle = this.colorAxis; + ctx.fillText(yLabel, text.x, text.y); + } + + // draw z-label + var zLabel = this.zLabel; + if (zLabel.length > 0) { + offset = 30; // pixels. // TODO: relate to the max width of the values on the z axis? + xText = (Math.cos(armAngle ) > 0) ? this.xMin : this.xMax; + yText = (Math.sin(armAngle ) < 0) ? this.yMin : this.yMax; + zText = (this.zMin + this.zMax) / 2; + text = this._convert3Dto2D(new Point3d(xText, yText, zText)); + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = this.colorAxis; + ctx.fillText(zLabel, text.x - offset, text.y); + } + }; + + /** + * Calculate the color based on the given value. + * @param {Number} H Hue, a value be between 0 and 360 + * @param {Number} S Saturation, a value between 0 and 1 + * @param {Number} V Value, a value between 0 and 1 + */ + Graph3d.prototype._hsv2rgb = function(H, S, V) { + var R, G, B, C, Hi, X; + + C = V * S; + Hi = Math.floor(H/60); // hi = 0,1,2,3,4,5 + X = C * (1 - Math.abs(((H/60) % 2) - 1)); + + switch (Hi) { + case 0: R = C; G = X; B = 0; break; + case 1: R = X; G = C; B = 0; break; + case 2: R = 0; G = C; B = X; break; + case 3: R = 0; G = X; B = C; break; + case 4: R = X; G = 0; B = C; break; + case 5: R = C; G = 0; B = X; break; + + default: R = 0; G = 0; B = 0; break; } + + return 'RGB(' + parseInt(R*255) + ',' + parseInt(G*255) + ',' + parseInt(B*255) + ')'; }; - /** - * Update custom styles of the element - * @param element - * @private - */ - Item.prototype._updateStyle = function(element) { - // remove old styles - if (this.style) { - util.removeCssText(element, this.style); - this.style = null; + + /** + * Draw all datapoints as a grid + * This function can be used when the style is 'grid' + */ + Graph3d.prototype._redrawDataGrid = function() { + var canvas = this.frame.canvas, + ctx = canvas.getContext('2d'), + point, right, top, cross, + i, + topSideVisible, fillStyle, strokeStyle, lineWidth, + h, s, v, zAvg; + + + if (this.dataPoints === undefined || this.dataPoints.length <= 0) + return; // TODO: throw exception? + + // calculate the translations and screen position of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); + + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; + + // calculate the translation of the point at the bottom (needed for sorting) + var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); + this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; } - // append new styles - if (this.data.style) { - util.addCssText(element, this.data.style); - this.style = this.data.style; - } - }; + // sort the points on depth of their (x,y) position (not on z) + var sortDepth = function (a, b) { + return b.dist - a.dist; + }; + this.dataPoints.sort(sortDepth); - module.exports = Item; + if (this.style === Graph3d.STYLE.SURFACE) { + for (i = 0; i < this.dataPoints.length; i++) { + point = this.dataPoints[i]; + right = this.dataPoints[i].pointRight; + top = this.dataPoints[i].pointTop; + cross = this.dataPoints[i].pointCross; + if (point !== undefined && right !== undefined && top !== undefined && cross !== undefined) { -/***/ }, -/* 21 */ -/***/ function(module, exports, __webpack_require__) { + if (this.showGrayBottom || this.showShadow) { + // calculate the cross product of the two vectors from center + // to left and right, in order to know whether we are looking at the + // bottom or at the top side. We can also use the cross product + // for calculating light intensity + var aDiff = Point3d.subtract(cross.trans, point.trans); + var bDiff = Point3d.subtract(top.trans, right.trans); + var crossproduct = Point3d.crossProduct(aDiff, bDiff); + var len = crossproduct.length(); + // FIXME: there is a bug with determining the surface side (shadow or colored) - var Hammer = __webpack_require__(45); - var Item = __webpack_require__(20); - var BackgroundGroup = __webpack_require__(31); - var RangeItem = __webpack_require__(24); + topSideVisible = (crossproduct.z > 0); + } + else { + topSideVisible = true; + } - /** - * @constructor BackgroundItem - * @extends Item - * @param {Object} data Object containing parameters start, end - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe options - */ - // TODO: implement support for the BackgroundItem just having a start, then being displayed as a sort of an annotation - function BackgroundItem (data, conversion, options) { - this.props = { - content: { - width: 0 - } - }; - this.overflow = false; // if contents can overflow (css styling), this flag is set to true + if (topSideVisible) { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + zAvg = (point.point.z + right.point.z + top.point.z + cross.point.z) / 4; + h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; + s = 1; // saturation - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data.id); - } - if (data.end == undefined) { - throw new Error('Property "end" missing in item ' + data.id); + if (this.showShadow) { + v = Math.min(1 + (crossproduct.x / len) / 2, 1); // value. TODO: scale + fillStyle = this._hsv2rgb(h, s, v); + strokeStyle = fillStyle; + } + else { + v = 1; + fillStyle = this._hsv2rgb(h, s, v); + strokeStyle = this.colorAxis; + } + } + else { + fillStyle = 'gray'; + strokeStyle = this.colorAxis; + } + lineWidth = 0.5; + + ctx.lineWidth = lineWidth; + ctx.fillStyle = fillStyle; + ctx.strokeStyle = strokeStyle; + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); + ctx.lineTo(right.screen.x, right.screen.y); + ctx.lineTo(cross.screen.x, cross.screen.y); + ctx.lineTo(top.screen.x, top.screen.y); + ctx.closePath(); + ctx.fill(); + ctx.stroke(); + } } } + else { // grid style + for (i = 0; i < this.dataPoints.length; i++) { + point = this.dataPoints[i]; + right = this.dataPoints[i].pointRight; + top = this.dataPoints[i].pointTop; - Item.call(this, data, conversion, options); + if (point !== undefined) { + if (this.showPerspective) { + lineWidth = 2 / -point.trans.z; + } + else { + lineWidth = 2 * -(this.eye.z / this.camera.getArmLength()); + } + } - this.emptyContent = false; - } + if (point !== undefined && right !== undefined) { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + zAvg = (point.point.z + right.point.z) / 2; + h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; - BackgroundItem.prototype = new Item (null, null, null); + ctx.lineWidth = lineWidth; + ctx.strokeStyle = this._hsv2rgb(h, 1, 1); + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); + ctx.lineTo(right.screen.x, right.screen.y); + ctx.stroke(); + } - BackgroundItem.prototype.baseClassName = 'item background'; - BackgroundItem.prototype.stack = false; + if (point !== undefined && top !== undefined) { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + zAvg = (point.point.z + top.point.z) / 2; + h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; - /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible - */ - BackgroundItem.prototype.isVisible = function(range) { - // determine visibility - return (this.data.start < range.end) && (this.data.end > range.start); + ctx.lineWidth = lineWidth; + ctx.strokeStyle = this._hsv2rgb(h, 1, 1); + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); + ctx.lineTo(top.screen.x, top.screen.y); + ctx.stroke(); + } + } + } }; + /** - * Repaint the item + * Draw all datapoints as dots. + * This function can be used when the style is 'dot' or 'dot-line' */ - BackgroundItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; - - // background box - dom.box = document.createElement('div'); - // className is updated in redraw() + Graph3d.prototype._redrawDataDot = function() { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); + var i; - // contents box - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); + if (this.dataPoints === undefined || this.dataPoints.length <= 0) + return; // TODO: throw exception? - // Note: we do NOT attach this item as attribute to the DOM, - // such that background items cannot be selected - //dom.box['timeline-item'] = this; + // calculate the translations of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; - this.dirty = true; + // calculate the distance from the point at the bottom to the camera + var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); + this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; } - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); - } - if (!dom.box.parentNode) { - var background = this.parent.dom.background; - if (!background) { - throw new Error('Cannot redraw item: parent has no background container element'); - } - background.appendChild(dom.box); - } - this.displayed = true; + // order the translated points by depth + var sortDepth = function (a, b) { + return b.dist - a.dist; + }; + this.dataPoints.sort(sortDepth); - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.content); - this._updateDataAttributes(this.dom.content); - this._updateStyle(this.dom.box); + // draw the datapoints as colored circles + var dotSize = this.frame.clientWidth * 0.02; // px + for (i = 0; i < this.dataPoints.length; i++) { + var point = this.dataPoints[i]; - // update class - var className = (this.data.className ? (' ' + this.data.className) : '') + - (this.selected ? ' selected' : ''); - dom.box.className = this.baseClassName + className; + if (this.style === Graph3d.STYLE.DOTLINE) { + // draw a vertical line from the bottom to the graph value + //var from = this._convert3Dto2D(new Point3d(point.point.x, point.point.y, this.zMin)); + var from = this._convert3Dto2D(point.bottom); + ctx.lineWidth = 1; + ctx.strokeStyle = this.colorGrid; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(point.screen.x, point.screen.y); + ctx.stroke(); + } - // determine from css whether this box has overflow - this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; + // calculate radius for the circle + var size; + if (this.style === Graph3d.STYLE.DOTSIZE) { + size = dotSize/2 + 2*dotSize * (point.point.value - this.valueMin) / (this.valueMax - this.valueMin); + } + else { + size = dotSize; + } - // recalculate size - this.props.content.width = this.dom.content.offsetWidth; - this.height = 0; // set height zero, so this item will be ignored when stacking items + var radius; + if (this.showPerspective) { + radius = size / -point.trans.z; + } + else { + radius = size * -(this.eye.z / this.camera.getArmLength()); + } + if (radius < 0) { + radius = 0; + } - this.dirty = false; + var hue, color, borderColor; + if (this.style === Graph3d.STYLE.DOTCOLOR ) { + // calculate the color based on the value + hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; + color = this._hsv2rgb(hue, 1, 1); + borderColor = this._hsv2rgb(hue, 1, 0.8); + } + else if (this.style === Graph3d.STYLE.DOTSIZE) { + color = this.colorDot; + borderColor = this.colorDotBorder; + } + else { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; + color = this._hsv2rgb(hue, 1, 1); + borderColor = this._hsv2rgb(hue, 1, 0.8); + } + + // draw the circle + ctx.lineWidth = 1.0; + ctx.strokeStyle = borderColor; + ctx.fillStyle = color; + ctx.beginPath(); + ctx.arc(point.screen.x, point.screen.y, radius, 0, Math.PI*2, true); + ctx.fill(); + ctx.stroke(); } }; /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. + * Draw all datapoints as bars. + * This function can be used when the style is 'bar', 'bar-color', or 'bar-size' */ - BackgroundItem.prototype.show = RangeItem.prototype.show; + Graph3d.prototype._redrawDataBar = function() { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); + var i, j, surface, corners; - /** - * Hide the item from the DOM (when visible) - * @return {Boolean} changed - */ - BackgroundItem.prototype.hide = RangeItem.prototype.hide; + if (this.dataPoints === undefined || this.dataPoints.length <= 0) + return; // TODO: throw exception? - /** - * Reposition the item horizontally - * @Override - */ - BackgroundItem.prototype.repositionX = RangeItem.prototype.repositionX; + // calculate the translations of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; - /** - * Reposition the item vertically - * @Override - */ - BackgroundItem.prototype.repositionY = function(margin) { - var onTop = this.options.orientation === 'top'; - this.dom.content.style.top = onTop ? '' : '0'; - this.dom.content.style.bottom = onTop ? '0' : ''; - var height; + // calculate the distance from the point at the bottom to the camera + var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); + this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; + } - // special positioning for subgroups - if (this.data.subgroup !== undefined) { - var itemSubgroup = this.data.subgroup; - var subgroups = this.parent.subgroups; - var subgroupIndex = subgroups[itemSubgroup].index; - // if the orientation is top, we need to take the difference in height into account. - if (onTop == true) { - // the first subgroup will have to account for the distance from the top to the first item. - height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; - height += subgroupIndex == 0 ? margin.axis - 0.5*margin.item.vertical : 0; - var newTop = this.parent.top; - for (var subgroup in subgroups) { - if (subgroups.hasOwnProperty(subgroup)) { - if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroupIndex) { - newTop += subgroups[subgroup].height + margin.item.vertical; - } - } - } + // order the translated points by depth + var sortDepth = function (a, b) { + return b.dist - a.dist; + }; + this.dataPoints.sort(sortDepth); - // the others will have to be offset downwards with this same distance. - newTop += subgroupIndex != 0 ? margin.axis - 0.5 * margin.item.vertical : 0; - this.dom.box.style.top = newTop + 'px'; - this.dom.box.style.bottom = ''; - } - // and when the orientation is bottom: - else { - var newTop = this.parent.top; - for (var subgroup in subgroups) { - if (subgroups.hasOwnProperty(subgroup)) { - if (subgroups[subgroup].visible == true && subgroups[subgroup].index > subgroupIndex) { - newTop += subgroups[subgroup].height + margin.item.vertical; - } - } - } - height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; - this.dom.box.style.top = newTop + 'px'; - this.dom.box.style.bottom = ''; + // draw the datapoints as bars + var xWidth = this.xBarWidth / 2; + var yWidth = this.yBarWidth / 2; + for (i = 0; i < this.dataPoints.length; i++) { + var point = this.dataPoints[i]; + + // determine color + var hue, color, borderColor; + if (this.style === Graph3d.STYLE.BARCOLOR ) { + // calculate the color based on the value + hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; + color = this._hsv2rgb(hue, 1, 1); + borderColor = this._hsv2rgb(hue, 1, 0.8); } - } - // and in the case of no subgroups: - else { - // we want backgrounds with groups to only show in groups. - if (this.parent instanceof BackgroundGroup) { - // if the item is not in a group: - height = Math.max(this.parent.height, - this.parent.itemSet.body.domProps.center.height, - this.parent.itemSet.body.domProps.centerContainer.height); - this.dom.box.style.top = onTop ? '0' : ''; - this.dom.box.style.bottom = onTop ? '' : '0'; + else if (this.style === Graph3d.STYLE.BARSIZE) { + color = this.colorDot; + borderColor = this.colorDotBorder; } else { - height = this.parent.height; - // same alignment for items when orientation is top or bottom - this.dom.box.style.top = this.parent.top + 'px'; - this.dom.box.style.bottom = ''; + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; + color = this._hsv2rgb(hue, 1, 1); + borderColor = this._hsv2rgb(hue, 1, 0.8); } - } - this.dom.box.style.height = height + 'px'; - }; - module.exports = BackgroundItem; + // calculate size for the bar + if (this.style === Graph3d.STYLE.BARSIZE) { + xWidth = (this.xBarWidth / 2) * ((point.point.value - this.valueMin) / (this.valueMax - this.valueMin) * 0.8 + 0.2); + yWidth = (this.yBarWidth / 2) * ((point.point.value - this.valueMin) / (this.valueMax - this.valueMin) * 0.8 + 0.2); + } + // calculate all corner points + var me = this; + var point3d = point.point; + var top = [ + {point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, point3d.z)}, + {point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, point3d.z)}, + {point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, point3d.z)}, + {point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, point3d.z)} + ]; + var bottom = [ + {point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, this.zMin)}, + {point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, this.zMin)}, + {point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, this.zMin)}, + {point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, this.zMin)} + ]; -/***/ }, -/* 22 */ -/***/ function(module, exports, __webpack_require__) { + // calculate screen location of the points + top.forEach(function (obj) { + obj.screen = me._convert3Dto2D(obj.point); + }); + bottom.forEach(function (obj) { + obj.screen = me._convert3Dto2D(obj.point); + }); - var Item = __webpack_require__(20); - var util = __webpack_require__(1); + // create five sides, calculate both corner points and center points + var surfaces = [ + {corners: top, center: Point3d.avg(bottom[0].point, bottom[2].point)}, + {corners: [top[0], top[1], bottom[1], bottom[0]], center: Point3d.avg(bottom[1].point, bottom[0].point)}, + {corners: [top[1], top[2], bottom[2], bottom[1]], center: Point3d.avg(bottom[2].point, bottom[1].point)}, + {corners: [top[2], top[3], bottom[3], bottom[2]], center: Point3d.avg(bottom[3].point, bottom[2].point)}, + {corners: [top[3], top[0], bottom[0], bottom[3]], center: Point3d.avg(bottom[0].point, bottom[3].point)} + ]; + point.surfaces = surfaces; - /** - * @constructor BoxItem - * @extends Item - * @param {Object} data Object containing parameters start - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe available options - */ - function BoxItem (data, conversion, options) { - this.props = { - dot: { - width: 0, - height: 0 - }, - line: { - width: 0, - height: 0 + // calculate the distance of each of the surface centers to the camera + for (j = 0; j < surfaces.length; j++) { + surface = surfaces[j]; + var transCenter = this._convertPointToTranslation(surface.center); + surface.dist = this.showPerspective ? transCenter.length() : -transCenter.z; + // TODO: this dept calculation doesn't work 100% of the cases due to perspective, + // but the current solution is fast/simple and works in 99.9% of all cases + // the issue is visible in example 14, with graph.setCameraPosition({horizontal: 2.97, vertical: 0.5, distance: 0.9}) } - }; - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data); - } - } + // order the surfaces by their (translated) depth + surfaces.sort(function (a, b) { + var diff = b.dist - a.dist; + if (diff) return diff; - Item.call(this, data, conversion, options); - } + // if equal depth, sort the top surface last + if (a.corners === top) return 1; + if (b.corners === top) return -1; - BoxItem.prototype = new Item (null, null, null); + // both are equal + return 0; + }); - /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible - */ - BoxItem.prototype.isVisible = function(range) { - // determine visibility - // TODO: account for the real width of the item. Right now we just add 1/4 to the window - var interval = (range.end - range.start) / 4; - return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); + // draw the ordered surfaces + ctx.lineWidth = 1; + ctx.strokeStyle = borderColor; + ctx.fillStyle = color; + // NOTE: we start at j=2 instead of j=0 as we don't need to draw the two surfaces at the backside + for (j = 2; j < surfaces.length; j++) { + surface = surfaces[j]; + corners = surface.corners; + ctx.beginPath(); + ctx.moveTo(corners[3].screen.x, corners[3].screen.y); + ctx.lineTo(corners[0].screen.x, corners[0].screen.y); + ctx.lineTo(corners[1].screen.x, corners[1].screen.y); + ctx.lineTo(corners[2].screen.x, corners[2].screen.y); + ctx.lineTo(corners[3].screen.x, corners[3].screen.y); + ctx.fill(); + ctx.stroke(); + } + } }; + /** - * Repaint the item + * Draw a line through all datapoints. + * This function can be used when the style is 'line' */ - BoxItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; - - // create main box - dom.box = document.createElement('DIV'); + Graph3d.prototype._redrawDataLine = function() { + var canvas = this.frame.canvas, + ctx = canvas.getContext('2d'), + point, i; - // contents box (inside the background box). used for making margins - dom.content = document.createElement('DIV'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); + if (this.dataPoints === undefined || this.dataPoints.length <= 0) + return; // TODO: throw exception? - // line to axis - dom.line = document.createElement('DIV'); - dom.line.className = 'line'; + // calculate the translations of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); - // dot on axis - dom.dot = document.createElement('DIV'); - dom.dot.className = 'dot'; + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; + } - // attach this item as attribute - dom.box['timeline-item'] = this; + // start the line + if (this.dataPoints.length > 0) { + point = this.dataPoints[0]; - this.dirty = true; + ctx.lineWidth = 1; // TODO: make customizable + ctx.strokeStyle = 'blue'; // TODO: make customizable + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); } - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); - } - if (!dom.box.parentNode) { - var foreground = this.parent.dom.foreground; - if (!foreground) throw new Error('Cannot redraw item: parent has no foreground container element'); - foreground.appendChild(dom.box); - } - if (!dom.line.parentNode) { - var background = this.parent.dom.background; - if (!background) throw new Error('Cannot redraw item: parent has no background container element'); - background.appendChild(dom.line); - } - if (!dom.dot.parentNode) { - var axis = this.parent.dom.axis; - if (!background) throw new Error('Cannot redraw item: parent has no axis container element'); - axis.appendChild(dom.dot); + // draw the datapoints as colored circles + for (i = 1; i < this.dataPoints.length; i++) { + point = this.dataPoints[i]; + ctx.lineTo(point.screen.x, point.screen.y); } - this.displayed = true; - - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.box); - this._updateDataAttributes(this.dom.box); - this._updateStyle(this.dom.box); - - // update class - var className = (this.data.className? ' ' + this.data.className : '') + - (this.selected ? ' selected' : ''); - dom.box.className = 'item box' + className; - dom.line.className = 'item line' + className; - dom.dot.className = 'item dot' + className; - - // recalculate size - this.props.dot.height = dom.dot.offsetHeight; - this.props.dot.width = dom.dot.offsetWidth; - this.props.line.width = dom.line.offsetWidth; - this.width = dom.box.offsetWidth; - this.height = dom.box.offsetHeight; - this.dirty = false; + // finish the line + if (this.dataPoints.length > 0) { + ctx.stroke(); } - - this._repaintDeleteButton(dom.box); }; /** - * Show the item in the DOM (when not already displayed). The items DOM will - * be created when needed. + * Start a moving operation inside the provided parent element + * @param {Event} event The event that occurred (required for + * retrieving the mouse position) */ - BoxItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); + Graph3d.prototype._onMouseDown = function(event) { + event = event || window.event; + + // check if mouse is still down (may be up when focus is lost for example + // in an iframe) + if (this.leftButtonDown) { + this._onMouseUp(event); } - }; - /** - * Hide the item from the DOM (when visible) - */ - BoxItem.prototype.hide = function() { - if (this.displayed) { - var dom = this.dom; + // only react on left mouse button down + this.leftButtonDown = event.which ? (event.which === 1) : (event.button === 1); + if (!this.leftButtonDown && !this.touchDown) return; - if (dom.box.parentNode) dom.box.parentNode.removeChild(dom.box); - if (dom.line.parentNode) dom.line.parentNode.removeChild(dom.line); - if (dom.dot.parentNode) dom.dot.parentNode.removeChild(dom.dot); + // get mouse position (different code for IE and all other browsers) + this.startMouseX = getMouseX(event); + this.startMouseY = getMouseY(event); - this.top = null; - this.left = null; + this.startStart = new Date(this.start); + this.startEnd = new Date(this.end); + this.startArmRotation = this.camera.getArmRotation(); - this.displayed = false; - } + this.frame.style.cursor = 'move'; + + // add event listeners to handle moving the contents + // we store the function onmousemove and onmouseup in the graph, so we can + // remove the eventlisteners lateron in the function mouseUp() + var me = this; + this.onmousemove = function (event) {me._onMouseMove(event);}; + this.onmouseup = function (event) {me._onMouseUp(event);}; + util.addEventListener(document, 'mousemove', me.onmousemove); + util.addEventListener(document, 'mouseup', me.onmouseup); + util.preventDefault(event); }; + /** - * Reposition the item horizontally - * @Override + * Perform moving operating. + * This function activated from within the funcion Graph.mouseDown(). + * @param {Event} event Well, eehh, the event */ - BoxItem.prototype.repositionX = function() { - var start = this.conversion.toScreen(this.data.start); - var align = this.options.align; - var left; - var box = this.dom.box; - var line = this.dom.line; - var dot = this.dom.dot; + Graph3d.prototype._onMouseMove = function (event) { + event = event || window.event; - // calculate left position of the box - if (align == 'right') { - this.left = start - this.width; + // calculate change in mouse position + var diffX = parseFloat(getMouseX(event)) - this.startMouseX; + var diffY = parseFloat(getMouseY(event)) - this.startMouseY; + + var horizontalNew = this.startArmRotation.horizontal + diffX / 200; + var verticalNew = this.startArmRotation.vertical + diffY / 200; + + var snapAngle = 4; // degrees + var snapValue = Math.sin(snapAngle / 360 * 2 * Math.PI); + + // snap horizontally to nice angles at 0pi, 0.5pi, 1pi, 1.5pi, etc... + // the -0.001 is to take care that the vertical axis is always drawn at the left front corner + if (Math.abs(Math.sin(horizontalNew)) < snapValue) { + horizontalNew = Math.round((horizontalNew / Math.PI)) * Math.PI - 0.001; } - else if (align == 'left') { - this.left = start; + if (Math.abs(Math.cos(horizontalNew)) < snapValue) { + horizontalNew = (Math.round((horizontalNew/ Math.PI - 0.5)) + 0.5) * Math.PI - 0.001; } - else { - // default or 'center' - this.left = start - this.width / 2; + + // snap vertically to nice angles + if (Math.abs(Math.sin(verticalNew)) < snapValue) { + verticalNew = Math.round((verticalNew / Math.PI)) * Math.PI; + } + if (Math.abs(Math.cos(verticalNew)) < snapValue) { + verticalNew = (Math.round((verticalNew/ Math.PI - 0.5)) + 0.5) * Math.PI; } - // reposition box - box.style.left = this.left + 'px'; + this.camera.setArmRotation(horizontalNew, verticalNew); + this.redraw(); - // reposition line - line.style.left = (start - this.props.line.width / 2) + 'px'; + // fire a cameraPositionChange event + var parameters = this.getCameraPosition(); + this.emit('cameraPositionChange', parameters); - // reposition dot - dot.style.left = (start - this.props.dot.width / 2) + 'px'; + util.preventDefault(event); }; + /** - * Reposition the item vertically - * @Override + * Stop moving operating. + * This function activated from within the funcion Graph.mouseDown(). + * @param {event} event The event */ - BoxItem.prototype.repositionY = function() { - var orientation = this.options.orientation; - var box = this.dom.box; - var line = this.dom.line; - var dot = this.dom.dot; + Graph3d.prototype._onMouseUp = function (event) { + this.frame.style.cursor = 'auto'; + this.leftButtonDown = false; - if (orientation == 'top') { - box.style.top = (this.top || 0) + 'px'; + // remove event listeners here + util.removeEventListener(document, 'mousemove', this.onmousemove); + util.removeEventListener(document, 'mouseup', this.onmouseup); + util.preventDefault(event); + }; - line.style.top = '0'; - line.style.height = (this.parent.top + this.top + 1) + 'px'; - line.style.bottom = ''; - } - else { // orientation 'bottom' - var itemSetHeight = this.parent.itemSet.props.height; // TODO: this is nasty - var lineHeight = itemSetHeight - this.parent.top - this.parent.height + this.top; + /** + * After having moved the mouse, a tooltip should pop up when the mouse is resting on a data point + * @param {Event} event A mouse move event + */ + Graph3d.prototype._onTooltip = function (event) { + var delay = 300; // ms + var boundingRect = this.frame.getBoundingClientRect(); + var mouseX = getMouseX(event) - boundingRect.left; + var mouseY = getMouseY(event) - boundingRect.top; - box.style.top = (this.parent.height - this.top - this.height || 0) + 'px'; - line.style.top = (itemSetHeight - lineHeight) + 'px'; - line.style.bottom = '0'; + if (!this.showTooltip) { + return; } - dot.style.top = (-this.props.dot.height / 2) + 'px'; - }; - - module.exports = BoxItem; + if (this.tooltipTimeout) { + clearTimeout(this.tooltipTimeout); + } + // (delayed) display of a tooltip only if no mouse button is down + if (this.leftButtonDown) { + this._hideTooltip(); + return; + } -/***/ }, -/* 23 */ -/***/ function(module, exports, __webpack_require__) { + if (this.tooltip && this.tooltip.dataPoint) { + // tooltip is currently visible + var dataPoint = this._dataPointFromXY(mouseX, mouseY); + if (dataPoint !== this.tooltip.dataPoint) { + // datapoint changed + if (dataPoint) { + this._showTooltip(dataPoint); + } + else { + this._hideTooltip(); + } + } + } + else { + // tooltip is currently not visible + var me = this; + this.tooltipTimeout = setTimeout(function () { + me.tooltipTimeout = null; - var Item = __webpack_require__(20); + // show a tooltip if we have a data point + var dataPoint = me._dataPointFromXY(mouseX, mouseY); + if (dataPoint) { + me._showTooltip(dataPoint); + } + }, delay); + } + }; /** - * @constructor PointItem - * @extends Item - * @param {Object} data Object containing parameters start - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe available options + * Event handler for touchstart event on mobile devices */ - function PointItem (data, conversion, options) { - this.props = { - dot: { - top: 0, - width: 0, - height: 0 - }, - content: { - height: 0, - marginLeft: 0 - } - }; - - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data); - } - } + Graph3d.prototype._onTouchStart = function(event) { + this.touchDown = true; - Item.call(this, data, conversion, options); - } + var me = this; + this.ontouchmove = function (event) {me._onTouchMove(event);}; + this.ontouchend = function (event) {me._onTouchEnd(event);}; + util.addEventListener(document, 'touchmove', me.ontouchmove); + util.addEventListener(document, 'touchend', me.ontouchend); - PointItem.prototype = new Item (null, null, null); + this._onMouseDown(event); + }; /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible + * Event handler for touchmove event on mobile devices */ - PointItem.prototype.isVisible = function(range) { - // determine visibility - // TODO: account for the real width of the item. Right now we just add 1/4 to the window - var interval = (range.end - range.start) / 4; - return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); + Graph3d.prototype._onTouchMove = function(event) { + this._onMouseMove(event); }; /** - * Repaint the item + * Event handler for touchend event on mobile devices */ - PointItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; + Graph3d.prototype._onTouchEnd = function(event) { + this.touchDown = false; - // background box - dom.point = document.createElement('div'); - // className is updated in redraw() + util.removeEventListener(document, 'touchmove', this.ontouchmove); + util.removeEventListener(document, 'touchend', this.ontouchend); - // contents box, right from the dot - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.point.appendChild(dom.content); + this._onMouseUp(event); + }; - // dot at start - dom.dot = document.createElement('div'); - dom.point.appendChild(dom.dot); - // attach this item as attribute - dom.point['timeline-item'] = this; + /** + * Event handler for mouse wheel event, used to zoom the graph + * Code from http://adomas.org/javascript-mouse-wheel/ + * @param {event} event The event + */ + Graph3d.prototype._onWheel = function(event) { + if (!event) /* For IE. */ + event = window.event; - this.dirty = true; + // retrieve delta + var delta = 0; + if (event.wheelDelta) { /* IE/Opera. */ + delta = event.wheelDelta/120; + } else if (event.detail) { /* Mozilla case. */ + // In Mozilla, sign of delta is different than in IE. + // Also, delta is multiple of 3. + delta = -event.detail/3; } - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); - } - if (!dom.point.parentNode) { - var foreground = this.parent.dom.foreground; - if (!foreground) { - throw new Error('Cannot redraw item: parent has no foreground container element'); - } - foreground.appendChild(dom.point); + // If delta is nonzero, handle it. + // Basically, delta is now positive if wheel was scrolled up, + // and negative, if wheel was scrolled down. + if (delta) { + var oldLength = this.camera.getArmLength(); + var newLength = oldLength * (1 - delta / 10); + + this.camera.setArmLength(newLength); + this.redraw(); + + this._hideTooltip(); } - this.displayed = true; - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.point); - this._updateDataAttributes(this.dom.point); - this._updateStyle(this.dom.point); + // fire a cameraPositionChange event + var parameters = this.getCameraPosition(); + this.emit('cameraPositionChange', parameters); - // update class - var className = (this.data.className? ' ' + this.data.className : '') + - (this.selected ? ' selected' : ''); - dom.point.className = 'item point' + className; - dom.dot.className = 'item dot' + className; + // Prevent default actions caused by mouse wheel. + // That might be ugly, but we handle scrolls somehow + // anyway, so don't bother here.. + util.preventDefault(event); + }; - // recalculate size - this.width = dom.point.offsetWidth; - this.height = dom.point.offsetHeight; - this.props.dot.width = dom.dot.offsetWidth; - this.props.dot.height = dom.dot.offsetHeight; - this.props.content.height = dom.content.offsetHeight; + /** + * Test whether a point lies inside given 2D triangle + * @param {Point2d} point + * @param {Point2d[]} triangle + * @return {boolean} Returns true if given point lies inside or on the edge of the triangle + * @private + */ + Graph3d.prototype._insideTriangle = function (point, triangle) { + var a = triangle[0], + b = triangle[1], + c = triangle[2]; - // resize contents - dom.content.style.marginLeft = 2 * this.props.dot.width + 'px'; - //dom.content.style.marginRight = ... + 'px'; // TODO: margin right + function sign (x) { + return x > 0 ? 1 : x < 0 ? -1 : 0; + } - dom.dot.style.top = ((this.height - this.props.dot.height) / 2) + 'px'; - dom.dot.style.left = (this.props.dot.width / 2) + 'px'; + var as = sign((b.x - a.x) * (point.y - a.y) - (b.y - a.y) * (point.x - a.x)); + var bs = sign((c.x - b.x) * (point.y - b.y) - (c.y - b.y) * (point.x - b.x)); + var cs = sign((a.x - c.x) * (point.y - c.y) - (a.y - c.y) * (point.x - c.x)); + + // each of the three signs must be either equal to each other or zero + return (as == 0 || bs == 0 || as == bs) && + (bs == 0 || cs == 0 || bs == cs) && + (as == 0 || cs == 0 || as == cs); + }; + + /** + * Find a data point close to given screen position (x, y) + * @param {Number} x + * @param {Number} y + * @return {Object | null} The closest data point or null if not close to any data point + * @private + */ + Graph3d.prototype._dataPointFromXY = function (x, y) { + var i, + distMax = 100, // px + dataPoint = null, + closestDataPoint = null, + closestDist = null, + center = new Point2d(x, y); + + if (this.style === Graph3d.STYLE.BAR || + this.style === Graph3d.STYLE.BARCOLOR || + this.style === Graph3d.STYLE.BARSIZE) { + // the data points are ordered from far away to closest + for (i = this.dataPoints.length - 1; i >= 0; i--) { + dataPoint = this.dataPoints[i]; + var surfaces = dataPoint.surfaces; + if (surfaces) { + for (var s = surfaces.length - 1; s >= 0; s--) { + // split each surface in two triangles, and see if the center point is inside one of these + var surface = surfaces[s]; + var corners = surface.corners; + var triangle1 = [corners[0].screen, corners[1].screen, corners[2].screen]; + var triangle2 = [corners[2].screen, corners[3].screen, corners[0].screen]; + if (this._insideTriangle(center, triangle1) || + this._insideTriangle(center, triangle2)) { + // return immediately at the first hit + return dataPoint; + } + } + } + } + } + else { + // find the closest data point, using distance to the center of the point on 2d screen + for (i = 0; i < this.dataPoints.length; i++) { + dataPoint = this.dataPoints[i]; + var point = dataPoint.screen; + if (point) { + var distX = Math.abs(x - point.x); + var distY = Math.abs(y - point.y); + var dist = Math.sqrt(distX * distX + distY * distY); - this.dirty = false; + if ((closestDist === null || dist < closestDist) && dist < distMax) { + closestDist = dist; + closestDataPoint = dataPoint; + } + } + } } - this._repaintDeleteButton(dom.point); - }; - /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. - */ - PointItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); - } + return closestDataPoint; }; /** - * Hide the item from the DOM (when visible) + * Display a tooltip for given data point + * @param {Object} dataPoint + * @private */ - PointItem.prototype.hide = function() { - if (this.displayed) { - if (this.dom.point.parentNode) { - this.dom.point.parentNode.removeChild(this.dom.point); - } - - this.top = null; - this.left = null; + Graph3d.prototype._showTooltip = function (dataPoint) { + var content, line, dot; - this.displayed = false; - } - }; + if (!this.tooltip) { + content = document.createElement('div'); + content.style.position = 'absolute'; + content.style.padding = '10px'; + content.style.border = '1px solid #4d4d4d'; + content.style.color = '#1a1a1a'; + content.style.background = 'rgba(255,255,255,0.7)'; + content.style.borderRadius = '2px'; + content.style.boxShadow = '5px 5px 10px rgba(128,128,128,0.5)'; - /** - * Reposition the item horizontally - * @Override - */ - PointItem.prototype.repositionX = function() { - var start = this.conversion.toScreen(this.data.start); + line = document.createElement('div'); + line.style.position = 'absolute'; + line.style.height = '40px'; + line.style.width = '0'; + line.style.borderLeft = '1px solid #4d4d4d'; - this.left = start - this.props.dot.width; + dot = document.createElement('div'); + dot.style.position = 'absolute'; + dot.style.height = '0'; + dot.style.width = '0'; + dot.style.border = '5px solid #4d4d4d'; + dot.style.borderRadius = '5px'; - // reposition point - this.dom.point.style.left = this.left + 'px'; - }; + this.tooltip = { + dataPoint: null, + dom: { + content: content, + line: line, + dot: dot + } + }; + } + else { + content = this.tooltip.dom.content; + line = this.tooltip.dom.line; + dot = this.tooltip.dom.dot; + } - /** - * Reposition the item vertically - * @Override - */ - PointItem.prototype.repositionY = function() { - var orientation = this.options.orientation, - point = this.dom.point; + this._hideTooltip(); - if (orientation == 'top') { - point.style.top = this.top + 'px'; + this.tooltip.dataPoint = dataPoint; + if (typeof this.showTooltip === 'function') { + content.innerHTML = this.showTooltip(dataPoint.point); } else { - point.style.top = (this.parent.height - this.top - this.height) + 'px'; + content.innerHTML = '' + + '' + + '' + + '' + + '
x:' + dataPoint.point.x + '
y:' + dataPoint.point.y + '
z:' + dataPoint.point.z + '
'; } - }; - module.exports = PointItem; + content.style.left = '0'; + content.style.top = '0'; + this.frame.appendChild(content); + this.frame.appendChild(line); + this.frame.appendChild(dot); + // calculate sizes + var contentWidth = content.offsetWidth; + var contentHeight = content.offsetHeight; + var lineHeight = line.offsetHeight; + var dotWidth = dot.offsetWidth; + var dotHeight = dot.offsetHeight; -/***/ }, -/* 24 */ -/***/ function(module, exports, __webpack_require__) { + var left = dataPoint.screen.x - contentWidth / 2; + left = Math.min(Math.max(left, 10), this.frame.clientWidth - 10 - contentWidth); - var Hammer = __webpack_require__(45); - var Item = __webpack_require__(20); + line.style.left = dataPoint.screen.x + 'px'; + line.style.top = (dataPoint.screen.y - lineHeight) + 'px'; + content.style.left = left + 'px'; + content.style.top = (dataPoint.screen.y - lineHeight - contentHeight) + 'px'; + dot.style.left = (dataPoint.screen.x - dotWidth / 2) + 'px'; + dot.style.top = (dataPoint.screen.y - dotHeight / 2) + 'px'; + }; /** - * @constructor RangeItem - * @extends Item - * @param {Object} data Object containing parameters start, end - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe options + * Hide the tooltip when displayed + * @private */ - function RangeItem (data, conversion, options) { - this.props = { - content: { - width: 0 - } - }; - this.overflow = false; // if contents can overflow (css styling), this flag is set to true + Graph3d.prototype._hideTooltip = function () { + if (this.tooltip) { + this.tooltip.dataPoint = null; - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data.id); - } - if (data.end == undefined) { - throw new Error('Property "end" missing in item ' + data.id); + for (var prop in this.tooltip.dom) { + if (this.tooltip.dom.hasOwnProperty(prop)) { + var elem = this.tooltip.dom[prop]; + if (elem && elem.parentNode) { + elem.parentNode.removeChild(elem); + } + } } } + }; - Item.call(this, data, conversion, options); - } - - RangeItem.prototype = new Item (null, null, null); + /**--------------------------------------------------------------------------**/ - RangeItem.prototype.baseClassName = 'item range'; /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible + * Get the horizontal mouse position from a mouse event + * @param {Event} event + * @return {Number} mouse x */ - RangeItem.prototype.isVisible = function(range) { - // determine visibility - return (this.data.start < range.end) && (this.data.end > range.start); - }; + function getMouseX (event) { + if ('clientX' in event) return event.clientX; + return event.targetTouches[0] && event.targetTouches[0].clientX || 0; + } /** - * Repaint the item + * Get the vertical mouse position from a mouse event + * @param {Event} event + * @return {Number} mouse y */ - RangeItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; - - // background box - dom.box = document.createElement('div'); - // className is updated in redraw() - - // contents box - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); - - // attach this item as attribute - dom.box['timeline-item'] = this; - - this.dirty = true; - } - - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); - } - if (!dom.box.parentNode) { - var foreground = this.parent.dom.foreground; - if (!foreground) { - throw new Error('Cannot redraw item: parent has no foreground container element'); - } - foreground.appendChild(dom.box); - } - this.displayed = true; - - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.box); - this._updateDataAttributes(this.dom.box); - this._updateStyle(this.dom.box); - - // update class - var className = (this.data.className ? (' ' + this.data.className) : '') + - (this.selected ? ' selected' : ''); - dom.box.className = this.baseClassName + className; - - // determine from css whether this box has overflow - this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; + function getMouseY (event) { + if ('clientY' in event) return event.clientY; + return event.targetTouches[0] && event.targetTouches[0].clientY || 0; + } - // recalculate size - // turn off max-width to be able to calculate the real width - // this causes an extra browser repaint/reflow, but so be it - this.dom.content.style.maxWidth = 'none'; - this.props.content.width = this.dom.content.offsetWidth; - this.height = this.dom.box.offsetHeight; - this.dom.content.style.maxWidth = ''; + module.exports = Graph3d; - this.dirty = false; - } - this._repaintDeleteButton(dom.box); - this._repaintDragLeft(); - this._repaintDragRight(); - }; +/***/ }, +/* 11 */ +/***/ function(module, exports, __webpack_require__) { + /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. + * Expose `Emitter`. */ - RangeItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); - } - }; + + module.exports = Emitter; /** - * Hide the item from the DOM (when visible) - * @return {Boolean} changed + * Initialize a new `Emitter`. + * + * @api public */ - RangeItem.prototype.hide = function() { - if (this.displayed) { - var box = this.dom.box; - - if (box.parentNode) { - box.parentNode.removeChild(box); - } - - this.top = null; - this.left = null; - this.displayed = false; - } + function Emitter(obj) { + if (obj) return mixin(obj); }; /** - * Reposition the item horizontally - * @Override + * Mixin the emitter properties. + * + * @param {Object} obj + * @return {Object} + * @api private */ - RangeItem.prototype.repositionX = function() { - var parentWidth = this.parent.width; - var start = this.conversion.toScreen(this.data.start); - var end = this.conversion.toScreen(this.data.end); - var contentLeft; - var contentWidth; - - // limit the width of the this, as browsers cannot draw very wide divs - if (start < -parentWidth) { - start = -parentWidth; - } - if (end > 2 * parentWidth) { - end = 2 * parentWidth; - } - var boxWidth = Math.max(end - start, 1); - - if (this.overflow) { - this.left = start; - this.width = boxWidth + this.props.content.width; - contentWidth = this.props.content.width; - - // Note: The calculation of width is an optimistic calculation, giving - // a width which will not change when moving the Timeline - // So no re-stacking needed, which is nicer for the eye; - } - else { - this.left = start; - this.width = boxWidth; - contentWidth = Math.min(end - start - 2 * this.options.padding, this.props.content.width); - } - - this.dom.box.style.left = this.left + 'px'; - this.dom.box.style.width = boxWidth + 'px'; - - switch (this.options.align) { - case 'left': - this.dom.content.style.left = '0'; - break; - - case 'right': - this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding), 0) + 'px'; - break; - - case 'center': - this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding) / 2, 0) + 'px'; - break; - default: // 'auto' - // when range exceeds left of the window, position the contents at the left of the visible area - if (this.overflow) { - if (end > 0) { - contentLeft = Math.max(-start, 0); - } - else { - contentLeft = -contentWidth; // ensure it's not visible anymore - } - } - else { - if (start < 0) { - contentLeft = Math.min(-start, - (end - start - contentWidth - 2 * this.options.padding)); - // TODO: remove the need for options.padding. it's terrible. - } - else { - contentLeft = 0; - } - } - this.dom.content.style.left = contentLeft + 'px'; + function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; } - }; + return obj; + } /** - * Reposition the item vertically - * @Override + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public */ - RangeItem.prototype.repositionY = function() { - var orientation = this.options.orientation, - box = this.dom.box; - if (orientation == 'top') { - box.style.top = this.top + 'px'; - } - else { - box.style.top = (this.parent.height - this.top - this.height) + 'px'; - } + Emitter.prototype.on = + Emitter.prototype.addEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + (this._callbacks[event] = this._callbacks[event] || []) + .push(fn); + return this; }; /** - * Repaint a drag area on the left side of the range when the range is selected - * @protected + * Adds an `event` listener that will be invoked a single + * time then automatically removed. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public */ - RangeItem.prototype._repaintDragLeft = function () { - if (this.selected && this.options.editable.updateTime && !this.dom.dragLeft) { - // create and show drag area - var dragLeft = document.createElement('div'); - dragLeft.className = 'drag-left'; - dragLeft.dragLeftItem = this; - // TODO: this should be redundant? - Hammer(dragLeft, { - preventDefault: true - }).on('drag', function () { - //console.log('drag left') - }); + Emitter.prototype.once = function(event, fn){ + var self = this; + this._callbacks = this._callbacks || {}; - this.dom.box.appendChild(dragLeft); - this.dom.dragLeft = dragLeft; - } - else if (!this.selected && this.dom.dragLeft) { - // delete drag area - if (this.dom.dragLeft.parentNode) { - this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft); - } - this.dom.dragLeft = null; + function on() { + self.off(event, on); + fn.apply(this, arguments); } + + on.fn = fn; + this.on(event, on); + return this; }; /** - * Repaint a drag area on the right side of the range when the range is selected - * @protected + * Remove the given callback for `event` or all + * registered callbacks. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public */ - RangeItem.prototype._repaintDragRight = function () { - if (this.selected && this.options.editable.updateTime && !this.dom.dragRight) { - // create and show drag area - var dragRight = document.createElement('div'); - dragRight.className = 'drag-right'; - dragRight.dragRightItem = this; - // TODO: this should be redundant? - Hammer(dragRight, { - preventDefault: true - }).on('drag', function () { - //console.log('drag right') - }); + Emitter.prototype.off = + Emitter.prototype.removeListener = + Emitter.prototype.removeAllListeners = + Emitter.prototype.removeEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; - this.dom.box.appendChild(dragRight); - this.dom.dragRight = dragRight; - } - else if (!this.selected && this.dom.dragRight) { - // delete drag area - if (this.dom.dragRight.parentNode) { - this.dom.dragRight.parentNode.removeChild(this.dom.dragRight); - } - this.dom.dragRight = null; + // all + if (0 == arguments.length) { + this._callbacks = {}; + return this; } - }; - module.exports = RangeItem; - - -/***/ }, -/* 25 */ -/***/ function(module, exports, __webpack_require__) { + // specific event + var callbacks = this._callbacks[event]; + if (!callbacks) return this; - /** - * Prototype for visual components - * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body] - * @param {Object} [options] - */ - function Component (body, options) { - this.options = null; - this.props = null; - } + // remove all handlers + if (1 == arguments.length) { + delete this._callbacks[event]; + return this; + } - /** - * Set options for the component. The new options will be merged into the - * current options. - * @param {Object} options - */ - Component.prototype.setOptions = function(options) { - if (options) { - util.extend(this.options, options); + // remove specific handler + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; + } } + return this; }; /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * Emit `event` with the given args. + * + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} */ - Component.prototype.redraw = function() { - // should be implemented by the component - return false; + + Emitter.prototype.emit = function(event){ + this._callbacks = this._callbacks || {}; + var args = [].slice.call(arguments, 1) + , callbacks = this._callbacks[event]; + + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); + } + } + + return this; }; /** - * Destroy the component. Cleanup DOM and event listeners + * Return array of callbacks for `event`. + * + * @param {String} event + * @return {Array} + * @api public */ - Component.prototype.destroy = function() { - // should be implemented by the component + + Emitter.prototype.listeners = function(event){ + this._callbacks = this._callbacks || {}; + return this._callbacks[event] || []; }; /** - * Test whether the component is resized since the last time _isResized() was - * called. - * @return {Boolean} Returns true if the component is resized - * @protected + * Check if this emitter has `event` handlers. + * + * @param {String} event + * @return {Boolean} + * @api public */ - Component.prototype._isResized = function() { - var resized = (this.props._previousWidth !== this.props.width || - this.props._previousHeight !== this.props.height); - this.props._previousWidth = this.props.width; - this.props._previousHeight = this.props.height; - - return resized; + Emitter.prototype.hasListeners = function(event){ + return !! this.listeners(event).length; }; - module.exports = Component; - /***/ }, -/* 26 */ +/* 12 */ /***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(1); - var Component = __webpack_require__(25); - var moment = __webpack_require__(44); - var locales = __webpack_require__(48); - - /** - * A current time bar - * @param {{range: Range, dom: Object, domProps: Object}} body - * @param {Object} [options] Available parameters: - * {Boolean} [showCurrentTime] - * @constructor CurrentTime - * @extends Component - */ - function CurrentTime (body, options) { - this.body = body; - - // default options - this.defaultOptions = { - showCurrentTime: true, - - locales: locales, - locale: 'en' - }; - this.options = util.extend({}, this.defaultOptions); - this.offset = 0; - - this._create(); - - this.setOptions(options); - } - - CurrentTime.prototype = new Component(); - /** - * Create the HTML DOM for the current time bar - * @private + * @prototype Point3d + * @param {Number} [x] + * @param {Number} [y] + * @param {Number} [z] */ - CurrentTime.prototype._create = function() { - var bar = document.createElement('div'); - bar.className = 'currenttime'; - bar.style.position = 'absolute'; - bar.style.top = '0px'; - bar.style.height = '100%'; - - this.bar = bar; + function Point3d(x, y, z) { + this.x = x !== undefined ? x : 0; + this.y = y !== undefined ? y : 0; + this.z = z !== undefined ? z : 0; }; /** - * Destroy the CurrentTime bar + * Subtract the two provided points, returns a-b + * @param {Point3d} a + * @param {Point3d} b + * @return {Point3d} a-b */ - CurrentTime.prototype.destroy = function () { - this.options.showCurrentTime = false; - this.redraw(); // will remove the bar from the DOM and stop refreshing - - this.body = null; + Point3d.subtract = function(a, b) { + var sub = new Point3d(); + sub.x = a.x - b.x; + sub.y = a.y - b.y; + sub.z = a.z - b.z; + return sub; }; /** - * Set options for the component. Options will be merged in current options. - * @param {Object} options Available parameters: - * {boolean} [showCurrentTime] + * Add the two provided points, returns a+b + * @param {Point3d} a + * @param {Point3d} b + * @return {Point3d} a+b */ - CurrentTime.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - util.selectiveExtend(['showCurrentTime', 'locale', 'locales'], this.options, options); - } + Point3d.add = function(a, b) { + var sum = new Point3d(); + sum.x = a.x + b.x; + sum.y = a.y + b.y; + sum.z = a.z + b.z; + return sum; }; /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * Calculate the average of two 3d points + * @param {Point3d} a + * @param {Point3d} b + * @return {Point3d} The average, (a+b)/2 */ - CurrentTime.prototype.redraw = function() { - if (this.options.showCurrentTime) { - var parent = this.body.dom.backgroundVertical; - if (this.bar.parentNode != parent) { - // attach to the dom - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); - } - parent.appendChild(this.bar); - - this.start(); - } - - var now = new Date(new Date().valueOf() + this.offset); - var x = this.body.util.toScreen(now); - - var locale = this.options.locales[this.options.locale]; - var title = locale.current + ' ' + locale.time + ': ' + moment(now).format('dddd, MMMM Do YYYY, H:mm:ss'); - title = title.charAt(0).toUpperCase() + title.substring(1); - - this.bar.style.left = x + 'px'; - this.bar.title = title; - } - else { - // remove the line from the DOM - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); - } - this.stop(); - } - - return false; + Point3d.avg = function(a, b) { + return new Point3d( + (a.x + b.x) / 2, + (a.y + b.y) / 2, + (a.z + b.z) / 2 + ); }; /** - * Start auto refreshing the current time bar + * Calculate the cross product of the two provided points, returns axb + * Documentation: http://en.wikipedia.org/wiki/Cross_product + * @param {Point3d} a + * @param {Point3d} b + * @return {Point3d} cross product axb */ - CurrentTime.prototype.start = function() { - var me = this; - - function update () { - me.stop(); - - // determine interval to refresh - var scale = me.body.range.conversion(me.body.domProps.center.width).scale; - var interval = 1 / scale / 10; - if (interval < 30) interval = 30; - if (interval > 1000) interval = 1000; - - me.redraw(); + Point3d.crossProduct = function(a, b) { + var crossproduct = new Point3d(); - // start a timer to adjust for the new time - me.currentTimeTimer = setTimeout(update, interval); - } + crossproduct.x = a.y * b.z - a.z * b.y; + crossproduct.y = a.z * b.x - a.x * b.z; + crossproduct.z = a.x * b.y - a.y * b.x; - update(); + return crossproduct; }; - /** - * Stop auto refreshing the current time bar - */ - CurrentTime.prototype.stop = function() { - if (this.currentTimeTimer !== undefined) { - clearTimeout(this.currentTimeTimer); - delete this.currentTimeTimer; - } - }; /** - * Set a current time. This can be used for example to ensure that a client's - * time is synchronized with a shared server time. - * @param {Date | String | Number} time A Date, unix timestamp, or - * ISO date string. + * Rtrieve the length of the vector (or the distance from this point to the origin + * @return {Number} length */ - CurrentTime.prototype.setCurrentTime = function(time) { - var t = util.convert(time, 'Date').valueOf(); - var now = new Date().valueOf(); - this.offset = t - now; - this.redraw(); + Point3d.prototype.length = function() { + return Math.sqrt( + this.x * this.x + + this.y * this.y + + this.z * this.z + ); }; + module.exports = Point3d; + + +/***/ }, +/* 13 */ +/***/ function(module, exports, __webpack_require__) { + /** - * Get the current time. - * @return {Date} Returns the current time. + * @prototype Point2d + * @param {Number} [x] + * @param {Number} [y] */ - CurrentTime.prototype.getCurrentTime = function() { - return new Date(new Date().valueOf() + this.offset); - }; + function Point2d (x, y) { + this.x = x !== undefined ? x : 0; + this.y = y !== undefined ? y : 0; + } - module.exports = CurrentTime; + module.exports = Point2d; /***/ }, -/* 27 */ +/* 14 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(45); - var util = __webpack_require__(1); - var Component = __webpack_require__(25); - var moment = __webpack_require__(44); - var locales = __webpack_require__(48); + var Point3d = __webpack_require__(12); /** - * A custom time bar - * @param {{range: Range, dom: Object}} body - * @param {Object} [options] Available parameters: - * {Boolean} [showCustomTime] - * @constructor CustomTime - * @extends Component + * @class Camera + * The camera is mounted on a (virtual) camera arm. The camera arm can rotate + * The camera is always looking in the direction of the origin of the arm. + * This way, the camera always rotates around one fixed point, the location + * of the camera arm. + * + * Documentation: + * http://en.wikipedia.org/wiki/3D_projection */ + function Camera() { + this.armLocation = new Point3d(); + this.armRotation = {}; + this.armRotation.horizontal = 0; + this.armRotation.vertical = 0; + this.armLength = 1.7; - function CustomTime (body, options) { - this.body = body; - - // default options - this.defaultOptions = { - showCustomTime: false, - locales: locales, - locale: 'en', - id: 0 - }; - this.options = util.extend({}, this.defaultOptions); - - if (options && options.time) { - this.customTime = options.time; - } else { - this.customTime = new Date(); - } - - this.eventParams = {}; // stores state parameters while dragging the bar - - // create the DOM - this._create(); + this.cameraLocation = new Point3d(); + this.cameraRotation = new Point3d(0.5*Math.PI, 0, 0); - this.setOptions(options); + this.calculateCameraOrientation(); } - CustomTime.prototype = new Component(); - /** - * Set options for the component. Options will be merged in current options. - * @param {Object} options Available parameters: - * {boolean} [showCustomTime] + * Set the location (origin) of the arm + * @param {Number} x Normalized value of x + * @param {Number} y Normalized value of y + * @param {Number} z Normalized value of z */ - CustomTime.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - util.selectiveExtend(['showCustomTime', 'locale', 'locales', 'id'], this.options, options); + Camera.prototype.setArmLocation = function(x, y, z) { + this.armLocation.x = x; + this.armLocation.y = y; + this.armLocation.z = z; - // Triggered by addCustomTimeBar, redraw to add new bar - if (this.options.id) { - this.redraw(); - } - } + this.calculateCameraOrientation(); }; /** - * Create the DOM for the custom time - * @private + * Set the rotation of the camera arm + * @param {Number} horizontal The horizontal rotation, between 0 and 2*PI. + * Optional, can be left undefined. + * @param {Number} vertical The vertical rotation, between 0 and 0.5*PI + * if vertical=0.5*PI, the graph is shown from the + * top. Optional, can be left undefined. */ - CustomTime.prototype._create = function() { - var bar = document.createElement('div'); - bar.className = 'customtime'; - bar.style.position = 'absolute'; - bar.style.top = '0px'; - bar.style.height = '100%'; - this.bar = bar; + Camera.prototype.setArmRotation = function(horizontal, vertical) { + if (horizontal !== undefined) { + this.armRotation.horizontal = horizontal; + } - var drag = document.createElement('div'); - drag.style.position = 'relative'; - drag.style.top = '0px'; - drag.style.left = '-10px'; - drag.style.height = '100%'; - drag.style.width = '20px'; - bar.appendChild(drag); + if (vertical !== undefined) { + this.armRotation.vertical = vertical; + if (this.armRotation.vertical < 0) this.armRotation.vertical = 0; + if (this.armRotation.vertical > 0.5*Math.PI) this.armRotation.vertical = 0.5*Math.PI; + } - // attach event listeners - this.hammer = Hammer(bar, { - prevent_default: true - }); - this.hammer.on('dragstart', this._onDragStart.bind(this)); - this.hammer.on('drag', this._onDrag.bind(this)); - this.hammer.on('dragend', this._onDragEnd.bind(this)); + if (horizontal !== undefined || vertical !== undefined) { + this.calculateCameraOrientation(); + } }; /** - * Destroy the CustomTime bar + * Retrieve the current arm rotation + * @return {object} An object with parameters horizontal and vertical */ - CustomTime.prototype.destroy = function () { - this.options.showCustomTime = false; - this.redraw(); // will remove the bar from the DOM - - this.hammer.enable(false); - this.hammer = null; + Camera.prototype.getArmRotation = function() { + var rot = {}; + rot.horizontal = this.armRotation.horizontal; + rot.vertical = this.armRotation.vertical; - this.body = null; + return rot; }; /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * Set the (normalized) length of the camera arm. + * @param {Number} length A length between 0.71 and 5.0 */ - CustomTime.prototype.redraw = function () { - if (this.options.showCustomTime) { - var parent = this.body.dom.backgroundVertical; - if (this.bar.parentNode != parent) { - // attach to the dom - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); - } - parent.appendChild(this.bar); - } - - var x = this.body.util.toScreen(this.customTime); - - var locale = this.options.locales[this.options.locale]; - var title = locale.time + ': ' + moment(this.customTime).format('dddd, MMMM Do YYYY, H:mm:ss'); - title = title.charAt(0).toUpperCase() + title.substring(1); + Camera.prototype.setArmLength = function(length) { + if (length === undefined) + return; - this.bar.style.left = x + 'px'; - this.bar.title = title; - } - else { - // remove the line from the DOM - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); - } - } + this.armLength = length; - return false; - }; + // Radius must be larger than the corner of the graph, + // which has a distance of sqrt(0.5^2+0.5^2) = 0.71 from the center of the + // graph + if (this.armLength < 0.71) this.armLength = 0.71; + if (this.armLength > 5.0) this.armLength = 5.0; - /** - * Set custom time. - * @param {Date | number | string} time - */ - CustomTime.prototype.setCustomTime = function(time) { - this.customTime = util.convert(time, 'Date'); - this.redraw(); + this.calculateCameraOrientation(); }; /** - * Retrieve the current custom time. - * @return {Date} customTime + * Retrieve the arm length + * @return {Number} length */ - CustomTime.prototype.getCustomTime = function() { - return new Date(this.customTime.valueOf()); + Camera.prototype.getArmLength = function() { + return this.armLength; }; /** - * Start moving horizontally - * @param {Event} event - * @private + * Retrieve the camera location + * @return {Point3d} cameraLocation */ - CustomTime.prototype._onDragStart = function(event) { - this.eventParams.dragging = true; - this.eventParams.customTime = this.customTime; - - event.stopPropagation(); - event.preventDefault(); + Camera.prototype.getCameraLocation = function() { + return this.cameraLocation; }; /** - * Perform moving operating. - * @param {Event} event - * @private + * Retrieve the camera rotation + * @return {Point3d} cameraRotation */ - CustomTime.prototype._onDrag = function (event) { - if (!this.eventParams.dragging) return; - - var deltaX = event.gesture.deltaX, - x = this.body.util.toScreen(this.eventParams.customTime) + deltaX, - time = this.body.util.toTime(x); - - this.setCustomTime(time); - - // fire a timechange event - this.body.emitter.emit('timechange', { - id: this.options.id, - time: new Date(this.customTime.valueOf()) - }); - - event.stopPropagation(); - event.preventDefault(); + Camera.prototype.getCameraRotation = function() { + return this.cameraRotation; }; /** - * Stop moving operating. - * @param {event} event - * @private + * Calculate the location and rotation of the camera based on the + * position and orientation of the camera arm */ - CustomTime.prototype._onDragEnd = function (event) { - if (!this.eventParams.dragging) return; - - // fire a timechanged event - this.body.emitter.emit('timechanged', { - id: this.options.id, - time: new Date(this.customTime.valueOf()) - }); + Camera.prototype.calculateCameraOrientation = function() { + // calculate location of the camera + this.cameraLocation.x = this.armLocation.x - this.armLength * Math.sin(this.armRotation.horizontal) * Math.cos(this.armRotation.vertical); + this.cameraLocation.y = this.armLocation.y - this.armLength * Math.cos(this.armRotation.horizontal) * Math.cos(this.armRotation.vertical); + this.cameraLocation.z = this.armLocation.z + this.armLength * Math.sin(this.armRotation.vertical); - event.stopPropagation(); - event.preventDefault(); + // calculate rotation of the camera + this.cameraRotation.x = Math.PI/2 - this.armRotation.vertical; + this.cameraRotation.y = 0; + this.cameraRotation.z = -this.armRotation.horizontal; }; - module.exports = CustomTime; - + module.exports = Camera; /***/ }, -/* 28 */ +/* 15 */ /***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(2); - var Component = __webpack_require__(25); - var DataStep = __webpack_require__(16); + var DataView = __webpack_require__(9); /** - * A horizontal time axis - * @param {Object} [options] See DataAxis.setOptions for the available - * options. - * @constructor DataAxis - * @extends Component - * @param body + * @class Filter + * + * @param {DataSet} data The google data table + * @param {Number} column The index of the column to be filtered + * @param {Graph} graph The graph */ - function DataAxis (body, options, svg, linegraphOptions) { - this.id = util.randomUUID(); - this.body = body; - - this.defaultOptions = { - orientation: 'left', // supported: 'left', 'right' - showMinorLabels: true, - showMajorLabels: true, - icons: true, - majorLinesOffset: 7, - minorLinesOffset: 4, - labelOffsetX: 10, - labelOffsetY: 2, - iconWidth: 20, - width: '40px', - visible: true, - alignZeros: true, - customRange: { - left: {min:undefined, max:undefined}, - right: {min:undefined, max:undefined} - }, - title: { - left: {text:undefined}, - right: {text:undefined} - }, - format: { - left: {decimals: undefined}, - right: {decimals: undefined} - } - }; - - this.linegraphOptions = linegraphOptions; - this.linegraphSVG = svg; - this.props = {}; - this.DOMelements = { // dynamic elements - lines: {}, - labels: {}, - title: {} - }; - - this.dom = {}; + function Filter (data, column, graph) { + this.data = data; + this.column = column; + this.graph = graph; // the parent graph - this.range = {start:0, end:0}; + this.index = undefined; + this.value = undefined; - this.options = util.extend({}, this.defaultOptions); - this.conversionFactor = 1; + // read all distinct values and select the first one + this.values = graph.getDistinctValues(data.get(), this.column); - this.setOptions(options); - this.width = Number(('' + this.options.width).replace("px","")); - this.minWidth = this.width; - this.height = this.linegraphSVG.offsetHeight; - this.hidden = false; + // sort both numeric and string values correctly + this.values.sort(function (a, b) { + return a > b ? 1 : a < b ? -1 : 0; + }); - this.stepPixels = 25; - this.stepPixelsForced = 25; - this.zeroCrossing = -1; + if (this.values.length > 0) { + this.selectValue(0); + } - this.lineOffset = 0; - this.master = true; - this.svgElements = {}; - this.iconsRemoved = false; + // create an array with the filtered datapoints. this will be loaded afterwards + this.dataPoints = []; + this.loaded = false; + this.onLoadCallback = undefined; - this.groups = {}; - this.amountOfGroups = 0; + if (graph.animationPreload) { + this.loaded = false; + this.loadInBackground(); + } + else { + this.loaded = true; + } + }; - // create the HTML DOM - this._create(); - var me = this; - this.body.emitter.on("verticalDrag", function() { - me.dom.lineContainer.style.top = me.body.domProps.scrollTop + 'px'; - }); - } + /** + * Return the label + * @return {string} label + */ + Filter.prototype.isLoaded = function() { + return this.loaded; + }; - DataAxis.prototype = new Component(); + /** + * Return the loaded progress + * @return {Number} percentage between 0 and 100 + */ + Filter.prototype.getLoadedProgress = function() { + var len = this.values.length; - DataAxis.prototype.addGroup = function(label, graphOptions) { - if (!this.groups.hasOwnProperty(label)) { - this.groups[label] = graphOptions; + var i = 0; + while (this.dataPoints[i]) { + i++; } - this.amountOfGroups += 1; - }; - DataAxis.prototype.updateGroup = function(label, graphOptions) { - this.groups[label] = graphOptions; + return Math.round(i / len * 100); }; - DataAxis.prototype.removeGroup = function(label) { - if (this.groups.hasOwnProperty(label)) { - delete this.groups[label]; - this.amountOfGroups -= 1; - } + + /** + * Return the label + * @return {string} label + */ + Filter.prototype.getLabel = function() { + return this.graph.filterLabel; }; - DataAxis.prototype.setOptions = function (options) { - if (options) { - var redraw = false; - if (this.options.orientation != options.orientation && options.orientation !== undefined) { - redraw = true; - } - var fields = [ - 'orientation', - 'showMinorLabels', - 'showMajorLabels', - 'icons', - 'majorLinesOffset', - 'minorLinesOffset', - 'labelOffsetX', - 'labelOffsetY', - 'iconWidth', - 'width', - 'visible', - 'customRange', - 'title', - 'format', - 'alignZeros' - ]; - util.selectiveExtend(fields, this.options, options); + /** + * Return the columnIndex of the filter + * @return {Number} columnIndex + */ + Filter.prototype.getColumn = function() { + return this.column; + }; - this.minWidth = Number(('' + this.options.width).replace("px","")); + /** + * Return the currently selected value. Returns undefined if there is no selection + * @return {*} value + */ + Filter.prototype.getSelectedValue = function() { + if (this.index === undefined) + return undefined; - if (redraw == true && this.dom.frame) { - this.hide(); - this.show(); - } - } + return this.values[this.index]; }; - /** - * Create the HTML DOM for the DataAxis + * Retrieve all values of the filter + * @return {Array} values */ - DataAxis.prototype._create = function() { - this.dom.frame = document.createElement('div'); - this.dom.frame.style.width = this.options.width; - this.dom.frame.style.height = this.height; + Filter.prototype.getValues = function() { + return this.values; + }; - this.dom.lineContainer = document.createElement('div'); - this.dom.lineContainer.style.width = '100%'; - this.dom.lineContainer.style.height = this.height; - this.dom.lineContainer.style.position = 'relative'; + /** + * Retrieve one value of the filter + * @param {Number} index + * @return {*} value + */ + Filter.prototype.getValue = function(index) { + if (index >= this.values.length) + throw 'Error: index out of range'; - // create svg element for graph drawing. - this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); - this.svg.style.position = "absolute"; - this.svg.style.top = '0px'; - this.svg.style.height = '100%'; - this.svg.style.width = '100%'; - this.svg.style.display = "block"; - this.dom.frame.appendChild(this.svg); + return this.values[index]; }; - DataAxis.prototype._redrawGroupIcons = function () { - DOMutil.prepareElements(this.svgElements); - var x; - var iconWidth = this.options.iconWidth; - var iconHeight = 15; - var iconOffset = 4; - var y = iconOffset + 0.5 * iconHeight; + /** + * Retrieve the (filtered) dataPoints for the currently selected filter index + * @param {Number} [index] (optional) + * @return {Array} dataPoints + */ + Filter.prototype._getDataPoints = function(index) { + if (index === undefined) + index = this.index; - if (this.options.orientation == 'left') { - x = iconOffset; + if (index === undefined) + return []; + + var dataPoints; + if (this.dataPoints[index]) { + dataPoints = this.dataPoints[index]; } else { - x = this.width - iconWidth - iconOffset; - } + var f = {}; + f.column = this.column; + f.value = this.values[index]; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); - y += iconHeight + iconOffset; - } - } + var dataView = new DataView(this.data,{filter: function (item) {return (item[f.column] == f.value);}}).get(); + dataPoints = this.graph._getDataPoints(dataView); + + this.dataPoints[index] = dataPoints; } - DOMutil.cleanupElements(this.svgElements); - this.iconsRemoved = false; + return dataPoints; }; - DataAxis.prototype._cleanupIcons = function() { - if (this.iconsRemoved == false) { - DOMutil.prepareElements(this.svgElements); - DOMutil.cleanupElements(this.svgElements); - this.iconsRemoved = true; - } - } + /** - * Create the HTML DOM for the DataAxis + * Set a callback function when the filter is fully loaded. */ - DataAxis.prototype.show = function() { - this.hidden = false; - if (!this.dom.frame.parentNode) { - if (this.options.orientation == 'left') { - this.body.dom.left.appendChild(this.dom.frame); - } - else { - this.body.dom.right.appendChild(this.dom.frame); - } - } - - if (!this.dom.lineContainer.parentNode) { - this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer); - } + Filter.prototype.setOnLoadCallback = function(callback) { + this.onLoadCallback = callback; }; + /** - * Create the HTML DOM for the DataAxis + * Add a value to the list with available values for this filter + * No double entries will be created. + * @param {Number} index */ - DataAxis.prototype.hide = function() { - this.hidden = true; - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); - } + Filter.prototype.selectValue = function(index) { + if (index >= this.values.length) + throw 'Error: index out of range'; - if (this.dom.lineContainer.parentNode) { - this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer); - } + this.index = index; + this.value = this.values[index]; }; /** - * Set a range (start and end) - * @param end - * @param start - * @param end + * Load all filtered rows in the background one by one + * Start this method without providing an index! */ - DataAxis.prototype.setRange = function (start, end) { - if (this.master == false && this.options.alignZeros == true && this.zeroCrossing != -1) { - if (start > 0) { - start = 0; + Filter.prototype.loadInBackground = function(index) { + if (index === undefined) + index = 0; + + var frame = this.graph.frame; + + if (index < this.values.length) { + var dataPointsTemp = this._getDataPoints(index); + //this.graph.redrawInfo(); // TODO: not neat + + // create a progress box + if (frame.progress === undefined) { + frame.progress = document.createElement('DIV'); + frame.progress.style.position = 'absolute'; + frame.progress.style.color = 'gray'; + frame.appendChild(frame.progress); } + var progress = this.getLoadedProgress(); + frame.progress.innerHTML = 'Loading animation... ' + progress + '%'; + // TODO: this is no nice solution... + frame.progress.style.bottom = 60 + 'px'; // TODO: use height of slider + frame.progress.style.left = 10 + 'px'; + + var me = this; + setTimeout(function() {me.loadInBackground(index+1);}, 10); + this.loaded = false; + } + else { + this.loaded = true; + + // remove the progress box + if (frame.progress !== undefined) { + frame.removeChild(frame.progress); + frame.progress = undefined; + } + + if (this.onLoadCallback) + this.onLoadCallback(); } - this.range.start = start; - this.range.end = end; }; + module.exports = Filter; + + +/***/ }, +/* 16 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * @constructor Slider + * + * An html slider control with start/stop/prev/next buttons + * @param {Element} container The element where the slider will be created + * @param {Object} options Available options: + * {boolean} visible If true (default) the + * slider is visible. */ - DataAxis.prototype.redraw = function () { - var resized = false; - var activeGroups = 0; - - // Make sure the line container adheres to the vertical scrolling. - this.dom.lineContainer.style.top = this.body.domProps.scrollTop + 'px'; - - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - activeGroups++; - } - } - } - if (this.amountOfGroups == 0 || activeGroups == 0) { - this.hide(); + function Slider(container, options) { + if (container === undefined) { + throw 'Error: No container element defined'; } - else { - this.show(); - this.height = Number(this.linegraphSVG.style.height.replace("px","")); + this.container = container; + this.visible = (options && options.visible != undefined) ? options.visible : true; - // svg offsetheight did not work in firefox and explorer... - this.dom.lineContainer.style.height = this.height + 'px'; - this.width = this.options.visible == true ? Number(('' + this.options.width).replace("px","")) : 0; + if (this.visible) { + this.frame = document.createElement('DIV'); + //this.frame.style.backgroundColor = '#E5E5E5'; + this.frame.style.width = '100%'; + this.frame.style.position = 'relative'; + this.container.appendChild(this.frame); - var props = this.props; - var frame = this.dom.frame; + this.frame.prev = document.createElement('INPUT'); + this.frame.prev.type = 'BUTTON'; + this.frame.prev.value = 'Prev'; + this.frame.appendChild(this.frame.prev); - // update classname - frame.className = 'dataaxis'; + this.frame.play = document.createElement('INPUT'); + this.frame.play.type = 'BUTTON'; + this.frame.play.value = 'Play'; + this.frame.appendChild(this.frame.play); - // calculate character width and height - this._calculateCharSize(); + this.frame.next = document.createElement('INPUT'); + this.frame.next.type = 'BUTTON'; + this.frame.next.value = 'Next'; + this.frame.appendChild(this.frame.next); - var orientation = this.options.orientation; - var showMinorLabels = this.options.showMinorLabels; - var showMajorLabels = this.options.showMajorLabels; + this.frame.bar = document.createElement('INPUT'); + this.frame.bar.type = 'BUTTON'; + this.frame.bar.style.position = 'absolute'; + this.frame.bar.style.border = '1px solid red'; + this.frame.bar.style.width = '100px'; + this.frame.bar.style.height = '6px'; + this.frame.bar.style.borderRadius = '2px'; + this.frame.bar.style.MozBorderRadius = '2px'; + this.frame.bar.style.border = '1px solid #7F7F7F'; + this.frame.bar.style.backgroundColor = '#E5E5E5'; + this.frame.appendChild(this.frame.bar); - // determine the width and height of the elements for the axis - props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; - props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; + this.frame.slide = document.createElement('INPUT'); + this.frame.slide.type = 'BUTTON'; + this.frame.slide.style.margin = '0px'; + this.frame.slide.value = ' '; + this.frame.slide.style.position = 'relative'; + this.frame.slide.style.left = '-100px'; + this.frame.appendChild(this.frame.slide); - props.minorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.minorLinesOffset; - props.minorLineHeight = 1; - props.majorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.majorLinesOffset; - props.majorLineHeight = 1; + // create events + var me = this; + this.frame.slide.onmousedown = function (event) {me._onMouseDown(event);}; + this.frame.prev.onclick = function (event) {me.prev(event);}; + this.frame.play.onclick = function (event) {me.togglePlay(event);}; + this.frame.next.onclick = function (event) {me.next(event);}; + } - // take frame offline while updating (is almost twice as fast) - if (orientation == 'left') { - frame.style.top = '0'; - frame.style.left = '0'; - frame.style.bottom = ''; - frame.style.width = this.width + 'px'; - frame.style.height = this.height + "px"; - this.props.width = this.body.domProps.left.width; - this.props.height = this.body.domProps.left.height; - } - else { // right - frame.style.top = ''; - frame.style.bottom = '0'; - frame.style.left = '0'; - frame.style.width = this.width + 'px'; - frame.style.height = this.height + "px"; - this.props.width = this.body.domProps.right.width; - this.props.height = this.body.domProps.right.height; - } + this.onChangeCallback = undefined; - resized = this._redrawLabels(); - resized = this._isResized() || resized; + this.values = []; + this.index = undefined; - if (this.options.icons == true) { - this._redrawGroupIcons(); - } - else { - this._cleanupIcons(); - } + this.playTimeout = undefined; + this.playInterval = 1000; // milliseconds + this.playLoop = true; + } - this._redrawTitle(orientation); + /** + * Select the previous index + */ + Slider.prototype.prev = function() { + var index = this.getIndex(); + if (index > 0) { + index--; + this.setIndex(index); + } + }; + + /** + * Select the next index + */ + Slider.prototype.next = function() { + var index = this.getIndex(); + if (index < this.values.length - 1) { + index++; + this.setIndex(index); } - return resized; }; /** - * Repaint major and minor text labels and vertical grid lines - * @private + * Select the next index */ - DataAxis.prototype._redrawLabels = function () { - var resized = false; - DOMutil.prepareElements(this.DOMelements.lines); - DOMutil.prepareElements(this.DOMelements.labels); - - var orientation = this.options['orientation']; - - // calculate range and step (step such that we have space for 7 characters per label) - var minimumStep = this.master ? this.props.majorCharHeight || 10 : this.stepPixelsForced; - - var step = new DataStep( - this.range.start, - this.range.end, - minimumStep, - this.dom.frame.offsetHeight, - this.options.customRange[this.options.orientation], - this.master == false && this.options.alignZeros // doess the step have to align zeros? only if not master and the options is on - ); - - this.step = step; - // get the distance in pixels for a step - // dead space is space that is "left over" after a step - var stepPixels = (this.dom.frame.offsetHeight - (step.deadSpace * (this.dom.frame.offsetHeight / step.marginRange))) / (((step.marginRange - step.deadSpace) / step.step)); - - this.stepPixels = stepPixels; - - var amountOfSteps = this.height / stepPixels; - var stepDifference = 0; - - // the slave axis needs to use the same horizontal lines as the master axis. - if (this.master == false) { - stepPixels = this.stepPixelsForced; - stepDifference = Math.round((this.dom.frame.offsetHeight / stepPixels) - amountOfSteps); - for (var i = 0; i < 0.5 * stepDifference; i++) { - step.previous(); - } - amountOfSteps = this.height / stepPixels; + Slider.prototype.playNext = function() { + var start = new Date(); - if (this.zeroCrossing != -1 && this.options.alignZeros == true) { - var zeroStepDifference = (step.marginEnd / step.step) - this.zeroCrossing; - if (zeroStepDifference > 0) { - for (var i = 0; i < zeroStepDifference; i++) {step.next();} - } - else if (zeroStepDifference < 0) { - for (var i = 0; i < -zeroStepDifference; i++) {step.previous();} - } - } + var index = this.getIndex(); + if (index < this.values.length - 1) { + index++; + this.setIndex(index); } - else { - amountOfSteps += 0.25; + else if (this.playLoop) { + // jump to the start + index = 0; + this.setIndex(index); } + var end = new Date(); + var diff = (end - start); - this.valueAtZero = step.marginEnd; - var marginStartPos = 0; + // calculate how much time it to to set the index and to execute the callback + // function. + var interval = Math.max(this.playInterval - diff, 0); + // document.title = diff // TODO: cleanup - // do not draw the first label - var max = 1; + var me = this; + this.playTimeout = setTimeout(function() {me.playNext();}, interval); + }; - // Get the number of decimal places - var decimals; - if(this.options.format[orientation] !== undefined) { - decimals = this.options.format[orientation].decimals; + /** + * Toggle start or stop playing + */ + Slider.prototype.togglePlay = function() { + if (this.playTimeout === undefined) { + this.play(); + } else { + this.stop(); } + }; - this.maxLabelSize = 0; - var y = 0; - while (max < Math.round(amountOfSteps)) { - step.next(); - y = Math.round(max * stepPixels); - marginStartPos = max * stepPixels; - var isMajor = step.isMajor(); - - if (this.options['showMinorLabels'] && isMajor == false || this.master == false && this.options['showMinorLabels'] == true) { - this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis minor', this.props.minorCharHeight); - } - - if (isMajor && this.options['showMajorLabels'] && this.master == true || - this.options['showMinorLabels'] == false && this.master == false && isMajor == true) { - if (y >= 0) { - this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis major', this.props.majorCharHeight); - } - this._redrawLine(y, orientation, 'grid horizontal major', this.options.majorLinesOffset, this.props.majorLineWidth); - } - else { - this._redrawLine(y, orientation, 'grid horizontal minor', this.options.minorLinesOffset, this.props.minorLineWidth); - } - - if (this.master == true && step.current == 0) { - this.zeroCrossing = max; - } + /** + * Start playing + */ + Slider.prototype.play = function() { + // Test whether already playing + if (this.playTimeout) return; - max++; - } + this.playNext(); - if (this.master == false) { - this.conversionFactor = y / (this.valueAtZero - step.current); - } - else { - this.conversionFactor = this.dom.frame.offsetHeight / step.marginRange; + if (this.frame) { + this.frame.play.value = 'Stop'; } + }; - // Note that title is rotated, so we're using the height, not width! - var titleWidth = 0; - if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { - titleWidth = this.props.titleCharHeight; - } - var offset = this.options.icons == true ? Math.max(this.options.iconWidth, titleWidth) + this.options.labelOffsetX + 15 : titleWidth + this.options.labelOffsetX + 15; + /** + * Stop playing + */ + Slider.prototype.stop = function() { + clearInterval(this.playTimeout); + this.playTimeout = undefined; - // this will resize the yAxis to accommodate the labels. - if (this.maxLabelSize > (this.width - offset) && this.options.visible == true) { - this.width = this.maxLabelSize + offset; - this.options.width = this.width + "px"; - DOMutil.cleanupElements(this.DOMelements.lines); - DOMutil.cleanupElements(this.DOMelements.labels); - this.redraw(); - resized = true; - } - // this will resize the yAxis if it is too big for the labels. - else if (this.maxLabelSize < (this.width - offset) && this.options.visible == true && this.width > this.minWidth) { - this.width = Math.max(this.minWidth,this.maxLabelSize + offset); - this.options.width = this.width + "px"; - DOMutil.cleanupElements(this.DOMelements.lines); - DOMutil.cleanupElements(this.DOMelements.labels); - this.redraw(); - resized = true; - } - else { - DOMutil.cleanupElements(this.DOMelements.lines); - DOMutil.cleanupElements(this.DOMelements.labels); - resized = false; + if (this.frame) { + this.frame.play.value = 'Play'; } + }; - return resized; + /** + * Set a callback function which will be triggered when the value of the + * slider bar has changed. + */ + Slider.prototype.setOnChangeCallback = function(callback) { + this.onChangeCallback = callback; }; - DataAxis.prototype.convertValue = function (value) { - var invertedValue = this.valueAtZero - value; - var convertedValue = invertedValue * this.conversionFactor; - return convertedValue; + /** + * Set the interval for playing the list + * @param {Number} interval The interval in milliseconds + */ + Slider.prototype.setPlayInterval = function(interval) { + this.playInterval = interval; }; /** - * Create a label for the axis at position x - * @private - * @param y - * @param text - * @param orientation - * @param className - * @param characterHeight + * Retrieve the current play interval + * @return {Number} interval The interval in milliseconds */ - DataAxis.prototype._redrawLabel = function (y, text, orientation, className, characterHeight) { - // reuse redundant label - var label = DOMutil.getDOMElement('div',this.DOMelements.labels, this.dom.frame); //this.dom.redundant.labels.shift(); - label.className = className; - label.innerHTML = text; - if (orientation == 'left') { - label.style.left = '-' + this.options.labelOffsetX + 'px'; - label.style.textAlign = "right"; - } - else { - label.style.right = '-' + this.options.labelOffsetX + 'px'; - label.style.textAlign = "left"; - } + Slider.prototype.getPlayInterval = function(interval) { + return this.playInterval; + }; - label.style.top = y - 0.5 * characterHeight + this.options.labelOffsetY + 'px'; + /** + * Set looping on or off + * @pararm {boolean} doLoop If true, the slider will jump to the start when + * the end is passed, and will jump to the end + * when the start is passed. + */ + Slider.prototype.setPlayLoop = function(doLoop) { + this.playLoop = doLoop; + }; - text += ''; - var largestWidth = Math.max(this.props.majorCharWidth,this.props.minorCharWidth); - if (this.maxLabelSize < text.length * largestWidth) { - this.maxLabelSize = text.length * largestWidth; + /** + * Execute the onchange callback function + */ + Slider.prototype.onChange = function() { + if (this.onChangeCallback !== undefined) { + this.onChangeCallback(); } }; /** - * Create a minor line for the axis at position y - * @param y - * @param orientation - * @param className - * @param offset - * @param width + * redraw the slider on the correct place */ - DataAxis.prototype._redrawLine = function (y, orientation, className, offset, width) { - if (this.master == true) { - var line = DOMutil.getDOMElement('div',this.DOMelements.lines, this.dom.lineContainer);//this.dom.redundant.lines.shift(); - line.className = className; - line.innerHTML = ''; - - if (orientation == 'left') { - line.style.left = (this.width - offset) + 'px'; - } - else { - line.style.right = (this.width - offset) + 'px'; - } + Slider.prototype.redraw = function() { + if (this.frame) { + // resize the bar + this.frame.bar.style.top = (this.frame.clientHeight/2 - + this.frame.bar.offsetHeight/2) + 'px'; + this.frame.bar.style.width = (this.frame.clientWidth - + this.frame.prev.clientWidth - + this.frame.play.clientWidth - + this.frame.next.clientWidth - 30) + 'px'; - line.style.width = width + 'px'; - line.style.top = y + 'px'; + // position the slider button + var left = this.indexToLeft(this.index); + this.frame.slide.style.left = (left) + 'px'; } }; + /** - * Create a title for the axis - * @private - * @param orientation + * Set the list with values for the slider + * @param {Array} values A javascript array with values (any type) */ - DataAxis.prototype._redrawTitle = function (orientation) { - DOMutil.prepareElements(this.DOMelements.title); - - // Check if the title is defined for this axes - if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { - var title = DOMutil.getDOMElement('div', this.DOMelements.title, this.dom.frame); - title.className = 'yAxis title ' + orientation; - title.innerHTML = this.options.title[orientation].text; + Slider.prototype.setValues = function(values) { + this.values = values; - // Add style - if provided - if (this.options.title[orientation].style !== undefined) { - util.addCssText(title, this.options.title[orientation].style); - } + if (this.values.length > 0) + this.setIndex(0); + else + this.index = undefined; + }; - if (orientation == 'left') { - title.style.left = this.props.titleCharHeight + 'px'; - } - else { - title.style.right = this.props.titleCharHeight + 'px'; - } + /** + * Select a value by its index + * @param {Number} index + */ + Slider.prototype.setIndex = function(index) { + if (index < this.values.length) { + this.index = index; - title.style.width = this.height + 'px'; + this.redraw(); + this.onChange(); + } + else { + throw 'Error: index out of range'; } - - // we need to clean up in case we did not use all elements. - DOMutil.cleanupElements(this.DOMelements.title); }; - + /** + * retrieve the index of the currently selected vaue + * @return {Number} index + */ + Slider.prototype.getIndex = function() { + return this.index; + }; /** - * Determine the size of text on the axis (both major and minor axis). - * The size is calculated only once and then cached in this.props. - * @private + * retrieve the currently selected value + * @return {*} value */ - DataAxis.prototype._calculateCharSize = function () { - // determine the char width and height on the minor axis - if (!('minorCharHeight' in this.props)) { - var textMinor = document.createTextNode('0'); - var measureCharMinor = document.createElement('div'); - measureCharMinor.className = 'yAxis minor measure'; - measureCharMinor.appendChild(textMinor); - this.dom.frame.appendChild(measureCharMinor); + Slider.prototype.get = function() { + return this.values[this.index]; + }; - this.props.minorCharHeight = measureCharMinor.clientHeight; - this.props.minorCharWidth = measureCharMinor.clientWidth; - this.dom.frame.removeChild(measureCharMinor); - } + Slider.prototype._onMouseDown = function(event) { + // only react on left mouse button down + var leftButtonDown = event.which ? (event.which === 1) : (event.button === 1); + if (!leftButtonDown) return; - if (!('majorCharHeight' in this.props)) { - var textMajor = document.createTextNode('0'); - var measureCharMajor = document.createElement('div'); - measureCharMajor.className = 'yAxis major measure'; - measureCharMajor.appendChild(textMajor); - this.dom.frame.appendChild(measureCharMajor); + this.startClientX = event.clientX; + this.startSlideX = parseFloat(this.frame.slide.style.left); - this.props.majorCharHeight = measureCharMajor.clientHeight; - this.props.majorCharWidth = measureCharMajor.clientWidth; + this.frame.style.cursor = 'move'; - this.dom.frame.removeChild(measureCharMajor); - } + // add event listeners to handle moving the contents + // we store the function onmousemove and onmouseup in the graph, so we can + // remove the eventlisteners lateron in the function mouseUp() + var me = this; + this.onmousemove = function (event) {me._onMouseMove(event);}; + this.onmouseup = function (event) {me._onMouseUp(event);}; + util.addEventListener(document, 'mousemove', this.onmousemove); + util.addEventListener(document, 'mouseup', this.onmouseup); + util.preventDefault(event); + }; - if (!('titleCharHeight' in this.props)) { - var textTitle = document.createTextNode('0'); - var measureCharTitle = document.createElement('div'); - measureCharTitle.className = 'yAxis title measure'; - measureCharTitle.appendChild(textTitle); - this.dom.frame.appendChild(measureCharTitle); - this.props.titleCharHeight = measureCharTitle.clientHeight; - this.props.titleCharWidth = measureCharTitle.clientWidth; + Slider.prototype.leftToIndex = function (left) { + var width = parseFloat(this.frame.bar.style.width) - + this.frame.slide.clientWidth - 10; + var x = left - 3; - this.dom.frame.removeChild(measureCharTitle); - } + var index = Math.round(x / width * (this.values.length-1)); + if (index < 0) index = 0; + if (index > this.values.length-1) index = this.values.length-1; + + return index; }; - module.exports = DataAxis; + Slider.prototype.indexToLeft = function (index) { + var width = parseFloat(this.frame.bar.style.width) - + this.frame.slide.clientWidth - 10; + var x = index / (this.values.length-1) * width; + var left = x + 3; -/***/ }, -/* 29 */ -/***/ function(module, exports, __webpack_require__) { + return left; + }; - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(2); - var Line = __webpack_require__(49); - var Bar = __webpack_require__(50); - var Points = __webpack_require__(51); - /** - * /** - * @param {object} group | the object of the group from the dataset - * @param {string} groupId | ID of the group - * @param {object} options | the default options - * @param {array} groupsUsingDefaultStyles | this array has one entree. - * It is passed as an array so it is passed by reference. - * It enumerates through the default styles - * @constructor - */ - function GraphGroup (group, groupId, options, groupsUsingDefaultStyles) { - this.id = groupId; - var fields = ['sampling','style','sort','yAxisOrientation','barChart','drawPoints','shaded','catmullRom'] - this.options = util.selectiveBridgeObject(fields,options); - this.usingDefaultStyle = group.className === undefined; - this.groupsUsingDefaultStyles = groupsUsingDefaultStyles; - this.zeroPosition = 0; - this.update(group); - if (this.usingDefaultStyle == true) { - this.groupsUsingDefaultStyles[0] += 1; - } - this.itemsData = []; - this.visible = group.visible === undefined ? true : group.visible; - } + Slider.prototype._onMouseMove = function (event) { + var diff = event.clientX - this.startClientX; + var x = this.startSlideX + diff; - /** - * this loads a reference to all items in this group into this group. - * @param {array} items - */ - GraphGroup.prototype.setItems = function(items) { - if (items != null) { - this.itemsData = items; - if (this.options.sort == true) { - this.itemsData.sort(function (a,b) {return a.x - b.x;}) - } - } - else { - this.itemsData = []; - } + var index = this.leftToIndex(x); + + this.setIndex(index); + + util.preventDefault(); }; - /** - * this is used for plotting barcharts, this way, we only have to calculate it once. - * @param pos - */ - GraphGroup.prototype.setZeroPosition = function(pos) { - this.zeroPosition = pos; + Slider.prototype._onMouseUp = function (event) { + this.frame.style.cursor = 'auto'; + + // remove event listeners + util.removeEventListener(document, 'mousemove', this.onmousemove); + util.removeEventListener(document, 'mouseup', this.onmouseup); + + util.preventDefault(); }; + module.exports = Slider; - /** - * set the options of the graph group over the default options. - * @param options - */ - GraphGroup.prototype.setOptions = function(options) { - if (options !== undefined) { - var fields = ['sampling','style','sort','yAxisOrientation','barChart']; - util.selectiveDeepExtend(fields, this.options, options); - util.mergeOptions(this.options, options,'catmullRom'); - util.mergeOptions(this.options, options,'drawPoints'); - util.mergeOptions(this.options, options,'shaded'); +/***/ }, +/* 17 */ +/***/ function(module, exports, __webpack_require__) { - if (options.catmullRom) { - if (typeof options.catmullRom == 'object') { - if (options.catmullRom.parametrization) { - if (options.catmullRom.parametrization == 'uniform') { - this.options.catmullRom.alpha = 0; - } - else if (options.catmullRom.parametrization == 'chordal') { - this.options.catmullRom.alpha = 1.0; - } - else { - this.options.catmullRom.parametrization = 'centripetal'; - this.options.catmullRom.alpha = 0.5; - } - } - } - } - } + /** + * @prototype StepNumber + * The class StepNumber is an iterator for Numbers. You provide a start and end + * value, and a best step size. StepNumber itself rounds to fixed values and + * a finds the step that best fits the provided step. + * + * If prettyStep is true, the step size is chosen as close as possible to the + * provided step, but being a round value like 1, 2, 5, 10, 20, 50, .... + * + * Example usage: + * var step = new StepNumber(0, 10, 2.5, true); + * step.start(); + * while (!step.end()) { + * alert(step.getCurrent()); + * step.next(); + * } + * + * Version: 1.0 + * + * @param {Number} start The start value + * @param {Number} end The end value + * @param {Number} step Optional. Step size. Must be a positive value. + * @param {boolean} prettyStep Optional. If true, the step size is rounded + * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...) + */ + function StepNumber(start, end, step, prettyStep) { + // set default values + this._start = 0; + this._end = 0; + this._step = 1; + this.prettyStep = true; + this.precision = 5; - if (this.options.style == 'line') { - this.type = new Line(this.id, this.options); - } - else if (this.options.style == 'bar') { - this.type = new Bar(this.id, this.options); - } - else if (this.options.style == 'points') { - this.type = new Points(this.id, this.options); - } + this._current = 0; + this.setRange(start, end, step, prettyStep); }; - /** - * this updates the current group class with the latest group dataset entree, used in _updateGroup in linegraph - * @param group + * Set a new range: start, end and step. + * + * @param {Number} start The start value + * @param {Number} end The end value + * @param {Number} step Optional. Step size. Must be a positive value. + * @param {boolean} prettyStep Optional. If true, the step size is rounded + * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...) */ - GraphGroup.prototype.update = function(group) { - this.group = group; - this.content = group.content || 'graph'; - this.className = group.className || this.className || "graphGroup" + this.groupsUsingDefaultStyles[0] % 10; - this.visible = group.visible === undefined ? true : group.visible; - this.style = group.style; - this.setOptions(group.options); - }; + StepNumber.prototype.setRange = function(start, end, step, prettyStep) { + this._start = start ? start : 0; + this._end = end ? end : 0; + this.setStep(step, prettyStep); + }; /** - * draw the icon for the legend. - * - * @param x - * @param y - * @param JSONcontainer - * @param SVGcontainer - * @param iconWidth - * @param iconHeight + * Set a new step size + * @param {Number} step New step size. Must be a positive value + * @param {boolean} prettyStep Optional. If true, the provided step is rounded + * to a pretty step size (like 1, 2, 5, 10, 20, 50, ...) */ - GraphGroup.prototype.drawIcon = function(x, y, JSONcontainer, SVGcontainer, iconWidth, iconHeight) { - var fillHeight = iconHeight * 0.5; - var path, fillPath; + StepNumber.prototype.setStep = function(step, prettyStep) { + if (step === undefined || step <= 0) + return; - var outline = DOMutil.getSVGElement("rect", JSONcontainer, SVGcontainer); - outline.setAttributeNS(null, "x", x); - outline.setAttributeNS(null, "y", y - fillHeight); - outline.setAttributeNS(null, "width", iconWidth); - outline.setAttributeNS(null, "height", 2*fillHeight); - outline.setAttributeNS(null, "class", "outline"); + if (prettyStep !== undefined) + this.prettyStep = prettyStep; - if (this.options.style == 'line') { - path = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); - path.setAttributeNS(null, "class", this.className); - if(this.style !== undefined) { - path.setAttributeNS(null, "style", this.style); - } + if (this.prettyStep === true) + this._step = StepNumber.calculatePrettyStep(step); + else + this._step = step; + }; - path.setAttributeNS(null, "d", "M" + x + ","+y+" L" + (x + iconWidth) + ","+y+""); - if (this.options.shaded.enabled == true) { - fillPath = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); - if (this.options.shaded.orientation == 'top') { - fillPath.setAttributeNS(null, "d", "M"+x+", " + (y - fillHeight) + - "L"+x+","+y+" L"+ (x + iconWidth) + ","+y+" L"+ (x + iconWidth) + "," + (y - fillHeight)); - } - else { - fillPath.setAttributeNS(null, "d", "M"+x+","+y+" " + - "L"+x+"," + (y + fillHeight) + " " + - "L"+ (x + iconWidth) + "," + (y + fillHeight) + - "L"+ (x + iconWidth) + ","+y); - } - fillPath.setAttributeNS(null, "class", this.className + " iconFill"); - } + /** + * Calculate a nice step size, closest to the desired step size. + * Returns a value in one of the ranges 1*10^n, 2*10^n, or 5*10^n, where n is an + * integer Number. For example 1, 2, 5, 10, 20, 50, etc... + * @param {Number} step Desired step size + * @return {Number} Nice step size + */ + StepNumber.calculatePrettyStep = function (step) { + var log10 = function (x) {return Math.log(x) / Math.LN10;}; - if (this.options.drawPoints.enabled == true) { - DOMutil.drawPoint(x + 0.5 * iconWidth,y, this, JSONcontainer, SVGcontainer); - } - } - else { - var barWidth = Math.round(0.3 * iconWidth); - var bar1Height = Math.round(0.4 * iconHeight); - var bar2Height = Math.round(0.75 * iconHeight); + // try three steps (multiple of 1, 2, or 5 + var step1 = Math.pow(10, Math.round(log10(step))), + step2 = 2 * Math.pow(10, Math.round(log10(step / 2))), + step5 = 5 * Math.pow(10, Math.round(log10(step / 5))); - var offset = Math.round((iconWidth - (2 * barWidth))/3); + // choose the best step (closest to minimum step) + var prettyStep = step1; + if (Math.abs(step2 - step) <= Math.abs(prettyStep - step)) prettyStep = step2; + if (Math.abs(step5 - step) <= Math.abs(prettyStep - step)) prettyStep = step5; - DOMutil.drawBar(x + 0.5*barWidth + offset , y + fillHeight - bar1Height - 1, barWidth, bar1Height, this.className + ' bar', JSONcontainer, SVGcontainer); - DOMutil.drawBar(x + 1.5*barWidth + offset + 2, y + fillHeight - bar2Height - 1, barWidth, bar2Height, this.className + ' bar', JSONcontainer, SVGcontainer); + // for safety + if (prettyStep <= 0) { + prettyStep = 1; } + + return prettyStep; }; + /** + * returns the current value of the step + * @return {Number} current value + */ + StepNumber.prototype.getCurrent = function () { + return parseFloat(this._current.toPrecision(this.precision)); + }; /** - * return the legend entree for this group. - * - * @param iconWidth - * @param iconHeight - * @returns {{icon: HTMLElement, label: (group.content|*|string), orientation: (.options.yAxisOrientation|*)}} + * returns the current step size + * @return {Number} current step size */ - GraphGroup.prototype.getLegend = function(iconWidth, iconHeight) { - var svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); - this.drawIcon(0,0.5*iconHeight,[],svg,iconWidth,iconHeight); - return {icon: svg, label: this.content, orientation:this.options.yAxisOrientation}; - } + StepNumber.prototype.getStep = function () { + return this._step; + }; - GraphGroup.prototype.getYRange = function(groupData) { - return this.type.getYRange(groupData); - } + /** + * Set the current value to the largest value smaller than start, which + * is a multiple of the step size + */ + StepNumber.prototype.start = function() { + this._current = this._start - this._start % this._step; + }; - GraphGroup.prototype.draw = function(dataset, group, framework) { - this.type.draw(dataset, group, framework); - } + /** + * Do a step, add the step size to the current value + */ + StepNumber.prototype.next = function () { + this._current += this._step; + }; + /** + * Returns true whether the end is reached + * @return {boolean} True if the current value has passed the end value. + */ + StepNumber.prototype.end = function () { + return (this._current > this._end); + }; - module.exports = GraphGroup; + module.exports = StepNumber; /***/ }, -/* 30 */ +/* 18 */ /***/ function(module, exports, __webpack_require__) { + var Emitter = __webpack_require__(11); + var Hammer = __webpack_require__(19); var util = __webpack_require__(1); - var stack = __webpack_require__(18); - var RangeItem = __webpack_require__(24); + var DataSet = __webpack_require__(7); + var DataView = __webpack_require__(9); + var Range = __webpack_require__(21); + var Core = __webpack_require__(25); + var TimeAxis = __webpack_require__(35); + var CurrentTime = __webpack_require__(40); + var CustomTime = __webpack_require__(38); + var ItemSet = __webpack_require__(26); /** - * @constructor Group - * @param {Number | String} groupId - * @param {Object} data - * @param {ItemSet} itemSet + * Create a timeline visualization + * @param {HTMLElement} container + * @param {vis.DataSet | vis.DataView | Array | google.visualization.DataTable} [items] + * @param {vis.DataSet | vis.DataView | Array | google.visualization.DataTable} [groups] + * @param {Object} [options] See Timeline.setOptions for the available options. + * @constructor + * @extends Core */ - function Group (groupId, data, itemSet) { - this.groupId = groupId; - this.subgroups = {}; - this.subgroupIndex = 0; - this.subgroupOrderer = data && data.subgroupOrder; - this.itemSet = itemSet; + function Timeline (container, items, groups, options) { + if (!(this instanceof Timeline)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } - this.dom = {}; - this.props = { - label: { - width: 0, - height: 0 - } - }; - this.className = null; + // if the third element is options, the forth is groups (optionally); + if (!(Array.isArray(groups) || groups instanceof DataSet || groups instanceof DataView) && groups instanceof Object) { + var forthArgument = options; + options = groups; + groups = forthArgument; + } - this.items = {}; // items filtered by groupId of this group - this.visibleItems = []; // items currently visible in window - this.orderedItems = { - byStart: [], - byEnd: [] - }; - this.checkRangedItems = false; // needed to refresh the ranged items if the window is programatically changed with NO overlap. var me = this; - this.itemSet.body.emitter.on("checkRangedItems", function () { - me.checkRangedItems = true; - }) + this.defaultOptions = { + start: null, + end: null, - this._create(); + autoResize: true, - this.setData(data); - } + orientation: 'bottom', // 'bottom', 'top', or 'both' + width: null, + height: null, + maxHeight: null, + minHeight: null + }; + this.options = util.deepExtend({}, this.defaultOptions); - /** - * Create DOM elements for the group - * @private - */ - Group.prototype._create = function() { - var label = document.createElement('div'); - label.className = 'vlabel'; - this.dom.label = label; + // Create the DOM, props, and emitter + this._create(container); - var inner = document.createElement('div'); - inner.className = 'inner'; - label.appendChild(inner); - this.dom.inner = inner; + // all components listed here will be repainted automatically + this.components = []; - var foreground = document.createElement('div'); - foreground.className = 'group'; - foreground['timeline-group'] = this; - this.dom.foreground = foreground; + this.body = { + dom: this.dom, + domProps: this.props, + emitter: { + on: this.on.bind(this), + off: this.off.bind(this), + emit: this.emit.bind(this) + }, + hiddenDates: [], + util: { + getScale: function () { + return me.timeAxis.step.scale; + }, + getStep: function () { + return me.timeAxis.step.step; + }, - this.dom.background = document.createElement('div'); - this.dom.background.className = 'group'; + toScreen: me._toScreen.bind(me), + toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width + toTime: me._toTime.bind(me), + toGlobalTime : me._toGlobalTime.bind(me) + } + }; - this.dom.axis = document.createElement('div'); - this.dom.axis.className = 'group'; + // range + this.range = new Range(this.body); + this.components.push(this.range); + this.body.range = this.range; - // create a hidden marker to detect when the Timelines container is attached - // to the DOM, or the style of a parent of the Timeline is changed from - // display:none is changed to visible. - this.dom.marker = document.createElement('div'); - this.dom.marker.style.visibility = 'hidden'; // TODO: ask jos why this is not none? - this.dom.marker.innerHTML = '?'; - this.dom.background.appendChild(this.dom.marker); - }; + // time axis + this.timeAxis = new TimeAxis(this.body); + this.timeAxis2 = null; // used in case of orientation option 'both' + this.components.push(this.timeAxis); - /** - * Set the group data for this group - * @param {Object} data Group data, can contain properties content and className - */ - Group.prototype.setData = function(data) { - // update contents - var content = data && data.content; - if (content instanceof Element) { - this.dom.inner.appendChild(content); - } - else if (content !== undefined && content !== null) { - this.dom.inner.innerHTML = content; - } - else { - this.dom.inner.innerHTML = this.groupId || ''; // groupId can be null - } + // current time bar + this.currentTime = new CurrentTime(this.body); + this.components.push(this.currentTime); - // update title - this.dom.label.title = data && data.title || ''; + // custom time bar + // Note: time bar will be attached in this.setOptions when selected + this.customTime = new CustomTime(this.body); + this.components.push(this.customTime); - if (!this.dom.inner.firstChild) { - util.addClassName(this.dom.inner, 'hidden'); - } - else { - util.removeClassName(this.dom.inner, 'hidden'); + // item set + this.itemSet = new ItemSet(this.body); + this.components.push(this.itemSet); + + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet + + // apply options + if (options) { + this.setOptions(options); } - // update className - var className = data && data.className || null; - if (className != this.className) { - if (this.className) { - util.removeClassName(this.dom.label, this.className); - util.removeClassName(this.dom.foreground, this.className); - util.removeClassName(this.dom.background, this.className); - util.removeClassName(this.dom.axis, this.className); - } - util.addClassName(this.dom.label, className); - util.addClassName(this.dom.foreground, className); - util.addClassName(this.dom.background, className); - util.addClassName(this.dom.axis, className); - this.className = className; + // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! + if (groups) { + this.setGroups(groups); } - // update style - if (this.style) { - util.removeCssText(this.dom.label, this.style); - this.style = null; + // create itemset + if (items) { + this.setItems(items); } - if (data && data.style) { - util.addCssText(this.dom.label, data.style); - this.style = data.style; + else { + this._redraw(); } - }; + } + + // Extend the functionality from Core + Timeline.prototype = new Core(); /** - * Get the width of the group label - * @return {number} width + * Force a redraw. The size of all items will be recalculated. + * Can be useful to manually redraw when option autoResize=false and the window + * has been resized, or when the items CSS has been changed. */ - Group.prototype.getLabelWidth = function() { - return this.props.label.width; + Timeline.prototype.redraw = function() { + this.itemSet && this.itemSet.markDirty({refreshItems: true}); + this._redraw(); }; - /** - * Repaint this group - * @param {{start: number, end: number}} range - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * @param {boolean} [restack=false] Force restacking of all items - * @return {boolean} Returns true if the group is resized + * Set items + * @param {vis.DataSet | Array | google.visualization.DataTable | null} items */ - Group.prototype.redraw = function(range, margin, restack) { - var resized = false; - - this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - - // force recalculation of the height of the items when the marker height changed - // (due to the Timeline being attached to the DOM or changed from display:none to visible) - var markerHeight = this.dom.marker.clientHeight; - if (markerHeight != this.lastMarkerHeight) { - this.lastMarkerHeight = markerHeight; - - util.forEach(this.items, function (item) { - item.dirty = true; - if (item.displayed) item.redraw(); - }); + Timeline.prototype.setItems = function(items) { + var initialLoad = (this.itemsData == null); - restack = true; + // convert to type DataSet when needed + var newDataSet; + if (!items) { + newDataSet = null; } - - // reposition visible items vertically - if (this.itemSet.options.stack) { // TODO: ugly way to access options... - stack.stack(this.visibleItems, margin, restack); + else if (items instanceof DataSet || items instanceof DataView) { + newDataSet = items; } - else { // no stacking - stack.nostack(this.visibleItems, margin, this.subgroups); + else { + // turn an array into a dataset + newDataSet = new DataSet(items, { + type: { + start: 'Date', + end: 'Date' + } + }); } - // recalculate the height of the group - var height = this._calculateHeight(margin); - - // calculate actual size and position - var foreground = this.dom.foreground; - this.top = foreground.offsetTop; - this.left = foreground.offsetLeft; - this.width = foreground.offsetWidth; - resized = util.updateProperty(this, 'height', height) || resized; - - // recalculate size of label - resized = util.updateProperty(this.props.label, 'width', this.dom.inner.clientWidth) || resized; - resized = util.updateProperty(this.props.label, 'height', this.dom.inner.clientHeight) || resized; - - // apply new height - this.dom.background.style.height = height + 'px'; - this.dom.foreground.style.height = height + 'px'; - this.dom.label.style.height = height + 'px'; + // set items + this.itemsData = newDataSet; + this.itemSet && this.itemSet.setItems(newDataSet); - // update vertical position of items after they are re-stacked and the height of the group is calculated - for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { - var item = this.visibleItems[i]; - item.repositionY(margin); - } + if (initialLoad) { + if (this.options.start != undefined || this.options.end != undefined) { + if (this.options.start == undefined || this.options.end == undefined) { + var dataRange = this._getDataRange(); + } - return resized; - }; + var start = this.options.start != undefined ? this.options.start : dataRange.start; + var end = this.options.end != undefined ? this.options.end : dataRange.end; - /** - * recalculate the height of the group - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * @returns {number} Returns the height - * @private - */ - Group.prototype._calculateHeight = function (margin) { - // recalculate the height of the group - var height; - var visibleItems = this.visibleItems; - //var visibleSubgroups = []; - //this.visibleSubgroups = 0; - this.resetSubgroups(); - var me = this; - if (visibleItems.length) { - var min = visibleItems[0].top; - var max = visibleItems[0].top + visibleItems[0].height; - util.forEach(visibleItems, function (item) { - min = Math.min(min, item.top); - max = Math.max(max, (item.top + item.height)); - if (item.data.subgroup !== undefined) { - me.subgroups[item.data.subgroup].height = Math.max(me.subgroups[item.data.subgroup].height,item.height); - me.subgroups[item.data.subgroup].visible = true; - //if (visibleSubgroups.indexOf(item.data.subgroup) == -1){ - // visibleSubgroups.push(item.data.subgroup); - // me.visibleSubgroups += 1; - //} - } - }); - if (min > margin.axis) { - // there is an empty gap between the lowest item and the axis - var offset = min - margin.axis; - max -= offset; - util.forEach(visibleItems, function (item) { - item.top -= offset; - }); + this.setWindow(start, end, {animate: false}); + } + else { + this.fit({animate: false}); } - height = max + margin.item.vertical / 2; - } - else { - height = margin.axis + margin.item.vertical; } - height = Math.max(height, this.props.label.height); - - return height; }; /** - * Show this group: attach to the DOM + * Set groups + * @param {vis.DataSet | Array | google.visualization.DataTable} groups */ - Group.prototype.show = function() { - if (!this.dom.label.parentNode) { - this.itemSet.dom.labelSet.appendChild(this.dom.label); + Timeline.prototype.setGroups = function(groups) { + // convert to type DataSet when needed + var newDataSet; + if (!groups) { + newDataSet = null; } - - if (!this.dom.foreground.parentNode) { - this.itemSet.dom.foreground.appendChild(this.dom.foreground); + else if (groups instanceof DataSet || groups instanceof DataView) { + newDataSet = groups; } - - if (!this.dom.background.parentNode) { - this.itemSet.dom.background.appendChild(this.dom.background); + else { + // turn an array into a dataset + newDataSet = new DataSet(groups); } - if (!this.dom.axis.parentNode) { - this.itemSet.dom.axis.appendChild(this.dom.axis); - } + this.groupsData = newDataSet; + this.itemSet.setGroups(newDataSet); }; /** - * Hide this group: remove from the DOM + * Set selected items by their id. Replaces the current selection + * Unknown id's are silently ignored. + * @param {string[] | string} [ids] An array with zero or more id's of the items to be + * selected. If ids is an empty array, all items will be + * unselected. + * @param {Object} [options] Available options: + * `focus: boolean` + * If true, focus will be set to the selected item(s) + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. + * Only applicable when option focus is true. */ - Group.prototype.hide = function() { - var label = this.dom.label; - if (label.parentNode) { - label.parentNode.removeChild(label); - } - - var foreground = this.dom.foreground; - if (foreground.parentNode) { - foreground.parentNode.removeChild(foreground); - } + Timeline.prototype.setSelection = function(ids, options) { + this.itemSet && this.itemSet.setSelection(ids); - var background = this.dom.background; - if (background.parentNode) { - background.parentNode.removeChild(background); + if (options && options.focus) { + this.focus(ids, options); } + }; - var axis = this.dom.axis; - if (axis.parentNode) { - axis.parentNode.removeChild(axis); - } + /** + * Get the selected items by their id + * @return {Array} ids The ids of the selected items + */ + Timeline.prototype.getSelection = function() { + return this.itemSet && this.itemSet.getSelection() || []; }; /** - * Add an item to the group - * @param {Item} item + * Adjust the visible window such that the selected item (or multiple items) + * are centered on screen. + * @param {String | String[]} id An item id or array with item ids + * @param {Object} [options] Available options: + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. + * Only applicable when option focus is true */ - Group.prototype.add = function(item) { - this.items[item.id] = item; - item.setParent(this); + Timeline.prototype.focus = function(id, options) { + if (!this.itemsData || id == undefined) return; - // add to - if (item.data.subgroup !== undefined) { - if (this.subgroups[item.data.subgroup] === undefined) { - this.subgroups[item.data.subgroup] = {height:0, visible: false, index:this.subgroupIndex, items: []}; - this.subgroupIndex++; + var ids = Array.isArray(id) ? id : [id]; + + // get the specified item(s) + var itemsData = this.itemsData.getDataSet().get(ids, { + type: { + start: 'Date', + end: 'Date' } - this.subgroups[item.data.subgroup].items.push(item); - } - this.orderSubgroups(); + }); - if (this.visibleItems.indexOf(item) == -1) { - var range = this.itemSet.body.range; // TODO: not nice accessing the range like this - this._checkIfVisible(item, this.visibleItems, range); + // calculate minimum start and maximum end of specified items + var start = null; + var end = null; + itemsData.forEach(function (itemData) { + var s = itemData.start.valueOf(); + var e = 'end' in itemData ? itemData.end.valueOf() : itemData.start.valueOf(); + + if (start === null || s < start) { + start = s; + } + + if (end === null || e > end) { + end = e; + } + }); + + if (start !== null && end !== null) { + // calculate the new middle and interval for the window + var middle = (start + end) / 2; + var interval = Math.max((this.range.end - this.range.start), (end - start) * 1.1); + + var animate = (options && options.animate !== undefined) ? options.animate : true; + this.range.setRange(middle - interval / 2, middle + interval / 2, animate); } }; - Group.prototype.orderSubgroups = function() { - if (this.subgroupOrderer !== undefined) { - var sortArray = []; - if (typeof this.subgroupOrderer == 'string') { - for (var subgroup in this.subgroups) { - sortArray.push({subgroup: subgroup, sortField: this.subgroups[subgroup].items[0].data[this.subgroupOrderer]}) - } - sortArray.sort(function (a, b) { - return a.sortField - b.sortField; - }) + /** + * Get the data range of the item set. + * @returns {{min: Date, max: Date}} range A range with a start and end Date. + * When no minimum is found, min==null + * When no maximum is found, max==null + */ + Timeline.prototype.getItemRange = function() { + // calculate min from start filed + var dataset = this.itemsData.getDataSet(), + min = null, + max = null; + + if (dataset) { + // calculate the minimum value of the field 'start' + var minItem = dataset.min('start'); + min = minItem ? util.convert(minItem.start, 'Date').valueOf() : null; + // Note: we convert first to Date and then to number because else + // a conversion from ISODate to Number will fail + + // calculate maximum value of fields 'start' and 'end' + var maxStartItem = dataset.max('start'); + if (maxStartItem) { + max = util.convert(maxStartItem.start, 'Date').valueOf(); } - else if (typeof this.subgroupOrderer == 'function') { - for (var subgroup in this.subgroups) { - sortArray.push(this.subgroups[subgroup].items[0].data); + var maxEndItem = dataset.max('end'); + if (maxEndItem) { + if (max == null) { + max = util.convert(maxEndItem.end, 'Date').valueOf(); } - sortArray.sort(this.subgroupOrderer); - } - - if (sortArray.length > 0) { - for (var i = 0; i < sortArray.length; i++) { - this.subgroups[sortArray[i].subgroup].index = i; + else { + max = Math.max(max, util.convert(maxEndItem.end, 'Date').valueOf()); } } } + + return { + min: (min != null) ? new Date(min) : null, + max: (max != null) ? new Date(max) : null + }; }; - Group.prototype.resetSubgroups = function() { - for (var subgroup in this.subgroups) { - if (this.subgroups.hasOwnProperty(subgroup)) { - this.subgroups[subgroup].visible = false; - } + + module.exports = Timeline; + + +/***/ }, +/* 19 */ +/***/ function(module, exports, __webpack_require__) { + + // Only load hammer.js when in a browser environment + // (loading hammer.js in a node.js environment gives errors) + if (typeof window !== 'undefined') { + module.exports = window['Hammer'] || __webpack_require__(20); + } + else { + module.exports = function () { + throw Error('hammer.js is only available in a browser, not in node.js.'); } - }; + } + + +/***/ }, +/* 20 */ +/***/ function(module, exports, __webpack_require__) { + + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 + * http://eightmedia.github.io/hammer.js + * + * Copyright (c) 2014 Jorik Tangelder ; + * Licensed under the MIT license */ + + (function(window, undefined) { + 'use strict'; /** - * Remove an item from the group - * @param {Item} item + * @main + * @module hammer + * + * @class Hammer + * @static */ - Group.prototype.remove = function(item) { - delete this.items[item.id]; - item.setParent(null); - - // remove from visible items - var index = this.visibleItems.indexOf(item); - if (index != -1) this.visibleItems.splice(index, 1); - // TODO: also remove from ordered items? + /** + * Hammer, use this to create instances + * ```` + * var hammertime = new Hammer(myElement); + * ```` + * + * @method Hammer + * @param {HTMLElement} element + * @param {Object} [options={}] + * @return {Hammer.Instance} + */ + var Hammer = function Hammer(element, options) { + return new Hammer.Instance(element, options || {}); }; + /** + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} + */ + Hammer.VERSION = '1.1.3'; /** - * Remove an item from the corresponding DataSet - * @param {Item} item + * default settings. + * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled + * by setting it's name (like `swipe`) to false. + * You can set the defaults for all instances by changing this object before creating an instance. + * @example + * ```` + * Hammer.defaults.drag = false; + * Hammer.defaults.behavior.touchAction = 'pan-y'; + * delete Hammer.defaults.behavior.userSelect; + * ```` + * @property defaults + * @type {Object} */ - Group.prototype.removeFromDataSet = function(item) { - this.itemSet.removeItem(item.id); + Hammer.defaults = { + /** + * this setting object adds styles and attributes to the element to prevent the browser from doing + * its native behavior. The css properties are auto prefixed for the browsers when needed. + * @property defaults.behavior + * @type {Object} + */ + behavior: { + /** + * Disables text selection to improve the dragging gesture. When the value is `none` it also sets + * `onselectstart=false` for IE on the element. Mainly for desktop browsers. + * @property defaults.behavior.userSelect + * @type {String} + * @default 'none' + */ + userSelect: 'none', + + /** + * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). + * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. + * @property defaults.behavior.touchAction + * @type {String} + * @default: 'pan-y' + */ + touchAction: 'pan-y', + + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @property defaults.behavior.touchCallout + * @type {String} + * @default 'none' + */ + touchCallout: 'none', + + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', + + /** + * Specifies that an entire element should be draggable instead of its contents. + * Mainly for desktop browsers. + * @property defaults.behavior.userDrag + * @type {String} + * @default 'none' + */ + userDrag: 'none', + + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. + * + * If you don't specify an alpha value, Safari on iPhone applies a default alpha value + * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). + * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. + * @property defaults.behavior.tapHighlightColor + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' + } }; + /** + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document + */ + Hammer.DOCUMENT = document; /** - * Reorder the items + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} */ - Group.prototype.order = function() { - var array = util.toArray(this.items); - var startArray = []; - var endArray = []; + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; - for (var i = 0; i < array.length; i++) { - if (array[i].data.end !== undefined) { - endArray.push(array[i]); - } - startArray.push(array[i]); - } - this.orderedItems = { - byStart: startArray, - byEnd: endArray - }; + /** + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} + */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); - stack.orderByStart(this.orderedItems.byStart); - stack.orderByEnd(this.orderedItems.byEnd); - }; + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + + /** + * detect if we want to support mouseevents at all + * @property NO_MOUSEEVENTS + * @type {Boolean} + */ + Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; /** - * Update the visible items - * @param {{byStart: Item[], byEnd: Item[]}} orderedItems All items ordered by start date and by end date - * @param {Item[]} visibleItems The previously visible items. - * @param {{start: number, end: number}} range Visible range - * @return {Item[]} visibleItems The new visible items. + * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` + * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) + * @property EVENT_TYPES * @private + * @writeOnce + * @type {Object} */ - Group.prototype._updateVisibleItems = function(orderedItems, oldVisibleItems, range) { - var visibleItems = []; - var visibleItemsLookup = {}; // we keep this to quickly look up if an item already exists in the list without using indexOf on visibleItems - var interval = (range.end - range.start) / 4; - var lowerBound = range.start - interval; - var upperBound = range.end + interval; - var item, i; + var EVENT_TYPES = {}; - // this function is used to do the binary search. - var searchFunction = function (value) { - if (value < lowerBound) {return -1;} - else if (value <= upperBound) {return 0;} - else {return 1;} - } + /** + * direction strings, for safe comparisons + * @property DIRECTION_DOWN|LEFT|UP|RIGHT + * @final + * @type {String} + * @default 'down' 'left' 'up' 'right' + */ + var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; + var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; + var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; + var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; - // first check if the items that were in view previously are still in view. - // IMPORTANT: this handles the case for the items with startdate before the window and enddate after the window! - // also cleans up invisible items. - if (oldVisibleItems.length > 0) { - for (i = 0; i < oldVisibleItems.length; i++) { - this._checkIfVisibleWithReference(oldVisibleItems[i], visibleItems, visibleItemsLookup, range); - } - } + /** + * pointertype strings, for safe comparisons + * @property POINTER_MOUSE|TOUCH|PEN + * @final + * @type {String} + * @default 'mouse' 'touch' 'pen' + */ + var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; + var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; + var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; - // we do a binary search for the items that have only start values. - var initialPosByStart = util.binarySearchCustom(orderedItems.byStart, searchFunction, 'data','start'); + /** + * eventtypes + * @property EVENT_START|MOVE|END|RELEASE|TOUCH + * @final + * @type {String} + * @default 'start' 'change' 'move' 'end' 'release' 'touch' + */ + var EVENT_START = Hammer.EVENT_START = 'start'; + var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; + var EVENT_END = Hammer.EVENT_END = 'end'; + var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; + var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; - // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the start values. - this._traceVisible(initialPosByStart, orderedItems.byStart, visibleItems, visibleItemsLookup, function (item) { - return (item.data.start < lowerBound || item.data.start > upperBound); - }); + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; - // if the window has changed programmatically without overlapping the old window, the ranged items with start < lowerBound and end > upperbound are not shown. - // We therefore have to brute force check all items in the byEnd list - if (this.checkRangedItems == true) { - this.checkRangedItems = false; - for (i = 0; i < orderedItems.byEnd.length; i++) { - this._checkIfVisibleWithReference(orderedItems.byEnd[i], visibleItems, visibleItemsLookup, range); + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; + + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; + + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; } - } - else { - // we do a binary search for the items that have defined end times. - var initialPosByEnd = util.binarySearchCustom(orderedItems.byEnd, searchFunction, 'data','end'); - // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the end values. - this._traceVisible(initialPosByEnd, orderedItems.byEnd, visibleItems, visibleItemsLookup, function (item) { - return (item.data.end < lowerBound || item.data.end > upperBound); + // find what eventtypes we add listeners to + Event.determineEventTypes(); + + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); }); - } + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); - // finally, we reposition all the visible items. - for (i = 0; i < visibleItems.length; i++) { - item = visibleItems[i]; - if (!item.displayed) item.show(); - // reposition item horizontally - item.repositionX(); - } + // Hammer is ready...! + Hammer.READY = true; + } - // debug - //console.log("new line") - //if (this.groupId == null) { - // for (i = 0; i < orderedItems.byStart.length; i++) { - // item = orderedItems.byStart[i].data; - // console.log('start',i,initialPosByStart, item.start.valueOf(), item.content, item.start >= lowerBound && item.start <= upperBound,i == initialPosByStart ? "<------------------- HEREEEE" : "") - // } - // for (i = 0; i < orderedItems.byEnd.length; i++) { - // item = orderedItems.byEnd[i].data; - // console.log('rangeEnd',i,initialPosByEnd, item.end.valueOf(), item.content, item.end >= range.start && item.end <= range.end,i == initialPosByEnd ? "<------------------- HEREEEE" : "") - // } - //} + /** + * @module hammer + * + * @class Utils + * @static + */ + var Utils = Hammer.utils = { + /** + * extend method, could also be used for cloning when `dest` is an empty object. + * changes the dest object + * @method extend + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] do a merge + * @return {Object} dest + */ + extend: function extend(dest, src, merge) { + for(var key in src) { + if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { + continue; + } + dest[key] = src[key]; + } + return dest; + }, - return visibleItems; - }; + /** + * simple addEventListener wrapper + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + on: function on(element, type, handler) { + element.addEventListener(type, handler, false); + }, - Group.prototype._traceVisible = function (initialPos, items, visibleItems, visibleItemsLookup, breakCondition) { - var item; - var i; + /** + * simple removeEventListener wrapper + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); + }, - if (initialPos != -1) { - for (i = initialPos; i >= 0; i--) { - item = items[i]; - if (breakCondition(item)) { - break; - } - else { - if (visibleItemsLookup[item.id] === undefined) { - visibleItemsLookup[item.id] = true; - visibleItems.push(item); - } - } - } + /** + * forEach over arrays and objects + * @method each + * @param {Object|Array} obj + * @param {Function} iterator + * @param {any} iterator.item + * @param {Number} iterator.index + * @param {Object|Array} iterator.obj the source object + * @param {Object} context value to use as `this` in the iterator + */ + each: function each(obj, iterator, context) { + var i, len; - for (i = initialPos + 1; i < items.length; i++) { - item = items[i]; - if (breakCondition(item)) { - break; - } - else { - if (visibleItemsLookup[item.id] === undefined) { - visibleItemsLookup[item.id] = true; - visibleItems.push(item); + // native forEach on arrays + if('forEach' in obj) { + obj.forEach(iterator, context); + // arrays + } else if(obj.length !== undefined) { + for(i = 0, len = obj.length; i < len; i++) { + if(iterator.call(context, obj[i], i, obj) === false) { + return; + } + } + // objects + } else { + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; + } + } } - } - } - } - } + }, + /** + * find if a string contains the string using indexOf + * @method inStr + * @param {String} src + * @param {String} find + * @return {Boolean} found + */ + inStr: function inStr(src, find) { + return src.indexOf(find) > -1; + }, - /** - * this function is very similar to the _checkIfInvisible() but it does not - * return booleans, hides the item if it should not be seen and always adds to - * the visibleItems. - * this one is for brute forcing and hiding. - * - * @param {Item} item - * @param {Array} visibleItems - * @param {{start:number, end:number}} range - * @private - */ - Group.prototype._checkIfVisible = function(item, visibleItems, range) { - if (item.isVisible(range)) { - if (!item.displayed) item.show(); - // reposition item horizontally - item.repositionX(); - visibleItems.push(item); - } - else { - if (item.displayed) item.hide(); - } - }; + /** + * find if a array contains the object using indexOf or a simple polyfill + * @method inArray + * @param {String} src + * @param {String} find + * @return {Boolean|Number} false when not found, or the index + */ + inArray: function inArray(src, find) { + if(src.indexOf) { + var index = src.indexOf(find); + return (index === -1) ? false : index; + } else { + for(var i = 0, len = src.length; i < len; i++) { + if(src[i] === find) { + return i; + } + } + return false; + } + }, + + /** + * convert an array-like object (`arguments`, `touchlist`) to an array + * @method toArray + * @param {Object} obj + * @return {Array} + */ + toArray: function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + }, + /** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ + hasParent: function hasParent(node, parent) { + while(node) { + if(node == parent) { + return true; + } + node = node.parentNode; + } + return false; + }, - /** - * this function is very similar to the _checkIfInvisible() but it does not - * return booleans, hides the item if it should not be seen and always adds to - * the visibleItems. - * this one is for brute forcing and hiding. - * - * @param {Item} item - * @param {Array} visibleItems - * @param {{start:number, end:number}} range - * @private - */ - Group.prototype._checkIfVisibleWithReference = function(item, visibleItems, visibleItemsLookup, range) { - if (item.isVisible(range)) { - if (visibleItemsLookup[item.id] === undefined) { - visibleItemsLookup[item.id] = true; - visibleItems.push(item); - } - } - else { - if (item.displayed) item.hide(); - } - }; + /** + * get the center of all the touches + * @method getCenter + * @param {Array} touches + * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties + */ + getCenter: function getCenter(touches) { + var pageX = [], + pageY = [], + clientX = [], + clientY = [], + min = Math.min, + max = Math.max; + // no need to loop when only one touch + if(touches.length === 1) { + return { + pageX: touches[0].pageX, + pageY: touches[0].pageY, + clientX: touches[0].clientX, + clientY: touches[0].clientY + }; + } + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); - module.exports = Group; + return { + pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, + pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, + clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, + clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 + }; + }, + /** + * calculate the velocity between two points. unit is in px per ms. + * @method getVelocity + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + * @return {Object} velocity `x` and `y` + */ + getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { + return { + x: Math.abs(deltaX / deltaTime) || 0, + y: Math.abs(deltaY / deltaTime) || 0 + }; + }, -/***/ }, -/* 31 */ -/***/ function(module, exports, __webpack_require__) { + /** + * calculate the angle between two coordinates + * @method getAngle + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {Number} angle + */ + getAngle: function getAngle(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - var util = __webpack_require__(1); - var Group = __webpack_require__(30); + return Math.atan2(y, x) * 180 / Math.PI; + }, - /** - * @constructor BackgroundGroup - * @param {Number | String} groupId - * @param {Object} data - * @param {ItemSet} itemSet - */ - function BackgroundGroup (groupId, data, itemSet) { - Group.call(this, groupId, data, itemSet); + /** + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` + */ + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); - this.width = 0; - this.height = 0; - this.top = 0; - this.left = 0; - } + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, - BackgroundGroup.prototype = Object.create(Group.prototype); + /** + * calculate the distance between two touches + * @method getDistance + * @param {Touch}touch1 + * @param {Touch} touch2 + * @return {Number} distance + */ + getDistance: function getDistance(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - /** - * Repaint this group - * @param {{start: number, end: number}} range - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * @param {boolean} [restack=false] Force restacking of all items - * @return {boolean} Returns true if the group is resized - */ - BackgroundGroup.prototype.redraw = function(range, margin, restack) { - var resized = false; + return Math.sqrt((x * x) + (y * y)); + }, - this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); + /** + * calculate the scale factor between two touchLists + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @method getScale + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} scale + */ + getScale: function getScale(start, end) { + // need two fingers... + if(start.length >= 2 && end.length >= 2) { + return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); + } + return 1; + }, - // calculate actual size - this.width = this.dom.background.offsetWidth; + /** + * calculate the rotation degrees between two touchLists + * @method getRotation + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} rotation + */ + getRotation: function getRotation(start, end) { + // need two fingers + if(start.length >= 2 && end.length >= 2) { + return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); + } + return 0; + }, - // apply new height (just always zero for BackgroundGroup - this.dom.background.style.height = '0'; + /** + * find out if the direction is vertical * + * @method isVertical + * @param {String} direction matches `DIRECTION_UP|DOWN` + * @return {Boolean} is_vertical + */ + isVertical: function isVertical(direction) { + return direction == DIRECTION_UP || direction == DIRECTION_DOWN; + }, - // update vertical position of items after they are re-stacked and the height of the group is calculated - for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { - var item = this.visibleItems[i]; - item.repositionY(margin); - } + /** + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} + */ + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); - return resized; - }; + for(var i = 0; i < prefixes.length; i++) { + var p = prop; + // prefixes + if(prefixes[i]) { + p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + } - /** - * Show this group: attach to the DOM - */ - BackgroundGroup.prototype.show = function() { - if (!this.dom.background.parentNode) { - this.itemSet.dom.background.appendChild(this.dom.background); - } - }; + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; + } + } + }, - module.exports = BackgroundGroup; + /** + * toggle browser default behavior by setting css properties. + * `userSelect='none'` also sets `element.onselectstart` to false + * `userDrag='none'` also sets `element.ondragstart` to false + * + * @method toggleBehavior + * @param {HtmlElement} element + * @param {Object} props + * @param {Boolean} [toggle=true] + */ + toggleBehavior: function toggleBehavior(element, props, toggle) { + if(!props || !element || !element.style) { + return; + } + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); -/***/ }, -/* 32 */ -/***/ function(module, exports, __webpack_require__) { + var falseFn = toggle && function() { + return false; + }; - var Hammer = __webpack_require__(45); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(3); - var DataView = __webpack_require__(4); - var TimeStep = __webpack_require__(19); - var Component = __webpack_require__(25); - var Group = __webpack_require__(30); - var BackgroundGroup = __webpack_require__(31); - var BoxItem = __webpack_require__(22); - var PointItem = __webpack_require__(23); - var RangeItem = __webpack_require__(24); - var BackgroundItem = __webpack_require__(21); + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; + } + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; + } + }, + /** + * convert a string with underscores to camelCase + * so prevent_default becomes preventDefault + * @param {String} str + * @return {String} camelCaseStr + */ + toCamelCase: function toCamelCase(str) { + return str.replace(/[_-]([a-z])/g, function(s) { + return s[1].toUpperCase(); + }); + } + }; - var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items - var BACKGROUND = '__background__'; // reserved group id for background items without group /** - * An ItemSet holds a set of items and ranges which can be displayed in a - * range. The width is determined by the parent of the ItemSet, and the height - * is determined by the size of the items. - * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body - * @param {Object} [options] See ItemSet.setOptions for the available options. - * @constructor ItemSet - * @extends Component + * @module hammer */ - function ItemSet(body, options) { - this.body = body; - - this.defaultOptions = { - type: null, // 'box', 'point', 'range', 'background' - orientation: 'bottom', // 'top' or 'bottom' - align: 'auto', // alignment of box items - stack: true, - groupOrder: null, + /** + * @class Event + * @static + */ + var Event = Hammer.event = { + /** + * when touch events have been fired, this is true + * this is used to stop mouse events + * @property prevent_mouseevents + * @private + * @type {Boolean} + */ + preventMouseEvents: false, - selectable: true, - editable: { - updateTime: false, - updateGroup: false, - add: false, - remove: false - }, + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, - snap: TimeStep.snap, + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, - onAdd: function (item, callback) { - callback(item); - }, - onUpdate: function (item, callback) { - callback(item); - }, - onMove: function (item, callback) { - callback(item); - }, - onRemove: function (item, callback) { - callback(item); - }, - onMoving: function (item, callback) { - callback(item); + /** + * simple event binder with a hook and support for multiple types + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + on: function on(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.on(element, type, handler); + hook && hook(type); + }); }, - margin: { - item: { - horizontal: 10, - vertical: 10 - }, - axis: 20 + /** + * simple event unbinder with a hook and support for multiple types + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + off: function off(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.off(element, type, handler); + hook && hook(type); + }); }, - padding: 5 - }; - // options is shared by this ItemSet and all its items - this.options = util.extend({}, this.defaultOptions); + /** + * the core touch event handler. + * this finds out if we should to detect gestures + * @method onTouch + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Function} handler + * @return onTouchHandler {Function} the core event handler + */ + onTouch: function onTouch(element, eventType, handler) { + var self = this; - // options for getting items from the DataSet with the correct type - this.itemOptions = { - type: {start: 'Date', end: 'Date'} - }; + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - this.conversion = { - toScreen: body.util.toScreen, - toTime: body.util.toTime - }; - this.dom = {}; - this.props = {}; - this.hammer = null; + // if we are in a mouseevent, but there has been a touchevent triggered in this session + // we want to do nothing. simply break out of the event. + if(isMouse && self.preventMouseEvents) { + return; - var me = this; - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet + // mousebutton must be down + } else if(isMouse && eventType == EVENT_START && ev.button === 0) { + self.preventMouseEvents = false; + self.shouldDetect = true; + } else if(isPointer && eventType == EVENT_START) { + self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); + // just a valid start event, but no mouse + } else if(!isMouse && eventType == EVENT_START) { + self.preventMouseEvents = true; + self.shouldDetect = true; + } - // listeners for the DataSet of the items - this.itemListeners = { - 'add': function (event, params, senderId) { - me._onAdd(params.items); - }, - 'update': function (event, params, senderId) { - me._onUpdate(params.items); - }, - 'remove': function (event, params, senderId) { - me._onRemove(params.items); - } - }; + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } - // listeners for the DataSet of the groups - this.groupListeners = { - 'add': function (event, params, senderId) { - me._onAddGroups(params.items); - }, - 'update': function (event, params, senderId) { - me._onUpdateGroups(params.items); - }, - 'remove': function (event, params, senderId) { - me._onRemoveGroups(params.items); - } - }; + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); + } - this.items = {}; // object with an Item for every data item - this.groups = {}; // Group object for every group - this.groupIds = []; + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + if(triggerType == EVENT_END) { + self.preventMouseEvents = false; + self.shouldDetect = false; + PointerEvent.reset(); + // update the pointerevent object after the detection + } - this.selection = []; // list with the ids of all selected nodes - this.stackDirty = true; // if true, all items will be restacked on next redraw + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } + }; - this.touchParams = {}; // stores properties while dragging - // create the HTML DOM + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, - this._create(); + /** + * the core detection method + * this finds out what hammer-touch-events to trigger + * @method doDetect + * @param {Object} ev + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {HTMLElement} element + * @param {Function} handler + * @return {String} triggerType matches `EVENT_START|MOVE|END` + */ + doDetect: function doDetect(ev, eventType, element, handler) { + var touchList = this.getTouchList(ev, eventType); + var touchListLength = touchList.length; + var triggerType = eventType; + var triggerChange = touchList.trigger; // used by fakeMultitouch plugin + var changedLength = touchListLength; - this.setOptions(options); - } + // at each touchstart-like event we want also want to trigger a TOUCH event... + if(eventType == EVENT_START) { + triggerChange = EVENT_TOUCH; + // ...the same for a touchend-like event + } else if(eventType == EVENT_END) { + triggerChange = EVENT_RELEASE; - ItemSet.prototype = new Component(); + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + } - // available item types will be registered here - ItemSet.types = { - background: BackgroundItem, - box: BoxItem, - range: RangeItem, - point: PointItem - }; + // after there are still touches on the screen, + // we just want to trigger a MOVE event. so change the START or END to a MOVE + // but only after detection has been started, the first time we actualy want a START + if(changedLength > 0 && this.started) { + triggerType = EVENT_MOVE; + } - /** - * Create the HTML DOM for the ItemSet - */ - ItemSet.prototype._create = function(){ - var frame = document.createElement('div'); - frame.className = 'itemset'; - frame['timeline-itemset'] = this; - this.dom.frame = frame; + // detection has been started, we keep track of this, see above + this.started = true; - // create background panel - var background = document.createElement('div'); - background.className = 'background'; - frame.appendChild(background); - this.dom.background = background; + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); - // create foreground panel - var foreground = document.createElement('div'); - foreground.className = 'foreground'; - frame.appendChild(foreground); - this.dom.foreground = foreground; + // trigger the triggerType event before the change (TOUCH, RELEASE) events + // but the END event should be at last + if(eventType != EVENT_END) { + handler.call(Detection, evData); + } - // create axis panel - var axis = document.createElement('div'); - axis.className = 'axis'; - this.dom.axis = axis; + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; - // create labelset - var labelSet = document.createElement('div'); - labelSet.className = 'labelset'; - this.dom.labelSet = labelSet; + handler.call(Detection, evData); - // create ungrouped Group - this._updateUngrouped(); + evData.eventType = triggerType; + delete evData.changedLength; + } - // create background Group - var backgroundGroup = new BackgroundGroup(BACKGROUND, null, this); - backgroundGroup.show(); - this.groups[BACKGROUND] = backgroundGroup; + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); - // attach event listeners - // Note: we bind to the centerContainer for the case where the height - // of the center container is larger than of the ItemSet, so we - // can click in the empty area to create a new item or deselect an item. - this.hammer = Hammer(this.body.dom.centerContainer, { - preventDefault: true - }); + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; + } - // drag items when selected - this.hammer.on('touch', this._onTouch.bind(this)); - this.hammer.on('dragstart', this._onDragStart.bind(this)); - this.hammer.on('drag', this._onDrag.bind(this)); - this.hammer.on('dragend', this._onDragEnd.bind(this)); + return triggerType; + }, - // single select (or unselect) when tapping an item - this.hammer.on('tap', this._onSelectItem.bind(this)); + /** + * we have different events for each device/browser + * determine what we need and set them in the EVENT_TYPES constant + * the `onTouch` method is bind to these properties. + * @method determineEventTypes + * @return {Object} events + */ + determineEventTypes: function determineEventTypes() { + var types; + if(Hammer.HAS_POINTEREVENTS) { + if(window.PointerEvent) { + types = [ + 'pointerdown', + 'pointermove', + 'pointerup pointercancel lostpointercapture' + ]; + } else { + types = [ + 'MSPointerDown', + 'MSPointerMove', + 'MSPointerUp MSPointerCancel MSLostPointerCapture' + ]; + } + } else if(Hammer.NO_MOUSEEVENTS) { + types = [ + 'touchstart', + 'touchmove', + 'touchend touchcancel' + ]; + } else { + types = [ + 'touchstart mousedown', + 'touchmove mousemove', + 'touchend touchcancel mouseup' + ]; + } - // multi select when holding mouse/touch, or on ctrl+click - this.hammer.on('hold', this._onMultiSelectItem.bind(this)); + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, - // add item on doubletap - this.hammer.on('doubletap', this._onAddItem.bind(this)); + /** + * create touchList depending on the event + * @method getTouchList + * @param {Object} ev + * @param {String} eventType + * @return {Array} touches + */ + getTouchList: function getTouchList(ev, eventType) { + // get the fake pointerEvent touchlist + if(Hammer.HAS_POINTEREVENTS) { + return PointerEvent.getTouchList(); + } - // attach to the DOM - this.show(); - }; + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; + } - /** - * Set options for the ItemSet. Existing options will be extended/overwritten. - * @param {Object} [options] The following options are available: - * {String} type - * Default type for the items. Choose from 'box' - * (default), 'point', 'range', or 'background'. - * The default style can be overwritten by - * individual items. - * {String} align - * Alignment for the items, only applicable for - * BoxItem. Choose 'center' (default), 'left', or - * 'right'. - * {String} orientation - * Orientation of the item set. Choose 'top' or - * 'bottom' (default). - * {Function} groupOrder - * A sorting function for ordering groups - * {Boolean} stack - * If true (deafult), items will be stacked on - * top of each other. - * {Number} margin.axis - * Margin between the axis and the items in pixels. - * Default is 20. - * {Number} margin.item.horizontal - * Horizontal margin between items in pixels. - * Default is 10. - * {Number} margin.item.vertical - * Vertical Margin between items in pixels. - * Default is 10. - * {Number} margin.item - * Margin between items in pixels in both horizontal - * and vertical direction. Default is 10. - * {Number} margin - * Set margin for both axis and items in pixels. - * {Number} padding - * Padding of the contents of an item in pixels. - * Must correspond with the items css. Default is 5. - * {Boolean} selectable - * If true (default), items can be selected. - * {Boolean} editable - * Set all editable options to true or false - * {Boolean} editable.updateTime - * Allow dragging an item to an other moment in time - * {Boolean} editable.updateGroup - * Allow dragging an item to an other group - * {Boolean} editable.add - * Allow creating new items on double tap - * {Boolean} editable.remove - * Allow removing items by clicking the delete button - * top right of a selected item. - * {Function(item: Item, callback: Function)} onAdd - * Callback function triggered when an item is about to be added: - * when the user double taps an empty space in the Timeline. - * {Function(item: Item, callback: Function)} onUpdate - * Callback function fired when an item is about to be updated. - * This function typically has to show a dialog where the user - * change the item. If not implemented, nothing happens. - * {Function(item: Item, callback: Function)} onMove - * Fired when an item has been moved. If not implemented, - * the move action will be accepted. - * {Function(item: Item, callback: Function)} onRemove - * Fired when an item is about to be deleted. - * If not implemented, the item will be always removed. - */ - ItemSet.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - var fields = ['type', 'align', 'orientation', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide', 'snap']; - util.selectiveExtend(fields, this.options, options); + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; - if ('margin' in options) { - if (typeof options.margin === 'number') { - this.options.margin.axis = options.margin; - this.options.margin.item.horizontal = options.margin; - this.options.margin.item.vertical = options.margin; - } - else if (typeof options.margin === 'object') { - util.selectiveExtend(['axis'], this.options.margin, options.margin); - if ('item' in options.margin) { - if (typeof options.margin.item === 'number') { - this.options.margin.item.horizontal = options.margin.item; - this.options.margin.item.vertical = options.margin.item; - } - else if (typeof options.margin.item === 'object') { - util.selectiveExtend(['horizontal', 'vertical'], this.options.margin.item, options.margin.item); - } + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); + } + identifiers.push(touch.identifier); + }); + + return touchList; } - } - } - if ('editable' in options) { - if (typeof options.editable === 'boolean') { - this.options.editable.updateTime = options.editable; - this.options.editable.updateGroup = options.editable; - this.options.editable.add = options.editable; - this.options.editable.remove = options.editable; - } - else if (typeof options.editable === 'object') { - util.selectiveExtend(['updateTime', 'updateGroup', 'add', 'remove'], this.options.editable, options.editable); - } - } + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, - // callback functions - var addCallback = (function (name) { - var fn = options[name]; - if (fn) { - if (!(fn instanceof Function)) { - throw new Error('option ' + name + ' must be a function ' + name + '(item, callback)'); + /** + * collect basic event data + * @method collectEventData + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Array} touches + * @param {Object} ev + * @return {Object} ev + */ + collectEventData: function collectEventData(element, eventType, touches, ev) { + // find out pointerType + var pointerType = POINTER_TOUCH; + if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { + pointerType = POINTER_MOUSE; + } else if(PointerEvent.matchType(POINTER_PEN, ev)) { + pointerType = POINTER_PEN; } - this.options[name] = fn; - } - }).bind(this); - ['onAdd', 'onUpdate', 'onRemove', 'onMove', 'onMoving'].forEach(addCallback); - // force the itemSet to refresh: options like orientation and margins may be changed - this.markDirty(); - } + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, + + /** + * prevent the browser default actions + * mostly used to disable scrolling of the browser + */ + preventDefault: function() { + var srcEvent = this.srcEvent; + srcEvent.preventManipulation && srcEvent.preventManipulation(); + srcEvent.preventDefault && srcEvent.preventDefault(); + }, + + /** + * stop bubbling the event up to its parents + */ + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, + + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); + } + }; + } }; + /** - * Mark the ItemSet dirty so it will refresh everything with next redraw. - * Optionally, all items can be marked as dirty and be refreshed. - * @param {{refreshItems: boolean}} [options] + * @module hammer + * + * @class PointerEvent + * @static */ - ItemSet.prototype.markDirty = function(options) { - this.groupIds = []; - this.stackDirty = true; + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, - if (options && options.refreshItems) { - util.forEach(this.items, function (item) { - item.dirty = true; - if (item.displayed) item.redraw(); - }); - } - }; + /** + * get the pointers as an array + * @method getTouchList + * @return {Array} touchlist + */ + getTouchList: function getTouchList() { + var touchlist = []; + // we can use forEach since pointerEvents only is in IE10 + Utils.each(this.pointers, function(pointer) { + touchlist.push(pointer); + }); + return touchlist; + }, - /** - * Destroy the ItemSet - */ - ItemSet.prototype.destroy = function() { - this.hide(); - this.setItems(null); - this.setGroups(null); + /** + * update the position of a pointer + * @method updatePointer + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Object} pointerEvent + */ + updatePointer: function updatePointer(eventType, pointerEvent) { + if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { + delete this.pointers[pointerEvent.pointerId]; + } else { + pointerEvent.identifier = pointerEvent.pointerId; + this.pointers[pointerEvent.pointerId] = pointerEvent; + } + }, - this.hammer = null; + /** + * check if ev matches pointertype + * @method matchType + * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` + * @param {PointerEvent} ev + */ + matchType: function matchType(pointerType, ev) { + if(!ev.pointerType) { + return false; + } - this.body = null; - this.conversion = null; + var pt = ev.pointerType, + types = {}; + + types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); + types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); + types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); + return types[pointerType]; + }, + + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; + } }; + /** - * Hide the component from the DOM + * @module hammer + * + * @class Detection + * @static */ - ItemSet.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); - } + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], - // remove the axis with dots - if (this.dom.axis.parentNode) { - this.dom.axis.parentNode.removeChild(this.dom.axis); - } + // data of the current Hammer.gesture detection session + current: null, - // remove the labelset containing all group labels - if (this.dom.labelSet.parentNode) { - this.dom.labelSet.parentNode.removeChild(this.dom.labelSet); - } - }; + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, - /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed - */ - ItemSet.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); - } + // when this becomes true, no gestures are fired + stopped: false, - // show axis with dots - if (!this.dom.axis.parentNode) { - this.body.dom.backgroundVertical.appendChild(this.dom.axis); - } + /** + * start Hammer.gesture detection + * @method startDetect + * @param {Hammer.Instance} inst + * @param {Object} eventData + */ + startDetect: function startDetect(inst, eventData) { + // already busy with a Hammer.gesture detection on an element + if(this.current) { + return; + } - // show labelset containing labels - if (!this.dom.labelSet.parentNode) { - this.body.dom.left.appendChild(this.dom.labelSet); - } - }; + this.stopped = false; - /** - * Set selected items by their id. Replaces the current selection - * Unknown id's are silently ignored. - * @param {string[] | string} [ids] An array with zero or more id's of the items to be - * selected, or a single item id. If ids is undefined - * or an empty array, all items will be unselected. - */ - ItemSet.prototype.setSelection = function(ids) { - var i, ii, id, item; + // holds current session + this.current = { + inst: inst, // reference to HammerInstance we're working for + startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc + lastEvent: false, // last eventData + lastCalcEvent: false, // last eventData for calculations. + futureCalcEvent: false, // last eventData for calculations. + lastCalcData: {}, // last lastCalcData + name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc + }; - if (ids == undefined) ids = []; - if (!Array.isArray(ids)) ids = [ids]; + this.detect(eventData); + }, - // unselect currently selected items - for (i = 0, ii = this.selection.length; i < ii; i++) { - id = this.selection[i]; - item = this.items[id]; - if (item) item.unselect(); - } + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; + } - // select items - this.selection = []; - for (i = 0, ii = ids.length; i < ii; i++) { - id = ids[i]; - item = this.items[id]; - if (item) { - this.selection.push(id); - item.select(); - } - } - }; + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); - /** - * Get the selected items by their id - * @return {Array} ids The ids of the selected items - */ - ItemSet.prototype.getSelection = function() { - return this.selection.concat([]); - }; + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; - /** - * Get the id's of the currently visible items. - * @returns {Array} The ids of the visible items - */ - ItemSet.prototype.getVisibleItems = function() { - var range = this.body.range.getRange(); - var left = this.body.util.toScreen(range.start); - var right = this.body.util.toScreen(range.end); + // call Hammer.gesture handlers + Utils.each(this.gestures, function triggerGesture(gesture) { + // only when the instance options have enabled this gesture + if(!this.stopped && inst.enabled && instOptions[gesture.name]) { + gesture.handler.call(gesture, eventData, inst); + } + }, this); - var ids = []; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - var group = this.groups[groupId]; - var rawVisibleItems = group.visibleItems; + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; + } - // filter the "raw" set with visibleItems into a set which is really - // visible by pixels - for (var i = 0; i < rawVisibleItems.length; i++) { - var item = rawVisibleItems[i]; - // TODO: also check whether visible vertically - if ((item.left < right) && (item.left + item.width > left)) { - ids.push(item.id); + if(eventData.eventType == EVENT_END) { + this.stopDetect(); } - } - } - } - return ids; - }; + return eventData; + }, - /** - * Deselect a selected item - * @param {String | Number} id - * @private - */ - ItemSet.prototype._deselect = function(id) { - var selection = this.selection; - for (var i = 0, ii = selection.length; i < ii; i++) { - if (selection[i] == id) { // non-strict comparison! - selection.splice(i, 1); - break; - } - } - }; + /** + * clear the Hammer.gesture vars + * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected + * to stop other Hammer.gestures from being fired + * @method stopDetect + */ + stopDetect: function stopDetect() { + // clone current data to the store as the previous gesture + // used for the double tap gesture, since this is an other gesture detect session + this.previous = Utils.extend({}, this.current); - /** - * Repaint the component - * @return {boolean} Returns true if the component is resized - */ - ItemSet.prototype.redraw = function() { - var margin = this.options.margin, - range = this.body.range, - asSize = util.option.asSize, - options = this.options, - orientation = options.orientation, - resized = false, - frame = this.dom.frame, - editable = options.editable.updateTime || options.editable.updateGroup; + // reset the current + this.current = null; + this.stopped = true; + }, - // recalculate absolute position (before redrawing groups) - this.props.top = this.body.domProps.top.height + this.body.domProps.border.top; - this.props.left = this.body.domProps.left.width + this.body.domProps.border.left; + /** + * calculate velocity, angle and direction + * @method getVelocityData + * @param {Object} ev + * @param {Object} center + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + */ + getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { + var cur = this.current, + recalc = false, + calcEv = cur.lastCalcEvent, + calcData = cur.lastCalcData; - // update class name - frame.className = 'itemset' + (editable ? ' editable' : ''); + if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { + center = calcEv.center; + deltaTime = ev.timeStamp - calcEv.timeStamp; + deltaX = ev.center.clientX - calcEv.center.clientX; + deltaY = ev.center.clientY - calcEv.center.clientY; + recalc = true; + } - // reorder the groups (if needed) - resized = this._orderGroups() || resized; + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; + } - // check whether zoomed (in that case we need to re-stack everything) - // TODO: would be nicer to get this as a trigger from Range - var visibleInterval = range.end - range.start; - var zoomed = (visibleInterval != this.lastVisibleInterval) || (this.props.width != this.props.lastWidth); - if (zoomed) this.stackDirty = true; - this.lastVisibleInterval = visibleInterval; - this.props.lastWidth = this.props.width; + if(!cur.lastCalcEvent || recalc) { + calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); + calcData.angle = Utils.getAngle(center, ev.center); + calcData.direction = Utils.getDirection(center, ev.center); - var restack = this.stackDirty; - var firstGroup = this._firstGroup(); - var firstMargin = { - item: margin.item, - axis: margin.axis - }; - var nonFirstMargin = { - item: margin.item, - axis: margin.item.vertical / 2 - }; - var height = 0; - var minHeight = margin.axis + margin.item.vertical; + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; + } - // redraw the background group - this.groups[BACKGROUND].redraw(range, nonFirstMargin, restack); + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, - // redraw all regular groups - util.forEach(this.groups, function (group) { - var groupMargin = (group == firstGroup) ? firstMargin : nonFirstMargin; - var groupResized = group.redraw(range, groupMargin, restack); - resized = groupResized || resized; - height += group.height; - }); - height = Math.max(height, minHeight); - this.stackDirty = false; + /** + * extend eventData for Hammer.gestures + * @method extendEventData + * @param {Object} ev + * @return {Object} ev + */ + extendEventData: function extendEventData(ev) { + var cur = this.current, + startEv = cur.startEvent, + lastEv = cur.lastEvent || startEv; - // update frame height - frame.style.height = asSize(height); + // update the start touchlist to calculate the scale/rotation + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + startEv.touches = []; + Utils.each(ev.touches, function(touch) { + startEv.touches.push({ + clientX: touch.clientX, + clientY: touch.clientY + }); + }); + } - // calculate actual size - this.props.width = frame.offsetWidth; - this.props.height = height; + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - // reposition axis - this.dom.axis.style.top = asSize((orientation == 'top') ? - (this.body.domProps.top.height + this.body.domProps.border.top) : - (this.body.domProps.top.height + this.body.domProps.centerContainer.height)); - this.dom.axis.style.left = '0'; + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - // check if this component is resized - resized = this._isResized() || resized; + Utils.extend(ev, { + startEvent: startEv, - return resized; - }; + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, - /** - * Get the first group, aligned with the axis - * @return {Group | null} firstGroup - * @private - */ - ItemSet.prototype._firstGroup = function() { - var firstGroupIndex = (this.options.orientation == 'top') ? 0 : (this.groupIds.length - 1); - var firstGroupId = this.groupIds[firstGroupIndex]; - var firstGroup = this.groups[firstGroupId] || this.groups[UNGROUPED]; + distance: Utils.getDistance(startEv.center, ev.center), + angle: Utils.getAngle(startEv.center, ev.center), + direction: Utils.getDirection(startEv.center, ev.center), + scale: Utils.getScale(startEv.touches, ev.touches), + rotation: Utils.getRotation(startEv.touches, ev.touches) + }); - return firstGroup || null; - }; + return ev; + }, - /** - * Create or delete the group holding all ungrouped items. This group is used when - * there are no groups specified. - * @protected - */ - ItemSet.prototype._updateUngrouped = function() { - var ungrouped = this.groups[UNGROUPED]; - var background = this.groups[BACKGROUND]; - var item, itemId; + /** + * register new gesture + * @method register + * @param {Object} gesture object, see `gestures/` for documentation + * @return {Array} gestures + */ + register: function register(gesture) { + // add an enable gesture options if there is no given + var options = gesture.defaults || {}; + if(options[gesture.name] === undefined) { + options[gesture.name] = true; + } - if (this.groupsData) { - // remove the group holding all ungrouped items - if (ungrouped) { - ungrouped.hide(); - delete this.groups[UNGROUPED]; + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); - for (itemId in this.items) { - if (this.items.hasOwnProperty(itemId)) { - item = this.items[itemId]; - item.parent && item.parent.remove(item); - var groupId = this._getGroupId(item.data); - var group = this.groups[groupId]; - group && group.add(item) || item.hide(); - } - } - } - } - else { - // create a group holding all (unfiltered) items - if (!ungrouped) { - var id = null; - var data = null; - ungrouped = new Group(id, data, this); - this.groups[UNGROUPED] = ungrouped; + // set its index + gesture.index = gesture.index || 1000; - for (itemId in this.items) { - if (this.items.hasOwnProperty(itemId)) { - item = this.items[itemId]; - ungrouped.add(item); - } - } + // add Hammer.gesture to the list + this.gestures.push(gesture); + + // sort the list by index + this.gestures.sort(function(a, b) { + if(a.index < b.index) { + return -1; + } + if(a.index > b.index) { + return 1; + } + return 0; + }); - ungrouped.show(); + return this.gestures; } - } }; + /** - * Get the element for the labelset - * @return {HTMLElement} labelSet + * @module hammer */ - ItemSet.prototype.getLabelSet = function() { - return this.dom.labelSet; - }; /** - * Set items - * @param {vis.DataSet | null} items + * create new hammer instance + * all methods should return the instance itself, so it is chainable. + * + * @class Instance + * @constructor + * @param {HTMLElement} element + * @param {Object} [options={}] options are merged with `Hammer.defaults` + * @return {Hammer.Instance} */ - ItemSet.prototype.setItems = function(items) { - var me = this, - ids, - oldItemsData = this.itemsData; + Hammer.Instance = function(element, options) { + var self = this; - // replace the dataset - if (!items) { - this.itemsData = null; - } - else if (items instanceof DataSet || items instanceof DataView) { - this.itemsData = items; - } - else { - throw new TypeError('Data must be an instance of DataSet or DataView'); - } + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - if (oldItemsData) { - // unsubscribe from old dataset - util.forEach(this.itemListeners, function (callback, event) { - oldItemsData.off(event, callback); - }); + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - // remove all drawn items - ids = oldItemsData.getIds(); - this._onRemove(ids); - } + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; - if (this.itemsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.itemListeners, function (callback, event) { - me.itemsData.on(event, callback, id); + /** + * options, merged with the defaults + * options with an _ are converted to camelCase + * @property options + * @type {Object} + */ + Utils.each(options, function(value, name) { + delete options[name]; + options[Utils.toCamelCase(name)] = value; }); - // add all new items - ids = this.itemsData.getIds(); - this._onAdd(ids); + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - // update the group holding all ungrouped items - this._updateUngrouped(); - } - }; + // add some css to the element to prevent the browser from doing its native behavoir + if(this.options.behavior) { + Utils.toggleBehavior(this.element, this.options.behavior, true); + } - /** - * Get the current items - * @returns {vis.DataSet | null} - */ - ItemSet.prototype.getItems = function() { - return this.itemsData; + /** + * event start handler on the element to start the detection + * @property eventStartHandler + * @type {Object} + */ + this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { + if(self.enabled && ev.eventType == EVENT_START) { + Detection.startDetect(self, ev); + } else if(ev.eventType == EVENT_TOUCH) { + Detection.detect(ev); + } + }); + + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; }; - /** - * Set groups - * @param {vis.DataSet} groups - */ - ItemSet.prototype.setGroups = function(groups) { - var me = this, - ids; + Hammer.Instance.prototype = { + /** + * bind events to the instance + * @method on + * @chainable + * @param {String} gestures multiple gestures by splitting with a space + * @param {Function} handler + * @param {Object} handler.ev event object + */ + on: function onEvent(gestures, handler) { + var self = this; + Event.on(self.element, gestures, handler, function(type) { + self.eventHandlers.push({ gesture: type, handler: handler }); + }); + return self; + }, - // unsubscribe from current dataset - if (this.groupsData) { - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.unsubscribe(event, callback); - }); + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; - // remove all drawn groups - ids = this.groupsData.getIds(); - this.groupsData = null; - this._onRemoveGroups(ids); // note: this will cause a redraw - } + Event.off(self.element, gestures, handler, function(type) { + var index = Utils.inArray({ gesture: type, handler: handler }); + if(index !== false) { + self.eventHandlers.splice(index, 1); + } + }); + return self; + }, - // replace the dataset - if (!groups) { - this.groupsData = null; - } - else if (groups instanceof DataSet || groups instanceof DataView) { - this.groupsData = groups; - } - else { - throw new TypeError('Data must be an instance of DataSet or DataView'); - } + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; + } - if (this.groupsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.on(event, callback, id); - }); + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; - // draw all ms - ids = this.groupsData.getIds(); - this._onAddGroups(ids); - } + // trigger on the target if it is in the instance element, + // this is for event delegation tricks + var element = this.element; + if(Utils.hasParent(eventData.target, element)) { + element = eventData.target; + } - // update the group holding all ungrouped items - this._updateUngrouped(); + element.dispatchEvent(event); + return this; + }, - // update the order of all items in each group - this._order(); + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, - this.body.emitter.emit('change', {queue: true}); + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; + + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); + + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); + } + + this.eventHandlers = []; + + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + + return null; + } }; + /** - * Get the current groups - * @returns {vis.DataSet | null} groups + * @module gestures */ - ItemSet.prototype.getGroups = function() { - return this.groupsData; - }; - /** - * Remove an item by its id - * @param {String | Number} id + * Move with x fingers (default 1) around on the page. + * Preventing the default browser behavior is a good way to improve feel and working. + * ```` + * hammertime.on("drag", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Drag + * @static */ - ItemSet.prototype.removeItem = function(id) { - var item = this.itemsData.get(id), - dataset = this.itemsData.getDataSet(); - - if (item) { - // confirm deletion - this.options.onRemove(item, function (item) { - if (item) { - // remove by id here, it is possible that an item has no id defined - // itself, so better not delete by the item itself - dataset.remove(id); - } - }); - } - }; - /** - * Get the time of an item based on it's data and options.type - * @param {Object} itemData - * @returns {string} Returns the type - * @private + * @event drag + * @param {Object} ev */ - ItemSet.prototype._getType = function (itemData) { - return itemData.type || this.options.type || (itemData.end ? 'range' : 'box'); - }; - - /** - * Get the group id for an item - * @param {Object} itemData - * @returns {string} Returns the groupId - * @private + * @event dragstart + * @param {Object} ev */ - ItemSet.prototype._getGroupId = function (itemData) { - var type = this._getType(itemData); - if (type == 'background' && itemData.group == undefined) { - return BACKGROUND; - } - else { - return this.groupsData ? itemData.group : UNGROUPED; - } - }; - /** - * Handle updated items - * @param {Number[]} ids - * @protected + * @event dragend + * @param {Object} ev */ - ItemSet.prototype._onUpdate = function(ids) { - var me = this; - - ids.forEach(function (id) { - var itemData = me.itemsData.get(id, me.itemOptions); - var item = me.items[id]; - var type = me._getType(itemData); - - var constructor = ItemSet.types[type]; - - if (item) { - // update item - if (!constructor || !(item instanceof constructor)) { - // item type has changed, delete the item and recreate it - me._removeItem(item); - item = null; - } - else { - me._updateItem(item, itemData); - } - } - - if (!item) { - // create item - if (constructor) { - item = new constructor(itemData, me.conversion, me.options); - item.id = id; // TODO: not so nice setting id afterwards - me._addItem(item); - } - else if (type == 'rangeoverflow') { - // TODO: deprecated since version 2.1.0 (or 3.0.0?). cleanup some day - throw new TypeError('Item type "rangeoverflow" is deprecated. Use css styling instead: ' + - '.vis.timeline .item.range .content {overflow: visible;}'); - } - else { - throw new TypeError('Unknown item type "' + type + '"'); - } - } - }); - - this._order(); - this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change', {queue: true}); - }; - /** - * Handle added items - * @param {Number[]} ids - * @protected + * @event drapleft + * @param {Object} ev */ - ItemSet.prototype._onAdd = ItemSet.prototype._onUpdate; - /** - * Handle removed items - * @param {Number[]} ids - * @protected + * @event dragright + * @param {Object} ev */ - ItemSet.prototype._onRemove = function(ids) { - var count = 0; - var me = this; - ids.forEach(function (id) { - var item = me.items[id]; - if (item) { - count++; - me._removeItem(item); - } - }); - - if (count) { - // update order - this._order(); - this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change', {queue: true}); - } - }; - /** - * Update the order of item in all groups - * @private + * @event dragup + * @param {Object} ev */ - ItemSet.prototype._order = function() { - // reorder the items in all groups - // TODO: optimization: only reorder groups affected by the changed items - util.forEach(this.groups, function (group) { - group.order(); - }); - }; - /** - * Handle updated groups - * @param {Number[]} ids - * @private + * @event dragdown + * @param {Object} ev */ - ItemSet.prototype._onUpdateGroups = function(ids) { - this._onAddGroups(ids); - }; /** - * Handle changed groups (added or updated) - * @param {Number[]} ids - * @private + * @param {String} name */ - ItemSet.prototype._onAddGroups = function(ids) { - var me = this; + (function(name) { + var triggered = false; - ids.forEach(function (id) { - var groupData = me.groupsData.get(id); - var group = me.groups[id]; + function dragGesture(ev, inst) { + var cur = Detection.current; - if (!group) { - // check for reserved ids - if (id == UNGROUPED || id == BACKGROUND) { - throw new Error('Illegal group id. ' + id + ' is a reserved id.'); - } + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { + return; + } - var groupOptions = Object.create(me.options); - util.extend(groupOptions, { - height: null - }); + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - group = new Group(id, groupData, me); - me.groups[id] = group; + case EVENT_MOVE: + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.distance < inst.options.dragMinDistance && + cur.name != name) { + return; + } - // add items with this groupId to the new group - for (var itemId in me.items) { - if (me.items.hasOwnProperty(itemId)) { - var item = me.items[itemId]; - if (item.data.group == id) { - group.add(item); - } - } - } + var startCenter = cur.startEvent.center; - group.order(); - group.show(); - } - else { - // update group - group.setData(groupData); - } - }); + // we are dragging! + if(cur.name != name) { + cur.name = name; + if(inst.options.dragDistanceCorrection && ev.distance > 0) { + // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. + // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. + // It might be useful to save the original start point somewhere + var factor = Math.abs(inst.options.dragMinDistance / ev.distance); + startCenter.pageX += ev.deltaX * factor; + startCenter.pageY += ev.deltaY * factor; + startCenter.clientX += ev.deltaX * factor; + startCenter.clientY += ev.deltaY * factor; - this.body.emitter.emit('change', {queue: true}); - }; + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } - /** - * Handle removed groups - * @param {Number[]} ids - * @private - */ - ItemSet.prototype._onRemoveGroups = function(ids) { - var groups = this.groups; - ids.forEach(function (id) { - var group = groups[id]; + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; + } - if (group) { - group.hide(); - delete groups[id]; - } - }); + // keep direction on the axis that the drag gesture started on + var lastDirection = cur.lastEvent.direction; + if(ev.dragLockToAxis && lastDirection !== ev.direction) { + if(Utils.isVertical(lastDirection)) { + ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; + } else { + ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + } - this.markDirty(); + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - this.body.emitter.emit('change', {queue: true}); - }; + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); - /** - * Reorder the groups if needed - * @return {boolean} changed - * @private - */ - ItemSet.prototype._orderGroups = function () { - if (this.groupsData) { - // reorder the groups - var groupIds = this.groupsData.getIds({ - order: this.options.groupOrder - }); + var isVertical = Utils.isVertical(ev.direction); - var changed = !util.equalArray(groupIds, this.groupIds); - if (changed) { - // hide all groups, removes them from the DOM - var groups = this.groups; - groupIds.forEach(function (groupId) { - groups[groupId].hide(); - }); + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - // show the groups again, attach them to the DOM in correct order - groupIds.forEach(function (groupId) { - groups[groupId].show(); - }); + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; - this.groupIds = groupIds; + case EVENT_END: + triggered = false; + break; + } } - return changed; - } - else { - return false; - } - }; + Hammer.gestures.Drag = { + name: name, + index: 50, + handler: dragGesture, + defaults: { + /** + * minimal movement that have to be made before the drag event gets triggered + * @property dragMinDistance + * @type {Number} + * @default 10 + */ + dragMinDistance: 10, - /** - * Add a new item - * @param {Item} item - * @private - */ - ItemSet.prototype._addItem = function(item) { - this.items[item.id] = item; + /** + * Set dragDistanceCorrection to true to make the starting point of the drag + * be calculated from where the drag was triggered, not from where the touch started. + * Useful to avoid a jerk-starting drag, which can make fine-adjustments + * through dragging difficult, and be visually unappealing. + * @property dragDistanceCorrection + * @type {Boolean} + * @default true + */ + dragDistanceCorrection: true, - // add to group - var groupId = this._getGroupId(item.data); - var group = this.groups[groupId]; - if (group) group.add(item); - }; + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, - /** - * Update an existing item - * @param {Item} item - * @param {Object} itemData - * @private - */ - ItemSet.prototype._updateItem = function(item, itemData) { - var oldGroupId = item.data.group; + /** + * prevent default browser behavior when dragging occurs + * be careful with it, it makes the element a blocking element + * when you are using the drag gesture, it is a good practice to set this true + * @property dragBlockHorizontal + * @type {Boolean} + * @default false + */ + dragBlockHorizontal: false, - // update the items data (will redraw the item when displayed) - item.setData(itemData); + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, - // update group - if (oldGroupId != item.data.group) { - var oldGroup = this.groups[oldGroupId]; - if (oldGroup) oldGroup.remove(item); + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, - var groupId = this._getGroupId(item.data); - var group = this.groups[groupId]; - if (group) group.add(item); - } - }; + /** + * drag lock only kicks in when distance > dragLockMinDistance + * This way, locking occurs only when the distance has become large enough to reliably determine the direction + * @property dragLockMinDistance + * @type {Number} + * @default 25 + */ + dragLockMinDistance: 25 + } + }; + })('drag'); /** - * Delete an item from the ItemSet: remove it from the DOM, from the map - * with items, and from the map with visible items, and from the selection - * @param {Item} item - * @private + * @module gestures */ - ItemSet.prototype._removeItem = function(item) { - // remove from DOM - item.hide(); - - // remove from items - delete this.items[item.id]; - - // remove from selection - var index = this.selection.indexOf(item.id); - if (index != -1) this.selection.splice(index, 1); - - // remove from group - item.parent && item.parent.remove(item); - }; - /** - * Create an array containing all items being a range (having an end date) - * @param array - * @returns {Array} - * @private + * trigger a simple gesture event, so you can do anything in your handler. + * only usable if you know what your doing... + * + * @class Gesture + * @static */ - ItemSet.prototype._constructByEndArray = function(array) { - var endArray = []; - - for (var i = 0; i < array.length; i++) { - if (array[i] instanceof RangeItem) { - endArray.push(array[i]); + /** + * @event gesture + * @param {Object} ev + */ + Hammer.gestures.Gesture = { + name: 'gesture', + index: 1337, + handler: function releaseGesture(ev, inst) { + inst.trigger(this.name, ev); } - } - return endArray; }; /** - * Register the clicked item on touch, before dragStart is initiated. - * - * dragStart is initiated from a mousemove event, which can have left the item - * already resulting in an item == null + * @module gestures + */ + /** + * Touch stays at the same place for x time * - * @param {Event} event - * @private + * @class Hold + * @static */ - ItemSet.prototype._onTouch = function (event) { - // store the touched item, used in _onDragStart - this.touchParams.item = ItemSet.itemFromTarget(event); - }; - /** - * Start dragging the selected events - * @param {Event} event - * @private + * @event hold + * @param {Object} ev */ - ItemSet.prototype._onDragStart = function (event) { - if (!this.options.editable.updateTime && !this.options.editable.updateGroup) { - return; - } - - var item = this.touchParams.item || null; - var me = this; - var props; - - if (item && item.selected) { - var dragLeftItem = event.target.dragLeftItem; - var dragRightItem = event.target.dragRightItem; - if (dragLeftItem) { - props = { - item: dragLeftItem, - initialX: event.gesture.center.clientX - }; + /** + * @param {String} name + */ + (function(name) { + var timer; - if (me.options.editable.updateTime) { - props.start = item.data.start.valueOf(); - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; - this.touchParams.itemProps = [props]; - } - else if (dragRightItem) { - props = { - item: dragRightItem, - initialX: event.gesture.center.clientX - }; + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); - if (me.options.editable.updateTime) { - props.end = item.data.end.valueOf(); - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } + // set the gesture so we can check in the timeout if it still is + current.name = name; - this.touchParams.itemProps = [props]; - } - else { - this.touchParams.itemProps = this.getSelection().map(function (id) { - var item = me.items[id]; - var props = { - item: item, - initialX: event.gesture.center.clientX - }; + // set timer and if after the timeout it still is hold, + // we trigger the hold event + timer = setTimeout(function() { + if(current && current.name == name) { + inst.trigger(name, ev); + } + }, options.holdTimeout); + break; - if (me.options.editable.updateTime) { - if ('start' in item.data) { - props.start = item.data.start.valueOf(); + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; - if ('end' in item.data) { - // we store a duration here in order not to change the width - // of the item when moving it. - props.duration = item.data.end.valueOf() - props.start; - } - } - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; + case EVENT_RELEASE: + clearTimeout(timer); + break; } - - return props; - }); } - event.stopPropagation(); - } - else if (this.options.editable.add && event.gesture.srcEvent.ctrlKey) { - // create a new range item when dragging with ctrl key down - this._onDragStartAddItem(event); - } - }; + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, + + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture + }; + })('hold'); /** - * Start creating a new range item by dragging. - * @param {Event} event - * @private + * @module gestures */ - ItemSet.prototype._onDragStartAddItem = function (event) { - var snap = this.options.snap || null; - var xAbs = util.getAbsoluteLeft(this.dom.frame); - var x = event.gesture.center.pageX - xAbs - 10; // minus 10 to compensate for the drag starting as soon as you've moved 10px - var time = this.body.util.toTime(x); - var scale = this.body.util.getScale(); - var step = this.body.util.getStep(); - var start = snap ? snap(time, scale, step) : start; - var end = start; - - var itemData = { - type: 'range', - start: start, - end: end, - content: 'new item' - }; - - var id = util.randomUUID(); - itemData[this.itemsData._fieldId] = id; - - var group = this.groupFromTarget(event); - if (group) { - itemData.group = group.groupId; - } - - var newItem = new RangeItem(itemData, this.conversion, this.options); - newItem.id = id; // TODO: not so nice setting id afterwards - this._addItem(newItem); - - var props = { - item: newItem, - end: end.valueOf(), - initialX: event.gesture.center.clientX - }; - this.touchParams.itemProps = [props]; - - event.stopPropagation(); - }; - /** - * Drag selected items - * @param {Event} event - * @private + * when a touch is being released from the page + * + * @class Release + * @static */ - ItemSet.prototype._onDrag = function (event) { - event.preventDefault(); - - if (this.touchParams.itemProps) { - var me = this; - var snap = this.options.snap || null; - var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width; - var scale = this.body.util.getScale(); - var step = this.body.util.getStep(); - - // move - this.touchParams.itemProps.forEach(function (props) { - var newProps = {}; - var current = me.body.util.toTime(event.gesture.center.clientX - xOffset); - var initial = me.body.util.toTime(props.initialX - xOffset); - var offset = current - initial; - - if ('start' in props) { - var start = new Date(props.start + offset); - newProps.start = snap ? snap(start, scale, step) : start; - } - - if ('end' in props) { - var end = new Date(props.end + offset); - newProps.end = snap ? snap(end, scale, step) : end; - } - else if ('duration' in props) { - newProps.end = new Date(newProps.start.valueOf() + props.duration); - } - - if ('group' in props) { - // drag from one group to another - var group = me.groupFromTarget(event); - newProps.group = group && group.groupId; - } - - // confirm moving the item - var itemData = util.extend({}, props.item.data, newProps); - me.options.onMoving(itemData, function (itemData) { - if (itemData) { - me._updateItemProps(props.item, itemData); + /** + * @event release + * @param {Object} ev + */ + Hammer.gestures.Release = { + name: 'release', + index: Infinity, + handler: function releaseGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + inst.trigger(this.name, ev); } - }); - }); - - this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change'); - - event.stopPropagation(); - } + } }; /** - * Update an items properties - * @param {Item} item - * @param {Object} props Can contain properties start, end, and group. - * @private + * @module gestures */ - ItemSet.prototype._updateItemProps = function(item, props) { - // TODO: copy all properties from props to item? (also new ones) - if ('start' in props) { - item.data.start = props.start; - } - if ('end' in props) { - item.data.end = props.end; - } - else if ('duration' in props) { - item.data.end = new Date(props.start.valueOf() + props.duration); - } - if ('group' in props && item.data.group != props.group) { - this._moveToGroup(item, props.group) - } - }; - /** - * Move an item to another group - * @param {Item} item - * @param {String | Number} groupId - * @private + * triggers swipe events when the end velocity is above the threshold + * for best usage, set `preventDefault` (on the drag gesture) to `true` + * ```` + * hammertime.on("dragleft swipeleft", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Swipe + * @static + */ + /** + * @event swipe + * @param {Object} ev + */ + /** + * @event swipeleft + * @param {Object} ev + */ + /** + * @event swiperight + * @param {Object} ev */ - ItemSet.prototype._moveToGroup = function(item, groupId) { - var group = this.groups[groupId]; - if (group && group.groupId != item.data.group) { - var oldGroup = item.parent; - oldGroup.remove(item); - oldGroup.order(); - group.add(item); - group.order(); - - item.data.group = group.groupId; - } - }; - /** - * End of dragging selected items - * @param {Event} event - * @private + * @event swipeup + * @param {Object} ev */ - ItemSet.prototype._onDragEnd = function (event) { - event.preventDefault() + /** + * @event swipedown + * @param {Object} ev + */ + Hammer.gestures.Swipe = { + name: 'swipe', + index: 40, + defaults: { + /** + * @property swipeMinTouches + * @type {Number} + * @default 1 + */ + swipeMinTouches: 1, - if (this.touchParams.itemProps) { - // prepare a change set for the changed items - var changes = []; - var me = this; - var dataset = this.itemsData.getDataSet(); + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - var itemProps = this.touchParams.itemProps ; - this.touchParams.itemProps = null; - itemProps.forEach(function (props) { - var id = props.item.id; - var itemData = me.itemsData.get(id, me.itemOptions); + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, - if (!itemData) { - // add a new item - me.options.onAdd(props.item.data, function (itemData) { - me._removeItem(props.item); // remove temporary item - if (itemData) { - me.itemsData.getDataSet().add(itemData); - } + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, - // force re-stacking of all items next redraw - me.stackDirty = true; - me.body.emitter.emit('change'); - }); - } - else { - // update existing item - var changed = false; - if ('start' in props.item.data) { - changed = (props.start != props.item.data.start.valueOf()); - itemData.start = util.convert(props.item.data.start, - dataset._options.type && dataset._options.type.start || 'Date'); - } - if ('end' in props.item.data) { - changed = changed || (props.end != props.item.data.end.valueOf()); - itemData.end = util.convert(props.item.data.end, - dataset._options.type && dataset._options.type.end || 'Date'); - } - if ('group' in props.item.data) { - changed = changed || (props.group != props.item.data.group); - itemData.group = props.item.data.group; - } + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; - // only apply changes when start or end is actually changed - if (changed) { - me.options.onMove(itemData, function (itemData) { - if (itemData) { - // apply changes - itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) - changes.push(itemData); + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; } - else { - // restore original values - me._updateItemProps(props.item, props); - me.stackDirty = true; // force re-stacking of all items next redraw - me.body.emitter.emit('change'); + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.velocityX > options.swipeVelocityX || + ev.velocityY > options.swipeVelocityY) { + // trigger swipe events + inst.trigger(this.name, ev); + inst.trigger(this.name + ev.direction, ev); } - }); } - } - }); - - // apply the changes to the data (if there are changes) - if (changes.length) { - dataset.update(changes); } - - event.stopPropagation(); - } }; /** - * Handle selecting/deselecting an item when tapping it - * @param {Event} event - * @private + * @module gestures */ - ItemSet.prototype._onSelectItem = function (event) { - if (!this.options.selectable) return; - - var ctrlKey = event.gesture.srcEvent && event.gesture.srcEvent.ctrlKey; - var shiftKey = event.gesture.srcEvent && event.gesture.srcEvent.shiftKey; - if (ctrlKey || shiftKey) { - this._onMultiSelectItem(event); - return; - } - - var oldSelection = this.getSelection(); - - var item = ItemSet.itemFromTarget(event); - var selection = item ? [item.id] : []; - this.setSelection(selection); - - var newSelection = this.getSelection(); - - // emit a select event, - // except when old selection is empty and new selection is still empty - if (newSelection.length > 0 || oldSelection.length > 0) { - this.body.emitter.emit('select', { - items: newSelection - }); - } - }; - /** - * Handle creation and updates of an item on double tap - * @param event - * @private + * Single tap and a double tap on a place + * + * @class Tap + * @static + */ + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev */ - ItemSet.prototype._onAddItem = function (event) { - if (!this.options.selectable) return; - if (!this.options.editable.add) return; - var me = this, - snap = this.options.snap || null, - item = ItemSet.itemFromTarget(event); + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; - if (item) { - // update item + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - // execute async handler to update the item (or cancel it) - var itemData = me.itemsData.get(item.id); // get a clone of the data from the dataset - this.options.onUpdate(itemData, function (itemData) { - if (itemData) { - me.itemsData.getDataSet().update(itemData); - } - }); - } - else { - // add item - var xAbs = util.getAbsoluteLeft(this.dom.frame); - var x = event.gesture.center.pageX - xAbs; - var start = this.body.util.toTime(x); - var scale = this.body.util.getScale(); - var step = this.body.util.getStep(); + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - var newItem = { - start: snap ? snap(start, scale, step) : start, - content: 'new item' - }; + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - // when default type is a range, add a default end date to the new item - if (this.options.type === 'range') { - var end = this.body.util.toTime(x + this.props.width / 5); - newItem.end = snap ? snap(end, scale, step) : end; - } + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; - newItem[this.itemsData._fieldId] = util.randomUUID(); + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } - var group = this.groupFromTarget(event); - if (group) { - newItem.group = group.groupId; + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } + } + break; + } } - // execute async handler to customize (or cancel) adding an item - this.options.onAdd(newItem, function (item) { - if (item) { - me.itemsData.getDataSet().add(item); - // TODO: need to trigger a redraw? - } - }); - } - }; - - /** - * Handle selecting/deselecting multiple items when holding an item - * @param {Event} event - * @private - */ - ItemSet.prototype._onMultiSelectItem = function (event) { - if (!this.options.selectable) return; + Hammer.gestures.Tap = { + name: name, + index: 100, + handler: tapGesture, + defaults: { + /** + * max time of a tap, this is for the slow tappers + * @property tapMaxTime + * @type {Number} + * @default 250 + */ + tapMaxTime: 250, - var selection, - item = ItemSet.itemFromTarget(event); + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - if (item) { - // multi select items - selection = this.getSelection(); // current selection + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - var shiftKey = event.gesture.touches[0] && event.gesture.touches[0].shiftKey || false; - if (shiftKey) { - // select all items between the old selection and the tapped item + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, - // determine the selection range - selection.push(item.id); - var range = ItemSet._getItemRange(this.itemsData.get(selection, this.itemOptions)); + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 + } + }; + })('tap'); - // select all items within the selection range - selection = []; - for (var id in this.items) { - if (this.items.hasOwnProperty(id)) { - var _item = this.items[id]; - var start = _item.data.start; - var end = (_item.data.end !== undefined) ? _item.data.end : start; + /** + * @module gestures + */ + /** + * when a touch is being touched at the page + * + * @class Touch + * @static + */ + /** + * @event touch + * @param {Object} ev + */ + Hammer.gestures.Touch = { + name: 'touch', + index: -Infinity, + defaults: { + /** + * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, + * but it improves gestures like transforming and dragging. + * be careful with using this, it can be very annoying for users to be stuck on the page + * @property preventDefault + * @type {Boolean} + * @default false + */ + preventDefault: false, - if (start >= range.min && end <= range.max) { - selection.push(_item.id); // do not use id but item.id, id itself is stringified - } + /** + * disable mouse events, so only touch (or pen!) input triggers events + * @property preventMouse + * @type {Boolean} + * @default false + */ + preventMouse: false + }, + handler: function touchGesture(ev, inst) { + if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { + ev.stopDetect(); + return; } - } - } - else { - // add/remove this item from the current selection - var index = selection.indexOf(item.id); - if (index == -1) { - // item is not yet selected -> select it - selection.push(item.id); - } - else { - // item is already selected -> deselect it - selection.splice(index, 1); - } - } - this.setSelection(selection); + if(inst.options.preventDefault) { + ev.preventDefault(); + } - this.body.emitter.emit('select', { - items: this.getSelection() - }); - } + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); + } + } }; /** - * Calculate the time range of a list of items - * @param {Array.} itemsData - * @return {{min: Date, max: Date}} Returns the range of the provided items - * @private + * @module gestures + */ + /** + * User want to scale or rotate with 2 fingers + * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the + * `preventDefault` option. + * + * @class Transform + * @static + */ + /** + * @event transform + * @param {Object} ev + */ + /** + * @event transformstart + * @param {Object} ev + */ + /** + * @event transformend + * @param {Object} ev + */ + /** + * @event pinchin + * @param {Object} ev + */ + /** + * @event pinchout + * @param {Object} ev + */ + /** + * @event rotate + * @param {Object} ev */ - ItemSet._getItemRange = function(itemsData) { - var max = null; - var min = null; - itemsData.forEach(function (data) { - if (min == null || data.start < min) { - min = data.start; - } + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - if (data.end != undefined) { - if (max == null || data.end > max) { - max = data.end; - } - } - else { - if (max == null || data.start > max) { - max = data.start; - } - } - }); + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - return { - min: min, - max: max - } - }; + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - /** - * Find an item from an event target: - * searches for the attribute 'timeline-item' in the event target's element tree - * @param {Event} event - * @return {Item | null} item - */ - ItemSet.itemFromTarget = function(event) { - var target = event.target; - while (target) { - if (target.hasOwnProperty('timeline-item')) { - return target['timeline-item']; - } - target = target.parentNode; - } + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); - return null; - }; + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; + } - /** - * Find the Group from an event target: - * searches for the attribute 'timeline-group' in the event target's element tree - * @param {Event} event - * @return {Group | null} group - */ - ItemSet.prototype.groupFromTarget = function(event) { - // TODO: cleanup when the new solution is stable (also on mobile) - //var target = event.target; - //while (target) { - // if (target.hasOwnProperty('timeline-group')) { - // return target['timeline-group']; - // } - // target = target.parentNode; - //} - // + // we are transforming! + Detection.current.name = name; + + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } + + inst.trigger(name, ev); // basic transform event + + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } - var clientY = event.gesture.center.clientY; - for (var i = 0; i < this.groupIds.length; i++) { - var groupId = this.groupIds[i]; - var group = this.groups[groupId]; - var foreground = group.dom.foreground; - var top = util.getAbsoluteTop(foreground); - if (clientY > top && clientY < top + foreground.offsetHeight) { - return group; - } + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; - if (this.options.orientation === 'top') { - if (i === this.groupIds.length - 1 && clientY > top) { - return group; - } - } - else { - if (i === 0 && clientY < top + foreground.offset) { - return group; - } + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; + } } - } - return null; - }; + Hammer.gestures.Transform = { + name: name, + index: 45, + defaults: { + /** + * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 + * @property transformMinScale + * @type {Number} + * @default 0.01 + */ + transformMinScale: 0.01, + + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 + }, + + handler: transformGesture + }; + })('transform'); /** - * Find the ItemSet from an event target: - * searches for the attribute 'timeline-itemset' in the event target's element tree - * @param {Event} event - * @return {ItemSet | null} item + * @module hammer */ - ItemSet.itemSetFromTarget = function(event) { - var target = event.target; - while (target) { - if (target.hasOwnProperty('timeline-itemset')) { - return target['timeline-itemset']; - } - target = target.parentNode; - } - - return null; - }; - module.exports = ItemSet; + // AMD export + if(true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + // commonjs export + } else if(typeof module !== 'undefined' && module.exports) { + module.exports = Hammer; + // browser export + } else { + window.Hammer = Hammer; + } + })(window); /***/ }, -/* 33 */ +/* 21 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var DOMutil = __webpack_require__(2); - var Component = __webpack_require__(25); + var hammerUtil = __webpack_require__(22); + var moment = __webpack_require__(2); + var Component = __webpack_require__(23); + var DateUtil = __webpack_require__(24); /** - * Legend for Graph2d + * @constructor Range + * A Range controls a numeric range with a start and end value. + * The Range adjusts the range based on mouse events or programmatic changes, + * and triggers events when the range is changing or has been changed. + * @param {{dom: Object, domProps: Object, emitter: Emitter}} body + * @param {Object} [options] See description at Range.setOptions */ - function Legend(body, options, side, linegraphOptions) { + function Range(body, options) { + var now = moment().hours(0).minutes(0).seconds(0).milliseconds(0); + this.start = now.clone().add(-3, 'days').valueOf(); // Number + this.end = now.clone().add(4, 'days').valueOf(); // Number + this.body = body; + this.deltaDifference = 0; + this.scaleOffset = 0; + this.startToFront = false; + this.endToFront = true; + + // default options this.defaultOptions = { - enabled: true, - icons: true, - iconSize: 20, - iconSpacing: 6, - left: { - visible: true, - position: 'top-left' // top/bottom - left,center,right - }, - right: { - visible: true, - position: 'top-left' // top/bottom - left,center,right - } - } - this.side = side; - this.options = util.extend({},this.defaultOptions); - this.linegraphOptions = linegraphOptions; + start: null, + end: null, + direction: 'horizontal', // 'horizontal' or 'vertical' + moveable: true, + zoomable: true, + min: null, + max: null, + zoomMin: 10, // milliseconds + zoomMax: 1000 * 60 * 60 * 24 * 365 * 10000 // milliseconds + }; + this.options = util.extend({}, this.defaultOptions); - this.svgElements = {}; - this.dom = {}; - this.groups = {}; - this.amountOfGroups = 0; - this._create(); + this.props = { + touch: {} + }; + this.animateTimer = null; - this.setOptions(options); - } + // drag listeners for dragging + this.body.emitter.on('dragstart', this._onDragStart.bind(this)); + this.body.emitter.on('drag', this._onDrag.bind(this)); + this.body.emitter.on('dragend', this._onDragEnd.bind(this)); - Legend.prototype = new Component(); + // ignore dragging when holding + this.body.emitter.on('hold', this._onHold.bind(this)); - Legend.prototype.clear = function() { - this.groups = {}; - this.amountOfGroups = 0; + // mouse wheel for zooming + this.body.emitter.on('mousewheel', this._onMouseWheel.bind(this)); + this.body.emitter.on('DOMMouseScroll', this._onMouseWheel.bind(this)); // For FF + + // pinch to zoom + this.body.emitter.on('touch', this._onTouch.bind(this)); + this.body.emitter.on('pinch', this._onPinch.bind(this)); + + this.setOptions(options); } - Legend.prototype.addGroup = function(label, graphOptions) { + Range.prototype = new Component(); - if (!this.groups.hasOwnProperty(label)) { - this.groups[label] = graphOptions; + /** + * Set options for the range controller + * @param {Object} options Available options: + * {Number | Date | String} start Start date for the range + * {Number | Date | String} end End date for the range + * {Number} min Minimum value for start + * {Number} max Maximum value for end + * {Number} zoomMin Set a minimum value for + * (end - start). + * {Number} zoomMax Set a maximum value for + * (end - start). + * {Boolean} moveable Enable moving of the range + * by dragging. True by default + * {Boolean} zoomable Enable zooming of the range + * by pinching/scrolling. True by default + */ + Range.prototype.setOptions = function (options) { + if (options) { + // copy the options that we know + var fields = ['direction', 'min', 'max', 'zoomMin', 'zoomMax', 'moveable', 'zoomable', 'activate', 'hiddenDates']; + util.selectiveExtend(fields, this.options, options); + + if ('start' in options || 'end' in options) { + // apply a new range. both start and end are optional + this.setRange(options.start, options.end); + } } - this.amountOfGroups += 1; }; - Legend.prototype.updateGroup = function(label, graphOptions) { - this.groups[label] = graphOptions; - }; + /** + * Test whether direction has a valid value + * @param {String} direction 'horizontal' or 'vertical' + */ + function validateDirection (direction) { + if (direction != 'horizontal' && direction != 'vertical') { + throw new TypeError('Unknown direction "' + direction + '". ' + + 'Choose "horizontal" or "vertical".'); + } + } - Legend.prototype.removeGroup = function(label) { - if (this.groups.hasOwnProperty(label)) { - delete this.groups[label]; - this.amountOfGroups -= 1; + /** + * Set a new start and end range + * @param {Date | Number | String} [start] + * @param {Date | Number | String} [end] + * @param {boolean | number} [animate=false] If true, the range is animated + * smoothly to the new window. + * If animate is a number, the + * number is taken as duration + * Default duration is 500 ms. + * @param {Boolean} [byUser=false] + * + */ + Range.prototype.setRange = function(start, end, animate, byUser) { + if (byUser !== true) { + byUser = false; } - }; + var _start = start != undefined ? util.convert(start, 'Date').valueOf() : null; + var _end = end != undefined ? util.convert(end, 'Date').valueOf() : null; + this._cancelAnimation(); - Legend.prototype._create = function() { - this.dom.frame = document.createElement('div'); - this.dom.frame.className = 'legend'; - this.dom.frame.style.position = "absolute"; - this.dom.frame.style.top = "10px"; - this.dom.frame.style.display = "block"; + if (animate) { + var me = this; + var initStart = this.start; + var initEnd = this.end; + var duration = typeof animate === 'number' ? animate : 500; + var initTime = new Date().valueOf(); + var anyChanged = false; - this.dom.textArea = document.createElement('div'); - this.dom.textArea.className = 'legendText'; - this.dom.textArea.style.position = "relative"; - this.dom.textArea.style.top = "0px"; + var next = function () { + if (!me.props.touch.dragging) { + var now = new Date().valueOf(); + var time = now - initTime; + var done = time > duration; + var s = (done || _start === null) ? _start : util.easeInOutQuad(time, initStart, _start, duration); + var e = (done || _end === null) ? _end : util.easeInOutQuad(time, initEnd, _end, duration); - this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); - this.svg.style.position = 'absolute'; - this.svg.style.top = 0 +'px'; - this.svg.style.width = this.options.iconSize + 5 + 'px'; - this.svg.style.height = '100%'; + changed = me._applyRange(s, e); + DateUtil.updateHiddenDates(me.body, me.options.hiddenDates); + anyChanged = anyChanged || changed; + if (changed) { + me.body.emitter.emit('rangechange', {start: new Date(me.start), end: new Date(me.end), byUser:byUser}); + } - this.dom.frame.appendChild(this.svg); - this.dom.frame.appendChild(this.dom.textArea); + if (done) { + if (anyChanged) { + me.body.emitter.emit('rangechanged', {start: new Date(me.start), end: new Date(me.end), byUser:byUser}); + } + } + else { + // animate with as high as possible frame rate, leave 20 ms in between + // each to prevent the browser from blocking + me.animateTimer = setTimeout(next, 20); + } + } + }; + + return next(); + } + else { + var changed = this._applyRange(_start, _end); + DateUtil.updateHiddenDates(this.body, this.options.hiddenDates); + if (changed) { + var params = {start: new Date(this.start), end: new Date(this.end), byUser:byUser}; + this.body.emitter.emit('rangechange', params); + this.body.emitter.emit('rangechanged', params); + } + } }; /** - * Hide the component from the DOM + * Stop an animation + * @private */ - Legend.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); + Range.prototype._cancelAnimation = function () { + if (this.animateTimer) { + clearTimeout(this.animateTimer); + this.animateTimer = null; } }; /** - * Show the component in the DOM (when not already visible). + * Set a new start and end range. This method is the same as setRange, but + * does not trigger a range change and range changed event, and it returns + * true when the range is changed + * @param {Number} [start] + * @param {Number} [end] * @return {Boolean} changed + * @private */ - Legend.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); + Range.prototype._applyRange = function(start, end) { + var newStart = (start != null) ? util.convert(start, 'Date').valueOf() : this.start, + newEnd = (end != null) ? util.convert(end, 'Date').valueOf() : this.end, + max = (this.options.max != null) ? util.convert(this.options.max, 'Date').valueOf() : null, + min = (this.options.min != null) ? util.convert(this.options.min, 'Date').valueOf() : null, + diff; + + // check for valid number + if (isNaN(newStart) || newStart === null) { + throw new Error('Invalid start "' + start + '"'); + } + if (isNaN(newEnd) || newEnd === null) { + throw new Error('Invalid end "' + end + '"'); } - }; - Legend.prototype.setOptions = function(options) { - var fields = ['enabled','orientation','icons','left','right']; - util.selectiveDeepExtend(fields, this.options, options); - }; + // prevent start < end + if (newEnd < newStart) { + newEnd = newStart; + } - Legend.prototype.redraw = function() { - var activeGroups = 0; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - activeGroups++; + // prevent start < min + if (min !== null) { + if (newStart < min) { + diff = (min - newStart); + newStart += diff; + newEnd += diff; + + // prevent end > max + if (max != null) { + if (newEnd > max) { + newEnd = max; + } } } } - if (this.options[this.side].visible == false || this.amountOfGroups == 0 || this.options.enabled == false || activeGroups == 0) { - this.hide(); - } - else { - this.show(); - if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'bottom-left') { - this.dom.frame.style.left = '4px'; - this.dom.frame.style.textAlign = "left"; - this.dom.textArea.style.textAlign = "left"; - this.dom.textArea.style.left = (this.options.iconSize + 15) + 'px'; - this.dom.textArea.style.right = ''; - this.svg.style.left = 0 +'px'; - this.svg.style.right = ''; - } - else { - this.dom.frame.style.right = '4px'; - this.dom.frame.style.textAlign = "right"; - this.dom.textArea.style.textAlign = "right"; - this.dom.textArea.style.right = (this.options.iconSize + 15) + 'px'; - this.dom.textArea.style.left = ''; - this.svg.style.right = 0 +'px'; - this.svg.style.left = ''; + // prevent end > max + if (max !== null) { + if (newEnd > max) { + diff = (newEnd - max); + newStart -= diff; + newEnd -= diff; + + // prevent start < min + if (min != null) { + if (newStart < min) { + newStart = min; + } + } } + } - if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'top-right') { - this.dom.frame.style.top = 4 - Number(this.body.dom.center.style.top.replace("px","")) + 'px'; - this.dom.frame.style.bottom = ''; + // prevent (end-start) < zoomMin + if (this.options.zoomMin !== null) { + var zoomMin = parseFloat(this.options.zoomMin); + if (zoomMin < 0) { + zoomMin = 0; } - else { - var scrollableHeight = this.body.domProps.center.height - this.body.domProps.centerContainer.height; - this.dom.frame.style.bottom = 4 + scrollableHeight + Number(this.body.dom.center.style.top.replace("px","")) + 'px'; - this.dom.frame.style.top = ''; + if ((newEnd - newStart) < zoomMin) { + if ((this.end - this.start) === zoomMin && newStart > this.start && newEnd < this.end) { + // ignore this action, we are already zoomed to the minimum + newStart = this.start; + newEnd = this.end; + } + else { + // zoom to the minimum + diff = (zoomMin - (newEnd - newStart)); + newStart -= diff / 2; + newEnd += diff / 2; + } } + } - if (this.options.icons == false) { - this.dom.frame.style.width = this.dom.textArea.offsetWidth + 10 + 'px'; - this.dom.textArea.style.right = ''; - this.dom.textArea.style.left = ''; - this.svg.style.width = '0px'; - } - else { - this.dom.frame.style.width = this.options.iconSize + 15 + this.dom.textArea.offsetWidth + 10 + 'px' - this.drawLegendIcons(); + // prevent (end-start) > zoomMax + if (this.options.zoomMax !== null) { + var zoomMax = parseFloat(this.options.zoomMax); + if (zoomMax < 0) { + zoomMax = 0; } - var content = ''; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - content += this.groups[groupId].content + '
'; - } + if ((newEnd - newStart) > zoomMax) { + if ((this.end - this.start) === zoomMax && newStart < this.start && newEnd > this.end) { + // ignore this action, we are already zoomed to the maximum + newStart = this.start; + newEnd = this.end; + } + else { + // zoom to the maximum + diff = ((newEnd - newStart) - zoomMax); + newStart += diff / 2; + newEnd -= diff / 2; } } - this.dom.textArea.innerHTML = content; - this.dom.textArea.style.lineHeight = ((0.75 * this.options.iconSize) + this.options.iconSpacing) + 'px'; } + + var changed = (this.start != newStart || this.end != newEnd); + + // if the new range does NOT overlap with the old range, emit checkRangedItems to avoid not showing ranged items (ranged meaning has end time, not necessarily of type Range) + if (!((newStart >= this.start && newStart <= this.end) || (newEnd >= this.start && newEnd <= this.end)) && + !((this.start >= newStart && this.start <= newEnd) || (this.end >= newStart && this.end <= newEnd) )) { + this.body.emitter.emit('checkRangedItems'); + } + + this.start = newStart; + this.end = newEnd; + return changed; }; - Legend.prototype.drawLegendIcons = function() { - if (this.dom.frame.parentNode) { - DOMutil.prepareElements(this.svgElements); - var padding = window.getComputedStyle(this.dom.frame).paddingTop; - var iconOffset = Number(padding.replace('px','')); - var x = iconOffset; - var iconWidth = this.options.iconSize; - var iconHeight = 0.75 * this.options.iconSize; - var y = iconOffset + 0.5 * iconHeight + 3; + /** + * Retrieve the current range. + * @return {Object} An object with start and end properties + */ + Range.prototype.getRange = function() { + return { + start: this.start, + end: this.end + }; + }; - this.svg.style.width = iconWidth + 5 + iconOffset + 'px'; + /** + * Calculate the conversion offset and scale for current range, based on + * the provided width + * @param {Number} width + * @returns {{offset: number, scale: number}} conversion + */ + Range.prototype.conversion = function (width, totalHidden) { + return Range.conversion(this.start, this.end, width, totalHidden); + }; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); - y += iconHeight + this.options.iconSpacing; - } - } + /** + * Static method to calculate the conversion offset and scale for a range, + * based on the provided start, end, and width + * @param {Number} start + * @param {Number} end + * @param {Number} width + * @returns {{offset: number, scale: number}} conversion + */ + Range.conversion = function (start, end, width, totalHidden) { + if (totalHidden === undefined) { + totalHidden = 0; + } + if (width != 0 && (end - start != 0)) { + return { + offset: start, + scale: width / (end - start - totalHidden) } - - DOMutil.cleanupElements(this.svgElements); + } + else { + return { + offset: 0, + scale: 1 + }; } }; - module.exports = Legend; - + /** + * Start dragging horizontally or vertically + * @param {Event} event + * @private + */ + Range.prototype._onDragStart = function(event) { + this.deltaDifference = 0; + this.previousDelta = 0; + // only allow dragging when configured as movable + if (!this.options.moveable) return; -/***/ }, -/* 34 */ -/***/ function(module, exports, __webpack_require__) { + // refuse to drag when we where pinching to prevent the timeline make a jump + // when releasing the fingers in opposite order from the touch screen + if (!this.props.touch.allowDragging) return; - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(2); - var DataSet = __webpack_require__(3); - var DataView = __webpack_require__(4); - var Component = __webpack_require__(25); - var DataAxis = __webpack_require__(28); - var GraphGroup = __webpack_require__(29); - var Legend = __webpack_require__(33); - var BarGraphFunctions = __webpack_require__(50); + this.props.touch.start = this.start; + this.props.touch.end = this.end; + this.props.touch.dragging = true; - var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items + if (this.body.dom.root) { + this.body.dom.root.style.cursor = 'move'; + } + }; /** - * This is the constructor of the LineGraph. It requires a Timeline body and options. - * - * @param body - * @param options - * @constructor + * Perform dragging operation + * @param {Event} event + * @private */ - function LineGraph(body, options) { - this.id = util.randomUUID(); - this.body = body; + Range.prototype._onDrag = function (event) { + // only allow dragging when configured as movable + if (!this.options.moveable) return; + // refuse to drag when we where pinching to prevent the timeline make a jump + // when releasing the fingers in opposite order from the touch screen + if (!this.props.touch.allowDragging) return; - this.defaultOptions = { - yAxisOrientation: 'left', - defaultGroup: 'default', - sort: true, - sampling: true, - graphHeight: '400px', - shaded: { - enabled: false, - orientation: 'bottom' // top, bottom - }, - style: 'line', // line, bar - barChart: { - width: 50, - handleOverlap: 'overlap', - align: 'center' // left, center, right - }, - catmullRom: { - enabled: true, - parametrization: 'centripetal', // uniform (alpha = 0.0), chordal (alpha = 1.0), centripetal (alpha = 0.5) - alpha: 0.5 - }, - drawPoints: { - enabled: true, - size: 6, - style: 'square' // square, circle - }, - dataAxis: { - showMinorLabels: true, - showMajorLabels: true, - icons: false, - width: '40px', - visible: true, - alignZeros: true, - customRange: { - left: {min:undefined, max:undefined}, - right: {min:undefined, max:undefined} - } - //, these options are not set by default, but this shows the format they will be in - //format: { - // left: {decimals: 2}, - // right: {decimals: 2} - //}, - //title: { - // left: { - // text: 'left', - // style: 'color:black;' - // }, - // right: { - // text: 'right', - // style: 'color:black;' - // } - //} - }, - legend: { - enabled: false, - icons: true, - left: { - visible: true, - position: 'top-left' // top/bottom - left,right - }, - right: { - visible: true, - position: 'top-right' // top/bottom - left,right - } - }, - groups: { - visibility: {} - } - }; + var direction = this.options.direction; + validateDirection(direction); - // options is shared by this ItemSet and all its items - this.options = util.extend({}, this.defaultOptions); - this.dom = {}; - this.props = {}; - this.hammer = null; - this.groups = {}; - this.abortedGraphUpdate = false; - this.updateSVGheight = false; - this.updateSVGheightOnResize = false; + var delta = (direction == 'horizontal') ? event.gesture.deltaX : event.gesture.deltaY; + delta -= this.deltaDifference; + var interval = (this.props.touch.end - this.props.touch.start); - var me = this; - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet + // normalize dragging speed if cutout is in between. + var duration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); + interval -= duration; - // listeners for the DataSet of the items - this.itemListeners = { - 'add': function (event, params, senderId) { - me._onAdd(params.items); - }, - 'update': function (event, params, senderId) { - me._onUpdate(params.items); - }, - 'remove': function (event, params, senderId) { - me._onRemove(params.items); - } - }; + var width = (direction == 'horizontal') ? this.body.domProps.center.width : this.body.domProps.center.height; + var diffRange = -delta / width * interval; + var newStart = this.props.touch.start + diffRange; + var newEnd = this.props.touch.end + diffRange; - // listeners for the DataSet of the groups - this.groupListeners = { - 'add': function (event, params, senderId) { - me._onAddGroups(params.items); - }, - 'update': function (event, params, senderId) { - me._onUpdateGroups(params.items); - }, - 'remove': function (event, params, senderId) { - me._onRemoveGroups(params.items); - } - }; - this.items = {}; // object with an Item for every data item - this.selection = []; // list with the ids of all selected nodes - this.lastStart = this.body.range.start; - this.touchParams = {}; // stores properties while dragging + // snapping times away from hidden zones + var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, this.previousDelta-delta, true); + var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, this.previousDelta-delta, true); + if (safeStart != newStart || safeEnd != newEnd) { + this.deltaDifference += delta; + this.props.touch.start = safeStart; + this.props.touch.end = safeEnd; + this._onDrag(event); + return; + } - this.svgElements = {}; - this.setOptions(options); - this.groupsUsingDefaultStyles = [0]; - this.COUNTER = 0; - this.body.emitter.on('rangechanged', function() { - me.lastStart = me.body.range.start; - me.svg.style.left = util.option.asSize(-me.props.width); - me.redraw.call(me,true); + this.previousDelta = delta; + this._applyRange(newStart, newEnd); + + // fire a rangechange event + this.body.emitter.emit('rangechange', { + start: new Date(this.start), + end: new Date(this.end), + byUser: true }); + }; - // create the HTML DOM - this._create(); - this.framework = {svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups}; - this.body.emitter.emit('change'); + /** + * Stop dragging operation + * @param {event} event + * @private + */ + Range.prototype._onDragEnd = function (event) { + // only allow dragging when configured as movable + if (!this.options.moveable) return; - } + // refuse to drag when we where pinching to prevent the timeline make a jump + // when releasing the fingers in opposite order from the touch screen + if (!this.props.touch.allowDragging) return; - LineGraph.prototype = new Component(); + this.props.touch.dragging = false; + if (this.body.dom.root) { + this.body.dom.root.style.cursor = 'auto'; + } + + // fire a rangechanged event + this.body.emitter.emit('rangechanged', { + start: new Date(this.start), + end: new Date(this.end), + byUser: true + }); + }; /** - * Create the HTML DOM for the ItemSet + * Event handler for mouse wheel event, used to zoom + * Code from http://adomas.org/javascript-mouse-wheel/ + * @param {Event} event + * @private */ - LineGraph.prototype._create = function(){ - var frame = document.createElement('div'); - frame.className = 'LineGraph'; - this.dom.frame = frame; + Range.prototype._onMouseWheel = function(event) { + // only allow zooming when configured as zoomable and moveable + if (!(this.options.zoomable && this.options.moveable)) return; - // create svg element for graph drawing. - this.svg = document.createElementNS('http://www.w3.org/2000/svg','svg'); - this.svg.style.position = 'relative'; - this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; - this.svg.style.display = 'block'; - frame.appendChild(this.svg); + // retrieve delta + var delta = 0; + if (event.wheelDelta) { /* IE/Opera. */ + delta = event.wheelDelta / 120; + } else if (event.detail) { /* Mozilla case. */ + // In Mozilla, sign of delta is different than in IE. + // Also, delta is multiple of 3. + delta = -event.detail / 3; + } - // data axis - this.options.dataAxis.orientation = 'left'; - this.yAxisLeft = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); + // If delta is nonzero, handle it. + // Basically, delta is now positive if wheel was scrolled up, + // and negative, if wheel was scrolled down. + if (delta) { + // perform the zoom action. Delta is normally 1 or -1 - this.options.dataAxis.orientation = 'right'; - this.yAxisRight = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); - delete this.options.dataAxis.orientation; + // adjust a negative delta such that zooming in with delta 0.1 + // equals zooming out with a delta -0.1 + var scale; + if (delta < 0) { + scale = 1 - (delta / 5); + } + else { + scale = 1 / (1 + (delta / 5)) ; + } - // legends - this.legendLeft = new Legend(this.body, this.options.legend, 'left', this.options.groups); - this.legendRight = new Legend(this.body, this.options.legend, 'right', this.options.groups); + // calculate center, the date to zoom around + var gesture = hammerUtil.fakeGesture(this, event), + pointer = getPointer(gesture.center, this.body.dom.center), + pointerDate = this._pointerToDate(pointer); - this.show(); + this.zoom(scale, pointerDate, delta); + } + + // Prevent default actions caused by mouse wheel + // (else the page and timeline both zoom and scroll) + event.preventDefault(); }; /** - * set the options of the LineGraph. the mergeOptions is used for subObjects that have an enabled element. - * @param {object} options + * Start of a touch gesture + * @private */ - LineGraph.prototype.setOptions = function(options) { - if (options) { - var fields = ['sampling','defaultGroup','height','graphHeight','yAxisOrientation','style','barChart','dataAxis','sort','groups']; - if (options.graphHeight === undefined && options.height !== undefined && this.body.domProps.centerContainer.height !== undefined) { - this.updateSVGheight = true; - this.updateSVGheightOnResize = true; - } - else if (this.body.domProps.centerContainer.height !== undefined && options.graphHeight !== undefined) { - if (parseInt((options.graphHeight + '').replace("px",'')) < this.body.domProps.centerContainer.height) { - this.updateSVGheight = true; - } - } - util.selectiveDeepExtend(fields, this.options, options); - util.mergeOptions(this.options, options,'catmullRom'); - util.mergeOptions(this.options, options,'drawPoints'); - util.mergeOptions(this.options, options,'shaded'); - util.mergeOptions(this.options, options,'legend'); + Range.prototype._onTouch = function (event) { + this.props.touch.start = this.start; + this.props.touch.end = this.end; + this.props.touch.allowDragging = true; + this.props.touch.center = null; + this.scaleOffset = 0; + this.deltaDifference = 0; + }; - if (options.catmullRom) { - if (typeof options.catmullRom == 'object') { - if (options.catmullRom.parametrization) { - if (options.catmullRom.parametrization == 'uniform') { - this.options.catmullRom.alpha = 0; - } - else if (options.catmullRom.parametrization == 'chordal') { - this.options.catmullRom.alpha = 1.0; - } - else { - this.options.catmullRom.parametrization = 'centripetal'; - this.options.catmullRom.alpha = 0.5; - } - } - } - } + /** + * On start of a hold gesture + * @private + */ + Range.prototype._onHold = function () { + this.props.touch.allowDragging = false; + }; - if (this.yAxisLeft) { - if (options.dataAxis !== undefined) { - this.yAxisLeft.setOptions(this.options.dataAxis); - this.yAxisRight.setOptions(this.options.dataAxis); - } - } + /** + * Handle pinch event + * @param {Event} event + * @private + */ + Range.prototype._onPinch = function (event) { + // only allow zooming when configured as zoomable and moveable + if (!(this.options.zoomable && this.options.moveable)) return; - if (this.legendLeft) { - if (options.legend !== undefined) { - this.legendLeft.setOptions(this.options.legend); - this.legendRight.setOptions(this.options.legend); - } + this.props.touch.allowDragging = false; + + if (event.gesture.touches.length > 1) { + if (!this.props.touch.center) { + this.props.touch.center = getPointer(event.gesture.center, this.body.dom.center); } - if (this.groups.hasOwnProperty(UNGROUPED)) { - this.groups[UNGROUPED].setOptions(options); + var scale = 1 / (event.gesture.scale + this.scaleOffset); + var centerDate = this._pointerToDate(this.props.touch.center); + + var hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); + var hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this, centerDate); + var hiddenDurationAfter = hiddenDuration - hiddenDurationBefore; + + // calculate new start and end + var newStart = (centerDate - hiddenDurationBefore) + (this.props.touch.start - (centerDate - hiddenDurationBefore)) * scale; + var newEnd = (centerDate + hiddenDurationAfter) + (this.props.touch.end - (centerDate + hiddenDurationAfter)) * scale; + + // snapping times away from hidden zones + this.startToFront = 1 - scale > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + this.endToFront = scale - 1 > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + + var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, 1 - scale, true); + var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, scale - 1, true); + if (safeStart != newStart || safeEnd != newEnd) { + this.props.touch.start = safeStart; + this.props.touch.end = safeEnd; + this.scaleOffset = 1 - event.gesture.scale; + newStart = safeStart; + newEnd = safeEnd; } - } - // this is used to redraw the graph if the visibility of the groups is changed. - if (this.dom.frame) { - this.redraw(true); + this.setRange(newStart, newEnd, false, true); + + this.startToFront = false; // revert to default + this.endToFront = true; // revert to default } }; /** - * Hide the component from the DOM + * Helper function to calculate the center date for zooming + * @param {{x: Number, y: Number}} pointer + * @return {number} date + * @private */ - LineGraph.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); + Range.prototype._pointerToDate = function (pointer) { + var conversion; + var direction = this.options.direction; + + validateDirection(direction); + + if (direction == 'horizontal') { + return this.body.util.toTime(pointer.x).valueOf(); + } + else { + var height = this.body.domProps.center.height; + conversion = this.conversion(height); + return pointer.y / conversion.scale + conversion.offset; } }; + /** + * Get the pointer location relative to the location of the dom element + * @param {{pageX: Number, pageY: Number}} touch + * @param {Element} element HTML DOM element + * @return {{x: Number, y: Number}} pointer + * @private + */ + function getPointer (touch, element) { + return { + x: touch.pageX - util.getAbsoluteLeft(element), + y: touch.pageY - util.getAbsoluteTop(element) + }; + } /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed + * Zoom the range the given scale in or out. Start and end date will + * be adjusted, and the timeline will be redrawn. You can optionally give a + * date around which to zoom. + * For example, try scale = 0.9 or 1.1 + * @param {Number} scale Scaling factor. Values above 1 will zoom out, + * values below 1 will zoom in. + * @param {Number} [center] Value representing a date around which will + * be zoomed. */ - LineGraph.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); + Range.prototype.zoom = function(scale, center, delta) { + // if centerDate is not provided, take it half between start Date and end Date + if (center == null) { + center = (this.start + this.end) / 2; + } + + var hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); + var hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this, center); + var hiddenDurationAfter = hiddenDuration - hiddenDurationBefore; + + // calculate new start and end + var newStart = (center-hiddenDurationBefore) + (this.start - (center-hiddenDurationBefore)) * scale; + var newEnd = (center+hiddenDurationAfter) + (this.end - (center+hiddenDurationAfter)) * scale; + + // snapping times away from hidden zones + this.startToFront = delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + this.endToFront = -delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, delta, true); + var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, -delta, true); + if (safeStart != newStart || safeEnd != newEnd) { + newStart = safeStart; + newEnd = safeEnd; } + + this.setRange(newStart, newEnd, false, true); + + this.startToFront = false; // revert to default + this.endToFront = true; // revert to default }; + /** - * Set items - * @param {vis.DataSet | null} items + * Move the range with a given delta to the left or right. Start and end + * value will be adjusted. For example, try delta = 0.1 or -0.1 + * @param {Number} delta Moving amount. Positive value will move right, + * negative value will move left */ - LineGraph.prototype.setItems = function(items) { - var me = this, - ids, - oldItemsData = this.itemsData; + Range.prototype.move = function(delta) { + // zoom start Date and end Date relative to the centerDate + var diff = (this.end - this.start); - // replace the dataset - if (!items) { - this.itemsData = null; - } - else if (items instanceof DataSet || items instanceof DataView) { - this.itemsData = items; - } - else { - throw new TypeError('Data must be an instance of DataSet or DataView'); - } + // apply new values + var newStart = this.start + diff * delta; + var newEnd = this.end + diff * delta; + + // TODO: reckon with min and max range + + this.start = newStart; + this.end = newEnd; + }; - if (oldItemsData) { - // unsubscribe from old dataset - util.forEach(this.itemListeners, function (callback, event) { - oldItemsData.off(event, callback); - }); + /** + * Move the range to a new center point + * @param {Number} moveTo New center point of the range + */ + Range.prototype.moveTo = function(moveTo) { + var center = (this.start + this.end) / 2; - // remove all drawn items - ids = oldItemsData.getIds(); - this._onRemove(ids); - } + var diff = center - moveTo; - if (this.itemsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.itemListeners, function (callback, event) { - me.itemsData.on(event, callback, id); - }); + // calculate new start and end + var newStart = this.start - diff; + var newEnd = this.end - diff; - // add all new items - ids = this.itemsData.getIds(); - this._onAdd(ids); - } - this._updateUngrouped(); - //this._updateGraph(); - this.redraw(true); + this.setRange(newStart, newEnd); }; + module.exports = Range; + + +/***/ }, +/* 22 */ +/***/ function(module, exports, __webpack_require__) { + + var Hammer = __webpack_require__(19); /** - * Set groups - * @param {vis.DataSet} groups + * Fake a hammer.js gesture. Event can be a ScrollEvent or MouseMoveEvent + * @param {Element} element + * @param {Event} event */ - LineGraph.prototype.setGroups = function(groups) { - var me = this; - var ids; + exports.fakeGesture = function(element, event) { + var eventType = null; - // unsubscribe from current dataset - if (this.groupsData) { - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.unsubscribe(event, callback); - }); + // for hammer.js 1.0.5 + // var gesture = Hammer.event.collectEventData(this, eventType, event); - // remove all drawn groups - ids = this.groupsData.getIds(); - this.groupsData = null; - this._onRemoveGroups(ids); // note: this will cause a redraw - } + // for hammer.js 1.0.6+ + var touches = Hammer.event.getTouchList(event, eventType); + var gesture = Hammer.event.collectEventData(this, eventType, touches, event); - // replace the dataset - if (!groups) { - this.groupsData = null; - } - else if (groups instanceof DataSet || groups instanceof DataView) { - this.groupsData = groups; + // on IE in standards mode, no touches are recognized by hammer.js, + // resulting in NaN values for center.pageX and center.pageY + if (isNaN(gesture.center.pageX)) { + gesture.center.pageX = event.pageX; } - else { - throw new TypeError('Data must be an instance of DataSet or DataView'); + if (isNaN(gesture.center.pageY)) { + gesture.center.pageY = event.pageY; } - if (this.groupsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.on(event, callback, id); - }); - - // draw all ms - ids = this.groupsData.getIds(); - this._onAddGroups(ids); - } - this._onUpdate(); + return gesture; }; +/***/ }, +/* 23 */ +/***/ function(module, exports, __webpack_require__) { + /** - * Update the data - * @param [ids] - * @private + * Prototype for visual components + * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body] + * @param {Object} [options] */ - LineGraph.prototype._onUpdate = function(ids) { - this._updateUngrouped(); - this._updateAllGroupData(); - //this._updateGraph(); - this.redraw(true); - }; - LineGraph.prototype._onAdd = function (ids) {this._onUpdate(ids);}; - LineGraph.prototype._onRemove = function (ids) {this._onUpdate(ids);}; - LineGraph.prototype._onUpdateGroups = function (groupIds) { - for (var i = 0; i < groupIds.length; i++) { - var group = this.groupsData.get(groupIds[i]); - this._updateGroup(group, groupIds[i]); - } - - //this._updateGraph(); - this.redraw(true); - }; - LineGraph.prototype._onAddGroups = function (groupIds) {this._onUpdateGroups(groupIds);}; - + function Component (body, options) { + this.options = null; + this.props = null; + } /** - * this cleans the group out off the legends and the dataaxis, updates the ungrouped and updates the graph - * @param {Array} groupIds - * @private + * Set options for the component. The new options will be merged into the + * current options. + * @param {Object} options */ - LineGraph.prototype._onRemoveGroups = function (groupIds) { - for (var i = 0; i < groupIds.length; i++) { - if (this.groups.hasOwnProperty(groupIds[i])) { - if (this.groups[groupIds[i]].options.yAxisOrientation == 'right') { - this.yAxisRight.removeGroup(groupIds[i]); - this.legendRight.removeGroup(groupIds[i]); - this.legendRight.redraw(); - } - else { - this.yAxisLeft.removeGroup(groupIds[i]); - this.legendLeft.removeGroup(groupIds[i]); - this.legendLeft.redraw(); - } - delete this.groups[groupIds[i]]; - } + Component.prototype.setOptions = function(options) { + if (options) { + util.extend(this.options, options); } - this._updateUngrouped(); - //this._updateGraph(); - this.redraw(true); }; - /** - * update a group object with the group dataset entree - * - * @param group - * @param groupId - * @private + * Repaint the component + * @return {boolean} Returns true if the component is resized */ - LineGraph.prototype._updateGroup = function (group, groupId) { - if (!this.groups.hasOwnProperty(groupId)) { - this.groups[groupId] = new GraphGroup(group, groupId, this.options, this.groupsUsingDefaultStyles); - if (this.groups[groupId].options.yAxisOrientation == 'right') { - this.yAxisRight.addGroup(groupId, this.groups[groupId]); - this.legendRight.addGroup(groupId, this.groups[groupId]); - } - else { - this.yAxisLeft.addGroup(groupId, this.groups[groupId]); - this.legendLeft.addGroup(groupId, this.groups[groupId]); - } - } - else { - this.groups[groupId].update(group); - if (this.groups[groupId].options.yAxisOrientation == 'right') { - this.yAxisRight.updateGroup(groupId, this.groups[groupId]); - this.legendRight.updateGroup(groupId, this.groups[groupId]); - } - else { - this.yAxisLeft.updateGroup(groupId, this.groups[groupId]); - this.legendLeft.updateGroup(groupId, this.groups[groupId]); - } - } - this.legendLeft.redraw(); - this.legendRight.redraw(); + Component.prototype.redraw = function() { + // should be implemented by the component + return false; }; - /** - * this updates all groups, it is used when there is an update the the itemset. - * - * @private + * Destroy the component. Cleanup DOM and event listeners */ - LineGraph.prototype._updateAllGroupData = function () { - if (this.itemsData != null) { - var groupsContent = {}; - var groupId; - for (groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - groupsContent[groupId] = []; - } - } - for (var itemId in this.itemsData._data) { - if (this.itemsData._data.hasOwnProperty(itemId)) { - var item = this.itemsData._data[itemId]; - if (groupsContent[item.group] === undefined) { - throw new Error('Cannot find referenced group. Possible reason: items added before groups? Groups need to be added before items, as items refer to groups.') - } - item.x = util.convert(item.x,'Date'); - groupsContent[item.group].push(item); - } - } - for (groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - this.groups[groupId].setItems(groupsContent[groupId]); - } - } - } + Component.prototype.destroy = function() { + // should be implemented by the component }; - /** - * Create or delete the group holding all ungrouped items. This group is used when - * there are no groups specified. This anonymous group is called 'graph'. + * Test whether the component is resized since the last time _isResized() was + * called. + * @return {Boolean} Returns true if the component is resized * @protected */ - LineGraph.prototype._updateUngrouped = function() { - if (this.itemsData && this.itemsData != null) { - var ungroupedCounter = 0; - for (var itemId in this.itemsData._data) { - if (this.itemsData._data.hasOwnProperty(itemId)) { - var item = this.itemsData._data[itemId]; - if (item != undefined) { - if (item.hasOwnProperty('group')) { - if (item.group === undefined) { - item.group = UNGROUPED; - } - } - else { - item.group = UNGROUPED; - } - ungroupedCounter = item.group == UNGROUPED ? ungroupedCounter + 1 : ungroupedCounter; - } - } - } + Component.prototype._isResized = function() { + var resized = (this.props._previousWidth !== this.props.width || + this.props._previousHeight !== this.props.height); - if (ungroupedCounter == 0) { - delete this.groups[UNGROUPED]; - this.legendLeft.removeGroup(UNGROUPED); - this.legendRight.removeGroup(UNGROUPED); - this.yAxisLeft.removeGroup(UNGROUPED); - this.yAxisRight.removeGroup(UNGROUPED); - } - else { - var group = {id: UNGROUPED, content: this.options.defaultGroup}; - this._updateGroup(group, UNGROUPED); - } - } - else { - delete this.groups[UNGROUPED]; - this.legendLeft.removeGroup(UNGROUPED); - this.legendRight.removeGroup(UNGROUPED); - this.yAxisLeft.removeGroup(UNGROUPED); - this.yAxisRight.removeGroup(UNGROUPED); - } + this.props._previousWidth = this.props.width; + this.props._previousHeight = this.props.height; - this.legendLeft.redraw(); - this.legendRight.redraw(); + return resized; }; + module.exports = Component; + + +/***/ }, +/* 24 */ +/***/ function(module, exports, __webpack_require__) { /** - * Redraw the component, mandatory function - * @return {boolean} Returns true if the component is resized + * Created by Alex on 10/3/2014. */ - LineGraph.prototype.redraw = function(forceGraphUpdate) { - var resized = false; + var moment = __webpack_require__(2); - // calculate actual size and position - this.props.width = this.dom.frame.offsetWidth; - this.props.height = this.body.domProps.centerContainer.height; - // update the graph if there is no lastWidth or with, used for the initial draw - if (this.lastWidth === undefined && this.props.width) { - forceGraphUpdate = true; + /** + * used in Core to convert the options into a volatile variable + * + * @param Core + */ + exports.convertHiddenOptions = function(body, hiddenDates) { + body.hiddenDates = []; + if (hiddenDates) { + if (Array.isArray(hiddenDates) == true) { + for (var i = 0; i < hiddenDates.length; i++) { + if (hiddenDates[i].repeat === undefined) { + var dateItem = {}; + dateItem.start = moment(hiddenDates[i].start).toDate().valueOf(); + dateItem.end = moment(hiddenDates[i].end).toDate().valueOf(); + body.hiddenDates.push(dateItem); + } + } + body.hiddenDates.sort(function (a, b) { + return a.start - b.start; + }); // sort by start time + } } + }; - // check if this component is resized - resized = this._isResized() || resized; - // check whether zoomed (in that case we need to re-stack everything) - var visibleInterval = this.body.range.end - this.body.range.start; - var zoomed = (visibleInterval != this.lastVisibleInterval); - this.lastVisibleInterval = visibleInterval; + /** + * create new entrees for the repeating hidden dates + * @param body + * @param hiddenDates + */ + exports.updateHiddenDates = function (body, hiddenDates) { + if (hiddenDates && body.domProps.centerContainer.width !== undefined) { + exports.convertHiddenOptions(body, hiddenDates); + var start = moment(body.range.start); + var end = moment(body.range.end); - // the svg element is three times as big as the width, this allows for fully dragging left and right - // without reloading the graph. the controls for this are bound to events in the constructor - if (resized == true) { - this.svg.style.width = util.option.asSize(3*this.props.width); - this.svg.style.left = util.option.asSize(-this.props.width); + var totalRange = (body.range.end - body.range.start); + var pixelTime = totalRange / body.domProps.centerContainer.width; - // if the height of the graph is set as proportional, change the height of the svg - if ((this.options.height + '').indexOf("%") != -1 || this.updateSVGheightOnResize == true) { - this.updateSVGheight = true; - } - } + for (var i = 0; i < hiddenDates.length; i++) { + if (hiddenDates[i].repeat !== undefined) { + var startDate = moment(hiddenDates[i].start); + var endDate = moment(hiddenDates[i].end); - // update the height of the graph on each redraw of the graph. - if (this.updateSVGheight == true) { - if (this.options.graphHeight != this.body.domProps.centerContainer.height + 'px') { - this.options.graphHeight = this.body.domProps.centerContainer.height + 'px'; - this.svg.style.height = this.body.domProps.centerContainer.height + 'px'; - } - this.updateSVGheight = false; - } - else { - this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; - } + if (startDate._d == "Invalid Date") { + throw new Error("Supplied start date is not valid: " + hiddenDates[i].start); + } + if (endDate._d == "Invalid Date") { + throw new Error("Supplied end date is not valid: " + hiddenDates[i].end); + } - // zoomed is here to ensure that animations are shown correctly. - if (resized == true || zoomed == true || this.abortedGraphUpdate == true || forceGraphUpdate == true) { - resized = this._updateGraph() || resized; - } - else { - // move the whole svg while dragging - if (this.lastStart != 0) { - var offset = this.body.range.start - this.lastStart; - var range = this.body.range.end - this.body.range.start; - if (this.props.width != 0) { - var rangePerPixelInv = this.props.width/range; - var xOffset = offset * rangePerPixelInv; - this.svg.style.left = (-this.props.width - xOffset) + 'px'; - } - } - } + var duration = endDate - startDate; + if (duration >= 4 * pixelTime) { - this.legendLeft.redraw(); - this.legendRight.redraw(); - return resized; - }; + var offset = 0; + var runUntil = end.clone(); + switch (hiddenDates[i].repeat) { + case "daily": // case of time + if (startDate.day() != endDate.day()) { + offset = 1; + } + startDate.dayOfYear(start.dayOfYear()); + startDate.year(start.year()); + startDate.subtract(7,'days'); + endDate.dayOfYear(start.dayOfYear()); + endDate.year(start.year()); + endDate.subtract(7 - offset,'days'); - /** - * Update and redraw the graph. - * - */ - LineGraph.prototype._updateGraph = function () { - // reset the svg elements - DOMutil.prepareElements(this.svgElements); - if (this.props.width != 0 && this.itemsData != null) { - var group, i; - var preprocessedGroupData = {}; - var processedGroupData = {}; - var groupRanges = {}; - var changeCalled = false; + runUntil.add(1, 'weeks'); + break; + case "weekly": + var dayOffset = endDate.diff(startDate,'days') + var day = startDate.day(); - // getting group Ids - var groupIds = []; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - group = this.groups[groupId]; - if (group.visible == true && (this.options.groups.visibility[groupId] === undefined || this.options.groups.visibility[groupId] == true)) { - groupIds.push(groupId); - } - } - } - if (groupIds.length > 0) { - // this is the range of the SVG canvas - var minDate = this.body.util.toGlobalTime(-this.body.domProps.root.width); - var maxDate = this.body.util.toGlobalTime(2 * this.body.domProps.root.width); - var groupsData = {}; - // fill groups data, this only loads the data we require based on the timewindow - this._getRelevantData(groupIds, groupsData, minDate, maxDate); + // set the start date to the range.start + startDate.date(start.date()); + startDate.month(start.month()); + startDate.year(start.year()); + endDate = startDate.clone(); - // apply sampling, if disabled, it will pass through this function. - this._applySampling(groupIds, groupsData); + // force + startDate.day(day); + endDate.day(day); + endDate.add(dayOffset,'days'); - // we transform the X coordinates to detect collisions - for (i = 0; i < groupIds.length; i++) { - preprocessedGroupData[groupIds[i]] = this._convertXcoordinates(groupsData[groupIds[i]]); - } + startDate.subtract(1,'weeks'); + endDate.subtract(1,'weeks'); - // now all needed data has been collected we start the processing. - this._getYRanges(groupIds, preprocessedGroupData, groupRanges); + runUntil.add(1, 'weeks'); + break + case "monthly": + if (startDate.month() != endDate.month()) { + offset = 1; + } + startDate.month(start.month()); + startDate.year(start.year()); + startDate.subtract(1,'months'); - // update the Y axis first, we use this data to draw at the correct Y points - // changeCalled is required to clean the SVG on a change emit. - changeCalled = this._updateYAxis(groupIds, groupRanges); - var MAX_CYCLES = 5; - if (changeCalled == true && this.COUNTER < MAX_CYCLES) { - DOMutil.cleanupElements(this.svgElements); - this.abortedGraphUpdate = true; - this.COUNTER++; - this.body.emitter.emit('change'); - return true; - } - else { - if (this.COUNTER > MAX_CYCLES) { - console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle.") - } - this.COUNTER = 0; - this.abortedGraphUpdate = false; + endDate.month(start.month()); + endDate.year(start.year()); + endDate.subtract(1,'months'); + endDate.add(offset,'months'); - // With the yAxis scaled correctly, use this to get the Y values of the points. - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - processedGroupData[groupIds[i]] = this._convertYcoordinates(groupsData[groupIds[i]], group); - } + runUntil.add(1, 'months'); + break; + case "yearly": + if (startDate.year() != endDate.year()) { + offset = 1; + } + startDate.year(start.year()); + startDate.subtract(1,'years'); + endDate.year(start.year()); + endDate.subtract(1,'years'); + endDate.add(offset,'years'); - // draw the groups - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - if (group.options.style != 'bar') { // bar needs to be drawn enmasse - group.draw(processedGroupData[groupIds[i]], group, this.framework); + runUntil.add(1, 'years'); + break; + default: + console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:", hiddenDates[i].repeat); + return; + } + while (startDate < runUntil) { + body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()}); + switch (hiddenDates[i].repeat) { + case "daily": + startDate.add(1, 'days'); + endDate.add(1, 'days'); + break; + case "weekly": + startDate.add(1, 'weeks'); + endDate.add(1, 'weeks'); + break + case "monthly": + startDate.add(1, 'months'); + endDate.add(1, 'months'); + break; + case "yearly": + startDate.add(1, 'y'); + endDate.add(1, 'y'); + break; + default: + console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:", hiddenDates[i].repeat); + return; + } } + body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()}); } - BarGraphFunctions.draw(groupIds, processedGroupData, this.framework); } } + // remove duplicates, merge where possible + exports.removeDuplicates(body); + // ensure the new positions are not on hidden dates + var startHidden = exports.isHidden(body.range.start, body.hiddenDates); + var endHidden = exports.isHidden(body.range.end,body.hiddenDates); + var rangeStart = body.range.start; + var rangeEnd = body.range.end; + if (startHidden.hidden == true) {rangeStart = body.range.startToFront == true ? startHidden.startDate - 1 : startHidden.endDate + 1;} + if (endHidden.hidden == true) {rangeEnd = body.range.endToFront == true ? endHidden.startDate - 1 : endHidden.endDate + 1;} + if (startHidden.hidden == true || endHidden.hidden == true) { + body.range._applyRange(rangeStart, rangeEnd); + } } - // cleanup unused svg elements - DOMutil.cleanupElements(this.svgElements); - return false; - }; + } /** - * first select and preprocess the data from the datasets. - * the groups have their preselection of data, we now loop over this data to see - * what data we need to draw. Sorted data is much faster. - * more optimization is possible by doing the sampling before and using the binary search - * to find the end date to determine the increment. - * - * @param {array} groupIds - * @param {object} groupsData - * @param {date} minDate - * @param {date} maxDate - * @private + * remove duplicates from the hidden dates list. Duplicates are evil. They mess everything up. + * Scales with N^2 + * @param body */ - LineGraph.prototype._getRelevantData = function (groupIds, groupsData, minDate, maxDate) { - var group, i, j, item; - if (groupIds.length > 0) { - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - groupsData[groupIds[i]] = []; - var dataContainer = groupsData[groupIds[i]]; - // optimization for sorted data - if (group.options.sort == true) { - var guess = Math.max(0, util.binarySearchValue(group.itemsData, minDate, 'x', 'before')); - for (j = guess; j < group.itemsData.length; j++) { - item = group.itemsData[j]; - if (item !== undefined) { - if (item.x > maxDate) { - dataContainer.push(item); - break; - } - else { - dataContainer.push(item); - } - } + exports.removeDuplicates = function(body) { + var hiddenDates = body.hiddenDates; + var safeDates = []; + for (var i = 0; i < hiddenDates.length; i++) { + for (var j = 0; j < hiddenDates.length; j++) { + if (i != j && hiddenDates[j].remove != true && hiddenDates[i].remove != true) { + // j inside i + if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) { + hiddenDates[j].remove = true; } - } - else { - for (j = 0; j < group.itemsData.length; j++) { - item = group.itemsData[j]; - if (item !== undefined) { - if (item.x > minDate && item.x < maxDate) { - dataContainer.push(item); - } - } + // j start inside i + else if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].start <= hiddenDates[i].end) { + hiddenDates[i].end = hiddenDates[j].end; + hiddenDates[j].remove = true; + } + // j end inside i + else if (hiddenDates[j].end >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) { + hiddenDates[i].start = hiddenDates[j].start; + hiddenDates[j].remove = true; } } } } - }; + for (var i = 0; i < hiddenDates.length; i++) { + if (hiddenDates[i].remove !== true) { + safeDates.push(hiddenDates[i]); + } + } + + body.hiddenDates = safeDates; + body.hiddenDates.sort(function (a, b) { + return a.start - b.start; + }); // sort by start time + } + + exports.printDates = function(dates) { + for (var i =0; i < dates.length; i++) { + console.log(i, new Date(dates[i].start),new Date(dates[i].end), dates[i].start, dates[i].end, dates[i].remove); + } + } /** - * - * @param groupIds - * @param groupsData - * @private + * Used in TimeStep to avoid the hidden times. + * @param timeStep + * @param previousTime */ - LineGraph.prototype._applySampling = function (groupIds, groupsData) { - var group; - if (groupIds.length > 0) { - for (var i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - if (group.options.sampling == true) { - var dataContainer = groupsData[groupIds[i]]; - if (dataContainer.length > 0) { - var increment = 1; - var amountOfPoints = dataContainer.length; - - // the global screen is used because changing the width of the yAxis may affect the increment, resulting in an endless loop - // of width changing of the yAxis. - var xDistance = this.body.util.toGlobalScreen(dataContainer[dataContainer.length - 1].x) - this.body.util.toGlobalScreen(dataContainer[0].x); - var pointsPerPixel = amountOfPoints / xDistance; - increment = Math.min(Math.ceil(0.2 * amountOfPoints), Math.max(1, Math.round(pointsPerPixel))); + exports.stepOverHiddenDates = function(timeStep, previousTime) { + var stepInHidden = false; + var currentValue = timeStep.current.valueOf(); + for (var i = 0; i < timeStep.hiddenDates.length; i++) { + var startDate = timeStep.hiddenDates[i].start; + var endDate = timeStep.hiddenDates[i].end; + if (currentValue >= startDate && currentValue < endDate) { + stepInHidden = true; + break; + } + } - var sampledData = []; - for (var j = 0; j < amountOfPoints; j += increment) { - sampledData.push(dataContainer[j]); + if (stepInHidden == true && currentValue < timeStep._end.valueOf() && currentValue != previousTime) { + var prevValue = moment(previousTime); + var newValue = moment(endDate); + //check if the next step should be major + if (prevValue.year() != newValue.year()) {timeStep.switchedYear = true;} + else if (prevValue.month() != newValue.month()) {timeStep.switchedMonth = true;} + else if (prevValue.dayOfYear() != newValue.dayOfYear()) {timeStep.switchedDay = true;} - } - groupsData[groupIds[i]] = sampledData; - } - } - } + timeStep.current = newValue.toDate(); } }; + ///** + // * Used in TimeStep to avoid the hidden times. + // * @param timeStep + // * @param previousTime + // */ + //exports.checkFirstStep = function(timeStep) { + // var stepInHidden = false; + // var currentValue = timeStep.current.valueOf(); + // for (var i = 0; i < timeStep.hiddenDates.length; i++) { + // var startDate = timeStep.hiddenDates[i].start; + // var endDate = timeStep.hiddenDates[i].end; + // if (currentValue >= startDate && currentValue < endDate) { + // stepInHidden = true; + // break; + // } + // } + // + // if (stepInHidden == true && currentValue <= timeStep._end.valueOf()) { + // var newValue = moment(endDate); + // timeStep.current = newValue.toDate(); + // } + //}; + /** - * - * - * @param {array} groupIds - * @param {object} groupsData - * @param {object} groupRanges | this is being filled here - * @private + * replaces the Core toScreen methods + * @param Core + * @param time + * @param width + * @returns {number} */ - LineGraph.prototype._getYRanges = function (groupIds, groupsData, groupRanges) { - var groupData, group, i; - var barCombinedDataLeft = []; - var barCombinedDataRight = []; - var options; - if (groupIds.length > 0) { - for (i = 0; i < groupIds.length; i++) { - groupData = groupsData[groupIds[i]]; - options = this.groups[groupIds[i]].options; - if (groupData.length > 0) { - group = this.groups[groupIds[i]]; - // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. - if (options.barChart.handleOverlap == 'stack' && options.style == 'bar') { - if (options.yAxisOrientation == 'left') {barCombinedDataLeft = barCombinedDataLeft.concat(group.getYRange(groupData)) ;} - else {barCombinedDataRight = barCombinedDataRight.concat(group.getYRange(groupData));} - } - else { - groupRanges[groupIds[i]] = group.getYRange(groupData,groupIds[i]); - } - } + exports.toScreen = function(Core, time, width) { + if (Core.body.hiddenDates.length == 0) { + var conversion = Core.range.conversion(width); + return (time.valueOf() - conversion.offset) * conversion.scale; + } + else { + var hidden = exports.isHidden(time, Core.body.hiddenDates) + if (hidden.hidden == true) { + time = hidden.startDate; } - // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. - BarGraphFunctions.getStackedBarYRange(barCombinedDataLeft , groupRanges, groupIds, '__barchartLeft' , 'left' ); - BarGraphFunctions.getStackedBarYRange(barCombinedDataRight, groupRanges, groupIds, '__barchartRight', 'right'); + var duration = exports.getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end); + time = exports.correctTimeForHidden(Core.body.hiddenDates, Core.range, time); + + var conversion = Core.range.conversion(width, duration); + return (time.valueOf() - conversion.offset) * conversion.scale; } }; /** - * this sets the Y ranges for the Y axis. It also determines which of the axis should be shown or hidden. - * @param {Array} groupIds - * @param {Object} groupRanges - * @private + * Replaces the core toTime methods + * @param body + * @param range + * @param x + * @param width + * @returns {Date} */ - LineGraph.prototype._updateYAxis = function (groupIds, groupRanges) { - var resized = false; - var yAxisLeftUsed = false; - var yAxisRightUsed = false; - var minLeft = 1e9, minRight = 1e9, maxLeft = -1e9, maxRight = -1e9, minVal, maxVal; - // if groups are present - if (groupIds.length > 0) { - // this is here to make sure that if there are no items in the axis but there are groups, that there is no infinite draw/redraw loop. - for (var i = 0; i < groupIds.length; i++) { - var group = this.groups[groupIds[i]]; - if (group && group.options.yAxisOrientation != 'right') { - yAxisLeftUsed = true; - minLeft = 0; - maxLeft = 0; - } - else if (group && group.options.yAxisOrientation) { - yAxisRightUsed = true; - minRight = 0; - maxRight = 0; - } - } + exports.toTime = function(Core, x, width) { + if (Core.body.hiddenDates.length == 0) { + var conversion = Core.range.conversion(width); + return new Date(x / conversion.scale + conversion.offset); + } + else { + var hiddenDuration = exports.getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end); + var totalDuration = Core.range.end - Core.range.start - hiddenDuration; + var partialDuration = totalDuration * x / width; + var accumulatedHiddenDuration = exports.getAccumulatedHiddenDuration(Core.body.hiddenDates, Core.range, partialDuration); - // if there are items: - for (var i = 0; i < groupIds.length; i++) { - if (groupRanges.hasOwnProperty(groupIds[i])) { - if (groupRanges[groupIds[i]].ignore !== true) { - minVal = groupRanges[groupIds[i]].min; - maxVal = groupRanges[groupIds[i]].max; + var newTime = new Date(accumulatedHiddenDuration + partialDuration + Core.range.start); + return newTime; + } + }; - if (groupRanges[groupIds[i]].yAxisOrientation != 'right') { - yAxisLeftUsed = true; - minLeft = minLeft > minVal ? minVal : minLeft; - maxLeft = maxLeft < maxVal ? maxVal : maxLeft; - } - else { - yAxisRightUsed = true; - minRight = minRight > minVal ? minVal : minRight; - maxRight = maxRight < maxVal ? maxVal : maxRight; - } - } - } - } - if (yAxisLeftUsed == true) { - this.yAxisLeft.setRange(minLeft, maxLeft); - } - if (yAxisRightUsed == true) { - this.yAxisRight.setRange(minRight, maxRight); + /** + * Support function + * + * @param hiddenDates + * @param range + * @returns {number} + */ + exports.getHiddenDurationBetween = function(hiddenDates, start, end) { + var duration = 0; + for (var i = 0; i < hiddenDates.length; i++) { + var startDate = hiddenDates[i].start; + var endDate = hiddenDates[i].end; + // if time after the cutout, and the + if (startDate >= start && endDate < end) { + duration += endDate - startDate; } } - resized = this._toggleAxisVisiblity(yAxisLeftUsed , this.yAxisLeft) || resized; - resized = this._toggleAxisVisiblity(yAxisRightUsed, this.yAxisRight) || resized; + return duration; + }; - if (yAxisRightUsed == true && yAxisLeftUsed == true) { - this.yAxisLeft.drawIcons = true; - this.yAxisRight.drawIcons = true; - } - else { - this.yAxisLeft.drawIcons = false; - this.yAxisRight.drawIcons = false; - } - this.yAxisRight.master = !yAxisLeftUsed; - if (this.yAxisRight.master == false) { - if (yAxisRightUsed == true) {this.yAxisLeft.lineOffset = this.yAxisRight.width;} - else {this.yAxisLeft.lineOffset = 0;} - resized = this.yAxisLeft.redraw() || resized; - this.yAxisRight.stepPixelsForced = this.yAxisLeft.stepPixels; - this.yAxisRight.zeroCrossing = this.yAxisLeft.zeroCrossing; - resized = this.yAxisRight.redraw() || resized; - } - else { - resized = this.yAxisRight.redraw() || resized; - } + /** + * Support function + * @param hiddenDates + * @param range + * @param time + * @returns {{duration: number, time: *, offset: number}} + */ + exports.correctTimeForHidden = function(hiddenDates, range, time) { + time = moment(time).toDate().valueOf(); + time -= exports.getHiddenDurationBefore(hiddenDates,range,time); + return time; + }; - // clean the accumulated lists - if (groupIds.indexOf('__barchartLeft') != -1) { - groupIds.splice(groupIds.indexOf('__barchartLeft'),1); + exports.getHiddenDurationBefore = function(hiddenDates, range, time) { + var timeOffset = 0; + time = moment(time).toDate().valueOf(); + + for (var i = 0; i < hiddenDates.length; i++) { + var startDate = hiddenDates[i].start; + var endDate = hiddenDates[i].end; + // if time after the cutout, and the + if (startDate >= range.start && endDate < range.end) { + if (time >= endDate) { + timeOffset += (endDate - startDate); + } + } } - if (groupIds.indexOf('__barchartRight') != -1) { - groupIds.splice(groupIds.indexOf('__barchartRight'),1); + return timeOffset; + } + + /** + * sum the duration from start to finish, including the hidden duration, + * until the required amount has been reached, return the accumulated hidden duration + * @param hiddenDates + * @param range + * @param time + * @returns {{duration: number, time: *, offset: number}} + */ + exports.getAccumulatedHiddenDuration = function(hiddenDates, range, requiredDuration) { + var hiddenDuration = 0; + var duration = 0; + var previousPoint = range.start; + //exports.printDates(hiddenDates) + for (var i = 0; i < hiddenDates.length; i++) { + var startDate = hiddenDates[i].start; + var endDate = hiddenDates[i].end; + // if time after the cutout, and the + if (startDate >= range.start && endDate < range.end) { + duration += startDate - previousPoint; + previousPoint = endDate; + if (duration >= requiredDuration) { + break; + } + else { + hiddenDuration += endDate - startDate; + } + } } - return resized; + return hiddenDuration; }; + /** - * This shows or hides the Y axis if needed. If there is a change, the changed event is emitted by the updateYAxis function - * - * @param {boolean} axisUsed - * @returns {boolean} - * @private - * @param axis + * used to step over to either side of a hidden block. Correction is disabled on tablets, might be set to true + * @param hiddenDates + * @param time + * @param direction + * @param correctionEnabled + * @returns {*} */ - LineGraph.prototype._toggleAxisVisiblity = function (axisUsed, axis) { - var changed = false; - if (axisUsed == false) { - if (axis.dom.frame.parentNode && axis.hidden == false) { - axis.hide() - changed = true; + exports.snapAwayFromHidden = function(hiddenDates, time, direction, correctionEnabled) { + var isHidden = exports.isHidden(time, hiddenDates); + if (isHidden.hidden == true) { + if (direction < 0) { + if (correctionEnabled == true) { + return isHidden.startDate - (isHidden.endDate - time) - 1; + } + else { + return isHidden.startDate - 1; + } + } + else { + if (correctionEnabled == true) { + return isHidden.endDate + (time - isHidden.startDate) + 1; + } + else { + return isHidden.endDate + 1; + } } } else { - if (!axis.dom.frame.parentNode && axis.hidden == true) { - axis.show(); - changed = true; - } + return time; } - return changed; - }; + + } /** - * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the - * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for - * the yAxis. + * Check if a time is hidden * - * @param datapoints - * @returns {Array} - * @private + * @param time + * @param hiddenDates + * @returns {{hidden: boolean, startDate: Window.start, endDate: *}} */ - LineGraph.prototype._convertXcoordinates = function (datapoints) { - var extractedData = []; - var xValue, yValue; - var toScreen = this.body.util.toScreen; + exports.isHidden = function(time, hiddenDates) { + for (var i = 0; i < hiddenDates.length; i++) { + var startDate = hiddenDates[i].start; + var endDate = hiddenDates[i].end; - for (var i = 0; i < datapoints.length; i++) { - xValue = toScreen(datapoints[i].x) + this.props.width; - yValue = datapoints[i].y; - extractedData.push({x: xValue, y: yValue}); + if (time >= startDate && time < endDate) { // if the start is entering a hidden zone + return {hidden: true, startDate: startDate, endDate: endDate}; + break; + } } + return {hidden: false, startDate: startDate, endDate: endDate}; + } - return extractedData; - }; +/***/ }, +/* 25 */ +/***/ function(module, exports, __webpack_require__) { + var Emitter = __webpack_require__(11); + var Hammer = __webpack_require__(19); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(7); + var DataView = __webpack_require__(9); + var Range = __webpack_require__(21); + var ItemSet = __webpack_require__(26); + var TimeAxis = __webpack_require__(35); + var Activator = __webpack_require__(36); + var DateUtil = __webpack_require__(24); + var CustomTime = __webpack_require__(38); /** - * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the - * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for - * the yAxis. - * - * @param datapoints - * @param group - * @returns {Array} - * @private + * Create a timeline visualization + * @param {HTMLElement} container + * @param {vis.DataSet | Array | google.visualization.DataTable} [items] + * @param {Object} [options] See Core.setOptions for the available options. + * @constructor */ - LineGraph.prototype._convertYcoordinates = function (datapoints, group) { - var extractedData = []; - var xValue, yValue; - var toScreen = this.body.util.toScreen; - var axis = this.yAxisLeft; - var svgHeight = Number(this.svg.style.height.replace('px','')); - if (group.options.yAxisOrientation == 'right') { - axis = this.yAxisRight; - } + function Core () {} - for (var i = 0; i < datapoints.length; i++) { - var labelValue; - //if (datapoints[i].label) { - // labelValue = datapoints[i].label; - //} - //else { - // labelValue = null; - //} - labelValue = datapoints[i].label ? datapoints[i].label : null; - xValue = toScreen(datapoints[i].x) + this.props.width; - yValue = Math.round(axis.convertValue(datapoints[i].y)); - extractedData.push({x: xValue, y: yValue, label:labelValue}); - } + // turn Core into an event emitter + Emitter(Core.prototype); - group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0))); + /** + * Create the main DOM for the Core: a root panel containing left, right, + * top, bottom, content, and background panel. + * @param {Element} container The container element where the Core will + * be attached. + * @private + */ + Core.prototype._create = function (container) { + this.dom = {}; - return extractedData; - }; + this.dom.root = document.createElement('div'); + this.dom.background = document.createElement('div'); + this.dom.backgroundVertical = document.createElement('div'); + this.dom.backgroundHorizontal = document.createElement('div'); + this.dom.centerContainer = document.createElement('div'); + this.dom.leftContainer = document.createElement('div'); + this.dom.rightContainer = document.createElement('div'); + this.dom.center = document.createElement('div'); + this.dom.left = document.createElement('div'); + this.dom.right = document.createElement('div'); + this.dom.top = document.createElement('div'); + this.dom.bottom = document.createElement('div'); + this.dom.shadowTop = document.createElement('div'); + this.dom.shadowBottom = document.createElement('div'); + this.dom.shadowTopLeft = document.createElement('div'); + this.dom.shadowBottomLeft = document.createElement('div'); + this.dom.shadowTopRight = document.createElement('div'); + this.dom.shadowBottomRight = document.createElement('div'); + this.dom.root.className = 'vis timeline root'; + this.dom.background.className = 'vispanel background'; + this.dom.backgroundVertical.className = 'vispanel background vertical'; + this.dom.backgroundHorizontal.className = 'vispanel background horizontal'; + this.dom.centerContainer.className = 'vispanel center'; + this.dom.leftContainer.className = 'vispanel left'; + this.dom.rightContainer.className = 'vispanel right'; + this.dom.top.className = 'vispanel top'; + this.dom.bottom.className = 'vispanel bottom'; + this.dom.left.className = 'content'; + this.dom.center.className = 'content'; + this.dom.right.className = 'content'; + this.dom.shadowTop.className = 'shadow top'; + this.dom.shadowBottom.className = 'shadow bottom'; + this.dom.shadowTopLeft.className = 'shadow top'; + this.dom.shadowBottomLeft.className = 'shadow bottom'; + this.dom.shadowTopRight.className = 'shadow top'; + this.dom.shadowBottomRight.className = 'shadow bottom'; - module.exports = LineGraph; + this.dom.root.appendChild(this.dom.background); + this.dom.root.appendChild(this.dom.backgroundVertical); + this.dom.root.appendChild(this.dom.backgroundHorizontal); + this.dom.root.appendChild(this.dom.centerContainer); + this.dom.root.appendChild(this.dom.leftContainer); + this.dom.root.appendChild(this.dom.rightContainer); + this.dom.root.appendChild(this.dom.top); + this.dom.root.appendChild(this.dom.bottom); + this.dom.centerContainer.appendChild(this.dom.center); + this.dom.leftContainer.appendChild(this.dom.left); + this.dom.rightContainer.appendChild(this.dom.right); -/***/ }, -/* 35 */ -/***/ function(module, exports, __webpack_require__) { + this.dom.centerContainer.appendChild(this.dom.shadowTop); + this.dom.centerContainer.appendChild(this.dom.shadowBottom); + this.dom.leftContainer.appendChild(this.dom.shadowTopLeft); + this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft); + this.dom.rightContainer.appendChild(this.dom.shadowTopRight); + this.dom.rightContainer.appendChild(this.dom.shadowBottomRight); - var util = __webpack_require__(1); - var Component = __webpack_require__(25); - var TimeStep = __webpack_require__(19); - var DateUtil = __webpack_require__(15); - var moment = __webpack_require__(44); + this.on('rangechange', this._redraw.bind(this)); + this.on('touch', this._onTouch.bind(this)); + this.on('pinch', this._onPinch.bind(this)); + this.on('dragstart', this._onDragStart.bind(this)); + this.on('drag', this._onDrag.bind(this)); - /** - * A horizontal time axis - * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body - * @param {Object} [options] See TimeAxis.setOptions for the available - * options. - * @constructor TimeAxis - * @extends Component - */ - function TimeAxis (body, options) { - this.dom = { - foreground: null, - lines: [], - majorTexts: [], - minorTexts: [], - redundant: { - lines: [], - majorTexts: [], - minorTexts: [] + var me = this; + this.on('change', function (properties) { + if (properties && properties.queue == true) { + // redraw once on next tick + if (!me._redrawTimer) { + me._redrawTimer = setTimeout(function () { + me._redrawTimer = null; + me._redraw(); + }, 0) + } } - }; - this.props = { - range: { - start: 0, - end: 0, - minimumStep: 0 - }, - lineTop: 0 - }; + else { + // redraw immediately + me._redraw(); + } + }); - this.defaultOptions = { - orientation: 'bottom', // supported: 'top', 'bottom' - // TODO: implement timeaxis orientations 'left' and 'right' - showMinorLabels: true, - showMajorLabels: true, - format: null, - timeAxis: null - }; - this.options = util.extend({}, this.defaultOptions); + // create event listeners for all interesting events, these events will be + // emitted via emitter + this.hammer = Hammer(this.dom.root, { + preventDefault: true + }); + this.listeners = {}; - this.body = body; + var events = [ + 'touch', 'pinch', + 'tap', 'doubletap', 'hold', + 'dragstart', 'drag', 'dragend', + 'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox + ]; + events.forEach(function (event) { + var listener = function () { + var args = [event].concat(Array.prototype.slice.call(arguments, 0)); + if (me.isActive()) { + me.emit.apply(me, args); + } + }; + me.hammer.on(event, listener); + me.listeners[event] = listener; + }); - // create the HTML DOM - this._create(); + // size properties of each of the panels + this.props = { + root: {}, + background: {}, + centerContainer: {}, + leftContainer: {}, + rightContainer: {}, + center: {}, + left: {}, + right: {}, + top: {}, + bottom: {}, + border: {}, + scrollTop: 0, + scrollTopMin: 0 + }; + this.touch = {}; // store state information needed for touch events - this.setOptions(options); - } + this.redrawCount = 0; - TimeAxis.prototype = new Component(); + // attach the root panel to the provided container + if (!container) throw new Error('No container provided'); + container.appendChild(this.dom.root); + }; /** - * Set options for the TimeAxis. - * Parameters will be merged in current options. - * @param {Object} options Available options: - * {string} [orientation] - * {boolean} [showMinorLabels] - * {boolean} [showMajorLabels] + * Set options. Options will be passed to all components loaded in the Timeline. + * @param {Object} [options] + * {String} orientation + * Vertical orientation for the Timeline, + * can be 'bottom' (default) or 'top'. + * {String | Number} width + * Width for the timeline, a number in pixels or + * a css string like '1000px' or '75%'. '100%' by default. + * {String | Number} height + * Fixed height for the Timeline, a number in pixels or + * a css string like '400px' or '75%'. If undefined, + * The Timeline will automatically size such that + * its contents fit. + * {String | Number} minHeight + * Minimum height for the Timeline, a number in pixels or + * a css string like '400px' or '75%'. + * {String | Number} maxHeight + * Maximum height for the Timeline, a number in pixels or + * a css string like '400px' or '75%'. + * {Number | Date | String} start + * Start date for the visible window + * {Number | Date | String} end + * End date for the visible window */ - TimeAxis.prototype.setOptions = function(options) { + Core.prototype.setOptions = function (options) { if (options) { - // copy all options that we know - util.selectiveExtend([ - 'orientation', - 'showMinorLabels', - 'showMajorLabels', - 'hiddenDates', - 'format', - 'timeAxis' - ], this.options, options); + // copy the known options + var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'orientation', 'clickToUse', 'dataAttributes', 'hiddenDates']; + util.selectiveExtend(fields, this.options, options); - // apply locale to moment.js - // TODO: not so nice, this is applied globally to moment.js - if ('locale' in options) { - if (typeof moment.locale === 'function') { - // moment.js 2.8.1+ - moment.locale(options.locale); + if (this.options.orientation === 'both') { + if (!this.timeAxis2) { + var timeAxis2 = this.timeAxis2 = new TimeAxis(this.body); + timeAxis2.setOptions = function (options) { + var _options = options ? util.extend({}, options) : {}; + _options.orientation = 'top'; // override the orientation option, always top + TimeAxis.prototype.setOptions.call(timeAxis2, _options); + }; + this.components.push(timeAxis2); + } + } + else { + if (this.timeAxis2) { + var index = this.components.indexOf(this.timeAxis2); + if (index !== -1) { + this.components.splice(index, 1); + } + this.timeAxis2.destroy(); + this.timeAxis2 = null; + } + } + + if ('hiddenDates' in this.options) { + DateUtil.convertHiddenOptions(this.body, this.options.hiddenDates); + } + + if ('clickToUse' in options) { + if (options.clickToUse) { + if (!this.activator) { + this.activator = new Activator(this.dom.root); + } } else { - moment.lang(options.locale); + if (this.activator) { + this.activator.destroy(); + delete this.activator; + } } } + + // enable/disable autoResize + this._initAutoResize(); } - }; - /** - * Create the HTML DOM for the TimeAxis - */ - TimeAxis.prototype._create = function() { - this.dom.foreground = document.createElement('div'); - this.dom.background = document.createElement('div'); + // propagate options to all components + this.components.forEach(function (component) { + component.setOptions(options); + }); - this.dom.foreground.className = 'timeaxis foreground'; - this.dom.background.className = 'timeaxis background'; + // redraw everything + this._redraw(); }; /** - * Destroy the TimeAxis + * Returns true when the Timeline is active. + * @returns {boolean} */ - TimeAxis.prototype.destroy = function() { - // remove from DOM - if (this.dom.foreground.parentNode) { - this.dom.foreground.parentNode.removeChild(this.dom.foreground); - } - if (this.dom.background.parentNode) { - this.dom.background.parentNode.removeChild(this.dom.background); - } - - this.body = null; + Core.prototype.isActive = function () { + return !this.activator || this.activator.active; }; /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * Destroy the Core, clean up all DOM elements and event listeners. */ - TimeAxis.prototype.redraw = function () { - var options = this.options; - var props = this.props; - var foreground = this.dom.foreground; - var background = this.dom.background; + Core.prototype.destroy = function () { + // unbind datasets + this.clear(); - // determine the correct parent DOM element (depending on option orientation) - var parent = (options.orientation == 'top') ? this.body.dom.top : this.body.dom.bottom; - var parentChanged = (foreground.parentNode !== parent); + // remove all event listeners + this.off(); - // calculate character width and height - this._calculateCharSize(); + // stop checking for changed size + this._stopAutoResize(); - // TODO: recalculate sizes only needed when parent is resized or options is changed - var orientation = this.options.orientation, - showMinorLabels = this.options.showMinorLabels, - showMajorLabels = this.options.showMajorLabels; + // remove from DOM + if (this.dom.root.parentNode) { + this.dom.root.parentNode.removeChild(this.dom.root); + } + this.dom = null; - // determine the width and height of the elemens for the axis - props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; - props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; - props.height = props.minorLabelHeight + props.majorLabelHeight; - props.width = foreground.offsetWidth; + // remove Activator + if (this.activator) { + this.activator.destroy(); + delete this.activator; + } - props.minorLineHeight = this.body.domProps.root.height - props.majorLabelHeight - - (options.orientation == 'top' ? this.body.domProps.bottom.height : this.body.domProps.top.height); - props.minorLineWidth = 1; // TODO: really calculate width - props.majorLineHeight = props.minorLineHeight + props.majorLabelHeight; - props.majorLineWidth = 1; // TODO: really calculate width + // cleanup hammer touch events + for (var event in this.listeners) { + if (this.listeners.hasOwnProperty(event)) { + delete this.listeners[event]; + } + } + this.listeners = null; + this.hammer = null; - // take foreground and background offline while updating (is almost twice as fast) - var foregroundNextSibling = foreground.nextSibling; - var backgroundNextSibling = background.nextSibling; - foreground.parentNode && foreground.parentNode.removeChild(foreground); - background.parentNode && background.parentNode.removeChild(background); + // give all components the opportunity to cleanup + this.components.forEach(function (component) { + component.destroy(); + }); - foreground.style.height = this.props.height + 'px'; + this.body = null; + }; - this._repaintLabels(); - // put DOM online again (at the same place) - if (foregroundNextSibling) { - parent.insertBefore(foreground, foregroundNextSibling); - } - else { - parent.appendChild(foreground) - } - if (backgroundNextSibling) { - this.body.dom.backgroundVertical.insertBefore(background, backgroundNextSibling); - } - else { - this.body.dom.backgroundVertical.appendChild(background) + /** + * Set a custom time bar + * @param {Date} time + * @param {int} id + */ + Core.prototype.setCustomTime = function (time, id) { + if (!this.customTime) { + throw new Error('Cannot get custom time: Custom time bar is not enabled'); } - return this._isResized() || parentChanged; + var barId = id || 0; + + this.components.forEach(function (element, index, components) { + if (element instanceof CustomTime && element.options.id === barId) { + element.setCustomTime(time); + } + }); }; /** - * Repaint major and minor text labels and vertical grid lines - * @private + * Retrieve the current custom time. + * @return {Date} customTime + * @param {int} id */ - TimeAxis.prototype._repaintLabels = function () { - var orientation = this.options.orientation; + Core.prototype.getCustomTime = function(id) { + if (!this.customTime) { + throw new Error('Cannot get custom time: Custom time bar is not enabled'); + } - // calculate range and step (step such that we have space for 7 characters per label) - var start = util.convert(this.body.range.start, 'Number'); - var end = util.convert(this.body.range.end, 'Number'); - var timeLabelsize = this.body.util.toTime((this.props.minorCharWidth || 10) * 7).valueOf(); - var minimumStep = timeLabelsize - DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this.body.range, timeLabelsize); - minimumStep -= this.body.util.toTime(0).valueOf(); + var barId = id || 0, + customTime = this.customTime.getCustomTime(); - var step = new TimeStep(new Date(start), new Date(end), minimumStep, this.body.hiddenDates); - if (this.options.format) { - step.setFormat(this.options.format); - } - if (this.options.timeAxis) { - step.setScale(this.options.timeAxis); + this.components.forEach(function (element, index, components) { + if (element instanceof CustomTime && element.options.id === barId) { + customTime = element.getCustomTime(); + } + }); + + return customTime; + }; + + /** + * Add custom vertical bar + * @param {Date | String | Number} time A Date, unix timestamp, or + * ISO date string. Time point where the new bar should be placed + * @param {Number | String} ID of the new bar + * @return {Number | String} ID of the new bar + */ + Core.prototype.addCustomTime = function (time, id) { + if (!this.currentTime) { + throw new Error('Option showCurrentTime must be true'); } - this.step = step; - // Move all DOM elements to a "redundant" list, where they - // can be picked for re-use, and clear the lists with lines and texts. - // At the end of the function _repaintLabels, left over elements will be cleaned up - var dom = this.dom; - dom.redundant.lines = dom.lines; - dom.redundant.majorTexts = dom.majorTexts; - dom.redundant.minorTexts = dom.minorTexts; - dom.lines = []; - dom.majorTexts = []; - dom.minorTexts = []; + if (time === undefined) { + throw new Error('Time parameter for the custom bar must be provided'); + } - var cur; - var x = 0; - var isMajor; - var xPrev = 0; - var width = 0; - var prevLine; - var xFirstMajorLabel = undefined; - var max = 0; - var className; + var ts = util.convert(time, 'Date').valueOf(), + numIds, customTime, customBarId; - step.first(); - while (step.hasNext() && max < 1000) { - max++; + // All bar IDs are kept in 1 array, mixed types + // Bar with ID 0 is the default bar. + if (!this.customBarIds || this.customBarIds.constructor !== Array) { + this.customBarIds = [0]; + } - cur = step.getCurrent(); - isMajor = step.isMajor(); - className = step.getClassName(); + // If the ID is not provided, generate one, otherwise just use it + if (id === undefined) { - xPrev = x; - x = this.body.util.toScreen(cur); - width = x - xPrev; - if (prevLine) { - prevLine.style.width = width + 'px'; - } + numIds = this.customBarIds.filter(function (element) { + return util.isNumber(element); + }); - if (this.options.showMinorLabels) { - this._repaintMinorText(x, step.getLabelMinor(), orientation, className); - } + customBarId = numIds.length > 0 ? Math.max.apply(null, numIds) + 1 : 1; - if (isMajor && this.options.showMajorLabels) { - if (x > 0) { - if (xFirstMajorLabel == undefined) { - xFirstMajorLabel = x; - } - this._repaintMajorText(x, step.getLabelMajor(), orientation, className); - } - prevLine = this._repaintMajorLine(x, orientation, className); - } - else { - prevLine = this._repaintMinorLine(x, orientation, className); - } + } else { + + // Check for duplicates + this.customBarIds.forEach(function (element) { + if (element === id) { + throw new Error('Custom time ID already exists'); + } + }); - step.next(); + customBarId = id; } - // create a major label on the left when needed - if (this.options.showMajorLabels) { - var leftTime = this.body.util.toTime(0), - leftText = step.getLabelMajor(leftTime), - widthText = leftText.length * (this.props.majorCharWidth || 10) + 10; // upper bound estimation - - if (xFirstMajorLabel == undefined || widthText < xFirstMajorLabel) { - this._repaintMajorText(0, leftText, orientation, className); - } - } + this.customBarIds.push(customBarId); - // Cleanup leftover DOM elements from the redundant list - util.forEach(this.dom.redundant, function (arr) { - while (arr.length) { - var elem = arr.pop(); - if (elem && elem.parentNode) { - elem.parentNode.removeChild(elem); - } - } + customTime = new CustomTime(this.body, { + showCustomTime : true, + time : ts, + id : customBarId }); + + this.components.push(customTime); + this.redraw(); + + return customBarId; }; /** - * Create a minor label for the axis at position x - * @param {Number} x - * @param {String} text - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className - * @private + * Remove previously added custom bar + * @param {int} id ID of the custom bar to be removed + * @return {boolean} True if the bar exists and is removed, false otherwise */ - TimeAxis.prototype._repaintMinorText = function (x, text, orientation, className) { - // reuse redundant label - var label = this.dom.redundant.minorTexts.shift(); - - if (!label) { - // create new label - var content = document.createTextNode(''); - label = document.createElement('div'); - label.appendChild(content); - this.dom.foreground.appendChild(label); - } - this.dom.minorTexts.push(label); + Core.prototype.removeCustomTime = function (id) { - label.childNodes[0].nodeValue = text; + var me = this; - label.style.top = (orientation == 'top') ? (this.props.majorLabelHeight + 'px') : '0'; - label.style.left = x + 'px'; - label.className = 'text minor ' + className; - //label.title = title; // TODO: this is a heavy operation + this.components.forEach(function (bar, index, components) { + if (bar instanceof CustomTime && bar.options.id === id) { + // Only the lines added by the user will be removed + if (bar.options.id !== 0) { + me.customBarIds.splice(me.customBarIds.indexOf(id), 1); + components.splice(index, 1); + bar.destroy(); + } + } + }); }; + /** - * Create a Major label for the axis at position x - * @param {Number} x - * @param {String} text - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className - * @private + * Get the id's of the currently visible items. + * @returns {Array} The ids of the visible items */ - TimeAxis.prototype._repaintMajorText = function (x, text, orientation, className) { - // reuse redundant label - var label = this.dom.redundant.majorTexts.shift(); - - if (!label) { - // create label - var content = document.createTextNode(text); - label = document.createElement('div'); - label.appendChild(content); - this.dom.foreground.appendChild(label); - } - this.dom.majorTexts.push(label); + Core.prototype.getVisibleItems = function() { + return this.itemSet && this.itemSet.getVisibleItems() || []; + }; - label.childNodes[0].nodeValue = text; - label.className = 'text major ' + className; - //label.title = title; // TODO: this is a heavy operation - label.style.top = (orientation == 'top') ? '0' : (this.props.minorLabelHeight + 'px'); - label.style.left = x + 'px'; - }; /** - * Create a minor line for the axis at position x - * @param {Number} x - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className - * @return {Element} Returns the created line - * @private + * Clear the Core. By Default, items, groups and options are cleared. + * Example usage: + * + * timeline.clear(); // clear items, groups, and options + * timeline.clear({options: true}); // clear options only + * + * @param {Object} [what] Optionally specify what to clear. By default: + * {items: true, groups: true, options: true} */ - TimeAxis.prototype._repaintMinorLine = function (x, orientation, className) { - // reuse redundant line - var line = this.dom.redundant.lines.shift(); - if (!line) { - // create vertical line - line = document.createElement('div'); - this.dom.background.appendChild(line); + Core.prototype.clear = function(what) { + // clear items + if (!what || what.items) { + this.setItems(null); } - this.dom.lines.push(line); - var props = this.props; - if (orientation == 'top') { - line.style.top = props.majorLabelHeight + 'px'; - } - else { - line.style.top = this.body.domProps.top.height + 'px'; + // clear groups + if (!what || what.groups) { + this.setGroups(null); } - line.style.height = props.minorLineHeight + 'px'; - line.style.left = (x - props.minorLineWidth / 2) + 'px'; - line.className = 'grid vertical minor ' + className; + // clear options of timeline and of each of the components + if (!what || what.options) { + this.components.forEach(function (component) { + component.setOptions(component.defaultOptions); + }); - return line; + this.setOptions(this.defaultOptions); // this will also do a redraw + } }; /** - * Create a Major line for the axis at position x - * @param {Number} x - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className - * @return {Element} Returns the created line - * @private + * Set Core window such that it fits all items + * @param {Object} [options] Available options: + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. */ - TimeAxis.prototype._repaintMajorLine = function (x, orientation, className) { - // reuse redundant line - var line = this.dom.redundant.lines.shift(); - if (!line) { - // create vertical line - line = document.createElement('div'); - this.dom.background.appendChild(line); - } - this.dom.lines.push(line); + Core.prototype.fit = function(options) { + var range = this._getDataRange(); - var props = this.props; - if (orientation == 'top') { - line.style.top = '0'; - } - else { - line.style.top = this.body.domProps.top.height + 'px'; + // skip range set if there is no start and end date + if (range.start === null && range.end === null) { + return; } - line.style.left = (x - props.majorLineWidth / 2) + 'px'; - line.style.height = props.majorLineHeight + 'px'; - line.className = 'grid vertical major ' + className; - - return line; + var animate = (options && options.animate !== undefined) ? options.animate : true; + this.range.setRange(range.start, range.end, animate); }; /** - * Determine the size of text on the axis (both major and minor axis). - * The size is calculated only once and then cached in this.props. - * @private + * Calculate the data range of the items and applies a 5% window around it. + * @returns {{start: Date | null, end: Date | null}} + * @protected */ - TimeAxis.prototype._calculateCharSize = function () { - // Note: We calculate char size with every redraw. Size may change, for - // example when any of the timelines parents had display:none for example. - - // determine the char width and height on the minor axis - if (!this.dom.measureCharMinor) { - this.dom.measureCharMinor = document.createElement('DIV'); - this.dom.measureCharMinor.className = 'text minor measure'; - this.dom.measureCharMinor.style.position = 'absolute'; + Core.prototype._getDataRange = function() { + // apply the data range as range + var dataRange = this.getItemRange(); - this.dom.measureCharMinor.appendChild(document.createTextNode('0')); - this.dom.foreground.appendChild(this.dom.measureCharMinor); + // add 5% space on both sides + var start = dataRange.min; + var end = dataRange.max; + if (start != null && end != null) { + var interval = (end.valueOf() - start.valueOf()); + if (interval <= 0) { + // prevent an empty interval + interval = 24 * 60 * 60 * 1000; // 1 day + } + start = new Date(start.valueOf() - interval * 0.05); + end = new Date(end.valueOf() + interval * 0.05); } - this.props.minorCharHeight = this.dom.measureCharMinor.clientHeight; - this.props.minorCharWidth = this.dom.measureCharMinor.clientWidth; - - // determine the char width and height on the major axis - if (!this.dom.measureCharMajor) { - this.dom.measureCharMajor = document.createElement('DIV'); - this.dom.measureCharMajor.className = 'text major measure'; - this.dom.measureCharMajor.style.position = 'absolute'; - this.dom.measureCharMajor.appendChild(document.createTextNode('0')); - this.dom.foreground.appendChild(this.dom.measureCharMajor); + return { + start: start, + end: end } - this.props.majorCharHeight = this.dom.measureCharMajor.clientHeight; - this.props.majorCharWidth = this.dom.measureCharMajor.clientWidth; }; - module.exports = TimeAxis; - - -/***/ }, -/* 36 */ -/***/ function(module, exports, __webpack_require__) { - - var Emitter = __webpack_require__(56); - var Hammer = __webpack_require__(45); - var keycharm = __webpack_require__(57); - var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(47); - var DataSet = __webpack_require__(3); - var DataView = __webpack_require__(4); - var dotparser = __webpack_require__(42); - var gephiParser = __webpack_require__(43); - var Groups = __webpack_require__(38); - var Images = __webpack_require__(39); - var Node = __webpack_require__(40); - var Edge = __webpack_require__(37); - var Popup = __webpack_require__(41); - var MixinLoader = __webpack_require__(52); - var Activator = __webpack_require__(53); - var locales = __webpack_require__(54); - - // Load custom shapes into CanvasRenderingContext2D - __webpack_require__(55); - /** - * @constructor Network - * Create a network visualization, displaying nodes and edges. + * Set the visible window. Both parameters are optional, you can change only + * start or only end. Syntax: * - * @param {Element} container The DOM element in which the Network will - * be created. Normally a div element. - * @param {Object} data An object containing parameters - * {Array} nodes - * {Array} edges - * @param {Object} options Options + * TimeLine.setWindow(start, end) + * TimeLine.setWindow(start, end, options) + * TimeLine.setWindow(range) + * + * Where start and end can be a Date, number, or string, and range is an + * object with properties start and end. + * + * @param {Date | Number | String | Object} [start] Start date of visible window + * @param {Date | Number | String} [end] End date of visible window + * @param {Object} [options] Available options: + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. */ - function Network (container, data, options) { - if (!(this instanceof Network)) { - throw new SyntaxError('Constructor must be called with the new operator'); + Core.prototype.setWindow = function(start, end, options) { + var animate; + if (arguments.length == 1) { + var range = arguments[0]; + animate = (range.animate !== undefined) ? range.animate : true; + this.range.setRange(range.start, range.end, animate); } + else { + animate = (options && options.animate !== undefined) ? options.animate : true; + this.range.setRange(start, end, animate); + } + }; - this._determineBrowserMethod(); - this._initializeMixinLoaders(); - - // create variables and set default values - this.containerElement = container; - - // render and calculation settings - this.renderRefreshRate = 60; // hz (fps) - this.renderTimestep = 1000 / this.renderRefreshRate; // ms -- saves calculation later on - this.renderTime = 0; // measured time it takes to render a frame - this.physicsTime = 0; // measured time it takes to render a frame - this.runDoubleSpeed = false; - this.physicsDiscreteStepsize = 0.50; // discrete stepsize of the simulation + /** + * Move the window such that given time is centered on screen. + * @param {Date | Number | String} time + * @param {Object} [options] Available options: + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. + */ + Core.prototype.moveTo = function(time, options) { + var interval = this.range.end - this.range.start; + var t = util.convert(time, 'Date').valueOf(); - this.initializing = true; + var start = t - interval / 2; + var end = t + interval / 2; + var animate = (options && options.animate !== undefined) ? options.animate : true; - this.triggerFunctions = {add:null,edit:null,editEdge:null,connect:null,del:null}; + this.range.setRange(start, end, animate); + }; - var customScalingFunction = function (min,max,total,value) { - if (max == min) { - return 0.5; - } - else { - var scale = 1 / (max - min); - return Math.max(0,(value - min)*scale); - } - }; - // set constant values - this.defaultOptions = { - nodes: { - customScalingFunction: customScalingFunction, - mass: 1, - radiusMin: 10, - radiusMax: 30, - radius: 10, - shape: 'ellipse', - image: undefined, - widthMin: 16, // px - widthMax: 64, // px - fontColor: 'black', - fontSize: 14, // px - fontFace: 'verdana', - fontFill: undefined, - fontStrokeWidth: 0, // px - fontStrokeColor: '#ffffff', - fontDrawThreshold: 3, - scaleFontWithValue: false, - fontSizeMin: 14, - fontSizeMax: 30, - fontSizeMaxVisible: 30, - level: -1, - color: { - border: '#2B7CE9', - background: '#97C2FC', - highlight: { - border: '#2B7CE9', - background: '#D2E5FF' - }, - hover: { - border: '#2B7CE9', - background: '#D2E5FF' - } - }, - group: undefined, - borderWidth: 1, - borderWidthSelected: undefined - }, - edges: { - customScalingFunction: customScalingFunction, - widthMin: 1, // - widthMax: 15,// - width: 1, - widthSelectionMultiplier: 2, - hoverWidth: 1.5, - style: 'line', - color: { - color:'#848484', - highlight:'#848484', - hover: '#848484' - }, - opacity:1.0, - fontColor: '#343434', - fontSize: 14, // px - fontFace: 'arial', - fontFill: 'white', - fontStrokeWidth: 0, // px - fontStrokeColor: 'white', - labelAlignment:'horizontal', - arrowScaleFactor: 1, - dash: { - length: 10, - gap: 5, - altLength: undefined - }, - inheritColor: "from", // to, from, false, true (== from) - useGradients: false // release in 4.0 - }, - configurePhysics:false, - physics: { - barnesHut: { - enabled: true, - thetaInverted: 1 / 0.5, // inverted to save time during calculation - gravitationalConstant: -2000, - centralGravity: 0.3, - springLength: 95, - springConstant: 0.04, - damping: 0.09 - }, - repulsion: { - centralGravity: 0.0, - springLength: 200, - springConstant: 0.05, - nodeDistance: 100, - damping: 0.09 - }, - hierarchicalRepulsion: { - enabled: false, - centralGravity: 0.0, - springLength: 100, - springConstant: 0.01, - nodeDistance: 150, - damping: 0.09 - }, - damping: null, - centralGravity: null, - springLength: null, - springConstant: null - }, - clustering: { // Per Node in Cluster = PNiC - enabled: false, // (Boolean) | global on/off switch for clustering. - initialMaxNodes: 100, // (# nodes) | if the initial amount of nodes is larger than this, we cluster until the total number is less than this threshold. - clusterThreshold:500, // (# nodes) | during calculate forces, we check if the total number of nodes is larger than this. If it is, cluster until reduced to reduceToNodes - reduceToNodes:300, // (# nodes) | during calculate forces, we check if the total number of nodes is larger than clusterThreshold. If it is, cluster until reduced to this - chainThreshold: 0.4, // (% of all drawn nodes)| maximum percentage of allowed chainnodes (long strings of connected nodes) within all nodes. (lower means less chains). - clusterEdgeThreshold: 20, // (px) | edge length threshold. if smaller, this node is clustered. - sectorThreshold: 100, // (# nodes in cluster) | cluster size threshold. If larger, expanding in own sector. - screenSizeThreshold: 0.2, // (% of canvas) | relative size threshold. If the width or height of a clusternode takes up this much of the screen, decluster node. - fontSizeMultiplier: 4.0, // (px PNiC) | how much the cluster font size grows per node in cluster (in px). - maxFontSize: 1000, - forceAmplification: 0.1, // (multiplier PNiC) | factor of increase fo the repulsion force of a cluster (per node in cluster). - distanceAmplification: 0.1, // (multiplier PNiC) | factor how much the repulsion distance of a cluster increases (per node in cluster). - edgeGrowth: 20, // (px PNiC) | amount of clusterSize connected to the edge is multiplied with this and added to edgeLength. - nodeScaling: {width: 1, // (px PNiC) | growth of the width per node in cluster. - height: 1, // (px PNiC) | growth of the height per node in cluster. - radius: 1}, // (px PNiC) | growth of the radius per node in cluster. - maxNodeSizeIncrements: 600, // (# increments) | max growth of the width per node in cluster. - activeAreaBoxSize: 80, // (px) | box area around the curser where clusters are popped open. - clusterLevelDifference: 2, // used for normalization of the cluster levels - clusterByZoom: true // enable clustering through zooming in and out - }, - navigation: { - enabled: false - }, - keyboard: { - enabled: false, - speed: {x: 10, y: 10, zoom: 0.02}, - bindToWindow: true - }, - dataManipulation: { - enabled: false, - initiallyVisible: false - }, - hierarchicalLayout: { - enabled:false, - levelSeparation: 150, - nodeSpacing: 100, - direction: "UD", // UD, DU, LR, RL - layout: "hubsize" // hubsize, directed - }, - freezeForStabilization: false, - smoothCurves: { - enabled: true, - dynamic: true, - type: "continuous", - roundness: 0.5 - }, - maxVelocity: 50, - minVelocity: 0.1, // px/s - stabilize: true, // stabilize before displaying the network - stabilizationIterations: 1000, // maximum number of iteration to stabilize - zoomExtentOnStabilize: true, - locale: 'en', - locales: locales, - tooltip: { - delay: 300, - fontColor: 'black', - fontSize: 14, // px - fontFace: 'verdana', - color: { - border: '#666', - background: '#FFFFC6' - } - }, - dragNetwork: true, - dragNodes: true, - zoomable: true, - hover: false, - hideEdgesOnDrag: false, - hideNodesOnDrag: false, - width : '100%', - height : '100%', - selectable: true, - useDefaultGroups: true + /** + * Get the visible window + * @return {{start: Date, end: Date}} Visible range + */ + Core.prototype.getWindow = function() { + var range = this.range.getRange(); + return { + start: new Date(range.start), + end: new Date(range.end) }; - this.constants = util.extend({}, this.defaultOptions); - this.pixelRatio = 1; - - - this.hoverObj = {nodes:{},edges:{}}; - this.controlNodesActive = false; - this.navigationHammers = []; - this.manipulationHammers = []; + }; - // animation properties - this.animationSpeed = 1/this.renderRefreshRate; - this.animationEasingFunction = "easeInOutQuint"; - this.animating = false; - this.easingTime = 0; - this.sourceScale = 0; - this.targetScale = 0; - this.sourceTranslation = 0; - this.targetTranslation = 0; - this.lockedOnNodeId = null; - this.lockedOnNodeOffset = null; - this.touchTime = 0; - this.redrawRequested = false; + /** + * Force a redraw. Can be overridden by implementations of Core + */ + Core.prototype.redraw = function() { + this._redraw(); + }; - // Node variables - var network = this; - this.groups = new Groups(); // object with groups - this.images = new Images(); // object with images - this.images.setOnloadCallback(function (status) { - network._requestRedraw(); - }); + /** + * Redraw for internal use. Redraws all components. See also the public + * method redraw. + * @protected + */ + Core.prototype._redraw = function() { + var resized = false; + var options = this.options; + var props = this.props; + var dom = this.dom; - // keyboard navigation variables - this.xIncrement = 0; - this.yIncrement = 0; - this.zoomIncrement = 0; + if (!dom) return; // when destroyed - // loading all the mixins: - // load the force calculation functions, grouped under the physics system. - this._loadPhysicsSystem(); - // create a frame and canvas - this._create(); - // load the sector system. (mandatory, fully integrated with Network) - this._loadSectorSystem(); - // load the cluster system. (mandatory, even when not using the cluster system, there are function calls to it) - this._loadClusterSystem(); - // load the selection system. (mandatory, required by Network) - this._loadSelectionSystem(); - // load the selection system. (mandatory, required by Network) - this._loadHierarchySystem(); + DateUtil.updateHiddenDates(this.body, this.options.hiddenDates); + // update class names + if (options.orientation == 'top') { + util.addClassName(dom.root, 'top'); + util.removeClassName(dom.root, 'bottom'); + } + else { + util.removeClassName(dom.root, 'top'); + util.addClassName(dom.root, 'bottom'); + } - // apply options - this._setTranslation(this.frame.clientWidth / 2, this.frame.clientHeight / 2); - this._setScale(1); - this.setOptions(options); + // update root width and height options + dom.root.style.maxHeight = util.option.asSize(options.maxHeight, ''); + dom.root.style.minHeight = util.option.asSize(options.minHeight, ''); + dom.root.style.width = util.option.asSize(options.width, ''); - // other vars - this.freezeSimulationEnabled = false;// freeze the simulation - this.cachedFunctions = {}; - this.startedStabilization = false; - this.stabilized = false; - this.stabilizationIterations = null; - this.draggingNodes = false; + // calculate border widths + props.border.left = (dom.centerContainer.offsetWidth - dom.centerContainer.clientWidth) / 2; + props.border.right = props.border.left; + props.border.top = (dom.centerContainer.offsetHeight - dom.centerContainer.clientHeight) / 2; + props.border.bottom = props.border.top; + var borderRootHeight= dom.root.offsetHeight - dom.root.clientHeight; + var borderRootWidth = dom.root.offsetWidth - dom.root.clientWidth; - // containers for nodes and edges - this.calculationNodes = {}; - this.calculationNodeIndices = []; - this.nodeIndices = []; // array with all the indices of the nodes. Used to speed up forces calculation - this.nodes = {}; // object with Node objects - this.edges = {}; // object with Edge objects + // workaround for a bug in IE: the clientWidth of an element with + // a height:0px and overflow:hidden is not calculated and always has value 0 + if (dom.centerContainer.clientHeight === 0) { + props.border.left = props.border.top; + props.border.right = props.border.left; + } + if (dom.root.clientHeight === 0) { + borderRootWidth = borderRootHeight; + } - // position and scale variables and objects - this.canvasTopLeft = {"x": 0,"y": 0}; // coordinates of the top left of the canvas. they will be set during _redraw. - this.canvasBottomRight = {"x": 0,"y": 0}; // coordinates of the bottom right of the canvas. they will be set during _redraw - this.pointerPosition = {"x": 0,"y": 0}; // coordinates of the bottom right of the canvas. they will be set during _redraw - this.areaCenter = {}; // object with x and y elements used for determining the center of the zoom action - this.scale = 1; // defining the global scale variable in the constructor - this.previousScale = this.scale; // this is used to check if the zoom operation is zooming in or out + // calculate the heights. If any of the side panels is empty, we set the height to + // minus the border width, such that the border will be invisible + props.center.height = dom.center.offsetHeight; + props.left.height = dom.left.offsetHeight; + props.right.height = dom.right.offsetHeight; + props.top.height = dom.top.clientHeight || -props.border.top; + props.bottom.height = dom.bottom.clientHeight || -props.border.bottom; - // datasets or dataviews - this.nodesData = null; // A DataSet or DataView - this.edgesData = null; // A DataSet or DataView + // TODO: compensate borders when any of the panels is empty. - // create event listeners used to subscribe on the DataSets of the nodes and edges - this.nodesListeners = { - 'add': function (event, params) { - network._addNodes(params.items); - network.start(); - }, - 'update': function (event, params) { - network._updateNodes(params.items); - network.start(); - }, - 'remove': function (event, params) { - network._removeNodes(params.items); - network.start(); - } - }; - this.edgesListeners = { - 'add': function (event, params) { - network._addEdges(params.items); - network.start(); - }, - 'update': function (event, params) { - network._updateEdges(params.items); - network.start(); - }, - 'remove': function (event, params) { - network._removeEdges(params.items); - network.start(); - } - }; + // apply auto height + // TODO: only calculate autoHeight when needed (else we cause an extra reflow/repaint of the DOM) + var contentHeight = Math.max(props.left.height, props.center.height, props.right.height); + var autoHeight = props.top.height + contentHeight + props.bottom.height + + borderRootHeight + props.border.top + props.border.bottom; + dom.root.style.height = util.option.asSize(options.height, autoHeight + 'px'); - // properties for the animation - this.moving = true; - this.timer = undefined; // Scheduling function. Is definded in this.start(); + // calculate heights of the content panels + props.root.height = dom.root.offsetHeight; + props.background.height = props.root.height - borderRootHeight; + var containerHeight = props.root.height - props.top.height - props.bottom.height - + borderRootHeight; + props.centerContainer.height = containerHeight; + props.leftContainer.height = containerHeight; + props.rightContainer.height = props.leftContainer.height; - // load data (the disable start variable will be the same as the enabled clustering) - this.setData(data,this.constants.clustering.enabled || this.constants.hierarchicalLayout.enabled); + // calculate the widths of the panels + props.root.width = dom.root.offsetWidth; + props.background.width = props.root.width - borderRootWidth; + props.left.width = dom.leftContainer.clientWidth || -props.border.left; + props.leftContainer.width = props.left.width; + props.right.width = dom.rightContainer.clientWidth || -props.border.right; + props.rightContainer.width = props.right.width; + var centerWidth = props.root.width - props.left.width - props.right.width - borderRootWidth; + props.center.width = centerWidth; + props.centerContainer.width = centerWidth; + props.top.width = centerWidth; + props.bottom.width = centerWidth; - // hierarchical layout - this.initializing = false; - if (this.constants.hierarchicalLayout.enabled == true) { - this._setupHierarchicalLayout(); + // resize the panels + dom.background.style.height = props.background.height + 'px'; + dom.backgroundVertical.style.height = props.background.height + 'px'; + dom.backgroundHorizontal.style.height = props.centerContainer.height + 'px'; + dom.centerContainer.style.height = props.centerContainer.height + 'px'; + dom.leftContainer.style.height = props.leftContainer.height + 'px'; + dom.rightContainer.style.height = props.rightContainer.height + 'px'; + + dom.background.style.width = props.background.width + 'px'; + dom.backgroundVertical.style.width = props.centerContainer.width + 'px'; + dom.backgroundHorizontal.style.width = props.background.width + 'px'; + dom.centerContainer.style.width = props.center.width + 'px'; + dom.top.style.width = props.top.width + 'px'; + dom.bottom.style.width = props.bottom.width + 'px'; + + // reposition the panels + dom.background.style.left = '0'; + dom.background.style.top = '0'; + dom.backgroundVertical.style.left = (props.left.width + props.border.left) + 'px'; + dom.backgroundVertical.style.top = '0'; + dom.backgroundHorizontal.style.left = '0'; + dom.backgroundHorizontal.style.top = props.top.height + 'px'; + dom.centerContainer.style.left = props.left.width + 'px'; + dom.centerContainer.style.top = props.top.height + 'px'; + dom.leftContainer.style.left = '0'; + dom.leftContainer.style.top = props.top.height + 'px'; + dom.rightContainer.style.left = (props.left.width + props.center.width) + 'px'; + dom.rightContainer.style.top = props.top.height + 'px'; + dom.top.style.left = props.left.width + 'px'; + dom.top.style.top = '0'; + dom.bottom.style.left = props.left.width + 'px'; + dom.bottom.style.top = (props.top.height + props.centerContainer.height) + 'px'; + + // update the scrollTop, feasible range for the offset can be changed + // when the height of the Core or of the contents of the center changed + this._updateScrollTop(); + + // reposition the scrollable contents + var offset = this.props.scrollTop; + if (options.orientation == 'bottom') { + offset += Math.max(this.props.centerContainer.height - this.props.center.height - + this.props.border.top - this.props.border.bottom, 0); } - else { - // zoom so all data will fit on the screen, if clustering is enabled, we do not want start to be called here. - if (this.constants.stabilize == false) { - this.zoomExtent({duration:0}, true, this.constants.clustering.enabled); + dom.center.style.left = '0'; + dom.center.style.top = offset + 'px'; + dom.left.style.left = '0'; + dom.left.style.top = offset + 'px'; + dom.right.style.left = '0'; + dom.right.style.top = offset + 'px'; + + // show shadows when vertical scrolling is available + var visibilityTop = this.props.scrollTop == 0 ? 'hidden' : ''; + var visibilityBottom = this.props.scrollTop == this.props.scrollTopMin ? 'hidden' : ''; + dom.shadowTop.style.visibility = visibilityTop; + dom.shadowBottom.style.visibility = visibilityBottom; + dom.shadowTopLeft.style.visibility = visibilityTop; + dom.shadowBottomLeft.style.visibility = visibilityBottom; + dom.shadowTopRight.style.visibility = visibilityTop; + dom.shadowBottomRight.style.visibility = visibilityBottom; + + // redraw all components + this.components.forEach(function (component) { + resized = component.redraw() || resized; + }); + if (resized) { + // keep repainting until all sizes are settled + var MAX_REDRAWS = 3; // maximum number of consecutive redraws + if (this.redrawCount < MAX_REDRAWS) { + this.redrawCount++; + this._redraw(); + } + else { + console.log('WARNING: infinite loop in redraw?'); } + this.redrawCount = 0; } - // if clustering is disabled, the simulation will have started in the setData function - if (this.constants.clustering.enabled) { - this.startWithClustering(); - } - } + this.emit("finishedRedraw"); + }; - // Extend Network with an Emitter mixin - Emitter(Network.prototype); + // TODO: deprecated since version 1.1.0, remove some day + Core.prototype.repaint = function () { + throw new Error('Function repaint is deprecated. Use redraw instead.'); + }; /** - * Determine if the browser requires a setTimeout or a requestAnimationFrame. This was required because - * some implementations (safari and IE9) did not support requestAnimationFrame - * @private + * Set a current time. This can be used for example to ensure that a client's + * time is synchronized with a shared server time. + * Only applicable when option `showCurrentTime` is true. + * @param {Date | String | Number} time A Date, unix timestamp, or + * ISO date string. */ - Network.prototype._determineBrowserMethod = function() { - var browserType = navigator.userAgent.toLowerCase(); - this.requiresTimeout = false; - if (browserType.indexOf('msie 9.0') != -1) { // IE 9 - this.requiresTimeout = true; + Core.prototype.setCurrentTime = function(time) { + if (!this.currentTime) { + throw new Error('Option showCurrentTime must be true'); } - else if (browserType.indexOf('safari') != -1) { // safari - if (browserType.indexOf('chrome') <= -1) { - this.requiresTimeout = true; - } + + this.currentTime.setCurrentTime(time); + }; + + /** + * Get the current time. + * Only applicable when option `showCurrentTime` is true. + * @return {Date} Returns the current time. + */ + Core.prototype.getCurrentTime = function() { + if (!this.currentTime) { + throw new Error('Option showCurrentTime must be true'); } - } + return this.currentTime.getCurrentTime(); + }; /** - * Get the script path where the vis.js library is located - * - * @returns {string | null} path Path or null when not found. Path does not - * end with a slash. + * Convert a position on screen (pixels) to a datetime + * @param {int} x Position on the screen in pixels + * @return {Date} time The datetime the corresponds with given position x * @private */ - Network.prototype._getScriptPath = function() { - var scripts = document.getElementsByTagName( 'script' ); + // TODO: move this function to Range + Core.prototype._toTime = function(x) { + return DateUtil.toTime(this, x, this.props.center.width); + }; - // find script named vis.js or vis.min.js - for (var i = 0; i < scripts.length; i++) { - var src = scripts[i].src; - var match = src && /\/?vis(.min)?\.js$/.exec(src); - if (match) { - // return path without the script name - return src.substring(0, src.length - match[0].length); - } - } + /** + * Convert a position on the global screen (pixels) to a datetime + * @param {int} x Position on the screen in pixels + * @return {Date} time The datetime the corresponds with given position x + * @private + */ + // TODO: move this function to Range + Core.prototype._toGlobalTime = function(x) { + return DateUtil.toTime(this, x, this.props.root.width); + //var conversion = this.range.conversion(this.props.root.width); + //return new Date(x / conversion.scale + conversion.offset); + }; - return null; + /** + * Convert a datetime (Date object) into a position on the screen + * @param {Date} time A date + * @return {int} x The position on the screen in pixels which corresponds + * with the given date. + * @private + */ + // TODO: move this function to Range + Core.prototype._toScreen = function(time) { + return DateUtil.toScreen(this, time, this.props.center.width); }; + /** - * Find the center position of the network + * Convert a datetime (Date object) into a position on the root + * This is used to get the pixel density estimate for the screen, not the center panel + * @param {Date} time A date + * @return {int} x The position on root in pixels which corresponds + * with the given date. * @private */ - Network.prototype._getRange = function(specificNodes) { - var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; - if (specificNodes.length > 0) { - for (var i = 0; i < specificNodes.length; i++) { - node = this.nodes[specificNodes[i]]; - if (minX > (node.boundingBox.left)) { - minX = node.boundingBox.left; - } - if (maxX < (node.boundingBox.right)) { - maxX = node.boundingBox.right; - } - if (minY > (node.boundingBox.bottom)) { - minY = node.boundingBox.top; - } // top is negative, bottom is positive - if (maxY < (node.boundingBox.top)) { - maxY = node.boundingBox.bottom; - } // top is negative, bottom is positive - } + // TODO: move this function to Range + Core.prototype._toGlobalScreen = function(time) { + return DateUtil.toScreen(this, time, this.props.root.width); + //var conversion = this.range.conversion(this.props.root.width); + //return (time.valueOf() - conversion.offset) * conversion.scale; + }; + + + /** + * Initialize watching when option autoResize is true + * @private + */ + Core.prototype._initAutoResize = function () { + if (this.options.autoResize == true) { + this._startAutoResize(); } else { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (minX > (node.boundingBox.left)) { - minX = node.boundingBox.left; - } - if (maxX < (node.boundingBox.right)) { - maxX = node.boundingBox.right; - } - if (minY > (node.boundingBox.bottom)) { - minY = node.boundingBox.top; - } // top is negative, bottom is positive - if (maxY < (node.boundingBox.top)) { - maxY = node.boundingBox.bottom; - } // top is negative, bottom is positive + this._stopAutoResize(); + } + }; + + /** + * Watch for changes in the size of the container. On resize, the Panel will + * automatically redraw itself. + * @private + */ + Core.prototype._startAutoResize = function () { + var me = this; + + this._stopAutoResize(); + + this._onResize = function() { + if (me.options.autoResize != true) { + // stop watching when the option autoResize is changed to false + me._stopAutoResize(); + return; + } + + if (me.dom.root) { + // check whether the frame is resized + // Note: we compare offsetWidth here, not clientWidth. For some reason, + // IE does not restore the clientWidth from 0 to the actual width after + // changing the timeline's container display style from none to visible + if ((me.dom.root.offsetWidth != me.props.lastWidth) || + (me.dom.root.offsetHeight != me.props.lastHeight)) { + me.props.lastWidth = me.dom.root.offsetWidth; + me.props.lastHeight = me.dom.root.offsetHeight; + + me.emit('change'); } } + }; + + // add event listener to window resize + util.addEventListener(window, 'resize', this._onResize); + + this.watchTimer = setInterval(this._onResize, 1000); + }; + + /** + * Stop watching for a resize of the frame. + * @private + */ + Core.prototype._stopAutoResize = function () { + if (this.watchTimer) { + clearInterval(this.watchTimer); + this.watchTimer = undefined; } - if (minX == 1e9 && maxX == -1e9 && minY == 1e9 && maxY == -1e9) { - minY = 0, maxY = 0, minX = 0, maxX = 0; + // remove event listener on window.resize + util.removeEventListener(window, 'resize', this._onResize); + this._onResize = null; + }; + + /** + * Start moving the timeline vertically + * @param {Event} event + * @private + */ + Core.prototype._onTouch = function (event) { + this.touch.allowDragging = true; + }; + + /** + * Start moving the timeline vertically + * @param {Event} event + * @private + */ + Core.prototype._onPinch = function (event) { + this.touch.allowDragging = false; + }; + + /** + * Start moving the timeline vertically + * @param {Event} event + * @private + */ + Core.prototype._onDragStart = function (event) { + this.touch.initialScrollTop = this.props.scrollTop; + }; + + /** + * Move the timeline vertically + * @param {Event} event + * @private + */ + Core.prototype._onDrag = function (event) { + // refuse to drag when we where pinching to prevent the timeline make a jump + // when releasing the fingers in opposite order from the touch screen + if (!this.touch.allowDragging) return; + + var delta = event.gesture.deltaY; + + var oldScrollTop = this._getScrollTop(); + var newScrollTop = this._setScrollTop(this.touch.initialScrollTop + delta); + + + if (newScrollTop != oldScrollTop) { + this._redraw(); // TODO: this causes two redraws when dragging, the other is triggered by rangechange already + this.emit("verticalDrag"); } - return {minX: minX, maxX: maxX, minY: minY, maxY: maxY}; }; - /** - * @param {object} range = {minX: minX, maxX: maxX, minY: minY, maxY: maxY}; - * @returns {{x: number, y: number}} + * Apply a scrollTop + * @param {Number} scrollTop + * @returns {Number} scrollTop Returns the applied scrollTop * @private */ - Network.prototype._findCenter = function(range) { - return {x: (0.5 * (range.maxX + range.minX)), - y: (0.5 * (range.maxY + range.minY))}; + Core.prototype._setScrollTop = function (scrollTop) { + this.props.scrollTop = scrollTop; + this._updateScrollTop(); + return this.props.scrollTop; }; - /** - * This function zooms out to fit all data on screen based on amount of nodes - * - * @param {Boolean} [initialZoom] | zoom based on fitted formula or range, true = fitted, default = false; - * @param {Boolean} [disableStart] | If true, start is not called. + * Update the current scrollTop when the height of the containers has been changed + * @returns {Number} scrollTop Returns the applied scrollTop + * @private */ - Network.prototype.zoomExtent = function(options, initialZoom, disableStart) { - this._redraw(true); - - if (initialZoom === undefined) {initialZoom = false;} - if (disableStart === undefined) {disableStart = false;} - if (options === undefined) {options = {nodes:[]};} - if (options.nodes === undefined) { - options.nodes = []; + Core.prototype._updateScrollTop = function () { + // recalculate the scrollTopMin + var scrollTopMin = Math.min(this.props.centerContainer.height - this.props.center.height, 0); // is negative or zero + if (scrollTopMin != this.props.scrollTopMin) { + // in case of bottom orientation, change the scrollTop such that the contents + // do not move relative to the time axis at the bottom + if (this.options.orientation == 'bottom') { + this.props.scrollTop += (scrollTopMin - this.props.scrollTopMin); + } + this.props.scrollTopMin = scrollTopMin; } - var range; - var zoomLevel; - - if (initialZoom == true) { - // check if more than half of the nodes have a predefined position. If so, we use the range, not the approximation. - var positionDefined = 0; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.predefinedPosition == true) { - positionDefined += 1; - } - } - } - if (positionDefined > 0.5 * this.nodeIndices.length) { - this.zoomExtent(options,false,disableStart); - return; - } + // limit the scrollTop to the feasible scroll range + if (this.props.scrollTop > 0) this.props.scrollTop = 0; + if (this.props.scrollTop < scrollTopMin) this.props.scrollTop = scrollTopMin; - range = this._getRange(options.nodes); + return this.props.scrollTop; + }; - var numberOfNodes = this.nodeIndices.length; - if (this.constants.smoothCurves == true) { - if (this.constants.clustering.enabled == true && - numberOfNodes >= this.constants.clustering.initialMaxNodes) { - zoomLevel = 49.07548 / (numberOfNodes + 142.05338) + 9.1444e-04; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. - } - else { - zoomLevel = 12.662 / (numberOfNodes + 7.4147) + 0.0964822; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. - } - } - else { - if (this.constants.clustering.enabled == true && - numberOfNodes >= this.constants.clustering.initialMaxNodes) { - zoomLevel = 77.5271985 / (numberOfNodes + 187.266146) + 4.76710517e-05; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. - } - else { - zoomLevel = 30.5062972 / (numberOfNodes + 19.93597763) + 0.08413486; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. - } - } + /** + * Get the current scrollTop + * @returns {number} scrollTop + * @private + */ + Core.prototype._getScrollTop = function () { + return this.props.scrollTop; + }; - // correct for larger canvasses. - var factor = Math.min(this.frame.canvas.clientWidth / 600, this.frame.canvas.clientHeight / 600); - zoomLevel *= factor; - } - else { - range = this._getRange(options.nodes); - var xDistance = Math.abs(range.maxX - range.minX) * 1.1; - var yDistance = Math.abs(range.maxY - range.minY) * 1.1; + module.exports = Core; - var xZoomLevel = this.frame.canvas.clientWidth / xDistance; - var yZoomLevel = this.frame.canvas.clientHeight / yDistance; - zoomLevel = (xZoomLevel <= yZoomLevel) ? xZoomLevel : yZoomLevel; - } - if (zoomLevel > 1.0) { - zoomLevel = 1.0; - } +/***/ }, +/* 26 */ +/***/ function(module, exports, __webpack_require__) { + var Hammer = __webpack_require__(19); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(7); + var DataView = __webpack_require__(9); + var TimeStep = __webpack_require__(27); + var Component = __webpack_require__(23); + var Group = __webpack_require__(28); + var BackgroundGroup = __webpack_require__(29); + var BoxItem = __webpack_require__(30); + var PointItem = __webpack_require__(32); + var RangeItem = __webpack_require__(33); + var BackgroundItem = __webpack_require__(34); - var center = this._findCenter(range); - if (disableStart == false) { - var options = {position: center, scale: zoomLevel, animation: options}; - this.moveTo(options); - this.moving = true; - this.start(); - } - else { - center.x *= zoomLevel; - center.y *= zoomLevel; - center.x -= 0.5 * this.frame.canvas.clientWidth; - center.y -= 0.5 * this.frame.canvas.clientHeight; - this._setScale(zoomLevel); - this._setTranslation(-center.x,-center.y); - } - }; + var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items + var BACKGROUND = '__background__'; // reserved group id for background items without group /** - * Update the this.nodeIndices with the most recent node index list - * @private + * An ItemSet holds a set of items and ranges which can be displayed in a + * range. The width is determined by the parent of the ItemSet, and the height + * is determined by the size of the items. + * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body + * @param {Object} [options] See ItemSet.setOptions for the available options. + * @constructor ItemSet + * @extends Component */ - Network.prototype._updateNodeIndexList = function() { - this._clearNodeIndexList(); - for (var idx in this.nodes) { - if (this.nodes.hasOwnProperty(idx)) { - this.nodeIndices.push(idx); - } - } - }; + function ItemSet(body, options) { + this.body = body; + this.defaultOptions = { + type: null, // 'box', 'point', 'range', 'background' + orientation: 'bottom', // 'top' or 'bottom' + align: 'auto', // alignment of box items + stack: true, + groupOrder: null, - /** - * Set nodes and edges, and optionally options as well. - * - * @param {Object} data Object containing parameters: - * {Array | DataSet | DataView} [nodes] Array with nodes - * {Array | DataSet | DataView} [edges] Array with edges - * {String} [dot] String containing data in DOT format - * {String} [gephi] String containing data in gephi JSON format - * {Options} [options] Object with options - * @param {Boolean} [disableStart] | optional: disable the calling of the start function. - */ - Network.prototype.setData = function(data, disableStart) { - if (disableStart === undefined) { - disableStart = false; - } + selectable: true, + editable: { + updateTime: false, + updateGroup: false, + add: false, + remove: false + }, - // unselect all to ensure no selections from old data are carried over. - this._unselectAll(true); + snap: TimeStep.snap, - // we set initializing to true to ensure that the hierarchical layout is not performed until both nodes and edges are added. - this.initializing = true; + onAdd: function (item, callback) { + callback(item); + }, + onUpdate: function (item, callback) { + callback(item); + }, + onMove: function (item, callback) { + callback(item); + }, + onRemove: function (item, callback) { + callback(item); + }, + onMoving: function (item, callback) { + callback(item); + }, - if (data && data.dot && (data.nodes || data.edges)) { - throw new SyntaxError('Data must contain either parameter "dot" or ' + - ' parameter pair "nodes" and "edges", but not both.'); - } + margin: { + item: { + horizontal: 10, + vertical: 10 + }, + axis: 20 + }, + padding: 5 + }; - // clean up in case there is anyone in an active mode of the manipulation. This is the same option as bound to the escape button. - if (this.constants.dataManipulation.enabled == true) { - this._createManipulatorBar(); - } + // options is shared by this ItemSet and all its items + this.options = util.extend({}, this.defaultOptions); - // set options - this.setOptions(data && data.options); - // set all data - if (data && data.dot) { - // parse DOT file - if(data && data.dot) { - var dotData = dotparser.DOTToGraph(data.dot); - this.setData(dotData); - return; - } - } - else if (data && data.gephi) { - // parse DOT file - if(data && data.gephi) { - var gephiData = gephiParser.parseGephi(data.gephi); - this.setData(gephiData); - return; - } - } - else { - this._setNodes(data && data.nodes); - this._setEdges(data && data.edges); - } - this._putDataInSector(); - if (disableStart == false) { - if (this.constants.hierarchicalLayout.enabled == true) { - this._resetLevels(); - this._setupHierarchicalLayout(); + // options for getting items from the DataSet with the correct type + this.itemOptions = { + type: {start: 'Date', end: 'Date'} + }; + + this.conversion = { + toScreen: body.util.toScreen, + toTime: body.util.toTime + }; + this.dom = {}; + this.props = {}; + this.hammer = null; + + var me = this; + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet + + // listeners for the DataSet of the items + this.itemListeners = { + 'add': function (event, params, senderId) { + me._onAdd(params.items); + }, + 'update': function (event, params, senderId) { + me._onUpdate(params.items); + }, + 'remove': function (event, params, senderId) { + me._onRemove(params.items); } - else { - // find a stable position or start animating to a stable position - if (this.constants.stabilize == true) { - this._stabilize(); - } + }; + + // listeners for the DataSet of the groups + this.groupListeners = { + 'add': function (event, params, senderId) { + me._onAddGroups(params.items); + }, + 'update': function (event, params, senderId) { + me._onUpdateGroups(params.items); + }, + 'remove': function (event, params, senderId) { + me._onRemoveGroups(params.items); } - this.start(); - } - this.initializing = false; + }; + + this.items = {}; // object with an Item for every data item + this.groups = {}; // Group object for every group + this.groupIds = []; + + this.selection = []; // list with the ids of all selected nodes + this.stackDirty = true; // if true, all items will be restacked on next redraw + + this.touchParams = {}; // stores properties while dragging + // create the HTML DOM + + this._create(); + + this.setOptions(options); + } + + ItemSet.prototype = new Component(); + + // available item types will be registered here + ItemSet.types = { + background: BackgroundItem, + box: BoxItem, + range: RangeItem, + point: PointItem }; /** - * Set options - * @param {Object} options + * Create the HTML DOM for the ItemSet */ - Network.prototype.setOptions = function (options) { - if (options) { - var prop; - var fields = ['nodes','edges','smoothCurves','hierarchicalLayout','clustering','navigation', - 'keyboard','dataManipulation','onAdd','onEdit','onEditEdge','onConnect','onDelete','clickToUse' - ]; - // extend all but the values in fields - util.selectiveNotDeepExtend(fields,this.constants, options); - util.selectiveNotDeepExtend(['color'],this.constants.nodes, options.nodes); - util.selectiveNotDeepExtend(['color','length'],this.constants.edges, options.edges); + ItemSet.prototype._create = function(){ + var frame = document.createElement('div'); + frame.className = 'itemset'; + frame['timeline-itemset'] = this; + this.dom.frame = frame; - this.groups.useDefaultGroups = this.constants.useDefaultGroups; - if (options.physics) { - util.mergeOptions(this.constants.physics, options.physics,'barnesHut'); - util.mergeOptions(this.constants.physics, options.physics,'repulsion'); + // create background panel + var background = document.createElement('div'); + background.className = 'background'; + frame.appendChild(background); + this.dom.background = background; - if (options.physics.hierarchicalRepulsion) { - this.constants.hierarchicalLayout.enabled = true; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this.constants.physics.barnesHut.enabled = false; - for (prop in options.physics.hierarchicalRepulsion) { - if (options.physics.hierarchicalRepulsion.hasOwnProperty(prop)) { - this.constants.physics.hierarchicalRepulsion[prop] = options.physics.hierarchicalRepulsion[prop]; - } - } - } - } + // create foreground panel + var foreground = document.createElement('div'); + foreground.className = 'foreground'; + frame.appendChild(foreground); + this.dom.foreground = foreground; - if (options.onAdd) {this.triggerFunctions.add = options.onAdd;} - if (options.onEdit) {this.triggerFunctions.edit = options.onEdit;} - if (options.onEditEdge) {this.triggerFunctions.editEdge = options.onEditEdge;} - if (options.onConnect) {this.triggerFunctions.connect = options.onConnect;} - if (options.onDelete) {this.triggerFunctions.del = options.onDelete;} + // create axis panel + var axis = document.createElement('div'); + axis.className = 'axis'; + this.dom.axis = axis; - util.mergeOptions(this.constants, options,'smoothCurves'); - util.mergeOptions(this.constants, options,'hierarchicalLayout'); - util.mergeOptions(this.constants, options,'clustering'); - util.mergeOptions(this.constants, options,'navigation'); - util.mergeOptions(this.constants, options,'keyboard'); - util.mergeOptions(this.constants, options,'dataManipulation'); + // create labelset + var labelSet = document.createElement('div'); + labelSet.className = 'labelset'; + this.dom.labelSet = labelSet; + + // create ungrouped Group + this._updateUngrouped(); + // create background Group + var backgroundGroup = new BackgroundGroup(BACKGROUND, null, this); + backgroundGroup.show(); + this.groups[BACKGROUND] = backgroundGroup; - if (options.dataManipulation) { - this.editMode = this.constants.dataManipulation.initiallyVisible; - } + // attach event listeners + // Note: we bind to the centerContainer for the case where the height + // of the center container is larger than of the ItemSet, so we + // can click in the empty area to create a new item or deselect an item. + this.hammer = Hammer(this.body.dom.centerContainer, { + preventDefault: true + }); + // drag items when selected + this.hammer.on('touch', this._onTouch.bind(this)); + this.hammer.on('dragstart', this._onDragStart.bind(this)); + this.hammer.on('drag', this._onDrag.bind(this)); + this.hammer.on('dragend', this._onDragEnd.bind(this)); - // TODO: work out these options and document them - if (options.edges) { - if (options.edges.color !== undefined) { - if (util.isString(options.edges.color)) { - this.constants.edges.color = {}; - this.constants.edges.color.color = options.edges.color; - this.constants.edges.color.highlight = options.edges.color; - this.constants.edges.color.hover = options.edges.color; - } - else { - if (options.edges.color.color !== undefined) {this.constants.edges.color.color = options.edges.color.color;} - if (options.edges.color.highlight !== undefined) {this.constants.edges.color.highlight = options.edges.color.highlight;} - if (options.edges.color.hover !== undefined) {this.constants.edges.color.hover = options.edges.color.hover;} - } - this.constants.edges.inheritColor = false; - } + // single select (or unselect) when tapping an item + this.hammer.on('tap', this._onSelectItem.bind(this)); - if (!options.edges.fontColor) { - if (options.edges.color !== undefined) { - if (util.isString(options.edges.color)) {this.constants.edges.fontColor = options.edges.color;} - else if (options.edges.color.color !== undefined) {this.constants.edges.fontColor = options.edges.color.color;} - } - } - } + // multi select when holding mouse/touch, or on ctrl+click + this.hammer.on('hold', this._onMultiSelectItem.bind(this)); - if (options.nodes) { - if (options.nodes.color) { - var newColorObj = util.parseColor(options.nodes.color); - this.constants.nodes.color.background = newColorObj.background; - this.constants.nodes.color.border = newColorObj.border; - this.constants.nodes.color.highlight.background = newColorObj.highlight.background; - this.constants.nodes.color.highlight.border = newColorObj.highlight.border; - this.constants.nodes.color.hover.background = newColorObj.hover.background; - this.constants.nodes.color.hover.border = newColorObj.hover.border; + // add item on doubletap + this.hammer.on('doubletap', this._onAddItem.bind(this)); + + // attach to the DOM + this.show(); + }; + + /** + * Set options for the ItemSet. Existing options will be extended/overwritten. + * @param {Object} [options] The following options are available: + * {String} type + * Default type for the items. Choose from 'box' + * (default), 'point', 'range', or 'background'. + * The default style can be overwritten by + * individual items. + * {String} align + * Alignment for the items, only applicable for + * BoxItem. Choose 'center' (default), 'left', or + * 'right'. + * {String} orientation + * Orientation of the item set. Choose 'top' or + * 'bottom' (default). + * {Function} groupOrder + * A sorting function for ordering groups + * {Boolean} stack + * If true (deafult), items will be stacked on + * top of each other. + * {Number} margin.axis + * Margin between the axis and the items in pixels. + * Default is 20. + * {Number} margin.item.horizontal + * Horizontal margin between items in pixels. + * Default is 10. + * {Number} margin.item.vertical + * Vertical Margin between items in pixels. + * Default is 10. + * {Number} margin.item + * Margin between items in pixels in both horizontal + * and vertical direction. Default is 10. + * {Number} margin + * Set margin for both axis and items in pixels. + * {Number} padding + * Padding of the contents of an item in pixels. + * Must correspond with the items css. Default is 5. + * {Boolean} selectable + * If true (default), items can be selected. + * {Boolean} editable + * Set all editable options to true or false + * {Boolean} editable.updateTime + * Allow dragging an item to an other moment in time + * {Boolean} editable.updateGroup + * Allow dragging an item to an other group + * {Boolean} editable.add + * Allow creating new items on double tap + * {Boolean} editable.remove + * Allow removing items by clicking the delete button + * top right of a selected item. + * {Function(item: Item, callback: Function)} onAdd + * Callback function triggered when an item is about to be added: + * when the user double taps an empty space in the Timeline. + * {Function(item: Item, callback: Function)} onUpdate + * Callback function fired when an item is about to be updated. + * This function typically has to show a dialog where the user + * change the item. If not implemented, nothing happens. + * {Function(item: Item, callback: Function)} onMove + * Fired when an item has been moved. If not implemented, + * the move action will be accepted. + * {Function(item: Item, callback: Function)} onRemove + * Fired when an item is about to be deleted. + * If not implemented, the item will be always removed. + */ + ItemSet.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + var fields = ['type', 'align', 'orientation', 'order', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide', 'snap']; + util.selectiveExtend(fields, this.options, options); + + if ('margin' in options) { + if (typeof options.margin === 'number') { + this.options.margin.axis = options.margin; + this.options.margin.item.horizontal = options.margin; + this.options.margin.item.vertical = options.margin; } - } - if (options.groups) { - for (var groupname in options.groups) { - if (options.groups.hasOwnProperty(groupname)) { - var group = options.groups[groupname]; - this.groups.add(groupname, group); + else if (typeof options.margin === 'object') { + util.selectiveExtend(['axis'], this.options.margin, options.margin); + if ('item' in options.margin) { + if (typeof options.margin.item === 'number') { + this.options.margin.item.horizontal = options.margin.item; + this.options.margin.item.vertical = options.margin.item; + } + else if (typeof options.margin.item === 'object') { + util.selectiveExtend(['horizontal', 'vertical'], this.options.margin.item, options.margin.item); + } } } } - if (options.tooltip) { - for (prop in options.tooltip) { - if (options.tooltip.hasOwnProperty(prop)) { - this.constants.tooltip[prop] = options.tooltip[prop]; - } + if ('editable' in options) { + if (typeof options.editable === 'boolean') { + this.options.editable.updateTime = options.editable; + this.options.editable.updateGroup = options.editable; + this.options.editable.add = options.editable; + this.options.editable.remove = options.editable; } - if (options.tooltip.color) { - this.constants.tooltip.color = util.parseColor(options.tooltip.color); + else if (typeof options.editable === 'object') { + util.selectiveExtend(['updateTime', 'updateGroup', 'add', 'remove'], this.options.editable, options.editable); } } - if ('clickToUse' in options) { - if (options.clickToUse) { - if (!this.activator) { - this.activator = new Activator(this.frame); - this.activator.on('change', this._createKeyBinds.bind(this)); - } - } - else { - if (this.activator) { - this.activator.destroy(); - delete this.activator; + // callback functions + var addCallback = (function (name) { + var fn = options[name]; + if (fn) { + if (!(fn instanceof Function)) { + throw new Error('option ' + name + ' must be a function ' + name + '(item, callback)'); } + this.options[name] = fn; } - } + }).bind(this); + ['onAdd', 'onUpdate', 'onRemove', 'onMove', 'onMoving'].forEach(addCallback); - if (options.labels) { - throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.'); - } + // force the itemSet to refresh: options like orientation and margins may be changed + this.markDirty(); + } + }; + /** + * Mark the ItemSet dirty so it will refresh everything with next redraw. + * Optionally, all items can be marked as dirty and be refreshed. + * @param {{refreshItems: boolean}} [options] + */ + ItemSet.prototype.markDirty = function(options) { + this.groupIds = []; + this.stackDirty = true; - // (Re)loading the mixins that can be enabled or disabled in the options. - // load the force calculation functions, grouped under the physics system. - this._loadPhysicsSystem(); - // load the navigation system. - this._loadNavigationControls(); - // load the data manipulation system - this._loadManipulationSystem(); - // configure the smooth curves - this._configureSmoothCurves(); + if (options && options.refreshItems) { + util.forEach(this.items, function (item) { + item.dirty = true; + if (item.displayed) item.redraw(); + }); + } + }; - // bind hammer - this._bindHammer(); + /** + * Destroy the ItemSet + */ + ItemSet.prototype.destroy = function() { + this.hide(); + this.setItems(null); + this.setGroups(null); - // bind keys. If disabled, this will not do anything; - this._createKeyBinds(); + this.hammer = null; - this._markAllEdgesAsDirty(); - this.setSize(this.constants.width, this.constants.height); - this.moving = true; - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); - } - this.start(); - } + this.body = null; + this.conversion = null; }; + /** + * Hide the component from the DOM + */ + ItemSet.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); + } + + // remove the axis with dots + if (this.dom.axis.parentNode) { + this.dom.axis.parentNode.removeChild(this.dom.axis); + } + // remove the labelset containing all group labels + if (this.dom.labelSet.parentNode) { + this.dom.labelSet.parentNode.removeChild(this.dom.labelSet); + } + }; /** - * Create the main frame for the Network. - * This function is executed once when a Network object is created. The frame - * contains a canvas, and this canvas contains all objects like the axis and - * nodes. - * @private + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed */ - Network.prototype._create = function () { - // remove all elements from the container element. - while (this.containerElement.hasChildNodes()) { - this.containerElement.removeChild(this.containerElement.firstChild); + ItemSet.prototype.show = function() { + // show frame containing the items + if (!this.dom.frame.parentNode) { + this.body.dom.center.appendChild(this.dom.frame); } - this.frame = document.createElement('div'); - this.frame.className = 'vis network-frame'; - this.frame.style.position = 'relative'; - this.frame.style.overflow = 'hidden'; - this.frame.tabIndex = 900; + // show axis with dots + if (!this.dom.axis.parentNode) { + this.body.dom.backgroundVertical.appendChild(this.dom.axis); + } + // show labelset containing labels + if (!this.dom.labelSet.parentNode) { + this.body.dom.left.appendChild(this.dom.labelSet); + } + }; - ////////////////////////////////////////////////////////////////// + /** + * Set selected items by their id. Replaces the current selection + * Unknown id's are silently ignored. + * @param {string[] | string} [ids] An array with zero or more id's of the items to be + * selected, or a single item id. If ids is undefined + * or an empty array, all items will be unselected. + */ + ItemSet.prototype.setSelection = function(ids) { + var i, ii, id, item; - this.frame.canvas = document.createElement("canvas"); - this.frame.canvas.style.position = 'relative'; - this.frame.appendChild(this.frame.canvas); + if (ids == undefined) ids = []; + if (!Array.isArray(ids)) ids = [ids]; - if (!this.frame.canvas.getContext) { - var noCanvas = document.createElement( 'DIV' ); - noCanvas.style.color = 'red'; - noCanvas.style.fontWeight = 'bold' ; - noCanvas.style.padding = '10px'; - noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; - this.frame.canvas.appendChild(noCanvas); + // unselect currently selected items + for (i = 0, ii = this.selection.length; i < ii; i++) { + id = this.selection[i]; + item = this.items[id]; + if (item) item.unselect(); } - else { - var ctx = this.frame.canvas.getContext("2d"); - this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || - ctx.mozBackingStorePixelRatio || - ctx.msBackingStorePixelRatio || - ctx.oBackingStorePixelRatio || - ctx.backingStorePixelRatio || 1); - //this.pixelRatio = Math.max(1,this.pixelRatio); // this is to account for browser zooming out. The pixel ratio is ment to switch between 1 and 2 for HD screens. - this.frame.canvas.getContext("2d").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); + // select items + this.selection = []; + for (i = 0, ii = ids.length; i < ii; i++) { + id = ids[i]; + item = this.items[id]; + if (item) { + this.selection.push(id); + item.select(); + } } - - this._bindHammer(); }; - /** - * This function binds hammer, it can be repeated over and over due to the uniqueness check. - * @private + * Get the selected items by their id + * @return {Array} ids The ids of the selected items */ - Network.prototype._bindHammer = function() { - var me = this; - if (this.hammer !== undefined) { - this.hammer.dispose(); - } - this.drag = {}; - this.pinch = {}; - this.hammer = Hammer(this.frame.canvas, { - prevent_default: true - }); - this.hammer.on('tap', me._onTap.bind(me) ); - this.hammer.on('doubletap', me._onDoubleTap.bind(me) ); - this.hammer.on('hold', me._onHold.bind(me) ); - this.hammer.on('touch', me._onTouch.bind(me) ); - this.hammer.on('dragstart', me._onDragStart.bind(me) ); - this.hammer.on('drag', me._onDrag.bind(me) ); - this.hammer.on('dragend', me._onDragEnd.bind(me) ); + ItemSet.prototype.getSelection = function() { + return this.selection.concat([]); + }; - if (this.constants.zoomable == true) { - this.hammer.on('mousewheel', me._onMouseWheel.bind(me)); - this.hammer.on('DOMMouseScroll', me._onMouseWheel.bind(me)); // for FF - this.hammer.on('pinch', me._onPinch.bind(me) ); - } + /** + * Get the id's of the currently visible items. + * @returns {Array} The ids of the visible items + */ + ItemSet.prototype.getVisibleItems = function() { + var range = this.body.range.getRange(); + var left = this.body.util.toScreen(range.start); + var right = this.body.util.toScreen(range.end); - this.hammer.on('mousemove', me._onMouseMoveTitle.bind(me) ); + var ids = []; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + var group = this.groups[groupId]; + var rawVisibleItems = group.visibleItems; - this.hammerFrame = Hammer(this.frame, { - prevent_default: true - }); - this.hammerFrame.on('release', me._onRelease.bind(me) ); + // filter the "raw" set with visibleItems into a set which is really + // visible by pixels + for (var i = 0; i < rawVisibleItems.length; i++) { + var item = rawVisibleItems[i]; + // TODO: also check whether visible vertically + if ((item.left < right) && (item.left + item.width > left)) { + ids.push(item.id); + } + } + } + } - // add the frame to the container element - this.containerElement.appendChild(this.frame); - } + return ids; + }; /** - * Binding the keys for keyboard navigation. These functions are defined in the NavigationMixin + * Deselect a selected item + * @param {String | Number} id * @private */ - Network.prototype._createKeyBinds = function() { - var me = this; - if (this.keycharm !== undefined) { - this.keycharm.destroy(); + ItemSet.prototype._deselect = function(id) { + var selection = this.selection; + for (var i = 0, ii = selection.length; i < ii; i++) { + if (selection[i] == id) { // non-strict comparison! + selection.splice(i, 1); + break; + } } + }; - if (this.constants.keyboard.bindToWindow == true) { - this.keycharm = keycharm({container: window, preventDefault: false}); - } - else { - this.keycharm = keycharm({container: this.frame, preventDefault: false}); - } + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + ItemSet.prototype.redraw = function() { + var margin = this.options.margin, + range = this.body.range, + asSize = util.option.asSize, + options = this.options, + orientation = options.orientation, + resized = false, + frame = this.dom.frame, + editable = options.editable.updateTime || options.editable.updateGroup; - this.keycharm.reset(); + // recalculate absolute position (before redrawing groups) + this.props.top = this.body.domProps.top.height + this.body.domProps.border.top; + this.props.left = this.body.domProps.left.width + this.body.domProps.border.left; - if (this.constants.keyboard.enabled && this.isActive()) { - this.keycharm.bind("up", this._moveUp.bind(me) , "keydown"); - this.keycharm.bind("up", this._yStopMoving.bind(me), "keyup"); - this.keycharm.bind("down", this._moveDown.bind(me) , "keydown"); - this.keycharm.bind("down", this._yStopMoving.bind(me), "keyup"); - this.keycharm.bind("left", this._moveLeft.bind(me) , "keydown"); - this.keycharm.bind("left", this._xStopMoving.bind(me), "keyup"); - this.keycharm.bind("right",this._moveRight.bind(me), "keydown"); - this.keycharm.bind("right",this._xStopMoving.bind(me), "keyup"); - this.keycharm.bind("=", this._zoomIn.bind(me), "keydown"); - this.keycharm.bind("=", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("num+", this._zoomIn.bind(me), "keydown"); - this.keycharm.bind("num+", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("num-", this._zoomOut.bind(me), "keydown"); - this.keycharm.bind("num-", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("-", this._zoomOut.bind(me), "keydown"); - this.keycharm.bind("-", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("[", this._zoomIn.bind(me), "keydown"); - this.keycharm.bind("[", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("]", this._zoomOut.bind(me), "keydown"); - this.keycharm.bind("]", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("pageup",this._zoomIn.bind(me), "keydown"); - this.keycharm.bind("pageup",this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("pagedown",this._zoomOut.bind(me),"keydown"); - this.keycharm.bind("pagedown",this._stopZoom.bind(me), "keyup"); - } + // update class name + frame.className = 'itemset' + (editable ? ' editable' : ''); - if (this.constants.dataManipulation.enabled == true) { - this.keycharm.bind("esc",this._createManipulatorBar.bind(me)); - this.keycharm.bind("delete",this._deleteSelected.bind(me)); - } + // reorder the groups (if needed) + resized = this._orderGroups() || resized; + + // check whether zoomed (in that case we need to re-stack everything) + // TODO: would be nicer to get this as a trigger from Range + var visibleInterval = range.end - range.start; + var zoomed = (visibleInterval != this.lastVisibleInterval) || (this.props.width != this.props.lastWidth); + if (zoomed) this.stackDirty = true; + this.lastVisibleInterval = visibleInterval; + this.props.lastWidth = this.props.width; + + var restack = this.stackDirty; + var firstGroup = this._firstGroup(); + var firstMargin = { + item: margin.item, + axis: margin.axis + }; + var nonFirstMargin = { + item: margin.item, + axis: margin.item.vertical / 2 + }; + var height = 0; + var minHeight = margin.axis + margin.item.vertical; + + // redraw the background group + this.groups[BACKGROUND].redraw(range, nonFirstMargin, restack); + + // redraw all regular groups + util.forEach(this.groups, function (group) { + var groupMargin = (group == firstGroup) ? firstMargin : nonFirstMargin; + var groupResized = group.redraw(range, groupMargin, restack); + resized = groupResized || resized; + height += group.height; + }); + height = Math.max(height, minHeight); + this.stackDirty = false; + + // update frame height + frame.style.height = asSize(height); + + // calculate actual size + this.props.width = frame.offsetWidth; + this.props.height = height; + + // reposition axis + this.dom.axis.style.top = asSize((orientation == 'top') ? + (this.body.domProps.top.height + this.body.domProps.border.top) : + (this.body.domProps.top.height + this.body.domProps.centerContainer.height)); + this.dom.axis.style.left = '0'; + + // check if this component is resized + resized = this._isResized() || resized; + + return resized; }; /** - * Cleans up all bindings of the network, removing it fully from the memory IF the variable is set to null after calling this function. - * var network = new vis.Network(..); - * network.destroy(); - * network = null; + * Get the first group, aligned with the axis + * @return {Group | null} firstGroup + * @private */ - Network.prototype.destroy = function() { - this.start = function () {}; - this.redraw = function () {}; - this.timer = false; + ItemSet.prototype._firstGroup = function() { + var firstGroupIndex = (this.options.orientation == 'top') ? 0 : (this.groupIds.length - 1); + var firstGroupId = this.groupIds[firstGroupIndex]; + var firstGroup = this.groups[firstGroupId] || this.groups[UNGROUPED]; - // cleanup physicsConfiguration if it exists - this._cleanupPhysicsConfiguration(); + return firstGroup || null; + }; - // remove keybindings - this.keycharm.reset(); + /** + * Create or delete the group holding all ungrouped items. This group is used when + * there are no groups specified. + * @protected + */ + ItemSet.prototype._updateUngrouped = function() { + var ungrouped = this.groups[UNGROUPED]; + var background = this.groups[BACKGROUND]; + var item, itemId; - // clear hammer bindings - this.hammer.dispose(); + if (this.groupsData) { + // remove the group holding all ungrouped items + if (ungrouped) { + ungrouped.hide(); + delete this.groups[UNGROUPED]; - // clear events - this.off(); + for (itemId in this.items) { + if (this.items.hasOwnProperty(itemId)) { + item = this.items[itemId]; + item.parent && item.parent.remove(item); + var groupId = this._getGroupId(item.data); + var group = this.groups[groupId]; + group && group.add(item) || item.hide(); + } + } + } + } + else { + // create a group holding all (unfiltered) items + if (!ungrouped) { + var id = null; + var data = null; + ungrouped = new Group(id, data, this); + this.groups[UNGROUPED] = ungrouped; - this._recursiveDOMDelete(this.containerElement); - } + for (itemId in this.items) { + if (this.items.hasOwnProperty(itemId)) { + item = this.items[itemId]; + ungrouped.add(item); + } + } - Network.prototype._recursiveDOMDelete = function(DOMobject) { - while (DOMobject.hasChildNodes() == true) { - this._recursiveDOMDelete(DOMobject.firstChild); - DOMobject.removeChild(DOMobject.firstChild); + ungrouped.show(); + } } - } + }; /** - * Get the pointer location from a touch location - * @param {{pageX: Number, pageY: Number}} touch - * @return {{x: Number, y: Number}} pointer - * @private + * Get the element for the labelset + * @return {HTMLElement} labelSet */ - Network.prototype._getPointer = function (touch) { - return { - x: touch.pageX - util.getAbsoluteLeft(this.frame.canvas), - y: touch.pageY - util.getAbsoluteTop(this.frame.canvas) - }; + ItemSet.prototype.getLabelSet = function() { + return this.dom.labelSet; }; /** - * On start of a touch gesture, store the pointer - * @param event - * @private + * Set items + * @param {vis.DataSet | null} items */ - Network.prototype._onTouch = function (event) { - if (new Date().valueOf() - this.touchTime > 100) { - this.drag.pointer = this._getPointer(event.gesture.center); - this.drag.pinched = false; - this.pinch.scale = this._getScale(); + ItemSet.prototype.setItems = function(items) { + var me = this, + ids, + oldItemsData = this.itemsData; + + // replace the dataset + if (!items) { + this.itemsData = null; + } + else if (items instanceof DataSet || items instanceof DataView) { + this.itemsData = items; + } + else { + throw new TypeError('Data must be an instance of DataSet or DataView'); + } + + if (oldItemsData) { + // unsubscribe from old dataset + util.forEach(this.itemListeners, function (callback, event) { + oldItemsData.off(event, callback); + }); - // to avoid double fireing of this event because we have two hammer instances. (on canvas and on frame) - this.touchTime = new Date().valueOf(); + // remove all drawn items + ids = oldItemsData.getIds(); + this._onRemove(ids); + } - this._handleTouch(this.drag.pointer); + if (this.itemsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.itemListeners, function (callback, event) { + me.itemsData.on(event, callback, id); + }); + + // add all new items + ids = this.itemsData.getIds(); + this._onAdd(ids); + + // update the group holding all ungrouped items + this._updateUngrouped(); } }; /** - * handle drag start event - * @private + * Get the current items + * @returns {vis.DataSet | null} */ - Network.prototype._onDragStart = function (event) { - this._handleDragStart(event); + ItemSet.prototype.getItems = function() { + return this.itemsData; }; - /** - * This function is called by _onDragStart. - * It is separated out because we can then overload it for the datamanipulation system. - * - * @private + * Set groups + * @param {vis.DataSet} groups */ - Network.prototype._handleDragStart = function(event) { - // in case the touch event was triggered on an external div, do the initial touch now. - if (this.drag.pointer === undefined) { - this._onTouch(event); + ItemSet.prototype.setGroups = function(groups) { + var me = this, + ids; + + // unsubscribe from current dataset + if (this.groupsData) { + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.unsubscribe(event, callback); + }); + + // remove all drawn groups + ids = this.groupsData.getIds(); + this.groupsData = null; + this._onRemoveGroups(ids); // note: this will cause a redraw } - var node = this._getNodeAt(this.drag.pointer); - // note: drag.pointer is set in _onTouch to get the initial touch location + // replace the dataset + if (!groups) { + this.groupsData = null; + } + else if (groups instanceof DataSet || groups instanceof DataView) { + this.groupsData = groups; + } + else { + throw new TypeError('Data must be an instance of DataSet or DataView'); + } - this.drag.dragging = true; - this.drag.selection = []; - this.drag.translation = this._getTranslation(); - this.drag.nodeId = null; - this.draggingNodes = false; + if (this.groupsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.on(event, callback, id); + }); - if (node != null && this.constants.dragNodes == true) { - this.draggingNodes = true; - this.drag.nodeId = node.id; - // select the clicked node if not yet selected - if (!node.isSelected()) { - this._selectObject(node,false); - } + // draw all ms + ids = this.groupsData.getIds(); + this._onAddGroups(ids); + } - this.emit("dragStart",{nodeIds:this.getSelection().nodes}); + // update the group holding all ungrouped items + this._updateUngrouped(); - // create an array with the selected nodes and their original location and status - for (var objectId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(objectId)) { - var object = this.selectionObj.nodes[objectId]; - var s = { - id: object.id, - node: object, + // update the order of all items in each group + this._order(); - // store original x, y, xFixed and yFixed, make the node temporarily Fixed - x: object.x, - y: object.y, - xFixed: object.xFixed, - yFixed: object.yFixed - }; + this.body.emitter.emit('change', {queue: true}); + }; - object.xFixed = true; - object.yFixed = true; + /** + * Get the current groups + * @returns {vis.DataSet | null} groups + */ + ItemSet.prototype.getGroups = function() { + return this.groupsData; + }; - this.drag.selection.push(s); + /** + * Remove an item by its id + * @param {String | Number} id + */ + ItemSet.prototype.removeItem = function(id) { + var item = this.itemsData.get(id), + dataset = this.itemsData.getDataSet(); + + if (item) { + // confirm deletion + this.options.onRemove(item, function (item) { + if (item) { + // remove by id here, it is possible that an item has no id defined + // itself, so better not delete by the item itself + dataset.remove(id); } - } + }); } }; - /** - * handle drag event + * Get the time of an item based on it's data and options.type + * @param {Object} itemData + * @returns {string} Returns the type * @private */ - Network.prototype._onDrag = function (event) { - this._handleOnDrag(event) + ItemSet.prototype._getType = function (itemData) { + return itemData.type || this.options.type || (itemData.end ? 'range' : 'box'); }; /** - * This function is called by _onDrag. - * It is separated out because we can then overload it for the datamanipulation system. - * + * Get the group id for an item + * @param {Object} itemData + * @returns {string} Returns the groupId * @private */ - Network.prototype._handleOnDrag = function(event) { - if (this.drag.pinched) { - return; + ItemSet.prototype._getGroupId = function (itemData) { + var type = this._getType(itemData); + if (type == 'background' && itemData.group == undefined) { + return BACKGROUND; } + else { + return this.groupsData ? itemData.group : UNGROUPED; + } + }; - // remove the focus on node if it is focussed on by the focusOnNode - this.releaseNode(); - - var pointer = this._getPointer(event.gesture.center); + /** + * Handle updated items + * @param {Number[]} ids + * @protected + */ + ItemSet.prototype._onUpdate = function(ids) { var me = this; - var drag = this.drag; - var selection = drag.selection; - if (selection && selection.length && this.constants.dragNodes == true) { - // calculate delta's and new location - var deltaX = pointer.x - drag.pointer.x; - var deltaY = pointer.y - drag.pointer.y; - // update position of all selected nodes - selection.forEach(function (s) { - var node = s.node; + ids.forEach(function (id) { + var itemData = me.itemsData.get(id, me.itemOptions); + var item = me.items[id]; + var type = me._getType(itemData); - if (!s.xFixed) { - node.x = me._XconvertDOMtoCanvas(me._XconvertCanvasToDOM(s.x) + deltaX); - } + var constructor = ItemSet.types[type]; - if (!s.yFixed) { - node.y = me._YconvertDOMtoCanvas(me._YconvertCanvasToDOM(s.y) + deltaY); + if (item) { + // update item + if (!constructor || !(item instanceof constructor)) { + // item type has changed, delete the item and recreate it + me._removeItem(item); + item = null; } - }); - - - // start _animationStep if not yet running - if (!this.moving) { - this.moving = true; - this.start(); - } - } - else { - // move the network - if (this.constants.dragNetwork == true) { - // if the drag was not started properly because the click started outside the network div, start it now. - if (this.drag.pointer === undefined) { - this._handleDragStart(event); - return; + else { + me._updateItem(item, itemData); } - var diffX = pointer.x - this.drag.pointer.x; - var diffY = pointer.y - this.drag.pointer.y; + } - this._setTranslation( - this.drag.translation.x + diffX, - this.drag.translation.y + diffY - ); - this._redraw(); + if (!item) { + // create item + if (constructor) { + item = new constructor(itemData, me.conversion, me.options); + item.id = id; // TODO: not so nice setting id afterwards + me._addItem(item); + } + else if (type == 'rangeoverflow') { + // TODO: deprecated since version 2.1.0 (or 3.0.0?). cleanup some day + throw new TypeError('Item type "rangeoverflow" is deprecated. Use css styling instead: ' + + '.vis.timeline .item.range .content {overflow: visible;}'); + } + else { + throw new TypeError('Unknown item type "' + type + '"'); + } } - } + }); + + this._order(); + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change', {queue: true}); }; /** - * handle drag start event - * @private + * Handle added items + * @param {Number[]} ids + * @protected */ - Network.prototype._onDragEnd = function (event) { - this._handleDragEnd(event); - }; - - - Network.prototype._handleDragEnd = function(event) { - this.drag.dragging = false; - var selection = this.drag.selection; - if (selection && selection.length) { - selection.forEach(function (s) { - // restore original xFixed and yFixed - s.node.xFixed = s.xFixed; - s.node.yFixed = s.yFixed; - }); - this.moving = true; - this.start(); - } - else { - this._redraw(); - } - if (this.draggingNodes == false) { - this.emit("dragEnd",{nodeIds:[]}); - } - else { - this.emit("dragEnd",{nodeIds:this.getSelection().nodes}); - } + ItemSet.prototype._onAdd = ItemSet.prototype._onUpdate; - } /** - * handle tap/click event: select/unselect a node - * @private + * Handle removed items + * @param {Number[]} ids + * @protected */ - Network.prototype._onTap = function (event) { - var pointer = this._getPointer(event.gesture.center); - this.pointerPosition = pointer; - this._handleTap(pointer); + ItemSet.prototype._onRemove = function(ids) { + var count = 0; + var me = this; + ids.forEach(function (id) { + var item = me.items[id]; + if (item) { + count++; + me._removeItem(item); + } + }); + if (count) { + // update order + this._order(); + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change', {queue: true}); + } }; - /** - * handle doubletap event + * Update the order of item in all groups * @private */ - Network.prototype._onDoubleTap = function (event) { - var pointer = this._getPointer(event.gesture.center); - this._handleDoubleTap(pointer); + ItemSet.prototype._order = function() { + // reorder the items in all groups + // TODO: optimization: only reorder groups affected by the changed items + util.forEach(this.groups, function (group) { + group.order(); + }); }; - /** - * handle long tap event: multi select nodes + * Handle updated groups + * @param {Number[]} ids * @private */ - Network.prototype._onHold = function (event) { - var pointer = this._getPointer(event.gesture.center); - this.pointerPosition = pointer; - this._handleOnHold(pointer); + ItemSet.prototype._onUpdateGroups = function(ids) { + this._onAddGroups(ids); }; /** - * handle the release of the screen - * + * Handle changed groups (added or updated) + * @param {Number[]} ids * @private */ - Network.prototype._onRelease = function (event) { - var pointer = this._getPointer(event.gesture.center); - this._handleOnRelease(pointer); - }; + ItemSet.prototype._onAddGroups = function(ids) { + var me = this; - /** - * Handle pinch event - * @param event - * @private - */ - Network.prototype._onPinch = function (event) { - var pointer = this._getPointer(event.gesture.center); + ids.forEach(function (id) { + var groupData = me.groupsData.get(id); + var group = me.groups[id]; - this.drag.pinched = true; - if (!('scale' in this.pinch)) { - this.pinch.scale = 1; - } + if (!group) { + // check for reserved ids + if (id == UNGROUPED || id == BACKGROUND) { + throw new Error('Illegal group id. ' + id + ' is a reserved id.'); + } - // TODO: enabled moving while pinching? - var scale = this.pinch.scale * event.gesture.scale; - this._zoom(scale, pointer) + var groupOptions = Object.create(me.options); + util.extend(groupOptions, { + height: null + }); + + group = new Group(id, groupData, me); + me.groups[id] = group; + + // add items with this groupId to the new group + for (var itemId in me.items) { + if (me.items.hasOwnProperty(itemId)) { + var item = me.items[itemId]; + if (item.data.group == id) { + group.add(item); + } + } + } + + group.order(); + group.show(); + } + else { + // update group + group.setData(groupData); + } + }); + + this.body.emitter.emit('change', {queue: true}); }; /** - * Zoom the network in or out - * @param {Number} scale a number around 1, and between 0.01 and 10 - * @param {{x: Number, y: Number}} pointer Position on screen - * @return {Number} appliedScale scale is limited within the boundaries + * Handle removed groups + * @param {Number[]} ids * @private */ - Network.prototype._zoom = function(scale, pointer) { - if (this.constants.zoomable == true) { - var scaleOld = this._getScale(); - if (scale < 0.00001) { - scale = 0.00001; - } - if (scale > 10) { - scale = 10; - } + ItemSet.prototype._onRemoveGroups = function(ids) { + var groups = this.groups; + ids.forEach(function (id) { + var group = groups[id]; - var preScaleDragPointer = null; - if (this.drag !== undefined) { - if (this.drag.dragging == true) { - preScaleDragPointer = this.DOMtoCanvas(this.drag.pointer); - } + if (group) { + group.hide(); + delete groups[id]; } - // + this.frame.canvas.clientHeight / 2 - var translation = this._getTranslation(); + }); - var scaleFrac = scale / scaleOld; - var tx = (1 - scaleFrac) * pointer.x + translation.x * scaleFrac; - var ty = (1 - scaleFrac) * pointer.y + translation.y * scaleFrac; + this.markDirty(); - this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), - "y" : this._YconvertDOMtoCanvas(pointer.y)}; + this.body.emitter.emit('change', {queue: true}); + }; - this._setScale(scale); - this._setTranslation(tx, ty); - this.updateClustersDefault(); + /** + * Reorder the groups if needed + * @return {boolean} changed + * @private + */ + ItemSet.prototype._orderGroups = function () { + if (this.groupsData) { + // reorder the groups + var groupIds = this.groupsData.getIds({ + order: this.options.groupOrder + }); - if (preScaleDragPointer != null) { - var postScaleDragPointer = this.canvasToDOM(preScaleDragPointer); - this.drag.pointer.x = postScaleDragPointer.x; - this.drag.pointer.y = postScaleDragPointer.y; - } + var changed = !util.equalArray(groupIds, this.groupIds); + if (changed) { + // hide all groups, removes them from the DOM + var groups = this.groups; + groupIds.forEach(function (groupId) { + groups[groupId].hide(); + }); - this._redraw(); + // show the groups again, attach them to the DOM in correct order + groupIds.forEach(function (groupId) { + groups[groupId].show(); + }); - if (scaleOld < scale) { - this.emit("zoom", {direction:"+"}); - } - else { - this.emit("zoom", {direction:"-"}); + this.groupIds = groupIds; } - return scale; + return changed; + } + else { + return false; } }; - /** - * Event handler for mouse wheel event, used to zoom the timeline - * See http://adomas.org/javascript-mouse-wheel/ - * https://github.com/EightMedia/hammer.js/issues/256 - * @param {MouseEvent} event + * Add a new item + * @param {Item} item * @private */ - Network.prototype._onMouseWheel = function(event) { - // retrieve delta - var delta = 0; - if (event.wheelDelta) { /* IE/Opera. */ - delta = event.wheelDelta/120; - } else if (event.detail) { /* Mozilla case. */ - // In Mozilla, sign of delta is different than in IE. - // Also, delta is multiple of 3. - delta = -event.detail/3; - } + ItemSet.prototype._addItem = function(item) { + this.items[item.id] = item; - // If delta is nonzero, handle it. - // Basically, delta is now positive if wheel was scrolled up, - // and negative, if wheel was scrolled down. - if (delta) { + // add to group + var groupId = this._getGroupId(item.data); + var group = this.groups[groupId]; + if (group) group.add(item); + }; - // calculate the new scale - var scale = this._getScale(); - var zoom = delta / 10; - if (delta < 0) { - zoom = zoom / (1 - zoom); - } - scale *= (1 + zoom); + /** + * Update an existing item + * @param {Item} item + * @param {Object} itemData + * @private + */ + ItemSet.prototype._updateItem = function(item, itemData) { + var oldGroupId = item.data.group; - // calculate the pointer location - var gesture = hammerUtil.fakeGesture(this, event); - var pointer = this._getPointer(gesture.center); + // update the items data (will redraw the item when displayed) + item.setData(itemData); - // apply the new scale - this._zoom(scale, pointer); - } + // update group + if (oldGroupId != item.data.group) { + var oldGroup = this.groups[oldGroupId]; + if (oldGroup) oldGroup.remove(item); - // Prevent default actions caused by mouse wheel. - event.preventDefault(); + var groupId = this._getGroupId(item.data); + var group = this.groups[groupId]; + if (group) group.add(item); + } }; - /** - * Mouse move handler for checking whether the title moves over a node with a title. - * @param {Event} event + * Delete an item from the ItemSet: remove it from the DOM, from the map + * with items, and from the map with visible items, and from the selection + * @param {Item} item * @private */ - Network.prototype._onMouseMoveTitle = function (event) { - var gesture = hammerUtil.fakeGesture(this, event); - var pointer = this._getPointer(gesture.center); - var popupVisible = false; - - // check if the previously selected node is still selected - if (this.popup !== undefined) { - if (this.popup.hidden === false) { - this._checkHidePopup(pointer); - } - - // if the popup was not hidden above - if (this.popup.hidden === false) { - popupVisible = true; - this.popup.setPosition(pointer.x + 3,pointer.y - 5) - this.popup.show(); - } - } + ItemSet.prototype._removeItem = function(item) { + // remove from DOM + item.hide(); - // if we bind the keyboard to the div, we have to highlight it to use it. This highlights it on mouse over - if (this.constants.keyboard.bindToWindow == false && this.constants.keyboard.enabled == true) { - this.frame.focus(); - } + // remove from items + delete this.items[item.id]; - // start a timeout that will check if the mouse is positioned above an element - if (popupVisible === false) { - var me = this; - var checkShow = function () { - me._checkShowPopup(pointer); - }; - if (this.popupTimer) { - clearInterval(this.popupTimer); // stop any running calculationTimer - } - if (!this.drag.dragging) { - this.popupTimer = setTimeout(checkShow, this.constants.tooltip.delay); - } - } + // remove from selection + var index = this.selection.indexOf(item.id); + if (index != -1) this.selection.splice(index, 1); - /** - * Adding hover highlights - */ - if (this.constants.hover == true) { - // removing all hover highlights - for (var edgeId in this.hoverObj.edges) { - if (this.hoverObj.edges.hasOwnProperty(edgeId)) { - this.hoverObj.edges[edgeId].hover = false; - delete this.hoverObj.edges[edgeId]; - } - } + // remove from group + item.parent && item.parent.remove(item); + }; - // adding hover highlights - var obj = this._getNodeAt(pointer); - if (obj == null) { - obj = this._getEdgeAt(pointer); - } - if (obj != null) { - this._hoverObject(obj); - } + /** + * Create an array containing all items being a range (having an end date) + * @param array + * @returns {Array} + * @private + */ + ItemSet.prototype._constructByEndArray = function(array) { + var endArray = []; - // removing all node hover highlights except for the selected one. - for (var nodeId in this.hoverObj.nodes) { - if (this.hoverObj.nodes.hasOwnProperty(nodeId)) { - if (obj instanceof Node && obj.id != nodeId || obj instanceof Edge || obj == null) { - this._blurObject(this.hoverObj.nodes[nodeId]); - delete this.hoverObj.nodes[nodeId]; - } - } + for (var i = 0; i < array.length; i++) { + if (array[i] instanceof RangeItem) { + endArray.push(array[i]); } - this.redraw(); } + return endArray; }; /** - * Check if there is an element on the given position in the network - * (a node or edge). If so, and if this element has a title, - * show a popup window with its title. + * Register the clicked item on touch, before dragStart is initiated. * - * @param {{x:Number, y:Number}} pointer + * dragStart is initiated from a mousemove event, which can have left the item + * already resulting in an item == null + * + * @param {Event} event * @private */ - Network.prototype._checkShowPopup = function (pointer) { - var obj = { - left: this._XconvertDOMtoCanvas(pointer.x), - top: this._YconvertDOMtoCanvas(pointer.y), - right: this._XconvertDOMtoCanvas(pointer.x), - bottom: this._YconvertDOMtoCanvas(pointer.y) - }; + ItemSet.prototype._onTouch = function (event) { + // store the touched item, used in _onDragStart + this.touchParams.item = ItemSet.itemFromTarget(event); + }; - var id; - var previousPopupObjId = this.popupObj === undefined ? "" : this.popupObj.id; - var nodeUnderCursor = false; - var popupType = "node"; + /** + * Start dragging the selected events + * @param {Event} event + * @private + */ + ItemSet.prototype._onDragStart = function (event) { + if (!this.options.editable.updateTime && !this.options.editable.updateGroup) { + return; + } - if (this.popupObj == undefined) { - // search the nodes for overlap, select the top one in case of multiple nodes - var nodes = this.nodes; - var overlappingNodes = []; - for (id in nodes) { - if (nodes.hasOwnProperty(id)) { - var node = nodes[id]; - if (node.isOverlappingWith(obj)) { - if (node.getTitle() !== undefined) { - overlappingNodes.push(id); - } - } + var item = this.touchParams.item || null; + var me = this; + var props; + + if (item && item.selected) { + var dragLeftItem = event.target.dragLeftItem; + var dragRightItem = event.target.dragRightItem; + + if (dragLeftItem) { + props = { + item: dragLeftItem, + initialX: event.gesture.center.clientX + }; + + if (me.options.editable.updateTime) { + props.start = item.data.start.valueOf(); + } + if (me.options.editable.updateGroup) { + if ('group' in item.data) props.group = item.data.group; } - } - if (overlappingNodes.length > 0) { - // if there are overlapping nodes, select the last one, this is the - // one which is drawn on top of the others - this.popupObj = this.nodes[overlappingNodes[overlappingNodes.length - 1]]; - // if you hover over a node, the title of the edge is not supposed to be shown. - nodeUnderCursor = true; + this.touchParams.itemProps = [props]; } - } + else if (dragRightItem) { + props = { + item: dragRightItem, + initialX: event.gesture.center.clientX + }; - if (this.popupObj === undefined && nodeUnderCursor == false) { - // search the edges for overlap - var edges = this.edges; - var overlappingEdges = []; - for (id in edges) { - if (edges.hasOwnProperty(id)) { - var edge = edges[id]; - if (edge.connected && (edge.getTitle() !== undefined) && - edge.isOverlappingWith(obj)) { - overlappingEdges.push(id); - } + if (me.options.editable.updateTime) { + props.end = item.data.end.valueOf(); + } + if (me.options.editable.updateGroup) { + if ('group' in item.data) props.group = item.data.group; } - } - if (overlappingEdges.length > 0) { - this.popupObj = this.edges[overlappingEdges[overlappingEdges.length - 1]]; - popupType = "edge"; + this.touchParams.itemProps = [props]; } - } + else { + this.touchParams.itemProps = this.getSelection().map(function (id) { + var item = me.items[id]; + var props = { + item: item, + initialX: event.gesture.center.clientX + }; - if (this.popupObj) { - // show popup message window - if (this.popupObj.id != previousPopupObjId) { - if (this.popup === undefined) { - this.popup = new Popup(this.frame, this.constants.tooltip); - } + if (me.options.editable.updateTime) { + if ('start' in item.data) { + props.start = item.data.start.valueOf(); - this.popup.popupTargetType = popupType; - this.popup.popupTargetId = this.popupObj.id; + if ('end' in item.data) { + // we store a duration here in order not to change the width + // of the item when moving it. + props.duration = item.data.end.valueOf() - props.start; + } + } + } + if (me.options.editable.updateGroup) { + if ('group' in item.data) props.group = item.data.group; + } - // adjust a small offset such that the mouse cursor is located in the - // bottom left location of the popup, and you can easily move over the - // popup area - this.popup.setPosition(pointer.x + 3, pointer.y - 5); - this.popup.setText(this.popupObj.getTitle()); - this.popup.show(); + return props; + }); } + + event.stopPropagation(); } - else { - if (this.popup) { - this.popup.hide(); - } + else if (this.options.editable.add && event.gesture.srcEvent.ctrlKey) { + // create a new range item when dragging with ctrl key down + this._onDragStartAddItem(event); } }; - /** - * Check if the popup must be hidden, which is the case when the mouse is no - * longer hovering on the object - * @param {{x:Number, y:Number}} pointer + * Start creating a new range item by dragging. + * @param {Event} event * @private */ - Network.prototype._checkHidePopup = function (pointer) { - var pointerObj = { - left: this._XconvertDOMtoCanvas(pointer.x), - top: this._YconvertDOMtoCanvas(pointer.y), - right: this._XconvertDOMtoCanvas(pointer.x), - bottom: this._YconvertDOMtoCanvas(pointer.y) + ItemSet.prototype._onDragStartAddItem = function (event) { + var snap = this.options.snap || null; + var xAbs = util.getAbsoluteLeft(this.dom.frame); + var x = event.gesture.center.pageX - xAbs - 10; // minus 10 to compensate for the drag starting as soon as you've moved 10px + var time = this.body.util.toTime(x); + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); + var start = snap ? snap(time, scale, step) : start; + var end = start; + + var itemData = { + type: 'range', + start: start, + end: end, + content: 'new item' }; - var stillOnObj = false; - if (this.popup.popupTargetType == 'node') { - stillOnObj = this.nodes[this.popup.popupTargetId].isOverlappingWith(pointerObj); - if (stillOnObj === true) { - var overNode = this._getNodeAt(pointer); - stillOnObj = overNode.id == this.popup.popupTargetId; - } - } - else { - if (this._getNodeAt(pointer) === null) { - stillOnObj = this.edges[this.popup.popupTargetId].isOverlappingWith(pointerObj); - } + var id = util.randomUUID(); + itemData[this.itemsData._fieldId] = id; + + var group = this.groupFromTarget(event); + if (group) { + itemData.group = group.groupId; } + var newItem = new RangeItem(itemData, this.conversion, this.options); + newItem.id = id; // TODO: not so nice setting id afterwards + this._addItem(newItem); - if (stillOnObj === false) { - this.popupObj = undefined; - this.popup.hide(); - } - }; + var props = { + item: newItem, + end: end.valueOf(), + initialX: event.gesture.center.clientX + }; + this.touchParams.itemProps = [props]; + event.stopPropagation(); + }; /** - * Set a new size for the network - * @param {string} width Width in pixels or percentage (for example '800px' - * or '50%') - * @param {string} height Height in pixels or percentage (for example '400px' - * or '30%') + * Drag selected items + * @param {Event} event + * @private */ - Network.prototype.setSize = function(width, height) { - var emitEvent = false; - var oldWidth = this.frame.canvas.width; - var oldHeight = this.frame.canvas.height; - if (width != this.constants.width || height != this.constants.height || this.frame.style.width != width || this.frame.style.height != height) { - this.frame.style.width = width; - this.frame.style.height = height; + ItemSet.prototype._onDrag = function (event) { + event.preventDefault(); - this.frame.canvas.style.width = '100%'; - this.frame.canvas.style.height = '100%'; + if (this.touchParams.itemProps) { + var me = this; + var snap = this.options.snap || null; + var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width; + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); - this.frame.canvas.width = this.frame.canvas.clientWidth * this.pixelRatio; - this.frame.canvas.height = this.frame.canvas.clientHeight * this.pixelRatio; + // move + this.touchParams.itemProps.forEach(function (props) { + var newProps = {}; + var current = me.body.util.toTime(event.gesture.center.clientX - xOffset); + var initial = me.body.util.toTime(props.initialX - xOffset); + var offset = current - initial; - this.constants.width = width; - this.constants.height = height; + if ('start' in props) { + var start = new Date(props.start + offset); + newProps.start = snap ? snap(start, scale, step) : start; + } - emitEvent = true; - } - else { - // this would adapt the width of the canvas to the width from 100% if and only if - // there is a change. + if ('end' in props) { + var end = new Date(props.end + offset); + newProps.end = snap ? snap(end, scale, step) : end; + } + else if ('duration' in props) { + newProps.end = new Date(newProps.start.valueOf() + props.duration); + } - if (this.frame.canvas.width != this.frame.canvas.clientWidth * this.pixelRatio) { - this.frame.canvas.width = this.frame.canvas.clientWidth * this.pixelRatio; - emitEvent = true; - } - if (this.frame.canvas.height != this.frame.canvas.clientHeight * this.pixelRatio) { - this.frame.canvas.height = this.frame.canvas.clientHeight * this.pixelRatio; - emitEvent = true; - } - } + if ('group' in props) { + // drag from one group to another + var group = me.groupFromTarget(event); + newProps.group = group && group.groupId; + } - if (emitEvent == true) { - this.emit('resize', {width:this.frame.canvas.width * this.pixelRatio,height:this.frame.canvas.height * this.pixelRatio, oldWidth: oldWidth * this.pixelRatio, oldHeight: oldHeight * this.pixelRatio}); + // confirm moving the item + var itemData = util.extend({}, props.item.data, newProps); + me.options.onMoving(itemData, function (itemData) { + if (itemData) { + me._updateItemProps(props.item, itemData); + } + }); + }); + + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change'); + + event.stopPropagation(); } }; /** - * Set a data set with nodes for the network - * @param {Array | DataSet | DataView} nodes The data containing the nodes. + * Update an items properties + * @param {Item} item + * @param {Object} props Can contain properties start, end, and group. * @private */ - Network.prototype._setNodes = function(nodes) { - var oldNodesData = this.nodesData; - - if (nodes instanceof DataSet || nodes instanceof DataView) { - this.nodesData = nodes; + ItemSet.prototype._updateItemProps = function(item, props) { + // TODO: copy all properties from props to item? (also new ones) + if ('start' in props) { + item.data.start = props.start; } - else if (Array.isArray(nodes)) { - this.nodesData = new DataSet(); - this.nodesData.add(nodes); + if ('end' in props) { + item.data.end = props.end; } - else if (!nodes) { - this.nodesData = new DataSet(); + else if ('duration' in props) { + item.data.end = new Date(props.start.valueOf() + props.duration); } - else { - throw new TypeError('Array or DataSet expected'); + if ('group' in props && item.data.group != props.group) { + this._moveToGroup(item, props.group) } + }; - if (oldNodesData) { - // unsubscribe from old dataset - util.forEach(this.nodesListeners, function (callback, event) { - oldNodesData.off(event, callback); - }); + /** + * Move an item to another group + * @param {Item} item + * @param {String | Number} groupId + * @private + */ + ItemSet.prototype._moveToGroup = function(item, groupId) { + var group = this.groups[groupId]; + if (group && group.groupId != item.data.group) { + var oldGroup = item.parent; + oldGroup.remove(item); + oldGroup.order(); + group.add(item); + group.order(); + + item.data.group = group.groupId; } + }; - // remove drawn nodes - this.nodes = {}; + /** + * End of dragging selected items + * @param {Event} event + * @private + */ + ItemSet.prototype._onDragEnd = function (event) { + event.preventDefault() - if (this.nodesData) { - // subscribe to new dataset + if (this.touchParams.itemProps) { + // prepare a change set for the changed items + var changes = []; var me = this; - util.forEach(this.nodesListeners, function (callback, event) { - me.nodesData.on(event, callback); + var dataset = this.itemsData.getDataSet(); + + var itemProps = this.touchParams.itemProps ; + this.touchParams.itemProps = null; + itemProps.forEach(function (props) { + var id = props.item.id; + var itemData = me.itemsData.get(id, me.itemOptions); + + if (!itemData) { + // add a new item + me.options.onAdd(props.item.data, function (itemData) { + me._removeItem(props.item); // remove temporary item + if (itemData) { + me.itemsData.getDataSet().add(itemData); + } + + // force re-stacking of all items next redraw + me.stackDirty = true; + me.body.emitter.emit('change'); + }); + } + else { + // update existing item + var changed = false; + if ('start' in props.item.data) { + changed = (props.start != props.item.data.start.valueOf()); + itemData.start = util.convert(props.item.data.start, + dataset._options.type && dataset._options.type.start || 'Date'); + } + if ('end' in props.item.data) { + changed = changed || (props.end != props.item.data.end.valueOf()); + itemData.end = util.convert(props.item.data.end, + dataset._options.type && dataset._options.type.end || 'Date'); + } + if ('group' in props.item.data) { + changed = changed || (props.group != props.item.data.group); + itemData.group = props.item.data.group; + } + + // only apply changes when start or end is actually changed + if (changed) { + me.options.onMove(itemData, function (itemData) { + if (itemData) { + // apply changes + itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) + changes.push(itemData); + } + else { + // restore original values + me._updateItemProps(props.item, props); + + me.stackDirty = true; // force re-stacking of all items next redraw + me.body.emitter.emit('change'); + } + }); + } + } }); - // draw all new nodes - var ids = this.nodesData.getIds(); - this._addNodes(ids); + // apply the changes to the data (if there are changes) + if (changes.length) { + dataset.update(changes); + } + + event.stopPropagation(); } - this._updateSelection(); }; /** - * Add nodes - * @param {Number[] | String[]} ids + * Handle selecting/deselecting an item when tapping it + * @param {Event} event * @private */ - Network.prototype._addNodes = function(ids) { - var id; - for (var i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - var data = this.nodesData.get(id); - var node = new Node(data, this.images, this.groups, this.constants); - this.nodes[id] = node; // note: this may replace an existing node - if ((node.xFixed == false || node.yFixed == false) && (node.x === null || node.y === null)) { - var radius = 10 * 0.1*ids.length + 10; - var angle = 2 * Math.PI * Math.random(); - if (node.xFixed == false) {node.x = radius * Math.cos(angle);} - if (node.yFixed == false) {node.y = radius * Math.sin(angle);} - } - this.moving = true; + ItemSet.prototype._onSelectItem = function (event) { + if (!this.options.selectable) return; + + var ctrlKey = event.gesture.srcEvent && event.gesture.srcEvent.ctrlKey; + var shiftKey = event.gesture.srcEvent && event.gesture.srcEvent.shiftKey; + if (ctrlKey || shiftKey) { + this._onMultiSelectItem(event); + return; } - this._updateNodeIndexList(); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); + var oldSelection = this.getSelection(); + + var item = ItemSet.itemFromTarget(event); + var selection = item ? [item.id] : []; + this.setSelection(selection); + + var newSelection = this.getSelection(); + + // emit a select event, + // except when old selection is empty and new selection is still empty + if (newSelection.length > 0 || oldSelection.length > 0) { + this.body.emitter.emit('select', { + items: newSelection + }); } - this._updateCalculationNodes(); - this._reconnectEdges(); - this._updateValueRange(this.nodes); - this.updateLabels(); }; /** - * Update existing nodes, or create them when not yet existing - * @param {Number[] | String[]} ids + * Handle creation and updates of an item on double tap + * @param event * @private */ - Network.prototype._updateNodes = function(ids) { - var nodesData = this.nodesData.get(ids); - var nodes = this.nodes; + ItemSet.prototype._onAddItem = function (event) { + if (!this.options.selectable) return; + if (!this.options.editable.add) return; - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; - var node = nodes[id]; - var data = nodesData[i]; - if (node) { - // update node - node.setProperties(data, this.constants); - } - else { - // create node - node = new Node(properties, this.images, this.groups, this.constants); - nodes[id] = node; - } - } - this.moving = true; - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); - } - this._updateNodeIndexList(); - this._updateValueRange(nodes); - this._markAllEdgesAsDirty(); - }; + var me = this, + snap = this.options.snap || null, + item = ItemSet.itemFromTarget(event); + if (item) { + // update item - Network.prototype._markAllEdgesAsDirty = function() { - for (var edgeId in this.edges) { - this.edges[edgeId].colorDirty = true; + // execute async handler to update the item (or cancel it) + var itemData = me.itemsData.get(item.id); // get a clone of the data from the dataset + this.options.onUpdate(itemData, function (itemData) { + if (itemData) { + me.itemsData.getDataSet().update(itemData); + } + }); } - } + else { + // add item + var xAbs = util.getAbsoluteLeft(this.dom.frame); + var x = event.gesture.center.pageX - xAbs; + var start = this.body.util.toTime(x); + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); - /** - * Remove existing nodes. If nodes do not exist, the method will just ignore it. - * @param {Number[] | String[]} ids - * @private - */ - Network.prototype._removeNodes = function(ids) { - var nodes = this.nodes; + var newItem = { + start: snap ? snap(start, scale, step) : start, + content: 'new item' + }; - // remove from selection - for (var i = 0, len = ids.length; i < len; i++) { - if (this.selectionObj.nodes[ids[i]] !== undefined) { - this.nodes[ids[i]].unselect(); - this._removeFromSelection(this.nodes[ids[i]]); + // when default type is a range, add a default end date to the new item + if (this.options.type === 'range') { + var end = this.body.util.toTime(x + this.props.width / 5); + newItem.end = snap ? snap(end, scale, step) : end; } - } - - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; - delete nodes[id]; - } + newItem[this.itemsData._fieldId] = util.randomUUID(); + var group = this.groupFromTarget(event); + if (group) { + newItem.group = group.groupId; + } - this._updateNodeIndexList(); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); + // execute async handler to customize (or cancel) adding an item + this.options.onAdd(newItem, function (item) { + if (item) { + me.itemsData.getDataSet().add(item); + // TODO: need to trigger a redraw? + } + }); } - this._updateCalculationNodes(); - this._reconnectEdges(); - this._updateSelection(); - this._updateValueRange(nodes); }; /** - * Load edges by reading the data table - * @param {Array | DataSet | DataView} edges The data containing the edges. - * @private + * Handle selecting/deselecting multiple items when holding an item + * @param {Event} event * @private */ - Network.prototype._setEdges = function(edges) { - var oldEdgesData = this.edgesData; + ItemSet.prototype._onMultiSelectItem = function (event) { + if (!this.options.selectable) return; - if (edges instanceof DataSet || edges instanceof DataView) { - this.edgesData = edges; - } - else if (Array.isArray(edges)) { - this.edgesData = new DataSet(); - this.edgesData.add(edges); - } - else if (!edges) { - this.edgesData = new DataSet(); - } - else { - throw new TypeError('Array or DataSet expected'); - } + var selection, + item = ItemSet.itemFromTarget(event); - if (oldEdgesData) { - // unsubscribe from old dataset - util.forEach(this.edgesListeners, function (callback, event) { - oldEdgesData.off(event, callback); - }); - } + if (item) { + // multi select items + selection = this.getSelection(); // current selection - // remove drawn edges - this.edges = {}; + var shiftKey = event.gesture.touches[0] && event.gesture.touches[0].shiftKey || false; + if (shiftKey) { + // select all items between the old selection and the tapped item - if (this.edgesData) { - // subscribe to new dataset - var me = this; - util.forEach(this.edgesListeners, function (callback, event) { - me.edgesData.on(event, callback); - }); + // determine the selection range + selection.push(item.id); + var range = ItemSet._getItemRange(this.itemsData.get(selection, this.itemOptions)); - // draw all new nodes - var ids = this.edgesData.getIds(); - this._addEdges(ids); - } + // select all items within the selection range + selection = []; + for (var id in this.items) { + if (this.items.hasOwnProperty(id)) { + var _item = this.items[id]; + var start = _item.data.start; + var end = (_item.data.end !== undefined) ? _item.data.end : start; - this._reconnectEdges(); + if (start >= range.min && end <= range.max) { + selection.push(_item.id); // do not use id but item.id, id itself is stringified + } + } + } + } + else { + // add/remove this item from the current selection + var index = selection.indexOf(item.id); + if (index == -1) { + // item is not yet selected -> select it + selection.push(item.id); + } + else { + // item is already selected -> deselect it + selection.splice(index, 1); + } + } + + this.setSelection(selection); + + this.body.emitter.emit('select', { + items: this.getSelection() + }); + } }; /** - * Add edges - * @param {Number[] | String[]} ids + * Calculate the time range of a list of items + * @param {Array.} itemsData + * @return {{min: Date, max: Date}} Returns the range of the provided items * @private */ - Network.prototype._addEdges = function (ids) { - var edges = this.edges, - edgesData = this.edgesData; + ItemSet._getItemRange = function(itemsData) { + var max = null; + var min = null; - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; + itemsData.forEach(function (data) { + if (min == null || data.start < min) { + min = data.start; + } - var oldEdge = edges[id]; - if (oldEdge) { - oldEdge.disconnect(); + if (data.end != undefined) { + if (max == null || data.end > max) { + max = data.end; + } + } + else { + if (max == null || data.start > max) { + max = data.start; + } } + }); - var data = edgesData.get(id, {"showInternalIds" : true}); - edges[id] = new Edge(data, this, this.constants); + return { + min: min, + max: max } - this.moving = true; - this._updateValueRange(edges); - this._createBezierNodes(); - this._updateCalculationNodes(); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); + }; + + /** + * Find an item from an event target: + * searches for the attribute 'timeline-item' in the event target's element tree + * @param {Event} event + * @return {Item | null} item + */ + ItemSet.itemFromTarget = function(event) { + var target = event.target; + while (target) { + if (target.hasOwnProperty('timeline-item')) { + return target['timeline-item']; + } + target = target.parentNode; } + + return null; }; /** - * Update existing edges, or create them when not yet existing - * @param {Number[] | String[]} ids - * @private + * Find the Group from an event target: + * searches for the attribute 'timeline-group' in the event target's element tree + * @param {Event} event + * @return {Group | null} group */ - Network.prototype._updateEdges = function (ids) { - var edges = this.edges, - edgesData = this.edgesData; - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; + ItemSet.prototype.groupFromTarget = function(event) { + // TODO: cleanup when the new solution is stable (also on mobile) + //var target = event.target; + //while (target) { + // if (target.hasOwnProperty('timeline-group')) { + // return target['timeline-group']; + // } + // target = target.parentNode; + //} + // - var data = edgesData.get(id); - var edge = edges[id]; - if (edge) { - // update edge - edge.disconnect(); - edge.setProperties(data, this.constants); - edge.connect(); + var clientY = event.gesture.center.clientY; + for (var i = 0; i < this.groupIds.length; i++) { + var groupId = this.groupIds[i]; + var group = this.groups[groupId]; + var foreground = group.dom.foreground; + var top = util.getAbsoluteTop(foreground); + if (clientY > top && clientY < top + foreground.offsetHeight) { + return group; + } + + if (this.options.orientation === 'top') { + if (i === this.groupIds.length - 1 && clientY > top) { + return group; + } } else { - // create edge - edge = new Edge(data, this, this.constants); - this.edges[id] = edge; + if (i === 0 && clientY < top + foreground.offset) { + return group; + } } } - this._createBezierNodes(); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); - } - this.moving = true; - this._updateValueRange(edges); + return null; }; /** - * Remove existing edges. Non existing ids will be ignored - * @param {Number[] | String[]} ids - * @private + * Find the ItemSet from an event target: + * searches for the attribute 'timeline-itemset' in the event target's element tree + * @param {Event} event + * @return {ItemSet | null} item */ - Network.prototype._removeEdges = function (ids) { - var edges = this.edges; - - // remove from selection - for (var i = 0, len = ids.length; i < len; i++) { - if (this.selectionObj.edges[ids[i]] !== undefined) { - edges[ids[i]].unselect(); - this._removeFromSelection(edges[ids[i]]); + ItemSet.itemSetFromTarget = function(event) { + var target = event.target; + while (target) { + if (target.hasOwnProperty('timeline-itemset')) { + return target['timeline-itemset']; } + target = target.parentNode; } - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; - var edge = edges[id]; - if (edge) { - if (edge.via != null) { - delete this.sectors['support']['nodes'][edge.via.id]; - } - edge.disconnect(); - delete edges[id]; - } + return null; + }; + + module.exports = ItemSet; + + +/***/ }, +/* 27 */ +/***/ function(module, exports, __webpack_require__) { + + var moment = __webpack_require__(2); + var DateUtil = __webpack_require__(24); + var util = __webpack_require__(1); + + /** + * @constructor TimeStep + * The class TimeStep is an iterator for dates. You provide a start date and an + * end date. The class itself determines the best scale (step size) based on the + * provided start Date, end Date, and minimumStep. + * + * If minimumStep is provided, the step size is chosen as close as possible + * to the minimumStep but larger than minimumStep. If minimumStep is not + * provided, the scale is set to 1 DAY. + * The minimumStep should correspond with the onscreen size of about 6 characters + * + * Alternatively, you can set a scale by hand. + * After creation, you can initialize the class by executing first(). Then you + * can iterate from the start date to the end date via next(). You can check if + * the end date is reached with the function hasNext(). After each step, you can + * retrieve the current date via getCurrent(). + * The TimeStep has scales ranging from milliseconds, seconds, minutes, hours, + * days, to years. + * + * Version: 1.2 + * + * @param {Date} [start] The start date, for example new Date(2010, 9, 21) + * or new Date(2010, 9, 21, 23, 45, 00) + * @param {Date} [end] The end date + * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds + */ + function TimeStep(start, end, minimumStep, hiddenDates) { + // variables + this.current = new Date(); + this._start = new Date(); + this._end = new Date(); + + this.autoScale = true; + this.scale = 'day'; + this.step = 1; + + // initialize the range + this.setRange(start, end, minimumStep); + + // hidden Dates options + this.switchedDay = false; + this.switchedMonth = false; + this.switchedYear = false; + this.hiddenDates = hiddenDates; + if (hiddenDates === undefined) { + this.hiddenDates = []; } - this.moving = true; - this._updateValueRange(edges); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); + this.format = TimeStep.FORMAT; // default formatting + } + + // Time formatting + TimeStep.FORMAT = { + minorLabels: { + millisecond:'SSS', + second: 's', + minute: 'HH:mm', + hour: 'HH:mm', + weekday: 'ddd D', + day: 'D', + month: 'MMM', + year: 'YYYY' + }, + majorLabels: { + millisecond:'HH:mm:ss', + second: 'D MMMM HH:mm', + minute: 'ddd D MMMM', + hour: 'ddd D MMMM', + weekday: 'MMMM YYYY', + day: 'MMMM YYYY', + month: 'YYYY', + year: '' } - this._updateCalculationNodes(); }; /** - * Reconnect all edges - * @private + * Set custom formatting for the minor an major labels of the TimeStep. + * Both `minorLabels` and `majorLabels` are an Object with properties: + * 'millisecond, 'second, 'minute', 'hour', 'weekday, 'day, 'month, 'year'. + * @param {{minorLabels: Object, majorLabels: Object}} format */ - Network.prototype._reconnectEdges = function() { - var id, - nodes = this.nodes, - edges = this.edges; - for (id in nodes) { - if (nodes.hasOwnProperty(id)) { - nodes[id].edges = []; - nodes[id].dynamicEdges = []; - } + TimeStep.prototype.setFormat = function (format) { + var defaultFormat = util.deepExtend({}, TimeStep.FORMAT); + this.format = util.deepExtend(defaultFormat, format); + }; + + /** + * Set a new range + * If minimumStep is provided, the step size is chosen as close as possible + * to the minimumStep but larger than minimumStep. If minimumStep is not + * provided, the scale is set to 1 DAY. + * The minimumStep should correspond with the onscreen size of about 6 characters + * @param {Date} [start] The start date and time. + * @param {Date} [end] The end date and time. + * @param {int} [minimumStep] Optional. Minimum step size in milliseconds + */ + TimeStep.prototype.setRange = function(start, end, minimumStep) { + if (!(start instanceof Date) || !(end instanceof Date)) { + throw "No legal start or end date in method setRange"; } - for (id in edges) { - if (edges.hasOwnProperty(id)) { - var edge = edges[id]; - edge.from = null; - edge.to = null; - edge.connect(); - } + this._start = (start != undefined) ? new Date(start.valueOf()) : new Date(); + this._end = (end != undefined) ? new Date(end.valueOf()) : new Date(); + + if (this.autoScale) { + this.setMinimumStep(minimumStep); } }; /** - * Update the values of all object in the given array according to the current - * value range of the objects in the array. - * @param {Object} obj An object containing a set of Edges or Nodes - * The objects must have a method getValue() and - * setValueRange(min, max). - * @private + * Set the range iterator to the start date. */ - Network.prototype._updateValueRange = function(obj) { - var id; + TimeStep.prototype.first = function() { + this.current = new Date(this._start.valueOf()); + this.roundToMinor(); + }; - // determine the range of the objects - var valueMin = undefined; - var valueMax = undefined; - var valueTotal = 0; - for (id in obj) { - if (obj.hasOwnProperty(id)) { - var value = obj[id].getValue(); - if (value !== undefined) { - valueMin = (valueMin === undefined) ? value : Math.min(value, valueMin); - valueMax = (valueMax === undefined) ? value : Math.max(value, valueMax); - valueTotal += value; - } - } + /** + * Round the current date to the first minor date value + * This must be executed once when the current date is set to start Date + */ + TimeStep.prototype.roundToMinor = function() { + // round to floor + // IMPORTANT: we have no breaks in this switch! (this is no bug) + // noinspection FallThroughInSwitchStatementJS + switch (this.scale) { + case 'year': + this.current.setFullYear(this.step * Math.floor(this.current.getFullYear() / this.step)); + this.current.setMonth(0); + case 'month': this.current.setDate(1); + case 'day': // intentional fall through + case 'weekday': this.current.setHours(0); + case 'hour': this.current.setMinutes(0); + case 'minute': this.current.setSeconds(0); + case 'second': this.current.setMilliseconds(0); + //case 'millisecond': // nothing to do for milliseconds } - // adjust the range of all objects - if (valueMin !== undefined && valueMax !== undefined) { - for (id in obj) { - if (obj.hasOwnProperty(id)) { - obj[id].setValueRange(valueMin, valueMax, valueTotal); - } + if (this.step != 1) { + // round down to the first minor value that is a multiple of the current step size + switch (this.scale) { + case 'millisecond': this.current.setMilliseconds(this.current.getMilliseconds() - this.current.getMilliseconds() % this.step); break; + case 'second': this.current.setSeconds(this.current.getSeconds() - this.current.getSeconds() % this.step); break; + case 'minute': this.current.setMinutes(this.current.getMinutes() - this.current.getMinutes() % this.step); break; + case 'hour': this.current.setHours(this.current.getHours() - this.current.getHours() % this.step); break; + case 'weekday': // intentional fall through + case 'day': this.current.setDate((this.current.getDate()-1) - (this.current.getDate()-1) % this.step + 1); break; + case 'month': this.current.setMonth(this.current.getMonth() - this.current.getMonth() % this.step); break; + case 'year': this.current.setFullYear(this.current.getFullYear() - this.current.getFullYear() % this.step); break; + default: break; } } }; /** - * Redraw the network with the current data - * chart will be resized too. + * Check if the there is a next step + * @return {boolean} true if the current date has not passed the end date */ - Network.prototype.redraw = function() { - this.setSize(this.constants.width, this.constants.height); - this._redraw(); + TimeStep.prototype.hasNext = function () { + return (this.current.valueOf() <= this._end.valueOf()); }; /** - * Redraw the network with the current data - * @param hidden | used to get the first estimate of the node sizes. only the nodes are drawn after which they are quickly drawn over. - * @private + * Do the next step */ - Network.prototype._requestRedraw = function(hidden) { - if (this.redrawRequested !== true) { - this.redrawRequested = true; - if (this.requiresTimeout === true) { - window.setTimeout(this._redraw.bind(this, hidden),0); - } - else { - window.requestAnimationFrame(this._redraw.bind(this, hidden, true)); - } - } - }; - - Network.prototype._redraw = function(hidden, requested) { - if (hidden === undefined) { - hidden = false; - } - this.redrawRequested = false; - var ctx = this.frame.canvas.getContext('2d'); - - ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); - - // clear the canvas - var w = this.frame.canvas.clientWidth; - var h = this.frame.canvas.clientHeight; - ctx.clearRect(0, 0, w, h); - - // set scaling and translation - ctx.save(); - ctx.translate(this.translation.x, this.translation.y); - ctx.scale(this.scale, this.scale); + TimeStep.prototype.next = function() { + var prev = this.current.valueOf(); - this.canvasTopLeft = { - "x": this._XconvertDOMtoCanvas(0), - "y": this._YconvertDOMtoCanvas(0) - }; - this.canvasBottomRight = { - "x": this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth), - "y": this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight) - }; + // Two cases, needed to prevent issues with switching daylight savings + // (end of March and end of October) + if (this.current.getMonth() < 6) { + switch (this.scale) { + case 'millisecond': - if (hidden === false) { - this._doInAllSectors("_drawAllSectorNodes", ctx); - if (this.drag.dragging == false || this.drag.dragging === undefined || this.constants.hideEdgesOnDrag == false) { - this._doInAllSectors("_drawEdges", ctx); + this.current = new Date(this.current.valueOf() + this.step); break; + case 'second': this.current = new Date(this.current.valueOf() + this.step * 1000); break; + case 'minute': this.current = new Date(this.current.valueOf() + this.step * 1000 * 60); break; + case 'hour': + this.current = new Date(this.current.valueOf() + this.step * 1000 * 60 * 60); + // in case of skipping an hour for daylight savings, adjust the hour again (else you get: 0h 5h 9h ... instead of 0h 4h 8h ...) + var h = this.current.getHours(); + this.current.setHours(h - (h % this.step)); + break; + case 'weekday': // intentional fall through + case 'day': this.current.setDate(this.current.getDate() + this.step); break; + case 'month': this.current.setMonth(this.current.getMonth() + this.step); break; + case 'year': this.current.setFullYear(this.current.getFullYear() + this.step); break; + default: break; } } - - if (this.drag.dragging == false || this.drag.dragging === undefined || this.constants.hideNodesOnDrag == false) { - this._doInAllSectors("_drawNodes",ctx,false); - } - - if (hidden === false) { - if (this.controlNodesActive == true) { - this._doInAllSectors("_drawControlNodes", ctx); + else { + switch (this.scale) { + case 'millisecond': this.current = new Date(this.current.valueOf() + this.step); break; + case 'second': this.current.setSeconds(this.current.getSeconds() + this.step); break; + case 'minute': this.current.setMinutes(this.current.getMinutes() + this.step); break; + case 'hour': this.current.setHours(this.current.getHours() + this.step); break; + case 'weekday': // intentional fall through + case 'day': this.current.setDate(this.current.getDate() + this.step); break; + case 'month': this.current.setMonth(this.current.getMonth() + this.step); break; + case 'year': this.current.setFullYear(this.current.getFullYear() + this.step); break; + default: break; } } - // this._doInSupportSector("_drawNodes",ctx,true); - // this._drawTree(ctx,"#F00F0F"); - - // restore original scaling and translation - ctx.restore(); - - if (hidden === true) { - ctx.clearRect(0, 0, w, h); - } - } - - /** - * Set the translation of the network - * @param {Number} offsetX Horizontal offset - * @param {Number} offsetY Vertical offset - * @private - */ - Network.prototype._setTranslation = function(offsetX, offsetY) { - if (this.translation === undefined) { - this.translation = { - x: 0, - y: 0 - }; + if (this.step != 1) { + // round down to the correct major value + switch (this.scale) { + case 'millisecond': if(this.current.getMilliseconds() < this.step) this.current.setMilliseconds(0); break; + case 'second': if(this.current.getSeconds() < this.step) this.current.setSeconds(0); break; + case 'minute': if(this.current.getMinutes() < this.step) this.current.setMinutes(0); break; + case 'hour': if(this.current.getHours() < this.step) this.current.setHours(0); break; + case 'weekday': // intentional fall through + case 'day': if(this.current.getDate() < this.step+1) this.current.setDate(1); break; + case 'month': if(this.current.getMonth() < this.step) this.current.setMonth(0); break; + case 'year': break; // nothing to do for year + default: break; + } } - if (offsetX !== undefined) { - this.translation.x = offsetX; - } - if (offsetY !== undefined) { - this.translation.y = offsetY; + // safety mechanism: if current time is still unchanged, move to the end + if (this.current.valueOf() == prev) { + this.current = new Date(this._end.valueOf()); } - this.emit('viewChanged'); + DateUtil.stepOverHiddenDates(this, prev); }; - /** - * Get the translation of the network - * @return {Object} translation An object with parameters x and y, both a number - * @private - */ - Network.prototype._getTranslation = function() { - return { - x: this.translation.x, - y: this.translation.y - }; - }; /** - * Scale the network - * @param {Number} scale Scaling factor 1.0 is unscaled - * @private + * Get the current datetime + * @return {Date} current The current date */ - Network.prototype._setScale = function(scale) { - this.scale = scale; + TimeStep.prototype.getCurrent = function() { + return this.current; }; /** - * Get the current scale of the network - * @return {Number} scale Scaling factor 1.0 is unscaled - * @private + * Set a custom scale. Autoscaling will be disabled. + * For example setScale('minute', 5) will result + * in minor steps of 5 minutes, and major steps of an hour. + * + * @param {{scale: string, step: number}} params + * An object containing two properties: + * - A string 'scale'. Choose from 'millisecond', 'second', + * 'minute', 'hour', 'weekday, 'day, 'month, 'year'. + * - A number 'step'. A step size, by default 1. + * Choose for example 1, 2, 5, or 10. */ - Network.prototype._getScale = function() { - return this.scale; + TimeStep.prototype.setScale = function(params) { + if (params && typeof params.scale == 'string') { + this.scale = params.scale; + this.step = params.step > 0 ? params.step : 1; + this.autoScale = false; + } }; /** - * Convert the X coordinate in DOM-space (coordinate point in browser relative to the container div) to - * the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon) - * @param {number} x - * @returns {number} - * @private + * Enable or disable autoscaling + * @param {boolean} enable If true, autoascaling is set true */ - Network.prototype._XconvertDOMtoCanvas = function(x) { - return (x - this.translation.x) / this.scale; + TimeStep.prototype.setAutoScale = function (enable) { + this.autoScale = enable; }; + /** - * Convert the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon) to - * the X coordinate in DOM-space (coordinate point in browser relative to the container div) - * @param {number} x - * @returns {number} - * @private + * Automatically determine the scale that bests fits the provided minimum step + * @param {Number} [minimumStep] The minimum step size in milliseconds */ - Network.prototype._XconvertCanvasToDOM = function(x) { - return x * this.scale + this.translation.x; + TimeStep.prototype.setMinimumStep = function(minimumStep) { + if (minimumStep == undefined) { + return; + } + + //var b = asc + ds; + + var stepYear = (1000 * 60 * 60 * 24 * 30 * 12); + var stepMonth = (1000 * 60 * 60 * 24 * 30); + var stepDay = (1000 * 60 * 60 * 24); + var stepHour = (1000 * 60 * 60); + var stepMinute = (1000 * 60); + var stepSecond = (1000); + var stepMillisecond= (1); + + // find the smallest step that is larger than the provided minimumStep + if (stepYear*1000 > minimumStep) {this.scale = 'year'; this.step = 1000;} + if (stepYear*500 > minimumStep) {this.scale = 'year'; this.step = 500;} + if (stepYear*100 > minimumStep) {this.scale = 'year'; this.step = 100;} + if (stepYear*50 > minimumStep) {this.scale = 'year'; this.step = 50;} + if (stepYear*10 > minimumStep) {this.scale = 'year'; this.step = 10;} + if (stepYear*5 > minimumStep) {this.scale = 'year'; this.step = 5;} + if (stepYear > minimumStep) {this.scale = 'year'; this.step = 1;} + if (stepMonth*3 > minimumStep) {this.scale = 'month'; this.step = 3;} + if (stepMonth > minimumStep) {this.scale = 'month'; this.step = 1;} + if (stepDay*5 > minimumStep) {this.scale = 'day'; this.step = 5;} + if (stepDay*2 > minimumStep) {this.scale = 'day'; this.step = 2;} + if (stepDay > minimumStep) {this.scale = 'day'; this.step = 1;} + if (stepDay/2 > minimumStep) {this.scale = 'weekday'; this.step = 1;} + if (stepHour*4 > minimumStep) {this.scale = 'hour'; this.step = 4;} + if (stepHour > minimumStep) {this.scale = 'hour'; this.step = 1;} + if (stepMinute*15 > minimumStep) {this.scale = 'minute'; this.step = 15;} + if (stepMinute*10 > minimumStep) {this.scale = 'minute'; this.step = 10;} + if (stepMinute*5 > minimumStep) {this.scale = 'minute'; this.step = 5;} + if (stepMinute > minimumStep) {this.scale = 'minute'; this.step = 1;} + if (stepSecond*15 > minimumStep) {this.scale = 'second'; this.step = 15;} + if (stepSecond*10 > minimumStep) {this.scale = 'second'; this.step = 10;} + if (stepSecond*5 > minimumStep) {this.scale = 'second'; this.step = 5;} + if (stepSecond > minimumStep) {this.scale = 'second'; this.step = 1;} + if (stepMillisecond*200 > minimumStep) {this.scale = 'millisecond'; this.step = 200;} + if (stepMillisecond*100 > minimumStep) {this.scale = 'millisecond'; this.step = 100;} + if (stepMillisecond*50 > minimumStep) {this.scale = 'millisecond'; this.step = 50;} + if (stepMillisecond*10 > minimumStep) {this.scale = 'millisecond'; this.step = 10;} + if (stepMillisecond*5 > minimumStep) {this.scale = 'millisecond'; this.step = 5;} + if (stepMillisecond > minimumStep) {this.scale = 'millisecond'; this.step = 1;} }; /** - * Convert the Y coordinate in DOM-space (coordinate point in browser relative to the container div) to - * the Y coordinate in canvas-space (the simulation sandbox, which the camera looks upon) - * @param {number} y - * @returns {number} - * @private + * Snap a date to a rounded value. + * The snap intervals are dependent on the current scale and step. + * Static function + * @param {Date} date the date to be snapped. + * @param {string} scale Current scale, can be 'millisecond', 'second', + * 'minute', 'hour', 'weekday, 'day, 'month, 'year'. + * @param {number} step Current step (1, 2, 4, 5, ... + * @return {Date} snappedDate */ - Network.prototype._YconvertDOMtoCanvas = function(y) { - return (y - this.translation.y) / this.scale; + TimeStep.snap = function(date, scale, step) { + var clone = new Date(date.valueOf()); + + if (scale == 'year') { + var year = clone.getFullYear() + Math.round(clone.getMonth() / 12); + clone.setFullYear(Math.round(year / step) * step); + clone.setMonth(0); + clone.setDate(0); + clone.setHours(0); + clone.setMinutes(0); + clone.setSeconds(0); + clone.setMilliseconds(0); + } + else if (scale == 'month') { + if (clone.getDate() > 15) { + clone.setDate(1); + clone.setMonth(clone.getMonth() + 1); + // important: first set Date to 1, after that change the month. + } + else { + clone.setDate(1); + } + + clone.setHours(0); + clone.setMinutes(0); + clone.setSeconds(0); + clone.setMilliseconds(0); + } + else if (scale == 'day') { + //noinspection FallthroughInSwitchStatementJS + switch (step) { + case 5: + case 2: + clone.setHours(Math.round(clone.getHours() / 24) * 24); break; + default: + clone.setHours(Math.round(clone.getHours() / 12) * 12); break; + } + clone.setMinutes(0); + clone.setSeconds(0); + clone.setMilliseconds(0); + } + else if (scale == 'weekday') { + //noinspection FallthroughInSwitchStatementJS + switch (step) { + case 5: + case 2: + clone.setHours(Math.round(clone.getHours() / 12) * 12); break; + default: + clone.setHours(Math.round(clone.getHours() / 6) * 6); break; + } + clone.setMinutes(0); + clone.setSeconds(0); + clone.setMilliseconds(0); + } + else if (scale == 'hour') { + switch (step) { + case 4: + clone.setMinutes(Math.round(clone.getMinutes() / 60) * 60); break; + default: + clone.setMinutes(Math.round(clone.getMinutes() / 30) * 30); break; + } + clone.setSeconds(0); + clone.setMilliseconds(0); + } else if (scale == 'minute') { + //noinspection FallthroughInSwitchStatementJS + switch (step) { + case 15: + case 10: + clone.setMinutes(Math.round(clone.getMinutes() / 5) * 5); + clone.setSeconds(0); + break; + case 5: + clone.setSeconds(Math.round(clone.getSeconds() / 60) * 60); break; + default: + clone.setSeconds(Math.round(clone.getSeconds() / 30) * 30); break; + } + clone.setMilliseconds(0); + } + else if (scale == 'second') { + //noinspection FallthroughInSwitchStatementJS + switch (step) { + case 15: + case 10: + clone.setSeconds(Math.round(clone.getSeconds() / 5) * 5); + clone.setMilliseconds(0); + break; + case 5: + clone.setMilliseconds(Math.round(clone.getMilliseconds() / 1000) * 1000); break; + default: + clone.setMilliseconds(Math.round(clone.getMilliseconds() / 500) * 500); break; + } + } + else if (scale == 'millisecond') { + var _step = step > 5 ? step / 2 : 1; + clone.setMilliseconds(Math.round(clone.getMilliseconds() / _step) * _step); + } + + return clone; }; /** - * Convert the Y coordinate in canvas-space (the simulation sandbox, which the camera looks upon) to - * the Y coordinate in DOM-space (coordinate point in browser relative to the container div) - * @param {number} y - * @returns {number} - * @private + * Check if the current value is a major value (for example when the step + * is DAY, a major value is each first day of the MONTH) + * @return {boolean} true if current date is major, else false. */ - Network.prototype._YconvertCanvasToDOM = function(y) { - return y * this.scale + this.translation.y ; + TimeStep.prototype.isMajor = function() { + if (this.switchedYear == true) { + this.switchedYear = false; + switch (this.scale) { + case 'year': + case 'month': + case 'weekday': + case 'day': + case 'hour': + case 'minute': + case 'second': + case 'millisecond': + return true; + default: + return false; + } + } + else if (this.switchedMonth == true) { + this.switchedMonth = false; + switch (this.scale) { + case 'weekday': + case 'day': + case 'hour': + case 'minute': + case 'second': + case 'millisecond': + return true; + default: + return false; + } + } + else if (this.switchedDay == true) { + this.switchedDay = false; + switch (this.scale) { + case 'millisecond': + case 'second': + case 'minute': + case 'hour': + return true; + default: + return false; + } + } + + switch (this.scale) { + case 'millisecond': + return (this.current.getMilliseconds() == 0); + case 'second': + return (this.current.getSeconds() == 0); + case 'minute': + return (this.current.getHours() == 0) && (this.current.getMinutes() == 0); + case 'hour': + return (this.current.getHours() == 0); + case 'weekday': // intentional fall through + case 'day': + return (this.current.getDate() == 1); + case 'month': + return (this.current.getMonth() == 0); + case 'year': + return false; + default: + return false; + } }; /** - * - * @param {object} pos = {x: number, y: number} - * @returns {{x: number, y: number}} - * @constructor + * Returns formatted text for the minor axislabel, depending on the current + * date and the scale. For example when scale is MINUTE, the current time is + * formatted as "hh:mm". + * @param {Date} [date] custom date. if not provided, current date is taken */ - Network.prototype.canvasToDOM = function (pos) { - return {x: this._XconvertCanvasToDOM(pos.x), y: this._YconvertCanvasToDOM(pos.y)}; - }; + TimeStep.prototype.getLabelMinor = function(date) { + if (date == undefined) { + date = this.current; + } - /** - * - * @param {object} pos = {x: number, y: number} - * @returns {{x: number, y: number}} - * @constructor - */ - Network.prototype.DOMtoCanvas = function (pos) { - return {x: this._XconvertDOMtoCanvas(pos.x), y: this._YconvertDOMtoCanvas(pos.y)}; + var format = this.format.minorLabels[this.scale]; + return (format && format.length > 0) ? moment(date).format(format) : ''; }; /** - * Redraw all nodes - * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); - * @param {CanvasRenderingContext2D} ctx - * @param {Boolean} [alwaysShow] - * @private + * Returns formatted text for the major axis label, depending on the current + * date and the scale. For example when scale is MINUTE, the major scale is + * hours, and the hour will be formatted as "hh". + * @param {Date} [date] custom date. if not provided, current date is taken */ - Network.prototype._drawNodes = function(ctx,alwaysShow) { - if (alwaysShow === undefined) { - alwaysShow = false; + TimeStep.prototype.getLabelMajor = function(date) { + if (date == undefined) { + date = this.current; } - // first draw the unselected nodes - var nodes = this.nodes; - var selected = []; + var format = this.format.majorLabels[this.scale]; + return (format && format.length > 0) ? moment(date).format(format) : ''; + }; - for (var id in nodes) { - if (nodes.hasOwnProperty(id)) { - nodes[id].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight); - if (nodes[id].isSelected()) { - selected.push(id); - } - else { - if (nodes[id].inArea() || alwaysShow) { - nodes[id].draw(ctx); - } - } - } - } + TimeStep.prototype.getClassName = function() { + var m = moment(this.current); + var date = m.locale ? m.locale('en') : m.lang('en'); // old versions of moment have .lang() function + var step = this.step; - // draw the selected nodes on top - for (var s = 0, sMax = selected.length; s < sMax; s++) { - if (nodes[selected[s]].inArea() || alwaysShow) { - nodes[selected[s]].draw(ctx); - } + function even(value) { + return (value / step % 2 == 0) ? ' even' : ' odd'; } - }; - /** - * Redraw all edges - * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); - * @param {CanvasRenderingContext2D} ctx - * @private - */ - Network.prototype._drawEdges = function(ctx) { - var edges = this.edges; - for (var id in edges) { - if (edges.hasOwnProperty(id)) { - var edge = edges[id]; - edge.setScale(this.scale); - if (edge.connected) { - edges[id].draw(ctx); - } + function today(date) { + if (date.isSame(new Date(), 'day')) { + return ' today'; } - } - }; - - /** - * Redraw all edges - * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); - * @param {CanvasRenderingContext2D} ctx - * @private - */ - Network.prototype._drawControlNodes = function(ctx) { - var edges = this.edges; - for (var id in edges) { - if (edges.hasOwnProperty(id)) { - edges[id]._drawControlNodes(ctx); + if (date.isSame(moment().add(1, 'day'), 'day')) { + return ' tomorrow'; + } + if (date.isSame(moment().add(-1, 'day'), 'day')) { + return ' yesterday'; } + return ''; } - }; - /** - * Find a stable position for all nodes - * @private - */ - Network.prototype._stabilize = function() { - if (this.constants.freezeForStabilization == true) { - this._freezeDefinedNodes(); + function currentWeek(date) { + return date.isSame(new Date(), 'week') ? ' current-week' : ''; } - // find stable position - var count = 0; - while (this.moving && count < this.constants.stabilizationIterations) { - this._physicsTick(); - count++; + function currentMonth(date) { + return date.isSame(new Date(), 'month') ? ' current-month' : ''; } - - if (this.constants.zoomExtentOnStabilize == true) { - this.zoomExtent({duration:0}, false, true); + function currentYear(date) { + return date.isSame(new Date(), 'year') ? ' current-year' : ''; } - if (this.constants.freezeForStabilization == true) { - this._restoreFrozenNodes(); - } + switch (this.scale) { + case 'millisecond': + return even(date.milliseconds()).trim(); - this.emit("stabilizationIterationsDone"); - }; + case 'second': + return even(date.seconds()).trim(); - /** - * When initializing and stabilizing, we can freeze nodes with a predefined position. This greatly speeds up stabilization - * because only the supportnodes for the smoothCurves have to settle. - * - * @private - */ - Network.prototype._freezeDefinedNodes = function() { - var nodes = this.nodes; - for (var id in nodes) { - if (nodes.hasOwnProperty(id)) { - if (nodes[id].x != null && nodes[id].y != null) { - nodes[id].fixedData.x = nodes[id].xFixed; - nodes[id].fixedData.y = nodes[id].yFixed; - nodes[id].xFixed = true; - nodes[id].yFixed = true; + case 'minute': + return even(date.minutes()).trim(); + + case 'hour': + var hours = date.hours(); + if (this.step == 4) { + hours = hours + '-' + (hours + 4); } - } + return hours + 'h' + today(date) + even(date.hours()); + + case 'weekday': + return date.format('dddd').toLowerCase() + + today(date) + currentWeek(date) + even(date.date()); + + case 'day': + var day = date.date(); + var month = date.format('MMMM').toLowerCase(); + return 'day' + day + ' ' + month + currentMonth(date) + even(day - 1); + + case 'month': + return date.format('MMMM').toLowerCase() + + currentMonth(date) + even(date.month()); + + case 'year': + var year = date.year(); + return 'year' + year + currentYear(date)+ even(year); + + default: + return ''; } }; + module.exports = TimeStep; + + +/***/ }, +/* 28 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var stack = __webpack_require__(50); + var RangeItem = __webpack_require__(33); + /** - * Unfreezes the nodes that have been frozen by _freezeDefinedNodes. - * - * @private + * @constructor Group + * @param {Number | String} groupId + * @param {Object} data + * @param {ItemSet} itemSet */ - Network.prototype._restoreFrozenNodes = function() { - var nodes = this.nodes; - for (var id in nodes) { - if (nodes.hasOwnProperty(id)) { - if (nodes[id].fixedData.x != null) { - nodes[id].xFixed = nodes[id].fixedData.x; - nodes[id].yFixed = nodes[id].fixedData.y; - } + function Group (groupId, data, itemSet) { + this.groupId = groupId; + this.subgroups = {}; + this.subgroupIndex = 0; + this.subgroupOrderer = data && data.subgroupOrder; + this.itemSet = itemSet; + + this.dom = {}; + this.props = { + label: { + width: 0, + height: 0 } - } - }; + }; + this.className = null; + + this.items = {}; // items filtered by groupId of this group + this.visibleItems = []; // items currently visible in window + this.orderedItems = { + byStart: [], + byEnd: [] + }; + this.checkRangedItems = false; // needed to refresh the ranged items if the window is programatically changed with NO overlap. + var me = this; + this.itemSet.body.emitter.on("checkRangedItems", function () { + me.checkRangedItems = true; + }) + + this._create(); + this.setData(data); + } /** - * Check if any of the nodes is still moving - * @param {number} vmin the minimum velocity considered as 'moving' - * @return {boolean} true if moving, false if non of the nodes is moving + * Create DOM elements for the group * @private */ - Network.prototype._isMoving = function(vmin) { - var nodes = this.nodes; - for (var id in nodes) { - if (nodes[id] !== undefined) { - if (nodes[id].isMoving(vmin) == true) { - return true; - } - } - } - return false; - }; + Group.prototype._create = function() { + var label = document.createElement('div'); + label.className = 'vlabel'; + this.dom.label = label; + + var inner = document.createElement('div'); + inner.className = 'inner'; + label.appendChild(inner); + this.dom.inner = inner; + + var foreground = document.createElement('div'); + foreground.className = 'group'; + foreground['timeline-group'] = this; + this.dom.foreground = foreground; + + this.dom.background = document.createElement('div'); + this.dom.background.className = 'group'; + + this.dom.axis = document.createElement('div'); + this.dom.axis.className = 'group'; + // create a hidden marker to detect when the Timelines container is attached + // to the DOM, or the style of a parent of the Timeline is changed from + // display:none is changed to visible. + this.dom.marker = document.createElement('div'); + this.dom.marker.style.visibility = 'hidden'; // TODO: ask jos why this is not none? + this.dom.marker.innerHTML = '?'; + this.dom.background.appendChild(this.dom.marker); + }; /** - * /** - * Perform one discrete step for all nodes - * - * @private + * Set the group data for this group + * @param {Object} data Group data, can contain properties content and className */ - Network.prototype._discreteStepNodes = function() { - var interval = this.physicsDiscreteStepsize; - var nodes = this.nodes; - var nodeId; - var nodesPresent = false; - - if (this.constants.maxVelocity > 0) { - for (nodeId in nodes) { - if (nodes.hasOwnProperty(nodeId)) { - nodes[nodeId].discreteStepLimited(interval, this.constants.maxVelocity); - nodesPresent = true; - } - } + Group.prototype.setData = function(data) { + // update contents + var content = data && data.content; + if (content instanceof Element) { + this.dom.inner.appendChild(content); + } + else if (content !== undefined && content !== null) { + this.dom.inner.innerHTML = content; } else { - for (nodeId in nodes) { - if (nodes.hasOwnProperty(nodeId)) { - nodes[nodeId].discreteStep(interval); - nodesPresent = true; - } - } + this.dom.inner.innerHTML = this.groupId || ''; // groupId can be null } - if (nodesPresent == true) { - var vminCorrected = this.constants.minVelocity / Math.max(this.scale,0.05); - if (vminCorrected > 0.5*this.constants.maxVelocity) { - return true; - } - else { - return this._isMoving(vminCorrected); - } - } - return false; - }; + // update title + this.dom.label.title = data && data.title || ''; + if (!this.dom.inner.firstChild) { + util.addClassName(this.dom.inner, 'hidden'); + } + else { + util.removeClassName(this.dom.inner, 'hidden'); + } - Network.prototype._revertPhysicsState = function() { - var nodes = this.nodes; - for (var nodeId in nodes) { - if (nodes.hasOwnProperty(nodeId)) { - nodes[nodeId].revertPosition(); + // update className + var className = data && data.className || null; + if (className != this.className) { + if (this.className) { + util.removeClassName(this.dom.label, this.className); + util.removeClassName(this.dom.foreground, this.className); + util.removeClassName(this.dom.background, this.className); + util.removeClassName(this.dom.axis, this.className); } + util.addClassName(this.dom.label, className); + util.addClassName(this.dom.foreground, className); + util.addClassName(this.dom.background, className); + util.addClassName(this.dom.axis, className); + this.className = className; } - } - Network.prototype._revertPhysicsTick = function() { - this._doInAllActiveSectors("_revertPhysicsState"); - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this._doInSupportSector("_revertPhysicsState"); + // update style + if (this.style) { + util.removeCssText(this.dom.label, this.style); + this.style = null; } - } + if (data && data.style) { + util.addCssText(this.dom.label, data.style); + this.style = data.style; + } + }; /** - * A single simulation step (or "tick") in the physics simulation - * - * @private + * Get the width of the group label + * @return {number} width */ - Network.prototype._physicsTick = function() { - if (!this.freezeSimulationEnabled) { - if (this.moving == true) { - var mainMovingStatus = false; - var supportMovingStatus = false; + Group.prototype.getLabelWidth = function() { + return this.props.label.width; + }; - this._doInAllActiveSectors("_initializeForceCalculation"); - var mainMoving = this._doInAllActiveSectors("_discreteStepNodes"); - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - supportMovingStatus = this._doInSupportSector("_discreteStepNodes"); - } - // gather movement data from all sectors, if one moves, we are NOT stabilzied - for (var i = 0; i < mainMoving.length; i++) { - mainMovingStatus = mainMoving[i] || mainMovingStatus; - } + /** + * Repaint this group + * @param {{start: number, end: number}} range + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @param {boolean} [restack=false] Force restacking of all items + * @return {boolean} Returns true if the group is resized + */ + Group.prototype.redraw = function(range, margin, restack) { + var resized = false; - // determine if the network has stabilzied - this.moving = mainMovingStatus || supportMovingStatus; - if (this.moving == false) { - this._revertPhysicsTick(); - } - else { - // this is here to ensure that there is no start event when the network is already stable. - if (this.startedStabilization == false) { - this.emit("startStabilization"); - this.startedStabilization = true; - } - } + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - this.stabilizationIterations++; + // force recalculation of the height of the items when the marker height changed + // (due to the Timeline being attached to the DOM or changed from display:none to visible) + var markerHeight = this.dom.marker.clientHeight; + if (markerHeight != this.lastMarkerHeight) { + this.lastMarkerHeight = markerHeight; + + util.forEach(this.items, function (item) { + item.dirty = true; + if (item.displayed) item.redraw(); + }); + + restack = true; + } + + // reposition visible items vertically + var customOrderedItems = null; + if (this.itemSet.options.stack) { // TODO: ugly way to access options... + if (typeof this.itemSet.options.order === 'function' || false) { + customOrderedItems = this._getCustomOrderedItems(); + stack.stack(customOrderedItems, margin, true); + } + else { + stack.stack(this.visibleItems, margin, restack); } } - }; + else { // no stacking + stack.nostack(this.visibleItems, margin, this.subgroups); + } + // recalculate the height of the group + var height = this._calculateHeight(margin); - /** - * This function runs one step of the animation. It calls an x amount of physics ticks and one render tick. - * It reschedules itself at the beginning of the function - * - * @private - */ - Network.prototype._animationStep = function() { - // reset the timer so a new scheduled animation step can be set - this.timer = undefined; + // calculate actual size and position + var foreground = this.dom.foreground; + this.top = foreground.offsetTop; + this.left = foreground.offsetLeft; + this.width = foreground.offsetWidth; + resized = util.updateProperty(this, 'height', height) || resized; - if (this.requiresTimeout == true) { - // this schedules a new animation step - this.start(); - } + // recalculate size of label + resized = util.updateProperty(this.props.label, 'width', this.dom.inner.clientWidth) || resized; + resized = util.updateProperty(this.props.label, 'height', this.dom.inner.clientHeight) || resized; - // handle the keyboad movement - this._handleNavigation(); + // apply new height + this.dom.background.style.height = height + 'px'; + this.dom.foreground.style.height = height + 'px'; + this.dom.label.style.height = height + 'px'; - // check if the physics have settled - if (this.moving == true) { - var startTime = Date.now(); - this._physicsTick(); - var physicsTime = Date.now() - startTime; + // update vertical position of items after they are re-stacked and the height of the group is calculated + for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { + var item = this.visibleItems[i]; + item.repositionY(margin); + } - // run double speed if it is a little graph - if ((this.renderTimestep - this.renderTime > 2 * physicsTime || this.runDoubleSpeed == true) && this.moving == true) { - this._physicsTick(); + return resized; + }; - // this makes sure there is no jitter. The decision is taken once to run it at double speed. - if (this.renderTime != 0) { - this.runDoubleSpeed = true + /** + * recalculate the height of the group + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @returns {number} Returns the height + * @private + */ + Group.prototype._calculateHeight = function (margin) { + // recalculate the height of the group + var height; + var visibleItems = this.visibleItems; + //var visibleSubgroups = []; + //this.visibleSubgroups = 0; + this.resetSubgroups(); + var me = this; + if (visibleItems.length) { + var min = visibleItems[0].top; + var max = visibleItems[0].top + visibleItems[0].height; + util.forEach(visibleItems, function (item) { + min = Math.min(min, item.top); + max = Math.max(max, (item.top + item.height)); + if (item.data.subgroup !== undefined) { + me.subgroups[item.data.subgroup].height = Math.max(me.subgroups[item.data.subgroup].height,item.height); + me.subgroups[item.data.subgroup].visible = true; + //if (visibleSubgroups.indexOf(item.data.subgroup) == -1){ + // visibleSubgroups.push(item.data.subgroup); + // me.visibleSubgroups += 1; + //} } + }); + if (min > margin.axis) { + // there is an empty gap between the lowest item and the axis + var offset = min - margin.axis; + max -= offset; + util.forEach(visibleItems, function (item) { + item.top -= offset; + }); } + height = max + margin.item.vertical / 2; } - - var renderStartTime = Date.now(); - this._redraw(); - this.renderTime = Date.now() - renderStartTime; - - if (this.requiresTimeout == false) { - // this schedules a new animation step - this.start(); + else { + height = margin.axis + margin.item.vertical; } - }; + height = Math.max(height, this.props.label.height); - if (typeof window !== 'undefined') { - window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || - window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; - } + return height; + }; /** - * Schedule a animation step with the refreshrate interval. + * Show this group: attach to the DOM */ - Network.prototype.start = function() { - if (this.freezeSimulationEnabled == true) { - this.moving = false; + Group.prototype.show = function() { + if (!this.dom.label.parentNode) { + this.itemSet.dom.labelSet.appendChild(this.dom.label); } - if (this.moving == true || this.xIncrement != 0 || this.yIncrement != 0 || this.zoomIncrement != 0 || this.animating == true) { - if (!this.timer) { - if (this.requiresTimeout == true) { - this.timer = window.setTimeout(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function - } - else { - this.timer = window.requestAnimationFrame(this._animationStep.bind(this)); // wait this.renderTimeStep milliseconds and perform the animation step function - } - } + + if (!this.dom.foreground.parentNode) { + this.itemSet.dom.foreground.appendChild(this.dom.foreground); } - else { - this._requestRedraw(); - // this check is to ensure that the network does not emit these events if it was already stabilized and setOptions is called (setting moving to true and calling start()) - if (this.stabilizationIterations > 1) { - // trigger the "stabilized" event. - // The event is triggered on the next tick, to prevent the case that - // it is fired while initializing the Network, in which case you would not - // be able to catch it - var me = this; - var params = { - iterations: me.stabilizationIterations - }; - this.stabilizationIterations = 0; - this.startedStabilization = false; - setTimeout(function () { - me.emit("stabilized", params); - }, 0); - } - else { - this.stabilizationIterations = 0; - } + + if (!this.dom.background.parentNode) { + this.itemSet.dom.background.appendChild(this.dom.background); } - }; + if (!this.dom.axis.parentNode) { + this.itemSet.dom.axis.appendChild(this.dom.axis); + } + }; /** - * Move the network according to the keyboard presses. - * - * @private + * Hide this group: remove from the DOM */ - Network.prototype._handleNavigation = function() { - if (this.xIncrement != 0 || this.yIncrement != 0) { - var translation = this._getTranslation(); - this._setTranslation(translation.x+this.xIncrement, translation.y+this.yIncrement); - } - if (this.zoomIncrement != 0) { - var center = { - x: this.frame.canvas.clientWidth / 2, - y: this.frame.canvas.clientHeight / 2 - }; - this._zoom(this.scale*(1 + this.zoomIncrement), center); + Group.prototype.hide = function() { + var label = this.dom.label; + if (label.parentNode) { + label.parentNode.removeChild(label); } - }; + var foreground = this.dom.foreground; + if (foreground.parentNode) { + foreground.parentNode.removeChild(foreground); + } - /** - * Freeze the _animationStep - */ - Network.prototype.freezeSimulation = function(freeze) { - if (freeze == true) { - this.freezeSimulationEnabled = true; - this.moving = false; + var background = this.dom.background; + if (background.parentNode) { + background.parentNode.removeChild(background); } - else { - this.freezeSimulationEnabled = false; - this.moving = true; - this.start(); + + var axis = this.dom.axis; + if (axis.parentNode) { + axis.parentNode.removeChild(axis); } }; - /** - * This function cleans the support nodes if they are not needed and adds them when they are. - * - * @param {boolean} [disableStart] - * @private + * Add an item to the group + * @param {Item} item */ - Network.prototype._configureSmoothCurves = function(disableStart) { - if (disableStart === undefined) { - disableStart = true; + Group.prototype.add = function(item) { + this.items[item.id] = item; + item.setParent(this); + + // add to + if (item.data.subgroup !== undefined) { + if (this.subgroups[item.data.subgroup] === undefined) { + this.subgroups[item.data.subgroup] = {height:0, visible: false, index:this.subgroupIndex, items: []}; + this.subgroupIndex++; + } + this.subgroups[item.data.subgroup].items.push(item); } - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this._createBezierNodes(); - // cleanup unused support nodes - for (var nodeId in this.sectors['support']['nodes']) { - if (this.sectors['support']['nodes'].hasOwnProperty(nodeId)) { - if (this.edges[this.sectors['support']['nodes'][nodeId].parentEdgeId] === undefined) { - delete this.sectors['support']['nodes'][nodeId]; - } + this.orderSubgroups(); + + if (this.visibleItems.indexOf(item) == -1) { + var range = this.itemSet.body.range; // TODO: not nice accessing the range like this + this._checkIfVisible(item, this.visibleItems, range); + } + }; + + Group.prototype.orderSubgroups = function() { + if (this.subgroupOrderer !== undefined) { + var sortArray = []; + if (typeof this.subgroupOrderer == 'string') { + for (var subgroup in this.subgroups) { + sortArray.push({subgroup: subgroup, sortField: this.subgroups[subgroup].items[0].data[this.subgroupOrderer]}) } + sortArray.sort(function (a, b) { + return a.sortField - b.sortField; + }) } - } - else { - // delete the support nodes - this.sectors['support']['nodes'] = {}; - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - this.edges[edgeId].via = null; + else if (typeof this.subgroupOrderer == 'function') { + for (var subgroup in this.subgroups) { + sortArray.push(this.subgroups[subgroup].items[0].data); } + sortArray.sort(this.subgroupOrderer); } - } - - this._updateCalculationNodes(); - if (!disableStart) { - this.moving = true; - this.start(); + if (sortArray.length > 0) { + for (var i = 0; i < sortArray.length; i++) { + this.subgroups[sortArray[i].subgroup].index = i; + } + } } }; - - /** - * Bezier curves require an anchor point to calculate the smooth flow. These points are nodes. These nodes are invisible but - * are used for the force calculation. - * - * @private - */ - Network.prototype._createBezierNodes = function() { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - var edge = this.edges[edgeId]; - if (edge.via == null) { - var nodeId = "edgeId:".concat(edge.id); - this.sectors['support']['nodes'][nodeId] = new Node( - {id:nodeId, - mass:1, - shape:'circle', - image:"", - internalMultiplier:1 - },{},{},this.constants); - edge.via = this.sectors['support']['nodes'][nodeId]; - edge.via.parentEdgeId = edge.id; - edge.positionBezierNode(); - } - } + Group.prototype.resetSubgroups = function() { + for (var subgroup in this.subgroups) { + if (this.subgroups.hasOwnProperty(subgroup)) { + this.subgroups[subgroup].visible = false; } } }; /** - * load the functions that load the mixins into the prototype. - * - * @private + * Remove an item from the group + * @param {Item} item */ - Network.prototype._initializeMixinLoaders = function () { - for (var mixin in MixinLoader) { - if (MixinLoader.hasOwnProperty(mixin)) { - Network.prototype[mixin] = MixinLoader[mixin]; - } - } + Group.prototype.remove = function(item) { + delete this.items[item.id]; + item.setParent(null); + + // remove from visible items + var index = this.visibleItems.indexOf(item); + if (index != -1) this.visibleItems.splice(index, 1); + + // TODO: also remove from ordered items? }; + /** - * Load the XY positions of the nodes into the dataset. + * Remove an item from the corresponding DataSet + * @param {Item} item */ - Network.prototype.storePosition = function() { - console.log("storePosition is depricated: use .storePositions() from now on.") - this.storePositions(); + Group.prototype.removeFromDataSet = function(item) { + this.itemSet.removeItem(item.id); }; + /** - * Load the XY positions of the nodes into the dataset. + * Reorder the items */ - Network.prototype.storePositions = function() { - var dataArray = []; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - var allowedToMoveX = !this.nodes.xFixed; - var allowedToMoveY = !this.nodes.yFixed; - if (this.nodesData._data[nodeId].x != Math.round(node.x) || this.nodesData._data[nodeId].y != Math.round(node.y)) { - dataArray.push({id:nodeId,x:Math.round(node.x),y:Math.round(node.y),allowedToMoveX:allowedToMoveX,allowedToMoveY:allowedToMoveY}); - } + Group.prototype.order = function() { + var array = util.toArray(this.items); + var startArray = []; + var endArray = []; + + for (var i = 0; i < array.length; i++) { + if (array[i].data.end !== undefined) { + endArray.push(array[i]); } + startArray.push(array[i]); } - this.nodesData.update(dataArray); + this.orderedItems = { + byStart: startArray, + byEnd: endArray + }; + + stack.orderByStart(this.orderedItems.byStart); + stack.orderByEnd(this.orderedItems.byEnd); }; + /** - * Return the positions of the nodes. + * Update the visible items + * @param {{byStart: Item[], byEnd: Item[]}} orderedItems All items ordered by start date and by end date + * @param {Item[]} visibleItems The previously visible items. + * @param {{start: number, end: number}} range Visible range + * @return {Item[]} visibleItems The new visible items. + * @private */ - Network.prototype.getPositions = function(ids) { - var dataArray = {}; - if (ids !== undefined) { - if (Array.isArray(ids) == true) { - for (var i = 0; i < ids.length; i++) { - if (this.nodes[ids[i]] !== undefined) { - var node = this.nodes[ids[i]]; - dataArray[ids[i]] = {x: Math.round(node.x), y: Math.round(node.y)}; - } - } - } - else { - if (this.nodes[ids] !== undefined) { - var node = this.nodes[ids]; - dataArray[ids] = {x: Math.round(node.x), y: Math.round(node.y)}; - } - } + Group.prototype._updateVisibleItems = function(orderedItems, oldVisibleItems, range) { + var visibleItems = []; + var visibleItemsLookup = {}; // we keep this to quickly look up if an item already exists in the list without using indexOf on visibleItems + var interval = (range.end - range.start) / 4; + var lowerBound = range.start - interval; + var upperBound = range.end + interval; + var item, i; + + // this function is used to do the binary search. + var searchFunction = function (value) { + if (value < lowerBound) {return -1;} + else if (value <= upperBound) {return 0;} + else {return 1;} } - else { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - dataArray[nodeId] = {x: Math.round(node.x), y: Math.round(node.y)}; - } + + // first check if the items that were in view previously are still in view. + // IMPORTANT: this handles the case for the items with startdate before the window and enddate after the window! + // also cleans up invisible items. + if (oldVisibleItems.length > 0) { + for (i = 0; i < oldVisibleItems.length; i++) { + this._checkIfVisibleWithReference(oldVisibleItems[i], visibleItems, visibleItemsLookup, range); } } - return dataArray; - }; + // we do a binary search for the items that have only start values. + var initialPosByStart = util.binarySearchCustom(orderedItems.byStart, searchFunction, 'data','start'); + // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the start values. + this._traceVisible(initialPosByStart, orderedItems.byStart, visibleItems, visibleItemsLookup, function (item) { + return (item.data.start < lowerBound || item.data.start > upperBound); + }); - /** - * Center a node in view. - * - * @param {Number} nodeId - * @param {Number} [options] - */ - Network.prototype.focusOnNode = function (nodeId, options) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (options === undefined) { - options = {}; + // if the window has changed programmatically without overlapping the old window, the ranged items with start < lowerBound and end > upperbound are not shown. + // We therefore have to brute force check all items in the byEnd list + if (this.checkRangedItems == true) { + this.checkRangedItems = false; + for (i = 0; i < orderedItems.byEnd.length; i++) { + this._checkIfVisibleWithReference(orderedItems.byEnd[i], visibleItems, visibleItemsLookup, range); } - var nodePosition = {x: this.nodes[nodeId].x, y: this.nodes[nodeId].y}; - options.position = nodePosition; - options.lockedOnNode = nodeId; - - this.moveTo(options) } else { - console.log("This nodeId cannot be found."); + // we do a binary search for the items that have defined end times. + var initialPosByEnd = util.binarySearchCustom(orderedItems.byEnd, searchFunction, 'data','end'); + + // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the end values. + this._traceVisible(initialPosByEnd, orderedItems.byEnd, visibleItems, visibleItemsLookup, function (item) { + return (item.data.end < lowerBound || item.data.end > upperBound); + }); } - }; - /** - * - * @param {Object} options | options.offset = {x:Number, y:Number} // offset from the center in DOM pixels - * | options.scale = Number // scale to move to - * | options.position = {x:Number, y:Number} // position to move to - * | options.animation = {duration:Number, easingFunction:String} || Boolean // position to move to - */ - Network.prototype.moveTo = function (options) { - if (options === undefined) { - options = {}; - return; + + // finally, we reposition all the visible items. + for (i = 0; i < visibleItems.length; i++) { + item = visibleItems[i]; + if (!item.displayed) item.show(); + // reposition item horizontally + item.repositionX(); } - if (options.offset === undefined) {options.offset = {x: 0, y: 0}; } - if (options.offset.x === undefined) {options.offset.x = 0; } - if (options.offset.y === undefined) {options.offset.y = 0; } - if (options.scale === undefined) {options.scale = this._getScale(); } - if (options.position === undefined) {options.position = this._getTranslation();} - if (options.animation === undefined) {options.animation = {duration:0}; } - if (options.animation === false ) {options.animation = {duration:0}; } - if (options.animation === true ) {options.animation = {}; } - if (options.animation.duration === undefined) {options.animation.duration = 1000; } // default duration - if (options.animation.easingFunction === undefined) {options.animation.easingFunction = "easeInOutQuad"; } // default easing function - this.animateView(options); + // debug + //console.log("new line") + //if (this.groupId == null) { + // for (i = 0; i < orderedItems.byStart.length; i++) { + // item = orderedItems.byStart[i].data; + // console.log('start',i,initialPosByStart, item.start.valueOf(), item.content, item.start >= lowerBound && item.start <= upperBound,i == initialPosByStart ? "<------------------- HEREEEE" : "") + // } + // for (i = 0; i < orderedItems.byEnd.length; i++) { + // item = orderedItems.byEnd[i].data; + // console.log('rangeEnd',i,initialPosByEnd, item.end.valueOf(), item.content, item.end >= range.start && item.end <= range.end,i == initialPosByEnd ? "<------------------- HEREEEE" : "") + // } + //} + + return visibleItems; }; - /** - * - * @param {Object} options | options.offset = {x:Number, y:Number} // offset from the center in DOM pixels - * | options.time = Number // animation time in milliseconds - * | options.scale = Number // scale to animate to - * | options.position = {x:Number, y:Number} // position to animate to - * | options.easingFunction = String // linear, easeInQuad, easeOutQuad, easeInOutQuad, - * // easeInCubic, easeOutCubic, easeInOutCubic, - * // easeInQuart, easeOutQuart, easeInOutQuart, - * // easeInQuint, easeOutQuint, easeInOutQuint - */ - Network.prototype.animateView = function (options) { - if (options === undefined) { - options = {}; - return; - } + Group.prototype._getCustomOrderedItems = function () { + var customOrderedItems = this.orderedItems.byStart.filter(function (item) { + return item.height !== 0 || item.width !== 0; + }); + var me = this; - // release if something focussed on the node - this.releaseNode(); - if (options.locked == true) { - this.lockedOnNodeId = options.lockedOnNode; - this.lockedOnNodeOffset = options.offset; - } + customOrderedItems.sort(function (a, b) { + return me.itemSet.options.order(a.data, b.data); + }); - // forcefully complete the old animation if it was still running - if (this.easingTime != 0) { - this._transitionRedraw(1); // by setting easingtime to 1, we finish the animation. - } + customOrderedItems.forEach(function (item) { + item.repositionX(); + }); - this.sourceScale = this._getScale(); - this.sourceTranslation = this._getTranslation(); - this.targetScale = options.scale; + return customOrderedItems; + }; - // set the scale so the viewCenter is based on the correct zoom level. This is overridden in the transitionRedraw - // but at least then we'll have the target transition - this._setScale(this.targetScale); - var viewCenter = this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); - var distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node - x: viewCenter.x - options.position.x, - y: viewCenter.y - options.position.y - }; - this.targetTranslation = { - x: this.sourceTranslation.x + distanceFromCenter.x * this.targetScale + options.offset.x, - y: this.sourceTranslation.y + distanceFromCenter.y * this.targetScale + options.offset.y - }; + Group.prototype._traceVisible = function (initialPos, items, visibleItems, visibleItemsLookup, breakCondition) { + var item; + var i; - // if the time is set to 0, don't do an animation - if (options.animation.duration == 0) { - if (this.lockedOnNodeId != null) { - this._classicRedraw = this._redraw; - this._redraw = this._lockedRedraw; + if (initialPos != -1) { + for (i = initialPos; i >= 0; i--) { + item = items[i]; + if (breakCondition(item)) { + break; + } + else { + if (visibleItemsLookup[item.id] === undefined) { + visibleItemsLookup[item.id] = true; + visibleItems.push(item); + } + } + } + + for (i = initialPos + 1; i < items.length; i++) { + item = items[i]; + if (breakCondition(item)) { + break; + } + else { + if (visibleItemsLookup[item.id] === undefined) { + visibleItemsLookup[item.id] = true; + visibleItems.push(item); + } + } + } + } + } + + + /** + * this function is very similar to the _checkIfInvisible() but it does not + * return booleans, hides the item if it should not be seen and always adds to + * the visibleItems. + * this one is for brute forcing and hiding. + * + * @param {Item} item + * @param {Array} visibleItems + * @param {{start:number, end:number}} range + * @private + */ + Group.prototype._checkIfVisible = function(item, visibleItems, range) { + if (item.isVisible(range)) { + if (!item.displayed) item.show(); + // reposition item horizontally + item.repositionX(); + visibleItems.push(item); + } + else { + if (item.displayed) item.hide(); } - else { - this._setScale(this.targetScale); - this._setTranslation(this.targetTranslation.x, this.targetTranslation.y); - this._redraw(); + }; + + + /** + * this function is very similar to the _checkIfInvisible() but it does not + * return booleans, hides the item if it should not be seen and always adds to + * the visibleItems. + * this one is for brute forcing and hiding. + * + * @param {Item} item + * @param {Array} visibleItems + * @param {{start:number, end:number}} range + * @private + */ + Group.prototype._checkIfVisibleWithReference = function(item, visibleItems, visibleItemsLookup, range) { + if (item.isVisible(range)) { + if (visibleItemsLookup[item.id] === undefined) { + visibleItemsLookup[item.id] = true; + visibleItems.push(item); } } else { - this.animating = true; - this.animationSpeed = 1 / (this.renderRefreshRate * options.animation.duration * 0.001) || 1 / this.renderRefreshRate; - this.animationEasingFunction = options.animation.easingFunction; - this._classicRedraw = this._redraw; - this._redraw = this._transitionRedraw; - this._redraw(); - this.start(); + if (item.displayed) item.hide(); } }; + + + module.exports = Group; + + +/***/ }, +/* 29 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var Group = __webpack_require__(28); + /** - * used to animate smoothly by hijacking the redraw function. - * @private + * @constructor BackgroundGroup + * @param {Number | String} groupId + * @param {Object} data + * @param {ItemSet} itemSet */ - Network.prototype._lockedRedraw = function () { - var nodePosition = {x: this.nodes[this.lockedOnNodeId].x, y: this.nodes[this.lockedOnNodeId].y}; - var viewCenter = this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); - var distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node - x: viewCenter.x - nodePosition.x, - y: viewCenter.y - nodePosition.y - }; - var sourceTranslation = this._getTranslation(); - var targetTranslation = { - x: sourceTranslation.x + distanceFromCenter.x * this.scale + this.lockedOnNodeOffset.x, - y: sourceTranslation.y + distanceFromCenter.y * this.scale + this.lockedOnNodeOffset.y - }; + function BackgroundGroup (groupId, data, itemSet) { + Group.call(this, groupId, data, itemSet); - this._setTranslation(targetTranslation.x,targetTranslation.y); - this._classicRedraw(); + this.width = 0; + this.height = 0; + this.top = 0; + this.left = 0; } - Network.prototype.releaseNode = function () { - if (this.lockedOnNodeId != null) { - this._redraw = this._classicRedraw; - this.lockedOnNodeId = null; - this.lockedOnNodeOffset = null; - } - } + BackgroundGroup.prototype = Object.create(Group.prototype); /** - * - * @param easingTime - * @private + * Repaint this group + * @param {{start: number, end: number}} range + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @param {boolean} [restack=false] Force restacking of all items + * @return {boolean} Returns true if the group is resized */ - Network.prototype._transitionRedraw = function (easingTime) { - this.easingTime = easingTime || this.easingTime + this.animationSpeed; - this.easingTime += this.animationSpeed; + BackgroundGroup.prototype.redraw = function(range, margin, restack) { + var resized = false; - var progress = util.easingFunctions[this.animationEasingFunction](this.easingTime); + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - this._setScale(this.sourceScale + (this.targetScale - this.sourceScale) * progress); - this._setTranslation( - this.sourceTranslation.x + (this.targetTranslation.x - this.sourceTranslation.x) * progress, - this.sourceTranslation.y + (this.targetTranslation.y - this.sourceTranslation.y) * progress - ); + // calculate actual size + this.width = this.dom.background.offsetWidth; - this._classicRedraw(); + // apply new height (just always zero for BackgroundGroup + this.dom.background.style.height = '0'; - // cleanup - if (this.easingTime >= 1.0) { - this.animating = false; - this.easingTime = 0; - if (this.lockedOnNodeId != null) { - this._redraw = this._lockedRedraw; - } - else { - this._redraw = this._classicRedraw; - } - this.emit("animationFinished"); + // update vertical position of items after they are re-stacked and the height of the group is calculated + for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { + var item = this.visibleItems[i]; + item.repositionY(margin); } - }; - Network.prototype._classicRedraw = function () { - // placeholder function to be overloaded by animations; + return resized; }; /** - * Returns true when the Network is active. - * @returns {boolean} + * Show this group: attach to the DOM */ - Network.prototype.isActive = function () { - return !this.activator || this.activator.active; + BackgroundGroup.prototype.show = function() { + if (!this.dom.background.parentNode) { + this.itemSet.dom.background.appendChild(this.dom.background); + } }; + module.exports = BackgroundGroup; + + +/***/ }, +/* 30 */ +/***/ function(module, exports, __webpack_require__) { + + var Item = __webpack_require__(31); + var util = __webpack_require__(1); /** - * Sets the scale - * @returns {Number} + * @constructor BoxItem + * @extends Item + * @param {Object} data Object containing parameters start + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe available options */ - Network.prototype.setScale = function () { - return this._setScale(); - }; + function BoxItem (data, conversion, options) { + this.props = { + dot: { + width: 0, + height: 0 + }, + line: { + width: 0, + height: 0 + } + }; + + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data); + } + } + Item.call(this, data, conversion, options); + } + + BoxItem.prototype = new Item (null, null, null); /** - * Returns the scale - * @returns {Number} + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible */ - Network.prototype.getScale = function () { - return this._getScale(); + BoxItem.prototype.isVisible = function(range) { + // determine visibility + // TODO: account for the real width of the item. Right now we just add 1/4 to the window + var interval = (range.end - range.start) / 4; + return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); }; - /** - * Returns the scale - * @returns {Number} + * Repaint the item */ - Network.prototype.getCenterCoordinates = function () { - return this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); - }; + BoxItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; + // create main box + dom.box = document.createElement('DIV'); - Network.prototype.getBoundingBox = function(nodeId) { - if (this.nodes[nodeId] !== undefined) { - return this.nodes[nodeId].boundingBox; - } - } + // contents box (inside the background box). used for making margins + dom.content = document.createElement('DIV'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); - Network.prototype.getConnectedNodes = function(nodeId) { - var nodeList = []; - if (this.nodes[nodeId] !== undefined) { - var node = this.nodes[nodeId]; - var nodeObj = {nodeId : true}; // used to quickly check if node already exists - for (var i = 0; i < node.edges.length; i++) { - var edge = node.edges[i]; - if (edge.toId == nodeId) { - if (nodeObj[edge.fromId] === undefined) { - nodeList.push(edge.fromId); - nodeObj[edge.fromId] = true; - } - } - else if (edge.fromId == nodeId) { - if (nodeObj[edge.toId] === undefined) { - nodeList.push(edge.toId) - nodeObj[edge.toId] = true; - } - } - } - } - return nodeList; - } + // line to axis + dom.line = document.createElement('DIV'); + dom.line.className = 'line'; + // dot on axis + dom.dot = document.createElement('DIV'); + dom.dot.className = 'dot'; - Network.prototype.getEdgesFromNode = function(nodeId) { - var edgesList = []; - if (this.nodes[nodeId] !== undefined) { - var node = this.nodes[nodeId]; - for (var i = 0; i < node.edges.length; i++) { - edgesList.push(node.edges[i].id); - } + // attach this item as attribute + dom.box['timeline-item'] = this; + + this.dirty = true; } - return edgesList; - } - Network.prototype.generateColorObject = function(color) { - return util.parseColor(color); + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + if (!dom.box.parentNode) { + var foreground = this.parent.dom.foreground; + if (!foreground) throw new Error('Cannot redraw item: parent has no foreground container element'); + foreground.appendChild(dom.box); + } + if (!dom.line.parentNode) { + var background = this.parent.dom.background; + if (!background) throw new Error('Cannot redraw item: parent has no background container element'); + background.appendChild(dom.line); + } + if (!dom.dot.parentNode) { + var axis = this.parent.dom.axis; + if (!background) throw new Error('Cannot redraw item: parent has no axis container element'); + axis.appendChild(dom.dot); + } + this.displayed = true; - } + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.box); + this._updateDataAttributes(this.dom.box); + this._updateStyle(this.dom.box); - module.exports = Network; + // update class + var className = (this.data.className? ' ' + this.data.className : '') + + (this.selected ? ' selected' : ''); + dom.box.className = 'item box' + className; + dom.line.className = 'item line' + className; + dom.dot.className = 'item dot' + className; + // recalculate size + this.props.dot.height = dom.dot.offsetHeight; + this.props.dot.width = dom.dot.offsetWidth; + this.props.line.width = dom.line.offsetWidth; + this.width = dom.box.offsetWidth; + this.height = dom.box.offsetHeight; -/***/ }, -/* 37 */ -/***/ function(module, exports, __webpack_require__) { + this.dirty = false; + } - var util = __webpack_require__(1); - var Node = __webpack_require__(40); + this._repaintDeleteButton(dom.box); + }; /** - * @class Edge - * - * A edge connects two nodes - * @param {Object} properties Object with properties. Must contain - * At least properties from and to. - * Available properties: from (number), - * to (number), label (string, color (string), - * width (number), style (string), - * length (number), title (string) - * @param {Network} network A Network object, used to find and edge to - * nodes. - * @param {Object} constants An object with default values for - * example for the color + * Show the item in the DOM (when not already displayed). The items DOM will + * be created when needed. */ - function Edge (properties, network, networkConstants) { - if (!network) { - throw "No network provided"; + BoxItem.prototype.show = function() { + if (!this.displayed) { + this.redraw(); } - var fields = ['edges','physics']; - var constants = util.selectiveBridgeObject(fields,networkConstants); - this.options = constants.edges; - this.physics = constants.physics; - this.options['smoothCurves'] = networkConstants['smoothCurves']; - + }; - this.network = network; + /** + * Hide the item from the DOM (when visible) + */ + BoxItem.prototype.hide = function() { + if (this.displayed) { + var dom = this.dom; - // initialize variables - this.id = undefined; - this.fromId = undefined; - this.toId = undefined; - this.title = undefined; - this.widthSelected = this.options.width * this.options.widthSelectionMultiplier; - this.value = undefined; - this.selected = false; - this.hover = false; - this.labelDimensions = {top:0,left:0,width:0,height:0,yLine:0}; // could be cached - this.dirtyLabel = true; - this.colorDirty = true; + if (dom.box.parentNode) dom.box.parentNode.removeChild(dom.box); + if (dom.line.parentNode) dom.line.parentNode.removeChild(dom.line); + if (dom.dot.parentNode) dom.dot.parentNode.removeChild(dom.dot); - this.from = null; // a node - this.to = null; // a node - this.via = null; // a temp node + this.top = null; + this.left = null; - this.fromBackup = null; // used to clean up after reconnect - this.toBackup = null;; // used to clean up after reconnect + this.displayed = false; + } + }; - // we use this to be able to reconnect the edge to a cluster if its node is put into a cluster - // by storing the original information we can revert to the original connection when the cluser is opened. - this.originalFromId = []; - this.originalToId = []; + /** + * Reposition the item horizontally + * @Override + */ + BoxItem.prototype.repositionX = function() { + var start = this.conversion.toScreen(this.data.start); + var align = this.options.align; + var left; + var box = this.dom.box; + var line = this.dom.line; + var dot = this.dom.dot; - this.connected = false; + // calculate left position of the box + if (align == 'right') { + this.left = start - this.width; + } + else if (align == 'left') { + this.left = start; + } + else { + // default or 'center' + this.left = start - this.width / 2; + } - this.widthFixed = false; - this.lengthFixed = false; + // reposition box + box.style.left = this.left + 'px'; - this.setProperties(properties); + // reposition line + line.style.left = (start - this.props.line.width / 2) + 'px'; - this.controlNodesEnabled = false; - this.controlNodes = {from:null, to:null, positions:{}}; - this.connectedNode = null; - } + // reposition dot + dot.style.left = (start - this.props.dot.width / 2) + 'px'; + }; /** - * Set or overwrite properties for the edge - * @param {Object} properties an object with properties - * @param {Object} constants and object with default, global properties + * Reposition the item vertically + * @Override */ - Edge.prototype.setProperties = function(properties) { - this.colorDirty = true; - if (!properties) { - return; + BoxItem.prototype.repositionY = function() { + var orientation = this.options.orientation; + var box = this.dom.box; + var line = this.dom.line; + var dot = this.dom.dot; + + if (orientation == 'top') { + box.style.top = (this.top || 0) + 'px'; + + line.style.top = '0'; + line.style.height = (this.parent.top + this.top + 1) + 'px'; + line.style.bottom = ''; } + else { // orientation 'bottom' + var itemSetHeight = this.parent.itemSet.props.height; // TODO: this is nasty + var lineHeight = itemSetHeight - this.parent.top - this.parent.height + this.top; - var fields = ['style','fontSize','fontFace','fontColor','fontFill','fontStrokeWidth','fontStrokeColor','width', - 'widthSelectionMultiplier','hoverWidth','arrowScaleFactor','dash','inheritColor','labelAlignment', 'opacity', - 'customScalingFunction','useGradients' - ]; - util.selectiveDeepExtend(fields, this.options, properties); + box.style.top = (this.parent.height - this.top - this.height || 0) + 'px'; + line.style.top = (itemSetHeight - lineHeight) + 'px'; + line.style.bottom = '0'; + } - if (properties.from !== undefined) {this.fromId = properties.from;} - if (properties.to !== undefined) {this.toId = properties.to;} + dot.style.top = (-this.props.dot.height / 2) + 'px'; + }; - if (properties.id !== undefined) {this.id = properties.id;} - if (properties.label !== undefined) {this.label = properties.label; this.dirtyLabel = true;} + module.exports = BoxItem; - if (properties.title !== undefined) {this.title = properties.title;} - if (properties.value !== undefined) {this.value = properties.value;} - if (properties.length !== undefined) {this.physics.springLength = properties.length;} - if (properties.color !== undefined) { - this.options.inheritColor = false; - if (util.isString(properties.color)) { - this.options.color.color = properties.color; - this.options.color.highlight = properties.color; - } - else { - if (properties.color.color !== undefined) {this.options.color.color = properties.color.color;} - if (properties.color.highlight !== undefined) {this.options.color.highlight = properties.color.highlight;} - if (properties.color.hover !== undefined) {this.options.color.hover = properties.color.hover;} - } - } +/***/ }, +/* 31 */ +/***/ function(module, exports, __webpack_require__) { + var Hammer = __webpack_require__(19); + var util = __webpack_require__(1); + /** + * @constructor Item + * @param {Object} data Object containing (optional) parameters type, + * start, end, content, group, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} options Configuration options + * // TODO: describe available options + */ + function Item (data, conversion, options) { + this.id = null; + this.parent = null; + this.data = data; + this.dom = null; + this.conversion = conversion || {}; + this.options = options || {}; - // A node is connected when it has a from and to node. - this.connect(); + this.selected = false; + this.displayed = false; + this.dirty = true; - this.widthFixed = this.widthFixed || (properties.width !== undefined); - this.lengthFixed = this.lengthFixed || (properties.length !== undefined); + this.top = null; + this.left = null; + this.width = null; + this.height = null; + } - this.widthSelected = this.options.width* this.options.widthSelectionMultiplier; + Item.prototype.stack = true; - // set draw method based on style - switch (this.options.style) { - case 'line': this.draw = this._drawLine; break; - case 'arrow': this.draw = this._drawArrow; break; - case 'arrow-center': this.draw = this._drawArrowCenter; break; - case 'dash-line': this.draw = this._drawDashLine; break; - default: this.draw = this._drawLine; break; - } + /** + * Select current item + */ + Item.prototype.select = function() { + this.selected = true; + this.dirty = true; + if (this.displayed) this.redraw(); + }; + + /** + * Unselect current item + */ + Item.prototype.unselect = function() { + this.selected = false; + this.dirty = true; + if (this.displayed) this.redraw(); }; - /** - * Connect an edge to its nodes + * Set data for the item. Existing data will be updated. The id should not + * be changed. When the item is displayed, it will be redrawn immediately. + * @param {Object} data */ - Edge.prototype.connect = function () { - this.disconnect(); - - this.from = this.network.nodes[this.fromId] || null; - this.to = this.network.nodes[this.toId] || null; - this.connected = (this.from && this.to); + Item.prototype.setData = function(data) { + this.data = data; + this.dirty = true; + if (this.displayed) this.redraw(); + }; - if (this.connected) { - this.from.attachEdge(this); - this.to.attachEdge(this); + /** + * Set a parent for the item + * @param {ItemSet | Group} parent + */ + Item.prototype.setParent = function(parent) { + if (this.displayed) { + this.hide(); + this.parent = parent; + if (this.parent) { + this.show(); + } } else { - if (this.from) { - this.from.detachEdge(this); - } - if (this.to) { - this.to.detachEdge(this); - } + this.parent = parent; } }; /** - * Disconnect an edge from its nodes + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible */ - Edge.prototype.disconnect = function () { - if (this.from) { - this.from.detachEdge(this); - this.from = null; - } - if (this.to) { - this.to.detachEdge(this); - this.to = null; - } - - this.connected = false; + Item.prototype.isVisible = function(range) { + // Should be implemented by Item implementations + return false; }; /** - * get the title of this edge. - * @return {string} title The title of the edge, or undefined when no title - * has been set. + * Show the Item in the DOM (when not already visible) + * @return {Boolean} changed */ - Edge.prototype.getTitle = function() { - return typeof this.title === "function" ? this.title() : this.title; + Item.prototype.show = function() { + return false; }; - /** - * Retrieve the value of the edge. Can be undefined - * @return {Number} value + * Hide the Item from the DOM (when visible) + * @return {Boolean} changed */ - Edge.prototype.getValue = function() { - return this.value; + Item.prototype.hide = function() { + return false; }; /** - * Adjust the value range of the edge. The edge will adjust it's width - * based on its value. - * @param {Number} min - * @param {Number} max + * Repaint the item */ - Edge.prototype.setValueRange = function(min, max, total) { - if (!this.widthFixed && this.value !== undefined) { - var scale = this.options.customScalingFunction(min, max, total, this.value); - var widthDiff = this.options.widthMax - this.options.widthMin; - this.options.width = this.options.widthMin + scale * widthDiff; - this.widthSelected = this.options.width* this.options.widthSelectionMultiplier; - } + Item.prototype.redraw = function() { + // should be implemented by the item }; /** - * Redraw a edge - * Draw this edge in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx + * Reposition the Item horizontally */ - Edge.prototype.draw = function(ctx) { - throw "Method draw not initialized in edge"; + Item.prototype.repositionX = function() { + // should be implemented by the item }; /** - * Check if this object is overlapping with the provided object - * @param {Object} obj an object with parameters left, top - * @return {boolean} True if location is located on the edge + * Reposition the Item vertically */ - Edge.prototype.isOverlappingWith = function(obj) { - if (this.connected) { - var distMax = 10; - var xFrom = this.from.x; - var yFrom = this.from.y; - var xTo = this.to.x; - var yTo = this.to.y; - var xObj = obj.left; - var yObj = obj.top; - - var dist = this._getDistanceToEdge(xFrom, yFrom, xTo, yTo, xObj, yObj); - - return (dist < distMax); - } - else { - return false - } + Item.prototype.repositionY = function() { + // should be implemented by the item }; - Edge.prototype._getColor = function(ctx) { - var colorObj = this.options.color; - if (this.options.useGradients == true) { - var grd = ctx.createLinearGradient(this.from.x, this.from.y, this.to.x, this.to.y); - var fromColor, toColor; - fromColor = this.from.options.color.highlight.border; - toColor = this.to.options.color.highlight.border; + /** + * Repaint a delete button on the top right of the item when the item is selected + * @param {HTMLElement} anchor + * @protected + */ + Item.prototype._repaintDeleteButton = function (anchor) { + if (this.selected && this.options.editable.remove && !this.dom.deleteButton) { + // create and show button + var me = this; + var deleteButton = document.createElement('div'); + deleteButton.className = 'delete'; + deleteButton.title = 'Delete this item'; - if (this.from.selected == false && this.to.selected == false) { - fromColor = util.overrideOpacity(this.from.options.color.border, this.options.opacity); - toColor = util.overrideOpacity(this.to.options.color.border, this.options.opacity); - } - else if (this.from.selected == true && this.to.selected == false) { - toColor = this.to.options.color.border; - } - else if (this.from.selected == false && this.to.selected == true) { - fromColor = this.from.options.color.border; - } - grd.addColorStop(0, fromColor); - grd.addColorStop(1, toColor); - return grd; - } + Hammer(deleteButton, { + preventDefault: true + }).on('tap', function (event) { + me.parent.removeFromDataSet(me); + event.stopPropagation(); + }); - if (this.colorDirty === true) { - if (this.options.inheritColor == "to") { - colorObj = { - highlight: this.to.options.color.highlight.border, - hover: this.to.options.color.hover.border, - color: util.overrideOpacity(this.from.options.color.border, this.options.opacity) - }; - } - else if (this.options.inheritColor == "from" || this.options.inheritColor == true) { - colorObj = { - highlight: this.from.options.color.highlight.border, - hover: this.from.options.color.hover.border, - color: util.overrideOpacity(this.from.options.color.border, this.options.opacity) - }; + anchor.appendChild(deleteButton); + this.dom.deleteButton = deleteButton; + } + else if (!this.selected && this.dom.deleteButton) { + // remove button + if (this.dom.deleteButton.parentNode) { + this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton); } - this.options.color = colorObj; - this.colorDirty = false; + this.dom.deleteButton = null; } - - - - if (this.selected == true) {return colorObj.highlight;} - else if (this.hover == true) {return colorObj.hover;} - else {return colorObj.color;} }; - /** - * Redraw a edge as a line - * Draw this edge in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx + * Set HTML contents for the item + * @param {Element} element HTML element to fill with the contents * @private */ - Edge.prototype._drawLine = function(ctx) { - // set style - ctx.strokeStyle = this._getColor(ctx); - ctx.lineWidth = this._getLineWidth(); - - if (this.from != this.to) { - // draw line - var via = this._line(ctx); - - // draw label - var point; - if (this.label) { - if (this.options.smoothCurves.enabled == true && via != null) { - var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); - var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); - point = {x:midpointX, y:midpointY}; - } - else { - point = this._pointOnLine(0.5); - } - this._label(ctx, this.label, point.x, point.y); - } + Item.prototype._updateContents = function (element) { + var content; + if (this.options.template) { + var itemData = this.parent.itemSet.itemsData.get(this.id); // get a clone of the data from the dataset + content = this.options.template(itemData); } else { - var x, y; - var radius = this.physics.springLength / 4; - var node = this.from; - if (!node.width) { - node.resize(ctx); + content = this.data.content; + } + + if(content !== this.content) { + // only replace the content when changed + if (content instanceof Element) { + element.innerHTML = ''; + element.appendChild(content); } - if (node.width > node.height) { - x = node.x + node.width / 2; - y = node.y - radius; + else if (content != undefined) { + element.innerHTML = content; } else { - x = node.x + radius; - y = node.y - node.height / 2; + if (!(this.data.type == 'background' && this.data.content === undefined)) { + throw new Error('Property "content" missing in item ' + this.id); + } } - this._circle(ctx, x, y, radius); - point = this._pointOnCircle(x, y, radius, 0.5); - this._label(ctx, this.label, point.x, point.y); + + this.content = content; } }; /** - * Get the line width of the edge. Depends on width and whether one of the - * connected nodes is selected. - * @return {Number} width + * Set HTML contents for the item + * @param {Element} element HTML element to fill with the contents * @private */ - Edge.prototype._getLineWidth = function() { - if (this.selected == true) { - return Math.max(Math.min(this.widthSelected, this.options.widthMax), 0.3*this.networkScaleInv); + Item.prototype._updateTitle = function (element) { + if (this.data.title != null) { + element.title = this.data.title || ''; } else { - if (this.hover == true) { - return Math.max(Math.min(this.options.hoverWidth, this.options.widthMax), 0.3*this.networkScaleInv); - } - else { - return Math.max(this.options.width, 0.3*this.networkScaleInv); - } + element.removeAttribute('title'); } }; - Edge.prototype._getViaCoordinates = function () { - if (this.options.smoothCurves.dynamic == true && this.options.smoothCurves.enabled == true ) { - return this.via; - } - else if (this.options.smoothCurves.enabled == false) { - return {x:0,y:0}; - } - else { - var xVia = null; - var yVia = null; - var factor = this.options.smoothCurves.roundness; - var type = this.options.smoothCurves.type; - var dx = Math.abs(this.from.x - this.to.x); - var dy = Math.abs(this.from.y - this.to.y); - if (type == 'discrete' || type == 'diagonalCross') { - if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { - if (this.from.y > this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dy; - yVia = this.from.y - factor * dy; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dy; - yVia = this.from.y - factor * dy; - } - } - else if (this.from.y < this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dy; - yVia = this.from.y + factor * dy; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dy; - yVia = this.from.y + factor * dy; - } - } - if (type == "discrete") { - xVia = dx < factor * dy ? this.from.x : xVia; - } - } - else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { - if (this.from.y > this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dx; - yVia = this.from.y - factor * dx; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dx; - yVia = this.from.y - factor * dx; - } - } - else if (this.from.y < this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dx; - yVia = this.from.y + factor * dx; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dx; - yVia = this.from.y + factor * dx; - } - } - if (type == "discrete") { - yVia = dy < factor * dx ? this.from.y : yVia; - } - } + /** + * Process dataAttributes timeline option and set as data- attributes on dom.content + * @param {Element} element HTML element to which the attributes will be attached + * @private + */ + Item.prototype._updateDataAttributes = function(element) { + if (this.options.dataAttributes && this.options.dataAttributes.length > 0) { + var attributes = []; + + if (Array.isArray(this.options.dataAttributes)) { + attributes = this.options.dataAttributes; } - else if (type == "straightCross") { - if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { // up - down - xVia = this.from.x; - if (this.from.y < this.to.y) { - yVia = this.to.y - (1 - factor) * dy; - } - else { - yVia = this.to.y + (1 - factor) * dy; - } - } - else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { // left - right - if (this.from.x < this.to.x) { - xVia = this.to.x - (1 - factor) * dx; - } - else { - xVia = this.to.x + (1 - factor) * dx; - } - yVia = this.from.y; - } + else if (this.options.dataAttributes == 'all') { + attributes = Object.keys(this.data); } - else if (type == 'horizontal') { - if (this.from.x < this.to.x) { - xVia = this.to.x - (1 - factor) * dx; - } - else { - xVia = this.to.x + (1 - factor) * dx; - } - yVia = this.from.y; + else { + return; } - else if (type == 'vertical') { - xVia = this.from.x; - if (this.from.y < this.to.y) { - yVia = this.to.y - (1 - factor) * dy; + + for (var i = 0; i < attributes.length; i++) { + var name = attributes[i]; + var value = this.data[name]; + + if (value != null) { + element.setAttribute('data-' + name, value); } else { - yVia = this.to.y + (1 - factor) * dy; + element.removeAttribute('data-' + name); } } - else if (type == 'curvedCW') { - var dx = this.to.x - this.from.x; - var dy = this.from.y - this.to.y; - var radius = Math.sqrt(dx*dx + dy*dy); - var pi = Math.PI; + } + }; - var originalAngle = Math.atan2(dy,dx); - var myAngle = (originalAngle + ((factor * 0.5) + 0.5) * pi) % (2 * pi); + /** + * Update custom styles of the element + * @param element + * @private + */ + Item.prototype._updateStyle = function(element) { + // remove old styles + if (this.style) { + util.removeCssText(element, this.style); + this.style = null; + } - xVia = this.from.x + (factor*0.5 + 0.5)*radius*Math.sin(myAngle); - yVia = this.from.y + (factor*0.5 + 0.5)*radius*Math.cos(myAngle); - } - else if (type == 'curvedCCW') { - var dx = this.to.x - this.from.x; - var dy = this.from.y - this.to.y; - var radius = Math.sqrt(dx*dx + dy*dy); - var pi = Math.PI; + // append new styles + if (this.data.style) { + util.addCssText(element, this.data.style); + this.style = this.data.style; + } + }; - var originalAngle = Math.atan2(dy,dx); - var myAngle = (originalAngle + ((-factor * 0.5) + 0.5) * pi) % (2 * pi); + module.exports = Item; - xVia = this.from.x + (factor*0.5 + 0.5)*radius*Math.sin(myAngle); - yVia = this.from.y + (factor*0.5 + 0.5)*radius*Math.cos(myAngle); + +/***/ }, +/* 32 */ +/***/ function(module, exports, __webpack_require__) { + + var Item = __webpack_require__(31); + + /** + * @constructor PointItem + * @extends Item + * @param {Object} data Object containing parameters start + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe available options + */ + function PointItem (data, conversion, options) { + this.props = { + dot: { + top: 0, + width: 0, + height: 0 + }, + content: { + height: 0, + marginLeft: 0 } - else { // continuous - if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { - if (this.from.y > this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dy; - yVia = this.from.y - factor * dy; - xVia = this.to.x < xVia ? this.to.x : xVia; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dy; - yVia = this.from.y - factor * dy; - xVia = this.to.x > xVia ? this.to.x : xVia; - } - } - else if (this.from.y < this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dy; - yVia = this.from.y + factor * dy; - xVia = this.to.x < xVia ? this.to.x : xVia; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dy; - yVia = this.from.y + factor * dy; - xVia = this.to.x > xVia ? this.to.x : xVia; - } - } - } - else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { - if (this.from.y > this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dx; - yVia = this.from.y - factor * dx; - yVia = this.to.y > yVia ? this.to.y : yVia; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dx; - yVia = this.from.y - factor * dx; - yVia = this.to.y > yVia ? this.to.y : yVia; - } - } - else if (this.from.y < this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dx; - yVia = this.from.y + factor * dx; - yVia = this.to.y < yVia ? this.to.y : yVia; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dx; - yVia = this.from.y + factor * dx; - yVia = this.to.y < yVia ? this.to.y : yVia; - } - } - } + }; + + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data); } + } + + Item.call(this, data, conversion, options); + } + PointItem.prototype = new Item (null, null, null); - return {x: xVia, y: yVia}; - } + /** + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible + */ + PointItem.prototype.isVisible = function(range) { + // determine visibility + // TODO: account for the real width of the item. Right now we just add 1/4 to the window + var interval = (range.end - range.start) / 4; + return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); }; /** - * Draw a line between two nodes - * @param {CanvasRenderingContext2D} ctx - * @private + * Repaint the item */ - Edge.prototype._line = function (ctx) { - // draw a straight line - ctx.beginPath(); - ctx.moveTo(this.from.x, this.from.y); - if (this.options.smoothCurves.enabled == true) { - if (this.options.smoothCurves.dynamic == false) { - var via = this._getViaCoordinates(); - if (via.x == null) { - ctx.lineTo(this.to.x, this.to.y); - ctx.stroke(); - return null; - } - else { - // this.via.x = via.x; - // this.via.y = via.y; - ctx.quadraticCurveTo(via.x,via.y,this.to.x, this.to.y); - ctx.stroke(); - //ctx.circle(via.x,via.y,2) - //ctx.stroke(); - return via; - } - } - else { - ctx.quadraticCurveTo(this.via.x,this.via.y,this.to.x, this.to.y); - ctx.stroke(); - return this.via; + PointItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; + + // background box + dom.point = document.createElement('div'); + // className is updated in redraw() + + // contents box, right from the dot + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.point.appendChild(dom.content); + + // dot at start + dom.dot = document.createElement('div'); + dom.point.appendChild(dom.dot); + + // attach this item as attribute + dom.point['timeline-item'] = this; + + this.dirty = true; + } + + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + if (!dom.point.parentNode) { + var foreground = this.parent.dom.foreground; + if (!foreground) { + throw new Error('Cannot redraw item: parent has no foreground container element'); } + foreground.appendChild(dom.point); } - else { - ctx.lineTo(this.to.x, this.to.y); - ctx.stroke(); - return null; + this.displayed = true; + + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.point); + this._updateDataAttributes(this.dom.point); + this._updateStyle(this.dom.point); + + // update class + var className = (this.data.className? ' ' + this.data.className : '') + + (this.selected ? ' selected' : ''); + dom.point.className = 'item point' + className; + dom.dot.className = 'item dot' + className; + + // recalculate size + this.width = dom.point.offsetWidth; + this.height = dom.point.offsetHeight; + this.props.dot.width = dom.dot.offsetWidth; + this.props.dot.height = dom.dot.offsetHeight; + this.props.content.height = dom.content.offsetHeight; + + // resize contents + dom.content.style.marginLeft = 2 * this.props.dot.width + 'px'; + //dom.content.style.marginRight = ... + 'px'; // TODO: margin right + + dom.dot.style.top = ((this.height - this.props.dot.height) / 2) + 'px'; + dom.dot.style.left = (this.props.dot.width / 2) + 'px'; + + this.dirty = false; } + + this._repaintDeleteButton(dom.point); }; /** - * Draw a line from a node to itself, a circle - * @param {CanvasRenderingContext2D} ctx - * @param {Number} x - * @param {Number} y - * @param {Number} radius - * @private + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. */ - Edge.prototype._circle = function (ctx, x, y, radius) { - // draw a circle - ctx.beginPath(); - ctx.arc(x, y, radius, 0, 2 * Math.PI, false); - ctx.stroke(); + PointItem.prototype.show = function() { + if (!this.displayed) { + this.redraw(); + } }; /** - * Draw label with white background and with the middle at (x, y) - * @param {CanvasRenderingContext2D} ctx - * @param {String} text - * @param {Number} x - * @param {Number} y - * @private + * Hide the item from the DOM (when visible) */ - Edge.prototype._label = function (ctx, text, x, y) { - if (text) { - ctx.font = ((this.from.selected || this.to.selected) ? "bold " : "") + - this.options.fontSize + "px " + this.options.fontFace; - var yLine; - - if (this.dirtyLabel == true) { - var lines = String(text).split('\n'); - var lineCount = lines.length; - var fontSize = Number(this.options.fontSize); - yLine = y + (1 - lineCount) / 2 * fontSize; - - var width = ctx.measureText(lines[0]).width; - for (var i = 1; i < lineCount; i++) { - var lineWidth = ctx.measureText(lines[i]).width; - width = lineWidth > width ? lineWidth : width; - } - var height = this.options.fontSize * lineCount; - var left = x - width / 2; - var top = y - height / 2; - - // cache - this.labelDimensions = {top:top,left:left,width:width,height:height,yLine:yLine}; + PointItem.prototype.hide = function() { + if (this.displayed) { + if (this.dom.point.parentNode) { + this.dom.point.parentNode.removeChild(this.dom.point); } - var yLine = this.labelDimensions.yLine; - - ctx.save(); - - if (this.options.labelAlignment != "horizontal"){ - ctx.translate(x, yLine); - this._rotateForLabelAlignment(ctx); - x = 0; - yLine = 0; - } + this.top = null; + this.left = null; - - this._drawLabelRect(ctx); - this._drawLabelText(ctx,x,yLine, lines, lineCount, fontSize); - - ctx.restore(); + this.displayed = false; } }; /** - * Rotates the canvas so the text is most readable - * @param {CanvasRenderingContext2D} ctx - * @private + * Reposition the item horizontally + * @Override */ - Edge.prototype._rotateForLabelAlignment = function(ctx) { - var dy = this.from.y - this.to.y; - var dx = this.from.x - this.to.x; - var angleInDegrees = Math.atan2(dy, dx); + PointItem.prototype.repositionX = function() { + var start = this.conversion.toScreen(this.data.start); - // rotate so label it is readable - if((angleInDegrees < -1 && dx < 0) || (angleInDegrees > 0 && dx < 0)){ - angleInDegrees = angleInDegrees + Math.PI; - } - - ctx.rotate(angleInDegrees); + this.left = start - this.props.dot.width; + + // reposition point + this.dom.point.style.left = this.left + 'px'; }; /** - * Draws the label rectangle - * @param {CanvasRenderingContext2D} ctx - * @param {String} labelAlignment - * @private + * Reposition the item vertically + * @Override */ - Edge.prototype._drawLabelRect = function(ctx) { - if (this.options.fontFill !== undefined && this.options.fontFill !== null && this.options.fontFill !== "none") { - ctx.fillStyle = this.options.fontFill; - - var lineMargin = 2; + PointItem.prototype.repositionY = function() { + var orientation = this.options.orientation, + point = this.dom.point; - if (this.options.labelAlignment == 'line-center') { - ctx.fillRect(-this.labelDimensions.width * 0.5, -this.labelDimensions.height * 0.5, this.labelDimensions.width, this.labelDimensions.height); - } - else if (this.options.labelAlignment == 'line-above') { - ctx.fillRect(-this.labelDimensions.width * 0.5, -(this.labelDimensions.height + lineMargin), this.labelDimensions.width, this.labelDimensions.height); + if (orientation == 'top') { + point.style.top = this.top + 'px'; + } + else { + point.style.top = (this.parent.height - this.top - this.height) + 'px'; + } + }; + + module.exports = PointItem; + + +/***/ }, +/* 33 */ +/***/ function(module, exports, __webpack_require__) { + + var Hammer = __webpack_require__(19); + var Item = __webpack_require__(31); + + /** + * @constructor RangeItem + * @extends Item + * @param {Object} data Object containing parameters start, end + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe options + */ + function RangeItem (data, conversion, options) { + this.props = { + content: { + width: 0 } - else if (this.options.labelAlignment == 'line-below') { - ctx.fillRect(-this.labelDimensions.width * 0.5, lineMargin, this.labelDimensions.width, this.labelDimensions.height); + }; + this.overflow = false; // if contents can overflow (css styling), this flag is set to true + + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data.id); } - else { - ctx.fillRect(this.labelDimensions.left, this.labelDimensions.top, this.labelDimensions.width, this.labelDimensions.height); + if (data.end == undefined) { + throw new Error('Property "end" missing in item ' + data.id); } } + + Item.call(this, data, conversion, options); + } + + RangeItem.prototype = new Item (null, null, null); + + RangeItem.prototype.baseClassName = 'item range'; + + /** + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible + */ + RangeItem.prototype.isVisible = function(range) { + // determine visibility + return (this.data.start < range.end) && (this.data.end > range.start); }; /** - * Draws the label text - * @param {CanvasRenderingContext2D} ctx - * @param {Number} x - * @param {Number} yLine - * @param {Array} lines - * @param {Number} lineCount - * @param {Number} fontSize - * @private + * Repaint the item */ - Edge.prototype._drawLabelText = function(ctx, x, yLine, lines, lineCount, fontSize) { - // draw text - ctx.fillStyle = this.options.fontColor || "black"; - ctx.textAlign = "center"; + RangeItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - // check for label alignment - if (this.options.labelAlignment != 'horizontal') { - var lineMargin = 2; - if (this.options.labelAlignment == 'line-above') { - ctx.textBaseline = "alphabetic"; - yLine -= 2 * lineMargin; // distance from edge, required because we use alphabetic. Alphabetic has less difference between browsers - } - else if (this.options.labelAlignment == 'line-below') { - ctx.textBaseline = "hanging"; - yLine += 2 * lineMargin;// distance from edge, required because we use hanging. Hanging has less difference between browsers - } - else { - ctx.textBaseline = "middle"; + // background box + dom.box = document.createElement('div'); + // className is updated in redraw() + + // contents box + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); + + // attach this item as attribute + dom.box['timeline-item'] = this; + + this.dirty = true; + } + + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + if (!dom.box.parentNode) { + var foreground = this.parent.dom.foreground; + if (!foreground) { + throw new Error('Cannot redraw item: parent has no foreground container element'); } + foreground.appendChild(dom.box); } - else { - ctx.textBaseline = "middle"; + this.displayed = true; + + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.box); + this._updateDataAttributes(this.dom.box); + this._updateStyle(this.dom.box); + + // update class + var className = (this.data.className ? (' ' + this.data.className) : '') + + (this.selected ? ' selected' : ''); + dom.box.className = this.baseClassName + className; + + // determine from css whether this box has overflow + this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; + + // recalculate size + // turn off max-width to be able to calculate the real width + // this causes an extra browser repaint/reflow, but so be it + this.dom.content.style.maxWidth = 'none'; + this.props.content.width = this.dom.content.offsetWidth; + this.height = this.dom.box.offsetHeight; + this.dom.content.style.maxWidth = ''; + + this.dirty = false; } - // check for strokeWidth - if (this.options.fontStrokeWidth > 0){ - ctx.lineWidth = this.options.fontStrokeWidth; - ctx.strokeStyle = this.options.fontStrokeColor; - ctx.lineJoin = 'round'; + this._repaintDeleteButton(dom.box); + this._repaintDragLeft(); + this._repaintDragRight(); + }; + + /** + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. + */ + RangeItem.prototype.show = function() { + if (!this.displayed) { + this.redraw(); } - for (var i = 0; i < lineCount; i++) { - if(this.options.fontStrokeWidth > 0){ - ctx.strokeText(lines[i], x, yLine); - } - ctx.fillText(lines[i], x, yLine); - yLine += fontSize; - } }; /** - * Redraw a edge as a dashed line - * Draw this edge in the given canvas - * @author David Jordan - * @date 2012-08-08 - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - * @private + * Hide the item from the DOM (when visible) + * @return {Boolean} changed */ - Edge.prototype._drawDashLine = function(ctx) { - // set style - ctx.strokeStyle = this._getColor(ctx); - ctx.lineWidth = this._getLineWidth(); + RangeItem.prototype.hide = function() { + if (this.displayed) { + var box = this.dom.box; - var via = null; - // only firefox and chrome support this method, else we use the legacy one. - if (ctx.setLineDash !== undefined) { - ctx.save(); - // configure the dash pattern - var pattern = [0]; - if (this.options.dash.length !== undefined && this.options.dash.gap !== undefined) { - pattern = [this.options.dash.length,this.options.dash.gap]; - } - else { - pattern = [5,5]; + if (box.parentNode) { + box.parentNode.removeChild(box); } - // set dash settings for chrome or firefox - ctx.setLineDash(pattern); - ctx.lineDashOffset = 0; + this.top = null; + this.left = null; - // draw the line - via = this._line(ctx); + this.displayed = false; + } + }; - // restore the dash settings. - ctx.setLineDash([0]); - ctx.lineDashOffset = 0; - ctx.restore(); + /** + * Reposition the item horizontally + * @Override + */ + RangeItem.prototype.repositionX = function() { + var parentWidth = this.parent.width; + var start = this.conversion.toScreen(this.data.start); + var end = this.conversion.toScreen(this.data.end); + var contentLeft; + var contentWidth; + + // limit the width of the this, as browsers cannot draw very wide divs + if (start < -parentWidth) { + start = -parentWidth; } - else { // unsupporting smooth lines - // draw dashed line - ctx.beginPath(); - ctx.lineCap = 'round'; - if (this.options.dash.altLength !== undefined) //If an alt dash value has been set add to the array this value - { - ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y, - [this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]); - } - else if (this.options.dash.length !== undefined && this.options.dash.gap !== undefined) //If a dash and gap value has been set add to the array this value - { - ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y, - [this.options.dash.length,this.options.dash.gap]); - } - else //If all else fails draw a line - { - ctx.moveTo(this.from.x, this.from.y); - ctx.lineTo(this.to.x, this.to.y); - } - ctx.stroke(); + if (end > 2 * parentWidth) { + end = 2 * parentWidth; + } + var boxWidth = Math.max(end - start, 1); + + if (this.overflow) { + this.left = start; + this.width = boxWidth + this.props.content.width; + contentWidth = this.props.content.width; + + // Note: The calculation of width is an optimistic calculation, giving + // a width which will not change when moving the Timeline + // So no re-stacking needed, which is nicer for the eye; + } + else { + this.left = start; + this.width = boxWidth; + contentWidth = Math.min(end - start - 2 * this.options.padding, this.props.content.width); } - // draw label - if (this.label) { - var point; - if (this.options.smoothCurves.enabled == true && via != null) { - var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); - var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); - point = {x:midpointX, y:midpointY}; - } - else { - point = this._pointOnLine(0.5); - } - this._label(ctx, this.label, point.x, point.y); + this.dom.box.style.left = this.left + 'px'; + this.dom.box.style.width = boxWidth + 'px'; + + switch (this.options.align) { + case 'left': + this.dom.content.style.left = '0'; + break; + + case 'right': + this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding), 0) + 'px'; + break; + + case 'center': + this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding) / 2, 0) + 'px'; + break; + + default: // 'auto' + // when range exceeds left of the window, position the contents at the left of the visible area + if (this.overflow) { + if (end > 0) { + contentLeft = Math.max(-start, 0); + } + else { + contentLeft = -contentWidth; // ensure it's not visible anymore + } + } + else { + if (start < 0) { + contentLeft = Math.min(-start, + (end - start - contentWidth - 2 * this.options.padding)); + // TODO: remove the need for options.padding. it's terrible. + } + else { + contentLeft = 0; + } + } + this.dom.content.style.left = contentLeft + 'px'; } }; /** - * Get a point on a line - * @param {Number} percentage. Value between 0 (line start) and 1 (line end) - * @return {Object} point - * @private + * Reposition the item vertically + * @Override */ - Edge.prototype._pointOnLine = function (percentage) { - return { - x: (1 - percentage) * this.from.x + percentage * this.to.x, - y: (1 - percentage) * this.from.y + percentage * this.to.y + RangeItem.prototype.repositionY = function() { + var orientation = this.options.orientation, + box = this.dom.box; + + if (orientation == 'top') { + box.style.top = this.top + 'px'; + } + else { + box.style.top = (this.parent.height - this.top - this.height) + 'px'; } }; /** - * Get a point on a circle - * @param {Number} x - * @param {Number} y - * @param {Number} radius - * @param {Number} percentage. Value between 0 (line start) and 1 (line end) - * @return {Object} point - * @private + * Repaint a drag area on the left side of the range when the range is selected + * @protected */ - Edge.prototype._pointOnCircle = function (x, y, radius, percentage) { - var angle = (percentage - 3/8) * 2 * Math.PI; - return { - x: x + radius * Math.cos(angle), - y: y - radius * Math.sin(angle) + RangeItem.prototype._repaintDragLeft = function () { + if (this.selected && this.options.editable.updateTime && !this.dom.dragLeft) { + // create and show drag area + var dragLeft = document.createElement('div'); + dragLeft.className = 'drag-left'; + dragLeft.dragLeftItem = this; + + // TODO: this should be redundant? + Hammer(dragLeft, { + preventDefault: true + }).on('drag', function () { + //console.log('drag left') + }); + + this.dom.box.appendChild(dragLeft); + this.dom.dragLeft = dragLeft; + } + else if (!this.selected && this.dom.dragLeft) { + // delete drag area + if (this.dom.dragLeft.parentNode) { + this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft); + } + this.dom.dragLeft = null; } }; /** - * Redraw a edge as a line with an arrow halfway the line - * Draw this edge in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - * @private + * Repaint a drag area on the right side of the range when the range is selected + * @protected */ - Edge.prototype._drawArrowCenter = function(ctx) { - var point; - // set style - ctx.strokeStyle = this._getColor(ctx); - ctx.fillStyle = ctx.strokeStyle; - ctx.lineWidth = this._getLineWidth(); - - if (this.from != this.to) { - // draw line - var via = this._line(ctx); - - var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); - var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; - // draw an arrow halfway the line - if (this.options.smoothCurves.enabled == true && via != null) { - var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); - var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); - point = {x:midpointX, y:midpointY}; - } - else { - point = this._pointOnLine(0.5); - } + RangeItem.prototype._repaintDragRight = function () { + if (this.selected && this.options.editable.updateTime && !this.dom.dragRight) { + // create and show drag area + var dragRight = document.createElement('div'); + dragRight.className = 'drag-right'; + dragRight.dragRightItem = this; - ctx.arrow(point.x, point.y, angle, length); - ctx.fill(); - ctx.stroke(); + // TODO: this should be redundant? + Hammer(dragRight, { + preventDefault: true + }).on('drag', function () { + //console.log('drag right') + }); - // draw label - if (this.label) { - this._label(ctx, this.label, point.x, point.y); - } + this.dom.box.appendChild(dragRight); + this.dom.dragRight = dragRight; } - else { - // draw circle - var x, y; - var radius = 0.25 * Math.max(100,this.physics.springLength); - var node = this.from; - if (!node.width) { - node.resize(ctx); - } - if (node.width > node.height) { - x = node.x + node.width * 0.5; - y = node.y - radius; - } - else { - x = node.x + radius; - y = node.y - node.height * 0.5; - } - this._circle(ctx, x, y, radius); - - // draw all arrows - var angle = 0.2 * Math.PI; - var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; - point = this._pointOnCircle(x, y, radius, 0.5); - ctx.arrow(point.x, point.y, angle, length); - ctx.fill(); - ctx.stroke(); - - // draw label - if (this.label) { - point = this._pointOnCircle(x, y, radius, 0.5); - this._label(ctx, this.label, point.x, point.y); + else if (!this.selected && this.dom.dragRight) { + // delete drag area + if (this.dom.dragRight.parentNode) { + this.dom.dragRight.parentNode.removeChild(this.dom.dragRight); } + this.dom.dragRight = null; } }; - Edge.prototype._pointOnBezier = function(t) { - var via = this._getViaCoordinates(); + module.exports = RangeItem; - var x = Math.pow(1-t,2)*this.from.x + (2*t*(1 - t))*via.x + Math.pow(t,2)*this.to.x; - var y = Math.pow(1-t,2)*this.from.y + (2*t*(1 - t))*via.y + Math.pow(t,2)*this.to.y; - return {x:x,y:y}; - } +/***/ }, +/* 34 */ +/***/ function(module, exports, __webpack_require__) { + + var Hammer = __webpack_require__(19); + var Item = __webpack_require__(31); + var BackgroundGroup = __webpack_require__(29); + var RangeItem = __webpack_require__(33); /** - * This function uses binary search to look for the point where the bezier curve crosses the border of the node. - * - * @param from - * @param ctx - * @returns {*} - * @private + * @constructor BackgroundItem + * @extends Item + * @param {Object} data Object containing parameters start, end + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe options */ - Edge.prototype._findBorderPosition = function(from,ctx) { - var maxIterations = 10; - var iteration = 0; - var low = 0; - var high = 1; - var pos,angle,distanceToBorder, distanceToNodes, difference; - var threshold = 0.2; - var node = this.to; - if (from == true) { - node = this.from; - } - - while (low <= high && iteration < maxIterations) { - var middle = (low + high) * 0.5; - - pos = this._pointOnBezier(middle); - angle = Math.atan2((node.y - pos.y), (node.x - pos.x)); - distanceToBorder = node.distanceToBorder(ctx,angle); - distanceToNodes = Math.sqrt(Math.pow(pos.x-node.x,2) + Math.pow(pos.y-node.y,2)); - difference = distanceToBorder - distanceToNodes; - if (Math.abs(difference) < threshold) { - break; // found + // TODO: implement support for the BackgroundItem just having a start, then being displayed as a sort of an annotation + function BackgroundItem (data, conversion, options) { + this.props = { + content: { + width: 0 } - else if (difference < 0) { // distance to nodes is larger than distance to border --> t needs to be bigger if we're looking at the to node. - if (from == false) { - low = middle; - } - else { - high = middle; - } + }; + this.overflow = false; // if contents can overflow (css styling), this flag is set to true + + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data.id); } - else { - if (from == false) { - high = middle; - } - else { - low = middle; - } + if (data.end == undefined) { + throw new Error('Property "end" missing in item ' + data.id); } - - iteration++; } - pos.t = middle; - return pos; - }; + Item.call(this, data, conversion, options); + + this.emptyContent = false; + } + + BackgroundItem.prototype = new Item (null, null, null); + + BackgroundItem.prototype.baseClassName = 'item background'; + BackgroundItem.prototype.stack = false; /** - * Redraw a edge as a line with an arrow - * Draw this edge in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - * @private + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible */ - Edge.prototype._drawArrow = function(ctx) { - // set style - ctx.strokeStyle = this._getColor(ctx); - ctx.fillStyle = ctx.strokeStyle; - ctx.lineWidth = this._getLineWidth(); + BackgroundItem.prototype.isVisible = function(range) { + // determine visibility + return (this.data.start < range.end) && (this.data.end > range.start); + }; - // set vars - var angle, length, arrowPos; + /** + * Repaint the item + */ + BackgroundItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - // if not connected to itself - if (this.from != this.to) { - // draw line - this._line(ctx); + // background box + dom.box = document.createElement('div'); + // className is updated in redraw() - // draw arrow head - if (this.options.smoothCurves.enabled == true) { - var via = this._getViaCoordinates(); - arrowPos = this._findBorderPosition(false, ctx); - var guidePos = this._pointOnBezier(Math.max(0.0, arrowPos.t - 0.1)) - angle = Math.atan2((arrowPos.y - guidePos.y), (arrowPos.x - guidePos.x)); - } - else { - angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); - var dx = (this.to.x - this.from.x); - var dy = (this.to.y - this.from.y); - var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); - var toBorderDist = this.to.distanceToBorder(ctx, angle); - var toBorderPoint = (edgeSegmentLength - toBorderDist) / edgeSegmentLength; + // contents box + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); - arrowPos = {}; - arrowPos.x = (1 - toBorderPoint) * this.from.x + toBorderPoint * this.to.x; - arrowPos.y = (1 - toBorderPoint) * this.from.y + toBorderPoint * this.to.y; - } + // Note: we do NOT attach this item as attribute to the DOM, + // such that background items cannot be selected + //dom.box['timeline-item'] = this; - // draw arrow at the end of the line - length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; - ctx.arrow(arrowPos.x,arrowPos.y, angle, length); - ctx.fill(); - ctx.stroke(); + this.dirty = true; + } - // draw label - if (this.label) { - var point; - if (this.options.smoothCurves.enabled == true && via != null) { - point = this._pointOnBezier(0.5); - } - else { - point = this._pointOnLine(0.5); - } - this._label(ctx, this.label, point.x, point.y); - } + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); } - else { - // draw circle - var node = this.from; - var x, y, arrow; - var radius = 0.25 * Math.max(100,this.physics.springLength); - if (!node.width) { - node.resize(ctx); - } - if (node.width > node.height) { - x = node.x + node.width * 0.5; - y = node.y - radius; - arrow = { - x: x, - y: node.y, - angle: 0.9 * Math.PI - }; - } - else { - x = node.x + radius; - y = node.y - node.height * 0.5; - arrow = { - x: node.x, - y: y, - angle: 0.6 * Math.PI - }; + if (!dom.box.parentNode) { + var background = this.parent.dom.background; + if (!background) { + throw new Error('Cannot redraw item: parent has no background container element'); } - ctx.beginPath(); - // TODO: similarly, for a line without arrows, draw to the border of the nodes instead of the center - ctx.arc(x, y, radius, 0, 2 * Math.PI, false); - ctx.stroke(); + background.appendChild(dom.box); + } + this.displayed = true; - // draw all arrows - var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; - ctx.arrow(arrow.x, arrow.y, arrow.angle, length); - ctx.fill(); - ctx.stroke(); + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.content); + this._updateDataAttributes(this.dom.content); + this._updateStyle(this.dom.box); - // draw label - if (this.label) { - point = this._pointOnCircle(x, y, radius, 0.5); - this._label(ctx, this.label, point.x, point.y); - } + // update class + var className = (this.data.className ? (' ' + this.data.className) : '') + + (this.selected ? ' selected' : ''); + dom.box.className = this.baseClassName + className; + + // determine from css whether this box has overflow + this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; + + // recalculate size + this.props.content.width = this.dom.content.offsetWidth; + this.height = 0; // set height zero, so this item will be ignored when stacking items + + this.dirty = false; } }; /** - * Calculate the distance between a point (x3,y3) and a line segment from - * (x1,y1) to (x2,y2). - * http://stackoverflow.com/questions/849211/shortest-distancae-between-a-point-and-a-line-segment - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 - * @param {number} x3 - * @param {number} y3 - * @private + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. */ - Edge.prototype._getDistanceToEdge = function (x1,y1, x2,y2, x3,y3) { // x3,y3 is the point - var returnValue = 0; - if (this.from != this.to) { - if (this.options.smoothCurves.enabled == true) { - var xVia, yVia; - if (this.options.smoothCurves.enabled == true && this.options.smoothCurves.dynamic == true) { - xVia = this.via.x; - yVia = this.via.y; - } - else { - var via = this._getViaCoordinates(); - xVia = via.x; - yVia = via.y; - } - var minDistance = 1e9; - var distance; - var i,t,x,y, lastX, lastY; - for (i = 0; i < 10; i++) { - t = 0.1*i; - x = Math.pow(1-t,2)*x1 + (2*t*(1 - t))*xVia + Math.pow(t,2)*x2; - y = Math.pow(1-t,2)*y1 + (2*t*(1 - t))*yVia + Math.pow(t,2)*y2; - if (i > 0) { - distance = this._getDistanceToLine(lastX,lastY,x,y, x3,y3); - minDistance = distance < minDistance ? distance : minDistance; + BackgroundItem.prototype.show = RangeItem.prototype.show; + + /** + * Hide the item from the DOM (when visible) + * @return {Boolean} changed + */ + BackgroundItem.prototype.hide = RangeItem.prototype.hide; + + /** + * Reposition the item horizontally + * @Override + */ + BackgroundItem.prototype.repositionX = RangeItem.prototype.repositionX; + + /** + * Reposition the item vertically + * @Override + */ + BackgroundItem.prototype.repositionY = function(margin) { + var onTop = this.options.orientation === 'top'; + this.dom.content.style.top = onTop ? '' : '0'; + this.dom.content.style.bottom = onTop ? '0' : ''; + var height; + + // special positioning for subgroups + if (this.data.subgroup !== undefined) { + var itemSubgroup = this.data.subgroup; + var subgroups = this.parent.subgroups; + var subgroupIndex = subgroups[itemSubgroup].index; + // if the orientation is top, we need to take the difference in height into account. + if (onTop == true) { + // the first subgroup will have to account for the distance from the top to the first item. + height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; + height += subgroupIndex == 0 ? margin.axis - 0.5*margin.item.vertical : 0; + var newTop = this.parent.top; + for (var subgroup in subgroups) { + if (subgroups.hasOwnProperty(subgroup)) { + if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroupIndex) { + newTop += subgroups[subgroup].height + margin.item.vertical; + } } - lastX = x; lastY = y; } - returnValue = minDistance; + + // the others will have to be offset downwards with this same distance. + newTop += subgroupIndex != 0 ? margin.axis - 0.5 * margin.item.vertical : 0; + this.dom.box.style.top = newTop + 'px'; + this.dom.box.style.bottom = ''; } + // and when the orientation is bottom: else { - returnValue = this._getDistanceToLine(x1,y1,x2,y2,x3,y3); + var newTop = this.parent.top; + for (var subgroup in subgroups) { + if (subgroups.hasOwnProperty(subgroup)) { + if (subgroups[subgroup].visible == true && subgroups[subgroup].index > subgroupIndex) { + newTop += subgroups[subgroup].height + margin.item.vertical; + } + } + } + height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; + this.dom.box.style.top = newTop + 'px'; + this.dom.box.style.bottom = ''; } } + // and in the case of no subgroups: else { - var x, y, dx, dy; - var radius = 0.25 * this.physics.springLength; - var node = this.from; - if (node.width > node.height) { - x = node.x + 0.5 * node.width; - y = node.y - radius; + // we want backgrounds with groups to only show in groups. + if (this.parent instanceof BackgroundGroup) { + // if the item is not in a group: + height = Math.max(this.parent.height, + this.parent.itemSet.body.domProps.center.height, + this.parent.itemSet.body.domProps.centerContainer.height); + this.dom.box.style.top = onTop ? '0' : ''; + this.dom.box.style.bottom = onTop ? '' : '0'; } else { - x = node.x + radius; - y = node.y - 0.5 * node.height; + height = this.parent.height; + // same alignment for items when orientation is top or bottom + this.dom.box.style.top = this.parent.top + 'px'; + this.dom.box.style.bottom = ''; } - dx = x - x3; - dy = y - y3; - returnValue = Math.abs(Math.sqrt(dx*dx + dy*dy) - radius); - } - - if (this.labelDimensions.left < x3 && - this.labelDimensions.left + this.labelDimensions.width > x3 && - this.labelDimensions.top < y3 && - this.labelDimensions.top + this.labelDimensions.height > y3) { - return 0; - } - else { - return returnValue; } + this.dom.box.style.height = height + 'px'; }; - Edge.prototype._getDistanceToLine = function(x1,y1,x2,y2,x3,y3) { - var px = x2-x1, - py = y2-y1, - something = px*px + py*py, - u = ((x3 - x1) * px + (y3 - y1) * py) / something; - - if (u > 1) { - u = 1; - } - else if (u < 0) { - u = 0; - } + module.exports = BackgroundItem; - var x = x1 + u * px, - y = y1 + u * py, - dx = x - x3, - dy = y - y3; - //# Note: If the actual distance does not matter, - //# if you only want to compare what this function - //# returns to other results of this function, you - //# can just return the squared distance instead - //# (i.e. remove the sqrt) to gain a little performance +/***/ }, +/* 35 */ +/***/ function(module, exports, __webpack_require__) { - return Math.sqrt(dx*dx + dy*dy); - }; + var util = __webpack_require__(1); + var Component = __webpack_require__(23); + var TimeStep = __webpack_require__(27); + var DateUtil = __webpack_require__(24); + var moment = __webpack_require__(2); /** - * This allows the zoom level of the network to influence the rendering - * - * @param scale + * A horizontal time axis + * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body + * @param {Object} [options] See TimeAxis.setOptions for the available + * options. + * @constructor TimeAxis + * @extends Component */ - Edge.prototype.setScale = function(scale) { - this.networkScaleInv = 1.0/scale; - }; + function TimeAxis (body, options) { + this.dom = { + foreground: null, + lines: [], + majorTexts: [], + minorTexts: [], + redundant: { + lines: [], + majorTexts: [], + minorTexts: [] + } + }; + this.props = { + range: { + start: 0, + end: 0, + minimumStep: 0 + }, + lineTop: 0 + }; + + this.defaultOptions = { + orientation: 'bottom', // supported: 'top', 'bottom' + // TODO: implement timeaxis orientations 'left' and 'right' + showMinorLabels: true, + showMajorLabels: true, + format: null, + timeAxis: null + }; + this.options = util.extend({}, this.defaultOptions); + this.body = body; - Edge.prototype.select = function() { - this.selected = true; - }; + // create the HTML DOM + this._create(); - Edge.prototype.unselect = function() { - this.selected = false; - }; + this.setOptions(options); + } - Edge.prototype.positionBezierNode = function() { - if (this.via !== null && this.from !== null && this.to !== null) { - this.via.x = 0.5 * (this.from.x + this.to.x); - this.via.y = 0.5 * (this.from.y + this.to.y); - } - else if (this.via !== null) { - this.via.x = 0; - this.via.y = 0; - } - }; + TimeAxis.prototype = new Component(); /** - * This function draws the control nodes for the manipulator. - * In order to enable this, only set the this.controlNodesEnabled to true. - * @param ctx + * Set options for the TimeAxis. + * Parameters will be merged in current options. + * @param {Object} options Available options: + * {string} [orientation] + * {boolean} [showMinorLabels] + * {boolean} [showMajorLabels] */ - Edge.prototype._drawControlNodes = function(ctx) { - if (this.controlNodesEnabled == true) { - if (this.controlNodes.from === null && this.controlNodes.to === null) { - var nodeIdFrom = "edgeIdFrom:".concat(this.id); - var nodeIdTo = "edgeIdTo:".concat(this.id); - var constants = { - nodes:{group:'', radius:7, borderWidth:2, borderWidthSelected: 2}, - physics:{damping:0}, - clustering: {maxNodeSizeIncrements: 0 ,nodeScaling: {width:0, height: 0, radius:0}} - }; - this.controlNodes.from = new Node( - {id:nodeIdFrom, - shape:'dot', - color:{background:'#ff0000', border:'#3c3c3c', highlight: {background:'#07f968'}} - },{},{},constants); - this.controlNodes.to = new Node( - {id:nodeIdTo, - shape:'dot', - color:{background:'#ff0000', border:'#3c3c3c', highlight: {background:'#07f968'}} - },{},{},constants); - } + TimeAxis.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + util.selectiveExtend([ + 'orientation', + 'showMinorLabels', + 'showMajorLabels', + 'hiddenDates', + 'format', + 'timeAxis' + ], this.options, options); - this.controlNodes.positions = {}; - if (this.controlNodes.from.selected == false) { - this.controlNodes.positions.from = this.getControlNodeFromPosition(ctx); - this.controlNodes.from.x = this.controlNodes.positions.from.x; - this.controlNodes.from.y = this.controlNodes.positions.from.y; - } - if (this.controlNodes.to.selected == false) { - this.controlNodes.positions.to = this.getControlNodeToPosition(ctx); - this.controlNodes.to.x = this.controlNodes.positions.to.x; - this.controlNodes.to.y = this.controlNodes.positions.to.y; + // apply locale to moment.js + // TODO: not so nice, this is applied globally to moment.js + if ('locale' in options) { + if (typeof moment.locale === 'function') { + // moment.js 2.8.1+ + moment.locale(options.locale); + } + else { + moment.lang(options.locale); + } } - - this.controlNodes.from.draw(ctx); - this.controlNodes.to.draw(ctx); - } - else { - this.controlNodes = {from:null, to:null, positions:{}}; } }; /** - * Enable control nodes. - * @private + * Create the HTML DOM for the TimeAxis */ - Edge.prototype._enableControlNodes = function() { - this.fromBackup = this.from; - this.toBackup = this.to; - this.controlNodesEnabled = true; + TimeAxis.prototype._create = function() { + this.dom.foreground = document.createElement('div'); + this.dom.background = document.createElement('div'); + + this.dom.foreground.className = 'timeaxis foreground'; + this.dom.background.className = 'timeaxis background'; }; /** - * disable control nodes and remove from dynamicEdges from old node - * @private + * Destroy the TimeAxis */ - Edge.prototype._disableControlNodes = function() { - this.fromId = this.from.id; - this.toId = this.to.id; - if (this.fromId != this.fromBackup.id) { // from was changed, remove edge from old 'from' node dynamic edges - this.fromBackup.detachEdge(this); + TimeAxis.prototype.destroy = function() { + // remove from DOM + if (this.dom.foreground.parentNode) { + this.dom.foreground.parentNode.removeChild(this.dom.foreground); } - else if (this.toId != this.toBackup.id) { // to was changed, remove edge from old 'to' node dynamic edges - this.toBackup.detachEdge(this); + if (this.dom.background.parentNode) { + this.dom.background.parentNode.removeChild(this.dom.background); } - this.fromBackup = null; - this.toBackup = null; - this.controlNodesEnabled = false; + this.body = null; }; - /** - * This checks if one of the control nodes is selected and if so, returns the control node object. Else it returns null. - * @param x - * @param y - * @returns {null} - * @private + * Repaint the component + * @return {boolean} Returns true if the component is resized */ - Edge.prototype._getSelectedControlNode = function(x,y) { - var positions = this.controlNodes.positions; - var fromDistance = Math.sqrt(Math.pow(x - positions.from.x,2) + Math.pow(y - positions.from.y,2)); - var toDistance = Math.sqrt(Math.pow(x - positions.to.x ,2) + Math.pow(y - positions.to.y ,2)); + TimeAxis.prototype.redraw = function () { + var options = this.options; + var props = this.props; + var foreground = this.dom.foreground; + var background = this.dom.background; - if (fromDistance < 15) { - this.connectedNode = this.from; - this.from = this.controlNodes.from; - return this.controlNodes.from; - } - else if (toDistance < 15) { - this.connectedNode = this.to; - this.to = this.controlNodes.to; - return this.controlNodes.to; - } - else { - return null; - } - }; + // determine the correct parent DOM element (depending on option orientation) + var parent = (options.orientation == 'top') ? this.body.dom.top : this.body.dom.bottom; + var parentChanged = (foreground.parentNode !== parent); + // calculate character width and height + this._calculateCharSize(); - /** - * this resets the control nodes to their original position. - * @private - */ - Edge.prototype._restoreControlNodes = function() { - if (this.controlNodes.from.selected == true) { - this.from = this.connectedNode; - this.connectedNode = null; - this.controlNodes.from.unselect(); + // TODO: recalculate sizes only needed when parent is resized or options is changed + var orientation = this.options.orientation, + showMinorLabels = this.options.showMinorLabels, + showMajorLabels = this.options.showMajorLabels; + + // determine the width and height of the elemens for the axis + props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; + props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; + props.height = props.minorLabelHeight + props.majorLabelHeight; + props.width = foreground.offsetWidth; + + props.minorLineHeight = this.body.domProps.root.height - props.majorLabelHeight - + (options.orientation == 'top' ? this.body.domProps.bottom.height : this.body.domProps.top.height); + props.minorLineWidth = 1; // TODO: really calculate width + props.majorLineHeight = props.minorLineHeight + props.majorLabelHeight; + props.majorLineWidth = 1; // TODO: really calculate width + + // take foreground and background offline while updating (is almost twice as fast) + var foregroundNextSibling = foreground.nextSibling; + var backgroundNextSibling = background.nextSibling; + foreground.parentNode && foreground.parentNode.removeChild(foreground); + background.parentNode && background.parentNode.removeChild(background); + + foreground.style.height = this.props.height + 'px'; + + this._repaintLabels(); + + // put DOM online again (at the same place) + if (foregroundNextSibling) { + parent.insertBefore(foreground, foregroundNextSibling); } - else if (this.controlNodes.to.selected == true) { - this.to = this.connectedNode; - this.connectedNode = null; - this.controlNodes.to.unselect(); + else { + parent.appendChild(foreground) } - }; - - /** - * this calculates the position of the control nodes on the edges of the parent nodes. - * - * @param ctx - * @returns {x: *, y: *} - */ - Edge.prototype.getControlNodeFromPosition = function(ctx) { - // draw arrow head - var controlnodeFromPos; - if (this.options.smoothCurves.enabled == true) { - controlnodeFromPos = this._findBorderPosition(true, ctx); + if (backgroundNextSibling) { + this.body.dom.backgroundVertical.insertBefore(background, backgroundNextSibling); } else { - var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); - var dx = (this.to.x - this.from.x); - var dy = (this.to.y - this.from.y); - var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); - - var fromBorderDist = this.from.distanceToBorder(ctx, angle + Math.PI); - var fromBorderPoint = (edgeSegmentLength - fromBorderDist) / edgeSegmentLength; - controlnodeFromPos = {}; - controlnodeFromPos.x = (fromBorderPoint) * this.from.x + (1 - fromBorderPoint) * this.to.x; - controlnodeFromPos.y = (fromBorderPoint) * this.from.y + (1 - fromBorderPoint) * this.to.y; + this.body.dom.backgroundVertical.appendChild(background) } - return controlnodeFromPos; + return this._isResized() || parentChanged; }; /** - * this calculates the position of the control nodes on the edges of the parent nodes. - * - * @param ctx - * @returns {{from: {x: number, y: number}, to: {x: *, y: *}}} + * Repaint major and minor text labels and vertical grid lines + * @private */ - Edge.prototype.getControlNodeToPosition = function(ctx) { - // draw arrow head - var controlnodeFromPos,controlnodeToPos; - if (this.options.smoothCurves.enabled == true) { - controlnodeToPos = this._findBorderPosition(false, ctx); - } - else { - var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); - var dx = (this.to.x - this.from.x); - var dy = (this.to.y - this.from.y); - var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); - var toBorderDist = this.to.distanceToBorder(ctx, angle); - var toBorderPoint = (edgeSegmentLength - toBorderDist) / edgeSegmentLength; + TimeAxis.prototype._repaintLabels = function () { + var orientation = this.options.orientation; - controlnodeToPos = {}; - controlnodeToPos.x = (1 - toBorderPoint) * this.from.x + toBorderPoint * this.to.x; - controlnodeToPos.y = (1 - toBorderPoint) * this.from.y + toBorderPoint * this.to.y; + // calculate range and step (step such that we have space for 7 characters per label) + var start = util.convert(this.body.range.start, 'Number'); + var end = util.convert(this.body.range.end, 'Number'); + var timeLabelsize = this.body.util.toTime((this.props.minorCharWidth || 10) * 7).valueOf(); + var minimumStep = timeLabelsize - DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this.body.range, timeLabelsize); + minimumStep -= this.body.util.toTime(0).valueOf(); + + var step = new TimeStep(new Date(start), new Date(end), minimumStep, this.body.hiddenDates); + if (this.options.format) { + step.setFormat(this.options.format); + } + if (this.options.timeAxis) { + step.setScale(this.options.timeAxis); } + this.step = step; - return controlnodeToPos; - }; + // Move all DOM elements to a "redundant" list, where they + // can be picked for re-use, and clear the lists with lines and texts. + // At the end of the function _repaintLabels, left over elements will be cleaned up + var dom = this.dom; + dom.redundant.lines = dom.lines; + dom.redundant.majorTexts = dom.majorTexts; + dom.redundant.minorTexts = dom.minorTexts; + dom.lines = []; + dom.majorTexts = []; + dom.minorTexts = []; - module.exports = Edge; + var cur; + var x = 0; + var isMajor; + var xPrev = 0; + var width = 0; + var prevLine; + var xFirstMajorLabel = undefined; + var max = 0; + var className; -/***/ }, -/* 38 */ -/***/ function(module, exports, __webpack_require__) { + step.first(); + while (step.hasNext() && max < 1000) { + max++; - var util = __webpack_require__(1); + cur = step.getCurrent(); + isMajor = step.isMajor(); + className = step.getClassName(); - /** - * @class Groups - * This class can store groups and properties specific for groups. - */ - function Groups() { - this.clear(); - this.defaultIndex = 0; - this.groupsArray = []; - this.groupIndex = 0; - this.useDefaultGroups = true; - } + xPrev = x; + x = this.body.util.toScreen(cur); + width = x - xPrev; + if (prevLine) { + prevLine.style.width = width + 'px'; + } + if (this.options.showMinorLabels) { + this._repaintMinorText(x, step.getLabelMinor(), orientation, className); + } - /** - * default constants for group colors - */ - Groups.DEFAULT = [ - {border: "#2B7CE9", background: "#97C2FC", highlight: {border: "#2B7CE9", background: "#D2E5FF"}, hover: {border: "#2B7CE9", background: "#D2E5FF"}}, // 0: blue - {border: "#FFA500", background: "#FFFF00", highlight: {border: "#FFA500", background: "#FFFFA3"}, hover: {border: "#FFA500", background: "#FFFFA3"}}, // 1: yellow - {border: "#FA0A10", background: "#FB7E81", highlight: {border: "#FA0A10", background: "#FFAFB1"}, hover: {border: "#FA0A10", background: "#FFAFB1"}}, // 2: red - {border: "#41A906", background: "#7BE141", highlight: {border: "#41A906", background: "#A1EC76"}, hover: {border: "#41A906", background: "#A1EC76"}}, // 3: green - {border: "#E129F0", background: "#EB7DF4", highlight: {border: "#E129F0", background: "#F0B3F5"}, hover: {border: "#E129F0", background: "#F0B3F5"}}, // 4: magenta - {border: "#7C29F0", background: "#AD85E4", highlight: {border: "#7C29F0", background: "#D3BDF0"}, hover: {border: "#7C29F0", background: "#D3BDF0"}}, // 5: purple - {border: "#C37F00", background: "#FFA807", highlight: {border: "#C37F00", background: "#FFCA66"}, hover: {border: "#C37F00", background: "#FFCA66"}}, // 6: orange - {border: "#4220FB", background: "#6E6EFD", highlight: {border: "#4220FB", background: "#9B9BFD"}, hover: {border: "#4220FB", background: "#9B9BFD"}}, // 7: darkblue - {border: "#FD5A77", background: "#FFC0CB", highlight: {border: "#FD5A77", background: "#FFD1D9"}, hover: {border: "#FD5A77", background: "#FFD1D9"}}, // 8: pink - {border: "#4AD63A", background: "#C2FABC", highlight: {border: "#4AD63A", background: "#E6FFE3"}, hover: {border: "#4AD63A", background: "#E6FFE3"}}, // 9: mint + if (isMajor && this.options.showMajorLabels) { + if (x > 0) { + if (xFirstMajorLabel == undefined) { + xFirstMajorLabel = x; + } + this._repaintMajorText(x, step.getLabelMajor(), orientation, className); + } + prevLine = this._repaintMajorLine(x, orientation, className); + } + else { + prevLine = this._repaintMinorLine(x, orientation, className); + } - {border: "#990000", background: "#EE0000", highlight: {border: "#BB0000", background: "#FF3333"}, hover: {border: "#BB0000", background: "#FF3333"}}, // 10:bright red + step.next(); + } - {border: "#FF6000", background: "#FF6000", highlight: {border: "#FF6000", background: "#FF6000"}, hover: {border: "#FF6000", background: "#FF6000"}}, // 12: real orange - {border: "#97C2FC", background: "#2B7CE9", highlight: {border: "#D2E5FF", background: "#2B7CE9"}, hover: {border: "#D2E5FF", background: "#2B7CE9"}}, // 13: blue - {border: "#399605", background: "#255C03", highlight: {border: "#399605", background: "#255C03"}, hover: {border: "#399605", background: "#255C03"}}, // 14: green - {border: "#B70054", background: "#FF007E", highlight: {border: "#B70054", background: "#FF007E"}, hover: {border: "#B70054", background: "#FF007E"}}, // 15: magenta - {border: "#AD85E4", background: "#7C29F0", highlight: {border: "#D3BDF0", background: "#7C29F0"}, hover: {border: "#D3BDF0", background: "#7C29F0"}}, // 16: purple - {border: "#4557FA", background: "#000EA1", highlight: {border: "#6E6EFD", background: "#000EA1"}, hover: {border: "#6E6EFD", background: "#000EA1"}}, // 17: darkblue - {border: "#FFC0CB", background: "#FD5A77", highlight: {border: "#FFD1D9", background: "#FD5A77"}, hover: {border: "#FFD1D9", background: "#FD5A77"}}, // 18: pink - {border: "#C2FABC", background: "#74D66A", highlight: {border: "#E6FFE3", background: "#74D66A"}, hover: {border: "#E6FFE3", background: "#74D66A"}}, // 19: mint + // create a major label on the left when needed + if (this.options.showMajorLabels) { + var leftTime = this.body.util.toTime(0), + leftText = step.getLabelMajor(leftTime), + widthText = leftText.length * (this.props.majorCharWidth || 10) + 10; // upper bound estimation - {border: "#EE0000", background: "#990000", highlight: {border: "#FF3333", background: "#BB0000"}, hover: {border: "#FF3333", background: "#BB0000"}}, // 20:bright red - ]; + if (xFirstMajorLabel == undefined || widthText < xFirstMajorLabel) { + this._repaintMajorText(0, leftText, orientation, className); + } + } + // Cleanup leftover DOM elements from the redundant list + util.forEach(this.dom.redundant, function (arr) { + while (arr.length) { + var elem = arr.pop(); + if (elem && elem.parentNode) { + elem.parentNode.removeChild(elem); + } + } + }); + }; /** - * Clear all groups + * Create a minor label for the axis at position x + * @param {Number} x + * @param {String} text + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @private */ - Groups.prototype.clear = function () { - this.groups = {}; - this.groups.length = function() - { - var i = 0; - for ( var p in this ) { - if (this.hasOwnProperty(p)) { - i++; - } - } - return i; + TimeAxis.prototype._repaintMinorText = function (x, text, orientation, className) { + // reuse redundant label + var label = this.dom.redundant.minorTexts.shift(); + + if (!label) { + // create new label + var content = document.createTextNode(''); + label = document.createElement('div'); + label.appendChild(content); + this.dom.foreground.appendChild(label); } - }; + this.dom.minorTexts.push(label); + + label.childNodes[0].nodeValue = text; + label.style.top = (orientation == 'top') ? (this.props.majorLabelHeight + 'px') : '0'; + label.style.left = x + 'px'; + label.className = 'text minor ' + className; + //label.title = title; // TODO: this is a heavy operation + }; /** - * get group properties of a groupname. If groupname is not found, a new group - * is added. - * @param {*} groupname Can be a number, string, Date, etc. - * @return {Object} group The created group, containing all group properties + * Create a Major label for the axis at position x + * @param {Number} x + * @param {String} text + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @private */ - Groups.prototype.get = function (groupname) { - var group = this.groups[groupname]; - if (group == undefined) { - if (this.useDefaultGroups === false && this.groupsArray.length > 0) { - // create new group - var index = this.groupIndex % this.groupsArray.length; - this.groupIndex++; - group = {}; - group.color = this.groups[this.groupsArray[index]]; - this.groups[groupname] = group; - } - else { - // create new group - var index = this.defaultIndex % Groups.DEFAULT.length; - this.defaultIndex++; - group = {}; - group.color = Groups.DEFAULT[index]; - this.groups[groupname] = group; - } + TimeAxis.prototype._repaintMajorText = function (x, text, orientation, className) { + // reuse redundant label + var label = this.dom.redundant.majorTexts.shift(); + + if (!label) { + // create label + var content = document.createTextNode(text); + label = document.createElement('div'); + label.appendChild(content); + this.dom.foreground.appendChild(label); } + this.dom.majorTexts.push(label); - return group; + label.childNodes[0].nodeValue = text; + label.className = 'text major ' + className; + //label.title = title; // TODO: this is a heavy operation + + label.style.top = (orientation == 'top') ? '0' : (this.props.minorLabelHeight + 'px'); + label.style.left = x + 'px'; }; /** - * Add a custom group style - * @param {String} groupName - * @param {Object} style An object containing borderColor, - * backgroundColor, etc. - * @return {Object} group The created group object + * Create a minor line for the axis at position x + * @param {Number} x + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @return {Element} Returns the created line + * @private */ - Groups.prototype.add = function (groupName, style) { - this.groups[groupName] = style; - this.groupsArray.push(groupName); - return style; - }; + TimeAxis.prototype._repaintMinorLine = function (x, orientation, className) { + // reuse redundant line + var line = this.dom.redundant.lines.shift(); + if (!line) { + // create vertical line + line = document.createElement('div'); + this.dom.background.appendChild(line); + } + this.dom.lines.push(line); - module.exports = Groups; + var props = this.props; + if (orientation == 'top') { + line.style.top = props.majorLabelHeight + 'px'; + } + else { + line.style.top = this.body.domProps.top.height + 'px'; + } + line.style.height = props.minorLineHeight + 'px'; + line.style.left = (x - props.minorLineWidth / 2) + 'px'; + line.className = 'grid vertical minor ' + className; -/***/ }, -/* 39 */ -/***/ function(module, exports, __webpack_require__) { + return line; + }; /** - * @class Images - * This class loads images and keeps them stored. + * Create a Major line for the axis at position x + * @param {Number} x + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @return {Element} Returns the created line + * @private */ - function Images() { - this.images = {}; - this.imageBroken = {}; - this.callback = undefined; - } + TimeAxis.prototype._repaintMajorLine = function (x, orientation, className) { + // reuse redundant line + var line = this.dom.redundant.lines.shift(); + if (!line) { + // create vertical line + line = document.createElement('div'); + this.dom.background.appendChild(line); + } + this.dom.lines.push(line); - /** - * Set an onload callback function. This will be called each time an image - * is loaded - * @param {function} callback - */ - Images.prototype.setOnloadCallback = function(callback) { - this.callback = callback; + var props = this.props; + if (orientation == 'top') { + line.style.top = '0'; + } + else { + line.style.top = this.body.domProps.top.height + 'px'; + } + line.style.left = (x - props.majorLineWidth / 2) + 'px'; + line.style.height = props.majorLineHeight + 'px'; + + line.className = 'grid vertical major ' + className; + + return line; }; /** - * - * @param {string} url Url of the image - * @param {string} url Url of an image to use if the url image is not found - * @return {Image} img The image object + * Determine the size of text on the axis (both major and minor axis). + * The size is calculated only once and then cached in this.props. + * @private */ - Images.prototype.load = function(url, brokenUrl) { - var img = this.images[url]; // make a pointer - if (img === undefined) { - // create the image - var me = this; - img = new Image(); - img.onload = function () { - // IE11 fix -- thanks dponch! - if (this.width == 0) { - document.body.appendChild(this); - this.width = this.offsetWidth; - this.height = this.offsetHeight; - document.body.removeChild(this); - } - - if (me.callback) { - me.images[url] = img; - me.callback(this); - } - }; + TimeAxis.prototype._calculateCharSize = function () { + // Note: We calculate char size with every redraw. Size may change, for + // example when any of the timelines parents had display:none for example. - img.onerror = function () { - if (brokenUrl === undefined) { - console.error("Could not load image:", url); - delete this.src; - if (me.callback) { - me.callback(this); - } - } - else { - if (me.imageBroken[url] === true) { - if (this.src == brokenUrl) { - console.error("Could not load brokenImage:", brokenUrl); - delete this.src; - if (me.callback) { - me.callback(this); - } - } - else { - console.error("Could not load image:", url); - this.src = brokenUrl; - } - } - else { - console.error("Could not load image:", url); - this.src = brokenUrl; - me.imageBroken[url] = true; - } - } - }; + // determine the char width and height on the minor axis + if (!this.dom.measureCharMinor) { + this.dom.measureCharMinor = document.createElement('DIV'); + this.dom.measureCharMinor.className = 'text minor measure'; + this.dom.measureCharMinor.style.position = 'absolute'; - img.src = url; + this.dom.measureCharMinor.appendChild(document.createTextNode('0')); + this.dom.foreground.appendChild(this.dom.measureCharMinor); } + this.props.minorCharHeight = this.dom.measureCharMinor.clientHeight; + this.props.minorCharWidth = this.dom.measureCharMinor.clientWidth; - return img; + // determine the char width and height on the major axis + if (!this.dom.measureCharMajor) { + this.dom.measureCharMajor = document.createElement('DIV'); + this.dom.measureCharMajor.className = 'text major measure'; + this.dom.measureCharMajor.style.position = 'absolute'; + + this.dom.measureCharMajor.appendChild(document.createTextNode('0')); + this.dom.foreground.appendChild(this.dom.measureCharMajor); + } + this.props.majorCharHeight = this.dom.measureCharMajor.clientHeight; + this.props.majorCharWidth = this.dom.measureCharMajor.clientWidth; }; - module.exports = Images; + module.exports = TimeAxis; /***/ }, -/* 40 */ +/* 36 */ /***/ function(module, exports, __webpack_require__) { + var keycharm = __webpack_require__(37); + var Emitter = __webpack_require__(11); + var Hammer = __webpack_require__(19); var util = __webpack_require__(1); /** - * @class Node - * A node. A node can be connected to other nodes via one or multiple edges. - * @param {object} properties An object containing properties for the node. All - * properties are optional, except for the id. - * {number} id Id of the node. Required - * {string} label Text label for the node - * {number} x Horizontal position of the node - * {number} y Vertical position of the node - * {string} shape Node shape, available: - * "database", "circle", "ellipse", - * "box", "image", "text", "dot", - * "star", "triangle", "triangleDown", - * "square", "icon" - * {string} image An image url - * {string} title An title text, can be HTML - * {anytype} group A group name or number - * @param {Network.Images} imagelist A list with images. Only needed - * when the node has an image - * @param {Network.Groups} grouplist A list with groups. Needed for - * retrieving group properties - * @param {Object} constants An object with default values for - * example for the color - * + * Turn an element into an clickToUse element. + * When not active, the element has a transparent overlay. When the overlay is + * clicked, the mode is changed to active. + * When active, the element is displayed with a blue border around it, and + * the interactive contents of the element can be used. When clicked outside + * the element, the elements mode is changed to inactive. + * @param {Element} container + * @constructor */ - function Node(properties, imagelist, grouplist, networkConstants) { - var constants = util.selectiveBridgeObject(['nodes'],networkConstants); - this.options = constants.nodes; - - this.selected = false; - this.hover = false; - - this.edges = []; // all edges connected to this node - this.dynamicEdges = []; - this.reroutedEdges = {}; + function Activator(container) { + this.active = false; - // set defaults for the properties - this.id = undefined; - this.allowedToMoveX = false; - this.allowedToMoveY = false; - this.xFixed = false; - this.yFixed = false; - this.horizontalAlignLeft = true; // these are for the navigation controls - this.verticalAlignTop = true; // these are for the navigation controls - this.baseRadiusValue = networkConstants.nodes.radius; - this.radiusFixed = false; - this.level = -1; - this.preassignedLevel = false; - this.hierarchyEnumerated = false; - this.labelDimensions = {top:0, left:0, width:0, height:0, yLine:0}; // could be cached - this.boundingBox = {top:0, left:0, right:0, bottom:0}; + this.dom = { + container: container + }; - this.imagelist = imagelist; - this.grouplist = grouplist; + this.dom.overlay = document.createElement('div'); + this.dom.overlay.className = 'overlay'; - // physics properties - this.fx = 0.0; // external force x - this.fy = 0.0; // external force y - this.vx = 0.0; // velocity x - this.vy = 0.0; // velocity y - this.x = null; - this.y = null; - this.predefinedPosition = false; // used to check if initial zoomExtent should just take the range or approximate + this.dom.container.appendChild(this.dom.overlay); - // used for reverting to previous position on stabilization - this.previousState = {vx:0,vy:0,x:0,y:0}; + this.hammer = Hammer(this.dom.overlay, {prevent_default: false}); + this.hammer.on('tap', this._onTapOverlay.bind(this)); - this.damping = networkConstants.physics.damping; // written every time gravity is calculated - this.fixedData = {x:null,y:null}; + // block all touch events (except tap) + var me = this; + var events = [ + 'touch', 'pinch', + 'doubletap', 'hold', + 'dragstart', 'drag', 'dragend', + 'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox + ]; + events.forEach(function (event) { + me.hammer.on(event, function (event) { + event.stopPropagation(); + }); + }); - this.setProperties(properties, constants); + // attach a tap event to the window, in order to deactivate when clicking outside the timeline + this.windowHammer = Hammer(window, {prevent_default: false}); + this.windowHammer.on('tap', function (event) { + // deactivate when clicked outside the container + if (!_hasParent(event.target, container)) { + me.deactivate(); + } + }); - // creating the variables for clustering - this.resetCluster(); - this.clusterSession = 0; - this.clusterSizeWidthFactor = networkConstants.clustering.nodeScaling.width; - this.clusterSizeHeightFactor = networkConstants.clustering.nodeScaling.height; - this.clusterSizeRadiusFactor = networkConstants.clustering.nodeScaling.radius; - this.maxNodeSizeIncrements = networkConstants.clustering.maxNodeSizeIncrements; - this.growthIndicator = 0; + if (this.keycharm !== undefined) { + this.keycharm.destroy(); + } + this.keycharm = keycharm(); - // variables to tell the node about the network. - this.networkScaleInv = 1; - this.networkScale = 1; - this.canvasTopLeft = {"x": -300, "y": -300}; - this.canvasBottomRight = {"x": 300, "y": 300}; - this.parentEdgeId = null; + // keycharm listener only bounded when active) + this.escListener = this.deactivate.bind(this); } + // turn into an event emitter + Emitter(Activator.prototype); - /** - * Revert the position and velocity of the previous step. - */ - Node.prototype.revertPosition = function() { - this.x = this.previousState.x; - this.y = this.previousState.y; - this.vx = this.previousState.vx; - this.vy = this.previousState.vy; - } - + // The currently active activator + Activator.current = null; /** - * (re)setting the clustering variables and objects + * Destroy the activator. Cleans up all created DOM and event listeners */ - Node.prototype.resetCluster = function() { - // clustering variables - this.formationScale = undefined; // this is used to determine when to open the cluster - this.clusterSize = 1; // this signifies the total amount of nodes in this cluster - this.containedNodes = {}; - this.containedEdges = {}; - this.clusterSessions = []; - }; + Activator.prototype.destroy = function () { + this.deactivate(); - /** - * Attach a edge to the node - * @param {Edge} edge - */ - Node.prototype.attachEdge = function(edge) { - if (this.edges.indexOf(edge) == -1) { - this.edges.push(edge); - } - if (this.dynamicEdges.indexOf(edge) == -1) { - this.dynamicEdges.push(edge); - } - }; + // remove dom + this.dom.overlay.parentNode.removeChild(this.dom.overlay); - /** - * Detach a edge from the node - * @param {Edge} edge - */ - Node.prototype.detachEdge = function(edge) { - var index = this.edges.indexOf(edge); - if (index != -1) { - this.edges.splice(index, 1); - } - index = this.dynamicEdges.indexOf(edge); - if (index != -1) { - this.dynamicEdges.splice(index, 1); - } + // cleanup hammer instances + this.hammer = null; + this.windowHammer = null; + // FIXME: cleaning up hammer instances doesn't work (Timeline not removed from memory) }; - /** - * Set or overwrite properties for the node - * @param {Object} properties an object with properties - * @param {Object} constants and object with default, global properties + * Activate the element + * Overlay is hidden, element is decorated with a blue shadow border */ - Node.prototype.setProperties = function(properties, constants) { - if (!properties) { - return; - } - - var fields = ['borderWidth','borderWidthSelected','shape','image','brokenImage','radius','fontColor', - 'fontSize','fontFace','fontFill','fontStrokeWidth','fontStrokeColor','group','mass','fontDrawThreshold', - 'scaleFontWithValue','fontSizeMaxVisible','customScalingFunction','iconFontFace', 'icon', 'iconColor', 'iconSize' - ]; - util.selectiveDeepExtend(fields, this.options, properties); - - // basic properties - if (properties.id !== undefined) {this.id = properties.id;} - if (properties.label !== undefined) {this.label = properties.label; this.originalLabel = properties.label;} - if (properties.title !== undefined) {this.title = properties.title;} - if (properties.x !== undefined) {this.x = properties.x; this.predefinedPosition = true;} - if (properties.y !== undefined) {this.y = properties.y; this.predefinedPosition = true;} - if (properties.value !== undefined) {this.value = properties.value;} - if (properties.level !== undefined) {this.level = properties.level; this.preassignedLevel = true;} - - // navigation controls properties - if (properties.horizontalAlignLeft !== undefined) {this.horizontalAlignLeft = properties.horizontalAlignLeft;} - if (properties.verticalAlignTop !== undefined) {this.verticalAlignTop = properties.verticalAlignTop;} - if (properties.triggerFunction !== undefined) {this.triggerFunction = properties.triggerFunction;} - - if (this.id === undefined) { - throw "Node must have an id"; - } - - // copy group properties - if (typeof properties.group === 'number' || (typeof properties.group === 'string' && properties.group != '')) { - var groupObj = this.grouplist.get(properties.group); - util.deepExtend(this.options, groupObj); - // the color object needs to be completely defined. Since groups can partially overwrite the colors, we parse it again, just in case. - this.options.color = util.parseColor(this.options.color); - } - // individual shape properties - if (properties.radius !== undefined) {this.baseRadiusValue = this.options.radius;} - if (properties.color !== undefined) {this.options.color = util.parseColor(properties.color);} - - if (this.options.image !== undefined && this.options.image!= "") { - if (this.imagelist) { - this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage); - } - else { - throw "No imagelist provided"; - } - } - - if (properties.allowedToMoveX !== undefined) { - this.xFixed = !properties.allowedToMoveX; - this.allowedToMoveX = properties.allowedToMoveX; - } - else if (properties.x !== undefined && this.allowedToMoveX == false) { - this.xFixed = true; - } - - - if (properties.allowedToMoveY !== undefined) { - this.yFixed = !properties.allowedToMoveY; - this.allowedToMoveY = properties.allowedToMoveY; - } - else if (properties.y !== undefined && this.allowedToMoveY == false) { - this.yFixed = true; + Activator.prototype.activate = function () { + // we allow only one active activator at a time + if (Activator.current) { + Activator.current.deactivate(); } + Activator.current = this; - this.radiusFixed = this.radiusFixed || (properties.radius !== undefined); - - if (this.options.shape === 'image' || this.options.shape === 'circularImage') { - this.options.radiusMin = constants.nodes.widthMin; - this.options.radiusMax = constants.nodes.widthMax; - } + this.active = true; + this.dom.overlay.style.display = 'none'; + util.addClassName(this.dom.container, 'vis-active'); - // choose draw method depending on the shape - switch (this.options.shape) { - case 'database': this.draw = this._drawDatabase; this.resize = this._resizeDatabase; break; - case 'box': this.draw = this._drawBox; this.resize = this._resizeBox; break; - case 'circle': this.draw = this._drawCircle; this.resize = this._resizeCircle; break; - case 'ellipse': this.draw = this._drawEllipse; this.resize = this._resizeEllipse; break; - // TODO: add diamond shape - case 'image': this.draw = this._drawImage; this.resize = this._resizeImage; break; - case 'circularImage': this.draw = this._drawCircularImage; this.resize = this._resizeCircularImage; break; - case 'text': this.draw = this._drawText; this.resize = this._resizeText; break; - case 'dot': this.draw = this._drawDot; this.resize = this._resizeShape; break; - case 'square': this.draw = this._drawSquare; this.resize = this._resizeShape; break; - case 'triangle': this.draw = this._drawTriangle; this.resize = this._resizeShape; break; - case 'triangleDown': this.draw = this._drawTriangleDown; this.resize = this._resizeShape; break; - case 'star': this.draw = this._drawStar; this.resize = this._resizeShape; break; - case 'icon': this.draw = this._drawIcon; this.resize = this._resizeIcon; break; - default: this.draw = this._drawEllipse; this.resize = this._resizeEllipse; break; - } - // reset the size of the node, this can be changed - this._reset(); + this.emit('change'); + this.emit('activate'); + // ugly hack: bind ESC after emitting the events, as the Network rebinds all + // keyboard events on a 'change' event + this.keycharm.bind('esc', this.escListener); }; /** - * select this node + * Deactivate the element + * Overlay is displayed on top of the element */ - Node.prototype.select = function() { - this.selected = true; - this._reset(); - }; + Activator.prototype.deactivate = function () { + this.active = false; + this.dom.overlay.style.display = ''; + util.removeClassName(this.dom.container, 'vis-active'); + this.keycharm.unbind('esc', this.escListener); - /** - * unselect this node - */ - Node.prototype.unselect = function() { - this.selected = false; - this._reset(); + this.emit('change'); + this.emit('deactivate'); }; - /** - * Reset the calculated size of the node, forces it to recalculate its size + * Handle a tap event: activate the container + * @param event + * @private */ - Node.prototype.clearSizeCache = function() { - this._reset(); + Activator.prototype._onTapOverlay = function (event) { + // activate the container + this.activate(); + event.stopPropagation(); }; /** - * Reset the calculated size of the node, forces it to recalculate its size + * Test whether the element has the requested parent element somewhere in + * its chain of parent nodes. + * @param {HTMLElement} element + * @param {HTMLElement} parent + * @returns {boolean} Returns true when the parent is found somewhere in the + * chain of parent nodes. * @private */ - Node.prototype._reset = function() { - this.width = undefined; - this.height = undefined; - }; + function _hasParent(element, parent) { + while (element) { + if (element === parent) { + return true + } + element = element.parentNode; + } + return false; + } - /** - * get the title of this node. - * @return {string} title The title of the node, or undefined when no title - * has been set. - */ - Node.prototype.getTitle = function() { - return typeof this.title === "function" ? this.title() : this.title; - }; + module.exports = Activator; + + +/***/ }, +/* 37 */ +/***/ function(module, exports, __webpack_require__) { + var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; /** - * Calculate the distance to the border of the Node - * @param {CanvasRenderingContext2D} ctx - * @param {Number} angle Angle in radians - * @returns {number} distance Distance to the border in pixels + * Created by Alex on 11/6/2014. */ - Node.prototype.distanceToBorder = function (ctx, angle) { - var borderWidth = 1; - if (!this.width) { - this.resize(ctx); + // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 + // if the module has no dependencies, the above pattern can be simplified to + (function (root, factory) { + if (true) { + // AMD. Register as an anonymous module. + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(); + } else { + // Browser globals (root is window) + root.keycharm = factory(); } + }(this, function () { - switch (this.options.shape) { - case 'circle': - case 'dot': - return this.options.radius+ borderWidth; + function keycharm(options) { + var preventDefault = options && options.preventDefault || false; - case 'ellipse': - var a = this.width / 2; - var b = this.height / 2; - var w = (Math.sin(angle) * a); - var h = (Math.cos(angle) * b); - return a * b / Math.sqrt(w * w + h * h); + var container = options && options.container || window; - // TODO: implement distanceToBorder for database - // TODO: implement distanceToBorder for triangle - // TODO: implement distanceToBorder for triangleDown + var _exportFunctions = {}; + var _bound = {keydown:{}, keyup:{}}; + var _keys = {}; + var i; - case 'box': - case 'image': - case 'text': - default: - if (this.width) { - return Math.min( - Math.abs(this.width / 2 / Math.cos(angle)), - Math.abs(this.height / 2 / Math.sin(angle))) + borderWidth; - // TODO: reckon with border radius too in case of box + // a - z + for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} + // A - Z + for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} + // 0 - 9 + for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} + // F1 - F12 + for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} + // num0 - num9 + for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} + + // numpad misc + _keys['num*'] = {code:106, shift: false}; + _keys['num+'] = {code:107, shift: false}; + _keys['num-'] = {code:109, shift: false}; + _keys['num/'] = {code:111, shift: false}; + _keys['num.'] = {code:110, shift: false}; + // arrows + _keys['left'] = {code:37, shift: false}; + _keys['up'] = {code:38, shift: false}; + _keys['right'] = {code:39, shift: false}; + _keys['down'] = {code:40, shift: false}; + // extra keys + _keys['space'] = {code:32, shift: false}; + _keys['enter'] = {code:13, shift: false}; + _keys['shift'] = {code:16, shift: undefined}; + _keys['esc'] = {code:27, shift: false}; + _keys['backspace'] = {code:8, shift: false}; + _keys['tab'] = {code:9, shift: false}; + _keys['ctrl'] = {code:17, shift: false}; + _keys['alt'] = {code:18, shift: false}; + _keys['delete'] = {code:46, shift: false}; + _keys['pageup'] = {code:33, shift: false}; + _keys['pagedown'] = {code:34, shift: false}; + // symbols + _keys['='] = {code:187, shift: false}; + _keys['-'] = {code:189, shift: false}; + _keys[']'] = {code:221, shift: false}; + _keys['['] = {code:219, shift: false}; + + + + var down = function(event) {handleEvent(event,'keydown');}; + var up = function(event) {handleEvent(event,'keyup');}; + + // handle the actualy bound key with the event + var handleEvent = function(event,type) { + if (_bound[type][event.keyCode] !== undefined) { + var bound = _bound[type][event.keyCode]; + for (var i = 0; i < bound.length; i++) { + if (bound[i].shift === undefined) { + bound[i].fn(event); + } + else if (bound[i].shift == true && event.shiftKey == true) { + bound[i].fn(event); + } + else if (bound[i].shift == false && event.shiftKey == false) { + bound[i].fn(event); + } + } + + if (preventDefault == true) { + event.preventDefault(); + } + } + }; + + // bind a key to a callback + _exportFunctions.bind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (_bound[type][_keys[key].code] === undefined) { + _bound[type][_keys[key].code] = []; + } + _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); + }; + + + // bind all keys to a call back (demo purposes) + _exportFunctions.bindAll = function(callback, type) { + if (type === undefined) { + type = 'keydown'; + } + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + _exportFunctions.bind(key,callback,type); + } + } + }; + + // get the key label from an event + _exportFunctions.getKey = function(event) { + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { + return key; + } + else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { + return key; + } + else if (event.keyCode == _keys[key].code && key == 'shift') { + return key; + } + } + } + return "unknown key, currently not supported"; + }; + + // unbind either a specific callback from a key or all of them (by leaving callback undefined) + _exportFunctions.unbind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (callback !== undefined) { + var newBindings = []; + var bound = _bound[type][_keys[key].code]; + if (bound !== undefined) { + for (var i = 0; i < bound.length; i++) { + if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { + newBindings.push(_bound[type][_keys[key].code][i]); + } + } + } + _bound[type][_keys[key].code] = newBindings; } else { - return 0; + _bound[type][_keys[key].code] = []; } + }; + + // reset all bound variables. + _exportFunctions.reset = function() { + _bound = {keydown:{}, keyup:{}}; + }; + + // unbind all listeners and reset all variables. + _exportFunctions.destroy = function() { + _bound = {keydown:{}, keyup:{}}; + container.removeEventListener('keydown', down, true); + container.removeEventListener('keyup', up, true); + }; + + // create listeners. + container.addEventListener('keydown',down,true); + container.addEventListener('keyup',up,true); + // return the public functions. + return _exportFunctions; } - // TODO: implement calculation of distance to border for all shapes - }; - /** - * Set forces acting on the node - * @param {number} fx Force in horizontal direction - * @param {number} fy Force in vertical direction - */ - Node.prototype._setForce = function(fx, fy) { - this.fx = fx; - this.fy = fy; - }; + return keycharm; + })); + - /** - * Add forces acting on the node - * @param {number} fx Force in horizontal direction - * @param {number} fy Force in vertical direction - * @private - */ - Node.prototype._addForce = function(fx, fy) { - this.fx += fx; - this.fy += fy; - }; - /** - * Store the state before the next step - */ - Node.prototype.storeState = function() { - this.previousState.x = this.x; - this.previousState.y = this.y; - this.previousState.vx = this.vx; - this.previousState.vy = this.vy; - } + +/***/ }, +/* 38 */ +/***/ function(module, exports, __webpack_require__) { + + var Hammer = __webpack_require__(19); + var util = __webpack_require__(1); + var Component = __webpack_require__(23); + var moment = __webpack_require__(2); + var locales = __webpack_require__(39); /** - * Perform one discrete step for the node - * @param {number} interval Time interval in seconds + * A custom time bar + * @param {{range: Range, dom: Object}} body + * @param {Object} [options] Available parameters: + * {Boolean} [showCustomTime] + * @constructor CustomTime + * @extends Component */ - Node.prototype.discreteStep = function(interval) { - this.storeState(); - if (!this.xFixed) { - var dx = this.damping * this.vx; // damping force - var ax = (this.fx - dx) / this.options.mass; // acceleration - this.vx += ax * interval; // velocity - this.x += this.vx * interval; // position - } - else { - this.fx = 0; - this.vx = 0; - } - if (!this.yFixed) { - var dy = this.damping * this.vy; // damping force - var ay = (this.fy - dy) / this.options.mass; // acceleration - this.vy += ay * interval; // velocity - this.y += this.vy * interval; // position - } - else { - this.fy = 0; - this.vy = 0; + function CustomTime (body, options) { + this.body = body; + + // default options + this.defaultOptions = { + showCustomTime: false, + locales: locales, + locale: 'en', + id: 0 + }; + this.options = util.extend({}, this.defaultOptions); + + if (options && options.time) { + this.customTime = options.time; + } else { + this.customTime = new Date(); } - }; + + this.eventParams = {}; // stores state parameters while dragging the bar + + // create the DOM + this._create(); + this.setOptions(options); + } + CustomTime.prototype = new Component(); /** - * Perform one discrete step for the node - * @param {number} interval Time interval in seconds - * @param {number} maxVelocity The speed limit imposed on the velocity + * Set options for the component. Options will be merged in current options. + * @param {Object} options Available parameters: + * {boolean} [showCustomTime] */ - Node.prototype.discreteStepLimited = function(interval, maxVelocity) { - this.storeState(); - if (!this.xFixed) { - var dx = this.damping * this.vx; // damping force - var ax = (this.fx - dx) / this.options.mass; // acceleration - this.vx += ax * interval; // velocity - this.vx = (Math.abs(this.vx) > maxVelocity) ? ((this.vx > 0) ? maxVelocity : -maxVelocity) : this.vx; - this.x += this.vx * interval; // position - } - else { - this.fx = 0; - this.vx = 0; - } + CustomTime.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + util.selectiveExtend(['showCustomTime', 'locale', 'locales', 'id'], this.options, options); - if (!this.yFixed) { - var dy = this.damping * this.vy; // damping force - var ay = (this.fy - dy) / this.options.mass; // acceleration - this.vy += ay * interval; // velocity - this.vy = (Math.abs(this.vy) > maxVelocity) ? ((this.vy > 0) ? maxVelocity : -maxVelocity) : this.vy; - this.y += this.vy * interval; // position - } - else { - this.fy = 0; - this.vy = 0; + // Triggered by addCustomTimeBar, redraw to add new bar + if (this.options.id) { + this.redraw(); + } } }; /** - * Check if this node has a fixed x and y position - * @return {boolean} true if fixed, false if not + * Create the DOM for the custom time + * @private */ - Node.prototype.isFixed = function() { - return (this.xFixed && this.yFixed); - }; + CustomTime.prototype._create = function() { + var bar = document.createElement('div'); + bar.className = 'customtime'; + bar.style.position = 'absolute'; + bar.style.top = '0px'; + bar.style.height = '100%'; + this.bar = bar; - /** - * Check if this node is moving - * @param {number} vmin the minimum velocity considered as "moving" - * @return {boolean} true if moving, false if it has no velocity - */ - Node.prototype.isMoving = function(vmin) { - var velocity = Math.sqrt(Math.pow(this.vx,2) + Math.pow(this.vy,2)); - // this.velocity = Math.sqrt(Math.pow(this.vx,2) + Math.pow(this.vy,2)) - return (velocity > vmin); - }; + var drag = document.createElement('div'); + drag.style.position = 'relative'; + drag.style.top = '0px'; + drag.style.left = '-10px'; + drag.style.height = '100%'; + drag.style.width = '20px'; + bar.appendChild(drag); - /** - * check if this node is selecte - * @return {boolean} selected True if node is selected, else false - */ - Node.prototype.isSelected = function() { - return this.selected; + // attach event listeners + this.hammer = Hammer(bar, { + prevent_default: true + }); + this.hammer.on('dragstart', this._onDragStart.bind(this)); + this.hammer.on('drag', this._onDrag.bind(this)); + this.hammer.on('dragend', this._onDragEnd.bind(this)); }; /** - * Retrieve the value of the node. Can be undefined - * @return {Number} value + * Destroy the CustomTime bar */ - Node.prototype.getValue = function() { - return this.value; + CustomTime.prototype.destroy = function () { + this.options.showCustomTime = false; + this.redraw(); // will remove the bar from the DOM + + this.hammer.enable(false); + this.hammer = null; + + this.body = null; }; /** - * Calculate the distance from the nodes location to the given location (x,y) - * @param {Number} x - * @param {Number} y - * @return {Number} value + * Repaint the component + * @return {boolean} Returns true if the component is resized */ - Node.prototype.getDistance = function(x, y) { - var dx = this.x - x, - dy = this.y - y; - return Math.sqrt(dx * dx + dy * dy); - }; + CustomTime.prototype.redraw = function () { + if (this.options.showCustomTime) { + var parent = this.body.dom.backgroundVertical; + if (this.bar.parentNode != parent) { + // attach to the dom + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); + } + parent.appendChild(this.bar); + } + + var x = this.body.util.toScreen(this.customTime); + var locale = this.options.locales[this.options.locale]; + var title = locale.time + ': ' + moment(this.customTime).format('dddd, MMMM Do YYYY, H:mm:ss'); + title = title.charAt(0).toUpperCase() + title.substring(1); - /** - * Adjust the value range of the node. The node will adjust it's radius - * based on its value. - * @param {Number} min - * @param {Number} max - */ - Node.prototype.setValueRange = function(min, max, total) { - if (!this.radiusFixed && this.value !== undefined) { - var scale = this.options.customScalingFunction(min, max, total, this.value); - var radiusDiff = this.options.radiusMax - this.options.radiusMin; - if (this.options.scaleFontWithValue == true) { - var fontDiff = this.options.fontSizeMax - this.options.fontSizeMin; - this.options.fontSize = this.options.fontSizeMin + scale * fontDiff; + this.bar.style.left = x + 'px'; + this.bar.title = title; + } + else { + // remove the line from the DOM + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); } - this.options.radius = this.options.radiusMin + scale * radiusDiff; } - this.baseRadiusValue = this.options.radius; + return false; + }; + + /** + * Set custom time. + * @param {Date | number | string} time + */ + CustomTime.prototype.setCustomTime = function(time) { + this.customTime = util.convert(time, 'Date'); + this.redraw(); }; /** - * Draw this node in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx + * Retrieve the current custom time. + * @return {Date} customTime */ - Node.prototype.draw = function(ctx) { - throw "Draw method not initialized for node"; + CustomTime.prototype.getCustomTime = function() { + return new Date(this.customTime.valueOf()); }; /** - * Recalculate the size of this node in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx + * Start moving horizontally + * @param {Event} event + * @private */ - Node.prototype.resize = function(ctx) { - throw "Resize method not initialized for node"; + CustomTime.prototype._onDragStart = function(event) { + this.eventParams.dragging = true; + this.eventParams.customTime = this.customTime; + + event.stopPropagation(); + event.preventDefault(); }; /** - * Check if this object is overlapping with the provided object - * @param {Object} obj an object with parameters left, top, right, bottom - * @return {boolean} True if location is located on node + * Perform moving operating. + * @param {Event} event + * @private */ - Node.prototype.isOverlappingWith = function(obj) { - return (this.left < obj.right && - this.left + this.width > obj.left && - this.top < obj.bottom && - this.top + this.height > obj.top); - }; + CustomTime.prototype._onDrag = function (event) { + if (!this.eventParams.dragging) return; - Node.prototype._resizeImage = function (ctx) { - // TODO: pre calculate the image size + var deltaX = event.gesture.deltaX, + x = this.body.util.toScreen(this.eventParams.customTime) + deltaX, + time = this.body.util.toTime(x); - if (!this.width || !this.height) { // undefined or 0 - var width, height; - if (this.value) { - this.options.radius= this.baseRadiusValue; - var scale = this.imageObj.height / this.imageObj.width; - if (scale !== undefined) { - width = this.options.radius|| this.imageObj.width; - height = this.options.radius* scale || this.imageObj.height; - } - else { - width = 0; - height = 0; - } - } - else { - width = this.imageObj.width; - height = this.imageObj.height; - } - this.width = width; - this.height = height; + this.setCustomTime(time); - this.growthIndicator = 0; - if (this.width > 0 && this.height > 0) { - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - width; - } - } + // fire a timechange event + this.body.emitter.emit('timechange', { + id: this.options.id, + time: new Date(this.customTime.valueOf()) + }); + + event.stopPropagation(); + event.preventDefault(); }; - Node.prototype._drawImageAtPosition = function (ctx) { - if (this.imageObj.width != 0 ) { - // draw the shade - if (this.clusterSize > 1) { - var lineWidth = ((this.clusterSize > 1) ? 10 : 0.0); - lineWidth *= this.networkScaleInv; - lineWidth = Math.min(0.2 * this.width,lineWidth); + /** + * Stop moving operating. + * @param {event} event + * @private + */ + CustomTime.prototype._onDragEnd = function (event) { + if (!this.eventParams.dragging) return; - ctx.globalAlpha = 0.5; - ctx.drawImage(this.imageObj, this.left - lineWidth, this.top - lineWidth, this.width + 2*lineWidth, this.height + 2*lineWidth); - } + // fire a timechanged event + this.body.emitter.emit('timechanged', { + id: this.options.id, + time: new Date(this.customTime.valueOf()) + }); - // draw the image - ctx.globalAlpha = 1.0; - ctx.drawImage(this.imageObj, this.left, this.top, this.width, this.height); - } + event.stopPropagation(); + event.preventDefault(); }; - Node.prototype._drawImageLabel = function (ctx) { - var yLabel; - var offset = 0; - - if (this.height){ - offset = this.height / 2; - var labelDimensions = this.getTextSize(ctx); - - if (labelDimensions.lineCount >= 1){ - offset += labelDimensions.height / 2; - offset += 3; - } - } - - yLabel = this.y + offset; - - this._label(ctx, this.label, this.x, yLabel, undefined); - }; + module.exports = CustomTime; - Node.prototype._drawImage = function (ctx) { - this._resizeImage(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; - this._drawImageAtPosition(ctx); +/***/ }, +/* 39 */ +/***/ function(module, exports, __webpack_require__) { - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; + // English + exports['en'] = { + current: 'current', + time: 'time' + }; + exports['en_EN'] = exports['en']; + exports['en_US'] = exports['en']; - this._drawImageLabel(ctx); - this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); - this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); - this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); + // Dutch + exports['nl'] = { + custom: 'aangepaste', + time: 'tijd' }; + exports['nl_NL'] = exports['nl']; + exports['nl_BE'] = exports['nl']; - Node.prototype._resizeCircularImage = function (ctx) { - if(!this.imageObj.src || !this.imageObj.width || !this.imageObj.height){ - if (!this.width) { - var diameter = this.options.radius * 2; - this.width = diameter; - this.height = diameter; - // scaling used for clustering - //this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; - //this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; - this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; - this.growthIndicator = this.options.radius- 0.5*diameter; - this._swapToImageResizeWhenImageLoaded = true; - } - } - else { - if (this._swapToImageResizeWhenImageLoaded) { - this.width = 0; - this.height = 0; - delete this._swapToImageResizeWhenImageLoaded; - } - this._resizeImage(ctx); - } +/***/ }, +/* 40 */ +/***/ function(module, exports, __webpack_require__) { - }; + var util = __webpack_require__(1); + var Component = __webpack_require__(23); + var moment = __webpack_require__(2); + var locales = __webpack_require__(39); - Node.prototype._drawCircularImage = function (ctx) { - this._resizeCircularImage(ctx); + /** + * A current time bar + * @param {{range: Range, dom: Object, domProps: Object}} body + * @param {Object} [options] Available parameters: + * {Boolean} [showCurrentTime] + * @constructor CurrentTime + * @extends Component + */ + function CurrentTime (body, options) { + this.body = body; - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; - - var centerX = this.left + (this.width / 2); - var centerY = this.top + (this.height / 2); - var radius = Math.abs(this.height / 2); + // default options + this.defaultOptions = { + showCurrentTime: true, - this._drawRawCircle(ctx, centerX, centerY, radius); + locales: locales, + locale: 'en' + }; + this.options = util.extend({}, this.defaultOptions); + this.offset = 0; - ctx.save(); - ctx.circle(this.x, this.y, radius); - ctx.stroke(); - ctx.clip(); + this._create(); - this._drawImageAtPosition(ctx); + this.setOptions(options); + } - ctx.restore(); + CurrentTime.prototype = new Component(); - this.boundingBox.top = this.y - this.options.radius; - this.boundingBox.left = this.x - this.options.radius; - this.boundingBox.right = this.x + this.options.radius; - this.boundingBox.bottom = this.y + this.options.radius; + /** + * Create the HTML DOM for the current time bar + * @private + */ + CurrentTime.prototype._create = function() { + var bar = document.createElement('div'); + bar.className = 'currenttime'; + bar.style.position = 'absolute'; + bar.style.top = '0px'; + bar.style.height = '100%'; - this._drawImageLabel(ctx); - - this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); - this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); - this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); + this.bar = bar; }; - Node.prototype._resizeBox = function (ctx) { - if (!this.width) { - var margin = 5; - var textSize = this.getTextSize(ctx); - this.width = textSize.width + 2 * margin; - this.height = textSize.height + 2 * margin; + /** + * Destroy the CurrentTime bar + */ + CurrentTime.prototype.destroy = function () { + this.options.showCurrentTime = false; + this.redraw(); // will remove the bar from the DOM and stop refreshing - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; - this.growthIndicator = this.width - (textSize.width + 2 * margin); - // this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; + this.body = null; + }; + /** + * Set options for the component. Options will be merged in current options. + * @param {Object} options Available parameters: + * {boolean} [showCurrentTime] + */ + CurrentTime.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + util.selectiveExtend(['showCurrentTime', 'locale', 'locales'], this.options, options); } }; - Node.prototype._drawBox = function (ctx) { - this._resizeBox(ctx); - - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + CurrentTime.prototype.redraw = function() { + if (this.options.showCurrentTime) { + var parent = this.body.dom.backgroundVertical; + if (this.bar.parentNode != parent) { + // attach to the dom + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); + } + parent.appendChild(this.bar); - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + this.start(); + } - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; + var now = new Date(new Date().valueOf() + this.offset); + var x = this.body.util.toScreen(now); - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + var locale = this.options.locales[this.options.locale]; + var title = locale.current + ' ' + locale.time + ': ' + moment(now).format('dddd, MMMM Do YYYY, H:mm:ss'); + title = title.charAt(0).toUpperCase() + title.substring(1); - ctx.roundRect(this.left-2*ctx.lineWidth, this.top-2*ctx.lineWidth, this.width+4*ctx.lineWidth, this.height+4*ctx.lineWidth, this.options.radius); - ctx.stroke(); + this.bar.style.left = x + 'px'; + this.bar.title = title; } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - - ctx.roundRect(this.left, this.top, this.width, this.height, this.options.radius); - ctx.fill(); - ctx.stroke(); - - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; - - this._label(ctx, this.label, this.x, this.y); - }; - - - Node.prototype._resizeDatabase = function (ctx) { - if (!this.width) { - var margin = 5; - var textSize = this.getTextSize(ctx); - var size = textSize.width + 2 * margin; - this.width = size; - this.height = size; - - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - size; + else { + // remove the line from the DOM + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); + } + this.stop(); } + + return false; }; - Node.prototype._drawDatabase = function (ctx) { - this._resizeDatabase(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + /** + * Start auto refreshing the current time bar + */ + CurrentTime.prototype.start = function() { + var me = this; - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + function update () { + me.stop(); - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; + // determine interval to refresh + var scale = me.body.range.conversion(me.body.domProps.center.width).scale; + var interval = 1 / scale / 10; + if (interval < 30) interval = 30; + if (interval > 1000) interval = 1000; - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + me.redraw(); - ctx.database(this.x - this.width/2 - 2*ctx.lineWidth, this.y - this.height*0.5 - 2*ctx.lineWidth, this.width + 4*ctx.lineWidth, this.height + 4*ctx.lineWidth); - ctx.stroke(); + // start a timer to adjust for the new time + me.currentTimeTimer = setTimeout(update, interval); } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - ctx.database(this.x - this.width/2, this.y - this.height*0.5, this.width, this.height); - ctx.fill(); - ctx.stroke(); - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; + update(); + }; - this._label(ctx, this.label, this.x, this.y); + /** + * Stop auto refreshing the current time bar + */ + CurrentTime.prototype.stop = function() { + if (this.currentTimeTimer !== undefined) { + clearTimeout(this.currentTimeTimer); + delete this.currentTimeTimer; + } }; + /** + * Set a current time. This can be used for example to ensure that a client's + * time is synchronized with a shared server time. + * @param {Date | String | Number} time A Date, unix timestamp, or + * ISO date string. + */ + CurrentTime.prototype.setCurrentTime = function(time) { + var t = util.convert(time, 'Date').valueOf(); + var now = new Date().valueOf(); + this.offset = t - now; + this.redraw(); + }; - Node.prototype._resizeCircle = function (ctx) { - if (!this.width) { - var margin = 5; - var textSize = this.getTextSize(ctx); - var diameter = Math.max(textSize.width, textSize.height) + 2 * margin; - this.options.radius = diameter / 2; + /** + * Get the current time. + * @return {Date} Returns the current time. + */ + CurrentTime.prototype.getCurrentTime = function() { + return new Date(new Date().valueOf() + this.offset); + }; - this.width = diameter; - this.height = diameter; + module.exports = CurrentTime; - // scaling used for clustering - // this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; - // this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; - this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; - this.growthIndicator = this.options.radius- 0.5*diameter; - } - }; - Node.prototype._drawRawCircle = function (ctx, x, y, radius) { - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; +/***/ }, +/* 41 */ +/***/ function(module, exports, __webpack_require__) { - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + var Emitter = __webpack_require__(11); + var Hammer = __webpack_require__(19); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(7); + var DataView = __webpack_require__(9); + var Range = __webpack_require__(21); + var Core = __webpack_require__(25); + var TimeAxis = __webpack_require__(35); + var CurrentTime = __webpack_require__(40); + var CustomTime = __webpack_require__(38); + var LineGraph = __webpack_require__(42); - ctx.circle(x, y, radius+2*ctx.lineWidth); - ctx.stroke(); + /** + * Create a timeline visualization + * @param {HTMLElement} container + * @param {vis.DataSet | Array | google.visualization.DataTable} [items] + * @param {Object} [options] See Graph2d.setOptions for the available options. + * @constructor + * @extends Core + */ + function Graph2d (container, items, groups, options) { + // if the third element is options, the forth is groups (optionally); + if (!(Array.isArray(groups) || groups instanceof DataSet) && groups instanceof Object) { + var forthArgument = options; + options = groups; + groups = forthArgument; } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - ctx.circle(this.x, this.y, radius); - ctx.fill(); - ctx.stroke(); - }; + var me = this; + this.defaultOptions = { + start: null, + end: null, - Node.prototype._drawCircle = function (ctx) { - this._resizeCircle(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + autoResize: true, - this._drawRawCircle(ctx, this.x, this.y, this.options.radius); + orientation: 'bottom', + width: null, + height: null, + maxHeight: null, + minHeight: null + }; + this.options = util.deepExtend({}, this.defaultOptions); - this.boundingBox.top = this.y - this.options.radius; - this.boundingBox.left = this.x - this.options.radius; - this.boundingBox.right = this.x + this.options.radius; - this.boundingBox.bottom = this.y + this.options.radius; + // Create the DOM, props, and emitter + this._create(container); - this._label(ctx, this.label, this.x, this.y); - }; + // all components listed here will be repainted automatically + this.components = []; + + this.body = { + dom: this.dom, + domProps: this.props, + emitter: { + on: this.on.bind(this), + off: this.off.bind(this), + emit: this.emit.bind(this) + }, + hiddenDates: [], + util: { + toScreen: me._toScreen.bind(me), + toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width + toTime: me._toTime.bind(me), + toGlobalTime : me._toGlobalTime.bind(me) + } + }; - Node.prototype._resizeEllipse = function (ctx) { - if (!this.width) { - var textSize = this.getTextSize(ctx); + // range + this.range = new Range(this.body); + this.components.push(this.range); + this.body.range = this.range; - this.width = textSize.width * 1.5; - this.height = textSize.height * 2; - if (this.width < this.height) { - this.width = this.height; - } - var defaultSize = this.width; + // time axis + this.timeAxis = new TimeAxis(this.body); + this.components.push(this.timeAxis); + //this.body.util.snap = this.timeAxis.snap.bind(this.timeAxis); - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - defaultSize; - } - }; + // current time bar + this.currentTime = new CurrentTime(this.body); + this.components.push(this.currentTime); - Node.prototype._drawEllipse = function (ctx) { - this._resizeEllipse(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + // custom time bar + // Note: time bar will be attached in this.setOptions when selected + this.customTime = new CustomTime(this.body); + this.components.push(this.customTime); - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + // item set + this.linegraph = new LineGraph(this.body); + this.components.push(this.linegraph); - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + // apply options + if (options) { + this.setOptions(options); + } - ctx.ellipse(this.left-2*ctx.lineWidth, this.top-2*ctx.lineWidth, this.width+4*ctx.lineWidth, this.height+4*ctx.lineWidth); - ctx.stroke(); + // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! + if (groups) { + this.setGroups(groups); } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; + // create itemset + if (items) { + this.setItems(items); + } + else { + this._redraw(); + } + } - ctx.ellipse(this.left, this.top, this.width, this.height); - ctx.fill(); - ctx.stroke(); + // Extend the functionality from Core + Graph2d.prototype = new Core(); - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; + /** + * Set items + * @param {vis.DataSet | Array | google.visualization.DataTable | null} items + */ + Graph2d.prototype.setItems = function(items) { + var initialLoad = (this.itemsData == null); - this._label(ctx, this.label, this.x, this.y); - }; + // convert to type DataSet when needed + var newDataSet; + if (!items) { + newDataSet = null; + } + else if (items instanceof DataSet || items instanceof DataView) { + newDataSet = items; + } + else { + // turn an array into a dataset + newDataSet = new DataSet(items, { + type: { + start: 'Date', + end: 'Date' + } + }); + } - Node.prototype._drawDot = function (ctx) { - this._drawShape(ctx, 'circle'); - }; + // set items + this.itemsData = newDataSet; + this.linegraph && this.linegraph.setItems(newDataSet); - Node.prototype._drawTriangle = function (ctx) { - this._drawShape(ctx, 'triangle'); - }; + if (initialLoad) { + if (this.options.start != undefined || this.options.end != undefined) { + var start = this.options.start != undefined ? this.options.start : null; + var end = this.options.end != undefined ? this.options.end : null; - Node.prototype._drawTriangleDown = function (ctx) { - this._drawShape(ctx, 'triangleDown'); + this.setWindow(start, end, {animate: false}); + } + else { + this.fit({animate: false}); + } + } }; - Node.prototype._drawSquare = function (ctx) { - this._drawShape(ctx, 'square'); - }; + /** + * Set groups + * @param {vis.DataSet | Array | google.visualization.DataTable} groups + */ + Graph2d.prototype.setGroups = function(groups) { + // convert to type DataSet when needed + var newDataSet; + if (!groups) { + newDataSet = null; + } + else if (groups instanceof DataSet || groups instanceof DataView) { + newDataSet = groups; + } + else { + // turn an array into a dataset + newDataSet = new DataSet(groups); + } - Node.prototype._drawStar = function (ctx) { - this._drawShape(ctx, 'star'); + this.groupsData = newDataSet; + this.linegraph.setGroups(newDataSet); }; - Node.prototype._resizeShape = function (ctx) { - if (!this.width) { - this.options.radius= this.baseRadiusValue; - var size = 2 * this.options.radius; - this.width = size; - this.height = size; - - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - size; + /** + * Returns an object containing an SVG element with the icon of the group (size determined by iconWidth and iconHeight), the label of the group (content) and the yAxisOrientation of the group (left or right). + * @param groupId + * @param width + * @param height + */ + Graph2d.prototype.getLegend = function(groupId, width, height) { + if (width === undefined) {width = 15;} + if (height === undefined) {height = 15;} + if (this.linegraph.groups[groupId] !== undefined) { + return this.linegraph.groups[groupId].getLegend(width,height); } - }; - - Node.prototype._drawShape = function (ctx, shape) { - this._resizeShape(ctx); - - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; - - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - var radiusMultiplier = 2; - - // choose draw method depending on the shape - switch (shape) { - case 'dot': radiusMultiplier = 2; break; - case 'square': radiusMultiplier = 2; break; - case 'triangle': radiusMultiplier = 3; break; - case 'triangleDown': radiusMultiplier = 3; break; - case 'star': radiusMultiplier = 4; break; + else { + return "cannot find group:" + groupId; } + } - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - - ctx[shape](this.x, this.y, this.options.radius+ radiusMultiplier * ctx.lineWidth); - ctx.stroke(); + /** + * This checks if the visible option of the supplied group (by ID) is true or false. + * @param groupId + * @returns {*} + */ + Graph2d.prototype.isGroupVisible = function(groupId) { + if (this.linegraph.groups[groupId] !== undefined) { + return (this.linegraph.groups[groupId].visible && (this.linegraph.options.groups.visibility[groupId] === undefined || this.linegraph.options.groups.visibility[groupId] == true)); } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + else { + return false; + } + } - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - ctx[shape](this.x, this.y, this.options.radius); - ctx.fill(); - ctx.stroke(); - this.boundingBox.top = this.y - this.options.radius; - this.boundingBox.left = this.x - this.options.radius; - this.boundingBox.right = this.x + this.options.radius; - this.boundingBox.bottom = this.y + this.options.radius; + /** + * Get the data range of the item set. + * @returns {{min: Date, max: Date}} range A range with a start and end Date. + * When no minimum is found, min==null + * When no maximum is found, max==null + */ + Graph2d.prototype.getItemRange = function() { + var min = null; + var max = null; - if (this.label) { - this._label(ctx, this.label, this.x, this.y + this.height / 2, undefined, 'hanging',true); - this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); - this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); - this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); + // calculate min from start filed + for (var groupId in this.linegraph.groups) { + if (this.linegraph.groups.hasOwnProperty(groupId)) { + if (this.linegraph.groups[groupId].visible == true) { + for (var i = 0; i < this.linegraph.groups[groupId].itemsData.length; i++) { + var item = this.linegraph.groups[groupId].itemsData[i]; + var value = util.convert(item.x, 'Date').valueOf(); + min = min == null ? value : min > value ? value : min; + max = max == null ? value : max < value ? value : max; + } + } + } } + + return { + min: (min != null) ? new Date(min) : null, + max: (max != null) ? new Date(max) : null + }; }; - Node.prototype._resizeText = function (ctx) { - if (!this.width) { - var margin = 5; - var textSize = this.getTextSize(ctx); - this.width = textSize.width + 2 * margin; - this.height = textSize.height + 2 * margin; - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - (textSize.width + 2 * margin); - } - }; - Node.prototype._drawText = function (ctx) { - this._resizeText(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + module.exports = Graph2d; - this._label(ctx, this.label, this.x, this.y); - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; - }; +/***/ }, +/* 42 */ +/***/ function(module, exports, __webpack_require__) { - Node.prototype._resizeIcon = function (ctx) { - if (!this.width) { - var margin = 5; - var iconSize = - { - width: Number(this.options.iconSize), - height: Number(this.options.iconSize) - }; - this.width = iconSize.width + 2 * margin; - this.height = iconSize.height + 2 * margin; + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(6); + var DataSet = __webpack_require__(7); + var DataView = __webpack_require__(9); + var Component = __webpack_require__(23); + var DataAxis = __webpack_require__(43); + var GraphGroup = __webpack_require__(45); + var Legend = __webpack_require__(49); + var BarGraphFunctions = __webpack_require__(48); - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - (iconSize.width + 2 * margin); - } - }; + var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items - Node.prototype._drawIcon = function (ctx) { - this._resizeIcon(ctx); + /** + * This is the constructor of the LineGraph. It requires a Timeline body and options. + * + * @param body + * @param options + * @constructor + */ + function LineGraph(body, options) { + this.id = util.randomUUID(); + this.body = body; - this.options.iconSize = this.options.iconSize || 50; + this.defaultOptions = { + yAxisOrientation: 'left', + defaultGroup: 'default', + sort: true, + sampling: true, + graphHeight: '400px', + shaded: { + enabled: false, + orientation: 'bottom' // top, bottom + }, + style: 'line', // line, bar + barChart: { + width: 50, + handleOverlap: 'overlap', + align: 'center' // left, center, right + }, + catmullRom: { + enabled: true, + parametrization: 'centripetal', // uniform (alpha = 0.0), chordal (alpha = 1.0), centripetal (alpha = 0.5) + alpha: 0.5 + }, + drawPoints: { + enabled: true, + size: 6, + style: 'square' // square, circle + }, + dataAxis: { + showMinorLabels: true, + showMajorLabels: true, + icons: false, + width: '40px', + visible: true, + alignZeros: true, + customRange: { + left: {min:undefined, max:undefined}, + right: {min:undefined, max:undefined} + } + //, these options are not set by default, but this shows the format they will be in + //format: { + // left: {decimals: 2}, + // right: {decimals: 2} + //}, + //title: { + // left: { + // text: 'left', + // style: 'color:black;' + // }, + // right: { + // text: 'right', + // style: 'color:black;' + // } + //} + }, + legend: { + enabled: false, + icons: true, + left: { + visible: true, + position: 'top-left' // top/bottom - left,right + }, + right: { + visible: true, + position: 'top-right' // top/bottom - left,right + } + }, + groups: { + visibility: {} + } + }; - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; - this._icon(ctx); + // options is shared by this ItemSet and all its items + this.options = util.extend({}, this.defaultOptions); + this.dom = {}; + this.props = {}; + this.hammer = null; + this.groups = {}; + this.abortedGraphUpdate = false; + this.updateSVGheight = false; + this.updateSVGheightOnResize = false; + var me = this; + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet - this.boundingBox.top = this.y - this.options.iconSize/2; - this.boundingBox.left = this.x - this.options.iconSize/2; - this.boundingBox.right = this.x + this.options.iconSize/2; - this.boundingBox.bottom = this.y + this.options.iconSize/2; + // listeners for the DataSet of the items + this.itemListeners = { + 'add': function (event, params, senderId) { + me._onAdd(params.items); + }, + 'update': function (event, params, senderId) { + me._onUpdate(params.items); + }, + 'remove': function (event, params, senderId) { + me._onRemove(params.items); + } + }; - if (this.label) { - var iconTextSpacing = 5; - this._label(ctx, this.label, this.x, this.y + this.height / 2 + iconTextSpacing, 'top', true); + // listeners for the DataSet of the groups + this.groupListeners = { + 'add': function (event, params, senderId) { + me._onAddGroups(params.items); + }, + 'update': function (event, params, senderId) { + me._onUpdateGroups(params.items); + }, + 'remove': function (event, params, senderId) { + me._onRemoveGroups(params.items); + } + }; - this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); - this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); - this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); - } - }; + this.items = {}; // object with an Item for every data item + this.selection = []; // list with the ids of all selected nodes + this.lastStart = this.body.range.start; + this.touchParams = {}; // stores properties while dragging - Node.prototype._icon = function (ctx) { - var relativeIconSize = Number(this.options.iconSize) * this.networkScale; - - if (this.options.icon && relativeIconSize > this.options.fontDrawThreshold - 1) { + this.svgElements = {}; + this.setOptions(options); + this.groupsUsingDefaultStyles = [0]; + this.COUNTER = 0; + this.body.emitter.on('rangechanged', function() { + me.lastStart = me.body.range.start; + me.svg.style.left = util.option.asSize(-me.props.width); + me.redraw.call(me,true); + }); - var iconSize = Number(this.options.iconSize); + // create the HTML DOM + this._create(); + this.framework = {svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups}; + this.body.emitter.emit('change'); - ctx.font = (this.selected ? "bold " : "") + iconSize + "px " + this.options.iconFontFace; + } - // draw icon - ctx.fillStyle = this.options.iconColor || "black"; - ctx.textAlign = "center"; - ctx.textBaseline = "middle"; - ctx.fillText(this.options.icon, this.x, this.y); - } - }; - - Node.prototype._label = function (ctx, text, x, y, align, baseline, labelUnderNode) { - var relativeFontSize = Number(this.options.fontSize) * this.networkScale; - if (text && relativeFontSize >= this.options.fontDrawThreshold - 1) { - var fontSize = Number(this.options.fontSize); + LineGraph.prototype = new Component(); - // this ensures that there will not be HUGE letters on screen by setting an upper limit on the visible text size (regardless of zoomLevel) - if (relativeFontSize >= this.options.fontSizeMaxVisible) { - fontSize = Number(this.options.fontSizeMaxVisible) * this.networkScaleInv; - } + /** + * Create the HTML DOM for the ItemSet + */ + LineGraph.prototype._create = function(){ + var frame = document.createElement('div'); + frame.className = 'LineGraph'; + this.dom.frame = frame; - // fade in when relative scale is between threshold and threshold - 1 - var fontColor = this.options.fontColor || "#000000"; - var strokecolor = this.options.fontStrokeColor; - if (relativeFontSize <= this.options.fontDrawThreshold) { - var opacity = Math.max(0,Math.min(1,1 - (this.options.fontDrawThreshold - relativeFontSize))); - fontColor = util.overrideOpacity(fontColor, opacity); - strokecolor = util.overrideOpacity(strokecolor, opacity); + // create svg element for graph drawing. + this.svg = document.createElementNS('http://www.w3.org/2000/svg','svg'); + this.svg.style.position = 'relative'; + this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; + this.svg.style.display = 'block'; + frame.appendChild(this.svg); - } + // data axis + this.options.dataAxis.orientation = 'left'; + this.yAxisLeft = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); + + this.options.dataAxis.orientation = 'right'; + this.yAxisRight = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); + delete this.options.dataAxis.orientation; - ctx.font = (this.selected ? "bold " : "") + fontSize + "px " + this.options.fontFace; + // legends + this.legendLeft = new Legend(this.body, this.options.legend, 'left', this.options.groups); + this.legendRight = new Legend(this.body, this.options.legend, 'right', this.options.groups); - var lines = text.split('\n'); - var lineCount = lines.length; - var yLine = y + (1 - lineCount) / 2 * fontSize; - if (labelUnderNode == true) { - yLine = y + (1 - lineCount) / (2 * fontSize); - } + this.show(); + }; - // font fill from edges now for nodes! - var width = ctx.measureText(lines[0]).width; - for (var i = 1; i < lineCount; i++) { - var lineWidth = ctx.measureText(lines[i]).width; - width = lineWidth > width ? lineWidth : width; + /** + * set the options of the LineGraph. the mergeOptions is used for subObjects that have an enabled element. + * @param {object} options + */ + LineGraph.prototype.setOptions = function(options) { + if (options) { + var fields = ['sampling','defaultGroup','height','graphHeight','yAxisOrientation','style','barChart','dataAxis','sort','groups']; + if (options.graphHeight === undefined && options.height !== undefined && this.body.domProps.centerContainer.height !== undefined) { + this.updateSVGheight = true; + this.updateSVGheightOnResize = true; } - var height = fontSize * lineCount; - var left = x - width / 2; - var top = y - height / 2; - if (baseline == "hanging") { - top += 0.5 * fontSize; - top += 4; // distance from node, required because we use hanging. Hanging has less difference between browsers - yLine += 4; // distance from node + else if (this.body.domProps.centerContainer.height !== undefined && options.graphHeight !== undefined) { + if (parseInt((options.graphHeight + '').replace("px",'')) < this.body.domProps.centerContainer.height) { + this.updateSVGheight = true; + } } - this.labelDimensions = {top:top,left:left,width:width,height:height,yLine:yLine}; + util.selectiveDeepExtend(fields, this.options, options); + util.mergeOptions(this.options, options,'catmullRom'); + util.mergeOptions(this.options, options,'drawPoints'); + util.mergeOptions(this.options, options,'shaded'); + util.mergeOptions(this.options, options,'legend'); - // create the fontfill background - if (this.options.fontFill !== undefined && this.options.fontFill !== null && this.options.fontFill !== "none") { - ctx.fillStyle = this.options.fontFill; - ctx.fillRect(left, top, width, height); + if (options.catmullRom) { + if (typeof options.catmullRom == 'object') { + if (options.catmullRom.parametrization) { + if (options.catmullRom.parametrization == 'uniform') { + this.options.catmullRom.alpha = 0; + } + else if (options.catmullRom.parametrization == 'chordal') { + this.options.catmullRom.alpha = 1.0; + } + else { + this.options.catmullRom.parametrization = 'centripetal'; + this.options.catmullRom.alpha = 0.5; + } + } + } } - // draw text - ctx.fillStyle = fontColor; - ctx.textAlign = align || "center"; - ctx.textBaseline = baseline || "middle"; - if (this.options.fontStrokeWidth > 0){ - ctx.lineWidth = this.options.fontStrokeWidth; - ctx.strokeStyle = strokecolor; - ctx.lineJoin = 'round'; - } - for (var i = 0; i < lineCount; i++) { - if(this.options.fontStrokeWidth){ - ctx.strokeText(lines[i], x, yLine); + if (this.yAxisLeft) { + if (options.dataAxis !== undefined) { + this.yAxisLeft.setOptions(this.options.dataAxis); + this.yAxisRight.setOptions(this.options.dataAxis); } - ctx.fillText(lines[i], x, yLine); - yLine += fontSize; } - } - }; - - Node.prototype.getTextSize = function(ctx) { - if (this.label !== undefined) { - var fontSize = Number(this.options.fontSize); - if (fontSize * this.networkScale > this.options.fontSizeMaxVisible) { - fontSize = Number(this.options.fontSizeMaxVisible) * this.networkScaleInv; + if (this.legendLeft) { + if (options.legend !== undefined) { + this.legendLeft.setOptions(this.options.legend); + this.legendRight.setOptions(this.options.legend); + } } - ctx.font = (this.selected ? "bold " : "") + fontSize + "px " + this.options.fontFace; - - var lines = this.label.split('\n'), - height = (fontSize + 4) * lines.length, - width = 0; - for (var i = 0, iMax = lines.length; i < iMax; i++) { - width = Math.max(width, ctx.measureText(lines[i]).width); + if (this.groups.hasOwnProperty(UNGROUPED)) { + this.groups[UNGROUPED].setOptions(options); } - - return {"width": width, "height": height, lineCount: lines.length}; } - else { - return {"width": 0, "height": 0, lineCount: 0}; + + // this is used to redraw the graph if the visibility of the groups is changed. + if (this.dom.frame) { + this.redraw(true); } }; /** - * this is used to determine if a node is visible at all. this is used to determine when it needs to be drawn. - * there is a safety margin of 0.3 * width; - * - * @returns {boolean} + * Hide the component from the DOM */ - Node.prototype.inArea = function() { - if (this.width !== undefined) { - return (this.x + this.width *this.networkScaleInv >= this.canvasTopLeft.x && - this.x - this.width *this.networkScaleInv < this.canvasBottomRight.x && - this.y + this.height*this.networkScaleInv >= this.canvasTopLeft.y && - this.y - this.height*this.networkScaleInv < this.canvasBottomRight.y); - } - else { - return true; + LineGraph.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); } }; + /** - * checks if the core of the node is in the display area, this is used for opening clusters around zoom - * @returns {boolean} + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed */ - Node.prototype.inView = function() { - return (this.x >= this.canvasTopLeft.x && - this.x < this.canvasBottomRight.x && - this.y >= this.canvasTopLeft.y && - this.y < this.canvasBottomRight.y); + LineGraph.prototype.show = function() { + // show frame containing the items + if (!this.dom.frame.parentNode) { + this.body.dom.center.appendChild(this.dom.frame); + } }; + /** - * This allows the zoom level of the network to influence the rendering - * We store the inverted scale and the coordinates of the top left, and bottom right points of the canvas - * - * @param scale - * @param canvasTopLeft - * @param canvasBottomRight + * Set items + * @param {vis.DataSet | null} items */ - Node.prototype.setScaleAndPos = function(scale,canvasTopLeft,canvasBottomRight) { - this.networkScaleInv = 1.0/scale; - this.networkScale = scale; - this.canvasTopLeft = canvasTopLeft; - this.canvasBottomRight = canvasBottomRight; + LineGraph.prototype.setItems = function(items) { + var me = this, + ids, + oldItemsData = this.itemsData; + + // replace the dataset + if (!items) { + this.itemsData = null; + } + else if (items instanceof DataSet || items instanceof DataView) { + this.itemsData = items; + } + else { + throw new TypeError('Data must be an instance of DataSet or DataView'); + } + + if (oldItemsData) { + // unsubscribe from old dataset + util.forEach(this.itemListeners, function (callback, event) { + oldItemsData.off(event, callback); + }); + + // remove all drawn items + ids = oldItemsData.getIds(); + this._onRemove(ids); + } + + if (this.itemsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.itemListeners, function (callback, event) { + me.itemsData.on(event, callback, id); + }); + + // add all new items + ids = this.itemsData.getIds(); + this._onAdd(ids); + } + this._updateUngrouped(); + //this._updateGraph(); + this.redraw(true); }; /** - * This allows the zoom level of the network to influence the rendering - * - * @param scale + * Set groups + * @param {vis.DataSet} groups */ - Node.prototype.setScale = function(scale) { - this.networkScaleInv = 1.0/scale; - this.networkScale = scale; - }; + LineGraph.prototype.setGroups = function(groups) { + var me = this; + var ids; + // unsubscribe from current dataset + if (this.groupsData) { + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.unsubscribe(event, callback); + }); + // remove all drawn groups + ids = this.groupsData.getIds(); + this.groupsData = null; + this._onRemoveGroups(ids); // note: this will cause a redraw + } - /** - * set the velocity at 0. Is called when this node is contained in another during clustering - */ - Node.prototype.clearVelocity = function() { - this.vx = 0; - this.vy = 0; + // replace the dataset + if (!groups) { + this.groupsData = null; + } + else if (groups instanceof DataSet || groups instanceof DataView) { + this.groupsData = groups; + } + else { + throw new TypeError('Data must be an instance of DataSet or DataView'); + } + + if (this.groupsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.on(event, callback, id); + }); + + // draw all ms + ids = this.groupsData.getIds(); + this._onAddGroups(ids); + } + this._onUpdate(); }; /** - * Basic preservation of (kinectic) energy - * - * @param massBeforeClustering + * Update the data + * @param [ids] + * @private */ - Node.prototype.updateVelocity = function(massBeforeClustering) { - var energyBefore = this.vx * this.vx * massBeforeClustering; - //this.vx = (this.vx < 0) ? -Math.sqrt(energyBefore/this.options.mass) : Math.sqrt(energyBefore/this.options.mass); - this.vx = Math.sqrt(energyBefore/this.options.mass); - energyBefore = this.vy * this.vy * massBeforeClustering; - //this.vy = (this.vy < 0) ? -Math.sqrt(energyBefore/this.options.mass) : Math.sqrt(energyBefore/this.options.mass); - this.vy = Math.sqrt(energyBefore/this.options.mass); + LineGraph.prototype._onUpdate = function(ids) { + this._updateUngrouped(); + this._updateAllGroupData(); + //this._updateGraph(); + this.redraw(true); }; + LineGraph.prototype._onAdd = function (ids) {this._onUpdate(ids);}; + LineGraph.prototype._onRemove = function (ids) {this._onUpdate(ids);}; + LineGraph.prototype._onUpdateGroups = function (groupIds) { + for (var i = 0; i < groupIds.length; i++) { + var group = this.groupsData.get(groupIds[i]); + this._updateGroup(group, groupIds[i]); + } - module.exports = Node; - + //this._updateGraph(); + this.redraw(true); + }; + LineGraph.prototype._onAddGroups = function (groupIds) {this._onUpdateGroups(groupIds);}; -/***/ }, -/* 41 */ -/***/ function(module, exports, __webpack_require__) { /** - * Popup is a class to create a popup window with some text - * @param {Element} container The container object. - * @param {Number} [x] - * @param {Number} [y] - * @param {String} [text] - * @param {Object} [style] An object containing borderColor, - * backgroundColor, etc. + * this cleans the group out off the legends and the dataaxis, updates the ungrouped and updates the graph + * @param {Array} groupIds + * @private */ - function Popup(container, x, y, text, style) { - if (container) { - this.container = container; - } - else { - this.container = document.body; - } - - // x, y and text are optional, see if a style object was passed in their place - if (style === undefined) { - if (typeof x === "object") { - style = x; - x = undefined; - } else if (typeof text === "object") { - style = text; - text = undefined; - } else { - // for backwards compatibility, in case clients other than Network are creating Popup directly - style = { - fontColor: 'black', - fontSize: 14, // px - fontFace: 'verdana', - color: { - border: '#666', - background: '#FFFFC6' - } + LineGraph.prototype._onRemoveGroups = function (groupIds) { + for (var i = 0; i < groupIds.length; i++) { + if (this.groups.hasOwnProperty(groupIds[i])) { + if (this.groups[groupIds[i]].options.yAxisOrientation == 'right') { + this.yAxisRight.removeGroup(groupIds[i]); + this.legendRight.removeGroup(groupIds[i]); + this.legendRight.redraw(); + } + else { + this.yAxisLeft.removeGroup(groupIds[i]); + this.legendLeft.removeGroup(groupIds[i]); + this.legendLeft.redraw(); } + delete this.groups[groupIds[i]]; } } + this._updateUngrouped(); + //this._updateGraph(); + this.redraw(true); + }; - this.x = 0; - this.y = 0; - this.padding = 5; - this.hidden = false; - if (x !== undefined && y !== undefined) { - this.setPosition(x, y); + /** + * update a group object with the group dataset entree + * + * @param group + * @param groupId + * @private + */ + LineGraph.prototype._updateGroup = function (group, groupId) { + if (!this.groups.hasOwnProperty(groupId)) { + this.groups[groupId] = new GraphGroup(group, groupId, this.options, this.groupsUsingDefaultStyles); + if (this.groups[groupId].options.yAxisOrientation == 'right') { + this.yAxisRight.addGroup(groupId, this.groups[groupId]); + this.legendRight.addGroup(groupId, this.groups[groupId]); + } + else { + this.yAxisLeft.addGroup(groupId, this.groups[groupId]); + this.legendLeft.addGroup(groupId, this.groups[groupId]); + } } - if (text !== undefined) { - this.setText(text); + else { + this.groups[groupId].update(group); + if (this.groups[groupId].options.yAxisOrientation == 'right') { + this.yAxisRight.updateGroup(groupId, this.groups[groupId]); + this.legendRight.updateGroup(groupId, this.groups[groupId]); + } + else { + this.yAxisLeft.updateGroup(groupId, this.groups[groupId]); + this.legendLeft.updateGroup(groupId, this.groups[groupId]); + } } + this.legendLeft.redraw(); + this.legendRight.redraw(); + }; - // create the frame - this.frame = document.createElement('div'); - this.frame.className = 'network-tooltip'; - this.frame.style.color = style.fontColor; - this.frame.style.backgroundColor = style.color.background; - this.frame.style.borderColor = style.color.border; - this.frame.style.fontSize = style.fontSize + 'px'; - this.frame.style.fontFamily = style.fontFace; - this.container.appendChild(this.frame); - } /** - * @param {number} x Horizontal position of the popup window - * @param {number} y Vertical position of the popup window + * this updates all groups, it is used when there is an update the the itemset. + * + * @private */ - Popup.prototype.setPosition = function(x, y) { - this.x = parseInt(x); - this.y = parseInt(y); + LineGraph.prototype._updateAllGroupData = function () { + if (this.itemsData != null) { + var groupsContent = {}; + var groupId; + for (groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + groupsContent[groupId] = []; + } + } + for (var itemId in this.itemsData._data) { + if (this.itemsData._data.hasOwnProperty(itemId)) { + var item = this.itemsData._data[itemId]; + if (groupsContent[item.group] === undefined) { + throw new Error('Cannot find referenced group. Possible reason: items added before groups? Groups need to be added before items, as items refer to groups.') + } + item.x = util.convert(item.x,'Date'); + groupsContent[item.group].push(item); + } + } + for (groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + this.groups[groupId].setItems(groupsContent[groupId]); + } + } + } }; + /** - * Set the content for the popup window. This can be HTML code or text. - * @param {string | Element} content + * Create or delete the group holding all ungrouped items. This group is used when + * there are no groups specified. This anonymous group is called 'graph'. + * @protected */ - Popup.prototype.setText = function(content) { - if (content instanceof Element) { - this.frame.innerHTML = ''; - this.frame.appendChild(content); + LineGraph.prototype._updateUngrouped = function() { + if (this.itemsData && this.itemsData != null) { + var ungroupedCounter = 0; + for (var itemId in this.itemsData._data) { + if (this.itemsData._data.hasOwnProperty(itemId)) { + var item = this.itemsData._data[itemId]; + if (item != undefined) { + if (item.hasOwnProperty('group')) { + if (item.group === undefined) { + item.group = UNGROUPED; + } + } + else { + item.group = UNGROUPED; + } + ungroupedCounter = item.group == UNGROUPED ? ungroupedCounter + 1 : ungroupedCounter; + } + } + } + + if (ungroupedCounter == 0) { + delete this.groups[UNGROUPED]; + this.legendLeft.removeGroup(UNGROUPED); + this.legendRight.removeGroup(UNGROUPED); + this.yAxisLeft.removeGroup(UNGROUPED); + this.yAxisRight.removeGroup(UNGROUPED); + } + else { + var group = {id: UNGROUPED, content: this.options.defaultGroup}; + this._updateGroup(group, UNGROUPED); + } } else { - this.frame.innerHTML = content; // string containing text or HTML + delete this.groups[UNGROUPED]; + this.legendLeft.removeGroup(UNGROUPED); + this.legendRight.removeGroup(UNGROUPED); + this.yAxisLeft.removeGroup(UNGROUPED); + this.yAxisRight.removeGroup(UNGROUPED); } + + this.legendLeft.redraw(); + this.legendRight.redraw(); }; + /** - * Show the popup window - * @param {boolean} show Optional. Show or hide the window + * Redraw the component, mandatory function + * @return {boolean} Returns true if the component is resized */ - Popup.prototype.show = function (show) { - if (show === undefined) { - show = true; + LineGraph.prototype.redraw = function(forceGraphUpdate) { + var resized = false; + + // calculate actual size and position + this.props.width = this.dom.frame.offsetWidth; + this.props.height = this.body.domProps.centerContainer.height; + + // update the graph if there is no lastWidth or with, used for the initial draw + if (this.lastWidth === undefined && this.props.width) { + forceGraphUpdate = true; } - if (show) { - var height = this.frame.clientHeight; - var width = this.frame.clientWidth; - var maxHeight = this.frame.parentNode.clientHeight; - var maxWidth = this.frame.parentNode.clientWidth; + // check if this component is resized + resized = this._isResized() || resized; - var top = (this.y - height); - if (top + height + this.padding > maxHeight) { - top = maxHeight - height - this.padding; - } - if (top < this.padding) { - top = this.padding; - } + // check whether zoomed (in that case we need to re-stack everything) + var visibleInterval = this.body.range.end - this.body.range.start; + var zoomed = (visibleInterval != this.lastVisibleInterval); + this.lastVisibleInterval = visibleInterval; + + + // the svg element is three times as big as the width, this allows for fully dragging left and right + // without reloading the graph. the controls for this are bound to events in the constructor + if (resized == true) { + this.svg.style.width = util.option.asSize(3*this.props.width); + this.svg.style.left = util.option.asSize(-this.props.width); - var left = this.x; - if (left + width + this.padding > maxWidth) { - left = maxWidth - width - this.padding; + // if the height of the graph is set as proportional, change the height of the svg + if ((this.options.height + '').indexOf("%") != -1 || this.updateSVGheightOnResize == true) { + this.updateSVGheight = true; } - if (left < this.padding) { - left = this.padding; + } + + // update the height of the graph on each redraw of the graph. + if (this.updateSVGheight == true) { + if (this.options.graphHeight != this.body.domProps.centerContainer.height + 'px') { + this.options.graphHeight = this.body.domProps.centerContainer.height + 'px'; + this.svg.style.height = this.body.domProps.centerContainer.height + 'px'; } + this.updateSVGheight = false; + } + else { + this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; + } - this.frame.style.left = left + "px"; - this.frame.style.top = top + "px"; - this.frame.style.visibility = "visible"; - this.hidden = false; + // zoomed is here to ensure that animations are shown correctly. + if (resized == true || zoomed == true || this.abortedGraphUpdate == true || forceGraphUpdate == true) { + resized = this._updateGraph() || resized; } else { - this.hide(); + // move the whole svg while dragging + if (this.lastStart != 0) { + var offset = this.body.range.start - this.lastStart; + var range = this.body.range.end - this.body.range.start; + if (this.props.width != 0) { + var rangePerPixelInv = this.props.width/range; + var xOffset = offset * rangePerPixelInv; + this.svg.style.left = (-this.props.width - xOffset) + 'px'; + } + } } - }; - /** - * Hide the popup window - */ - Popup.prototype.hide = function () { - this.hidden = true; - this.frame.style.visibility = "hidden"; + this.legendLeft.redraw(); + this.legendRight.redraw(); + return resized; }; - module.exports = Popup; - - -/***/ }, -/* 42 */ -/***/ function(module, exports, __webpack_require__) { /** - * Parse a text source containing data in DOT language into a JSON object. - * The object contains two lists: one with nodes and one with edges. - * - * DOT language reference: http://www.graphviz.org/doc/info/lang.html + * Update and redraw the graph. * - * @param {String} data Text containing a graph in DOT-notation - * @return {Object} graph An object containing two parameters: - * {Object[]} nodes - * {Object[]} edges */ - function parseDOT (data) { - dot = data; - return parseGraph(); - } - - // token types enumeration - var TOKENTYPE = { - NULL : 0, - DELIMITER : 1, - IDENTIFIER: 2, - UNKNOWN : 3 - }; - - // map with all delimiters - var DELIMITERS = { - '{': true, - '}': true, - '[': true, - ']': true, - ';': true, - '=': true, - ',': true, - - '->': true, - '--': true - }; + LineGraph.prototype._updateGraph = function () { + // reset the svg elements + DOMutil.prepareElements(this.svgElements); + if (this.props.width != 0 && this.itemsData != null) { + var group, i; + var preprocessedGroupData = {}; + var processedGroupData = {}; + var groupRanges = {}; + var changeCalled = false; - var dot = ''; // current dot file - var index = 0; // current index in dot file - var c = ''; // current token character in expr - var token = ''; // current token - var tokenType = TOKENTYPE.NULL; // type of the token + // getting group Ids + var groupIds = []; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + group = this.groups[groupId]; + if (group.visible == true && (this.options.groups.visibility[groupId] === undefined || this.options.groups.visibility[groupId] == true)) { + groupIds.push(groupId); + } + } + } + if (groupIds.length > 0) { + // this is the range of the SVG canvas + var minDate = this.body.util.toGlobalTime(-this.body.domProps.root.width); + var maxDate = this.body.util.toGlobalTime(2 * this.body.domProps.root.width); + var groupsData = {}; + // fill groups data, this only loads the data we require based on the timewindow + this._getRelevantData(groupIds, groupsData, minDate, maxDate); - /** - * Get the first character from the dot file. - * The character is stored into the char c. If the end of the dot file is - * reached, the function puts an empty string in c. - */ - function first() { - index = 0; - c = dot.charAt(0); - } + // apply sampling, if disabled, it will pass through this function. + this._applySampling(groupIds, groupsData); - /** - * Get the next character from the dot file. - * The character is stored into the char c. If the end of the dot file is - * reached, the function puts an empty string in c. - */ - function next() { - index++; - c = dot.charAt(index); - } + // we transform the X coordinates to detect collisions + for (i = 0; i < groupIds.length; i++) { + preprocessedGroupData[groupIds[i]] = this._convertXcoordinates(groupsData[groupIds[i]]); + } - /** - * Preview the next character from the dot file. - * @return {String} cNext - */ - function nextPreview() { - return dot.charAt(index + 1); - } + // now all needed data has been collected we start the processing. + this._getYRanges(groupIds, preprocessedGroupData, groupRanges); - /** - * Test whether given character is alphabetic or numeric - * @param {String} c - * @return {Boolean} isAlphaNumeric - */ - var regexAlphaNumeric = /[a-zA-Z_0-9.:#]/; - function isAlphaNumeric(c) { - return regexAlphaNumeric.test(c); - } + // update the Y axis first, we use this data to draw at the correct Y points + // changeCalled is required to clean the SVG on a change emit. + changeCalled = this._updateYAxis(groupIds, groupRanges); + var MAX_CYCLES = 5; + if (changeCalled == true && this.COUNTER < MAX_CYCLES) { + DOMutil.cleanupElements(this.svgElements); + this.abortedGraphUpdate = true; + this.COUNTER++; + this.body.emitter.emit('change'); + return true; + } + else { + if (this.COUNTER > MAX_CYCLES) { + console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle.") + } + this.COUNTER = 0; + this.abortedGraphUpdate = false; - /** - * Merge all properties of object b into object b - * @param {Object} a - * @param {Object} b - * @return {Object} a - */ - function merge (a, b) { - if (!a) { - a = {}; - } + // With the yAxis scaled correctly, use this to get the Y values of the points. + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + processedGroupData[groupIds[i]] = this._convertYcoordinates(groupsData[groupIds[i]], group); + } - if (b) { - for (var name in b) { - if (b.hasOwnProperty(name)) { - a[name] = b[name]; + // draw the groups + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (group.options.style != 'bar') { // bar needs to be drawn enmasse + group.draw(processedGroupData[groupIds[i]], group, this.framework); + } + } + BarGraphFunctions.draw(groupIds, processedGroupData, this.framework); } } } - return a; - } + + // cleanup unused svg elements + DOMutil.cleanupElements(this.svgElements); + return false; + }; + /** - * Set a value in an object, where the provided parameter name can be a - * path with nested parameters. For example: - * - * var obj = {a: 2}; - * setValue(obj, 'b.c', 3); // obj = {a: 2, b: {c: 3}} + * first select and preprocess the data from the datasets. + * the groups have their preselection of data, we now loop over this data to see + * what data we need to draw. Sorted data is much faster. + * more optimization is possible by doing the sampling before and using the binary search + * to find the end date to determine the increment. * - * @param {Object} obj - * @param {String} path A parameter name or dot-separated parameter path, - * like "color.highlight.border". - * @param {*} value + * @param {array} groupIds + * @param {object} groupsData + * @param {date} minDate + * @param {date} maxDate + * @private */ - function setValue(obj, path, value) { - var keys = path.split('.'); - var o = obj; - while (keys.length) { - var key = keys.shift(); - if (keys.length) { - // this isn't the end point - if (!o[key]) { - o[key] = {}; + LineGraph.prototype._getRelevantData = function (groupIds, groupsData, minDate, maxDate) { + var group, i, j, item; + if (groupIds.length > 0) { + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + groupsData[groupIds[i]] = []; + var dataContainer = groupsData[groupIds[i]]; + // optimization for sorted data + if (group.options.sort == true) { + var guess = Math.max(0, util.binarySearchValue(group.itemsData, minDate, 'x', 'before')); + for (j = guess; j < group.itemsData.length; j++) { + item = group.itemsData[j]; + if (item !== undefined) { + if (item.x > maxDate) { + dataContainer.push(item); + break; + } + else { + dataContainer.push(item); + } + } + } + } + else { + for (j = 0; j < group.itemsData.length; j++) { + item = group.itemsData[j]; + if (item !== undefined) { + if (item.x > minDate && item.x < maxDate) { + dataContainer.push(item); + } + } + } } - o = o[key]; - } - else { - // this is the end point - o[key] = value; } } - } + }; + /** - * Add a node to a graph object. If there is already a node with - * the same id, their attributes will be merged. - * @param {Object} graph - * @param {Object} node + * + * @param groupIds + * @param groupsData + * @private */ - function addNode(graph, node) { - var i, len; - var current = null; - - // find root graph (in case of subgraph) - var graphs = [graph]; // list with all graphs from current graph to root graph - var root = graph; - while (root.parent) { - graphs.push(root.parent); - root = root.parent; - } - - // find existing node (at root level) by its id - if (root.nodes) { - for (i = 0, len = root.nodes.length; i < len; i++) { - if (node.id === root.nodes[i].id) { - current = root.nodes[i]; - break; - } - } - } + LineGraph.prototype._applySampling = function (groupIds, groupsData) { + var group; + if (groupIds.length > 0) { + for (var i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (group.options.sampling == true) { + var dataContainer = groupsData[groupIds[i]]; + if (dataContainer.length > 0) { + var increment = 1; + var amountOfPoints = dataContainer.length; - if (!current) { - // this is a new node - current = { - id: node.id - }; - if (graph.node) { - // clone default attributes - current.attr = merge(current.attr, graph.node); - } - } + // the global screen is used because changing the width of the yAxis may affect the increment, resulting in an endless loop + // of width changing of the yAxis. + var xDistance = this.body.util.toGlobalScreen(dataContainer[dataContainer.length - 1].x) - this.body.util.toGlobalScreen(dataContainer[0].x); + var pointsPerPixel = amountOfPoints / xDistance; + increment = Math.min(Math.ceil(0.2 * amountOfPoints), Math.max(1, Math.round(pointsPerPixel))); - // add node to this (sub)graph and all its parent graphs - for (i = graphs.length - 1; i >= 0; i--) { - var g = graphs[i]; + var sampledData = []; + for (var j = 0; j < amountOfPoints; j += increment) { + sampledData.push(dataContainer[j]); - if (!g.nodes) { - g.nodes = []; - } - if (g.nodes.indexOf(current) == -1) { - g.nodes.push(current); + } + groupsData[groupIds[i]] = sampledData; + } + } } } + }; - // merge attributes - if (node.attr) { - current.attr = merge(current.attr, node.attr); - } - } - - /** - * Add an edge to a graph object - * @param {Object} graph - * @param {Object} edge - */ - function addEdge(graph, edge) { - if (!graph.edges) { - graph.edges = []; - } - graph.edges.push(edge); - if (graph.edge) { - var attr = merge({}, graph.edge); // clone default attributes - edge.attr = merge(attr, edge.attr); // merge attributes - } - } /** - * Create an edge to a graph object - * @param {Object} graph - * @param {String | Number | Object} from - * @param {String | Number | Object} to - * @param {String} type - * @param {Object | null} attr - * @return {Object} edge + * + * + * @param {array} groupIds + * @param {object} groupsData + * @param {object} groupRanges | this is being filled here + * @private */ - function createEdge(graph, from, to, type, attr) { - var edge = { - from: from, - to: to, - type: type - }; + LineGraph.prototype._getYRanges = function (groupIds, groupsData, groupRanges) { + var groupData, group, i; + var barCombinedDataLeft = []; + var barCombinedDataRight = []; + var options; + if (groupIds.length > 0) { + for (i = 0; i < groupIds.length; i++) { + groupData = groupsData[groupIds[i]]; + options = this.groups[groupIds[i]].options; + if (groupData.length > 0) { + group = this.groups[groupIds[i]]; + // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. + if (options.barChart.handleOverlap == 'stack' && options.style == 'bar') { + if (options.yAxisOrientation == 'left') {barCombinedDataLeft = barCombinedDataLeft.concat(group.getYRange(groupData)) ;} + else {barCombinedDataRight = barCombinedDataRight.concat(group.getYRange(groupData));} + } + else { + groupRanges[groupIds[i]] = group.getYRange(groupData,groupIds[i]); + } + } + } - if (graph.edge) { - edge.attr = merge({}, graph.edge); // clone default attributes + // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. + BarGraphFunctions.getStackedBarYRange(barCombinedDataLeft , groupRanges, groupIds, '__barchartLeft' , 'left' ); + BarGraphFunctions.getStackedBarYRange(barCombinedDataRight, groupRanges, groupIds, '__barchartRight', 'right'); } - edge.attr = merge(edge.attr || {}, attr); // merge attributes + }; - return edge; - } /** - * Get next token in the current dot file. - * The token and token type are available as token and tokenType + * this sets the Y ranges for the Y axis. It also determines which of the axis should be shown or hidden. + * @param {Array} groupIds + * @param {Object} groupRanges + * @private */ - function getToken() { - tokenType = TOKENTYPE.NULL; - token = ''; - - // skip over whitespaces - while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { // space, tab, enter - next(); - } - - do { - var isComment = false; - - // skip comment - if (c == '#') { - // find the previous non-space character - var i = index - 1; - while (dot.charAt(i) == ' ' || dot.charAt(i) == '\t') { - i--; - } - if (dot.charAt(i) == '\n' || dot.charAt(i) == '') { - // the # is at the start of a line, this is indeed a line comment - while (c != '' && c != '\n') { - next(); - } - isComment = true; + LineGraph.prototype._updateYAxis = function (groupIds, groupRanges) { + var resized = false; + var yAxisLeftUsed = false; + var yAxisRightUsed = false; + var minLeft = 1e9, minRight = 1e9, maxLeft = -1e9, maxRight = -1e9, minVal, maxVal; + // if groups are present + if (groupIds.length > 0) { + // this is here to make sure that if there are no items in the axis but there are groups, that there is no infinite draw/redraw loop. + for (var i = 0; i < groupIds.length; i++) { + var group = this.groups[groupIds[i]]; + if (group && group.options.yAxisOrientation != 'right') { + yAxisLeftUsed = true; + minLeft = 0; + maxLeft = 0; } - } - if (c == '/' && nextPreview() == '/') { - // skip line comment - while (c != '' && c != '\n') { - next(); + else if (group && group.options.yAxisOrientation) { + yAxisRightUsed = true; + minRight = 0; + maxRight = 0; } - isComment = true; } - if (c == '/' && nextPreview() == '*') { - // skip block comment - while (c != '') { - if (c == '*' && nextPreview() == '/') { - // end of block comment found. skip these last two characters - next(); - next(); - break; - } - else { - next(); + + // if there are items: + for (var i = 0; i < groupIds.length; i++) { + if (groupRanges.hasOwnProperty(groupIds[i])) { + if (groupRanges[groupIds[i]].ignore !== true) { + minVal = groupRanges[groupIds[i]].min; + maxVal = groupRanges[groupIds[i]].max; + + if (groupRanges[groupIds[i]].yAxisOrientation != 'right') { + yAxisLeftUsed = true; + minLeft = minLeft > minVal ? minVal : minLeft; + maxLeft = maxLeft < maxVal ? maxVal : maxLeft; + } + else { + yAxisRightUsed = true; + minRight = minRight > minVal ? minVal : minRight; + maxRight = maxRight < maxVal ? maxVal : maxRight; + } } } - isComment = true; } - - // skip over whitespaces - while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { // space, tab, enter - next(); + + if (yAxisLeftUsed == true) { + this.yAxisLeft.setRange(minLeft, maxLeft); + } + if (yAxisRightUsed == true) { + this.yAxisRight.setRange(minRight, maxRight); } } - while (isComment); + resized = this._toggleAxisVisiblity(yAxisLeftUsed , this.yAxisLeft) || resized; + resized = this._toggleAxisVisiblity(yAxisRightUsed, this.yAxisRight) || resized; - // check for end of dot file - if (c == '') { - // token is still empty - tokenType = TOKENTYPE.DELIMITER; - return; + if (yAxisRightUsed == true && yAxisLeftUsed == true) { + this.yAxisLeft.drawIcons = true; + this.yAxisRight.drawIcons = true; + } + else { + this.yAxisLeft.drawIcons = false; + this.yAxisRight.drawIcons = false; } + this.yAxisRight.master = !yAxisLeftUsed; + if (this.yAxisRight.master == false) { + if (yAxisRightUsed == true) {this.yAxisLeft.lineOffset = this.yAxisRight.width;} + else {this.yAxisLeft.lineOffset = 0;} - // check for delimiters consisting of 2 characters - var c2 = c + nextPreview(); - if (DELIMITERS[c2]) { - tokenType = TOKENTYPE.DELIMITER; - token = c2; - next(); - next(); - return; + resized = this.yAxisLeft.redraw() || resized; + this.yAxisRight.stepPixelsForced = this.yAxisLeft.stepPixels; + this.yAxisRight.zeroCrossing = this.yAxisLeft.zeroCrossing; + resized = this.yAxisRight.redraw() || resized; + } + else { + resized = this.yAxisRight.redraw() || resized; } - // check for delimiters consisting of 1 character - if (DELIMITERS[c]) { - tokenType = TOKENTYPE.DELIMITER; - token = c; - next(); - return; + // clean the accumulated lists + if (groupIds.indexOf('__barchartLeft') != -1) { + groupIds.splice(groupIds.indexOf('__barchartLeft'),1); + } + if (groupIds.indexOf('__barchartRight') != -1) { + groupIds.splice(groupIds.indexOf('__barchartRight'),1); } - // check for an identifier (number or string) - // TODO: more precise parsing of numbers/strings (and the port separator ':') - if (isAlphaNumeric(c) || c == '-') { - token += c; - next(); + return resized; + }; - while (isAlphaNumeric(c)) { - token += c; - next(); - } - if (token == 'false') { - token = false; // convert to boolean - } - else if (token == 'true') { - token = true; // convert to boolean - } - else if (!isNaN(Number(token))) { - token = Number(token); // convert to number - } - tokenType = TOKENTYPE.IDENTIFIER; - return; - } - // check for a string enclosed by double quotes - if (c == '"') { - next(); - while (c != '' && (c != '"' || (c == '"' && nextPreview() == '"'))) { - token += c; - if (c == '"') { // skip the escape character - next(); - } - next(); + /** + * This shows or hides the Y axis if needed. If there is a change, the changed event is emitted by the updateYAxis function + * + * @param {boolean} axisUsed + * @returns {boolean} + * @private + * @param axis + */ + LineGraph.prototype._toggleAxisVisiblity = function (axisUsed, axis) { + var changed = false; + if (axisUsed == false) { + if (axis.dom.frame.parentNode && axis.hidden == false) { + axis.hide() + changed = true; } - if (c != '"') { - throw newSyntaxError('End of string " expected'); + } + else { + if (!axis.dom.frame.parentNode && axis.hidden == true) { + axis.show(); + changed = true; } - next(); - tokenType = TOKENTYPE.IDENTIFIER; - return; } + return changed; + }; - // something unknown is found, wrong characters, a syntax error - tokenType = TOKENTYPE.UNKNOWN; - while (c != '') { - token += c; - next(); - } - throw new SyntaxError('Syntax error in part "' + chop(token, 30) + '"'); - } /** - * Parse a graph. - * @returns {Object} graph + * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the + * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for + * the yAxis. + * + * @param datapoints + * @returns {Array} + * @private */ - function parseGraph() { - var graph = {}; - - first(); - getToken(); + LineGraph.prototype._convertXcoordinates = function (datapoints) { + var extractedData = []; + var xValue, yValue; + var toScreen = this.body.util.toScreen; - // optional strict keyword - if (token == 'strict') { - graph.strict = true; - getToken(); + for (var i = 0; i < datapoints.length; i++) { + xValue = toScreen(datapoints[i].x) + this.props.width; + yValue = datapoints[i].y; + extractedData.push({x: xValue, y: yValue}); } - // graph or digraph keyword - if (token == 'graph' || token == 'digraph') { - graph.type = token; - getToken(); - } + return extractedData; + }; - // optional graph id - if (tokenType == TOKENTYPE.IDENTIFIER) { - graph.id = token; - getToken(); + + /** + * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the + * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for + * the yAxis. + * + * @param datapoints + * @param group + * @returns {Array} + * @private + */ + LineGraph.prototype._convertYcoordinates = function (datapoints, group) { + var extractedData = []; + var xValue, yValue; + var toScreen = this.body.util.toScreen; + var axis = this.yAxisLeft; + var svgHeight = Number(this.svg.style.height.replace('px','')); + if (group.options.yAxisOrientation == 'right') { + axis = this.yAxisRight; } - // open angle bracket - if (token != '{') { - throw newSyntaxError('Angle bracket { expected'); + for (var i = 0; i < datapoints.length; i++) { + var labelValue; + //if (datapoints[i].label) { + // labelValue = datapoints[i].label; + //} + //else { + // labelValue = null; + //} + labelValue = datapoints[i].label ? datapoints[i].label : null; + xValue = toScreen(datapoints[i].x) + this.props.width; + yValue = Math.round(axis.convertValue(datapoints[i].y)); + extractedData.push({x: xValue, y: yValue, label:labelValue}); } - getToken(); - // statements - parseStatements(graph); + group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0))); - // close angle bracket - if (token != '}') { - throw newSyntaxError('Angle bracket } expected'); - } - getToken(); + return extractedData; + }; - // end of file - if (token !== '') { - throw newSyntaxError('End of file expected'); - } - getToken(); - // remove temporary default properties - delete graph.node; - delete graph.edge; - delete graph.graph; + module.exports = LineGraph; - return graph; - } + +/***/ }, +/* 43 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(6); + var Component = __webpack_require__(23); + var DataStep = __webpack_require__(44); /** - * Parse a list with statements. - * @param {Object} graph + * A horizontal time axis + * @param {Object} [options] See DataAxis.setOptions for the available + * options. + * @constructor DataAxis + * @extends Component + * @param body */ - function parseStatements (graph) { - while (token !== '' && token != '}') { - parseStatement(graph); - if (token == ';') { - getToken(); + function DataAxis (body, options, svg, linegraphOptions) { + this.id = util.randomUUID(); + this.body = body; + + this.defaultOptions = { + orientation: 'left', // supported: 'left', 'right' + showMinorLabels: true, + showMajorLabels: true, + icons: true, + majorLinesOffset: 7, + minorLinesOffset: 4, + labelOffsetX: 10, + labelOffsetY: 2, + iconWidth: 20, + width: '40px', + visible: true, + alignZeros: true, + customRange: { + left: {min:undefined, max:undefined}, + right: {min:undefined, max:undefined} + }, + title: { + left: {text:undefined}, + right: {text:undefined} + }, + format: { + left: {decimals: undefined}, + right: {decimals: undefined} } - } - } + }; - /** - * Parse a single statement. Can be a an attribute statement, node - * statement, a series of node statements and edge statements, or a - * parameter. - * @param {Object} graph - */ - function parseStatement(graph) { - // parse subgraph - var subgraph = parseSubgraph(graph); - if (subgraph) { - // edge statements - parseEdge(graph, subgraph); + this.linegraphOptions = linegraphOptions; + this.linegraphSVG = svg; + this.props = {}; + this.DOMelements = { // dynamic elements + lines: {}, + labels: {}, + title: {} + }; - return; - } + this.dom = {}; - // parse an attribute statement - var attr = parseAttributeStatement(graph); - if (attr) { - return; - } + this.range = {start:0, end:0}; - // parse node - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Identifier expected'); - } - var id = token; // id can be a string or a number - getToken(); + this.options = util.extend({}, this.defaultOptions); + this.conversionFactor = 1; - if (token == '=') { - // id statement - getToken(); - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Identifier expected'); - } - graph[id] = token; - getToken(); - // TODO: implement comma separated list with "a_list: ID=ID [','] [a_list] " - } - else { - parseNodeStatement(graph, id); - } + this.setOptions(options); + this.width = Number(('' + this.options.width).replace("px","")); + this.minWidth = this.width; + this.height = this.linegraphSVG.offsetHeight; + this.hidden = false; + + this.stepPixels = 25; + this.stepPixelsForced = 25; + this.zeroCrossing = -1; + + this.lineOffset = 0; + this.master = true; + this.svgElements = {}; + this.iconsRemoved = false; + + + this.groups = {}; + this.amountOfGroups = 0; + + // create the HTML DOM + this._create(); + + var me = this; + this.body.emitter.on("verticalDrag", function() { + me.dom.lineContainer.style.top = me.body.domProps.scrollTop + 'px'; + }); } - /** - * Parse a subgraph - * @param {Object} graph parent graph object - * @return {Object | null} subgraph - */ - function parseSubgraph (graph) { - var subgraph = null; + DataAxis.prototype = new Component(); - // optional subgraph keyword - if (token == 'subgraph') { - subgraph = {}; - subgraph.type = 'subgraph'; - getToken(); - // optional graph id - if (tokenType == TOKENTYPE.IDENTIFIER) { - subgraph.id = token; - getToken(); - } + DataAxis.prototype.addGroup = function(label, graphOptions) { + if (!this.groups.hasOwnProperty(label)) { + this.groups[label] = graphOptions; } + this.amountOfGroups += 1; + }; - // open angle bracket - if (token == '{') { - getToken(); + DataAxis.prototype.updateGroup = function(label, graphOptions) { + this.groups[label] = graphOptions; + }; - if (!subgraph) { - subgraph = {}; - } - subgraph.parent = graph; - subgraph.node = graph.node; - subgraph.edge = graph.edge; - subgraph.graph = graph.graph; + DataAxis.prototype.removeGroup = function(label) { + if (this.groups.hasOwnProperty(label)) { + delete this.groups[label]; + this.amountOfGroups -= 1; + } + }; - // statements - parseStatements(subgraph); - // close angle bracket - if (token != '}') { - throw newSyntaxError('Angle bracket } expected'); + DataAxis.prototype.setOptions = function (options) { + if (options) { + var redraw = false; + if (this.options.orientation != options.orientation && options.orientation !== undefined) { + redraw = true; } - getToken(); + var fields = [ + 'orientation', + 'showMinorLabels', + 'showMajorLabels', + 'icons', + 'majorLinesOffset', + 'minorLinesOffset', + 'labelOffsetX', + 'labelOffsetY', + 'iconWidth', + 'width', + 'visible', + 'customRange', + 'title', + 'format', + 'alignZeros' + ]; + util.selectiveExtend(fields, this.options, options); - // remove temporary default properties - delete subgraph.node; - delete subgraph.edge; - delete subgraph.graph; - delete subgraph.parent; + this.minWidth = Number(('' + this.options.width).replace("px","")); - // register at the parent graph - if (!graph.subgraphs) { - graph.subgraphs = []; + if (redraw == true && this.dom.frame) { + this.hide(); + this.show(); } - graph.subgraphs.push(subgraph); } + }; - return subgraph; - } /** - * parse an attribute statement like "node [shape=circle fontSize=16]". - * Available keywords are 'node', 'edge', 'graph'. - * The previous list with default attributes will be replaced - * @param {Object} graph - * @returns {String | null} keyword Returns the name of the parsed attribute - * (node, edge, graph), or null if nothing - * is parsed. + * Create the HTML DOM for the DataAxis */ - function parseAttributeStatement (graph) { - // attribute statements - if (token == 'node') { - getToken(); + DataAxis.prototype._create = function() { + this.dom.frame = document.createElement('div'); + this.dom.frame.style.width = this.options.width; + this.dom.frame.style.height = this.height; - // node attributes - graph.node = parseAttributeList(); - return 'node'; - } - else if (token == 'edge') { - getToken(); + this.dom.lineContainer = document.createElement('div'); + this.dom.lineContainer.style.width = '100%'; + this.dom.lineContainer.style.height = this.height; + this.dom.lineContainer.style.position = 'relative'; - // edge attributes - graph.edge = parseAttributeList(); - return 'edge'; - } - else if (token == 'graph') { - getToken(); + // create svg element for graph drawing. + this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); + this.svg.style.position = "absolute"; + this.svg.style.top = '0px'; + this.svg.style.height = '100%'; + this.svg.style.width = '100%'; + this.svg.style.display = "block"; + this.dom.frame.appendChild(this.svg); + }; - // graph attributes - graph.graph = parseAttributeList(); - return 'graph'; - } + DataAxis.prototype._redrawGroupIcons = function () { + DOMutil.prepareElements(this.svgElements); - return null; - } + var x; + var iconWidth = this.options.iconWidth; + var iconHeight = 15; + var iconOffset = 4; + var y = iconOffset + 0.5 * iconHeight; - /** - * parse a node statement - * @param {Object} graph - * @param {String | Number} id - */ - function parseNodeStatement(graph, id) { - // node statement - var node = { - id: id - }; - var attr = parseAttributeList(); - if (attr) { - node.attr = attr; + if (this.options.orientation == 'left') { + x = iconOffset; + } + else { + x = this.width - iconWidth - iconOffset; } - addNode(graph, node); - - // edge statements - parseEdge(graph, id); - } - - /** - * Parse an edge or a series of edges - * @param {Object} graph - * @param {String | Number} from Id of the from node - */ - function parseEdge(graph, from) { - while (token == '->' || token == '--') { - var to; - var type = token; - getToken(); - var subgraph = parseSubgraph(graph); - if (subgraph) { - to = subgraph; - } - else { - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Identifier or subgraph expected'); + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); + y += iconHeight + iconOffset; } - to = token; - addNode(graph, { - id: to - }); - getToken(); } + } - // parse edge attributes - var attr = parseAttributeList(); - - // create edge - var edge = createEdge(graph, from, to, type, attr); - addEdge(graph, edge); + DOMutil.cleanupElements(this.svgElements); + this.iconsRemoved = false; + }; - from = to; + DataAxis.prototype._cleanupIcons = function() { + if (this.iconsRemoved == false) { + DOMutil.prepareElements(this.svgElements); + DOMutil.cleanupElements(this.svgElements); + this.iconsRemoved = true; } } /** - * Parse a set with attributes, - * for example [label="1.000", shape=solid] - * @return {Object | null} attr + * Create the HTML DOM for the DataAxis */ - function parseAttributeList() { - var attr = null; - - while (token == '[') { - getToken(); - attr = {}; - while (token !== '' && token != ']') { - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Attribute name expected'); - } - var name = token; - - getToken(); - if (token != '=') { - throw newSyntaxError('Equal sign = expected'); - } - getToken(); - - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Attribute value expected'); - } - var value = token; - setValue(attr, name, value); // name can be a path - - getToken(); - if (token ==',') { - getToken(); - } + DataAxis.prototype.show = function() { + this.hidden = false; + if (!this.dom.frame.parentNode) { + if (this.options.orientation == 'left') { + this.body.dom.left.appendChild(this.dom.frame); } - - if (token != ']') { - throw newSyntaxError('Bracket ] expected'); + else { + this.body.dom.right.appendChild(this.dom.frame); } - getToken(); } - return attr; - } + if (!this.dom.lineContainer.parentNode) { + this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer); + } + }; /** - * Create a syntax error with extra information on current token and index. - * @param {String} message - * @returns {SyntaxError} err + * Create the HTML DOM for the DataAxis */ - function newSyntaxError(message) { - return new SyntaxError(message + ', got "' + chop(token, 30) + '" (char ' + index + ')'); - } + DataAxis.prototype.hide = function() { + this.hidden = true; + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); + } - /** - * Chop off text after a maximum length - * @param {String} text - * @param {Number} maxLength - * @returns {String} - */ - function chop (text, maxLength) { - return (text.length <= maxLength) ? text : (text.substr(0, 27) + '...'); - } + if (this.dom.lineContainer.parentNode) { + this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer); + } + }; /** - * Execute a function fn for each pair of elements in two arrays - * @param {Array | *} array1 - * @param {Array | *} array2 - * @param {function} fn + * Set a range (start and end) + * @param end + * @param start + * @param end */ - function forEach2(array1, array2, fn) { - if (Array.isArray(array1)) { - array1.forEach(function (elem1) { - if (Array.isArray(array2)) { - array2.forEach(function (elem2) { - fn(elem1, elem2); - }); - } - else { - fn(elem1, array2); - } - }); - } - else { - if (Array.isArray(array2)) { - array2.forEach(function (elem2) { - fn(array1, elem2); - }); - } - else { - fn(array1, array2); + DataAxis.prototype.setRange = function (start, end) { + if (this.master == false && this.options.alignZeros == true && this.zeroCrossing != -1) { + if (start > 0) { + start = 0; } } - } + this.range.start = start; + this.range.end = end; + }; /** - * Convert a string containing a graph in DOT language into a map containing - * with nodes and edges in the format of graph. - * @param {String} data Text containing a graph in DOT-notation - * @return {Object} graphData + * Repaint the component + * @return {boolean} Returns true if the component is resized */ - function DOTToGraph (data) { - // parse the DOT file - var dotData = parseDOT(data); - var graphData = { - nodes: [], - edges: [], - options: {} - }; + DataAxis.prototype.redraw = function () { + var resized = false; + var activeGroups = 0; + + // Make sure the line container adheres to the vertical scrolling. + this.dom.lineContainer.style.top = this.body.domProps.scrollTop + 'px'; - // copy the nodes - if (dotData.nodes) { - dotData.nodes.forEach(function (dotNode) { - var graphNode = { - id: dotNode.id, - label: String(dotNode.label || dotNode.id) - }; - merge(graphNode, dotNode.attr); - if (graphNode.image) { - graphNode.shape = 'image'; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + activeGroups++; } - graphData.nodes.push(graphNode); - }); - } - - // copy the edges - if (dotData.edges) { - /** - * Convert an edge in DOT format to an edge with VisGraph format - * @param {Object} dotEdge - * @returns {Object} graphEdge - */ - var convertEdge = function (dotEdge) { - var graphEdge = { - from: dotEdge.from, - to: dotEdge.to - }; - merge(graphEdge, dotEdge.attr); - graphEdge.style = (dotEdge.type == '->') ? 'arrow' : 'line'; - return graphEdge; } - - dotData.edges.forEach(function (dotEdge) { - var from, to; - if (dotEdge.from instanceof Object) { - from = dotEdge.from.nodes; - } - else { - from = { - id: dotEdge.from - } - } - - if (dotEdge.to instanceof Object) { - to = dotEdge.to.nodes; - } - else { - to = { - id: dotEdge.to - } - } - - if (dotEdge.from instanceof Object && dotEdge.from.edges) { - dotEdge.from.edges.forEach(function (subEdge) { - var graphEdge = convertEdge(subEdge); - graphData.edges.push(graphEdge); - }); - } - - forEach2(from, to, function (from, to) { - var subEdge = createEdge(graphData, from.id, to.id, dotEdge.type, dotEdge.attr); - var graphEdge = convertEdge(subEdge); - graphData.edges.push(graphEdge); - }); - - if (dotEdge.to instanceof Object && dotEdge.to.edges) { - dotEdge.to.edges.forEach(function (subEdge) { - var graphEdge = convertEdge(subEdge); - graphData.edges.push(graphEdge); - }); - } - }); } - - // copy the options - if (dotData.attr) { - graphData.options = dotData.attr; + if (this.amountOfGroups == 0 || activeGroups == 0) { + this.hide(); } + else { + this.show(); + this.height = Number(this.linegraphSVG.style.height.replace("px","")); - return graphData; - } + // svg offsetheight did not work in firefox and explorer... + this.dom.lineContainer.style.height = this.height + 'px'; + this.width = this.options.visible == true ? Number(('' + this.options.width).replace("px","")) : 0; - // exports - exports.parseDOT = parseDOT; - exports.DOTToGraph = DOTToGraph; + var props = this.props; + var frame = this.dom.frame; + // update classname + frame.className = 'dataaxis'; -/***/ }, -/* 43 */ -/***/ function(module, exports, __webpack_require__) { + // calculate character width and height + this._calculateCharSize(); - - function parseGephi(gephiJSON, options) { - var edges = []; - var nodes = []; - this.options = { - edges: { - inheritColor: true - }, - nodes: { - allowedToMove: false, - parseColor: false - } - }; + var orientation = this.options.orientation; + var showMinorLabels = this.options.showMinorLabels; + var showMajorLabels = this.options.showMajorLabels; - if (options !== undefined) { - this.options.nodes['allowedToMove'] = options.allowedToMove | false; - this.options.nodes['parseColor'] = options.parseColor | false; - this.options.edges['inheritColor'] = options.inheritColor | true; - } + // determine the width and height of the elements for the axis + props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; + props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; - var gEdges = gephiJSON.edges; - var gNodes = gephiJSON.nodes; - for (var i = 0; i < gEdges.length; i++) { - var edge = {}; - var gEdge = gEdges[i]; - edge['id'] = gEdge.id; - edge['from'] = gEdge.source; - edge['to'] = gEdge.target; - edge['attributes'] = gEdge.attributes; - // edge['value'] = gEdge.attributes !== undefined ? gEdge.attributes.Weight : undefined; - // edge['width'] = edge['value'] !== undefined ? undefined : edgegEdge.size; - edge['color'] = gEdge.color; - edge['inheritColor'] = edge['color'] !== undefined ? false : this.options.inheritColor; - edges.push(edge); - } + props.minorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.minorLinesOffset; + props.minorLineHeight = 1; + props.majorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.majorLinesOffset; + props.majorLineHeight = 1; - for (var i = 0; i < gNodes.length; i++) { - var node = {}; - var gNode = gNodes[i]; - node['id'] = gNode.id; - node['attributes'] = gNode.attributes; - node['x'] = gNode.x; - node['y'] = gNode.y; - node['label'] = gNode.label; - if (this.options.nodes.parseColor == true) { - node['color'] = gNode.color; + // take frame offline while updating (is almost twice as fast) + if (orientation == 'left') { + frame.style.top = '0'; + frame.style.left = '0'; + frame.style.bottom = ''; + frame.style.width = this.width + 'px'; + frame.style.height = this.height + "px"; + this.props.width = this.body.domProps.left.width; + this.props.height = this.body.domProps.left.height; } - else { - node['color'] = gNode.color !== undefined ? {background:gNode.color, border:gNode.color} : undefined; + else { // right + frame.style.top = ''; + frame.style.bottom = '0'; + frame.style.left = '0'; + frame.style.width = this.width + 'px'; + frame.style.height = this.height + "px"; + this.props.width = this.body.domProps.right.width; + this.props.height = this.body.domProps.right.height; } - node['radius'] = gNode.size; - node['allowedToMoveX'] = this.options.nodes.allowedToMove; - node['allowedToMoveY'] = this.options.nodes.allowedToMove; - nodes.push(node); - } - - return {nodes:nodes, edges:edges}; - } - - exports.parseGephi = parseGephi; - -/***/ }, -/* 44 */ -/***/ function(module, exports, __webpack_require__) { - - // first check if moment.js is already loaded in the browser window, if so, - // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(59); + resized = this._redrawLabels(); + resized = this._isResized() || resized; -/***/ }, -/* 45 */ -/***/ function(module, exports, __webpack_require__) { + if (this.options.icons == true) { + this._redrawGroupIcons(); + } + else { + this._cleanupIcons(); + } - // Only load hammer.js when in a browser environment - // (loading hammer.js in a node.js environment gives errors) - if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(58); - } - else { - module.exports = function () { - throw Error('hammer.js is only available in a browser, not in node.js.'); + this._redrawTitle(orientation); } - } - - -/***/ }, -/* 46 */ -/***/ function(module, exports, __webpack_require__) { - - var Emitter = __webpack_require__(56); - var Hammer = __webpack_require__(45); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(3); - var DataView = __webpack_require__(4); - var Range = __webpack_require__(17); - var ItemSet = __webpack_require__(32); - var TimeAxis = __webpack_require__(35); - var Activator = __webpack_require__(53); - var DateUtil = __webpack_require__(15); - var CustomTime = __webpack_require__(27); - - /** - * Create a timeline visualization - * @param {HTMLElement} container - * @param {vis.DataSet | Array | google.visualization.DataTable} [items] - * @param {Object} [options] See Core.setOptions for the available options. - * @constructor - */ - function Core () {} - - // turn Core into an event emitter - Emitter(Core.prototype); + return resized; + }; /** - * Create the main DOM for the Core: a root panel containing left, right, - * top, bottom, content, and background panel. - * @param {Element} container The container element where the Core will - * be attached. + * Repaint major and minor text labels and vertical grid lines * @private */ - Core.prototype._create = function (container) { - this.dom = {}; + DataAxis.prototype._redrawLabels = function () { + var resized = false; + DOMutil.prepareElements(this.DOMelements.lines); + DOMutil.prepareElements(this.DOMelements.labels); - this.dom.root = document.createElement('div'); - this.dom.background = document.createElement('div'); - this.dom.backgroundVertical = document.createElement('div'); - this.dom.backgroundHorizontal = document.createElement('div'); - this.dom.centerContainer = document.createElement('div'); - this.dom.leftContainer = document.createElement('div'); - this.dom.rightContainer = document.createElement('div'); - this.dom.center = document.createElement('div'); - this.dom.left = document.createElement('div'); - this.dom.right = document.createElement('div'); - this.dom.top = document.createElement('div'); - this.dom.bottom = document.createElement('div'); - this.dom.shadowTop = document.createElement('div'); - this.dom.shadowBottom = document.createElement('div'); - this.dom.shadowTopLeft = document.createElement('div'); - this.dom.shadowBottomLeft = document.createElement('div'); - this.dom.shadowTopRight = document.createElement('div'); - this.dom.shadowBottomRight = document.createElement('div'); + var orientation = this.options['orientation']; - this.dom.root.className = 'vis timeline root'; - this.dom.background.className = 'vispanel background'; - this.dom.backgroundVertical.className = 'vispanel background vertical'; - this.dom.backgroundHorizontal.className = 'vispanel background horizontal'; - this.dom.centerContainer.className = 'vispanel center'; - this.dom.leftContainer.className = 'vispanel left'; - this.dom.rightContainer.className = 'vispanel right'; - this.dom.top.className = 'vispanel top'; - this.dom.bottom.className = 'vispanel bottom'; - this.dom.left.className = 'content'; - this.dom.center.className = 'content'; - this.dom.right.className = 'content'; - this.dom.shadowTop.className = 'shadow top'; - this.dom.shadowBottom.className = 'shadow bottom'; - this.dom.shadowTopLeft.className = 'shadow top'; - this.dom.shadowBottomLeft.className = 'shadow bottom'; - this.dom.shadowTopRight.className = 'shadow top'; - this.dom.shadowBottomRight.className = 'shadow bottom'; + // calculate range and step (step such that we have space for 7 characters per label) + var minimumStep = this.master ? this.props.majorCharHeight || 10 : this.stepPixelsForced; - this.dom.root.appendChild(this.dom.background); - this.dom.root.appendChild(this.dom.backgroundVertical); - this.dom.root.appendChild(this.dom.backgroundHorizontal); - this.dom.root.appendChild(this.dom.centerContainer); - this.dom.root.appendChild(this.dom.leftContainer); - this.dom.root.appendChild(this.dom.rightContainer); - this.dom.root.appendChild(this.dom.top); - this.dom.root.appendChild(this.dom.bottom); + var step = new DataStep( + this.range.start, + this.range.end, + minimumStep, + this.dom.frame.offsetHeight, + this.options.customRange[this.options.orientation], + this.master == false && this.options.alignZeros // doess the step have to align zeros? only if not master and the options is on + ); - this.dom.centerContainer.appendChild(this.dom.center); - this.dom.leftContainer.appendChild(this.dom.left); - this.dom.rightContainer.appendChild(this.dom.right); + this.step = step; + // get the distance in pixels for a step + // dead space is space that is "left over" after a step + var stepPixels = (this.dom.frame.offsetHeight - (step.deadSpace * (this.dom.frame.offsetHeight / step.marginRange))) / (((step.marginRange - step.deadSpace) / step.step)); - this.dom.centerContainer.appendChild(this.dom.shadowTop); - this.dom.centerContainer.appendChild(this.dom.shadowBottom); - this.dom.leftContainer.appendChild(this.dom.shadowTopLeft); - this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft); - this.dom.rightContainer.appendChild(this.dom.shadowTopRight); - this.dom.rightContainer.appendChild(this.dom.shadowBottomRight); + this.stepPixels = stepPixels; - this.on('rangechange', this._redraw.bind(this)); - this.on('touch', this._onTouch.bind(this)); - this.on('pinch', this._onPinch.bind(this)); - this.on('dragstart', this._onDragStart.bind(this)); - this.on('drag', this._onDrag.bind(this)); + var amountOfSteps = this.height / stepPixels; + var stepDifference = 0; - var me = this; - this.on('change', function (properties) { - if (properties && properties.queue == true) { - // redraw once on next tick - if (!me._redrawTimer) { - me._redrawTimer = setTimeout(function () { - me._redrawTimer = null; - me._redraw(); - }, 0) - } + // the slave axis needs to use the same horizontal lines as the master axis. + if (this.master == false) { + stepPixels = this.stepPixelsForced; + stepDifference = Math.round((this.dom.frame.offsetHeight / stepPixels) - amountOfSteps); + for (var i = 0; i < 0.5 * stepDifference; i++) { + step.previous(); } - else { - // redraw immediately - me._redraw(); + amountOfSteps = this.height / stepPixels; + + if (this.zeroCrossing != -1 && this.options.alignZeros == true) { + var zeroStepDifference = (step.marginEnd / step.step) - this.zeroCrossing; + if (zeroStepDifference > 0) { + for (var i = 0; i < zeroStepDifference; i++) {step.next();} + } + else if (zeroStepDifference < 0) { + for (var i = 0; i < -zeroStepDifference; i++) {step.previous();} + } } - }); + } + else { + amountOfSteps += 0.25; + } - // create event listeners for all interesting events, these events will be - // emitted via emitter - this.hammer = Hammer(this.dom.root, { - preventDefault: true - }); - this.listeners = {}; - var events = [ - 'touch', 'pinch', - 'tap', 'doubletap', 'hold', - 'dragstart', 'drag', 'dragend', - 'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox - ]; - events.forEach(function (event) { - var listener = function () { - var args = [event].concat(Array.prototype.slice.call(arguments, 0)); - if (me.isActive()) { - me.emit.apply(me, args); - } - }; - me.hammer.on(event, listener); - me.listeners[event] = listener; - }); + this.valueAtZero = step.marginEnd; + var marginStartPos = 0; - // size properties of each of the panels - this.props = { - root: {}, - background: {}, - centerContainer: {}, - leftContainer: {}, - rightContainer: {}, - center: {}, - left: {}, - right: {}, - top: {}, - bottom: {}, - border: {}, - scrollTop: 0, - scrollTopMin: 0 - }; - this.touch = {}; // store state information needed for touch events + // do not draw the first label + var max = 1; - this.redrawCount = 0; + // Get the number of decimal places + var decimals; + if(this.options.format[orientation] !== undefined) { + decimals = this.options.format[orientation].decimals; + } - // attach the root panel to the provided container - if (!container) throw new Error('No container provided'); - container.appendChild(this.dom.root); - }; + this.maxLabelSize = 0; + var y = 0; + while (max < Math.round(amountOfSteps)) { + step.next(); + y = Math.round(max * stepPixels); + marginStartPos = max * stepPixels; + var isMajor = step.isMajor(); - /** - * Set options. Options will be passed to all components loaded in the Timeline. - * @param {Object} [options] - * {String} orientation - * Vertical orientation for the Timeline, - * can be 'bottom' (default) or 'top'. - * {String | Number} width - * Width for the timeline, a number in pixels or - * a css string like '1000px' or '75%'. '100%' by default. - * {String | Number} height - * Fixed height for the Timeline, a number in pixels or - * a css string like '400px' or '75%'. If undefined, - * The Timeline will automatically size such that - * its contents fit. - * {String | Number} minHeight - * Minimum height for the Timeline, a number in pixels or - * a css string like '400px' or '75%'. - * {String | Number} maxHeight - * Maximum height for the Timeline, a number in pixels or - * a css string like '400px' or '75%'. - * {Number | Date | String} start - * Start date for the visible window - * {Number | Date | String} end - * End date for the visible window - */ - Core.prototype.setOptions = function (options) { - if (options) { - // copy the known options - var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'orientation', 'clickToUse', 'dataAttributes', 'hiddenDates']; - util.selectiveExtend(fields, this.options, options); + if (this.options['showMinorLabels'] && isMajor == false || this.master == false && this.options['showMinorLabels'] == true) { + this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis minor', this.props.minorCharHeight); + } - if (this.options.orientation === 'both') { - if (!this.timeAxis2) { - var timeAxis2 = this.timeAxis2 = new TimeAxis(this.body); - timeAxis2.setOptions = function (options) { - var _options = options ? util.extend({}, options) : {}; - _options.orientation = 'top'; // override the orientation option, always top - TimeAxis.prototype.setOptions.call(timeAxis2, _options); - }; - this.components.push(timeAxis2); + if (isMajor && this.options['showMajorLabels'] && this.master == true || + this.options['showMinorLabels'] == false && this.master == false && isMajor == true) { + if (y >= 0) { + this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis major', this.props.majorCharHeight); } + this._redrawLine(y, orientation, 'grid horizontal major', this.options.majorLinesOffset, this.props.majorLineWidth); } else { - if (this.timeAxis2) { - var index = this.components.indexOf(this.timeAxis2); - if (index !== -1) { - this.components.splice(index, 1); - } - this.timeAxis2.destroy(); - this.timeAxis2 = null; - } + this._redrawLine(y, orientation, 'grid horizontal minor', this.options.minorLinesOffset, this.props.minorLineWidth); } - if ('hiddenDates' in this.options) { - DateUtil.convertHiddenOptions(this.body, this.options.hiddenDates); + if (this.master == true && step.current == 0) { + this.zeroCrossing = max; } - if ('clickToUse' in options) { - if (options.clickToUse) { - if (!this.activator) { - this.activator = new Activator(this.dom.root); - } - } - else { - if (this.activator) { - this.activator.destroy(); - delete this.activator; - } - } - } + max++; + } - // enable/disable autoResize - this._initAutoResize(); + if (this.master == false) { + this.conversionFactor = y / (this.valueAtZero - step.current); + } + else { + this.conversionFactor = this.dom.frame.offsetHeight / step.marginRange; } - // propagate options to all components - this.components.forEach(function (component) { - component.setOptions(options); - }); + // Note that title is rotated, so we're using the height, not width! + var titleWidth = 0; + if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { + titleWidth = this.props.titleCharHeight; + } + var offset = this.options.icons == true ? Math.max(this.options.iconWidth, titleWidth) + this.options.labelOffsetX + 15 : titleWidth + this.options.labelOffsetX + 15; - // TODO: remove deprecation error one day (deprecated since version 0.8.0) - if (options && options.order) { - throw new Error('Option order is deprecated. There is no replacement for this feature.'); + // this will resize the yAxis to accommodate the labels. + if (this.maxLabelSize > (this.width - offset) && this.options.visible == true) { + this.width = this.maxLabelSize + offset; + this.options.width = this.width + "px"; + DOMutil.cleanupElements(this.DOMelements.lines); + DOMutil.cleanupElements(this.DOMelements.labels); + this.redraw(); + resized = true; + } + // this will resize the yAxis if it is too big for the labels. + else if (this.maxLabelSize < (this.width - offset) && this.options.visible == true && this.width > this.minWidth) { + this.width = Math.max(this.minWidth,this.maxLabelSize + offset); + this.options.width = this.width + "px"; + DOMutil.cleanupElements(this.DOMelements.lines); + DOMutil.cleanupElements(this.DOMelements.labels); + this.redraw(); + resized = true; + } + else { + DOMutil.cleanupElements(this.DOMelements.lines); + DOMutil.cleanupElements(this.DOMelements.labels); + resized = false; } - // redraw everything - this._redraw(); + return resized; }; - /** - * Returns true when the Timeline is active. - * @returns {boolean} - */ - Core.prototype.isActive = function () { - return !this.activator || this.activator.active; + DataAxis.prototype.convertValue = function (value) { + var invertedValue = this.valueAtZero - value; + var convertedValue = invertedValue * this.conversionFactor; + return convertedValue; }; /** - * Destroy the Core, clean up all DOM elements and event listeners. + * Create a label for the axis at position x + * @private + * @param y + * @param text + * @param orientation + * @param className + * @param characterHeight */ - Core.prototype.destroy = function () { - // unbind datasets - this.clear(); + DataAxis.prototype._redrawLabel = function (y, text, orientation, className, characterHeight) { + // reuse redundant label + var label = DOMutil.getDOMElement('div',this.DOMelements.labels, this.dom.frame); //this.dom.redundant.labels.shift(); + label.className = className; + label.innerHTML = text; + if (orientation == 'left') { + label.style.left = '-' + this.options.labelOffsetX + 'px'; + label.style.textAlign = "right"; + } + else { + label.style.right = '-' + this.options.labelOffsetX + 'px'; + label.style.textAlign = "left"; + } - // remove all event listeners - this.off(); + label.style.top = y - 0.5 * characterHeight + this.options.labelOffsetY + 'px'; - // stop checking for changed size - this._stopAutoResize(); + text += ''; - // remove from DOM - if (this.dom.root.parentNode) { - this.dom.root.parentNode.removeChild(this.dom.root); + var largestWidth = Math.max(this.props.majorCharWidth,this.props.minorCharWidth); + if (this.maxLabelSize < text.length * largestWidth) { + this.maxLabelSize = text.length * largestWidth; } - this.dom = null; + }; - // remove Activator - if (this.activator) { - this.activator.destroy(); - delete this.activator; - } + /** + * Create a minor line for the axis at position y + * @param y + * @param orientation + * @param className + * @param offset + * @param width + */ + DataAxis.prototype._redrawLine = function (y, orientation, className, offset, width) { + if (this.master == true) { + var line = DOMutil.getDOMElement('div',this.DOMelements.lines, this.dom.lineContainer);//this.dom.redundant.lines.shift(); + line.className = className; + line.innerHTML = ''; - // cleanup hammer touch events - for (var event in this.listeners) { - if (this.listeners.hasOwnProperty(event)) { - delete this.listeners[event]; + if (orientation == 'left') { + line.style.left = (this.width - offset) + 'px'; + } + else { + line.style.right = (this.width - offset) + 'px'; } - } - this.listeners = null; - this.hammer = null; - - // give all components the opportunity to cleanup - this.components.forEach(function (component) { - component.destroy(); - }); - this.body = null; + line.style.width = width + 'px'; + line.style.top = y + 'px'; + } }; - /** - * Set a custom time bar - * @param {Date} time - * @param {int} id + * Create a title for the axis + * @private + * @param orientation */ - Core.prototype.setCustomTime = function (time, id) { - if (!this.customTime) { - throw new Error('Cannot get custom time: Custom time bar is not enabled'); - } + DataAxis.prototype._redrawTitle = function (orientation) { + DOMutil.prepareElements(this.DOMelements.title); - var barId = id || 0; + // Check if the title is defined for this axes + if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { + var title = DOMutil.getDOMElement('div', this.DOMelements.title, this.dom.frame); + title.className = 'yAxis title ' + orientation; + title.innerHTML = this.options.title[orientation].text; - this.components.forEach(function (element, index, components) { - if (element instanceof CustomTime && element.options.id === barId) { - element.setCustomTime(time); + // Add style - if provided + if (this.options.title[orientation].style !== undefined) { + util.addCssText(title, this.options.title[orientation].style); } - }); + + if (orientation == 'left') { + title.style.left = this.props.titleCharHeight + 'px'; + } + else { + title.style.right = this.props.titleCharHeight + 'px'; + } + + title.style.width = this.height + 'px'; + } + + // we need to clean up in case we did not use all elements. + DOMutil.cleanupElements(this.DOMelements.title); }; + + + /** - * Retrieve the current custom time. - * @return {Date} customTime - * @param {int} id + * Determine the size of text on the axis (both major and minor axis). + * The size is calculated only once and then cached in this.props. + * @private */ - Core.prototype.getCustomTime = function(id) { - if (!this.customTime) { - throw new Error('Cannot get custom time: Custom time bar is not enabled'); + DataAxis.prototype._calculateCharSize = function () { + // determine the char width and height on the minor axis + if (!('minorCharHeight' in this.props)) { + var textMinor = document.createTextNode('0'); + var measureCharMinor = document.createElement('div'); + measureCharMinor.className = 'yAxis minor measure'; + measureCharMinor.appendChild(textMinor); + this.dom.frame.appendChild(measureCharMinor); + + this.props.minorCharHeight = measureCharMinor.clientHeight; + this.props.minorCharWidth = measureCharMinor.clientWidth; + + this.dom.frame.removeChild(measureCharMinor); } - var barId = id || 0, - customTime = this.customTime.getCustomTime(); + if (!('majorCharHeight' in this.props)) { + var textMajor = document.createTextNode('0'); + var measureCharMajor = document.createElement('div'); + measureCharMajor.className = 'yAxis major measure'; + measureCharMajor.appendChild(textMajor); + this.dom.frame.appendChild(measureCharMajor); - this.components.forEach(function (element, index, components) { - if (element instanceof CustomTime && element.options.id === barId) { - customTime = element.getCustomTime(); - } - }); + this.props.majorCharHeight = measureCharMajor.clientHeight; + this.props.majorCharWidth = measureCharMajor.clientWidth; - return customTime; + this.dom.frame.removeChild(measureCharMajor); + } + + if (!('titleCharHeight' in this.props)) { + var textTitle = document.createTextNode('0'); + var measureCharTitle = document.createElement('div'); + measureCharTitle.className = 'yAxis title measure'; + measureCharTitle.appendChild(textTitle); + this.dom.frame.appendChild(measureCharTitle); + + this.props.titleCharHeight = measureCharTitle.clientHeight; + this.props.titleCharWidth = measureCharTitle.clientWidth; + + this.dom.frame.removeChild(measureCharTitle); + } }; + module.exports = DataAxis; + + +/***/ }, +/* 44 */ +/***/ function(module, exports, __webpack_require__) { + /** - * Add custom vertical bar - * @param {Date | String | Number} time A Date, unix timestamp, or - * ISO date string. Time point where the new bar should be placed - * @param {Number | String} ID of the new bar - * @return {Number | String} ID of the new bar + * @constructor DataStep + * The class DataStep is an iterator for data for the lineGraph. You provide a start data point and an + * end data point. The class itself determines the best scale (step size) based on the + * provided start Date, end Date, and minimumStep. + * + * If minimumStep is provided, the step size is chosen as close as possible + * to the minimumStep but larger than minimumStep. If minimumStep is not + * provided, the scale is set to 1 DAY. + * The minimumStep should correspond with the onscreen size of about 6 characters + * + * Alternatively, you can set a scale by hand. + * After creation, you can initialize the class by executing first(). Then you + * can iterate from the start date to the end date via next(). You can check if + * the end date is reached with the function hasNext(). After each step, you can + * retrieve the current date via getCurrent(). + * The DataStep has scales ranging from milliseconds, seconds, minutes, hours, + * days, to years. + * + * Version: 1.2 + * + * @param {Date} [start] The start date, for example new Date(2010, 9, 21) + * or new Date(2010, 9, 21, 23, 45, 00) + * @param {Date} [end] The end date + * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds */ - Core.prototype.addCustomTime = function (time, id) { - if (!this.currentTime) { - throw new Error('Option showCurrentTime must be true'); - } + function DataStep(start, end, minimumStep, containerHeight, customRange, alignZeros) { + // variables + this.current = 0; - if (time === undefined) { - throw new Error('Time parameter for the custom bar must be provided'); - } + this.autoScale = true; + this.stepIndex = 0; + this.step = 1; + this.scale = 1; - var ts = util.convert(time, 'Date').valueOf(), - numIds, customTime, customBarId; + this.marginStart; + this.marginEnd; + this.deadSpace = 0; - // All bar IDs are kept in 1 array, mixed types - // Bar with ID 0 is the default bar. - if (!this.customBarIds || this.customBarIds.constructor !== Array) { - this.customBarIds = [0]; - } + this.majorSteps = [1, 2, 5, 10]; + this.minorSteps = [0.25, 0.5, 1, 2]; - // If the ID is not provided, generate one, otherwise just use it - if (id === undefined) { + this.alignZeros = alignZeros; - numIds = this.customBarIds.filter(function (element) { - return util.isNumber(element); - }); + this.setRange(start, end, minimumStep, containerHeight, customRange); + } - customBarId = numIds.length > 0 ? Math.max.apply(null, numIds) + 1 : 1; - } else { - - // Check for duplicates - this.customBarIds.forEach(function (element) { - if (element === id) { - throw new Error('Custom time ID already exists'); - } - }); - customBarId = id; + /** + * Set a new range + * If minimumStep is provided, the step size is chosen as close as possible + * to the minimumStep but larger than minimumStep. If minimumStep is not + * provided, the scale is set to 1 DAY. + * The minimumStep should correspond with the onscreen size of about 6 characters + * @param {Number} [start] The start date and time. + * @param {Number} [end] The end date and time. + * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds + */ + DataStep.prototype.setRange = function(start, end, minimumStep, containerHeight, customRange) { + this._start = customRange.min === undefined ? start : customRange.min; + this._end = customRange.max === undefined ? end : customRange.max; + + if (this._start == this._end) { + this._start -= 0.75; + this._end += 1; } - this.customBarIds.push(customBarId); + if (this.autoScale == true) { + this.setMinimumStep(minimumStep, containerHeight); + } - customTime = new CustomTime(this.body, { - showCustomTime : true, - time : ts, - id : customBarId - }); + this.setFirst(customRange); + }; + + /** + * Automatically determine the scale that bests fits the provided minimum step + * @param {Number} [minimumStep] The minimum step size in milliseconds + */ + DataStep.prototype.setMinimumStep = function(minimumStep, containerHeight) { + // round to floor + var size = this._end - this._start; + var safeSize = size * 1.2; + var minimumStepValue = minimumStep * (safeSize / containerHeight); + var orderOfMagnitude = Math.round(Math.log(safeSize)/Math.LN10); + + var minorStepIdx = -1; + var magnitudefactor = Math.pow(10,orderOfMagnitude); + + var start = 0; + if (orderOfMagnitude < 0) { + start = orderOfMagnitude; + } + + var solutionFound = false; + for (var i = start; Math.abs(i) <= Math.abs(orderOfMagnitude); i++) { + magnitudefactor = Math.pow(10,i); + for (var j = 0; j < this.minorSteps.length; j++) { + var stepSize = magnitudefactor * this.minorSteps[j]; + if (stepSize >= minimumStepValue) { + solutionFound = true; + minorStepIdx = j; + break; + } + } + if (solutionFound == true) { + break; + } + } + this.stepIndex = minorStepIdx; + this.scale = magnitudefactor; + this.step = magnitudefactor * this.minorSteps[minorStepIdx]; + }; - this.components.push(customTime); - this.redraw(); - return customBarId; - }; /** - * Remove previously added custom bar - * @param {int} id ID of the custom bar to be removed - * @return {boolean} True if the bar exists and is removed, false otherwise + * Round the current date to the first minor date value + * This must be executed once when the current date is set to start Date */ - Core.prototype.removeCustomTime = function (id) { + DataStep.prototype.setFirst = function(customRange) { + if (customRange === undefined) { + customRange = {}; + } - var me = this; + var niceStart = customRange.min === undefined ? this._start - (this.scale * 2 * this.minorSteps[this.stepIndex]) : customRange.min; + var niceEnd = customRange.max === undefined ? this._end + (this.scale * this.minorSteps[this.stepIndex]) : customRange.max; - this.components.forEach(function (bar, index, components) { - if (bar instanceof CustomTime && bar.options.id === id) { - // Only the lines added by the user will be removed - if (bar.options.id !== 0) { - me.customBarIds.splice(me.customBarIds.indexOf(id), 1); - components.splice(index, 1); - bar.destroy(); - } - } - }); - }; + this.marginEnd = customRange.max === undefined ? this.roundToMinor(niceEnd) : customRange.max; + this.marginStart = customRange.min === undefined ? this.roundToMinor(niceStart) : customRange.min; + // if we need to align the zero's we need to make sure that there is a zero to use. + if (this.alignZeros == true && (this.marginEnd - this.marginStart) % this.step != 0) { + this.marginEnd += this.marginEnd % this.step; + } - /** - * Get the id's of the currently visible items. - * @returns {Array} The ids of the visible items - */ - Core.prototype.getVisibleItems = function() { - return this.itemSet && this.itemSet.getVisibleItems() || []; - }; + this.deadSpace = this.roundToMinor(niceEnd) - niceEnd + this.roundToMinor(niceStart) - niceStart; + this.marginRange = this.marginEnd - this.marginStart; + this.current = this.marginEnd; + }; - /** - * Clear the Core. By Default, items, groups and options are cleared. - * Example usage: - * - * timeline.clear(); // clear items, groups, and options - * timeline.clear({options: true}); // clear options only - * - * @param {Object} [what] Optionally specify what to clear. By default: - * {items: true, groups: true, options: true} - */ - Core.prototype.clear = function(what) { - // clear items - if (!what || what.items) { - this.setItems(null); + DataStep.prototype.roundToMinor = function(value) { + var rounded = value - (value % (this.scale * this.minorSteps[this.stepIndex])); + if (value % (this.scale * this.minorSteps[this.stepIndex]) > 0.5 * (this.scale * this.minorSteps[this.stepIndex])) { + return rounded + (this.scale * this.minorSteps[this.stepIndex]); } - - // clear groups - if (!what || what.groups) { - this.setGroups(null); + else { + return rounded; } + } - // clear options of timeline and of each of the components - if (!what || what.options) { - this.components.forEach(function (component) { - component.setOptions(component.defaultOptions); - }); - this.setOptions(this.defaultOptions); // this will also do a redraw - } + /** + * Check if the there is a next step + * @return {boolean} true if the current date has not passed the end date + */ + DataStep.prototype.hasNext = function () { + return (this.current >= this.marginStart); }; /** - * Set Core window such that it fits all items - * @param {Object} [options] Available options: - * `animate: boolean | number` - * If true (default), the range is animated - * smoothly to the new window. - * If a number, the number is taken as duration - * for the animation. Default duration is 500 ms. + * Do the next step */ - Core.prototype.fit = function(options) { - var range = this._getDataRange(); + DataStep.prototype.next = function() { + var prev = this.current; + this.current -= this.step; - // skip range set if there is no start and end date - if (range.start === null && range.end === null) { - return; + // safety mechanism: if current time is still unchanged, move to the end + if (this.current == prev) { + this.current = this._end; } - - var animate = (options && options.animate !== undefined) ? options.animate : true; - this.range.setRange(range.start, range.end, animate); }; /** - * Calculate the data range of the items and applies a 5% window around it. - * @returns {{start: Date | null, end: Date | null}} - * @protected + * Do the next step */ - Core.prototype._getDataRange = function() { - // apply the data range as range - var dataRange = this.getItemRange(); + DataStep.prototype.previous = function() { + this.current += this.step; + this.marginEnd += this.step; + this.marginRange = this.marginEnd - this.marginStart; + }; - // add 5% space on both sides - var start = dataRange.min; - var end = dataRange.max; - if (start != null && end != null) { - var interval = (end.valueOf() - start.valueOf()); - if (interval <= 0) { - // prevent an empty interval - interval = 24 * 60 * 60 * 1000; // 1 day - } - start = new Date(start.valueOf() - interval * 0.05); - end = new Date(end.valueOf() + interval * 0.05); - } - return { - start: start, - end: end - } - }; /** - * Set the visible window. Both parameters are optional, you can change only - * start or only end. Syntax: - * - * TimeLine.setWindow(start, end) - * TimeLine.setWindow(start, end, options) - * TimeLine.setWindow(range) - * - * Where start and end can be a Date, number, or string, and range is an - * object with properties start and end. - * - * @param {Date | Number | String | Object} [start] Start date of visible window - * @param {Date | Number | String} [end] End date of visible window - * @param {Object} [options] Available options: - * `animate: boolean | number` - * If true (default), the range is animated - * smoothly to the new window. - * If a number, the number is taken as duration - * for the animation. Default duration is 500 ms. + * Get the current datetime + * @return {String} current The current date */ - Core.prototype.setWindow = function(start, end, options) { - var animate; - if (arguments.length == 1) { - var range = arguments[0]; - animate = (range.animate !== undefined) ? range.animate : true; - this.range.setRange(range.start, range.end, animate); + DataStep.prototype.getCurrent = function(decimals) { + // prevent round-off errors when close to zero + var current = (Math.abs(this.current) < this.step / 2) ? 0 : this.current; + var toPrecision = '' + Number(current).toPrecision(5); + + // If decimals is specified, then limit or extend the string as required + if(decimals !== undefined && !isNaN(Number(decimals))) { + // If string includes exponent, then we need to add it to the end + var exp = ""; + var index = toPrecision.indexOf("e"); + if(index != -1) { + // Get the exponent + exp = toPrecision.slice(index); + // Remove the exponent in case we need to zero-extend + toPrecision = toPrecision.slice(0, index); + } + index = Math.max(toPrecision.indexOf(","), toPrecision.indexOf(".")); + if(index === -1) { + // No decimal found - if we want decimals, then we need to add it + if(decimals !== 0) { + toPrecision += '.'; + } + // Calculate how long the string should be + index = toPrecision.length + decimals; + } + else if(decimals !== 0) { + // Calculate how long the string should be - accounting for the decimal place + index += decimals + 1; + } + if(index > toPrecision.length) { + // We need to add zeros! + for(var cnt = index - toPrecision.length; cnt > 0; cnt--) { + toPrecision += '0'; + } + } + else { + // we need to remove characters + toPrecision = toPrecision.slice(0, index); + } + // Add the exponent if there is one + toPrecision += exp; } else { - animate = (options && options.animate !== undefined) ? options.animate : true; - this.range.setRange(start, end, animate); + if (toPrecision.indexOf(",") != -1 || toPrecision.indexOf(".") != -1) { + // If no decimal is specified, and there are decimal places, remove trailing zeros + for (var i = toPrecision.length - 1; i > 0; i--) { + if (toPrecision[i] == "0") { + toPrecision = toPrecision.slice(0, i); + } + else if (toPrecision[i] == "." || toPrecision[i] == ",") { + toPrecision = toPrecision.slice(0, i); + break; + } + else { + break; + } + } + } } - }; - - /** - * Move the window such that given time is centered on screen. - * @param {Date | Number | String} time - * @param {Object} [options] Available options: - * `animate: boolean | number` - * If true (default), the range is animated - * smoothly to the new window. - * If a number, the number is taken as duration - * for the animation. Default duration is 500 ms. - */ - Core.prototype.moveTo = function(time, options) { - var interval = this.range.end - this.range.start; - var t = util.convert(time, 'Date').valueOf(); - - var start = t - interval / 2; - var end = t + interval / 2; - var animate = (options && options.animate !== undefined) ? options.animate : true; - this.range.setRange(start, end, animate); + return toPrecision; }; /** - * Get the visible window - * @return {{start: Date, end: Date}} Visible range + * Check if the current value is a major value (for example when the step + * is DAY, a major value is each first day of the MONTH) + * @return {boolean} true if current date is major, else false. */ - Core.prototype.getWindow = function() { - var range = this.range.getRange(); - return { - start: new Date(range.start), - end: new Date(range.end) - }; + DataStep.prototype.isMajor = function() { + return (this.current % (this.scale * this.majorSteps[this.stepIndex]) == 0); }; - /** - * Force a redraw. Can be overridden by implementations of Core - */ - Core.prototype.redraw = function() { - this._redraw(); - }; + module.exports = DataStep; - /** - * Redraw for internal use. Redraws all components. See also the public - * method redraw. - * @protected - */ - Core.prototype._redraw = function() { - var resized = false; - var options = this.options; - var props = this.props; - var dom = this.dom; - if (!dom) return; // when destroyed +/***/ }, +/* 45 */ +/***/ function(module, exports, __webpack_require__) { - DateUtil.updateHiddenDates(this.body, this.options.hiddenDates); + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(6); + var Line = __webpack_require__(46); + var Bar = __webpack_require__(48); + var Points = __webpack_require__(47); - // update class names - if (options.orientation == 'top') { - util.addClassName(dom.root, 'top'); - util.removeClassName(dom.root, 'bottom'); - } - else { - util.removeClassName(dom.root, 'top'); - util.addClassName(dom.root, 'bottom'); + /** + * /** + * @param {object} group | the object of the group from the dataset + * @param {string} groupId | ID of the group + * @param {object} options | the default options + * @param {array} groupsUsingDefaultStyles | this array has one entree. + * It is passed as an array so it is passed by reference. + * It enumerates through the default styles + * @constructor + */ + function GraphGroup (group, groupId, options, groupsUsingDefaultStyles) { + this.id = groupId; + var fields = ['sampling','style','sort','yAxisOrientation','barChart','drawPoints','shaded','catmullRom'] + this.options = util.selectiveBridgeObject(fields,options); + this.usingDefaultStyle = group.className === undefined; + this.groupsUsingDefaultStyles = groupsUsingDefaultStyles; + this.zeroPosition = 0; + this.update(group); + if (this.usingDefaultStyle == true) { + this.groupsUsingDefaultStyles[0] += 1; } + this.itemsData = []; + this.visible = group.visible === undefined ? true : group.visible; + } - // update root width and height options - dom.root.style.maxHeight = util.option.asSize(options.maxHeight, ''); - dom.root.style.minHeight = util.option.asSize(options.minHeight, ''); - dom.root.style.width = util.option.asSize(options.width, ''); - - // calculate border widths - props.border.left = (dom.centerContainer.offsetWidth - dom.centerContainer.clientWidth) / 2; - props.border.right = props.border.left; - props.border.top = (dom.centerContainer.offsetHeight - dom.centerContainer.clientHeight) / 2; - props.border.bottom = props.border.top; - var borderRootHeight= dom.root.offsetHeight - dom.root.clientHeight; - var borderRootWidth = dom.root.offsetWidth - dom.root.clientWidth; - // workaround for a bug in IE: the clientWidth of an element with - // a height:0px and overflow:hidden is not calculated and always has value 0 - if (dom.centerContainer.clientHeight === 0) { - props.border.left = props.border.top; - props.border.right = props.border.left; + /** + * this loads a reference to all items in this group into this group. + * @param {array} items + */ + GraphGroup.prototype.setItems = function(items) { + if (items != null) { + this.itemsData = items; + if (this.options.sort == true) { + this.itemsData.sort(function (a,b) {return a.x - b.x;}) + } } - if (dom.root.clientHeight === 0) { - borderRootWidth = borderRootHeight; + else { + this.itemsData = []; } + }; - // calculate the heights. If any of the side panels is empty, we set the height to - // minus the border width, such that the border will be invisible - props.center.height = dom.center.offsetHeight; - props.left.height = dom.left.offsetHeight; - props.right.height = dom.right.offsetHeight; - props.top.height = dom.top.clientHeight || -props.border.top; - props.bottom.height = dom.bottom.clientHeight || -props.border.bottom; - // TODO: compensate borders when any of the panels is empty. + /** + * this is used for plotting barcharts, this way, we only have to calculate it once. + * @param pos + */ + GraphGroup.prototype.setZeroPosition = function(pos) { + this.zeroPosition = pos; + }; - // apply auto height - // TODO: only calculate autoHeight when needed (else we cause an extra reflow/repaint of the DOM) - var contentHeight = Math.max(props.left.height, props.center.height, props.right.height); - var autoHeight = props.top.height + contentHeight + props.bottom.height + - borderRootHeight + props.border.top + props.border.bottom; - dom.root.style.height = util.option.asSize(options.height, autoHeight + 'px'); - // calculate heights of the content panels - props.root.height = dom.root.offsetHeight; - props.background.height = props.root.height - borderRootHeight; - var containerHeight = props.root.height - props.top.height - props.bottom.height - - borderRootHeight; - props.centerContainer.height = containerHeight; - props.leftContainer.height = containerHeight; - props.rightContainer.height = props.leftContainer.height; + /** + * set the options of the graph group over the default options. + * @param options + */ + GraphGroup.prototype.setOptions = function(options) { + if (options !== undefined) { + var fields = ['sampling','style','sort','yAxisOrientation','barChart']; + util.selectiveDeepExtend(fields, this.options, options); - // calculate the widths of the panels - props.root.width = dom.root.offsetWidth; - props.background.width = props.root.width - borderRootWidth; - props.left.width = dom.leftContainer.clientWidth || -props.border.left; - props.leftContainer.width = props.left.width; - props.right.width = dom.rightContainer.clientWidth || -props.border.right; - props.rightContainer.width = props.right.width; - var centerWidth = props.root.width - props.left.width - props.right.width - borderRootWidth; - props.center.width = centerWidth; - props.centerContainer.width = centerWidth; - props.top.width = centerWidth; - props.bottom.width = centerWidth; + util.mergeOptions(this.options, options,'catmullRom'); + util.mergeOptions(this.options, options,'drawPoints'); + util.mergeOptions(this.options, options,'shaded'); - // resize the panels - dom.background.style.height = props.background.height + 'px'; - dom.backgroundVertical.style.height = props.background.height + 'px'; - dom.backgroundHorizontal.style.height = props.centerContainer.height + 'px'; - dom.centerContainer.style.height = props.centerContainer.height + 'px'; - dom.leftContainer.style.height = props.leftContainer.height + 'px'; - dom.rightContainer.style.height = props.rightContainer.height + 'px'; + if (options.catmullRom) { + if (typeof options.catmullRom == 'object') { + if (options.catmullRom.parametrization) { + if (options.catmullRom.parametrization == 'uniform') { + this.options.catmullRom.alpha = 0; + } + else if (options.catmullRom.parametrization == 'chordal') { + this.options.catmullRom.alpha = 1.0; + } + else { + this.options.catmullRom.parametrization = 'centripetal'; + this.options.catmullRom.alpha = 0.5; + } + } + } + } + } - dom.background.style.width = props.background.width + 'px'; - dom.backgroundVertical.style.width = props.centerContainer.width + 'px'; - dom.backgroundHorizontal.style.width = props.background.width + 'px'; - dom.centerContainer.style.width = props.center.width + 'px'; - dom.top.style.width = props.top.width + 'px'; - dom.bottom.style.width = props.bottom.width + 'px'; + if (this.options.style == 'line') { + this.type = new Line(this.id, this.options); + } + else if (this.options.style == 'bar') { + this.type = new Bar(this.id, this.options); + } + else if (this.options.style == 'points') { + this.type = new Points(this.id, this.options); + } + }; - // reposition the panels - dom.background.style.left = '0'; - dom.background.style.top = '0'; - dom.backgroundVertical.style.left = (props.left.width + props.border.left) + 'px'; - dom.backgroundVertical.style.top = '0'; - dom.backgroundHorizontal.style.left = '0'; - dom.backgroundHorizontal.style.top = props.top.height + 'px'; - dom.centerContainer.style.left = props.left.width + 'px'; - dom.centerContainer.style.top = props.top.height + 'px'; - dom.leftContainer.style.left = '0'; - dom.leftContainer.style.top = props.top.height + 'px'; - dom.rightContainer.style.left = (props.left.width + props.center.width) + 'px'; - dom.rightContainer.style.top = props.top.height + 'px'; - dom.top.style.left = props.left.width + 'px'; - dom.top.style.top = '0'; - dom.bottom.style.left = props.left.width + 'px'; - dom.bottom.style.top = (props.top.height + props.centerContainer.height) + 'px'; - // update the scrollTop, feasible range for the offset can be changed - // when the height of the Core or of the contents of the center changed - this._updateScrollTop(); + /** + * this updates the current group class with the latest group dataset entree, used in _updateGroup in linegraph + * @param group + */ + GraphGroup.prototype.update = function(group) { + this.group = group; + this.content = group.content || 'graph'; + this.className = group.className || this.className || "graphGroup" + this.groupsUsingDefaultStyles[0] % 10; + this.visible = group.visible === undefined ? true : group.visible; + this.style = group.style; + this.setOptions(group.options); + }; - // reposition the scrollable contents - var offset = this.props.scrollTop; - if (options.orientation == 'bottom') { - offset += Math.max(this.props.centerContainer.height - this.props.center.height - - this.props.border.top - this.props.border.bottom, 0); - } - dom.center.style.left = '0'; - dom.center.style.top = offset + 'px'; - dom.left.style.left = '0'; - dom.left.style.top = offset + 'px'; - dom.right.style.left = '0'; - dom.right.style.top = offset + 'px'; - // show shadows when vertical scrolling is available - var visibilityTop = this.props.scrollTop == 0 ? 'hidden' : ''; - var visibilityBottom = this.props.scrollTop == this.props.scrollTopMin ? 'hidden' : ''; - dom.shadowTop.style.visibility = visibilityTop; - dom.shadowBottom.style.visibility = visibilityBottom; - dom.shadowTopLeft.style.visibility = visibilityTop; - dom.shadowBottomLeft.style.visibility = visibilityBottom; - dom.shadowTopRight.style.visibility = visibilityTop; - dom.shadowBottomRight.style.visibility = visibilityBottom; + /** + * draw the icon for the legend. + * + * @param x + * @param y + * @param JSONcontainer + * @param SVGcontainer + * @param iconWidth + * @param iconHeight + */ + GraphGroup.prototype.drawIcon = function(x, y, JSONcontainer, SVGcontainer, iconWidth, iconHeight) { + var fillHeight = iconHeight * 0.5; + var path, fillPath; - // redraw all components - this.components.forEach(function (component) { - resized = component.redraw() || resized; - }); - if (resized) { - // keep repainting until all sizes are settled - var MAX_REDRAWS = 3; // maximum number of consecutive redraws - if (this.redrawCount < MAX_REDRAWS) { - this.redrawCount++; - this._redraw(); + var outline = DOMutil.getSVGElement("rect", JSONcontainer, SVGcontainer); + outline.setAttributeNS(null, "x", x); + outline.setAttributeNS(null, "y", y - fillHeight); + outline.setAttributeNS(null, "width", iconWidth); + outline.setAttributeNS(null, "height", 2*fillHeight); + outline.setAttributeNS(null, "class", "outline"); + + if (this.options.style == 'line') { + path = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); + path.setAttributeNS(null, "class", this.className); + if(this.style !== undefined) { + path.setAttributeNS(null, "style", this.style); } - else { - console.log('WARNING: infinite loop in redraw?'); + + path.setAttributeNS(null, "d", "M" + x + ","+y+" L" + (x + iconWidth) + ","+y+""); + if (this.options.shaded.enabled == true) { + fillPath = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); + if (this.options.shaded.orientation == 'top') { + fillPath.setAttributeNS(null, "d", "M"+x+", " + (y - fillHeight) + + "L"+x+","+y+" L"+ (x + iconWidth) + ","+y+" L"+ (x + iconWidth) + "," + (y - fillHeight)); + } + else { + fillPath.setAttributeNS(null, "d", "M"+x+","+y+" " + + "L"+x+"," + (y + fillHeight) + " " + + "L"+ (x + iconWidth) + "," + (y + fillHeight) + + "L"+ (x + iconWidth) + ","+y); + } + fillPath.setAttributeNS(null, "class", this.className + " iconFill"); + } + + if (this.options.drawPoints.enabled == true) { + DOMutil.drawPoint(x + 0.5 * iconWidth,y, this, JSONcontainer, SVGcontainer); } - this.redrawCount = 0; } + else { + var barWidth = Math.round(0.3 * iconWidth); + var bar1Height = Math.round(0.4 * iconHeight); + var bar2Height = Math.round(0.75 * iconHeight); - this.emit("finishedRedraw"); - }; + var offset = Math.round((iconWidth - (2 * barWidth))/3); - // TODO: deprecated since version 1.1.0, remove some day - Core.prototype.repaint = function () { - throw new Error('Function repaint is deprecated. Use redraw instead.'); + DOMutil.drawBar(x + 0.5*barWidth + offset , y + fillHeight - bar1Height - 1, barWidth, bar1Height, this.className + ' bar', JSONcontainer, SVGcontainer); + DOMutil.drawBar(x + 1.5*barWidth + offset + 2, y + fillHeight - bar2Height - 1, barWidth, bar2Height, this.className + ' bar', JSONcontainer, SVGcontainer); + } }; + /** - * Set a current time. This can be used for example to ensure that a client's - * time is synchronized with a shared server time. - * Only applicable when option `showCurrentTime` is true. - * @param {Date | String | Number} time A Date, unix timestamp, or - * ISO date string. + * return the legend entree for this group. + * + * @param iconWidth + * @param iconHeight + * @returns {{icon: HTMLElement, label: (group.content|*|string), orientation: (.options.yAxisOrientation|*)}} */ - Core.prototype.setCurrentTime = function(time) { - if (!this.currentTime) { - throw new Error('Option showCurrentTime must be true'); - } + GraphGroup.prototype.getLegend = function(iconWidth, iconHeight) { + var svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); + this.drawIcon(0,0.5*iconHeight,[],svg,iconWidth,iconHeight); + return {icon: svg, label: this.content, orientation:this.options.yAxisOrientation}; + } - this.currentTime.setCurrentTime(time); - }; + GraphGroup.prototype.getYRange = function(groupData) { + return this.type.getYRange(groupData); + } - /** - * Get the current time. - * Only applicable when option `showCurrentTime` is true. - * @return {Date} Returns the current time. - */ - Core.prototype.getCurrentTime = function() { - if (!this.currentTime) { - throw new Error('Option showCurrentTime must be true'); - } + GraphGroup.prototype.draw = function(dataset, group, framework) { + this.type.draw(dataset, group, framework); + } - return this.currentTime.getCurrentTime(); - }; - /** - * Convert a position on screen (pixels) to a datetime - * @param {int} x Position on the screen in pixels - * @return {Date} time The datetime the corresponds with given position x - * @private - */ - // TODO: move this function to Range - Core.prototype._toTime = function(x) { - return DateUtil.toTime(this, x, this.props.center.width); - }; + module.exports = GraphGroup; + + +/***/ }, +/* 46 */ +/***/ function(module, exports, __webpack_require__) { /** - * Convert a position on the global screen (pixels) to a datetime - * @param {int} x Position on the screen in pixels - * @return {Date} time The datetime the corresponds with given position x - * @private + * Created by Alex on 11/11/2014. */ - // TODO: move this function to Range - Core.prototype._toGlobalTime = function(x) { - return DateUtil.toTime(this, x, this.props.root.width); - //var conversion = this.range.conversion(this.props.root.width); - //return new Date(x / conversion.scale + conversion.offset); + var DOMutil = __webpack_require__(6); + var Points = __webpack_require__(47); + + function Line(groupId, options) { + this.groupId = groupId; + this.options = options; + } + + Line.prototype.getYRange = function(groupData) { + var yMin = groupData[0].y; + var yMax = groupData[0].y; + for (var j = 0; j < groupData.length; j++) { + yMin = yMin > groupData[j].y ? groupData[j].y : yMin; + yMax = yMax < groupData[j].y ? groupData[j].y : yMax; + } + return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; }; + /** - * Convert a datetime (Date object) into a position on the screen - * @param {Date} time A date - * @return {int} x The position on the screen in pixels which corresponds - * with the given date. - * @private + * draw a line graph + * + * @param dataset + * @param group */ - // TODO: move this function to Range - Core.prototype._toScreen = function(time) { - return DateUtil.toScreen(this, time, this.props.center.width); - }; + Line.prototype.draw = function (dataset, group, framework) { + if (dataset != null) { + if (dataset.length > 0) { + var path, d; + var svgHeight = Number(framework.svg.style.height.replace('px','')); + path = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); + path.setAttributeNS(null, "class", group.className); + if(group.style !== undefined) { + path.setAttributeNS(null, "style", group.style); + } + // construct path from dataset + if (group.options.catmullRom.enabled == true) { + d = Line._catmullRom(dataset, group); + } + else { + d = Line._linear(dataset); + } + // append with points for fill and finalize the path + if (group.options.shaded.enabled == true) { + var fillPath = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); + var dFill; + if (group.options.shaded.orientation == 'top') { + dFill = 'M' + dataset[0].x + ',' + 0 + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + 0; + } + else { + dFill = 'M' + dataset[0].x + ',' + svgHeight + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + svgHeight; + } + fillPath.setAttributeNS(null, "class", group.className + " fill"); + if(group.options.shaded.style !== undefined) { + fillPath.setAttributeNS(null, "style", group.options.shaded.style); + } + fillPath.setAttributeNS(null, "d", dFill); + } + // copy properties to path for drawing. + path.setAttributeNS(null, 'd', 'M' + d); - /** - * Convert a datetime (Date object) into a position on the root - * This is used to get the pixel density estimate for the screen, not the center panel - * @param {Date} time A date - * @return {int} x The position on root in pixels which corresponds - * with the given date. - * @private - */ - // TODO: move this function to Range - Core.prototype._toGlobalScreen = function(time) { - return DateUtil.toScreen(this, time, this.props.root.width); - //var conversion = this.range.conversion(this.props.root.width); - //return (time.valueOf() - conversion.offset) * conversion.scale; + // draw points + if (group.options.drawPoints.enabled == true) { + Points.draw(dataset, group, framework); + } + } + } }; + /** - * Initialize watching when option autoResize is true + * This uses an uniform parametrization of the CatmullRom algorithm: + * 'On the Parameterization of Catmull-Rom Curves' by Cem Yuksel et al. + * @param data + * @returns {string} * @private */ - Core.prototype._initAutoResize = function () { - if (this.options.autoResize == true) { - this._startAutoResize(); - } - else { - this._stopAutoResize(); + Line._catmullRomUniform = function(data) { + // catmull rom + var p0, p1, p2, p3, bp1, bp2; + var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; + var normalization = 1/6; + var length = data.length; + for (var i = 0; i < length - 1; i++) { + + p0 = (i == 0) ? data[0] : data[i-1]; + p1 = data[i]; + p2 = data[i+1]; + p3 = (i + 2 < length) ? data[i+2] : p2; + + + // Catmull-Rom to Cubic Bezier conversion matrix + // 0 1 0 0 + // -1/6 1 1/6 0 + // 0 1/6 1 -1/6 + // 0 0 1 0 + + // bp0 = { x: p1.x, y: p1.y }; + bp1 = { x: ((-p0.x + 6*p1.x + p2.x) *normalization), y: ((-p0.y + 6*p1.y + p2.y) *normalization)}; + bp2 = { x: (( p1.x + 6*p2.x - p3.x) *normalization), y: (( p1.y + 6*p2.y - p3.y) *normalization)}; + // bp0 = { x: p2.x, y: p2.y }; + + d += 'C' + + bp1.x + ',' + + bp1.y + ' ' + + bp2.x + ',' + + bp2.y + ' ' + + p2.x + ',' + + p2.y + ' '; } + + return d; }; /** - * Watch for changes in the size of the container. On resize, the Panel will - * automatically redraw itself. + * This uses either the chordal or centripetal parameterization of the catmull-rom algorithm. + * By default, the centripetal parameterization is used because this gives the nicest results. + * These parameterizations are relatively heavy because the distance between 4 points have to be calculated. + * + * One optimization can be used to reuse distances since this is a sliding window approach. + * @param data + * @param group + * @returns {string} * @private */ - Core.prototype._startAutoResize = function () { - var me = this; + Line._catmullRom = function(data, group) { + var alpha = group.options.catmullRom.alpha; + if (alpha == 0 || alpha === undefined) { + return this._catmullRomUniform(data); + } + else { + var p0, p1, p2, p3, bp1, bp2, d1,d2,d3, A, B, N, M; + var d3powA, d2powA, d3pow2A, d2pow2A, d1pow2A, d1powA; + var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; + var length = data.length; + for (var i = 0; i < length - 1; i++) { - this._stopAutoResize(); + p0 = (i == 0) ? data[0] : data[i-1]; + p1 = data[i]; + p2 = data[i+1]; + p3 = (i + 2 < length) ? data[i+2] : p2; - this._onResize = function() { - if (me.options.autoResize != true) { - // stop watching when the option autoResize is changed to false - me._stopAutoResize(); - return; - } + d1 = Math.sqrt(Math.pow(p0.x - p1.x,2) + Math.pow(p0.y - p1.y,2)); + d2 = Math.sqrt(Math.pow(p1.x - p2.x,2) + Math.pow(p1.y - p2.y,2)); + d3 = Math.sqrt(Math.pow(p2.x - p3.x,2) + Math.pow(p2.y - p3.y,2)); - if (me.dom.root) { - // check whether the frame is resized - // Note: we compare offsetWidth here, not clientWidth. For some reason, - // IE does not restore the clientWidth from 0 to the actual width after - // changing the timeline's container display style from none to visible - if ((me.dom.root.offsetWidth != me.props.lastWidth) || - (me.dom.root.offsetHeight != me.props.lastHeight)) { - me.props.lastWidth = me.dom.root.offsetWidth; - me.props.lastHeight = me.dom.root.offsetHeight; + // Catmull-Rom to Cubic Bezier conversion matrix - me.emit('change'); - } - } - }; + // A = 2d1^2a + 3d1^a * d2^a + d3^2a + // B = 2d3^2a + 3d3^a * d2^a + d2^2a - // add event listener to window resize - util.addEventListener(window, 'resize', this._onResize); + // [ 0 1 0 0 ] + // [ -d2^2a /N A/N d1^2a /N 0 ] + // [ 0 d3^2a /M B/M -d2^2a /M ] + // [ 0 0 1 0 ] - this.watchTimer = setInterval(this._onResize, 1000); + d3powA = Math.pow(d3, alpha); + d3pow2A = Math.pow(d3,2*alpha); + d2powA = Math.pow(d2, alpha); + d2pow2A = Math.pow(d2,2*alpha); + d1powA = Math.pow(d1, alpha); + d1pow2A = Math.pow(d1,2*alpha); + + A = 2*d1pow2A + 3*d1powA * d2powA + d2pow2A; + B = 2*d3pow2A + 3*d3powA * d2powA + d2pow2A; + N = 3*d1powA * (d1powA + d2powA); + if (N > 0) {N = 1 / N;} + M = 3*d3powA * (d3powA + d2powA); + if (M > 0) {M = 1 / M;} + + bp1 = { x: ((-d2pow2A * p0.x + A*p1.x + d1pow2A * p2.x) * N), + y: ((-d2pow2A * p0.y + A*p1.y + d1pow2A * p2.y) * N)}; + + bp2 = { x: (( d3pow2A * p1.x + B*p2.x - d2pow2A * p3.x) * M), + y: (( d3pow2A * p1.y + B*p2.y - d2pow2A * p3.y) * M)}; + + if (bp1.x == 0 && bp1.y == 0) {bp1 = p1;} + if (bp2.x == 0 && bp2.y == 0) {bp2 = p2;} + d += 'C' + + bp1.x + ',' + + bp1.y + ' ' + + bp2.x + ',' + + bp2.y + ' ' + + p2.x + ',' + + p2.y + ' '; + } + + return d; + } }; /** - * Stop watching for a resize of the frame. + * this generates the SVG path for a linear drawing between datapoints. + * @param data + * @returns {string} * @private */ - Core.prototype._stopAutoResize = function () { - if (this.watchTimer) { - clearInterval(this.watchTimer); - this.watchTimer = undefined; + Line._linear = function(data) { + // linear + var d = ''; + for (var i = 0; i < data.length; i++) { + if (i == 0) { + d += data[i].x + ',' + data[i].y; + } + else { + d += ' ' + data[i].x + ',' + data[i].y; + } } - - // remove event listener on window.resize - util.removeEventListener(window, 'resize', this._onResize); - this._onResize = null; + return d; }; + module.exports = Line; + + +/***/ }, +/* 47 */ +/***/ function(module, exports, __webpack_require__) { + /** - * Start moving the timeline vertically - * @param {Event} event - * @private + * Created by Alex on 11/11/2014. */ - Core.prototype._onTouch = function (event) { - this.touch.allowDragging = true; + var DOMutil = __webpack_require__(6); + + function Points(groupId, options) { + this.groupId = groupId; + this.options = options; + } + + + Points.prototype.getYRange = function(groupData) { + var yMin = groupData[0].y; + var yMax = groupData[0].y; + for (var j = 0; j < groupData.length; j++) { + yMin = yMin > groupData[j].y ? groupData[j].y : yMin; + yMax = yMax < groupData[j].y ? groupData[j].y : yMax; + } + return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; }; + Points.prototype.draw = function(dataset, group, framework, offset) { + Points.draw(dataset, group, framework, offset); + } + /** - * Start moving the timeline vertically - * @param {Event} event - * @private + * draw the data points + * + * @param {Array} dataset + * @param {Object} JSONcontainer + * @param {Object} svg | SVG DOM element + * @param {GraphGroup} group + * @param {Number} [offset] */ - Core.prototype._onPinch = function (event) { - this.touch.allowDragging = false; + Points.draw = function (dataset, group, framework, offset) { + if (offset === undefined) {offset = 0;} + for (var i = 0; i < dataset.length; i++) { + DOMutil.drawPoint(dataset[i].x + offset, dataset[i].y, group, framework.svgElements, framework.svg, dataset[i].label); + } }; + + module.exports = Points; + +/***/ }, +/* 48 */ +/***/ function(module, exports, __webpack_require__) { + /** - * Start moving the timeline vertically - * @param {Event} event - * @private + * Created by Alex on 11/11/2014. */ - Core.prototype._onDragStart = function (event) { - this.touch.initialScrollTop = this.props.scrollTop; + var DOMutil = __webpack_require__(6); + var Points = __webpack_require__(47); + + function Bargraph(groupId, options) { + this.groupId = groupId; + this.options = options; + } + + Bargraph.prototype.getYRange = function(groupData) { + if (this.options.barChart.handleOverlap != 'stack') { + var yMin = groupData[0].y; + var yMax = groupData[0].y; + for (var j = 0; j < groupData.length; j++) { + yMin = yMin > groupData[j].y ? groupData[j].y : yMin; + yMax = yMax < groupData[j].y ? groupData[j].y : yMax; + } + return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; + } + else { + var barCombinedData = []; + for (var j = 0; j < groupData.length; j++) { + barCombinedData.push({ + x: groupData[j].x, + y: groupData[j].y, + groupId: this.groupId + }); + } + return barCombinedData; + } }; + + /** - * Move the timeline vertically - * @param {Event} event - * @private + * draw a bar graph + * + * @param groupIds + * @param processedGroupData */ - Core.prototype._onDrag = function (event) { - // refuse to drag when we where pinching to prevent the timeline make a jump - // when releasing the fingers in opposite order from the touch screen - if (!this.touch.allowDragging) return; + Bargraph.draw = function (groupIds, processedGroupData, framework) { + var combinedData = []; + var intersections = {}; + var coreDistance; + var key, drawData; + var group; + var i,j; + var barPoints = 0; - var delta = event.gesture.deltaY; + // combine all barchart data + for (i = 0; i < groupIds.length; i++) { + group = framework.groups[groupIds[i]]; + if (group.options.style == 'bar') { + if (group.visible == true && (framework.options.groups.visibility[groupIds[i]] === undefined || framework.options.groups.visibility[groupIds[i]] == true)) { + for (j = 0; j < processedGroupData[groupIds[i]].length; j++) { + combinedData.push({ + x: processedGroupData[groupIds[i]][j].x, + y: processedGroupData[groupIds[i]][j].y, + groupId: groupIds[i] + }); + barPoints += 1; + } + } + } + } - var oldScrollTop = this._getScrollTop(); - var newScrollTop = this._setScrollTop(this.touch.initialScrollTop + delta); + if (barPoints == 0) {return;} + + // sort by time and by group + combinedData.sort(function (a, b) { + if (a.x == b.x) { + return a.groupId - b.groupId; + } else { + return a.x - b.x; + } + }); + + // get intersections + Bargraph._getDataIntersections(intersections, combinedData); + + // plot barchart + for (i = 0; i < combinedData.length; i++) { + group = framework.groups[combinedData[i].groupId]; + var minWidth = 0.1 * group.options.barChart.width; + key = combinedData[i].x; + var heightOffset = 0; + if (intersections[key] === undefined) { + if (i+1 < combinedData.length) {coreDistance = Math.abs(combinedData[i+1].x - key);} + if (i > 0) {coreDistance = Math.min(coreDistance,Math.abs(combinedData[i-1].x - key));} + drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth); + } + else { + var nextKey = i + (intersections[key].amount - intersections[key].resolved); + var prevKey = i - (intersections[key].resolved + 1); + if (nextKey < combinedData.length) {coreDistance = Math.abs(combinedData[nextKey].x - key);} + if (prevKey > 0) {coreDistance = Math.min(coreDistance,Math.abs(combinedData[prevKey].x - key));} + drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth); + intersections[key].resolved += 1; - if (newScrollTop != oldScrollTop) { - this._redraw(); // TODO: this causes two redraws when dragging, the other is triggered by rangechange already - this.emit("verticalDrag"); + if (group.options.barChart.handleOverlap == 'stack') { + heightOffset = intersections[key].accumulated; + intersections[key].accumulated += group.zeroPosition - combinedData[i].y; + } + else if (group.options.barChart.handleOverlap == 'sideBySide') { + drawData.width = drawData.width / intersections[key].amount; + drawData.offset += (intersections[key].resolved) * drawData.width - (0.5*drawData.width * (intersections[key].amount+1)); + if (group.options.barChart.align == 'left') {drawData.offset -= 0.5*drawData.width;} + else if (group.options.barChart.align == 'right') {drawData.offset += 0.5*drawData.width;} + } + } + DOMutil.drawBar(combinedData[i].x + drawData.offset, combinedData[i].y - heightOffset, drawData.width, group.zeroPosition - combinedData[i].y, group.className + ' bar', framework.svgElements, framework.svg); + // draw points + if (group.options.drawPoints.enabled == true) { + DOMutil.drawPoint(combinedData[i].x + drawData.offset, combinedData[i].y, group, framework.svgElements, framework.svg); + } } }; + /** - * Apply a scrollTop - * @param {Number} scrollTop - * @returns {Number} scrollTop Returns the applied scrollTop + * Fill the intersections object with counters of how many datapoints share the same x coordinates + * @param intersections + * @param combinedData * @private */ - Core.prototype._setScrollTop = function (scrollTop) { - this.props.scrollTop = scrollTop; - this._updateScrollTop(); - return this.props.scrollTop; + Bargraph._getDataIntersections = function (intersections, combinedData) { + // get intersections + var coreDistance; + for (var i = 0; i < combinedData.length; i++) { + if (i + 1 < combinedData.length) { + coreDistance = Math.abs(combinedData[i + 1].x - combinedData[i].x); + } + if (i > 0) { + coreDistance = Math.min(coreDistance, Math.abs(combinedData[i - 1].x - combinedData[i].x)); + } + if (coreDistance == 0) { + if (intersections[combinedData[i].x] === undefined) { + intersections[combinedData[i].x] = {amount: 0, resolved: 0, accumulated: 0}; + } + intersections[combinedData[i].x].amount += 1; + } + } }; + /** - * Update the current scrollTop when the height of the containers has been changed - * @returns {Number} scrollTop Returns the applied scrollTop + * Get the width and offset for bargraphs based on the coredistance between datapoints + * + * @param coreDistance + * @param group + * @param minWidth + * @returns {{width: Number, offset: Number}} * @private */ - Core.prototype._updateScrollTop = function () { - // recalculate the scrollTopMin - var scrollTopMin = Math.min(this.props.centerContainer.height - this.props.center.height, 0); // is negative or zero - if (scrollTopMin != this.props.scrollTopMin) { - // in case of bottom orientation, change the scrollTop such that the contents - // do not move relative to the time axis at the bottom - if (this.options.orientation == 'bottom') { - this.props.scrollTop += (scrollTopMin - this.props.scrollTopMin); + Bargraph._getSafeDrawData = function (coreDistance, group, minWidth) { + var width, offset; + if (coreDistance < group.options.barChart.width && coreDistance > 0) { + width = coreDistance < minWidth ? minWidth : coreDistance; + + offset = 0; // recalculate offset with the new width; + if (group.options.barChart.align == 'left') { + offset -= 0.5 * coreDistance; + } + else if (group.options.barChart.align == 'right') { + offset += 0.5 * coreDistance; + } + } + else { + // default settings + width = group.options.barChart.width; + offset = 0; + if (group.options.barChart.align == 'left') { + offset -= 0.5 * group.options.barChart.width; + } + else if (group.options.barChart.align == 'right') { + offset += 0.5 * group.options.barChart.width; } - this.props.scrollTopMin = scrollTopMin; } - // limit the scrollTop to the feasible scroll range - if (this.props.scrollTop > 0) this.props.scrollTop = 0; - if (this.props.scrollTop < scrollTopMin) this.props.scrollTop = scrollTopMin; - - return this.props.scrollTop; + return {width: width, offset: offset}; }; - /** - * Get the current scrollTop - * @returns {number} scrollTop - * @private - */ - Core.prototype._getScrollTop = function () { - return this.props.scrollTop; - }; + Bargraph.getStackedBarYRange = function(barCombinedData, groupRanges, groupIds, groupLabel, orientation) { + if (barCombinedData.length > 0) { + // sort by time and by group + barCombinedData.sort(function (a, b) { + if (a.x == b.x) { + return a.groupId - b.groupId; + } else { + return a.x - b.x; + } + }); + var intersections = {}; - module.exports = Core; + Bargraph._getDataIntersections(intersections, barCombinedData); + groupRanges[groupLabel] = Bargraph._getStackedBarYRange(intersections, barCombinedData); + groupRanges[groupLabel].yAxisOrientation = orientation; + groupIds.push(groupLabel); + } + } + + Bargraph._getStackedBarYRange = function (intersections, combinedData) { + var key; + var yMin = combinedData[0].y; + var yMax = combinedData[0].y; + for (var i = 0; i < combinedData.length; i++) { + key = combinedData[i].x; + if (intersections[key] === undefined) { + yMin = yMin > combinedData[i].y ? combinedData[i].y : yMin; + yMax = yMax < combinedData[i].y ? combinedData[i].y : yMax; + } + else { + intersections[key].accumulated += combinedData[i].y; + } + } + for (var xpos in intersections) { + if (intersections.hasOwnProperty(xpos)) { + yMin = yMin > intersections[xpos].accumulated ? intersections[xpos].accumulated : yMin; + yMax = yMax < intersections[xpos].accumulated ? intersections[xpos].accumulated : yMax; + } + } + return {min: yMin, max: yMax}; + }; + + module.exports = Bargraph; /***/ }, -/* 47 */ +/* 49 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(6); + var Component = __webpack_require__(23); /** - * Fake a hammer.js gesture. Event can be a ScrollEvent or MouseMoveEvent - * @param {Element} element - * @param {Event} event + * Legend for Graph2d */ - exports.fakeGesture = function(element, event) { - var eventType = null; + function Legend(body, options, side, linegraphOptions) { + this.body = body; + this.defaultOptions = { + enabled: true, + icons: true, + iconSize: 20, + iconSpacing: 6, + left: { + visible: true, + position: 'top-left' // top/bottom - left,center,right + }, + right: { + visible: true, + position: 'top-left' // top/bottom - left,center,right + } + } + this.side = side; + this.options = util.extend({},this.defaultOptions); + this.linegraphOptions = linegraphOptions; - // for hammer.js 1.0.5 - // var gesture = Hammer.event.collectEventData(this, eventType, event); + this.svgElements = {}; + this.dom = {}; + this.groups = {}; + this.amountOfGroups = 0; + this._create(); - // for hammer.js 1.0.6+ - var touches = Hammer.event.getTouchList(event, eventType); - var gesture = Hammer.event.collectEventData(this, eventType, touches, event); + this.setOptions(options); + } - // on IE in standards mode, no touches are recognized by hammer.js, - // resulting in NaN values for center.pageX and center.pageY - if (isNaN(gesture.center.pageX)) { - gesture.center.pageX = event.pageX; - } - if (isNaN(gesture.center.pageY)) { - gesture.center.pageY = event.pageY; - } + Legend.prototype = new Component(); - return gesture; - }; + Legend.prototype.clear = function() { + this.groups = {}; + this.amountOfGroups = 0; + } + Legend.prototype.addGroup = function(label, graphOptions) { -/***/ }, -/* 48 */ -/***/ function(module, exports, __webpack_require__) { + if (!this.groups.hasOwnProperty(label)) { + this.groups[label] = graphOptions; + } + this.amountOfGroups += 1; + }; - // English - exports['en'] = { - current: 'current', - time: 'time' + Legend.prototype.updateGroup = function(label, graphOptions) { + this.groups[label] = graphOptions; }; - exports['en_EN'] = exports['en']; - exports['en_US'] = exports['en']; - // Dutch - exports['nl'] = { - custom: 'aangepaste', - time: 'tijd' + Legend.prototype.removeGroup = function(label) { + if (this.groups.hasOwnProperty(label)) { + delete this.groups[label]; + this.amountOfGroups -= 1; + } }; - exports['nl_NL'] = exports['nl']; - exports['nl_BE'] = exports['nl']; + Legend.prototype._create = function() { + this.dom.frame = document.createElement('div'); + this.dom.frame.className = 'legend'; + this.dom.frame.style.position = "absolute"; + this.dom.frame.style.top = "10px"; + this.dom.frame.style.display = "block"; -/***/ }, -/* 49 */ -/***/ function(module, exports, __webpack_require__) { + this.dom.textArea = document.createElement('div'); + this.dom.textArea.className = 'legendText'; + this.dom.textArea.style.position = "relative"; + this.dom.textArea.style.top = "0px"; - /** - * Created by Alex on 11/11/2014. - */ - var DOMutil = __webpack_require__(2); - var Points = __webpack_require__(51); + this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); + this.svg.style.position = 'absolute'; + this.svg.style.top = 0 +'px'; + this.svg.style.width = this.options.iconSize + 5 + 'px'; + this.svg.style.height = '100%'; - function Line(groupId, options) { - this.groupId = groupId; - this.options = options; - } + this.dom.frame.appendChild(this.svg); + this.dom.frame.appendChild(this.dom.textArea); + }; - Line.prototype.getYRange = function(groupData) { - var yMin = groupData[0].y; - var yMax = groupData[0].y; - for (var j = 0; j < groupData.length; j++) { - yMin = yMin > groupData[j].y ? groupData[j].y : yMin; - yMax = yMax < groupData[j].y ? groupData[j].y : yMax; + /** + * Hide the component from the DOM + */ + Legend.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); } - return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; }; - /** - * draw a line graph - * - * @param dataset - * @param group + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed */ - Line.prototype.draw = function (dataset, group, framework) { - if (dataset != null) { - if (dataset.length > 0) { - var path, d; - var svgHeight = Number(framework.svg.style.height.replace('px','')); - path = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); - path.setAttributeNS(null, "class", group.className); - if(group.style !== undefined) { - path.setAttributeNS(null, "style", group.style); - } - - // construct path from dataset - if (group.options.catmullRom.enabled == true) { - d = Line._catmullRom(dataset, group); - } - else { - d = Line._linear(dataset); - } + Legend.prototype.show = function() { + // show frame containing the items + if (!this.dom.frame.parentNode) { + this.body.dom.center.appendChild(this.dom.frame); + } + }; - // append with points for fill and finalize the path - if (group.options.shaded.enabled == true) { - var fillPath = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); - var dFill; - if (group.options.shaded.orientation == 'top') { - dFill = 'M' + dataset[0].x + ',' + 0 + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + 0; - } - else { - dFill = 'M' + dataset[0].x + ',' + svgHeight + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + svgHeight; - } - fillPath.setAttributeNS(null, "class", group.className + " fill"); - if(group.options.shaded.style !== undefined) { - fillPath.setAttributeNS(null, "style", group.options.shaded.style); - } - fillPath.setAttributeNS(null, "d", dFill); - } - // copy properties to path for drawing. - path.setAttributeNS(null, 'd', 'M' + d); + Legend.prototype.setOptions = function(options) { + var fields = ['enabled','orientation','icons','left','right']; + util.selectiveDeepExtend(fields, this.options, options); + }; - // draw points - if (group.options.drawPoints.enabled == true) { - Points.draw(dataset, group, framework); + Legend.prototype.redraw = function() { + var activeGroups = 0; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + activeGroups++; } } } - }; + if (this.options[this.side].visible == false || this.amountOfGroups == 0 || this.options.enabled == false || activeGroups == 0) { + this.hide(); + } + else { + this.show(); + if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'bottom-left') { + this.dom.frame.style.left = '4px'; + this.dom.frame.style.textAlign = "left"; + this.dom.textArea.style.textAlign = "left"; + this.dom.textArea.style.left = (this.options.iconSize + 15) + 'px'; + this.dom.textArea.style.right = ''; + this.svg.style.left = 0 +'px'; + this.svg.style.right = ''; + } + else { + this.dom.frame.style.right = '4px'; + this.dom.frame.style.textAlign = "right"; + this.dom.textArea.style.textAlign = "right"; + this.dom.textArea.style.right = (this.options.iconSize + 15) + 'px'; + this.dom.textArea.style.left = ''; + this.svg.style.right = 0 +'px'; + this.svg.style.left = ''; + } + if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'top-right') { + this.dom.frame.style.top = 4 - Number(this.body.dom.center.style.top.replace("px","")) + 'px'; + this.dom.frame.style.bottom = ''; + } + else { + var scrollableHeight = this.body.domProps.center.height - this.body.domProps.centerContainer.height; + this.dom.frame.style.bottom = 4 + scrollableHeight + Number(this.body.dom.center.style.top.replace("px","")) + 'px'; + this.dom.frame.style.top = ''; + } - /** - * This uses an uniform parametrization of the CatmullRom algorithm: - * 'On the Parameterization of Catmull-Rom Curves' by Cem Yuksel et al. - * @param data - * @returns {string} - * @private - */ - Line._catmullRomUniform = function(data) { - // catmull rom - var p0, p1, p2, p3, bp1, bp2; - var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; - var normalization = 1/6; - var length = data.length; - for (var i = 0; i < length - 1; i++) { + if (this.options.icons == false) { + this.dom.frame.style.width = this.dom.textArea.offsetWidth + 10 + 'px'; + this.dom.textArea.style.right = ''; + this.dom.textArea.style.left = ''; + this.svg.style.width = '0px'; + } + else { + this.dom.frame.style.width = this.options.iconSize + 15 + this.dom.textArea.offsetWidth + 10 + 'px' + this.drawLegendIcons(); + } - p0 = (i == 0) ? data[0] : data[i-1]; - p1 = data[i]; - p2 = data[i+1]; - p3 = (i + 2 < length) ? data[i+2] : p2; + var content = ''; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + content += this.groups[groupId].content + '
'; + } + } + } + this.dom.textArea.innerHTML = content; + this.dom.textArea.style.lineHeight = ((0.75 * this.options.iconSize) + this.options.iconSpacing) + 'px'; + } + }; + Legend.prototype.drawLegendIcons = function() { + if (this.dom.frame.parentNode) { + DOMutil.prepareElements(this.svgElements); + var padding = window.getComputedStyle(this.dom.frame).paddingTop; + var iconOffset = Number(padding.replace('px','')); + var x = iconOffset; + var iconWidth = this.options.iconSize; + var iconHeight = 0.75 * this.options.iconSize; + var y = iconOffset + 0.5 * iconHeight + 3; - // Catmull-Rom to Cubic Bezier conversion matrix - // 0 1 0 0 - // -1/6 1 1/6 0 - // 0 1/6 1 -1/6 - // 0 0 1 0 + this.svg.style.width = iconWidth + 5 + iconOffset + 'px'; - // bp0 = { x: p1.x, y: p1.y }; - bp1 = { x: ((-p0.x + 6*p1.x + p2.x) *normalization), y: ((-p0.y + 6*p1.y + p2.y) *normalization)}; - bp2 = { x: (( p1.x + 6*p2.x - p3.x) *normalization), y: (( p1.y + 6*p2.y - p3.y) *normalization)}; - // bp0 = { x: p2.x, y: p2.y }; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); + y += iconHeight + this.options.iconSpacing; + } + } + } - d += 'C' + - bp1.x + ',' + - bp1.y + ' ' + - bp2.x + ',' + - bp2.y + ' ' + - p2.x + ',' + - p2.y + ' '; + DOMutil.cleanupElements(this.svgElements); } - - return d; }; - /** - * This uses either the chordal or centripetal parameterization of the catmull-rom algorithm. - * By default, the centripetal parameterization is used because this gives the nicest results. - * These parameterizations are relatively heavy because the distance between 4 points have to be calculated. - * - * One optimization can be used to reuse distances since this is a sliding window approach. - * @param data - * @param group - * @returns {string} - * @private - */ - Line._catmullRom = function(data, group) { - var alpha = group.options.catmullRom.alpha; - if (alpha == 0 || alpha === undefined) { - return this._catmullRomUniform(data); - } - else { - var p0, p1, p2, p3, bp1, bp2, d1,d2,d3, A, B, N, M; - var d3powA, d2powA, d3pow2A, d2pow2A, d1pow2A, d1powA; - var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; - var length = data.length; - for (var i = 0; i < length - 1; i++) { - - p0 = (i == 0) ? data[0] : data[i-1]; - p1 = data[i]; - p2 = data[i+1]; - p3 = (i + 2 < length) ? data[i+2] : p2; - - d1 = Math.sqrt(Math.pow(p0.x - p1.x,2) + Math.pow(p0.y - p1.y,2)); - d2 = Math.sqrt(Math.pow(p1.x - p2.x,2) + Math.pow(p1.y - p2.y,2)); - d3 = Math.sqrt(Math.pow(p2.x - p3.x,2) + Math.pow(p2.y - p3.y,2)); + module.exports = Legend; - // Catmull-Rom to Cubic Bezier conversion matrix - // A = 2d1^2a + 3d1^a * d2^a + d3^2a - // B = 2d3^2a + 3d3^a * d2^a + d2^2a +/***/ }, +/* 50 */ +/***/ function(module, exports, __webpack_require__) { - // [ 0 1 0 0 ] - // [ -d2^2a /N A/N d1^2a /N 0 ] - // [ 0 d3^2a /M B/M -d2^2a /M ] - // [ 0 0 1 0 ] + // Utility functions for ordering and stacking of items + var EPSILON = 0.001; // used when checking collisions, to prevent round-off errors - d3powA = Math.pow(d3, alpha); - d3pow2A = Math.pow(d3,2*alpha); - d2powA = Math.pow(d2, alpha); - d2pow2A = Math.pow(d2,2*alpha); - d1powA = Math.pow(d1, alpha); - d1pow2A = Math.pow(d1,2*alpha); + /** + * Order items by their start data + * @param {Item[]} items + */ + exports.orderByStart = function(items) { + items.sort(function (a, b) { + return a.data.start - b.data.start; + }); + }; - A = 2*d1pow2A + 3*d1powA * d2powA + d2pow2A; - B = 2*d3pow2A + 3*d3powA * d2powA + d2pow2A; - N = 3*d1powA * (d1powA + d2powA); - if (N > 0) {N = 1 / N;} - M = 3*d3powA * (d3powA + d2powA); - if (M > 0) {M = 1 / M;} + /** + * Order items by their end date. If they have no end date, their start date + * is used. + * @param {Item[]} items + */ + exports.orderByEnd = function(items) { + items.sort(function (a, b) { + var aTime = ('end' in a.data) ? a.data.end : a.data.start, + bTime = ('end' in b.data) ? b.data.end : b.data.start; - bp1 = { x: ((-d2pow2A * p0.x + A*p1.x + d1pow2A * p2.x) * N), - y: ((-d2pow2A * p0.y + A*p1.y + d1pow2A * p2.y) * N)}; + return aTime - bTime; + }); + }; - bp2 = { x: (( d3pow2A * p1.x + B*p2.x - d2pow2A * p3.x) * M), - y: (( d3pow2A * p1.y + B*p2.y - d2pow2A * p3.y) * M)}; + /** + * Adjust vertical positions of the items such that they don't overlap each + * other. + * @param {Item[]} items + * All visible items + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * Margins between items and between items and the axis. + * @param {boolean} [force=false] + * If true, all items will be repositioned. If false (default), only + * items having a top===null will be re-stacked + */ + exports.stack = function(items, margin, force) { + var i, iMax; - if (bp1.x == 0 && bp1.y == 0) {bp1 = p1;} - if (bp2.x == 0 && bp2.y == 0) {bp2 = p2;} - d += 'C' + - bp1.x + ',' + - bp1.y + ' ' + - bp2.x + ',' + - bp2.y + ' ' + - p2.x + ',' + - p2.y + ' '; + if (force) { + // reset top position of all items + for (i = 0, iMax = items.length; i < iMax; i++) { + items[i].top = null; } + } - return d; + // calculate new, non-overlapping positions + for (i = 0, iMax = items.length; i < iMax; i++) { + var item = items[i]; + if (item.stack && item.top === null) { + // initialize top position + item.top = margin.axis; + + do { + // TODO: optimize checking for overlap. when there is a gap without items, + // you only need to check for items from the next item on, not from zero + var collidingItem = null; + for (var j = 0, jj = items.length; j < jj; j++) { + var other = items[j]; + if (other.top !== null && other !== item && other.stack && exports.collision(item, other, margin.item)) { + collidingItem = other; + break; + } + } + + if (collidingItem != null) { + // There is a collision. Reposition the items above the colliding element + item.top = collidingItem.top + collidingItem.height + margin.item.vertical; + } + } while (collidingItem); + } } }; + /** - * this generates the SVG path for a linear drawing between datapoints. - * @param data - * @returns {string} - * @private + * Adjust vertical positions of the items without stacking them + * @param {Item[]} items + * All visible items + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * Margins between items and between items and the axis. */ - Line._linear = function(data) { - // linear - var d = ''; - for (var i = 0; i < data.length; i++) { - if (i == 0) { - d += data[i].x + ',' + data[i].y; + exports.nostack = function(items, margin, subgroups) { + var i, iMax, newTop; + + // reset top position of all items + for (i = 0, iMax = items.length; i < iMax; i++) { + if (items[i].data.subgroup !== undefined) { + newTop = margin.axis; + for (var subgroup in subgroups) { + if (subgroups.hasOwnProperty(subgroup)) { + if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroups[items[i].data.subgroup].index) { + newTop += subgroups[subgroup].height + margin.item.vertical; + } + } + } + items[i].top = newTop; } else { - d += ' ' + data[i].x + ',' + data[i].y; + items[i].top = margin.axis; } } - return d; }; - module.exports = Line; + /** + * Test if the two provided items collide + * The items must have parameters left, width, top, and height. + * @param {Item} a The first item + * @param {Item} b The second item + * @param {{horizontal: number, vertical: number}} margin + * An object containing a horizontal and vertical + * minimum required margin. + * @return {boolean} true if a and b collide, else false + */ + exports.collision = function(a, b, margin) { + return ((a.left - margin.horizontal + EPSILON) < (b.left + b.width) && + (a.left + a.width + margin.horizontal - EPSILON) > b.left && + (a.top - margin.vertical + EPSILON) < (b.top + b.height) && + (a.top + a.height + margin.vertical - EPSILON) > b.top); + }; /***/ }, -/* 50 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { + var Emitter = __webpack_require__(11); + var Hammer = __webpack_require__(19); + var keycharm = __webpack_require__(37); + var util = __webpack_require__(1); + var hammerUtil = __webpack_require__(22); + var DataSet = __webpack_require__(7); + var DataView = __webpack_require__(9); + var dotparser = __webpack_require__(52); + var gephiParser = __webpack_require__(53); + var Groups = __webpack_require__(54); + var Images = __webpack_require__(55); + var Node = __webpack_require__(56); + var Edge = __webpack_require__(57); + var Popup = __webpack_require__(58); + var MixinLoader = __webpack_require__(59); + var Activator = __webpack_require__(36); + var locales = __webpack_require__(70); + + // Load custom shapes into CanvasRenderingContext2D + __webpack_require__(71); + /** - * Created by Alex on 11/11/2014. + * @constructor Network + * Create a network visualization, displaying nodes and edges. + * + * @param {Element} container The DOM element in which the Network will + * be created. Normally a div element. + * @param {Object} data An object containing parameters + * {Array} nodes + * {Array} edges + * @param {Object} options Options */ - var DOMutil = __webpack_require__(2); - var Points = __webpack_require__(51); + function Network (container, data, options) { + if (!(this instanceof Network)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } - function Bargraph(groupId, options) { - this.groupId = groupId; - this.options = options; - } + this._determineBrowserMethod(); + this._initializeMixinLoaders(); - Bargraph.prototype.getYRange = function(groupData) { - if (this.options.barChart.handleOverlap != 'stack') { - var yMin = groupData[0].y; - var yMax = groupData[0].y; - for (var j = 0; j < groupData.length; j++) { - yMin = yMin > groupData[j].y ? groupData[j].y : yMin; - yMax = yMax < groupData[j].y ? groupData[j].y : yMax; - } - return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; - } - else { - var barCombinedData = []; - for (var j = 0; j < groupData.length; j++) { - barCombinedData.push({ - x: groupData[j].x, - y: groupData[j].y, - groupId: this.groupId - }); - } - return barCombinedData; - } - }; + // create variables and set default values + this.containerElement = container; + // render and calculation settings + this.renderRefreshRate = 60; // hz (fps) + this.renderTimestep = 1000 / this.renderRefreshRate; // ms -- saves calculation later on + this.renderTime = 0; // measured time it takes to render a frame + this.physicsTime = 0; // measured time it takes to render a frame + this.runDoubleSpeed = false; + this.physicsDiscreteStepsize = 0.50; // discrete stepsize of the simulation + this.initializing = true; - /** - * draw a bar graph - * - * @param groupIds - * @param processedGroupData - */ - Bargraph.draw = function (groupIds, processedGroupData, framework) { - var combinedData = []; - var intersections = {}; - var coreDistance; - var key, drawData; - var group; - var i,j; - var barPoints = 0; + this.triggerFunctions = {add:null,edit:null,editEdge:null,connect:null,del:null}; - // combine all barchart data - for (i = 0; i < groupIds.length; i++) { - group = framework.groups[groupIds[i]]; - if (group.options.style == 'bar') { - if (group.visible == true && (framework.options.groups.visibility[groupIds[i]] === undefined || framework.options.groups.visibility[groupIds[i]] == true)) { - for (j = 0; j < processedGroupData[groupIds[i]].length; j++) { - combinedData.push({ - x: processedGroupData[groupIds[i]][j].x, - y: processedGroupData[groupIds[i]][j].y, - groupId: groupIds[i] - }); - barPoints += 1; + var customScalingFunction = function (min,max,total,value) { + if (max == min) { + return 0.5; + } + else { + var scale = 1 / (max - min); + return Math.max(0,(value - min)*scale); + } + }; + // set constant values + this.defaultOptions = { + nodes: { + customScalingFunction: customScalingFunction, + mass: 1, + radiusMin: 10, + radiusMax: 30, + radius: 10, + shape: 'ellipse', + image: undefined, + widthMin: 16, // px + widthMax: 64, // px + fontColor: 'black', + fontSize: 14, // px + fontFace: 'verdana', + fontFill: undefined, + fontStrokeWidth: 0, // px + fontStrokeColor: '#ffffff', + fontDrawThreshold: 3, + scaleFontWithValue: false, + fontSizeMin: 14, + fontSizeMax: 30, + fontSizeMaxVisible: 30, + level: -1, + color: { + border: '#2B7CE9', + background: '#97C2FC', + highlight: { + border: '#2B7CE9', + background: '#D2E5FF' + }, + hover: { + border: '#2B7CE9', + background: '#D2E5FF' } + }, + group: undefined, + borderWidth: 1, + borderWidthSelected: undefined + }, + edges: { + customScalingFunction: customScalingFunction, + widthMin: 1, // + widthMax: 15,// + width: 1, + widthSelectionMultiplier: 2, + hoverWidth: 1.5, + style: 'line', + color: { + color:'#848484', + highlight:'#848484', + hover: '#848484' + }, + opacity:1.0, + fontColor: '#343434', + fontSize: 14, // px + fontFace: 'arial', + fontFill: 'white', + fontStrokeWidth: 0, // px + fontStrokeColor: 'white', + labelAlignment:'horizontal', + arrowScaleFactor: 1, + dash: { + length: 10, + gap: 5, + altLength: undefined + }, + inheritColor: "from", // to, from, false, true (== from) + useGradients: false // release in 4.0 + }, + configurePhysics:false, + physics: { + barnesHut: { + enabled: true, + thetaInverted: 1 / 0.5, // inverted to save time during calculation + gravitationalConstant: -2000, + centralGravity: 0.3, + springLength: 95, + springConstant: 0.04, + damping: 0.09 + }, + repulsion: { + centralGravity: 0.0, + springLength: 200, + springConstant: 0.05, + nodeDistance: 100, + damping: 0.09 + }, + hierarchicalRepulsion: { + enabled: false, + centralGravity: 0.0, + springLength: 100, + springConstant: 0.01, + nodeDistance: 150, + damping: 0.09 + }, + damping: null, + centralGravity: null, + springLength: null, + springConstant: null + }, + clustering: { // Per Node in Cluster = PNiC + enabled: false, // (Boolean) | global on/off switch for clustering. + initialMaxNodes: 100, // (# nodes) | if the initial amount of nodes is larger than this, we cluster until the total number is less than this threshold. + clusterThreshold:500, // (# nodes) | during calculate forces, we check if the total number of nodes is larger than this. If it is, cluster until reduced to reduceToNodes + reduceToNodes:300, // (# nodes) | during calculate forces, we check if the total number of nodes is larger than clusterThreshold. If it is, cluster until reduced to this + chainThreshold: 0.4, // (% of all drawn nodes)| maximum percentage of allowed chainnodes (long strings of connected nodes) within all nodes. (lower means less chains). + clusterEdgeThreshold: 20, // (px) | edge length threshold. if smaller, this node is clustered. + sectorThreshold: 100, // (# nodes in cluster) | cluster size threshold. If larger, expanding in own sector. + screenSizeThreshold: 0.2, // (% of canvas) | relative size threshold. If the width or height of a clusternode takes up this much of the screen, decluster node. + fontSizeMultiplier: 4.0, // (px PNiC) | how much the cluster font size grows per node in cluster (in px). + maxFontSize: 1000, + forceAmplification: 0.1, // (multiplier PNiC) | factor of increase fo the repulsion force of a cluster (per node in cluster). + distanceAmplification: 0.1, // (multiplier PNiC) | factor how much the repulsion distance of a cluster increases (per node in cluster). + edgeGrowth: 20, // (px PNiC) | amount of clusterSize connected to the edge is multiplied with this and added to edgeLength. + nodeScaling: {width: 1, // (px PNiC) | growth of the width per node in cluster. + height: 1, // (px PNiC) | growth of the height per node in cluster. + radius: 1}, // (px PNiC) | growth of the radius per node in cluster. + maxNodeSizeIncrements: 600, // (# increments) | max growth of the width per node in cluster. + activeAreaBoxSize: 80, // (px) | box area around the curser where clusters are popped open. + clusterLevelDifference: 2, // used for normalization of the cluster levels + clusterByZoom: true // enable clustering through zooming in and out + }, + navigation: { + enabled: false + }, + keyboard: { + enabled: false, + speed: {x: 10, y: 10, zoom: 0.02}, + bindToWindow: true + }, + dataManipulation: { + enabled: false, + initiallyVisible: false + }, + hierarchicalLayout: { + enabled:false, + levelSeparation: 150, + nodeSpacing: 100, + direction: "UD", // UD, DU, LR, RL + layout: "hubsize" // hubsize, directed + }, + freezeForStabilization: false, + smoothCurves: { + enabled: true, + dynamic: true, + type: "continuous", + roundness: 0.5 + }, + maxVelocity: 50, + minVelocity: 0.1, // px/s + stabilize: true, // stabilize before displaying the network + stabilizationIterations: 1000, // maximum number of iteration to stabilize + zoomExtentOnStabilize: true, + locale: 'en', + locales: locales, + tooltip: { + delay: 300, + fontColor: 'black', + fontSize: 14, // px + fontFace: 'verdana', + color: { + border: '#666', + background: '#FFFFC6' } - } - } + }, + dragNetwork: true, + dragNodes: true, + zoomable: true, + hover: false, + hideEdgesOnDrag: false, + hideNodesOnDrag: false, + width : '100%', + height : '100%', + selectable: true, + useDefaultGroups: true + }; + this.constants = util.extend({}, this.defaultOptions); + this.pixelRatio = 1; + + + this.hoverObj = {nodes:{},edges:{}}; + this.controlNodesActive = false; + this.navigationHammers = []; + this.manipulationHammers = []; - if (barPoints == 0) {return;} + // animation properties + this.animationSpeed = 1/this.renderRefreshRate; + this.animationEasingFunction = "easeInOutQuint"; + this.animating = false; + this.easingTime = 0; + this.sourceScale = 0; + this.targetScale = 0; + this.sourceTranslation = 0; + this.targetTranslation = 0; + this.lockedOnNodeId = null; + this.lockedOnNodeOffset = null; + this.touchTime = 0; + this.redrawRequested = false; - // sort by time and by group - combinedData.sort(function (a, b) { - if (a.x == b.x) { - return a.groupId - b.groupId; - } else { - return a.x - b.x; - } + // Node variables + var network = this; + this.groups = new Groups(); // object with groups + this.images = new Images(); // object with images + this.images.setOnloadCallback(function (status) { + network._requestRedraw(); }); - // get intersections - Bargraph._getDataIntersections(intersections, combinedData); + // keyboard navigation variables + this.xIncrement = 0; + this.yIncrement = 0; + this.zoomIncrement = 0; - // plot barchart - for (i = 0; i < combinedData.length; i++) { - group = framework.groups[combinedData[i].groupId]; - var minWidth = 0.1 * group.options.barChart.width; + // loading all the mixins: + // load the force calculation functions, grouped under the physics system. + this._loadPhysicsSystem(); + // create a frame and canvas + this._create(); + // load the sector system. (mandatory, fully integrated with Network) + this._loadSectorSystem(); + // load the cluster system. (mandatory, even when not using the cluster system, there are function calls to it) + this._loadClusterSystem(); + // load the selection system. (mandatory, required by Network) + this._loadSelectionSystem(); + // load the selection system. (mandatory, required by Network) + this._loadHierarchySystem(); + + + // apply options + this._setTranslation(this.frame.clientWidth / 2, this.frame.clientHeight / 2); + this._setScale(1); + this.setOptions(options); + + // other vars + this.freezeSimulationEnabled = false;// freeze the simulation + this.cachedFunctions = {}; + this.startedStabilization = false; + this.stabilized = false; + this.stabilizationIterations = null; + this.draggingNodes = false; + + // containers for nodes and edges + this.calculationNodes = {}; + this.calculationNodeIndices = []; + this.nodeIndices = []; // array with all the indices of the nodes. Used to speed up forces calculation + this.nodes = {}; // object with Node objects + this.edges = {}; // object with Edge objects + + // position and scale variables and objects + this.canvasTopLeft = {"x": 0,"y": 0}; // coordinates of the top left of the canvas. they will be set during _redraw. + this.canvasBottomRight = {"x": 0,"y": 0}; // coordinates of the bottom right of the canvas. they will be set during _redraw + this.pointerPosition = {"x": 0,"y": 0}; // coordinates of the bottom right of the canvas. they will be set during _redraw + this.areaCenter = {}; // object with x and y elements used for determining the center of the zoom action + this.scale = 1; // defining the global scale variable in the constructor + this.previousScale = this.scale; // this is used to check if the zoom operation is zooming in or out + + // datasets or dataviews + this.nodesData = null; // A DataSet or DataView + this.edgesData = null; // A DataSet or DataView + + // create event listeners used to subscribe on the DataSets of the nodes and edges + this.nodesListeners = { + 'add': function (event, params) { + network._addNodes(params.items); + network.start(); + }, + 'update': function (event, params) { + network._updateNodes(params.items); + network.start(); + }, + 'remove': function (event, params) { + network._removeNodes(params.items); + network.start(); + } + }; + this.edgesListeners = { + 'add': function (event, params) { + network._addEdges(params.items); + network.start(); + }, + 'update': function (event, params) { + network._updateEdges(params.items); + network.start(); + }, + 'remove': function (event, params) { + network._removeEdges(params.items); + network.start(); + } + }; + + // properties for the animation + this.moving = true; + this.timer = undefined; // Scheduling function. Is definded in this.start(); + + // load data (the disable start variable will be the same as the enabled clustering) + this.setData(data,this.constants.clustering.enabled || this.constants.hierarchicalLayout.enabled); - key = combinedData[i].x; - var heightOffset = 0; - if (intersections[key] === undefined) { - if (i+1 < combinedData.length) {coreDistance = Math.abs(combinedData[i+1].x - key);} - if (i > 0) {coreDistance = Math.min(coreDistance,Math.abs(combinedData[i-1].x - key));} - drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth); + // hierarchical layout + this.initializing = false; + if (this.constants.hierarchicalLayout.enabled == true) { + this._setupHierarchicalLayout(); + } + else { + // zoom so all data will fit on the screen, if clustering is enabled, we do not want start to be called here. + if (this.constants.stabilize == false) { + this.zoomExtent({duration:0}, true, this.constants.clustering.enabled); } - else { - var nextKey = i + (intersections[key].amount - intersections[key].resolved); - var prevKey = i - (intersections[key].resolved + 1); - if (nextKey < combinedData.length) {coreDistance = Math.abs(combinedData[nextKey].x - key);} - if (prevKey > 0) {coreDistance = Math.min(coreDistance,Math.abs(combinedData[prevKey].x - key));} - drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth); - intersections[key].resolved += 1; + } - if (group.options.barChart.handleOverlap == 'stack') { - heightOffset = intersections[key].accumulated; - intersections[key].accumulated += group.zeroPosition - combinedData[i].y; - } - else if (group.options.barChart.handleOverlap == 'sideBySide') { - drawData.width = drawData.width / intersections[key].amount; - drawData.offset += (intersections[key].resolved) * drawData.width - (0.5*drawData.width * (intersections[key].amount+1)); - if (group.options.barChart.align == 'left') {drawData.offset -= 0.5*drawData.width;} - else if (group.options.barChart.align == 'right') {drawData.offset += 0.5*drawData.width;} - } - } - DOMutil.drawBar(combinedData[i].x + drawData.offset, combinedData[i].y - heightOffset, drawData.width, group.zeroPosition - combinedData[i].y, group.className + ' bar', framework.svgElements, framework.svg); - // draw points - if (group.options.drawPoints.enabled == true) { - DOMutil.drawPoint(combinedData[i].x + drawData.offset, combinedData[i].y, group, framework.svgElements, framework.svg); - } + // if clustering is disabled, the simulation will have started in the setData function + if (this.constants.clustering.enabled) { + this.startWithClustering(); } - }; + } + // Extend Network with an Emitter mixin + Emitter(Network.prototype); /** - * Fill the intersections object with counters of how many datapoints share the same x coordinates - * @param intersections - * @param combinedData + * Determine if the browser requires a setTimeout or a requestAnimationFrame. This was required because + * some implementations (safari and IE9) did not support requestAnimationFrame * @private */ - Bargraph._getDataIntersections = function (intersections, combinedData) { - // get intersections - var coreDistance; - for (var i = 0; i < combinedData.length; i++) { - if (i + 1 < combinedData.length) { - coreDistance = Math.abs(combinedData[i + 1].x - combinedData[i].x); - } - if (i > 0) { - coreDistance = Math.min(coreDistance, Math.abs(combinedData[i - 1].x - combinedData[i].x)); - } - if (coreDistance == 0) { - if (intersections[combinedData[i].x] === undefined) { - intersections[combinedData[i].x] = {amount: 0, resolved: 0, accumulated: 0}; - } - intersections[combinedData[i].x].amount += 1; + Network.prototype._determineBrowserMethod = function() { + var browserType = navigator.userAgent.toLowerCase(); + this.requiresTimeout = false; + if (browserType.indexOf('msie 9.0') != -1) { // IE 9 + this.requiresTimeout = true; + } + else if (browserType.indexOf('safari') != -1) { // safari + if (browserType.indexOf('chrome') <= -1) { + this.requiresTimeout = true; } } - }; + } /** - * Get the width and offset for bargraphs based on the coredistance between datapoints + * Get the script path where the vis.js library is located * - * @param coreDistance - * @param group - * @param minWidth - * @returns {{width: Number, offset: Number}} + * @returns {string | null} path Path or null when not found. Path does not + * end with a slash. * @private */ - Bargraph._getSafeDrawData = function (coreDistance, group, minWidth) { - var width, offset; - if (coreDistance < group.options.barChart.width && coreDistance > 0) { - width = coreDistance < minWidth ? minWidth : coreDistance; + Network.prototype._getScriptPath = function() { + var scripts = document.getElementsByTagName( 'script' ); - offset = 0; // recalculate offset with the new width; - if (group.options.barChart.align == 'left') { - offset -= 0.5 * coreDistance; - } - else if (group.options.barChart.align == 'right') { - offset += 0.5 * coreDistance; - } - } - else { - // default settings - width = group.options.barChart.width; - offset = 0; - if (group.options.barChart.align == 'left') { - offset -= 0.5 * group.options.barChart.width; - } - else if (group.options.barChart.align == 'right') { - offset += 0.5 * group.options.barChart.width; + // find script named vis.js or vis.min.js + for (var i = 0; i < scripts.length; i++) { + var src = scripts[i].src; + var match = src && /\/?vis(.min)?\.js$/.exec(src); + if (match) { + // return path without the script name + return src.substring(0, src.length - match[0].length); } } - return {width: width, offset: offset}; + return null; }; - Bargraph.getStackedBarYRange = function(barCombinedData, groupRanges, groupIds, groupLabel, orientation) { - if (barCombinedData.length > 0) { - // sort by time and by group - barCombinedData.sort(function (a, b) { - if (a.x == b.x) { - return a.groupId - b.groupId; - } else { - return a.x - b.x; - } - }); - var intersections = {}; - - Bargraph._getDataIntersections(intersections, barCombinedData); - groupRanges[groupLabel] = Bargraph._getStackedBarYRange(intersections, barCombinedData); - groupRanges[groupLabel].yAxisOrientation = orientation; - groupIds.push(groupLabel); - } - } - Bargraph._getStackedBarYRange = function (intersections, combinedData) { - var key; - var yMin = combinedData[0].y; - var yMax = combinedData[0].y; - for (var i = 0; i < combinedData.length; i++) { - key = combinedData[i].x; - if (intersections[key] === undefined) { - yMin = yMin > combinedData[i].y ? combinedData[i].y : yMin; - yMax = yMax < combinedData[i].y ? combinedData[i].y : yMax; - } - else { - intersections[key].accumulated += combinedData[i].y; + /** + * Find the center position of the network + * @private + */ + Network.prototype._getRange = function(specificNodes) { + var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; + if (specificNodes.length > 0) { + for (var i = 0; i < specificNodes.length; i++) { + node = this.nodes[specificNodes[i]]; + if (minX > (node.boundingBox.left)) { + minX = node.boundingBox.left; + } + if (maxX < (node.boundingBox.right)) { + maxX = node.boundingBox.right; + } + if (minY > (node.boundingBox.bottom)) { + minY = node.boundingBox.top; + } // top is negative, bottom is positive + if (maxY < (node.boundingBox.top)) { + maxY = node.boundingBox.bottom; + } // top is negative, bottom is positive } } - for (var xpos in intersections) { - if (intersections.hasOwnProperty(xpos)) { - yMin = yMin > intersections[xpos].accumulated ? intersections[xpos].accumulated : yMin; - yMax = yMax < intersections[xpos].accumulated ? intersections[xpos].accumulated : yMax; + else { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (minX > (node.boundingBox.left)) { + minX = node.boundingBox.left; + } + if (maxX < (node.boundingBox.right)) { + maxX = node.boundingBox.right; + } + if (minY > (node.boundingBox.bottom)) { + minY = node.boundingBox.top; + } // top is negative, bottom is positive + if (maxY < (node.boundingBox.top)) { + maxY = node.boundingBox.bottom; + } // top is negative, bottom is positive + } } } - return {min: yMin, max: yMax}; + if (minX == 1e9 && maxX == -1e9 && minY == 1e9 && maxY == -1e9) { + minY = 0, maxY = 0, minX = 0, maxX = 0; + } + return {minX: minX, maxX: maxX, minY: minY, maxY: maxY}; }; - module.exports = Bargraph; - -/***/ }, -/* 51 */ -/***/ function(module, exports, __webpack_require__) { /** - * Created by Alex on 11/11/2014. + * @param {object} range = {minX: minX, maxX: maxX, minY: minY, maxY: maxY}; + * @returns {{x: number, y: number}} + * @private */ - var DOMutil = __webpack_require__(2); - - function Points(groupId, options) { - this.groupId = groupId; - this.options = options; - } - - - Points.prototype.getYRange = function(groupData) { - var yMin = groupData[0].y; - var yMax = groupData[0].y; - for (var j = 0; j < groupData.length; j++) { - yMin = yMin > groupData[j].y ? groupData[j].y : yMin; - yMax = yMax < groupData[j].y ? groupData[j].y : yMax; - } - return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; + Network.prototype._findCenter = function(range) { + return {x: (0.5 * (range.maxX + range.minX)), + y: (0.5 * (range.maxY + range.minY))}; }; - Points.prototype.draw = function(dataset, group, framework, offset) { - Points.draw(dataset, group, framework, offset); - } /** - * draw the data points + * This function zooms out to fit all data on screen based on amount of nodes * - * @param {Array} dataset - * @param {Object} JSONcontainer - * @param {Object} svg | SVG DOM element - * @param {GraphGroup} group - * @param {Number} [offset] + * @param {Boolean} [initialZoom] | zoom based on fitted formula or range, true = fitted, default = false; + * @param {Boolean} [disableStart] | If true, start is not called. */ - Points.draw = function (dataset, group, framework, offset) { - if (offset === undefined) {offset = 0;} - for (var i = 0; i < dataset.length; i++) { - DOMutil.drawPoint(dataset[i].x + offset, dataset[i].y, group, framework.svgElements, framework.svg, dataset[i].label); - } - }; + Network.prototype.zoomExtent = function(options, initialZoom, disableStart) { + this._redraw(true); + if (initialZoom === undefined) {initialZoom = false;} + if (disableStart === undefined) {disableStart = false;} + if (options === undefined) {options = {nodes:[]};} + if (options.nodes === undefined) { + options.nodes = []; + } - module.exports = Points; + var range; + var zoomLevel; -/***/ }, -/* 52 */ -/***/ function(module, exports, __webpack_require__) { + if (initialZoom == true) { + // check if more than half of the nodes have a predefined position. If so, we use the range, not the approximation. + var positionDefined = 0; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.predefinedPosition == true) { + positionDefined += 1; + } + } + } + if (positionDefined > 0.5 * this.nodeIndices.length) { + this.zoomExtent(options,false,disableStart); + return; + } - var PhysicsMixin = __webpack_require__(60); - var ClusterMixin = __webpack_require__(61); - var SectorsMixin = __webpack_require__(62); - var SelectionMixin = __webpack_require__(63); - var ManipulationMixin = __webpack_require__(64); - var NavigationMixin = __webpack_require__(65); - var HierarchicalLayoutMixin = __webpack_require__(66); + range = this._getRange(options.nodes); - /** - * Load a mixin into the network object - * - * @param {Object} sourceVariable | this object has to contain functions. - * @private - */ - exports._loadMixin = function (sourceVariable) { - for (var mixinFunction in sourceVariable) { - if (sourceVariable.hasOwnProperty(mixinFunction)) { - this[mixinFunction] = sourceVariable[mixinFunction]; + var numberOfNodes = this.nodeIndices.length; + if (this.constants.smoothCurves == true) { + if (this.constants.clustering.enabled == true && + numberOfNodes >= this.constants.clustering.initialMaxNodes) { + zoomLevel = 49.07548 / (numberOfNodes + 142.05338) + 9.1444e-04; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. + } + else { + zoomLevel = 12.662 / (numberOfNodes + 7.4147) + 0.0964822; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. + } + } + else { + if (this.constants.clustering.enabled == true && + numberOfNodes >= this.constants.clustering.initialMaxNodes) { + zoomLevel = 77.5271985 / (numberOfNodes + 187.266146) + 4.76710517e-05; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. + } + else { + zoomLevel = 30.5062972 / (numberOfNodes + 19.93597763) + 0.08413486; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. + } } + + // correct for larger canvasses. + var factor = Math.min(this.frame.canvas.clientWidth / 600, this.frame.canvas.clientHeight / 600); + zoomLevel *= factor; + } + else { + range = this._getRange(options.nodes); + var xDistance = Math.abs(range.maxX - range.minX) * 1.1; + var yDistance = Math.abs(range.maxY - range.minY) * 1.1; + + var xZoomLevel = this.frame.canvas.clientWidth / xDistance; + var yZoomLevel = this.frame.canvas.clientHeight / yDistance; + zoomLevel = (xZoomLevel <= yZoomLevel) ? xZoomLevel : yZoomLevel; + } + + if (zoomLevel > 1.0) { + zoomLevel = 1.0; + } + + + var center = this._findCenter(range); + if (disableStart == false) { + var options = {position: center, scale: zoomLevel, animation: options}; + this.moveTo(options); + this.moving = true; + this.start(); + } + else { + center.x *= zoomLevel; + center.y *= zoomLevel; + center.x -= 0.5 * this.frame.canvas.clientWidth; + center.y -= 0.5 * this.frame.canvas.clientHeight; + this._setScale(zoomLevel); + this._setTranslation(-center.x,-center.y); } }; /** - * removes a mixin from the network object. - * - * @param {Object} sourceVariable | this object has to contain functions. + * Update the this.nodeIndices with the most recent node index list * @private */ - exports._clearMixin = function (sourceVariable) { - for (var mixinFunction in sourceVariable) { - if (sourceVariable.hasOwnProperty(mixinFunction)) { - this[mixinFunction] = undefined; + Network.prototype._updateNodeIndexList = function() { + this._clearNodeIndexList(); + for (var idx in this.nodes) { + if (this.nodes.hasOwnProperty(idx)) { + this.nodeIndices.push(idx); } } }; /** - * Mixin the physics system and initialize the parameters required. + * Set nodes and edges, and optionally options as well. * - * @private + * @param {Object} data Object containing parameters: + * {Array | DataSet | DataView} [nodes] Array with nodes + * {Array | DataSet | DataView} [edges] Array with edges + * {String} [dot] String containing data in DOT format + * {String} [gephi] String containing data in gephi JSON format + * {Options} [options] Object with options + * @param {Boolean} [disableStart] | optional: disable the calling of the start function. */ - exports._loadPhysicsSystem = function () { - this._loadMixin(PhysicsMixin); - this._loadSelectedForceSolver(); - if (this.constants.configurePhysics == true) { - this._loadPhysicsConfiguration(); + Network.prototype.setData = function(data, disableStart) { + if (disableStart === undefined) { + disableStart = false; + } + + // unselect all to ensure no selections from old data are carried over. + this._unselectAll(true); + + // we set initializing to true to ensure that the hierarchical layout is not performed until both nodes and edges are added. + this.initializing = true; + + if (data && data.dot && (data.nodes || data.edges)) { + throw new SyntaxError('Data must contain either parameter "dot" or ' + + ' parameter pair "nodes" and "edges", but not both.'); + } + + // clean up in case there is anyone in an active mode of the manipulation. This is the same option as bound to the escape button. + if (this.constants.dataManipulation.enabled == true) { + this._createManipulatorBar(); + } + + // set options + this.setOptions(data && data.options); + // set all data + if (data && data.dot) { + // parse DOT file + if(data && data.dot) { + var dotData = dotparser.DOTToGraph(data.dot); + this.setData(dotData); + return; + } + } + else if (data && data.gephi) { + // parse DOT file + if(data && data.gephi) { + var gephiData = gephiParser.parseGephi(data.gephi); + this.setData(gephiData); + return; + } } else { - this._cleanupPhysicsConfiguration(); + this._setNodes(data && data.nodes); + this._setEdges(data && data.edges); + } + this._putDataInSector(); + if (disableStart == false) { + if (this.constants.hierarchicalLayout.enabled == true) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + else { + // find a stable position or start animating to a stable position + if (this.constants.stabilize == true) { + this._stabilize(); + } + } + this.start(); } + this.initializing = false; }; - /** - * Mixin the cluster system and initialize the parameters required. - * - * @private + * Set options + * @param {Object} options */ - exports._loadClusterSystem = function () { - this.clusterSession = 0; - this.hubThreshold = 5; - this._loadMixin(ClusterMixin); - }; + Network.prototype.setOptions = function (options) { + if (options) { + var prop; + var fields = ['nodes','edges','smoothCurves','hierarchicalLayout','clustering','navigation', + 'keyboard','dataManipulation','onAdd','onEdit','onEditEdge','onConnect','onDelete','clickToUse' + ]; + // extend all but the values in fields + util.selectiveNotDeepExtend(fields,this.constants, options); + util.selectiveNotDeepExtend(['color'],this.constants.nodes, options.nodes); + util.selectiveNotDeepExtend(['color','length'],this.constants.edges, options.edges); + this.groups.useDefaultGroups = this.constants.useDefaultGroups; + if (options.physics) { + util.mergeOptions(this.constants.physics, options.physics,'barnesHut'); + util.mergeOptions(this.constants.physics, options.physics,'repulsion'); - /** - * Mixin the sector system and initialize the parameters required - * - * @private - */ - exports._loadSectorSystem = function () { - this.sectors = {}; - this.activeSector = ["default"]; - this.sectors["active"] = {}; - this.sectors["active"]["default"] = {"nodes": {}, - "edges": {}, - "nodeIndices": [], - "formationScale": 1.0, - "drawingNode": undefined }; - this.sectors["frozen"] = {}; - this.sectors["support"] = {"nodes": {}, - "edges": {}, - "nodeIndices": [], - "formationScale": 1.0, - "drawingNode": undefined }; + if (options.physics.hierarchicalRepulsion) { + this.constants.hierarchicalLayout.enabled = true; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this.constants.physics.barnesHut.enabled = false; + for (prop in options.physics.hierarchicalRepulsion) { + if (options.physics.hierarchicalRepulsion.hasOwnProperty(prop)) { + this.constants.physics.hierarchicalRepulsion[prop] = options.physics.hierarchicalRepulsion[prop]; + } + } + } + } - this.nodeIndices = this.sectors["active"]["default"]["nodeIndices"]; // the node indices list is used to speed up the computation of the repulsion fields + if (options.onAdd) {this.triggerFunctions.add = options.onAdd;} + if (options.onEdit) {this.triggerFunctions.edit = options.onEdit;} + if (options.onEditEdge) {this.triggerFunctions.editEdge = options.onEditEdge;} + if (options.onConnect) {this.triggerFunctions.connect = options.onConnect;} + if (options.onDelete) {this.triggerFunctions.del = options.onDelete;} - this._loadMixin(SectorsMixin); - }; + util.mergeOptions(this.constants, options,'smoothCurves'); + util.mergeOptions(this.constants, options,'hierarchicalLayout'); + util.mergeOptions(this.constants, options,'clustering'); + util.mergeOptions(this.constants, options,'navigation'); + util.mergeOptions(this.constants, options,'keyboard'); + util.mergeOptions(this.constants, options,'dataManipulation'); - /** - * Mixin the selection system and initialize the parameters required - * - * @private - */ - exports._loadSelectionSystem = function () { - this.selectionObj = {nodes: {}, edges: {}}; + if (options.dataManipulation) { + this.editMode = this.constants.dataManipulation.initiallyVisible; + } - this._loadMixin(SelectionMixin); - }; + // TODO: work out these options and document them + if (options.edges) { + if (options.edges.color !== undefined) { + if (util.isString(options.edges.color)) { + this.constants.edges.color = {}; + this.constants.edges.color.color = options.edges.color; + this.constants.edges.color.highlight = options.edges.color; + this.constants.edges.color.hover = options.edges.color; + } + else { + if (options.edges.color.color !== undefined) {this.constants.edges.color.color = options.edges.color.color;} + if (options.edges.color.highlight !== undefined) {this.constants.edges.color.highlight = options.edges.color.highlight;} + if (options.edges.color.hover !== undefined) {this.constants.edges.color.hover = options.edges.color.hover;} + } + this.constants.edges.inheritColor = false; + } + + if (!options.edges.fontColor) { + if (options.edges.color !== undefined) { + if (util.isString(options.edges.color)) {this.constants.edges.fontColor = options.edges.color;} + else if (options.edges.color.color !== undefined) {this.constants.edges.fontColor = options.edges.color.color;} + } + } + } - /** - * Mixin the navigationUI (User Interface) system and initialize the parameters required - * - * @private - */ - exports._loadManipulationSystem = function () { - // reset global variables -- these are used by the selection of nodes and edges. - this.blockConnectingEdgeSelection = false; - this.forceAppendSelection = false; + if (options.nodes) { + if (options.nodes.color) { + var newColorObj = util.parseColor(options.nodes.color); + this.constants.nodes.color.background = newColorObj.background; + this.constants.nodes.color.border = newColorObj.border; + this.constants.nodes.color.highlight.background = newColorObj.highlight.background; + this.constants.nodes.color.highlight.border = newColorObj.highlight.border; + this.constants.nodes.color.hover.background = newColorObj.hover.background; + this.constants.nodes.color.hover.border = newColorObj.hover.border; + } + } + if (options.groups) { + for (var groupname in options.groups) { + if (options.groups.hasOwnProperty(groupname)) { + var group = options.groups[groupname]; + this.groups.add(groupname, group); + } + } + } - if (this.constants.dataManipulation.enabled == true) { - // load the manipulator HTML elements. All styling done in css. - if (this.manipulationDiv === undefined) { - this.manipulationDiv = document.createElement('div'); - this.manipulationDiv.className = 'network-manipulationDiv'; - if (this.editMode == true) { - this.manipulationDiv.style.display = "block"; + if (options.tooltip) { + for (prop in options.tooltip) { + if (options.tooltip.hasOwnProperty(prop)) { + this.constants.tooltip[prop] = options.tooltip[prop]; + } } - else { - this.manipulationDiv.style.display = "none"; + if (options.tooltip.color) { + this.constants.tooltip.color = util.parseColor(options.tooltip.color); } - this.frame.appendChild(this.manipulationDiv); } - if (this.editModeDiv === undefined) { - this.editModeDiv = document.createElement('div'); - this.editModeDiv.className = 'network-manipulation-editMode'; - if (this.editMode == true) { - this.editModeDiv.style.display = "none"; + if ('clickToUse' in options) { + if (options.clickToUse) { + if (!this.activator) { + this.activator = new Activator(this.frame); + this.activator.on('change', this._createKeyBinds.bind(this)); + } } else { - this.editModeDiv.style.display = "block"; + if (this.activator) { + this.activator.destroy(); + delete this.activator; + } } - this.frame.appendChild(this.editModeDiv); } - if (this.closeDiv === undefined) { - this.closeDiv = document.createElement('div'); - this.closeDiv.className = 'network-manipulation-closeDiv'; - this.closeDiv.style.display = this.manipulationDiv.style.display; - this.frame.appendChild(this.closeDiv); + if (options.labels) { + throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.'); } - // load the manipulation functions - this._loadMixin(ManipulationMixin); - // create the manipulator toolbar - this._createManipulatorBar(); - } - else { - if (this.manipulationDiv !== undefined) { - // removes all the bindings and overloads - this._createManipulatorBar(); + // (Re)loading the mixins that can be enabled or disabled in the options. + // load the force calculation functions, grouped under the physics system. + this._loadPhysicsSystem(); + // load the navigation system. + this._loadNavigationControls(); + // load the data manipulation system + this._loadManipulationSystem(); + // configure the smooth curves + this._configureSmoothCurves(); - // remove the manipulation divs - this.frame.removeChild(this.manipulationDiv); - this.frame.removeChild(this.editModeDiv); - this.frame.removeChild(this.closeDiv); + // bind hammer + this._bindHammer(); - this.manipulationDiv = undefined; - this.editModeDiv = undefined; - this.closeDiv = undefined; - // remove the mixin functions - this._clearMixin(ManipulationMixin); + // bind keys. If disabled, this will not do anything; + this._createKeyBinds(); + + this._markAllEdgesAsDirty(); + this.setSize(this.constants.width, this.constants.height); + this.moving = true; + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); } + this.start(); } }; - /** - * Mixin the navigation (User Interface) system and initialize the parameters required - * - * @private - */ - exports._loadNavigationControls = function () { - this._loadMixin(NavigationMixin); - // the clean function removes the button divs, this is done to remove the bindings. - this._cleanNavigation(); - if (this.constants.navigation.enabled == true) { - this._loadNavigationElements(); - } - }; - /** - * Mixin the hierarchical layout system. - * + * Create the main frame for the Network. + * This function is executed once when a Network object is created. The frame + * contains a canvas, and this canvas contains all objects like the axis and + * nodes. * @private */ - exports._loadHierarchySystem = function () { - this._loadMixin(HierarchicalLayoutMixin); - }; + Network.prototype._create = function () { + // remove all elements from the container element. + while (this.containerElement.hasChildNodes()) { + this.containerElement.removeChild(this.containerElement.firstChild); + } + this.frame = document.createElement('div'); + this.frame.className = 'vis network-frame'; + this.frame.style.position = 'relative'; + this.frame.style.overflow = 'hidden'; + this.frame.tabIndex = 900; -/***/ }, -/* 53 */ -/***/ function(module, exports, __webpack_require__) { - var keycharm = __webpack_require__(57); - var Emitter = __webpack_require__(56); - var Hammer = __webpack_require__(45); - var util = __webpack_require__(1); + ////////////////////////////////////////////////////////////////// - /** - * Turn an element into an clickToUse element. - * When not active, the element has a transparent overlay. When the overlay is - * clicked, the mode is changed to active. - * When active, the element is displayed with a blue border around it, and - * the interactive contents of the element can be used. When clicked outside - * the element, the elements mode is changed to inactive. - * @param {Element} container - * @constructor - */ - function Activator(container) { - this.active = false; + this.frame.canvas = document.createElement("canvas"); + this.frame.canvas.style.position = 'relative'; + this.frame.appendChild(this.frame.canvas); - this.dom = { - container: container - }; + if (!this.frame.canvas.getContext) { + var noCanvas = document.createElement( 'DIV' ); + noCanvas.style.color = 'red'; + noCanvas.style.fontWeight = 'bold' ; + noCanvas.style.padding = '10px'; + noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; + this.frame.canvas.appendChild(noCanvas); + } + else { + var ctx = this.frame.canvas.getContext("2d"); + this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || + ctx.mozBackingStorePixelRatio || + ctx.msBackingStorePixelRatio || + ctx.oBackingStorePixelRatio || + ctx.backingStorePixelRatio || 1); - this.dom.overlay = document.createElement('div'); - this.dom.overlay.className = 'overlay'; + //this.pixelRatio = Math.max(1,this.pixelRatio); // this is to account for browser zooming out. The pixel ratio is ment to switch between 1 and 2 for HD screens. + this.frame.canvas.getContext("2d").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); + } - this.dom.container.appendChild(this.dom.overlay); + this._bindHammer(); + }; - this.hammer = Hammer(this.dom.overlay, {prevent_default: false}); - this.hammer.on('tap', this._onTapOverlay.bind(this)); - // block all touch events (except tap) + /** + * This function binds hammer, it can be repeated over and over due to the uniqueness check. + * @private + */ + Network.prototype._bindHammer = function() { var me = this; - var events = [ - 'touch', 'pinch', - 'doubletap', 'hold', - 'dragstart', 'drag', 'dragend', - 'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox - ]; - events.forEach(function (event) { - me.hammer.on(event, function (event) { - event.stopPropagation(); - }); - }); - - // attach a tap event to the window, in order to deactivate when clicking outside the timeline - this.windowHammer = Hammer(window, {prevent_default: false}); - this.windowHammer.on('tap', function (event) { - // deactivate when clicked outside the container - if (!_hasParent(event.target, container)) { - me.deactivate(); - } + if (this.hammer !== undefined) { + this.hammer.dispose(); + } + this.drag = {}; + this.pinch = {}; + this.hammer = Hammer(this.frame.canvas, { + prevent_default: true }); + this.hammer.on('tap', me._onTap.bind(me) ); + this.hammer.on('doubletap', me._onDoubleTap.bind(me) ); + this.hammer.on('hold', me._onHold.bind(me) ); + this.hammer.on('touch', me._onTouch.bind(me) ); + this.hammer.on('dragstart', me._onDragStart.bind(me) ); + this.hammer.on('drag', me._onDrag.bind(me) ); + this.hammer.on('dragend', me._onDragEnd.bind(me) ); - if (this.keycharm !== undefined) { - this.keycharm.destroy(); + if (this.constants.zoomable == true) { + this.hammer.on('mousewheel', me._onMouseWheel.bind(me)); + this.hammer.on('DOMMouseScroll', me._onMouseWheel.bind(me)); // for FF + this.hammer.on('pinch', me._onPinch.bind(me) ); } - this.keycharm = keycharm(); - // keycharm listener only bounded when active) - this.escListener = this.deactivate.bind(this); - } + this.hammer.on('mousemove', me._onMouseMoveTitle.bind(me) ); - // turn into an event emitter - Emitter(Activator.prototype); + this.hammerFrame = Hammer(this.frame, { + prevent_default: true + }); + this.hammerFrame.on('release', me._onRelease.bind(me) ); - // The currently active activator - Activator.current = null; + // add the frame to the container element + this.containerElement.appendChild(this.frame); + } /** - * Destroy the activator. Cleans up all created DOM and event listeners + * Binding the keys for keyboard navigation. These functions are defined in the NavigationMixin + * @private */ - Activator.prototype.destroy = function () { - this.deactivate(); + Network.prototype._createKeyBinds = function() { + var me = this; + if (this.keycharm !== undefined) { + this.keycharm.destroy(); + } - // remove dom - this.dom.overlay.parentNode.removeChild(this.dom.overlay); + if (this.constants.keyboard.bindToWindow == true) { + this.keycharm = keycharm({container: window, preventDefault: false}); + } + else { + this.keycharm = keycharm({container: this.frame, preventDefault: false}); + } - // cleanup hammer instances - this.hammer = null; - this.windowHammer = null; - // FIXME: cleaning up hammer instances doesn't work (Timeline not removed from memory) + this.keycharm.reset(); + + if (this.constants.keyboard.enabled && this.isActive()) { + this.keycharm.bind("up", this._moveUp.bind(me) , "keydown"); + this.keycharm.bind("up", this._yStopMoving.bind(me), "keyup"); + this.keycharm.bind("down", this._moveDown.bind(me) , "keydown"); + this.keycharm.bind("down", this._yStopMoving.bind(me), "keyup"); + this.keycharm.bind("left", this._moveLeft.bind(me) , "keydown"); + this.keycharm.bind("left", this._xStopMoving.bind(me), "keyup"); + this.keycharm.bind("right",this._moveRight.bind(me), "keydown"); + this.keycharm.bind("right",this._xStopMoving.bind(me), "keyup"); + this.keycharm.bind("=", this._zoomIn.bind(me), "keydown"); + this.keycharm.bind("=", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("num+", this._zoomIn.bind(me), "keydown"); + this.keycharm.bind("num+", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("num-", this._zoomOut.bind(me), "keydown"); + this.keycharm.bind("num-", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("-", this._zoomOut.bind(me), "keydown"); + this.keycharm.bind("-", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("[", this._zoomIn.bind(me), "keydown"); + this.keycharm.bind("[", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("]", this._zoomOut.bind(me), "keydown"); + this.keycharm.bind("]", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("pageup",this._zoomIn.bind(me), "keydown"); + this.keycharm.bind("pageup",this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("pagedown",this._zoomOut.bind(me),"keydown"); + this.keycharm.bind("pagedown",this._stopZoom.bind(me), "keyup"); + } + + if (this.constants.dataManipulation.enabled == true) { + this.keycharm.bind("esc",this._createManipulatorBar.bind(me)); + this.keycharm.bind("delete",this._deleteSelected.bind(me)); + } }; /** - * Activate the element - * Overlay is hidden, element is decorated with a blue shadow border + * Cleans up all bindings of the network, removing it fully from the memory IF the variable is set to null after calling this function. + * var network = new vis.Network(..); + * network.destroy(); + * network = null; */ - Activator.prototype.activate = function () { - // we allow only one active activator at a time - if (Activator.current) { - Activator.current.deactivate(); - } - Activator.current = this; + Network.prototype.destroy = function() { + this.start = function () {}; + this.redraw = function () {}; + this.timer = false; - this.active = true; - this.dom.overlay.style.display = 'none'; - util.addClassName(this.dom.container, 'vis-active'); + // cleanup physicsConfiguration if it exists + this._cleanupPhysicsConfiguration(); - this.emit('change'); - this.emit('activate'); + // remove keybindings + this.keycharm.reset(); - // ugly hack: bind ESC after emitting the events, as the Network rebinds all - // keyboard events on a 'change' event - this.keycharm.bind('esc', this.escListener); - }; + // clear hammer bindings + this.hammer.dispose(); - /** - * Deactivate the element - * Overlay is displayed on top of the element - */ - Activator.prototype.deactivate = function () { - this.active = false; - this.dom.overlay.style.display = ''; - util.removeClassName(this.dom.container, 'vis-active'); - this.keycharm.unbind('esc', this.escListener); + // clear events + this.off(); - this.emit('change'); - this.emit('deactivate'); - }; + this._recursiveDOMDelete(this.containerElement); + } + + Network.prototype._recursiveDOMDelete = function(DOMobject) { + while (DOMobject.hasChildNodes() == true) { + this._recursiveDOMDelete(DOMobject.firstChild); + DOMobject.removeChild(DOMobject.firstChild); + } + } /** - * Handle a tap event: activate the container - * @param event + * Get the pointer location from a touch location + * @param {{pageX: Number, pageY: Number}} touch + * @return {{x: Number, y: Number}} pointer * @private */ - Activator.prototype._onTapOverlay = function (event) { - // activate the container - this.activate(); - event.stopPropagation(); + Network.prototype._getPointer = function (touch) { + return { + x: touch.pageX - util.getAbsoluteLeft(this.frame.canvas), + y: touch.pageY - util.getAbsoluteTop(this.frame.canvas) + }; }; /** - * Test whether the element has the requested parent element somewhere in - * its chain of parent nodes. - * @param {HTMLElement} element - * @param {HTMLElement} parent - * @returns {boolean} Returns true when the parent is found somewhere in the - * chain of parent nodes. + * On start of a touch gesture, store the pointer + * @param event * @private */ - function _hasParent(element, parent) { - while (element) { - if (element === parent) { - return true - } - element = element.parentNode; - } - return false; - } - - module.exports = Activator; - - -/***/ }, -/* 54 */ -/***/ function(module, exports, __webpack_require__) { + Network.prototype._onTouch = function (event) { + if (new Date().valueOf() - this.touchTime > 100) { + this.drag.pointer = this._getPointer(event.gesture.center); + this.drag.pinched = false; + this.pinch.scale = this._getScale(); - // English - exports['en'] = { - edit: 'Edit', - del: 'Delete selected', - back: 'Back', - addNode: 'Add Node', - addEdge: 'Add Edge', - editNode: 'Edit Node', - editEdge: 'Edit Edge', - addDescription: 'Click in an empty space to place a new node.', - edgeDescription: 'Click on a node and drag the edge to another node to connect them.', - editEdgeDescription: 'Click on the control points and drag them to a node to connect to it.', - createEdgeError: 'Cannot link edges to a cluster.', - deleteClusterError: 'Clusters cannot be deleted.' - }; - exports['en_EN'] = exports['en']; - exports['en_US'] = exports['en']; + // to avoid double fireing of this event because we have two hammer instances. (on canvas and on frame) + this.touchTime = new Date().valueOf(); - // Dutch - exports['nl'] = { - edit: 'Wijzigen', - del: 'Selectie verwijderen', - back: 'Terug', - addNode: 'Node toevoegen', - addEdge: 'Link toevoegen', - editNode: 'Node wijzigen', - editEdge: 'Link wijzigen', - addDescription: 'Klik op een leeg gebied om een nieuwe node te maken.', - edgeDescription: 'Klik op een node en sleep de link naar een andere node om ze te verbinden.', - editEdgeDescription: 'Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.', - createEdgeError: 'Kan geen link maken naar een cluster.', - deleteClusterError: 'Clusters kunnen niet worden verwijderd.' + this._handleTouch(this.drag.pointer); + } }; - exports['nl_NL'] = exports['nl']; - exports['nl_BE'] = exports['nl']; - - -/***/ }, -/* 55 */ -/***/ function(module, exports, __webpack_require__) { /** - * Canvas shapes used by Network - */ - if (typeof CanvasRenderingContext2D !== 'undefined') { - - /** - * Draw a circle shape - */ - CanvasRenderingContext2D.prototype.circle = function(x, y, r) { - this.beginPath(); - this.arc(x, y, r, 0, 2*Math.PI, false); - }; - - /** - * Draw a square shape - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r size, width and height of the square - */ - CanvasRenderingContext2D.prototype.square = function(x, y, r) { - this.beginPath(); - this.rect(x - r, y - r, r * 2, r * 2); - }; - - /** - * Draw a triangle shape - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius, half the length of the sides of the triangle - */ - CanvasRenderingContext2D.prototype.triangle = function(x, y, r) { - // http://en.wikipedia.org/wiki/Equilateral_triangle - this.beginPath(); - - var s = r * 2; - var s2 = s / 2; - var ir = Math.sqrt(3) / 6 * s; // radius of inner circle - var h = Math.sqrt(s * s - s2 * s2); // height - - this.moveTo(x, y - (h - ir)); - this.lineTo(x + s2, y + ir); - this.lineTo(x - s2, y + ir); - this.lineTo(x, y - (h - ir)); - this.closePath(); - }; - - /** - * Draw a triangle shape in downward orientation - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius - */ - CanvasRenderingContext2D.prototype.triangleDown = function(x, y, r) { - // http://en.wikipedia.org/wiki/Equilateral_triangle - this.beginPath(); + * handle drag start event + * @private + */ + Network.prototype._onDragStart = function (event) { + this._handleDragStart(event); + }; - var s = r * 2; - var s2 = s / 2; - var ir = Math.sqrt(3) / 6 * s; // radius of inner circle - var h = Math.sqrt(s * s - s2 * s2); // height - this.moveTo(x, y + (h - ir)); - this.lineTo(x + s2, y - ir); - this.lineTo(x - s2, y - ir); - this.lineTo(x, y + (h - ir)); - this.closePath(); - }; + /** + * This function is called by _onDragStart. + * It is separated out because we can then overload it for the datamanipulation system. + * + * @private + */ + Network.prototype._handleDragStart = function(event) { + // in case the touch event was triggered on an external div, do the initial touch now. + if (this.drag.pointer === undefined) { + this._onTouch(event); + } - /** - * Draw a star shape, a star with 5 points - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius, half the length of the sides of the triangle - */ - CanvasRenderingContext2D.prototype.star = function(x, y, r) { - // http://www.html5canvastutorials.com/labs/html5-canvas-star-spinner/ - this.beginPath(); + var node = this._getNodeAt(this.drag.pointer); + // note: drag.pointer is set in _onTouch to get the initial touch location - for (var n = 0; n < 10; n++) { - var radius = (n % 2 === 0) ? r * 1.3 : r * 0.5; - this.lineTo( - x + radius * Math.sin(n * 2 * Math.PI / 10), - y - radius * Math.cos(n * 2 * Math.PI / 10) - ); - } + this.drag.dragging = true; + this.drag.selection = []; + this.drag.translation = this._getTranslation(); + this.drag.nodeId = null; + this.draggingNodes = false; - this.closePath(); - }; + if (node != null && this.constants.dragNodes == true) { + this.draggingNodes = true; + this.drag.nodeId = node.id; + // select the clicked node if not yet selected + if (!node.isSelected()) { + this._selectObject(node,false); + } - /** - * http://stackoverflow.com/questions/1255512/how-to-draw-a-rounded-rectangle-on-html-canvas - */ - CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) { - var r2d = Math.PI/180; - if( w - ( 2 * r ) < 0 ) { r = ( w / 2 ); } //ensure that the radius isn't too large for x - if( h - ( 2 * r ) < 0 ) { r = ( h / 2 ); } //ensure that the radius isn't too large for y - this.beginPath(); - this.moveTo(x+r,y); - this.lineTo(x+w-r,y); - this.arc(x+w-r,y+r,r,r2d*270,r2d*360,false); - this.lineTo(x+w,y+h-r); - this.arc(x+w-r,y+h-r,r,0,r2d*90,false); - this.lineTo(x+r,y+h); - this.arc(x+r,y+h-r,r,r2d*90,r2d*180,false); - this.lineTo(x,y+r); - this.arc(x+r,y+r,r,r2d*180,r2d*270,false); - }; + this.emit("dragStart",{nodeIds:this.getSelection().nodes}); - /** - * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - */ - CanvasRenderingContext2D.prototype.ellipse = function(x, y, w, h) { - var kappa = .5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle + // create an array with the selected nodes and their original location and status + for (var objectId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(objectId)) { + var object = this.selectionObj.nodes[objectId]; + var s = { + id: object.id, + node: object, - this.beginPath(); - this.moveTo(x, ym); - this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - }; + // store original x, y, xFixed and yFixed, make the node temporarily Fixed + x: object.x, + y: object.y, + xFixed: object.xFixed, + yFixed: object.yFixed + }; + object.xFixed = true; + object.yFixed = true; + this.drag.selection.push(s); + } + } + } + }; - /** - * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - */ - CanvasRenderingContext2D.prototype.database = function(x, y, w, h) { - var f = 1/3; - var wEllipse = w; - var hEllipse = h * f; - var kappa = .5522848, - ox = (wEllipse / 2) * kappa, // control point offset horizontal - oy = (hEllipse / 2) * kappa, // control point offset vertical - xe = x + wEllipse, // x-end - ye = y + hEllipse, // y-end - xm = x + wEllipse / 2, // x-middle - ym = y + hEllipse / 2, // y-middle - ymb = y + (h - hEllipse/2), // y-midlle, bottom ellipse - yeb = y + h; // y-end, bottom ellipse + /** + * handle drag event + * @private + */ + Network.prototype._onDrag = function (event) { + this._handleOnDrag(event) + }; - this.beginPath(); - this.moveTo(xe, ym); - this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + /** + * This function is called by _onDrag. + * It is separated out because we can then overload it for the datamanipulation system. + * + * @private + */ + Network.prototype._handleOnDrag = function(event) { + if (this.drag.pinched) { + return; + } - this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + // remove the focus on node if it is focussed on by the focusOnNode + this.releaseNode(); - this.lineTo(xe, ymb); + var pointer = this._getPointer(event.gesture.center); + var me = this; + var drag = this.drag; + var selection = drag.selection; + if (selection && selection.length && this.constants.dragNodes == true) { + // calculate delta's and new location + var deltaX = pointer.x - drag.pointer.x; + var deltaY = pointer.y - drag.pointer.y; - this.bezierCurveTo(xe, ymb + oy, xm + ox, yeb, xm, yeb); - this.bezierCurveTo(xm - ox, yeb, x, ymb + oy, x, ymb); + // update position of all selected nodes + selection.forEach(function (s) { + var node = s.node; - this.lineTo(x, ym); - }; + if (!s.xFixed) { + node.x = me._XconvertDOMtoCanvas(me._XconvertCanvasToDOM(s.x) + deltaX); + } + if (!s.yFixed) { + node.y = me._YconvertDOMtoCanvas(me._YconvertCanvasToDOM(s.y) + deltaY); + } + }); - /** - * Draw an arrow point (no line) - */ - CanvasRenderingContext2D.prototype.arrow = function(x, y, angle, length) { - // tail - var xt = x - length * Math.cos(angle); - var yt = y - length * Math.sin(angle); - // inner tail - // TODO: allow to customize different shapes - var xi = x - length * 0.9 * Math.cos(angle); - var yi = y - length * 0.9 * Math.sin(angle); + // start _animationStep if not yet running + if (!this.moving) { + this.moving = true; + this.start(); + } + } + else { + // move the network + if (this.constants.dragNetwork == true) { + // if the drag was not started properly because the click started outside the network div, start it now. + if (this.drag.pointer === undefined) { + this._handleDragStart(event); + return; + } + var diffX = pointer.x - this.drag.pointer.x; + var diffY = pointer.y - this.drag.pointer.y; - // left - var xl = xt + length / 3 * Math.cos(angle + 0.5 * Math.PI); - var yl = yt + length / 3 * Math.sin(angle + 0.5 * Math.PI); + this._setTranslation( + this.drag.translation.x + diffX, + this.drag.translation.y + diffY + ); + this._redraw(); + } + } + }; - // right - var xr = xt + length / 3 * Math.cos(angle - 0.5 * Math.PI); - var yr = yt + length / 3 * Math.sin(angle - 0.5 * Math.PI); + /** + * handle drag start event + * @private + */ + Network.prototype._onDragEnd = function (event) { + this._handleDragEnd(event); + }; - this.beginPath(); - this.moveTo(x, y); - this.lineTo(xl, yl); - this.lineTo(xi, yi); - this.lineTo(xr, yr); - this.closePath(); - }; - /** - * Sets up the dashedLine functionality for drawing - * Original code came from http://stackoverflow.com/questions/4576724/dotted-stroke-in-canvas - * @author David Jordan - * @date 2012-08-08 - */ - CanvasRenderingContext2D.prototype.dashedLine = function(x,y,x2,y2,dashArray){ - if (!dashArray) dashArray=[10,5]; - if (dashLength==0) dashLength = 0.001; // Hack for Safari - var dashCount = dashArray.length; - this.moveTo(x, y); - var dx = (x2-x), dy = (y2-y); - var slope = dy/dx; - var distRemaining = Math.sqrt( dx*dx + dy*dy ); - var dashIndex=0, draw=true; - while (distRemaining>=0.1){ - var dashLength = dashArray[dashIndex++%dashCount]; - if (dashLength > distRemaining) dashLength = distRemaining; - var xStep = Math.sqrt( dashLength*dashLength / (1 + slope*slope) ); - if (dx<0) xStep = -xStep; - x += xStep; - y += slope*xStep; - this[draw ? 'lineTo' : 'moveTo'](x,y); - distRemaining -= dashLength; - draw = !draw; - } - }; + Network.prototype._handleDragEnd = function(event) { + this.drag.dragging = false; + var selection = this.drag.selection; + if (selection && selection.length) { + selection.forEach(function (s) { + // restore original xFixed and yFixed + s.node.xFixed = s.xFixed; + s.node.yFixed = s.yFixed; + }); + this.moving = true; + this.start(); + } + else { + this._redraw(); + } + if (this.draggingNodes == false) { + this.emit("dragEnd",{nodeIds:[]}); + } + else { + this.emit("dragEnd",{nodeIds:this.getSelection().nodes}); + } - // TODO: add diamond shape } + /** + * handle tap/click event: select/unselect a node + * @private + */ + Network.prototype._onTap = function (event) { + var pointer = this._getPointer(event.gesture.center); + this.pointerPosition = pointer; + this._handleTap(pointer); + }; -/***/ }, -/* 56 */ -/***/ function(module, exports, __webpack_require__) { - /** - * Expose `Emitter`. + * handle doubletap event + * @private */ + Network.prototype._onDoubleTap = function (event) { + var pointer = this._getPointer(event.gesture.center); + this._handleDoubleTap(pointer); + }; - module.exports = Emitter; /** - * Initialize a new `Emitter`. - * - * @api public + * handle long tap event: multi select nodes + * @private */ - - function Emitter(obj) { - if (obj) return mixin(obj); + Network.prototype._onHold = function (event) { + var pointer = this._getPointer(event.gesture.center); + this.pointerPosition = pointer; + this._handleOnHold(pointer); }; /** - * Mixin the emitter properties. + * handle the release of the screen * - * @param {Object} obj - * @return {Object} - * @api private + * @private */ + Network.prototype._onRelease = function (event) { + var pointer = this._getPointer(event.gesture.center); + this._handleOnRelease(pointer); + }; - function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; + /** + * Handle pinch event + * @param event + * @private + */ + Network.prototype._onPinch = function (event) { + var pointer = this._getPointer(event.gesture.center); + + this.drag.pinched = true; + if (!('scale' in this.pinch)) { + this.pinch.scale = 1; } - return obj; - } + + // TODO: enabled moving while pinching? + var scale = this.pinch.scale * event.gesture.scale; + this._zoom(scale, pointer) + }; /** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public + * Zoom the network in or out + * @param {Number} scale a number around 1, and between 0.01 and 10 + * @param {{x: Number, y: Number}} pointer Position on screen + * @return {Number} appliedScale scale is limited within the boundaries + * @private */ + Network.prototype._zoom = function(scale, pointer) { + if (this.constants.zoomable == true) { + var scaleOld = this._getScale(); + if (scale < 0.00001) { + scale = 0.00001; + } + if (scale > 10) { + scale = 10; + } - Emitter.prototype.on = - Emitter.prototype.addEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks[event] = this._callbacks[event] || []) - .push(fn); - return this; + var preScaleDragPointer = null; + if (this.drag !== undefined) { + if (this.drag.dragging == true) { + preScaleDragPointer = this.DOMtoCanvas(this.drag.pointer); + } + } + // + this.frame.canvas.clientHeight / 2 + var translation = this._getTranslation(); + + var scaleFrac = scale / scaleOld; + var tx = (1 - scaleFrac) * pointer.x + translation.x * scaleFrac; + var ty = (1 - scaleFrac) * pointer.y + translation.y * scaleFrac; + + this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), + "y" : this._YconvertDOMtoCanvas(pointer.y)}; + + this._setScale(scale); + this._setTranslation(tx, ty); + this.updateClustersDefault(); + + if (preScaleDragPointer != null) { + var postScaleDragPointer = this.canvasToDOM(preScaleDragPointer); + this.drag.pointer.x = postScaleDragPointer.x; + this.drag.pointer.y = postScaleDragPointer.y; + } + + this._redraw(); + + if (scaleOld < scale) { + this.emit("zoom", {direction:"+"}); + } + else { + this.emit("zoom", {direction:"-"}); + } + + return scale; + } }; + /** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public + * Event handler for mouse wheel event, used to zoom the timeline + * See http://adomas.org/javascript-mouse-wheel/ + * https://github.com/EightMedia/hammer.js/issues/256 + * @param {MouseEvent} event + * @private */ + Network.prototype._onMouseWheel = function(event) { + // retrieve delta + var delta = 0; + if (event.wheelDelta) { /* IE/Opera. */ + delta = event.wheelDelta/120; + } else if (event.detail) { /* Mozilla case. */ + // In Mozilla, sign of delta is different than in IE. + // Also, delta is multiple of 3. + delta = -event.detail/3; + } - Emitter.prototype.once = function(event, fn){ - var self = this; - this._callbacks = this._callbacks || {}; + // If delta is nonzero, handle it. + // Basically, delta is now positive if wheel was scrolled up, + // and negative, if wheel was scrolled down. + if (delta) { - function on() { - self.off(event, on); - fn.apply(this, arguments); + // calculate the new scale + var scale = this._getScale(); + var zoom = delta / 10; + if (delta < 0) { + zoom = zoom / (1 - zoom); + } + scale *= (1 + zoom); + + // calculate the pointer location + var gesture = hammerUtil.fakeGesture(this, event); + var pointer = this._getPointer(gesture.center); + + // apply the new scale + this._zoom(scale, pointer); } - on.fn = fn; - this.on(event, on); - return this; + // Prevent default actions caused by mouse wheel. + event.preventDefault(); }; + /** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public + * Mouse move handler for checking whether the title moves over a node with a title. + * @param {Event} event + * @private */ + Network.prototype._onMouseMoveTitle = function (event) { + var gesture = hammerUtil.fakeGesture(this, event); + var pointer = this._getPointer(gesture.center); + var popupVisible = false; - Emitter.prototype.off = - Emitter.prototype.removeListener = - Emitter.prototype.removeAllListeners = - Emitter.prototype.removeEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; + // check if the previously selected node is still selected + if (this.popup !== undefined) { + if (this.popup.hidden === false) { + this._checkHidePopup(pointer); + } - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; + // if the popup was not hidden above + if (this.popup.hidden === false) { + popupVisible = true; + this.popup.setPosition(pointer.x + 3,pointer.y - 5) + this.popup.show(); + } + } + + // if we bind the keyboard to the div, we have to highlight it to use it. This highlights it on mouse over + if (this.constants.keyboard.bindToWindow == false && this.constants.keyboard.enabled == true) { + this.frame.focus(); + } + + // start a timeout that will check if the mouse is positioned above an element + if (popupVisible === false) { + var me = this; + var checkShow = function () { + me._checkShowPopup(pointer); + }; + if (this.popupTimer) { + clearInterval(this.popupTimer); // stop any running calculationTimer + } + if (!this.drag.dragging) { + this.popupTimer = setTimeout(checkShow, this.constants.tooltip.delay); + } } - // specific event - var callbacks = this._callbacks[event]; - if (!callbacks) return this; + /** + * Adding hover highlights + */ + if (this.constants.hover == true) { + // removing all hover highlights + for (var edgeId in this.hoverObj.edges) { + if (this.hoverObj.edges.hasOwnProperty(edgeId)) { + this.hoverObj.edges[edgeId].hover = false; + delete this.hoverObj.edges[edgeId]; + } + } - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks[event]; - return this; - } + // adding hover highlights + var obj = this._getNodeAt(pointer); + if (obj == null) { + obj = this._getEdgeAt(pointer); + } + if (obj != null) { + this._hoverObject(obj); + } - // remove specific handler - var cb; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; + // removing all node hover highlights except for the selected one. + for (var nodeId in this.hoverObj.nodes) { + if (this.hoverObj.nodes.hasOwnProperty(nodeId)) { + if (obj instanceof Node && obj.id != nodeId || obj instanceof Edge || obj == null) { + this._blurObject(this.hoverObj.nodes[nodeId]); + delete this.hoverObj.nodes[nodeId]; + } + } } + this.redraw(); } - return this; }; /** - * Emit `event` with the given args. + * Check if there is an element on the given position in the network + * (a node or edge). If so, and if this element has a title, + * show a popup window with its title. * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} + * @param {{x:Number, y:Number}} pointer + * @private */ + Network.prototype._checkShowPopup = function (pointer) { + var obj = { + left: this._XconvertDOMtoCanvas(pointer.x), + top: this._YconvertDOMtoCanvas(pointer.y), + right: this._XconvertDOMtoCanvas(pointer.x), + bottom: this._YconvertDOMtoCanvas(pointer.y) + }; - Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - var args = [].slice.call(arguments, 1) - , callbacks = this._callbacks[event]; + var id; + var previousPopupObjId = this.popupObj === undefined ? "" : this.popupObj.id; + var nodeUnderCursor = false; + var popupType = "node"; - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); + if (this.popupObj == undefined) { + // search the nodes for overlap, select the top one in case of multiple nodes + var nodes = this.nodes; + var overlappingNodes = []; + for (id in nodes) { + if (nodes.hasOwnProperty(id)) { + var node = nodes[id]; + if (node.isOverlappingWith(obj)) { + if (node.getTitle() !== undefined) { + overlappingNodes.push(id); + } + } + } + } + + if (overlappingNodes.length > 0) { + // if there are overlapping nodes, select the last one, this is the + // one which is drawn on top of the others + this.popupObj = this.nodes[overlappingNodes[overlappingNodes.length - 1]]; + // if you hover over a node, the title of the edge is not supposed to be shown. + nodeUnderCursor = true; } } - return this; - }; + if (this.popupObj === undefined && nodeUnderCursor == false) { + // search the edges for overlap + var edges = this.edges; + var overlappingEdges = []; + for (id in edges) { + if (edges.hasOwnProperty(id)) { + var edge = edges[id]; + if (edge.connected && (edge.getTitle() !== undefined) && + edge.isOverlappingWith(obj)) { + overlappingEdges.push(id); + } + } + } - /** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public - */ + if (overlappingEdges.length > 0) { + this.popupObj = this.edges[overlappingEdges[overlappingEdges.length - 1]]; + popupType = "edge"; + } + } - Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks[event] || []; - }; + if (this.popupObj) { + // show popup message window + if (this.popupObj.id != previousPopupObjId) { + if (this.popup === undefined) { + this.popup = new Popup(this.frame, this.constants.tooltip); + } - /** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public - */ + this.popup.popupTargetType = popupType; + this.popup.popupTargetId = this.popupObj.id; - Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; + // adjust a small offset such that the mouse cursor is located in the + // bottom left location of the popup, and you can easily move over the + // popup area + this.popup.setPosition(pointer.x + 3, pointer.y - 5); + this.popup.setText(this.popupObj.getTitle()); + this.popup.show(); + } + } + else { + if (this.popup) { + this.popup.hide(); + } + } }; -/***/ }, -/* 57 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; /** - * Created by Alex on 11/6/2014. + * Check if the popup must be hidden, which is the case when the mouse is no + * longer hovering on the object + * @param {{x:Number, y:Number}} pointer + * @private */ + Network.prototype._checkHidePopup = function (pointer) { + var pointerObj = { + left: this._XconvertDOMtoCanvas(pointer.x), + top: this._YconvertDOMtoCanvas(pointer.y), + right: this._XconvertDOMtoCanvas(pointer.x), + bottom: this._YconvertDOMtoCanvas(pointer.y) + }; - // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 - // if the module has no dependencies, the above pattern can be simplified to - (function (root, factory) { - if (true) { - // AMD. Register as an anonymous module. - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (typeof exports === 'object') { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(); - } else { - // Browser globals (root is window) - root.keycharm = factory(); + var stillOnObj = false; + if (this.popup.popupTargetType == 'node') { + stillOnObj = this.nodes[this.popup.popupTargetId].isOverlappingWith(pointerObj); + if (stillOnObj === true) { + var overNode = this._getNodeAt(pointer); + stillOnObj = overNode.id == this.popup.popupTargetId; + } + } + else { + if (this._getNodeAt(pointer) === null) { + stillOnObj = this.edges[this.popup.popupTargetId].isOverlappingWith(pointerObj); + } } - }(this, function () { - - function keycharm(options) { - var preventDefault = options && options.preventDefault || false; - - var container = options && options.container || window; - - var _exportFunctions = {}; - var _bound = {keydown:{}, keyup:{}}; - var _keys = {}; - var i; - // a - z - for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} - // A - Z - for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} - // 0 - 9 - for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} - // F1 - F12 - for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} - // num0 - num9 - for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} - // numpad misc - _keys['num*'] = {code:106, shift: false}; - _keys['num+'] = {code:107, shift: false}; - _keys['num-'] = {code:109, shift: false}; - _keys['num/'] = {code:111, shift: false}; - _keys['num.'] = {code:110, shift: false}; - // arrows - _keys['left'] = {code:37, shift: false}; - _keys['up'] = {code:38, shift: false}; - _keys['right'] = {code:39, shift: false}; - _keys['down'] = {code:40, shift: false}; - // extra keys - _keys['space'] = {code:32, shift: false}; - _keys['enter'] = {code:13, shift: false}; - _keys['shift'] = {code:16, shift: undefined}; - _keys['esc'] = {code:27, shift: false}; - _keys['backspace'] = {code:8, shift: false}; - _keys['tab'] = {code:9, shift: false}; - _keys['ctrl'] = {code:17, shift: false}; - _keys['alt'] = {code:18, shift: false}; - _keys['delete'] = {code:46, shift: false}; - _keys['pageup'] = {code:33, shift: false}; - _keys['pagedown'] = {code:34, shift: false}; - // symbols - _keys['='] = {code:187, shift: false}; - _keys['-'] = {code:189, shift: false}; - _keys[']'] = {code:221, shift: false}; - _keys['['] = {code:219, shift: false}; + if (stillOnObj === false) { + this.popupObj = undefined; + this.popup.hide(); + } + }; + /** + * Set a new size for the network + * @param {string} width Width in pixels or percentage (for example '800px' + * or '50%') + * @param {string} height Height in pixels or percentage (for example '400px' + * or '30%') + */ + Network.prototype.setSize = function(width, height) { + var emitEvent = false; + var oldWidth = this.frame.canvas.width; + var oldHeight = this.frame.canvas.height; + if (width != this.constants.width || height != this.constants.height || this.frame.style.width != width || this.frame.style.height != height) { + this.frame.style.width = width; + this.frame.style.height = height; - var down = function(event) {handleEvent(event,'keydown');}; - var up = function(event) {handleEvent(event,'keyup');}; + this.frame.canvas.style.width = '100%'; + this.frame.canvas.style.height = '100%'; - // handle the actualy bound key with the event - var handleEvent = function(event,type) { - if (_bound[type][event.keyCode] !== undefined) { - var bound = _bound[type][event.keyCode]; - for (var i = 0; i < bound.length; i++) { - if (bound[i].shift === undefined) { - bound[i].fn(event); - } - else if (bound[i].shift == true && event.shiftKey == true) { - bound[i].fn(event); - } - else if (bound[i].shift == false && event.shiftKey == false) { - bound[i].fn(event); - } - } + this.frame.canvas.width = this.frame.canvas.clientWidth * this.pixelRatio; + this.frame.canvas.height = this.frame.canvas.clientHeight * this.pixelRatio; - if (preventDefault == true) { - event.preventDefault(); - } - } - }; + this.constants.width = width; + this.constants.height = height; - // bind a key to a callback - _exportFunctions.bind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (_bound[type][_keys[key].code] === undefined) { - _bound[type][_keys[key].code] = []; - } - _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); - }; + emitEvent = true; + } + else { + // this would adapt the width of the canvas to the width from 100% if and only if + // there is a change. + if (this.frame.canvas.width != this.frame.canvas.clientWidth * this.pixelRatio) { + this.frame.canvas.width = this.frame.canvas.clientWidth * this.pixelRatio; + emitEvent = true; + } + if (this.frame.canvas.height != this.frame.canvas.clientHeight * this.pixelRatio) { + this.frame.canvas.height = this.frame.canvas.clientHeight * this.pixelRatio; + emitEvent = true; + } + } - // bind all keys to a call back (demo purposes) - _exportFunctions.bindAll = function(callback, type) { - if (type === undefined) { - type = 'keydown'; - } - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - _exportFunctions.bind(key,callback,type); - } - } - }; + if (emitEvent == true) { + this.emit('resize', {width:this.frame.canvas.width * this.pixelRatio,height:this.frame.canvas.height * this.pixelRatio, oldWidth: oldWidth * this.pixelRatio, oldHeight: oldHeight * this.pixelRatio}); + } + }; - // get the key label from an event - _exportFunctions.getKey = function(event) { - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { - return key; - } - else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { - return key; - } - else if (event.keyCode == _keys[key].code && key == 'shift') { - return key; - } - } - } - return "unknown key, currently not supported"; - }; + /** + * Set a data set with nodes for the network + * @param {Array | DataSet | DataView} nodes The data containing the nodes. + * @private + */ + Network.prototype._setNodes = function(nodes) { + var oldNodesData = this.nodesData; - // unbind either a specific callback from a key or all of them (by leaving callback undefined) - _exportFunctions.unbind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (callback !== undefined) { - var newBindings = []; - var bound = _bound[type][_keys[key].code]; - if (bound !== undefined) { - for (var i = 0; i < bound.length; i++) { - if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { - newBindings.push(_bound[type][_keys[key].code][i]); - } - } - } - _bound[type][_keys[key].code] = newBindings; - } - else { - _bound[type][_keys[key].code] = []; - } - }; + if (nodes instanceof DataSet || nodes instanceof DataView) { + this.nodesData = nodes; + } + else if (Array.isArray(nodes)) { + this.nodesData = new DataSet(); + this.nodesData.add(nodes); + } + else if (!nodes) { + this.nodesData = new DataSet(); + } + else { + throw new TypeError('Array or DataSet expected'); + } - // reset all bound variables. - _exportFunctions.reset = function() { - _bound = {keydown:{}, keyup:{}}; - }; + if (oldNodesData) { + // unsubscribe from old dataset + util.forEach(this.nodesListeners, function (callback, event) { + oldNodesData.off(event, callback); + }); + } - // unbind all listeners and reset all variables. - _exportFunctions.destroy = function() { - _bound = {keydown:{}, keyup:{}}; - container.removeEventListener('keydown', down, true); - container.removeEventListener('keyup', up, true); - }; + // remove drawn nodes + this.nodes = {}; - // create listeners. - container.addEventListener('keydown',down,true); - container.addEventListener('keyup',up,true); + if (this.nodesData) { + // subscribe to new dataset + var me = this; + util.forEach(this.nodesListeners, function (callback, event) { + me.nodesData.on(event, callback); + }); - // return the public functions. - return _exportFunctions; + // draw all new nodes + var ids = this.nodesData.getIds(); + this._addNodes(ids); } + this._updateSelection(); + }; - return keycharm; - })); - + /** + * Add nodes + * @param {Number[] | String[]} ids + * @private + */ + Network.prototype._addNodes = function(ids) { + var id; + for (var i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + var data = this.nodesData.get(id); + var node = new Node(data, this.images, this.groups, this.constants); + this.nodes[id] = node; // note: this may replace an existing node + if ((node.xFixed == false || node.yFixed == false) && (node.x === null || node.y === null)) { + var radius = 10 * 0.1*ids.length + 10; + var angle = 2 * Math.PI * Math.random(); + if (node.xFixed == false) {node.x = radius * Math.cos(angle);} + if (node.yFixed == false) {node.y = radius * Math.sin(angle);} + } + this.moving = true; + } + this._updateNodeIndexList(); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + this._updateCalculationNodes(); + this._reconnectEdges(); + this._updateValueRange(this.nodes); + this.updateLabels(); + }; + /** + * Update existing nodes, or create them when not yet existing + * @param {Number[] | String[]} ids + * @private + */ + Network.prototype._updateNodes = function(ids) { + var nodesData = this.nodesData.get(ids); + var nodes = this.nodes; -/***/ }, -/* 58 */ -/***/ function(module, exports, __webpack_require__) { + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; + var node = nodes[id]; + var data = nodesData[i]; + if (node) { + // update node + node.setProperties(data, this.constants); + } + else { + // create node + node = new Node(properties, this.images, this.groups, this.constants); + nodes[id] = node; + } + } + this.moving = true; + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + this._updateNodeIndexList(); + this._updateValueRange(nodes); + this._markAllEdgesAsDirty(); + }; - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 - * http://eightmedia.github.io/hammer.js - * - * Copyright (c) 2014 Jorik Tangelder ; - * Licensed under the MIT license */ - (function(window, undefined) { - 'use strict'; + Network.prototype._markAllEdgesAsDirty = function() { + for (var edgeId in this.edges) { + this.edges[edgeId].colorDirty = true; + } + } /** - * @main - * @module hammer - * - * @class Hammer - * @static + * Remove existing nodes. If nodes do not exist, the method will just ignore it. + * @param {Number[] | String[]} ids + * @private */ + Network.prototype._removeNodes = function(ids) { + var nodes = this.nodes; - /** - * Hammer, use this to create instances - * ```` - * var hammertime = new Hammer(myElement); - * ```` - * - * @method Hammer - * @param {HTMLElement} element - * @param {Object} [options={}] - * @return {Hammer.Instance} - */ - var Hammer = function Hammer(element, options) { - return new Hammer.Instance(element, options || {}); + // remove from selection + for (var i = 0, len = ids.length; i < len; i++) { + if (this.selectionObj.nodes[ids[i]] !== undefined) { + this.nodes[ids[i]].unselect(); + this._removeFromSelection(this.nodes[ids[i]]); + } + } + + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; + delete nodes[id]; + } + + + + this._updateNodeIndexList(); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + this._updateCalculationNodes(); + this._reconnectEdges(); + this._updateSelection(); + this._updateValueRange(nodes); }; /** - * version, as defined in package.json - * the value will be set at each build - * @property VERSION - * @final - * @type {String} + * Load edges by reading the data table + * @param {Array | DataSet | DataView} edges The data containing the edges. + * @private + * @private */ - Hammer.VERSION = '1.1.3'; + Network.prototype._setEdges = function(edges) { + var oldEdgesData = this.edgesData; - /** - * default settings. - * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled - * by setting it's name (like `swipe`) to false. - * You can set the defaults for all instances by changing this object before creating an instance. - * @example - * ```` - * Hammer.defaults.drag = false; - * Hammer.defaults.behavior.touchAction = 'pan-y'; - * delete Hammer.defaults.behavior.userSelect; - * ```` - * @property defaults - * @type {Object} - */ - Hammer.defaults = { - /** - * this setting object adds styles and attributes to the element to prevent the browser from doing - * its native behavior. The css properties are auto prefixed for the browsers when needed. - * @property defaults.behavior - * @type {Object} - */ - behavior: { - /** - * Disables text selection to improve the dragging gesture. When the value is `none` it also sets - * `onselectstart=false` for IE on the element. Mainly for desktop browsers. - * @property defaults.behavior.userSelect - * @type {String} - * @default 'none' - */ - userSelect: 'none', + if (edges instanceof DataSet || edges instanceof DataView) { + this.edgesData = edges; + } + else if (Array.isArray(edges)) { + this.edgesData = new DataSet(); + this.edgesData.add(edges); + } + else if (!edges) { + this.edgesData = new DataSet(); + } + else { + throw new TypeError('Array or DataSet expected'); + } - /** - * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). - * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. - * @property defaults.behavior.touchAction - * @type {String} - * @default: 'pan-y' - */ - touchAction: 'pan-y', + if (oldEdgesData) { + // unsubscribe from old dataset + util.forEach(this.edgesListeners, function (callback, event) { + oldEdgesData.off(event, callback); + }); + } - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @property defaults.behavior.touchCallout - * @type {String} - * @default 'none' - */ - touchCallout: 'none', + // remove drawn edges + this.edges = {}; - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', + if (this.edgesData) { + // subscribe to new dataset + var me = this; + util.forEach(this.edgesListeners, function (callback, event) { + me.edgesData.on(event, callback); + }); - /** - * Specifies that an entire element should be draggable instead of its contents. - * Mainly for desktop browsers. - * @property defaults.behavior.userDrag - * @type {String} - * @default 'none' - */ - userDrag: 'none', + // draw all new nodes + var ids = this.edgesData.getIds(); + this._addEdges(ids); + } - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. - * - * If you don't specify an alpha value, Safari on iPhone applies a default alpha value - * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). - * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. - * @property defaults.behavior.tapHighlightColor - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: 'rgba(0,0,0,0)' - } + this._reconnectEdges(); }; /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document + * Add edges + * @param {Number[] | String[]} ids + * @private */ - Hammer.DOCUMENT = document; + Network.prototype._addEdges = function (ids) { + var edges = this.edges, + edgesData = this.edgesData; - /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} - */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} - */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + var oldEdge = edges[id]; + if (oldEdge) { + oldEdge.disconnect(); + } - /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} - */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + var data = edgesData.get(id, {"showInternalIds" : true}); + edges[id] = new Edge(data, this, this.constants); + } + this.moving = true; + this._updateValueRange(edges); + this._createBezierNodes(); + this._updateCalculationNodes(); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + }; /** - * detect if we want to support mouseevents at all - * @property NO_MOUSEEVENTS - * @type {Boolean} + * Update existing edges, or create them when not yet existing + * @param {Number[] | String[]} ids + * @private */ - Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; + Network.prototype._updateEdges = function (ids) { + var edges = this.edges, + edgesData = this.edgesData; + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; - /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 - */ - Hammer.CALCULATE_INTERVAL = 25; + var data = edgesData.get(id); + var edge = edges[id]; + if (edge) { + // update edge + edge.disconnect(); + edge.setProperties(data, this.constants); + edge.connect(); + } + else { + // create edge + edge = new Edge(data, this, this.constants); + this.edges[id] = edge; + } + } + + this._createBezierNodes(); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + this.moving = true; + this._updateValueRange(edges); + }; /** - * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` - * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) - * @property EVENT_TYPES + * Remove existing edges. Non existing ids will be ignored + * @param {Number[] | String[]} ids * @private - * @writeOnce - * @type {Object} */ - var EVENT_TYPES = {}; + Network.prototype._removeEdges = function (ids) { + var edges = this.edges; - /** - * direction strings, for safe comparisons - * @property DIRECTION_DOWN|LEFT|UP|RIGHT - * @final - * @type {String} - * @default 'down' 'left' 'up' 'right' - */ - var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; - var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; - var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; - var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + // remove from selection + for (var i = 0, len = ids.length; i < len; i++) { + if (this.selectionObj.edges[ids[i]] !== undefined) { + edges[ids[i]].unselect(); + this._removeFromSelection(edges[ids[i]]); + } + } - /** - * pointertype strings, for safe comparisons - * @property POINTER_MOUSE|TOUCH|PEN - * @final - * @type {String} - * @default 'mouse' 'touch' 'pen' - */ - var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; - var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; - var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; + var edge = edges[id]; + if (edge) { + if (edge.via != null) { + delete this.sectors['support']['nodes'][edge.via.id]; + } + edge.disconnect(); + delete edges[id]; + } + } - /** - * eventtypes - * @property EVENT_START|MOVE|END|RELEASE|TOUCH - * @final - * @type {String} - * @default 'start' 'change' 'move' 'end' 'release' 'touch' - */ - var EVENT_START = Hammer.EVENT_START = 'start'; - var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; - var EVENT_END = Hammer.EVENT_END = 'end'; - var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; - var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + this.moving = true; + this._updateValueRange(edges); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + this._updateCalculationNodes(); + }; /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false + * Reconnect all edges + * @private */ - Hammer.READY = false; + Network.prototype._reconnectEdges = function() { + var id, + nodes = this.nodes, + edges = this.edges; + for (id in nodes) { + if (nodes.hasOwnProperty(id)) { + nodes[id].edges = []; + nodes[id].dynamicEdges = []; + } + } + + for (id in edges) { + if (edges.hasOwnProperty(id)) { + var edge = edges[id]; + edge.from = null; + edge.to = null; + edge.connect(); + } + } + }; /** - * plugins namespace - * @property plugins - * @type {Object} + * Update the values of all object in the given array according to the current + * value range of the objects in the array. + * @param {Object} obj An object containing a set of Edges or Nodes + * The objects must have a method getValue() and + * setValueRange(min, max). + * @private */ - Hammer.plugins = Hammer.plugins || {}; + Network.prototype._updateValueRange = function(obj) { + var id; + + // determine the range of the objects + var valueMin = undefined; + var valueMax = undefined; + var valueTotal = 0; + for (id in obj) { + if (obj.hasOwnProperty(id)) { + var value = obj[id].getValue(); + if (value !== undefined) { + valueMin = (valueMin === undefined) ? value : Math.min(value, valueMin); + valueMax = (valueMax === undefined) ? value : Math.max(value, valueMax); + valueTotal += value; + } + } + } + + // adjust the range of all objects + if (valueMin !== undefined && valueMax !== undefined) { + for (id in obj) { + if (obj.hasOwnProperty(id)) { + obj[id].setValueRange(valueMin, valueMax, valueTotal); + } + } + } + }; /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} + * Redraw the network with the current data + * chart will be resized too. */ - Hammer.gestures = Hammer.gestures || {}; + Network.prototype.redraw = function() { + this.setSize(this.constants.width, this.constants.height); + this._redraw(); + }; /** - * setup events to detect gestures on the document - * this function is called when creating an new instance + * Redraw the network with the current data + * @param hidden | used to get the first estimate of the node sizes. only the nodes are drawn after which they are quickly drawn over. * @private */ - function setup() { - if(Hammer.READY) { - return; + Network.prototype._requestRedraw = function(hidden) { + if (this.redrawRequested !== true) { + this.redrawRequested = true; + if (this.requiresTimeout === true) { + window.setTimeout(this._redraw.bind(this, hidden),0); } + else { + window.requestAnimationFrame(this._redraw.bind(this, hidden, true)); + } + } + }; - // find what eventtypes we add listeners to - Event.determineEventTypes(); + Network.prototype._redraw = function(hidden, requested) { + if (hidden === undefined) { + hidden = false; + } + this.redrawRequested = false; + var ctx = this.frame.canvas.getContext('2d'); - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); + ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + // clear the canvas + var w = this.frame.canvas.clientWidth; + var h = this.frame.canvas.clientHeight; + ctx.clearRect(0, 0, w, h); - // Hammer is ready...! - Hammer.READY = true; - } + // set scaling and translation + ctx.save(); + ctx.translate(this.translation.x, this.translation.y); + ctx.scale(this.scale, this.scale); - /** - * @module hammer - * - * @class Utils - * @static - */ - var Utils = Hammer.utils = { - /** - * extend method, could also be used for cloning when `dest` is an empty object. - * changes the dest object - * @method extend - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge=false] do a merge - * @return {Object} dest - */ - extend: function extend(dest, src, merge) { - for(var key in src) { - if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { - continue; - } - dest[key] = src[key]; - } - return dest; - }, + this.canvasTopLeft = { + "x": this._XconvertDOMtoCanvas(0), + "y": this._YconvertDOMtoCanvas(0) + }; + this.canvasBottomRight = { + "x": this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth), + "y": this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight) + }; - /** - * simple addEventListener wrapper - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - on: function on(element, type, handler) { - element.addEventListener(type, handler, false); - }, + if (hidden === false) { + this._doInAllSectors("_drawAllSectorNodes", ctx); + if (this.drag.dragging == false || this.drag.dragging === undefined || this.constants.hideEdgesOnDrag == false) { + this._doInAllSectors("_drawEdges", ctx); + } + } - /** - * simple removeEventListener wrapper - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - off: function off(element, type, handler) { - element.removeEventListener(type, handler, false); - }, + if (this.drag.dragging == false || this.drag.dragging === undefined || this.constants.hideNodesOnDrag == false) { + this._doInAllSectors("_drawNodes",ctx,false); + } + + if (hidden === false) { + if (this.controlNodesActive == true) { + this._doInAllSectors("_drawControlNodes", ctx); + } + } - /** - * forEach over arrays and objects - * @method each - * @param {Object|Array} obj - * @param {Function} iterator - * @param {any} iterator.item - * @param {Number} iterator.index - * @param {Object|Array} iterator.obj the source object - * @param {Object} context value to use as `this` in the iterator - */ - each: function each(obj, iterator, context) { - var i, len; + // this._doInSupportSector("_drawNodes",ctx,true); + // this._drawTree(ctx,"#F00F0F"); - // native forEach on arrays - if('forEach' in obj) { - obj.forEach(iterator, context); - // arrays - } else if(obj.length !== undefined) { - for(i = 0, len = obj.length; i < len; i++) { - if(iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - // objects - } else { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - } - }, + // restore original scaling and translation + ctx.restore(); - /** - * find if a string contains the string using indexOf - * @method inStr - * @param {String} src - * @param {String} find - * @return {Boolean} found - */ - inStr: function inStr(src, find) { - return src.indexOf(find) > -1; - }, + if (hidden === true) { + ctx.clearRect(0, 0, w, h); + } + } - /** - * find if a array contains the object using indexOf or a simple polyfill - * @method inArray - * @param {String} src - * @param {String} find - * @return {Boolean|Number} false when not found, or the index - */ - inArray: function inArray(src, find) { - if(src.indexOf) { - var index = src.indexOf(find); - return (index === -1) ? false : index; - } else { - for(var i = 0, len = src.length; i < len; i++) { - if(src[i] === find) { - return i; - } - } - return false; - } - }, + /** + * Set the translation of the network + * @param {Number} offsetX Horizontal offset + * @param {Number} offsetY Vertical offset + * @private + */ + Network.prototype._setTranslation = function(offsetX, offsetY) { + if (this.translation === undefined) { + this.translation = { + x: 0, + y: 0 + }; + } - /** - * convert an array-like object (`arguments`, `touchlist`) to an array - * @method toArray - * @param {Object} obj - * @return {Array} - */ - toArray: function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - }, + if (offsetX !== undefined) { + this.translation.x = offsetX; + } + if (offsetY !== undefined) { + this.translation.y = offsetY; + } - /** - * find if a node is in the given parent - * @method hasParent - * @param {HTMLElement} node - * @param {HTMLElement} parent - * @return {Boolean} found - */ - hasParent: function hasParent(node, parent) { - while(node) { - if(node == parent) { - return true; - } - node = node.parentNode; - } - return false; - }, + this.emit('viewChanged'); + }; - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; + /** + * Get the translation of the network + * @return {Object} translation An object with parameters x and y, both a number + * @private + */ + Network.prototype._getTranslation = function() { + return { + x: this.translation.x, + y: this.translation.y + }; + }; - // no need to loop when only one touch - if(touches.length === 1) { - return { - pageX: touches[0].pageX, - pageY: touches[0].pageY, - clientX: touches[0].clientX, - clientY: touches[0].clientY - }; - } + /** + * Scale the network + * @param {Number} scale Scaling factor 1.0 is unscaled + * @private + */ + Network.prototype._setScale = function(scale) { + this.scale = scale; + }; - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); + /** + * Get the current scale of the network + * @return {Number} scale Scaling factor 1.0 is unscaled + * @private + */ + Network.prototype._getScale = function() { + return this.scale; + }; - return { - pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, - pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, - clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, - clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 - }; - }, + /** + * Convert the X coordinate in DOM-space (coordinate point in browser relative to the container div) to + * the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon) + * @param {number} x + * @returns {number} + * @private + */ + Network.prototype._XconvertDOMtoCanvas = function(x) { + return (x - this.translation.x) / this.scale; + }; - /** - * calculate the velocity between two points. unit is in px per ms. - * @method getVelocity - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - * @return {Object} velocity `x` and `y` - */ - getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { - return { - x: Math.abs(deltaX / deltaTime) || 0, - y: Math.abs(deltaY / deltaTime) || 0 - }; - }, + /** + * Convert the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon) to + * the X coordinate in DOM-space (coordinate point in browser relative to the container div) + * @param {number} x + * @returns {number} + * @private + */ + Network.prototype._XconvertCanvasToDOM = function(x) { + return x * this.scale + this.translation.x; + }; - /** - * calculate the angle between two coordinates - * @method getAngle - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {Number} angle - */ - getAngle: function getAngle(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + /** + * Convert the Y coordinate in DOM-space (coordinate point in browser relative to the container div) to + * the Y coordinate in canvas-space (the simulation sandbox, which the camera looks upon) + * @param {number} y + * @returns {number} + * @private + */ + Network.prototype._YconvertDOMtoCanvas = function(y) { + return (y - this.translation.y) / this.scale; + }; - return Math.atan2(y, x) * 180 / Math.PI; - }, + /** + * Convert the Y coordinate in canvas-space (the simulation sandbox, which the camera looks upon) to + * the Y coordinate in DOM-space (coordinate point in browser relative to the container div) + * @param {number} y + * @returns {number} + * @private + */ + Network.prototype._YconvertCanvasToDOM = function(y) { + return y * this.scale + this.translation.y ; + }; - /** - * do a small comparision to get the direction between two touches. - * @method getDirection - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` - */ - getDirection: function getDirection(touch1, touch2) { - var x = Math.abs(touch1.clientX - touch2.clientX), - y = Math.abs(touch1.clientY - touch2.clientY); - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, + /** + * + * @param {object} pos = {x: number, y: number} + * @returns {{x: number, y: number}} + * @constructor + */ + Network.prototype.canvasToDOM = function (pos) { + return {x: this._XconvertCanvasToDOM(pos.x), y: this._YconvertCanvasToDOM(pos.y)}; + }; - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + /** + * + * @param {object} pos = {x: number, y: number} + * @returns {{x: number, y: number}} + * @constructor + */ + Network.prototype.DOMtoCanvas = function (pos) { + return {x: this._XconvertDOMtoCanvas(pos.x), y: this._YconvertDOMtoCanvas(pos.y)}; + }; - return Math.sqrt((x * x) + (y * y)); - }, + /** + * Redraw all nodes + * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); + * @param {CanvasRenderingContext2D} ctx + * @param {Boolean} [alwaysShow] + * @private + */ + Network.prototype._drawNodes = function(ctx,alwaysShow) { + if (alwaysShow === undefined) { + alwaysShow = false; + } - /** - * calculate the scale factor between two touchLists - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @method getScale - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} scale - */ - getScale: function getScale(start, end) { - // need two fingers... - if(start.length >= 2 && end.length >= 2) { - return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); - } - return 1; - }, + // first draw the unselected nodes + var nodes = this.nodes; + var selected = []; - /** - * calculate the rotation degrees between two touchLists - * @method getRotation - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} rotation - */ - getRotation: function getRotation(start, end) { - // need two fingers - if(start.length >= 2 && end.length >= 2) { - return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); + for (var id in nodes) { + if (nodes.hasOwnProperty(id)) { + nodes[id].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight); + if (nodes[id].isSelected()) { + selected.push(id); + } + else { + if (nodes[id].inArea() || alwaysShow) { + nodes[id].draw(ctx); } - return 0; - }, + } + } + } - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, + // draw the selected nodes on top + for (var s = 0, sMax = selected.length; s < sMax; s++) { + if (nodes[selected[s]].inArea() || alwaysShow) { + nodes[selected[s]].draw(ctx); + } + } + }; - /** - * set css properties with their prefixes - * @param {HTMLElement} element - * @param {String} prop - * @param {String} value - * @param {Boolean} [toggle=true] - * @return {Boolean} - */ - setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { - var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; - prop = Utils.toCamelCase(prop); + /** + * Redraw all edges + * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); + * @param {CanvasRenderingContext2D} ctx + * @private + */ + Network.prototype._drawEdges = function(ctx) { + var edges = this.edges; + for (var id in edges) { + if (edges.hasOwnProperty(id)) { + var edge = edges[id]; + edge.setScale(this.scale); + if (edge.connected) { + edges[id].draw(ctx); + } + } + } + }; - for(var i = 0; i < prefixes.length; i++) { - var p = prop; - // prefixes - if(prefixes[i]) { - p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); - } + /** + * Redraw all edges + * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); + * @param {CanvasRenderingContext2D} ctx + * @private + */ + Network.prototype._drawControlNodes = function(ctx) { + var edges = this.edges; + for (var id in edges) { + if (edges.hasOwnProperty(id)) { + edges[id]._drawControlNodes(ctx); + } + } + }; - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; - } - } - }, + /** + * Find a stable position for all nodes + * @private + */ + Network.prototype._stabilize = function() { + if (this.constants.freezeForStabilization == true) { + this._freezeDefinedNodes(); + } - /** - * toggle browser default behavior by setting css properties. - * `userSelect='none'` also sets `element.onselectstart` to false - * `userDrag='none'` also sets `element.ondragstart` to false - * - * @method toggleBehavior - * @param {HtmlElement} element - * @param {Object} props - * @param {Boolean} [toggle=true] - */ - toggleBehavior: function toggleBehavior(element, props, toggle) { - if(!props || !element || !element.style) { - return; - } + // find stable position + var count = 0; + while (this.moving && count < this.constants.stabilizationIterations) { + this._physicsTick(); + count++; + } - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); - var falseFn = toggle && function() { - return false; - }; + if (this.constants.zoomExtentOnStabilize == true) { + this.zoomExtent({duration:0}, false, true); + } - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; - } - }, + if (this.constants.freezeForStabilization == true) { + this._restoreFrozenNodes(); + } - /** - * convert a string with underscores to camelCase - * so prevent_default becomes preventDefault - * @param {String} str - * @return {String} camelCaseStr - */ - toCamelCase: function toCamelCase(str) { - return str.replace(/[_-]([a-z])/g, function(s) { - return s[1].toUpperCase(); - }); + this.emit("stabilizationIterationsDone"); + }; + + /** + * When initializing and stabilizing, we can freeze nodes with a predefined position. This greatly speeds up stabilization + * because only the supportnodes for the smoothCurves have to settle. + * + * @private + */ + Network.prototype._freezeDefinedNodes = function() { + var nodes = this.nodes; + for (var id in nodes) { + if (nodes.hasOwnProperty(id)) { + if (nodes[id].x != null && nodes[id].y != null) { + nodes[id].fixedData.x = nodes[id].xFixed; + nodes[id].fixedData.y = nodes[id].yFixed; + nodes[id].xFixed = true; + nodes[id].yFixed = true; + } + } + } + }; + + /** + * Unfreezes the nodes that have been frozen by _freezeDefinedNodes. + * + * @private + */ + Network.prototype._restoreFrozenNodes = function() { + var nodes = this.nodes; + for (var id in nodes) { + if (nodes.hasOwnProperty(id)) { + if (nodes[id].fixedData.x != null) { + nodes[id].xFixed = nodes[id].fixedData.x; + nodes[id].yFixed = nodes[id].fixedData.y; + } } + } }; /** - * @module hammer + * Check if any of the nodes is still moving + * @param {number} vmin the minimum velocity considered as 'moving' + * @return {boolean} true if moving, false if non of the nodes is moving + * @private */ + Network.prototype._isMoving = function(vmin) { + var nodes = this.nodes; + for (var id in nodes) { + if (nodes[id] !== undefined) { + if (nodes[id].isMoving(vmin) == true) { + return true; + } + } + } + return false; + }; + + /** - * @class Event - * @static + * /** + * Perform one discrete step for all nodes + * + * @private */ - var Event = Hammer.event = { - /** - * when touch events have been fired, this is true - * this is used to stop mouse events - * @property prevent_mouseevents - * @private - * @type {Boolean} - */ - preventMouseEvents: false, + Network.prototype._discreteStepNodes = function() { + var interval = this.physicsDiscreteStepsize; + var nodes = this.nodes; + var nodeId; + var nodesPresent = false; - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, + if (this.constants.maxVelocity > 0) { + for (nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + nodes[nodeId].discreteStepLimited(interval, this.constants.maxVelocity); + nodesPresent = true; + } + } + } + else { + for (nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + nodes[nodeId].discreteStep(interval); + nodesPresent = true; + } + } + } - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, + if (nodesPresent == true) { + var vminCorrected = this.constants.minVelocity / Math.max(this.scale,0.05); + if (vminCorrected > 0.5*this.constants.maxVelocity) { + return true; + } + else { + return this._isMoving(vminCorrected); + } + } + return false; + }; - /** - * simple event binder with a hook and support for multiple types - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - on: function on(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.on(element, type, handler); - hook && hook(type); - }); - }, - /** - * simple event unbinder with a hook and support for multiple types - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - off: function off(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.off(element, type, handler); - hook && hook(type); - }); - }, + Network.prototype._revertPhysicsState = function() { + var nodes = this.nodes; + for (var nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + nodes[nodeId].revertPosition(); + } + } + } - /** - * the core touch event handler. - * this finds out if we should to detect gestures - * @method onTouch - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Function} handler - * @return onTouchHandler {Function} the core event handler - */ - onTouch: function onTouch(element, eventType, handler) { - var self = this; + Network.prototype._revertPhysicsTick = function() { + this._doInAllActiveSectors("_revertPhysicsState"); + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this._doInSupportSector("_revertPhysicsState"); + } + } - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; + /** + * A single simulation step (or "tick") in the physics simulation + * + * @private + */ + Network.prototype._physicsTick = function() { + if (!this.freezeSimulationEnabled) { + if (this.moving == true) { + var mainMovingStatus = false; + var supportMovingStatus = false; - // if we are in a mouseevent, but there has been a touchevent triggered in this session - // we want to do nothing. simply break out of the event. - if(isMouse && self.preventMouseEvents) { - return; + this._doInAllActiveSectors("_initializeForceCalculation"); + var mainMoving = this._doInAllActiveSectors("_discreteStepNodes"); + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + supportMovingStatus = this._doInSupportSector("_discreteStepNodes"); + } - // mousebutton must be down - } else if(isMouse && eventType == EVENT_START && ev.button === 0) { - self.preventMouseEvents = false; - self.shouldDetect = true; - } else if(isPointer && eventType == EVENT_START) { - self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); - // just a valid start event, but no mouse - } else if(!isMouse && eventType == EVENT_START) { - self.preventMouseEvents = true; - self.shouldDetect = true; - } + // gather movement data from all sectors, if one moves, we are NOT stabilzied + for (var i = 0; i < mainMoving.length; i++) { + mainMovingStatus = mainMoving[i] || mainMovingStatus; + } - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } + // determine if the network has stabilzied + this.moving = mainMovingStatus || supportMovingStatus; + if (this.moving == false) { + this._revertPhysicsTick(); + } + else { + // this is here to ensure that there is no start event when the network is already stable. + if (this.startedStabilization == false) { + this.emit("startStabilization"); + this.startedStabilization = true; + } + } - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } + this.stabilizationIterations++; + } + } + }; - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - if(triggerType == EVENT_END) { - self.preventMouseEvents = false; - self.shouldDetect = false; - PointerEvent.reset(); - // update the pointerevent object after the detection - } - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - }; + /** + * This function runs one step of the animation. It calls an x amount of physics ticks and one render tick. + * It reschedules itself at the beginning of the function + * + * @private + */ + Network.prototype._animationStep = function() { + // reset the timer so a new scheduled animation step can be set + this.timer = undefined; - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, + if (this.requiresTimeout == true) { + // this schedules a new animation step + this.start(); + } - /** - * the core detection method - * this finds out what hammer-touch-events to trigger - * @method doDetect - * @param {Object} ev - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {HTMLElement} element - * @param {Function} handler - * @return {String} triggerType matches `EVENT_START|MOVE|END` - */ - doDetect: function doDetect(ev, eventType, element, handler) { - var touchList = this.getTouchList(ev, eventType); - var touchListLength = touchList.length; - var triggerType = eventType; - var triggerChange = touchList.trigger; // used by fakeMultitouch plugin - var changedLength = touchListLength; + // handle the keyboad movement + this._handleNavigation(); - // at each touchstart-like event we want also want to trigger a TOUCH event... - if(eventType == EVENT_START) { - triggerChange = EVENT_TOUCH; - // ...the same for a touchend-like event - } else if(eventType == EVENT_END) { - triggerChange = EVENT_RELEASE; + // check if the physics have settled + if (this.moving == true) { + var startTime = Date.now(); + this._physicsTick(); + var physicsTime = Date.now() - startTime; - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); - } + // run double speed if it is a little graph + if ((this.renderTimestep - this.renderTime > 2 * physicsTime || this.runDoubleSpeed == true) && this.moving == true) { + this._physicsTick(); - // after there are still touches on the screen, - // we just want to trigger a MOVE event. so change the START or END to a MOVE - // but only after detection has been started, the first time we actualy want a START - if(changedLength > 0 && this.started) { - triggerType = EVENT_MOVE; - } + // this makes sure there is no jitter. The decision is taken once to run it at double speed. + if (this.renderTime != 0) { + this.runDoubleSpeed = true + } + } + } - // detection has been started, we keep track of this, see above - this.started = true; + var renderStartTime = Date.now(); + this._redraw(); + this.renderTime = Date.now() - renderStartTime; - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + if (this.requiresTimeout == false) { + // this schedules a new animation step + this.start(); + } + }; - // trigger the triggerType event before the change (TOUCH, RELEASE) events - // but the END event should be at last - if(eventType != EVENT_END) { - handler.call(Detection, evData); - } + if (typeof window !== 'undefined') { + window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || + window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; + } - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; + /** + * Schedule a animation step with the refreshrate interval. + */ + Network.prototype.start = function() { + if (this.freezeSimulationEnabled == true) { + this.moving = false; + } + if (this.moving == true || this.xIncrement != 0 || this.yIncrement != 0 || this.zoomIncrement != 0 || this.animating == true) { + if (!this.timer) { + if (this.requiresTimeout == true) { + this.timer = window.setTimeout(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function + } + else { + this.timer = window.requestAnimationFrame(this._animationStep.bind(this)); // wait this.renderTimeStep milliseconds and perform the animation step function + } + } + } + else { + this._requestRedraw(); + // this check is to ensure that the network does not emit these events if it was already stabilized and setOptions is called (setting moving to true and calling start()) + if (this.stabilizationIterations > 1) { + // trigger the "stabilized" event. + // The event is triggered on the next tick, to prevent the case that + // it is fired while initializing the Network, in which case you would not + // be able to catch it + var me = this; + var params = { + iterations: me.stabilizationIterations + }; + this.stabilizationIterations = 0; + this.startedStabilization = false; + setTimeout(function () { + me.emit("stabilized", params); + }, 0); + } + else { + this.stabilizationIterations = 0; + } + } + }; - handler.call(Detection, evData); - evData.eventType = triggerType; - delete evData.changedLength; - } + /** + * Move the network according to the keyboard presses. + * + * @private + */ + Network.prototype._handleNavigation = function() { + if (this.xIncrement != 0 || this.yIncrement != 0) { + var translation = this._getTranslation(); + this._setTranslation(translation.x+this.xIncrement, translation.y+this.yIncrement); + } + if (this.zoomIncrement != 0) { + var center = { + x: this.frame.canvas.clientWidth / 2, + y: this.frame.canvas.clientHeight / 2 + }; + this._zoom(this.scale*(1 + this.zoomIncrement), center); + } + }; - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; - } + /** + * Freeze the _animationStep + */ + Network.prototype.freezeSimulation = function(freeze) { + if (freeze == true) { + this.freezeSimulationEnabled = true; + this.moving = false; + } + else { + this.freezeSimulationEnabled = false; + this.moving = true; + this.start(); + } + }; - return triggerType; - }, - /** - * we have different events for each device/browser - * determine what we need and set them in the EVENT_TYPES constant - * the `onTouch` method is bind to these properties. - * @method determineEventTypes - * @return {Object} events - */ - determineEventTypes: function determineEventTypes() { - var types; - if(Hammer.HAS_POINTEREVENTS) { - if(window.PointerEvent) { - types = [ - 'pointerdown', - 'pointermove', - 'pointerup pointercancel lostpointercapture' - ]; - } else { - types = [ - 'MSPointerDown', - 'MSPointerMove', - 'MSPointerUp MSPointerCancel MSLostPointerCapture' - ]; - } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; - } else { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; + /** + * This function cleans the support nodes if they are not needed and adds them when they are. + * + * @param {boolean} [disableStart] + * @private + */ + Network.prototype._configureSmoothCurves = function(disableStart) { + if (disableStart === undefined) { + disableStart = true; + } + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this._createBezierNodes(); + // cleanup unused support nodes + for (var nodeId in this.sectors['support']['nodes']) { + if (this.sectors['support']['nodes'].hasOwnProperty(nodeId)) { + if (this.edges[this.sectors['support']['nodes'][nodeId].parentEdgeId] === undefined) { + delete this.sectors['support']['nodes'][nodeId]; } + } + } + } + else { + // delete the support nodes + this.sectors['support']['nodes'] = {}; + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + this.edges[edgeId].via = null; + } + } + } - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, - /** - * create touchList depending on the event - * @method getTouchList - * @param {Object} ev - * @param {String} eventType - * @return {Array} touches - */ - getTouchList: function getTouchList(ev, eventType) { - // get the fake pointerEvent touchlist - if(Hammer.HAS_POINTEREVENTS) { - return PointerEvent.getTouchList(); + this._updateCalculationNodes(); + if (!disableStart) { + this.moving = true; + this.start(); + } + }; + + + /** + * Bezier curves require an anchor point to calculate the smooth flow. These points are nodes. These nodes are invisible but + * are used for the force calculation. + * + * @private + */ + Network.prototype._createBezierNodes = function() { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + var edge = this.edges[edgeId]; + if (edge.via == null) { + var nodeId = "edgeId:".concat(edge.id); + this.sectors['support']['nodes'][nodeId] = new Node( + {id:nodeId, + mass:1, + shape:'circle', + image:"", + internalMultiplier:1 + },{},{},this.constants); + edge.via = this.sectors['support']['nodes'][nodeId]; + edge.via.parentEdgeId = edge.id; + edge.positionBezierNode(); } + } + } + } + }; - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; - } + /** + * load the functions that load the mixins into the prototype. + * + * @private + */ + Network.prototype._initializeMixinLoaders = function () { + for (var mixin in MixinLoader) { + if (MixinLoader.hasOwnProperty(mixin)) { + Network.prototype[mixin] = MixinLoader[mixin]; + } + } + }; - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; + /** + * Load the XY positions of the nodes into the dataset. + */ + Network.prototype.storePosition = function() { + console.log("storePosition is depricated: use .storePositions() from now on.") + this.storePositions(); + }; - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); - } - identifiers.push(touch.identifier); - }); + /** + * Load the XY positions of the nodes into the dataset. + */ + Network.prototype.storePositions = function() { + var dataArray = []; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + var allowedToMoveX = !this.nodes.xFixed; + var allowedToMoveY = !this.nodes.yFixed; + if (this.nodesData._data[nodeId].x != Math.round(node.x) || this.nodesData._data[nodeId].y != Math.round(node.y)) { + dataArray.push({id:nodeId,x:Math.round(node.x),y:Math.round(node.y),allowedToMoveX:allowedToMoveX,allowedToMoveY:allowedToMoveY}); + } + } + } + this.nodesData.update(dataArray); + }; - return touchList; + /** + * Return the positions of the nodes. + */ + Network.prototype.getPositions = function(ids) { + var dataArray = {}; + if (ids !== undefined) { + if (Array.isArray(ids) == true) { + for (var i = 0; i < ids.length; i++) { + if (this.nodes[ids[i]] !== undefined) { + var node = this.nodes[ids[i]]; + dataArray[ids[i]] = {x: Math.round(node.x), y: Math.round(node.y)}; } + } + } + else { + if (this.nodes[ids] !== undefined) { + var node = this.nodes[ids]; + dataArray[ids] = {x: Math.round(node.x), y: Math.round(node.y)}; + } + } + } + else { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + dataArray[nodeId] = {x: Math.round(node.x), y: Math.round(node.y)}; + } + } + } + return dataArray; + }; - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, - /** - * collect basic event data - * @method collectEventData - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Array} touches - * @param {Object} ev - * @return {Object} ev - */ - collectEventData: function collectEventData(element, eventType, touches, ev) { - // find out pointerType - var pointerType = POINTER_TOUCH; - if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { - pointerType = POINTER_MOUSE; - } else if(PointerEvent.matchType(POINTER_PEN, ev)) { - pointerType = POINTER_PEN; - } - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, + /** + * Center a node in view. + * + * @param {Number} nodeId + * @param {Number} [options] + */ + Network.prototype.focusOnNode = function (nodeId, options) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (options === undefined) { + options = {}; + } + var nodePosition = {x: this.nodes[nodeId].x, y: this.nodes[nodeId].y}; + options.position = nodePosition; + options.lockedOnNode = nodeId; - /** - * prevent the browser default actions - * mostly used to disable scrolling of the browser - */ - preventDefault: function() { - var srcEvent = this.srcEvent; - srcEvent.preventManipulation && srcEvent.preventManipulation(); - srcEvent.preventDefault && srcEvent.preventDefault(); - }, + this.moveTo(options) + } + else { + console.log("This nodeId cannot be found."); + } + }; - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, + /** + * + * @param {Object} options | options.offset = {x:Number, y:Number} // offset from the center in DOM pixels + * | options.scale = Number // scale to move to + * | options.position = {x:Number, y:Number} // position to move to + * | options.animation = {duration:Number, easingFunction:String} || Boolean // position to move to + */ + Network.prototype.moveTo = function (options) { + if (options === undefined) { + options = {}; + return; + } + if (options.offset === undefined) {options.offset = {x: 0, y: 0}; } + if (options.offset.x === undefined) {options.offset.x = 0; } + if (options.offset.y === undefined) {options.offset.y = 0; } + if (options.scale === undefined) {options.scale = this._getScale(); } + if (options.position === undefined) {options.position = this._getTranslation();} + if (options.animation === undefined) {options.animation = {duration:0}; } + if (options.animation === false ) {options.animation = {duration:0}; } + if (options.animation === true ) {options.animation = {}; } + if (options.animation.duration === undefined) {options.animation.duration = 1000; } // default duration + if (options.animation.easingFunction === undefined) {options.animation.easingFunction = "easeInOutQuad"; } // default easing function - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; - } + this.animateView(options); }; - /** - * @module hammer * - * @class PointerEvent - * @static + * @param {Object} options | options.offset = {x:Number, y:Number} // offset from the center in DOM pixels + * | options.time = Number // animation time in milliseconds + * | options.scale = Number // scale to animate to + * | options.position = {x:Number, y:Number} // position to animate to + * | options.easingFunction = String // linear, easeInQuad, easeOutQuad, easeInOutQuad, + * // easeInCubic, easeOutCubic, easeInOutCubic, + * // easeInQuart, easeOutQuart, easeInOutQuart, + * // easeInQuint, easeOutQuint, easeInOutQuint */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, - - /** - * get the pointers as an array - * @method getTouchList - * @return {Array} touchlist - */ - getTouchList: function getTouchList() { - var touchlist = []; - // we can use forEach since pointerEvents only is in IE10 - Utils.each(this.pointers, function(pointer) { - touchlist.push(pointer); - }); - return touchlist; - }, + Network.prototype.animateView = function (options) { + if (options === undefined) { + options = {}; + return; + } - /** - * update the position of a pointer - * @method updatePointer - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Object} pointerEvent - */ - updatePointer: function updatePointer(eventType, pointerEvent) { - if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { - delete this.pointers[pointerEvent.pointerId]; - } else { - pointerEvent.identifier = pointerEvent.pointerId; - this.pointers[pointerEvent.pointerId] = pointerEvent; - } - }, + // release if something focussed on the node + this.releaseNode(); + if (options.locked == true) { + this.lockedOnNodeId = options.lockedOnNode; + this.lockedOnNodeOffset = options.offset; + } - /** - * check if ev matches pointertype - * @method matchType - * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` - * @param {PointerEvent} ev - */ - matchType: function matchType(pointerType, ev) { - if(!ev.pointerType) { - return false; - } + // forcefully complete the old animation if it was still running + if (this.easingTime != 0) { + this._transitionRedraw(1); // by setting easingtime to 1, we finish the animation. + } - var pt = ev.pointerType, - types = {}; + this.sourceScale = this._getScale(); + this.sourceTranslation = this._getTranslation(); + this.targetScale = options.scale; - types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); - types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); - types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); - return types[pointerType]; - }, + // set the scale so the viewCenter is based on the correct zoom level. This is overridden in the transitionRedraw + // but at least then we'll have the target transition + this._setScale(this.targetScale); + var viewCenter = this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); + var distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node + x: viewCenter.x - options.position.x, + y: viewCenter.y - options.position.y + }; + this.targetTranslation = { + x: this.sourceTranslation.x + distanceFromCenter.x * this.targetScale + options.offset.x, + y: this.sourceTranslation.y + distanceFromCenter.y * this.targetScale + options.offset.y + }; - /** - * reset the stored pointers - * @method reset - */ - reset: function resetList() { - this.pointers = {}; + // if the time is set to 0, don't do an animation + if (options.animation.duration == 0) { + if (this.lockedOnNodeId != null) { + this._classicRedraw = this._redraw; + this._redraw = this._lockedRedraw; + } + else { + this._setScale(this.targetScale); + this._setTranslation(this.targetTranslation.x, this.targetTranslation.y); + this._redraw(); } + } + else { + this.animating = true; + this.animationSpeed = 1 / (this.renderRefreshRate * options.animation.duration * 0.001) || 1 / this.renderRefreshRate; + this.animationEasingFunction = options.animation.easingFunction; + this._classicRedraw = this._redraw; + this._redraw = this._transitionRedraw; + this._redraw(); + this.start(); + } }; + /** + * used to animate smoothly by hijacking the redraw function. + * @private + */ + Network.prototype._lockedRedraw = function () { + var nodePosition = {x: this.nodes[this.lockedOnNodeId].x, y: this.nodes[this.lockedOnNodeId].y}; + var viewCenter = this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); + var distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node + x: viewCenter.x - nodePosition.x, + y: viewCenter.y - nodePosition.y + }; + var sourceTranslation = this._getTranslation(); + var targetTranslation = { + x: sourceTranslation.x + distanceFromCenter.x * this.scale + this.lockedOnNodeOffset.x, + y: sourceTranslation.y + distanceFromCenter.y * this.scale + this.lockedOnNodeOffset.y + }; + + this._setTranslation(targetTranslation.x,targetTranslation.y); + this._classicRedraw(); + } + + Network.prototype.releaseNode = function () { + if (this.lockedOnNodeId != null) { + this._redraw = this._classicRedraw; + this.lockedOnNodeId = null; + this.lockedOnNodeOffset = null; + } + } /** - * @module hammer * - * @class Detection - * @static + * @param easingTime + * @private */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], + Network.prototype._transitionRedraw = function (easingTime) { + this.easingTime = easingTime || this.easingTime + this.animationSpeed; + this.easingTime += this.animationSpeed; - // data of the current Hammer.gesture detection session - current: null, + var progress = util.easingFunctions[this.animationEasingFunction](this.easingTime); - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, + this._setScale(this.sourceScale + (this.targetScale - this.sourceScale) * progress); + this._setTranslation( + this.sourceTranslation.x + (this.targetTranslation.x - this.sourceTranslation.x) * progress, + this.sourceTranslation.y + (this.targetTranslation.y - this.sourceTranslation.y) * progress + ); - // when this becomes true, no gestures are fired - stopped: false, + this._classicRedraw(); - /** - * start Hammer.gesture detection - * @method startDetect - * @param {Hammer.Instance} inst - * @param {Object} eventData - */ - startDetect: function startDetect(inst, eventData) { - // already busy with a Hammer.gesture detection on an element - if(this.current) { - return; - } + // cleanup + if (this.easingTime >= 1.0) { + this.animating = false; + this.easingTime = 0; + if (this.lockedOnNodeId != null) { + this._redraw = this._lockedRedraw; + } + else { + this._redraw = this._classicRedraw; + } + this.emit("animationFinished"); + } + }; - this.stopped = false; + Network.prototype._classicRedraw = function () { + // placeholder function to be overloaded by animations; + }; - // holds current session - this.current = { - inst: inst, // reference to HammerInstance we're working for - startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc - lastEvent: false, // last eventData - lastCalcEvent: false, // last eventData for calculations. - futureCalcEvent: false, // last eventData for calculations. - lastCalcData: {}, // last lastCalcData - name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc - }; + /** + * Returns true when the Network is active. + * @returns {boolean} + */ + Network.prototype.isActive = function () { + return !this.activator || this.activator.active; + }; - this.detect(eventData); - }, - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; - } + /** + * Sets the scale + * @returns {Number} + */ + Network.prototype.setScale = function () { + return this._setScale(); + }; - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; + /** + * Returns the scale + * @returns {Number} + */ + Network.prototype.getScale = function () { + return this._getScale(); + }; - // call Hammer.gesture handlers - Utils.each(this.gestures, function triggerGesture(gesture) { - // only when the instance options have enabled this gesture - if(!this.stopped && inst.enabled && instOptions[gesture.name]) { - gesture.handler.call(gesture, eventData, inst); - } - }, this); - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; - } + /** + * Returns the scale + * @returns {Number} + */ + Network.prototype.getCenterCoordinates = function () { + return this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); + }; - if(eventData.eventType == EVENT_END) { - this.stopDetect(); - } - return eventData; - }, + Network.prototype.getBoundingBox = function(nodeId) { + if (this.nodes[nodeId] !== undefined) { + return this.nodes[nodeId].boundingBox; + } + } - /** - * clear the Hammer.gesture vars - * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected - * to stop other Hammer.gestures from being fired - * @method stopDetect - */ - stopDetect: function stopDetect() { - // clone current data to the store as the previous gesture - // used for the double tap gesture, since this is an other gesture detect session - this.previous = Utils.extend({}, this.current); + Network.prototype.getConnectedNodes = function(nodeId) { + var nodeList = []; + if (this.nodes[nodeId] !== undefined) { + var node = this.nodes[nodeId]; + var nodeObj = {nodeId : true}; // used to quickly check if node already exists + for (var i = 0; i < node.edges.length; i++) { + var edge = node.edges[i]; + if (edge.toId == nodeId) { + if (nodeObj[edge.fromId] === undefined) { + nodeList.push(edge.fromId); + nodeObj[edge.fromId] = true; + } + } + else if (edge.fromId == nodeId) { + if (nodeObj[edge.toId] === undefined) { + nodeList.push(edge.toId) + nodeObj[edge.toId] = true; + } + } + } + } + return nodeList; + } - // reset the current - this.current = null; - this.stopped = true; - }, - /** - * calculate velocity, angle and direction - * @method getVelocityData - * @param {Object} ev - * @param {Object} center - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - */ - getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { - var cur = this.current, - recalc = false, - calcEv = cur.lastCalcEvent, - calcData = cur.lastCalcData; + Network.prototype.getEdgesFromNode = function(nodeId) { + var edgesList = []; + if (this.nodes[nodeId] !== undefined) { + var node = this.nodes[nodeId]; + for (var i = 0; i < node.edges.length; i++) { + edgesList.push(node.edges[i].id); + } + } + return edgesList; + } - if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { - center = calcEv.center; - deltaTime = ev.timeStamp - calcEv.timeStamp; - deltaX = ev.center.clientX - calcEv.center.clientX; - deltaY = ev.center.clientY - calcEv.center.clientY; - recalc = true; - } + Network.prototype.generateColorObject = function(color) { + return util.parseColor(color); - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; - } + } - if(!cur.lastCalcEvent || recalc) { - calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); - calcData.angle = Utils.getAngle(center, ev.center); - calcData.direction = Utils.getDirection(center, ev.center); + module.exports = Network; - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; - } - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, +/***/ }, +/* 52 */ +/***/ function(module, exports, __webpack_require__) { - /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev - */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; + /** + * Parse a text source containing data in DOT language into a JSON object. + * The object contains two lists: one with nodes and one with edges. + * + * DOT language reference: http://www.graphviz.org/doc/info/lang.html + * + * @param {String} data Text containing a graph in DOT-notation + * @return {Object} graph An object containing two parameters: + * {Object[]} nodes + * {Object[]} edges + */ + function parseDOT (data) { + dot = data; + return parseGraph(); + } - // update the start touchlist to calculate the scale/rotation - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - startEv.touches = []; - Utils.each(ev.touches, function(touch) { - startEv.touches.push({ - clientX: touch.clientX, - clientY: touch.clientY - }); - }); - } + // token types enumeration + var TOKENTYPE = { + NULL : 0, + DELIMITER : 1, + IDENTIFIER: 2, + UNKNOWN : 3 + }; - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; + // map with all delimiters + var DELIMITERS = { + '{': true, + '}': true, + '[': true, + ']': true, + ';': true, + '=': true, + ',': true, - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); + '->': true, + '--': true + }; - Utils.extend(ev, { - startEvent: startEv, + var dot = ''; // current dot file + var index = 0; // current index in dot file + var c = ''; // current token character in expr + var token = ''; // current token + var tokenType = TOKENTYPE.NULL; // type of the token - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, + /** + * Get the first character from the dot file. + * The character is stored into the char c. If the end of the dot file is + * reached, the function puts an empty string in c. + */ + function first() { + index = 0; + c = dot.charAt(0); + } - distance: Utils.getDistance(startEv.center, ev.center), - angle: Utils.getAngle(startEv.center, ev.center), - direction: Utils.getDirection(startEv.center, ev.center), - scale: Utils.getScale(startEv.touches, ev.touches), - rotation: Utils.getRotation(startEv.touches, ev.touches) - }); + /** + * Get the next character from the dot file. + * The character is stored into the char c. If the end of the dot file is + * reached, the function puts an empty string in c. + */ + function next() { + index++; + c = dot.charAt(index); + } - return ev; - }, + /** + * Preview the next character from the dot file. + * @return {String} cNext + */ + function nextPreview() { + return dot.charAt(index + 1); + } - /** - * register new gesture - * @method register - * @param {Object} gesture object, see `gestures/` for documentation - * @return {Array} gestures - */ - register: function register(gesture) { - // add an enable gesture options if there is no given - var options = gesture.defaults || {}; - if(options[gesture.name] === undefined) { - options[gesture.name] = true; - } + /** + * Test whether given character is alphabetic or numeric + * @param {String} c + * @return {Boolean} isAlphaNumeric + */ + var regexAlphaNumeric = /[a-zA-Z_0-9.:#]/; + function isAlphaNumeric(c) { + return regexAlphaNumeric.test(c); + } - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); + /** + * Merge all properties of object b into object b + * @param {Object} a + * @param {Object} b + * @return {Object} a + */ + function merge (a, b) { + if (!a) { + a = {}; + } - // set its index - gesture.index = gesture.index || 1000; + if (b) { + for (var name in b) { + if (b.hasOwnProperty(name)) { + a[name] = b[name]; + } + } + } + return a; + } - // add Hammer.gesture to the list - this.gestures.push(gesture); + /** + * Set a value in an object, where the provided parameter name can be a + * path with nested parameters. For example: + * + * var obj = {a: 2}; + * setValue(obj, 'b.c', 3); // obj = {a: 2, b: {c: 3}} + * + * @param {Object} obj + * @param {String} path A parameter name or dot-separated parameter path, + * like "color.highlight.border". + * @param {*} value + */ + function setValue(obj, path, value) { + var keys = path.split('.'); + var o = obj; + while (keys.length) { + var key = keys.shift(); + if (keys.length) { + // this isn't the end point + if (!o[key]) { + o[key] = {}; + } + o = o[key]; + } + else { + // this is the end point + o[key] = value; + } + } + } - // sort the list by index - this.gestures.sort(function(a, b) { - if(a.index < b.index) { - return -1; - } - if(a.index > b.index) { - return 1; - } - return 0; - }); + /** + * Add a node to a graph object. If there is already a node with + * the same id, their attributes will be merged. + * @param {Object} graph + * @param {Object} node + */ + function addNode(graph, node) { + var i, len; + var current = null; - return this.gestures; + // find root graph (in case of subgraph) + var graphs = [graph]; // list with all graphs from current graph to root graph + var root = graph; + while (root.parent) { + graphs.push(root.parent); + root = root.parent; + } + + // find existing node (at root level) by its id + if (root.nodes) { + for (i = 0, len = root.nodes.length; i < len; i++) { + if (node.id === root.nodes[i].id) { + current = root.nodes[i]; + break; + } } - }; + } + + if (!current) { + // this is a new node + current = { + id: node.id + }; + if (graph.node) { + // clone default attributes + current.attr = merge(current.attr, graph.node); + } + } + + // add node to this (sub)graph and all its parent graphs + for (i = graphs.length - 1; i >= 0; i--) { + var g = graphs[i]; + + if (!g.nodes) { + g.nodes = []; + } + if (g.nodes.indexOf(current) == -1) { + g.nodes.push(current); + } + } + // merge attributes + if (node.attr) { + current.attr = merge(current.attr, node.attr); + } + } /** - * @module hammer + * Add an edge to a graph object + * @param {Object} graph + * @param {Object} edge */ + function addEdge(graph, edge) { + if (!graph.edges) { + graph.edges = []; + } + graph.edges.push(edge); + if (graph.edge) { + var attr = merge({}, graph.edge); // clone default attributes + edge.attr = merge(attr, edge.attr); // merge attributes + } + } /** - * create new hammer instance - * all methods should return the instance itself, so it is chainable. - * - * @class Instance - * @constructor - * @param {HTMLElement} element - * @param {Object} [options={}] options are merged with `Hammer.defaults` - * @return {Hammer.Instance} + * Create an edge to a graph object + * @param {Object} graph + * @param {String | Number | Object} from + * @param {String | Number | Object} to + * @param {String} type + * @param {Object | null} attr + * @return {Object} edge */ - Hammer.Instance = function(element, options) { - var self = this; + function createEdge(graph, from, to, type, attr) { + var edge = { + from: from, + to: to, + type: type + }; - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); + if (graph.edge) { + edge.attr = merge({}, graph.edge); // clone default attributes + } + edge.attr = merge(edge.attr || {}, attr); // merge attributes - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; + return edge; + } - /** - * @property enabled - * @type {Boolean} - * @protected - */ - this.enabled = true; + /** + * Get next token in the current dot file. + * The token and token type are available as token and tokenType + */ + function getToken() { + tokenType = TOKENTYPE.NULL; + token = ''; - /** - * options, merged with the defaults - * options with an _ are converted to camelCase - * @property options - * @type {Object} - */ - Utils.each(options, function(value, name) { - delete options[name]; - options[Utils.toCamelCase(name)] = value; - }); + // skip over whitespaces + while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { // space, tab, enter + next(); + } - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + do { + var isComment = false; - // add some css to the element to prevent the browser from doing its native behavoir - if(this.options.behavior) { - Utils.toggleBehavior(this.element, this.options.behavior, true); + // skip comment + if (c == '#') { + // find the previous non-space character + var i = index - 1; + while (dot.charAt(i) == ' ' || dot.charAt(i) == '\t') { + i--; + } + if (dot.charAt(i) == '\n' || dot.charAt(i) == '') { + // the # is at the start of a line, this is indeed a line comment + while (c != '' && c != '\n') { + next(); + } + isComment = true; + } } - - /** - * event start handler on the element to start the detection - * @property eventStartHandler - * @type {Object} - */ - this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { - if(self.enabled && ev.eventType == EVENT_START) { - Detection.startDetect(self, ev); - } else if(ev.eventType == EVENT_TOUCH) { - Detection.detect(ev); + if (c == '/' && nextPreview() == '/') { + // skip line comment + while (c != '' && c != '\n') { + next(); + } + isComment = true; + } + if (c == '/' && nextPreview() == '*') { + // skip block comment + while (c != '') { + if (c == '*' && nextPreview() == '/') { + // end of block comment found. skip these last two characters + next(); + next(); + break; } - }); + else { + next(); + } + } + isComment = true; + } - /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} - */ - this.eventHandlers = []; - }; + // skip over whitespaces + while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { // space, tab, enter + next(); + } + } + while (isComment); - Hammer.Instance.prototype = { - /** - * bind events to the instance - * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space - * @param {Function} handler - * @param {Object} handler.ev event object - */ - on: function onEvent(gestures, handler) { - var self = this; - Event.on(self.element, gestures, handler, function(type) { - self.eventHandlers.push({ gesture: type, handler: handler }); - }); - return self; - }, + // check for end of dot file + if (c == '') { + // token is still empty + tokenType = TOKENTYPE.DELIMITER; + return; + } - /** - * unbind events to the instance - * @method off - * @chainable - * @param {String} gestures - * @param {Function} handler - */ - off: function offEvent(gestures, handler) { - var self = this; + // check for delimiters consisting of 2 characters + var c2 = c + nextPreview(); + if (DELIMITERS[c2]) { + tokenType = TOKENTYPE.DELIMITER; + token = c2; + next(); + next(); + return; + } - Event.off(self.element, gestures, handler, function(type) { - var index = Utils.inArray({ gesture: type, handler: handler }); - if(index !== false) { - self.eventHandlers.splice(index, 1); - } - }); - return self; - }, + // check for delimiters consisting of 1 character + if (DELIMITERS[c]) { + tokenType = TOKENTYPE.DELIMITER; + token = c; + next(); + return; + } - /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] - */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; - } + // check for an identifier (number or string) + // TODO: more precise parsing of numbers/strings (and the port separator ':') + if (isAlphaNumeric(c) || c == '-') { + token += c; + next(); + + while (isAlphaNumeric(c)) { + token += c; + next(); + } + if (token == 'false') { + token = false; // convert to boolean + } + else if (token == 'true') { + token = true; // convert to boolean + } + else if (!isNaN(Number(token))) { + token = Number(token); // convert to number + } + tokenType = TOKENTYPE.IDENTIFIER; + return; + } + + // check for a string enclosed by double quotes + if (c == '"') { + next(); + while (c != '' && (c != '"' || (c == '"' && nextPreview() == '"'))) { + token += c; + if (c == '"') { // skip the escape character + next(); + } + next(); + } + if (c != '"') { + throw newSyntaxError('End of string " expected'); + } + next(); + tokenType = TOKENTYPE.IDENTIFIER; + return; + } - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; + // something unknown is found, wrong characters, a syntax error + tokenType = TOKENTYPE.UNKNOWN; + while (c != '') { + token += c; + next(); + } + throw new SyntaxError('Syntax error in part "' + chop(token, 30) + '"'); + } - // trigger on the target if it is in the instance element, - // this is for event delegation tricks - var element = this.element; - if(Utils.hasParent(eventData.target, element)) { - element = eventData.target; - } + /** + * Parse a graph. + * @returns {Object} graph + */ + function parseGraph() { + var graph = {}; - element.dispatchEvent(event); - return this; - }, + first(); + getToken(); - /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state - */ - enable: function enable(state) { - this.enabled = state; - return this; - }, + // optional strict keyword + if (token == 'strict') { + graph.strict = true; + getToken(); + } - /** - * dispose this hammer instance - * @method dispose - * @return {Null} - */ - dispose: function dispose() { - var i, eh; + // graph or digraph keyword + if (token == 'graph' || token == 'digraph') { + graph.type = token; + getToken(); + } - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); + // optional graph id + if (tokenType == TOKENTYPE.IDENTIFIER) { + graph.id = token; + getToken(); + } - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); - } + // open angle bracket + if (token != '{') { + throw newSyntaxError('Angle bracket { expected'); + } + getToken(); - this.eventHandlers = []; + // statements + parseStatements(graph); - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + // close angle bracket + if (token != '}') { + throw newSyntaxError('Angle bracket } expected'); + } + getToken(); - return null; - } - }; + // end of file + if (token !== '') { + throw newSyntaxError('End of file expected'); + } + getToken(); + // remove temporary default properties + delete graph.node; + delete graph.edge; + delete graph.graph; + + return graph; + } /** - * @module gestures - */ - /** - * Move with x fingers (default 1) around on the page. - * Preventing the default browser behavior is a good way to improve feel and working. - * ```` - * hammertime.on("drag", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Drag - * @static - */ - /** - * @event drag - * @param {Object} ev - */ - /** - * @event dragstart - * @param {Object} ev - */ - /** - * @event dragend - * @param {Object} ev - */ - /** - * @event drapleft - * @param {Object} ev - */ - /** - * @event dragright - * @param {Object} ev - */ - /** - * @event dragup - * @param {Object} ev - */ - /** - * @event dragdown - * @param {Object} ev + * Parse a list with statements. + * @param {Object} graph */ + function parseStatements (graph) { + while (token !== '' && token != '}') { + parseStatement(graph); + if (token == ';') { + getToken(); + } + } + } /** - * @param {String} name + * Parse a single statement. Can be a an attribute statement, node + * statement, a series of node statements and edge statements, or a + * parameter. + * @param {Object} graph */ - (function(name) { - var triggered = false; - - function dragGesture(ev, inst) { - var cur = Detection.current; - - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; - } + function parseStatement(graph) { + // parse subgraph + var subgraph = parseSubgraph(graph); + if (subgraph) { + // edge statements + parseEdge(graph, subgraph); - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + return; + } - case EVENT_MOVE: - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.distance < inst.options.dragMinDistance && - cur.name != name) { - return; - } + // parse an attribute statement + var attr = parseAttributeStatement(graph); + if (attr) { + return; + } - var startCenter = cur.startEvent.center; + // parse node + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Identifier expected'); + } + var id = token; // id can be a string or a number + getToken(); - // we are dragging! - if(cur.name != name) { - cur.name = name; - if(inst.options.dragDistanceCorrection && ev.distance > 0) { - // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. - // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. - // It might be useful to save the original start point somewhere - var factor = Math.abs(inst.options.dragMinDistance / ev.distance); - startCenter.pageX += ev.deltaX * factor; - startCenter.pageY += ev.deltaY * factor; - startCenter.clientX += ev.deltaX * factor; - startCenter.clientY += ev.deltaY * factor; + if (token == '=') { + // id statement + getToken(); + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Identifier expected'); + } + graph[id] = token; + getToken(); + // TODO: implement comma separated list with "a_list: ID=ID [','] [a_list] " + } + else { + parseNodeStatement(graph, id); + } + } - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } + /** + * Parse a subgraph + * @param {Object} graph parent graph object + * @return {Object | null} subgraph + */ + function parseSubgraph (graph) { + var subgraph = null; - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } + // optional subgraph keyword + if (token == 'subgraph') { + subgraph = {}; + subgraph.type = 'subgraph'; + getToken(); - // keep direction on the axis that the drag gesture started on - var lastDirection = cur.lastEvent.direction; - if(ev.dragLockToAxis && lastDirection !== ev.direction) { - if(Utils.isVertical(lastDirection)) { - ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; - } else { - ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - } + // optional graph id + if (tokenType == TOKENTYPE.IDENTIFIER) { + subgraph.id = token; + getToken(); + } + } - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + // open angle bracket + if (token == '{') { + getToken(); - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + if (!subgraph) { + subgraph = {}; + } + subgraph.parent = graph; + subgraph.node = graph.node; + subgraph.edge = graph.edge; + subgraph.graph = graph.graph; - var isVertical = Utils.isVertical(ev.direction); + // statements + parseStatements(subgraph); - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + // close angle bracket + if (token != '}') { + throw newSyntaxError('Angle bracket } expected'); + } + getToken(); - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + // remove temporary default properties + delete subgraph.node; + delete subgraph.edge; + delete subgraph.graph; + delete subgraph.parent; - case EVENT_END: - triggered = false; - break; - } + // register at the parent graph + if (!graph.subgraphs) { + graph.subgraphs = []; } + graph.subgraphs.push(subgraph); + } - Hammer.gestures.Drag = { - name: name, - index: 50, - handler: dragGesture, - defaults: { - /** - * minimal movement that have to be made before the drag event gets triggered - * @property dragMinDistance - * @type {Number} - * @default 10 - */ - dragMinDistance: 10, - - /** - * Set dragDistanceCorrection to true to make the starting point of the drag - * be calculated from where the drag was triggered, not from where the touch started. - * Useful to avoid a jerk-starting drag, which can make fine-adjustments - * through dragging difficult, and be visually unappealing. - * @property dragDistanceCorrection - * @type {Boolean} - * @default true - */ - dragDistanceCorrection: true, + return subgraph; + } - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + /** + * parse an attribute statement like "node [shape=circle fontSize=16]". + * Available keywords are 'node', 'edge', 'graph'. + * The previous list with default attributes will be replaced + * @param {Object} graph + * @returns {String | null} keyword Returns the name of the parsed attribute + * (node, edge, graph), or null if nothing + * is parsed. + */ + function parseAttributeStatement (graph) { + // attribute statements + if (token == 'node') { + getToken(); - /** - * prevent default browser behavior when dragging occurs - * be careful with it, it makes the element a blocking element - * when you are using the drag gesture, it is a good practice to set this true - * @property dragBlockHorizontal - * @type {Boolean} - * @default false - */ - dragBlockHorizontal: false, + // node attributes + graph.node = parseAttributeList(); + return 'node'; + } + else if (token == 'edge') { + getToken(); - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, + // edge attributes + graph.edge = parseAttributeList(); + return 'edge'; + } + else if (token == 'graph') { + getToken(); - /** - * dragLockToAxis keeps the drag gesture on the axis that it started on, - * It disallows vertical directions if the initial direction was horizontal, and vice versa. - * @property dragLockToAxis - * @type {Boolean} - * @default false - */ - dragLockToAxis: false, + // graph attributes + graph.graph = parseAttributeList(); + return 'graph'; + } - /** - * drag lock only kicks in when distance > dragLockMinDistance - * This way, locking occurs only when the distance has become large enough to reliably determine the direction - * @property dragLockMinDistance - * @type {Number} - * @default 25 - */ - dragLockMinDistance: 25 - } - }; - })('drag'); + return null; + } /** - * @module gestures + * parse a node statement + * @param {Object} graph + * @param {String | Number} id */ + function parseNodeStatement(graph, id) { + // node statement + var node = { + id: id + }; + var attr = parseAttributeList(); + if (attr) { + node.attr = attr; + } + addNode(graph, node); + + // edge statements + parseEdge(graph, id); + } + /** - * trigger a simple gesture event, so you can do anything in your handler. - * only usable if you know what your doing... - * - * @class Gesture - * @static + * Parse an edge or a series of edges + * @param {Object} graph + * @param {String | Number} from Id of the from node */ + function parseEdge(graph, from) { + while (token == '->' || token == '--') { + var to; + var type = token; + getToken(); + + var subgraph = parseSubgraph(graph); + if (subgraph) { + to = subgraph; + } + else { + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Identifier or subgraph expected'); + } + to = token; + addNode(graph, { + id: to + }); + getToken(); + } + + // parse edge attributes + var attr = parseAttributeList(); + + // create edge + var edge = createEdge(graph, from, to, type, attr); + addEdge(graph, edge); + + from = to; + } + } + /** - * @event gesture - * @param {Object} ev + * Parse a set with attributes, + * for example [label="1.000", shape=solid] + * @return {Object | null} attr */ - Hammer.gestures.Gesture = { - name: 'gesture', - index: 1337, - handler: function releaseGesture(ev, inst) { - inst.trigger(this.name, ev); + function parseAttributeList() { + var attr = null; + + while (token == '[') { + getToken(); + attr = {}; + while (token !== '' && token != ']') { + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Attribute name expected'); + } + var name = token; + + getToken(); + if (token != '=') { + throw newSyntaxError('Equal sign = expected'); + } + getToken(); + + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Attribute value expected'); + } + var value = token; + setValue(attr, name, value); // name can be a path + + getToken(); + if (token ==',') { + getToken(); + } + } + + if (token != ']') { + throw newSyntaxError('Bracket ] expected'); } - }; + getToken(); + } + + return attr; + } /** - * @module gestures + * Create a syntax error with extra information on current token and index. + * @param {String} message + * @returns {SyntaxError} err */ + function newSyntaxError(message) { + return new SyntaxError(message + ', got "' + chop(token, 30) + '" (char ' + index + ')'); + } + /** - * Touch stays at the same place for x time - * - * @class Hold - * @static + * Chop off text after a maximum length + * @param {String} text + * @param {Number} maxLength + * @returns {String} */ + function chop (text, maxLength) { + return (text.length <= maxLength) ? text : (text.substr(0, 27) + '...'); + } + /** - * @event hold - * @param {Object} ev + * Execute a function fn for each pair of elements in two arrays + * @param {Array | *} array1 + * @param {Array | *} array2 + * @param {function} fn */ + function forEach2(array1, array2, fn) { + if (Array.isArray(array1)) { + array1.forEach(function (elem1) { + if (Array.isArray(array2)) { + array2.forEach(function (elem2) { + fn(elem1, elem2); + }); + } + else { + fn(elem1, array2); + } + }); + } + else { + if (Array.isArray(array2)) { + array2.forEach(function (elem2) { + fn(array1, elem2); + }); + } + else { + fn(array1, array2); + } + } + } /** - * @param {String} name + * Convert a string containing a graph in DOT language into a map containing + * with nodes and edges in the format of graph. + * @param {String} data Text containing a graph in DOT-notation + * @return {Object} graphData */ - (function(name) { - var timer; + function DOTToGraph (data) { + // parse the DOT file + var dotData = parseDOT(data); + var graphData = { + nodes: [], + edges: [], + options: {} + }; - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; + // copy the nodes + if (dotData.nodes) { + dotData.nodes.forEach(function (dotNode) { + var graphNode = { + id: dotNode.id, + label: String(dotNode.label || dotNode.id) + }; + merge(graphNode, dotNode.attr); + if (graphNode.image) { + graphNode.shape = 'image'; + } + graphData.nodes.push(graphNode); + }); + } - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + // copy the edges + if (dotData.edges) { + /** + * Convert an edge in DOT format to an edge with VisGraph format + * @param {Object} dotEdge + * @returns {Object} graphEdge + */ + var convertEdge = function (dotEdge) { + var graphEdge = { + from: dotEdge.from, + to: dotEdge.to + }; + merge(graphEdge, dotEdge.attr); + graphEdge.style = (dotEdge.type == '->') ? 'arrow' : 'line'; + return graphEdge; + } - // set the gesture so we can check in the timeout if it still is - current.name = name; + dotData.edges.forEach(function (dotEdge) { + var from, to; + if (dotEdge.from instanceof Object) { + from = dotEdge.from.nodes; + } + else { + from = { + id: dotEdge.from + } + } - // set timer and if after the timeout it still is hold, - // we trigger the hold event - timer = setTimeout(function() { - if(current && current.name == name) { - inst.trigger(name, ev); - } - }, options.holdTimeout); - break; + if (dotEdge.to instanceof Object) { + to = dotEdge.to.nodes; + } + else { + to = { + id: dotEdge.to + } + } - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); - } - break; + if (dotEdge.from instanceof Object && dotEdge.from.edges) { + dotEdge.from.edges.forEach(function (subEdge) { + var graphEdge = convertEdge(subEdge); + graphData.edges.push(graphEdge); + }); + } - case EVENT_RELEASE: - clearTimeout(timer); - break; - } - } + forEach2(from, to, function (from, to) { + var subEdge = createEdge(graphData, from.id, to.id, dotEdge.type, dotEdge.attr); + var graphEdge = convertEdge(subEdge); + graphData.edges.push(graphEdge); + }); - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { - /** - * @property holdTimeout - * @type {Number} - * @default 500 - */ - holdTimeout: 500, + if (dotEdge.to instanceof Object && dotEdge.to.edges) { + dotEdge.to.edges.forEach(function (subEdge) { + var graphEdge = convertEdge(subEdge); + graphData.edges.push(graphEdge); + }); + } + }); + } - /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 - */ - holdThreshold: 2 - }, - handler: holdGesture - }; - })('hold'); + // copy the options + if (dotData.attr) { + graphData.options = dotData.attr; + } - /** - * @module gestures - */ - /** - * when a touch is being released from the page - * - * @class Release - * @static - */ - /** - * @event release - * @param {Object} ev - */ - Hammer.gestures.Release = { - name: 'release', - index: Infinity, - handler: function releaseGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - inst.trigger(this.name, ev); - } - } - }; + return graphData; + } - /** - * @module gestures - */ - /** - * triggers swipe events when the end velocity is above the threshold - * for best usage, set `preventDefault` (on the drag gesture) to `true` - * ```` - * hammertime.on("dragleft swipeleft", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Swipe - * @static - */ - /** - * @event swipe - * @param {Object} ev - */ - /** - * @event swipeleft - * @param {Object} ev - */ - /** - * @event swiperight - * @param {Object} ev - */ - /** - * @event swipeup - * @param {Object} ev - */ - /** - * @event swipedown - * @param {Object} ev - */ - Hammer.gestures.Swipe = { - name: 'swipe', - index: 40, - defaults: { - /** - * @property swipeMinTouches - * @type {Number} - * @default 1 - */ - swipeMinTouches: 1, + // exports + exports.parseDOT = parseDOT; + exports.DOTToGraph = DOTToGraph; - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, +/***/ }, +/* 53 */ +/***/ function(module, exports, __webpack_require__) { - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 + + function parseGephi(gephiJSON, options) { + var edges = []; + var nodes = []; + this.options = { + edges: { + inheritColor: true }, + nodes: { + allowedToMove: false, + parseColor: false + } + }; - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; + if (options !== undefined) { + this.options.nodes['allowedToMove'] = options.allowedToMove | false; + this.options.nodes['parseColor'] = options.parseColor | false; + this.options.edges['inheritColor'] = options.inheritColor | true; + } - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; - } + var gEdges = gephiJSON.edges; + var gNodes = gephiJSON.nodes; + for (var i = 0; i < gEdges.length; i++) { + var edge = {}; + var gEdge = gEdges[i]; + edge['id'] = gEdge.id; + edge['from'] = gEdge.source; + edge['to'] = gEdge.target; + edge['attributes'] = gEdge.attributes; + // edge['value'] = gEdge.attributes !== undefined ? gEdge.attributes.Weight : undefined; + // edge['width'] = edge['value'] !== undefined ? undefined : edgegEdge.size; + edge['color'] = gEdge.color; + edge['inheritColor'] = edge['color'] !== undefined ? false : this.options.inheritColor; + edges.push(edge); + } - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.velocityX > options.swipeVelocityX || - ev.velocityY > options.swipeVelocityY) { - // trigger swipe events - inst.trigger(this.name, ev); - inst.trigger(this.name + ev.direction, ev); - } - } + for (var i = 0; i < gNodes.length; i++) { + var node = {}; + var gNode = gNodes[i]; + node['id'] = gNode.id; + node['attributes'] = gNode.attributes; + node['x'] = gNode.x; + node['y'] = gNode.y; + node['label'] = gNode.label; + if (this.options.nodes.parseColor == true) { + node['color'] = gNode.color; } - }; + else { + node['color'] = gNode.color !== undefined ? {background:gNode.color, border:gNode.color} : undefined; + } + node['radius'] = gNode.size; + node['allowedToMoveX'] = this.options.nodes.allowedToMove; + node['allowedToMoveY'] = this.options.nodes.allowedToMove; + nodes.push(node); + } + + return {nodes:nodes, edges:edges}; + } + + exports.parseGephi = parseGephi; + +/***/ }, +/* 54 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); /** - * @module gestures - */ - /** - * Single tap and a double tap on a place - * - * @class Tap - * @static - */ - /** - * @event tap - * @param {Object} ev - */ - /** - * @event doubletap - * @param {Object} ev + * @class Groups + * This class can store groups and properties specific for groups. */ + function Groups() { + this.clear(); + this.defaultIndex = 0; + this.groupsArray = []; + this.groupIndex = 0; + this.useDefaultGroups = true; + } + /** - * @param {String} name + * default constants for group colors */ - (function(name) { - var hasMoved = false; + Groups.DEFAULT = [ + {border: "#2B7CE9", background: "#97C2FC", highlight: {border: "#2B7CE9", background: "#D2E5FF"}, hover: {border: "#2B7CE9", background: "#D2E5FF"}}, // 0: blue + {border: "#FFA500", background: "#FFFF00", highlight: {border: "#FFA500", background: "#FFFFA3"}, hover: {border: "#FFA500", background: "#FFFFA3"}}, // 1: yellow + {border: "#FA0A10", background: "#FB7E81", highlight: {border: "#FA0A10", background: "#FFAFB1"}, hover: {border: "#FA0A10", background: "#FFAFB1"}}, // 2: red + {border: "#41A906", background: "#7BE141", highlight: {border: "#41A906", background: "#A1EC76"}, hover: {border: "#41A906", background: "#A1EC76"}}, // 3: green + {border: "#E129F0", background: "#EB7DF4", highlight: {border: "#E129F0", background: "#F0B3F5"}, hover: {border: "#E129F0", background: "#F0B3F5"}}, // 4: magenta + {border: "#7C29F0", background: "#AD85E4", highlight: {border: "#7C29F0", background: "#D3BDF0"}, hover: {border: "#7C29F0", background: "#D3BDF0"}}, // 5: purple + {border: "#C37F00", background: "#FFA807", highlight: {border: "#C37F00", background: "#FFCA66"}, hover: {border: "#C37F00", background: "#FFCA66"}}, // 6: orange + {border: "#4220FB", background: "#6E6EFD", highlight: {border: "#4220FB", background: "#9B9BFD"}, hover: {border: "#4220FB", background: "#9B9BFD"}}, // 7: darkblue + {border: "#FD5A77", background: "#FFC0CB", highlight: {border: "#FD5A77", background: "#FFD1D9"}, hover: {border: "#FD5A77", background: "#FFD1D9"}}, // 8: pink + {border: "#4AD63A", background: "#C2FABC", highlight: {border: "#4AD63A", background: "#E6FFE3"}, hover: {border: "#4AD63A", background: "#E6FFE3"}}, // 9: mint - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; + {border: "#990000", background: "#EE0000", highlight: {border: "#BB0000", background: "#FF3333"}, hover: {border: "#BB0000", background: "#FF3333"}}, // 10:bright red - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; + {border: "#FF6000", background: "#FF6000", highlight: {border: "#FF6000", background: "#FF6000"}, hover: {border: "#FF6000", background: "#FF6000"}}, // 12: real orange + {border: "#97C2FC", background: "#2B7CE9", highlight: {border: "#D2E5FF", background: "#2B7CE9"}, hover: {border: "#D2E5FF", background: "#2B7CE9"}}, // 13: blue + {border: "#399605", background: "#255C03", highlight: {border: "#399605", background: "#255C03"}, hover: {border: "#399605", background: "#255C03"}}, // 14: green + {border: "#B70054", background: "#FF007E", highlight: {border: "#B70054", background: "#FF007E"}, hover: {border: "#B70054", background: "#FF007E"}}, // 15: magenta + {border: "#AD85E4", background: "#7C29F0", highlight: {border: "#D3BDF0", background: "#7C29F0"}, hover: {border: "#D3BDF0", background: "#7C29F0"}}, // 16: purple + {border: "#4557FA", background: "#000EA1", highlight: {border: "#6E6EFD", background: "#000EA1"}, hover: {border: "#6E6EFD", background: "#000EA1"}}, // 17: darkblue + {border: "#FFC0CB", background: "#FD5A77", highlight: {border: "#FFD1D9", background: "#FD5A77"}, hover: {border: "#FFD1D9", background: "#FD5A77"}}, // 18: pink + {border: "#C2FABC", background: "#74D66A", highlight: {border: "#E6FFE3", background: "#74D66A"}, hover: {border: "#E6FFE3", background: "#74D66A"}}, // 19: mint - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; + {border: "#EE0000", background: "#990000", highlight: {border: "#FF3333", background: "#BB0000"}, hover: {border: "#FF3333", background: "#BB0000"}}, // 20:bright red + ]; - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } + /** + * Clear all groups + */ + Groups.prototype.clear = function () { + this.groups = {}; + this.groups.length = function() + { + var i = 0; + for ( var p in this ) { + if (this.hasOwnProperty(p)) { + i++; + } + } + return i; + } + }; - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; - } + + /** + * get group properties of a groupname. If groupname is not found, a new group + * is added. + * @param {*} groupname Can be a number, string, Date, etc. + * @return {Object} group The created group, containing all group properties + */ + Groups.prototype.get = function (groupname) { + var group = this.groups[groupname]; + if (group == undefined) { + if (this.useDefaultGroups === false && this.groupsArray.length > 0) { + // create new group + var index = this.groupIndex % this.groupsArray.length; + this.groupIndex++; + group = {}; + group.color = this.groups[this.groupsArray[index]]; + this.groups[groupname] = group; + } + else { + // create new group + var index = this.defaultIndex % Groups.DEFAULT.length; + this.defaultIndex++; + group = {}; + group.color = Groups.DEFAULT[index]; + this.groups[groupname] = group; } + } - Hammer.gestures.Tap = { - name: name, - index: 100, - handler: tapGesture, - defaults: { - /** - * max time of a tap, this is for the slow tappers - * @property tapMaxTime - * @type {Number} - * @default 250 - */ - tapMaxTime: 250, + return group; + }; - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, + /** + * Add a custom group style + * @param {String} groupName + * @param {Object} style An object containing borderColor, + * backgroundColor, etc. + * @return {Object} group The created group object + */ + Groups.prototype.add = function (groupName, style) { + this.groups[groupName] = style; + this.groupsArray.push(groupName); + return style; + }; - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, + module.exports = Groups; - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 - } - }; - })('tap'); +/***/ }, +/* 55 */ +/***/ function(module, exports, __webpack_require__) { /** - * @module gestures + * @class Images + * This class loads images and keeps them stored. */ + function Images() { + this.images = {}; + this.imageBroken = {}; + this.callback = undefined; + } + /** - * when a touch is being touched at the page - * - * @class Touch - * @static + * Set an onload callback function. This will be called each time an image + * is loaded + * @param {function} callback */ + Images.prototype.setOnloadCallback = function(callback) { + this.callback = callback; + }; + /** - * @event touch - * @param {Object} ev + * + * @param {string} url Url of the image + * @param {string} url Url of an image to use if the url image is not found + * @return {Image} img The image object */ - Hammer.gestures.Touch = { - name: 'touch', - index: -Infinity, - defaults: { - /** - * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, - * but it improves gestures like transforming and dragging. - * be careful with using this, it can be very annoying for users to be stuck on the page - * @property preventDefault - * @type {Boolean} - * @default false - */ - preventDefault: false, + Images.prototype.load = function(url, brokenUrl) { + var img = this.images[url]; // make a pointer + if (img === undefined) { + // create the image + var me = this; + img = new Image(); + img.onload = function () { + // IE11 fix -- thanks dponch! + if (this.width == 0) { + document.body.appendChild(this); + this.width = this.offsetWidth; + this.height = this.offsetHeight; + document.body.removeChild(this); + } - /** - * disable mouse events, so only touch (or pen!) input triggers events - * @property preventMouse - * @type {Boolean} - * @default false - */ - preventMouse: false - }, - handler: function touchGesture(ev, inst) { - if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { - ev.stopDetect(); - return; - } + if (me.callback) { + me.images[url] = img; + me.callback(this); + } + }; - if(inst.options.preventDefault) { - ev.preventDefault(); + img.onerror = function () { + if (brokenUrl === undefined) { + console.error("Could not load image:", url); + delete this.src; + if (me.callback) { + me.callback(this); } - - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); + } + else { + if (me.imageBroken[url] === true) { + if (this.src == brokenUrl) { + console.error("Could not load brokenImage:", brokenUrl); + delete this.src; + if (me.callback) { + me.callback(this); + } + } + else { + console.error("Could not load image:", url); + this.src = brokenUrl; + } } - } + else { + console.error("Could not load image:", url); + this.src = brokenUrl; + me.imageBroken[url] = true; + } + } + }; + + img.src = url; + } + + return img; }; + module.exports = Images; + + +/***/ }, +/* 56 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + /** - * @module gestures - */ - /** - * User want to scale or rotate with 2 fingers - * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the - * `preventDefault` option. + * @class Node + * A node. A node can be connected to other nodes via one or multiple edges. + * @param {object} properties An object containing properties for the node. All + * properties are optional, except for the id. + * {number} id Id of the node. Required + * {string} label Text label for the node + * {number} x Horizontal position of the node + * {number} y Vertical position of the node + * {string} shape Node shape, available: + * "database", "circle", "ellipse", + * "box", "image", "text", "dot", + * "star", "triangle", "triangleDown", + * "square", "icon" + * {string} image An image url + * {string} title An title text, can be HTML + * {anytype} group A group name or number + * @param {Network.Images} imagelist A list with images. Only needed + * when the node has an image + * @param {Network.Groups} grouplist A list with groups. Needed for + * retrieving group properties + * @param {Object} constants An object with default values for + * example for the color * - * @class Transform - * @static - */ - /** - * @event transform - * @param {Object} ev - */ - /** - * @event transformstart - * @param {Object} ev - */ - /** - * @event transformend - * @param {Object} ev - */ - /** - * @event pinchin - * @param {Object} ev - */ - /** - * @event pinchout - * @param {Object} ev - */ - /** - * @event rotate - * @param {Object} ev */ + function Node(properties, imagelist, grouplist, networkConstants) { + var constants = util.selectiveBridgeObject(['nodes'],networkConstants); + this.options = constants.nodes; - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + this.selected = false; + this.hover = false; - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + this.edges = []; // all edges connected to this node + this.dynamicEdges = []; + this.reroutedEdges = {}; - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } + // set defaults for the properties + this.id = undefined; + this.allowedToMoveX = false; + this.allowedToMoveY = false; + this.xFixed = false; + this.yFixed = false; + this.horizontalAlignLeft = true; // these are for the navigation controls + this.verticalAlignTop = true; // these are for the navigation controls + this.baseRadiusValue = networkConstants.nodes.radius; + this.radiusFixed = false; + this.level = -1; + this.preassignedLevel = false; + this.hierarchyEnumerated = false; + this.labelDimensions = {top:0, left:0, width:0, height:0, yLine:0}; // could be cached + this.boundingBox = {top:0, left:0, right:0, bottom:0}; - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); + this.imagelist = imagelist; + this.grouplist = grouplist; - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(scaleThreshold < inst.options.transformMinScale && - rotationThreshold < inst.options.transformMinRotation) { - return; - } + // physics properties + this.fx = 0.0; // external force x + this.fy = 0.0; // external force y + this.vx = 0.0; // velocity x + this.vy = 0.0; // velocity y + this.x = null; + this.y = null; + this.predefinedPosition = false; // used to check if initial zoomExtent should just take the range or approximate - // we are transforming! - Detection.current.name = name; + // used for reverting to previous position on stabilization + this.previousState = {vx:0,vy:0,x:0,y:0}; - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + this.damping = networkConstants.physics.damping; // written every time gravity is calculated + this.fixedData = {x:null,y:null}; - inst.trigger(name, ev); // basic transform event + this.setProperties(properties, constants); - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } + // creating the variables for clustering + this.resetCluster(); + this.clusterSession = 0; + this.clusterSizeWidthFactor = networkConstants.clustering.nodeScaling.width; + this.clusterSizeHeightFactor = networkConstants.clustering.nodeScaling.height; + this.clusterSizeRadiusFactor = networkConstants.clustering.nodeScaling.radius; + this.maxNodeSizeIncrements = networkConstants.clustering.maxNodeSizeIncrements; + this.growthIndicator = 0; - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + // variables to tell the node about the network. + this.networkScaleInv = 1; + this.networkScale = 1; + this.canvasTopLeft = {"x": -300, "y": -300}; + this.canvasBottomRight = {"x": 300, "y": 300}; + this.parentEdgeId = null; + } - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; - } - } - Hammer.gestures.Transform = { - name: name, - index: 45, - defaults: { - /** - * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 - * @property transformMinScale - * @type {Number} - * @default 0.01 - */ - transformMinScale: 0.01, + /** + * Revert the position and velocity of the previous step. + */ + Node.prototype.revertPosition = function() { + this.x = this.previousState.x; + this.y = this.previousState.y; + this.vx = this.previousState.vx; + this.vy = this.previousState.vy; + } - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 - }, - handler: transformGesture - }; - })('transform'); + /** + * (re)setting the clustering variables and objects + */ + Node.prototype.resetCluster = function() { + // clustering variables + this.formationScale = undefined; // this is used to determine when to open the cluster + this.clusterSize = 1; // this signifies the total amount of nodes in this cluster + this.containedNodes = {}; + this.containedEdges = {}; + this.clusterSessions = []; + }; /** - * @module hammer + * Attach a edge to the node + * @param {Edge} edge */ + Node.prototype.attachEdge = function(edge) { + if (this.edges.indexOf(edge) == -1) { + this.edges.push(edge); + } + if (this.dynamicEdges.indexOf(edge) == -1) { + this.dynamicEdges.push(edge); + } + }; - // AMD export - if(true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - // commonjs export - } else if(typeof module !== 'undefined' && module.exports) { - module.exports = Hammer; - // browser export - } else { - window.Hammer = Hammer; - } + /** + * Detach a edge from the node + * @param {Edge} edge + */ + Node.prototype.detachEdge = function(edge) { + var index = this.edges.indexOf(edge); + if (index != -1) { + this.edges.splice(index, 1); + } + index = this.dynamicEdges.indexOf(edge); + if (index != -1) { + this.dynamicEdges.splice(index, 1); + } + }; - })(window); -/***/ }, -/* 59 */ -/***/ function(module, exports, __webpack_require__) { + /** + * Set or overwrite properties for the node + * @param {Object} properties an object with properties + * @param {Object} constants and object with default, global properties + */ + Node.prototype.setProperties = function(properties, constants) { + if (!properties) { + return; + } - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.9.0 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com + var fields = ['borderWidth','borderWidthSelected','shape','image','brokenImage','radius','fontColor', + 'fontSize','fontFace','fontFill','fontStrokeWidth','fontStrokeColor','group','mass','fontDrawThreshold', + 'scaleFontWithValue','fontSizeMaxVisible','customScalingFunction','iconFontFace', 'icon', 'iconColor', 'iconSize' + ]; + util.selectiveDeepExtend(fields, this.options, properties); - (function (undefined) { - /************************************ - Constants - ************************************/ + // basic properties + if (properties.id !== undefined) {this.id = properties.id;} + if (properties.label !== undefined) {this.label = properties.label; this.originalLabel = properties.label;} + if (properties.title !== undefined) {this.title = properties.title;} + if (properties.x !== undefined) {this.x = properties.x; this.predefinedPosition = true;} + if (properties.y !== undefined) {this.y = properties.y; this.predefinedPosition = true;} + if (properties.value !== undefined) {this.value = properties.value;} + if (properties.level !== undefined) {this.level = properties.level; this.preassignedLevel = true;} - var moment, - VERSION = '2.9.0', - // the global-scope this is NOT the global object in Node.js - globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, - oldGlobalMoment, - round = Math.round, - hasOwnProperty = Object.prototype.hasOwnProperty, - i, + // navigation controls properties + if (properties.horizontalAlignLeft !== undefined) {this.horizontalAlignLeft = properties.horizontalAlignLeft;} + if (properties.verticalAlignTop !== undefined) {this.verticalAlignTop = properties.verticalAlignTop;} + if (properties.triggerFunction !== undefined) {this.triggerFunction = properties.triggerFunction;} - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, + if (this.id === undefined) { + throw "Node must have an id"; + } - // internal storage for locale config files - locales = {}, + // copy group properties + if (typeof properties.group === 'number' || (typeof properties.group === 'string' && properties.group != '')) { + var groupObj = this.grouplist.get(properties.group); + util.deepExtend(this.options, groupObj); + // the color object needs to be completely defined. Since groups can partially overwrite the colors, we parse it again, just in case. + this.options.color = util.parseColor(this.options.color); + } + // individual shape properties + if (properties.radius !== undefined) {this.baseRadiusValue = this.options.radius;} + if (properties.color !== undefined) {this.options.color = util.parseColor(properties.color);} - // extra moment internal properties (plugins register props here) - momentProperties = [], + if (this.options.image !== undefined && this.options.image!= "") { + if (this.imagelist) { + this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage); + } + else { + throw "No imagelist provided"; + } + } - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module && module.exports), + if (properties.allowedToMoveX !== undefined) { + this.xFixed = !properties.allowedToMoveX; + this.allowedToMoveX = properties.allowedToMoveX; + } + else if (properties.x !== undefined && this.allowedToMoveX == false) { + this.xFixed = true; + } - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + if (properties.allowedToMoveY !== undefined) { + this.yFixed = !properties.allowedToMoveY; + this.allowedToMoveY = properties.allowedToMoveY; + } + else if (properties.y !== undefined && this.allowedToMoveY == false) { + this.yFixed = true; + } + + this.radiusFixed = this.radiusFixed || (properties.radius !== undefined); + + if (this.options.shape === 'image' || this.options.shape === 'circularImage') { + this.options.radiusMin = constants.nodes.widthMin; + this.options.radiusMax = constants.nodes.widthMax; + } + + // choose draw method depending on the shape + switch (this.options.shape) { + case 'database': this.draw = this._drawDatabase; this.resize = this._resizeDatabase; break; + case 'box': this.draw = this._drawBox; this.resize = this._resizeBox; break; + case 'circle': this.draw = this._drawCircle; this.resize = this._resizeCircle; break; + case 'ellipse': this.draw = this._drawEllipse; this.resize = this._resizeEllipse; break; + // TODO: add diamond shape + case 'image': this.draw = this._drawImage; this.resize = this._resizeImage; break; + case 'circularImage': this.draw = this._drawCircularImage; this.resize = this._resizeCircularImage; break; + case 'text': this.draw = this._drawText; this.resize = this._resizeText; break; + case 'dot': this.draw = this._drawDot; this.resize = this._resizeShape; break; + case 'square': this.draw = this._drawSquare; this.resize = this._resizeShape; break; + case 'triangle': this.draw = this._drawTriangle; this.resize = this._resizeShape; break; + case 'triangleDown': this.draw = this._drawTriangleDown; this.resize = this._resizeShape; break; + case 'star': this.draw = this._drawStar; this.resize = this._resizeShape; break; + case 'icon': this.draw = this._drawIcon; this.resize = this._resizeIcon; break; + default: this.draw = this._drawEllipse; this.resize = this._resizeEllipse; break; + } + // reset the size of the node, this can be changed + this._reset(); + + }; - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, + /** + * select this node + */ + Node.prototype.select = function() { + this.selected = true; + this._reset(); + }; - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + /** + * unselect this node + */ + Node.prototype.unselect = function() { + this.selected = false; + this._reset(); + }; - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + /** + * Reset the calculated size of the node, forces it to recalculate its size + */ + Node.prototype.clearSizeCache = function() { + this._reset(); + }; - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + /** + * Reset the calculated size of the node, forces it to recalculate its size + * @private + */ + Node.prototype._reset = function() { + this.width = undefined; + this.height = undefined; + }; - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], + /** + * get the title of this node. + * @return {string} title The title of the node, or undefined when no title + * has been set. + */ + Node.prototype.getTitle = function() { + return typeof this.title === "function" ? this.title() : this.title; + }; - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], + /** + * Calculate the distance to the border of the Node + * @param {CanvasRenderingContext2D} ctx + * @param {Number} angle Angle in radians + * @returns {number} distance Distance to the border in pixels + */ + Node.prototype.distanceToBorder = function (ctx, angle) { + var borderWidth = 1; - // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, + if (!this.width) { + this.resize(ctx); + } - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, + switch (this.options.shape) { + case 'circle': + case 'dot': + return this.options.radius+ borderWidth; - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, + case 'ellipse': + var a = this.width / 2; + var b = this.height / 2; + var w = (Math.sin(angle) * a); + var h = (Math.cos(angle) * b); + return a * b / Math.sqrt(w * w + h * h); - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, + // TODO: implement distanceToBorder for database + // TODO: implement distanceToBorder for triangle + // TODO: implement distanceToBorder for triangleDown - // format function strings - formatFunctions = {}, + case 'box': + case 'image': + case 'text': + default: + if (this.width) { + return Math.min( + Math.abs(this.width / 2 / Math.cos(angle)), + Math.abs(this.height / 2 / Math.sin(angle))) + borderWidth; + // TODO: reckon with border radius too in case of box + } + else { + return 0; + } - // default relative time thresholds - relativeTimeThresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }, + } + // TODO: implement calculation of distance to border for all shapes + }; - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), + /** + * Set forces acting on the node + * @param {number} fx Force in horizontal direction + * @param {number} fy Force in vertical direction + */ + Node.prototype._setForce = function(fx, fy) { + this.fx = fx; + this.fy = fy; + }; - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.localeData().monthsShort(this, format); - }, - MMMM : function (format) { - return this.localeData().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.localeData().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.localeData().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.localeData().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - x : function () { - return this.valueOf(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); - } - }, + /** + * Add forces acting on the node + * @param {number} fx Force in horizontal direction + * @param {number} fy Force in vertical direction + * @private + */ + Node.prototype._addForce = function(fx, fy) { + this.fx += fx; + this.fy += fy; + }; - deprecations = {}, + /** + * Store the state before the next step + */ + Node.prototype.storeState = function() { + this.previousState.x = this.x; + this.previousState.y = this.y; + this.previousState.vx = this.vx; + this.previousState.vy = this.vy; + } - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], + /** + * Perform one discrete step for the node + * @param {number} interval Time interval in seconds + */ + Node.prototype.discreteStep = function(interval) { + this.storeState(); + if (!this.xFixed) { + var dx = this.damping * this.vx; // damping force + var ax = (this.fx - dx) / this.options.mass; // acceleration + this.vx += ax * interval; // velocity + this.x += this.vx * interval; // position + } + else { + this.fx = 0; + this.vx = 0; + } - updateInProgress = false; + if (!this.yFixed) { + var dy = this.damping * this.vy; // damping force + var ay = (this.fy - dy) / this.options.mass; // acceleration + this.vy += ay * interval; // velocity + this.y += this.vy * interval; // position + } + else { + this.fy = 0; + this.vy = 0; + } + }; - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error('Implement me'); - } - } - function hasOwnProp(a, b) { - return hasOwnProperty.call(a, b); - } - function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; - } + /** + * Perform one discrete step for the node + * @param {number} interval Time interval in seconds + * @param {number} maxVelocity The speed limit imposed on the velocity + */ + Node.prototype.discreteStepLimited = function(interval, maxVelocity) { + this.storeState(); + if (!this.xFixed) { + var dx = this.damping * this.vx; // damping force + var ax = (this.fx - dx) / this.options.mass; // acceleration + this.vx += ax * interval; // velocity + this.vx = (Math.abs(this.vx) > maxVelocity) ? ((this.vx > 0) ? maxVelocity : -maxVelocity) : this.vx; + this.x += this.vx * interval; // position + } + else { + this.fx = 0; + this.vx = 0; + } - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } + if (!this.yFixed) { + var dy = this.damping * this.vy; // damping force + var ay = (this.fy - dy) / this.options.mass; // acceleration + this.vy += ay * interval; // velocity + this.vy = (Math.abs(this.vy) > maxVelocity) ? ((this.vy > 0) ? maxVelocity : -maxVelocity) : this.vy; + this.y += this.vy * interval; // position + } + else { + this.fy = 0; + this.vy = 0; + } + }; - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } + /** + * Check if this node has a fixed x and y position + * @return {boolean} true if fixed, false if not + */ + Node.prototype.isFixed = function() { + return (this.xFixed && this.yFixed); + }; - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; - } - } + /** + * Check if this node is moving + * @param {number} vmin the minimum velocity considered as "moving" + * @return {boolean} true if moving, false if it has no velocity + */ + Node.prototype.isMoving = function(vmin) { + var velocity = Math.sqrt(Math.pow(this.vx,2) + Math.pow(this.vy,2)); + // this.velocity = Math.sqrt(Math.pow(this.vx,2) + Math.pow(this.vy,2)) + return (velocity > vmin); + }; - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.localeData().ordinal(func.call(this, a), period); - }; - } + /** + * check if this node is selecte + * @return {boolean} selected True if node is selected, else false + */ + Node.prototype.isSelected = function() { + return this.selected; + }; - function monthDiff(a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; + /** + * Retrieve the value of the node. Can be undefined + * @return {Number} value + */ + Node.prototype.getValue = function() { + return this.value; + }; - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } + /** + * Calculate the distance from the nodes location to the given location (x,y) + * @param {Number} x + * @param {Number} y + * @return {Number} value + */ + Node.prototype.getDistance = function(x, y) { + var dx = this.x - x, + dy = this.y - y; + return Math.sqrt(dx * dx + dy * dy); + }; - return -(wholeMonthDiff + adjust); - } - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); - } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + /** + * Adjust the value range of the node. The node will adjust it's radius + * based on its value. + * @param {Number} min + * @param {Number} max + */ + Node.prototype.setValueRange = function(min, max, total) { + if (!this.radiusFixed && this.value !== undefined) { + var scale = this.options.customScalingFunction(min, max, total, this.value); + var radiusDiff = this.options.radiusMax - this.options.radiusMin; + if (this.options.scaleFontWithValue == true) { + var fontDiff = this.options.fontSizeMax - this.options.fontSizeMin; + this.options.fontSize = this.options.fontSizeMin + scale * fontDiff; } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + this.options.radius = this.options.radiusMin + scale * radiusDiff; + } + this.baseRadiusValue = this.options.radius; + }; - function meridiemFixWrap(locale, hour, meridiem) { - var isPm; + /** + * Draw this node in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + */ + Node.prototype.draw = function(ctx) { + throw "Draw method not initialized for node"; + }; - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // thie is not supposed to happen - return hour; - } - } + /** + * Recalculate the size of this node in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + */ + Node.prototype.resize = function(ctx) { + throw "Resize method not initialized for node"; + }; - /************************************ - Constructors - ************************************/ + /** + * Check if this object is overlapping with the provided object + * @param {Object} obj an object with parameters left, top, right, bottom + * @return {boolean} True if location is located on node + */ + Node.prototype.isOverlappingWith = function(obj) { + return (this.left < obj.right && + this.left + this.width > obj.left && + this.top < obj.bottom && + this.top + this.height > obj.top); + }; - function Locale() { - } + Node.prototype._resizeImage = function (ctx) { + // TODO: pre calculate the image size - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - moment.updateOffset(this); - updateInProgress = false; - } + if (!this.width || !this.height) { // undefined or 0 + var width, height; + if (this.value) { + this.options.radius= this.baseRadiusValue; + var scale = this.imageObj.height / this.imageObj.width; + if (scale !== undefined) { + width = this.options.radius|| this.imageObj.width; + height = this.options.radius* scale || this.imageObj.height; + } + else { + width = 0; + height = 0; + } + } + else { + width = this.imageObj.width; + height = this.imageObj.height; } + this.width = width; + this.height = height; - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; + this.growthIndicator = 0; + if (this.width > 0 && this.height > 0) { + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - width; + } + } + }; - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; + Node.prototype._drawImageAtPosition = function (ctx) { + if (this.imageObj.width != 0 ) { + // draw the shade + if (this.clusterSize > 1) { + var lineWidth = ((this.clusterSize > 1) ? 10 : 0.0); + lineWidth *= this.networkScaleInv; + lineWidth = Math.min(0.2 * this.width,lineWidth); - this._data = {}; + ctx.globalAlpha = 0.5; + ctx.drawImage(this.imageObj, this.left - lineWidth, this.top - lineWidth, this.width + 2*lineWidth, this.height + 2*lineWidth); + } - this._locale = moment.localeData(); + // draw the image + ctx.globalAlpha = 1.0; + ctx.drawImage(this.imageObj, this.left, this.top, this.width, this.height); + } + }; - this._bubble(); + Node.prototype._drawImageLabel = function (ctx) { + var yLabel; + var offset = 0; + + if (this.height){ + offset = this.height / 2; + var labelDimensions = this.getTextSize(ctx); + + if (labelDimensions.lineCount >= 1){ + offset += labelDimensions.height / 2; + offset += 3; } + } + + yLabel = this.y + offset; - /************************************ - Helpers - ************************************/ + this._label(ctx, this.label, this.x, yLabel, undefined); + }; + Node.prototype._drawImage = function (ctx) { + this._resizeImage(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } + this._drawImageAtPosition(ctx); - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } + this._drawImageLabel(ctx); + this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); + }; - return a; - } + Node.prototype._resizeCircularImage = function (ctx) { + if(!this.imageObj.src || !this.imageObj.width || !this.imageObj.height){ + if (!this.width) { + var diameter = this.options.radius * 2; + this.width = diameter; + this.height = diameter; - function copyConfig(to, from) { - var i, prop, val; + // scaling used for clustering + //this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; + //this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; + this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; + this.growthIndicator = this.options.radius- 0.5*diameter; + this._swapToImageResizeWhenImageLoaded = true; + } + } + else { + if (this._swapToImageResizeWhenImageLoaded) { + this.width = 0; + this.height = 0; + delete this._swapToImageResizeWhenImageLoaded; + } + this._resizeImage(ctx); + } - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = from._pf; - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; - } + }; - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } + Node.prototype._drawCircularImage = function (ctx) { + this._resizeCircularImage(ctx); - return to; - } + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; + + var centerX = this.left + (this.width / 2); + var centerY = this.top + (this.height / 2); + var radius = Math.abs(this.height / 2); - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } - } + this._drawRawCircle(ctx, centerX, centerY, radius); - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; + ctx.save(); + ctx.circle(this.x, this.y, radius); + ctx.stroke(); + ctx.clip(); - while (output.length < targetLength) { - output = '0' + output; - } - return (sign ? (forceSign ? '+' : '') : '-') + output; - } + this._drawImageAtPosition(ctx); - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; + ctx.restore(); - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } + this.boundingBox.top = this.y - this.options.radius; + this.boundingBox.left = this.x - this.options.radius; + this.boundingBox.right = this.x + this.options.radius; + this.boundingBox.bottom = this.y + this.options.radius; - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + this._drawImageLabel(ctx); + + this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); + }; - return res; - } + Node.prototype._resizeBox = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + this.width = textSize.width + 2 * margin; + this.height = textSize.height + 2 * margin; - function momentsDifference(base, other) { - var res; - other = makeAs(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; + this.growthIndicator = this.width - (textSize.width + 2 * margin); + // this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; - return res; - } + } + }; - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; - } + Node.prototype._drawBox = function (ctx) { + this._resizeBox(ctx); - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; - } + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); - } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - moment.updateOffset(mom, days || months); - } - } + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } + ctx.roundRect(this.left-2*ctx.lineWidth, this.top-2*ctx.lineWidth, this.width+4*ctx.lineWidth, this.height+4*ctx.lineWidth, this.options.radius); + ctx.stroke(); + } + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; - } + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; - } - return units; - } + ctx.roundRect(this.left, this.top, this.width, this.height, this.options.radius); + ctx.fill(); + ctx.stroke(); - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } + this._label(ctx, this.label, this.x, this.y); + }; - return normalizedInput; - } - function makeList(field) { - var count, setter; + Node.prototype._resizeDatabase = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + var size = textSize.width + 2 * margin; + this.width = size; + this.height = size; - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { - return; - } + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - size; + } + }; - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; + Node.prototype._drawDatabase = function (ctx) { + this._resizeDatabase(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - if (typeof format === 'number') { - index = format; - format = undefined; - } + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } - }; - } + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; + ctx.database(this.x - this.width/2 - 2*ctx.lineWidth, this.y - this.height*0.5 - 2*ctx.lineWidth, this.width + 4*ctx.lineWidth, this.height + 4*ctx.lineWidth); + ctx.stroke(); + } + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } - } + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; + ctx.database(this.x - this.width/2, this.y - this.height*0.5, this.width, this.height); + ctx.fill(); + ctx.stroke(); - return value; - } + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } + this._label(ctx, this.label, this.x, this.y); + }; - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } + Node.prototype._resizeCircle = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + var diameter = Math.max(textSize.width, textSize.height) + 2 * margin; + this.options.radius = diameter / 2; - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } + this.width = diameter; + this.height = diameter; - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 24 || - (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || - m._a[SECOND] !== 0 || - m._a[MILLISECOND] !== 0)) ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; + // scaling used for clustering + // this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; + // this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; + this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; + this.growthIndicator = this.options.radius- 0.5*diameter; + } + }; - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } + Node.prototype._drawRawCircle = function (ctx, x, y, radius) { + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - m._pf.overflow = overflow; - } - } + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; + ctx.circle(x, y, radius+2*ctx.lineWidth); + ctx.stroke(); + } + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0 && - m._pf.bigHour === undefined; - } - } - return m._isValid; - } + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; + ctx.circle(this.x, this.y, radius); + ctx.fill(); + ctx.stroke(); + }; - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } + Node.prototype._drawCircle = function (ctx) { + this._resizeCircle(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; + this._drawRawCircle(ctx, this.x, this.y, this.options.radius); - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; - } + this.boundingBox.top = this.y - this.options.radius; + this.boundingBox.left = this.x - this.options.radius; + this.boundingBox.right = this.x + this.options.radius; + this.boundingBox.bottom = this.y + this.options.radius; - function loadLocale(name) { - var oldLocale = null; - if (!locales[name] && hasModule) { - try { - oldLocale = moment.locale(); - !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); - // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales - moment.locale(oldLocale); - } catch (e) { } - } - return locales[name]; - } + this._label(ctx, this.label, this.x, this.y); + }; - // Return a moment from input, that is local/utc/utcOffset equivalent to - // model. - function makeAs(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (moment.isMoment(input) || isDate(input) ? - +input : +moment(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - moment.updateOffset(res, false); - return res; - } else { - return moment(input).local(); - } + Node.prototype._resizeEllipse = function (ctx) { + if (!this.width) { + var textSize = this.getTextSize(ctx); + + this.width = textSize.width * 1.5; + this.height = textSize.height * 2; + if (this.width < this.height) { + this.width = this.height; } + var defaultSize = this.width; - /************************************ - Locale - ************************************/ + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - defaultSize; + } + }; + Node.prototype._drawEllipse = function (ctx) { + this._resizeEllipse(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - extend(Locale.prototype, { + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); - }, + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, + ctx.ellipse(this.left-2*ctx.lineWidth, this.top-2*ctx.lineWidth, this.width+4*ctx.lineWidth, this.height+4*ctx.lineWidth); + ctx.stroke(); + } + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - monthsParse : function (monthName, format, strict) { - var i, mom, regex; + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } + ctx.ellipse(this.left, this.top, this.width, this.height); + ctx.fill(); + ctx.stroke(); - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = moment.utc([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - }, + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, + this._label(ctx, this.label, this.x, this.y); + }; - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, + Node.prototype._drawDot = function (ctx) { + this._drawShape(ctx, 'circle'); + }; - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, + Node.prototype._drawTriangle = function (ctx) { + this._drawShape(ctx, 'triangle'); + }; - weekdaysParse : function (weekdayName) { - var i, mom, regex; + Node.prototype._drawTriangleDown = function (ctx) { + this._drawShape(ctx, 'triangleDown'); + }; - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } + Node.prototype._drawSquare = function (ctx) { + this._drawShape(ctx, 'square'); + }; - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - }, + Node.prototype._drawStar = function (ctx) { + this._drawShape(ctx, 'star'); + }; - _longDateFormat : { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; - } - return output; - }, + Node.prototype._resizeShape = function (ctx) { + if (!this.width) { + this.options.radius= this.baseRadiusValue; + var size = 2 * this.options.radius; + this.width = size; + this.height = size; - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - }, + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - size; + } + }; - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - }, + Node.prototype._drawShape = function (ctx, shape) { + this._resizeShape(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom, [now]) : output; - }, + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + var radiusMultiplier = 2; - _relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, + // choose draw method depending on the shape + switch (shape) { + case 'dot': radiusMultiplier = 2; break; + case 'square': radiusMultiplier = 2; break; + case 'triangle': radiusMultiplier = 3; break; + case 'triangleDown': radiusMultiplier = 3; break; + case 'star': radiusMultiplier = 4; break; + } - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, + ctx[shape](this.x, this.y, this.options.radius+ radiusMultiplier * ctx.lineWidth); + ctx.stroke(); + } + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', - _ordinalParse : /\d{1,2}/, + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; + ctx[shape](this.x, this.y, this.options.radius); + ctx.fill(); + ctx.stroke(); - preparse : function (string) { - return string; - }, + this.boundingBox.top = this.y - this.options.radius; + this.boundingBox.left = this.x - this.options.radius; + this.boundingBox.right = this.x + this.options.radius; + this.boundingBox.bottom = this.y + this.options.radius; - postformat : function (string) { - return string; - }, + if (this.label) { + this._label(ctx, this.label, this.x, this.y + this.height / 2, undefined, 'hanging',true); + this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); + } + }; - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, + Node.prototype._resizeText = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + this.width = textSize.width + 2 * margin; + this.height = textSize.height + 2 * margin; - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }, + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - (textSize.width + 2 * margin); + } + }; - firstDayOfWeek : function () { - return this._week.dow; - }, + Node.prototype._drawText = function (ctx) { + this._resizeText(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - firstDayOfYear : function () { - return this._week.doy; - }, + this._label(ctx, this.label, this.x, this.y); - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; - } - }); + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; + }; - /************************************ - Formatting - ************************************/ + Node.prototype._resizeIcon = function (ctx) { + if (!this.width) { + var margin = 5; + var iconSize = + { + width: Number(this.options.iconSize), + height: Number(this.options.iconSize) + }; + this.width = iconSize.width + 2 * margin; + this.height = iconSize.height + 2 * margin; + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - (iconSize.width + 2 * margin); + } + }; - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); - } + Node.prototype._drawIcon = function (ctx) { + this._resizeIcon(ctx); - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + this.options.iconSize = this.options.iconSize || 50; - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; + this._icon(ctx); - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; - }; - } - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } + this.boundingBox.top = this.y - this.options.iconSize/2; + this.boundingBox.left = this.x - this.options.iconSize/2; + this.boundingBox.right = this.x + this.options.iconSize/2; + this.boundingBox.bottom = this.y + this.options.iconSize/2; - format = expandFormat(format, m.localeData()); + if (this.label) { + var iconTextSpacing = 5; + this._label(ctx, this.label, this.x, this.y + this.height / 2 + iconTextSpacing, 'top', true); - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); - } + this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); + } + }; - return formatFunctions[format](m); - } + Node.prototype._icon = function (ctx) { + var relativeIconSize = Number(this.options.iconSize) * this.networkScale; + + if (this.options.icon && relativeIconSize > this.options.fontDrawThreshold - 1) { - function expandFormat(format, locale) { - var i = 5; + var iconSize = Number(this.options.iconSize); - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } + ctx.font = (this.selected ? "bold " : "") + iconSize + "px " + this.options.iconFontFace; - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } + // draw icon + ctx.fillStyle = this.options.iconColor || "black"; + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + ctx.fillText(this.options.icon, this.x, this.y); + } + }; + + Node.prototype._label = function (ctx, text, x, y, align, baseline, labelUnderNode) { + var relativeFontSize = Number(this.options.fontSize) * this.networkScale; + if (text && relativeFontSize >= this.options.fontDrawThreshold - 1) { + var fontSize = Number(this.options.fontSize); - return format; + // this ensures that there will not be HUGE letters on screen by setting an upper limit on the visible text size (regardless of zoomLevel) + if (relativeFontSize >= this.options.fontSizeMaxVisible) { + fontSize = Number(this.options.fontSizeMaxVisible) * this.networkScaleInv; } + // fade in when relative scale is between threshold and threshold - 1 + var fontColor = this.options.fontColor || "#000000"; + var strokecolor = this.options.fontStrokeColor; + if (relativeFontSize <= this.options.fontDrawThreshold) { + var opacity = Math.max(0,Math.min(1,1 - (this.options.fontDrawThreshold - relativeFontSize))); + fontColor = util.overrideOpacity(fontColor, opacity); + strokecolor = util.overrideOpacity(strokecolor, opacity); - /************************************ - Parsing - ************************************/ + } + ctx.font = (this.selected ? "bold " : "") + fontSize + "px " + this.options.fontFace; - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { - return parseTokenOneDigit; - } - /* falls through */ - case 'SS': - if (strict) { - return parseTokenTwoDigits; - } - /* falls through */ - case 'SSS': - if (strict) { - return parseTokenThreeDigits; - } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return config._locale._meridiemParse; - case 'x': - return parseTokenOffsetMs; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); - return a; - } + var lines = text.split('\n'); + var lineCount = lines.length; + var yLine = y + (1 - lineCount) / 2 * fontSize; + if (labelUnderNode == true) { + yLine = y + (1 - lineCount) / (2 * fontSize); } - function utcOffsetFromString(string) { - string = string || ''; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); + // font fill from edges now for nodes! + var width = ctx.measureText(lines[0]).width; + for (var i = 1; i < lineCount; i++) { + var lineWidth = ctx.measureText(lines[i]).width; + width = lineWidth > width ? lineWidth : width; + } + var height = fontSize * lineCount; + var left = x - width / 2; + var top = y - height / 2; + if (baseline == "hanging") { + top += 0.5 * fontSize; + top += 4; // distance from node, required because we use hanging. Hanging has less difference between browsers + yLine += 4; // distance from node + } + this.labelDimensions = {top:top,left:left,width:width,height:height,yLine:yLine}; - return parts[0] === '+' ? minutes : -minutes; + // create the fontfill background + if (this.options.fontFill !== undefined && this.options.fontFill !== null && this.options.fontFill !== "none") { + ctx.fillStyle = this.options.fontFill; + ctx.fillRect(left, top, width, height); } - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + // draw text + ctx.fillStyle = fontColor; + ctx.textAlign = align || "center"; + ctx.textBaseline = baseline || "middle"; + if (this.options.fontStrokeWidth > 0){ + ctx.lineWidth = this.options.fontStrokeWidth; + ctx.strokeStyle = strokecolor; + ctx.lineJoin = 'round'; + } + for (var i = 0; i < lineCount; i++) { + if(this.options.fontStrokeWidth){ + ctx.strokeText(lines[i], x, yLine); + } + ctx.fillText(lines[i], x, yLine); + yLine += fontSize; + } + } + }; - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; - } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt( - input.match(/\d{1,2}/)[0], 10)); - } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); - } - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._meridiem = input; - // config._isPm = config._locale.isPM(input); - break; - // HOUR - case 'h' : // fall through to hh - case 'hh' : - config._pf.bigHour = true; - /* falls through */ - case 'H' : // fall through to HH - case 'HH' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX OFFSET (MILLISECONDS) - case 'x': - config._d = new Date(toInt(input)); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = utcOffsetFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; - } else { - config._pf.invalidWeekday = input; - } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); - } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); - } + Node.prototype.getTextSize = function(ctx) { + if (this.label !== undefined) { + var fontSize = Number(this.options.fontSize); + if (fontSize * this.networkScale > this.options.fontSizeMaxVisible) { + fontSize = Number(this.options.fontSizeMaxVisible) * this.networkScaleInv; } + ctx.font = (this.selected ? "bold " : "") + fontSize + "px " + this.options.fontFace; - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; + var lines = this.label.split('\n'), + height = (fontSize + 4) * lines.length, + width = 0; - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + for (var i = 0, iMax = lines.length; i < iMax; i++) { + width = Math.max(width, ctx.measureText(lines[i]).width); + } - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; + return {"width": width, "height": height, lineCount: lines.length}; + } + else { + return {"width": 0, "height": 0, lineCount: 0}; + } + }; - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + /** + * this is used to determine if a node is visible at all. this is used to determine when it needs to be drawn. + * there is a safety margin of 0.3 * width; + * + * @returns {boolean} + */ + Node.prototype.inArea = function() { + if (this.width !== undefined) { + return (this.x + this.width *this.networkScaleInv >= this.canvasTopLeft.x && + this.x - this.width *this.networkScaleInv < this.canvasBottomRight.x && + this.y + this.height*this.networkScaleInv >= this.canvasTopLeft.y && + this.y - this.height*this.networkScaleInv < this.canvasBottomRight.y); + } + else { + return true; + } + }; - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + /** + * checks if the core of the node is in the display area, this is used for opening clusters around zoom + * @returns {boolean} + */ + Node.prototype.inView = function() { + return (this.x >= this.canvasTopLeft.x && + this.x < this.canvasBottomRight.x && + this.y >= this.canvasTopLeft.y && + this.y < this.canvasBottomRight.y); + }; - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } + /** + * This allows the zoom level of the network to influence the rendering + * We store the inverted scale and the coordinates of the top left, and bottom right points of the canvas + * + * @param scale + * @param canvasTopLeft + * @param canvasBottomRight + */ + Node.prototype.setScaleAndPos = function(scale,canvasTopLeft,canvasBottomRight) { + this.networkScaleInv = 1.0/scale; + this.networkScale = scale; + this.canvasTopLeft = canvasTopLeft; + this.canvasBottomRight = canvasBottomRight; + }; - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; - if (config._d) { - return; - } + /** + * This allows the zoom level of the network to influence the rendering + * + * @param scale + */ + Node.prototype.setScale = function(scale) { + this.networkScaleInv = 1.0/scale; + this.networkScale = scale; + }; + - currentDate = currentDateArray(config); - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } + /** + * set the velocity at 0. Is called when this node is contained in another during clustering + */ + Node.prototype.clearVelocity = function() { + this.vx = 0; + this.vy = 0; + }; - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; - } + /** + * Basic preservation of (kinectic) energy + * + * @param massBeforeClustering + */ + Node.prototype.updateVelocity = function(massBeforeClustering) { + var energyBefore = this.vx * this.vx * massBeforeClustering; + //this.vx = (this.vx < 0) ? -Math.sqrt(energyBefore/this.options.mass) : Math.sqrt(energyBefore/this.options.mass); + this.vx = Math.sqrt(energyBefore/this.options.mass); + energyBefore = this.vy * this.vy * massBeforeClustering; + //this.vy = (this.vy < 0) ? -Math.sqrt(energyBefore/this.options.mass) : Math.sqrt(energyBefore/this.options.mass); + this.vy = Math.sqrt(energyBefore/this.options.mass); + }; - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + module.exports = Node; - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } +/***/ }, +/* 57 */ +/***/ function(module, exports, __webpack_require__) { - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } + var util = __webpack_require__(1); + var Node = __webpack_require__(56); - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } + /** + * @class Edge + * + * A edge connects two nodes + * @param {Object} properties Object with properties. Must contain + * At least properties from and to. + * Available properties: from (number), + * to (number), label (string, color (string), + * width (number), style (string), + * length (number), title (string) + * @param {Network} network A Network object, used to find and edge to + * nodes. + * @param {Object} constants An object with default values for + * example for the color + */ + function Edge (properties, network, networkConstants) { + if (!network) { + throw "No network provided"; + } + var fields = ['edges','physics']; + var constants = util.selectiveBridgeObject(fields,networkConstants); + this.options = constants.edges; + this.physics = constants.physics; + this.options['smoothCurves'] = networkConstants['smoothCurves']; - if (config._nextDay) { - config._a[HOUR] = 24; - } - } - function dateFromObject(config) { - var normalizedInput; + this.network = network; - if (config._d) { - return; - } + // initialize variables + this.id = undefined; + this.fromId = undefined; + this.toId = undefined; + this.title = undefined; + this.widthSelected = this.options.width * this.options.widthSelectionMultiplier; + this.value = undefined; + this.selected = false; + this.hover = false; + this.labelDimensions = {top:0,left:0,width:0,height:0,yLine:0}; // could be cached + this.dirtyLabel = true; + this.colorDirty = true; - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day || normalizedInput.date, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; + this.from = null; // a node + this.to = null; // a node + this.via = null; // a temp node - dateFromConfig(config); - } + this.fromBackup = null; // used to clean up after reconnect + this.toBackup = null;; // used to clean up after reconnect - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; - } - } + // we use this to be able to reconnect the edge to a cluster if its node is put into a cluster + // by storing the original information we can revert to the original connection when the cluser is opened. + this.originalFromId = []; + this.originalToId = []; - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; - } + this.connected = false; - config._a = []; - config._pf.empty = true; + this.widthFixed = false; + this.lengthFixed = false; - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; + this.setProperties(properties); - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + this.controlNodesEnabled = false; + this.controlNodes = {from:null, to:null, positions:{}}; + this.connectedNode = null; + } - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - config._pf.empty = false; - } - else { - config._pf.unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); - } - } + /** + * Set or overwrite properties for the edge + * @param {Object} properties an object with properties + * @param {Object} constants and object with default, global properties + */ + Edge.prototype.setProperties = function(properties) { + this.colorDirty = true; + if (!properties) { + return; + } - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); - } + var fields = ['style','fontSize','fontFace','fontColor','fontFill','fontStrokeWidth','fontStrokeColor','width', + 'widthSelectionMultiplier','hoverWidth','arrowScaleFactor','dash','inheritColor','labelAlignment', 'opacity', + 'customScalingFunction','useGradients' + ]; + util.selectiveDeepExtend(fields, this.options, properties); - // clear _12h flag if hour is <= 12 - if (config._pf.bigHour === true && config._a[HOUR] <= 12) { - config._pf.bigHour = undefined; - } - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], - config._meridiem); - dateFromConfig(config); - checkOverflow(config); - } + if (properties.from !== undefined) {this.fromId = properties.from;} + if (properties.to !== undefined) {this.toId = properties.to;} - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); - } + if (properties.id !== undefined) {this.id = properties.id;} + if (properties.label !== undefined) {this.label = properties.label; this.dirtyLabel = true;} - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + if (properties.title !== undefined) {this.title = properties.title;} + if (properties.value !== undefined) {this.value = properties.value;} + if (properties.length !== undefined) {this.physics.springLength = properties.length;} + + if (properties.color !== undefined) { + this.options.inheritColor = false; + if (util.isString(properties.color)) { + this.options.color.color = properties.color; + this.options.color.highlight = properties.color; + } + else { + if (properties.color.color !== undefined) {this.options.color.color = properties.color.color;} + if (properties.color.highlight !== undefined) {this.options.color.highlight = properties.color.highlight;} + if (properties.color.hover !== undefined) {this.options.color.hover = properties.color.hover;} } + } - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, - scoreToBeat, - i, - currentScore; - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; - } + // A node is connected when it has a from and to node. + this.connect(); - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); + this.widthFixed = this.widthFixed || (properties.width !== undefined); + this.lengthFixed = this.lengthFixed || (properties.length !== undefined); - if (!isValid(tempConfig)) { - continue; - } + this.widthSelected = this.options.width* this.options.widthSelectionMultiplier; - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + // set draw method based on style + switch (this.options.style) { + case 'line': this.draw = this._drawLine; break; + case 'arrow': this.draw = this._drawArrow; break; + case 'arrow-center': this.draw = this._drawArrowCenter; break; + case 'dash-line': this.draw = this._drawDashLine; break; + default: this.draw = this._drawLine; break; + } + }; - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; - tempConfig._pf.score = currentScore; + /** + * Connect an edge to its nodes + */ + Edge.prototype.connect = function () { + this.disconnect(); - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } + this.from = this.network.nodes[this.fromId] || null; + this.to = this.network.nodes[this.toId] || null; + this.connected = (this.from && this.to); - extend(config, bestMoment || tempConfig); + if (this.connected) { + this.from.attachEdge(this); + this.to.attachEdge(this); + } + else { + if (this.from) { + this.from.detachEdge(this); } - - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); - - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be 'T' or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; - } - } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; - } + if (this.to) { + this.to.detachEdge(this); } + } + }; - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); - } - } + /** + * Disconnect an edge from its nodes + */ + Edge.prototype.disconnect = function () { + if (this.from) { + this.from.detachEdge(this); + this.from = null; + } + if (this.to) { + this.to.detachEdge(this); + this.to = null; + } - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } + this.connected = false; + }; - function makeDateFromInput(config) { - var input = config._i, matched; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - dateFromConfig(config); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - moment.createFromInputFallback(config); - } - } + /** + * get the title of this edge. + * @return {string} title The title of the edge, or undefined when no title + * has been set. + */ + Edge.prototype.getTitle = function() { + return typeof this.title === "function" ? this.title() : this.title; + }; - function makeDate(y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; - } + /** + * Retrieve the value of the edge. Can be undefined + * @return {Number} value + */ + Edge.prototype.getValue = function() { + return this.value; + }; - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; - } + /** + * Adjust the value range of the edge. The edge will adjust it's width + * based on its value. + * @param {Number} min + * @param {Number} max + */ + Edge.prototype.setValueRange = function(min, max, total) { + if (!this.widthFixed && this.value !== undefined) { + var scale = this.options.customScalingFunction(min, max, total, this.value); + var widthDiff = this.options.widthMax - this.options.widthMin; + this.options.width = this.options.widthMin + scale * widthDiff; + this.widthSelected = this.options.width* this.options.widthSelectionMultiplier; + } + }; - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } - } - } - return input; - } + /** + * Redraw a edge + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + */ + Edge.prototype.draw = function(ctx) { + throw "Method draw not initialized in edge"; + }; - /************************************ - Relative Time - ************************************/ + /** + * Check if this object is overlapping with the provided object + * @param {Object} obj an object with parameters left, top + * @return {boolean} True if location is located on the edge + */ + Edge.prototype.isOverlappingWith = function(obj) { + if (this.connected) { + var distMax = 10; + var xFrom = this.from.x; + var yFrom = this.from.y; + var xTo = this.to.x; + var yTo = this.to.y; + var xObj = obj.left; + var yObj = obj.top; + var dist = this._getDistanceToEdge(xFrom, yFrom, xTo, yTo, xObj, yObj); - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } + return (dist < distMax); + } + else { + return false + } + }; - function relativeTime(posNegDuration, withoutSuffix, locale) { - var duration = moment.duration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - years = round(duration.as('y')), + Edge.prototype._getColor = function(ctx) { + var colorObj = this.options.color; + if (this.options.useGradients == true) { + var grd = ctx.createLinearGradient(this.from.x, this.from.y, this.to.x, this.to.y); + var fromColor, toColor; + fromColor = this.from.options.color.highlight.border; + toColor = this.to.options.color.highlight.border; - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < relativeTimeThresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < relativeTimeThresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); + if (this.from.selected == false && this.to.selected == false) { + fromColor = util.overrideOpacity(this.from.options.color.border, this.options.opacity); + toColor = util.overrideOpacity(this.to.options.color.border, this.options.opacity); + } + else if (this.from.selected == true && this.to.selected == false) { + toColor = this.to.options.color.border; + } + else if (this.from.selected == false && this.to.selected == true) { + fromColor = this.from.options.color.border; } + grd.addColorStop(0, fromColor); + grd.addColorStop(1, toColor); + return grd; + } + if (this.colorDirty === true) { + if (this.options.inheritColor == "to") { + colorObj = { + highlight: this.to.options.color.highlight.border, + hover: this.to.options.color.hover.border, + color: util.overrideOpacity(this.from.options.color.border, this.options.opacity) + }; + } + else if (this.options.inheritColor == "from" || this.options.inheritColor == true) { + colorObj = { + highlight: this.from.options.color.highlight.border, + hover: this.from.options.color.hover.border, + color: util.overrideOpacity(this.from.options.color.border, this.options.opacity) + }; + } + this.options.color = colorObj; + this.colorDirty = false; + } - /************************************ - Week of Year - ************************************/ - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; + if (this.selected == true) {return colorObj.highlight;} + else if (this.hover == true) {return colorObj.hover;} + else {return colorObj.color;} + }; - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } + /** + * Redraw a edge as a line + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + * @private + */ + Edge.prototype._drawLine = function(ctx) { + // set style + ctx.strokeStyle = this._getColor(ctx); + ctx.lineWidth = this._getLineWidth(); - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } + if (this.from != this.to) { + // draw line + var via = this._line(ctx); - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; + // draw label + var point; + if (this.label) { + if (this.options.smoothCurves.enabled == true && via != null) { + var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); + var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); + point = {x:midpointX, y:midpointY}; + } + else { + point = this._pointOnLine(0.5); + } + this._label(ctx, this.label, point.x, point.y); } + } + else { + var x, y; + var radius = this.physics.springLength / 4; + var node = this.from; + if (!node.width) { + node.resize(ctx); + } + if (node.width > node.height) { + x = node.x + node.width / 2; + y = node.y - radius; + } + else { + x = node.x + radius; + y = node.y - node.height / 2; + } + this._circle(ctx, x, y, radius); + point = this._pointOnCircle(x, y, radius, 0.5); + this._label(ctx, this.label, point.x, point.y); + } + }; - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + /** + * Get the line width of the edge. Depends on width and whether one of the + * connected nodes is selected. + * @return {Number} width + * @private + */ + Edge.prototype._getLineWidth = function() { + if (this.selected == true) { + return Math.max(Math.min(this.widthSelected, this.options.widthMax), 0.3*this.networkScaleInv); + } + else { + if (this.hover == true) { + return Math.max(Math.min(this.options.hoverWidth, this.options.widthMax), 0.3*this.networkScaleInv); + } + else { + return Math.max(this.options.width, 0.3*this.networkScaleInv); + } + } + }; - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; + Edge.prototype._getViaCoordinates = function () { + if (this.options.smoothCurves.dynamic == true && this.options.smoothCurves.enabled == true ) { + return this.via; + } + else if (this.options.smoothCurves.enabled == false) { + return {x:0,y:0}; + } + else { + var xVia = null; + var yVia = null; + var factor = this.options.smoothCurves.roundness; + var type = this.options.smoothCurves.type; + var dx = Math.abs(this.from.x - this.to.x); + var dy = Math.abs(this.from.y - this.to.y); + if (type == 'discrete' || type == 'diagonalCross') { + if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { + if (this.from.y > this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dy; + yVia = this.from.y - factor * dy; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dy; + yVia = this.from.y - factor * dy; + } + } + else if (this.from.y < this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dy; + yVia = this.from.y + factor * dy; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dy; + yVia = this.from.y + factor * dy; + } + } + if (type == "discrete") { + xVia = dx < factor * dy ? this.from.x : xVia; + } + } + else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { + if (this.from.y > this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dx; + yVia = this.from.y - factor * dx; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dx; + yVia = this.from.y - factor * dx; + } + } + else if (this.from.y < this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dx; + yVia = this.from.y + factor * dx; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dx; + yVia = this.from.y + factor * dx; + } + } + if (type == "discrete") { + yVia = dy < factor * dx ? this.from.y : yVia; + } + } + } + else if (type == "straightCross") { + if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { // up - down + xVia = this.from.x; + if (this.from.y < this.to.y) { + yVia = this.to.y - (1 - factor) * dy; + } + else { + yVia = this.to.y + (1 - factor) * dy; + } + } + else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { // left - right + if (this.from.x < this.to.x) { + xVia = this.to.x - (1 - factor) * dx; + } + else { + xVia = this.to.x + (1 - factor) * dx; + } + yVia = this.from.y; + } + } + else if (type == 'horizontal') { + if (this.from.x < this.to.x) { + xVia = this.to.x - (1 - factor) * dx; + } + else { + xVia = this.to.x + (1 - factor) * dx; + } + yVia = this.from.y; + } + else if (type == 'vertical') { + xVia = this.from.x; + if (this.from.y < this.to.y) { + yVia = this.to.y - (1 - factor) * dy; + } + else { + yVia = this.to.y + (1 - factor) * dy; + } } + else if (type == 'curvedCW') { + var dx = this.to.x - this.from.x; + var dy = this.from.y - this.to.y; + var radius = Math.sqrt(dx*dx + dy*dy); + var pi = Math.PI; - /************************************ - Top Level Functions - ************************************/ + var originalAngle = Math.atan2(dy,dx); + var myAngle = (originalAngle + ((factor * 0.5) + 0.5) * pi) % (2 * pi); - function makeMoment(config) { - var input = config._i, - format = config._f, - res; + xVia = this.from.x + (factor*0.5 + 0.5)*radius*Math.sin(myAngle); + yVia = this.from.y + (factor*0.5 + 0.5)*radius*Math.cos(myAngle); + } + else if (type == 'curvedCCW') { + var dx = this.to.x - this.from.x; + var dy = this.from.y - this.to.y; + var radius = Math.sqrt(dx*dx + dy*dy); + var pi = Math.PI; - config._locale = config._locale || moment.localeData(config._l); + var originalAngle = Math.atan2(dy,dx); + var myAngle = (originalAngle + ((-factor * 0.5) + 0.5) * pi) % (2 * pi); - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); + xVia = this.from.x + (factor*0.5 + 0.5)*radius*Math.sin(myAngle); + yVia = this.from.y + (factor*0.5 + 0.5)*radius*Math.cos(myAngle); + } + else { // continuous + if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { + if (this.from.y > this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dy; + yVia = this.from.y - factor * dy; + xVia = this.to.x < xVia ? this.to.x : xVia; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dy; + yVia = this.from.y - factor * dy; + xVia = this.to.x > xVia ? this.to.x : xVia; + } } - - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); + else if (this.from.y < this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dy; + yVia = this.from.y + factor * dy; + xVia = this.to.x < xVia ? this.to.x : xVia; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dy; + yVia = this.from.y + factor * dy; + xVia = this.to.x > xVia ? this.to.x : xVia; + } } - - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); - } - } else { - makeDateFromInput(config); + } + else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { + if (this.from.y > this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dx; + yVia = this.from.y - factor * dx; + yVia = this.to.y > yVia ? this.to.y : yVia; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dx; + yVia = this.from.y - factor * dx; + yVia = this.to.y > yVia ? this.to.y : yVia; + } } - - res = new Moment(config); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; + else if (this.from.y < this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dx; + yVia = this.from.y + factor * dx; + yVia = this.to.y < yVia ? this.to.y : yVia; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dx; + yVia = this.from.y + factor * dx; + yVia = this.to.y < yVia ? this.to.y : yVia; + } } - - return res; + } } - moment = function (input, format, locale, strict) { - var c; - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = locale; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); + return {x: xVia, y: yVia}; + } + }; - return makeMoment(c); - }; + /** + * Draw a line between two nodes + * @param {CanvasRenderingContext2D} ctx + * @private + */ + Edge.prototype._line = function (ctx) { + // draw a straight line + ctx.beginPath(); + ctx.moveTo(this.from.x, this.from.y); + if (this.options.smoothCurves.enabled == true) { + if (this.options.smoothCurves.dynamic == false) { + var via = this._getViaCoordinates(); + if (via.x == null) { + ctx.lineTo(this.to.x, this.to.y); + ctx.stroke(); + return null; + } + else { + // this.via.x = via.x; + // this.via.y = via.y; + ctx.quadraticCurveTo(via.x,via.y,this.to.x, this.to.y); + ctx.stroke(); + //ctx.circle(via.x,via.y,2) + //ctx.stroke(); + return via; + } + } + else { + ctx.quadraticCurveTo(this.via.x,this.via.y,this.to.x, this.to.y); + ctx.stroke(); + return this.via; + } + } + else { + ctx.lineTo(this.to.x, this.to.y); + ctx.stroke(); + return null; + } + }; - moment.suppressDeprecationWarnings = false; + /** + * Draw a line from a node to itself, a circle + * @param {CanvasRenderingContext2D} ctx + * @param {Number} x + * @param {Number} y + * @param {Number} radius + * @private + */ + Edge.prototype._circle = function (ctx, x, y, radius) { + // draw a circle + ctx.beginPath(); + ctx.arc(x, y, radius, 0, 2 * Math.PI, false); + ctx.stroke(); + }; - moment.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); + /** + * Draw label with white background and with the middle at (x, y) + * @param {CanvasRenderingContext2D} ctx + * @param {String} text + * @param {Number} x + * @param {Number} y + * @private + */ + Edge.prototype._label = function (ctx, text, x, y) { + if (text) { + ctx.font = ((this.from.selected || this.to.selected) ? "bold " : "") + + this.options.fontSize + "px " + this.options.fontFace; + var yLine; - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return moment(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; - } - } - return res; + if (this.dirtyLabel == true) { + var lines = String(text).split('\n'); + var lineCount = lines.length; + var fontSize = Number(this.options.fontSize); + yLine = y + (1 - lineCount) / 2 * fontSize; + + var width = ctx.measureText(lines[0]).width; + for (var i = 1; i < lineCount; i++) { + var lineWidth = ctx.measureText(lines[i]).width; + width = lineWidth > width ? lineWidth : width; + } + var height = this.options.fontSize * lineCount; + var left = x - width / 2; + var top = y - height / 2; + + // cache + this.labelDimensions = {top:top,left:left,width:width,height:height,yLine:yLine}; } - moment.min = function () { - var args = [].slice.call(arguments, 0); + var yLine = this.labelDimensions.yLine; + + ctx.save(); + + if (this.options.labelAlignment != "horizontal"){ + ctx.translate(x, yLine); + this._rotateForLabelAlignment(ctx); + x = 0; + yLine = 0; + } - return pickBy('isBefore', args); - }; + + this._drawLabelRect(ctx); + this._drawLabelText(ctx,x,yLine, lines, lineCount, fontSize); + + ctx.restore(); + } + }; - moment.max = function () { - var args = [].slice.call(arguments, 0); + /** + * Rotates the canvas so the text is most readable + * @param {CanvasRenderingContext2D} ctx + * @private + */ + Edge.prototype._rotateForLabelAlignment = function(ctx) { + var dy = this.from.y - this.to.y; + var dx = this.from.x - this.to.x; + var angleInDegrees = Math.atan2(dy, dx); - return pickBy('isAfter', args); - }; + // rotate so label it is readable + if((angleInDegrees < -1 && dx < 0) || (angleInDegrees > 0 && dx < 0)){ + angleInDegrees = angleInDegrees + Math.PI; + } + + ctx.rotate(angleInDegrees); + }; - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; + /** + * Draws the label rectangle + * @param {CanvasRenderingContext2D} ctx + * @param {String} labelAlignment + * @private + */ + Edge.prototype._drawLabelRect = function(ctx) { + if (this.options.fontFill !== undefined && this.options.fontFill !== null && this.options.fontFill !== "none") { + ctx.fillStyle = this.options.fontFill; + + var lineMargin = 2; - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); + if (this.options.labelAlignment == 'line-center') { + ctx.fillRect(-this.labelDimensions.width * 0.5, -this.labelDimensions.height * 0.5, this.labelDimensions.width, this.labelDimensions.height); + } + else if (this.options.labelAlignment == 'line-above') { + ctx.fillRect(-this.labelDimensions.width * 0.5, -(this.labelDimensions.height + lineMargin), this.labelDimensions.width, this.labelDimensions.height); + } + else if (this.options.labelAlignment == 'line-below') { + ctx.fillRect(-this.labelDimensions.width * 0.5, lineMargin, this.labelDimensions.width, this.labelDimensions.height); + } + else { + ctx.fillRect(this.labelDimensions.left, this.labelDimensions.top, this.labelDimensions.width, this.labelDimensions.height); + } + } + }; - return makeMoment(c).utc(); - }; + /** + * Draws the label text + * @param {CanvasRenderingContext2D} ctx + * @param {Number} x + * @param {Number} yLine + * @param {Array} lines + * @param {Number} lineCount + * @param {Number} fontSize + * @private + */ + Edge.prototype._drawLabelText = function(ctx, x, yLine, lines, lineCount, fontSize) { + // draw text + ctx.fillStyle = this.options.fontColor || "black"; + ctx.textAlign = "center"; - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + // check for label alignment + if (this.options.labelAlignment != 'horizontal') { + var lineMargin = 2; + if (this.options.labelAlignment == 'line-above') { + ctx.textBaseline = "alphabetic"; + yLine -= 2 * lineMargin; // distance from edge, required because we use alphabetic. Alphabetic has less difference between browsers + } + else if (this.options.labelAlignment == 'line-below') { + ctx.textBaseline = "hanging"; + yLine += 2 * lineMargin;// distance from edge, required because we use hanging. Hanging has less difference between browsers + } + else { + ctx.textBaseline = "middle"; + } + } + else { + ctx.textBaseline = "middle"; + } - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; + // check for strokeWidth + if (this.options.fontStrokeWidth > 0){ + ctx.lineWidth = this.options.fontStrokeWidth; + ctx.strokeStyle = this.options.fontStrokeColor; + ctx.lineJoin = 'round'; + } + for (var i = 0; i < lineCount; i++) { + if(this.options.fontStrokeWidth > 0){ + ctx.strokeText(lines[i], x, yLine); + } + ctx.fillText(lines[i], x, yLine); + yLine += fontSize; + } + }; - if (moment.isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; - duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && - ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + /** + * Redraw a edge as a dashed line + * Draw this edge in the given canvas + * @author David Jordan + * @date 2012-08-08 + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + * @private + */ + Edge.prototype._drawDashLine = function(ctx) { + // set style + ctx.strokeStyle = this._getColor(ctx); + ctx.lineWidth = this._getLineWidth(); - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } + var via = null; + // only firefox and chrome support this method, else we use the legacy one. + if (ctx.setLineDash !== undefined) { + ctx.save(); + // configure the dash pattern + var pattern = [0]; + if (this.options.dash.length !== undefined && this.options.dash.gap !== undefined) { + pattern = [this.options.dash.length,this.options.dash.gap]; + } + else { + pattern = [5,5]; + } - ret = new Duration(duration); + // set dash settings for chrome or firefox + ctx.setLineDash(pattern); + ctx.lineDashOffset = 0; - if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } + // draw the line + via = this._line(ctx); - return ret; - }; + // restore the dash settings. + ctx.setLineDash([0]); + ctx.lineDashOffset = 0; + ctx.restore(); + } + else { // unsupporting smooth lines + // draw dashed line + ctx.beginPath(); + ctx.lineCap = 'round'; + if (this.options.dash.altLength !== undefined) //If an alt dash value has been set add to the array this value + { + ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y, + [this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]); + } + else if (this.options.dash.length !== undefined && this.options.dash.gap !== undefined) //If a dash and gap value has been set add to the array this value + { + ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y, + [this.options.dash.length,this.options.dash.gap]); + } + else //If all else fails draw a line + { + ctx.moveTo(this.from.x, this.from.y); + ctx.lineTo(this.to.x, this.to.y); + } + ctx.stroke(); + } - // version number - moment.version = VERSION; + // draw label + if (this.label) { + var point; + if (this.options.smoothCurves.enabled == true && via != null) { + var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); + var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); + point = {x:midpointX, y:midpointY}; + } + else { + point = this._pointOnLine(0.5); + } + this._label(ctx, this.label, point.x, point.y); + } + }; - // default format - moment.defaultFormat = isoFormat; + /** + * Get a point on a line + * @param {Number} percentage. Value between 0 (line start) and 1 (line end) + * @return {Object} point + * @private + */ + Edge.prototype._pointOnLine = function (percentage) { + return { + x: (1 - percentage) * this.from.x + percentage * this.to.x, + y: (1 - percentage) * this.from.y + percentage * this.to.y + } + }; - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + /** + * Get a point on a circle + * @param {Number} x + * @param {Number} y + * @param {Number} radius + * @param {Number} percentage. Value between 0 (line start) and 1 (line end) + * @return {Object} point + * @private + */ + Edge.prototype._pointOnCircle = function (x, y, radius, percentage) { + var angle = (percentage - 3/8) * 2 * Math.PI; + return { + x: x + radius * Math.cos(angle), + y: y - radius * Math.sin(angle) + } + }; - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + /** + * Redraw a edge as a line with an arrow halfway the line + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + * @private + */ + Edge.prototype._drawArrowCenter = function(ctx) { + var point; + // set style + ctx.strokeStyle = this._getColor(ctx); + ctx.fillStyle = ctx.strokeStyle; + ctx.lineWidth = this._getLineWidth(); - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; + if (this.from != this.to) { + // draw line + var via = this._line(ctx); - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function (threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return relativeTimeThresholds[threshold]; - } - relativeTimeThresholds[threshold] = limit; - return true; - }; + var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); + var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; + // draw an arrow halfway the line + if (this.options.smoothCurves.enabled == true && via != null) { + var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); + var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); + point = {x:midpointX, y:midpointY}; + } + else { + point = this._pointOnLine(0.5); + } - moment.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - function (key, value) { - return moment.locale(key, value); - } - ); + ctx.arrow(point.x, point.y, angle, length); + ctx.fill(); + ctx.stroke(); - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - moment.locale = function (key, values) { - var data; - if (key) { - if (typeof(values) !== 'undefined') { - data = moment.defineLocale(key, values); - } - else { - data = moment.localeData(key); - } + // draw label + if (this.label) { + this._label(ctx, this.label, point.x, point.y); + } + } + else { + // draw circle + var x, y; + var radius = 0.25 * Math.max(100,this.physics.springLength); + var node = this.from; + if (!node.width) { + node.resize(ctx); + } + if (node.width > node.height) { + x = node.x + node.width * 0.5; + y = node.y - radius; + } + else { + x = node.x + radius; + y = node.y - node.height * 0.5; + } + this._circle(ctx, x, y, radius); - if (data) { - moment.duration._locale = moment._locale = data; - } - } + // draw all arrows + var angle = 0.2 * Math.PI; + var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; + point = this._pointOnCircle(x, y, radius, 0.5); + ctx.arrow(point.x, point.y, angle, length); + ctx.fill(); + ctx.stroke(); - return moment._locale._abbr; - }; + // draw label + if (this.label) { + point = this._pointOnCircle(x, y, radius, 0.5); + this._label(ctx, this.label, point.x, point.y); + } + } + }; - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); - } - locales[name].set(values); + Edge.prototype._pointOnBezier = function(t) { + var via = this._getViaCoordinates(); - // backwards compat for now: also set the locale - moment.locale(name); + var x = Math.pow(1-t,2)*this.from.x + (2*t*(1 - t))*via.x + Math.pow(t,2)*this.to.x; + var y = Math.pow(1-t,2)*this.from.y + (2*t*(1 - t))*via.y + Math.pow(t,2)*this.to.y; - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - }; + return {x:x,y:y}; + } - moment.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - function (key) { - return moment.localeData(key); - } - ); + /** + * This function uses binary search to look for the point where the bezier curve crosses the border of the node. + * + * @param from + * @param ctx + * @returns {*} + * @private + */ + Edge.prototype._findBorderPosition = function(from,ctx) { + var maxIterations = 10; + var iteration = 0; + var low = 0; + var high = 1; + var pos,angle,distanceToBorder, distanceToNodes, difference; + var threshold = 0.2; + var node = this.to; + if (from == true) { + node = this.from; + } - // returns locale data - moment.localeData = function (key) { - var locale; + while (low <= high && iteration < maxIterations) { + var middle = (low + high) * 0.5; - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } + pos = this._pointOnBezier(middle); + angle = Math.atan2((node.y - pos.y), (node.x - pos.x)); + distanceToBorder = node.distanceToBorder(ctx,angle); + distanceToNodes = Math.sqrt(Math.pow(pos.x-node.x,2) + Math.pow(pos.y-node.y,2)); + difference = distanceToBorder - distanceToNodes; + if (Math.abs(difference) < threshold) { + break; // found + } + else if (difference < 0) { // distance to nodes is larger than distance to border --> t needs to be bigger if we're looking at the to node. + if (from == false) { + low = middle; + } + else { + high = middle; + } + } + else { + if (from == false) { + high = middle; + } + else { + low = middle; + } + } - if (!key) { - return moment._locale; - } + iteration++; + } + pos.t = middle; - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } + return pos; + }; - return chooseLocale(key); - }; + /** + * Redraw a edge as a line with an arrow + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + * @private + */ + Edge.prototype._drawArrow = function(ctx) { + // set style + ctx.strokeStyle = this._getColor(ctx); + ctx.fillStyle = ctx.strokeStyle; + ctx.lineWidth = this._getLineWidth(); - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && hasOwnProp(obj, '_isAMomentObject')); - }; + // set vars + var angle, length, arrowPos; - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; + // if not connected to itself + if (this.from != this.to) { + // draw line + this._line(ctx); - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); + // draw arrow head + if (this.options.smoothCurves.enabled == true) { + var via = this._getViaCoordinates(); + arrowPos = this._findBorderPosition(false, ctx); + var guidePos = this._pointOnBezier(Math.max(0.0, arrowPos.t - 0.1)) + angle = Math.atan2((arrowPos.y - guidePos.y), (arrowPos.x - guidePos.x)); } + else { + angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); + var dx = (this.to.x - this.from.x); + var dy = (this.to.y - this.from.y); + var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); + var toBorderDist = this.to.distanceToBorder(ctx, angle); + var toBorderPoint = (edgeSegmentLength - toBorderDist) / edgeSegmentLength; - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; - - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; - } + arrowPos = {}; + arrowPos.x = (1 - toBorderPoint) * this.from.x + toBorderPoint * this.to.x; + arrowPos.y = (1 - toBorderPoint) * this.from.y + toBorderPoint * this.to.y; + } - return m; - }; + // draw arrow at the end of the line + length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; + ctx.arrow(arrowPos.x,arrowPos.y, angle, length); + ctx.fill(); + ctx.stroke(); - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + // draw label + if (this.label) { + var point; + if (this.options.smoothCurves.enabled == true && via != null) { + point = this._pointOnBezier(0.5); + } + else { + point = this._pointOnLine(0.5); + } + this._label(ctx, this.label, point.x, point.y); + } + } + else { + // draw circle + var node = this.from; + var x, y, arrow; + var radius = 0.25 * Math.max(100,this.physics.springLength); + if (!node.width) { + node.resize(ctx); + } + if (node.width > node.height) { + x = node.x + node.width * 0.5; + y = node.y - radius; + arrow = { + x: x, + y: node.y, + angle: 0.9 * Math.PI + }; + } + else { + x = node.x + radius; + y = node.y - node.height * 0.5; + arrow = { + x: node.x, + y: y, + angle: 0.6 * Math.PI + }; + } + ctx.beginPath(); + // TODO: similarly, for a line without arrows, draw to the border of the nodes instead of the center + ctx.arc(x, y, radius, 0, 2 * Math.PI, false); + ctx.stroke(); - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; + // draw all arrows + var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; + ctx.arrow(arrow.x, arrow.y, arrow.angle, length); + ctx.fill(); + ctx.stroke(); - moment.isDate = isDate; + // draw label + if (this.label) { + point = this._pointOnCircle(x, y, radius, 0.5); + this._label(ctx, this.label, point.x, point.y); + } + } + }; - /************************************ - Moment Prototype - ************************************/ + /** + * Calculate the distance between a point (x3,y3) and a line segment from + * (x1,y1) to (x2,y2). + * http://stackoverflow.com/questions/849211/shortest-distancae-between-a-point-and-a-line-segment + * @param {number} x1 + * @param {number} y1 + * @param {number} x2 + * @param {number} y2 + * @param {number} x3 + * @param {number} y3 + * @private + */ + Edge.prototype._getDistanceToEdge = function (x1,y1, x2,y2, x3,y3) { // x3,y3 is the point + var returnValue = 0; + if (this.from != this.to) { + if (this.options.smoothCurves.enabled == true) { + var xVia, yVia; + if (this.options.smoothCurves.enabled == true && this.options.smoothCurves.dynamic == true) { + xVia = this.via.x; + yVia = this.via.y; + } + else { + var via = this._getViaCoordinates(); + xVia = via.x; + yVia = via.y; + } + var minDistance = 1e9; + var distance; + var i,t,x,y, lastX, lastY; + for (i = 0; i < 10; i++) { + t = 0.1*i; + x = Math.pow(1-t,2)*x1 + (2*t*(1 - t))*xVia + Math.pow(t,2)*x2; + y = Math.pow(1-t,2)*y1 + (2*t*(1 - t))*yVia + Math.pow(t,2)*y2; + if (i > 0) { + distance = this._getDistanceToLine(lastX,lastY,x,y, x3,y3); + minDistance = distance < minDistance ? distance : minDistance; + } + lastX = x; lastY = y; + } + returnValue = minDistance; + } + else { + returnValue = this._getDistanceToLine(x1,y1,x2,y2,x3,y3); + } + } + else { + var x, y, dx, dy; + var radius = 0.25 * this.physics.springLength; + var node = this.from; + if (node.width > node.height) { + x = node.x + 0.5 * node.width; + y = node.y - radius; + } + else { + x = node.x + radius; + y = node.y - 0.5 * node.height; + } + dx = x - x3; + dy = y - y3; + returnValue = Math.abs(Math.sqrt(dx*dx + dy*dy) - radius); + } + if (this.labelDimensions.left < x3 && + this.labelDimensions.left + this.labelDimensions.width > x3 && + this.labelDimensions.top < y3 && + this.labelDimensions.top + this.labelDimensions.height > y3) { + return 0; + } + else { + return returnValue; + } + }; - extend(moment.fn = Moment.prototype, { + Edge.prototype._getDistanceToLine = function(x1,y1,x2,y2,x3,y3) { + var px = x2-x1, + py = y2-y1, + something = px*px + py*py, + u = ((x3 - x1) * px + (y3 - y1) * py) / something; - clone : function () { - return moment(this); - }, + if (u > 1) { + u = 1; + } + else if (u < 0) { + u = 0; + } - valueOf : function () { - return +this._d - ((this._offset || 0) * 60000); - }, + var x = x1 + u * px, + y = y1 + u * py, + dx = x - x3, + dy = y - y3; - unix : function () { - return Math.floor(+this / 1000); - }, + //# Note: If the actual distance does not matter, + //# if you only want to compare what this function + //# returns to other results of this function, you + //# can just return the squared distance instead + //# (i.e. remove the sqrt) to gain a little performance - toString : function () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - }, + return Math.sqrt(dx*dx + dy*dy); + }; - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, + /** + * This allows the zoom level of the network to influence the rendering + * + * @param scale + */ + Edge.prototype.setScale = function(scale) { + this.networkScaleInv = 1.0/scale; + }; - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - }, - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, + Edge.prototype.select = function() { + this.selected = true; + }; - isValid : function () { - return isValid(this); - }, + Edge.prototype.unselect = function() { + this.selected = false; + }; - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } + Edge.prototype.positionBezierNode = function() { + if (this.via !== null && this.from !== null && this.to !== null) { + this.via.x = 0.5 * (this.from.x + this.to.x); + this.via.y = 0.5 * (this.from.y + this.to.y); + } + else if (this.via !== null) { + this.via.x = 0; + this.via.y = 0; + } + }; - return false; - }, + /** + * This function draws the control nodes for the manipulator. + * In order to enable this, only set the this.controlNodesEnabled to true. + * @param ctx + */ + Edge.prototype._drawControlNodes = function(ctx) { + if (this.controlNodesEnabled == true) { + if (this.controlNodes.from === null && this.controlNodes.to === null) { + var nodeIdFrom = "edgeIdFrom:".concat(this.id); + var nodeIdTo = "edgeIdTo:".concat(this.id); + var constants = { + nodes:{group:'', radius:7, borderWidth:2, borderWidthSelected: 2}, + physics:{damping:0}, + clustering: {maxNodeSizeIncrements: 0 ,nodeScaling: {width:0, height: 0, radius:0}} + }; + this.controlNodes.from = new Node( + {id:nodeIdFrom, + shape:'dot', + color:{background:'#ff0000', border:'#3c3c3c', highlight: {background:'#07f968'}} + },{},{},constants); + this.controlNodes.to = new Node( + {id:nodeIdTo, + shape:'dot', + color:{background:'#ff0000', border:'#3c3c3c', highlight: {background:'#07f968'}} + },{},{},constants); + } - parsingFlags : function () { - return extend({}, this._pf); - }, + this.controlNodes.positions = {}; + if (this.controlNodes.from.selected == false) { + this.controlNodes.positions.from = this.getControlNodeFromPosition(ctx); + this.controlNodes.from.x = this.controlNodes.positions.from.x; + this.controlNodes.from.y = this.controlNodes.positions.from.y; + } + if (this.controlNodes.to.selected == false) { + this.controlNodes.positions.to = this.getControlNodeToPosition(ctx); + this.controlNodes.to.x = this.controlNodes.positions.to.x; + this.controlNodes.to.y = this.controlNodes.positions.to.y; + } - invalidAt: function () { - return this._pf.overflow; - }, + this.controlNodes.from.draw(ctx); + this.controlNodes.to.draw(ctx); + } + else { + this.controlNodes = {from:null, to:null, positions:{}}; + } + }; - utc : function (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - }, + /** + * Enable control nodes. + * @private + */ + Edge.prototype._enableControlNodes = function() { + this.fromBackup = this.from; + this.toBackup = this.to; + this.controlNodesEnabled = true; + }; - local : function (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; + /** + * disable control nodes and remove from dynamicEdges from old node + * @private + */ + Edge.prototype._disableControlNodes = function() { + this.fromId = this.from.id; + this.toId = this.to.id; + if (this.fromId != this.fromBackup.id) { // from was changed, remove edge from old 'from' node dynamic edges + this.fromBackup.detachEdge(this); + } + else if (this.toId != this.toBackup.id) { // to was changed, remove edge from old 'to' node dynamic edges + this.toBackup.detachEdge(this); + } - if (keepLocalTime) { - this.subtract(this._dateUtcOffset(), 'm'); - } - } - return this; - }, + this.fromBackup = null; + this.toBackup = null; + this.controlNodesEnabled = false; + }; - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, - add : createAdder(1, 'add'), + /** + * This checks if one of the control nodes is selected and if so, returns the control node object. Else it returns null. + * @param x + * @param y + * @returns {null} + * @private + */ + Edge.prototype._getSelectedControlNode = function(x,y) { + var positions = this.controlNodes.positions; + var fromDistance = Math.sqrt(Math.pow(x - positions.from.x,2) + Math.pow(y - positions.from.y,2)); + var toDistance = Math.sqrt(Math.pow(x - positions.to.x ,2) + Math.pow(y - positions.to.y ,2)); - subtract : createAdder(-1, 'subtract'), + if (fromDistance < 15) { + this.connectedNode = this.from; + this.from = this.controlNodes.from; + return this.controlNodes.from; + } + else if (toDistance < 15) { + this.connectedNode = this.to; + this.to = this.controlNodes.to; + return this.controlNodes.to; + } + else { + return null; + } + }; - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, - anchor, diff, output, daysAdjust; - units = normalizeUnits(units); + /** + * this resets the control nodes to their original position. + * @private + */ + Edge.prototype._restoreControlNodes = function() { + if (this.controlNodes.from.selected == true) { + this.from = this.connectedNode; + this.connectedNode = null; + this.controlNodes.from.unselect(); + } + else if (this.controlNodes.to.selected == true) { + this.to = this.connectedNode; + this.connectedNode = null; + this.controlNodes.to.unselect(); + } + }; - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - diff = this - that; - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, + /** + * this calculates the position of the control nodes on the edges of the parent nodes. + * + * @param ctx + * @returns {x: *, y: *} + */ + Edge.prototype.getControlNodeFromPosition = function(ctx) { + // draw arrow head + var controlnodeFromPos; + if (this.options.smoothCurves.enabled == true) { + controlnodeFromPos = this._findBorderPosition(true, ctx); + } + else { + var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); + var dx = (this.to.x - this.from.x); + var dy = (this.to.y - this.from.y); + var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, + var fromBorderDist = this.from.distanceToBorder(ctx, angle + Math.PI); + var fromBorderPoint = (edgeSegmentLength - fromBorderDist) / edgeSegmentLength; + controlnodeFromPos = {}; + controlnodeFromPos.x = (fromBorderPoint) * this.from.x + (1 - fromBorderPoint) * this.to.x; + controlnodeFromPos.y = (fromBorderPoint) * this.from.y + (1 - fromBorderPoint) * this.to.y; + } - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, + return controlnodeFromPos; + }; - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're locat/utc/offset - // or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this, moment(now))); - }, + /** + * this calculates the position of the control nodes on the edges of the parent nodes. + * + * @param ctx + * @returns {{from: {x: number, y: number}, to: {x: *, y: *}}} + */ + Edge.prototype.getControlNodeToPosition = function(ctx) { + // draw arrow head + var controlnodeFromPos,controlnodeToPos; + if (this.options.smoothCurves.enabled == true) { + controlnodeToPos = this._findBorderPosition(false, ctx); + } + else { + var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); + var dx = (this.to.x - this.from.x); + var dy = (this.to.y - this.from.y); + var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); + var toBorderDist = this.to.distanceToBorder(ctx, angle); + var toBorderPoint = (edgeSegmentLength - toBorderDist) / edgeSegmentLength; - isLeapYear : function () { - return isLeapYear(this.year()); - }, + controlnodeToPos = {}; + controlnodeToPos.x = (1 - toBorderPoint) * this.from.x + toBorderPoint * this.to.x; + controlnodeToPos.y = (1 - toBorderPoint) * this.from.y + toBorderPoint * this.to.y; + } - isDST : function () { - return (this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset()); - }, + return controlnodeToPos; + }; - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - }, + module.exports = Edge; - month : makeAccessor('Month', true), +/***/ }, +/* 58 */ +/***/ function(module, exports, __webpack_require__) { - startOf : function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ - } + /** + * Popup is a class to create a popup window with some text + * @param {Element} container The container object. + * @param {Number} [x] + * @param {Number} [y] + * @param {String} [text] + * @param {Object} [style] An object containing borderColor, + * backgroundColor, etc. + */ + function Popup(container, x, y, text, style) { + if (container) { + this.container = container; + } + else { + this.container = document.body; + } - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } + // x, y and text are optional, see if a style object was passed in their place + if (style === undefined) { + if (typeof x === "object") { + style = x; + x = undefined; + } else if (typeof text === "object") { + style = text; + text = undefined; + } else { + // for backwards compatibility, in case clients other than Network are creating Popup directly + style = { + fontColor: 'black', + fontSize: 14, // px + fontFace: 'verdana', + color: { + border: '#666', + background: '#FFFFC6' + } + } + } + } - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } + this.x = 0; + this.y = 0; + this.padding = 5; + this.hidden = false; - return this; - }, + if (x !== undefined && y !== undefined) { + this.setPosition(x, y); + } + if (text !== undefined) { + this.setText(text); + } - endOf: function (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, + // create the frame + this.frame = document.createElement('div'); + this.frame.className = 'network-tooltip'; + this.frame.style.color = style.fontColor; + this.frame.style.backgroundColor = style.color.background; + this.frame.style.borderColor = style.color.border; + this.frame.style.fontSize = style.fontSize + 'px'; + this.frame.style.fontFamily = style.fontFace; + this.container.appendChild(this.frame); + } - isAfter: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this > +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return inputMs < +this.clone().startOf(units); - } - }, + /** + * @param {number} x Horizontal position of the popup window + * @param {number} y Vertical position of the popup window + */ + Popup.prototype.setPosition = function(x, y) { + this.x = parseInt(x); + this.y = parseInt(y); + }; - isBefore: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this < +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return +this.clone().endOf(units) < inputMs; - } - }, + /** + * Set the content for the popup window. This can be HTML code or text. + * @param {string | Element} content + */ + Popup.prototype.setText = function(content) { + if (content instanceof Element) { + this.frame.innerHTML = ''; + this.frame.appendChild(content); + } + else { + this.frame.innerHTML = content; // string containing text or HTML + } + }; - isBetween: function (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); - }, + /** + * Show the popup window + * @param {boolean} show Optional. Show or hide the window + */ + Popup.prototype.show = function (show) { + if (show === undefined) { + show = true; + } - isSame: function (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this === +input; - } else { - inputMs = +moment(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); - } - }, + if (show) { + var height = this.frame.clientHeight; + var width = this.frame.clientWidth; + var maxHeight = this.frame.parentNode.clientHeight; + var maxWidth = this.frame.parentNode.clientWidth; - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), + var top = (this.y - height); + if (top + height + this.padding > maxHeight) { + top = maxHeight - height - this.padding; + } + if (top < this.padding) { + top = this.padding; + } - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), + var left = this.x; + if (left + width + this.padding > maxWidth) { + left = maxWidth - width - this.padding; + } + if (left < this.padding) { + left = this.padding; + } - zone : deprecate( - 'moment().zone is deprecated, use moment().utcOffset instead. ' + - 'https://github.com/moment/moment/issues/1779', - function (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } + this.frame.style.left = left + "px"; + this.frame.style.top = top + "px"; + this.frame.style.visibility = "visible"; + this.hidden = false; + } + else { + this.hide(); + } + }; - this.utcOffset(input, keepLocalTime); + /** + * Hide the popup window + */ + Popup.prototype.hide = function () { + this.hidden = true; + this.frame.style.visibility = "hidden"; + }; - return this; - } else { - return -this.utcOffset(); - } - } - ), + module.exports = Popup; - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - utcOffset : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = utcOffsetFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._dateUtcOffset(); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } - } - return this; - } else { - return this._isUTC ? offset : this._dateUtcOffset(); - } - }, +/***/ }, +/* 59 */ +/***/ function(module, exports, __webpack_require__) { - isLocal : function () { - return !this._isUTC; - }, + var PhysicsMixin = __webpack_require__(60); + var ClusterMixin = __webpack_require__(64); + var SectorsMixin = __webpack_require__(65); + var SelectionMixin = __webpack_require__(66); + var ManipulationMixin = __webpack_require__(67); + var NavigationMixin = __webpack_require__(68); + var HierarchicalLayoutMixin = __webpack_require__(69); - isUtcOffset : function () { - return this._isUTC; - }, + /** + * Load a mixin into the network object + * + * @param {Object} sourceVariable | this object has to contain functions. + * @private + */ + exports._loadMixin = function (sourceVariable) { + for (var mixinFunction in sourceVariable) { + if (sourceVariable.hasOwnProperty(mixinFunction)) { + this[mixinFunction] = sourceVariable[mixinFunction]; + } + } + }; - isUtc : function () { - return this._isUTC && this._offset === 0; - }, - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, + /** + * removes a mixin from the network object. + * + * @param {Object} sourceVariable | this object has to contain functions. + * @private + */ + exports._clearMixin = function (sourceVariable) { + for (var mixinFunction in sourceVariable) { + if (sourceVariable.hasOwnProperty(mixinFunction)) { + this[mixinFunction] = undefined; + } + } + }; - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, - parseZone : function () { - if (this._tzm) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - this.utcOffset(utcOffsetFromString(this._i)); - } - return this; - }, + /** + * Mixin the physics system and initialize the parameters required. + * + * @private + */ + exports._loadPhysicsSystem = function () { + this._loadMixin(PhysicsMixin); + this._loadSelectedForceSolver(); + if (this.constants.configurePhysics == true) { + this._loadPhysicsConfiguration(); + } + else { + this._cleanupPhysicsConfiguration(); + } + }; - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).utcOffset(); - } - return (this.utcOffset() - input) % 60 === 0; - }, + /** + * Mixin the cluster system and initialize the parameters required. + * + * @private + */ + exports._loadClusterSystem = function () { + this.clusterSession = 0; + this.hubThreshold = 5; + this._loadMixin(ClusterMixin); + }; - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - }, + /** + * Mixin the sector system and initialize the parameters required + * + * @private + */ + exports._loadSectorSystem = function () { + this.sectors = {}; + this.activeSector = ["default"]; + this.sectors["active"] = {}; + this.sectors["active"]["default"] = {"nodes": {}, + "edges": {}, + "nodeIndices": [], + "formationScale": 1.0, + "drawingNode": undefined }; + this.sectors["frozen"] = {}; + this.sectors["support"] = {"nodes": {}, + "edges": {}, + "nodeIndices": [], + "formationScale": 1.0, + "drawingNode": undefined }; - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + this.nodeIndices = this.sectors["active"]["default"]["nodeIndices"]; // the node indices list is used to speed up the computation of the repulsion fields - weekYear : function (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - }, + this._loadMixin(SectorsMixin); + }; - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + /** + * Mixin the selection system and initialize the parameters required + * + * @private + */ + exports._loadSelectionSystem = function () { + this.selectionObj = {nodes: {}, edges: {}}; - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + this._loadMixin(SelectionMixin); + }; - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, + /** + * Mixin the navigationUI (User Interface) system and initialize the parameters required + * + * @private + */ + exports._loadManipulationSystem = function () { + // reset global variables -- these are used by the selection of nodes and edges. + this.blockConnectingEdgeSelection = false; + this.forceAppendSelection = false; - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, + if (this.constants.dataManipulation.enabled == true) { + // load the manipulator HTML elements. All styling done in css. + if (this.manipulationDiv === undefined) { + this.manipulationDiv = document.createElement('div'); + this.manipulationDiv.className = 'network-manipulationDiv'; + if (this.editMode == true) { + this.manipulationDiv.style.display = "block"; + } + else { + this.manipulationDiv.style.display = "none"; + } + this.frame.appendChild(this.manipulationDiv); + } - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, + if (this.editModeDiv === undefined) { + this.editModeDiv = document.createElement('div'); + this.editModeDiv.className = 'network-manipulation-editMode'; + if (this.editMode == true) { + this.editModeDiv.style.display = "none"; + } + else { + this.editModeDiv.style.display = "block"; + } + this.frame.appendChild(this.editModeDiv); + } - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, + if (this.closeDiv === undefined) { + this.closeDiv = document.createElement('div'); + this.closeDiv.className = 'network-manipulation-closeDiv'; + this.closeDiv.style.display = this.manipulationDiv.style.display; + this.frame.appendChild(this.closeDiv); + } - set : function (units, value) { - var unit; - if (typeof units === 'object') { - for (unit in units) { - this.set(unit, units[unit]); - } - } - else { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); - } - } - return this; - }, + // load the manipulation functions + this._loadMixin(ManipulationMixin); - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - var newLocaleData; + // create the manipulator toolbar + this._createManipulatorBar(); + } + else { + if (this.manipulationDiv !== undefined) { + // removes all the bindings and overloads + this._createManipulatorBar(); - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = moment.localeData(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - }, + // remove the manipulation divs + this.frame.removeChild(this.manipulationDiv); + this.frame.removeChild(this.editModeDiv); + this.frame.removeChild(this.closeDiv); - lang : deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ), + this.manipulationDiv = undefined; + this.editModeDiv = undefined; + this.closeDiv = undefined; + // remove the mixin functions + this._clearMixin(ManipulationMixin); + } + } + }; - localeData : function () { - return this._locale; - }, - _dateUtcOffset : function () { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(this._d.getTimezoneOffset() / 15) * 15; - } + /** + * Mixin the navigation (User Interface) system and initialize the parameters required + * + * @private + */ + exports._loadNavigationControls = function () { + this._loadMixin(NavigationMixin); + // the clean function removes the button divs, this is done to remove the bindings. + this._cleanNavigation(); + if (this.constants.navigation.enabled == true) { + this._loadNavigationElements(); + } + }; - }); - function rawMonthSetter(mom, value) { - var dayOfMonth; + /** + * Mixin the hierarchical layout system. + * + * @private + */ + exports._loadHierarchySystem = function () { + this._loadMixin(HierarchicalLayoutMixin); + }; - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } - } - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } +/***/ }, +/* 60 */ +/***/ function(module, exports, __webpack_require__) { - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); - } + var util = __webpack_require__(1); + var RepulsionMixin = __webpack_require__(61); + var HierarchialRepulsionMixin = __webpack_require__(62); + var BarnesHutMixin = __webpack_require__(63); - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - } + /** + * Toggling barnes Hut calculation on and off. + * + * @private + */ + exports._toggleBarnesHut = function () { + this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; + this._loadSelectedForceSolver(); + this.moving = true; + this.start(); + }; - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; - } else { - return rawGetter(this, unit); - } - }; - } - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + /** + * This loads the node force solver based on the barnes hut or repulsion algorithm + * + * @private + */ + exports._loadSelectedForceSolver = function () { + // this overloads the this._calculateNodeForces + if (this.constants.physics.barnesHut.enabled == true) { + this._clearMixin(RepulsionMixin); + this._clearMixin(HierarchialRepulsionMixin); - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; + this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity; + this.constants.physics.springLength = this.constants.physics.barnesHut.springLength; + this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant; + this.constants.physics.damping = this.constants.physics.barnesHut.damping; - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; + this._loadMixin(BarnesHutMixin); + } + else if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._clearMixin(BarnesHutMixin); + this._clearMixin(RepulsionMixin); - // alias isUtc for dev-friendliness - moment.fn.isUTC = moment.fn.isUtc; + this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity; + this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength; + this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant; + this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping; - /************************************ - Duration Prototype - ************************************/ + this._loadMixin(HierarchialRepulsionMixin); + } + else { + this._clearMixin(BarnesHutMixin); + this._clearMixin(HierarchialRepulsionMixin); + this.barnesHutTree = undefined; + this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity; + this.constants.physics.springLength = this.constants.physics.repulsion.springLength; + this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant; + this.constants.physics.damping = this.constants.physics.repulsion.damping; - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; - } + this._loadMixin(RepulsionMixin); + } + }; - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; + /** + * Before calculating the forces, we check if we need to cluster to keep up performance and we check + * if there is more than one node. If it is just one node, we dont calculate anything. + * + * @private + */ + exports._initializeForceCalculation = function () { + // stop calculation if there is only one node + if (this.nodeIndices.length == 1) { + this.nodes[this.nodeIndices[0]]._setForce(0, 0); + } + else { + // if there are too many nodes on screen, we cluster without repositioning + if (this.nodeIndices.length > this.constants.clustering.clusterThreshold && this.constants.clustering.enabled == true) { + this.clusterToFit(this.constants.clustering.reduceToNodes, false); } - extend(moment.duration.fn = Duration.prototype, { + // we now start the force calculation + this._calculateForces(); + } + }; - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + /** + * Calculate the external forces acting on the nodes + * Forces are caused by: edges, repulsing forces between nodes, gravity + * @private + */ + exports._calculateForces = function () { + // Gravity is required to keep separated groups from floating off + // the forces are reset to zero in this loop by using _setForce instead + // of _addForce - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + this._calculateGravitationalForces(); + this._calculateNodeForces(); - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + if (this.constants.physics.springConstant > 0) { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this._calculateSpringForcesWithSupport(); + } + else { + if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._calculateHierarchicalSpringForces(); + } + else { + this._calculateSpringForces(); + } + } + } + }; - hours = absRound(minutes / 60); - data.hours = hours % 24; - days += absRound(hours / 24); + /** + * Smooth curves are created by adding invisible nodes in the center of the edges. These nodes are also + * handled in the calculateForces function. We then use a quadratic curve with the center node as control. + * This function joins the datanodes and invisible (called support) nodes into one object. + * We do this so we do not contaminate this.nodes with the support nodes. + * + * @private + */ + exports._updateCalculationNodes = function () { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this.calculationNodes = {}; + this.calculationNodeIndices = []; - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.calculationNodes[nodeId] = this.nodes[nodeId]; + } + } + var supportNodes = this.sectors['support']['nodes']; + for (var supportNodeId in supportNodes) { + if (supportNodes.hasOwnProperty(supportNodeId)) { + if (this.edges.hasOwnProperty(supportNodes[supportNodeId].parentEdgeId)) { + this.calculationNodes[supportNodeId] = supportNodes[supportNodeId]; + } + else { + supportNodes[supportNodeId]._setForce(0, 0); + } + } + } - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + for (var idx in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(idx)) { + this.calculationNodeIndices.push(idx); + } + } + } + else { + this.calculationNodes = this.nodes; + this.calculationNodeIndices = this.nodeIndices; + } + }; - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; - data.days = days; - data.months = months; - data.years = years; - }, + /** + * this function applies the central gravity effect to keep groups from floating off + * + * @private + */ + exports._calculateGravitationalForces = function () { + var dx, dy, distance, node, i; + var nodes = this.calculationNodes; + var gravity = this.constants.physics.centralGravity; + var gravityForce = 0; - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); + for (i = 0; i < this.calculationNodeIndices.length; i++) { + node = nodes[this.calculationNodeIndices[i]]; + node.damping = this.constants.physics.damping; // possibly add function to alter damping properties of clusters. + // gravity does not apply when we are in a pocket sector + if (this._sector() == "default" && gravity != 0) { + dx = -node.x; + dy = -node.y; + distance = Math.sqrt(dx * dx + dy * dy); - this._data.milliseconds = Math.abs(this._data.milliseconds); - this._data.seconds = Math.abs(this._data.seconds); - this._data.minutes = Math.abs(this._data.minutes); - this._data.hours = Math.abs(this._data.hours); - this._data.months = Math.abs(this._data.months); - this._data.years = Math.abs(this._data.years); + gravityForce = (distance == 0) ? 0 : (gravity / distance); + node.fx = dx * gravityForce; + node.fy = dy * gravityForce; + } + else { + node.fx = 0; + node.fy = 0; + } + } + }; - return this; - }, - weeks : function () { - return absRound(this.days() / 7); - }, - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); + /** + * this function calculates the effects of the springs in the case of unsmooth curves. + * + * @private + */ + exports._calculateSpringForces = function () { + var edgeLength, edge, edgeId; + var dx, dy, fx, fy, springForce, distance; + var edges = this.edges; - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); - } + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + edgeLength = edge.physics.springLength; + // this implies that the edges between big clusters are longer + edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; - return this.localeData().postformat(output); - }, + dx = (edge.from.x - edge.to.x); + dy = (edge.from.y - edge.to.y); + distance = Math.sqrt(dx * dx + dy * dy); - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); + if (distance == 0) { + distance = 0.01; + } - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; - this._bubble(); + fx = dx * springForce; + fy = dy * springForce; - return this; - }, + edge.from.fx += fx; + edge.from.fy += fy; + edge.to.fx -= fx; + edge.to.fy -= fy; + } + } + } + } + }; - subtract : function (input, val) { - var dur = moment.duration(input, val); - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; - this._bubble(); - return this; - }, + /** + * This function calculates the springforces on the nodes, accounting for the support nodes. + * + * @private + */ + exports._calculateSpringForcesWithSupport = function () { + var edgeLength, edge, edgeId, combinedClusterSize; + var edges = this.edges; - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + if (edge.via != null) { + var node1 = edge.to; + var node2 = edge.via; + var node3 = edge.from; - as : function (units) { - var days, months; - units = normalizeUnits(units); + edgeLength = edge.physics.springLength; - if (units === 'month' || units === 'year') { - days = this._days + this._milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(yearsToDays(this._months / 12)); - switch (units) { - case 'week': return days / 7 + this._milliseconds / 6048e5; - case 'day': return days + this._milliseconds / 864e5; - case 'hour': return days * 24 + this._milliseconds / 36e5; - case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; - case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } - }, + combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; - lang : moment.fn.lang, - locale : moment.fn.locale, + // this implies that the edges between big clusters are longer + edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth; + this._calculateSpringForce(node1, node2, 0.5 * edgeLength); + this._calculateSpringForce(node2, node3, 0.5 * edgeLength); + } + } + } + } + } + }; - toIsoString : deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead ' + - '(notice the capitals)', - function () { - return this.toISOString(); - } - ), - toISOString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + /** + * This is the code actually performing the calculation for the function above. It is split out to avoid repetition. + * + * @param node1 + * @param node2 + * @param edgeLength + * @private + */ + exports._calculateSpringForce = function (node1, node2, edgeLength) { + var dx, dy, fx, fy, springForce, distance; - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } + dx = (node1.x - node2.x); + dy = (node1.y - node2.y); + distance = Math.sqrt(dx * dx + dy * dy); - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); - }, + if (distance == 0) { + distance = 0.01; + } - localeData : function () { - return this._locale; - }, + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; - toJSON : function () { - return this.toISOString(); - } - }); + fx = dx * springForce; + fy = dy * springForce; - moment.duration.fn.toString = moment.duration.fn.toISOString; + node1.fx += fx; + node1.fy += fy; + node2.fx -= fx; + node2.fy -= fy; + }; - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; - } - for (i in unitMillisecondFactors) { - if (hasOwnProp(unitMillisecondFactors, i)) { - makeDurationGetter(i.toLowerCase()); - } + exports._cleanupPhysicsConfiguration = function() { + if (this.physicsConfiguration !== undefined) { + while (this.physicsConfiguration.hasChildNodes()) { + this.physicsConfiguration.removeChild(this.physicsConfiguration.firstChild); } - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); - }; + this.physicsConfiguration.parentNode.removeChild(this.physicsConfiguration); + this.physicsConfiguration = undefined; + } + } - /************************************ - Default Locale - ************************************/ + /** + * Load the HTML for the physics config and bind it + * @private + */ + exports._loadPhysicsConfiguration = function () { + if (this.physicsConfiguration === undefined) { + this.backupConstants = {}; + util.deepExtend(this.backupConstants,this.constants); + var maxGravitational = Math.max(20000, (-1 * this.constants.physics.barnesHut.gravitationalConstant) * 10); + var maxSpring = Math.min(0.05, this.constants.physics.barnesHut.springConstant * 10) - // Set default locale, other locale will inherit from English. - moment.locale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); + var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"]; + this.physicsConfiguration = document.createElement('div'); + this.physicsConfiguration.className = "PhysicsConfiguration"; + this.physicsConfiguration.innerHTML = '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
Simulation Mode:
Barnes HutRepulsionHierarchical
' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
Options:
' + this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement); + this.optionsDiv = document.createElement("div"); + this.optionsDiv.style.fontSize = "14px"; + this.optionsDiv.style.fontFamily = "verdana"; + this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement); - /* EMBED_LOCALES */ + var rangeElement; + rangeElement = document.getElementById('graph_BH_gc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant"); + rangeElement = document.getElementById('graph_BH_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_BH_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_BH_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_BH_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping"); - /************************************ - Exposing Moment - ************************************/ + rangeElement = document.getElementById('graph_R_nd'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance"); + rangeElement = document.getElementById('graph_R_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_R_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_R_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_R_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping"); - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - 'Accessing Moment through the global scope is ' + - 'deprecated, and will be removed in an upcoming ' + - 'release.', - moment); - } else { - globalScope.moment = moment; - } + rangeElement = document.getElementById('graph_H_nd'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); + rangeElement = document.getElementById('graph_H_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_H_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_H_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_H_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping"); + rangeElement = document.getElementById('graph_H_direction'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction"); + rangeElement = document.getElementById('graph_H_levsep'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation"); + rangeElement = document.getElementById('graph_H_nspac'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing"); + + var radioButton1 = document.getElementById("graph_physicsMethod1"); + var radioButton2 = document.getElementById("graph_physicsMethod2"); + var radioButton3 = document.getElementById("graph_physicsMethod3"); + radioButton2.checked = true; + if (this.constants.physics.barnesHut.enabled) { + radioButton1.checked = true; + } + if (this.constants.hierarchicalLayout.enabled) { + radioButton3.checked = true; } - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; - } + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + var graph_repositionNodes = document.getElementById("graph_repositionNodes"); + var graph_generateOptions = document.getElementById("graph_generateOptions"); - return moment; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - makeGlobal(true); - } else { - makeGlobal(); + graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this); + graph_repositionNodes.onclick = graphRepositionNodes.bind(this); + graph_generateOptions.onclick = graphGenerateOptions.bind(this); + if (this.constants.smoothCurves == true && this.constants.dynamicSmoothCurves == false) { + graph_toggleSmooth.style.background = "#A4FF56"; + } + else { + graph_toggleSmooth.style.background = "#FF8532"; } - }).call(this); - - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) -/***/ }, -/* 60 */ -/***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(68); - var HierarchialRepulsionMixin = __webpack_require__(69); - var BarnesHutMixin = __webpack_require__(70); + switchConfigurations.apply(this); + + radioButton1.onchange = switchConfigurations.bind(this); + radioButton2.onchange = switchConfigurations.bind(this); + radioButton3.onchange = switchConfigurations.bind(this); + } + }; /** - * Toggling barnes Hut calculation on and off. + * This overwrites the this.constants. * + * @param constantsVariableName + * @param value * @private */ - exports._toggleBarnesHut = function () { - this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; - this._loadSelectedForceSolver(); - this.moving = true; - this.start(); + exports._overWriteGraphConstants = function (constantsVariableName, value) { + var nameArray = constantsVariableName.split("_"); + if (nameArray.length == 1) { + this.constants[nameArray[0]] = value; + } + else if (nameArray.length == 2) { + this.constants[nameArray[0]][nameArray[1]] = value; + } + else if (nameArray.length == 3) { + this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value; + } }; /** - * This loads the node force solver based on the barnes hut or repulsion algorithm - * - * @private + * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. */ - exports._loadSelectedForceSolver = function () { - // this overloads the this._calculateNodeForces - if (this.constants.physics.barnesHut.enabled == true) { - this._clearMixin(RepulsionMixin); - this._clearMixin(HierarchialRepulsionMixin); + function graphToggleSmoothCurves () { + this.constants.smoothCurves.enabled = !this.constants.smoothCurves.enabled; + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} + else {graph_toggleSmooth.style.background = "#FF8532";} - this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity; - this.constants.physics.springLength = this.constants.physics.barnesHut.springLength; - this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant; - this.constants.physics.damping = this.constants.physics.barnesHut.damping; + this._configureSmoothCurves(false); + } - this._loadMixin(BarnesHutMixin); + /** + * this function is used to scramble the nodes + * + */ + function graphRepositionNodes () { + for (var nodeId in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(nodeId)) { + this.calculationNodes[nodeId].vx = 0; this.calculationNodes[nodeId].vy = 0; + this.calculationNodes[nodeId].fx = 0; this.calculationNodes[nodeId].fy = 0; + } } - else if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._clearMixin(BarnesHutMixin); - this._clearMixin(RepulsionMixin); - - this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity; - this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength; - this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant; - this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping; + if (this.constants.hierarchicalLayout.enabled == true) { + this._setupHierarchicalLayout(); + showValueOfRange.call(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); + showValueOfRange.call(this, 'graph_H_cg', 1, "physics_centralGravity"); + showValueOfRange.call(this, 'graph_H_sc', 1, "physics_springConstant"); + showValueOfRange.call(this, 'graph_H_sl', 1, "physics_springLength"); + showValueOfRange.call(this, 'graph_H_damp', 1, "physics_damping"); + } + else { + this.repositionNodes(); + } + this.moving = true; + this.start(); + } - this._loadMixin(HierarchialRepulsionMixin); + /** + * this is used to generate an options file from the playing with physics system. + */ + function graphGenerateOptions () { + var options = "No options are required, default values used."; + var optionsSpecific = []; + var radioButton1 = document.getElementById("graph_physicsMethod1"); + var radioButton2 = document.getElementById("graph_physicsMethod2"); + if (radioButton1.checked == true) { + if (this.constants.physics.barnesHut.gravitationalConstant != this.backupConstants.physics.barnesHut.gravitationalConstant) {optionsSpecific.push("gravitationalConstant: " + this.constants.physics.barnesHut.gravitationalConstant);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.barnesHut.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.barnesHut.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options = "var options = {"; + options += "physics: {barnesHut: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } + } + options += '}}' + } + if (this.constants.smoothCurves.enabled != this.backupConstants.smoothCurves.enabled) { + if (optionsSpecific.length == 0) {options = "var options = {";} + else {options += ", "} + options += "smoothCurves: " + this.constants.smoothCurves.enabled; + } + if (options != "No options are required, default values used.") { + options += '};' + } + } + else if (radioButton2.checked == true) { + options = "var options = {"; + options += "physics: {barnesHut: {enabled: false}"; + if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.repulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options += ", repulsion: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } + } + options += '}}' + } + if (optionsSpecific.length == 0) {options += "}"} + if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { + options += ", smoothCurves: " + this.constants.smoothCurves; + } + options += '};' } else { - this._clearMixin(BarnesHutMixin); - this._clearMixin(HierarchialRepulsionMixin); - this.barnesHutTree = undefined; + options = "var options = {"; + if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options += "physics: {hierarchicalRepulsion: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", "; + } + } + options += '}},'; + } + options += 'hierarchicalLayout: {'; + optionsSpecific = []; + if (this.constants.hierarchicalLayout.direction != this.backupConstants.hierarchicalLayout.direction) {optionsSpecific.push("direction: " + this.constants.hierarchicalLayout.direction);} + if (Math.abs(this.constants.hierarchicalLayout.levelSeparation) != this.backupConstants.hierarchicalLayout.levelSeparation) {optionsSpecific.push("levelSeparation: " + this.constants.hierarchicalLayout.levelSeparation);} + if (this.constants.hierarchicalLayout.nodeSpacing != this.backupConstants.hierarchicalLayout.nodeSpacing) {optionsSpecific.push("nodeSpacing: " + this.constants.hierarchicalLayout.nodeSpacing);} + if (optionsSpecific.length != 0) { + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } + } + options += '}' + } + else { + options += "enabled:true}"; + } + options += '};' + } - this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity; - this.constants.physics.springLength = this.constants.physics.repulsion.springLength; - this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant; - this.constants.physics.damping = this.constants.physics.repulsion.damping; - this._loadMixin(RepulsionMixin); - } - }; + this.optionsDiv.innerHTML = options; + } /** - * Before calculating the forces, we check if we need to cluster to keep up performance and we check - * if there is more than one node. If it is just one node, we dont calculate anything. + * this is used to switch between barnesHut, repulsion and hierarchical. + * + */ + function switchConfigurations () { + var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"]; + var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value; + var tableId = "graph_" + radioButton + "_table"; + var table = document.getElementById(tableId); + table.style.display = "block"; + for (var i = 0; i < ids.length; i++) { + if (ids[i] != tableId) { + table = document.getElementById(ids[i]); + table.style.display = "none"; + } + } + this._restoreNodes(); + if (radioButton == "R") { + this.constants.hierarchicalLayout.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = false; + this.constants.physics.barnesHut.enabled = false; + } + else if (radioButton == "H") { + if (this.constants.hierarchicalLayout.enabled == false) { + this.constants.hierarchicalLayout.enabled = true; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this.constants.physics.barnesHut.enabled = false; + this.constants.smoothCurves.enabled = false; + this._setupHierarchicalLayout(); + } + } + else { + this.constants.hierarchicalLayout.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = false; + this.constants.physics.barnesHut.enabled = true; + } + this._loadSelectedForceSolver(); + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} + else {graph_toggleSmooth.style.background = "#FF8532";} + this.moving = true; + this.start(); + } + + + /** + * this generates the ranges depending on the iniital values. * - * @private + * @param id + * @param map + * @param constantsVariableName */ - exports._initializeForceCalculation = function () { - // stop calculation if there is only one node - if (this.nodeIndices.length == 1) { - this.nodes[this.nodeIndices[0]]._setForce(0, 0); + function showValueOfRange (id,map,constantsVariableName) { + var valueId = id + "_value"; + var rangeValue = document.getElementById(id).value; + + if (Array.isArray(map)) { + document.getElementById(valueId).value = map[parseInt(rangeValue)]; + this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); } else { - // if there are too many nodes on screen, we cluster without repositioning - if (this.nodeIndices.length > this.constants.clustering.clusterThreshold && this.constants.clustering.enabled == true) { - this.clusterToFit(this.constants.clustering.reduceToNodes, false); - } - - // we now start the force calculation - this._calculateForces(); + document.getElementById(valueId).value = parseInt(map) * parseFloat(rangeValue); + this._overWriteGraphConstants(constantsVariableName, parseInt(map) * parseFloat(rangeValue)); } - }; + if (constantsVariableName == "hierarchicalLayout_direction" || + constantsVariableName == "hierarchicalLayout_levelSeparation" || + constantsVariableName == "hierarchicalLayout_nodeSpacing") { + this._setupHierarchicalLayout(); + } + this.moving = true; + this.start(); + } - /** - * Calculate the external forces acting on the nodes - * Forces are caused by: edges, repulsing forces between nodes, gravity - * @private - */ - exports._calculateForces = function () { - // Gravity is required to keep separated groups from floating off - // the forces are reset to zero in this loop by using _setForce instead - // of _addForce - this._calculateGravitationalForces(); - this._calculateNodeForces(); - if (this.constants.physics.springConstant > 0) { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this._calculateSpringForcesWithSupport(); - } - else { - if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._calculateHierarchicalSpringForces(); - } - else { - this._calculateSpringForces(); - } - } - } - }; +/***/ }, +/* 61 */ +/***/ function(module, exports, __webpack_require__) { /** - * Smooth curves are created by adding invisible nodes in the center of the edges. These nodes are also - * handled in the calculateForces function. We then use a quadratic curve with the center node as control. - * This function joins the datanodes and invisible (called support) nodes into one object. - * We do this so we do not contaminate this.nodes with the support nodes. + * Calculate the forces the nodes apply on each other based on a repulsion field. + * This field is linearly approximated. * * @private */ - exports._updateCalculationNodes = function () { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this.calculationNodes = {}; - this.calculationNodeIndices = []; + exports._calculateNodeForces = function () { + var dx, dy, angle, distance, fx, fy, combinedClusterSize, + repulsingForce, node1, node2, i, j; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.calculationNodes[nodeId] = this.nodes[nodeId]; + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; + + // approximation constants + var a_base = -2 / 3; + var b = 4 / 3; + + // repulsing forces between nodes + var nodeDistance = this.constants.physics.repulsion.nodeDistance; + var minimumDistance = nodeDistance; + + // we loop from i over all but the last entree in the array + // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j + for (i = 0; i < nodeIndices.length - 1; i++) { + node1 = nodes[nodeIndices[i]]; + for (j = i + 1; j < nodeIndices.length; j++) { + node2 = nodes[nodeIndices[j]]; + combinedClusterSize = node1.clusterSize + node2.clusterSize - 2; + + dx = node2.x - node1.x; + dy = node2.y - node1.y; + distance = Math.sqrt(dx * dx + dy * dy); + + // same condition as BarnesHut, making sure nodes are never 100% overlapping. + if (distance == 0) { + distance = 0.1*Math.random(); + dx = distance; } - } - var supportNodes = this.sectors['support']['nodes']; - for (var supportNodeId in supportNodes) { - if (supportNodes.hasOwnProperty(supportNodeId)) { - if (this.edges.hasOwnProperty(supportNodes[supportNodeId].parentEdgeId)) { - this.calculationNodes[supportNodeId] = supportNodes[supportNodeId]; + + minimumDistance = (combinedClusterSize == 0) ? nodeDistance : (nodeDistance * (1 + combinedClusterSize * this.constants.clustering.distanceAmplification)); + var a = a_base / minimumDistance; + if (distance < 2 * minimumDistance) { + if (distance < 0.5 * minimumDistance) { + repulsingForce = 1.0; } else { - supportNodes[supportNodeId]._setForce(0, 0); + repulsingForce = a * distance + b; // linear approx of 1 / (1 + Math.exp((distance / minimumDistance - 1) * steepness)) } - } - } - for (var idx in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(idx)) { - this.calculationNodeIndices.push(idx); + // amplify the repulsion for clusters. + repulsingForce *= (combinedClusterSize == 0) ? 1 : 1 + combinedClusterSize * this.constants.clustering.forceAmplification; + repulsingForce = repulsingForce / Math.max(distance,0.01*minimumDistance); + + fx = dx * repulsingForce; + fy = dy * repulsingForce; + node1.fx -= fx; + node1.fy -= fy; + node2.fx += fx; + node2.fy += fy; + } } } - else { - this.calculationNodes = this.nodes; - this.calculationNodeIndices = this.nodeIndices; - } }; +/***/ }, +/* 62 */ +/***/ function(module, exports, __webpack_require__) { + /** - * this function applies the central gravity effect to keep groups from floating off + * Calculate the forces the nodes apply on eachother based on a repulsion field. + * This field is linearly approximated. * * @private */ - exports._calculateGravitationalForces = function () { - var dx, dy, distance, node, i; + exports._calculateNodeForces = function () { + var dx, dy, distance, fx, fy, + repulsingForce, node1, node2, i, j; + var nodes = this.calculationNodes; - var gravity = this.constants.physics.centralGravity; - var gravityForce = 0; + var nodeIndices = this.calculationNodeIndices; - for (i = 0; i < this.calculationNodeIndices.length; i++) { - node = nodes[this.calculationNodeIndices[i]]; - node.damping = this.constants.physics.damping; // possibly add function to alter damping properties of clusters. - // gravity does not apply when we are in a pocket sector - if (this._sector() == "default" && gravity != 0) { - dx = -node.x; - dy = -node.y; - distance = Math.sqrt(dx * dx + dy * dy); + // repulsing forces between nodes + var nodeDistance = this.constants.physics.hierarchicalRepulsion.nodeDistance; - gravityForce = (distance == 0) ? 0 : (gravity / distance); - node.fx = dx * gravityForce; - node.fy = dy * gravityForce; - } - else { - node.fx = 0; - node.fy = 0; + // we loop from i over all but the last entree in the array + // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j + for (i = 0; i < nodeIndices.length - 1; i++) { + node1 = nodes[nodeIndices[i]]; + for (j = i + 1; j < nodeIndices.length; j++) { + node2 = nodes[nodeIndices[j]]; + + // nodes only affect nodes on their level + if (node1.level == node2.level) { + + dx = node2.x - node1.x; + dy = node2.y - node1.y; + distance = Math.sqrt(dx * dx + dy * dy); + + + var steepness = 0.05; + if (distance < nodeDistance) { + repulsingForce = -Math.pow(steepness*distance,2) + Math.pow(steepness*nodeDistance,2); + } + else { + repulsingForce = 0; + } + // normalize force with + if (distance == 0) { + distance = 0.01; + } + else { + repulsingForce = repulsingForce / distance; + } + fx = dx * repulsingForce; + fy = dy * repulsingForce; + + node1.fx -= fx; + node1.fy -= fy; + node2.fx += fx; + node2.fy += fy; + } } } }; - - /** * this function calculates the effects of the springs in the case of unsmooth curves. * * @private */ - exports._calculateSpringForces = function () { + exports._calculateHierarchicalSpringForces = function () { var edgeLength, edge, edgeId; var dx, dy, fx, fy, springForce, distance; var edges = this.edges; + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; + + + for (var i = 0; i < nodeIndices.length; i++) { + var node1 = nodes[nodeIndices[i]]; + node1.springFx = 0; + node1.springFy = 0; + } + + // forces caused by the edges, modelled as springs for (edgeId in edges) { if (edges.hasOwnProperty(edgeId)) { @@ -30577,509 +31032,464 @@ return /******/ (function(modules) { // webpackBootstrap fx = dx * springForce; fy = dy * springForce; - edge.from.fx += fx; - edge.from.fy += fy; - edge.to.fx -= fx; - edge.to.fy -= fy; + + + if (edge.to.level != edge.from.level) { + edge.to.springFx -= fx; + edge.to.springFy -= fy; + edge.from.springFx += fx; + edge.from.springFy += fy; + } + else { + var factor = 0.5; + edge.to.fx -= factor*fx; + edge.to.fy -= factor*fy; + edge.from.fx += factor*fx; + edge.from.fy += factor*fy; + } } } } } - }; - - - - - /** - * This function calculates the springforces on the nodes, accounting for the support nodes. - * - * @private - */ - exports._calculateSpringForcesWithSupport = function () { - var edgeLength, edge, edgeId, combinedClusterSize; - var edges = this.edges; - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - if (edge.via != null) { - var node1 = edge.to; - var node2 = edge.via; - var node3 = edge.from; + // normalize spring forces + var springForce = 1; + var springFx, springFy; + for (i = 0; i < nodeIndices.length; i++) { + var node = nodes[nodeIndices[i]]; + springFx = Math.min(springForce,Math.max(-springForce,node.springFx)); + springFy = Math.min(springForce,Math.max(-springForce,node.springFy)); - edgeLength = edge.physics.springLength; + node.fx += springFx; + node.fy += springFy; + } - combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; + // retain energy balance + var totalFx = 0; + var totalFy = 0; + for (i = 0; i < nodeIndices.length; i++) { + var node = nodes[nodeIndices[i]]; + totalFx += node.fx; + totalFy += node.fy; + } + var correctionFx = totalFx / nodeIndices.length; + var correctionFy = totalFy / nodeIndices.length; - // this implies that the edges between big clusters are longer - edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth; - this._calculateSpringForce(node1, node2, 0.5 * edgeLength); - this._calculateSpringForce(node2, node3, 0.5 * edgeLength); - } - } - } - } + for (i = 0; i < nodeIndices.length; i++) { + var node = nodes[nodeIndices[i]]; + node.fx -= correctionFx; + node.fy -= correctionFy; } + }; +/***/ }, +/* 63 */ +/***/ function(module, exports, __webpack_require__) { /** - * This is the code actually performing the calculation for the function above. It is split out to avoid repetition. + * This function calculates the forces the nodes apply on eachother based on a gravitational model. + * The Barnes Hut method is used to speed up this N-body simulation. * - * @param node1 - * @param node2 - * @param edgeLength * @private */ - exports._calculateSpringForce = function (node1, node2, edgeLength) { - var dx, dy, fx, fy, springForce, distance; - - dx = (node1.x - node2.x); - dy = (node1.y - node2.y); - distance = Math.sqrt(dx * dx + dy * dy); - - if (distance == 0) { - distance = 0.01; - } - - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; - - fx = dx * springForce; - fy = dy * springForce; + exports._calculateNodeForces = function() { + if (this.constants.physics.barnesHut.gravitationalConstant != 0) { + var node; + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; + var nodeCount = nodeIndices.length; - node1.fx += fx; - node1.fy += fy; - node2.fx -= fx; - node2.fy -= fy; - }; + this._formBarnesHutTree(nodes,nodeIndices); + var barnesHutTree = this.barnesHutTree; - exports._cleanupPhysicsConfiguration = function() { - if (this.physicsConfiguration !== undefined) { - while (this.physicsConfiguration.hasChildNodes()) { - this.physicsConfiguration.removeChild(this.physicsConfiguration.firstChild); + // place the nodes one by one recursively + for (var i = 0; i < nodeCount; i++) { + node = nodes[nodeIndices[i]]; + if (node.options.mass > 0) { + // starting with root is irrelevant, it never passes the BarnesHut condition + this._getForceContribution(barnesHutTree.root.children.NW,node); + this._getForceContribution(barnesHutTree.root.children.NE,node); + this._getForceContribution(barnesHutTree.root.children.SW,node); + this._getForceContribution(barnesHutTree.root.children.SE,node); + } } - - this.physicsConfiguration.parentNode.removeChild(this.physicsConfiguration); - this.physicsConfiguration = undefined; } - } + }; + /** - * Load the HTML for the physics config and bind it + * This function traverses the barnesHutTree. It checks when it can approximate distant nodes with their center of mass. + * If a region contains a single node, we check if it is not itself, then we apply the force. + * + * @param parentBranch + * @param node * @private */ - exports._loadPhysicsConfiguration = function () { - if (this.physicsConfiguration === undefined) { - this.backupConstants = {}; - util.deepExtend(this.backupConstants,this.constants); - - var maxGravitational = Math.max(20000, (-1 * this.constants.physics.barnesHut.gravitationalConstant) * 10); - var maxSpring = Math.min(0.05, this.constants.physics.barnesHut.springConstant * 10) - - var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"]; - this.physicsConfiguration = document.createElement('div'); - this.physicsConfiguration.className = "PhysicsConfiguration"; - this.physicsConfiguration.innerHTML = '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
Simulation Mode:
Barnes HutRepulsionHierarchical
' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
Options:
' - this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement); - this.optionsDiv = document.createElement("div"); - this.optionsDiv.style.fontSize = "14px"; - this.optionsDiv.style.fontFamily = "verdana"; - this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement); - - var rangeElement; - rangeElement = document.getElementById('graph_BH_gc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant"); - rangeElement = document.getElementById('graph_BH_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_BH_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_BH_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_BH_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping"); - - rangeElement = document.getElementById('graph_R_nd'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance"); - rangeElement = document.getElementById('graph_R_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_R_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_R_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_R_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping"); - - rangeElement = document.getElementById('graph_H_nd'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); - rangeElement = document.getElementById('graph_H_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_H_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_H_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_H_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping"); - rangeElement = document.getElementById('graph_H_direction'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction"); - rangeElement = document.getElementById('graph_H_levsep'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation"); - rangeElement = document.getElementById('graph_H_nspac'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing"); - - var radioButton1 = document.getElementById("graph_physicsMethod1"); - var radioButton2 = document.getElementById("graph_physicsMethod2"); - var radioButton3 = document.getElementById("graph_physicsMethod3"); - radioButton2.checked = true; - if (this.constants.physics.barnesHut.enabled) { - radioButton1.checked = true; - } - if (this.constants.hierarchicalLayout.enabled) { - radioButton3.checked = true; - } + exports._getForceContribution = function(parentBranch,node) { + // we get no force contribution from an empty region + if (parentBranch.childrenCount > 0) { + var dx,dy,distance; - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - var graph_repositionNodes = document.getElementById("graph_repositionNodes"); - var graph_generateOptions = document.getElementById("graph_generateOptions"); + // get the distance from the center of mass to the node. + dx = parentBranch.centerOfMass.x - node.x; + dy = parentBranch.centerOfMass.y - node.y; + distance = Math.sqrt(dx * dx + dy * dy); - graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this); - graph_repositionNodes.onclick = graphRepositionNodes.bind(this); - graph_generateOptions.onclick = graphGenerateOptions.bind(this); - if (this.constants.smoothCurves == true && this.constants.dynamicSmoothCurves == false) { - graph_toggleSmooth.style.background = "#A4FF56"; + // BarnesHut condition + // original condition : s/d < thetaInverted = passed === d/s > 1/theta = passed + // calcSize = 1/s --> d * 1/s > 1/theta = passed + if (distance * parentBranch.calcSize > this.constants.physics.barnesHut.thetaInverted) { + // duplicate code to reduce function calls to speed up program + if (distance == 0) { + distance = 0.1*Math.random(); + dx = distance; + } + var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.options.mass / (distance * distance * distance); + var fx = dx * gravityForce; + var fy = dy * gravityForce; + node.fx += fx; + node.fy += fy; } else { - graph_toggleSmooth.style.background = "#FF8532"; + // Did not pass the condition, go into children if available + if (parentBranch.childrenCount == 4) { + this._getForceContribution(parentBranch.children.NW,node); + this._getForceContribution(parentBranch.children.NE,node); + this._getForceContribution(parentBranch.children.SW,node); + this._getForceContribution(parentBranch.children.SE,node); + } + else { // parentBranch must have only one node, if it was empty we wouldnt be here + if (parentBranch.children.data.id != node.id) { // if it is not self + // duplicate code to reduce function calls to speed up program + if (distance == 0) { + distance = 0.5*Math.random(); + dx = distance; + } + var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.options.mass / (distance * distance * distance); + var fx = dx * gravityForce; + var fy = dy * gravityForce; + node.fx += fx; + node.fy += fy; + } + } } - - - switchConfigurations.apply(this); - - radioButton1.onchange = switchConfigurations.bind(this); - radioButton2.onchange = switchConfigurations.bind(this); - radioButton3.onchange = switchConfigurations.bind(this); } }; /** - * This overwrites the this.constants. + * This function constructs the barnesHut tree recursively. It creates the root, splits it and starts placing the nodes. * - * @param constantsVariableName - * @param value + * @param nodes + * @param nodeIndices * @private */ - exports._overWriteGraphConstants = function (constantsVariableName, value) { - var nameArray = constantsVariableName.split("_"); - if (nameArray.length == 1) { - this.constants[nameArray[0]] = value; - } - else if (nameArray.length == 2) { - this.constants[nameArray[0]][nameArray[1]] = value; + exports._formBarnesHutTree = function(nodes,nodeIndices) { + var node; + var nodeCount = nodeIndices.length; + + var minX = Number.MAX_VALUE, + minY = Number.MAX_VALUE, + maxX =-Number.MAX_VALUE, + maxY =-Number.MAX_VALUE; + + // get the range of the nodes + for (var i = 0; i < nodeCount; i++) { + var x = nodes[nodeIndices[i]].x; + var y = nodes[nodeIndices[i]].y; + if (nodes[nodeIndices[i]].options.mass > 0) { + if (x < minX) { minX = x; } + if (x > maxX) { maxX = x; } + if (y < minY) { minY = y; } + if (y > maxY) { maxY = y; } + } } - else if (nameArray.length == 3) { - this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value; + // make the range a square + var sizeDiff = Math.abs(maxX - minX) - Math.abs(maxY - minY); // difference between X and Y + if (sizeDiff > 0) {minY -= 0.5 * sizeDiff; maxY += 0.5 * sizeDiff;} // xSize > ySize + else {minX += 0.5 * sizeDiff; maxX -= 0.5 * sizeDiff;} // xSize < ySize + + + var minimumTreeSize = 1e-5; + var rootSize = Math.max(minimumTreeSize,Math.abs(maxX - minX)); + var halfRootSize = 0.5 * rootSize; + var centerX = 0.5 * (minX + maxX), centerY = 0.5 * (minY + maxY); + + // construct the barnesHutTree + var barnesHutTree = { + root:{ + centerOfMass: {x:0, y:0}, + mass:0, + range: { + minX: centerX-halfRootSize,maxX:centerX+halfRootSize, + minY: centerY-halfRootSize,maxY:centerY+halfRootSize + }, + size: rootSize, + calcSize: 1 / rootSize, + children: { data:null}, + maxWidth: 0, + level: 0, + childrenCount: 4 + } + }; + this._splitBranch(barnesHutTree.root); + + // place the nodes one by one recursively + for (i = 0; i < nodeCount; i++) { + node = nodes[nodeIndices[i]]; + if (node.options.mass > 0) { + this._placeInTree(barnesHutTree.root,node); + } } + + // make global + this.barnesHutTree = barnesHutTree }; /** - * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. + * this updates the mass of a branch. this is increased by adding a node. + * + * @param parentBranch + * @param node + * @private */ - function graphToggleSmoothCurves () { - this.constants.smoothCurves.enabled = !this.constants.smoothCurves.enabled; - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} - else {graph_toggleSmooth.style.background = "#FF8532";} + exports._updateBranchMass = function(parentBranch, node) { + var totalMass = parentBranch.mass + node.options.mass; + var totalMassInv = 1/totalMass; + + parentBranch.centerOfMass.x = parentBranch.centerOfMass.x * parentBranch.mass + node.x * node.options.mass; + parentBranch.centerOfMass.x *= totalMassInv; + + parentBranch.centerOfMass.y = parentBranch.centerOfMass.y * parentBranch.mass + node.y * node.options.mass; + parentBranch.centerOfMass.y *= totalMassInv; + + parentBranch.mass = totalMass; + var biggestSize = Math.max(Math.max(node.height,node.radius),node.width); + parentBranch.maxWidth = (parentBranch.maxWidth < biggestSize) ? biggestSize : parentBranch.maxWidth; + + }; - this._configureSmoothCurves(false); - } /** - * this function is used to scramble the nodes + * determine in which branch the node will be placed. * + * @param parentBranch + * @param node + * @param skipMassUpdate + * @private */ - function graphRepositionNodes () { - for (var nodeId in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(nodeId)) { - this.calculationNodes[nodeId].vx = 0; this.calculationNodes[nodeId].vy = 0; - this.calculationNodes[nodeId].fx = 0; this.calculationNodes[nodeId].fy = 0; - } - } - if (this.constants.hierarchicalLayout.enabled == true) { - this._setupHierarchicalLayout(); - showValueOfRange.call(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); - showValueOfRange.call(this, 'graph_H_cg', 1, "physics_centralGravity"); - showValueOfRange.call(this, 'graph_H_sc', 1, "physics_springConstant"); - showValueOfRange.call(this, 'graph_H_sl', 1, "physics_springLength"); - showValueOfRange.call(this, 'graph_H_damp', 1, "physics_damping"); - } - else { - this.repositionNodes(); + exports._placeInTree = function(parentBranch,node,skipMassUpdate) { + if (skipMassUpdate != true || skipMassUpdate === undefined) { + // update the mass of the branch. + this._updateBranchMass(parentBranch,node); } - this.moving = true; - this.start(); - } - /** - * this is used to generate an options file from the playing with physics system. - */ - function graphGenerateOptions () { - var options = "No options are required, default values used."; - var optionsSpecific = []; - var radioButton1 = document.getElementById("graph_physicsMethod1"); - var radioButton2 = document.getElementById("graph_physicsMethod2"); - if (radioButton1.checked == true) { - if (this.constants.physics.barnesHut.gravitationalConstant != this.backupConstants.physics.barnesHut.gravitationalConstant) {optionsSpecific.push("gravitationalConstant: " + this.constants.physics.barnesHut.gravitationalConstant);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.barnesHut.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.barnesHut.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options = "var options = {"; - options += "physics: {barnesHut: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } - } - options += '}}' - } - if (this.constants.smoothCurves.enabled != this.backupConstants.smoothCurves.enabled) { - if (optionsSpecific.length == 0) {options = "var options = {";} - else {options += ", "} - options += "smoothCurves: " + this.constants.smoothCurves.enabled; + if (parentBranch.children.NW.range.maxX > node.x) { // in NW or SW + if (parentBranch.children.NW.range.maxY > node.y) { // in NW + this._placeInRegion(parentBranch,node,"NW"); } - if (options != "No options are required, default values used.") { - options += '};' + else { // in SW + this._placeInRegion(parentBranch,node,"SW"); } } - else if (radioButton2.checked == true) { - options = "var options = {"; - options += "physics: {barnesHut: {enabled: false}"; - if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.repulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options += ", repulsion: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } - } - options += '}}' + else { // in NE or SE + if (parentBranch.children.NW.range.maxY > node.y) { // in NE + this._placeInRegion(parentBranch,node,"NE"); } - if (optionsSpecific.length == 0) {options += "}"} - if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { - options += ", smoothCurves: " + this.constants.smoothCurves; + else { // in SE + this._placeInRegion(parentBranch,node,"SE"); } - options += '};' } - else { - options = "var options = {"; - if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options += "physics: {hierarchicalRepulsion: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", "; - } + }; + + + /** + * actually place the node in a region (or branch) + * + * @param parentBranch + * @param node + * @param region + * @private + */ + exports._placeInRegion = function(parentBranch,node,region) { + switch (parentBranch.children[region].childrenCount) { + case 0: // place node here + parentBranch.children[region].children.data = node; + parentBranch.children[region].childrenCount = 1; + this._updateBranchMass(parentBranch.children[region],node); + break; + case 1: // convert into children + // if there are two nodes exactly overlapping (on init, on opening of cluster etc.) + // we move one node a pixel and we do not put it in the tree. + if (parentBranch.children[region].children.data.x == node.x && + parentBranch.children[region].children.data.y == node.y) { + node.x += Math.random(); + node.y += Math.random(); } - options += '}},'; - } - options += 'hierarchicalLayout: {'; - optionsSpecific = []; - if (this.constants.hierarchicalLayout.direction != this.backupConstants.hierarchicalLayout.direction) {optionsSpecific.push("direction: " + this.constants.hierarchicalLayout.direction);} - if (Math.abs(this.constants.hierarchicalLayout.levelSeparation) != this.backupConstants.hierarchicalLayout.levelSeparation) {optionsSpecific.push("levelSeparation: " + this.constants.hierarchicalLayout.levelSeparation);} - if (this.constants.hierarchicalLayout.nodeSpacing != this.backupConstants.hierarchicalLayout.nodeSpacing) {optionsSpecific.push("nodeSpacing: " + this.constants.hierarchicalLayout.nodeSpacing);} - if (optionsSpecific.length != 0) { - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } + else { + this._splitBranch(parentBranch.children[region]); + this._placeInTree(parentBranch.children[region],node); } - options += '}' - } - else { - options += "enabled:true}"; - } - options += '};' + break; + case 4: // place in branch + this._placeInTree(parentBranch.children[region],node); + break; } + }; - this.optionsDiv.innerHTML = options; - } - /** - * this is used to switch between barnesHut, repulsion and hierarchical. + * this function splits a branch into 4 sub branches. If the branch contained a node, we place it in the subbranch + * after the split is complete. * + * @param parentBranch + * @private */ - function switchConfigurations () { - var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"]; - var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value; - var tableId = "graph_" + radioButton + "_table"; - var table = document.getElementById(tableId); - table.style.display = "block"; - for (var i = 0; i < ids.length; i++) { - if (ids[i] != tableId) { - table = document.getElementById(ids[i]); - table.style.display = "none"; - } - } - this._restoreNodes(); - if (radioButton == "R") { - this.constants.hierarchicalLayout.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = false; - this.constants.physics.barnesHut.enabled = false; + exports._splitBranch = function(parentBranch) { + // if the branch is shaded with a node, replace the node in the new subset. + var containedNode = null; + if (parentBranch.childrenCount == 1) { + containedNode = parentBranch.children.data; + parentBranch.mass = 0; parentBranch.centerOfMass.x = 0; parentBranch.centerOfMass.y = 0; } - else if (radioButton == "H") { - if (this.constants.hierarchicalLayout.enabled == false) { - this.constants.hierarchicalLayout.enabled = true; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this.constants.physics.barnesHut.enabled = false; - this.constants.smoothCurves.enabled = false; - this._setupHierarchicalLayout(); - } + parentBranch.childrenCount = 4; + parentBranch.children.data = null; + this._insertRegion(parentBranch,"NW"); + this._insertRegion(parentBranch,"NE"); + this._insertRegion(parentBranch,"SW"); + this._insertRegion(parentBranch,"SE"); + + if (containedNode != null) { + this._placeInTree(parentBranch,containedNode); } - else { - this.constants.hierarchicalLayout.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = false; - this.constants.physics.barnesHut.enabled = true; + }; + + + /** + * This function subdivides the region into four new segments. + * Specifically, this inserts a single new segment. + * It fills the children section of the parentBranch + * + * @param parentBranch + * @param region + * @param parentRange + * @private + */ + exports._insertRegion = function(parentBranch, region) { + var minX,maxX,minY,maxY; + var childSize = 0.5 * parentBranch.size; + switch (region) { + case "NW": + minX = parentBranch.range.minX; + maxX = parentBranch.range.minX + childSize; + minY = parentBranch.range.minY; + maxY = parentBranch.range.minY + childSize; + break; + case "NE": + minX = parentBranch.range.minX + childSize; + maxX = parentBranch.range.maxX; + minY = parentBranch.range.minY; + maxY = parentBranch.range.minY + childSize; + break; + case "SW": + minX = parentBranch.range.minX; + maxX = parentBranch.range.minX + childSize; + minY = parentBranch.range.minY + childSize; + maxY = parentBranch.range.maxY; + break; + case "SE": + minX = parentBranch.range.minX + childSize; + maxX = parentBranch.range.maxX; + minY = parentBranch.range.minY + childSize; + maxY = parentBranch.range.maxY; + break; } - this._loadSelectedForceSolver(); - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} - else {graph_toggleSmooth.style.background = "#FF8532";} - this.moving = true; - this.start(); - } + + + parentBranch.children[region] = { + centerOfMass:{x:0,y:0}, + mass:0, + range:{minX:minX,maxX:maxX,minY:minY,maxY:maxY}, + size: 0.5 * parentBranch.size, + calcSize: 2 * parentBranch.calcSize, + children: {data:null}, + maxWidth: 0, + level: parentBranch.level+1, + childrenCount: 0 + }; + }; /** - * this generates the ranges depending on the iniital values. + * This function is for debugging purposed, it draws the tree. * - * @param id - * @param map - * @param constantsVariableName + * @param ctx + * @param color + * @private */ - function showValueOfRange (id,map,constantsVariableName) { - var valueId = id + "_value"; - var rangeValue = document.getElementById(id).value; + exports._drawTree = function(ctx,color) { + if (this.barnesHutTree !== undefined) { - if (Array.isArray(map)) { - document.getElementById(valueId).value = map[parseInt(rangeValue)]; - this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); + ctx.lineWidth = 1; + + this._drawBranch(this.barnesHutTree.root,ctx,color); } - else { - document.getElementById(valueId).value = parseInt(map) * parseFloat(rangeValue); - this._overWriteGraphConstants(constantsVariableName, parseInt(map) * parseFloat(rangeValue)); + }; + + + /** + * This function is for debugging purposes. It draws the branches recursively. + * + * @param branch + * @param ctx + * @param color + * @private + */ + exports._drawBranch = function(branch,ctx,color) { + if (color === undefined) { + color = "#FF0000"; } - if (constantsVariableName == "hierarchicalLayout_direction" || - constantsVariableName == "hierarchicalLayout_levelSeparation" || - constantsVariableName == "hierarchicalLayout_nodeSpacing") { - this._setupHierarchicalLayout(); + if (branch.childrenCount == 4) { + this._drawBranch(branch.children.NW,ctx); + this._drawBranch(branch.children.NE,ctx); + this._drawBranch(branch.children.SE,ctx); + this._drawBranch(branch.children.SW,ctx); } - this.moving = true; - this.start(); - } + ctx.strokeStyle = color; + ctx.beginPath(); + ctx.moveTo(branch.range.minX,branch.range.minY); + ctx.lineTo(branch.range.maxX,branch.range.minY); + ctx.stroke(); + + ctx.beginPath(); + ctx.moveTo(branch.range.maxX,branch.range.minY); + ctx.lineTo(branch.range.maxX,branch.range.maxY); + ctx.stroke(); + + ctx.beginPath(); + ctx.moveTo(branch.range.maxX,branch.range.maxY); + ctx.lineTo(branch.range.minX,branch.range.maxY); + ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(branch.range.minX,branch.range.maxY); + ctx.lineTo(branch.range.minX,branch.range.minY); + ctx.stroke(); + /* + if (branch.mass > 0) { + ctx.circle(branch.centerOfMass.x, branch.centerOfMass.y, 3*branch.mass); + ctx.stroke(); + } + */ + }; /***/ }, -/* 61 */ +/* 64 */ /***/ function(module, exports, __webpack_require__) { /** @@ -32214,11 +32624,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 62 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Node = __webpack_require__(40); + var Node = __webpack_require__(56); /** * Creation of the SectorMixin var. @@ -32773,10 +33183,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 63 */ +/* 66 */ /***/ function(module, exports, __webpack_require__) { - var Node = __webpack_require__(40); + var Node = __webpack_require__(56); /** * This function can be called from the _doInAllSectors function @@ -33487,13 +33897,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 64 */ +/* 67 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Node = __webpack_require__(40); - var Edge = __webpack_require__(37); - var Hammer = __webpack_require__(45); + var Node = __webpack_require__(56); + var Edge = __webpack_require__(57); + var Hammer = __webpack_require__(19); /** * clears the toolbar div element of children @@ -34210,11 +34620,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 65 */ +/* 68 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Hammer = __webpack_require__(45); + var Hammer = __webpack_require__(19); exports._cleanNavigation = function() { // clean hammer bindings @@ -34351,528 +34761,40 @@ return /******/ (function(modules) { // webpackBootstrap * Zoom out * @private */ - exports._zoomOut = function(event) { - this.zoomIncrement = -this.constants.keyboard.speed.zoom; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; - - - /** - * Stop zooming and unhighlight the zoom controls - * @private - */ - exports._stopZoom = function(event) { - this.zoomIncrement = 0; - event && event.preventDefault(); - }; - - - /** - * Stop moving in the Y direction and unHighlight the up and down - * @private - */ - exports._yStopMoving = function(event) { - this.yIncrement = 0; - event && event.preventDefault(); - }; - - - /** - * Stop moving in the X direction and unHighlight left and right. - * @private - */ - exports._xStopMoving = function(event) { - this.xIncrement = 0; - event && event.preventDefault(); - }; - - -/***/ }, -/* 66 */ -/***/ function(module, exports, __webpack_require__) { - - exports._resetLevels = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.preassignedLevel == false) { - node.level = -1; - node.hierarchyEnumerated = false; - } - } - } - }; - - /** - * This is the main function to layout the nodes in a hierarchical way. - * It checks if the node details are supplied correctly - * - * @private - */ - exports._setupHierarchicalLayout = function() { - if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { - // get the size of the largest hubs and check if the user has defined a level for a node. - var hubsize = 0; - var node, nodeId; - var definedLevel = false; - var undefinedLevel = false; - - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level != -1) { - definedLevel = true; - } - else { - undefinedLevel = true; - } - if (hubsize < node.edges.length) { - hubsize = node.edges.length; - } - } - } - - // if the user defined some levels but not all, alert and run without hierarchical layout - if (undefinedLevel == true && definedLevel == true) { - throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); - this.zoomExtent({duration:0},true,this.constants.clustering.enabled); - if (!this.constants.clustering.enabled) { - this.start(); - } - } - else { - // setup the system to use hierarchical method. - this._changeConstants(); - - // define levels if undefined by the users. Based on hubsize - if (undefinedLevel == true) { - if (this.constants.hierarchicalLayout.layout == "hubsize") { - this._determineLevels(hubsize); - } - else { - this._determineLevelsDirected(false); - } - - } - // check the distribution of the nodes per level. - var distribution = this._getDistribution(); - - // place the nodes on the canvas. This also stablilizes the system. - this._placeNodesByHierarchy(distribution); - - // start the simulation. - this.start(); - } - } - }; - - - /** - * This function places the nodes on the canvas based on the hierarchial distribution. - * - * @param {Object} distribution | obtained by the function this._getDistribution() - * @private - */ - exports._placeNodesByHierarchy = function(distribution) { - var nodeId, node; - - // start placing all the level 0 nodes first. Then recursively position their branches. - for (var level in distribution) { - if (distribution.hasOwnProperty(level)) { - - for (nodeId in distribution[level].nodes) { - if (distribution[level].nodes.hasOwnProperty(nodeId)) { - node = distribution[level].nodes[nodeId]; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (node.xFixed) { - node.x = distribution[level].minPos; - node.xFixed = false; - - distribution[level].minPos += distribution[level].nodeSpacing; - } - } - else { - if (node.yFixed) { - node.y = distribution[level].minPos; - node.yFixed = false; - - distribution[level].minPos += distribution[level].nodeSpacing; - } - } - this._placeBranchNodes(node.edges,node.id,distribution,node.level); - } - } - } - } - - // stabilize the system after positioning. This function calls zoomExtent. - this._stabilize(); - }; - - - /** - * This function get the distribution of levels based on hubsize - * - * @returns {Object} - * @private - */ - exports._getDistribution = function() { - var distribution = {}; - var nodeId, node, level; - - // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. - // the fix of X is removed after the x value has been set. - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.xFixed = true; - node.yFixed = true; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - else { - node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - if (distribution[node.level] === undefined) { - distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; - } - distribution[node.level].amount += 1; - distribution[node.level].nodes[nodeId] = node; - } - } - - // determine the largest amount of nodes of all levels - var maxCount = 0; - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - if (maxCount < distribution[level].amount) { - maxCount = distribution[level].amount; - } - } - } - - // set the initial position and spacing of each nodes accordingly - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; - distribution[level].nodeSpacing /= (distribution[level].amount + 1); - distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); - } - } - - return distribution; - }; - - - /** - * this function allocates nodes in levels based on the recursive branching from the largest hubs. - * - * @param hubsize - * @private - */ - exports._determineLevels = function(hubsize) { - var nodeId, node; - - // determine hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.edges.length == hubsize) { - node.level = 0; - } - } - } - - // branch from hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level == 0) { - this._setLevel(1,node.edges,node.id); - } - } - } - }; - - - - /** - * this function allocates nodes in levels based on the direction of the edges - * - * @param hubsize - * @private - */ - exports._determineLevelsDirected = function() { - var nodeId, node, firstNode; - var minLevel = 10000; - - // set first node to source - firstNode = this.nodes[this.nodeIndices[0]]; - firstNode.level = minLevel; - this._setLevelDirected(minLevel,firstNode.edges,firstNode.id); - - // get the minimum level - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - minLevel = node.level < minLevel ? node.level : minLevel; - } - } - - // subtract the minimum from the set so we have a range starting from 0 - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.level -= minLevel; - } - } - }; - - - /** - * Since hierarchical layout does not support: - * - smooth curves (based on the physics), - * - clustering (based on dynamic node counts) - * - * We disable both features so there will be no problems. - * - * @private - */ - exports._changeConstants = function() { - this.constants.clustering.enabled = false; - this.constants.physics.barnesHut.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this._loadSelectedForceSolver(); - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.dynamic = false; - } - this._configureSmoothCurves(); - - var config = this.constants.hierarchicalLayout; - config.levelSeparation = Math.abs(config.levelSeparation); - if (config.direction == "RL" || config.direction == "DU") { - config.levelSeparation *= -1; - } - - if (config.direction == "RL" || config.direction == "LR") { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "vertical"; - } - } - else { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "horizontal"; - } - } - }; - - - /** - * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes - * on a X position that ensures there will be no overlap. - * - * @param edges - * @param parentId - * @param distribution - * @param parentLevel - * @private - */ - exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } - - // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. - var nodeMoved = false; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (childNode.xFixed && childNode.level > parentLevel) { - childNode.xFixed = false; - childNode.x = distribution[childNode.level].minPos; - nodeMoved = true; - } - } - else { - if (childNode.yFixed && childNode.level > parentLevel) { - childNode.yFixed = false; - childNode.y = distribution[childNode.level].minPos; - nodeMoved = true; - } - } - - if (nodeMoved == true) { - distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; - if (childNode.edges.length > 1) { - this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); - } - } - } - }; - - - /** - * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. - * - * @param level - * @param edges - * @param parentId - * @private - */ - exports._setLevel = function(level, edges, parentId) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } - if (childNode.level == -1 || childNode.level > level) { - childNode.level = level; - if (childNode.edges.length > 1) { - this._setLevel(level+1, childNode.edges, childNode.id); - } - } - } - }; - - - /** - * this function is called recursively to enumerate the branched of the first node and give each node a level based on edge direction - * - * @param level - * @param edges - * @param parentId - * @private - */ - exports._setLevelDirected = function(level, edges, parentId) { - this.nodes[parentId].hierarchyEnumerated = true; - var childNode, direction; - for (var i = 0; i < edges.length; i++) { - direction = 1; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - direction = -1; - } - else { - childNode = edges[i].to; - } - if (childNode.level == -1) { - childNode.level = level + direction; - } - } - - for (var i = 0; i < edges.length; i++) { - if (edges[i].toId == parentId) {childNode = edges[i].from;} - else {childNode = edges[i].to;} - - if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { - this._setLevelDirected(childNode.level, childNode.edges, childNode.id); - } - } - }; - - - /** - * Unfix nodes - * - * @private - */ - exports._restoreNodes = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.nodes[nodeId].xFixed = false; - this.nodes[nodeId].yFixed = false; - } - } - }; - - -/***/ }, -/* 67 */ -/***/ function(module, exports, __webpack_require__) { - - function webpackContext(req) { - throw new Error("Cannot find module '" + req + "'."); - } - webpackContext.keys = function() { return []; }; - webpackContext.resolve = webpackContext; - module.exports = webpackContext; - webpackContext.id = 67; - - -/***/ }, -/* 68 */ -/***/ function(module, exports, __webpack_require__) { - - /** - * Calculate the forces the nodes apply on each other based on a repulsion field. - * This field is linearly approximated. - * - * @private - */ - exports._calculateNodeForces = function () { - var dx, dy, angle, distance, fx, fy, combinedClusterSize, - repulsingForce, node1, node2, i, j; - - var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; - - // approximation constants - var a_base = -2 / 3; - var b = 4 / 3; - - // repulsing forces between nodes - var nodeDistance = this.constants.physics.repulsion.nodeDistance; - var minimumDistance = nodeDistance; - - // we loop from i over all but the last entree in the array - // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j - for (i = 0; i < nodeIndices.length - 1; i++) { - node1 = nodes[nodeIndices[i]]; - for (j = i + 1; j < nodeIndices.length; j++) { - node2 = nodes[nodeIndices[j]]; - combinedClusterSize = node1.clusterSize + node2.clusterSize - 2; + exports._zoomOut = function(event) { + this.zoomIncrement = -this.constants.keyboard.speed.zoom; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - dx = node2.x - node1.x; - dy = node2.y - node1.y; - distance = Math.sqrt(dx * dx + dy * dy); - // same condition as BarnesHut, making sure nodes are never 100% overlapping. - if (distance == 0) { - distance = 0.1*Math.random(); - dx = distance; - } + /** + * Stop zooming and unhighlight the zoom controls + * @private + */ + exports._stopZoom = function(event) { + this.zoomIncrement = 0; + event && event.preventDefault(); + }; - minimumDistance = (combinedClusterSize == 0) ? nodeDistance : (nodeDistance * (1 + combinedClusterSize * this.constants.clustering.distanceAmplification)); - var a = a_base / minimumDistance; - if (distance < 2 * minimumDistance) { - if (distance < 0.5 * minimumDistance) { - repulsingForce = 1.0; - } - else { - repulsingForce = a * distance + b; // linear approx of 1 / (1 + Math.exp((distance / minimumDistance - 1) * steepness)) - } - // amplify the repulsion for clusters. - repulsingForce *= (combinedClusterSize == 0) ? 1 : 1 + combinedClusterSize * this.constants.clustering.forceAmplification; - repulsingForce = repulsingForce / Math.max(distance,0.01*minimumDistance); + /** + * Stop moving in the Y direction and unHighlight the up and down + * @private + */ + exports._yStopMoving = function(event) { + this.yIncrement = 0; + event && event.preventDefault(); + }; - fx = dx * repulsingForce; - fy = dy * repulsingForce; - node1.fx -= fx; - node1.fy -= fy; - node2.fx += fx; - node2.fy += fy; - } - } - } + /** + * Stop moving in the X direction and unHighlight left and right. + * @private + */ + exports._xStopMoving = function(event) { + this.xIncrement = 0; + event && event.preventDefault(); }; @@ -34880,579 +34802,676 @@ return /******/ (function(modules) { // webpackBootstrap /* 69 */ /***/ function(module, exports, __webpack_require__) { + exports._resetLevels = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.preassignedLevel == false) { + node.level = -1; + node.hierarchyEnumerated = false; + } + } + } + }; + /** - * Calculate the forces the nodes apply on eachother based on a repulsion field. - * This field is linearly approximated. + * This is the main function to layout the nodes in a hierarchical way. + * It checks if the node details are supplied correctly * * @private */ - exports._calculateNodeForces = function () { - var dx, dy, distance, fx, fy, - repulsingForce, node1, node2, i, j; - - var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; - - // repulsing forces between nodes - var nodeDistance = this.constants.physics.hierarchicalRepulsion.nodeDistance; - - // we loop from i over all but the last entree in the array - // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j - for (i = 0; i < nodeIndices.length - 1; i++) { - node1 = nodes[nodeIndices[i]]; - for (j = i + 1; j < nodeIndices.length; j++) { - node2 = nodes[nodeIndices[j]]; - - // nodes only affect nodes on their level - if (node1.level == node2.level) { + exports._setupHierarchicalLayout = function() { + if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { + // get the size of the largest hubs and check if the user has defined a level for a node. + var hubsize = 0; + var node, nodeId; + var definedLevel = false; + var undefinedLevel = false; - dx = node2.x - node1.x; - dy = node2.y - node1.y; - distance = Math.sqrt(dx * dx + dy * dy); + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level != -1) { + definedLevel = true; + } + else { + undefinedLevel = true; + } + if (hubsize < node.edges.length) { + hubsize = node.edges.length; + } + } + } + // if the user defined some levels but not all, alert and run without hierarchical layout + if (undefinedLevel == true && definedLevel == true) { + throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); + this.zoomExtent({duration:0},true,this.constants.clustering.enabled); + if (!this.constants.clustering.enabled) { + this.start(); + } + } + else { + // setup the system to use hierarchical method. + this._changeConstants(); - var steepness = 0.05; - if (distance < nodeDistance) { - repulsingForce = -Math.pow(steepness*distance,2) + Math.pow(steepness*nodeDistance,2); + // define levels if undefined by the users. Based on hubsize + if (undefinedLevel == true) { + if (this.constants.hierarchicalLayout.layout == "hubsize") { + this._determineLevels(hubsize); } else { - repulsingForce = 0; + this._determineLevelsDirected(false); } - // normalize force with - if (distance == 0) { - distance = 0.01; - } - else { - repulsingForce = repulsingForce / distance; - } - fx = dx * repulsingForce; - fy = dy * repulsingForce; - node1.fx -= fx; - node1.fy -= fy; - node2.fx += fx; - node2.fy += fy; } + // check the distribution of the nodes per level. + var distribution = this._getDistribution(); + + // place the nodes on the canvas. This also stablilizes the system. + this._placeNodesByHierarchy(distribution); + + // start the simulation. + this.start(); } } }; /** - * this function calculates the effects of the springs in the case of unsmooth curves. + * This function places the nodes on the canvas based on the hierarchial distribution. * + * @param {Object} distribution | obtained by the function this._getDistribution() * @private */ - exports._calculateHierarchicalSpringForces = function () { - var edgeLength, edge, edgeId; - var dx, dy, fx, fy, springForce, distance; - var edges = this.edges; - - var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; - - - for (var i = 0; i < nodeIndices.length; i++) { - var node1 = nodes[nodeIndices[i]]; - node1.springFx = 0; - node1.springFy = 0; - } - - - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - edgeLength = edge.physics.springLength; - // this implies that the edges between big clusters are longer - edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; - - dx = (edge.from.x - edge.to.x); - dy = (edge.from.y - edge.to.y); - distance = Math.sqrt(dx * dx + dy * dy); - - if (distance == 0) { - distance = 0.01; - } - - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; - - fx = dx * springForce; - fy = dy * springForce; + exports._placeNodesByHierarchy = function(distribution) { + var nodeId, node; + // start placing all the level 0 nodes first. Then recursively position their branches. + for (var level in distribution) { + if (distribution.hasOwnProperty(level)) { + for (nodeId in distribution[level].nodes) { + if (distribution[level].nodes.hasOwnProperty(nodeId)) { + node = distribution[level].nodes[nodeId]; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (node.xFixed) { + node.x = distribution[level].minPos; + node.xFixed = false; - if (edge.to.level != edge.from.level) { - edge.to.springFx -= fx; - edge.to.springFy -= fy; - edge.from.springFx += fx; - edge.from.springFy += fy; + distribution[level].minPos += distribution[level].nodeSpacing; + } } else { - var factor = 0.5; - edge.to.fx -= factor*fx; - edge.to.fy -= factor*fy; - edge.from.fx += factor*fx; - edge.from.fy += factor*fy; + if (node.yFixed) { + node.y = distribution[level].minPos; + node.yFixed = false; + + distribution[level].minPos += distribution[level].nodeSpacing; + } } + this._placeBranchNodes(node.edges,node.id,distribution,node.level); } } } } - // normalize spring forces - var springForce = 1; - var springFx, springFy; - for (i = 0; i < nodeIndices.length; i++) { - var node = nodes[nodeIndices[i]]; - springFx = Math.min(springForce,Math.max(-springForce,node.springFx)); - springFy = Math.min(springForce,Math.max(-springForce,node.springFy)); - - node.fx += springFx; - node.fy += springFy; - } - - // retain energy balance - var totalFx = 0; - var totalFy = 0; - for (i = 0; i < nodeIndices.length; i++) { - var node = nodes[nodeIndices[i]]; - totalFx += node.fx; - totalFy += node.fy; - } - var correctionFx = totalFx / nodeIndices.length; - var correctionFy = totalFy / nodeIndices.length; - - for (i = 0; i < nodeIndices.length; i++) { - var node = nodes[nodeIndices[i]]; - node.fx -= correctionFx; - node.fy -= correctionFy; - } - + // stabilize the system after positioning. This function calls zoomExtent. + this._stabilize(); }; -/***/ }, -/* 70 */ -/***/ function(module, exports, __webpack_require__) { /** - * This function calculates the forces the nodes apply on eachother based on a gravitational model. - * The Barnes Hut method is used to speed up this N-body simulation. + * This function get the distribution of levels based on hubsize * + * @returns {Object} * @private */ - exports._calculateNodeForces = function() { - if (this.constants.physics.barnesHut.gravitationalConstant != 0) { - var node; - var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; - var nodeCount = nodeIndices.length; - - this._formBarnesHutTree(nodes,nodeIndices); + exports._getDistribution = function() { + var distribution = {}; + var nodeId, node, level; - var barnesHutTree = this.barnesHutTree; + // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. + // the fix of X is removed after the x value has been set. + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.xFixed = true; + node.yFixed = true; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + else { + node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + if (distribution[node.level] === undefined) { + distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; + } + distribution[node.level].amount += 1; + distribution[node.level].nodes[nodeId] = node; + } + } - // place the nodes one by one recursively - for (var i = 0; i < nodeCount; i++) { - node = nodes[nodeIndices[i]]; - if (node.options.mass > 0) { - // starting with root is irrelevant, it never passes the BarnesHut condition - this._getForceContribution(barnesHutTree.root.children.NW,node); - this._getForceContribution(barnesHutTree.root.children.NE,node); - this._getForceContribution(barnesHutTree.root.children.SW,node); - this._getForceContribution(barnesHutTree.root.children.SE,node); + // determine the largest amount of nodes of all levels + var maxCount = 0; + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + if (maxCount < distribution[level].amount) { + maxCount = distribution[level].amount; } } } + + // set the initial position and spacing of each nodes accordingly + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; + distribution[level].nodeSpacing /= (distribution[level].amount + 1); + distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); + } + } + + return distribution; }; /** - * This function traverses the barnesHutTree. It checks when it can approximate distant nodes with their center of mass. - * If a region contains a single node, we check if it is not itself, then we apply the force. + * this function allocates nodes in levels based on the recursive branching from the largest hubs. * - * @param parentBranch - * @param node + * @param hubsize * @private */ - exports._getForceContribution = function(parentBranch,node) { - // we get no force contribution from an empty region - if (parentBranch.childrenCount > 0) { - var dx,dy,distance; - - // get the distance from the center of mass to the node. - dx = parentBranch.centerOfMass.x - node.x; - dy = parentBranch.centerOfMass.y - node.y; - distance = Math.sqrt(dx * dx + dy * dy); + exports._determineLevels = function(hubsize) { + var nodeId, node; - // BarnesHut condition - // original condition : s/d < thetaInverted = passed === d/s > 1/theta = passed - // calcSize = 1/s --> d * 1/s > 1/theta = passed - if (distance * parentBranch.calcSize > this.constants.physics.barnesHut.thetaInverted) { - // duplicate code to reduce function calls to speed up program - if (distance == 0) { - distance = 0.1*Math.random(); - dx = distance; + // determine hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.edges.length == hubsize) { + node.level = 0; } - var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.options.mass / (distance * distance * distance); - var fx = dx * gravityForce; - var fy = dy * gravityForce; - node.fx += fx; - node.fy += fy; } - else { - // Did not pass the condition, go into children if available - if (parentBranch.childrenCount == 4) { - this._getForceContribution(parentBranch.children.NW,node); - this._getForceContribution(parentBranch.children.NE,node); - this._getForceContribution(parentBranch.children.SW,node); - this._getForceContribution(parentBranch.children.SE,node); - } - else { // parentBranch must have only one node, if it was empty we wouldnt be here - if (parentBranch.children.data.id != node.id) { // if it is not self - // duplicate code to reduce function calls to speed up program - if (distance == 0) { - distance = 0.5*Math.random(); - dx = distance; - } - var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.options.mass / (distance * distance * distance); - var fx = dx * gravityForce; - var fy = dy * gravityForce; - node.fx += fx; - node.fy += fy; - } + } + + // branch from hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level == 0) { + this._setLevel(1,node.edges,node.id); } } } }; + + /** - * This function constructs the barnesHut tree recursively. It creates the root, splits it and starts placing the nodes. + * this function allocates nodes in levels based on the direction of the edges * - * @param nodes - * @param nodeIndices + * @param hubsize * @private */ - exports._formBarnesHutTree = function(nodes,nodeIndices) { - var node; - var nodeCount = nodeIndices.length; + exports._determineLevelsDirected = function() { + var nodeId, node, firstNode; + var minLevel = 10000; - var minX = Number.MAX_VALUE, - minY = Number.MAX_VALUE, - maxX =-Number.MAX_VALUE, - maxY =-Number.MAX_VALUE; + // set first node to source + firstNode = this.nodes[this.nodeIndices[0]]; + firstNode.level = minLevel; + this._setLevelDirected(minLevel,firstNode.edges,firstNode.id); - // get the range of the nodes - for (var i = 0; i < nodeCount; i++) { - var x = nodes[nodeIndices[i]].x; - var y = nodes[nodeIndices[i]].y; - if (nodes[nodeIndices[i]].options.mass > 0) { - if (x < minX) { minX = x; } - if (x > maxX) { maxX = x; } - if (y < minY) { minY = y; } - if (y > maxY) { maxY = y; } + // get the minimum level + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + minLevel = node.level < minLevel ? node.level : minLevel; } } - // make the range a square - var sizeDiff = Math.abs(maxX - minX) - Math.abs(maxY - minY); // difference between X and Y - if (sizeDiff > 0) {minY -= 0.5 * sizeDiff; maxY += 0.5 * sizeDiff;} // xSize > ySize - else {minX += 0.5 * sizeDiff; maxX -= 0.5 * sizeDiff;} // xSize < ySize - - - var minimumTreeSize = 1e-5; - var rootSize = Math.max(minimumTreeSize,Math.abs(maxX - minX)); - var halfRootSize = 0.5 * rootSize; - var centerX = 0.5 * (minX + maxX), centerY = 0.5 * (minY + maxY); - - // construct the barnesHutTree - var barnesHutTree = { - root:{ - centerOfMass: {x:0, y:0}, - mass:0, - range: { - minX: centerX-halfRootSize,maxX:centerX+halfRootSize, - minY: centerY-halfRootSize,maxY:centerY+halfRootSize - }, - size: rootSize, - calcSize: 1 / rootSize, - children: { data:null}, - maxWidth: 0, - level: 0, - childrenCount: 4 - } - }; - this._splitBranch(barnesHutTree.root); - // place the nodes one by one recursively - for (i = 0; i < nodeCount; i++) { - node = nodes[nodeIndices[i]]; - if (node.options.mass > 0) { - this._placeInTree(barnesHutTree.root,node); + // subtract the minimum from the set so we have a range starting from 0 + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.level -= minLevel; } } - - // make global - this.barnesHutTree = barnesHutTree }; /** - * this updates the mass of a branch. this is increased by adding a node. + * Since hierarchical layout does not support: + * - smooth curves (based on the physics), + * - clustering (based on dynamic node counts) + * + * We disable both features so there will be no problems. * - * @param parentBranch - * @param node * @private */ - exports._updateBranchMass = function(parentBranch, node) { - var totalMass = parentBranch.mass + node.options.mass; - var totalMassInv = 1/totalMass; - - parentBranch.centerOfMass.x = parentBranch.centerOfMass.x * parentBranch.mass + node.x * node.options.mass; - parentBranch.centerOfMass.x *= totalMassInv; - - parentBranch.centerOfMass.y = parentBranch.centerOfMass.y * parentBranch.mass + node.y * node.options.mass; - parentBranch.centerOfMass.y *= totalMassInv; + exports._changeConstants = function() { + this.constants.clustering.enabled = false; + this.constants.physics.barnesHut.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this._loadSelectedForceSolver(); + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.dynamic = false; + } + this._configureSmoothCurves(); - parentBranch.mass = totalMass; - var biggestSize = Math.max(Math.max(node.height,node.radius),node.width); - parentBranch.maxWidth = (parentBranch.maxWidth < biggestSize) ? biggestSize : parentBranch.maxWidth; + var config = this.constants.hierarchicalLayout; + config.levelSeparation = Math.abs(config.levelSeparation); + if (config.direction == "RL" || config.direction == "DU") { + config.levelSeparation *= -1; + } + if (config.direction == "RL" || config.direction == "LR") { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "vertical"; + } + } + else { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "horizontal"; + } + } }; /** - * determine in which branch the node will be placed. + * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes + * on a X position that ensures there will be no overlap. * - * @param parentBranch - * @param node - * @param skipMassUpdate + * @param edges + * @param parentId + * @param distribution + * @param parentLevel * @private */ - exports._placeInTree = function(parentBranch,node,skipMassUpdate) { - if (skipMassUpdate != true || skipMassUpdate === undefined) { - // update the mass of the branch. - this._updateBranchMass(parentBranch,node); - } - - if (parentBranch.children.NW.range.maxX > node.x) { // in NW or SW - if (parentBranch.children.NW.range.maxY > node.y) { // in NW - this._placeInRegion(parentBranch,node,"NW"); + exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; } - else { // in SW - this._placeInRegion(parentBranch,node,"SW"); + else { + childNode = edges[i].to; } - } - else { // in NE or SE - if (parentBranch.children.NW.range.maxY > node.y) { // in NE - this._placeInRegion(parentBranch,node,"NE"); + + // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. + var nodeMoved = false; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (childNode.xFixed && childNode.level > parentLevel) { + childNode.xFixed = false; + childNode.x = distribution[childNode.level].minPos; + nodeMoved = true; + } } - else { // in SE - this._placeInRegion(parentBranch,node,"SE"); + else { + if (childNode.yFixed && childNode.level > parentLevel) { + childNode.yFixed = false; + childNode.y = distribution[childNode.level].minPos; + nodeMoved = true; + } + } + + if (nodeMoved == true) { + distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; + if (childNode.edges.length > 1) { + this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); + } } } }; /** - * actually place the node in a region (or branch) + * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. * - * @param parentBranch - * @param node - * @param region + * @param level + * @param edges + * @param parentId * @private */ - exports._placeInRegion = function(parentBranch,node,region) { - switch (parentBranch.children[region].childrenCount) { - case 0: // place node here - parentBranch.children[region].children.data = node; - parentBranch.children[region].childrenCount = 1; - this._updateBranchMass(parentBranch.children[region],node); - break; - case 1: // convert into children - // if there are two nodes exactly overlapping (on init, on opening of cluster etc.) - // we move one node a pixel and we do not put it in the tree. - if (parentBranch.children[region].children.data.x == node.x && - parentBranch.children[region].children.data.y == node.y) { - node.x += Math.random(); - node.y += Math.random(); - } - else { - this._splitBranch(parentBranch.children[region]); - this._placeInTree(parentBranch.children[region],node); + exports._setLevel = function(level, edges, parentId) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + } + else { + childNode = edges[i].to; + } + if (childNode.level == -1 || childNode.level > level) { + childNode.level = level; + if (childNode.edges.length > 1) { + this._setLevel(level+1, childNode.edges, childNode.id); } - break; - case 4: // place in branch - this._placeInTree(parentBranch.children[region],node); - break; + } } }; /** - * this function splits a branch into 4 sub branches. If the branch contained a node, we place it in the subbranch - * after the split is complete. + * this function is called recursively to enumerate the branched of the first node and give each node a level based on edge direction * - * @param parentBranch + * @param level + * @param edges + * @param parentId * @private */ - exports._splitBranch = function(parentBranch) { - // if the branch is shaded with a node, replace the node in the new subset. - var containedNode = null; - if (parentBranch.childrenCount == 1) { - containedNode = parentBranch.children.data; - parentBranch.mass = 0; parentBranch.centerOfMass.x = 0; parentBranch.centerOfMass.y = 0; + exports._setLevelDirected = function(level, edges, parentId) { + this.nodes[parentId].hierarchyEnumerated = true; + var childNode, direction; + for (var i = 0; i < edges.length; i++) { + direction = 1; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + direction = -1; + } + else { + childNode = edges[i].to; + } + if (childNode.level == -1) { + childNode.level = level + direction; + } } - parentBranch.childrenCount = 4; - parentBranch.children.data = null; - this._insertRegion(parentBranch,"NW"); - this._insertRegion(parentBranch,"NE"); - this._insertRegion(parentBranch,"SW"); - this._insertRegion(parentBranch,"SE"); - if (containedNode != null) { - this._placeInTree(parentBranch,containedNode); + for (var i = 0; i < edges.length; i++) { + if (edges[i].toId == parentId) {childNode = edges[i].from;} + else {childNode = edges[i].to;} + + if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { + this._setLevelDirected(childNode.level, childNode.edges, childNode.id); + } } }; /** - * This function subdivides the region into four new segments. - * Specifically, this inserts a single new segment. - * It fills the children section of the parentBranch + * Unfix nodes * - * @param parentBranch - * @param region - * @param parentRange * @private */ - exports._insertRegion = function(parentBranch, region) { - var minX,maxX,minY,maxY; - var childSize = 0.5 * parentBranch.size; - switch (region) { - case "NW": - minX = parentBranch.range.minX; - maxX = parentBranch.range.minX + childSize; - minY = parentBranch.range.minY; - maxY = parentBranch.range.minY + childSize; - break; - case "NE": - minX = parentBranch.range.minX + childSize; - maxX = parentBranch.range.maxX; - minY = parentBranch.range.minY; - maxY = parentBranch.range.minY + childSize; - break; - case "SW": - minX = parentBranch.range.minX; - maxX = parentBranch.range.minX + childSize; - minY = parentBranch.range.minY + childSize; - maxY = parentBranch.range.maxY; - break; - case "SE": - minX = parentBranch.range.minX + childSize; - maxX = parentBranch.range.maxX; - minY = parentBranch.range.minY + childSize; - maxY = parentBranch.range.maxY; - break; + exports._restoreNodes = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.nodes[nodeId].xFixed = false; + this.nodes[nodeId].yFixed = false; + } } + }; - parentBranch.children[region] = { - centerOfMass:{x:0,y:0}, - mass:0, - range:{minX:minX,maxX:maxX,minY:minY,maxY:maxY}, - size: 0.5 * parentBranch.size, - calcSize: 2 * parentBranch.calcSize, - children: {data:null}, - maxWidth: 0, - level: parentBranch.level+1, - childrenCount: 0 - }; +/***/ }, +/* 70 */ +/***/ function(module, exports, __webpack_require__) { + + // English + exports['en'] = { + edit: 'Edit', + del: 'Delete selected', + back: 'Back', + addNode: 'Add Node', + addEdge: 'Add Edge', + editNode: 'Edit Node', + editEdge: 'Edit Edge', + addDescription: 'Click in an empty space to place a new node.', + edgeDescription: 'Click on a node and drag the edge to another node to connect them.', + editEdgeDescription: 'Click on the control points and drag them to a node to connect to it.', + createEdgeError: 'Cannot link edges to a cluster.', + deleteClusterError: 'Clusters cannot be deleted.' + }; + exports['en_EN'] = exports['en']; + exports['en_US'] = exports['en']; + + // Dutch + exports['nl'] = { + edit: 'Wijzigen', + del: 'Selectie verwijderen', + back: 'Terug', + addNode: 'Node toevoegen', + addEdge: 'Link toevoegen', + editNode: 'Node wijzigen', + editEdge: 'Link wijzigen', + addDescription: 'Klik op een leeg gebied om een nieuwe node te maken.', + edgeDescription: 'Klik op een node en sleep de link naar een andere node om ze te verbinden.', + editEdgeDescription: 'Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.', + createEdgeError: 'Kan geen link maken naar een cluster.', + deleteClusterError: 'Clusters kunnen niet worden verwijderd.' }; + exports['nl_NL'] = exports['nl']; + exports['nl_BE'] = exports['nl']; + +/***/ }, +/* 71 */ +/***/ function(module, exports, __webpack_require__) { /** - * This function is for debugging purposed, it draws the tree. - * - * @param ctx - * @param color - * @private + * Canvas shapes used by Network */ - exports._drawTree = function(ctx,color) { - if (this.barnesHutTree !== undefined) { + if (typeof CanvasRenderingContext2D !== 'undefined') { - ctx.lineWidth = 1; + /** + * Draw a circle shape + */ + CanvasRenderingContext2D.prototype.circle = function(x, y, r) { + this.beginPath(); + this.arc(x, y, r, 0, 2*Math.PI, false); + }; - this._drawBranch(this.barnesHutTree.root,ctx,color); - } - }; + /** + * Draw a square shape + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r size, width and height of the square + */ + CanvasRenderingContext2D.prototype.square = function(x, y, r) { + this.beginPath(); + this.rect(x - r, y - r, r * 2, r * 2); + }; + /** + * Draw a triangle shape + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius, half the length of the sides of the triangle + */ + CanvasRenderingContext2D.prototype.triangle = function(x, y, r) { + // http://en.wikipedia.org/wiki/Equilateral_triangle + this.beginPath(); - /** - * This function is for debugging purposes. It draws the branches recursively. - * - * @param branch - * @param ctx - * @param color - * @private - */ - exports._drawBranch = function(branch,ctx,color) { - if (color === undefined) { - color = "#FF0000"; - } + var s = r * 2; + var s2 = s / 2; + var ir = Math.sqrt(3) / 6 * s; // radius of inner circle + var h = Math.sqrt(s * s - s2 * s2); // height - if (branch.childrenCount == 4) { - this._drawBranch(branch.children.NW,ctx); - this._drawBranch(branch.children.NE,ctx); - this._drawBranch(branch.children.SE,ctx); - this._drawBranch(branch.children.SW,ctx); - } - ctx.strokeStyle = color; - ctx.beginPath(); - ctx.moveTo(branch.range.minX,branch.range.minY); - ctx.lineTo(branch.range.maxX,branch.range.minY); - ctx.stroke(); + this.moveTo(x, y - (h - ir)); + this.lineTo(x + s2, y + ir); + this.lineTo(x - s2, y + ir); + this.lineTo(x, y - (h - ir)); + this.closePath(); + }; - ctx.beginPath(); - ctx.moveTo(branch.range.maxX,branch.range.minY); - ctx.lineTo(branch.range.maxX,branch.range.maxY); - ctx.stroke(); + /** + * Draw a triangle shape in downward orientation + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius + */ + CanvasRenderingContext2D.prototype.triangleDown = function(x, y, r) { + // http://en.wikipedia.org/wiki/Equilateral_triangle + this.beginPath(); - ctx.beginPath(); - ctx.moveTo(branch.range.maxX,branch.range.maxY); - ctx.lineTo(branch.range.minX,branch.range.maxY); - ctx.stroke(); + var s = r * 2; + var s2 = s / 2; + var ir = Math.sqrt(3) / 6 * s; // radius of inner circle + var h = Math.sqrt(s * s - s2 * s2); // height - ctx.beginPath(); - ctx.moveTo(branch.range.minX,branch.range.maxY); - ctx.lineTo(branch.range.minX,branch.range.minY); - ctx.stroke(); + this.moveTo(x, y + (h - ir)); + this.lineTo(x + s2, y - ir); + this.lineTo(x - s2, y - ir); + this.lineTo(x, y + (h - ir)); + this.closePath(); + }; - /* - if (branch.mass > 0) { - ctx.circle(branch.centerOfMass.x, branch.centerOfMass.y, 3*branch.mass); - ctx.stroke(); - } + /** + * Draw a star shape, a star with 5 points + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius, half the length of the sides of the triangle */ - }; + CanvasRenderingContext2D.prototype.star = function(x, y, r) { + // http://www.html5canvastutorials.com/labs/html5-canvas-star-spinner/ + this.beginPath(); + for (var n = 0; n < 10; n++) { + var radius = (n % 2 === 0) ? r * 1.3 : r * 0.5; + this.lineTo( + x + radius * Math.sin(n * 2 * Math.PI / 10), + y - radius * Math.cos(n * 2 * Math.PI / 10) + ); + } -/***/ }, -/* 71 */ -/***/ function(module, exports, __webpack_require__) { + this.closePath(); + }; - module.exports = function(module) { - if(!module.webpackPolyfill) { - module.deprecate = function() {}; - module.paths = []; - // module.parent = undefined by default - module.children = []; - module.webpackPolyfill = 1; - } - return module; + /** + * http://stackoverflow.com/questions/1255512/how-to-draw-a-rounded-rectangle-on-html-canvas + */ + CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) { + var r2d = Math.PI/180; + if( w - ( 2 * r ) < 0 ) { r = ( w / 2 ); } //ensure that the radius isn't too large for x + if( h - ( 2 * r ) < 0 ) { r = ( h / 2 ); } //ensure that the radius isn't too large for y + this.beginPath(); + this.moveTo(x+r,y); + this.lineTo(x+w-r,y); + this.arc(x+w-r,y+r,r,r2d*270,r2d*360,false); + this.lineTo(x+w,y+h-r); + this.arc(x+w-r,y+h-r,r,0,r2d*90,false); + this.lineTo(x+r,y+h); + this.arc(x+r,y+h-r,r,r2d*90,r2d*180,false); + this.lineTo(x,y+r); + this.arc(x+r,y+r,r,r2d*180,r2d*270,false); + }; + + /** + * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + */ + CanvasRenderingContext2D.prototype.ellipse = function(x, y, w, h) { + var kappa = .5522848, + ox = (w / 2) * kappa, // control point offset horizontal + oy = (h / 2) * kappa, // control point offset vertical + xe = x + w, // x-end + ye = y + h, // y-end + xm = x + w / 2, // x-middle + ym = y + h / 2; // y-middle + + this.beginPath(); + this.moveTo(x, ym); + this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + }; + + + + /** + * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + */ + CanvasRenderingContext2D.prototype.database = function(x, y, w, h) { + var f = 1/3; + var wEllipse = w; + var hEllipse = h * f; + + var kappa = .5522848, + ox = (wEllipse / 2) * kappa, // control point offset horizontal + oy = (hEllipse / 2) * kappa, // control point offset vertical + xe = x + wEllipse, // x-end + ye = y + hEllipse, // y-end + xm = x + wEllipse / 2, // x-middle + ym = y + hEllipse / 2, // y-middle + ymb = y + (h - hEllipse/2), // y-midlle, bottom ellipse + yeb = y + h; // y-end, bottom ellipse + + this.beginPath(); + this.moveTo(xe, ym); + + this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + + this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + + this.lineTo(xe, ymb); + + this.bezierCurveTo(xe, ymb + oy, xm + ox, yeb, xm, yeb); + this.bezierCurveTo(xm - ox, yeb, x, ymb + oy, x, ymb); + + this.lineTo(x, ym); + }; + + + /** + * Draw an arrow point (no line) + */ + CanvasRenderingContext2D.prototype.arrow = function(x, y, angle, length) { + // tail + var xt = x - length * Math.cos(angle); + var yt = y - length * Math.sin(angle); + + // inner tail + // TODO: allow to customize different shapes + var xi = x - length * 0.9 * Math.cos(angle); + var yi = y - length * 0.9 * Math.sin(angle); + + // left + var xl = xt + length / 3 * Math.cos(angle + 0.5 * Math.PI); + var yl = yt + length / 3 * Math.sin(angle + 0.5 * Math.PI); + + // right + var xr = xt + length / 3 * Math.cos(angle - 0.5 * Math.PI); + var yr = yt + length / 3 * Math.sin(angle - 0.5 * Math.PI); + + this.beginPath(); + this.moveTo(x, y); + this.lineTo(xl, yl); + this.lineTo(xi, yi); + this.lineTo(xr, yr); + this.closePath(); + }; + + /** + * Sets up the dashedLine functionality for drawing + * Original code came from http://stackoverflow.com/questions/4576724/dotted-stroke-in-canvas + * @author David Jordan + * @date 2012-08-08 + */ + CanvasRenderingContext2D.prototype.dashedLine = function(x,y,x2,y2,dashArray){ + if (!dashArray) dashArray=[10,5]; + if (dashLength==0) dashLength = 0.001; // Hack for Safari + var dashCount = dashArray.length; + this.moveTo(x, y); + var dx = (x2-x), dy = (y2-y); + var slope = dy/dx; + var distRemaining = Math.sqrt( dx*dx + dy*dy ); + var dashIndex=0, draw=true; + while (distRemaining>=0.1){ + var dashLength = dashArray[dashIndex++%dashCount]; + if (dashLength > distRemaining) dashLength = distRemaining; + var xStep = Math.sqrt( dashLength*dashLength / (1 + slope*slope) ); + if (dx<0) xStep = -xStep; + x += xStep; + y += slope*xStep; + this[draw ? 'lineTo' : 'moveTo'](x,y); + distRemaining -= dashLength; + draw = !draw; + } + }; + + // TODO: add diamond shape } diff --git a/examples/timeline/35_item_ordering.html b/examples/timeline/35_item_ordering.html new file mode 100644 index 00000000..3fcebe1b --- /dev/null +++ b/examples/timeline/35_item_ordering.html @@ -0,0 +1,78 @@ + + + + Timeline | Item ordering + + + + + + + +

Item ordering

+

+ By default, the items displayed on the Timeline are unordered. They are + stacked in the order that they where loaded. This means that way items are + stacked can change while moving and zooming the Timeline. +

+

+ To display and stack the items in a controlled order, you can provide a + custom sorting function via the configuration option order. + This is only suitable for relatively small amounts of items, as it forces + the Timeline to order and re-stack all items with every redraw. +

+ +

+ +

+ +
+ + + + \ No newline at end of file diff --git a/examples/timeline/index.html b/examples/timeline/index.html index 82526bd7..2fe03424 100644 --- a/examples/timeline/index.html +++ b/examples/timeline/index.html @@ -45,6 +45,7 @@

32_grid_styling.html

33_custom_snapping.html

34_add_custom_timebar.html

+

35_item_ordering.html

requirejs_example.html

diff --git a/lib/timeline/Core.js b/lib/timeline/Core.js index d8ac161e..b64c5021 100644 --- a/lib/timeline/Core.js +++ b/lib/timeline/Core.js @@ -242,11 +242,6 @@ Core.prototype.setOptions = function (options) { component.setOptions(options); }); - // TODO: remove deprecation error one day (deprecated since version 0.8.0) - if (options && options.order) { - throw new Error('Option order is deprecated. There is no replacement for this feature.'); - } - // redraw everything this._redraw(); }; diff --git a/lib/timeline/component/Group.js b/lib/timeline/component/Group.js index 1e1e4757..4a2cea0e 100644 --- a/lib/timeline/component/Group.js +++ b/lib/timeline/component/Group.js @@ -165,8 +165,15 @@ Group.prototype.redraw = function(range, margin, restack) { } // reposition visible items vertically + var customOrderedItems = null; if (this.itemSet.options.stack) { // TODO: ugly way to access options... - stack.stack(this.visibleItems, margin, restack); + if (typeof this.itemSet.options.order === 'function' || false) { + customOrderedItems = this._getCustomOrderedItems(); + stack.stack(customOrderedItems, margin, true); + } + else { + stack.stack(this.visibleItems, margin, restack); + } } else { // no stacking stack.nostack(this.visibleItems, margin, this.subgroups); @@ -483,6 +490,23 @@ Group.prototype._updateVisibleItems = function(orderedItems, oldVisibleItems, ra return visibleItems; }; +Group.prototype._getCustomOrderedItems = function () { + var customOrderedItems = this.orderedItems.byStart.filter(function (item) { + return item.height !== 0 || item.width !== 0; + }); + var me = this; + + customOrderedItems.sort(function (a, b) { + return me.itemSet.options.order(a.data, b.data); + }); + + customOrderedItems.forEach(function (item) { + item.repositionX(); + }); + + return customOrderedItems; +}; + Group.prototype._traceVisible = function (initialPos, items, visibleItems, visibleItemsLookup, breakCondition) { var item; var i; diff --git a/lib/timeline/component/ItemSet.js b/lib/timeline/component/ItemSet.js index 9ba5adb6..ef831474 100644 --- a/lib/timeline/component/ItemSet.js +++ b/lib/timeline/component/ItemSet.js @@ -274,7 +274,7 @@ ItemSet.prototype._create = function(){ ItemSet.prototype.setOptions = function(options) { if (options) { // copy all options that we know - var fields = ['type', 'align', 'orientation', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide', 'snap']; + var fields = ['type', 'align', 'orientation', 'order', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide', 'snap']; util.selectiveExtend(fields, this.options, options); if ('margin' in options) { From 728b8afb5c680f543c6fa9fd5482631667061bfc Mon Sep 17 00:00:00 2001 From: jos Date: Wed, 4 Mar 2015 11:46:07 +0100 Subject: [PATCH 09/43] Updated docs on supported data types for `start` and `end` (see #684). --- docs/timeline.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/timeline.html b/docs/timeline.html index 83addbe2..c756e6a5 100644 --- a/docs/timeline.html +++ b/docs/timeline.html @@ -205,7 +205,7 @@ var items = [ end - Date + Date | number | string | Moment no The end date of the item. The end date is optional, and can be left null. If end date is provided, the item is displayed as a range. @@ -232,7 +232,7 @@ var items = [ start - Date + Date | number | string | Moment yes The start date of the item, for example new Date(2010,9,23). @@ -468,7 +468,7 @@ var options = { end - Date | Number | String + Date | Number | String | Moment none The initial end date for the axis of the timeline. If not provided, the latest date present in the items set is taken as @@ -584,7 +584,7 @@ var options = { max - Date | Number | String + Date | Number | String | Moment none Set a maximum Date for the visible range. It will not be possible to move beyond this maximum. @@ -600,7 +600,7 @@ var options = { min - Date | Number | String + Date | Number | String | Moment none Set a minimum Date for the visible range. It will not be possible to move beyond this minimum. @@ -762,7 +762,7 @@ var options = { start - Date | Number | String + Date | Number | String | Moment none The initial start date for the axis of the timeline. If not provided, the earliest date present in the events is taken as start date. From f53012fdf9f74d041c066434c802b424e7a35a1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=CC=8Ans=20Beckman?= Date: Wed, 4 Mar 2015 13:02:31 +0100 Subject: [PATCH 10/43] Updated code and docs for possibility to rename fields --- docs/dataset.html | 5 +++-- docs/dataview.html | 5 +++-- lib/DataSet.js | 20 +++++++++++--------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/docs/dataset.html b/docs/dataset.html index 110afc0a..2c77c723 100644 --- a/docs/dataset.html +++ b/docs/dataset.html @@ -740,9 +740,10 @@ DataSet.map(callback [, options]); fields - String[ ] + String[ ] | Object.<String, String> - An array with field names. + An array with field names, or an object with current field name and + new field name that the field is returned as. By default, all properties of the items are emitted. When fields is defined, only the properties whose name is specified in fields will be included diff --git a/docs/dataview.html b/docs/dataview.html index 316da77a..eea7d2df 100644 --- a/docs/dataview.html +++ b/docs/dataview.html @@ -129,9 +129,10 @@ var data = new vis.DataView(dataset, options) fields - String[ ] + String[ ] | Object.<String, String> - An array with field names. + An array with field names, or an object with current field name and + new field name that the field is returned as. By default, all properties of the items are emitted. When fields is defined, only the properties whose name is specified in fields will be included diff --git a/lib/DataSet.js b/lib/DataSet.js index 9aa0238e..d002ac4f 100644 --- a/lib/DataSet.js +++ b/lib/DataSet.js @@ -663,15 +663,17 @@ DataSet.prototype._filterFields = function (item, fields) { var filteredItem = {}; - for (var field in item) { - if(Array.isArray(fields)){ - if (item.hasOwnProperty(field) && (fields.indexOf(field) != -1)) { - filteredItem[field] = item[field]; - } - }else{ - if (item.hasOwnProperty(field) && fields.hasOwnProperty(field)) { - filteredItem[fields[field]] = item[field]; - } + if(Array.isArray(fields)){ + for (var field in item) { + if (item.hasOwnProperty(field) && (fields.indexOf(field) != -1)) { + filteredItem[field] = item[field]; + } + } + }else{ + for (var field in item) { + if (item.hasOwnProperty(field) && fields.hasOwnProperty(field)) { + filteredItem[fields[field]] = item[field]; + } } } From 6fdb09e82f4bb05b5598c95d6caf346a607b3344 Mon Sep 17 00:00:00 2001 From: jos Date: Wed, 4 Mar 2015 13:56:46 +0100 Subject: [PATCH 11/43] Implemented configuration option `order: function` to define a custom ordering for the items (see #538, #324). --- HISTORY.md | 2 + dist/vis.js | 50695 ++++++++++----------- dist/vis.map | 2 +- dist/vis.min.js | 20 +- docs/timeline.html | 11 +- examples/timeline/35_item_ordering.html | 2 +- lib/timeline/component/Group.js | 60 +- lib/timeline/component/item/BoxItem.js | 3 - lib/timeline/component/item/PointItem.js | 3 - lib/timeline/component/item/RangeItem.js | 3 - 10 files changed, 25397 insertions(+), 25404 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index da99dc53..278bafe4 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -22,6 +22,8 @@ http://visjs.org and bottom (#665). - Implemented creating new range items by dragging in an empty space with the ctrl key down. +- Implemented configuration option `order: function` to define a custom ordering + for the items (see #538, #324). - Fixed not property initializing with a DataView for groups. - Merged add custom timebar functionality, thanks @aytech! - Fixed #664: end of item not restored when canceling a move event. diff --git a/dist/vis.js b/dist/vis.js index f496689b..a33d5a5d 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.10.1-SNAPSHOT - * @date 2015-03-03 + * @date 2015-03-04 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -83,67 +83,67 @@ return /******/ (function(modules) { // webpackBootstrap // utils exports.util = __webpack_require__(1); - exports.DOMutil = __webpack_require__(6); + exports.DOMutil = __webpack_require__(2); // data - exports.DataSet = __webpack_require__(7); - exports.DataView = __webpack_require__(9); - exports.Queue = __webpack_require__(8); + exports.DataSet = __webpack_require__(3); + exports.DataView = __webpack_require__(4); + exports.Queue = __webpack_require__(5); // Graph3d - exports.Graph3d = __webpack_require__(10); + exports.Graph3d = __webpack_require__(6); exports.graph3d = { - Camera: __webpack_require__(14), - Filter: __webpack_require__(15), - Point2d: __webpack_require__(13), - Point3d: __webpack_require__(12), - Slider: __webpack_require__(16), - StepNumber: __webpack_require__(17) + Camera: __webpack_require__(7), + Filter: __webpack_require__(8), + Point2d: __webpack_require__(9), + Point3d: __webpack_require__(10), + Slider: __webpack_require__(11), + StepNumber: __webpack_require__(12) }; // Timeline - exports.Timeline = __webpack_require__(18); - exports.Graph2d = __webpack_require__(41); + exports.Timeline = __webpack_require__(13); + exports.Graph2d = __webpack_require__(14); exports.timeline = { - DateUtil: __webpack_require__(24), - DataStep: __webpack_require__(44), - Range: __webpack_require__(21), - stack: __webpack_require__(50), - TimeStep: __webpack_require__(27), + DateUtil: __webpack_require__(15), + DataStep: __webpack_require__(16), + Range: __webpack_require__(17), + stack: __webpack_require__(18), + TimeStep: __webpack_require__(19), components: { items: { - Item: __webpack_require__(31), - BackgroundItem: __webpack_require__(34), - BoxItem: __webpack_require__(30), - PointItem: __webpack_require__(32), - RangeItem: __webpack_require__(33) + Item: __webpack_require__(20), + BackgroundItem: __webpack_require__(21), + BoxItem: __webpack_require__(22), + PointItem: __webpack_require__(23), + RangeItem: __webpack_require__(24) }, - Component: __webpack_require__(23), - CurrentTime: __webpack_require__(40), - CustomTime: __webpack_require__(38), - DataAxis: __webpack_require__(43), - GraphGroup: __webpack_require__(45), - Group: __webpack_require__(28), - BackgroundGroup: __webpack_require__(29), - ItemSet: __webpack_require__(26), - Legend: __webpack_require__(49), - LineGraph: __webpack_require__(42), + Component: __webpack_require__(25), + CurrentTime: __webpack_require__(26), + CustomTime: __webpack_require__(27), + DataAxis: __webpack_require__(28), + GraphGroup: __webpack_require__(29), + Group: __webpack_require__(30), + BackgroundGroup: __webpack_require__(31), + ItemSet: __webpack_require__(32), + Legend: __webpack_require__(33), + LineGraph: __webpack_require__(34), TimeAxis: __webpack_require__(35) } }; // Network - exports.Network = __webpack_require__(51); + exports.Network = __webpack_require__(36); exports.network = { - Edge: __webpack_require__(57), - Groups: __webpack_require__(54), - Images: __webpack_require__(55), - Node: __webpack_require__(56), - Popup: __webpack_require__(58), - dotparser: __webpack_require__(52), - gephiParser: __webpack_require__(53) + Edge: __webpack_require__(37), + Groups: __webpack_require__(38), + Images: __webpack_require__(39), + Node: __webpack_require__(40), + Popup: __webpack_require__(41), + dotparser: __webpack_require__(42), + gephiParser: __webpack_require__(43) }; // Deprecated since v3.0.0 @@ -152,8 +152,8 @@ return /******/ (function(modules) { // webpackBootstrap }; // bundled external libraries - exports.moment = __webpack_require__(2); - exports.hammer = __webpack_require__(19); + exports.moment = __webpack_require__(44); + exports.hammer = __webpack_require__(45); /***/ }, @@ -164,7 +164,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - var moment = __webpack_require__(2); + var moment = __webpack_require__(44); /** * Test whether given object is a number @@ -1438,29575 +1438,29134 @@ return /******/ (function(modules) { // webpackBootstrap /* 2 */ /***/ function(module, exports, __webpack_require__) { - // first check if moment.js is already loaded in the browser window, if so, - // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(3); + // DOM utility methods + /** + * this prepares the JSON container for allocating SVG elements + * @param JSONcontainer + * @private + */ + exports.prepareElements = function(JSONcontainer) { + // cleanup the redundant svgElements; + for (var elementType in JSONcontainer) { + if (JSONcontainer.hasOwnProperty(elementType)) { + JSONcontainer[elementType].redundant = JSONcontainer[elementType].used; + JSONcontainer[elementType].used = []; + } + } + }; -/***/ }, -/* 3 */ -/***/ function(module, exports, __webpack_require__) { + /** + * this cleans up all the unused SVG elements. By asking for the parentNode, we only need to supply the JSON container from + * which to remove the redundant elements. + * + * @param JSONcontainer + * @private + */ + exports.cleanupElements = function(JSONcontainer) { + // cleanup the redundant svgElements; + for (var elementType in JSONcontainer) { + if (JSONcontainer.hasOwnProperty(elementType)) { + if (JSONcontainer[elementType].redundant) { + for (var i = 0; i < JSONcontainer[elementType].redundant.length; i++) { + JSONcontainer[elementType].redundant[i].parentNode.removeChild(JSONcontainer[elementType].redundant[i]); + } + JSONcontainer[elementType].redundant = []; + } + } + } + }; - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.9.0 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com + /** + * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer + * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. + * + * @param elementType + * @param JSONcontainer + * @param svgContainer + * @returns {*} + * @private + */ + exports.getSVGElement = function (elementType, JSONcontainer, svgContainer) { + var element; + // allocate SVG element, if it doesnt yet exist, create one. + if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before + // check if there is an redundant element + if (JSONcontainer[elementType].redundant.length > 0) { + element = JSONcontainer[elementType].redundant[0]; + JSONcontainer[elementType].redundant.shift(); + } + else { + // create a new element and add it to the SVG + element = document.createElementNS('http://www.w3.org/2000/svg', elementType); + svgContainer.appendChild(element); + } + } + else { + // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. + element = document.createElementNS('http://www.w3.org/2000/svg', elementType); + JSONcontainer[elementType] = {used: [], redundant: []}; + svgContainer.appendChild(element); + } + JSONcontainer[elementType].used.push(element); + return element; + }; - (function (undefined) { - /************************************ - Constants - ************************************/ - var moment, - VERSION = '2.9.0', - // the global-scope this is NOT the global object in Node.js - globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, - oldGlobalMoment, - round = Math.round, - hasOwnProperty = Object.prototype.hasOwnProperty, - i, + /** + * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer + * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. + * + * @param elementType + * @param JSONcontainer + * @param DOMContainer + * @returns {*} + * @private + */ + exports.getDOMElement = function (elementType, JSONcontainer, DOMContainer, insertBefore) { + var element; + // allocate DOM element, if it doesnt yet exist, create one. + if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before + // check if there is an redundant element + if (JSONcontainer[elementType].redundant.length > 0) { + element = JSONcontainer[elementType].redundant[0]; + JSONcontainer[elementType].redundant.shift(); + } + else { + // create a new element and add it to the SVG + element = document.createElement(elementType); + if (insertBefore !== undefined) { + DOMContainer.insertBefore(element, insertBefore); + } + else { + DOMContainer.appendChild(element); + } + } + } + else { + // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. + element = document.createElement(elementType); + JSONcontainer[elementType] = {used: [], redundant: []}; + if (insertBefore !== undefined) { + DOMContainer.insertBefore(element, insertBefore); + } + else { + DOMContainer.appendChild(element); + } + } + JSONcontainer[elementType].used.push(element); + return element; + }; - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, - // internal storage for locale config files - locales = {}, - // extra moment internal properties (plugins register props here) - momentProperties = [], - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module && module.exports), + /** + * draw a point object. this is a seperate function because it can also be called by the legend. + * The reason the JSONcontainer and the target SVG svgContainer have to be supplied is so the legend can use these functions + * as well. + * + * @param x + * @param y + * @param group + * @param JSONcontainer + * @param svgContainer + * @param labelObj + * @returns {*} + */ + exports.drawPoint = function(x, y, group, JSONcontainer, svgContainer, labelObj) { + var point; + if (group.options.drawPoints.style == 'circle') { + point = exports.getSVGElement('circle',JSONcontainer,svgContainer); + point.setAttributeNS(null, "cx", x); + point.setAttributeNS(null, "cy", y); + point.setAttributeNS(null, "r", 0.5 * group.options.drawPoints.size); + } + else { + point = exports.getSVGElement('rect',JSONcontainer,svgContainer); + point.setAttributeNS(null, "x", x - 0.5*group.options.drawPoints.size); + point.setAttributeNS(null, "y", y - 0.5*group.options.drawPoints.size); + point.setAttributeNS(null, "width", group.options.drawPoints.size); + point.setAttributeNS(null, "height", group.options.drawPoints.size); + } - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + if(group.options.drawPoints.styles !== undefined) { + point.setAttributeNS(null, "style", group.group.options.drawPoints.styles); + } + point.setAttributeNS(null, "class", group.className + " point"); + //handle label + var label = exports.getSVGElement('text',JSONcontainer,svgContainer); + if (labelObj){ + if (labelObj.xOffset) { + x = x + labelObj.xOffset; + } - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + if (labelObj.yOffset) { + y = y + labelObj.yOffset; + } + if (labelObj.content) { + label.textContent = labelObj.content; + } - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, + if (labelObj.className) { + label.setAttributeNS(null, "class", labelObj.className + " label"); + } - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + } + label.setAttributeNS(null, "x", x); + label.setAttributeNS(null, "y", y); + return point; + }; - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + /** + * draw a bar SVG element centered on the X coordinate + * + * @param x + * @param y + * @param className + */ + exports.drawBar = function (x, y, width, height, className, JSONcontainer, svgContainer) { + if (height != 0) { + if (height < 0) { + height *= -1; + y -= height; + } + var rect = exports.getSVGElement('rect',JSONcontainer, svgContainer); + rect.setAttributeNS(null, "x", x - 0.5 * width); + rect.setAttributeNS(null, "y", y); + rect.setAttributeNS(null, "width", width); + rect.setAttributeNS(null, "height", height); + rect.setAttributeNS(null, "class", className); + } + }; - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', +/***/ }, +/* 3 */ +/***/ function(module, exports, __webpack_require__) { - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], + var util = __webpack_require__(1); + var Queue = __webpack_require__(5); - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], + /** + * DataSet + * + * Usage: + * var dataSet = new DataSet({ + * fieldId: '_id', + * type: { + * // ... + * } + * }); + * + * dataSet.add(item); + * dataSet.add(data); + * dataSet.update(item); + * dataSet.update(data); + * dataSet.remove(id); + * dataSet.remove(ids); + * var data = dataSet.get(); + * var data = dataSet.get(id); + * var data = dataSet.get(ids); + * var data = dataSet.get(ids, options, data); + * dataSet.clear(); + * + * A data set can: + * - add/remove/update data + * - gives triggers upon changes in the data + * - can import/export data in various data formats + * + * @param {Array | DataTable} [data] Optional array with initial data + * @param {Object} [options] Available options: + * {String} fieldId Field name of the id in the + * items, 'id' by default. + * {Object. ['10', '00'] or '-1530' > ['-', '15', '30'] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, + this._options = options || {}; + this._data = {}; // map with data indexed by id + this.length = 0; // number of items in the DataSet + this._fieldId = this._options.fieldId || 'id'; // name of the field containing id + this._type = {}; // internal field types (NOTE: this can differ from this._options.type) - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, + // all variants of a Date are internally stored as Date, so we can convert + // from everything to everything (also from ISODate to Number for example) + if (this._options.type) { + for (var field in this._options.type) { + if (this._options.type.hasOwnProperty(field)) { + var value = this._options.type[field]; + if (value == 'Date' || value == 'ISODate' || value == 'ASPDate') { + this._type[field] = 'Date'; + } + else { + this._type[field] = value; + } + } + } + } - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, + // TODO: deprecated since version 1.1.1 (or 2.0.0?) + if (this._options.convert) { + throw new Error('Option "convert" is deprecated. Use "type" instead.'); + } - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, + this._subscribers = {}; // event subscribers - // format function strings - formatFunctions = {}, + // add initial data when provided + if (data) { + this.add(data); + } - // default relative time thresholds - relativeTimeThresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }, + this.setOptions(options); + } - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), + /** + * @param {Object} [options] Available options: + * {Object} queue Queue changes to the DataSet, + * flush them all at once. + * Queue options: + * - {number} delay Delay in ms, null by default + * - {number} max Maximum number of entries in the queue, Infinity by default + * @param options + */ + DataSet.prototype.setOptions = function(options) { + if (options && options.queue !== undefined) { + if (options.queue === false) { + // delete queue if loaded + if (this._queue) { + this._queue.destroy(); + delete this._queue; + } + } + else { + // create queue and update its options + if (!this._queue) { + this._queue = Queue.extend(this, { + replace: ['add', 'update', 'remove'] + }); + } - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.localeData().monthsShort(this, format); - }, - MMMM : function (format) { - return this.localeData().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.localeData().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.localeData().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.localeData().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - x : function () { - return this.valueOf(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); - } - }, + if (typeof options.queue === 'object') { + this._queue.setOptions(options.queue); + } + } + } + }; - deprecations = {}, + /** + * Subscribe to an event, add an event listener + * @param {String} event Event name. Available events: 'put', 'update', + * 'remove' + * @param {function} callback Callback method. Called with three parameters: + * {String} event + * {Object | null} params + * {String | Number} senderId + */ + DataSet.prototype.on = function(event, callback) { + var subscribers = this._subscribers[event]; + if (!subscribers) { + subscribers = []; + this._subscribers[event] = subscribers; + } - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], + subscribers.push({ + callback: callback + }); + }; - updateInProgress = false; + // TODO: make this function deprecated (replaced with `on` since version 0.5) + DataSet.prototype.subscribe = DataSet.prototype.on; - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error('Implement me'); - } - } + /** + * Unsubscribe from an event, remove an event listener + * @param {String} event + * @param {function} callback + */ + DataSet.prototype.off = function(event, callback) { + var subscribers = this._subscribers[event]; + if (subscribers) { + this._subscribers[event] = subscribers.filter(function (listener) { + return (listener.callback != callback); + }); + } + }; - function hasOwnProp(a, b) { - return hasOwnProperty.call(a, b); - } + // TODO: make this function deprecated (replaced with `on` since version 0.5) + DataSet.prototype.unsubscribe = DataSet.prototype.off; - function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; - } + /** + * Trigger an event + * @param {String} event + * @param {Object | null} params + * @param {String} [senderId] Optional id of the sender. + * @private + */ + DataSet.prototype._trigger = function (event, params, senderId) { + if (event == '*') { + throw new Error('Cannot trigger event *'); + } - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } + var subscribers = []; + if (event in this._subscribers) { + subscribers = subscribers.concat(this._subscribers[event]); + } + if ('*' in this._subscribers) { + subscribers = subscribers.concat(this._subscribers['*']); + } - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); + for (var i = 0; i < subscribers.length; i++) { + var subscriber = subscribers[i]; + if (subscriber.callback) { + subscriber.callback(event, params, senderId || null); } + } + }; - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; - } - } + /** + * Add data. + * Adding an item will fail when there already is an item with the same id. + * @param {Object | Array | DataTable} data + * @param {String} [senderId] Optional sender id + * @return {Array} addedIds Array with the ids of the added items + */ + DataSet.prototype.add = function (data, senderId) { + var addedIds = [], + id, + me = this; - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; + if (Array.isArray(data)) { + // Array + for (var i = 0, len = data.length; i < len; i++) { + id = me._addItem(data[i]); + addedIds.push(id); } - function ordinalizeToken(func, period) { - return function (a) { - return this.localeData().ordinal(func.call(this, a), period); - }; + } + else if (util.isDataTable(data)) { + // Google DataTable + var columns = this._getColumnNames(data); + for (var row = 0, rows = data.getNumberOfRows(); row < rows; row++) { + var item = {}; + for (var col = 0, cols = columns.length; col < cols; col++) { + var field = columns[col]; + item[field] = data.getValue(row, col); + } + + id = me._addItem(item); + addedIds.push(id); } + } + else if (data instanceof Object) { + // Single item + id = me._addItem(data); + addedIds.push(id); + } + else { + throw new Error('Unknown dataType'); + } - function monthDiff(a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; + if (addedIds.length) { + this._trigger('add', {items: addedIds}, senderId); + } - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } + return addedIds; + }; - return -(wholeMonthDiff + adjust); - } + /** + * Update existing items. When an item does not exist, it will be created + * @param {Object | Array | DataTable} data + * @param {String} [senderId] Optional sender id + * @return {Array} updatedIds The ids of the added or updated items + */ + DataSet.prototype.update = function (data, senderId) { + var addedIds = []; + var updatedIds = []; + var updatedData = []; + var me = this; + var fieldId = me._fieldId; - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + var addOrUpdate = function (item) { + var id = item[fieldId]; + if (me._data[id]) { + // update item + id = me._updateItem(item); + updatedIds.push(id); + updatedData.push(item); } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + else { + // add new item + id = me._addItem(item); + addedIds.push(id); } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - - - function meridiemFixWrap(locale, hour, meridiem) { - var isPm; + }; - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // thie is not supposed to happen - return hour; - } + if (Array.isArray(data)) { + // Array + for (var i = 0, len = data.length; i < len; i++) { + addOrUpdate(data[i]); } + } + else if (util.isDataTable(data)) { + // Google DataTable + var columns = this._getColumnNames(data); + for (var row = 0, rows = data.getNumberOfRows(); row < rows; row++) { + var item = {}; + for (var col = 0, cols = columns.length; col < cols; col++) { + var field = columns[col]; + item[field] = data.getValue(row, col); + } - /************************************ - Constructors - ************************************/ - - function Locale() { + addOrUpdate(item); } + } + else if (data instanceof Object) { + // Single item + addOrUpdate(data); + } + else { + throw new Error('Unknown dataType'); + } - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - moment.updateOffset(this); - updateInProgress = false; - } - } + if (addedIds.length) { + this._trigger('add', {items: addedIds}, senderId); + } + if (updatedIds.length) { + this._trigger('update', {items: updatedIds, data: updatedData}, senderId); + } - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; + return addedIds.concat(updatedIds); + }; - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; + /** + * Get a data item or multiple items. + * + * Usage: + * + * get() + * get(options: Object) + * get(options: Object, data: Array | DataTable) + * + * get(id: Number | String) + * get(id: Number | String, options: Object) + * get(id: Number | String, options: Object, data: Array | DataTable) + * + * get(ids: Number[] | String[]) + * get(ids: Number[] | String[], options: Object) + * get(ids: Number[] | String[], options: Object, data: Array | DataTable) + * + * Where: + * + * {Number | String} id The id of an item + * {Number[] | String{}} ids An array with ids of items + * {Object} options An Object with options. Available options: + * {String} [returnType] Type of data to be + * returned. Can be 'DataTable' or 'Array' (default) + * {Object.} [type] + * {String[]} [fields] field names to be returned + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * {Array | DataTable} [data] If provided, items will be appended to this + * array or table. Required in case of Google + * DataTable. + * + * @throws Error + */ + DataSet.prototype.get = function (args) { + var me = this; - this._data = {}; + // parse the arguments + var id, ids, options, data; + var firstType = util.getType(arguments[0]); + if (firstType == 'String' || firstType == 'Number') { + // get(id [, options] [, data]) + id = arguments[0]; + options = arguments[1]; + data = arguments[2]; + } + else if (firstType == 'Array') { + // get(ids [, options] [, data]) + ids = arguments[0]; + options = arguments[1]; + data = arguments[2]; + } + else { + // get([, options] [, data]) + options = arguments[0]; + data = arguments[1]; + } - this._locale = moment.localeData(); + // determine the return type + var returnType; + if (options && options.returnType) { + var allowedValues = ["DataTable", "Array", "Object"]; + returnType = allowedValues.indexOf(options.returnType) == -1 ? "Array" : options.returnType; - this._bubble(); + if (data && (returnType != util.getType(data))) { + throw new Error('Type of parameter "data" (' + util.getType(data) + ') ' + + 'does not correspond with specified options.type (' + options.type + ')'); } + if (returnType == 'DataTable' && !util.isDataTable(data)) { + throw new Error('Parameter "data" must be a DataTable ' + + 'when options.type is "DataTable"'); + } + } + else if (data) { + returnType = (util.getType(data) == 'DataTable') ? 'DataTable' : 'Array'; + } + else { + returnType = 'Array'; + } - /************************************ - Helpers - ************************************/ - - - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } + // build options + var type = options && options.type || this._options.type; + var filter = options && options.filter; + var items = [], item, itemId, i, len; - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; + // convert items + if (id != undefined) { + // return a single item + item = me._getItem(id, type); + if (filter && !filter(item)) { + item = null; + } + } + else if (ids != undefined) { + // return a subset of items + for (i = 0, len = ids.length; i < len; i++) { + item = me._getItem(ids[i], type); + if (!filter || filter(item)) { + items.push(item); + } + } + } + else { + // return all items + for (itemId in this._data) { + if (this._data.hasOwnProperty(itemId)) { + item = me._getItem(itemId, type); + if (!filter || filter(item)) { + items.push(item); } + } + } + } - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } + // order the results + if (options && options.order && id == undefined) { + this._sort(items, options.order); + } - return a; + // filter fields of the items + if (options && options.fields) { + var fields = options.fields; + if (id != undefined) { + item = this._filterFields(item, fields); } + else { + for (i = 0, len = items.length; i < len; i++) { + items[i] = this._filterFields(items[i], fields); + } + } + } - function copyConfig(to, from) { - var i, prop, val; - - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = from._pf; - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } - - return to; + // return the results + if (returnType == 'DataTable') { + var columns = this._getColumnNames(data); + if (id != undefined) { + // append a single item to the data table + me._appendRow(data, columns, item); } - - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } + else { + // copy the items to the provided data table + for (i = 0; i < items.length; i++) { + me._appendRow(data, columns, items[i]); + } } - - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; - - while (output.length < targetLength) { - output = '0' + output; + return data; + } + else if (returnType == "Object") { + var result = {}; + for (i = 0; i < items.length; i++) { + result[items[i].id] = items[i]; + } + return result; + } + else { + // return an array + if (id != undefined) { + // a single item + return item; + } + else { + // multiple items + if (data) { + // copy the items to the provided array + for (i = 0, len = items.length; i < len; i++) { + data.push(items[i]); } - return (sign ? (forceSign ? '+' : '') : '-') + output; + return data; + } + else { + // just return our array + return items; + } } + } + }; - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; + /** + * Get ids of all items or from a filtered set of items. + * @param {Object} [options] An Object with options. Available options: + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Array} ids + */ + DataSet.prototype.getIds = function (options) { + var data = this._data, + filter = options && options.filter, + order = options && options.order, + type = options && options.type || this._options.type, + i, + len, + id, + item, + items, + ids = []; - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; + if (filter) { + // get filtered items + if (order) { + // create ordered list + items = []; + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (filter(item)) { + items.push(item); + } } + } - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + this._sort(items, order); - return res; + for (i = 0, len = items.length; i < len; i++) { + ids[i] = items[i][this._fieldId]; + } } - - function momentsDifference(base, other) { - var res; - other = makeAs(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; + else { + // create unordered list + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (filter(item)) { + ids.push(item[this._fieldId]); + } } - - return res; + } } + } + else { + // get all items + if (order) { + // create an ordered list + items = []; + for (id in data) { + if (data.hasOwnProperty(id)) { + items.push(data[id]); + } + } - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; - } + this._sort(items, order); - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; + for (i = 0, len = items.length; i < len; i++) { + ids[i] = items[i][this._fieldId]; + } } - - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); - } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - moment.updateOffset(mom, days || months); + else { + // create unordered list + for (id in data) { + if (data.hasOwnProperty(id)) { + item = data[id]; + ids.push(item[this._fieldId]); } + } } + } - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } + return ids; + }; - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } + /** + * Returns the DataSet itself. Is overwritten for example by the DataView, + * which returns the DataSet it is connected to instead. + */ + DataSet.prototype.getDataSet = function () { + return this; + }; - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; - } + /** + * Execute a callback function for every item in the dataset. + * @param {function} callback + * @param {Object} [options] Available options: + * {Object.} [type] + * {String[]} [fields] filter fields + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + */ + DataSet.prototype.forEach = function (callback, options) { + var filter = options && options.filter, + type = options && options.type || this._options.type, + data = this._data, + item, + id; - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; + if (options && options.order) { + // execute forEach on ordered list + var items = this.get(options); + + for (var i = 0, len = items.length; i < len; i++) { + item = items[i]; + id = item[this._fieldId]; + callback(item, id); + } + } + else { + // unordered + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (!filter || filter(item)) { + callback(item, id); } - return units; + } } + } + }; - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } + /** + * Map every item in the dataset. + * @param {function} callback + * @param {Object} [options] Available options: + * {Object.} [type] + * {String[]} [fields] filter fields + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Object[]} mappedItems + */ + DataSet.prototype.map = function (callback, options) { + var filter = options && options.filter, + type = options && options.type || this._options.type, + mappedItems = [], + data = this._data, + item; - return normalizedInput; + // convert and filter items + for (var id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, type); + if (!filter || filter(item)) { + mappedItems.push(callback(item, id)); + } } + } - function makeList(field) { - var count, setter; - - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { - return; - } + // order items + if (options && options.order) { + this._sort(mappedItems, options.order); + } - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; + return mappedItems; + }; - if (typeof format === 'number') { - index = format; - format = undefined; - } + /** + * Filter the fields of an item + * @param {Object | null} item + * @param {String[]} fields Field names + * @return {Object | null} filteredItem or null if no item is provided + * @private + */ + DataSet.prototype._filterFields = function (item, fields) { + if (!item) { // item is null + return item; + } - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; + var filteredItem = {}; - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } - }; + for (var field in item) { + if (item.hasOwnProperty(field) && (fields.indexOf(field) != -1)) { + filteredItem[field] = item[field]; } + } - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } - } - - return value; - } + return filteredItem; + }; - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } + /** + * Sort the provided array with items + * @param {Object[]} items + * @param {String | function} order A field name or custom sort function. + * @private + */ + DataSet.prototype._sort = function (items, order) { + if (util.isString(order)) { + // order by provided field name + var name = order; // field name + items.sort(function (a, b) { + var av = a[name]; + var bv = b[name]; + return (av > bv) ? 1 : ((av < bv) ? -1 : 0); + }); + } + else if (typeof order === 'function') { + // order by sort function + items.sort(order); + } + // TODO: extend order by an Object {field:String, direction:String} + // where direction can be 'asc' or 'desc' + else { + throw new TypeError('Order must be a function or a string'); + } + }; - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } + /** + * Remove an object by pointer or by id + * @param {String | Number | Object | Array} id Object or id, or an array with + * objects or ids to be removed + * @param {String} [senderId] Optional sender id + * @return {Array} removedIds + */ + DataSet.prototype.remove = function (id, senderId) { + var removedIds = [], + i, len, removedId; - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; + if (Array.isArray(id)) { + for (i = 0, len = id.length; i < len; i++) { + removedId = this._remove(id[i]); + if (removedId != null) { + removedIds.push(removedId); + } } - - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + else { + removedId = this._remove(id); + if (removedId != null) { + removedIds.push(removedId); } + } - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 24 || - (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || - m._a[SECOND] !== 0 || - m._a[MILLISECOND] !== 0)) ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; + if (removedIds.length) { + this._trigger('remove', {items: removedIds}, senderId); + } - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } + return removedIds; + }; - m._pf.overflow = overflow; - } + /** + * Remove an item by its id + * @param {Number | String | Object} id id or item + * @returns {Number | String | null} id + * @private + */ + DataSet.prototype._remove = function (id) { + if (util.isNumber(id) || util.isString(id)) { + if (this._data[id]) { + delete this._data[id]; + this.length--; + return id; + } + } + else if (id instanceof Object) { + var itemId = id[this._fieldId]; + if (itemId && this._data[itemId]) { + delete this._data[itemId]; + this.length--; + return itemId; } + } + return null; + }; - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; + /** + * Clear the data + * @param {String} [senderId] Optional sender id + * @return {Array} removedIds The ids of all removed items + */ + DataSet.prototype.clear = function (senderId) { + var ids = Object.keys(this._data); - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0 && - m._pf.bigHour === undefined; - } - } - return m._isValid; - } + this._data = {}; + this.length = 0; - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } + this._trigger('remove', {items: ids}, senderId); - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; + return ids; + }; - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; - } + /** + * Find the item with maximum value of a specified field + * @param {String} field + * @return {Object | null} item Item containing max value, or null if no items + */ + DataSet.prototype.max = function (field) { + var data = this._data, + max = null, + maxField = null; - function loadLocale(name) { - var oldLocale = null; - if (!locales[name] && hasModule) { - try { - oldLocale = moment.locale(); - !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); - // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales - moment.locale(oldLocale); - } catch (e) { } - } - return locales[name]; + for (var id in data) { + if (data.hasOwnProperty(id)) { + var item = data[id]; + var itemField = item[field]; + if (itemField != null && (!max || itemField > maxField)) { + max = item; + maxField = itemField; + } } + } - // Return a moment from input, that is local/utc/utcOffset equivalent to - // model. - function makeAs(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (moment.isMoment(input) || isDate(input) ? - +input : +moment(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - moment.updateOffset(res, false); - return res; - } else { - return moment(input).local(); - } + return max; + }; + + /** + * Find the item with minimum value of a specified field + * @param {String} field + * @return {Object | null} item Item containing max value, or null if no items + */ + DataSet.prototype.min = function (field) { + var data = this._data, + min = null, + minField = null; + + for (var id in data) { + if (data.hasOwnProperty(id)) { + var item = data[id]; + var itemField = item[field]; + if (itemField != null && (!min || itemField < minField)) { + min = item; + minField = itemField; + } } + } - /************************************ - Locale - ************************************/ + return min; + }; + /** + * Find all distinct values of a specified field + * @param {String} field + * @return {Array} values Array containing all distinct values. If data items + * do not contain the specified field are ignored. + * The returned array is unordered. + */ + DataSet.prototype.distinct = function (field) { + var data = this._data; + var values = []; + var fieldType = this._options.type && this._options.type[field] || null; + var count = 0; + var i; - extend(Locale.prototype, { + for (var prop in data) { + if (data.hasOwnProperty(prop)) { + var item = data[prop]; + var value = item[field]; + var exists = false; + for (i = 0; i < count; i++) { + if (values[i] == value) { + exists = true; + break; + } + } + if (!exists && (value !== undefined)) { + values[count] = value; + count++; + } + } + } - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); - }, + if (fieldType) { + for (i = 0; i < values.length; i++) { + values[i] = util.convert(values[i], fieldType); + } + } - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, + return values; + }; - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, + /** + * Add a single item. Will fail when an item with the same id already exists. + * @param {Object} item + * @return {String} id + * @private + */ + DataSet.prototype._addItem = function (item) { + var id = item[this._fieldId]; - monthsParse : function (monthName, format, strict) { - var i, mom, regex; + if (id != undefined) { + // check whether this id is already taken + if (this._data[id]) { + // item already exists + throw new Error('Cannot add item: item with id ' + id + ' already exists'); + } + } + else { + // generate an id + id = util.randomUUID(); + item[this._fieldId] = id; + } - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } + var d = {}; + for (var field in item) { + if (item.hasOwnProperty(field)) { + var fieldType = this._type[field]; // type may be undefined + d[field] = util.convert(item[field], fieldType); + } + } + this._data[id] = d; + this.length++; - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = moment.utc([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - }, + return id; + }; - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, + /** + * Get an item. Fields can be converted to a specific type + * @param {String} id + * @param {Object.} [types] field types to convert + * @return {Object | null} item + * @private + */ + DataSet.prototype._getItem = function (id, types) { + var field, value; - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, + // get the item from the dataset + var raw = this._data[id]; + if (!raw) { + return null; + } - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, + // convert the items field types + var converted = {}; + if (types) { + for (field in raw) { + if (raw.hasOwnProperty(field)) { + value = raw[field]; + converted[field] = util.convert(value, types[field]); + } + } + } + else { + // no field types specified, no converting needed + for (field in raw) { + if (raw.hasOwnProperty(field)) { + value = raw[field]; + converted[field] = value; + } + } + } + return converted; + }; - weekdaysParse : function (weekdayName) { - var i, mom, regex; + /** + * Update a single item: merge with existing item. + * Will fail when the item has no id, or when there does not exist an item + * with the same id. + * @param {Object} item + * @return {String} id + * @private + */ + DataSet.prototype._updateItem = function (item) { + var id = item[this._fieldId]; + if (id == undefined) { + throw new Error('Cannot update item: item has no id (item: ' + JSON.stringify(item) + ')'); + } + var d = this._data[id]; + if (!d) { + // item doesn't exist + throw new Error('Cannot update item: no item with id ' + id + ' found'); + } - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } + // merge with current item + for (var field in item) { + if (item.hasOwnProperty(field)) { + var fieldType = this._type[field]; // type may be undefined + d[field] = util.convert(item[field], fieldType); + } + } - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - }, + return id; + }; - _longDateFormat : { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; - } - return output; - }, + /** + * Get an array with the column names of a Google DataTable + * @param {DataTable} dataTable + * @return {String[]} columnNames + * @private + */ + DataSet.prototype._getColumnNames = function (dataTable) { + var columns = []; + for (var col = 0, cols = dataTable.getNumberOfColumns(); col < cols; col++) { + columns[col] = dataTable.getColumnId(col) || dataTable.getColumnLabel(col); + } + return columns; + }; - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - }, + /** + * Append an item as a row to the dataTable + * @param dataTable + * @param columns + * @param item + * @private + */ + DataSet.prototype._appendRow = function (dataTable, columns, item) { + var row = dataTable.addRow(); - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - }, + for (var col = 0, cols = columns.length; col < cols; col++) { + var field = columns[col]; + dataTable.setValue(row, col, item[field]); + } + }; + module.exports = DataSet; - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom, [now]) : output; - }, - _relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, +/***/ }, +/* 4 */ +/***/ function(module, exports, __webpack_require__) { - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, + var util = __webpack_require__(1); + var DataSet = __webpack_require__(3); - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, + /** + * DataView + * + * a dataview offers a filtered view on a dataset or an other dataview. + * + * @param {DataSet | DataView} data + * @param {Object} [options] Available options: see method get + * + * @constructor DataView + */ + function DataView (data, options) { + this._data = null; + this._ids = {}; // ids of the items currently in memory (just contains a boolean true) + this.length = 0; // number of items in the DataView + this._options = options || {}; + this._fieldId = 'id'; // name of the field containing id + this._subscribers = {}; // event subscribers - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', - _ordinalParse : /\d{1,2}/, + var me = this; + this.listener = function () { + me._onEvent.apply(me, arguments); + }; - preparse : function (string) { - return string; - }, + this.setData(data); + } - postformat : function (string) { - return string; - }, + // TODO: implement a function .config() to dynamically update things like configured filter + // and trigger changes accordingly - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, + /** + * Set a data source for the view + * @param {DataSet | DataView} data + */ + DataView.prototype.setData = function (data) { + var ids, i, len; - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }, + if (this._data) { + // unsubscribe from current dataset + if (this._data.unsubscribe) { + this._data.unsubscribe('*', this.listener); + } - firstDayOfWeek : function () { - return this._week.dow; - }, + // trigger a remove of all items in memory + ids = []; + for (var id in this._ids) { + if (this._ids.hasOwnProperty(id)) { + ids.push(id); + } + } + this._ids = {}; + this.length = 0; + this._trigger('remove', {items: ids}); + } - firstDayOfYear : function () { - return this._week.doy; - }, + this._data = data; - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; - } - }); - - /************************************ - Formatting - ************************************/ + if (this._data) { + // update fieldId + this._fieldId = this._options.fieldId || + (this._data && this._data.options && this._data.options.fieldId) || + 'id'; + // trigger an add of all added items + ids = this._data.getIds({filter: this._options && this._options.filter}); + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + this._ids[id] = true; + } + this.length = ids.length; + this._trigger('add', {items: ids}); - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); + // subscribe to new dataset + if (this._data.on) { + this._data.on('*', this.listener); } + } + }; - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + /** + * Refresh the DataView. Useful when the DataView has a filter function + * containing a variable parameter. + */ + DataView.prototype.refresh = function () { + var id; + var ids = this._data.getIds({filter: this._options && this._options.filter}); + var newIds = {}; + var added = []; + var removed = []; - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } + // check for additions + for (var i = 0; i < ids.length; i++) { + id = ids[i]; + newIds[id] = true; + if (!this._ids[id]) { + added.push(id); + this._ids[id] = true; + this.length++; + } + } - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; - }; + // check for removals + for (id in this._ids) { + if (this._ids.hasOwnProperty(id)) { + if (!newIds[id]) { + removed.push(id); + delete this._ids[id]; + this.length--; + } } + } - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } + // trigger events + if (added.length) { + this._trigger('add', {items: added}); + } + if (removed.length) { + this._trigger('remove', {items: removed}); + } + }; - format = expandFormat(format, m.localeData()); + /** + * Get data from the data view + * + * Usage: + * + * get() + * get(options: Object) + * get(options: Object, data: Array | DataTable) + * + * get(id: Number) + * get(id: Number, options: Object) + * get(id: Number, options: Object, data: Array | DataTable) + * + * get(ids: Number[]) + * get(ids: Number[], options: Object) + * get(ids: Number[], options: Object, data: Array | DataTable) + * + * Where: + * + * {Number | String} id The id of an item + * {Number[] | String{}} ids An array with ids of items + * {Object} options An Object with options. Available options: + * {String} [type] Type of data to be returned. Can + * be 'DataTable' or 'Array' (default) + * {Object.} [convert] + * {String[]} [fields] field names to be returned + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * {Array | DataTable} [data] If provided, items will be appended to this + * array or table. Required in case of Google + * DataTable. + * @param args + */ + DataView.prototype.get = function (args) { + var me = this; - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); - } + // parse the arguments + var ids, options, data; + var firstType = util.getType(arguments[0]); + if (firstType == 'String' || firstType == 'Number' || firstType == 'Array') { + // get(id(s) [, options] [, data]) + ids = arguments[0]; // can be a single id or an array with ids + options = arguments[1]; + data = arguments[2]; + } + else { + // get([, options] [, data]) + options = arguments[0]; + data = arguments[1]; + } - return formatFunctions[format](m); + // extend the options with the default options and provided options + var viewOptions = util.extend({}, this._options, options); + + // create a combined filter method when needed + if (this._options.filter && options && options.filter) { + viewOptions.filter = function (item) { + return me._options.filter(item) && options.filter(item); } + } - function expandFormat(format, locale) { - var i = 5; + // build up the call to the linked data set + var getArguments = []; + if (ids != undefined) { + getArguments.push(ids); + } + getArguments.push(viewOptions); + getArguments.push(data); - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } + return this._data && this._data.get.apply(this._data, getArguments); + }; - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } + /** + * Get ids of all items or from a filtered set of items. + * @param {Object} [options] An Object with options. Available options: + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Array} ids + */ + DataView.prototype.getIds = function (options) { + var ids; - return format; + if (this._data) { + var defaultFilter = this._options.filter; + var filter; + + if (options && options.filter) { + if (defaultFilter) { + filter = function (item) { + return defaultFilter(item) && options.filter(item); + } + } + else { + filter = options.filter; + } + } + else { + filter = defaultFilter; } + ids = this._data.getIds({ + filter: filter, + order: options && options.order + }); + } + else { + ids = []; + } - /************************************ - Parsing - ************************************/ + return ids; + }; + /** + * Get the DataSet to which this DataView is connected. In case there is a chain + * of multiple DataViews, the root DataSet of this chain is returned. + * @return {DataSet} dataSet + */ + DataView.prototype.getDataSet = function () { + var dataSet = this; + while (dataSet instanceof DataView) { + dataSet = dataSet._data; + } + return dataSet || null; + }; - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { - return parseTokenOneDigit; - } - /* falls through */ - case 'SS': - if (strict) { - return parseTokenTwoDigits; - } - /* falls through */ - case 'SSS': - if (strict) { - return parseTokenThreeDigits; - } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return config._locale._meridiemParse; - case 'x': - return parseTokenOffsetMs; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); - return a; - } - } + /** + * Event listener. Will propagate all events from the connected data set to + * the subscribers of the DataView, but will filter the items and only trigger + * when there are changes in the filtered data set. + * @param {String} event + * @param {Object | null} params + * @param {String} senderId + * @private + */ + DataView.prototype._onEvent = function (event, params, senderId) { + var i, len, id, item; + var ids = params && params.items; + var data = this._data; + var updatedData = []; + var added = []; + var updated = []; + var removed = []; - function utcOffsetFromString(string) { - string = string || ''; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); + if (ids && data) { + switch (event) { + case 'add': + // filter the ids of the added items + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + item = this.get(id); + if (item) { + this._ids[id] = true; + added.push(id); + } + } - return parts[0] === '+' ? minutes : -minutes; - } + break; - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + case 'update': + // determine the event from the views viewpoint: an updated + // item can be added, updated, or removed from this view. + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + item = this.get(id); - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; - } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt( - input.match(/\d{1,2}/)[0], 10)); + if (item) { + if (this._ids[id]) { + updated.push(id); + updatedData.push(params.data[i]); } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); + else { + this._ids[id] = true; + added.push(id); } - - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._meridiem = input; - // config._isPm = config._locale.isPM(input); - break; - // HOUR - case 'h' : // fall through to hh - case 'hh' : - config._pf.bigHour = true; - /* falls through */ - case 'H' : // fall through to HH - case 'HH' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX OFFSET (MILLISECONDS) - case 'x': - config._d = new Date(toInt(input)); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = utcOffsetFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; - } else { - config._pf.invalidWeekday = input; + } + else { + if (this._ids[id]) { + delete this._ids[id]; + removed.push(id); } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); + else { + // nothing interesting for me :-( } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); + } } - } - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; + break; - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; + case 'remove': + // filter the ids of the removed items + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + if (this._ids[id]) { + delete this._ids[id]; + removed.push(id); + } + } - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + break; + } - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + this.length += added.length - removed.length; - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; + if (added.length) { + this._trigger('add', {items: added}, senderId); + } + if (updated.length) { + this._trigger('update', {items: updated, data: updatedData}, senderId); + } + if (removed.length) { + this._trigger('remove', {items: removed}, senderId); } + } + }; - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; + // copy subscription functionality from DataSet + DataView.prototype.on = DataSet.prototype.on; + DataView.prototype.off = DataSet.prototype.off; + DataView.prototype._trigger = DataSet.prototype._trigger; - if (config._d) { - return; - } + // TODO: make these functions deprecated (replaced with `on` and `off` since version 0.5) + DataView.prototype.subscribe = DataView.prototype.on; + DataView.prototype.unsubscribe = DataView.prototype.off; - currentDate = currentDateArray(config); + module.exports = DataView; - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } +/***/ }, +/* 5 */ +/***/ function(module, exports, __webpack_require__) { - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + /** + * A queue + * @param {Object} options + * Available options: + * - delay: number When provided, the queue will be flushed + * automatically after an inactivity of this delay + * in milliseconds. + * Default value is null. + * - max: number When the queue exceeds the given maximum number + * of entries, the queue is flushed automatically. + * Default value of max is Infinity. + * @constructor + */ + function Queue(options) { + // options + this.delay = null; + this.max = Infinity; - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; - } + // properties + this._queue = []; + this._timeout = null; + this._extended = null; - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + this.setOptions(options); + } - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } + /** + * Update the configuration of the queue + * @param {Object} options + * Available options: + * - delay: number When provided, the queue will be flushed + * automatically after an inactivity of this delay + * in milliseconds. + * Default value is null. + * - max: number When the queue exceeds the given maximum number + * of entries, the queue is flushed automatically. + * Default value of max is Infinity. + * @param options + */ + Queue.prototype.setOptions = function (options) { + if (options && typeof options.delay !== 'undefined') { + this.delay = options.delay; + } + if (options && typeof options.max !== 'undefined') { + this.max = options.max; + } - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } + this._flushIfNeeded(); + }; - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } + /** + * Extend an object with queuing functionality. + * The object will be extended with a function flush, and the methods provided + * in options.replace will be replaced with queued ones. + * @param {Object} object + * @param {Object} options + * Available options: + * - replace: Array. + * A list with method names of the methods + * on the object to be replaced with queued ones. + * - delay: number When provided, the queue will be flushed + * automatically after an inactivity of this delay + * in milliseconds. + * Default value is null. + * - max: number When the queue exceeds the given maximum number + * of entries, the queue is flushed automatically. + * Default value of max is Infinity. + * @return {Queue} Returns the created queue + */ + Queue.extend = function (object, options) { + var queue = new Queue(options); - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } + if (object.flush !== undefined) { + throw new Error('Target object already has a property flush'); + } + object.flush = function () { + queue.flush(); + }; - if (config._nextDay) { - config._a[HOUR] = 24; - } + var methods = [{ + name: 'flush', + original: undefined + }]; + + if (options && options.replace) { + for (var i = 0; i < options.replace.length; i++) { + var name = options.replace[i]; + methods.push({ + name: name, + original: object[name] + }); + queue.replace(object, name); } + } - function dateFromObject(config) { - var normalizedInput; + queue._extended = { + object: object, + methods: methods + }; - if (config._d) { - return; - } + return queue; + }; - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day || normalizedInput.date, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; + /** + * Destroy the queue. The queue will first flush all queued actions, and in + * case it has extended an object, will restore the original object. + */ + Queue.prototype.destroy = function () { + this.flush(); - dateFromConfig(config); + if (this._extended) { + var object = this._extended.object; + var methods = this._extended.methods; + for (var i = 0; i < methods.length; i++) { + var method = methods[i]; + if (method.original) { + object[method.name] = method.original; + } + else { + delete object[method.name]; + } } + this._extended = null; + } + }; - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; - } + /** + * Replace a method on an object with a queued version + * @param {Object} object Object having the method + * @param {string} method The method name + */ + Queue.prototype.replace = function(object, method) { + var me = this; + var original = object[method]; + if (!original) { + throw new Error('Method ' + method + ' undefined'); + } + + object[method] = function () { + // create an Array with the arguments + var args = []; + for (var i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; } - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; - } + // add this call to the queue + me.queue({ + args: args, + fn: original, + context: this + }); + }; + }; - config._a = []; - config._pf.empty = true; + /** + * Queue a call + * @param {function | {fn: function, args: Array} | {fn: function, args: Array, context: Object}} entry + */ + Queue.prototype.queue = function(entry) { + if (typeof entry === 'function') { + this._queue.push({fn: entry}); + } + else { + this._queue.push(entry); + } - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; + this._flushIfNeeded(); + }; - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + /** + * Check whether the queue needs to be flushed + * @private + */ + Queue.prototype._flushIfNeeded = function () { + // flush when the maximum is exceeded. + if (this._queue.length > this.max) { + this.flush(); + } - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - config._pf.empty = false; - } - else { - config._pf.unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); - } - } + // flush after a period of inactivity when a delay is configured + clearTimeout(this._timeout); + if (this.queue.length > 0 && typeof this.delay === 'number') { + var me = this; + this._timeout = setTimeout(function () { + me.flush(); + }, this.delay); + } + }; - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); - } + /** + * Flush all queued calls + */ + Queue.prototype.flush = function () { + while (this._queue.length > 0) { + var entry = this._queue.shift(); + entry.fn.apply(entry.context || entry.fn, entry.args || []); + } + }; - // clear _12h flag if hour is <= 12 - if (config._pf.bigHour === true && config._a[HOUR] <= 12) { - config._pf.bigHour = undefined; - } - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], - config._meridiem); - dateFromConfig(config); - checkOverflow(config); - } + module.exports = Queue; - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); - } - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } +/***/ }, +/* 6 */ +/***/ function(module, exports, __webpack_require__) { - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, + var Emitter = __webpack_require__(56); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var util = __webpack_require__(1); + var Point3d = __webpack_require__(10); + var Point2d = __webpack_require__(9); + var Camera = __webpack_require__(7); + var Filter = __webpack_require__(8); + var Slider = __webpack_require__(11); + var StepNumber = __webpack_require__(12); - scoreToBeat, - i, - currentScore; + /** + * @constructor Graph3d + * Graph3d displays data in 3d. + * + * Graph3d is developed in javascript as a Google Visualization Chart. + * + * @param {Element} container The DOM element in which the Graph3d will + * be created. Normally a div element. + * @param {DataSet | DataView | Array} [data] + * @param {Object} [options] + */ + function Graph3d(container, data, options) { + if (!(this instanceof Graph3d)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; - } + // create variables and set default values + this.containerElement = container; + this.width = '400px'; + this.height = '400px'; + this.margin = 10; // px + this.defaultXCenter = '55%'; + this.defaultYCenter = '50%'; - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); + this.xLabel = 'x'; + this.yLabel = 'y'; + this.zLabel = 'z'; - if (!isValid(tempConfig)) { - continue; - } + var passValueFn = function(v) { return v; }; + this.xValueLabel = passValueFn; + this.yValueLabel = passValueFn; + this.zValueLabel = passValueFn; + + this.filterLabel = 'time'; + this.legendLabel = 'value'; - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + this.style = Graph3d.STYLE.DOT; + this.showPerspective = true; + this.showGrid = true; + this.keepAspectRatio = true; + this.showShadow = false; + this.showGrayBottom = false; // TODO: this does not work correctly + this.showTooltip = false; + this.verticalRatio = 0.5; // 0.1 to 1.0, where 1.0 results in a 'cube' - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + this.animationInterval = 1000; // milliseconds + this.animationPreload = false; - tempConfig._pf.score = currentScore; + this.camera = new Camera(); + this.eye = new Point3d(0, 0, -1); // TODO: set eye.z about 3/4 of the width of the window? - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } + this.dataTable = null; // The original data table + this.dataPoints = null; // The table with point objects - extend(config, bestMoment || tempConfig); - } + // the column indexes + this.colX = undefined; + this.colY = undefined; + this.colZ = undefined; + this.colValue = undefined; + this.colFilter = undefined; - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); + this.xMin = 0; + this.xStep = undefined; // auto by default + this.xMax = 1; + this.yMin = 0; + this.yStep = undefined; // auto by default + this.yMax = 1; + this.zMin = 0; + this.zStep = undefined; // auto by default + this.zMax = 1; + this.valueMin = 0; + this.valueMax = 1; + this.xBarWidth = 1; + this.yBarWidth = 1; + // TODO: customize axis range - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be 'T' or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; - } - } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; - } - } + // constants + this.colorAxis = '#4D4D4D'; + this.colorGrid = '#D3D3D3'; + this.colorDot = '#7DC1FF'; + this.colorDotBorder = '#3267D2'; - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); - } - } + // create a frame and canvas + this.create(); - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } + // apply options (also when undefined) + this.setOptions(options); - function makeDateFromInput(config) { - var input = config._i, matched; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - dateFromConfig(config); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - moment.createFromInputFallback(config); - } - } + // apply data + if (data) { + this.setData(data); + } + } - function makeDate(y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); + // Extend Graph3d with an Emitter mixin + Emitter(Graph3d.prototype); - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; - } + /** + * Calculate the scaling values, dependent on the range in x, y, and z direction + */ + Graph3d.prototype._setScale = function() { + this.scale = new Point3d(1 / (this.xMax - this.xMin), + 1 / (this.yMax - this.yMin), + 1 / (this.zMax - this.zMin)); - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; + // keep aspect ration between x and y scale if desired + if (this.keepAspectRatio) { + if (this.scale.x < this.scale.y) { + //noinspection JSSuspiciousNameCombination + this.scale.y = this.scale.x; } - - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } - } - } - return input; + else { + //noinspection JSSuspiciousNameCombination + this.scale.x = this.scale.y; } + } - /************************************ - Relative Time - ************************************/ + // scale the vertical axis + this.scale.z *= this.verticalRatio; + // TODO: can this be automated? verticalRatio? + // determine scale for (optional) value + this.scale.value = 1 / (this.valueMax - this.valueMin); - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } + // position the camera arm + var xCenter = (this.xMax + this.xMin) / 2 * this.scale.x; + var yCenter = (this.yMax + this.yMin) / 2 * this.scale.y; + var zCenter = (this.zMax + this.zMin) / 2 * this.scale.z; + this.camera.setArmLocation(xCenter, yCenter, zCenter); + }; - function relativeTime(posNegDuration, withoutSuffix, locale) { - var duration = moment.duration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - years = round(duration.as('y')), - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < relativeTimeThresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < relativeTimeThresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; + /** + * Convert a 3D location to a 2D location on screen + * http://en.wikipedia.org/wiki/3D_projection + * @param {Point3d} point3d A 3D point with parameters x, y, z + * @return {Point2d} point2d A 2D point with parameters x, y + */ + Graph3d.prototype._convert3Dto2D = function(point3d) { + var translation = this._convertPointToTranslation(point3d); + return this._convertTranslationToScreen(translation); + }; - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); - } + /** + * Convert a 3D location its translation seen from the camera + * http://en.wikipedia.org/wiki/3D_projection + * @param {Point3d} point3d A 3D point with parameters x, y, z + * @return {Point3d} translation A 3D point with parameters x, y, z This is + * the translation of the point, seen from the + * camera + */ + Graph3d.prototype._convertPointToTranslation = function(point3d) { + var ax = point3d.x * this.scale.x, + ay = point3d.y * this.scale.y, + az = point3d.z * this.scale.z, + cx = this.camera.getCameraLocation().x, + cy = this.camera.getCameraLocation().y, + cz = this.camera.getCameraLocation().z, - /************************************ - Week of Year - ************************************/ + // calculate angles + sinTx = Math.sin(this.camera.getCameraRotation().x), + cosTx = Math.cos(this.camera.getCameraRotation().x), + sinTy = Math.sin(this.camera.getCameraRotation().y), + cosTy = Math.cos(this.camera.getCameraRotation().y), + sinTz = Math.sin(this.camera.getCameraRotation().z), + cosTz = Math.cos(this.camera.getCameraRotation().z), + // calculate translation + dx = cosTy * (sinTz * (ay - cy) + cosTz * (ax - cx)) - sinTy * (az - cz), + dy = sinTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) + cosTx * (cosTz * (ay - cy) - sinTz * (ax-cx)), + dz = cosTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) - sinTx * (cosTz * (ay - cy) - sinTz * (ax-cx)); - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; + return new Point3d(dx, dy, dz); + }; + /** + * Convert a translation point to a point on the screen + * @param {Point3d} translation A 3D point with parameters x, y, z This is + * the translation of the point, seen from the + * camera + * @return {Point2d} point2d A 2D point with parameters x, y + */ + Graph3d.prototype._convertTranslationToScreen = function(translation) { + var ex = this.eye.x, + ey = this.eye.y, + ez = this.eye.z, + dx = translation.x, + dy = translation.y, + dz = translation.z; - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } + // calculate position on screen from translation + var bx; + var by; + if (this.showPerspective) { + bx = (dx - ex) * (ez / dz); + by = (dy - ey) * (ez / dz); + } + else { + bx = dx * -(ez / this.camera.getArmLength()); + by = dy * -(ez / this.camera.getArmLength()); + } - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } + // shift and scale the point to the center of the screen + // use the width of the graph to scale both horizontally and vertically. + return new Point2d( + this.xcenter + bx * this.frame.canvas.clientWidth, + this.ycenter - by * this.frame.canvas.clientWidth); + }; - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; - } + /** + * Set the background styling for the graph + * @param {string | {fill: string, stroke: string, strokeWidth: string}} backgroundColor + */ + Graph3d.prototype._setBackgroundColor = function(backgroundColor) { + var fill = 'white'; + var stroke = 'gray'; + var strokeWidth = 1; - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; + if (typeof(backgroundColor) === 'string') { + fill = backgroundColor; + stroke = 'none'; + strokeWidth = 0; + } + else if (typeof(backgroundColor) === 'object') { + if (backgroundColor.fill !== undefined) fill = backgroundColor.fill; + if (backgroundColor.stroke !== undefined) stroke = backgroundColor.stroke; + if (backgroundColor.strokeWidth !== undefined) strokeWidth = backgroundColor.strokeWidth; + } + else if (backgroundColor === undefined) { + // use use defaults + } + else { + throw 'Unsupported type of backgroundColor'; + } - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + this.frame.style.backgroundColor = fill; + this.frame.style.borderColor = stroke; + this.frame.style.borderWidth = strokeWidth + 'px'; + this.frame.style.borderStyle = 'solid'; + }; - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; - } - /************************************ - Top Level Functions - ************************************/ + /// enumerate the available styles + Graph3d.STYLE = { + BAR: 0, + BARCOLOR: 1, + BARSIZE: 2, + DOT : 3, + DOTLINE : 4, + DOTCOLOR: 5, + DOTSIZE: 6, + GRID : 7, + LINE: 8, + SURFACE : 9 + }; - function makeMoment(config) { - var input = config._i, - format = config._f, - res; + /** + * Retrieve the style index from given styleName + * @param {string} styleName Style name such as 'dot', 'grid', 'dot-line' + * @return {Number} styleNumber Enumeration value representing the style, or -1 + * when not found + */ + Graph3d.prototype._getStyleNumber = function(styleName) { + switch (styleName) { + case 'dot': return Graph3d.STYLE.DOT; + case 'dot-line': return Graph3d.STYLE.DOTLINE; + case 'dot-color': return Graph3d.STYLE.DOTCOLOR; + case 'dot-size': return Graph3d.STYLE.DOTSIZE; + case 'line': return Graph3d.STYLE.LINE; + case 'grid': return Graph3d.STYLE.GRID; + case 'surface': return Graph3d.STYLE.SURFACE; + case 'bar': return Graph3d.STYLE.BAR; + case 'bar-color': return Graph3d.STYLE.BARCOLOR; + case 'bar-size': return Graph3d.STYLE.BARSIZE; + } - config._locale = config._locale || moment.localeData(config._l); + return -1; + }; - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } + /** + * Determine the indexes of the data columns, based on the given style and data + * @param {DataSet} data + * @param {Number} style + */ + Graph3d.prototype._determineColumnIndexes = function(data, style) { + if (this.style === Graph3d.STYLE.DOT || + this.style === Graph3d.STYLE.DOTLINE || + this.style === Graph3d.STYLE.LINE || + this.style === Graph3d.STYLE.GRID || + this.style === Graph3d.STYLE.SURFACE || + this.style === Graph3d.STYLE.BAR) { + // 3 columns expected, and optionally a 4th with filter values + this.colX = 0; + this.colY = 1; + this.colZ = 2; + this.colValue = undefined; - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } + if (data.getNumberOfColumns() > 3) { + this.colFilter = 3; + } + } + else if (this.style === Graph3d.STYLE.DOTCOLOR || + this.style === Graph3d.STYLE.DOTSIZE || + this.style === Graph3d.STYLE.BARCOLOR || + this.style === Graph3d.STYLE.BARSIZE) { + // 4 columns expected, and optionally a 5th with filter values + this.colX = 0; + this.colY = 1; + this.colZ = 2; + this.colValue = 3; - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); - } - } else { - makeDateFromInput(config); - } + if (data.getNumberOfColumns() > 4) { + this.colFilter = 4; + } + } + else { + throw 'Unknown style "' + this.style + '"'; + } + }; - res = new Moment(config); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } + Graph3d.prototype.getNumberOfRows = function(data) { + return data.length; + } - return res; + + Graph3d.prototype.getNumberOfColumns = function(data) { + var counter = 0; + for (var column in data[0]) { + if (data[0].hasOwnProperty(column)) { + counter++; } + } + return counter; + } - moment = function (input, format, locale, strict) { - var c; - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = locale; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); + Graph3d.prototype.getDistinctValues = function(data, column) { + var distinctValues = []; + for (var i = 0; i < data.length; i++) { + if (distinctValues.indexOf(data[i][column]) == -1) { + distinctValues.push(data[i][column]); + } + } + return distinctValues; + } - return makeMoment(c); - }; - moment.suppressDeprecationWarnings = false; + Graph3d.prototype.getColumnRange = function(data,column) { + var minMax = {min:data[0][column],max:data[0][column]}; + for (var i = 0; i < data.length; i++) { + if (minMax.min > data[i][column]) { minMax.min = data[i][column]; } + if (minMax.max < data[i][column]) { minMax.max = data[i][column]; } + } + return minMax; + }; - moment.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); + /** + * Initialize the data from the data table. Calculate minimum and maximum values + * and column index values + * @param {Array | DataSet | DataView} rawData The data containing the items for the Graph. + * @param {Number} style Style Number + */ + Graph3d.prototype._dataInitialize = function (rawData, style) { + var me = this; - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return moment(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; - } - } - return res; - } + // unsubscribe from the dataTable + if (this.dataSet) { + this.dataSet.off('*', this._onChange); + } - moment.min = function () { - var args = [].slice.call(arguments, 0); + if (rawData === undefined) + return; - return pickBy('isBefore', args); - }; + if (Array.isArray(rawData)) { + rawData = new DataSet(rawData); + } - moment.max = function () { - var args = [].slice.call(arguments, 0); + var data; + if (rawData instanceof DataSet || rawData instanceof DataView) { + data = rawData.get(); + } + else { + throw new Error('Array, DataSet, or DataView expected'); + } - return pickBy('isAfter', args); - }; + if (data.length == 0) + return; - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; + this.dataSet = rawData; + this.dataTable = data; - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); + // subscribe to changes in the dataset + this._onChange = function () { + me.setData(me.dataSet); + }; + this.dataSet.on('*', this._onChange); - return makeMoment(c).utc(); - }; + // _determineColumnIndexes + // getNumberOfRows (points) + // getNumberOfColumns (x,y,z,v,t,t1,t2...) + // getDistinctValues (unique values?) + // getColumnRange - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + // determine the location of x,y,z,value,filter columns + this.colX = 'x'; + this.colY = 'y'; + this.colZ = 'z'; + this.colValue = 'style'; + this.colFilter = 'filter'; - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; - if (moment.isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; - duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && - ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(moment(duration.from), moment(duration.to)); - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } + // check if a filter column is provided + if (data[0].hasOwnProperty('filter')) { + if (this.dataFilter === undefined) { + this.dataFilter = new Filter(rawData, this.colFilter, this); + this.dataFilter.setOnLoadCallback(function() {me.redraw();}); + } + } - ret = new Duration(duration); - if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } + var withBars = this.style == Graph3d.STYLE.BAR || + this.style == Graph3d.STYLE.BARCOLOR || + this.style == Graph3d.STYLE.BARSIZE; - return ret; - }; + // determine barWidth from data + if (withBars) { + if (this.defaultXBarWidth !== undefined) { + this.xBarWidth = this.defaultXBarWidth; + } + else { + var dataX = this.getDistinctValues(data,this.colX); + this.xBarWidth = (dataX[1] - dataX[0]) || 1; + } - // version number - moment.version = VERSION; + if (this.defaultYBarWidth !== undefined) { + this.yBarWidth = this.defaultYBarWidth; + } + else { + var dataY = this.getDistinctValues(data,this.colY); + this.yBarWidth = (dataY[1] - dataY[0]) || 1; + } + } - // default format - moment.defaultFormat = isoFormat; + // calculate minimums and maximums + var xRange = this.getColumnRange(data,this.colX); + if (withBars) { + xRange.min -= this.xBarWidth / 2; + xRange.max += this.xBarWidth / 2; + } + this.xMin = (this.defaultXMin !== undefined) ? this.defaultXMin : xRange.min; + this.xMax = (this.defaultXMax !== undefined) ? this.defaultXMax : xRange.max; + if (this.xMax <= this.xMin) this.xMax = this.xMin + 1; + this.xStep = (this.defaultXStep !== undefined) ? this.defaultXStep : (this.xMax-this.xMin)/5; - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + var yRange = this.getColumnRange(data,this.colY); + if (withBars) { + yRange.min -= this.yBarWidth / 2; + yRange.max += this.yBarWidth / 2; + } + this.yMin = (this.defaultYMin !== undefined) ? this.defaultYMin : yRange.min; + this.yMax = (this.defaultYMax !== undefined) ? this.defaultYMax : yRange.max; + if (this.yMax <= this.yMin) this.yMax = this.yMin + 1; + this.yStep = (this.defaultYStep !== undefined) ? this.defaultYStep : (this.yMax-this.yMin)/5; - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + var zRange = this.getColumnRange(data,this.colZ); + this.zMin = (this.defaultZMin !== undefined) ? this.defaultZMin : zRange.min; + this.zMax = (this.defaultZMax !== undefined) ? this.defaultZMax : zRange.max; + if (this.zMax <= this.zMin) this.zMax = this.zMin + 1; + this.zStep = (this.defaultZStep !== undefined) ? this.defaultZStep : (this.zMax-this.zMin)/5; - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; + if (this.colValue !== undefined) { + var valueRange = this.getColumnRange(data,this.colValue); + this.valueMin = (this.defaultValueMin !== undefined) ? this.defaultValueMin : valueRange.min; + this.valueMax = (this.defaultValueMax !== undefined) ? this.defaultValueMax : valueRange.max; + if (this.valueMax <= this.valueMin) this.valueMax = this.valueMin + 1; + } - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function (threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return relativeTimeThresholds[threshold]; - } - relativeTimeThresholds[threshold] = limit; - return true; - }; + // set the scale dependent on the ranges. + this._setScale(); + }; - moment.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - function (key, value) { - return moment.locale(key, value); - } - ); - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - moment.locale = function (key, values) { - var data; - if (key) { - if (typeof(values) !== 'undefined') { - data = moment.defineLocale(key, values); - } - else { - data = moment.localeData(key); - } - if (data) { - moment.duration._locale = moment._locale = data; - } - } + /** + * Filter the data based on the current filter + * @param {Array} data + * @return {Array} dataPoints Array with point objects which can be drawn on screen + */ + Graph3d.prototype._getDataPoints = function (data) { + // TODO: store the created matrix dataPoints in the filters instead of reloading each time + var x, y, i, z, obj, point; - return moment._locale._abbr; - }; + var dataPoints = []; - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); - } - locales[name].set(values); + if (this.style === Graph3d.STYLE.GRID || + this.style === Graph3d.STYLE.SURFACE) { + // copy all values from the google data table to a matrix + // the provided values are supposed to form a grid of (x,y) positions - // backwards compat for now: also set the locale - moment.locale(name); + // create two lists with all present x and y values + var dataX = []; + var dataY = []; + for (i = 0; i < this.getNumberOfRows(data); i++) { + x = data[i][this.colX] || 0; + y = data[i][this.colY] || 0; - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - }; + if (dataX.indexOf(x) === -1) { + dataX.push(x); + } + if (dataY.indexOf(y) === -1) { + dataY.push(y); + } + } - moment.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - function (key) { - return moment.localeData(key); - } - ); + var sortNumber = function (a, b) { + return a - b; + }; + dataX.sort(sortNumber); + dataY.sort(sortNumber); - // returns locale data - moment.localeData = function (key) { - var locale; + // create a grid, a 2d matrix, with all values. + var dataMatrix = []; // temporary data matrix + for (i = 0; i < data.length; i++) { + x = data[i][this.colX] || 0; + y = data[i][this.colY] || 0; + z = data[i][this.colZ] || 0; - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } + var xIndex = dataX.indexOf(x); // TODO: implement Array().indexOf() for Internet Explorer + var yIndex = dataY.indexOf(y); - if (!key) { - return moment._locale; - } + if (dataMatrix[xIndex] === undefined) { + dataMatrix[xIndex] = []; + } - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } + var point3d = new Point3d(); + point3d.x = x; + point3d.y = y; + point3d.z = z; - return chooseLocale(key); - }; + obj = {}; + obj.point = point3d; + obj.trans = undefined; + obj.screen = undefined; + obj.bottom = new Point3d(x, y, this.zMin); - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && hasOwnProp(obj, '_isAMomentObject')); - }; + dataMatrix[xIndex][yIndex] = obj; - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; + dataPoints.push(obj); + } - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); + // fill in the pointers to the neighbors. + for (x = 0; x < dataMatrix.length; x++) { + for (y = 0; y < dataMatrix[x].length; y++) { + if (dataMatrix[x][y]) { + dataMatrix[x][y].pointRight = (x < dataMatrix.length-1) ? dataMatrix[x+1][y] : undefined; + dataMatrix[x][y].pointTop = (y < dataMatrix[x].length-1) ? dataMatrix[x][y+1] : undefined; + dataMatrix[x][y].pointCross = + (x < dataMatrix.length-1 && y < dataMatrix[x].length-1) ? + dataMatrix[x+1][y+1] : + undefined; + } + } } + } + else { // 'dot', 'dot-line', etc. + // copy all values from the google data table to a list with Point3d objects + for (i = 0; i < data.length; i++) { + point = new Point3d(); + point.x = data[i][this.colX] || 0; + point.y = data[i][this.colY] || 0; + point.z = data[i][this.colZ] || 0; - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; + if (this.colValue !== undefined) { + point.value = data[i][this.colValue] || 0; + } - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; - } + obj = {}; + obj.point = point; + obj.bottom = new Point3d(point.x, point.y, this.zMin); + obj.trans = undefined; + obj.screen = undefined; - return m; - }; + dataPoints.push(obj); + } + } - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + return dataPoints; + }; - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; + /** + * Create the main frame for the Graph3d. + * This function is executed once when a Graph3d object is created. The frame + * contains a canvas, and this canvas contains all objects like the axis and + * nodes. + */ + Graph3d.prototype.create = function () { + // remove all elements from the container element. + while (this.containerElement.hasChildNodes()) { + this.containerElement.removeChild(this.containerElement.firstChild); + } - moment.isDate = isDate; + this.frame = document.createElement('div'); + this.frame.style.position = 'relative'; + this.frame.style.overflow = 'hidden'; - /************************************ - Moment Prototype - ************************************/ + // create the graph canvas (HTML canvas element) + this.frame.canvas = document.createElement( 'canvas' ); + this.frame.canvas.style.position = 'relative'; + this.frame.appendChild(this.frame.canvas); + //if (!this.frame.canvas.getContext) { + { + var noCanvas = document.createElement( 'DIV' ); + noCanvas.style.color = 'red'; + noCanvas.style.fontWeight = 'bold' ; + noCanvas.style.padding = '10px'; + noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; + this.frame.canvas.appendChild(noCanvas); + } + this.frame.filter = document.createElement( 'div' ); + this.frame.filter.style.position = 'absolute'; + this.frame.filter.style.bottom = '0px'; + this.frame.filter.style.left = '0px'; + this.frame.filter.style.width = '100%'; + this.frame.appendChild(this.frame.filter); - extend(moment.fn = Moment.prototype, { + // add event listeners to handle moving and zooming the contents + var me = this; + var onmousedown = function (event) {me._onMouseDown(event);}; + var ontouchstart = function (event) {me._onTouchStart(event);}; + var onmousewheel = function (event) {me._onWheel(event);}; + var ontooltip = function (event) {me._onTooltip(event);}; + // TODO: these events are never cleaned up... can give a 'memory leakage' - clone : function () { - return moment(this); - }, + util.addEventListener(this.frame.canvas, 'keydown', onkeydown); + util.addEventListener(this.frame.canvas, 'mousedown', onmousedown); + util.addEventListener(this.frame.canvas, 'touchstart', ontouchstart); + util.addEventListener(this.frame.canvas, 'mousewheel', onmousewheel); + util.addEventListener(this.frame.canvas, 'mousemove', ontooltip); - valueOf : function () { - return +this._d - ((this._offset || 0) * 60000); - }, + // add the new graph to the container element + this.containerElement.appendChild(this.frame); + }; - unix : function () { - return Math.floor(+this / 1000); - }, - toString : function () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - }, + /** + * Set a new size for the graph + * @param {string} width Width in pixels or percentage (for example '800px' + * or '50%') + * @param {string} height Height in pixels or percentage (for example '400px' + * or '30%') + */ + Graph3d.prototype.setSize = function(width, height) { + this.frame.style.width = width; + this.frame.style.height = height; - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, + this._resizeCanvas(); + }; - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - }, + /** + * Resize the canvas to the current size of the frame + */ + Graph3d.prototype._resizeCanvas = function() { + this.frame.canvas.style.width = '100%'; + this.frame.canvas.style.height = '100%'; - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, + this.frame.canvas.width = this.frame.canvas.clientWidth; + this.frame.canvas.height = this.frame.canvas.clientHeight; - isValid : function () { - return isValid(this); - }, + // adjust with for margin + this.frame.filter.style.width = (this.frame.canvas.clientWidth - 2 * 10) + 'px'; + }; - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } + /** + * Start animation + */ + Graph3d.prototype.animationStart = function() { + if (!this.frame.filter || !this.frame.filter.slider) + throw 'No animation available'; - return false; - }, + this.frame.filter.slider.play(); + }; - parsingFlags : function () { - return extend({}, this._pf); - }, - invalidAt: function () { - return this._pf.overflow; - }, + /** + * Stop animation + */ + Graph3d.prototype.animationStop = function() { + if (!this.frame.filter || !this.frame.filter.slider) return; - utc : function (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - }, + this.frame.filter.slider.stop(); + }; - local : function (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; - if (keepLocalTime) { - this.subtract(this._dateUtcOffset(), 'm'); - } - } - return this; - }, + /** + * Resize the center position based on the current values in this.defaultXCenter + * and this.defaultYCenter (which are strings with a percentage or a value + * in pixels). The center positions are the variables this.xCenter + * and this.yCenter + */ + Graph3d.prototype._resizeCenter = function() { + // calculate the horizontal center position + if (this.defaultXCenter.charAt(this.defaultXCenter.length-1) === '%') { + this.xcenter = + parseFloat(this.defaultXCenter) / 100 * + this.frame.canvas.clientWidth; + } + else { + this.xcenter = parseFloat(this.defaultXCenter); // supposed to be in px + } - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, + // calculate the vertical center position + if (this.defaultYCenter.charAt(this.defaultYCenter.length-1) === '%') { + this.ycenter = + parseFloat(this.defaultYCenter) / 100 * + (this.frame.canvas.clientHeight - this.frame.filter.clientHeight); + } + else { + this.ycenter = parseFloat(this.defaultYCenter); // supposed to be in px + } + }; - add : createAdder(1, 'add'), + /** + * Set the rotation and distance of the camera + * @param {Object} pos An object with the camera position. The object + * contains three parameters: + * - horizontal {Number} + * The horizontal rotation, between 0 and 2*PI. + * Optional, can be left undefined. + * - vertical {Number} + * The vertical rotation, between 0 and 0.5*PI + * if vertical=0.5*PI, the graph is shown from the + * top. Optional, can be left undefined. + * - distance {Number} + * The (normalized) distance of the camera to the + * center of the graph, a value between 0.71 and 5.0. + * Optional, can be left undefined. + */ + Graph3d.prototype.setCameraPosition = function(pos) { + if (pos === undefined) { + return; + } - subtract : createAdder(-1, 'subtract'), + if (pos.horizontal !== undefined && pos.vertical !== undefined) { + this.camera.setArmRotation(pos.horizontal, pos.vertical); + } - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, - anchor, diff, output, daysAdjust; + if (pos.distance !== undefined) { + this.camera.setArmLength(pos.distance); + } - units = normalizeUnits(units); + this.redraw(); + }; - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - diff = this - that; - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, + /** + * Retrieve the current camera rotation + * @return {object} An object with parameters horizontal, vertical, and + * distance + */ + Graph3d.prototype.getCameraPosition = function() { + var pos = this.camera.getArmRotation(); + pos.distance = this.camera.getArmLength(); + return pos; + }; - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, + /** + * Load data into the 3D Graph + */ + Graph3d.prototype._readData = function(data) { + // read the data + this._dataInitialize(data, this.style); - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're locat/utc/offset - // or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this, moment(now))); - }, - isLeapYear : function () { - return isLeapYear(this.year()); - }, + if (this.dataFilter) { + // apply filtering + this.dataPoints = this.dataFilter._getDataPoints(); + } + else { + // no filtering. load all data + this.dataPoints = this._getDataPoints(this.dataTable); + } - isDST : function () { - return (this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset()); - }, + // draw the filter + this._redrawFilter(); + }; - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - }, + /** + * Replace the dataset of the Graph3d + * @param {Array | DataSet | DataView} data + */ + Graph3d.prototype.setData = function (data) { + this._readData(data); + this.redraw(); - month : makeAccessor('Month', true), + // start animation when option is true + if (this.animationAutoStart && this.dataFilter) { + this.animationStart(); + } + }; - startOf : function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ - } + /** + * Update the options. Options will be merged with current options + * @param {Object} options + */ + Graph3d.prototype.setOptions = function (options) { + var cameraPosition = undefined; - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } + this.animationStop(); - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } + if (options !== undefined) { + // retrieve parameter values + if (options.width !== undefined) this.width = options.width; + if (options.height !== undefined) this.height = options.height; - return this; - }, + if (options.xCenter !== undefined) this.defaultXCenter = options.xCenter; + if (options.yCenter !== undefined) this.defaultYCenter = options.yCenter; - endOf: function (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, + if (options.filterLabel !== undefined) this.filterLabel = options.filterLabel; + if (options.legendLabel !== undefined) this.legendLabel = options.legendLabel; + if (options.xLabel !== undefined) this.xLabel = options.xLabel; + if (options.yLabel !== undefined) this.yLabel = options.yLabel; + if (options.zLabel !== undefined) this.zLabel = options.zLabel; - isAfter: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this > +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return inputMs < +this.clone().startOf(units); - } - }, + if (options.xValueLabel !== undefined) this.xValueLabel = options.xValueLabel; + if (options.yValueLabel !== undefined) this.yValueLabel = options.yValueLabel; + if (options.zValueLabel !== undefined) this.zValueLabel = options.zValueLabel; - isBefore: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this < +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return +this.clone().endOf(units) < inputMs; - } - }, + if (options.style !== undefined) { + var styleNumber = this._getStyleNumber(options.style); + if (styleNumber !== -1) { + this.style = styleNumber; + } + } + if (options.showGrid !== undefined) this.showGrid = options.showGrid; + if (options.showPerspective !== undefined) this.showPerspective = options.showPerspective; + if (options.showShadow !== undefined) this.showShadow = options.showShadow; + if (options.tooltip !== undefined) this.showTooltip = options.tooltip; + if (options.showAnimationControls !== undefined) this.showAnimationControls = options.showAnimationControls; + if (options.keepAspectRatio !== undefined) this.keepAspectRatio = options.keepAspectRatio; + if (options.verticalRatio !== undefined) this.verticalRatio = options.verticalRatio; - isBetween: function (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); - }, + if (options.animationInterval !== undefined) this.animationInterval = options.animationInterval; + if (options.animationPreload !== undefined) this.animationPreload = options.animationPreload; + if (options.animationAutoStart !== undefined)this.animationAutoStart = options.animationAutoStart; - isSame: function (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this === +input; - } else { - inputMs = +moment(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); - } - }, + if (options.xBarWidth !== undefined) this.defaultXBarWidth = options.xBarWidth; + if (options.yBarWidth !== undefined) this.defaultYBarWidth = options.yBarWidth; - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), + if (options.xMin !== undefined) this.defaultXMin = options.xMin; + if (options.xStep !== undefined) this.defaultXStep = options.xStep; + if (options.xMax !== undefined) this.defaultXMax = options.xMax; + if (options.yMin !== undefined) this.defaultYMin = options.yMin; + if (options.yStep !== undefined) this.defaultYStep = options.yStep; + if (options.yMax !== undefined) this.defaultYMax = options.yMax; + if (options.zMin !== undefined) this.defaultZMin = options.zMin; + if (options.zStep !== undefined) this.defaultZStep = options.zStep; + if (options.zMax !== undefined) this.defaultZMax = options.zMax; + if (options.valueMin !== undefined) this.defaultValueMin = options.valueMin; + if (options.valueMax !== undefined) this.defaultValueMax = options.valueMax; - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), + if (options.cameraPosition !== undefined) cameraPosition = options.cameraPosition; - zone : deprecate( - 'moment().zone is deprecated, use moment().utcOffset instead. ' + - 'https://github.com/moment/moment/issues/1779', - function (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } + if (cameraPosition !== undefined) { + this.camera.setArmRotation(cameraPosition.horizontal, cameraPosition.vertical); + this.camera.setArmLength(cameraPosition.distance); + } + else { + this.camera.setArmRotation(1.0, 0.5); + this.camera.setArmLength(1.7); + } + } - this.utcOffset(input, keepLocalTime); + this._setBackgroundColor(options && options.backgroundColor); - return this; - } else { - return -this.utcOffset(); - } - } - ), + this.setSize(this.width, this.height); - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - utcOffset : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = utcOffsetFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._dateUtcOffset(); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } - } + // re-load the data + if (this.dataTable) { + this.setData(this.dataTable); + } - return this; - } else { - return this._isUTC ? offset : this._dateUtcOffset(); - } - }, + // start animation when option is true + if (this.animationAutoStart && this.dataFilter) { + this.animationStart(); + } + }; - isLocal : function () { - return !this._isUTC; - }, + /** + * Redraw the Graph. + */ + Graph3d.prototype.redraw = function() { + if (this.dataPoints === undefined) { + throw 'Error: graph data not initialized'; + } - isUtcOffset : function () { - return this._isUTC; - }, + this._resizeCanvas(); + this._resizeCenter(); + this._redrawSlider(); + this._redrawClear(); + this._redrawAxis(); - isUtc : function () { - return this._isUTC && this._offset === 0; - }, + if (this.style === Graph3d.STYLE.GRID || + this.style === Graph3d.STYLE.SURFACE) { + this._redrawDataGrid(); + } + else if (this.style === Graph3d.STYLE.LINE) { + this._redrawDataLine(); + } + else if (this.style === Graph3d.STYLE.BAR || + this.style === Graph3d.STYLE.BARCOLOR || + this.style === Graph3d.STYLE.BARSIZE) { + this._redrawDataBar(); + } + else { + // style is DOT, DOTLINE, DOTCOLOR, DOTSIZE + this._redrawDataDot(); + } - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, + this._redrawInfo(); + this._redrawLegend(); + }; - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, + /** + * Clear the canvas before redrawing + */ + Graph3d.prototype._redrawClear = function() { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); - parseZone : function () { - if (this._tzm) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - this.utcOffset(utcOffsetFromString(this._i)); - } - return this; - }, + ctx.clearRect(0, 0, canvas.width, canvas.height); + }; - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).utcOffset(); - } - return (this.utcOffset() - input) % 60 === 0; - }, + /** + * Redraw the legend showing the colors + */ + Graph3d.prototype._redrawLegend = function() { + var y; - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + if (this.style === Graph3d.STYLE.DOTCOLOR || + this.style === Graph3d.STYLE.DOTSIZE) { - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - }, + var dotSize = this.frame.clientWidth * 0.02; - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + var widthMin, widthMax; + if (this.style === Graph3d.STYLE.DOTSIZE) { + widthMin = dotSize / 2; // px + widthMax = dotSize / 2 + dotSize * 2; // Todo: put this in one function + } + else { + widthMin = 20; // px + widthMax = 20; // px + } - weekYear : function (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - }, + var height = Math.max(this.frame.clientHeight * 0.25, 100); + var top = this.margin; + var right = this.frame.clientWidth - this.margin; + var left = right - widthMax; + var bottom = top + height; + } - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); + ctx.lineWidth = 1; + ctx.font = '14px arial'; // TODO: put in options - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + if (this.style === Graph3d.STYLE.DOTCOLOR) { + // draw the color bar + var ymin = 0; + var ymax = height; // Todo: make height customizable + for (y = ymin; y < ymax; y++) { + var f = (y - ymin) / (ymax - ymin); - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + //var width = (dotSize / 2 + (1-f) * dotSize * 2); // Todo: put this in one function + var hue = f * 240; + var color = this._hsv2rgb(hue, 1, 1); - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, + ctx.strokeStyle = color; + ctx.beginPath(); + ctx.moveTo(left, top + y); + ctx.lineTo(right, top + y); + ctx.stroke(); + } - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, + ctx.strokeStyle = this.colorAxis; + ctx.strokeRect(left, top, widthMax, height); + } - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, + if (this.style === Graph3d.STYLE.DOTSIZE) { + // draw border around color bar + ctx.strokeStyle = this.colorAxis; + ctx.fillStyle = this.colorDot; + ctx.beginPath(); + ctx.moveTo(left, top); + ctx.lineTo(right, top); + ctx.lineTo(right - widthMax + widthMin, bottom); + ctx.lineTo(left, bottom); + ctx.closePath(); + ctx.fill(); + ctx.stroke(); + } - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, + if (this.style === Graph3d.STYLE.DOTCOLOR || + this.style === Graph3d.STYLE.DOTSIZE) { + // print values along the color bar + var gridLineLen = 5; // px + var step = new StepNumber(this.valueMin, this.valueMax, (this.valueMax-this.valueMin)/5, true); + step.start(); + if (step.getCurrent() < this.valueMin) { + step.next(); + } + while (!step.end()) { + y = bottom - (step.getCurrent() - this.valueMin) / (this.valueMax - this.valueMin) * height; - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, + ctx.beginPath(); + ctx.moveTo(left - gridLineLen, y); + ctx.lineTo(left, y); + ctx.stroke(); - set : function (units, value) { - var unit; - if (typeof units === 'object') { - for (unit in units) { - this.set(unit, units[unit]); - } - } - else { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); - } - } - return this; - }, + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = this.colorAxis; + ctx.fillText(step.getCurrent(), left - 2 * gridLineLen, y); - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - var newLocaleData; + step.next(); + } - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = moment.localeData(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - }, + ctx.textAlign = 'right'; + ctx.textBaseline = 'top'; + var label = this.legendLabel; + ctx.fillText(label, right, bottom + this.margin); + } + }; - lang : deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ), + /** + * Redraw the filter + */ + Graph3d.prototype._redrawFilter = function() { + this.frame.filter.innerHTML = ''; - localeData : function () { - return this._locale; - }, + if (this.dataFilter) { + var options = { + 'visible': this.showAnimationControls + }; + var slider = new Slider(this.frame.filter, options); + this.frame.filter.slider = slider; - _dateUtcOffset : function () { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(this._d.getTimezoneOffset() / 15) * 15; - } + // TODO: css here is not nice here... + this.frame.filter.style.padding = '10px'; + //this.frame.filter.style.backgroundColor = '#EFEFEF'; - }); + slider.setValues(this.dataFilter.values); + slider.setPlayInterval(this.animationInterval); - function rawMonthSetter(mom, value) { - var dayOfMonth; + // create an event handler + var me = this; + var onchange = function () { + var index = slider.getIndex(); - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } - } + me.dataFilter.selectValue(index); + me.dataPoints = me.dataFilter._getDataPoints(); - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } + me.redraw(); + }; + slider.setOnChangeCallback(onchange); + } + else { + this.frame.filter.slider = undefined; + } + }; - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); - } + /** + * Redraw the slider + */ + Graph3d.prototype._redrawSlider = function() { + if ( this.frame.filter.slider !== undefined) { + this.frame.filter.slider.redraw(); + } + }; - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - } - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; - } else { - return rawGetter(this, unit); - } - }; - } + /** + * Redraw common information + */ + Graph3d.prototype._redrawInfo = function() { + if (this.dataFilter) { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + ctx.font = '14px arial'; // TODO: put in options + ctx.lineStyle = 'gray'; + ctx.fillStyle = 'gray'; + ctx.textAlign = 'left'; + ctx.textBaseline = 'top'; - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; + var x = this.margin; + var y = this.margin; + ctx.fillText(this.dataFilter.getLabel() + ': ' + this.dataFilter.getSelectedValue(), x, y); + } + }; - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; - // alias isUtc for dev-friendliness - moment.fn.isUTC = moment.fn.isUtc; + /** + * Redraw the axis + */ + Graph3d.prototype._redrawAxis = function() { + var canvas = this.frame.canvas, + ctx = canvas.getContext('2d'), + from, to, step, prettyStep, + text, xText, yText, zText, + offset, xOffset, yOffset, + xMin2d, xMax2d; - /************************************ - Duration Prototype - ************************************/ + // TODO: get the actual rendered style of the containerElement + //ctx.font = this.containerElement.style.font; + ctx.font = 24 / this.camera.getArmLength() + 'px arial'; + // calculate the length for the short grid lines + var gridLenX = 0.025 / this.scale.x; + var gridLenY = 0.025 / this.scale.y; + var textMargin = 5 / this.camera.getArmLength(); // px + var armAngle = this.camera.getArmRotation().horizontal; - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; + // draw x-grid lines + ctx.lineWidth = 1; + prettyStep = (this.defaultXStep === undefined); + step = new StepNumber(this.xMin, this.xMax, this.xStep, prettyStep); + step.start(); + if (step.getCurrent() < this.xMin) { + step.next(); + } + while (!step.end()) { + var x = step.getCurrent(); + + if (this.showGrid) { + from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorGrid; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); } + else { + from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(x, this.yMin+gridLenX, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; + from = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); + to = this._convert3Dto2D(new Point3d(x, this.yMax-gridLenX, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); } - extend(moment.duration.fn = Duration.prototype, { + yText = (Math.cos(armAngle) > 0) ? this.yMin : this.yMax; + text = this._convert3Dto2D(new Point3d(x, yText, this.zMin)); + if (Math.cos(armAngle * 2) > 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + text.y += textMargin; + } + else if (Math.sin(armAngle * 2) < 0){ + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + } + else { + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + } + ctx.fillStyle = this.colorAxis; + ctx.fillText(' ' + this.xValueLabel(step.getCurrent()) + ' ', text.x, text.y); - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; + step.next(); + } - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + // draw y-grid lines + ctx.lineWidth = 1; + prettyStep = (this.defaultYStep === undefined); + step = new StepNumber(this.yMin, this.yMax, this.yStep, prettyStep); + step.start(); + if (step.getCurrent() < this.yMin) { + step.next(); + } + while (!step.end()) { + if (this.showGrid) { + from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); + ctx.strokeStyle = this.colorGrid; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + } + else { + from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMin+gridLenY, step.getCurrent(), this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + from = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMax-gridLenY, step.getCurrent(), this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + } - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + xText = (Math.sin(armAngle ) > 0) ? this.xMin : this.xMax; + text = this._convert3Dto2D(new Point3d(xText, step.getCurrent(), this.zMin)); + if (Math.cos(armAngle * 2) < 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + text.y += textMargin; + } + else if (Math.sin(armAngle * 2) > 0){ + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + } + else { + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + } + ctx.fillStyle = this.colorAxis; + ctx.fillText(' ' + this.yValueLabel(step.getCurrent()) + ' ', text.x, text.y); - hours = absRound(minutes / 60); - data.hours = hours % 24; + step.next(); + } - days += absRound(hours / 24); + // draw z-grid lines and axis + ctx.lineWidth = 1; + prettyStep = (this.defaultZStep === undefined); + step = new StepNumber(this.zMin, this.zMax, this.zStep, prettyStep); + step.start(); + if (step.getCurrent() < this.zMin) { + step.next(); + } + xText = (Math.cos(armAngle ) > 0) ? this.xMin : this.xMax; + yText = (Math.sin(armAngle ) < 0) ? this.yMin : this.yMax; + while (!step.end()) { + // TODO: make z-grid lines really 3d? + from = this._convert3Dto2D(new Point3d(xText, yText, step.getCurrent())); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(from.x - textMargin, from.y); + ctx.stroke(); - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = this.colorAxis; + ctx.fillText(this.zValueLabel(step.getCurrent()) + ' ', from.x - 5, from.y); - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + step.next(); + } + ctx.lineWidth = 1; + from = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); + to = this._convert3Dto2D(new Point3d(xText, yText, this.zMax)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; + // draw x-axis + ctx.lineWidth = 1; + // line at yMin + xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); + xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(xMin2d.x, xMin2d.y); + ctx.lineTo(xMax2d.x, xMax2d.y); + ctx.stroke(); + // line at ymax + xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); + xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(xMin2d.x, xMin2d.y); + ctx.lineTo(xMax2d.x, xMax2d.y); + ctx.stroke(); - data.days = days; - data.months = months; - data.years = years; - }, + // draw y-axis + ctx.lineWidth = 1; + // line at xMin + from = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); + // line at xMax + from = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); + to = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); + ctx.strokeStyle = this.colorAxis; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(to.x, to.y); + ctx.stroke(); - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); + // draw x-label + var xLabel = this.xLabel; + if (xLabel.length > 0) { + yOffset = 0.1 / this.scale.y; + xText = (this.xMin + this.xMax) / 2; + yText = (Math.cos(armAngle) > 0) ? this.yMin - yOffset: this.yMax + yOffset; + text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); + if (Math.cos(armAngle * 2) > 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + } + else if (Math.sin(armAngle * 2) < 0){ + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + } + else { + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + } + ctx.fillStyle = this.colorAxis; + ctx.fillText(xLabel, text.x, text.y); + } - this._data.milliseconds = Math.abs(this._data.milliseconds); - this._data.seconds = Math.abs(this._data.seconds); - this._data.minutes = Math.abs(this._data.minutes); - this._data.hours = Math.abs(this._data.hours); - this._data.months = Math.abs(this._data.months); - this._data.years = Math.abs(this._data.years); + // draw y-label + var yLabel = this.yLabel; + if (yLabel.length > 0) { + xOffset = 0.1 / this.scale.x; + xText = (Math.sin(armAngle ) > 0) ? this.xMin - xOffset : this.xMax + xOffset; + yText = (this.yMin + this.yMax) / 2; + text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); + if (Math.cos(armAngle * 2) < 0) { + ctx.textAlign = 'center'; + ctx.textBaseline = 'top'; + } + else if (Math.sin(armAngle * 2) > 0){ + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + } + else { + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + } + ctx.fillStyle = this.colorAxis; + ctx.fillText(yLabel, text.x, text.y); + } - return this; - }, + // draw z-label + var zLabel = this.zLabel; + if (zLabel.length > 0) { + offset = 30; // pixels. // TODO: relate to the max width of the values on the z axis? + xText = (Math.cos(armAngle ) > 0) ? this.xMin : this.xMax; + yText = (Math.sin(armAngle ) < 0) ? this.yMin : this.yMax; + zText = (this.zMin + this.zMax) / 2; + text = this._convert3Dto2D(new Point3d(xText, yText, zText)); + ctx.textAlign = 'right'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = this.colorAxis; + ctx.fillText(zLabel, text.x - offset, text.y); + } + }; - weeks : function () { - return absRound(this.days() / 7); - }, + /** + * Calculate the color based on the given value. + * @param {Number} H Hue, a value be between 0 and 360 + * @param {Number} S Saturation, a value between 0 and 1 + * @param {Number} V Value, a value between 0 and 1 + */ + Graph3d.prototype._hsv2rgb = function(H, S, V) { + var R, G, B, C, Hi, X; - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + C = V * S; + Hi = Math.floor(H/60); // hi = 0,1,2,3,4,5 + X = C * (1 - Math.abs(((H/60) % 2) - 1)); - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); + switch (Hi) { + case 0: R = C; G = X; B = 0; break; + case 1: R = X; G = C; B = 0; break; + case 2: R = 0; G = C; B = X; break; + case 3: R = 0; G = X; B = C; break; + case 4: R = X; G = 0; B = C; break; + case 5: R = C; G = 0; B = X; break; - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); - } + default: R = 0; G = 0; B = 0; break; + } - return this.localeData().postformat(output); - }, + return 'RGB(' + parseInt(R*255) + ',' + parseInt(G*255) + ',' + parseInt(B*255) + ')'; + }; - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; + /** + * Draw all datapoints as a grid + * This function can be used when the style is 'grid' + */ + Graph3d.prototype._redrawDataGrid = function() { + var canvas = this.frame.canvas, + ctx = canvas.getContext('2d'), + point, right, top, cross, + i, + topSideVisible, fillStyle, strokeStyle, lineWidth, + h, s, v, zAvg; - this._bubble(); - return this; - }, + if (this.dataPoints === undefined || this.dataPoints.length <= 0) + return; // TODO: throw exception? - subtract : function (input, val) { - var dur = moment.duration(input, val); + // calculate the translations and screen position of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; - this._bubble(); + // calculate the translation of the point at the bottom (needed for sorting) + var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); + this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; + } - return this; - }, + // sort the points on depth of their (x,y) position (not on z) + var sortDepth = function (a, b) { + return b.dist - a.dist; + }; + this.dataPoints.sort(sortDepth); - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, + if (this.style === Graph3d.STYLE.SURFACE) { + for (i = 0; i < this.dataPoints.length; i++) { + point = this.dataPoints[i]; + right = this.dataPoints[i].pointRight; + top = this.dataPoints[i].pointTop; + cross = this.dataPoints[i].pointCross; - as : function (units) { - var days, months; - units = normalizeUnits(units); + if (point !== undefined && right !== undefined && top !== undefined && cross !== undefined) { - if (units === 'month' || units === 'year') { - days = this._days + this._milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(yearsToDays(this._months / 12)); - switch (units) { - case 'week': return days / 7 + this._milliseconds / 6048e5; - case 'day': return days + this._milliseconds / 864e5; - case 'hour': return days * 24 + this._milliseconds / 36e5; - case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; - case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } - }, + if (this.showGrayBottom || this.showShadow) { + // calculate the cross product of the two vectors from center + // to left and right, in order to know whether we are looking at the + // bottom or at the top side. We can also use the cross product + // for calculating light intensity + var aDiff = Point3d.subtract(cross.trans, point.trans); + var bDiff = Point3d.subtract(top.trans, right.trans); + var crossproduct = Point3d.crossProduct(aDiff, bDiff); + var len = crossproduct.length(); + // FIXME: there is a bug with determining the surface side (shadow or colored) - lang : moment.fn.lang, - locale : moment.fn.locale, + topSideVisible = (crossproduct.z > 0); + } + else { + topSideVisible = true; + } - toIsoString : deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead ' + - '(notice the capitals)', - function () { - return this.toISOString(); - } - ), + if (topSideVisible) { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + zAvg = (point.point.z + right.point.z + top.point.z + cross.point.z) / 4; + h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; + s = 1; // saturation - toISOString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + if (this.showShadow) { + v = Math.min(1 + (crossproduct.x / len) / 2, 1); // value. TODO: scale + fillStyle = this._hsv2rgb(h, s, v); + strokeStyle = fillStyle; + } + else { + v = 1; + fillStyle = this._hsv2rgb(h, s, v); + strokeStyle = this.colorAxis; + } + } + else { + fillStyle = 'gray'; + strokeStyle = this.colorAxis; + } + lineWidth = 0.5; - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } + ctx.lineWidth = lineWidth; + ctx.fillStyle = fillStyle; + ctx.strokeStyle = strokeStyle; + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); + ctx.lineTo(right.screen.x, right.screen.y); + ctx.lineTo(cross.screen.x, cross.screen.y); + ctx.lineTo(top.screen.x, top.screen.y); + ctx.closePath(); + ctx.fill(); + ctx.stroke(); + } + } + } + else { // grid style + for (i = 0; i < this.dataPoints.length; i++) { + point = this.dataPoints[i]; + right = this.dataPoints[i].pointRight; + top = this.dataPoints[i].pointTop; - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); - }, + if (point !== undefined) { + if (this.showPerspective) { + lineWidth = 2 / -point.trans.z; + } + else { + lineWidth = 2 * -(this.eye.z / this.camera.getArmLength()); + } + } - localeData : function () { - return this._locale; - }, + if (point !== undefined && right !== undefined) { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + zAvg = (point.point.z + right.point.z) / 2; + h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; - toJSON : function () { - return this.toISOString(); - } - }); + ctx.lineWidth = lineWidth; + ctx.strokeStyle = this._hsv2rgb(h, 1, 1); + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); + ctx.lineTo(right.screen.x, right.screen.y); + ctx.stroke(); + } - moment.duration.fn.toString = moment.duration.fn.toISOString; + if (point !== undefined && top !== undefined) { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + zAvg = (point.point.z + top.point.z) / 2; + h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; + ctx.lineWidth = lineWidth; + ctx.strokeStyle = this._hsv2rgb(h, 1, 1); + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); + ctx.lineTo(top.screen.x, top.screen.y); + ctx.stroke(); + } } + } + }; - for (i in unitMillisecondFactors) { - if (hasOwnProp(unitMillisecondFactors, i)) { - makeDurationGetter(i.toLowerCase()); - } - } - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); - }; + /** + * Draw all datapoints as dots. + * This function can be used when the style is 'dot' or 'dot-line' + */ + Graph3d.prototype._redrawDataDot = function() { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); + var i; - /************************************ - Default Locale - ************************************/ + if (this.dataPoints === undefined || this.dataPoints.length <= 0) + return; // TODO: throw exception? + // calculate the translations of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; - // Set default locale, other locale will inherit from English. - moment.locale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); + // calculate the distance from the point at the bottom to the camera + var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); + this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; + } - /* EMBED_LOCALES */ + // order the translated points by depth + var sortDepth = function (a, b) { + return b.dist - a.dist; + }; + this.dataPoints.sort(sortDepth); - /************************************ - Exposing Moment - ************************************/ + // draw the datapoints as colored circles + var dotSize = this.frame.clientWidth * 0.02; // px + for (i = 0; i < this.dataPoints.length; i++) { + var point = this.dataPoints[i]; - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - 'Accessing Moment through the global scope is ' + - 'deprecated, and will be removed in an upcoming ' + - 'release.', - moment); - } else { - globalScope.moment = moment; - } + if (this.style === Graph3d.STYLE.DOTLINE) { + // draw a vertical line from the bottom to the graph value + //var from = this._convert3Dto2D(new Point3d(point.point.x, point.point.y, this.zMin)); + var from = this._convert3Dto2D(point.bottom); + ctx.lineWidth = 1; + ctx.strokeStyle = this.colorGrid; + ctx.beginPath(); + ctx.moveTo(from.x, from.y); + ctx.lineTo(point.screen.x, point.screen.y); + ctx.stroke(); } - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; - } + // calculate radius for the circle + var size; + if (this.style === Graph3d.STYLE.DOTSIZE) { + size = dotSize/2 + 2*dotSize * (point.point.value - this.valueMin) / (this.valueMax - this.valueMin); + } + else { + size = dotSize; + } - return moment; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - makeGlobal(true); - } else { - makeGlobal(); + var radius; + if (this.showPerspective) { + radius = size / -point.trans.z; + } + else { + radius = size * -(this.eye.z / this.camera.getArmLength()); + } + if (radius < 0) { + radius = 0; } - }).call(this); - - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(5)(module))) -/***/ }, -/* 4 */ -/***/ function(module, exports, __webpack_require__) { + var hue, color, borderColor; + if (this.style === Graph3d.STYLE.DOTCOLOR ) { + // calculate the color based on the value + hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; + color = this._hsv2rgb(hue, 1, 1); + borderColor = this._hsv2rgb(hue, 1, 0.8); + } + else if (this.style === Graph3d.STYLE.DOTSIZE) { + color = this.colorDot; + borderColor = this.colorDotBorder; + } + else { + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; + color = this._hsv2rgb(hue, 1, 1); + borderColor = this._hsv2rgb(hue, 1, 0.8); + } - function webpackContext(req) { - throw new Error("Cannot find module '" + req + "'."); - } - webpackContext.keys = function() { return []; }; - webpackContext.resolve = webpackContext; - module.exports = webpackContext; - webpackContext.id = 4; + // draw the circle + ctx.lineWidth = 1.0; + ctx.strokeStyle = borderColor; + ctx.fillStyle = color; + ctx.beginPath(); + ctx.arc(point.screen.x, point.screen.y, radius, 0, Math.PI*2, true); + ctx.fill(); + ctx.stroke(); + } + }; + /** + * Draw all datapoints as bars. + * This function can be used when the style is 'bar', 'bar-color', or 'bar-size' + */ + Graph3d.prototype._redrawDataBar = function() { + var canvas = this.frame.canvas; + var ctx = canvas.getContext('2d'); + var i, j, surface, corners; -/***/ }, -/* 5 */ -/***/ function(module, exports, __webpack_require__) { + if (this.dataPoints === undefined || this.dataPoints.length <= 0) + return; // TODO: throw exception? - module.exports = function(module) { - if(!module.webpackPolyfill) { - module.deprecate = function() {}; - module.paths = []; - // module.parent = undefined by default - module.children = []; - module.webpackPolyfill = 1; - } - return module; - } + // calculate the translations of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; + // calculate the distance from the point at the bottom to the camera + var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); + this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; + } -/***/ }, -/* 6 */ -/***/ function(module, exports, __webpack_require__) { + // order the translated points by depth + var sortDepth = function (a, b) { + return b.dist - a.dist; + }; + this.dataPoints.sort(sortDepth); - // DOM utility methods + // draw the datapoints as bars + var xWidth = this.xBarWidth / 2; + var yWidth = this.yBarWidth / 2; + for (i = 0; i < this.dataPoints.length; i++) { + var point = this.dataPoints[i]; - /** - * this prepares the JSON container for allocating SVG elements - * @param JSONcontainer - * @private - */ - exports.prepareElements = function(JSONcontainer) { - // cleanup the redundant svgElements; - for (var elementType in JSONcontainer) { - if (JSONcontainer.hasOwnProperty(elementType)) { - JSONcontainer[elementType].redundant = JSONcontainer[elementType].used; - JSONcontainer[elementType].used = []; - } - } - }; - - /** - * this cleans up all the unused SVG elements. By asking for the parentNode, we only need to supply the JSON container from - * which to remove the redundant elements. - * - * @param JSONcontainer - * @private - */ - exports.cleanupElements = function(JSONcontainer) { - // cleanup the redundant svgElements; - for (var elementType in JSONcontainer) { - if (JSONcontainer.hasOwnProperty(elementType)) { - if (JSONcontainer[elementType].redundant) { - for (var i = 0; i < JSONcontainer[elementType].redundant.length; i++) { - JSONcontainer[elementType].redundant[i].parentNode.removeChild(JSONcontainer[elementType].redundant[i]); - } - JSONcontainer[elementType].redundant = []; - } + // determine color + var hue, color, borderColor; + if (this.style === Graph3d.STYLE.BARCOLOR ) { + // calculate the color based on the value + hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; + color = this._hsv2rgb(hue, 1, 1); + borderColor = this._hsv2rgb(hue, 1, 0.8); } - } - }; - - /** - * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer - * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. - * - * @param elementType - * @param JSONcontainer - * @param svgContainer - * @returns {*} - * @private - */ - exports.getSVGElement = function (elementType, JSONcontainer, svgContainer) { - var element; - // allocate SVG element, if it doesnt yet exist, create one. - if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before - // check if there is an redundant element - if (JSONcontainer[elementType].redundant.length > 0) { - element = JSONcontainer[elementType].redundant[0]; - JSONcontainer[elementType].redundant.shift(); + else if (this.style === Graph3d.STYLE.BARSIZE) { + color = this.colorDot; + borderColor = this.colorDotBorder; } else { - // create a new element and add it to the SVG - element = document.createElementNS('http://www.w3.org/2000/svg', elementType); - svgContainer.appendChild(element); + // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 + hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; + color = this._hsv2rgb(hue, 1, 1); + borderColor = this._hsv2rgb(hue, 1, 0.8); } - } - else { - // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. - element = document.createElementNS('http://www.w3.org/2000/svg', elementType); - JSONcontainer[elementType] = {used: [], redundant: []}; - svgContainer.appendChild(element); - } - JSONcontainer[elementType].used.push(element); - return element; - }; - - /** - * Allocate or generate an SVG element if needed. Store a reference to it in the JSON container and draw it in the svgContainer - * the JSON container and the SVG container have to be supplied so other svg containers (like the legend) can use this. - * - * @param elementType - * @param JSONcontainer - * @param DOMContainer - * @returns {*} - * @private - */ - exports.getDOMElement = function (elementType, JSONcontainer, DOMContainer, insertBefore) { - var element; - // allocate DOM element, if it doesnt yet exist, create one. - if (JSONcontainer.hasOwnProperty(elementType)) { // this element has been created before - // check if there is an redundant element - if (JSONcontainer[elementType].redundant.length > 0) { - element = JSONcontainer[elementType].redundant[0]; - JSONcontainer[elementType].redundant.shift(); - } - else { - // create a new element and add it to the SVG - element = document.createElement(elementType); - if (insertBefore !== undefined) { - DOMContainer.insertBefore(element, insertBefore); - } - else { - DOMContainer.appendChild(element); - } + // calculate size for the bar + if (this.style === Graph3d.STYLE.BARSIZE) { + xWidth = (this.xBarWidth / 2) * ((point.point.value - this.valueMin) / (this.valueMax - this.valueMin) * 0.8 + 0.2); + yWidth = (this.yBarWidth / 2) * ((point.point.value - this.valueMin) / (this.valueMax - this.valueMin) * 0.8 + 0.2); } - } - else { - // create a new element and add it to the SVG, also create a new object in the svgElements to keep track of it. - element = document.createElement(elementType); - JSONcontainer[elementType] = {used: [], redundant: []}; - if (insertBefore !== undefined) { - DOMContainer.insertBefore(element, insertBefore); + + // calculate all corner points + var me = this; + var point3d = point.point; + var top = [ + {point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, point3d.z)}, + {point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, point3d.z)}, + {point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, point3d.z)}, + {point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, point3d.z)} + ]; + var bottom = [ + {point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, this.zMin)}, + {point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, this.zMin)}, + {point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, this.zMin)}, + {point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, this.zMin)} + ]; + + // calculate screen location of the points + top.forEach(function (obj) { + obj.screen = me._convert3Dto2D(obj.point); + }); + bottom.forEach(function (obj) { + obj.screen = me._convert3Dto2D(obj.point); + }); + + // create five sides, calculate both corner points and center points + var surfaces = [ + {corners: top, center: Point3d.avg(bottom[0].point, bottom[2].point)}, + {corners: [top[0], top[1], bottom[1], bottom[0]], center: Point3d.avg(bottom[1].point, bottom[0].point)}, + {corners: [top[1], top[2], bottom[2], bottom[1]], center: Point3d.avg(bottom[2].point, bottom[1].point)}, + {corners: [top[2], top[3], bottom[3], bottom[2]], center: Point3d.avg(bottom[3].point, bottom[2].point)}, + {corners: [top[3], top[0], bottom[0], bottom[3]], center: Point3d.avg(bottom[0].point, bottom[3].point)} + ]; + point.surfaces = surfaces; + + // calculate the distance of each of the surface centers to the camera + for (j = 0; j < surfaces.length; j++) { + surface = surfaces[j]; + var transCenter = this._convertPointToTranslation(surface.center); + surface.dist = this.showPerspective ? transCenter.length() : -transCenter.z; + // TODO: this dept calculation doesn't work 100% of the cases due to perspective, + // but the current solution is fast/simple and works in 99.9% of all cases + // the issue is visible in example 14, with graph.setCameraPosition({horizontal: 2.97, vertical: 0.5, distance: 0.9}) } - else { - DOMContainer.appendChild(element); + + // order the surfaces by their (translated) depth + surfaces.sort(function (a, b) { + var diff = b.dist - a.dist; + if (diff) return diff; + + // if equal depth, sort the top surface last + if (a.corners === top) return 1; + if (b.corners === top) return -1; + + // both are equal + return 0; + }); + + // draw the ordered surfaces + ctx.lineWidth = 1; + ctx.strokeStyle = borderColor; + ctx.fillStyle = color; + // NOTE: we start at j=2 instead of j=0 as we don't need to draw the two surfaces at the backside + for (j = 2; j < surfaces.length; j++) { + surface = surfaces[j]; + corners = surface.corners; + ctx.beginPath(); + ctx.moveTo(corners[3].screen.x, corners[3].screen.y); + ctx.lineTo(corners[0].screen.x, corners[0].screen.y); + ctx.lineTo(corners[1].screen.x, corners[1].screen.y); + ctx.lineTo(corners[2].screen.x, corners[2].screen.y); + ctx.lineTo(corners[3].screen.x, corners[3].screen.y); + ctx.fill(); + ctx.stroke(); } } - JSONcontainer[elementType].used.push(element); - return element; }; - - /** - * draw a point object. this is a seperate function because it can also be called by the legend. - * The reason the JSONcontainer and the target SVG svgContainer have to be supplied is so the legend can use these functions - * as well. - * - * @param x - * @param y - * @param group - * @param JSONcontainer - * @param svgContainer - * @param labelObj - * @returns {*} + * Draw a line through all datapoints. + * This function can be used when the style is 'line' */ - exports.drawPoint = function(x, y, group, JSONcontainer, svgContainer, labelObj) { - var point; - if (group.options.drawPoints.style == 'circle') { - point = exports.getSVGElement('circle',JSONcontainer,svgContainer); - point.setAttributeNS(null, "cx", x); - point.setAttributeNS(null, "cy", y); - point.setAttributeNS(null, "r", 0.5 * group.options.drawPoints.size); - } - else { - point = exports.getSVGElement('rect',JSONcontainer,svgContainer); - point.setAttributeNS(null, "x", x - 0.5*group.options.drawPoints.size); - point.setAttributeNS(null, "y", y - 0.5*group.options.drawPoints.size); - point.setAttributeNS(null, "width", group.options.drawPoints.size); - point.setAttributeNS(null, "height", group.options.drawPoints.size); - } + Graph3d.prototype._redrawDataLine = function() { + var canvas = this.frame.canvas, + ctx = canvas.getContext('2d'), + point, i; - if(group.options.drawPoints.styles !== undefined) { - point.setAttributeNS(null, "style", group.group.options.drawPoints.styles); + if (this.dataPoints === undefined || this.dataPoints.length <= 0) + return; // TODO: throw exception? + + // calculate the translations of all points + for (i = 0; i < this.dataPoints.length; i++) { + var trans = this._convertPointToTranslation(this.dataPoints[i].point); + var screen = this._convertTranslationToScreen(trans); + + this.dataPoints[i].trans = trans; + this.dataPoints[i].screen = screen; } - point.setAttributeNS(null, "class", group.className + " point"); - //handle label - var label = exports.getSVGElement('text',JSONcontainer,svgContainer); - if (labelObj){ - if (labelObj.xOffset) { - x = x + labelObj.xOffset; - } - if (labelObj.yOffset) { - y = y + labelObj.yOffset; - } - if (labelObj.content) { - label.textContent = labelObj.content; - } + // start the line + if (this.dataPoints.length > 0) { + point = this.dataPoints[0]; - if (labelObj.className) { - label.setAttributeNS(null, "class", labelObj.className + " label"); - } + ctx.lineWidth = 1; // TODO: make customizable + ctx.strokeStyle = 'blue'; // TODO: make customizable + ctx.beginPath(); + ctx.moveTo(point.screen.x, point.screen.y); + } + // draw the datapoints as colored circles + for (i = 1; i < this.dataPoints.length; i++) { + point = this.dataPoints[i]; + ctx.lineTo(point.screen.x, point.screen.y); + } + // finish the line + if (this.dataPoints.length > 0) { + ctx.stroke(); } - label.setAttributeNS(null, "x", x); - label.setAttributeNS(null, "y", y); - return point; }; /** - * draw a bar SVG element centered on the X coordinate - * - * @param x - * @param y - * @param className + * Start a moving operation inside the provided parent element + * @param {Event} event The event that occurred (required for + * retrieving the mouse position) */ - exports.drawBar = function (x, y, width, height, className, JSONcontainer, svgContainer) { - if (height != 0) { - if (height < 0) { - height *= -1; - y -= height; - } - var rect = exports.getSVGElement('rect',JSONcontainer, svgContainer); - rect.setAttributeNS(null, "x", x - 0.5 * width); - rect.setAttributeNS(null, "y", y); - rect.setAttributeNS(null, "width", width); - rect.setAttributeNS(null, "height", height); - rect.setAttributeNS(null, "class", className); + Graph3d.prototype._onMouseDown = function(event) { + event = event || window.event; + + // check if mouse is still down (may be up when focus is lost for example + // in an iframe) + if (this.leftButtonDown) { + this._onMouseUp(event); } - }; -/***/ }, -/* 7 */ -/***/ function(module, exports, __webpack_require__) { + // only react on left mouse button down + this.leftButtonDown = event.which ? (event.which === 1) : (event.button === 1); + if (!this.leftButtonDown && !this.touchDown) return; + + // get mouse position (different code for IE and all other browsers) + this.startMouseX = getMouseX(event); + this.startMouseY = getMouseY(event); + + this.startStart = new Date(this.start); + this.startEnd = new Date(this.end); + this.startArmRotation = this.camera.getArmRotation(); + + this.frame.style.cursor = 'move'; + + // add event listeners to handle moving the contents + // we store the function onmousemove and onmouseup in the graph, so we can + // remove the eventlisteners lateron in the function mouseUp() + var me = this; + this.onmousemove = function (event) {me._onMouseMove(event);}; + this.onmouseup = function (event) {me._onMouseUp(event);}; + util.addEventListener(document, 'mousemove', me.onmousemove); + util.addEventListener(document, 'mouseup', me.onmouseup); + util.preventDefault(event); + }; - var util = __webpack_require__(1); - var Queue = __webpack_require__(8); /** - * DataSet - * - * Usage: - * var dataSet = new DataSet({ - * fieldId: '_id', - * type: { - * // ... - * } - * }); - * - * dataSet.add(item); - * dataSet.add(data); - * dataSet.update(item); - * dataSet.update(data); - * dataSet.remove(id); - * dataSet.remove(ids); - * var data = dataSet.get(); - * var data = dataSet.get(id); - * var data = dataSet.get(ids); - * var data = dataSet.get(ids, options, data); - * dataSet.clear(); - * - * A data set can: - * - add/remove/update data - * - gives triggers upon changes in the data - * - can import/export data in various data formats - * - * @param {Array | DataTable} [data] Optional array with initial data - * @param {Object} [options] Available options: - * {String} fieldId Field name of the id in the - * items, 'id' by default. - * {Object. 0 ? 1 : x < 0 ? -1 : 0; } - else if (util.isDataTable(data)) { - // Google DataTable - var columns = this._getColumnNames(data); - for (var row = 0, rows = data.getNumberOfRows(); row < rows; row++) { - var item = {}; - for (var col = 0, cols = columns.length; col < cols; col++) { - var field = columns[col]; - item[field] = data.getValue(row, col); - } - addOrUpdate(item); + var as = sign((b.x - a.x) * (point.y - a.y) - (b.y - a.y) * (point.x - a.x)); + var bs = sign((c.x - b.x) * (point.y - b.y) - (c.y - b.y) * (point.x - b.x)); + var cs = sign((a.x - c.x) * (point.y - c.y) - (a.y - c.y) * (point.x - c.x)); + + // each of the three signs must be either equal to each other or zero + return (as == 0 || bs == 0 || as == bs) && + (bs == 0 || cs == 0 || bs == cs) && + (as == 0 || cs == 0 || as == cs); + }; + + /** + * Find a data point close to given screen position (x, y) + * @param {Number} x + * @param {Number} y + * @return {Object | null} The closest data point or null if not close to any data point + * @private + */ + Graph3d.prototype._dataPointFromXY = function (x, y) { + var i, + distMax = 100, // px + dataPoint = null, + closestDataPoint = null, + closestDist = null, + center = new Point2d(x, y); + + if (this.style === Graph3d.STYLE.BAR || + this.style === Graph3d.STYLE.BARCOLOR || + this.style === Graph3d.STYLE.BARSIZE) { + // the data points are ordered from far away to closest + for (i = this.dataPoints.length - 1; i >= 0; i--) { + dataPoint = this.dataPoints[i]; + var surfaces = dataPoint.surfaces; + if (surfaces) { + for (var s = surfaces.length - 1; s >= 0; s--) { + // split each surface in two triangles, and see if the center point is inside one of these + var surface = surfaces[s]; + var corners = surface.corners; + var triangle1 = [corners[0].screen, corners[1].screen, corners[2].screen]; + var triangle2 = [corners[2].screen, corners[3].screen, corners[0].screen]; + if (this._insideTriangle(center, triangle1) || + this._insideTriangle(center, triangle2)) { + // return immediately at the first hit + return dataPoint; + } + } + } } } - else if (data instanceof Object) { - // Single item - addOrUpdate(data); - } else { - throw new Error('Unknown dataType'); - } + // find the closest data point, using distance to the center of the point on 2d screen + for (i = 0; i < this.dataPoints.length; i++) { + dataPoint = this.dataPoints[i]; + var point = dataPoint.screen; + if (point) { + var distX = Math.abs(x - point.x); + var distY = Math.abs(y - point.y); + var dist = Math.sqrt(distX * distX + distY * distY); - if (addedIds.length) { - this._trigger('add', {items: addedIds}, senderId); - } - if (updatedIds.length) { - this._trigger('update', {items: updatedIds, data: updatedData}, senderId); + if ((closestDist === null || dist < closestDist) && dist < distMax) { + closestDist = dist; + closestDataPoint = dataPoint; + } + } + } } - return addedIds.concat(updatedIds); + + return closestDataPoint; }; /** - * Get a data item or multiple items. - * - * Usage: - * - * get() - * get(options: Object) - * get(options: Object, data: Array | DataTable) - * - * get(id: Number | String) - * get(id: Number | String, options: Object) - * get(id: Number | String, options: Object, data: Array | DataTable) - * - * get(ids: Number[] | String[]) - * get(ids: Number[] | String[], options: Object) - * get(ids: Number[] | String[], options: Object, data: Array | DataTable) - * - * Where: - * - * {Number | String} id The id of an item - * {Number[] | String{}} ids An array with ids of items - * {Object} options An Object with options. Available options: - * {String} [returnType] Type of data to be - * returned. Can be 'DataTable' or 'Array' (default) - * {Object.} [type] - * {String[]} [fields] field names to be returned - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * {Array | DataTable} [data] If provided, items will be appended to this - * array or table. Required in case of Google - * DataTable. - * - * @throws Error + * Display a tooltip for given data point + * @param {Object} dataPoint + * @private */ - DataSet.prototype.get = function (args) { - var me = this; + Graph3d.prototype._showTooltip = function (dataPoint) { + var content, line, dot; - // parse the arguments - var id, ids, options, data; - var firstType = util.getType(arguments[0]); - if (firstType == 'String' || firstType == 'Number') { - // get(id [, options] [, data]) - id = arguments[0]; - options = arguments[1]; - data = arguments[2]; - } - else if (firstType == 'Array') { - // get(ids [, options] [, data]) - ids = arguments[0]; - options = arguments[1]; - data = arguments[2]; + if (!this.tooltip) { + content = document.createElement('div'); + content.style.position = 'absolute'; + content.style.padding = '10px'; + content.style.border = '1px solid #4d4d4d'; + content.style.color = '#1a1a1a'; + content.style.background = 'rgba(255,255,255,0.7)'; + content.style.borderRadius = '2px'; + content.style.boxShadow = '5px 5px 10px rgba(128,128,128,0.5)'; + + line = document.createElement('div'); + line.style.position = 'absolute'; + line.style.height = '40px'; + line.style.width = '0'; + line.style.borderLeft = '1px solid #4d4d4d'; + + dot = document.createElement('div'); + dot.style.position = 'absolute'; + dot.style.height = '0'; + dot.style.width = '0'; + dot.style.border = '5px solid #4d4d4d'; + dot.style.borderRadius = '5px'; + + this.tooltip = { + dataPoint: null, + dom: { + content: content, + line: line, + dot: dot + } + }; } else { - // get([, options] [, data]) - options = arguments[0]; - data = arguments[1]; + content = this.tooltip.dom.content; + line = this.tooltip.dom.line; + dot = this.tooltip.dom.dot; } - // determine the return type - var returnType; - if (options && options.returnType) { - var allowedValues = ["DataTable", "Array", "Object"]; - returnType = allowedValues.indexOf(options.returnType) == -1 ? "Array" : options.returnType; + this._hideTooltip(); - if (data && (returnType != util.getType(data))) { - throw new Error('Type of parameter "data" (' + util.getType(data) + ') ' + - 'does not correspond with specified options.type (' + options.type + ')'); - } - if (returnType == 'DataTable' && !util.isDataTable(data)) { - throw new Error('Parameter "data" must be a DataTable ' + - 'when options.type is "DataTable"'); - } - } - else if (data) { - returnType = (util.getType(data) == 'DataTable') ? 'DataTable' : 'Array'; + this.tooltip.dataPoint = dataPoint; + if (typeof this.showTooltip === 'function') { + content.innerHTML = this.showTooltip(dataPoint.point); } else { - returnType = 'Array'; + content.innerHTML = '' + + '' + + '' + + '' + + '
x:' + dataPoint.point.x + '
y:' + dataPoint.point.y + '
z:' + dataPoint.point.z + '
'; } - // build options - var type = options && options.type || this._options.type; - var filter = options && options.filter; - var items = [], item, itemId, i, len; + content.style.left = '0'; + content.style.top = '0'; + this.frame.appendChild(content); + this.frame.appendChild(line); + this.frame.appendChild(dot); - // convert items - if (id != undefined) { - // return a single item - item = me._getItem(id, type); - if (filter && !filter(item)) { - item = null; - } - } - else if (ids != undefined) { - // return a subset of items - for (i = 0, len = ids.length; i < len; i++) { - item = me._getItem(ids[i], type); - if (!filter || filter(item)) { - items.push(item); - } - } - } - else { - // return all items - for (itemId in this._data) { - if (this._data.hasOwnProperty(itemId)) { - item = me._getItem(itemId, type); - if (!filter || filter(item)) { - items.push(item); + // calculate sizes + var contentWidth = content.offsetWidth; + var contentHeight = content.offsetHeight; + var lineHeight = line.offsetHeight; + var dotWidth = dot.offsetWidth; + var dotHeight = dot.offsetHeight; + + var left = dataPoint.screen.x - contentWidth / 2; + left = Math.min(Math.max(left, 10), this.frame.clientWidth - 10 - contentWidth); + + line.style.left = dataPoint.screen.x + 'px'; + line.style.top = (dataPoint.screen.y - lineHeight) + 'px'; + content.style.left = left + 'px'; + content.style.top = (dataPoint.screen.y - lineHeight - contentHeight) + 'px'; + dot.style.left = (dataPoint.screen.x - dotWidth / 2) + 'px'; + dot.style.top = (dataPoint.screen.y - dotHeight / 2) + 'px'; + }; + + /** + * Hide the tooltip when displayed + * @private + */ + Graph3d.prototype._hideTooltip = function () { + if (this.tooltip) { + this.tooltip.dataPoint = null; + + for (var prop in this.tooltip.dom) { + if (this.tooltip.dom.hasOwnProperty(prop)) { + var elem = this.tooltip.dom[prop]; + if (elem && elem.parentNode) { + elem.parentNode.removeChild(elem); } } } } + }; - // order the results - if (options && options.order && id == undefined) { - this._sort(items, options.order); - } + /**--------------------------------------------------------------------------**/ - // filter fields of the items - if (options && options.fields) { - var fields = options.fields; - if (id != undefined) { - item = this._filterFields(item, fields); - } - else { - for (i = 0, len = items.length; i < len; i++) { - items[i] = this._filterFields(items[i], fields); - } - } - } - // return the results - if (returnType == 'DataTable') { - var columns = this._getColumnNames(data); - if (id != undefined) { - // append a single item to the data table - me._appendRow(data, columns, item); - } - else { - // copy the items to the provided data table - for (i = 0; i < items.length; i++) { - me._appendRow(data, columns, items[i]); - } - } - return data; - } - else if (returnType == "Object") { - var result = {}; - for (i = 0; i < items.length; i++) { - result[items[i].id] = items[i]; - } - return result; - } - else { - // return an array - if (id != undefined) { - // a single item - return item; - } - else { - // multiple items - if (data) { - // copy the items to the provided array - for (i = 0, len = items.length; i < len; i++) { - data.push(items[i]); - } - return data; - } - else { - // just return our array - return items; - } - } - } - }; + /** + * Get the horizontal mouse position from a mouse event + * @param {Event} event + * @return {Number} mouse x + */ + function getMouseX (event) { + if ('clientX' in event) return event.clientX; + return event.targetTouches[0] && event.targetTouches[0].clientX || 0; + } /** - * Get ids of all items or from a filtered set of items. - * @param {Object} [options] An Object with options. Available options: - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * @return {Array} ids + * Get the vertical mouse position from a mouse event + * @param {Event} event + * @return {Number} mouse y */ - DataSet.prototype.getIds = function (options) { - var data = this._data, - filter = options && options.filter, - order = options && options.order, - type = options && options.type || this._options.type, - i, - len, - id, - item, - items, - ids = []; + function getMouseY (event) { + if ('clientY' in event) return event.clientY; + return event.targetTouches[0] && event.targetTouches[0].clientY || 0; + } - if (filter) { - // get filtered items - if (order) { - // create ordered list - items = []; - for (id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (filter(item)) { - items.push(item); - } - } - } + module.exports = Graph3d; - this._sort(items, order); - for (i = 0, len = items.length; i < len; i++) { - ids[i] = items[i][this._fieldId]; - } - } - else { - // create unordered list - for (id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (filter(item)) { - ids.push(item[this._fieldId]); - } - } - } - } - } - else { - // get all items - if (order) { - // create an ordered list - items = []; - for (id in data) { - if (data.hasOwnProperty(id)) { - items.push(data[id]); - } - } +/***/ }, +/* 7 */ +/***/ function(module, exports, __webpack_require__) { - this._sort(items, order); + var Point3d = __webpack_require__(10); - for (i = 0, len = items.length; i < len; i++) { - ids[i] = items[i][this._fieldId]; - } - } - else { - // create unordered list - for (id in data) { - if (data.hasOwnProperty(id)) { - item = data[id]; - ids.push(item[this._fieldId]); - } - } - } - } + /** + * @class Camera + * The camera is mounted on a (virtual) camera arm. The camera arm can rotate + * The camera is always looking in the direction of the origin of the arm. + * This way, the camera always rotates around one fixed point, the location + * of the camera arm. + * + * Documentation: + * http://en.wikipedia.org/wiki/3D_projection + */ + function Camera() { + this.armLocation = new Point3d(); + this.armRotation = {}; + this.armRotation.horizontal = 0; + this.armRotation.vertical = 0; + this.armLength = 1.7; - return ids; - }; + this.cameraLocation = new Point3d(); + this.cameraRotation = new Point3d(0.5*Math.PI, 0, 0); + + this.calculateCameraOrientation(); + } /** - * Returns the DataSet itself. Is overwritten for example by the DataView, - * which returns the DataSet it is connected to instead. + * Set the location (origin) of the arm + * @param {Number} x Normalized value of x + * @param {Number} y Normalized value of y + * @param {Number} z Normalized value of z */ - DataSet.prototype.getDataSet = function () { - return this; + Camera.prototype.setArmLocation = function(x, y, z) { + this.armLocation.x = x; + this.armLocation.y = y; + this.armLocation.z = z; + + this.calculateCameraOrientation(); }; /** - * Execute a callback function for every item in the dataset. - * @param {function} callback - * @param {Object} [options] Available options: - * {Object.} [type] - * {String[]} [fields] filter fields - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. + * Set the rotation of the camera arm + * @param {Number} horizontal The horizontal rotation, between 0 and 2*PI. + * Optional, can be left undefined. + * @param {Number} vertical The vertical rotation, between 0 and 0.5*PI + * if vertical=0.5*PI, the graph is shown from the + * top. Optional, can be left undefined. */ - DataSet.prototype.forEach = function (callback, options) { - var filter = options && options.filter, - type = options && options.type || this._options.type, - data = this._data, - item, - id; - - if (options && options.order) { - // execute forEach on ordered list - var items = this.get(options); + Camera.prototype.setArmRotation = function(horizontal, vertical) { + if (horizontal !== undefined) { + this.armRotation.horizontal = horizontal; + } - for (var i = 0, len = items.length; i < len; i++) { - item = items[i]; - id = item[this._fieldId]; - callback(item, id); - } + if (vertical !== undefined) { + this.armRotation.vertical = vertical; + if (this.armRotation.vertical < 0) this.armRotation.vertical = 0; + if (this.armRotation.vertical > 0.5*Math.PI) this.armRotation.vertical = 0.5*Math.PI; } - else { - // unordered - for (id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (!filter || filter(item)) { - callback(item, id); - } - } - } + + if (horizontal !== undefined || vertical !== undefined) { + this.calculateCameraOrientation(); } }; /** - * Map every item in the dataset. - * @param {function} callback - * @param {Object} [options] Available options: - * {Object.} [type] - * {String[]} [fields] filter fields - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * @return {Object[]} mappedItems + * Retrieve the current arm rotation + * @return {object} An object with parameters horizontal and vertical */ - DataSet.prototype.map = function (callback, options) { - var filter = options && options.filter, - type = options && options.type || this._options.type, - mappedItems = [], - data = this._data, - item; - - // convert and filter items - for (var id in data) { - if (data.hasOwnProperty(id)) { - item = this._getItem(id, type); - if (!filter || filter(item)) { - mappedItems.push(callback(item, id)); - } - } - } - - // order items - if (options && options.order) { - this._sort(mappedItems, options.order); - } + Camera.prototype.getArmRotation = function() { + var rot = {}; + rot.horizontal = this.armRotation.horizontal; + rot.vertical = this.armRotation.vertical; - return mappedItems; + return rot; }; /** - * Filter the fields of an item - * @param {Object | null} item - * @param {String[]} fields Field names - * @return {Object | null} filteredItem or null if no item is provided - * @private + * Set the (normalized) length of the camera arm. + * @param {Number} length A length between 0.71 and 5.0 */ - DataSet.prototype._filterFields = function (item, fields) { - if (!item) { // item is null - return item; - } + Camera.prototype.setArmLength = function(length) { + if (length === undefined) + return; - var filteredItem = {}; + this.armLength = length; - for (var field in item) { - if (item.hasOwnProperty(field) && (fields.indexOf(field) != -1)) { - filteredItem[field] = item[field]; - } - } + // Radius must be larger than the corner of the graph, + // which has a distance of sqrt(0.5^2+0.5^2) = 0.71 from the center of the + // graph + if (this.armLength < 0.71) this.armLength = 0.71; + if (this.armLength > 5.0) this.armLength = 5.0; - return filteredItem; + this.calculateCameraOrientation(); }; /** - * Sort the provided array with items - * @param {Object[]} items - * @param {String | function} order A field name or custom sort function. - * @private + * Retrieve the arm length + * @return {Number} length */ - DataSet.prototype._sort = function (items, order) { - if (util.isString(order)) { - // order by provided field name - var name = order; // field name - items.sort(function (a, b) { - var av = a[name]; - var bv = b[name]; - return (av > bv) ? 1 : ((av < bv) ? -1 : 0); - }); - } - else if (typeof order === 'function') { - // order by sort function - items.sort(order); - } - // TODO: extend order by an Object {field:String, direction:String} - // where direction can be 'asc' or 'desc' - else { - throw new TypeError('Order must be a function or a string'); - } + Camera.prototype.getArmLength = function() { + return this.armLength; }; /** - * Remove an object by pointer or by id - * @param {String | Number | Object | Array} id Object or id, or an array with - * objects or ids to be removed - * @param {String} [senderId] Optional sender id - * @return {Array} removedIds + * Retrieve the camera location + * @return {Point3d} cameraLocation */ - DataSet.prototype.remove = function (id, senderId) { - var removedIds = [], - i, len, removedId; - - if (Array.isArray(id)) { - for (i = 0, len = id.length; i < len; i++) { - removedId = this._remove(id[i]); - if (removedId != null) { - removedIds.push(removedId); - } - } - } - else { - removedId = this._remove(id); - if (removedId != null) { - removedIds.push(removedId); - } - } - - if (removedIds.length) { - this._trigger('remove', {items: removedIds}, senderId); - } - - return removedIds; + Camera.prototype.getCameraLocation = function() { + return this.cameraLocation; }; /** - * Remove an item by its id - * @param {Number | String | Object} id id or item - * @returns {Number | String | null} id - * @private + * Retrieve the camera rotation + * @return {Point3d} cameraRotation */ - DataSet.prototype._remove = function (id) { - if (util.isNumber(id) || util.isString(id)) { - if (this._data[id]) { - delete this._data[id]; - this.length--; - return id; - } - } - else if (id instanceof Object) { - var itemId = id[this._fieldId]; - if (itemId && this._data[itemId]) { - delete this._data[itemId]; - this.length--; - return itemId; - } - } - return null; + Camera.prototype.getCameraRotation = function() { + return this.cameraRotation; }; /** - * Clear the data - * @param {String} [senderId] Optional sender id - * @return {Array} removedIds The ids of all removed items + * Calculate the location and rotation of the camera based on the + * position and orientation of the camera arm */ - DataSet.prototype.clear = function (senderId) { - var ids = Object.keys(this._data); + Camera.prototype.calculateCameraOrientation = function() { + // calculate location of the camera + this.cameraLocation.x = this.armLocation.x - this.armLength * Math.sin(this.armRotation.horizontal) * Math.cos(this.armRotation.vertical); + this.cameraLocation.y = this.armLocation.y - this.armLength * Math.cos(this.armRotation.horizontal) * Math.cos(this.armRotation.vertical); + this.cameraLocation.z = this.armLocation.z + this.armLength * Math.sin(this.armRotation.vertical); - this._data = {}; - this.length = 0; + // calculate rotation of the camera + this.cameraRotation.x = Math.PI/2 - this.armRotation.vertical; + this.cameraRotation.y = 0; + this.cameraRotation.z = -this.armRotation.horizontal; + }; - this._trigger('remove', {items: ids}, senderId); + module.exports = Camera; - return ids; - }; +/***/ }, +/* 8 */ +/***/ function(module, exports, __webpack_require__) { + + var DataView = __webpack_require__(4); /** - * Find the item with maximum value of a specified field - * @param {String} field - * @return {Object | null} item Item containing max value, or null if no items + * @class Filter + * + * @param {DataSet} data The google data table + * @param {Number} column The index of the column to be filtered + * @param {Graph} graph The graph */ - DataSet.prototype.max = function (field) { - var data = this._data, - max = null, - maxField = null; + function Filter (data, column, graph) { + this.data = data; + this.column = column; + this.graph = graph; // the parent graph - for (var id in data) { - if (data.hasOwnProperty(id)) { - var item = data[id]; - var itemField = item[field]; - if (itemField != null && (!max || itemField > maxField)) { - max = item; - maxField = itemField; - } - } + this.index = undefined; + this.value = undefined; + + // read all distinct values and select the first one + this.values = graph.getDistinctValues(data.get(), this.column); + + // sort both numeric and string values correctly + this.values.sort(function (a, b) { + return a > b ? 1 : a < b ? -1 : 0; + }); + + if (this.values.length > 0) { + this.selectValue(0); } - return max; - }; + // create an array with the filtered datapoints. this will be loaded afterwards + this.dataPoints = []; - /** - * Find the item with minimum value of a specified field - * @param {String} field - * @return {Object | null} item Item containing max value, or null if no items - */ - DataSet.prototype.min = function (field) { - var data = this._data, - min = null, - minField = null; + this.loaded = false; + this.onLoadCallback = undefined; - for (var id in data) { - if (data.hasOwnProperty(id)) { - var item = data[id]; - var itemField = item[field]; - if (itemField != null && (!min || itemField < minField)) { - min = item; - minField = itemField; - } - } + if (graph.animationPreload) { + this.loaded = false; + this.loadInBackground(); + } + else { + this.loaded = true; } + }; - return min; + + /** + * Return the label + * @return {string} label + */ + Filter.prototype.isLoaded = function() { + return this.loaded; }; + /** - * Find all distinct values of a specified field - * @param {String} field - * @return {Array} values Array containing all distinct values. If data items - * do not contain the specified field are ignored. - * The returned array is unordered. + * Return the loaded progress + * @return {Number} percentage between 0 and 100 */ - DataSet.prototype.distinct = function (field) { - var data = this._data; - var values = []; - var fieldType = this._options.type && this._options.type[field] || null; - var count = 0; - var i; + Filter.prototype.getLoadedProgress = function() { + var len = this.values.length; - for (var prop in data) { - if (data.hasOwnProperty(prop)) { - var item = data[prop]; - var value = item[field]; - var exists = false; - for (i = 0; i < count; i++) { - if (values[i] == value) { - exists = true; - break; - } - } - if (!exists && (value !== undefined)) { - values[count] = value; - count++; - } - } + var i = 0; + while (this.dataPoints[i]) { + i++; } - if (fieldType) { - for (i = 0; i < values.length; i++) { - values[i] = util.convert(values[i], fieldType); - } - } + return Math.round(i / len * 100); + }; - return values; + + /** + * Return the label + * @return {string} label + */ + Filter.prototype.getLabel = function() { + return this.graph.filterLabel; }; + /** - * Add a single item. Will fail when an item with the same id already exists. - * @param {Object} item - * @return {String} id - * @private + * Return the columnIndex of the filter + * @return {Number} columnIndex */ - DataSet.prototype._addItem = function (item) { - var id = item[this._fieldId]; + Filter.prototype.getColumn = function() { + return this.column; + }; - if (id != undefined) { - // check whether this id is already taken - if (this._data[id]) { - // item already exists - throw new Error('Cannot add item: item with id ' + id + ' already exists'); - } - } - else { - // generate an id - id = util.randomUUID(); - item[this._fieldId] = id; - } - - var d = {}; - for (var field in item) { - if (item.hasOwnProperty(field)) { - var fieldType = this._type[field]; // type may be undefined - d[field] = util.convert(item[field], fieldType); - } - } - this._data[id] = d; - this.length++; + /** + * Return the currently selected value. Returns undefined if there is no selection + * @return {*} value + */ + Filter.prototype.getSelectedValue = function() { + if (this.index === undefined) + return undefined; - return id; + return this.values[this.index]; }; /** - * Get an item. Fields can be converted to a specific type - * @param {String} id - * @param {Object.} [types] field types to convert - * @return {Object | null} item - * @private + * Retrieve all values of the filter + * @return {Array} values */ - DataSet.prototype._getItem = function (id, types) { - var field, value; - - // get the item from the dataset - var raw = this._data[id]; - if (!raw) { - return null; - } - - // convert the items field types - var converted = {}; - if (types) { - for (field in raw) { - if (raw.hasOwnProperty(field)) { - value = raw[field]; - converted[field] = util.convert(value, types[field]); - } - } - } - else { - // no field types specified, no converting needed - for (field in raw) { - if (raw.hasOwnProperty(field)) { - value = raw[field]; - converted[field] = value; - } - } - } - return converted; + Filter.prototype.getValues = function() { + return this.values; }; /** - * Update a single item: merge with existing item. - * Will fail when the item has no id, or when there does not exist an item - * with the same id. - * @param {Object} item - * @return {String} id - * @private + * Retrieve one value of the filter + * @param {Number} index + * @return {*} value */ - DataSet.prototype._updateItem = function (item) { - var id = item[this._fieldId]; - if (id == undefined) { - throw new Error('Cannot update item: item has no id (item: ' + JSON.stringify(item) + ')'); - } - var d = this._data[id]; - if (!d) { - // item doesn't exist - throw new Error('Cannot update item: no item with id ' + id + ' found'); - } - - // merge with current item - for (var field in item) { - if (item.hasOwnProperty(field)) { - var fieldType = this._type[field]; // type may be undefined - d[field] = util.convert(item[field], fieldType); - } - } + Filter.prototype.getValue = function(index) { + if (index >= this.values.length) + throw 'Error: index out of range'; - return id; + return this.values[index]; }; + /** - * Get an array with the column names of a Google DataTable - * @param {DataTable} dataTable - * @return {String[]} columnNames - * @private + * Retrieve the (filtered) dataPoints for the currently selected filter index + * @param {Number} [index] (optional) + * @return {Array} dataPoints */ - DataSet.prototype._getColumnNames = function (dataTable) { - var columns = []; - for (var col = 0, cols = dataTable.getNumberOfColumns(); col < cols; col++) { - columns[col] = dataTable.getColumnId(col) || dataTable.getColumnLabel(col); + Filter.prototype._getDataPoints = function(index) { + if (index === undefined) + index = this.index; + + if (index === undefined) + return []; + + var dataPoints; + if (this.dataPoints[index]) { + dataPoints = this.dataPoints[index]; } - return columns; - }; + else { + var f = {}; + f.column = this.column; + f.value = this.values[index]; - /** - * Append an item as a row to the dataTable - * @param dataTable - * @param columns - * @param item - * @private - */ - DataSet.prototype._appendRow = function (dataTable, columns, item) { - var row = dataTable.addRow(); + var dataView = new DataView(this.data,{filter: function (item) {return (item[f.column] == f.value);}}).get(); + dataPoints = this.graph._getDataPoints(dataView); - for (var col = 0, cols = columns.length; col < cols; col++) { - var field = columns[col]; - dataTable.setValue(row, col, item[field]); + this.dataPoints[index] = dataPoints; } - }; - module.exports = DataSet; + return dataPoints; + }; -/***/ }, -/* 8 */ -/***/ function(module, exports, __webpack_require__) { /** - * A queue - * @param {Object} options - * Available options: - * - delay: number When provided, the queue will be flushed - * automatically after an inactivity of this delay - * in milliseconds. - * Default value is null. - * - max: number When the queue exceeds the given maximum number - * of entries, the queue is flushed automatically. - * Default value of max is Infinity. - * @constructor + * Set a callback function when the filter is fully loaded. */ - function Queue(options) { - // options - this.delay = null; - this.max = Infinity; - - // properties - this._queue = []; - this._timeout = null; - this._extended = null; + Filter.prototype.setOnLoadCallback = function(callback) { + this.onLoadCallback = callback; + }; - this.setOptions(options); - } /** - * Update the configuration of the queue - * @param {Object} options - * Available options: - * - delay: number When provided, the queue will be flushed - * automatically after an inactivity of this delay - * in milliseconds. - * Default value is null. - * - max: number When the queue exceeds the given maximum number - * of entries, the queue is flushed automatically. - * Default value of max is Infinity. - * @param options + * Add a value to the list with available values for this filter + * No double entries will be created. + * @param {Number} index */ - Queue.prototype.setOptions = function (options) { - if (options && typeof options.delay !== 'undefined') { - this.delay = options.delay; - } - if (options && typeof options.max !== 'undefined') { - this.max = options.max; - } + Filter.prototype.selectValue = function(index) { + if (index >= this.values.length) + throw 'Error: index out of range'; - this._flushIfNeeded(); + this.index = index; + this.value = this.values[index]; }; /** - * Extend an object with queuing functionality. - * The object will be extended with a function flush, and the methods provided - * in options.replace will be replaced with queued ones. - * @param {Object} object - * @param {Object} options - * Available options: - * - replace: Array. - * A list with method names of the methods - * on the object to be replaced with queued ones. - * - delay: number When provided, the queue will be flushed - * automatically after an inactivity of this delay - * in milliseconds. - * Default value is null. - * - max: number When the queue exceeds the given maximum number - * of entries, the queue is flushed automatically. - * Default value of max is Infinity. - * @return {Queue} Returns the created queue + * Load all filtered rows in the background one by one + * Start this method without providing an index! */ - Queue.extend = function (object, options) { - var queue = new Queue(options); + Filter.prototype.loadInBackground = function(index) { + if (index === undefined) + index = 0; - if (object.flush !== undefined) { - throw new Error('Target object already has a property flush'); - } - object.flush = function () { - queue.flush(); - }; + var frame = this.graph.frame; - var methods = [{ - name: 'flush', - original: undefined - }]; + if (index < this.values.length) { + var dataPointsTemp = this._getDataPoints(index); + //this.graph.redrawInfo(); // TODO: not neat - if (options && options.replace) { - for (var i = 0; i < options.replace.length; i++) { - var name = options.replace[i]; - methods.push({ - name: name, - original: object[name] - }); - queue.replace(object, name); + // create a progress box + if (frame.progress === undefined) { + frame.progress = document.createElement('DIV'); + frame.progress.style.position = 'absolute'; + frame.progress.style.color = 'gray'; + frame.appendChild(frame.progress); } + var progress = this.getLoadedProgress(); + frame.progress.innerHTML = 'Loading animation... ' + progress + '%'; + // TODO: this is no nice solution... + frame.progress.style.bottom = 60 + 'px'; // TODO: use height of slider + frame.progress.style.left = 10 + 'px'; + + var me = this; + setTimeout(function() {me.loadInBackground(index+1);}, 10); + this.loaded = false; } + else { + this.loaded = true; - queue._extended = { - object: object, - methods: methods - }; + // remove the progress box + if (frame.progress !== undefined) { + frame.removeChild(frame.progress); + frame.progress = undefined; + } - return queue; + if (this.onLoadCallback) + this.onLoadCallback(); + } }; + module.exports = Filter; + + +/***/ }, +/* 9 */ +/***/ function(module, exports, __webpack_require__) { + /** - * Destroy the queue. The queue will first flush all queued actions, and in - * case it has extended an object, will restore the original object. + * @prototype Point2d + * @param {Number} [x] + * @param {Number} [y] */ - Queue.prototype.destroy = function () { - this.flush(); + function Point2d (x, y) { + this.x = x !== undefined ? x : 0; + this.y = y !== undefined ? y : 0; + } + + module.exports = Point2d; - if (this._extended) { - var object = this._extended.object; - var methods = this._extended.methods; - for (var i = 0; i < methods.length; i++) { - var method = methods[i]; - if (method.original) { - object[method.name] = method.original; - } - else { - delete object[method.name]; - } - } - this._extended = null; - } - }; + +/***/ }, +/* 10 */ +/***/ function(module, exports, __webpack_require__) { /** - * Replace a method on an object with a queued version - * @param {Object} object Object having the method - * @param {string} method The method name + * @prototype Point3d + * @param {Number} [x] + * @param {Number} [y] + * @param {Number} [z] */ - Queue.prototype.replace = function(object, method) { - var me = this; - var original = object[method]; - if (!original) { - throw new Error('Method ' + method + ' undefined'); - } - - object[method] = function () { - // create an Array with the arguments - var args = []; - for (var i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } + function Point3d(x, y, z) { + this.x = x !== undefined ? x : 0; + this.y = y !== undefined ? y : 0; + this.z = z !== undefined ? z : 0; + }; - // add this call to the queue - me.queue({ - args: args, - fn: original, - context: this - }); - }; + /** + * Subtract the two provided points, returns a-b + * @param {Point3d} a + * @param {Point3d} b + * @return {Point3d} a-b + */ + Point3d.subtract = function(a, b) { + var sub = new Point3d(); + sub.x = a.x - b.x; + sub.y = a.y - b.y; + sub.z = a.z - b.z; + return sub; }; /** - * Queue a call - * @param {function | {fn: function, args: Array} | {fn: function, args: Array, context: Object}} entry + * Add the two provided points, returns a+b + * @param {Point3d} a + * @param {Point3d} b + * @return {Point3d} a+b */ - Queue.prototype.queue = function(entry) { - if (typeof entry === 'function') { - this._queue.push({fn: entry}); - } - else { - this._queue.push(entry); - } + Point3d.add = function(a, b) { + var sum = new Point3d(); + sum.x = a.x + b.x; + sum.y = a.y + b.y; + sum.z = a.z + b.z; + return sum; + }; - this._flushIfNeeded(); + /** + * Calculate the average of two 3d points + * @param {Point3d} a + * @param {Point3d} b + * @return {Point3d} The average, (a+b)/2 + */ + Point3d.avg = function(a, b) { + return new Point3d( + (a.x + b.x) / 2, + (a.y + b.y) / 2, + (a.z + b.z) / 2 + ); }; /** - * Check whether the queue needs to be flushed - * @private + * Calculate the cross product of the two provided points, returns axb + * Documentation: http://en.wikipedia.org/wiki/Cross_product + * @param {Point3d} a + * @param {Point3d} b + * @return {Point3d} cross product axb */ - Queue.prototype._flushIfNeeded = function () { - // flush when the maximum is exceeded. - if (this._queue.length > this.max) { - this.flush(); - } + Point3d.crossProduct = function(a, b) { + var crossproduct = new Point3d(); - // flush after a period of inactivity when a delay is configured - clearTimeout(this._timeout); - if (this.queue.length > 0 && typeof this.delay === 'number') { - var me = this; - this._timeout = setTimeout(function () { - me.flush(); - }, this.delay); - } + crossproduct.x = a.y * b.z - a.z * b.y; + crossproduct.y = a.z * b.x - a.x * b.z; + crossproduct.z = a.x * b.y - a.y * b.x; + + return crossproduct; }; + /** - * Flush all queued calls + * Rtrieve the length of the vector (or the distance from this point to the origin + * @return {Number} length */ - Queue.prototype.flush = function () { - while (this._queue.length > 0) { - var entry = this._queue.shift(); - entry.fn.apply(entry.context || entry.fn, entry.args || []); - } + Point3d.prototype.length = function() { + return Math.sqrt( + this.x * this.x + + this.y * this.y + + this.z * this.z + ); }; - module.exports = Queue; + module.exports = Point3d; /***/ }, -/* 9 */ +/* 11 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var DataSet = __webpack_require__(7); /** - * DataView - * - * a dataview offers a filtered view on a dataset or an other dataview. - * - * @param {DataSet | DataView} data - * @param {Object} [options] Available options: see method get + * @constructor Slider * - * @constructor DataView + * An html slider control with start/stop/prev/next buttons + * @param {Element} container The element where the slider will be created + * @param {Object} options Available options: + * {boolean} visible If true (default) the + * slider is visible. */ - function DataView (data, options) { - this._data = null; - this._ids = {}; // ids of the items currently in memory (just contains a boolean true) - this.length = 0; // number of items in the DataView - this._options = options || {}; - this._fieldId = 'id'; // name of the field containing id - this._subscribers = {}; // event subscribers - - var me = this; - this.listener = function () { - me._onEvent.apply(me, arguments); - }; + function Slider(container, options) { + if (container === undefined) { + throw 'Error: No container element defined'; + } + this.container = container; + this.visible = (options && options.visible != undefined) ? options.visible : true; - this.setData(data); - } + if (this.visible) { + this.frame = document.createElement('DIV'); + //this.frame.style.backgroundColor = '#E5E5E5'; + this.frame.style.width = '100%'; + this.frame.style.position = 'relative'; + this.container.appendChild(this.frame); - // TODO: implement a function .config() to dynamically update things like configured filter - // and trigger changes accordingly + this.frame.prev = document.createElement('INPUT'); + this.frame.prev.type = 'BUTTON'; + this.frame.prev.value = 'Prev'; + this.frame.appendChild(this.frame.prev); - /** - * Set a data source for the view - * @param {DataSet | DataView} data - */ - DataView.prototype.setData = function (data) { - var ids, i, len; + this.frame.play = document.createElement('INPUT'); + this.frame.play.type = 'BUTTON'; + this.frame.play.value = 'Play'; + this.frame.appendChild(this.frame.play); - if (this._data) { - // unsubscribe from current dataset - if (this._data.unsubscribe) { - this._data.unsubscribe('*', this.listener); - } + this.frame.next = document.createElement('INPUT'); + this.frame.next.type = 'BUTTON'; + this.frame.next.value = 'Next'; + this.frame.appendChild(this.frame.next); - // trigger a remove of all items in memory - ids = []; - for (var id in this._ids) { - if (this._ids.hasOwnProperty(id)) { - ids.push(id); - } - } - this._ids = {}; - this.length = 0; - this._trigger('remove', {items: ids}); + this.frame.bar = document.createElement('INPUT'); + this.frame.bar.type = 'BUTTON'; + this.frame.bar.style.position = 'absolute'; + this.frame.bar.style.border = '1px solid red'; + this.frame.bar.style.width = '100px'; + this.frame.bar.style.height = '6px'; + this.frame.bar.style.borderRadius = '2px'; + this.frame.bar.style.MozBorderRadius = '2px'; + this.frame.bar.style.border = '1px solid #7F7F7F'; + this.frame.bar.style.backgroundColor = '#E5E5E5'; + this.frame.appendChild(this.frame.bar); + + this.frame.slide = document.createElement('INPUT'); + this.frame.slide.type = 'BUTTON'; + this.frame.slide.style.margin = '0px'; + this.frame.slide.value = ' '; + this.frame.slide.style.position = 'relative'; + this.frame.slide.style.left = '-100px'; + this.frame.appendChild(this.frame.slide); + + // create events + var me = this; + this.frame.slide.onmousedown = function (event) {me._onMouseDown(event);}; + this.frame.prev.onclick = function (event) {me.prev(event);}; + this.frame.play.onclick = function (event) {me.togglePlay(event);}; + this.frame.next.onclick = function (event) {me.next(event);}; } - this._data = data; + this.onChangeCallback = undefined; - if (this._data) { - // update fieldId - this._fieldId = this._options.fieldId || - (this._data && this._data.options && this._data.options.fieldId) || - 'id'; + this.values = []; + this.index = undefined; - // trigger an add of all added items - ids = this._data.getIds({filter: this._options && this._options.filter}); - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - this._ids[id] = true; - } - this.length = ids.length; - this._trigger('add', {items: ids}); + this.playTimeout = undefined; + this.playInterval = 1000; // milliseconds + this.playLoop = true; + } - // subscribe to new dataset - if (this._data.on) { - this._data.on('*', this.listener); - } + /** + * Select the previous index + */ + Slider.prototype.prev = function() { + var index = this.getIndex(); + if (index > 0) { + index--; + this.setIndex(index); } }; /** - * Refresh the DataView. Useful when the DataView has a filter function - * containing a variable parameter. + * Select the next index */ - DataView.prototype.refresh = function () { - var id; - var ids = this._data.getIds({filter: this._options && this._options.filter}); - var newIds = {}; - var added = []; - var removed = []; - - // check for additions - for (var i = 0; i < ids.length; i++) { - id = ids[i]; - newIds[id] = true; - if (!this._ids[id]) { - added.push(id); - this._ids[id] = true; - this.length++; - } + Slider.prototype.next = function() { + var index = this.getIndex(); + if (index < this.values.length - 1) { + index++; + this.setIndex(index); } + }; - // check for removals - for (id in this._ids) { - if (this._ids.hasOwnProperty(id)) { - if (!newIds[id]) { - removed.push(id); - delete this._ids[id]; - this.length--; - } - } - } + /** + * Select the next index + */ + Slider.prototype.playNext = function() { + var start = new Date(); - // trigger events - if (added.length) { - this._trigger('add', {items: added}); + var index = this.getIndex(); + if (index < this.values.length - 1) { + index++; + this.setIndex(index); } - if (removed.length) { - this._trigger('remove', {items: removed}); + else if (this.playLoop) { + // jump to the start + index = 0; + this.setIndex(index); } + + var end = new Date(); + var diff = (end - start); + + // calculate how much time it to to set the index and to execute the callback + // function. + var interval = Math.max(this.playInterval - diff, 0); + // document.title = diff // TODO: cleanup + + var me = this; + this.playTimeout = setTimeout(function() {me.playNext();}, interval); }; /** - * Get data from the data view - * - * Usage: - * - * get() - * get(options: Object) - * get(options: Object, data: Array | DataTable) - * - * get(id: Number) - * get(id: Number, options: Object) - * get(id: Number, options: Object, data: Array | DataTable) - * - * get(ids: Number[]) - * get(ids: Number[], options: Object) - * get(ids: Number[], options: Object, data: Array | DataTable) - * - * Where: - * - * {Number | String} id The id of an item - * {Number[] | String{}} ids An array with ids of items - * {Object} options An Object with options. Available options: - * {String} [type] Type of data to be returned. Can - * be 'DataTable' or 'Array' (default) - * {Object.} [convert] - * {String[]} [fields] field names to be returned - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * {Array | DataTable} [data] If provided, items will be appended to this - * array or table. Required in case of Google - * DataTable. - * @param args + * Toggle start or stop playing */ - DataView.prototype.get = function (args) { - var me = this; - - // parse the arguments - var ids, options, data; - var firstType = util.getType(arguments[0]); - if (firstType == 'String' || firstType == 'Number' || firstType == 'Array') { - // get(id(s) [, options] [, data]) - ids = arguments[0]; // can be a single id or an array with ids - options = arguments[1]; - data = arguments[2]; - } - else { - // get([, options] [, data]) - options = arguments[0]; - data = arguments[1]; + Slider.prototype.togglePlay = function() { + if (this.playTimeout === undefined) { + this.play(); + } else { + this.stop(); } + }; - // extend the options with the default options and provided options - var viewOptions = util.extend({}, this._options, options); + /** + * Start playing + */ + Slider.prototype.play = function() { + // Test whether already playing + if (this.playTimeout) return; - // create a combined filter method when needed - if (this._options.filter && options && options.filter) { - viewOptions.filter = function (item) { - return me._options.filter(item) && options.filter(item); - } + this.playNext(); + + if (this.frame) { + this.frame.play.value = 'Stop'; } + }; - // build up the call to the linked data set - var getArguments = []; - if (ids != undefined) { - getArguments.push(ids); + /** + * Stop playing + */ + Slider.prototype.stop = function() { + clearInterval(this.playTimeout); + this.playTimeout = undefined; + + if (this.frame) { + this.frame.play.value = 'Play'; } - getArguments.push(viewOptions); - getArguments.push(data); + }; - return this._data && this._data.get.apply(this._data, getArguments); + /** + * Set a callback function which will be triggered when the value of the + * slider bar has changed. + */ + Slider.prototype.setOnChangeCallback = function(callback) { + this.onChangeCallback = callback; }; /** - * Get ids of all items or from a filtered set of items. - * @param {Object} [options] An Object with options. Available options: - * {function} [filter] filter items - * {String | function} [order] Order the items by - * a field name or custom sort function. - * @return {Array} ids + * Set the interval for playing the list + * @param {Number} interval The interval in milliseconds */ - DataView.prototype.getIds = function (options) { - var ids; + Slider.prototype.setPlayInterval = function(interval) { + this.playInterval = interval; + }; - if (this._data) { - var defaultFilter = this._options.filter; - var filter; + /** + * Retrieve the current play interval + * @return {Number} interval The interval in milliseconds + */ + Slider.prototype.getPlayInterval = function(interval) { + return this.playInterval; + }; - if (options && options.filter) { - if (defaultFilter) { - filter = function (item) { - return defaultFilter(item) && options.filter(item); - } - } - else { - filter = options.filter; - } - } - else { - filter = defaultFilter; - } + /** + * Set looping on or off + * @pararm {boolean} doLoop If true, the slider will jump to the start when + * the end is passed, and will jump to the end + * when the start is passed. + */ + Slider.prototype.setPlayLoop = function(doLoop) { + this.playLoop = doLoop; + }; - ids = this._data.getIds({ - filter: filter, - order: options && options.order - }); + + /** + * Execute the onchange callback function + */ + Slider.prototype.onChange = function() { + if (this.onChangeCallback !== undefined) { + this.onChangeCallback(); } - else { - ids = []; + }; + + /** + * redraw the slider on the correct place + */ + Slider.prototype.redraw = function() { + if (this.frame) { + // resize the bar + this.frame.bar.style.top = (this.frame.clientHeight/2 - + this.frame.bar.offsetHeight/2) + 'px'; + this.frame.bar.style.width = (this.frame.clientWidth - + this.frame.prev.clientWidth - + this.frame.play.clientWidth - + this.frame.next.clientWidth - 30) + 'px'; + + // position the slider button + var left = this.indexToLeft(this.index); + this.frame.slide.style.left = (left) + 'px'; } + }; - return ids; + + /** + * Set the list with values for the slider + * @param {Array} values A javascript array with values (any type) + */ + Slider.prototype.setValues = function(values) { + this.values = values; + + if (this.values.length > 0) + this.setIndex(0); + else + this.index = undefined; }; /** - * Get the DataSet to which this DataView is connected. In case there is a chain - * of multiple DataViews, the root DataSet of this chain is returned. - * @return {DataSet} dataSet + * Select a value by its index + * @param {Number} index */ - DataView.prototype.getDataSet = function () { - var dataSet = this; - while (dataSet instanceof DataView) { - dataSet = dataSet._data; + Slider.prototype.setIndex = function(index) { + if (index < this.values.length) { + this.index = index; + + this.redraw(); + this.onChange(); + } + else { + throw 'Error: index out of range'; } - return dataSet || null; }; /** - * Event listener. Will propagate all events from the connected data set to - * the subscribers of the DataView, but will filter the items and only trigger - * when there are changes in the filtered data set. - * @param {String} event - * @param {Object | null} params - * @param {String} senderId - * @private + * retrieve the index of the currently selected vaue + * @return {Number} index */ - DataView.prototype._onEvent = function (event, params, senderId) { - var i, len, id, item; - var ids = params && params.items; - var data = this._data; - var updatedData = []; - var added = []; - var updated = []; - var removed = []; + Slider.prototype.getIndex = function() { + return this.index; + }; - if (ids && data) { - switch (event) { - case 'add': - // filter the ids of the added items - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - item = this.get(id); - if (item) { - this._ids[id] = true; - added.push(id); - } - } - break; + /** + * retrieve the currently selected value + * @return {*} value + */ + Slider.prototype.get = function() { + return this.values[this.index]; + }; - case 'update': - // determine the event from the views viewpoint: an updated - // item can be added, updated, or removed from this view. - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - item = this.get(id); - if (item) { - if (this._ids[id]) { - updated.push(id); - updatedData.push(params.data[i]); - } - else { - this._ids[id] = true; - added.push(id); - } - } - else { - if (this._ids[id]) { - delete this._ids[id]; - removed.push(id); - } - else { - // nothing interesting for me :-( - } - } - } + Slider.prototype._onMouseDown = function(event) { + // only react on left mouse button down + var leftButtonDown = event.which ? (event.which === 1) : (event.button === 1); + if (!leftButtonDown) return; - break; + this.startClientX = event.clientX; + this.startSlideX = parseFloat(this.frame.slide.style.left); - case 'remove': - // filter the ids of the removed items - for (i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - if (this._ids[id]) { - delete this._ids[id]; - removed.push(id); - } - } + this.frame.style.cursor = 'move'; - break; - } + // add event listeners to handle moving the contents + // we store the function onmousemove and onmouseup in the graph, so we can + // remove the eventlisteners lateron in the function mouseUp() + var me = this; + this.onmousemove = function (event) {me._onMouseMove(event);}; + this.onmouseup = function (event) {me._onMouseUp(event);}; + util.addEventListener(document, 'mousemove', this.onmousemove); + util.addEventListener(document, 'mouseup', this.onmouseup); + util.preventDefault(event); + }; - this.length += added.length - removed.length; - if (added.length) { - this._trigger('add', {items: added}, senderId); - } - if (updated.length) { - this._trigger('update', {items: updated, data: updatedData}, senderId); - } - if (removed.length) { - this._trigger('remove', {items: removed}, senderId); - } - } + Slider.prototype.leftToIndex = function (left) { + var width = parseFloat(this.frame.bar.style.width) - + this.frame.slide.clientWidth - 10; + var x = left - 3; + + var index = Math.round(x / width * (this.values.length-1)); + if (index < 0) index = 0; + if (index > this.values.length-1) index = this.values.length-1; + + return index; }; - // copy subscription functionality from DataSet - DataView.prototype.on = DataSet.prototype.on; - DataView.prototype.off = DataSet.prototype.off; - DataView.prototype._trigger = DataSet.prototype._trigger; + Slider.prototype.indexToLeft = function (index) { + var width = parseFloat(this.frame.bar.style.width) - + this.frame.slide.clientWidth - 10; - // TODO: make these functions deprecated (replaced with `on` and `off` since version 0.5) - DataView.prototype.subscribe = DataView.prototype.on; - DataView.prototype.unsubscribe = DataView.prototype.off; + var x = index / (this.values.length-1) * width; + var left = x + 3; - module.exports = DataView; + return left; + }; -/***/ }, -/* 10 */ -/***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(11); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(9); - var util = __webpack_require__(1); - var Point3d = __webpack_require__(12); - var Point2d = __webpack_require__(13); - var Camera = __webpack_require__(14); - var Filter = __webpack_require__(15); - var Slider = __webpack_require__(16); - var StepNumber = __webpack_require__(17); - /** - * @constructor Graph3d - * Graph3d displays data in 3d. - * - * Graph3d is developed in javascript as a Google Visualization Chart. - * - * @param {Element} container The DOM element in which the Graph3d will - * be created. Normally a div element. - * @param {DataSet | DataView | Array} [data] - * @param {Object} [options] - */ - function Graph3d(container, data, options) { - if (!(this instanceof Graph3d)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } + Slider.prototype._onMouseMove = function (event) { + var diff = event.clientX - this.startClientX; + var x = this.startSlideX + diff; - // create variables and set default values - this.containerElement = container; - this.width = '400px'; - this.height = '400px'; - this.margin = 10; // px - this.defaultXCenter = '55%'; - this.defaultYCenter = '50%'; + var index = this.leftToIndex(x); - this.xLabel = 'x'; - this.yLabel = 'y'; - this.zLabel = 'z'; + this.setIndex(index); - var passValueFn = function(v) { return v; }; - this.xValueLabel = passValueFn; - this.yValueLabel = passValueFn; - this.zValueLabel = passValueFn; - - this.filterLabel = 'time'; - this.legendLabel = 'value'; + util.preventDefault(); + }; - this.style = Graph3d.STYLE.DOT; - this.showPerspective = true; - this.showGrid = true; - this.keepAspectRatio = true; - this.showShadow = false; - this.showGrayBottom = false; // TODO: this does not work correctly - this.showTooltip = false; - this.verticalRatio = 0.5; // 0.1 to 1.0, where 1.0 results in a 'cube' - this.animationInterval = 1000; // milliseconds - this.animationPreload = false; - - this.camera = new Camera(); - this.eye = new Point3d(0, 0, -1); // TODO: set eye.z about 3/4 of the width of the window? - - this.dataTable = null; // The original data table - this.dataPoints = null; // The table with point objects - - // the column indexes - this.colX = undefined; - this.colY = undefined; - this.colZ = undefined; - this.colValue = undefined; - this.colFilter = undefined; - - this.xMin = 0; - this.xStep = undefined; // auto by default - this.xMax = 1; - this.yMin = 0; - this.yStep = undefined; // auto by default - this.yMax = 1; - this.zMin = 0; - this.zStep = undefined; // auto by default - this.zMax = 1; - this.valueMin = 0; - this.valueMax = 1; - this.xBarWidth = 1; - this.yBarWidth = 1; - // TODO: customize axis range + Slider.prototype._onMouseUp = function (event) { + this.frame.style.cursor = 'auto'; - // constants - this.colorAxis = '#4D4D4D'; - this.colorGrid = '#D3D3D3'; - this.colorDot = '#7DC1FF'; - this.colorDotBorder = '#3267D2'; + // remove event listeners + util.removeEventListener(document, 'mousemove', this.onmousemove); + util.removeEventListener(document, 'mouseup', this.onmouseup); - // create a frame and canvas - this.create(); + util.preventDefault(); + }; - // apply options (also when undefined) - this.setOptions(options); + module.exports = Slider; - // apply data - if (data) { - this.setData(data); - } - } - // Extend Graph3d with an Emitter mixin - Emitter(Graph3d.prototype); +/***/ }, +/* 12 */ +/***/ function(module, exports, __webpack_require__) { /** - * Calculate the scaling values, dependent on the range in x, y, and z direction + * @prototype StepNumber + * The class StepNumber is an iterator for Numbers. You provide a start and end + * value, and a best step size. StepNumber itself rounds to fixed values and + * a finds the step that best fits the provided step. + * + * If prettyStep is true, the step size is chosen as close as possible to the + * provided step, but being a round value like 1, 2, 5, 10, 20, 50, .... + * + * Example usage: + * var step = new StepNumber(0, 10, 2.5, true); + * step.start(); + * while (!step.end()) { + * alert(step.getCurrent()); + * step.next(); + * } + * + * Version: 1.0 + * + * @param {Number} start The start value + * @param {Number} end The end value + * @param {Number} step Optional. Step size. Must be a positive value. + * @param {boolean} prettyStep Optional. If true, the step size is rounded + * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...) */ - Graph3d.prototype._setScale = function() { - this.scale = new Point3d(1 / (this.xMax - this.xMin), - 1 / (this.yMax - this.yMin), - 1 / (this.zMax - this.zMin)); - - // keep aspect ration between x and y scale if desired - if (this.keepAspectRatio) { - if (this.scale.x < this.scale.y) { - //noinspection JSSuspiciousNameCombination - this.scale.y = this.scale.x; - } - else { - //noinspection JSSuspiciousNameCombination - this.scale.x = this.scale.y; - } - } - - // scale the vertical axis - this.scale.z *= this.verticalRatio; - // TODO: can this be automated? verticalRatio? - - // determine scale for (optional) value - this.scale.value = 1 / (this.valueMax - this.valueMin); + function StepNumber(start, end, step, prettyStep) { + // set default values + this._start = 0; + this._end = 0; + this._step = 1; + this.prettyStep = true; + this.precision = 5; - // position the camera arm - var xCenter = (this.xMax + this.xMin) / 2 * this.scale.x; - var yCenter = (this.yMax + this.yMin) / 2 * this.scale.y; - var zCenter = (this.zMax + this.zMin) / 2 * this.scale.z; - this.camera.setArmLocation(xCenter, yCenter, zCenter); + this._current = 0; + this.setRange(start, end, step, prettyStep); }; - /** - * Convert a 3D location to a 2D location on screen - * http://en.wikipedia.org/wiki/3D_projection - * @param {Point3d} point3d A 3D point with parameters x, y, z - * @return {Point2d} point2d A 2D point with parameters x, y + * Set a new range: start, end and step. + * + * @param {Number} start The start value + * @param {Number} end The end value + * @param {Number} step Optional. Step size. Must be a positive value. + * @param {boolean} prettyStep Optional. If true, the step size is rounded + * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...) */ - Graph3d.prototype._convert3Dto2D = function(point3d) { - var translation = this._convertPointToTranslation(point3d); - return this._convertTranslationToScreen(translation); + StepNumber.prototype.setRange = function(start, end, step, prettyStep) { + this._start = start ? start : 0; + this._end = end ? end : 0; + + this.setStep(step, prettyStep); }; /** - * Convert a 3D location its translation seen from the camera - * http://en.wikipedia.org/wiki/3D_projection - * @param {Point3d} point3d A 3D point with parameters x, y, z - * @return {Point3d} translation A 3D point with parameters x, y, z This is - * the translation of the point, seen from the - * camera + * Set a new step size + * @param {Number} step New step size. Must be a positive value + * @param {boolean} prettyStep Optional. If true, the provided step is rounded + * to a pretty step size (like 1, 2, 5, 10, 20, 50, ...) */ - Graph3d.prototype._convertPointToTranslation = function(point3d) { - var ax = point3d.x * this.scale.x, - ay = point3d.y * this.scale.y, - az = point3d.z * this.scale.z, - - cx = this.camera.getCameraLocation().x, - cy = this.camera.getCameraLocation().y, - cz = this.camera.getCameraLocation().z, - - // calculate angles - sinTx = Math.sin(this.camera.getCameraRotation().x), - cosTx = Math.cos(this.camera.getCameraRotation().x), - sinTy = Math.sin(this.camera.getCameraRotation().y), - cosTy = Math.cos(this.camera.getCameraRotation().y), - sinTz = Math.sin(this.camera.getCameraRotation().z), - cosTz = Math.cos(this.camera.getCameraRotation().z), + StepNumber.prototype.setStep = function(step, prettyStep) { + if (step === undefined || step <= 0) + return; - // calculate translation - dx = cosTy * (sinTz * (ay - cy) + cosTz * (ax - cx)) - sinTy * (az - cz), - dy = sinTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) + cosTx * (cosTz * (ay - cy) - sinTz * (ax-cx)), - dz = cosTx * (cosTy * (az - cz) + sinTy * (sinTz * (ay - cy) + cosTz * (ax - cx))) - sinTx * (cosTz * (ay - cy) - sinTz * (ax-cx)); + if (prettyStep !== undefined) + this.prettyStep = prettyStep; - return new Point3d(dx, dy, dz); + if (this.prettyStep === true) + this._step = StepNumber.calculatePrettyStep(step); + else + this._step = step; }; /** - * Convert a translation point to a point on the screen - * @param {Point3d} translation A 3D point with parameters x, y, z This is - * the translation of the point, seen from the - * camera - * @return {Point2d} point2d A 2D point with parameters x, y + * Calculate a nice step size, closest to the desired step size. + * Returns a value in one of the ranges 1*10^n, 2*10^n, or 5*10^n, where n is an + * integer Number. For example 1, 2, 5, 10, 20, 50, etc... + * @param {Number} step Desired step size + * @return {Number} Nice step size */ - Graph3d.prototype._convertTranslationToScreen = function(translation) { - var ex = this.eye.x, - ey = this.eye.y, - ez = this.eye.z, - dx = translation.x, - dy = translation.y, - dz = translation.z; + StepNumber.calculatePrettyStep = function (step) { + var log10 = function (x) {return Math.log(x) / Math.LN10;}; - // calculate position on screen from translation - var bx; - var by; - if (this.showPerspective) { - bx = (dx - ex) * (ez / dz); - by = (dy - ey) * (ez / dz); - } - else { - bx = dx * -(ez / this.camera.getArmLength()); - by = dy * -(ez / this.camera.getArmLength()); + // try three steps (multiple of 1, 2, or 5 + var step1 = Math.pow(10, Math.round(log10(step))), + step2 = 2 * Math.pow(10, Math.round(log10(step / 2))), + step5 = 5 * Math.pow(10, Math.round(log10(step / 5))); + + // choose the best step (closest to minimum step) + var prettyStep = step1; + if (Math.abs(step2 - step) <= Math.abs(prettyStep - step)) prettyStep = step2; + if (Math.abs(step5 - step) <= Math.abs(prettyStep - step)) prettyStep = step5; + + // for safety + if (prettyStep <= 0) { + prettyStep = 1; } - // shift and scale the point to the center of the screen - // use the width of the graph to scale both horizontally and vertically. - return new Point2d( - this.xcenter + bx * this.frame.canvas.clientWidth, - this.ycenter - by * this.frame.canvas.clientWidth); + return prettyStep; }; /** - * Set the background styling for the graph - * @param {string | {fill: string, stroke: string, strokeWidth: string}} backgroundColor + * returns the current value of the step + * @return {Number} current value */ - Graph3d.prototype._setBackgroundColor = function(backgroundColor) { - var fill = 'white'; - var stroke = 'gray'; - var strokeWidth = 1; - - if (typeof(backgroundColor) === 'string') { - fill = backgroundColor; - stroke = 'none'; - strokeWidth = 0; - } - else if (typeof(backgroundColor) === 'object') { - if (backgroundColor.fill !== undefined) fill = backgroundColor.fill; - if (backgroundColor.stroke !== undefined) stroke = backgroundColor.stroke; - if (backgroundColor.strokeWidth !== undefined) strokeWidth = backgroundColor.strokeWidth; - } - else if (backgroundColor === undefined) { - // use use defaults - } - else { - throw 'Unsupported type of backgroundColor'; - } - - this.frame.style.backgroundColor = fill; - this.frame.style.borderColor = stroke; - this.frame.style.borderWidth = strokeWidth + 'px'; - this.frame.style.borderStyle = 'solid'; + StepNumber.prototype.getCurrent = function () { + return parseFloat(this._current.toPrecision(this.precision)); }; - - /// enumerate the available styles - Graph3d.STYLE = { - BAR: 0, - BARCOLOR: 1, - BARSIZE: 2, - DOT : 3, - DOTLINE : 4, - DOTCOLOR: 5, - DOTSIZE: 6, - GRID : 7, - LINE: 8, - SURFACE : 9 + /** + * returns the current step size + * @return {Number} current step size + */ + StepNumber.prototype.getStep = function () { + return this._step; }; /** - * Retrieve the style index from given styleName - * @param {string} styleName Style name such as 'dot', 'grid', 'dot-line' - * @return {Number} styleNumber Enumeration value representing the style, or -1 - * when not found + * Set the current value to the largest value smaller than start, which + * is a multiple of the step size */ - Graph3d.prototype._getStyleNumber = function(styleName) { - switch (styleName) { - case 'dot': return Graph3d.STYLE.DOT; - case 'dot-line': return Graph3d.STYLE.DOTLINE; - case 'dot-color': return Graph3d.STYLE.DOTCOLOR; - case 'dot-size': return Graph3d.STYLE.DOTSIZE; - case 'line': return Graph3d.STYLE.LINE; - case 'grid': return Graph3d.STYLE.GRID; - case 'surface': return Graph3d.STYLE.SURFACE; - case 'bar': return Graph3d.STYLE.BAR; - case 'bar-color': return Graph3d.STYLE.BARCOLOR; - case 'bar-size': return Graph3d.STYLE.BARSIZE; - } - - return -1; + StepNumber.prototype.start = function() { + this._current = this._start - this._start % this._step; }; /** - * Determine the indexes of the data columns, based on the given style and data - * @param {DataSet} data - * @param {Number} style + * Do a step, add the step size to the current value */ - Graph3d.prototype._determineColumnIndexes = function(data, style) { - if (this.style === Graph3d.STYLE.DOT || - this.style === Graph3d.STYLE.DOTLINE || - this.style === Graph3d.STYLE.LINE || - this.style === Graph3d.STYLE.GRID || - this.style === Graph3d.STYLE.SURFACE || - this.style === Graph3d.STYLE.BAR) { - // 3 columns expected, and optionally a 4th with filter values - this.colX = 0; - this.colY = 1; - this.colZ = 2; - this.colValue = undefined; - - if (data.getNumberOfColumns() > 3) { - this.colFilter = 3; - } - } - else if (this.style === Graph3d.STYLE.DOTCOLOR || - this.style === Graph3d.STYLE.DOTSIZE || - this.style === Graph3d.STYLE.BARCOLOR || - this.style === Graph3d.STYLE.BARSIZE) { - // 4 columns expected, and optionally a 5th with filter values - this.colX = 0; - this.colY = 1; - this.colZ = 2; - this.colValue = 3; + StepNumber.prototype.next = function () { + this._current += this._step; + }; - if (data.getNumberOfColumns() > 4) { - this.colFilter = 4; - } - } - else { - throw 'Unknown style "' + this.style + '"'; - } + /** + * Returns true whether the end is reached + * @return {boolean} True if the current value has passed the end value. + */ + StepNumber.prototype.end = function () { + return (this._current > this._end); }; - Graph3d.prototype.getNumberOfRows = function(data) { - return data.length; - } + module.exports = StepNumber; - Graph3d.prototype.getNumberOfColumns = function(data) { - var counter = 0; - for (var column in data[0]) { - if (data[0].hasOwnProperty(column)) { - counter++; - } - } - return counter; - } +/***/ }, +/* 13 */ +/***/ function(module, exports, __webpack_require__) { + var Emitter = __webpack_require__(56); + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var Range = __webpack_require__(17); + var Core = __webpack_require__(46); + var TimeAxis = __webpack_require__(35); + var CurrentTime = __webpack_require__(26); + var CustomTime = __webpack_require__(27); + var ItemSet = __webpack_require__(32); - Graph3d.prototype.getDistinctValues = function(data, column) { - var distinctValues = []; - for (var i = 0; i < data.length; i++) { - if (distinctValues.indexOf(data[i][column]) == -1) { - distinctValues.push(data[i][column]); - } + /** + * Create a timeline visualization + * @param {HTMLElement} container + * @param {vis.DataSet | vis.DataView | Array | google.visualization.DataTable} [items] + * @param {vis.DataSet | vis.DataView | Array | google.visualization.DataTable} [groups] + * @param {Object} [options] See Timeline.setOptions for the available options. + * @constructor + * @extends Core + */ + function Timeline (container, items, groups, options) { + if (!(this instanceof Timeline)) { + throw new SyntaxError('Constructor must be called with the new operator'); } - return distinctValues; - } - - Graph3d.prototype.getColumnRange = function(data,column) { - var minMax = {min:data[0][column],max:data[0][column]}; - for (var i = 0; i < data.length; i++) { - if (minMax.min > data[i][column]) { minMax.min = data[i][column]; } - if (minMax.max < data[i][column]) { minMax.max = data[i][column]; } + // if the third element is options, the forth is groups (optionally); + if (!(Array.isArray(groups) || groups instanceof DataSet || groups instanceof DataView) && groups instanceof Object) { + var forthArgument = options; + options = groups; + groups = forthArgument; } - return minMax; - }; - /** - * Initialize the data from the data table. Calculate minimum and maximum values - * and column index values - * @param {Array | DataSet | DataView} rawData The data containing the items for the Graph. - * @param {Number} style Style Number - */ - Graph3d.prototype._dataInitialize = function (rawData, style) { var me = this; + this.defaultOptions = { + start: null, + end: null, - // unsubscribe from the dataTable - if (this.dataSet) { - this.dataSet.off('*', this._onChange); - } - - if (rawData === undefined) - return; + autoResize: true, - if (Array.isArray(rawData)) { - rawData = new DataSet(rawData); - } + orientation: 'bottom', // 'bottom', 'top', or 'both' + width: null, + height: null, + maxHeight: null, + minHeight: null + }; + this.options = util.deepExtend({}, this.defaultOptions); - var data; - if (rawData instanceof DataSet || rawData instanceof DataView) { - data = rawData.get(); - } - else { - throw new Error('Array, DataSet, or DataView expected'); - } + // Create the DOM, props, and emitter + this._create(container); - if (data.length == 0) - return; + // all components listed here will be repainted automatically + this.components = []; - this.dataSet = rawData; - this.dataTable = data; + this.body = { + dom: this.dom, + domProps: this.props, + emitter: { + on: this.on.bind(this), + off: this.off.bind(this), + emit: this.emit.bind(this) + }, + hiddenDates: [], + util: { + getScale: function () { + return me.timeAxis.step.scale; + }, + getStep: function () { + return me.timeAxis.step.step; + }, - // subscribe to changes in the dataset - this._onChange = function () { - me.setData(me.dataSet); + toScreen: me._toScreen.bind(me), + toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width + toTime: me._toTime.bind(me), + toGlobalTime : me._toGlobalTime.bind(me) + } }; - this.dataSet.on('*', this._onChange); - // _determineColumnIndexes - // getNumberOfRows (points) - // getNumberOfColumns (x,y,z,v,t,t1,t2...) - // getDistinctValues (unique values?) - // getColumnRange + // range + this.range = new Range(this.body); + this.components.push(this.range); + this.body.range = this.range; - // determine the location of x,y,z,value,filter columns - this.colX = 'x'; - this.colY = 'y'; - this.colZ = 'z'; - this.colValue = 'style'; - this.colFilter = 'filter'; + // time axis + this.timeAxis = new TimeAxis(this.body); + this.timeAxis2 = null; // used in case of orientation option 'both' + this.components.push(this.timeAxis); + // current time bar + this.currentTime = new CurrentTime(this.body); + this.components.push(this.currentTime); + // custom time bar + // Note: time bar will be attached in this.setOptions when selected + this.customTime = new CustomTime(this.body); + this.components.push(this.customTime); - // check if a filter column is provided - if (data[0].hasOwnProperty('filter')) { - if (this.dataFilter === undefined) { - this.dataFilter = new Filter(rawData, this.colFilter, this); - this.dataFilter.setOnLoadCallback(function() {me.redraw();}); - } - } + // item set + this.itemSet = new ItemSet(this.body); + this.components.push(this.itemSet); + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet - var withBars = this.style == Graph3d.STYLE.BAR || - this.style == Graph3d.STYLE.BARCOLOR || - this.style == Graph3d.STYLE.BARSIZE; + // apply options + if (options) { + this.setOptions(options); + } - // determine barWidth from data - if (withBars) { - if (this.defaultXBarWidth !== undefined) { - this.xBarWidth = this.defaultXBarWidth; - } - else { - var dataX = this.getDistinctValues(data,this.colX); - this.xBarWidth = (dataX[1] - dataX[0]) || 1; - } - - if (this.defaultYBarWidth !== undefined) { - this.yBarWidth = this.defaultYBarWidth; - } - else { - var dataY = this.getDistinctValues(data,this.colY); - this.yBarWidth = (dataY[1] - dataY[0]) || 1; - } + // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! + if (groups) { + this.setGroups(groups); } - // calculate minimums and maximums - var xRange = this.getColumnRange(data,this.colX); - if (withBars) { - xRange.min -= this.xBarWidth / 2; - xRange.max += this.xBarWidth / 2; + // create itemset + if (items) { + this.setItems(items); } - this.xMin = (this.defaultXMin !== undefined) ? this.defaultXMin : xRange.min; - this.xMax = (this.defaultXMax !== undefined) ? this.defaultXMax : xRange.max; - if (this.xMax <= this.xMin) this.xMax = this.xMin + 1; - this.xStep = (this.defaultXStep !== undefined) ? this.defaultXStep : (this.xMax-this.xMin)/5; - - var yRange = this.getColumnRange(data,this.colY); - if (withBars) { - yRange.min -= this.yBarWidth / 2; - yRange.max += this.yBarWidth / 2; + else { + this._redraw(); } - this.yMin = (this.defaultYMin !== undefined) ? this.defaultYMin : yRange.min; - this.yMax = (this.defaultYMax !== undefined) ? this.defaultYMax : yRange.max; - if (this.yMax <= this.yMin) this.yMax = this.yMin + 1; - this.yStep = (this.defaultYStep !== undefined) ? this.defaultYStep : (this.yMax-this.yMin)/5; - - var zRange = this.getColumnRange(data,this.colZ); - this.zMin = (this.defaultZMin !== undefined) ? this.defaultZMin : zRange.min; - this.zMax = (this.defaultZMax !== undefined) ? this.defaultZMax : zRange.max; - if (this.zMax <= this.zMin) this.zMax = this.zMin + 1; - this.zStep = (this.defaultZStep !== undefined) ? this.defaultZStep : (this.zMax-this.zMin)/5; + } - if (this.colValue !== undefined) { - var valueRange = this.getColumnRange(data,this.colValue); - this.valueMin = (this.defaultValueMin !== undefined) ? this.defaultValueMin : valueRange.min; - this.valueMax = (this.defaultValueMax !== undefined) ? this.defaultValueMax : valueRange.max; - if (this.valueMax <= this.valueMin) this.valueMax = this.valueMin + 1; - } + // Extend the functionality from Core + Timeline.prototype = new Core(); - // set the scale dependent on the ranges. - this._setScale(); + /** + * Force a redraw. The size of all items will be recalculated. + * Can be useful to manually redraw when option autoResize=false and the window + * has been resized, or when the items CSS has been changed. + */ + Timeline.prototype.redraw = function() { + this.itemSet && this.itemSet.markDirty({refreshItems: true}); + this._redraw(); }; - - /** - * Filter the data based on the current filter - * @param {Array} data - * @return {Array} dataPoints Array with point objects which can be drawn on screen + * Set items + * @param {vis.DataSet | Array | google.visualization.DataTable | null} items */ - Graph3d.prototype._getDataPoints = function (data) { - // TODO: store the created matrix dataPoints in the filters instead of reloading each time - var x, y, i, z, obj, point; - - var dataPoints = []; - - if (this.style === Graph3d.STYLE.GRID || - this.style === Graph3d.STYLE.SURFACE) { - // copy all values from the google data table to a matrix - // the provided values are supposed to form a grid of (x,y) positions - - // create two lists with all present x and y values - var dataX = []; - var dataY = []; - for (i = 0; i < this.getNumberOfRows(data); i++) { - x = data[i][this.colX] || 0; - y = data[i][this.colY] || 0; + Timeline.prototype.setItems = function(items) { + var initialLoad = (this.itemsData == null); - if (dataX.indexOf(x) === -1) { - dataX.push(x); - } - if (dataY.indexOf(y) === -1) { - dataY.push(y); + // convert to type DataSet when needed + var newDataSet; + if (!items) { + newDataSet = null; + } + else if (items instanceof DataSet || items instanceof DataView) { + newDataSet = items; + } + else { + // turn an array into a dataset + newDataSet = new DataSet(items, { + type: { + start: 'Date', + end: 'Date' } - } - - var sortNumber = function (a, b) { - return a - b; - }; - dataX.sort(sortNumber); - dataY.sort(sortNumber); - - // create a grid, a 2d matrix, with all values. - var dataMatrix = []; // temporary data matrix - for (i = 0; i < data.length; i++) { - x = data[i][this.colX] || 0; - y = data[i][this.colY] || 0; - z = data[i][this.colZ] || 0; + }); + } - var xIndex = dataX.indexOf(x); // TODO: implement Array().indexOf() for Internet Explorer - var yIndex = dataY.indexOf(y); + // set items + this.itemsData = newDataSet; + this.itemSet && this.itemSet.setItems(newDataSet); - if (dataMatrix[xIndex] === undefined) { - dataMatrix[xIndex] = []; + if (initialLoad) { + if (this.options.start != undefined || this.options.end != undefined) { + if (this.options.start == undefined || this.options.end == undefined) { + var dataRange = this._getDataRange(); } - var point3d = new Point3d(); - point3d.x = x; - point3d.y = y; - point3d.z = z; - - obj = {}; - obj.point = point3d; - obj.trans = undefined; - obj.screen = undefined; - obj.bottom = new Point3d(x, y, this.zMin); - - dataMatrix[xIndex][yIndex] = obj; - - dataPoints.push(obj); - } + var start = this.options.start != undefined ? this.options.start : dataRange.start; + var end = this.options.end != undefined ? this.options.end : dataRange.end; - // fill in the pointers to the neighbors. - for (x = 0; x < dataMatrix.length; x++) { - for (y = 0; y < dataMatrix[x].length; y++) { - if (dataMatrix[x][y]) { - dataMatrix[x][y].pointRight = (x < dataMatrix.length-1) ? dataMatrix[x+1][y] : undefined; - dataMatrix[x][y].pointTop = (y < dataMatrix[x].length-1) ? dataMatrix[x][y+1] : undefined; - dataMatrix[x][y].pointCross = - (x < dataMatrix.length-1 && y < dataMatrix[x].length-1) ? - dataMatrix[x+1][y+1] : - undefined; - } - } + this.setWindow(start, end, {animate: false}); } - } - else { // 'dot', 'dot-line', etc. - // copy all values from the google data table to a list with Point3d objects - for (i = 0; i < data.length; i++) { - point = new Point3d(); - point.x = data[i][this.colX] || 0; - point.y = data[i][this.colY] || 0; - point.z = data[i][this.colZ] || 0; - - if (this.colValue !== undefined) { - point.value = data[i][this.colValue] || 0; - } - - obj = {}; - obj.point = point; - obj.bottom = new Point3d(point.x, point.y, this.zMin); - obj.trans = undefined; - obj.screen = undefined; - - dataPoints.push(obj); + else { + this.fit({animate: false}); } } - - return dataPoints; }; /** - * Create the main frame for the Graph3d. - * This function is executed once when a Graph3d object is created. The frame - * contains a canvas, and this canvas contains all objects like the axis and - * nodes. + * Set groups + * @param {vis.DataSet | Array | google.visualization.DataTable} groups */ - Graph3d.prototype.create = function () { - // remove all elements from the container element. - while (this.containerElement.hasChildNodes()) { - this.containerElement.removeChild(this.containerElement.firstChild); + Timeline.prototype.setGroups = function(groups) { + // convert to type DataSet when needed + var newDataSet; + if (!groups) { + newDataSet = null; } - - this.frame = document.createElement('div'); - this.frame.style.position = 'relative'; - this.frame.style.overflow = 'hidden'; - - // create the graph canvas (HTML canvas element) - this.frame.canvas = document.createElement( 'canvas' ); - this.frame.canvas.style.position = 'relative'; - this.frame.appendChild(this.frame.canvas); - //if (!this.frame.canvas.getContext) { - { - var noCanvas = document.createElement( 'DIV' ); - noCanvas.style.color = 'red'; - noCanvas.style.fontWeight = 'bold' ; - noCanvas.style.padding = '10px'; - noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; - this.frame.canvas.appendChild(noCanvas); + else if (groups instanceof DataSet || groups instanceof DataView) { + newDataSet = groups; + } + else { + // turn an array into a dataset + newDataSet = new DataSet(groups); } - this.frame.filter = document.createElement( 'div' ); - this.frame.filter.style.position = 'absolute'; - this.frame.filter.style.bottom = '0px'; - this.frame.filter.style.left = '0px'; - this.frame.filter.style.width = '100%'; - this.frame.appendChild(this.frame.filter); - - // add event listeners to handle moving and zooming the contents - var me = this; - var onmousedown = function (event) {me._onMouseDown(event);}; - var ontouchstart = function (event) {me._onTouchStart(event);}; - var onmousewheel = function (event) {me._onWheel(event);}; - var ontooltip = function (event) {me._onTooltip(event);}; - // TODO: these events are never cleaned up... can give a 'memory leakage' - - util.addEventListener(this.frame.canvas, 'keydown', onkeydown); - util.addEventListener(this.frame.canvas, 'mousedown', onmousedown); - util.addEventListener(this.frame.canvas, 'touchstart', ontouchstart); - util.addEventListener(this.frame.canvas, 'mousewheel', onmousewheel); - util.addEventListener(this.frame.canvas, 'mousemove', ontooltip); - - // add the new graph to the container element - this.containerElement.appendChild(this.frame); + this.groupsData = newDataSet; + this.itemSet.setGroups(newDataSet); }; - /** - * Set a new size for the graph - * @param {string} width Width in pixels or percentage (for example '800px' - * or '50%') - * @param {string} height Height in pixels or percentage (for example '400px' - * or '30%') + * Set selected items by their id. Replaces the current selection + * Unknown id's are silently ignored. + * @param {string[] | string} [ids] An array with zero or more id's of the items to be + * selected. If ids is an empty array, all items will be + * unselected. + * @param {Object} [options] Available options: + * `focus: boolean` + * If true, focus will be set to the selected item(s) + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. + * Only applicable when option focus is true. */ - Graph3d.prototype.setSize = function(width, height) { - this.frame.style.width = width; - this.frame.style.height = height; + Timeline.prototype.setSelection = function(ids, options) { + this.itemSet && this.itemSet.setSelection(ids); - this._resizeCanvas(); + if (options && options.focus) { + this.focus(ids, options); + } }; /** - * Resize the canvas to the current size of the frame + * Get the selected items by their id + * @return {Array} ids The ids of the selected items */ - Graph3d.prototype._resizeCanvas = function() { - this.frame.canvas.style.width = '100%'; - this.frame.canvas.style.height = '100%'; - - this.frame.canvas.width = this.frame.canvas.clientWidth; - this.frame.canvas.height = this.frame.canvas.clientHeight; - - // adjust with for margin - this.frame.filter.style.width = (this.frame.canvas.clientWidth - 2 * 10) + 'px'; + Timeline.prototype.getSelection = function() { + return this.itemSet && this.itemSet.getSelection() || []; }; /** - * Start animation + * Adjust the visible window such that the selected item (or multiple items) + * are centered on screen. + * @param {String | String[]} id An item id or array with item ids + * @param {Object} [options] Available options: + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. + * Only applicable when option focus is true */ - Graph3d.prototype.animationStart = function() { - if (!this.frame.filter || !this.frame.filter.slider) - throw 'No animation available'; + Timeline.prototype.focus = function(id, options) { + if (!this.itemsData || id == undefined) return; - this.frame.filter.slider.play(); - }; + var ids = Array.isArray(id) ? id : [id]; + // get the specified item(s) + var itemsData = this.itemsData.getDataSet().get(ids, { + type: { + start: 'Date', + end: 'Date' + } + }); - /** - * Stop animation - */ - Graph3d.prototype.animationStop = function() { - if (!this.frame.filter || !this.frame.filter.slider) return; + // calculate minimum start and maximum end of specified items + var start = null; + var end = null; + itemsData.forEach(function (itemData) { + var s = itemData.start.valueOf(); + var e = 'end' in itemData ? itemData.end.valueOf() : itemData.start.valueOf(); - this.frame.filter.slider.stop(); - }; + if (start === null || s < start) { + start = s; + } + if (end === null || e > end) { + end = e; + } + }); - /** - * Resize the center position based on the current values in this.defaultXCenter - * and this.defaultYCenter (which are strings with a percentage or a value - * in pixels). The center positions are the variables this.xCenter - * and this.yCenter - */ - Graph3d.prototype._resizeCenter = function() { - // calculate the horizontal center position - if (this.defaultXCenter.charAt(this.defaultXCenter.length-1) === '%') { - this.xcenter = - parseFloat(this.defaultXCenter) / 100 * - this.frame.canvas.clientWidth; - } - else { - this.xcenter = parseFloat(this.defaultXCenter); // supposed to be in px - } + if (start !== null && end !== null) { + // calculate the new middle and interval for the window + var middle = (start + end) / 2; + var interval = Math.max((this.range.end - this.range.start), (end - start) * 1.1); - // calculate the vertical center position - if (this.defaultYCenter.charAt(this.defaultYCenter.length-1) === '%') { - this.ycenter = - parseFloat(this.defaultYCenter) / 100 * - (this.frame.canvas.clientHeight - this.frame.filter.clientHeight); - } - else { - this.ycenter = parseFloat(this.defaultYCenter); // supposed to be in px + var animate = (options && options.animate !== undefined) ? options.animate : true; + this.range.setRange(middle - interval / 2, middle + interval / 2, animate); } }; /** - * Set the rotation and distance of the camera - * @param {Object} pos An object with the camera position. The object - * contains three parameters: - * - horizontal {Number} - * The horizontal rotation, between 0 and 2*PI. - * Optional, can be left undefined. - * - vertical {Number} - * The vertical rotation, between 0 and 0.5*PI - * if vertical=0.5*PI, the graph is shown from the - * top. Optional, can be left undefined. - * - distance {Number} - * The (normalized) distance of the camera to the - * center of the graph, a value between 0.71 and 5.0. - * Optional, can be left undefined. + * Get the data range of the item set. + * @returns {{min: Date, max: Date}} range A range with a start and end Date. + * When no minimum is found, min==null + * When no maximum is found, max==null */ - Graph3d.prototype.setCameraPosition = function(pos) { - if (pos === undefined) { - return; - } + Timeline.prototype.getItemRange = function() { + // calculate min from start filed + var dataset = this.itemsData.getDataSet(), + min = null, + max = null; - if (pos.horizontal !== undefined && pos.vertical !== undefined) { - this.camera.setArmRotation(pos.horizontal, pos.vertical); - } + if (dataset) { + // calculate the minimum value of the field 'start' + var minItem = dataset.min('start'); + min = minItem ? util.convert(minItem.start, 'Date').valueOf() : null; + // Note: we convert first to Date and then to number because else + // a conversion from ISODate to Number will fail - if (pos.distance !== undefined) { - this.camera.setArmLength(pos.distance); + // calculate maximum value of fields 'start' and 'end' + var maxStartItem = dataset.max('start'); + if (maxStartItem) { + max = util.convert(maxStartItem.start, 'Date').valueOf(); + } + var maxEndItem = dataset.max('end'); + if (maxEndItem) { + if (max == null) { + max = util.convert(maxEndItem.end, 'Date').valueOf(); + } + else { + max = Math.max(max, util.convert(maxEndItem.end, 'Date').valueOf()); + } + } } - this.redraw(); + return { + min: (min != null) ? new Date(min) : null, + max: (max != null) ? new Date(max) : null + }; }; - /** - * Retrieve the current camera rotation - * @return {object} An object with parameters horizontal, vertical, and - * distance - */ - Graph3d.prototype.getCameraPosition = function() { - var pos = this.camera.getArmRotation(); - pos.distance = this.camera.getArmLength(); - return pos; - }; - - /** - * Load data into the 3D Graph - */ - Graph3d.prototype._readData = function(data) { - // read the data - this._dataInitialize(data, this.style); + module.exports = Timeline; - if (this.dataFilter) { - // apply filtering - this.dataPoints = this.dataFilter._getDataPoints(); - } - else { - // no filtering. load all data - this.dataPoints = this._getDataPoints(this.dataTable); - } +/***/ }, +/* 14 */ +/***/ function(module, exports, __webpack_require__) { - // draw the filter - this._redrawFilter(); - }; + var Emitter = __webpack_require__(56); + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var Range = __webpack_require__(17); + var Core = __webpack_require__(46); + var TimeAxis = __webpack_require__(35); + var CurrentTime = __webpack_require__(26); + var CustomTime = __webpack_require__(27); + var LineGraph = __webpack_require__(34); /** - * Replace the dataset of the Graph3d - * @param {Array | DataSet | DataView} data + * Create a timeline visualization + * @param {HTMLElement} container + * @param {vis.DataSet | Array | google.visualization.DataTable} [items] + * @param {Object} [options] See Graph2d.setOptions for the available options. + * @constructor + * @extends Core */ - Graph3d.prototype.setData = function (data) { - this._readData(data); - this.redraw(); - - // start animation when option is true - if (this.animationAutoStart && this.dataFilter) { - this.animationStart(); + function Graph2d (container, items, groups, options) { + // if the third element is options, the forth is groups (optionally); + if (!(Array.isArray(groups) || groups instanceof DataSet) && groups instanceof Object) { + var forthArgument = options; + options = groups; + groups = forthArgument; } - }; - - /** - * Update the options. Options will be merged with current options - * @param {Object} options - */ - Graph3d.prototype.setOptions = function (options) { - var cameraPosition = undefined; - this.animationStop(); + var me = this; + this.defaultOptions = { + start: null, + end: null, - if (options !== undefined) { - // retrieve parameter values - if (options.width !== undefined) this.width = options.width; - if (options.height !== undefined) this.height = options.height; + autoResize: true, - if (options.xCenter !== undefined) this.defaultXCenter = options.xCenter; - if (options.yCenter !== undefined) this.defaultYCenter = options.yCenter; + orientation: 'bottom', + width: null, + height: null, + maxHeight: null, + minHeight: null + }; + this.options = util.deepExtend({}, this.defaultOptions); - if (options.filterLabel !== undefined) this.filterLabel = options.filterLabel; - if (options.legendLabel !== undefined) this.legendLabel = options.legendLabel; - if (options.xLabel !== undefined) this.xLabel = options.xLabel; - if (options.yLabel !== undefined) this.yLabel = options.yLabel; - if (options.zLabel !== undefined) this.zLabel = options.zLabel; + // Create the DOM, props, and emitter + this._create(container); - if (options.xValueLabel !== undefined) this.xValueLabel = options.xValueLabel; - if (options.yValueLabel !== undefined) this.yValueLabel = options.yValueLabel; - if (options.zValueLabel !== undefined) this.zValueLabel = options.zValueLabel; + // all components listed here will be repainted automatically + this.components = []; - if (options.style !== undefined) { - var styleNumber = this._getStyleNumber(options.style); - if (styleNumber !== -1) { - this.style = styleNumber; - } + this.body = { + dom: this.dom, + domProps: this.props, + emitter: { + on: this.on.bind(this), + off: this.off.bind(this), + emit: this.emit.bind(this) + }, + hiddenDates: [], + util: { + toScreen: me._toScreen.bind(me), + toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width + toTime: me._toTime.bind(me), + toGlobalTime : me._toGlobalTime.bind(me) } - if (options.showGrid !== undefined) this.showGrid = options.showGrid; - if (options.showPerspective !== undefined) this.showPerspective = options.showPerspective; - if (options.showShadow !== undefined) this.showShadow = options.showShadow; - if (options.tooltip !== undefined) this.showTooltip = options.tooltip; - if (options.showAnimationControls !== undefined) this.showAnimationControls = options.showAnimationControls; - if (options.keepAspectRatio !== undefined) this.keepAspectRatio = options.keepAspectRatio; - if (options.verticalRatio !== undefined) this.verticalRatio = options.verticalRatio; + }; - if (options.animationInterval !== undefined) this.animationInterval = options.animationInterval; - if (options.animationPreload !== undefined) this.animationPreload = options.animationPreload; - if (options.animationAutoStart !== undefined)this.animationAutoStart = options.animationAutoStart; + // range + this.range = new Range(this.body); + this.components.push(this.range); + this.body.range = this.range; - if (options.xBarWidth !== undefined) this.defaultXBarWidth = options.xBarWidth; - if (options.yBarWidth !== undefined) this.defaultYBarWidth = options.yBarWidth; + // time axis + this.timeAxis = new TimeAxis(this.body); + this.components.push(this.timeAxis); + //this.body.util.snap = this.timeAxis.snap.bind(this.timeAxis); - if (options.xMin !== undefined) this.defaultXMin = options.xMin; - if (options.xStep !== undefined) this.defaultXStep = options.xStep; - if (options.xMax !== undefined) this.defaultXMax = options.xMax; - if (options.yMin !== undefined) this.defaultYMin = options.yMin; - if (options.yStep !== undefined) this.defaultYStep = options.yStep; - if (options.yMax !== undefined) this.defaultYMax = options.yMax; - if (options.zMin !== undefined) this.defaultZMin = options.zMin; - if (options.zStep !== undefined) this.defaultZStep = options.zStep; - if (options.zMax !== undefined) this.defaultZMax = options.zMax; - if (options.valueMin !== undefined) this.defaultValueMin = options.valueMin; - if (options.valueMax !== undefined) this.defaultValueMax = options.valueMax; + // current time bar + this.currentTime = new CurrentTime(this.body); + this.components.push(this.currentTime); - if (options.cameraPosition !== undefined) cameraPosition = options.cameraPosition; + // custom time bar + // Note: time bar will be attached in this.setOptions when selected + this.customTime = new CustomTime(this.body); + this.components.push(this.customTime); - if (cameraPosition !== undefined) { - this.camera.setArmRotation(cameraPosition.horizontal, cameraPosition.vertical); - this.camera.setArmLength(cameraPosition.distance); - } - else { - this.camera.setArmRotation(1.0, 0.5); - this.camera.setArmLength(1.7); - } - } + // item set + this.linegraph = new LineGraph(this.body); + this.components.push(this.linegraph); - this._setBackgroundColor(options && options.backgroundColor); + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet - this.setSize(this.width, this.height); + // apply options + if (options) { + this.setOptions(options); + } - // re-load the data - if (this.dataTable) { - this.setData(this.dataTable); + // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! + if (groups) { + this.setGroups(groups); } - // start animation when option is true - if (this.animationAutoStart && this.dataFilter) { - this.animationStart(); + // create itemset + if (items) { + this.setItems(items); } - }; + else { + this._redraw(); + } + } + + // Extend the functionality from Core + Graph2d.prototype = new Core(); /** - * Redraw the Graph. + * Set items + * @param {vis.DataSet | Array | google.visualization.DataTable | null} items */ - Graph3d.prototype.redraw = function() { - if (this.dataPoints === undefined) { - throw 'Error: graph data not initialized'; - } - - this._resizeCanvas(); - this._resizeCenter(); - this._redrawSlider(); - this._redrawClear(); - this._redrawAxis(); + Graph2d.prototype.setItems = function(items) { + var initialLoad = (this.itemsData == null); - if (this.style === Graph3d.STYLE.GRID || - this.style === Graph3d.STYLE.SURFACE) { - this._redrawDataGrid(); - } - else if (this.style === Graph3d.STYLE.LINE) { - this._redrawDataLine(); + // convert to type DataSet when needed + var newDataSet; + if (!items) { + newDataSet = null; } - else if (this.style === Graph3d.STYLE.BAR || - this.style === Graph3d.STYLE.BARCOLOR || - this.style === Graph3d.STYLE.BARSIZE) { - this._redrawDataBar(); + else if (items instanceof DataSet || items instanceof DataView) { + newDataSet = items; } else { - // style is DOT, DOTLINE, DOTCOLOR, DOTSIZE - this._redrawDataDot(); + // turn an array into a dataset + newDataSet = new DataSet(items, { + type: { + start: 'Date', + end: 'Date' + } + }); } - this._redrawInfo(); - this._redrawLegend(); + // set items + this.itemsData = newDataSet; + this.linegraph && this.linegraph.setItems(newDataSet); + + if (initialLoad) { + if (this.options.start != undefined || this.options.end != undefined) { + var start = this.options.start != undefined ? this.options.start : null; + var end = this.options.end != undefined ? this.options.end : null; + + this.setWindow(start, end, {animate: false}); + } + else { + this.fit({animate: false}); + } + } }; /** - * Clear the canvas before redrawing + * Set groups + * @param {vis.DataSet | Array | google.visualization.DataTable} groups */ - Graph3d.prototype._redrawClear = function() { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); + Graph2d.prototype.setGroups = function(groups) { + // convert to type DataSet when needed + var newDataSet; + if (!groups) { + newDataSet = null; + } + else if (groups instanceof DataSet || groups instanceof DataView) { + newDataSet = groups; + } + else { + // turn an array into a dataset + newDataSet = new DataSet(groups); + } - ctx.clearRect(0, 0, canvas.width, canvas.height); + this.groupsData = newDataSet; + this.linegraph.setGroups(newDataSet); }; - /** - * Redraw the legend showing the colors + * Returns an object containing an SVG element with the icon of the group (size determined by iconWidth and iconHeight), the label of the group (content) and the yAxisOrientation of the group (left or right). + * @param groupId + * @param width + * @param height */ - Graph3d.prototype._redrawLegend = function() { - var y; - - if (this.style === Graph3d.STYLE.DOTCOLOR || - this.style === Graph3d.STYLE.DOTSIZE) { - - var dotSize = this.frame.clientWidth * 0.02; - - var widthMin, widthMax; - if (this.style === Graph3d.STYLE.DOTSIZE) { - widthMin = dotSize / 2; // px - widthMax = dotSize / 2 + dotSize * 2; // Todo: put this in one function - } - else { - widthMin = 20; // px - widthMax = 20; // px - } - - var height = Math.max(this.frame.clientHeight * 0.25, 100); - var top = this.margin; - var right = this.frame.clientWidth - this.margin; - var left = right - widthMax; - var bottom = top + height; + Graph2d.prototype.getLegend = function(groupId, width, height) { + if (width === undefined) {width = 15;} + if (height === undefined) {height = 15;} + if (this.linegraph.groups[groupId] !== undefined) { + return this.linegraph.groups[groupId].getLegend(width,height); } - - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); - ctx.lineWidth = 1; - ctx.font = '14px arial'; // TODO: put in options - - if (this.style === Graph3d.STYLE.DOTCOLOR) { - // draw the color bar - var ymin = 0; - var ymax = height; // Todo: make height customizable - for (y = ymin; y < ymax; y++) { - var f = (y - ymin) / (ymax - ymin); - - //var width = (dotSize / 2 + (1-f) * dotSize * 2); // Todo: put this in one function - var hue = f * 240; - var color = this._hsv2rgb(hue, 1, 1); - - ctx.strokeStyle = color; - ctx.beginPath(); - ctx.moveTo(left, top + y); - ctx.lineTo(right, top + y); - ctx.stroke(); - } - - ctx.strokeStyle = this.colorAxis; - ctx.strokeRect(left, top, widthMax, height); + else { + return "cannot find group:" + groupId; } + } - if (this.style === Graph3d.STYLE.DOTSIZE) { - // draw border around color bar - ctx.strokeStyle = this.colorAxis; - ctx.fillStyle = this.colorDot; - ctx.beginPath(); - ctx.moveTo(left, top); - ctx.lineTo(right, top); - ctx.lineTo(right - widthMax + widthMin, bottom); - ctx.lineTo(left, bottom); - ctx.closePath(); - ctx.fill(); - ctx.stroke(); + /** + * This checks if the visible option of the supplied group (by ID) is true or false. + * @param groupId + * @returns {*} + */ + Graph2d.prototype.isGroupVisible = function(groupId) { + if (this.linegraph.groups[groupId] !== undefined) { + return (this.linegraph.groups[groupId].visible && (this.linegraph.options.groups.visibility[groupId] === undefined || this.linegraph.options.groups.visibility[groupId] == true)); } + else { + return false; + } + } - if (this.style === Graph3d.STYLE.DOTCOLOR || - this.style === Graph3d.STYLE.DOTSIZE) { - // print values along the color bar - var gridLineLen = 5; // px - var step = new StepNumber(this.valueMin, this.valueMax, (this.valueMax-this.valueMin)/5, true); - step.start(); - if (step.getCurrent() < this.valueMin) { - step.next(); - } - while (!step.end()) { - y = bottom - (step.getCurrent() - this.valueMin) / (this.valueMax - this.valueMin) * height; - - ctx.beginPath(); - ctx.moveTo(left - gridLineLen, y); - ctx.lineTo(left, y); - ctx.stroke(); - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = this.colorAxis; - ctx.fillText(step.getCurrent(), left - 2 * gridLineLen, y); + /** + * Get the data range of the item set. + * @returns {{min: Date, max: Date}} range A range with a start and end Date. + * When no minimum is found, min==null + * When no maximum is found, max==null + */ + Graph2d.prototype.getItemRange = function() { + var min = null; + var max = null; - step.next(); + // calculate min from start filed + for (var groupId in this.linegraph.groups) { + if (this.linegraph.groups.hasOwnProperty(groupId)) { + if (this.linegraph.groups[groupId].visible == true) { + for (var i = 0; i < this.linegraph.groups[groupId].itemsData.length; i++) { + var item = this.linegraph.groups[groupId].itemsData[i]; + var value = util.convert(item.x, 'Date').valueOf(); + min = min == null ? value : min > value ? value : min; + max = max == null ? value : max < value ? value : max; + } + } } - - ctx.textAlign = 'right'; - ctx.textBaseline = 'top'; - var label = this.legendLabel; - ctx.fillText(label, right, bottom + this.margin); } - }; - - /** - * Redraw the filter - */ - Graph3d.prototype._redrawFilter = function() { - this.frame.filter.innerHTML = ''; - if (this.dataFilter) { - var options = { - 'visible': this.showAnimationControls - }; - var slider = new Slider(this.frame.filter, options); - this.frame.filter.slider = slider; + return { + min: (min != null) ? new Date(min) : null, + max: (max != null) ? new Date(max) : null + }; + }; - // TODO: css here is not nice here... - this.frame.filter.style.padding = '10px'; - //this.frame.filter.style.backgroundColor = '#EFEFEF'; - slider.setValues(this.dataFilter.values); - slider.setPlayInterval(this.animationInterval); - // create an event handler - var me = this; - var onchange = function () { - var index = slider.getIndex(); + module.exports = Graph2d; - me.dataFilter.selectValue(index); - me.dataPoints = me.dataFilter._getDataPoints(); - me.redraw(); - }; - slider.setOnChangeCallback(onchange); - } - else { - this.frame.filter.slider = undefined; - } - }; +/***/ }, +/* 15 */ +/***/ function(module, exports, __webpack_require__) { /** - * Redraw the slider + * Created by Alex on 10/3/2014. */ - Graph3d.prototype._redrawSlider = function() { - if ( this.frame.filter.slider !== undefined) { - this.frame.filter.slider.redraw(); - } - }; + var moment = __webpack_require__(44); /** - * Redraw common information + * used in Core to convert the options into a volatile variable + * + * @param Core */ - Graph3d.prototype._redrawInfo = function() { - if (this.dataFilter) { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); - - ctx.font = '14px arial'; // TODO: put in options - ctx.lineStyle = 'gray'; - ctx.fillStyle = 'gray'; - ctx.textAlign = 'left'; - ctx.textBaseline = 'top'; - - var x = this.margin; - var y = this.margin; - ctx.fillText(this.dataFilter.getLabel() + ': ' + this.dataFilter.getSelectedValue(), x, y); + exports.convertHiddenOptions = function(body, hiddenDates) { + body.hiddenDates = []; + if (hiddenDates) { + if (Array.isArray(hiddenDates) == true) { + for (var i = 0; i < hiddenDates.length; i++) { + if (hiddenDates[i].repeat === undefined) { + var dateItem = {}; + dateItem.start = moment(hiddenDates[i].start).toDate().valueOf(); + dateItem.end = moment(hiddenDates[i].end).toDate().valueOf(); + body.hiddenDates.push(dateItem); + } + } + body.hiddenDates.sort(function (a, b) { + return a.start - b.start; + }); // sort by start time + } } }; /** - * Redraw the axis + * create new entrees for the repeating hidden dates + * @param body + * @param hiddenDates */ - Graph3d.prototype._redrawAxis = function() { - var canvas = this.frame.canvas, - ctx = canvas.getContext('2d'), - from, to, step, prettyStep, - text, xText, yText, zText, - offset, xOffset, yOffset, - xMin2d, xMax2d; + exports.updateHiddenDates = function (body, hiddenDates) { + if (hiddenDates && body.domProps.centerContainer.width !== undefined) { + exports.convertHiddenOptions(body, hiddenDates); - // TODO: get the actual rendered style of the containerElement - //ctx.font = this.containerElement.style.font; - ctx.font = 24 / this.camera.getArmLength() + 'px arial'; + var start = moment(body.range.start); + var end = moment(body.range.end); - // calculate the length for the short grid lines - var gridLenX = 0.025 / this.scale.x; - var gridLenY = 0.025 / this.scale.y; - var textMargin = 5 / this.camera.getArmLength(); // px - var armAngle = this.camera.getArmRotation().horizontal; + var totalRange = (body.range.end - body.range.start); + var pixelTime = totalRange / body.domProps.centerContainer.width; - // draw x-grid lines - ctx.lineWidth = 1; - prettyStep = (this.defaultXStep === undefined); - step = new StepNumber(this.xMin, this.xMax, this.xStep, prettyStep); - step.start(); - if (step.getCurrent() < this.xMin) { - step.next(); - } - while (!step.end()) { - var x = step.getCurrent(); + for (var i = 0; i < hiddenDates.length; i++) { + if (hiddenDates[i].repeat !== undefined) { + var startDate = moment(hiddenDates[i].start); + var endDate = moment(hiddenDates[i].end); - if (this.showGrid) { - from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorGrid; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - } - else { - from = this._convert3Dto2D(new Point3d(x, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(x, this.yMin+gridLenX, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); + if (startDate._d == "Invalid Date") { + throw new Error("Supplied start date is not valid: " + hiddenDates[i].start); + } + if (endDate._d == "Invalid Date") { + throw new Error("Supplied end date is not valid: " + hiddenDates[i].end); + } - from = this._convert3Dto2D(new Point3d(x, this.yMax, this.zMin)); - to = this._convert3Dto2D(new Point3d(x, this.yMax-gridLenX, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - } + var duration = endDate - startDate; + if (duration >= 4 * pixelTime) { - yText = (Math.cos(armAngle) > 0) ? this.yMin : this.yMax; - text = this._convert3Dto2D(new Point3d(x, yText, this.zMin)); - if (Math.cos(armAngle * 2) > 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - text.y += textMargin; - } - else if (Math.sin(armAngle * 2) < 0){ - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - } - else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; - } - ctx.fillStyle = this.colorAxis; - ctx.fillText(' ' + this.xValueLabel(step.getCurrent()) + ' ', text.x, text.y); + var offset = 0; + var runUntil = end.clone(); + switch (hiddenDates[i].repeat) { + case "daily": // case of time + if (startDate.day() != endDate.day()) { + offset = 1; + } + startDate.dayOfYear(start.dayOfYear()); + startDate.year(start.year()); + startDate.subtract(7,'days'); - step.next(); - } + endDate.dayOfYear(start.dayOfYear()); + endDate.year(start.year()); + endDate.subtract(7 - offset,'days'); - // draw y-grid lines - ctx.lineWidth = 1; - prettyStep = (this.defaultYStep === undefined); - step = new StepNumber(this.yMin, this.yMax, this.yStep, prettyStep); - step.start(); - if (step.getCurrent() < this.yMin) { - step.next(); - } - while (!step.end()) { - if (this.showGrid) { - from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); - ctx.strokeStyle = this.colorGrid; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - } - else { - from = this._convert3Dto2D(new Point3d(this.xMin, step.getCurrent(), this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMin+gridLenY, step.getCurrent(), this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); + runUntil.add(1, 'weeks'); + break; + case "weekly": + var dayOffset = endDate.diff(startDate,'days') + var day = startDate.day(); - from = this._convert3Dto2D(new Point3d(this.xMax, step.getCurrent(), this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMax-gridLenY, step.getCurrent(), this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - } + // set the start date to the range.start + startDate.date(start.date()); + startDate.month(start.month()); + startDate.year(start.year()); + endDate = startDate.clone(); - xText = (Math.sin(armAngle ) > 0) ? this.xMin : this.xMax; - text = this._convert3Dto2D(new Point3d(xText, step.getCurrent(), this.zMin)); - if (Math.cos(armAngle * 2) < 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - text.y += textMargin; - } - else if (Math.sin(armAngle * 2) > 0){ - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - } - else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; - } - ctx.fillStyle = this.colorAxis; - ctx.fillText(' ' + this.yValueLabel(step.getCurrent()) + ' ', text.x, text.y); + // force + startDate.day(day); + endDate.day(day); + endDate.add(dayOffset,'days'); - step.next(); - } + startDate.subtract(1,'weeks'); + endDate.subtract(1,'weeks'); - // draw z-grid lines and axis - ctx.lineWidth = 1; - prettyStep = (this.defaultZStep === undefined); - step = new StepNumber(this.zMin, this.zMax, this.zStep, prettyStep); - step.start(); - if (step.getCurrent() < this.zMin) { - step.next(); - } - xText = (Math.cos(armAngle ) > 0) ? this.xMin : this.xMax; - yText = (Math.sin(armAngle ) < 0) ? this.yMin : this.yMax; - while (!step.end()) { - // TODO: make z-grid lines really 3d? - from = this._convert3Dto2D(new Point3d(xText, yText, step.getCurrent())); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(from.x - textMargin, from.y); - ctx.stroke(); + runUntil.add(1, 'weeks'); + break + case "monthly": + if (startDate.month() != endDate.month()) { + offset = 1; + } + startDate.month(start.month()); + startDate.year(start.year()); + startDate.subtract(1,'months'); - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = this.colorAxis; - ctx.fillText(this.zValueLabel(step.getCurrent()) + ' ', from.x - 5, from.y); + endDate.month(start.month()); + endDate.year(start.year()); + endDate.subtract(1,'months'); + endDate.add(offset,'months'); - step.next(); + runUntil.add(1, 'months'); + break; + case "yearly": + if (startDate.year() != endDate.year()) { + offset = 1; + } + startDate.year(start.year()); + startDate.subtract(1,'years'); + endDate.year(start.year()); + endDate.subtract(1,'years'); + endDate.add(offset,'years'); + + runUntil.add(1, 'years'); + break; + default: + console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:", hiddenDates[i].repeat); + return; + } + while (startDate < runUntil) { + body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()}); + switch (hiddenDates[i].repeat) { + case "daily": + startDate.add(1, 'days'); + endDate.add(1, 'days'); + break; + case "weekly": + startDate.add(1, 'weeks'); + endDate.add(1, 'weeks'); + break + case "monthly": + startDate.add(1, 'months'); + endDate.add(1, 'months'); + break; + case "yearly": + startDate.add(1, 'y'); + endDate.add(1, 'y'); + break; + default: + console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:", hiddenDates[i].repeat); + return; + } + } + body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()}); + } + } + } + // remove duplicates, merge where possible + exports.removeDuplicates(body); + // ensure the new positions are not on hidden dates + var startHidden = exports.isHidden(body.range.start, body.hiddenDates); + var endHidden = exports.isHidden(body.range.end,body.hiddenDates); + var rangeStart = body.range.start; + var rangeEnd = body.range.end; + if (startHidden.hidden == true) {rangeStart = body.range.startToFront == true ? startHidden.startDate - 1 : startHidden.endDate + 1;} + if (endHidden.hidden == true) {rangeEnd = body.range.endToFront == true ? endHidden.startDate - 1 : endHidden.endDate + 1;} + if (startHidden.hidden == true || endHidden.hidden == true) { + body.range._applyRange(rangeStart, rangeEnd); + } } - ctx.lineWidth = 1; - from = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); - to = this._convert3Dto2D(new Point3d(xText, yText, this.zMax)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - // draw x-axis - ctx.lineWidth = 1; - // line at yMin - xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); - xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(xMin2d.x, xMin2d.y); - ctx.lineTo(xMax2d.x, xMax2d.y); - ctx.stroke(); - // line at ymax - xMin2d = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); - xMax2d = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(xMin2d.x, xMin2d.y); - ctx.lineTo(xMax2d.x, xMax2d.y); - ctx.stroke(); + } - // draw y-axis - ctx.lineWidth = 1; - // line at xMin - from = this._convert3Dto2D(new Point3d(this.xMin, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMin, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - // line at xMax - from = this._convert3Dto2D(new Point3d(this.xMax, this.yMin, this.zMin)); - to = this._convert3Dto2D(new Point3d(this.xMax, this.yMax, this.zMin)); - ctx.strokeStyle = this.colorAxis; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(to.x, to.y); - ctx.stroke(); - // draw x-label - var xLabel = this.xLabel; - if (xLabel.length > 0) { - yOffset = 0.1 / this.scale.y; - xText = (this.xMin + this.xMax) / 2; - yText = (Math.cos(armAngle) > 0) ? this.yMin - yOffset: this.yMax + yOffset; - text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); - if (Math.cos(armAngle * 2) > 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - } - else if (Math.sin(armAngle * 2) < 0){ - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - } - else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; + /** + * remove duplicates from the hidden dates list. Duplicates are evil. They mess everything up. + * Scales with N^2 + * @param body + */ + exports.removeDuplicates = function(body) { + var hiddenDates = body.hiddenDates; + var safeDates = []; + for (var i = 0; i < hiddenDates.length; i++) { + for (var j = 0; j < hiddenDates.length; j++) { + if (i != j && hiddenDates[j].remove != true && hiddenDates[i].remove != true) { + // j inside i + if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) { + hiddenDates[j].remove = true; + } + // j start inside i + else if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].start <= hiddenDates[i].end) { + hiddenDates[i].end = hiddenDates[j].end; + hiddenDates[j].remove = true; + } + // j end inside i + else if (hiddenDates[j].end >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) { + hiddenDates[i].start = hiddenDates[j].start; + hiddenDates[j].remove = true; + } + } } - ctx.fillStyle = this.colorAxis; - ctx.fillText(xLabel, text.x, text.y); } - // draw y-label - var yLabel = this.yLabel; - if (yLabel.length > 0) { - xOffset = 0.1 / this.scale.x; - xText = (Math.sin(armAngle ) > 0) ? this.xMin - xOffset : this.xMax + xOffset; - yText = (this.yMin + this.yMax) / 2; - text = this._convert3Dto2D(new Point3d(xText, yText, this.zMin)); - if (Math.cos(armAngle * 2) < 0) { - ctx.textAlign = 'center'; - ctx.textBaseline = 'top'; - } - else if (Math.sin(armAngle * 2) > 0){ - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; + for (var i = 0; i < hiddenDates.length; i++) { + if (hiddenDates[i].remove !== true) { + safeDates.push(hiddenDates[i]); } - else { - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; + } + + body.hiddenDates = safeDates; + body.hiddenDates.sort(function (a, b) { + return a.start - b.start; + }); // sort by start time + } + + exports.printDates = function(dates) { + for (var i =0; i < dates.length; i++) { + console.log(i, new Date(dates[i].start),new Date(dates[i].end), dates[i].start, dates[i].end, dates[i].remove); + } + } + + /** + * Used in TimeStep to avoid the hidden times. + * @param timeStep + * @param previousTime + */ + exports.stepOverHiddenDates = function(timeStep, previousTime) { + var stepInHidden = false; + var currentValue = timeStep.current.valueOf(); + for (var i = 0; i < timeStep.hiddenDates.length; i++) { + var startDate = timeStep.hiddenDates[i].start; + var endDate = timeStep.hiddenDates[i].end; + if (currentValue >= startDate && currentValue < endDate) { + stepInHidden = true; + break; } - ctx.fillStyle = this.colorAxis; - ctx.fillText(yLabel, text.x, text.y); } - // draw z-label - var zLabel = this.zLabel; - if (zLabel.length > 0) { - offset = 30; // pixels. // TODO: relate to the max width of the values on the z axis? - xText = (Math.cos(armAngle ) > 0) ? this.xMin : this.xMax; - yText = (Math.sin(armAngle ) < 0) ? this.yMin : this.yMax; - zText = (this.zMin + this.zMax) / 2; - text = this._convert3Dto2D(new Point3d(xText, yText, zText)); - ctx.textAlign = 'right'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = this.colorAxis; - ctx.fillText(zLabel, text.x - offset, text.y); + if (stepInHidden == true && currentValue < timeStep._end.valueOf() && currentValue != previousTime) { + var prevValue = moment(previousTime); + var newValue = moment(endDate); + //check if the next step should be major + if (prevValue.year() != newValue.year()) {timeStep.switchedYear = true;} + else if (prevValue.month() != newValue.month()) {timeStep.switchedMonth = true;} + else if (prevValue.dayOfYear() != newValue.dayOfYear()) {timeStep.switchedDay = true;} + + timeStep.current = newValue.toDate(); } }; + + ///** + // * Used in TimeStep to avoid the hidden times. + // * @param timeStep + // * @param previousTime + // */ + //exports.checkFirstStep = function(timeStep) { + // var stepInHidden = false; + // var currentValue = timeStep.current.valueOf(); + // for (var i = 0; i < timeStep.hiddenDates.length; i++) { + // var startDate = timeStep.hiddenDates[i].start; + // var endDate = timeStep.hiddenDates[i].end; + // if (currentValue >= startDate && currentValue < endDate) { + // stepInHidden = true; + // break; + // } + // } + // + // if (stepInHidden == true && currentValue <= timeStep._end.valueOf()) { + // var newValue = moment(endDate); + // timeStep.current = newValue.toDate(); + // } + //}; + /** - * Calculate the color based on the given value. - * @param {Number} H Hue, a value be between 0 and 360 - * @param {Number} S Saturation, a value between 0 and 1 - * @param {Number} V Value, a value between 0 and 1 + * replaces the Core toScreen methods + * @param Core + * @param time + * @param width + * @returns {number} */ - Graph3d.prototype._hsv2rgb = function(H, S, V) { - var R, G, B, C, Hi, X; + exports.toScreen = function(Core, time, width) { + if (Core.body.hiddenDates.length == 0) { + var conversion = Core.range.conversion(width); + return (time.valueOf() - conversion.offset) * conversion.scale; + } + else { + var hidden = exports.isHidden(time, Core.body.hiddenDates) + if (hidden.hidden == true) { + time = hidden.startDate; + } - C = V * S; - Hi = Math.floor(H/60); // hi = 0,1,2,3,4,5 - X = C * (1 - Math.abs(((H/60) % 2) - 1)); + var duration = exports.getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end); + time = exports.correctTimeForHidden(Core.body.hiddenDates, Core.range, time); - switch (Hi) { - case 0: R = C; G = X; B = 0; break; - case 1: R = X; G = C; B = 0; break; - case 2: R = 0; G = C; B = X; break; - case 3: R = 0; G = X; B = C; break; - case 4: R = X; G = 0; B = C; break; - case 5: R = C; G = 0; B = X; break; + var conversion = Core.range.conversion(width, duration); + return (time.valueOf() - conversion.offset) * conversion.scale; + } + }; - default: R = 0; G = 0; B = 0; break; + + /** + * Replaces the core toTime methods + * @param body + * @param range + * @param x + * @param width + * @returns {Date} + */ + exports.toTime = function(Core, x, width) { + if (Core.body.hiddenDates.length == 0) { + var conversion = Core.range.conversion(width); + return new Date(x / conversion.scale + conversion.offset); } + else { + var hiddenDuration = exports.getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end); + var totalDuration = Core.range.end - Core.range.start - hiddenDuration; + var partialDuration = totalDuration * x / width; + var accumulatedHiddenDuration = exports.getAccumulatedHiddenDuration(Core.body.hiddenDates, Core.range, partialDuration); - return 'RGB(' + parseInt(R*255) + ',' + parseInt(G*255) + ',' + parseInt(B*255) + ')'; + var newTime = new Date(accumulatedHiddenDuration + partialDuration + Core.range.start); + return newTime; + } }; /** - * Draw all datapoints as a grid - * This function can be used when the style is 'grid' + * Support function + * + * @param hiddenDates + * @param range + * @returns {number} */ - Graph3d.prototype._redrawDataGrid = function() { - var canvas = this.frame.canvas, - ctx = canvas.getContext('2d'), - point, right, top, cross, - i, - topSideVisible, fillStyle, strokeStyle, lineWidth, - h, s, v, zAvg; + exports.getHiddenDurationBetween = function(hiddenDates, start, end) { + var duration = 0; + for (var i = 0; i < hiddenDates.length; i++) { + var startDate = hiddenDates[i].start; + var endDate = hiddenDates[i].end; + // if time after the cutout, and the + if (startDate >= start && endDate < end) { + duration += endDate - startDate; + } + } + return duration; + }; - if (this.dataPoints === undefined || this.dataPoints.length <= 0) - return; // TODO: throw exception? + /** + * Support function + * @param hiddenDates + * @param range + * @param time + * @returns {{duration: number, time: *, offset: number}} + */ + exports.correctTimeForHidden = function(hiddenDates, range, time) { + time = moment(time).toDate().valueOf(); + time -= exports.getHiddenDurationBefore(hiddenDates,range,time); + return time; + }; - // calculate the translations and screen position of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); + exports.getHiddenDurationBefore = function(hiddenDates, range, time) { + var timeOffset = 0; + time = moment(time).toDate().valueOf(); - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; + for (var i = 0; i < hiddenDates.length; i++) { + var startDate = hiddenDates[i].start; + var endDate = hiddenDates[i].end; + // if time after the cutout, and the + if (startDate >= range.start && endDate < range.end) { + if (time >= endDate) { + timeOffset += (endDate - startDate); + } + } + } + return timeOffset; + } - // calculate the translation of the point at the bottom (needed for sorting) - var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); - this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; + /** + * sum the duration from start to finish, including the hidden duration, + * until the required amount has been reached, return the accumulated hidden duration + * @param hiddenDates + * @param range + * @param time + * @returns {{duration: number, time: *, offset: number}} + */ + exports.getAccumulatedHiddenDuration = function(hiddenDates, range, requiredDuration) { + var hiddenDuration = 0; + var duration = 0; + var previousPoint = range.start; + //exports.printDates(hiddenDates) + for (var i = 0; i < hiddenDates.length; i++) { + var startDate = hiddenDates[i].start; + var endDate = hiddenDates[i].end; + // if time after the cutout, and the + if (startDate >= range.start && endDate < range.end) { + duration += startDate - previousPoint; + previousPoint = endDate; + if (duration >= requiredDuration) { + break; + } + else { + hiddenDuration += endDate - startDate; + } + } } - // sort the points on depth of their (x,y) position (not on z) - var sortDepth = function (a, b) { - return b.dist - a.dist; - }; - this.dataPoints.sort(sortDepth); + return hiddenDuration; + }; - if (this.style === Graph3d.STYLE.SURFACE) { - for (i = 0; i < this.dataPoints.length; i++) { - point = this.dataPoints[i]; - right = this.dataPoints[i].pointRight; - top = this.dataPoints[i].pointTop; - cross = this.dataPoints[i].pointCross; - if (point !== undefined && right !== undefined && top !== undefined && cross !== undefined) { - if (this.showGrayBottom || this.showShadow) { - // calculate the cross product of the two vectors from center - // to left and right, in order to know whether we are looking at the - // bottom or at the top side. We can also use the cross product - // for calculating light intensity - var aDiff = Point3d.subtract(cross.trans, point.trans); - var bDiff = Point3d.subtract(top.trans, right.trans); - var crossproduct = Point3d.crossProduct(aDiff, bDiff); - var len = crossproduct.length(); - // FIXME: there is a bug with determining the surface side (shadow or colored) - - topSideVisible = (crossproduct.z > 0); - } - else { - topSideVisible = true; - } - - if (topSideVisible) { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - zAvg = (point.point.z + right.point.z + top.point.z + cross.point.z) / 4; - h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; - s = 1; // saturation - - if (this.showShadow) { - v = Math.min(1 + (crossproduct.x / len) / 2, 1); // value. TODO: scale - fillStyle = this._hsv2rgb(h, s, v); - strokeStyle = fillStyle; - } - else { - v = 1; - fillStyle = this._hsv2rgb(h, s, v); - strokeStyle = this.colorAxis; - } - } - else { - fillStyle = 'gray'; - strokeStyle = this.colorAxis; - } - lineWidth = 0.5; - - ctx.lineWidth = lineWidth; - ctx.fillStyle = fillStyle; - ctx.strokeStyle = strokeStyle; - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - ctx.lineTo(right.screen.x, right.screen.y); - ctx.lineTo(cross.screen.x, cross.screen.y); - ctx.lineTo(top.screen.x, top.screen.y); - ctx.closePath(); - ctx.fill(); - ctx.stroke(); + /** + * used to step over to either side of a hidden block. Correction is disabled on tablets, might be set to true + * @param hiddenDates + * @param time + * @param direction + * @param correctionEnabled + * @returns {*} + */ + exports.snapAwayFromHidden = function(hiddenDates, time, direction, correctionEnabled) { + var isHidden = exports.isHidden(time, hiddenDates); + if (isHidden.hidden == true) { + if (direction < 0) { + if (correctionEnabled == true) { + return isHidden.startDate - (isHidden.endDate - time) - 1; + } + else { + return isHidden.startDate - 1; } } - } - else { // grid style - for (i = 0; i < this.dataPoints.length; i++) { - point = this.dataPoints[i]; - right = this.dataPoints[i].pointRight; - top = this.dataPoints[i].pointTop; - - if (point !== undefined) { - if (this.showPerspective) { - lineWidth = 2 / -point.trans.z; - } - else { - lineWidth = 2 * -(this.eye.z / this.camera.getArmLength()); - } + else { + if (correctionEnabled == true) { + return isHidden.endDate + (time - isHidden.startDate) + 1; + } + else { + return isHidden.endDate + 1; } + } + } + else { + return time; + } - if (point !== undefined && right !== undefined) { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - zAvg = (point.point.z + right.point.z) / 2; - h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; + } - ctx.lineWidth = lineWidth; - ctx.strokeStyle = this._hsv2rgb(h, 1, 1); - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - ctx.lineTo(right.screen.x, right.screen.y); - ctx.stroke(); - } - if (point !== undefined && top !== undefined) { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - zAvg = (point.point.z + top.point.z) / 2; - h = (1 - (zAvg - this.zMin) * this.scale.z / this.verticalRatio) * 240; + /** + * Check if a time is hidden + * + * @param time + * @param hiddenDates + * @returns {{hidden: boolean, startDate: Window.start, endDate: *}} + */ + exports.isHidden = function(time, hiddenDates) { + for (var i = 0; i < hiddenDates.length; i++) { + var startDate = hiddenDates[i].start; + var endDate = hiddenDates[i].end; - ctx.lineWidth = lineWidth; - ctx.strokeStyle = this._hsv2rgb(h, 1, 1); - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - ctx.lineTo(top.screen.x, top.screen.y); - ctx.stroke(); - } + if (time >= startDate && time < endDate) { // if the start is entering a hidden zone + return {hidden: true, startDate: startDate, endDate: endDate}; + break; } } - }; + return {hidden: false, startDate: startDate, endDate: endDate}; + } +/***/ }, +/* 16 */ +/***/ function(module, exports, __webpack_require__) { /** - * Draw all datapoints as dots. - * This function can be used when the style is 'dot' or 'dot-line' + * @constructor DataStep + * The class DataStep is an iterator for data for the lineGraph. You provide a start data point and an + * end data point. The class itself determines the best scale (step size) based on the + * provided start Date, end Date, and minimumStep. + * + * If minimumStep is provided, the step size is chosen as close as possible + * to the minimumStep but larger than minimumStep. If minimumStep is not + * provided, the scale is set to 1 DAY. + * The minimumStep should correspond with the onscreen size of about 6 characters + * + * Alternatively, you can set a scale by hand. + * After creation, you can initialize the class by executing first(). Then you + * can iterate from the start date to the end date via next(). You can check if + * the end date is reached with the function hasNext(). After each step, you can + * retrieve the current date via getCurrent(). + * The DataStep has scales ranging from milliseconds, seconds, minutes, hours, + * days, to years. + * + * Version: 1.2 + * + * @param {Date} [start] The start date, for example new Date(2010, 9, 21) + * or new Date(2010, 9, 21, 23, 45, 00) + * @param {Date} [end] The end date + * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds */ - Graph3d.prototype._redrawDataDot = function() { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); - var i; + function DataStep(start, end, minimumStep, containerHeight, customRange, alignZeros) { + // variables + this.current = 0; - if (this.dataPoints === undefined || this.dataPoints.length <= 0) - return; // TODO: throw exception? + this.autoScale = true; + this.stepIndex = 0; + this.step = 1; + this.scale = 1; - // calculate the translations of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; + this.marginStart; + this.marginEnd; + this.deadSpace = 0; - // calculate the distance from the point at the bottom to the camera - var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); - this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; - } + this.majorSteps = [1, 2, 5, 10]; + this.minorSteps = [0.25, 0.5, 1, 2]; - // order the translated points by depth - var sortDepth = function (a, b) { - return b.dist - a.dist; - }; - this.dataPoints.sort(sortDepth); + this.alignZeros = alignZeros; - // draw the datapoints as colored circles - var dotSize = this.frame.clientWidth * 0.02; // px - for (i = 0; i < this.dataPoints.length; i++) { - var point = this.dataPoints[i]; + this.setRange(start, end, minimumStep, containerHeight, customRange); + } - if (this.style === Graph3d.STYLE.DOTLINE) { - // draw a vertical line from the bottom to the graph value - //var from = this._convert3Dto2D(new Point3d(point.point.x, point.point.y, this.zMin)); - var from = this._convert3Dto2D(point.bottom); - ctx.lineWidth = 1; - ctx.strokeStyle = this.colorGrid; - ctx.beginPath(); - ctx.moveTo(from.x, from.y); - ctx.lineTo(point.screen.x, point.screen.y); - ctx.stroke(); - } - // calculate radius for the circle - var size; - if (this.style === Graph3d.STYLE.DOTSIZE) { - size = dotSize/2 + 2*dotSize * (point.point.value - this.valueMin) / (this.valueMax - this.valueMin); - } - else { - size = dotSize; - } - var radius; - if (this.showPerspective) { - radius = size / -point.trans.z; - } - else { - radius = size * -(this.eye.z / this.camera.getArmLength()); - } - if (radius < 0) { - radius = 0; - } + /** + * Set a new range + * If minimumStep is provided, the step size is chosen as close as possible + * to the minimumStep but larger than minimumStep. If minimumStep is not + * provided, the scale is set to 1 DAY. + * The minimumStep should correspond with the onscreen size of about 6 characters + * @param {Number} [start] The start date and time. + * @param {Number} [end] The end date and time. + * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds + */ + DataStep.prototype.setRange = function(start, end, minimumStep, containerHeight, customRange) { + this._start = customRange.min === undefined ? start : customRange.min; + this._end = customRange.max === undefined ? end : customRange.max; - var hue, color, borderColor; - if (this.style === Graph3d.STYLE.DOTCOLOR ) { - // calculate the color based on the value - hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); - } - else if (this.style === Graph3d.STYLE.DOTSIZE) { - color = this.colorDot; - borderColor = this.colorDotBorder; - } - else { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); - } + if (this._start == this._end) { + this._start -= 0.75; + this._end += 1; + } - // draw the circle - ctx.lineWidth = 1.0; - ctx.strokeStyle = borderColor; - ctx.fillStyle = color; - ctx.beginPath(); - ctx.arc(point.screen.x, point.screen.y, radius, 0, Math.PI*2, true); - ctx.fill(); - ctx.stroke(); + if (this.autoScale == true) { + this.setMinimumStep(minimumStep, containerHeight); } + + this.setFirst(customRange); }; /** - * Draw all datapoints as bars. - * This function can be used when the style is 'bar', 'bar-color', or 'bar-size' + * Automatically determine the scale that bests fits the provided minimum step + * @param {Number} [minimumStep] The minimum step size in milliseconds */ - Graph3d.prototype._redrawDataBar = function() { - var canvas = this.frame.canvas; - var ctx = canvas.getContext('2d'); - var i, j, surface, corners; - - if (this.dataPoints === undefined || this.dataPoints.length <= 0) - return; // TODO: throw exception? + DataStep.prototype.setMinimumStep = function(minimumStep, containerHeight) { + // round to floor + var size = this._end - this._start; + var safeSize = size * 1.2; + var minimumStepValue = minimumStep * (safeSize / containerHeight); + var orderOfMagnitude = Math.round(Math.log(safeSize)/Math.LN10); - // calculate the translations of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; + var minorStepIdx = -1; + var magnitudefactor = Math.pow(10,orderOfMagnitude); - // calculate the distance from the point at the bottom to the camera - var transBottom = this._convertPointToTranslation(this.dataPoints[i].bottom); - this.dataPoints[i].dist = this.showPerspective ? transBottom.length() : -transBottom.z; + var start = 0; + if (orderOfMagnitude < 0) { + start = orderOfMagnitude; } - // order the translated points by depth - var sortDepth = function (a, b) { - return b.dist - a.dist; - }; - this.dataPoints.sort(sortDepth); - - // draw the datapoints as bars - var xWidth = this.xBarWidth / 2; - var yWidth = this.yBarWidth / 2; - for (i = 0; i < this.dataPoints.length; i++) { - var point = this.dataPoints[i]; - - // determine color - var hue, color, borderColor; - if (this.style === Graph3d.STYLE.BARCOLOR ) { - // calculate the color based on the value - hue = (1 - (point.point.value - this.valueMin) * this.scale.value) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); - } - else if (this.style === Graph3d.STYLE.BARSIZE) { - color = this.colorDot; - borderColor = this.colorDotBorder; + var solutionFound = false; + for (var i = start; Math.abs(i) <= Math.abs(orderOfMagnitude); i++) { + magnitudefactor = Math.pow(10,i); + for (var j = 0; j < this.minorSteps.length; j++) { + var stepSize = magnitudefactor * this.minorSteps[j]; + if (stepSize >= minimumStepValue) { + solutionFound = true; + minorStepIdx = j; + break; + } } - else { - // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 - hue = (1 - (point.point.z - this.zMin) * this.scale.z / this.verticalRatio) * 240; - color = this._hsv2rgb(hue, 1, 1); - borderColor = this._hsv2rgb(hue, 1, 0.8); + if (solutionFound == true) { + break; } + } + this.stepIndex = minorStepIdx; + this.scale = magnitudefactor; + this.step = magnitudefactor * this.minorSteps[minorStepIdx]; + }; - // calculate size for the bar - if (this.style === Graph3d.STYLE.BARSIZE) { - xWidth = (this.xBarWidth / 2) * ((point.point.value - this.valueMin) / (this.valueMax - this.valueMin) * 0.8 + 0.2); - yWidth = (this.yBarWidth / 2) * ((point.point.value - this.valueMin) / (this.valueMax - this.valueMin) * 0.8 + 0.2); - } - // calculate all corner points - var me = this; - var point3d = point.point; - var top = [ - {point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, point3d.z)}, - {point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, point3d.z)}, - {point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, point3d.z)}, - {point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, point3d.z)} - ]; - var bottom = [ - {point: new Point3d(point3d.x - xWidth, point3d.y - yWidth, this.zMin)}, - {point: new Point3d(point3d.x + xWidth, point3d.y - yWidth, this.zMin)}, - {point: new Point3d(point3d.x + xWidth, point3d.y + yWidth, this.zMin)}, - {point: new Point3d(point3d.x - xWidth, point3d.y + yWidth, this.zMin)} - ]; - // calculate screen location of the points - top.forEach(function (obj) { - obj.screen = me._convert3Dto2D(obj.point); - }); - bottom.forEach(function (obj) { - obj.screen = me._convert3Dto2D(obj.point); - }); + /** + * Round the current date to the first minor date value + * This must be executed once when the current date is set to start Date + */ + DataStep.prototype.setFirst = function(customRange) { + if (customRange === undefined) { + customRange = {}; + } - // create five sides, calculate both corner points and center points - var surfaces = [ - {corners: top, center: Point3d.avg(bottom[0].point, bottom[2].point)}, - {corners: [top[0], top[1], bottom[1], bottom[0]], center: Point3d.avg(bottom[1].point, bottom[0].point)}, - {corners: [top[1], top[2], bottom[2], bottom[1]], center: Point3d.avg(bottom[2].point, bottom[1].point)}, - {corners: [top[2], top[3], bottom[3], bottom[2]], center: Point3d.avg(bottom[3].point, bottom[2].point)}, - {corners: [top[3], top[0], bottom[0], bottom[3]], center: Point3d.avg(bottom[0].point, bottom[3].point)} - ]; - point.surfaces = surfaces; + var niceStart = customRange.min === undefined ? this._start - (this.scale * 2 * this.minorSteps[this.stepIndex]) : customRange.min; + var niceEnd = customRange.max === undefined ? this._end + (this.scale * this.minorSteps[this.stepIndex]) : customRange.max; - // calculate the distance of each of the surface centers to the camera - for (j = 0; j < surfaces.length; j++) { - surface = surfaces[j]; - var transCenter = this._convertPointToTranslation(surface.center); - surface.dist = this.showPerspective ? transCenter.length() : -transCenter.z; - // TODO: this dept calculation doesn't work 100% of the cases due to perspective, - // but the current solution is fast/simple and works in 99.9% of all cases - // the issue is visible in example 14, with graph.setCameraPosition({horizontal: 2.97, vertical: 0.5, distance: 0.9}) - } + this.marginEnd = customRange.max === undefined ? this.roundToMinor(niceEnd) : customRange.max; + this.marginStart = customRange.min === undefined ? this.roundToMinor(niceStart) : customRange.min; - // order the surfaces by their (translated) depth - surfaces.sort(function (a, b) { - var diff = b.dist - a.dist; - if (diff) return diff; + // if we need to align the zero's we need to make sure that there is a zero to use. + if (this.alignZeros == true && (this.marginEnd - this.marginStart) % this.step != 0) { + this.marginEnd += this.marginEnd % this.step; + } - // if equal depth, sort the top surface last - if (a.corners === top) return 1; - if (b.corners === top) return -1; + this.deadSpace = this.roundToMinor(niceEnd) - niceEnd + this.roundToMinor(niceStart) - niceStart; + this.marginRange = this.marginEnd - this.marginStart; - // both are equal - return 0; - }); - // draw the ordered surfaces - ctx.lineWidth = 1; - ctx.strokeStyle = borderColor; - ctx.fillStyle = color; - // NOTE: we start at j=2 instead of j=0 as we don't need to draw the two surfaces at the backside - for (j = 2; j < surfaces.length; j++) { - surface = surfaces[j]; - corners = surface.corners; - ctx.beginPath(); - ctx.moveTo(corners[3].screen.x, corners[3].screen.y); - ctx.lineTo(corners[0].screen.x, corners[0].screen.y); - ctx.lineTo(corners[1].screen.x, corners[1].screen.y); - ctx.lineTo(corners[2].screen.x, corners[2].screen.y); - ctx.lineTo(corners[3].screen.x, corners[3].screen.y); - ctx.fill(); - ctx.stroke(); - } - } + this.current = this.marginEnd; }; + DataStep.prototype.roundToMinor = function(value) { + var rounded = value - (value % (this.scale * this.minorSteps[this.stepIndex])); + if (value % (this.scale * this.minorSteps[this.stepIndex]) > 0.5 * (this.scale * this.minorSteps[this.stepIndex])) { + return rounded + (this.scale * this.minorSteps[this.stepIndex]); + } + else { + return rounded; + } + } + /** - * Draw a line through all datapoints. - * This function can be used when the style is 'line' + * Check if the there is a next step + * @return {boolean} true if the current date has not passed the end date */ - Graph3d.prototype._redrawDataLine = function() { - var canvas = this.frame.canvas, - ctx = canvas.getContext('2d'), - point, i; - - if (this.dataPoints === undefined || this.dataPoints.length <= 0) - return; // TODO: throw exception? + DataStep.prototype.hasNext = function () { + return (this.current >= this.marginStart); + }; - // calculate the translations of all points - for (i = 0; i < this.dataPoints.length; i++) { - var trans = this._convertPointToTranslation(this.dataPoints[i].point); - var screen = this._convertTranslationToScreen(trans); + /** + * Do the next step + */ + DataStep.prototype.next = function() { + var prev = this.current; + this.current -= this.step; - this.dataPoints[i].trans = trans; - this.dataPoints[i].screen = screen; + // safety mechanism: if current time is still unchanged, move to the end + if (this.current == prev) { + this.current = this._end; } + }; - // start the line - if (this.dataPoints.length > 0) { - point = this.dataPoints[0]; - - ctx.lineWidth = 1; // TODO: make customizable - ctx.strokeStyle = 'blue'; // TODO: make customizable - ctx.beginPath(); - ctx.moveTo(point.screen.x, point.screen.y); - } + /** + * Do the next step + */ + DataStep.prototype.previous = function() { + this.current += this.step; + this.marginEnd += this.step; + this.marginRange = this.marginEnd - this.marginStart; + }; - // draw the datapoints as colored circles - for (i = 1; i < this.dataPoints.length; i++) { - point = this.dataPoints[i]; - ctx.lineTo(point.screen.x, point.screen.y); - } - // finish the line - if (this.dataPoints.length > 0) { - ctx.stroke(); - } - }; /** - * Start a moving operation inside the provided parent element - * @param {Event} event The event that occurred (required for - * retrieving the mouse position) + * Get the current datetime + * @return {String} current The current date */ - Graph3d.prototype._onMouseDown = function(event) { - event = event || window.event; + DataStep.prototype.getCurrent = function(decimals) { + // prevent round-off errors when close to zero + var current = (Math.abs(this.current) < this.step / 2) ? 0 : this.current; + var toPrecision = '' + Number(current).toPrecision(5); - // check if mouse is still down (may be up when focus is lost for example - // in an iframe) - if (this.leftButtonDown) { - this._onMouseUp(event); + // If decimals is specified, then limit or extend the string as required + if(decimals !== undefined && !isNaN(Number(decimals))) { + // If string includes exponent, then we need to add it to the end + var exp = ""; + var index = toPrecision.indexOf("e"); + if(index != -1) { + // Get the exponent + exp = toPrecision.slice(index); + // Remove the exponent in case we need to zero-extend + toPrecision = toPrecision.slice(0, index); + } + index = Math.max(toPrecision.indexOf(","), toPrecision.indexOf(".")); + if(index === -1) { + // No decimal found - if we want decimals, then we need to add it + if(decimals !== 0) { + toPrecision += '.'; + } + // Calculate how long the string should be + index = toPrecision.length + decimals; + } + else if(decimals !== 0) { + // Calculate how long the string should be - accounting for the decimal place + index += decimals + 1; + } + if(index > toPrecision.length) { + // We need to add zeros! + for(var cnt = index - toPrecision.length; cnt > 0; cnt--) { + toPrecision += '0'; + } + } + else { + // we need to remove characters + toPrecision = toPrecision.slice(0, index); + } + // Add the exponent if there is one + toPrecision += exp; + } + else { + if (toPrecision.indexOf(",") != -1 || toPrecision.indexOf(".") != -1) { + // If no decimal is specified, and there are decimal places, remove trailing zeros + for (var i = toPrecision.length - 1; i > 0; i--) { + if (toPrecision[i] == "0") { + toPrecision = toPrecision.slice(0, i); + } + else if (toPrecision[i] == "." || toPrecision[i] == ",") { + toPrecision = toPrecision.slice(0, i); + break; + } + else { + break; + } + } + } } - // only react on left mouse button down - this.leftButtonDown = event.which ? (event.which === 1) : (event.button === 1); - if (!this.leftButtonDown && !this.touchDown) return; + return toPrecision; + }; - // get mouse position (different code for IE and all other browsers) - this.startMouseX = getMouseX(event); - this.startMouseY = getMouseY(event); + /** + * Check if the current value is a major value (for example when the step + * is DAY, a major value is each first day of the MONTH) + * @return {boolean} true if current date is major, else false. + */ + DataStep.prototype.isMajor = function() { + return (this.current % (this.scale * this.majorSteps[this.stepIndex]) == 0); + }; - this.startStart = new Date(this.start); - this.startEnd = new Date(this.end); - this.startArmRotation = this.camera.getArmRotation(); + module.exports = DataStep; - this.frame.style.cursor = 'move'; - // add event listeners to handle moving the contents - // we store the function onmousemove and onmouseup in the graph, so we can - // remove the eventlisteners lateron in the function mouseUp() - var me = this; - this.onmousemove = function (event) {me._onMouseMove(event);}; - this.onmouseup = function (event) {me._onMouseUp(event);}; - util.addEventListener(document, 'mousemove', me.onmousemove); - util.addEventListener(document, 'mouseup', me.onmouseup); - util.preventDefault(event); - }; +/***/ }, +/* 17 */ +/***/ function(module, exports, __webpack_require__) { + var util = __webpack_require__(1); + var hammerUtil = __webpack_require__(47); + var moment = __webpack_require__(44); + var Component = __webpack_require__(25); + var DateUtil = __webpack_require__(15); /** - * Perform moving operating. - * This function activated from within the funcion Graph.mouseDown(). - * @param {Event} event Well, eehh, the event + * @constructor Range + * A Range controls a numeric range with a start and end value. + * The Range adjusts the range based on mouse events or programmatic changes, + * and triggers events when the range is changing or has been changed. + * @param {{dom: Object, domProps: Object, emitter: Emitter}} body + * @param {Object} [options] See description at Range.setOptions */ - Graph3d.prototype._onMouseMove = function (event) { - event = event || window.event; + function Range(body, options) { + var now = moment().hours(0).minutes(0).seconds(0).milliseconds(0); + this.start = now.clone().add(-3, 'days').valueOf(); // Number + this.end = now.clone().add(4, 'days').valueOf(); // Number - // calculate change in mouse position - var diffX = parseFloat(getMouseX(event)) - this.startMouseX; - var diffY = parseFloat(getMouseY(event)) - this.startMouseY; + this.body = body; + this.deltaDifference = 0; + this.scaleOffset = 0; + this.startToFront = false; + this.endToFront = true; - var horizontalNew = this.startArmRotation.horizontal + diffX / 200; - var verticalNew = this.startArmRotation.vertical + diffY / 200; + // default options + this.defaultOptions = { + start: null, + end: null, + direction: 'horizontal', // 'horizontal' or 'vertical' + moveable: true, + zoomable: true, + min: null, + max: null, + zoomMin: 10, // milliseconds + zoomMax: 1000 * 60 * 60 * 24 * 365 * 10000 // milliseconds + }; + this.options = util.extend({}, this.defaultOptions); - var snapAngle = 4; // degrees - var snapValue = Math.sin(snapAngle / 360 * 2 * Math.PI); + this.props = { + touch: {} + }; + this.animateTimer = null; - // snap horizontally to nice angles at 0pi, 0.5pi, 1pi, 1.5pi, etc... - // the -0.001 is to take care that the vertical axis is always drawn at the left front corner - if (Math.abs(Math.sin(horizontalNew)) < snapValue) { - horizontalNew = Math.round((horizontalNew / Math.PI)) * Math.PI - 0.001; - } - if (Math.abs(Math.cos(horizontalNew)) < snapValue) { - horizontalNew = (Math.round((horizontalNew/ Math.PI - 0.5)) + 0.5) * Math.PI - 0.001; - } + // drag listeners for dragging + this.body.emitter.on('dragstart', this._onDragStart.bind(this)); + this.body.emitter.on('drag', this._onDrag.bind(this)); + this.body.emitter.on('dragend', this._onDragEnd.bind(this)); - // snap vertically to nice angles - if (Math.abs(Math.sin(verticalNew)) < snapValue) { - verticalNew = Math.round((verticalNew / Math.PI)) * Math.PI; - } - if (Math.abs(Math.cos(verticalNew)) < snapValue) { - verticalNew = (Math.round((verticalNew/ Math.PI - 0.5)) + 0.5) * Math.PI; - } + // ignore dragging when holding + this.body.emitter.on('hold', this._onHold.bind(this)); - this.camera.setArmRotation(horizontalNew, verticalNew); - this.redraw(); + // mouse wheel for zooming + this.body.emitter.on('mousewheel', this._onMouseWheel.bind(this)); + this.body.emitter.on('DOMMouseScroll', this._onMouseWheel.bind(this)); // For FF - // fire a cameraPositionChange event - var parameters = this.getCameraPosition(); - this.emit('cameraPositionChange', parameters); + // pinch to zoom + this.body.emitter.on('touch', this._onTouch.bind(this)); + this.body.emitter.on('pinch', this._onPinch.bind(this)); - util.preventDefault(event); - }; + this.setOptions(options); + } + Range.prototype = new Component(); /** - * Stop moving operating. - * This function activated from within the funcion Graph.mouseDown(). - * @param {event} event The event + * Set options for the range controller + * @param {Object} options Available options: + * {Number | Date | String} start Start date for the range + * {Number | Date | String} end End date for the range + * {Number} min Minimum value for start + * {Number} max Maximum value for end + * {Number} zoomMin Set a minimum value for + * (end - start). + * {Number} zoomMax Set a maximum value for + * (end - start). + * {Boolean} moveable Enable moving of the range + * by dragging. True by default + * {Boolean} zoomable Enable zooming of the range + * by pinching/scrolling. True by default */ - Graph3d.prototype._onMouseUp = function (event) { - this.frame.style.cursor = 'auto'; - this.leftButtonDown = false; + Range.prototype.setOptions = function (options) { + if (options) { + // copy the options that we know + var fields = ['direction', 'min', 'max', 'zoomMin', 'zoomMax', 'moveable', 'zoomable', 'activate', 'hiddenDates']; + util.selectiveExtend(fields, this.options, options); - // remove event listeners here - util.removeEventListener(document, 'mousemove', this.onmousemove); - util.removeEventListener(document, 'mouseup', this.onmouseup); - util.preventDefault(event); + if ('start' in options || 'end' in options) { + // apply a new range. both start and end are optional + this.setRange(options.start, options.end); + } + } }; /** - * After having moved the mouse, a tooltip should pop up when the mouse is resting on a data point - * @param {Event} event A mouse move event + * Test whether direction has a valid value + * @param {String} direction 'horizontal' or 'vertical' */ - Graph3d.prototype._onTooltip = function (event) { - var delay = 300; // ms - var boundingRect = this.frame.getBoundingClientRect(); - var mouseX = getMouseX(event) - boundingRect.left; - var mouseY = getMouseY(event) - boundingRect.top; - - if (!this.showTooltip) { - return; - } - - if (this.tooltipTimeout) { - clearTimeout(this.tooltipTimeout); + function validateDirection (direction) { + if (direction != 'horizontal' && direction != 'vertical') { + throw new TypeError('Unknown direction "' + direction + '". ' + + 'Choose "horizontal" or "vertical".'); } + } - // (delayed) display of a tooltip only if no mouse button is down - if (this.leftButtonDown) { - this._hideTooltip(); - return; + /** + * Set a new start and end range + * @param {Date | Number | String} [start] + * @param {Date | Number | String} [end] + * @param {boolean | number} [animate=false] If true, the range is animated + * smoothly to the new window. + * If animate is a number, the + * number is taken as duration + * Default duration is 500 ms. + * @param {Boolean} [byUser=false] + * + */ + Range.prototype.setRange = function(start, end, animate, byUser) { + if (byUser !== true) { + byUser = false; } + var _start = start != undefined ? util.convert(start, 'Date').valueOf() : null; + var _end = end != undefined ? util.convert(end, 'Date').valueOf() : null; + this._cancelAnimation(); - if (this.tooltip && this.tooltip.dataPoint) { - // tooltip is currently visible - var dataPoint = this._dataPointFromXY(mouseX, mouseY); - if (dataPoint !== this.tooltip.dataPoint) { - // datapoint changed - if (dataPoint) { - this._showTooltip(dataPoint); - } - else { - this._hideTooltip(); - } - } - } - else { - // tooltip is currently not visible + if (animate) { var me = this; - this.tooltipTimeout = setTimeout(function () { - me.tooltipTimeout = null; + var initStart = this.start; + var initEnd = this.end; + var duration = typeof animate === 'number' ? animate : 500; + var initTime = new Date().valueOf(); + var anyChanged = false; - // show a tooltip if we have a data point - var dataPoint = me._dataPointFromXY(mouseX, mouseY); - if (dataPoint) { - me._showTooltip(dataPoint); - } - }, delay); - } - }; + var next = function () { + if (!me.props.touch.dragging) { + var now = new Date().valueOf(); + var time = now - initTime; + var done = time > duration; + var s = (done || _start === null) ? _start : util.easeInOutQuad(time, initStart, _start, duration); + var e = (done || _end === null) ? _end : util.easeInOutQuad(time, initEnd, _end, duration); - /** - * Event handler for touchstart event on mobile devices - */ - Graph3d.prototype._onTouchStart = function(event) { - this.touchDown = true; + changed = me._applyRange(s, e); + DateUtil.updateHiddenDates(me.body, me.options.hiddenDates); + anyChanged = anyChanged || changed; + if (changed) { + me.body.emitter.emit('rangechange', {start: new Date(me.start), end: new Date(me.end), byUser:byUser}); + } - var me = this; - this.ontouchmove = function (event) {me._onTouchMove(event);}; - this.ontouchend = function (event) {me._onTouchEnd(event);}; - util.addEventListener(document, 'touchmove', me.ontouchmove); - util.addEventListener(document, 'touchend', me.ontouchend); + if (done) { + if (anyChanged) { + me.body.emitter.emit('rangechanged', {start: new Date(me.start), end: new Date(me.end), byUser:byUser}); + } + } + else { + // animate with as high as possible frame rate, leave 20 ms in between + // each to prevent the browser from blocking + me.animateTimer = setTimeout(next, 20); + } + } + }; - this._onMouseDown(event); + return next(); + } + else { + var changed = this._applyRange(_start, _end); + DateUtil.updateHiddenDates(this.body, this.options.hiddenDates); + if (changed) { + var params = {start: new Date(this.start), end: new Date(this.end), byUser:byUser}; + this.body.emitter.emit('rangechange', params); + this.body.emitter.emit('rangechanged', params); + } + } }; /** - * Event handler for touchmove event on mobile devices + * Stop an animation + * @private */ - Graph3d.prototype._onTouchMove = function(event) { - this._onMouseMove(event); + Range.prototype._cancelAnimation = function () { + if (this.animateTimer) { + clearTimeout(this.animateTimer); + this.animateTimer = null; + } }; /** - * Event handler for touchend event on mobile devices + * Set a new start and end range. This method is the same as setRange, but + * does not trigger a range change and range changed event, and it returns + * true when the range is changed + * @param {Number} [start] + * @param {Number} [end] + * @return {Boolean} changed + * @private */ - Graph3d.prototype._onTouchEnd = function(event) { - this.touchDown = false; - - util.removeEventListener(document, 'touchmove', this.ontouchmove); - util.removeEventListener(document, 'touchend', this.ontouchend); + Range.prototype._applyRange = function(start, end) { + var newStart = (start != null) ? util.convert(start, 'Date').valueOf() : this.start, + newEnd = (end != null) ? util.convert(end, 'Date').valueOf() : this.end, + max = (this.options.max != null) ? util.convert(this.options.max, 'Date').valueOf() : null, + min = (this.options.min != null) ? util.convert(this.options.min, 'Date').valueOf() : null, + diff; - this._onMouseUp(event); - }; + // check for valid number + if (isNaN(newStart) || newStart === null) { + throw new Error('Invalid start "' + start + '"'); + } + if (isNaN(newEnd) || newEnd === null) { + throw new Error('Invalid end "' + end + '"'); + } + // prevent start < end + if (newEnd < newStart) { + newEnd = newStart; + } - /** - * Event handler for mouse wheel event, used to zoom the graph - * Code from http://adomas.org/javascript-mouse-wheel/ - * @param {event} event The event - */ - Graph3d.prototype._onWheel = function(event) { - if (!event) /* For IE. */ - event = window.event; + // prevent start < min + if (min !== null) { + if (newStart < min) { + diff = (min - newStart); + newStart += diff; + newEnd += diff; - // retrieve delta - var delta = 0; - if (event.wheelDelta) { /* IE/Opera. */ - delta = event.wheelDelta/120; - } else if (event.detail) { /* Mozilla case. */ - // In Mozilla, sign of delta is different than in IE. - // Also, delta is multiple of 3. - delta = -event.detail/3; + // prevent end > max + if (max != null) { + if (newEnd > max) { + newEnd = max; + } + } + } } - // If delta is nonzero, handle it. - // Basically, delta is now positive if wheel was scrolled up, - // and negative, if wheel was scrolled down. - if (delta) { - var oldLength = this.camera.getArmLength(); - var newLength = oldLength * (1 - delta / 10); + // prevent end > max + if (max !== null) { + if (newEnd > max) { + diff = (newEnd - max); + newStart -= diff; + newEnd -= diff; - this.camera.setArmLength(newLength); - this.redraw(); + // prevent start < min + if (min != null) { + if (newStart < min) { + newStart = min; + } + } + } + } - this._hideTooltip(); + // prevent (end-start) < zoomMin + if (this.options.zoomMin !== null) { + var zoomMin = parseFloat(this.options.zoomMin); + if (zoomMin < 0) { + zoomMin = 0; + } + if ((newEnd - newStart) < zoomMin) { + if ((this.end - this.start) === zoomMin && newStart > this.start && newEnd < this.end) { + // ignore this action, we are already zoomed to the minimum + newStart = this.start; + newEnd = this.end; + } + else { + // zoom to the minimum + diff = (zoomMin - (newEnd - newStart)); + newStart -= diff / 2; + newEnd += diff / 2; + } + } } - // fire a cameraPositionChange event - var parameters = this.getCameraPosition(); - this.emit('cameraPositionChange', parameters); + // prevent (end-start) > zoomMax + if (this.options.zoomMax !== null) { + var zoomMax = parseFloat(this.options.zoomMax); + if (zoomMax < 0) { + zoomMax = 0; + } - // Prevent default actions caused by mouse wheel. - // That might be ugly, but we handle scrolls somehow - // anyway, so don't bother here.. - util.preventDefault(event); - }; + if ((newEnd - newStart) > zoomMax) { + if ((this.end - this.start) === zoomMax && newStart < this.start && newEnd > this.end) { + // ignore this action, we are already zoomed to the maximum + newStart = this.start; + newEnd = this.end; + } + else { + // zoom to the maximum + diff = ((newEnd - newStart) - zoomMax); + newStart += diff / 2; + newEnd -= diff / 2; + } + } + } - /** - * Test whether a point lies inside given 2D triangle - * @param {Point2d} point - * @param {Point2d[]} triangle - * @return {boolean} Returns true if given point lies inside or on the edge of the triangle - * @private - */ - Graph3d.prototype._insideTriangle = function (point, triangle) { - var a = triangle[0], - b = triangle[1], - c = triangle[2]; + var changed = (this.start != newStart || this.end != newEnd); - function sign (x) { - return x > 0 ? 1 : x < 0 ? -1 : 0; + // if the new range does NOT overlap with the old range, emit checkRangedItems to avoid not showing ranged items (ranged meaning has end time, not necessarily of type Range) + if (!((newStart >= this.start && newStart <= this.end) || (newEnd >= this.start && newEnd <= this.end)) && + !((this.start >= newStart && this.start <= newEnd) || (this.end >= newStart && this.end <= newEnd) )) { + this.body.emitter.emit('checkRangedItems'); } - var as = sign((b.x - a.x) * (point.y - a.y) - (b.y - a.y) * (point.x - a.x)); - var bs = sign((c.x - b.x) * (point.y - b.y) - (c.y - b.y) * (point.x - b.x)); - var cs = sign((a.x - c.x) * (point.y - c.y) - (a.y - c.y) * (point.x - c.x)); - - // each of the three signs must be either equal to each other or zero - return (as == 0 || bs == 0 || as == bs) && - (bs == 0 || cs == 0 || bs == cs) && - (as == 0 || cs == 0 || as == cs); + this.start = newStart; + this.end = newEnd; + return changed; }; /** - * Find a data point close to given screen position (x, y) - * @param {Number} x - * @param {Number} y - * @return {Object | null} The closest data point or null if not close to any data point - * @private + * Retrieve the current range. + * @return {Object} An object with start and end properties */ - Graph3d.prototype._dataPointFromXY = function (x, y) { - var i, - distMax = 100, // px - dataPoint = null, - closestDataPoint = null, - closestDist = null, - center = new Point2d(x, y); + Range.prototype.getRange = function() { + return { + start: this.start, + end: this.end + }; + }; - if (this.style === Graph3d.STYLE.BAR || - this.style === Graph3d.STYLE.BARCOLOR || - this.style === Graph3d.STYLE.BARSIZE) { - // the data points are ordered from far away to closest - for (i = this.dataPoints.length - 1; i >= 0; i--) { - dataPoint = this.dataPoints[i]; - var surfaces = dataPoint.surfaces; - if (surfaces) { - for (var s = surfaces.length - 1; s >= 0; s--) { - // split each surface in two triangles, and see if the center point is inside one of these - var surface = surfaces[s]; - var corners = surface.corners; - var triangle1 = [corners[0].screen, corners[1].screen, corners[2].screen]; - var triangle2 = [corners[2].screen, corners[3].screen, corners[0].screen]; - if (this._insideTriangle(center, triangle1) || - this._insideTriangle(center, triangle2)) { - // return immediately at the first hit - return dataPoint; - } - } - } + /** + * Calculate the conversion offset and scale for current range, based on + * the provided width + * @param {Number} width + * @returns {{offset: number, scale: number}} conversion + */ + Range.prototype.conversion = function (width, totalHidden) { + return Range.conversion(this.start, this.end, width, totalHidden); + }; + + /** + * Static method to calculate the conversion offset and scale for a range, + * based on the provided start, end, and width + * @param {Number} start + * @param {Number} end + * @param {Number} width + * @returns {{offset: number, scale: number}} conversion + */ + Range.conversion = function (start, end, width, totalHidden) { + if (totalHidden === undefined) { + totalHidden = 0; + } + if (width != 0 && (end - start != 0)) { + return { + offset: start, + scale: width / (end - start - totalHidden) } } else { - // find the closest data point, using distance to the center of the point on 2d screen - for (i = 0; i < this.dataPoints.length; i++) { - dataPoint = this.dataPoints[i]; - var point = dataPoint.screen; - if (point) { - var distX = Math.abs(x - point.x); - var distY = Math.abs(y - point.y); - var dist = Math.sqrt(distX * distX + distY * distY); - - if ((closestDist === null || dist < closestDist) && dist < distMax) { - closestDist = dist; - closestDataPoint = dataPoint; - } - } - } + return { + offset: 0, + scale: 1 + }; } + }; + /** + * Start dragging horizontally or vertically + * @param {Event} event + * @private + */ + Range.prototype._onDragStart = function(event) { + this.deltaDifference = 0; + this.previousDelta = 0; + // only allow dragging when configured as movable + if (!this.options.moveable) return; - return closestDataPoint; + // refuse to drag when we where pinching to prevent the timeline make a jump + // when releasing the fingers in opposite order from the touch screen + if (!this.props.touch.allowDragging) return; + + this.props.touch.start = this.start; + this.props.touch.end = this.end; + this.props.touch.dragging = true; + + if (this.body.dom.root) { + this.body.dom.root.style.cursor = 'move'; + } }; /** - * Display a tooltip for given data point - * @param {Object} dataPoint + * Perform dragging operation + * @param {Event} event * @private */ - Graph3d.prototype._showTooltip = function (dataPoint) { - var content, line, dot; + Range.prototype._onDrag = function (event) { + // only allow dragging when configured as movable + if (!this.options.moveable) return; + // refuse to drag when we where pinching to prevent the timeline make a jump + // when releasing the fingers in opposite order from the touch screen + if (!this.props.touch.allowDragging) return; - if (!this.tooltip) { - content = document.createElement('div'); - content.style.position = 'absolute'; - content.style.padding = '10px'; - content.style.border = '1px solid #4d4d4d'; - content.style.color = '#1a1a1a'; - content.style.background = 'rgba(255,255,255,0.7)'; - content.style.borderRadius = '2px'; - content.style.boxShadow = '5px 5px 10px rgba(128,128,128,0.5)'; + var direction = this.options.direction; + validateDirection(direction); - line = document.createElement('div'); - line.style.position = 'absolute'; - line.style.height = '40px'; - line.style.width = '0'; - line.style.borderLeft = '1px solid #4d4d4d'; + var delta = (direction == 'horizontal') ? event.gesture.deltaX : event.gesture.deltaY; + delta -= this.deltaDifference; + var interval = (this.props.touch.end - this.props.touch.start); - dot = document.createElement('div'); - dot.style.position = 'absolute'; - dot.style.height = '0'; - dot.style.width = '0'; - dot.style.border = '5px solid #4d4d4d'; - dot.style.borderRadius = '5px'; + // normalize dragging speed if cutout is in between. + var duration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); + interval -= duration; - this.tooltip = { - dataPoint: null, - dom: { - content: content, - line: line, - dot: dot - } - }; - } - else { - content = this.tooltip.dom.content; - line = this.tooltip.dom.line; - dot = this.tooltip.dom.dot; - } + var width = (direction == 'horizontal') ? this.body.domProps.center.width : this.body.domProps.center.height; + var diffRange = -delta / width * interval; + var newStart = this.props.touch.start + diffRange; + var newEnd = this.props.touch.end + diffRange; - this._hideTooltip(); - this.tooltip.dataPoint = dataPoint; - if (typeof this.showTooltip === 'function') { - content.innerHTML = this.showTooltip(dataPoint.point); - } - else { - content.innerHTML = '' + - '' + - '' + - '' + - '
x:' + dataPoint.point.x + '
y:' + dataPoint.point.y + '
z:' + dataPoint.point.z + '
'; + // snapping times away from hidden zones + var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, this.previousDelta-delta, true); + var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, this.previousDelta-delta, true); + if (safeStart != newStart || safeEnd != newEnd) { + this.deltaDifference += delta; + this.props.touch.start = safeStart; + this.props.touch.end = safeEnd; + this._onDrag(event); + return; } - content.style.left = '0'; - content.style.top = '0'; - this.frame.appendChild(content); - this.frame.appendChild(line); - this.frame.appendChild(dot); - - // calculate sizes - var contentWidth = content.offsetWidth; - var contentHeight = content.offsetHeight; - var lineHeight = line.offsetHeight; - var dotWidth = dot.offsetWidth; - var dotHeight = dot.offsetHeight; - - var left = dataPoint.screen.x - contentWidth / 2; - left = Math.min(Math.max(left, 10), this.frame.clientWidth - 10 - contentWidth); + this.previousDelta = delta; + this._applyRange(newStart, newEnd); - line.style.left = dataPoint.screen.x + 'px'; - line.style.top = (dataPoint.screen.y - lineHeight) + 'px'; - content.style.left = left + 'px'; - content.style.top = (dataPoint.screen.y - lineHeight - contentHeight) + 'px'; - dot.style.left = (dataPoint.screen.x - dotWidth / 2) + 'px'; - dot.style.top = (dataPoint.screen.y - dotHeight / 2) + 'px'; + // fire a rangechange event + this.body.emitter.emit('rangechange', { + start: new Date(this.start), + end: new Date(this.end), + byUser: true + }); }; /** - * Hide the tooltip when displayed + * Stop dragging operation + * @param {event} event * @private */ - Graph3d.prototype._hideTooltip = function () { - if (this.tooltip) { - this.tooltip.dataPoint = null; - - for (var prop in this.tooltip.dom) { - if (this.tooltip.dom.hasOwnProperty(prop)) { - var elem = this.tooltip.dom[prop]; - if (elem && elem.parentNode) { - elem.parentNode.removeChild(elem); - } - } - } - } - }; + Range.prototype._onDragEnd = function (event) { + // only allow dragging when configured as movable + if (!this.options.moveable) return; - /**--------------------------------------------------------------------------**/ + // refuse to drag when we where pinching to prevent the timeline make a jump + // when releasing the fingers in opposite order from the touch screen + if (!this.props.touch.allowDragging) return; + this.props.touch.dragging = false; + if (this.body.dom.root) { + this.body.dom.root.style.cursor = 'auto'; + } - /** - * Get the horizontal mouse position from a mouse event - * @param {Event} event - * @return {Number} mouse x - */ - function getMouseX (event) { - if ('clientX' in event) return event.clientX; - return event.targetTouches[0] && event.targetTouches[0].clientX || 0; - } + // fire a rangechanged event + this.body.emitter.emit('rangechanged', { + start: new Date(this.start), + end: new Date(this.end), + byUser: true + }); + }; /** - * Get the vertical mouse position from a mouse event + * Event handler for mouse wheel event, used to zoom + * Code from http://adomas.org/javascript-mouse-wheel/ * @param {Event} event - * @return {Number} mouse y + * @private */ - function getMouseY (event) { - if ('clientY' in event) return event.clientY; - return event.targetTouches[0] && event.targetTouches[0].clientY || 0; - } - - module.exports = Graph3d; + Range.prototype._onMouseWheel = function(event) { + // only allow zooming when configured as zoomable and moveable + if (!(this.options.zoomable && this.options.moveable)) return; + // retrieve delta + var delta = 0; + if (event.wheelDelta) { /* IE/Opera. */ + delta = event.wheelDelta / 120; + } else if (event.detail) { /* Mozilla case. */ + // In Mozilla, sign of delta is different than in IE. + // Also, delta is multiple of 3. + delta = -event.detail / 3; + } -/***/ }, -/* 11 */ -/***/ function(module, exports, __webpack_require__) { + // If delta is nonzero, handle it. + // Basically, delta is now positive if wheel was scrolled up, + // and negative, if wheel was scrolled down. + if (delta) { + // perform the zoom action. Delta is normally 1 or -1 - - /** - * Expose `Emitter`. - */ + // adjust a negative delta such that zooming in with delta 0.1 + // equals zooming out with a delta -0.1 + var scale; + if (delta < 0) { + scale = 1 - (delta / 5); + } + else { + scale = 1 / (1 + (delta / 5)) ; + } - module.exports = Emitter; + // calculate center, the date to zoom around + var gesture = hammerUtil.fakeGesture(this, event), + pointer = getPointer(gesture.center, this.body.dom.center), + pointerDate = this._pointerToDate(pointer); - /** - * Initialize a new `Emitter`. - * - * @api public - */ + this.zoom(scale, pointerDate, delta); + } - function Emitter(obj) { - if (obj) return mixin(obj); + // Prevent default actions caused by mouse wheel + // (else the page and timeline both zoom and scroll) + event.preventDefault(); }; /** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private + * Start of a touch gesture + * @private */ - - function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - return obj; - } + Range.prototype._onTouch = function (event) { + this.props.touch.start = this.start; + this.props.touch.end = this.end; + this.props.touch.allowDragging = true; + this.props.touch.center = null; + this.scaleOffset = 0; + this.deltaDifference = 0; + }; /** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public + * On start of a hold gesture + * @private */ - - Emitter.prototype.on = - Emitter.prototype.addEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks[event] = this._callbacks[event] || []) - .push(fn); - return this; + Range.prototype._onHold = function () { + this.props.touch.allowDragging = false; }; /** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public + * Handle pinch event + * @param {Event} event + * @private */ + Range.prototype._onPinch = function (event) { + // only allow zooming when configured as zoomable and moveable + if (!(this.options.zoomable && this.options.moveable)) return; - Emitter.prototype.once = function(event, fn){ - var self = this; - this._callbacks = this._callbacks || {}; + this.props.touch.allowDragging = false; - function on() { - self.off(event, on); - fn.apply(this, arguments); - } + if (event.gesture.touches.length > 1) { + if (!this.props.touch.center) { + this.props.touch.center = getPointer(event.gesture.center, this.body.dom.center); + } - on.fn = fn; - this.on(event, on); - return this; - }; + var scale = 1 / (event.gesture.scale + this.scaleOffset); + var centerDate = this._pointerToDate(this.props.touch.center); - /** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ + var hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); + var hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this, centerDate); + var hiddenDurationAfter = hiddenDuration - hiddenDurationBefore; - Emitter.prototype.off = - Emitter.prototype.removeListener = - Emitter.prototype.removeAllListeners = - Emitter.prototype.removeEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; + // calculate new start and end + var newStart = (centerDate - hiddenDurationBefore) + (this.props.touch.start - (centerDate - hiddenDurationBefore)) * scale; + var newEnd = (centerDate + hiddenDurationAfter) + (this.props.touch.end - (centerDate + hiddenDurationAfter)) * scale; - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; - } + // snapping times away from hidden zones + this.startToFront = 1 - scale > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + this.endToFront = scale - 1 > 0 ? false : true; // used to do the right autocorrection with periodic hidden times - // specific event - var callbacks = this._callbacks[event]; - if (!callbacks) return this; + var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, 1 - scale, true); + var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, scale - 1, true); + if (safeStart != newStart || safeEnd != newEnd) { + this.props.touch.start = safeStart; + this.props.touch.end = safeEnd; + this.scaleOffset = 1 - event.gesture.scale; + newStart = safeStart; + newEnd = safeEnd; + } - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks[event]; - return this; - } + this.setRange(newStart, newEnd, false, true); - // remove specific handler - var cb; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; - } + this.startToFront = false; // revert to default + this.endToFront = true; // revert to default } - return this; }; /** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} + * Helper function to calculate the center date for zooming + * @param {{x: Number, y: Number}} pointer + * @return {number} date + * @private */ + Range.prototype._pointerToDate = function (pointer) { + var conversion; + var direction = this.options.direction; - Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - var args = [].slice.call(arguments, 1) - , callbacks = this._callbacks[event]; + validateDirection(direction); - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } + if (direction == 'horizontal') { + return this.body.util.toTime(pointer.x).valueOf(); + } + else { + var height = this.body.domProps.center.height; + conversion = this.conversion(height); + return pointer.y / conversion.scale + conversion.offset; } - - return this; }; /** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public + * Get the pointer location relative to the location of the dom element + * @param {{pageX: Number, pageY: Number}} touch + * @param {Element} element HTML DOM element + * @return {{x: Number, y: Number}} pointer + * @private */ - - Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks[event] || []; - }; + function getPointer (touch, element) { + return { + x: touch.pageX - util.getAbsoluteLeft(element), + y: touch.pageY - util.getAbsoluteTop(element) + }; + } /** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public + * Zoom the range the given scale in or out. Start and end date will + * be adjusted, and the timeline will be redrawn. You can optionally give a + * date around which to zoom. + * For example, try scale = 0.9 or 1.1 + * @param {Number} scale Scaling factor. Values above 1 will zoom out, + * values below 1 will zoom in. + * @param {Number} [center] Value representing a date around which will + * be zoomed. */ + Range.prototype.zoom = function(scale, center, delta) { + // if centerDate is not provided, take it half between start Date and end Date + if (center == null) { + center = (this.start + this.end) / 2; + } - Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; - }; - + var hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); + var hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this, center); + var hiddenDurationAfter = hiddenDuration - hiddenDurationBefore; -/***/ }, -/* 12 */ -/***/ function(module, exports, __webpack_require__) { + // calculate new start and end + var newStart = (center-hiddenDurationBefore) + (this.start - (center-hiddenDurationBefore)) * scale; + var newEnd = (center+hiddenDurationAfter) + (this.end - (center+hiddenDurationAfter)) * scale; - /** - * @prototype Point3d - * @param {Number} [x] - * @param {Number} [y] - * @param {Number} [z] - */ - function Point3d(x, y, z) { - this.x = x !== undefined ? x : 0; - this.y = y !== undefined ? y : 0; - this.z = z !== undefined ? z : 0; - }; + // snapping times away from hidden zones + this.startToFront = delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + this.endToFront = -delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, delta, true); + var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, -delta, true); + if (safeStart != newStart || safeEnd != newEnd) { + newStart = safeStart; + newEnd = safeEnd; + } - /** - * Subtract the two provided points, returns a-b - * @param {Point3d} a - * @param {Point3d} b - * @return {Point3d} a-b - */ - Point3d.subtract = function(a, b) { - var sub = new Point3d(); - sub.x = a.x - b.x; - sub.y = a.y - b.y; - sub.z = a.z - b.z; - return sub; - }; + this.setRange(newStart, newEnd, false, true); - /** - * Add the two provided points, returns a+b - * @param {Point3d} a - * @param {Point3d} b - * @return {Point3d} a+b - */ - Point3d.add = function(a, b) { - var sum = new Point3d(); - sum.x = a.x + b.x; - sum.y = a.y + b.y; - sum.z = a.z + b.z; - return sum; + this.startToFront = false; // revert to default + this.endToFront = true; // revert to default }; - /** - * Calculate the average of two 3d points - * @param {Point3d} a - * @param {Point3d} b - * @return {Point3d} The average, (a+b)/2 - */ - Point3d.avg = function(a, b) { - return new Point3d( - (a.x + b.x) / 2, - (a.y + b.y) / 2, - (a.z + b.z) / 2 - ); - }; + /** - * Calculate the cross product of the two provided points, returns axb - * Documentation: http://en.wikipedia.org/wiki/Cross_product - * @param {Point3d} a - * @param {Point3d} b - * @return {Point3d} cross product axb + * Move the range with a given delta to the left or right. Start and end + * value will be adjusted. For example, try delta = 0.1 or -0.1 + * @param {Number} delta Moving amount. Positive value will move right, + * negative value will move left */ - Point3d.crossProduct = function(a, b) { - var crossproduct = new Point3d(); + Range.prototype.move = function(delta) { + // zoom start Date and end Date relative to the centerDate + var diff = (this.end - this.start); - crossproduct.x = a.y * b.z - a.z * b.y; - crossproduct.y = a.z * b.x - a.x * b.z; - crossproduct.z = a.x * b.y - a.y * b.x; + // apply new values + var newStart = this.start + diff * delta; + var newEnd = this.end + diff * delta; - return crossproduct; - }; + // TODO: reckon with min and max range + this.start = newStart; + this.end = newEnd; + }; /** - * Rtrieve the length of the vector (or the distance from this point to the origin - * @return {Number} length + * Move the range to a new center point + * @param {Number} moveTo New center point of the range */ - Point3d.prototype.length = function() { - return Math.sqrt( - this.x * this.x + - this.y * this.y + - this.z * this.z - ); - }; - - module.exports = Point3d; + Range.prototype.moveTo = function(moveTo) { + var center = (this.start + this.end) / 2; + var diff = center - moveTo; -/***/ }, -/* 13 */ -/***/ function(module, exports, __webpack_require__) { + // calculate new start and end + var newStart = this.start - diff; + var newEnd = this.end - diff; - /** - * @prototype Point2d - * @param {Number} [x] - * @param {Number} [y] - */ - function Point2d (x, y) { - this.x = x !== undefined ? x : 0; - this.y = y !== undefined ? y : 0; - } + this.setRange(newStart, newEnd); + }; - module.exports = Point2d; + module.exports = Range; /***/ }, -/* 14 */ +/* 18 */ /***/ function(module, exports, __webpack_require__) { - var Point3d = __webpack_require__(12); - - /** - * @class Camera - * The camera is mounted on a (virtual) camera arm. The camera arm can rotate - * The camera is always looking in the direction of the origin of the arm. - * This way, the camera always rotates around one fixed point, the location - * of the camera arm. - * - * Documentation: - * http://en.wikipedia.org/wiki/3D_projection - */ - function Camera() { - this.armLocation = new Point3d(); - this.armRotation = {}; - this.armRotation.horizontal = 0; - this.armRotation.vertical = 0; - this.armLength = 1.7; - - this.cameraLocation = new Point3d(); - this.cameraRotation = new Point3d(0.5*Math.PI, 0, 0); - - this.calculateCameraOrientation(); - } + // Utility functions for ordering and stacking of items + var EPSILON = 0.001; // used when checking collisions, to prevent round-off errors /** - * Set the location (origin) of the arm - * @param {Number} x Normalized value of x - * @param {Number} y Normalized value of y - * @param {Number} z Normalized value of z + * Order items by their start data + * @param {Item[]} items */ - Camera.prototype.setArmLocation = function(x, y, z) { - this.armLocation.x = x; - this.armLocation.y = y; - this.armLocation.z = z; - - this.calculateCameraOrientation(); + exports.orderByStart = function(items) { + items.sort(function (a, b) { + return a.data.start - b.data.start; + }); }; /** - * Set the rotation of the camera arm - * @param {Number} horizontal The horizontal rotation, between 0 and 2*PI. - * Optional, can be left undefined. - * @param {Number} vertical The vertical rotation, between 0 and 0.5*PI - * if vertical=0.5*PI, the graph is shown from the - * top. Optional, can be left undefined. + * Order items by their end date. If they have no end date, their start date + * is used. + * @param {Item[]} items */ - Camera.prototype.setArmRotation = function(horizontal, vertical) { - if (horizontal !== undefined) { - this.armRotation.horizontal = horizontal; - } - - if (vertical !== undefined) { - this.armRotation.vertical = vertical; - if (this.armRotation.vertical < 0) this.armRotation.vertical = 0; - if (this.armRotation.vertical > 0.5*Math.PI) this.armRotation.vertical = 0.5*Math.PI; - } + exports.orderByEnd = function(items) { + items.sort(function (a, b) { + var aTime = ('end' in a.data) ? a.data.end : a.data.start, + bTime = ('end' in b.data) ? b.data.end : b.data.start; - if (horizontal !== undefined || vertical !== undefined) { - this.calculateCameraOrientation(); - } + return aTime - bTime; + }); }; /** - * Retrieve the current arm rotation - * @return {object} An object with parameters horizontal and vertical + * Adjust vertical positions of the items such that they don't overlap each + * other. + * @param {Item[]} items + * All visible items + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * Margins between items and between items and the axis. + * @param {boolean} [force=false] + * If true, all items will be repositioned. If false (default), only + * items having a top===null will be re-stacked */ - Camera.prototype.getArmRotation = function() { - var rot = {}; - rot.horizontal = this.armRotation.horizontal; - rot.vertical = this.armRotation.vertical; - - return rot; - }; + exports.stack = function(items, margin, force) { + var i, iMax; - /** - * Set the (normalized) length of the camera arm. - * @param {Number} length A length between 0.71 and 5.0 - */ - Camera.prototype.setArmLength = function(length) { - if (length === undefined) - return; + if (force) { + // reset top position of all items + for (i = 0, iMax = items.length; i < iMax; i++) { + items[i].top = null; + } + } - this.armLength = length; + // calculate new, non-overlapping positions + for (i = 0, iMax = items.length; i < iMax; i++) { + var item = items[i]; + if (item.stack && item.top === null) { + // initialize top position + item.top = margin.axis; - // Radius must be larger than the corner of the graph, - // which has a distance of sqrt(0.5^2+0.5^2) = 0.71 from the center of the - // graph - if (this.armLength < 0.71) this.armLength = 0.71; - if (this.armLength > 5.0) this.armLength = 5.0; + do { + // TODO: optimize checking for overlap. when there is a gap without items, + // you only need to check for items from the next item on, not from zero + var collidingItem = null; + for (var j = 0, jj = items.length; j < jj; j++) { + var other = items[j]; + if (other.top !== null && other !== item && other.stack && exports.collision(item, other, margin.item)) { + collidingItem = other; + break; + } + } - this.calculateCameraOrientation(); + if (collidingItem != null) { + // There is a collision. Reposition the items above the colliding element + item.top = collidingItem.top + collidingItem.height + margin.item.vertical; + } + } while (collidingItem); + } + } }; - /** - * Retrieve the arm length - * @return {Number} length - */ - Camera.prototype.getArmLength = function() { - return this.armLength; - }; /** - * Retrieve the camera location - * @return {Point3d} cameraLocation + * Adjust vertical positions of the items without stacking them + * @param {Item[]} items + * All visible items + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * Margins between items and between items and the axis. */ - Camera.prototype.getCameraLocation = function() { - return this.cameraLocation; - }; + exports.nostack = function(items, margin, subgroups) { + var i, iMax, newTop; - /** - * Retrieve the camera rotation - * @return {Point3d} cameraRotation - */ - Camera.prototype.getCameraRotation = function() { - return this.cameraRotation; + // reset top position of all items + for (i = 0, iMax = items.length; i < iMax; i++) { + if (items[i].data.subgroup !== undefined) { + newTop = margin.axis; + for (var subgroup in subgroups) { + if (subgroups.hasOwnProperty(subgroup)) { + if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroups[items[i].data.subgroup].index) { + newTop += subgroups[subgroup].height + margin.item.vertical; + } + } + } + items[i].top = newTop; + } + else { + items[i].top = margin.axis; + } + } }; /** - * Calculate the location and rotation of the camera based on the - * position and orientation of the camera arm + * Test if the two provided items collide + * The items must have parameters left, width, top, and height. + * @param {Item} a The first item + * @param {Item} b The second item + * @param {{horizontal: number, vertical: number}} margin + * An object containing a horizontal and vertical + * minimum required margin. + * @return {boolean} true if a and b collide, else false */ - Camera.prototype.calculateCameraOrientation = function() { - // calculate location of the camera - this.cameraLocation.x = this.armLocation.x - this.armLength * Math.sin(this.armRotation.horizontal) * Math.cos(this.armRotation.vertical); - this.cameraLocation.y = this.armLocation.y - this.armLength * Math.cos(this.armRotation.horizontal) * Math.cos(this.armRotation.vertical); - this.cameraLocation.z = this.armLocation.z + this.armLength * Math.sin(this.armRotation.vertical); - - // calculate rotation of the camera - this.cameraRotation.x = Math.PI/2 - this.armRotation.vertical; - this.cameraRotation.y = 0; - this.cameraRotation.z = -this.armRotation.horizontal; + exports.collision = function(a, b, margin) { + return ((a.left - margin.horizontal + EPSILON) < (b.left + b.width) && + (a.left + a.width + margin.horizontal - EPSILON) > b.left && + (a.top - margin.vertical + EPSILON) < (b.top + b.height) && + (a.top + a.height + margin.vertical - EPSILON) > b.top); }; - module.exports = Camera; /***/ }, -/* 15 */ +/* 19 */ /***/ function(module, exports, __webpack_require__) { - var DataView = __webpack_require__(9); + var moment = __webpack_require__(44); + var DateUtil = __webpack_require__(15); + var util = __webpack_require__(1); /** - * @class Filter + * @constructor TimeStep + * The class TimeStep is an iterator for dates. You provide a start date and an + * end date. The class itself determines the best scale (step size) based on the + * provided start Date, end Date, and minimumStep. * - * @param {DataSet} data The google data table - * @param {Number} column The index of the column to be filtered - * @param {Graph} graph The graph + * If minimumStep is provided, the step size is chosen as close as possible + * to the minimumStep but larger than minimumStep. If minimumStep is not + * provided, the scale is set to 1 DAY. + * The minimumStep should correspond with the onscreen size of about 6 characters + * + * Alternatively, you can set a scale by hand. + * After creation, you can initialize the class by executing first(). Then you + * can iterate from the start date to the end date via next(). You can check if + * the end date is reached with the function hasNext(). After each step, you can + * retrieve the current date via getCurrent(). + * The TimeStep has scales ranging from milliseconds, seconds, minutes, hours, + * days, to years. + * + * Version: 1.2 + * + * @param {Date} [start] The start date, for example new Date(2010, 9, 21) + * or new Date(2010, 9, 21, 23, 45, 00) + * @param {Date} [end] The end date + * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds */ - function Filter (data, column, graph) { - this.data = data; - this.column = column; - this.graph = graph; // the parent graph - - this.index = undefined; - this.value = undefined; + function TimeStep(start, end, minimumStep, hiddenDates) { + // variables + this.current = new Date(); + this._start = new Date(); + this._end = new Date(); - // read all distinct values and select the first one - this.values = graph.getDistinctValues(data.get(), this.column); + this.autoScale = true; + this.scale = 'day'; + this.step = 1; - // sort both numeric and string values correctly - this.values.sort(function (a, b) { - return a > b ? 1 : a < b ? -1 : 0; - }); + // initialize the range + this.setRange(start, end, minimumStep); - if (this.values.length > 0) { - this.selectValue(0); + // hidden Dates options + this.switchedDay = false; + this.switchedMonth = false; + this.switchedYear = false; + this.hiddenDates = hiddenDates; + if (hiddenDates === undefined) { + this.hiddenDates = []; } - // create an array with the filtered datapoints. this will be loaded afterwards - this.dataPoints = []; - - this.loaded = false; - this.onLoadCallback = undefined; + this.format = TimeStep.FORMAT; // default formatting + } - if (graph.animationPreload) { - this.loaded = false; - this.loadInBackground(); - } - else { - this.loaded = true; + // Time formatting + TimeStep.FORMAT = { + minorLabels: { + millisecond:'SSS', + second: 's', + minute: 'HH:mm', + hour: 'HH:mm', + weekday: 'ddd D', + day: 'D', + month: 'MMM', + year: 'YYYY' + }, + majorLabels: { + millisecond:'HH:mm:ss', + second: 'D MMMM HH:mm', + minute: 'ddd D MMMM', + hour: 'ddd D MMMM', + weekday: 'MMMM YYYY', + day: 'MMMM YYYY', + month: 'YYYY', + year: '' } }; - /** - * Return the label - * @return {string} label + * Set custom formatting for the minor an major labels of the TimeStep. + * Both `minorLabels` and `majorLabels` are an Object with properties: + * 'millisecond, 'second, 'minute', 'hour', 'weekday, 'day, 'month, 'year'. + * @param {{minorLabels: Object, majorLabels: Object}} format */ - Filter.prototype.isLoaded = function() { - return this.loaded; + TimeStep.prototype.setFormat = function (format) { + var defaultFormat = util.deepExtend({}, TimeStep.FORMAT); + this.format = util.deepExtend(defaultFormat, format); }; - /** - * Return the loaded progress - * @return {Number} percentage between 0 and 100 + * Set a new range + * If minimumStep is provided, the step size is chosen as close as possible + * to the minimumStep but larger than minimumStep. If minimumStep is not + * provided, the scale is set to 1 DAY. + * The minimumStep should correspond with the onscreen size of about 6 characters + * @param {Date} [start] The start date and time. + * @param {Date} [end] The end date and time. + * @param {int} [minimumStep] Optional. Minimum step size in milliseconds */ - Filter.prototype.getLoadedProgress = function() { - var len = this.values.length; - - var i = 0; - while (this.dataPoints[i]) { - i++; + TimeStep.prototype.setRange = function(start, end, minimumStep) { + if (!(start instanceof Date) || !(end instanceof Date)) { + throw "No legal start or end date in method setRange"; } - return Math.round(i / len * 100); - }; - - - /** - * Return the label - * @return {string} label - */ - Filter.prototype.getLabel = function() { - return this.graph.filterLabel; - }; - + this._start = (start != undefined) ? new Date(start.valueOf()) : new Date(); + this._end = (end != undefined) ? new Date(end.valueOf()) : new Date(); - /** - * Return the columnIndex of the filter - * @return {Number} columnIndex - */ - Filter.prototype.getColumn = function() { - return this.column; + if (this.autoScale) { + this.setMinimumStep(minimumStep); + } }; /** - * Return the currently selected value. Returns undefined if there is no selection - * @return {*} value + * Set the range iterator to the start date. */ - Filter.prototype.getSelectedValue = function() { - if (this.index === undefined) - return undefined; - - return this.values[this.index]; + TimeStep.prototype.first = function() { + this.current = new Date(this._start.valueOf()); + this.roundToMinor(); }; /** - * Retrieve all values of the filter - * @return {Array} values + * Round the current date to the first minor date value + * This must be executed once when the current date is set to start Date */ - Filter.prototype.getValues = function() { - return this.values; - }; - - /** - * Retrieve one value of the filter - * @param {Number} index - * @return {*} value - */ - Filter.prototype.getValue = function(index) { - if (index >= this.values.length) - throw 'Error: index out of range'; - - return this.values[index]; - }; - - - /** - * Retrieve the (filtered) dataPoints for the currently selected filter index - * @param {Number} [index] (optional) - * @return {Array} dataPoints - */ - Filter.prototype._getDataPoints = function(index) { - if (index === undefined) - index = this.index; - - if (index === undefined) - return []; - - var dataPoints; - if (this.dataPoints[index]) { - dataPoints = this.dataPoints[index]; + TimeStep.prototype.roundToMinor = function() { + // round to floor + // IMPORTANT: we have no breaks in this switch! (this is no bug) + // noinspection FallThroughInSwitchStatementJS + switch (this.scale) { + case 'year': + this.current.setFullYear(this.step * Math.floor(this.current.getFullYear() / this.step)); + this.current.setMonth(0); + case 'month': this.current.setDate(1); + case 'day': // intentional fall through + case 'weekday': this.current.setHours(0); + case 'hour': this.current.setMinutes(0); + case 'minute': this.current.setSeconds(0); + case 'second': this.current.setMilliseconds(0); + //case 'millisecond': // nothing to do for milliseconds } - else { - var f = {}; - f.column = this.column; - f.value = this.values[index]; - - var dataView = new DataView(this.data,{filter: function (item) {return (item[f.column] == f.value);}}).get(); - dataPoints = this.graph._getDataPoints(dataView); - this.dataPoints[index] = dataPoints; + if (this.step != 1) { + // round down to the first minor value that is a multiple of the current step size + switch (this.scale) { + case 'millisecond': this.current.setMilliseconds(this.current.getMilliseconds() - this.current.getMilliseconds() % this.step); break; + case 'second': this.current.setSeconds(this.current.getSeconds() - this.current.getSeconds() % this.step); break; + case 'minute': this.current.setMinutes(this.current.getMinutes() - this.current.getMinutes() % this.step); break; + case 'hour': this.current.setHours(this.current.getHours() - this.current.getHours() % this.step); break; + case 'weekday': // intentional fall through + case 'day': this.current.setDate((this.current.getDate()-1) - (this.current.getDate()-1) % this.step + 1); break; + case 'month': this.current.setMonth(this.current.getMonth() - this.current.getMonth() % this.step); break; + case 'year': this.current.setFullYear(this.current.getFullYear() - this.current.getFullYear() % this.step); break; + default: break; + } } - - return dataPoints; - }; - - - - /** - * Set a callback function when the filter is fully loaded. - */ - Filter.prototype.setOnLoadCallback = function(callback) { - this.onLoadCallback = callback; }; - /** - * Add a value to the list with available values for this filter - * No double entries will be created. - * @param {Number} index + * Check if the there is a next step + * @return {boolean} true if the current date has not passed the end date */ - Filter.prototype.selectValue = function(index) { - if (index >= this.values.length) - throw 'Error: index out of range'; - - this.index = index; - this.value = this.values[index]; + TimeStep.prototype.hasNext = function () { + return (this.current.valueOf() <= this._end.valueOf()); }; /** - * Load all filtered rows in the background one by one - * Start this method without providing an index! + * Do the next step */ - Filter.prototype.loadInBackground = function(index) { - if (index === undefined) - index = 0; - - var frame = this.graph.frame; + TimeStep.prototype.next = function() { + var prev = this.current.valueOf(); - if (index < this.values.length) { - var dataPointsTemp = this._getDataPoints(index); - //this.graph.redrawInfo(); // TODO: not neat + // Two cases, needed to prevent issues with switching daylight savings + // (end of March and end of October) + if (this.current.getMonth() < 6) { + switch (this.scale) { + case 'millisecond': - // create a progress box - if (frame.progress === undefined) { - frame.progress = document.createElement('DIV'); - frame.progress.style.position = 'absolute'; - frame.progress.style.color = 'gray'; - frame.appendChild(frame.progress); + this.current = new Date(this.current.valueOf() + this.step); break; + case 'second': this.current = new Date(this.current.valueOf() + this.step * 1000); break; + case 'minute': this.current = new Date(this.current.valueOf() + this.step * 1000 * 60); break; + case 'hour': + this.current = new Date(this.current.valueOf() + this.step * 1000 * 60 * 60); + // in case of skipping an hour for daylight savings, adjust the hour again (else you get: 0h 5h 9h ... instead of 0h 4h 8h ...) + var h = this.current.getHours(); + this.current.setHours(h - (h % this.step)); + break; + case 'weekday': // intentional fall through + case 'day': this.current.setDate(this.current.getDate() + this.step); break; + case 'month': this.current.setMonth(this.current.getMonth() + this.step); break; + case 'year': this.current.setFullYear(this.current.getFullYear() + this.step); break; + default: break; } - var progress = this.getLoadedProgress(); - frame.progress.innerHTML = 'Loading animation... ' + progress + '%'; - // TODO: this is no nice solution... - frame.progress.style.bottom = 60 + 'px'; // TODO: use height of slider - frame.progress.style.left = 10 + 'px'; - - var me = this; - setTimeout(function() {me.loadInBackground(index+1);}, 10); - this.loaded = false; } else { - this.loaded = true; - - // remove the progress box - if (frame.progress !== undefined) { - frame.removeChild(frame.progress); - frame.progress = undefined; + switch (this.scale) { + case 'millisecond': this.current = new Date(this.current.valueOf() + this.step); break; + case 'second': this.current.setSeconds(this.current.getSeconds() + this.step); break; + case 'minute': this.current.setMinutes(this.current.getMinutes() + this.step); break; + case 'hour': this.current.setHours(this.current.getHours() + this.step); break; + case 'weekday': // intentional fall through + case 'day': this.current.setDate(this.current.getDate() + this.step); break; + case 'month': this.current.setMonth(this.current.getMonth() + this.step); break; + case 'year': this.current.setFullYear(this.current.getFullYear() + this.step); break; + default: break; } - - if (this.onLoadCallback) - this.onLoadCallback(); } - }; - - module.exports = Filter; - - -/***/ }, -/* 16 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - /** - * @constructor Slider - * - * An html slider control with start/stop/prev/next buttons - * @param {Element} container The element where the slider will be created - * @param {Object} options Available options: - * {boolean} visible If true (default) the - * slider is visible. - */ - function Slider(container, options) { - if (container === undefined) { - throw 'Error: No container element defined'; + if (this.step != 1) { + // round down to the correct major value + switch (this.scale) { + case 'millisecond': if(this.current.getMilliseconds() < this.step) this.current.setMilliseconds(0); break; + case 'second': if(this.current.getSeconds() < this.step) this.current.setSeconds(0); break; + case 'minute': if(this.current.getMinutes() < this.step) this.current.setMinutes(0); break; + case 'hour': if(this.current.getHours() < this.step) this.current.setHours(0); break; + case 'weekday': // intentional fall through + case 'day': if(this.current.getDate() < this.step+1) this.current.setDate(1); break; + case 'month': if(this.current.getMonth() < this.step) this.current.setMonth(0); break; + case 'year': break; // nothing to do for year + default: break; + } } - this.container = container; - this.visible = (options && options.visible != undefined) ? options.visible : true; - if (this.visible) { - this.frame = document.createElement('DIV'); - //this.frame.style.backgroundColor = '#E5E5E5'; - this.frame.style.width = '100%'; - this.frame.style.position = 'relative'; - this.container.appendChild(this.frame); - - this.frame.prev = document.createElement('INPUT'); - this.frame.prev.type = 'BUTTON'; - this.frame.prev.value = 'Prev'; - this.frame.appendChild(this.frame.prev); - - this.frame.play = document.createElement('INPUT'); - this.frame.play.type = 'BUTTON'; - this.frame.play.value = 'Play'; - this.frame.appendChild(this.frame.play); - - this.frame.next = document.createElement('INPUT'); - this.frame.next.type = 'BUTTON'; - this.frame.next.value = 'Next'; - this.frame.appendChild(this.frame.next); - - this.frame.bar = document.createElement('INPUT'); - this.frame.bar.type = 'BUTTON'; - this.frame.bar.style.position = 'absolute'; - this.frame.bar.style.border = '1px solid red'; - this.frame.bar.style.width = '100px'; - this.frame.bar.style.height = '6px'; - this.frame.bar.style.borderRadius = '2px'; - this.frame.bar.style.MozBorderRadius = '2px'; - this.frame.bar.style.border = '1px solid #7F7F7F'; - this.frame.bar.style.backgroundColor = '#E5E5E5'; - this.frame.appendChild(this.frame.bar); - - this.frame.slide = document.createElement('INPUT'); - this.frame.slide.type = 'BUTTON'; - this.frame.slide.style.margin = '0px'; - this.frame.slide.value = ' '; - this.frame.slide.style.position = 'relative'; - this.frame.slide.style.left = '-100px'; - this.frame.appendChild(this.frame.slide); - - // create events - var me = this; - this.frame.slide.onmousedown = function (event) {me._onMouseDown(event);}; - this.frame.prev.onclick = function (event) {me.prev(event);}; - this.frame.play.onclick = function (event) {me.togglePlay(event);}; - this.frame.next.onclick = function (event) {me.next(event);}; + // safety mechanism: if current time is still unchanged, move to the end + if (this.current.valueOf() == prev) { + this.current = new Date(this._end.valueOf()); } - this.onChangeCallback = undefined; - - this.values = []; - this.index = undefined; + DateUtil.stepOverHiddenDates(this, prev); + }; - this.playTimeout = undefined; - this.playInterval = 1000; // milliseconds - this.playLoop = true; - } /** - * Select the previous index + * Get the current datetime + * @return {Date} current The current date */ - Slider.prototype.prev = function() { - var index = this.getIndex(); - if (index > 0) { - index--; - this.setIndex(index); - } + TimeStep.prototype.getCurrent = function() { + return this.current; }; /** - * Select the next index + * Set a custom scale. Autoscaling will be disabled. + * For example setScale('minute', 5) will result + * in minor steps of 5 minutes, and major steps of an hour. + * + * @param {{scale: string, step: number}} params + * An object containing two properties: + * - A string 'scale'. Choose from 'millisecond', 'second', + * 'minute', 'hour', 'weekday, 'day, 'month, 'year'. + * - A number 'step'. A step size, by default 1. + * Choose for example 1, 2, 5, or 10. */ - Slider.prototype.next = function() { - var index = this.getIndex(); - if (index < this.values.length - 1) { - index++; - this.setIndex(index); + TimeStep.prototype.setScale = function(params) { + if (params && typeof params.scale == 'string') { + this.scale = params.scale; + this.step = params.step > 0 ? params.step : 1; + this.autoScale = false; } }; /** - * Select the next index + * Enable or disable autoscaling + * @param {boolean} enable If true, autoascaling is set true */ - Slider.prototype.playNext = function() { - var start = new Date(); - - var index = this.getIndex(); - if (index < this.values.length - 1) { - index++; - this.setIndex(index); - } - else if (this.playLoop) { - // jump to the start - index = 0; - this.setIndex(index); - } - - var end = new Date(); - var diff = (end - start); - - // calculate how much time it to to set the index and to execute the callback - // function. - var interval = Math.max(this.playInterval - diff, 0); - // document.title = diff // TODO: cleanup - - var me = this; - this.playTimeout = setTimeout(function() {me.playNext();}, interval); + TimeStep.prototype.setAutoScale = function (enable) { + this.autoScale = enable; }; + /** - * Toggle start or stop playing + * Automatically determine the scale that bests fits the provided minimum step + * @param {Number} [minimumStep] The minimum step size in milliseconds */ - Slider.prototype.togglePlay = function() { - if (this.playTimeout === undefined) { - this.play(); - } else { - this.stop(); + TimeStep.prototype.setMinimumStep = function(minimumStep) { + if (minimumStep == undefined) { + return; } - }; - /** - * Start playing - */ - Slider.prototype.play = function() { - // Test whether already playing - if (this.playTimeout) return; + //var b = asc + ds; - this.playNext(); + var stepYear = (1000 * 60 * 60 * 24 * 30 * 12); + var stepMonth = (1000 * 60 * 60 * 24 * 30); + var stepDay = (1000 * 60 * 60 * 24); + var stepHour = (1000 * 60 * 60); + var stepMinute = (1000 * 60); + var stepSecond = (1000); + var stepMillisecond= (1); - if (this.frame) { - this.frame.play.value = 'Stop'; - } + // find the smallest step that is larger than the provided minimumStep + if (stepYear*1000 > minimumStep) {this.scale = 'year'; this.step = 1000;} + if (stepYear*500 > minimumStep) {this.scale = 'year'; this.step = 500;} + if (stepYear*100 > minimumStep) {this.scale = 'year'; this.step = 100;} + if (stepYear*50 > minimumStep) {this.scale = 'year'; this.step = 50;} + if (stepYear*10 > minimumStep) {this.scale = 'year'; this.step = 10;} + if (stepYear*5 > minimumStep) {this.scale = 'year'; this.step = 5;} + if (stepYear > minimumStep) {this.scale = 'year'; this.step = 1;} + if (stepMonth*3 > minimumStep) {this.scale = 'month'; this.step = 3;} + if (stepMonth > minimumStep) {this.scale = 'month'; this.step = 1;} + if (stepDay*5 > minimumStep) {this.scale = 'day'; this.step = 5;} + if (stepDay*2 > minimumStep) {this.scale = 'day'; this.step = 2;} + if (stepDay > minimumStep) {this.scale = 'day'; this.step = 1;} + if (stepDay/2 > minimumStep) {this.scale = 'weekday'; this.step = 1;} + if (stepHour*4 > minimumStep) {this.scale = 'hour'; this.step = 4;} + if (stepHour > minimumStep) {this.scale = 'hour'; this.step = 1;} + if (stepMinute*15 > minimumStep) {this.scale = 'minute'; this.step = 15;} + if (stepMinute*10 > minimumStep) {this.scale = 'minute'; this.step = 10;} + if (stepMinute*5 > minimumStep) {this.scale = 'minute'; this.step = 5;} + if (stepMinute > minimumStep) {this.scale = 'minute'; this.step = 1;} + if (stepSecond*15 > minimumStep) {this.scale = 'second'; this.step = 15;} + if (stepSecond*10 > minimumStep) {this.scale = 'second'; this.step = 10;} + if (stepSecond*5 > minimumStep) {this.scale = 'second'; this.step = 5;} + if (stepSecond > minimumStep) {this.scale = 'second'; this.step = 1;} + if (stepMillisecond*200 > minimumStep) {this.scale = 'millisecond'; this.step = 200;} + if (stepMillisecond*100 > minimumStep) {this.scale = 'millisecond'; this.step = 100;} + if (stepMillisecond*50 > minimumStep) {this.scale = 'millisecond'; this.step = 50;} + if (stepMillisecond*10 > minimumStep) {this.scale = 'millisecond'; this.step = 10;} + if (stepMillisecond*5 > minimumStep) {this.scale = 'millisecond'; this.step = 5;} + if (stepMillisecond > minimumStep) {this.scale = 'millisecond'; this.step = 1;} }; /** - * Stop playing + * Snap a date to a rounded value. + * The snap intervals are dependent on the current scale and step. + * Static function + * @param {Date} date the date to be snapped. + * @param {string} scale Current scale, can be 'millisecond', 'second', + * 'minute', 'hour', 'weekday, 'day, 'month, 'year'. + * @param {number} step Current step (1, 2, 4, 5, ... + * @return {Date} snappedDate */ - Slider.prototype.stop = function() { - clearInterval(this.playTimeout); - this.playTimeout = undefined; + TimeStep.snap = function(date, scale, step) { + var clone = new Date(date.valueOf()); - if (this.frame) { - this.frame.play.value = 'Play'; + if (scale == 'year') { + var year = clone.getFullYear() + Math.round(clone.getMonth() / 12); + clone.setFullYear(Math.round(year / step) * step); + clone.setMonth(0); + clone.setDate(0); + clone.setHours(0); + clone.setMinutes(0); + clone.setSeconds(0); + clone.setMilliseconds(0); } - }; - - /** - * Set a callback function which will be triggered when the value of the - * slider bar has changed. - */ - Slider.prototype.setOnChangeCallback = function(callback) { - this.onChangeCallback = callback; - }; + else if (scale == 'month') { + if (clone.getDate() > 15) { + clone.setDate(1); + clone.setMonth(clone.getMonth() + 1); + // important: first set Date to 1, after that change the month. + } + else { + clone.setDate(1); + } - /** - * Set the interval for playing the list - * @param {Number} interval The interval in milliseconds - */ - Slider.prototype.setPlayInterval = function(interval) { - this.playInterval = interval; + clone.setHours(0); + clone.setMinutes(0); + clone.setSeconds(0); + clone.setMilliseconds(0); + } + else if (scale == 'day') { + //noinspection FallthroughInSwitchStatementJS + switch (step) { + case 5: + case 2: + clone.setHours(Math.round(clone.getHours() / 24) * 24); break; + default: + clone.setHours(Math.round(clone.getHours() / 12) * 12); break; + } + clone.setMinutes(0); + clone.setSeconds(0); + clone.setMilliseconds(0); + } + else if (scale == 'weekday') { + //noinspection FallthroughInSwitchStatementJS + switch (step) { + case 5: + case 2: + clone.setHours(Math.round(clone.getHours() / 12) * 12); break; + default: + clone.setHours(Math.round(clone.getHours() / 6) * 6); break; + } + clone.setMinutes(0); + clone.setSeconds(0); + clone.setMilliseconds(0); + } + else if (scale == 'hour') { + switch (step) { + case 4: + clone.setMinutes(Math.round(clone.getMinutes() / 60) * 60); break; + default: + clone.setMinutes(Math.round(clone.getMinutes() / 30) * 30); break; + } + clone.setSeconds(0); + clone.setMilliseconds(0); + } else if (scale == 'minute') { + //noinspection FallthroughInSwitchStatementJS + switch (step) { + case 15: + case 10: + clone.setMinutes(Math.round(clone.getMinutes() / 5) * 5); + clone.setSeconds(0); + break; + case 5: + clone.setSeconds(Math.round(clone.getSeconds() / 60) * 60); break; + default: + clone.setSeconds(Math.round(clone.getSeconds() / 30) * 30); break; + } + clone.setMilliseconds(0); + } + else if (scale == 'second') { + //noinspection FallthroughInSwitchStatementJS + switch (step) { + case 15: + case 10: + clone.setSeconds(Math.round(clone.getSeconds() / 5) * 5); + clone.setMilliseconds(0); + break; + case 5: + clone.setMilliseconds(Math.round(clone.getMilliseconds() / 1000) * 1000); break; + default: + clone.setMilliseconds(Math.round(clone.getMilliseconds() / 500) * 500); break; + } + } + else if (scale == 'millisecond') { + var _step = step > 5 ? step / 2 : 1; + clone.setMilliseconds(Math.round(clone.getMilliseconds() / _step) * _step); + } + + return clone; }; /** - * Retrieve the current play interval - * @return {Number} interval The interval in milliseconds + * Check if the current value is a major value (for example when the step + * is DAY, a major value is each first day of the MONTH) + * @return {boolean} true if current date is major, else false. */ - Slider.prototype.getPlayInterval = function(interval) { - return this.playInterval; - }; - - /** - * Set looping on or off - * @pararm {boolean} doLoop If true, the slider will jump to the start when - * the end is passed, and will jump to the end - * when the start is passed. - */ - Slider.prototype.setPlayLoop = function(doLoop) { - this.playLoop = doLoop; - }; - - - /** - * Execute the onchange callback function - */ - Slider.prototype.onChange = function() { - if (this.onChangeCallback !== undefined) { - this.onChangeCallback(); + TimeStep.prototype.isMajor = function() { + if (this.switchedYear == true) { + this.switchedYear = false; + switch (this.scale) { + case 'year': + case 'month': + case 'weekday': + case 'day': + case 'hour': + case 'minute': + case 'second': + case 'millisecond': + return true; + default: + return false; + } + } + else if (this.switchedMonth == true) { + this.switchedMonth = false; + switch (this.scale) { + case 'weekday': + case 'day': + case 'hour': + case 'minute': + case 'second': + case 'millisecond': + return true; + default: + return false; + } + } + else if (this.switchedDay == true) { + this.switchedDay = false; + switch (this.scale) { + case 'millisecond': + case 'second': + case 'minute': + case 'hour': + return true; + default: + return false; + } } - }; - - /** - * redraw the slider on the correct place - */ - Slider.prototype.redraw = function() { - if (this.frame) { - // resize the bar - this.frame.bar.style.top = (this.frame.clientHeight/2 - - this.frame.bar.offsetHeight/2) + 'px'; - this.frame.bar.style.width = (this.frame.clientWidth - - this.frame.prev.clientWidth - - this.frame.play.clientWidth - - this.frame.next.clientWidth - 30) + 'px'; - // position the slider button - var left = this.indexToLeft(this.index); - this.frame.slide.style.left = (left) + 'px'; + switch (this.scale) { + case 'millisecond': + return (this.current.getMilliseconds() == 0); + case 'second': + return (this.current.getSeconds() == 0); + case 'minute': + return (this.current.getHours() == 0) && (this.current.getMinutes() == 0); + case 'hour': + return (this.current.getHours() == 0); + case 'weekday': // intentional fall through + case 'day': + return (this.current.getDate() == 1); + case 'month': + return (this.current.getMonth() == 0); + case 'year': + return false; + default: + return false; } }; /** - * Set the list with values for the slider - * @param {Array} values A javascript array with values (any type) + * Returns formatted text for the minor axislabel, depending on the current + * date and the scale. For example when scale is MINUTE, the current time is + * formatted as "hh:mm". + * @param {Date} [date] custom date. if not provided, current date is taken */ - Slider.prototype.setValues = function(values) { - this.values = values; + TimeStep.prototype.getLabelMinor = function(date) { + if (date == undefined) { + date = this.current; + } - if (this.values.length > 0) - this.setIndex(0); - else - this.index = undefined; + var format = this.format.minorLabels[this.scale]; + return (format && format.length > 0) ? moment(date).format(format) : ''; }; /** - * Select a value by its index - * @param {Number} index + * Returns formatted text for the major axis label, depending on the current + * date and the scale. For example when scale is MINUTE, the major scale is + * hours, and the hour will be formatted as "hh". + * @param {Date} [date] custom date. if not provided, current date is taken */ - Slider.prototype.setIndex = function(index) { - if (index < this.values.length) { - this.index = index; - - this.redraw(); - this.onChange(); - } - else { - throw 'Error: index out of range'; + TimeStep.prototype.getLabelMajor = function(date) { + if (date == undefined) { + date = this.current; } - }; - - /** - * retrieve the index of the currently selected vaue - * @return {Number} index - */ - Slider.prototype.getIndex = function() { - return this.index; - }; - - /** - * retrieve the currently selected value - * @return {*} value - */ - Slider.prototype.get = function() { - return this.values[this.index]; + var format = this.format.majorLabels[this.scale]; + return (format && format.length > 0) ? moment(date).format(format) : ''; }; + TimeStep.prototype.getClassName = function() { + var m = moment(this.current); + var date = m.locale ? m.locale('en') : m.lang('en'); // old versions of moment have .lang() function + var step = this.step; - Slider.prototype._onMouseDown = function(event) { - // only react on left mouse button down - var leftButtonDown = event.which ? (event.which === 1) : (event.button === 1); - if (!leftButtonDown) return; - - this.startClientX = event.clientX; - this.startSlideX = parseFloat(this.frame.slide.style.left); - - this.frame.style.cursor = 'move'; - - // add event listeners to handle moving the contents - // we store the function onmousemove and onmouseup in the graph, so we can - // remove the eventlisteners lateron in the function mouseUp() - var me = this; - this.onmousemove = function (event) {me._onMouseMove(event);}; - this.onmouseup = function (event) {me._onMouseUp(event);}; - util.addEventListener(document, 'mousemove', this.onmousemove); - util.addEventListener(document, 'mouseup', this.onmouseup); - util.preventDefault(event); - }; + function even(value) { + return (value / step % 2 == 0) ? ' even' : ' odd'; + } + function today(date) { + if (date.isSame(new Date(), 'day')) { + return ' today'; + } + if (date.isSame(moment().add(1, 'day'), 'day')) { + return ' tomorrow'; + } + if (date.isSame(moment().add(-1, 'day'), 'day')) { + return ' yesterday'; + } + return ''; + } - Slider.prototype.leftToIndex = function (left) { - var width = parseFloat(this.frame.bar.style.width) - - this.frame.slide.clientWidth - 10; - var x = left - 3; + function currentWeek(date) { + return date.isSame(new Date(), 'week') ? ' current-week' : ''; + } - var index = Math.round(x / width * (this.values.length-1)); - if (index < 0) index = 0; - if (index > this.values.length-1) index = this.values.length-1; + function currentMonth(date) { + return date.isSame(new Date(), 'month') ? ' current-month' : ''; + } - return index; - }; + function currentYear(date) { + return date.isSame(new Date(), 'year') ? ' current-year' : ''; + } - Slider.prototype.indexToLeft = function (index) { - var width = parseFloat(this.frame.bar.style.width) - - this.frame.slide.clientWidth - 10; + switch (this.scale) { + case 'millisecond': + return even(date.milliseconds()).trim(); - var x = index / (this.values.length-1) * width; - var left = x + 3; + case 'second': + return even(date.seconds()).trim(); - return left; - }; + case 'minute': + return even(date.minutes()).trim(); + case 'hour': + var hours = date.hours(); + if (this.step == 4) { + hours = hours + '-' + (hours + 4); + } + return hours + 'h' + today(date) + even(date.hours()); + case 'weekday': + return date.format('dddd').toLowerCase() + + today(date) + currentWeek(date) + even(date.date()); - Slider.prototype._onMouseMove = function (event) { - var diff = event.clientX - this.startClientX; - var x = this.startSlideX + diff; + case 'day': + var day = date.date(); + var month = date.format('MMMM').toLowerCase(); + return 'day' + day + ' ' + month + currentMonth(date) + even(day - 1); - var index = this.leftToIndex(x); + case 'month': + return date.format('MMMM').toLowerCase() + + currentMonth(date) + even(date.month()); - this.setIndex(index); + case 'year': + var year = date.year(); + return 'year' + year + currentYear(date)+ even(year); - util.preventDefault(); + default: + return ''; + } }; + module.exports = TimeStep; - Slider.prototype._onMouseUp = function (event) { - this.frame.style.cursor = 'auto'; - // remove event listeners - util.removeEventListener(document, 'mousemove', this.onmousemove); - util.removeEventListener(document, 'mouseup', this.onmouseup); +/***/ }, +/* 20 */ +/***/ function(module, exports, __webpack_require__) { - util.preventDefault(); - }; + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); - module.exports = Slider; + /** + * @constructor Item + * @param {Object} data Object containing (optional) parameters type, + * start, end, content, group, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} options Configuration options + * // TODO: describe available options + */ + function Item (data, conversion, options) { + this.id = null; + this.parent = null; + this.data = data; + this.dom = null; + this.conversion = conversion || {}; + this.options = options || {}; + this.selected = false; + this.displayed = false; + this.dirty = true; -/***/ }, -/* 17 */ -/***/ function(module, exports, __webpack_require__) { + this.top = null; + this.left = null; + this.width = null; + this.height = null; + } + + Item.prototype.stack = true; /** - * @prototype StepNumber - * The class StepNumber is an iterator for Numbers. You provide a start and end - * value, and a best step size. StepNumber itself rounds to fixed values and - * a finds the step that best fits the provided step. - * - * If prettyStep is true, the step size is chosen as close as possible to the - * provided step, but being a round value like 1, 2, 5, 10, 20, 50, .... - * - * Example usage: - * var step = new StepNumber(0, 10, 2.5, true); - * step.start(); - * while (!step.end()) { - * alert(step.getCurrent()); - * step.next(); - * } - * - * Version: 1.0 - * - * @param {Number} start The start value - * @param {Number} end The end value - * @param {Number} step Optional. Step size. Must be a positive value. - * @param {boolean} prettyStep Optional. If true, the step size is rounded - * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...) + * Select current item */ - function StepNumber(start, end, step, prettyStep) { - // set default values - this._start = 0; - this._end = 0; - this._step = 1; - this.prettyStep = true; - this.precision = 5; - - this._current = 0; - this.setRange(start, end, step, prettyStep); + Item.prototype.select = function() { + this.selected = true; + this.dirty = true; + if (this.displayed) this.redraw(); }; /** - * Set a new range: start, end and step. - * - * @param {Number} start The start value - * @param {Number} end The end value - * @param {Number} step Optional. Step size. Must be a positive value. - * @param {boolean} prettyStep Optional. If true, the step size is rounded - * To a pretty step size (like 1, 2, 5, 10, 20, 50, ...) + * Unselect current item */ - StepNumber.prototype.setRange = function(start, end, step, prettyStep) { - this._start = start ? start : 0; - this._end = end ? end : 0; - - this.setStep(step, prettyStep); + Item.prototype.unselect = function() { + this.selected = false; + this.dirty = true; + if (this.displayed) this.redraw(); }; /** - * Set a new step size - * @param {Number} step New step size. Must be a positive value - * @param {boolean} prettyStep Optional. If true, the provided step is rounded - * to a pretty step size (like 1, 2, 5, 10, 20, 50, ...) + * Set data for the item. Existing data will be updated. The id should not + * be changed. When the item is displayed, it will be redrawn immediately. + * @param {Object} data */ - StepNumber.prototype.setStep = function(step, prettyStep) { - if (step === undefined || step <= 0) - return; - - if (prettyStep !== undefined) - this.prettyStep = prettyStep; - - if (this.prettyStep === true) - this._step = StepNumber.calculatePrettyStep(step); - else - this._step = step; + Item.prototype.setData = function(data) { + this.data = data; + this.dirty = true; + if (this.displayed) this.redraw(); }; /** - * Calculate a nice step size, closest to the desired step size. - * Returns a value in one of the ranges 1*10^n, 2*10^n, or 5*10^n, where n is an - * integer Number. For example 1, 2, 5, 10, 20, 50, etc... - * @param {Number} step Desired step size - * @return {Number} Nice step size + * Set a parent for the item + * @param {ItemSet | Group} parent */ - StepNumber.calculatePrettyStep = function (step) { - var log10 = function (x) {return Math.log(x) / Math.LN10;}; - - // try three steps (multiple of 1, 2, or 5 - var step1 = Math.pow(10, Math.round(log10(step))), - step2 = 2 * Math.pow(10, Math.round(log10(step / 2))), - step5 = 5 * Math.pow(10, Math.round(log10(step / 5))); - - // choose the best step (closest to minimum step) - var prettyStep = step1; - if (Math.abs(step2 - step) <= Math.abs(prettyStep - step)) prettyStep = step2; - if (Math.abs(step5 - step) <= Math.abs(prettyStep - step)) prettyStep = step5; - - // for safety - if (prettyStep <= 0) { - prettyStep = 1; + Item.prototype.setParent = function(parent) { + if (this.displayed) { + this.hide(); + this.parent = parent; + if (this.parent) { + this.show(); + } } + else { + this.parent = parent; + } + }; - return prettyStep; + /** + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible + */ + Item.prototype.isVisible = function(range) { + // Should be implemented by Item implementations + return false; }; /** - * returns the current value of the step - * @return {Number} current value + * Show the Item in the DOM (when not already visible) + * @return {Boolean} changed */ - StepNumber.prototype.getCurrent = function () { - return parseFloat(this._current.toPrecision(this.precision)); + Item.prototype.show = function() { + return false; }; /** - * returns the current step size - * @return {Number} current step size + * Hide the Item from the DOM (when visible) + * @return {Boolean} changed */ - StepNumber.prototype.getStep = function () { - return this._step; + Item.prototype.hide = function() { + return false; }; /** - * Set the current value to the largest value smaller than start, which - * is a multiple of the step size + * Repaint the item */ - StepNumber.prototype.start = function() { - this._current = this._start - this._start % this._step; + Item.prototype.redraw = function() { + // should be implemented by the item }; /** - * Do a step, add the step size to the current value + * Reposition the Item horizontally */ - StepNumber.prototype.next = function () { - this._current += this._step; + Item.prototype.repositionX = function() { + // should be implemented by the item }; /** - * Returns true whether the end is reached - * @return {boolean} True if the current value has passed the end value. + * Reposition the Item vertically */ - StepNumber.prototype.end = function () { - return (this._current > this._end); + Item.prototype.repositionY = function() { + // should be implemented by the item }; - module.exports = StepNumber; + /** + * Repaint a delete button on the top right of the item when the item is selected + * @param {HTMLElement} anchor + * @protected + */ + Item.prototype._repaintDeleteButton = function (anchor) { + if (this.selected && this.options.editable.remove && !this.dom.deleteButton) { + // create and show button + var me = this; + var deleteButton = document.createElement('div'); + deleteButton.className = 'delete'; + deleteButton.title = 'Delete this item'; -/***/ }, -/* 18 */ -/***/ function(module, exports, __webpack_require__) { + Hammer(deleteButton, { + preventDefault: true + }).on('tap', function (event) { + me.parent.removeFromDataSet(me); + event.stopPropagation(); + }); - var Emitter = __webpack_require__(11); - var Hammer = __webpack_require__(19); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(9); - var Range = __webpack_require__(21); - var Core = __webpack_require__(25); - var TimeAxis = __webpack_require__(35); - var CurrentTime = __webpack_require__(40); - var CustomTime = __webpack_require__(38); - var ItemSet = __webpack_require__(26); + anchor.appendChild(deleteButton); + this.dom.deleteButton = deleteButton; + } + else if (!this.selected && this.dom.deleteButton) { + // remove button + if (this.dom.deleteButton.parentNode) { + this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton); + } + this.dom.deleteButton = null; + } + }; /** - * Create a timeline visualization - * @param {HTMLElement} container - * @param {vis.DataSet | vis.DataView | Array | google.visualization.DataTable} [items] - * @param {vis.DataSet | vis.DataView | Array | google.visualization.DataTable} [groups] - * @param {Object} [options] See Timeline.setOptions for the available options. - * @constructor - * @extends Core + * Set HTML contents for the item + * @param {Element} element HTML element to fill with the contents + * @private */ - function Timeline (container, items, groups, options) { - if (!(this instanceof Timeline)) { - throw new SyntaxError('Constructor must be called with the new operator'); + Item.prototype._updateContents = function (element) { + var content; + if (this.options.template) { + var itemData = this.parent.itemSet.itemsData.get(this.id); // get a clone of the data from the dataset + content = this.options.template(itemData); } - - // if the third element is options, the forth is groups (optionally); - if (!(Array.isArray(groups) || groups instanceof DataSet || groups instanceof DataView) && groups instanceof Object) { - var forthArgument = options; - options = groups; - groups = forthArgument; + else { + content = this.data.content; } - var me = this; - this.defaultOptions = { - start: null, - end: null, - - autoResize: true, - - orientation: 'bottom', // 'bottom', 'top', or 'both' - width: null, - height: null, - maxHeight: null, - minHeight: null - }; - this.options = util.deepExtend({}, this.defaultOptions); - - // Create the DOM, props, and emitter - this._create(container); - - // all components listed here will be repainted automatically - this.components = []; - - this.body = { - dom: this.dom, - domProps: this.props, - emitter: { - on: this.on.bind(this), - off: this.off.bind(this), - emit: this.emit.bind(this) - }, - hiddenDates: [], - util: { - getScale: function () { - return me.timeAxis.step.scale; - }, - getStep: function () { - return me.timeAxis.step.step; - }, - - toScreen: me._toScreen.bind(me), - toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width - toTime: me._toTime.bind(me), - toGlobalTime : me._toGlobalTime.bind(me) + if(content !== this.content) { + // only replace the content when changed + if (content instanceof Element) { + element.innerHTML = ''; + element.appendChild(content); + } + else if (content != undefined) { + element.innerHTML = content; + } + else { + if (!(this.data.type == 'background' && this.data.content === undefined)) { + throw new Error('Property "content" missing in item ' + this.id); + } } - }; - - // range - this.range = new Range(this.body); - this.components.push(this.range); - this.body.range = this.range; - - // time axis - this.timeAxis = new TimeAxis(this.body); - this.timeAxis2 = null; // used in case of orientation option 'both' - this.components.push(this.timeAxis); - - // current time bar - this.currentTime = new CurrentTime(this.body); - this.components.push(this.currentTime); - - // custom time bar - // Note: time bar will be attached in this.setOptions when selected - this.customTime = new CustomTime(this.body); - this.components.push(this.customTime); - - // item set - this.itemSet = new ItemSet(this.body); - this.components.push(this.itemSet); - - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet - - // apply options - if (options) { - this.setOptions(options); - } - // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! - if (groups) { - this.setGroups(groups); + this.content = content; } + }; - // create itemset - if (items) { - this.setItems(items); + /** + * Set HTML contents for the item + * @param {Element} element HTML element to fill with the contents + * @private + */ + Item.prototype._updateTitle = function (element) { + if (this.data.title != null) { + element.title = this.data.title || ''; } else { - this._redraw(); + element.removeAttribute('title'); } - } - - // Extend the functionality from Core - Timeline.prototype = new Core(); - - /** - * Force a redraw. The size of all items will be recalculated. - * Can be useful to manually redraw when option autoResize=false and the window - * has been resized, or when the items CSS has been changed. - */ - Timeline.prototype.redraw = function() { - this.itemSet && this.itemSet.markDirty({refreshItems: true}); - this._redraw(); }; /** - * Set items - * @param {vis.DataSet | Array | google.visualization.DataTable | null} items + * Process dataAttributes timeline option and set as data- attributes on dom.content + * @param {Element} element HTML element to which the attributes will be attached + * @private */ - Timeline.prototype.setItems = function(items) { - var initialLoad = (this.itemsData == null); + Item.prototype._updateDataAttributes = function(element) { + if (this.options.dataAttributes && this.options.dataAttributes.length > 0) { + var attributes = []; - // convert to type DataSet when needed - var newDataSet; - if (!items) { - newDataSet = null; - } - else if (items instanceof DataSet || items instanceof DataView) { - newDataSet = items; - } - else { - // turn an array into a dataset - newDataSet = new DataSet(items, { - type: { - start: 'Date', - end: 'Date' - } - }); - } + if (Array.isArray(this.options.dataAttributes)) { + attributes = this.options.dataAttributes; + } + else if (this.options.dataAttributes == 'all') { + attributes = Object.keys(this.data); + } + else { + return; + } - // set items - this.itemsData = newDataSet; - this.itemSet && this.itemSet.setItems(newDataSet); + for (var i = 0; i < attributes.length; i++) { + var name = attributes[i]; + var value = this.data[name]; - if (initialLoad) { - if (this.options.start != undefined || this.options.end != undefined) { - if (this.options.start == undefined || this.options.end == undefined) { - var dataRange = this._getDataRange(); + if (value != null) { + element.setAttribute('data-' + name, value); + } + else { + element.removeAttribute('data-' + name); } - - var start = this.options.start != undefined ? this.options.start : dataRange.start; - var end = this.options.end != undefined ? this.options.end : dataRange.end; - - this.setWindow(start, end, {animate: false}); - } - else { - this.fit({animate: false}); } } }; /** - * Set groups - * @param {vis.DataSet | Array | google.visualization.DataTable} groups + * Update custom styles of the element + * @param element + * @private */ - Timeline.prototype.setGroups = function(groups) { - // convert to type DataSet when needed - var newDataSet; - if (!groups) { - newDataSet = null; - } - else if (groups instanceof DataSet || groups instanceof DataView) { - newDataSet = groups; - } - else { - // turn an array into a dataset - newDataSet = new DataSet(groups); + Item.prototype._updateStyle = function(element) { + // remove old styles + if (this.style) { + util.removeCssText(element, this.style); + this.style = null; } - this.groupsData = newDataSet; - this.itemSet.setGroups(newDataSet); + // append new styles + if (this.data.style) { + util.addCssText(element, this.data.style); + this.style = this.data.style; + } }; + module.exports = Item; + + +/***/ }, +/* 21 */ +/***/ function(module, exports, __webpack_require__) { + + var Hammer = __webpack_require__(45); + var Item = __webpack_require__(20); + var BackgroundGroup = __webpack_require__(31); + var RangeItem = __webpack_require__(24); + /** - * Set selected items by their id. Replaces the current selection - * Unknown id's are silently ignored. - * @param {string[] | string} [ids] An array with zero or more id's of the items to be - * selected. If ids is an empty array, all items will be - * unselected. - * @param {Object} [options] Available options: - * `focus: boolean` - * If true, focus will be set to the selected item(s) - * `animate: boolean | number` - * If true (default), the range is animated - * smoothly to the new window. - * If a number, the number is taken as duration - * for the animation. Default duration is 500 ms. - * Only applicable when option focus is true. + * @constructor BackgroundItem + * @extends Item + * @param {Object} data Object containing parameters start, end + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe options */ - Timeline.prototype.setSelection = function(ids, options) { - this.itemSet && this.itemSet.setSelection(ids); + // TODO: implement support for the BackgroundItem just having a start, then being displayed as a sort of an annotation + function BackgroundItem (data, conversion, options) { + this.props = { + content: { + width: 0 + } + }; + this.overflow = false; // if contents can overflow (css styling), this flag is set to true - if (options && options.focus) { - this.focus(ids, options); + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data.id); + } + if (data.end == undefined) { + throw new Error('Property "end" missing in item ' + data.id); + } } - }; + + Item.call(this, data, conversion, options); + + this.emptyContent = false; + } + + BackgroundItem.prototype = new Item (null, null, null); + + BackgroundItem.prototype.baseClassName = 'item background'; + BackgroundItem.prototype.stack = false; /** - * Get the selected items by their id - * @return {Array} ids The ids of the selected items + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible */ - Timeline.prototype.getSelection = function() { - return this.itemSet && this.itemSet.getSelection() || []; + BackgroundItem.prototype.isVisible = function(range) { + // determine visibility + return (this.data.start < range.end) && (this.data.end > range.start); }; /** - * Adjust the visible window such that the selected item (or multiple items) - * are centered on screen. - * @param {String | String[]} id An item id or array with item ids - * @param {Object} [options] Available options: - * `animate: boolean | number` - * If true (default), the range is animated - * smoothly to the new window. - * If a number, the number is taken as duration - * for the animation. Default duration is 500 ms. - * Only applicable when option focus is true + * Repaint the item */ - Timeline.prototype.focus = function(id, options) { - if (!this.itemsData || id == undefined) return; + BackgroundItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - var ids = Array.isArray(id) ? id : [id]; + // background box + dom.box = document.createElement('div'); + // className is updated in redraw() - // get the specified item(s) - var itemsData = this.itemsData.getDataSet().get(ids, { - type: { - start: 'Date', - end: 'Date' - } - }); + // contents box + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); - // calculate minimum start and maximum end of specified items - var start = null; - var end = null; - itemsData.forEach(function (itemData) { - var s = itemData.start.valueOf(); - var e = 'end' in itemData ? itemData.end.valueOf() : itemData.start.valueOf(); + // Note: we do NOT attach this item as attribute to the DOM, + // such that background items cannot be selected + //dom.box['timeline-item'] = this; - if (start === null || s < start) { - start = s; - } + this.dirty = true; + } - if (end === null || e > end) { - end = e; + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + if (!dom.box.parentNode) { + var background = this.parent.dom.background; + if (!background) { + throw new Error('Cannot redraw item: parent has no background container element'); } - }); + background.appendChild(dom.box); + } + this.displayed = true; - if (start !== null && end !== null) { - // calculate the new middle and interval for the window - var middle = (start + end) / 2; - var interval = Math.max((this.range.end - this.range.start), (end - start) * 1.1); + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.content); + this._updateDataAttributes(this.dom.content); + this._updateStyle(this.dom.box); - var animate = (options && options.animate !== undefined) ? options.animate : true; - this.range.setRange(middle - interval / 2, middle + interval / 2, animate); + // update class + var className = (this.data.className ? (' ' + this.data.className) : '') + + (this.selected ? ' selected' : ''); + dom.box.className = this.baseClassName + className; + + // determine from css whether this box has overflow + this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; + + // recalculate size + this.props.content.width = this.dom.content.offsetWidth; + this.height = 0; // set height zero, so this item will be ignored when stacking items + + this.dirty = false; } }; /** - * Get the data range of the item set. - * @returns {{min: Date, max: Date}} range A range with a start and end Date. - * When no minimum is found, min==null - * When no maximum is found, max==null + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. */ - Timeline.prototype.getItemRange = function() { - // calculate min from start filed - var dataset = this.itemsData.getDataSet(), - min = null, - max = null; + BackgroundItem.prototype.show = RangeItem.prototype.show; - if (dataset) { - // calculate the minimum value of the field 'start' - var minItem = dataset.min('start'); - min = minItem ? util.convert(minItem.start, 'Date').valueOf() : null; - // Note: we convert first to Date and then to number because else - // a conversion from ISODate to Number will fail + /** + * Hide the item from the DOM (when visible) + * @return {Boolean} changed + */ + BackgroundItem.prototype.hide = RangeItem.prototype.hide; - // calculate maximum value of fields 'start' and 'end' - var maxStartItem = dataset.max('start'); - if (maxStartItem) { - max = util.convert(maxStartItem.start, 'Date').valueOf(); - } - var maxEndItem = dataset.max('end'); - if (maxEndItem) { - if (max == null) { - max = util.convert(maxEndItem.end, 'Date').valueOf(); + /** + * Reposition the item horizontally + * @Override + */ + BackgroundItem.prototype.repositionX = RangeItem.prototype.repositionX; + + /** + * Reposition the item vertically + * @Override + */ + BackgroundItem.prototype.repositionY = function(margin) { + var onTop = this.options.orientation === 'top'; + this.dom.content.style.top = onTop ? '' : '0'; + this.dom.content.style.bottom = onTop ? '0' : ''; + var height; + + // special positioning for subgroups + if (this.data.subgroup !== undefined) { + var itemSubgroup = this.data.subgroup; + var subgroups = this.parent.subgroups; + var subgroupIndex = subgroups[itemSubgroup].index; + // if the orientation is top, we need to take the difference in height into account. + if (onTop == true) { + // the first subgroup will have to account for the distance from the top to the first item. + height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; + height += subgroupIndex == 0 ? margin.axis - 0.5*margin.item.vertical : 0; + var newTop = this.parent.top; + for (var subgroup in subgroups) { + if (subgroups.hasOwnProperty(subgroup)) { + if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroupIndex) { + newTop += subgroups[subgroup].height + margin.item.vertical; + } + } } - else { - max = Math.max(max, util.convert(maxEndItem.end, 'Date').valueOf()); + + // the others will have to be offset downwards with this same distance. + newTop += subgroupIndex != 0 ? margin.axis - 0.5 * margin.item.vertical : 0; + this.dom.box.style.top = newTop + 'px'; + this.dom.box.style.bottom = ''; + } + // and when the orientation is bottom: + else { + var newTop = this.parent.top; + for (var subgroup in subgroups) { + if (subgroups.hasOwnProperty(subgroup)) { + if (subgroups[subgroup].visible == true && subgroups[subgroup].index > subgroupIndex) { + newTop += subgroups[subgroup].height + margin.item.vertical; + } + } } + height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; + this.dom.box.style.top = newTop + 'px'; + this.dom.box.style.bottom = ''; } } - - return { - min: (min != null) ? new Date(min) : null, - max: (max != null) ? new Date(max) : null - }; + // and in the case of no subgroups: + else { + // we want backgrounds with groups to only show in groups. + if (this.parent instanceof BackgroundGroup) { + // if the item is not in a group: + height = Math.max(this.parent.height, + this.parent.itemSet.body.domProps.center.height, + this.parent.itemSet.body.domProps.centerContainer.height); + this.dom.box.style.top = onTop ? '0' : ''; + this.dom.box.style.bottom = onTop ? '' : '0'; + } + else { + height = this.parent.height; + // same alignment for items when orientation is top or bottom + this.dom.box.style.top = this.parent.top + 'px'; + this.dom.box.style.bottom = ''; + } + } + this.dom.box.style.height = height + 'px'; }; - - module.exports = Timeline; + module.exports = BackgroundItem; /***/ }, -/* 19 */ +/* 22 */ /***/ function(module, exports, __webpack_require__) { - // Only load hammer.js when in a browser environment - // (loading hammer.js in a node.js environment gives errors) - if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(20); - } - else { - module.exports = function () { - throw Error('hammer.js is only available in a browser, not in node.js.'); + var Item = __webpack_require__(20); + var util = __webpack_require__(1); + + /** + * @constructor BoxItem + * @extends Item + * @param {Object} data Object containing parameters start + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe available options + */ + function BoxItem (data, conversion, options) { + this.props = { + dot: { + width: 0, + height: 0 + }, + line: { + width: 0, + height: 0 + } + }; + + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data); + } } + + Item.call(this, data, conversion, options); } - -/***/ }, -/* 20 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 - * http://eightmedia.github.io/hammer.js - * - * Copyright (c) 2014 Jorik Tangelder ; - * Licensed under the MIT license */ - - (function(window, undefined) { - 'use strict'; - - /** - * @main - * @module hammer - * - * @class Hammer - * @static - */ + BoxItem.prototype = new Item (null, null, null); /** - * Hammer, use this to create instances - * ```` - * var hammertime = new Hammer(myElement); - * ```` - * - * @method Hammer - * @param {HTMLElement} element - * @param {Object} [options={}] - * @return {Hammer.Instance} + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible */ - var Hammer = function Hammer(element, options) { - return new Hammer.Instance(element, options || {}); + BoxItem.prototype.isVisible = function(range) { + // determine visibility + // TODO: account for the real width of the item. Right now we just add 1/4 to the window + var interval = (range.end - range.start) / 4; + return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); }; /** - * version, as defined in package.json - * the value will be set at each build - * @property VERSION - * @final - * @type {String} + * Repaint the item */ - Hammer.VERSION = '1.1.3'; + BoxItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - /** - * default settings. - * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled - * by setting it's name (like `swipe`) to false. - * You can set the defaults for all instances by changing this object before creating an instance. - * @example - * ```` - * Hammer.defaults.drag = false; - * Hammer.defaults.behavior.touchAction = 'pan-y'; - * delete Hammer.defaults.behavior.userSelect; - * ```` - * @property defaults - * @type {Object} - */ - Hammer.defaults = { - /** - * this setting object adds styles and attributes to the element to prevent the browser from doing - * its native behavior. The css properties are auto prefixed for the browsers when needed. - * @property defaults.behavior - * @type {Object} - */ - behavior: { - /** - * Disables text selection to improve the dragging gesture. When the value is `none` it also sets - * `onselectstart=false` for IE on the element. Mainly for desktop browsers. - * @property defaults.behavior.userSelect - * @type {String} - * @default 'none' - */ - userSelect: 'none', + // create main box + dom.box = document.createElement('DIV'); - /** - * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). - * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. - * @property defaults.behavior.touchAction - * @type {String} - * @default: 'pan-y' - */ - touchAction: 'pan-y', + // contents box (inside the background box). used for making margins + dom.content = document.createElement('DIV'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @property defaults.behavior.touchCallout - * @type {String} - * @default 'none' - */ - touchCallout: 'none', + // line to axis + dom.line = document.createElement('DIV'); + dom.line.className = 'line'; - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', + // dot on axis + dom.dot = document.createElement('DIV'); + dom.dot.className = 'dot'; - /** - * Specifies that an entire element should be draggable instead of its contents. - * Mainly for desktop browsers. - * @property defaults.behavior.userDrag - * @type {String} - * @default 'none' - */ - userDrag: 'none', + // attach this item as attribute + dom.box['timeline-item'] = this; - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. - * - * If you don't specify an alpha value, Safari on iPhone applies a default alpha value - * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). - * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. - * @property defaults.behavior.tapHighlightColor - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: 'rgba(0,0,0,0)' - } + this.dirty = true; + } + + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + if (!dom.box.parentNode) { + var foreground = this.parent.dom.foreground; + if (!foreground) throw new Error('Cannot redraw item: parent has no foreground container element'); + foreground.appendChild(dom.box); + } + if (!dom.line.parentNode) { + var background = this.parent.dom.background; + if (!background) throw new Error('Cannot redraw item: parent has no background container element'); + background.appendChild(dom.line); + } + if (!dom.dot.parentNode) { + var axis = this.parent.dom.axis; + if (!background) throw new Error('Cannot redraw item: parent has no axis container element'); + axis.appendChild(dom.dot); + } + this.displayed = true; + + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.box); + this._updateDataAttributes(this.dom.box); + this._updateStyle(this.dom.box); + + // update class + var className = (this.data.className? ' ' + this.data.className : '') + + (this.selected ? ' selected' : ''); + dom.box.className = 'item box' + className; + dom.line.className = 'item line' + className; + dom.dot.className = 'item dot' + className; + + // recalculate size + this.props.dot.height = dom.dot.offsetHeight; + this.props.dot.width = dom.dot.offsetWidth; + this.props.line.width = dom.line.offsetWidth; + this.width = dom.box.offsetWidth; + this.height = dom.box.offsetHeight; + + this.dirty = false; + } + + this._repaintDeleteButton(dom.box); }; /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document + * Show the item in the DOM (when not already displayed). The items DOM will + * be created when needed. */ - Hammer.DOCUMENT = document; + BoxItem.prototype.show = function() { + if (!this.displayed) { + this.redraw(); + } + }; /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} + * Hide the item from the DOM (when visible) */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + BoxItem.prototype.hide = function() { + if (this.displayed) { + var dom = this.dom; - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} - */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + if (dom.box.parentNode) dom.box.parentNode.removeChild(dom.box); + if (dom.line.parentNode) dom.line.parentNode.removeChild(dom.line); + if (dom.dot.parentNode) dom.dot.parentNode.removeChild(dom.dot); - /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} - */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + this.displayed = false; + } + }; /** - * detect if we want to support mouseevents at all - * @property NO_MOUSEEVENTS - * @type {Boolean} + * Reposition the item horizontally + * @Override */ - Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; + BoxItem.prototype.repositionX = function() { + var start = this.conversion.toScreen(this.data.start); + var align = this.options.align; + var left; + var box = this.dom.box; + var line = this.dom.line; + var dot = this.dom.dot; - /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 - */ - Hammer.CALCULATE_INTERVAL = 25; + // calculate left position of the box + if (align == 'right') { + this.left = start - this.width; + } + else if (align == 'left') { + this.left = start; + } + else { + // default or 'center' + this.left = start - this.width / 2; + } - /** - * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` - * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) - * @property EVENT_TYPES - * @private - * @writeOnce - * @type {Object} - */ - var EVENT_TYPES = {}; + // reposition box + box.style.left = this.left + 'px'; - /** - * direction strings, for safe comparisons - * @property DIRECTION_DOWN|LEFT|UP|RIGHT - * @final - * @type {String} - * @default 'down' 'left' 'up' 'right' - */ - var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; - var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; - var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; - var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + // reposition line + line.style.left = (start - this.props.line.width / 2) + 'px'; - /** - * pointertype strings, for safe comparisons - * @property POINTER_MOUSE|TOUCH|PEN - * @final - * @type {String} - * @default 'mouse' 'touch' 'pen' - */ - var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; - var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; - var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; + // reposition dot + dot.style.left = (start - this.props.dot.width / 2) + 'px'; + }; /** - * eventtypes - * @property EVENT_START|MOVE|END|RELEASE|TOUCH - * @final - * @type {String} - * @default 'start' 'change' 'move' 'end' 'release' 'touch' + * Reposition the item vertically + * @Override */ - var EVENT_START = Hammer.EVENT_START = 'start'; - var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; - var EVENT_END = Hammer.EVENT_END = 'end'; - var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; - var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + BoxItem.prototype.repositionY = function() { + var orientation = this.options.orientation; + var box = this.dom.box; + var line = this.dom.line; + var dot = this.dom.dot; - /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false - */ - Hammer.READY = false; + if (orientation == 'top') { + box.style.top = (this.top || 0) + 'px'; - /** - * plugins namespace - * @property plugins - * @type {Object} - */ - Hammer.plugins = Hammer.plugins || {}; + line.style.top = '0'; + line.style.height = (this.parent.top + this.top + 1) + 'px'; + line.style.bottom = ''; + } + else { // orientation 'bottom' + var itemSetHeight = this.parent.itemSet.props.height; // TODO: this is nasty + var lineHeight = itemSetHeight - this.parent.top - this.parent.height + this.top; - /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} - */ - Hammer.gestures = Hammer.gestures || {}; + box.style.top = (this.parent.height - this.top - this.height || 0) + 'px'; + line.style.top = (itemSetHeight - lineHeight) + 'px'; + line.style.bottom = '0'; + } + + dot.style.top = (-this.props.dot.height / 2) + 'px'; + }; + + module.exports = BoxItem; + + +/***/ }, +/* 23 */ +/***/ function(module, exports, __webpack_require__) { + + var Item = __webpack_require__(20); /** - * setup events to detect gestures on the document - * this function is called when creating an new instance - * @private + * @constructor PointItem + * @extends Item + * @param {Object} data Object containing parameters start + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe available options */ - function setup() { - if(Hammer.READY) { - return; + function PointItem (data, conversion, options) { + this.props = { + dot: { + top: 0, + width: 0, + height: 0 + }, + content: { + height: 0, + marginLeft: 0 } + }; - // find what eventtypes we add listeners to - Event.determineEventTypes(); + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data); + } + } - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); + Item.call(this, data, conversion, options); + } - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + PointItem.prototype = new Item (null, null, null); - // Hammer is ready...! - Hammer.READY = true; - } + /** + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible + */ + PointItem.prototype.isVisible = function(range) { + // determine visibility + // TODO: account for the real width of the item. Right now we just add 1/4 to the window + var interval = (range.end - range.start) / 4; + return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); + }; /** - * @module hammer - * - * @class Utils - * @static + * Repaint the item */ - var Utils = Hammer.utils = { - /** - * extend method, could also be used for cloning when `dest` is an empty object. - * changes the dest object - * @method extend - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge=false] do a merge - * @return {Object} dest - */ - extend: function extend(dest, src, merge) { - for(var key in src) { - if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { - continue; - } - dest[key] = src[key]; - } - return dest; - }, + PointItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - /** - * simple addEventListener wrapper - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - on: function on(element, type, handler) { - element.addEventListener(type, handler, false); - }, + // background box + dom.point = document.createElement('div'); + // className is updated in redraw() - /** - * simple removeEventListener wrapper - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - off: function off(element, type, handler) { - element.removeEventListener(type, handler, false); - }, + // contents box, right from the dot + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.point.appendChild(dom.content); - /** - * forEach over arrays and objects - * @method each - * @param {Object|Array} obj - * @param {Function} iterator - * @param {any} iterator.item - * @param {Number} iterator.index - * @param {Object|Array} iterator.obj the source object - * @param {Object} context value to use as `this` in the iterator - */ - each: function each(obj, iterator, context) { - var i, len; + // dot at start + dom.dot = document.createElement('div'); + dom.point.appendChild(dom.dot); - // native forEach on arrays - if('forEach' in obj) { - obj.forEach(iterator, context); - // arrays - } else if(obj.length !== undefined) { - for(i = 0, len = obj.length; i < len; i++) { - if(iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - // objects - } else { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - } - }, + // attach this item as attribute + dom.point['timeline-item'] = this; - /** - * find if a string contains the string using indexOf - * @method inStr - * @param {String} src - * @param {String} find - * @return {Boolean} found - */ - inStr: function inStr(src, find) { - return src.indexOf(find) > -1; - }, - - /** - * find if a array contains the object using indexOf or a simple polyfill - * @method inArray - * @param {String} src - * @param {String} find - * @return {Boolean|Number} false when not found, or the index - */ - inArray: function inArray(src, find) { - if(src.indexOf) { - var index = src.indexOf(find); - return (index === -1) ? false : index; - } else { - for(var i = 0, len = src.length; i < len; i++) { - if(src[i] === find) { - return i; - } - } - return false; - } - }, + this.dirty = true; + } - /** - * convert an array-like object (`arguments`, `touchlist`) to an array - * @method toArray - * @param {Object} obj - * @return {Array} - */ - toArray: function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - }, + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + if (!dom.point.parentNode) { + var foreground = this.parent.dom.foreground; + if (!foreground) { + throw new Error('Cannot redraw item: parent has no foreground container element'); + } + foreground.appendChild(dom.point); + } + this.displayed = true; - /** - * find if a node is in the given parent - * @method hasParent - * @param {HTMLElement} node - * @param {HTMLElement} parent - * @return {Boolean} found - */ - hasParent: function hasParent(node, parent) { - while(node) { - if(node == parent) { - return true; - } - node = node.parentNode; - } - return false; - }, + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.point); + this._updateDataAttributes(this.dom.point); + this._updateStyle(this.dom.point); - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; + // update class + var className = (this.data.className? ' ' + this.data.className : '') + + (this.selected ? ' selected' : ''); + dom.point.className = 'item point' + className; + dom.dot.className = 'item dot' + className; - // no need to loop when only one touch - if(touches.length === 1) { - return { - pageX: touches[0].pageX, - pageY: touches[0].pageY, - clientX: touches[0].clientX, - clientY: touches[0].clientY - }; - } + // recalculate size + this.width = dom.point.offsetWidth; + this.height = dom.point.offsetHeight; + this.props.dot.width = dom.dot.offsetWidth; + this.props.dot.height = dom.dot.offsetHeight; + this.props.content.height = dom.content.offsetHeight; - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); + // resize contents + dom.content.style.marginLeft = 2 * this.props.dot.width + 'px'; + //dom.content.style.marginRight = ... + 'px'; // TODO: margin right - return { - pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, - pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, - clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, - clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 - }; - }, + dom.dot.style.top = ((this.height - this.props.dot.height) / 2) + 'px'; + dom.dot.style.left = (this.props.dot.width / 2) + 'px'; - /** - * calculate the velocity between two points. unit is in px per ms. - * @method getVelocity - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - * @return {Object} velocity `x` and `y` - */ - getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { - return { - x: Math.abs(deltaX / deltaTime) || 0, - y: Math.abs(deltaY / deltaTime) || 0 - }; - }, + this.dirty = false; + } - /** - * calculate the angle between two coordinates - * @method getAngle - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {Number} angle - */ - getAngle: function getAngle(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + this._repaintDeleteButton(dom.point); + }; - return Math.atan2(y, x) * 180 / Math.PI; - }, + /** + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. + */ + PointItem.prototype.show = function() { + if (!this.displayed) { + this.redraw(); + } + }; - /** - * do a small comparision to get the direction between two touches. - * @method getDirection - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` - */ - getDirection: function getDirection(touch1, touch2) { - var x = Math.abs(touch1.clientX - touch2.clientX), - y = Math.abs(touch1.clientY - touch2.clientY); + /** + * Hide the item from the DOM (when visible) + */ + PointItem.prototype.hide = function() { + if (this.displayed) { + if (this.dom.point.parentNode) { + this.dom.point.parentNode.removeChild(this.dom.point); + } - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, + this.displayed = false; + } + }; - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + /** + * Reposition the item horizontally + * @Override + */ + PointItem.prototype.repositionX = function() { + var start = this.conversion.toScreen(this.data.start); - return Math.sqrt((x * x) + (y * y)); - }, + this.left = start - this.props.dot.width; - /** - * calculate the scale factor between two touchLists - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @method getScale - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} scale - */ - getScale: function getScale(start, end) { - // need two fingers... - if(start.length >= 2 && end.length >= 2) { - return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); - } - return 1; - }, + // reposition point + this.dom.point.style.left = this.left + 'px'; + }; - /** - * calculate the rotation degrees between two touchLists - * @method getRotation - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} rotation - */ - getRotation: function getRotation(start, end) { - // need two fingers - if(start.length >= 2 && end.length >= 2) { - return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); - } - return 0; - }, + /** + * Reposition the item vertically + * @Override + */ + PointItem.prototype.repositionY = function() { + var orientation = this.options.orientation, + point = this.dom.point; - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, + if (orientation == 'top') { + point.style.top = this.top + 'px'; + } + else { + point.style.top = (this.parent.height - this.top - this.height) + 'px'; + } + }; - /** - * set css properties with their prefixes - * @param {HTMLElement} element - * @param {String} prop - * @param {String} value - * @param {Boolean} [toggle=true] - * @return {Boolean} - */ - setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { - var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; - prop = Utils.toCamelCase(prop); + module.exports = PointItem; - for(var i = 0; i < prefixes.length; i++) { - var p = prop; - // prefixes - if(prefixes[i]) { - p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); - } - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; - } - } - }, +/***/ }, +/* 24 */ +/***/ function(module, exports, __webpack_require__) { - /** - * toggle browser default behavior by setting css properties. - * `userSelect='none'` also sets `element.onselectstart` to false - * `userDrag='none'` also sets `element.ondragstart` to false - * - * @method toggleBehavior - * @param {HtmlElement} element - * @param {Object} props - * @param {Boolean} [toggle=true] - */ - toggleBehavior: function toggleBehavior(element, props, toggle) { - if(!props || !element || !element.style) { - return; - } + var Hammer = __webpack_require__(45); + var Item = __webpack_require__(20); - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); + /** + * @constructor RangeItem + * @extends Item + * @param {Object} data Object containing parameters start, end + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe options + */ + function RangeItem (data, conversion, options) { + this.props = { + content: { + width: 0 + } + }; + this.overflow = false; // if contents can overflow (css styling), this flag is set to true - var falseFn = toggle && function() { - return false; - }; + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data.id); + } + if (data.end == undefined) { + throw new Error('Property "end" missing in item ' + data.id); + } + } - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; - } - }, + Item.call(this, data, conversion, options); + } - /** - * convert a string with underscores to camelCase - * so prevent_default becomes preventDefault - * @param {String} str - * @return {String} camelCaseStr - */ - toCamelCase: function toCamelCase(str) { - return str.replace(/[_-]([a-z])/g, function(s) { - return s[1].toUpperCase(); - }); - } - }; + RangeItem.prototype = new Item (null, null, null); + RangeItem.prototype.baseClassName = 'item range'; /** - * @module hammer + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible */ + RangeItem.prototype.isVisible = function(range) { + // determine visibility + return (this.data.start < range.end) && (this.data.end > range.start); + }; + /** - * @class Event - * @static + * Repaint the item */ - var Event = Hammer.event = { - /** - * when touch events have been fired, this is true - * this is used to stop mouse events - * @property prevent_mouseevents - * @private - * @type {Boolean} - */ - preventMouseEvents: false, + RangeItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, + // background box + dom.box = document.createElement('div'); + // className is updated in redraw() - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, + // contents box + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); - /** - * simple event binder with a hook and support for multiple types - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - on: function on(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.on(element, type, handler); - hook && hook(type); - }); - }, + // attach this item as attribute + dom.box['timeline-item'] = this; - /** - * simple event unbinder with a hook and support for multiple types - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - off: function off(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.off(element, type, handler); - hook && hook(type); - }); - }, + this.dirty = true; + } - /** - * the core touch event handler. - * this finds out if we should to detect gestures - * @method onTouch - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Function} handler - * @return onTouchHandler {Function} the core event handler - */ - onTouch: function onTouch(element, eventType, handler) { - var self = this; + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + if (!dom.box.parentNode) { + var foreground = this.parent.dom.foreground; + if (!foreground) { + throw new Error('Cannot redraw item: parent has no foreground container element'); + } + foreground.appendChild(dom.box); + } + this.displayed = true; - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.box); + this._updateDataAttributes(this.dom.box); + this._updateStyle(this.dom.box); - // if we are in a mouseevent, but there has been a touchevent triggered in this session - // we want to do nothing. simply break out of the event. - if(isMouse && self.preventMouseEvents) { - return; + // update class + var className = (this.data.className ? (' ' + this.data.className) : '') + + (this.selected ? ' selected' : ''); + dom.box.className = this.baseClassName + className; - // mousebutton must be down - } else if(isMouse && eventType == EVENT_START && ev.button === 0) { - self.preventMouseEvents = false; - self.shouldDetect = true; - } else if(isPointer && eventType == EVENT_START) { - self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); - // just a valid start event, but no mouse - } else if(!isMouse && eventType == EVENT_START) { - self.preventMouseEvents = true; - self.shouldDetect = true; - } + // determine from css whether this box has overflow + this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } + // recalculate size + // turn off max-width to be able to calculate the real width + // this causes an extra browser repaint/reflow, but so be it + this.dom.content.style.maxWidth = 'none'; + this.props.content.width = this.dom.content.offsetWidth; + this.height = this.dom.box.offsetHeight; + this.dom.content.style.maxWidth = ''; - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - if(triggerType == EVENT_END) { - self.preventMouseEvents = false; - self.shouldDetect = false; - PointerEvent.reset(); - // update the pointerevent object after the detection - } + this.dirty = false; + } - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - }; + this._repaintDeleteButton(dom.box); + this._repaintDragLeft(); + this._repaintDragRight(); + }; - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, + /** + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. + */ + RangeItem.prototype.show = function() { + if (!this.displayed) { + this.redraw(); + } + }; - /** - * the core detection method - * this finds out what hammer-touch-events to trigger - * @method doDetect - * @param {Object} ev - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {HTMLElement} element - * @param {Function} handler - * @return {String} triggerType matches `EVENT_START|MOVE|END` - */ - doDetect: function doDetect(ev, eventType, element, handler) { - var touchList = this.getTouchList(ev, eventType); - var touchListLength = touchList.length; - var triggerType = eventType; - var triggerChange = touchList.trigger; // used by fakeMultitouch plugin - var changedLength = touchListLength; + /** + * Hide the item from the DOM (when visible) + * @return {Boolean} changed + */ + RangeItem.prototype.hide = function() { + if (this.displayed) { + var box = this.dom.box; - // at each touchstart-like event we want also want to trigger a TOUCH event... - if(eventType == EVENT_START) { - triggerChange = EVENT_TOUCH; - // ...the same for a touchend-like event - } else if(eventType == EVENT_END) { - triggerChange = EVENT_RELEASE; + if (box.parentNode) { + box.parentNode.removeChild(box); + } - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); - } + this.displayed = false; + } + }; - // after there are still touches on the screen, - // we just want to trigger a MOVE event. so change the START or END to a MOVE - // but only after detection has been started, the first time we actualy want a START - if(changedLength > 0 && this.started) { - triggerType = EVENT_MOVE; - } + /** + * Reposition the item horizontally + * @Override + */ + RangeItem.prototype.repositionX = function() { + var parentWidth = this.parent.width; + var start = this.conversion.toScreen(this.data.start); + var end = this.conversion.toScreen(this.data.end); + var contentLeft; + var contentWidth; - // detection has been started, we keep track of this, see above - this.started = true; + // limit the width of the this, as browsers cannot draw very wide divs + if (start < -parentWidth) { + start = -parentWidth; + } + if (end > 2 * parentWidth) { + end = 2 * parentWidth; + } + var boxWidth = Math.max(end - start, 1); - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + if (this.overflow) { + this.left = start; + this.width = boxWidth + this.props.content.width; + contentWidth = this.props.content.width; - // trigger the triggerType event before the change (TOUCH, RELEASE) events - // but the END event should be at last - if(eventType != EVENT_END) { - handler.call(Detection, evData); - } + // Note: The calculation of width is an optimistic calculation, giving + // a width which will not change when moving the Timeline + // So no re-stacking needed, which is nicer for the eye; + } + else { + this.left = start; + this.width = boxWidth; + contentWidth = Math.min(end - start - 2 * this.options.padding, this.props.content.width); + } - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; + this.dom.box.style.left = this.left + 'px'; + this.dom.box.style.width = boxWidth + 'px'; - handler.call(Detection, evData); + switch (this.options.align) { + case 'left': + this.dom.content.style.left = '0'; + break; - evData.eventType = triggerType; - delete evData.changedLength; - } + case 'right': + this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding), 0) + 'px'; + break; - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); + case 'center': + this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding) / 2, 0) + 'px'; + break; - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; + default: // 'auto' + // when range exceeds left of the window, position the contents at the left of the visible area + if (this.overflow) { + if (end > 0) { + contentLeft = Math.max(-start, 0); } - - return triggerType; - }, - - /** - * we have different events for each device/browser - * determine what we need and set them in the EVENT_TYPES constant - * the `onTouch` method is bind to these properties. - * @method determineEventTypes - * @return {Object} events - */ - determineEventTypes: function determineEventTypes() { - var types; - if(Hammer.HAS_POINTEREVENTS) { - if(window.PointerEvent) { - types = [ - 'pointerdown', - 'pointermove', - 'pointerup pointercancel lostpointercapture' - ]; - } else { - types = [ - 'MSPointerDown', - 'MSPointerMove', - 'MSPointerUp MSPointerCancel MSLostPointerCapture' - ]; - } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; - } else { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; + else { + contentLeft = -contentWidth; // ensure it's not visible anymore } - - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, - - /** - * create touchList depending on the event - * @method getTouchList - * @param {Object} ev - * @param {String} eventType - * @return {Array} touches - */ - getTouchList: function getTouchList(ev, eventType) { - // get the fake pointerEvent touchlist - if(Hammer.HAS_POINTEREVENTS) { - return PointerEvent.getTouchList(); + } + else { + if (start < 0) { + contentLeft = Math.min(-start, + (end - start - contentWidth - 2 * this.options.padding)); + // TODO: remove the need for options.padding. it's terrible. } - - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; - } - - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; - - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); - } - identifiers.push(touch.identifier); - }); - - return touchList; + else { + contentLeft = 0; } + } + this.dom.content.style.left = contentLeft + 'px'; + } + }; - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, - - /** - * collect basic event data - * @method collectEventData - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Array} touches - * @param {Object} ev - * @return {Object} ev - */ - collectEventData: function collectEventData(element, eventType, touches, ev) { - // find out pointerType - var pointerType = POINTER_TOUCH; - if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { - pointerType = POINTER_MOUSE; - } else if(PointerEvent.matchType(POINTER_PEN, ev)) { - pointerType = POINTER_PEN; - } + /** + * Reposition the item vertically + * @Override + */ + RangeItem.prototype.repositionY = function() { + var orientation = this.options.orientation, + box = this.dom.box; - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, + if (orientation == 'top') { + box.style.top = this.top + 'px'; + } + else { + box.style.top = (this.parent.height - this.top - this.height) + 'px'; + } + }; - /** - * prevent the browser default actions - * mostly used to disable scrolling of the browser - */ - preventDefault: function() { - var srcEvent = this.srcEvent; - srcEvent.preventManipulation && srcEvent.preventManipulation(); - srcEvent.preventDefault && srcEvent.preventDefault(); - }, + /** + * Repaint a drag area on the left side of the range when the range is selected + * @protected + */ + RangeItem.prototype._repaintDragLeft = function () { + if (this.selected && this.options.editable.updateTime && !this.dom.dragLeft) { + // create and show drag area + var dragLeft = document.createElement('div'); + dragLeft.className = 'drag-left'; + dragLeft.dragLeftItem = this; - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, + // TODO: this should be redundant? + Hammer(dragLeft, { + preventDefault: true + }).on('drag', function () { + //console.log('drag left') + }); - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; + this.dom.box.appendChild(dragLeft); + this.dom.dragLeft = dragLeft; + } + else if (!this.selected && this.dom.dragLeft) { + // delete drag area + if (this.dom.dragLeft.parentNode) { + this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft); } + this.dom.dragLeft = null; + } }; - /** - * @module hammer - * - * @class PointerEvent - * @static + * Repaint a drag area on the right side of the range when the range is selected + * @protected */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, + RangeItem.prototype._repaintDragRight = function () { + if (this.selected && this.options.editable.updateTime && !this.dom.dragRight) { + // create and show drag area + var dragRight = document.createElement('div'); + dragRight.className = 'drag-right'; + dragRight.dragRightItem = this; - /** - * get the pointers as an array - * @method getTouchList - * @return {Array} touchlist - */ - getTouchList: function getTouchList() { - var touchlist = []; - // we can use forEach since pointerEvents only is in IE10 - Utils.each(this.pointers, function(pointer) { - touchlist.push(pointer); - }); - return touchlist; - }, + // TODO: this should be redundant? + Hammer(dragRight, { + preventDefault: true + }).on('drag', function () { + //console.log('drag right') + }); - /** - * update the position of a pointer - * @method updatePointer - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Object} pointerEvent - */ - updatePointer: function updatePointer(eventType, pointerEvent) { - if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { - delete this.pointers[pointerEvent.pointerId]; - } else { - pointerEvent.identifier = pointerEvent.pointerId; - this.pointers[pointerEvent.pointerId] = pointerEvent; - } - }, + this.dom.box.appendChild(dragRight); + this.dom.dragRight = dragRight; + } + else if (!this.selected && this.dom.dragRight) { + // delete drag area + if (this.dom.dragRight.parentNode) { + this.dom.dragRight.parentNode.removeChild(this.dom.dragRight); + } + this.dom.dragRight = null; + } + }; - /** - * check if ev matches pointertype - * @method matchType - * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` - * @param {PointerEvent} ev - */ - matchType: function matchType(pointerType, ev) { - if(!ev.pointerType) { - return false; - } + module.exports = RangeItem; - var pt = ev.pointerType, - types = {}; - types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); - types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); - types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); - return types[pointerType]; - }, +/***/ }, +/* 25 */ +/***/ function(module, exports, __webpack_require__) { - /** - * reset the stored pointers - * @method reset - */ - reset: function resetList() { - this.pointers = {}; - } + /** + * Prototype for visual components + * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body] + * @param {Object} [options] + */ + function Component (body, options) { + this.options = null; + this.props = null; + } + + /** + * Set options for the component. The new options will be merged into the + * current options. + * @param {Object} options + */ + Component.prototype.setOptions = function(options) { + if (options) { + util.extend(this.options, options); + } }; + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + Component.prototype.redraw = function() { + // should be implemented by the component + return false; + }; /** - * @module hammer - * - * @class Detection - * @static + * Destroy the component. Cleanup DOM and event listeners */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], + Component.prototype.destroy = function() { + // should be implemented by the component + }; - // data of the current Hammer.gesture detection session - current: null, + /** + * Test whether the component is resized since the last time _isResized() was + * called. + * @return {Boolean} Returns true if the component is resized + * @protected + */ + Component.prototype._isResized = function() { + var resized = (this.props._previousWidth !== this.props.width || + this.props._previousHeight !== this.props.height); - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, + this.props._previousWidth = this.props.width; + this.props._previousHeight = this.props.height; - // when this becomes true, no gestures are fired - stopped: false, + return resized; + }; - /** - * start Hammer.gesture detection - * @method startDetect - * @param {Hammer.Instance} inst - * @param {Object} eventData - */ - startDetect: function startDetect(inst, eventData) { - // already busy with a Hammer.gesture detection on an element - if(this.current) { - return; - } + module.exports = Component; - this.stopped = false; - // holds current session - this.current = { - inst: inst, // reference to HammerInstance we're working for - startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc - lastEvent: false, // last eventData - lastCalcEvent: false, // last eventData for calculations. - futureCalcEvent: false, // last eventData for calculations. - lastCalcData: {}, // last lastCalcData - name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc - }; +/***/ }, +/* 26 */ +/***/ function(module, exports, __webpack_require__) { - this.detect(eventData); - }, + var util = __webpack_require__(1); + var Component = __webpack_require__(25); + var moment = __webpack_require__(44); + var locales = __webpack_require__(48); - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; - } + /** + * A current time bar + * @param {{range: Range, dom: Object, domProps: Object}} body + * @param {Object} [options] Available parameters: + * {Boolean} [showCurrentTime] + * @constructor CurrentTime + * @extends Component + */ + function CurrentTime (body, options) { + this.body = body; - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); + // default options + this.defaultOptions = { + showCurrentTime: true, - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; + locales: locales, + locale: 'en' + }; + this.options = util.extend({}, this.defaultOptions); + this.offset = 0; - // call Hammer.gesture handlers - Utils.each(this.gestures, function triggerGesture(gesture) { - // only when the instance options have enabled this gesture - if(!this.stopped && inst.enabled && instOptions[gesture.name]) { - gesture.handler.call(gesture, eventData, inst); - } - }, this); + this._create(); - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; - } + this.setOptions(options); + } - if(eventData.eventType == EVENT_END) { - this.stopDetect(); - } + CurrentTime.prototype = new Component(); - return eventData; - }, + /** + * Create the HTML DOM for the current time bar + * @private + */ + CurrentTime.prototype._create = function() { + var bar = document.createElement('div'); + bar.className = 'currenttime'; + bar.style.position = 'absolute'; + bar.style.top = '0px'; + bar.style.height = '100%'; - /** - * clear the Hammer.gesture vars - * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected - * to stop other Hammer.gestures from being fired - * @method stopDetect - */ - stopDetect: function stopDetect() { - // clone current data to the store as the previous gesture - // used for the double tap gesture, since this is an other gesture detect session - this.previous = Utils.extend({}, this.current); + this.bar = bar; + }; - // reset the current - this.current = null; - this.stopped = true; - }, + /** + * Destroy the CurrentTime bar + */ + CurrentTime.prototype.destroy = function () { + this.options.showCurrentTime = false; + this.redraw(); // will remove the bar from the DOM and stop refreshing - /** - * calculate velocity, angle and direction - * @method getVelocityData - * @param {Object} ev - * @param {Object} center - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - */ - getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { - var cur = this.current, - recalc = false, - calcEv = cur.lastCalcEvent, - calcData = cur.lastCalcData; + this.body = null; + }; - if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { - center = calcEv.center; - deltaTime = ev.timeStamp - calcEv.timeStamp; - deltaX = ev.center.clientX - calcEv.center.clientX; - deltaY = ev.center.clientY - calcEv.center.clientY; - recalc = true; - } + /** + * Set options for the component. Options will be merged in current options. + * @param {Object} options Available parameters: + * {boolean} [showCurrentTime] + */ + CurrentTime.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + util.selectiveExtend(['showCurrentTime', 'locale', 'locales'], this.options, options); + } + }; - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; - } + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + CurrentTime.prototype.redraw = function() { + if (this.options.showCurrentTime) { + var parent = this.body.dom.backgroundVertical; + if (this.bar.parentNode != parent) { + // attach to the dom + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); + } + parent.appendChild(this.bar); - if(!cur.lastCalcEvent || recalc) { - calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); - calcData.angle = Utils.getAngle(center, ev.center); - calcData.direction = Utils.getDirection(center, ev.center); + this.start(); + } - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; - } + var now = new Date(new Date().valueOf() + this.offset); + var x = this.body.util.toScreen(now); - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, + var locale = this.options.locales[this.options.locale]; + var title = locale.current + ' ' + locale.time + ': ' + moment(now).format('dddd, MMMM Do YYYY, H:mm:ss'); + title = title.charAt(0).toUpperCase() + title.substring(1); - /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev - */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; + this.bar.style.left = x + 'px'; + this.bar.title = title; + } + else { + // remove the line from the DOM + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); + } + this.stop(); + } - // update the start touchlist to calculate the scale/rotation - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - startEv.touches = []; - Utils.each(ev.touches, function(touch) { - startEv.touches.push({ - clientX: touch.clientX, - clientY: touch.clientY - }); - }); - } + return false; + }; - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; + /** + * Start auto refreshing the current time bar + */ + CurrentTime.prototype.start = function() { + var me = this; - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); + function update () { + me.stop(); - Utils.extend(ev, { - startEvent: startEv, + // determine interval to refresh + var scale = me.body.range.conversion(me.body.domProps.center.width).scale; + var interval = 1 / scale / 10; + if (interval < 30) interval = 30; + if (interval > 1000) interval = 1000; - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, + me.redraw(); - distance: Utils.getDistance(startEv.center, ev.center), - angle: Utils.getAngle(startEv.center, ev.center), - direction: Utils.getDirection(startEv.center, ev.center), - scale: Utils.getScale(startEv.touches, ev.touches), - rotation: Utils.getRotation(startEv.touches, ev.touches) - }); + // start a timer to adjust for the new time + me.currentTimeTimer = setTimeout(update, interval); + } - return ev; - }, + update(); + }; - /** - * register new gesture - * @method register - * @param {Object} gesture object, see `gestures/` for documentation - * @return {Array} gestures - */ - register: function register(gesture) { - // add an enable gesture options if there is no given - var options = gesture.defaults || {}; - if(options[gesture.name] === undefined) { - options[gesture.name] = true; - } + /** + * Stop auto refreshing the current time bar + */ + CurrentTime.prototype.stop = function() { + if (this.currentTimeTimer !== undefined) { + clearTimeout(this.currentTimeTimer); + delete this.currentTimeTimer; + } + }; - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); + /** + * Set a current time. This can be used for example to ensure that a client's + * time is synchronized with a shared server time. + * @param {Date | String | Number} time A Date, unix timestamp, or + * ISO date string. + */ + CurrentTime.prototype.setCurrentTime = function(time) { + var t = util.convert(time, 'Date').valueOf(); + var now = new Date().valueOf(); + this.offset = t - now; + this.redraw(); + }; - // set its index - gesture.index = gesture.index || 1000; + /** + * Get the current time. + * @return {Date} Returns the current time. + */ + CurrentTime.prototype.getCurrentTime = function() { + return new Date(new Date().valueOf() + this.offset); + }; - // add Hammer.gesture to the list - this.gestures.push(gesture); + module.exports = CurrentTime; - // sort the list by index - this.gestures.sort(function(a, b) { - if(a.index < b.index) { - return -1; - } - if(a.index > b.index) { - return 1; - } - return 0; - }); - return this.gestures; - } - }; +/***/ }, +/* 27 */ +/***/ function(module, exports, __webpack_require__) { + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + var Component = __webpack_require__(25); + var moment = __webpack_require__(44); + var locales = __webpack_require__(48); /** - * @module hammer + * A custom time bar + * @param {{range: Range, dom: Object}} body + * @param {Object} [options] Available parameters: + * {Boolean} [showCustomTime] + * @constructor CustomTime + * @extends Component */ - /** - * create new hammer instance - * all methods should return the instance itself, so it is chainable. - * - * @class Instance - * @constructor - * @param {HTMLElement} element - * @param {Object} [options={}] options are merged with `Hammer.defaults` - * @return {Hammer.Instance} - */ - Hammer.Instance = function(element, options) { - var self = this; + function CustomTime (body, options) { + this.body = body; - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); + // default options + this.defaultOptions = { + showCustomTime: false, + locales: locales, + locale: 'en', + id: 0 + }; + this.options = util.extend({}, this.defaultOptions); - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; + if (options && options.time) { + this.customTime = options.time; + } else { + this.customTime = new Date(); + } + + this.eventParams = {}; // stores state parameters while dragging the bar - /** - * @property enabled - * @type {Boolean} - * @protected - */ - this.enabled = true; + // create the DOM + this._create(); - /** - * options, merged with the defaults - * options with an _ are converted to camelCase - * @property options - * @type {Object} - */ - Utils.each(options, function(value, name) { - delete options[name]; - options[Utils.toCamelCase(name)] = value; - }); + this.setOptions(options); + } - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + CustomTime.prototype = new Component(); - // add some css to the element to prevent the browser from doing its native behavoir - if(this.options.behavior) { - Utils.toggleBehavior(this.element, this.options.behavior, true); + /** + * Set options for the component. Options will be merged in current options. + * @param {Object} options Available parameters: + * {boolean} [showCustomTime] + */ + CustomTime.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + util.selectiveExtend(['showCustomTime', 'locale', 'locales', 'id'], this.options, options); + + // Triggered by addCustomTimeBar, redraw to add new bar + if (this.options.id) { + this.redraw(); } + } + }; - /** - * event start handler on the element to start the detection - * @property eventStartHandler - * @type {Object} - */ - this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { - if(self.enabled && ev.eventType == EVENT_START) { - Detection.startDetect(self, ev); - } else if(ev.eventType == EVENT_TOUCH) { - Detection.detect(ev); - } - }); + /** + * Create the DOM for the custom time + * @private + */ + CustomTime.prototype._create = function() { + var bar = document.createElement('div'); + bar.className = 'customtime'; + bar.style.position = 'absolute'; + bar.style.top = '0px'; + bar.style.height = '100%'; + this.bar = bar; - /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} - */ - this.eventHandlers = []; - }; + var drag = document.createElement('div'); + drag.style.position = 'relative'; + drag.style.top = '0px'; + drag.style.left = '-10px'; + drag.style.height = '100%'; + drag.style.width = '20px'; + bar.appendChild(drag); - Hammer.Instance.prototype = { - /** - * bind events to the instance - * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space - * @param {Function} handler - * @param {Object} handler.ev event object - */ - on: function onEvent(gestures, handler) { - var self = this; - Event.on(self.element, gestures, handler, function(type) { - self.eventHandlers.push({ gesture: type, handler: handler }); - }); - return self; - }, + // attach event listeners + this.hammer = Hammer(bar, { + prevent_default: true + }); + this.hammer.on('dragstart', this._onDragStart.bind(this)); + this.hammer.on('drag', this._onDrag.bind(this)); + this.hammer.on('dragend', this._onDragEnd.bind(this)); + }; - /** - * unbind events to the instance - * @method off - * @chainable - * @param {String} gestures - * @param {Function} handler - */ - off: function offEvent(gestures, handler) { - var self = this; + /** + * Destroy the CustomTime bar + */ + CustomTime.prototype.destroy = function () { + this.options.showCustomTime = false; + this.redraw(); // will remove the bar from the DOM - Event.off(self.element, gestures, handler, function(type) { - var index = Utils.inArray({ gesture: type, handler: handler }); - if(index !== false) { - self.eventHandlers.splice(index, 1); - } - }); - return self; - }, + this.hammer.enable(false); + this.hammer = null; - /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] - */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; - } + this.body = null; + }; - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + CustomTime.prototype.redraw = function () { + if (this.options.showCustomTime) { + var parent = this.body.dom.backgroundVertical; + if (this.bar.parentNode != parent) { + // attach to the dom + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); + } + parent.appendChild(this.bar); + } - // trigger on the target if it is in the instance element, - // this is for event delegation tricks - var element = this.element; - if(Utils.hasParent(eventData.target, element)) { - element = eventData.target; - } + var x = this.body.util.toScreen(this.customTime); - element.dispatchEvent(event); - return this; - }, + var locale = this.options.locales[this.options.locale]; + var title = locale.time + ': ' + moment(this.customTime).format('dddd, MMMM Do YYYY, H:mm:ss'); + title = title.charAt(0).toUpperCase() + title.substring(1); - /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state - */ - enable: function enable(state) { - this.enabled = state; - return this; - }, - - /** - * dispose this hammer instance - * @method dispose - * @return {Null} - */ - dispose: function dispose() { - var i, eh; - - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); - - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); - } - - this.eventHandlers = []; - - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); - - return null; + this.bar.style.left = x + 'px'; + this.bar.title = title; + } + else { + // remove the line from the DOM + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); } - }; + } + return false; + }; /** - * @module gestures - */ - /** - * Move with x fingers (default 1) around on the page. - * Preventing the default browser behavior is a good way to improve feel and working. - * ```` - * hammertime.on("drag", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Drag - * @static - */ - /** - * @event drag - * @param {Object} ev - */ - /** - * @event dragstart - * @param {Object} ev - */ - /** - * @event dragend - * @param {Object} ev - */ - /** - * @event drapleft - * @param {Object} ev - */ - /** - * @event dragright - * @param {Object} ev + * Set custom time. + * @param {Date | number | string} time */ + CustomTime.prototype.setCustomTime = function(time) { + this.customTime = util.convert(time, 'Date'); + this.redraw(); + }; + /** - * @event dragup - * @param {Object} ev + * Retrieve the current custom time. + * @return {Date} customTime */ + CustomTime.prototype.getCustomTime = function() { + return new Date(this.customTime.valueOf()); + }; + /** - * @event dragdown - * @param {Object} ev + * Start moving horizontally + * @param {Event} event + * @private */ + CustomTime.prototype._onDragStart = function(event) { + this.eventParams.dragging = true; + this.eventParams.customTime = this.customTime; + + event.stopPropagation(); + event.preventDefault(); + }; /** - * @param {String} name + * Perform moving operating. + * @param {Event} event + * @private */ - (function(name) { - var triggered = false; + CustomTime.prototype._onDrag = function (event) { + if (!this.eventParams.dragging) return; - function dragGesture(ev, inst) { - var cur = Detection.current; + var deltaX = event.gesture.deltaX, + x = this.body.util.toScreen(this.eventParams.customTime) + deltaX, + time = this.body.util.toTime(x); - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; - } + this.setCustomTime(time); - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + // fire a timechange event + this.body.emitter.emit('timechange', { + id: this.options.id, + time: new Date(this.customTime.valueOf()) + }); - case EVENT_MOVE: - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.distance < inst.options.dragMinDistance && - cur.name != name) { - return; - } + event.stopPropagation(); + event.preventDefault(); + }; - var startCenter = cur.startEvent.center; + /** + * Stop moving operating. + * @param {event} event + * @private + */ + CustomTime.prototype._onDragEnd = function (event) { + if (!this.eventParams.dragging) return; - // we are dragging! - if(cur.name != name) { - cur.name = name; - if(inst.options.dragDistanceCorrection && ev.distance > 0) { - // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. - // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. - // It might be useful to save the original start point somewhere - var factor = Math.abs(inst.options.dragMinDistance / ev.distance); - startCenter.pageX += ev.deltaX * factor; - startCenter.pageY += ev.deltaY * factor; - startCenter.clientX += ev.deltaX * factor; - startCenter.clientY += ev.deltaY * factor; + // fire a timechanged event + this.body.emitter.emit('timechanged', { + id: this.options.id, + time: new Date(this.customTime.valueOf()) + }); - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } + event.stopPropagation(); + event.preventDefault(); + }; - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } + module.exports = CustomTime; - // keep direction on the axis that the drag gesture started on - var lastDirection = cur.lastEvent.direction; - if(ev.dragLockToAxis && lastDirection !== ev.direction) { - if(Utils.isVertical(lastDirection)) { - ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; - } else { - ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - } - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } +/***/ }, +/* 28 */ +/***/ function(module, exports, __webpack_require__) { - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(2); + var Component = __webpack_require__(25); + var DataStep = __webpack_require__(16); - var isVertical = Utils.isVertical(ev.direction); + /** + * A horizontal time axis + * @param {Object} [options] See DataAxis.setOptions for the available + * options. + * @constructor DataAxis + * @extends Component + * @param body + */ + function DataAxis (body, options, svg, linegraphOptions) { + this.id = util.randomUUID(); + this.body = body; - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + this.defaultOptions = { + orientation: 'left', // supported: 'left', 'right' + showMinorLabels: true, + showMajorLabels: true, + icons: true, + majorLinesOffset: 7, + minorLinesOffset: 4, + labelOffsetX: 10, + labelOffsetY: 2, + iconWidth: 20, + width: '40px', + visible: true, + alignZeros: true, + customRange: { + left: {min:undefined, max:undefined}, + right: {min:undefined, max:undefined} + }, + title: { + left: {text:undefined}, + right: {text:undefined} + }, + format: { + left: {decimals: undefined}, + right: {decimals: undefined} + } + }; - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + this.linegraphOptions = linegraphOptions; + this.linegraphSVG = svg; + this.props = {}; + this.DOMelements = { // dynamic elements + lines: {}, + labels: {}, + title: {} + }; - case EVENT_END: - triggered = false; - break; - } - } + this.dom = {}; - Hammer.gestures.Drag = { - name: name, - index: 50, - handler: dragGesture, - defaults: { - /** - * minimal movement that have to be made before the drag event gets triggered - * @property dragMinDistance - * @type {Number} - * @default 10 - */ - dragMinDistance: 10, + this.range = {start:0, end:0}; - /** - * Set dragDistanceCorrection to true to make the starting point of the drag - * be calculated from where the drag was triggered, not from where the touch started. - * Useful to avoid a jerk-starting drag, which can make fine-adjustments - * through dragging difficult, and be visually unappealing. - * @property dragDistanceCorrection - * @type {Boolean} - * @default true - */ - dragDistanceCorrection: true, + this.options = util.extend({}, this.defaultOptions); + this.conversionFactor = 1; - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + this.setOptions(options); + this.width = Number(('' + this.options.width).replace("px","")); + this.minWidth = this.width; + this.height = this.linegraphSVG.offsetHeight; + this.hidden = false; - /** - * prevent default browser behavior when dragging occurs - * be careful with it, it makes the element a blocking element - * when you are using the drag gesture, it is a good practice to set this true - * @property dragBlockHorizontal - * @type {Boolean} - * @default false - */ - dragBlockHorizontal: false, + this.stepPixels = 25; + this.stepPixelsForced = 25; + this.zeroCrossing = -1; - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, + this.lineOffset = 0; + this.master = true; + this.svgElements = {}; + this.iconsRemoved = false; - /** - * dragLockToAxis keeps the drag gesture on the axis that it started on, - * It disallows vertical directions if the initial direction was horizontal, and vice versa. - * @property dragLockToAxis - * @type {Boolean} - * @default false - */ - dragLockToAxis: false, - /** - * drag lock only kicks in when distance > dragLockMinDistance - * This way, locking occurs only when the distance has become large enough to reliably determine the direction - * @property dragLockMinDistance - * @type {Number} - * @default 25 - */ - dragLockMinDistance: 25 - } - }; - })('drag'); + this.groups = {}; + this.amountOfGroups = 0; - /** - * @module gestures - */ - /** - * trigger a simple gesture event, so you can do anything in your handler. - * only usable if you know what your doing... - * - * @class Gesture - * @static - */ - /** - * @event gesture - * @param {Object} ev - */ - Hammer.gestures.Gesture = { - name: 'gesture', - index: 1337, - handler: function releaseGesture(ev, inst) { - inst.trigger(this.name, ev); - } - }; + // create the HTML DOM + this._create(); - /** - * @module gestures - */ - /** - * Touch stays at the same place for x time - * - * @class Hold - * @static - */ - /** - * @event hold - * @param {Object} ev - */ + var me = this; + this.body.emitter.on("verticalDrag", function() { + me.dom.lineContainer.style.top = me.body.domProps.scrollTop + 'px'; + }); + } - /** - * @param {String} name - */ - (function(name) { - var timer; + DataAxis.prototype = new Component(); - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + DataAxis.prototype.addGroup = function(label, graphOptions) { + if (!this.groups.hasOwnProperty(label)) { + this.groups[label] = graphOptions; + } + this.amountOfGroups += 1; + }; - // set the gesture so we can check in the timeout if it still is - current.name = name; + DataAxis.prototype.updateGroup = function(label, graphOptions) { + this.groups[label] = graphOptions; + }; - // set timer and if after the timeout it still is hold, - // we trigger the hold event - timer = setTimeout(function() { - if(current && current.name == name) { - inst.trigger(name, ev); - } - }, options.holdTimeout); - break; + DataAxis.prototype.removeGroup = function(label) { + if (this.groups.hasOwnProperty(label)) { + delete this.groups[label]; + this.amountOfGroups -= 1; + } + }; - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); - } - break; - case EVENT_RELEASE: - clearTimeout(timer); - break; - } + DataAxis.prototype.setOptions = function (options) { + if (options) { + var redraw = false; + if (this.options.orientation != options.orientation && options.orientation !== undefined) { + redraw = true; } + var fields = [ + 'orientation', + 'showMinorLabels', + 'showMajorLabels', + 'icons', + 'majorLinesOffset', + 'minorLinesOffset', + 'labelOffsetX', + 'labelOffsetY', + 'iconWidth', + 'width', + 'visible', + 'customRange', + 'title', + 'format', + 'alignZeros' + ]; + util.selectiveExtend(fields, this.options, options); - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { - /** - * @property holdTimeout - * @type {Number} - * @default 500 - */ - holdTimeout: 500, - - /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 - */ - holdThreshold: 2 - }, - handler: holdGesture - }; - })('hold'); + this.minWidth = Number(('' + this.options.width).replace("px","")); - /** - * @module gestures - */ - /** - * when a touch is being released from the page - * - * @class Release - * @static - */ - /** - * @event release - * @param {Object} ev - */ - Hammer.gestures.Release = { - name: 'release', - index: Infinity, - handler: function releaseGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - inst.trigger(this.name, ev); - } + if (redraw == true && this.dom.frame) { + this.hide(); + this.show(); } + } }; + /** - * @module gestures + * Create the HTML DOM for the DataAxis */ - /** - * triggers swipe events when the end velocity is above the threshold - * for best usage, set `preventDefault` (on the drag gesture) to `true` - * ```` - * hammertime.on("dragleft swipeleft", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Swipe - * @static - */ - /** - * @event swipe - * @param {Object} ev - */ - /** - * @event swipeleft - * @param {Object} ev - */ - /** - * @event swiperight - * @param {Object} ev - */ - /** - * @event swipeup - * @param {Object} ev - */ - /** - * @event swipedown - * @param {Object} ev - */ - Hammer.gestures.Swipe = { - name: 'swipe', - index: 40, - defaults: { - /** - * @property swipeMinTouches - * @type {Number} - * @default 1 - */ - swipeMinTouches: 1, + DataAxis.prototype._create = function() { + this.dom.frame = document.createElement('div'); + this.dom.frame.style.width = this.options.width; + this.dom.frame.style.height = this.height; - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, + this.dom.lineContainer = document.createElement('div'); + this.dom.lineContainer.style.width = '100%'; + this.dom.lineContainer.style.height = this.height; + this.dom.lineContainer.style.position = 'relative'; - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, + // create svg element for graph drawing. + this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); + this.svg.style.position = "absolute"; + this.svg.style.top = '0px'; + this.svg.style.height = '100%'; + this.svg.style.width = '100%'; + this.svg.style.display = "block"; + this.dom.frame.appendChild(this.svg); + }; - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 - }, + DataAxis.prototype._redrawGroupIcons = function () { + DOMutil.prepareElements(this.svgElements); - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; + var x; + var iconWidth = this.options.iconWidth; + var iconHeight = 15; + var iconOffset = 4; + var y = iconOffset + 0.5 * iconHeight; - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; - } + if (this.options.orientation == 'left') { + x = iconOffset; + } + else { + x = this.width - iconWidth - iconOffset; + } - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.velocityX > options.swipeVelocityX || - ev.velocityY > options.swipeVelocityY) { - // trigger swipe events - inst.trigger(this.name, ev); - inst.trigger(this.name + ev.direction, ev); - } - } + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); + y += iconHeight + iconOffset; + } } + } + + DOMutil.cleanupElements(this.svgElements); + this.iconsRemoved = false; }; + DataAxis.prototype._cleanupIcons = function() { + if (this.iconsRemoved == false) { + DOMutil.prepareElements(this.svgElements); + DOMutil.cleanupElements(this.svgElements); + this.iconsRemoved = true; + } + } + /** - * @module gestures - */ - /** - * Single tap and a double tap on a place - * - * @class Tap - * @static + * Create the HTML DOM for the DataAxis */ + DataAxis.prototype.show = function() { + this.hidden = false; + if (!this.dom.frame.parentNode) { + if (this.options.orientation == 'left') { + this.body.dom.left.appendChild(this.dom.frame); + } + else { + this.body.dom.right.appendChild(this.dom.frame); + } + } + + if (!this.dom.lineContainer.parentNode) { + this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer); + } + }; + /** - * @event tap - * @param {Object} ev + * Create the HTML DOM for the DataAxis */ + DataAxis.prototype.hide = function() { + this.hidden = true; + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); + } + + if (this.dom.lineContainer.parentNode) { + this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer); + } + }; + /** - * @event doubletap - * @param {Object} ev + * Set a range (start and end) + * @param end + * @param start + * @param end */ + DataAxis.prototype.setRange = function (start, end) { + if (this.master == false && this.options.alignZeros == true && this.zeroCrossing != -1) { + if (start > 0) { + start = 0; + } + } + this.range.start = start; + this.range.end = end; + }; /** - * @param {String} name + * Repaint the component + * @return {boolean} Returns true if the component is resized */ - (function(name) { - var hasMoved = false; - - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; - - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; - - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; - - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; - - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } + DataAxis.prototype.redraw = function () { + var resized = false; + var activeGroups = 0; + + // Make sure the line container adheres to the vertical scrolling. + this.dom.lineContainer.style.top = this.body.domProps.scrollTop + 'px'; - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; - } + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + activeGroups++; + } } + } + if (this.amountOfGroups == 0 || activeGroups == 0) { + this.hide(); + } + else { + this.show(); + this.height = Number(this.linegraphSVG.style.height.replace("px","")); - Hammer.gestures.Tap = { - name: name, - index: 100, - handler: tapGesture, - defaults: { - /** - * max time of a tap, this is for the slow tappers - * @property tapMaxTime - * @type {Number} - * @default 250 - */ - tapMaxTime: 250, + // svg offsetheight did not work in firefox and explorer... + this.dom.lineContainer.style.height = this.height + 'px'; + this.width = this.options.visible == true ? Number(('' + this.options.width).replace("px","")) : 0; - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, + var props = this.props; + var frame = this.dom.frame; - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, + // update classname + frame.className = 'dataaxis'; - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, + // calculate character width and height + this._calculateCharSize(); - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 - } - }; - })('tap'); + var orientation = this.options.orientation; + var showMinorLabels = this.options.showMinorLabels; + var showMajorLabels = this.options.showMajorLabels; - /** - * @module gestures - */ - /** - * when a touch is being touched at the page - * - * @class Touch - * @static - */ - /** - * @event touch - * @param {Object} ev - */ - Hammer.gestures.Touch = { - name: 'touch', - index: -Infinity, - defaults: { - /** - * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, - * but it improves gestures like transforming and dragging. - * be careful with using this, it can be very annoying for users to be stuck on the page - * @property preventDefault - * @type {Boolean} - * @default false - */ - preventDefault: false, + // determine the width and height of the elements for the axis + props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; + props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; - /** - * disable mouse events, so only touch (or pen!) input triggers events - * @property preventMouse - * @type {Boolean} - * @default false - */ - preventMouse: false - }, - handler: function touchGesture(ev, inst) { - if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { - ev.stopDetect(); - return; - } + props.minorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.minorLinesOffset; + props.minorLineHeight = 1; + props.majorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.majorLinesOffset; + props.majorLineHeight = 1; - if(inst.options.preventDefault) { - ev.preventDefault(); - } + // take frame offline while updating (is almost twice as fast) + if (orientation == 'left') { + frame.style.top = '0'; + frame.style.left = '0'; + frame.style.bottom = ''; + frame.style.width = this.width + 'px'; + frame.style.height = this.height + "px"; + this.props.width = this.body.domProps.left.width; + this.props.height = this.body.domProps.left.height; + } + else { // right + frame.style.top = ''; + frame.style.bottom = '0'; + frame.style.left = '0'; + frame.style.width = this.width + 'px'; + frame.style.height = this.height + "px"; + this.props.width = this.body.domProps.right.width; + this.props.height = this.body.domProps.right.height; + } - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); - } + resized = this._redrawLabels(); + resized = this._isResized() || resized; + + if (this.options.icons == true) { + this._redrawGroupIcons(); + } + else { + this._cleanupIcons(); } + + this._redrawTitle(orientation); + } + return resized; }; /** - * @module gestures - */ - /** - * User want to scale or rotate with 2 fingers - * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the - * `preventDefault` option. - * - * @class Transform - * @static - */ - /** - * @event transform - * @param {Object} ev - */ - /** - * @event transformstart - * @param {Object} ev - */ - /** - * @event transformend - * @param {Object} ev - */ - /** - * @event pinchin - * @param {Object} ev - */ - /** - * @event pinchout - * @param {Object} ev - */ - /** - * @event rotate - * @param {Object} ev + * Repaint major and minor text labels and vertical grid lines + * @private */ + DataAxis.prototype._redrawLabels = function () { + var resized = false; + DOMutil.prepareElements(this.DOMelements.lines); + DOMutil.prepareElements(this.DOMelements.labels); - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + var orientation = this.options['orientation']; - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + // calculate range and step (step such that we have space for 7 characters per label) + var minimumStep = this.master ? this.props.majorCharHeight || 10 : this.stepPixelsForced; - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } + var step = new DataStep( + this.range.start, + this.range.end, + minimumStep, + this.dom.frame.offsetHeight, + this.options.customRange[this.options.orientation], + this.master == false && this.options.alignZeros // doess the step have to align zeros? only if not master and the options is on + ); - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); + this.step = step; + // get the distance in pixels for a step + // dead space is space that is "left over" after a step + var stepPixels = (this.dom.frame.offsetHeight - (step.deadSpace * (this.dom.frame.offsetHeight / step.marginRange))) / (((step.marginRange - step.deadSpace) / step.step)); - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(scaleThreshold < inst.options.transformMinScale && - rotationThreshold < inst.options.transformMinRotation) { - return; - } + this.stepPixels = stepPixels; - // we are transforming! - Detection.current.name = name; + var amountOfSteps = this.height / stepPixels; + var stepDifference = 0; - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + // the slave axis needs to use the same horizontal lines as the master axis. + if (this.master == false) { + stepPixels = this.stepPixelsForced; + stepDifference = Math.round((this.dom.frame.offsetHeight / stepPixels) - amountOfSteps); + for (var i = 0; i < 0.5 * stepDifference; i++) { + step.previous(); + } + amountOfSteps = this.height / stepPixels; - inst.trigger(name, ev); // basic transform event + if (this.zeroCrossing != -1 && this.options.alignZeros == true) { + var zeroStepDifference = (step.marginEnd / step.step) - this.zeroCrossing; + if (zeroStepDifference > 0) { + for (var i = 0; i < zeroStepDifference; i++) {step.next();} + } + else if (zeroStepDifference < 0) { + for (var i = 0; i < -zeroStepDifference; i++) {step.previous();} + } + } + } + else { + amountOfSteps += 0.25; + } - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + this.valueAtZero = step.marginEnd; + var marginStartPos = 0; - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; - } - } + // do not draw the first label + var max = 1; - Hammer.gestures.Transform = { - name: name, - index: 45, - defaults: { - /** - * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 - * @property transformMinScale - * @type {Number} - * @default 0.01 - */ - transformMinScale: 0.01, + // Get the number of decimal places + var decimals; + if(this.options.format[orientation] !== undefined) { + decimals = this.options.format[orientation].decimals; + } - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 - }, + this.maxLabelSize = 0; + var y = 0; + while (max < Math.round(amountOfSteps)) { + step.next(); + y = Math.round(max * stepPixels); + marginStartPos = max * stepPixels; + var isMajor = step.isMajor(); - handler: transformGesture - }; - })('transform'); + if (this.options['showMinorLabels'] && isMajor == false || this.master == false && this.options['showMinorLabels'] == true) { + this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis minor', this.props.minorCharHeight); + } + + if (isMajor && this.options['showMajorLabels'] && this.master == true || + this.options['showMinorLabels'] == false && this.master == false && isMajor == true) { + if (y >= 0) { + this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis major', this.props.majorCharHeight); + } + this._redrawLine(y, orientation, 'grid horizontal major', this.options.majorLinesOffset, this.props.majorLineWidth); + } + else { + this._redrawLine(y, orientation, 'grid horizontal minor', this.options.minorLinesOffset, this.props.minorLineWidth); + } + + if (this.master == true && step.current == 0) { + this.zeroCrossing = max; + } + + max++; + } + + if (this.master == false) { + this.conversionFactor = y / (this.valueAtZero - step.current); + } + else { + this.conversionFactor = this.dom.frame.offsetHeight / step.marginRange; + } + + // Note that title is rotated, so we're using the height, not width! + var titleWidth = 0; + if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { + titleWidth = this.props.titleCharHeight; + } + var offset = this.options.icons == true ? Math.max(this.options.iconWidth, titleWidth) + this.options.labelOffsetX + 15 : titleWidth + this.options.labelOffsetX + 15; + + // this will resize the yAxis to accommodate the labels. + if (this.maxLabelSize > (this.width - offset) && this.options.visible == true) { + this.width = this.maxLabelSize + offset; + this.options.width = this.width + "px"; + DOMutil.cleanupElements(this.DOMelements.lines); + DOMutil.cleanupElements(this.DOMelements.labels); + this.redraw(); + resized = true; + } + // this will resize the yAxis if it is too big for the labels. + else if (this.maxLabelSize < (this.width - offset) && this.options.visible == true && this.width > this.minWidth) { + this.width = Math.max(this.minWidth,this.maxLabelSize + offset); + this.options.width = this.width + "px"; + DOMutil.cleanupElements(this.DOMelements.lines); + DOMutil.cleanupElements(this.DOMelements.labels); + this.redraw(); + resized = true; + } + else { + DOMutil.cleanupElements(this.DOMelements.lines); + DOMutil.cleanupElements(this.DOMelements.labels); + resized = false; + } + + return resized; + }; + + DataAxis.prototype.convertValue = function (value) { + var invertedValue = this.valueAtZero - value; + var convertedValue = invertedValue * this.conversionFactor; + return convertedValue; + }; /** - * @module hammer + * Create a label for the axis at position x + * @private + * @param y + * @param text + * @param orientation + * @param className + * @param characterHeight */ + DataAxis.prototype._redrawLabel = function (y, text, orientation, className, characterHeight) { + // reuse redundant label + var label = DOMutil.getDOMElement('div',this.DOMelements.labels, this.dom.frame); //this.dom.redundant.labels.shift(); + label.className = className; + label.innerHTML = text; + if (orientation == 'left') { + label.style.left = '-' + this.options.labelOffsetX + 'px'; + label.style.textAlign = "right"; + } + else { + label.style.right = '-' + this.options.labelOffsetX + 'px'; + label.style.textAlign = "left"; + } - // AMD export - if(true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - // commonjs export - } else if(typeof module !== 'undefined' && module.exports) { - module.exports = Hammer; - // browser export - } else { - window.Hammer = Hammer; - } - - })(window); + label.style.top = y - 0.5 * characterHeight + this.options.labelOffsetY + 'px'; -/***/ }, -/* 21 */ -/***/ function(module, exports, __webpack_require__) { + text += ''; - var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(22); - var moment = __webpack_require__(2); - var Component = __webpack_require__(23); - var DateUtil = __webpack_require__(24); + var largestWidth = Math.max(this.props.majorCharWidth,this.props.minorCharWidth); + if (this.maxLabelSize < text.length * largestWidth) { + this.maxLabelSize = text.length * largestWidth; + } + }; /** - * @constructor Range - * A Range controls a numeric range with a start and end value. - * The Range adjusts the range based on mouse events or programmatic changes, - * and triggers events when the range is changing or has been changed. - * @param {{dom: Object, domProps: Object, emitter: Emitter}} body - * @param {Object} [options] See description at Range.setOptions + * Create a minor line for the axis at position y + * @param y + * @param orientation + * @param className + * @param offset + * @param width */ - function Range(body, options) { - var now = moment().hours(0).minutes(0).seconds(0).milliseconds(0); - this.start = now.clone().add(-3, 'days').valueOf(); // Number - this.end = now.clone().add(4, 'days').valueOf(); // Number + DataAxis.prototype._redrawLine = function (y, orientation, className, offset, width) { + if (this.master == true) { + var line = DOMutil.getDOMElement('div',this.DOMelements.lines, this.dom.lineContainer);//this.dom.redundant.lines.shift(); + line.className = className; + line.innerHTML = ''; - this.body = body; - this.deltaDifference = 0; - this.scaleOffset = 0; - this.startToFront = false; - this.endToFront = true; + if (orientation == 'left') { + line.style.left = (this.width - offset) + 'px'; + } + else { + line.style.right = (this.width - offset) + 'px'; + } - // default options - this.defaultOptions = { - start: null, - end: null, - direction: 'horizontal', // 'horizontal' or 'vertical' - moveable: true, - zoomable: true, - min: null, - max: null, - zoomMin: 10, // milliseconds - zoomMax: 1000 * 60 * 60 * 24 * 365 * 10000 // milliseconds - }; - this.options = util.extend({}, this.defaultOptions); + line.style.width = width + 'px'; + line.style.top = y + 'px'; + } + }; - this.props = { - touch: {} - }; - this.animateTimer = null; + /** + * Create a title for the axis + * @private + * @param orientation + */ + DataAxis.prototype._redrawTitle = function (orientation) { + DOMutil.prepareElements(this.DOMelements.title); - // drag listeners for dragging - this.body.emitter.on('dragstart', this._onDragStart.bind(this)); - this.body.emitter.on('drag', this._onDrag.bind(this)); - this.body.emitter.on('dragend', this._onDragEnd.bind(this)); + // Check if the title is defined for this axes + if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { + var title = DOMutil.getDOMElement('div', this.DOMelements.title, this.dom.frame); + title.className = 'yAxis title ' + orientation; + title.innerHTML = this.options.title[orientation].text; - // ignore dragging when holding - this.body.emitter.on('hold', this._onHold.bind(this)); + // Add style - if provided + if (this.options.title[orientation].style !== undefined) { + util.addCssText(title, this.options.title[orientation].style); + } - // mouse wheel for zooming - this.body.emitter.on('mousewheel', this._onMouseWheel.bind(this)); - this.body.emitter.on('DOMMouseScroll', this._onMouseWheel.bind(this)); // For FF + if (orientation == 'left') { + title.style.left = this.props.titleCharHeight + 'px'; + } + else { + title.style.right = this.props.titleCharHeight + 'px'; + } + + title.style.width = this.height + 'px'; + } + + // we need to clean up in case we did not use all elements. + DOMutil.cleanupElements(this.DOMelements.title); + }; - // pinch to zoom - this.body.emitter.on('touch', this._onTouch.bind(this)); - this.body.emitter.on('pinch', this._onPinch.bind(this)); - this.setOptions(options); - } - Range.prototype = new Component(); /** - * Set options for the range controller - * @param {Object} options Available options: - * {Number | Date | String} start Start date for the range - * {Number | Date | String} end End date for the range - * {Number} min Minimum value for start - * {Number} max Maximum value for end - * {Number} zoomMin Set a minimum value for - * (end - start). - * {Number} zoomMax Set a maximum value for - * (end - start). - * {Boolean} moveable Enable moving of the range - * by dragging. True by default - * {Boolean} zoomable Enable zooming of the range - * by pinching/scrolling. True by default + * Determine the size of text on the axis (both major and minor axis). + * The size is calculated only once and then cached in this.props. + * @private */ - Range.prototype.setOptions = function (options) { - if (options) { - // copy the options that we know - var fields = ['direction', 'min', 'max', 'zoomMin', 'zoomMax', 'moveable', 'zoomable', 'activate', 'hiddenDates']; - util.selectiveExtend(fields, this.options, options); + DataAxis.prototype._calculateCharSize = function () { + // determine the char width and height on the minor axis + if (!('minorCharHeight' in this.props)) { + var textMinor = document.createTextNode('0'); + var measureCharMinor = document.createElement('div'); + measureCharMinor.className = 'yAxis minor measure'; + measureCharMinor.appendChild(textMinor); + this.dom.frame.appendChild(measureCharMinor); - if ('start' in options || 'end' in options) { - // apply a new range. both start and end are optional - this.setRange(options.start, options.end); - } + this.props.minorCharHeight = measureCharMinor.clientHeight; + this.props.minorCharWidth = measureCharMinor.clientWidth; + + this.dom.frame.removeChild(measureCharMinor); + } + + if (!('majorCharHeight' in this.props)) { + var textMajor = document.createTextNode('0'); + var measureCharMajor = document.createElement('div'); + measureCharMajor.className = 'yAxis major measure'; + measureCharMajor.appendChild(textMajor); + this.dom.frame.appendChild(measureCharMajor); + + this.props.majorCharHeight = measureCharMajor.clientHeight; + this.props.majorCharWidth = measureCharMajor.clientWidth; + + this.dom.frame.removeChild(measureCharMajor); + } + + if (!('titleCharHeight' in this.props)) { + var textTitle = document.createTextNode('0'); + var measureCharTitle = document.createElement('div'); + measureCharTitle.className = 'yAxis title measure'; + measureCharTitle.appendChild(textTitle); + this.dom.frame.appendChild(measureCharTitle); + + this.props.titleCharHeight = measureCharTitle.clientHeight; + this.props.titleCharWidth = measureCharTitle.clientWidth; + + this.dom.frame.removeChild(measureCharTitle); } }; + module.exports = DataAxis; + + +/***/ }, +/* 29 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(2); + var Line = __webpack_require__(49); + var Bar = __webpack_require__(50); + var Points = __webpack_require__(51); + /** - * Test whether direction has a valid value - * @param {String} direction 'horizontal' or 'vertical' + * /** + * @param {object} group | the object of the group from the dataset + * @param {string} groupId | ID of the group + * @param {object} options | the default options + * @param {array} groupsUsingDefaultStyles | this array has one entree. + * It is passed as an array so it is passed by reference. + * It enumerates through the default styles + * @constructor */ - function validateDirection (direction) { - if (direction != 'horizontal' && direction != 'vertical') { - throw new TypeError('Unknown direction "' + direction + '". ' + - 'Choose "horizontal" or "vertical".'); + function GraphGroup (group, groupId, options, groupsUsingDefaultStyles) { + this.id = groupId; + var fields = ['sampling','style','sort','yAxisOrientation','barChart','drawPoints','shaded','catmullRom'] + this.options = util.selectiveBridgeObject(fields,options); + this.usingDefaultStyle = group.className === undefined; + this.groupsUsingDefaultStyles = groupsUsingDefaultStyles; + this.zeroPosition = 0; + this.update(group); + if (this.usingDefaultStyle == true) { + this.groupsUsingDefaultStyles[0] += 1; } + this.itemsData = []; + this.visible = group.visible === undefined ? true : group.visible; } + /** - * Set a new start and end range - * @param {Date | Number | String} [start] - * @param {Date | Number | String} [end] - * @param {boolean | number} [animate=false] If true, the range is animated - * smoothly to the new window. - * If animate is a number, the - * number is taken as duration - * Default duration is 500 ms. - * @param {Boolean} [byUser=false] - * + * this loads a reference to all items in this group into this group. + * @param {array} items */ - Range.prototype.setRange = function(start, end, animate, byUser) { - if (byUser !== true) { - byUser = false; + GraphGroup.prototype.setItems = function(items) { + if (items != null) { + this.itemsData = items; + if (this.options.sort == true) { + this.itemsData.sort(function (a,b) {return a.x - b.x;}) + } } - var _start = start != undefined ? util.convert(start, 'Date').valueOf() : null; - var _end = end != undefined ? util.convert(end, 'Date').valueOf() : null; - this._cancelAnimation(); + else { + this.itemsData = []; + } + }; - if (animate) { - var me = this; - var initStart = this.start; - var initEnd = this.end; - var duration = typeof animate === 'number' ? animate : 500; - var initTime = new Date().valueOf(); - var anyChanged = false; - var next = function () { - if (!me.props.touch.dragging) { - var now = new Date().valueOf(); - var time = now - initTime; - var done = time > duration; - var s = (done || _start === null) ? _start : util.easeInOutQuad(time, initStart, _start, duration); - var e = (done || _end === null) ? _end : util.easeInOutQuad(time, initEnd, _end, duration); + /** + * this is used for plotting barcharts, this way, we only have to calculate it once. + * @param pos + */ + GraphGroup.prototype.setZeroPosition = function(pos) { + this.zeroPosition = pos; + }; - changed = me._applyRange(s, e); - DateUtil.updateHiddenDates(me.body, me.options.hiddenDates); - anyChanged = anyChanged || changed; - if (changed) { - me.body.emitter.emit('rangechange', {start: new Date(me.start), end: new Date(me.end), byUser:byUser}); - } - if (done) { - if (anyChanged) { - me.body.emitter.emit('rangechanged', {start: new Date(me.start), end: new Date(me.end), byUser:byUser}); + /** + * set the options of the graph group over the default options. + * @param options + */ + GraphGroup.prototype.setOptions = function(options) { + if (options !== undefined) { + var fields = ['sampling','style','sort','yAxisOrientation','barChart']; + util.selectiveDeepExtend(fields, this.options, options); + + util.mergeOptions(this.options, options,'catmullRom'); + util.mergeOptions(this.options, options,'drawPoints'); + util.mergeOptions(this.options, options,'shaded'); + + if (options.catmullRom) { + if (typeof options.catmullRom == 'object') { + if (options.catmullRom.parametrization) { + if (options.catmullRom.parametrization == 'uniform') { + this.options.catmullRom.alpha = 0; + } + else if (options.catmullRom.parametrization == 'chordal') { + this.options.catmullRom.alpha = 1.0; + } + else { + this.options.catmullRom.parametrization = 'centripetal'; + this.options.catmullRom.alpha = 0.5; } - } - else { - // animate with as high as possible frame rate, leave 20 ms in between - // each to prevent the browser from blocking - me.animateTimer = setTimeout(next, 20); } } - }; + } + } - return next(); + if (this.options.style == 'line') { + this.type = new Line(this.id, this.options); } - else { - var changed = this._applyRange(_start, _end); - DateUtil.updateHiddenDates(this.body, this.options.hiddenDates); - if (changed) { - var params = {start: new Date(this.start), end: new Date(this.end), byUser:byUser}; - this.body.emitter.emit('rangechange', params); - this.body.emitter.emit('rangechanged', params); - } + else if (this.options.style == 'bar') { + this.type = new Bar(this.id, this.options); + } + else if (this.options.style == 'points') { + this.type = new Points(this.id, this.options); } }; + /** - * Stop an animation - * @private + * this updates the current group class with the latest group dataset entree, used in _updateGroup in linegraph + * @param group */ - Range.prototype._cancelAnimation = function () { - if (this.animateTimer) { - clearTimeout(this.animateTimer); - this.animateTimer = null; - } + GraphGroup.prototype.update = function(group) { + this.group = group; + this.content = group.content || 'graph'; + this.className = group.className || this.className || "graphGroup" + this.groupsUsingDefaultStyles[0] % 10; + this.visible = group.visible === undefined ? true : group.visible; + this.style = group.style; + this.setOptions(group.options); }; + /** - * Set a new start and end range. This method is the same as setRange, but - * does not trigger a range change and range changed event, and it returns - * true when the range is changed - * @param {Number} [start] - * @param {Number} [end] - * @return {Boolean} changed - * @private + * draw the icon for the legend. + * + * @param x + * @param y + * @param JSONcontainer + * @param SVGcontainer + * @param iconWidth + * @param iconHeight */ - Range.prototype._applyRange = function(start, end) { - var newStart = (start != null) ? util.convert(start, 'Date').valueOf() : this.start, - newEnd = (end != null) ? util.convert(end, 'Date').valueOf() : this.end, - max = (this.options.max != null) ? util.convert(this.options.max, 'Date').valueOf() : null, - min = (this.options.min != null) ? util.convert(this.options.min, 'Date').valueOf() : null, - diff; + GraphGroup.prototype.drawIcon = function(x, y, JSONcontainer, SVGcontainer, iconWidth, iconHeight) { + var fillHeight = iconHeight * 0.5; + var path, fillPath; - // check for valid number - if (isNaN(newStart) || newStart === null) { - throw new Error('Invalid start "' + start + '"'); - } - if (isNaN(newEnd) || newEnd === null) { - throw new Error('Invalid end "' + end + '"'); - } + var outline = DOMutil.getSVGElement("rect", JSONcontainer, SVGcontainer); + outline.setAttributeNS(null, "x", x); + outline.setAttributeNS(null, "y", y - fillHeight); + outline.setAttributeNS(null, "width", iconWidth); + outline.setAttributeNS(null, "height", 2*fillHeight); + outline.setAttributeNS(null, "class", "outline"); - // prevent start < end - if (newEnd < newStart) { - newEnd = newStart; - } + if (this.options.style == 'line') { + path = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); + path.setAttributeNS(null, "class", this.className); + if(this.style !== undefined) { + path.setAttributeNS(null, "style", this.style); + } - // prevent start < min - if (min !== null) { - if (newStart < min) { - diff = (min - newStart); - newStart += diff; - newEnd += diff; - - // prevent end > max - if (max != null) { - if (newEnd > max) { - newEnd = max; - } - } - } - } - - // prevent end > max - if (max !== null) { - if (newEnd > max) { - diff = (newEnd - max); - newStart -= diff; - newEnd -= diff; - - // prevent start < min - if (min != null) { - if (newStart < min) { - newStart = min; - } - } - } - } - - // prevent (end-start) < zoomMin - if (this.options.zoomMin !== null) { - var zoomMin = parseFloat(this.options.zoomMin); - if (zoomMin < 0) { - zoomMin = 0; - } - if ((newEnd - newStart) < zoomMin) { - if ((this.end - this.start) === zoomMin && newStart > this.start && newEnd < this.end) { - // ignore this action, we are already zoomed to the minimum - newStart = this.start; - newEnd = this.end; + path.setAttributeNS(null, "d", "M" + x + ","+y+" L" + (x + iconWidth) + ","+y+""); + if (this.options.shaded.enabled == true) { + fillPath = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); + if (this.options.shaded.orientation == 'top') { + fillPath.setAttributeNS(null, "d", "M"+x+", " + (y - fillHeight) + + "L"+x+","+y+" L"+ (x + iconWidth) + ","+y+" L"+ (x + iconWidth) + "," + (y - fillHeight)); } else { - // zoom to the minimum - diff = (zoomMin - (newEnd - newStart)); - newStart -= diff / 2; - newEnd += diff / 2; + fillPath.setAttributeNS(null, "d", "M"+x+","+y+" " + + "L"+x+"," + (y + fillHeight) + " " + + "L"+ (x + iconWidth) + "," + (y + fillHeight) + + "L"+ (x + iconWidth) + ","+y); } - } - } - - // prevent (end-start) > zoomMax - if (this.options.zoomMax !== null) { - var zoomMax = parseFloat(this.options.zoomMax); - if (zoomMax < 0) { - zoomMax = 0; + fillPath.setAttributeNS(null, "class", this.className + " iconFill"); } - if ((newEnd - newStart) > zoomMax) { - if ((this.end - this.start) === zoomMax && newStart < this.start && newEnd > this.end) { - // ignore this action, we are already zoomed to the maximum - newStart = this.start; - newEnd = this.end; - } - else { - // zoom to the maximum - diff = ((newEnd - newStart) - zoomMax); - newStart += diff / 2; - newEnd -= diff / 2; - } + if (this.options.drawPoints.enabled == true) { + DOMutil.drawPoint(x + 0.5 * iconWidth,y, this, JSONcontainer, SVGcontainer); } } + else { + var barWidth = Math.round(0.3 * iconWidth); + var bar1Height = Math.round(0.4 * iconHeight); + var bar2Height = Math.round(0.75 * iconHeight); - var changed = (this.start != newStart || this.end != newEnd); + var offset = Math.round((iconWidth - (2 * barWidth))/3); - // if the new range does NOT overlap with the old range, emit checkRangedItems to avoid not showing ranged items (ranged meaning has end time, not necessarily of type Range) - if (!((newStart >= this.start && newStart <= this.end) || (newEnd >= this.start && newEnd <= this.end)) && - !((this.start >= newStart && this.start <= newEnd) || (this.end >= newStart && this.end <= newEnd) )) { - this.body.emitter.emit('checkRangedItems'); + DOMutil.drawBar(x + 0.5*barWidth + offset , y + fillHeight - bar1Height - 1, barWidth, bar1Height, this.className + ' bar', JSONcontainer, SVGcontainer); + DOMutil.drawBar(x + 1.5*barWidth + offset + 2, y + fillHeight - bar2Height - 1, barWidth, bar2Height, this.className + ' bar', JSONcontainer, SVGcontainer); } - - this.start = newStart; - this.end = newEnd; - return changed; }; - /** - * Retrieve the current range. - * @return {Object} An object with start and end properties - */ - Range.prototype.getRange = function() { - return { - start: this.start, - end: this.end - }; - }; - - /** - * Calculate the conversion offset and scale for current range, based on - * the provided width - * @param {Number} width - * @returns {{offset: number, scale: number}} conversion - */ - Range.prototype.conversion = function (width, totalHidden) { - return Range.conversion(this.start, this.end, width, totalHidden); - }; - - /** - * Static method to calculate the conversion offset and scale for a range, - * based on the provided start, end, and width - * @param {Number} start - * @param {Number} end - * @param {Number} width - * @returns {{offset: number, scale: number}} conversion - */ - Range.conversion = function (start, end, width, totalHidden) { - if (totalHidden === undefined) { - totalHidden = 0; - } - if (width != 0 && (end - start != 0)) { - return { - offset: start, - scale: width / (end - start - totalHidden) - } - } - else { - return { - offset: 0, - scale: 1 - }; - } - }; /** - * Start dragging horizontally or vertically - * @param {Event} event - * @private + * return the legend entree for this group. + * + * @param iconWidth + * @param iconHeight + * @returns {{icon: HTMLElement, label: (group.content|*|string), orientation: (.options.yAxisOrientation|*)}} */ - Range.prototype._onDragStart = function(event) { - this.deltaDifference = 0; - this.previousDelta = 0; - // only allow dragging when configured as movable - if (!this.options.moveable) return; + GraphGroup.prototype.getLegend = function(iconWidth, iconHeight) { + var svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); + this.drawIcon(0,0.5*iconHeight,[],svg,iconWidth,iconHeight); + return {icon: svg, label: this.content, orientation:this.options.yAxisOrientation}; + } - // refuse to drag when we where pinching to prevent the timeline make a jump - // when releasing the fingers in opposite order from the touch screen - if (!this.props.touch.allowDragging) return; + GraphGroup.prototype.getYRange = function(groupData) { + return this.type.getYRange(groupData); + } - this.props.touch.start = this.start; - this.props.touch.end = this.end; - this.props.touch.dragging = true; + GraphGroup.prototype.draw = function(dataset, group, framework) { + this.type.draw(dataset, group, framework); + } - if (this.body.dom.root) { - this.body.dom.root.style.cursor = 'move'; - } - }; - /** - * Perform dragging operation - * @param {Event} event - * @private - */ - Range.prototype._onDrag = function (event) { - // only allow dragging when configured as movable - if (!this.options.moveable) return; - // refuse to drag when we where pinching to prevent the timeline make a jump - // when releasing the fingers in opposite order from the touch screen - if (!this.props.touch.allowDragging) return; + module.exports = GraphGroup; - var direction = this.options.direction; - validateDirection(direction); - var delta = (direction == 'horizontal') ? event.gesture.deltaX : event.gesture.deltaY; - delta -= this.deltaDifference; - var interval = (this.props.touch.end - this.props.touch.start); +/***/ }, +/* 30 */ +/***/ function(module, exports, __webpack_require__) { - // normalize dragging speed if cutout is in between. - var duration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); - interval -= duration; + var util = __webpack_require__(1); + var stack = __webpack_require__(18); + var RangeItem = __webpack_require__(24); - var width = (direction == 'horizontal') ? this.body.domProps.center.width : this.body.domProps.center.height; - var diffRange = -delta / width * interval; - var newStart = this.props.touch.start + diffRange; - var newEnd = this.props.touch.end + diffRange; + /** + * @constructor Group + * @param {Number | String} groupId + * @param {Object} data + * @param {ItemSet} itemSet + */ + function Group (groupId, data, itemSet) { + this.groupId = groupId; + this.subgroups = {}; + this.subgroupIndex = 0; + this.subgroupOrderer = data && data.subgroupOrder; + this.itemSet = itemSet; + this.dom = {}; + this.props = { + label: { + width: 0, + height: 0 + } + }; + this.className = null; - // snapping times away from hidden zones - var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, this.previousDelta-delta, true); - var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, this.previousDelta-delta, true); - if (safeStart != newStart || safeEnd != newEnd) { - this.deltaDifference += delta; - this.props.touch.start = safeStart; - this.props.touch.end = safeEnd; - this._onDrag(event); - return; - } + this.items = {}; // items filtered by groupId of this group + this.visibleItems = []; // items currently visible in window + this.orderedItems = { + byStart: [], + byEnd: [] + }; + this.checkRangedItems = false; // needed to refresh the ranged items if the window is programatically changed with NO overlap. + var me = this; + this.itemSet.body.emitter.on("checkRangedItems", function () { + me.checkRangedItems = true; + }) - this.previousDelta = delta; - this._applyRange(newStart, newEnd); + this._create(); - // fire a rangechange event - this.body.emitter.emit('rangechange', { - start: new Date(this.start), - end: new Date(this.end), - byUser: true - }); - }; + this.setData(data); + } /** - * Stop dragging operation - * @param {event} event + * Create DOM elements for the group * @private */ - Range.prototype._onDragEnd = function (event) { - // only allow dragging when configured as movable - if (!this.options.moveable) return; + Group.prototype._create = function() { + var label = document.createElement('div'); + label.className = 'vlabel'; + this.dom.label = label; - // refuse to drag when we where pinching to prevent the timeline make a jump - // when releasing the fingers in opposite order from the touch screen - if (!this.props.touch.allowDragging) return; + var inner = document.createElement('div'); + inner.className = 'inner'; + label.appendChild(inner); + this.dom.inner = inner; - this.props.touch.dragging = false; - if (this.body.dom.root) { - this.body.dom.root.style.cursor = 'auto'; - } + var foreground = document.createElement('div'); + foreground.className = 'group'; + foreground['timeline-group'] = this; + this.dom.foreground = foreground; - // fire a rangechanged event - this.body.emitter.emit('rangechanged', { - start: new Date(this.start), - end: new Date(this.end), - byUser: true - }); + this.dom.background = document.createElement('div'); + this.dom.background.className = 'group'; + + this.dom.axis = document.createElement('div'); + this.dom.axis.className = 'group'; + + // create a hidden marker to detect when the Timelines container is attached + // to the DOM, or the style of a parent of the Timeline is changed from + // display:none is changed to visible. + this.dom.marker = document.createElement('div'); + this.dom.marker.style.visibility = 'hidden'; // TODO: ask jos why this is not none? + this.dom.marker.innerHTML = '?'; + this.dom.background.appendChild(this.dom.marker); }; /** - * Event handler for mouse wheel event, used to zoom - * Code from http://adomas.org/javascript-mouse-wheel/ - * @param {Event} event - * @private + * Set the group data for this group + * @param {Object} data Group data, can contain properties content and className */ - Range.prototype._onMouseWheel = function(event) { - // only allow zooming when configured as zoomable and moveable - if (!(this.options.zoomable && this.options.moveable)) return; - - // retrieve delta - var delta = 0; - if (event.wheelDelta) { /* IE/Opera. */ - delta = event.wheelDelta / 120; - } else if (event.detail) { /* Mozilla case. */ - // In Mozilla, sign of delta is different than in IE. - // Also, delta is multiple of 3. - delta = -event.detail / 3; + Group.prototype.setData = function(data) { + // update contents + var content = data && data.content; + if (content instanceof Element) { + this.dom.inner.appendChild(content); + } + else if (content !== undefined && content !== null) { + this.dom.inner.innerHTML = content; + } + else { + this.dom.inner.innerHTML = this.groupId || ''; // groupId can be null } - // If delta is nonzero, handle it. - // Basically, delta is now positive if wheel was scrolled up, - // and negative, if wheel was scrolled down. - if (delta) { - // perform the zoom action. Delta is normally 1 or -1 - - // adjust a negative delta such that zooming in with delta 0.1 - // equals zooming out with a delta -0.1 - var scale; - if (delta < 0) { - scale = 1 - (delta / 5); - } - else { - scale = 1 / (1 + (delta / 5)) ; - } + // update title + this.dom.label.title = data && data.title || ''; - // calculate center, the date to zoom around - var gesture = hammerUtil.fakeGesture(this, event), - pointer = getPointer(gesture.center, this.body.dom.center), - pointerDate = this._pointerToDate(pointer); + if (!this.dom.inner.firstChild) { + util.addClassName(this.dom.inner, 'hidden'); + } + else { + util.removeClassName(this.dom.inner, 'hidden'); + } - this.zoom(scale, pointerDate, delta); + // update className + var className = data && data.className || null; + if (className != this.className) { + if (this.className) { + util.removeClassName(this.dom.label, this.className); + util.removeClassName(this.dom.foreground, this.className); + util.removeClassName(this.dom.background, this.className); + util.removeClassName(this.dom.axis, this.className); + } + util.addClassName(this.dom.label, className); + util.addClassName(this.dom.foreground, className); + util.addClassName(this.dom.background, className); + util.addClassName(this.dom.axis, className); + this.className = className; } - // Prevent default actions caused by mouse wheel - // (else the page and timeline both zoom and scroll) - event.preventDefault(); + // update style + if (this.style) { + util.removeCssText(this.dom.label, this.style); + this.style = null; + } + if (data && data.style) { + util.addCssText(this.dom.label, data.style); + this.style = data.style; + } }; /** - * Start of a touch gesture - * @private + * Get the width of the group label + * @return {number} width */ - Range.prototype._onTouch = function (event) { - this.props.touch.start = this.start; - this.props.touch.end = this.end; - this.props.touch.allowDragging = true; - this.props.touch.center = null; - this.scaleOffset = 0; - this.deltaDifference = 0; + Group.prototype.getLabelWidth = function() { + return this.props.label.width; }; - /** - * On start of a hold gesture - * @private - */ - Range.prototype._onHold = function () { - this.props.touch.allowDragging = false; - }; /** - * Handle pinch event - * @param {Event} event - * @private + * Repaint this group + * @param {{start: number, end: number}} range + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @param {boolean} [restack=false] Force restacking of all items + * @return {boolean} Returns true if the group is resized */ - Range.prototype._onPinch = function (event) { - // only allow zooming when configured as zoomable and moveable - if (!(this.options.zoomable && this.options.moveable)) return; + Group.prototype.redraw = function(range, margin, restack) { + var resized = false; - this.props.touch.allowDragging = false; + // force recalculation of the height of the items when the marker height changed + // (due to the Timeline being attached to the DOM or changed from display:none to visible) + var markerHeight = this.dom.marker.clientHeight; + if (markerHeight != this.lastMarkerHeight) { + this.lastMarkerHeight = markerHeight; - if (event.gesture.touches.length > 1) { - if (!this.props.touch.center) { - this.props.touch.center = getPointer(event.gesture.center, this.body.dom.center); - } + util.forEach(this.items, function (item) { + item.dirty = true; + if (item.displayed) item.redraw(); + }); - var scale = 1 / (event.gesture.scale + this.scaleOffset); - var centerDate = this._pointerToDate(this.props.touch.center); + restack = true; + } - var hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); - var hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this, centerDate); - var hiddenDurationAfter = hiddenDuration - hiddenDurationBefore; + // reposition visible items vertically + if (typeof this.itemSet.options.order === 'function') { + // a custom order function - // calculate new start and end - var newStart = (centerDate - hiddenDurationBefore) + (this.props.touch.start - (centerDate - hiddenDurationBefore)) * scale; - var newEnd = (centerDate + hiddenDurationAfter) + (this.props.touch.end - (centerDate + hiddenDurationAfter)) * scale; + if (restack) { + // brute force restack of all items - // snapping times away from hidden zones - this.startToFront = 1 - scale > 0 ? false : true; // used to do the right autocorrection with periodic hidden times - this.endToFront = scale - 1 > 0 ? false : true; // used to do the right autocorrection with periodic hidden times + // show all items + var me = this; + util.forEach(this.items, function (item) { + if (!item.displayed) { + item.redraw(); + me.visibleItems.push(item); + } + item.repositionX(); + }); - var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, 1 - scale, true); - var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, scale - 1, true); - if (safeStart != newStart || safeEnd != newEnd) { - this.props.touch.start = safeStart; - this.props.touch.end = safeEnd; - this.scaleOffset = 1 - event.gesture.scale; - newStart = safeStart; - newEnd = safeEnd; + // order all items and force a restacking + var customOrderedItems = this.orderedItems.byStart.slice().sort(function (a, b) { + return me.itemSet.options.order(a.data, b.data); + }); + stack.stack(customOrderedItems, margin, true /* restack=true */); } - this.setRange(newStart, newEnd, false, true); + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); + } + else { + // no custom order function, lazy stacking + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - this.startToFront = false; // revert to default - this.endToFront = true; // revert to default + if (this.itemSet.options.stack) { // TODO: ugly way to access options... + stack.stack(this.visibleItems, margin, restack); + } + else { // no stacking + stack.nostack(this.visibleItems, margin, this.subgroups); + } } - }; - /** - * Helper function to calculate the center date for zooming - * @param {{x: Number, y: Number}} pointer - * @return {number} date - * @private - */ - Range.prototype._pointerToDate = function (pointer) { - var conversion; - var direction = this.options.direction; + // recalculate the height of the group + var height = this._calculateHeight(margin); - validateDirection(direction); + // calculate actual size and position + var foreground = this.dom.foreground; + this.top = foreground.offsetTop; + this.left = foreground.offsetLeft; + this.width = foreground.offsetWidth; + resized = util.updateProperty(this, 'height', height) || resized; - if (direction == 'horizontal') { - return this.body.util.toTime(pointer.x).valueOf(); - } - else { - var height = this.body.domProps.center.height; - conversion = this.conversion(height); - return pointer.y / conversion.scale + conversion.offset; + // recalculate size of label + resized = util.updateProperty(this.props.label, 'width', this.dom.inner.clientWidth) || resized; + resized = util.updateProperty(this.props.label, 'height', this.dom.inner.clientHeight) || resized; + + // apply new height + this.dom.background.style.height = height + 'px'; + this.dom.foreground.style.height = height + 'px'; + this.dom.label.style.height = height + 'px'; + + // update vertical position of items after they are re-stacked and the height of the group is calculated + for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { + var item = this.visibleItems[i]; + item.repositionY(margin); } + + return resized; }; /** - * Get the pointer location relative to the location of the dom element - * @param {{pageX: Number, pageY: Number}} touch - * @param {Element} element HTML DOM element - * @return {{x: Number, y: Number}} pointer - * @private - */ - function getPointer (touch, element) { - return { - x: touch.pageX - util.getAbsoluteLeft(element), - y: touch.pageY - util.getAbsoluteTop(element) - }; - } + * recalculate the height of the group + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @returns {number} Returns the height + * @private + */ + Group.prototype._calculateHeight = function (margin) { + // recalculate the height of the group + var height; + var visibleItems = this.visibleItems; + //var visibleSubgroups = []; + //this.visibleSubgroups = 0; + this.resetSubgroups(); + var me = this; + if (visibleItems.length) { + var min = visibleItems[0].top; + var max = visibleItems[0].top + visibleItems[0].height; + util.forEach(visibleItems, function (item) { + min = Math.min(min, item.top); + max = Math.max(max, (item.top + item.height)); + if (item.data.subgroup !== undefined) { + me.subgroups[item.data.subgroup].height = Math.max(me.subgroups[item.data.subgroup].height,item.height); + me.subgroups[item.data.subgroup].visible = true; + //if (visibleSubgroups.indexOf(item.data.subgroup) == -1){ + // visibleSubgroups.push(item.data.subgroup); + // me.visibleSubgroups += 1; + //} + } + }); + if (min > margin.axis) { + // there is an empty gap between the lowest item and the axis + var offset = min - margin.axis; + max -= offset; + util.forEach(visibleItems, function (item) { + item.top -= offset; + }); + } + height = max + margin.item.vertical / 2; + } + else { + height = margin.axis + margin.item.vertical; + } + height = Math.max(height, this.props.label.height); + + return height; + }; /** - * Zoom the range the given scale in or out. Start and end date will - * be adjusted, and the timeline will be redrawn. You can optionally give a - * date around which to zoom. - * For example, try scale = 0.9 or 1.1 - * @param {Number} scale Scaling factor. Values above 1 will zoom out, - * values below 1 will zoom in. - * @param {Number} [center] Value representing a date around which will - * be zoomed. + * Show this group: attach to the DOM */ - Range.prototype.zoom = function(scale, center, delta) { - // if centerDate is not provided, take it half between start Date and end Date - if (center == null) { - center = (this.start + this.end) / 2; + Group.prototype.show = function() { + if (!this.dom.label.parentNode) { + this.itemSet.dom.labelSet.appendChild(this.dom.label); } - var hiddenDuration = DateUtil.getHiddenDurationBetween(this.body.hiddenDates, this.start, this.end); - var hiddenDurationBefore = DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this, center); - var hiddenDurationAfter = hiddenDuration - hiddenDurationBefore; + if (!this.dom.foreground.parentNode) { + this.itemSet.dom.foreground.appendChild(this.dom.foreground); + } - // calculate new start and end - var newStart = (center-hiddenDurationBefore) + (this.start - (center-hiddenDurationBefore)) * scale; - var newEnd = (center+hiddenDurationAfter) + (this.end - (center+hiddenDurationAfter)) * scale; + if (!this.dom.background.parentNode) { + this.itemSet.dom.background.appendChild(this.dom.background); + } - // snapping times away from hidden zones - this.startToFront = delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times - this.endToFront = -delta > 0 ? false : true; // used to do the right autocorrection with periodic hidden times - var safeStart = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newStart, delta, true); - var safeEnd = DateUtil.snapAwayFromHidden(this.body.hiddenDates, newEnd, -delta, true); - if (safeStart != newStart || safeEnd != newEnd) { - newStart = safeStart; - newEnd = safeEnd; + if (!this.dom.axis.parentNode) { + this.itemSet.dom.axis.appendChild(this.dom.axis); } + }; - this.setRange(newStart, newEnd, false, true); + /** + * Hide this group: remove from the DOM + */ + Group.prototype.hide = function() { + var label = this.dom.label; + if (label.parentNode) { + label.parentNode.removeChild(label); + } - this.startToFront = false; // revert to default - this.endToFront = true; // revert to default - }; + var foreground = this.dom.foreground; + if (foreground.parentNode) { + foreground.parentNode.removeChild(foreground); + } + var background = this.dom.background; + if (background.parentNode) { + background.parentNode.removeChild(background); + } + var axis = this.dom.axis; + if (axis.parentNode) { + axis.parentNode.removeChild(axis); + } + }; /** - * Move the range with a given delta to the left or right. Start and end - * value will be adjusted. For example, try delta = 0.1 or -0.1 - * @param {Number} delta Moving amount. Positive value will move right, - * negative value will move left + * Add an item to the group + * @param {Item} item */ - Range.prototype.move = function(delta) { - // zoom start Date and end Date relative to the centerDate - var diff = (this.end - this.start); + Group.prototype.add = function(item) { + this.items[item.id] = item; + item.setParent(this); - // apply new values - var newStart = this.start + diff * delta; - var newEnd = this.end + diff * delta; + // add to + if (item.data.subgroup !== undefined) { + if (this.subgroups[item.data.subgroup] === undefined) { + this.subgroups[item.data.subgroup] = {height:0, visible: false, index:this.subgroupIndex, items: []}; + this.subgroupIndex++; + } + this.subgroups[item.data.subgroup].items.push(item); + } + this.orderSubgroups(); - // TODO: reckon with min and max range + if (this.visibleItems.indexOf(item) == -1) { + var range = this.itemSet.body.range; // TODO: not nice accessing the range like this + this._checkIfVisible(item, this.visibleItems, range); + } + }; - this.start = newStart; - this.end = newEnd; + Group.prototype.orderSubgroups = function() { + if (this.subgroupOrderer !== undefined) { + var sortArray = []; + if (typeof this.subgroupOrderer == 'string') { + for (var subgroup in this.subgroups) { + sortArray.push({subgroup: subgroup, sortField: this.subgroups[subgroup].items[0].data[this.subgroupOrderer]}) + } + sortArray.sort(function (a, b) { + return a.sortField - b.sortField; + }) + } + else if (typeof this.subgroupOrderer == 'function') { + for (var subgroup in this.subgroups) { + sortArray.push(this.subgroups[subgroup].items[0].data); + } + sortArray.sort(this.subgroupOrderer); + } + + if (sortArray.length > 0) { + for (var i = 0; i < sortArray.length; i++) { + this.subgroups[sortArray[i].subgroup].index = i; + } + } + } + }; + + Group.prototype.resetSubgroups = function() { + for (var subgroup in this.subgroups) { + if (this.subgroups.hasOwnProperty(subgroup)) { + this.subgroups[subgroup].visible = false; + } + } }; /** - * Move the range to a new center point - * @param {Number} moveTo New center point of the range + * Remove an item from the group + * @param {Item} item */ - Range.prototype.moveTo = function(moveTo) { - var center = (this.start + this.end) / 2; + Group.prototype.remove = function(item) { + delete this.items[item.id]; + item.setParent(null); - var diff = center - moveTo; + // remove from visible items + var index = this.visibleItems.indexOf(item); + if (index != -1) this.visibleItems.splice(index, 1); - // calculate new start and end - var newStart = this.start - diff; - var newEnd = this.end - diff; + // TODO: also remove from ordered items? + }; - this.setRange(newStart, newEnd); + + /** + * Remove an item from the corresponding DataSet + * @param {Item} item + */ + Group.prototype.removeFromDataSet = function(item) { + this.itemSet.removeItem(item.id); }; - module.exports = Range; + /** + * Reorder the items + */ + Group.prototype.order = function() { + var array = util.toArray(this.items); + var startArray = []; + var endArray = []; -/***/ }, -/* 22 */ -/***/ function(module, exports, __webpack_require__) { + for (var i = 0; i < array.length; i++) { + if (array[i].data.end !== undefined) { + endArray.push(array[i]); + } + startArray.push(array[i]); + } + this.orderedItems = { + byStart: startArray, + byEnd: endArray + }; + + stack.orderByStart(this.orderedItems.byStart); + stack.orderByEnd(this.orderedItems.byEnd); + }; - var Hammer = __webpack_require__(19); /** - * Fake a hammer.js gesture. Event can be a ScrollEvent or MouseMoveEvent - * @param {Element} element - * @param {Event} event + * Update the visible items + * @param {{byStart: Item[], byEnd: Item[]}} orderedItems All items ordered by start date and by end date + * @param {Item[]} visibleItems The previously visible items. + * @param {{start: number, end: number}} range Visible range + * @return {Item[]} visibleItems The new visible items. + * @private */ - exports.fakeGesture = function(element, event) { - var eventType = null; + Group.prototype._updateVisibleItems = function(orderedItems, oldVisibleItems, range) { + var visibleItems = []; + var visibleItemsLookup = {}; // we keep this to quickly look up if an item already exists in the list without using indexOf on visibleItems + var interval = (range.end - range.start) / 4; + var lowerBound = range.start - interval; + var upperBound = range.end + interval; + var item, i; - // for hammer.js 1.0.5 - // var gesture = Hammer.event.collectEventData(this, eventType, event); + // this function is used to do the binary search. + var searchFunction = function (value) { + if (value < lowerBound) {return -1;} + else if (value <= upperBound) {return 0;} + else {return 1;} + } - // for hammer.js 1.0.6+ - var touches = Hammer.event.getTouchList(event, eventType); - var gesture = Hammer.event.collectEventData(this, eventType, touches, event); + // first check if the items that were in view previously are still in view. + // IMPORTANT: this handles the case for the items with startdate before the window and enddate after the window! + // also cleans up invisible items. + if (oldVisibleItems.length > 0) { + for (i = 0; i < oldVisibleItems.length; i++) { + this._checkIfVisibleWithReference(oldVisibleItems[i], visibleItems, visibleItemsLookup, range); + } + } - // on IE in standards mode, no touches are recognized by hammer.js, - // resulting in NaN values for center.pageX and center.pageY - if (isNaN(gesture.center.pageX)) { - gesture.center.pageX = event.pageX; + // we do a binary search for the items that have only start values. + var initialPosByStart = util.binarySearchCustom(orderedItems.byStart, searchFunction, 'data','start'); + + // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the start values. + this._traceVisible(initialPosByStart, orderedItems.byStart, visibleItems, visibleItemsLookup, function (item) { + return (item.data.start < lowerBound || item.data.start > upperBound); + }); + + // if the window has changed programmatically without overlapping the old window, the ranged items with start < lowerBound and end > upperbound are not shown. + // We therefore have to brute force check all items in the byEnd list + if (this.checkRangedItems == true) { + this.checkRangedItems = false; + for (i = 0; i < orderedItems.byEnd.length; i++) { + this._checkIfVisibleWithReference(orderedItems.byEnd[i], visibleItems, visibleItemsLookup, range); + } } - if (isNaN(gesture.center.pageY)) { - gesture.center.pageY = event.pageY; + else { + // we do a binary search for the items that have defined end times. + var initialPosByEnd = util.binarySearchCustom(orderedItems.byEnd, searchFunction, 'data','end'); + + // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the end values. + this._traceVisible(initialPosByEnd, orderedItems.byEnd, visibleItems, visibleItemsLookup, function (item) { + return (item.data.end < lowerBound || item.data.end > upperBound); + }); } - return gesture; + + // finally, we reposition all the visible items. + for (i = 0; i < visibleItems.length; i++) { + item = visibleItems[i]; + if (!item.displayed) item.show(); + // reposition item horizontally + item.repositionX(); + } + + // debug + //console.log("new line") + //if (this.groupId == null) { + // for (i = 0; i < orderedItems.byStart.length; i++) { + // item = orderedItems.byStart[i].data; + // console.log('start',i,initialPosByStart, item.start.valueOf(), item.content, item.start >= lowerBound && item.start <= upperBound,i == initialPosByStart ? "<------------------- HEREEEE" : "") + // } + // for (i = 0; i < orderedItems.byEnd.length; i++) { + // item = orderedItems.byEnd[i].data; + // console.log('rangeEnd',i,initialPosByEnd, item.end.valueOf(), item.content, item.end >= range.start && item.end <= range.end,i == initialPosByEnd ? "<------------------- HEREEEE" : "") + // } + //} + + return visibleItems; }; + Group.prototype._traceVisible = function (initialPos, items, visibleItems, visibleItemsLookup, breakCondition) { + var item; + var i; -/***/ }, -/* 23 */ -/***/ function(module, exports, __webpack_require__) { + if (initialPos != -1) { + for (i = initialPos; i >= 0; i--) { + item = items[i]; + if (breakCondition(item)) { + break; + } + else { + if (visibleItemsLookup[item.id] === undefined) { + visibleItemsLookup[item.id] = true; + visibleItems.push(item); + } + } + } - /** - * Prototype for visual components - * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body] - * @param {Object} [options] - */ - function Component (body, options) { - this.options = null; - this.props = null; + for (i = initialPos + 1; i < items.length; i++) { + item = items[i]; + if (breakCondition(item)) { + break; + } + else { + if (visibleItemsLookup[item.id] === undefined) { + visibleItemsLookup[item.id] = true; + visibleItems.push(item); + } + } + } + } } - /** - * Set options for the component. The new options will be merged into the - * current options. - * @param {Object} options - */ - Component.prototype.setOptions = function(options) { - if (options) { - util.extend(this.options, options); - } - }; /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * this function is very similar to the _checkIfInvisible() but it does not + * return booleans, hides the item if it should not be seen and always adds to + * the visibleItems. + * this one is for brute forcing and hiding. + * + * @param {Item} item + * @param {Array} visibleItems + * @param {{start:number, end:number}} range + * @private */ - Component.prototype.redraw = function() { - // should be implemented by the component - return false; + Group.prototype._checkIfVisible = function(item, visibleItems, range) { + if (item.isVisible(range)) { + if (!item.displayed) item.show(); + // reposition item horizontally + item.repositionX(); + visibleItems.push(item); + } + else { + if (item.displayed) item.hide(); + } }; - /** - * Destroy the component. Cleanup DOM and event listeners - */ - Component.prototype.destroy = function() { - // should be implemented by the component - }; /** - * Test whether the component is resized since the last time _isResized() was - * called. - * @return {Boolean} Returns true if the component is resized - * @protected + * this function is very similar to the _checkIfInvisible() but it does not + * return booleans, hides the item if it should not be seen and always adds to + * the visibleItems. + * this one is for brute forcing and hiding. + * + * @param {Item} item + * @param {Array} visibleItems + * @param {{start:number, end:number}} range + * @private */ - Component.prototype._isResized = function() { - var resized = (this.props._previousWidth !== this.props.width || - this.props._previousHeight !== this.props.height); + Group.prototype._checkIfVisibleWithReference = function(item, visibleItems, visibleItemsLookup, range) { + if (item.isVisible(range)) { + if (visibleItemsLookup[item.id] === undefined) { + visibleItemsLookup[item.id] = true; + visibleItems.push(item); + } + } + else { + if (item.displayed) item.hide(); + } + }; - this.props._previousWidth = this.props.width; - this.props._previousHeight = this.props.height; - return resized; - }; - module.exports = Component; + module.exports = Group; /***/ }, -/* 24 */ +/* 31 */ /***/ function(module, exports, __webpack_require__) { + var util = __webpack_require__(1); + var Group = __webpack_require__(30); + /** - * Created by Alex on 10/3/2014. + * @constructor BackgroundGroup + * @param {Number | String} groupId + * @param {Object} data + * @param {ItemSet} itemSet */ - var moment = __webpack_require__(2); + function BackgroundGroup (groupId, data, itemSet) { + Group.call(this, groupId, data, itemSet); + + this.width = 0; + this.height = 0; + this.top = 0; + this.left = 0; + } + BackgroundGroup.prototype = Object.create(Group.prototype); /** - * used in Core to convert the options into a volatile variable - * - * @param Core + * Repaint this group + * @param {{start: number, end: number}} range + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @param {boolean} [restack=false] Force restacking of all items + * @return {boolean} Returns true if the group is resized */ - exports.convertHiddenOptions = function(body, hiddenDates) { - body.hiddenDates = []; - if (hiddenDates) { - if (Array.isArray(hiddenDates) == true) { - for (var i = 0; i < hiddenDates.length; i++) { - if (hiddenDates[i].repeat === undefined) { - var dateItem = {}; - dateItem.start = moment(hiddenDates[i].start).toDate().valueOf(); - dateItem.end = moment(hiddenDates[i].end).toDate().valueOf(); - body.hiddenDates.push(dateItem); - } - } - body.hiddenDates.sort(function (a, b) { - return a.start - b.start; - }); // sort by start time - } + BackgroundGroup.prototype.redraw = function(range, margin, restack) { + var resized = false; + + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); + + // calculate actual size + this.width = this.dom.background.offsetWidth; + + // apply new height (just always zero for BackgroundGroup + this.dom.background.style.height = '0'; + + // update vertical position of items after they are re-stacked and the height of the group is calculated + for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { + var item = this.visibleItems[i]; + item.repositionY(margin); } - }; + return resized; + }; /** - * create new entrees for the repeating hidden dates - * @param body - * @param hiddenDates + * Show this group: attach to the DOM */ - exports.updateHiddenDates = function (body, hiddenDates) { - if (hiddenDates && body.domProps.centerContainer.width !== undefined) { - exports.convertHiddenOptions(body, hiddenDates); + BackgroundGroup.prototype.show = function() { + if (!this.dom.background.parentNode) { + this.itemSet.dom.background.appendChild(this.dom.background); + } + }; - var start = moment(body.range.start); - var end = moment(body.range.end); + module.exports = BackgroundGroup; - var totalRange = (body.range.end - body.range.start); - var pixelTime = totalRange / body.domProps.centerContainer.width; - for (var i = 0; i < hiddenDates.length; i++) { - if (hiddenDates[i].repeat !== undefined) { - var startDate = moment(hiddenDates[i].start); - var endDate = moment(hiddenDates[i].end); - - if (startDate._d == "Invalid Date") { - throw new Error("Supplied start date is not valid: " + hiddenDates[i].start); - } - if (endDate._d == "Invalid Date") { - throw new Error("Supplied end date is not valid: " + hiddenDates[i].end); - } +/***/ }, +/* 32 */ +/***/ function(module, exports, __webpack_require__) { - var duration = endDate - startDate; - if (duration >= 4 * pixelTime) { + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var TimeStep = __webpack_require__(19); + var Component = __webpack_require__(25); + var Group = __webpack_require__(30); + var BackgroundGroup = __webpack_require__(31); + var BoxItem = __webpack_require__(22); + var PointItem = __webpack_require__(23); + var RangeItem = __webpack_require__(24); + var BackgroundItem = __webpack_require__(21); - var offset = 0; - var runUntil = end.clone(); - switch (hiddenDates[i].repeat) { - case "daily": // case of time - if (startDate.day() != endDate.day()) { - offset = 1; - } - startDate.dayOfYear(start.dayOfYear()); - startDate.year(start.year()); - startDate.subtract(7,'days'); - endDate.dayOfYear(start.dayOfYear()); - endDate.year(start.year()); - endDate.subtract(7 - offset,'days'); + var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items + var BACKGROUND = '__background__'; // reserved group id for background items without group - runUntil.add(1, 'weeks'); - break; - case "weekly": - var dayOffset = endDate.diff(startDate,'days') - var day = startDate.day(); + /** + * An ItemSet holds a set of items and ranges which can be displayed in a + * range. The width is determined by the parent of the ItemSet, and the height + * is determined by the size of the items. + * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body + * @param {Object} [options] See ItemSet.setOptions for the available options. + * @constructor ItemSet + * @extends Component + */ + function ItemSet(body, options) { + this.body = body; - // set the start date to the range.start - startDate.date(start.date()); - startDate.month(start.month()); - startDate.year(start.year()); - endDate = startDate.clone(); + this.defaultOptions = { + type: null, // 'box', 'point', 'range', 'background' + orientation: 'bottom', // 'top' or 'bottom' + align: 'auto', // alignment of box items + stack: true, + groupOrder: null, - // force - startDate.day(day); - endDate.day(day); - endDate.add(dayOffset,'days'); + selectable: true, + editable: { + updateTime: false, + updateGroup: false, + add: false, + remove: false + }, - startDate.subtract(1,'weeks'); - endDate.subtract(1,'weeks'); + snap: TimeStep.snap, - runUntil.add(1, 'weeks'); - break - case "monthly": - if (startDate.month() != endDate.month()) { - offset = 1; - } - startDate.month(start.month()); - startDate.year(start.year()); - startDate.subtract(1,'months'); + onAdd: function (item, callback) { + callback(item); + }, + onUpdate: function (item, callback) { + callback(item); + }, + onMove: function (item, callback) { + callback(item); + }, + onRemove: function (item, callback) { + callback(item); + }, + onMoving: function (item, callback) { + callback(item); + }, - endDate.month(start.month()); - endDate.year(start.year()); - endDate.subtract(1,'months'); - endDate.add(offset,'months'); + margin: { + item: { + horizontal: 10, + vertical: 10 + }, + axis: 20 + }, + padding: 5 + }; - runUntil.add(1, 'months'); - break; - case "yearly": - if (startDate.year() != endDate.year()) { - offset = 1; - } - startDate.year(start.year()); - startDate.subtract(1,'years'); - endDate.year(start.year()); - endDate.subtract(1,'years'); - endDate.add(offset,'years'); + // options is shared by this ItemSet and all its items + this.options = util.extend({}, this.defaultOptions); - runUntil.add(1, 'years'); - break; - default: - console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:", hiddenDates[i].repeat); - return; - } - while (startDate < runUntil) { - body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()}); - switch (hiddenDates[i].repeat) { - case "daily": - startDate.add(1, 'days'); - endDate.add(1, 'days'); - break; - case "weekly": - startDate.add(1, 'weeks'); - endDate.add(1, 'weeks'); - break - case "monthly": - startDate.add(1, 'months'); - endDate.add(1, 'months'); - break; - case "yearly": - startDate.add(1, 'y'); - endDate.add(1, 'y'); - break; - default: - console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:", hiddenDates[i].repeat); - return; - } - } - body.hiddenDates.push({start: startDate.valueOf(), end: endDate.valueOf()}); - } - } - } - // remove duplicates, merge where possible - exports.removeDuplicates(body); - // ensure the new positions are not on hidden dates - var startHidden = exports.isHidden(body.range.start, body.hiddenDates); - var endHidden = exports.isHidden(body.range.end,body.hiddenDates); - var rangeStart = body.range.start; - var rangeEnd = body.range.end; - if (startHidden.hidden == true) {rangeStart = body.range.startToFront == true ? startHidden.startDate - 1 : startHidden.endDate + 1;} - if (endHidden.hidden == true) {rangeEnd = body.range.endToFront == true ? endHidden.startDate - 1 : endHidden.endDate + 1;} - if (startHidden.hidden == true || endHidden.hidden == true) { - body.range._applyRange(rangeStart, rangeEnd); - } - } + // options for getting items from the DataSet with the correct type + this.itemOptions = { + type: {start: 'Date', end: 'Date'} + }; - } + this.conversion = { + toScreen: body.util.toScreen, + toTime: body.util.toTime + }; + this.dom = {}; + this.props = {}; + this.hammer = null; + var me = this; + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet - /** - * remove duplicates from the hidden dates list. Duplicates are evil. They mess everything up. - * Scales with N^2 - * @param body - */ - exports.removeDuplicates = function(body) { - var hiddenDates = body.hiddenDates; - var safeDates = []; - for (var i = 0; i < hiddenDates.length; i++) { - for (var j = 0; j < hiddenDates.length; j++) { - if (i != j && hiddenDates[j].remove != true && hiddenDates[i].remove != true) { - // j inside i - if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) { - hiddenDates[j].remove = true; - } - // j start inside i - else if (hiddenDates[j].start >= hiddenDates[i].start && hiddenDates[j].start <= hiddenDates[i].end) { - hiddenDates[i].end = hiddenDates[j].end; - hiddenDates[j].remove = true; - } - // j end inside i - else if (hiddenDates[j].end >= hiddenDates[i].start && hiddenDates[j].end <= hiddenDates[i].end) { - hiddenDates[i].start = hiddenDates[j].start; - hiddenDates[j].remove = true; - } - } + // listeners for the DataSet of the items + this.itemListeners = { + 'add': function (event, params, senderId) { + me._onAdd(params.items); + }, + 'update': function (event, params, senderId) { + me._onUpdate(params.items); + }, + 'remove': function (event, params, senderId) { + me._onRemove(params.items); } - } + }; - for (var i = 0; i < hiddenDates.length; i++) { - if (hiddenDates[i].remove !== true) { - safeDates.push(hiddenDates[i]); + // listeners for the DataSet of the groups + this.groupListeners = { + 'add': function (event, params, senderId) { + me._onAddGroups(params.items); + }, + 'update': function (event, params, senderId) { + me._onUpdateGroups(params.items); + }, + 'remove': function (event, params, senderId) { + me._onRemoveGroups(params.items); } - } + }; - body.hiddenDates = safeDates; - body.hiddenDates.sort(function (a, b) { - return a.start - b.start; - }); // sort by start time - } + this.items = {}; // object with an Item for every data item + this.groups = {}; // Group object for every group + this.groupIds = []; - exports.printDates = function(dates) { - for (var i =0; i < dates.length; i++) { - console.log(i, new Date(dates[i].start),new Date(dates[i].end), dates[i].start, dates[i].end, dates[i].remove); - } - } + this.selection = []; // list with the ids of all selected nodes + this.stackDirty = true; // if true, all items will be restacked on next redraw - /** - * Used in TimeStep to avoid the hidden times. - * @param timeStep - * @param previousTime - */ - exports.stepOverHiddenDates = function(timeStep, previousTime) { - var stepInHidden = false; - var currentValue = timeStep.current.valueOf(); - for (var i = 0; i < timeStep.hiddenDates.length; i++) { - var startDate = timeStep.hiddenDates[i].start; - var endDate = timeStep.hiddenDates[i].end; - if (currentValue >= startDate && currentValue < endDate) { - stepInHidden = true; - break; - } - } + this.touchParams = {}; // stores properties while dragging + // create the HTML DOM - if (stepInHidden == true && currentValue < timeStep._end.valueOf() && currentValue != previousTime) { - var prevValue = moment(previousTime); - var newValue = moment(endDate); - //check if the next step should be major - if (prevValue.year() != newValue.year()) {timeStep.switchedYear = true;} - else if (prevValue.month() != newValue.month()) {timeStep.switchedMonth = true;} - else if (prevValue.dayOfYear() != newValue.dayOfYear()) {timeStep.switchedDay = true;} + this._create(); - timeStep.current = newValue.toDate(); - } - }; + this.setOptions(options); + } + ItemSet.prototype = new Component(); - ///** - // * Used in TimeStep to avoid the hidden times. - // * @param timeStep - // * @param previousTime - // */ - //exports.checkFirstStep = function(timeStep) { - // var stepInHidden = false; - // var currentValue = timeStep.current.valueOf(); - // for (var i = 0; i < timeStep.hiddenDates.length; i++) { - // var startDate = timeStep.hiddenDates[i].start; - // var endDate = timeStep.hiddenDates[i].end; - // if (currentValue >= startDate && currentValue < endDate) { - // stepInHidden = true; - // break; - // } - // } - // - // if (stepInHidden == true && currentValue <= timeStep._end.valueOf()) { - // var newValue = moment(endDate); - // timeStep.current = newValue.toDate(); - // } - //}; + // available item types will be registered here + ItemSet.types = { + background: BackgroundItem, + box: BoxItem, + range: RangeItem, + point: PointItem + }; /** - * replaces the Core toScreen methods - * @param Core - * @param time - * @param width - * @returns {number} + * Create the HTML DOM for the ItemSet */ - exports.toScreen = function(Core, time, width) { - if (Core.body.hiddenDates.length == 0) { - var conversion = Core.range.conversion(width); - return (time.valueOf() - conversion.offset) * conversion.scale; - } - else { - var hidden = exports.isHidden(time, Core.body.hiddenDates) - if (hidden.hidden == true) { - time = hidden.startDate; - } - - var duration = exports.getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end); - time = exports.correctTimeForHidden(Core.body.hiddenDates, Core.range, time); + ItemSet.prototype._create = function(){ + var frame = document.createElement('div'); + frame.className = 'itemset'; + frame['timeline-itemset'] = this; + this.dom.frame = frame; - var conversion = Core.range.conversion(width, duration); - return (time.valueOf() - conversion.offset) * conversion.scale; - } - }; + // create background panel + var background = document.createElement('div'); + background.className = 'background'; + frame.appendChild(background); + this.dom.background = background; + // create foreground panel + var foreground = document.createElement('div'); + foreground.className = 'foreground'; + frame.appendChild(foreground); + this.dom.foreground = foreground; - /** - * Replaces the core toTime methods - * @param body - * @param range - * @param x - * @param width - * @returns {Date} - */ - exports.toTime = function(Core, x, width) { - if (Core.body.hiddenDates.length == 0) { - var conversion = Core.range.conversion(width); - return new Date(x / conversion.scale + conversion.offset); - } - else { - var hiddenDuration = exports.getHiddenDurationBetween(Core.body.hiddenDates, Core.range.start, Core.range.end); - var totalDuration = Core.range.end - Core.range.start - hiddenDuration; - var partialDuration = totalDuration * x / width; - var accumulatedHiddenDuration = exports.getAccumulatedHiddenDuration(Core.body.hiddenDates, Core.range, partialDuration); + // create axis panel + var axis = document.createElement('div'); + axis.className = 'axis'; + this.dom.axis = axis; - var newTime = new Date(accumulatedHiddenDuration + partialDuration + Core.range.start); - return newTime; - } - }; + // create labelset + var labelSet = document.createElement('div'); + labelSet.className = 'labelset'; + this.dom.labelSet = labelSet; + // create ungrouped Group + this._updateUngrouped(); - /** - * Support function - * - * @param hiddenDates - * @param range - * @returns {number} - */ - exports.getHiddenDurationBetween = function(hiddenDates, start, end) { - var duration = 0; - for (var i = 0; i < hiddenDates.length; i++) { - var startDate = hiddenDates[i].start; - var endDate = hiddenDates[i].end; - // if time after the cutout, and the - if (startDate >= start && endDate < end) { - duration += endDate - startDate; - } - } - return duration; - }; + // create background Group + var backgroundGroup = new BackgroundGroup(BACKGROUND, null, this); + backgroundGroup.show(); + this.groups[BACKGROUND] = backgroundGroup; + // attach event listeners + // Note: we bind to the centerContainer for the case where the height + // of the center container is larger than of the ItemSet, so we + // can click in the empty area to create a new item or deselect an item. + this.hammer = Hammer(this.body.dom.centerContainer, { + preventDefault: true + }); - /** - * Support function - * @param hiddenDates - * @param range - * @param time - * @returns {{duration: number, time: *, offset: number}} - */ - exports.correctTimeForHidden = function(hiddenDates, range, time) { - time = moment(time).toDate().valueOf(); - time -= exports.getHiddenDurationBefore(hiddenDates,range,time); - return time; - }; + // drag items when selected + this.hammer.on('touch', this._onTouch.bind(this)); + this.hammer.on('dragstart', this._onDragStart.bind(this)); + this.hammer.on('drag', this._onDrag.bind(this)); + this.hammer.on('dragend', this._onDragEnd.bind(this)); - exports.getHiddenDurationBefore = function(hiddenDates, range, time) { - var timeOffset = 0; - time = moment(time).toDate().valueOf(); + // single select (or unselect) when tapping an item + this.hammer.on('tap', this._onSelectItem.bind(this)); - for (var i = 0; i < hiddenDates.length; i++) { - var startDate = hiddenDates[i].start; - var endDate = hiddenDates[i].end; - // if time after the cutout, and the - if (startDate >= range.start && endDate < range.end) { - if (time >= endDate) { - timeOffset += (endDate - startDate); - } - } - } - return timeOffset; - } + // multi select when holding mouse/touch, or on ctrl+click + this.hammer.on('hold', this._onMultiSelectItem.bind(this)); - /** - * sum the duration from start to finish, including the hidden duration, - * until the required amount has been reached, return the accumulated hidden duration - * @param hiddenDates - * @param range - * @param time - * @returns {{duration: number, time: *, offset: number}} - */ - exports.getAccumulatedHiddenDuration = function(hiddenDates, range, requiredDuration) { - var hiddenDuration = 0; - var duration = 0; - var previousPoint = range.start; - //exports.printDates(hiddenDates) - for (var i = 0; i < hiddenDates.length; i++) { - var startDate = hiddenDates[i].start; - var endDate = hiddenDates[i].end; - // if time after the cutout, and the - if (startDate >= range.start && endDate < range.end) { - duration += startDate - previousPoint; - previousPoint = endDate; - if (duration >= requiredDuration) { - break; - } - else { - hiddenDuration += endDate - startDate; - } - } - } + // add item on doubletap + this.hammer.on('doubletap', this._onAddItem.bind(this)); - return hiddenDuration; + // attach to the DOM + this.show(); }; - - /** - * used to step over to either side of a hidden block. Correction is disabled on tablets, might be set to true - * @param hiddenDates - * @param time - * @param direction - * @param correctionEnabled - * @returns {*} - */ - exports.snapAwayFromHidden = function(hiddenDates, time, direction, correctionEnabled) { - var isHidden = exports.isHidden(time, hiddenDates); - if (isHidden.hidden == true) { - if (direction < 0) { - if (correctionEnabled == true) { - return isHidden.startDate - (isHidden.endDate - time) - 1; - } - else { - return isHidden.startDate - 1; - } - } - else { - if (correctionEnabled == true) { - return isHidden.endDate + (time - isHidden.startDate) + 1; - } - else { - return isHidden.endDate + 1; - } - } - } - else { - return time; - } - - } - - - /** - * Check if a time is hidden - * - * @param time - * @param hiddenDates - * @returns {{hidden: boolean, startDate: Window.start, endDate: *}} - */ - exports.isHidden = function(time, hiddenDates) { - for (var i = 0; i < hiddenDates.length; i++) { - var startDate = hiddenDates[i].start; - var endDate = hiddenDates[i].end; - - if (time >= startDate && time < endDate) { // if the start is entering a hidden zone - return {hidden: true, startDate: startDate, endDate: endDate}; - break; - } - } - return {hidden: false, startDate: startDate, endDate: endDate}; - } - -/***/ }, -/* 25 */ -/***/ function(module, exports, __webpack_require__) { - - var Emitter = __webpack_require__(11); - var Hammer = __webpack_require__(19); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(9); - var Range = __webpack_require__(21); - var ItemSet = __webpack_require__(26); - var TimeAxis = __webpack_require__(35); - var Activator = __webpack_require__(36); - var DateUtil = __webpack_require__(24); - var CustomTime = __webpack_require__(38); - - /** - * Create a timeline visualization - * @param {HTMLElement} container - * @param {vis.DataSet | Array | google.visualization.DataTable} [items] - * @param {Object} [options] See Core.setOptions for the available options. - * @constructor - */ - function Core () {} - - // turn Core into an event emitter - Emitter(Core.prototype); - - /** - * Create the main DOM for the Core: a root panel containing left, right, - * top, bottom, content, and background panel. - * @param {Element} container The container element where the Core will - * be attached. - * @private - */ - Core.prototype._create = function (container) { - this.dom = {}; - - this.dom.root = document.createElement('div'); - this.dom.background = document.createElement('div'); - this.dom.backgroundVertical = document.createElement('div'); - this.dom.backgroundHorizontal = document.createElement('div'); - this.dom.centerContainer = document.createElement('div'); - this.dom.leftContainer = document.createElement('div'); - this.dom.rightContainer = document.createElement('div'); - this.dom.center = document.createElement('div'); - this.dom.left = document.createElement('div'); - this.dom.right = document.createElement('div'); - this.dom.top = document.createElement('div'); - this.dom.bottom = document.createElement('div'); - this.dom.shadowTop = document.createElement('div'); - this.dom.shadowBottom = document.createElement('div'); - this.dom.shadowTopLeft = document.createElement('div'); - this.dom.shadowBottomLeft = document.createElement('div'); - this.dom.shadowTopRight = document.createElement('div'); - this.dom.shadowBottomRight = document.createElement('div'); - - this.dom.root.className = 'vis timeline root'; - this.dom.background.className = 'vispanel background'; - this.dom.backgroundVertical.className = 'vispanel background vertical'; - this.dom.backgroundHorizontal.className = 'vispanel background horizontal'; - this.dom.centerContainer.className = 'vispanel center'; - this.dom.leftContainer.className = 'vispanel left'; - this.dom.rightContainer.className = 'vispanel right'; - this.dom.top.className = 'vispanel top'; - this.dom.bottom.className = 'vispanel bottom'; - this.dom.left.className = 'content'; - this.dom.center.className = 'content'; - this.dom.right.className = 'content'; - this.dom.shadowTop.className = 'shadow top'; - this.dom.shadowBottom.className = 'shadow bottom'; - this.dom.shadowTopLeft.className = 'shadow top'; - this.dom.shadowBottomLeft.className = 'shadow bottom'; - this.dom.shadowTopRight.className = 'shadow top'; - this.dom.shadowBottomRight.className = 'shadow bottom'; - - this.dom.root.appendChild(this.dom.background); - this.dom.root.appendChild(this.dom.backgroundVertical); - this.dom.root.appendChild(this.dom.backgroundHorizontal); - this.dom.root.appendChild(this.dom.centerContainer); - this.dom.root.appendChild(this.dom.leftContainer); - this.dom.root.appendChild(this.dom.rightContainer); - this.dom.root.appendChild(this.dom.top); - this.dom.root.appendChild(this.dom.bottom); - - this.dom.centerContainer.appendChild(this.dom.center); - this.dom.leftContainer.appendChild(this.dom.left); - this.dom.rightContainer.appendChild(this.dom.right); - - this.dom.centerContainer.appendChild(this.dom.shadowTop); - this.dom.centerContainer.appendChild(this.dom.shadowBottom); - this.dom.leftContainer.appendChild(this.dom.shadowTopLeft); - this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft); - this.dom.rightContainer.appendChild(this.dom.shadowTopRight); - this.dom.rightContainer.appendChild(this.dom.shadowBottomRight); - - this.on('rangechange', this._redraw.bind(this)); - this.on('touch', this._onTouch.bind(this)); - this.on('pinch', this._onPinch.bind(this)); - this.on('dragstart', this._onDragStart.bind(this)); - this.on('drag', this._onDrag.bind(this)); - - var me = this; - this.on('change', function (properties) { - if (properties && properties.queue == true) { - // redraw once on next tick - if (!me._redrawTimer) { - me._redrawTimer = setTimeout(function () { - me._redrawTimer = null; - me._redraw(); - }, 0) - } - } - else { - // redraw immediately - me._redraw(); - } - }); - - // create event listeners for all interesting events, these events will be - // emitted via emitter - this.hammer = Hammer(this.dom.root, { - preventDefault: true - }); - this.listeners = {}; - - var events = [ - 'touch', 'pinch', - 'tap', 'doubletap', 'hold', - 'dragstart', 'drag', 'dragend', - 'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox - ]; - events.forEach(function (event) { - var listener = function () { - var args = [event].concat(Array.prototype.slice.call(arguments, 0)); - if (me.isActive()) { - me.emit.apply(me, args); - } - }; - me.hammer.on(event, listener); - me.listeners[event] = listener; - }); - - // size properties of each of the panels - this.props = { - root: {}, - background: {}, - centerContainer: {}, - leftContainer: {}, - rightContainer: {}, - center: {}, - left: {}, - right: {}, - top: {}, - bottom: {}, - border: {}, - scrollTop: 0, - scrollTopMin: 0 - }; - this.touch = {}; // store state information needed for touch events - - this.redrawCount = 0; - - // attach the root panel to the provided container - if (!container) throw new Error('No container provided'); - container.appendChild(this.dom.root); - }; - - /** - * Set options. Options will be passed to all components loaded in the Timeline. - * @param {Object} [options] + * Set options for the ItemSet. Existing options will be extended/overwritten. + * @param {Object} [options] The following options are available: + * {String} type + * Default type for the items. Choose from 'box' + * (default), 'point', 'range', or 'background'. + * The default style can be overwritten by + * individual items. + * {String} align + * Alignment for the items, only applicable for + * BoxItem. Choose 'center' (default), 'left', or + * 'right'. * {String} orientation - * Vertical orientation for the Timeline, - * can be 'bottom' (default) or 'top'. - * {String | Number} width - * Width for the timeline, a number in pixels or - * a css string like '1000px' or '75%'. '100%' by default. - * {String | Number} height - * Fixed height for the Timeline, a number in pixels or - * a css string like '400px' or '75%'. If undefined, - * The Timeline will automatically size such that - * its contents fit. - * {String | Number} minHeight - * Minimum height for the Timeline, a number in pixels or - * a css string like '400px' or '75%'. - * {String | Number} maxHeight - * Maximum height for the Timeline, a number in pixels or - * a css string like '400px' or '75%'. - * {Number | Date | String} start - * Start date for the visible window - * {Number | Date | String} end - * End date for the visible window + * Orientation of the item set. Choose 'top' or + * 'bottom' (default). + * {Function} groupOrder + * A sorting function for ordering groups + * {Boolean} stack + * If true (deafult), items will be stacked on + * top of each other. + * {Number} margin.axis + * Margin between the axis and the items in pixels. + * Default is 20. + * {Number} margin.item.horizontal + * Horizontal margin between items in pixels. + * Default is 10. + * {Number} margin.item.vertical + * Vertical Margin between items in pixels. + * Default is 10. + * {Number} margin.item + * Margin between items in pixels in both horizontal + * and vertical direction. Default is 10. + * {Number} margin + * Set margin for both axis and items in pixels. + * {Number} padding + * Padding of the contents of an item in pixels. + * Must correspond with the items css. Default is 5. + * {Boolean} selectable + * If true (default), items can be selected. + * {Boolean} editable + * Set all editable options to true or false + * {Boolean} editable.updateTime + * Allow dragging an item to an other moment in time + * {Boolean} editable.updateGroup + * Allow dragging an item to an other group + * {Boolean} editable.add + * Allow creating new items on double tap + * {Boolean} editable.remove + * Allow removing items by clicking the delete button + * top right of a selected item. + * {Function(item: Item, callback: Function)} onAdd + * Callback function triggered when an item is about to be added: + * when the user double taps an empty space in the Timeline. + * {Function(item: Item, callback: Function)} onUpdate + * Callback function fired when an item is about to be updated. + * This function typically has to show a dialog where the user + * change the item. If not implemented, nothing happens. + * {Function(item: Item, callback: Function)} onMove + * Fired when an item has been moved. If not implemented, + * the move action will be accepted. + * {Function(item: Item, callback: Function)} onRemove + * Fired when an item is about to be deleted. + * If not implemented, the item will be always removed. */ - Core.prototype.setOptions = function (options) { + ItemSet.prototype.setOptions = function(options) { if (options) { - // copy the known options - var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'orientation', 'clickToUse', 'dataAttributes', 'hiddenDates']; + // copy all options that we know + var fields = ['type', 'align', 'orientation', 'order', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide', 'snap']; util.selectiveExtend(fields, this.options, options); - if (this.options.orientation === 'both') { - if (!this.timeAxis2) { - var timeAxis2 = this.timeAxis2 = new TimeAxis(this.body); - timeAxis2.setOptions = function (options) { - var _options = options ? util.extend({}, options) : {}; - _options.orientation = 'top'; // override the orientation option, always top - TimeAxis.prototype.setOptions.call(timeAxis2, _options); - }; - this.components.push(timeAxis2); + if ('margin' in options) { + if (typeof options.margin === 'number') { + this.options.margin.axis = options.margin; + this.options.margin.item.horizontal = options.margin; + this.options.margin.item.vertical = options.margin; } - } - else { - if (this.timeAxis2) { - var index = this.components.indexOf(this.timeAxis2); - if (index !== -1) { - this.components.splice(index, 1); + else if (typeof options.margin === 'object') { + util.selectiveExtend(['axis'], this.options.margin, options.margin); + if ('item' in options.margin) { + if (typeof options.margin.item === 'number') { + this.options.margin.item.horizontal = options.margin.item; + this.options.margin.item.vertical = options.margin.item; + } + else if (typeof options.margin.item === 'object') { + util.selectiveExtend(['horizontal', 'vertical'], this.options.margin.item, options.margin.item); + } } - this.timeAxis2.destroy(); - this.timeAxis2 = null; } } - if ('hiddenDates' in this.options) { - DateUtil.convertHiddenOptions(this.body, this.options.hiddenDates); + if ('editable' in options) { + if (typeof options.editable === 'boolean') { + this.options.editable.updateTime = options.editable; + this.options.editable.updateGroup = options.editable; + this.options.editable.add = options.editable; + this.options.editable.remove = options.editable; + } + else if (typeof options.editable === 'object') { + util.selectiveExtend(['updateTime', 'updateGroup', 'add', 'remove'], this.options.editable, options.editable); + } } - if ('clickToUse' in options) { - if (options.clickToUse) { - if (!this.activator) { - this.activator = new Activator(this.dom.root); - } - } - else { - if (this.activator) { - this.activator.destroy(); - delete this.activator; + // callback functions + var addCallback = (function (name) { + var fn = options[name]; + if (fn) { + if (!(fn instanceof Function)) { + throw new Error('option ' + name + ' must be a function ' + name + '(item, callback)'); } + this.options[name] = fn; } - } + }).bind(this); + ['onAdd', 'onUpdate', 'onRemove', 'onMove', 'onMoving'].forEach(addCallback); - // enable/disable autoResize - this._initAutoResize(); + // force the itemSet to refresh: options like orientation and margins may be changed + this.markDirty(); } - - // propagate options to all components - this.components.forEach(function (component) { - component.setOptions(options); - }); - - // redraw everything - this._redraw(); }; /** - * Returns true when the Timeline is active. - * @returns {boolean} + * Mark the ItemSet dirty so it will refresh everything with next redraw. + * Optionally, all items can be marked as dirty and be refreshed. + * @param {{refreshItems: boolean}} [options] */ - Core.prototype.isActive = function () { - return !this.activator || this.activator.active; + ItemSet.prototype.markDirty = function(options) { + this.groupIds = []; + this.stackDirty = true; + + if (options && options.refreshItems) { + util.forEach(this.items, function (item) { + item.dirty = true; + if (item.displayed) item.redraw(); + }); + } }; /** - * Destroy the Core, clean up all DOM elements and event listeners. + * Destroy the ItemSet */ - Core.prototype.destroy = function () { - // unbind datasets - this.clear(); + ItemSet.prototype.destroy = function() { + this.hide(); + this.setItems(null); + this.setGroups(null); - // remove all event listeners - this.off(); + this.hammer = null; - // stop checking for changed size - this._stopAutoResize(); + this.body = null; + this.conversion = null; + }; - // remove from DOM - if (this.dom.root.parentNode) { - this.dom.root.parentNode.removeChild(this.dom.root); + /** + * Hide the component from the DOM + */ + ItemSet.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); } - this.dom = null; - // remove Activator - if (this.activator) { - this.activator.destroy(); - delete this.activator; + // remove the axis with dots + if (this.dom.axis.parentNode) { + this.dom.axis.parentNode.removeChild(this.dom.axis); } - // cleanup hammer touch events - for (var event in this.listeners) { - if (this.listeners.hasOwnProperty(event)) { - delete this.listeners[event]; - } + // remove the labelset containing all group labels + if (this.dom.labelSet.parentNode) { + this.dom.labelSet.parentNode.removeChild(this.dom.labelSet); } - this.listeners = null; - this.hammer = null; - - // give all components the opportunity to cleanup - this.components.forEach(function (component) { - component.destroy(); - }); - - this.body = null; }; - /** - * Set a custom time bar - * @param {Date} time - * @param {int} id + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed */ - Core.prototype.setCustomTime = function (time, id) { - if (!this.customTime) { - throw new Error('Cannot get custom time: Custom time bar is not enabled'); + ItemSet.prototype.show = function() { + // show frame containing the items + if (!this.dom.frame.parentNode) { + this.body.dom.center.appendChild(this.dom.frame); } - var barId = id || 0; + // show axis with dots + if (!this.dom.axis.parentNode) { + this.body.dom.backgroundVertical.appendChild(this.dom.axis); + } - this.components.forEach(function (element, index, components) { - if (element instanceof CustomTime && element.options.id === barId) { - element.setCustomTime(time); - } - }); + // show labelset containing labels + if (!this.dom.labelSet.parentNode) { + this.body.dom.left.appendChild(this.dom.labelSet); + } }; /** - * Retrieve the current custom time. - * @return {Date} customTime - * @param {int} id + * Set selected items by their id. Replaces the current selection + * Unknown id's are silently ignored. + * @param {string[] | string} [ids] An array with zero or more id's of the items to be + * selected, or a single item id. If ids is undefined + * or an empty array, all items will be unselected. */ - Core.prototype.getCustomTime = function(id) { - if (!this.customTime) { - throw new Error('Cannot get custom time: Custom time bar is not enabled'); - } + ItemSet.prototype.setSelection = function(ids) { + var i, ii, id, item; - var barId = id || 0, - customTime = this.customTime.getCustomTime(); + if (ids == undefined) ids = []; + if (!Array.isArray(ids)) ids = [ids]; - this.components.forEach(function (element, index, components) { - if (element instanceof CustomTime && element.options.id === barId) { - customTime = element.getCustomTime(); - } - }); + // unselect currently selected items + for (i = 0, ii = this.selection.length; i < ii; i++) { + id = this.selection[i]; + item = this.items[id]; + if (item) item.unselect(); + } - return customTime; + // select items + this.selection = []; + for (i = 0, ii = ids.length; i < ii; i++) { + id = ids[i]; + item = this.items[id]; + if (item) { + this.selection.push(id); + item.select(); + } + } }; /** - * Add custom vertical bar - * @param {Date | String | Number} time A Date, unix timestamp, or - * ISO date string. Time point where the new bar should be placed - * @param {Number | String} ID of the new bar - * @return {Number | String} ID of the new bar + * Get the selected items by their id + * @return {Array} ids The ids of the selected items */ - Core.prototype.addCustomTime = function (time, id) { - if (!this.currentTime) { - throw new Error('Option showCurrentTime must be true'); - } + ItemSet.prototype.getSelection = function() { + return this.selection.concat([]); + }; - if (time === undefined) { - throw new Error('Time parameter for the custom bar must be provided'); - } + /** + * Get the id's of the currently visible items. + * @returns {Array} The ids of the visible items + */ + ItemSet.prototype.getVisibleItems = function() { + var range = this.body.range.getRange(); + var left = this.body.util.toScreen(range.start); + var right = this.body.util.toScreen(range.end); - var ts = util.convert(time, 'Date').valueOf(), - numIds, customTime, customBarId; + var ids = []; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + var group = this.groups[groupId]; + var rawVisibleItems = group.visibleItems; - // All bar IDs are kept in 1 array, mixed types - // Bar with ID 0 is the default bar. - if (!this.customBarIds || this.customBarIds.constructor !== Array) { - this.customBarIds = [0]; + // filter the "raw" set with visibleItems into a set which is really + // visible by pixels + for (var i = 0; i < rawVisibleItems.length; i++) { + var item = rawVisibleItems[i]; + // TODO: also check whether visible vertically + if ((item.left < right) && (item.left + item.width > left)) { + ids.push(item.id); + } + } + } } - // If the ID is not provided, generate one, otherwise just use it - if (id === undefined) { + return ids; + }; - numIds = this.customBarIds.filter(function (element) { - return util.isNumber(element); - }); + /** + * Deselect a selected item + * @param {String | Number} id + * @private + */ + ItemSet.prototype._deselect = function(id) { + var selection = this.selection; + for (var i = 0, ii = selection.length; i < ii; i++) { + if (selection[i] == id) { // non-strict comparison! + selection.splice(i, 1); + break; + } + } + }; - customBarId = numIds.length > 0 ? Math.max.apply(null, numIds) + 1 : 1; + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + ItemSet.prototype.redraw = function() { + var margin = this.options.margin, + range = this.body.range, + asSize = util.option.asSize, + options = this.options, + orientation = options.orientation, + resized = false, + frame = this.dom.frame, + editable = options.editable.updateTime || options.editable.updateGroup; - } else { - - // Check for duplicates - this.customBarIds.forEach(function (element) { - if (element === id) { - throw new Error('Custom time ID already exists'); - } - }); + // recalculate absolute position (before redrawing groups) + this.props.top = this.body.domProps.top.height + this.body.domProps.border.top; + this.props.left = this.body.domProps.left.width + this.body.domProps.border.left; - customBarId = id; - } + // update class name + frame.className = 'itemset' + (editable ? ' editable' : ''); - this.customBarIds.push(customBarId); + // reorder the groups (if needed) + resized = this._orderGroups() || resized; - customTime = new CustomTime(this.body, { - showCustomTime : true, - time : ts, - id : customBarId + // check whether zoomed (in that case we need to re-stack everything) + // TODO: would be nicer to get this as a trigger from Range + var visibleInterval = range.end - range.start; + var zoomed = (visibleInterval != this.lastVisibleInterval) || (this.props.width != this.props.lastWidth); + if (zoomed) this.stackDirty = true; + this.lastVisibleInterval = visibleInterval; + this.props.lastWidth = this.props.width; + + var restack = this.stackDirty; + var firstGroup = this._firstGroup(); + var firstMargin = { + item: margin.item, + axis: margin.axis + }; + var nonFirstMargin = { + item: margin.item, + axis: margin.item.vertical / 2 + }; + var height = 0; + var minHeight = margin.axis + margin.item.vertical; + + // redraw the background group + this.groups[BACKGROUND].redraw(range, nonFirstMargin, restack); + + // redraw all regular groups + util.forEach(this.groups, function (group) { + var groupMargin = (group == firstGroup) ? firstMargin : nonFirstMargin; + var groupResized = group.redraw(range, groupMargin, restack); + resized = groupResized || resized; + height += group.height; }); + height = Math.max(height, minHeight); + this.stackDirty = false; - this.components.push(customTime); - this.redraw(); + // update frame height + frame.style.height = asSize(height); - return customBarId; + // calculate actual size + this.props.width = frame.offsetWidth; + this.props.height = height; + + // reposition axis + this.dom.axis.style.top = asSize((orientation == 'top') ? + (this.body.domProps.top.height + this.body.domProps.border.top) : + (this.body.domProps.top.height + this.body.domProps.centerContainer.height)); + this.dom.axis.style.left = '0'; + + // check if this component is resized + resized = this._isResized() || resized; + + return resized; }; /** - * Remove previously added custom bar - * @param {int} id ID of the custom bar to be removed - * @return {boolean} True if the bar exists and is removed, false otherwise + * Get the first group, aligned with the axis + * @return {Group | null} firstGroup + * @private */ - Core.prototype.removeCustomTime = function (id) { + ItemSet.prototype._firstGroup = function() { + var firstGroupIndex = (this.options.orientation == 'top') ? 0 : (this.groupIds.length - 1); + var firstGroupId = this.groupIds[firstGroupIndex]; + var firstGroup = this.groups[firstGroupId] || this.groups[UNGROUPED]; - var me = this; + return firstGroup || null; + }; - this.components.forEach(function (bar, index, components) { - if (bar instanceof CustomTime && bar.options.id === id) { - // Only the lines added by the user will be removed - if (bar.options.id !== 0) { - me.customBarIds.splice(me.customBarIds.indexOf(id), 1); - components.splice(index, 1); - bar.destroy(); + /** + * Create or delete the group holding all ungrouped items. This group is used when + * there are no groups specified. + * @protected + */ + ItemSet.prototype._updateUngrouped = function() { + var ungrouped = this.groups[UNGROUPED]; + var background = this.groups[BACKGROUND]; + var item, itemId; + + if (this.groupsData) { + // remove the group holding all ungrouped items + if (ungrouped) { + ungrouped.hide(); + delete this.groups[UNGROUPED]; + + for (itemId in this.items) { + if (this.items.hasOwnProperty(itemId)) { + item = this.items[itemId]; + item.parent && item.parent.remove(item); + var groupId = this._getGroupId(item.data); + var group = this.groups[groupId]; + group && group.add(item) || item.hide(); + } } } - }); - }; + } + else { + // create a group holding all (unfiltered) items + if (!ungrouped) { + var id = null; + var data = null; + ungrouped = new Group(id, data, this); + this.groups[UNGROUPED] = ungrouped; + + for (itemId in this.items) { + if (this.items.hasOwnProperty(itemId)) { + item = this.items[itemId]; + ungrouped.add(item); + } + } + ungrouped.show(); + } + } + }; /** - * Get the id's of the currently visible items. - * @returns {Array} The ids of the visible items + * Get the element for the labelset + * @return {HTMLElement} labelSet */ - Core.prototype.getVisibleItems = function() { - return this.itemSet && this.itemSet.getVisibleItems() || []; + ItemSet.prototype.getLabelSet = function() { + return this.dom.labelSet; }; - - /** - * Clear the Core. By Default, items, groups and options are cleared. - * Example usage: - * - * timeline.clear(); // clear items, groups, and options - * timeline.clear({options: true}); // clear options only - * - * @param {Object} [what] Optionally specify what to clear. By default: - * {items: true, groups: true, options: true} + * Set items + * @param {vis.DataSet | null} items */ - Core.prototype.clear = function(what) { - // clear items - if (!what || what.items) { - this.setItems(null); + ItemSet.prototype.setItems = function(items) { + var me = this, + ids, + oldItemsData = this.itemsData; + + // replace the dataset + if (!items) { + this.itemsData = null; + } + else if (items instanceof DataSet || items instanceof DataView) { + this.itemsData = items; + } + else { + throw new TypeError('Data must be an instance of DataSet or DataView'); } - // clear groups - if (!what || what.groups) { - this.setGroups(null); + if (oldItemsData) { + // unsubscribe from old dataset + util.forEach(this.itemListeners, function (callback, event) { + oldItemsData.off(event, callback); + }); + + // remove all drawn items + ids = oldItemsData.getIds(); + this._onRemove(ids); } - // clear options of timeline and of each of the components - if (!what || what.options) { - this.components.forEach(function (component) { - component.setOptions(component.defaultOptions); + if (this.itemsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.itemListeners, function (callback, event) { + me.itemsData.on(event, callback, id); }); - this.setOptions(this.defaultOptions); // this will also do a redraw + // add all new items + ids = this.itemsData.getIds(); + this._onAdd(ids); + + // update the group holding all ungrouped items + this._updateUngrouped(); } }; /** - * Set Core window such that it fits all items - * @param {Object} [options] Available options: - * `animate: boolean | number` - * If true (default), the range is animated - * smoothly to the new window. - * If a number, the number is taken as duration - * for the animation. Default duration is 500 ms. + * Get the current items + * @returns {vis.DataSet | null} */ - Core.prototype.fit = function(options) { - var range = this._getDataRange(); - - // skip range set if there is no start and end date - if (range.start === null && range.end === null) { - return; - } - - var animate = (options && options.animate !== undefined) ? options.animate : true; - this.range.setRange(range.start, range.end, animate); + ItemSet.prototype.getItems = function() { + return this.itemsData; }; /** - * Calculate the data range of the items and applies a 5% window around it. - * @returns {{start: Date | null, end: Date | null}} - * @protected + * Set groups + * @param {vis.DataSet} groups */ - Core.prototype._getDataRange = function() { - // apply the data range as range - var dataRange = this.getItemRange(); + ItemSet.prototype.setGroups = function(groups) { + var me = this, + ids; - // add 5% space on both sides - var start = dataRange.min; - var end = dataRange.max; - if (start != null && end != null) { - var interval = (end.valueOf() - start.valueOf()); - if (interval <= 0) { - // prevent an empty interval - interval = 24 * 60 * 60 * 1000; // 1 day - } - start = new Date(start.valueOf() - interval * 0.05); - end = new Date(end.valueOf() + interval * 0.05); - } + // unsubscribe from current dataset + if (this.groupsData) { + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.unsubscribe(event, callback); + }); - return { - start: start, - end: end + // remove all drawn groups + ids = this.groupsData.getIds(); + this.groupsData = null; + this._onRemoveGroups(ids); // note: this will cause a redraw } - }; - /** - * Set the visible window. Both parameters are optional, you can change only - * start or only end. Syntax: - * - * TimeLine.setWindow(start, end) - * TimeLine.setWindow(start, end, options) - * TimeLine.setWindow(range) - * - * Where start and end can be a Date, number, or string, and range is an - * object with properties start and end. - * - * @param {Date | Number | String | Object} [start] Start date of visible window - * @param {Date | Number | String} [end] End date of visible window - * @param {Object} [options] Available options: - * `animate: boolean | number` - * If true (default), the range is animated - * smoothly to the new window. - * If a number, the number is taken as duration - * for the animation. Default duration is 500 ms. - */ - Core.prototype.setWindow = function(start, end, options) { - var animate; - if (arguments.length == 1) { - var range = arguments[0]; - animate = (range.animate !== undefined) ? range.animate : true; - this.range.setRange(range.start, range.end, animate); + // replace the dataset + if (!groups) { + this.groupsData = null; + } + else if (groups instanceof DataSet || groups instanceof DataView) { + this.groupsData = groups; } else { - animate = (options && options.animate !== undefined) ? options.animate : true; - this.range.setRange(start, end, animate); + throw new TypeError('Data must be an instance of DataSet or DataView'); } - }; - /** - * Move the window such that given time is centered on screen. - * @param {Date | Number | String} time - * @param {Object} [options] Available options: - * `animate: boolean | number` - * If true (default), the range is animated - * smoothly to the new window. - * If a number, the number is taken as duration - * for the animation. Default duration is 500 ms. - */ - Core.prototype.moveTo = function(time, options) { - var interval = this.range.end - this.range.start; - var t = util.convert(time, 'Date').valueOf(); + if (this.groupsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.on(event, callback, id); + }); - var start = t - interval / 2; - var end = t + interval / 2; - var animate = (options && options.animate !== undefined) ? options.animate : true; + // draw all ms + ids = this.groupsData.getIds(); + this._onAddGroups(ids); + } - this.range.setRange(start, end, animate); + // update the group holding all ungrouped items + this._updateUngrouped(); + + // update the order of all items in each group + this._order(); + + this.body.emitter.emit('change', {queue: true}); }; /** - * Get the visible window - * @return {{start: Date, end: Date}} Visible range + * Get the current groups + * @returns {vis.DataSet | null} groups */ - Core.prototype.getWindow = function() { - var range = this.range.getRange(); - return { - start: new Date(range.start), - end: new Date(range.end) - }; + ItemSet.prototype.getGroups = function() { + return this.groupsData; }; /** - * Force a redraw. Can be overridden by implementations of Core + * Remove an item by its id + * @param {String | Number} id */ - Core.prototype.redraw = function() { - this._redraw(); + ItemSet.prototype.removeItem = function(id) { + var item = this.itemsData.get(id), + dataset = this.itemsData.getDataSet(); + + if (item) { + // confirm deletion + this.options.onRemove(item, function (item) { + if (item) { + // remove by id here, it is possible that an item has no id defined + // itself, so better not delete by the item itself + dataset.remove(id); + } + }); + } }; /** - * Redraw for internal use. Redraws all components. See also the public - * method redraw. - * @protected + * Get the time of an item based on it's data and options.type + * @param {Object} itemData + * @returns {string} Returns the type + * @private */ - Core.prototype._redraw = function() { - var resized = false; - var options = this.options; - var props = this.props; - var dom = this.dom; - - if (!dom) return; // when destroyed + ItemSet.prototype._getType = function (itemData) { + return itemData.type || this.options.type || (itemData.end ? 'range' : 'box'); + }; - DateUtil.updateHiddenDates(this.body, this.options.hiddenDates); - // update class names - if (options.orientation == 'top') { - util.addClassName(dom.root, 'top'); - util.removeClassName(dom.root, 'bottom'); + /** + * Get the group id for an item + * @param {Object} itemData + * @returns {string} Returns the groupId + * @private + */ + ItemSet.prototype._getGroupId = function (itemData) { + var type = this._getType(itemData); + if (type == 'background' && itemData.group == undefined) { + return BACKGROUND; } else { - util.removeClassName(dom.root, 'top'); - util.addClassName(dom.root, 'bottom'); + return this.groupsData ? itemData.group : UNGROUPED; } + }; - // update root width and height options - dom.root.style.maxHeight = util.option.asSize(options.maxHeight, ''); - dom.root.style.minHeight = util.option.asSize(options.minHeight, ''); - dom.root.style.width = util.option.asSize(options.width, ''); - - // calculate border widths - props.border.left = (dom.centerContainer.offsetWidth - dom.centerContainer.clientWidth) / 2; - props.border.right = props.border.left; - props.border.top = (dom.centerContainer.offsetHeight - dom.centerContainer.clientHeight) / 2; - props.border.bottom = props.border.top; - var borderRootHeight= dom.root.offsetHeight - dom.root.clientHeight; - var borderRootWidth = dom.root.offsetWidth - dom.root.clientWidth; + /** + * Handle updated items + * @param {Number[]} ids + * @protected + */ + ItemSet.prototype._onUpdate = function(ids) { + var me = this; - // workaround for a bug in IE: the clientWidth of an element with - // a height:0px and overflow:hidden is not calculated and always has value 0 - if (dom.centerContainer.clientHeight === 0) { - props.border.left = props.border.top; - props.border.right = props.border.left; - } - if (dom.root.clientHeight === 0) { - borderRootWidth = borderRootHeight; - } + ids.forEach(function (id) { + var itemData = me.itemsData.get(id, me.itemOptions); + var item = me.items[id]; + var type = me._getType(itemData); - // calculate the heights. If any of the side panels is empty, we set the height to - // minus the border width, such that the border will be invisible - props.center.height = dom.center.offsetHeight; - props.left.height = dom.left.offsetHeight; - props.right.height = dom.right.offsetHeight; - props.top.height = dom.top.clientHeight || -props.border.top; - props.bottom.height = dom.bottom.clientHeight || -props.border.bottom; + var constructor = ItemSet.types[type]; - // TODO: compensate borders when any of the panels is empty. + if (item) { + // update item + if (!constructor || !(item instanceof constructor)) { + // item type has changed, delete the item and recreate it + me._removeItem(item); + item = null; + } + else { + me._updateItem(item, itemData); + } + } - // apply auto height - // TODO: only calculate autoHeight when needed (else we cause an extra reflow/repaint of the DOM) - var contentHeight = Math.max(props.left.height, props.center.height, props.right.height); - var autoHeight = props.top.height + contentHeight + props.bottom.height + - borderRootHeight + props.border.top + props.border.bottom; - dom.root.style.height = util.option.asSize(options.height, autoHeight + 'px'); - - // calculate heights of the content panels - props.root.height = dom.root.offsetHeight; - props.background.height = props.root.height - borderRootHeight; - var containerHeight = props.root.height - props.top.height - props.bottom.height - - borderRootHeight; - props.centerContainer.height = containerHeight; - props.leftContainer.height = containerHeight; - props.rightContainer.height = props.leftContainer.height; - - // calculate the widths of the panels - props.root.width = dom.root.offsetWidth; - props.background.width = props.root.width - borderRootWidth; - props.left.width = dom.leftContainer.clientWidth || -props.border.left; - props.leftContainer.width = props.left.width; - props.right.width = dom.rightContainer.clientWidth || -props.border.right; - props.rightContainer.width = props.right.width; - var centerWidth = props.root.width - props.left.width - props.right.width - borderRootWidth; - props.center.width = centerWidth; - props.centerContainer.width = centerWidth; - props.top.width = centerWidth; - props.bottom.width = centerWidth; - - // resize the panels - dom.background.style.height = props.background.height + 'px'; - dom.backgroundVertical.style.height = props.background.height + 'px'; - dom.backgroundHorizontal.style.height = props.centerContainer.height + 'px'; - dom.centerContainer.style.height = props.centerContainer.height + 'px'; - dom.leftContainer.style.height = props.leftContainer.height + 'px'; - dom.rightContainer.style.height = props.rightContainer.height + 'px'; - - dom.background.style.width = props.background.width + 'px'; - dom.backgroundVertical.style.width = props.centerContainer.width + 'px'; - dom.backgroundHorizontal.style.width = props.background.width + 'px'; - dom.centerContainer.style.width = props.center.width + 'px'; - dom.top.style.width = props.top.width + 'px'; - dom.bottom.style.width = props.bottom.width + 'px'; - - // reposition the panels - dom.background.style.left = '0'; - dom.background.style.top = '0'; - dom.backgroundVertical.style.left = (props.left.width + props.border.left) + 'px'; - dom.backgroundVertical.style.top = '0'; - dom.backgroundHorizontal.style.left = '0'; - dom.backgroundHorizontal.style.top = props.top.height + 'px'; - dom.centerContainer.style.left = props.left.width + 'px'; - dom.centerContainer.style.top = props.top.height + 'px'; - dom.leftContainer.style.left = '0'; - dom.leftContainer.style.top = props.top.height + 'px'; - dom.rightContainer.style.left = (props.left.width + props.center.width) + 'px'; - dom.rightContainer.style.top = props.top.height + 'px'; - dom.top.style.left = props.left.width + 'px'; - dom.top.style.top = '0'; - dom.bottom.style.left = props.left.width + 'px'; - dom.bottom.style.top = (props.top.height + props.centerContainer.height) + 'px'; - - // update the scrollTop, feasible range for the offset can be changed - // when the height of the Core or of the contents of the center changed - this._updateScrollTop(); - - // reposition the scrollable contents - var offset = this.props.scrollTop; - if (options.orientation == 'bottom') { - offset += Math.max(this.props.centerContainer.height - this.props.center.height - - this.props.border.top - this.props.border.bottom, 0); - } - dom.center.style.left = '0'; - dom.center.style.top = offset + 'px'; - dom.left.style.left = '0'; - dom.left.style.top = offset + 'px'; - dom.right.style.left = '0'; - dom.right.style.top = offset + 'px'; - - // show shadows when vertical scrolling is available - var visibilityTop = this.props.scrollTop == 0 ? 'hidden' : ''; - var visibilityBottom = this.props.scrollTop == this.props.scrollTopMin ? 'hidden' : ''; - dom.shadowTop.style.visibility = visibilityTop; - dom.shadowBottom.style.visibility = visibilityBottom; - dom.shadowTopLeft.style.visibility = visibilityTop; - dom.shadowBottomLeft.style.visibility = visibilityBottom; - dom.shadowTopRight.style.visibility = visibilityTop; - dom.shadowBottomRight.style.visibility = visibilityBottom; - - // redraw all components - this.components.forEach(function (component) { - resized = component.redraw() || resized; - }); - if (resized) { - // keep repainting until all sizes are settled - var MAX_REDRAWS = 3; // maximum number of consecutive redraws - if (this.redrawCount < MAX_REDRAWS) { - this.redrawCount++; - this._redraw(); - } - else { - console.log('WARNING: infinite loop in redraw?'); + if (!item) { + // create item + if (constructor) { + item = new constructor(itemData, me.conversion, me.options); + item.id = id; // TODO: not so nice setting id afterwards + me._addItem(item); + } + else if (type == 'rangeoverflow') { + // TODO: deprecated since version 2.1.0 (or 3.0.0?). cleanup some day + throw new TypeError('Item type "rangeoverflow" is deprecated. Use css styling instead: ' + + '.vis.timeline .item.range .content {overflow: visible;}'); + } + else { + throw new TypeError('Unknown item type "' + type + '"'); + } } - this.redrawCount = 0; - } - - this.emit("finishedRedraw"); - }; + }); - // TODO: deprecated since version 1.1.0, remove some day - Core.prototype.repaint = function () { - throw new Error('Function repaint is deprecated. Use redraw instead.'); + this._order(); + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change', {queue: true}); }; /** - * Set a current time. This can be used for example to ensure that a client's - * time is synchronized with a shared server time. - * Only applicable when option `showCurrentTime` is true. - * @param {Date | String | Number} time A Date, unix timestamp, or - * ISO date string. + * Handle added items + * @param {Number[]} ids + * @protected */ - Core.prototype.setCurrentTime = function(time) { - if (!this.currentTime) { - throw new Error('Option showCurrentTime must be true'); - } - - this.currentTime.setCurrentTime(time); - }; + ItemSet.prototype._onAdd = ItemSet.prototype._onUpdate; /** - * Get the current time. - * Only applicable when option `showCurrentTime` is true. - * @return {Date} Returns the current time. + * Handle removed items + * @param {Number[]} ids + * @protected */ - Core.prototype.getCurrentTime = function() { - if (!this.currentTime) { - throw new Error('Option showCurrentTime must be true'); - } + ItemSet.prototype._onRemove = function(ids) { + var count = 0; + var me = this; + ids.forEach(function (id) { + var item = me.items[id]; + if (item) { + count++; + me._removeItem(item); + } + }); - return this.currentTime.getCurrentTime(); + if (count) { + // update order + this._order(); + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change', {queue: true}); + } }; /** - * Convert a position on screen (pixels) to a datetime - * @param {int} x Position on the screen in pixels - * @return {Date} time The datetime the corresponds with given position x + * Update the order of item in all groups * @private */ - // TODO: move this function to Range - Core.prototype._toTime = function(x) { - return DateUtil.toTime(this, x, this.props.center.width); + ItemSet.prototype._order = function() { + // reorder the items in all groups + // TODO: optimization: only reorder groups affected by the changed items + util.forEach(this.groups, function (group) { + group.order(); + }); }; /** - * Convert a position on the global screen (pixels) to a datetime - * @param {int} x Position on the screen in pixels - * @return {Date} time The datetime the corresponds with given position x + * Handle updated groups + * @param {Number[]} ids * @private */ - // TODO: move this function to Range - Core.prototype._toGlobalTime = function(x) { - return DateUtil.toTime(this, x, this.props.root.width); - //var conversion = this.range.conversion(this.props.root.width); - //return new Date(x / conversion.scale + conversion.offset); + ItemSet.prototype._onUpdateGroups = function(ids) { + this._onAddGroups(ids); }; /** - * Convert a datetime (Date object) into a position on the screen - * @param {Date} time A date - * @return {int} x The position on the screen in pixels which corresponds - * with the given date. + * Handle changed groups (added or updated) + * @param {Number[]} ids * @private */ - // TODO: move this function to Range - Core.prototype._toScreen = function(time) { - return DateUtil.toScreen(this, time, this.props.center.width); - }; + ItemSet.prototype._onAddGroups = function(ids) { + var me = this; + ids.forEach(function (id) { + var groupData = me.groupsData.get(id); + var group = me.groups[id]; + if (!group) { + // check for reserved ids + if (id == UNGROUPED || id == BACKGROUND) { + throw new Error('Illegal group id. ' + id + ' is a reserved id.'); + } - /** - * Convert a datetime (Date object) into a position on the root - * This is used to get the pixel density estimate for the screen, not the center panel - * @param {Date} time A date - * @return {int} x The position on root in pixels which corresponds - * with the given date. - * @private - */ - // TODO: move this function to Range - Core.prototype._toGlobalScreen = function(time) { - return DateUtil.toScreen(this, time, this.props.root.width); - //var conversion = this.range.conversion(this.props.root.width); - //return (time.valueOf() - conversion.offset) * conversion.scale; - }; + var groupOptions = Object.create(me.options); + util.extend(groupOptions, { + height: null + }); + group = new Group(id, groupData, me); + me.groups[id] = group; - /** - * Initialize watching when option autoResize is true - * @private - */ - Core.prototype._initAutoResize = function () { - if (this.options.autoResize == true) { - this._startAutoResize(); - } - else { - this._stopAutoResize(); - } + // add items with this groupId to the new group + for (var itemId in me.items) { + if (me.items.hasOwnProperty(itemId)) { + var item = me.items[itemId]; + if (item.data.group == id) { + group.add(item); + } + } + } + + group.order(); + group.show(); + } + else { + // update group + group.setData(groupData); + } + }); + + this.body.emitter.emit('change', {queue: true}); }; /** - * Watch for changes in the size of the container. On resize, the Panel will - * automatically redraw itself. + * Handle removed groups + * @param {Number[]} ids * @private */ - Core.prototype._startAutoResize = function () { - var me = this; - - this._stopAutoResize(); - - this._onResize = function() { - if (me.options.autoResize != true) { - // stop watching when the option autoResize is changed to false - me._stopAutoResize(); - return; - } - - if (me.dom.root) { - // check whether the frame is resized - // Note: we compare offsetWidth here, not clientWidth. For some reason, - // IE does not restore the clientWidth from 0 to the actual width after - // changing the timeline's container display style from none to visible - if ((me.dom.root.offsetWidth != me.props.lastWidth) || - (me.dom.root.offsetHeight != me.props.lastHeight)) { - me.props.lastWidth = me.dom.root.offsetWidth; - me.props.lastHeight = me.dom.root.offsetHeight; + ItemSet.prototype._onRemoveGroups = function(ids) { + var groups = this.groups; + ids.forEach(function (id) { + var group = groups[id]; - me.emit('change'); - } + if (group) { + group.hide(); + delete groups[id]; } - }; + }); - // add event listener to window resize - util.addEventListener(window, 'resize', this._onResize); + this.markDirty(); - this.watchTimer = setInterval(this._onResize, 1000); + this.body.emitter.emit('change', {queue: true}); }; /** - * Stop watching for a resize of the frame. + * Reorder the groups if needed + * @return {boolean} changed * @private */ - Core.prototype._stopAutoResize = function () { - if (this.watchTimer) { - clearInterval(this.watchTimer); - this.watchTimer = undefined; - } + ItemSet.prototype._orderGroups = function () { + if (this.groupsData) { + // reorder the groups + var groupIds = this.groupsData.getIds({ + order: this.options.groupOrder + }); - // remove event listener on window.resize - util.removeEventListener(window, 'resize', this._onResize); - this._onResize = null; - }; + var changed = !util.equalArray(groupIds, this.groupIds); + if (changed) { + // hide all groups, removes them from the DOM + var groups = this.groups; + groupIds.forEach(function (groupId) { + groups[groupId].hide(); + }); - /** - * Start moving the timeline vertically - * @param {Event} event - * @private - */ - Core.prototype._onTouch = function (event) { - this.touch.allowDragging = true; - }; + // show the groups again, attach them to the DOM in correct order + groupIds.forEach(function (groupId) { + groups[groupId].show(); + }); - /** - * Start moving the timeline vertically - * @param {Event} event - * @private - */ - Core.prototype._onPinch = function (event) { - this.touch.allowDragging = false; + this.groupIds = groupIds; + } + + return changed; + } + else { + return false; + } }; /** - * Start moving the timeline vertically - * @param {Event} event + * Add a new item + * @param {Item} item * @private */ - Core.prototype._onDragStart = function (event) { - this.touch.initialScrollTop = this.props.scrollTop; + ItemSet.prototype._addItem = function(item) { + this.items[item.id] = item; + + // add to group + var groupId = this._getGroupId(item.data); + var group = this.groups[groupId]; + if (group) group.add(item); }; /** - * Move the timeline vertically - * @param {Event} event + * Update an existing item + * @param {Item} item + * @param {Object} itemData * @private */ - Core.prototype._onDrag = function (event) { - // refuse to drag when we where pinching to prevent the timeline make a jump - // when releasing the fingers in opposite order from the touch screen - if (!this.touch.allowDragging) return; - - var delta = event.gesture.deltaY; + ItemSet.prototype._updateItem = function(item, itemData) { + var oldGroupId = item.data.group; - var oldScrollTop = this._getScrollTop(); - var newScrollTop = this._setScrollTop(this.touch.initialScrollTop + delta); + // update the items data (will redraw the item when displayed) + item.setData(itemData); + // update group + if (oldGroupId != item.data.group) { + var oldGroup = this.groups[oldGroupId]; + if (oldGroup) oldGroup.remove(item); - if (newScrollTop != oldScrollTop) { - this._redraw(); // TODO: this causes two redraws when dragging, the other is triggered by rangechange already - this.emit("verticalDrag"); + var groupId = this._getGroupId(item.data); + var group = this.groups[groupId]; + if (group) group.add(item); } }; /** - * Apply a scrollTop - * @param {Number} scrollTop - * @returns {Number} scrollTop Returns the applied scrollTop + * Delete an item from the ItemSet: remove it from the DOM, from the map + * with items, and from the map with visible items, and from the selection + * @param {Item} item * @private */ - Core.prototype._setScrollTop = function (scrollTop) { - this.props.scrollTop = scrollTop; - this._updateScrollTop(); - return this.props.scrollTop; + ItemSet.prototype._removeItem = function(item) { + // remove from DOM + item.hide(); + + // remove from items + delete this.items[item.id]; + + // remove from selection + var index = this.selection.indexOf(item.id); + if (index != -1) this.selection.splice(index, 1); + + // remove from group + item.parent && item.parent.remove(item); }; /** - * Update the current scrollTop when the height of the containers has been changed - * @returns {Number} scrollTop Returns the applied scrollTop + * Create an array containing all items being a range (having an end date) + * @param array + * @returns {Array} * @private */ - Core.prototype._updateScrollTop = function () { - // recalculate the scrollTopMin - var scrollTopMin = Math.min(this.props.centerContainer.height - this.props.center.height, 0); // is negative or zero - if (scrollTopMin != this.props.scrollTopMin) { - // in case of bottom orientation, change the scrollTop such that the contents - // do not move relative to the time axis at the bottom - if (this.options.orientation == 'bottom') { - this.props.scrollTop += (scrollTopMin - this.props.scrollTopMin); + ItemSet.prototype._constructByEndArray = function(array) { + var endArray = []; + + for (var i = 0; i < array.length; i++) { + if (array[i] instanceof RangeItem) { + endArray.push(array[i]); } - this.props.scrollTopMin = scrollTopMin; } - - // limit the scrollTop to the feasible scroll range - if (this.props.scrollTop > 0) this.props.scrollTop = 0; - if (this.props.scrollTop < scrollTopMin) this.props.scrollTop = scrollTopMin; - - return this.props.scrollTop; + return endArray; }; /** - * Get the current scrollTop - * @returns {number} scrollTop + * Register the clicked item on touch, before dragStart is initiated. + * + * dragStart is initiated from a mousemove event, which can have left the item + * already resulting in an item == null + * + * @param {Event} event * @private */ - Core.prototype._getScrollTop = function () { - return this.props.scrollTop; + ItemSet.prototype._onTouch = function (event) { + // store the touched item, used in _onDragStart + this.touchParams.item = ItemSet.itemFromTarget(event); }; - module.exports = Core; - - -/***/ }, -/* 26 */ -/***/ function(module, exports, __webpack_require__) { - - var Hammer = __webpack_require__(19); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(9); - var TimeStep = __webpack_require__(27); - var Component = __webpack_require__(23); - var Group = __webpack_require__(28); - var BackgroundGroup = __webpack_require__(29); - var BoxItem = __webpack_require__(30); - var PointItem = __webpack_require__(32); - var RangeItem = __webpack_require__(33); - var BackgroundItem = __webpack_require__(34); - - - var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items - var BACKGROUND = '__background__'; // reserved group id for background items without group - /** - * An ItemSet holds a set of items and ranges which can be displayed in a - * range. The width is determined by the parent of the ItemSet, and the height - * is determined by the size of the items. - * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body - * @param {Object} [options] See ItemSet.setOptions for the available options. - * @constructor ItemSet - * @extends Component + * Start dragging the selected events + * @param {Event} event + * @private */ - function ItemSet(body, options) { - this.body = body; + ItemSet.prototype._onDragStart = function (event) { + if (!this.options.editable.updateTime && !this.options.editable.updateGroup) { + return; + } - this.defaultOptions = { - type: null, // 'box', 'point', 'range', 'background' - orientation: 'bottom', // 'top' or 'bottom' - align: 'auto', // alignment of box items - stack: true, - groupOrder: null, + var item = this.touchParams.item || null; + var me = this; + var props; - selectable: true, - editable: { - updateTime: false, - updateGroup: false, - add: false, - remove: false - }, + if (item && item.selected) { + var dragLeftItem = event.target.dragLeftItem; + var dragRightItem = event.target.dragRightItem; - snap: TimeStep.snap, + if (dragLeftItem) { + props = { + item: dragLeftItem, + initialX: event.gesture.center.clientX + }; - onAdd: function (item, callback) { - callback(item); - }, - onUpdate: function (item, callback) { - callback(item); - }, - onMove: function (item, callback) { - callback(item); - }, - onRemove: function (item, callback) { - callback(item); - }, - onMoving: function (item, callback) { - callback(item); - }, - - margin: { - item: { - horizontal: 10, - vertical: 10 - }, - axis: 20 - }, - padding: 5 - }; - - // options is shared by this ItemSet and all its items - this.options = util.extend({}, this.defaultOptions); - - // options for getting items from the DataSet with the correct type - this.itemOptions = { - type: {start: 'Date', end: 'Date'} - }; - - this.conversion = { - toScreen: body.util.toScreen, - toTime: body.util.toTime - }; - this.dom = {}; - this.props = {}; - this.hammer = null; - - var me = this; - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet - - // listeners for the DataSet of the items - this.itemListeners = { - 'add': function (event, params, senderId) { - me._onAdd(params.items); - }, - 'update': function (event, params, senderId) { - me._onUpdate(params.items); - }, - 'remove': function (event, params, senderId) { - me._onRemove(params.items); - } - }; + if (me.options.editable.updateTime) { + props.start = item.data.start.valueOf(); + } + if (me.options.editable.updateGroup) { + if ('group' in item.data) props.group = item.data.group; + } - // listeners for the DataSet of the groups - this.groupListeners = { - 'add': function (event, params, senderId) { - me._onAddGroups(params.items); - }, - 'update': function (event, params, senderId) { - me._onUpdateGroups(params.items); - }, - 'remove': function (event, params, senderId) { - me._onRemoveGroups(params.items); + this.touchParams.itemProps = [props]; } - }; - - this.items = {}; // object with an Item for every data item - this.groups = {}; // Group object for every group - this.groupIds = []; + else if (dragRightItem) { + props = { + item: dragRightItem, + initialX: event.gesture.center.clientX + }; - this.selection = []; // list with the ids of all selected nodes - this.stackDirty = true; // if true, all items will be restacked on next redraw + if (me.options.editable.updateTime) { + props.end = item.data.end.valueOf(); + } + if (me.options.editable.updateGroup) { + if ('group' in item.data) props.group = item.data.group; + } - this.touchParams = {}; // stores properties while dragging - // create the HTML DOM + this.touchParams.itemProps = [props]; + } + else { + this.touchParams.itemProps = this.getSelection().map(function (id) { + var item = me.items[id]; + var props = { + item: item, + initialX: event.gesture.center.clientX + }; - this._create(); + if (me.options.editable.updateTime) { + if ('start' in item.data) { + props.start = item.data.start.valueOf(); - this.setOptions(options); - } + if ('end' in item.data) { + // we store a duration here in order not to change the width + // of the item when moving it. + props.duration = item.data.end.valueOf() - props.start; + } + } + } + if (me.options.editable.updateGroup) { + if ('group' in item.data) props.group = item.data.group; + } - ItemSet.prototype = new Component(); + return props; + }); + } - // available item types will be registered here - ItemSet.types = { - background: BackgroundItem, - box: BoxItem, - range: RangeItem, - point: PointItem + event.stopPropagation(); + } + else if (this.options.editable.add && event.gesture.srcEvent.ctrlKey) { + // create a new range item when dragging with ctrl key down + this._onDragStartAddItem(event); + } }; /** - * Create the HTML DOM for the ItemSet + * Start creating a new range item by dragging. + * @param {Event} event + * @private */ - ItemSet.prototype._create = function(){ - var frame = document.createElement('div'); - frame.className = 'itemset'; - frame['timeline-itemset'] = this; - this.dom.frame = frame; - - // create background panel - var background = document.createElement('div'); - background.className = 'background'; - frame.appendChild(background); - this.dom.background = background; - - // create foreground panel - var foreground = document.createElement('div'); - foreground.className = 'foreground'; - frame.appendChild(foreground); - this.dom.foreground = foreground; - - // create axis panel - var axis = document.createElement('div'); - axis.className = 'axis'; - this.dom.axis = axis; - - // create labelset - var labelSet = document.createElement('div'); - labelSet.className = 'labelset'; - this.dom.labelSet = labelSet; - - // create ungrouped Group - this._updateUngrouped(); - - // create background Group - var backgroundGroup = new BackgroundGroup(BACKGROUND, null, this); - backgroundGroup.show(); - this.groups[BACKGROUND] = backgroundGroup; + ItemSet.prototype._onDragStartAddItem = function (event) { + var snap = this.options.snap || null; + var xAbs = util.getAbsoluteLeft(this.dom.frame); + var x = event.gesture.center.pageX - xAbs - 10; // minus 10 to compensate for the drag starting as soon as you've moved 10px + var time = this.body.util.toTime(x); + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); + var start = snap ? snap(time, scale, step) : start; + var end = start; - // attach event listeners - // Note: we bind to the centerContainer for the case where the height - // of the center container is larger than of the ItemSet, so we - // can click in the empty area to create a new item or deselect an item. - this.hammer = Hammer(this.body.dom.centerContainer, { - preventDefault: true - }); + var itemData = { + type: 'range', + start: start, + end: end, + content: 'new item' + }; - // drag items when selected - this.hammer.on('touch', this._onTouch.bind(this)); - this.hammer.on('dragstart', this._onDragStart.bind(this)); - this.hammer.on('drag', this._onDrag.bind(this)); - this.hammer.on('dragend', this._onDragEnd.bind(this)); + var id = util.randomUUID(); + itemData[this.itemsData._fieldId] = id; - // single select (or unselect) when tapping an item - this.hammer.on('tap', this._onSelectItem.bind(this)); + var group = this.groupFromTarget(event); + if (group) { + itemData.group = group.groupId; + } - // multi select when holding mouse/touch, or on ctrl+click - this.hammer.on('hold', this._onMultiSelectItem.bind(this)); + var newItem = new RangeItem(itemData, this.conversion, this.options); + newItem.id = id; // TODO: not so nice setting id afterwards + this._addItem(newItem); - // add item on doubletap - this.hammer.on('doubletap', this._onAddItem.bind(this)); + var props = { + item: newItem, + end: end.valueOf(), + initialX: event.gesture.center.clientX + }; + this.touchParams.itemProps = [props]; - // attach to the DOM - this.show(); + event.stopPropagation(); }; /** - * Set options for the ItemSet. Existing options will be extended/overwritten. - * @param {Object} [options] The following options are available: - * {String} type - * Default type for the items. Choose from 'box' - * (default), 'point', 'range', or 'background'. - * The default style can be overwritten by - * individual items. - * {String} align - * Alignment for the items, only applicable for - * BoxItem. Choose 'center' (default), 'left', or - * 'right'. - * {String} orientation - * Orientation of the item set. Choose 'top' or - * 'bottom' (default). - * {Function} groupOrder - * A sorting function for ordering groups - * {Boolean} stack - * If true (deafult), items will be stacked on - * top of each other. - * {Number} margin.axis - * Margin between the axis and the items in pixels. - * Default is 20. - * {Number} margin.item.horizontal - * Horizontal margin between items in pixels. - * Default is 10. - * {Number} margin.item.vertical - * Vertical Margin between items in pixels. - * Default is 10. - * {Number} margin.item - * Margin between items in pixels in both horizontal - * and vertical direction. Default is 10. - * {Number} margin - * Set margin for both axis and items in pixels. - * {Number} padding - * Padding of the contents of an item in pixels. - * Must correspond with the items css. Default is 5. - * {Boolean} selectable - * If true (default), items can be selected. - * {Boolean} editable - * Set all editable options to true or false - * {Boolean} editable.updateTime - * Allow dragging an item to an other moment in time - * {Boolean} editable.updateGroup - * Allow dragging an item to an other group - * {Boolean} editable.add - * Allow creating new items on double tap - * {Boolean} editable.remove - * Allow removing items by clicking the delete button - * top right of a selected item. - * {Function(item: Item, callback: Function)} onAdd - * Callback function triggered when an item is about to be added: - * when the user double taps an empty space in the Timeline. - * {Function(item: Item, callback: Function)} onUpdate - * Callback function fired when an item is about to be updated. - * This function typically has to show a dialog where the user - * change the item. If not implemented, nothing happens. - * {Function(item: Item, callback: Function)} onMove - * Fired when an item has been moved. If not implemented, - * the move action will be accepted. - * {Function(item: Item, callback: Function)} onRemove - * Fired when an item is about to be deleted. - * If not implemented, the item will be always removed. + * Drag selected items + * @param {Event} event + * @private */ - ItemSet.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - var fields = ['type', 'align', 'orientation', 'order', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide', 'snap']; - util.selectiveExtend(fields, this.options, options); + ItemSet.prototype._onDrag = function (event) { + event.preventDefault(); - if ('margin' in options) { - if (typeof options.margin === 'number') { - this.options.margin.axis = options.margin; - this.options.margin.item.horizontal = options.margin; - this.options.margin.item.vertical = options.margin; - } - else if (typeof options.margin === 'object') { - util.selectiveExtend(['axis'], this.options.margin, options.margin); - if ('item' in options.margin) { - if (typeof options.margin.item === 'number') { - this.options.margin.item.horizontal = options.margin.item; - this.options.margin.item.vertical = options.margin.item; - } - else if (typeof options.margin.item === 'object') { - util.selectiveExtend(['horizontal', 'vertical'], this.options.margin.item, options.margin.item); - } - } + if (this.touchParams.itemProps) { + var me = this; + var snap = this.options.snap || null; + var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width; + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); + + // move + this.touchParams.itemProps.forEach(function (props) { + var newProps = {}; + var current = me.body.util.toTime(event.gesture.center.clientX - xOffset); + var initial = me.body.util.toTime(props.initialX - xOffset); + var offset = current - initial; + + if ('start' in props) { + var start = new Date(props.start + offset); + newProps.start = snap ? snap(start, scale, step) : start; } - } - if ('editable' in options) { - if (typeof options.editable === 'boolean') { - this.options.editable.updateTime = options.editable; - this.options.editable.updateGroup = options.editable; - this.options.editable.add = options.editable; - this.options.editable.remove = options.editable; + if ('end' in props) { + var end = new Date(props.end + offset); + newProps.end = snap ? snap(end, scale, step) : end; } - else if (typeof options.editable === 'object') { - util.selectiveExtend(['updateTime', 'updateGroup', 'add', 'remove'], this.options.editable, options.editable); + else if ('duration' in props) { + newProps.end = new Date(newProps.start.valueOf() + props.duration); } - } - // callback functions - var addCallback = (function (name) { - var fn = options[name]; - if (fn) { - if (!(fn instanceof Function)) { - throw new Error('option ' + name + ' must be a function ' + name + '(item, callback)'); - } - this.options[name] = fn; + if ('group' in props) { + // drag from one group to another + var group = me.groupFromTarget(event); + newProps.group = group && group.groupId; } - }).bind(this); - ['onAdd', 'onUpdate', 'onRemove', 'onMove', 'onMoving'].forEach(addCallback); - - // force the itemSet to refresh: options like orientation and margins may be changed - this.markDirty(); - } - }; - - /** - * Mark the ItemSet dirty so it will refresh everything with next redraw. - * Optionally, all items can be marked as dirty and be refreshed. - * @param {{refreshItems: boolean}} [options] - */ - ItemSet.prototype.markDirty = function(options) { - this.groupIds = []; - this.stackDirty = true; - if (options && options.refreshItems) { - util.forEach(this.items, function (item) { - item.dirty = true; - if (item.displayed) item.redraw(); + // confirm moving the item + var itemData = util.extend({}, props.item.data, newProps); + me.options.onMoving(itemData, function (itemData) { + if (itemData) { + me._updateItemProps(props.item, itemData); + } + }); }); - } - }; - - /** - * Destroy the ItemSet - */ - ItemSet.prototype.destroy = function() { - this.hide(); - this.setItems(null); - this.setGroups(null); - this.hammer = null; + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change'); - this.body = null; - this.conversion = null; + event.stopPropagation(); + } }; /** - * Hide the component from the DOM + * Update an items properties + * @param {Item} item + * @param {Object} props Can contain properties start, end, and group. + * @private */ - ItemSet.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); + ItemSet.prototype._updateItemProps = function(item, props) { + // TODO: copy all properties from props to item? (also new ones) + if ('start' in props) { + item.data.start = props.start; } - - // remove the axis with dots - if (this.dom.axis.parentNode) { - this.dom.axis.parentNode.removeChild(this.dom.axis); + if ('end' in props) { + item.data.end = props.end; } - - // remove the labelset containing all group labels - if (this.dom.labelSet.parentNode) { - this.dom.labelSet.parentNode.removeChild(this.dom.labelSet); + else if ('duration' in props) { + item.data.end = new Date(props.start.valueOf() + props.duration); + } + if ('group' in props && item.data.group != props.group) { + this._moveToGroup(item, props.group) } }; /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed + * Move an item to another group + * @param {Item} item + * @param {String | Number} groupId + * @private */ - ItemSet.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); - } - - // show axis with dots - if (!this.dom.axis.parentNode) { - this.body.dom.backgroundVertical.appendChild(this.dom.axis); - } + ItemSet.prototype._moveToGroup = function(item, groupId) { + var group = this.groups[groupId]; + if (group && group.groupId != item.data.group) { + var oldGroup = item.parent; + oldGroup.remove(item); + oldGroup.order(); + group.add(item); + group.order(); - // show labelset containing labels - if (!this.dom.labelSet.parentNode) { - this.body.dom.left.appendChild(this.dom.labelSet); + item.data.group = group.groupId; } }; /** - * Set selected items by their id. Replaces the current selection - * Unknown id's are silently ignored. - * @param {string[] | string} [ids] An array with zero or more id's of the items to be - * selected, or a single item id. If ids is undefined - * or an empty array, all items will be unselected. + * End of dragging selected items + * @param {Event} event + * @private */ - ItemSet.prototype.setSelection = function(ids) { - var i, ii, id, item; + ItemSet.prototype._onDragEnd = function (event) { + event.preventDefault() - if (ids == undefined) ids = []; - if (!Array.isArray(ids)) ids = [ids]; + if (this.touchParams.itemProps) { + // prepare a change set for the changed items + var changes = []; + var me = this; + var dataset = this.itemsData.getDataSet(); - // unselect currently selected items - for (i = 0, ii = this.selection.length; i < ii; i++) { - id = this.selection[i]; - item = this.items[id]; - if (item) item.unselect(); - } + var itemProps = this.touchParams.itemProps ; + this.touchParams.itemProps = null; + itemProps.forEach(function (props) { + var id = props.item.id; + var itemData = me.itemsData.get(id, me.itemOptions); - // select items - this.selection = []; - for (i = 0, ii = ids.length; i < ii; i++) { - id = ids[i]; - item = this.items[id]; - if (item) { - this.selection.push(id); - item.select(); - } - } - }; + if (!itemData) { + // add a new item + me.options.onAdd(props.item.data, function (itemData) { + me._removeItem(props.item); // remove temporary item + if (itemData) { + me.itemsData.getDataSet().add(itemData); + } - /** - * Get the selected items by their id - * @return {Array} ids The ids of the selected items - */ - ItemSet.prototype.getSelection = function() { - return this.selection.concat([]); - }; - - /** - * Get the id's of the currently visible items. - * @returns {Array} The ids of the visible items - */ - ItemSet.prototype.getVisibleItems = function() { - var range = this.body.range.getRange(); - var left = this.body.util.toScreen(range.start); - var right = this.body.util.toScreen(range.end); + // force re-stacking of all items next redraw + me.stackDirty = true; + me.body.emitter.emit('change'); + }); + } + else { + // update existing item + var changed = false; + if ('start' in props.item.data) { + changed = (props.start != props.item.data.start.valueOf()); + itemData.start = util.convert(props.item.data.start, + dataset._options.type && dataset._options.type.start || 'Date'); + } + if ('end' in props.item.data) { + changed = changed || (props.end != props.item.data.end.valueOf()); + itemData.end = util.convert(props.item.data.end, + dataset._options.type && dataset._options.type.end || 'Date'); + } + if ('group' in props.item.data) { + changed = changed || (props.group != props.item.data.group); + itemData.group = props.item.data.group; + } - var ids = []; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - var group = this.groups[groupId]; - var rawVisibleItems = group.visibleItems; + // only apply changes when start or end is actually changed + if (changed) { + me.options.onMove(itemData, function (itemData) { + if (itemData) { + // apply changes + itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) + changes.push(itemData); + } + else { + // restore original values + me._updateItemProps(props.item, props); - // filter the "raw" set with visibleItems into a set which is really - // visible by pixels - for (var i = 0; i < rawVisibleItems.length; i++) { - var item = rawVisibleItems[i]; - // TODO: also check whether visible vertically - if ((item.left < right) && (item.left + item.width > left)) { - ids.push(item.id); + me.stackDirty = true; // force re-stacking of all items next redraw + me.body.emitter.emit('change'); + } + }); } } + }); + + // apply the changes to the data (if there are changes) + if (changes.length) { + dataset.update(changes); } - } - return ids; + event.stopPropagation(); + } }; /** - * Deselect a selected item - * @param {String | Number} id + * Handle selecting/deselecting an item when tapping it + * @param {Event} event * @private */ - ItemSet.prototype._deselect = function(id) { - var selection = this.selection; - for (var i = 0, ii = selection.length; i < ii; i++) { - if (selection[i] == id) { // non-strict comparison! - selection.splice(i, 1); - break; - } + ItemSet.prototype._onSelectItem = function (event) { + if (!this.options.selectable) return; + + var ctrlKey = event.gesture.srcEvent && event.gesture.srcEvent.ctrlKey; + var shiftKey = event.gesture.srcEvent && event.gesture.srcEvent.shiftKey; + if (ctrlKey || shiftKey) { + this._onMultiSelectItem(event); + return; } - }; - /** - * Repaint the component - * @return {boolean} Returns true if the component is resized - */ - ItemSet.prototype.redraw = function() { - var margin = this.options.margin, - range = this.body.range, - asSize = util.option.asSize, - options = this.options, - orientation = options.orientation, - resized = false, - frame = this.dom.frame, - editable = options.editable.updateTime || options.editable.updateGroup; + var oldSelection = this.getSelection(); - // recalculate absolute position (before redrawing groups) - this.props.top = this.body.domProps.top.height + this.body.domProps.border.top; - this.props.left = this.body.domProps.left.width + this.body.domProps.border.left; + var item = ItemSet.itemFromTarget(event); + var selection = item ? [item.id] : []; + this.setSelection(selection); - // update class name - frame.className = 'itemset' + (editable ? ' editable' : ''); + var newSelection = this.getSelection(); - // reorder the groups (if needed) - resized = this._orderGroups() || resized; + // emit a select event, + // except when old selection is empty and new selection is still empty + if (newSelection.length > 0 || oldSelection.length > 0) { + this.body.emitter.emit('select', { + items: newSelection + }); + } + }; - // check whether zoomed (in that case we need to re-stack everything) - // TODO: would be nicer to get this as a trigger from Range - var visibleInterval = range.end - range.start; - var zoomed = (visibleInterval != this.lastVisibleInterval) || (this.props.width != this.props.lastWidth); - if (zoomed) this.stackDirty = true; - this.lastVisibleInterval = visibleInterval; - this.props.lastWidth = this.props.width; + /** + * Handle creation and updates of an item on double tap + * @param event + * @private + */ + ItemSet.prototype._onAddItem = function (event) { + if (!this.options.selectable) return; + if (!this.options.editable.add) return; - var restack = this.stackDirty; - var firstGroup = this._firstGroup(); - var firstMargin = { - item: margin.item, - axis: margin.axis - }; - var nonFirstMargin = { - item: margin.item, - axis: margin.item.vertical / 2 - }; - var height = 0; - var minHeight = margin.axis + margin.item.vertical; + var me = this, + snap = this.options.snap || null, + item = ItemSet.itemFromTarget(event); - // redraw the background group - this.groups[BACKGROUND].redraw(range, nonFirstMargin, restack); + if (item) { + // update item - // redraw all regular groups - util.forEach(this.groups, function (group) { - var groupMargin = (group == firstGroup) ? firstMargin : nonFirstMargin; - var groupResized = group.redraw(range, groupMargin, restack); - resized = groupResized || resized; - height += group.height; - }); - height = Math.max(height, minHeight); - this.stackDirty = false; + // execute async handler to update the item (or cancel it) + var itemData = me.itemsData.get(item.id); // get a clone of the data from the dataset + this.options.onUpdate(itemData, function (itemData) { + if (itemData) { + me.itemsData.getDataSet().update(itemData); + } + }); + } + else { + // add item + var xAbs = util.getAbsoluteLeft(this.dom.frame); + var x = event.gesture.center.pageX - xAbs; + var start = this.body.util.toTime(x); + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); - // update frame height - frame.style.height = asSize(height); + var newItem = { + start: snap ? snap(start, scale, step) : start, + content: 'new item' + }; - // calculate actual size - this.props.width = frame.offsetWidth; - this.props.height = height; + // when default type is a range, add a default end date to the new item + if (this.options.type === 'range') { + var end = this.body.util.toTime(x + this.props.width / 5); + newItem.end = snap ? snap(end, scale, step) : end; + } - // reposition axis - this.dom.axis.style.top = asSize((orientation == 'top') ? - (this.body.domProps.top.height + this.body.domProps.border.top) : - (this.body.domProps.top.height + this.body.domProps.centerContainer.height)); - this.dom.axis.style.left = '0'; + newItem[this.itemsData._fieldId] = util.randomUUID(); - // check if this component is resized - resized = this._isResized() || resized; + var group = this.groupFromTarget(event); + if (group) { + newItem.group = group.groupId; + } - return resized; + // execute async handler to customize (or cancel) adding an item + this.options.onAdd(newItem, function (item) { + if (item) { + me.itemsData.getDataSet().add(item); + // TODO: need to trigger a redraw? + } + }); + } }; /** - * Get the first group, aligned with the axis - * @return {Group | null} firstGroup + * Handle selecting/deselecting multiple items when holding an item + * @param {Event} event * @private */ - ItemSet.prototype._firstGroup = function() { - var firstGroupIndex = (this.options.orientation == 'top') ? 0 : (this.groupIds.length - 1); - var firstGroupId = this.groupIds[firstGroupIndex]; - var firstGroup = this.groups[firstGroupId] || this.groups[UNGROUPED]; + ItemSet.prototype._onMultiSelectItem = function (event) { + if (!this.options.selectable) return; - return firstGroup || null; - }; + var selection, + item = ItemSet.itemFromTarget(event); - /** - * Create or delete the group holding all ungrouped items. This group is used when - * there are no groups specified. - * @protected - */ - ItemSet.prototype._updateUngrouped = function() { - var ungrouped = this.groups[UNGROUPED]; - var background = this.groups[BACKGROUND]; - var item, itemId; + if (item) { + // multi select items + selection = this.getSelection(); // current selection - if (this.groupsData) { - // remove the group holding all ungrouped items - if (ungrouped) { - ungrouped.hide(); - delete this.groups[UNGROUPED]; + var shiftKey = event.gesture.touches[0] && event.gesture.touches[0].shiftKey || false; + if (shiftKey) { + // select all items between the old selection and the tapped item - for (itemId in this.items) { - if (this.items.hasOwnProperty(itemId)) { - item = this.items[itemId]; - item.parent && item.parent.remove(item); - var groupId = this._getGroupId(item.data); - var group = this.groups[groupId]; - group && group.add(item) || item.hide(); + // determine the selection range + selection.push(item.id); + var range = ItemSet._getItemRange(this.itemsData.get(selection, this.itemOptions)); + + // select all items within the selection range + selection = []; + for (var id in this.items) { + if (this.items.hasOwnProperty(id)) { + var _item = this.items[id]; + var start = _item.data.start; + var end = (_item.data.end !== undefined) ? _item.data.end : start; + + if (start >= range.min && end <= range.max) { + selection.push(_item.id); // do not use id but item.id, id itself is stringified + } } } } - } - else { - // create a group holding all (unfiltered) items - if (!ungrouped) { - var id = null; - var data = null; - ungrouped = new Group(id, data, this); - this.groups[UNGROUPED] = ungrouped; - - for (itemId in this.items) { - if (this.items.hasOwnProperty(itemId)) { - item = this.items[itemId]; - ungrouped.add(item); - } + else { + // add/remove this item from the current selection + var index = selection.indexOf(item.id); + if (index == -1) { + // item is not yet selected -> select it + selection.push(item.id); + } + else { + // item is already selected -> deselect it + selection.splice(index, 1); } - - ungrouped.show(); } - } - }; - /** - * Get the element for the labelset - * @return {HTMLElement} labelSet - */ - ItemSet.prototype.getLabelSet = function() { - return this.dom.labelSet; + this.setSelection(selection); + + this.body.emitter.emit('select', { + items: this.getSelection() + }); + } }; /** - * Set items - * @param {vis.DataSet | null} items + * Calculate the time range of a list of items + * @param {Array.} itemsData + * @return {{min: Date, max: Date}} Returns the range of the provided items + * @private */ - ItemSet.prototype.setItems = function(items) { - var me = this, - ids, - oldItemsData = this.itemsData; - - // replace the dataset - if (!items) { - this.itemsData = null; - } - else if (items instanceof DataSet || items instanceof DataView) { - this.itemsData = items; - } - else { - throw new TypeError('Data must be an instance of DataSet or DataView'); - } - - if (oldItemsData) { - // unsubscribe from old dataset - util.forEach(this.itemListeners, function (callback, event) { - oldItemsData.off(event, callback); - }); - - // remove all drawn items - ids = oldItemsData.getIds(); - this._onRemove(ids); - } + ItemSet._getItemRange = function(itemsData) { + var max = null; + var min = null; - if (this.itemsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.itemListeners, function (callback, event) { - me.itemsData.on(event, callback, id); - }); + itemsData.forEach(function (data) { + if (min == null || data.start < min) { + min = data.start; + } - // add all new items - ids = this.itemsData.getIds(); - this._onAdd(ids); + if (data.end != undefined) { + if (max == null || data.end > max) { + max = data.end; + } + } + else { + if (max == null || data.start > max) { + max = data.start; + } + } + }); - // update the group holding all ungrouped items - this._updateUngrouped(); + return { + min: min, + max: max } }; /** - * Get the current items - * @returns {vis.DataSet | null} + * Find an item from an event target: + * searches for the attribute 'timeline-item' in the event target's element tree + * @param {Event} event + * @return {Item | null} item */ - ItemSet.prototype.getItems = function() { - return this.itemsData; + ItemSet.itemFromTarget = function(event) { + var target = event.target; + while (target) { + if (target.hasOwnProperty('timeline-item')) { + return target['timeline-item']; + } + target = target.parentNode; + } + + return null; }; /** - * Set groups - * @param {vis.DataSet} groups + * Find the Group from an event target: + * searches for the attribute 'timeline-group' in the event target's element tree + * @param {Event} event + * @return {Group | null} group */ - ItemSet.prototype.setGroups = function(groups) { - var me = this, - ids; - - // unsubscribe from current dataset - if (this.groupsData) { - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.unsubscribe(event, callback); - }); + ItemSet.prototype.groupFromTarget = function(event) { + // TODO: cleanup when the new solution is stable (also on mobile) + //var target = event.target; + //while (target) { + // if (target.hasOwnProperty('timeline-group')) { + // return target['timeline-group']; + // } + // target = target.parentNode; + //} + // - // remove all drawn groups - ids = this.groupsData.getIds(); - this.groupsData = null; - this._onRemoveGroups(ids); // note: this will cause a redraw - } + var clientY = event.gesture.center.clientY; + for (var i = 0; i < this.groupIds.length; i++) { + var groupId = this.groupIds[i]; + var group = this.groups[groupId]; + var foreground = group.dom.foreground; + var top = util.getAbsoluteTop(foreground); + if (clientY > top && clientY < top + foreground.offsetHeight) { + return group; + } - // replace the dataset - if (!groups) { - this.groupsData = null; - } - else if (groups instanceof DataSet || groups instanceof DataView) { - this.groupsData = groups; - } - else { - throw new TypeError('Data must be an instance of DataSet or DataView'); + if (this.options.orientation === 'top') { + if (i === this.groupIds.length - 1 && clientY > top) { + return group; + } + } + else { + if (i === 0 && clientY < top + foreground.offset) { + return group; + } + } } - if (this.groupsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.on(event, callback, id); - }); + return null; + }; - // draw all ms - ids = this.groupsData.getIds(); - this._onAddGroups(ids); + /** + * Find the ItemSet from an event target: + * searches for the attribute 'timeline-itemset' in the event target's element tree + * @param {Event} event + * @return {ItemSet | null} item + */ + ItemSet.itemSetFromTarget = function(event) { + var target = event.target; + while (target) { + if (target.hasOwnProperty('timeline-itemset')) { + return target['timeline-itemset']; + } + target = target.parentNode; } - // update the group holding all ungrouped items - this._updateUngrouped(); + return null; + }; - // update the order of all items in each group - this._order(); + module.exports = ItemSet; - this.body.emitter.emit('change', {queue: true}); - }; - /** - * Get the current groups - * @returns {vis.DataSet | null} groups - */ - ItemSet.prototype.getGroups = function() { - return this.groupsData; - }; +/***/ }, +/* 33 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(2); + var Component = __webpack_require__(25); /** - * Remove an item by its id - * @param {String | Number} id + * Legend for Graph2d */ - ItemSet.prototype.removeItem = function(id) { - var item = this.itemsData.get(id), - dataset = this.itemsData.getDataSet(); - - if (item) { - // confirm deletion - this.options.onRemove(item, function (item) { - if (item) { - // remove by id here, it is possible that an item has no id defined - // itself, so better not delete by the item itself - dataset.remove(id); - } - }); + function Legend(body, options, side, linegraphOptions) { + this.body = body; + this.defaultOptions = { + enabled: true, + icons: true, + iconSize: 20, + iconSpacing: 6, + left: { + visible: true, + position: 'top-left' // top/bottom - left,center,right + }, + right: { + visible: true, + position: 'top-left' // top/bottom - left,center,right + } } - }; + this.side = side; + this.options = util.extend({},this.defaultOptions); + this.linegraphOptions = linegraphOptions; - /** - * Get the time of an item based on it's data and options.type - * @param {Object} itemData - * @returns {string} Returns the type - * @private - */ - ItemSet.prototype._getType = function (itemData) { - return itemData.type || this.options.type || (itemData.end ? 'range' : 'box'); - }; + this.svgElements = {}; + this.dom = {}; + this.groups = {}; + this.amountOfGroups = 0; + this._create(); + this.setOptions(options); + } - /** - * Get the group id for an item - * @param {Object} itemData - * @returns {string} Returns the groupId - * @private - */ - ItemSet.prototype._getGroupId = function (itemData) { - var type = this._getType(itemData); - if (type == 'background' && itemData.group == undefined) { - return BACKGROUND; - } - else { - return this.groupsData ? itemData.group : UNGROUPED; + Legend.prototype = new Component(); + + Legend.prototype.clear = function() { + this.groups = {}; + this.amountOfGroups = 0; + } + + Legend.prototype.addGroup = function(label, graphOptions) { + + if (!this.groups.hasOwnProperty(label)) { + this.groups[label] = graphOptions; } + this.amountOfGroups += 1; }; - /** - * Handle updated items - * @param {Number[]} ids - * @protected - */ - ItemSet.prototype._onUpdate = function(ids) { - var me = this; + Legend.prototype.updateGroup = function(label, graphOptions) { + this.groups[label] = graphOptions; + }; - ids.forEach(function (id) { - var itemData = me.itemsData.get(id, me.itemOptions); - var item = me.items[id]; - var type = me._getType(itemData); + Legend.prototype.removeGroup = function(label) { + if (this.groups.hasOwnProperty(label)) { + delete this.groups[label]; + this.amountOfGroups -= 1; + } + }; - var constructor = ItemSet.types[type]; + Legend.prototype._create = function() { + this.dom.frame = document.createElement('div'); + this.dom.frame.className = 'legend'; + this.dom.frame.style.position = "absolute"; + this.dom.frame.style.top = "10px"; + this.dom.frame.style.display = "block"; - if (item) { - // update item - if (!constructor || !(item instanceof constructor)) { - // item type has changed, delete the item and recreate it - me._removeItem(item); - item = null; - } - else { - me._updateItem(item, itemData); - } - } + this.dom.textArea = document.createElement('div'); + this.dom.textArea.className = 'legendText'; + this.dom.textArea.style.position = "relative"; + this.dom.textArea.style.top = "0px"; - if (!item) { - // create item - if (constructor) { - item = new constructor(itemData, me.conversion, me.options); - item.id = id; // TODO: not so nice setting id afterwards - me._addItem(item); - } - else if (type == 'rangeoverflow') { - // TODO: deprecated since version 2.1.0 (or 3.0.0?). cleanup some day - throw new TypeError('Item type "rangeoverflow" is deprecated. Use css styling instead: ' + - '.vis.timeline .item.range .content {overflow: visible;}'); - } - else { - throw new TypeError('Unknown item type "' + type + '"'); - } - } - }); + this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); + this.svg.style.position = 'absolute'; + this.svg.style.top = 0 +'px'; + this.svg.style.width = this.options.iconSize + 5 + 'px'; + this.svg.style.height = '100%'; - this._order(); - this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change', {queue: true}); + this.dom.frame.appendChild(this.svg); + this.dom.frame.appendChild(this.dom.textArea); }; /** - * Handle added items - * @param {Number[]} ids - * @protected - */ - ItemSet.prototype._onAdd = ItemSet.prototype._onUpdate; - - /** - * Handle removed items - * @param {Number[]} ids - * @protected + * Hide the component from the DOM */ - ItemSet.prototype._onRemove = function(ids) { - var count = 0; - var me = this; - ids.forEach(function (id) { - var item = me.items[id]; - if (item) { - count++; - me._removeItem(item); - } - }); - - if (count) { - // update order - this._order(); - this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change', {queue: true}); + Legend.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); } }; /** - * Update the order of item in all groups - * @private + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed */ - ItemSet.prototype._order = function() { - // reorder the items in all groups - // TODO: optimization: only reorder groups affected by the changed items - util.forEach(this.groups, function (group) { - group.order(); - }); + Legend.prototype.show = function() { + // show frame containing the items + if (!this.dom.frame.parentNode) { + this.body.dom.center.appendChild(this.dom.frame); + } }; - /** - * Handle updated groups - * @param {Number[]} ids - * @private - */ - ItemSet.prototype._onUpdateGroups = function(ids) { - this._onAddGroups(ids); + Legend.prototype.setOptions = function(options) { + var fields = ['enabled','orientation','icons','left','right']; + util.selectiveDeepExtend(fields, this.options, options); }; - /** - * Handle changed groups (added or updated) - * @param {Number[]} ids - * @private - */ - ItemSet.prototype._onAddGroups = function(ids) { - var me = this; - - ids.forEach(function (id) { - var groupData = me.groupsData.get(id); - var group = me.groups[id]; - - if (!group) { - // check for reserved ids - if (id == UNGROUPED || id == BACKGROUND) { - throw new Error('Illegal group id. ' + id + ' is a reserved id.'); - } - - var groupOptions = Object.create(me.options); - util.extend(groupOptions, { - height: null - }); - - group = new Group(id, groupData, me); - me.groups[id] = group; - - // add items with this groupId to the new group - for (var itemId in me.items) { - if (me.items.hasOwnProperty(itemId)) { - var item = me.items[itemId]; - if (item.data.group == id) { - group.add(item); - } - } + Legend.prototype.redraw = function() { + var activeGroups = 0; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + activeGroups++; } + } + } - group.order(); - group.show(); + if (this.options[this.side].visible == false || this.amountOfGroups == 0 || this.options.enabled == false || activeGroups == 0) { + this.hide(); + } + else { + this.show(); + if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'bottom-left') { + this.dom.frame.style.left = '4px'; + this.dom.frame.style.textAlign = "left"; + this.dom.textArea.style.textAlign = "left"; + this.dom.textArea.style.left = (this.options.iconSize + 15) + 'px'; + this.dom.textArea.style.right = ''; + this.svg.style.left = 0 +'px'; + this.svg.style.right = ''; } else { - // update group - group.setData(groupData); + this.dom.frame.style.right = '4px'; + this.dom.frame.style.textAlign = "right"; + this.dom.textArea.style.textAlign = "right"; + this.dom.textArea.style.right = (this.options.iconSize + 15) + 'px'; + this.dom.textArea.style.left = ''; + this.svg.style.right = 0 +'px'; + this.svg.style.left = ''; } - }); - - this.body.emitter.emit('change', {queue: true}); - }; - - /** - * Handle removed groups - * @param {Number[]} ids - * @private - */ - ItemSet.prototype._onRemoveGroups = function(ids) { - var groups = this.groups; - ids.forEach(function (id) { - var group = groups[id]; - if (group) { - group.hide(); - delete groups[id]; + if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'top-right') { + this.dom.frame.style.top = 4 - Number(this.body.dom.center.style.top.replace("px","")) + 'px'; + this.dom.frame.style.bottom = ''; + } + else { + var scrollableHeight = this.body.domProps.center.height - this.body.domProps.centerContainer.height; + this.dom.frame.style.bottom = 4 + scrollableHeight + Number(this.body.dom.center.style.top.replace("px","")) + 'px'; + this.dom.frame.style.top = ''; } - }); - this.markDirty(); + if (this.options.icons == false) { + this.dom.frame.style.width = this.dom.textArea.offsetWidth + 10 + 'px'; + this.dom.textArea.style.right = ''; + this.dom.textArea.style.left = ''; + this.svg.style.width = '0px'; + } + else { + this.dom.frame.style.width = this.options.iconSize + 15 + this.dom.textArea.offsetWidth + 10 + 'px' + this.drawLegendIcons(); + } - this.body.emitter.emit('change', {queue: true}); + var content = ''; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + content += this.groups[groupId].content + '
'; + } + } + } + this.dom.textArea.innerHTML = content; + this.dom.textArea.style.lineHeight = ((0.75 * this.options.iconSize) + this.options.iconSpacing) + 'px'; + } }; - /** - * Reorder the groups if needed - * @return {boolean} changed - * @private - */ - ItemSet.prototype._orderGroups = function () { - if (this.groupsData) { - // reorder the groups - var groupIds = this.groupsData.getIds({ - order: this.options.groupOrder - }); - - var changed = !util.equalArray(groupIds, this.groupIds); - if (changed) { - // hide all groups, removes them from the DOM - var groups = this.groups; - groupIds.forEach(function (groupId) { - groups[groupId].hide(); - }); + Legend.prototype.drawLegendIcons = function() { + if (this.dom.frame.parentNode) { + DOMutil.prepareElements(this.svgElements); + var padding = window.getComputedStyle(this.dom.frame).paddingTop; + var iconOffset = Number(padding.replace('px','')); + var x = iconOffset; + var iconWidth = this.options.iconSize; + var iconHeight = 0.75 * this.options.iconSize; + var y = iconOffset + 0.5 * iconHeight + 3; - // show the groups again, attach them to the DOM in correct order - groupIds.forEach(function (groupId) { - groups[groupId].show(); - }); + this.svg.style.width = iconWidth + 5 + iconOffset + 'px'; - this.groupIds = groupIds; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); + y += iconHeight + this.options.iconSpacing; + } + } } - return changed; - } - else { - return false; + DOMutil.cleanupElements(this.svgElements); } }; - /** - * Add a new item - * @param {Item} item - * @private - */ - ItemSet.prototype._addItem = function(item) { - this.items[item.id] = item; - - // add to group - var groupId = this._getGroupId(item.data); - var group = this.groups[groupId]; - if (group) group.add(item); - }; + module.exports = Legend; - /** - * Update an existing item - * @param {Item} item - * @param {Object} itemData - * @private - */ - ItemSet.prototype._updateItem = function(item, itemData) { - var oldGroupId = item.data.group; - // update the items data (will redraw the item when displayed) - item.setData(itemData); +/***/ }, +/* 34 */ +/***/ function(module, exports, __webpack_require__) { - // update group - if (oldGroupId != item.data.group) { - var oldGroup = this.groups[oldGroupId]; - if (oldGroup) oldGroup.remove(item); + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(2); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var Component = __webpack_require__(25); + var DataAxis = __webpack_require__(28); + var GraphGroup = __webpack_require__(29); + var Legend = __webpack_require__(33); + var BarGraphFunctions = __webpack_require__(50); - var groupId = this._getGroupId(item.data); - var group = this.groups[groupId]; - if (group) group.add(item); - } - }; + var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items /** - * Delete an item from the ItemSet: remove it from the DOM, from the map - * with items, and from the map with visible items, and from the selection - * @param {Item} item - * @private + * This is the constructor of the LineGraph. It requires a Timeline body and options. + * + * @param body + * @param options + * @constructor */ - ItemSet.prototype._removeItem = function(item) { - // remove from DOM - item.hide(); - - // remove from items - delete this.items[item.id]; + function LineGraph(body, options) { + this.id = util.randomUUID(); + this.body = body; - // remove from selection - var index = this.selection.indexOf(item.id); - if (index != -1) this.selection.splice(index, 1); + this.defaultOptions = { + yAxisOrientation: 'left', + defaultGroup: 'default', + sort: true, + sampling: true, + graphHeight: '400px', + shaded: { + enabled: false, + orientation: 'bottom' // top, bottom + }, + style: 'line', // line, bar + barChart: { + width: 50, + handleOverlap: 'overlap', + align: 'center' // left, center, right + }, + catmullRom: { + enabled: true, + parametrization: 'centripetal', // uniform (alpha = 0.0), chordal (alpha = 1.0), centripetal (alpha = 0.5) + alpha: 0.5 + }, + drawPoints: { + enabled: true, + size: 6, + style: 'square' // square, circle + }, + dataAxis: { + showMinorLabels: true, + showMajorLabels: true, + icons: false, + width: '40px', + visible: true, + alignZeros: true, + customRange: { + left: {min:undefined, max:undefined}, + right: {min:undefined, max:undefined} + } + //, these options are not set by default, but this shows the format they will be in + //format: { + // left: {decimals: 2}, + // right: {decimals: 2} + //}, + //title: { + // left: { + // text: 'left', + // style: 'color:black;' + // }, + // right: { + // text: 'right', + // style: 'color:black;' + // } + //} + }, + legend: { + enabled: false, + icons: true, + left: { + visible: true, + position: 'top-left' // top/bottom - left,right + }, + right: { + visible: true, + position: 'top-right' // top/bottom - left,right + } + }, + groups: { + visibility: {} + } + }; - // remove from group - item.parent && item.parent.remove(item); - }; + // options is shared by this ItemSet and all its items + this.options = util.extend({}, this.defaultOptions); + this.dom = {}; + this.props = {}; + this.hammer = null; + this.groups = {}; + this.abortedGraphUpdate = false; + this.updateSVGheight = false; + this.updateSVGheightOnResize = false; - /** - * Create an array containing all items being a range (having an end date) - * @param array - * @returns {Array} - * @private - */ - ItemSet.prototype._constructByEndArray = function(array) { - var endArray = []; + var me = this; + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet - for (var i = 0; i < array.length; i++) { - if (array[i] instanceof RangeItem) { - endArray.push(array[i]); + // listeners for the DataSet of the items + this.itemListeners = { + 'add': function (event, params, senderId) { + me._onAdd(params.items); + }, + 'update': function (event, params, senderId) { + me._onUpdate(params.items); + }, + 'remove': function (event, params, senderId) { + me._onRemove(params.items); } - } - return endArray; - }; - - /** - * Register the clicked item on touch, before dragStart is initiated. - * - * dragStart is initiated from a mousemove event, which can have left the item - * already resulting in an item == null - * - * @param {Event} event - * @private - */ - ItemSet.prototype._onTouch = function (event) { - // store the touched item, used in _onDragStart - this.touchParams.item = ItemSet.itemFromTarget(event); - }; - - /** - * Start dragging the selected events - * @param {Event} event - * @private - */ - ItemSet.prototype._onDragStart = function (event) { - if (!this.options.editable.updateTime && !this.options.editable.updateGroup) { - return; - } - - var item = this.touchParams.item || null; - var me = this; - var props; - - if (item && item.selected) { - var dragLeftItem = event.target.dragLeftItem; - var dragRightItem = event.target.dragRightItem; - - if (dragLeftItem) { - props = { - item: dragLeftItem, - initialX: event.gesture.center.clientX - }; - - if (me.options.editable.updateTime) { - props.start = item.data.start.valueOf(); - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } + }; - this.touchParams.itemProps = [props]; + // listeners for the DataSet of the groups + this.groupListeners = { + 'add': function (event, params, senderId) { + me._onAddGroups(params.items); + }, + 'update': function (event, params, senderId) { + me._onUpdateGroups(params.items); + }, + 'remove': function (event, params, senderId) { + me._onRemoveGroups(params.items); } - else if (dragRightItem) { - props = { - item: dragRightItem, - initialX: event.gesture.center.clientX - }; - - if (me.options.editable.updateTime) { - props.end = item.data.end.valueOf(); - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } + }; - this.touchParams.itemProps = [props]; - } - else { - this.touchParams.itemProps = this.getSelection().map(function (id) { - var item = me.items[id]; - var props = { - item: item, - initialX: event.gesture.center.clientX - }; + this.items = {}; // object with an Item for every data item + this.selection = []; // list with the ids of all selected nodes + this.lastStart = this.body.range.start; + this.touchParams = {}; // stores properties while dragging - if (me.options.editable.updateTime) { - if ('start' in item.data) { - props.start = item.data.start.valueOf(); + this.svgElements = {}; + this.setOptions(options); + this.groupsUsingDefaultStyles = [0]; + this.COUNTER = 0; + this.body.emitter.on('rangechanged', function() { + me.lastStart = me.body.range.start; + me.svg.style.left = util.option.asSize(-me.props.width); + me.redraw.call(me,true); + }); - if ('end' in item.data) { - // we store a duration here in order not to change the width - // of the item when moving it. - props.duration = item.data.end.valueOf() - props.start; - } - } - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } + // create the HTML DOM + this._create(); + this.framework = {svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups}; + this.body.emitter.emit('change'); - return props; - }); - } + } - event.stopPropagation(); - } - else if (this.options.editable.add && event.gesture.srcEvent.ctrlKey) { - // create a new range item when dragging with ctrl key down - this._onDragStartAddItem(event); - } - }; + LineGraph.prototype = new Component(); /** - * Start creating a new range item by dragging. - * @param {Event} event - * @private + * Create the HTML DOM for the ItemSet */ - ItemSet.prototype._onDragStartAddItem = function (event) { - var snap = this.options.snap || null; - var xAbs = util.getAbsoluteLeft(this.dom.frame); - var x = event.gesture.center.pageX - xAbs - 10; // minus 10 to compensate for the drag starting as soon as you've moved 10px - var time = this.body.util.toTime(x); - var scale = this.body.util.getScale(); - var step = this.body.util.getStep(); - var start = snap ? snap(time, scale, step) : start; - var end = start; - - var itemData = { - type: 'range', - start: start, - end: end, - content: 'new item' - }; + LineGraph.prototype._create = function(){ + var frame = document.createElement('div'); + frame.className = 'LineGraph'; + this.dom.frame = frame; - var id = util.randomUUID(); - itemData[this.itemsData._fieldId] = id; + // create svg element for graph drawing. + this.svg = document.createElementNS('http://www.w3.org/2000/svg','svg'); + this.svg.style.position = 'relative'; + this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; + this.svg.style.display = 'block'; + frame.appendChild(this.svg); - var group = this.groupFromTarget(event); - if (group) { - itemData.group = group.groupId; - } + // data axis + this.options.dataAxis.orientation = 'left'; + this.yAxisLeft = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); - var newItem = new RangeItem(itemData, this.conversion, this.options); - newItem.id = id; // TODO: not so nice setting id afterwards - this._addItem(newItem); + this.options.dataAxis.orientation = 'right'; + this.yAxisRight = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); + delete this.options.dataAxis.orientation; - var props = { - item: newItem, - end: end.valueOf(), - initialX: event.gesture.center.clientX - }; - this.touchParams.itemProps = [props]; + // legends + this.legendLeft = new Legend(this.body, this.options.legend, 'left', this.options.groups); + this.legendRight = new Legend(this.body, this.options.legend, 'right', this.options.groups); - event.stopPropagation(); + this.show(); }; /** - * Drag selected items - * @param {Event} event - * @private + * set the options of the LineGraph. the mergeOptions is used for subObjects that have an enabled element. + * @param {object} options */ - ItemSet.prototype._onDrag = function (event) { - event.preventDefault(); - - if (this.touchParams.itemProps) { - var me = this; - var snap = this.options.snap || null; - var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width; - var scale = this.body.util.getScale(); - var step = this.body.util.getStep(); - - // move - this.touchParams.itemProps.forEach(function (props) { - var newProps = {}; - var current = me.body.util.toTime(event.gesture.center.clientX - xOffset); - var initial = me.body.util.toTime(props.initialX - xOffset); - var offset = current - initial; - - if ('start' in props) { - var start = new Date(props.start + offset); - newProps.start = snap ? snap(start, scale, step) : start; + LineGraph.prototype.setOptions = function(options) { + if (options) { + var fields = ['sampling','defaultGroup','height','graphHeight','yAxisOrientation','style','barChart','dataAxis','sort','groups']; + if (options.graphHeight === undefined && options.height !== undefined && this.body.domProps.centerContainer.height !== undefined) { + this.updateSVGheight = true; + this.updateSVGheightOnResize = true; + } + else if (this.body.domProps.centerContainer.height !== undefined && options.graphHeight !== undefined) { + if (parseInt((options.graphHeight + '').replace("px",'')) < this.body.domProps.centerContainer.height) { + this.updateSVGheight = true; } + } + util.selectiveDeepExtend(fields, this.options, options); + util.mergeOptions(this.options, options,'catmullRom'); + util.mergeOptions(this.options, options,'drawPoints'); + util.mergeOptions(this.options, options,'shaded'); + util.mergeOptions(this.options, options,'legend'); - if ('end' in props) { - var end = new Date(props.end + offset); - newProps.end = snap ? snap(end, scale, step) : end; - } - else if ('duration' in props) { - newProps.end = new Date(newProps.start.valueOf() + props.duration); + if (options.catmullRom) { + if (typeof options.catmullRom == 'object') { + if (options.catmullRom.parametrization) { + if (options.catmullRom.parametrization == 'uniform') { + this.options.catmullRom.alpha = 0; + } + else if (options.catmullRom.parametrization == 'chordal') { + this.options.catmullRom.alpha = 1.0; + } + else { + this.options.catmullRom.parametrization = 'centripetal'; + this.options.catmullRom.alpha = 0.5; + } + } } + } - if ('group' in props) { - // drag from one group to another - var group = me.groupFromTarget(event); - newProps.group = group && group.groupId; + if (this.yAxisLeft) { + if (options.dataAxis !== undefined) { + this.yAxisLeft.setOptions(this.options.dataAxis); + this.yAxisRight.setOptions(this.options.dataAxis); } + } - // confirm moving the item - var itemData = util.extend({}, props.item.data, newProps); - me.options.onMoving(itemData, function (itemData) { - if (itemData) { - me._updateItemProps(props.item, itemData); - } - }); - }); + if (this.legendLeft) { + if (options.legend !== undefined) { + this.legendLeft.setOptions(this.options.legend); + this.legendRight.setOptions(this.options.legend); + } + } - this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change'); + if (this.groups.hasOwnProperty(UNGROUPED)) { + this.groups[UNGROUPED].setOptions(options); + } + } - event.stopPropagation(); + // this is used to redraw the graph if the visibility of the groups is changed. + if (this.dom.frame) { + this.redraw(true); } }; /** - * Update an items properties - * @param {Item} item - * @param {Object} props Can contain properties start, end, and group. - * @private + * Hide the component from the DOM */ - ItemSet.prototype._updateItemProps = function(item, props) { - // TODO: copy all properties from props to item? (also new ones) - if ('start' in props) { - item.data.start = props.start; - } - if ('end' in props) { - item.data.end = props.end; - } - else if ('duration' in props) { - item.data.end = new Date(props.start.valueOf() + props.duration); - } - if ('group' in props && item.data.group != props.group) { - this._moveToGroup(item, props.group) + LineGraph.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); } }; + /** - * Move an item to another group - * @param {Item} item - * @param {String | Number} groupId - * @private + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed */ - ItemSet.prototype._moveToGroup = function(item, groupId) { - var group = this.groups[groupId]; - if (group && group.groupId != item.data.group) { - var oldGroup = item.parent; - oldGroup.remove(item); - oldGroup.order(); - group.add(item); - group.order(); - - item.data.group = group.groupId; + LineGraph.prototype.show = function() { + // show frame containing the items + if (!this.dom.frame.parentNode) { + this.body.dom.center.appendChild(this.dom.frame); } }; + /** - * End of dragging selected items - * @param {Event} event - * @private + * Set items + * @param {vis.DataSet | null} items */ - ItemSet.prototype._onDragEnd = function (event) { - event.preventDefault() - - if (this.touchParams.itemProps) { - // prepare a change set for the changed items - var changes = []; - var me = this; - var dataset = this.itemsData.getDataSet(); - - var itemProps = this.touchParams.itemProps ; - this.touchParams.itemProps = null; - itemProps.forEach(function (props) { - var id = props.item.id; - var itemData = me.itemsData.get(id, me.itemOptions); + LineGraph.prototype.setItems = function(items) { + var me = this, + ids, + oldItemsData = this.itemsData; - if (!itemData) { - // add a new item - me.options.onAdd(props.item.data, function (itemData) { - me._removeItem(props.item); // remove temporary item - if (itemData) { - me.itemsData.getDataSet().add(itemData); - } + // replace the dataset + if (!items) { + this.itemsData = null; + } + else if (items instanceof DataSet || items instanceof DataView) { + this.itemsData = items; + } + else { + throw new TypeError('Data must be an instance of DataSet or DataView'); + } - // force re-stacking of all items next redraw - me.stackDirty = true; - me.body.emitter.emit('change'); - }); - } - else { - // update existing item - var changed = false; - if ('start' in props.item.data) { - changed = (props.start != props.item.data.start.valueOf()); - itemData.start = util.convert(props.item.data.start, - dataset._options.type && dataset._options.type.start || 'Date'); - } - if ('end' in props.item.data) { - changed = changed || (props.end != props.item.data.end.valueOf()); - itemData.end = util.convert(props.item.data.end, - dataset._options.type && dataset._options.type.end || 'Date'); - } - if ('group' in props.item.data) { - changed = changed || (props.group != props.item.data.group); - itemData.group = props.item.data.group; - } + if (oldItemsData) { + // unsubscribe from old dataset + util.forEach(this.itemListeners, function (callback, event) { + oldItemsData.off(event, callback); + }); - // only apply changes when start or end is actually changed - if (changed) { - me.options.onMove(itemData, function (itemData) { - if (itemData) { - // apply changes - itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) - changes.push(itemData); - } - else { - // restore original values - me._updateItemProps(props.item, props); + // remove all drawn items + ids = oldItemsData.getIds(); + this._onRemove(ids); + } - me.stackDirty = true; // force re-stacking of all items next redraw - me.body.emitter.emit('change'); - } - }); - } - } + if (this.itemsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.itemListeners, function (callback, event) { + me.itemsData.on(event, callback, id); }); - // apply the changes to the data (if there are changes) - if (changes.length) { - dataset.update(changes); - } - - event.stopPropagation(); + // add all new items + ids = this.itemsData.getIds(); + this._onAdd(ids); } + this._updateUngrouped(); + //this._updateGraph(); + this.redraw(true); }; + /** - * Handle selecting/deselecting an item when tapping it - * @param {Event} event - * @private + * Set groups + * @param {vis.DataSet} groups */ - ItemSet.prototype._onSelectItem = function (event) { - if (!this.options.selectable) return; - - var ctrlKey = event.gesture.srcEvent && event.gesture.srcEvent.ctrlKey; - var shiftKey = event.gesture.srcEvent && event.gesture.srcEvent.shiftKey; - if (ctrlKey || shiftKey) { - this._onMultiSelectItem(event); - return; - } + LineGraph.prototype.setGroups = function(groups) { + var me = this; + var ids; - var oldSelection = this.getSelection(); + // unsubscribe from current dataset + if (this.groupsData) { + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.unsubscribe(event, callback); + }); - var item = ItemSet.itemFromTarget(event); - var selection = item ? [item.id] : []; - this.setSelection(selection); + // remove all drawn groups + ids = this.groupsData.getIds(); + this.groupsData = null; + this._onRemoveGroups(ids); // note: this will cause a redraw + } - var newSelection = this.getSelection(); + // replace the dataset + if (!groups) { + this.groupsData = null; + } + else if (groups instanceof DataSet || groups instanceof DataView) { + this.groupsData = groups; + } + else { + throw new TypeError('Data must be an instance of DataSet or DataView'); + } - // emit a select event, - // except when old selection is empty and new selection is still empty - if (newSelection.length > 0 || oldSelection.length > 0) { - this.body.emitter.emit('select', { - items: newSelection + if (this.groupsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.on(event, callback, id); }); + + // draw all ms + ids = this.groupsData.getIds(); + this._onAddGroups(ids); } + this._onUpdate(); }; + /** - * Handle creation and updates of an item on double tap - * @param event + * Update the data + * @param [ids] * @private */ - ItemSet.prototype._onAddItem = function (event) { - if (!this.options.selectable) return; - if (!this.options.editable.add) return; + LineGraph.prototype._onUpdate = function(ids) { + this._updateUngrouped(); + this._updateAllGroupData(); + //this._updateGraph(); + this.redraw(true); + }; + LineGraph.prototype._onAdd = function (ids) {this._onUpdate(ids);}; + LineGraph.prototype._onRemove = function (ids) {this._onUpdate(ids);}; + LineGraph.prototype._onUpdateGroups = function (groupIds) { + for (var i = 0; i < groupIds.length; i++) { + var group = this.groupsData.get(groupIds[i]); + this._updateGroup(group, groupIds[i]); + } - var me = this, - snap = this.options.snap || null, - item = ItemSet.itemFromTarget(event); + //this._updateGraph(); + this.redraw(true); + }; + LineGraph.prototype._onAddGroups = function (groupIds) {this._onUpdateGroups(groupIds);}; - if (item) { - // update item - // execute async handler to update the item (or cancel it) - var itemData = me.itemsData.get(item.id); // get a clone of the data from the dataset - this.options.onUpdate(itemData, function (itemData) { - if (itemData) { - me.itemsData.getDataSet().update(itemData); + /** + * this cleans the group out off the legends and the dataaxis, updates the ungrouped and updates the graph + * @param {Array} groupIds + * @private + */ + LineGraph.prototype._onRemoveGroups = function (groupIds) { + for (var i = 0; i < groupIds.length; i++) { + if (this.groups.hasOwnProperty(groupIds[i])) { + if (this.groups[groupIds[i]].options.yAxisOrientation == 'right') { + this.yAxisRight.removeGroup(groupIds[i]); + this.legendRight.removeGroup(groupIds[i]); + this.legendRight.redraw(); } - }); + else { + this.yAxisLeft.removeGroup(groupIds[i]); + this.legendLeft.removeGroup(groupIds[i]); + this.legendLeft.redraw(); + } + delete this.groups[groupIds[i]]; + } } - else { - // add item - var xAbs = util.getAbsoluteLeft(this.dom.frame); - var x = event.gesture.center.pageX - xAbs; - var start = this.body.util.toTime(x); - var scale = this.body.util.getScale(); - var step = this.body.util.getStep(); + this._updateUngrouped(); + //this._updateGraph(); + this.redraw(true); + }; - var newItem = { - start: snap ? snap(start, scale, step) : start, - content: 'new item' - }; - // when default type is a range, add a default end date to the new item - if (this.options.type === 'range') { - var end = this.body.util.toTime(x + this.props.width / 5); - newItem.end = snap ? snap(end, scale, step) : end; + /** + * update a group object with the group dataset entree + * + * @param group + * @param groupId + * @private + */ + LineGraph.prototype._updateGroup = function (group, groupId) { + if (!this.groups.hasOwnProperty(groupId)) { + this.groups[groupId] = new GraphGroup(group, groupId, this.options, this.groupsUsingDefaultStyles); + if (this.groups[groupId].options.yAxisOrientation == 'right') { + this.yAxisRight.addGroup(groupId, this.groups[groupId]); + this.legendRight.addGroup(groupId, this.groups[groupId]); } - - newItem[this.itemsData._fieldId] = util.randomUUID(); - - var group = this.groupFromTarget(event); - if (group) { - newItem.group = group.groupId; + else { + this.yAxisLeft.addGroup(groupId, this.groups[groupId]); + this.legendLeft.addGroup(groupId, this.groups[groupId]); + } + } + else { + this.groups[groupId].update(group); + if (this.groups[groupId].options.yAxisOrientation == 'right') { + this.yAxisRight.updateGroup(groupId, this.groups[groupId]); + this.legendRight.updateGroup(groupId, this.groups[groupId]); + } + else { + this.yAxisLeft.updateGroup(groupId, this.groups[groupId]); + this.legendLeft.updateGroup(groupId, this.groups[groupId]); } - - // execute async handler to customize (or cancel) adding an item - this.options.onAdd(newItem, function (item) { - if (item) { - me.itemsData.getDataSet().add(item); - // TODO: need to trigger a redraw? - } - }); } + this.legendLeft.redraw(); + this.legendRight.redraw(); }; + /** - * Handle selecting/deselecting multiple items when holding an item - * @param {Event} event + * this updates all groups, it is used when there is an update the the itemset. + * * @private */ - ItemSet.prototype._onMultiSelectItem = function (event) { - if (!this.options.selectable) return; - - var selection, - item = ItemSet.itemFromTarget(event); - - if (item) { - // multi select items - selection = this.getSelection(); // current selection - - var shiftKey = event.gesture.touches[0] && event.gesture.touches[0].shiftKey || false; - if (shiftKey) { - // select all items between the old selection and the tapped item - - // determine the selection range - selection.push(item.id); - var range = ItemSet._getItemRange(this.itemsData.get(selection, this.itemOptions)); - - // select all items within the selection range - selection = []; - for (var id in this.items) { - if (this.items.hasOwnProperty(id)) { - var _item = this.items[id]; - var start = _item.data.start; - var end = (_item.data.end !== undefined) ? _item.data.end : start; - - if (start >= range.min && end <= range.max) { - selection.push(_item.id); // do not use id but item.id, id itself is stringified - } - } + LineGraph.prototype._updateAllGroupData = function () { + if (this.itemsData != null) { + var groupsContent = {}; + var groupId; + for (groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + groupsContent[groupId] = []; } } - else { - // add/remove this item from the current selection - var index = selection.indexOf(item.id); - if (index == -1) { - // item is not yet selected -> select it - selection.push(item.id); + for (var itemId in this.itemsData._data) { + if (this.itemsData._data.hasOwnProperty(itemId)) { + var item = this.itemsData._data[itemId]; + if (groupsContent[item.group] === undefined) { + throw new Error('Cannot find referenced group. Possible reason: items added before groups? Groups need to be added before items, as items refer to groups.') + } + item.x = util.convert(item.x,'Date'); + groupsContent[item.group].push(item); } - else { - // item is already selected -> deselect it - selection.splice(index, 1); + } + for (groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + this.groups[groupId].setItems(groupsContent[groupId]); } } - - this.setSelection(selection); - - this.body.emitter.emit('select', { - items: this.getSelection() - }); } }; + /** - * Calculate the time range of a list of items - * @param {Array.} itemsData - * @return {{min: Date, max: Date}} Returns the range of the provided items - * @private + * Create or delete the group holding all ungrouped items. This group is used when + * there are no groups specified. This anonymous group is called 'graph'. + * @protected */ - ItemSet._getItemRange = function(itemsData) { - var max = null; - var min = null; - - itemsData.forEach(function (data) { - if (min == null || data.start < min) { - min = data.start; + LineGraph.prototype._updateUngrouped = function() { + if (this.itemsData && this.itemsData != null) { + var ungroupedCounter = 0; + for (var itemId in this.itemsData._data) { + if (this.itemsData._data.hasOwnProperty(itemId)) { + var item = this.itemsData._data[itemId]; + if (item != undefined) { + if (item.hasOwnProperty('group')) { + if (item.group === undefined) { + item.group = UNGROUPED; + } + } + else { + item.group = UNGROUPED; + } + ungroupedCounter = item.group == UNGROUPED ? ungroupedCounter + 1 : ungroupedCounter; + } + } } - if (data.end != undefined) { - if (max == null || data.end > max) { - max = data.end; - } + if (ungroupedCounter == 0) { + delete this.groups[UNGROUPED]; + this.legendLeft.removeGroup(UNGROUPED); + this.legendRight.removeGroup(UNGROUPED); + this.yAxisLeft.removeGroup(UNGROUPED); + this.yAxisRight.removeGroup(UNGROUPED); } else { - if (max == null || data.start > max) { - max = data.start; - } + var group = {id: UNGROUPED, content: this.options.defaultGroup}; + this._updateGroup(group, UNGROUPED); } - }); - - return { - min: min, - max: max } + else { + delete this.groups[UNGROUPED]; + this.legendLeft.removeGroup(UNGROUPED); + this.legendRight.removeGroup(UNGROUPED); + this.yAxisLeft.removeGroup(UNGROUPED); + this.yAxisRight.removeGroup(UNGROUPED); + } + + this.legendLeft.redraw(); + this.legendRight.redraw(); }; + /** - * Find an item from an event target: - * searches for the attribute 'timeline-item' in the event target's element tree - * @param {Event} event - * @return {Item | null} item + * Redraw the component, mandatory function + * @return {boolean} Returns true if the component is resized */ - ItemSet.itemFromTarget = function(event) { - var target = event.target; - while (target) { - if (target.hasOwnProperty('timeline-item')) { - return target['timeline-item']; - } - target = target.parentNode; + LineGraph.prototype.redraw = function(forceGraphUpdate) { + var resized = false; + + // calculate actual size and position + this.props.width = this.dom.frame.offsetWidth; + this.props.height = this.body.domProps.centerContainer.height; + + // update the graph if there is no lastWidth or with, used for the initial draw + if (this.lastWidth === undefined && this.props.width) { + forceGraphUpdate = true; } - return null; - }; + // check if this component is resized + resized = this._isResized() || resized; - /** - * Find the Group from an event target: - * searches for the attribute 'timeline-group' in the event target's element tree - * @param {Event} event - * @return {Group | null} group - */ - ItemSet.prototype.groupFromTarget = function(event) { - // TODO: cleanup when the new solution is stable (also on mobile) - //var target = event.target; - //while (target) { - // if (target.hasOwnProperty('timeline-group')) { - // return target['timeline-group']; - // } - // target = target.parentNode; - //} - // + // check whether zoomed (in that case we need to re-stack everything) + var visibleInterval = this.body.range.end - this.body.range.start; + var zoomed = (visibleInterval != this.lastVisibleInterval); + this.lastVisibleInterval = visibleInterval; - var clientY = event.gesture.center.clientY; - for (var i = 0; i < this.groupIds.length; i++) { - var groupId = this.groupIds[i]; - var group = this.groups[groupId]; - var foreground = group.dom.foreground; - var top = util.getAbsoluteTop(foreground); - if (clientY > top && clientY < top + foreground.offsetHeight) { - return group; - } - if (this.options.orientation === 'top') { - if (i === this.groupIds.length - 1 && clientY > top) { - return group; - } - } - else { - if (i === 0 && clientY < top + foreground.offset) { - return group; - } + // the svg element is three times as big as the width, this allows for fully dragging left and right + // without reloading the graph. the controls for this are bound to events in the constructor + if (resized == true) { + this.svg.style.width = util.option.asSize(3*this.props.width); + this.svg.style.left = util.option.asSize(-this.props.width); + + // if the height of the graph is set as proportional, change the height of the svg + if ((this.options.height + '').indexOf("%") != -1 || this.updateSVGheightOnResize == true) { + this.updateSVGheight = true; } } - return null; - }; + // update the height of the graph on each redraw of the graph. + if (this.updateSVGheight == true) { + if (this.options.graphHeight != this.body.domProps.centerContainer.height + 'px') { + this.options.graphHeight = this.body.domProps.centerContainer.height + 'px'; + this.svg.style.height = this.body.domProps.centerContainer.height + 'px'; + } + this.updateSVGheight = false; + } + else { + this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; + } - /** - * Find the ItemSet from an event target: - * searches for the attribute 'timeline-itemset' in the event target's element tree - * @param {Event} event - * @return {ItemSet | null} item - */ - ItemSet.itemSetFromTarget = function(event) { - var target = event.target; - while (target) { - if (target.hasOwnProperty('timeline-itemset')) { - return target['timeline-itemset']; + // zoomed is here to ensure that animations are shown correctly. + if (resized == true || zoomed == true || this.abortedGraphUpdate == true || forceGraphUpdate == true) { + resized = this._updateGraph() || resized; + } + else { + // move the whole svg while dragging + if (this.lastStart != 0) { + var offset = this.body.range.start - this.lastStart; + var range = this.body.range.end - this.body.range.start; + if (this.props.width != 0) { + var rangePerPixelInv = this.props.width/range; + var xOffset = offset * rangePerPixelInv; + this.svg.style.left = (-this.props.width - xOffset) + 'px'; + } } - target = target.parentNode; } - return null; + this.legendLeft.redraw(); + this.legendRight.redraw(); + return resized; }; - module.exports = ItemSet; - - -/***/ }, -/* 27 */ -/***/ function(module, exports, __webpack_require__) { - - var moment = __webpack_require__(2); - var DateUtil = __webpack_require__(24); - var util = __webpack_require__(1); /** - * @constructor TimeStep - * The class TimeStep is an iterator for dates. You provide a start date and an - * end date. The class itself determines the best scale (step size) based on the - * provided start Date, end Date, and minimumStep. - * - * If minimumStep is provided, the step size is chosen as close as possible - * to the minimumStep but larger than minimumStep. If minimumStep is not - * provided, the scale is set to 1 DAY. - * The minimumStep should correspond with the onscreen size of about 6 characters - * - * Alternatively, you can set a scale by hand. - * After creation, you can initialize the class by executing first(). Then you - * can iterate from the start date to the end date via next(). You can check if - * the end date is reached with the function hasNext(). After each step, you can - * retrieve the current date via getCurrent(). - * The TimeStep has scales ranging from milliseconds, seconds, minutes, hours, - * days, to years. - * - * Version: 1.2 + * Update and redraw the graph. * - * @param {Date} [start] The start date, for example new Date(2010, 9, 21) - * or new Date(2010, 9, 21, 23, 45, 00) - * @param {Date} [end] The end date - * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds */ - function TimeStep(start, end, minimumStep, hiddenDates) { - // variables - this.current = new Date(); - this._start = new Date(); - this._end = new Date(); + LineGraph.prototype._updateGraph = function () { + // reset the svg elements + DOMutil.prepareElements(this.svgElements); + if (this.props.width != 0 && this.itemsData != null) { + var group, i; + var preprocessedGroupData = {}; + var processedGroupData = {}; + var groupRanges = {}; + var changeCalled = false; - this.autoScale = true; - this.scale = 'day'; - this.step = 1; + // getting group Ids + var groupIds = []; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + group = this.groups[groupId]; + if (group.visible == true && (this.options.groups.visibility[groupId] === undefined || this.options.groups.visibility[groupId] == true)) { + groupIds.push(groupId); + } + } + } + if (groupIds.length > 0) { + // this is the range of the SVG canvas + var minDate = this.body.util.toGlobalTime(-this.body.domProps.root.width); + var maxDate = this.body.util.toGlobalTime(2 * this.body.domProps.root.width); + var groupsData = {}; + // fill groups data, this only loads the data we require based on the timewindow + this._getRelevantData(groupIds, groupsData, minDate, maxDate); - // initialize the range - this.setRange(start, end, minimumStep); + // apply sampling, if disabled, it will pass through this function. + this._applySampling(groupIds, groupsData); - // hidden Dates options - this.switchedDay = false; - this.switchedMonth = false; - this.switchedYear = false; - this.hiddenDates = hiddenDates; - if (hiddenDates === undefined) { - this.hiddenDates = []; - } + // we transform the X coordinates to detect collisions + for (i = 0; i < groupIds.length; i++) { + preprocessedGroupData[groupIds[i]] = this._convertXcoordinates(groupsData[groupIds[i]]); + } - this.format = TimeStep.FORMAT; // default formatting - } + // now all needed data has been collected we start the processing. + this._getYRanges(groupIds, preprocessedGroupData, groupRanges); - // Time formatting - TimeStep.FORMAT = { - minorLabels: { - millisecond:'SSS', - second: 's', - minute: 'HH:mm', - hour: 'HH:mm', - weekday: 'ddd D', - day: 'D', - month: 'MMM', - year: 'YYYY' - }, - majorLabels: { - millisecond:'HH:mm:ss', - second: 'D MMMM HH:mm', - minute: 'ddd D MMMM', - hour: 'ddd D MMMM', - weekday: 'MMMM YYYY', - day: 'MMMM YYYY', - month: 'YYYY', - year: '' - } - }; + // update the Y axis first, we use this data to draw at the correct Y points + // changeCalled is required to clean the SVG on a change emit. + changeCalled = this._updateYAxis(groupIds, groupRanges); + var MAX_CYCLES = 5; + if (changeCalled == true && this.COUNTER < MAX_CYCLES) { + DOMutil.cleanupElements(this.svgElements); + this.abortedGraphUpdate = true; + this.COUNTER++; + this.body.emitter.emit('change'); + return true; + } + else { + if (this.COUNTER > MAX_CYCLES) { + console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle.") + } + this.COUNTER = 0; + this.abortedGraphUpdate = false; - /** - * Set custom formatting for the minor an major labels of the TimeStep. - * Both `minorLabels` and `majorLabels` are an Object with properties: - * 'millisecond, 'second, 'minute', 'hour', 'weekday, 'day, 'month, 'year'. - * @param {{minorLabels: Object, majorLabels: Object}} format - */ - TimeStep.prototype.setFormat = function (format) { - var defaultFormat = util.deepExtend({}, TimeStep.FORMAT); - this.format = util.deepExtend(defaultFormat, format); - }; + // With the yAxis scaled correctly, use this to get the Y values of the points. + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + processedGroupData[groupIds[i]] = this._convertYcoordinates(groupsData[groupIds[i]], group); + } - /** - * Set a new range - * If minimumStep is provided, the step size is chosen as close as possible - * to the minimumStep but larger than minimumStep. If minimumStep is not - * provided, the scale is set to 1 DAY. - * The minimumStep should correspond with the onscreen size of about 6 characters - * @param {Date} [start] The start date and time. - * @param {Date} [end] The end date and time. - * @param {int} [minimumStep] Optional. Minimum step size in milliseconds - */ - TimeStep.prototype.setRange = function(start, end, minimumStep) { - if (!(start instanceof Date) || !(end instanceof Date)) { - throw "No legal start or end date in method setRange"; + // draw the groups + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (group.options.style != 'bar') { // bar needs to be drawn enmasse + group.draw(processedGroupData[groupIds[i]], group, this.framework); + } + } + BarGraphFunctions.draw(groupIds, processedGroupData, this.framework); + } + } } - this._start = (start != undefined) ? new Date(start.valueOf()) : new Date(); - this._end = (end != undefined) ? new Date(end.valueOf()) : new Date(); - - if (this.autoScale) { - this.setMinimumStep(minimumStep); - } + // cleanup unused svg elements + DOMutil.cleanupElements(this.svgElements); + return false; }; + /** - * Set the range iterator to the start date. - */ - TimeStep.prototype.first = function() { - this.current = new Date(this._start.valueOf()); - this.roundToMinor(); + * first select and preprocess the data from the datasets. + * the groups have their preselection of data, we now loop over this data to see + * what data we need to draw. Sorted data is much faster. + * more optimization is possible by doing the sampling before and using the binary search + * to find the end date to determine the increment. + * + * @param {array} groupIds + * @param {object} groupsData + * @param {date} minDate + * @param {date} maxDate + * @private + */ + LineGraph.prototype._getRelevantData = function (groupIds, groupsData, minDate, maxDate) { + var group, i, j, item; + if (groupIds.length > 0) { + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + groupsData[groupIds[i]] = []; + var dataContainer = groupsData[groupIds[i]]; + // optimization for sorted data + if (group.options.sort == true) { + var guess = Math.max(0, util.binarySearchValue(group.itemsData, minDate, 'x', 'before')); + for (j = guess; j < group.itemsData.length; j++) { + item = group.itemsData[j]; + if (item !== undefined) { + if (item.x > maxDate) { + dataContainer.push(item); + break; + } + else { + dataContainer.push(item); + } + } + } + } + else { + for (j = 0; j < group.itemsData.length; j++) { + item = group.itemsData[j]; + if (item !== undefined) { + if (item.x > minDate && item.x < maxDate) { + dataContainer.push(item); + } + } + } + } + } + } }; + /** - * Round the current date to the first minor date value - * This must be executed once when the current date is set to start Date + * + * @param groupIds + * @param groupsData + * @private */ - TimeStep.prototype.roundToMinor = function() { - // round to floor - // IMPORTANT: we have no breaks in this switch! (this is no bug) - // noinspection FallThroughInSwitchStatementJS - switch (this.scale) { - case 'year': - this.current.setFullYear(this.step * Math.floor(this.current.getFullYear() / this.step)); - this.current.setMonth(0); - case 'month': this.current.setDate(1); - case 'day': // intentional fall through - case 'weekday': this.current.setHours(0); - case 'hour': this.current.setMinutes(0); - case 'minute': this.current.setSeconds(0); - case 'second': this.current.setMilliseconds(0); - //case 'millisecond': // nothing to do for milliseconds - } + LineGraph.prototype._applySampling = function (groupIds, groupsData) { + var group; + if (groupIds.length > 0) { + for (var i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (group.options.sampling == true) { + var dataContainer = groupsData[groupIds[i]]; + if (dataContainer.length > 0) { + var increment = 1; + var amountOfPoints = dataContainer.length; - if (this.step != 1) { - // round down to the first minor value that is a multiple of the current step size - switch (this.scale) { - case 'millisecond': this.current.setMilliseconds(this.current.getMilliseconds() - this.current.getMilliseconds() % this.step); break; - case 'second': this.current.setSeconds(this.current.getSeconds() - this.current.getSeconds() % this.step); break; - case 'minute': this.current.setMinutes(this.current.getMinutes() - this.current.getMinutes() % this.step); break; - case 'hour': this.current.setHours(this.current.getHours() - this.current.getHours() % this.step); break; - case 'weekday': // intentional fall through - case 'day': this.current.setDate((this.current.getDate()-1) - (this.current.getDate()-1) % this.step + 1); break; - case 'month': this.current.setMonth(this.current.getMonth() - this.current.getMonth() % this.step); break; - case 'year': this.current.setFullYear(this.current.getFullYear() - this.current.getFullYear() % this.step); break; - default: break; + // the global screen is used because changing the width of the yAxis may affect the increment, resulting in an endless loop + // of width changing of the yAxis. + var xDistance = this.body.util.toGlobalScreen(dataContainer[dataContainer.length - 1].x) - this.body.util.toGlobalScreen(dataContainer[0].x); + var pointsPerPixel = amountOfPoints / xDistance; + increment = Math.min(Math.ceil(0.2 * amountOfPoints), Math.max(1, Math.round(pointsPerPixel))); + + var sampledData = []; + for (var j = 0; j < amountOfPoints; j += increment) { + sampledData.push(dataContainer[j]); + + } + groupsData[groupIds[i]] = sampledData; + } + } } } }; + /** - * Check if the there is a next step - * @return {boolean} true if the current date has not passed the end date + * + * + * @param {array} groupIds + * @param {object} groupsData + * @param {object} groupRanges | this is being filled here + * @private */ - TimeStep.prototype.hasNext = function () { - return (this.current.valueOf() <= this._end.valueOf()); + LineGraph.prototype._getYRanges = function (groupIds, groupsData, groupRanges) { + var groupData, group, i; + var barCombinedDataLeft = []; + var barCombinedDataRight = []; + var options; + if (groupIds.length > 0) { + for (i = 0; i < groupIds.length; i++) { + groupData = groupsData[groupIds[i]]; + options = this.groups[groupIds[i]].options; + if (groupData.length > 0) { + group = this.groups[groupIds[i]]; + // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. + if (options.barChart.handleOverlap == 'stack' && options.style == 'bar') { + if (options.yAxisOrientation == 'left') {barCombinedDataLeft = barCombinedDataLeft.concat(group.getYRange(groupData)) ;} + else {barCombinedDataRight = barCombinedDataRight.concat(group.getYRange(groupData));} + } + else { + groupRanges[groupIds[i]] = group.getYRange(groupData,groupIds[i]); + } + } + } + + // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. + BarGraphFunctions.getStackedBarYRange(barCombinedDataLeft , groupRanges, groupIds, '__barchartLeft' , 'left' ); + BarGraphFunctions.getStackedBarYRange(barCombinedDataRight, groupRanges, groupIds, '__barchartRight', 'right'); + } }; + /** - * Do the next step + * this sets the Y ranges for the Y axis. It also determines which of the axis should be shown or hidden. + * @param {Array} groupIds + * @param {Object} groupRanges + * @private */ - TimeStep.prototype.next = function() { - var prev = this.current.valueOf(); + LineGraph.prototype._updateYAxis = function (groupIds, groupRanges) { + var resized = false; + var yAxisLeftUsed = false; + var yAxisRightUsed = false; + var minLeft = 1e9, minRight = 1e9, maxLeft = -1e9, maxRight = -1e9, minVal, maxVal; + // if groups are present + if (groupIds.length > 0) { + // this is here to make sure that if there are no items in the axis but there are groups, that there is no infinite draw/redraw loop. + for (var i = 0; i < groupIds.length; i++) { + var group = this.groups[groupIds[i]]; + if (group && group.options.yAxisOrientation != 'right') { + yAxisLeftUsed = true; + minLeft = 0; + maxLeft = 0; + } + else if (group && group.options.yAxisOrientation) { + yAxisRightUsed = true; + minRight = 0; + maxRight = 0; + } + } - // Two cases, needed to prevent issues with switching daylight savings - // (end of March and end of October) - if (this.current.getMonth() < 6) { - switch (this.scale) { - case 'millisecond': + // if there are items: + for (var i = 0; i < groupIds.length; i++) { + if (groupRanges.hasOwnProperty(groupIds[i])) { + if (groupRanges[groupIds[i]].ignore !== true) { + minVal = groupRanges[groupIds[i]].min; + maxVal = groupRanges[groupIds[i]].max; - this.current = new Date(this.current.valueOf() + this.step); break; - case 'second': this.current = new Date(this.current.valueOf() + this.step * 1000); break; - case 'minute': this.current = new Date(this.current.valueOf() + this.step * 1000 * 60); break; - case 'hour': - this.current = new Date(this.current.valueOf() + this.step * 1000 * 60 * 60); - // in case of skipping an hour for daylight savings, adjust the hour again (else you get: 0h 5h 9h ... instead of 0h 4h 8h ...) - var h = this.current.getHours(); - this.current.setHours(h - (h % this.step)); - break; - case 'weekday': // intentional fall through - case 'day': this.current.setDate(this.current.getDate() + this.step); break; - case 'month': this.current.setMonth(this.current.getMonth() + this.step); break; - case 'year': this.current.setFullYear(this.current.getFullYear() + this.step); break; - default: break; + if (groupRanges[groupIds[i]].yAxisOrientation != 'right') { + yAxisLeftUsed = true; + minLeft = minLeft > minVal ? minVal : minLeft; + maxLeft = maxLeft < maxVal ? maxVal : maxLeft; + } + else { + yAxisRightUsed = true; + minRight = minRight > minVal ? minVal : minRight; + maxRight = maxRight < maxVal ? maxVal : maxRight; + } + } + } + } + + if (yAxisLeftUsed == true) { + this.yAxisLeft.setRange(minLeft, maxLeft); + } + if (yAxisRightUsed == true) { + this.yAxisRight.setRange(minRight, maxRight); } } + resized = this._toggleAxisVisiblity(yAxisLeftUsed , this.yAxisLeft) || resized; + resized = this._toggleAxisVisiblity(yAxisRightUsed, this.yAxisRight) || resized; + + if (yAxisRightUsed == true && yAxisLeftUsed == true) { + this.yAxisLeft.drawIcons = true; + this.yAxisRight.drawIcons = true; + } else { - switch (this.scale) { - case 'millisecond': this.current = new Date(this.current.valueOf() + this.step); break; - case 'second': this.current.setSeconds(this.current.getSeconds() + this.step); break; - case 'minute': this.current.setMinutes(this.current.getMinutes() + this.step); break; - case 'hour': this.current.setHours(this.current.getHours() + this.step); break; - case 'weekday': // intentional fall through - case 'day': this.current.setDate(this.current.getDate() + this.step); break; - case 'month': this.current.setMonth(this.current.getMonth() + this.step); break; - case 'year': this.current.setFullYear(this.current.getFullYear() + this.step); break; - default: break; - } + this.yAxisLeft.drawIcons = false; + this.yAxisRight.drawIcons = false; } + this.yAxisRight.master = !yAxisLeftUsed; + if (this.yAxisRight.master == false) { + if (yAxisRightUsed == true) {this.yAxisLeft.lineOffset = this.yAxisRight.width;} + else {this.yAxisLeft.lineOffset = 0;} - if (this.step != 1) { - // round down to the correct major value - switch (this.scale) { - case 'millisecond': if(this.current.getMilliseconds() < this.step) this.current.setMilliseconds(0); break; - case 'second': if(this.current.getSeconds() < this.step) this.current.setSeconds(0); break; - case 'minute': if(this.current.getMinutes() < this.step) this.current.setMinutes(0); break; - case 'hour': if(this.current.getHours() < this.step) this.current.setHours(0); break; - case 'weekday': // intentional fall through - case 'day': if(this.current.getDate() < this.step+1) this.current.setDate(1); break; - case 'month': if(this.current.getMonth() < this.step) this.current.setMonth(0); break; - case 'year': break; // nothing to do for year - default: break; - } + resized = this.yAxisLeft.redraw() || resized; + this.yAxisRight.stepPixelsForced = this.yAxisLeft.stepPixels; + this.yAxisRight.zeroCrossing = this.yAxisLeft.zeroCrossing; + resized = this.yAxisRight.redraw() || resized; + } + else { + resized = this.yAxisRight.redraw() || resized; } - // safety mechanism: if current time is still unchanged, move to the end - if (this.current.valueOf() == prev) { - this.current = new Date(this._end.valueOf()); + // clean the accumulated lists + if (groupIds.indexOf('__barchartLeft') != -1) { + groupIds.splice(groupIds.indexOf('__barchartLeft'),1); + } + if (groupIds.indexOf('__barchartRight') != -1) { + groupIds.splice(groupIds.indexOf('__barchartRight'),1); } - DateUtil.stepOverHiddenDates(this, prev); + return resized; }; /** - * Get the current datetime - * @return {Date} current The current date + * This shows or hides the Y axis if needed. If there is a change, the changed event is emitted by the updateYAxis function + * + * @param {boolean} axisUsed + * @returns {boolean} + * @private + * @param axis */ - TimeStep.prototype.getCurrent = function() { - return this.current; + LineGraph.prototype._toggleAxisVisiblity = function (axisUsed, axis) { + var changed = false; + if (axisUsed == false) { + if (axis.dom.frame.parentNode && axis.hidden == false) { + axis.hide() + changed = true; + } + } + else { + if (!axis.dom.frame.parentNode && axis.hidden == true) { + axis.show(); + changed = true; + } + } + return changed; }; + /** - * Set a custom scale. Autoscaling will be disabled. - * For example setScale('minute', 5) will result - * in minor steps of 5 minutes, and major steps of an hour. + * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the + * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for + * the yAxis. * - * @param {{scale: string, step: number}} params - * An object containing two properties: - * - A string 'scale'. Choose from 'millisecond', 'second', - * 'minute', 'hour', 'weekday, 'day, 'month, 'year'. - * - A number 'step'. A step size, by default 1. - * Choose for example 1, 2, 5, or 10. + * @param datapoints + * @returns {Array} + * @private */ - TimeStep.prototype.setScale = function(params) { - if (params && typeof params.scale == 'string') { - this.scale = params.scale; - this.step = params.step > 0 ? params.step : 1; - this.autoScale = false; + LineGraph.prototype._convertXcoordinates = function (datapoints) { + var extractedData = []; + var xValue, yValue; + var toScreen = this.body.util.toScreen; + + for (var i = 0; i < datapoints.length; i++) { + xValue = toScreen(datapoints[i].x) + this.props.width; + yValue = datapoints[i].y; + extractedData.push({x: xValue, y: yValue}); } - }; - /** - * Enable or disable autoscaling - * @param {boolean} enable If true, autoascaling is set true - */ - TimeStep.prototype.setAutoScale = function (enable) { - this.autoScale = enable; + return extractedData; }; /** - * Automatically determine the scale that bests fits the provided minimum step - * @param {Number} [minimumStep] The minimum step size in milliseconds + * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the + * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for + * the yAxis. + * + * @param datapoints + * @param group + * @returns {Array} + * @private */ - TimeStep.prototype.setMinimumStep = function(minimumStep) { - if (minimumStep == undefined) { - return; + LineGraph.prototype._convertYcoordinates = function (datapoints, group) { + var extractedData = []; + var xValue, yValue; + var toScreen = this.body.util.toScreen; + var axis = this.yAxisLeft; + var svgHeight = Number(this.svg.style.height.replace('px','')); + if (group.options.yAxisOrientation == 'right') { + axis = this.yAxisRight; } - //var b = asc + ds; + for (var i = 0; i < datapoints.length; i++) { + var labelValue; + //if (datapoints[i].label) { + // labelValue = datapoints[i].label; + //} + //else { + // labelValue = null; + //} + labelValue = datapoints[i].label ? datapoints[i].label : null; + xValue = toScreen(datapoints[i].x) + this.props.width; + yValue = Math.round(axis.convertValue(datapoints[i].y)); + extractedData.push({x: xValue, y: yValue, label:labelValue}); + } - var stepYear = (1000 * 60 * 60 * 24 * 30 * 12); - var stepMonth = (1000 * 60 * 60 * 24 * 30); - var stepDay = (1000 * 60 * 60 * 24); - var stepHour = (1000 * 60 * 60); - var stepMinute = (1000 * 60); - var stepSecond = (1000); - var stepMillisecond= (1); + group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0))); - // find the smallest step that is larger than the provided minimumStep - if (stepYear*1000 > minimumStep) {this.scale = 'year'; this.step = 1000;} - if (stepYear*500 > minimumStep) {this.scale = 'year'; this.step = 500;} - if (stepYear*100 > minimumStep) {this.scale = 'year'; this.step = 100;} - if (stepYear*50 > minimumStep) {this.scale = 'year'; this.step = 50;} - if (stepYear*10 > minimumStep) {this.scale = 'year'; this.step = 10;} - if (stepYear*5 > minimumStep) {this.scale = 'year'; this.step = 5;} - if (stepYear > minimumStep) {this.scale = 'year'; this.step = 1;} - if (stepMonth*3 > minimumStep) {this.scale = 'month'; this.step = 3;} - if (stepMonth > minimumStep) {this.scale = 'month'; this.step = 1;} - if (stepDay*5 > minimumStep) {this.scale = 'day'; this.step = 5;} - if (stepDay*2 > minimumStep) {this.scale = 'day'; this.step = 2;} - if (stepDay > minimumStep) {this.scale = 'day'; this.step = 1;} - if (stepDay/2 > minimumStep) {this.scale = 'weekday'; this.step = 1;} - if (stepHour*4 > minimumStep) {this.scale = 'hour'; this.step = 4;} - if (stepHour > minimumStep) {this.scale = 'hour'; this.step = 1;} - if (stepMinute*15 > minimumStep) {this.scale = 'minute'; this.step = 15;} - if (stepMinute*10 > minimumStep) {this.scale = 'minute'; this.step = 10;} - if (stepMinute*5 > minimumStep) {this.scale = 'minute'; this.step = 5;} - if (stepMinute > minimumStep) {this.scale = 'minute'; this.step = 1;} - if (stepSecond*15 > minimumStep) {this.scale = 'second'; this.step = 15;} - if (stepSecond*10 > minimumStep) {this.scale = 'second'; this.step = 10;} - if (stepSecond*5 > minimumStep) {this.scale = 'second'; this.step = 5;} - if (stepSecond > minimumStep) {this.scale = 'second'; this.step = 1;} - if (stepMillisecond*200 > minimumStep) {this.scale = 'millisecond'; this.step = 200;} - if (stepMillisecond*100 > minimumStep) {this.scale = 'millisecond'; this.step = 100;} - if (stepMillisecond*50 > minimumStep) {this.scale = 'millisecond'; this.step = 50;} - if (stepMillisecond*10 > minimumStep) {this.scale = 'millisecond'; this.step = 10;} - if (stepMillisecond*5 > minimumStep) {this.scale = 'millisecond'; this.step = 5;} - if (stepMillisecond > minimumStep) {this.scale = 'millisecond'; this.step = 1;} + return extractedData; }; + + module.exports = LineGraph; + + +/***/ }, +/* 35 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var Component = __webpack_require__(25); + var TimeStep = __webpack_require__(19); + var DateUtil = __webpack_require__(15); + var moment = __webpack_require__(44); + /** - * Snap a date to a rounded value. - * The snap intervals are dependent on the current scale and step. - * Static function - * @param {Date} date the date to be snapped. - * @param {string} scale Current scale, can be 'millisecond', 'second', - * 'minute', 'hour', 'weekday, 'day, 'month, 'year'. - * @param {number} step Current step (1, 2, 4, 5, ... - * @return {Date} snappedDate + * A horizontal time axis + * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body + * @param {Object} [options] See TimeAxis.setOptions for the available + * options. + * @constructor TimeAxis + * @extends Component */ - TimeStep.snap = function(date, scale, step) { - var clone = new Date(date.valueOf()); - - if (scale == 'year') { - var year = clone.getFullYear() + Math.round(clone.getMonth() / 12); - clone.setFullYear(Math.round(year / step) * step); - clone.setMonth(0); - clone.setDate(0); - clone.setHours(0); - clone.setMinutes(0); - clone.setSeconds(0); - clone.setMilliseconds(0); - } - else if (scale == 'month') { - if (clone.getDate() > 15) { - clone.setDate(1); - clone.setMonth(clone.getMonth() + 1); - // important: first set Date to 1, after that change the month. - } - else { - clone.setDate(1); + function TimeAxis (body, options) { + this.dom = { + foreground: null, + lines: [], + majorTexts: [], + minorTexts: [], + redundant: { + lines: [], + majorTexts: [], + minorTexts: [] } + }; + this.props = { + range: { + start: 0, + end: 0, + minimumStep: 0 + }, + lineTop: 0 + }; - clone.setHours(0); - clone.setMinutes(0); - clone.setSeconds(0); - clone.setMilliseconds(0); - } - else if (scale == 'day') { - //noinspection FallthroughInSwitchStatementJS - switch (step) { - case 5: - case 2: - clone.setHours(Math.round(clone.getHours() / 24) * 24); break; - default: - clone.setHours(Math.round(clone.getHours() / 12) * 12); break; - } - clone.setMinutes(0); - clone.setSeconds(0); - clone.setMilliseconds(0); - } - else if (scale == 'weekday') { - //noinspection FallthroughInSwitchStatementJS - switch (step) { - case 5: - case 2: - clone.setHours(Math.round(clone.getHours() / 12) * 12); break; - default: - clone.setHours(Math.round(clone.getHours() / 6) * 6); break; - } - clone.setMinutes(0); - clone.setSeconds(0); - clone.setMilliseconds(0); - } - else if (scale == 'hour') { - switch (step) { - case 4: - clone.setMinutes(Math.round(clone.getMinutes() / 60) * 60); break; - default: - clone.setMinutes(Math.round(clone.getMinutes() / 30) * 30); break; - } - clone.setSeconds(0); - clone.setMilliseconds(0); - } else if (scale == 'minute') { - //noinspection FallthroughInSwitchStatementJS - switch (step) { - case 15: - case 10: - clone.setMinutes(Math.round(clone.getMinutes() / 5) * 5); - clone.setSeconds(0); - break; - case 5: - clone.setSeconds(Math.round(clone.getSeconds() / 60) * 60); break; - default: - clone.setSeconds(Math.round(clone.getSeconds() / 30) * 30); break; - } - clone.setMilliseconds(0); - } - else if (scale == 'second') { - //noinspection FallthroughInSwitchStatementJS - switch (step) { - case 15: - case 10: - clone.setSeconds(Math.round(clone.getSeconds() / 5) * 5); - clone.setMilliseconds(0); - break; - case 5: - clone.setMilliseconds(Math.round(clone.getMilliseconds() / 1000) * 1000); break; - default: - clone.setMilliseconds(Math.round(clone.getMilliseconds() / 500) * 500); break; - } - } - else if (scale == 'millisecond') { - var _step = step > 5 ? step / 2 : 1; - clone.setMilliseconds(Math.round(clone.getMilliseconds() / _step) * _step); - } - - return clone; - }; + this.defaultOptions = { + orientation: 'bottom', // supported: 'top', 'bottom' + // TODO: implement timeaxis orientations 'left' and 'right' + showMinorLabels: true, + showMajorLabels: true, + format: null, + timeAxis: null + }; + this.options = util.extend({}, this.defaultOptions); + + this.body = body; + + // create the HTML DOM + this._create(); + + this.setOptions(options); + } + + TimeAxis.prototype = new Component(); /** - * Check if the current value is a major value (for example when the step - * is DAY, a major value is each first day of the MONTH) - * @return {boolean} true if current date is major, else false. + * Set options for the TimeAxis. + * Parameters will be merged in current options. + * @param {Object} options Available options: + * {string} [orientation] + * {boolean} [showMinorLabels] + * {boolean} [showMajorLabels] */ - TimeStep.prototype.isMajor = function() { - if (this.switchedYear == true) { - this.switchedYear = false; - switch (this.scale) { - case 'year': - case 'month': - case 'weekday': - case 'day': - case 'hour': - case 'minute': - case 'second': - case 'millisecond': - return true; - default: - return false; - } - } - else if (this.switchedMonth == true) { - this.switchedMonth = false; - switch (this.scale) { - case 'weekday': - case 'day': - case 'hour': - case 'minute': - case 'second': - case 'millisecond': - return true; - default: - return false; - } - } - else if (this.switchedDay == true) { - this.switchedDay = false; - switch (this.scale) { - case 'millisecond': - case 'second': - case 'minute': - case 'hour': - return true; - default: - return false; - } - } + TimeAxis.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + util.selectiveExtend([ + 'orientation', + 'showMinorLabels', + 'showMajorLabels', + 'hiddenDates', + 'format', + 'timeAxis' + ], this.options, options); - switch (this.scale) { - case 'millisecond': - return (this.current.getMilliseconds() == 0); - case 'second': - return (this.current.getSeconds() == 0); - case 'minute': - return (this.current.getHours() == 0) && (this.current.getMinutes() == 0); - case 'hour': - return (this.current.getHours() == 0); - case 'weekday': // intentional fall through - case 'day': - return (this.current.getDate() == 1); - case 'month': - return (this.current.getMonth() == 0); - case 'year': - return false; - default: - return false; + // apply locale to moment.js + // TODO: not so nice, this is applied globally to moment.js + if ('locale' in options) { + if (typeof moment.locale === 'function') { + // moment.js 2.8.1+ + moment.locale(options.locale); + } + else { + moment.lang(options.locale); + } + } } }; - /** - * Returns formatted text for the minor axislabel, depending on the current - * date and the scale. For example when scale is MINUTE, the current time is - * formatted as "hh:mm". - * @param {Date} [date] custom date. if not provided, current date is taken + * Create the HTML DOM for the TimeAxis */ - TimeStep.prototype.getLabelMinor = function(date) { - if (date == undefined) { - date = this.current; - } + TimeAxis.prototype._create = function() { + this.dom.foreground = document.createElement('div'); + this.dom.background = document.createElement('div'); - var format = this.format.minorLabels[this.scale]; - return (format && format.length > 0) ? moment(date).format(format) : ''; + this.dom.foreground.className = 'timeaxis foreground'; + this.dom.background.className = 'timeaxis background'; }; /** - * Returns formatted text for the major axis label, depending on the current - * date and the scale. For example when scale is MINUTE, the major scale is - * hours, and the hour will be formatted as "hh". - * @param {Date} [date] custom date. if not provided, current date is taken + * Destroy the TimeAxis */ - TimeStep.prototype.getLabelMajor = function(date) { - if (date == undefined) { - date = this.current; + TimeAxis.prototype.destroy = function() { + // remove from DOM + if (this.dom.foreground.parentNode) { + this.dom.foreground.parentNode.removeChild(this.dom.foreground); + } + if (this.dom.background.parentNode) { + this.dom.background.parentNode.removeChild(this.dom.background); } - var format = this.format.majorLabels[this.scale]; - return (format && format.length > 0) ? moment(date).format(format) : ''; + this.body = null; }; - TimeStep.prototype.getClassName = function() { - var m = moment(this.current); - var date = m.locale ? m.locale('en') : m.lang('en'); // old versions of moment have .lang() function - var step = this.step; - - function even(value) { - return (value / step % 2 == 0) ? ' even' : ' odd'; - } + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + TimeAxis.prototype.redraw = function () { + var options = this.options; + var props = this.props; + var foreground = this.dom.foreground; + var background = this.dom.background; - function today(date) { - if (date.isSame(new Date(), 'day')) { - return ' today'; - } - if (date.isSame(moment().add(1, 'day'), 'day')) { - return ' tomorrow'; - } - if (date.isSame(moment().add(-1, 'day'), 'day')) { - return ' yesterday'; - } - return ''; - } + // determine the correct parent DOM element (depending on option orientation) + var parent = (options.orientation == 'top') ? this.body.dom.top : this.body.dom.bottom; + var parentChanged = (foreground.parentNode !== parent); - function currentWeek(date) { - return date.isSame(new Date(), 'week') ? ' current-week' : ''; - } + // calculate character width and height + this._calculateCharSize(); - function currentMonth(date) { - return date.isSame(new Date(), 'month') ? ' current-month' : ''; - } + // TODO: recalculate sizes only needed when parent is resized or options is changed + var orientation = this.options.orientation, + showMinorLabels = this.options.showMinorLabels, + showMajorLabels = this.options.showMajorLabels; - function currentYear(date) { - return date.isSame(new Date(), 'year') ? ' current-year' : ''; - } + // determine the width and height of the elemens for the axis + props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; + props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; + props.height = props.minorLabelHeight + props.majorLabelHeight; + props.width = foreground.offsetWidth; - switch (this.scale) { - case 'millisecond': - return even(date.milliseconds()).trim(); + props.minorLineHeight = this.body.domProps.root.height - props.majorLabelHeight - + (options.orientation == 'top' ? this.body.domProps.bottom.height : this.body.domProps.top.height); + props.minorLineWidth = 1; // TODO: really calculate width + props.majorLineHeight = props.minorLineHeight + props.majorLabelHeight; + props.majorLineWidth = 1; // TODO: really calculate width - case 'second': - return even(date.seconds()).trim(); + // take foreground and background offline while updating (is almost twice as fast) + var foregroundNextSibling = foreground.nextSibling; + var backgroundNextSibling = background.nextSibling; + foreground.parentNode && foreground.parentNode.removeChild(foreground); + background.parentNode && background.parentNode.removeChild(background); - case 'minute': - return even(date.minutes()).trim(); + foreground.style.height = this.props.height + 'px'; - case 'hour': - var hours = date.hours(); - if (this.step == 4) { - hours = hours + '-' + (hours + 4); - } - return hours + 'h' + today(date) + even(date.hours()); + this._repaintLabels(); - case 'weekday': - return date.format('dddd').toLowerCase() + - today(date) + currentWeek(date) + even(date.date()); + // put DOM online again (at the same place) + if (foregroundNextSibling) { + parent.insertBefore(foreground, foregroundNextSibling); + } + else { + parent.appendChild(foreground) + } + if (backgroundNextSibling) { + this.body.dom.backgroundVertical.insertBefore(background, backgroundNextSibling); + } + else { + this.body.dom.backgroundVertical.appendChild(background) + } - case 'day': - var day = date.date(); - var month = date.format('MMMM').toLowerCase(); - return 'day' + day + ' ' + month + currentMonth(date) + even(day - 1); + return this._isResized() || parentChanged; + }; - case 'month': - return date.format('MMMM').toLowerCase() + - currentMonth(date) + even(date.month()); + /** + * Repaint major and minor text labels and vertical grid lines + * @private + */ + TimeAxis.prototype._repaintLabels = function () { + var orientation = this.options.orientation; - case 'year': - var year = date.year(); - return 'year' + year + currentYear(date)+ even(year); + // calculate range and step (step such that we have space for 7 characters per label) + var start = util.convert(this.body.range.start, 'Number'); + var end = util.convert(this.body.range.end, 'Number'); + var timeLabelsize = this.body.util.toTime((this.props.minorCharWidth || 10) * 7).valueOf(); + var minimumStep = timeLabelsize - DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this.body.range, timeLabelsize); + minimumStep -= this.body.util.toTime(0).valueOf(); - default: - return ''; + var step = new TimeStep(new Date(start), new Date(end), minimumStep, this.body.hiddenDates); + if (this.options.format) { + step.setFormat(this.options.format); } - }; + if (this.options.timeAxis) { + step.setScale(this.options.timeAxis); + } + this.step = step; - module.exports = TimeStep; + // Move all DOM elements to a "redundant" list, where they + // can be picked for re-use, and clear the lists with lines and texts. + // At the end of the function _repaintLabels, left over elements will be cleaned up + var dom = this.dom; + dom.redundant.lines = dom.lines; + dom.redundant.majorTexts = dom.majorTexts; + dom.redundant.minorTexts = dom.minorTexts; + dom.lines = []; + dom.majorTexts = []; + dom.minorTexts = []; + var cur; + var x = 0; + var isMajor; + var xPrev = 0; + var width = 0; + var prevLine; + var xFirstMajorLabel = undefined; + var max = 0; + var className; -/***/ }, -/* 28 */ -/***/ function(module, exports, __webpack_require__) { + step.first(); + while (step.hasNext() && max < 1000) { + max++; - var util = __webpack_require__(1); - var stack = __webpack_require__(50); - var RangeItem = __webpack_require__(33); + cur = step.getCurrent(); + isMajor = step.isMajor(); + className = step.getClassName(); - /** - * @constructor Group - * @param {Number | String} groupId - * @param {Object} data - * @param {ItemSet} itemSet - */ - function Group (groupId, data, itemSet) { - this.groupId = groupId; - this.subgroups = {}; - this.subgroupIndex = 0; - this.subgroupOrderer = data && data.subgroupOrder; - this.itemSet = itemSet; + xPrev = x; + x = this.body.util.toScreen(cur); + width = x - xPrev; + if (prevLine) { + prevLine.style.width = width + 'px'; + } - this.dom = {}; - this.props = { - label: { - width: 0, - height: 0 + if (this.options.showMinorLabels) { + this._repaintMinorText(x, step.getLabelMinor(), orientation, className); } - }; - this.className = null; - this.items = {}; // items filtered by groupId of this group - this.visibleItems = []; // items currently visible in window - this.orderedItems = { - byStart: [], - byEnd: [] - }; - this.checkRangedItems = false; // needed to refresh the ranged items if the window is programatically changed with NO overlap. - var me = this; - this.itemSet.body.emitter.on("checkRangedItems", function () { - me.checkRangedItems = true; - }) + if (isMajor && this.options.showMajorLabels) { + if (x > 0) { + if (xFirstMajorLabel == undefined) { + xFirstMajorLabel = x; + } + this._repaintMajorText(x, step.getLabelMajor(), orientation, className); + } + prevLine = this._repaintMajorLine(x, orientation, className); + } + else { + prevLine = this._repaintMinorLine(x, orientation, className); + } - this._create(); + step.next(); + } - this.setData(data); - } + // create a major label on the left when needed + if (this.options.showMajorLabels) { + var leftTime = this.body.util.toTime(0), + leftText = step.getLabelMajor(leftTime), + widthText = leftText.length * (this.props.majorCharWidth || 10) + 10; // upper bound estimation + + if (xFirstMajorLabel == undefined || widthText < xFirstMajorLabel) { + this._repaintMajorText(0, leftText, orientation, className); + } + } + + // Cleanup leftover DOM elements from the redundant list + util.forEach(this.dom.redundant, function (arr) { + while (arr.length) { + var elem = arr.pop(); + if (elem && elem.parentNode) { + elem.parentNode.removeChild(elem); + } + } + }); + }; /** - * Create DOM elements for the group + * Create a minor label for the axis at position x + * @param {Number} x + * @param {String} text + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className * @private */ - Group.prototype._create = function() { - var label = document.createElement('div'); - label.className = 'vlabel'; - this.dom.label = label; - - var inner = document.createElement('div'); - inner.className = 'inner'; - label.appendChild(inner); - this.dom.inner = inner; - - var foreground = document.createElement('div'); - foreground.className = 'group'; - foreground['timeline-group'] = this; - this.dom.foreground = foreground; + TimeAxis.prototype._repaintMinorText = function (x, text, orientation, className) { + // reuse redundant label + var label = this.dom.redundant.minorTexts.shift(); - this.dom.background = document.createElement('div'); - this.dom.background.className = 'group'; + if (!label) { + // create new label + var content = document.createTextNode(''); + label = document.createElement('div'); + label.appendChild(content); + this.dom.foreground.appendChild(label); + } + this.dom.minorTexts.push(label); - this.dom.axis = document.createElement('div'); - this.dom.axis.className = 'group'; + label.childNodes[0].nodeValue = text; - // create a hidden marker to detect when the Timelines container is attached - // to the DOM, or the style of a parent of the Timeline is changed from - // display:none is changed to visible. - this.dom.marker = document.createElement('div'); - this.dom.marker.style.visibility = 'hidden'; // TODO: ask jos why this is not none? - this.dom.marker.innerHTML = '?'; - this.dom.background.appendChild(this.dom.marker); + label.style.top = (orientation == 'top') ? (this.props.majorLabelHeight + 'px') : '0'; + label.style.left = x + 'px'; + label.className = 'text minor ' + className; + //label.title = title; // TODO: this is a heavy operation }; /** - * Set the group data for this group - * @param {Object} data Group data, can contain properties content and className + * Create a Major label for the axis at position x + * @param {Number} x + * @param {String} text + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @private */ - Group.prototype.setData = function(data) { - // update contents - var content = data && data.content; - if (content instanceof Element) { - this.dom.inner.appendChild(content); - } - else if (content !== undefined && content !== null) { - this.dom.inner.innerHTML = content; - } - else { - this.dom.inner.innerHTML = this.groupId || ''; // groupId can be null + TimeAxis.prototype._repaintMajorText = function (x, text, orientation, className) { + // reuse redundant label + var label = this.dom.redundant.majorTexts.shift(); + + if (!label) { + // create label + var content = document.createTextNode(text); + label = document.createElement('div'); + label.appendChild(content); + this.dom.foreground.appendChild(label); } + this.dom.majorTexts.push(label); - // update title - this.dom.label.title = data && data.title || ''; - - if (!this.dom.inner.firstChild) { - util.addClassName(this.dom.inner, 'hidden'); - } - else { - util.removeClassName(this.dom.inner, 'hidden'); - } - - // update className - var className = data && data.className || null; - if (className != this.className) { - if (this.className) { - util.removeClassName(this.dom.label, this.className); - util.removeClassName(this.dom.foreground, this.className); - util.removeClassName(this.dom.background, this.className); - util.removeClassName(this.dom.axis, this.className); - } - util.addClassName(this.dom.label, className); - util.addClassName(this.dom.foreground, className); - util.addClassName(this.dom.background, className); - util.addClassName(this.dom.axis, className); - this.className = className; - } - - // update style - if (this.style) { - util.removeCssText(this.dom.label, this.style); - this.style = null; - } - if (data && data.style) { - util.addCssText(this.dom.label, data.style); - this.style = data.style; - } - }; - - /** - * Get the width of the group label - * @return {number} width - */ - Group.prototype.getLabelWidth = function() { - return this.props.label.width; - }; + label.childNodes[0].nodeValue = text; + label.className = 'text major ' + className; + //label.title = title; // TODO: this is a heavy operation + label.style.top = (orientation == 'top') ? '0' : (this.props.minorLabelHeight + 'px'); + label.style.left = x + 'px'; + }; /** - * Repaint this group - * @param {{start: number, end: number}} range - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * @param {boolean} [restack=false] Force restacking of all items - * @return {boolean} Returns true if the group is resized + * Create a minor line for the axis at position x + * @param {Number} x + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @return {Element} Returns the created line + * @private */ - Group.prototype.redraw = function(range, margin, restack) { - var resized = false; - - this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - - // force recalculation of the height of the items when the marker height changed - // (due to the Timeline being attached to the DOM or changed from display:none to visible) - var markerHeight = this.dom.marker.clientHeight; - if (markerHeight != this.lastMarkerHeight) { - this.lastMarkerHeight = markerHeight; - - util.forEach(this.items, function (item) { - item.dirty = true; - if (item.displayed) item.redraw(); - }); - - restack = true; + TimeAxis.prototype._repaintMinorLine = function (x, orientation, className) { + // reuse redundant line + var line = this.dom.redundant.lines.shift(); + if (!line) { + // create vertical line + line = document.createElement('div'); + this.dom.background.appendChild(line); } + this.dom.lines.push(line); - // reposition visible items vertically - var customOrderedItems = null; - if (this.itemSet.options.stack) { // TODO: ugly way to access options... - if (typeof this.itemSet.options.order === 'function' || false) { - customOrderedItems = this._getCustomOrderedItems(); - stack.stack(customOrderedItems, margin, true); - } - else { - stack.stack(this.visibleItems, margin, restack); - } + var props = this.props; + if (orientation == 'top') { + line.style.top = props.majorLabelHeight + 'px'; } - else { // no stacking - stack.nostack(this.visibleItems, margin, this.subgroups); + else { + line.style.top = this.body.domProps.top.height + 'px'; } + line.style.height = props.minorLineHeight + 'px'; + line.style.left = (x - props.minorLineWidth / 2) + 'px'; - // recalculate the height of the group - var height = this._calculateHeight(margin); - - // calculate actual size and position - var foreground = this.dom.foreground; - this.top = foreground.offsetTop; - this.left = foreground.offsetLeft; - this.width = foreground.offsetWidth; - resized = util.updateProperty(this, 'height', height) || resized; - - // recalculate size of label - resized = util.updateProperty(this.props.label, 'width', this.dom.inner.clientWidth) || resized; - resized = util.updateProperty(this.props.label, 'height', this.dom.inner.clientHeight) || resized; - - // apply new height - this.dom.background.style.height = height + 'px'; - this.dom.foreground.style.height = height + 'px'; - this.dom.label.style.height = height + 'px'; - - // update vertical position of items after they are re-stacked and the height of the group is calculated - for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { - var item = this.visibleItems[i]; - item.repositionY(margin); - } + line.className = 'grid vertical minor ' + className; - return resized; + return line; }; /** - * recalculate the height of the group - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * @returns {number} Returns the height + * Create a Major line for the axis at position x + * @param {Number} x + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @return {Element} Returns the created line * @private */ - Group.prototype._calculateHeight = function (margin) { - // recalculate the height of the group - var height; - var visibleItems = this.visibleItems; - //var visibleSubgroups = []; - //this.visibleSubgroups = 0; - this.resetSubgroups(); - var me = this; - if (visibleItems.length) { - var min = visibleItems[0].top; - var max = visibleItems[0].top + visibleItems[0].height; - util.forEach(visibleItems, function (item) { - min = Math.min(min, item.top); - max = Math.max(max, (item.top + item.height)); - if (item.data.subgroup !== undefined) { - me.subgroups[item.data.subgroup].height = Math.max(me.subgroups[item.data.subgroup].height,item.height); - me.subgroups[item.data.subgroup].visible = true; - //if (visibleSubgroups.indexOf(item.data.subgroup) == -1){ - // visibleSubgroups.push(item.data.subgroup); - // me.visibleSubgroups += 1; - //} - } - }); - if (min > margin.axis) { - // there is an empty gap between the lowest item and the axis - var offset = min - margin.axis; - max -= offset; - util.forEach(visibleItems, function (item) { - item.top -= offset; - }); - } - height = max + margin.item.vertical / 2; - } - else { - height = margin.axis + margin.item.vertical; - } - height = Math.max(height, this.props.label.height); - - return height; - }; - - /** - * Show this group: attach to the DOM - */ - Group.prototype.show = function() { - if (!this.dom.label.parentNode) { - this.itemSet.dom.labelSet.appendChild(this.dom.label); - } - - if (!this.dom.foreground.parentNode) { - this.itemSet.dom.foreground.appendChild(this.dom.foreground); - } - - if (!this.dom.background.parentNode) { - this.itemSet.dom.background.appendChild(this.dom.background); - } - - if (!this.dom.axis.parentNode) { - this.itemSet.dom.axis.appendChild(this.dom.axis); + TimeAxis.prototype._repaintMajorLine = function (x, orientation, className) { + // reuse redundant line + var line = this.dom.redundant.lines.shift(); + if (!line) { + // create vertical line + line = document.createElement('div'); + this.dom.background.appendChild(line); } - }; + this.dom.lines.push(line); - /** - * Hide this group: remove from the DOM - */ - Group.prototype.hide = function() { - var label = this.dom.label; - if (label.parentNode) { - label.parentNode.removeChild(label); + var props = this.props; + if (orientation == 'top') { + line.style.top = '0'; } - - var foreground = this.dom.foreground; - if (foreground.parentNode) { - foreground.parentNode.removeChild(foreground); + else { + line.style.top = this.body.domProps.top.height + 'px'; } + line.style.left = (x - props.majorLineWidth / 2) + 'px'; + line.style.height = props.majorLineHeight + 'px'; - var background = this.dom.background; - if (background.parentNode) { - background.parentNode.removeChild(background); - } + line.className = 'grid vertical major ' + className; - var axis = this.dom.axis; - if (axis.parentNode) { - axis.parentNode.removeChild(axis); - } + return line; }; /** - * Add an item to the group - * @param {Item} item + * Determine the size of text on the axis (both major and minor axis). + * The size is calculated only once and then cached in this.props. + * @private */ - Group.prototype.add = function(item) { - this.items[item.id] = item; - item.setParent(this); + TimeAxis.prototype._calculateCharSize = function () { + // Note: We calculate char size with every redraw. Size may change, for + // example when any of the timelines parents had display:none for example. - // add to - if (item.data.subgroup !== undefined) { - if (this.subgroups[item.data.subgroup] === undefined) { - this.subgroups[item.data.subgroup] = {height:0, visible: false, index:this.subgroupIndex, items: []}; - this.subgroupIndex++; - } - this.subgroups[item.data.subgroup].items.push(item); - } - this.orderSubgroups(); + // determine the char width and height on the minor axis + if (!this.dom.measureCharMinor) { + this.dom.measureCharMinor = document.createElement('DIV'); + this.dom.measureCharMinor.className = 'text minor measure'; + this.dom.measureCharMinor.style.position = 'absolute'; - if (this.visibleItems.indexOf(item) == -1) { - var range = this.itemSet.body.range; // TODO: not nice accessing the range like this - this._checkIfVisible(item, this.visibleItems, range); + this.dom.measureCharMinor.appendChild(document.createTextNode('0')); + this.dom.foreground.appendChild(this.dom.measureCharMinor); } - }; - - Group.prototype.orderSubgroups = function() { - if (this.subgroupOrderer !== undefined) { - var sortArray = []; - if (typeof this.subgroupOrderer == 'string') { - for (var subgroup in this.subgroups) { - sortArray.push({subgroup: subgroup, sortField: this.subgroups[subgroup].items[0].data[this.subgroupOrderer]}) - } - sortArray.sort(function (a, b) { - return a.sortField - b.sortField; - }) - } - else if (typeof this.subgroupOrderer == 'function') { - for (var subgroup in this.subgroups) { - sortArray.push(this.subgroups[subgroup].items[0].data); - } - sortArray.sort(this.subgroupOrderer); - } + this.props.minorCharHeight = this.dom.measureCharMinor.clientHeight; + this.props.minorCharWidth = this.dom.measureCharMinor.clientWidth; - if (sortArray.length > 0) { - for (var i = 0; i < sortArray.length; i++) { - this.subgroups[sortArray[i].subgroup].index = i; - } - } - } - }; + // determine the char width and height on the major axis + if (!this.dom.measureCharMajor) { + this.dom.measureCharMajor = document.createElement('DIV'); + this.dom.measureCharMajor.className = 'text major measure'; + this.dom.measureCharMajor.style.position = 'absolute'; - Group.prototype.resetSubgroups = function() { - for (var subgroup in this.subgroups) { - if (this.subgroups.hasOwnProperty(subgroup)) { - this.subgroups[subgroup].visible = false; - } + this.dom.measureCharMajor.appendChild(document.createTextNode('0')); + this.dom.foreground.appendChild(this.dom.measureCharMajor); } + this.props.majorCharHeight = this.dom.measureCharMajor.clientHeight; + this.props.majorCharWidth = this.dom.measureCharMajor.clientWidth; }; - /** - * Remove an item from the group - * @param {Item} item - */ - Group.prototype.remove = function(item) { - delete this.items[item.id]; - item.setParent(null); - - // remove from visible items - var index = this.visibleItems.indexOf(item); - if (index != -1) this.visibleItems.splice(index, 1); - - // TODO: also remove from ordered items? - }; - - - /** - * Remove an item from the corresponding DataSet - * @param {Item} item - */ - Group.prototype.removeFromDataSet = function(item) { - this.itemSet.removeItem(item.id); - }; - + module.exports = TimeAxis; - /** - * Reorder the items - */ - Group.prototype.order = function() { - var array = util.toArray(this.items); - var startArray = []; - var endArray = []; - for (var i = 0; i < array.length; i++) { - if (array[i].data.end !== undefined) { - endArray.push(array[i]); - } - startArray.push(array[i]); - } - this.orderedItems = { - byStart: startArray, - byEnd: endArray - }; +/***/ }, +/* 36 */ +/***/ function(module, exports, __webpack_require__) { - stack.orderByStart(this.orderedItems.byStart); - stack.orderByEnd(this.orderedItems.byEnd); - }; + var Emitter = __webpack_require__(56); + var Hammer = __webpack_require__(45); + var keycharm = __webpack_require__(57); + var util = __webpack_require__(1); + var hammerUtil = __webpack_require__(47); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var dotparser = __webpack_require__(42); + var gephiParser = __webpack_require__(43); + var Groups = __webpack_require__(38); + var Images = __webpack_require__(39); + var Node = __webpack_require__(40); + var Edge = __webpack_require__(37); + var Popup = __webpack_require__(41); + var MixinLoader = __webpack_require__(52); + var Activator = __webpack_require__(53); + var locales = __webpack_require__(54); + // Load custom shapes into CanvasRenderingContext2D + __webpack_require__(55); /** - * Update the visible items - * @param {{byStart: Item[], byEnd: Item[]}} orderedItems All items ordered by start date and by end date - * @param {Item[]} visibleItems The previously visible items. - * @param {{start: number, end: number}} range Visible range - * @return {Item[]} visibleItems The new visible items. - * @private + * @constructor Network + * Create a network visualization, displaying nodes and edges. + * + * @param {Element} container The DOM element in which the Network will + * be created. Normally a div element. + * @param {Object} data An object containing parameters + * {Array} nodes + * {Array} edges + * @param {Object} options Options */ - Group.prototype._updateVisibleItems = function(orderedItems, oldVisibleItems, range) { - var visibleItems = []; - var visibleItemsLookup = {}; // we keep this to quickly look up if an item already exists in the list without using indexOf on visibleItems - var interval = (range.end - range.start) / 4; - var lowerBound = range.start - interval; - var upperBound = range.end + interval; - var item, i; - - // this function is used to do the binary search. - var searchFunction = function (value) { - if (value < lowerBound) {return -1;} - else if (value <= upperBound) {return 0;} - else {return 1;} - } - - // first check if the items that were in view previously are still in view. - // IMPORTANT: this handles the case for the items with startdate before the window and enddate after the window! - // also cleans up invisible items. - if (oldVisibleItems.length > 0) { - for (i = 0; i < oldVisibleItems.length; i++) { - this._checkIfVisibleWithReference(oldVisibleItems[i], visibleItems, visibleItemsLookup, range); - } - } - - // we do a binary search for the items that have only start values. - var initialPosByStart = util.binarySearchCustom(orderedItems.byStart, searchFunction, 'data','start'); - - // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the start values. - this._traceVisible(initialPosByStart, orderedItems.byStart, visibleItems, visibleItemsLookup, function (item) { - return (item.data.start < lowerBound || item.data.start > upperBound); - }); - - // if the window has changed programmatically without overlapping the old window, the ranged items with start < lowerBound and end > upperbound are not shown. - // We therefore have to brute force check all items in the byEnd list - if (this.checkRangedItems == true) { - this.checkRangedItems = false; - for (i = 0; i < orderedItems.byEnd.length; i++) { - this._checkIfVisibleWithReference(orderedItems.byEnd[i], visibleItems, visibleItemsLookup, range); - } - } - else { - // we do a binary search for the items that have defined end times. - var initialPosByEnd = util.binarySearchCustom(orderedItems.byEnd, searchFunction, 'data','end'); - - // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the end values. - this._traceVisible(initialPosByEnd, orderedItems.byEnd, visibleItems, visibleItemsLookup, function (item) { - return (item.data.end < lowerBound || item.data.end > upperBound); - }); - } - - - // finally, we reposition all the visible items. - for (i = 0; i < visibleItems.length; i++) { - item = visibleItems[i]; - if (!item.displayed) item.show(); - // reposition item horizontally - item.repositionX(); + function Network (container, data, options) { + if (!(this instanceof Network)) { + throw new SyntaxError('Constructor must be called with the new operator'); } - // debug - //console.log("new line") - //if (this.groupId == null) { - // for (i = 0; i < orderedItems.byStart.length; i++) { - // item = orderedItems.byStart[i].data; - // console.log('start',i,initialPosByStart, item.start.valueOf(), item.content, item.start >= lowerBound && item.start <= upperBound,i == initialPosByStart ? "<------------------- HEREEEE" : "") - // } - // for (i = 0; i < orderedItems.byEnd.length; i++) { - // item = orderedItems.byEnd[i].data; - // console.log('rangeEnd',i,initialPosByEnd, item.end.valueOf(), item.content, item.end >= range.start && item.end <= range.end,i == initialPosByEnd ? "<------------------- HEREEEE" : "") - // } - //} - - return visibleItems; - }; - - Group.prototype._getCustomOrderedItems = function () { - var customOrderedItems = this.orderedItems.byStart.filter(function (item) { - return item.height !== 0 || item.width !== 0; - }); - var me = this; - - customOrderedItems.sort(function (a, b) { - return me.itemSet.options.order(a.data, b.data); - }); - - customOrderedItems.forEach(function (item) { - item.repositionX(); - }); - - return customOrderedItems; - }; + this._determineBrowserMethod(); + this._initializeMixinLoaders(); - Group.prototype._traceVisible = function (initialPos, items, visibleItems, visibleItemsLookup, breakCondition) { - var item; - var i; + // create variables and set default values + this.containerElement = container; - if (initialPos != -1) { - for (i = initialPos; i >= 0; i--) { - item = items[i]; - if (breakCondition(item)) { - break; - } - else { - if (visibleItemsLookup[item.id] === undefined) { - visibleItemsLookup[item.id] = true; - visibleItems.push(item); - } - } - } + // render and calculation settings + this.renderRefreshRate = 60; // hz (fps) + this.renderTimestep = 1000 / this.renderRefreshRate; // ms -- saves calculation later on + this.renderTime = 0; // measured time it takes to render a frame + this.physicsTime = 0; // measured time it takes to render a frame + this.runDoubleSpeed = false; + this.physicsDiscreteStepsize = 0.50; // discrete stepsize of the simulation - for (i = initialPos + 1; i < items.length; i++) { - item = items[i]; - if (breakCondition(item)) { - break; - } - else { - if (visibleItemsLookup[item.id] === undefined) { - visibleItemsLookup[item.id] = true; - visibleItems.push(item); - } - } - } - } - } + this.initializing = true; + this.triggerFunctions = {add:null,edit:null,editEdge:null,connect:null,del:null}; - /** - * this function is very similar to the _checkIfInvisible() but it does not - * return booleans, hides the item if it should not be seen and always adds to - * the visibleItems. - * this one is for brute forcing and hiding. - * - * @param {Item} item - * @param {Array} visibleItems - * @param {{start:number, end:number}} range - * @private - */ - Group.prototype._checkIfVisible = function(item, visibleItems, range) { - if (item.isVisible(range)) { - if (!item.displayed) item.show(); - // reposition item horizontally - item.repositionX(); - visibleItems.push(item); + var customScalingFunction = function (min,max,total,value) { + if (max == min) { + return 0.5; } else { - if (item.displayed) item.hide(); + var scale = 1 / (max - min); + return Math.max(0,(value - min)*scale); } - }; - - - /** - * this function is very similar to the _checkIfInvisible() but it does not - * return booleans, hides the item if it should not be seen and always adds to - * the visibleItems. - * this one is for brute forcing and hiding. - * - * @param {Item} item - * @param {Array} visibleItems - * @param {{start:number, end:number}} range - * @private - */ - Group.prototype._checkIfVisibleWithReference = function(item, visibleItems, visibleItemsLookup, range) { - if (item.isVisible(range)) { - if (visibleItemsLookup[item.id] === undefined) { - visibleItemsLookup[item.id] = true; - visibleItems.push(item); - } - } - else { - if (item.displayed) item.hide(); - } - }; + }; + // set constant values + this.defaultOptions = { + nodes: { + customScalingFunction: customScalingFunction, + mass: 1, + radiusMin: 10, + radiusMax: 30, + radius: 10, + shape: 'ellipse', + image: undefined, + widthMin: 16, // px + widthMax: 64, // px + fontColor: 'black', + fontSize: 14, // px + fontFace: 'verdana', + fontFill: undefined, + fontStrokeWidth: 0, // px + fontStrokeColor: '#ffffff', + fontDrawThreshold: 3, + scaleFontWithValue: false, + fontSizeMin: 14, + fontSizeMax: 30, + fontSizeMaxVisible: 30, + level: -1, + color: { + border: '#2B7CE9', + background: '#97C2FC', + highlight: { + border: '#2B7CE9', + background: '#D2E5FF' + }, + hover: { + border: '#2B7CE9', + background: '#D2E5FF' + } + }, + group: undefined, + borderWidth: 1, + borderWidthSelected: undefined + }, + edges: { + customScalingFunction: customScalingFunction, + widthMin: 1, // + widthMax: 15,// + width: 1, + widthSelectionMultiplier: 2, + hoverWidth: 1.5, + style: 'line', + color: { + color:'#848484', + highlight:'#848484', + hover: '#848484' + }, + opacity:1.0, + fontColor: '#343434', + fontSize: 14, // px + fontFace: 'arial', + fontFill: 'white', + fontStrokeWidth: 0, // px + fontStrokeColor: 'white', + labelAlignment:'horizontal', + arrowScaleFactor: 1, + dash: { + length: 10, + gap: 5, + altLength: undefined + }, + inheritColor: "from", // to, from, false, true (== from) + useGradients: false // release in 4.0 + }, + configurePhysics:false, + physics: { + barnesHut: { + enabled: true, + thetaInverted: 1 / 0.5, // inverted to save time during calculation + gravitationalConstant: -2000, + centralGravity: 0.3, + springLength: 95, + springConstant: 0.04, + damping: 0.09 + }, + repulsion: { + centralGravity: 0.0, + springLength: 200, + springConstant: 0.05, + nodeDistance: 100, + damping: 0.09 + }, + hierarchicalRepulsion: { + enabled: false, + centralGravity: 0.0, + springLength: 100, + springConstant: 0.01, + nodeDistance: 150, + damping: 0.09 + }, + damping: null, + centralGravity: null, + springLength: null, + springConstant: null + }, + clustering: { // Per Node in Cluster = PNiC + enabled: false, // (Boolean) | global on/off switch for clustering. + initialMaxNodes: 100, // (# nodes) | if the initial amount of nodes is larger than this, we cluster until the total number is less than this threshold. + clusterThreshold:500, // (# nodes) | during calculate forces, we check if the total number of nodes is larger than this. If it is, cluster until reduced to reduceToNodes + reduceToNodes:300, // (# nodes) | during calculate forces, we check if the total number of nodes is larger than clusterThreshold. If it is, cluster until reduced to this + chainThreshold: 0.4, // (% of all drawn nodes)| maximum percentage of allowed chainnodes (long strings of connected nodes) within all nodes. (lower means less chains). + clusterEdgeThreshold: 20, // (px) | edge length threshold. if smaller, this node is clustered. + sectorThreshold: 100, // (# nodes in cluster) | cluster size threshold. If larger, expanding in own sector. + screenSizeThreshold: 0.2, // (% of canvas) | relative size threshold. If the width or height of a clusternode takes up this much of the screen, decluster node. + fontSizeMultiplier: 4.0, // (px PNiC) | how much the cluster font size grows per node in cluster (in px). + maxFontSize: 1000, + forceAmplification: 0.1, // (multiplier PNiC) | factor of increase fo the repulsion force of a cluster (per node in cluster). + distanceAmplification: 0.1, // (multiplier PNiC) | factor how much the repulsion distance of a cluster increases (per node in cluster). + edgeGrowth: 20, // (px PNiC) | amount of clusterSize connected to the edge is multiplied with this and added to edgeLength. + nodeScaling: {width: 1, // (px PNiC) | growth of the width per node in cluster. + height: 1, // (px PNiC) | growth of the height per node in cluster. + radius: 1}, // (px PNiC) | growth of the radius per node in cluster. + maxNodeSizeIncrements: 600, // (# increments) | max growth of the width per node in cluster. + activeAreaBoxSize: 80, // (px) | box area around the curser where clusters are popped open. + clusterLevelDifference: 2, // used for normalization of the cluster levels + clusterByZoom: true // enable clustering through zooming in and out + }, + navigation: { + enabled: false + }, + keyboard: { + enabled: false, + speed: {x: 10, y: 10, zoom: 0.02}, + bindToWindow: true + }, + dataManipulation: { + enabled: false, + initiallyVisible: false + }, + hierarchicalLayout: { + enabled:false, + levelSeparation: 150, + nodeSpacing: 100, + direction: "UD", // UD, DU, LR, RL + layout: "hubsize" // hubsize, directed + }, + freezeForStabilization: false, + smoothCurves: { + enabled: true, + dynamic: true, + type: "continuous", + roundness: 0.5 + }, + maxVelocity: 50, + minVelocity: 0.1, // px/s + stabilize: true, // stabilize before displaying the network + stabilizationIterations: 1000, // maximum number of iteration to stabilize + zoomExtentOnStabilize: true, + locale: 'en', + locales: locales, + tooltip: { + delay: 300, + fontColor: 'black', + fontSize: 14, // px + fontFace: 'verdana', + color: { + border: '#666', + background: '#FFFFC6' + } + }, + dragNetwork: true, + dragNodes: true, + zoomable: true, + hover: false, + hideEdgesOnDrag: false, + hideNodesOnDrag: false, + width : '100%', + height : '100%', + selectable: true, + useDefaultGroups: true + }; + this.constants = util.extend({}, this.defaultOptions); + this.pixelRatio = 1; + + + this.hoverObj = {nodes:{},edges:{}}; + this.controlNodesActive = false; + this.navigationHammers = []; + this.manipulationHammers = []; + // animation properties + this.animationSpeed = 1/this.renderRefreshRate; + this.animationEasingFunction = "easeInOutQuint"; + this.animating = false; + this.easingTime = 0; + this.sourceScale = 0; + this.targetScale = 0; + this.sourceTranslation = 0; + this.targetTranslation = 0; + this.lockedOnNodeId = null; + this.lockedOnNodeOffset = null; + this.touchTime = 0; + this.redrawRequested = false; + // Node variables + var network = this; + this.groups = new Groups(); // object with groups + this.images = new Images(); // object with images + this.images.setOnloadCallback(function (status) { + network._requestRedraw(); + }); - module.exports = Group; + // keyboard navigation variables + this.xIncrement = 0; + this.yIncrement = 0; + this.zoomIncrement = 0; + // loading all the mixins: + // load the force calculation functions, grouped under the physics system. + this._loadPhysicsSystem(); + // create a frame and canvas + this._create(); + // load the sector system. (mandatory, fully integrated with Network) + this._loadSectorSystem(); + // load the cluster system. (mandatory, even when not using the cluster system, there are function calls to it) + this._loadClusterSystem(); + // load the selection system. (mandatory, required by Network) + this._loadSelectionSystem(); + // load the selection system. (mandatory, required by Network) + this._loadHierarchySystem(); -/***/ }, -/* 29 */ -/***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(1); - var Group = __webpack_require__(28); + // apply options + this._setTranslation(this.frame.clientWidth / 2, this.frame.clientHeight / 2); + this._setScale(1); + this.setOptions(options); - /** - * @constructor BackgroundGroup - * @param {Number | String} groupId - * @param {Object} data - * @param {ItemSet} itemSet - */ - function BackgroundGroup (groupId, data, itemSet) { - Group.call(this, groupId, data, itemSet); + // other vars + this.freezeSimulationEnabled = false;// freeze the simulation + this.cachedFunctions = {}; + this.startedStabilization = false; + this.stabilized = false; + this.stabilizationIterations = null; + this.draggingNodes = false; - this.width = 0; - this.height = 0; - this.top = 0; - this.left = 0; - } + // containers for nodes and edges + this.calculationNodes = {}; + this.calculationNodeIndices = []; + this.nodeIndices = []; // array with all the indices of the nodes. Used to speed up forces calculation + this.nodes = {}; // object with Node objects + this.edges = {}; // object with Edge objects - BackgroundGroup.prototype = Object.create(Group.prototype); + // position and scale variables and objects + this.canvasTopLeft = {"x": 0,"y": 0}; // coordinates of the top left of the canvas. they will be set during _redraw. + this.canvasBottomRight = {"x": 0,"y": 0}; // coordinates of the bottom right of the canvas. they will be set during _redraw + this.pointerPosition = {"x": 0,"y": 0}; // coordinates of the bottom right of the canvas. they will be set during _redraw + this.areaCenter = {}; // object with x and y elements used for determining the center of the zoom action + this.scale = 1; // defining the global scale variable in the constructor + this.previousScale = this.scale; // this is used to check if the zoom operation is zooming in or out - /** - * Repaint this group - * @param {{start: number, end: number}} range - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * @param {boolean} [restack=false] Force restacking of all items - * @return {boolean} Returns true if the group is resized - */ - BackgroundGroup.prototype.redraw = function(range, margin, restack) { - var resized = false; + // datasets or dataviews + this.nodesData = null; // A DataSet or DataView + this.edgesData = null; // A DataSet or DataView - this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); + // create event listeners used to subscribe on the DataSets of the nodes and edges + this.nodesListeners = { + 'add': function (event, params) { + network._addNodes(params.items); + network.start(); + }, + 'update': function (event, params) { + network._updateNodes(params.items); + network.start(); + }, + 'remove': function (event, params) { + network._removeNodes(params.items); + network.start(); + } + }; + this.edgesListeners = { + 'add': function (event, params) { + network._addEdges(params.items); + network.start(); + }, + 'update': function (event, params) { + network._updateEdges(params.items); + network.start(); + }, + 'remove': function (event, params) { + network._removeEdges(params.items); + network.start(); + } + }; - // calculate actual size - this.width = this.dom.background.offsetWidth; + // properties for the animation + this.moving = true; + this.timer = undefined; // Scheduling function. Is definded in this.start(); - // apply new height (just always zero for BackgroundGroup - this.dom.background.style.height = '0'; + // load data (the disable start variable will be the same as the enabled clustering) + this.setData(data,this.constants.clustering.enabled || this.constants.hierarchicalLayout.enabled); - // update vertical position of items after they are re-stacked and the height of the group is calculated - for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { - var item = this.visibleItems[i]; - item.repositionY(margin); + // hierarchical layout + this.initializing = false; + if (this.constants.hierarchicalLayout.enabled == true) { + this._setupHierarchicalLayout(); + } + else { + // zoom so all data will fit on the screen, if clustering is enabled, we do not want start to be called here. + if (this.constants.stabilize == false) { + this.zoomExtent({duration:0}, true, this.constants.clustering.enabled); + } } - return resized; - }; + // if clustering is disabled, the simulation will have started in the setData function + if (this.constants.clustering.enabled) { + this.startWithClustering(); + } + } + + // Extend Network with an Emitter mixin + Emitter(Network.prototype); /** - * Show this group: attach to the DOM + * Determine if the browser requires a setTimeout or a requestAnimationFrame. This was required because + * some implementations (safari and IE9) did not support requestAnimationFrame + * @private */ - BackgroundGroup.prototype.show = function() { - if (!this.dom.background.parentNode) { - this.itemSet.dom.background.appendChild(this.dom.background); + Network.prototype._determineBrowserMethod = function() { + var browserType = navigator.userAgent.toLowerCase(); + this.requiresTimeout = false; + if (browserType.indexOf('msie 9.0') != -1) { // IE 9 + this.requiresTimeout = true; } - }; + else if (browserType.indexOf('safari') != -1) { // safari + if (browserType.indexOf('chrome') <= -1) { + this.requiresTimeout = true; + } + } + } - module.exports = BackgroundGroup; + /** + * Get the script path where the vis.js library is located + * + * @returns {string | null} path Path or null when not found. Path does not + * end with a slash. + * @private + */ + Network.prototype._getScriptPath = function() { + var scripts = document.getElementsByTagName( 'script' ); -/***/ }, -/* 30 */ -/***/ function(module, exports, __webpack_require__) { + // find script named vis.js or vis.min.js + for (var i = 0; i < scripts.length; i++) { + var src = scripts[i].src; + var match = src && /\/?vis(.min)?\.js$/.exec(src); + if (match) { + // return path without the script name + return src.substring(0, src.length - match[0].length); + } + } + + return null; + }; - var Item = __webpack_require__(31); - var util = __webpack_require__(1); /** - * @constructor BoxItem - * @extends Item - * @param {Object} data Object containing parameters start - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe available options + * Find the center position of the network + * @private */ - function BoxItem (data, conversion, options) { - this.props = { - dot: { - width: 0, - height: 0 - }, - line: { - width: 0, - height: 0 + Network.prototype._getRange = function(specificNodes) { + var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; + if (specificNodes.length > 0) { + for (var i = 0; i < specificNodes.length; i++) { + node = this.nodes[specificNodes[i]]; + if (minX > (node.boundingBox.left)) { + minX = node.boundingBox.left; + } + if (maxX < (node.boundingBox.right)) { + maxX = node.boundingBox.right; + } + if (minY > (node.boundingBox.bottom)) { + minY = node.boundingBox.top; + } // top is negative, bottom is positive + if (maxY < (node.boundingBox.top)) { + maxY = node.boundingBox.bottom; + } // top is negative, bottom is positive } - }; - - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data); + } + else { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (minX > (node.boundingBox.left)) { + minX = node.boundingBox.left; + } + if (maxX < (node.boundingBox.right)) { + maxX = node.boundingBox.right; + } + if (minY > (node.boundingBox.bottom)) { + minY = node.boundingBox.top; + } // top is negative, bottom is positive + if (maxY < (node.boundingBox.top)) { + maxY = node.boundingBox.bottom; + } // top is negative, bottom is positive + } } } - Item.call(this, data, conversion, options); - } + if (minX == 1e9 && maxX == -1e9 && minY == 1e9 && maxY == -1e9) { + minY = 0, maxY = 0, minX = 0, maxX = 0; + } + return {minX: minX, maxX: maxX, minY: minY, maxY: maxY}; + }; - BoxItem.prototype = new Item (null, null, null); /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible + * @param {object} range = {minX: minX, maxX: maxX, minY: minY, maxY: maxY}; + * @returns {{x: number, y: number}} + * @private */ - BoxItem.prototype.isVisible = function(range) { - // determine visibility - // TODO: account for the real width of the item. Right now we just add 1/4 to the window - var interval = (range.end - range.start) / 4; - return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); + Network.prototype._findCenter = function(range) { + return {x: (0.5 * (range.maxX + range.minX)), + y: (0.5 * (range.maxY + range.minY))}; }; + /** - * Repaint the item + * This function zooms out to fit all data on screen based on amount of nodes + * + * @param {Boolean} [initialZoom] | zoom based on fitted formula or range, true = fitted, default = false; + * @param {Boolean} [disableStart] | If true, start is not called. */ - BoxItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; - - // create main box - dom.box = document.createElement('DIV'); + Network.prototype.zoomExtent = function(options, initialZoom, disableStart) { + this._redraw(true); - // contents box (inside the background box). used for making margins - dom.content = document.createElement('DIV'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); + if (initialZoom === undefined) {initialZoom = false;} + if (disableStart === undefined) {disableStart = false;} + if (options === undefined) {options = {nodes:[]};} + if (options.nodes === undefined) { + options.nodes = []; + } - // line to axis - dom.line = document.createElement('DIV'); - dom.line.className = 'line'; + var range; + var zoomLevel; - // dot on axis - dom.dot = document.createElement('DIV'); - dom.dot.className = 'dot'; + if (initialZoom == true) { + // check if more than half of the nodes have a predefined position. If so, we use the range, not the approximation. + var positionDefined = 0; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.predefinedPosition == true) { + positionDefined += 1; + } + } + } + if (positionDefined > 0.5 * this.nodeIndices.length) { + this.zoomExtent(options,false,disableStart); + return; + } - // attach this item as attribute - dom.box['timeline-item'] = this; + range = this._getRange(options.nodes); - this.dirty = true; - } + var numberOfNodes = this.nodeIndices.length; + if (this.constants.smoothCurves == true) { + if (this.constants.clustering.enabled == true && + numberOfNodes >= this.constants.clustering.initialMaxNodes) { + zoomLevel = 49.07548 / (numberOfNodes + 142.05338) + 9.1444e-04; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. + } + else { + zoomLevel = 12.662 / (numberOfNodes + 7.4147) + 0.0964822; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. + } + } + else { + if (this.constants.clustering.enabled == true && + numberOfNodes >= this.constants.clustering.initialMaxNodes) { + zoomLevel = 77.5271985 / (numberOfNodes + 187.266146) + 4.76710517e-05; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. + } + else { + zoomLevel = 30.5062972 / (numberOfNodes + 19.93597763) + 0.08413486; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. + } + } - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); - } - if (!dom.box.parentNode) { - var foreground = this.parent.dom.foreground; - if (!foreground) throw new Error('Cannot redraw item: parent has no foreground container element'); - foreground.appendChild(dom.box); - } - if (!dom.line.parentNode) { - var background = this.parent.dom.background; - if (!background) throw new Error('Cannot redraw item: parent has no background container element'); - background.appendChild(dom.line); - } - if (!dom.dot.parentNode) { - var axis = this.parent.dom.axis; - if (!background) throw new Error('Cannot redraw item: parent has no axis container element'); - axis.appendChild(dom.dot); + // correct for larger canvasses. + var factor = Math.min(this.frame.canvas.clientWidth / 600, this.frame.canvas.clientHeight / 600); + zoomLevel *= factor; } - this.displayed = true; + else { + range = this._getRange(options.nodes); + var xDistance = Math.abs(range.maxX - range.minX) * 1.1; + var yDistance = Math.abs(range.maxY - range.minY) * 1.1; - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.box); - this._updateDataAttributes(this.dom.box); - this._updateStyle(this.dom.box); + var xZoomLevel = this.frame.canvas.clientWidth / xDistance; + var yZoomLevel = this.frame.canvas.clientHeight / yDistance; + zoomLevel = (xZoomLevel <= yZoomLevel) ? xZoomLevel : yZoomLevel; + } - // update class - var className = (this.data.className? ' ' + this.data.className : '') + - (this.selected ? ' selected' : ''); - dom.box.className = 'item box' + className; - dom.line.className = 'item line' + className; - dom.dot.className = 'item dot' + className; + if (zoomLevel > 1.0) { + zoomLevel = 1.0; + } - // recalculate size - this.props.dot.height = dom.dot.offsetHeight; - this.props.dot.width = dom.dot.offsetWidth; - this.props.line.width = dom.line.offsetWidth; - this.width = dom.box.offsetWidth; - this.height = dom.box.offsetHeight; - this.dirty = false; + var center = this._findCenter(range); + if (disableStart == false) { + var options = {position: center, scale: zoomLevel, animation: options}; + this.moveTo(options); + this.moving = true; + this.start(); + } + else { + center.x *= zoomLevel; + center.y *= zoomLevel; + center.x -= 0.5 * this.frame.canvas.clientWidth; + center.y -= 0.5 * this.frame.canvas.clientHeight; + this._setScale(zoomLevel); + this._setTranslation(-center.x,-center.y); } - - this._repaintDeleteButton(dom.box); }; + /** - * Show the item in the DOM (when not already displayed). The items DOM will - * be created when needed. + * Update the this.nodeIndices with the most recent node index list + * @private */ - BoxItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); + Network.prototype._updateNodeIndexList = function() { + this._clearNodeIndexList(); + for (var idx in this.nodes) { + if (this.nodes.hasOwnProperty(idx)) { + this.nodeIndices.push(idx); + } } }; + /** - * Hide the item from the DOM (when visible) + * Set nodes and edges, and optionally options as well. + * + * @param {Object} data Object containing parameters: + * {Array | DataSet | DataView} [nodes] Array with nodes + * {Array | DataSet | DataView} [edges] Array with edges + * {String} [dot] String containing data in DOT format + * {String} [gephi] String containing data in gephi JSON format + * {Options} [options] Object with options + * @param {Boolean} [disableStart] | optional: disable the calling of the start function. */ - BoxItem.prototype.hide = function() { - if (this.displayed) { - var dom = this.dom; + Network.prototype.setData = function(data, disableStart) { + if (disableStart === undefined) { + disableStart = false; + } - if (dom.box.parentNode) dom.box.parentNode.removeChild(dom.box); - if (dom.line.parentNode) dom.line.parentNode.removeChild(dom.line); - if (dom.dot.parentNode) dom.dot.parentNode.removeChild(dom.dot); + // unselect all to ensure no selections from old data are carried over. + this._unselectAll(true); - this.top = null; - this.left = null; + // we set initializing to true to ensure that the hierarchical layout is not performed until both nodes and edges are added. + this.initializing = true; - this.displayed = false; + if (data && data.dot && (data.nodes || data.edges)) { + throw new SyntaxError('Data must contain either parameter "dot" or ' + + ' parameter pair "nodes" and "edges", but not both.'); } - }; - /** - * Reposition the item horizontally - * @Override - */ - BoxItem.prototype.repositionX = function() { - var start = this.conversion.toScreen(this.data.start); - var align = this.options.align; - var left; - var box = this.dom.box; - var line = this.dom.line; - var dot = this.dom.dot; + // clean up in case there is anyone in an active mode of the manipulation. This is the same option as bound to the escape button. + if (this.constants.dataManipulation.enabled == true) { + this._createManipulatorBar(); + } - // calculate left position of the box - if (align == 'right') { - this.left = start - this.width; + // set options + this.setOptions(data && data.options); + // set all data + if (data && data.dot) { + // parse DOT file + if(data && data.dot) { + var dotData = dotparser.DOTToGraph(data.dot); + this.setData(dotData); + return; + } } - else if (align == 'left') { - this.left = start; + else if (data && data.gephi) { + // parse DOT file + if(data && data.gephi) { + var gephiData = gephiParser.parseGephi(data.gephi); + this.setData(gephiData); + return; + } } else { - // default or 'center' - this.left = start - this.width / 2; + this._setNodes(data && data.nodes); + this._setEdges(data && data.edges); } - - // reposition box - box.style.left = this.left + 'px'; - - // reposition line - line.style.left = (start - this.props.line.width / 2) + 'px'; - - // reposition dot - dot.style.left = (start - this.props.dot.width / 2) + 'px'; + this._putDataInSector(); + if (disableStart == false) { + if (this.constants.hierarchicalLayout.enabled == true) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + else { + // find a stable position or start animating to a stable position + if (this.constants.stabilize == true) { + this._stabilize(); + } + } + this.start(); + } + this.initializing = false; }; /** - * Reposition the item vertically - * @Override + * Set options + * @param {Object} options */ - BoxItem.prototype.repositionY = function() { - var orientation = this.options.orientation; - var box = this.dom.box; - var line = this.dom.line; - var dot = this.dom.dot; + Network.prototype.setOptions = function (options) { + if (options) { + var prop; + var fields = ['nodes','edges','smoothCurves','hierarchicalLayout','clustering','navigation', + 'keyboard','dataManipulation','onAdd','onEdit','onEditEdge','onConnect','onDelete','clickToUse' + ]; + // extend all but the values in fields + util.selectiveNotDeepExtend(fields,this.constants, options); + util.selectiveNotDeepExtend(['color'],this.constants.nodes, options.nodes); + util.selectiveNotDeepExtend(['color','length'],this.constants.edges, options.edges); - if (orientation == 'top') { - box.style.top = (this.top || 0) + 'px'; + this.groups.useDefaultGroups = this.constants.useDefaultGroups; + if (options.physics) { + util.mergeOptions(this.constants.physics, options.physics,'barnesHut'); + util.mergeOptions(this.constants.physics, options.physics,'repulsion'); - line.style.top = '0'; - line.style.height = (this.parent.top + this.top + 1) + 'px'; - line.style.bottom = ''; - } - else { // orientation 'bottom' - var itemSetHeight = this.parent.itemSet.props.height; // TODO: this is nasty - var lineHeight = itemSetHeight - this.parent.top - this.parent.height + this.top; + if (options.physics.hierarchicalRepulsion) { + this.constants.hierarchicalLayout.enabled = true; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this.constants.physics.barnesHut.enabled = false; + for (prop in options.physics.hierarchicalRepulsion) { + if (options.physics.hierarchicalRepulsion.hasOwnProperty(prop)) { + this.constants.physics.hierarchicalRepulsion[prop] = options.physics.hierarchicalRepulsion[prop]; + } + } + } + } - box.style.top = (this.parent.height - this.top - this.height || 0) + 'px'; - line.style.top = (itemSetHeight - lineHeight) + 'px'; - line.style.bottom = '0'; - } + if (options.onAdd) {this.triggerFunctions.add = options.onAdd;} + if (options.onEdit) {this.triggerFunctions.edit = options.onEdit;} + if (options.onEditEdge) {this.triggerFunctions.editEdge = options.onEditEdge;} + if (options.onConnect) {this.triggerFunctions.connect = options.onConnect;} + if (options.onDelete) {this.triggerFunctions.del = options.onDelete;} - dot.style.top = (-this.props.dot.height / 2) + 'px'; - }; + util.mergeOptions(this.constants, options,'smoothCurves'); + util.mergeOptions(this.constants, options,'hierarchicalLayout'); + util.mergeOptions(this.constants, options,'clustering'); + util.mergeOptions(this.constants, options,'navigation'); + util.mergeOptions(this.constants, options,'keyboard'); + util.mergeOptions(this.constants, options,'dataManipulation'); - module.exports = BoxItem; + if (options.dataManipulation) { + this.editMode = this.constants.dataManipulation.initiallyVisible; + } -/***/ }, -/* 31 */ -/***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(19); - var util = __webpack_require__(1); + // TODO: work out these options and document them + if (options.edges) { + if (options.edges.color !== undefined) { + if (util.isString(options.edges.color)) { + this.constants.edges.color = {}; + this.constants.edges.color.color = options.edges.color; + this.constants.edges.color.highlight = options.edges.color; + this.constants.edges.color.hover = options.edges.color; + } + else { + if (options.edges.color.color !== undefined) {this.constants.edges.color.color = options.edges.color.color;} + if (options.edges.color.highlight !== undefined) {this.constants.edges.color.highlight = options.edges.color.highlight;} + if (options.edges.color.hover !== undefined) {this.constants.edges.color.hover = options.edges.color.hover;} + } + this.constants.edges.inheritColor = false; + } - /** - * @constructor Item - * @param {Object} data Object containing (optional) parameters type, - * start, end, content, group, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} options Configuration options - * // TODO: describe available options - */ - function Item (data, conversion, options) { - this.id = null; - this.parent = null; - this.data = data; - this.dom = null; - this.conversion = conversion || {}; - this.options = options || {}; + if (!options.edges.fontColor) { + if (options.edges.color !== undefined) { + if (util.isString(options.edges.color)) {this.constants.edges.fontColor = options.edges.color;} + else if (options.edges.color.color !== undefined) {this.constants.edges.fontColor = options.edges.color.color;} + } + } + } - this.selected = false; - this.displayed = false; - this.dirty = true; + if (options.nodes) { + if (options.nodes.color) { + var newColorObj = util.parseColor(options.nodes.color); + this.constants.nodes.color.background = newColorObj.background; + this.constants.nodes.color.border = newColorObj.border; + this.constants.nodes.color.highlight.background = newColorObj.highlight.background; + this.constants.nodes.color.highlight.border = newColorObj.highlight.border; + this.constants.nodes.color.hover.background = newColorObj.hover.background; + this.constants.nodes.color.hover.border = newColorObj.hover.border; + } + } + if (options.groups) { + for (var groupname in options.groups) { + if (options.groups.hasOwnProperty(groupname)) { + var group = options.groups[groupname]; + this.groups.add(groupname, group); + } + } + } - this.top = null; - this.left = null; - this.width = null; - this.height = null; - } + if (options.tooltip) { + for (prop in options.tooltip) { + if (options.tooltip.hasOwnProperty(prop)) { + this.constants.tooltip[prop] = options.tooltip[prop]; + } + } + if (options.tooltip.color) { + this.constants.tooltip.color = util.parseColor(options.tooltip.color); + } + } - Item.prototype.stack = true; + if ('clickToUse' in options) { + if (options.clickToUse) { + if (!this.activator) { + this.activator = new Activator(this.frame); + this.activator.on('change', this._createKeyBinds.bind(this)); + } + } + else { + if (this.activator) { + this.activator.destroy(); + delete this.activator; + } + } + } - /** - * Select current item - */ - Item.prototype.select = function() { - this.selected = true; - this.dirty = true; - if (this.displayed) this.redraw(); - }; + if (options.labels) { + throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.'); + } - /** - * Unselect current item - */ - Item.prototype.unselect = function() { - this.selected = false; - this.dirty = true; - if (this.displayed) this.redraw(); - }; - /** - * Set data for the item. Existing data will be updated. The id should not - * be changed. When the item is displayed, it will be redrawn immediately. - * @param {Object} data - */ - Item.prototype.setData = function(data) { - this.data = data; - this.dirty = true; - if (this.displayed) this.redraw(); - }; + // (Re)loading the mixins that can be enabled or disabled in the options. + // load the force calculation functions, grouped under the physics system. + this._loadPhysicsSystem(); + // load the navigation system. + this._loadNavigationControls(); + // load the data manipulation system + this._loadManipulationSystem(); + // configure the smooth curves + this._configureSmoothCurves(); - /** - * Set a parent for the item - * @param {ItemSet | Group} parent - */ - Item.prototype.setParent = function(parent) { - if (this.displayed) { - this.hide(); - this.parent = parent; - if (this.parent) { - this.show(); + // bind hammer + this._bindHammer(); + + // bind keys. If disabled, this will not do anything; + this._createKeyBinds(); + + this._markAllEdgesAsDirty(); + this.setSize(this.constants.width, this.constants.height); + this.moving = true; + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); } - } - else { - this.parent = parent; + this.start(); } }; - /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible - */ - Item.prototype.isVisible = function(range) { - // Should be implemented by Item implementations - return false; - }; - /** - * Show the Item in the DOM (when not already visible) - * @return {Boolean} changed - */ - Item.prototype.show = function() { - return false; - }; /** - * Hide the Item from the DOM (when visible) - * @return {Boolean} changed + * Create the main frame for the Network. + * This function is executed once when a Network object is created. The frame + * contains a canvas, and this canvas contains all objects like the axis and + * nodes. + * @private */ - Item.prototype.hide = function() { - return false; - }; + Network.prototype._create = function () { + // remove all elements from the container element. + while (this.containerElement.hasChildNodes()) { + this.containerElement.removeChild(this.containerElement.firstChild); + } - /** - * Repaint the item - */ - Item.prototype.redraw = function() { - // should be implemented by the item - }; + this.frame = document.createElement('div'); + this.frame.className = 'vis network-frame'; + this.frame.style.position = 'relative'; + this.frame.style.overflow = 'hidden'; + this.frame.tabIndex = 900; - /** - * Reposition the Item horizontally - */ - Item.prototype.repositionX = function() { - // should be implemented by the item - }; - /** - * Reposition the Item vertically - */ - Item.prototype.repositionY = function() { - // should be implemented by the item - }; + ////////////////////////////////////////////////////////////////// - /** - * Repaint a delete button on the top right of the item when the item is selected - * @param {HTMLElement} anchor - * @protected - */ - Item.prototype._repaintDeleteButton = function (anchor) { - if (this.selected && this.options.editable.remove && !this.dom.deleteButton) { - // create and show button - var me = this; + this.frame.canvas = document.createElement("canvas"); + this.frame.canvas.style.position = 'relative'; + this.frame.appendChild(this.frame.canvas); - var deleteButton = document.createElement('div'); - deleteButton.className = 'delete'; - deleteButton.title = 'Delete this item'; - - Hammer(deleteButton, { - preventDefault: true - }).on('tap', function (event) { - me.parent.removeFromDataSet(me); - event.stopPropagation(); - }); - - anchor.appendChild(deleteButton); - this.dom.deleteButton = deleteButton; + if (!this.frame.canvas.getContext) { + var noCanvas = document.createElement( 'DIV' ); + noCanvas.style.color = 'red'; + noCanvas.style.fontWeight = 'bold' ; + noCanvas.style.padding = '10px'; + noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; + this.frame.canvas.appendChild(noCanvas); } - else if (!this.selected && this.dom.deleteButton) { - // remove button - if (this.dom.deleteButton.parentNode) { - this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton); - } - this.dom.deleteButton = null; + else { + var ctx = this.frame.canvas.getContext("2d"); + this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || + ctx.mozBackingStorePixelRatio || + ctx.msBackingStorePixelRatio || + ctx.oBackingStorePixelRatio || + ctx.backingStorePixelRatio || 1); + + //this.pixelRatio = Math.max(1,this.pixelRatio); // this is to account for browser zooming out. The pixel ratio is ment to switch between 1 and 2 for HD screens. + this.frame.canvas.getContext("2d").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); } + + this._bindHammer(); }; + /** - * Set HTML contents for the item - * @param {Element} element HTML element to fill with the contents + * This function binds hammer, it can be repeated over and over due to the uniqueness check. * @private */ - Item.prototype._updateContents = function (element) { - var content; - if (this.options.template) { - var itemData = this.parent.itemSet.itemsData.get(this.id); // get a clone of the data from the dataset - content = this.options.template(itemData); + Network.prototype._bindHammer = function() { + var me = this; + if (this.hammer !== undefined) { + this.hammer.dispose(); } - else { - content = this.data.content; + this.drag = {}; + this.pinch = {}; + this.hammer = Hammer(this.frame.canvas, { + prevent_default: true + }); + this.hammer.on('tap', me._onTap.bind(me) ); + this.hammer.on('doubletap', me._onDoubleTap.bind(me) ); + this.hammer.on('hold', me._onHold.bind(me) ); + this.hammer.on('touch', me._onTouch.bind(me) ); + this.hammer.on('dragstart', me._onDragStart.bind(me) ); + this.hammer.on('drag', me._onDrag.bind(me) ); + this.hammer.on('dragend', me._onDragEnd.bind(me) ); + + if (this.constants.zoomable == true) { + this.hammer.on('mousewheel', me._onMouseWheel.bind(me)); + this.hammer.on('DOMMouseScroll', me._onMouseWheel.bind(me)); // for FF + this.hammer.on('pinch', me._onPinch.bind(me) ); } - if(content !== this.content) { - // only replace the content when changed - if (content instanceof Element) { - element.innerHTML = ''; - element.appendChild(content); - } - else if (content != undefined) { - element.innerHTML = content; - } - else { - if (!(this.data.type == 'background' && this.data.content === undefined)) { - throw new Error('Property "content" missing in item ' + this.id); - } - } + this.hammer.on('mousemove', me._onMouseMoveTitle.bind(me) ); - this.content = content; - } - }; + this.hammerFrame = Hammer(this.frame, { + prevent_default: true + }); + this.hammerFrame.on('release', me._onRelease.bind(me) ); + + // add the frame to the container element + this.containerElement.appendChild(this.frame); + } /** - * Set HTML contents for the item - * @param {Element} element HTML element to fill with the contents + * Binding the keys for keyboard navigation. These functions are defined in the NavigationMixin * @private */ - Item.prototype._updateTitle = function (element) { - if (this.data.title != null) { - element.title = this.data.title || ''; + Network.prototype._createKeyBinds = function() { + var me = this; + if (this.keycharm !== undefined) { + this.keycharm.destroy(); + } + + if (this.constants.keyboard.bindToWindow == true) { + this.keycharm = keycharm({container: window, preventDefault: false}); } else { - element.removeAttribute('title'); + this.keycharm = keycharm({container: this.frame, preventDefault: false}); } - }; - - /** - * Process dataAttributes timeline option and set as data- attributes on dom.content - * @param {Element} element HTML element to which the attributes will be attached - * @private - */ - Item.prototype._updateDataAttributes = function(element) { - if (this.options.dataAttributes && this.options.dataAttributes.length > 0) { - var attributes = []; - if (Array.isArray(this.options.dataAttributes)) { - attributes = this.options.dataAttributes; - } - else if (this.options.dataAttributes == 'all') { - attributes = Object.keys(this.data); - } - else { - return; - } + this.keycharm.reset(); - for (var i = 0; i < attributes.length; i++) { - var name = attributes[i]; - var value = this.data[name]; + if (this.constants.keyboard.enabled && this.isActive()) { + this.keycharm.bind("up", this._moveUp.bind(me) , "keydown"); + this.keycharm.bind("up", this._yStopMoving.bind(me), "keyup"); + this.keycharm.bind("down", this._moveDown.bind(me) , "keydown"); + this.keycharm.bind("down", this._yStopMoving.bind(me), "keyup"); + this.keycharm.bind("left", this._moveLeft.bind(me) , "keydown"); + this.keycharm.bind("left", this._xStopMoving.bind(me), "keyup"); + this.keycharm.bind("right",this._moveRight.bind(me), "keydown"); + this.keycharm.bind("right",this._xStopMoving.bind(me), "keyup"); + this.keycharm.bind("=", this._zoomIn.bind(me), "keydown"); + this.keycharm.bind("=", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("num+", this._zoomIn.bind(me), "keydown"); + this.keycharm.bind("num+", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("num-", this._zoomOut.bind(me), "keydown"); + this.keycharm.bind("num-", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("-", this._zoomOut.bind(me), "keydown"); + this.keycharm.bind("-", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("[", this._zoomIn.bind(me), "keydown"); + this.keycharm.bind("[", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("]", this._zoomOut.bind(me), "keydown"); + this.keycharm.bind("]", this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("pageup",this._zoomIn.bind(me), "keydown"); + this.keycharm.bind("pageup",this._stopZoom.bind(me), "keyup"); + this.keycharm.bind("pagedown",this._zoomOut.bind(me),"keydown"); + this.keycharm.bind("pagedown",this._stopZoom.bind(me), "keyup"); + } - if (value != null) { - element.setAttribute('data-' + name, value); - } - else { - element.removeAttribute('data-' + name); - } - } + if (this.constants.dataManipulation.enabled == true) { + this.keycharm.bind("esc",this._createManipulatorBar.bind(me)); + this.keycharm.bind("delete",this._deleteSelected.bind(me)); } }; /** - * Update custom styles of the element - * @param element - * @private + * Cleans up all bindings of the network, removing it fully from the memory IF the variable is set to null after calling this function. + * var network = new vis.Network(..); + * network.destroy(); + * network = null; */ - Item.prototype._updateStyle = function(element) { - // remove old styles - if (this.style) { - util.removeCssText(element, this.style); - this.style = null; - } - - // append new styles - if (this.data.style) { - util.addCssText(element, this.data.style); - this.style = this.data.style; - } - }; + Network.prototype.destroy = function() { + this.start = function () {}; + this.redraw = function () {}; + this.timer = false; - module.exports = Item; + // cleanup physicsConfiguration if it exists + this._cleanupPhysicsConfiguration(); + // remove keybindings + this.keycharm.reset(); -/***/ }, -/* 32 */ -/***/ function(module, exports, __webpack_require__) { + // clear hammer bindings + this.hammer.dispose(); - var Item = __webpack_require__(31); + // clear events + this.off(); - /** - * @constructor PointItem - * @extends Item - * @param {Object} data Object containing parameters start - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe available options - */ - function PointItem (data, conversion, options) { - this.props = { - dot: { - top: 0, - width: 0, - height: 0 - }, - content: { - height: 0, - marginLeft: 0 - } - }; + this._recursiveDOMDelete(this.containerElement); + } - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data); - } + Network.prototype._recursiveDOMDelete = function(DOMobject) { + while (DOMobject.hasChildNodes() == true) { + this._recursiveDOMDelete(DOMobject.firstChild); + DOMobject.removeChild(DOMobject.firstChild); } - - Item.call(this, data, conversion, options); } - PointItem.prototype = new Item (null, null, null); - /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible + * Get the pointer location from a touch location + * @param {{pageX: Number, pageY: Number}} touch + * @return {{x: Number, y: Number}} pointer + * @private */ - PointItem.prototype.isVisible = function(range) { - // determine visibility - // TODO: account for the real width of the item. Right now we just add 1/4 to the window - var interval = (range.end - range.start) / 4; - return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); + Network.prototype._getPointer = function (touch) { + return { + x: touch.pageX - util.getAbsoluteLeft(this.frame.canvas), + y: touch.pageY - util.getAbsoluteTop(this.frame.canvas) + }; }; /** - * Repaint the item + * On start of a touch gesture, store the pointer + * @param event + * @private */ - PointItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; + Network.prototype._onTouch = function (event) { + if (new Date().valueOf() - this.touchTime > 100) { + this.drag.pointer = this._getPointer(event.gesture.center); + this.drag.pinched = false; + this.pinch.scale = this._getScale(); - // background box - dom.point = document.createElement('div'); - // className is updated in redraw() + // to avoid double fireing of this event because we have two hammer instances. (on canvas and on frame) + this.touchTime = new Date().valueOf(); - // contents box, right from the dot - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.point.appendChild(dom.content); + this._handleTouch(this.drag.pointer); + } + }; - // dot at start - dom.dot = document.createElement('div'); - dom.point.appendChild(dom.dot); + /** + * handle drag start event + * @private + */ + Network.prototype._onDragStart = function (event) { + this._handleDragStart(event); + }; - // attach this item as attribute - dom.point['timeline-item'] = this; - this.dirty = true; + /** + * This function is called by _onDragStart. + * It is separated out because we can then overload it for the datamanipulation system. + * + * @private + */ + Network.prototype._handleDragStart = function(event) { + // in case the touch event was triggered on an external div, do the initial touch now. + if (this.drag.pointer === undefined) { + this._onTouch(event); } - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); - } - if (!dom.point.parentNode) { - var foreground = this.parent.dom.foreground; - if (!foreground) { - throw new Error('Cannot redraw item: parent has no foreground container element'); - } - foreground.appendChild(dom.point); - } - this.displayed = true; + var node = this._getNodeAt(this.drag.pointer); + // note: drag.pointer is set in _onTouch to get the initial touch location - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.point); - this._updateDataAttributes(this.dom.point); - this._updateStyle(this.dom.point); + this.drag.dragging = true; + this.drag.selection = []; + this.drag.translation = this._getTranslation(); + this.drag.nodeId = null; + this.draggingNodes = false; - // update class - var className = (this.data.className? ' ' + this.data.className : '') + - (this.selected ? ' selected' : ''); - dom.point.className = 'item point' + className; - dom.dot.className = 'item dot' + className; + if (node != null && this.constants.dragNodes == true) { + this.draggingNodes = true; + this.drag.nodeId = node.id; + // select the clicked node if not yet selected + if (!node.isSelected()) { + this._selectObject(node,false); + } - // recalculate size - this.width = dom.point.offsetWidth; - this.height = dom.point.offsetHeight; - this.props.dot.width = dom.dot.offsetWidth; - this.props.dot.height = dom.dot.offsetHeight; - this.props.content.height = dom.content.offsetHeight; + this.emit("dragStart",{nodeIds:this.getSelection().nodes}); - // resize contents - dom.content.style.marginLeft = 2 * this.props.dot.width + 'px'; - //dom.content.style.marginRight = ... + 'px'; // TODO: margin right + // create an array with the selected nodes and their original location and status + for (var objectId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(objectId)) { + var object = this.selectionObj.nodes[objectId]; + var s = { + id: object.id, + node: object, - dom.dot.style.top = ((this.height - this.props.dot.height) / 2) + 'px'; - dom.dot.style.left = (this.props.dot.width / 2) + 'px'; + // store original x, y, xFixed and yFixed, make the node temporarily Fixed + x: object.x, + y: object.y, + xFixed: object.xFixed, + yFixed: object.yFixed + }; - this.dirty = false; - } + object.xFixed = true; + object.yFixed = true; - this._repaintDeleteButton(dom.point); + this.drag.selection.push(s); + } + } + } }; + /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. + * handle drag event + * @private */ - PointItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); - } + Network.prototype._onDrag = function (event) { + this._handleOnDrag(event) }; + /** - * Hide the item from the DOM (when visible) + * This function is called by _onDrag. + * It is separated out because we can then overload it for the datamanipulation system. + * + * @private */ - PointItem.prototype.hide = function() { - if (this.displayed) { - if (this.dom.point.parentNode) { - this.dom.point.parentNode.removeChild(this.dom.point); - } + Network.prototype._handleOnDrag = function(event) { + if (this.drag.pinched) { + return; + } - this.top = null; - this.left = null; + // remove the focus on node if it is focussed on by the focusOnNode + this.releaseNode(); - this.displayed = false; - } - }; + var pointer = this._getPointer(event.gesture.center); + var me = this; + var drag = this.drag; + var selection = drag.selection; + if (selection && selection.length && this.constants.dragNodes == true) { + // calculate delta's and new location + var deltaX = pointer.x - drag.pointer.x; + var deltaY = pointer.y - drag.pointer.y; - /** - * Reposition the item horizontally - * @Override - */ - PointItem.prototype.repositionX = function() { - var start = this.conversion.toScreen(this.data.start); + // update position of all selected nodes + selection.forEach(function (s) { + var node = s.node; - this.left = start - this.props.dot.width; + if (!s.xFixed) { + node.x = me._XconvertDOMtoCanvas(me._XconvertCanvasToDOM(s.x) + deltaX); + } - // reposition point - this.dom.point.style.left = this.left + 'px'; - }; + if (!s.yFixed) { + node.y = me._YconvertDOMtoCanvas(me._YconvertCanvasToDOM(s.y) + deltaY); + } + }); - /** - * Reposition the item vertically - * @Override - */ - PointItem.prototype.repositionY = function() { - var orientation = this.options.orientation, - point = this.dom.point; - if (orientation == 'top') { - point.style.top = this.top + 'px'; + // start _animationStep if not yet running + if (!this.moving) { + this.moving = true; + this.start(); + } } else { - point.style.top = (this.parent.height - this.top - this.height) + 'px'; + // move the network + if (this.constants.dragNetwork == true) { + // if the drag was not started properly because the click started outside the network div, start it now. + if (this.drag.pointer === undefined) { + this._handleDragStart(event); + return; + } + var diffX = pointer.x - this.drag.pointer.x; + var diffY = pointer.y - this.drag.pointer.y; + + this._setTranslation( + this.drag.translation.x + diffX, + this.drag.translation.y + diffY + ); + this._redraw(); + } } }; - module.exports = PointItem; - - -/***/ }, -/* 33 */ -/***/ function(module, exports, __webpack_require__) { - - var Hammer = __webpack_require__(19); - var Item = __webpack_require__(31); - /** - * @constructor RangeItem - * @extends Item - * @param {Object} data Object containing parameters start, end - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe options + * handle drag start event + * @private */ - function RangeItem (data, conversion, options) { - this.props = { - content: { - width: 0 - } - }; - this.overflow = false; // if contents can overflow (css styling), this flag is set to true + Network.prototype._onDragEnd = function (event) { + this._handleDragEnd(event); + }; - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data.id); - } - if (data.end == undefined) { - throw new Error('Property "end" missing in item ' + data.id); - } - } - Item.call(this, data, conversion, options); + Network.prototype._handleDragEnd = function(event) { + this.drag.dragging = false; + var selection = this.drag.selection; + if (selection && selection.length) { + selection.forEach(function (s) { + // restore original xFixed and yFixed + s.node.xFixed = s.xFixed; + s.node.yFixed = s.yFixed; + }); + this.moving = true; + this.start(); + } + else { + this._redraw(); + } + if (this.draggingNodes == false) { + this.emit("dragEnd",{nodeIds:[]}); + } + else { + this.emit("dragEnd",{nodeIds:this.getSelection().nodes}); + } + } + /** + * handle tap/click event: select/unselect a node + * @private + */ + Network.prototype._onTap = function (event) { + var pointer = this._getPointer(event.gesture.center); + this.pointerPosition = pointer; + this._handleTap(pointer); - RangeItem.prototype = new Item (null, null, null); + }; - RangeItem.prototype.baseClassName = 'item range'; /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible + * handle doubletap event + * @private */ - RangeItem.prototype.isVisible = function(range) { - // determine visibility - return (this.data.start < range.end) && (this.data.end > range.start); + Network.prototype._onDoubleTap = function (event) { + var pointer = this._getPointer(event.gesture.center); + this._handleDoubleTap(pointer); }; + /** - * Repaint the item + * handle long tap event: multi select nodes + * @private */ - RangeItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; - - // background box - dom.box = document.createElement('div'); - // className is updated in redraw() + Network.prototype._onHold = function (event) { + var pointer = this._getPointer(event.gesture.center); + this.pointerPosition = pointer; + this._handleOnHold(pointer); + }; - // contents box - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); + /** + * handle the release of the screen + * + * @private + */ + Network.prototype._onRelease = function (event) { + var pointer = this._getPointer(event.gesture.center); + this._handleOnRelease(pointer); + }; - // attach this item as attribute - dom.box['timeline-item'] = this; + /** + * Handle pinch event + * @param event + * @private + */ + Network.prototype._onPinch = function (event) { + var pointer = this._getPointer(event.gesture.center); - this.dirty = true; + this.drag.pinched = true; + if (!('scale' in this.pinch)) { + this.pinch.scale = 1; } - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); - } - if (!dom.box.parentNode) { - var foreground = this.parent.dom.foreground; - if (!foreground) { - throw new Error('Cannot redraw item: parent has no foreground container element'); + // TODO: enabled moving while pinching? + var scale = this.pinch.scale * event.gesture.scale; + this._zoom(scale, pointer) + }; + + /** + * Zoom the network in or out + * @param {Number} scale a number around 1, and between 0.01 and 10 + * @param {{x: Number, y: Number}} pointer Position on screen + * @return {Number} appliedScale scale is limited within the boundaries + * @private + */ + Network.prototype._zoom = function(scale, pointer) { + if (this.constants.zoomable == true) { + var scaleOld = this._getScale(); + if (scale < 0.00001) { + scale = 0.00001; + } + if (scale > 10) { + scale = 10; } - foreground.appendChild(dom.box); - } - this.displayed = true; - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.box); - this._updateDataAttributes(this.dom.box); - this._updateStyle(this.dom.box); + var preScaleDragPointer = null; + if (this.drag !== undefined) { + if (this.drag.dragging == true) { + preScaleDragPointer = this.DOMtoCanvas(this.drag.pointer); + } + } + // + this.frame.canvas.clientHeight / 2 + var translation = this._getTranslation(); - // update class - var className = (this.data.className ? (' ' + this.data.className) : '') + - (this.selected ? ' selected' : ''); - dom.box.className = this.baseClassName + className; + var scaleFrac = scale / scaleOld; + var tx = (1 - scaleFrac) * pointer.x + translation.x * scaleFrac; + var ty = (1 - scaleFrac) * pointer.y + translation.y * scaleFrac; - // determine from css whether this box has overflow - this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; + this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), + "y" : this._YconvertDOMtoCanvas(pointer.y)}; - // recalculate size - // turn off max-width to be able to calculate the real width - // this causes an extra browser repaint/reflow, but so be it - this.dom.content.style.maxWidth = 'none'; - this.props.content.width = this.dom.content.offsetWidth; - this.height = this.dom.box.offsetHeight; - this.dom.content.style.maxWidth = ''; + this._setScale(scale); + this._setTranslation(tx, ty); + this.updateClustersDefault(); - this.dirty = false; - } + if (preScaleDragPointer != null) { + var postScaleDragPointer = this.canvasToDOM(preScaleDragPointer); + this.drag.pointer.x = postScaleDragPointer.x; + this.drag.pointer.y = postScaleDragPointer.y; + } - this._repaintDeleteButton(dom.box); - this._repaintDragLeft(); - this._repaintDragRight(); - }; + this._redraw(); - /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. - */ - RangeItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); + if (scaleOld < scale) { + this.emit("zoom", {direction:"+"}); + } + else { + this.emit("zoom", {direction:"-"}); + } + + return scale; } }; + /** - * Hide the item from the DOM (when visible) - * @return {Boolean} changed + * Event handler for mouse wheel event, used to zoom the timeline + * See http://adomas.org/javascript-mouse-wheel/ + * https://github.com/EightMedia/hammer.js/issues/256 + * @param {MouseEvent} event + * @private */ - RangeItem.prototype.hide = function() { - if (this.displayed) { - var box = this.dom.box; + Network.prototype._onMouseWheel = function(event) { + // retrieve delta + var delta = 0; + if (event.wheelDelta) { /* IE/Opera. */ + delta = event.wheelDelta/120; + } else if (event.detail) { /* Mozilla case. */ + // In Mozilla, sign of delta is different than in IE. + // Also, delta is multiple of 3. + delta = -event.detail/3; + } - if (box.parentNode) { - box.parentNode.removeChild(box); + // If delta is nonzero, handle it. + // Basically, delta is now positive if wheel was scrolled up, + // and negative, if wheel was scrolled down. + if (delta) { + + // calculate the new scale + var scale = this._getScale(); + var zoom = delta / 10; + if (delta < 0) { + zoom = zoom / (1 - zoom); } + scale *= (1 + zoom); - this.top = null; - this.left = null; + // calculate the pointer location + var gesture = hammerUtil.fakeGesture(this, event); + var pointer = this._getPointer(gesture.center); - this.displayed = false; + // apply the new scale + this._zoom(scale, pointer); } + + // Prevent default actions caused by mouse wheel. + event.preventDefault(); }; + /** - * Reposition the item horizontally - * @Override + * Mouse move handler for checking whether the title moves over a node with a title. + * @param {Event} event + * @private */ - RangeItem.prototype.repositionX = function() { - var parentWidth = this.parent.width; - var start = this.conversion.toScreen(this.data.start); - var end = this.conversion.toScreen(this.data.end); - var contentLeft; - var contentWidth; - - // limit the width of the this, as browsers cannot draw very wide divs - if (start < -parentWidth) { - start = -parentWidth; - } - if (end > 2 * parentWidth) { - end = 2 * parentWidth; - } - var boxWidth = Math.max(end - start, 1); + Network.prototype._onMouseMoveTitle = function (event) { + var gesture = hammerUtil.fakeGesture(this, event); + var pointer = this._getPointer(gesture.center); + var popupVisible = false; - if (this.overflow) { - this.left = start; - this.width = boxWidth + this.props.content.width; - contentWidth = this.props.content.width; + // check if the previously selected node is still selected + if (this.popup !== undefined) { + if (this.popup.hidden === false) { + this._checkHidePopup(pointer); + } - // Note: The calculation of width is an optimistic calculation, giving - // a width which will not change when moving the Timeline - // So no re-stacking needed, which is nicer for the eye; - } - else { - this.left = start; - this.width = boxWidth; - contentWidth = Math.min(end - start - 2 * this.options.padding, this.props.content.width); + // if the popup was not hidden above + if (this.popup.hidden === false) { + popupVisible = true; + this.popup.setPosition(pointer.x + 3,pointer.y - 5) + this.popup.show(); + } } - this.dom.box.style.left = this.left + 'px'; - this.dom.box.style.width = boxWidth + 'px'; + // if we bind the keyboard to the div, we have to highlight it to use it. This highlights it on mouse over + if (this.constants.keyboard.bindToWindow == false && this.constants.keyboard.enabled == true) { + this.frame.focus(); + } - switch (this.options.align) { - case 'left': - this.dom.content.style.left = '0'; - break; + // start a timeout that will check if the mouse is positioned above an element + if (popupVisible === false) { + var me = this; + var checkShow = function () { + me._checkShowPopup(pointer); + }; + if (this.popupTimer) { + clearInterval(this.popupTimer); // stop any running calculationTimer + } + if (!this.drag.dragging) { + this.popupTimer = setTimeout(checkShow, this.constants.tooltip.delay); + } + } - case 'right': - this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding), 0) + 'px'; - break; + /** + * Adding hover highlights + */ + if (this.constants.hover == true) { + // removing all hover highlights + for (var edgeId in this.hoverObj.edges) { + if (this.hoverObj.edges.hasOwnProperty(edgeId)) { + this.hoverObj.edges[edgeId].hover = false; + delete this.hoverObj.edges[edgeId]; + } + } - case 'center': - this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding) / 2, 0) + 'px'; - break; + // adding hover highlights + var obj = this._getNodeAt(pointer); + if (obj == null) { + obj = this._getEdgeAt(pointer); + } + if (obj != null) { + this._hoverObject(obj); + } - default: // 'auto' - // when range exceeds left of the window, position the contents at the left of the visible area - if (this.overflow) { - if (end > 0) { - contentLeft = Math.max(-start, 0); - } - else { - contentLeft = -contentWidth; // ensure it's not visible anymore - } - } - else { - if (start < 0) { - contentLeft = Math.min(-start, - (end - start - contentWidth - 2 * this.options.padding)); - // TODO: remove the need for options.padding. it's terrible. - } - else { - contentLeft = 0; + // removing all node hover highlights except for the selected one. + for (var nodeId in this.hoverObj.nodes) { + if (this.hoverObj.nodes.hasOwnProperty(nodeId)) { + if (obj instanceof Node && obj.id != nodeId || obj instanceof Edge || obj == null) { + this._blurObject(this.hoverObj.nodes[nodeId]); + delete this.hoverObj.nodes[nodeId]; } } - this.dom.content.style.left = contentLeft + 'px'; + } + this.redraw(); } }; /** - * Reposition the item vertically - * @Override + * Check if there is an element on the given position in the network + * (a node or edge). If so, and if this element has a title, + * show a popup window with its title. + * + * @param {{x:Number, y:Number}} pointer + * @private */ - RangeItem.prototype.repositionY = function() { - var orientation = this.options.orientation, - box = this.dom.box; + Network.prototype._checkShowPopup = function (pointer) { + var obj = { + left: this._XconvertDOMtoCanvas(pointer.x), + top: this._YconvertDOMtoCanvas(pointer.y), + right: this._XconvertDOMtoCanvas(pointer.x), + bottom: this._YconvertDOMtoCanvas(pointer.y) + }; - if (orientation == 'top') { - box.style.top = this.top + 'px'; + var id; + var previousPopupObjId = this.popupObj === undefined ? "" : this.popupObj.id; + var nodeUnderCursor = false; + var popupType = "node"; + + if (this.popupObj == undefined) { + // search the nodes for overlap, select the top one in case of multiple nodes + var nodes = this.nodes; + var overlappingNodes = []; + for (id in nodes) { + if (nodes.hasOwnProperty(id)) { + var node = nodes[id]; + if (node.isOverlappingWith(obj)) { + if (node.getTitle() !== undefined) { + overlappingNodes.push(id); + } + } + } + } + + if (overlappingNodes.length > 0) { + // if there are overlapping nodes, select the last one, this is the + // one which is drawn on top of the others + this.popupObj = this.nodes[overlappingNodes[overlappingNodes.length - 1]]; + // if you hover over a node, the title of the edge is not supposed to be shown. + nodeUnderCursor = true; + } } - else { - box.style.top = (this.parent.height - this.top - this.height) + 'px'; + + if (this.popupObj === undefined && nodeUnderCursor == false) { + // search the edges for overlap + var edges = this.edges; + var overlappingEdges = []; + for (id in edges) { + if (edges.hasOwnProperty(id)) { + var edge = edges[id]; + if (edge.connected && (edge.getTitle() !== undefined) && + edge.isOverlappingWith(obj)) { + overlappingEdges.push(id); + } + } + } + + if (overlappingEdges.length > 0) { + this.popupObj = this.edges[overlappingEdges[overlappingEdges.length - 1]]; + popupType = "edge"; + } } - }; - /** - * Repaint a drag area on the left side of the range when the range is selected - * @protected - */ - RangeItem.prototype._repaintDragLeft = function () { - if (this.selected && this.options.editable.updateTime && !this.dom.dragLeft) { - // create and show drag area - var dragLeft = document.createElement('div'); - dragLeft.className = 'drag-left'; - dragLeft.dragLeftItem = this; + if (this.popupObj) { + // show popup message window + if (this.popupObj.id != previousPopupObjId) { + if (this.popup === undefined) { + this.popup = new Popup(this.frame, this.constants.tooltip); + } - // TODO: this should be redundant? - Hammer(dragLeft, { - preventDefault: true - }).on('drag', function () { - //console.log('drag left') - }); + this.popup.popupTargetType = popupType; + this.popup.popupTargetId = this.popupObj.id; - this.dom.box.appendChild(dragLeft); - this.dom.dragLeft = dragLeft; + // adjust a small offset such that the mouse cursor is located in the + // bottom left location of the popup, and you can easily move over the + // popup area + this.popup.setPosition(pointer.x + 3, pointer.y - 5); + this.popup.setText(this.popupObj.getTitle()); + this.popup.show(); + } } - else if (!this.selected && this.dom.dragLeft) { - // delete drag area - if (this.dom.dragLeft.parentNode) { - this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft); + else { + if (this.popup) { + this.popup.hide(); } - this.dom.dragLeft = null; } }; + /** - * Repaint a drag area on the right side of the range when the range is selected - * @protected + * Check if the popup must be hidden, which is the case when the mouse is no + * longer hovering on the object + * @param {{x:Number, y:Number}} pointer + * @private */ - RangeItem.prototype._repaintDragRight = function () { - if (this.selected && this.options.editable.updateTime && !this.dom.dragRight) { - // create and show drag area - var dragRight = document.createElement('div'); - dragRight.className = 'drag-right'; - dragRight.dragRightItem = this; - - // TODO: this should be redundant? - Hammer(dragRight, { - preventDefault: true - }).on('drag', function () { - //console.log('drag right') - }); + Network.prototype._checkHidePopup = function (pointer) { + var pointerObj = { + left: this._XconvertDOMtoCanvas(pointer.x), + top: this._YconvertDOMtoCanvas(pointer.y), + right: this._XconvertDOMtoCanvas(pointer.x), + bottom: this._YconvertDOMtoCanvas(pointer.y) + }; - this.dom.box.appendChild(dragRight); - this.dom.dragRight = dragRight; + var stillOnObj = false; + if (this.popup.popupTargetType == 'node') { + stillOnObj = this.nodes[this.popup.popupTargetId].isOverlappingWith(pointerObj); + if (stillOnObj === true) { + var overNode = this._getNodeAt(pointer); + stillOnObj = overNode.id == this.popup.popupTargetId; + } } - else if (!this.selected && this.dom.dragRight) { - // delete drag area - if (this.dom.dragRight.parentNode) { - this.dom.dragRight.parentNode.removeChild(this.dom.dragRight); + else { + if (this._getNodeAt(pointer) === null) { + stillOnObj = this.edges[this.popup.popupTargetId].isOverlappingWith(pointerObj); } - this.dom.dragRight = null; } - }; - - module.exports = RangeItem; -/***/ }, -/* 34 */ -/***/ function(module, exports, __webpack_require__) { + if (stillOnObj === false) { + this.popupObj = undefined; + this.popup.hide(); + } + }; - var Hammer = __webpack_require__(19); - var Item = __webpack_require__(31); - var BackgroundGroup = __webpack_require__(29); - var RangeItem = __webpack_require__(33); /** - * @constructor BackgroundItem - * @extends Item - * @param {Object} data Object containing parameters start, end - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe options + * Set a new size for the network + * @param {string} width Width in pixels or percentage (for example '800px' + * or '50%') + * @param {string} height Height in pixels or percentage (for example '400px' + * or '30%') */ - // TODO: implement support for the BackgroundItem just having a start, then being displayed as a sort of an annotation - function BackgroundItem (data, conversion, options) { - this.props = { - content: { - width: 0 - } - }; - this.overflow = false; // if contents can overflow (css styling), this flag is set to true + Network.prototype.setSize = function(width, height) { + var emitEvent = false; + var oldWidth = this.frame.canvas.width; + var oldHeight = this.frame.canvas.height; + if (width != this.constants.width || height != this.constants.height || this.frame.style.width != width || this.frame.style.height != height) { + this.frame.style.width = width; + this.frame.style.height = height; - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data.id); - } - if (data.end == undefined) { - throw new Error('Property "end" missing in item ' + data.id); - } - } + this.frame.canvas.style.width = '100%'; + this.frame.canvas.style.height = '100%'; - Item.call(this, data, conversion, options); + this.frame.canvas.width = this.frame.canvas.clientWidth * this.pixelRatio; + this.frame.canvas.height = this.frame.canvas.clientHeight * this.pixelRatio; - this.emptyContent = false; - } + this.constants.width = width; + this.constants.height = height; - BackgroundItem.prototype = new Item (null, null, null); + emitEvent = true; + } + else { + // this would adapt the width of the canvas to the width from 100% if and only if + // there is a change. - BackgroundItem.prototype.baseClassName = 'item background'; - BackgroundItem.prototype.stack = false; + if (this.frame.canvas.width != this.frame.canvas.clientWidth * this.pixelRatio) { + this.frame.canvas.width = this.frame.canvas.clientWidth * this.pixelRatio; + emitEvent = true; + } + if (this.frame.canvas.height != this.frame.canvas.clientHeight * this.pixelRatio) { + this.frame.canvas.height = this.frame.canvas.clientHeight * this.pixelRatio; + emitEvent = true; + } + } - /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible - */ - BackgroundItem.prototype.isVisible = function(range) { - // determine visibility - return (this.data.start < range.end) && (this.data.end > range.start); + if (emitEvent == true) { + this.emit('resize', {width:this.frame.canvas.width * this.pixelRatio,height:this.frame.canvas.height * this.pixelRatio, oldWidth: oldWidth * this.pixelRatio, oldHeight: oldHeight * this.pixelRatio}); + } }; /** - * Repaint the item + * Set a data set with nodes for the network + * @param {Array | DataSet | DataView} nodes The data containing the nodes. + * @private */ - BackgroundItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; - - // background box - dom.box = document.createElement('div'); - // className is updated in redraw() - - // contents box - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); - - // Note: we do NOT attach this item as attribute to the DOM, - // such that background items cannot be selected - //dom.box['timeline-item'] = this; + Network.prototype._setNodes = function(nodes) { + var oldNodesData = this.nodesData; - this.dirty = true; + if (nodes instanceof DataSet || nodes instanceof DataView) { + this.nodesData = nodes; } - - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); + else if (Array.isArray(nodes)) { + this.nodesData = new DataSet(); + this.nodesData.add(nodes); } - if (!dom.box.parentNode) { - var background = this.parent.dom.background; - if (!background) { - throw new Error('Cannot redraw item: parent has no background container element'); - } - background.appendChild(dom.box); + else if (!nodes) { + this.nodesData = new DataSet(); + } + else { + throw new TypeError('Array or DataSet expected'); } - this.displayed = true; - - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.content); - this._updateDataAttributes(this.dom.content); - this._updateStyle(this.dom.box); - // update class - var className = (this.data.className ? (' ' + this.data.className) : '') + - (this.selected ? ' selected' : ''); - dom.box.className = this.baseClassName + className; + if (oldNodesData) { + // unsubscribe from old dataset + util.forEach(this.nodesListeners, function (callback, event) { + oldNodesData.off(event, callback); + }); + } - // determine from css whether this box has overflow - this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; + // remove drawn nodes + this.nodes = {}; - // recalculate size - this.props.content.width = this.dom.content.offsetWidth; - this.height = 0; // set height zero, so this item will be ignored when stacking items + if (this.nodesData) { + // subscribe to new dataset + var me = this; + util.forEach(this.nodesListeners, function (callback, event) { + me.nodesData.on(event, callback); + }); - this.dirty = false; + // draw all new nodes + var ids = this.nodesData.getIds(); + this._addNodes(ids); } + this._updateSelection(); }; /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. - */ - BackgroundItem.prototype.show = RangeItem.prototype.show; - - /** - * Hide the item from the DOM (when visible) - * @return {Boolean} changed + * Add nodes + * @param {Number[] | String[]} ids + * @private */ - BackgroundItem.prototype.hide = RangeItem.prototype.hide; + Network.prototype._addNodes = function(ids) { + var id; + for (var i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + var data = this.nodesData.get(id); + var node = new Node(data, this.images, this.groups, this.constants); + this.nodes[id] = node; // note: this may replace an existing node + if ((node.xFixed == false || node.yFixed == false) && (node.x === null || node.y === null)) { + var radius = 10 * 0.1*ids.length + 10; + var angle = 2 * Math.PI * Math.random(); + if (node.xFixed == false) {node.x = radius * Math.cos(angle);} + if (node.yFixed == false) {node.y = radius * Math.sin(angle);} + } + this.moving = true; + } - /** - * Reposition the item horizontally - * @Override - */ - BackgroundItem.prototype.repositionX = RangeItem.prototype.repositionX; + this._updateNodeIndexList(); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + this._updateCalculationNodes(); + this._reconnectEdges(); + this._updateValueRange(this.nodes); + this.updateLabels(); + }; /** - * Reposition the item vertically - * @Override + * Update existing nodes, or create them when not yet existing + * @param {Number[] | String[]} ids + * @private */ - BackgroundItem.prototype.repositionY = function(margin) { - var onTop = this.options.orientation === 'top'; - this.dom.content.style.top = onTop ? '' : '0'; - this.dom.content.style.bottom = onTop ? '0' : ''; - var height; - - // special positioning for subgroups - if (this.data.subgroup !== undefined) { - var itemSubgroup = this.data.subgroup; - var subgroups = this.parent.subgroups; - var subgroupIndex = subgroups[itemSubgroup].index; - // if the orientation is top, we need to take the difference in height into account. - if (onTop == true) { - // the first subgroup will have to account for the distance from the top to the first item. - height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; - height += subgroupIndex == 0 ? margin.axis - 0.5*margin.item.vertical : 0; - var newTop = this.parent.top; - for (var subgroup in subgroups) { - if (subgroups.hasOwnProperty(subgroup)) { - if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroupIndex) { - newTop += subgroups[subgroup].height + margin.item.vertical; - } - } - } + Network.prototype._updateNodes = function(ids) { + var nodesData = this.nodesData.get(ids); + var nodes = this.nodes; - // the others will have to be offset downwards with this same distance. - newTop += subgroupIndex != 0 ? margin.axis - 0.5 * margin.item.vertical : 0; - this.dom.box.style.top = newTop + 'px'; - this.dom.box.style.bottom = ''; + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; + var node = nodes[id]; + var data = nodesData[i]; + if (node) { + // update node + node.setProperties(data, this.constants); } - // and when the orientation is bottom: else { - var newTop = this.parent.top; - for (var subgroup in subgroups) { - if (subgroups.hasOwnProperty(subgroup)) { - if (subgroups[subgroup].visible == true && subgroups[subgroup].index > subgroupIndex) { - newTop += subgroups[subgroup].height + margin.item.vertical; - } - } - } - height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; - this.dom.box.style.top = newTop + 'px'; - this.dom.box.style.bottom = ''; + // create node + node = new Node(properties, this.images, this.groups, this.constants); + nodes[id] = node; } } - // and in the case of no subgroups: - else { - // we want backgrounds with groups to only show in groups. - if (this.parent instanceof BackgroundGroup) { - // if the item is not in a group: - height = Math.max(this.parent.height, - this.parent.itemSet.body.domProps.center.height, - this.parent.itemSet.body.domProps.centerContainer.height); - this.dom.box.style.top = onTop ? '0' : ''; - this.dom.box.style.bottom = onTop ? '' : '0'; - } - else { - height = this.parent.height; - // same alignment for items when orientation is top or bottom - this.dom.box.style.top = this.parent.top + 'px'; - this.dom.box.style.bottom = ''; - } + this.moving = true; + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); } - this.dom.box.style.height = height + 'px'; + this._updateNodeIndexList(); + this._updateValueRange(nodes); + this._markAllEdgesAsDirty(); }; - module.exports = BackgroundItem; - - -/***/ }, -/* 35 */ -/***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(1); - var Component = __webpack_require__(23); - var TimeStep = __webpack_require__(27); - var DateUtil = __webpack_require__(24); - var moment = __webpack_require__(2); + Network.prototype._markAllEdgesAsDirty = function() { + for (var edgeId in this.edges) { + this.edges[edgeId].colorDirty = true; + } + } /** - * A horizontal time axis - * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body - * @param {Object} [options] See TimeAxis.setOptions for the available - * options. - * @constructor TimeAxis - * @extends Component + * Remove existing nodes. If nodes do not exist, the method will just ignore it. + * @param {Number[] | String[]} ids + * @private */ - function TimeAxis (body, options) { - this.dom = { - foreground: null, - lines: [], - majorTexts: [], - minorTexts: [], - redundant: { - lines: [], - majorTexts: [], - minorTexts: [] - } - }; - this.props = { - range: { - start: 0, - end: 0, - minimumStep: 0 - }, - lineTop: 0 - }; + Network.prototype._removeNodes = function(ids) { + var nodes = this.nodes; - this.defaultOptions = { - orientation: 'bottom', // supported: 'top', 'bottom' - // TODO: implement timeaxis orientations 'left' and 'right' - showMinorLabels: true, - showMajorLabels: true, - format: null, - timeAxis: null - }; - this.options = util.extend({}, this.defaultOptions); + // remove from selection + for (var i = 0, len = ids.length; i < len; i++) { + if (this.selectionObj.nodes[ids[i]] !== undefined) { + this.nodes[ids[i]].unselect(); + this._removeFromSelection(this.nodes[ids[i]]); + } + } - this.body = body; + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; + delete nodes[id]; + } - // create the HTML DOM - this._create(); - this.setOptions(options); - } - TimeAxis.prototype = new Component(); + this._updateNodeIndexList(); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + this._updateCalculationNodes(); + this._reconnectEdges(); + this._updateSelection(); + this._updateValueRange(nodes); + }; /** - * Set options for the TimeAxis. - * Parameters will be merged in current options. - * @param {Object} options Available options: - * {string} [orientation] - * {boolean} [showMinorLabels] - * {boolean} [showMajorLabels] + * Load edges by reading the data table + * @param {Array | DataSet | DataView} edges The data containing the edges. + * @private + * @private */ - TimeAxis.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - util.selectiveExtend([ - 'orientation', - 'showMinorLabels', - 'showMajorLabels', - 'hiddenDates', - 'format', - 'timeAxis' - ], this.options, options); + Network.prototype._setEdges = function(edges) { + var oldEdgesData = this.edgesData; - // apply locale to moment.js - // TODO: not so nice, this is applied globally to moment.js - if ('locale' in options) { - if (typeof moment.locale === 'function') { - // moment.js 2.8.1+ - moment.locale(options.locale); - } - else { - moment.lang(options.locale); - } - } + if (edges instanceof DataSet || edges instanceof DataView) { + this.edgesData = edges; + } + else if (Array.isArray(edges)) { + this.edgesData = new DataSet(); + this.edgesData.add(edges); + } + else if (!edges) { + this.edgesData = new DataSet(); + } + else { + throw new TypeError('Array or DataSet expected'); + } + + if (oldEdgesData) { + // unsubscribe from old dataset + util.forEach(this.edgesListeners, function (callback, event) { + oldEdgesData.off(event, callback); + }); + } + + // remove drawn edges + this.edges = {}; + + if (this.edgesData) { + // subscribe to new dataset + var me = this; + util.forEach(this.edgesListeners, function (callback, event) { + me.edgesData.on(event, callback); + }); + + // draw all new nodes + var ids = this.edgesData.getIds(); + this._addEdges(ids); } + + this._reconnectEdges(); }; /** - * Create the HTML DOM for the TimeAxis + * Add edges + * @param {Number[] | String[]} ids + * @private */ - TimeAxis.prototype._create = function() { - this.dom.foreground = document.createElement('div'); - this.dom.background = document.createElement('div'); + Network.prototype._addEdges = function (ids) { + var edges = this.edges, + edgesData = this.edgesData; - this.dom.foreground.className = 'timeaxis foreground'; - this.dom.background.className = 'timeaxis background'; + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; + + var oldEdge = edges[id]; + if (oldEdge) { + oldEdge.disconnect(); + } + + var data = edgesData.get(id, {"showInternalIds" : true}); + edges[id] = new Edge(data, this, this.constants); + } + this.moving = true; + this._updateValueRange(edges); + this._createBezierNodes(); + this._updateCalculationNodes(); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } }; /** - * Destroy the TimeAxis + * Update existing edges, or create them when not yet existing + * @param {Number[] | String[]} ids + * @private */ - TimeAxis.prototype.destroy = function() { - // remove from DOM - if (this.dom.foreground.parentNode) { - this.dom.foreground.parentNode.removeChild(this.dom.foreground); - } - if (this.dom.background.parentNode) { - this.dom.background.parentNode.removeChild(this.dom.background); + Network.prototype._updateEdges = function (ids) { + var edges = this.edges, + edgesData = this.edgesData; + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; + + var data = edgesData.get(id); + var edge = edges[id]; + if (edge) { + // update edge + edge.disconnect(); + edge.setProperties(data, this.constants); + edge.connect(); + } + else { + // create edge + edge = new Edge(data, this, this.constants); + this.edges[id] = edge; + } } - this.body = null; + this._createBezierNodes(); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + this.moving = true; + this._updateValueRange(edges); }; /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * Remove existing edges. Non existing ids will be ignored + * @param {Number[] | String[]} ids + * @private */ - TimeAxis.prototype.redraw = function () { - var options = this.options; - var props = this.props; - var foreground = this.dom.foreground; - var background = this.dom.background; - - // determine the correct parent DOM element (depending on option orientation) - var parent = (options.orientation == 'top') ? this.body.dom.top : this.body.dom.bottom; - var parentChanged = (foreground.parentNode !== parent); - - // calculate character width and height - this._calculateCharSize(); + Network.prototype._removeEdges = function (ids) { + var edges = this.edges; - // TODO: recalculate sizes only needed when parent is resized or options is changed - var orientation = this.options.orientation, - showMinorLabels = this.options.showMinorLabels, - showMajorLabels = this.options.showMajorLabels; + // remove from selection + for (var i = 0, len = ids.length; i < len; i++) { + if (this.selectionObj.edges[ids[i]] !== undefined) { + edges[ids[i]].unselect(); + this._removeFromSelection(edges[ids[i]]); + } + } - // determine the width and height of the elemens for the axis - props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; - props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; - props.height = props.minorLabelHeight + props.majorLabelHeight; - props.width = foreground.offsetWidth; + for (var i = 0, len = ids.length; i < len; i++) { + var id = ids[i]; + var edge = edges[id]; + if (edge) { + if (edge.via != null) { + delete this.sectors['support']['nodes'][edge.via.id]; + } + edge.disconnect(); + delete edges[id]; + } + } - props.minorLineHeight = this.body.domProps.root.height - props.majorLabelHeight - - (options.orientation == 'top' ? this.body.domProps.bottom.height : this.body.domProps.top.height); - props.minorLineWidth = 1; // TODO: really calculate width - props.majorLineHeight = props.minorLineHeight + props.majorLabelHeight; - props.majorLineWidth = 1; // TODO: really calculate width + this.moving = true; + this._updateValueRange(edges); + if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { + this._resetLevels(); + this._setupHierarchicalLayout(); + } + this._updateCalculationNodes(); + }; - // take foreground and background offline while updating (is almost twice as fast) - var foregroundNextSibling = foreground.nextSibling; - var backgroundNextSibling = background.nextSibling; - foreground.parentNode && foreground.parentNode.removeChild(foreground); - background.parentNode && background.parentNode.removeChild(background); + /** + * Reconnect all edges + * @private + */ + Network.prototype._reconnectEdges = function() { + var id, + nodes = this.nodes, + edges = this.edges; + for (id in nodes) { + if (nodes.hasOwnProperty(id)) { + nodes[id].edges = []; + nodes[id].dynamicEdges = []; + } + } - foreground.style.height = this.props.height + 'px'; + for (id in edges) { + if (edges.hasOwnProperty(id)) { + var edge = edges[id]; + edge.from = null; + edge.to = null; + edge.connect(); + } + } + }; - this._repaintLabels(); + /** + * Update the values of all object in the given array according to the current + * value range of the objects in the array. + * @param {Object} obj An object containing a set of Edges or Nodes + * The objects must have a method getValue() and + * setValueRange(min, max). + * @private + */ + Network.prototype._updateValueRange = function(obj) { + var id; - // put DOM online again (at the same place) - if (foregroundNextSibling) { - parent.insertBefore(foreground, foregroundNextSibling); - } - else { - parent.appendChild(foreground) - } - if (backgroundNextSibling) { - this.body.dom.backgroundVertical.insertBefore(background, backgroundNextSibling); + // determine the range of the objects + var valueMin = undefined; + var valueMax = undefined; + var valueTotal = 0; + for (id in obj) { + if (obj.hasOwnProperty(id)) { + var value = obj[id].getValue(); + if (value !== undefined) { + valueMin = (valueMin === undefined) ? value : Math.min(value, valueMin); + valueMax = (valueMax === undefined) ? value : Math.max(value, valueMax); + valueTotal += value; + } + } } - else { - this.body.dom.backgroundVertical.appendChild(background) + + // adjust the range of all objects + if (valueMin !== undefined && valueMax !== undefined) { + for (id in obj) { + if (obj.hasOwnProperty(id)) { + obj[id].setValueRange(valueMin, valueMax, valueTotal); + } + } } + }; - return this._isResized() || parentChanged; + /** + * Redraw the network with the current data + * chart will be resized too. + */ + Network.prototype.redraw = function() { + this.setSize(this.constants.width, this.constants.height); + this._redraw(); }; /** - * Repaint major and minor text labels and vertical grid lines + * Redraw the network with the current data + * @param hidden | used to get the first estimate of the node sizes. only the nodes are drawn after which they are quickly drawn over. * @private */ - TimeAxis.prototype._repaintLabels = function () { - var orientation = this.options.orientation; - - // calculate range and step (step such that we have space for 7 characters per label) - var start = util.convert(this.body.range.start, 'Number'); - var end = util.convert(this.body.range.end, 'Number'); - var timeLabelsize = this.body.util.toTime((this.props.minorCharWidth || 10) * 7).valueOf(); - var minimumStep = timeLabelsize - DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this.body.range, timeLabelsize); - minimumStep -= this.body.util.toTime(0).valueOf(); - - var step = new TimeStep(new Date(start), new Date(end), minimumStep, this.body.hiddenDates); - if (this.options.format) { - step.setFormat(this.options.format); + Network.prototype._requestRedraw = function(hidden) { + if (this.redrawRequested !== true) { + this.redrawRequested = true; + if (this.requiresTimeout === true) { + window.setTimeout(this._redraw.bind(this, hidden),0); + } + else { + window.requestAnimationFrame(this._redraw.bind(this, hidden, true)); + } } - if (this.options.timeAxis) { - step.setScale(this.options.timeAxis); + }; + + Network.prototype._redraw = function(hidden, requested) { + if (hidden === undefined) { + hidden = false; } - this.step = step; + this.redrawRequested = false; + var ctx = this.frame.canvas.getContext('2d'); - // Move all DOM elements to a "redundant" list, where they - // can be picked for re-use, and clear the lists with lines and texts. - // At the end of the function _repaintLabels, left over elements will be cleaned up - var dom = this.dom; - dom.redundant.lines = dom.lines; - dom.redundant.majorTexts = dom.majorTexts; - dom.redundant.minorTexts = dom.minorTexts; - dom.lines = []; - dom.majorTexts = []; - dom.minorTexts = []; + ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); - var cur; - var x = 0; - var isMajor; - var xPrev = 0; - var width = 0; - var prevLine; - var xFirstMajorLabel = undefined; - var max = 0; - var className; + // clear the canvas + var w = this.frame.canvas.clientWidth; + var h = this.frame.canvas.clientHeight; + ctx.clearRect(0, 0, w, h); - step.first(); - while (step.hasNext() && max < 1000) { - max++; + // set scaling and translation + ctx.save(); + ctx.translate(this.translation.x, this.translation.y); + ctx.scale(this.scale, this.scale); - cur = step.getCurrent(); - isMajor = step.isMajor(); - className = step.getClassName(); + this.canvasTopLeft = { + "x": this._XconvertDOMtoCanvas(0), + "y": this._YconvertDOMtoCanvas(0) + }; + this.canvasBottomRight = { + "x": this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth), + "y": this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight) + }; - xPrev = x; - x = this.body.util.toScreen(cur); - width = x - xPrev; - if (prevLine) { - prevLine.style.width = width + 'px'; + if (hidden === false) { + this._doInAllSectors("_drawAllSectorNodes", ctx); + if (this.drag.dragging == false || this.drag.dragging === undefined || this.constants.hideEdgesOnDrag == false) { + this._doInAllSectors("_drawEdges", ctx); } + } - if (this.options.showMinorLabels) { - this._repaintMinorText(x, step.getLabelMinor(), orientation, className); - } + if (this.drag.dragging == false || this.drag.dragging === undefined || this.constants.hideNodesOnDrag == false) { + this._doInAllSectors("_drawNodes",ctx,false); + } - if (isMajor && this.options.showMajorLabels) { - if (x > 0) { - if (xFirstMajorLabel == undefined) { - xFirstMajorLabel = x; - } - this._repaintMajorText(x, step.getLabelMajor(), orientation, className); - } - prevLine = this._repaintMajorLine(x, orientation, className); - } - else { - prevLine = this._repaintMinorLine(x, orientation, className); + if (hidden === false) { + if (this.controlNodesActive == true) { + this._doInAllSectors("_drawControlNodes", ctx); } - - step.next(); } - // create a major label on the left when needed - if (this.options.showMajorLabels) { - var leftTime = this.body.util.toTime(0), - leftText = step.getLabelMajor(leftTime), - widthText = leftText.length * (this.props.majorCharWidth || 10) + 10; // upper bound estimation + // this._doInSupportSector("_drawNodes",ctx,true); + // this._drawTree(ctx,"#F00F0F"); - if (xFirstMajorLabel == undefined || widthText < xFirstMajorLabel) { - this._repaintMajorText(0, leftText, orientation, className); - } - } + // restore original scaling and translation + ctx.restore(); - // Cleanup leftover DOM elements from the redundant list - util.forEach(this.dom.redundant, function (arr) { - while (arr.length) { - var elem = arr.pop(); - if (elem && elem.parentNode) { - elem.parentNode.removeChild(elem); - } - } - }); - }; + if (hidden === true) { + ctx.clearRect(0, 0, w, h); + } + } /** - * Create a minor label for the axis at position x - * @param {Number} x - * @param {String} text - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className + * Set the translation of the network + * @param {Number} offsetX Horizontal offset + * @param {Number} offsetY Vertical offset * @private */ - TimeAxis.prototype._repaintMinorText = function (x, text, orientation, className) { - // reuse redundant label - var label = this.dom.redundant.minorTexts.shift(); - - if (!label) { - // create new label - var content = document.createTextNode(''); - label = document.createElement('div'); - label.appendChild(content); - this.dom.foreground.appendChild(label); + Network.prototype._setTranslation = function(offsetX, offsetY) { + if (this.translation === undefined) { + this.translation = { + x: 0, + y: 0 + }; } - this.dom.minorTexts.push(label); - label.childNodes[0].nodeValue = text; + if (offsetX !== undefined) { + this.translation.x = offsetX; + } + if (offsetY !== undefined) { + this.translation.y = offsetY; + } - label.style.top = (orientation == 'top') ? (this.props.majorLabelHeight + 'px') : '0'; - label.style.left = x + 'px'; - label.className = 'text minor ' + className; - //label.title = title; // TODO: this is a heavy operation + this.emit('viewChanged'); }; /** - * Create a Major label for the axis at position x - * @param {Number} x - * @param {String} text - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className + * Get the translation of the network + * @return {Object} translation An object with parameters x and y, both a number * @private */ - TimeAxis.prototype._repaintMajorText = function (x, text, orientation, className) { - // reuse redundant label - var label = this.dom.redundant.majorTexts.shift(); - - if (!label) { - // create label - var content = document.createTextNode(text); - label = document.createElement('div'); - label.appendChild(content); - this.dom.foreground.appendChild(label); - } - this.dom.majorTexts.push(label); - - label.childNodes[0].nodeValue = text; - label.className = 'text major ' + className; - //label.title = title; // TODO: this is a heavy operation + Network.prototype._getTranslation = function() { + return { + x: this.translation.x, + y: this.translation.y + }; + }; - label.style.top = (orientation == 'top') ? '0' : (this.props.minorLabelHeight + 'px'); - label.style.left = x + 'px'; + /** + * Scale the network + * @param {Number} scale Scaling factor 1.0 is unscaled + * @private + */ + Network.prototype._setScale = function(scale) { + this.scale = scale; }; /** - * Create a minor line for the axis at position x - * @param {Number} x - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className - * @return {Element} Returns the created line + * Get the current scale of the network + * @return {Number} scale Scaling factor 1.0 is unscaled * @private */ - TimeAxis.prototype._repaintMinorLine = function (x, orientation, className) { - // reuse redundant line - var line = this.dom.redundant.lines.shift(); - if (!line) { - // create vertical line - line = document.createElement('div'); - this.dom.background.appendChild(line); - } - this.dom.lines.push(line); + Network.prototype._getScale = function() { + return this.scale; + }; - var props = this.props; - if (orientation == 'top') { - line.style.top = props.majorLabelHeight + 'px'; - } - else { - line.style.top = this.body.domProps.top.height + 'px'; - } - line.style.height = props.minorLineHeight + 'px'; - line.style.left = (x - props.minorLineWidth / 2) + 'px'; + /** + * Convert the X coordinate in DOM-space (coordinate point in browser relative to the container div) to + * the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon) + * @param {number} x + * @returns {number} + * @private + */ + Network.prototype._XconvertDOMtoCanvas = function(x) { + return (x - this.translation.x) / this.scale; + }; - line.className = 'grid vertical minor ' + className; + /** + * Convert the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon) to + * the X coordinate in DOM-space (coordinate point in browser relative to the container div) + * @param {number} x + * @returns {number} + * @private + */ + Network.prototype._XconvertCanvasToDOM = function(x) { + return x * this.scale + this.translation.x; + }; - return line; + /** + * Convert the Y coordinate in DOM-space (coordinate point in browser relative to the container div) to + * the Y coordinate in canvas-space (the simulation sandbox, which the camera looks upon) + * @param {number} y + * @returns {number} + * @private + */ + Network.prototype._YconvertDOMtoCanvas = function(y) { + return (y - this.translation.y) / this.scale; }; /** - * Create a Major line for the axis at position x - * @param {Number} x - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className - * @return {Element} Returns the created line + * Convert the Y coordinate in canvas-space (the simulation sandbox, which the camera looks upon) to + * the Y coordinate in DOM-space (coordinate point in browser relative to the container div) + * @param {number} y + * @returns {number} * @private */ - TimeAxis.prototype._repaintMajorLine = function (x, orientation, className) { - // reuse redundant line - var line = this.dom.redundant.lines.shift(); - if (!line) { - // create vertical line - line = document.createElement('div'); - this.dom.background.appendChild(line); - } - this.dom.lines.push(line); + Network.prototype._YconvertCanvasToDOM = function(y) { + return y * this.scale + this.translation.y ; + }; - var props = this.props; - if (orientation == 'top') { - line.style.top = '0'; - } - else { - line.style.top = this.body.domProps.top.height + 'px'; - } - line.style.left = (x - props.majorLineWidth / 2) + 'px'; - line.style.height = props.majorLineHeight + 'px'; - line.className = 'grid vertical major ' + className; + /** + * + * @param {object} pos = {x: number, y: number} + * @returns {{x: number, y: number}} + * @constructor + */ + Network.prototype.canvasToDOM = function (pos) { + return {x: this._XconvertCanvasToDOM(pos.x), y: this._YconvertCanvasToDOM(pos.y)}; + }; - return line; + /** + * + * @param {object} pos = {x: number, y: number} + * @returns {{x: number, y: number}} + * @constructor + */ + Network.prototype.DOMtoCanvas = function (pos) { + return {x: this._XconvertDOMtoCanvas(pos.x), y: this._YconvertDOMtoCanvas(pos.y)}; }; /** - * Determine the size of text on the axis (both major and minor axis). - * The size is calculated only once and then cached in this.props. + * Redraw all nodes + * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); + * @param {CanvasRenderingContext2D} ctx + * @param {Boolean} [alwaysShow] * @private */ - TimeAxis.prototype._calculateCharSize = function () { - // Note: We calculate char size with every redraw. Size may change, for - // example when any of the timelines parents had display:none for example. + Network.prototype._drawNodes = function(ctx,alwaysShow) { + if (alwaysShow === undefined) { + alwaysShow = false; + } - // determine the char width and height on the minor axis - if (!this.dom.measureCharMinor) { - this.dom.measureCharMinor = document.createElement('DIV'); - this.dom.measureCharMinor.className = 'text minor measure'; - this.dom.measureCharMinor.style.position = 'absolute'; + // first draw the unselected nodes + var nodes = this.nodes; + var selected = []; - this.dom.measureCharMinor.appendChild(document.createTextNode('0')); - this.dom.foreground.appendChild(this.dom.measureCharMinor); + for (var id in nodes) { + if (nodes.hasOwnProperty(id)) { + nodes[id].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight); + if (nodes[id].isSelected()) { + selected.push(id); + } + else { + if (nodes[id].inArea() || alwaysShow) { + nodes[id].draw(ctx); + } + } + } } - this.props.minorCharHeight = this.dom.measureCharMinor.clientHeight; - this.props.minorCharWidth = this.dom.measureCharMinor.clientWidth; - - // determine the char width and height on the major axis - if (!this.dom.measureCharMajor) { - this.dom.measureCharMajor = document.createElement('DIV'); - this.dom.measureCharMajor.className = 'text major measure'; - this.dom.measureCharMajor.style.position = 'absolute'; - this.dom.measureCharMajor.appendChild(document.createTextNode('0')); - this.dom.foreground.appendChild(this.dom.measureCharMajor); + // draw the selected nodes on top + for (var s = 0, sMax = selected.length; s < sMax; s++) { + if (nodes[selected[s]].inArea() || alwaysShow) { + nodes[selected[s]].draw(ctx); + } } - this.props.majorCharHeight = this.dom.measureCharMajor.clientHeight; - this.props.majorCharWidth = this.dom.measureCharMajor.clientWidth; }; - module.exports = TimeAxis; - - -/***/ }, -/* 36 */ -/***/ function(module, exports, __webpack_require__) { - - var keycharm = __webpack_require__(37); - var Emitter = __webpack_require__(11); - var Hammer = __webpack_require__(19); - var util = __webpack_require__(1); - /** - * Turn an element into an clickToUse element. - * When not active, the element has a transparent overlay. When the overlay is - * clicked, the mode is changed to active. - * When active, the element is displayed with a blue border around it, and - * the interactive contents of the element can be used. When clicked outside - * the element, the elements mode is changed to inactive. - * @param {Element} container - * @constructor + * Redraw all edges + * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); + * @param {CanvasRenderingContext2D} ctx + * @private */ - function Activator(container) { - this.active = false; - - this.dom = { - container: container - }; - - this.dom.overlay = document.createElement('div'); - this.dom.overlay.className = 'overlay'; - - this.dom.container.appendChild(this.dom.overlay); - - this.hammer = Hammer(this.dom.overlay, {prevent_default: false}); - this.hammer.on('tap', this._onTapOverlay.bind(this)); - - // block all touch events (except tap) - var me = this; - var events = [ - 'touch', 'pinch', - 'doubletap', 'hold', - 'dragstart', 'drag', 'dragend', - 'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox - ]; - events.forEach(function (event) { - me.hammer.on(event, function (event) { - event.stopPropagation(); - }); - }); - - // attach a tap event to the window, in order to deactivate when clicking outside the timeline - this.windowHammer = Hammer(window, {prevent_default: false}); - this.windowHammer.on('tap', function (event) { - // deactivate when clicked outside the container - if (!_hasParent(event.target, container)) { - me.deactivate(); + Network.prototype._drawEdges = function(ctx) { + var edges = this.edges; + for (var id in edges) { + if (edges.hasOwnProperty(id)) { + var edge = edges[id]; + edge.setScale(this.scale); + if (edge.connected) { + edges[id].draw(ctx); + } } - }); - - if (this.keycharm !== undefined) { - this.keycharm.destroy(); } - this.keycharm = keycharm(); - - // keycharm listener only bounded when active) - this.escListener = this.deactivate.bind(this); - } - - // turn into an event emitter - Emitter(Activator.prototype); - - // The currently active activator - Activator.current = null; + }; /** - * Destroy the activator. Cleans up all created DOM and event listeners + * Redraw all edges + * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); + * @param {CanvasRenderingContext2D} ctx + * @private */ - Activator.prototype.destroy = function () { - this.deactivate(); - - // remove dom - this.dom.overlay.parentNode.removeChild(this.dom.overlay); - - // cleanup hammer instances - this.hammer = null; - this.windowHammer = null; - // FIXME: cleaning up hammer instances doesn't work (Timeline not removed from memory) + Network.prototype._drawControlNodes = function(ctx) { + var edges = this.edges; + for (var id in edges) { + if (edges.hasOwnProperty(id)) { + edges[id]._drawControlNodes(ctx); + } + } }; /** - * Activate the element - * Overlay is hidden, element is decorated with a blue shadow border + * Find a stable position for all nodes + * @private */ - Activator.prototype.activate = function () { - // we allow only one active activator at a time - if (Activator.current) { - Activator.current.deactivate(); + Network.prototype._stabilize = function() { + if (this.constants.freezeForStabilization == true) { + this._freezeDefinedNodes(); } - Activator.current = this; - this.active = true; - this.dom.overlay.style.display = 'none'; - util.addClassName(this.dom.container, 'vis-active'); + // find stable position + var count = 0; + while (this.moving && count < this.constants.stabilizationIterations) { + this._physicsTick(); + count++; + } - this.emit('change'); - this.emit('activate'); - // ugly hack: bind ESC after emitting the events, as the Network rebinds all - // keyboard events on a 'change' event - this.keycharm.bind('esc', this.escListener); + if (this.constants.zoomExtentOnStabilize == true) { + this.zoomExtent({duration:0}, false, true); + } + + if (this.constants.freezeForStabilization == true) { + this._restoreFrozenNodes(); + } + + this.emit("stabilizationIterationsDone"); }; /** - * Deactivate the element - * Overlay is displayed on top of the element + * When initializing and stabilizing, we can freeze nodes with a predefined position. This greatly speeds up stabilization + * because only the supportnodes for the smoothCurves have to settle. + * + * @private */ - Activator.prototype.deactivate = function () { - this.active = false; - this.dom.overlay.style.display = ''; - util.removeClassName(this.dom.container, 'vis-active'); - this.keycharm.unbind('esc', this.escListener); - - this.emit('change'); - this.emit('deactivate'); + Network.prototype._freezeDefinedNodes = function() { + var nodes = this.nodes; + for (var id in nodes) { + if (nodes.hasOwnProperty(id)) { + if (nodes[id].x != null && nodes[id].y != null) { + nodes[id].fixedData.x = nodes[id].xFixed; + nodes[id].fixedData.y = nodes[id].yFixed; + nodes[id].xFixed = true; + nodes[id].yFixed = true; + } + } + } }; /** - * Handle a tap event: activate the container - * @param event + * Unfreezes the nodes that have been frozen by _freezeDefinedNodes. + * * @private */ - Activator.prototype._onTapOverlay = function (event) { - // activate the container - this.activate(); - event.stopPropagation(); + Network.prototype._restoreFrozenNodes = function() { + var nodes = this.nodes; + for (var id in nodes) { + if (nodes.hasOwnProperty(id)) { + if (nodes[id].fixedData.x != null) { + nodes[id].xFixed = nodes[id].fixedData.x; + nodes[id].yFixed = nodes[id].fixedData.y; + } + } + } }; + /** - * Test whether the element has the requested parent element somewhere in - * its chain of parent nodes. - * @param {HTMLElement} element - * @param {HTMLElement} parent - * @returns {boolean} Returns true when the parent is found somewhere in the - * chain of parent nodes. + * Check if any of the nodes is still moving + * @param {number} vmin the minimum velocity considered as 'moving' + * @return {boolean} true if moving, false if non of the nodes is moving * @private */ - function _hasParent(element, parent) { - while (element) { - if (element === parent) { - return true + Network.prototype._isMoving = function(vmin) { + var nodes = this.nodes; + for (var id in nodes) { + if (nodes[id] !== undefined) { + if (nodes[id].isMoving(vmin) == true) { + return true; + } } - element = element.parentNode; } return false; - } - - module.exports = Activator; - + }; -/***/ }, -/* 37 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; /** - * Created by Alex on 11/6/2014. + * /** + * Perform one discrete step for all nodes + * + * @private */ + Network.prototype._discreteStepNodes = function() { + var interval = this.physicsDiscreteStepsize; + var nodes = this.nodes; + var nodeId; + var nodesPresent = false; - // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 - // if the module has no dependencies, the above pattern can be simplified to - (function (root, factory) { - if (true) { - // AMD. Register as an anonymous module. - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (typeof exports === 'object') { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(); - } else { - // Browser globals (root is window) - root.keycharm = factory(); + if (this.constants.maxVelocity > 0) { + for (nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + nodes[nodeId].discreteStepLimited(interval, this.constants.maxVelocity); + nodesPresent = true; + } + } + } + else { + for (nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + nodes[nodeId].discreteStep(interval); + nodesPresent = true; + } + } } - }(this, function () { - - function keycharm(options) { - var preventDefault = options && options.preventDefault || false; - - var container = options && options.container || window; - - var _exportFunctions = {}; - var _bound = {keydown:{}, keyup:{}}; - var _keys = {}; - var i; - - // a - z - for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} - // A - Z - for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} - // 0 - 9 - for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} - // F1 - F12 - for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} - // num0 - num9 - for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} - - // numpad misc - _keys['num*'] = {code:106, shift: false}; - _keys['num+'] = {code:107, shift: false}; - _keys['num-'] = {code:109, shift: false}; - _keys['num/'] = {code:111, shift: false}; - _keys['num.'] = {code:110, shift: false}; - // arrows - _keys['left'] = {code:37, shift: false}; - _keys['up'] = {code:38, shift: false}; - _keys['right'] = {code:39, shift: false}; - _keys['down'] = {code:40, shift: false}; - // extra keys - _keys['space'] = {code:32, shift: false}; - _keys['enter'] = {code:13, shift: false}; - _keys['shift'] = {code:16, shift: undefined}; - _keys['esc'] = {code:27, shift: false}; - _keys['backspace'] = {code:8, shift: false}; - _keys['tab'] = {code:9, shift: false}; - _keys['ctrl'] = {code:17, shift: false}; - _keys['alt'] = {code:18, shift: false}; - _keys['delete'] = {code:46, shift: false}; - _keys['pageup'] = {code:33, shift: false}; - _keys['pagedown'] = {code:34, shift: false}; - // symbols - _keys['='] = {code:187, shift: false}; - _keys['-'] = {code:189, shift: false}; - _keys[']'] = {code:221, shift: false}; - _keys['['] = {code:219, shift: false}; - - - var down = function(event) {handleEvent(event,'keydown');}; - var up = function(event) {handleEvent(event,'keyup');}; + if (nodesPresent == true) { + var vminCorrected = this.constants.minVelocity / Math.max(this.scale,0.05); + if (vminCorrected > 0.5*this.constants.maxVelocity) { + return true; + } + else { + return this._isMoving(vminCorrected); + } + } + return false; + }; - // handle the actualy bound key with the event - var handleEvent = function(event,type) { - if (_bound[type][event.keyCode] !== undefined) { - var bound = _bound[type][event.keyCode]; - for (var i = 0; i < bound.length; i++) { - if (bound[i].shift === undefined) { - bound[i].fn(event); - } - else if (bound[i].shift == true && event.shiftKey == true) { - bound[i].fn(event); - } - else if (bound[i].shift == false && event.shiftKey == false) { - bound[i].fn(event); - } - } - if (preventDefault == true) { - event.preventDefault(); - } - } - }; + Network.prototype._revertPhysicsState = function() { + var nodes = this.nodes; + for (var nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + nodes[nodeId].revertPosition(); + } + } + } - // bind a key to a callback - _exportFunctions.bind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (_bound[type][_keys[key].code] === undefined) { - _bound[type][_keys[key].code] = []; - } - _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); - }; + Network.prototype._revertPhysicsTick = function() { + this._doInAllActiveSectors("_revertPhysicsState"); + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this._doInSupportSector("_revertPhysicsState"); + } + } + /** + * A single simulation step (or "tick") in the physics simulation + * + * @private + */ + Network.prototype._physicsTick = function() { + if (!this.freezeSimulationEnabled) { + if (this.moving == true) { + var mainMovingStatus = false; + var supportMovingStatus = false; - // bind all keys to a call back (demo purposes) - _exportFunctions.bindAll = function(callback, type) { - if (type === undefined) { - type = 'keydown'; - } - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - _exportFunctions.bind(key,callback,type); - } + this._doInAllActiveSectors("_initializeForceCalculation"); + var mainMoving = this._doInAllActiveSectors("_discreteStepNodes"); + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + supportMovingStatus = this._doInSupportSector("_discreteStepNodes"); } - }; - // get the key label from an event - _exportFunctions.getKey = function(event) { - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { - return key; - } - else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { - return key; - } - else if (event.keyCode == _keys[key].code && key == 'shift') { - return key; - } - } + // gather movement data from all sectors, if one moves, we are NOT stabilzied + for (var i = 0; i < mainMoving.length; i++) { + mainMovingStatus = mainMoving[i] || mainMovingStatus; } - return "unknown key, currently not supported"; - }; - // unbind either a specific callback from a key or all of them (by leaving callback undefined) - _exportFunctions.unbind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (callback !== undefined) { - var newBindings = []; - var bound = _bound[type][_keys[key].code]; - if (bound !== undefined) { - for (var i = 0; i < bound.length; i++) { - if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { - newBindings.push(_bound[type][_keys[key].code][i]); - } - } - } - _bound[type][_keys[key].code] = newBindings; + // determine if the network has stabilzied + this.moving = mainMovingStatus || supportMovingStatus; + if (this.moving == false) { + this._revertPhysicsTick(); } else { - _bound[type][_keys[key].code] = []; + // this is here to ensure that there is no start event when the network is already stable. + if (this.startedStabilization == false) { + this.emit("startStabilization"); + this.startedStabilization = true; + } } - }; - // reset all bound variables. - _exportFunctions.reset = function() { - _bound = {keydown:{}, keyup:{}}; - }; + this.stabilizationIterations++; + } + } + }; - // unbind all listeners and reset all variables. - _exportFunctions.destroy = function() { - _bound = {keydown:{}, keyup:{}}; - container.removeEventListener('keydown', down, true); - container.removeEventListener('keyup', up, true); - }; - // create listeners. - container.addEventListener('keydown',down,true); - container.addEventListener('keyup',up,true); + /** + * This function runs one step of the animation. It calls an x amount of physics ticks and one render tick. + * It reschedules itself at the beginning of the function + * + * @private + */ + Network.prototype._animationStep = function() { + // reset the timer so a new scheduled animation step can be set + this.timer = undefined; - // return the public functions. - return _exportFunctions; + if (this.requiresTimeout == true) { + // this schedules a new animation step + this.start(); } - return keycharm; - })); + // handle the keyboad movement + this._handleNavigation(); + + // check if the physics have settled + if (this.moving == true) { + var startTime = Date.now(); + this._physicsTick(); + var physicsTime = Date.now() - startTime; + // run double speed if it is a little graph + if ((this.renderTimestep - this.renderTime > 2 * physicsTime || this.runDoubleSpeed == true) && this.moving == true) { + this._physicsTick(); + // this makes sure there is no jitter. The decision is taken once to run it at double speed. + if (this.renderTime != 0) { + this.runDoubleSpeed = true + } + } + } + var renderStartTime = Date.now(); + this._redraw(); + this.renderTime = Date.now() - renderStartTime; -/***/ }, -/* 38 */ -/***/ function(module, exports, __webpack_require__) { + if (this.requiresTimeout == false) { + // this schedules a new animation step + this.start(); + } + }; - var Hammer = __webpack_require__(19); - var util = __webpack_require__(1); - var Component = __webpack_require__(23); - var moment = __webpack_require__(2); - var locales = __webpack_require__(39); + if (typeof window !== 'undefined') { + window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || + window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; + } /** - * A custom time bar - * @param {{range: Range, dom: Object}} body - * @param {Object} [options] Available parameters: - * {Boolean} [showCustomTime] - * @constructor CustomTime - * @extends Component + * Schedule a animation step with the refreshrate interval. */ - - function CustomTime (body, options) { - this.body = body; - - // default options - this.defaultOptions = { - showCustomTime: false, - locales: locales, - locale: 'en', - id: 0 - }; - this.options = util.extend({}, this.defaultOptions); - - if (options && options.time) { - this.customTime = options.time; - } else { - this.customTime = new Date(); + Network.prototype.start = function() { + if (this.freezeSimulationEnabled == true) { + this.moving = false; } - - this.eventParams = {}; // stores state parameters while dragging the bar - - // create the DOM - this._create(); - - this.setOptions(options); - } - - CustomTime.prototype = new Component(); - - /** - * Set options for the component. Options will be merged in current options. - * @param {Object} options Available parameters: - * {boolean} [showCustomTime] - */ - CustomTime.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - util.selectiveExtend(['showCustomTime', 'locale', 'locales', 'id'], this.options, options); - - // Triggered by addCustomTimeBar, redraw to add new bar - if (this.options.id) { - this.redraw(); + if (this.moving == true || this.xIncrement != 0 || this.yIncrement != 0 || this.zoomIncrement != 0 || this.animating == true) { + if (!this.timer) { + if (this.requiresTimeout == true) { + this.timer = window.setTimeout(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function + } + else { + this.timer = window.requestAnimationFrame(this._animationStep.bind(this)); // wait this.renderTimeStep milliseconds and perform the animation step function + } + } + } + else { + this._requestRedraw(); + // this check is to ensure that the network does not emit these events if it was already stabilized and setOptions is called (setting moving to true and calling start()) + if (this.stabilizationIterations > 1) { + // trigger the "stabilized" event. + // The event is triggered on the next tick, to prevent the case that + // it is fired while initializing the Network, in which case you would not + // be able to catch it + var me = this; + var params = { + iterations: me.stabilizationIterations + }; + this.stabilizationIterations = 0; + this.startedStabilization = false; + setTimeout(function () { + me.emit("stabilized", params); + }, 0); + } + else { + this.stabilizationIterations = 0; } } }; + /** - * Create the DOM for the custom time + * Move the network according to the keyboard presses. + * * @private */ - CustomTime.prototype._create = function() { - var bar = document.createElement('div'); - bar.className = 'customtime'; - bar.style.position = 'absolute'; - bar.style.top = '0px'; - bar.style.height = '100%'; - this.bar = bar; - - var drag = document.createElement('div'); - drag.style.position = 'relative'; - drag.style.top = '0px'; - drag.style.left = '-10px'; - drag.style.height = '100%'; - drag.style.width = '20px'; - bar.appendChild(drag); - - // attach event listeners - this.hammer = Hammer(bar, { - prevent_default: true - }); - this.hammer.on('dragstart', this._onDragStart.bind(this)); - this.hammer.on('drag', this._onDrag.bind(this)); - this.hammer.on('dragend', this._onDragEnd.bind(this)); + Network.prototype._handleNavigation = function() { + if (this.xIncrement != 0 || this.yIncrement != 0) { + var translation = this._getTranslation(); + this._setTranslation(translation.x+this.xIncrement, translation.y+this.yIncrement); + } + if (this.zoomIncrement != 0) { + var center = { + x: this.frame.canvas.clientWidth / 2, + y: this.frame.canvas.clientHeight / 2 + }; + this._zoom(this.scale*(1 + this.zoomIncrement), center); + } }; + /** - * Destroy the CustomTime bar + * Freeze the _animationStep */ - CustomTime.prototype.destroy = function () { - this.options.showCustomTime = false; - this.redraw(); // will remove the bar from the DOM - - this.hammer.enable(false); - this.hammer = null; - - this.body = null; + Network.prototype.freezeSimulation = function(freeze) { + if (freeze == true) { + this.freezeSimulationEnabled = true; + this.moving = false; + } + else { + this.freezeSimulationEnabled = false; + this.moving = true; + this.start(); + } }; + /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * This function cleans the support nodes if they are not needed and adds them when they are. + * + * @param {boolean} [disableStart] + * @private */ - CustomTime.prototype.redraw = function () { - if (this.options.showCustomTime) { - var parent = this.body.dom.backgroundVertical; - if (this.bar.parentNode != parent) { - // attach to the dom - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); + Network.prototype._configureSmoothCurves = function(disableStart) { + if (disableStart === undefined) { + disableStart = true; + } + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this._createBezierNodes(); + // cleanup unused support nodes + for (var nodeId in this.sectors['support']['nodes']) { + if (this.sectors['support']['nodes'].hasOwnProperty(nodeId)) { + if (this.edges[this.sectors['support']['nodes'][nodeId].parentEdgeId] === undefined) { + delete this.sectors['support']['nodes'][nodeId]; + } } - parent.appendChild(this.bar); } - - var x = this.body.util.toScreen(this.customTime); - - var locale = this.options.locales[this.options.locale]; - var title = locale.time + ': ' + moment(this.customTime).format('dddd, MMMM Do YYYY, H:mm:ss'); - title = title.charAt(0).toUpperCase() + title.substring(1); - - this.bar.style.left = x + 'px'; - this.bar.title = title; } else { - // remove the line from the DOM - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); + // delete the support nodes + this.sectors['support']['nodes'] = {}; + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + this.edges[edgeId].via = null; + } } } - return false; - }; - /** - * Set custom time. - * @param {Date | number | string} time - */ - CustomTime.prototype.setCustomTime = function(time) { - this.customTime = util.convert(time, 'Date'); - this.redraw(); + this._updateCalculationNodes(); + if (!disableStart) { + this.moving = true; + this.start(); + } }; - /** - * Retrieve the current custom time. - * @return {Date} customTime - */ - CustomTime.prototype.getCustomTime = function() { - return new Date(this.customTime.valueOf()); - }; /** - * Start moving horizontally - * @param {Event} event + * Bezier curves require an anchor point to calculate the smooth flow. These points are nodes. These nodes are invisible but + * are used for the force calculation. + * * @private */ - CustomTime.prototype._onDragStart = function(event) { - this.eventParams.dragging = true; - this.eventParams.customTime = this.customTime; - - event.stopPropagation(); - event.preventDefault(); + Network.prototype._createBezierNodes = function() { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + var edge = this.edges[edgeId]; + if (edge.via == null) { + var nodeId = "edgeId:".concat(edge.id); + this.sectors['support']['nodes'][nodeId] = new Node( + {id:nodeId, + mass:1, + shape:'circle', + image:"", + internalMultiplier:1 + },{},{},this.constants); + edge.via = this.sectors['support']['nodes'][nodeId]; + edge.via.parentEdgeId = edge.id; + edge.positionBezierNode(); + } + } + } + } }; /** - * Perform moving operating. - * @param {Event} event + * load the functions that load the mixins into the prototype. + * * @private */ - CustomTime.prototype._onDrag = function (event) { - if (!this.eventParams.dragging) return; - - var deltaX = event.gesture.deltaX, - x = this.body.util.toScreen(this.eventParams.customTime) + deltaX, - time = this.body.util.toTime(x); - - this.setCustomTime(time); - - // fire a timechange event - this.body.emitter.emit('timechange', { - id: this.options.id, - time: new Date(this.customTime.valueOf()) - }); - - event.stopPropagation(); - event.preventDefault(); + Network.prototype._initializeMixinLoaders = function () { + for (var mixin in MixinLoader) { + if (MixinLoader.hasOwnProperty(mixin)) { + Network.prototype[mixin] = MixinLoader[mixin]; + } + } }; /** - * Stop moving operating. - * @param {event} event - * @private + * Load the XY positions of the nodes into the dataset. */ - CustomTime.prototype._onDragEnd = function (event) { - if (!this.eventParams.dragging) return; - - // fire a timechanged event - this.body.emitter.emit('timechanged', { - id: this.options.id, - time: new Date(this.customTime.valueOf()) - }); - - event.stopPropagation(); - event.preventDefault(); - }; - - module.exports = CustomTime; - - -/***/ }, -/* 39 */ -/***/ function(module, exports, __webpack_require__) { - - // English - exports['en'] = { - current: 'current', - time: 'time' + Network.prototype.storePosition = function() { + console.log("storePosition is depricated: use .storePositions() from now on.") + this.storePositions(); }; - exports['en_EN'] = exports['en']; - exports['en_US'] = exports['en']; - // Dutch - exports['nl'] = { - custom: 'aangepaste', - time: 'tijd' + /** + * Load the XY positions of the nodes into the dataset. + */ + Network.prototype.storePositions = function() { + var dataArray = []; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + var allowedToMoveX = !this.nodes.xFixed; + var allowedToMoveY = !this.nodes.yFixed; + if (this.nodesData._data[nodeId].x != Math.round(node.x) || this.nodesData._data[nodeId].y != Math.round(node.y)) { + dataArray.push({id:nodeId,x:Math.round(node.x),y:Math.round(node.y),allowedToMoveX:allowedToMoveX,allowedToMoveY:allowedToMoveY}); + } + } + } + this.nodesData.update(dataArray); }; - exports['nl_NL'] = exports['nl']; - exports['nl_BE'] = exports['nl']; - - -/***/ }, -/* 40 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var Component = __webpack_require__(23); - var moment = __webpack_require__(2); - var locales = __webpack_require__(39); /** - * A current time bar - * @param {{range: Range, dom: Object, domProps: Object}} body - * @param {Object} [options] Available parameters: - * {Boolean} [showCurrentTime] - * @constructor CurrentTime - * @extends Component + * Return the positions of the nodes. */ - function CurrentTime (body, options) { - this.body = body; - - // default options - this.defaultOptions = { - showCurrentTime: true, - - locales: locales, - locale: 'en' - }; - this.options = util.extend({}, this.defaultOptions); - this.offset = 0; - - this._create(); + Network.prototype.getPositions = function(ids) { + var dataArray = {}; + if (ids !== undefined) { + if (Array.isArray(ids) == true) { + for (var i = 0; i < ids.length; i++) { + if (this.nodes[ids[i]] !== undefined) { + var node = this.nodes[ids[i]]; + dataArray[ids[i]] = {x: Math.round(node.x), y: Math.round(node.y)}; + } + } + } + else { + if (this.nodes[ids] !== undefined) { + var node = this.nodes[ids]; + dataArray[ids] = {x: Math.round(node.x), y: Math.round(node.y)}; + } + } + } + else { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + dataArray[nodeId] = {x: Math.round(node.x), y: Math.round(node.y)}; + } + } + } + return dataArray; + }; - this.setOptions(options); - } - CurrentTime.prototype = new Component(); /** - * Create the HTML DOM for the current time bar - * @private + * Center a node in view. + * + * @param {Number} nodeId + * @param {Number} [options] */ - CurrentTime.prototype._create = function() { - var bar = document.createElement('div'); - bar.className = 'currenttime'; - bar.style.position = 'absolute'; - bar.style.top = '0px'; - bar.style.height = '100%'; + Network.prototype.focusOnNode = function (nodeId, options) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (options === undefined) { + options = {}; + } + var nodePosition = {x: this.nodes[nodeId].x, y: this.nodes[nodeId].y}; + options.position = nodePosition; + options.lockedOnNode = nodeId; - this.bar = bar; + this.moveTo(options) + } + else { + console.log("This nodeId cannot be found."); + } }; /** - * Destroy the CurrentTime bar + * + * @param {Object} options | options.offset = {x:Number, y:Number} // offset from the center in DOM pixels + * | options.scale = Number // scale to move to + * | options.position = {x:Number, y:Number} // position to move to + * | options.animation = {duration:Number, easingFunction:String} || Boolean // position to move to */ - CurrentTime.prototype.destroy = function () { - this.options.showCurrentTime = false; - this.redraw(); // will remove the bar from the DOM and stop refreshing + Network.prototype.moveTo = function (options) { + if (options === undefined) { + options = {}; + return; + } + if (options.offset === undefined) {options.offset = {x: 0, y: 0}; } + if (options.offset.x === undefined) {options.offset.x = 0; } + if (options.offset.y === undefined) {options.offset.y = 0; } + if (options.scale === undefined) {options.scale = this._getScale(); } + if (options.position === undefined) {options.position = this._getTranslation();} + if (options.animation === undefined) {options.animation = {duration:0}; } + if (options.animation === false ) {options.animation = {duration:0}; } + if (options.animation === true ) {options.animation = {}; } + if (options.animation.duration === undefined) {options.animation.duration = 1000; } // default duration + if (options.animation.easingFunction === undefined) {options.animation.easingFunction = "easeInOutQuad"; } // default easing function - this.body = null; + this.animateView(options); }; /** - * Set options for the component. Options will be merged in current options. - * @param {Object} options Available parameters: - * {boolean} [showCurrentTime] + * + * @param {Object} options | options.offset = {x:Number, y:Number} // offset from the center in DOM pixels + * | options.time = Number // animation time in milliseconds + * | options.scale = Number // scale to animate to + * | options.position = {x:Number, y:Number} // position to animate to + * | options.easingFunction = String // linear, easeInQuad, easeOutQuad, easeInOutQuad, + * // easeInCubic, easeOutCubic, easeInOutCubic, + * // easeInQuart, easeOutQuart, easeInOutQuart, + * // easeInQuint, easeOutQuint, easeInOutQuint */ - CurrentTime.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - util.selectiveExtend(['showCurrentTime', 'locale', 'locales'], this.options, options); + Network.prototype.animateView = function (options) { + if (options === undefined) { + options = {}; + return; } - }; - /** - * Repaint the component - * @return {boolean} Returns true if the component is resized - */ - CurrentTime.prototype.redraw = function() { - if (this.options.showCurrentTime) { - var parent = this.body.dom.backgroundVertical; - if (this.bar.parentNode != parent) { - // attach to the dom - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); - } - parent.appendChild(this.bar); + // release if something focussed on the node + this.releaseNode(); + if (options.locked == true) { + this.lockedOnNodeId = options.lockedOnNode; + this.lockedOnNodeOffset = options.offset; + } - this.start(); - } + // forcefully complete the old animation if it was still running + if (this.easingTime != 0) { + this._transitionRedraw(1); // by setting easingtime to 1, we finish the animation. + } - var now = new Date(new Date().valueOf() + this.offset); - var x = this.body.util.toScreen(now); + this.sourceScale = this._getScale(); + this.sourceTranslation = this._getTranslation(); + this.targetScale = options.scale; - var locale = this.options.locales[this.options.locale]; - var title = locale.current + ' ' + locale.time + ': ' + moment(now).format('dddd, MMMM Do YYYY, H:mm:ss'); - title = title.charAt(0).toUpperCase() + title.substring(1); + // set the scale so the viewCenter is based on the correct zoom level. This is overridden in the transitionRedraw + // but at least then we'll have the target transition + this._setScale(this.targetScale); + var viewCenter = this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); + var distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node + x: viewCenter.x - options.position.x, + y: viewCenter.y - options.position.y + }; + this.targetTranslation = { + x: this.sourceTranslation.x + distanceFromCenter.x * this.targetScale + options.offset.x, + y: this.sourceTranslation.y + distanceFromCenter.y * this.targetScale + options.offset.y + }; - this.bar.style.left = x + 'px'; - this.bar.title = title; + // if the time is set to 0, don't do an animation + if (options.animation.duration == 0) { + if (this.lockedOnNodeId != null) { + this._classicRedraw = this._redraw; + this._redraw = this._lockedRedraw; + } + else { + this._setScale(this.targetScale); + this._setTranslation(this.targetTranslation.x, this.targetTranslation.y); + this._redraw(); + } } else { - // remove the line from the DOM - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); - } - this.stop(); + this.animating = true; + this.animationSpeed = 1 / (this.renderRefreshRate * options.animation.duration * 0.001) || 1 / this.renderRefreshRate; + this.animationEasingFunction = options.animation.easingFunction; + this._classicRedraw = this._redraw; + this._redraw = this._transitionRedraw; + this._redraw(); + this.start(); } - - return false; }; /** - * Start auto refreshing the current time bar + * used to animate smoothly by hijacking the redraw function. + * @private */ - CurrentTime.prototype.start = function() { - var me = this; + Network.prototype._lockedRedraw = function () { + var nodePosition = {x: this.nodes[this.lockedOnNodeId].x, y: this.nodes[this.lockedOnNodeId].y}; + var viewCenter = this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); + var distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node + x: viewCenter.x - nodePosition.x, + y: viewCenter.y - nodePosition.y + }; + var sourceTranslation = this._getTranslation(); + var targetTranslation = { + x: sourceTranslation.x + distanceFromCenter.x * this.scale + this.lockedOnNodeOffset.x, + y: sourceTranslation.y + distanceFromCenter.y * this.scale + this.lockedOnNodeOffset.y + }; - function update () { - me.stop(); + this._setTranslation(targetTranslation.x,targetTranslation.y); + this._classicRedraw(); + } - // determine interval to refresh - var scale = me.body.range.conversion(me.body.domProps.center.width).scale; - var interval = 1 / scale / 10; - if (interval < 30) interval = 30; - if (interval > 1000) interval = 1000; + Network.prototype.releaseNode = function () { + if (this.lockedOnNodeId != null) { + this._redraw = this._classicRedraw; + this.lockedOnNodeId = null; + this.lockedOnNodeOffset = null; + } + } - me.redraw(); + /** + * + * @param easingTime + * @private + */ + Network.prototype._transitionRedraw = function (easingTime) { + this.easingTime = easingTime || this.easingTime + this.animationSpeed; + this.easingTime += this.animationSpeed; - // start a timer to adjust for the new time - me.currentTimeTimer = setTimeout(update, interval); + var progress = util.easingFunctions[this.animationEasingFunction](this.easingTime); + + this._setScale(this.sourceScale + (this.targetScale - this.sourceScale) * progress); + this._setTranslation( + this.sourceTranslation.x + (this.targetTranslation.x - this.sourceTranslation.x) * progress, + this.sourceTranslation.y + (this.targetTranslation.y - this.sourceTranslation.y) * progress + ); + + this._classicRedraw(); + + // cleanup + if (this.easingTime >= 1.0) { + this.animating = false; + this.easingTime = 0; + if (this.lockedOnNodeId != null) { + this._redraw = this._lockedRedraw; + } + else { + this._redraw = this._classicRedraw; + } + this.emit("animationFinished"); } + }; - update(); + Network.prototype._classicRedraw = function () { + // placeholder function to be overloaded by animations; }; /** - * Stop auto refreshing the current time bar + * Returns true when the Network is active. + * @returns {boolean} */ - CurrentTime.prototype.stop = function() { - if (this.currentTimeTimer !== undefined) { - clearTimeout(this.currentTimeTimer); - delete this.currentTimeTimer; - } + Network.prototype.isActive = function () { + return !this.activator || this.activator.active; }; + /** - * Set a current time. This can be used for example to ensure that a client's - * time is synchronized with a shared server time. - * @param {Date | String | Number} time A Date, unix timestamp, or - * ISO date string. + * Sets the scale + * @returns {Number} */ - CurrentTime.prototype.setCurrentTime = function(time) { - var t = util.convert(time, 'Date').valueOf(); - var now = new Date().valueOf(); - this.offset = t - now; - this.redraw(); + Network.prototype.setScale = function () { + return this._setScale(); }; + /** - * Get the current time. - * @return {Date} Returns the current time. + * Returns the scale + * @returns {Number} */ - CurrentTime.prototype.getCurrentTime = function() { - return new Date(new Date().valueOf() + this.offset); + Network.prototype.getScale = function () { + return this._getScale(); }; - module.exports = CurrentTime; + + /** + * Returns the scale + * @returns {Number} + */ + Network.prototype.getCenterCoordinates = function () { + return this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); + }; + + + Network.prototype.getBoundingBox = function(nodeId) { + if (this.nodes[nodeId] !== undefined) { + return this.nodes[nodeId].boundingBox; + } + } + + Network.prototype.getConnectedNodes = function(nodeId) { + var nodeList = []; + if (this.nodes[nodeId] !== undefined) { + var node = this.nodes[nodeId]; + var nodeObj = {nodeId : true}; // used to quickly check if node already exists + for (var i = 0; i < node.edges.length; i++) { + var edge = node.edges[i]; + if (edge.toId == nodeId) { + if (nodeObj[edge.fromId] === undefined) { + nodeList.push(edge.fromId); + nodeObj[edge.fromId] = true; + } + } + else if (edge.fromId == nodeId) { + if (nodeObj[edge.toId] === undefined) { + nodeList.push(edge.toId) + nodeObj[edge.toId] = true; + } + } + } + } + return nodeList; + } + + + Network.prototype.getEdgesFromNode = function(nodeId) { + var edgesList = []; + if (this.nodes[nodeId] !== undefined) { + var node = this.nodes[nodeId]; + for (var i = 0; i < node.edges.length; i++) { + edgesList.push(node.edges[i].id); + } + } + return edgesList; + } + + Network.prototype.generateColorObject = function(color) { + return util.parseColor(color); + + } + + module.exports = Network; /***/ }, -/* 41 */ +/* 37 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(11); - var Hammer = __webpack_require__(19); var util = __webpack_require__(1); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(9); - var Range = __webpack_require__(21); - var Core = __webpack_require__(25); - var TimeAxis = __webpack_require__(35); - var CurrentTime = __webpack_require__(40); - var CustomTime = __webpack_require__(38); - var LineGraph = __webpack_require__(42); + var Node = __webpack_require__(40); /** - * Create a timeline visualization - * @param {HTMLElement} container - * @param {vis.DataSet | Array | google.visualization.DataTable} [items] - * @param {Object} [options] See Graph2d.setOptions for the available options. - * @constructor - * @extends Core + * @class Edge + * + * A edge connects two nodes + * @param {Object} properties Object with properties. Must contain + * At least properties from and to. + * Available properties: from (number), + * to (number), label (string, color (string), + * width (number), style (string), + * length (number), title (string) + * @param {Network} network A Network object, used to find and edge to + * nodes. + * @param {Object} constants An object with default values for + * example for the color */ - function Graph2d (container, items, groups, options) { - // if the third element is options, the forth is groups (optionally); - if (!(Array.isArray(groups) || groups instanceof DataSet) && groups instanceof Object) { - var forthArgument = options; - options = groups; - groups = forthArgument; + function Edge (properties, network, networkConstants) { + if (!network) { + throw "No network provided"; } + var fields = ['edges','physics']; + var constants = util.selectiveBridgeObject(fields,networkConstants); + this.options = constants.edges; + this.physics = constants.physics; + this.options['smoothCurves'] = networkConstants['smoothCurves']; - var me = this; - this.defaultOptions = { - start: null, - end: null, - autoResize: true, + this.network = network; - orientation: 'bottom', - width: null, - height: null, - maxHeight: null, - minHeight: null - }; - this.options = util.deepExtend({}, this.defaultOptions); + // initialize variables + this.id = undefined; + this.fromId = undefined; + this.toId = undefined; + this.title = undefined; + this.widthSelected = this.options.width * this.options.widthSelectionMultiplier; + this.value = undefined; + this.selected = false; + this.hover = false; + this.labelDimensions = {top:0,left:0,width:0,height:0,yLine:0}; // could be cached + this.dirtyLabel = true; + this.colorDirty = true; - // Create the DOM, props, and emitter - this._create(container); + this.from = null; // a node + this.to = null; // a node + this.via = null; // a temp node - // all components listed here will be repainted automatically - this.components = []; + this.fromBackup = null; // used to clean up after reconnect + this.toBackup = null;; // used to clean up after reconnect - this.body = { - dom: this.dom, - domProps: this.props, - emitter: { - on: this.on.bind(this), - off: this.off.bind(this), - emit: this.emit.bind(this) - }, - hiddenDates: [], - util: { - toScreen: me._toScreen.bind(me), - toGlobalScreen: me._toGlobalScreen.bind(me), // this refers to the root.width - toTime: me._toTime.bind(me), - toGlobalTime : me._toGlobalTime.bind(me) - } - }; + // we use this to be able to reconnect the edge to a cluster if its node is put into a cluster + // by storing the original information we can revert to the original connection when the cluser is opened. + this.originalFromId = []; + this.originalToId = []; - // range - this.range = new Range(this.body); - this.components.push(this.range); - this.body.range = this.range; + this.connected = false; - // time axis - this.timeAxis = new TimeAxis(this.body); - this.components.push(this.timeAxis); - //this.body.util.snap = this.timeAxis.snap.bind(this.timeAxis); + this.widthFixed = false; + this.lengthFixed = false; - // current time bar - this.currentTime = new CurrentTime(this.body); - this.components.push(this.currentTime); + this.setProperties(properties); - // custom time bar - // Note: time bar will be attached in this.setOptions when selected - this.customTime = new CustomTime(this.body); - this.components.push(this.customTime); + this.controlNodesEnabled = false; + this.controlNodes = {from:null, to:null, positions:{}}; + this.connectedNode = null; + } - // item set - this.linegraph = new LineGraph(this.body); - this.components.push(this.linegraph); + /** + * Set or overwrite properties for the edge + * @param {Object} properties an object with properties + * @param {Object} constants and object with default, global properties + */ + Edge.prototype.setProperties = function(properties) { + this.colorDirty = true; + if (!properties) { + return; + } - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet + var fields = ['style','fontSize','fontFace','fontColor','fontFill','fontStrokeWidth','fontStrokeColor','width', + 'widthSelectionMultiplier','hoverWidth','arrowScaleFactor','dash','inheritColor','labelAlignment', 'opacity', + 'customScalingFunction','useGradients' + ]; + util.selectiveDeepExtend(fields, this.options, properties); - // apply options - if (options) { - this.setOptions(options); - } + if (properties.from !== undefined) {this.fromId = properties.from;} + if (properties.to !== undefined) {this.toId = properties.to;} - // IMPORTANT: THIS HAPPENS BEFORE SET ITEMS! - if (groups) { - this.setGroups(groups); - } + if (properties.id !== undefined) {this.id = properties.id;} + if (properties.label !== undefined) {this.label = properties.label; this.dirtyLabel = true;} - // create itemset - if (items) { - this.setItems(items); - } - else { - this._redraw(); + if (properties.title !== undefined) {this.title = properties.title;} + if (properties.value !== undefined) {this.value = properties.value;} + if (properties.length !== undefined) {this.physics.springLength = properties.length;} + + if (properties.color !== undefined) { + this.options.inheritColor = false; + if (util.isString(properties.color)) { + this.options.color.color = properties.color; + this.options.color.highlight = properties.color; + } + else { + if (properties.color.color !== undefined) {this.options.color.color = properties.color.color;} + if (properties.color.highlight !== undefined) {this.options.color.highlight = properties.color.highlight;} + if (properties.color.hover !== undefined) {this.options.color.hover = properties.color.hover;} + } } - } - // Extend the functionality from Core - Graph2d.prototype = new Core(); - /** - * Set items - * @param {vis.DataSet | Array | google.visualization.DataTable | null} items - */ - Graph2d.prototype.setItems = function(items) { - var initialLoad = (this.itemsData == null); - // convert to type DataSet when needed - var newDataSet; - if (!items) { - newDataSet = null; - } - else if (items instanceof DataSet || items instanceof DataView) { - newDataSet = items; - } - else { - // turn an array into a dataset - newDataSet = new DataSet(items, { - type: { - start: 'Date', - end: 'Date' - } - }); - } + // A node is connected when it has a from and to node. + this.connect(); - // set items - this.itemsData = newDataSet; - this.linegraph && this.linegraph.setItems(newDataSet); + this.widthFixed = this.widthFixed || (properties.width !== undefined); + this.lengthFixed = this.lengthFixed || (properties.length !== undefined); - if (initialLoad) { - if (this.options.start != undefined || this.options.end != undefined) { - var start = this.options.start != undefined ? this.options.start : null; - var end = this.options.end != undefined ? this.options.end : null; + this.widthSelected = this.options.width* this.options.widthSelectionMultiplier; - this.setWindow(start, end, {animate: false}); - } - else { - this.fit({animate: false}); - } + // set draw method based on style + switch (this.options.style) { + case 'line': this.draw = this._drawLine; break; + case 'arrow': this.draw = this._drawArrow; break; + case 'arrow-center': this.draw = this._drawArrowCenter; break; + case 'dash-line': this.draw = this._drawDashLine; break; + default: this.draw = this._drawLine; break; } }; + /** - * Set groups - * @param {vis.DataSet | Array | google.visualization.DataTable} groups + * Connect an edge to its nodes */ - Graph2d.prototype.setGroups = function(groups) { - // convert to type DataSet when needed - var newDataSet; - if (!groups) { - newDataSet = null; - } - else if (groups instanceof DataSet || groups instanceof DataView) { - newDataSet = groups; + Edge.prototype.connect = function () { + this.disconnect(); + + this.from = this.network.nodes[this.fromId] || null; + this.to = this.network.nodes[this.toId] || null; + this.connected = (this.from && this.to); + + if (this.connected) { + this.from.attachEdge(this); + this.to.attachEdge(this); } else { - // turn an array into a dataset - newDataSet = new DataSet(groups); + if (this.from) { + this.from.detachEdge(this); + } + if (this.to) { + this.to.detachEdge(this); + } } - - this.groupsData = newDataSet; - this.linegraph.setGroups(newDataSet); }; /** - * Returns an object containing an SVG element with the icon of the group (size determined by iconWidth and iconHeight), the label of the group (content) and the yAxisOrientation of the group (left or right). - * @param groupId - * @param width - * @param height + * Disconnect an edge from its nodes */ - Graph2d.prototype.getLegend = function(groupId, width, height) { - if (width === undefined) {width = 15;} - if (height === undefined) {height = 15;} - if (this.linegraph.groups[groupId] !== undefined) { - return this.linegraph.groups[groupId].getLegend(width,height); + Edge.prototype.disconnect = function () { + if (this.from) { + this.from.detachEdge(this); + this.from = null; } - else { - return "cannot find group:" + groupId; + if (this.to) { + this.to.detachEdge(this); + this.to = null; } - } + + this.connected = false; + }; /** - * This checks if the visible option of the supplied group (by ID) is true or false. - * @param groupId - * @returns {*} + * get the title of this edge. + * @return {string} title The title of the edge, or undefined when no title + * has been set. */ - Graph2d.prototype.isGroupVisible = function(groupId) { - if (this.linegraph.groups[groupId] !== undefined) { - return (this.linegraph.groups[groupId].visible && (this.linegraph.options.groups.visibility[groupId] === undefined || this.linegraph.options.groups.visibility[groupId] == true)); - } - else { - return false; - } - } + Edge.prototype.getTitle = function() { + return typeof this.title === "function" ? this.title() : this.title; + }; /** - * Get the data range of the item set. - * @returns {{min: Date, max: Date}} range A range with a start and end Date. - * When no minimum is found, min==null - * When no maximum is found, max==null + * Retrieve the value of the edge. Can be undefined + * @return {Number} value */ - Graph2d.prototype.getItemRange = function() { - var min = null; - var max = null; + Edge.prototype.getValue = function() { + return this.value; + }; - // calculate min from start filed - for (var groupId in this.linegraph.groups) { - if (this.linegraph.groups.hasOwnProperty(groupId)) { - if (this.linegraph.groups[groupId].visible == true) { - for (var i = 0; i < this.linegraph.groups[groupId].itemsData.length; i++) { - var item = this.linegraph.groups[groupId].itemsData[i]; - var value = util.convert(item.x, 'Date').valueOf(); - min = min == null ? value : min > value ? value : min; - max = max == null ? value : max < value ? value : max; - } - } - } + /** + * Adjust the value range of the edge. The edge will adjust it's width + * based on its value. + * @param {Number} min + * @param {Number} max + */ + Edge.prototype.setValueRange = function(min, max, total) { + if (!this.widthFixed && this.value !== undefined) { + var scale = this.options.customScalingFunction(min, max, total, this.value); + var widthDiff = this.options.widthMax - this.options.widthMin; + this.options.width = this.options.widthMin + scale * widthDiff; + this.widthSelected = this.options.width* this.options.widthSelectionMultiplier; } - - return { - min: (min != null) ? new Date(min) : null, - max: (max != null) ? new Date(max) : null - }; }; - - - module.exports = Graph2d; - - -/***/ }, -/* 42 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(6); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(9); - var Component = __webpack_require__(23); - var DataAxis = __webpack_require__(43); - var GraphGroup = __webpack_require__(45); - var Legend = __webpack_require__(49); - var BarGraphFunctions = __webpack_require__(48); - - var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items + /** + * Redraw a edge + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + */ + Edge.prototype.draw = function(ctx) { + throw "Method draw not initialized in edge"; + }; /** - * This is the constructor of the LineGraph. It requires a Timeline body and options. - * - * @param body - * @param options - * @constructor + * Check if this object is overlapping with the provided object + * @param {Object} obj an object with parameters left, top + * @return {boolean} True if location is located on the edge */ - function LineGraph(body, options) { - this.id = util.randomUUID(); - this.body = body; + Edge.prototype.isOverlappingWith = function(obj) { + if (this.connected) { + var distMax = 10; + var xFrom = this.from.x; + var yFrom = this.from.y; + var xTo = this.to.x; + var yTo = this.to.y; + var xObj = obj.left; + var yObj = obj.top; - this.defaultOptions = { - yAxisOrientation: 'left', - defaultGroup: 'default', - sort: true, - sampling: true, - graphHeight: '400px', - shaded: { - enabled: false, - orientation: 'bottom' // top, bottom - }, - style: 'line', // line, bar - barChart: { - width: 50, - handleOverlap: 'overlap', - align: 'center' // left, center, right - }, - catmullRom: { - enabled: true, - parametrization: 'centripetal', // uniform (alpha = 0.0), chordal (alpha = 1.0), centripetal (alpha = 0.5) - alpha: 0.5 - }, - drawPoints: { - enabled: true, - size: 6, - style: 'square' // square, circle - }, - dataAxis: { - showMinorLabels: true, - showMajorLabels: true, - icons: false, - width: '40px', - visible: true, - alignZeros: true, - customRange: { - left: {min:undefined, max:undefined}, - right: {min:undefined, max:undefined} - } - //, these options are not set by default, but this shows the format they will be in - //format: { - // left: {decimals: 2}, - // right: {decimals: 2} - //}, - //title: { - // left: { - // text: 'left', - // style: 'color:black;' - // }, - // right: { - // text: 'right', - // style: 'color:black;' - // } - //} - }, - legend: { - enabled: false, - icons: true, - left: { - visible: true, - position: 'top-left' // top/bottom - left,right - }, - right: { - visible: true, - position: 'top-right' // top/bottom - left,right - } - }, - groups: { - visibility: {} - } - }; + var dist = this._getDistanceToEdge(xFrom, yFrom, xTo, yTo, xObj, yObj); - // options is shared by this ItemSet and all its items - this.options = util.extend({}, this.defaultOptions); - this.dom = {}; - this.props = {}; - this.hammer = null; - this.groups = {}; - this.abortedGraphUpdate = false; - this.updateSVGheight = false; - this.updateSVGheightOnResize = false; + return (dist < distMax); + } + else { + return false + } + }; - var me = this; - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet + Edge.prototype._getColor = function(ctx) { + var colorObj = this.options.color; + if (this.options.useGradients == true) { + var grd = ctx.createLinearGradient(this.from.x, this.from.y, this.to.x, this.to.y); + var fromColor, toColor; + fromColor = this.from.options.color.highlight.border; + toColor = this.to.options.color.highlight.border; - // listeners for the DataSet of the items - this.itemListeners = { - 'add': function (event, params, senderId) { - me._onAdd(params.items); - }, - 'update': function (event, params, senderId) { - me._onUpdate(params.items); - }, - 'remove': function (event, params, senderId) { - me._onRemove(params.items); - } - }; - // listeners for the DataSet of the groups - this.groupListeners = { - 'add': function (event, params, senderId) { - me._onAddGroups(params.items); - }, - 'update': function (event, params, senderId) { - me._onUpdateGroups(params.items); - }, - 'remove': function (event, params, senderId) { - me._onRemoveGroups(params.items); + if (this.from.selected == false && this.to.selected == false) { + fromColor = util.overrideOpacity(this.from.options.color.border, this.options.opacity); + toColor = util.overrideOpacity(this.to.options.color.border, this.options.opacity); } - }; + else if (this.from.selected == true && this.to.selected == false) { + toColor = this.to.options.color.border; + } + else if (this.from.selected == false && this.to.selected == true) { + fromColor = this.from.options.color.border; + } + grd.addColorStop(0, fromColor); + grd.addColorStop(1, toColor); + return grd; + } - this.items = {}; // object with an Item for every data item - this.selection = []; // list with the ids of all selected nodes - this.lastStart = this.body.range.start; - this.touchParams = {}; // stores properties while dragging + if (this.colorDirty === true) { + if (this.options.inheritColor == "to") { + colorObj = { + highlight: this.to.options.color.highlight.border, + hover: this.to.options.color.hover.border, + color: util.overrideOpacity(this.from.options.color.border, this.options.opacity) + }; + } + else if (this.options.inheritColor == "from" || this.options.inheritColor == true) { + colorObj = { + highlight: this.from.options.color.highlight.border, + hover: this.from.options.color.hover.border, + color: util.overrideOpacity(this.from.options.color.border, this.options.opacity) + }; + } + this.options.color = colorObj; + this.colorDirty = false; + } - this.svgElements = {}; - this.setOptions(options); - this.groupsUsingDefaultStyles = [0]; - this.COUNTER = 0; - this.body.emitter.on('rangechanged', function() { - me.lastStart = me.body.range.start; - me.svg.style.left = util.option.asSize(-me.props.width); - me.redraw.call(me,true); - }); - // create the HTML DOM - this._create(); - this.framework = {svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups}; - this.body.emitter.emit('change'); - } + if (this.selected == true) {return colorObj.highlight;} + else if (this.hover == true) {return colorObj.hover;} + else {return colorObj.color;} + }; - LineGraph.prototype = new Component(); /** - * Create the HTML DOM for the ItemSet + * Redraw a edge as a line + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + * @private */ - LineGraph.prototype._create = function(){ - var frame = document.createElement('div'); - frame.className = 'LineGraph'; - this.dom.frame = frame; - - // create svg element for graph drawing. - this.svg = document.createElementNS('http://www.w3.org/2000/svg','svg'); - this.svg.style.position = 'relative'; - this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; - this.svg.style.display = 'block'; - frame.appendChild(this.svg); - - // data axis - this.options.dataAxis.orientation = 'left'; - this.yAxisLeft = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); - - this.options.dataAxis.orientation = 'right'; - this.yAxisRight = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); - delete this.options.dataAxis.orientation; + Edge.prototype._drawLine = function(ctx) { + // set style + ctx.strokeStyle = this._getColor(ctx); + ctx.lineWidth = this._getLineWidth(); - // legends - this.legendLeft = new Legend(this.body, this.options.legend, 'left', this.options.groups); - this.legendRight = new Legend(this.body, this.options.legend, 'right', this.options.groups); + if (this.from != this.to) { + // draw line + var via = this._line(ctx); - this.show(); + // draw label + var point; + if (this.label) { + if (this.options.smoothCurves.enabled == true && via != null) { + var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); + var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); + point = {x:midpointX, y:midpointY}; + } + else { + point = this._pointOnLine(0.5); + } + this._label(ctx, this.label, point.x, point.y); + } + } + else { + var x, y; + var radius = this.physics.springLength / 4; + var node = this.from; + if (!node.width) { + node.resize(ctx); + } + if (node.width > node.height) { + x = node.x + node.width / 2; + y = node.y - radius; + } + else { + x = node.x + radius; + y = node.y - node.height / 2; + } + this._circle(ctx, x, y, radius); + point = this._pointOnCircle(x, y, radius, 0.5); + this._label(ctx, this.label, point.x, point.y); + } }; /** - * set the options of the LineGraph. the mergeOptions is used for subObjects that have an enabled element. - * @param {object} options + * Get the line width of the edge. Depends on width and whether one of the + * connected nodes is selected. + * @return {Number} width + * @private */ - LineGraph.prototype.setOptions = function(options) { - if (options) { - var fields = ['sampling','defaultGroup','height','graphHeight','yAxisOrientation','style','barChart','dataAxis','sort','groups']; - if (options.graphHeight === undefined && options.height !== undefined && this.body.domProps.centerContainer.height !== undefined) { - this.updateSVGheight = true; - this.updateSVGheightOnResize = true; + Edge.prototype._getLineWidth = function() { + if (this.selected == true) { + return Math.max(Math.min(this.widthSelected, this.options.widthMax), 0.3*this.networkScaleInv); + } + else { + if (this.hover == true) { + return Math.max(Math.min(this.options.hoverWidth, this.options.widthMax), 0.3*this.networkScaleInv); } - else if (this.body.domProps.centerContainer.height !== undefined && options.graphHeight !== undefined) { - if (parseInt((options.graphHeight + '').replace("px",'')) < this.body.domProps.centerContainer.height) { - this.updateSVGheight = true; - } + else { + return Math.max(this.options.width, 0.3*this.networkScaleInv); } - util.selectiveDeepExtend(fields, this.options, options); - util.mergeOptions(this.options, options,'catmullRom'); - util.mergeOptions(this.options, options,'drawPoints'); - util.mergeOptions(this.options, options,'shaded'); - util.mergeOptions(this.options, options,'legend'); + } + }; - if (options.catmullRom) { - if (typeof options.catmullRom == 'object') { - if (options.catmullRom.parametrization) { - if (options.catmullRom.parametrization == 'uniform') { - this.options.catmullRom.alpha = 0; + Edge.prototype._getViaCoordinates = function () { + if (this.options.smoothCurves.dynamic == true && this.options.smoothCurves.enabled == true ) { + return this.via; + } + else if (this.options.smoothCurves.enabled == false) { + return {x:0,y:0}; + } + else { + var xVia = null; + var yVia = null; + var factor = this.options.smoothCurves.roundness; + var type = this.options.smoothCurves.type; + var dx = Math.abs(this.from.x - this.to.x); + var dy = Math.abs(this.from.y - this.to.y); + if (type == 'discrete' || type == 'diagonalCross') { + if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { + if (this.from.y > this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dy; + yVia = this.from.y - factor * dy; } - else if (options.catmullRom.parametrization == 'chordal') { - this.options.catmullRom.alpha = 1.0; + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dy; + yVia = this.from.y - factor * dy; } - else { - this.options.catmullRom.parametrization = 'centripetal'; - this.options.catmullRom.alpha = 0.5; + } + else if (this.from.y < this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dy; + yVia = this.from.y + factor * dy; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dy; + yVia = this.from.y + factor * dy; + } + } + if (type == "discrete") { + xVia = dx < factor * dy ? this.from.x : xVia; + } + } + else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { + if (this.from.y > this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dx; + yVia = this.from.y - factor * dx; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dx; + yVia = this.from.y - factor * dx; + } + } + else if (this.from.y < this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dx; + yVia = this.from.y + factor * dx; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dx; + yVia = this.from.y + factor * dx; } } + if (type == "discrete") { + yVia = dy < factor * dx ? this.from.y : yVia; + } } } - - if (this.yAxisLeft) { - if (options.dataAxis !== undefined) { - this.yAxisLeft.setOptions(this.options.dataAxis); - this.yAxisRight.setOptions(this.options.dataAxis); + else if (type == "straightCross") { + if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { // up - down + xVia = this.from.x; + if (this.from.y < this.to.y) { + yVia = this.to.y - (1 - factor) * dy; + } + else { + yVia = this.to.y + (1 - factor) * dy; + } + } + else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { // left - right + if (this.from.x < this.to.x) { + xVia = this.to.x - (1 - factor) * dx; + } + else { + xVia = this.to.x + (1 - factor) * dx; + } + yVia = this.from.y; } } - - if (this.legendLeft) { - if (options.legend !== undefined) { - this.legendLeft.setOptions(this.options.legend); - this.legendRight.setOptions(this.options.legend); + else if (type == 'horizontal') { + if (this.from.x < this.to.x) { + xVia = this.to.x - (1 - factor) * dx; + } + else { + xVia = this.to.x + (1 - factor) * dx; + } + yVia = this.from.y; + } + else if (type == 'vertical') { + xVia = this.from.x; + if (this.from.y < this.to.y) { + yVia = this.to.y - (1 - factor) * dy; + } + else { + yVia = this.to.y + (1 - factor) * dy; } } + else if (type == 'curvedCW') { + var dx = this.to.x - this.from.x; + var dy = this.from.y - this.to.y; + var radius = Math.sqrt(dx*dx + dy*dy); + var pi = Math.PI; - if (this.groups.hasOwnProperty(UNGROUPED)) { - this.groups[UNGROUPED].setOptions(options); + var originalAngle = Math.atan2(dy,dx); + var myAngle = (originalAngle + ((factor * 0.5) + 0.5) * pi) % (2 * pi); + + xVia = this.from.x + (factor*0.5 + 0.5)*radius*Math.sin(myAngle); + yVia = this.from.y + (factor*0.5 + 0.5)*radius*Math.cos(myAngle); } - } + else if (type == 'curvedCCW') { + var dx = this.to.x - this.from.x; + var dy = this.from.y - this.to.y; + var radius = Math.sqrt(dx*dx + dy*dy); + var pi = Math.PI; - // this is used to redraw the graph if the visibility of the groups is changed. - if (this.dom.frame) { - this.redraw(true); - } - }; + var originalAngle = Math.atan2(dy,dx); + var myAngle = (originalAngle + ((-factor * 0.5) + 0.5) * pi) % (2 * pi); - /** - * Hide the component from the DOM - */ - LineGraph.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); - } - }; + xVia = this.from.x + (factor*0.5 + 0.5)*radius*Math.sin(myAngle); + yVia = this.from.y + (factor*0.5 + 0.5)*radius*Math.cos(myAngle); + } + else { // continuous + if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { + if (this.from.y > this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dy; + yVia = this.from.y - factor * dy; + xVia = this.to.x < xVia ? this.to.x : xVia; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dy; + yVia = this.from.y - factor * dy; + xVia = this.to.x > xVia ? this.to.x : xVia; + } + } + else if (this.from.y < this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dy; + yVia = this.from.y + factor * dy; + xVia = this.to.x < xVia ? this.to.x : xVia; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dy; + yVia = this.from.y + factor * dy; + xVia = this.to.x > xVia ? this.to.x : xVia; + } + } + } + else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { + if (this.from.y > this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dx; + yVia = this.from.y - factor * dx; + yVia = this.to.y > yVia ? this.to.y : yVia; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dx; + yVia = this.from.y - factor * dx; + yVia = this.to.y > yVia ? this.to.y : yVia; + } + } + else if (this.from.y < this.to.y) { + if (this.from.x < this.to.x) { + xVia = this.from.x + factor * dx; + yVia = this.from.y + factor * dx; + yVia = this.to.y < yVia ? this.to.y : yVia; + } + else if (this.from.x > this.to.x) { + xVia = this.from.x - factor * dx; + yVia = this.from.y + factor * dx; + yVia = this.to.y < yVia ? this.to.y : yVia; + } + } + } + } - /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed - */ - LineGraph.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); + return {x: xVia, y: yVia}; } }; - /** - * Set items - * @param {vis.DataSet | null} items - */ - LineGraph.prototype.setItems = function(items) { - var me = this, - ids, - oldItemsData = this.itemsData; - - // replace the dataset - if (!items) { - this.itemsData = null; - } - else if (items instanceof DataSet || items instanceof DataView) { - this.itemsData = items; + * Draw a line between two nodes + * @param {CanvasRenderingContext2D} ctx + * @private + */ + Edge.prototype._line = function (ctx) { + // draw a straight line + ctx.beginPath(); + ctx.moveTo(this.from.x, this.from.y); + if (this.options.smoothCurves.enabled == true) { + if (this.options.smoothCurves.dynamic == false) { + var via = this._getViaCoordinates(); + if (via.x == null) { + ctx.lineTo(this.to.x, this.to.y); + ctx.stroke(); + return null; + } + else { + // this.via.x = via.x; + // this.via.y = via.y; + ctx.quadraticCurveTo(via.x,via.y,this.to.x, this.to.y); + ctx.stroke(); + //ctx.circle(via.x,via.y,2) + //ctx.stroke(); + return via; + } + } + else { + ctx.quadraticCurveTo(this.via.x,this.via.y,this.to.x, this.to.y); + ctx.stroke(); + return this.via; + } } else { - throw new TypeError('Data must be an instance of DataSet or DataView'); - } - - if (oldItemsData) { - // unsubscribe from old dataset - util.forEach(this.itemListeners, function (callback, event) { - oldItemsData.off(event, callback); - }); - - // remove all drawn items - ids = oldItemsData.getIds(); - this._onRemove(ids); - } - - if (this.itemsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.itemListeners, function (callback, event) { - me.itemsData.on(event, callback, id); - }); - - // add all new items - ids = this.itemsData.getIds(); - this._onAdd(ids); + ctx.lineTo(this.to.x, this.to.y); + ctx.stroke(); + return null; } - this._updateUngrouped(); - //this._updateGraph(); - this.redraw(true); }; + /** + * Draw a line from a node to itself, a circle + * @param {CanvasRenderingContext2D} ctx + * @param {Number} x + * @param {Number} y + * @param {Number} radius + * @private + */ + Edge.prototype._circle = function (ctx, x, y, radius) { + // draw a circle + ctx.beginPath(); + ctx.arc(x, y, radius, 0, 2 * Math.PI, false); + ctx.stroke(); + }; /** - * Set groups - * @param {vis.DataSet} groups + * Draw label with white background and with the middle at (x, y) + * @param {CanvasRenderingContext2D} ctx + * @param {String} text + * @param {Number} x + * @param {Number} y + * @private */ - LineGraph.prototype.setGroups = function(groups) { - var me = this; - var ids; + Edge.prototype._label = function (ctx, text, x, y) { + if (text) { + ctx.font = ((this.from.selected || this.to.selected) ? "bold " : "") + + this.options.fontSize + "px " + this.options.fontFace; + var yLine; - // unsubscribe from current dataset - if (this.groupsData) { - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.unsubscribe(event, callback); - }); + if (this.dirtyLabel == true) { + var lines = String(text).split('\n'); + var lineCount = lines.length; + var fontSize = Number(this.options.fontSize); + yLine = y + (1 - lineCount) / 2 * fontSize; - // remove all drawn groups - ids = this.groupsData.getIds(); - this.groupsData = null; - this._onRemoveGroups(ids); // note: this will cause a redraw - } + var width = ctx.measureText(lines[0]).width; + for (var i = 1; i < lineCount; i++) { + var lineWidth = ctx.measureText(lines[i]).width; + width = lineWidth > width ? lineWidth : width; + } + var height = this.options.fontSize * lineCount; + var left = x - width / 2; + var top = y - height / 2; - // replace the dataset - if (!groups) { - this.groupsData = null; - } - else if (groups instanceof DataSet || groups instanceof DataView) { - this.groupsData = groups; - } - else { - throw new TypeError('Data must be an instance of DataSet or DataView'); - } + // cache + this.labelDimensions = {top:top,left:left,width:width,height:height,yLine:yLine}; + } - if (this.groupsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.on(event, callback, id); - }); + var yLine = this.labelDimensions.yLine; + + ctx.save(); + + if (this.options.labelAlignment != "horizontal"){ + ctx.translate(x, yLine); + this._rotateForLabelAlignment(ctx); + x = 0; + yLine = 0; + } - // draw all ms - ids = this.groupsData.getIds(); - this._onAddGroups(ids); + + this._drawLabelRect(ctx); + this._drawLabelText(ctx,x,yLine, lines, lineCount, fontSize); + + ctx.restore(); } - this._onUpdate(); }; - /** - * Update the data - * @param [ids] + * Rotates the canvas so the text is most readable + * @param {CanvasRenderingContext2D} ctx * @private */ - LineGraph.prototype._onUpdate = function(ids) { - this._updateUngrouped(); - this._updateAllGroupData(); - //this._updateGraph(); - this.redraw(true); - }; - LineGraph.prototype._onAdd = function (ids) {this._onUpdate(ids);}; - LineGraph.prototype._onRemove = function (ids) {this._onUpdate(ids);}; - LineGraph.prototype._onUpdateGroups = function (groupIds) { - for (var i = 0; i < groupIds.length; i++) { - var group = this.groupsData.get(groupIds[i]); - this._updateGroup(group, groupIds[i]); - } + Edge.prototype._rotateForLabelAlignment = function(ctx) { + var dy = this.from.y - this.to.y; + var dx = this.from.x - this.to.x; + var angleInDegrees = Math.atan2(dy, dx); - //this._updateGraph(); - this.redraw(true); + // rotate so label it is readable + if((angleInDegrees < -1 && dx < 0) || (angleInDegrees > 0 && dx < 0)){ + angleInDegrees = angleInDegrees + Math.PI; + } + + ctx.rotate(angleInDegrees); }; - LineGraph.prototype._onAddGroups = function (groupIds) {this._onUpdateGroups(groupIds);}; - /** - * this cleans the group out off the legends and the dataaxis, updates the ungrouped and updates the graph - * @param {Array} groupIds + * Draws the label rectangle + * @param {CanvasRenderingContext2D} ctx + * @param {String} labelAlignment * @private */ - LineGraph.prototype._onRemoveGroups = function (groupIds) { - for (var i = 0; i < groupIds.length; i++) { - if (this.groups.hasOwnProperty(groupIds[i])) { - if (this.groups[groupIds[i]].options.yAxisOrientation == 'right') { - this.yAxisRight.removeGroup(groupIds[i]); - this.legendRight.removeGroup(groupIds[i]); - this.legendRight.redraw(); - } - else { - this.yAxisLeft.removeGroup(groupIds[i]); - this.legendLeft.removeGroup(groupIds[i]); - this.legendLeft.redraw(); - } - delete this.groups[groupIds[i]]; + Edge.prototype._drawLabelRect = function(ctx) { + if (this.options.fontFill !== undefined && this.options.fontFill !== null && this.options.fontFill !== "none") { + ctx.fillStyle = this.options.fontFill; + + var lineMargin = 2; + + if (this.options.labelAlignment == 'line-center') { + ctx.fillRect(-this.labelDimensions.width * 0.5, -this.labelDimensions.height * 0.5, this.labelDimensions.width, this.labelDimensions.height); + } + else if (this.options.labelAlignment == 'line-above') { + ctx.fillRect(-this.labelDimensions.width * 0.5, -(this.labelDimensions.height + lineMargin), this.labelDimensions.width, this.labelDimensions.height); + } + else if (this.options.labelAlignment == 'line-below') { + ctx.fillRect(-this.labelDimensions.width * 0.5, lineMargin, this.labelDimensions.width, this.labelDimensions.height); + } + else { + ctx.fillRect(this.labelDimensions.left, this.labelDimensions.top, this.labelDimensions.width, this.labelDimensions.height); } } - this._updateUngrouped(); - //this._updateGraph(); - this.redraw(true); }; - /** - * update a group object with the group dataset entree - * - * @param group - * @param groupId + * Draws the label text + * @param {CanvasRenderingContext2D} ctx + * @param {Number} x + * @param {Number} yLine + * @param {Array} lines + * @param {Number} lineCount + * @param {Number} fontSize * @private */ - LineGraph.prototype._updateGroup = function (group, groupId) { - if (!this.groups.hasOwnProperty(groupId)) { - this.groups[groupId] = new GraphGroup(group, groupId, this.options, this.groupsUsingDefaultStyles); - if (this.groups[groupId].options.yAxisOrientation == 'right') { - this.yAxisRight.addGroup(groupId, this.groups[groupId]); - this.legendRight.addGroup(groupId, this.groups[groupId]); + Edge.prototype._drawLabelText = function(ctx, x, yLine, lines, lineCount, fontSize) { + // draw text + ctx.fillStyle = this.options.fontColor || "black"; + ctx.textAlign = "center"; + + // check for label alignment + if (this.options.labelAlignment != 'horizontal') { + var lineMargin = 2; + if (this.options.labelAlignment == 'line-above') { + ctx.textBaseline = "alphabetic"; + yLine -= 2 * lineMargin; // distance from edge, required because we use alphabetic. Alphabetic has less difference between browsers + } + else if (this.options.labelAlignment == 'line-below') { + ctx.textBaseline = "hanging"; + yLine += 2 * lineMargin;// distance from edge, required because we use hanging. Hanging has less difference between browsers } else { - this.yAxisLeft.addGroup(groupId, this.groups[groupId]); - this.legendLeft.addGroup(groupId, this.groups[groupId]); + ctx.textBaseline = "middle"; } } else { - this.groups[groupId].update(group); - if (this.groups[groupId].options.yAxisOrientation == 'right') { - this.yAxisRight.updateGroup(groupId, this.groups[groupId]); - this.legendRight.updateGroup(groupId, this.groups[groupId]); - } - else { - this.yAxisLeft.updateGroup(groupId, this.groups[groupId]); - this.legendLeft.updateGroup(groupId, this.groups[groupId]); - } + ctx.textBaseline = "middle"; } - this.legendLeft.redraw(); - this.legendRight.redraw(); - }; + // check for strokeWidth + if (this.options.fontStrokeWidth > 0){ + ctx.lineWidth = this.options.fontStrokeWidth; + ctx.strokeStyle = this.options.fontStrokeColor; + ctx.lineJoin = 'round'; + } + for (var i = 0; i < lineCount; i++) { + if(this.options.fontStrokeWidth > 0){ + ctx.strokeText(lines[i], x, yLine); + } + ctx.fillText(lines[i], x, yLine); + yLine += fontSize; + } + }; /** - * this updates all groups, it is used when there is an update the the itemset. - * + * Redraw a edge as a dashed line + * Draw this edge in the given canvas + * @author David Jordan + * @date 2012-08-08 + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx * @private */ - LineGraph.prototype._updateAllGroupData = function () { - if (this.itemsData != null) { - var groupsContent = {}; - var groupId; - for (groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - groupsContent[groupId] = []; - } - } - for (var itemId in this.itemsData._data) { - if (this.itemsData._data.hasOwnProperty(itemId)) { - var item = this.itemsData._data[itemId]; - if (groupsContent[item.group] === undefined) { - throw new Error('Cannot find referenced group. Possible reason: items added before groups? Groups need to be added before items, as items refer to groups.') - } - item.x = util.convert(item.x,'Date'); - groupsContent[item.group].push(item); - } + Edge.prototype._drawDashLine = function(ctx) { + // set style + ctx.strokeStyle = this._getColor(ctx); + ctx.lineWidth = this._getLineWidth(); + + var via = null; + // only firefox and chrome support this method, else we use the legacy one. + if (ctx.setLineDash !== undefined) { + ctx.save(); + // configure the dash pattern + var pattern = [0]; + if (this.options.dash.length !== undefined && this.options.dash.gap !== undefined) { + pattern = [this.options.dash.length,this.options.dash.gap]; } - for (groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - this.groups[groupId].setItems(groupsContent[groupId]); - } + else { + pattern = [5,5]; } - } - }; + // set dash settings for chrome or firefox + ctx.setLineDash(pattern); + ctx.lineDashOffset = 0; - /** - * Create or delete the group holding all ungrouped items. This group is used when - * there are no groups specified. This anonymous group is called 'graph'. - * @protected - */ - LineGraph.prototype._updateUngrouped = function() { - if (this.itemsData && this.itemsData != null) { - var ungroupedCounter = 0; - for (var itemId in this.itemsData._data) { - if (this.itemsData._data.hasOwnProperty(itemId)) { - var item = this.itemsData._data[itemId]; - if (item != undefined) { - if (item.hasOwnProperty('group')) { - if (item.group === undefined) { - item.group = UNGROUPED; - } - } - else { - item.group = UNGROUPED; - } - ungroupedCounter = item.group == UNGROUPED ? ungroupedCounter + 1 : ungroupedCounter; - } - } + // draw the line + via = this._line(ctx); + + // restore the dash settings. + ctx.setLineDash([0]); + ctx.lineDashOffset = 0; + ctx.restore(); + } + else { // unsupporting smooth lines + // draw dashed line + ctx.beginPath(); + ctx.lineCap = 'round'; + if (this.options.dash.altLength !== undefined) //If an alt dash value has been set add to the array this value + { + ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y, + [this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]); + } + else if (this.options.dash.length !== undefined && this.options.dash.gap !== undefined) //If a dash and gap value has been set add to the array this value + { + ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y, + [this.options.dash.length,this.options.dash.gap]); + } + else //If all else fails draw a line + { + ctx.moveTo(this.from.x, this.from.y); + ctx.lineTo(this.to.x, this.to.y); } + ctx.stroke(); + } - if (ungroupedCounter == 0) { - delete this.groups[UNGROUPED]; - this.legendLeft.removeGroup(UNGROUPED); - this.legendRight.removeGroup(UNGROUPED); - this.yAxisLeft.removeGroup(UNGROUPED); - this.yAxisRight.removeGroup(UNGROUPED); + // draw label + if (this.label) { + var point; + if (this.options.smoothCurves.enabled == true && via != null) { + var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); + var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); + point = {x:midpointX, y:midpointY}; } else { - var group = {id: UNGROUPED, content: this.options.defaultGroup}; - this._updateGroup(group, UNGROUPED); + point = this._pointOnLine(0.5); } + this._label(ctx, this.label, point.x, point.y); } - else { - delete this.groups[UNGROUPED]; - this.legendLeft.removeGroup(UNGROUPED); - this.legendRight.removeGroup(UNGROUPED); - this.yAxisLeft.removeGroup(UNGROUPED); - this.yAxisRight.removeGroup(UNGROUPED); - } - - this.legendLeft.redraw(); - this.legendRight.redraw(); }; - /** - * Redraw the component, mandatory function - * @return {boolean} Returns true if the component is resized + * Get a point on a line + * @param {Number} percentage. Value between 0 (line start) and 1 (line end) + * @return {Object} point + * @private */ - LineGraph.prototype.redraw = function(forceGraphUpdate) { - var resized = false; - - // calculate actual size and position - this.props.width = this.dom.frame.offsetWidth; - this.props.height = this.body.domProps.centerContainer.height; + Edge.prototype._pointOnLine = function (percentage) { + return { + x: (1 - percentage) * this.from.x + percentage * this.to.x, + y: (1 - percentage) * this.from.y + percentage * this.to.y + } + }; - // update the graph if there is no lastWidth or with, used for the initial draw - if (this.lastWidth === undefined && this.props.width) { - forceGraphUpdate = true; + /** + * Get a point on a circle + * @param {Number} x + * @param {Number} y + * @param {Number} radius + * @param {Number} percentage. Value between 0 (line start) and 1 (line end) + * @return {Object} point + * @private + */ + Edge.prototype._pointOnCircle = function (x, y, radius, percentage) { + var angle = (percentage - 3/8) * 2 * Math.PI; + return { + x: x + radius * Math.cos(angle), + y: y - radius * Math.sin(angle) } + }; - // check if this component is resized - resized = this._isResized() || resized; + /** + * Redraw a edge as a line with an arrow halfway the line + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + * @private + */ + Edge.prototype._drawArrowCenter = function(ctx) { + var point; + // set style + ctx.strokeStyle = this._getColor(ctx); + ctx.fillStyle = ctx.strokeStyle; + ctx.lineWidth = this._getLineWidth(); - // check whether zoomed (in that case we need to re-stack everything) - var visibleInterval = this.body.range.end - this.body.range.start; - var zoomed = (visibleInterval != this.lastVisibleInterval); - this.lastVisibleInterval = visibleInterval; + if (this.from != this.to) { + // draw line + var via = this._line(ctx); + var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); + var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; + // draw an arrow halfway the line + if (this.options.smoothCurves.enabled == true && via != null) { + var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); + var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); + point = {x:midpointX, y:midpointY}; + } + else { + point = this._pointOnLine(0.5); + } - // the svg element is three times as big as the width, this allows for fully dragging left and right - // without reloading the graph. the controls for this are bound to events in the constructor - if (resized == true) { - this.svg.style.width = util.option.asSize(3*this.props.width); - this.svg.style.left = util.option.asSize(-this.props.width); + ctx.arrow(point.x, point.y, angle, length); + ctx.fill(); + ctx.stroke(); - // if the height of the graph is set as proportional, change the height of the svg - if ((this.options.height + '').indexOf("%") != -1 || this.updateSVGheightOnResize == true) { - this.updateSVGheight = true; + // draw label + if (this.label) { + this._label(ctx, this.label, point.x, point.y); } } - - // update the height of the graph on each redraw of the graph. - if (this.updateSVGheight == true) { - if (this.options.graphHeight != this.body.domProps.centerContainer.height + 'px') { - this.options.graphHeight = this.body.domProps.centerContainer.height + 'px'; - this.svg.style.height = this.body.domProps.centerContainer.height + 'px'; - } - this.updateSVGheight = false; - } else { - this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; - } + // draw circle + var x, y; + var radius = 0.25 * Math.max(100,this.physics.springLength); + var node = this.from; + if (!node.width) { + node.resize(ctx); + } + if (node.width > node.height) { + x = node.x + node.width * 0.5; + y = node.y - radius; + } + else { + x = node.x + radius; + y = node.y - node.height * 0.5; + } + this._circle(ctx, x, y, radius); - // zoomed is here to ensure that animations are shown correctly. - if (resized == true || zoomed == true || this.abortedGraphUpdate == true || forceGraphUpdate == true) { - resized = this._updateGraph() || resized; - } - else { - // move the whole svg while dragging - if (this.lastStart != 0) { - var offset = this.body.range.start - this.lastStart; - var range = this.body.range.end - this.body.range.start; - if (this.props.width != 0) { - var rangePerPixelInv = this.props.width/range; - var xOffset = offset * rangePerPixelInv; - this.svg.style.left = (-this.props.width - xOffset) + 'px'; - } + // draw all arrows + var angle = 0.2 * Math.PI; + var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; + point = this._pointOnCircle(x, y, radius, 0.5); + ctx.arrow(point.x, point.y, angle, length); + ctx.fill(); + ctx.stroke(); + + // draw label + if (this.label) { + point = this._pointOnCircle(x, y, radius, 0.5); + this._label(ctx, this.label, point.x, point.y); } } - - this.legendLeft.redraw(); - this.legendRight.redraw(); - return resized; }; + Edge.prototype._pointOnBezier = function(t) { + var via = this._getViaCoordinates(); + + var x = Math.pow(1-t,2)*this.from.x + (2*t*(1 - t))*via.x + Math.pow(t,2)*this.to.x; + var y = Math.pow(1-t,2)*this.from.y + (2*t*(1 - t))*via.y + Math.pow(t,2)*this.to.y; + + return {x:x,y:y}; + } /** - * Update and redraw the graph. + * This function uses binary search to look for the point where the bezier curve crosses the border of the node. * + * @param from + * @param ctx + * @returns {*} + * @private */ - LineGraph.prototype._updateGraph = function () { - // reset the svg elements - DOMutil.prepareElements(this.svgElements); - if (this.props.width != 0 && this.itemsData != null) { - var group, i; - var preprocessedGroupData = {}; - var processedGroupData = {}; - var groupRanges = {}; - var changeCalled = false; - - // getting group Ids - var groupIds = []; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - group = this.groups[groupId]; - if (group.visible == true && (this.options.groups.visibility[groupId] === undefined || this.options.groups.visibility[groupId] == true)) { - groupIds.push(groupId); - } - } - } - if (groupIds.length > 0) { - // this is the range of the SVG canvas - var minDate = this.body.util.toGlobalTime(-this.body.domProps.root.width); - var maxDate = this.body.util.toGlobalTime(2 * this.body.domProps.root.width); - var groupsData = {}; - // fill groups data, this only loads the data we require based on the timewindow - this._getRelevantData(groupIds, groupsData, minDate, maxDate); - - // apply sampling, if disabled, it will pass through this function. - this._applySampling(groupIds, groupsData); - - // we transform the X coordinates to detect collisions - for (i = 0; i < groupIds.length; i++) { - preprocessedGroupData[groupIds[i]] = this._convertXcoordinates(groupsData[groupIds[i]]); - } + Edge.prototype._findBorderPosition = function(from,ctx) { + var maxIterations = 10; + var iteration = 0; + var low = 0; + var high = 1; + var pos,angle,distanceToBorder, distanceToNodes, difference; + var threshold = 0.2; + var node = this.to; + if (from == true) { + node = this.from; + } - // now all needed data has been collected we start the processing. - this._getYRanges(groupIds, preprocessedGroupData, groupRanges); + while (low <= high && iteration < maxIterations) { + var middle = (low + high) * 0.5; - // update the Y axis first, we use this data to draw at the correct Y points - // changeCalled is required to clean the SVG on a change emit. - changeCalled = this._updateYAxis(groupIds, groupRanges); - var MAX_CYCLES = 5; - if (changeCalled == true && this.COUNTER < MAX_CYCLES) { - DOMutil.cleanupElements(this.svgElements); - this.abortedGraphUpdate = true; - this.COUNTER++; - this.body.emitter.emit('change'); - return true; + pos = this._pointOnBezier(middle); + angle = Math.atan2((node.y - pos.y), (node.x - pos.x)); + distanceToBorder = node.distanceToBorder(ctx,angle); + distanceToNodes = Math.sqrt(Math.pow(pos.x-node.x,2) + Math.pow(pos.y-node.y,2)); + difference = distanceToBorder - distanceToNodes; + if (Math.abs(difference) < threshold) { + break; // found + } + else if (difference < 0) { // distance to nodes is larger than distance to border --> t needs to be bigger if we're looking at the to node. + if (from == false) { + low = middle; } else { - if (this.COUNTER > MAX_CYCLES) { - console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle.") - } - this.COUNTER = 0; - this.abortedGraphUpdate = false; - - // With the yAxis scaled correctly, use this to get the Y values of the points. - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - processedGroupData[groupIds[i]] = this._convertYcoordinates(groupsData[groupIds[i]], group); - } - - // draw the groups - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - if (group.options.style != 'bar') { // bar needs to be drawn enmasse - group.draw(processedGroupData[groupIds[i]], group, this.framework); - } - } - BarGraphFunctions.draw(groupIds, processedGroupData, this.framework); + high = middle; } } - } - - // cleanup unused svg elements - DOMutil.cleanupElements(this.svgElements); - return false; - }; - - - /** - * first select and preprocess the data from the datasets. - * the groups have their preselection of data, we now loop over this data to see - * what data we need to draw. Sorted data is much faster. - * more optimization is possible by doing the sampling before and using the binary search - * to find the end date to determine the increment. - * - * @param {array} groupIds - * @param {object} groupsData - * @param {date} minDate - * @param {date} maxDate - * @private - */ - LineGraph.prototype._getRelevantData = function (groupIds, groupsData, minDate, maxDate) { - var group, i, j, item; - if (groupIds.length > 0) { - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - groupsData[groupIds[i]] = []; - var dataContainer = groupsData[groupIds[i]]; - // optimization for sorted data - if (group.options.sort == true) { - var guess = Math.max(0, util.binarySearchValue(group.itemsData, minDate, 'x', 'before')); - for (j = guess; j < group.itemsData.length; j++) { - item = group.itemsData[j]; - if (item !== undefined) { - if (item.x > maxDate) { - dataContainer.push(item); - break; - } - else { - dataContainer.push(item); - } - } - } + else { + if (from == false) { + high = middle; } else { - for (j = 0; j < group.itemsData.length; j++) { - item = group.itemsData[j]; - if (item !== undefined) { - if (item.x > minDate && item.x < maxDate) { - dataContainer.push(item); - } - } - } + low = middle; } } + + iteration++; } - }; + pos.t = middle; + return pos; + }; /** - * - * @param groupIds - * @param groupsData + * Redraw a edge as a line with an arrow + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx * @private */ - LineGraph.prototype._applySampling = function (groupIds, groupsData) { - var group; - if (groupIds.length > 0) { - for (var i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - if (group.options.sampling == true) { - var dataContainer = groupsData[groupIds[i]]; - if (dataContainer.length > 0) { - var increment = 1; - var amountOfPoints = dataContainer.length; + Edge.prototype._drawArrow = function(ctx) { + // set style + ctx.strokeStyle = this._getColor(ctx); + ctx.fillStyle = ctx.strokeStyle; + ctx.lineWidth = this._getLineWidth(); - // the global screen is used because changing the width of the yAxis may affect the increment, resulting in an endless loop - // of width changing of the yAxis. - var xDistance = this.body.util.toGlobalScreen(dataContainer[dataContainer.length - 1].x) - this.body.util.toGlobalScreen(dataContainer[0].x); - var pointsPerPixel = amountOfPoints / xDistance; - increment = Math.min(Math.ceil(0.2 * amountOfPoints), Math.max(1, Math.round(pointsPerPixel))); + // set vars + var angle, length, arrowPos; - var sampledData = []; - for (var j = 0; j < amountOfPoints; j += increment) { - sampledData.push(dataContainer[j]); + // if not connected to itself + if (this.from != this.to) { + // draw line + this._line(ctx); - } - groupsData[groupIds[i]] = sampledData; - } - } + // draw arrow head + if (this.options.smoothCurves.enabled == true) { + var via = this._getViaCoordinates(); + arrowPos = this._findBorderPosition(false, ctx); + var guidePos = this._pointOnBezier(Math.max(0.0, arrowPos.t - 0.1)) + angle = Math.atan2((arrowPos.y - guidePos.y), (arrowPos.x - guidePos.x)); } - } - }; + else { + angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); + var dx = (this.to.x - this.from.x); + var dy = (this.to.y - this.from.y); + var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); + var toBorderDist = this.to.distanceToBorder(ctx, angle); + var toBorderPoint = (edgeSegmentLength - toBorderDist) / edgeSegmentLength; + arrowPos = {}; + arrowPos.x = (1 - toBorderPoint) * this.from.x + toBorderPoint * this.to.x; + arrowPos.y = (1 - toBorderPoint) * this.from.y + toBorderPoint * this.to.y; + } - /** - * - * - * @param {array} groupIds - * @param {object} groupsData - * @param {object} groupRanges | this is being filled here - * @private - */ - LineGraph.prototype._getYRanges = function (groupIds, groupsData, groupRanges) { - var groupData, group, i; - var barCombinedDataLeft = []; - var barCombinedDataRight = []; - var options; - if (groupIds.length > 0) { - for (i = 0; i < groupIds.length; i++) { - groupData = groupsData[groupIds[i]]; - options = this.groups[groupIds[i]].options; - if (groupData.length > 0) { - group = this.groups[groupIds[i]]; - // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. - if (options.barChart.handleOverlap == 'stack' && options.style == 'bar') { - if (options.yAxisOrientation == 'left') {barCombinedDataLeft = barCombinedDataLeft.concat(group.getYRange(groupData)) ;} - else {barCombinedDataRight = barCombinedDataRight.concat(group.getYRange(groupData));} - } - else { - groupRanges[groupIds[i]] = group.getYRange(groupData,groupIds[i]); - } + // draw arrow at the end of the line + length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; + ctx.arrow(arrowPos.x,arrowPos.y, angle, length); + ctx.fill(); + ctx.stroke(); + + // draw label + if (this.label) { + var point; + if (this.options.smoothCurves.enabled == true && via != null) { + point = this._pointOnBezier(0.5); + } + else { + point = this._pointOnLine(0.5); } + this._label(ctx, this.label, point.x, point.y); + } + } + else { + // draw circle + var node = this.from; + var x, y, arrow; + var radius = 0.25 * Math.max(100,this.physics.springLength); + if (!node.width) { + node.resize(ctx); + } + if (node.width > node.height) { + x = node.x + node.width * 0.5; + y = node.y - radius; + arrow = { + x: x, + y: node.y, + angle: 0.9 * Math.PI + }; + } + else { + x = node.x + radius; + y = node.y - node.height * 0.5; + arrow = { + x: node.x, + y: y, + angle: 0.6 * Math.PI + }; } + ctx.beginPath(); + // TODO: similarly, for a line without arrows, draw to the border of the nodes instead of the center + ctx.arc(x, y, radius, 0, 2 * Math.PI, false); + ctx.stroke(); - // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. - BarGraphFunctions.getStackedBarYRange(barCombinedDataLeft , groupRanges, groupIds, '__barchartLeft' , 'left' ); - BarGraphFunctions.getStackedBarYRange(barCombinedDataRight, groupRanges, groupIds, '__barchartRight', 'right'); + // draw all arrows + var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; + ctx.arrow(arrow.x, arrow.y, arrow.angle, length); + ctx.fill(); + ctx.stroke(); + + // draw label + if (this.label) { + point = this._pointOnCircle(x, y, radius, 0.5); + this._label(ctx, this.label, point.x, point.y); + } } }; - /** - * this sets the Y ranges for the Y axis. It also determines which of the axis should be shown or hidden. - * @param {Array} groupIds - * @param {Object} groupRanges + * Calculate the distance between a point (x3,y3) and a line segment from + * (x1,y1) to (x2,y2). + * http://stackoverflow.com/questions/849211/shortest-distancae-between-a-point-and-a-line-segment + * @param {number} x1 + * @param {number} y1 + * @param {number} x2 + * @param {number} y2 + * @param {number} x3 + * @param {number} y3 * @private */ - LineGraph.prototype._updateYAxis = function (groupIds, groupRanges) { - var resized = false; - var yAxisLeftUsed = false; - var yAxisRightUsed = false; - var minLeft = 1e9, minRight = 1e9, maxLeft = -1e9, maxRight = -1e9, minVal, maxVal; - // if groups are present - if (groupIds.length > 0) { - // this is here to make sure that if there are no items in the axis but there are groups, that there is no infinite draw/redraw loop. - for (var i = 0; i < groupIds.length; i++) { - var group = this.groups[groupIds[i]]; - if (group && group.options.yAxisOrientation != 'right') { - yAxisLeftUsed = true; - minLeft = 0; - maxLeft = 0; + Edge.prototype._getDistanceToEdge = function (x1,y1, x2,y2, x3,y3) { // x3,y3 is the point + var returnValue = 0; + if (this.from != this.to) { + if (this.options.smoothCurves.enabled == true) { + var xVia, yVia; + if (this.options.smoothCurves.enabled == true && this.options.smoothCurves.dynamic == true) { + xVia = this.via.x; + yVia = this.via.y; } - else if (group && group.options.yAxisOrientation) { - yAxisRightUsed = true; - minRight = 0; - maxRight = 0; + else { + var via = this._getViaCoordinates(); + xVia = via.x; + yVia = via.y; } - } - - // if there are items: - for (var i = 0; i < groupIds.length; i++) { - if (groupRanges.hasOwnProperty(groupIds[i])) { - if (groupRanges[groupIds[i]].ignore !== true) { - minVal = groupRanges[groupIds[i]].min; - maxVal = groupRanges[groupIds[i]].max; - - if (groupRanges[groupIds[i]].yAxisOrientation != 'right') { - yAxisLeftUsed = true; - minLeft = minLeft > minVal ? minVal : minLeft; - maxLeft = maxLeft < maxVal ? maxVal : maxLeft; - } - else { - yAxisRightUsed = true; - minRight = minRight > minVal ? minVal : minRight; - maxRight = maxRight < maxVal ? maxVal : maxRight; - } + var minDistance = 1e9; + var distance; + var i,t,x,y, lastX, lastY; + for (i = 0; i < 10; i++) { + t = 0.1*i; + x = Math.pow(1-t,2)*x1 + (2*t*(1 - t))*xVia + Math.pow(t,2)*x2; + y = Math.pow(1-t,2)*y1 + (2*t*(1 - t))*yVia + Math.pow(t,2)*y2; + if (i > 0) { + distance = this._getDistanceToLine(lastX,lastY,x,y, x3,y3); + minDistance = distance < minDistance ? distance : minDistance; } + lastX = x; lastY = y; } + returnValue = minDistance; } - - if (yAxisLeftUsed == true) { - this.yAxisLeft.setRange(minLeft, maxLeft); - } - if (yAxisRightUsed == true) { - this.yAxisRight.setRange(minRight, maxRight); + else { + returnValue = this._getDistanceToLine(x1,y1,x2,y2,x3,y3); } } - resized = this._toggleAxisVisiblity(yAxisLeftUsed , this.yAxisLeft) || resized; - resized = this._toggleAxisVisiblity(yAxisRightUsed, this.yAxisRight) || resized; - - if (yAxisRightUsed == true && yAxisLeftUsed == true) { - this.yAxisLeft.drawIcons = true; - this.yAxisRight.drawIcons = true; - } else { - this.yAxisLeft.drawIcons = false; - this.yAxisRight.drawIcons = false; + var x, y, dx, dy; + var radius = 0.25 * this.physics.springLength; + var node = this.from; + if (node.width > node.height) { + x = node.x + 0.5 * node.width; + y = node.y - radius; + } + else { + x = node.x + radius; + y = node.y - 0.5 * node.height; + } + dx = x - x3; + dy = y - y3; + returnValue = Math.abs(Math.sqrt(dx*dx + dy*dy) - radius); } - this.yAxisRight.master = !yAxisLeftUsed; - if (this.yAxisRight.master == false) { - if (yAxisRightUsed == true) {this.yAxisLeft.lineOffset = this.yAxisRight.width;} - else {this.yAxisLeft.lineOffset = 0;} - resized = this.yAxisLeft.redraw() || resized; - this.yAxisRight.stepPixelsForced = this.yAxisLeft.stepPixels; - this.yAxisRight.zeroCrossing = this.yAxisLeft.zeroCrossing; - resized = this.yAxisRight.redraw() || resized; + if (this.labelDimensions.left < x3 && + this.labelDimensions.left + this.labelDimensions.width > x3 && + this.labelDimensions.top < y3 && + this.labelDimensions.top + this.labelDimensions.height > y3) { + return 0; } else { - resized = this.yAxisRight.redraw() || resized; + return returnValue; } + }; - // clean the accumulated lists - if (groupIds.indexOf('__barchartLeft') != -1) { - groupIds.splice(groupIds.indexOf('__barchartLeft'),1); + Edge.prototype._getDistanceToLine = function(x1,y1,x2,y2,x3,y3) { + var px = x2-x1, + py = y2-y1, + something = px*px + py*py, + u = ((x3 - x1) * px + (y3 - y1) * py) / something; + + if (u > 1) { + u = 1; } - if (groupIds.indexOf('__barchartRight') != -1) { - groupIds.splice(groupIds.indexOf('__barchartRight'),1); + else if (u < 0) { + u = 0; } - return resized; - }; - + var x = x1 + u * px, + y = y1 + u * py, + dx = x - x3, + dy = y - y3; - /** - * This shows or hides the Y axis if needed. If there is a change, the changed event is emitted by the updateYAxis function - * - * @param {boolean} axisUsed - * @returns {boolean} - * @private - * @param axis - */ - LineGraph.prototype._toggleAxisVisiblity = function (axisUsed, axis) { - var changed = false; - if (axisUsed == false) { - if (axis.dom.frame.parentNode && axis.hidden == false) { - axis.hide() - changed = true; - } - } - else { - if (!axis.dom.frame.parentNode && axis.hidden == true) { - axis.show(); - changed = true; - } - } - return changed; - }; + //# Note: If the actual distance does not matter, + //# if you only want to compare what this function + //# returns to other results of this function, you + //# can just return the squared distance instead + //# (i.e. remove the sqrt) to gain a little performance + return Math.sqrt(dx*dx + dy*dy); + }; /** - * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the - * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for - * the yAxis. + * This allows the zoom level of the network to influence the rendering * - * @param datapoints - * @returns {Array} - * @private + * @param scale */ - LineGraph.prototype._convertXcoordinates = function (datapoints) { - var extractedData = []; - var xValue, yValue; - var toScreen = this.body.util.toScreen; + Edge.prototype.setScale = function(scale) { + this.networkScaleInv = 1.0/scale; + }; - for (var i = 0; i < datapoints.length; i++) { - xValue = toScreen(datapoints[i].x) + this.props.width; - yValue = datapoints[i].y; - extractedData.push({x: xValue, y: yValue}); - } - return extractedData; + Edge.prototype.select = function() { + this.selected = true; }; + Edge.prototype.unselect = function() { + this.selected = false; + }; - /** - * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the - * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for - * the yAxis. - * - * @param datapoints - * @param group - * @returns {Array} - * @private - */ - LineGraph.prototype._convertYcoordinates = function (datapoints, group) { - var extractedData = []; - var xValue, yValue; - var toScreen = this.body.util.toScreen; - var axis = this.yAxisLeft; - var svgHeight = Number(this.svg.style.height.replace('px','')); - if (group.options.yAxisOrientation == 'right') { - axis = this.yAxisRight; + Edge.prototype.positionBezierNode = function() { + if (this.via !== null && this.from !== null && this.to !== null) { + this.via.x = 0.5 * (this.from.x + this.to.x); + this.via.y = 0.5 * (this.from.y + this.to.y); } - - for (var i = 0; i < datapoints.length; i++) { - var labelValue; - //if (datapoints[i].label) { - // labelValue = datapoints[i].label; - //} - //else { - // labelValue = null; - //} - labelValue = datapoints[i].label ? datapoints[i].label : null; - xValue = toScreen(datapoints[i].x) + this.props.width; - yValue = Math.round(axis.convertValue(datapoints[i].y)); - extractedData.push({x: xValue, y: yValue, label:labelValue}); + else if (this.via !== null) { + this.via.x = 0; + this.via.y = 0; } - - group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0))); - - return extractedData; }; - - module.exports = LineGraph; - - -/***/ }, -/* 43 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(6); - var Component = __webpack_require__(23); - var DataStep = __webpack_require__(44); - /** - * A horizontal time axis - * @param {Object} [options] See DataAxis.setOptions for the available - * options. - * @constructor DataAxis - * @extends Component - * @param body + * This function draws the control nodes for the manipulator. + * In order to enable this, only set the this.controlNodesEnabled to true. + * @param ctx */ - function DataAxis (body, options, svg, linegraphOptions) { - this.id = util.randomUUID(); - this.body = body; - - this.defaultOptions = { - orientation: 'left', // supported: 'left', 'right' - showMinorLabels: true, - showMajorLabels: true, - icons: true, - majorLinesOffset: 7, - minorLinesOffset: 4, - labelOffsetX: 10, - labelOffsetY: 2, - iconWidth: 20, - width: '40px', - visible: true, - alignZeros: true, - customRange: { - left: {min:undefined, max:undefined}, - right: {min:undefined, max:undefined} - }, - title: { - left: {text:undefined}, - right: {text:undefined} - }, - format: { - left: {decimals: undefined}, - right: {decimals: undefined} + Edge.prototype._drawControlNodes = function(ctx) { + if (this.controlNodesEnabled == true) { + if (this.controlNodes.from === null && this.controlNodes.to === null) { + var nodeIdFrom = "edgeIdFrom:".concat(this.id); + var nodeIdTo = "edgeIdTo:".concat(this.id); + var constants = { + nodes:{group:'', radius:7, borderWidth:2, borderWidthSelected: 2}, + physics:{damping:0}, + clustering: {maxNodeSizeIncrements: 0 ,nodeScaling: {width:0, height: 0, radius:0}} + }; + this.controlNodes.from = new Node( + {id:nodeIdFrom, + shape:'dot', + color:{background:'#ff0000', border:'#3c3c3c', highlight: {background:'#07f968'}} + },{},{},constants); + this.controlNodes.to = new Node( + {id:nodeIdTo, + shape:'dot', + color:{background:'#ff0000', border:'#3c3c3c', highlight: {background:'#07f968'}} + },{},{},constants); } - }; - - this.linegraphOptions = linegraphOptions; - this.linegraphSVG = svg; - this.props = {}; - this.DOMelements = { // dynamic elements - lines: {}, - labels: {}, - title: {} - }; - - this.dom = {}; - this.range = {start:0, end:0}; + this.controlNodes.positions = {}; + if (this.controlNodes.from.selected == false) { + this.controlNodes.positions.from = this.getControlNodeFromPosition(ctx); + this.controlNodes.from.x = this.controlNodes.positions.from.x; + this.controlNodes.from.y = this.controlNodes.positions.from.y; + } + if (this.controlNodes.to.selected == false) { + this.controlNodes.positions.to = this.getControlNodeToPosition(ctx); + this.controlNodes.to.x = this.controlNodes.positions.to.x; + this.controlNodes.to.y = this.controlNodes.positions.to.y; + } - this.options = util.extend({}, this.defaultOptions); - this.conversionFactor = 1; + this.controlNodes.from.draw(ctx); + this.controlNodes.to.draw(ctx); + } + else { + this.controlNodes = {from:null, to:null, positions:{}}; + } + }; - this.setOptions(options); - this.width = Number(('' + this.options.width).replace("px","")); - this.minWidth = this.width; - this.height = this.linegraphSVG.offsetHeight; - this.hidden = false; + /** + * Enable control nodes. + * @private + */ + Edge.prototype._enableControlNodes = function() { + this.fromBackup = this.from; + this.toBackup = this.to; + this.controlNodesEnabled = true; + }; - this.stepPixels = 25; - this.stepPixelsForced = 25; - this.zeroCrossing = -1; + /** + * disable control nodes and remove from dynamicEdges from old node + * @private + */ + Edge.prototype._disableControlNodes = function() { + this.fromId = this.from.id; + this.toId = this.to.id; + if (this.fromId != this.fromBackup.id) { // from was changed, remove edge from old 'from' node dynamic edges + this.fromBackup.detachEdge(this); + } + else if (this.toId != this.toBackup.id) { // to was changed, remove edge from old 'to' node dynamic edges + this.toBackup.detachEdge(this); + } - this.lineOffset = 0; - this.master = true; - this.svgElements = {}; - this.iconsRemoved = false; + this.fromBackup = null; + this.toBackup = null; + this.controlNodesEnabled = false; + }; - this.groups = {}; - this.amountOfGroups = 0; + /** + * This checks if one of the control nodes is selected and if so, returns the control node object. Else it returns null. + * @param x + * @param y + * @returns {null} + * @private + */ + Edge.prototype._getSelectedControlNode = function(x,y) { + var positions = this.controlNodes.positions; + var fromDistance = Math.sqrt(Math.pow(x - positions.from.x,2) + Math.pow(y - positions.from.y,2)); + var toDistance = Math.sqrt(Math.pow(x - positions.to.x ,2) + Math.pow(y - positions.to.y ,2)); - // create the HTML DOM - this._create(); + if (fromDistance < 15) { + this.connectedNode = this.from; + this.from = this.controlNodes.from; + return this.controlNodes.from; + } + else if (toDistance < 15) { + this.connectedNode = this.to; + this.to = this.controlNodes.to; + return this.controlNodes.to; + } + else { + return null; + } + }; - var me = this; - this.body.emitter.on("verticalDrag", function() { - me.dom.lineContainer.style.top = me.body.domProps.scrollTop + 'px'; - }); - } - DataAxis.prototype = new Component(); + /** + * this resets the control nodes to their original position. + * @private + */ + Edge.prototype._restoreControlNodes = function() { + if (this.controlNodes.from.selected == true) { + this.from = this.connectedNode; + this.connectedNode = null; + this.controlNodes.from.unselect(); + } + else if (this.controlNodes.to.selected == true) { + this.to = this.connectedNode; + this.connectedNode = null; + this.controlNodes.to.unselect(); + } + }; + /** + * this calculates the position of the control nodes on the edges of the parent nodes. + * + * @param ctx + * @returns {x: *, y: *} + */ + Edge.prototype.getControlNodeFromPosition = function(ctx) { + // draw arrow head + var controlnodeFromPos; + if (this.options.smoothCurves.enabled == true) { + controlnodeFromPos = this._findBorderPosition(true, ctx); + } + else { + var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); + var dx = (this.to.x - this.from.x); + var dy = (this.to.y - this.from.y); + var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); - DataAxis.prototype.addGroup = function(label, graphOptions) { - if (!this.groups.hasOwnProperty(label)) { - this.groups[label] = graphOptions; + var fromBorderDist = this.from.distanceToBorder(ctx, angle + Math.PI); + var fromBorderPoint = (edgeSegmentLength - fromBorderDist) / edgeSegmentLength; + controlnodeFromPos = {}; + controlnodeFromPos.x = (fromBorderPoint) * this.from.x + (1 - fromBorderPoint) * this.to.x; + controlnodeFromPos.y = (fromBorderPoint) * this.from.y + (1 - fromBorderPoint) * this.to.y; } - this.amountOfGroups += 1; - }; - DataAxis.prototype.updateGroup = function(label, graphOptions) { - this.groups[label] = graphOptions; + return controlnodeFromPos; }; - DataAxis.prototype.removeGroup = function(label) { - if (this.groups.hasOwnProperty(label)) { - delete this.groups[label]; - this.amountOfGroups -= 1; + /** + * this calculates the position of the control nodes on the edges of the parent nodes. + * + * @param ctx + * @returns {{from: {x: number, y: number}, to: {x: *, y: *}}} + */ + Edge.prototype.getControlNodeToPosition = function(ctx) { + // draw arrow head + var controlnodeFromPos,controlnodeToPos; + if (this.options.smoothCurves.enabled == true) { + controlnodeToPos = this._findBorderPosition(false, ctx); } - }; + else { + var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); + var dx = (this.to.x - this.from.x); + var dy = (this.to.y - this.from.y); + var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); + var toBorderDist = this.to.distanceToBorder(ctx, angle); + var toBorderPoint = (edgeSegmentLength - toBorderDist) / edgeSegmentLength; + controlnodeToPos = {}; + controlnodeToPos.x = (1 - toBorderPoint) * this.from.x + toBorderPoint * this.to.x; + controlnodeToPos.y = (1 - toBorderPoint) * this.from.y + toBorderPoint * this.to.y; + } - DataAxis.prototype.setOptions = function (options) { - if (options) { - var redraw = false; - if (this.options.orientation != options.orientation && options.orientation !== undefined) { - redraw = true; - } - var fields = [ - 'orientation', - 'showMinorLabels', - 'showMajorLabels', - 'icons', - 'majorLinesOffset', - 'minorLinesOffset', - 'labelOffsetX', - 'labelOffsetY', - 'iconWidth', - 'width', - 'visible', - 'customRange', - 'title', - 'format', - 'alignZeros' - ]; - util.selectiveExtend(fields, this.options, options); + return controlnodeToPos; + }; - this.minWidth = Number(('' + this.options.width).replace("px","")); + module.exports = Edge; - if (redraw == true && this.dom.frame) { - this.hide(); - this.show(); - } - } - }; +/***/ }, +/* 38 */ +/***/ function(module, exports, __webpack_require__) { + var util = __webpack_require__(1); /** - * Create the HTML DOM for the DataAxis + * @class Groups + * This class can store groups and properties specific for groups. */ - DataAxis.prototype._create = function() { - this.dom.frame = document.createElement('div'); - this.dom.frame.style.width = this.options.width; - this.dom.frame.style.height = this.height; + function Groups() { + this.clear(); + this.defaultIndex = 0; + this.groupsArray = []; + this.groupIndex = 0; + this.useDefaultGroups = true; + } - this.dom.lineContainer = document.createElement('div'); - this.dom.lineContainer.style.width = '100%'; - this.dom.lineContainer.style.height = this.height; - this.dom.lineContainer.style.position = 'relative'; - // create svg element for graph drawing. - this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); - this.svg.style.position = "absolute"; - this.svg.style.top = '0px'; - this.svg.style.height = '100%'; - this.svg.style.width = '100%'; - this.svg.style.display = "block"; - this.dom.frame.appendChild(this.svg); - }; + /** + * default constants for group colors + */ + Groups.DEFAULT = [ + {border: "#2B7CE9", background: "#97C2FC", highlight: {border: "#2B7CE9", background: "#D2E5FF"}, hover: {border: "#2B7CE9", background: "#D2E5FF"}}, // 0: blue + {border: "#FFA500", background: "#FFFF00", highlight: {border: "#FFA500", background: "#FFFFA3"}, hover: {border: "#FFA500", background: "#FFFFA3"}}, // 1: yellow + {border: "#FA0A10", background: "#FB7E81", highlight: {border: "#FA0A10", background: "#FFAFB1"}, hover: {border: "#FA0A10", background: "#FFAFB1"}}, // 2: red + {border: "#41A906", background: "#7BE141", highlight: {border: "#41A906", background: "#A1EC76"}, hover: {border: "#41A906", background: "#A1EC76"}}, // 3: green + {border: "#E129F0", background: "#EB7DF4", highlight: {border: "#E129F0", background: "#F0B3F5"}, hover: {border: "#E129F0", background: "#F0B3F5"}}, // 4: magenta + {border: "#7C29F0", background: "#AD85E4", highlight: {border: "#7C29F0", background: "#D3BDF0"}, hover: {border: "#7C29F0", background: "#D3BDF0"}}, // 5: purple + {border: "#C37F00", background: "#FFA807", highlight: {border: "#C37F00", background: "#FFCA66"}, hover: {border: "#C37F00", background: "#FFCA66"}}, // 6: orange + {border: "#4220FB", background: "#6E6EFD", highlight: {border: "#4220FB", background: "#9B9BFD"}, hover: {border: "#4220FB", background: "#9B9BFD"}}, // 7: darkblue + {border: "#FD5A77", background: "#FFC0CB", highlight: {border: "#FD5A77", background: "#FFD1D9"}, hover: {border: "#FD5A77", background: "#FFD1D9"}}, // 8: pink + {border: "#4AD63A", background: "#C2FABC", highlight: {border: "#4AD63A", background: "#E6FFE3"}, hover: {border: "#4AD63A", background: "#E6FFE3"}}, // 9: mint - DataAxis.prototype._redrawGroupIcons = function () { - DOMutil.prepareElements(this.svgElements); + {border: "#990000", background: "#EE0000", highlight: {border: "#BB0000", background: "#FF3333"}, hover: {border: "#BB0000", background: "#FF3333"}}, // 10:bright red - var x; - var iconWidth = this.options.iconWidth; - var iconHeight = 15; - var iconOffset = 4; - var y = iconOffset + 0.5 * iconHeight; + {border: "#FF6000", background: "#FF6000", highlight: {border: "#FF6000", background: "#FF6000"}, hover: {border: "#FF6000", background: "#FF6000"}}, // 12: real orange + {border: "#97C2FC", background: "#2B7CE9", highlight: {border: "#D2E5FF", background: "#2B7CE9"}, hover: {border: "#D2E5FF", background: "#2B7CE9"}}, // 13: blue + {border: "#399605", background: "#255C03", highlight: {border: "#399605", background: "#255C03"}, hover: {border: "#399605", background: "#255C03"}}, // 14: green + {border: "#B70054", background: "#FF007E", highlight: {border: "#B70054", background: "#FF007E"}, hover: {border: "#B70054", background: "#FF007E"}}, // 15: magenta + {border: "#AD85E4", background: "#7C29F0", highlight: {border: "#D3BDF0", background: "#7C29F0"}, hover: {border: "#D3BDF0", background: "#7C29F0"}}, // 16: purple + {border: "#4557FA", background: "#000EA1", highlight: {border: "#6E6EFD", background: "#000EA1"}, hover: {border: "#6E6EFD", background: "#000EA1"}}, // 17: darkblue + {border: "#FFC0CB", background: "#FD5A77", highlight: {border: "#FFD1D9", background: "#FD5A77"}, hover: {border: "#FFD1D9", background: "#FD5A77"}}, // 18: pink + {border: "#C2FABC", background: "#74D66A", highlight: {border: "#E6FFE3", background: "#74D66A"}, hover: {border: "#E6FFE3", background: "#74D66A"}}, // 19: mint - if (this.options.orientation == 'left') { - x = iconOffset; - } - else { - x = this.width - iconWidth - iconOffset; - } + {border: "#EE0000", background: "#990000", highlight: {border: "#FF3333", background: "#BB0000"}, hover: {border: "#FF3333", background: "#BB0000"}}, // 20:bright red + ]; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); - y += iconHeight + iconOffset; + + /** + * Clear all groups + */ + Groups.prototype.clear = function () { + this.groups = {}; + this.groups.length = function() + { + var i = 0; + for ( var p in this ) { + if (this.hasOwnProperty(p)) { + i++; } } + return i; } - - DOMutil.cleanupElements(this.svgElements); - this.iconsRemoved = false; }; - DataAxis.prototype._cleanupIcons = function() { - if (this.iconsRemoved == false) { - DOMutil.prepareElements(this.svgElements); - DOMutil.cleanupElements(this.svgElements); - this.iconsRemoved = true; - } - } /** - * Create the HTML DOM for the DataAxis + * get group properties of a groupname. If groupname is not found, a new group + * is added. + * @param {*} groupname Can be a number, string, Date, etc. + * @return {Object} group The created group, containing all group properties */ - DataAxis.prototype.show = function() { - this.hidden = false; - if (!this.dom.frame.parentNode) { - if (this.options.orientation == 'left') { - this.body.dom.left.appendChild(this.dom.frame); + Groups.prototype.get = function (groupname) { + var group = this.groups[groupname]; + if (group == undefined) { + if (this.useDefaultGroups === false && this.groupsArray.length > 0) { + // create new group + var index = this.groupIndex % this.groupsArray.length; + this.groupIndex++; + group = {}; + group.color = this.groups[this.groupsArray[index]]; + this.groups[groupname] = group; } else { - this.body.dom.right.appendChild(this.dom.frame); + // create new group + var index = this.defaultIndex % Groups.DEFAULT.length; + this.defaultIndex++; + group = {}; + group.color = Groups.DEFAULT[index]; + this.groups[groupname] = group; } } - if (!this.dom.lineContainer.parentNode) { - this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer); - } + return group; }; /** - * Create the HTML DOM for the DataAxis + * Add a custom group style + * @param {String} groupName + * @param {Object} style An object containing borderColor, + * backgroundColor, etc. + * @return {Object} group The created group object */ - DataAxis.prototype.hide = function() { - this.hidden = true; - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); - } - - if (this.dom.lineContainer.parentNode) { - this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer); - } + Groups.prototype.add = function (groupName, style) { + this.groups[groupName] = style; + this.groupsArray.push(groupName); + return style; }; + module.exports = Groups; + + +/***/ }, +/* 39 */ +/***/ function(module, exports, __webpack_require__) { + /** - * Set a range (start and end) - * @param end - * @param start - * @param end + * @class Images + * This class loads images and keeps them stored. */ - DataAxis.prototype.setRange = function (start, end) { - if (this.master == false && this.options.alignZeros == true && this.zeroCrossing != -1) { - if (start > 0) { - start = 0; - } - } - this.range.start = start; - this.range.end = end; + function Images() { + this.images = {}; + this.imageBroken = {}; + this.callback = undefined; + } + + /** + * Set an onload callback function. This will be called each time an image + * is loaded + * @param {function} callback + */ + Images.prototype.setOnloadCallback = function(callback) { + this.callback = callback; }; /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * + * @param {string} url Url of the image + * @param {string} url Url of an image to use if the url image is not found + * @return {Image} img The image object */ - DataAxis.prototype.redraw = function () { - var resized = false; - var activeGroups = 0; - - // Make sure the line container adheres to the vertical scrolling. - this.dom.lineContainer.style.top = this.body.domProps.scrollTop + 'px'; + Images.prototype.load = function(url, brokenUrl) { + var img = this.images[url]; // make a pointer + if (img === undefined) { + // create the image + var me = this; + img = new Image(); + img.onload = function () { + // IE11 fix -- thanks dponch! + if (this.width == 0) { + document.body.appendChild(this); + this.width = this.offsetWidth; + this.height = this.offsetHeight; + document.body.removeChild(this); + } - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - activeGroups++; + if (me.callback) { + me.images[url] = img; + me.callback(this); } - } - } - if (this.amountOfGroups == 0 || activeGroups == 0) { - this.hide(); + }; + + img.onerror = function () { + if (brokenUrl === undefined) { + console.error("Could not load image:", url); + delete this.src; + if (me.callback) { + me.callback(this); + } + } + else { + if (me.imageBroken[url] === true) { + if (this.src == brokenUrl) { + console.error("Could not load brokenImage:", brokenUrl); + delete this.src; + if (me.callback) { + me.callback(this); + } + } + else { + console.error("Could not load image:", url); + this.src = brokenUrl; + } + } + else { + console.error("Could not load image:", url); + this.src = brokenUrl; + me.imageBroken[url] = true; + } + } + }; + + img.src = url; } - else { - this.show(); - this.height = Number(this.linegraphSVG.style.height.replace("px","")); - // svg offsetheight did not work in firefox and explorer... - this.dom.lineContainer.style.height = this.height + 'px'; - this.width = this.options.visible == true ? Number(('' + this.options.width).replace("px","")) : 0; + return img; + }; - var props = this.props; - var frame = this.dom.frame; + module.exports = Images; - // update classname - frame.className = 'dataaxis'; - // calculate character width and height - this._calculateCharSize(); +/***/ }, +/* 40 */ +/***/ function(module, exports, __webpack_require__) { - var orientation = this.options.orientation; - var showMinorLabels = this.options.showMinorLabels; - var showMajorLabels = this.options.showMajorLabels; + var util = __webpack_require__(1); - // determine the width and height of the elements for the axis - props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; - props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; + /** + * @class Node + * A node. A node can be connected to other nodes via one or multiple edges. + * @param {object} properties An object containing properties for the node. All + * properties are optional, except for the id. + * {number} id Id of the node. Required + * {string} label Text label for the node + * {number} x Horizontal position of the node + * {number} y Vertical position of the node + * {string} shape Node shape, available: + * "database", "circle", "ellipse", + * "box", "image", "text", "dot", + * "star", "triangle", "triangleDown", + * "square", "icon" + * {string} image An image url + * {string} title An title text, can be HTML + * {anytype} group A group name or number + * @param {Network.Images} imagelist A list with images. Only needed + * when the node has an image + * @param {Network.Groups} grouplist A list with groups. Needed for + * retrieving group properties + * @param {Object} constants An object with default values for + * example for the color + * + */ + function Node(properties, imagelist, grouplist, networkConstants) { + var constants = util.selectiveBridgeObject(['nodes'],networkConstants); + this.options = constants.nodes; - props.minorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.minorLinesOffset; - props.minorLineHeight = 1; - props.majorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.majorLinesOffset; - props.majorLineHeight = 1; + this.selected = false; + this.hover = false; - // take frame offline while updating (is almost twice as fast) - if (orientation == 'left') { - frame.style.top = '0'; - frame.style.left = '0'; - frame.style.bottom = ''; - frame.style.width = this.width + 'px'; - frame.style.height = this.height + "px"; - this.props.width = this.body.domProps.left.width; - this.props.height = this.body.domProps.left.height; - } - else { // right - frame.style.top = ''; - frame.style.bottom = '0'; - frame.style.left = '0'; - frame.style.width = this.width + 'px'; - frame.style.height = this.height + "px"; - this.props.width = this.body.domProps.right.width; - this.props.height = this.body.domProps.right.height; - } + this.edges = []; // all edges connected to this node + this.dynamicEdges = []; + this.reroutedEdges = {}; - resized = this._redrawLabels(); - resized = this._isResized() || resized; + // set defaults for the properties + this.id = undefined; + this.allowedToMoveX = false; + this.allowedToMoveY = false; + this.xFixed = false; + this.yFixed = false; + this.horizontalAlignLeft = true; // these are for the navigation controls + this.verticalAlignTop = true; // these are for the navigation controls + this.baseRadiusValue = networkConstants.nodes.radius; + this.radiusFixed = false; + this.level = -1; + this.preassignedLevel = false; + this.hierarchyEnumerated = false; + this.labelDimensions = {top:0, left:0, width:0, height:0, yLine:0}; // could be cached + this.boundingBox = {top:0, left:0, right:0, bottom:0}; - if (this.options.icons == true) { - this._redrawGroupIcons(); - } - else { - this._cleanupIcons(); - } + this.imagelist = imagelist; + this.grouplist = grouplist; - this._redrawTitle(orientation); - } - return resized; - }; + // physics properties + this.fx = 0.0; // external force x + this.fy = 0.0; // external force y + this.vx = 0.0; // velocity x + this.vy = 0.0; // velocity y + this.x = null; + this.y = null; + this.predefinedPosition = false; // used to check if initial zoomExtent should just take the range or approximate - /** - * Repaint major and minor text labels and vertical grid lines - * @private - */ - DataAxis.prototype._redrawLabels = function () { - var resized = false; - DOMutil.prepareElements(this.DOMelements.lines); - DOMutil.prepareElements(this.DOMelements.labels); + // used for reverting to previous position on stabilization + this.previousState = {vx:0,vy:0,x:0,y:0}; - var orientation = this.options['orientation']; + this.damping = networkConstants.physics.damping; // written every time gravity is calculated + this.fixedData = {x:null,y:null}; - // calculate range and step (step such that we have space for 7 characters per label) - var minimumStep = this.master ? this.props.majorCharHeight || 10 : this.stepPixelsForced; + this.setProperties(properties, constants); - var step = new DataStep( - this.range.start, - this.range.end, - minimumStep, - this.dom.frame.offsetHeight, - this.options.customRange[this.options.orientation], - this.master == false && this.options.alignZeros // doess the step have to align zeros? only if not master and the options is on - ); + // creating the variables for clustering + this.resetCluster(); + this.clusterSession = 0; + this.clusterSizeWidthFactor = networkConstants.clustering.nodeScaling.width; + this.clusterSizeHeightFactor = networkConstants.clustering.nodeScaling.height; + this.clusterSizeRadiusFactor = networkConstants.clustering.nodeScaling.radius; + this.maxNodeSizeIncrements = networkConstants.clustering.maxNodeSizeIncrements; + this.growthIndicator = 0; - this.step = step; - // get the distance in pixels for a step - // dead space is space that is "left over" after a step - var stepPixels = (this.dom.frame.offsetHeight - (step.deadSpace * (this.dom.frame.offsetHeight / step.marginRange))) / (((step.marginRange - step.deadSpace) / step.step)); + // variables to tell the node about the network. + this.networkScaleInv = 1; + this.networkScale = 1; + this.canvasTopLeft = {"x": -300, "y": -300}; + this.canvasBottomRight = {"x": 300, "y": 300}; + this.parentEdgeId = null; + } - this.stepPixels = stepPixels; - var amountOfSteps = this.height / stepPixels; - var stepDifference = 0; + /** + * Revert the position and velocity of the previous step. + */ + Node.prototype.revertPosition = function() { + this.x = this.previousState.x; + this.y = this.previousState.y; + this.vx = this.previousState.vx; + this.vy = this.previousState.vy; + } - // the slave axis needs to use the same horizontal lines as the master axis. - if (this.master == false) { - stepPixels = this.stepPixelsForced; - stepDifference = Math.round((this.dom.frame.offsetHeight / stepPixels) - amountOfSteps); - for (var i = 0; i < 0.5 * stepDifference; i++) { - step.previous(); - } - amountOfSteps = this.height / stepPixels; - if (this.zeroCrossing != -1 && this.options.alignZeros == true) { - var zeroStepDifference = (step.marginEnd / step.step) - this.zeroCrossing; - if (zeroStepDifference > 0) { - for (var i = 0; i < zeroStepDifference; i++) {step.next();} - } - else if (zeroStepDifference < 0) { - for (var i = 0; i < -zeroStepDifference; i++) {step.previous();} - } - } + /** + * (re)setting the clustering variables and objects + */ + Node.prototype.resetCluster = function() { + // clustering variables + this.formationScale = undefined; // this is used to determine when to open the cluster + this.clusterSize = 1; // this signifies the total amount of nodes in this cluster + this.containedNodes = {}; + this.containedEdges = {}; + this.clusterSessions = []; + }; + + /** + * Attach a edge to the node + * @param {Edge} edge + */ + Node.prototype.attachEdge = function(edge) { + if (this.edges.indexOf(edge) == -1) { + this.edges.push(edge); } - else { - amountOfSteps += 0.25; + if (this.dynamicEdges.indexOf(edge) == -1) { + this.dynamicEdges.push(edge); } + }; + /** + * Detach a edge from the node + * @param {Edge} edge + */ + Node.prototype.detachEdge = function(edge) { + var index = this.edges.indexOf(edge); + if (index != -1) { + this.edges.splice(index, 1); + } + index = this.dynamicEdges.indexOf(edge); + if (index != -1) { + this.dynamicEdges.splice(index, 1); + } + }; - this.valueAtZero = step.marginEnd; - var marginStartPos = 0; - - // do not draw the first label - var max = 1; - // Get the number of decimal places - var decimals; - if(this.options.format[orientation] !== undefined) { - decimals = this.options.format[orientation].decimals; + /** + * Set or overwrite properties for the node + * @param {Object} properties an object with properties + * @param {Object} constants and object with default, global properties + */ + Node.prototype.setProperties = function(properties, constants) { + if (!properties) { + return; } - this.maxLabelSize = 0; - var y = 0; - while (max < Math.round(amountOfSteps)) { - step.next(); - y = Math.round(max * stepPixels); - marginStartPos = max * stepPixels; - var isMajor = step.isMajor(); + var fields = ['borderWidth','borderWidthSelected','shape','image','brokenImage','radius','fontColor', + 'fontSize','fontFace','fontFill','fontStrokeWidth','fontStrokeColor','group','mass','fontDrawThreshold', + 'scaleFontWithValue','fontSizeMaxVisible','customScalingFunction','iconFontFace', 'icon', 'iconColor', 'iconSize' + ]; + util.selectiveDeepExtend(fields, this.options, properties); - if (this.options['showMinorLabels'] && isMajor == false || this.master == false && this.options['showMinorLabels'] == true) { - this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis minor', this.props.minorCharHeight); - } + // basic properties + if (properties.id !== undefined) {this.id = properties.id;} + if (properties.label !== undefined) {this.label = properties.label; this.originalLabel = properties.label;} + if (properties.title !== undefined) {this.title = properties.title;} + if (properties.x !== undefined) {this.x = properties.x; this.predefinedPosition = true;} + if (properties.y !== undefined) {this.y = properties.y; this.predefinedPosition = true;} + if (properties.value !== undefined) {this.value = properties.value;} + if (properties.level !== undefined) {this.level = properties.level; this.preassignedLevel = true;} - if (isMajor && this.options['showMajorLabels'] && this.master == true || - this.options['showMinorLabels'] == false && this.master == false && isMajor == true) { - if (y >= 0) { - this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis major', this.props.majorCharHeight); - } - this._redrawLine(y, orientation, 'grid horizontal major', this.options.majorLinesOffset, this.props.majorLineWidth); + // navigation controls properties + if (properties.horizontalAlignLeft !== undefined) {this.horizontalAlignLeft = properties.horizontalAlignLeft;} + if (properties.verticalAlignTop !== undefined) {this.verticalAlignTop = properties.verticalAlignTop;} + if (properties.triggerFunction !== undefined) {this.triggerFunction = properties.triggerFunction;} + + if (this.id === undefined) { + throw "Node must have an id"; + } + + // copy group properties + if (typeof properties.group === 'number' || (typeof properties.group === 'string' && properties.group != '')) { + var groupObj = this.grouplist.get(properties.group); + util.deepExtend(this.options, groupObj); + // the color object needs to be completely defined. Since groups can partially overwrite the colors, we parse it again, just in case. + this.options.color = util.parseColor(this.options.color); + } + // individual shape properties + if (properties.radius !== undefined) {this.baseRadiusValue = this.options.radius;} + if (properties.color !== undefined) {this.options.color = util.parseColor(properties.color);} + + if (this.options.image !== undefined && this.options.image!= "") { + if (this.imagelist) { + this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage); } else { - this._redrawLine(y, orientation, 'grid horizontal minor', this.options.minorLinesOffset, this.props.minorLineWidth); - } - - if (this.master == true && step.current == 0) { - this.zeroCrossing = max; + throw "No imagelist provided"; } - - max++; } - if (this.master == false) { - this.conversionFactor = y / (this.valueAtZero - step.current); + if (properties.allowedToMoveX !== undefined) { + this.xFixed = !properties.allowedToMoveX; + this.allowedToMoveX = properties.allowedToMoveX; } - else { - this.conversionFactor = this.dom.frame.offsetHeight / step.marginRange; + else if (properties.x !== undefined && this.allowedToMoveX == false) { + this.xFixed = true; } - // Note that title is rotated, so we're using the height, not width! - var titleWidth = 0; - if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { - titleWidth = this.props.titleCharHeight; - } - var offset = this.options.icons == true ? Math.max(this.options.iconWidth, titleWidth) + this.options.labelOffsetX + 15 : titleWidth + this.options.labelOffsetX + 15; - // this will resize the yAxis to accommodate the labels. - if (this.maxLabelSize > (this.width - offset) && this.options.visible == true) { - this.width = this.maxLabelSize + offset; - this.options.width = this.width + "px"; - DOMutil.cleanupElements(this.DOMelements.lines); - DOMutil.cleanupElements(this.DOMelements.labels); - this.redraw(); - resized = true; + if (properties.allowedToMoveY !== undefined) { + this.yFixed = !properties.allowedToMoveY; + this.allowedToMoveY = properties.allowedToMoveY; } - // this will resize the yAxis if it is too big for the labels. - else if (this.maxLabelSize < (this.width - offset) && this.options.visible == true && this.width > this.minWidth) { - this.width = Math.max(this.minWidth,this.maxLabelSize + offset); - this.options.width = this.width + "px"; - DOMutil.cleanupElements(this.DOMelements.lines); - DOMutil.cleanupElements(this.DOMelements.labels); - this.redraw(); - resized = true; + else if (properties.y !== undefined && this.allowedToMoveY == false) { + this.yFixed = true; } - else { - DOMutil.cleanupElements(this.DOMelements.lines); - DOMutil.cleanupElements(this.DOMelements.labels); - resized = false; + + this.radiusFixed = this.radiusFixed || (properties.radius !== undefined); + + if (this.options.shape === 'image' || this.options.shape === 'circularImage') { + this.options.radiusMin = constants.nodes.widthMin; + this.options.radiusMax = constants.nodes.widthMax; } - return resized; + // choose draw method depending on the shape + switch (this.options.shape) { + case 'database': this.draw = this._drawDatabase; this.resize = this._resizeDatabase; break; + case 'box': this.draw = this._drawBox; this.resize = this._resizeBox; break; + case 'circle': this.draw = this._drawCircle; this.resize = this._resizeCircle; break; + case 'ellipse': this.draw = this._drawEllipse; this.resize = this._resizeEllipse; break; + // TODO: add diamond shape + case 'image': this.draw = this._drawImage; this.resize = this._resizeImage; break; + case 'circularImage': this.draw = this._drawCircularImage; this.resize = this._resizeCircularImage; break; + case 'text': this.draw = this._drawText; this.resize = this._resizeText; break; + case 'dot': this.draw = this._drawDot; this.resize = this._resizeShape; break; + case 'square': this.draw = this._drawSquare; this.resize = this._resizeShape; break; + case 'triangle': this.draw = this._drawTriangle; this.resize = this._resizeShape; break; + case 'triangleDown': this.draw = this._drawTriangleDown; this.resize = this._resizeShape; break; + case 'star': this.draw = this._drawStar; this.resize = this._resizeShape; break; + case 'icon': this.draw = this._drawIcon; this.resize = this._resizeIcon; break; + default: this.draw = this._drawEllipse; this.resize = this._resizeEllipse; break; + } + // reset the size of the node, this can be changed + this._reset(); + }; - DataAxis.prototype.convertValue = function (value) { - var invertedValue = this.valueAtZero - value; - var convertedValue = invertedValue * this.conversionFactor; - return convertedValue; + /** + * select this node + */ + Node.prototype.select = function() { + this.selected = true; + this._reset(); }; /** - * Create a label for the axis at position x - * @private - * @param y - * @param text - * @param orientation - * @param className - * @param characterHeight + * unselect this node */ - DataAxis.prototype._redrawLabel = function (y, text, orientation, className, characterHeight) { - // reuse redundant label - var label = DOMutil.getDOMElement('div',this.DOMelements.labels, this.dom.frame); //this.dom.redundant.labels.shift(); - label.className = className; - label.innerHTML = text; - if (orientation == 'left') { - label.style.left = '-' + this.options.labelOffsetX + 'px'; - label.style.textAlign = "right"; - } - else { - label.style.right = '-' + this.options.labelOffsetX + 'px'; - label.style.textAlign = "left"; - } - - label.style.top = y - 0.5 * characterHeight + this.options.labelOffsetY + 'px'; - - text += ''; - - var largestWidth = Math.max(this.props.majorCharWidth,this.props.minorCharWidth); - if (this.maxLabelSize < text.length * largestWidth) { - this.maxLabelSize = text.length * largestWidth; - } + Node.prototype.unselect = function() { + this.selected = false; + this._reset(); }; + /** - * Create a minor line for the axis at position y - * @param y - * @param orientation - * @param className - * @param offset - * @param width + * Reset the calculated size of the node, forces it to recalculate its size */ - DataAxis.prototype._redrawLine = function (y, orientation, className, offset, width) { - if (this.master == true) { - var line = DOMutil.getDOMElement('div',this.DOMelements.lines, this.dom.lineContainer);//this.dom.redundant.lines.shift(); - line.className = className; - line.innerHTML = ''; - - if (orientation == 'left') { - line.style.left = (this.width - offset) + 'px'; - } - else { - line.style.right = (this.width - offset) + 'px'; - } - - line.style.width = width + 'px'; - line.style.top = y + 'px'; - } + Node.prototype.clearSizeCache = function() { + this._reset(); }; /** - * Create a title for the axis + * Reset the calculated size of the node, forces it to recalculate its size * @private - * @param orientation */ - DataAxis.prototype._redrawTitle = function (orientation) { - DOMutil.prepareElements(this.DOMelements.title); - - // Check if the title is defined for this axes - if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { - var title = DOMutil.getDOMElement('div', this.DOMelements.title, this.dom.frame); - title.className = 'yAxis title ' + orientation; - title.innerHTML = this.options.title[orientation].text; - - // Add style - if provided - if (this.options.title[orientation].style !== undefined) { - util.addCssText(title, this.options.title[orientation].style); - } - - if (orientation == 'left') { - title.style.left = this.props.titleCharHeight + 'px'; - } - else { - title.style.right = this.props.titleCharHeight + 'px'; - } - - title.style.width = this.height + 'px'; - } - - // we need to clean up in case we did not use all elements. - DOMutil.cleanupElements(this.DOMelements.title); + Node.prototype._reset = function() { + this.width = undefined; + this.height = undefined; }; - - - /** - * Determine the size of text on the axis (both major and minor axis). - * The size is calculated only once and then cached in this.props. - * @private + * get the title of this node. + * @return {string} title The title of the node, or undefined when no title + * has been set. */ - DataAxis.prototype._calculateCharSize = function () { - // determine the char width and height on the minor axis - if (!('minorCharHeight' in this.props)) { - var textMinor = document.createTextNode('0'); - var measureCharMinor = document.createElement('div'); - measureCharMinor.className = 'yAxis minor measure'; - measureCharMinor.appendChild(textMinor); - this.dom.frame.appendChild(measureCharMinor); + Node.prototype.getTitle = function() { + return typeof this.title === "function" ? this.title() : this.title; + }; - this.props.minorCharHeight = measureCharMinor.clientHeight; - this.props.minorCharWidth = measureCharMinor.clientWidth; + /** + * Calculate the distance to the border of the Node + * @param {CanvasRenderingContext2D} ctx + * @param {Number} angle Angle in radians + * @returns {number} distance Distance to the border in pixels + */ + Node.prototype.distanceToBorder = function (ctx, angle) { + var borderWidth = 1; - this.dom.frame.removeChild(measureCharMinor); + if (!this.width) { + this.resize(ctx); } - if (!('majorCharHeight' in this.props)) { - var textMajor = document.createTextNode('0'); - var measureCharMajor = document.createElement('div'); - measureCharMajor.className = 'yAxis major measure'; - measureCharMajor.appendChild(textMajor); - this.dom.frame.appendChild(measureCharMajor); - - this.props.majorCharHeight = measureCharMajor.clientHeight; - this.props.majorCharWidth = measureCharMajor.clientWidth; + switch (this.options.shape) { + case 'circle': + case 'dot': + return this.options.radius+ borderWidth; - this.dom.frame.removeChild(measureCharMajor); - } + case 'ellipse': + var a = this.width / 2; + var b = this.height / 2; + var w = (Math.sin(angle) * a); + var h = (Math.cos(angle) * b); + return a * b / Math.sqrt(w * w + h * h); - if (!('titleCharHeight' in this.props)) { - var textTitle = document.createTextNode('0'); - var measureCharTitle = document.createElement('div'); - measureCharTitle.className = 'yAxis title measure'; - measureCharTitle.appendChild(textTitle); - this.dom.frame.appendChild(measureCharTitle); + // TODO: implement distanceToBorder for database + // TODO: implement distanceToBorder for triangle + // TODO: implement distanceToBorder for triangleDown - this.props.titleCharHeight = measureCharTitle.clientHeight; - this.props.titleCharWidth = measureCharTitle.clientWidth; + case 'box': + case 'image': + case 'text': + default: + if (this.width) { + return Math.min( + Math.abs(this.width / 2 / Math.cos(angle)), + Math.abs(this.height / 2 / Math.sin(angle))) + borderWidth; + // TODO: reckon with border radius too in case of box + } + else { + return 0; + } - this.dom.frame.removeChild(measureCharTitle); } + // TODO: implement calculation of distance to border for all shapes }; - module.exports = DataAxis; - - -/***/ }, -/* 44 */ -/***/ function(module, exports, __webpack_require__) { - /** - * @constructor DataStep - * The class DataStep is an iterator for data for the lineGraph. You provide a start data point and an - * end data point. The class itself determines the best scale (step size) based on the - * provided start Date, end Date, and minimumStep. - * - * If minimumStep is provided, the step size is chosen as close as possible - * to the minimumStep but larger than minimumStep. If minimumStep is not - * provided, the scale is set to 1 DAY. - * The minimumStep should correspond with the onscreen size of about 6 characters - * - * Alternatively, you can set a scale by hand. - * After creation, you can initialize the class by executing first(). Then you - * can iterate from the start date to the end date via next(). You can check if - * the end date is reached with the function hasNext(). After each step, you can - * retrieve the current date via getCurrent(). - * The DataStep has scales ranging from milliseconds, seconds, minutes, hours, - * days, to years. - * - * Version: 1.2 - * - * @param {Date} [start] The start date, for example new Date(2010, 9, 21) - * or new Date(2010, 9, 21, 23, 45, 00) - * @param {Date} [end] The end date - * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds + * Set forces acting on the node + * @param {number} fx Force in horizontal direction + * @param {number} fy Force in vertical direction */ - function DataStep(start, end, minimumStep, containerHeight, customRange, alignZeros) { - // variables - this.current = 0; - - this.autoScale = true; - this.stepIndex = 0; - this.step = 1; - this.scale = 1; - - this.marginStart; - this.marginEnd; - this.deadSpace = 0; - - this.majorSteps = [1, 2, 5, 10]; - this.minorSteps = [0.25, 0.5, 1, 2]; - - this.alignZeros = alignZeros; - - this.setRange(start, end, minimumStep, containerHeight, customRange); - } - - + Node.prototype._setForce = function(fx, fy) { + this.fx = fx; + this.fy = fy; + }; /** - * Set a new range - * If minimumStep is provided, the step size is chosen as close as possible - * to the minimumStep but larger than minimumStep. If minimumStep is not - * provided, the scale is set to 1 DAY. - * The minimumStep should correspond with the onscreen size of about 6 characters - * @param {Number} [start] The start date and time. - * @param {Number} [end] The end date and time. - * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds + * Add forces acting on the node + * @param {number} fx Force in horizontal direction + * @param {number} fy Force in vertical direction + * @private */ - DataStep.prototype.setRange = function(start, end, minimumStep, containerHeight, customRange) { - this._start = customRange.min === undefined ? start : customRange.min; - this._end = customRange.max === undefined ? end : customRange.max; - - if (this._start == this._end) { - this._start -= 0.75; - this._end += 1; - } - - if (this.autoScale == true) { - this.setMinimumStep(minimumStep, containerHeight); - } - - this.setFirst(customRange); + Node.prototype._addForce = function(fx, fy) { + this.fx += fx; + this.fy += fy; }; /** - * Automatically determine the scale that bests fits the provided minimum step - * @param {Number} [minimumStep] The minimum step size in milliseconds + * Store the state before the next step */ - DataStep.prototype.setMinimumStep = function(minimumStep, containerHeight) { - // round to floor - var size = this._end - this._start; - var safeSize = size * 1.2; - var minimumStepValue = minimumStep * (safeSize / containerHeight); - var orderOfMagnitude = Math.round(Math.log(safeSize)/Math.LN10); - - var minorStepIdx = -1; - var magnitudefactor = Math.pow(10,orderOfMagnitude); + Node.prototype.storeState = function() { + this.previousState.x = this.x; + this.previousState.y = this.y; + this.previousState.vx = this.vx; + this.previousState.vy = this.vy; + } - var start = 0; - if (orderOfMagnitude < 0) { - start = orderOfMagnitude; + /** + * Perform one discrete step for the node + * @param {number} interval Time interval in seconds + */ + Node.prototype.discreteStep = function(interval) { + this.storeState(); + if (!this.xFixed) { + var dx = this.damping * this.vx; // damping force + var ax = (this.fx - dx) / this.options.mass; // acceleration + this.vx += ax * interval; // velocity + this.x += this.vx * interval; // position + } + else { + this.fx = 0; + this.vx = 0; } - var solutionFound = false; - for (var i = start; Math.abs(i) <= Math.abs(orderOfMagnitude); i++) { - magnitudefactor = Math.pow(10,i); - for (var j = 0; j < this.minorSteps.length; j++) { - var stepSize = magnitudefactor * this.minorSteps[j]; - if (stepSize >= minimumStepValue) { - solutionFound = true; - minorStepIdx = j; - break; - } - } - if (solutionFound == true) { - break; - } + if (!this.yFixed) { + var dy = this.damping * this.vy; // damping force + var ay = (this.fy - dy) / this.options.mass; // acceleration + this.vy += ay * interval; // velocity + this.y += this.vy * interval; // position + } + else { + this.fy = 0; + this.vy = 0; } - this.stepIndex = minorStepIdx; - this.scale = magnitudefactor; - this.step = magnitudefactor * this.minorSteps[minorStepIdx]; }; /** - * Round the current date to the first minor date value - * This must be executed once when the current date is set to start Date + * Perform one discrete step for the node + * @param {number} interval Time interval in seconds + * @param {number} maxVelocity The speed limit imposed on the velocity */ - DataStep.prototype.setFirst = function(customRange) { - if (customRange === undefined) { - customRange = {}; + Node.prototype.discreteStepLimited = function(interval, maxVelocity) { + this.storeState(); + if (!this.xFixed) { + var dx = this.damping * this.vx; // damping force + var ax = (this.fx - dx) / this.options.mass; // acceleration + this.vx += ax * interval; // velocity + this.vx = (Math.abs(this.vx) > maxVelocity) ? ((this.vx > 0) ? maxVelocity : -maxVelocity) : this.vx; + this.x += this.vx * interval; // position } - - var niceStart = customRange.min === undefined ? this._start - (this.scale * 2 * this.minorSteps[this.stepIndex]) : customRange.min; - var niceEnd = customRange.max === undefined ? this._end + (this.scale * this.minorSteps[this.stepIndex]) : customRange.max; - - this.marginEnd = customRange.max === undefined ? this.roundToMinor(niceEnd) : customRange.max; - this.marginStart = customRange.min === undefined ? this.roundToMinor(niceStart) : customRange.min; - - // if we need to align the zero's we need to make sure that there is a zero to use. - if (this.alignZeros == true && (this.marginEnd - this.marginStart) % this.step != 0) { - this.marginEnd += this.marginEnd % this.step; + else { + this.fx = 0; + this.vx = 0; } - this.deadSpace = this.roundToMinor(niceEnd) - niceEnd + this.roundToMinor(niceStart) - niceStart; - this.marginRange = this.marginEnd - this.marginStart; - - - this.current = this.marginEnd; - }; - - DataStep.prototype.roundToMinor = function(value) { - var rounded = value - (value % (this.scale * this.minorSteps[this.stepIndex])); - if (value % (this.scale * this.minorSteps[this.stepIndex]) > 0.5 * (this.scale * this.minorSteps[this.stepIndex])) { - return rounded + (this.scale * this.minorSteps[this.stepIndex]); + if (!this.yFixed) { + var dy = this.damping * this.vy; // damping force + var ay = (this.fy - dy) / this.options.mass; // acceleration + this.vy += ay * interval; // velocity + this.vy = (Math.abs(this.vy) > maxVelocity) ? ((this.vy > 0) ? maxVelocity : -maxVelocity) : this.vy; + this.y += this.vy * interval; // position } else { - return rounded; + this.fy = 0; + this.vy = 0; } - } - + }; /** - * Check if the there is a next step - * @return {boolean} true if the current date has not passed the end date + * Check if this node has a fixed x and y position + * @return {boolean} true if fixed, false if not */ - DataStep.prototype.hasNext = function () { - return (this.current >= this.marginStart); + Node.prototype.isFixed = function() { + return (this.xFixed && this.yFixed); }; /** - * Do the next step + * Check if this node is moving + * @param {number} vmin the minimum velocity considered as "moving" + * @return {boolean} true if moving, false if it has no velocity */ - DataStep.prototype.next = function() { - var prev = this.current; - this.current -= this.step; + Node.prototype.isMoving = function(vmin) { + var velocity = Math.sqrt(Math.pow(this.vx,2) + Math.pow(this.vy,2)); + // this.velocity = Math.sqrt(Math.pow(this.vx,2) + Math.pow(this.vy,2)) + return (velocity > vmin); + }; - // safety mechanism: if current time is still unchanged, move to the end - if (this.current == prev) { - this.current = this._end; - } + /** + * check if this node is selecte + * @return {boolean} selected True if node is selected, else false + */ + Node.prototype.isSelected = function() { + return this.selected; }; /** - * Do the next step + * Retrieve the value of the node. Can be undefined + * @return {Number} value */ - DataStep.prototype.previous = function() { - this.current += this.step; - this.marginEnd += this.step; - this.marginRange = this.marginEnd - this.marginStart; + Node.prototype.getValue = function() { + return this.value; }; + /** + * Calculate the distance from the nodes location to the given location (x,y) + * @param {Number} x + * @param {Number} y + * @return {Number} value + */ + Node.prototype.getDistance = function(x, y) { + var dx = this.x - x, + dy = this.y - y; + return Math.sqrt(dx * dx + dy * dy); + }; /** - * Get the current datetime - * @return {String} current The current date + * Adjust the value range of the node. The node will adjust it's radius + * based on its value. + * @param {Number} min + * @param {Number} max */ - DataStep.prototype.getCurrent = function(decimals) { - // prevent round-off errors when close to zero - var current = (Math.abs(this.current) < this.step / 2) ? 0 : this.current; - var toPrecision = '' + Number(current).toPrecision(5); - - // If decimals is specified, then limit or extend the string as required - if(decimals !== undefined && !isNaN(Number(decimals))) { - // If string includes exponent, then we need to add it to the end - var exp = ""; - var index = toPrecision.indexOf("e"); - if(index != -1) { - // Get the exponent - exp = toPrecision.slice(index); - // Remove the exponent in case we need to zero-extend - toPrecision = toPrecision.slice(0, index); - } - index = Math.max(toPrecision.indexOf(","), toPrecision.indexOf(".")); - if(index === -1) { - // No decimal found - if we want decimals, then we need to add it - if(decimals !== 0) { - toPrecision += '.'; - } - // Calculate how long the string should be - index = toPrecision.length + decimals; - } - else if(decimals !== 0) { - // Calculate how long the string should be - accounting for the decimal place - index += decimals + 1; - } - if(index > toPrecision.length) { - // We need to add zeros! - for(var cnt = index - toPrecision.length; cnt > 0; cnt--) { - toPrecision += '0'; - } - } - else { - // we need to remove characters - toPrecision = toPrecision.slice(0, index); - } - // Add the exponent if there is one - toPrecision += exp; - } - else { - if (toPrecision.indexOf(",") != -1 || toPrecision.indexOf(".") != -1) { - // If no decimal is specified, and there are decimal places, remove trailing zeros - for (var i = toPrecision.length - 1; i > 0; i--) { - if (toPrecision[i] == "0") { - toPrecision = toPrecision.slice(0, i); - } - else if (toPrecision[i] == "." || toPrecision[i] == ",") { - toPrecision = toPrecision.slice(0, i); - break; - } - else { - break; - } - } + Node.prototype.setValueRange = function(min, max, total) { + if (!this.radiusFixed && this.value !== undefined) { + var scale = this.options.customScalingFunction(min, max, total, this.value); + var radiusDiff = this.options.radiusMax - this.options.radiusMin; + if (this.options.scaleFontWithValue == true) { + var fontDiff = this.options.fontSizeMax - this.options.fontSizeMin; + this.options.fontSize = this.options.fontSizeMin + scale * fontDiff; } + this.options.radius = this.options.radiusMin + scale * radiusDiff; } - return toPrecision; + this.baseRadiusValue = this.options.radius; }; /** - * Check if the current value is a major value (for example when the step - * is DAY, a major value is each first day of the MONTH) - * @return {boolean} true if current date is major, else false. + * Draw this node in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx */ - DataStep.prototype.isMajor = function() { - return (this.current % (this.scale * this.majorSteps[this.stepIndex]) == 0); + Node.prototype.draw = function(ctx) { + throw "Draw method not initialized for node"; }; - module.exports = DataStep; - - -/***/ }, -/* 45 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(6); - var Line = __webpack_require__(46); - var Bar = __webpack_require__(48); - var Points = __webpack_require__(47); + /** + * Recalculate the size of this node in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + */ + Node.prototype.resize = function(ctx) { + throw "Resize method not initialized for node"; + }; /** - * /** - * @param {object} group | the object of the group from the dataset - * @param {string} groupId | ID of the group - * @param {object} options | the default options - * @param {array} groupsUsingDefaultStyles | this array has one entree. - * It is passed as an array so it is passed by reference. - * It enumerates through the default styles - * @constructor + * Check if this object is overlapping with the provided object + * @param {Object} obj an object with parameters left, top, right, bottom + * @return {boolean} True if location is located on node */ - function GraphGroup (group, groupId, options, groupsUsingDefaultStyles) { - this.id = groupId; - var fields = ['sampling','style','sort','yAxisOrientation','barChart','drawPoints','shaded','catmullRom'] - this.options = util.selectiveBridgeObject(fields,options); - this.usingDefaultStyle = group.className === undefined; - this.groupsUsingDefaultStyles = groupsUsingDefaultStyles; - this.zeroPosition = 0; - this.update(group); - if (this.usingDefaultStyle == true) { - this.groupsUsingDefaultStyles[0] += 1; - } - this.itemsData = []; - this.visible = group.visible === undefined ? true : group.visible; - } + Node.prototype.isOverlappingWith = function(obj) { + return (this.left < obj.right && + this.left + this.width > obj.left && + this.top < obj.bottom && + this.top + this.height > obj.top); + }; + Node.prototype._resizeImage = function (ctx) { + // TODO: pre calculate the image size - /** - * this loads a reference to all items in this group into this group. - * @param {array} items - */ - GraphGroup.prototype.setItems = function(items) { - if (items != null) { - this.itemsData = items; - if (this.options.sort == true) { - this.itemsData.sort(function (a,b) {return a.x - b.x;}) + if (!this.width || !this.height) { // undefined or 0 + var width, height; + if (this.value) { + this.options.radius= this.baseRadiusValue; + var scale = this.imageObj.height / this.imageObj.width; + if (scale !== undefined) { + width = this.options.radius|| this.imageObj.width; + height = this.options.radius* scale || this.imageObj.height; + } + else { + width = 0; + height = 0; + } } - } - else { - this.itemsData = []; - } - }; - + else { + width = this.imageObj.width; + height = this.imageObj.height; + } + this.width = width; + this.height = height; - /** - * this is used for plotting barcharts, this way, we only have to calculate it once. - * @param pos - */ - GraphGroup.prototype.setZeroPosition = function(pos) { - this.zeroPosition = pos; + this.growthIndicator = 0; + if (this.width > 0 && this.height > 0) { + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - width; + } + } }; + Node.prototype._drawImageAtPosition = function (ctx) { + if (this.imageObj.width != 0 ) { + // draw the shade + if (this.clusterSize > 1) { + var lineWidth = ((this.clusterSize > 1) ? 10 : 0.0); + lineWidth *= this.networkScaleInv; + lineWidth = Math.min(0.2 * this.width,lineWidth); - /** - * set the options of the graph group over the default options. - * @param options - */ - GraphGroup.prototype.setOptions = function(options) { - if (options !== undefined) { - var fields = ['sampling','style','sort','yAxisOrientation','barChart']; - util.selectiveDeepExtend(fields, this.options, options); - - util.mergeOptions(this.options, options,'catmullRom'); - util.mergeOptions(this.options, options,'drawPoints'); - util.mergeOptions(this.options, options,'shaded'); - - if (options.catmullRom) { - if (typeof options.catmullRom == 'object') { - if (options.catmullRom.parametrization) { - if (options.catmullRom.parametrization == 'uniform') { - this.options.catmullRom.alpha = 0; - } - else if (options.catmullRom.parametrization == 'chordal') { - this.options.catmullRom.alpha = 1.0; - } - else { - this.options.catmullRom.parametrization = 'centripetal'; - this.options.catmullRom.alpha = 0.5; - } - } - } + ctx.globalAlpha = 0.5; + ctx.drawImage(this.imageObj, this.left - lineWidth, this.top - lineWidth, this.width + 2*lineWidth, this.height + 2*lineWidth); } - } - if (this.options.style == 'line') { - this.type = new Line(this.id, this.options); - } - else if (this.options.style == 'bar') { - this.type = new Bar(this.id, this.options); - } - else if (this.options.style == 'points') { - this.type = new Points(this.id, this.options); + // draw the image + ctx.globalAlpha = 1.0; + ctx.drawImage(this.imageObj, this.left, this.top, this.width, this.height); } }; + Node.prototype._drawImageLabel = function (ctx) { + var yLabel; + var offset = 0; + + if (this.height){ + offset = this.height / 2; + var labelDimensions = this.getTextSize(ctx); + + if (labelDimensions.lineCount >= 1){ + offset += labelDimensions.height / 2; + offset += 3; + } + } + + yLabel = this.y + offset; - /** - * this updates the current group class with the latest group dataset entree, used in _updateGroup in linegraph - * @param group - */ - GraphGroup.prototype.update = function(group) { - this.group = group; - this.content = group.content || 'graph'; - this.className = group.className || this.className || "graphGroup" + this.groupsUsingDefaultStyles[0] % 10; - this.visible = group.visible === undefined ? true : group.visible; - this.style = group.style; - this.setOptions(group.options); + this._label(ctx, this.label, this.x, yLabel, undefined); }; + Node.prototype._drawImage = function (ctx) { + this._resizeImage(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - /** - * draw the icon for the legend. - * - * @param x - * @param y - * @param JSONcontainer - * @param SVGcontainer - * @param iconWidth - * @param iconHeight - */ - GraphGroup.prototype.drawIcon = function(x, y, JSONcontainer, SVGcontainer, iconWidth, iconHeight) { - var fillHeight = iconHeight * 0.5; - var path, fillPath; + this._drawImageAtPosition(ctx); - var outline = DOMutil.getSVGElement("rect", JSONcontainer, SVGcontainer); - outline.setAttributeNS(null, "x", x); - outline.setAttributeNS(null, "y", y - fillHeight); - outline.setAttributeNS(null, "width", iconWidth); - outline.setAttributeNS(null, "height", 2*fillHeight); - outline.setAttributeNS(null, "class", "outline"); + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; - if (this.options.style == 'line') { - path = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); - path.setAttributeNS(null, "class", this.className); - if(this.style !== undefined) { - path.setAttributeNS(null, "style", this.style); - } + this._drawImageLabel(ctx); + this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); + }; - path.setAttributeNS(null, "d", "M" + x + ","+y+" L" + (x + iconWidth) + ","+y+""); - if (this.options.shaded.enabled == true) { - fillPath = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); - if (this.options.shaded.orientation == 'top') { - fillPath.setAttributeNS(null, "d", "M"+x+", " + (y - fillHeight) + - "L"+x+","+y+" L"+ (x + iconWidth) + ","+y+" L"+ (x + iconWidth) + "," + (y - fillHeight)); - } - else { - fillPath.setAttributeNS(null, "d", "M"+x+","+y+" " + - "L"+x+"," + (y + fillHeight) + " " + - "L"+ (x + iconWidth) + "," + (y + fillHeight) + - "L"+ (x + iconWidth) + ","+y); - } - fillPath.setAttributeNS(null, "class", this.className + " iconFill"); - } + Node.prototype._resizeCircularImage = function (ctx) { + if(!this.imageObj.src || !this.imageObj.width || !this.imageObj.height){ + if (!this.width) { + var diameter = this.options.radius * 2; + this.width = diameter; + this.height = diameter; - if (this.options.drawPoints.enabled == true) { - DOMutil.drawPoint(x + 0.5 * iconWidth,y, this, JSONcontainer, SVGcontainer); + // scaling used for clustering + //this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; + //this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; + this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; + this.growthIndicator = this.options.radius- 0.5*diameter; + this._swapToImageResizeWhenImageLoaded = true; } } else { - var barWidth = Math.round(0.3 * iconWidth); - var bar1Height = Math.round(0.4 * iconHeight); - var bar2Height = Math.round(0.75 * iconHeight); - - var offset = Math.round((iconWidth - (2 * barWidth))/3); - - DOMutil.drawBar(x + 0.5*barWidth + offset , y + fillHeight - bar1Height - 1, barWidth, bar1Height, this.className + ' bar', JSONcontainer, SVGcontainer); - DOMutil.drawBar(x + 1.5*barWidth + offset + 2, y + fillHeight - bar2Height - 1, barWidth, bar2Height, this.className + ' bar', JSONcontainer, SVGcontainer); + if (this._swapToImageResizeWhenImageLoaded) { + this.width = 0; + this.height = 0; + delete this._swapToImageResizeWhenImageLoaded; + } + this._resizeImage(ctx); } + }; + Node.prototype._drawCircularImage = function (ctx) { + this._resizeCircularImage(ctx); - /** - * return the legend entree for this group. - * - * @param iconWidth - * @param iconHeight - * @returns {{icon: HTMLElement, label: (group.content|*|string), orientation: (.options.yAxisOrientation|*)}} - */ - GraphGroup.prototype.getLegend = function(iconWidth, iconHeight) { - var svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); - this.drawIcon(0,0.5*iconHeight,[],svg,iconWidth,iconHeight); - return {icon: svg, label: this.content, orientation:this.options.yAxisOrientation}; - } + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; + + var centerX = this.left + (this.width / 2); + var centerY = this.top + (this.height / 2); + var radius = Math.abs(this.height / 2); - GraphGroup.prototype.getYRange = function(groupData) { - return this.type.getYRange(groupData); - } + this._drawRawCircle(ctx, centerX, centerY, radius); - GraphGroup.prototype.draw = function(dataset, group, framework) { - this.type.draw(dataset, group, framework); - } + ctx.save(); + ctx.circle(this.x, this.y, radius); + ctx.stroke(); + ctx.clip(); + this._drawImageAtPosition(ctx); - module.exports = GraphGroup; + ctx.restore(); + this.boundingBox.top = this.y - this.options.radius; + this.boundingBox.left = this.x - this.options.radius; + this.boundingBox.right = this.x + this.options.radius; + this.boundingBox.bottom = this.y + this.options.radius; -/***/ }, -/* 46 */ -/***/ function(module, exports, __webpack_require__) { + this._drawImageLabel(ctx); + + this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); + }; - /** - * Created by Alex on 11/11/2014. - */ - var DOMutil = __webpack_require__(6); - var Points = __webpack_require__(47); + Node.prototype._resizeBox = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + this.width = textSize.width + 2 * margin; + this.height = textSize.height + 2 * margin; - function Line(groupId, options) { - this.groupId = groupId; - this.options = options; - } + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; + this.growthIndicator = this.width - (textSize.width + 2 * margin); + // this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; - Line.prototype.getYRange = function(groupData) { - var yMin = groupData[0].y; - var yMax = groupData[0].y; - for (var j = 0; j < groupData.length; j++) { - yMin = yMin > groupData[j].y ? groupData[j].y : yMin; - yMax = yMax < groupData[j].y ? groupData[j].y : yMax; } - return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; }; + Node.prototype._drawBox = function (ctx) { + this._resizeBox(ctx); - /** - * draw a line graph - * - * @param dataset - * @param group - */ - Line.prototype.draw = function (dataset, group, framework) { - if (dataset != null) { - if (dataset.length > 0) { - var path, d; - var svgHeight = Number(framework.svg.style.height.replace('px','')); - path = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); - path.setAttributeNS(null, "class", group.className); - if(group.style !== undefined) { - path.setAttributeNS(null, "style", group.style); - } + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - // construct path from dataset - if (group.options.catmullRom.enabled == true) { - d = Line._catmullRom(dataset, group); - } - else { - d = Line._linear(dataset); - } + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - // append with points for fill and finalize the path - if (group.options.shaded.enabled == true) { - var fillPath = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); - var dFill; - if (group.options.shaded.orientation == 'top') { - dFill = 'M' + dataset[0].x + ',' + 0 + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + 0; - } - else { - dFill = 'M' + dataset[0].x + ',' + svgHeight + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + svgHeight; - } - fillPath.setAttributeNS(null, "class", group.className + " fill"); - if(group.options.shaded.style !== undefined) { - fillPath.setAttributeNS(null, "style", group.options.shaded.style); - } - fillPath.setAttributeNS(null, "d", dFill); - } - // copy properties to path for drawing. - path.setAttributeNS(null, 'd', 'M' + d); + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - // draw points - if (group.options.drawPoints.enabled == true) { - Points.draw(dataset, group, framework); - } - } - } - }; + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + ctx.roundRect(this.left-2*ctx.lineWidth, this.top-2*ctx.lineWidth, this.width+4*ctx.lineWidth, this.height+4*ctx.lineWidth, this.options.radius); + ctx.stroke(); + } + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - /** - * This uses an uniform parametrization of the CatmullRom algorithm: - * 'On the Parameterization of Catmull-Rom Curves' by Cem Yuksel et al. - * @param data - * @returns {string} - * @private - */ - Line._catmullRomUniform = function(data) { - // catmull rom - var p0, p1, p2, p3, bp1, bp2; - var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; - var normalization = 1/6; - var length = data.length; - for (var i = 0; i < length - 1; i++) { + ctx.roundRect(this.left, this.top, this.width, this.height, this.options.radius); + ctx.fill(); + ctx.stroke(); - p0 = (i == 0) ? data[0] : data[i-1]; - p1 = data[i]; - p2 = data[i+1]; - p3 = (i + 2 < length) ? data[i+2] : p2; + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; + this._label(ctx, this.label, this.x, this.y); + }; - // Catmull-Rom to Cubic Bezier conversion matrix - // 0 1 0 0 - // -1/6 1 1/6 0 - // 0 1/6 1 -1/6 - // 0 0 1 0 - // bp0 = { x: p1.x, y: p1.y }; - bp1 = { x: ((-p0.x + 6*p1.x + p2.x) *normalization), y: ((-p0.y + 6*p1.y + p2.y) *normalization)}; - bp2 = { x: (( p1.x + 6*p2.x - p3.x) *normalization), y: (( p1.y + 6*p2.y - p3.y) *normalization)}; - // bp0 = { x: p2.x, y: p2.y }; + Node.prototype._resizeDatabase = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + var size = textSize.width + 2 * margin; + this.width = size; + this.height = size; - d += 'C' + - bp1.x + ',' + - bp1.y + ' ' + - bp2.x + ',' + - bp2.y + ' ' + - p2.x + ',' + - p2.y + ' '; + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - size; } - - return d; }; - /** - * This uses either the chordal or centripetal parameterization of the catmull-rom algorithm. - * By default, the centripetal parameterization is used because this gives the nicest results. - * These parameterizations are relatively heavy because the distance between 4 points have to be calculated. - * - * One optimization can be used to reuse distances since this is a sliding window approach. - * @param data - * @param group - * @returns {string} - * @private - */ - Line._catmullRom = function(data, group) { - var alpha = group.options.catmullRom.alpha; - if (alpha == 0 || alpha === undefined) { - return this._catmullRomUniform(data); - } - else { - var p0, p1, p2, p3, bp1, bp2, d1,d2,d3, A, B, N, M; - var d3powA, d2powA, d3pow2A, d2pow2A, d1pow2A, d1powA; - var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; - var length = data.length; - for (var i = 0; i < length - 1; i++) { + Node.prototype._drawDatabase = function (ctx) { + this._resizeDatabase(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - p0 = (i == 0) ? data[0] : data[i-1]; - p1 = data[i]; - p2 = data[i+1]; - p3 = (i + 2 < length) ? data[i+2] : p2; + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - d1 = Math.sqrt(Math.pow(p0.x - p1.x,2) + Math.pow(p0.y - p1.y,2)); - d2 = Math.sqrt(Math.pow(p1.x - p2.x,2) + Math.pow(p1.y - p2.y,2)); - d3 = Math.sqrt(Math.pow(p2.x - p3.x,2) + Math.pow(p2.y - p3.y,2)); + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - // Catmull-Rom to Cubic Bezier conversion matrix + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - // A = 2d1^2a + 3d1^a * d2^a + d3^2a - // B = 2d3^2a + 3d3^a * d2^a + d2^2a + ctx.database(this.x - this.width/2 - 2*ctx.lineWidth, this.y - this.height*0.5 - 2*ctx.lineWidth, this.width + 4*ctx.lineWidth, this.height + 4*ctx.lineWidth); + ctx.stroke(); + } + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - // [ 0 1 0 0 ] - // [ -d2^2a /N A/N d1^2a /N 0 ] - // [ 0 d3^2a /M B/M -d2^2a /M ] - // [ 0 0 1 0 ] + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; + ctx.database(this.x - this.width/2, this.y - this.height*0.5, this.width, this.height); + ctx.fill(); + ctx.stroke(); - d3powA = Math.pow(d3, alpha); - d3pow2A = Math.pow(d3,2*alpha); - d2powA = Math.pow(d2, alpha); - d2pow2A = Math.pow(d2,2*alpha); - d1powA = Math.pow(d1, alpha); - d1pow2A = Math.pow(d1,2*alpha); + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; - A = 2*d1pow2A + 3*d1powA * d2powA + d2pow2A; - B = 2*d3pow2A + 3*d3powA * d2powA + d2pow2A; - N = 3*d1powA * (d1powA + d2powA); - if (N > 0) {N = 1 / N;} - M = 3*d3powA * (d3powA + d2powA); - if (M > 0) {M = 1 / M;} + this._label(ctx, this.label, this.x, this.y); + }; - bp1 = { x: ((-d2pow2A * p0.x + A*p1.x + d1pow2A * p2.x) * N), - y: ((-d2pow2A * p0.y + A*p1.y + d1pow2A * p2.y) * N)}; - bp2 = { x: (( d3pow2A * p1.x + B*p2.x - d2pow2A * p3.x) * M), - y: (( d3pow2A * p1.y + B*p2.y - d2pow2A * p3.y) * M)}; + Node.prototype._resizeCircle = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + var diameter = Math.max(textSize.width, textSize.height) + 2 * margin; + this.options.radius = diameter / 2; - if (bp1.x == 0 && bp1.y == 0) {bp1 = p1;} - if (bp2.x == 0 && bp2.y == 0) {bp2 = p2;} - d += 'C' + - bp1.x + ',' + - bp1.y + ' ' + - bp2.x + ',' + - bp2.y + ' ' + - p2.x + ',' + - p2.y + ' '; - } + this.width = diameter; + this.height = diameter; - return d; + // scaling used for clustering + // this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; + // this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; + this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; + this.growthIndicator = this.options.radius- 0.5*diameter; } }; - /** - * this generates the SVG path for a linear drawing between datapoints. - * @param data - * @returns {string} - * @private - */ - Line._linear = function(data) { - // linear - var d = ''; - for (var i = 0; i < data.length; i++) { - if (i == 0) { - d += data[i].x + ',' + data[i].y; - } - else { - d += ' ' + data[i].x + ',' + data[i].y; - } - } - return d; - }; + Node.prototype._drawRawCircle = function (ctx, x, y, radius) { + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - module.exports = Line; + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + ctx.circle(x, y, radius+2*ctx.lineWidth); + ctx.stroke(); + } + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); -/***/ }, -/* 47 */ -/***/ function(module, exports, __webpack_require__) { + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; + ctx.circle(this.x, this.y, radius); + ctx.fill(); + ctx.stroke(); + }; - /** - * Created by Alex on 11/11/2014. - */ - var DOMutil = __webpack_require__(6); + Node.prototype._drawCircle = function (ctx) { + this._resizeCircle(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - function Points(groupId, options) { - this.groupId = groupId; - this.options = options; - } + this._drawRawCircle(ctx, this.x, this.y, this.options.radius); + this.boundingBox.top = this.y - this.options.radius; + this.boundingBox.left = this.x - this.options.radius; + this.boundingBox.right = this.x + this.options.radius; + this.boundingBox.bottom = this.y + this.options.radius; - Points.prototype.getYRange = function(groupData) { - var yMin = groupData[0].y; - var yMax = groupData[0].y; - for (var j = 0; j < groupData.length; j++) { - yMin = yMin > groupData[j].y ? groupData[j].y : yMin; - yMax = yMax < groupData[j].y ? groupData[j].y : yMax; - } - return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; + this._label(ctx, this.label, this.x, this.y); }; - Points.prototype.draw = function(dataset, group, framework, offset) { - Points.draw(dataset, group, framework, offset); - } + Node.prototype._resizeEllipse = function (ctx) { + if (!this.width) { + var textSize = this.getTextSize(ctx); - /** - * draw the data points - * - * @param {Array} dataset - * @param {Object} JSONcontainer - * @param {Object} svg | SVG DOM element - * @param {GraphGroup} group - * @param {Number} [offset] - */ - Points.draw = function (dataset, group, framework, offset) { - if (offset === undefined) {offset = 0;} - for (var i = 0; i < dataset.length; i++) { - DOMutil.drawPoint(dataset[i].x + offset, dataset[i].y, group, framework.svgElements, framework.svg, dataset[i].label); + this.width = textSize.width * 1.5; + this.height = textSize.height * 2; + if (this.width < this.height) { + this.width = this.height; + } + var defaultSize = this.width; + + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - defaultSize; } }; + Node.prototype._drawEllipse = function (ctx) { + this._resizeEllipse(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - module.exports = Points; - -/***/ }, -/* 48 */ -/***/ function(module, exports, __webpack_require__) { + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - /** - * Created by Alex on 11/11/2014. - */ - var DOMutil = __webpack_require__(6); - var Points = __webpack_require__(47); + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - function Bargraph(groupId, options) { - this.groupId = groupId; - this.options = options; - } + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - Bargraph.prototype.getYRange = function(groupData) { - if (this.options.barChart.handleOverlap != 'stack') { - var yMin = groupData[0].y; - var yMax = groupData[0].y; - for (var j = 0; j < groupData.length; j++) { - yMin = yMin > groupData[j].y ? groupData[j].y : yMin; - yMax = yMax < groupData[j].y ? groupData[j].y : yMax; - } - return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; - } - else { - var barCombinedData = []; - for (var j = 0; j < groupData.length; j++) { - barCombinedData.push({ - x: groupData[j].x, - y: groupData[j].y, - groupId: this.groupId - }); - } - return barCombinedData; + ctx.ellipse(this.left-2*ctx.lineWidth, this.top-2*ctx.lineWidth, this.width+4*ctx.lineWidth, this.height+4*ctx.lineWidth); + ctx.stroke(); } - }; - + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - /** - * draw a bar graph - * - * @param groupIds - * @param processedGroupData - */ - Bargraph.draw = function (groupIds, processedGroupData, framework) { - var combinedData = []; - var intersections = {}; - var coreDistance; - var key, drawData; - var group; - var i,j; - var barPoints = 0; + ctx.ellipse(this.left, this.top, this.width, this.height); + ctx.fill(); + ctx.stroke(); - // combine all barchart data - for (i = 0; i < groupIds.length; i++) { - group = framework.groups[groupIds[i]]; - if (group.options.style == 'bar') { - if (group.visible == true && (framework.options.groups.visibility[groupIds[i]] === undefined || framework.options.groups.visibility[groupIds[i]] == true)) { - for (j = 0; j < processedGroupData[groupIds[i]].length; j++) { - combinedData.push({ - x: processedGroupData[groupIds[i]][j].x, - y: processedGroupData[groupIds[i]][j].y, - groupId: groupIds[i] - }); - barPoints += 1; - } - } - } - } + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; - if (barPoints == 0) {return;} + this._label(ctx, this.label, this.x, this.y); + }; - // sort by time and by group - combinedData.sort(function (a, b) { - if (a.x == b.x) { - return a.groupId - b.groupId; - } else { - return a.x - b.x; - } - }); + Node.prototype._drawDot = function (ctx) { + this._drawShape(ctx, 'circle'); + }; - // get intersections - Bargraph._getDataIntersections(intersections, combinedData); + Node.prototype._drawTriangle = function (ctx) { + this._drawShape(ctx, 'triangle'); + }; - // plot barchart - for (i = 0; i < combinedData.length; i++) { - group = framework.groups[combinedData[i].groupId]; - var minWidth = 0.1 * group.options.barChart.width; + Node.prototype._drawTriangleDown = function (ctx) { + this._drawShape(ctx, 'triangleDown'); + }; - key = combinedData[i].x; - var heightOffset = 0; - if (intersections[key] === undefined) { - if (i+1 < combinedData.length) {coreDistance = Math.abs(combinedData[i+1].x - key);} - if (i > 0) {coreDistance = Math.min(coreDistance,Math.abs(combinedData[i-1].x - key));} - drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth); - } - else { - var nextKey = i + (intersections[key].amount - intersections[key].resolved); - var prevKey = i - (intersections[key].resolved + 1); - if (nextKey < combinedData.length) {coreDistance = Math.abs(combinedData[nextKey].x - key);} - if (prevKey > 0) {coreDistance = Math.min(coreDistance,Math.abs(combinedData[prevKey].x - key));} - drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth); - intersections[key].resolved += 1; + Node.prototype._drawSquare = function (ctx) { + this._drawShape(ctx, 'square'); + }; - if (group.options.barChart.handleOverlap == 'stack') { - heightOffset = intersections[key].accumulated; - intersections[key].accumulated += group.zeroPosition - combinedData[i].y; - } - else if (group.options.barChart.handleOverlap == 'sideBySide') { - drawData.width = drawData.width / intersections[key].amount; - drawData.offset += (intersections[key].resolved) * drawData.width - (0.5*drawData.width * (intersections[key].amount+1)); - if (group.options.barChart.align == 'left') {drawData.offset -= 0.5*drawData.width;} - else if (group.options.barChart.align == 'right') {drawData.offset += 0.5*drawData.width;} - } - } - DOMutil.drawBar(combinedData[i].x + drawData.offset, combinedData[i].y - heightOffset, drawData.width, group.zeroPosition - combinedData[i].y, group.className + ' bar', framework.svgElements, framework.svg); - // draw points - if (group.options.drawPoints.enabled == true) { - DOMutil.drawPoint(combinedData[i].x + drawData.offset, combinedData[i].y, group, framework.svgElements, framework.svg); - } - } + Node.prototype._drawStar = function (ctx) { + this._drawShape(ctx, 'star'); }; + Node.prototype._resizeShape = function (ctx) { + if (!this.width) { + this.options.radius= this.baseRadiusValue; + var size = 2 * this.options.radius; + this.width = size; + this.height = size; - /** - * Fill the intersections object with counters of how many datapoints share the same x coordinates - * @param intersections - * @param combinedData - * @private - */ - Bargraph._getDataIntersections = function (intersections, combinedData) { - // get intersections - var coreDistance; - for (var i = 0; i < combinedData.length; i++) { - if (i + 1 < combinedData.length) { - coreDistance = Math.abs(combinedData[i + 1].x - combinedData[i].x); - } - if (i > 0) { - coreDistance = Math.min(coreDistance, Math.abs(combinedData[i - 1].x - combinedData[i].x)); - } - if (coreDistance == 0) { - if (intersections[combinedData[i].x] === undefined) { - intersections[combinedData[i].x] = {amount: 0, resolved: 0, accumulated: 0}; - } - intersections[combinedData[i].x].amount += 1; - } + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - size; } }; + Node.prototype._drawShape = function (ctx, shape) { + this._resizeShape(ctx); - /** - * Get the width and offset for bargraphs based on the coredistance between datapoints - * - * @param coreDistance - * @param group - * @param minWidth - * @returns {{width: Number, offset: Number}} - * @private - */ - Bargraph._getSafeDrawData = function (coreDistance, group, minWidth) { - var width, offset; - if (coreDistance < group.options.barChart.width && coreDistance > 0) { - width = coreDistance < minWidth ? minWidth : coreDistance; + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; - offset = 0; // recalculate offset with the new width; - if (group.options.barChart.align == 'left') { - offset -= 0.5 * coreDistance; - } - else if (group.options.barChart.align == 'right') { - offset += 0.5 * coreDistance; - } + var clusterLineWidth = 2.5; + var borderWidth = this.options.borderWidth; + var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + var radiusMultiplier = 2; + + // choose draw method depending on the shape + switch (shape) { + case 'dot': radiusMultiplier = 2; break; + case 'square': radiusMultiplier = 2; break; + case 'triangle': radiusMultiplier = 3; break; + case 'triangleDown': radiusMultiplier = 3; break; + case 'star': radiusMultiplier = 4; break; } - else { - // default settings - width = group.options.barChart.width; - offset = 0; - if (group.options.barChart.align == 'left') { - offset -= 0.5 * group.options.barChart.width; - } - else if (group.options.barChart.align == 'right') { - offset += 0.5 * group.options.barChart.width; - } + + ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; + // draw the outer border + if (this.clusterSize > 1) { + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + + ctx[shape](this.x, this.y, this.options.radius+ radiusMultiplier * ctx.lineWidth); + ctx.stroke(); } + ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); + ctx.lineWidth *= this.networkScaleInv; + ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - return {width: width, offset: offset}; - }; + ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; + ctx[shape](this.x, this.y, this.options.radius); + ctx.fill(); + ctx.stroke(); - Bargraph.getStackedBarYRange = function(barCombinedData, groupRanges, groupIds, groupLabel, orientation) { - if (barCombinedData.length > 0) { - // sort by time and by group - barCombinedData.sort(function (a, b) { - if (a.x == b.x) { - return a.groupId - b.groupId; - } else { - return a.x - b.x; - } - }); - var intersections = {}; + this.boundingBox.top = this.y - this.options.radius; + this.boundingBox.left = this.x - this.options.radius; + this.boundingBox.right = this.x + this.options.radius; + this.boundingBox.bottom = this.y + this.options.radius; - Bargraph._getDataIntersections(intersections, barCombinedData); - groupRanges[groupLabel] = Bargraph._getStackedBarYRange(intersections, barCombinedData); - groupRanges[groupLabel].yAxisOrientation = orientation; - groupIds.push(groupLabel); + if (this.label) { + this._label(ctx, this.label, this.x, this.y + this.height / 2, undefined, 'hanging',true); + this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); } - } + }; - Bargraph._getStackedBarYRange = function (intersections, combinedData) { - var key; - var yMin = combinedData[0].y; - var yMax = combinedData[0].y; - for (var i = 0; i < combinedData.length; i++) { - key = combinedData[i].x; - if (intersections[key] === undefined) { - yMin = yMin > combinedData[i].y ? combinedData[i].y : yMin; - yMax = yMax < combinedData[i].y ? combinedData[i].y : yMax; - } - else { - intersections[key].accumulated += combinedData[i].y; - } - } - for (var xpos in intersections) { - if (intersections.hasOwnProperty(xpos)) { - yMin = yMin > intersections[xpos].accumulated ? intersections[xpos].accumulated : yMin; - yMax = yMax < intersections[xpos].accumulated ? intersections[xpos].accumulated : yMax; - } - } + Node.prototype._resizeText = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + this.width = textSize.width + 2 * margin; + this.height = textSize.height + 2 * margin; - return {min: yMin, max: yMax}; + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - (textSize.width + 2 * margin); + } }; - module.exports = Bargraph; + Node.prototype._drawText = function (ctx) { + this._resizeText(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; -/***/ }, -/* 49 */ -/***/ function(module, exports, __webpack_require__) { + this._label(ctx, this.label, this.x, this.y); - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(6); - var Component = __webpack_require__(23); + this.boundingBox.top = this.top; + this.boundingBox.left = this.left; + this.boundingBox.right = this.left + this.width; + this.boundingBox.bottom = this.top + this.height; + }; - /** - * Legend for Graph2d - */ - function Legend(body, options, side, linegraphOptions) { - this.body = body; - this.defaultOptions = { - enabled: true, - icons: true, - iconSize: 20, - iconSpacing: 6, - left: { - visible: true, - position: 'top-left' // top/bottom - left,center,right - }, - right: { - visible: true, - position: 'top-left' // top/bottom - left,center,right - } + Node.prototype._resizeIcon = function (ctx) { + if (!this.width) { + var margin = 5; + var iconSize = + { + width: Number(this.options.iconSize), + height: Number(this.options.iconSize) + }; + this.width = iconSize.width + 2 * margin; + this.height = iconSize.height + 2 * margin; + + // scaling used for clustering + this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; + this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; + this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; + this.growthIndicator = this.width - (iconSize.width + 2 * margin); } - this.side = side; - this.options = util.extend({},this.defaultOptions); - this.linegraphOptions = linegraphOptions; + }; - this.svgElements = {}; - this.dom = {}; - this.groups = {}; - this.amountOfGroups = 0; - this._create(); + Node.prototype._drawIcon = function (ctx) { + this._resizeIcon(ctx); - this.setOptions(options); - } + this.options.iconSize = this.options.iconSize || 50; - Legend.prototype = new Component(); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; + this._icon(ctx); - Legend.prototype.clear = function() { - this.groups = {}; - this.amountOfGroups = 0; - } - Legend.prototype.addGroup = function(label, graphOptions) { + this.boundingBox.top = this.y - this.options.iconSize/2; + this.boundingBox.left = this.x - this.options.iconSize/2; + this.boundingBox.right = this.x + this.options.iconSize/2; + this.boundingBox.bottom = this.y + this.options.iconSize/2; - if (!this.groups.hasOwnProperty(label)) { - this.groups[label] = graphOptions; - } - this.amountOfGroups += 1; - }; - - Legend.prototype.updateGroup = function(label, graphOptions) { - this.groups[label] = graphOptions; - }; + if (this.label) { + var iconTextSpacing = 5; + this._label(ctx, this.label, this.x, this.y + this.height / 2 + iconTextSpacing, 'top', true); - Legend.prototype.removeGroup = function(label) { - if (this.groups.hasOwnProperty(label)) { - delete this.groups[label]; - this.amountOfGroups -= 1; + this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); + this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); + this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); } }; - Legend.prototype._create = function() { - this.dom.frame = document.createElement('div'); - this.dom.frame.className = 'legend'; - this.dom.frame.style.position = "absolute"; - this.dom.frame.style.top = "10px"; - this.dom.frame.style.display = "block"; - - this.dom.textArea = document.createElement('div'); - this.dom.textArea.className = 'legendText'; - this.dom.textArea.style.position = "relative"; - this.dom.textArea.style.top = "0px"; + Node.prototype._icon = function (ctx) { + var relativeIconSize = Number(this.options.iconSize) * this.networkScale; + + if (this.options.icon && relativeIconSize > this.options.fontDrawThreshold - 1) { - this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); - this.svg.style.position = 'absolute'; - this.svg.style.top = 0 +'px'; - this.svg.style.width = this.options.iconSize + 5 + 'px'; - this.svg.style.height = '100%'; + var iconSize = Number(this.options.iconSize); - this.dom.frame.appendChild(this.svg); - this.dom.frame.appendChild(this.dom.textArea); - }; + ctx.font = (this.selected ? "bold " : "") + iconSize + "px " + this.options.iconFontFace; - /** - * Hide the component from the DOM - */ - Legend.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); + // draw icon + ctx.fillStyle = this.options.iconColor || "black"; + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + ctx.fillText(this.options.icon, this.x, this.y); } }; + + Node.prototype._label = function (ctx, text, x, y, align, baseline, labelUnderNode) { + var relativeFontSize = Number(this.options.fontSize) * this.networkScale; + if (text && relativeFontSize >= this.options.fontDrawThreshold - 1) { + var fontSize = Number(this.options.fontSize); - /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed - */ - Legend.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); - } - }; + // this ensures that there will not be HUGE letters on screen by setting an upper limit on the visible text size (regardless of zoomLevel) + if (relativeFontSize >= this.options.fontSizeMaxVisible) { + fontSize = Number(this.options.fontSizeMaxVisible) * this.networkScaleInv; + } - Legend.prototype.setOptions = function(options) { - var fields = ['enabled','orientation','icons','left','right']; - util.selectiveDeepExtend(fields, this.options, options); - }; + // fade in when relative scale is between threshold and threshold - 1 + var fontColor = this.options.fontColor || "#000000"; + var strokecolor = this.options.fontStrokeColor; + if (relativeFontSize <= this.options.fontDrawThreshold) { + var opacity = Math.max(0,Math.min(1,1 - (this.options.fontDrawThreshold - relativeFontSize))); + fontColor = util.overrideOpacity(fontColor, opacity); + strokecolor = util.overrideOpacity(strokecolor, opacity); - Legend.prototype.redraw = function() { - var activeGroups = 0; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - activeGroups++; - } } - } - if (this.options[this.side].visible == false || this.amountOfGroups == 0 || this.options.enabled == false || activeGroups == 0) { - this.hide(); - } - else { - this.show(); - if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'bottom-left') { - this.dom.frame.style.left = '4px'; - this.dom.frame.style.textAlign = "left"; - this.dom.textArea.style.textAlign = "left"; - this.dom.textArea.style.left = (this.options.iconSize + 15) + 'px'; - this.dom.textArea.style.right = ''; - this.svg.style.left = 0 +'px'; - this.svg.style.right = ''; - } - else { - this.dom.frame.style.right = '4px'; - this.dom.frame.style.textAlign = "right"; - this.dom.textArea.style.textAlign = "right"; - this.dom.textArea.style.right = (this.options.iconSize + 15) + 'px'; - this.dom.textArea.style.left = ''; - this.svg.style.right = 0 +'px'; - this.svg.style.left = ''; + ctx.font = (this.selected ? "bold " : "") + fontSize + "px " + this.options.fontFace; + + var lines = text.split('\n'); + var lineCount = lines.length; + var yLine = y + (1 - lineCount) / 2 * fontSize; + if (labelUnderNode == true) { + yLine = y + (1 - lineCount) / (2 * fontSize); } - if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'top-right') { - this.dom.frame.style.top = 4 - Number(this.body.dom.center.style.top.replace("px","")) + 'px'; - this.dom.frame.style.bottom = ''; + // font fill from edges now for nodes! + var width = ctx.measureText(lines[0]).width; + for (var i = 1; i < lineCount; i++) { + var lineWidth = ctx.measureText(lines[i]).width; + width = lineWidth > width ? lineWidth : width; } - else { - var scrollableHeight = this.body.domProps.center.height - this.body.domProps.centerContainer.height; - this.dom.frame.style.bottom = 4 + scrollableHeight + Number(this.body.dom.center.style.top.replace("px","")) + 'px'; - this.dom.frame.style.top = ''; + var height = fontSize * lineCount; + var left = x - width / 2; + var top = y - height / 2; + if (baseline == "hanging") { + top += 0.5 * fontSize; + top += 4; // distance from node, required because we use hanging. Hanging has less difference between browsers + yLine += 4; // distance from node } + this.labelDimensions = {top:top,left:left,width:width,height:height,yLine:yLine}; - if (this.options.icons == false) { - this.dom.frame.style.width = this.dom.textArea.offsetWidth + 10 + 'px'; - this.dom.textArea.style.right = ''; - this.dom.textArea.style.left = ''; - this.svg.style.width = '0px'; - } - else { - this.dom.frame.style.width = this.options.iconSize + 15 + this.dom.textArea.offsetWidth + 10 + 'px' - this.drawLegendIcons(); + // create the fontfill background + if (this.options.fontFill !== undefined && this.options.fontFill !== null && this.options.fontFill !== "none") { + ctx.fillStyle = this.options.fontFill; + ctx.fillRect(left, top, width, height); } - var content = ''; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - content += this.groups[groupId].content + '
'; - } + // draw text + ctx.fillStyle = fontColor; + ctx.textAlign = align || "center"; + ctx.textBaseline = baseline || "middle"; + if (this.options.fontStrokeWidth > 0){ + ctx.lineWidth = this.options.fontStrokeWidth; + ctx.strokeStyle = strokecolor; + ctx.lineJoin = 'round'; + } + for (var i = 0; i < lineCount; i++) { + if(this.options.fontStrokeWidth){ + ctx.strokeText(lines[i], x, yLine); } + ctx.fillText(lines[i], x, yLine); + yLine += fontSize; } - this.dom.textArea.innerHTML = content; - this.dom.textArea.style.lineHeight = ((0.75 * this.options.iconSize) + this.options.iconSpacing) + 'px'; } }; - Legend.prototype.drawLegendIcons = function() { - if (this.dom.frame.parentNode) { - DOMutil.prepareElements(this.svgElements); - var padding = window.getComputedStyle(this.dom.frame).paddingTop; - var iconOffset = Number(padding.replace('px','')); - var x = iconOffset; - var iconWidth = this.options.iconSize; - var iconHeight = 0.75 * this.options.iconSize; - var y = iconOffset + 0.5 * iconHeight + 3; - this.svg.style.width = iconWidth + 5 + iconOffset + 'px'; + Node.prototype.getTextSize = function(ctx) { + if (this.label !== undefined) { + var fontSize = Number(this.options.fontSize); + if (fontSize * this.networkScale > this.options.fontSizeMaxVisible) { + fontSize = Number(this.options.fontSizeMaxVisible) * this.networkScaleInv; + } + ctx.font = (this.selected ? "bold " : "") + fontSize + "px " + this.options.fontFace; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); - y += iconHeight + this.options.iconSpacing; - } - } + var lines = this.label.split('\n'), + height = (fontSize + 4) * lines.length, + width = 0; + + for (var i = 0, iMax = lines.length; i < iMax; i++) { + width = Math.max(width, ctx.measureText(lines[i]).width); } - DOMutil.cleanupElements(this.svgElements); + return {"width": width, "height": height, lineCount: lines.length}; + } + else { + return {"width": 0, "height": 0, lineCount: 0}; } }; - module.exports = Legend; + /** + * this is used to determine if a node is visible at all. this is used to determine when it needs to be drawn. + * there is a safety margin of 0.3 * width; + * + * @returns {boolean} + */ + Node.prototype.inArea = function() { + if (this.width !== undefined) { + return (this.x + this.width *this.networkScaleInv >= this.canvasTopLeft.x && + this.x - this.width *this.networkScaleInv < this.canvasBottomRight.x && + this.y + this.height*this.networkScaleInv >= this.canvasTopLeft.y && + this.y - this.height*this.networkScaleInv < this.canvasBottomRight.y); + } + else { + return true; + } + }; + /** + * checks if the core of the node is in the display area, this is used for opening clusters around zoom + * @returns {boolean} + */ + Node.prototype.inView = function() { + return (this.x >= this.canvasTopLeft.x && + this.x < this.canvasBottomRight.x && + this.y >= this.canvasTopLeft.y && + this.y < this.canvasBottomRight.y); + }; -/***/ }, -/* 50 */ -/***/ function(module, exports, __webpack_require__) { + /** + * This allows the zoom level of the network to influence the rendering + * We store the inverted scale and the coordinates of the top left, and bottom right points of the canvas + * + * @param scale + * @param canvasTopLeft + * @param canvasBottomRight + */ + Node.prototype.setScaleAndPos = function(scale,canvasTopLeft,canvasBottomRight) { + this.networkScaleInv = 1.0/scale; + this.networkScale = scale; + this.canvasTopLeft = canvasTopLeft; + this.canvasBottomRight = canvasBottomRight; + }; - // Utility functions for ordering and stacking of items - var EPSILON = 0.001; // used when checking collisions, to prevent round-off errors /** - * Order items by their start data - * @param {Item[]} items + * This allows the zoom level of the network to influence the rendering + * + * @param scale */ - exports.orderByStart = function(items) { - items.sort(function (a, b) { - return a.data.start - b.data.start; - }); + Node.prototype.setScale = function(scale) { + this.networkScaleInv = 1.0/scale; + this.networkScale = scale; }; + + /** - * Order items by their end date. If they have no end date, their start date - * is used. - * @param {Item[]} items + * set the velocity at 0. Is called when this node is contained in another during clustering */ - exports.orderByEnd = function(items) { - items.sort(function (a, b) { - var aTime = ('end' in a.data) ? a.data.end : a.data.start, - bTime = ('end' in b.data) ? b.data.end : b.data.start; - - return aTime - bTime; - }); + Node.prototype.clearVelocity = function() { + this.vx = 0; + this.vy = 0; }; + /** - * Adjust vertical positions of the items such that they don't overlap each - * other. - * @param {Item[]} items - * All visible items - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * Margins between items and between items and the axis. - * @param {boolean} [force=false] - * If true, all items will be repositioned. If false (default), only - * items having a top===null will be re-stacked + * Basic preservation of (kinectic) energy + * + * @param massBeforeClustering */ - exports.stack = function(items, margin, force) { - var i, iMax; + Node.prototype.updateVelocity = function(massBeforeClustering) { + var energyBefore = this.vx * this.vx * massBeforeClustering; + //this.vx = (this.vx < 0) ? -Math.sqrt(energyBefore/this.options.mass) : Math.sqrt(energyBefore/this.options.mass); + this.vx = Math.sqrt(energyBefore/this.options.mass); + energyBefore = this.vy * this.vy * massBeforeClustering; + //this.vy = (this.vy < 0) ? -Math.sqrt(energyBefore/this.options.mass) : Math.sqrt(energyBefore/this.options.mass); + this.vy = Math.sqrt(energyBefore/this.options.mass); + }; - if (force) { - // reset top position of all items - for (i = 0, iMax = items.length; i < iMax; i++) { - items[i].top = null; - } - } + module.exports = Node; - // calculate new, non-overlapping positions - for (i = 0, iMax = items.length; i < iMax; i++) { - var item = items[i]; - if (item.stack && item.top === null) { - // initialize top position - item.top = margin.axis; - do { - // TODO: optimize checking for overlap. when there is a gap without items, - // you only need to check for items from the next item on, not from zero - var collidingItem = null; - for (var j = 0, jj = items.length; j < jj; j++) { - var other = items[j]; - if (other.top !== null && other !== item && other.stack && exports.collision(item, other, margin.item)) { - collidingItem = other; - break; - } - } +/***/ }, +/* 41 */ +/***/ function(module, exports, __webpack_require__) { - if (collidingItem != null) { - // There is a collision. Reposition the items above the colliding element - item.top = collidingItem.top + collidingItem.height + margin.item.vertical; + /** + * Popup is a class to create a popup window with some text + * @param {Element} container The container object. + * @param {Number} [x] + * @param {Number} [y] + * @param {String} [text] + * @param {Object} [style] An object containing borderColor, + * backgroundColor, etc. + */ + function Popup(container, x, y, text, style) { + if (container) { + this.container = container; + } + else { + this.container = document.body; + } + + // x, y and text are optional, see if a style object was passed in their place + if (style === undefined) { + if (typeof x === "object") { + style = x; + x = undefined; + } else if (typeof text === "object") { + style = text; + text = undefined; + } else { + // for backwards compatibility, in case clients other than Network are creating Popup directly + style = { + fontColor: 'black', + fontSize: 14, // px + fontFace: 'verdana', + color: { + border: '#666', + background: '#FFFFC6' } - } while (collidingItem); + } } } + + this.x = 0; + this.y = 0; + this.padding = 5; + this.hidden = false; + + if (x !== undefined && y !== undefined) { + this.setPosition(x, y); + } + if (text !== undefined) { + this.setText(text); + } + + // create the frame + this.frame = document.createElement('div'); + this.frame.className = 'network-tooltip'; + this.frame.style.color = style.fontColor; + this.frame.style.backgroundColor = style.color.background; + this.frame.style.borderColor = style.color.border; + this.frame.style.fontSize = style.fontSize + 'px'; + this.frame.style.fontFamily = style.fontFace; + this.container.appendChild(this.frame); + } + + /** + * @param {number} x Horizontal position of the popup window + * @param {number} y Vertical position of the popup window + */ + Popup.prototype.setPosition = function(x, y) { + this.x = parseInt(x); + this.y = parseInt(y); }; + /** + * Set the content for the popup window. This can be HTML code or text. + * @param {string | Element} content + */ + Popup.prototype.setText = function(content) { + if (content instanceof Element) { + this.frame.innerHTML = ''; + this.frame.appendChild(content); + } + else { + this.frame.innerHTML = content; // string containing text or HTML + } + }; /** - * Adjust vertical positions of the items without stacking them - * @param {Item[]} items - * All visible items - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * Margins between items and between items and the axis. + * Show the popup window + * @param {boolean} show Optional. Show or hide the window */ - exports.nostack = function(items, margin, subgroups) { - var i, iMax, newTop; + Popup.prototype.show = function (show) { + if (show === undefined) { + show = true; + } - // reset top position of all items - for (i = 0, iMax = items.length; i < iMax; i++) { - if (items[i].data.subgroup !== undefined) { - newTop = margin.axis; - for (var subgroup in subgroups) { - if (subgroups.hasOwnProperty(subgroup)) { - if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroups[items[i].data.subgroup].index) { - newTop += subgroups[subgroup].height + margin.item.vertical; - } - } - } - items[i].top = newTop; + if (show) { + var height = this.frame.clientHeight; + var width = this.frame.clientWidth; + var maxHeight = this.frame.parentNode.clientHeight; + var maxWidth = this.frame.parentNode.clientWidth; + + var top = (this.y - height); + if (top + height + this.padding > maxHeight) { + top = maxHeight - height - this.padding; } - else { - items[i].top = margin.axis; + if (top < this.padding) { + top = this.padding; + } + + var left = this.x; + if (left + width + this.padding > maxWidth) { + left = maxWidth - width - this.padding; } + if (left < this.padding) { + left = this.padding; + } + + this.frame.style.left = left + "px"; + this.frame.style.top = top + "px"; + this.frame.style.visibility = "visible"; + this.hidden = false; + } + else { + this.hide(); } }; /** - * Test if the two provided items collide - * The items must have parameters left, width, top, and height. - * @param {Item} a The first item - * @param {Item} b The second item - * @param {{horizontal: number, vertical: number}} margin - * An object containing a horizontal and vertical - * minimum required margin. - * @return {boolean} true if a and b collide, else false + * Hide the popup window */ - exports.collision = function(a, b, margin) { - return ((a.left - margin.horizontal + EPSILON) < (b.left + b.width) && - (a.left + a.width + margin.horizontal - EPSILON) > b.left && - (a.top - margin.vertical + EPSILON) < (b.top + b.height) && - (a.top + a.height + margin.vertical - EPSILON) > b.top); + Popup.prototype.hide = function () { + this.hidden = true; + this.frame.style.visibility = "hidden"; }; + module.exports = Popup; + /***/ }, -/* 51 */ +/* 42 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(11); - var Hammer = __webpack_require__(19); - var keycharm = __webpack_require__(37); - var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(22); - var DataSet = __webpack_require__(7); - var DataView = __webpack_require__(9); - var dotparser = __webpack_require__(52); - var gephiParser = __webpack_require__(53); - var Groups = __webpack_require__(54); - var Images = __webpack_require__(55); - var Node = __webpack_require__(56); - var Edge = __webpack_require__(57); - var Popup = __webpack_require__(58); - var MixinLoader = __webpack_require__(59); - var Activator = __webpack_require__(36); - var locales = __webpack_require__(70); - - // Load custom shapes into CanvasRenderingContext2D - __webpack_require__(71); - /** - * @constructor Network - * Create a network visualization, displaying nodes and edges. + * Parse a text source containing data in DOT language into a JSON object. + * The object contains two lists: one with nodes and one with edges. * - * @param {Element} container The DOM element in which the Network will - * be created. Normally a div element. - * @param {Object} data An object containing parameters - * {Array} nodes - * {Array} edges - * @param {Object} options Options - */ - function Network (container, data, options) { - if (!(this instanceof Network)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - this._determineBrowserMethod(); - this._initializeMixinLoaders(); - - // create variables and set default values - this.containerElement = container; - - // render and calculation settings - this.renderRefreshRate = 60; // hz (fps) - this.renderTimestep = 1000 / this.renderRefreshRate; // ms -- saves calculation later on - this.renderTime = 0; // measured time it takes to render a frame - this.physicsTime = 0; // measured time it takes to render a frame - this.runDoubleSpeed = false; - this.physicsDiscreteStepsize = 0.50; // discrete stepsize of the simulation + * DOT language reference: http://www.graphviz.org/doc/info/lang.html + * + * @param {String} data Text containing a graph in DOT-notation + * @return {Object} graph An object containing two parameters: + * {Object[]} nodes + * {Object[]} edges + */ + function parseDOT (data) { + dot = data; + return parseGraph(); + } - this.initializing = true; + // token types enumeration + var TOKENTYPE = { + NULL : 0, + DELIMITER : 1, + IDENTIFIER: 2, + UNKNOWN : 3 + }; - this.triggerFunctions = {add:null,edit:null,editEdge:null,connect:null,del:null}; + // map with all delimiters + var DELIMITERS = { + '{': true, + '}': true, + '[': true, + ']': true, + ';': true, + '=': true, + ',': true, - var customScalingFunction = function (min,max,total,value) { - if (max == min) { - return 0.5; - } - else { - var scale = 1 / (max - min); - return Math.max(0,(value - min)*scale); - } - }; - // set constant values - this.defaultOptions = { - nodes: { - customScalingFunction: customScalingFunction, - mass: 1, - radiusMin: 10, - radiusMax: 30, - radius: 10, - shape: 'ellipse', - image: undefined, - widthMin: 16, // px - widthMax: 64, // px - fontColor: 'black', - fontSize: 14, // px - fontFace: 'verdana', - fontFill: undefined, - fontStrokeWidth: 0, // px - fontStrokeColor: '#ffffff', - fontDrawThreshold: 3, - scaleFontWithValue: false, - fontSizeMin: 14, - fontSizeMax: 30, - fontSizeMaxVisible: 30, - level: -1, - color: { - border: '#2B7CE9', - background: '#97C2FC', - highlight: { - border: '#2B7CE9', - background: '#D2E5FF' - }, - hover: { - border: '#2B7CE9', - background: '#D2E5FF' - } - }, - group: undefined, - borderWidth: 1, - borderWidthSelected: undefined - }, - edges: { - customScalingFunction: customScalingFunction, - widthMin: 1, // - widthMax: 15,// - width: 1, - widthSelectionMultiplier: 2, - hoverWidth: 1.5, - style: 'line', - color: { - color:'#848484', - highlight:'#848484', - hover: '#848484' - }, - opacity:1.0, - fontColor: '#343434', - fontSize: 14, // px - fontFace: 'arial', - fontFill: 'white', - fontStrokeWidth: 0, // px - fontStrokeColor: 'white', - labelAlignment:'horizontal', - arrowScaleFactor: 1, - dash: { - length: 10, - gap: 5, - altLength: undefined - }, - inheritColor: "from", // to, from, false, true (== from) - useGradients: false // release in 4.0 - }, - configurePhysics:false, - physics: { - barnesHut: { - enabled: true, - thetaInverted: 1 / 0.5, // inverted to save time during calculation - gravitationalConstant: -2000, - centralGravity: 0.3, - springLength: 95, - springConstant: 0.04, - damping: 0.09 - }, - repulsion: { - centralGravity: 0.0, - springLength: 200, - springConstant: 0.05, - nodeDistance: 100, - damping: 0.09 - }, - hierarchicalRepulsion: { - enabled: false, - centralGravity: 0.0, - springLength: 100, - springConstant: 0.01, - nodeDistance: 150, - damping: 0.09 - }, - damping: null, - centralGravity: null, - springLength: null, - springConstant: null - }, - clustering: { // Per Node in Cluster = PNiC - enabled: false, // (Boolean) | global on/off switch for clustering. - initialMaxNodes: 100, // (# nodes) | if the initial amount of nodes is larger than this, we cluster until the total number is less than this threshold. - clusterThreshold:500, // (# nodes) | during calculate forces, we check if the total number of nodes is larger than this. If it is, cluster until reduced to reduceToNodes - reduceToNodes:300, // (# nodes) | during calculate forces, we check if the total number of nodes is larger than clusterThreshold. If it is, cluster until reduced to this - chainThreshold: 0.4, // (% of all drawn nodes)| maximum percentage of allowed chainnodes (long strings of connected nodes) within all nodes. (lower means less chains). - clusterEdgeThreshold: 20, // (px) | edge length threshold. if smaller, this node is clustered. - sectorThreshold: 100, // (# nodes in cluster) | cluster size threshold. If larger, expanding in own sector. - screenSizeThreshold: 0.2, // (% of canvas) | relative size threshold. If the width or height of a clusternode takes up this much of the screen, decluster node. - fontSizeMultiplier: 4.0, // (px PNiC) | how much the cluster font size grows per node in cluster (in px). - maxFontSize: 1000, - forceAmplification: 0.1, // (multiplier PNiC) | factor of increase fo the repulsion force of a cluster (per node in cluster). - distanceAmplification: 0.1, // (multiplier PNiC) | factor how much the repulsion distance of a cluster increases (per node in cluster). - edgeGrowth: 20, // (px PNiC) | amount of clusterSize connected to the edge is multiplied with this and added to edgeLength. - nodeScaling: {width: 1, // (px PNiC) | growth of the width per node in cluster. - height: 1, // (px PNiC) | growth of the height per node in cluster. - radius: 1}, // (px PNiC) | growth of the radius per node in cluster. - maxNodeSizeIncrements: 600, // (# increments) | max growth of the width per node in cluster. - activeAreaBoxSize: 80, // (px) | box area around the curser where clusters are popped open. - clusterLevelDifference: 2, // used for normalization of the cluster levels - clusterByZoom: true // enable clustering through zooming in and out - }, - navigation: { - enabled: false - }, - keyboard: { - enabled: false, - speed: {x: 10, y: 10, zoom: 0.02}, - bindToWindow: true - }, - dataManipulation: { - enabled: false, - initiallyVisible: false - }, - hierarchicalLayout: { - enabled:false, - levelSeparation: 150, - nodeSpacing: 100, - direction: "UD", // UD, DU, LR, RL - layout: "hubsize" // hubsize, directed - }, - freezeForStabilization: false, - smoothCurves: { - enabled: true, - dynamic: true, - type: "continuous", - roundness: 0.5 - }, - maxVelocity: 50, - minVelocity: 0.1, // px/s - stabilize: true, // stabilize before displaying the network - stabilizationIterations: 1000, // maximum number of iteration to stabilize - zoomExtentOnStabilize: true, - locale: 'en', - locales: locales, - tooltip: { - delay: 300, - fontColor: 'black', - fontSize: 14, // px - fontFace: 'verdana', - color: { - border: '#666', - background: '#FFFFC6' - } - }, - dragNetwork: true, - dragNodes: true, - zoomable: true, - hover: false, - hideEdgesOnDrag: false, - hideNodesOnDrag: false, - width : '100%', - height : '100%', - selectable: true, - useDefaultGroups: true - }; - this.constants = util.extend({}, this.defaultOptions); - this.pixelRatio = 1; - - - this.hoverObj = {nodes:{},edges:{}}; - this.controlNodesActive = false; - this.navigationHammers = []; - this.manipulationHammers = []; + '->': true, + '--': true + }; - // animation properties - this.animationSpeed = 1/this.renderRefreshRate; - this.animationEasingFunction = "easeInOutQuint"; - this.animating = false; - this.easingTime = 0; - this.sourceScale = 0; - this.targetScale = 0; - this.sourceTranslation = 0; - this.targetTranslation = 0; - this.lockedOnNodeId = null; - this.lockedOnNodeOffset = null; - this.touchTime = 0; - this.redrawRequested = false; + var dot = ''; // current dot file + var index = 0; // current index in dot file + var c = ''; // current token character in expr + var token = ''; // current token + var tokenType = TOKENTYPE.NULL; // type of the token - // Node variables - var network = this; - this.groups = new Groups(); // object with groups - this.images = new Images(); // object with images - this.images.setOnloadCallback(function (status) { - network._requestRedraw(); - }); + /** + * Get the first character from the dot file. + * The character is stored into the char c. If the end of the dot file is + * reached, the function puts an empty string in c. + */ + function first() { + index = 0; + c = dot.charAt(0); + } - // keyboard navigation variables - this.xIncrement = 0; - this.yIncrement = 0; - this.zoomIncrement = 0; + /** + * Get the next character from the dot file. + * The character is stored into the char c. If the end of the dot file is + * reached, the function puts an empty string in c. + */ + function next() { + index++; + c = dot.charAt(index); + } - // loading all the mixins: - // load the force calculation functions, grouped under the physics system. - this._loadPhysicsSystem(); - // create a frame and canvas - this._create(); - // load the sector system. (mandatory, fully integrated with Network) - this._loadSectorSystem(); - // load the cluster system. (mandatory, even when not using the cluster system, there are function calls to it) - this._loadClusterSystem(); - // load the selection system. (mandatory, required by Network) - this._loadSelectionSystem(); - // load the selection system. (mandatory, required by Network) - this._loadHierarchySystem(); + /** + * Preview the next character from the dot file. + * @return {String} cNext + */ + function nextPreview() { + return dot.charAt(index + 1); + } + /** + * Test whether given character is alphabetic or numeric + * @param {String} c + * @return {Boolean} isAlphaNumeric + */ + var regexAlphaNumeric = /[a-zA-Z_0-9.:#]/; + function isAlphaNumeric(c) { + return regexAlphaNumeric.test(c); + } - // apply options - this._setTranslation(this.frame.clientWidth / 2, this.frame.clientHeight / 2); - this._setScale(1); - this.setOptions(options); + /** + * Merge all properties of object b into object b + * @param {Object} a + * @param {Object} b + * @return {Object} a + */ + function merge (a, b) { + if (!a) { + a = {}; + } - // other vars - this.freezeSimulationEnabled = false;// freeze the simulation - this.cachedFunctions = {}; - this.startedStabilization = false; - this.stabilized = false; - this.stabilizationIterations = null; - this.draggingNodes = false; + if (b) { + for (var name in b) { + if (b.hasOwnProperty(name)) { + a[name] = b[name]; + } + } + } + return a; + } - // containers for nodes and edges - this.calculationNodes = {}; - this.calculationNodeIndices = []; - this.nodeIndices = []; // array with all the indices of the nodes. Used to speed up forces calculation - this.nodes = {}; // object with Node objects - this.edges = {}; // object with Edge objects + /** + * Set a value in an object, where the provided parameter name can be a + * path with nested parameters. For example: + * + * var obj = {a: 2}; + * setValue(obj, 'b.c', 3); // obj = {a: 2, b: {c: 3}} + * + * @param {Object} obj + * @param {String} path A parameter name or dot-separated parameter path, + * like "color.highlight.border". + * @param {*} value + */ + function setValue(obj, path, value) { + var keys = path.split('.'); + var o = obj; + while (keys.length) { + var key = keys.shift(); + if (keys.length) { + // this isn't the end point + if (!o[key]) { + o[key] = {}; + } + o = o[key]; + } + else { + // this is the end point + o[key] = value; + } + } + } - // position and scale variables and objects - this.canvasTopLeft = {"x": 0,"y": 0}; // coordinates of the top left of the canvas. they will be set during _redraw. - this.canvasBottomRight = {"x": 0,"y": 0}; // coordinates of the bottom right of the canvas. they will be set during _redraw - this.pointerPosition = {"x": 0,"y": 0}; // coordinates of the bottom right of the canvas. they will be set during _redraw - this.areaCenter = {}; // object with x and y elements used for determining the center of the zoom action - this.scale = 1; // defining the global scale variable in the constructor - this.previousScale = this.scale; // this is used to check if the zoom operation is zooming in or out + /** + * Add a node to a graph object. If there is already a node with + * the same id, their attributes will be merged. + * @param {Object} graph + * @param {Object} node + */ + function addNode(graph, node) { + var i, len; + var current = null; - // datasets or dataviews - this.nodesData = null; // A DataSet or DataView - this.edgesData = null; // A DataSet or DataView + // find root graph (in case of subgraph) + var graphs = [graph]; // list with all graphs from current graph to root graph + var root = graph; + while (root.parent) { + graphs.push(root.parent); + root = root.parent; + } - // create event listeners used to subscribe on the DataSets of the nodes and edges - this.nodesListeners = { - 'add': function (event, params) { - network._addNodes(params.items); - network.start(); - }, - 'update': function (event, params) { - network._updateNodes(params.items); - network.start(); - }, - 'remove': function (event, params) { - network._removeNodes(params.items); - network.start(); - } - }; - this.edgesListeners = { - 'add': function (event, params) { - network._addEdges(params.items); - network.start(); - }, - 'update': function (event, params) { - network._updateEdges(params.items); - network.start(); - }, - 'remove': function (event, params) { - network._removeEdges(params.items); - network.start(); + // find existing node (at root level) by its id + if (root.nodes) { + for (i = 0, len = root.nodes.length; i < len; i++) { + if (node.id === root.nodes[i].id) { + current = root.nodes[i]; + break; + } } - }; + } - // properties for the animation - this.moving = true; - this.timer = undefined; // Scheduling function. Is definded in this.start(); + if (!current) { + // this is a new node + current = { + id: node.id + }; + if (graph.node) { + // clone default attributes + current.attr = merge(current.attr, graph.node); + } + } - // load data (the disable start variable will be the same as the enabled clustering) - this.setData(data,this.constants.clustering.enabled || this.constants.hierarchicalLayout.enabled); + // add node to this (sub)graph and all its parent graphs + for (i = graphs.length - 1; i >= 0; i--) { + var g = graphs[i]; - // hierarchical layout - this.initializing = false; - if (this.constants.hierarchicalLayout.enabled == true) { - this._setupHierarchicalLayout(); - } - else { - // zoom so all data will fit on the screen, if clustering is enabled, we do not want start to be called here. - if (this.constants.stabilize == false) { - this.zoomExtent({duration:0}, true, this.constants.clustering.enabled); + if (!g.nodes) { + g.nodes = []; + } + if (g.nodes.indexOf(current) == -1) { + g.nodes.push(current); } } - // if clustering is disabled, the simulation will have started in the setData function - if (this.constants.clustering.enabled) { - this.startWithClustering(); + // merge attributes + if (node.attr) { + current.attr = merge(current.attr, node.attr); } } - // Extend Network with an Emitter mixin - Emitter(Network.prototype); - /** - * Determine if the browser requires a setTimeout or a requestAnimationFrame. This was required because - * some implementations (safari and IE9) did not support requestAnimationFrame - * @private + * Add an edge to a graph object + * @param {Object} graph + * @param {Object} edge */ - Network.prototype._determineBrowserMethod = function() { - var browserType = navigator.userAgent.toLowerCase(); - this.requiresTimeout = false; - if (browserType.indexOf('msie 9.0') != -1) { // IE 9 - this.requiresTimeout = true; + function addEdge(graph, edge) { + if (!graph.edges) { + graph.edges = []; } - else if (browserType.indexOf('safari') != -1) { // safari - if (browserType.indexOf('chrome') <= -1) { - this.requiresTimeout = true; - } + graph.edges.push(edge); + if (graph.edge) { + var attr = merge({}, graph.edge); // clone default attributes + edge.attr = merge(attr, edge.attr); // merge attributes } } - /** - * Get the script path where the vis.js library is located - * - * @returns {string | null} path Path or null when not found. Path does not - * end with a slash. - * @private + * Create an edge to a graph object + * @param {Object} graph + * @param {String | Number | Object} from + * @param {String | Number | Object} to + * @param {String} type + * @param {Object | null} attr + * @return {Object} edge */ - Network.prototype._getScriptPath = function() { - var scripts = document.getElementsByTagName( 'script' ); + function createEdge(graph, from, to, type, attr) { + var edge = { + from: from, + to: to, + type: type + }; - // find script named vis.js or vis.min.js - for (var i = 0; i < scripts.length; i++) { - var src = scripts[i].src; - var match = src && /\/?vis(.min)?\.js$/.exec(src); - if (match) { - // return path without the script name - return src.substring(0, src.length - match[0].length); - } + if (graph.edge) { + edge.attr = merge({}, graph.edge); // clone default attributes } + edge.attr = merge(edge.attr || {}, attr); // merge attributes - return null; - }; - + return edge; + } /** - * Find the center position of the network - * @private + * Get next token in the current dot file. + * The token and token type are available as token and tokenType */ - Network.prototype._getRange = function(specificNodes) { - var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; - if (specificNodes.length > 0) { - for (var i = 0; i < specificNodes.length; i++) { - node = this.nodes[specificNodes[i]]; - if (minX > (node.boundingBox.left)) { - minX = node.boundingBox.left; + function getToken() { + tokenType = TOKENTYPE.NULL; + token = ''; + + // skip over whitespaces + while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { // space, tab, enter + next(); + } + + do { + var isComment = false; + + // skip comment + if (c == '#') { + // find the previous non-space character + var i = index - 1; + while (dot.charAt(i) == ' ' || dot.charAt(i) == '\t') { + i--; } - if (maxX < (node.boundingBox.right)) { - maxX = node.boundingBox.right; + if (dot.charAt(i) == '\n' || dot.charAt(i) == '') { + // the # is at the start of a line, this is indeed a line comment + while (c != '' && c != '\n') { + next(); + } + isComment = true; } - if (minY > (node.boundingBox.bottom)) { - minY = node.boundingBox.top; - } // top is negative, bottom is positive - if (maxY < (node.boundingBox.top)) { - maxY = node.boundingBox.bottom; - } // top is negative, bottom is positive } - } - else { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (minX > (node.boundingBox.left)) { - minX = node.boundingBox.left; + if (c == '/' && nextPreview() == '/') { + // skip line comment + while (c != '' && c != '\n') { + next(); + } + isComment = true; + } + if (c == '/' && nextPreview() == '*') { + // skip block comment + while (c != '') { + if (c == '*' && nextPreview() == '/') { + // end of block comment found. skip these last two characters + next(); + next(); + break; } - if (maxX < (node.boundingBox.right)) { - maxX = node.boundingBox.right; + else { + next(); } - if (minY > (node.boundingBox.bottom)) { - minY = node.boundingBox.top; - } // top is negative, bottom is positive - if (maxY < (node.boundingBox.top)) { - maxY = node.boundingBox.bottom; - } // top is negative, bottom is positive } + isComment = true; } - } - if (minX == 1e9 && maxX == -1e9 && minY == 1e9 && maxY == -1e9) { - minY = 0, maxY = 0, minX = 0, maxX = 0; + // skip over whitespaces + while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { // space, tab, enter + next(); + } } - return {minX: minX, maxX: maxX, minY: minY, maxY: maxY}; - }; - - - /** - * @param {object} range = {minX: minX, maxX: maxX, minY: minY, maxY: maxY}; - * @returns {{x: number, y: number}} - * @private - */ - Network.prototype._findCenter = function(range) { - return {x: (0.5 * (range.maxX + range.minX)), - y: (0.5 * (range.maxY + range.minY))}; - }; + while (isComment); + // check for end of dot file + if (c == '') { + // token is still empty + tokenType = TOKENTYPE.DELIMITER; + return; + } - /** - * This function zooms out to fit all data on screen based on amount of nodes - * - * @param {Boolean} [initialZoom] | zoom based on fitted formula or range, true = fitted, default = false; - * @param {Boolean} [disableStart] | If true, start is not called. - */ - Network.prototype.zoomExtent = function(options, initialZoom, disableStart) { - this._redraw(true); + // check for delimiters consisting of 2 characters + var c2 = c + nextPreview(); + if (DELIMITERS[c2]) { + tokenType = TOKENTYPE.DELIMITER; + token = c2; + next(); + next(); + return; + } - if (initialZoom === undefined) {initialZoom = false;} - if (disableStart === undefined) {disableStart = false;} - if (options === undefined) {options = {nodes:[]};} - if (options.nodes === undefined) { - options.nodes = []; + // check for delimiters consisting of 1 character + if (DELIMITERS[c]) { + tokenType = TOKENTYPE.DELIMITER; + token = c; + next(); + return; } - var range; - var zoomLevel; + // check for an identifier (number or string) + // TODO: more precise parsing of numbers/strings (and the port separator ':') + if (isAlphaNumeric(c) || c == '-') { + token += c; + next(); - if (initialZoom == true) { - // check if more than half of the nodes have a predefined position. If so, we use the range, not the approximation. - var positionDefined = 0; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.predefinedPosition == true) { - positionDefined += 1; - } - } + while (isAlphaNumeric(c)) { + token += c; + next(); } - if (positionDefined > 0.5 * this.nodeIndices.length) { - this.zoomExtent(options,false,disableStart); - return; + if (token == 'false') { + token = false; // convert to boolean } + else if (token == 'true') { + token = true; // convert to boolean + } + else if (!isNaN(Number(token))) { + token = Number(token); // convert to number + } + tokenType = TOKENTYPE.IDENTIFIER; + return; + } - range = this._getRange(options.nodes); - - var numberOfNodes = this.nodeIndices.length; - if (this.constants.smoothCurves == true) { - if (this.constants.clustering.enabled == true && - numberOfNodes >= this.constants.clustering.initialMaxNodes) { - zoomLevel = 49.07548 / (numberOfNodes + 142.05338) + 9.1444e-04; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. - } - else { - zoomLevel = 12.662 / (numberOfNodes + 7.4147) + 0.0964822; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. + // check for a string enclosed by double quotes + if (c == '"') { + next(); + while (c != '' && (c != '"' || (c == '"' && nextPreview() == '"'))) { + token += c; + if (c == '"') { // skip the escape character + next(); } + next(); } - else { - if (this.constants.clustering.enabled == true && - numberOfNodes >= this.constants.clustering.initialMaxNodes) { - zoomLevel = 77.5271985 / (numberOfNodes + 187.266146) + 4.76710517e-05; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. - } - else { - zoomLevel = 30.5062972 / (numberOfNodes + 19.93597763) + 0.08413486; // this is obtained from fitting a dataset from 5 points with scale levels that looked good. - } + if (c != '"') { + throw newSyntaxError('End of string " expected'); } + next(); + tokenType = TOKENTYPE.IDENTIFIER; + return; + } - // correct for larger canvasses. - var factor = Math.min(this.frame.canvas.clientWidth / 600, this.frame.canvas.clientHeight / 600); - zoomLevel *= factor; + // something unknown is found, wrong characters, a syntax error + tokenType = TOKENTYPE.UNKNOWN; + while (c != '') { + token += c; + next(); } - else { - range = this._getRange(options.nodes); - var xDistance = Math.abs(range.maxX - range.minX) * 1.1; - var yDistance = Math.abs(range.maxY - range.minY) * 1.1; + throw new SyntaxError('Syntax error in part "' + chop(token, 30) + '"'); + } - var xZoomLevel = this.frame.canvas.clientWidth / xDistance; - var yZoomLevel = this.frame.canvas.clientHeight / yDistance; - zoomLevel = (xZoomLevel <= yZoomLevel) ? xZoomLevel : yZoomLevel; + /** + * Parse a graph. + * @returns {Object} graph + */ + function parseGraph() { + var graph = {}; + + first(); + getToken(); + + // optional strict keyword + if (token == 'strict') { + graph.strict = true; + getToken(); } - if (zoomLevel > 1.0) { - zoomLevel = 1.0; + // graph or digraph keyword + if (token == 'graph' || token == 'digraph') { + graph.type = token; + getToken(); } + // optional graph id + if (tokenType == TOKENTYPE.IDENTIFIER) { + graph.id = token; + getToken(); + } - var center = this._findCenter(range); - if (disableStart == false) { - var options = {position: center, scale: zoomLevel, animation: options}; - this.moveTo(options); - this.moving = true; - this.start(); + // open angle bracket + if (token != '{') { + throw newSyntaxError('Angle bracket { expected'); } - else { - center.x *= zoomLevel; - center.y *= zoomLevel; - center.x -= 0.5 * this.frame.canvas.clientWidth; - center.y -= 0.5 * this.frame.canvas.clientHeight; - this._setScale(zoomLevel); - this._setTranslation(-center.x,-center.y); + getToken(); + + // statements + parseStatements(graph); + + // close angle bracket + if (token != '}') { + throw newSyntaxError('Angle bracket } expected'); } - }; + getToken(); + + // end of file + if (token !== '') { + throw newSyntaxError('End of file expected'); + } + getToken(); + + // remove temporary default properties + delete graph.node; + delete graph.edge; + delete graph.graph; + return graph; + } /** - * Update the this.nodeIndices with the most recent node index list - * @private + * Parse a list with statements. + * @param {Object} graph */ - Network.prototype._updateNodeIndexList = function() { - this._clearNodeIndexList(); - for (var idx in this.nodes) { - if (this.nodes.hasOwnProperty(idx)) { - this.nodeIndices.push(idx); + function parseStatements (graph) { + while (token !== '' && token != '}') { + parseStatement(graph); + if (token == ';') { + getToken(); } } - }; - + } /** - * Set nodes and edges, and optionally options as well. - * - * @param {Object} data Object containing parameters: - * {Array | DataSet | DataView} [nodes] Array with nodes - * {Array | DataSet | DataView} [edges] Array with edges - * {String} [dot] String containing data in DOT format - * {String} [gephi] String containing data in gephi JSON format - * {Options} [options] Object with options - * @param {Boolean} [disableStart] | optional: disable the calling of the start function. + * Parse a single statement. Can be a an attribute statement, node + * statement, a series of node statements and edge statements, or a + * parameter. + * @param {Object} graph */ - Network.prototype.setData = function(data, disableStart) { - if (disableStart === undefined) { - disableStart = false; - } - - // unselect all to ensure no selections from old data are carried over. - this._unselectAll(true); - - // we set initializing to true to ensure that the hierarchical layout is not performed until both nodes and edges are added. - this.initializing = true; + function parseStatement(graph) { + // parse subgraph + var subgraph = parseSubgraph(graph); + if (subgraph) { + // edge statements + parseEdge(graph, subgraph); - if (data && data.dot && (data.nodes || data.edges)) { - throw new SyntaxError('Data must contain either parameter "dot" or ' + - ' parameter pair "nodes" and "edges", but not both.'); + return; } - // clean up in case there is anyone in an active mode of the manipulation. This is the same option as bound to the escape button. - if (this.constants.dataManipulation.enabled == true) { - this._createManipulatorBar(); + // parse an attribute statement + var attr = parseAttributeStatement(graph); + if (attr) { + return; } - // set options - this.setOptions(data && data.options); - // set all data - if (data && data.dot) { - // parse DOT file - if(data && data.dot) { - var dotData = dotparser.DOTToGraph(data.dot); - this.setData(dotData); - return; - } + // parse node + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Identifier expected'); } - else if (data && data.gephi) { - // parse DOT file - if(data && data.gephi) { - var gephiData = gephiParser.parseGephi(data.gephi); - this.setData(gephiData); - return; + var id = token; // id can be a string or a number + getToken(); + + if (token == '=') { + // id statement + getToken(); + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Identifier expected'); } + graph[id] = token; + getToken(); + // TODO: implement comma separated list with "a_list: ID=ID [','] [a_list] " } else { - this._setNodes(data && data.nodes); - this._setEdges(data && data.edges); - } - this._putDataInSector(); - if (disableStart == false) { - if (this.constants.hierarchicalLayout.enabled == true) { - this._resetLevels(); - this._setupHierarchicalLayout(); - } - else { - // find a stable position or start animating to a stable position - if (this.constants.stabilize == true) { - this._stabilize(); - } - } - this.start(); + parseNodeStatement(graph, id); } - this.initializing = false; - }; + } /** - * Set options - * @param {Object} options + * Parse a subgraph + * @param {Object} graph parent graph object + * @return {Object | null} subgraph */ - Network.prototype.setOptions = function (options) { - if (options) { - var prop; - var fields = ['nodes','edges','smoothCurves','hierarchicalLayout','clustering','navigation', - 'keyboard','dataManipulation','onAdd','onEdit','onEditEdge','onConnect','onDelete','clickToUse' - ]; - // extend all but the values in fields - util.selectiveNotDeepExtend(fields,this.constants, options); - util.selectiveNotDeepExtend(['color'],this.constants.nodes, options.nodes); - util.selectiveNotDeepExtend(['color','length'],this.constants.edges, options.edges); + function parseSubgraph (graph) { + var subgraph = null; - this.groups.useDefaultGroups = this.constants.useDefaultGroups; - if (options.physics) { - util.mergeOptions(this.constants.physics, options.physics,'barnesHut'); - util.mergeOptions(this.constants.physics, options.physics,'repulsion'); + // optional subgraph keyword + if (token == 'subgraph') { + subgraph = {}; + subgraph.type = 'subgraph'; + getToken(); - if (options.physics.hierarchicalRepulsion) { - this.constants.hierarchicalLayout.enabled = true; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this.constants.physics.barnesHut.enabled = false; - for (prop in options.physics.hierarchicalRepulsion) { - if (options.physics.hierarchicalRepulsion.hasOwnProperty(prop)) { - this.constants.physics.hierarchicalRepulsion[prop] = options.physics.hierarchicalRepulsion[prop]; - } - } - } + // optional graph id + if (tokenType == TOKENTYPE.IDENTIFIER) { + subgraph.id = token; + getToken(); } + } - if (options.onAdd) {this.triggerFunctions.add = options.onAdd;} - if (options.onEdit) {this.triggerFunctions.edit = options.onEdit;} - if (options.onEditEdge) {this.triggerFunctions.editEdge = options.onEditEdge;} - if (options.onConnect) {this.triggerFunctions.connect = options.onConnect;} - if (options.onDelete) {this.triggerFunctions.del = options.onDelete;} + // open angle bracket + if (token == '{') { + getToken(); - util.mergeOptions(this.constants, options,'smoothCurves'); - util.mergeOptions(this.constants, options,'hierarchicalLayout'); - util.mergeOptions(this.constants, options,'clustering'); - util.mergeOptions(this.constants, options,'navigation'); - util.mergeOptions(this.constants, options,'keyboard'); - util.mergeOptions(this.constants, options,'dataManipulation'); + if (!subgraph) { + subgraph = {}; + } + subgraph.parent = graph; + subgraph.node = graph.node; + subgraph.edge = graph.edge; + subgraph.graph = graph.graph; + // statements + parseStatements(subgraph); - if (options.dataManipulation) { - this.editMode = this.constants.dataManipulation.initiallyVisible; + // close angle bracket + if (token != '}') { + throw newSyntaxError('Angle bracket } expected'); } + getToken(); + // remove temporary default properties + delete subgraph.node; + delete subgraph.edge; + delete subgraph.graph; + delete subgraph.parent; - // TODO: work out these options and document them - if (options.edges) { - if (options.edges.color !== undefined) { - if (util.isString(options.edges.color)) { - this.constants.edges.color = {}; - this.constants.edges.color.color = options.edges.color; - this.constants.edges.color.highlight = options.edges.color; - this.constants.edges.color.hover = options.edges.color; - } - else { - if (options.edges.color.color !== undefined) {this.constants.edges.color.color = options.edges.color.color;} - if (options.edges.color.highlight !== undefined) {this.constants.edges.color.highlight = options.edges.color.highlight;} - if (options.edges.color.hover !== undefined) {this.constants.edges.color.hover = options.edges.color.hover;} - } - this.constants.edges.inheritColor = false; - } - - if (!options.edges.fontColor) { - if (options.edges.color !== undefined) { - if (util.isString(options.edges.color)) {this.constants.edges.fontColor = options.edges.color;} - else if (options.edges.color.color !== undefined) {this.constants.edges.fontColor = options.edges.color.color;} - } - } - } - - if (options.nodes) { - if (options.nodes.color) { - var newColorObj = util.parseColor(options.nodes.color); - this.constants.nodes.color.background = newColorObj.background; - this.constants.nodes.color.border = newColorObj.border; - this.constants.nodes.color.highlight.background = newColorObj.highlight.background; - this.constants.nodes.color.highlight.border = newColorObj.highlight.border; - this.constants.nodes.color.hover.background = newColorObj.hover.background; - this.constants.nodes.color.hover.border = newColorObj.hover.border; - } - } - if (options.groups) { - for (var groupname in options.groups) { - if (options.groups.hasOwnProperty(groupname)) { - var group = options.groups[groupname]; - this.groups.add(groupname, group); - } - } - } - - if (options.tooltip) { - for (prop in options.tooltip) { - if (options.tooltip.hasOwnProperty(prop)) { - this.constants.tooltip[prop] = options.tooltip[prop]; - } - } - if (options.tooltip.color) { - this.constants.tooltip.color = util.parseColor(options.tooltip.color); - } - } - - if ('clickToUse' in options) { - if (options.clickToUse) { - if (!this.activator) { - this.activator = new Activator(this.frame); - this.activator.on('change', this._createKeyBinds.bind(this)); - } - } - else { - if (this.activator) { - this.activator.destroy(); - delete this.activator; - } - } - } - - if (options.labels) { - throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.'); - } - - - // (Re)loading the mixins that can be enabled or disabled in the options. - // load the force calculation functions, grouped under the physics system. - this._loadPhysicsSystem(); - // load the navigation system. - this._loadNavigationControls(); - // load the data manipulation system - this._loadManipulationSystem(); - // configure the smooth curves - this._configureSmoothCurves(); - - // bind hammer - this._bindHammer(); - - // bind keys. If disabled, this will not do anything; - this._createKeyBinds(); - - this._markAllEdgesAsDirty(); - this.setSize(this.constants.width, this.constants.height); - this.moving = true; - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); + // register at the parent graph + if (!graph.subgraphs) { + graph.subgraphs = []; } - this.start(); + graph.subgraphs.push(subgraph); } - }; - + return subgraph; + } /** - * Create the main frame for the Network. - * This function is executed once when a Network object is created. The frame - * contains a canvas, and this canvas contains all objects like the axis and - * nodes. - * @private + * parse an attribute statement like "node [shape=circle fontSize=16]". + * Available keywords are 'node', 'edge', 'graph'. + * The previous list with default attributes will be replaced + * @param {Object} graph + * @returns {String | null} keyword Returns the name of the parsed attribute + * (node, edge, graph), or null if nothing + * is parsed. */ - Network.prototype._create = function () { - // remove all elements from the container element. - while (this.containerElement.hasChildNodes()) { - this.containerElement.removeChild(this.containerElement.firstChild); - } - - this.frame = document.createElement('div'); - this.frame.className = 'vis network-frame'; - this.frame.style.position = 'relative'; - this.frame.style.overflow = 'hidden'; - this.frame.tabIndex = 900; - - - ////////////////////////////////////////////////////////////////// - - this.frame.canvas = document.createElement("canvas"); - this.frame.canvas.style.position = 'relative'; - this.frame.appendChild(this.frame.canvas); + function parseAttributeStatement (graph) { + // attribute statements + if (token == 'node') { + getToken(); - if (!this.frame.canvas.getContext) { - var noCanvas = document.createElement( 'DIV' ); - noCanvas.style.color = 'red'; - noCanvas.style.fontWeight = 'bold' ; - noCanvas.style.padding = '10px'; - noCanvas.innerHTML = 'Error: your browser does not support HTML canvas'; - this.frame.canvas.appendChild(noCanvas); + // node attributes + graph.node = parseAttributeList(); + return 'node'; } - else { - var ctx = this.frame.canvas.getContext("2d"); - this.pixelRatio = (window.devicePixelRatio || 1) / (ctx.webkitBackingStorePixelRatio || - ctx.mozBackingStorePixelRatio || - ctx.msBackingStorePixelRatio || - ctx.oBackingStorePixelRatio || - ctx.backingStorePixelRatio || 1); + else if (token == 'edge') { + getToken(); - //this.pixelRatio = Math.max(1,this.pixelRatio); // this is to account for browser zooming out. The pixel ratio is ment to switch between 1 and 2 for HD screens. - this.frame.canvas.getContext("2d").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); + // edge attributes + graph.edge = parseAttributeList(); + return 'edge'; } + else if (token == 'graph') { + getToken(); - this._bindHammer(); - }; + // graph attributes + graph.graph = parseAttributeList(); + return 'graph'; + } + return null; + } /** - * This function binds hammer, it can be repeated over and over due to the uniqueness check. - * @private + * parse a node statement + * @param {Object} graph + * @param {String | Number} id */ - Network.prototype._bindHammer = function() { - var me = this; - if (this.hammer !== undefined) { - this.hammer.dispose(); - } - this.drag = {}; - this.pinch = {}; - this.hammer = Hammer(this.frame.canvas, { - prevent_default: true - }); - this.hammer.on('tap', me._onTap.bind(me) ); - this.hammer.on('doubletap', me._onDoubleTap.bind(me) ); - this.hammer.on('hold', me._onHold.bind(me) ); - this.hammer.on('touch', me._onTouch.bind(me) ); - this.hammer.on('dragstart', me._onDragStart.bind(me) ); - this.hammer.on('drag', me._onDrag.bind(me) ); - this.hammer.on('dragend', me._onDragEnd.bind(me) ); - - if (this.constants.zoomable == true) { - this.hammer.on('mousewheel', me._onMouseWheel.bind(me)); - this.hammer.on('DOMMouseScroll', me._onMouseWheel.bind(me)); // for FF - this.hammer.on('pinch', me._onPinch.bind(me) ); + function parseNodeStatement(graph, id) { + // node statement + var node = { + id: id + }; + var attr = parseAttributeList(); + if (attr) { + node.attr = attr; } + addNode(graph, node); - this.hammer.on('mousemove', me._onMouseMoveTitle.bind(me) ); - - this.hammerFrame = Hammer(this.frame, { - prevent_default: true - }); - this.hammerFrame.on('release', me._onRelease.bind(me) ); - - // add the frame to the container element - this.containerElement.appendChild(this.frame); + // edge statements + parseEdge(graph, id); } /** - * Binding the keys for keyboard navigation. These functions are defined in the NavigationMixin - * @private + * Parse an edge or a series of edges + * @param {Object} graph + * @param {String | Number} from Id of the from node */ - Network.prototype._createKeyBinds = function() { - var me = this; - if (this.keycharm !== undefined) { - this.keycharm.destroy(); - } + function parseEdge(graph, from) { + while (token == '->' || token == '--') { + var to; + var type = token; + getToken(); - if (this.constants.keyboard.bindToWindow == true) { - this.keycharm = keycharm({container: window, preventDefault: false}); - } - else { - this.keycharm = keycharm({container: this.frame, preventDefault: false}); - } + var subgraph = parseSubgraph(graph); + if (subgraph) { + to = subgraph; + } + else { + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Identifier or subgraph expected'); + } + to = token; + addNode(graph, { + id: to + }); + getToken(); + } - this.keycharm.reset(); + // parse edge attributes + var attr = parseAttributeList(); - if (this.constants.keyboard.enabled && this.isActive()) { - this.keycharm.bind("up", this._moveUp.bind(me) , "keydown"); - this.keycharm.bind("up", this._yStopMoving.bind(me), "keyup"); - this.keycharm.bind("down", this._moveDown.bind(me) , "keydown"); - this.keycharm.bind("down", this._yStopMoving.bind(me), "keyup"); - this.keycharm.bind("left", this._moveLeft.bind(me) , "keydown"); - this.keycharm.bind("left", this._xStopMoving.bind(me), "keyup"); - this.keycharm.bind("right",this._moveRight.bind(me), "keydown"); - this.keycharm.bind("right",this._xStopMoving.bind(me), "keyup"); - this.keycharm.bind("=", this._zoomIn.bind(me), "keydown"); - this.keycharm.bind("=", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("num+", this._zoomIn.bind(me), "keydown"); - this.keycharm.bind("num+", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("num-", this._zoomOut.bind(me), "keydown"); - this.keycharm.bind("num-", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("-", this._zoomOut.bind(me), "keydown"); - this.keycharm.bind("-", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("[", this._zoomIn.bind(me), "keydown"); - this.keycharm.bind("[", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("]", this._zoomOut.bind(me), "keydown"); - this.keycharm.bind("]", this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("pageup",this._zoomIn.bind(me), "keydown"); - this.keycharm.bind("pageup",this._stopZoom.bind(me), "keyup"); - this.keycharm.bind("pagedown",this._zoomOut.bind(me),"keydown"); - this.keycharm.bind("pagedown",this._stopZoom.bind(me), "keyup"); - } + // create edge + var edge = createEdge(graph, from, to, type, attr); + addEdge(graph, edge); - if (this.constants.dataManipulation.enabled == true) { - this.keycharm.bind("esc",this._createManipulatorBar.bind(me)); - this.keycharm.bind("delete",this._deleteSelected.bind(me)); + from = to; } - }; + } /** - * Cleans up all bindings of the network, removing it fully from the memory IF the variable is set to null after calling this function. - * var network = new vis.Network(..); - * network.destroy(); - * network = null; + * Parse a set with attributes, + * for example [label="1.000", shape=solid] + * @return {Object | null} attr */ - Network.prototype.destroy = function() { - this.start = function () {}; - this.redraw = function () {}; - this.timer = false; - - // cleanup physicsConfiguration if it exists - this._cleanupPhysicsConfiguration(); + function parseAttributeList() { + var attr = null; - // remove keybindings - this.keycharm.reset(); + while (token == '[') { + getToken(); + attr = {}; + while (token !== '' && token != ']') { + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Attribute name expected'); + } + var name = token; - // clear hammer bindings - this.hammer.dispose(); + getToken(); + if (token != '=') { + throw newSyntaxError('Equal sign = expected'); + } + getToken(); - // clear events - this.off(); + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Attribute value expected'); + } + var value = token; + setValue(attr, name, value); // name can be a path - this._recursiveDOMDelete(this.containerElement); - } + getToken(); + if (token ==',') { + getToken(); + } + } - Network.prototype._recursiveDOMDelete = function(DOMobject) { - while (DOMobject.hasChildNodes() == true) { - this._recursiveDOMDelete(DOMobject.firstChild); - DOMobject.removeChild(DOMobject.firstChild); + if (token != ']') { + throw newSyntaxError('Bracket ] expected'); + } + getToken(); } - } - /** - * Get the pointer location from a touch location - * @param {{pageX: Number, pageY: Number}} touch - * @return {{x: Number, y: Number}} pointer - * @private - */ - Network.prototype._getPointer = function (touch) { - return { - x: touch.pageX - util.getAbsoluteLeft(this.frame.canvas), - y: touch.pageY - util.getAbsoluteTop(this.frame.canvas) - }; - }; + return attr; + } /** - * On start of a touch gesture, store the pointer - * @param event - * @private + * Create a syntax error with extra information on current token and index. + * @param {String} message + * @returns {SyntaxError} err */ - Network.prototype._onTouch = function (event) { - if (new Date().valueOf() - this.touchTime > 100) { - this.drag.pointer = this._getPointer(event.gesture.center); - this.drag.pinched = false; - this.pinch.scale = this._getScale(); - - // to avoid double fireing of this event because we have two hammer instances. (on canvas and on frame) - this.touchTime = new Date().valueOf(); - - this._handleTouch(this.drag.pointer); - } - }; + function newSyntaxError(message) { + return new SyntaxError(message + ', got "' + chop(token, 30) + '" (char ' + index + ')'); + } /** - * handle drag start event - * @private + * Chop off text after a maximum length + * @param {String} text + * @param {Number} maxLength + * @returns {String} */ - Network.prototype._onDragStart = function (event) { - this._handleDragStart(event); - }; - + function chop (text, maxLength) { + return (text.length <= maxLength) ? text : (text.substr(0, 27) + '...'); + } /** - * This function is called by _onDragStart. - * It is separated out because we can then overload it for the datamanipulation system. - * - * @private + * Execute a function fn for each pair of elements in two arrays + * @param {Array | *} array1 + * @param {Array | *} array2 + * @param {function} fn */ - Network.prototype._handleDragStart = function(event) { - // in case the touch event was triggered on an external div, do the initial touch now. - if (this.drag.pointer === undefined) { - this._onTouch(event); + function forEach2(array1, array2, fn) { + if (Array.isArray(array1)) { + array1.forEach(function (elem1) { + if (Array.isArray(array2)) { + array2.forEach(function (elem2) { + fn(elem1, elem2); + }); + } + else { + fn(elem1, array2); + } + }); } - - var node = this._getNodeAt(this.drag.pointer); - // note: drag.pointer is set in _onTouch to get the initial touch location - - this.drag.dragging = true; - this.drag.selection = []; - this.drag.translation = this._getTranslation(); - this.drag.nodeId = null; - this.draggingNodes = false; - - if (node != null && this.constants.dragNodes == true) { - this.draggingNodes = true; - this.drag.nodeId = node.id; - // select the clicked node if not yet selected - if (!node.isSelected()) { - this._selectObject(node,false); + else { + if (Array.isArray(array2)) { + array2.forEach(function (elem2) { + fn(array1, elem2); + }); } - - this.emit("dragStart",{nodeIds:this.getSelection().nodes}); - - // create an array with the selected nodes and their original location and status - for (var objectId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(objectId)) { - var object = this.selectionObj.nodes[objectId]; - var s = { - id: object.id, - node: object, - - // store original x, y, xFixed and yFixed, make the node temporarily Fixed - x: object.x, - y: object.y, - xFixed: object.xFixed, - yFixed: object.yFixed - }; - - object.xFixed = true; - object.yFixed = true; - - this.drag.selection.push(s); - } + else { + fn(array1, array2); } } - }; - + } /** - * handle drag event - * @private + * Convert a string containing a graph in DOT language into a map containing + * with nodes and edges in the format of graph. + * @param {String} data Text containing a graph in DOT-notation + * @return {Object} graphData */ - Network.prototype._onDrag = function (event) { - this._handleOnDrag(event) - }; - + function DOTToGraph (data) { + // parse the DOT file + var dotData = parseDOT(data); + var graphData = { + nodes: [], + edges: [], + options: {} + }; - /** - * This function is called by _onDrag. - * It is separated out because we can then overload it for the datamanipulation system. - * - * @private - */ - Network.prototype._handleOnDrag = function(event) { - if (this.drag.pinched) { - return; + // copy the nodes + if (dotData.nodes) { + dotData.nodes.forEach(function (dotNode) { + var graphNode = { + id: dotNode.id, + label: String(dotNode.label || dotNode.id) + }; + merge(graphNode, dotNode.attr); + if (graphNode.image) { + graphNode.shape = 'image'; + } + graphData.nodes.push(graphNode); + }); } - // remove the focus on node if it is focussed on by the focusOnNode - this.releaseNode(); - - var pointer = this._getPointer(event.gesture.center); - var me = this; - var drag = this.drag; - var selection = drag.selection; - if (selection && selection.length && this.constants.dragNodes == true) { - // calculate delta's and new location - var deltaX = pointer.x - drag.pointer.x; - var deltaY = pointer.y - drag.pointer.y; - - // update position of all selected nodes - selection.forEach(function (s) { - var node = s.node; - - if (!s.xFixed) { - node.x = me._XconvertDOMtoCanvas(me._XconvertCanvasToDOM(s.x) + deltaX); + // copy the edges + if (dotData.edges) { + /** + * Convert an edge in DOT format to an edge with VisGraph format + * @param {Object} dotEdge + * @returns {Object} graphEdge + */ + var convertEdge = function (dotEdge) { + var graphEdge = { + from: dotEdge.from, + to: dotEdge.to + }; + merge(graphEdge, dotEdge.attr); + graphEdge.style = (dotEdge.type == '->') ? 'arrow' : 'line'; + return graphEdge; + } + + dotData.edges.forEach(function (dotEdge) { + var from, to; + if (dotEdge.from instanceof Object) { + from = dotEdge.from.nodes; + } + else { + from = { + id: dotEdge.from + } } - if (!s.yFixed) { - node.y = me._YconvertDOMtoCanvas(me._YconvertCanvasToDOM(s.y) + deltaY); + if (dotEdge.to instanceof Object) { + to = dotEdge.to.nodes; + } + else { + to = { + id: dotEdge.to + } } - }); + if (dotEdge.from instanceof Object && dotEdge.from.edges) { + dotEdge.from.edges.forEach(function (subEdge) { + var graphEdge = convertEdge(subEdge); + graphData.edges.push(graphEdge); + }); + } - // start _animationStep if not yet running - if (!this.moving) { - this.moving = true; - this.start(); - } - } - else { - // move the network - if (this.constants.dragNetwork == true) { - // if the drag was not started properly because the click started outside the network div, start it now. - if (this.drag.pointer === undefined) { - this._handleDragStart(event); - return; + forEach2(from, to, function (from, to) { + var subEdge = createEdge(graphData, from.id, to.id, dotEdge.type, dotEdge.attr); + var graphEdge = convertEdge(subEdge); + graphData.edges.push(graphEdge); + }); + + if (dotEdge.to instanceof Object && dotEdge.to.edges) { + dotEdge.to.edges.forEach(function (subEdge) { + var graphEdge = convertEdge(subEdge); + graphData.edges.push(graphEdge); + }); } - var diffX = pointer.x - this.drag.pointer.x; - var diffY = pointer.y - this.drag.pointer.y; + }); + } - this._setTranslation( - this.drag.translation.x + diffX, - this.drag.translation.y + diffY - ); - this._redraw(); - } + // copy the options + if (dotData.attr) { + graphData.options = dotData.attr; } - }; - /** - * handle drag start event - * @private - */ - Network.prototype._onDragEnd = function (event) { - this._handleDragEnd(event); - }; + return graphData; + } + // exports + exports.parseDOT = parseDOT; + exports.DOTToGraph = DOTToGraph; - Network.prototype._handleDragEnd = function(event) { - this.drag.dragging = false; - var selection = this.drag.selection; - if (selection && selection.length) { - selection.forEach(function (s) { - // restore original xFixed and yFixed - s.node.xFixed = s.xFixed; - s.node.yFixed = s.yFixed; - }); - this.moving = true; - this.start(); - } - else { - this._redraw(); + +/***/ }, +/* 43 */ +/***/ function(module, exports, __webpack_require__) { + + + function parseGephi(gephiJSON, options) { + var edges = []; + var nodes = []; + this.options = { + edges: { + inheritColor: true + }, + nodes: { + allowedToMove: false, + parseColor: false + } + }; + + if (options !== undefined) { + this.options.nodes['allowedToMove'] = options.allowedToMove | false; + this.options.nodes['parseColor'] = options.parseColor | false; + this.options.edges['inheritColor'] = options.inheritColor | true; } - if (this.draggingNodes == false) { - this.emit("dragEnd",{nodeIds:[]}); + + var gEdges = gephiJSON.edges; + var gNodes = gephiJSON.nodes; + for (var i = 0; i < gEdges.length; i++) { + var edge = {}; + var gEdge = gEdges[i]; + edge['id'] = gEdge.id; + edge['from'] = gEdge.source; + edge['to'] = gEdge.target; + edge['attributes'] = gEdge.attributes; + // edge['value'] = gEdge.attributes !== undefined ? gEdge.attributes.Weight : undefined; + // edge['width'] = edge['value'] !== undefined ? undefined : edgegEdge.size; + edge['color'] = gEdge.color; + edge['inheritColor'] = edge['color'] !== undefined ? false : this.options.inheritColor; + edges.push(edge); } - else { - this.emit("dragEnd",{nodeIds:this.getSelection().nodes}); + + for (var i = 0; i < gNodes.length; i++) { + var node = {}; + var gNode = gNodes[i]; + node['id'] = gNode.id; + node['attributes'] = gNode.attributes; + node['x'] = gNode.x; + node['y'] = gNode.y; + node['label'] = gNode.label; + if (this.options.nodes.parseColor == true) { + node['color'] = gNode.color; + } + else { + node['color'] = gNode.color !== undefined ? {background:gNode.color, border:gNode.color} : undefined; + } + node['radius'] = gNode.size; + node['allowedToMoveX'] = this.options.nodes.allowedToMove; + node['allowedToMoveY'] = this.options.nodes.allowedToMove; + nodes.push(node); } + return {nodes:nodes, edges:edges}; } - /** - * handle tap/click event: select/unselect a node - * @private - */ - Network.prototype._onTap = function (event) { - var pointer = this._getPointer(event.gesture.center); - this.pointerPosition = pointer; - this._handleTap(pointer); - }; + exports.parseGephi = parseGephi; +/***/ }, +/* 44 */ +/***/ function(module, exports, __webpack_require__) { - /** - * handle doubletap event - * @private - */ - Network.prototype._onDoubleTap = function (event) { - var pointer = this._getPointer(event.gesture.center); - this._handleDoubleTap(pointer); - }; + // first check if moment.js is already loaded in the browser window, if so, + // use this instance. Else, load via commonjs. + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(58); - /** - * handle long tap event: multi select nodes - * @private - */ - Network.prototype._onHold = function (event) { - var pointer = this._getPointer(event.gesture.center); - this.pointerPosition = pointer; - this._handleOnHold(pointer); - }; +/***/ }, +/* 45 */ +/***/ function(module, exports, __webpack_require__) { - /** - * handle the release of the screen - * - * @private - */ - Network.prototype._onRelease = function (event) { - var pointer = this._getPointer(event.gesture.center); - this._handleOnRelease(pointer); - }; + // Only load hammer.js when in a browser environment + // (loading hammer.js in a node.js environment gives errors) + if (typeof window !== 'undefined') { + module.exports = window['Hammer'] || __webpack_require__(59); + } + else { + module.exports = function () { + throw Error('hammer.js is only available in a browser, not in node.js.'); + } + } + + +/***/ }, +/* 46 */ +/***/ function(module, exports, __webpack_require__) { + + var Emitter = __webpack_require__(56); + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var Range = __webpack_require__(17); + var ItemSet = __webpack_require__(32); + var TimeAxis = __webpack_require__(35); + var Activator = __webpack_require__(53); + var DateUtil = __webpack_require__(15); + var CustomTime = __webpack_require__(27); /** - * Handle pinch event - * @param event - * @private + * Create a timeline visualization + * @param {HTMLElement} container + * @param {vis.DataSet | Array | google.visualization.DataTable} [items] + * @param {Object} [options] See Core.setOptions for the available options. + * @constructor */ - Network.prototype._onPinch = function (event) { - var pointer = this._getPointer(event.gesture.center); - - this.drag.pinched = true; - if (!('scale' in this.pinch)) { - this.pinch.scale = 1; - } + function Core () {} - // TODO: enabled moving while pinching? - var scale = this.pinch.scale * event.gesture.scale; - this._zoom(scale, pointer) - }; + // turn Core into an event emitter + Emitter(Core.prototype); /** - * Zoom the network in or out - * @param {Number} scale a number around 1, and between 0.01 and 10 - * @param {{x: Number, y: Number}} pointer Position on screen - * @return {Number} appliedScale scale is limited within the boundaries + * Create the main DOM for the Core: a root panel containing left, right, + * top, bottom, content, and background panel. + * @param {Element} container The container element where the Core will + * be attached. * @private */ - Network.prototype._zoom = function(scale, pointer) { - if (this.constants.zoomable == true) { - var scaleOld = this._getScale(); - if (scale < 0.00001) { - scale = 0.00001; - } - if (scale > 10) { - scale = 10; - } + Core.prototype._create = function (container) { + this.dom = {}; - var preScaleDragPointer = null; - if (this.drag !== undefined) { - if (this.drag.dragging == true) { - preScaleDragPointer = this.DOMtoCanvas(this.drag.pointer); - } - } - // + this.frame.canvas.clientHeight / 2 - var translation = this._getTranslation(); + this.dom.root = document.createElement('div'); + this.dom.background = document.createElement('div'); + this.dom.backgroundVertical = document.createElement('div'); + this.dom.backgroundHorizontal = document.createElement('div'); + this.dom.centerContainer = document.createElement('div'); + this.dom.leftContainer = document.createElement('div'); + this.dom.rightContainer = document.createElement('div'); + this.dom.center = document.createElement('div'); + this.dom.left = document.createElement('div'); + this.dom.right = document.createElement('div'); + this.dom.top = document.createElement('div'); + this.dom.bottom = document.createElement('div'); + this.dom.shadowTop = document.createElement('div'); + this.dom.shadowBottom = document.createElement('div'); + this.dom.shadowTopLeft = document.createElement('div'); + this.dom.shadowBottomLeft = document.createElement('div'); + this.dom.shadowTopRight = document.createElement('div'); + this.dom.shadowBottomRight = document.createElement('div'); - var scaleFrac = scale / scaleOld; - var tx = (1 - scaleFrac) * pointer.x + translation.x * scaleFrac; - var ty = (1 - scaleFrac) * pointer.y + translation.y * scaleFrac; + this.dom.root.className = 'vis timeline root'; + this.dom.background.className = 'vispanel background'; + this.dom.backgroundVertical.className = 'vispanel background vertical'; + this.dom.backgroundHorizontal.className = 'vispanel background horizontal'; + this.dom.centerContainer.className = 'vispanel center'; + this.dom.leftContainer.className = 'vispanel left'; + this.dom.rightContainer.className = 'vispanel right'; + this.dom.top.className = 'vispanel top'; + this.dom.bottom.className = 'vispanel bottom'; + this.dom.left.className = 'content'; + this.dom.center.className = 'content'; + this.dom.right.className = 'content'; + this.dom.shadowTop.className = 'shadow top'; + this.dom.shadowBottom.className = 'shadow bottom'; + this.dom.shadowTopLeft.className = 'shadow top'; + this.dom.shadowBottomLeft.className = 'shadow bottom'; + this.dom.shadowTopRight.className = 'shadow top'; + this.dom.shadowBottomRight.className = 'shadow bottom'; - this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), - "y" : this._YconvertDOMtoCanvas(pointer.y)}; + this.dom.root.appendChild(this.dom.background); + this.dom.root.appendChild(this.dom.backgroundVertical); + this.dom.root.appendChild(this.dom.backgroundHorizontal); + this.dom.root.appendChild(this.dom.centerContainer); + this.dom.root.appendChild(this.dom.leftContainer); + this.dom.root.appendChild(this.dom.rightContainer); + this.dom.root.appendChild(this.dom.top); + this.dom.root.appendChild(this.dom.bottom); - this._setScale(scale); - this._setTranslation(tx, ty); - this.updateClustersDefault(); + this.dom.centerContainer.appendChild(this.dom.center); + this.dom.leftContainer.appendChild(this.dom.left); + this.dom.rightContainer.appendChild(this.dom.right); - if (preScaleDragPointer != null) { - var postScaleDragPointer = this.canvasToDOM(preScaleDragPointer); - this.drag.pointer.x = postScaleDragPointer.x; - this.drag.pointer.y = postScaleDragPointer.y; - } + this.dom.centerContainer.appendChild(this.dom.shadowTop); + this.dom.centerContainer.appendChild(this.dom.shadowBottom); + this.dom.leftContainer.appendChild(this.dom.shadowTopLeft); + this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft); + this.dom.rightContainer.appendChild(this.dom.shadowTopRight); + this.dom.rightContainer.appendChild(this.dom.shadowBottomRight); - this._redraw(); + this.on('rangechange', this._redraw.bind(this)); + this.on('touch', this._onTouch.bind(this)); + this.on('pinch', this._onPinch.bind(this)); + this.on('dragstart', this._onDragStart.bind(this)); + this.on('drag', this._onDrag.bind(this)); - if (scaleOld < scale) { - this.emit("zoom", {direction:"+"}); + var me = this; + this.on('change', function (properties) { + if (properties && properties.queue == true) { + // redraw once on next tick + if (!me._redrawTimer) { + me._redrawTimer = setTimeout(function () { + me._redrawTimer = null; + me._redraw(); + }, 0) + } } else { - this.emit("zoom", {direction:"-"}); + // redraw immediately + me._redraw(); } + }); - return scale; - } - }; - - - /** - * Event handler for mouse wheel event, used to zoom the timeline - * See http://adomas.org/javascript-mouse-wheel/ - * https://github.com/EightMedia/hammer.js/issues/256 - * @param {MouseEvent} event - * @private - */ - Network.prototype._onMouseWheel = function(event) { - // retrieve delta - var delta = 0; - if (event.wheelDelta) { /* IE/Opera. */ - delta = event.wheelDelta/120; - } else if (event.detail) { /* Mozilla case. */ - // In Mozilla, sign of delta is different than in IE. - // Also, delta is multiple of 3. - delta = -event.detail/3; - } - - // If delta is nonzero, handle it. - // Basically, delta is now positive if wheel was scrolled up, - // and negative, if wheel was scrolled down. - if (delta) { + // create event listeners for all interesting events, these events will be + // emitted via emitter + this.hammer = Hammer(this.dom.root, { + preventDefault: true + }); + this.listeners = {}; - // calculate the new scale - var scale = this._getScale(); - var zoom = delta / 10; - if (delta < 0) { - zoom = zoom / (1 - zoom); - } - scale *= (1 + zoom); + var events = [ + 'touch', 'pinch', + 'tap', 'doubletap', 'hold', + 'dragstart', 'drag', 'dragend', + 'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox + ]; + events.forEach(function (event) { + var listener = function () { + var args = [event].concat(Array.prototype.slice.call(arguments, 0)); + if (me.isActive()) { + me.emit.apply(me, args); + } + }; + me.hammer.on(event, listener); + me.listeners[event] = listener; + }); - // calculate the pointer location - var gesture = hammerUtil.fakeGesture(this, event); - var pointer = this._getPointer(gesture.center); + // size properties of each of the panels + this.props = { + root: {}, + background: {}, + centerContainer: {}, + leftContainer: {}, + rightContainer: {}, + center: {}, + left: {}, + right: {}, + top: {}, + bottom: {}, + border: {}, + scrollTop: 0, + scrollTopMin: 0 + }; + this.touch = {}; // store state information needed for touch events - // apply the new scale - this._zoom(scale, pointer); - } + this.redrawCount = 0; - // Prevent default actions caused by mouse wheel. - event.preventDefault(); + // attach the root panel to the provided container + if (!container) throw new Error('No container provided'); + container.appendChild(this.dom.root); }; - /** - * Mouse move handler for checking whether the title moves over a node with a title. - * @param {Event} event - * @private + * Set options. Options will be passed to all components loaded in the Timeline. + * @param {Object} [options] + * {String} orientation + * Vertical orientation for the Timeline, + * can be 'bottom' (default) or 'top'. + * {String | Number} width + * Width for the timeline, a number in pixels or + * a css string like '1000px' or '75%'. '100%' by default. + * {String | Number} height + * Fixed height for the Timeline, a number in pixels or + * a css string like '400px' or '75%'. If undefined, + * The Timeline will automatically size such that + * its contents fit. + * {String | Number} minHeight + * Minimum height for the Timeline, a number in pixels or + * a css string like '400px' or '75%'. + * {String | Number} maxHeight + * Maximum height for the Timeline, a number in pixels or + * a css string like '400px' or '75%'. + * {Number | Date | String} start + * Start date for the visible window + * {Number | Date | String} end + * End date for the visible window */ - Network.prototype._onMouseMoveTitle = function (event) { - var gesture = hammerUtil.fakeGesture(this, event); - var pointer = this._getPointer(gesture.center); - var popupVisible = false; + Core.prototype.setOptions = function (options) { + if (options) { + // copy the known options + var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'orientation', 'clickToUse', 'dataAttributes', 'hiddenDates']; + util.selectiveExtend(fields, this.options, options); - // check if the previously selected node is still selected - if (this.popup !== undefined) { - if (this.popup.hidden === false) { - this._checkHidePopup(pointer); + if (this.options.orientation === 'both') { + if (!this.timeAxis2) { + var timeAxis2 = this.timeAxis2 = new TimeAxis(this.body); + timeAxis2.setOptions = function (options) { + var _options = options ? util.extend({}, options) : {}; + _options.orientation = 'top'; // override the orientation option, always top + TimeAxis.prototype.setOptions.call(timeAxis2, _options); + }; + this.components.push(timeAxis2); + } + } + else { + if (this.timeAxis2) { + var index = this.components.indexOf(this.timeAxis2); + if (index !== -1) { + this.components.splice(index, 1); + } + this.timeAxis2.destroy(); + this.timeAxis2 = null; + } } - // if the popup was not hidden above - if (this.popup.hidden === false) { - popupVisible = true; - this.popup.setPosition(pointer.x + 3,pointer.y - 5) - this.popup.show(); - } - } - - // if we bind the keyboard to the div, we have to highlight it to use it. This highlights it on mouse over - if (this.constants.keyboard.bindToWindow == false && this.constants.keyboard.enabled == true) { - this.frame.focus(); - } - - // start a timeout that will check if the mouse is positioned above an element - if (popupVisible === false) { - var me = this; - var checkShow = function () { - me._checkShowPopup(pointer); - }; - if (this.popupTimer) { - clearInterval(this.popupTimer); // stop any running calculationTimer - } - if (!this.drag.dragging) { - this.popupTimer = setTimeout(checkShow, this.constants.tooltip.delay); + if ('hiddenDates' in this.options) { + DateUtil.convertHiddenOptions(this.body, this.options.hiddenDates); } - } - /** - * Adding hover highlights - */ - if (this.constants.hover == true) { - // removing all hover highlights - for (var edgeId in this.hoverObj.edges) { - if (this.hoverObj.edges.hasOwnProperty(edgeId)) { - this.hoverObj.edges[edgeId].hover = false; - delete this.hoverObj.edges[edgeId]; + if ('clickToUse' in options) { + if (options.clickToUse) { + if (!this.activator) { + this.activator = new Activator(this.dom.root); + } } - } - - // adding hover highlights - var obj = this._getNodeAt(pointer); - if (obj == null) { - obj = this._getEdgeAt(pointer); - } - if (obj != null) { - this._hoverObject(obj); - } - - // removing all node hover highlights except for the selected one. - for (var nodeId in this.hoverObj.nodes) { - if (this.hoverObj.nodes.hasOwnProperty(nodeId)) { - if (obj instanceof Node && obj.id != nodeId || obj instanceof Edge || obj == null) { - this._blurObject(this.hoverObj.nodes[nodeId]); - delete this.hoverObj.nodes[nodeId]; + else { + if (this.activator) { + this.activator.destroy(); + delete this.activator; } } } - this.redraw(); + + // enable/disable autoResize + this._initAutoResize(); } + + // propagate options to all components + this.components.forEach(function (component) { + component.setOptions(options); + }); + + // redraw everything + this._redraw(); }; /** - * Check if there is an element on the given position in the network - * (a node or edge). If so, and if this element has a title, - * show a popup window with its title. - * - * @param {{x:Number, y:Number}} pointer - * @private + * Returns true when the Timeline is active. + * @returns {boolean} */ - Network.prototype._checkShowPopup = function (pointer) { - var obj = { - left: this._XconvertDOMtoCanvas(pointer.x), - top: this._YconvertDOMtoCanvas(pointer.y), - right: this._XconvertDOMtoCanvas(pointer.x), - bottom: this._YconvertDOMtoCanvas(pointer.y) - }; + Core.prototype.isActive = function () { + return !this.activator || this.activator.active; + }; - var id; - var previousPopupObjId = this.popupObj === undefined ? "" : this.popupObj.id; - var nodeUnderCursor = false; - var popupType = "node"; + /** + * Destroy the Core, clean up all DOM elements and event listeners. + */ + Core.prototype.destroy = function () { + // unbind datasets + this.clear(); - if (this.popupObj == undefined) { - // search the nodes for overlap, select the top one in case of multiple nodes - var nodes = this.nodes; - var overlappingNodes = []; - for (id in nodes) { - if (nodes.hasOwnProperty(id)) { - var node = nodes[id]; - if (node.isOverlappingWith(obj)) { - if (node.getTitle() !== undefined) { - overlappingNodes.push(id); - } - } - } - } + // remove all event listeners + this.off(); - if (overlappingNodes.length > 0) { - // if there are overlapping nodes, select the last one, this is the - // one which is drawn on top of the others - this.popupObj = this.nodes[overlappingNodes[overlappingNodes.length - 1]]; - // if you hover over a node, the title of the edge is not supposed to be shown. - nodeUnderCursor = true; - } + // stop checking for changed size + this._stopAutoResize(); + + // remove from DOM + if (this.dom.root.parentNode) { + this.dom.root.parentNode.removeChild(this.dom.root); } + this.dom = null; - if (this.popupObj === undefined && nodeUnderCursor == false) { - // search the edges for overlap - var edges = this.edges; - var overlappingEdges = []; - for (id in edges) { - if (edges.hasOwnProperty(id)) { - var edge = edges[id]; - if (edge.connected && (edge.getTitle() !== undefined) && - edge.isOverlappingWith(obj)) { - overlappingEdges.push(id); - } - } - } + // remove Activator + if (this.activator) { + this.activator.destroy(); + delete this.activator; + } - if (overlappingEdges.length > 0) { - this.popupObj = this.edges[overlappingEdges[overlappingEdges.length - 1]]; - popupType = "edge"; + // cleanup hammer touch events + for (var event in this.listeners) { + if (this.listeners.hasOwnProperty(event)) { + delete this.listeners[event]; } } + this.listeners = null; + this.hammer = null; - if (this.popupObj) { - // show popup message window - if (this.popupObj.id != previousPopupObjId) { - if (this.popup === undefined) { - this.popup = new Popup(this.frame, this.constants.tooltip); - } - - this.popup.popupTargetType = popupType; - this.popup.popupTargetId = this.popupObj.id; + // give all components the opportunity to cleanup + this.components.forEach(function (component) { + component.destroy(); + }); - // adjust a small offset such that the mouse cursor is located in the - // bottom left location of the popup, and you can easily move over the - // popup area - this.popup.setPosition(pointer.x + 3, pointer.y - 5); - this.popup.setText(this.popupObj.getTitle()); - this.popup.show(); - } - } - else { - if (this.popup) { - this.popup.hide(); - } - } + this.body = null; }; /** - * Check if the popup must be hidden, which is the case when the mouse is no - * longer hovering on the object - * @param {{x:Number, y:Number}} pointer - * @private + * Set a custom time bar + * @param {Date} time + * @param {int} id */ - Network.prototype._checkHidePopup = function (pointer) { - var pointerObj = { - left: this._XconvertDOMtoCanvas(pointer.x), - top: this._YconvertDOMtoCanvas(pointer.y), - right: this._XconvertDOMtoCanvas(pointer.x), - bottom: this._YconvertDOMtoCanvas(pointer.y) - }; - - var stillOnObj = false; - if (this.popup.popupTargetType == 'node') { - stillOnObj = this.nodes[this.popup.popupTargetId].isOverlappingWith(pointerObj); - if (stillOnObj === true) { - var overNode = this._getNodeAt(pointer); - stillOnObj = overNode.id == this.popup.popupTargetId; - } - } - else { - if (this._getNodeAt(pointer) === null) { - stillOnObj = this.edges[this.popup.popupTargetId].isOverlappingWith(pointerObj); - } + Core.prototype.setCustomTime = function (time, id) { + if (!this.customTime) { + throw new Error('Cannot get custom time: Custom time bar is not enabled'); } + var barId = id || 0; - if (stillOnObj === false) { - this.popupObj = undefined; - this.popup.hide(); - } + this.components.forEach(function (element, index, components) { + if (element instanceof CustomTime && element.options.id === barId) { + element.setCustomTime(time); + } + }); }; - /** - * Set a new size for the network - * @param {string} width Width in pixels or percentage (for example '800px' - * or '50%') - * @param {string} height Height in pixels or percentage (for example '400px' - * or '30%') + * Retrieve the current custom time. + * @return {Date} customTime + * @param {int} id */ - Network.prototype.setSize = function(width, height) { - var emitEvent = false; - var oldWidth = this.frame.canvas.width; - var oldHeight = this.frame.canvas.height; - if (width != this.constants.width || height != this.constants.height || this.frame.style.width != width || this.frame.style.height != height) { - this.frame.style.width = width; - this.frame.style.height = height; - - this.frame.canvas.style.width = '100%'; - this.frame.canvas.style.height = '100%'; - - this.frame.canvas.width = this.frame.canvas.clientWidth * this.pixelRatio; - this.frame.canvas.height = this.frame.canvas.clientHeight * this.pixelRatio; - - this.constants.width = width; - this.constants.height = height; - - emitEvent = true; + Core.prototype.getCustomTime = function(id) { + if (!this.customTime) { + throw new Error('Cannot get custom time: Custom time bar is not enabled'); } - else { - // this would adapt the width of the canvas to the width from 100% if and only if - // there is a change. - if (this.frame.canvas.width != this.frame.canvas.clientWidth * this.pixelRatio) { - this.frame.canvas.width = this.frame.canvas.clientWidth * this.pixelRatio; - emitEvent = true; - } - if (this.frame.canvas.height != this.frame.canvas.clientHeight * this.pixelRatio) { - this.frame.canvas.height = this.frame.canvas.clientHeight * this.pixelRatio; - emitEvent = true; + var barId = id || 0, + customTime = this.customTime.getCustomTime(); + + this.components.forEach(function (element, index, components) { + if (element instanceof CustomTime && element.options.id === barId) { + customTime = element.getCustomTime(); } - } + }); - if (emitEvent == true) { - this.emit('resize', {width:this.frame.canvas.width * this.pixelRatio,height:this.frame.canvas.height * this.pixelRatio, oldWidth: oldWidth * this.pixelRatio, oldHeight: oldHeight * this.pixelRatio}); - } + return customTime; }; /** - * Set a data set with nodes for the network - * @param {Array | DataSet | DataView} nodes The data containing the nodes. - * @private + * Add custom vertical bar + * @param {Date | String | Number} time A Date, unix timestamp, or + * ISO date string. Time point where the new bar should be placed + * @param {Number | String} ID of the new bar + * @return {Number | String} ID of the new bar */ - Network.prototype._setNodes = function(nodes) { - var oldNodesData = this.nodesData; - - if (nodes instanceof DataSet || nodes instanceof DataView) { - this.nodesData = nodes; - } - else if (Array.isArray(nodes)) { - this.nodesData = new DataSet(); - this.nodesData.add(nodes); + Core.prototype.addCustomTime = function (time, id) { + if (!this.currentTime) { + throw new Error('Option showCurrentTime must be true'); } - else if (!nodes) { - this.nodesData = new DataSet(); + + if (time === undefined) { + throw new Error('Time parameter for the custom bar must be provided'); } - else { - throw new TypeError('Array or DataSet expected'); + + var ts = util.convert(time, 'Date').valueOf(), + numIds, customTime, customBarId; + + // All bar IDs are kept in 1 array, mixed types + // Bar with ID 0 is the default bar. + if (!this.customBarIds || this.customBarIds.constructor !== Array) { + this.customBarIds = [0]; } - if (oldNodesData) { - // unsubscribe from old dataset - util.forEach(this.nodesListeners, function (callback, event) { - oldNodesData.off(event, callback); + // If the ID is not provided, generate one, otherwise just use it + if (id === undefined) { + + numIds = this.customBarIds.filter(function (element) { + return util.isNumber(element); }); - } - // remove drawn nodes - this.nodes = {}; + customBarId = numIds.length > 0 ? Math.max.apply(null, numIds) + 1 : 1; - if (this.nodesData) { - // subscribe to new dataset - var me = this; - util.forEach(this.nodesListeners, function (callback, event) { - me.nodesData.on(event, callback); + } else { + + // Check for duplicates + this.customBarIds.forEach(function (element) { + if (element === id) { + throw new Error('Custom time ID already exists'); + } }); - // draw all new nodes - var ids = this.nodesData.getIds(); - this._addNodes(ids); + customBarId = id; } - this._updateSelection(); + + this.customBarIds.push(customBarId); + + customTime = new CustomTime(this.body, { + showCustomTime : true, + time : ts, + id : customBarId + }); + + this.components.push(customTime); + this.redraw(); + + return customBarId; }; /** - * Add nodes - * @param {Number[] | String[]} ids - * @private + * Remove previously added custom bar + * @param {int} id ID of the custom bar to be removed + * @return {boolean} True if the bar exists and is removed, false otherwise */ - Network.prototype._addNodes = function(ids) { - var id; - for (var i = 0, len = ids.length; i < len; i++) { - id = ids[i]; - var data = this.nodesData.get(id); - var node = new Node(data, this.images, this.groups, this.constants); - this.nodes[id] = node; // note: this may replace an existing node - if ((node.xFixed == false || node.yFixed == false) && (node.x === null || node.y === null)) { - var radius = 10 * 0.1*ids.length + 10; - var angle = 2 * Math.PI * Math.random(); - if (node.xFixed == false) {node.x = radius * Math.cos(angle);} - if (node.yFixed == false) {node.y = radius * Math.sin(angle);} - } - this.moving = true; - } + Core.prototype.removeCustomTime = function (id) { - this._updateNodeIndexList(); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); - } - this._updateCalculationNodes(); - this._reconnectEdges(); - this._updateValueRange(this.nodes); - this.updateLabels(); + var me = this; + + this.components.forEach(function (bar, index, components) { + if (bar instanceof CustomTime && bar.options.id === id) { + // Only the lines added by the user will be removed + if (bar.options.id !== 0) { + me.customBarIds.splice(me.customBarIds.indexOf(id), 1); + components.splice(index, 1); + bar.destroy(); + } + } + }); }; + /** - * Update existing nodes, or create them when not yet existing - * @param {Number[] | String[]} ids - * @private + * Get the id's of the currently visible items. + * @returns {Array} The ids of the visible items */ - Network.prototype._updateNodes = function(ids) { - var nodesData = this.nodesData.get(ids); - var nodes = this.nodes; - - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; - var node = nodes[id]; - var data = nodesData[i]; - if (node) { - // update node - node.setProperties(data, this.constants); - } - else { - // create node - node = new Node(properties, this.images, this.groups, this.constants); - nodes[id] = node; - } - } - this.moving = true; - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); - } - this._updateNodeIndexList(); - this._updateValueRange(nodes); - this._markAllEdgesAsDirty(); + Core.prototype.getVisibleItems = function() { + return this.itemSet && this.itemSet.getVisibleItems() || []; }; - Network.prototype._markAllEdgesAsDirty = function() { - for (var edgeId in this.edges) { - this.edges[edgeId].colorDirty = true; - } - } /** - * Remove existing nodes. If nodes do not exist, the method will just ignore it. - * @param {Number[] | String[]} ids - * @private + * Clear the Core. By Default, items, groups and options are cleared. + * Example usage: + * + * timeline.clear(); // clear items, groups, and options + * timeline.clear({options: true}); // clear options only + * + * @param {Object} [what] Optionally specify what to clear. By default: + * {items: true, groups: true, options: true} */ - Network.prototype._removeNodes = function(ids) { - var nodes = this.nodes; - - // remove from selection - for (var i = 0, len = ids.length; i < len; i++) { - if (this.selectionObj.nodes[ids[i]] !== undefined) { - this.nodes[ids[i]].unselect(); - this._removeFromSelection(this.nodes[ids[i]]); - } + Core.prototype.clear = function(what) { + // clear items + if (!what || what.items) { + this.setItems(null); } - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; - delete nodes[id]; + // clear groups + if (!what || what.groups) { + this.setGroups(null); } + // clear options of timeline and of each of the components + if (!what || what.options) { + this.components.forEach(function (component) { + component.setOptions(component.defaultOptions); + }); - - this._updateNodeIndexList(); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); + this.setOptions(this.defaultOptions); // this will also do a redraw } - this._updateCalculationNodes(); - this._reconnectEdges(); - this._updateSelection(); - this._updateValueRange(nodes); }; /** - * Load edges by reading the data table - * @param {Array | DataSet | DataView} edges The data containing the edges. - * @private - * @private + * Set Core window such that it fits all items + * @param {Object} [options] Available options: + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. */ - Network.prototype._setEdges = function(edges) { - var oldEdgesData = this.edgesData; + Core.prototype.fit = function(options) { + var range = this._getDataRange(); - if (edges instanceof DataSet || edges instanceof DataView) { - this.edgesData = edges; - } - else if (Array.isArray(edges)) { - this.edgesData = new DataSet(); - this.edgesData.add(edges); - } - else if (!edges) { - this.edgesData = new DataSet(); + // skip range set if there is no start and end date + if (range.start === null && range.end === null) { + return; } - else { - throw new TypeError('Array or DataSet expected'); - } - - if (oldEdgesData) { - // unsubscribe from old dataset - util.forEach(this.edgesListeners, function (callback, event) { - oldEdgesData.off(event, callback); - }); - } - - // remove drawn edges - this.edges = {}; - - if (this.edgesData) { - // subscribe to new dataset - var me = this; - util.forEach(this.edgesListeners, function (callback, event) { - me.edgesData.on(event, callback); - }); - - // draw all new nodes - var ids = this.edgesData.getIds(); - this._addEdges(ids); - } - - this._reconnectEdges(); - }; - - /** - * Add edges - * @param {Number[] | String[]} ids - * @private - */ - Network.prototype._addEdges = function (ids) { - var edges = this.edges, - edgesData = this.edgesData; - - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; - - var oldEdge = edges[id]; - if (oldEdge) { - oldEdge.disconnect(); - } - var data = edgesData.get(id, {"showInternalIds" : true}); - edges[id] = new Edge(data, this, this.constants); - } - this.moving = true; - this._updateValueRange(edges); - this._createBezierNodes(); - this._updateCalculationNodes(); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); - } + var animate = (options && options.animate !== undefined) ? options.animate : true; + this.range.setRange(range.start, range.end, animate); }; /** - * Update existing edges, or create them when not yet existing - * @param {Number[] | String[]} ids - * @private + * Calculate the data range of the items and applies a 5% window around it. + * @returns {{start: Date | null, end: Date | null}} + * @protected */ - Network.prototype._updateEdges = function (ids) { - var edges = this.edges, - edgesData = this.edgesData; - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; + Core.prototype._getDataRange = function() { + // apply the data range as range + var dataRange = this.getItemRange(); - var data = edgesData.get(id); - var edge = edges[id]; - if (edge) { - // update edge - edge.disconnect(); - edge.setProperties(data, this.constants); - edge.connect(); - } - else { - // create edge - edge = new Edge(data, this, this.constants); - this.edges[id] = edge; + // add 5% space on both sides + var start = dataRange.min; + var end = dataRange.max; + if (start != null && end != null) { + var interval = (end.valueOf() - start.valueOf()); + if (interval <= 0) { + // prevent an empty interval + interval = 24 * 60 * 60 * 1000; // 1 day } + start = new Date(start.valueOf() - interval * 0.05); + end = new Date(end.valueOf() + interval * 0.05); } - this._createBezierNodes(); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); + return { + start: start, + end: end } - this.moving = true; - this._updateValueRange(edges); }; /** - * Remove existing edges. Non existing ids will be ignored - * @param {Number[] | String[]} ids - * @private + * Set the visible window. Both parameters are optional, you can change only + * start or only end. Syntax: + * + * TimeLine.setWindow(start, end) + * TimeLine.setWindow(start, end, options) + * TimeLine.setWindow(range) + * + * Where start and end can be a Date, number, or string, and range is an + * object with properties start and end. + * + * @param {Date | Number | String | Object} [start] Start date of visible window + * @param {Date | Number | String} [end] End date of visible window + * @param {Object} [options] Available options: + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. */ - Network.prototype._removeEdges = function (ids) { - var edges = this.edges; - - // remove from selection - for (var i = 0, len = ids.length; i < len; i++) { - if (this.selectionObj.edges[ids[i]] !== undefined) { - edges[ids[i]].unselect(); - this._removeFromSelection(edges[ids[i]]); - } - } - - for (var i = 0, len = ids.length; i < len; i++) { - var id = ids[i]; - var edge = edges[id]; - if (edge) { - if (edge.via != null) { - delete this.sectors['support']['nodes'][edge.via.id]; - } - edge.disconnect(); - delete edges[id]; - } + Core.prototype.setWindow = function(start, end, options) { + var animate; + if (arguments.length == 1) { + var range = arguments[0]; + animate = (range.animate !== undefined) ? range.animate : true; + this.range.setRange(range.start, range.end, animate); } - - this.moving = true; - this._updateValueRange(edges); - if (this.constants.hierarchicalLayout.enabled == true && this.initializing == false) { - this._resetLevels(); - this._setupHierarchicalLayout(); + else { + animate = (options && options.animate !== undefined) ? options.animate : true; + this.range.setRange(start, end, animate); } - this._updateCalculationNodes(); }; /** - * Reconnect all edges - * @private + * Move the window such that given time is centered on screen. + * @param {Date | Number | String} time + * @param {Object} [options] Available options: + * `animate: boolean | number` + * If true (default), the range is animated + * smoothly to the new window. + * If a number, the number is taken as duration + * for the animation. Default duration is 500 ms. */ - Network.prototype._reconnectEdges = function() { - var id, - nodes = this.nodes, - edges = this.edges; - for (id in nodes) { - if (nodes.hasOwnProperty(id)) { - nodes[id].edges = []; - nodes[id].dynamicEdges = []; - } - } + Core.prototype.moveTo = function(time, options) { + var interval = this.range.end - this.range.start; + var t = util.convert(time, 'Date').valueOf(); - for (id in edges) { - if (edges.hasOwnProperty(id)) { - var edge = edges[id]; - edge.from = null; - edge.to = null; - edge.connect(); - } - } + var start = t - interval / 2; + var end = t + interval / 2; + var animate = (options && options.animate !== undefined) ? options.animate : true; + + this.range.setRange(start, end, animate); }; /** - * Update the values of all object in the given array according to the current - * value range of the objects in the array. - * @param {Object} obj An object containing a set of Edges or Nodes - * The objects must have a method getValue() and - * setValueRange(min, max). - * @private + * Get the visible window + * @return {{start: Date, end: Date}} Visible range */ - Network.prototype._updateValueRange = function(obj) { - var id; - - // determine the range of the objects - var valueMin = undefined; - var valueMax = undefined; - var valueTotal = 0; - for (id in obj) { - if (obj.hasOwnProperty(id)) { - var value = obj[id].getValue(); - if (value !== undefined) { - valueMin = (valueMin === undefined) ? value : Math.min(value, valueMin); - valueMax = (valueMax === undefined) ? value : Math.max(value, valueMax); - valueTotal += value; - } - } - } - - // adjust the range of all objects - if (valueMin !== undefined && valueMax !== undefined) { - for (id in obj) { - if (obj.hasOwnProperty(id)) { - obj[id].setValueRange(valueMin, valueMax, valueTotal); - } - } - } + Core.prototype.getWindow = function() { + var range = this.range.getRange(); + return { + start: new Date(range.start), + end: new Date(range.end) + }; }; /** - * Redraw the network with the current data - * chart will be resized too. + * Force a redraw. Can be overridden by implementations of Core */ - Network.prototype.redraw = function() { - this.setSize(this.constants.width, this.constants.height); + Core.prototype.redraw = function() { this._redraw(); }; /** - * Redraw the network with the current data - * @param hidden | used to get the first estimate of the node sizes. only the nodes are drawn after which they are quickly drawn over. - * @private + * Redraw for internal use. Redraws all components. See also the public + * method redraw. + * @protected */ - Network.prototype._requestRedraw = function(hidden) { - if (this.redrawRequested !== true) { - this.redrawRequested = true; - if (this.requiresTimeout === true) { - window.setTimeout(this._redraw.bind(this, hidden),0); - } - else { - window.requestAnimationFrame(this._redraw.bind(this, hidden, true)); - } + Core.prototype._redraw = function() { + var resized = false; + var options = this.options; + var props = this.props; + var dom = this.dom; + + if (!dom) return; // when destroyed + + DateUtil.updateHiddenDates(this.body, this.options.hiddenDates); + + // update class names + if (options.orientation == 'top') { + util.addClassName(dom.root, 'top'); + util.removeClassName(dom.root, 'bottom'); + } + else { + util.removeClassName(dom.root, 'top'); + util.addClassName(dom.root, 'bottom'); } - }; - Network.prototype._redraw = function(hidden, requested) { - if (hidden === undefined) { - hidden = false; + // update root width and height options + dom.root.style.maxHeight = util.option.asSize(options.maxHeight, ''); + dom.root.style.minHeight = util.option.asSize(options.minHeight, ''); + dom.root.style.width = util.option.asSize(options.width, ''); + + // calculate border widths + props.border.left = (dom.centerContainer.offsetWidth - dom.centerContainer.clientWidth) / 2; + props.border.right = props.border.left; + props.border.top = (dom.centerContainer.offsetHeight - dom.centerContainer.clientHeight) / 2; + props.border.bottom = props.border.top; + var borderRootHeight= dom.root.offsetHeight - dom.root.clientHeight; + var borderRootWidth = dom.root.offsetWidth - dom.root.clientWidth; + + // workaround for a bug in IE: the clientWidth of an element with + // a height:0px and overflow:hidden is not calculated and always has value 0 + if (dom.centerContainer.clientHeight === 0) { + props.border.left = props.border.top; + props.border.right = props.border.left; + } + if (dom.root.clientHeight === 0) { + borderRootWidth = borderRootHeight; } - this.redrawRequested = false; - var ctx = this.frame.canvas.getContext('2d'); - ctx.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); + // calculate the heights. If any of the side panels is empty, we set the height to + // minus the border width, such that the border will be invisible + props.center.height = dom.center.offsetHeight; + props.left.height = dom.left.offsetHeight; + props.right.height = dom.right.offsetHeight; + props.top.height = dom.top.clientHeight || -props.border.top; + props.bottom.height = dom.bottom.clientHeight || -props.border.bottom; - // clear the canvas - var w = this.frame.canvas.clientWidth; - var h = this.frame.canvas.clientHeight; - ctx.clearRect(0, 0, w, h); + // TODO: compensate borders when any of the panels is empty. - // set scaling and translation - ctx.save(); - ctx.translate(this.translation.x, this.translation.y); - ctx.scale(this.scale, this.scale); + // apply auto height + // TODO: only calculate autoHeight when needed (else we cause an extra reflow/repaint of the DOM) + var contentHeight = Math.max(props.left.height, props.center.height, props.right.height); + var autoHeight = props.top.height + contentHeight + props.bottom.height + + borderRootHeight + props.border.top + props.border.bottom; + dom.root.style.height = util.option.asSize(options.height, autoHeight + 'px'); - this.canvasTopLeft = { - "x": this._XconvertDOMtoCanvas(0), - "y": this._YconvertDOMtoCanvas(0) - }; - this.canvasBottomRight = { - "x": this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth), - "y": this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight) - }; + // calculate heights of the content panels + props.root.height = dom.root.offsetHeight; + props.background.height = props.root.height - borderRootHeight; + var containerHeight = props.root.height - props.top.height - props.bottom.height - + borderRootHeight; + props.centerContainer.height = containerHeight; + props.leftContainer.height = containerHeight; + props.rightContainer.height = props.leftContainer.height; - if (hidden === false) { - this._doInAllSectors("_drawAllSectorNodes", ctx); - if (this.drag.dragging == false || this.drag.dragging === undefined || this.constants.hideEdgesOnDrag == false) { - this._doInAllSectors("_drawEdges", ctx); - } - } + // calculate the widths of the panels + props.root.width = dom.root.offsetWidth; + props.background.width = props.root.width - borderRootWidth; + props.left.width = dom.leftContainer.clientWidth || -props.border.left; + props.leftContainer.width = props.left.width; + props.right.width = dom.rightContainer.clientWidth || -props.border.right; + props.rightContainer.width = props.right.width; + var centerWidth = props.root.width - props.left.width - props.right.width - borderRootWidth; + props.center.width = centerWidth; + props.centerContainer.width = centerWidth; + props.top.width = centerWidth; + props.bottom.width = centerWidth; - if (this.drag.dragging == false || this.drag.dragging === undefined || this.constants.hideNodesOnDrag == false) { - this._doInAllSectors("_drawNodes",ctx,false); + // resize the panels + dom.background.style.height = props.background.height + 'px'; + dom.backgroundVertical.style.height = props.background.height + 'px'; + dom.backgroundHorizontal.style.height = props.centerContainer.height + 'px'; + dom.centerContainer.style.height = props.centerContainer.height + 'px'; + dom.leftContainer.style.height = props.leftContainer.height + 'px'; + dom.rightContainer.style.height = props.rightContainer.height + 'px'; + + dom.background.style.width = props.background.width + 'px'; + dom.backgroundVertical.style.width = props.centerContainer.width + 'px'; + dom.backgroundHorizontal.style.width = props.background.width + 'px'; + dom.centerContainer.style.width = props.center.width + 'px'; + dom.top.style.width = props.top.width + 'px'; + dom.bottom.style.width = props.bottom.width + 'px'; + + // reposition the panels + dom.background.style.left = '0'; + dom.background.style.top = '0'; + dom.backgroundVertical.style.left = (props.left.width + props.border.left) + 'px'; + dom.backgroundVertical.style.top = '0'; + dom.backgroundHorizontal.style.left = '0'; + dom.backgroundHorizontal.style.top = props.top.height + 'px'; + dom.centerContainer.style.left = props.left.width + 'px'; + dom.centerContainer.style.top = props.top.height + 'px'; + dom.leftContainer.style.left = '0'; + dom.leftContainer.style.top = props.top.height + 'px'; + dom.rightContainer.style.left = (props.left.width + props.center.width) + 'px'; + dom.rightContainer.style.top = props.top.height + 'px'; + dom.top.style.left = props.left.width + 'px'; + dom.top.style.top = '0'; + dom.bottom.style.left = props.left.width + 'px'; + dom.bottom.style.top = (props.top.height + props.centerContainer.height) + 'px'; + + // update the scrollTop, feasible range for the offset can be changed + // when the height of the Core or of the contents of the center changed + this._updateScrollTop(); + + // reposition the scrollable contents + var offset = this.props.scrollTop; + if (options.orientation == 'bottom') { + offset += Math.max(this.props.centerContainer.height - this.props.center.height - + this.props.border.top - this.props.border.bottom, 0); } + dom.center.style.left = '0'; + dom.center.style.top = offset + 'px'; + dom.left.style.left = '0'; + dom.left.style.top = offset + 'px'; + dom.right.style.left = '0'; + dom.right.style.top = offset + 'px'; - if (hidden === false) { - if (this.controlNodesActive == true) { - this._doInAllSectors("_drawControlNodes", ctx); + // show shadows when vertical scrolling is available + var visibilityTop = this.props.scrollTop == 0 ? 'hidden' : ''; + var visibilityBottom = this.props.scrollTop == this.props.scrollTopMin ? 'hidden' : ''; + dom.shadowTop.style.visibility = visibilityTop; + dom.shadowBottom.style.visibility = visibilityBottom; + dom.shadowTopLeft.style.visibility = visibilityTop; + dom.shadowBottomLeft.style.visibility = visibilityBottom; + dom.shadowTopRight.style.visibility = visibilityTop; + dom.shadowBottomRight.style.visibility = visibilityBottom; + + // redraw all components + this.components.forEach(function (component) { + resized = component.redraw() || resized; + }); + if (resized) { + // keep repainting until all sizes are settled + var MAX_REDRAWS = 3; // maximum number of consecutive redraws + if (this.redrawCount < MAX_REDRAWS) { + this.redrawCount++; + this._redraw(); + } + else { + console.log('WARNING: infinite loop in redraw?'); } + this.redrawCount = 0; } - // this._doInSupportSector("_drawNodes",ctx,true); - // this._drawTree(ctx,"#F00F0F"); - - // restore original scaling and translation - ctx.restore(); + this.emit("finishedRedraw"); + }; - if (hidden === true) { - ctx.clearRect(0, 0, w, h); - } - } + // TODO: deprecated since version 1.1.0, remove some day + Core.prototype.repaint = function () { + throw new Error('Function repaint is deprecated. Use redraw instead.'); + }; /** - * Set the translation of the network - * @param {Number} offsetX Horizontal offset - * @param {Number} offsetY Vertical offset - * @private + * Set a current time. This can be used for example to ensure that a client's + * time is synchronized with a shared server time. + * Only applicable when option `showCurrentTime` is true. + * @param {Date | String | Number} time A Date, unix timestamp, or + * ISO date string. */ - Network.prototype._setTranslation = function(offsetX, offsetY) { - if (this.translation === undefined) { - this.translation = { - x: 0, - y: 0 - }; + Core.prototype.setCurrentTime = function(time) { + if (!this.currentTime) { + throw new Error('Option showCurrentTime must be true'); } - if (offsetX !== undefined) { - this.translation.x = offsetX; - } - if (offsetY !== undefined) { - this.translation.y = offsetY; + this.currentTime.setCurrentTime(time); + }; + + /** + * Get the current time. + * Only applicable when option `showCurrentTime` is true. + * @return {Date} Returns the current time. + */ + Core.prototype.getCurrentTime = function() { + if (!this.currentTime) { + throw new Error('Option showCurrentTime must be true'); } - this.emit('viewChanged'); + return this.currentTime.getCurrentTime(); }; /** - * Get the translation of the network - * @return {Object} translation An object with parameters x and y, both a number + * Convert a position on screen (pixels) to a datetime + * @param {int} x Position on the screen in pixels + * @return {Date} time The datetime the corresponds with given position x * @private */ - Network.prototype._getTranslation = function() { - return { - x: this.translation.x, - y: this.translation.y - }; + // TODO: move this function to Range + Core.prototype._toTime = function(x) { + return DateUtil.toTime(this, x, this.props.center.width); }; /** - * Scale the network - * @param {Number} scale Scaling factor 1.0 is unscaled + * Convert a position on the global screen (pixels) to a datetime + * @param {int} x Position on the screen in pixels + * @return {Date} time The datetime the corresponds with given position x * @private */ - Network.prototype._setScale = function(scale) { - this.scale = scale; + // TODO: move this function to Range + Core.prototype._toGlobalTime = function(x) { + return DateUtil.toTime(this, x, this.props.root.width); + //var conversion = this.range.conversion(this.props.root.width); + //return new Date(x / conversion.scale + conversion.offset); }; /** - * Get the current scale of the network - * @return {Number} scale Scaling factor 1.0 is unscaled + * Convert a datetime (Date object) into a position on the screen + * @param {Date} time A date + * @return {int} x The position on the screen in pixels which corresponds + * with the given date. * @private */ - Network.prototype._getScale = function() { - return this.scale; + // TODO: move this function to Range + Core.prototype._toScreen = function(time) { + return DateUtil.toScreen(this, time, this.props.center.width); }; - /** - * Convert the X coordinate in DOM-space (coordinate point in browser relative to the container div) to - * the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon) - * @param {number} x - * @returns {number} - * @private - */ - Network.prototype._XconvertDOMtoCanvas = function(x) { - return (x - this.translation.x) / this.scale; - }; + /** - * Convert the X coordinate in canvas-space (the simulation sandbox, which the camera looks upon) to - * the X coordinate in DOM-space (coordinate point in browser relative to the container div) - * @param {number} x - * @returns {number} + * Convert a datetime (Date object) into a position on the root + * This is used to get the pixel density estimate for the screen, not the center panel + * @param {Date} time A date + * @return {int} x The position on root in pixels which corresponds + * with the given date. * @private */ - Network.prototype._XconvertCanvasToDOM = function(x) { - return x * this.scale + this.translation.x; + // TODO: move this function to Range + Core.prototype._toGlobalScreen = function(time) { + return DateUtil.toScreen(this, time, this.props.root.width); + //var conversion = this.range.conversion(this.props.root.width); + //return (time.valueOf() - conversion.offset) * conversion.scale; }; + /** - * Convert the Y coordinate in DOM-space (coordinate point in browser relative to the container div) to - * the Y coordinate in canvas-space (the simulation sandbox, which the camera looks upon) - * @param {number} y - * @returns {number} + * Initialize watching when option autoResize is true * @private */ - Network.prototype._YconvertDOMtoCanvas = function(y) { - return (y - this.translation.y) / this.scale; + Core.prototype._initAutoResize = function () { + if (this.options.autoResize == true) { + this._startAutoResize(); + } + else { + this._stopAutoResize(); + } }; /** - * Convert the Y coordinate in canvas-space (the simulation sandbox, which the camera looks upon) to - * the Y coordinate in DOM-space (coordinate point in browser relative to the container div) - * @param {number} y - * @returns {number} + * Watch for changes in the size of the container. On resize, the Panel will + * automatically redraw itself. * @private */ - Network.prototype._YconvertCanvasToDOM = function(y) { - return y * this.scale + this.translation.y ; - }; + Core.prototype._startAutoResize = function () { + var me = this; + + this._stopAutoResize(); + this._onResize = function() { + if (me.options.autoResize != true) { + // stop watching when the option autoResize is changed to false + me._stopAutoResize(); + return; + } - /** - * - * @param {object} pos = {x: number, y: number} - * @returns {{x: number, y: number}} - * @constructor - */ - Network.prototype.canvasToDOM = function (pos) { - return {x: this._XconvertCanvasToDOM(pos.x), y: this._YconvertCanvasToDOM(pos.y)}; - }; + if (me.dom.root) { + // check whether the frame is resized + // Note: we compare offsetWidth here, not clientWidth. For some reason, + // IE does not restore the clientWidth from 0 to the actual width after + // changing the timeline's container display style from none to visible + if ((me.dom.root.offsetWidth != me.props.lastWidth) || + (me.dom.root.offsetHeight != me.props.lastHeight)) { + me.props.lastWidth = me.dom.root.offsetWidth; + me.props.lastHeight = me.dom.root.offsetHeight; - /** - * - * @param {object} pos = {x: number, y: number} - * @returns {{x: number, y: number}} - * @constructor - */ - Network.prototype.DOMtoCanvas = function (pos) { - return {x: this._XconvertDOMtoCanvas(pos.x), y: this._YconvertDOMtoCanvas(pos.y)}; + me.emit('change'); + } + } + }; + + // add event listener to window resize + util.addEventListener(window, 'resize', this._onResize); + + this.watchTimer = setInterval(this._onResize, 1000); }; /** - * Redraw all nodes - * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); - * @param {CanvasRenderingContext2D} ctx - * @param {Boolean} [alwaysShow] + * Stop watching for a resize of the frame. * @private */ - Network.prototype._drawNodes = function(ctx,alwaysShow) { - if (alwaysShow === undefined) { - alwaysShow = false; + Core.prototype._stopAutoResize = function () { + if (this.watchTimer) { + clearInterval(this.watchTimer); + this.watchTimer = undefined; } - // first draw the unselected nodes - var nodes = this.nodes; - var selected = []; - - for (var id in nodes) { - if (nodes.hasOwnProperty(id)) { - nodes[id].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight); - if (nodes[id].isSelected()) { - selected.push(id); - } - else { - if (nodes[id].inArea() || alwaysShow) { - nodes[id].draw(ctx); - } - } - } - } + // remove event listener on window.resize + util.removeEventListener(window, 'resize', this._onResize); + this._onResize = null; + }; - // draw the selected nodes on top - for (var s = 0, sMax = selected.length; s < sMax; s++) { - if (nodes[selected[s]].inArea() || alwaysShow) { - nodes[selected[s]].draw(ctx); - } - } + /** + * Start moving the timeline vertically + * @param {Event} event + * @private + */ + Core.prototype._onTouch = function (event) { + this.touch.allowDragging = true; }; /** - * Redraw all edges - * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); - * @param {CanvasRenderingContext2D} ctx + * Start moving the timeline vertically + * @param {Event} event * @private */ - Network.prototype._drawEdges = function(ctx) { - var edges = this.edges; - for (var id in edges) { - if (edges.hasOwnProperty(id)) { - var edge = edges[id]; - edge.setScale(this.scale); - if (edge.connected) { - edges[id].draw(ctx); - } - } - } + Core.prototype._onPinch = function (event) { + this.touch.allowDragging = false; }; /** - * Redraw all edges - * The 2d context of a HTML canvas can be retrieved by canvas.getContext('2d'); - * @param {CanvasRenderingContext2D} ctx + * Start moving the timeline vertically + * @param {Event} event * @private */ - Network.prototype._drawControlNodes = function(ctx) { - var edges = this.edges; - for (var id in edges) { - if (edges.hasOwnProperty(id)) { - edges[id]._drawControlNodes(ctx); - } - } + Core.prototype._onDragStart = function (event) { + this.touch.initialScrollTop = this.props.scrollTop; }; /** - * Find a stable position for all nodes + * Move the timeline vertically + * @param {Event} event * @private */ - Network.prototype._stabilize = function() { - if (this.constants.freezeForStabilization == true) { - this._freezeDefinedNodes(); - } + Core.prototype._onDrag = function (event) { + // refuse to drag when we where pinching to prevent the timeline make a jump + // when releasing the fingers in opposite order from the touch screen + if (!this.touch.allowDragging) return; - // find stable position - var count = 0; - while (this.moving && count < this.constants.stabilizationIterations) { - this._physicsTick(); - count++; - } + var delta = event.gesture.deltaY; + var oldScrollTop = this._getScrollTop(); + var newScrollTop = this._setScrollTop(this.touch.initialScrollTop + delta); - if (this.constants.zoomExtentOnStabilize == true) { - this.zoomExtent({duration:0}, false, true); - } - if (this.constants.freezeForStabilization == true) { - this._restoreFrozenNodes(); + if (newScrollTop != oldScrollTop) { + this._redraw(); // TODO: this causes two redraws when dragging, the other is triggered by rangechange already + this.emit("verticalDrag"); } - - this.emit("stabilizationIterationsDone"); }; /** - * When initializing and stabilizing, we can freeze nodes with a predefined position. This greatly speeds up stabilization - * because only the supportnodes for the smoothCurves have to settle. - * + * Apply a scrollTop + * @param {Number} scrollTop + * @returns {Number} scrollTop Returns the applied scrollTop * @private */ - Network.prototype._freezeDefinedNodes = function() { - var nodes = this.nodes; - for (var id in nodes) { - if (nodes.hasOwnProperty(id)) { - if (nodes[id].x != null && nodes[id].y != null) { - nodes[id].fixedData.x = nodes[id].xFixed; - nodes[id].fixedData.y = nodes[id].yFixed; - nodes[id].xFixed = true; - nodes[id].yFixed = true; - } - } - } + Core.prototype._setScrollTop = function (scrollTop) { + this.props.scrollTop = scrollTop; + this._updateScrollTop(); + return this.props.scrollTop; }; /** - * Unfreezes the nodes that have been frozen by _freezeDefinedNodes. - * + * Update the current scrollTop when the height of the containers has been changed + * @returns {Number} scrollTop Returns the applied scrollTop * @private */ - Network.prototype._restoreFrozenNodes = function() { - var nodes = this.nodes; - for (var id in nodes) { - if (nodes.hasOwnProperty(id)) { - if (nodes[id].fixedData.x != null) { - nodes[id].xFixed = nodes[id].fixedData.x; - nodes[id].yFixed = nodes[id].fixedData.y; - } + Core.prototype._updateScrollTop = function () { + // recalculate the scrollTopMin + var scrollTopMin = Math.min(this.props.centerContainer.height - this.props.center.height, 0); // is negative or zero + if (scrollTopMin != this.props.scrollTopMin) { + // in case of bottom orientation, change the scrollTop such that the contents + // do not move relative to the time axis at the bottom + if (this.options.orientation == 'bottom') { + this.props.scrollTop += (scrollTopMin - this.props.scrollTopMin); } + this.props.scrollTopMin = scrollTopMin; } - }; + // limit the scrollTop to the feasible scroll range + if (this.props.scrollTop > 0) this.props.scrollTop = 0; + if (this.props.scrollTop < scrollTopMin) this.props.scrollTop = scrollTopMin; + + return this.props.scrollTop; + }; /** - * Check if any of the nodes is still moving - * @param {number} vmin the minimum velocity considered as 'moving' - * @return {boolean} true if moving, false if non of the nodes is moving + * Get the current scrollTop + * @returns {number} scrollTop * @private */ - Network.prototype._isMoving = function(vmin) { - var nodes = this.nodes; - for (var id in nodes) { - if (nodes[id] !== undefined) { - if (nodes[id].isMoving(vmin) == true) { - return true; - } - } - } - return false; + Core.prototype._getScrollTop = function () { + return this.props.scrollTop; }; + module.exports = Core; + + +/***/ }, +/* 47 */ +/***/ function(module, exports, __webpack_require__) { + + var Hammer = __webpack_require__(45); /** - * /** - * Perform one discrete step for all nodes - * - * @private + * Fake a hammer.js gesture. Event can be a ScrollEvent or MouseMoveEvent + * @param {Element} element + * @param {Event} event */ - Network.prototype._discreteStepNodes = function() { - var interval = this.physicsDiscreteStepsize; - var nodes = this.nodes; - var nodeId; - var nodesPresent = false; + exports.fakeGesture = function(element, event) { + var eventType = null; - if (this.constants.maxVelocity > 0) { - for (nodeId in nodes) { - if (nodes.hasOwnProperty(nodeId)) { - nodes[nodeId].discreteStepLimited(interval, this.constants.maxVelocity); - nodesPresent = true; - } - } + // for hammer.js 1.0.5 + // var gesture = Hammer.event.collectEventData(this, eventType, event); + + // for hammer.js 1.0.6+ + var touches = Hammer.event.getTouchList(event, eventType); + var gesture = Hammer.event.collectEventData(this, eventType, touches, event); + + // on IE in standards mode, no touches are recognized by hammer.js, + // resulting in NaN values for center.pageX and center.pageY + if (isNaN(gesture.center.pageX)) { + gesture.center.pageX = event.pageX; } - else { - for (nodeId in nodes) { - if (nodes.hasOwnProperty(nodeId)) { - nodes[nodeId].discreteStep(interval); - nodesPresent = true; - } - } + if (isNaN(gesture.center.pageY)) { + gesture.center.pageY = event.pageY; } - if (nodesPresent == true) { - var vminCorrected = this.constants.minVelocity / Math.max(this.scale,0.05); - if (vminCorrected > 0.5*this.constants.maxVelocity) { - return true; - } - else { - return this._isMoving(vminCorrected); - } - } - return false; + return gesture; }; - Network.prototype._revertPhysicsState = function() { - var nodes = this.nodes; - for (var nodeId in nodes) { - if (nodes.hasOwnProperty(nodeId)) { - nodes[nodeId].revertPosition(); - } - } +/***/ }, +/* 48 */ +/***/ function(module, exports, __webpack_require__) { + + // English + exports['en'] = { + current: 'current', + time: 'time' + }; + exports['en_EN'] = exports['en']; + exports['en_US'] = exports['en']; + + // Dutch + exports['nl'] = { + custom: 'aangepaste', + time: 'tijd' + }; + exports['nl_NL'] = exports['nl']; + exports['nl_BE'] = exports['nl']; + + +/***/ }, +/* 49 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Created by Alex on 11/11/2014. + */ + var DOMutil = __webpack_require__(2); + var Points = __webpack_require__(51); + + function Line(groupId, options) { + this.groupId = groupId; + this.options = options; } - Network.prototype._revertPhysicsTick = function() { - this._doInAllActiveSectors("_revertPhysicsState"); - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this._doInSupportSector("_revertPhysicsState"); + Line.prototype.getYRange = function(groupData) { + var yMin = groupData[0].y; + var yMax = groupData[0].y; + for (var j = 0; j < groupData.length; j++) { + yMin = yMin > groupData[j].y ? groupData[j].y : yMin; + yMax = yMax < groupData[j].y ? groupData[j].y : yMax; } - } + return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; + }; + /** - * A single simulation step (or "tick") in the physics simulation + * draw a line graph * - * @private + * @param dataset + * @param group */ - Network.prototype._physicsTick = function() { - if (!this.freezeSimulationEnabled) { - if (this.moving == true) { - var mainMovingStatus = false; - var supportMovingStatus = false; - - this._doInAllActiveSectors("_initializeForceCalculation"); - var mainMoving = this._doInAllActiveSectors("_discreteStepNodes"); - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - supportMovingStatus = this._doInSupportSector("_discreteStepNodes"); - } - - // gather movement data from all sectors, if one moves, we are NOT stabilzied - for (var i = 0; i < mainMoving.length; i++) { - mainMovingStatus = mainMoving[i] || mainMovingStatus; + Line.prototype.draw = function (dataset, group, framework) { + if (dataset != null) { + if (dataset.length > 0) { + var path, d; + var svgHeight = Number(framework.svg.style.height.replace('px','')); + path = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); + path.setAttributeNS(null, "class", group.className); + if(group.style !== undefined) { + path.setAttributeNS(null, "style", group.style); } - // determine if the network has stabilzied - this.moving = mainMovingStatus || supportMovingStatus; - if (this.moving == false) { - this._revertPhysicsTick(); + // construct path from dataset + if (group.options.catmullRom.enabled == true) { + d = Line._catmullRom(dataset, group); } else { - // this is here to ensure that there is no start event when the network is already stable. - if (this.startedStabilization == false) { - this.emit("startStabilization"); - this.startedStabilization = true; + d = Line._linear(dataset); + } + + // append with points for fill and finalize the path + if (group.options.shaded.enabled == true) { + var fillPath = DOMutil.getSVGElement('path', framework.svgElements, framework.svg); + var dFill; + if (group.options.shaded.orientation == 'top') { + dFill = 'M' + dataset[0].x + ',' + 0 + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + 0; + } + else { + dFill = 'M' + dataset[0].x + ',' + svgHeight + ' ' + d + 'L' + dataset[dataset.length - 1].x + ',' + svgHeight; + } + fillPath.setAttributeNS(null, "class", group.className + " fill"); + if(group.options.shaded.style !== undefined) { + fillPath.setAttributeNS(null, "style", group.options.shaded.style); } + fillPath.setAttributeNS(null, "d", dFill); } + // copy properties to path for drawing. + path.setAttributeNS(null, 'd', 'M' + d); - this.stabilizationIterations++; + // draw points + if (group.options.drawPoints.enabled == true) { + Points.draw(dataset, group, framework); + } } } }; + /** - * This function runs one step of the animation. It calls an x amount of physics ticks and one render tick. - * It reschedules itself at the beginning of the function - * + * This uses an uniform parametrization of the CatmullRom algorithm: + * 'On the Parameterization of Catmull-Rom Curves' by Cem Yuksel et al. + * @param data + * @returns {string} * @private */ - Network.prototype._animationStep = function() { - // reset the timer so a new scheduled animation step can be set - this.timer = undefined; - - if (this.requiresTimeout == true) { - // this schedules a new animation step - this.start(); - } + Line._catmullRomUniform = function(data) { + // catmull rom + var p0, p1, p2, p3, bp1, bp2; + var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; + var normalization = 1/6; + var length = data.length; + for (var i = 0; i < length - 1; i++) { - // handle the keyboad movement - this._handleNavigation(); + p0 = (i == 0) ? data[0] : data[i-1]; + p1 = data[i]; + p2 = data[i+1]; + p3 = (i + 2 < length) ? data[i+2] : p2; - // check if the physics have settled - if (this.moving == true) { - var startTime = Date.now(); - this._physicsTick(); - var physicsTime = Date.now() - startTime; - // run double speed if it is a little graph - if ((this.renderTimestep - this.renderTime > 2 * physicsTime || this.runDoubleSpeed == true) && this.moving == true) { - this._physicsTick(); + // Catmull-Rom to Cubic Bezier conversion matrix + // 0 1 0 0 + // -1/6 1 1/6 0 + // 0 1/6 1 -1/6 + // 0 0 1 0 - // this makes sure there is no jitter. The decision is taken once to run it at double speed. - if (this.renderTime != 0) { - this.runDoubleSpeed = true - } - } - } + // bp0 = { x: p1.x, y: p1.y }; + bp1 = { x: ((-p0.x + 6*p1.x + p2.x) *normalization), y: ((-p0.y + 6*p1.y + p2.y) *normalization)}; + bp2 = { x: (( p1.x + 6*p2.x - p3.x) *normalization), y: (( p1.y + 6*p2.y - p3.y) *normalization)}; + // bp0 = { x: p2.x, y: p2.y }; - var renderStartTime = Date.now(); - this._redraw(); - this.renderTime = Date.now() - renderStartTime; - - if (this.requiresTimeout == false) { - // this schedules a new animation step - this.start(); + d += 'C' + + bp1.x + ',' + + bp1.y + ' ' + + bp2.x + ',' + + bp2.y + ' ' + + p2.x + ',' + + p2.y + ' '; } - }; - if (typeof window !== 'undefined') { - window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || - window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; - } + return d; + }; /** - * Schedule a animation step with the refreshrate interval. + * This uses either the chordal or centripetal parameterization of the catmull-rom algorithm. + * By default, the centripetal parameterization is used because this gives the nicest results. + * These parameterizations are relatively heavy because the distance between 4 points have to be calculated. + * + * One optimization can be used to reuse distances since this is a sliding window approach. + * @param data + * @param group + * @returns {string} + * @private */ - Network.prototype.start = function() { - if (this.freezeSimulationEnabled == true) { - this.moving = false; - } - if (this.moving == true || this.xIncrement != 0 || this.yIncrement != 0 || this.zoomIncrement != 0 || this.animating == true) { - if (!this.timer) { - if (this.requiresTimeout == true) { - this.timer = window.setTimeout(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function - } - else { - this.timer = window.requestAnimationFrame(this._animationStep.bind(this)); // wait this.renderTimeStep milliseconds and perform the animation step function - } - } + Line._catmullRom = function(data, group) { + var alpha = group.options.catmullRom.alpha; + if (alpha == 0 || alpha === undefined) { + return this._catmullRomUniform(data); } else { - this._requestRedraw(); - // this check is to ensure that the network does not emit these events if it was already stabilized and setOptions is called (setting moving to true and calling start()) - if (this.stabilizationIterations > 1) { - // trigger the "stabilized" event. - // The event is triggered on the next tick, to prevent the case that - // it is fired while initializing the Network, in which case you would not - // be able to catch it - var me = this; - var params = { - iterations: me.stabilizationIterations - }; - this.stabilizationIterations = 0; - this.startedStabilization = false; - setTimeout(function () { - me.emit("stabilized", params); - }, 0); - } - else { - this.stabilizationIterations = 0; + var p0, p1, p2, p3, bp1, bp2, d1,d2,d3, A, B, N, M; + var d3powA, d2powA, d3pow2A, d2pow2A, d1pow2A, d1powA; + var d = Math.round(data[0].x) + ',' + Math.round(data[0].y) + ' '; + var length = data.length; + for (var i = 0; i < length - 1; i++) { + + p0 = (i == 0) ? data[0] : data[i-1]; + p1 = data[i]; + p2 = data[i+1]; + p3 = (i + 2 < length) ? data[i+2] : p2; + + d1 = Math.sqrt(Math.pow(p0.x - p1.x,2) + Math.pow(p0.y - p1.y,2)); + d2 = Math.sqrt(Math.pow(p1.x - p2.x,2) + Math.pow(p1.y - p2.y,2)); + d3 = Math.sqrt(Math.pow(p2.x - p3.x,2) + Math.pow(p2.y - p3.y,2)); + + // Catmull-Rom to Cubic Bezier conversion matrix + + // A = 2d1^2a + 3d1^a * d2^a + d3^2a + // B = 2d3^2a + 3d3^a * d2^a + d2^2a + + // [ 0 1 0 0 ] + // [ -d2^2a /N A/N d1^2a /N 0 ] + // [ 0 d3^2a /M B/M -d2^2a /M ] + // [ 0 0 1 0 ] + + d3powA = Math.pow(d3, alpha); + d3pow2A = Math.pow(d3,2*alpha); + d2powA = Math.pow(d2, alpha); + d2pow2A = Math.pow(d2,2*alpha); + d1powA = Math.pow(d1, alpha); + d1pow2A = Math.pow(d1,2*alpha); + + A = 2*d1pow2A + 3*d1powA * d2powA + d2pow2A; + B = 2*d3pow2A + 3*d3powA * d2powA + d2pow2A; + N = 3*d1powA * (d1powA + d2powA); + if (N > 0) {N = 1 / N;} + M = 3*d3powA * (d3powA + d2powA); + if (M > 0) {M = 1 / M;} + + bp1 = { x: ((-d2pow2A * p0.x + A*p1.x + d1pow2A * p2.x) * N), + y: ((-d2pow2A * p0.y + A*p1.y + d1pow2A * p2.y) * N)}; + + bp2 = { x: (( d3pow2A * p1.x + B*p2.x - d2pow2A * p3.x) * M), + y: (( d3pow2A * p1.y + B*p2.y - d2pow2A * p3.y) * M)}; + + if (bp1.x == 0 && bp1.y == 0) {bp1 = p1;} + if (bp2.x == 0 && bp2.y == 0) {bp2 = p2;} + d += 'C' + + bp1.x + ',' + + bp1.y + ' ' + + bp2.x + ',' + + bp2.y + ' ' + + p2.x + ',' + + p2.y + ' '; } + + return d; } }; - /** - * Move the network according to the keyboard presses. - * + * this generates the SVG path for a linear drawing between datapoints. + * @param data + * @returns {string} * @private */ - Network.prototype._handleNavigation = function() { - if (this.xIncrement != 0 || this.yIncrement != 0) { - var translation = this._getTranslation(); - this._setTranslation(translation.x+this.xIncrement, translation.y+this.yIncrement); - } - if (this.zoomIncrement != 0) { - var center = { - x: this.frame.canvas.clientWidth / 2, - y: this.frame.canvas.clientHeight / 2 - }; - this._zoom(this.scale*(1 + this.zoomIncrement), center); + Line._linear = function(data) { + // linear + var d = ''; + for (var i = 0; i < data.length; i++) { + if (i == 0) { + d += data[i].x + ',' + data[i].y; + } + else { + d += ' ' + data[i].x + ',' + data[i].y; + } } + return d; }; + module.exports = Line; + + +/***/ }, +/* 50 */ +/***/ function(module, exports, __webpack_require__) { /** - * Freeze the _animationStep + * Created by Alex on 11/11/2014. */ - Network.prototype.freezeSimulation = function(freeze) { - if (freeze == true) { - this.freezeSimulationEnabled = true; - this.moving = false; + var DOMutil = __webpack_require__(2); + var Points = __webpack_require__(51); + + function Bargraph(groupId, options) { + this.groupId = groupId; + this.options = options; + } + + Bargraph.prototype.getYRange = function(groupData) { + if (this.options.barChart.handleOverlap != 'stack') { + var yMin = groupData[0].y; + var yMax = groupData[0].y; + for (var j = 0; j < groupData.length; j++) { + yMin = yMin > groupData[j].y ? groupData[j].y : yMin; + yMax = yMax < groupData[j].y ? groupData[j].y : yMax; + } + return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; } else { - this.freezeSimulationEnabled = false; - this.moving = true; - this.start(); + var barCombinedData = []; + for (var j = 0; j < groupData.length; j++) { + barCombinedData.push({ + x: groupData[j].x, + y: groupData[j].y, + groupId: this.groupId + }); + } + return barCombinedData; } }; + /** - * This function cleans the support nodes if they are not needed and adds them when they are. + * draw a bar graph * - * @param {boolean} [disableStart] - * @private + * @param groupIds + * @param processedGroupData */ - Network.prototype._configureSmoothCurves = function(disableStart) { - if (disableStart === undefined) { - disableStart = true; - } - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this._createBezierNodes(); - // cleanup unused support nodes - for (var nodeId in this.sectors['support']['nodes']) { - if (this.sectors['support']['nodes'].hasOwnProperty(nodeId)) { - if (this.edges[this.sectors['support']['nodes'][nodeId].parentEdgeId] === undefined) { - delete this.sectors['support']['nodes'][nodeId]; + Bargraph.draw = function (groupIds, processedGroupData, framework) { + var combinedData = []; + var intersections = {}; + var coreDistance; + var key, drawData; + var group; + var i,j; + var barPoints = 0; + + // combine all barchart data + for (i = 0; i < groupIds.length; i++) { + group = framework.groups[groupIds[i]]; + if (group.options.style == 'bar') { + if (group.visible == true && (framework.options.groups.visibility[groupIds[i]] === undefined || framework.options.groups.visibility[groupIds[i]] == true)) { + for (j = 0; j < processedGroupData[groupIds[i]].length; j++) { + combinedData.push({ + x: processedGroupData[groupIds[i]][j].x, + y: processedGroupData[groupIds[i]][j].y, + groupId: groupIds[i] + }); + barPoints += 1; } } } } - else { - // delete the support nodes - this.sectors['support']['nodes'] = {}; - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - this.edges[edgeId].via = null; - } + + if (barPoints == 0) {return;} + + // sort by time and by group + combinedData.sort(function (a, b) { + if (a.x == b.x) { + return a.groupId - b.groupId; + } else { + return a.x - b.x; } - } + }); + // get intersections + Bargraph._getDataIntersections(intersections, combinedData); - this._updateCalculationNodes(); - if (!disableStart) { - this.moving = true; - this.start(); + // plot barchart + for (i = 0; i < combinedData.length; i++) { + group = framework.groups[combinedData[i].groupId]; + var minWidth = 0.1 * group.options.barChart.width; + + key = combinedData[i].x; + var heightOffset = 0; + if (intersections[key] === undefined) { + if (i+1 < combinedData.length) {coreDistance = Math.abs(combinedData[i+1].x - key);} + if (i > 0) {coreDistance = Math.min(coreDistance,Math.abs(combinedData[i-1].x - key));} + drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth); + } + else { + var nextKey = i + (intersections[key].amount - intersections[key].resolved); + var prevKey = i - (intersections[key].resolved + 1); + if (nextKey < combinedData.length) {coreDistance = Math.abs(combinedData[nextKey].x - key);} + if (prevKey > 0) {coreDistance = Math.min(coreDistance,Math.abs(combinedData[prevKey].x - key));} + drawData = Bargraph._getSafeDrawData(coreDistance, group, minWidth); + intersections[key].resolved += 1; + + if (group.options.barChart.handleOverlap == 'stack') { + heightOffset = intersections[key].accumulated; + intersections[key].accumulated += group.zeroPosition - combinedData[i].y; + } + else if (group.options.barChart.handleOverlap == 'sideBySide') { + drawData.width = drawData.width / intersections[key].amount; + drawData.offset += (intersections[key].resolved) * drawData.width - (0.5*drawData.width * (intersections[key].amount+1)); + if (group.options.barChart.align == 'left') {drawData.offset -= 0.5*drawData.width;} + else if (group.options.barChart.align == 'right') {drawData.offset += 0.5*drawData.width;} + } + } + DOMutil.drawBar(combinedData[i].x + drawData.offset, combinedData[i].y - heightOffset, drawData.width, group.zeroPosition - combinedData[i].y, group.className + ' bar', framework.svgElements, framework.svg); + // draw points + if (group.options.drawPoints.enabled == true) { + DOMutil.drawPoint(combinedData[i].x + drawData.offset, combinedData[i].y, group, framework.svgElements, framework.svg); + } } }; /** - * Bezier curves require an anchor point to calculate the smooth flow. These points are nodes. These nodes are invisible but - * are used for the force calculation. - * + * Fill the intersections object with counters of how many datapoints share the same x coordinates + * @param intersections + * @param combinedData * @private */ - Network.prototype._createBezierNodes = function() { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - var edge = this.edges[edgeId]; - if (edge.via == null) { - var nodeId = "edgeId:".concat(edge.id); - this.sectors['support']['nodes'][nodeId] = new Node( - {id:nodeId, - mass:1, - shape:'circle', - image:"", - internalMultiplier:1 - },{},{},this.constants); - edge.via = this.sectors['support']['nodes'][nodeId]; - edge.via.parentEdgeId = edge.id; - edge.positionBezierNode(); - } + Bargraph._getDataIntersections = function (intersections, combinedData) { + // get intersections + var coreDistance; + for (var i = 0; i < combinedData.length; i++) { + if (i + 1 < combinedData.length) { + coreDistance = Math.abs(combinedData[i + 1].x - combinedData[i].x); + } + if (i > 0) { + coreDistance = Math.min(coreDistance, Math.abs(combinedData[i - 1].x - combinedData[i].x)); + } + if (coreDistance == 0) { + if (intersections[combinedData[i].x] === undefined) { + intersections[combinedData[i].x] = {amount: 0, resolved: 0, accumulated: 0}; } + intersections[combinedData[i].x].amount += 1; } } }; + /** - * load the functions that load the mixins into the prototype. + * Get the width and offset for bargraphs based on the coredistance between datapoints * + * @param coreDistance + * @param group + * @param minWidth + * @returns {{width: Number, offset: Number}} * @private */ - Network.prototype._initializeMixinLoaders = function () { - for (var mixin in MixinLoader) { - if (MixinLoader.hasOwnProperty(mixin)) { - Network.prototype[mixin] = MixinLoader[mixin]; + Bargraph._getSafeDrawData = function (coreDistance, group, minWidth) { + var width, offset; + if (coreDistance < group.options.barChart.width && coreDistance > 0) { + width = coreDistance < minWidth ? minWidth : coreDistance; + + offset = 0; // recalculate offset with the new width; + if (group.options.barChart.align == 'left') { + offset -= 0.5 * coreDistance; + } + else if (group.options.barChart.align == 'right') { + offset += 0.5 * coreDistance; + } + } + else { + // default settings + width = group.options.barChart.width; + offset = 0; + if (group.options.barChart.align == 'left') { + offset -= 0.5 * group.options.barChart.width; + } + else if (group.options.barChart.align == 'right') { + offset += 0.5 * group.options.barChart.width; } } - }; - /** - * Load the XY positions of the nodes into the dataset. - */ - Network.prototype.storePosition = function() { - console.log("storePosition is depricated: use .storePositions() from now on.") - this.storePositions(); + return {width: width, offset: offset}; }; - /** - * Load the XY positions of the nodes into the dataset. - */ - Network.prototype.storePositions = function() { - var dataArray = []; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - var allowedToMoveX = !this.nodes.xFixed; - var allowedToMoveY = !this.nodes.yFixed; - if (this.nodesData._data[nodeId].x != Math.round(node.x) || this.nodesData._data[nodeId].y != Math.round(node.y)) { - dataArray.push({id:nodeId,x:Math.round(node.x),y:Math.round(node.y),allowedToMoveX:allowedToMoveX,allowedToMoveY:allowedToMoveY}); + Bargraph.getStackedBarYRange = function(barCombinedData, groupRanges, groupIds, groupLabel, orientation) { + if (barCombinedData.length > 0) { + // sort by time and by group + barCombinedData.sort(function (a, b) { + if (a.x == b.x) { + return a.groupId - b.groupId; + } else { + return a.x - b.x; } - } + }); + var intersections = {}; + + Bargraph._getDataIntersections(intersections, barCombinedData); + groupRanges[groupLabel] = Bargraph._getStackedBarYRange(intersections, barCombinedData); + groupRanges[groupLabel].yAxisOrientation = orientation; + groupIds.push(groupLabel); } - this.nodesData.update(dataArray); - }; + } - /** - * Return the positions of the nodes. - */ - Network.prototype.getPositions = function(ids) { - var dataArray = {}; - if (ids !== undefined) { - if (Array.isArray(ids) == true) { - for (var i = 0; i < ids.length; i++) { - if (this.nodes[ids[i]] !== undefined) { - var node = this.nodes[ids[i]]; - dataArray[ids[i]] = {x: Math.round(node.x), y: Math.round(node.y)}; - } - } + Bargraph._getStackedBarYRange = function (intersections, combinedData) { + var key; + var yMin = combinedData[0].y; + var yMax = combinedData[0].y; + for (var i = 0; i < combinedData.length; i++) { + key = combinedData[i].x; + if (intersections[key] === undefined) { + yMin = yMin > combinedData[i].y ? combinedData[i].y : yMin; + yMax = yMax < combinedData[i].y ? combinedData[i].y : yMax; } else { - if (this.nodes[ids] !== undefined) { - var node = this.nodes[ids]; - dataArray[ids] = {x: Math.round(node.x), y: Math.round(node.y)}; - } + intersections[key].accumulated += combinedData[i].y; } } - else { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - dataArray[nodeId] = {x: Math.round(node.x), y: Math.round(node.y)}; - } + for (var xpos in intersections) { + if (intersections.hasOwnProperty(xpos)) { + yMin = yMin > intersections[xpos].accumulated ? intersections[xpos].accumulated : yMin; + yMax = yMax < intersections[xpos].accumulated ? intersections[xpos].accumulated : yMax; } } - return dataArray; + + return {min: yMin, max: yMax}; }; + module.exports = Bargraph; +/***/ }, +/* 51 */ +/***/ function(module, exports, __webpack_require__) { /** - * Center a node in view. - * - * @param {Number} nodeId - * @param {Number} [options] + * Created by Alex on 11/11/2014. */ - Network.prototype.focusOnNode = function (nodeId, options) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (options === undefined) { - options = {}; - } - var nodePosition = {x: this.nodes[nodeId].x, y: this.nodes[nodeId].y}; - options.position = nodePosition; - options.lockedOnNode = nodeId; + var DOMutil = __webpack_require__(2); - this.moveTo(options) - } - else { - console.log("This nodeId cannot be found."); + function Points(groupId, options) { + this.groupId = groupId; + this.options = options; + } + + + Points.prototype.getYRange = function(groupData) { + var yMin = groupData[0].y; + var yMax = groupData[0].y; + for (var j = 0; j < groupData.length; j++) { + yMin = yMin > groupData[j].y ? groupData[j].y : yMin; + yMax = yMax < groupData[j].y ? groupData[j].y : yMax; } + return {min: yMin, max: yMax, yAxisOrientation: this.options.yAxisOrientation}; }; + Points.prototype.draw = function(dataset, group, framework, offset) { + Points.draw(dataset, group, framework, offset); + } + /** + * draw the data points * - * @param {Object} options | options.offset = {x:Number, y:Number} // offset from the center in DOM pixels - * | options.scale = Number // scale to move to - * | options.position = {x:Number, y:Number} // position to move to - * | options.animation = {duration:Number, easingFunction:String} || Boolean // position to move to + * @param {Array} dataset + * @param {Object} JSONcontainer + * @param {Object} svg | SVG DOM element + * @param {GraphGroup} group + * @param {Number} [offset] */ - Network.prototype.moveTo = function (options) { - if (options === undefined) { - options = {}; - return; + Points.draw = function (dataset, group, framework, offset) { + if (offset === undefined) {offset = 0;} + for (var i = 0; i < dataset.length; i++) { + DOMutil.drawPoint(dataset[i].x + offset, dataset[i].y, group, framework.svgElements, framework.svg, dataset[i].label); } - if (options.offset === undefined) {options.offset = {x: 0, y: 0}; } - if (options.offset.x === undefined) {options.offset.x = 0; } - if (options.offset.y === undefined) {options.offset.y = 0; } - if (options.scale === undefined) {options.scale = this._getScale(); } - if (options.position === undefined) {options.position = this._getTranslation();} - if (options.animation === undefined) {options.animation = {duration:0}; } - if (options.animation === false ) {options.animation = {duration:0}; } - if (options.animation === true ) {options.animation = {}; } - if (options.animation.duration === undefined) {options.animation.duration = 1000; } // default duration - if (options.animation.easingFunction === undefined) {options.animation.easingFunction = "easeInOutQuad"; } // default easing function - - this.animateView(options); }; - /** - * - * @param {Object} options | options.offset = {x:Number, y:Number} // offset from the center in DOM pixels - * | options.time = Number // animation time in milliseconds - * | options.scale = Number // scale to animate to - * | options.position = {x:Number, y:Number} // position to animate to - * | options.easingFunction = String // linear, easeInQuad, easeOutQuad, easeInOutQuad, - * // easeInCubic, easeOutCubic, easeInOutCubic, - * // easeInQuart, easeOutQuart, easeInOutQuart, - * // easeInQuint, easeOutQuint, easeInOutQuint - */ - Network.prototype.animateView = function (options) { - if (options === undefined) { - options = {}; - return; - } - // release if something focussed on the node - this.releaseNode(); - if (options.locked == true) { - this.lockedOnNodeId = options.lockedOnNode; - this.lockedOnNodeOffset = options.offset; - } - - // forcefully complete the old animation if it was still running - if (this.easingTime != 0) { - this._transitionRedraw(1); // by setting easingtime to 1, we finish the animation. - } + module.exports = Points; - this.sourceScale = this._getScale(); - this.sourceTranslation = this._getTranslation(); - this.targetScale = options.scale; +/***/ }, +/* 52 */ +/***/ function(module, exports, __webpack_require__) { - // set the scale so the viewCenter is based on the correct zoom level. This is overridden in the transitionRedraw - // but at least then we'll have the target transition - this._setScale(this.targetScale); - var viewCenter = this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); - var distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node - x: viewCenter.x - options.position.x, - y: viewCenter.y - options.position.y - }; - this.targetTranslation = { - x: this.sourceTranslation.x + distanceFromCenter.x * this.targetScale + options.offset.x, - y: this.sourceTranslation.y + distanceFromCenter.y * this.targetScale + options.offset.y - }; + var PhysicsMixin = __webpack_require__(60); + var ClusterMixin = __webpack_require__(61); + var SectorsMixin = __webpack_require__(62); + var SelectionMixin = __webpack_require__(63); + var ManipulationMixin = __webpack_require__(64); + var NavigationMixin = __webpack_require__(65); + var HierarchicalLayoutMixin = __webpack_require__(66); - // if the time is set to 0, don't do an animation - if (options.animation.duration == 0) { - if (this.lockedOnNodeId != null) { - this._classicRedraw = this._redraw; - this._redraw = this._lockedRedraw; - } - else { - this._setScale(this.targetScale); - this._setTranslation(this.targetTranslation.x, this.targetTranslation.y); - this._redraw(); + /** + * Load a mixin into the network object + * + * @param {Object} sourceVariable | this object has to contain functions. + * @private + */ + exports._loadMixin = function (sourceVariable) { + for (var mixinFunction in sourceVariable) { + if (sourceVariable.hasOwnProperty(mixinFunction)) { + this[mixinFunction] = sourceVariable[mixinFunction]; } } - else { - this.animating = true; - this.animationSpeed = 1 / (this.renderRefreshRate * options.animation.duration * 0.001) || 1 / this.renderRefreshRate; - this.animationEasingFunction = options.animation.easingFunction; - this._classicRedraw = this._redraw; - this._redraw = this._transitionRedraw; - this._redraw(); - this.start(); - } }; + /** - * used to animate smoothly by hijacking the redraw function. + * removes a mixin from the network object. + * + * @param {Object} sourceVariable | this object has to contain functions. * @private */ - Network.prototype._lockedRedraw = function () { - var nodePosition = {x: this.nodes[this.lockedOnNodeId].x, y: this.nodes[this.lockedOnNodeId].y}; - var viewCenter = this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); - var distanceFromCenter = { // offset from view, distance view has to change by these x and y to center the node - x: viewCenter.x - nodePosition.x, - y: viewCenter.y - nodePosition.y - }; - var sourceTranslation = this._getTranslation(); - var targetTranslation = { - x: sourceTranslation.x + distanceFromCenter.x * this.scale + this.lockedOnNodeOffset.x, - y: sourceTranslation.y + distanceFromCenter.y * this.scale + this.lockedOnNodeOffset.y - }; - - this._setTranslation(targetTranslation.x,targetTranslation.y); - this._classicRedraw(); - } - - Network.prototype.releaseNode = function () { - if (this.lockedOnNodeId != null) { - this._redraw = this._classicRedraw; - this.lockedOnNodeId = null; - this.lockedOnNodeOffset = null; + exports._clearMixin = function (sourceVariable) { + for (var mixinFunction in sourceVariable) { + if (sourceVariable.hasOwnProperty(mixinFunction)) { + this[mixinFunction] = undefined; + } } - } + }; + /** + * Mixin the physics system and initialize the parameters required. * - * @param easingTime * @private */ - Network.prototype._transitionRedraw = function (easingTime) { - this.easingTime = easingTime || this.easingTime + this.animationSpeed; - this.easingTime += this.animationSpeed; - - var progress = util.easingFunctions[this.animationEasingFunction](this.easingTime); - - this._setScale(this.sourceScale + (this.targetScale - this.sourceScale) * progress); - this._setTranslation( - this.sourceTranslation.x + (this.targetTranslation.x - this.sourceTranslation.x) * progress, - this.sourceTranslation.y + (this.targetTranslation.y - this.sourceTranslation.y) * progress - ); - - this._classicRedraw(); - - // cleanup - if (this.easingTime >= 1.0) { - this.animating = false; - this.easingTime = 0; - if (this.lockedOnNodeId != null) { - this._redraw = this._lockedRedraw; - } - else { - this._redraw = this._classicRedraw; - } - this.emit("animationFinished"); + exports._loadPhysicsSystem = function () { + this._loadMixin(PhysicsMixin); + this._loadSelectedForceSolver(); + if (this.constants.configurePhysics == true) { + this._loadPhysicsConfiguration(); + } + else { + this._cleanupPhysicsConfiguration(); } }; - Network.prototype._classicRedraw = function () { - // placeholder function to be overloaded by animations; - }; /** - * Returns true when the Network is active. - * @returns {boolean} + * Mixin the cluster system and initialize the parameters required. + * + * @private */ - Network.prototype.isActive = function () { - return !this.activator || this.activator.active; + exports._loadClusterSystem = function () { + this.clusterSession = 0; + this.hubThreshold = 5; + this._loadMixin(ClusterMixin); }; /** - * Sets the scale - * @returns {Number} + * Mixin the sector system and initialize the parameters required + * + * @private */ - Network.prototype.setScale = function () { - return this._setScale(); + exports._loadSectorSystem = function () { + this.sectors = {}; + this.activeSector = ["default"]; + this.sectors["active"] = {}; + this.sectors["active"]["default"] = {"nodes": {}, + "edges": {}, + "nodeIndices": [], + "formationScale": 1.0, + "drawingNode": undefined }; + this.sectors["frozen"] = {}; + this.sectors["support"] = {"nodes": {}, + "edges": {}, + "nodeIndices": [], + "formationScale": 1.0, + "drawingNode": undefined }; + + this.nodeIndices = this.sectors["active"]["default"]["nodeIndices"]; // the node indices list is used to speed up the computation of the repulsion fields + + this._loadMixin(SectorsMixin); }; /** - * Returns the scale - * @returns {Number} + * Mixin the selection system and initialize the parameters required + * + * @private */ - Network.prototype.getScale = function () { - return this._getScale(); + exports._loadSelectionSystem = function () { + this.selectionObj = {nodes: {}, edges: {}}; + + this._loadMixin(SelectionMixin); }; /** - * Returns the scale - * @returns {Number} + * Mixin the navigationUI (User Interface) system and initialize the parameters required + * + * @private */ - Network.prototype.getCenterCoordinates = function () { - return this.DOMtoCanvas({x: 0.5 * this.frame.canvas.clientWidth, y: 0.5 * this.frame.canvas.clientHeight}); - }; - + exports._loadManipulationSystem = function () { + // reset global variables -- these are used by the selection of nodes and edges. + this.blockConnectingEdgeSelection = false; + this.forceAppendSelection = false; - Network.prototype.getBoundingBox = function(nodeId) { - if (this.nodes[nodeId] !== undefined) { - return this.nodes[nodeId].boundingBox; - } - } + if (this.constants.dataManipulation.enabled == true) { + // load the manipulator HTML elements. All styling done in css. + if (this.manipulationDiv === undefined) { + this.manipulationDiv = document.createElement('div'); + this.manipulationDiv.className = 'network-manipulationDiv'; + if (this.editMode == true) { + this.manipulationDiv.style.display = "block"; + } + else { + this.manipulationDiv.style.display = "none"; + } + this.frame.appendChild(this.manipulationDiv); + } - Network.prototype.getConnectedNodes = function(nodeId) { - var nodeList = []; - if (this.nodes[nodeId] !== undefined) { - var node = this.nodes[nodeId]; - var nodeObj = {nodeId : true}; // used to quickly check if node already exists - for (var i = 0; i < node.edges.length; i++) { - var edge = node.edges[i]; - if (edge.toId == nodeId) { - if (nodeObj[edge.fromId] === undefined) { - nodeList.push(edge.fromId); - nodeObj[edge.fromId] = true; - } + if (this.editModeDiv === undefined) { + this.editModeDiv = document.createElement('div'); + this.editModeDiv.className = 'network-manipulation-editMode'; + if (this.editMode == true) { + this.editModeDiv.style.display = "none"; } - else if (edge.fromId == nodeId) { - if (nodeObj[edge.toId] === undefined) { - nodeList.push(edge.toId) - nodeObj[edge.toId] = true; - } + else { + this.editModeDiv.style.display = "block"; } + this.frame.appendChild(this.editModeDiv); + } + + if (this.closeDiv === undefined) { + this.closeDiv = document.createElement('div'); + this.closeDiv.className = 'network-manipulation-closeDiv'; + this.closeDiv.style.display = this.manipulationDiv.style.display; + this.frame.appendChild(this.closeDiv); } + + // load the manipulation functions + this._loadMixin(ManipulationMixin); + + // create the manipulator toolbar + this._createManipulatorBar(); } - return nodeList; - } + else { + if (this.manipulationDiv !== undefined) { + // removes all the bindings and overloads + this._createManipulatorBar(); + // remove the manipulation divs + this.frame.removeChild(this.manipulationDiv); + this.frame.removeChild(this.editModeDiv); + this.frame.removeChild(this.closeDiv); - Network.prototype.getEdgesFromNode = function(nodeId) { - var edgesList = []; - if (this.nodes[nodeId] !== undefined) { - var node = this.nodes[nodeId]; - for (var i = 0; i < node.edges.length; i++) { - edgesList.push(node.edges[i].id); + this.manipulationDiv = undefined; + this.editModeDiv = undefined; + this.closeDiv = undefined; + // remove the mixin functions + this._clearMixin(ManipulationMixin); } } - return edgesList; - } + }; - Network.prototype.generateColorObject = function(color) { - return util.parseColor(color); - } + /** + * Mixin the navigation (User Interface) system and initialize the parameters required + * + * @private + */ + exports._loadNavigationControls = function () { + this._loadMixin(NavigationMixin); + // the clean function removes the button divs, this is done to remove the bindings. + this._cleanNavigation(); + if (this.constants.navigation.enabled == true) { + this._loadNavigationElements(); + } + }; - module.exports = Network; + + /** + * Mixin the hierarchical layout system. + * + * @private + */ + exports._loadHierarchySystem = function () { + this._loadMixin(HierarchicalLayoutMixin); + }; /***/ }, -/* 52 */ +/* 53 */ /***/ function(module, exports, __webpack_require__) { + var keycharm = __webpack_require__(57); + var Emitter = __webpack_require__(56); + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + /** - * Parse a text source containing data in DOT language into a JSON object. - * The object contains two lists: one with nodes and one with edges. - * - * DOT language reference: http://www.graphviz.org/doc/info/lang.html - * - * @param {String} data Text containing a graph in DOT-notation - * @return {Object} graph An object containing two parameters: - * {Object[]} nodes - * {Object[]} edges + * Turn an element into an clickToUse element. + * When not active, the element has a transparent overlay. When the overlay is + * clicked, the mode is changed to active. + * When active, the element is displayed with a blue border around it, and + * the interactive contents of the element can be used. When clicked outside + * the element, the elements mode is changed to inactive. + * @param {Element} container + * @constructor */ - function parseDOT (data) { - dot = data; - return parseGraph(); - } + function Activator(container) { + this.active = false; - // token types enumeration - var TOKENTYPE = { - NULL : 0, - DELIMITER : 1, - IDENTIFIER: 2, - UNKNOWN : 3 - }; + this.dom = { + container: container + }; - // map with all delimiters - var DELIMITERS = { - '{': true, - '}': true, - '[': true, - ']': true, - ';': true, - '=': true, - ',': true, + this.dom.overlay = document.createElement('div'); + this.dom.overlay.className = 'overlay'; - '->': true, - '--': true - }; + this.dom.container.appendChild(this.dom.overlay); - var dot = ''; // current dot file - var index = 0; // current index in dot file - var c = ''; // current token character in expr - var token = ''; // current token - var tokenType = TOKENTYPE.NULL; // type of the token + this.hammer = Hammer(this.dom.overlay, {prevent_default: false}); + this.hammer.on('tap', this._onTapOverlay.bind(this)); - /** - * Get the first character from the dot file. - * The character is stored into the char c. If the end of the dot file is - * reached, the function puts an empty string in c. - */ - function first() { - index = 0; - c = dot.charAt(0); + // block all touch events (except tap) + var me = this; + var events = [ + 'touch', 'pinch', + 'doubletap', 'hold', + 'dragstart', 'drag', 'dragend', + 'mousewheel', 'DOMMouseScroll' // DOMMouseScroll is needed for Firefox + ]; + events.forEach(function (event) { + me.hammer.on(event, function (event) { + event.stopPropagation(); + }); + }); + + // attach a tap event to the window, in order to deactivate when clicking outside the timeline + this.windowHammer = Hammer(window, {prevent_default: false}); + this.windowHammer.on('tap', function (event) { + // deactivate when clicked outside the container + if (!_hasParent(event.target, container)) { + me.deactivate(); + } + }); + + if (this.keycharm !== undefined) { + this.keycharm.destroy(); + } + this.keycharm = keycharm(); + + // keycharm listener only bounded when active) + this.escListener = this.deactivate.bind(this); } + // turn into an event emitter + Emitter(Activator.prototype); + + // The currently active activator + Activator.current = null; + /** - * Get the next character from the dot file. - * The character is stored into the char c. If the end of the dot file is - * reached, the function puts an empty string in c. + * Destroy the activator. Cleans up all created DOM and event listeners */ - function next() { - index++; - c = dot.charAt(index); - } + Activator.prototype.destroy = function () { + this.deactivate(); + + // remove dom + this.dom.overlay.parentNode.removeChild(this.dom.overlay); + + // cleanup hammer instances + this.hammer = null; + this.windowHammer = null; + // FIXME: cleaning up hammer instances doesn't work (Timeline not removed from memory) + }; /** - * Preview the next character from the dot file. - * @return {String} cNext + * Activate the element + * Overlay is hidden, element is decorated with a blue shadow border */ - function nextPreview() { - return dot.charAt(index + 1); - } + Activator.prototype.activate = function () { + // we allow only one active activator at a time + if (Activator.current) { + Activator.current.deactivate(); + } + Activator.current = this; + + this.active = true; + this.dom.overlay.style.display = 'none'; + util.addClassName(this.dom.container, 'vis-active'); + + this.emit('change'); + this.emit('activate'); + + // ugly hack: bind ESC after emitting the events, as the Network rebinds all + // keyboard events on a 'change' event + this.keycharm.bind('esc', this.escListener); + }; /** - * Test whether given character is alphabetic or numeric - * @param {String} c - * @return {Boolean} isAlphaNumeric + * Deactivate the element + * Overlay is displayed on top of the element */ - var regexAlphaNumeric = /[a-zA-Z_0-9.:#]/; - function isAlphaNumeric(c) { - return regexAlphaNumeric.test(c); - } + Activator.prototype.deactivate = function () { + this.active = false; + this.dom.overlay.style.display = ''; + util.removeClassName(this.dom.container, 'vis-active'); + this.keycharm.unbind('esc', this.escListener); + + this.emit('change'); + this.emit('deactivate'); + }; /** - * Merge all properties of object b into object b - * @param {Object} a - * @param {Object} b - * @return {Object} a + * Handle a tap event: activate the container + * @param event + * @private */ - function merge (a, b) { - if (!a) { - a = {}; - } + Activator.prototype._onTapOverlay = function (event) { + // activate the container + this.activate(); + event.stopPropagation(); + }; - if (b) { - for (var name in b) { - if (b.hasOwnProperty(name)) { - a[name] = b[name]; - } + /** + * Test whether the element has the requested parent element somewhere in + * its chain of parent nodes. + * @param {HTMLElement} element + * @param {HTMLElement} parent + * @returns {boolean} Returns true when the parent is found somewhere in the + * chain of parent nodes. + * @private + */ + function _hasParent(element, parent) { + while (element) { + if (element === parent) { + return true } + element = element.parentNode; } - return a; + return false; } - /** - * Set a value in an object, where the provided parameter name can be a - * path with nested parameters. For example: - * - * var obj = {a: 2}; - * setValue(obj, 'b.c', 3); // obj = {a: 2, b: {c: 3}} - * - * @param {Object} obj - * @param {String} path A parameter name or dot-separated parameter path, - * like "color.highlight.border". - * @param {*} value - */ - function setValue(obj, path, value) { - var keys = path.split('.'); - var o = obj; - while (keys.length) { - var key = keys.shift(); - if (keys.length) { - // this isn't the end point - if (!o[key]) { - o[key] = {}; - } - o = o[key]; - } - else { - // this is the end point - o[key] = value; - } - } - } - - /** - * Add a node to a graph object. If there is already a node with - * the same id, their attributes will be merged. - * @param {Object} graph - * @param {Object} node - */ - function addNode(graph, node) { - var i, len; - var current = null; + module.exports = Activator; - // find root graph (in case of subgraph) - var graphs = [graph]; // list with all graphs from current graph to root graph - var root = graph; - while (root.parent) { - graphs.push(root.parent); - root = root.parent; - } - // find existing node (at root level) by its id - if (root.nodes) { - for (i = 0, len = root.nodes.length; i < len; i++) { - if (node.id === root.nodes[i].id) { - current = root.nodes[i]; - break; - } - } - } +/***/ }, +/* 54 */ +/***/ function(module, exports, __webpack_require__) { - if (!current) { - // this is a new node - current = { - id: node.id - }; - if (graph.node) { - // clone default attributes - current.attr = merge(current.attr, graph.node); - } - } + // English + exports['en'] = { + edit: 'Edit', + del: 'Delete selected', + back: 'Back', + addNode: 'Add Node', + addEdge: 'Add Edge', + editNode: 'Edit Node', + editEdge: 'Edit Edge', + addDescription: 'Click in an empty space to place a new node.', + edgeDescription: 'Click on a node and drag the edge to another node to connect them.', + editEdgeDescription: 'Click on the control points and drag them to a node to connect to it.', + createEdgeError: 'Cannot link edges to a cluster.', + deleteClusterError: 'Clusters cannot be deleted.' + }; + exports['en_EN'] = exports['en']; + exports['en_US'] = exports['en']; - // add node to this (sub)graph and all its parent graphs - for (i = graphs.length - 1; i >= 0; i--) { - var g = graphs[i]; + // Dutch + exports['nl'] = { + edit: 'Wijzigen', + del: 'Selectie verwijderen', + back: 'Terug', + addNode: 'Node toevoegen', + addEdge: 'Link toevoegen', + editNode: 'Node wijzigen', + editEdge: 'Link wijzigen', + addDescription: 'Klik op een leeg gebied om een nieuwe node te maken.', + edgeDescription: 'Klik op een node en sleep de link naar een andere node om ze te verbinden.', + editEdgeDescription: 'Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.', + createEdgeError: 'Kan geen link maken naar een cluster.', + deleteClusterError: 'Clusters kunnen niet worden verwijderd.' + }; + exports['nl_NL'] = exports['nl']; + exports['nl_BE'] = exports['nl']; - if (!g.nodes) { - g.nodes = []; - } - if (g.nodes.indexOf(current) == -1) { - g.nodes.push(current); - } - } - // merge attributes - if (node.attr) { - current.attr = merge(current.attr, node.attr); - } - } +/***/ }, +/* 55 */ +/***/ function(module, exports, __webpack_require__) { /** - * Add an edge to a graph object - * @param {Object} graph - * @param {Object} edge + * Canvas shapes used by Network */ - function addEdge(graph, edge) { - if (!graph.edges) { - graph.edges = []; - } - graph.edges.push(edge); - if (graph.edge) { - var attr = merge({}, graph.edge); // clone default attributes - edge.attr = merge(attr, edge.attr); // merge attributes - } - } + if (typeof CanvasRenderingContext2D !== 'undefined') { - /** - * Create an edge to a graph object - * @param {Object} graph - * @param {String | Number | Object} from - * @param {String | Number | Object} to - * @param {String} type - * @param {Object | null} attr - * @return {Object} edge - */ - function createEdge(graph, from, to, type, attr) { - var edge = { - from: from, - to: to, - type: type + /** + * Draw a circle shape + */ + CanvasRenderingContext2D.prototype.circle = function(x, y, r) { + this.beginPath(); + this.arc(x, y, r, 0, 2*Math.PI, false); }; - if (graph.edge) { - edge.attr = merge({}, graph.edge); // clone default attributes - } - edge.attr = merge(edge.attr || {}, attr); // merge attributes - - return edge; - } - - /** - * Get next token in the current dot file. - * The token and token type are available as token and tokenType - */ - function getToken() { - tokenType = TOKENTYPE.NULL; - token = ''; - - // skip over whitespaces - while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { // space, tab, enter - next(); - } + /** + * Draw a square shape + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r size, width and height of the square + */ + CanvasRenderingContext2D.prototype.square = function(x, y, r) { + this.beginPath(); + this.rect(x - r, y - r, r * 2, r * 2); + }; - do { - var isComment = false; + /** + * Draw a triangle shape + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius, half the length of the sides of the triangle + */ + CanvasRenderingContext2D.prototype.triangle = function(x, y, r) { + // http://en.wikipedia.org/wiki/Equilateral_triangle + this.beginPath(); - // skip comment - if (c == '#') { - // find the previous non-space character - var i = index - 1; - while (dot.charAt(i) == ' ' || dot.charAt(i) == '\t') { - i--; - } - if (dot.charAt(i) == '\n' || dot.charAt(i) == '') { - // the # is at the start of a line, this is indeed a line comment - while (c != '' && c != '\n') { - next(); - } - isComment = true; - } - } - if (c == '/' && nextPreview() == '/') { - // skip line comment - while (c != '' && c != '\n') { - next(); - } - isComment = true; - } - if (c == '/' && nextPreview() == '*') { - // skip block comment - while (c != '') { - if (c == '*' && nextPreview() == '/') { - // end of block comment found. skip these last two characters - next(); - next(); - break; - } - else { - next(); - } - } - isComment = true; - } + var s = r * 2; + var s2 = s / 2; + var ir = Math.sqrt(3) / 6 * s; // radius of inner circle + var h = Math.sqrt(s * s - s2 * s2); // height - // skip over whitespaces - while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { // space, tab, enter - next(); - } - } - while (isComment); + this.moveTo(x, y - (h - ir)); + this.lineTo(x + s2, y + ir); + this.lineTo(x - s2, y + ir); + this.lineTo(x, y - (h - ir)); + this.closePath(); + }; - // check for end of dot file - if (c == '') { - // token is still empty - tokenType = TOKENTYPE.DELIMITER; - return; - } + /** + * Draw a triangle shape in downward orientation + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius + */ + CanvasRenderingContext2D.prototype.triangleDown = function(x, y, r) { + // http://en.wikipedia.org/wiki/Equilateral_triangle + this.beginPath(); - // check for delimiters consisting of 2 characters - var c2 = c + nextPreview(); - if (DELIMITERS[c2]) { - tokenType = TOKENTYPE.DELIMITER; - token = c2; - next(); - next(); - return; - } + var s = r * 2; + var s2 = s / 2; + var ir = Math.sqrt(3) / 6 * s; // radius of inner circle + var h = Math.sqrt(s * s - s2 * s2); // height - // check for delimiters consisting of 1 character - if (DELIMITERS[c]) { - tokenType = TOKENTYPE.DELIMITER; - token = c; - next(); - return; - } + this.moveTo(x, y + (h - ir)); + this.lineTo(x + s2, y - ir); + this.lineTo(x - s2, y - ir); + this.lineTo(x, y + (h - ir)); + this.closePath(); + }; - // check for an identifier (number or string) - // TODO: more precise parsing of numbers/strings (and the port separator ':') - if (isAlphaNumeric(c) || c == '-') { - token += c; - next(); + /** + * Draw a star shape, a star with 5 points + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius, half the length of the sides of the triangle + */ + CanvasRenderingContext2D.prototype.star = function(x, y, r) { + // http://www.html5canvastutorials.com/labs/html5-canvas-star-spinner/ + this.beginPath(); - while (isAlphaNumeric(c)) { - token += c; - next(); - } - if (token == 'false') { - token = false; // convert to boolean - } - else if (token == 'true') { - token = true; // convert to boolean - } - else if (!isNaN(Number(token))) { - token = Number(token); // convert to number + for (var n = 0; n < 10; n++) { + var radius = (n % 2 === 0) ? r * 1.3 : r * 0.5; + this.lineTo( + x + radius * Math.sin(n * 2 * Math.PI / 10), + y - radius * Math.cos(n * 2 * Math.PI / 10) + ); } - tokenType = TOKENTYPE.IDENTIFIER; - return; - } - // check for a string enclosed by double quotes - if (c == '"') { - next(); - while (c != '' && (c != '"' || (c == '"' && nextPreview() == '"'))) { - token += c; - if (c == '"') { // skip the escape character - next(); - } - next(); - } - if (c != '"') { - throw newSyntaxError('End of string " expected'); - } - next(); - tokenType = TOKENTYPE.IDENTIFIER; - return; - } + this.closePath(); + }; - // something unknown is found, wrong characters, a syntax error - tokenType = TOKENTYPE.UNKNOWN; - while (c != '') { - token += c; - next(); - } - throw new SyntaxError('Syntax error in part "' + chop(token, 30) + '"'); - } + /** + * http://stackoverflow.com/questions/1255512/how-to-draw-a-rounded-rectangle-on-html-canvas + */ + CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) { + var r2d = Math.PI/180; + if( w - ( 2 * r ) < 0 ) { r = ( w / 2 ); } //ensure that the radius isn't too large for x + if( h - ( 2 * r ) < 0 ) { r = ( h / 2 ); } //ensure that the radius isn't too large for y + this.beginPath(); + this.moveTo(x+r,y); + this.lineTo(x+w-r,y); + this.arc(x+w-r,y+r,r,r2d*270,r2d*360,false); + this.lineTo(x+w,y+h-r); + this.arc(x+w-r,y+h-r,r,0,r2d*90,false); + this.lineTo(x+r,y+h); + this.arc(x+r,y+h-r,r,r2d*90,r2d*180,false); + this.lineTo(x,y+r); + this.arc(x+r,y+r,r,r2d*180,r2d*270,false); + }; - /** - * Parse a graph. - * @returns {Object} graph - */ - function parseGraph() { - var graph = {}; + /** + * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + */ + CanvasRenderingContext2D.prototype.ellipse = function(x, y, w, h) { + var kappa = .5522848, + ox = (w / 2) * kappa, // control point offset horizontal + oy = (h / 2) * kappa, // control point offset vertical + xe = x + w, // x-end + ye = y + h, // y-end + xm = x + w / 2, // x-middle + ym = y + h / 2; // y-middle - first(); - getToken(); + this.beginPath(); + this.moveTo(x, ym); + this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + }; - // optional strict keyword - if (token == 'strict') { - graph.strict = true; - getToken(); - } - // graph or digraph keyword - if (token == 'graph' || token == 'digraph') { - graph.type = token; - getToken(); - } - // optional graph id - if (tokenType == TOKENTYPE.IDENTIFIER) { - graph.id = token; - getToken(); - } + /** + * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + */ + CanvasRenderingContext2D.prototype.database = function(x, y, w, h) { + var f = 1/3; + var wEllipse = w; + var hEllipse = h * f; - // open angle bracket - if (token != '{') { - throw newSyntaxError('Angle bracket { expected'); - } - getToken(); + var kappa = .5522848, + ox = (wEllipse / 2) * kappa, // control point offset horizontal + oy = (hEllipse / 2) * kappa, // control point offset vertical + xe = x + wEllipse, // x-end + ye = y + hEllipse, // y-end + xm = x + wEllipse / 2, // x-middle + ym = y + hEllipse / 2, // y-middle + ymb = y + (h - hEllipse/2), // y-midlle, bottom ellipse + yeb = y + h; // y-end, bottom ellipse - // statements - parseStatements(graph); + this.beginPath(); + this.moveTo(xe, ym); - // close angle bracket - if (token != '}') { - throw newSyntaxError('Angle bracket } expected'); - } - getToken(); + this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - // end of file - if (token !== '') { - throw newSyntaxError('End of file expected'); - } - getToken(); + this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - // remove temporary default properties - delete graph.node; - delete graph.edge; - delete graph.graph; + this.lineTo(xe, ymb); - return graph; - } + this.bezierCurveTo(xe, ymb + oy, xm + ox, yeb, xm, yeb); + this.bezierCurveTo(xm - ox, yeb, x, ymb + oy, x, ymb); - /** - * Parse a list with statements. - * @param {Object} graph - */ - function parseStatements (graph) { - while (token !== '' && token != '}') { - parseStatement(graph); - if (token == ';') { - getToken(); - } - } - } + this.lineTo(x, ym); + }; - /** - * Parse a single statement. Can be a an attribute statement, node - * statement, a series of node statements and edge statements, or a - * parameter. - * @param {Object} graph - */ - function parseStatement(graph) { - // parse subgraph - var subgraph = parseSubgraph(graph); - if (subgraph) { - // edge statements - parseEdge(graph, subgraph); - return; - } + /** + * Draw an arrow point (no line) + */ + CanvasRenderingContext2D.prototype.arrow = function(x, y, angle, length) { + // tail + var xt = x - length * Math.cos(angle); + var yt = y - length * Math.sin(angle); - // parse an attribute statement - var attr = parseAttributeStatement(graph); - if (attr) { - return; - } + // inner tail + // TODO: allow to customize different shapes + var xi = x - length * 0.9 * Math.cos(angle); + var yi = y - length * 0.9 * Math.sin(angle); - // parse node - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Identifier expected'); - } - var id = token; // id can be a string or a number - getToken(); + // left + var xl = xt + length / 3 * Math.cos(angle + 0.5 * Math.PI); + var yl = yt + length / 3 * Math.sin(angle + 0.5 * Math.PI); - if (token == '=') { - // id statement - getToken(); - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Identifier expected'); - } - graph[id] = token; - getToken(); - // TODO: implement comma separated list with "a_list: ID=ID [','] [a_list] " - } - else { - parseNodeStatement(graph, id); - } - } - - /** - * Parse a subgraph - * @param {Object} graph parent graph object - * @return {Object | null} subgraph - */ - function parseSubgraph (graph) { - var subgraph = null; - - // optional subgraph keyword - if (token == 'subgraph') { - subgraph = {}; - subgraph.type = 'subgraph'; - getToken(); - - // optional graph id - if (tokenType == TOKENTYPE.IDENTIFIER) { - subgraph.id = token; - getToken(); - } - } + // right + var xr = xt + length / 3 * Math.cos(angle - 0.5 * Math.PI); + var yr = yt + length / 3 * Math.sin(angle - 0.5 * Math.PI); - // open angle bracket - if (token == '{') { - getToken(); + this.beginPath(); + this.moveTo(x, y); + this.lineTo(xl, yl); + this.lineTo(xi, yi); + this.lineTo(xr, yr); + this.closePath(); + }; - if (!subgraph) { - subgraph = {}; + /** + * Sets up the dashedLine functionality for drawing + * Original code came from http://stackoverflow.com/questions/4576724/dotted-stroke-in-canvas + * @author David Jordan + * @date 2012-08-08 + */ + CanvasRenderingContext2D.prototype.dashedLine = function(x,y,x2,y2,dashArray){ + if (!dashArray) dashArray=[10,5]; + if (dashLength==0) dashLength = 0.001; // Hack for Safari + var dashCount = dashArray.length; + this.moveTo(x, y); + var dx = (x2-x), dy = (y2-y); + var slope = dy/dx; + var distRemaining = Math.sqrt( dx*dx + dy*dy ); + var dashIndex=0, draw=true; + while (distRemaining>=0.1){ + var dashLength = dashArray[dashIndex++%dashCount]; + if (dashLength > distRemaining) dashLength = distRemaining; + var xStep = Math.sqrt( dashLength*dashLength / (1 + slope*slope) ); + if (dx<0) xStep = -xStep; + x += xStep; + y += slope*xStep; + this[draw ? 'lineTo' : 'moveTo'](x,y); + distRemaining -= dashLength; + draw = !draw; } - subgraph.parent = graph; - subgraph.node = graph.node; - subgraph.edge = graph.edge; - subgraph.graph = graph.graph; + }; - // statements - parseStatements(subgraph); + // TODO: add diamond shape + } - // close angle bracket - if (token != '}') { - throw newSyntaxError('Angle bracket } expected'); - } - getToken(); - // remove temporary default properties - delete subgraph.node; - delete subgraph.edge; - delete subgraph.graph; - delete subgraph.parent; +/***/ }, +/* 56 */ +/***/ function(module, exports, __webpack_require__) { - // register at the parent graph - if (!graph.subgraphs) { - graph.subgraphs = []; - } - graph.subgraphs.push(subgraph); - } + + /** + * Expose `Emitter`. + */ - return subgraph; - } + module.exports = Emitter; /** - * parse an attribute statement like "node [shape=circle fontSize=16]". - * Available keywords are 'node', 'edge', 'graph'. - * The previous list with default attributes will be replaced - * @param {Object} graph - * @returns {String | null} keyword Returns the name of the parsed attribute - * (node, edge, graph), or null if nothing - * is parsed. + * Initialize a new `Emitter`. + * + * @api public */ - function parseAttributeStatement (graph) { - // attribute statements - if (token == 'node') { - getToken(); - // node attributes - graph.node = parseAttributeList(); - return 'node'; - } - else if (token == 'edge') { - getToken(); + function Emitter(obj) { + if (obj) return mixin(obj); + }; - // edge attributes - graph.edge = parseAttributeList(); - return 'edge'; - } - else if (token == 'graph') { - getToken(); + /** + * Mixin the emitter properties. + * + * @param {Object} obj + * @return {Object} + * @api private + */ - // graph attributes - graph.graph = parseAttributeList(); - return 'graph'; + function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; } - - return null; + return obj; } /** - * parse a node statement - * @param {Object} graph - * @param {String | Number} id + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public */ - function parseNodeStatement(graph, id) { - // node statement - var node = { - id: id - }; - var attr = parseAttributeList(); - if (attr) { - node.attr = attr; - } - addNode(graph, node); - // edge statements - parseEdge(graph, id); - } + Emitter.prototype.on = + Emitter.prototype.addEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + (this._callbacks[event] = this._callbacks[event] || []) + .push(fn); + return this; + }; /** - * Parse an edge or a series of edges - * @param {Object} graph - * @param {String | Number} from Id of the from node + * Adds an `event` listener that will be invoked a single + * time then automatically removed. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public */ - function parseEdge(graph, from) { - while (token == '->' || token == '--') { - var to; - var type = token; - getToken(); - - var subgraph = parseSubgraph(graph); - if (subgraph) { - to = subgraph; - } - else { - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Identifier or subgraph expected'); - } - to = token; - addNode(graph, { - id: to - }); - getToken(); - } - - // parse edge attributes - var attr = parseAttributeList(); - // create edge - var edge = createEdge(graph, from, to, type, attr); - addEdge(graph, edge); + Emitter.prototype.once = function(event, fn){ + var self = this; + this._callbacks = this._callbacks || {}; - from = to; + function on() { + self.off(event, on); + fn.apply(this, arguments); } - } + + on.fn = fn; + this.on(event, on); + return this; + }; /** - * Parse a set with attributes, - * for example [label="1.000", shape=solid] - * @return {Object | null} attr + * Remove the given callback for `event` or all + * registered callbacks. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public */ - function parseAttributeList() { - var attr = null; - while (token == '[') { - getToken(); - attr = {}; - while (token !== '' && token != ']') { - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Attribute name expected'); - } - var name = token; + Emitter.prototype.off = + Emitter.prototype.removeListener = + Emitter.prototype.removeAllListeners = + Emitter.prototype.removeEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; - getToken(); - if (token != '=') { - throw newSyntaxError('Equal sign = expected'); - } - getToken(); + // all + if (0 == arguments.length) { + this._callbacks = {}; + return this; + } - if (tokenType != TOKENTYPE.IDENTIFIER) { - throw newSyntaxError('Attribute value expected'); - } - var value = token; - setValue(attr, name, value); // name can be a path + // specific event + var callbacks = this._callbacks[event]; + if (!callbacks) return this; - getToken(); - if (token ==',') { - getToken(); - } - } + // remove all handlers + if (1 == arguments.length) { + delete this._callbacks[event]; + return this; + } - if (token != ']') { - throw newSyntaxError('Bracket ] expected'); + // remove specific handler + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; } - getToken(); } - - return attr; - } + return this; + }; /** - * Create a syntax error with extra information on current token and index. - * @param {String} message - * @returns {SyntaxError} err + * Emit `event` with the given args. + * + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} */ - function newSyntaxError(message) { - return new SyntaxError(message + ', got "' + chop(token, 30) + '" (char ' + index + ')'); - } - /** - * Chop off text after a maximum length - * @param {String} text - * @param {Number} maxLength - * @returns {String} - */ - function chop (text, maxLength) { - return (text.length <= maxLength) ? text : (text.substr(0, 27) + '...'); - } + Emitter.prototype.emit = function(event){ + this._callbacks = this._callbacks || {}; + var args = [].slice.call(arguments, 1) + , callbacks = this._callbacks[event]; - /** - * Execute a function fn for each pair of elements in two arrays - * @param {Array | *} array1 - * @param {Array | *} array2 - * @param {function} fn - */ - function forEach2(array1, array2, fn) { - if (Array.isArray(array1)) { - array1.forEach(function (elem1) { - if (Array.isArray(array2)) { - array2.forEach(function (elem2) { - fn(elem1, elem2); - }); - } - else { - fn(elem1, array2); - } - }); - } - else { - if (Array.isArray(array2)) { - array2.forEach(function (elem2) { - fn(array1, elem2); - }); - } - else { - fn(array1, array2); + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); } } - } + + return this; + }; /** - * Convert a string containing a graph in DOT language into a map containing - * with nodes and edges in the format of graph. - * @param {String} data Text containing a graph in DOT-notation - * @return {Object} graphData + * Return array of callbacks for `event`. + * + * @param {String} event + * @return {Array} + * @api public */ - function DOTToGraph (data) { - // parse the DOT file - var dotData = parseDOT(data); - var graphData = { - nodes: [], - edges: [], - options: {} - }; - - // copy the nodes - if (dotData.nodes) { - dotData.nodes.forEach(function (dotNode) { - var graphNode = { - id: dotNode.id, - label: String(dotNode.label || dotNode.id) - }; - merge(graphNode, dotNode.attr); - if (graphNode.image) { - graphNode.shape = 'image'; - } - graphData.nodes.push(graphNode); - }); - } - // copy the edges - if (dotData.edges) { - /** - * Convert an edge in DOT format to an edge with VisGraph format - * @param {Object} dotEdge - * @returns {Object} graphEdge - */ - var convertEdge = function (dotEdge) { - var graphEdge = { - from: dotEdge.from, - to: dotEdge.to - }; - merge(graphEdge, dotEdge.attr); - graphEdge.style = (dotEdge.type == '->') ? 'arrow' : 'line'; - return graphEdge; - } + Emitter.prototype.listeners = function(event){ + this._callbacks = this._callbacks || {}; + return this._callbacks[event] || []; + }; - dotData.edges.forEach(function (dotEdge) { - var from, to; - if (dotEdge.from instanceof Object) { - from = dotEdge.from.nodes; - } - else { - from = { - id: dotEdge.from - } - } + /** + * Check if this emitter has `event` handlers. + * + * @param {String} event + * @return {Boolean} + * @api public + */ - if (dotEdge.to instanceof Object) { - to = dotEdge.to.nodes; - } - else { - to = { - id: dotEdge.to - } - } + Emitter.prototype.hasListeners = function(event){ + return !! this.listeners(event).length; + }; - if (dotEdge.from instanceof Object && dotEdge.from.edges) { - dotEdge.from.edges.forEach(function (subEdge) { - var graphEdge = convertEdge(subEdge); - graphData.edges.push(graphEdge); - }); - } - forEach2(from, to, function (from, to) { - var subEdge = createEdge(graphData, from.id, to.id, dotEdge.type, dotEdge.attr); - var graphEdge = convertEdge(subEdge); - graphData.edges.push(graphEdge); - }); +/***/ }, +/* 57 */ +/***/ function(module, exports, __webpack_require__) { - if (dotEdge.to instanceof Object && dotEdge.to.edges) { - dotEdge.to.edges.forEach(function (subEdge) { - var graphEdge = convertEdge(subEdge); - graphData.edges.push(graphEdge); - }); - } - }); - } + var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; + /** + * Created by Alex on 11/6/2014. + */ - // copy the options - if (dotData.attr) { - graphData.options = dotData.attr; + // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 + // if the module has no dependencies, the above pattern can be simplified to + (function (root, factory) { + if (true) { + // AMD. Register as an anonymous module. + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(); + } else { + // Browser globals (root is window) + root.keycharm = factory(); } + }(this, function () { - return graphData; - } + function keycharm(options) { + var preventDefault = options && options.preventDefault || false; - // exports - exports.parseDOT = parseDOT; - exports.DOTToGraph = DOTToGraph; + var container = options && options.container || window; + var _exportFunctions = {}; + var _bound = {keydown:{}, keyup:{}}; + var _keys = {}; + var i; -/***/ }, -/* 53 */ -/***/ function(module, exports, __webpack_require__) { + // a - z + for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} + // A - Z + for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} + // 0 - 9 + for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} + // F1 - F12 + for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} + // num0 - num9 + for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} - - function parseGephi(gephiJSON, options) { - var edges = []; - var nodes = []; - this.options = { - edges: { - inheritColor: true - }, - nodes: { - allowedToMove: false, - parseColor: false - } - }; - - if (options !== undefined) { - this.options.nodes['allowedToMove'] = options.allowedToMove | false; - this.options.nodes['parseColor'] = options.parseColor | false; - this.options.edges['inheritColor'] = options.inheritColor | true; - } - - var gEdges = gephiJSON.edges; - var gNodes = gephiJSON.nodes; - for (var i = 0; i < gEdges.length; i++) { - var edge = {}; - var gEdge = gEdges[i]; - edge['id'] = gEdge.id; - edge['from'] = gEdge.source; - edge['to'] = gEdge.target; - edge['attributes'] = gEdge.attributes; - // edge['value'] = gEdge.attributes !== undefined ? gEdge.attributes.Weight : undefined; - // edge['width'] = edge['value'] !== undefined ? undefined : edgegEdge.size; - edge['color'] = gEdge.color; - edge['inheritColor'] = edge['color'] !== undefined ? false : this.options.inheritColor; - edges.push(edge); - } - - for (var i = 0; i < gNodes.length; i++) { - var node = {}; - var gNode = gNodes[i]; - node['id'] = gNode.id; - node['attributes'] = gNode.attributes; - node['x'] = gNode.x; - node['y'] = gNode.y; - node['label'] = gNode.label; - if (this.options.nodes.parseColor == true) { - node['color'] = gNode.color; - } - else { - node['color'] = gNode.color !== undefined ? {background:gNode.color, border:gNode.color} : undefined; - } - node['radius'] = gNode.size; - node['allowedToMoveX'] = this.options.nodes.allowedToMove; - node['allowedToMoveY'] = this.options.nodes.allowedToMove; - nodes.push(node); - } - - return {nodes:nodes, edges:edges}; - } - - exports.parseGephi = parseGephi; - -/***/ }, -/* 54 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - - /** - * @class Groups - * This class can store groups and properties specific for groups. - */ - function Groups() { - this.clear(); - this.defaultIndex = 0; - this.groupsArray = []; - this.groupIndex = 0; - this.useDefaultGroups = true; - } - - - /** - * default constants for group colors - */ - Groups.DEFAULT = [ - {border: "#2B7CE9", background: "#97C2FC", highlight: {border: "#2B7CE9", background: "#D2E5FF"}, hover: {border: "#2B7CE9", background: "#D2E5FF"}}, // 0: blue - {border: "#FFA500", background: "#FFFF00", highlight: {border: "#FFA500", background: "#FFFFA3"}, hover: {border: "#FFA500", background: "#FFFFA3"}}, // 1: yellow - {border: "#FA0A10", background: "#FB7E81", highlight: {border: "#FA0A10", background: "#FFAFB1"}, hover: {border: "#FA0A10", background: "#FFAFB1"}}, // 2: red - {border: "#41A906", background: "#7BE141", highlight: {border: "#41A906", background: "#A1EC76"}, hover: {border: "#41A906", background: "#A1EC76"}}, // 3: green - {border: "#E129F0", background: "#EB7DF4", highlight: {border: "#E129F0", background: "#F0B3F5"}, hover: {border: "#E129F0", background: "#F0B3F5"}}, // 4: magenta - {border: "#7C29F0", background: "#AD85E4", highlight: {border: "#7C29F0", background: "#D3BDF0"}, hover: {border: "#7C29F0", background: "#D3BDF0"}}, // 5: purple - {border: "#C37F00", background: "#FFA807", highlight: {border: "#C37F00", background: "#FFCA66"}, hover: {border: "#C37F00", background: "#FFCA66"}}, // 6: orange - {border: "#4220FB", background: "#6E6EFD", highlight: {border: "#4220FB", background: "#9B9BFD"}, hover: {border: "#4220FB", background: "#9B9BFD"}}, // 7: darkblue - {border: "#FD5A77", background: "#FFC0CB", highlight: {border: "#FD5A77", background: "#FFD1D9"}, hover: {border: "#FD5A77", background: "#FFD1D9"}}, // 8: pink - {border: "#4AD63A", background: "#C2FABC", highlight: {border: "#4AD63A", background: "#E6FFE3"}, hover: {border: "#4AD63A", background: "#E6FFE3"}}, // 9: mint + // numpad misc + _keys['num*'] = {code:106, shift: false}; + _keys['num+'] = {code:107, shift: false}; + _keys['num-'] = {code:109, shift: false}; + _keys['num/'] = {code:111, shift: false}; + _keys['num.'] = {code:110, shift: false}; + // arrows + _keys['left'] = {code:37, shift: false}; + _keys['up'] = {code:38, shift: false}; + _keys['right'] = {code:39, shift: false}; + _keys['down'] = {code:40, shift: false}; + // extra keys + _keys['space'] = {code:32, shift: false}; + _keys['enter'] = {code:13, shift: false}; + _keys['shift'] = {code:16, shift: undefined}; + _keys['esc'] = {code:27, shift: false}; + _keys['backspace'] = {code:8, shift: false}; + _keys['tab'] = {code:9, shift: false}; + _keys['ctrl'] = {code:17, shift: false}; + _keys['alt'] = {code:18, shift: false}; + _keys['delete'] = {code:46, shift: false}; + _keys['pageup'] = {code:33, shift: false}; + _keys['pagedown'] = {code:34, shift: false}; + // symbols + _keys['='] = {code:187, shift: false}; + _keys['-'] = {code:189, shift: false}; + _keys[']'] = {code:221, shift: false}; + _keys['['] = {code:219, shift: false}; - {border: "#990000", background: "#EE0000", highlight: {border: "#BB0000", background: "#FF3333"}, hover: {border: "#BB0000", background: "#FF3333"}}, // 10:bright red - {border: "#FF6000", background: "#FF6000", highlight: {border: "#FF6000", background: "#FF6000"}, hover: {border: "#FF6000", background: "#FF6000"}}, // 12: real orange - {border: "#97C2FC", background: "#2B7CE9", highlight: {border: "#D2E5FF", background: "#2B7CE9"}, hover: {border: "#D2E5FF", background: "#2B7CE9"}}, // 13: blue - {border: "#399605", background: "#255C03", highlight: {border: "#399605", background: "#255C03"}, hover: {border: "#399605", background: "#255C03"}}, // 14: green - {border: "#B70054", background: "#FF007E", highlight: {border: "#B70054", background: "#FF007E"}, hover: {border: "#B70054", background: "#FF007E"}}, // 15: magenta - {border: "#AD85E4", background: "#7C29F0", highlight: {border: "#D3BDF0", background: "#7C29F0"}, hover: {border: "#D3BDF0", background: "#7C29F0"}}, // 16: purple - {border: "#4557FA", background: "#000EA1", highlight: {border: "#6E6EFD", background: "#000EA1"}, hover: {border: "#6E6EFD", background: "#000EA1"}}, // 17: darkblue - {border: "#FFC0CB", background: "#FD5A77", highlight: {border: "#FFD1D9", background: "#FD5A77"}, hover: {border: "#FFD1D9", background: "#FD5A77"}}, // 18: pink - {border: "#C2FABC", background: "#74D66A", highlight: {border: "#E6FFE3", background: "#74D66A"}, hover: {border: "#E6FFE3", background: "#74D66A"}}, // 19: mint - {border: "#EE0000", background: "#990000", highlight: {border: "#FF3333", background: "#BB0000"}, hover: {border: "#FF3333", background: "#BB0000"}}, // 20:bright red - ]; + var down = function(event) {handleEvent(event,'keydown');}; + var up = function(event) {handleEvent(event,'keyup');}; + // handle the actualy bound key with the event + var handleEvent = function(event,type) { + if (_bound[type][event.keyCode] !== undefined) { + var bound = _bound[type][event.keyCode]; + for (var i = 0; i < bound.length; i++) { + if (bound[i].shift === undefined) { + bound[i].fn(event); + } + else if (bound[i].shift == true && event.shiftKey == true) { + bound[i].fn(event); + } + else if (bound[i].shift == false && event.shiftKey == false) { + bound[i].fn(event); + } + } - /** - * Clear all groups - */ - Groups.prototype.clear = function () { - this.groups = {}; - this.groups.length = function() - { - var i = 0; - for ( var p in this ) { - if (this.hasOwnProperty(p)) { - i++; + if (preventDefault == true) { + event.preventDefault(); + } } - } - return i; - } - }; - - - /** - * get group properties of a groupname. If groupname is not found, a new group - * is added. - * @param {*} groupname Can be a number, string, Date, etc. - * @return {Object} group The created group, containing all group properties - */ - Groups.prototype.get = function (groupname) { - var group = this.groups[groupname]; - if (group == undefined) { - if (this.useDefaultGroups === false && this.groupsArray.length > 0) { - // create new group - var index = this.groupIndex % this.groupsArray.length; - this.groupIndex++; - group = {}; - group.color = this.groups[this.groupsArray[index]]; - this.groups[groupname] = group; - } - else { - // create new group - var index = this.defaultIndex % Groups.DEFAULT.length; - this.defaultIndex++; - group = {}; - group.color = Groups.DEFAULT[index]; - this.groups[groupname] = group; - } - } - - return group; - }; - - /** - * Add a custom group style - * @param {String} groupName - * @param {Object} style An object containing borderColor, - * backgroundColor, etc. - * @return {Object} group The created group object - */ - Groups.prototype.add = function (groupName, style) { - this.groups[groupName] = style; - this.groupsArray.push(groupName); - return style; - }; - - module.exports = Groups; - - -/***/ }, -/* 55 */ -/***/ function(module, exports, __webpack_require__) { + }; - /** - * @class Images - * This class loads images and keeps them stored. - */ - function Images() { - this.images = {}; - this.imageBroken = {}; - this.callback = undefined; - } + // bind a key to a callback + _exportFunctions.bind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (_bound[type][_keys[key].code] === undefined) { + _bound[type][_keys[key].code] = []; + } + _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); + }; - /** - * Set an onload callback function. This will be called each time an image - * is loaded - * @param {function} callback - */ - Images.prototype.setOnloadCallback = function(callback) { - this.callback = callback; - }; - /** - * - * @param {string} url Url of the image - * @param {string} url Url of an image to use if the url image is not found - * @return {Image} img The image object - */ - Images.prototype.load = function(url, brokenUrl) { - var img = this.images[url]; // make a pointer - if (img === undefined) { - // create the image - var me = this; - img = new Image(); - img.onload = function () { - // IE11 fix -- thanks dponch! - if (this.width == 0) { - document.body.appendChild(this); - this.width = this.offsetWidth; - this.height = this.offsetHeight; - document.body.removeChild(this); + // bind all keys to a call back (demo purposes) + _exportFunctions.bindAll = function(callback, type) { + if (type === undefined) { + type = 'keydown'; } - - if (me.callback) { - me.images[url] = img; - me.callback(this); + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + _exportFunctions.bind(key,callback,type); + } } }; - img.onerror = function () { - if (brokenUrl === undefined) { - console.error("Could not load image:", url); - delete this.src; - if (me.callback) { - me.callback(this); + // get the key label from an event + _exportFunctions.getKey = function(event) { + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { + return key; + } + else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { + return key; + } + else if (event.keyCode == _keys[key].code && key == 'shift') { + return key; + } } } - else { - if (me.imageBroken[url] === true) { - if (this.src == brokenUrl) { - console.error("Could not load brokenImage:", brokenUrl); - delete this.src; - if (me.callback) { - me.callback(this); + return "unknown key, currently not supported"; + }; + + // unbind either a specific callback from a key or all of them (by leaving callback undefined) + _exportFunctions.unbind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (callback !== undefined) { + var newBindings = []; + var bound = _bound[type][_keys[key].code]; + if (bound !== undefined) { + for (var i = 0; i < bound.length; i++) { + if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { + newBindings.push(_bound[type][_keys[key].code][i]); } } - else { - console.error("Could not load image:", url); - this.src = brokenUrl; - } - } - else { - console.error("Could not load image:", url); - this.src = brokenUrl; - me.imageBroken[url] = true; } + _bound[type][_keys[key].code] = newBindings; + } + else { + _bound[type][_keys[key].code] = []; } }; - img.src = url; + // reset all bound variables. + _exportFunctions.reset = function() { + _bound = {keydown:{}, keyup:{}}; + }; + + // unbind all listeners and reset all variables. + _exportFunctions.destroy = function() { + _bound = {keydown:{}, keyup:{}}; + container.removeEventListener('keydown', down, true); + container.removeEventListener('keyup', up, true); + }; + + // create listeners. + container.addEventListener('keydown',down,true); + container.addEventListener('keyup',up,true); + + // return the public functions. + return _exportFunctions; } - return img; - }; + return keycharm; + })); + - module.exports = Images; /***/ }, -/* 56 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(1); - - /** - * @class Node - * A node. A node can be connected to other nodes via one or multiple edges. - * @param {object} properties An object containing properties for the node. All - * properties are optional, except for the id. - * {number} id Id of the node. Required - * {string} label Text label for the node - * {number} x Horizontal position of the node - * {number} y Vertical position of the node - * {string} shape Node shape, available: - * "database", "circle", "ellipse", - * "box", "image", "text", "dot", - * "star", "triangle", "triangleDown", - * "square", "icon" - * {string} image An image url - * {string} title An title text, can be HTML - * {anytype} group A group name or number - * @param {Network.Images} imagelist A list with images. Only needed - * when the node has an image - * @param {Network.Groups} grouplist A list with groups. Needed for - * retrieving group properties - * @param {Object} constants An object with default values for - * example for the color - * - */ - function Node(properties, imagelist, grouplist, networkConstants) { - var constants = util.selectiveBridgeObject(['nodes'],networkConstants); - this.options = constants.nodes; + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js + //! version : 2.9.0 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com - this.selected = false; - this.hover = false; + (function (undefined) { + /************************************ + Constants + ************************************/ - this.edges = []; // all edges connected to this node - this.dynamicEdges = []; - this.reroutedEdges = {}; + var moment, + VERSION = '2.9.0', + // the global-scope this is NOT the global object in Node.js + globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, + oldGlobalMoment, + round = Math.round, + hasOwnProperty = Object.prototype.hasOwnProperty, + i, - // set defaults for the properties - this.id = undefined; - this.allowedToMoveX = false; - this.allowedToMoveY = false; - this.xFixed = false; - this.yFixed = false; - this.horizontalAlignLeft = true; // these are for the navigation controls - this.verticalAlignTop = true; // these are for the navigation controls - this.baseRadiusValue = networkConstants.nodes.radius; - this.radiusFixed = false; - this.level = -1; - this.preassignedLevel = false; - this.hierarchyEnumerated = false; - this.labelDimensions = {top:0, left:0, width:0, height:0, yLine:0}; // could be cached - this.boundingBox = {top:0, left:0, right:0, bottom:0}; + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, - this.imagelist = imagelist; - this.grouplist = grouplist; + // internal storage for locale config files + locales = {}, - // physics properties - this.fx = 0.0; // external force x - this.fy = 0.0; // external force y - this.vx = 0.0; // velocity x - this.vy = 0.0; // velocity y - this.x = null; - this.y = null; - this.predefinedPosition = false; // used to check if initial zoomExtent should just take the range or approximate + // extra moment internal properties (plugins register props here) + momentProperties = [], - // used for reverting to previous position on stabilization - this.previousState = {vx:0,vy:0,x:0,y:0}; + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module && module.exports), - this.damping = networkConstants.physics.damping; // written every time gravity is calculated - this.fixedData = {x:null,y:null}; + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - this.setProperties(properties, constants); + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, - // creating the variables for clustering - this.resetCluster(); - this.clusterSession = 0; - this.clusterSizeWidthFactor = networkConstants.clustering.nodeScaling.width; - this.clusterSizeHeightFactor = networkConstants.clustering.nodeScaling.height; - this.clusterSizeRadiusFactor = networkConstants.clustering.nodeScaling.radius; - this.maxNodeSizeIncrements = networkConstants.clustering.maxNodeSizeIncrements; - this.growthIndicator = 0; + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, - // variables to tell the node about the network. - this.networkScaleInv = 1; - this.networkScale = 1; - this.canvasTopLeft = {"x": -300, "y": -300}; - this.canvasBottomRight = {"x": 300, "y": 300}; - this.parentEdgeId = null; - } + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - /** - * Revert the position and velocity of the previous step. - */ - Node.prototype.revertPosition = function() { - this.x = this.previousState.x; - this.y = this.previousState.y; - this.vx = this.previousState.vx; - this.vy = this.previousState.vy; - } + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - /** - * (re)setting the clustering variables and objects - */ - Node.prototype.resetCluster = function() { - // clustering variables - this.formationScale = undefined; // this is used to determine when to open the cluster - this.clusterSize = 1; // this signifies the total amount of nodes in this cluster - this.containedNodes = {}; - this.containedEdges = {}; - this.clusterSessions = []; - }; + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], - /** - * Attach a edge to the node - * @param {Edge} edge - */ - Node.prototype.attachEdge = function(edge) { - if (this.edges.indexOf(edge) == -1) { - this.edges.push(edge); - } - if (this.dynamicEdges.indexOf(edge) == -1) { - this.dynamicEdges.push(edge); - } - }; + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], - /** - * Detach a edge from the node - * @param {Edge} edge - */ - Node.prototype.detachEdge = function(edge) { - var index = this.edges.indexOf(edge); - if (index != -1) { - this.edges.splice(index, 1); - } - index = this.dynamicEdges.indexOf(edge); - if (index != -1) { - this.dynamicEdges.splice(index, 1); - } - }; + // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 + }, - /** - * Set or overwrite properties for the node - * @param {Object} properties an object with properties - * @param {Object} constants and object with default, global properties - */ - Node.prototype.setProperties = function(properties, constants) { - if (!properties) { - return; - } + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + Q : 'quarter', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' + }, - var fields = ['borderWidth','borderWidthSelected','shape','image','brokenImage','radius','fontColor', - 'fontSize','fontFace','fontFill','fontStrokeWidth','fontStrokeColor','group','mass','fontDrawThreshold', - 'scaleFontWithValue','fontSizeMaxVisible','customScalingFunction','iconFontFace', 'icon', 'iconColor', 'iconSize' - ]; - util.selectiveDeepExtend(fields, this.options, properties); + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' + }, - // basic properties - if (properties.id !== undefined) {this.id = properties.id;} - if (properties.label !== undefined) {this.label = properties.label; this.originalLabel = properties.label;} - if (properties.title !== undefined) {this.title = properties.title;} - if (properties.x !== undefined) {this.x = properties.x; this.predefinedPosition = true;} - if (properties.y !== undefined) {this.y = properties.y; this.predefinedPosition = true;} - if (properties.value !== undefined) {this.value = properties.value;} - if (properties.level !== undefined) {this.level = properties.level; this.preassignedLevel = true;} + // format function strings + formatFunctions = {}, - // navigation controls properties - if (properties.horizontalAlignLeft !== undefined) {this.horizontalAlignLeft = properties.horizontalAlignLeft;} - if (properties.verticalAlignTop !== undefined) {this.verticalAlignTop = properties.verticalAlignTop;} - if (properties.triggerFunction !== undefined) {this.triggerFunction = properties.triggerFunction;} + // default relative time thresholds + relativeTimeThresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }, - if (this.id === undefined) { - throw "Node must have an id"; - } + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), - // copy group properties - if (typeof properties.group === 'number' || (typeof properties.group === 'string' && properties.group != '')) { - var groupObj = this.grouplist.get(properties.group); - util.deepExtend(this.options, groupObj); - // the color object needs to be completely defined. Since groups can partially overwrite the colors, we parse it again, just in case. - this.options.color = util.parseColor(this.options.color); - } - // individual shape properties - if (properties.radius !== undefined) {this.baseRadiusValue = this.options.radius;} - if (properties.color !== undefined) {this.options.color = util.parseColor(properties.color);} + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.localeData().monthsShort(this, format); + }, + MMMM : function (format) { + return this.localeData().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.localeData().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.localeData().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.localeData().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); + }, + z : function () { + return this.zoneAbbr(); + }, + zz : function () { + return this.zoneName(); + }, + x : function () { + return this.valueOf(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); + } + }, - if (this.options.image !== undefined && this.options.image!= "") { - if (this.imagelist) { - this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage); - } - else { - throw "No imagelist provided"; - } - } + deprecations = {}, - if (properties.allowedToMoveX !== undefined) { - this.xFixed = !properties.allowedToMoveX; - this.allowedToMoveX = properties.allowedToMoveX; - } - else if (properties.x !== undefined && this.allowedToMoveX == false) { - this.xFixed = true; - } + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], + updateInProgress = false; - if (properties.allowedToMoveY !== undefined) { - this.yFixed = !properties.allowedToMoveY; - this.allowedToMoveY = properties.allowedToMoveY; - } - else if (properties.y !== undefined && this.allowedToMoveY == false) { - this.yFixed = true; - } + // Pick the first defined of two or three arguments. dfl comes from + // default. + function dfl(a, b, c) { + switch (arguments.length) { + case 2: return a != null ? a : b; + case 3: return a != null ? a : b != null ? b : c; + default: throw new Error('Implement me'); + } + } - this.radiusFixed = this.radiusFixed || (properties.radius !== undefined); + function hasOwnProp(a, b) { + return hasOwnProperty.call(a, b); + } - if (this.options.shape === 'image' || this.options.shape === 'circularImage') { - this.options.radiusMin = constants.nodes.widthMin; - this.options.radiusMax = constants.nodes.widthMax; - } + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; + } - // choose draw method depending on the shape - switch (this.options.shape) { - case 'database': this.draw = this._drawDatabase; this.resize = this._resizeDatabase; break; - case 'box': this.draw = this._drawBox; this.resize = this._resizeBox; break; - case 'circle': this.draw = this._drawCircle; this.resize = this._resizeCircle; break; - case 'ellipse': this.draw = this._drawEllipse; this.resize = this._resizeEllipse; break; - // TODO: add diamond shape - case 'image': this.draw = this._drawImage; this.resize = this._resizeImage; break; - case 'circularImage': this.draw = this._drawCircularImage; this.resize = this._resizeCircularImage; break; - case 'text': this.draw = this._drawText; this.resize = this._resizeText; break; - case 'dot': this.draw = this._drawDot; this.resize = this._resizeShape; break; - case 'square': this.draw = this._drawSquare; this.resize = this._resizeShape; break; - case 'triangle': this.draw = this._drawTriangle; this.resize = this._resizeShape; break; - case 'triangleDown': this.draw = this._drawTriangleDown; this.resize = this._resizeShape; break; - case 'star': this.draw = this._drawStar; this.resize = this._resizeShape; break; - case 'icon': this.draw = this._drawIcon; this.resize = this._resizeIcon; break; - default: this.draw = this._drawEllipse; this.resize = this._resizeEllipse; break; - } - // reset the size of the node, this can be changed - this._reset(); + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } - }; + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + printMsg(msg); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } - /** - * select this node - */ - Node.prototype.select = function() { - this.selected = true; - this._reset(); - }; + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; + } + } - /** - * unselect this node - */ - Node.prototype.unselect = function() { - this.selected = false; - this._reset(); - }; + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.localeData().ordinal(func.call(this, a), period); + }; + } + function monthDiff(a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; - /** - * Reset the calculated size of the node, forces it to recalculate its size - */ - Node.prototype.clearSizeCache = function() { - this._reset(); - }; + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } - /** - * Reset the calculated size of the node, forces it to recalculate its size - * @private - */ - Node.prototype._reset = function() { - this.width = undefined; - this.height = undefined; - }; + return -(wholeMonthDiff + adjust); + } - /** - * get the title of this node. - * @return {string} title The title of the node, or undefined when no title - * has been set. - */ - Node.prototype.getTitle = function() { - return typeof this.title === "function" ? this.title() : this.title; - }; + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - /** - * Calculate the distance to the border of the Node - * @param {CanvasRenderingContext2D} ctx - * @param {Number} angle Angle in radians - * @returns {number} distance Distance to the border in pixels - */ - Node.prototype.distanceToBorder = function (ctx, angle) { - var borderWidth = 1; - if (!this.width) { - this.resize(ctx); - } + function meridiemFixWrap(locale, hour, meridiem) { + var isPm; - switch (this.options.shape) { - case 'circle': - case 'dot': - return this.options.radius+ borderWidth; + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // thie is not supposed to happen + return hour; + } + } - case 'ellipse': - var a = this.width / 2; - var b = this.height / 2; - var w = (Math.sin(angle) * a); - var h = (Math.cos(angle) * b); - return a * b / Math.sqrt(w * w + h * h); + /************************************ + Constructors + ************************************/ - // TODO: implement distanceToBorder for database - // TODO: implement distanceToBorder for triangle - // TODO: implement distanceToBorder for triangleDown + function Locale() { + } - case 'box': - case 'image': - case 'text': - default: - if (this.width) { - return Math.min( - Math.abs(this.width / 2 / Math.cos(angle)), - Math.abs(this.height / 2 / Math.sin(angle))) + borderWidth; - // TODO: reckon with border radius too in case of box - } - else { - return 0; - } - - } - // TODO: implement calculation of distance to border for all shapes - }; + // Moment prototype object + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); + } + copyConfig(this, config); + this._d = new Date(+config._d); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + moment.updateOffset(this); + updateInProgress = false; + } + } - /** - * Set forces acting on the node - * @param {number} fx Force in horizontal direction - * @param {number} fy Force in vertical direction - */ - Node.prototype._setForce = function(fx, fy) { - this.fx = fx; - this.fy = fy; - }; + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; - /** - * Add forces acting on the node - * @param {number} fx Force in horizontal direction - * @param {number} fy Force in vertical direction - * @private - */ - Node.prototype._addForce = function(fx, fy) { - this.fx += fx; - this.fy += fy; - }; + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; - /** - * Store the state before the next step - */ - Node.prototype.storeState = function() { - this.previousState.x = this.x; - this.previousState.y = this.y; - this.previousState.vx = this.vx; - this.previousState.vy = this.vy; - } + this._data = {}; - /** - * Perform one discrete step for the node - * @param {number} interval Time interval in seconds - */ - Node.prototype.discreteStep = function(interval) { - this.storeState(); - if (!this.xFixed) { - var dx = this.damping * this.vx; // damping force - var ax = (this.fx - dx) / this.options.mass; // acceleration - this.vx += ax * interval; // velocity - this.x += this.vx * interval; // position - } - else { - this.fx = 0; - this.vx = 0; - } + this._locale = moment.localeData(); - if (!this.yFixed) { - var dy = this.damping * this.vy; // damping force - var ay = (this.fy - dy) / this.options.mass; // acceleration - this.vy += ay * interval; // velocity - this.y += this.vy * interval; // position - } - else { - this.fy = 0; - this.vy = 0; - } - }; + this._bubble(); + } + /************************************ + Helpers + ************************************/ - /** - * Perform one discrete step for the node - * @param {number} interval Time interval in seconds - * @param {number} maxVelocity The speed limit imposed on the velocity - */ - Node.prototype.discreteStepLimited = function(interval, maxVelocity) { - this.storeState(); - if (!this.xFixed) { - var dx = this.damping * this.vx; // damping force - var ax = (this.fx - dx) / this.options.mass; // acceleration - this.vx += ax * interval; // velocity - this.vx = (Math.abs(this.vx) > maxVelocity) ? ((this.vx > 0) ? maxVelocity : -maxVelocity) : this.vx; - this.x += this.vx * interval; // position - } - else { - this.fx = 0; - this.vx = 0; - } + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } - if (!this.yFixed) { - var dy = this.damping * this.vy; // damping force - var ay = (this.fy - dy) / this.options.mass; // acceleration - this.vy += ay * interval; // velocity - this.vy = (Math.abs(this.vy) > maxVelocity) ? ((this.vy > 0) ? maxVelocity : -maxVelocity) : this.vy; - this.y += this.vy * interval; // position - } - else { - this.fy = 0; - this.vy = 0; - } - }; + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } - /** - * Check if this node has a fixed x and y position - * @return {boolean} true if fixed, false if not - */ - Node.prototype.isFixed = function() { - return (this.xFixed && this.yFixed); - }; + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } - /** - * Check if this node is moving - * @param {number} vmin the minimum velocity considered as "moving" - * @return {boolean} true if moving, false if it has no velocity - */ - Node.prototype.isMoving = function(vmin) { - var velocity = Math.sqrt(Math.pow(this.vx,2) + Math.pow(this.vy,2)); - // this.velocity = Math.sqrt(Math.pow(this.vx,2) + Math.pow(this.vy,2)) - return (velocity > vmin); - }; + return a; + } - /** - * check if this node is selecte - * @return {boolean} selected True if node is selected, else false - */ - Node.prototype.isSelected = function() { - return this.selected; - }; + function copyConfig(to, from) { + var i, prop, val; - /** - * Retrieve the value of the node. Can be undefined - * @return {Number} value - */ - Node.prototype.getValue = function() { - return this.value; - }; + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } - /** - * Calculate the distance from the nodes location to the given location (x,y) - * @param {Number} x - * @param {Number} y - * @return {Number} value - */ - Node.prototype.getDistance = function(x, y) { - var dx = this.x - x, - dy = this.y - y; - return Math.sqrt(dx * dx + dy * dy); - }; + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } + } + } + return to; + } - /** - * Adjust the value range of the node. The node will adjust it's radius - * based on its value. - * @param {Number} min - * @param {Number} max - */ - Node.prototype.setValueRange = function(min, max, total) { - if (!this.radiusFixed && this.value !== undefined) { - var scale = this.options.customScalingFunction(min, max, total, this.value); - var radiusDiff = this.options.radiusMax - this.options.radiusMin; - if (this.options.scaleFontWithValue == true) { - var fontDiff = this.options.fontSizeMax - this.options.fontSizeMin; - this.options.fontSize = this.options.fontSizeMin + scale * fontDiff; + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } } - this.options.radius = this.options.radiusMin + scale * radiusDiff; - } - this.baseRadiusValue = this.options.radius; - }; + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; - /** - * Draw this node in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - */ - Node.prototype.draw = function(ctx) { - throw "Draw method not initialized for node"; - }; + while (output.length < targetLength) { + output = '0' + output; + } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } - /** - * Recalculate the size of this node in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - */ - Node.prototype.resize = function(ctx) { - throw "Resize method not initialized for node"; - }; + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; - /** - * Check if this object is overlapping with the provided object - * @param {Object} obj an object with parameters left, top, right, bottom - * @return {boolean} True if location is located on node - */ - Node.prototype.isOverlappingWith = function(obj) { - return (this.left < obj.right && - this.left + this.width > obj.left && - this.top < obj.bottom && - this.top + this.height > obj.top); - }; + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } - Node.prototype._resizeImage = function (ctx) { - // TODO: pre calculate the image size + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - if (!this.width || !this.height) { // undefined or 0 - var width, height; - if (this.value) { - this.options.radius= this.baseRadiusValue; - var scale = this.imageObj.height / this.imageObj.width; - if (scale !== undefined) { - width = this.options.radius|| this.imageObj.width; - height = this.options.radius* scale || this.imageObj.height; - } - else { - width = 0; - height = 0; - } - } - else { - width = this.imageObj.width; - height = this.imageObj.height; + return res; } - this.width = width; - this.height = height; - this.growthIndicator = 0; - if (this.width > 0 && this.height > 0) { - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - width; + function momentsDifference(base, other) { + var res; + other = makeAs(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; } - } - }; - Node.prototype._drawImageAtPosition = function (ctx) { - if (this.imageObj.width != 0 ) { - // draw the shade - if (this.clusterSize > 1) { - var lineWidth = ((this.clusterSize > 1) ? 10 : 0.0); - lineWidth *= this.networkScaleInv; - lineWidth = Math.min(0.2 * this.width,lineWidth); + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } - ctx.globalAlpha = 0.5; - ctx.drawImage(this.imageObj, this.left - lineWidth, this.top - lineWidth, this.width + 2*lineWidth, this.height + 2*lineWidth); + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); + return this; + }; } - // draw the image - ctx.globalAlpha = 1.0; - ctx.drawImage(this.imageObj, this.left, this.top, this.width, this.height); - } - }; + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; - Node.prototype._drawImageLabel = function (ctx) { - var yLabel; - var offset = 0; - - if (this.height){ - offset = this.height / 2; - var labelDimensions = this.getTextSize(ctx); - - if (labelDimensions.lineCount >= 1){ - offset += labelDimensions.height / 2; - offset += 3; + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); + } + if (months) { + rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + moment.updateOffset(mom, days || months); + } } - } - - yLabel = this.y + offset; - this._label(ctx, this.label, this.x, yLabel, undefined); - }; + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } - Node.prototype._drawImage = function (ctx) { - this._resizeImage(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } - this._drawImageAtPosition(ctx); + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } - this._drawImageLabel(ctx); - this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); - this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); - this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); - }; + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; - Node.prototype._resizeCircularImage = function (ctx) { - if(!this.imageObj.src || !this.imageObj.width || !this.imageObj.height){ - if (!this.width) { - var diameter = this.options.radius * 2; - this.width = diameter; - this.height = diameter; + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } - // scaling used for clustering - //this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; - //this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; - this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; - this.growthIndicator = this.options.radius- 0.5*diameter; - this._swapToImageResizeWhenImageLoaded = true; - } - } - else { - if (this._swapToImageResizeWhenImageLoaded) { - this.width = 0; - this.height = 0; - delete this._swapToImageResizeWhenImageLoaded; + return normalizedInput; } - this._resizeImage(ctx); - } - - }; - - Node.prototype._drawCircularImage = function (ctx) { - this._resizeCircularImage(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; - - var centerX = this.left + (this.width / 2); - var centerY = this.top + (this.height / 2); - var radius = Math.abs(this.height / 2); + function makeList(field) { + var count, setter; - this._drawRawCircle(ctx, centerX, centerY, radius); + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; + } - ctx.save(); - ctx.circle(this.x, this.y, radius); - ctx.stroke(); - ctx.clip(); - - this._drawImageAtPosition(ctx); - - ctx.restore(); + moment[field] = function (format, index) { + var i, getter, + method = moment._locale[field], + results = []; - this.boundingBox.top = this.y - this.options.radius; - this.boundingBox.left = this.x - this.options.radius; - this.boundingBox.right = this.x + this.options.radius; - this.boundingBox.bottom = this.y + this.options.radius; + if (typeof format === 'number') { + index = format; + format = undefined; + } - this._drawImageLabel(ctx); - - this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); - this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); - this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); - }; + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment._locale, m, format || ''); + }; - Node.prototype._resizeBox = function (ctx) { - if (!this.width) { - var margin = 5; - var textSize = this.getTextSize(ctx); - this.width = textSize.width + 2 * margin; - this.height = textSize.height + 2 * margin; + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } + }; + } - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; - this.growthIndicator = this.width - (textSize.width + 2 * margin); - // this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - } - }; + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } + } - Node.prototype._drawBox = function (ctx) { - this._resizeBox(ctx); + return value; + } - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; + } - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - ctx.roundRect(this.left-2*ctx.lineWidth, this.top-2*ctx.lineWidth, this.width+4*ctx.lineWidth, this.height+4*ctx.lineWidth, this.options.radius); - ctx.stroke(); - } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 24 || + (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || + m._a[SECOND] !== 0 || + m._a[MILLISECOND] !== 0)) ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } - ctx.roundRect(this.left, this.top, this.width, this.height, this.options.radius); - ctx.fill(); - ctx.stroke(); + m._pf.overflow = overflow; + } + } - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; - this._label(ctx, this.label, this.x, this.y); - }; + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0 && + m._pf.bigHour === undefined; + } + } + return m._isValid; + } + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } - Node.prototype._resizeDatabase = function (ctx) { - if (!this.width) { - var margin = 5; - var textSize = this.getTextSize(ctx); - var size = textSize.width + 2 * margin; - this.width = size; - this.height = size; + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - size; - } - }; + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } - Node.prototype._drawDatabase = function (ctx) { - this._resizeDatabase(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } + } + return locales[name]; + } - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + // Return a moment from input, that is local/utc/utcOffset equivalent to + // model. + function makeAs(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (moment.isMoment(input) || isDate(input) ? + +input : +moment(input)) - (+res); + // Use low-level api, because this fn is low-level api. + res._d.setTime(+res._d + diff); + moment.updateOffset(res, false); + return res; + } else { + return moment(input).local(); + } + } - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; + /************************************ + Locale + ************************************/ - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); - ctx.database(this.x - this.width/2 - 2*ctx.lineWidth, this.y - this.height*0.5 - 2*ctx.lineWidth, this.width + 4*ctx.lineWidth, this.height + 4*ctx.lineWidth); - ctx.stroke(); - } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + extend(Locale.prototype, { - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - ctx.database(this.x - this.width/2, this.y - this.height*0.5, this.width, this.height); - ctx.fill(); - ctx.stroke(); + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); + }, - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; + _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + months : function (m) { + return this._months[m.month()]; + }, - this._label(ctx, this.label, this.x, this.y); - }; + _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, + monthsParse : function (monthName, format, strict) { + var i, mom, regex; - Node.prototype._resizeCircle = function (ctx) { - if (!this.width) { - var margin = 5; - var textSize = this.getTextSize(ctx); - var diameter = Math.max(textSize.width, textSize.height) + 2 * margin; - this.options.radius = diameter / 2; + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } - this.width = diameter; - this.height = diameter; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = moment.utc([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + }, - // scaling used for clustering - // this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeWidthFactor; - // this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeHeightFactor; - this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; - this.growthIndicator = this.options.radius- 0.5*diameter; - } - }; + _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, - Node.prototype._drawRawCircle = function (ctx, x, y, radius) { - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; + _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, - ctx.circle(x, y, radius+2*ctx.lineWidth); - ctx.stroke(); - } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + weekdaysParse : function (weekdayName) { + var i, mom, regex; - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - ctx.circle(this.x, this.y, radius); - ctx.fill(); - ctx.stroke(); - }; + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } - Node.prototype._drawCircle = function (ctx) { - this._resizeCircle(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + }, - this._drawRawCircle(ctx, this.x, this.y, this.options.radius); + _longDateFormat : { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; + } + return output; + }, - this.boundingBox.top = this.y - this.options.radius; - this.boundingBox.left = this.x - this.options.radius; - this.boundingBox.right = this.x + this.options.radius; - this.boundingBox.bottom = this.y + this.options.radius; + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, - this._label(ctx, this.label, this.x, this.y); - }; + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, - Node.prototype._resizeEllipse = function (ctx) { - if (!this.width) { - var textSize = this.getTextSize(ctx); - this.width = textSize.width * 1.5; - this.height = textSize.height * 2; - if (this.width < this.height) { - this.width = this.height; - } - var defaultSize = this.width; + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom, now) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom, [now]) : output; + }, - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - defaultSize; - } - }; + _relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, - Node.prototype._drawEllipse = function (ctx) { - this._resizeEllipse(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; + ordinal : function (number) { + return this._ordinal.replace('%d', number); + }, + _ordinal : '%d', + _ordinalParse : /\d{1,2}/, - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + preparse : function (string) { + return string; + }, - ctx.ellipse(this.left-2*ctx.lineWidth, this.top-2*ctx.lineWidth, this.width+4*ctx.lineWidth, this.height+4*ctx.lineWidth); - ctx.stroke(); - } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + postformat : function (string) { + return string; + }, - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, - ctx.ellipse(this.left, this.top, this.width, this.height); - ctx.fill(); - ctx.stroke(); + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; + firstDayOfWeek : function () { + return this._week.dow; + }, - this._label(ctx, this.label, this.x, this.y); - }; + firstDayOfYear : function () { + return this._week.doy; + }, - Node.prototype._drawDot = function (ctx) { - this._drawShape(ctx, 'circle'); - }; - - Node.prototype._drawTriangle = function (ctx) { - this._drawShape(ctx, 'triangle'); - }; + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; + } + }); - Node.prototype._drawTriangleDown = function (ctx) { - this._drawShape(ctx, 'triangleDown'); - }; + /************************************ + Formatting + ************************************/ - Node.prototype._drawSquare = function (ctx) { - this._drawShape(ctx, 'square'); - }; - Node.prototype._drawStar = function (ctx) { - this._drawShape(ctx, 'star'); - }; + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } - Node.prototype._resizeShape = function (ctx) { - if (!this.width) { - this.options.radius= this.baseRadiusValue; - var size = 2 * this.options.radius; - this.width = size; - this.height = size; + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * 0.5 * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - size; - } - }; + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } - Node.prototype._drawShape = function (ctx, shape) { - this._resizeShape(ctx); + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } - var clusterLineWidth = 2.5; - var borderWidth = this.options.borderWidth; - var selectionLineWidth = this.options.borderWidthSelected || 2 * this.options.borderWidth; - var radiusMultiplier = 2; + format = expandFormat(format, m.localeData()); - // choose draw method depending on the shape - switch (shape) { - case 'dot': radiusMultiplier = 2; break; - case 'square': radiusMultiplier = 2; break; - case 'triangle': radiusMultiplier = 3; break; - case 'triangleDown': radiusMultiplier = 3; break; - case 'star': radiusMultiplier = 4; break; - } + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } - ctx.strokeStyle = this.selected ? this.options.color.highlight.border : this.hover ? this.options.color.hover.border : this.options.color.border; - // draw the outer border - if (this.clusterSize > 1) { - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + return formatFunctions[format](m); + } - ctx[shape](this.x, this.y, this.options.radius+ radiusMultiplier * ctx.lineWidth); - ctx.stroke(); - } - ctx.lineWidth = (this.selected ? selectionLineWidth : borderWidth) + ((this.clusterSize > 1) ? clusterLineWidth : 0.0); - ctx.lineWidth *= this.networkScaleInv; - ctx.lineWidth = Math.min(this.width,ctx.lineWidth); + function expandFormat(format, locale) { + var i = 5; - ctx.fillStyle = this.selected ? this.options.color.highlight.background : this.hover ? this.options.color.hover.background : this.options.color.background; - ctx[shape](this.x, this.y, this.options.radius); - ctx.fill(); - ctx.stroke(); + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } - this.boundingBox.top = this.y - this.options.radius; - this.boundingBox.left = this.x - this.options.radius; - this.boundingBox.right = this.x + this.options.radius; - this.boundingBox.bottom = this.y + this.options.radius; + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } - if (this.label) { - this._label(ctx, this.label, this.x, this.y + this.height / 2, undefined, 'hanging',true); - this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); - this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); - this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); - } - }; + return format; + } - Node.prototype._resizeText = function (ctx) { - if (!this.width) { - var margin = 5; - var textSize = this.getTextSize(ctx); - this.width = textSize.width + 2 * margin; - this.height = textSize.height + 2 * margin; - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius+= Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - (textSize.width + 2 * margin); - } - }; + /************************************ + Parsing + ************************************/ - Node.prototype._drawText = function (ctx) { - this._resizeText(ctx); - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; - this._label(ctx, this.label, this.x, this.y); + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'Q': + return parseTokenOneDigit; + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { + return parseTokenOneDigit; + } + /* falls through */ + case 'SS': + if (strict) { + return parseTokenTwoDigits; + } + /* falls through */ + case 'SSS': + if (strict) { + return parseTokenThreeDigits; + } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return config._locale._meridiemParse; + case 'x': + return parseTokenOffsetMs; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + case 'Do': + return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); + return a; + } + } - this.boundingBox.top = this.top; - this.boundingBox.left = this.left; - this.boundingBox.right = this.left + this.width; - this.boundingBox.bottom = this.top + this.height; - }; + function utcOffsetFromString(string) { + string = string || ''; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); - Node.prototype._resizeIcon = function (ctx) { - if (!this.width) { - var margin = 5; - var iconSize = - { - width: Number(this.options.iconSize), - height: Number(this.options.iconSize) - }; - this.width = iconSize.width + 2 * margin; - this.height = iconSize.height + 2 * margin; + return parts[0] === '+' ? minutes : -minutes; + } - // scaling used for clustering - this.width += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeWidthFactor; - this.height += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeHeightFactor; - this.options.radius += Math.min(this.clusterSize - 1, this.maxNodeSizeIncrements) * this.clusterSizeRadiusFactor; - this.growthIndicator = this.width - (iconSize.width + 2 * margin); - } - }; + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; - Node.prototype._drawIcon = function (ctx) { - this._resizeIcon(ctx); + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + case 'Do' : + if (input != null) { + datePartArray[DATE] = toInt(parseInt( + input.match(/\d{1,2}/)[0], 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); + } - this.options.iconSize = this.options.iconSize || 50; + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = moment.parseTwoDigitYear(input); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._meridiem = input; + // config._isPm = config._locale.isPM(input); + break; + // HOUR + case 'h' : // fall through to hh + case 'hh' : + config._pf.bigHour = true; + /* falls through */ + case 'H' : // fall through to HH + case 'HH' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX OFFSET (MILLISECONDS) + case 'x': + config._d = new Date(toInt(input)); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = utcOffsetFromString(input); + break; + // WEEKDAY - human + case 'dd': + case 'ddd': + case 'dddd': + a = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (a != null) { + config._w = config._w || {}; + config._w['d'] = a; + } else { + config._pf.invalidWeekday = input; + } + break; + // WEEK, WEEK DAY - numeric + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gggg': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = toInt(input); + } + break; + case 'gg': + case 'GG': + config._w = config._w || {}; + config._w[token] = moment.parseTwoDigitYear(input); + } + } - this.left = this.x - this.width / 2; - this.top = this.y - this.height / 2; - this._icon(ctx); + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - this.boundingBox.top = this.y - this.options.iconSize/2; - this.boundingBox.left = this.x - this.options.iconSize/2; - this.boundingBox.right = this.x + this.options.iconSize/2; - this.boundingBox.bottom = this.y + this.options.iconSize/2; + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); + week = dfl(w.W, 1); + weekday = dfl(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; - if (this.label) { - var iconTextSpacing = 5; - this._label(ctx, this.label, this.x, this.y + this.height / 2 + iconTextSpacing, 'top', true); + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); - this.boundingBox.left = Math.min(this.boundingBox.left, this.labelDimensions.left); - this.boundingBox.right = Math.max(this.boundingBox.right, this.labelDimensions.left + this.labelDimensions.width); - this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelDimensions.height); - } - }; + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; + } + } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - Node.prototype._icon = function (ctx) { - var relativeIconSize = Number(this.options.iconSize) * this.networkScale; - - if (this.options.icon && relativeIconSize > this.options.fontDrawThreshold - 1) { + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } - var iconSize = Number(this.options.iconSize); + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; - ctx.font = (this.selected ? "bold " : "") + iconSize + "px " + this.options.iconFontFace; + if (config._d) { + return; + } - // draw icon - ctx.fillStyle = this.options.iconColor || "black"; - ctx.textAlign = "center"; - ctx.textBaseline = "middle"; - ctx.fillText(this.options.icon, this.x, this.y); - } - }; - - Node.prototype._label = function (ctx, text, x, y, align, baseline, labelUnderNode) { - var relativeFontSize = Number(this.options.fontSize) * this.networkScale; - if (text && relativeFontSize >= this.options.fontDrawThreshold - 1) { - var fontSize = Number(this.options.fontSize); + currentDate = currentDateArray(config); - // this ensures that there will not be HUGE letters on screen by setting an upper limit on the visible text size (regardless of zoomLevel) - if (relativeFontSize >= this.options.fontSizeMaxVisible) { - fontSize = Number(this.options.fontSizeMaxVisible) * this.networkScaleInv; - } + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } - // fade in when relative scale is between threshold and threshold - 1 - var fontColor = this.options.fontColor || "#000000"; - var strokecolor = this.options.fontStrokeColor; - if (relativeFontSize <= this.options.fontDrawThreshold) { - var opacity = Math.max(0,Math.min(1,1 - (this.options.fontDrawThreshold - relativeFontSize))); - fontColor = util.overrideOpacity(fontColor, opacity); - strokecolor = util.overrideOpacity(strokecolor, opacity); + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - } + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; + } - ctx.font = (this.selected ? "bold " : "") + fontSize + "px " + this.options.fontFace; + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } - var lines = text.split('\n'); - var lineCount = lines.length; - var yLine = y + (1 - lineCount) / 2 * fontSize; - if (labelUnderNode == true) { - yLine = y + (1 - lineCount) / (2 * fontSize); - } + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } - // font fill from edges now for nodes! - var width = ctx.measureText(lines[0]).width; - for (var i = 1; i < lineCount; i++) { - var lineWidth = ctx.measureText(lines[i]).width; - width = lineWidth > width ? lineWidth : width; - } - var height = fontSize * lineCount; - var left = x - width / 2; - var top = y - height / 2; - if (baseline == "hanging") { - top += 0.5 * fontSize; - top += 4; // distance from node, required because we use hanging. Hanging has less difference between browsers - yLine += 4; // distance from node - } - this.labelDimensions = {top:top,left:left,width:width,height:height,yLine:yLine}; + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } - // create the fontfill background - if (this.options.fontFill !== undefined && this.options.fontFill !== null && this.options.fontFill !== "none") { - ctx.fillStyle = this.options.fontFill; - ctx.fillRect(left, top, width, height); - } + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } - // draw text - ctx.fillStyle = fontColor; - ctx.textAlign = align || "center"; - ctx.textBaseline = baseline || "middle"; - if (this.options.fontStrokeWidth > 0){ - ctx.lineWidth = this.options.fontStrokeWidth; - ctx.strokeStyle = strokecolor; - ctx.lineJoin = 'round'; - } - for (var i = 0; i < lineCount; i++) { - if(this.options.fontStrokeWidth){ - ctx.strokeText(lines[i], x, yLine); - } - ctx.fillText(lines[i], x, yLine); - yLine += fontSize; + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } } - } - }; + function dateFromObject(config) { + var normalizedInput; - Node.prototype.getTextSize = function(ctx) { - if (this.label !== undefined) { - var fontSize = Number(this.options.fontSize); - if (fontSize * this.networkScale > this.options.fontSizeMaxVisible) { - fontSize = Number(this.options.fontSizeMaxVisible) * this.networkScaleInv; - } - ctx.font = (this.selected ? "bold " : "") + fontSize + "px " + this.options.fontFace; + if (config._d) { + return; + } - var lines = this.label.split('\n'), - height = (fontSize + 4) * lines.length, - width = 0; + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day || normalizedInput.date, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; - for (var i = 0, iMax = lines.length; i < iMax; i++) { - width = Math.max(width, ctx.measureText(lines[i]).width); + dateFromConfig(config); } - return {"width": width, "height": height, lineCount: lines.length}; - } - else { - return {"width": 0, "height": 0, lineCount: 0}; - } - }; + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + } - /** - * this is used to determine if a node is visible at all. this is used to determine when it needs to be drawn. - * there is a safety margin of 0.3 * width; - * - * @returns {boolean} - */ - Node.prototype.inArea = function() { - if (this.width !== undefined) { - return (this.x + this.width *this.networkScaleInv >= this.canvasTopLeft.x && - this.x - this.width *this.networkScaleInv < this.canvasBottomRight.x && - this.y + this.height*this.networkScaleInv >= this.canvasTopLeft.y && - this.y - this.height*this.networkScaleInv < this.canvasBottomRight.y); - } - else { - return true; - } - }; + // date from string and format string + function makeDateFromStringAndFormat(config) { + if (config._f === moment.ISO_8601) { + parseISO(config); + return; + } - /** - * checks if the core of the node is in the display area, this is used for opening clusters around zoom - * @returns {boolean} - */ - Node.prototype.inView = function() { - return (this.x >= this.canvasTopLeft.x && - this.x < this.canvasBottomRight.x && - this.y >= this.canvasTopLeft.y && - this.y < this.canvasBottomRight.y); - }; + config._a = []; + config._pf.empty = true; - /** - * This allows the zoom level of the network to influence the rendering - * We store the inverted scale and the coordinates of the top left, and bottom right points of the canvas - * - * @param scale - * @param canvasTopLeft - * @param canvasBottomRight - */ - Node.prototype.setScaleAndPos = function(scale,canvasTopLeft,canvasBottomRight) { - this.networkScaleInv = 1.0/scale; - this.networkScale = scale; - this.canvasTopLeft = canvasTopLeft; - this.canvasBottomRight = canvasBottomRight; - }; + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - /** - * This allows the zoom level of the network to influence the rendering - * - * @param scale - */ - Node.prototype.setScale = function(scale) { - this.networkScaleInv = 1.0/scale; - this.networkScale = scale; - }; + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; + } + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } + } + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } + // clear _12h flag if hour is <= 12 + if (config._pf.bigHour === true && config._a[HOUR] <= 12) { + config._pf.bigHour = undefined; + } + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], + config._meridiem); + dateFromConfig(config); + checkOverflow(config); + } - /** - * set the velocity at 0. Is called when this node is contained in another during clustering - */ - Node.prototype.clearVelocity = function() { - this.vx = 0; - this.vy = 0; - }; + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } - /** - * Basic preservation of (kinectic) energy - * - * @param massBeforeClustering - */ - Node.prototype.updateVelocity = function(massBeforeClustering) { - var energyBefore = this.vx * this.vx * massBeforeClustering; - //this.vx = (this.vx < 0) ? -Math.sqrt(energyBefore/this.options.mass) : Math.sqrt(energyBefore/this.options.mass); - this.vx = Math.sqrt(energyBefore/this.options.mass); - energyBefore = this.vy * this.vy * massBeforeClustering; - //this.vy = (this.vy < 0) ? -Math.sqrt(energyBefore/this.options.mass) : Math.sqrt(energyBefore/this.options.mass); - this.vy = Math.sqrt(energyBefore/this.options.mass); - }; + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, - module.exports = Node; + scoreToBeat, + i, + currentScore; + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } -/***/ }, -/* 57 */ -/***/ function(module, exports, __webpack_require__) { + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); - var util = __webpack_require__(1); - var Node = __webpack_require__(56); + if (!isValid(tempConfig)) { + continue; + } - /** - * @class Edge - * - * A edge connects two nodes - * @param {Object} properties Object with properties. Must contain - * At least properties from and to. - * Available properties: from (number), - * to (number), label (string, color (string), - * width (number), style (string), - * length (number), title (string) - * @param {Network} network A Network object, used to find and edge to - * nodes. - * @param {Object} constants An object with default values for - * example for the color - */ - function Edge (properties, network, networkConstants) { - if (!network) { - throw "No network provided"; - } - var fields = ['edges','physics']; - var constants = util.selectiveBridgeObject(fields,networkConstants); - this.options = constants.edges; - this.physics = constants.physics; - this.options['smoothCurves'] = networkConstants['smoothCurves']; + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; - this.network = network; + tempConfig._pf.score = currentScore; - // initialize variables - this.id = undefined; - this.fromId = undefined; - this.toId = undefined; - this.title = undefined; - this.widthSelected = this.options.width * this.options.widthSelectionMultiplier; - this.value = undefined; - this.selected = false; - this.hover = false; - this.labelDimensions = {top:0,left:0,width:0,height:0,yLine:0}; // could be cached - this.dirtyLabel = true; - this.colorDirty = true; + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } - this.from = null; // a node - this.to = null; // a node - this.via = null; // a temp node + extend(config, bestMoment || tempConfig); + } - this.fromBackup = null; // used to clean up after reconnect - this.toBackup = null;; // used to clean up after reconnect + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); - // we use this to be able to reconnect the edge to a cluster if its node is put into a cluster - // by storing the original information we can revert to the original connection when the cluser is opened. - this.originalFromId = []; - this.originalToId = []; + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(parseTokenTimezone)) { + config._f += 'Z'; + } + makeDateFromStringAndFormat(config); + } else { + config._isValid = false; + } + } - this.connected = false; + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); + } + } - this.widthFixed = false; - this.lengthFixed = false; + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } - this.setProperties(properties); + function makeDateFromInput(config) { + var input = config._i, matched; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + dateFromConfig(config); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); + } + } - this.controlNodesEnabled = false; - this.controlNodes = {from:null, to:null, positions:{}}; - this.connectedNode = null; - } + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); - /** - * Set or overwrite properties for the edge - * @param {Object} properties an object with properties - * @param {Object} constants and object with default, global properties - */ - Edge.prototype.setProperties = function(properties) { - this.colorDirty = true; - if (!properties) { - return; - } + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } - var fields = ['style','fontSize','fontFace','fontColor','fontFill','fontStrokeWidth','fontStrokeColor','width', - 'widthSelectionMultiplier','hoverWidth','arrowScaleFactor','dash','inheritColor','labelAlignment', 'opacity', - 'customScalingFunction','useGradients' - ]; - util.selectiveDeepExtend(fields, this.options, properties); + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } - if (properties.from !== undefined) {this.fromId = properties.from;} - if (properties.to !== undefined) {this.toId = properties.to;} + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } + } + } + return input; + } - if (properties.id !== undefined) {this.id = properties.id;} - if (properties.label !== undefined) {this.label = properties.label; this.dirtyLabel = true;} + /************************************ + Relative Time + ************************************/ - if (properties.title !== undefined) {this.title = properties.title;} - if (properties.value !== undefined) {this.value = properties.value;} - if (properties.length !== undefined) {this.physics.springLength = properties.length;} - if (properties.color !== undefined) { - this.options.inheritColor = false; - if (util.isString(properties.color)) { - this.options.color.color = properties.color; - this.options.color.highlight = properties.color; - } - else { - if (properties.color.color !== undefined) {this.options.color.color = properties.color.color;} - if (properties.color.highlight !== undefined) {this.options.color.highlight = properties.color.highlight;} - if (properties.color.hover !== undefined) {this.options.color.hover = properties.color.hover;} + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); } - } + function relativeTime(posNegDuration, withoutSuffix, locale) { + var duration = moment.duration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + years = round(duration.as('y')), + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < relativeTimeThresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < relativeTimeThresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; - // A node is connected when it has a from and to node. - this.connect(); - - this.widthFixed = this.widthFixed || (properties.width !== undefined); - this.lengthFixed = this.lengthFixed || (properties.length !== undefined); - - this.widthSelected = this.options.width* this.options.widthSelectionMultiplier; - - // set draw method based on style - switch (this.options.style) { - case 'line': this.draw = this._drawLine; break; - case 'arrow': this.draw = this._drawArrow; break; - case 'arrow-center': this.draw = this._drawArrowCenter; break; - case 'dash-line': this.draw = this._drawDashLine; break; - default: this.draw = this._drawLine; break; - } - }; - - - /** - * Connect an edge to its nodes - */ - Edge.prototype.connect = function () { - this.disconnect(); - - this.from = this.network.nodes[this.fromId] || null; - this.to = this.network.nodes[this.toId] || null; - this.connected = (this.from && this.to); - - if (this.connected) { - this.from.attachEdge(this); - this.to.attachEdge(this); - } - else { - if (this.from) { - this.from.detachEdge(this); - } - if (this.to) { - this.to.detachEdge(this); + args[2] = withoutSuffix; + args[3] = +posNegDuration > 0; + args[4] = locale; + return substituteTimeAgo.apply({}, args); } - } - }; - - /** - * Disconnect an edge from its nodes - */ - Edge.prototype.disconnect = function () { - if (this.from) { - this.from.detachEdge(this); - this.from = null; - } - if (this.to) { - this.to.detachEdge(this); - this.to = null; - } - this.connected = false; - }; - - /** - * get the title of this edge. - * @return {string} title The title of the edge, or undefined when no title - * has been set. - */ - Edge.prototype.getTitle = function() { - return typeof this.title === "function" ? this.title() : this.title; - }; + /************************************ + Week of Year + ************************************/ - /** - * Retrieve the value of the edge. Can be undefined - * @return {Number} value - */ - Edge.prototype.getValue = function() { - return this.value; - }; - /** - * Adjust the value range of the edge. The edge will adjust it's width - * based on its value. - * @param {Number} min - * @param {Number} max - */ - Edge.prototype.setValueRange = function(min, max, total) { - if (!this.widthFixed && this.value !== undefined) { - var scale = this.options.customScalingFunction(min, max, total, this.value); - var widthDiff = this.options.widthMax - this.options.widthMin; - this.options.width = this.options.widthMin + scale * widthDiff; - this.widthSelected = this.options.width* this.options.widthSelectionMultiplier; - } - }; + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; - /** - * Redraw a edge - * Draw this edge in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - */ - Edge.prototype.draw = function(ctx) { - throw "Method draw not initialized in edge"; - }; - /** - * Check if this object is overlapping with the provided object - * @param {Object} obj an object with parameters left, top - * @return {boolean} True if location is located on the edge - */ - Edge.prototype.isOverlappingWith = function(obj) { - if (this.connected) { - var distMax = 10; - var xFrom = this.from.x; - var yFrom = this.from.y; - var xTo = this.to.x; - var yTo = this.to.y; - var xObj = obj.left; - var yObj = obj.top; + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; + } - var dist = this._getDistanceToEdge(xFrom, yFrom, xTo, yTo, xObj, yObj); + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } - return (dist < distMax); - } - else { - return false - } - }; + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } - Edge.prototype._getColor = function(ctx) { - var colorObj = this.options.color; - if (this.options.useGradients == true) { - var grd = ctx.createLinearGradient(this.from.x, this.from.y, this.to.x, this.to.y); - var fromColor, toColor; - fromColor = this.from.options.color.highlight.border; - toColor = this.to.options.color.highlight.border; + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; - if (this.from.selected == false && this.to.selected == false) { - fromColor = util.overrideOpacity(this.from.options.color.border, this.options.opacity); - toColor = util.overrideOpacity(this.to.options.color.border, this.options.opacity); - } - else if (this.from.selected == true && this.to.selected == false) { - toColor = this.to.options.color.border; - } - else if (this.from.selected == false && this.to.selected == true) { - fromColor = this.from.options.color.border; + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; } - grd.addColorStop(0, fromColor); - grd.addColorStop(1, toColor); - return grd; - } - if (this.colorDirty === true) { - if (this.options.inheritColor == "to") { - colorObj = { - highlight: this.to.options.color.highlight.border, - hover: this.to.options.color.hover.border, - color: util.overrideOpacity(this.from.options.color.border, this.options.opacity) - }; - } - else if (this.options.inheritColor == "from" || this.options.inheritColor == true) { - colorObj = { - highlight: this.from.options.color.highlight.border, - hover: this.from.options.color.hover.border, - color: util.overrideOpacity(this.from.options.color.border, this.options.opacity) - }; - } - this.options.color = colorObj; - this.colorDirty = false; - } + /************************************ + Top Level Functions + ************************************/ + function makeMoment(config) { + var input = config._i, + format = config._f, + res; + config._locale = config._locale || moment.localeData(config._l); - if (this.selected == true) {return colorObj.highlight;} - else if (this.hover == true) {return colorObj.hover;} - else {return colorObj.color;} - }; + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); + } + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } - /** - * Redraw a edge as a line - * Draw this edge in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - * @private - */ - Edge.prototype._drawLine = function(ctx) { - // set style - ctx.strokeStyle = this._getColor(ctx); - ctx.lineWidth = this._getLineWidth(); + if (moment.isMoment(input)) { + return new Moment(input, true); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); + } - if (this.from != this.to) { - // draw line - var via = this._line(ctx); + res = new Moment(config); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } - // draw label - var point; - if (this.label) { - if (this.options.smoothCurves.enabled == true && via != null) { - var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); - var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); - point = {x:midpointX, y:midpointY}; - } - else { - point = this._pointOnLine(0.5); - } - this._label(ctx, this.label, point.x, point.y); - } - } - else { - var x, y; - var radius = this.physics.springLength / 4; - var node = this.from; - if (!node.width) { - node.resize(ctx); - } - if (node.width > node.height) { - x = node.x + node.width / 2; - y = node.y - radius; - } - else { - x = node.x + radius; - y = node.y - node.height / 2; + return res; } - this._circle(ctx, x, y, radius); - point = this._pointOnCircle(x, y, radius, 0.5); - this._label(ctx, this.label, point.x, point.y); - } - }; - /** - * Get the line width of the edge. Depends on width and whether one of the - * connected nodes is selected. - * @return {Number} width - * @private - */ - Edge.prototype._getLineWidth = function() { - if (this.selected == true) { - return Math.max(Math.min(this.widthSelected, this.options.widthMax), 0.3*this.networkScaleInv); - } - else { - if (this.hover == true) { - return Math.max(Math.min(this.options.hoverWidth, this.options.widthMax), 0.3*this.networkScaleInv); - } - else { - return Math.max(this.options.width, 0.3*this.networkScaleInv); - } - } - }; + moment = function (input, format, locale, strict) { + var c; - Edge.prototype._getViaCoordinates = function () { - if (this.options.smoothCurves.dynamic == true && this.options.smoothCurves.enabled == true ) { - return this.via; - } - else if (this.options.smoothCurves.enabled == false) { - return {x:0,y:0}; - } - else { - var xVia = null; - var yVia = null; - var factor = this.options.smoothCurves.roundness; - var type = this.options.smoothCurves.type; - var dx = Math.abs(this.from.x - this.to.x); - var dy = Math.abs(this.from.y - this.to.y); - if (type == 'discrete' || type == 'diagonalCross') { - if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { - if (this.from.y > this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dy; - yVia = this.from.y - factor * dy; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dy; - yVia = this.from.y - factor * dy; - } - } - else if (this.from.y < this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dy; - yVia = this.from.y + factor * dy; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dy; - yVia = this.from.y + factor * dy; - } - } - if (type == "discrete") { - xVia = dx < factor * dy ? this.from.x : xVia; - } - } - else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { - if (this.from.y > this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dx; - yVia = this.from.y - factor * dx; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dx; - yVia = this.from.y - factor * dx; - } - } - else if (this.from.y < this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dx; - yVia = this.from.y + factor * dx; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dx; - yVia = this.from.y + factor * dx; - } - } - if (type == "discrete") { - yVia = dy < factor * dx ? this.from.y : yVia; - } - } - } - else if (type == "straightCross") { - if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { // up - down - xVia = this.from.x; - if (this.from.y < this.to.y) { - yVia = this.to.y - (1 - factor) * dy; - } - else { - yVia = this.to.y + (1 - factor) * dy; - } - } - else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { // left - right - if (this.from.x < this.to.x) { - xVia = this.to.x - (1 - factor) * dx; - } - else { - xVia = this.to.x + (1 - factor) * dx; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; } - yVia = this.from.y; - } - } - else if (type == 'horizontal') { - if (this.from.x < this.to.x) { - xVia = this.to.x - (1 - factor) * dx; - } - else { - xVia = this.to.x + (1 - factor) * dx; - } - yVia = this.from.y; - } - else if (type == 'vertical') { - xVia = this.from.x; - if (this.from.y < this.to.y) { - yVia = this.to.y - (1 - factor) * dy; - } - else { - yVia = this.to.y + (1 - factor) * dy; - } - } - else if (type == 'curvedCW') { - var dx = this.to.x - this.from.x; - var dy = this.from.y - this.to.y; - var radius = Math.sqrt(dx*dx + dy*dy); - var pi = Math.PI; - - var originalAngle = Math.atan2(dy,dx); - var myAngle = (originalAngle + ((factor * 0.5) + 0.5) * pi) % (2 * pi); + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = locale; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); - xVia = this.from.x + (factor*0.5 + 0.5)*radius*Math.sin(myAngle); - yVia = this.from.y + (factor*0.5 + 0.5)*radius*Math.cos(myAngle); - } - else if (type == 'curvedCCW') { - var dx = this.to.x - this.from.x; - var dy = this.from.y - this.to.y; - var radius = Math.sqrt(dx*dx + dy*dy); - var pi = Math.PI; + return makeMoment(c); + }; - var originalAngle = Math.atan2(dy,dx); - var myAngle = (originalAngle + ((-factor * 0.5) + 0.5) * pi) % (2 * pi); + moment.suppressDeprecationWarnings = false; - xVia = this.from.x + (factor*0.5 + 0.5)*radius*Math.sin(myAngle); - yVia = this.from.y + (factor*0.5 + 0.5)*radius*Math.cos(myAngle); - } - else { // continuous - if (Math.abs(this.from.x - this.to.x) < Math.abs(this.from.y - this.to.y)) { - if (this.from.y > this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dy; - yVia = this.from.y - factor * dy; - xVia = this.to.x < xVia ? this.to.x : xVia; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dy; - yVia = this.from.y - factor * dy; - xVia = this.to.x > xVia ? this.to.x : xVia; - } + moment.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); } - else if (this.from.y < this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dy; - yVia = this.from.y + factor * dy; - xVia = this.to.x < xVia ? this.to.x : xVia; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dy; - yVia = this.from.y + factor * dy; - xVia = this.to.x > xVia ? this.to.x : xVia; - } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; } - } - else if (Math.abs(this.from.x - this.to.x) > Math.abs(this.from.y - this.to.y)) { - if (this.from.y > this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dx; - yVia = this.from.y - factor * dx; - yVia = this.to.y > yVia ? this.to.y : yVia; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dx; - yVia = this.from.y - factor * dx; - yVia = this.to.y > yVia ? this.to.y : yVia; - } + if (!moments.length) { + return moment(); } - else if (this.from.y < this.to.y) { - if (this.from.x < this.to.x) { - xVia = this.from.x + factor * dx; - yVia = this.from.y + factor * dx; - yVia = this.to.y < yVia ? this.to.y : yVia; - } - else if (this.from.x > this.to.x) { - xVia = this.from.x - factor * dx; - yVia = this.from.y + factor * dx; - yVia = this.to.y < yVia ? this.to.y : yVia; - } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; + } } - } + return res; } + moment.min = function () { + var args = [].slice.call(arguments, 0); - return {x: xVia, y: yVia}; - } + return pickBy('isBefore', args); + }; + + moment.max = function () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); + }; + + // creating with utc + moment.utc = function (input, format, locale, strict) { + var c; + + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); + + return makeMoment(c).utc(); + }; + + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; + + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso, + diffRes; + + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; + }; + + // version number + moment.version = VERSION; + + // default format + moment.defaultFormat = isoFormat; + + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; + + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; + + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function (threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return relativeTimeThresholds[threshold]; + } + relativeTimeThresholds[threshold] = limit; + return true; + }; + + moment.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + function (key, value) { + return moment.locale(key, value); + } + ); + + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + moment.locale = function (key, values) { + var data; + if (key) { + if (typeof(values) !== 'undefined') { + data = moment.defineLocale(key, values); + } + else { + data = moment.localeData(key); + } + + if (data) { + moment.duration._locale = moment._locale = data; + } + } + + return moment._locale._abbr; + }; + + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); + } + locales[name].set(values); + + // backwards compat for now: also set the locale + moment.locale(name); + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + }; + + moment.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + function (key) { + return moment.localeData(key); + } + ); + + // returns locale data + moment.localeData = function (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return moment._locale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); + }; + + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && hasOwnProp(obj, '_isAMomentObject')); + }; + + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; + + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); + } + + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; + + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); + } + else { + m._pf.userInvalidated = true; + } + + return m; + }; + + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; + + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + moment.isDate = isDate; + + /************************************ + Moment Prototype + ************************************/ + + + extend(moment.fn = Moment.prototype, { + + clone : function () { + return moment(this); + }, + + valueOf : function () { + return +this._d - ((this._offset || 0) * 60000); + }, + + unix : function () { + return Math.floor(+this / 1000); + }, + + toString : function () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + }, + + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, + + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + if ('function' === typeof Date.prototype.toISOString) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + }, + + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, + + isValid : function () { + return isValid(this); + }, + + isDSTShifted : function () { + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } + + return false; + }, + + parsingFlags : function () { + return extend({}, this._pf); + }, + + invalidAt: function () { + return this._pf.overflow; + }, + + utc : function (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + }, + + local : function (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(this._dateUtcOffset(), 'm'); + } + } + return this; + }, + + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.localeData().postformat(output); + }, + + add : createAdder(1, 'add'), + + subtract : createAdder(-1, 'subtract'), + + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, + anchor, diff, output, daysAdjust; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + diff = this - that; + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; + } + return asFloat ? output : absRound(output); + }, + + from : function (time, withoutSuffix) { + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + }, + + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, + + calendar : function (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're locat/utc/offset + // or not. + var now = time || moment(), + sod = makeAs(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this, moment(now))); + }, + + isLeapYear : function () { + return isLeapYear(this.year()); + }, + + isDST : function () { + return (this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset()); + }, + + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + }, + + month : makeAccessor('Month', true), + + startOf : function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; + }, + + endOf: function (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + }, + + isAfter: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this > +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return inputMs < +this.clone().startOf(units); + } + }, + + isBefore: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this < +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return +this.clone().endOf(units) < inputMs; + } + }, + + isBetween: function (from, to, units) { + return this.isAfter(from, units) && this.isBefore(to, units); + }, + + isSame: function (input, units) { + var inputMs; + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this === +input; + } else { + inputMs = +moment(input); + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + } + }, + + min: deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), + + max: deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; + } + ), + + zone : deprecate( + 'moment().zone is deprecated, use moment().utcOffset instead. ' + + 'https://github.com/moment/moment/issues/1779', + function (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } + } + ), + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + utcOffset : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = utcOffsetFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._dateUtcOffset(); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } + } + + return this; + } else { + return this._isUTC ? offset : this._dateUtcOffset(); + } + }, + + isLocal : function () { + return !this._isUTC; + }, + + isUtcOffset : function () { + return this._isUTC; + }, + + isUtc : function () { + return this._isUTC && this._offset === 0; + }, + + zoneAbbr : function () { + return this._isUTC ? 'UTC' : ''; + }, + + zoneName : function () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + }, + + parseZone : function () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(utcOffsetFromString(this._i)); + } + return this; + }, + + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).utcOffset(); + } + + return (this.utcOffset() - input) % 60 === 0; + }, + + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, + + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + }, + + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, + + weekYear : function (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + }, + + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + }, + + week : function (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + }, + + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + }, + + weekday : function (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + }, + + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + }, + + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, + + weeksInYear : function () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, + + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, + + set : function (units, value) { + var unit; + if (typeof units === 'object') { + for (unit in units) { + this.set(unit, units[unit]); + } + } + else { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + } + return this; + }, + + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + locale : function (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = moment.localeData(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + }, + + lang : deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ), + + localeData : function () { + return this._locale; + }, + + _dateUtcOffset : function () { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(this._d.getTimezoneOffset() / 15) * 15; + } + + }); + + function rawMonthSetter(mom, value) { + var dayOfMonth; + + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } + + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } + + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } + + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } + + function makeAccessor(unit, keepTime) { + return function (value) { + if (value != null) { + rawSetter(this, unit, value); + moment.updateOffset(this, keepTime); + return this; + } else { + return rawGetter(this, unit); + } + }; + } + + moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); + moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); + moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); + // moment.fn.month is defined separately + moment.fn.date = makeAccessor('Date', true); + moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); + moment.fn.year = makeAccessor('FullYear', true); + moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + moment.fn.quarters = moment.fn.quarter; + + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; + + // alias isUtc for dev-friendliness + moment.fn.isUTC = moment.fn.isUtc; + + /************************************ + Duration Prototype + ************************************/ + + + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; + } + + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; + } + + extend(moment.duration.fn = Duration.prototype, { + + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years = 0; + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; + + hours = absRound(minutes / 60); + data.hours = hours % 24; + + days += absRound(hours / 24); + + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); + + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absRound(days / 30); + days %= 30; + + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + }, + + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); + + this._data.milliseconds = Math.abs(this._data.milliseconds); + this._data.seconds = Math.abs(this._data.seconds); + this._data.minutes = Math.abs(this._data.minutes); + this._data.hours = Math.abs(this._data.hours); + this._data.months = Math.abs(this._data.months); + this._data.years = Math.abs(this._data.years); + + return this; + }, + + weeks : function () { + return absRound(this.days() / 7); + }, + + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, + + humanize : function (withSuffix) { + var output = relativeTime(this, !withSuffix, this.localeData()); + + if (withSuffix) { + output = this.localeData().pastFuture(+this, output); + } + + return this.localeData().postformat(output); + }, + + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); + + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; + + this._bubble(); + + return this; + }, + + subtract : function (input, val) { + var dur = moment.duration(input, val); + + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; + + this._bubble(); + + return this; + }, + + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, + + as : function (units) { + var days, months; + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + this._milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(yearsToDays(this._months / 12)); + switch (units) { + case 'week': return days / 7 + this._milliseconds / 6048e5; + case 'day': return days + this._milliseconds / 864e5; + case 'hour': return days * 24 + this._milliseconds / 36e5; + case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; + case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + }, + + lang : moment.fn.lang, + locale : moment.fn.locale, + + toIsoString : deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead ' + + '(notice the capitals)', + function () { + return this.toISOString(); + } + ), + + toISOString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); + }, + + localeData : function () { + return this._locale; + }, + + toJSON : function () { + return this.toISOString(); + } + }); + + moment.duration.fn.toString = moment.duration.fn.toISOString; + + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; + } + + for (i in unitMillisecondFactors) { + if (hasOwnProp(unitMillisecondFactors, i)) { + makeDurationGetter(i.toLowerCase()); + } + } + + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); + }; + moment.duration.fn.asSeconds = function () { + return this.as('s'); + }; + moment.duration.fn.asMinutes = function () { + return this.as('m'); + }; + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; + moment.duration.fn.asMonths = function () { + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); + }; + + /************************************ + Default Locale + ************************************/ + + + // Set default locale, other locale will inherit from English. + moment.locale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + /* EMBED_LOCALES */ + + /************************************ + Exposing Moment + ************************************/ + + function makeGlobal(shouldDeprecate) { + /*global ender:false */ + if (typeof ender !== 'undefined') { + return; + } + oldGlobalMoment = globalScope.moment; + if (shouldDeprecate) { + globalScope.moment = deprecate( + 'Accessing Moment through the global scope is ' + + 'deprecated, and will be removed in an upcoming ' + + 'release.', + moment); + } else { + globalScope.moment = moment; + } + } + + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } else if (true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal === true) { + // release the global variable + globalScope.moment = oldGlobalMoment; + } + + return moment; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + makeGlobal(true); + } else { + makeGlobal(); + } + }).call(this); + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) + +/***/ }, +/* 59 */ +/***/ function(module, exports, __webpack_require__) { + + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 + * http://eightmedia.github.io/hammer.js + * + * Copyright (c) 2014 Jorik Tangelder ; + * Licensed under the MIT license */ + + (function(window, undefined) { + 'use strict'; + + /** + * @main + * @module hammer + * + * @class Hammer + * @static + */ + + /** + * Hammer, use this to create instances + * ```` + * var hammertime = new Hammer(myElement); + * ```` + * + * @method Hammer + * @param {HTMLElement} element + * @param {Object} [options={}] + * @return {Hammer.Instance} + */ + var Hammer = function Hammer(element, options) { + return new Hammer.Instance(element, options || {}); + }; + + /** + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} + */ + Hammer.VERSION = '1.1.3'; + + /** + * default settings. + * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled + * by setting it's name (like `swipe`) to false. + * You can set the defaults for all instances by changing this object before creating an instance. + * @example + * ```` + * Hammer.defaults.drag = false; + * Hammer.defaults.behavior.touchAction = 'pan-y'; + * delete Hammer.defaults.behavior.userSelect; + * ```` + * @property defaults + * @type {Object} + */ + Hammer.defaults = { + /** + * this setting object adds styles and attributes to the element to prevent the browser from doing + * its native behavior. The css properties are auto prefixed for the browsers when needed. + * @property defaults.behavior + * @type {Object} + */ + behavior: { + /** + * Disables text selection to improve the dragging gesture. When the value is `none` it also sets + * `onselectstart=false` for IE on the element. Mainly for desktop browsers. + * @property defaults.behavior.userSelect + * @type {String} + * @default 'none' + */ + userSelect: 'none', + + /** + * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). + * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. + * @property defaults.behavior.touchAction + * @type {String} + * @default: 'pan-y' + */ + touchAction: 'pan-y', + + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @property defaults.behavior.touchCallout + * @type {String} + * @default 'none' + */ + touchCallout: 'none', + + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', + + /** + * Specifies that an entire element should be draggable instead of its contents. + * Mainly for desktop browsers. + * @property defaults.behavior.userDrag + * @type {String} + * @default 'none' + */ + userDrag: 'none', + + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. + * + * If you don't specify an alpha value, Safari on iPhone applies a default alpha value + * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). + * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. + * @property defaults.behavior.tapHighlightColor + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' + } }; - /** - * Draw a line between two nodes - * @param {CanvasRenderingContext2D} ctx - * @private - */ - Edge.prototype._line = function (ctx) { - // draw a straight line - ctx.beginPath(); - ctx.moveTo(this.from.x, this.from.y); - if (this.options.smoothCurves.enabled == true) { - if (this.options.smoothCurves.dynamic == false) { - var via = this._getViaCoordinates(); - if (via.x == null) { - ctx.lineTo(this.to.x, this.to.y); - ctx.stroke(); - return null; - } - else { - // this.via.x = via.x; - // this.via.y = via.y; - ctx.quadraticCurveTo(via.x,via.y,this.to.x, this.to.y); - ctx.stroke(); - //ctx.circle(via.x,via.y,2) - //ctx.stroke(); - return via; - } - } - else { - ctx.quadraticCurveTo(this.via.x,this.via.y,this.to.x, this.to.y); - ctx.stroke(); - return this.via; + /** + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document + */ + Hammer.DOCUMENT = document; + + /** + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} + */ + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + + /** + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} + */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + + /** + * detect if we want to support mouseevents at all + * @property NO_MOUSEEVENTS + * @type {Boolean} + */ + Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; + + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; + + /** + * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` + * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) + * @property EVENT_TYPES + * @private + * @writeOnce + * @type {Object} + */ + var EVENT_TYPES = {}; + + /** + * direction strings, for safe comparisons + * @property DIRECTION_DOWN|LEFT|UP|RIGHT + * @final + * @type {String} + * @default 'down' 'left' 'up' 'right' + */ + var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; + var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; + var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; + var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + + /** + * pointertype strings, for safe comparisons + * @property POINTER_MOUSE|TOUCH|PEN + * @final + * @type {String} + * @default 'mouse' 'touch' 'pen' + */ + var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; + var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; + var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; + + /** + * eventtypes + * @property EVENT_START|MOVE|END|RELEASE|TOUCH + * @final + * @type {String} + * @default 'start' 'change' 'move' 'end' 'release' 'touch' + */ + var EVENT_START = Hammer.EVENT_START = 'start'; + var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; + var EVENT_END = Hammer.EVENT_END = 'end'; + var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; + var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; + + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; + + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; + + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; + } + + // find what eventtypes we add listeners to + Event.determineEventTypes(); + + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); + }); + + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + + // Hammer is ready...! + Hammer.READY = true; + } + + /** + * @module hammer + * + * @class Utils + * @static + */ + var Utils = Hammer.utils = { + /** + * extend method, could also be used for cloning when `dest` is an empty object. + * changes the dest object + * @method extend + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] do a merge + * @return {Object} dest + */ + extend: function extend(dest, src, merge) { + for(var key in src) { + if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { + continue; + } + dest[key] = src[key]; + } + return dest; + }, + + /** + * simple addEventListener wrapper + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + on: function on(element, type, handler) { + element.addEventListener(type, handler, false); + }, + + /** + * simple removeEventListener wrapper + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); + }, + + /** + * forEach over arrays and objects + * @method each + * @param {Object|Array} obj + * @param {Function} iterator + * @param {any} iterator.item + * @param {Number} iterator.index + * @param {Object|Array} iterator.obj the source object + * @param {Object} context value to use as `this` in the iterator + */ + each: function each(obj, iterator, context) { + var i, len; + + // native forEach on arrays + if('forEach' in obj) { + obj.forEach(iterator, context); + // arrays + } else if(obj.length !== undefined) { + for(i = 0, len = obj.length; i < len; i++) { + if(iterator.call(context, obj[i], i, obj) === false) { + return; + } + } + // objects + } else { + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; + } + } + } + }, + + /** + * find if a string contains the string using indexOf + * @method inStr + * @param {String} src + * @param {String} find + * @return {Boolean} found + */ + inStr: function inStr(src, find) { + return src.indexOf(find) > -1; + }, + + /** + * find if a array contains the object using indexOf or a simple polyfill + * @method inArray + * @param {String} src + * @param {String} find + * @return {Boolean|Number} false when not found, or the index + */ + inArray: function inArray(src, find) { + if(src.indexOf) { + var index = src.indexOf(find); + return (index === -1) ? false : index; + } else { + for(var i = 0, len = src.length; i < len; i++) { + if(src[i] === find) { + return i; + } + } + return false; + } + }, + + /** + * convert an array-like object (`arguments`, `touchlist`) to an array + * @method toArray + * @param {Object} obj + * @return {Array} + */ + toArray: function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + }, + + /** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ + hasParent: function hasParent(node, parent) { + while(node) { + if(node == parent) { + return true; + } + node = node.parentNode; + } + return false; + }, + + /** + * get the center of all the touches + * @method getCenter + * @param {Array} touches + * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties + */ + getCenter: function getCenter(touches) { + var pageX = [], + pageY = [], + clientX = [], + clientY = [], + min = Math.min, + max = Math.max; + + // no need to loop when only one touch + if(touches.length === 1) { + return { + pageX: touches[0].pageX, + pageY: touches[0].pageY, + clientX: touches[0].clientX, + clientY: touches[0].clientY + }; + } + + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); + + return { + pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, + pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, + clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, + clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 + }; + }, + + /** + * calculate the velocity between two points. unit is in px per ms. + * @method getVelocity + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + * @return {Object} velocity `x` and `y` + */ + getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { + return { + x: Math.abs(deltaX / deltaTime) || 0, + y: Math.abs(deltaY / deltaTime) || 0 + }; + }, + + /** + * calculate the angle between two coordinates + * @method getAngle + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {Number} angle + */ + getAngle: function getAngle(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; + + return Math.atan2(y, x) * 180 / Math.PI; + }, + + /** + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` + */ + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); + + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, + + /** + * calculate the distance between two touches + * @method getDistance + * @param {Touch}touch1 + * @param {Touch} touch2 + * @return {Number} distance + */ + getDistance: function getDistance(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; + + return Math.sqrt((x * x) + (y * y)); + }, + + /** + * calculate the scale factor between two touchLists + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @method getScale + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} scale + */ + getScale: function getScale(start, end) { + // need two fingers... + if(start.length >= 2 && end.length >= 2) { + return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); + } + return 1; + }, + + /** + * calculate the rotation degrees between two touchLists + * @method getRotation + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} rotation + */ + getRotation: function getRotation(start, end) { + // need two fingers + if(start.length >= 2 && end.length >= 2) { + return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); + } + return 0; + }, + + /** + * find out if the direction is vertical * + * @method isVertical + * @param {String} direction matches `DIRECTION_UP|DOWN` + * @return {Boolean} is_vertical + */ + isVertical: function isVertical(direction) { + return direction == DIRECTION_UP || direction == DIRECTION_DOWN; + }, + + /** + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} + */ + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); + + for(var i = 0; i < prefixes.length; i++) { + var p = prop; + // prefixes + if(prefixes[i]) { + p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + } + + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; + } + } + }, + + /** + * toggle browser default behavior by setting css properties. + * `userSelect='none'` also sets `element.onselectstart` to false + * `userDrag='none'` also sets `element.ondragstart` to false + * + * @method toggleBehavior + * @param {HtmlElement} element + * @param {Object} props + * @param {Boolean} [toggle=true] + */ + toggleBehavior: function toggleBehavior(element, props, toggle) { + if(!props || !element || !element.style) { + return; + } + + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); + + var falseFn = toggle && function() { + return false; + }; + + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; + } + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; + } + }, + + /** + * convert a string with underscores to camelCase + * so prevent_default becomes preventDefault + * @param {String} str + * @return {String} camelCaseStr + */ + toCamelCase: function toCamelCase(str) { + return str.replace(/[_-]([a-z])/g, function(s) { + return s[1].toUpperCase(); + }); } - } - else { - ctx.lineTo(this.to.x, this.to.y); - ctx.stroke(); - return null; - } }; + /** - * Draw a line from a node to itself, a circle - * @param {CanvasRenderingContext2D} ctx - * @param {Number} x - * @param {Number} y - * @param {Number} radius - * @private + * @module hammer */ - Edge.prototype._circle = function (ctx, x, y, radius) { - // draw a circle - ctx.beginPath(); - ctx.arc(x, y, radius, 0, 2 * Math.PI, false); - ctx.stroke(); - }; - /** - * Draw label with white background and with the middle at (x, y) - * @param {CanvasRenderingContext2D} ctx - * @param {String} text - * @param {Number} x - * @param {Number} y - * @private + * @class Event + * @static */ - Edge.prototype._label = function (ctx, text, x, y) { - if (text) { - ctx.font = ((this.from.selected || this.to.selected) ? "bold " : "") + - this.options.fontSize + "px " + this.options.fontFace; - var yLine; + var Event = Hammer.event = { + /** + * when touch events have been fired, this is true + * this is used to stop mouse events + * @property prevent_mouseevents + * @private + * @type {Boolean} + */ + preventMouseEvents: false, - if (this.dirtyLabel == true) { - var lines = String(text).split('\n'); - var lineCount = lines.length; - var fontSize = Number(this.options.fontSize); - yLine = y + (1 - lineCount) / 2 * fontSize; + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, - var width = ctx.measureText(lines[0]).width; - for (var i = 1; i < lineCount; i++) { - var lineWidth = ctx.measureText(lines[i]).width; - width = lineWidth > width ? lineWidth : width; - } - var height = this.options.fontSize * lineCount; - var left = x - width / 2; - var top = y - height / 2; + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, - // cache - this.labelDimensions = {top:top,left:left,width:width,height:height,yLine:yLine}; - } + /** + * simple event binder with a hook and support for multiple types + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + on: function on(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.on(element, type, handler); + hook && hook(type); + }); + }, - var yLine = this.labelDimensions.yLine; - - ctx.save(); - - if (this.options.labelAlignment != "horizontal"){ - ctx.translate(x, yLine); - this._rotateForLabelAlignment(ctx); - x = 0; - yLine = 0; - } + /** + * simple event unbinder with a hook and support for multiple types + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + off: function off(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.off(element, type, handler); + hook && hook(type); + }); + }, - - this._drawLabelRect(ctx); - this._drawLabelText(ctx,x,yLine, lines, lineCount, fontSize); - - ctx.restore(); - } - }; + /** + * the core touch event handler. + * this finds out if we should to detect gestures + * @method onTouch + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Function} handler + * @return onTouchHandler {Function} the core event handler + */ + onTouch: function onTouch(element, eventType, handler) { + var self = this; - /** - * Rotates the canvas so the text is most readable - * @param {CanvasRenderingContext2D} ctx - * @private - */ - Edge.prototype._rotateForLabelAlignment = function(ctx) { - var dy = this.from.y - this.to.y; - var dx = this.from.x - this.to.x; - var angleInDegrees = Math.atan2(dy, dx); + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - // rotate so label it is readable - if((angleInDegrees < -1 && dx < 0) || (angleInDegrees > 0 && dx < 0)){ - angleInDegrees = angleInDegrees + Math.PI; - } - - ctx.rotate(angleInDegrees); - }; + // if we are in a mouseevent, but there has been a touchevent triggered in this session + // we want to do nothing. simply break out of the event. + if(isMouse && self.preventMouseEvents) { + return; - /** - * Draws the label rectangle - * @param {CanvasRenderingContext2D} ctx - * @param {String} labelAlignment - * @private - */ - Edge.prototype._drawLabelRect = function(ctx) { - if (this.options.fontFill !== undefined && this.options.fontFill !== null && this.options.fontFill !== "none") { - ctx.fillStyle = this.options.fontFill; - - var lineMargin = 2; + // mousebutton must be down + } else if(isMouse && eventType == EVENT_START && ev.button === 0) { + self.preventMouseEvents = false; + self.shouldDetect = true; + } else if(isPointer && eventType == EVENT_START) { + self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); + // just a valid start event, but no mouse + } else if(!isMouse && eventType == EVENT_START) { + self.preventMouseEvents = true; + self.shouldDetect = true; + } - if (this.options.labelAlignment == 'line-center') { - ctx.fillRect(-this.labelDimensions.width * 0.5, -this.labelDimensions.height * 0.5, this.labelDimensions.width, this.labelDimensions.height); - } - else if (this.options.labelAlignment == 'line-above') { - ctx.fillRect(-this.labelDimensions.width * 0.5, -(this.labelDimensions.height + lineMargin), this.labelDimensions.width, this.labelDimensions.height); - } - else if (this.options.labelAlignment == 'line-below') { - ctx.fillRect(-this.labelDimensions.width * 0.5, lineMargin, this.labelDimensions.width, this.labelDimensions.height); - } - else { - ctx.fillRect(this.labelDimensions.left, this.labelDimensions.top, this.labelDimensions.width, this.labelDimensions.height); - } - } - }; + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } - /** - * Draws the label text - * @param {CanvasRenderingContext2D} ctx - * @param {Number} x - * @param {Number} yLine - * @param {Array} lines - * @param {Number} lineCount - * @param {Number} fontSize - * @private - */ - Edge.prototype._drawLabelText = function(ctx, x, yLine, lines, lineCount, fontSize) { - // draw text - ctx.fillStyle = this.options.fontColor || "black"; - ctx.textAlign = "center"; + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); + } - // check for label alignment - if (this.options.labelAlignment != 'horizontal') { - var lineMargin = 2; - if (this.options.labelAlignment == 'line-above') { - ctx.textBaseline = "alphabetic"; - yLine -= 2 * lineMargin; // distance from edge, required because we use alphabetic. Alphabetic has less difference between browsers - } - else if (this.options.labelAlignment == 'line-below') { - ctx.textBaseline = "hanging"; - yLine += 2 * lineMargin;// distance from edge, required because we use hanging. Hanging has less difference between browsers - } - else { - ctx.textBaseline = "middle"; - } - } - else { - ctx.textBaseline = "middle"; - } + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + if(triggerType == EVENT_END) { + self.preventMouseEvents = false; + self.shouldDetect = false; + PointerEvent.reset(); + // update the pointerevent object after the detection + } - // check for strokeWidth - if (this.options.fontStrokeWidth > 0){ - ctx.lineWidth = this.options.fontStrokeWidth; - ctx.strokeStyle = this.options.fontStrokeColor; - ctx.lineJoin = 'round'; - } - for (var i = 0; i < lineCount; i++) { - if(this.options.fontStrokeWidth > 0){ - ctx.strokeText(lines[i], x, yLine); - } - ctx.fillText(lines[i], x, yLine); - yLine += fontSize; - } - }; + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } + }; - /** - * Redraw a edge as a dashed line - * Draw this edge in the given canvas - * @author David Jordan - * @date 2012-08-08 - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - * @private - */ - Edge.prototype._drawDashLine = function(ctx) { - // set style - ctx.strokeStyle = this._getColor(ctx); - ctx.lineWidth = this._getLineWidth(); + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, + + /** + * the core detection method + * this finds out what hammer-touch-events to trigger + * @method doDetect + * @param {Object} ev + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {HTMLElement} element + * @param {Function} handler + * @return {String} triggerType matches `EVENT_START|MOVE|END` + */ + doDetect: function doDetect(ev, eventType, element, handler) { + var touchList = this.getTouchList(ev, eventType); + var touchListLength = touchList.length; + var triggerType = eventType; + var triggerChange = touchList.trigger; // used by fakeMultitouch plugin + var changedLength = touchListLength; + + // at each touchstart-like event we want also want to trigger a TOUCH event... + if(eventType == EVENT_START) { + triggerChange = EVENT_TOUCH; + // ...the same for a touchend-like event + } else if(eventType == EVENT_END) { + triggerChange = EVENT_RELEASE; + + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + } + + // after there are still touches on the screen, + // we just want to trigger a MOVE event. so change the START or END to a MOVE + // but only after detection has been started, the first time we actualy want a START + if(changedLength > 0 && this.started) { + triggerType = EVENT_MOVE; + } + + // detection has been started, we keep track of this, see above + this.started = true; + + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); + + // trigger the triggerType event before the change (TOUCH, RELEASE) events + // but the END event should be at last + if(eventType != EVENT_END) { + handler.call(Detection, evData); + } + + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; + + handler.call(Detection, evData); + + evData.eventType = triggerType; + delete evData.changedLength; + } + + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); + + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; + } + + return triggerType; + }, + + /** + * we have different events for each device/browser + * determine what we need and set them in the EVENT_TYPES constant + * the `onTouch` method is bind to these properties. + * @method determineEventTypes + * @return {Object} events + */ + determineEventTypes: function determineEventTypes() { + var types; + if(Hammer.HAS_POINTEREVENTS) { + if(window.PointerEvent) { + types = [ + 'pointerdown', + 'pointermove', + 'pointerup pointercancel lostpointercapture' + ]; + } else { + types = [ + 'MSPointerDown', + 'MSPointerMove', + 'MSPointerUp MSPointerCancel MSLostPointerCapture' + ]; + } + } else if(Hammer.NO_MOUSEEVENTS) { + types = [ + 'touchstart', + 'touchmove', + 'touchend touchcancel' + ]; + } else { + types = [ + 'touchstart mousedown', + 'touchmove mousemove', + 'touchend touchcancel mouseup' + ]; + } + + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, + + /** + * create touchList depending on the event + * @method getTouchList + * @param {Object} ev + * @param {String} eventType + * @return {Array} touches + */ + getTouchList: function getTouchList(ev, eventType) { + // get the fake pointerEvent touchlist + if(Hammer.HAS_POINTEREVENTS) { + return PointerEvent.getTouchList(); + } + + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; + } + + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; + + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); + } + identifiers.push(touch.identifier); + }); - var via = null; - // only firefox and chrome support this method, else we use the legacy one. - if (ctx.setLineDash !== undefined) { - ctx.save(); - // configure the dash pattern - var pattern = [0]; - if (this.options.dash.length !== undefined && this.options.dash.gap !== undefined) { - pattern = [this.options.dash.length,this.options.dash.gap]; - } - else { - pattern = [5,5]; - } + return touchList; + } - // set dash settings for chrome or firefox - ctx.setLineDash(pattern); - ctx.lineDashOffset = 0; + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, - // draw the line - via = this._line(ctx); + /** + * collect basic event data + * @method collectEventData + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Array} touches + * @param {Object} ev + * @return {Object} ev + */ + collectEventData: function collectEventData(element, eventType, touches, ev) { + // find out pointerType + var pointerType = POINTER_TOUCH; + if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { + pointerType = POINTER_MOUSE; + } else if(PointerEvent.matchType(POINTER_PEN, ev)) { + pointerType = POINTER_PEN; + } - // restore the dash settings. - ctx.setLineDash([0]); - ctx.lineDashOffset = 0; - ctx.restore(); - } - else { // unsupporting smooth lines - // draw dashed line - ctx.beginPath(); - ctx.lineCap = 'round'; - if (this.options.dash.altLength !== undefined) //If an alt dash value has been set add to the array this value - { - ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y, - [this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]); - } - else if (this.options.dash.length !== undefined && this.options.dash.gap !== undefined) //If a dash and gap value has been set add to the array this value - { - ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y, - [this.options.dash.length,this.options.dash.gap]); - } - else //If all else fails draw a line - { - ctx.moveTo(this.from.x, this.from.y); - ctx.lineTo(this.to.x, this.to.y); - } - ctx.stroke(); - } + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, - // draw label - if (this.label) { - var point; - if (this.options.smoothCurves.enabled == true && via != null) { - var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); - var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); - point = {x:midpointX, y:midpointY}; - } - else { - point = this._pointOnLine(0.5); - } - this._label(ctx, this.label, point.x, point.y); - } - }; + /** + * prevent the browser default actions + * mostly used to disable scrolling of the browser + */ + preventDefault: function() { + var srcEvent = this.srcEvent; + srcEvent.preventManipulation && srcEvent.preventManipulation(); + srcEvent.preventDefault && srcEvent.preventDefault(); + }, - /** - * Get a point on a line - * @param {Number} percentage. Value between 0 (line start) and 1 (line end) - * @return {Object} point - * @private - */ - Edge.prototype._pointOnLine = function (percentage) { - return { - x: (1 - percentage) * this.from.x + percentage * this.to.x, - y: (1 - percentage) * this.from.y + percentage * this.to.y - } - }; + /** + * stop bubbling the event up to its parents + */ + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, - /** - * Get a point on a circle - * @param {Number} x - * @param {Number} y - * @param {Number} radius - * @param {Number} percentage. Value between 0 (line start) and 1 (line end) - * @return {Object} point - * @private - */ - Edge.prototype._pointOnCircle = function (x, y, radius, percentage) { - var angle = (percentage - 3/8) * 2 * Math.PI; - return { - x: x + radius * Math.cos(angle), - y: y - radius * Math.sin(angle) - } + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); + } + }; + } }; + /** - * Redraw a edge as a line with an arrow halfway the line - * Draw this edge in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - * @private + * @module hammer + * + * @class PointerEvent + * @static */ - Edge.prototype._drawArrowCenter = function(ctx) { - var point; - // set style - ctx.strokeStyle = this._getColor(ctx); - ctx.fillStyle = ctx.strokeStyle; - ctx.lineWidth = this._getLineWidth(); + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, - if (this.from != this.to) { - // draw line - var via = this._line(ctx); + /** + * get the pointers as an array + * @method getTouchList + * @return {Array} touchlist + */ + getTouchList: function getTouchList() { + var touchlist = []; + // we can use forEach since pointerEvents only is in IE10 + Utils.each(this.pointers, function(pointer) { + touchlist.push(pointer); + }); + return touchlist; + }, - var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); - var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; - // draw an arrow halfway the line - if (this.options.smoothCurves.enabled == true && via != null) { - var midpointX = 0.5*(0.5*(this.from.x + via.x) + 0.5*(this.to.x + via.x)); - var midpointY = 0.5*(0.5*(this.from.y + via.y) + 0.5*(this.to.y + via.y)); - point = {x:midpointX, y:midpointY}; - } - else { - point = this._pointOnLine(0.5); - } + /** + * update the position of a pointer + * @method updatePointer + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Object} pointerEvent + */ + updatePointer: function updatePointer(eventType, pointerEvent) { + if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { + delete this.pointers[pointerEvent.pointerId]; + } else { + pointerEvent.identifier = pointerEvent.pointerId; + this.pointers[pointerEvent.pointerId] = pointerEvent; + } + }, - ctx.arrow(point.x, point.y, angle, length); - ctx.fill(); - ctx.stroke(); + /** + * check if ev matches pointertype + * @method matchType + * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` + * @param {PointerEvent} ev + */ + matchType: function matchType(pointerType, ev) { + if(!ev.pointerType) { + return false; + } - // draw label - if (this.label) { - this._label(ctx, this.label, point.x, point.y); - } - } - else { - // draw circle - var x, y; - var radius = 0.25 * Math.max(100,this.physics.springLength); - var node = this.from; - if (!node.width) { - node.resize(ctx); - } - if (node.width > node.height) { - x = node.x + node.width * 0.5; - y = node.y - radius; - } - else { - x = node.x + radius; - y = node.y - node.height * 0.5; - } - this._circle(ctx, x, y, radius); + var pt = ev.pointerType, + types = {}; - // draw all arrows - var angle = 0.2 * Math.PI; - var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; - point = this._pointOnCircle(x, y, radius, 0.5); - ctx.arrow(point.x, point.y, angle, length); - ctx.fill(); - ctx.stroke(); + types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); + types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); + types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); + return types[pointerType]; + }, - // draw label - if (this.label) { - point = this._pointOnCircle(x, y, radius, 0.5); - this._label(ctx, this.label, point.x, point.y); + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; } - } }; - Edge.prototype._pointOnBezier = function(t) { - var via = this._getViaCoordinates(); - - var x = Math.pow(1-t,2)*this.from.x + (2*t*(1 - t))*via.x + Math.pow(t,2)*this.to.x; - var y = Math.pow(1-t,2)*this.from.y + (2*t*(1 - t))*via.y + Math.pow(t,2)*this.to.y; - - return {x:x,y:y}; - } /** - * This function uses binary search to look for the point where the bezier curve crosses the border of the node. + * @module hammer * - * @param from - * @param ctx - * @returns {*} - * @private + * @class Detection + * @static */ - Edge.prototype._findBorderPosition = function(from,ctx) { - var maxIterations = 10; - var iteration = 0; - var low = 0; - var high = 1; - var pos,angle,distanceToBorder, distanceToNodes, difference; - var threshold = 0.2; - var node = this.to; - if (from == true) { - node = this.from; - } - - while (low <= high && iteration < maxIterations) { - var middle = (low + high) * 0.5; - - pos = this._pointOnBezier(middle); - angle = Math.atan2((node.y - pos.y), (node.x - pos.x)); - distanceToBorder = node.distanceToBorder(ctx,angle); - distanceToNodes = Math.sqrt(Math.pow(pos.x-node.x,2) + Math.pow(pos.y-node.y,2)); - difference = distanceToBorder - distanceToNodes; - if (Math.abs(difference) < threshold) { - break; // found - } - else if (difference < 0) { // distance to nodes is larger than distance to border --> t needs to be bigger if we're looking at the to node. - if (from == false) { - low = middle; - } - else { - high = middle; - } - } - else { - if (from == false) { - high = middle; - } - else { - low = middle; - } - } - - iteration++; - } - pos.t = middle; + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], - return pos; - }; + // data of the current Hammer.gesture detection session + current: null, - /** - * Redraw a edge as a line with an arrow - * Draw this edge in the given canvas - * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); - * @param {CanvasRenderingContext2D} ctx - * @private - */ - Edge.prototype._drawArrow = function(ctx) { - // set style - ctx.strokeStyle = this._getColor(ctx); - ctx.fillStyle = ctx.strokeStyle; - ctx.lineWidth = this._getLineWidth(); + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, - // set vars - var angle, length, arrowPos; + // when this becomes true, no gestures are fired + stopped: false, - // if not connected to itself - if (this.from != this.to) { - // draw line - this._line(ctx); + /** + * start Hammer.gesture detection + * @method startDetect + * @param {Hammer.Instance} inst + * @param {Object} eventData + */ + startDetect: function startDetect(inst, eventData) { + // already busy with a Hammer.gesture detection on an element + if(this.current) { + return; + } - // draw arrow head - if (this.options.smoothCurves.enabled == true) { - var via = this._getViaCoordinates(); - arrowPos = this._findBorderPosition(false, ctx); - var guidePos = this._pointOnBezier(Math.max(0.0, arrowPos.t - 0.1)) - angle = Math.atan2((arrowPos.y - guidePos.y), (arrowPos.x - guidePos.x)); - } - else { - angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); - var dx = (this.to.x - this.from.x); - var dy = (this.to.y - this.from.y); - var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); - var toBorderDist = this.to.distanceToBorder(ctx, angle); - var toBorderPoint = (edgeSegmentLength - toBorderDist) / edgeSegmentLength; + this.stopped = false; - arrowPos = {}; - arrowPos.x = (1 - toBorderPoint) * this.from.x + toBorderPoint * this.to.x; - arrowPos.y = (1 - toBorderPoint) * this.from.y + toBorderPoint * this.to.y; - } + // holds current session + this.current = { + inst: inst, // reference to HammerInstance we're working for + startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc + lastEvent: false, // last eventData + lastCalcEvent: false, // last eventData for calculations. + futureCalcEvent: false, // last eventData for calculations. + lastCalcData: {}, // last lastCalcData + name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc + }; - // draw arrow at the end of the line - length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; - ctx.arrow(arrowPos.x,arrowPos.y, angle, length); - ctx.fill(); - ctx.stroke(); + this.detect(eventData); + }, - // draw label - if (this.label) { - var point; - if (this.options.smoothCurves.enabled == true && via != null) { - point = this._pointOnBezier(0.5); - } - else { - point = this._pointOnLine(0.5); - } - this._label(ctx, this.label, point.x, point.y); - } - } - else { - // draw circle - var node = this.from; - var x, y, arrow; - var radius = 0.25 * Math.max(100,this.physics.springLength); - if (!node.width) { - node.resize(ctx); - } - if (node.width > node.height) { - x = node.x + node.width * 0.5; - y = node.y - radius; - arrow = { - x: x, - y: node.y, - angle: 0.9 * Math.PI - }; - } - else { - x = node.x + radius; - y = node.y - node.height * 0.5; - arrow = { - x: node.x, - y: y, - angle: 0.6 * Math.PI - }; - } - ctx.beginPath(); - // TODO: similarly, for a line without arrows, draw to the border of the nodes instead of the center - ctx.arc(x, y, radius, 0, 2 * Math.PI, false); - ctx.stroke(); + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; + } - // draw all arrows - var length = (10 + 5 * this.options.width) * this.options.arrowScaleFactor; - ctx.arrow(arrow.x, arrow.y, arrow.angle, length); - ctx.fill(); - ctx.stroke(); + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); - // draw label - if (this.label) { - point = this._pointOnCircle(x, y, radius, 0.5); - this._label(ctx, this.label, point.x, point.y); - } - } - }; + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; - /** - * Calculate the distance between a point (x3,y3) and a line segment from - * (x1,y1) to (x2,y2). - * http://stackoverflow.com/questions/849211/shortest-distancae-between-a-point-and-a-line-segment - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 - * @param {number} x3 - * @param {number} y3 - * @private - */ - Edge.prototype._getDistanceToEdge = function (x1,y1, x2,y2, x3,y3) { // x3,y3 is the point - var returnValue = 0; - if (this.from != this.to) { - if (this.options.smoothCurves.enabled == true) { - var xVia, yVia; - if (this.options.smoothCurves.enabled == true && this.options.smoothCurves.dynamic == true) { - xVia = this.via.x; - yVia = this.via.y; - } - else { - var via = this._getViaCoordinates(); - xVia = via.x; - yVia = via.y; - } - var minDistance = 1e9; - var distance; - var i,t,x,y, lastX, lastY; - for (i = 0; i < 10; i++) { - t = 0.1*i; - x = Math.pow(1-t,2)*x1 + (2*t*(1 - t))*xVia + Math.pow(t,2)*x2; - y = Math.pow(1-t,2)*y1 + (2*t*(1 - t))*yVia + Math.pow(t,2)*y2; - if (i > 0) { - distance = this._getDistanceToLine(lastX,lastY,x,y, x3,y3); - minDistance = distance < minDistance ? distance : minDistance; + // call Hammer.gesture handlers + Utils.each(this.gestures, function triggerGesture(gesture) { + // only when the instance options have enabled this gesture + if(!this.stopped && inst.enabled && instOptions[gesture.name]) { + gesture.handler.call(gesture, eventData, inst); + } + }, this); + + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; } - lastX = x; lastY = y; - } - returnValue = minDistance; - } - else { - returnValue = this._getDistanceToLine(x1,y1,x2,y2,x3,y3); - } - } - else { - var x, y, dx, dy; - var radius = 0.25 * this.physics.springLength; - var node = this.from; - if (node.width > node.height) { - x = node.x + 0.5 * node.width; - y = node.y - radius; - } - else { - x = node.x + radius; - y = node.y - 0.5 * node.height; - } - dx = x - x3; - dy = y - y3; - returnValue = Math.abs(Math.sqrt(dx*dx + dy*dy) - radius); - } - if (this.labelDimensions.left < x3 && - this.labelDimensions.left + this.labelDimensions.width > x3 && - this.labelDimensions.top < y3 && - this.labelDimensions.top + this.labelDimensions.height > y3) { - return 0; - } - else { - return returnValue; - } - }; + if(eventData.eventType == EVENT_END) { + this.stopDetect(); + } - Edge.prototype._getDistanceToLine = function(x1,y1,x2,y2,x3,y3) { - var px = x2-x1, - py = y2-y1, - something = px*px + py*py, - u = ((x3 - x1) * px + (y3 - y1) * py) / something; + return eventData; + }, - if (u > 1) { - u = 1; - } - else if (u < 0) { - u = 0; - } + /** + * clear the Hammer.gesture vars + * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected + * to stop other Hammer.gestures from being fired + * @method stopDetect + */ + stopDetect: function stopDetect() { + // clone current data to the store as the previous gesture + // used for the double tap gesture, since this is an other gesture detect session + this.previous = Utils.extend({}, this.current); - var x = x1 + u * px, - y = y1 + u * py, - dx = x - x3, - dy = y - y3; + // reset the current + this.current = null; + this.stopped = true; + }, - //# Note: If the actual distance does not matter, - //# if you only want to compare what this function - //# returns to other results of this function, you - //# can just return the squared distance instead - //# (i.e. remove the sqrt) to gain a little performance + /** + * calculate velocity, angle and direction + * @method getVelocityData + * @param {Object} ev + * @param {Object} center + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + */ + getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { + var cur = this.current, + recalc = false, + calcEv = cur.lastCalcEvent, + calcData = cur.lastCalcData; - return Math.sqrt(dx*dx + dy*dy); - }; + if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { + center = calcEv.center; + deltaTime = ev.timeStamp - calcEv.timeStamp; + deltaX = ev.center.clientX - calcEv.center.clientX; + deltaY = ev.center.clientY - calcEv.center.clientY; + recalc = true; + } - /** - * This allows the zoom level of the network to influence the rendering - * - * @param scale - */ - Edge.prototype.setScale = function(scale) { - this.networkScaleInv = 1.0/scale; - }; + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; + } + if(!cur.lastCalcEvent || recalc) { + calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); + calcData.angle = Utils.getAngle(center, ev.center); + calcData.direction = Utils.getDirection(center, ev.center); - Edge.prototype.select = function() { - this.selected = true; - }; + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; + } - Edge.prototype.unselect = function() { - this.selected = false; - }; + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, - Edge.prototype.positionBezierNode = function() { - if (this.via !== null && this.from !== null && this.to !== null) { - this.via.x = 0.5 * (this.from.x + this.to.x); - this.via.y = 0.5 * (this.from.y + this.to.y); - } - else if (this.via !== null) { - this.via.x = 0; - this.via.y = 0; - } - }; + /** + * extend eventData for Hammer.gestures + * @method extendEventData + * @param {Object} ev + * @return {Object} ev + */ + extendEventData: function extendEventData(ev) { + var cur = this.current, + startEv = cur.startEvent, + lastEv = cur.lastEvent || startEv; - /** - * This function draws the control nodes for the manipulator. - * In order to enable this, only set the this.controlNodesEnabled to true. - * @param ctx - */ - Edge.prototype._drawControlNodes = function(ctx) { - if (this.controlNodesEnabled == true) { - if (this.controlNodes.from === null && this.controlNodes.to === null) { - var nodeIdFrom = "edgeIdFrom:".concat(this.id); - var nodeIdTo = "edgeIdTo:".concat(this.id); - var constants = { - nodes:{group:'', radius:7, borderWidth:2, borderWidthSelected: 2}, - physics:{damping:0}, - clustering: {maxNodeSizeIncrements: 0 ,nodeScaling: {width:0, height: 0, radius:0}} - }; - this.controlNodes.from = new Node( - {id:nodeIdFrom, - shape:'dot', - color:{background:'#ff0000', border:'#3c3c3c', highlight: {background:'#07f968'}} - },{},{},constants); - this.controlNodes.to = new Node( - {id:nodeIdTo, - shape:'dot', - color:{background:'#ff0000', border:'#3c3c3c', highlight: {background:'#07f968'}} - },{},{},constants); - } + // update the start touchlist to calculate the scale/rotation + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + startEv.touches = []; + Utils.each(ev.touches, function(touch) { + startEv.touches.push({ + clientX: touch.clientX, + clientY: touch.clientY + }); + }); + } - this.controlNodes.positions = {}; - if (this.controlNodes.from.selected == false) { - this.controlNodes.positions.from = this.getControlNodeFromPosition(ctx); - this.controlNodes.from.x = this.controlNodes.positions.from.x; - this.controlNodes.from.y = this.controlNodes.positions.from.y; - } - if (this.controlNodes.to.selected == false) { - this.controlNodes.positions.to = this.getControlNodeToPosition(ctx); - this.controlNodes.to.x = this.controlNodes.positions.to.x; - this.controlNodes.to.y = this.controlNodes.positions.to.y; - } + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - this.controlNodes.from.draw(ctx); - this.controlNodes.to.draw(ctx); - } - else { - this.controlNodes = {from:null, to:null, positions:{}}; - } - }; + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - /** - * Enable control nodes. - * @private - */ - Edge.prototype._enableControlNodes = function() { - this.fromBackup = this.from; - this.toBackup = this.to; - this.controlNodesEnabled = true; - }; + Utils.extend(ev, { + startEvent: startEv, - /** - * disable control nodes and remove from dynamicEdges from old node - * @private - */ - Edge.prototype._disableControlNodes = function() { - this.fromId = this.from.id; - this.toId = this.to.id; - if (this.fromId != this.fromBackup.id) { // from was changed, remove edge from old 'from' node dynamic edges - this.fromBackup.detachEdge(this); - } - else if (this.toId != this.toBackup.id) { // to was changed, remove edge from old 'to' node dynamic edges - this.toBackup.detachEdge(this); - } + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, - this.fromBackup = null; - this.toBackup = null; - this.controlNodesEnabled = false; - }; + distance: Utils.getDistance(startEv.center, ev.center), + angle: Utils.getAngle(startEv.center, ev.center), + direction: Utils.getDirection(startEv.center, ev.center), + scale: Utils.getScale(startEv.touches, ev.touches), + rotation: Utils.getRotation(startEv.touches, ev.touches) + }); + return ev; + }, - /** - * This checks if one of the control nodes is selected and if so, returns the control node object. Else it returns null. - * @param x - * @param y - * @returns {null} - * @private - */ - Edge.prototype._getSelectedControlNode = function(x,y) { - var positions = this.controlNodes.positions; - var fromDistance = Math.sqrt(Math.pow(x - positions.from.x,2) + Math.pow(y - positions.from.y,2)); - var toDistance = Math.sqrt(Math.pow(x - positions.to.x ,2) + Math.pow(y - positions.to.y ,2)); + /** + * register new gesture + * @method register + * @param {Object} gesture object, see `gestures/` for documentation + * @return {Array} gestures + */ + register: function register(gesture) { + // add an enable gesture options if there is no given + var options = gesture.defaults || {}; + if(options[gesture.name] === undefined) { + options[gesture.name] = true; + } - if (fromDistance < 15) { - this.connectedNode = this.from; - this.from = this.controlNodes.from; - return this.controlNodes.from; - } - else if (toDistance < 15) { - this.connectedNode = this.to; - this.to = this.controlNodes.to; - return this.controlNodes.to; - } - else { - return null; - } - }; + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); + // set its index + gesture.index = gesture.index || 1000; - /** - * this resets the control nodes to their original position. - * @private - */ - Edge.prototype._restoreControlNodes = function() { - if (this.controlNodes.from.selected == true) { - this.from = this.connectedNode; - this.connectedNode = null; - this.controlNodes.from.unselect(); - } - else if (this.controlNodes.to.selected == true) { - this.to = this.connectedNode; - this.connectedNode = null; - this.controlNodes.to.unselect(); - } + // add Hammer.gesture to the list + this.gestures.push(gesture); + + // sort the list by index + this.gestures.sort(function(a, b) { + if(a.index < b.index) { + return -1; + } + if(a.index > b.index) { + return 1; + } + return 0; + }); + + return this.gestures; + } }; + /** - * this calculates the position of the control nodes on the edges of the parent nodes. - * - * @param ctx - * @returns {x: *, y: *} + * @module hammer */ - Edge.prototype.getControlNodeFromPosition = function(ctx) { - // draw arrow head - var controlnodeFromPos; - if (this.options.smoothCurves.enabled == true) { - controlnodeFromPos = this._findBorderPosition(true, ctx); - } - else { - var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); - var dx = (this.to.x - this.from.x); - var dy = (this.to.y - this.from.y); - var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); - - var fromBorderDist = this.from.distanceToBorder(ctx, angle + Math.PI); - var fromBorderPoint = (edgeSegmentLength - fromBorderDist) / edgeSegmentLength; - controlnodeFromPos = {}; - controlnodeFromPos.x = (fromBorderPoint) * this.from.x + (1 - fromBorderPoint) * this.to.x; - controlnodeFromPos.y = (fromBorderPoint) * this.from.y + (1 - fromBorderPoint) * this.to.y; - } - - return controlnodeFromPos; - }; /** - * this calculates the position of the control nodes on the edges of the parent nodes. + * create new hammer instance + * all methods should return the instance itself, so it is chainable. * - * @param ctx - * @returns {{from: {x: number, y: number}, to: {x: *, y: *}}} + * @class Instance + * @constructor + * @param {HTMLElement} element + * @param {Object} [options={}] options are merged with `Hammer.defaults` + * @return {Hammer.Instance} */ - Edge.prototype.getControlNodeToPosition = function(ctx) { - // draw arrow head - var controlnodeFromPos,controlnodeToPos; - if (this.options.smoothCurves.enabled == true) { - controlnodeToPos = this._findBorderPosition(false, ctx); - } - else { - var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); - var dx = (this.to.x - this.from.x); - var dy = (this.to.y - this.from.y); - var edgeSegmentLength = Math.sqrt(dx * dx + dy * dy); - var toBorderDist = this.to.distanceToBorder(ctx, angle); - var toBorderPoint = (edgeSegmentLength - toBorderDist) / edgeSegmentLength; + Hammer.Instance = function(element, options) { + var self = this; - controlnodeToPos = {}; - controlnodeToPos.x = (1 - toBorderPoint) * this.from.x + toBorderPoint * this.to.x; - controlnodeToPos.y = (1 - toBorderPoint) * this.from.y + toBorderPoint * this.to.y; - } + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - return controlnodeToPos; - }; + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - module.exports = Edge; + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; -/***/ }, -/* 58 */ -/***/ function(module, exports, __webpack_require__) { + /** + * options, merged with the defaults + * options with an _ are converted to camelCase + * @property options + * @type {Object} + */ + Utils.each(options, function(value, name) { + delete options[name]; + options[Utils.toCamelCase(name)] = value; + }); - /** - * Popup is a class to create a popup window with some text - * @param {Element} container The container object. - * @param {Number} [x] - * @param {Number} [y] - * @param {String} [text] - * @param {Object} [style] An object containing borderColor, - * backgroundColor, etc. - */ - function Popup(container, x, y, text, style) { - if (container) { - this.container = container; - } - else { - this.container = document.body; - } + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - // x, y and text are optional, see if a style object was passed in their place - if (style === undefined) { - if (typeof x === "object") { - style = x; - x = undefined; - } else if (typeof text === "object") { - style = text; - text = undefined; - } else { - // for backwards compatibility, in case clients other than Network are creating Popup directly - style = { - fontColor: 'black', - fontSize: 14, // px - fontFace: 'verdana', - color: { - border: '#666', - background: '#FFFFC6' - } - } + // add some css to the element to prevent the browser from doing its native behavoir + if(this.options.behavior) { + Utils.toggleBehavior(this.element, this.options.behavior, true); } - } - this.x = 0; - this.y = 0; - this.padding = 5; - this.hidden = false; + /** + * event start handler on the element to start the detection + * @property eventStartHandler + * @type {Object} + */ + this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { + if(self.enabled && ev.eventType == EVENT_START) { + Detection.startDetect(self, ev); + } else if(ev.eventType == EVENT_TOUCH) { + Detection.detect(ev); + } + }); - if (x !== undefined && y !== undefined) { - this.setPosition(x, y); - } - if (text !== undefined) { - this.setText(text); - } + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; + }; - // create the frame - this.frame = document.createElement('div'); - this.frame.className = 'network-tooltip'; - this.frame.style.color = style.fontColor; - this.frame.style.backgroundColor = style.color.background; - this.frame.style.borderColor = style.color.border; - this.frame.style.fontSize = style.fontSize + 'px'; - this.frame.style.fontFamily = style.fontFace; - this.container.appendChild(this.frame); - } + Hammer.Instance.prototype = { + /** + * bind events to the instance + * @method on + * @chainable + * @param {String} gestures multiple gestures by splitting with a space + * @param {Function} handler + * @param {Object} handler.ev event object + */ + on: function onEvent(gestures, handler) { + var self = this; + Event.on(self.element, gestures, handler, function(type) { + self.eventHandlers.push({ gesture: type, handler: handler }); + }); + return self; + }, - /** - * @param {number} x Horizontal position of the popup window - * @param {number} y Vertical position of the popup window - */ - Popup.prototype.setPosition = function(x, y) { - this.x = parseInt(x); - this.y = parseInt(y); - }; + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; - /** - * Set the content for the popup window. This can be HTML code or text. - * @param {string | Element} content - */ - Popup.prototype.setText = function(content) { - if (content instanceof Element) { - this.frame.innerHTML = ''; - this.frame.appendChild(content); - } - else { - this.frame.innerHTML = content; // string containing text or HTML - } - }; + Event.off(self.element, gestures, handler, function(type) { + var index = Utils.inArray({ gesture: type, handler: handler }); + if(index !== false) { + self.eventHandlers.splice(index, 1); + } + }); + return self; + }, - /** - * Show the popup window - * @param {boolean} show Optional. Show or hide the window - */ - Popup.prototype.show = function (show) { - if (show === undefined) { - show = true; - } + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; + } - if (show) { - var height = this.frame.clientHeight; - var width = this.frame.clientWidth; - var maxHeight = this.frame.parentNode.clientHeight; - var maxWidth = this.frame.parentNode.clientWidth; + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; - var top = (this.y - height); - if (top + height + this.padding > maxHeight) { - top = maxHeight - height - this.padding; - } - if (top < this.padding) { - top = this.padding; - } + // trigger on the target if it is in the instance element, + // this is for event delegation tricks + var element = this.element; + if(Utils.hasParent(eventData.target, element)) { + element = eventData.target; + } - var left = this.x; - if (left + width + this.padding > maxWidth) { - left = maxWidth - width - this.padding; - } - if (left < this.padding) { - left = this.padding; - } + element.dispatchEvent(event); + return this; + }, - this.frame.style.left = left + "px"; - this.frame.style.top = top + "px"; - this.frame.style.visibility = "visible"; - this.hidden = false; - } - else { - this.hide(); - } - }; + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, - /** - * Hide the popup window - */ - Popup.prototype.hide = function () { - this.hidden = true; - this.frame.style.visibility = "hidden"; - }; + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; - module.exports = Popup; + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); + } -/***/ }, -/* 59 */ -/***/ function(module, exports, __webpack_require__) { + this.eventHandlers = []; - var PhysicsMixin = __webpack_require__(60); - var ClusterMixin = __webpack_require__(64); - var SectorsMixin = __webpack_require__(65); - var SelectionMixin = __webpack_require__(66); - var ManipulationMixin = __webpack_require__(67); - var NavigationMixin = __webpack_require__(68); - var HierarchicalLayoutMixin = __webpack_require__(69); + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); - /** - * Load a mixin into the network object - * - * @param {Object} sourceVariable | this object has to contain functions. - * @private - */ - exports._loadMixin = function (sourceVariable) { - for (var mixinFunction in sourceVariable) { - if (sourceVariable.hasOwnProperty(mixinFunction)) { - this[mixinFunction] = sourceVariable[mixinFunction]; + return null; } - } }; /** - * removes a mixin from the network object. - * - * @param {Object} sourceVariable | this object has to contain functions. - * @private + * @module gestures */ - exports._clearMixin = function (sourceVariable) { - for (var mixinFunction in sourceVariable) { - if (sourceVariable.hasOwnProperty(mixinFunction)) { - this[mixinFunction] = undefined; - } - } - }; - - /** - * Mixin the physics system and initialize the parameters required. + * Move with x fingers (default 1) around on the page. + * Preventing the default browser behavior is a good way to improve feel and working. + * ```` + * hammertime.on("drag", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` * - * @private + * @class Drag + * @static */ - exports._loadPhysicsSystem = function () { - this._loadMixin(PhysicsMixin); - this._loadSelectedForceSolver(); - if (this.constants.configurePhysics == true) { - this._loadPhysicsConfiguration(); - } - else { - this._cleanupPhysicsConfiguration(); - } - }; - - /** - * Mixin the cluster system and initialize the parameters required. - * - * @private + * @event drag + * @param {Object} ev */ - exports._loadClusterSystem = function () { - this.clusterSession = 0; - this.hubThreshold = 5; - this._loadMixin(ClusterMixin); - }; - - /** - * Mixin the sector system and initialize the parameters required - * - * @private + * @event dragstart + * @param {Object} ev */ - exports._loadSectorSystem = function () { - this.sectors = {}; - this.activeSector = ["default"]; - this.sectors["active"] = {}; - this.sectors["active"]["default"] = {"nodes": {}, - "edges": {}, - "nodeIndices": [], - "formationScale": 1.0, - "drawingNode": undefined }; - this.sectors["frozen"] = {}; - this.sectors["support"] = {"nodes": {}, - "edges": {}, - "nodeIndices": [], - "formationScale": 1.0, - "drawingNode": undefined }; - - this.nodeIndices = this.sectors["active"]["default"]["nodeIndices"]; // the node indices list is used to speed up the computation of the repulsion fields - - this._loadMixin(SectorsMixin); - }; - - /** - * Mixin the selection system and initialize the parameters required - * - * @private + * @event dragend + * @param {Object} ev */ - exports._loadSelectionSystem = function () { - this.selectionObj = {nodes: {}, edges: {}}; - - this._loadMixin(SelectionMixin); - }; - - /** - * Mixin the navigationUI (User Interface) system and initialize the parameters required - * - * @private + * @event drapleft + * @param {Object} ev + */ + /** + * @event dragright + * @param {Object} ev + */ + /** + * @event dragup + * @param {Object} ev + */ + /** + * @event dragdown + * @param {Object} ev */ - exports._loadManipulationSystem = function () { - // reset global variables -- these are used by the selection of nodes and edges. - this.blockConnectingEdgeSelection = false; - this.forceAppendSelection = false; - if (this.constants.dataManipulation.enabled == true) { - // load the manipulator HTML elements. All styling done in css. - if (this.manipulationDiv === undefined) { - this.manipulationDiv = document.createElement('div'); - this.manipulationDiv.className = 'network-manipulationDiv'; - if (this.editMode == true) { - this.manipulationDiv.style.display = "block"; - } - else { - this.manipulationDiv.style.display = "none"; - } - this.frame.appendChild(this.manipulationDiv); - } + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - if (this.editModeDiv === undefined) { - this.editModeDiv = document.createElement('div'); - this.editModeDiv.className = 'network-manipulation-editMode'; - if (this.editMode == true) { - this.editModeDiv.style.display = "none"; - } - else { - this.editModeDiv.style.display = "block"; - } - this.frame.appendChild(this.editModeDiv); - } + function dragGesture(ev, inst) { + var cur = Detection.current; - if (this.closeDiv === undefined) { - this.closeDiv = document.createElement('div'); - this.closeDiv.className = 'network-manipulation-closeDiv'; - this.closeDiv.style.display = this.manipulationDiv.style.display; - this.frame.appendChild(this.closeDiv); - } + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { + return; + } - // load the manipulation functions - this._loadMixin(ManipulationMixin); + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - // create the manipulator toolbar - this._createManipulatorBar(); - } - else { - if (this.manipulationDiv !== undefined) { - // removes all the bindings and overloads - this._createManipulatorBar(); + case EVENT_MOVE: + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.distance < inst.options.dragMinDistance && + cur.name != name) { + return; + } - // remove the manipulation divs - this.frame.removeChild(this.manipulationDiv); - this.frame.removeChild(this.editModeDiv); - this.frame.removeChild(this.closeDiv); + var startCenter = cur.startEvent.center; - this.manipulationDiv = undefined; - this.editModeDiv = undefined; - this.closeDiv = undefined; - // remove the mixin functions - this._clearMixin(ManipulationMixin); - } - } - }; + // we are dragging! + if(cur.name != name) { + cur.name = name; + if(inst.options.dragDistanceCorrection && ev.distance > 0) { + // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. + // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. + // It might be useful to save the original start point somewhere + var factor = Math.abs(inst.options.dragMinDistance / ev.distance); + startCenter.pageX += ev.deltaX * factor; + startCenter.pageY += ev.deltaY * factor; + startCenter.clientX += ev.deltaX * factor; + startCenter.clientY += ev.deltaY * factor; + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } - /** - * Mixin the navigation (User Interface) system and initialize the parameters required - * - * @private - */ - exports._loadNavigationControls = function () { - this._loadMixin(NavigationMixin); - // the clean function removes the button divs, this is done to remove the bindings. - this._cleanNavigation(); - if (this.constants.navigation.enabled == true) { - this._loadNavigationElements(); - } - }; + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; + } + // keep direction on the axis that the drag gesture started on + var lastDirection = cur.lastEvent.direction; + if(ev.dragLockToAxis && lastDirection !== ev.direction) { + if(Utils.isVertical(lastDirection)) { + ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; + } else { + ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + } - /** - * Mixin the hierarchical layout system. - * - * @private - */ - exports._loadHierarchySystem = function () { - this._loadMixin(HierarchicalLayoutMixin); - }; + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); -/***/ }, -/* 60 */ -/***/ function(module, exports, __webpack_require__) { + var isVertical = Utils.isVertical(ev.direction); - var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(61); - var HierarchialRepulsionMixin = __webpack_require__(62); - var BarnesHutMixin = __webpack_require__(63); + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - /** - * Toggling barnes Hut calculation on and off. - * - * @private - */ - exports._toggleBarnesHut = function () { - this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; - this._loadSelectedForceSolver(); - this.moving = true; - this.start(); - }; + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; + case EVENT_END: + triggered = false; + break; + } + } - /** - * This loads the node force solver based on the barnes hut or repulsion algorithm - * - * @private - */ - exports._loadSelectedForceSolver = function () { - // this overloads the this._calculateNodeForces - if (this.constants.physics.barnesHut.enabled == true) { - this._clearMixin(RepulsionMixin); - this._clearMixin(HierarchialRepulsionMixin); + Hammer.gestures.Drag = { + name: name, + index: 50, + handler: dragGesture, + defaults: { + /** + * minimal movement that have to be made before the drag event gets triggered + * @property dragMinDistance + * @type {Number} + * @default 10 + */ + dragMinDistance: 10, - this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity; - this.constants.physics.springLength = this.constants.physics.barnesHut.springLength; - this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant; - this.constants.physics.damping = this.constants.physics.barnesHut.damping; + /** + * Set dragDistanceCorrection to true to make the starting point of the drag + * be calculated from where the drag was triggered, not from where the touch started. + * Useful to avoid a jerk-starting drag, which can make fine-adjustments + * through dragging difficult, and be visually unappealing. + * @property dragDistanceCorrection + * @type {Boolean} + * @default true + */ + dragDistanceCorrection: true, - this._loadMixin(BarnesHutMixin); - } - else if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._clearMixin(BarnesHutMixin); - this._clearMixin(RepulsionMixin); + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, - this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity; - this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength; - this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant; - this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping; + /** + * prevent default browser behavior when dragging occurs + * be careful with it, it makes the element a blocking element + * when you are using the drag gesture, it is a good practice to set this true + * @property dragBlockHorizontal + * @type {Boolean} + * @default false + */ + dragBlockHorizontal: false, - this._loadMixin(HierarchialRepulsionMixin); - } - else { - this._clearMixin(BarnesHutMixin); - this._clearMixin(HierarchialRepulsionMixin); - this.barnesHutTree = undefined; + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, - this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity; - this.constants.physics.springLength = this.constants.physics.repulsion.springLength; - this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant; - this.constants.physics.damping = this.constants.physics.repulsion.damping; + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, - this._loadMixin(RepulsionMixin); - } - }; + /** + * drag lock only kicks in when distance > dragLockMinDistance + * This way, locking occurs only when the distance has become large enough to reliably determine the direction + * @property dragLockMinDistance + * @type {Number} + * @default 25 + */ + dragLockMinDistance: 25 + } + }; + })('drag'); /** - * Before calculating the forces, we check if we need to cluster to keep up performance and we check - * if there is more than one node. If it is just one node, we dont calculate anything. + * @module gestures + */ + /** + * trigger a simple gesture event, so you can do anything in your handler. + * only usable if you know what your doing... * - * @private + * @class Gesture + * @static */ - exports._initializeForceCalculation = function () { - // stop calculation if there is only one node - if (this.nodeIndices.length == 1) { - this.nodes[this.nodeIndices[0]]._setForce(0, 0); - } - else { - // if there are too many nodes on screen, we cluster without repositioning - if (this.nodeIndices.length > this.constants.clustering.clusterThreshold && this.constants.clustering.enabled == true) { - this.clusterToFit(this.constants.clustering.reduceToNodes, false); + /** + * @event gesture + * @param {Object} ev + */ + Hammer.gestures.Gesture = { + name: 'gesture', + index: 1337, + handler: function releaseGesture(ev, inst) { + inst.trigger(this.name, ev); } - - // we now start the force calculation - this._calculateForces(); - } }; + /** + * @module gestures + */ + /** + * Touch stays at the same place for x time + * + * @class Hold + * @static + */ + /** + * @event hold + * @param {Object} ev + */ /** - * Calculate the external forces acting on the nodes - * Forces are caused by: edges, repulsing forces between nodes, gravity - * @private + * @param {String} name */ - exports._calculateForces = function () { - // Gravity is required to keep separated groups from floating off - // the forces are reset to zero in this loop by using _setForce instead - // of _addForce + (function(name) { + var timer; - this._calculateGravitationalForces(); - this._calculateNodeForces(); + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; - if (this.constants.physics.springConstant > 0) { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this._calculateSpringForcesWithSupport(); - } - else { - if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._calculateHierarchicalSpringForces(); - } - else { - this._calculateSpringForces(); - } + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); + + // set the gesture so we can check in the timeout if it still is + current.name = name; + + // set timer and if after the timeout it still is hold, + // we trigger the hold event + timer = setTimeout(function() { + if(current && current.name == name) { + inst.trigger(name, ev); + } + }, options.holdTimeout); + break; + + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; + + case EVENT_RELEASE: + clearTimeout(timer); + break; + } } - } - }; + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, + + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture + }; + })('hold'); /** - * Smooth curves are created by adding invisible nodes in the center of the edges. These nodes are also - * handled in the calculateForces function. We then use a quadratic curve with the center node as control. - * This function joins the datanodes and invisible (called support) nodes into one object. - * We do this so we do not contaminate this.nodes with the support nodes. + * @module gestures + */ + /** + * when a touch is being released from the page * - * @private + * @class Release + * @static */ - exports._updateCalculationNodes = function () { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this.calculationNodes = {}; - this.calculationNodeIndices = []; - - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.calculationNodes[nodeId] = this.nodes[nodeId]; - } - } - var supportNodes = this.sectors['support']['nodes']; - for (var supportNodeId in supportNodes) { - if (supportNodes.hasOwnProperty(supportNodeId)) { - if (this.edges.hasOwnProperty(supportNodes[supportNodeId].parentEdgeId)) { - this.calculationNodes[supportNodeId] = supportNodes[supportNodeId]; - } - else { - supportNodes[supportNodeId]._setForce(0, 0); + /** + * @event release + * @param {Object} ev + */ + Hammer.gestures.Release = { + name: 'release', + index: Infinity, + handler: function releaseGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + inst.trigger(this.name, ev); } - } - } - - for (var idx in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(idx)) { - this.calculationNodeIndices.push(idx); - } } - } - else { - this.calculationNodes = this.nodes; - this.calculationNodeIndices = this.nodeIndices; - } }; - /** - * this function applies the central gravity effect to keep groups from floating off + * @module gestures + */ + /** + * triggers swipe events when the end velocity is above the threshold + * for best usage, set `preventDefault` (on the drag gesture) to `true` + * ```` + * hammertime.on("dragleft swipeleft", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` * - * @private + * @class Swipe + * @static */ - exports._calculateGravitationalForces = function () { - var dx, dy, distance, node, i; - var nodes = this.calculationNodes; - var gravity = this.constants.physics.centralGravity; - var gravityForce = 0; + /** + * @event swipe + * @param {Object} ev + */ + /** + * @event swipeleft + * @param {Object} ev + */ + /** + * @event swiperight + * @param {Object} ev + */ + /** + * @event swipeup + * @param {Object} ev + */ + /** + * @event swipedown + * @param {Object} ev + */ + Hammer.gestures.Swipe = { + name: 'swipe', + index: 40, + defaults: { + /** + * @property swipeMinTouches + * @type {Number} + * @default 1 + */ + swipeMinTouches: 1, - for (i = 0; i < this.calculationNodeIndices.length; i++) { - node = nodes[this.calculationNodeIndices[i]]; - node.damping = this.constants.physics.damping; // possibly add function to alter damping properties of clusters. - // gravity does not apply when we are in a pocket sector - if (this._sector() == "default" && gravity != 0) { - dx = -node.x; - dy = -node.y; - distance = Math.sqrt(dx * dx + dy * dy); + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - gravityForce = (distance == 0) ? 0 : (gravity / distance); - node.fx = dx * gravityForce; - node.fy = dy * gravityForce; - } - else { - node.fx = 0; - node.fy = 0; - } - } - }; + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, + + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; + } + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.velocityX > options.swipeVelocityX || + ev.velocityY > options.swipeVelocityY) { + // trigger swipe events + inst.trigger(this.name, ev); + inst.trigger(this.name + ev.direction, ev); + } + } + } + }; /** - * this function calculates the effects of the springs in the case of unsmooth curves. + * @module gestures + */ + /** + * Single tap and a double tap on a place * - * @private + * @class Tap + * @static + */ + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev */ - exports._calculateSpringForces = function () { - var edgeLength, edge, edgeId; - var dx, dy, fx, fy, springForce, distance; - var edges = this.edges; - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - edgeLength = edge.physics.springLength; - // this implies that the edges between big clusters are longer - edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; - dx = (edge.from.x - edge.to.x); - dy = (edge.from.y - edge.to.y); - distance = Math.sqrt(dx * dx + dy * dy); + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - if (distance == 0) { - distance = 0.01; - } + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - fx = dx * springForce; - fy = dy * springForce; + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; - edge.from.fx += fx; - edge.from.fy += fy; - edge.to.fx -= fx; - edge.to.fy -= fy; + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } + + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } + } + break; } - } } - } - }; + Hammer.gestures.Tap = { + name: name, + index: 100, + handler: tapGesture, + defaults: { + /** + * max time of a tap, this is for the slow tappers + * @property tapMaxTime + * @type {Number} + * @default 250 + */ + tapMaxTime: 250, + + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, + + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 + } + }; + })('tap'); /** - * This function calculates the springforces on the nodes, accounting for the support nodes. + * @module gestures + */ + /** + * when a touch is being touched at the page * - * @private + * @class Touch + * @static */ - exports._calculateSpringForcesWithSupport = function () { - var edgeLength, edge, edgeId, combinedClusterSize; - var edges = this.edges; - - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - if (edge.via != null) { - var node1 = edge.to; - var node2 = edge.via; - var node3 = edge.from; + /** + * @event touch + * @param {Object} ev + */ + Hammer.gestures.Touch = { + name: 'touch', + index: -Infinity, + defaults: { + /** + * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, + * but it improves gestures like transforming and dragging. + * be careful with using this, it can be very annoying for users to be stuck on the page + * @property preventDefault + * @type {Boolean} + * @default false + */ + preventDefault: false, - edgeLength = edge.physics.springLength; + /** + * disable mouse events, so only touch (or pen!) input triggers events + * @property preventMouse + * @type {Boolean} + * @default false + */ + preventMouse: false + }, + handler: function touchGesture(ev, inst) { + if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { + ev.stopDetect(); + return; + } - combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; + if(inst.options.preventDefault) { + ev.preventDefault(); + } - // this implies that the edges between big clusters are longer - edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth; - this._calculateSpringForce(node1, node2, 0.5 * edgeLength); - this._calculateSpringForce(node2, node3, 0.5 * edgeLength); - } + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); } - } } - } }; - /** - * This is the code actually performing the calculation for the function above. It is split out to avoid repetition. - * - * @param node1 - * @param node2 - * @param edgeLength - * @private + * @module gestures + */ + /** + * User want to scale or rotate with 2 fingers + * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the + * `preventDefault` option. + * + * @class Transform + * @static + */ + /** + * @event transform + * @param {Object} ev + */ + /** + * @event transformstart + * @param {Object} ev + */ + /** + * @event transformend + * @param {Object} ev + */ + /** + * @event pinchin + * @param {Object} ev + */ + /** + * @event pinchout + * @param {Object} ev + */ + /** + * @event rotate + * @param {Object} ev */ - exports._calculateSpringForce = function (node1, node2, edgeLength) { - var dx, dy, fx, fy, springForce, distance; - - dx = (node1.x - node2.x); - dy = (node1.y - node2.y); - distance = Math.sqrt(dx * dx + dy * dy); - if (distance == 0) { - distance = 0.01; - } + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - fx = dx * springForce; - fy = dy * springForce; + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - node1.fx += fx; - node1.fy += fy; - node2.fx -= fx; - node2.fy -= fy; - }; + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; + } - exports._cleanupPhysicsConfiguration = function() { - if (this.physicsConfiguration !== undefined) { - while (this.physicsConfiguration.hasChildNodes()) { - this.physicsConfiguration.removeChild(this.physicsConfiguration.firstChild); - } + // we are transforming! + Detection.current.name = name; - this.physicsConfiguration.parentNode.removeChild(this.physicsConfiguration); - this.physicsConfiguration = undefined; - } - } + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - /** - * Load the HTML for the physics config and bind it - * @private - */ - exports._loadPhysicsConfiguration = function () { - if (this.physicsConfiguration === undefined) { - this.backupConstants = {}; - util.deepExtend(this.backupConstants,this.constants); + inst.trigger(name, ev); // basic transform event - var maxGravitational = Math.max(20000, (-1 * this.constants.physics.barnesHut.gravitationalConstant) * 10); - var maxSpring = Math.min(0.05, this.constants.physics.barnesHut.springConstant * 10) + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } - var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"]; - this.physicsConfiguration = document.createElement('div'); - this.physicsConfiguration.className = "PhysicsConfiguration"; - this.physicsConfiguration.innerHTML = '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
Simulation Mode:
Barnes HutRepulsionHierarchical
' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
Options:
' - this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement); - this.optionsDiv = document.createElement("div"); - this.optionsDiv.style.fontSize = "14px"; - this.optionsDiv.style.fontFamily = "verdana"; - this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement); + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; - var rangeElement; - rangeElement = document.getElementById('graph_BH_gc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant"); - rangeElement = document.getElementById('graph_BH_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_BH_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_BH_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_BH_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping"); + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; + } + } - rangeElement = document.getElementById('graph_R_nd'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance"); - rangeElement = document.getElementById('graph_R_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_R_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_R_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_R_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping"); + Hammer.gestures.Transform = { + name: name, + index: 45, + defaults: { + /** + * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 + * @property transformMinScale + * @type {Number} + * @default 0.01 + */ + transformMinScale: 0.01, - rangeElement = document.getElementById('graph_H_nd'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); - rangeElement = document.getElementById('graph_H_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_H_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_H_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_H_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping"); - rangeElement = document.getElementById('graph_H_direction'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction"); - rangeElement = document.getElementById('graph_H_levsep'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation"); - rangeElement = document.getElementById('graph_H_nspac'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing"); + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 + }, - var radioButton1 = document.getElementById("graph_physicsMethod1"); - var radioButton2 = document.getElementById("graph_physicsMethod2"); - var radioButton3 = document.getElementById("graph_physicsMethod3"); - radioButton2.checked = true; - if (this.constants.physics.barnesHut.enabled) { - radioButton1.checked = true; - } - if (this.constants.hierarchicalLayout.enabled) { - radioButton3.checked = true; - } + handler: transformGesture + }; + })('transform'); - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - var graph_repositionNodes = document.getElementById("graph_repositionNodes"); - var graph_generateOptions = document.getElementById("graph_generateOptions"); + /** + * @module hammer + */ - graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this); - graph_repositionNodes.onclick = graphRepositionNodes.bind(this); - graph_generateOptions.onclick = graphGenerateOptions.bind(this); - if (this.constants.smoothCurves == true && this.constants.dynamicSmoothCurves == false) { - graph_toggleSmooth.style.background = "#A4FF56"; - } - else { - graph_toggleSmooth.style.background = "#FF8532"; - } + // AMD export + if(true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + // commonjs export + } else if(typeof module !== 'undefined' && module.exports) { + module.exports = Hammer; + // browser export + } else { + window.Hammer = Hammer; + } + })(window); - switchConfigurations.apply(this); +/***/ }, +/* 60 */ +/***/ function(module, exports, __webpack_require__) { - radioButton1.onchange = switchConfigurations.bind(this); - radioButton2.onchange = switchConfigurations.bind(this); - radioButton3.onchange = switchConfigurations.bind(this); - } - }; + var util = __webpack_require__(1); + var RepulsionMixin = __webpack_require__(68); + var HierarchialRepulsionMixin = __webpack_require__(69); + var BarnesHutMixin = __webpack_require__(70); /** - * This overwrites the this.constants. + * Toggling barnes Hut calculation on and off. * - * @param constantsVariableName - * @param value * @private */ - exports._overWriteGraphConstants = function (constantsVariableName, value) { - var nameArray = constantsVariableName.split("_"); - if (nameArray.length == 1) { - this.constants[nameArray[0]] = value; - } - else if (nameArray.length == 2) { - this.constants[nameArray[0]][nameArray[1]] = value; - } - else if (nameArray.length == 3) { - this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value; - } + exports._toggleBarnesHut = function () { + this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; + this._loadSelectedForceSolver(); + this.moving = true; + this.start(); }; /** - * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. + * This loads the node force solver based on the barnes hut or repulsion algorithm + * + * @private */ - function graphToggleSmoothCurves () { - this.constants.smoothCurves.enabled = !this.constants.smoothCurves.enabled; - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} - else {graph_toggleSmooth.style.background = "#FF8532";} + exports._loadSelectedForceSolver = function () { + // this overloads the this._calculateNodeForces + if (this.constants.physics.barnesHut.enabled == true) { + this._clearMixin(RepulsionMixin); + this._clearMixin(HierarchialRepulsionMixin); - this._configureSmoothCurves(false); - } + this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity; + this.constants.physics.springLength = this.constants.physics.barnesHut.springLength; + this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant; + this.constants.physics.damping = this.constants.physics.barnesHut.damping; - /** - * this function is used to scramble the nodes - * - */ - function graphRepositionNodes () { - for (var nodeId in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(nodeId)) { - this.calculationNodes[nodeId].vx = 0; this.calculationNodes[nodeId].vy = 0; - this.calculationNodes[nodeId].fx = 0; this.calculationNodes[nodeId].fy = 0; - } - } - if (this.constants.hierarchicalLayout.enabled == true) { - this._setupHierarchicalLayout(); - showValueOfRange.call(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); - showValueOfRange.call(this, 'graph_H_cg', 1, "physics_centralGravity"); - showValueOfRange.call(this, 'graph_H_sc', 1, "physics_springConstant"); - showValueOfRange.call(this, 'graph_H_sl', 1, "physics_springLength"); - showValueOfRange.call(this, 'graph_H_damp', 1, "physics_damping"); - } - else { - this.repositionNodes(); + this._loadMixin(BarnesHutMixin); } - this.moving = true; - this.start(); - } + else if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._clearMixin(BarnesHutMixin); + this._clearMixin(RepulsionMixin); - /** - * this is used to generate an options file from the playing with physics system. - */ - function graphGenerateOptions () { - var options = "No options are required, default values used."; - var optionsSpecific = []; - var radioButton1 = document.getElementById("graph_physicsMethod1"); - var radioButton2 = document.getElementById("graph_physicsMethod2"); - if (radioButton1.checked == true) { - if (this.constants.physics.barnesHut.gravitationalConstant != this.backupConstants.physics.barnesHut.gravitationalConstant) {optionsSpecific.push("gravitationalConstant: " + this.constants.physics.barnesHut.gravitationalConstant);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.barnesHut.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.barnesHut.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options = "var options = {"; - options += "physics: {barnesHut: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } - } - options += '}}' - } - if (this.constants.smoothCurves.enabled != this.backupConstants.smoothCurves.enabled) { - if (optionsSpecific.length == 0) {options = "var options = {";} - else {options += ", "} - options += "smoothCurves: " + this.constants.smoothCurves.enabled; - } - if (options != "No options are required, default values used.") { - options += '};' - } - } - else if (radioButton2.checked == true) { - options = "var options = {"; - options += "physics: {barnesHut: {enabled: false}"; - if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.repulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options += ", repulsion: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } - } - options += '}}' - } - if (optionsSpecific.length == 0) {options += "}"} - if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { - options += ", smoothCurves: " + this.constants.smoothCurves; - } - options += '};' + this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity; + this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength; + this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant; + this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping; + + this._loadMixin(HierarchialRepulsionMixin); } else { - options = "var options = {"; - if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options += "physics: {hierarchicalRepulsion: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", "; - } - } - options += '}},'; - } - options += 'hierarchicalLayout: {'; - optionsSpecific = []; - if (this.constants.hierarchicalLayout.direction != this.backupConstants.hierarchicalLayout.direction) {optionsSpecific.push("direction: " + this.constants.hierarchicalLayout.direction);} - if (Math.abs(this.constants.hierarchicalLayout.levelSeparation) != this.backupConstants.hierarchicalLayout.levelSeparation) {optionsSpecific.push("levelSeparation: " + this.constants.hierarchicalLayout.levelSeparation);} - if (this.constants.hierarchicalLayout.nodeSpacing != this.backupConstants.hierarchicalLayout.nodeSpacing) {optionsSpecific.push("nodeSpacing: " + this.constants.hierarchicalLayout.nodeSpacing);} - if (optionsSpecific.length != 0) { - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } - } - options += '}' - } - else { - options += "enabled:true}"; - } - options += '};' - } - + this._clearMixin(BarnesHutMixin); + this._clearMixin(HierarchialRepulsionMixin); + this.barnesHutTree = undefined; - this.optionsDiv.innerHTML = options; - } + this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity; + this.constants.physics.springLength = this.constants.physics.repulsion.springLength; + this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant; + this.constants.physics.damping = this.constants.physics.repulsion.damping; - /** - * this is used to switch between barnesHut, repulsion and hierarchical. - * - */ - function switchConfigurations () { - var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"]; - var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value; - var tableId = "graph_" + radioButton + "_table"; - var table = document.getElementById(tableId); - table.style.display = "block"; - for (var i = 0; i < ids.length; i++) { - if (ids[i] != tableId) { - table = document.getElementById(ids[i]); - table.style.display = "none"; - } - } - this._restoreNodes(); - if (radioButton == "R") { - this.constants.hierarchicalLayout.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = false; - this.constants.physics.barnesHut.enabled = false; - } - else if (radioButton == "H") { - if (this.constants.hierarchicalLayout.enabled == false) { - this.constants.hierarchicalLayout.enabled = true; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this.constants.physics.barnesHut.enabled = false; - this.constants.smoothCurves.enabled = false; - this._setupHierarchicalLayout(); - } - } - else { - this.constants.hierarchicalLayout.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = false; - this.constants.physics.barnesHut.enabled = true; + this._loadMixin(RepulsionMixin); } - this._loadSelectedForceSolver(); - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} - else {graph_toggleSmooth.style.background = "#FF8532";} - this.moving = true; - this.start(); - } - + }; /** - * this generates the ranges depending on the iniital values. + * Before calculating the forces, we check if we need to cluster to keep up performance and we check + * if there is more than one node. If it is just one node, we dont calculate anything. * - * @param id - * @param map - * @param constantsVariableName + * @private */ - function showValueOfRange (id,map,constantsVariableName) { - var valueId = id + "_value"; - var rangeValue = document.getElementById(id).value; - - if (Array.isArray(map)) { - document.getElementById(valueId).value = map[parseInt(rangeValue)]; - this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); + exports._initializeForceCalculation = function () { + // stop calculation if there is only one node + if (this.nodeIndices.length == 1) { + this.nodes[this.nodeIndices[0]]._setForce(0, 0); } else { - document.getElementById(valueId).value = parseInt(map) * parseFloat(rangeValue); - this._overWriteGraphConstants(constantsVariableName, parseInt(map) * parseFloat(rangeValue)); - } + // if there are too many nodes on screen, we cluster without repositioning + if (this.nodeIndices.length > this.constants.clustering.clusterThreshold && this.constants.clustering.enabled == true) { + this.clusterToFit(this.constants.clustering.reduceToNodes, false); + } - if (constantsVariableName == "hierarchicalLayout_direction" || - constantsVariableName == "hierarchicalLayout_levelSeparation" || - constantsVariableName == "hierarchicalLayout_nodeSpacing") { - this._setupHierarchicalLayout(); + // we now start the force calculation + this._calculateForces(); } - this.moving = true; - this.start(); - } - - - + }; -/***/ }, -/* 61 */ -/***/ function(module, exports, __webpack_require__) { /** - * Calculate the forces the nodes apply on each other based on a repulsion field. - * This field is linearly approximated. - * + * Calculate the external forces acting on the nodes + * Forces are caused by: edges, repulsing forces between nodes, gravity * @private */ - exports._calculateNodeForces = function () { - var dx, dy, angle, distance, fx, fy, combinedClusterSize, - repulsingForce, node1, node2, i, j; - - var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; + exports._calculateForces = function () { + // Gravity is required to keep separated groups from floating off + // the forces are reset to zero in this loop by using _setForce instead + // of _addForce - // approximation constants - var a_base = -2 / 3; - var b = 4 / 3; + this._calculateGravitationalForces(); + this._calculateNodeForces(); - // repulsing forces between nodes - var nodeDistance = this.constants.physics.repulsion.nodeDistance; - var minimumDistance = nodeDistance; + if (this.constants.physics.springConstant > 0) { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this._calculateSpringForcesWithSupport(); + } + else { + if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._calculateHierarchicalSpringForces(); + } + else { + this._calculateSpringForces(); + } + } + } + }; - // we loop from i over all but the last entree in the array - // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j - for (i = 0; i < nodeIndices.length - 1; i++) { - node1 = nodes[nodeIndices[i]]; - for (j = i + 1; j < nodeIndices.length; j++) { - node2 = nodes[nodeIndices[j]]; - combinedClusterSize = node1.clusterSize + node2.clusterSize - 2; - dx = node2.x - node1.x; - dy = node2.y - node1.y; - distance = Math.sqrt(dx * dx + dy * dy); + /** + * Smooth curves are created by adding invisible nodes in the center of the edges. These nodes are also + * handled in the calculateForces function. We then use a quadratic curve with the center node as control. + * This function joins the datanodes and invisible (called support) nodes into one object. + * We do this so we do not contaminate this.nodes with the support nodes. + * + * @private + */ + exports._updateCalculationNodes = function () { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this.calculationNodes = {}; + this.calculationNodeIndices = []; - // same condition as BarnesHut, making sure nodes are never 100% overlapping. - if (distance == 0) { - distance = 0.1*Math.random(); - dx = distance; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.calculationNodes[nodeId] = this.nodes[nodeId]; } - - minimumDistance = (combinedClusterSize == 0) ? nodeDistance : (nodeDistance * (1 + combinedClusterSize * this.constants.clustering.distanceAmplification)); - var a = a_base / minimumDistance; - if (distance < 2 * minimumDistance) { - if (distance < 0.5 * minimumDistance) { - repulsingForce = 1.0; + } + var supportNodes = this.sectors['support']['nodes']; + for (var supportNodeId in supportNodes) { + if (supportNodes.hasOwnProperty(supportNodeId)) { + if (this.edges.hasOwnProperty(supportNodes[supportNodeId].parentEdgeId)) { + this.calculationNodes[supportNodeId] = supportNodes[supportNodeId]; } else { - repulsingForce = a * distance + b; // linear approx of 1 / (1 + Math.exp((distance / minimumDistance - 1) * steepness)) + supportNodes[supportNodeId]._setForce(0, 0); } + } + } - // amplify the repulsion for clusters. - repulsingForce *= (combinedClusterSize == 0) ? 1 : 1 + combinedClusterSize * this.constants.clustering.forceAmplification; - repulsingForce = repulsingForce / Math.max(distance,0.01*minimumDistance); - - fx = dx * repulsingForce; - fy = dy * repulsingForce; - node1.fx -= fx; - node1.fy -= fy; - node2.fx += fx; - node2.fy += fy; - + for (var idx in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(idx)) { + this.calculationNodeIndices.push(idx); } } } + else { + this.calculationNodes = this.nodes; + this.calculationNodeIndices = this.nodeIndices; + } }; -/***/ }, -/* 62 */ -/***/ function(module, exports, __webpack_require__) { - /** - * Calculate the forces the nodes apply on eachother based on a repulsion field. - * This field is linearly approximated. + * this function applies the central gravity effect to keep groups from floating off * * @private */ - exports._calculateNodeForces = function () { - var dx, dy, distance, fx, fy, - repulsingForce, node1, node2, i, j; - + exports._calculateGravitationalForces = function () { + var dx, dy, distance, node, i; var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; - - // repulsing forces between nodes - var nodeDistance = this.constants.physics.hierarchicalRepulsion.nodeDistance; - - // we loop from i over all but the last entree in the array - // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j - for (i = 0; i < nodeIndices.length - 1; i++) { - node1 = nodes[nodeIndices[i]]; - for (j = i + 1; j < nodeIndices.length; j++) { - node2 = nodes[nodeIndices[j]]; - - // nodes only affect nodes on their level - if (node1.level == node2.level) { - - dx = node2.x - node1.x; - dy = node2.y - node1.y; - distance = Math.sqrt(dx * dx + dy * dy); - + var gravity = this.constants.physics.centralGravity; + var gravityForce = 0; - var steepness = 0.05; - if (distance < nodeDistance) { - repulsingForce = -Math.pow(steepness*distance,2) + Math.pow(steepness*nodeDistance,2); - } - else { - repulsingForce = 0; - } - // normalize force with - if (distance == 0) { - distance = 0.01; - } - else { - repulsingForce = repulsingForce / distance; - } - fx = dx * repulsingForce; - fy = dy * repulsingForce; + for (i = 0; i < this.calculationNodeIndices.length; i++) { + node = nodes[this.calculationNodeIndices[i]]; + node.damping = this.constants.physics.damping; // possibly add function to alter damping properties of clusters. + // gravity does not apply when we are in a pocket sector + if (this._sector() == "default" && gravity != 0) { + dx = -node.x; + dy = -node.y; + distance = Math.sqrt(dx * dx + dy * dy); - node1.fx -= fx; - node1.fy -= fy; - node2.fx += fx; - node2.fy += fy; - } + gravityForce = (distance == 0) ? 0 : (gravity / distance); + node.fx = dx * gravityForce; + node.fy = dy * gravityForce; + } + else { + node.fx = 0; + node.fy = 0; } } }; + + /** * this function calculates the effects of the springs in the case of unsmooth curves. * * @private */ - exports._calculateHierarchicalSpringForces = function () { + exports._calculateSpringForces = function () { var edgeLength, edge, edgeId; var dx, dy, fx, fy, springForce, distance; var edges = this.edges; - var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; - - - for (var i = 0; i < nodeIndices.length; i++) { - var node1 = nodes[nodeIndices[i]]; - node1.springFx = 0; - node1.springFy = 0; - } - - // forces caused by the edges, modelled as springs for (edgeId in edges) { if (edges.hasOwnProperty(edgeId)) { @@ -31032,87 +30591,50 @@ return /******/ (function(modules) { // webpackBootstrap fx = dx * springForce; fy = dy * springForce; - - - if (edge.to.level != edge.from.level) { - edge.to.springFx -= fx; - edge.to.springFy -= fy; - edge.from.springFx += fx; - edge.from.springFy += fy; - } - else { - var factor = 0.5; - edge.to.fx -= factor*fx; - edge.to.fy -= factor*fy; - edge.from.fx += factor*fx; - edge.from.fy += factor*fy; - } + edge.from.fx += fx; + edge.from.fy += fy; + edge.to.fx -= fx; + edge.to.fy -= fy; } } } } + }; - // normalize spring forces - var springForce = 1; - var springFx, springFy; - for (i = 0; i < nodeIndices.length; i++) { - var node = nodes[nodeIndices[i]]; - springFx = Math.min(springForce,Math.max(-springForce,node.springFx)); - springFy = Math.min(springForce,Math.max(-springForce,node.springFy)); - - node.fx += springFx; - node.fy += springFy; - } - - // retain energy balance - var totalFx = 0; - var totalFy = 0; - for (i = 0; i < nodeIndices.length; i++) { - var node = nodes[nodeIndices[i]]; - totalFx += node.fx; - totalFy += node.fy; - } - var correctionFx = totalFx / nodeIndices.length; - var correctionFy = totalFy / nodeIndices.length; - - for (i = 0; i < nodeIndices.length; i++) { - var node = nodes[nodeIndices[i]]; - node.fx -= correctionFx; - node.fy -= correctionFy; - } - }; -/***/ }, -/* 63 */ -/***/ function(module, exports, __webpack_require__) { /** - * This function calculates the forces the nodes apply on eachother based on a gravitational model. - * The Barnes Hut method is used to speed up this N-body simulation. + * This function calculates the springforces on the nodes, accounting for the support nodes. * * @private */ - exports._calculateNodeForces = function() { - if (this.constants.physics.barnesHut.gravitationalConstant != 0) { - var node; - var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; - var nodeCount = nodeIndices.length; + exports._calculateSpringForcesWithSupport = function () { + var edgeLength, edge, edgeId, combinedClusterSize; + var edges = this.edges; - this._formBarnesHutTree(nodes,nodeIndices); + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + if (edge.via != null) { + var node1 = edge.to; + var node2 = edge.via; + var node3 = edge.from; - var barnesHutTree = this.barnesHutTree; + edgeLength = edge.physics.springLength; - // place the nodes one by one recursively - for (var i = 0; i < nodeCount; i++) { - node = nodes[nodeIndices[i]]; - if (node.options.mass > 0) { - // starting with root is irrelevant, it never passes the BarnesHut condition - this._getForceContribution(barnesHutTree.root.children.NW,node); - this._getForceContribution(barnesHutTree.root.children.NE,node); - this._getForceContribution(barnesHutTree.root.children.SW,node); - this._getForceContribution(barnesHutTree.root.children.SE,node); + combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; + + // this implies that the edges between big clusters are longer + edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth; + this._calculateSpringForce(node1, node2, 0.5 * edgeLength); + this._calculateSpringForce(node2, node3, 0.5 * edgeLength); + } + } } } } @@ -31120,376 +30642,458 @@ return /******/ (function(modules) { // webpackBootstrap /** - * This function traverses the barnesHutTree. It checks when it can approximate distant nodes with their center of mass. - * If a region contains a single node, we check if it is not itself, then we apply the force. + * This is the code actually performing the calculation for the function above. It is split out to avoid repetition. * - * @param parentBranch - * @param node + * @param node1 + * @param node2 + * @param edgeLength * @private */ - exports._getForceContribution = function(parentBranch,node) { - // we get no force contribution from an empty region - if (parentBranch.childrenCount > 0) { - var dx,dy,distance; + exports._calculateSpringForce = function (node1, node2, edgeLength) { + var dx, dy, fx, fy, springForce, distance; + + dx = (node1.x - node2.x); + dy = (node1.y - node2.y); + distance = Math.sqrt(dx * dx + dy * dy); + + if (distance == 0) { + distance = 0.01; + } + + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + + fx = dx * springForce; + fy = dy * springForce; + + node1.fx += fx; + node1.fy += fy; + node2.fx -= fx; + node2.fy -= fy; + }; + + + exports._cleanupPhysicsConfiguration = function() { + if (this.physicsConfiguration !== undefined) { + while (this.physicsConfiguration.hasChildNodes()) { + this.physicsConfiguration.removeChild(this.physicsConfiguration.firstChild); + } + + this.physicsConfiguration.parentNode.removeChild(this.physicsConfiguration); + this.physicsConfiguration = undefined; + } + } + + /** + * Load the HTML for the physics config and bind it + * @private + */ + exports._loadPhysicsConfiguration = function () { + if (this.physicsConfiguration === undefined) { + this.backupConstants = {}; + util.deepExtend(this.backupConstants,this.constants); + + var maxGravitational = Math.max(20000, (-1 * this.constants.physics.barnesHut.gravitationalConstant) * 10); + var maxSpring = Math.min(0.05, this.constants.physics.barnesHut.springConstant * 10) + + var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"]; + this.physicsConfiguration = document.createElement('div'); + this.physicsConfiguration.className = "PhysicsConfiguration"; + this.physicsConfiguration.innerHTML = '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
Simulation Mode:
Barnes HutRepulsionHierarchical
' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
Options:
' + this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement); + this.optionsDiv = document.createElement("div"); + this.optionsDiv.style.fontSize = "14px"; + this.optionsDiv.style.fontFamily = "verdana"; + this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement); + + var rangeElement; + rangeElement = document.getElementById('graph_BH_gc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant"); + rangeElement = document.getElementById('graph_BH_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_BH_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_BH_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_BH_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping"); + + rangeElement = document.getElementById('graph_R_nd'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance"); + rangeElement = document.getElementById('graph_R_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_R_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_R_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_R_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping"); + + rangeElement = document.getElementById('graph_H_nd'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); + rangeElement = document.getElementById('graph_H_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_H_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_H_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_H_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping"); + rangeElement = document.getElementById('graph_H_direction'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction"); + rangeElement = document.getElementById('graph_H_levsep'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation"); + rangeElement = document.getElementById('graph_H_nspac'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing"); + + var radioButton1 = document.getElementById("graph_physicsMethod1"); + var radioButton2 = document.getElementById("graph_physicsMethod2"); + var radioButton3 = document.getElementById("graph_physicsMethod3"); + radioButton2.checked = true; + if (this.constants.physics.barnesHut.enabled) { + radioButton1.checked = true; + } + if (this.constants.hierarchicalLayout.enabled) { + radioButton3.checked = true; + } - // get the distance from the center of mass to the node. - dx = parentBranch.centerOfMass.x - node.x; - dy = parentBranch.centerOfMass.y - node.y; - distance = Math.sqrt(dx * dx + dy * dy); + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + var graph_repositionNodes = document.getElementById("graph_repositionNodes"); + var graph_generateOptions = document.getElementById("graph_generateOptions"); - // BarnesHut condition - // original condition : s/d < thetaInverted = passed === d/s > 1/theta = passed - // calcSize = 1/s --> d * 1/s > 1/theta = passed - if (distance * parentBranch.calcSize > this.constants.physics.barnesHut.thetaInverted) { - // duplicate code to reduce function calls to speed up program - if (distance == 0) { - distance = 0.1*Math.random(); - dx = distance; - } - var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.options.mass / (distance * distance * distance); - var fx = dx * gravityForce; - var fy = dy * gravityForce; - node.fx += fx; - node.fy += fy; + graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this); + graph_repositionNodes.onclick = graphRepositionNodes.bind(this); + graph_generateOptions.onclick = graphGenerateOptions.bind(this); + if (this.constants.smoothCurves == true && this.constants.dynamicSmoothCurves == false) { + graph_toggleSmooth.style.background = "#A4FF56"; } else { - // Did not pass the condition, go into children if available - if (parentBranch.childrenCount == 4) { - this._getForceContribution(parentBranch.children.NW,node); - this._getForceContribution(parentBranch.children.NE,node); - this._getForceContribution(parentBranch.children.SW,node); - this._getForceContribution(parentBranch.children.SE,node); - } - else { // parentBranch must have only one node, if it was empty we wouldnt be here - if (parentBranch.children.data.id != node.id) { // if it is not self - // duplicate code to reduce function calls to speed up program - if (distance == 0) { - distance = 0.5*Math.random(); - dx = distance; - } - var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.options.mass / (distance * distance * distance); - var fx = dx * gravityForce; - var fy = dy * gravityForce; - node.fx += fx; - node.fy += fy; - } - } + graph_toggleSmooth.style.background = "#FF8532"; } + + + switchConfigurations.apply(this); + + radioButton1.onchange = switchConfigurations.bind(this); + radioButton2.onchange = switchConfigurations.bind(this); + radioButton3.onchange = switchConfigurations.bind(this); } }; /** - * This function constructs the barnesHut tree recursively. It creates the root, splits it and starts placing the nodes. + * This overwrites the this.constants. * - * @param nodes - * @param nodeIndices + * @param constantsVariableName + * @param value * @private */ - exports._formBarnesHutTree = function(nodes,nodeIndices) { - var node; - var nodeCount = nodeIndices.length; - - var minX = Number.MAX_VALUE, - minY = Number.MAX_VALUE, - maxX =-Number.MAX_VALUE, - maxY =-Number.MAX_VALUE; - - // get the range of the nodes - for (var i = 0; i < nodeCount; i++) { - var x = nodes[nodeIndices[i]].x; - var y = nodes[nodeIndices[i]].y; - if (nodes[nodeIndices[i]].options.mass > 0) { - if (x < minX) { minX = x; } - if (x > maxX) { maxX = x; } - if (y < minY) { minY = y; } - if (y > maxY) { maxY = y; } - } + exports._overWriteGraphConstants = function (constantsVariableName, value) { + var nameArray = constantsVariableName.split("_"); + if (nameArray.length == 1) { + this.constants[nameArray[0]] = value; } - // make the range a square - var sizeDiff = Math.abs(maxX - minX) - Math.abs(maxY - minY); // difference between X and Y - if (sizeDiff > 0) {minY -= 0.5 * sizeDiff; maxY += 0.5 * sizeDiff;} // xSize > ySize - else {minX += 0.5 * sizeDiff; maxX -= 0.5 * sizeDiff;} // xSize < ySize - - - var minimumTreeSize = 1e-5; - var rootSize = Math.max(minimumTreeSize,Math.abs(maxX - minX)); - var halfRootSize = 0.5 * rootSize; - var centerX = 0.5 * (minX + maxX), centerY = 0.5 * (minY + maxY); - - // construct the barnesHutTree - var barnesHutTree = { - root:{ - centerOfMass: {x:0, y:0}, - mass:0, - range: { - minX: centerX-halfRootSize,maxX:centerX+halfRootSize, - minY: centerY-halfRootSize,maxY:centerY+halfRootSize - }, - size: rootSize, - calcSize: 1 / rootSize, - children: { data:null}, - maxWidth: 0, - level: 0, - childrenCount: 4 - } - }; - this._splitBranch(barnesHutTree.root); - - // place the nodes one by one recursively - for (i = 0; i < nodeCount; i++) { - node = nodes[nodeIndices[i]]; - if (node.options.mass > 0) { - this._placeInTree(barnesHutTree.root,node); - } + else if (nameArray.length == 2) { + this.constants[nameArray[0]][nameArray[1]] = value; + } + else if (nameArray.length == 3) { + this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value; } - - // make global - this.barnesHutTree = barnesHutTree }; /** - * this updates the mass of a branch. this is increased by adding a node. - * - * @param parentBranch - * @param node - * @private + * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. */ - exports._updateBranchMass = function(parentBranch, node) { - var totalMass = parentBranch.mass + node.options.mass; - var totalMassInv = 1/totalMass; - - parentBranch.centerOfMass.x = parentBranch.centerOfMass.x * parentBranch.mass + node.x * node.options.mass; - parentBranch.centerOfMass.x *= totalMassInv; - - parentBranch.centerOfMass.y = parentBranch.centerOfMass.y * parentBranch.mass + node.y * node.options.mass; - parentBranch.centerOfMass.y *= totalMassInv; - - parentBranch.mass = totalMass; - var biggestSize = Math.max(Math.max(node.height,node.radius),node.width); - parentBranch.maxWidth = (parentBranch.maxWidth < biggestSize) ? biggestSize : parentBranch.maxWidth; - - }; + function graphToggleSmoothCurves () { + this.constants.smoothCurves.enabled = !this.constants.smoothCurves.enabled; + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} + else {graph_toggleSmooth.style.background = "#FF8532";} + this._configureSmoothCurves(false); + } /** - * determine in which branch the node will be placed. + * this function is used to scramble the nodes * - * @param parentBranch - * @param node - * @param skipMassUpdate - * @private */ - exports._placeInTree = function(parentBranch,node,skipMassUpdate) { - if (skipMassUpdate != true || skipMassUpdate === undefined) { - // update the mass of the branch. - this._updateBranchMass(parentBranch,node); + function graphRepositionNodes () { + for (var nodeId in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(nodeId)) { + this.calculationNodes[nodeId].vx = 0; this.calculationNodes[nodeId].vy = 0; + this.calculationNodes[nodeId].fx = 0; this.calculationNodes[nodeId].fy = 0; + } } + if (this.constants.hierarchicalLayout.enabled == true) { + this._setupHierarchicalLayout(); + showValueOfRange.call(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); + showValueOfRange.call(this, 'graph_H_cg', 1, "physics_centralGravity"); + showValueOfRange.call(this, 'graph_H_sc', 1, "physics_springConstant"); + showValueOfRange.call(this, 'graph_H_sl', 1, "physics_springLength"); + showValueOfRange.call(this, 'graph_H_damp', 1, "physics_damping"); + } + else { + this.repositionNodes(); + } + this.moving = true; + this.start(); + } - if (parentBranch.children.NW.range.maxX > node.x) { // in NW or SW - if (parentBranch.children.NW.range.maxY > node.y) { // in NW - this._placeInRegion(parentBranch,node,"NW"); + /** + * this is used to generate an options file from the playing with physics system. + */ + function graphGenerateOptions () { + var options = "No options are required, default values used."; + var optionsSpecific = []; + var radioButton1 = document.getElementById("graph_physicsMethod1"); + var radioButton2 = document.getElementById("graph_physicsMethod2"); + if (radioButton1.checked == true) { + if (this.constants.physics.barnesHut.gravitationalConstant != this.backupConstants.physics.barnesHut.gravitationalConstant) {optionsSpecific.push("gravitationalConstant: " + this.constants.physics.barnesHut.gravitationalConstant);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.barnesHut.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.barnesHut.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options = "var options = {"; + options += "physics: {barnesHut: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } + } + options += '}}' } - else { // in SW - this._placeInRegion(parentBranch,node,"SW"); + if (this.constants.smoothCurves.enabled != this.backupConstants.smoothCurves.enabled) { + if (optionsSpecific.length == 0) {options = "var options = {";} + else {options += ", "} + options += "smoothCurves: " + this.constants.smoothCurves.enabled; + } + if (options != "No options are required, default values used.") { + options += '};' } } - else { // in NE or SE - if (parentBranch.children.NW.range.maxY > node.y) { // in NE - this._placeInRegion(parentBranch,node,"NE"); + else if (radioButton2.checked == true) { + options = "var options = {"; + options += "physics: {barnesHut: {enabled: false}"; + if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.repulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options += ", repulsion: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } + } + options += '}}' } - else { // in SE - this._placeInRegion(parentBranch,node,"SE"); + if (optionsSpecific.length == 0) {options += "}"} + if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { + options += ", smoothCurves: " + this.constants.smoothCurves; } + options += '};' } - }; - - - /** - * actually place the node in a region (or branch) - * - * @param parentBranch - * @param node - * @param region - * @private - */ - exports._placeInRegion = function(parentBranch,node,region) { - switch (parentBranch.children[region].childrenCount) { - case 0: // place node here - parentBranch.children[region].children.data = node; - parentBranch.children[region].childrenCount = 1; - this._updateBranchMass(parentBranch.children[region],node); - break; - case 1: // convert into children - // if there are two nodes exactly overlapping (on init, on opening of cluster etc.) - // we move one node a pixel and we do not put it in the tree. - if (parentBranch.children[region].children.data.x == node.x && - parentBranch.children[region].children.data.y == node.y) { - node.x += Math.random(); - node.y += Math.random(); + else { + options = "var options = {"; + if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options += "physics: {hierarchicalRepulsion: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", "; + } } - else { - this._splitBranch(parentBranch.children[region]); - this._placeInTree(parentBranch.children[region],node); + options += '}},'; + } + options += 'hierarchicalLayout: {'; + optionsSpecific = []; + if (this.constants.hierarchicalLayout.direction != this.backupConstants.hierarchicalLayout.direction) {optionsSpecific.push("direction: " + this.constants.hierarchicalLayout.direction);} + if (Math.abs(this.constants.hierarchicalLayout.levelSeparation) != this.backupConstants.hierarchicalLayout.levelSeparation) {optionsSpecific.push("levelSeparation: " + this.constants.hierarchicalLayout.levelSeparation);} + if (this.constants.hierarchicalLayout.nodeSpacing != this.backupConstants.hierarchicalLayout.nodeSpacing) {optionsSpecific.push("nodeSpacing: " + this.constants.hierarchicalLayout.nodeSpacing);} + if (optionsSpecific.length != 0) { + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } } - break; - case 4: // place in branch - this._placeInTree(parentBranch.children[region],node); - break; + options += '}' + } + else { + options += "enabled:true}"; + } + options += '};' } - }; + this.optionsDiv.innerHTML = options; + } + /** - * this function splits a branch into 4 sub branches. If the branch contained a node, we place it in the subbranch - * after the split is complete. + * this is used to switch between barnesHut, repulsion and hierarchical. * - * @param parentBranch - * @private */ - exports._splitBranch = function(parentBranch) { - // if the branch is shaded with a node, replace the node in the new subset. - var containedNode = null; - if (parentBranch.childrenCount == 1) { - containedNode = parentBranch.children.data; - parentBranch.mass = 0; parentBranch.centerOfMass.x = 0; parentBranch.centerOfMass.y = 0; + function switchConfigurations () { + var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"]; + var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value; + var tableId = "graph_" + radioButton + "_table"; + var table = document.getElementById(tableId); + table.style.display = "block"; + for (var i = 0; i < ids.length; i++) { + if (ids[i] != tableId) { + table = document.getElementById(ids[i]); + table.style.display = "none"; + } } - parentBranch.childrenCount = 4; - parentBranch.children.data = null; - this._insertRegion(parentBranch,"NW"); - this._insertRegion(parentBranch,"NE"); - this._insertRegion(parentBranch,"SW"); - this._insertRegion(parentBranch,"SE"); - - if (containedNode != null) { - this._placeInTree(parentBranch,containedNode); + this._restoreNodes(); + if (radioButton == "R") { + this.constants.hierarchicalLayout.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = false; + this.constants.physics.barnesHut.enabled = false; } - }; - - - /** - * This function subdivides the region into four new segments. - * Specifically, this inserts a single new segment. - * It fills the children section of the parentBranch - * - * @param parentBranch - * @param region - * @param parentRange - * @private - */ - exports._insertRegion = function(parentBranch, region) { - var minX,maxX,minY,maxY; - var childSize = 0.5 * parentBranch.size; - switch (region) { - case "NW": - minX = parentBranch.range.minX; - maxX = parentBranch.range.minX + childSize; - minY = parentBranch.range.minY; - maxY = parentBranch.range.minY + childSize; - break; - case "NE": - minX = parentBranch.range.minX + childSize; - maxX = parentBranch.range.maxX; - minY = parentBranch.range.minY; - maxY = parentBranch.range.minY + childSize; - break; - case "SW": - minX = parentBranch.range.minX; - maxX = parentBranch.range.minX + childSize; - minY = parentBranch.range.minY + childSize; - maxY = parentBranch.range.maxY; - break; - case "SE": - minX = parentBranch.range.minX + childSize; - maxX = parentBranch.range.maxX; - minY = parentBranch.range.minY + childSize; - maxY = parentBranch.range.maxY; - break; + else if (radioButton == "H") { + if (this.constants.hierarchicalLayout.enabled == false) { + this.constants.hierarchicalLayout.enabled = true; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this.constants.physics.barnesHut.enabled = false; + this.constants.smoothCurves.enabled = false; + this._setupHierarchicalLayout(); + } } - - - parentBranch.children[region] = { - centerOfMass:{x:0,y:0}, - mass:0, - range:{minX:minX,maxX:maxX,minY:minY,maxY:maxY}, - size: 0.5 * parentBranch.size, - calcSize: 2 * parentBranch.calcSize, - children: {data:null}, - maxWidth: 0, - level: parentBranch.level+1, - childrenCount: 0 - }; - }; + else { + this.constants.hierarchicalLayout.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = false; + this.constants.physics.barnesHut.enabled = true; + } + this._loadSelectedForceSolver(); + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} + else {graph_toggleSmooth.style.background = "#FF8532";} + this.moving = true; + this.start(); + } /** - * This function is for debugging purposed, it draws the tree. + * this generates the ranges depending on the iniital values. * - * @param ctx - * @param color - * @private + * @param id + * @param map + * @param constantsVariableName */ - exports._drawTree = function(ctx,color) { - if (this.barnesHutTree !== undefined) { - - ctx.lineWidth = 1; + function showValueOfRange (id,map,constantsVariableName) { + var valueId = id + "_value"; + var rangeValue = document.getElementById(id).value; - this._drawBranch(this.barnesHutTree.root,ctx,color); + if (Array.isArray(map)) { + document.getElementById(valueId).value = map[parseInt(rangeValue)]; + this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); } - }; - - - /** - * This function is for debugging purposes. It draws the branches recursively. - * - * @param branch - * @param ctx - * @param color - * @private - */ - exports._drawBranch = function(branch,ctx,color) { - if (color === undefined) { - color = "#FF0000"; + else { + document.getElementById(valueId).value = parseInt(map) * parseFloat(rangeValue); + this._overWriteGraphConstants(constantsVariableName, parseInt(map) * parseFloat(rangeValue)); } - if (branch.childrenCount == 4) { - this._drawBranch(branch.children.NW,ctx); - this._drawBranch(branch.children.NE,ctx); - this._drawBranch(branch.children.SE,ctx); - this._drawBranch(branch.children.SW,ctx); + if (constantsVariableName == "hierarchicalLayout_direction" || + constantsVariableName == "hierarchicalLayout_levelSeparation" || + constantsVariableName == "hierarchicalLayout_nodeSpacing") { + this._setupHierarchicalLayout(); } - ctx.strokeStyle = color; - ctx.beginPath(); - ctx.moveTo(branch.range.minX,branch.range.minY); - ctx.lineTo(branch.range.maxX,branch.range.minY); - ctx.stroke(); - - ctx.beginPath(); - ctx.moveTo(branch.range.maxX,branch.range.minY); - ctx.lineTo(branch.range.maxX,branch.range.maxY); - ctx.stroke(); - - ctx.beginPath(); - ctx.moveTo(branch.range.maxX,branch.range.maxY); - ctx.lineTo(branch.range.minX,branch.range.maxY); - ctx.stroke(); + this.moving = true; + this.start(); + } - ctx.beginPath(); - ctx.moveTo(branch.range.minX,branch.range.maxY); - ctx.lineTo(branch.range.minX,branch.range.minY); - ctx.stroke(); - /* - if (branch.mass > 0) { - ctx.circle(branch.centerOfMass.x, branch.centerOfMass.y, 3*branch.mass); - ctx.stroke(); - } - */ - }; /***/ }, -/* 64 */ +/* 61 */ /***/ function(module, exports, __webpack_require__) { /** @@ -32624,11 +32228,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 65 */ +/* 62 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Node = __webpack_require__(56); + var Node = __webpack_require__(40); /** * Creation of the SectorMixin var. @@ -33183,10 +32787,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 66 */ +/* 63 */ /***/ function(module, exports, __webpack_require__) { - var Node = __webpack_require__(56); + var Node = __webpack_require__(40); /** * This function can be called from the _doInAllSectors function @@ -33897,13 +33501,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 67 */ +/* 64 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Node = __webpack_require__(56); - var Edge = __webpack_require__(57); - var Hammer = __webpack_require__(19); + var Node = __webpack_require__(40); + var Edge = __webpack_require__(37); + var Hammer = __webpack_require__(45); /** * clears the toolbar div element of children @@ -34620,11 +34224,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 68 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var Hammer = __webpack_require__(19); + var Hammer = __webpack_require__(45); exports._cleanNavigation = function() { // clean hammer bindings @@ -34768,33 +34372,521 @@ return /******/ (function(modules) { // webpackBootstrap }; - /** - * Stop zooming and unhighlight the zoom controls - * @private - */ - exports._stopZoom = function(event) { - this.zoomIncrement = 0; - event && event.preventDefault(); - }; + /** + * Stop zooming and unhighlight the zoom controls + * @private + */ + exports._stopZoom = function(event) { + this.zoomIncrement = 0; + event && event.preventDefault(); + }; + + + /** + * Stop moving in the Y direction and unHighlight the up and down + * @private + */ + exports._yStopMoving = function(event) { + this.yIncrement = 0; + event && event.preventDefault(); + }; + + + /** + * Stop moving in the X direction and unHighlight left and right. + * @private + */ + exports._xStopMoving = function(event) { + this.xIncrement = 0; + event && event.preventDefault(); + }; + + +/***/ }, +/* 66 */ +/***/ function(module, exports, __webpack_require__) { + + exports._resetLevels = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.preassignedLevel == false) { + node.level = -1; + node.hierarchyEnumerated = false; + } + } + } + }; + + /** + * This is the main function to layout the nodes in a hierarchical way. + * It checks if the node details are supplied correctly + * + * @private + */ + exports._setupHierarchicalLayout = function() { + if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { + // get the size of the largest hubs and check if the user has defined a level for a node. + var hubsize = 0; + var node, nodeId; + var definedLevel = false; + var undefinedLevel = false; + + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level != -1) { + definedLevel = true; + } + else { + undefinedLevel = true; + } + if (hubsize < node.edges.length) { + hubsize = node.edges.length; + } + } + } + + // if the user defined some levels but not all, alert and run without hierarchical layout + if (undefinedLevel == true && definedLevel == true) { + throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); + this.zoomExtent({duration:0},true,this.constants.clustering.enabled); + if (!this.constants.clustering.enabled) { + this.start(); + } + } + else { + // setup the system to use hierarchical method. + this._changeConstants(); + + // define levels if undefined by the users. Based on hubsize + if (undefinedLevel == true) { + if (this.constants.hierarchicalLayout.layout == "hubsize") { + this._determineLevels(hubsize); + } + else { + this._determineLevelsDirected(false); + } + + } + // check the distribution of the nodes per level. + var distribution = this._getDistribution(); + + // place the nodes on the canvas. This also stablilizes the system. + this._placeNodesByHierarchy(distribution); + + // start the simulation. + this.start(); + } + } + }; + + + /** + * This function places the nodes on the canvas based on the hierarchial distribution. + * + * @param {Object} distribution | obtained by the function this._getDistribution() + * @private + */ + exports._placeNodesByHierarchy = function(distribution) { + var nodeId, node; + + // start placing all the level 0 nodes first. Then recursively position their branches. + for (var level in distribution) { + if (distribution.hasOwnProperty(level)) { + + for (nodeId in distribution[level].nodes) { + if (distribution[level].nodes.hasOwnProperty(nodeId)) { + node = distribution[level].nodes[nodeId]; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (node.xFixed) { + node.x = distribution[level].minPos; + node.xFixed = false; + + distribution[level].minPos += distribution[level].nodeSpacing; + } + } + else { + if (node.yFixed) { + node.y = distribution[level].minPos; + node.yFixed = false; + + distribution[level].minPos += distribution[level].nodeSpacing; + } + } + this._placeBranchNodes(node.edges,node.id,distribution,node.level); + } + } + } + } + + // stabilize the system after positioning. This function calls zoomExtent. + this._stabilize(); + }; + + + /** + * This function get the distribution of levels based on hubsize + * + * @returns {Object} + * @private + */ + exports._getDistribution = function() { + var distribution = {}; + var nodeId, node, level; + + // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. + // the fix of X is removed after the x value has been set. + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.xFixed = true; + node.yFixed = true; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + else { + node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + if (distribution[node.level] === undefined) { + distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; + } + distribution[node.level].amount += 1; + distribution[node.level].nodes[nodeId] = node; + } + } + + // determine the largest amount of nodes of all levels + var maxCount = 0; + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + if (maxCount < distribution[level].amount) { + maxCount = distribution[level].amount; + } + } + } + + // set the initial position and spacing of each nodes accordingly + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; + distribution[level].nodeSpacing /= (distribution[level].amount + 1); + distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); + } + } + + return distribution; + }; + + + /** + * this function allocates nodes in levels based on the recursive branching from the largest hubs. + * + * @param hubsize + * @private + */ + exports._determineLevels = function(hubsize) { + var nodeId, node; + + // determine hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.edges.length == hubsize) { + node.level = 0; + } + } + } + + // branch from hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level == 0) { + this._setLevel(1,node.edges,node.id); + } + } + } + }; + + + + /** + * this function allocates nodes in levels based on the direction of the edges + * + * @param hubsize + * @private + */ + exports._determineLevelsDirected = function() { + var nodeId, node, firstNode; + var minLevel = 10000; + + // set first node to source + firstNode = this.nodes[this.nodeIndices[0]]; + firstNode.level = minLevel; + this._setLevelDirected(minLevel,firstNode.edges,firstNode.id); + + // get the minimum level + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + minLevel = node.level < minLevel ? node.level : minLevel; + } + } + + // subtract the minimum from the set so we have a range starting from 0 + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.level -= minLevel; + } + } + }; + + + /** + * Since hierarchical layout does not support: + * - smooth curves (based on the physics), + * - clustering (based on dynamic node counts) + * + * We disable both features so there will be no problems. + * + * @private + */ + exports._changeConstants = function() { + this.constants.clustering.enabled = false; + this.constants.physics.barnesHut.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this._loadSelectedForceSolver(); + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.dynamic = false; + } + this._configureSmoothCurves(); + + var config = this.constants.hierarchicalLayout; + config.levelSeparation = Math.abs(config.levelSeparation); + if (config.direction == "RL" || config.direction == "DU") { + config.levelSeparation *= -1; + } + + if (config.direction == "RL" || config.direction == "LR") { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "vertical"; + } + } + else { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "horizontal"; + } + } + }; + + + /** + * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes + * on a X position that ensures there will be no overlap. + * + * @param edges + * @param parentId + * @param distribution + * @param parentLevel + * @private + */ + exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + } + else { + childNode = edges[i].to; + } + + // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. + var nodeMoved = false; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (childNode.xFixed && childNode.level > parentLevel) { + childNode.xFixed = false; + childNode.x = distribution[childNode.level].minPos; + nodeMoved = true; + } + } + else { + if (childNode.yFixed && childNode.level > parentLevel) { + childNode.yFixed = false; + childNode.y = distribution[childNode.level].minPos; + nodeMoved = true; + } + } + + if (nodeMoved == true) { + distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; + if (childNode.edges.length > 1) { + this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); + } + } + } + }; + + + /** + * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. + * + * @param level + * @param edges + * @param parentId + * @private + */ + exports._setLevel = function(level, edges, parentId) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + } + else { + childNode = edges[i].to; + } + if (childNode.level == -1 || childNode.level > level) { + childNode.level = level; + if (childNode.edges.length > 1) { + this._setLevel(level+1, childNode.edges, childNode.id); + } + } + } + }; + + + /** + * this function is called recursively to enumerate the branched of the first node and give each node a level based on edge direction + * + * @param level + * @param edges + * @param parentId + * @private + */ + exports._setLevelDirected = function(level, edges, parentId) { + this.nodes[parentId].hierarchyEnumerated = true; + var childNode, direction; + for (var i = 0; i < edges.length; i++) { + direction = 1; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + direction = -1; + } + else { + childNode = edges[i].to; + } + if (childNode.level == -1) { + childNode.level = level + direction; + } + } + + for (var i = 0; i < edges.length; i++) { + if (edges[i].toId == parentId) {childNode = edges[i].from;} + else {childNode = edges[i].to;} + + if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { + this._setLevelDirected(childNode.level, childNode.edges, childNode.id); + } + } + }; + + + /** + * Unfix nodes + * + * @private + */ + exports._restoreNodes = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.nodes[nodeId].xFixed = false; + this.nodes[nodeId].yFixed = false; + } + } + }; + + +/***/ }, +/* 67 */ +/***/ function(module, exports, __webpack_require__) { + + function webpackContext(req) { + throw new Error("Cannot find module '" + req + "'."); + } + webpackContext.keys = function() { return []; }; + webpackContext.resolve = webpackContext; + module.exports = webpackContext; + webpackContext.id = 67; + + +/***/ }, +/* 68 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Calculate the forces the nodes apply on each other based on a repulsion field. + * This field is linearly approximated. + * + * @private + */ + exports._calculateNodeForces = function () { + var dx, dy, angle, distance, fx, fy, combinedClusterSize, + repulsingForce, node1, node2, i, j; + + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; + + // approximation constants + var a_base = -2 / 3; + var b = 4 / 3; + + // repulsing forces between nodes + var nodeDistance = this.constants.physics.repulsion.nodeDistance; + var minimumDistance = nodeDistance; + + // we loop from i over all but the last entree in the array + // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j + for (i = 0; i < nodeIndices.length - 1; i++) { + node1 = nodes[nodeIndices[i]]; + for (j = i + 1; j < nodeIndices.length; j++) { + node2 = nodes[nodeIndices[j]]; + combinedClusterSize = node1.clusterSize + node2.clusterSize - 2; + + dx = node2.x - node1.x; + dy = node2.y - node1.y; + distance = Math.sqrt(dx * dx + dy * dy); + + // same condition as BarnesHut, making sure nodes are never 100% overlapping. + if (distance == 0) { + distance = 0.1*Math.random(); + dx = distance; + } + minimumDistance = (combinedClusterSize == 0) ? nodeDistance : (nodeDistance * (1 + combinedClusterSize * this.constants.clustering.distanceAmplification)); + var a = a_base / minimumDistance; + if (distance < 2 * minimumDistance) { + if (distance < 0.5 * minimumDistance) { + repulsingForce = 1.0; + } + else { + repulsingForce = a * distance + b; // linear approx of 1 / (1 + Math.exp((distance / minimumDistance - 1) * steepness)) + } - /** - * Stop moving in the Y direction and unHighlight the up and down - * @private - */ - exports._yStopMoving = function(event) { - this.yIncrement = 0; - event && event.preventDefault(); - }; + // amplify the repulsion for clusters. + repulsingForce *= (combinedClusterSize == 0) ? 1 : 1 + combinedClusterSize * this.constants.clustering.forceAmplification; + repulsingForce = repulsingForce / Math.max(distance,0.01*minimumDistance); + fx = dx * repulsingForce; + fy = dy * repulsingForce; + node1.fx -= fx; + node1.fy -= fy; + node2.fx += fx; + node2.fy += fy; - /** - * Stop moving in the X direction and unHighlight left and right. - * @private - */ - exports._xStopMoving = function(event) { - this.xIncrement = 0; - event && event.preventDefault(); + } + } + } }; @@ -34802,676 +34894,579 @@ return /******/ (function(modules) { // webpackBootstrap /* 69 */ /***/ function(module, exports, __webpack_require__) { - exports._resetLevels = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.preassignedLevel == false) { - node.level = -1; - node.hierarchyEnumerated = false; - } - } - } - }; - /** - * This is the main function to layout the nodes in a hierarchical way. - * It checks if the node details are supplied correctly + * Calculate the forces the nodes apply on eachother based on a repulsion field. + * This field is linearly approximated. * * @private */ - exports._setupHierarchicalLayout = function() { - if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { - // get the size of the largest hubs and check if the user has defined a level for a node. - var hubsize = 0; - var node, nodeId; - var definedLevel = false; - var undefinedLevel = false; + exports._calculateNodeForces = function () { + var dx, dy, distance, fx, fy, + repulsingForce, node1, node2, i, j; - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level != -1) { - definedLevel = true; - } - else { - undefinedLevel = true; - } - if (hubsize < node.edges.length) { - hubsize = node.edges.length; - } - } - } + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; - // if the user defined some levels but not all, alert and run without hierarchical layout - if (undefinedLevel == true && definedLevel == true) { - throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); - this.zoomExtent({duration:0},true,this.constants.clustering.enabled); - if (!this.constants.clustering.enabled) { - this.start(); - } - } - else { - // setup the system to use hierarchical method. - this._changeConstants(); + // repulsing forces between nodes + var nodeDistance = this.constants.physics.hierarchicalRepulsion.nodeDistance; - // define levels if undefined by the users. Based on hubsize - if (undefinedLevel == true) { - if (this.constants.hierarchicalLayout.layout == "hubsize") { - this._determineLevels(hubsize); + // we loop from i over all but the last entree in the array + // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j + for (i = 0; i < nodeIndices.length - 1; i++) { + node1 = nodes[nodeIndices[i]]; + for (j = i + 1; j < nodeIndices.length; j++) { + node2 = nodes[nodeIndices[j]]; + + // nodes only affect nodes on their level + if (node1.level == node2.level) { + + dx = node2.x - node1.x; + dy = node2.y - node1.y; + distance = Math.sqrt(dx * dx + dy * dy); + + + var steepness = 0.05; + if (distance < nodeDistance) { + repulsingForce = -Math.pow(steepness*distance,2) + Math.pow(steepness*nodeDistance,2); } else { - this._determineLevelsDirected(false); + repulsingForce = 0; } + // normalize force with + if (distance == 0) { + distance = 0.01; + } + else { + repulsingForce = repulsingForce / distance; + } + fx = dx * repulsingForce; + fy = dy * repulsingForce; + node1.fx -= fx; + node1.fy -= fy; + node2.fx += fx; + node2.fy += fy; } - // check the distribution of the nodes per level. - var distribution = this._getDistribution(); - - // place the nodes on the canvas. This also stablilizes the system. - this._placeNodesByHierarchy(distribution); - - // start the simulation. - this.start(); } } }; /** - * This function places the nodes on the canvas based on the hierarchial distribution. + * this function calculates the effects of the springs in the case of unsmooth curves. * - * @param {Object} distribution | obtained by the function this._getDistribution() * @private */ - exports._placeNodesByHierarchy = function(distribution) { - var nodeId, node; + exports._calculateHierarchicalSpringForces = function () { + var edgeLength, edge, edgeId; + var dx, dy, fx, fy, springForce, distance; + var edges = this.edges; - // start placing all the level 0 nodes first. Then recursively position their branches. - for (var level in distribution) { - if (distribution.hasOwnProperty(level)) { + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; - for (nodeId in distribution[level].nodes) { - if (distribution[level].nodes.hasOwnProperty(nodeId)) { - node = distribution[level].nodes[nodeId]; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (node.xFixed) { - node.x = distribution[level].minPos; - node.xFixed = false; - distribution[level].minPos += distribution[level].nodeSpacing; - } + for (var i = 0; i < nodeIndices.length; i++) { + var node1 = nodes[nodeIndices[i]]; + node1.springFx = 0; + node1.springFy = 0; + } + + + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + edgeLength = edge.physics.springLength; + // this implies that the edges between big clusters are longer + edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; + + dx = (edge.from.x - edge.to.x); + dy = (edge.from.y - edge.to.y); + distance = Math.sqrt(dx * dx + dy * dy); + + if (distance == 0) { + distance = 0.01; } - else { - if (node.yFixed) { - node.y = distribution[level].minPos; - node.yFixed = false; - distribution[level].minPos += distribution[level].nodeSpacing; - } + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + + fx = dx * springForce; + fy = dy * springForce; + + + + if (edge.to.level != edge.from.level) { + edge.to.springFx -= fx; + edge.to.springFy -= fy; + edge.from.springFx += fx; + edge.from.springFy += fy; + } + else { + var factor = 0.5; + edge.to.fx -= factor*fx; + edge.to.fy -= factor*fy; + edge.from.fx += factor*fx; + edge.from.fy += factor*fy; } - this._placeBranchNodes(node.edges,node.id,distribution,node.level); } } } } - // stabilize the system after positioning. This function calls zoomExtent. - this._stabilize(); + // normalize spring forces + var springForce = 1; + var springFx, springFy; + for (i = 0; i < nodeIndices.length; i++) { + var node = nodes[nodeIndices[i]]; + springFx = Math.min(springForce,Math.max(-springForce,node.springFx)); + springFy = Math.min(springForce,Math.max(-springForce,node.springFy)); + + node.fx += springFx; + node.fy += springFy; + } + + // retain energy balance + var totalFx = 0; + var totalFy = 0; + for (i = 0; i < nodeIndices.length; i++) { + var node = nodes[nodeIndices[i]]; + totalFx += node.fx; + totalFy += node.fy; + } + var correctionFx = totalFx / nodeIndices.length; + var correctionFy = totalFy / nodeIndices.length; + + for (i = 0; i < nodeIndices.length; i++) { + var node = nodes[nodeIndices[i]]; + node.fx -= correctionFx; + node.fy -= correctionFy; + } + }; +/***/ }, +/* 70 */ +/***/ function(module, exports, __webpack_require__) { /** - * This function get the distribution of levels based on hubsize + * This function calculates the forces the nodes apply on eachother based on a gravitational model. + * The Barnes Hut method is used to speed up this N-body simulation. * - * @returns {Object} * @private */ - exports._getDistribution = function() { - var distribution = {}; - var nodeId, node, level; + exports._calculateNodeForces = function() { + if (this.constants.physics.barnesHut.gravitationalConstant != 0) { + var node; + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; + var nodeCount = nodeIndices.length; - // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. - // the fix of X is removed after the x value has been set. - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.xFixed = true; - node.yFixed = true; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - else { - node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - if (distribution[node.level] === undefined) { - distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; - } - distribution[node.level].amount += 1; - distribution[node.level].nodes[nodeId] = node; - } - } + this._formBarnesHutTree(nodes,nodeIndices); - // determine the largest amount of nodes of all levels - var maxCount = 0; - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - if (maxCount < distribution[level].amount) { - maxCount = distribution[level].amount; - } - } - } + var barnesHutTree = this.barnesHutTree; - // set the initial position and spacing of each nodes accordingly - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; - distribution[level].nodeSpacing /= (distribution[level].amount + 1); - distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); + // place the nodes one by one recursively + for (var i = 0; i < nodeCount; i++) { + node = nodes[nodeIndices[i]]; + if (node.options.mass > 0) { + // starting with root is irrelevant, it never passes the BarnesHut condition + this._getForceContribution(barnesHutTree.root.children.NW,node); + this._getForceContribution(barnesHutTree.root.children.NE,node); + this._getForceContribution(barnesHutTree.root.children.SW,node); + this._getForceContribution(barnesHutTree.root.children.SE,node); + } } } - - return distribution; }; /** - * this function allocates nodes in levels based on the recursive branching from the largest hubs. + * This function traverses the barnesHutTree. It checks when it can approximate distant nodes with their center of mass. + * If a region contains a single node, we check if it is not itself, then we apply the force. * - * @param hubsize + * @param parentBranch + * @param node * @private */ - exports._determineLevels = function(hubsize) { - var nodeId, node; + exports._getForceContribution = function(parentBranch,node) { + // we get no force contribution from an empty region + if (parentBranch.childrenCount > 0) { + var dx,dy,distance; - // determine hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.edges.length == hubsize) { - node.level = 0; + // get the distance from the center of mass to the node. + dx = parentBranch.centerOfMass.x - node.x; + dy = parentBranch.centerOfMass.y - node.y; + distance = Math.sqrt(dx * dx + dy * dy); + + // BarnesHut condition + // original condition : s/d < thetaInverted = passed === d/s > 1/theta = passed + // calcSize = 1/s --> d * 1/s > 1/theta = passed + if (distance * parentBranch.calcSize > this.constants.physics.barnesHut.thetaInverted) { + // duplicate code to reduce function calls to speed up program + if (distance == 0) { + distance = 0.1*Math.random(); + dx = distance; } + var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.options.mass / (distance * distance * distance); + var fx = dx * gravityForce; + var fy = dy * gravityForce; + node.fx += fx; + node.fy += fy; } - } - - // branch from hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level == 0) { - this._setLevel(1,node.edges,node.id); + else { + // Did not pass the condition, go into children if available + if (parentBranch.childrenCount == 4) { + this._getForceContribution(parentBranch.children.NW,node); + this._getForceContribution(parentBranch.children.NE,node); + this._getForceContribution(parentBranch.children.SW,node); + this._getForceContribution(parentBranch.children.SE,node); + } + else { // parentBranch must have only one node, if it was empty we wouldnt be here + if (parentBranch.children.data.id != node.id) { // if it is not self + // duplicate code to reduce function calls to speed up program + if (distance == 0) { + distance = 0.5*Math.random(); + dx = distance; + } + var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.options.mass / (distance * distance * distance); + var fx = dx * gravityForce; + var fy = dy * gravityForce; + node.fx += fx; + node.fy += fy; + } } } } }; - - /** - * this function allocates nodes in levels based on the direction of the edges + * This function constructs the barnesHut tree recursively. It creates the root, splits it and starts placing the nodes. * - * @param hubsize + * @param nodes + * @param nodeIndices * @private */ - exports._determineLevelsDirected = function() { - var nodeId, node, firstNode; - var minLevel = 10000; + exports._formBarnesHutTree = function(nodes,nodeIndices) { + var node; + var nodeCount = nodeIndices.length; - // set first node to source - firstNode = this.nodes[this.nodeIndices[0]]; - firstNode.level = minLevel; - this._setLevelDirected(minLevel,firstNode.edges,firstNode.id); + var minX = Number.MAX_VALUE, + minY = Number.MAX_VALUE, + maxX =-Number.MAX_VALUE, + maxY =-Number.MAX_VALUE; - // get the minimum level - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - minLevel = node.level < minLevel ? node.level : minLevel; + // get the range of the nodes + for (var i = 0; i < nodeCount; i++) { + var x = nodes[nodeIndices[i]].x; + var y = nodes[nodeIndices[i]].y; + if (nodes[nodeIndices[i]].options.mass > 0) { + if (x < minX) { minX = x; } + if (x > maxX) { maxX = x; } + if (y < minY) { minY = y; } + if (y > maxY) { maxY = y; } } } + // make the range a square + var sizeDiff = Math.abs(maxX - minX) - Math.abs(maxY - minY); // difference between X and Y + if (sizeDiff > 0) {minY -= 0.5 * sizeDiff; maxY += 0.5 * sizeDiff;} // xSize > ySize + else {minX += 0.5 * sizeDiff; maxX -= 0.5 * sizeDiff;} // xSize < ySize - // subtract the minimum from the set so we have a range starting from 0 - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.level -= minLevel; + + var minimumTreeSize = 1e-5; + var rootSize = Math.max(minimumTreeSize,Math.abs(maxX - minX)); + var halfRootSize = 0.5 * rootSize; + var centerX = 0.5 * (minX + maxX), centerY = 0.5 * (minY + maxY); + + // construct the barnesHutTree + var barnesHutTree = { + root:{ + centerOfMass: {x:0, y:0}, + mass:0, + range: { + minX: centerX-halfRootSize,maxX:centerX+halfRootSize, + minY: centerY-halfRootSize,maxY:centerY+halfRootSize + }, + size: rootSize, + calcSize: 1 / rootSize, + children: { data:null}, + maxWidth: 0, + level: 0, + childrenCount: 4 + } + }; + this._splitBranch(barnesHutTree.root); + + // place the nodes one by one recursively + for (i = 0; i < nodeCount; i++) { + node = nodes[nodeIndices[i]]; + if (node.options.mass > 0) { + this._placeInTree(barnesHutTree.root,node); } } + + // make global + this.barnesHutTree = barnesHutTree }; /** - * Since hierarchical layout does not support: - * - smooth curves (based on the physics), - * - clustering (based on dynamic node counts) - * - * We disable both features so there will be no problems. + * this updates the mass of a branch. this is increased by adding a node. * + * @param parentBranch + * @param node * @private */ - exports._changeConstants = function() { - this.constants.clustering.enabled = false; - this.constants.physics.barnesHut.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this._loadSelectedForceSolver(); - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.dynamic = false; - } - this._configureSmoothCurves(); + exports._updateBranchMass = function(parentBranch, node) { + var totalMass = parentBranch.mass + node.options.mass; + var totalMassInv = 1/totalMass; - var config = this.constants.hierarchicalLayout; - config.levelSeparation = Math.abs(config.levelSeparation); - if (config.direction == "RL" || config.direction == "DU") { - config.levelSeparation *= -1; - } + parentBranch.centerOfMass.x = parentBranch.centerOfMass.x * parentBranch.mass + node.x * node.options.mass; + parentBranch.centerOfMass.x *= totalMassInv; + + parentBranch.centerOfMass.y = parentBranch.centerOfMass.y * parentBranch.mass + node.y * node.options.mass; + parentBranch.centerOfMass.y *= totalMassInv; + + parentBranch.mass = totalMass; + var biggestSize = Math.max(Math.max(node.height,node.radius),node.width); + parentBranch.maxWidth = (parentBranch.maxWidth < biggestSize) ? biggestSize : parentBranch.maxWidth; - if (config.direction == "RL" || config.direction == "LR") { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "vertical"; - } - } - else { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "horizontal"; - } - } }; /** - * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes - * on a X position that ensures there will be no overlap. + * determine in which branch the node will be placed. * - * @param edges - * @param parentId - * @param distribution - * @param parentLevel + * @param parentBranch + * @param node + * @param skipMassUpdate * @private */ - exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } + exports._placeInTree = function(parentBranch,node,skipMassUpdate) { + if (skipMassUpdate != true || skipMassUpdate === undefined) { + // update the mass of the branch. + this._updateBranchMass(parentBranch,node); + } - // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. - var nodeMoved = false; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (childNode.xFixed && childNode.level > parentLevel) { - childNode.xFixed = false; - childNode.x = distribution[childNode.level].minPos; - nodeMoved = true; - } + if (parentBranch.children.NW.range.maxX > node.x) { // in NW or SW + if (parentBranch.children.NW.range.maxY > node.y) { // in NW + this._placeInRegion(parentBranch,node,"NW"); } - else { - if (childNode.yFixed && childNode.level > parentLevel) { - childNode.yFixed = false; - childNode.y = distribution[childNode.level].minPos; - nodeMoved = true; - } + else { // in SW + this._placeInRegion(parentBranch,node,"SW"); } - - if (nodeMoved == true) { - distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; - if (childNode.edges.length > 1) { - this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); - } + } + else { // in NE or SE + if (parentBranch.children.NW.range.maxY > node.y) { // in NE + this._placeInRegion(parentBranch,node,"NE"); + } + else { // in SE + this._placeInRegion(parentBranch,node,"SE"); } } }; /** - * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. + * actually place the node in a region (or branch) * - * @param level - * @param edges - * @param parentId + * @param parentBranch + * @param node + * @param region * @private */ - exports._setLevel = function(level, edges, parentId) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } - if (childNode.level == -1 || childNode.level > level) { - childNode.level = level; - if (childNode.edges.length > 1) { - this._setLevel(level+1, childNode.edges, childNode.id); + exports._placeInRegion = function(parentBranch,node,region) { + switch (parentBranch.children[region].childrenCount) { + case 0: // place node here + parentBranch.children[region].children.data = node; + parentBranch.children[region].childrenCount = 1; + this._updateBranchMass(parentBranch.children[region],node); + break; + case 1: // convert into children + // if there are two nodes exactly overlapping (on init, on opening of cluster etc.) + // we move one node a pixel and we do not put it in the tree. + if (parentBranch.children[region].children.data.x == node.x && + parentBranch.children[region].children.data.y == node.y) { + node.x += Math.random(); + node.y += Math.random(); } - } + else { + this._splitBranch(parentBranch.children[region]); + this._placeInTree(parentBranch.children[region],node); + } + break; + case 4: // place in branch + this._placeInTree(parentBranch.children[region],node); + break; } }; /** - * this function is called recursively to enumerate the branched of the first node and give each node a level based on edge direction + * this function splits a branch into 4 sub branches. If the branch contained a node, we place it in the subbranch + * after the split is complete. * - * @param level - * @param edges - * @param parentId + * @param parentBranch * @private */ - exports._setLevelDirected = function(level, edges, parentId) { - this.nodes[parentId].hierarchyEnumerated = true; - var childNode, direction; - for (var i = 0; i < edges.length; i++) { - direction = 1; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - direction = -1; - } - else { - childNode = edges[i].to; - } - if (childNode.level == -1) { - childNode.level = level + direction; - } + exports._splitBranch = function(parentBranch) { + // if the branch is shaded with a node, replace the node in the new subset. + var containedNode = null; + if (parentBranch.childrenCount == 1) { + containedNode = parentBranch.children.data; + parentBranch.mass = 0; parentBranch.centerOfMass.x = 0; parentBranch.centerOfMass.y = 0; } + parentBranch.childrenCount = 4; + parentBranch.children.data = null; + this._insertRegion(parentBranch,"NW"); + this._insertRegion(parentBranch,"NE"); + this._insertRegion(parentBranch,"SW"); + this._insertRegion(parentBranch,"SE"); - for (var i = 0; i < edges.length; i++) { - if (edges[i].toId == parentId) {childNode = edges[i].from;} - else {childNode = edges[i].to;} - - if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { - this._setLevelDirected(childNode.level, childNode.edges, childNode.id); - } + if (containedNode != null) { + this._placeInTree(parentBranch,containedNode); } }; /** - * Unfix nodes + * This function subdivides the region into four new segments. + * Specifically, this inserts a single new segment. + * It fills the children section of the parentBranch * + * @param parentBranch + * @param region + * @param parentRange * @private */ - exports._restoreNodes = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.nodes[nodeId].xFixed = false; - this.nodes[nodeId].yFixed = false; - } + exports._insertRegion = function(parentBranch, region) { + var minX,maxX,minY,maxY; + var childSize = 0.5 * parentBranch.size; + switch (region) { + case "NW": + minX = parentBranch.range.minX; + maxX = parentBranch.range.minX + childSize; + minY = parentBranch.range.minY; + maxY = parentBranch.range.minY + childSize; + break; + case "NE": + minX = parentBranch.range.minX + childSize; + maxX = parentBranch.range.maxX; + minY = parentBranch.range.minY; + maxY = parentBranch.range.minY + childSize; + break; + case "SW": + minX = parentBranch.range.minX; + maxX = parentBranch.range.minX + childSize; + minY = parentBranch.range.minY + childSize; + maxY = parentBranch.range.maxY; + break; + case "SE": + minX = parentBranch.range.minX + childSize; + maxX = parentBranch.range.maxX; + minY = parentBranch.range.minY + childSize; + maxY = parentBranch.range.maxY; + break; } - }; - - -/***/ }, -/* 70 */ -/***/ function(module, exports, __webpack_require__) { - // English - exports['en'] = { - edit: 'Edit', - del: 'Delete selected', - back: 'Back', - addNode: 'Add Node', - addEdge: 'Add Edge', - editNode: 'Edit Node', - editEdge: 'Edit Edge', - addDescription: 'Click in an empty space to place a new node.', - edgeDescription: 'Click on a node and drag the edge to another node to connect them.', - editEdgeDescription: 'Click on the control points and drag them to a node to connect to it.', - createEdgeError: 'Cannot link edges to a cluster.', - deleteClusterError: 'Clusters cannot be deleted.' - }; - exports['en_EN'] = exports['en']; - exports['en_US'] = exports['en']; - // Dutch - exports['nl'] = { - edit: 'Wijzigen', - del: 'Selectie verwijderen', - back: 'Terug', - addNode: 'Node toevoegen', - addEdge: 'Link toevoegen', - editNode: 'Node wijzigen', - editEdge: 'Link wijzigen', - addDescription: 'Klik op een leeg gebied om een nieuwe node te maken.', - edgeDescription: 'Klik op een node en sleep de link naar een andere node om ze te verbinden.', - editEdgeDescription: 'Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.', - createEdgeError: 'Kan geen link maken naar een cluster.', - deleteClusterError: 'Clusters kunnen niet worden verwijderd.' + parentBranch.children[region] = { + centerOfMass:{x:0,y:0}, + mass:0, + range:{minX:minX,maxX:maxX,minY:minY,maxY:maxY}, + size: 0.5 * parentBranch.size, + calcSize: 2 * parentBranch.calcSize, + children: {data:null}, + maxWidth: 0, + level: parentBranch.level+1, + childrenCount: 0 + }; }; - exports['nl_NL'] = exports['nl']; - exports['nl_BE'] = exports['nl']; - -/***/ }, -/* 71 */ -/***/ function(module, exports, __webpack_require__) { /** - * Canvas shapes used by Network + * This function is for debugging purposed, it draws the tree. + * + * @param ctx + * @param color + * @private */ - if (typeof CanvasRenderingContext2D !== 'undefined') { - - /** - * Draw a circle shape - */ - CanvasRenderingContext2D.prototype.circle = function(x, y, r) { - this.beginPath(); - this.arc(x, y, r, 0, 2*Math.PI, false); - }; - - /** - * Draw a square shape - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r size, width and height of the square - */ - CanvasRenderingContext2D.prototype.square = function(x, y, r) { - this.beginPath(); - this.rect(x - r, y - r, r * 2, r * 2); - }; - - /** - * Draw a triangle shape - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius, half the length of the sides of the triangle - */ - CanvasRenderingContext2D.prototype.triangle = function(x, y, r) { - // http://en.wikipedia.org/wiki/Equilateral_triangle - this.beginPath(); - - var s = r * 2; - var s2 = s / 2; - var ir = Math.sqrt(3) / 6 * s; // radius of inner circle - var h = Math.sqrt(s * s - s2 * s2); // height - - this.moveTo(x, y - (h - ir)); - this.lineTo(x + s2, y + ir); - this.lineTo(x - s2, y + ir); - this.lineTo(x, y - (h - ir)); - this.closePath(); - }; - - /** - * Draw a triangle shape in downward orientation - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius - */ - CanvasRenderingContext2D.prototype.triangleDown = function(x, y, r) { - // http://en.wikipedia.org/wiki/Equilateral_triangle - this.beginPath(); - - var s = r * 2; - var s2 = s / 2; - var ir = Math.sqrt(3) / 6 * s; // radius of inner circle - var h = Math.sqrt(s * s - s2 * s2); // height - - this.moveTo(x, y + (h - ir)); - this.lineTo(x + s2, y - ir); - this.lineTo(x - s2, y - ir); - this.lineTo(x, y + (h - ir)); - this.closePath(); - }; - - /** - * Draw a star shape, a star with 5 points - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius, half the length of the sides of the triangle - */ - CanvasRenderingContext2D.prototype.star = function(x, y, r) { - // http://www.html5canvastutorials.com/labs/html5-canvas-star-spinner/ - this.beginPath(); - - for (var n = 0; n < 10; n++) { - var radius = (n % 2 === 0) ? r * 1.3 : r * 0.5; - this.lineTo( - x + radius * Math.sin(n * 2 * Math.PI / 10), - y - radius * Math.cos(n * 2 * Math.PI / 10) - ); - } - - this.closePath(); - }; - - /** - * http://stackoverflow.com/questions/1255512/how-to-draw-a-rounded-rectangle-on-html-canvas - */ - CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) { - var r2d = Math.PI/180; - if( w - ( 2 * r ) < 0 ) { r = ( w / 2 ); } //ensure that the radius isn't too large for x - if( h - ( 2 * r ) < 0 ) { r = ( h / 2 ); } //ensure that the radius isn't too large for y - this.beginPath(); - this.moveTo(x+r,y); - this.lineTo(x+w-r,y); - this.arc(x+w-r,y+r,r,r2d*270,r2d*360,false); - this.lineTo(x+w,y+h-r); - this.arc(x+w-r,y+h-r,r,0,r2d*90,false); - this.lineTo(x+r,y+h); - this.arc(x+r,y+h-r,r,r2d*90,r2d*180,false); - this.lineTo(x,y+r); - this.arc(x+r,y+r,r,r2d*180,r2d*270,false); - }; - - /** - * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - */ - CanvasRenderingContext2D.prototype.ellipse = function(x, y, w, h) { - var kappa = .5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle - - this.beginPath(); - this.moveTo(x, ym); - this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - }; - - - - /** - * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - */ - CanvasRenderingContext2D.prototype.database = function(x, y, w, h) { - var f = 1/3; - var wEllipse = w; - var hEllipse = h * f; + exports._drawTree = function(ctx,color) { + if (this.barnesHutTree !== undefined) { - var kappa = .5522848, - ox = (wEllipse / 2) * kappa, // control point offset horizontal - oy = (hEllipse / 2) * kappa, // control point offset vertical - xe = x + wEllipse, // x-end - ye = y + hEllipse, // y-end - xm = x + wEllipse / 2, // x-middle - ym = y + hEllipse / 2, // y-middle - ymb = y + (h - hEllipse/2), // y-midlle, bottom ellipse - yeb = y + h; // y-end, bottom ellipse + ctx.lineWidth = 1; - this.beginPath(); - this.moveTo(xe, ym); + this._drawBranch(this.barnesHutTree.root,ctx,color); + } + }; - this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + /** + * This function is for debugging purposes. It draws the branches recursively. + * + * @param branch + * @param ctx + * @param color + * @private + */ + exports._drawBranch = function(branch,ctx,color) { + if (color === undefined) { + color = "#FF0000"; + } - this.lineTo(xe, ymb); + if (branch.childrenCount == 4) { + this._drawBranch(branch.children.NW,ctx); + this._drawBranch(branch.children.NE,ctx); + this._drawBranch(branch.children.SE,ctx); + this._drawBranch(branch.children.SW,ctx); + } + ctx.strokeStyle = color; + ctx.beginPath(); + ctx.moveTo(branch.range.minX,branch.range.minY); + ctx.lineTo(branch.range.maxX,branch.range.minY); + ctx.stroke(); - this.bezierCurveTo(xe, ymb + oy, xm + ox, yeb, xm, yeb); - this.bezierCurveTo(xm - ox, yeb, x, ymb + oy, x, ymb); + ctx.beginPath(); + ctx.moveTo(branch.range.maxX,branch.range.minY); + ctx.lineTo(branch.range.maxX,branch.range.maxY); + ctx.stroke(); - this.lineTo(x, ym); - }; + ctx.beginPath(); + ctx.moveTo(branch.range.maxX,branch.range.maxY); + ctx.lineTo(branch.range.minX,branch.range.maxY); + ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(branch.range.minX,branch.range.maxY); + ctx.lineTo(branch.range.minX,branch.range.minY); + ctx.stroke(); - /** - * Draw an arrow point (no line) + /* + if (branch.mass > 0) { + ctx.circle(branch.centerOfMass.x, branch.centerOfMass.y, 3*branch.mass); + ctx.stroke(); + } */ - CanvasRenderingContext2D.prototype.arrow = function(x, y, angle, length) { - // tail - var xt = x - length * Math.cos(angle); - var yt = y - length * Math.sin(angle); - - // inner tail - // TODO: allow to customize different shapes - var xi = x - length * 0.9 * Math.cos(angle); - var yi = y - length * 0.9 * Math.sin(angle); - - // left - var xl = xt + length / 3 * Math.cos(angle + 0.5 * Math.PI); - var yl = yt + length / 3 * Math.sin(angle + 0.5 * Math.PI); - - // right - var xr = xt + length / 3 * Math.cos(angle - 0.5 * Math.PI); - var yr = yt + length / 3 * Math.sin(angle - 0.5 * Math.PI); + }; - this.beginPath(); - this.moveTo(x, y); - this.lineTo(xl, yl); - this.lineTo(xi, yi); - this.lineTo(xr, yr); - this.closePath(); - }; - /** - * Sets up the dashedLine functionality for drawing - * Original code came from http://stackoverflow.com/questions/4576724/dotted-stroke-in-canvas - * @author David Jordan - * @date 2012-08-08 - */ - CanvasRenderingContext2D.prototype.dashedLine = function(x,y,x2,y2,dashArray){ - if (!dashArray) dashArray=[10,5]; - if (dashLength==0) dashLength = 0.001; // Hack for Safari - var dashCount = dashArray.length; - this.moveTo(x, y); - var dx = (x2-x), dy = (y2-y); - var slope = dy/dx; - var distRemaining = Math.sqrt( dx*dx + dy*dy ); - var dashIndex=0, draw=true; - while (distRemaining>=0.1){ - var dashLength = dashArray[dashIndex++%dashCount]; - if (dashLength > distRemaining) dashLength = distRemaining; - var xStep = Math.sqrt( dashLength*dashLength / (1 + slope*slope) ); - if (dx<0) xStep = -xStep; - x += xStep; - y += slope*xStep; - this[draw ? 'lineTo' : 'moveTo'](x,y); - distRemaining -= dashLength; - draw = !draw; - } - }; +/***/ }, +/* 71 */ +/***/ function(module, exports, __webpack_require__) { - // TODO: add diamond shape + module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + module.children = []; + module.webpackPolyfill = 1; + } + return module; } diff --git a/dist/vis.map b/dist/vis.map index 9e803a99..585b0f0b 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","groupFromTarget","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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AWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAO3Ir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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","groupFromTarget","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAA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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 0166401d..1d45f828 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.10.1-SNAPSHOT - * @date 2015-03-03 + * @date 2015-03-04 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -25,15 +25,15 @@ "use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var D=this.yLabel;D.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(D,o.x,o.y));var M=this.zLabel;M.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(M,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+D.x/M/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[]; var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step); -break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?o>0?Math.max(-s,0):-e:0>s?Math.min(-s,o-s-e-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n) -}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l=this.body.util.getScale(),c=this.body.util.getStep(),p={start:i?i(d,l,c):d,content:"new item"};if("range"===this.options.type){var u=this.body.util.toTime(h+this.props.width/5);p.end=i?i(u,l,c):u}p[this.itemsData._fieldId]=n.randomUUID();var m=this.groupFromTarget(t);m&&(p.group=m.groupId),this.options.onAdd(p,function(t){t&&e.itemsData.getDataSet().add(t) -})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture.center.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage; -break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=S.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=S.DELIMITER);var i=E+n();if(C[i])return N=S.DELIMITER,k=i,o(),void o();if(C[E])return N=S.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=S.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=S.IDENTIFIER)}for(N=S.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==S.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=S.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=S.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==S.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=S.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=S.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=S.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),D(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var S={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=S.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=M},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",D=t.length,M=0;D-1>M;M++)s=0==M?t[0]:t[M-1],o=t[M],n=t[M+1],r=D>M+2?t[M+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;os;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(M,d),a&&(d.changedLength=h,d.eventType=a,s.call(M,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(M,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return D.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||D.matchType(u,s)?o=u:D.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return M.stopDetect()}}}},D=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},M=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?M.startDetect(i,t):t.eventType==_&&M.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=M.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=M.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=M.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=M.current,h=M.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Ie.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Ce.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return b(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){Di[t]||(d(e),Di[t]=!0)}function p(t,e){return function(i){return w(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function m(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Si===!1&&(Si=!0,Ce.updateOffset(this),Si=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Di={},Mi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Si=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o; -return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=M(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Mi.length-1;Oe>=0;--Oe)I(Mi[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(De(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(De(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Me(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); +break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?o>0?Math.max(-s,0):-e:0>s?Math.min(-s,o-s-e-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n) +}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizec;c++){var u=this.visibleItems[c];u.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l=this.body.util.getScale(),c=this.body.util.getStep(),p={start:i?i(d,l,c):d,content:"new item"}; +if("range"===this.options.type){var u=this.body.util.toTime(h+this.props.width/5);p.end=i?i(u,l,c):u}p[this.itemsData._fieldId]=n.randomUUID();var m=this.groupFromTarget(t);m&&(p.group=m.groupId),this.options.onAdd(p,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture.center.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox; +break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=S.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=S.DELIMITER);var i=E+n();if(C[i])return N=S.DELIMITER,k=i,o(),void o();if(C[E])return N=S.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=S.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=S.IDENTIFIER)}for(N=S.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==S.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=S.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=S.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==S.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=S.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=S.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=S.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),D(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var S={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=S.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=M},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",D=t.length,M=0;D-1>M;M++)s=0==M?t[0]:t[M-1],o=t[M],n=t[M+1],r=D>M+2?t[M+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Si===!1&&(Si=!0,Ce.updateOffset(this),Si=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Di={},Mi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Si=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=M(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Mi.length-1;Oe>=0;--Oe)I(Mi[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(De(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(De(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Me(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){M.register(t)}),w.onTouch(a.DOCUMENT,v,M.detect),w.onTouch(a.DOCUMENT,y,M.detect),a.READY=!0)}var a=function S(t,e){return new S.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25; +var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(M,d),a&&(d.changedLength=h,d.eventType=a,s.call(M,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(M,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return D.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||D.matchType(u,s)?o=u:D.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return M.stopDetect()}}}},D=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},M=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?M.startDetect(i,t):t.eventType==_&&M.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=M.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=M.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=M.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=M.current,h=M.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/docs/timeline.html b/docs/timeline.html index c756e6a5..2d5309dc 100644 --- a/docs/timeline.html +++ b/docs/timeline.html @@ -664,18 +664,19 @@ var options = { - orientation diff --git a/examples/timeline/35_item_ordering.html b/examples/timeline/35_item_ordering.html index 3fcebe1b..13719341 100644 --- a/examples/timeline/35_item_ordering.html +++ b/examples/timeline/35_item_ordering.html @@ -48,7 +48,7 @@ id: i, content: 'Item ' + i, start: date.clone(), - end: date.clone().add(2 + Math.round(Math.random() * 2), 'hour') + end: date.clone().add(4, 'hour') }); } diff --git a/lib/timeline/component/Group.js b/lib/timeline/component/Group.js index 4a2cea0e..65c1786c 100644 --- a/lib/timeline/component/Group.js +++ b/lib/timeline/component/Group.js @@ -148,8 +148,6 @@ Group.prototype.getLabelWidth = function() { Group.prototype.redraw = function(range, margin, restack) { var resized = false; - this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - // force recalculation of the height of the items when the marker height changed // (due to the Timeline being attached to the DOM or changed from display:none to visible) var markerHeight = this.dom.marker.clientHeight; @@ -165,18 +163,41 @@ Group.prototype.redraw = function(range, margin, restack) { } // reposition visible items vertically - var customOrderedItems = null; - if (this.itemSet.options.stack) { // TODO: ugly way to access options... - if (typeof this.itemSet.options.order === 'function' || false) { - customOrderedItems = this._getCustomOrderedItems(); - stack.stack(customOrderedItems, margin, true); + if (typeof this.itemSet.options.order === 'function') { + // a custom order function + + if (restack) { + // brute force restack of all items + + // show all items + var me = this; + util.forEach(this.items, function (item) { + if (!item.displayed) { + item.redraw(); + me.visibleItems.push(item); + } + item.repositionX(); + }); + + // order all items and force a restacking + var customOrderedItems = this.orderedItems.byStart.slice().sort(function (a, b) { + return me.itemSet.options.order(a.data, b.data); + }); + stack.stack(customOrderedItems, margin, true /* restack=true */); } - else { + + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); + } + else { + // no custom order function, lazy stacking + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); + + if (this.itemSet.options.stack) { // TODO: ugly way to access options... stack.stack(this.visibleItems, margin, restack); } - } - else { // no stacking - stack.nostack(this.visibleItems, margin, this.subgroups); + else { // no stacking + stack.nostack(this.visibleItems, margin, this.subgroups); + } } // recalculate the height of the group @@ -490,23 +511,6 @@ Group.prototype._updateVisibleItems = function(orderedItems, oldVisibleItems, ra return visibleItems; }; -Group.prototype._getCustomOrderedItems = function () { - var customOrderedItems = this.orderedItems.byStart.filter(function (item) { - return item.height !== 0 || item.width !== 0; - }); - var me = this; - - customOrderedItems.sort(function (a, b) { - return me.itemSet.options.order(a.data, b.data); - }); - - customOrderedItems.forEach(function (item) { - item.repositionX(); - }); - - return customOrderedItems; -}; - Group.prototype._traceVisible = function (initialPos, items, visibleItems, visibleItemsLookup, breakCondition) { var item; var i; diff --git a/lib/timeline/component/item/BoxItem.js b/lib/timeline/component/item/BoxItem.js index f04cd6cd..9d789a8b 100644 --- a/lib/timeline/component/item/BoxItem.js +++ b/lib/timeline/component/item/BoxItem.js @@ -151,9 +151,6 @@ BoxItem.prototype.hide = function() { if (dom.line.parentNode) dom.line.parentNode.removeChild(dom.line); if (dom.dot.parentNode) dom.dot.parentNode.removeChild(dom.dot); - this.top = null; - this.left = null; - this.displayed = false; } }; diff --git a/lib/timeline/component/item/PointItem.js b/lib/timeline/component/item/PointItem.js index 8ec6db21..aeaf127f 100644 --- a/lib/timeline/component/item/PointItem.js +++ b/lib/timeline/component/item/PointItem.js @@ -144,9 +144,6 @@ PointItem.prototype.hide = function() { this.dom.point.parentNode.removeChild(this.dom.point); } - this.top = null; - this.left = null; - this.displayed = false; } }; diff --git a/lib/timeline/component/item/RangeItem.js b/lib/timeline/component/item/RangeItem.js index d3964652..981ade80 100644 --- a/lib/timeline/component/item/RangeItem.js +++ b/lib/timeline/component/item/RangeItem.js @@ -140,9 +140,6 @@ RangeItem.prototype.hide = function() { box.parentNode.removeChild(box); } - this.top = null; - this.left = null; - this.displayed = false; } }; From b5f57c2dd3bbc760af97c67d33e51fba42e01950 Mon Sep 17 00:00:00 2001 From: jos Date: Wed, 4 Mar 2015 15:00:06 +0100 Subject: [PATCH 12/43] Fixed a bug in the configuration option `config` when zooming out a lot when using range items --- HISTORY.md | 2 +- dist/vis.js | 33 ++++++++++++++---------- dist/vis.map | 2 +- dist/vis.min.js | 4 +-- docs/timeline.html | 2 +- examples/timeline/35_item_ordering.html | 2 +- lib/timeline/component/Group.js | 3 ++- lib/timeline/component/item/BoxItem.js | 9 +++---- lib/timeline/component/item/RangeItem.js | 21 ++++++++++----- 9 files changed, 44 insertions(+), 34 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 278bafe4..f4e9995b 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -23,7 +23,7 @@ http://visjs.org - Implemented creating new range items by dragging in an empty space with the ctrl key down. - Implemented configuration option `order: function` to define a custom ordering - for the items (see #538, #324). + for the items (see #538, #234). - Fixed not property initializing with a DataView for groups. - Merged add custom timebar functionality, thanks @aytech! - Fixed #664: end of item not restored when canceling a move event. diff --git a/dist/vis.js b/dist/vis.js index a33d5a5d..6110c26a 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -9860,9 +9860,6 @@ return /******/ (function(modules) { // webpackBootstrap var start = this.conversion.toScreen(this.data.start); var align = this.options.align; var left; - var box = this.dom.box; - var line = this.dom.line; - var dot = this.dom.dot; // calculate left position of the box if (align == 'right') { @@ -9877,13 +9874,13 @@ return /******/ (function(modules) { // webpackBootstrap } // reposition box - box.style.left = this.left + 'px'; + this.dom.box.style.left = this.left + 'px'; // reposition line - line.style.left = (start - this.props.line.width / 2) + 'px'; + this.dom.line.style.left = (start - this.props.line.width / 2) + 'px'; // reposition dot - dot.style.left = (start - this.props.dot.width / 2) + 'px'; + this.dom.dot.style.left = (start - this.props.dot.width / 2) + 'px'; }; /** @@ -10256,21 +10253,28 @@ return /******/ (function(modules) { // webpackBootstrap /** * Reposition the item horizontally + * @param {boolean} [limitSize=true] If true (default), the width of the range + * item will be limited, as the browser cannot + * display very wide divs. This means though + * that the applied left and width may + * not correspond to the ranges start and end * @Override */ - RangeItem.prototype.repositionX = function() { + RangeItem.prototype.repositionX = function(limitSize) { var parentWidth = this.parent.width; var start = this.conversion.toScreen(this.data.start); var end = this.conversion.toScreen(this.data.end); var contentLeft; var contentWidth; - // limit the width of the this, as browsers cannot draw very wide divs - if (start < -parentWidth) { - start = -parentWidth; - } - if (end > 2 * parentWidth) { - end = 2 * parentWidth; + // limit the width of the range, as browsers cannot draw very wide divs + if (limitSize === undefined || limitSize === true) { + if (start < -parentWidth) { + start = -parentWidth; + } + if (end > 2 * parentWidth) { + end = 2 * parentWidth; + } } var boxWidth = Math.max(end - start, 1); @@ -11869,12 +11873,13 @@ return /******/ (function(modules) { // webpackBootstrap // show all items var me = this; + var limitSize = false; util.forEach(this.items, function (item) { if (!item.displayed) { item.redraw(); me.visibleItems.push(item); } - item.repositionX(); + item.repositionX(limitSize); }); // order all items and force a restacking diff --git a/dist/vis.map b/dist/vis.map index 585b0f0b..5712c4c6 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","groupFromTarget","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAA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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","groupFromTarget","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAA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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 1d45f828..f6d35879 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -25,8 +25,8 @@ "use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var D=this.yLabel;D.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(D,o.x,o.y));var M=this.zLabel;M.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(M,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+D.x/M/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[]; var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step); -break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?o>0?Math.max(-s,0):-e:0>s?Math.min(-s,o-s-e-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n) -}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizec;c++){var u=this.visibleItems[c];u.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l=this.body.util.getScale(),c=this.body.util.getStep(),p={start:i?i(d,l,c):d,content:"new item"}; +break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n) +}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l=this.body.util.getScale(),c=this.body.util.getStep(),p={start:i?i(d,l,c):d,content:"new item"}; if("range"===this.options.type){var u=this.body.util.toTime(h+this.props.width/5);p.end=i?i(u,l,c):u}p[this.itemsData._fieldId]=n.randomUUID();var m=this.groupFromTarget(t);m&&(p.group=m.groupId),this.options.onAdd(p,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture.center.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox; diff --git a/docs/timeline.html b/docs/timeline.html index 2d5309dc..e6cb1ca3 100644 --- a/docs/timeline.html +++ b/docs/timeline.html @@ -674,7 +674,7 @@ var options = { order is called with two arguments containing the data of two items to be compared.

-

IMPORTANT: Custom ordering is not suitable for large amounts of items. Keep the number of items in this configuration limited to not more than a few hundred.

+

WARNING: Use with caution. Custom ordering is not suitable for large amounts of items. On load, the Timeline will render all items once to determine their width and height. Keep the number of items in this configuration limited to a maximum of a few hundred items.

diff --git a/examples/timeline/35_item_ordering.html b/examples/timeline/35_item_ordering.html index 13719341..e4abc14f 100644 --- a/examples/timeline/35_item_ordering.html +++ b/examples/timeline/35_item_ordering.html @@ -42,7 +42,7 @@ // Create a DataSet (allows two way data-binding) var items = new vis.DataSet(); var date = vis.moment('2015-03-02'); - for (var i = 0; i < 20; i++) { + for (var i = 0; i < 100; i++) { date.add(Math.round(Math.random() * 2), 'hour'); items.add({ id: i, diff --git a/lib/timeline/component/Group.js b/lib/timeline/component/Group.js index 65c1786c..5d5a53be 100644 --- a/lib/timeline/component/Group.js +++ b/lib/timeline/component/Group.js @@ -171,12 +171,13 @@ Group.prototype.redraw = function(range, margin, restack) { // show all items var me = this; + var limitSize = false; util.forEach(this.items, function (item) { if (!item.displayed) { item.redraw(); me.visibleItems.push(item); } - item.repositionX(); + item.repositionX(limitSize); }); // order all items and force a restacking diff --git a/lib/timeline/component/item/BoxItem.js b/lib/timeline/component/item/BoxItem.js index 9d789a8b..55a21eb4 100644 --- a/lib/timeline/component/item/BoxItem.js +++ b/lib/timeline/component/item/BoxItem.js @@ -163,9 +163,6 @@ BoxItem.prototype.repositionX = function() { var start = this.conversion.toScreen(this.data.start); var align = this.options.align; var left; - var box = this.dom.box; - var line = this.dom.line; - var dot = this.dom.dot; // calculate left position of the box if (align == 'right') { @@ -180,13 +177,13 @@ BoxItem.prototype.repositionX = function() { } // reposition box - box.style.left = this.left + 'px'; + this.dom.box.style.left = this.left + 'px'; // reposition line - line.style.left = (start - this.props.line.width / 2) + 'px'; + this.dom.line.style.left = (start - this.props.line.width / 2) + 'px'; // reposition dot - dot.style.left = (start - this.props.dot.width / 2) + 'px'; + this.dom.dot.style.left = (start - this.props.dot.width / 2) + 'px'; }; /** diff --git a/lib/timeline/component/item/RangeItem.js b/lib/timeline/component/item/RangeItem.js index 981ade80..4a2786ed 100644 --- a/lib/timeline/component/item/RangeItem.js +++ b/lib/timeline/component/item/RangeItem.js @@ -146,21 +146,28 @@ RangeItem.prototype.hide = function() { /** * Reposition the item horizontally + * @param {boolean} [limitSize=true] If true (default), the width of the range + * item will be limited, as the browser cannot + * display very wide divs. This means though + * that the applied left and width may + * not correspond to the ranges start and end * @Override */ -RangeItem.prototype.repositionX = function() { +RangeItem.prototype.repositionX = function(limitSize) { var parentWidth = this.parent.width; var start = this.conversion.toScreen(this.data.start); var end = this.conversion.toScreen(this.data.end); var contentLeft; var contentWidth; - // limit the width of the this, as browsers cannot draw very wide divs - if (start < -parentWidth) { - start = -parentWidth; - } - if (end > 2 * parentWidth) { - end = 2 * parentWidth; + // limit the width of the range, as browsers cannot draw very wide divs + if (limitSize === undefined || limitSize === true) { + if (start < -parentWidth) { + start = -parentWidth; + } + if (end > 2 * parentWidth) { + end = 2 * parentWidth; + } } var boxWidth = Math.max(end - start, 1); From c76de8a341ae663badcec153e8f715a0eeda0097 Mon Sep 17 00:00:00 2001 From: jos Date: Wed, 4 Mar 2015 15:02:58 +0100 Subject: [PATCH 13/43] Added a warning to the custom order example --- examples/timeline/35_item_ordering.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/timeline/35_item_ordering.html b/examples/timeline/35_item_ordering.html index e4abc14f..a1b560b6 100644 --- a/examples/timeline/35_item_ordering.html +++ b/examples/timeline/35_item_ordering.html @@ -25,10 +25,12 @@

To display and stack the items in a controlled order, you can provide a custom sorting function via the configuration option order. - This is only suitable for relatively small amounts of items, as it forces - the Timeline to order and re-stack all items with every redraw.

- +

+ WARNING: Custom ordering is only suitable for small amounts of items (up to a few + hundred), as the Timeline has to render all items once on load to + determine their width and height. +

From fc5e018fc39cf4b2ee2bedb626878fcb8294cde6 Mon Sep 17 00:00:00 2001 From: jos Date: Wed, 4 Mar 2015 15:30:33 +0100 Subject: [PATCH 14/43] Updated history --- HISTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/HISTORY.md b/HISTORY.md index f4e9995b..c4fa816e 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -33,6 +33,7 @@ http://visjs.org ### DataSet/DataView +- Implemented support for mapping field names. Thanks @spatialillusions. - Fixed #670: DataView not passing a data property on update events (see #670) From dd7f8048e0035ec86bba4de11f8b1768b72fc809 Mon Sep 17 00:00:00 2001 From: jos Date: Wed, 4 Mar 2015 17:02:36 +0100 Subject: [PATCH 15/43] Fixed #676: misalignment of background items when using subgroups and the group label's height is larger than the contents. --- HISTORY.md | 2 ++ dist/vis.js | 27 ++++++++++++++----- dist/vis.map | 2 +- dist/vis.min.js | 8 +++--- lib/timeline/component/item/BackgroundItem.js | 13 ++++++--- 5 files changed, 38 insertions(+), 14 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index c4fa816e..8509f2bd 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -29,6 +29,8 @@ http://visjs.org - Fixed #664: end of item not restored when canceling a move event. - Fixed #609: reduce the left/right dragarea when an item range is very small, so you can still move it as a whole. +- Fixed #676: misalignment of background items when using subgroups and the + group label's height is larger than the contents. ### DataSet/DataView diff --git a/dist/vis.js b/dist/vis.js index 6110c26a..aa74fc2c 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -2309,9 +2309,17 @@ return /******/ (function(modules) { // webpackBootstrap var filteredItem = {}; - for (var field in item) { - if (item.hasOwnProperty(field) && (fields.indexOf(field) != -1)) { - filteredItem[field] = item[field]; + if(Array.isArray(fields)){ + for (var field in item) { + if (item.hasOwnProperty(field) && (fields.indexOf(field) != -1)) { + filteredItem[field] = item[field]; + } + } + }else{ + for (var field in item) { + if (item.hasOwnProperty(field) && fields.hasOwnProperty(field)) { + filteredItem[fields[field]] = item[field]; + } } } @@ -9630,6 +9638,8 @@ return /******/ (function(modules) { // webpackBootstrap // special positioning for subgroups if (this.data.subgroup !== undefined) { + // TODO: instead of calculating the top position of the subgroups here for every BackgroundItem, calculate the top of the subgroup once in Itemset + var itemSubgroup = this.data.subgroup; var subgroups = this.parent.subgroups; var subgroupIndex = subgroups[itemSubgroup].index; @@ -9655,15 +9665,20 @@ return /******/ (function(modules) { // webpackBootstrap // and when the orientation is bottom: else { var newTop = this.parent.top; + var totalHeight = 0; for (var subgroup in subgroups) { if (subgroups.hasOwnProperty(subgroup)) { - if (subgroups[subgroup].visible == true && subgroups[subgroup].index > subgroupIndex) { - newTop += subgroups[subgroup].height + margin.item.vertical; + if (subgroups[subgroup].visible == true) { + var newHeight = subgroups[subgroup].height + margin.item.vertical; + totalHeight += newHeight; + if (subgroups[subgroup].index > subgroupIndex) { + newTop += newHeight; + } } } } height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; - this.dom.box.style.top = newTop + 'px'; + this.dom.box.style.top = (this.parent.height - totalHeight + newTop) + 'px'; this.dom.box.style.bottom = ''; } } diff --git a/dist/vis.map b/dist/vis.map index 5712c4c6..77880c61 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","groupFromTarget","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAA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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","groupFromTarget","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index f6d35879..66fee846 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -22,10 +22,10 @@ * * Vis.js may be distributed under either license. */ -"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var D=this.yLabel;D.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(D,o.x,o.y));var M=this.zLabel;M.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(M,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+D.x/M/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[]; -var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step); -break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n) +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);else for(var s in t)t.hasOwnProperty(s)&&e.hasOwnProperty(s)&&(i[e[s]]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var D=this.yLabel;D.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(D,o.x,o.y));var M=this.zLabel;M.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(M,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+D.x/M/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range"; +return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step); +break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n) }return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l=this.body.util.getScale(),c=this.body.util.getStep(),p={start:i?i(d,l,c):d,content:"new item"}; if("range"===this.options.type){var u=this.body.util.toTime(h+this.props.width/5);p.end=i?i(u,l,c):u}p[this.itemsData._fieldId]=n.randomUUID();var m=this.groupFromTarget(t);m&&(p.group=m.groupId),this.options.onAdd(p,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture.center.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i subgroupIndex) { - newTop += subgroups[subgroup].height + margin.item.vertical; + if (subgroups[subgroup].visible == true) { + var newHeight = subgroups[subgroup].height + margin.item.vertical; + totalHeight += newHeight; + if (subgroups[subgroup].index > subgroupIndex) { + newTop += newHeight; + } } } } height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; - this.dom.box.style.top = newTop + 'px'; + this.dom.box.style.top = (this.parent.height - totalHeight + newTop) + 'px'; this.dom.box.style.bottom = ''; } } From cfa3499ead1dd008bf53f41af0526715c5b4660a Mon Sep 17 00:00:00 2001 From: jos Date: Thu, 5 Mar 2015 09:14:40 +0100 Subject: [PATCH 16/43] Fixed #688: Added a css class to be able to distinguish buttons "Edit node" and "Edit edge". --- HISTORY.md | 2 ++ dist/vis.js | 6 +++--- lib/network/mixins/ManipulationMixin.js | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 8509f2bd..5b6d0bf0 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -15,6 +15,8 @@ http://visjs.org - Allow hierarchical view to be set in setOptions. - Fixed manipulation bar for mobile. - Fixed #670: Bug when updating data in a DataSet, when Network is connected to the DataSet via a DataView. +- Fixed #688: Added a css class to be able to distinguish buttons "Edit node" + and "Edit edge". ### Timeline diff --git a/dist/vis.js b/dist/vis.js index aa74fc2c..902da431 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.10.1-SNAPSHOT - * @date 2015-03-04 + * @date 2015-03-05 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -33664,7 +33664,7 @@ return /******/ (function(modules) { // webpackBootstrap this.manipulationDOM['seperatorLineDiv2'].className = 'network-seperatorLine'; this.manipulationDOM['editNodeSpan'] = document.createElement('div'); - this.manipulationDOM['editNodeSpan'].className = 'network-manipulationUI edit'; + this.manipulationDOM['editNodeSpan'].className = 'network-manipulationUI edit node'; this.manipulationDOM['editNodeLabelSpan'] = document.createElement('div'); this.manipulationDOM['editNodeLabelSpan'].className = 'network-manipulationLabel'; this.manipulationDOM['editNodeLabelSpan'].innerHTML = locale['editNode']; @@ -33678,7 +33678,7 @@ return /******/ (function(modules) { // webpackBootstrap this.manipulationDOM['seperatorLineDiv3'].className = 'network-seperatorLine'; this.manipulationDOM['editEdgeSpan'] = document.createElement('div'); - this.manipulationDOM['editEdgeSpan'].className = 'network-manipulationUI edit'; + this.manipulationDOM['editEdgeSpan'].className = 'network-manipulationUI edit edge'; this.manipulationDOM['editEdgeLabelSpan'] = document.createElement('div'); this.manipulationDOM['editEdgeLabelSpan'].className = 'network-manipulationLabel'; this.manipulationDOM['editEdgeLabelSpan'].innerHTML = locale['editEdge']; diff --git a/lib/network/mixins/ManipulationMixin.js b/lib/network/mixins/ManipulationMixin.js index 26f634d8..91b912c9 100644 --- a/lib/network/mixins/ManipulationMixin.js +++ b/lib/network/mixins/ManipulationMixin.js @@ -138,7 +138,7 @@ exports._createManipulatorBar = function() { this.manipulationDOM['seperatorLineDiv2'].className = 'network-seperatorLine'; this.manipulationDOM['editNodeSpan'] = document.createElement('div'); - this.manipulationDOM['editNodeSpan'].className = 'network-manipulationUI edit'; + this.manipulationDOM['editNodeSpan'].className = 'network-manipulationUI edit node'; this.manipulationDOM['editNodeLabelSpan'] = document.createElement('div'); this.manipulationDOM['editNodeLabelSpan'].className = 'network-manipulationLabel'; this.manipulationDOM['editNodeLabelSpan'].innerHTML = locale['editNode']; @@ -152,7 +152,7 @@ exports._createManipulatorBar = function() { this.manipulationDOM['seperatorLineDiv3'].className = 'network-seperatorLine'; this.manipulationDOM['editEdgeSpan'] = document.createElement('div'); - this.manipulationDOM['editEdgeSpan'].className = 'network-manipulationUI edit'; + this.manipulationDOM['editEdgeSpan'].className = 'network-manipulationUI edit edge'; this.manipulationDOM['editEdgeLabelSpan'] = document.createElement('div'); this.manipulationDOM['editEdgeLabelSpan'].className = 'network-manipulationLabel'; this.manipulationDOM['editEdgeLabelSpan'].innerHTML = locale['editEdge']; From 3d4386d660158ce72c788bbf140c28497cc1a846 Mon Sep 17 00:00:00 2001 From: Alex de Mulder Date: Thu, 5 Mar 2015 10:35:57 +0100 Subject: [PATCH 17/43] updated docs --- HISTORY.md | 8 ++++---- docs/network.html | 15 +++++++++++---- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 8a71f54c..6c57d660 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -2,15 +2,15 @@ http://visjs.org -## not yet released, version 3.10.1-SNAPSHOT +## not yet released, version 3.11.0-SNAPSHOT ### Network - (added gradient coloring for lines, but set for release in 4.0 due to required refactoring of options) - Fixed bug where a network that has frozen physics would resume redrawing after setData, setOptions etc. -- (add docs) Added option to bypass default groups. If more groups are specified in the nodes than there are in the groups, loop over supplied groups instead of default. -- (add docs) Added two new static smooth curves modes: curveCW and curve CCW. -- Added request redraw for certain internal processes to reduce number of draw calls. +- Added option to bypass default groups. If more groups are specified in the nodes than there are in the groups, loop over supplied groups instead of default. +- Added two new static smooth curves modes: curveCW and curve CCW. +- Added request redraw for certain internal processes to reduce number of draw calls (performance improvements!). - Added pull request for usage of Icons. Thanks @Dude9177! - Allow hierarchical view to be set in setOptions. - Fixed manipulation bar for mobile. diff --git a/docs/network.html b/docs/network.html index dfbac7e0..a57e864e 100644 --- a/docs/network.html +++ b/docs/network.html @@ -280,13 +280,13 @@ When using a DataSet, the network is automatically updating to changes in the Da allowedToMoveX Boolean no - If allowedToMoveX is false, then the node will not move in the X direction from its position. + If allowedToMoveX is false, then the node will not move in the X direction from its position. This does not do anything in hierarchical views. allowedToMoveY Boolean no - If allowedToMoveY is false, then the node will not move in the Y direction from its position. + If allowedToMoveY is false, then the node will not move in the Y direction from its position. This does not do anything in hierarchical views. @@ -599,7 +599,14 @@ var options = { When a Network is configured to be clickToUse, it will react to mouse, touch, and keyboard events only when active. When active, a blue shadow border is displayed around the Network. The Network is set active by clicking on it, and is changed to inactive again by clicking outside the Network or by pressing the ESC key. - + + useDefaultGroups + boolean + true + If true, the default groups are used when groups are used. If you have defined your own groups those will be used. If you have an item with a group that is NOT in your own group list, + setting useDefaultGroups true will iterate over the default groups for unknown groups. If it is set to false, it will iterate over your own groups for unknown groups. + + physics Object @@ -758,7 +765,7 @@ var options = { smoothCurves.type String "continuous" - This option only affects NONdynamic smooth curves. The supported types are: continuous, discrete, diagonalCross, straightCross, horizontal, vertical. The effects of these types + This option only affects NONdynamic smooth curves. The supported types are: continuous, discrete, diagonalCross, straightCross, horizontal, vertical, curvedCW, curvedCCW. The effects of these types are shown in examples 26 and 27 From e655f3b8b80374bf68f6156f97dfed571b67d78a Mon Sep 17 00:00:00 2001 From: Alex de Mulder Date: Thu, 5 Mar 2015 10:54:30 +0100 Subject: [PATCH 18/43] updated docs --- docs/network.html | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/network.html b/docs/network.html index a57e864e..ebeb881a 100644 --- a/docs/network.html +++ b/docs/network.html @@ -2655,6 +2655,13 @@ network.off('select', onSelect); none + + stabilizationIterationsDone + Fired once when the network finished the initial stabilization run. This is fired REGARDLESS if the network has stabilized. It only means that the amount of configured stabilizationIterations have been completed. + + none + + stabilized Fired every time the network has been stabilized. This event can be used to trigger the .storePositions() function after stabilization. Fired with an object having the following properties: From 36cb8193d16104f6aea801ea2e7a99d4638f8248 Mon Sep 17 00:00:00 2001 From: jos Date: Thu, 5 Mar 2015 14:21:27 +0100 Subject: [PATCH 19/43] Implemented events `click`, `doubleClick`, and `contextMenu`. Implemented method `getEventProperties(event)`. --- HISTORY.md | 2 + dist/vis.js | 513 +++++++++++++++++------------- dist/vis.map | 2 +- dist/vis.min.js | 28 +- docs/network.html | 12 +- docs/timeline.html | 73 ++++- lib/timeline/Core.js | 12 +- lib/timeline/Timeline.js | 53 +++ lib/timeline/component/ItemSet.js | 22 +- lib/util.js | 18 ++ test/timeline.html | 12 +- test/timeline_groups.html | 12 + 12 files changed, 478 insertions(+), 281 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 5b6d0bf0..9b661c1f 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -26,6 +26,8 @@ http://visjs.org ctrl key down. - Implemented configuration option `order: function` to define a custom ordering for the items (see #538, #234). +- Implemented events `click`, `doubleClick`, and `contextMenu`. +- Implemented method `getEventProperties(event)`. - Fixed not property initializing with a DataView for groups. - Merged add custom timebar functionality, thanks @aytech! - Fixed #664: end of item not restored when canceling a move event. diff --git a/dist/vis.js b/dist/vis.js index 902da431..62bae35e 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -827,6 +827,24 @@ return /******/ (function(modules) { // webpackBootstrap return target; }; + /** + * Check if given element contains given parent somewhere in the DOM tree + * @param {Element} element + * @param {Element} parent + */ + exports.hasParent = function (element, parent) { + var e = element; + + while (e) { + if (e === parent) { + return true; + } + e = e.parentNode; + } + + return false; + }; + exports.option = {}; /** @@ -6576,6 +6594,16 @@ return /******/ (function(modules) { // webpackBootstrap this.itemsData = null; // DataSet this.groupsData = null; // DataSet + this.on('tap', function (event) { + me.emit('click', me.getEventProperties(event)) + }); + this.on('doubletap', function (event) { + me.emit('doubleClick', me.getEventProperties(event)) + }); + this.dom.root.oncontextmenu = function (event) { + me.emit('contextmenu', me.getEventProperties(event)) + }; + // apply options if (options) { this.setOptions(options); @@ -6800,6 +6828,49 @@ return /******/ (function(modules) { // webpackBootstrap }; }; + /** + * Generate Timeline related information from an event + * @param {Event} event + * @return {Object} An object with related information, like on which area + * The event happened, whether clicked on an item, etc. + */ + Timeline.prototype.getEventProperties = function (event) { + var item = this.itemSet.itemFromTarget(event); + var group = this.itemSet.groupFromTarget(event); + var pageX = event.gesture ? event.gesture.center.pageX : event.pageX; + var pageY = event.gesture ? event.gesture.center.pageY : event.pageY; + var x = pageX - util.getAbsoluteLeft(this.dom.centerContainer); + var y = pageY - util.getAbsoluteTop(this.dom.centerContainer); + + var snap = this.itemSet.options.snap || null; + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); + var time = this._toTime(x); + var snappedTime = snap ? snap(time, scale, step) : time; + + var element = util.getTarget(event); + var what = null; + if (item != null) {what = 'item';} + else if (util.hasParent(element, this.dom.center)) {what = 'background';} + else if (util.hasParent(element, this.timeAxis.dom.foreground)) {what = 'axis';} + else if (this.timeAxis2 && util.hasParent(element, this.timeAxis2.dom.foreground)) {what = 'axis';} + else if (util.hasParent(element, this.itemSet.dom.labelSet)) {what = 'group-label';} + else if (util.hasParent(element, this.customTime.bar)) {what = 'custom-time';} + else if (util.hasParent(element, this.currentTime.bar)) {what = 'current-time';} + + return { + event: event, + item: item ? item.id : null, + group: group ? group.groupId : null, + what: what, + pageX: pageX, + pageY: pageY, + x: x, + y: y, + time: time, + snappedTime: snappedTime + } + }; module.exports = Timeline; @@ -13466,7 +13537,7 @@ return /******/ (function(modules) { // webpackBootstrap */ ItemSet.prototype._onTouch = function (event) { // store the touched item, used in _onDragStart - this.touchParams.item = ItemSet.itemFromTarget(event); + this.touchParams.item = this.itemFromTarget(event); }; /** @@ -13791,7 +13862,7 @@ return /******/ (function(modules) { // webpackBootstrap var oldSelection = this.getSelection(); - var item = ItemSet.itemFromTarget(event); + var item = this.itemFromTarget(event); var selection = item ? [item.id] : []; this.setSelection(selection); @@ -13817,7 +13888,7 @@ return /******/ (function(modules) { // webpackBootstrap var me = this, snap = this.options.snap || null, - item = ItemSet.itemFromTarget(event); + item = this.itemFromTarget(event); if (item) { // update item @@ -13875,7 +13946,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!this.options.selectable) return; var selection, - item = ItemSet.itemFromTarget(event); + item = this.itemFromTarget(event); if (item) { // multi select items @@ -13963,7 +14034,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Event} event * @return {Item | null} item */ - ItemSet.itemFromTarget = function(event) { + ItemSet.prototype.itemFromTarget = function(event) { var target = event.target; while (target) { if (target.hasOwnProperty('timeline-item')) { @@ -13982,17 +14053,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Group | null} group */ ItemSet.prototype.groupFromTarget = function(event) { - // TODO: cleanup when the new solution is stable (also on mobile) - //var target = event.target; - //while (target) { - // if (target.hasOwnProperty('timeline-group')) { - // return target['timeline-group']; - // } - // target = target.parentNode; - //} - // - - var clientY = event.gesture.center.clientY; + var clientY = event.gesture ? event.gesture.center.clientY : event.clientY; for (var i = 0; i < this.groupIds.length; i++) { var groupId = this.groupIds[i]; var group = this.groups[groupId]; @@ -15705,7 +15766,7 @@ return /******/ (function(modules) { // webpackBootstrap var Emitter = __webpack_require__(56); var Hammer = __webpack_require__(45); - var keycharm = __webpack_require__(57); + var keycharm = __webpack_require__(59); var util = __webpack_require__(1); var hammerUtil = __webpack_require__(47); var DataSet = __webpack_require__(3); @@ -22577,7 +22638,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(58); + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(57); /***/ }, @@ -22587,7 +22648,7 @@ return /******/ (function(modules) { // webpackBootstrap // Only load hammer.js when in a browser environment // (loading hammer.js in a node.js environment gives errors) if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(59); + module.exports = window['Hammer'] || __webpack_require__(58); } else { module.exports = function () { @@ -22629,7 +22690,7 @@ return /******/ (function(modules) { // webpackBootstrap * top, bottom, content, and background panel. * @param {Element} container The container element where the Core will * be attached. - * @private + * @protected */ Core.prototype._create = function (container) { this.dom = {}; @@ -22657,7 +22718,7 @@ return /******/ (function(modules) { // webpackBootstrap this.dom.background.className = 'vispanel background'; this.dom.backgroundVertical.className = 'vispanel background vertical'; this.dom.backgroundHorizontal.className = 'vispanel background horizontal'; - this.dom.centerContainer.className = 'vispanel center'; + this.dom.centerContainer.className = 'vispanel center jooo'; this.dom.leftContainer.className = 'vispanel left'; this.dom.rightContainer.className = 'vispanel right'; this.dom.top.className = 'vispanel top'; @@ -23389,7 +23450,7 @@ return /******/ (function(modules) { // webpackBootstrap * Convert a position on screen (pixels) to a datetime * @param {int} x Position on the screen in pixels * @return {Date} time The datetime the corresponds with given position x - * @private + * @protected */ // TODO: move this function to Range Core.prototype._toTime = function(x) { @@ -23400,7 +23461,7 @@ return /******/ (function(modules) { // webpackBootstrap * Convert a position on the global screen (pixels) to a datetime * @param {int} x Position on the screen in pixels * @return {Date} time The datetime the corresponds with given position x - * @private + * @protected */ // TODO: move this function to Range Core.prototype._toGlobalTime = function(x) { @@ -23414,7 +23475,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Date} time A date * @return {int} x The position on the screen in pixels which corresponds * with the given date. - * @private + * @protected */ // TODO: move this function to Range Core.prototype._toScreen = function(time) { @@ -23429,7 +23490,7 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Date} time A date * @return {int} x The position on root in pixels which corresponds * with the given date. - * @private + * @protected */ // TODO: move this function to Range Core.prototype._toGlobalScreen = function(time) { @@ -24371,7 +24432,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 53 */ /***/ function(module, exports, __webpack_require__) { - var keycharm = __webpack_require__(57); + var keycharm = __webpack_require__(59); var Emitter = __webpack_require__(56); var Hammer = __webpack_require__(45); var util = __webpack_require__(1); @@ -24968,205 +25029,6 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 57 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; - /** - * Created by Alex on 11/6/2014. - */ - - // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 - // if the module has no dependencies, the above pattern can be simplified to - (function (root, factory) { - if (true) { - // AMD. Register as an anonymous module. - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (typeof exports === 'object') { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(); - } else { - // Browser globals (root is window) - root.keycharm = factory(); - } - }(this, function () { - - function keycharm(options) { - var preventDefault = options && options.preventDefault || false; - - var container = options && options.container || window; - - var _exportFunctions = {}; - var _bound = {keydown:{}, keyup:{}}; - var _keys = {}; - var i; - - // a - z - for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} - // A - Z - for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} - // 0 - 9 - for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} - // F1 - F12 - for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} - // num0 - num9 - for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} - - // numpad misc - _keys['num*'] = {code:106, shift: false}; - _keys['num+'] = {code:107, shift: false}; - _keys['num-'] = {code:109, shift: false}; - _keys['num/'] = {code:111, shift: false}; - _keys['num.'] = {code:110, shift: false}; - // arrows - _keys['left'] = {code:37, shift: false}; - _keys['up'] = {code:38, shift: false}; - _keys['right'] = {code:39, shift: false}; - _keys['down'] = {code:40, shift: false}; - // extra keys - _keys['space'] = {code:32, shift: false}; - _keys['enter'] = {code:13, shift: false}; - _keys['shift'] = {code:16, shift: undefined}; - _keys['esc'] = {code:27, shift: false}; - _keys['backspace'] = {code:8, shift: false}; - _keys['tab'] = {code:9, shift: false}; - _keys['ctrl'] = {code:17, shift: false}; - _keys['alt'] = {code:18, shift: false}; - _keys['delete'] = {code:46, shift: false}; - _keys['pageup'] = {code:33, shift: false}; - _keys['pagedown'] = {code:34, shift: false}; - // symbols - _keys['='] = {code:187, shift: false}; - _keys['-'] = {code:189, shift: false}; - _keys[']'] = {code:221, shift: false}; - _keys['['] = {code:219, shift: false}; - - - - var down = function(event) {handleEvent(event,'keydown');}; - var up = function(event) {handleEvent(event,'keyup');}; - - // handle the actualy bound key with the event - var handleEvent = function(event,type) { - if (_bound[type][event.keyCode] !== undefined) { - var bound = _bound[type][event.keyCode]; - for (var i = 0; i < bound.length; i++) { - if (bound[i].shift === undefined) { - bound[i].fn(event); - } - else if (bound[i].shift == true && event.shiftKey == true) { - bound[i].fn(event); - } - else if (bound[i].shift == false && event.shiftKey == false) { - bound[i].fn(event); - } - } - - if (preventDefault == true) { - event.preventDefault(); - } - } - }; - - // bind a key to a callback - _exportFunctions.bind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (_bound[type][_keys[key].code] === undefined) { - _bound[type][_keys[key].code] = []; - } - _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); - }; - - - // bind all keys to a call back (demo purposes) - _exportFunctions.bindAll = function(callback, type) { - if (type === undefined) { - type = 'keydown'; - } - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - _exportFunctions.bind(key,callback,type); - } - } - }; - - // get the key label from an event - _exportFunctions.getKey = function(event) { - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { - return key; - } - else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { - return key; - } - else if (event.keyCode == _keys[key].code && key == 'shift') { - return key; - } - } - } - return "unknown key, currently not supported"; - }; - - // unbind either a specific callback from a key or all of them (by leaving callback undefined) - _exportFunctions.unbind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (callback !== undefined) { - var newBindings = []; - var bound = _bound[type][_keys[key].code]; - if (bound !== undefined) { - for (var i = 0; i < bound.length; i++) { - if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { - newBindings.push(_bound[type][_keys[key].code][i]); - } - } - } - _bound[type][_keys[key].code] = newBindings; - } - else { - _bound[type][_keys[key].code] = []; - } - }; - - // reset all bound variables. - _exportFunctions.reset = function() { - _bound = {keydown:{}, keyup:{}}; - }; - - // unbind all listeners and reset all variables. - _exportFunctions.destroy = function() { - _bound = {keydown:{}, keyup:{}}; - container.removeEventListener('keydown', down, true); - container.removeEventListener('keyup', up, true); - }; - - // create listeners. - container.addEventListener('keydown',down,true); - container.addEventListener('keyup',up,true); - - // return the public functions. - return _exportFunctions; - } - - return keycharm; - })); - - - - -/***/ }, -/* 58 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js @@ -28216,7 +28078,7 @@ return /******/ (function(modules) { // webpackBootstrap /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) /***/ }, -/* 59 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 @@ -30382,6 +30244,205 @@ return /******/ (function(modules) { // webpackBootstrap })(window); +/***/ }, +/* 59 */ +/***/ function(module, exports, __webpack_require__) { + + var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; + /** + * Created by Alex on 11/6/2014. + */ + + // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 + // if the module has no dependencies, the above pattern can be simplified to + (function (root, factory) { + if (true) { + // AMD. Register as an anonymous module. + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(); + } else { + // Browser globals (root is window) + root.keycharm = factory(); + } + }(this, function () { + + function keycharm(options) { + var preventDefault = options && options.preventDefault || false; + + var container = options && options.container || window; + + var _exportFunctions = {}; + var _bound = {keydown:{}, keyup:{}}; + var _keys = {}; + var i; + + // a - z + for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} + // A - Z + for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} + // 0 - 9 + for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} + // F1 - F12 + for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} + // num0 - num9 + for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} + + // numpad misc + _keys['num*'] = {code:106, shift: false}; + _keys['num+'] = {code:107, shift: false}; + _keys['num-'] = {code:109, shift: false}; + _keys['num/'] = {code:111, shift: false}; + _keys['num.'] = {code:110, shift: false}; + // arrows + _keys['left'] = {code:37, shift: false}; + _keys['up'] = {code:38, shift: false}; + _keys['right'] = {code:39, shift: false}; + _keys['down'] = {code:40, shift: false}; + // extra keys + _keys['space'] = {code:32, shift: false}; + _keys['enter'] = {code:13, shift: false}; + _keys['shift'] = {code:16, shift: undefined}; + _keys['esc'] = {code:27, shift: false}; + _keys['backspace'] = {code:8, shift: false}; + _keys['tab'] = {code:9, shift: false}; + _keys['ctrl'] = {code:17, shift: false}; + _keys['alt'] = {code:18, shift: false}; + _keys['delete'] = {code:46, shift: false}; + _keys['pageup'] = {code:33, shift: false}; + _keys['pagedown'] = {code:34, shift: false}; + // symbols + _keys['='] = {code:187, shift: false}; + _keys['-'] = {code:189, shift: false}; + _keys[']'] = {code:221, shift: false}; + _keys['['] = {code:219, shift: false}; + + + + var down = function(event) {handleEvent(event,'keydown');}; + var up = function(event) {handleEvent(event,'keyup');}; + + // handle the actualy bound key with the event + var handleEvent = function(event,type) { + if (_bound[type][event.keyCode] !== undefined) { + var bound = _bound[type][event.keyCode]; + for (var i = 0; i < bound.length; i++) { + if (bound[i].shift === undefined) { + bound[i].fn(event); + } + else if (bound[i].shift == true && event.shiftKey == true) { + bound[i].fn(event); + } + else if (bound[i].shift == false && event.shiftKey == false) { + bound[i].fn(event); + } + } + + if (preventDefault == true) { + event.preventDefault(); + } + } + }; + + // bind a key to a callback + _exportFunctions.bind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (_bound[type][_keys[key].code] === undefined) { + _bound[type][_keys[key].code] = []; + } + _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); + }; + + + // bind all keys to a call back (demo purposes) + _exportFunctions.bindAll = function(callback, type) { + if (type === undefined) { + type = 'keydown'; + } + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + _exportFunctions.bind(key,callback,type); + } + } + }; + + // get the key label from an event + _exportFunctions.getKey = function(event) { + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { + return key; + } + else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { + return key; + } + else if (event.keyCode == _keys[key].code && key == 'shift') { + return key; + } + } + } + return "unknown key, currently not supported"; + }; + + // unbind either a specific callback from a key or all of them (by leaving callback undefined) + _exportFunctions.unbind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (callback !== undefined) { + var newBindings = []; + var bound = _bound[type][_keys[key].code]; + if (bound !== undefined) { + for (var i = 0; i < bound.length; i++) { + if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { + newBindings.push(_bound[type][_keys[key].code][i]); + } + } + } + _bound[type][_keys[key].code] = newBindings; + } + else { + _bound[type][_keys[key].code] = []; + } + }; + + // reset all bound variables. + _exportFunctions.reset = function() { + _bound = {keydown:{}, keyup:{}}; + }; + + // unbind all listeners and reset all variables. + _exportFunctions.destroy = function() { + _bound = {keydown:{}, keyup:{}}; + container.removeEventListener('keydown', down, true); + container.removeEventListener('keyup', up, true); + }; + + // create listeners. + container.addEventListener('keydown',down,true); + container.addEventListener('keyup',up,true); + + // return the public functions. + return _exportFunctions; + } + + return keycharm; + })); + + + + /***/ }, /* 60 */ /***/ function(module, exports, __webpack_require__) { diff --git a/dist/vis.map b/dist/vis.map index 77880c61..16496935 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","groupFromTarget","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_RESULT__","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","code","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 66fee846..3c993ef8 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.10.1-SNAPSHOT - * @date 2015-03-04 + * @date 2015-03-05 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -22,18 +22,18 @@ * * Vis.js may be distributed under either license. */ -"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);else for(var s in t)t.hasOwnProperty(s)&&e.hasOwnProperty(s)&&(i[e[s]]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var D=this.yLabel;D.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(D,o.x,o.y));var M=this.zLabel;M.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(M,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+D.x/M/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range"; -return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step); -break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n) -}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l=this.body.util.getScale(),c=this.body.util.getStep(),p={start:i?i(d,l,c):d,content:"new item"}; -if("range"===this.options.type){var u=this.body.util.toTime(h+this.props.width/5);p.end=i?i(u,l,c):u}p[this.itemsData._fieldId]=n.randomUUID();var m=this.groupFromTarget(t);m&&(p.group=m.groupId),this.options.onAdd(p,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture.center.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox; -break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=S.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=S.DELIMITER);var i=E+n();if(C[i])return N=S.DELIMITER,k=i,o(),void o();if(C[E])return N=S.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=S.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=S.IDENTIFIER)}for(N=S.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==S.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=S.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=S.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==S.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=S.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=S.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=S.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),D(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var S={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=S.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=M},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",D=t.length,M=0;D-1>M;M++)s=0==M?t[0]:t[M-1],o=t[M],n=t[M+1],r=D>M+2?t[M+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Si===!1&&(Si=!0,Ce.updateOffset(this),Si=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Di={},Mi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Si=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=M(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Mi.length-1;Oe>=0;--Oe)I(Mi[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:S(1,"add"),subtract:S(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(De(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(De(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Me(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Se(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){M.register(t)}),w.onTouch(a.DOCUMENT,v,M.detect),w.onTouch(a.DOCUMENT,y,M.detect),a.READY=!0)}var a=function S(t,e){return new S.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25; -var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(M,d),a&&(d.changedLength=h,d.eventType=a,s.call(M,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(M,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return D.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||D.matchType(u,s)?o=u:D.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return M.stopDetect()}}}},D=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},M=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?M.startDetect(i,t):t.eventType==_&&M.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=M.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=M.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=M.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=M.current,h=M.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); -var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;te;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);else for(var s in t)t.hasOwnProperty(s)&&e.hasOwnProperty(s)&&(i[e[s]]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var S=this.yLabel;S.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(S,o.x,o.y));var D=this.zLabel;D.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(D,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/D/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index] +},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.dom.center)?m="background":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)&&(m="current-time"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT +}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer) +},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.clientY:t.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start() +},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(59),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t]) +},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id"; +if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=M.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=M.DELIMITER);var i=E+n();if(C[i])return N=M.DELIMITER,k=i,o(),void o();if(C[E])return N=M.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=M.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=M.IDENTIFIER)}for(N=M.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==M.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=M.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=M.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==M.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=M.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=M.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=M.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),S(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=M.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Ie.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Ce.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return b(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){Si[t]||(d(e),Si[t]=!0)}function p(t,e){return function(i){return w(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function m(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Mi===!1&&(Mi=!0,Ce.updateOffset(this),Mi=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null; +if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Si={},Di=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Mi=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=D(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Di.length-1;Oe>=0;--Oe)I(Di[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:M(1,"add"),subtract:M(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Se(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Se(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&De(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Me(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d +},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); +var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/docs/network.html b/docs/network.html index dfbac7e0..c032f99a 100644 --- a/docs/network.html +++ b/docs/network.html @@ -165,14 +165,14 @@ The constructor accepts three parameters: edges, which both contain an array with objects. Optionally, data may contain an options object. The parameter data is optional, data can also be set using - the method setData. Section Data Format + the method setData. Section Data Format describes the data object.
  • options is an optional Object containing a name-value map with options. Options can also be set using the method setOptions. - Section Configuration Options + Section Configuration Options describes the available options.
  • @@ -214,7 +214,7 @@ var data = { A property options, containing an object with global options. Options can be provided as third parameter in the network constructor - as well. Section Configuration Options + as well. Section Configuration Options describes the available options. @@ -647,7 +647,7 @@ var options = { - freezeForStabilization + freezeForStabilization Boolean false @@ -972,7 +972,7 @@ mySize = minSize + diff * scale; When using values, you can let the font scale with the size of the nodes if you enable the scaleFontWithValue option. This is the minimum value of the fontSize. - fontSizeMax + fontSizeMax Number 30 When using values, you can let the font scale with the size of the nodes if you enable the scaleFontWithValue option. This is the maximum value of the fontSize. @@ -1483,7 +1483,7 @@ To unify the physics system, the damping, repulsion distance and edge length hav If no options for the physics system are supplied, the Barnes-Hut method will be used with the default parameters. If you want to customize the physics system easily, you can use the configurePhysics option.
    When using the hierarchical display option, hierarchicalRepulsion is automatically used as the physics solver. Similarly, if you use the hierarchicalRepulsion physics option, hierarchical display is automatically turned on with default settings. -

    Note: if the behaviour of your network is not the way you want it, use configurePhysics as described below or by example 25.

    +

    Note: if the behaviour of your network is not the way you want it, use configurePhysics as described below or by example 25.

     // These variables must be defined in an options object named physics.
    diff --git a/docs/timeline.html b/docs/timeline.html
    index e6cb1ca3..5034cb9e 100644
    --- a/docs/timeline.html
    +++ b/docs/timeline.html
    @@ -919,6 +919,26 @@ timeline.clear({options: true}); // clear options only
         
       
     
    +  
    +    getEventProperties(event)
    +    Object
    +    
    +      Returns an Object with relevant properties from an event:
    +      
      +
    • group (Number | null): the id of the clicked group.
    • +
    • item (Number | null): the id of the clicked item.
    • +
    • pageX (Number): absolute horizontal position of the click event.
    • +
    • pageY (Number): absolute vertical position of the click event.
    • +
    • x (Number): relative horizontal position of the click event.
    • +
    • y (Number): relative vertical position of the click event.
    • +
    • time (Date): Date of the clicked event.
    • +
    • snappedTime (Date): Date of the clicked event, snapped to a nice value.
    • +
    • what (String | null): name of the clicked thing: item, background, axis, group-label, custom-time, or current-time.
    • +
    • event (Object): the original click event.
    • +
    + + + getSelection() Number[] @@ -1093,16 +1113,49 @@ timeline.off('select', onSelect); Description Properties - - finishedRedraw - Fired after a redraw is complete. When moving the timeline around, this could be fired frequently. - - - none. - - - - + + + click + Fired when clicked inside the Timeline. + + + Passes a properties object as returned by the method Timeline.getEventProperties(event). + + + + + contextmenu + Fired when right-clicked inside the Timeline. Note that in order to prevent the context menu from showing up, default behavior of the event must be stopped: +
    timeline.on('contextmenu', function (props) {
    +  alert('Right click!');
    +  props.event.preventDefault();
    +});
    +
    + + + Passes a properties object as returned by the method Timeline.getEventProperties(event). + + + + + doubleClick + Fired when double clicked inside the Timeline. + + + Passes a properties object as returned by the method Timeline.getEventProperties(event). + + + + + finishedRedraw + Fired after a redraw is complete. When moving the timeline around, this could be fired frequently. + + + none. + + + + rangechange Fired repeatedly when the timeline window is being changed. diff --git a/lib/timeline/Core.js b/lib/timeline/Core.js index b64c5021..2e0d945c 100644 --- a/lib/timeline/Core.js +++ b/lib/timeline/Core.js @@ -27,7 +27,7 @@ Emitter(Core.prototype); * top, bottom, content, and background panel. * @param {Element} container The container element where the Core will * be attached. - * @private + * @protected */ Core.prototype._create = function (container) { this.dom = {}; @@ -55,7 +55,7 @@ Core.prototype._create = function (container) { this.dom.background.className = 'vispanel background'; this.dom.backgroundVertical.className = 'vispanel background vertical'; this.dom.backgroundHorizontal.className = 'vispanel background horizontal'; - this.dom.centerContainer.className = 'vispanel center'; + this.dom.centerContainer.className = 'vispanel center jooo'; this.dom.leftContainer.className = 'vispanel left'; this.dom.rightContainer.className = 'vispanel right'; this.dom.top.className = 'vispanel top'; @@ -787,7 +787,7 @@ Core.prototype.getCurrentTime = function() { * Convert a position on screen (pixels) to a datetime * @param {int} x Position on the screen in pixels * @return {Date} time The datetime the corresponds with given position x - * @private + * @protected */ // TODO: move this function to Range Core.prototype._toTime = function(x) { @@ -798,7 +798,7 @@ Core.prototype._toTime = function(x) { * Convert a position on the global screen (pixels) to a datetime * @param {int} x Position on the screen in pixels * @return {Date} time The datetime the corresponds with given position x - * @private + * @protected */ // TODO: move this function to Range Core.prototype._toGlobalTime = function(x) { @@ -812,7 +812,7 @@ Core.prototype._toGlobalTime = function(x) { * @param {Date} time A date * @return {int} x The position on the screen in pixels which corresponds * with the given date. - * @private + * @protected */ // TODO: move this function to Range Core.prototype._toScreen = function(time) { @@ -827,7 +827,7 @@ Core.prototype._toScreen = function(time) { * @param {Date} time A date * @return {int} x The position on root in pixels which corresponds * with the given date. - * @private + * @protected */ // TODO: move this function to Range Core.prototype._toGlobalScreen = function(time) { diff --git a/lib/timeline/Timeline.js b/lib/timeline/Timeline.js index 67c1da44..9c177c75 100644 --- a/lib/timeline/Timeline.js +++ b/lib/timeline/Timeline.js @@ -102,6 +102,16 @@ function Timeline (container, items, groups, options) { this.itemsData = null; // DataSet this.groupsData = null; // DataSet + this.on('tap', function (event) { + me.emit('click', me.getEventProperties(event)) + }); + this.on('doubletap', function (event) { + me.emit('doubleClick', me.getEventProperties(event)) + }); + this.dom.root.oncontextmenu = function (event) { + me.emit('contextmenu', me.getEventProperties(event)) + }; + // apply options if (options) { this.setOptions(options); @@ -326,5 +336,48 @@ Timeline.prototype.getItemRange = function() { }; }; +/** + * Generate Timeline related information from an event + * @param {Event} event + * @return {Object} An object with related information, like on which area + * The event happened, whether clicked on an item, etc. + */ +Timeline.prototype.getEventProperties = function (event) { + var item = this.itemSet.itemFromTarget(event); + var group = this.itemSet.groupFromTarget(event); + var pageX = event.gesture ? event.gesture.center.pageX : event.pageX; + var pageY = event.gesture ? event.gesture.center.pageY : event.pageY; + var x = pageX - util.getAbsoluteLeft(this.dom.centerContainer); + var y = pageY - util.getAbsoluteTop(this.dom.centerContainer); + + var snap = this.itemSet.options.snap || null; + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); + var time = this._toTime(x); + var snappedTime = snap ? snap(time, scale, step) : time; + + var element = util.getTarget(event); + var what = null; + if (item != null) {what = 'item';} + else if (util.hasParent(element, this.dom.center)) {what = 'background';} + else if (util.hasParent(element, this.timeAxis.dom.foreground)) {what = 'axis';} + else if (this.timeAxis2 && util.hasParent(element, this.timeAxis2.dom.foreground)) {what = 'axis';} + else if (util.hasParent(element, this.itemSet.dom.labelSet)) {what = 'group-label';} + else if (util.hasParent(element, this.customTime.bar)) {what = 'custom-time';} + else if (util.hasParent(element, this.currentTime.bar)) {what = 'current-time';} + + return { + event: event, + item: item ? item.id : null, + group: group ? group.groupId : null, + what: what, + pageX: pageX, + pageY: pageY, + x: x, + y: y, + time: time, + snappedTime: snappedTime + } +}; module.exports = Timeline; diff --git a/lib/timeline/component/ItemSet.js b/lib/timeline/component/ItemSet.js index ef831474..2f5b6977 100644 --- a/lib/timeline/component/ItemSet.js +++ b/lib/timeline/component/ItemSet.js @@ -1082,7 +1082,7 @@ ItemSet.prototype._constructByEndArray = function(array) { */ ItemSet.prototype._onTouch = function (event) { // store the touched item, used in _onDragStart - this.touchParams.item = ItemSet.itemFromTarget(event); + this.touchParams.item = this.itemFromTarget(event); }; /** @@ -1407,7 +1407,7 @@ ItemSet.prototype._onSelectItem = function (event) { var oldSelection = this.getSelection(); - var item = ItemSet.itemFromTarget(event); + var item = this.itemFromTarget(event); var selection = item ? [item.id] : []; this.setSelection(selection); @@ -1433,7 +1433,7 @@ ItemSet.prototype._onAddItem = function (event) { var me = this, snap = this.options.snap || null, - item = ItemSet.itemFromTarget(event); + item = this.itemFromTarget(event); if (item) { // update item @@ -1491,7 +1491,7 @@ ItemSet.prototype._onMultiSelectItem = function (event) { if (!this.options.selectable) return; var selection, - item = ItemSet.itemFromTarget(event); + item = this.itemFromTarget(event); if (item) { // multi select items @@ -1579,7 +1579,7 @@ ItemSet._getItemRange = function(itemsData) { * @param {Event} event * @return {Item | null} item */ -ItemSet.itemFromTarget = function(event) { +ItemSet.prototype.itemFromTarget = function(event) { var target = event.target; while (target) { if (target.hasOwnProperty('timeline-item')) { @@ -1598,17 +1598,7 @@ ItemSet.itemFromTarget = function(event) { * @return {Group | null} group */ ItemSet.prototype.groupFromTarget = function(event) { - // TODO: cleanup when the new solution is stable (also on mobile) - //var target = event.target; - //while (target) { - // if (target.hasOwnProperty('timeline-group')) { - // return target['timeline-group']; - // } - // target = target.parentNode; - //} - // - - var clientY = event.gesture.center.clientY; + var clientY = event.gesture ? event.gesture.center.clientY : event.clientY; for (var i = 0; i < this.groupIds.length; i++) { var groupId = this.groupIds[i]; var group = this.groups[groupId]; diff --git a/lib/util.js b/lib/util.js index c4416276..8f6ffde2 100644 --- a/lib/util.js +++ b/lib/util.js @@ -665,6 +665,24 @@ exports.getTarget = function(event) { return target; }; +/** + * Check if given element contains given parent somewhere in the DOM tree + * @param {Element} element + * @param {Element} parent + */ +exports.hasParent = function (element, parent) { + var e = element; + + while (e) { + if (e === parent) { + return true; + } + e = e.parentNode; + } + + return false; +}; + exports.option = {}; /** diff --git a/test/timeline.html b/test/timeline.html index 84b7ce99..5824337a 100644 --- a/test/timeline.html +++ b/test/timeline.html @@ -26,12 +26,12 @@ #visualization .grid.vertical.saturday, #visualization .grid.vertical.sunday { - background: gray; + background: #ffef9f; } #visualization .text.saturday, #visualization .text.sunday { - color: white; + color: #ff7c02; } @@ -140,6 +140,14 @@ console.log('select', selection); }); + timeline.on('click', function (props) { + console.log('click', props); + }); + + timeline.on('contextmenu', function (props) { + console.log('contextmenu', props); + }); + /* timeline.on('rangechange', function (range) { console.log('rangechange', range); diff --git a/test/timeline_groups.html b/test/timeline_groups.html index aab2561d..15fc73dd 100644 --- a/test/timeline_groups.html +++ b/test/timeline_groups.html @@ -165,6 +165,18 @@ }); */ + timeline.on('click', function (props) { + console.log('click', props); + }); + + timeline.on('doubleClick', function (props) { + console.log('doubleClick', props); + }); + + timeline.on('contextmenu', function (props) { + console.log('contextmenu', props); + }); + items.on('add', console.log.bind(console)); items.on('update', console.log.bind(console)); items.on('remove', console.log.bind(console)); From 0fcae5c2c97fc366341da1f32c06ed230ccf2a74 Mon Sep 17 00:00:00 2001 From: jos Date: Thu, 5 Mar 2015 14:57:31 +0100 Subject: [PATCH 20/43] Graph2d: Implemented events `click`, `doubleClick`, and `contextMenu`. Implemented method `getEventProperties(event)`. --- HISTORY.md | 4 + dist/vis.js | 477 ++++++++++++++++------------- dist/vis.map | 2 +- dist/vis.min.js | 20 +- docs/graph2d.html | 18 ++ lib/timeline/Graph2d.js | 61 +++- lib/timeline/Timeline.js | 4 +- lib/timeline/component/DataAxis.js | 4 + 8 files changed, 367 insertions(+), 223 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 2a981b57..525c7a89 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -36,6 +36,10 @@ http://visjs.org - Fixed #676: misalignment of background items when using subgroups and the group label's height is larger than the contents. +### Graph2d + +- Implemented events `click`, `doubleClick`, and `contextMenu`. +- Implemented method `getEventProperties(event)`. ### DataSet/DataView diff --git a/dist/vis.js b/dist/vis.js index 62bae35e..3d95cfba 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -6851,12 +6851,12 @@ return /******/ (function(modules) { // webpackBootstrap var element = util.getTarget(event); var what = null; if (item != null) {what = 'item';} - else if (util.hasParent(element, this.dom.center)) {what = 'background';} else if (util.hasParent(element, this.timeAxis.dom.foreground)) {what = 'axis';} else if (this.timeAxis2 && util.hasParent(element, this.timeAxis2.dom.foreground)) {what = 'axis';} else if (util.hasParent(element, this.itemSet.dom.labelSet)) {what = 'group-label';} - else if (util.hasParent(element, this.customTime.bar)) {what = 'custom-time';} + else if (util.hasParent(element, this.customTime.bar)) {what = 'custom-time';} // TODO: fix for multiple custom time bars else if (util.hasParent(element, this.currentTime.bar)) {what = 'current-time';} + else if (util.hasParent(element, this.dom.center)) {what = 'background';} return { event: event, @@ -6971,6 +6971,16 @@ return /******/ (function(modules) { // webpackBootstrap this.itemsData = null; // DataSet this.groupsData = null; // DataSet + this.on('tap', function (event) { + me.emit('click', me.getEventProperties(event)) + }); + this.on('doubletap', function (event) { + me.emit('doubleClick', me.getEventProperties(event)) + }); + this.dom.root.oncontextmenu = function (event) { + me.emit('contextmenu', me.getEventProperties(event)) + }; + // apply options if (options) { this.setOptions(options); @@ -7072,7 +7082,7 @@ return /******/ (function(modules) { // webpackBootstrap else { return "cannot find group:" + groupId; } - } + }; /** * This checks if the visible option of the supplied group (by ID) is true or false. @@ -7086,7 +7096,7 @@ return /******/ (function(modules) { // webpackBootstrap else { return false; } - } + }; /** @@ -7120,6 +7130,53 @@ return /******/ (function(modules) { // webpackBootstrap }; + /** + * Generate Timeline related information from an event + * @param {Event} event + * @return {Object} An object with related information, like on which area + * The event happened, whether clicked on an item, etc. + */ + Graph2d.prototype.getEventProperties = function (event) { + var pageX = event.gesture ? event.gesture.center.pageX : event.pageX; + var pageY = event.gesture ? event.gesture.center.pageY : event.pageY; + var x = pageX - util.getAbsoluteLeft(this.dom.centerContainer); + var y = pageY - util.getAbsoluteTop(this.dom.centerContainer); + var time = this._toTime(x); + + var element = util.getTarget(event); + var what = null; + if (util.hasParent(element, this.timeAxis.dom.foreground)) {what = 'axis';} + else if (this.timeAxis2 && util.hasParent(element, this.timeAxis2.dom.foreground)) {what = 'axis';} + else if (util.hasParent(element, this.linegraph.yAxisLeft.dom.frame)) {what = 'data-axis';} + else if (util.hasParent(element, this.linegraph.yAxisRight.dom.frame)) {what = 'data-axis';} + else if (util.hasParent(element, this.linegraph.legendLeft.dom.frame)) {what = 'legend';} + else if (util.hasParent(element, this.linegraph.legendRight.dom.frame)) {what = 'legend';} + else if (util.hasParent(element, this.customTime.bar)) {what = 'custom-time';} // TODO: fix for multiple custom time bars + else if (util.hasParent(element, this.currentTime.bar)) {what = 'current-time';} + else if (util.hasParent(element, this.dom.center)) {what = 'background';} + + var value = []; + var yAxisLeft = this.linegraph.yAxisLeft; + var yAxisRight = this.linegraph.yAxisRight; + if (!yAxisLeft.hidden) { + value.push(yAxisLeft.screenToValue(y)); + } + if (!yAxisRight.hidden) { + value.push(yAxisRight.screenToValue(y)); + } + + return { + event: event, + what: what, + pageX: pageX, + pageY: pageY, + x: x, + y: y, + time: time, + value: value + } + }; + module.exports = Graph2d; @@ -11432,6 +11489,10 @@ return /******/ (function(modules) { // webpackBootstrap return convertedValue; }; + DataAxis.prototype.screenToValue = function (x) { + return this.valueAtZero - (x / this.conversionFactor); + }; + /** * Create a label for the axis at position x * @private @@ -15766,7 +15827,7 @@ return /******/ (function(modules) { // webpackBootstrap var Emitter = __webpack_require__(56); var Hammer = __webpack_require__(45); - var keycharm = __webpack_require__(59); + var keycharm = __webpack_require__(57); var util = __webpack_require__(1); var hammerUtil = __webpack_require__(47); var DataSet = __webpack_require__(3); @@ -22638,7 +22699,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(57); + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(58); /***/ }, @@ -22648,7 +22709,7 @@ return /******/ (function(modules) { // webpackBootstrap // Only load hammer.js when in a browser environment // (loading hammer.js in a node.js environment gives errors) if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(58); + module.exports = window['Hammer'] || __webpack_require__(59); } else { module.exports = function () { @@ -24432,7 +24493,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 53 */ /***/ function(module, exports, __webpack_require__) { - var keycharm = __webpack_require__(59); + var keycharm = __webpack_require__(57); var Emitter = __webpack_require__(56); var Hammer = __webpack_require__(45); var util = __webpack_require__(1); @@ -25029,6 +25090,205 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 57 */ +/***/ function(module, exports, __webpack_require__) { + + var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; + /** + * Created by Alex on 11/6/2014. + */ + + // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 + // if the module has no dependencies, the above pattern can be simplified to + (function (root, factory) { + if (true) { + // AMD. Register as an anonymous module. + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(); + } else { + // Browser globals (root is window) + root.keycharm = factory(); + } + }(this, function () { + + function keycharm(options) { + var preventDefault = options && options.preventDefault || false; + + var container = options && options.container || window; + + var _exportFunctions = {}; + var _bound = {keydown:{}, keyup:{}}; + var _keys = {}; + var i; + + // a - z + for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} + // A - Z + for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} + // 0 - 9 + for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} + // F1 - F12 + for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} + // num0 - num9 + for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} + + // numpad misc + _keys['num*'] = {code:106, shift: false}; + _keys['num+'] = {code:107, shift: false}; + _keys['num-'] = {code:109, shift: false}; + _keys['num/'] = {code:111, shift: false}; + _keys['num.'] = {code:110, shift: false}; + // arrows + _keys['left'] = {code:37, shift: false}; + _keys['up'] = {code:38, shift: false}; + _keys['right'] = {code:39, shift: false}; + _keys['down'] = {code:40, shift: false}; + // extra keys + _keys['space'] = {code:32, shift: false}; + _keys['enter'] = {code:13, shift: false}; + _keys['shift'] = {code:16, shift: undefined}; + _keys['esc'] = {code:27, shift: false}; + _keys['backspace'] = {code:8, shift: false}; + _keys['tab'] = {code:9, shift: false}; + _keys['ctrl'] = {code:17, shift: false}; + _keys['alt'] = {code:18, shift: false}; + _keys['delete'] = {code:46, shift: false}; + _keys['pageup'] = {code:33, shift: false}; + _keys['pagedown'] = {code:34, shift: false}; + // symbols + _keys['='] = {code:187, shift: false}; + _keys['-'] = {code:189, shift: false}; + _keys[']'] = {code:221, shift: false}; + _keys['['] = {code:219, shift: false}; + + + + var down = function(event) {handleEvent(event,'keydown');}; + var up = function(event) {handleEvent(event,'keyup');}; + + // handle the actualy bound key with the event + var handleEvent = function(event,type) { + if (_bound[type][event.keyCode] !== undefined) { + var bound = _bound[type][event.keyCode]; + for (var i = 0; i < bound.length; i++) { + if (bound[i].shift === undefined) { + bound[i].fn(event); + } + else if (bound[i].shift == true && event.shiftKey == true) { + bound[i].fn(event); + } + else if (bound[i].shift == false && event.shiftKey == false) { + bound[i].fn(event); + } + } + + if (preventDefault == true) { + event.preventDefault(); + } + } + }; + + // bind a key to a callback + _exportFunctions.bind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (_bound[type][_keys[key].code] === undefined) { + _bound[type][_keys[key].code] = []; + } + _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); + }; + + + // bind all keys to a call back (demo purposes) + _exportFunctions.bindAll = function(callback, type) { + if (type === undefined) { + type = 'keydown'; + } + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + _exportFunctions.bind(key,callback,type); + } + } + }; + + // get the key label from an event + _exportFunctions.getKey = function(event) { + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { + return key; + } + else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { + return key; + } + else if (event.keyCode == _keys[key].code && key == 'shift') { + return key; + } + } + } + return "unknown key, currently not supported"; + }; + + // unbind either a specific callback from a key or all of them (by leaving callback undefined) + _exportFunctions.unbind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (callback !== undefined) { + var newBindings = []; + var bound = _bound[type][_keys[key].code]; + if (bound !== undefined) { + for (var i = 0; i < bound.length; i++) { + if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { + newBindings.push(_bound[type][_keys[key].code][i]); + } + } + } + _bound[type][_keys[key].code] = newBindings; + } + else { + _bound[type][_keys[key].code] = []; + } + }; + + // reset all bound variables. + _exportFunctions.reset = function() { + _bound = {keydown:{}, keyup:{}}; + }; + + // unbind all listeners and reset all variables. + _exportFunctions.destroy = function() { + _bound = {keydown:{}, keyup:{}}; + container.removeEventListener('keydown', down, true); + container.removeEventListener('keyup', up, true); + }; + + // create listeners. + container.addEventListener('keydown',down,true); + container.addEventListener('keyup',up,true); + + // return the public functions. + return _exportFunctions; + } + + return keycharm; + })); + + + + +/***/ }, +/* 58 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js @@ -28078,7 +28338,7 @@ return /******/ (function(modules) { // webpackBootstrap /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) /***/ }, -/* 58 */ +/* 59 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 @@ -30244,205 +30504,6 @@ return /******/ (function(modules) { // webpackBootstrap })(window); -/***/ }, -/* 59 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; - /** - * Created by Alex on 11/6/2014. - */ - - // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 - // if the module has no dependencies, the above pattern can be simplified to - (function (root, factory) { - if (true) { - // AMD. Register as an anonymous module. - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (typeof exports === 'object') { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(); - } else { - // Browser globals (root is window) - root.keycharm = factory(); - } - }(this, function () { - - function keycharm(options) { - var preventDefault = options && options.preventDefault || false; - - var container = options && options.container || window; - - var _exportFunctions = {}; - var _bound = {keydown:{}, keyup:{}}; - var _keys = {}; - var i; - - // a - z - for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} - // A - Z - for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} - // 0 - 9 - for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} - // F1 - F12 - for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} - // num0 - num9 - for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} - - // numpad misc - _keys['num*'] = {code:106, shift: false}; - _keys['num+'] = {code:107, shift: false}; - _keys['num-'] = {code:109, shift: false}; - _keys['num/'] = {code:111, shift: false}; - _keys['num.'] = {code:110, shift: false}; - // arrows - _keys['left'] = {code:37, shift: false}; - _keys['up'] = {code:38, shift: false}; - _keys['right'] = {code:39, shift: false}; - _keys['down'] = {code:40, shift: false}; - // extra keys - _keys['space'] = {code:32, shift: false}; - _keys['enter'] = {code:13, shift: false}; - _keys['shift'] = {code:16, shift: undefined}; - _keys['esc'] = {code:27, shift: false}; - _keys['backspace'] = {code:8, shift: false}; - _keys['tab'] = {code:9, shift: false}; - _keys['ctrl'] = {code:17, shift: false}; - _keys['alt'] = {code:18, shift: false}; - _keys['delete'] = {code:46, shift: false}; - _keys['pageup'] = {code:33, shift: false}; - _keys['pagedown'] = {code:34, shift: false}; - // symbols - _keys['='] = {code:187, shift: false}; - _keys['-'] = {code:189, shift: false}; - _keys[']'] = {code:221, shift: false}; - _keys['['] = {code:219, shift: false}; - - - - var down = function(event) {handleEvent(event,'keydown');}; - var up = function(event) {handleEvent(event,'keyup');}; - - // handle the actualy bound key with the event - var handleEvent = function(event,type) { - if (_bound[type][event.keyCode] !== undefined) { - var bound = _bound[type][event.keyCode]; - for (var i = 0; i < bound.length; i++) { - if (bound[i].shift === undefined) { - bound[i].fn(event); - } - else if (bound[i].shift == true && event.shiftKey == true) { - bound[i].fn(event); - } - else if (bound[i].shift == false && event.shiftKey == false) { - bound[i].fn(event); - } - } - - if (preventDefault == true) { - event.preventDefault(); - } - } - }; - - // bind a key to a callback - _exportFunctions.bind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (_bound[type][_keys[key].code] === undefined) { - _bound[type][_keys[key].code] = []; - } - _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); - }; - - - // bind all keys to a call back (demo purposes) - _exportFunctions.bindAll = function(callback, type) { - if (type === undefined) { - type = 'keydown'; - } - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - _exportFunctions.bind(key,callback,type); - } - } - }; - - // get the key label from an event - _exportFunctions.getKey = function(event) { - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { - return key; - } - else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { - return key; - } - else if (event.keyCode == _keys[key].code && key == 'shift') { - return key; - } - } - } - return "unknown key, currently not supported"; - }; - - // unbind either a specific callback from a key or all of them (by leaving callback undefined) - _exportFunctions.unbind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (callback !== undefined) { - var newBindings = []; - var bound = _bound[type][_keys[key].code]; - if (bound !== undefined) { - for (var i = 0; i < bound.length; i++) { - if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { - newBindings.push(_bound[type][_keys[key].code][i]); - } - } - } - _bound[type][_keys[key].code] = newBindings; - } - else { - _bound[type][_keys[key].code] = []; - } - }; - - // reset all bound variables. - _exportFunctions.reset = function() { - _bound = {keydown:{}, keyup:{}}; - }; - - // unbind all listeners and reset all variables. - _exportFunctions.destroy = function() { - _bound = {keydown:{}, keyup:{}}; - container.removeEventListener('keydown', down, true); - container.removeEventListener('keyup', up, true); - }; - - // create listeners. - container.addEventListener('keydown',down,true); - container.addEventListener('keyup',up,true); - - // return the public functions. - return _exportFunctions; - } - - return keycharm; - })); - - - - /***/ }, /* 60 */ /***/ function(module, exports, __webpack_require__) { diff --git a/dist/vis.map b/dist/vis.map index 16496935..8932959c 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_RESULT__","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","code","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyBA,cAEA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,OAAOH,GACmB,gBAAZC,SACdA,QAAa,IAAID,IAEjBD,EAAU,IAAIC,KACbK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GAG9BN,EAAQe,KAAOT,EAAoB,GACnCN,EAAQgB,QAAUV,EAAoB,GAGtCN,EAAQiB,QAAUX,EAAoB,GACtCN,EAAQkB,SAAWZ,EAAoB,GACvCN,EAAQmB,MAAQb,EAAoB,GAGpCN,EAAQoB,QAAUd,EAAoB,GACtCN,EAAQqB,SACNC,OAAQhB,EAAoB,GAC5BiB,OAAQjB,EAAoB,GAC5BkB,QAASlB,EAAoB,GAC7BmB,QAASnB,EAAoB,IAC7BoB,OAAQpB,EAAoB,IAC5BqB,WAAYrB,EAAoB,KAIlCN,EAAQ4B,SAAWtB,EAAoB,IACvCN,EAAQ6B,QAAUvB,EAAoB,IACtCN,EAAQ8B,UACNC,SAAUzB,EAAoB,IAC9B0B,SAAU1B,EAAoB,IAC9B2B,MAAO3B,EAAoB,IAC3B4B,MAAO5B,EAAoB,IAC3B6B,SAAU7B,EAAoB,IAE9B8B,YACEC,OACEC,KAAMhC,EAAoB,IAC1BiC,eAAgBjC,EAAoB,IACpCkC,QAASlC,EAAoB,IAC7BmC,UAAWnC,EAAoB,IAC/BoC,UAAWpC,EAAoB,KAGjCqC,UAAWrC,EAAoB,IAC/BsC,YAAatC,EAAoB,IACjCuC,WAAYvC,EAAoB,IAChCwC,SAAUxC,EAAoB,IAC9ByC,WAAYzC,EAAoB,IAChC0C,MAAO1C,EAAoB,IAC3B2C,gBAAiB3C,EAAoB,IACrC4C,QAAS5C,EAAoB,IAC7B6C,OAAQ7C,EAAoB,IAC5B8C,UAAW9C,EAAoB,IAC/B+C,SAAU/C,EAAoB,MAKlCN,EAAQsD,QAAUhD,EAAoB,IACtCN,EAAQuD,SACNC,KAAMlD,EAAoB,IAC1BmD,OAAQnD,EAAoB,IAC5BoD,OAAQpD,EAAoB,IAC5BqD,KAAMrD,EAAoB,IAC1BsD,MAAOtD,EAAoB,IAC3BuD,UAAWvD,EAAoB,IAC/BwD,YAAaxD,EAAoB,KAInCN,EAAQ+D,MAAQ,WACd,KAAM,IAAIC,OAAM,+EAIlBhE,EAAQiE,OAAS3D,EAAoB,IACrCN,EAAQkE,OAAS5D,EAAoB,KAKjC,SAASL,EAAQD,EAASM,GAM9B,GAAI2D,GAAS3D,EAAoB,GAOjCN,GAAQmE,SAAW,SAASC,GAC1B,MAAQA,aAAkBC,SAA2B,gBAAVD,IAa7CpE,EAAQsE,UAAY,SAASC,EAAIC,EAAIC,EAAMC,GACzC,GAAIF,GAAOD,EACT,MAAO,EAGP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAGE,EAAQH,GAAKI,IASpC3E,EAAQ6E,SAAW,SAAST,GAC1B,MAAQA,aAAkBU,SAA2B,gBAAVV,IAQ7CpE,EAAQ+E,OAAS,SAASX,GACxB,GAAIA,YAAkBY,MACpB,OAAO,CAEJ,IAAIhF,EAAQ6E,SAAST,GAAS,CAEjC,GAAIa,GAAQC,EAAaC,KAAKf,EAC9B,IAAIa,EACF,OAAO,CAEJ,KAAKG,MAAMJ,KAAKK,MAAMjB,IACzB,OAAO,EAIX,OAAO,GAQTpE,EAAQsF,YAAc,SAASlB,GAC7B,MAA4B,mBAAb,SACVmB,OAAoB,eACpBA,OAAOC,cAAuB,WAC9BpB,YAAkBmB,QAAOC,cAAcC,WAQ9CzF,EAAQ0F,WAAa,WACnB,GAAIC,GAAK,WACP,MAAOf,MAAKgB,MACQ,MAAhBhB,KAAKiB,UACPC,SAAS,IAGb,OACIH,KAAOA,IAAO,IACVA,IAAO,IACPA,IAAO,IACPA,IAAO,IACPA,IAAOA,IAAOA,KAWxB3F,EAAQ+F,OAAS,SAAUC,GACzB,IAAK,GAAIC,GAAI,EAAGC,EAAMC,UAAUC,OAAYF,EAAJD,EAASA,IAAK,CACpD,GAAII,GAAQF,UAAUF,EACtB,KAAK,GAAIK,KAAQD,GACXA,EAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAKtB,MAAON,IAWThG,EAAQwG,gBAAkB,SAAUC,EAAOT,GACzC,IAAKU,MAAMC,QAAQF,GACjB,KAAM,IAAIzC,OAAM,uDAGlB,KAAK,GAAIiC,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAGpC,IAAK,GAFDI,GAAQF,UAAUF,GAEbnF,EAAI,EAAGA,EAAI2F,EAAML,OAAQtF,IAAK,CACrC,GAAIwF,GAAOG,EAAM3F,EACbuF,GAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAItB,MAAON,IAWThG,EAAQ4G,oBAAsB,SAAUH,EAAOT,EAAGa,GAEhD,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAEtB,KAAK,GAAIb,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAEpC,IAAK,GADDI,GAAQF,UAAUF,GACbnF,EAAI,EAAGA,EAAI2F,EAAML,OAAQtF,IAAK,CACrC,GAAIwF,GAAOG,EAAM3F,EACjB,IAAIuF,EAAME,eAAeD,GACvB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,IAMpB,MAAON,IAWThG,EAAQmH,uBAAyB,SAAUV,EAAOT,EAAGa,GAEnD,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAEtB,KAAK,GAAIR,KAAQO,GACf,GAAIA,EAAEN,eAAeD,IACQ,IAAvBG,EAAMW,QAAQd,GAChB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAKpB,MAAON,IASThG,EAAQkH,WAAa,SAASlB,EAAGa,GAE/B,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAGtB,KAAK,GAAIR,KAAQO,GACf,GAAIA,EAAEN,eAAeD,GACnB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAIlB,MAAON,IAUThG,EAAQqH,WAAa,SAAUrB,EAAGa,GAChC,GAAIb,EAAEI,QAAUS,EAAET,OAAQ,OAAO,CAEjC,KAAK,GAAIH,GAAI,EAAGC,EAAMF,EAAEI,OAAYF,EAAJD,EAASA,IACvC,GAAID,EAAEC,IAAMY,EAAEZ,GAAI,OAAO,CAG3B,QAAO,GAYTjG,EAAQsH,QAAU,SAASlD,EAAQmD,GACjC,GAAItC,EAEJ,IAAegC,SAAX7C,EACF,MAAO6C,OAET,IAAe,OAAX7C,EACF,MAAO,KAGT,KAAKmD,EACH,MAAOnD,EAET,IAAsB,gBAATmD,MAAwBA,YAAgBzC,SACnD,KAAM,IAAId,OAAM,wBAIlB,QAAQuD,GACN,IAAK,UACL,IAAK,UACH,MAAOC,SAAQpD,EAEjB,KAAK,SACL,IAAK,SACH,MAAOC,QAAOD,EAAOqD,UAEvB,KAAK,SACL,IAAK,SACH,MAAO3C,QAAOV,EAEhB,KAAK,OACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,IAAIY,MAAKZ,EAElB,IAAIA,YAAkBY,MACpB,MAAO,IAAIA,MAAKZ,EAAOqD,UAEpB,IAAIxD,EAAOyD,SAAStD,GACvB,MAAO,IAAIY,MAAKZ,EAAOqD,UAEzB,IAAIzH,EAAQ6E,SAAST,GAEnB,MADAa,GAAQC,EAAaC,KAAKf,GACtBa,EAEK,GAAID,MAAKX,OAAOY,EAAM,KAGtBhB,EAAOG,GAAQuD,QAIxB,MAAM,IAAI3D,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,gBAGZ,KAAK,SACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAOH,GAAOG,EAEhB,IAAIA,YAAkBY,MACpB,MAAOf,GAAOG,EAAOqD,UAElB,IAAIxD,EAAOyD,SAAStD,GACvB,MAAOH,GAAOG,EAEhB,IAAIpE,EAAQ6E,SAAST,GAEnB,MADAa,GAAQC,EAAaC,KAAKf,GAGjBH,EAFLgB,EAEYZ,OAAOY,EAAM,IAGbb,EAIhB,MAAM,IAAIJ,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,gBAGZ,KAAK,UACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,IAAIY,MAAKZ,EAEb,IAAIA,YAAkBY,MACzB,MAAOZ,GAAOyD,aAEX,IAAI5D,EAAOyD,SAAStD,GACvB,MAAOA,GAAOuD,SAASE,aAEpB,IAAI7H,EAAQ6E,SAAST,GAExB,MADAa,GAAQC,EAAaC,KAAKf,GACtBa,EAEK,GAAID,MAAKX,OAAOY,EAAM,KAAK4C,cAG3B,GAAI7C,MAAKZ,GAAQyD,aAI1B,MAAM,IAAI7D,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,mBAGZ,KAAK,UACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,SAAWA,EAAS,IAExB,IAAIA,YAAkBY,MACzB,MAAO,SAAWZ,EAAOqD,UAAY,IAElC,IAAIzH,EAAQ6E,SAAST,GAAS,CACjCa,EAAQC,EAAaC,KAAKf,EAC1B,IAAIM,EAQJ,OALEA,GAFEO,EAEM,GAAID,MAAKX,OAAOY,EAAM,KAAKwC,UAG3B,GAAIzC,MAAKZ,GAAQqD,UAEpB,SAAW/C,EAAQ,KAG1B,KAAM,IAAIV,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,mBAGZ,SACE,KAAM,IAAIJ,OAAM,iBAAmBuD,EAAO,MAOhD,IAAIrC,GAAe,qBAOnBlF,GAAQ4H,QAAU,SAASxD,GACzB,GAAImD,SAAcnD,EAElB,OAAY,UAARmD,EACY,MAAVnD,EACK,OAELA,YAAkBoD,SACb,UAELpD,YAAkBC,QACb,SAELD,YAAkBU,QACb,SAEL4B,MAAMC,QAAQvC,GACT,QAELA,YAAkBY,MACb,OAEF,SAEQ,UAARuC,EACA,SAEQ,WAARA,EACA,UAEQ,UAARA,EACA,SAGFA,GASTvH,EAAQ8H,gBAAkB,SAASC,GACjC,MAAOA,GAAKC,wBAAwBC,KAAOC,OAAOC,aASpDnI,EAAQoI,eAAiB,SAASL,GAChC,MAAOA,GAAKC,wBAAwBK,IAAMH,OAAOI,aAQnDtI,EAAQuI,aAAe,SAASR,EAAMS,GACpC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,IACD,KAA9BD,EAAQrB,QAAQoB,KAClBC,EAAQE,KAAKH,GACbT,EAAKS,UAAYC,EAAQG,KAAK,OASlC5I,EAAQ6I,gBAAkB,SAASd,EAAMS,GACvC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,KAC/BI,EAAQL,EAAQrB,QAAQoB,EACf,KAATM,IACFL,EAAQM,OAAOD,EAAO,GACtBf,EAAKS,UAAYC,EAAQG,KAAK,OAalC5I,EAAQgJ,QAAU,SAAS5E,EAAQ6E,GACjC,GAAIhD,GACAC,CACJ,IAAIQ,MAAMC,QAAQvC,GAEhB,IAAK6B,EAAI,EAAGC,EAAM9B,EAAOgC,OAAYF,EAAJD,EAASA,IACxCgD,EAAS7E,EAAO6B,GAAIA,EAAG7B,OAKzB,KAAK6B,IAAK7B,GACJA,EAAOmC,eAAeN,IACxBgD,EAAS7E,EAAO6B,GAAIA,EAAG7B,IAY/BpE,EAAQkJ,QAAU,SAAS9E,GACzB,GAAI+E,KAEJ,KAAK,GAAI7C,KAAQlC,GACXA,EAAOmC,eAAeD,IAAO6C,EAAMR,KAAKvE,EAAOkC,GAGrD,OAAO6C,IAUTnJ,EAAQoJ,eAAiB,SAAShF,EAAQiF,EAAK3E,GAC7C,MAAIN,GAAOiF,KAAS3E,GAClBN,EAAOiF,GAAO3E,GACP,IAGA,GAYX1E,EAAQsJ,iBAAmB,SAASC,EAASC,EAAQC,EAAUC,GACzDH,EAAQD,kBACSrC,SAAfyC,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUxC,QAAQ,YAAc,IACvEoC,EAAS,kBAGXD,EAAQD,iBAAiBE,EAAQC,EAAUC,IAE3CH,EAAQM,YAAY,KAAOL,EAAQC,IAWvCzJ,EAAQ8J,oBAAsB,SAASP,EAASC,EAAQC,EAAUC,GAC5DH,EAAQO,qBAES7C,SAAfyC,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUxC,QAAQ,YAAc,IACvEoC,EAAS,kBAGXD,EAAQO,oBAAoBN,EAAQC,EAAUC,IAG9CH,EAAQQ,YAAY,KAAOP,EAAQC,IAOvCzJ,EAAQgK,eAAiB,SAAUC,GAC5BA,IACHA,EAAQ/B,OAAO+B,OAEbA,EAAMD,eACRC,EAAMD,iBAGNC,EAAMC,aAAc,GASxBlK,EAAQmK,UAAY,SAASF,GAEtBA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAIG,EAcJ,OAZIH,GAAMG,OACRA,EAASH,EAAMG,OAERH,EAAMI,aACbD,EAASH,EAAMI,YAGMpD,QAAnBmD,EAAOE,UAA4C,GAAnBF,EAAOE,WAEzCF,EAASA,EAAOG,YAGXH,GAQTpK,EAAQwK,UAAY,SAAUjB,EAASkB,GAGrC,IAFA,GAAIC,GAAInB,EAEDmB,GAAG,CACR,GAAIA,IAAMD,EACR,OAAO,CAETC,GAAIA,EAAEH,WAGR,OAAO,GAGTvK,EAAQ2K,UAQR3K,EAAQ2K,OAAOC,UAAY,SAAUlG,EAAOmG,GAK1C,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACe,GAATA,EAGHmG,GAAgB,MASzB7K,EAAQ2K,OAAOG,SAAW,SAAUpG,EAAOmG,GAKzC,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACKL,OAAOK,IAAUmG,GAAgB,KAGnCA,GAAgB,MASzB7K,EAAQ2K,OAAOI,SAAW,SAAUrG,EAAOmG,GAKzC,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACKI,OAAOJ,GAGTmG,GAAgB,MASzB7K,EAAQ2K,OAAOK,OAAS,SAAUtG,EAAOmG,GAKvC,MAJoB,kBAATnG,KACTA,EAAQA,KAGN1E,EAAQ6E,SAASH,GACZA,EAEA1E,EAAQmE,SAASO,GACjBA,EAAQ,KAGRmG,GAAgB,MAU3B7K,EAAQ2K,OAAOM,UAAY,SAAUvG,EAAOmG,GAK1C,MAJoB,kBAATnG,KACTA,EAAQA,KAGHA,GAASmG,GAAgB,MASlC7K,EAAQkL,SAAW,SAASC,GAE1B,GAAIC,GAAiB,kCACrBD,GAAMA,EAAIE,QAAQD,EAAgB,SAASxK,EAAG0K,EAAGC,EAAG1E,GAChD,MAAOyE,GAAIA,EAAIC,EAAIA,EAAI1E,EAAIA,GAE/B,IAAI2E,GAAS,4CAA4CrG,KAAKgG,EAC9D,OAAOK,IACHF,EAAGG,SAASD,EAAO,GAAI,IACvBD,EAAGE,SAASD,EAAO,GAAI,IACvB3E,EAAG4E,SAASD,EAAO,GAAI,KACvB,MASNxL,EAAQ0L,gBAAkB,SAASC,EAAMC,GACvC,GAA4B,IAAxBD,EAAMvE,QAAQ,OAAc,CAC9B,GAAIyE,GAAMF,EAAMG,OAAOH,EAAMvE,QAAQ,KAAK,GAAGiE,QAAQ,IAAI,IAAI3C,MAAM,IACnE,OAAO,QAAUmD,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMD,EAAU,IAGxE,GAAIC,GAAM7L,EAAQkL,SAASS,EAC3B,OAAW,OAAPE,EACKF,EAGA,QAAUE,EAAIP,EAAI,IAAMO,EAAIN,EAAI,IAAMM,EAAIhF,EAAI,IAAM+E,EAAU,KAa3E5L,EAAQ+L,SAAW,SAASC,EAAIC,EAAMC,GACpC,MAAO,MAAQ,GAAK,KAAOF,GAAO,KAAOC,GAAS,GAAKC,GAAMpG,SAAS,IAAIqG,MAAM,IASlFnM,EAAQoM,WAAa,SAAST,GAC5B,GAAI9K,EACJ,IAAIb,EAAQ6E,SAAS8G,GAAQ,CAC3B,GAAI3L,EAAQqM,WAAWV,GAAQ,CAC7B,GAAIE,GAAMF,EAAMG,OAAO,GAAGA,OAAO,EAAEH,EAAMvF,OAAO,GAAGsC,MAAM,IACzDiD,GAAQ3L,EAAQ+L,SAASF,EAAI,GAAGA,EAAI,GAAGA,EAAI,IAE7C,GAAI7L,EAAQsM,WAAWX,GAAQ,CAC7B,GAAIY,GAAMvM,EAAQwM,SAASb,GACvBc,GAAmBC,EAAEH,EAAIG,EAAEC,EAAU,IAARJ,EAAII,EAASC,EAAEhI,KAAKL,IAAI,EAAU,KAARgI,EAAIK,IAC3DC,GAAmBH,EAAEH,EAAIG,EAAEC,EAAE/H,KAAKL,IAAI,EAAU,KAARgI,EAAIK,GAAUA,EAAQ,GAANL,EAAIK,GAC5DE,EAAkB9M,EAAQ+M,SAASF,EAAeH,EAAGG,EAAeH,EAAGG,EAAeD,GACtFI,EAAkBhN,EAAQ+M,SAASN,EAAgBC,EAAED,EAAgBE,EAAEF,EAAgBG,EAE3F/L,IACEoM,WAAYtB,EACZuB,OAAOJ,EACPK,WACEF,WAAWD,EACXE,OAAOJ,GAETM,OACEH,WAAWD,EACXE,OAAOJ,QAKXjM,IACEoM,WAAWtB,EACXuB,OAAOvB,EACPwB,WACEF,WAAWtB,EACXuB,OAAOvB,GAETyB,OACEH,WAAWtB,EACXuB,OAAOvB,QAMb9K,MACAA,EAAEoM,WAAatB,EAAMsB,YAAc,QACnCpM,EAAEqM,OAASvB,EAAMuB,QAAUrM,EAAEoM,WAEzBjN,EAAQ6E,SAAS8G,EAAMwB,WACzBtM,EAAEsM,WACAD,OAAQvB,EAAMwB,UACdF,WAAYtB,EAAMwB,YAIpBtM,EAAEsM,aACFtM,EAAEsM,UAAUF,WAAatB,EAAMwB,WAAaxB,EAAMwB,UAAUF,YAAcpM,EAAEoM,WAC5EpM,EAAEsM,UAAUD,OAASvB,EAAMwB,WAAaxB,EAAMwB,UAAUD,QAAUrM,EAAEqM,QAGlElN,EAAQ6E,SAAS8G,EAAMyB,OACzBvM,EAAEuM,OACAF,OAAQvB,EAAMyB,MACdH,WAAYtB,EAAMyB,QAIpBvM,EAAEuM,SACFvM,EAAEuM,MAAMH,WAAatB,EAAMyB,OAASzB,EAAMyB,MAAMH,YAAcpM,EAAEoM,WAChEpM,EAAEuM,MAAMF,OAASvB,EAAMyB,OAASzB,EAAMyB,MAAMF,QAAUrM,EAAEqM,OAI5D,OAAOrM,IAYTb,EAAQqN,SAAW,SAASrB,EAAIC,EAAMC,GACpCF,GAAQ,IAAKC,GAAY,IAAKC,GAAU,GACxC,IAAIoB,GAAS1I,KAAKL,IAAIyH,EAAIpH,KAAKL,IAAI0H,EAAMC,IACrCqB,EAAS3I,KAAKJ,IAAIwH,EAAIpH,KAAKJ,IAAIyH,EAAMC,GAGzC,IAAIoB,GAAUC,EACZ,OAAQb,EAAE,EAAEC,EAAE,EAAEC,EAAEU,EAIpB,IAAIE,GAAKxB,GAAKsB,EAAUrB,EAAMC,EAASA,GAAMoB,EAAUtB,EAAIC,EAAQC,EAAKF,EACpEU,EAAKV,GAAKsB,EAAU,EAAMpB,GAAMoB,EAAU,EAAI,EAC9CG,EAAM,IAAIf,EAAIc,GAAGD,EAASD,IAAS,IACnCI,GAAcH,EAASD,GAAQC,EAC/B7I,EAAQ6I,CACZ,QAAQb,EAAEe,EAAId,EAAEe,EAAWd,EAAElI,GAG/B,IAAIiJ,IAEFjF,MAAO,SAAUkF,GACf,GAAIC,KAWJ,OATAD,GAAQlF,MAAM,KAAKM,QAAQ,SAAU8E,GACnC,GAAoB,IAAhBA,EAAMC,OAAc,CACtB,GAAIC,GAAQF,EAAMpF,MAAM,KACpBW,EAAM2E,EAAM,GAAGD,OACfrJ,EAAQsJ,EAAM,GAAGD,MACrBF,GAAOxE,GAAO3E,KAIXmJ,GAITjF,KAAM,SAAUiF,GACd,MAAO7G,QAAOiH,KAAKJ,GACdK,IAAI,SAAU7E,GACb,MAAOA,GAAM,KAAOwE,EAAOxE,KAE5BT,KAAK,OASd5I,GAAQmO,WAAa,SAAU5E,EAASqE,GACtC,GAAIQ,GAAgBT,EAAQjF,MAAMa,EAAQuE,MAAMF,SAC5CS,EAAYV,EAAQjF,MAAMkF,GAC1BC,EAAS7N,EAAQ+F,OAAOqI,EAAeC,EAE3C9E,GAAQuE,MAAMF,QAAUD,EAAQ/E,KAAKiF,IAQvC7N,EAAQsO,cAAgB,SAAU/E,EAASqE,GACzC,GAAIC,GAASF,EAAQjF,MAAMa,EAAQuE,MAAMF,SACrCW,EAAeZ,EAAQjF,MAAMkF,EAEjC,KAAK,GAAIvE,KAAOkF,GACVA,EAAahI,eAAe8C,UACvBwE,GAAOxE,EAIlBE,GAAQuE,MAAMF,QAAUD,EAAQ/E,KAAKiF,IAWvC7N,EAAQwO,SAAW,SAAS9B,EAAGC,EAAGC,GAChC,GAAItB,GAAGC,EAAG1E,EAENZ,EAAIrB,KAAKgB,MAAU,EAAJ8G,GACf+B,EAAQ,EAAJ/B,EAAQzG,EACZnF,EAAI8L,GAAK,EAAID,GACb+B,EAAI9B,GAAK,EAAI6B,EAAI9B,GACjBgC,EAAI/B,GAAK,GAAK,EAAI6B,GAAK9B,EAE3B,QAAQ1G,EAAI,GACV,IAAK,GAAGqF,EAAIsB,EAAGrB,EAAIoD,EAAG9H,EAAI/F,CAAG,MAC7B,KAAK,GAAGwK,EAAIoD,EAAGnD,EAAIqB,EAAG/F,EAAI/F,CAAG,MAC7B,KAAK,GAAGwK,EAAIxK,EAAGyK,EAAIqB,EAAG/F,EAAI8H,CAAG,MAC7B,KAAK,GAAGrD,EAAIxK,EAAGyK,EAAImD,EAAG7H,EAAI+F,CAAG,MAC7B,KAAK,GAAGtB,EAAIqD,EAAGpD,EAAIzK,EAAG+F,EAAI+F,CAAG,MAC7B,KAAK,GAAGtB,EAAIsB,EAAGrB,EAAIzK,EAAG+F,EAAI6H,EAG5B,OAAQpD,EAAE1G,KAAKgB,MAAU,IAAJ0F,GAAUC,EAAE3G,KAAKgB,MAAU,IAAJ2F,GAAU1E,EAAEjC,KAAKgB,MAAU,IAAJiB,KAGrE7G,EAAQ+M,SAAW,SAASL,EAAGC,EAAGC,GAChC,GAAIf,GAAM7L,EAAQwO,SAAS9B,EAAGC,EAAGC,EACjC,OAAO5M,GAAQ+L,SAASF,EAAIP,EAAGO,EAAIN,EAAGM,EAAIhF,IAG5C7G,EAAQwM,SAAW,SAASrB,GAC1B,GAAIU,GAAM7L,EAAQkL,SAASC,EAC3B,OAAOnL,GAAQqN,SAASxB,EAAIP,EAAGO,EAAIN,EAAGM,EAAIhF,IAG5C7G,EAAQsM,WAAa,SAASnB,GAC5B,GAAIyD,GAAO,qCAAqCC,KAAK1D,EACrD,OAAOyD,IAGT5O,EAAQqM,WAAa,SAASR,GAC5BA,EAAMA,EAAIR,QAAQ,IAAI,GACtB,IAAIuD,GAAO,wCAAwCC,KAAKhD,EACxD,OAAO+C,IAUT5O,EAAQ8O,sBAAwB,SAASC,EAAQC,GAC/C,GAA8B,gBAAnBA,GAA6B,CAEtC,IAAK,GADDC,GAAWjI,OAAOkI,OAAOF,GACpB/I,EAAI,EAAGA,EAAI8I,EAAO3I,OAAQH,IAC7B+I,EAAgBzI,eAAewI,EAAO9I,KACC,gBAA9B+I,GAAgBD,EAAO9I,MAChCgJ,EAASF,EAAO9I,IAAMjG,EAAQmP,aAAaH,EAAgBD,EAAO9I,KAIxE,OAAOgJ,GAGP,MAAO,OAWXjP,EAAQmP,aAAe,SAASH,GAC9B,GAA8B,gBAAnBA,GAA6B,CACtC,GAAIC,GAAWjI,OAAOkI,OAAOF,EAC7B,KAAK,GAAI/I,KAAK+I,GACRA,EAAgBzI,eAAeN,IACA,gBAAtB+I,GAAgB/I,KACzBgJ,EAAShJ,GAAKjG,EAAQmP,aAAaH,EAAgB/I,IAIzD,OAAOgJ,GAGP,MAAO,OAcXjP,EAAQoP,aAAe,SAAUC,EAAaC,EAAS3E,GACrD,GAAwB1D,SAApBqI,EAAQ3E,GACV,GAA8B,iBAAnB2E,GAAQ3E,GACjB0E,EAAY1E,GAAQ4E,QAAUD,EAAQ3E,OAEnC,CACH0E,EAAY1E,GAAQ4E,SAAU,CAC9B,KAAK,GAAIjJ,KAAQgJ,GAAQ3E,GACnB2E,EAAQ3E,GAAQpE,eAAeD,KACjC+I,EAAY1E,GAAQrE,GAAQgJ,EAAQ3E,GAAQrE,MAmBtDtG,EAAQwP,mBAAqB,SAASC,EAAcC,EAAgBC,EAAOC,GAMzE,IALA,GAAIC,GAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAarJ,OAAS,EAEnB4J,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAASrL,KAAKgB,OAAOmK,EAAMC,GAAQ,GAEnCE,EAAOT,EAAaQ,GACpBvL,EAAoBuC,SAAX2I,EAAwBM,EAAKP,GAASO,EAAKP,GAAOC,GAE3DO,EAAeT,EAAehL,EAClC,IAAoB,GAAhByL,EACF,MAAOF,EAEgB,KAAhBE,EACPJ,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGlBH,IAGF,MAAO,IAeT9P,EAAQoQ,kBAAoB,SAASX,EAAcrF,EAAQuF,EAAOU,GAOhE,IANA,GAIIC,GAAW5L,EAAO6L,EAAWN,EAJ7BJ,EAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAarJ,OAAS,EAGnB4J,GAAPD,GAA2BF,EAAZC,GAA2B,CAO/C,GALAG,EAASrL,KAAKgB,MAAM,IAAKoK,EAAKD,IAC9BO,EAAYb,EAAa7K,KAAKJ,IAAI,EAAEyL,EAAS,IAAIN,GACjDjL,EAAY+K,EAAaQ,GAAQN,GACjCY,EAAYd,EAAa7K,KAAKL,IAAIkL,EAAarJ,OAAO,EAAE6J,EAAS,IAAIN,GAEjEjL,GAAS0F,EACX,MAAO6F,EAEJ,IAAgB7F,EAAZkG,GAAsB5L,EAAQ0F,EACrC,MAAyB,UAAlBiG,EAA6BzL,KAAKJ,IAAI,EAAEyL,EAAS,GAAKA,CAE1D,IAAY7F,EAAR1F,GAAkB6L,EAAYnG,EACrC,MAAyB,UAAlBiG,EAA6BJ,EAASrL,KAAKL,IAAIkL,EAAarJ,OAAO,EAAE6J,EAAS,EAGzE7F,GAAR1F,EACFqL,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGpBH,IAIF,MAAO,IAYT9P,EAAQwQ,cAAgB,SAAU7B,EAAG8B,EAAOC,EAAKC,GAC/C,GAAIC,GAASF,EAAMD,CAEnB,OADA9B,IAAKgC,EAAS,EACN,EAAJhC,EAAciC,EAAO,EAAEjC,EAAEA,EAAI8B,GACjC9B,KACQiC,EAAO,GAAKjC,GAAGA,EAAE,GAAK,GAAK8B,IAUrCzQ,EAAQ6Q,iBAENC,OAAQ,SAAUnC,GAChB,MAAOA,IAGToC,WAAY,SAAUpC,GACpB,MAAOA,GAAIA,GAGbqC,YAAa,SAAUrC,GACrB,MAAOA,IAAK,EAAIA,IAGlB6B,cAAe,SAAU7B,GACvB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAI,IAAM,EAAI,EAAIA,GAAKA,GAGjDsC,YAAa,SAAUtC,GACrB,MAAOA,GAAIA,EAAIA,GAGjBuC,aAAc,SAAUvC,GACtB,QAAUA,EAAKA,EAAIA,EAAI,GAGzBwC,eAAgB,SAAUxC,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,GAGxEyC,YAAa,SAAUzC,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,GAGrB0C,aAAc,SAAU1C,GACtB,MAAO,MAAOA,EAAKA,EAAIA,EAAIA,GAG7B2C,eAAgB,SAAU3C,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,IAAOA,EAAKA,EAAIA,EAAIA,GAG9D4C,YAAa,SAAU5C,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAGzB6C,aAAc,SAAU7C,GACtB,MAAO,KAAOA,EAAKA,EAAIA,EAAIA,EAAIA,GAGjC8C,eAAgB,SAAU9C,GACxB,MAAW,GAAJA,EAAS,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,KAAQA,EAAKA,EAAIA,EAAIA,EAAIA,KAMtE,SAAS1O,EAAQD,GASrBA,EAAQ0R,gBAAkB,SAASC,GAEjC,IAAK,GAAIC,KAAeD,GAClBA,EAAcpL,eAAeqL,KAC/BD,EAAcC,GAAaC,UAAYF,EAAcC,GAAaE,KAClEH,EAAcC,GAAaE,UAYjC9R,EAAQ+R,gBAAkB,SAASJ,GAEjC,IAAK,GAAIC,KAAeD,GACtB,GAAIA,EAAcpL,eAAeqL,IAC3BD,EAAcC,GAAaC,UAAW,CACxC,IAAK,GAAI5L,GAAI,EAAGA,EAAI0L,EAAcC,GAAaC,UAAUzL,OAAQH,IAC/D0L,EAAcC,GAAaC,UAAU5L,GAAGsE,WAAWyH,YAAYL,EAAcC,GAAaC,UAAU5L,GAEtG0L,GAAcC,GAAaC,eAgBnC7R,EAAQiS,cAAgB,SAAUL,EAAaD,EAAeO,GAC5D,GAAI3I,EAqBJ,OAnBIoI,GAAcpL,eAAeqL,GAE3BD,EAAcC,GAAaC,UAAUzL,OAAS,GAChDmD,EAAUoI,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrC5I,EAAU6I,SAASC,gBAAgB,6BAA8BT,GACjEM,EAAaI,YAAY/I,KAK3BA,EAAU6I,SAASC,gBAAgB,6BAA8BT,GACjED,EAAcC,IAAgBE,QAAUD,cACxCK,EAAaI,YAAY/I,IAE3BoI,EAAcC,GAAaE,KAAKnJ,KAAKY,GAC9BA,GAcTvJ,EAAQuS,cAAgB,SAAUX,EAAaD,EAAea,EAAcC,GAC1E,GAAIlJ,EA+BJ,OA7BIoI,GAAcpL,eAAeqL,GAE3BD,EAAcC,GAAaC,UAAUzL,OAAS,GAChDmD,EAAUoI,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrC5I,EAAU6I,SAASM,cAAcd,GACZ3K,SAAjBwL,EACFD,EAAaC,aAAalJ,EAASkJ,GAGnCD,EAAaF,YAAY/I,KAM7BA,EAAU6I,SAASM,cAAcd,GACjCD,EAAcC,IAAgBE,QAAUD,cACnB5K,SAAjBwL,EACFD,EAAaC,aAAalJ,EAASkJ,GAGnCD,EAAaF,YAAY/I,IAG7BoI,EAAcC,GAAaE,KAAKnJ,KAAKY,GAC9BA,GAmBTvJ,EAAQ2S,UAAY,SAASC,EAAGC,EAAGC,EAAOnB,EAAeO,EAAca,GACrE,GAAIC,EACkC,WAAlCF,EAAMxD,QAAQ2D,WAAWnF,OAC3BkF,EAAQhT,EAAQiS,cAAc,SAASN,EAAcO,GACrDc,EAAME,eAAe,KAAM,KAAMN,GACjCI,EAAME,eAAe,KAAM,KAAML,GACjCG,EAAME,eAAe,KAAM,IAAK,GAAMJ,EAAMxD,QAAQ2D,WAAWE,QAG/DH,EAAQhT,EAAQiS,cAAc,OAAON,EAAcO,GACnDc,EAAME,eAAe,KAAM,IAAKN,EAAI,GAAIE,EAAMxD,QAAQ2D,WAAWE,MACjEH,EAAME,eAAe,KAAM,IAAKL,EAAI,GAAIC,EAAMxD,QAAQ2D,WAAWE,MACjEH,EAAME,eAAe,KAAM,QAASJ,EAAMxD,QAAQ2D,WAAWE,MAC7DH,EAAME,eAAe,KAAM,SAAUJ,EAAMxD,QAAQ2D,WAAWE,OAGzBlM,SAApC6L,EAAMxD,QAAQ2D,WAAWpF,QAC1BmF,EAAME,eAAe,KAAM,QAASJ,EAAMA,MAAMxD,QAAQ2D,WAAWpF,QAErEmF,EAAME,eAAe,KAAM,QAASJ,EAAMtK,UAAY,SAEtD,IAAI4K,GAAQpT,EAAQiS,cAAc,OAAON,EAAcO,EAqBvD,OApBIa,KACIA,EAASM,UACXT,GAAQG,EAASM,SAGfN,EAASO,UACXT,GAAQE,EAASO,SAEfP,EAASQ,UACXH,EAAMI,YAAcT,EAASQ,SAG3BR,EAASvK,WACX4K,EAAMF,eAAe,KAAM,QAASH,EAASvK,UAAa,WAKhE4K,EAAMF,eAAe,KAAM,IAAKN,GAChCQ,EAAMF,eAAe,KAAM,IAAKL,GACzBG,GAUThT,EAAQyT,QAAU,SAAUb,EAAGC,EAAGa,EAAOC,EAAQnL,EAAWmJ,EAAeO,GACzE,GAAc,GAAVyB,EAAa,CACF,EAATA,IACFA,GAAU,GACVd,GAAKc,EAEP,IAAIC,GAAO5T,EAAQiS,cAAc,OAAON,EAAeO,EACvD0B,GAAKV,eAAe,KAAM,IAAKN,EAAI,GAAMc,GACzCE,EAAKV,eAAe,KAAM,IAAKL,GAC/Be,EAAKV,eAAe,KAAM,QAASQ,GACnCE,EAAKV,eAAe,KAAM,SAAUS,GACpCC,EAAKV,eAAe,KAAM,QAAS1K,MAMnC,SAASvI,EAAQD,EAASM,GAgD9B,QAASW,GAAS4S,EAAMvE,GAetB,IAbIuE,GAASnN,MAAMC,QAAQkN,IAAU9S,EAAKuE,YAAYuO,KACpDvE,EAAUuE,EACVA,EAAO,MAGTzT,KAAK0T,SAAWxE,MAChBlP,KAAK2T,SACL3T,KAAKgG,OAAS,EACdhG,KAAK4T,SAAW5T,KAAK0T,SAASG,SAAW,KACzC7T,KAAK8T,SAID9T,KAAK0T,SAASvM,KAChB,IAAK,GAAIoI,KAASvP,MAAK0T,SAASvM,KAC9B,GAAInH,KAAK0T,SAASvM,KAAKhB,eAAeoJ,GAAQ,CAC5C,GAAIjL,GAAQtE,KAAK0T,SAASvM,KAAKoI,EAE7BvP,MAAK8T,MAAMvE,GADA,QAATjL,GAA4B,WAATA,GAA+B,WAATA,EACvB,OAGAA,EAO5B,GAAItE,KAAK0T,SAASxM,QAChB,KAAM,IAAItD,OAAM,sDAGlB5D,MAAK+T,gBAGDN,GACFzT,KAAKgU,IAAIP,GAGXzT,KAAKiU,WAAW/E,GAvFlB,GAAIvO,GAAOT,EAAoB,GAC3Ba,EAAQb,EAAoB,EAkGhCW,GAAQqT,UAAUD,WAAa,SAAS/E,GAClCA,GAA6BrI,SAAlBqI,EAAQiF,QACjBjF,EAAQiF,SAAU,EAEhBnU,KAAKoU,SACPpU,KAAKoU,OAAOC,gBACLrU,MAAKoU,SAKTpU,KAAKoU,SACRpU,KAAKoU,OAASrT,EAAM4E,OAAO3F,MACzBiL,SAAU,MAAO,SAAU,aAIF,gBAAlBiE,GAAQiF,OACjBnU,KAAKoU,OAAOH,WAAW/E,EAAQiF,UAevCtT,EAAQqT,UAAUI,GAAK,SAASzK,EAAOhB,GACrC,GAAI0L,GAAcvU,KAAK+T,aAAalK,EAC/B0K,KACHA,KACAvU,KAAK+T,aAAalK,GAAS0K,GAG7BA,EAAYhM,MACVM,SAAUA,KAKdhI,EAAQqT,UAAUM,UAAY3T,EAAQqT,UAAUI,GAOhDzT,EAAQqT,UAAUO,IAAM,SAAS5K,EAAOhB,GACtC,GAAI0L,GAAcvU,KAAK+T,aAAalK,EAChC0K,KACFvU,KAAK+T,aAAalK,GAAS0K,EAAYG,OAAO,SAAUrL,GACtD,MAAQA,GAASR,UAAYA,MAMnChI,EAAQqT,UAAUS,YAAc9T,EAAQqT,UAAUO,IASlD5T,EAAQqT,UAAUU,SAAW,SAAU/K,EAAOgL,EAAQC,GACpD,GAAa,KAATjL,EACF,KAAM,IAAIjG,OAAM,yBAGlB,IAAI2Q,KACA1K,KAAS7J,MAAK+T,eAChBQ,EAAcA,EAAYQ,OAAO/U,KAAK+T,aAAalK,KAEjD,KAAO7J,MAAK+T,eACdQ,EAAcA,EAAYQ,OAAO/U,KAAK+T,aAAa,MAGrD,KAAK,GAAIlO,GAAI,EAAGA,EAAI0O,EAAYvO,OAAQH,IAAK,CAC3C,GAAImP,GAAaT,EAAY1O,EACzBmP,GAAWnM,UACbmM,EAAWnM,SAASgB,EAAOgL,EAAQC,GAAY,QAYrDjU,EAAQqT,UAAUF,IAAM,SAAUP,EAAMqB,GACtC,GACIzU,GADA4U,KAEAC,EAAKlV,IAET,IAAIsG,MAAMC,QAAQkN,GAEhB,IAAK,GAAI5N,GAAI,EAAGC,EAAM2N,EAAKzN,OAAYF,EAAJD,EAASA,IAC1CxF,EAAK6U,EAAGC,SAAS1B,EAAK5N,IACtBoP,EAAS1M,KAAKlI,OAGb,IAAIM,EAAKuE,YAAYuO,GAGxB,IAAK,GADD2B,GAAUpV,KAAKqV,gBAAgB5B,GAC1B6B,EAAM,EAAGC,EAAO9B,EAAK+B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDxF,MACK2F,EAAM,EAAGC,EAAON,EAAQpP,OAAc0P,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB3F,GAAKP,GAASkE,EAAKkC,SAASL,EAAKG,GAGnCpV,EAAK6U,EAAGC,SAASrF,GACjBmF,EAAS1M,KAAKlI,OAGb,CAAA,KAAIoT,YAAgB7M,SAMvB,KAAM,IAAIhD,OAAM,mBAJhBvD,GAAK6U,EAAGC,SAAS1B,GACjBwB,EAAS1M,KAAKlI,GAUhB,MAJI4U,GAASjP,QACXhG,KAAK4U,SAAS,OAAQ3S,MAAOgT,GAAWH,GAGnCG,GASTpU,EAAQqT,UAAU0B,OAAS,SAAUnC,EAAMqB,GACzC,GAAIG,MACAY,KACAC,KACAZ,EAAKlV,KACL6T,EAAUqB,EAAGtB,SAEbmC,EAAc,SAAUjG,GAC1B,GAAIzP,GAAKyP,EAAK+D,EACVqB,GAAGvB,MAAMtT,IAEXA,EAAK6U,EAAGc,YAAYlG,GACpB+F,EAAWtN,KAAKlI,GAChByV,EAAYvN,KAAKuH,KAIjBzP,EAAK6U,EAAGC,SAASrF,GACjBmF,EAAS1M,KAAKlI,IAIlB,IAAIiG,MAAMC,QAAQkN,GAEhB,IAAK,GAAI5N,GAAI,EAAGC,EAAM2N,EAAKzN,OAAYF,EAAJD,EAASA,IAC1CkQ,EAAYtC,EAAK5N,QAGhB,IAAIlF,EAAKuE,YAAYuO,GAGxB,IAAK,GADD2B,GAAUpV,KAAKqV,gBAAgB5B,GAC1B6B,EAAM,EAAGC,EAAO9B,EAAK+B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDxF,MACK2F,EAAM,EAAGC,EAAON,EAAQpP,OAAc0P,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB3F,GAAKP,GAASkE,EAAKkC,SAASL,EAAKG,GAGnCM,EAAYjG,OAGX,CAAA,KAAI2D,YAAgB7M,SAKvB,KAAM,IAAIhD,OAAM,mBAHhBmS,GAAYtC,GAad,MAPIwB,GAASjP,QACXhG,KAAK4U,SAAS,OAAQ3S,MAAOgT,GAAWH,GAEtCe,EAAW7P,QACbhG,KAAK4U,SAAS,UAAW3S,MAAO4T,EAAYpC,KAAMqC,GAAchB,GAG3DG,EAASF,OAAOc,IAsCzBhV,EAAQqT,UAAU+B,IAAM,WACtB,GAGI5V,GAAI6V,EAAKhH,EAASuE,EAHlByB,EAAKlV,KAILmW,EAAYxV,EAAK6G,QAAQzB,UAAU,GACtB,WAAboQ,GAAsC,UAAbA,GAE3B9V,EAAK0F,UAAU,GACfmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,IAEG,SAAboQ,GAEPD,EAAMnQ,UAAU,GAChBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,KAIjBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,GAInB,IAAIqQ,EACJ,IAAIlH,GAAWA,EAAQkH,WAAY,CACjC,GAAIC,IAAiB,YAAa,QAAS,SAG3C,IAFAD,EAA0D,IAA7CC,EAAcrP,QAAQkI,EAAQkH,YAAoB,QAAUlH,EAAQkH,WAE7E3C,GAAS2C,GAAczV,EAAK6G,QAAQiM,GACtC,KAAM,IAAI7P,OAAM,6BAA+BjD,EAAK6G,QAAQiM,GAAQ,sDACVvE,EAAQ/H,KAAO,IAE3E,IAAkB,aAAdiP,IAA8BzV,EAAKuE,YAAYuO,GACjD,KAAM,IAAI7P,OAAM,6EAKlBwS,GADO3C,GAC6B,aAAtB9S,EAAK6G,QAAQiM,GAAwB,YAGtC,OAIf,IAEgB3D,GAAMwG,EAAQzQ,EAAGC,EAF7BqB,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChDuN,EAASxF,GAAWA,EAAQwF,OAC5BzS,IAGJ,IAAU4E,QAANxG,EAEFyP,EAAOoF,EAAGqB,SAASlW,EAAI8G,GACnBuN,IAAWA,EAAO5E,KACpBA,EAAO,UAGN,IAAWjJ,QAAPqP,EAEP,IAAKrQ,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCiK,EAAOoF,EAAGqB,SAASL,EAAIrQ,GAAIsB,KACtBuN,GAAUA,EAAO5E,KACpB7N,EAAMsG,KAAKuH,OAMf,KAAKwG,IAAUtW,MAAK2T,MACd3T,KAAK2T,MAAMxN,eAAemQ,KAC5BxG,EAAOoF,EAAGqB,SAASD,EAAQnP,KACtBuN,GAAUA,EAAO5E,KACpB7N,EAAMsG,KAAKuH,GAYnB,IALIZ,GAAWA,EAAQsH,OAAe3P,QAANxG,GAC9BL,KAAKyW,MAAMxU,EAAOiN,EAAQsH,OAIxBtH,GAAWA,EAAQP,OAAQ,CAC7B,GAAIA,GAASO,EAAQP,MACrB,IAAU9H,QAANxG,EACFyP,EAAO9P,KAAK0W,cAAc5G,EAAMnB,OAGhC,KAAK9I,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvC5D,EAAM4D,GAAK7F,KAAK0W,cAAczU,EAAM4D,GAAI8I,GAM9C,GAAkB,aAAdyH,EAA2B,CAC7B,GAAIhB,GAAUpV,KAAKqV,gBAAgB5B,EACnC,IAAU5M,QAANxG,EAEF6U,EAAGyB,WAAWlD,EAAM2B,EAAStF,OAI7B,KAAKjK,EAAI,EAAGA,EAAI5D,EAAM+D,OAAQH,IAC5BqP,EAAGyB,WAAWlD,EAAM2B,EAASnT,EAAM4D,GAGvC,OAAO4N,GAEJ,GAAkB,UAAd2C,EAAwB,CAC/B,GAAIhL,KACJ,KAAKvF,EAAI,EAAGA,EAAI5D,EAAM+D,OAAQH,IAC5BuF,EAAOnJ,EAAM4D,GAAGxF,IAAM4B,EAAM4D,EAE9B,OAAOuF,GAIP,GAAUvE,QAANxG,EAEF,MAAOyP,EAIP,IAAI2D,EAAM,CAER,IAAK5N,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvC4N,EAAKlL,KAAKtG,EAAM4D,GAElB,OAAO4N,GAIP,MAAOxR,IAcfpB,EAAQqT,UAAU0C,OAAS,SAAU1H,GACnC,GAIIrJ,GACAC,EACAzF,EACAyP,EACA7N,EARAwR,EAAOzT,KAAK2T,MACZe,EAASxF,GAAWA,EAAQwF,OAC5B8B,EAAQtH,GAAWA,EAAQsH,MAC3BrP,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAMhD+O,IAEJ,IAAIxB,EAEF,GAAI8B,EAAO,CAETvU,IACA,KAAK5B,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,GACrBuN,EAAO5E,IACT7N,EAAMsG,KAAKuH,GAOjB,KAFA9P,KAAKyW,MAAMxU,EAAOuU,GAEb3Q,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvCqQ,EAAIrQ,GAAK5D,EAAM4D,GAAG7F,KAAK4T,cAKzB,KAAKvT,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,GACrBuN,EAAO5E,IACToG,EAAI3N,KAAKuH,EAAK9P,KAAK4T,gBAQ3B,IAAI4C,EAAO,CAETvU,IACA,KAAK5B,IAAMoT,GACLA,EAAKtN,eAAe9F,IACtB4B,EAAMsG,KAAKkL,EAAKpT,GAMpB,KAFAL,KAAKyW,MAAMxU,EAAOuU,GAEb3Q,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvCqQ,EAAIrQ,GAAK5D,EAAM4D,GAAG7F,KAAK4T,cAKzB,KAAKvT,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO2D,EAAKpT,GACZ6V,EAAI3N,KAAKuH,EAAK9P,KAAK4T,WAM3B,OAAOsC,IAOTrV,EAAQqT,UAAU2C,WAAa,WAC7B,MAAO7W,OAaTa,EAAQqT,UAAUtL,QAAU,SAAUC,EAAUqG,GAC9C,GAGIY,GACAzP,EAJAqU,EAASxF,GAAWA,EAAQwF,OAC5BvN,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChDsM,EAAOzT,KAAK2T,KAIhB,IAAIzE,GAAWA,EAAQsH,MAIrB,IAAK,GAFDvU,GAAQjC,KAAKiW,IAAI/G,GAEZrJ,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IAC3CiK,EAAO7N,EAAM4D,GACbxF,EAAKyP,EAAK9P,KAAK4T,UACf/K,EAASiH,EAAMzP,OAKjB,KAAKA,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,KACpBuN,GAAUA,EAAO5E,KACpBjH,EAASiH,EAAMzP,KAkBzBQ,EAAQqT,UAAUpG,IAAM,SAAUjF,EAAUqG,GAC1C,GAIIY,GAJA4E,EAASxF,GAAWA,EAAQwF,OAC5BvN,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChD2P,KACArD,EAAOzT,KAAK2T,KAIhB,KAAK,GAAItT,KAAMoT,GACTA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,KACpBuN,GAAUA,EAAO5E,KACpBgH,EAAYvO,KAAKM,EAASiH,EAAMzP,IAUtC,OAJI6O,IAAWA,EAAQsH,OACrBxW,KAAKyW,MAAMK,EAAa5H,EAAQsH,OAG3BM,GAUTjW,EAAQqT,UAAUwC,cAAgB,SAAU5G,EAAMnB,GAChD,IAAKmB,EACH,MAAOA,EAGT,IAAIiH,KAEJ,IAAGzQ,MAAMC,QAAQoI,GACf,IAAK,GAAIY,KAASO,GACZA,EAAK3J,eAAeoJ,IAAoC,IAAzBZ,EAAO3H,QAAQuI,KAChDwH,EAAaxH,GAASO,EAAKP,QAI/B,KAAK,GAAIA,KAASO,GACZA,EAAK3J,eAAeoJ,IAAUZ,EAAOxI,eAAeoJ,KACtDwH,EAAapI,EAAOY,IAAUO,EAAKP,GAKzC,OAAOwH,IASTlW,EAAQqT,UAAUuC,MAAQ,SAAUxU,EAAOuU,GACzC,GAAI7V,EAAK8D,SAAS+R,GAAQ,CAExB,GAAIQ,GAAOR,CACXvU,GAAMgV,KAAK,SAAUrR,EAAGa,GACtB,GAAIyQ,GAAKtR,EAAEoR,GACPG,EAAK1Q,EAAEuQ,EACX,OAAQE,GAAKC,EAAM,EAAWA,EAALD,EAAW,GAAK,QAGxC,CAAA,GAAqB,kBAAVV,GAOd,KAAM,IAAI9P,WAAU,uCALpBzE,GAAMgV,KAAKT,KAgBf3V,EAAQqT,UAAUkD,OAAS,SAAU/W,EAAIyU,GACvC,GACIjP,GAAGC,EAAKuR,EADRC,IAGJ,IAAIhR,MAAMC,QAAQlG,GAChB,IAAKwF,EAAI,EAAGC,EAAMzF,EAAG2F,OAAYF,EAAJD,EAASA,IACpCwR,EAAYrX,KAAKuX,QAAQlX,EAAGwF,IACX,MAAbwR,GACFC,EAAW/O,KAAK8O,OAKpBA,GAAYrX,KAAKuX,QAAQlX,GACR,MAAbgX,GACFC,EAAW/O,KAAK8O,EAQpB,OAJIC,GAAWtR,QACbhG,KAAK4U,SAAS,UAAW3S,MAAOqV,GAAaxC,GAGxCwC,GASTzW,EAAQqT,UAAUqD,QAAU,SAAUlX,GACpC,GAAIM,EAAKoD,SAAS1D,IAAOM,EAAK8D,SAASpE,IACrC,GAAIL,KAAK2T,MAAMtT,GAGb,aAFOL,MAAK2T,MAAMtT,GAClBL,KAAKgG,SACE3F,MAGN,IAAIA,YAAcuG,QAAQ,CAC7B,GAAI0P,GAASjW,EAAGL,KAAK4T,SACrB,IAAI0C,GAAUtW,KAAK2T,MAAM2C,GAGvB,aAFOtW,MAAK2T,MAAM2C,GAClBtW,KAAKgG,SACEsQ,EAGX,MAAO,OAQTzV,EAAQqT,UAAUsD,MAAQ,SAAU1C,GAClC,GAAIoB,GAAMtP,OAAOiH,KAAK7N,KAAK2T,MAO3B,OALA3T,MAAK2T,SACL3T,KAAKgG,OAAS,EAEdhG,KAAK4U,SAAS,UAAW3S,MAAOiU,GAAMpB,GAE/BoB,GAQTrV,EAAQqT,UAAU9P,IAAM,SAAUmL,GAChC,GAAIkE,GAAOzT,KAAK2T,MACZvP,EAAM,KACNqT,EAAW,IAEf,KAAK,GAAIpX,KAAMoT,GACb,GAAIA,EAAKtN,eAAe9F,GAAK,CAC3B,GAAIyP,GAAO2D,EAAKpT,GACZqX,EAAY5H,EAAKP,EACJ,OAAbmI,KAAuBtT,GAAOsT,EAAYD,KAC5CrT,EAAM0L,EACN2H,EAAWC,GAKjB,MAAOtT,IAQTvD,EAAQqT,UAAU/P,IAAM,SAAUoL,GAChC,GAAIkE,GAAOzT,KAAK2T,MACZxP,EAAM,KACNwT,EAAW,IAEf,KAAK,GAAItX,KAAMoT,GACb,GAAIA,EAAKtN,eAAe9F,GAAK,CAC3B,GAAIyP,GAAO2D,EAAKpT,GACZqX,EAAY5H,EAAKP,EACJ,OAAbmI,KAAuBvT,GAAmBwT,EAAZD,KAChCvT,EAAM2L,EACN6H,EAAWD,GAKjB,MAAOvT,IAUTtD,EAAQqT,UAAU0D,SAAW,SAAUrI,GACrC,GAII1J,GAJA4N,EAAOzT,KAAK2T,MACZkE,KACAC,EAAY9X,KAAK0T,SAASvM,MAAQnH,KAAK0T,SAASvM,KAAKoI,IAAU,KAC/DwI,EAAQ,CAGZ,KAAK,GAAI7R,KAAQuN,GACf,GAAIA,EAAKtN,eAAeD,GAAO,CAC7B,GAAI4J,GAAO2D,EAAKvN,GACZ5B,EAAQwL,EAAKP,GACbyI,GAAS,CACb,KAAKnS,EAAI,EAAOkS,EAAJlS,EAAWA,IACrB,GAAIgS,EAAOhS,IAAMvB,EAAO,CACtB0T,GAAS,CACT,OAGCA,GAAqBnR,SAAVvC,IACduT,EAAOE,GAASzT,EAChByT,KAKN,GAAID,EACF,IAAKjS,EAAI,EAAGA,EAAIgS,EAAO7R,OAAQH,IAC7BgS,EAAOhS,GAAKlF,EAAKuG,QAAQ2Q,EAAOhS,GAAIiS,EAIxC,OAAOD,IASThX,EAAQqT,UAAUiB,SAAW,SAAUrF,GACrC,GAAIzP,GAAKyP,EAAK9P,KAAK4T,SAEnB,IAAU/M,QAANxG,GAEF,GAAIL,KAAK2T,MAAMtT,GAEb,KAAM,IAAIuD,OAAM,iCAAmCvD,EAAK,uBAK1DA,GAAKM,EAAK2E,aACVwK,EAAK9P,KAAK4T,UAAYvT,CAGxB,IAAI+M,KACJ,KAAK,GAAImC,KAASO,GAChB,GAAIA,EAAK3J,eAAeoJ,GAAQ,CAC9B,GAAIuI,GAAY9X,KAAK8T,MAAMvE,EAC3BnC,GAAEmC,GAAS5O,EAAKuG,QAAQ4I,EAAKP,GAAQuI,GAMzC,MAHA9X,MAAK2T,MAAMtT,GAAM+M,EACjBpN,KAAKgG,SAEE3F,GAUTQ,EAAQqT,UAAUqC,SAAW,SAAUlW,EAAI4X,GACzC,GAAI1I,GAAOjL,EAGP4T,EAAMlY,KAAK2T,MAAMtT,EACrB,KAAK6X,EACH,MAAO,KAIT,IAAIC,KACJ,IAAIF,EACF,IAAK1I,IAAS2I,GACRA,EAAI/R,eAAeoJ,KACrBjL,EAAQ4T,EAAI3I,GACZ4I,EAAU5I,GAAS5O,EAAKuG,QAAQ5C,EAAO2T,EAAM1I,SAMjD,KAAKA,IAAS2I,GACRA,EAAI/R,eAAeoJ,KACrBjL,EAAQ4T,EAAI3I,GACZ4I,EAAU5I,GAASjL,EAIzB,OAAO6T,IAWTtX,EAAQqT,UAAU8B,YAAc,SAAUlG,GACxC,GAAIzP,GAAKyP,EAAK9P,KAAK4T,SACnB,IAAU/M,QAANxG,EACF,KAAM,IAAIuD,OAAM,6CAA+CwU,KAAKC,UAAUvI,GAAQ,IAExF,IAAI1C,GAAIpN,KAAK2T,MAAMtT,EACnB,KAAK+M,EAEH,KAAM,IAAIxJ,OAAM,uCAAyCvD,EAAK,SAIhE,KAAK,GAAIkP,KAASO,GAChB,GAAIA,EAAK3J,eAAeoJ,GAAQ,CAC9B,GAAIuI,GAAY9X,KAAK8T,MAAMvE,EAC3BnC,GAAEmC,GAAS5O,EAAKuG,QAAQ4I,EAAKP,GAAQuI,GAIzC,MAAOzX,IASTQ,EAAQqT,UAAUmB,gBAAkB,SAAUiD,GAE5C,IAAK,GADDlD,MACKK,EAAM,EAAGC,EAAO4C,EAAUC,qBAA4B7C,EAAND,EAAYA,IACnEL,EAAQK,GAAO6C,EAAUE,YAAY/C,IAAQ6C,EAAUG,eAAehD,EAExE,OAAOL,IAUTvU,EAAQqT,UAAUyC,WAAa,SAAU2B,EAAWlD,EAAStF,GAG3D,IAAK,GAFDwF,GAAMgD,EAAUI,SAEXjD,EAAM,EAAGC,EAAON,EAAQpP,OAAc0P,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB6C,GAAUK,SAASrD,EAAKG,EAAK3F,EAAKP,MAItC1P,EAAOD,QAAUiB,GAKb,SAAShB,EAAQD,EAASM,GAe9B,QAASY,GAAU2S,EAAMvE,GACvBlP,KAAK2T,MAAQ,KACb3T,KAAK4Y,QACL5Y,KAAKgG,OAAS,EACdhG,KAAK0T,SAAWxE,MAChBlP,KAAK4T,SAAW,KAChB5T,KAAK+T,eAEL,IAAImB,GAAKlV,IACTA,MAAKqJ,SAAW,WACd6L,EAAG2D,SAASC,MAAM5D,EAAInP,YAGxB/F,KAAK+Y,QAAQtF,GA1Bf,GAAI9S,GAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,EAmClCY,GAASoT,UAAU6E,QAAU,SAAUtF,GACrC,GAAIyC,GAAKrQ,EAAGC,CAEZ,IAAI9F,KAAK2T,MAAO,CAEV3T,KAAK2T,MAAMgB,aACb3U,KAAK2T,MAAMgB,YAAY,IAAK3U,KAAKqJ,UAInC6M,IACA,KAAK,GAAI7V,KAAML,MAAK4Y,KACd5Y,KAAK4Y,KAAKzS,eAAe9F,IAC3B6V,EAAI3N,KAAKlI,EAGbL,MAAK4Y,QACL5Y,KAAKgG,OAAS,EACdhG,KAAK4U,SAAS,UAAW3S,MAAOiU,IAKlC,GAFAlW,KAAK2T,MAAQF,EAETzT,KAAK2T,MAAO,CAQd,IANA3T,KAAK4T,SAAW5T,KAAK0T,SAASG,SACzB7T,KAAK2T,OAAS3T,KAAK2T,MAAMzE,SAAWlP,KAAK2T,MAAMzE,QAAQ2E,SACxD,KAGJqC,EAAMlW,KAAK2T,MAAMiD,QAAQlC,OAAQ1U,KAAK0T,UAAY1T,KAAK0T,SAASgB,SAC3D7O,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACT7F,KAAK4Y,KAAKvY,IAAM,CAElBL,MAAKgG,OAASkQ,EAAIlQ,OAClBhG,KAAK4U,SAAS,OAAQ3S,MAAOiU,IAGzBlW,KAAK2T,MAAMW,IACbtU,KAAK2T,MAAMW,GAAG,IAAKtU,KAAKqJ,YAS9BvI,EAASoT,UAAU8E,QAAU,WAQ3B,IAAK,GAPD3Y,GACA6V,EAAMlW,KAAK2T,MAAMiD,QAAQlC,OAAQ1U,KAAK0T,UAAY1T,KAAK0T,SAASgB,SAChEuE,KACAC,KACAC,KAGKtT,EAAI,EAAGA,EAAIqQ,EAAIlQ,OAAQH,IAC9BxF,EAAK6V,EAAIrQ,GACToT,EAAO5Y,IAAM,EACRL,KAAK4Y,KAAKvY,KACb6Y,EAAM3Q,KAAKlI,GACXL,KAAK4Y,KAAKvY,IAAM,EAChBL,KAAKgG,SAKT,KAAK3F,IAAML,MAAK4Y,KACV5Y,KAAK4Y,KAAKzS,eAAe9F,KACtB4Y,EAAO5Y,KACV8Y,EAAQ5Q,KAAKlI,SACNL,MAAK4Y,KAAKvY,GACjBL,KAAKgG,UAMPkT,GAAMlT,QACRhG,KAAK4U,SAAS,OAAQ3S,MAAOiX,IAE3BC,EAAQnT,QACVhG,KAAK4U,SAAS,UAAW3S,MAAOkX,KAsCpCrY,EAASoT,UAAU+B,IAAM,WACvB,GAGIC,GAAKhH,EAASuE,EAHdyB,EAAKlV,KAILmW,EAAYxV,EAAK6G,QAAQzB,UAAU,GACtB,WAAboQ,GAAsC,UAAbA,GAAsC,SAAbA,GAEpDD,EAAMnQ,UAAU,GAChBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,KAIjBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,GAInB,IAAIqT,GAAczY,EAAKgF,UAAW3F,KAAK0T,SAAUxE,EAG7ClP,MAAK0T,SAASgB,QAAUxF,GAAWA,EAAQwF,SAC7C0E,EAAY1E,OAAS,SAAU5E,GAC7B,MAAOoF,GAAGxB,SAASgB,OAAO5E,IAASZ,EAAQwF,OAAO5E,IAKtD,IAAIuJ,KAOJ,OANWxS,SAAPqP,GACFmD,EAAa9Q,KAAK2N,GAEpBmD,EAAa9Q,KAAK6Q,GAClBC,EAAa9Q,KAAKkL,GAEXzT,KAAK2T,OAAS3T,KAAK2T,MAAMsC,IAAI6C,MAAM9Y,KAAK2T,MAAO0F,IAWxDvY,EAASoT,UAAU0C,OAAS,SAAU1H,GACpC,GAAIgH,EAEJ,IAAIlW,KAAK2T,MAAO,CACd,GACIe,GADA4E,EAAgBtZ,KAAK0T,SAASgB,MAK9BA,GAFAxF,GAAWA,EAAQwF,OACjB4E,EACO,SAAUxJ,GACjB,MAAOwJ,GAAcxJ,IAASZ,EAAQwF,OAAO5E,IAItCZ,EAAQwF,OAIV4E,EAGXpD,EAAMlW,KAAK2T,MAAMiD,QACflC,OAAQA,EACR8B,MAAOtH,GAAWA,EAAQsH,YAI5BN,KAGF,OAAOA,IAQTpV,EAASoT,UAAU2C,WAAa,WAE9B,IADA,GAAI0C,GAAUvZ,KACPuZ,YAAmBzY,IACxByY,EAAUA,EAAQ5F,KAEpB,OAAO4F,IAAW,MAYpBzY,EAASoT,UAAU2E,SAAW,SAAUhP,EAAOgL,EAAQC,GACrD,GAAIjP,GAAGC,EAAKzF,EAAIyP,EACZoG,EAAMrB,GAAUA,EAAO5S,MACvBwR,EAAOzT,KAAK2T,MACZmC,KACAoD,KACAM,KACAL,IAEJ,IAAIjD,GAAOzC,EAAM,CACf,OAAQ5J,GACN,IAAK,MAEH,IAAKhE,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACTiK,EAAO9P,KAAKiW,IAAI5V,GACZyP,IACF9P,KAAK4Y,KAAKvY,IAAM,EAChB6Y,EAAM3Q,KAAKlI,GAIf,MAEF,KAAK,SAGH,IAAKwF,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACTiK,EAAO9P,KAAKiW,IAAI5V,GAEZyP,EACE9P,KAAK4Y,KAAKvY,IACZmZ,EAAQjR,KAAKlI,GACbyV,EAAYvN,KAAKsM,EAAOpB,KAAK5N,MAG7B7F,KAAK4Y,KAAKvY,IAAM,EAChB6Y,EAAM3Q,KAAKlI,IAITL,KAAK4Y,KAAKvY,WACLL,MAAK4Y,KAAKvY,GACjB8Y,EAAQ5Q,KAAKlI,GAQnB,MAEF,KAAK,SAEH,IAAKwF,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACL7F,KAAK4Y,KAAKvY,WACLL,MAAK4Y,KAAKvY,GACjB8Y,EAAQ5Q,KAAKlI,IAOrBL,KAAKgG,QAAUkT,EAAMlT,OAASmT,EAAQnT,OAElCkT,EAAMlT,QACRhG,KAAK4U,SAAS,OAAQ3S,MAAOiX,GAAQpE,GAEnC0E,EAAQxT,QACVhG,KAAK4U,SAAS,UAAW3S,MAAOuX,EAAS/F,KAAMqC,GAAchB,GAE3DqE,EAAQnT,QACVhG,KAAK4U,SAAS,UAAW3S,MAAOkX,GAAUrE,KAMhDhU,EAASoT,UAAUI,GAAKzT,EAAQqT,UAAUI,GAC1CxT,EAASoT,UAAUO,IAAM5T,EAAQqT,UAAUO,IAC3C3T,EAASoT,UAAUU,SAAW/T,EAAQqT,UAAUU,SAGhD9T,EAASoT,UAAUM,UAAY1T,EAASoT,UAAUI,GAClDxT,EAASoT,UAAUS,YAAc7T,EAASoT,UAAUO,IAEpD5U,EAAOD,QAAUkB,GAIb,SAASjB,GAeb,QAASkB,GAAMmO,GAEblP,KAAKyZ,MAAQ,KACbzZ,KAAKoE,IAAMsV,IAGX1Z,KAAKoU,UACLpU,KAAK2Z,SAAW,KAChB3Z,KAAK4Z,UAAY,KAEjB5Z,KAAKiU,WAAW/E,GAgBlBnO,EAAMmT,UAAUD,WAAa,SAAU/E,GACjCA,GAAoC,mBAAlBA,GAAQuK,QAC5BzZ,KAAKyZ,MAAQvK,EAAQuK,OAEnBvK,GAAkC,mBAAhBA,GAAQ9K,MAC5BpE,KAAKoE,IAAM8K,EAAQ9K,KAGrBpE,KAAK6Z,kBAsBP9Y,EAAM4E,OAAS,SAAU3B,EAAQkL,GAC/B,GAAIiF,GAAQ,GAAIpT,GAAMmO,EAEtB,IAAqBrI,SAAjB7C,EAAO8V,MACT,KAAM,IAAIlW,OAAM,6CAElBI,GAAO8V,MAAQ,WACb3F,EAAM2F,QAGR,IAAIC,KACF/C,KAAM,QACNgD,SAAUnT,QAGZ,IAAIqI,GAAWA,EAAQjE,QACrB,IAAK,GAAIpF,GAAI,EAAGA,EAAIqJ,EAAQjE,QAAQjF,OAAQH,IAAK,CAC/C,GAAImR,GAAO9H,EAAQjE,QAAQpF,EAC3BkU,GAAQxR,MACNyO,KAAMA,EACNgD,SAAUhW,EAAOgT,KAEnB7C,EAAMlJ,QAAQjH,EAAQgT,GAS1B,MALA7C,GAAMyF,WACJ5V,OAAQA,EACR+V,QAASA,GAGJ5F,GAOTpT,EAAMmT,UAAUG,QAAU,WAGxB,GAFArU,KAAK8Z,QAED9Z,KAAK4Z,UAAW,CAGlB,IAAK,GAFD5V,GAAShE,KAAK4Z,UAAU5V,OACxB+V,EAAU/Z,KAAK4Z,UAAUG,QACpBlU,EAAI,EAAGA,EAAIkU,EAAQ/T,OAAQH,IAAK,CACvC,GAAIoU,GAASF,EAAQlU,EACjBoU,GAAOD,SACThW,EAAOiW,EAAOjD,MAAQiD,EAAOD,eAGtBhW,GAAOiW,EAAOjD,MAGzBhX,KAAK4Z,UAAY,OASrB7Y,EAAMmT,UAAUjJ,QAAU,SAASjH,EAAQiW,GACzC,GAAI/E,GAAKlV,KACLga,EAAWhW,EAAOiW,EACtB,KAAKD,EACH,KAAM,IAAIpW,OAAM,UAAYqW,EAAS,aAGvCjW,GAAOiW,GAAU,WAGf,IAAK,GADDC,MACKrU,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IACpCqU,EAAKrU,GAAKE,UAAUF,EAItBqP,GAAGf,OACD+F,KAAMA,EACNC,GAAIH,EACJI,QAASpa,SASfe,EAAMmT,UAAUC,MAAQ,SAASkG,GAE7Bra,KAAKoU,OAAO7L,KADO,kBAAV8R,IACSF,GAAIE,GAGLA,GAGnBra,KAAK6Z,kBAOP9Y,EAAMmT,UAAU2F,eAAiB,WAQ/B,GANI7Z,KAAKoU,OAAOpO,OAAShG,KAAKoE,KAC5BpE,KAAK8Z,QAIPQ,aAAata,KAAK2Z,UACd3Z,KAAKmU,MAAMnO,OAAS,GAA2B,gBAAfhG,MAAKyZ,MAAoB,CAC3D,GAAIvE,GAAKlV,IACTA,MAAK2Z,SAAWY,WAAW,WACzBrF,EAAG4E,SACF9Z,KAAKyZ,SAOZ1Y,EAAMmT,UAAU4F,MAAQ,WACtB,KAAO9Z,KAAKoU,OAAOpO,OAAS,GAAG,CAC7B,GAAIqU,GAAQra,KAAKoU,OAAOrC,OACxBsI,GAAMF,GAAGrB,MAAMuB,EAAMD,SAAWC,EAAMF,GAAIE,EAAMH,YAIpDra,EAAOD,QAAUmB,GAKb,SAASlB,EAAQD,EAASM,GAwB9B,QAASc,GAAQwZ,EAAW/G,EAAMvE,GAChC,KAAMlP,eAAgBgB,IACpB,KAAM,IAAIyZ,aAAY,mDAIxBza,MAAK0a,iBAAmBF,EACxBxa,KAAKsT,MAAQ,QACbtT,KAAKuT,OAAS,QACdvT,KAAK2a,OAAS,GACd3a,KAAK4a,eAAiB,MACtB5a,KAAK6a,eAAiB,MAEtB7a,KAAK8a,OAAS,IACd9a,KAAK+a,OAAS,IACd/a,KAAKgb,OAAS,GAEd,IAAIC,GAAc,SAASzO,GAAK,MAAOA,GACvCxM,MAAKkb,YAAcD,EACnBjb,KAAKmb,YAAcF,EACnBjb,KAAKob,YAAcH,EAEnBjb,KAAKqb,YAAc,OACnBrb,KAAKsb,YAAc,QAEnBtb,KAAK0N,MAAQ1M,EAAQua,MAAMC,IAC3Bxb,KAAKyb,iBAAkB,EACvBzb,KAAK0b,UAAW,EAChB1b,KAAK2b,iBAAkB,EACvB3b,KAAK4b,YAAa,EAClB5b,KAAK6b,gBAAiB,EACtB7b,KAAK8b,aAAc,EACnB9b,KAAK+b,cAAgB,GAErB/b,KAAKgc,kBAAoB,IACzBhc,KAAKic,kBAAmB,EAExBjc,KAAKkc,OAAS,GAAIhb,GAClBlB,KAAKmc,IAAM,GAAI9a,GAAQ,EAAG,EAAG,IAE7BrB,KAAKsY,UAAY,KACjBtY,KAAKoc,WAAa,KAGlBpc,KAAKqc,KAAOxV,OACZ7G,KAAKsc,KAAOzV,OACZ7G,KAAKuc,KAAO1V,OACZ7G,KAAKwc,SAAW3V,OAChB7G,KAAKyc,UAAY5V,OAEjB7G,KAAK0c,KAAO,EACZ1c,KAAK2c,MAAQ9V,OACb7G,KAAK4c,KAAO,EACZ5c,KAAK6c,KAAO,EACZ7c,KAAK8c,MAAQjW,OACb7G,KAAK+c,KAAO,EACZ/c,KAAKgd,KAAO,EACZhd,KAAKid,MAAQpW,OACb7G,KAAKkd,KAAO,EACZld,KAAKmd,SAAW,EAChBnd,KAAKod,SAAW,EAChBpd,KAAKqd,UAAY,EACjBrd,KAAKsd,UAAY,EAIjBtd,KAAKud,UAAY,UACjBvd,KAAKwd,UAAY,UACjBxd,KAAKyd,SAAW,UAChBzd,KAAK0d,eAAiB,UAGtB1d,KAAK8O,SAGL9O,KAAKiU,WAAW/E,GAGZuE,GACFzT,KAAK+Y,QAAQtF,GAknEjB,QAASkK,GAAW9T,GAClB,MAAI,WAAaA,GAAcA,EAAM+T,QAC9B/T,EAAMgU,cAAc,IAAMhU,EAAMgU,cAAc,GAAGD,SAAW,EAQrE,QAASE,GAAWjU,GAClB,MAAI,WAAaA,GAAcA,EAAMkU,QAC9BlU,EAAMgU,cAAc,IAAMhU,EAAMgU,cAAc,GAAGE,SAAW,EAnuErE,GAAIC,GAAU9d,EAAoB,IAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BS,EAAOT,EAAoB,GAC3BmB,EAAUnB,EAAoB,IAC9BkB,EAAUlB,EAAoB,GAC9BgB,EAAShB,EAAoB,GAC7BiB,EAASjB,EAAoB,GAC7BoB,EAASpB,EAAoB,IAC7BqB,EAAarB,EAAoB,GAiGrC8d,GAAQhd,EAAQkT,WAKhBlT,EAAQkT,UAAU+J,UAAY,WAC5Bje,KAAKuE,MAAQ,GAAIlD,GAAQ,GAAKrB,KAAK4c,KAAO5c,KAAK0c,MAC7C,GAAK1c,KAAK+c,KAAO/c,KAAK6c,MACtB,GAAK7c,KAAKkd,KAAOld,KAAKgd,OAGpBhd,KAAK2b,kBACH3b,KAAKuE,MAAMiO,EAAIxS,KAAKuE,MAAMkO,EAE5BzS,KAAKuE,MAAMkO,EAAIzS,KAAKuE,MAAMiO,EAI1BxS,KAAKuE,MAAMiO,EAAIxS,KAAKuE,MAAMkO,GAK9BzS,KAAKuE,MAAM2Z,GAAKle,KAAK+b,cAIrB/b,KAAKuE,MAAMD,MAAQ,GAAKtE,KAAKod,SAAWpd,KAAKmd,SAG7C,IAAIgB,IAAWne,KAAK4c,KAAO5c,KAAK0c,MAAQ,EAAI1c,KAAKuE,MAAMiO,EACnD4L,GAAWpe,KAAK+c,KAAO/c,KAAK6c,MAAQ,EAAI7c,KAAKuE,MAAMkO,EACnD4L,GAAWre,KAAKkd,KAAOld,KAAKgd,MAAQ,EAAIhd,KAAKuE,MAAM2Z,CACvDle,MAAKkc,OAAOoC,eAAeH,EAASC,EAASC,IAU/Crd,EAAQkT,UAAUqK,eAAiB,SAASC,GAC1C,GAAIC,GAAcze,KAAK0e,2BAA2BF,EAClD,OAAOxe,MAAK2e,4BAA4BF,IAW1Czd,EAAQkT,UAAUwK,2BAA6B,SAASF,GACtD,GAAII,GAAKJ,EAAQhM,EAAIxS,KAAKuE,MAAMiO,EAC9BqM,EAAKL,EAAQ/L,EAAIzS,KAAKuE,MAAMkO,EAC5BqM,EAAKN,EAAQN,EAAIle,KAAKuE,MAAM2Z,EAE5Ba,EAAK/e,KAAKkc,OAAO8C,oBAAoBxM,EACrCyM,EAAKjf,KAAKkc,OAAO8C,oBAAoBvM,EACrCyM,EAAKlf,KAAKkc,OAAO8C,oBAAoBd,EAGrCiB,EAAQ3a,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoB7M,GACjD8M,EAAQ9a,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoB7M,GACjDgN,EAAQhb,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoB5M,GACjDgN,EAAQjb,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoB5M,GACjDiN,EAAQlb,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoBnB,GACjDyB,EAAQnb,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoBnB,GAGjD0B,EAAKH,GAASC,GAASb,EAAKI,GAAMU,GAASf,EAAKG,IAAOS,GAASV,EAAKI,GACrEW,EAAKV,GAASM,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQO,GAASK,GAASd,EAAKI,GAAMS,GAASd,EAAGG,IAC9He,EAAKR,GAASG,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQI,GAASQ,GAASd,EAAKI,GAAMS,GAASd,EAAGG,GAEhI,OAAO,IAAI1d,GAAQue,EAAIC,EAAIC,IAU7B9e,EAAQkT,UAAUyK,4BAA8B,SAASF,GACvD,GAQIsB,GACAC,EATAC,EAAKjgB,KAAKmc,IAAI3J,EAChB0N,EAAKlgB,KAAKmc,IAAI1J,EACd0N,EAAKngB,KAAKmc,IAAI+B,EACd0B,EAAKnB,EAAYjM,EACjBqN,EAAKpB,EAAYhM,EACjBqN,EAAKrB,EAAYP,CAgBnB,OAXIle,MAAKyb,iBACPsE,GAAMH,EAAKK,IAAOE,EAAKL,GACvBE,GAAMH,EAAKK,IAAOC,EAAKL,KAGvBC,EAAKH,IAAOO,EAAKngB,KAAKkc,OAAOkE,gBAC7BJ,EAAKH,IAAOM,EAAKngB,KAAKkc,OAAOkE,iBAKxB,GAAIhf,GACTpB,KAAKqgB,QAAUN,EAAK/f,KAAKsgB,MAAMC,OAAOC,YACtCxgB,KAAKygB,QAAUT,EAAKhgB,KAAKsgB,MAAMC,OAAOC,cAO1Cxf,EAAQkT,UAAUwM,oBAAsB,SAASC,GAC/C,GAAIC,GAAO,QACPC,EAAS,OACTC,EAAc,CAElB,IAAgC,gBAAtB,GACRF,EAAOD,EACPE,EAAS,OACTC,EAAc,MAEX,IAAgC,gBAAtB,GACgBja,SAAzB8Z,EAAgBC,OAAuBA,EAAOD,EAAgBC,MACnC/Z,SAA3B8Z,EAAgBE,SAAyBA,EAASF,EAAgBE,QAClCha,SAAhC8Z,EAAgBG,cAA2BA,EAAcH,EAAgBG,iBAE1E,IAAyBja,SAApB8Z,EAIR,KAAM,qCAGR3gB,MAAKsgB,MAAM5S,MAAMiT,gBAAkBC,EACnC5gB,KAAKsgB,MAAM5S,MAAMqT,YAAcF,EAC/B7gB,KAAKsgB,MAAM5S,MAAMsT,YAAcF,EAAc,KAC7C9gB,KAAKsgB,MAAM5S,MAAMuT,YAAc,SAKjCjgB,EAAQua,OACN2F,IAAK,EACLC,SAAU,EACVC,QAAS,EACT5F,IAAM,EACN6F,QAAU,EACVC,SAAU,EACVC,QAAS,EACTC,KAAO,EACPC,KAAM,EACNC,QAAU,GASZ1gB,EAAQkT,UAAUyN,gBAAkB,SAASC,GAC3C,OAAQA,GACN,IAAK,MAAW,MAAO5gB,GAAQua,MAAMC,GACrC,KAAK,WAAa,MAAOxa,GAAQua,MAAM8F,OACvC,KAAK,YAAe,MAAOrgB,GAAQua,MAAM+F,QACzC,KAAK,WAAa,MAAOtgB,GAAQua,MAAMgG,OACvC,KAAK,OAAW,MAAOvgB,GAAQua,MAAMkG,IACrC,KAAK,OAAW,MAAOzgB,GAAQua,MAAMiG,IACrC,KAAK,UAAa,MAAOxgB,GAAQua,MAAMmG,OACvC,KAAK,MAAW,MAAO1gB,GAAQua,MAAM2F,GACrC,KAAK,YAAe,MAAOlgB,GAAQua,MAAM4F,QACzC,KAAK,WAAa,MAAOngB,GAAQua,MAAM6F,QAGzC,MAAO,IAQTpgB,EAAQkT,UAAU2N,wBAA0B,SAASpO,GACnD,GAAIzT,KAAK0N,QAAU1M,EAAQua,MAAMC,KAC/Bxb,KAAK0N,QAAU1M,EAAQua,MAAM8F,SAC7BrhB,KAAK0N,QAAU1M,EAAQua,MAAMkG,MAC7BzhB,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC7BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,SAC7B1hB,KAAK0N,QAAU1M,EAAQua,MAAM2F,IAE7BlhB,KAAKqc,KAAO,EACZrc,KAAKsc,KAAO,EACZtc,KAAKuc,KAAO,EACZvc,KAAKwc,SAAW3V,OAEZ4M,EAAK8E,qBAAuB,IAC9BvY,KAAKyc,UAAY,OAGhB,CAAA,GAAIzc,KAAK0N,QAAU1M,EAAQua,MAAM+F,UACpCthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,SAC7BvhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAY7B,KAAM,kBAAoBphB,KAAK0N,MAAQ,GAVvC1N,MAAKqc,KAAO,EACZrc,KAAKsc,KAAO,EACZtc,KAAKuc,KAAO,EACZvc,KAAKwc,SAAW,EAEZ/I,EAAK8E,qBAAuB,IAC9BvY,KAAKyc,UAAY,KAQvBzb,EAAQkT,UAAUsB,gBAAkB,SAAS/B,GAC3C,MAAOA,GAAKzN,QAIdhF,EAAQkT,UAAUqE,mBAAqB,SAAS9E,GAC9C,GAAIqO,GAAU,CACd,KAAK,GAAIC,KAAUtO,GAAK,GAClBA,EAAK,GAAGtN,eAAe4b,IACzBD,GAGJ,OAAOA,IAIT9gB,EAAQkT,UAAU8N,kBAAoB,SAASvO,EAAMsO,GAEnD,IAAK,GADDE,MACKpc,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IACgB,IAA3Coc,EAAejb,QAAQyM,EAAK5N,GAAGkc,KACjCE,EAAe1Z,KAAKkL,EAAK5N,GAAGkc,GAGhC,OAAOE,IAITjhB,EAAQkT,UAAUgO,eAAiB,SAASzO,EAAKsO,GAE/C,IAAK,GADDI,IAAUhe,IAAIsP,EAAK,GAAGsO,GAAQ3d,IAAIqP,EAAK,GAAGsO,IACrClc,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IAC3Bsc,EAAOhe,IAAMsP,EAAK5N,GAAGkc,KAAWI,EAAOhe,IAAMsP,EAAK5N,GAAGkc,IACrDI,EAAO/d,IAAMqP,EAAK5N,GAAGkc,KAAWI,EAAO/d,IAAMqP,EAAK5N,GAAGkc,GAE3D,OAAOI,IASTnhB,EAAQkT,UAAUkO,gBAAkB,SAAUC,GAC5C,GAAInN,GAAKlV,IAOT;GAJIA,KAAKuZ,SACPvZ,KAAKuZ,QAAQ9E,IAAI,IAAKzU,KAAKsiB,WAGbzb,SAAZwb,EAAJ,CAGI/b,MAAMC,QAAQ8b,KAChBA,EAAU,GAAIxhB,GAAQwhB,GAGxB,IAAI5O,EACJ,MAAI4O,YAAmBxhB,IAAWwhB,YAAmBvhB,IAInD,KAAM,IAAI8C,OAAM,uCAGlB,IANE6P,EAAO4O,EAAQpM,MAME,GAAfxC,EAAKzN,OAAT,CAGAhG,KAAKuZ,QAAU8I,EACfriB,KAAKsY,UAAY7E,EAGjBzT,KAAKsiB,UAAY,WACfpN,EAAG6D,QAAQ7D,EAAGqE,UAEhBvZ,KAAKuZ,QAAQjF,GAAG,IAAKtU,KAAKsiB,WAS1BtiB,KAAKqc,KAAO,IACZrc,KAAKsc,KAAO,IACZtc,KAAKuc,KAAO,IACZvc,KAAKwc,SAAW,QAChBxc,KAAKyc,UAAY,SAKbhJ,EAAK,GAAGtN,eAAe,WACDU,SAApB7G,KAAKuiB,aACPviB,KAAKuiB,WAAa,GAAIphB,GAAOkhB,EAASriB,KAAKyc,UAAWzc,MACtDA,KAAKuiB,WAAWC,kBAAkB,WAAYtN,EAAGuN,WAKrD,IAAIC,GAAW1iB,KAAK0N,OAAS1M,EAAQua,MAAM2F,KACzClhB,KAAK0N,OAAS1M,EAAQua,MAAM4F,UAC5BnhB,KAAK0N,OAAS1M,EAAQua,MAAM6F,OAG9B,IAAIsB,EAAU,CACZ,GAA8B7b,SAA1B7G,KAAK2iB,iBACP3iB,KAAKqd,UAAYrd,KAAK2iB,qBAEnB,CACH,GAAIC,GAAQ5iB,KAAKgiB,kBAAkBvO,EAAKzT,KAAKqc,KAC7Crc,MAAKqd,UAAauF,EAAM,GAAKA,EAAM,IAAO,EAG5C,GAA8B/b,SAA1B7G,KAAK6iB,iBACP7iB,KAAKsd,UAAYtd,KAAK6iB,qBAEnB,CACH,GAAIC,GAAQ9iB,KAAKgiB,kBAAkBvO,EAAKzT,KAAKsc,KAC7Ctc,MAAKsd,UAAawF,EAAM,GAAKA,EAAM,IAAO,GAK9C,GAAIC,GAAS/iB,KAAKkiB,eAAezO,EAAKzT,KAAKqc,KACvCqG,KACFK,EAAO5e,KAAOnE,KAAKqd,UAAY,EAC/B0F,EAAO3e,KAAOpE,KAAKqd,UAAY,GAEjCrd,KAAK0c,KAA6B7V,SAArB7G,KAAKgjB,YAA6BhjB,KAAKgjB,YAAcD,EAAO5e,IACzEnE,KAAK4c,KAA6B/V,SAArB7G,KAAKijB,YAA6BjjB,KAAKijB,YAAcF,EAAO3e,IACrEpE,KAAK4c,MAAQ5c,KAAK0c,OAAM1c,KAAK4c,KAAO5c,KAAK0c,KAAO,GACpD1c,KAAK2c,MAA+B9V,SAAtB7G,KAAKkjB,aAA8BljB,KAAKkjB,cAAgBljB,KAAK4c,KAAK5c,KAAK0c,MAAM,CAE3F,IAAIyG,GAASnjB,KAAKkiB,eAAezO,EAAKzT,KAAKsc,KACvCoG,KACFS,EAAOhf,KAAOnE,KAAKsd,UAAY,EAC/B6F,EAAO/e,KAAOpE,KAAKsd,UAAY,GAEjCtd,KAAK6c,KAA6BhW,SAArB7G,KAAKojB,YAA6BpjB,KAAKojB,YAAcD,EAAOhf,IACzEnE,KAAK+c,KAA6BlW,SAArB7G,KAAKqjB,YAA6BrjB,KAAKqjB,YAAcF,EAAO/e,IACrEpE,KAAK+c,MAAQ/c,KAAK6c,OAAM7c,KAAK+c,KAAO/c,KAAK6c,KAAO,GACpD7c,KAAK8c,MAA+BjW,SAAtB7G,KAAKsjB,aAA8BtjB,KAAKsjB,cAAgBtjB,KAAK+c,KAAK/c,KAAK6c,MAAM,CAE3F,IAAI0G,GAASvjB,KAAKkiB,eAAezO,EAAKzT,KAAKuc,KAM3C,IALAvc,KAAKgd,KAA6BnW,SAArB7G,KAAKwjB,YAA6BxjB,KAAKwjB,YAAcD,EAAOpf,IACzEnE,KAAKkd,KAA6BrW,SAArB7G,KAAKyjB,YAA6BzjB,KAAKyjB,YAAcF,EAAOnf,IACrEpE,KAAKkd,MAAQld,KAAKgd,OAAMhd,KAAKkd,KAAOld,KAAKgd,KAAO,GACpDhd,KAAKid,MAA+BpW,SAAtB7G,KAAK0jB,aAA8B1jB,KAAK0jB,cAAgB1jB,KAAKkd,KAAKld,KAAKgd,MAAM,EAErEnW,SAAlB7G,KAAKwc,SAAwB,CAC/B,GAAImH,GAAa3jB,KAAKkiB,eAAezO,EAAKzT,KAAKwc,SAC/Cxc,MAAKmd,SAAqCtW,SAAzB7G,KAAK4jB,gBAAiC5jB,KAAK4jB,gBAAkBD,EAAWxf,IACzFnE,KAAKod,SAAqCvW,SAAzB7G,KAAK6jB,gBAAiC7jB,KAAK6jB,gBAAkBF,EAAWvf,IACrFpE,KAAKod,UAAYpd,KAAKmd,WAAUnd,KAAKod,SAAWpd,KAAKmd,SAAW,GAItEnd,KAAKie,eAUPjd,EAAQkT,UAAU4P,eAAiB,SAAUrQ,GAE3C,GAAIjB,GAAGC,EAAG5M,EAAGqY,EAAG6F,EAAKnR,EAEjBwJ,IAEJ,IAAIpc,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC/BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,QAAS,CAKtC,GAAIkB,MACAE,IACJ,KAAKjd,EAAI,EAAGA,EAAI7F,KAAKwV,gBAAgB/B,GAAO5N,IAC1C2M,EAAIiB,EAAK5N,GAAG7F,KAAKqc,OAAS,EAC1B5J,EAAIgB,EAAK5N,GAAG7F,KAAKsc,OAAS,EAED,KAArBsG,EAAM5b,QAAQwL,IAChBoQ,EAAMra,KAAKiK,GAEY,KAArBsQ,EAAM9b,QAAQyL,IAChBqQ,EAAMva,KAAKkK,EAIf,IAAIuR,GAAa,SAAUpe,EAAGa,GAC5B,MAAOb,GAAIa,EAEbmc,GAAM3L,KAAK+M,GACXlB,EAAM7L,KAAK+M,EAGX,IAAIC,KACJ,KAAKpe,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IAAK,CAChC2M,EAAIiB,EAAK5N,GAAG7F,KAAKqc,OAAS,EAC1B5J,EAAIgB,EAAK5N,GAAG7F,KAAKsc,OAAS,EAC1B4B,EAAIzK,EAAK5N,GAAG7F,KAAKuc,OAAS,CAE1B,IAAI2H,GAAStB,EAAM5b,QAAQwL,GACvB2R,EAASrB,EAAM9b,QAAQyL,EAEA5L,UAAvBod,EAAWC,KACbD,EAAWC,MAGb,IAAI1F,GAAU,GAAInd,EAClBmd,GAAQhM,EAAIA,EACZgM,EAAQ/L,EAAIA,EACZ+L,EAAQN,EAAIA,EAEZ6F,KACAA,EAAInR,MAAQ4L,EACZuF,EAAIK,MAAQvd,OACZkd,EAAIM,OAASxd,OACbkd,EAAIO,OAAS,GAAIjjB,GAAQmR,EAAGC,EAAGzS,KAAKgd,MAEpCiH,EAAWC,GAAQC,GAAUJ,EAE7B3H,EAAW7T,KAAKwb,GAIlB,IAAKvR,EAAI,EAAGA,EAAIyR,EAAWje,OAAQwM,IACjC,IAAKC,EAAI,EAAGA,EAAIwR,EAAWzR,GAAGxM,OAAQyM,IAChCwR,EAAWzR,GAAGC,KAChBwR,EAAWzR,GAAGC,GAAG8R,WAAc/R,EAAIyR,EAAWje,OAAO,EAAKie,EAAWzR,EAAE,GAAGC,GAAK5L,OAC/Eod,EAAWzR,GAAGC,GAAG+R,SAAc/R,EAAIwR,EAAWzR,GAAGxM,OAAO,EAAKie,EAAWzR,GAAGC,EAAE,GAAK5L,OAClFod,EAAWzR,GAAGC,GAAGgS,WACdjS,EAAIyR,EAAWje,OAAO,GAAKyM,EAAIwR,EAAWzR,GAAGxM,OAAO,EACnDie,EAAWzR,EAAE,GAAGC,EAAE,GAClB5L,YAOV,KAAKhB,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IAC3B+M,EAAQ,GAAIvR,GACZuR,EAAMJ,EAAIiB,EAAK5N,GAAG7F,KAAKqc,OAAS,EAChCzJ,EAAMH,EAAIgB,EAAK5N,GAAG7F,KAAKsc,OAAS,EAChC1J,EAAMsL,EAAIzK,EAAK5N,GAAG7F,KAAKuc,OAAS,EAEV1V,SAAlB7G,KAAKwc,WACP5J,EAAMtO,MAAQmP,EAAK5N,GAAG7F,KAAKwc,WAAa,GAG1CuH,KACAA,EAAInR,MAAQA,EACZmR,EAAIO,OAAS,GAAIjjB,GAAQuR,EAAMJ,EAAGI,EAAMH,EAAGzS,KAAKgd,MAChD+G,EAAIK,MAAQvd,OACZkd,EAAIM,OAASxd,OAEbuV,EAAW7T,KAAKwb,EAIpB,OAAO3H,IASTpb,EAAQkT,UAAUpF,OAAS,WAEzB,KAAO9O,KAAK0a,iBAAiBgK,iBAC3B1kB,KAAK0a,iBAAiB9I,YAAY5R,KAAK0a,iBAAiBiK,WAG1D3kB,MAAKsgB,MAAQtO,SAASM,cAAc,OACpCtS,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKsgB,MAAM5S,MAAMmX,SAAW,SAG5B7kB,KAAKsgB,MAAMC,OAASvO,SAASM,cAAe,UAC5CtS,KAAKsgB,MAAMC,OAAO7S,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMC,OAGhC,IAAIuE,GAAW9S,SAASM,cAAe,MACvCwS,GAASpX,MAAMnC,MAAQ,MACvBuZ,EAASpX,MAAMqX,WAAc,OAC7BD,EAASpX,MAAMsX,QAAW,OAC1BF,EAASG,UAAa,mDACtBjlB,KAAKsgB,MAAMC,OAAOrO,YAAY4S,GAGhC9kB,KAAKsgB,MAAM5L,OAAS1C,SAASM,cAAe,OAC5CtS,KAAKsgB,MAAM5L,OAAOhH,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAM5L,OAAOhH,MAAM4W,OAAS,MACjCtkB,KAAKsgB,MAAM5L,OAAOhH,MAAM7F,KAAO,MAC/B7H,KAAKsgB,MAAM5L,OAAOhH,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM5L,OAGlC,IAAIQ,GAAKlV,KACLklB,EAAc,SAAUrb,GAAQqL,EAAGiQ,aAAatb,IAChDub,EAAe,SAAUvb,GAAQqL,EAAGmQ,cAAcxb,IAClDyb,EAAe,SAAUzb,GAAQqL,EAAGqQ,SAAS1b,IAC7C2b,EAAY,SAAU3b,GAAQqL,EAAGuQ,WAAW5b,GAGhDlJ,GAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,UAAWmF,WACpD/kB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,YAAa2E,GACtDvkB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,aAAc6E,GACvDzkB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,aAAc+E,GACvD3kB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,YAAaiF,GAGtDxlB,KAAK0a,iBAAiBxI,YAAYlS,KAAKsgB,QAWzCtf,EAAQkT,UAAUyR,QAAU,SAASrS,EAAOC,GAC1CvT,KAAKsgB,MAAM5S,MAAM4F,MAAQA,EACzBtT,KAAKsgB,MAAM5S,MAAM6F,OAASA,EAE1BvT,KAAK4lB,iBAMP5kB,EAAQkT,UAAU0R,cAAgB,WAChC5lB,KAAKsgB,MAAMC,OAAO7S,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMC,OAAO7S,MAAM6F,OAAS,OAEjCvT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAC5CxgB,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAG7C7lB,KAAKsgB,MAAM5L,OAAOhH,MAAM4F,MAAStT,KAAKsgB,MAAMC,OAAOC,YAAc,GAAU,MAM7Exf,EAAQkT,UAAU4R,eAAiB,WACjC,IAAK9lB,KAAKsgB,MAAM5L,SAAW1U,KAAKsgB,MAAM5L,OAAOqR,OAC3C,KAAM,wBAER/lB,MAAKsgB,MAAM5L,OAAOqR,OAAOC,QAO3BhlB,EAAQkT,UAAU+R,cAAgB,WAC3BjmB,KAAKsgB,MAAM5L,QAAW1U,KAAKsgB,MAAM5L,OAAOqR,QAE7C/lB,KAAKsgB,MAAM5L,OAAOqR,OAAOG,QAU3BllB,EAAQkT,UAAUiS,cAAgB,WAG9BnmB,KAAKqgB,QAD0D,MAA7DrgB,KAAK4a,eAAewL,OAAOpmB,KAAK4a,eAAe5U,OAAO,GAEtDqgB,WAAWrmB,KAAK4a,gBAAkB,IAChC5a,KAAKsgB,MAAMC,OAAOC,YAGP6F,WAAWrmB,KAAK4a,gBAK/B5a,KAAKygB,QAD0D,MAA7DzgB,KAAK6a,eAAeuL,OAAOpmB,KAAK6a,eAAe7U,OAAO,GAEtDqgB,WAAWrmB,KAAK6a,gBAAkB,KAC/B7a,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKsgB,MAAM5L,OAAOmR,cAGzCQ,WAAWrmB,KAAK6a,iBAoBnC7Z,EAAQkT,UAAUoS,kBAAoB,SAASC,GACjC1f,SAAR0f,IAImB1f,SAAnB0f,EAAIC,YAA6C3f,SAAjB0f,EAAIE,UACtCzmB,KAAKkc,OAAOwK,eAAeH,EAAIC,WAAYD,EAAIE,UAG5B5f,SAAjB0f,EAAII,UACN3mB,KAAKkc,OAAO0K,aAAaL,EAAII,UAG/B3mB,KAAKyiB,WASPzhB,EAAQkT,UAAU2S,kBAAoB,WACpC,GAAIN,GAAMvmB,KAAKkc,OAAO4K,gBAEtB,OADAP,GAAII,SAAW3mB,KAAKkc,OAAOkE,eACpBmG,GAMTvlB,EAAQkT,UAAU6S,UAAY,SAAStT,GAErCzT,KAAKoiB,gBAAgB3O,EAAMzT,KAAK0N,OAK9B1N,KAAKoc,WAFHpc,KAAKuiB,WAEWviB,KAAKuiB,WAAWuB,iBAIhB9jB,KAAK8jB,eAAe9jB,KAAKsY,WAI7CtY,KAAKgnB,iBAOPhmB,EAAQkT,UAAU6E,QAAU,SAAUtF,GACpCzT,KAAK+mB,UAAUtT,GACfzT,KAAKyiB,SAGDziB,KAAKinB,oBAAsBjnB,KAAKuiB,YAClCviB,KAAK8lB,kBAQT9kB,EAAQkT,UAAUD,WAAa,SAAU/E,GACvC,GAAIgY,GAAiBrgB,MAIrB,IAFA7G,KAAKimB,gBAEWpf,SAAZqI,EAAuB,CAkBzB,GAhBsBrI,SAAlBqI,EAAQoE,QAA2BtT,KAAKsT,MAAQpE,EAAQoE,OACrCzM,SAAnBqI,EAAQqE,SAA2BvT,KAAKuT,OAASrE,EAAQqE,QAErC1M,SAApBqI,EAAQiP,UAA2Bne,KAAK4a,eAAiB1L,EAAQiP,SAC7CtX,SAApBqI,EAAQkP,UAA2Bpe,KAAK6a,eAAiB3L,EAAQkP,SAEzCvX,SAAxBqI,EAAQmM,cAA+Brb,KAAKqb,YAAcnM,EAAQmM,aAC1CxU,SAAxBqI,EAAQoM,cAA+Btb,KAAKsb,YAAcpM,EAAQoM,aAC/CzU,SAAnBqI,EAAQ4L,SAA0B9a,KAAK8a,OAAS5L,EAAQ4L,QACrCjU,SAAnBqI,EAAQ6L,SAA0B/a,KAAK+a,OAAS7L,EAAQ6L,QACrClU,SAAnBqI,EAAQ8L,SAA0Bhb,KAAKgb,OAAS9L,EAAQ8L,QAEhCnU,SAAxBqI,EAAQgM,cAA+Blb,KAAKkb,YAAchM,EAAQgM,aAC1CrU,SAAxBqI,EAAQiM,cAA+Bnb,KAAKmb,YAAcjM,EAAQiM,aAC1CtU,SAAxBqI,EAAQkM,cAA+Bpb,KAAKob,YAAclM,EAAQkM,aAEhDvU,SAAlBqI,EAAQxB,MAAqB,CAC/B,GAAIyZ,GAAcnnB,KAAK2hB,gBAAgBzS,EAAQxB,MAC3B,MAAhByZ,IACFnnB,KAAK0N,MAAQyZ,GAGQtgB,SAArBqI,EAAQwM,WAA6B1b,KAAK0b,SAAWxM,EAAQwM,UACjC7U,SAA5BqI,EAAQuM,kBAAiCzb,KAAKyb,gBAAkBvM,EAAQuM,iBACjD5U,SAAvBqI,EAAQ0M,aAA6B5b,KAAK4b,WAAa1M,EAAQ0M,YAC3C/U,SAApBqI,EAAQkY,UAA6BpnB,KAAK8b,YAAc5M,EAAQkY,SAC9BvgB,SAAlCqI,EAAQmY,wBAAqCrnB,KAAKqnB,sBAAwBnY,EAAQmY,uBACtDxgB,SAA5BqI,EAAQyM,kBAAiC3b,KAAK2b,gBAAkBzM,EAAQyM,iBAC9C9U,SAA1BqI,EAAQ6M,gBAA+B/b,KAAK+b,cAAgB7M,EAAQ6M,eAEtClV,SAA9BqI,EAAQ8M,oBAAiChc,KAAKgc,kBAAoB9M,EAAQ8M,mBAC7CnV,SAA7BqI,EAAQ+M,mBAAiCjc,KAAKic,iBAAmB/M,EAAQ+M,kBAC1CpV,SAA/BqI,EAAQ+X,qBAAiCjnB,KAAKinB,mBAAqB/X,EAAQ+X,oBAErDpgB,SAAtBqI,EAAQmO,YAAyBrd,KAAK2iB,iBAAmBzT,EAAQmO,WAC3CxW,SAAtBqI,EAAQoO,YAAyBtd,KAAK6iB,iBAAmB3T,EAAQoO,WAEhDzW,SAAjBqI,EAAQwN,OAAoB1c,KAAKgjB,YAAc9T,EAAQwN,MACrC7V,SAAlBqI,EAAQyN,QAAqB3c,KAAKkjB,aAAehU,EAAQyN,OACxC9V,SAAjBqI,EAAQ0N,OAAoB5c,KAAKijB,YAAc/T,EAAQ0N,MACtC/V,SAAjBqI,EAAQ2N,OAAoB7c,KAAKojB,YAAclU,EAAQ2N,MACrChW,SAAlBqI,EAAQ4N,QAAqB9c,KAAKsjB,aAAepU,EAAQ4N,OACxCjW,SAAjBqI,EAAQ6N,OAAoB/c,KAAKqjB,YAAcnU,EAAQ6N,MACtClW,SAAjBqI,EAAQ8N,OAAoBhd,KAAKwjB,YAActU,EAAQ8N,MACrCnW,SAAlBqI,EAAQ+N,QAAqBjd,KAAK0jB,aAAexU,EAAQ+N,OACxCpW,SAAjBqI,EAAQgO,OAAoBld,KAAKyjB,YAAcvU,EAAQgO,MAClCrW,SAArBqI,EAAQiO,WAAwBnd,KAAK4jB,gBAAkB1U,EAAQiO,UAC1CtW,SAArBqI,EAAQkO,WAAwBpd,KAAK6jB,gBAAkB3U,EAAQkO,UAEpCvW,SAA3BqI,EAAQgY,iBAA8BA,EAAiBhY,EAAQgY,gBAE5CrgB,SAAnBqgB,GACFlnB,KAAKkc,OAAOwK,eAAeQ,EAAeV,WAAYU,EAAeT,UACrEzmB,KAAKkc,OAAO0K,aAAaM,EAAeP,YAGxC3mB,KAAKkc,OAAOwK,eAAe,EAAK,IAChC1mB,KAAKkc,OAAO0K,aAAa,MAI7B5mB,KAAK0gB,oBAAoBxR,GAAWA,EAAQyR,iBAE5C3gB,KAAK2lB,QAAQ3lB,KAAKsT,MAAOtT,KAAKuT,QAG1BvT,KAAKsY,WACPtY,KAAK+Y,QAAQ/Y,KAAKsY,WAIhBtY,KAAKinB,oBAAsBjnB,KAAKuiB,YAClCviB,KAAK8lB,kBAOT9kB,EAAQkT,UAAUuO,OAAS,WACzB,GAAwB5b,SAApB7G,KAAKoc,WACP,KAAM,mCAGRpc,MAAK4lB,gBACL5lB,KAAKmmB,gBACLnmB,KAAKsnB,gBACLtnB,KAAKunB,eACLvnB,KAAKwnB,cAEDxnB,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC/BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,QAC7B1hB,KAAKynB,kBAEEznB,KAAK0N,QAAU1M,EAAQua,MAAMkG,KACpCzhB,KAAK0nB,kBAEE1nB,KAAK0N,QAAU1M,EAAQua,MAAM2F,KACpClhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAC7BphB,KAAK2nB,iBAIL3nB,KAAK4nB,iBAGP5nB,KAAK6nB,cACL7nB,KAAK8nB,iBAMP9mB,EAAQkT,UAAUqT,aAAe,WAC/B,GAAIhH,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIE,UAAU,EAAG,EAAG1H,EAAOjN,MAAOiN,EAAOhN,SAO3CvS,EAAQkT,UAAU4T,cAAgB,WAChC,GAAIrV,EAEJ,IAAIzS,KAAK0N,QAAU1M,EAAQua,MAAM+F,UAC/BthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,QAAS,CAEtC,GAEI2G,GAAUC,EAFVC,EAAmC,IAAzBpoB,KAAKsgB,MAAME,WAGrBxgB,MAAK0N,QAAU1M,EAAQua,MAAMgG,SAC/B2G,EAAWE,EAAU,EACrBD,EAAWC,EAAU,EAAc,EAAVA,IAGzBF,EAAW,GACXC,EAAW,GAGb,IAAI5U,GAAS/O,KAAKJ,IAA8B,IAA1BpE,KAAKsgB,MAAMuF,aAAqB,KAClD5d,EAAMjI,KAAK2a,OACX0N,EAAQroB,KAAKsgB,MAAME,YAAcxgB,KAAK2a,OACtC9S,EAAOwgB,EAAQF,EACf7D,EAASrc,EAAMsL,EAGrB,GAAIgN,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAI5B,IAHAD,EAAIO,UAAY,EAChBP,EAAIQ,KAAO,aAEPvoB,KAAK0N,QAAU1M,EAAQua,MAAM+F,SAAU,CAEzC,GAAIkH,GAAO,EACPC,EAAOlV,CACX,KAAKd,EAAI+V,EAAUC,EAAJhW,EAAUA,IAAK,CAC5B,GAAIpE,IAAKoE,EAAI+V,IAASC,EAAOD,GAGzBnb,EAAU,IAAJgB,EACN9C,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,EAElC0a,GAAIY,YAAcpd,EAClBwc,EAAIa,YACJb,EAAIc,OAAOhhB,EAAMI,EAAMwK,GACvBsV,EAAIe,OAAOT,EAAOpgB,EAAMwK,GACxBsV,EAAIlH,SAGNkH,EAAIY,YAAe3oB,KAAKud,UACxBwK,EAAIgB,WAAWlhB,EAAMI,EAAKkgB,EAAU5U,GAiBtC,GAdIvT,KAAK0N,QAAU1M,EAAQua,MAAMgG,UAE/BwG,EAAIY,YAAe3oB,KAAKud,UACxBwK,EAAIiB,UAAahpB,KAAKyd,SACtBsK,EAAIa,YACJb,EAAIc,OAAOhhB,EAAMI,GACjB8f,EAAIe,OAAOT,EAAOpgB,GAClB8f,EAAIe,OAAOT,EAAQF,EAAWD,EAAU5D,GACxCyD,EAAIe,OAAOjhB,EAAMyc,GACjByD,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,UAGF7gB,KAAK0N,QAAU1M,EAAQua,MAAM+F,UAC/BthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,QAAS,CAEtC,GAAI2H,GAAc,EACdC,EAAO,GAAI5nB,GAAWvB,KAAKmd,SAAUnd,KAAKod,UAAWpd,KAAKod,SAASpd,KAAKmd,UAAU,GAAG,EAKzF,KAJAgM,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAKmd,UAC3BgM,EAAKE,QAECF,EAAK7Y,OACXmC,EAAI6R,GAAU6E,EAAKC,aAAeppB,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY5J,EAErFwU,EAAIa,YACJb,EAAIc,OAAOhhB,EAAOqhB,EAAazW,GAC/BsV,EAAIe,OAAOjhB,EAAM4K,GACjBsV,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASL,EAAKC,aAAcvhB,EAAO,EAAIqhB,EAAazW,GAExD0W,EAAKE,MAGPtB,GAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,KACnB,IAAIvW,GAAQhT,KAAKsb,WACjByM,GAAIyB,SAASxW,EAAOqV,EAAO/D,EAAStkB,KAAK2a,UAO7C3Z,EAAQkT,UAAU8S,cAAgB,WAGhC,GAFAhnB,KAAKsgB,MAAM5L,OAAOuQ,UAAY,GAE1BjlB,KAAKuiB,WAAY,CACnB,GAAIrT,IACFua,QAAWzpB,KAAKqnB,uBAEdtB,EAAS,GAAIzkB,GAAOtB,KAAKsgB,MAAM5L,OAAQxF,EAC3ClP,MAAKsgB,MAAM5L,OAAOqR,OAASA,EAG3B/lB,KAAKsgB,MAAM5L,OAAOhH,MAAMsX,QAAU,OAGlCe,EAAO2D,UAAU1pB,KAAKuiB,WAAW1K,QACjCkO,EAAO4D,gBAAgB3pB,KAAKgc,kBAG5B,IAAI9G,GAAKlV,KACL4pB,EAAW,WACb,GAAIlhB,GAAQqd,EAAO8D,UAEnB3U,GAAGqN,WAAWuH,YAAYphB,GAC1BwM,EAAGkH,WAAalH,EAAGqN,WAAWuB,iBAE9B5O,EAAGuN,SAELsD,GAAOgE,oBAAoBH,OAG3B5pB,MAAKsgB,MAAM5L,OAAOqR,OAASlf,QAO/B7F,EAAQkT,UAAUoT,cAAgB,WACEzgB,SAA7B7G,KAAKsgB,MAAM5L,OAAOqR,QACrB/lB,KAAKsgB,MAAM5L,OAAOqR,OAAOtD,UAQ7BzhB,EAAQkT,UAAU2T,YAAc,WAC9B,GAAI7nB,KAAKuiB,WAAY,CACnB,GAAIhC,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIQ,KAAO,aACXR,EAAIiC,UAAY,OAChBjC,EAAIiB,UAAY,OAChBjB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,KAEnB,IAAI/W,GAAIxS,KAAK2a,OACTlI,EAAIzS,KAAK2a,MACboN,GAAIyB,SAASxpB,KAAKuiB,WAAW0H,WAAa,KAAOjqB,KAAKuiB,WAAW2H,mBAAoB1X,EAAGC,KAQ5FzR,EAAQkT,UAAUsT,YAAc,WAC9B,GAEE2C,GAAMC,EAAIjB,EAAMkB,EAChBC,EAAMC,EAAOC,EAAOC,EACpBC,EAAQzX,EAASC,EACjByX,EAAQC,EALNrK,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAQ1BD,GAAIQ,KAAO,GAAKvoB,KAAKkc,OAAOkE,eAAiB,UAG7C,IAAIyK,GAAW,KAAQ7qB,KAAKuE,MAAMiO,EAC9BsY,EAAW,KAAQ9qB,KAAKuE,MAAMkO,EAC9BsY,EAAa,EAAI/qB,KAAKkc,OAAOkE,eAC7B4K,EAAWhrB,KAAKkc,OAAO4K,iBAAiBN,UAU5C,KAPAuB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAKkjB,aACnBiG,EAAO,GAAI5nB,GAAWvB,KAAK0c,KAAM1c,KAAK4c,KAAM5c,KAAK2c,MAAO0N,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAK0c,MAC3ByM,EAAKE,QAECF,EAAK7Y,OAAO,CAClB,GAAIkC,GAAI2W,EAAKC,YAETppB,MAAK0b,UACPyO,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAM7c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAM/c,KAAKgd,OACxD+K,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,WAGJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAM7c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAKgO,EAAU7qB,KAAKgd,OACjE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAM/c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAK8N,EAAU7qB,KAAKgd,OACjE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,UAGN2J,EAAShmB,KAAK+a,IAAIyL,GAAY,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,KACpDuN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGgY,EAAOxqB,KAAKgd,OAClDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBe,EAAK7X,GAAKsY,GAEHvmB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS,KAAOxpB,KAAKkb,YAAYiO,EAAKC,cAAgB,KAAMkB,EAAK9X,EAAG8X,EAAK7X,GAE7E0W,EAAKE,OAWP,IAPAtB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAKsjB,aACnB6F,EAAO,GAAI5nB,GAAWvB,KAAK6c,KAAM7c,KAAK+c,KAAM/c,KAAK8c,MAAOuN,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAK6c,MAC3BsM,EAAKE,QAECF,EAAK7Y,OACPtQ,KAAK0b,UACPyO,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAMyM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAMuM,EAAKC,aAAcppB,KAAKgd,OACxE+K,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,WAGJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAMyM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAKoO,EAAU3B,EAAKC,aAAcppB,KAAKgd,OACjF+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAMuM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAKkO,EAAU3B,EAAKC,aAAcppB,KAAKgd,OACjF+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,UAGN0J,EAAS/lB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD0N,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOpB,EAAKC,aAAcppB,KAAKgd,OAClExY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBe,EAAK7X,GAAKsY,GAEHvmB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS,KAAOxpB,KAAKmb,YAAYgO,EAAKC,cAAgB,KAAMkB,EAAK9X,EAAG8X,EAAK7X,GAE7E0W,EAAKE,MAaP,KATAtB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAK0jB,aACnByF,EAAO,GAAI5nB,GAAWvB,KAAKgd,KAAMhd,KAAKkd,KAAMld,KAAKid,MAAOoN,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAKgd,MAC3BmM,EAAKE,OAEPkB,EAAS/lB,KAAK+a,IAAIyL,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD4N,EAAShmB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,MAC7CoM,EAAK7Y,OAEX6Z,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOrB,EAAKC,eAC1DrB,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOqB,EAAK3X,EAAIuY,EAAYZ,EAAK1X,GACrCsV,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASxpB,KAAKob,YAAY+N,EAAKC,cAAgB,IAAKe,EAAK3X,EAAI,EAAG2X,EAAK1X,GAEzE0W,EAAKE,MAEPtB,GAAIO,UAAY,EAChB6B,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKkd,OACxD6K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhBqC,EAAS3qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK6c,KAAM7c,KAAKgd,OACpE4N,EAAS5qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK6c,KAAM7c,KAAKgd,OACpE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAO8B,EAAOnY,EAAGmY,EAAOlY,GAC5BsV,EAAIe,OAAO8B,EAAOpY,EAAGoY,EAAOnY,GAC5BsV,EAAIlH,SAEJ8J,EAAS3qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK+c,KAAM/c,KAAKgd,OACpE4N,EAAS5qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK+c,KAAM/c,KAAKgd,OACpE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAO8B,EAAOnY,EAAGmY,EAAOlY,GAC5BsV,EAAIe,OAAO8B,EAAOpY,EAAGoY,EAAOnY,GAC5BsV,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhB6B,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK6c,KAAM7c,KAAKgd,OAClEoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK+c,KAAM/c,KAAKgd,OAChE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK6c,KAAM7c,KAAKgd,OAClEoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK+c,KAAM/c,KAAKgd,OAChE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,QAGJ,IAAI/F,GAAS9a,KAAK8a,MACdA,GAAO9U,OAAS,IAClBkN,EAAU,GAAMlT,KAAKuE,MAAMkO,EAC3B8X,GAASvqB,KAAK0c,KAAO1c,KAAK4c,MAAQ,EAClC4N,EAAShmB,KAAK+a,IAAIyL,GAAY,EAAKhrB,KAAK6c,KAAO3J,EAASlT,KAAK+c,KAAO7J,EACpEoX,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OACtDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ/kB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS1O,EAAQwP,EAAK9X,EAAG8X,EAAK7X,GAIpC,IAAIsI,GAAS/a,KAAK+a,MACdA,GAAO/U,OAAS,IAClBiN,EAAU,GAAMjT,KAAKuE,MAAMiO,EAC3B+X,EAAS/lB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK0c,KAAOzJ,EAAUjT,KAAK4c,KAAO3J,EACtEuX,GAASxqB,KAAK6c,KAAO7c,KAAK+c,MAAQ,EAClCuN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OACtDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ/kB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASzO,EAAQuP,EAAK9X,EAAG8X,EAAK7X,GAIpC,IAAIuI,GAAShb,KAAKgb,MACdA,GAAOhV,OAAS,IAClB0kB,EAAS,GACTH,EAAS/lB,KAAK+a,IAAIyL,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD4N,EAAShmB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,KACrD0N,GAASzqB,KAAKgd,KAAOhd,KAAKkd,MAAQ,EAClCoN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOC,IACrD1C,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASxO,EAAQsP,EAAK9X,EAAIkY,EAAQJ,EAAK7X,KAU/CzR,EAAQkT,UAAUwU,SAAW,SAASuC,EAAGC,EAAGC,GAC1C,GAAIC,GAAGC,EAAGC,EAAGC,EAAGC,EAAIC,CAMpB,QAJAF,EAAIJ,EAAID,EACRM,EAAKhnB,KAAKgB,MAAMylB,EAAE,IAClBQ,EAAIF,GAAK,EAAI/mB,KAAKknB,IAAMT,EAAE,GAAM,EAAK,IAE7BO,GACN,IAAK,GAAGJ,EAAIG,EAAGF,EAAII,EAAGH,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAIK,EAAGJ,EAAIE,EAAGD,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAI,EAAGC,EAAIE,EAAGD,EAAIG,CAAG,MAC7B,KAAK,GAAGL,EAAI,EAAGC,EAAII,EAAGH,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIK,EAAGJ,EAAI,EAAGC,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIG,EAAGF,EAAI,EAAGC,EAAIG,CAAG,MAE7B,SAASL,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAG7B,MAAO,OAASjgB,SAAW,IAAF+f,GAAS,IAAM/f,SAAW,IAAFggB,GAAS,IAAMhgB,SAAW,IAAFigB,GAAS,KAQpFtqB,EAAQkT,UAAUuT,gBAAkB,WAClC,GAEE7U,GAAOyV,EAAOpgB,EAAK0jB,EACnB9lB,EACA+lB,EAAgB5C,EAAWL,EAAaL,EACxChc,EAAGC,EAAGC,EAAGqf,EALPtL,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAO1B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAE9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAGye,OACrEtkB,MAAKoc,WAAWvW,GAAGkmB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY9lB,UAAY8lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGa,GAC3B,MAAOA,GAAEslB,KAAOnmB,EAAEmmB,KAIpB,IAFA/rB,KAAKoc,WAAWnF,KAAK+U,GAEjBhsB,KAAK0N,QAAU1M,EAAQua,MAAMmG,SAC/B,IAAK7b,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAMtC,GALA+M,EAAQ5S,KAAKoc,WAAWvW,GACxBwiB,EAAQroB,KAAKoc,WAAWvW,GAAG0e,WAC3Btc,EAAQjI,KAAKoc,WAAWvW,GAAG2e,SAC3BmH,EAAQ3rB,KAAKoc,WAAWvW,GAAG4e,WAEb5d,SAAV+L,GAAiC/L,SAAVwhB,GAA+BxhB,SAARoB,GAA+BpB,SAAV8kB,EAAqB,CAE1F,GAAI3rB,KAAK6b,gBAAkB7b,KAAK4b,WAAY,CAK1C,GAAIqQ,GAAQ5qB,EAAQ6qB,SAASP,EAAMvH,MAAOxR,EAAMwR,OAC5C+H,EAAQ9qB,EAAQ6qB,SAASjkB,EAAImc,MAAOiE,EAAMjE,OAC1CgI,EAAe/qB,EAAQgrB,aAAaJ,EAAOE,GAC3CrmB,EAAMsmB,EAAapmB,QAGvB4lB,GAAkBQ,EAAalO,EAAI,MAGnC0N,IAAiB,CAGfA,IAEFC,GAAQjZ,EAAMA,MAAMsL,EAAImK,EAAMzV,MAAMsL,EAAIjW,EAAI2K,MAAMsL,EAAIyN,EAAM/Y,MAAMsL,GAAK,EACvE5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eACnDxP,EAAI,EAEAvM,KAAK4b,YACPpP,EAAIhI,KAAKL,IAAI,EAAKioB,EAAa5Z,EAAI1M,EAAO,EAAG,GAC7CkjB,EAAYhpB,KAAK0oB,SAASpc,EAAGC,EAAGC,GAChCmc,EAAcK,IAGdxc,EAAI,EACJwc,EAAYhpB,KAAK0oB,SAASpc,EAAGC,EAAGC,GAChCmc,EAAc3oB,KAAKud,aAIrByL,EAAY,OACZL,EAAc3oB,KAAKud,WAErB+K,EAAY,GAEZP,EAAIO,UAAYA,EAChBP,EAAIiB,UAAYA,EAChBjB,EAAIY,YAAcA,EAClBZ,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAOT,EAAMhE,OAAO7R,EAAG6V,EAAMhE,OAAO5R,GACxCsV,EAAIe,OAAO6C,EAAMtH,OAAO7R,EAAGmZ,EAAMtH,OAAO5R,GACxCsV,EAAIe,OAAO7gB,EAAIoc,OAAO7R,EAAGvK,EAAIoc,OAAO5R,GACpCsV,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,cAKR,KAAKhb,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IACtC+M,EAAQ5S,KAAKoc,WAAWvW,GACxBwiB,EAAQroB,KAAKoc,WAAWvW,GAAG0e,WAC3Btc,EAAQjI,KAAKoc,WAAWvW,GAAG2e,SAEb3d,SAAV+L,IAEA0V,EADEtoB,KAAKyb,gBACK,GAAK7I,EAAMwR,MAAMlG,EAGjB,IAAMle,KAAKmc,IAAI+B,EAAIle,KAAKkc,OAAOkE,iBAIjCvZ,SAAV+L,GAAiC/L,SAAVwhB,IAEzBwD,GAAQjZ,EAAMA,MAAMsL,EAAImK,EAAMzV,MAAMsL,GAAK,EACzC5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAEnDgM,EAAIO,UAAYA,EAChBP,EAAIY,YAAc3oB,KAAK0oB,SAASpc,EAAG,EAAG,GACtCyb,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAOT,EAAMhE,OAAO7R,EAAG6V,EAAMhE,OAAO5R,GACxCsV,EAAIlH,UAGQha,SAAV+L,GAA+B/L,SAARoB,IAEzB4jB,GAAQjZ,EAAMA,MAAMsL,EAAIjW,EAAI2K,MAAMsL,GAAK,EACvC5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAEnDgM,EAAIO,UAAYA,EAChBP,EAAIY,YAAc3oB,KAAK0oB,SAASpc,EAAG,EAAG,GACtCyb,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAO7gB,EAAIoc,OAAO7R,EAAGvK,EAAIoc,OAAO5R,GACpCsV,EAAIlH,YAWZ7f,EAAQkT,UAAU0T,eAAiB,WACjC,GAEI/hB,GAFA0a,EAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAC9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAGye,OACrEtkB,MAAKoc,WAAWvW,GAAGkmB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY9lB,UAAY8lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGa,GAC3B,MAAOA,GAAEslB,KAAOnmB,EAAEmmB,KAEpB/rB,MAAKoc,WAAWnF,KAAK+U,EAGrB,IAAI5D,GAAmC,IAAzBpoB,KAAKsgB,MAAME,WACzB,KAAK3a,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAI+M,GAAQ5S,KAAKoc,WAAWvW,EAE5B,IAAI7F,KAAK0N,QAAU1M,EAAQua,MAAM8F,QAAS,CAGxC,GAAI8I,GAAOnqB,KAAKue,eAAe3L,EAAM0R,OACrCyD,GAAIO,UAAY,EAChBP,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOlW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIlH,SAIN,GAAI9N,EAEFA,GADE/S,KAAK0N,QAAU1M,EAAQua,MAAMgG,QACxB6G,EAAQ,EAAI,EAAEA,GAAWxV,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAGpFiL,CAGT,IAAIkE,EAEFA,GADEtsB,KAAKyb,gBACE1I,GAAQH,EAAMwR,MAAMlG,EAGpBnL,IAAS/S,KAAKmc,IAAI+B,EAAIle,KAAKkc,OAAOkE,gBAEhC,EAATkM,IACFA,EAAS,EAGX,IAAIjf,GAAK9B,EAAOwV,CACZ/gB,MAAK0N,QAAU1M,EAAQua,MAAM+F,UAE/BjU,EAAqE,KAA9D,GAAKuF,EAAMA,MAAMtO,MAAQtE,KAAKmd,UAAYnd,KAAKuE,MAAMD,OAC5DiH,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAE7BrN,KAAK0N,QAAU1M,EAAQua,MAAMgG,SACpChW,EAAQvL,KAAKyd,SACbsD,EAAc/gB,KAAK0d,iBAInBrQ,EAA+E,KAAxE,GAAKuF,EAAMA,MAAMsL,EAAIle,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAC9DxQ,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAItC0a,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzd,EAChBwc,EAAIa,YACJb,EAAIwE,IAAI3Z,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,EAAG6Z,EAAQ,EAAW,EAAR9nB,KAAKgoB,IAAM,GAC9DzE,EAAInH,OACJmH,EAAIlH,YAQR7f,EAAQkT,UAAUyT,eAAiB,WACjC,GAEI9hB,GAAG4mB,EAAGC,EAASC,EAFfpM,EAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAC9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAGye,OACrEtkB,MAAKoc,WAAWvW,GAAGkmB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY9lB,UAAY8lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGa,GAC3B,MAAOA,GAAEslB,KAAOnmB,EAAEmmB,KAEpB/rB,MAAKoc,WAAWnF,KAAK+U,EAGrB,IAAIY,GAAS5sB,KAAKqd,UAAY,EAC1BwP,EAAS7sB,KAAKsd,UAAY,CAC9B,KAAKzX,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAGIwH,GAAK9B,EAAOwV,EAHZnO,EAAQ5S,KAAKoc,WAAWvW,EAIxB7F,MAAK0N,QAAU1M,EAAQua,MAAM4F,UAE/B9T,EAAqE,KAA9D,GAAKuF,EAAMA,MAAMtO,MAAQtE,KAAKmd,UAAYnd,KAAKuE,MAAMD,OAC5DiH,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAE7BrN,KAAK0N,QAAU1M,EAAQua,MAAM6F,SACpC7V,EAAQvL,KAAKyd,SACbsD,EAAc/gB,KAAK0d,iBAInBrQ,EAA+E,KAAxE,GAAKuF,EAAMA,MAAMsL,EAAIle,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAC9DxQ,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAIlCrN,KAAK0N,QAAU1M,EAAQua,MAAM6F,UAC/BwL,EAAU5sB,KAAKqd,UAAY,IAAOzK,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY,GAAM,IAC/G0P,EAAU7sB,KAAKsd,UAAY,IAAO1K,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY,GAAM,IAIjH,IAAIjI,GAAKlV,KACLwe,EAAU5L,EAAMA,MAChB3K,IACD2K,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KAElEoG,IACD1R,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,OAInE/U,GAAIW,QAAQ,SAAUmb,GACpBA,EAAIM,OAASnP,EAAGqJ,eAAewF,EAAInR,SAErC0R,EAAO1b,QAAQ,SAAUmb,GACvBA,EAAIM,OAASnP,EAAGqJ,eAAewF,EAAInR,QAIrC,IAAIka,KACDH,QAAS1kB,EAAK8kB,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAC7D+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,QAKnG,KAHAA,EAAMka,SAAWA,EAGZL,EAAI,EAAGA,EAAIK,EAAS9mB,OAAQymB,IAAK,CACpCC,EAAUI,EAASL,EACnB,IAAIQ,GAAcjtB,KAAK0e,2BAA2BgO,EAAQK,OAC1DL,GAAQX,KAAO/rB,KAAKyb,gBAAkBwR,EAAYjnB,UAAYinB,EAAY/O,EAwB5E,IAjBA4O,EAAS7V,KAAK,SAAUrR,EAAGa,GACzB,GAAIymB,GAAOzmB,EAAEslB,KAAOnmB,EAAEmmB,IACtB,OAAImB,GAAaA,EAGbtnB,EAAE+mB,UAAY1kB,EAAY,EAC1BxB,EAAEkmB,UAAY1kB,EAAY,GAGvB,IAIT8f,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzd,EAEXkhB,EAAI,EAAGA,EAAIK,EAAS9mB,OAAQymB,IAC/BC,EAAUI,EAASL,GACnBE,EAAUD,EAAQC,QAClB5E,EAAIa,YACJb,EAAIc,OAAO8D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAInH,OACJmH,EAAIlH,YAUV7f,EAAQkT,UAAUwT,gBAAkB,WAClC,GAEE9U,GAAO/M,EAFL0a,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAG1B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAE9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,EAc9B,IAVIrkB,KAAKoc,WAAWpW,OAAS,IAC3B4M,EAAQ5S,KAAKoc,WAAW,GAExB2L,EAAIO,UAAY,EAChBP,EAAIY,YAAc,OAClBZ,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,IAIrC5M,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IACtC+M,EAAQ5S,KAAKoc,WAAWvW,GACxBkiB,EAAIe,OAAOlW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,EAItCzS,MAAKoc,WAAWpW,OAAS,GAC3B+hB,EAAIlH,WASR7f,EAAQkT,UAAUiR,aAAe,SAAStb,GAWxC,GAVAA,EAAQA,GAAS/B,OAAO+B,MAIpB7J,KAAKmtB,gBACPntB,KAAKotB,WAAWvjB,GAIlB7J,KAAKmtB,eAAiBtjB,EAAMwjB,MAAyB,IAAhBxjB,EAAMwjB,MAAiC,IAAjBxjB,EAAMyjB,OAC5DttB,KAAKmtB,gBAAmBntB,KAAKutB,UAAlC,CAGAvtB,KAAKwtB,YAAc7P,EAAU9T,GAC7B7J,KAAKytB,YAAc3P,EAAUjU,GAE7B7J,KAAK0tB,WAAa,GAAI9oB,MAAK5E,KAAKqQ,OAChCrQ,KAAK2tB,SAAW,GAAI/oB,MAAK5E,KAAKsQ,KAC9BtQ,KAAK4tB,iBAAmB5tB,KAAKkc,OAAO4K,iBAEpC9mB,KAAKsgB,MAAM5S,MAAMmgB,OAAS,MAK1B,IAAI3Y,GAAKlV,IACTA,MAAK8tB,YAAc,SAAUjkB,GAAQqL,EAAG6Y,aAAalkB,IACrD7J,KAAKguB,UAAc,SAAUnkB,GAAQqL,EAAGkY,WAAWvjB,IACnDlJ,EAAKuI,iBAAiB8I,SAAU,YAAakD,EAAG4Y,aAChDntB,EAAKuI,iBAAiB8I,SAAU,UAAWkD,EAAG8Y,WAC9CrtB,EAAKiJ,eAAeC,KAStB7I,EAAQkT,UAAU6Z,aAAe,SAAUlkB,GACzCA,EAAQA,GAAS/B,OAAO+B,KAGxB,IAAIokB,GAAQ5H,WAAW1I,EAAU9T,IAAU7J,KAAKwtB,YAC5CU,EAAQ7H,WAAWvI,EAAUjU,IAAU7J,KAAKytB,YAE5CU,EAAgBnuB,KAAK4tB,iBAAiBpH,WAAayH,EAAQ,IAC3DG,EAAcpuB,KAAK4tB,iBAAiBnH,SAAWyH,EAAQ,IAEvDG,EAAY,EACZC,EAAY9pB,KAAK4a,IAAIiP,EAAY,IAAM,EAAI7pB,KAAKgoB,GAIhDhoB,MAAKknB,IAAIlnB,KAAK4a,IAAI+O,IAAkBG,IACtCH,EAAgB3pB,KAAK+pB,MAAOJ,EAAgB3pB,KAAKgoB,IAAOhoB,KAAKgoB,GAAK,MAEhEhoB,KAAKknB,IAAIlnB,KAAK+a,IAAI4O,IAAkBG,IACtCH,GAAiB3pB,KAAK+pB,MAAOJ,EAAe3pB,KAAKgoB,GAAK,IAAQ,IAAOhoB,KAAKgoB,GAAK,MAI7EhoB,KAAKknB,IAAIlnB,KAAK4a,IAAIgP,IAAgBE,IACpCF,EAAc5pB,KAAK+pB,MAAOH,EAAc5pB,KAAKgoB,IAAOhoB,KAAKgoB,IAEvDhoB,KAAKknB,IAAIlnB,KAAK+a,IAAI6O,IAAgBE,IACpCF,GAAe5pB,KAAK+pB,MAAOH,EAAa5pB,KAAKgoB,GAAK,IAAQ,IAAOhoB,KAAKgoB,IAGxExsB,KAAKkc,OAAOwK,eAAeyH,EAAeC,GAC1CpuB,KAAKyiB,QAGL,IAAI+L,GAAaxuB,KAAK6mB,mBACtB7mB,MAAKyuB,KAAK,uBAAwBD,GAElC7tB,EAAKiJ,eAAeC,IAStB7I,EAAQkT,UAAUkZ,WAAa,SAAUvjB,GACvC7J,KAAKsgB,MAAM5S,MAAMmgB,OAAS,OAC1B7tB,KAAKmtB,gBAAiB,EAGtBxsB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAK8tB,aACrDntB,EAAK+I,oBAAoBsI,SAAU,UAAahS,KAAKguB,WACrDrtB,EAAKiJ,eAAeC,IAOtB7I,EAAQkT,UAAUuR,WAAa,SAAU5b,GACvC,GAAI4P,GAAQ,IACRiV,EAAe1uB,KAAKsgB,MAAM1Y,wBAC1B+mB,EAAShR,EAAU9T,GAAS6kB,EAAa7mB,KACzC+mB,EAAS9Q,EAAUjU,GAAS6kB,EAAazmB,GAE7C,IAAKjI,KAAK8b,YAAV,CASA,GALI9b,KAAK6uB,gBACPvU,aAAata,KAAK6uB,gBAIhB7uB,KAAKmtB,eAEP,WADAntB,MAAK8uB,cAIP,IAAI9uB,KAAKonB,SAAWpnB,KAAKonB,QAAQ2H,UAAW,CAE1C,GAAIA,GAAY/uB,KAAKgvB,iBAAiBL,EAAQC,EAC1CG,KAAc/uB,KAAKonB,QAAQ2H,YAEzBA,EACF/uB,KAAKivB,aAAaF,GAGlB/uB,KAAK8uB,oBAIN,CAEH,GAAI5Z,GAAKlV,IACTA,MAAK6uB,eAAiBtU,WAAW,WAC/BrF,EAAG2Z,eAAiB,IAGpB,IAAIE,GAAY7Z,EAAG8Z,iBAAiBL,EAAQC,EACxCG,IACF7Z,EAAG+Z,aAAaF,IAEjBtV,MAOPzY,EAAQkT,UAAUmR,cAAgB,SAASxb,GACzC7J,KAAKutB,WAAY,CAEjB,IAAIrY,GAAKlV,IACTA,MAAKkvB,YAAc,SAAUrlB,GAAQqL,EAAGia,aAAatlB,IACrD7J,KAAKovB,WAAc,SAAUvlB,GAAQqL,EAAGma,YAAYxlB,IACpDlJ,EAAKuI,iBAAiB8I,SAAU,YAAakD,EAAGga,aAChDvuB,EAAKuI,iBAAiB8I,SAAU,WAAYkD,EAAGka,YAE/CpvB,KAAKmlB,aAAatb,IAMpB7I,EAAQkT,UAAUib,aAAe,SAAStlB,GACxC7J,KAAK+tB,aAAalkB,IAMpB7I,EAAQkT,UAAUmb,YAAc,SAASxlB,GACvC7J,KAAKutB,WAAY,EAEjB5sB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAKkvB,aACrDvuB,EAAK+I,oBAAoBsI,SAAU,WAAchS,KAAKovB,YAEtDpvB,KAAKotB,WAAWvjB,IASlB7I,EAAQkT,UAAUqR,SAAW,SAAS1b,GAC/BA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAIylB,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAW,IAChB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAO,GAMpBF,EAAO,CACT,GAAIG,GAAYzvB,KAAKkc,OAAOkE,eACxBsP,EAAYD,GAAa,EAAIH,EAAQ,GAEzCtvB,MAAKkc,OAAO0K,aAAa8I,GACzB1vB,KAAKyiB,SAELziB,KAAK8uB,eAIP,GAAIN,GAAaxuB,KAAK6mB,mBACtB7mB,MAAKyuB,KAAK,uBAAwBD,GAKlC7tB,EAAKiJ,eAAeC,IAUtB7I,EAAQkT,UAAUyb,gBAAkB,SAAU/c,EAAOgd,GAKnD,QAASC,GAAMrd,GACb,MAAOA,GAAI,EAAI,EAAQ,EAAJA,EAAQ,GAAK,EALlC,GAAI5M,GAAIgqB,EAAS,GACfnpB,EAAImpB,EAAS,GACbnvB,EAAImvB,EAAS,GAMXE,EAAKD,GAAMppB,EAAE+L,EAAI5M,EAAE4M,IAAMI,EAAMH,EAAI7M,EAAE6M,IAAMhM,EAAEgM,EAAI7M,EAAE6M,IAAMG,EAAMJ,EAAI5M,EAAE4M,IACrEud,EAAKF,GAAMpvB,EAAE+R,EAAI/L,EAAE+L,IAAMI,EAAMH,EAAIhM,EAAEgM,IAAMhS,EAAEgS,EAAIhM,EAAEgM,IAAMG,EAAMJ,EAAI/L,EAAE+L,IACrEwd,EAAKH,GAAMjqB,EAAE4M,EAAI/R,EAAE+R,IAAMI,EAAMH,EAAIhS,EAAEgS,IAAM7M,EAAE6M,EAAIhS,EAAEgS,IAAMG,EAAMJ,EAAI/R,EAAE+R,GAGzE,SAAc,GAANsd,GAAiB,GAANC,GAAWD,GAAMC,GAC3B,GAANA,GAAiB,GAANC,GAAWD,GAAMC,GACtB,GAANF,GAAiB,GAANE,GAAWF,GAAME,IAUjChvB,EAAQkT,UAAU8a,iBAAmB,SAAUxc,EAAGC,GAChD,GAAI5M,GACFoqB,EAAU,IACVlB,EAAY,KACZmB,EAAmB,KACnBC,EAAc,KACdpD,EAAS,GAAI3rB,GAAQoR,EAAGC,EAE1B,IAAIzS,KAAK0N,QAAU1M,EAAQua,MAAM2F,KAC/BlhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAE7B,IAAKvb,EAAI7F,KAAKoc,WAAWpW,OAAS,EAAGH,GAAK,EAAGA,IAAK,CAChDkpB,EAAY/uB,KAAKoc,WAAWvW,EAC5B,IAAIinB,GAAYiC,EAAUjC,QAC1B,IAAIA,EACF,IAAK,GAAIvgB,GAAIugB,EAAS9mB,OAAS,EAAGuG,GAAK,EAAGA,IAAK,CAE7C,GAAImgB,GAAUI,EAASvgB,GACnBogB,EAAUD,EAAQC,QAClByD,GAAazD,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,QAC9DgM,GAAa1D,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAClE,IAAIrkB,KAAK2vB,gBAAgB5C,EAAQqD,IAC/BpwB,KAAK2vB,gBAAgB5C,EAAQsD,GAE7B,MAAOtB,QAQf,KAAKlpB,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3CkpB,EAAY/uB,KAAKoc,WAAWvW,EAC5B,IAAI+M,GAAQmc,EAAU1K,MACtB,IAAIzR,EAAO,CACT,GAAI0d,GAAQ9rB,KAAKknB,IAAIlZ,EAAII,EAAMJ,GAC3B+d,EAAQ/rB,KAAKknB,IAAIjZ,EAAIG,EAAMH,GAC3BsZ,EAAQvnB,KAAKgsB,KAAKF,EAAQA,EAAQC,EAAQA,IAEzB,OAAhBJ,GAA+BA,EAAPpE,IAA8BkE,EAAPlE,IAClDoE,EAAcpE,EACdmE,EAAmBnB,IAO3B,MAAOmB,IAQTlvB,EAAQkT,UAAU+a,aAAe,SAAUF,GACzC,GAAI5b,GAASsd,EAAMC,CAEd1wB,MAAKonB,SAiCRjU,EAAUnT,KAAKonB,QAAQuJ,IAAIxd,QAC3Bsd,EAAQzwB,KAAKonB,QAAQuJ,IAAIF,KACzBC,EAAQ1wB,KAAKonB,QAAQuJ,IAAID,MAlCzBvd,EAAUnB,SAASM,cAAc,OACjCa,EAAQzF,MAAMkX,SAAW,WACzBzR,EAAQzF,MAAMsX,QAAU,OACxB7R,EAAQzF,MAAMZ,OAAS,oBACvBqG,EAAQzF,MAAMnC,MAAQ,UACtB4H,EAAQzF,MAAMb,WAAa,wBAC3BsG,EAAQzF,MAAMkjB,aAAe,MAC7Bzd,EAAQzF,MAAMmjB,UAAY,qCAE1BJ,EAAOze,SAASM,cAAc,OAC9Bme,EAAK/iB,MAAMkX,SAAW,WACtB6L,EAAK/iB,MAAM6F,OAAS,OACpBkd,EAAK/iB,MAAM4F,MAAQ,IACnBmd,EAAK/iB,MAAMojB,WAAa,oBAExBJ,EAAM1e,SAASM,cAAc,OAC7Boe,EAAIhjB,MAAMkX,SAAW,WACrB8L,EAAIhjB,MAAM6F,OAAS,IACnBmd,EAAIhjB,MAAM4F,MAAQ,IAClBod,EAAIhjB,MAAMZ,OAAS,oBACnB4jB,EAAIhjB,MAAMkjB,aAAe,MAEzB5wB,KAAKonB,SACH2H,UAAW,KACX4B,KACExd,QAASA,EACTsd,KAAMA,EACNC,IAAKA,KAUX1wB,KAAK8uB,eAEL9uB,KAAKonB,QAAQ2H,UAAYA,EAEvB5b,EAAQ8R,UADsB,kBAArBjlB,MAAK8b,YACM9b,KAAK8b,YAAYiT,EAAUnc,OAG3B,6BACMmc,EAAUnc,MAAMJ,EAAI,gCACpBuc,EAAUnc,MAAMH,EAAI,gCACpBsc,EAAUnc,MAAMsL,EAAI,qBAIhD/K,EAAQzF,MAAM7F,KAAQ,IACtBsL,EAAQzF,MAAMzF,IAAQ,IACtBjI,KAAKsgB,MAAMpO,YAAYiB,GACvBnT,KAAKsgB,MAAMpO,YAAYue,GACvBzwB,KAAKsgB,MAAMpO,YAAYwe,EAGvB,IAAIK,GAAgB5d,EAAQ6d,YACxBC,EAAkB9d,EAAQ+d,aAC1BC,EAAgBV,EAAKS,aACrBE,EAAcV,EAAIM,YAClBK,EAAgBX,EAAIQ,aAEpBrpB,EAAOknB,EAAU1K,OAAO7R,EAAIue,EAAe,CAC/ClpB,GAAOrD,KAAKL,IAAIK,KAAKJ,IAAIyD,EAAM,IAAK7H,KAAKsgB,MAAME,YAAc,GAAKuQ,GAElEN,EAAK/iB,MAAM7F,KAASknB,EAAU1K,OAAO7R,EAAI,KACzCie,EAAK/iB,MAAMzF,IAAU8mB,EAAU1K,OAAO5R,EAAI0e,EAAc,KACxDhe,EAAQzF,MAAM7F,KAAQA,EAAO,KAC7BsL,EAAQzF,MAAMzF,IAAS8mB,EAAU1K,OAAO5R,EAAI0e,EAAaF,EAAiB,KAC1EP,EAAIhjB,MAAM7F,KAAWknB,EAAU1K,OAAO7R,EAAI4e,EAAW,EAAK,KAC1DV,EAAIhjB,MAAMzF,IAAW8mB,EAAU1K,OAAO5R,EAAI4e,EAAY,EAAK,MAO7DrwB,EAAQkT,UAAU4a,aAAe,WAC/B,GAAI9uB,KAAKonB,QAAS,CAChBpnB,KAAKonB,QAAQ2H,UAAY,IAEzB,KAAK,GAAI7oB,KAAQlG,MAAKonB,QAAQuJ,IAC5B,GAAI3wB,KAAKonB,QAAQuJ,IAAIxqB,eAAeD,GAAO,CACzC,GAAIyB,GAAO3H,KAAKonB,QAAQuJ,IAAIzqB,EACxByB,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWyH,YAAYjK,MA8BtC9H,EAAOD,QAAUoB,GAKb,SAASnB,EAAQD,EAASM,GAc9B,QAASgB,KACPlB,KAAKsxB,YAAc,GAAIjwB,GACvBrB,KAAKuxB,eACLvxB,KAAKuxB,YAAY/K,WAAa,EAC9BxmB,KAAKuxB,YAAY9K,SAAW,EAC5BzmB,KAAKwxB,UAAY,IAEjBxxB,KAAKyxB,eAAiB,GAAIpwB,GAC1BrB,KAAK0xB,eAAkB,GAAIrwB,GAAQ,GAAImD,KAAKgoB,GAAI,EAAG,GAEnDxsB,KAAK2xB,6BAtBP,GAAItwB,GAAUnB,EAAoB,GA+BlCgB,GAAOgT,UAAUoK,eAAiB,SAAS9L,EAAGC,EAAGyL,GAC/Cle,KAAKsxB,YAAY9e,EAAIA,EACrBxS,KAAKsxB,YAAY7e,EAAIA,EACrBzS,KAAKsxB,YAAYpT,EAAIA,EAErBle,KAAK2xB,8BAWPzwB,EAAOgT,UAAUwS,eAAiB,SAASF,EAAYC,GAClC5f,SAAf2f,IACFxmB,KAAKuxB,YAAY/K,WAAaA,GAGf3f,SAAb4f,IACFzmB,KAAKuxB,YAAY9K,SAAWA,EACxBzmB,KAAKuxB,YAAY9K,SAAW,IAAGzmB,KAAKuxB,YAAY9K,SAAW,GAC3DzmB,KAAKuxB,YAAY9K,SAAW,GAAIjiB,KAAKgoB,KAAIxsB,KAAKuxB,YAAY9K,SAAW,GAAIjiB,KAAKgoB,MAGjE3lB,SAAf2f,GAAyC3f,SAAb4f,IAC9BzmB,KAAK2xB,8BAQTzwB,EAAOgT,UAAU4S,eAAiB,WAChC,GAAI8K,KAIJ,OAHAA,GAAIpL,WAAaxmB,KAAKuxB,YAAY/K,WAClCoL,EAAInL,SAAWzmB,KAAKuxB,YAAY9K,SAEzBmL,GAOT1wB,EAAOgT,UAAU0S,aAAe,SAAS5gB,GACxBa,SAAXb,IAGJhG,KAAKwxB,UAAYxrB,EAKbhG,KAAKwxB,UAAY,MAAMxxB,KAAKwxB,UAAY,KACxCxxB,KAAKwxB,UAAY,IAAKxxB,KAAKwxB,UAAY,GAE3CxxB,KAAK2xB,+BAOPzwB,EAAOgT,UAAUkM,aAAe,WAC9B,MAAOpgB,MAAKwxB,WAOdtwB,EAAOgT,UAAU8K,kBAAoB,WACnC,MAAOhf,MAAKyxB,gBAOdvwB,EAAOgT,UAAUmL,kBAAoB,WACnC,MAAOrf,MAAK0xB,gBAOdxwB,EAAOgT,UAAUyd,2BAA6B,WAE5C3xB,KAAKyxB,eAAejf,EAAIxS,KAAKsxB,YAAY9e,EAAIxS,KAAKwxB,UAAYhtB,KAAK4a,IAAIpf,KAAKuxB,YAAY/K,YAAchiB,KAAK+a,IAAIvf,KAAKuxB,YAAY9K,UAChIzmB,KAAKyxB,eAAehf,EAAIzS,KAAKsxB,YAAY7e,EAAIzS,KAAKwxB,UAAYhtB,KAAK+a,IAAIvf,KAAKuxB,YAAY/K,YAAchiB,KAAK+a,IAAIvf,KAAKuxB,YAAY9K,UAChIzmB,KAAKyxB,eAAevT,EAAIle,KAAKsxB,YAAYpT,EAAIle,KAAKwxB,UAAYhtB,KAAK4a,IAAIpf,KAAKuxB,YAAY9K,UAGxFzmB,KAAK0xB,eAAelf,EAAIhO,KAAKgoB,GAAG,EAAIxsB,KAAKuxB,YAAY9K,SACrDzmB,KAAK0xB,eAAejf,EAAI,EACxBzS,KAAK0xB,eAAexT,GAAKle,KAAKuxB,YAAY/K,YAG5C3mB,EAAOD,QAAUsB,GAIb,SAASrB,EAAQD,EAASM,GAW9B,QAASiB,GAAQsS,EAAMsO,EAAQ8P,GAC7B7xB,KAAKyT,KAAOA,EACZzT,KAAK+hB,OAASA,EACd/hB,KAAK6xB,MAAQA,EAEb7xB,KAAK0I,MAAQ7B,OACb7G,KAAKsE,MAAQuC,OAGb7G,KAAK6X,OAASga,EAAM7P,kBAAkBvO,EAAKwC,MAAOjW,KAAK+hB,QAGvD/hB,KAAK6X,OAAOZ,KAAK,SAAUrR,EAAGa,GAC5B,MAAOb,GAAIa,EAAI,EAAQA,EAAJb,EAAQ,GAAK,IAG9B5F,KAAK6X,OAAO7R,OAAS,GACvBhG,KAAK8pB,YAAY,GAInB9pB,KAAKoc,cAELpc,KAAKM,QAAS,EACdN,KAAK8xB,eAAiBjrB,OAElBgrB,EAAM5V,kBACRjc,KAAKM,QAAS,EACdN,KAAK+xB,oBAGL/xB,KAAKM,QAAS,EAxClB,GAAIQ,GAAWZ,EAAoB,EAiDnCiB,GAAO+S,UAAU8d,SAAW,WAC1B,MAAOhyB,MAAKM,QAQda,EAAO+S,UAAU+d,kBAAoB,WAInC,IAHA,GAAInsB,GAAM9F,KAAK6X,OAAO7R,OAElBH,EAAI,EACD7F,KAAKoc,WAAWvW,IACrBA,GAGF,OAAOrB,MAAK+pB,MAAM1oB,EAAIC,EAAM,MAQ9B3E,EAAO+S,UAAU+V,SAAW,WAC1B,MAAOjqB,MAAK6xB,MAAMxW,aAQpBla,EAAO+S,UAAUge,UAAY,WAC3B,MAAOlyB,MAAK+hB,QAOd5gB,EAAO+S,UAAUgW,iBAAmB,WAClC,MAAmBrjB,UAAf7G,KAAK0I,MACA7B,OAEF7G,KAAK6X,OAAO7X,KAAK0I;EAO1BvH,EAAO+S,UAAUie,UAAY,WAC3B,MAAOnyB,MAAK6X,QAQd1W,EAAO+S,UAAUyB,SAAW,SAASjN,GACnC,GAAIA,GAAS1I,KAAK6X,OAAO7R,OACvB,KAAM,2BAER,OAAOhG,MAAK6X,OAAOnP,IASrBvH,EAAO+S,UAAU4P,eAAiB,SAASpb,GAIzC,GAHc7B,SAAV6B,IACFA,EAAQ1I,KAAK0I,OAED7B,SAAV6B,EACF,QAEF,IAAI0T,EACJ,IAAIpc,KAAKoc,WAAW1T,GAClB0T,EAAapc,KAAKoc,WAAW1T,OAE1B,CACH,GAAI2F,KACJA,GAAE0T,OAAS/hB,KAAK+hB,OAChB1T,EAAE/J,MAAQtE,KAAK6X,OAAOnP,EAEtB,IAAI0pB,GAAW,GAAItxB,GAASd,KAAKyT,MAAMiB,OAAQ,SAAU5E,GAAO,MAAQA,GAAKzB,EAAE0T,SAAW1T,EAAE/J,SAAW2R,KACvGmG,GAAapc,KAAK6xB,MAAM/N,eAAesO,GAEvCpyB,KAAKoc,WAAW1T,GAAS0T,EAG3B,MAAOA,IAQTjb,EAAO+S,UAAUsO,kBAAoB,SAAS3Z,GAC5C7I,KAAK8xB,eAAiBjpB,GASxB1H,EAAO+S,UAAU4V,YAAc,SAASphB,GACtC,GAAIA,GAAS1I,KAAK6X,OAAO7R,OACvB,KAAM,2BAERhG,MAAK0I,MAAQA,EACb1I,KAAKsE,MAAQtE,KAAK6X,OAAOnP,IAO3BvH,EAAO+S,UAAU6d,iBAAmB,SAASrpB,GAC7B7B,SAAV6B,IACFA,EAAQ,EAEV,IAAI4X,GAAQtgB,KAAK6xB,MAAMvR,KAEvB,IAAI5X,EAAQ1I,KAAK6X,OAAO7R,OAAQ,CAC9B,CAAqBhG,KAAK8jB,eAAepb,GAIlB7B,SAAnByZ,EAAM+R,WACR/R,EAAM+R,SAAWrgB,SAASM,cAAc,OACxCgO,EAAM+R,SAAS3kB,MAAMkX,SAAW,WAChCtE,EAAM+R,SAAS3kB,MAAMnC,MAAQ,OAC7B+U,EAAMpO,YAAYoO,EAAM+R,UAE1B,IAAIA,GAAWryB,KAAKiyB,mBACpB3R,GAAM+R,SAASpN,UAAY,wBAA0BoN,EAAW,IAEhE/R,EAAM+R,SAAS3kB,MAAM4W,OAAS,OAC9BhE,EAAM+R,SAAS3kB,MAAM7F,KAAO,MAE5B,IAAIqN,GAAKlV,IACTua,YAAW,WAAYrF,EAAG6c,iBAAiBrpB,EAAM,IAAM,IACvD1I,KAAKM,QAAS,MAGdN,MAAKM,QAAS,EAGSuG,SAAnByZ,EAAM+R,WACR/R,EAAM1O,YAAY0O,EAAM+R,UACxB/R,EAAM+R,SAAWxrB,QAGf7G,KAAK8xB,gBACP9xB,KAAK8xB,kBAIXjyB,EAAOD,QAAUuB,GAKb,SAAStB,GAOb,QAASuB,GAASoR,EAAGC,GACnBzS,KAAKwS,EAAU3L,SAAN2L,EAAkBA,EAAI,EAC/BxS,KAAKyS,EAAU5L,SAAN4L,EAAkBA,EAAI,EAGjC5S,EAAOD,QAAUwB,GAKb,SAASvB,GAQb,QAASwB,GAAQmR,EAAGC,EAAGyL,GACrBle,KAAKwS,EAAU3L,SAAN2L,EAAkBA,EAAI,EAC/BxS,KAAKyS,EAAU5L,SAAN4L,EAAkBA,EAAI,EAC/BzS,KAAKke,EAAUrX,SAANqX,EAAkBA,EAAI,EASjC7c,EAAQ6qB,SAAW,SAAStmB,EAAGa,GAC7B,GAAI6rB,GAAM,GAAIjxB,EAId,OAHAixB,GAAI9f,EAAI5M,EAAE4M,EAAI/L,EAAE+L,EAChB8f,EAAI7f,EAAI7M,EAAE6M,EAAIhM,EAAEgM,EAChB6f,EAAIpU,EAAItY,EAAEsY,EAAIzX,EAAEyX,EACToU,GASTjxB,EAAQ2S,IAAM,SAASpO,EAAGa,GACxB,GAAI8rB,GAAM,GAAIlxB,EAId,OAHAkxB,GAAI/f,EAAI5M,EAAE4M,EAAI/L,EAAE+L,EAChB+f,EAAI9f,EAAI7M,EAAE6M,EAAIhM,EAAEgM,EAChB8f,EAAIrU,EAAItY,EAAEsY,EAAIzX,EAAEyX,EACTqU,GASTlxB,EAAQ2rB,IAAM,SAASpnB,EAAGa,GACxB,MAAO,IAAIpF,IACFuE,EAAE4M,EAAI/L,EAAE+L,GAAK,GACb5M,EAAE6M,EAAIhM,EAAEgM,GAAK,GACb7M,EAAEsY,EAAIzX,EAAEyX,GAAK,IAWxB7c,EAAQgrB,aAAe,SAASzmB,EAAGa,GACjC,GAAI2lB,GAAe,GAAI/qB,EAMvB,OAJA+qB,GAAa5Z,EAAI5M,EAAE6M,EAAIhM,EAAEyX,EAAItY,EAAEsY,EAAIzX,EAAEgM,EACrC2Z,EAAa3Z,EAAI7M,EAAEsY,EAAIzX,EAAE+L,EAAI5M,EAAE4M,EAAI/L,EAAEyX,EACrCkO,EAAalO,EAAItY,EAAE4M,EAAI/L,EAAEgM,EAAI7M,EAAE6M,EAAIhM,EAAE+L,EAE9B4Z,GAQT/qB,EAAQ6S,UAAUlO,OAAS,WACzB,MAAOxB,MAAKgsB,KACJxwB,KAAKwS,EAAIxS,KAAKwS,EACdxS,KAAKyS,EAAIzS,KAAKyS,EACdzS,KAAKke,EAAIle,KAAKke,IAIxBre,EAAOD,QAAUyB,GAKb,SAASxB,EAAQD,EAASM,GAa9B,QAASoB,GAAOkZ,EAAWtL,GACzB,GAAkBrI,SAAd2T,EACF,KAAM,qCAKR,IAHAxa,KAAKwa,UAAYA,EACjBxa,KAAKypB,QAAWva,GAA8BrI,QAAnBqI,EAAQua,QAAwBva,EAAQua,SAAU,EAEzEzpB,KAAKypB,QAAS,CAChBzpB,KAAKsgB,MAAQtO,SAASM,cAAc,OAEpCtS,KAAKsgB,MAAM5S,MAAM4F,MAAQ,OACzBtT,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKwa,UAAUtI,YAAYlS,KAAKsgB,OAEhCtgB,KAAKsgB,MAAMkS,KAAOxgB,SAASM,cAAc,SACzCtS,KAAKsgB,MAAMkS,KAAKrrB,KAAO,SACvBnH,KAAKsgB,MAAMkS,KAAKluB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMkS,MAElCxyB,KAAKsgB,MAAM0F,KAAOhU,SAASM,cAAc,SACzCtS,KAAKsgB,MAAM0F,KAAK7e,KAAO,SACvBnH,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM0F,MAElChmB,KAAKsgB,MAAM+I,KAAOrX,SAASM,cAAc,SACzCtS,KAAKsgB,MAAM+I,KAAKliB,KAAO,SACvBnH,KAAKsgB,MAAM+I,KAAK/kB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM+I,MAElCrpB,KAAKsgB,MAAMmS,IAAMzgB,SAASM,cAAc,SACxCtS,KAAKsgB,MAAMmS,IAAItrB,KAAO,SACtBnH,KAAKsgB,MAAMmS,IAAI/kB,MAAMkX,SAAW,WAChC5kB,KAAKsgB,MAAMmS,IAAI/kB,MAAMZ,OAAS,gBAC9B9M,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,MAAQ,QAC7BtT,KAAKsgB,MAAMmS,IAAI/kB,MAAM6F,OAAS,MAC9BvT,KAAKsgB,MAAMmS,IAAI/kB,MAAMkjB,aAAe,MACpC5wB,KAAKsgB,MAAMmS,IAAI/kB,MAAMglB,gBAAkB,MACvC1yB,KAAKsgB,MAAMmS,IAAI/kB,MAAMZ,OAAS,oBAC9B9M,KAAKsgB,MAAMmS,IAAI/kB,MAAMiT,gBAAkB,UACvC3gB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMmS,KAElCzyB,KAAKsgB,MAAMqS,MAAQ3gB,SAASM,cAAc,SAC1CtS,KAAKsgB,MAAMqS,MAAMxrB,KAAO,SACxBnH,KAAKsgB,MAAMqS,MAAMjlB,MAAMiN,OAAS,MAChC3a,KAAKsgB,MAAMqS,MAAMruB,MAAQ,IACzBtE,KAAKsgB,MAAMqS,MAAMjlB,MAAMkX,SAAW,WAClC5kB,KAAKsgB,MAAMqS,MAAMjlB,MAAM7F,KAAO,SAC9B7H,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMqS,MAGlC,IAAIzd,GAAKlV,IACTA,MAAKsgB,MAAMqS,MAAMzN,YAAc,SAAUrb,GAAQqL,EAAGiQ,aAAatb,IACjE7J,KAAKsgB,MAAMkS,KAAKI,QAAU,SAAU/oB,GAAQqL,EAAGsd,KAAK3oB,IACpD7J,KAAKsgB,MAAM0F,KAAK4M,QAAU,SAAU/oB,GAAQqL,EAAG2d,WAAWhpB,IAC1D7J,KAAKsgB,MAAM+I,KAAKuJ,QAAU,SAAU/oB,GAAQqL,EAAGmU,KAAKxf,IAGtD7J,KAAK8yB,iBAAmBjsB,OAExB7G,KAAK6X,UACL7X,KAAK0I,MAAQ7B,OAEb7G,KAAK+yB,YAAclsB,OACnB7G,KAAKgzB,aAAe,IACpBhzB,KAAKizB,UAAW,EA3ElB,GAAItyB,GAAOT,EAAoB,EAiF/BoB,GAAO4S,UAAUse,KAAO,WACtB,GAAI9pB,GAAQ1I,KAAK6pB,UACbnhB,GAAQ,IACVA,IACA1I,KAAKkzB,SAASxqB,KAOlBpH,EAAO4S,UAAUmV,KAAO,WACtB,GAAI3gB,GAAQ1I,KAAK6pB,UACbnhB,GAAQ1I,KAAK6X,OAAO7R,OAAS,IAC/B0C,IACA1I,KAAKkzB,SAASxqB,KAOlBpH,EAAO4S,UAAUif,SAAW,WAC1B,GAAI9iB,GAAQ,GAAIzL,MAEZ8D,EAAQ1I,KAAK6pB,UACbnhB,GAAQ1I,KAAK6X,OAAO7R,OAAS,GAC/B0C,IACA1I,KAAKkzB,SAASxqB,IAEP1I,KAAKizB,WAEZvqB,EAAQ,EACR1I,KAAKkzB,SAASxqB,GAGhB,IAAI4H,GAAM,GAAI1L,MACVsoB,EAAQ5c,EAAMD,EAId+iB,EAAW5uB,KAAKJ,IAAIpE,KAAKgzB,aAAe9F,EAAM,GAG9ChY,EAAKlV,IACTA,MAAK+yB,YAAcxY,WAAW,WAAYrF,EAAGie,YAAcC,IAM7D9xB,EAAO4S,UAAU2e,WAAa,WACHhsB,SAArB7G,KAAK+yB,YACP/yB,KAAKgmB,OAELhmB,KAAKkmB,QAOT5kB,EAAO4S,UAAU8R,KAAO,WAElBhmB,KAAK+yB,cAET/yB,KAAKmzB,WAEDnzB,KAAKsgB,QACPtgB,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,UAO5BhD,EAAO4S,UAAUgS,KAAO,WACtBmN,cAAcrzB,KAAK+yB,aACnB/yB,KAAK+yB,YAAclsB,OAEf7G,KAAKsgB,QACPtgB,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,SAQ5BhD,EAAO4S,UAAU6V,oBAAsB,SAASlhB,GAC9C7I,KAAK8yB,iBAAmBjqB,GAO1BvH,EAAO4S,UAAUyV,gBAAkB,SAASyJ,GAC1CpzB,KAAKgzB,aAAeI,GAOtB9xB,EAAO4S,UAAUof,gBAAkB,WACjC,MAAOtzB,MAAKgzB,cASd1xB,EAAO4S,UAAUqf,YAAc,SAASC,GACtCxzB,KAAKizB,SAAWO,GAOlBlyB,EAAO4S,UAAUuf,SAAW,WACI5sB,SAA1B7G,KAAK8yB,kBACP9yB,KAAK8yB,oBAOTxxB,EAAO4S,UAAUuO,OAAS,WACxB,GAAIziB,KAAKsgB,MAAO,CAEdtgB,KAAKsgB,MAAMmS,IAAI/kB,MAAMzF,IAAOjI,KAAKsgB,MAAMuF,aAAa,EAChD7lB,KAAKsgB,MAAMmS,IAAIvB,aAAa,EAAK,KACrClxB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,MAAStT,KAAKsgB,MAAME,YACrCxgB,KAAKsgB,MAAMkS,KAAKhS,YAChBxgB,KAAKsgB,MAAM0F,KAAKxF,YAChBxgB,KAAKsgB,MAAM+I,KAAK7I,YAAc,GAAO,IAGzC,IAAI3Y,GAAO7H,KAAK0zB,YAAY1zB,KAAK0I,MACjC1I,MAAKsgB,MAAMqS,MAAMjlB,MAAM7F,KAAO,EAAS,OAS3CvG,EAAO4S,UAAUwV,UAAY,SAAS7R,GACpC7X,KAAK6X,OAASA,EAEV7X,KAAK6X,OAAO7R,OAAS,EACvBhG,KAAKkzB,SAAS,GAEdlzB,KAAK0I,MAAQ7B,QAOjBvF,EAAO4S,UAAUgf,SAAW,SAASxqB,GACnC,KAAIA,EAAQ1I,KAAK6X,OAAO7R,QAOtB,KAAM,2BANNhG,MAAK0I,MAAQA,EAEb1I,KAAKyiB,SACLziB,KAAKyzB,YAWTnyB,EAAO4S,UAAU2V,SAAW,WAC1B,MAAO7pB,MAAK0I,OAQdpH,EAAO4S,UAAU+B,IAAM,WACrB,MAAOjW,MAAK6X,OAAO7X,KAAK0I,QAI1BpH,EAAO4S,UAAUiR,aAAe,SAAStb,GAEvC,GAAIsjB,GAAiBtjB,EAAMwjB,MAAyB,IAAhBxjB,EAAMwjB,MAAiC,IAAjBxjB,EAAMyjB,MAChE,IAAKH,EAAL,CAEAntB,KAAK2zB,aAAe9pB,EAAM+T,QAC1B5d,KAAK4zB,YAAcvN,WAAWrmB,KAAKsgB,MAAMqS,MAAMjlB,MAAM7F,MAErD7H,KAAKsgB,MAAM5S,MAAMmgB,OAAS,MAK1B,IAAI3Y,GAAKlV,IACTA,MAAK8tB,YAAc,SAAUjkB,GAAQqL,EAAG6Y,aAAalkB,IACrD7J,KAAKguB,UAAc,SAAUnkB,GAAQqL,EAAGkY,WAAWvjB,IACnDlJ,EAAKuI,iBAAiB8I,SAAU,YAAahS,KAAK8tB,aAClDntB,EAAKuI,iBAAiB8I,SAAU,UAAahS,KAAKguB,WAClDrtB,EAAKiJ,eAAeC,KAItBvI,EAAO4S,UAAU2f,YAAc,SAAUhsB,GACvC,GAAIyL,GAAQ+S,WAAWrmB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,OACxCtT,KAAKsgB,MAAMqS,MAAMnS,YAAc,GAC/BhO,EAAI3K,EAAO,EAEXa,EAAQlE,KAAK+pB,MAAM/b,EAAIc,GAAStT,KAAK6X,OAAO7R,OAAO,GAIvD,OAHY,GAAR0C,IAAWA,EAAQ,GACnBA,EAAQ1I,KAAK6X,OAAO7R,OAAO,IAAG0C,EAAQ1I,KAAK6X,OAAO7R,OAAO,GAEtD0C,GAGTpH,EAAO4S,UAAUwf,YAAc,SAAUhrB,GACvC,GAAI4K,GAAQ+S,WAAWrmB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,OACxCtT,KAAKsgB,MAAMqS,MAAMnS,YAAc,GAE/BhO,EAAI9J,GAAS1I,KAAK6X,OAAO7R,OAAO,GAAKsN,EACrCzL,EAAO2K,EAAI,CAEf,OAAO3K,IAKTvG,EAAO4S,UAAU6Z,aAAe,SAAUlkB,GACxC,GAAIqjB,GAAOrjB,EAAM+T,QAAU5d,KAAK2zB,aAC5BnhB,EAAIxS,KAAK4zB,YAAc1G,EAEvBxkB,EAAQ1I,KAAK6zB,YAAYrhB,EAE7BxS,MAAKkzB,SAASxqB,GAEd/H,EAAKiJ,kBAIPtI,EAAO4S,UAAUkZ,WAAa,WAC5BptB,KAAKsgB,MAAM5S,MAAMmgB,OAAS,OAG1BltB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAK8tB,aACrDntB,EAAK+I,oBAAoBsI,SAAU,UAAWhS,KAAKguB,WAEnDrtB,EAAKiJ,kBAGP/J,EAAOD,QAAU0B,GAKb,SAASzB,GA2Bb,QAAS0B,GAAW8O,EAAOC,EAAK6Y,EAAMkB,GAEpCrqB,KAAK8zB,OAAS,EACd9zB,KAAK+zB,KAAO,EACZ/zB,KAAKg0B,MAAQ,EACbh0B,KAAKqqB,YAAa,EAClBrqB,KAAKi0B,UAAY,EAEjBj0B,KAAKk0B,SAAW,EAChBl0B,KAAKm0B,SAAS9jB,EAAOC,EAAK6Y,EAAMkB,GAYlC9oB,EAAW2S,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK6Y,EAAMkB,GACzDrqB,KAAK8zB,OAASzjB,EAAQA,EAAQ,EAC9BrQ,KAAK+zB,KAAOzjB,EAAMA,EAAM,EAExBtQ,KAAKo0B,QAAQjL,EAAMkB,IASrB9oB,EAAW2S,UAAUkgB,QAAU,SAASjL,EAAMkB,GAC/BxjB,SAATsiB,GAA8B,GAARA,IAGPtiB,SAAfwjB,IACFrqB,KAAKqqB,WAAaA,GAGlBrqB,KAAKg0B,MADHh0B,KAAKqqB,cAAe,EACT9oB,EAAW8yB,oBAAoBlL,GAE/BA,IAUjB5nB,EAAW8yB,oBAAsB,SAAUlL,GACzC,GAAImL,GAAQ,SAAU9hB,GAAI,MAAOhO,MAAK+vB,IAAI/hB,GAAKhO,KAAKgwB,MAGhDC,EAAQjwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,KACtCwL,EAAQ,EAAInwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,EAAO,KACjDyL,EAAQ,EAAIpwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,EAAO,KAGjDkB,EAAaoK,CASjB,OARIjwB,MAAKknB,IAAIiJ,EAAQxL,IAAS3kB,KAAKknB,IAAIrB,EAAalB,KAAOkB,EAAasK,GACpEnwB,KAAKknB,IAAIkJ,EAAQzL,IAAS3kB,KAAKknB,IAAIrB,EAAalB,KAAOkB,EAAauK,GAGtD,GAAdvK,IACFA,EAAa,GAGRA,GAOT9oB,EAAW2S,UAAUkV,WAAa,WAChC,MAAO/C,YAAWrmB,KAAKk0B,SAASW,YAAY70B,KAAKi0B,aAOnD1yB,EAAW2S,UAAU4gB,QAAU,WAC7B,MAAO90B,MAAKg0B,OAOdzyB,EAAW2S,UAAU7D,MAAQ,WAC3BrQ,KAAKk0B,SAAWl0B,KAAK8zB,OAAS9zB,KAAK8zB,OAAS9zB,KAAKg0B,OAMnDzyB,EAAW2S,UAAUmV,KAAO,WAC1BrpB,KAAKk0B,UAAYl0B,KAAKg0B,OAOxBzyB,EAAW2S,UAAU5D,IAAM,WACzB,MAAQtQ,MAAKk0B,SAAWl0B,KAAK+zB,MAG/Bl0B,EAAOD,QAAU2B,GAKb,SAAS1B,EAAQD,EAASM,GAuB9B,QAASsB,GAAUgZ,EAAWvY,EAAO8yB,EAAQ7lB,GAC3C,KAAMlP,eAAgBwB,IACpB,KAAM,IAAIiZ,aAAY,mDAIxB,MAAMnU,MAAMC,QAAQwuB,IAAWA,YAAkBl0B,IAAWk0B,YAAkBj0B,KAAai0B,YAAkBnuB,QAAQ,CACnH,GAAIouB,GAAgB9lB,CACpBA,GAAU6lB,EACVA,EAASC,EAGX,GAAI9f,GAAKlV,IACTA,MAAKi1B,gBACH5kB,MAAO,KACPC,IAAO,KAEP4kB,YAAY,EAEZC,YAAa,SACb7hB,MAAO,KACPC,OAAQ,KACR6hB,UAAW,KACXC,UAAW,MAEbr1B,KAAKkP,QAAUvO,EAAKmG,cAAe9G,KAAKi1B,gBAGxCj1B,KAAKs1B,QAAQ9a,GAGbxa,KAAKgC,cAELhC,KAAKu1B,MACH5E,IAAK3wB,KAAK2wB,IACV6E,SAAUx1B,KAAKqG,MACfovB,SACEnhB,GAAItU,KAAKsU,GAAGohB,KAAK11B,MACjByU,IAAKzU,KAAKyU,IAAIihB,KAAK11B,MACnByuB,KAAMzuB,KAAKyuB,KAAKiH,KAAK11B,OAEvB21B,eACAh1B,MACEi1B,SAAU,WACR,MAAO1gB,GAAG2gB,SAAS1M,KAAK5kB,OAE1BuwB,QAAS,WACP,MAAO5f,GAAG2gB,SAAS1M,KAAKA,MAG1B2M,SAAU5gB,EAAG6gB,UAAUL,KAAKxgB,GAC5B8gB,eAAgB9gB,EAAG+gB,gBAAgBP,KAAKxgB,GACxCghB,OAAQhhB,EAAGihB,QAAQT,KAAKxgB,GACxBkhB,aAAelhB,EAAGmhB,cAAcX,KAAKxgB,KAKzClV,KAAKs2B,MAAQ,GAAIz0B,GAAM7B,KAAKu1B,MAC5Bv1B,KAAKgC,WAAWuG,KAAKvI,KAAKs2B,OAC1Bt2B,KAAKu1B,KAAKe,MAAQt2B,KAAKs2B,MAGvBt2B,KAAK61B,SAAW,GAAI5yB,GAASjD,KAAKu1B,MAClCv1B,KAAKu2B,UAAY,KACjBv2B,KAAKgC,WAAWuG,KAAKvI,KAAK61B,UAG1B71B,KAAKw2B,YAAc,GAAIh0B,GAAYxC,KAAKu1B,MACxCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKw2B,aAI1Bx2B,KAAKy2B,WAAa,GAAIh0B,GAAWzC,KAAKu1B,MACtCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKy2B,YAG1Bz2B,KAAK02B,QAAU,GAAI5zB,GAAQ9C,KAAKu1B,MAChCv1B,KAAKgC,WAAWuG,KAAKvI,KAAK02B,SAE1B12B,KAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAElB52B,KAAKsU,GAAG,MAAO,SAAUzK,GACvBqL,EAAGuZ,KAAK,QAASvZ,EAAG2hB,mBAAmBhtB,MAEzC7J,KAAKsU,GAAG,YAAa,SAAUzK,GAC7BqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,MAE/C7J,KAAK2wB,IAAIjxB,KAAKo3B,cAAgB,SAAUjtB,GACtCqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,KAI3CqF,GACFlP,KAAKiU,WAAW/E,GAId6lB,GACF/0B,KAAK+2B,UAAUhC,GAIb9yB,EACFjC,KAAKg3B,SAAS/0B,GAGdjC,KAAKi3B,UAjIT,GAEIt2B,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B2B,EAAQ3B,EAAoB,IAC5Bg3B,EAAOh3B,EAAoB,IAC3B+C,EAAW/C,EAAoB,IAC/BsC,EAActC,EAAoB,IAClCuC,EAAavC,EAAoB,IACjC4C,EAAU5C,EAAoB,GA4HlCsB,GAAS0S,UAAY,GAAIgjB,GAOzB11B,EAAS0S,UAAUuO,OAAS,WAC1BziB,KAAK02B,SAAW12B,KAAK02B,QAAQS,WAAWC,cAAc,IACtDp3B,KAAKi3B,WAOPz1B,EAAS0S,UAAU8iB,SAAW,SAAS/0B,GACrC,GAGIo1B,GAHAC,EAAiC,MAAlBt3B,KAAK22B,SAwBxB,IAhBEU,EAJGp1B,EAGIA,YAAiBpB,IAAWoB,YAAiBnB,GACvCmB,EAIA,GAAIpB,GAAQoB,GACvBkF,MACEkJ,MAAO,OACPC,IAAK,UAVI,KAgBftQ,KAAK22B,UAAYU,EACjBr3B,KAAK02B,SAAW12B,KAAK02B,QAAQM,SAASK,GAElCC,EACF,GAA0BzwB,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAAkB,CACpE,GAA0BzJ,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAClD,GAAIinB,GAAYv3B,KAAKw3B,eAGvB,IAAInnB,GAA8BxJ,QAAtB7G,KAAKkP,QAAQmB,MAAqBrQ,KAAKkP,QAAQmB,MAAQknB,EAAUlnB,MACzEC,EAA4BzJ,QAApB7G,KAAKkP,QAAQoB,IAAqBtQ,KAAKkP,QAAQoB,IAAQinB,EAAUjnB,GAE7EtQ,MAAKy3B,UAAUpnB,EAAOC,GAAMonB,SAAS,QAGrC13B,MAAK23B,KAAKD,SAAS,KASzBl2B,EAAS0S,UAAU6iB,UAAY,SAAShC,GAEtC,GAAIsC,EAKFA,GAJGtC,EAGIA,YAAkBl0B,IAAWk0B,YAAkBj0B,GACzCi0B,EAIA,GAAIl0B,GAAQk0B,GAPZ,KAUf/0B,KAAK42B,WAAaS,EAClBr3B,KAAK02B,QAAQK,UAAUM,IAmBzB71B,EAAS0S,UAAU0jB,aAAe,SAAS1hB,EAAKhH,GAC9ClP,KAAK02B,SAAW12B,KAAK02B,QAAQkB,aAAa1hB,GAEtChH,GAAWA,EAAQ2oB,OACrB73B,KAAK63B,MAAM3hB,EAAKhH,IAQpB1N,EAAS0S,UAAU4jB,aAAe,WAChC,MAAO93B,MAAK02B,SAAW12B,KAAK02B,QAAQoB,oBAetCt2B,EAAS0S,UAAU2jB,MAAQ,SAASx3B,EAAI6O,GACtC,GAAKlP,KAAK22B,WAAmB9vB,QAANxG,EAAvB,CAEA,GAAI6V,GAAM5P,MAAMC,QAAQlG,GAAMA,GAAMA,GAGhCs2B,EAAY32B,KAAK22B,UAAU9f,aAAaZ,IAAIC,GAC9C/O,MACEkJ,MAAO,OACPC,IAAK,UAKLD,EAAQ,KACRC,EAAM,IAcV,IAbAqmB,EAAU/tB,QAAQ,SAAUmvB,GAC1B,GAAIxrB,GAAIwrB,EAAS1nB,MAAMhJ,UACnBiD,EAAI,OAASytB,GAAWA,EAASznB,IAAIjJ,UAAY0wB,EAAS1nB,MAAMhJ,WAEtD,OAAVgJ,GAAsBA,EAAJ9D,KACpB8D,EAAQ9D,IAGE,OAAR+D,GAAgBhG,EAAIgG,KACtBA,EAAMhG,KAII,OAAV+F,GAA0B,OAARC,EAAc,CAElC,GAAIT,IAAUQ,EAAQC,GAAO,EACzB8iB,EAAW5uB,KAAKJ,IAAKpE,KAAKs2B,MAAMhmB,IAAMtQ,KAAKs2B,MAAMjmB,MAAwB,KAAfC,EAAMD,IAEhEqnB,EAAWxoB,GAA+BrI,SAApBqI,EAAQwoB,QAAyBxoB,EAAQwoB,SAAU,CAC7E13B,MAAKs2B,MAAMnC,SAAStkB,EAASujB,EAAW,EAAGvjB,EAASujB,EAAW,EAAGsE,MAUtEl2B,EAAS0S,UAAU8jB,aAAe,WAEhC,GAAIC,GAAUj4B,KAAK22B,UAAU9f,aAC3B1S,EAAM,KACNC,EAAM,IAER,IAAI6zB,EAAS,CAEX,GAAIC,GAAUD,EAAQ9zB,IAAI,QAC1BA,GAAM+zB,EAAUv3B,EAAKuG,QAAQgxB,EAAQ7nB,MAAO,QAAQhJ,UAAY,IAKhE,IAAI8wB,GAAeF,EAAQ7zB,IAAI,QAC3B+zB,KACF/zB,EAAMzD,EAAKuG,QAAQixB,EAAa9nB,MAAO,QAAQhJ,UAEjD,IAAI+wB,GAAaH,EAAQ7zB,IAAI,MACzBg0B,KAEAh0B,EADS,MAAPA,EACIzD,EAAKuG,QAAQkxB,EAAW9nB,IAAK,QAAQjJ,UAGrC7C,KAAKJ,IAAIA,EAAKzD,EAAKuG,QAAQkxB,EAAW9nB,IAAK,QAAQjJ,YAK/D,OACElD,IAAa,MAAPA,EAAe,GAAIS,MAAKT,GAAO,KACrCC,IAAa,MAAPA,EAAe,GAAIQ,MAAKR,GAAO,OAUzC5C,EAAS0S,UAAU2iB,mBAAqB,SAAUhtB,GAChD,GAAIiG,GAAQ9P,KAAK02B,QAAQ2B,eAAexuB,GACpC6I,EAAQ1S,KAAK02B,QAAQ4B,gBAAgBzuB,GACrC0uB,EAAQ1uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAOwL,MAAQ1uB,EAAM0uB,MAC3DE,EAAQ5uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAO0L,MAAQ5uB,EAAM4uB,MAC3DjmB,EAAI+lB,EAAQ53B,EAAK+G,gBAAgB1H,KAAK2wB,IAAI+H,iBAC1CjmB,EAAIgmB,EAAQ93B,EAAKqH,eAAehI,KAAK2wB,IAAI+H,iBAEzCC,EAAO34B,KAAK02B,QAAQxnB,QAAQypB,MAAQ,KACpCp0B,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UACtB8D,EAAO54B,KAAKm2B,QAAQ3jB,GACpBqmB,EAAcF,EAAOA,EAAKC,EAAMr0B,EAAO4kB,GAAQyP,EAE/CzvB,EAAUxI,EAAKoJ,UAAUF,GACzBivB,EAAO,IASX,OARY,OAARhpB,EAAkEgpB,EAAO,OACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK61B,SAASlF,IAAIoI,YAAmBD,EAAO,OACpE94B,KAAKu2B,WAAa51B,EAAKyJ,UAAUjB,EAASnJ,KAAKu2B,UAAU5F,IAAIoI,YAAcD,EAAO,OAClFn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK02B,QAAQ/F,IAAIqI,UAAoBF,EAAO,cACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKy2B,WAAWhE,KAAqBqG,EAAO,cACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKw2B,YAAY/D,KAAoBqG,EAAO,eACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK2wB,IAAI5D,UAA4B+L,EAAO,eAG3EjvB,MAAOA,EACPiG,KAAMA,EAAOA,EAAKzP,GAAK,KACvBqS,MAAOA,EAAQA,EAAMumB,QAAU,KAC/BH,KAAMA,EACNP,MAAOA,EACPE,MAAOA,EACPjmB,EAAGA,EACHC,EAAGA,EACHmmB,KAAMA,EACNC,YAAaA,IAIjBh5B,EAAOD,QAAU4B,GAKb,SAAS3B,EAAQD,EAASM,GAsB9B,QAASuB,GAAS+Y,EAAWvY,EAAO8yB,EAAQ7lB,GAE1C,KAAM5I,MAAMC,QAAQwuB,IAAWA,YAAkBl0B,KAAYk0B,YAAkBnuB,QAAQ,CACrF,GAAIouB,GAAgB9lB,CACpBA,GAAU6lB,EACVA,EAASC,EAGX,GAAI9f,GAAKlV,IACTA,MAAKi1B,gBACH5kB,MAAO,KACPC,IAAO,KAEP4kB,YAAY,EAEZC,YAAa,SACb7hB,MAAO,KACPC,OAAQ,KACR6hB,UAAW,KACXC,UAAW,MAEbr1B,KAAKkP,QAAUvO,EAAKmG,cAAe9G,KAAKi1B,gBAGxCj1B,KAAKs1B,QAAQ9a,GAGbxa,KAAKgC,cAELhC,KAAKu1B,MACH5E,IAAK3wB,KAAK2wB,IACV6E,SAAUx1B,KAAKqG,MACfovB,SACEnhB,GAAItU,KAAKsU,GAAGohB,KAAK11B,MACjByU,IAAKzU,KAAKyU,IAAIihB,KAAK11B,MACnByuB,KAAMzuB,KAAKyuB,KAAKiH,KAAK11B,OAEvB21B,eACAh1B,MACEm1B,SAAU5gB,EAAG6gB,UAAUL,KAAKxgB,GAC5B8gB,eAAgB9gB,EAAG+gB,gBAAgBP,KAAKxgB,GACxCghB,OAAQhhB,EAAGihB,QAAQT,KAAKxgB,GACxBkhB,aAAelhB,EAAGmhB,cAAcX,KAAKxgB,KAKzClV,KAAKs2B,MAAQ,GAAIz0B,GAAM7B,KAAKu1B,MAC5Bv1B,KAAKgC,WAAWuG,KAAKvI,KAAKs2B,OAC1Bt2B,KAAKu1B,KAAKe,MAAQt2B,KAAKs2B,MAGvBt2B,KAAK61B,SAAW,GAAI5yB,GAASjD,KAAKu1B,MAClCv1B,KAAKgC,WAAWuG,KAAKvI,KAAK61B,UAI1B71B,KAAKw2B,YAAc,GAAIh0B,GAAYxC,KAAKu1B,MACxCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKw2B,aAI1Bx2B,KAAKy2B,WAAa,GAAIh0B,GAAWzC,KAAKu1B,MACtCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKy2B,YAG1Bz2B,KAAKk5B,UAAY,GAAIl2B,GAAUhD,KAAKu1B,MACpCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKk5B,WAE1Bl5B,KAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAElB52B,KAAKsU,GAAG,MAAO,SAAUzK,GACvBqL,EAAGuZ,KAAK,QAASvZ,EAAG2hB,mBAAmBhtB,MAEzC7J,KAAKsU,GAAG,YAAa,SAAUzK,GAC7BqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,MAE/C7J,KAAK2wB,IAAIjxB,KAAKo3B,cAAgB,SAAUjtB,GACtCqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,KAI3CqF,GACFlP,KAAKiU,WAAW/E,GAId6lB,GACF/0B,KAAK+2B,UAAUhC,GAIb9yB,EACFjC,KAAKg3B,SAAS/0B,GAGdjC,KAAKi3B,UArHT,GAEIt2B,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B2B,EAAQ3B,EAAoB,IAC5Bg3B,EAAOh3B,EAAoB,IAC3B+C,EAAW/C,EAAoB,IAC/BsC,EAActC,EAAoB,IAClCuC,EAAavC,EAAoB,IACjC8C,EAAY9C,EAAoB,GAgHpCuB,GAAQyS,UAAY,GAAIgjB,GAMxBz1B,EAAQyS,UAAU8iB,SAAW,SAAS/0B,GACpC,GAGIo1B,GAHAC,EAAiC,MAAlBt3B,KAAK22B,SAwBxB,IAhBEU,EAJGp1B,EAGIA,YAAiBpB,IAAWoB,YAAiBnB,GACvCmB,EAIA,GAAIpB,GAAQoB,GACvBkF,MACEkJ,MAAO,OACPC,IAAK,UAVI,KAgBftQ,KAAK22B,UAAYU,EACjBr3B,KAAKk5B,WAAal5B,KAAKk5B,UAAUlC,SAASK,GAEtCC,EACF,GAA0BzwB,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAAkB,CACpE,GAAID,GAA8BxJ,QAAtB7G,KAAKkP,QAAQmB,MAAqBrQ,KAAKkP,QAAQmB,MAAQ,KAC/DC,EAA4BzJ,QAApB7G,KAAKkP,QAAQoB,IAAqBtQ,KAAKkP,QAAQoB,IAAM,IAEjEtQ,MAAKy3B,UAAUpnB,EAAOC,GAAMonB,SAAS,QAGrC13B,MAAK23B,KAAKD,SAAS,KASzBj2B,EAAQyS,UAAU6iB,UAAY,SAAShC,GAErC,GAAIsC,EAKFA,GAJGtC,EAGIA,YAAkBl0B,IAAWk0B,YAAkBj0B,GACzCi0B,EAIA,GAAIl0B,GAAQk0B,GAPZ,KAUf/0B,KAAK42B,WAAaS,EAClBr3B,KAAKk5B,UAAUnC,UAAUM,IAS3B51B,EAAQyS,UAAUilB,UAAY,SAASF,EAAS3lB,EAAOC,GAGrD,MAFe1M,UAAXyM,IAAuBA,EAAS,IACrBzM,SAAX0M,IAAuBA,EAAS,IACG1M,SAAnC7G,KAAKk5B,UAAUnE,OAAOkE,GACjBj5B,KAAKk5B,UAAUnE,OAAOkE,GAASE,UAAU7lB,EAAMC,GAG/C,qBAAwB0lB,GASnCx3B,EAAQyS,UAAUklB,eAAiB,SAASH,GAC1C,MAAuCpyB,UAAnC7G,KAAKk5B,UAAUnE,OAAOkE,GAChBj5B,KAAKk5B,UAAUnE,OAAOkE,GAASxP,UAAkE5iB,SAAtD7G,KAAKk5B,UAAUhqB,QAAQ6lB,OAAOsE,WAAWJ,IAA+E,GAArDj5B,KAAKk5B,UAAUhqB,QAAQ6lB,OAAOsE,WAAWJ,KAGxJ,GAWXx3B,EAAQyS,UAAU8jB,aAAe,WAC/B,GAAI7zB,GAAM,KACNC,EAAM,IAGV,KAAK,GAAI60B,KAAWj5B,MAAKk5B,UAAUnE,OACjC,GAAI/0B,KAAKk5B,UAAUnE,OAAO5uB,eAAe8yB,IACO,GAA1Cj5B,KAAKk5B,UAAUnE,OAAOkE,GAASxP,QACjC,IAAK,GAAI5jB,GAAI,EAAGA,EAAI7F,KAAKk5B,UAAUnE,OAAOkE,GAAStC,UAAU3wB,OAAQH,IAAK,CACxE,GAAIiK,GAAO9P,KAAKk5B,UAAUnE,OAAOkE,GAAStC,UAAU9wB,GAChDvB,EAAQ3D,EAAKuG,QAAQ4I,EAAK0C,EAAG,QAAQnL,SACzClD,GAAa,MAAPA,EAAcG,EAAQH,EAAMG,EAAQA,EAAQH,EAClDC,EAAa,MAAPA,EAAcE,EAAcA,EAANF,EAAcE,EAAQF,EAM1D,OACED,IAAa,MAAPA,EAAe,GAAIS,MAAKT,GAAO,KACrCC,IAAa,MAAPA,EAAe,GAAIQ,MAAKR,GAAO,OAWzC3C,EAAQyS,UAAU2iB,mBAAqB,SAAUhtB,GAC/C,GAAI0uB,GAAQ1uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAOwL,MAAQ1uB,EAAM0uB,MAC3DE,EAAQ5uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAO0L,MAAQ5uB,EAAM4uB,MAC3DjmB,EAAI+lB,EAAQ53B,EAAK+G,gBAAgB1H,KAAK2wB,IAAI+H,iBAC1CjmB,EAAIgmB,EAAQ93B,EAAKqH,eAAehI,KAAK2wB,IAAI+H,iBACzCE,EAAO54B,KAAKm2B,QAAQ3jB,GAEpBrJ,EAAUxI,EAAKoJ,UAAUF,GACzBivB,EAAO,IACPn4B,GAAKyJ,UAAUjB,EAASnJ,KAAK61B,SAASlF,IAAIoI,YAA2BD,EAAO,OACvE94B,KAAKu2B,WAAa51B,EAAKyJ,UAAUjB,EAASnJ,KAAKu2B,UAAU5F,IAAIoI,YAAcD,EAAO,OAClFn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUI,UAAU3I,IAAIrQ,OAAWwY,EAAO,YACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUK,WAAW5I,IAAIrQ,OAAUwY,EAAO,YACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUM,WAAW7I,IAAIrQ,OAAUwY,EAAO,SACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUO,YAAY9I,IAAIrQ,OAASwY,EAAO,SACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKy2B,WAAWhE,KAAwBqG,EAAO,cACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKw2B,YAAY/D,KAAuBqG,EAAO,eACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK2wB,IAAI5D,UAA+B+L,EAAO,aAEhF,IAAIx0B,MACAg1B,EAAYt5B,KAAKk5B,UAAUI,UAC3BC,EAAav5B,KAAKk5B,UAAUK,UAQhC,OAPKD,GAAUI,QACbp1B,EAAMiE,KAAK+wB,EAAUK,cAAclnB,IAEhC8mB,EAAWG,QACdp1B,EAAMiE,KAAKgxB,EAAWI,cAAclnB,KAIpC5I,MAAOA,EACPivB,KAAMA,EACNP,MAAOA,EACPE,MAAOA,EACPjmB,EAAGA,EACHC,EAAGA,EACHmmB,KAAMA,EACNt0B,MAAOA,IAKXzE,EAAOD,QAAU6B,GAKb,SAAS5B,EAAQD,EAASM,GAK9B,GAAI2D,GAAS3D,EAAoB,GAQjCN,GAAQg6B,qBAAuB,SAASrE,EAAMI,GAE5C,GADAJ,EAAKI,eACDA,GACgC,GAA9BrvB,MAAMC,QAAQovB,GAAsB,CACtC,IAAK,GAAI9vB,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IACtC,GAA8BgB,SAA1B8uB,EAAY9vB,GAAGg0B,OAAsB,CACvC,GAAIC,KACJA,GAASzpB,MAAQxM,EAAO8xB,EAAY9vB,GAAGwK,OAAO9I,SAASF,UACvDyyB,EAASxpB,IAAMzM,EAAO8xB,EAAY9vB,GAAGyK,KAAK/I,SAASF,UACnDkuB,EAAKI,YAAYptB,KAAKuxB,GAG1BvE,EAAKI,YAAY1e,KAAK,SAAUrR,EAAGa,GACjC,MAAOb,GAAEyK,MAAQ5J,EAAE4J,UAY3BzQ,EAAQm6B,kBAAoB,SAAUxE,EAAMI,GAC1C,GAAIA,GAAuD9uB,SAAxC0uB,EAAKC,SAASkD,gBAAgBplB,MAAqB,CACpE1T,EAAQg6B,qBAAqBrE,EAAMI,EAQnC,KAAK,GANDtlB,GAAQxM,EAAO0xB,EAAKe,MAAMjmB,OAC1BC,EAAMzM,EAAO0xB,EAAKe,MAAMhmB,KAExB0pB,EAAczE,EAAKe,MAAMhmB,IAAMilB,EAAKe,MAAMjmB,MAC1C4pB,EAAYD,EAAazE,EAAKC,SAASkD,gBAAgBplB,MAElDzN,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IACtC,GAA8BgB,SAA1B8uB,EAAY9vB,GAAGg0B,OAAsB,CACvC,GAAIK,GAAYr2B,EAAO8xB,EAAY9vB,GAAGwK,OAClC8pB,EAAUt2B,EAAO8xB,EAAY9vB,GAAGyK,IAEpC,IAAoB,gBAAhB4pB,EAAUE,GACZ,KAAM,IAAIx2B,OAAM,qCAAuC+xB,EAAY9vB,GAAGwK,MAExE,IAAkB,gBAAd8pB,EAAQC,GACV,KAAM,IAAIx2B,OAAM,mCAAqC+xB,EAAY9vB,GAAGyK,IAGtE,IAAIC,GAAW4pB,EAAUD,CACzB,IAAI3pB,GAAY,EAAI0pB,EAAW,CAE7B,GAAIvP,GAAS,EACT2P,EAAW/pB,EAAIgqB,OACnB,QAAQ3E,EAAY9vB,GAAGg0B,QACrB,IAAK,QACCK,EAAUK,OAASJ,EAAQI,QAC7B7P,EAAS,GAEXwP,EAAUM,UAAUnqB,EAAMmqB,aAC1BN,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,QAErBiO,EAAQK,UAAUnqB,EAAMmqB,aACxBL,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAIxB,EAAO,QAE5B2P,EAASrmB,IAAI,EAAG,QAChB,MACF,KAAK,SACH,GAAI0mB,GAAYP,EAAQjN,KAAKgN,EAAU,QACnCK,EAAML,EAAUK,KAGpBL,GAAUS,KAAKtqB,EAAMsqB,QACrBT,EAAUU,MAAMvqB,EAAMuqB,SACtBV,EAAUO,KAAKpqB,EAAMoqB,QACrBN,EAAUD,EAAUI,QAGpBJ,EAAUK,IAAIA,GACdJ,EAAQI,IAAIA,GACZJ,EAAQnmB,IAAI0mB,EAAU,QAEtBR,EAAUhO,SAAS,EAAE,SACrBiO,EAAQjO,SAAS,EAAE,SAEnBmO,EAASrmB,IAAI,EAAG,QAChB,MACF,KAAK,UACCkmB,EAAUU,SAAWT,EAAQS,UAC/BlQ,EAAS,GAEXwP,EAAUU,MAAMvqB,EAAMuqB,SACtBV,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,UAErBiO,EAAQS,MAAMvqB,EAAMuqB,SACpBT,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAE,UACnBiO,EAAQnmB,IAAI0W,EAAO,UAEnB2P,EAASrmB,IAAI,EAAG,SAChB,MACF,KAAK,SACCkmB,EAAUO,QAAUN,EAAQM,SAC9B/P,EAAS,GAEXwP,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,SACrBiO,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAE,SACnBiO,EAAQnmB,IAAI0W,EAAO,SAEnB2P,EAASrmB,IAAI,EAAG,QAChB,MACF,SAEE,WADA6mB,SAAQtG,IAAI,2EAA4EoB,EAAY9vB,GAAGg0B,QAG3G,KAAmBQ,EAAZH,GAEL,OADA3E,EAAKI,YAAYptB,MAAM8H,MAAO6pB,EAAU7yB,UAAWiJ,IAAK6pB,EAAQ9yB,YACxDsuB,EAAY9vB,GAAGg0B,QACrB,IAAK,QACHK,EAAUlmB,IAAI,EAAG,QACjBmmB,EAAQnmB,IAAI,EAAG,OACf,MACF,KAAK,SACHkmB,EAAUlmB,IAAI,EAAG,SACjBmmB,EAAQnmB,IAAI,EAAG,QACf,MACF,KAAK,UACHkmB,EAAUlmB,IAAI,EAAG,UACjBmmB,EAAQnmB,IAAI,EAAG,SACf,MACF,KAAK,SACHkmB,EAAUlmB,IAAI,EAAG,KACjBmmB,EAAQnmB,IAAI,EAAG,IACf,MACF,SAEE,WADA6mB,SAAQtG,IAAI,2EAA4EoB,EAAY9vB,GAAGg0B,QAI7GtE,EAAKI,YAAYptB,MAAM8H,MAAO6pB,EAAU7yB,UAAWiJ,IAAK6pB,EAAQ9yB,aAKtEzH,EAAQk7B,iBAAiBvF,EAEzB,IAAIwF,GAAcn7B,EAAQo7B,SAASzF,EAAKe,MAAMjmB,MAAOklB,EAAKI,aACtDsF,EAAYr7B,EAAQo7B,SAASzF,EAAKe,MAAMhmB,IAAIilB,EAAKI,aACjDuF,EAAa3F,EAAKe,MAAMjmB,MACxB8qB,EAAW5F,EAAKe,MAAMhmB,GACA,IAAtByqB,EAAYrB,SAAiBwB,EAAwC,GAA3B3F,EAAKe,MAAM8E,aAAuBL,EAAYb,UAAY,EAAIa,EAAYZ,QAAU,GAC1G,GAApBc,EAAUvB,SAAmByB,EAAsC,GAAzB5F,EAAKe,MAAM+E,WAAuBJ,EAAUf,UAAY,EAAMe,EAAUd,QAAU,IACtG,GAAtBY,EAAYrB,QAAsC,GAApBuB,EAAUvB,SAC1CnE,EAAKe,MAAMgF,YAAYJ,EAAYC,KAYzCv7B,EAAQk7B,iBAAmB,SAASvF,GAGlC,IAAK,GAFDI,GAAcJ,EAAKI,YACnB4F,KACK11B,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IACtC,IAAK,GAAI4mB,GAAI,EAAGA,EAAIkJ,EAAY3vB,OAAQymB,IAClC5mB,GAAK4mB,GAA8B,GAAzBkJ,EAAYlJ,GAAGrV,QAA2C,GAAzBue,EAAY9vB,GAAGuR,SAExDue,EAAYlJ,GAAGpc,OAASslB,EAAY9vB,GAAGwK,OAASslB,EAAYlJ,GAAGnc,KAAOqlB,EAAY9vB,GAAGyK,IACvFqlB,EAAYlJ,GAAGrV,QAAS,EAGjBue,EAAYlJ,GAAGpc,OAASslB,EAAY9vB,GAAGwK,OAASslB,EAAYlJ,GAAGpc,OAASslB,EAAY9vB,GAAGyK,KAC9FqlB,EAAY9vB,GAAGyK,IAAMqlB,EAAYlJ,GAAGnc,IACpCqlB,EAAYlJ,GAAGrV,QAAS,GAGjBue,EAAYlJ,GAAGnc,KAAOqlB,EAAY9vB,GAAGwK,OAASslB,EAAYlJ,GAAGnc,KAAOqlB,EAAY9vB,GAAGyK,MAC1FqlB,EAAY9vB,GAAGwK,MAAQslB,EAAYlJ,GAAGpc,MACtCslB,EAAYlJ,GAAGrV,QAAS,GAMhC,KAAK,GAAIvR,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAClC8vB,EAAY9vB,GAAGuR,UAAW,GAC5BmkB,EAAUhzB,KAAKotB,EAAY9vB,GAI/B0vB,GAAKI,YAAc4F,EACnBhG,EAAKI,YAAY1e,KAAK,SAAUrR,EAAGa,GACjC,MAAOb,GAAEyK,MAAQ5J,EAAE4J,SAIvBzQ,EAAQ47B,WAAa,SAASC,GAC5B,IAAK,GAAI51B,GAAG,EAAGA,EAAI41B,EAAMz1B,OAAQH,IAC/Bg1B,QAAQtG,IAAI1uB,EAAG,GAAIjB,MAAK62B,EAAM51B,GAAGwK,OAAO,GAAIzL,MAAK62B,EAAM51B,GAAGyK,KAAMmrB,EAAM51B,GAAGwK,MAAOorB,EAAM51B,GAAGyK,IAAKmrB,EAAM51B,GAAGuR,SAS3GxX,EAAQ87B,oBAAsB,SAASC,EAAUC,GAG/C,IAAK,GAFDC,IAAe,EACfC,EAAeH,EAASI,QAAQ10B,UAC3BxB,EAAI,EAAGA,EAAI81B,EAAShG,YAAY3vB,OAAQH,IAAK,CACpD,GAAIq0B,GAAYyB,EAAShG,YAAY9vB,GAAGwK,MACpC8pB,EAAUwB,EAAShG,YAAY9vB,GAAGyK,GACtC,IAAIwrB,GAAgB5B,GAA4BC,EAAf2B,EAAwB,CACvDD,GAAe,CACf,QAIJ,GAAoB,GAAhBA,GAAwBC,EAAeH,EAAS5H,KAAK1sB,WAAay0B,GAAgBF,EAAc,CAClG,GAAI1rB,GAAYrM,EAAO+3B,GACnBI,EAAWn4B,EAAOs2B,EAElBjqB,GAAUuqB,QAAUuB,EAASvB,OAASkB,EAASM,cAAe,EACzD/rB,EAAU0qB,SAAWoB,EAASpB,QAAUe,EAASO,eAAgB,EACjEhsB,EAAUsqB,aAAewB,EAASxB,cAAcmB,EAASQ,aAAc,GAEhFR,EAASI,QAAUC,EAASz0B,WAmChC3H,EAAQk2B,SAAW,SAASoB,EAAM0B,EAAMtlB,GACtC,GAAoC,GAAhC4jB,EAAK3B,KAAKI,YAAY3vB,OAAa,CACrC,GAAIo2B,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EACvC,QAAQslB,EAAKvxB,UAAY+0B,EAAW1R,QAAU0R,EAAW73B,MAGzD,GAAIm1B,GAAS95B,EAAQo7B,SAASpC,EAAM1B,EAAK3B,KAAKI,YACzB,IAAjB+D,EAAOA,SACTd,EAAOc,EAAOQ,UAGhB,IAAI3pB,GAAW3Q,EAAQy8B,yBAAyBnF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAMjmB,MAAO6mB,EAAKZ,MAAMhmB,IACpGsoB,GAAOh5B,EAAQ08B,qBAAqBpF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAOsC,EAEvE,IAAIwD,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EAAO/C,EAC9C,QAAQqoB,EAAKvxB,UAAY+0B,EAAW1R,QAAU0R,EAAW73B,OAa7D3E,EAAQs2B,OAAS,SAASgB,EAAM1kB,EAAGc,GACjC,GAAoC,GAAhC4jB,EAAK3B,KAAKI,YAAY3vB,OAAa,CACrC,GAAIo2B,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EACvC,OAAO,IAAI1O,MAAK4N,EAAI4pB,EAAW73B,MAAQ63B,EAAW1R,QAGlD,GAAI6R,GAAiB38B,EAAQy8B,yBAAyBnF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAMjmB,MAAO6mB,EAAKZ,MAAMhmB,KACtGksB,EAAgBtF,EAAKZ,MAAMhmB,IAAM4mB,EAAKZ,MAAMjmB,MAAQksB,EACpDE,EAAkBD,EAAgBhqB,EAAIc,EACtCopB,EAA4B98B,EAAQ+8B,6BAA6BzF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAOmG,GAEpGG,EAAU,GAAIh4B,MAAK83B,EAA4BD,EAAkBvF,EAAKZ,MAAMjmB,MAChF,OAAOusB,IAYXh9B,EAAQy8B,yBAA2B,SAAS1G,EAAatlB,EAAOC,GAE9D,IAAK,GADDC,GAAW,EACN1K,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAEzB4pB,IAAa7pB,GAAmBC,EAAV6pB,IACxB5pB,GAAY4pB,EAAUD,GAG1B,MAAO3pB,IAWT3Q,EAAQ08B,qBAAuB,SAAS3G,EAAaW,EAAOsC,GAG1D,MAFAA,GAAO/0B,EAAO+0B,GAAMrxB,SAASF,UAC7BuxB,GAAQh5B,EAAQi9B,wBAAwBlH,EAAYW,EAAMsC,IAI5Dh5B,EAAQi9B,wBAA0B,SAASlH,EAAaW,EAAOsC,GAC7D,GAAIkE,GAAa,CACjBlE,GAAO/0B,EAAO+0B,GAAMrxB,SAASF,SAE7B,KAAK,GAAIxB,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAEzB4pB,IAAa5D,EAAMjmB,OAAS8pB,EAAU7D,EAAMhmB,KAC1CsoB,GAAQuB,IACV2C,GAAe3C,EAAUD,GAI/B,MAAO4C,IAWTl9B,EAAQ+8B,6BAA+B,SAAShH,EAAaW,EAAOyG,GAKlE,IAAK,GAJDR,GAAiB,EACjBhsB,EAAW,EACXysB,EAAgB1G,EAAMjmB,MAEjBxK,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAE7B,IAAI4pB,GAAa5D,EAAMjmB,OAAS8pB,EAAU7D,EAAMhmB,IAAK,CAGnD,GAFAC,GAAY2pB,EAAY8C,EACxBA,EAAgB7C,EACZ5pB,GAAYwsB,EACd,KAGAR,IAAkBpC,EAAUD,GAKlC,MAAOqC,IAaT38B,EAAQq9B,mBAAqB,SAAStH,EAAaiD,EAAMsE,EAAWC,GAClE,GAAInC,GAAWp7B,EAAQo7B,SAASpC,EAAMjD,EACtC,OAAuB,IAAnBqF,EAAStB,OACK,EAAZwD,EACuB,GAArBC,EACKnC,EAASd,WAAac,EAASb,QAAUvB,GAAQ,EAGjDoC,EAASd,UAAY,EAIL,GAArBiD,EACKnC,EAASb,SAAWvB,EAAOoC,EAASd,WAAa,EAGjDc,EAASb,QAAU,EAKvBvB,GAaXh5B,EAAQo7B,SAAW,SAASpC,EAAMjD,GAChC,IAAK,GAAI9vB,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAE7B,IAAIsoB,GAAQsB,GAAoBC,EAAPvB,EACvB,OAAQc,QAAQ,EAAMQ,UAAWA,EAAWC,QAASA,GAIzD,OAAQT,QAAQ,EAAOQ,UAAWA,EAAWC,QAASA,KAKpD,SAASt6B,GA4Bb,QAAS+B,GAASyO,EAAOC,EAAK8sB,EAAaC,EAAiBC,EAAaC,GAEvEv9B,KAAK+7B,QAAU,EAEf/7B,KAAKw9B,WAAY,EACjBx9B,KAAKy9B,UAAY,EACjBz9B,KAAKmpB,KAAO,EACZnpB,KAAKuE,MAAQ,EAEbvE,KAAK09B,YACL19B,KAAK29B,UACL39B,KAAK49B,UAAY,EAEjB59B,KAAK69B,YAAc,EAAO,EAAM,EAAI,IACpC79B,KAAK89B,YAAc,IAAO,GAAM,EAAI,GAEpC99B,KAAKu9B,WAAaA,EAElBv9B,KAAKm0B,SAAS9jB,EAAOC,EAAK8sB,EAAaC,EAAiBC,GAe1D17B,EAASsS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK8sB,EAAaC,EAAiBC,GAC/Et9B,KAAK8zB,OAA6BjtB,SAApBy2B,EAAYn5B,IAAoBkM,EAAQitB,EAAYn5B,IAClEnE,KAAK+zB,KAA2BltB,SAApBy2B,EAAYl5B,IAAoBkM,EAAMgtB,EAAYl5B,IAE1DpE,KAAK8zB,QAAU9zB,KAAK+zB,OACtB/zB,KAAK8zB,QAAU,IACf9zB,KAAK+zB,MAAQ,GAGO,GAAlB/zB,KAAKw9B,WACPx9B,KAAK+9B,eAAeX,EAAaC,GAGnCr9B,KAAKg+B,SAASV,IAOhB17B,EAASsS,UAAU6pB,eAAiB,SAASX,EAAaC,GAExD,GAAItqB,GAAO/S,KAAK+zB,KAAO/zB,KAAK8zB,OACxBmK,EAAkB,IAAPlrB,EACXmrB,EAAmBd,GAAea,EAAWZ,GAC7Cc,EAAmB35B,KAAK+pB,MAAM/pB,KAAK+vB,IAAI0J,GAAUz5B,KAAKgwB,MAEtD4J,EAAe,GACfC,EAAkB75B,KAAKkwB,IAAI,GAAGyJ,GAE9B9tB,EAAQ,CACW,GAAnB8tB,IACF9tB,EAAQ8tB,EAIV,KAAK,GADDG,IAAgB,EACXz4B,EAAIwK,EAAO7L,KAAKknB,IAAI7lB,IAAMrB,KAAKknB,IAAIyS,GAAmBt4B,IAAK,CAClEw4B,EAAkB75B,KAAKkwB,IAAI,GAAG7uB,EAC9B,KAAK,GAAI4mB,GAAI,EAAGA,EAAIzsB,KAAK89B,WAAW93B,OAAQymB,IAAK,CAC/C,GAAI8R,GAAWF,EAAkBr+B,KAAK89B,WAAWrR,EACjD,IAAI8R,GAAYL,EAAkB,CAChCI,GAAgB,EAChBF,EAAe3R,CACf,QAGJ,GAAqB,GAAjB6R,EACF,MAGJt+B,KAAKy9B,UAAYW,EACjBp+B,KAAKuE,MAAQ85B,EACbr+B,KAAKmpB,KAAOkV,EAAkBr+B,KAAK89B,WAAWM,IAShDx8B,EAASsS,UAAU8pB,SAAW,SAASV,GACjBz2B,SAAhBy2B,IACFA,KAGF,IAAIkB,GAAgC33B,SAApBy2B,EAAYn5B,IAAoBnE,KAAK8zB,OAAuB,EAAb9zB,KAAKuE,MAAYvE,KAAK89B,WAAW99B,KAAKy9B,WAAcH,EAAYn5B,IAC3Hs6B,EAA8B53B,SAApBy2B,EAAYl5B,IAAoBpE,KAAK+zB,KAAQ/zB,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAAcH,EAAYl5B,GAEvHpE,MAAK29B,UAAgC92B,SAApBy2B,EAAYl5B,IAAoBpE,KAAK0+B,aAAaD,GAAWnB,EAAYl5B,IAC1FpE,KAAK09B,YAAkC72B,SAApBy2B,EAAYn5B,IAAoBnE,KAAK0+B,aAAaF,GAAalB,EAAYn5B,IAGvE,GAAnBnE,KAAKu9B,aAAuBv9B,KAAK29B,UAAY39B,KAAK09B,aAAe19B,KAAKmpB,MAAQ,IAChFnpB,KAAK29B,WAAa39B,KAAK29B,UAAY39B,KAAKmpB,MAG1CnpB,KAAK49B,UAAY59B,KAAK0+B,aAAaD,GAAWA,EAAUz+B,KAAK0+B,aAAaF,GAAaA,EACvFx+B,KAAK2+B,YAAc3+B,KAAK29B,UAAY39B,KAAK09B,YAGzC19B,KAAK+7B,QAAU/7B,KAAK29B,WAGtB/7B,EAASsS,UAAUwqB,aAAe,SAASp6B,GACzC,GAAIs6B,GAAUt6B,EAASA,GAAStE,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAClE,OAAIn5B,IAAStE,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,YAAc,GAAOz9B,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAC7FmB,EAAW5+B,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAG7CmB,GASXh9B,EAASsS,UAAU2qB,QAAU,WAC3B,MAAQ7+B,MAAK+7B,SAAW/7B,KAAK09B,aAM/B97B,EAASsS,UAAUmV,KAAO,WACxB,GAAImJ,GAAOxyB,KAAK+7B,OAChB/7B,MAAK+7B,SAAW/7B,KAAKmpB,KAGjBnpB,KAAK+7B,SAAWvJ,IAClBxyB,KAAK+7B,QAAU/7B,KAAK+zB,OAOxBnyB,EAASsS,UAAU4qB,SAAW,WAC5B9+B,KAAK+7B,SAAW/7B,KAAKmpB,KACrBnpB,KAAK29B,WAAa39B,KAAKmpB,KACvBnpB,KAAK2+B,YAAc3+B,KAAK29B,UAAY39B,KAAK09B,aAS3C97B,EAASsS,UAAUkV,WAAa,SAAS2V,GAEvC,GAAIhD,GAAWv3B,KAAKknB,IAAI1rB,KAAK+7B,SAAW/7B,KAAKmpB,KAAO,EAAK,EAAInpB,KAAK+7B,QAC9DlH,EAAc,GAAK5wB,OAAO83B,GAASlH,YAAY,EAGnD,IAAgBhuB,SAAbk4B,GAA2B/5B,MAAMf,OAAO86B,KAqCzC,GAAgC,IAA5BlK,EAAY7tB,QAAQ,MAA0C,IAA5B6tB,EAAY7tB,QAAQ,KAExD,IAAK,GAAInB,GAAIgvB,EAAY7uB,OAAS,EAAGH,EAAI,EAAGA,IAAK,CAC/C,GAAsB,KAAlBgvB,EAAYhvB,GAGX,CAAA,GAAsB,KAAlBgvB,EAAYhvB,IAA+B,KAAlBgvB,EAAYhvB,GAAW,CACvDgvB,EAAcA,EAAY9oB,MAAM,EAAGlG,EACnC,OAGA,MAPAgvB,EAAcA,EAAY9oB,MAAM,EAAGlG,QAzCY,CAErD,GAAIm5B,GAAM,GACNt2B,EAAQmsB,EAAY7tB,QAAQ,IAoBhC,IAnBY,IAAT0B,IAEDs2B,EAAMnK,EAAY9oB,MAAMrD,GAExBmsB,EAAcA,EAAY9oB,MAAM,EAAGrD,IAErCA,EAAQlE,KAAKJ,IAAIywB,EAAY7tB,QAAQ,KAAM6tB,EAAY7tB,QAAQ,MAClD,KAAV0B,GAEe,IAAbq2B,IACDlK,GAAe,KAGjBnsB,EAAQmsB,EAAY7uB,OAAS+4B,GAEV,IAAbA,IAENr2B,GAASq2B,EAAW,GAEnBr2B,EAAQmsB,EAAY7uB,OAErB,IAAI,GAAIi5B,GAAMv2B,EAAQmsB,EAAY7uB,OAAQi5B,EAAM,EAAGA,IACjDpK,GAAe,QAKjBA,GAAcA,EAAY9oB,MAAM,EAAGrD,EAGrCmsB,IAAemK,EAoBjB,MAAOnK,IAQTjzB,EAASsS,UAAUgrB,QAAU,WAC3B,MAAQl/B,MAAK+7B,SAAW/7B,KAAKuE,MAAQvE,KAAK69B,WAAW79B,KAAKy9B,aAAe,GAG3E59B,EAAOD,QAAUgC,GAKb,SAAS/B,EAAQD,EAASM,GAgB9B,QAAS2B,GAAM0zB,EAAMrmB,GACnB,GAAIiwB,GAAMt7B,IAASu7B,MAAM,GAAGC,QAAQ,GAAGC,QAAQ,GAAGC,aAAa,EAC/Dv/B,MAAKqQ,MAAQ8uB,EAAI7E,QAAQtmB,IAAI,GAAI,QAAQ3M,UACzCrH,KAAKsQ,IAAM6uB,EAAI7E,QAAQtmB,IAAI,EAAG,QAAQ3M,UAEtCrH,KAAKu1B,KAAOA,EACZv1B,KAAKw/B,gBAAkB,EACvBx/B,KAAKy/B,YAAc,EACnBz/B,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,EAGlBr7B,KAAKi1B,gBACH5kB,MAAO,KACPC,IAAK,KACL4sB,UAAW,aACXwC,UAAU,EACVC,UAAU,EACVx7B,IAAK,KACLC,IAAK,KACLw7B,QAAS,GACTC,QAAS,UAEX7/B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAEpCj1B,KAAKqG,OACHy5B,UAEF9/B,KAAK+/B,aAAe,KAGpB//B,KAAKu1B,KAAKE,QAAQnhB,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACzDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OACpDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,OAGvDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,OAAQtU,KAAKmgC,QAAQzK,KAAK11B,OAG/CA,KAAKu1B,KAAKE,QAAQnhB,GAAG,aAAmBtU,KAAKogC,cAAc1K,KAAK11B,OAChEA,KAAKu1B,KAAKE,QAAQnhB,GAAG,iBAAmBtU,KAAKogC,cAAc1K,KAAK11B,OAGhEA,KAAKu1B,KAAKE,QAAQnhB,GAAG,QAAStU,KAAKqgC,SAAS3K,KAAK11B,OACjDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,QAAStU,KAAKsgC,SAAS5K,KAAK11B,OAEjDA,KAAKiU,WAAW/E,GAsClB,QAASqxB,GAAmBrD,GAC1B,GAAiB,cAAbA,GAA0C,YAAbA,EAC/B,KAAM,IAAIx2B,WAAU,sBAAwBw2B,EAAY,yCAif5D,QAASsD,GAAYV,EAAO32B,GAC1B,OACEqJ,EAAGstB,EAAMvH,MAAQ53B,EAAK+G,gBAAgByB,GACtCsJ,EAAGqtB,EAAMrH,MAAQ93B,EAAKqH,eAAemB,IAxlBzC,GAAIxI,GAAOT,EAAoB,GAC3BugC,EAAavgC,EAAoB,IACjC2D,EAAS3D,EAAoB,IAC7BqC,EAAYrC,EAAoB,IAChCyB,EAAWzB,EAAoB,GA2DnC2B,GAAMqS,UAAY,GAAI3R,GAkBtBV,EAAMqS,UAAUD,WAAa,SAAU/E,GACrC,GAAIA,EAAS,CAEX,GAAIP,IAAU,YAAa,MAAO,MAAO,UAAW,UAAW,WAAY,WAAY,WAAY,cACnGhO,GAAKyF,gBAAgBuI,EAAQ3O,KAAKkP,QAASA,IAEvC,SAAWA,IAAW,OAASA,KAEjClP,KAAKm0B,SAASjlB,EAAQmB,MAAOnB,EAAQoB,OA4B3CzO,EAAMqS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAKonB,EAASgJ,GACnDA,KAAW,IACbA,GAAS,EAEX,IAAI5M,GAAkBjtB,QAATwJ,EAAqB1P,EAAKuG,QAAQmJ,EAAO,QAAQhJ,UAAY,KACtE0sB,EAAgBltB,QAAPyJ,EAAqB3P,EAAKuG,QAAQoJ,EAAK,QAAQjJ,UAAc,IAG1E,IAFArH,KAAK2gC,mBAEDjJ,EAAS,CACX,GAAIxiB,GAAKlV,KACL4gC,EAAY5gC,KAAKqQ,MACjBwwB,EAAU7gC,KAAKsQ,IACfC,EAA8B,gBAAZmnB,GAAuBA,EAAU,IACnDoJ,GAAW,GAAIl8B,OAAOyC,UACtB05B,GAAa,EAEb1X,EAAO,WACT,IAAKnU,EAAG7O,MAAMy5B,MAAMkB,SAAU,CAC5B,GAAI7B,IAAM,GAAIv6B,OAAOyC,UACjBuxB,EAAOuG,EAAM2B,EACbG,EAAOrI,EAAOroB,EACdhE,EAAK00B,GAAmB,OAAXnN,EAAmBA,EAASnzB,EAAKyP,cAAcwoB,EAAMgI,EAAW9M,EAAQvjB,GACrFjG,EAAK22B,GAAiB,OAATlN,EAAmBA,EAASpzB,EAAKyP,cAAcwoB,EAAMiI,EAAS9M,EAAMxjB,EAErF2wB,GAAUhsB,EAAGomB,YAAY/uB,EAAGjC,GAC5B3I,EAASo4B,kBAAkB7kB,EAAGqgB,KAAMrgB,EAAGhG,QAAQymB,aAC/CoL,EAAaA,GAAcG,EACvBA,GACFhsB,EAAGqgB,KAAKE,QAAQhH,KAAK,eAAgBpe,MAAO,GAAIzL,MAAKsQ,EAAG7E,OAAQC,IAAK,GAAI1L,MAAKsQ,EAAG5E,KAAMowB,OAAOA,IAG5FO,EACEF,GACF7rB,EAAGqgB,KAAKE,QAAQhH,KAAK,gBAAiBpe,MAAO,GAAIzL,MAAKsQ,EAAG7E,OAAQC,IAAK,GAAI1L,MAAKsQ,EAAG5E,KAAMowB,OAAOA,IAMjGxrB,EAAG6qB,aAAexlB,WAAW8O,EAAM,KAKzC,OAAOA,KAGP,GAAI6X,GAAUlhC,KAAKs7B,YAAYxH,EAAQC,EAEvC,IADApyB,EAASo4B,kBAAkB/5B,KAAKu1B,KAAMv1B,KAAKkP,QAAQymB,aAC/CuL,EAAS,CACX,GAAIrsB,IAAUxE,MAAO,GAAIzL,MAAK5E,KAAKqQ,OAAQC,IAAK,GAAI1L,MAAK5E,KAAKsQ,KAAMowB,OAAOA,EAC3E1gC,MAAKu1B,KAAKE,QAAQhH,KAAK,cAAe5Z,GACtC7U,KAAKu1B,KAAKE,QAAQhH,KAAK,eAAgB5Z,KAS7ChT,EAAMqS,UAAUysB,iBAAmB,WAC7B3gC,KAAK+/B,eACPzlB,aAAata,KAAK+/B,cAClB//B,KAAK+/B,aAAe,OAaxBl+B,EAAMqS,UAAUonB,YAAc,SAASjrB,EAAOC,GAC5C,GAII4c,GAJAiU,EAAqB,MAAT9wB,EAAiB1P,EAAKuG,QAAQmJ,EAAO,QAAQhJ,UAAYrH,KAAKqQ,MAC1E+wB,EAAmB,MAAP9wB,EAAiB3P,EAAKuG,QAAQoJ,EAAK,QAAQjJ,UAAcrH,KAAKsQ,IAC1ElM,EAA2B,MAApBpE,KAAKkP,QAAQ9K,IAAezD,EAAKuG,QAAQlH,KAAKkP,QAAQ9K,IAAK,QAAQiD,UAAY,KACtFlD,EAA2B,MAApBnE,KAAKkP,QAAQ/K,IAAexD,EAAKuG,QAAQlH,KAAKkP,QAAQ/K,IAAK,QAAQkD,UAAY,IAI1F,IAAIrC,MAAMm8B,IAA0B,OAAbA,EACrB,KAAM,IAAIv9B,OAAM,kBAAoByM,EAAQ,IAE9C,IAAIrL,MAAMo8B,IAAsB,OAAXA,EACnB,KAAM,IAAIx9B,OAAM,gBAAkB0M,EAAM,IAyC1C,IArCa6wB,EAATC,IACFA,EAASD,GAIC,OAARh9B,GACaA,EAAXg9B,IACFjU,EAAQ/oB,EAAMg9B,EACdA,GAAYjU,EACZkU,GAAUlU,EAGC,MAAP9oB,GACEg9B,EAASh9B,IACXg9B,EAASh9B,IAOL,OAARA,GACEg9B,EAASh9B,IACX8oB,EAAQkU,EAASh9B,EACjB+8B,GAAYjU,EACZkU,GAAUlU,EAGC,MAAP/oB,GACaA,EAAXg9B,IACFA,EAAWh9B,IAOU,OAAzBnE,KAAKkP,QAAQ0wB,QAAkB,CACjC,GAAIA,GAAUvZ,WAAWrmB,KAAKkP,QAAQ0wB,QACxB,GAAVA,IACFA,EAAU,GAEcA,EAArBwB,EAASD,IACPnhC,KAAKsQ,IAAMtQ,KAAKqQ,QAAWuvB,GAAWuB,EAAWnhC,KAAKqQ,OAAS+wB,EAASphC,KAAKsQ,KAEhF6wB,EAAWnhC,KAAKqQ,MAChB+wB,EAASphC,KAAKsQ,MAId4c,EAAQ0S,GAAWwB,EAASD,GAC5BA,GAAYjU,EAAO,EACnBkU,GAAUlU,EAAO,IAMvB,GAA6B,OAAzBltB,KAAKkP,QAAQ2wB,QAAkB,CACjC,GAAIA,GAAUxZ,WAAWrmB,KAAKkP,QAAQ2wB,QACxB,GAAVA,IACFA,EAAU,GAGPuB,EAASD,EAAYtB,IACnB7/B,KAAKsQ,IAAMtQ,KAAKqQ,QAAWwvB,GAAWsB,EAAWnhC,KAAKqQ,OAAS+wB,EAASphC,KAAKsQ,KAEhF6wB,EAAWnhC,KAAKqQ,MAChB+wB,EAASphC,KAAKsQ,MAId4c,EAASkU,EAASD,EAAYtB,EAC9BsB,GAAYjU,EAAO,EACnBkU,GAAUlU,EAAO,IAKvB,GAAIgU,GAAWlhC,KAAKqQ,OAAS8wB,GAAYnhC,KAAKsQ,KAAO8wB,CAUrD,OAPOD,IAAYnhC,KAAKqQ,OAAS8wB,GAAcnhC,KAAKsQ,KAAS8wB,GAAYphC,KAAKqQ,OAAS+wB,GAAYphC,KAAKsQ,KACjGtQ,KAAKqQ,OAAS8wB,GAAYnhC,KAAKqQ,OAAS+wB,GAAcphC,KAAKsQ,KAAO6wB,GAAcnhC,KAAKsQ,KAAO8wB,GACjGphC,KAAKu1B,KAAKE,QAAQhH,KAAK,oBAGzBzuB,KAAKqQ,MAAQ8wB,EACbnhC,KAAKsQ,IAAM8wB,EACJF,GAOTr/B,EAAMqS,UAAUmtB,SAAW,WACzB,OACEhxB,MAAOrQ,KAAKqQ,MACZC,IAAKtQ,KAAKsQ,MAUdzO,EAAMqS,UAAUkoB,WAAa,SAAU9oB,EAAOguB,GAC5C,MAAOz/B,GAAMu6B,WAAWp8B,KAAKqQ,MAAOrQ,KAAKsQ,IAAKgD,EAAOguB,IAWvDz/B,EAAMu6B,WAAa,SAAU/rB,EAAOC,EAAKgD,EAAOguB,GAI9C,MAHoBz6B,UAAhBy6B,IACFA,EAAc,GAEH,GAAThuB,GAAehD,EAAMD,GAAS,GAE9Bqa,OAAQra,EACR9L,MAAO+O,GAAShD,EAAMD,EAAQixB,KAK9B5W,OAAQ,EACRnmB,MAAO,IAUb1C,EAAMqS,UAAU8rB,aAAe,WAC7BhgC,KAAKw/B,gBAAkB,EACvBx/B,KAAKuhC,cAAgB,EAEhBvhC,KAAKkP,QAAQwwB,UAIb1/B,KAAKqG,MAAMy5B,MAAM0B,gBAEtBxhC,KAAKqG,MAAMy5B,MAAMzvB,MAAQrQ,KAAKqQ,MAC9BrQ,KAAKqG,MAAMy5B,MAAMxvB,IAAMtQ,KAAKsQ,IAC5BtQ,KAAKqG,MAAMy5B,MAAMkB,UAAW,EAExBhhC,KAAKu1B,KAAK5E,IAAIjxB,OAChBM,KAAKu1B,KAAK5E,IAAIjxB,KAAKgO,MAAMmgB,OAAS,UAStChsB,EAAMqS,UAAU+rB,QAAU,SAAUp2B,GAElC,GAAK7J,KAAKkP,QAAQwwB,UAGb1/B,KAAKqG,MAAMy5B,MAAM0B,cAAtB,CAEA,GAAItE,GAAYl9B,KAAKkP,QAAQguB,SAC7BqD,GAAkBrD,EAElB,IAAI5N,GAAsB,cAAb4N,EAA6BrzB,EAAM2uB,QAAQiJ,OAAS53B,EAAM2uB,QAAQkJ,MAC/EpS,IAAStvB,KAAKw/B,eACd,IAAIpM,GAAYpzB,KAAKqG,MAAMy5B,MAAMxvB,IAAMtQ,KAAKqG,MAAMy5B,MAAMzvB,MAGpDE,EAAW5O,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,IACzF8iB,IAAY7iB,CAEZ,IAAI+C,GAAsB,cAAb4pB,EAA6Bl9B,KAAKu1B,KAAKC,SAASzI,OAAOzZ,MAAQtT,KAAKu1B,KAAKC,SAASzI,OAAOxZ,OAClGouB,GAAarS,EAAQhc,EAAQ8f,EAC7B+N,EAAWnhC,KAAKqG,MAAMy5B,MAAMzvB,MAAQsxB,EACpCP,EAASphC,KAAKqG,MAAMy5B,MAAMxvB,IAAMqxB,EAIhCC,EAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAUnhC,KAAKuhC,cAAcjS,GAAO,GACnGuS,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,EAAQphC,KAAKuhC,cAAcjS,GAAO,EACnG,IAAIsS,GAAaT,GAAYU,GAAWT,EAKtC,MAJAphC,MAAKw/B,iBAAmBlQ,EACxBtvB,KAAKqG,MAAMy5B,MAAMzvB,MAAQuxB,EACzB5hC,KAAKqG,MAAMy5B,MAAMxvB,IAAMuxB,MACvB7hC,MAAKigC,QAAQp2B,EAIf7J,MAAKuhC,cAAgBjS,EACrBtvB,KAAKs7B,YAAY6F,EAAUC,GAG3BphC,KAAKu1B,KAAKE,QAAQhH,KAAK,eACrBpe,MAAO,GAAIzL,MAAK5E,KAAKqQ,OACrBC,IAAO,GAAI1L,MAAK5E,KAAKsQ,KACrBowB,QAAQ,MASZ7+B,EAAMqS,UAAUgsB,WAAa,WAEtBlgC,KAAKkP,QAAQwwB,UAIb1/B,KAAKqG,MAAMy5B,MAAM0B,gBAEtBxhC,KAAKqG,MAAMy5B,MAAMkB,UAAW,EACxBhhC,KAAKu1B,KAAK5E,IAAIjxB,OAChBM,KAAKu1B,KAAK5E,IAAIjxB,KAAKgO,MAAMmgB,OAAS,QAIpC7tB,KAAKu1B,KAAKE,QAAQhH,KAAK,gBACrBpe,MAAO,GAAIzL,MAAK5E,KAAKqQ,OACrBC,IAAO,GAAI1L,MAAK5E,KAAKsQ,KACrBowB,QAAQ,MAUZ7+B,EAAMqS,UAAUksB,cAAgB,SAASv2B,GAEvC,GAAM7J,KAAKkP,QAAQywB,UAAY3/B,KAAKkP,QAAQwwB,SAA5C,CAGA,GAAIpQ,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAa,IAClB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAS,GAMtBF,EAAO,CAKT,GAAI/qB,EAEFA,GADU,EAAR+qB,EACM,EAAKA,EAAQ,EAGb,GAAK,EAAKA,EAAQ,EAI5B,IAAIkJ,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAUvB,EAAWhI,EAAQzL,OAAQ/sB,KAAKu1B,KAAK5E,IAAI5D,QACnDiV,EAAchiC,KAAKiiC,eAAeF,EAEtC/hC,MAAKkiC,KAAK39B,EAAOy9B,EAAa1S,GAKhCzlB,EAAMD,mBAOR/H,EAAMqS,UAAUmsB,SAAW,WACzBrgC,KAAKqG,MAAMy5B,MAAMzvB,MAAQrQ,KAAKqQ,MAC9BrQ,KAAKqG,MAAMy5B,MAAMxvB,IAAMtQ,KAAKsQ,IAC5BtQ,KAAKqG,MAAMy5B,MAAM0B,eAAgB,EACjCxhC,KAAKqG,MAAMy5B,MAAM/S,OAAS,KAC1B/sB,KAAKy/B,YAAc,EACnBz/B,KAAKw/B,gBAAkB,GAOzB39B,EAAMqS,UAAUisB,QAAU,WACxBngC,KAAKqG,MAAMy5B,MAAM0B,eAAgB,GAQnC3/B,EAAMqS,UAAUosB,SAAW,SAAUz2B,GAEnC,GAAM7J,KAAKkP,QAAQywB,UAAY3/B,KAAKkP,QAAQwwB,WAE5C1/B,KAAKqG,MAAMy5B,MAAM0B,eAAgB,EAE7B33B,EAAM2uB,QAAQ2J,QAAQn8B,OAAS,GAAG,CAC/BhG,KAAKqG,MAAMy5B,MAAM/S,SACpB/sB,KAAKqG,MAAMy5B,MAAM/S,OAASyT,EAAW32B,EAAM2uB,QAAQzL,OAAQ/sB,KAAKu1B,KAAK5E,IAAI5D,QAG3E,IAAIxoB,GAAQ,GAAKsF,EAAM2uB,QAAQj0B,MAAQvE,KAAKy/B,aACxC2C,EAAapiC,KAAKiiC,eAAejiC,KAAKqG,MAAMy5B,MAAM/S,QAElDwP,EAAiB56B,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,KAC3F+xB,EAAuB1gC,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAMoiC,GACrFE,EAAsB/F,EAAiB8F,EAGvClB,EAAYiB,EAAaC,GAAyBriC,KAAKqG,MAAMy5B,MAAMzvB,OAAS+xB,EAAaC,IAAyB99B,EAClH68B,EAAUgB,EAAaE,GAAwBtiC,KAAKqG,MAAMy5B,MAAMxvB,KAAO8xB,EAAaE,IAAwB/9B,CAGhHvE,MAAKo7B,aAAe,EAAI72B,EAAQ,GAAI,GAAQ,EAC5CvE,KAAKq7B,WAAa92B,EAAQ,EAAI,GAAI,GAAQ,CAE1C,IAAIq9B,GAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAU,EAAI58B,GAAO,GACpFs9B,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,EAAQ78B,EAAQ,GAAG,IAChFq9B,GAAaT,GAAYU,GAAWT,KACtCphC,KAAKqG,MAAMy5B,MAAMzvB,MAAQuxB,EACzB5hC,KAAKqG,MAAMy5B,MAAMxvB,IAAMuxB,EACvB7hC,KAAKy/B,YAAc,EAAI51B,EAAM2uB,QAAQj0B,MACrC48B,EAAWS,EACXR,EAASS,GAGX7hC,KAAKm0B,SAASgN,EAAUC,GAAQ,GAAO,GAEvCphC,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,IAUtBx5B,EAAMqS,UAAU+tB,eAAiB,SAAUF,GACzC,GAAI3F,GACAc,EAAYl9B,KAAKkP,QAAQguB,SAI7B,IAFAqD,EAAkBrD,GAED,cAAbA,EACF,MAAOl9B,MAAKu1B,KAAK50B,KAAKu1B,OAAO6L,EAAQvvB,GAAGnL,SAGxC,IAAIkM,GAASvT,KAAKu1B,KAAKC,SAASzI,OAAOxZ,MAEvC,OADA6oB,GAAap8B,KAAKo8B,WAAW7oB,GACtBwuB,EAAQtvB,EAAI2pB,EAAW73B,MAAQ63B,EAAW1R,QA4BrD7oB,EAAMqS,UAAUguB,KAAO,SAAS39B,EAAOwoB,EAAQuC,GAE/B,MAAVvC,IACFA,GAAU/sB,KAAKqQ,MAAQrQ,KAAKsQ,KAAO,EAGrC,IAAIisB,GAAiB56B,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,KAC3F+xB,EAAuB1gC,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAM+sB,GACrFuV,EAAsB/F,EAAiB8F,EAGvClB,EAAYpU,EAAOsV,GAAyBriC,KAAKqQ,OAAS0c,EAAOsV,IAAyB99B,EAC1F68B,EAAYrU,EAAOuV,GAAwBtiC,KAAKsQ,KAAOyc,EAAOuV,IAAwB/9B,CAG1FvE,MAAKo7B,aAAe9L,EAAQ,GAAI,GAAQ,EACxCtvB,KAAKq7B,YAAc/L,EAAS,GAAI,GAAQ,CACxC,IAAIsS,GAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAU7R,GAAO,GAChFuS,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,GAAS9R,GAAO,IAC7EsS,GAAaT,GAAYU,GAAWT,KACtCD,EAAWS,EACXR,EAASS,GAGX7hC,KAAKm0B,SAASgN,EAAUC,GAAQ,GAAO,GAEvCphC,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,GAWpBx5B,EAAMqS,UAAUquB,KAAO,SAASjT,GAE9B,GAAIpC,GAAQltB,KAAKsQ,IAAMtQ,KAAKqQ,MAGxB8wB,EAAWnhC,KAAKqQ,MAAQ6c,EAAOoC,EAC/B8R,EAASphC,KAAKsQ,IAAM4c,EAAOoC,CAI/BtvB,MAAKqQ,MAAQ8wB,EACbnhC,KAAKsQ,IAAM8wB,GAObv/B,EAAMqS,UAAU2U,OAAS,SAASA,GAChC,GAAIkE,IAAU/sB,KAAKqQ,MAAQrQ,KAAKsQ,KAAO,EAEnC4c,EAAOH,EAASlE,EAGhBsY,EAAWnhC,KAAKqQ,MAAQ6c,EACxBkU,EAASphC,KAAKsQ,IAAM4c,CAExBltB,MAAKm0B,SAASgN,EAAUC,IAG1BvhC,EAAOD,QAAUiC,GAKb,SAAShC,EAAQD,GAGrB,GAAI4iC,GAAU,IAMd5iC,GAAQ6iC,aAAe,SAASxgC,GAC9BA,EAAMgV,KAAK,SAAUrR,EAAGa,GACtB,MAAOb,GAAE6N,KAAKpD,MAAQ5J,EAAEgN,KAAKpD;IASjCzQ,EAAQ8iC,WAAa,SAASzgC,GAC5BA,EAAMgV,KAAK,SAAUrR,EAAGa,GACtB,GAAIk8B,GAAS,OAAS/8B,GAAE6N,KAAQ7N,EAAE6N,KAAKnD,IAAM1K,EAAE6N,KAAKpD,MAChDuyB,EAAS,OAASn8B,GAAEgN,KAAQhN,EAAEgN,KAAKnD,IAAM7J,EAAEgN,KAAKpD,KAEpD,OAAOsyB,GAAQC,KAenBhjC,EAAQkC,MAAQ,SAASG,EAAO0Y,EAAQkoB,GACtC,GAAIh9B,GAAGi9B,CAEP,IAAID,EAEF,IAAKh9B,EAAI,EAAGi9B,EAAO7gC,EAAM+D,OAAY88B,EAAJj9B,EAAUA,IACzC5D,EAAM4D,GAAGoC,IAAM,IAKnB,KAAKpC,EAAI,EAAGi9B,EAAO7gC,EAAM+D,OAAY88B,EAAJj9B,EAAUA,IAAK,CAC9C,GAAIiK,GAAO7N,EAAM4D,EACjB,IAAIiK,EAAKhO,OAAsB,OAAbgO,EAAK7H,IAAc,CAEnC6H,EAAK7H,IAAM0S,EAAOooB,IAElB,GAAG,CAID,IAAK,GADDC,GAAgB,KACXvW,EAAI,EAAGwW,EAAKhhC,EAAM+D,OAAYi9B,EAAJxW,EAAQA,IAAK,CAC9C,GAAIxmB,GAAQhE,EAAMwqB,EAClB,IAAkB,OAAdxmB,EAAMgC,KAAgBhC,IAAU6J,GAAQ7J,EAAMnE,OAASlC,EAAQsjC,UAAUpzB,EAAM7J,EAAO0U,EAAO7K,MAAO,CACtGkzB,EAAgB/8B,CAChB,QAIiB,MAAjB+8B,IAEFlzB,EAAK7H,IAAM+6B,EAAc/6B,IAAM+6B,EAAczvB,OAASoH,EAAO7K,KAAK2W,gBAE7Duc,MAafpjC,EAAQujC,QAAU,SAASlhC,EAAO0Y,EAAQyoB,GACxC,GAAIv9B,GAAGi9B,EAAMO,CAGb,KAAKx9B,EAAI,EAAGi9B,EAAO7gC,EAAM+D,OAAY88B,EAAJj9B,EAAUA,IACzC,GAA+BgB,SAA3B5E,EAAM4D,GAAG4N,KAAK6vB,SAAwB,CACxCD,EAAS1oB,EAAOooB,IAChB,KAAK,GAAIO,KAAYF,GACfA,EAAUj9B,eAAem9B,IACQ,GAA/BF,EAAUE,GAAU7Z,SAAmB2Z,EAAUE,GAAU56B,MAAQ06B,EAAUnhC,EAAM4D,GAAG4N,KAAK6vB,UAAU56B,QACvG26B,GAAUD,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,SAIzDxkB,GAAM4D,GAAGoC,IAAMo7B,MAGfphC,GAAM4D,GAAGoC,IAAM0S,EAAOooB,MAe5BnjC,EAAQsjC,UAAY,SAASt9B,EAAGa,EAAGkU,GACjC,MAAS/U,GAAEiC,KAAO8S,EAAO6L,WAAagc,EAAkB/7B,EAAEoB,KAAOpB,EAAE6M,OAC9D1N,EAAEiC,KAAOjC,EAAE0N,MAAQqH,EAAO6L,WAAagc,EAAW/7B,EAAEoB,MACpDjC,EAAEqC,IAAM0S,EAAO8L,SAAW+b,EAAyB/7B,EAAEwB,IAAMxB,EAAE8M,QAC7D3N,EAAEqC,IAAMrC,EAAE2N,OAASoH,EAAO8L,SAAW+b,EAAa/7B,EAAEwB,MAMvD,SAASpI,EAAQD,EAASM,GAgC9B,QAAS6B,GAASsO,EAAOC,EAAK8sB,EAAazH,GAEzC31B,KAAK+7B,QAAU,GAAIn3B,MACnB5E,KAAK8zB,OAAS,GAAIlvB,MAClB5E,KAAK+zB,KAAO,GAAInvB,MAEhB5E,KAAKw9B,WAAa,EAClBx9B,KAAKuE,MAAQ,MACbvE,KAAKmpB,KAAO,EAGZnpB,KAAKm0B,SAAS9jB,EAAOC,EAAK8sB,GAG1Bp9B,KAAKm8B,aAAc,EACnBn8B,KAAKk8B,eAAgB,EACrBl8B,KAAKi8B,cAAe,EACpBj8B,KAAK21B,YAAcA,EACC9uB,SAAhB8uB,IACF31B,KAAK21B,gBAGP31B,KAAKujC,OAASxhC,EAASyhC,OApDzB,GAAI3/B,GAAS3D,EAAoB,IAC7ByB,EAAWzB,EAAoB,IAC/BS,EAAOT,EAAoB,EAsD/B6B,GAASyhC,QACPC,aACEC,YAAY,MACZC,OAAY,IACZC,OAAY,QACZC,KAAY,QACZC,QAAY,QACZvJ,IAAY,IACZK,MAAY,MACZH,KAAY,QAEdsJ,aACEL,YAAY,WACZC,OAAY,eACZC,OAAY,aACZC,KAAY,aACZC,QAAY,YACZvJ,IAAY,YACZK,MAAY,OACZH,KAAY,KAUhB14B,EAASmS,UAAU8vB,UAAY,SAAUT,GACvC,GAAIU,GAAgBtjC,EAAKmG,cAAe/E,EAASyhC,OACjDxjC,MAAKujC,OAAS5iC,EAAKmG,WAAWm9B,EAAeV,IAa/CxhC,EAASmS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK8sB,GACjD,KAAM/sB,YAAiBzL,OAAW0L,YAAe1L,OAC/C,KAAO,+CAGT5E,MAAK8zB,OAAmBjtB,QAATwJ,EAAsB,GAAIzL,MAAKyL,EAAMhJ,WAAa,GAAIzC,MACrE5E,KAAK+zB,KAAeltB,QAAPyJ,EAAoB,GAAI1L,MAAK0L,EAAIjJ,WAAa,GAAIzC,MAE3D5E,KAAKw9B,WACPx9B,KAAK+9B,eAAeX,IAOxBr7B,EAASmS,UAAUgwB,MAAQ,WACzBlkC,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK8zB,OAAOzsB,WACpCrH,KAAK0+B,gBAOP38B,EAASmS,UAAUwqB,aAAe,WAIhC,OAAQ1+B,KAAKuE,OACX,IAAK,OACHvE,KAAK+7B,QAAQoI,YAAYnkC,KAAKmpB,KAAO3kB,KAAKgB,MAAMxF,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,OAClFnpB,KAAK+7B,QAAQsI,SAAS,EACxB,KAAK,QAAgBrkC,KAAK+7B,QAAQuI,QAAQ,EAC1C,KAAK,MACL,IAAK,UAAgBtkC,KAAK+7B,QAAQwI,SAAS,EAC3C,KAAK,OAAgBvkC,KAAK+7B,QAAQyI,WAAW,EAC7C,KAAK,SAAgBxkC,KAAK+7B,QAAQ0I,WAAW,EAC7C,KAAK,SAAgBzkC,KAAK+7B,QAAQ2I,gBAAgB,GAIpD,GAAiB,GAAb1kC,KAAKmpB,KAEP,OAAQnpB,KAAKuE,OACX,IAAK,cAAgBvE,KAAK+7B,QAAQ2I,gBAAgB1kC,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAKmpB,KAAQ,MACjI,KAAK,SAAgBnpB,KAAK+7B,QAAQ0I,WAAWzkC,KAAK+7B,QAAQ6I,aAAe5kC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,KAAO,MACjH,KAAK,SAAgBnpB,KAAK+7B,QAAQyI,WAAWxkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,KAAO,MACjH,KAAK,OAAgBnpB,KAAK+7B,QAAQwI,SAASvkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,KAAO,MAC3G,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAStkC,KAAK+7B,QAAQgJ,UAAU,GAAM/kC,KAAK+7B,QAAQgJ,UAAU,GAAK/kC,KAAKmpB,KAAO,EAAI,MACpH,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAQ,MAC5G,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,QAUnHpnB,EAASmS,UAAU2qB,QAAU,WAC3B,MAAQ7+B,MAAK+7B,QAAQ10B,WAAarH,KAAK+zB,KAAK1sB,WAM9CtF,EAASmS,UAAUmV,KAAO,WACxB,GAAImJ,GAAOxyB,KAAK+7B,QAAQ10B,SAIxB,IAAIrH,KAAK+7B,QAAQiJ,WAAa,EAC5B,OAAQhlC,KAAKuE,OACX,IAAK,cAEHvE,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAYrH,KAAKmpB,KAAO,MAC/D,KAAK,SAAgBnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,MACzF,KAAK,SAAgBnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,GAAK,MAC9F,KAAK,OACHnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,GAAK,GAEzE,IAAI7c,GAAItM,KAAK+7B,QAAQ+I,UACrB9kC,MAAK+7B,QAAQwI,SAASj4B,EAAKA,EAAItM,KAAKmpB,KACpC,MACF,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAQtkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAO,MAC/E,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAO,MACjF,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,UAKlF,QAAQnpB,KAAKuE,OACX,IAAK,cAAgBvE,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAYrH,KAAKmpB,KAAO,MAClF,KAAK,SAAgBnpB,KAAK+7B,QAAQ0I,WAAWzkC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,KAAO,MACrF,KAAK,SAAgBnpB,KAAK+7B,QAAQyI,WAAWxkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,KAAO,MACrF,KAAK,OAAgBnpB,KAAK+7B,QAAQwI,SAASvkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,KAAO,MACjF,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAQtkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAO,MAC/E,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAO,MACjF,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,MAKpF,GAAiB,GAAbnpB,KAAKmpB,KAEP,OAAQnpB,KAAKuE,OACX,IAAK,cAAmBvE,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQ2I,gBAAgB,EAAK,MACtG,KAAK,SAAmB1kC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQ0I,WAAW,EAAK,MAC5F,KAAK,SAAmBzkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQyI,WAAW,EAAK,MAC5F,KAAK,OAAmBxkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQwI,SAAS,EAAK,MACxF,KAAK,UACL,IAAK,MAAmBvkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAK,GAAGnpB,KAAK+7B,QAAQuI,QAAQ,EAAI,MACvF,KAAK,QAAmBtkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQsI,SAAS,EAAK,MACxF,KAAK,QAMLrkC,KAAK+7B,QAAQ10B,WAAamrB,IAC5BxyB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+zB,KAAK1sB,YAGpC1F,EAAS+5B,oBAAoB17B,KAAMwyB,IAQrCzwB,EAASmS,UAAUkV,WAAa,WAC9B,MAAOppB,MAAK+7B,SAedh6B,EAASmS,UAAU+wB,SAAW,SAASpwB,GACjCA,GAAiC,gBAAhBA,GAAOtQ,QAC1BvE,KAAKuE,MAAQsQ,EAAOtQ,MACpBvE,KAAKmpB,KAAOtU,EAAOsU,KAAO,EAAItU,EAAOsU,KAAO,EAC5CnpB,KAAKw9B,WAAY,IAQrBz7B,EAASmS,UAAUgxB,aAAe,SAAUC,GAC1CnlC,KAAKw9B,UAAY2H,GAQnBpjC,EAASmS,UAAU6pB,eAAiB,SAASX,GAC3C,GAAmBv2B,QAAfu2B,EAAJ,CAMA,GAAIgI,GAAiB,QACjBC,EAAiB,OACjBC,EAAiB,MACjBC,EAAiB,KACjBC,EAAiB,IACjBC,EAAiB,IACjBC,EAAiB,CAGR,KAATN,EAAgBhI,IAAqBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,IAATic,EAAehI,IAAsBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,IAATic,EAAehI,IAAsBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,GAATic,EAAchI,IAAuBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,IACpE,GAATic,EAAchI,IAAuBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,IACpE,EAATic,EAAahI,IAAwBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAC7Eic,EAAWhI,IAA0Bp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GACnE,EAAVkc,EAAcjI,IAAuBp9B,KAAKuE,MAAQ,QAAevE,KAAKmpB,KAAO,GAC7Ekc,EAAYjI,IAAyBp9B,KAAKuE,MAAQ,QAAevE,KAAKmpB,KAAO,GACrE,EAARmc,EAAYlI,IAAyBp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GACrE,EAARmc,EAAYlI,IAAyBp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GAC7Emc,EAAUlI,IAA2Bp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GAC7Emc,EAAQ,EAAIlI,IAAyBp9B,KAAKuE,MAAQ,UAAevE,KAAKmpB,KAAO,GACpE,EAAToc,EAAanI,IAAwBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAC7Eoc,EAAWnI,IAA0Bp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAClE,GAAXqc,EAAgBpI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,GAAXqc,EAAgBpI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,EAAXqc,EAAepI,IAAsBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7Eqc,EAAapI,IAAwBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAClE,GAAXsc,EAAgBrI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,GAAXsc,EAAgBrI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,EAAXsc,EAAerI,IAAsBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7Esc,EAAarI,IAAwBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7D,IAAhBuc,EAAsBtI,IAAep9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAC7D,IAAhBuc,EAAsBtI,IAAep9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAC7D,GAAhBuc,EAAqBtI,IAAgBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,IAC7D,GAAhBuc,EAAqBtI,IAAgBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,IAC7D,EAAhBuc,EAAoBtI,IAAiBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,GAC7Euc,EAAkBtI,IAAmBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAanFpnB,EAAS42B,KAAO,SAASgC,EAAMp2B,EAAO4kB,GACpC,GAAImR,GAAQ,GAAI11B,MAAK+1B,EAAKtzB,UAE1B,IAAa,QAAT9C,EAAiB,CACnB,GAAIk2B,GAAOH,EAAM8J,cAAgB5/B,KAAK+pB,MAAM+L,EAAM0K,WAAa,GAC/D1K,GAAM6J,YAAY3/B,KAAK+pB,MAAMkM,EAAOtR,GAAQA,GAC5CmR,EAAM+J,SAAS,GACf/J,EAAMgK,QAAQ,GACdhK,EAAMiK,SAAS,GACfjK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,SAATngC,EACH+1B,EAAMyK,UAAY,IACpBzK,EAAMgK,QAAQ,GACdhK,EAAM+J,SAAS/J,EAAM0K,WAAa,IAIlC1K,EAAMgK,QAAQ,GAGhBhK,EAAMiK,SAAS,GACfjK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,OAATngC,EAAgB,CAEvB,OAAQ4kB,GACN,IAAK,GACL,IAAK,GACHmR,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAAW,MAC1D,SACExK,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,KAEjDxK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,WAATngC,EAAoB,CAE3B,OAAQ4kB,GACN,IAAK,GACL,IAAK,GACHmR,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAAW,MAC1D,SACExK,EAAMiK,SAA4C,EAAnC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAEjDxK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,QAATngC,EAAiB,CACxB,OAAQ4kB,GACN,IAAK,GACHmR,EAAMkK,WAAiD,GAAtChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,IAAW,MAC9D,SACEvK,EAAMkK,WAAiD,GAAtChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,KAErDvK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OACjB,IAAa,UAATngC,EAAmB,CAE5B,OAAQ4kB,GACN,IAAK,IACL,IAAK,IACHmR,EAAMkK,WAAgD,EAArChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,IACjDvK,EAAMmK,WAAW,EACjB,MACF,KAAK,GACHnK,EAAMmK,WAAiD,GAAtCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,IAAW,MAC9D,SACEtK,EAAMmK,WAAiD,GAAtCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,KAErDtK,EAAMoK,gBAAgB,OAEnB,IAAa,UAATngC,EAEP,OAAQ4kB,GACN,IAAK,IACL,IAAK,IACHmR,EAAMmK,WAAgD,EAArCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,IACjDtK,EAAMoK,gBAAgB,EACtB,MACF,KAAK,GACHpK,EAAMoK,gBAA6D,IAA7ClgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB,KAAe,MAC5E,SACErK,EAAMoK,gBAA4D,IAA5ClgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB,UAG5D,IAAa,eAATpgC,EAAwB,CAC/B,GAAIyvB,GAAQ7K,EAAO,EAAIA,EAAO,EAAI,CAClCmR,GAAMoK,gBAAgBlgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB3Q,GAASA,GAGtE,MAAOsG,IAQTv4B,EAASmS,UAAUgrB,QAAU,WAC3B,GAAyB,GAArBl/B,KAAKi8B,aAEP,OADAj8B,KAAKi8B,cAAe,EACZj8B,KAAKuE,OACX,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAGR,IAA0B,GAAtBvE,KAAKk8B,cAEZ,OADAl8B,KAAKk8B,eAAgB,EACbl8B,KAAKuE,OACX,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAGR,IAAwB,GAApBvE,KAAKm8B,YAEZ,OADAn8B,KAAKm8B,aAAc,EACXn8B,KAAKuE,OACX,IAAK,cACL,IAAK,SACL,IAAK,SACL,IAAK,OACH,OAAO,CACT,SACE,OAAO,EAIb,OAAQvE,KAAKuE,OACX,IAAK,cACH,MAA0C,IAAlCvE,KAAK+7B,QAAQ4I,iBACvB,KAAK,SACH,MAAqC,IAA7B3kC,KAAK+7B,QAAQ6I,YACvB,KAAK,SACH,MAAmC,IAA3B5kC,KAAK+7B,QAAQ+I,YAAkD,GAA7B9kC,KAAK+7B,QAAQ8I,YACzD,KAAK,OACH,MAAmC,IAA3B7kC,KAAK+7B,QAAQ+I,UACvB,KAAK,UACL,IAAK,MACH,MAAkC,IAA1B9kC,KAAK+7B,QAAQgJ,SACvB,KAAK,QACH,MAAmC,IAA3B/kC,KAAK+7B,QAAQiJ,UACvB,KAAK,OACH,OAAO,CACT,SACE,OAAO,IAWbjjC,EAASmS,UAAUyxB,cAAgB,SAAShL,GAC9B9zB,QAAR8zB,IACFA,EAAO36B,KAAK+7B,QAGd,IAAIwH,GAASvjC,KAAKujC,OAAOE,YAAYzjC,KAAKuE,MAC1C,OAAQg/B,IAAUA,EAAOv9B,OAAS,EAAKnC,EAAO82B,GAAM4I,OAAOA,GAAU,IASvExhC,EAASmS,UAAU0xB,cAAgB,SAASjL,GAC9B9zB,QAAR8zB,IACFA,EAAO36B,KAAK+7B,QAGd,IAAIwH,GAASvjC,KAAKujC,OAAOQ,YAAY/jC,KAAKuE,MAC1C,OAAQg/B,IAAUA,EAAOv9B,OAAS,EAAKnC,EAAO82B,GAAM4I,OAAOA,GAAU,IAGvExhC,EAASmS,UAAU2xB,aAAe,WAKhC,QAASC,GAAKxhC,GACZ,MAAQA,GAAQ6kB,EAAO,GAAK,EAAK,QAAU,OAG7C,QAAS4c,GAAMpL,GACb,MAAIA,GAAKqL,OAAO,GAAIphC,MAAQ,OACnB,SAEL+1B,EAAKqL,OAAOniC,IAASmQ,IAAI,EAAG,OAAQ,OAC/B,YAEL2mB,EAAKqL,OAAOniC,IAASmQ,IAAI,GAAI,OAAQ,OAChC,aAEF,GAGT,QAASiyB,GAAYtL,GACnB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,QAAU,gBAAkB,GAG7D,QAASshC,GAAavL,GACpB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,SAAW,iBAAmB,GAG/D,QAASuhC,GAAYxL,GACnB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,QAAU,gBAAkB,GA9B7D,GAAIpE,GAAIqD,EAAO7D,KAAK+7B,SAChBpB,EAAOn6B,EAAE4lC,OAAS5lC,EAAE4lC,OAAO,MAAQ5lC,EAAE6lC,KAAK,MAC1Cld,EAAOnpB,KAAKmpB,IA+BhB,QAAQnpB,KAAKuE,OACX,IAAK,cACH,MAAOuhC,GAAKnL,EAAK4E,gBAAgB5xB,MAEnC,KAAK,SACH,MAAOm4B,GAAKnL,EAAK2E,WAAW3xB,MAE9B,KAAK,SACH,MAAOm4B,GAAKnL,EAAK0E,WAAW1xB,MAE9B,KAAK,OACH,GAAIyxB,GAAQzE,EAAKyE,OAIjB,OAHiB,IAAbp/B,KAAKmpB,OACPiW,EAAQA,EAAQ,KAAOA,EAAQ,IAE1BA,EAAQ,IAAM2G,EAAMpL,GAAQmL,EAAKnL,EAAKyE,QAE/C,KAAK,UACH,MAAOzE,GAAK4I,OAAO,QAAQ+C,cACvBP,EAAMpL,GAAQsL,EAAYtL,GAAQmL,EAAKnL,EAAKA,OAElD,KAAK,MACH,GAAIJ,GAAMI,EAAKA,OACXC,EAAQD,EAAK4I,OAAO,QAAQ+C,aAChC,OAAO,MAAQ/L,EAAM,IAAMK,EAAQsL,EAAavL,GAAQmL,EAAKvL,EAAM,EAErE,KAAK,QACH,MAAOI,GAAK4I,OAAO,QAAQ+C,cACvBJ,EAAavL,GAAQmL,EAAKnL,EAAKC,QAErC,KAAK,OACH,GAAIH,GAAOE,EAAKF,MAChB,OAAO,OAASA,EAAO0L,EAAYxL,GAAOmL,EAAKrL,EAEjD,SACE,MAAO,KAIb56B,EAAOD,QAAUmC,GAKb,SAASlC,EAAQD,EAASM,GAc9B,QAASgC,GAAMuR,EAAM2oB,EAAYltB,GAC/BlP,KAAKK,GAAK,KACVL,KAAKqK,OAAS,KACdrK,KAAKyT,KAAOA,EACZzT,KAAK2wB,IAAM,KACX3wB,KAAKo8B,WAAaA,MAClBp8B,KAAKkP,QAAUA,MAEflP,KAAKumC,UAAW,EAChBvmC,KAAKwmC,WAAY,EACjBxmC,KAAKymC,OAAQ,EAEbzmC,KAAKiI,IAAM,KACXjI,KAAK6H,KAAO,KACZ7H,KAAKsT,MAAQ,KACbtT,KAAKuT,OAAS,KA3BhB,GAAImzB,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,EA6B/BgC,GAAKgS,UAAUpS,OAAQ,EAKvBI,EAAKgS,UAAUyyB,OAAS,WACtB3mC,KAAKumC,UAAW,EAChBvmC,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAM3BvgB,EAAKgS,UAAU0yB,SAAW,WACxB5mC,KAAKumC,UAAW,EAChBvmC,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAQ3BvgB,EAAKgS,UAAU6E,QAAU,SAAStF,GAChCzT,KAAKyT,KAAOA,EACZzT,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAO3BvgB,EAAKgS,UAAU2yB,UAAY,SAASx8B,GAC9BrK,KAAKwmC,WACPxmC,KAAK8mC,OACL9mC,KAAKqK,OAASA,EACVrK,KAAKqK,QACPrK,KAAK+mC,QAIP/mC,KAAKqK,OAASA,GASlBnI,EAAKgS,UAAU8yB,UAAY,WAEzB,OAAO,GAOT9kC,EAAKgS,UAAU6yB,KAAO,WACpB,OAAO,GAOT7kC,EAAKgS,UAAU4yB,KAAO,WACpB,OAAO,GAMT5kC,EAAKgS,UAAUuO,OAAS,aAOxBvgB,EAAKgS,UAAU+yB,YAAc,aAO7B/kC,EAAKgS,UAAUgzB,YAAc,aAS7BhlC,EAAKgS,UAAUizB,qBAAuB,SAAUC,GAC9C,GAAIpnC,KAAKumC,UAAYvmC,KAAKkP,QAAQm4B,SAASjwB,SAAWpX,KAAK2wB,IAAI2W,aAAc,CAE3E,GAAIpyB,GAAKlV,KAELsnC,EAAet1B,SAASM,cAAc,MAC1Cg1B,GAAal/B,UAAY,SACzBk/B,EAAaC,MAAQ,mBAErBb,EAAOY,GACL19B,gBAAgB,IACf0K,GAAG,MAAO,SAAUzK,GACrBqL,EAAG7K,OAAOm9B,kBAAkBtyB,GAC5BrL,EAAM49B,oBAGRL,EAAOl1B,YAAYo1B,GACnBtnC,KAAK2wB,IAAI2W,aAAeA,OAEhBtnC,KAAKumC,UAAYvmC,KAAK2wB,IAAI2W,eAE9BtnC,KAAK2wB,IAAI2W,aAAan9B,YACxBnK,KAAK2wB,IAAI2W,aAAan9B,WAAWyH,YAAY5R,KAAK2wB,IAAI2W,cAExDtnC,KAAK2wB,IAAI2W,aAAe,OAS5BplC,EAAKgS,UAAUwzB,gBAAkB,SAAUv+B,GACzC,GAAIgK,EACJ,IAAInT,KAAKkP,QAAQy4B,SAAU,CACzB,GAAI5P,GAAW/3B,KAAKqK,OAAOqsB,QAAQC,UAAU1gB,IAAIjW,KAAKK,GACtD8S,GAAUnT,KAAKkP,QAAQy4B,SAAS5P,OAGhC5kB,GAAUnT,KAAKyT,KAAKN,OAGtB,IAAGA,IAAYnT,KAAKmT,QAAS,CAE3B,GAAIA,YAAmBy0B,SACrBz+B,EAAQ8b,UAAY,GACpB9b,EAAQ+I,YAAYiB,OAEjB,IAAetM,QAAXsM,EACPhK,EAAQ8b,UAAY9R,MAGpB,IAAwB,cAAlBnT,KAAKyT,KAAKtM,MAA8CN,SAAtB7G,KAAKyT,KAAKN,QAChD,KAAM,IAAIvP,OAAM,sCAAwC5D,KAAKK,GAIjEL,MAAKmT,QAAUA,IASnBjR,EAAKgS,UAAU2zB,aAAe,SAAU1+B,GACf,MAAnBnJ,KAAKyT,KAAK8zB,MACZp+B,EAAQo+B,MAAQvnC,KAAKyT,KAAK8zB,OAAS,GAGnCp+B,EAAQ2+B,gBAAgB,UAS3B5lC,EAAKgS,UAAU6zB,sBAAwB,SAAS5+B,GAC/C,GAAInJ,KAAKkP,QAAQ84B,gBAAkBhoC,KAAKkP,QAAQ84B,eAAehiC,OAAS,EAAG,CACzE,GAAIiiC,KAEJ,IAAI3hC,MAAMC,QAAQvG,KAAKkP,QAAQ84B,gBAC7BC,EAAajoC,KAAKkP,QAAQ84B,mBAEvB,CAAA,GAAmC,OAA/BhoC,KAAKkP,QAAQ84B,eAIpB,MAHAC,GAAarhC,OAAOiH,KAAK7N,KAAKyT,MAMhC,IAAK,GAAI5N,GAAI,EAAGA,EAAIoiC,EAAWjiC,OAAQH,IAAK,CAC1C,GAAImR,GAAOixB,EAAWpiC,GAClBvB,EAAQtE,KAAKyT,KAAKuD,EAET,OAAT1S,EACF6E,EAAQ++B,aAAa,QAAUlxB,EAAM1S,GAGrC6E,EAAQ2+B,gBAAgB,QAAU9wB,MAW1C9U,EAAKgS,UAAUi0B,aAAe,SAASh/B,GAEjCnJ,KAAK0N,QACP/M,EAAKuN,cAAc/E,EAASnJ,KAAK0N,OACjC1N,KAAK0N,MAAQ,MAIX1N,KAAKyT,KAAK/F,QACZ/M,EAAKoN,WAAW5E,EAASnJ,KAAKyT,KAAK/F,OACnC1N,KAAK0N,MAAQ1N,KAAKyT,KAAK/F,QAI3B7N,EAAOD,QAAUsC,GAKb,SAASrC,EAAQD,EAASM,GAkB9B,QAASiC,GAAgBsR,EAAM2oB,EAAYltB,GASzC,GARAlP,KAAKqG,OACH8M,SACEG,MAAO,IAGXtT,KAAK6kB,UAAW,EAGZpR,EAAM,CACR,GAAkB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAAKpT,GAE7D,IAAgBwG,QAAZ4M,EAAKnD,IACP,KAAM,IAAI1M,OAAM,kCAAoC6P,EAAKpT,IAI7D6B,EAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAElClP,KAAKooC,cAAe,EApCtB,GACIlmC,IADShC,EAAoB,IACtBA,EAAoB,KAC3B2C,EAAkB3C,EAAoB,IACtCoC,EAAYpC,EAAoB,GAoCpCiC,GAAe+R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAEjDC,EAAe+R,UAAUm0B,cAAgB,kBACzClmC,EAAe+R,UAAUpS,OAAQ,EAOjCK,EAAe+R,UAAU8yB,UAAY,SAAS1Q,GAE5C,MAAQt2B,MAAKyT,KAAKpD,MAAQimB,EAAMhmB,KAAStQ,KAAKyT,KAAKnD,IAAMgmB,EAAMjmB,OAMjElO,EAAe+R,UAAUuO,OAAS,WAChC,GAAIkO,GAAM3wB,KAAK2wB,GAuBf,IAtBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI2X,IAAMt2B,SAASM,cAAc,OAIjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI2X,IAAIp2B,YAAYye,EAAIxd,SAMxBnT,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI2X,IAAIn+B,WAAY,CACvB,GAAI0C,GAAa7M,KAAKqK,OAAOsmB,IAAI9jB,UACjC,KAAKA,EACH,KAAM,IAAIjJ,OAAM,iEAElBiJ,GAAWqF,YAAYye,EAAI2X,KAQ7B,GANAtoC,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK0nC,gBAAgB1nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK6nC,aAAa7nC,KAAK2wB,IAAIxd,SAC3BnT,KAAK+nC,sBAAsB/nC,KAAK2wB,IAAIxd,SACpCnT,KAAKmoC,aAAanoC,KAAK2wB,IAAI2X,IAG3B,IAAIlgC,IAAapI,KAAKyT,KAAKrL,UAAa,IAAMpI,KAAKyT,KAAKrL,UAAa,KAChEpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI2X,IAAIlgC,UAAYpI,KAAKqoC,cAAgBjgC,EAGzCpI,KAAK6kB,SAA6D,WAAlD/c,OAAOygC,iBAAiB5X,EAAIxd,SAAS0R,SAGrD7kB,KAAKqG,MAAM8M,QAAQG,MAAQtT,KAAK2wB,IAAIxd,QAAQ6d,YAC5ChxB,KAAKuT,OAAS,EAEdvT,KAAKymC,OAAQ,IAQjBtkC,EAAe+R,UAAU6yB,KAAOzkC,EAAU4R,UAAU6yB,KAMpD5kC,EAAe+R,UAAU4yB,KAAOxkC,EAAU4R,UAAU4yB,KAMpD3kC,EAAe+R,UAAU+yB,YAAc3kC,EAAU4R,UAAU+yB,YAM3D9kC,EAAe+R,UAAUgzB,YAAc,SAASvsB,GAC9C,GAAI6tB,GAAqC,QAA7BxoC,KAAKkP,QAAQimB,WACzBn1B,MAAK2wB,IAAIxd,QAAQzF,MAAMzF,IAAMugC,EAAQ,GAAK,IAC1CxoC,KAAK2wB,IAAIxd,QAAQzF,MAAM4W,OAASkkB,EAAQ,IAAM,EAC9C,IAAIj1B,EAGJ,IAA2B1M,SAAvB7G,KAAKyT,KAAK6vB,SAAwB,CAGpC,GAAImF,GAAezoC,KAAKyT,KAAK6vB,SACzBF,EAAYpjC,KAAKqK,OAAO+4B,UACxBsF,EAAgBtF,EAAUqF,GAAc//B,KAE5C,IAAa,GAAT8/B,EAAe,CAEjBj1B,EAASvT,KAAKqK,OAAO+4B,UAAUqF,GAAcl1B,OAASoH,EAAO7K,KAAK2W,SAClElT,GAA2B,GAAjBm1B,EAAqB/tB,EAAOooB,KAAO,GAAIpoB,EAAO7K,KAAK2W,SAAW,CACxE,IAAI4c,GAASrjC,KAAKqK,OAAOpC,GACzB,KAAK,GAAIq7B,KAAYF,GACfA,EAAUj9B,eAAem9B,IACQ,GAA/BF,EAAUE,GAAU7Z,SAAmB2Z,EAAUE,GAAU56B,MAAQggC,IACrErF,GAAUD,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,SAMzD4c,IAA2B,GAAjBqF,EAAqB/tB,EAAOooB,KAAO,GAAMpoB,EAAO7K,KAAK2W,SAAW,EAC1EzmB,KAAK2wB,IAAI2X,IAAI56B,MAAMzF,IAAMo7B,EAAS,KAClCrjC,KAAK2wB,IAAI2X,IAAI56B,MAAM4W,OAAS,OAGzB,CACH,GAAI+e,GAASrjC,KAAKqK,OAAOpC,IACrB0gC,EAAc,CAClB,KAAK,GAAIrF,KAAYF,GACnB,GAAIA,EAAUj9B,eAAem9B,IACQ,GAA/BF,EAAUE,GAAU7Z,QAAiB,CACvC,GAAImf,GAAYxF,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,QACzDkiB,IAAeC,EACXxF,EAAUE,GAAU56B,MAAQggC,IAC9BrF,GAAUuF,GAKlBr1B,EAASvT,KAAKqK,OAAO+4B,UAAUqF,GAAcl1B,OAASoH,EAAO7K,KAAK2W,SAClEzmB,KAAK2wB,IAAI2X,IAAI56B,MAAMzF,IAAOjI,KAAKqK,OAAOkJ,OAASo1B,EAActF,EAAU,KACvErjC,KAAK2wB,IAAI2X,IAAI56B,MAAM4W,OAAS,QAM1BtkB,MAAKqK,iBAAkBxH,IAEzB0Q,EAAS/O,KAAKJ,IAAIpE,KAAKqK,OAAOkJ,OAC1BvT,KAAKqK,OAAOqsB,QAAQnB,KAAKC,SAASzI,OAAOxZ,OACzCvT,KAAKqK,OAAOqsB,QAAQnB,KAAKC,SAASkD,gBAAgBnlB,QACtDvT,KAAK2wB,IAAI2X,IAAI56B,MAAMzF,IAAMugC,EAAQ,IAAM,GACvCxoC,KAAK2wB,IAAI2X,IAAI56B,MAAM4W,OAASkkB,EAAQ,GAAK,MAGzCj1B,EAASvT,KAAKqK,OAAOkJ,OAErBvT,KAAK2wB,IAAI2X,IAAI56B,MAAMzF,IAAMjI,KAAKqK,OAAOpC,IAAM,KAC3CjI,KAAK2wB,IAAI2X,IAAI56B,MAAM4W,OAAS,GAGhCtkB,MAAK2wB,IAAI2X,IAAI56B,MAAM6F,OAASA,EAAS,MAGvC1T,EAAOD,QAAUuC,GAKb,SAAStC,EAAQD,EAASM,GAe9B,QAASkC,GAASqR,EAAM2oB,EAAYltB,GAalC,GAZAlP,KAAKqG,OACHqqB,KACEpd,MAAO,EACPC,OAAQ,GAEVkd,MACEnd,MAAO,EACPC,OAAQ,IAKRE,GACgB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAI1DvR,GAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAhCpC,CAAA,GAAIhN,GAAOhC,EAAoB,GACpBA,GAAoB,GAkC/BkC,EAAQ8R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAO1CE,EAAQ8R,UAAU8yB,UAAY,SAAS1Q,GAGrC,GAAIlD,IAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,CAC3C,OAAQrQ,MAAKyT,KAAKpD,MAAQimB,EAAMjmB,MAAQ+iB,GAAcpzB,KAAKyT,KAAKpD,MAAQimB,EAAMhmB,IAAM8iB,GAMtFhxB,EAAQ8R,UAAUuO,OAAS,WACzB,GAAIkO,GAAM3wB,KAAK2wB,GA6Bf,IA5BKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI2X,IAAMt2B,SAASM,cAAc,OAGjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI2X,IAAIp2B,YAAYye,EAAIxd,SAGxBwd,EAAIF,KAAOze,SAASM,cAAc,OAClCqe,EAAIF,KAAKroB,UAAY,OAGrBuoB,EAAID,IAAM1e,SAASM,cAAc,OACjCqe,EAAID,IAAItoB,UAAY,MAGpBuoB,EAAI2X,IAAI,iBAAmBtoC,KAE3BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI2X,IAAIn+B,WAAY,CACvB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EAAY,KAAM,IAAIn1B,OAAM,iEACjCm1B,GAAW7mB,YAAYye,EAAI2X,KAE7B,IAAK3X,EAAIF,KAAKtmB,WAAY,CACxB,GAAI0C,GAAa7M,KAAKqK,OAAOsmB,IAAI9jB,UACjC,KAAKA,EAAY,KAAM,IAAIjJ,OAAM,iEACjCiJ,GAAWqF,YAAYye,EAAIF,MAE7B,IAAKE,EAAID,IAAIvmB,WAAY,CACvB,GAAI44B,GAAO/iC,KAAKqK,OAAOsmB,IAAIoS,IAC3B,KAAKl2B,EAAY,KAAM,IAAIjJ,OAAM,2DACjCm/B,GAAK7wB,YAAYye,EAAID,KAQvB,GANA1wB,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK0nC,gBAAgB1nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK6nC,aAAa7nC,KAAK2wB,IAAI2X,KAC3BtoC,KAAK+nC,sBAAsB/nC,KAAK2wB,IAAI2X,KACpCtoC,KAAKmoC,aAAanoC,KAAK2wB,IAAI2X,IAG3B,IAAIlgC,IAAapI,KAAKyT,KAAKrL,UAAW,IAAMpI,KAAKyT,KAAKrL,UAAY,KAC7DpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI2X,IAAIlgC,UAAY,WAAaA,EACjCuoB,EAAIF,KAAKroB,UAAY,YAAcA,EACnCuoB,EAAID,IAAItoB,UAAa,WAAaA,EAGlCpI,KAAKqG,MAAMqqB,IAAInd,OAASod,EAAID,IAAIQ,aAChClxB,KAAKqG,MAAMqqB,IAAIpd,MAAQqd,EAAID,IAAIM,YAC/BhxB,KAAKqG,MAAMoqB,KAAKnd,MAAQqd,EAAIF,KAAKO,YACjChxB,KAAKsT,MAAQqd,EAAI2X,IAAItX,YACrBhxB,KAAKuT,OAASod,EAAI2X,IAAIpX,aAEtBlxB,KAAKymC,OAAQ,EAGfzmC,KAAKmnC,qBAAqBxW,EAAI2X,MAOhClmC,EAAQ8R,UAAU6yB,KAAO,WAClB/mC,KAAKwmC,WACRxmC,KAAKyiB,UAOTrgB,EAAQ8R,UAAU4yB,KAAO,WACvB,GAAI9mC,KAAKwmC,UAAW,CAClB,GAAI7V,GAAM3wB,KAAK2wB,GAEXA,GAAI2X,IAAIn+B,YAAcwmB,EAAI2X,IAAIn+B,WAAWyH,YAAY+e,EAAI2X,KACzD3X,EAAIF,KAAKtmB,YAAawmB,EAAIF,KAAKtmB,WAAWyH,YAAY+e,EAAIF,MAC1DE,EAAID,IAAIvmB,YAAcwmB,EAAID,IAAIvmB,WAAWyH,YAAY+e,EAAID,KAE7D1wB,KAAKwmC,WAAY,IAQrBpkC,EAAQ8R,UAAU+yB,YAAc,WAC9B,GAAI52B,GAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,OAC3Cw4B,EAAQ7oC,KAAKkP,QAAQ25B,KAKvB7oC,MAAK6H,KADM,SAATghC,EACUx4B,EAAQrQ,KAAKsT,MAET,QAATu1B,EACKx4B,EAIAA,EAAQrQ,KAAKsT,MAAQ,EAInCtT,KAAK2wB,IAAI2X,IAAI56B,MAAM7F,KAAO7H,KAAK6H,KAAO,KAGtC7H,KAAK2wB,IAAIF,KAAK/iB,MAAM7F,KAAQwI,EAAQrQ,KAAKqG,MAAMoqB,KAAKnd,MAAQ,EAAK,KAGjEtT,KAAK2wB,IAAID,IAAIhjB,MAAM7F,KAAQwI,EAAQrQ,KAAKqG,MAAMqqB,IAAIpd,MAAQ,EAAK,MAOjElR,EAAQ8R,UAAUgzB,YAAc,WAC9B,GAAI/R,GAAcn1B,KAAKkP,QAAQimB,YAC3BmT,EAAMtoC,KAAK2wB,IAAI2X,IACf7X,EAAOzwB,KAAK2wB,IAAIF,KAChBC,EAAM1wB,KAAK2wB,IAAID,GAEnB,IAAmB,OAAfyE,EACFmT,EAAI56B,MAAMzF,KAAWjI,KAAKiI,KAAO,GAAK,KAEtCwoB,EAAK/iB,MAAMzF,IAAS,IACpBwoB,EAAK/iB,MAAM6F,OAAUvT,KAAKqK,OAAOpC,IAAMjI,KAAKiI,IAAM,EAAK,KACvDwoB,EAAK/iB,MAAM4W,OAAS,OAEjB,CACH,GAAIwkB,GAAgB9oC,KAAKqK,OAAOqsB,QAAQrwB,MAAMkN,OAC1C4d,EAAa2X,EAAgB9oC,KAAKqK,OAAOpC,IAAMjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,GAE7EqgC,GAAI56B,MAAMzF,KAAWjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,QAAU,GAAK,KACzEkd,EAAK/iB,MAAMzF,IAAU6gC,EAAgB3X,EAAc,KACnDV,EAAK/iB,MAAM4W,OAAS,IAGtBoM,EAAIhjB,MAAMzF,KAAQjI,KAAKqG,MAAMqqB,IAAInd,OAAS,EAAK,MAGjD1T,EAAOD,QAAUwC,GAKb,SAASvC,EAAQD,EAASM,GAc9B,QAASmC,GAAWoR,EAAM2oB,EAAYltB,GAcpC,GAbAlP,KAAKqG,OACHqqB,KACEzoB,IAAK,EACLqL,MAAO,EACPC,OAAQ,GAEVJ,SACEI,OAAQ,EACRw1B,WAAY,IAKZt1B,GACgB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAI1DvR,GAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAhCpC,GAAIhN,GAAOhC,EAAoB,GAmC/BmC,GAAU6R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAO5CG,EAAU6R,UAAU8yB,UAAY,SAAS1Q,GAGvC,GAAIlD,IAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,CAC3C,OAAQrQ,MAAKyT,KAAKpD,MAAQimB,EAAMjmB,MAAQ+iB,GAAcpzB,KAAKyT,KAAKpD,MAAQimB,EAAMhmB,IAAM8iB,GAMtF/wB,EAAU6R,UAAUuO,OAAS,WAC3B,GAAIkO,GAAM3wB,KAAK2wB,GA0Bf,IAzBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI/d,MAAQZ,SAASM,cAAc,OAInCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI/d,MAAMV,YAAYye,EAAIxd,SAG1Bwd,EAAID,IAAM1e,SAASM,cAAc,OACjCqe,EAAI/d,MAAMV,YAAYye,EAAID,KAG1BC,EAAI/d,MAAM,iBAAmB5S,KAE7BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI/d,MAAMzI,WAAY,CACzB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EACH,KAAM,IAAIn1B,OAAM,iEAElBm1B,GAAW7mB,YAAYye,EAAI/d,OAQ7B,GANA5S,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK0nC,gBAAgB1nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK6nC,aAAa7nC,KAAK2wB,IAAI/d,OAC3B5S,KAAK+nC,sBAAsB/nC,KAAK2wB,IAAI/d,OACpC5S,KAAKmoC,aAAanoC,KAAK2wB,IAAI/d,MAG3B,IAAIxK,IAAapI,KAAKyT,KAAKrL,UAAW,IAAMpI,KAAKyT,KAAKrL,UAAY,KAC7DpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI/d,MAAMxK,UAAa,aAAeA,EACtCuoB,EAAID,IAAItoB,UAAa,WAAaA,EAGlCpI,KAAKsT,MAAQqd,EAAI/d,MAAMoe,YACvBhxB,KAAKuT,OAASod,EAAI/d,MAAMse,aACxBlxB,KAAKqG,MAAMqqB,IAAIpd,MAAQqd,EAAID,IAAIM,YAC/BhxB,KAAKqG,MAAMqqB,IAAInd,OAASod,EAAID,IAAIQ,aAChClxB,KAAKqG,MAAM8M,QAAQI,OAASod,EAAIxd,QAAQ+d,aAGxCP,EAAIxd,QAAQzF,MAAMq7B,WAAa,EAAI/oC,KAAKqG,MAAMqqB,IAAIpd,MAAQ,KAG1Dqd,EAAID,IAAIhjB,MAAMzF,KAAQjI,KAAKuT,OAASvT,KAAKqG,MAAMqqB,IAAInd,QAAU,EAAK,KAClEod,EAAID,IAAIhjB,MAAM7F,KAAQ7H,KAAKqG,MAAMqqB,IAAIpd,MAAQ,EAAK,KAElDtT,KAAKymC,OAAQ,EAGfzmC,KAAKmnC,qBAAqBxW,EAAI/d,QAOhCvQ,EAAU6R,UAAU6yB,KAAO,WACpB/mC,KAAKwmC,WACRxmC,KAAKyiB,UAOTpgB,EAAU6R,UAAU4yB,KAAO,WACrB9mC,KAAKwmC,YACHxmC,KAAK2wB,IAAI/d,MAAMzI,YACjBnK,KAAK2wB,IAAI/d,MAAMzI,WAAWyH,YAAY5R,KAAK2wB,IAAI/d,OAGjD5S,KAAKwmC,WAAY,IAQrBnkC,EAAU6R,UAAU+yB,YAAc,WAChC,GAAI52B,GAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,MAE/CrQ,MAAK6H,KAAOwI,EAAQrQ,KAAKqG,MAAMqqB,IAAIpd,MAGnCtT,KAAK2wB,IAAI/d,MAAMlF,MAAM7F,KAAO7H,KAAK6H,KAAO,MAO1CxF,EAAU6R,UAAUgzB,YAAc,WAChC,GAAI/R,GAAcn1B,KAAKkP,QAAQimB,YAC3BviB,EAAQ5S,KAAK2wB,IAAI/d,KAGnBA,GAAMlF,MAAMzF,IADK,OAAfktB,EACgBn1B,KAAKiI,IAAM,KAGVjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,OAAU,MAItE1T,EAAOD,QAAUyC,GAKb,SAASxC,EAAQD,EAASM,GAe9B,QAASoC,GAAWmR,EAAM2oB,EAAYltB,GASpC,GARAlP,KAAKqG,OACH8M,SACEG,MAAO,IAGXtT,KAAK6kB,UAAW,EAGZpR,EAAM,CACR,GAAkB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAAKpT,GAE7D,IAAgBwG,QAAZ4M,EAAKnD,IACP,KAAM,IAAI1M,OAAM,kCAAoC6P,EAAKpT,IAI7D6B,EAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GA/BpC,GAAIw3B,GAASxmC,EAAoB,IAC7BgC,EAAOhC,EAAoB,GAiC/BoC,GAAU4R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAE5CI,EAAU4R,UAAUm0B,cAAgB,aAOpC/lC,EAAU4R,UAAU8yB,UAAY,SAAS1Q,GAEvC,MAAQt2B,MAAKyT,KAAKpD,MAAQimB,EAAMhmB,KAAStQ,KAAKyT,KAAKnD,IAAMgmB,EAAMjmB,OAMjE/N,EAAU4R,UAAUuO,OAAS,WAC3B,GAAIkO,GAAM3wB,KAAK2wB,GAsBf,IArBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI2X,IAAMt2B,SAASM,cAAc,OAIjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI2X,IAAIp2B,YAAYye,EAAIxd,SAGxBwd,EAAI2X,IAAI,iBAAmBtoC,KAE3BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI2X,IAAIn+B,WAAY,CACvB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EACH,KAAM,IAAIn1B,OAAM,iEAElBm1B,GAAW7mB,YAAYye,EAAI2X,KAQ7B,GANAtoC,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK0nC,gBAAgB1nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK6nC,aAAa7nC,KAAK2wB,IAAI2X,KAC3BtoC,KAAK+nC,sBAAsB/nC,KAAK2wB,IAAI2X,KACpCtoC,KAAKmoC,aAAanoC,KAAK2wB,IAAI2X,IAG3B,IAAIlgC,IAAapI,KAAKyT,KAAKrL,UAAa,IAAMpI,KAAKyT,KAAKrL,UAAa,KAChEpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI2X,IAAIlgC,UAAYpI,KAAKqoC,cAAgBjgC,EAGzCpI,KAAK6kB,SAA6D,WAAlD/c,OAAOygC,iBAAiB5X,EAAIxd,SAAS0R,SAKrD7kB,KAAK2wB,IAAIxd,QAAQzF,MAAMs7B,SAAW,OAClChpC,KAAKqG,MAAM8M,QAAQG,MAAQtT,KAAK2wB,IAAIxd,QAAQ6d,YAC5ChxB,KAAKuT,OAASvT,KAAK2wB,IAAI2X,IAAIpX,aAC3BlxB,KAAK2wB,IAAIxd,QAAQzF,MAAMs7B,SAAW,GAElChpC,KAAKymC,OAAQ,EAGfzmC,KAAKmnC,qBAAqBxW,EAAI2X,KAC9BtoC,KAAKipC,mBACLjpC,KAAKkpC,qBAOP5mC,EAAU4R,UAAU6yB,KAAO,WACpB/mC,KAAKwmC,WACRxmC,KAAKyiB,UAQTngB,EAAU4R,UAAU4yB,KAAO,WACzB,GAAI9mC,KAAKwmC,UAAW,CAClB,GAAI8B,GAAMtoC,KAAK2wB,IAAI2X,GAEfA,GAAIn+B,YACNm+B,EAAIn+B,WAAWyH,YAAY02B,GAG7BtoC,KAAKwmC,WAAY,IAarBlkC,EAAU4R,UAAU+yB,YAAc,SAASkC,GACzC,GAGIC,GACArY,EAJAsY,EAAcrpC,KAAKqK,OAAOiJ,MAC1BjD,EAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,OAC3CC,EAAMtQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKnD,MAK3BzJ,SAAdsiC,GAA2BA,KAAc,MAC9BE,EAATh5B,IACFA,GAASg5B,GAEP/4B,EAAM,EAAI+4B,IACZ/4B,EAAM,EAAI+4B,GAGd,IAAIC,GAAW9kC,KAAKJ,IAAIkM,EAAMD,EAAO,EAoBrC,QAlBIrQ,KAAK6kB,UACP7kB,KAAK6H,KAAOwI,EACZrQ,KAAKsT,MAAQg2B,EAAWtpC,KAAKqG,MAAM8M,QAAQG,MAC3Cyd,EAAe/wB,KAAKqG,MAAM8M,QAAQG,QAOlCtT,KAAK6H,KAAOwI,EACZrQ,KAAKsT,MAAQg2B,EACbvY,EAAevsB,KAAKL,IAAImM,EAAMD,EAAQ,EAAIrQ,KAAKkP,QAAQ8V,QAAShlB,KAAKqG,MAAM8M,QAAQG,QAGrFtT,KAAK2wB,IAAI2X,IAAI56B,MAAM7F,KAAO7H,KAAK6H,KAAO,KACtC7H,KAAK2wB,IAAI2X,IAAI56B,MAAM4F,MAAQg2B,EAAW,KAE9BtpC,KAAKkP,QAAQ25B,OACnB,IAAK,OACH7oC,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAO,GAC9B,MAEF,KAAK,QACH7H,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAOrD,KAAKJ,IAAKklC,EAAWvY,EAAe,EAAI/wB,KAAKkP,QAAQ8V,QAAU,GAAK,IAClG,MAEF,KAAK,SACHhlB,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAOrD,KAAKJ,KAAKklC,EAAWvY,EAAe,EAAI/wB,KAAKkP,QAAQ8V,SAAW,EAAG,GAAK,IACtG,MAEF,SAIMokB,EAFAppC,KAAK6kB,SACHvU,EAAM,EACM9L,KAAKJ,KAAKiM,EAAO,IAGhB0gB,EAIL,EAAR1gB,EACY7L,KAAKL,KAAKkM,EACnBC,EAAMD,EAAQ0gB,EAAe,EAAI/wB,KAAKkP,QAAQ8V,SAIrC,EAGlBhlB,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAOuhC,EAAc,OAQlD9mC,EAAU4R,UAAUgzB,YAAc,WAChC,GAAI/R,GAAcn1B,KAAKkP,QAAQimB,YAC3BmT,EAAMtoC,KAAK2wB,IAAI2X,GAGjBA,GAAI56B,MAAMzF,IADO,OAAfktB,EACcn1B,KAAKiI,IAAM,KAGVjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,OAAU,MAQpEjR,EAAU4R,UAAU+0B,iBAAmB,WACrC,GAAIjpC,KAAKumC,UAAYvmC,KAAKkP,QAAQm4B,SAASkC,aAAevpC,KAAK2wB,IAAI6Y,SAAU,CAE3E,GAAIA,GAAWx3B,SAASM,cAAc,MACtCk3B,GAASphC,UAAY,YACrBohC,EAASC,aAAezpC,KAGxB0mC,EAAO8C,GACL5/B,gBAAgB,IACf0K,GAAG,OAAQ,cAIdtU,KAAK2wB,IAAI2X,IAAIp2B,YAAYs3B,GACzBxpC,KAAK2wB,IAAI6Y,SAAWA,OAEZxpC,KAAKumC,UAAYvmC,KAAK2wB,IAAI6Y,WAE9BxpC,KAAK2wB,IAAI6Y,SAASr/B,YACpBnK,KAAK2wB,IAAI6Y,SAASr/B,WAAWyH,YAAY5R,KAAK2wB,IAAI6Y,UAEpDxpC,KAAK2wB,IAAI6Y,SAAW,OAQxBlnC,EAAU4R,UAAUg1B,kBAAoB,WACtC,GAAIlpC,KAAKumC,UAAYvmC,KAAKkP,QAAQm4B,SAASkC,aAAevpC,KAAK2wB,IAAI+Y,UAAW,CAE5E,GAAIA,GAAY13B,SAASM,cAAc,MACvCo3B,GAAUthC,UAAY,aACtBshC,EAAUC,cAAgB3pC,KAG1B0mC,EAAOgD,GACL9/B,gBAAgB,IACf0K,GAAG,OAAQ,cAIdtU,KAAK2wB,IAAI2X,IAAIp2B,YAAYw3B,GACzB1pC,KAAK2wB,IAAI+Y,UAAYA,OAEb1pC,KAAKumC,UAAYvmC,KAAK2wB,IAAI+Y,YAE9B1pC,KAAK2wB,IAAI+Y,UAAUv/B,YACrBnK,KAAK2wB,IAAI+Y,UAAUv/B,WAAWyH,YAAY5R,KAAK2wB,IAAI+Y,WAErD1pC,KAAK2wB,IAAI+Y,UAAY,OAIzB7pC,EAAOD,QAAU0C,GAKb,SAASzC,GAOb,QAAS0C,KACPvC,KAAKkP,QAAU,KACflP,KAAKqG,MAAQ,KAQf9D,EAAU2R,UAAUD,WAAa,SAAS/E,GACpCA,GACFvO,KAAKgF,OAAO3F,KAAKkP,QAASA,IAQ9B3M,EAAU2R,UAAUuO,OAAS,WAE3B,OAAO,GAMTlgB,EAAU2R,UAAUG,QAAU,aAU9B9R,EAAU2R,UAAU01B,WAAa,WAC/B,GAAIC,GAAW7pC,KAAKqG,MAAMyjC,iBAAmB9pC,KAAKqG,MAAMiN,OACpDtT,KAAKqG,MAAM0jC,kBAAoB/pC,KAAKqG,MAAMkN,MAK9C,OAHAvT,MAAKqG,MAAMyjC,eAAiB9pC,KAAKqG,MAAMiN,MACvCtT,KAAKqG,MAAM0jC,gBAAkB/pC,KAAKqG,MAAMkN,OAEjCs2B,GAGThqC,EAAOD,QAAU2C,GAKb,SAAS1C,EAAQD,EAASM,GAe9B,QAASsC,GAAa+yB,EAAMrmB,GAC1BlP,KAAKu1B,KAAOA,EAGZv1B,KAAKi1B,gBACH+U,iBAAiB,EAEjBC,QAASA,EACT7D,OAAQ,MAEVpmC,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAK0qB,OAAS,EAEd1qB,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GA5BlB,GAAIvO,GAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC2D,EAAS3D,EAAoB,IAC7B+pC,EAAU/pC,EAAoB,GA4BlCsC,GAAY0R,UAAY,GAAI3R,GAM5BC,EAAY0R,UAAUohB,QAAU,WAC9B,GAAI7C,GAAMzgB,SAASM,cAAc,MACjCmgB,GAAIrqB,UAAY,cAChBqqB,EAAI/kB,MAAMkX,SAAW,WACrB6N,EAAI/kB,MAAMzF,IAAM,MAChBwqB,EAAI/kB,MAAM6F,OAAS,OAEnBvT,KAAKyyB,IAAMA,GAMbjwB,EAAY0R,UAAUG,QAAU,WAC9BrU,KAAKkP,QAAQ86B,iBAAkB,EAC/BhqC,KAAKyiB,SAELziB,KAAKu1B,KAAO,MAQd/yB,EAAY0R,UAAUD,WAAa,SAAS/E,GACtCA,GAEFvO,EAAKyF,iBAAiB,kBAAmB,SAAU,WAAYpG,KAAKkP,QAASA,IAQjF1M,EAAY0R,UAAUuO,OAAS,WAC7B,GAAIziB,KAAKkP,QAAQ86B,gBAAiB,CAChC,GAAI3/B,GAASrK,KAAKu1B,KAAK5E,IAAIuZ,kBACvBlqC,MAAKyyB,IAAItoB,YAAcE,IAErBrK,KAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCpoB,EAAO6H,YAAYlS,KAAKyyB,KAExBzyB,KAAKqQ,QAGP,IAAI8uB,GAAM,GAAIv6B,OAAK,GAAIA,OAAOyC,UAAYrH,KAAK0qB,QAC3ClY,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAASqJ,GAE5BiH,EAASpmC,KAAKkP,QAAQ+6B,QAAQjqC,KAAKkP,QAAQk3B,QAC3CmB,EAAQnB,EAAOrK,QAAU,IAAMqK,EAAOxN,KAAO,KAAO/0B,EAAOs7B,GAAKoE,OAAO,8BAC3EgE,GAAQA,EAAMnhB,OAAO,GAAG+jB,cAAgB5C,EAAM6C,UAAU,GAExDpqC,KAAKyyB,IAAI/kB,MAAM7F,KAAO2K,EAAI,KAC1BxS,KAAKyyB,IAAI8U,MAAQA,MAIbvnC,MAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCzyB,KAAKkmB,MAGP,QAAO,GAMT1jB,EAAY0R,UAAU7D,MAAQ,WAG5B,QAASuF,KACPV,EAAGgR,MAGH,IAAI3hB,GAAQ2Q,EAAGqgB,KAAKe,MAAM8F,WAAWlnB,EAAGqgB,KAAKC,SAASzI,OAAOzZ,OAAO/O,MAChE6uB,EAAW,EAAI7uB,EAAQ,EACZ,IAAX6uB,IAAiBA,EAAW,IAC5BA,EAAW,MAAMA,EAAW,KAEhCle,EAAGuN,SAGHvN,EAAGm1B,iBAAmB9vB,WAAW3E,EAAQwd,GAd3C,GAAIle,GAAKlV,IAiBT4V,MAMFpT,EAAY0R,UAAUgS,KAAO,WACGrf,SAA1B7G,KAAKqqC,mBACP/vB,aAAata,KAAKqqC,wBACXrqC,MAAKqqC,mBAUhB7nC,EAAY0R,UAAUo2B,eAAiB,SAAS1R,GAC9C,GAAIrqB,GAAI5N,EAAKuG,QAAQ0xB,EAAM,QAAQvxB,UAC/B83B,GAAM,GAAIv6B,OAAOyC,SACrBrH,MAAK0qB,OAASnc,EAAI4wB,EAClBn/B,KAAKyiB,UAOPjgB,EAAY0R,UAAUq2B,eAAiB,WACrC,MAAO,IAAI3lC,OAAK,GAAIA,OAAOyC,UAAYrH,KAAK0qB,SAG9C7qB,EAAOD,QAAU4C,GAKb,SAAS3C,EAAQD,EAASM,GAiB9B,QAASuC,GAAY8yB,EAAMrmB,GACzBlP,KAAKu1B,KAAOA,EAGZv1B,KAAKi1B,gBACHuV,gBAAgB,EAChBP,QAASA,EACT7D,OAAQ,KACR/lC,GAAI,GAENL,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAGlCj1B,KAAKy2B,WADHvnB,GAAWA,EAAQ0pB,KACH1pB,EAAQ0pB,KAER,GAAIh0B,MAGxB5E,KAAKyqC,eAGLzqC,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAtClB,GAAIw3B,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC2D,EAAS3D,EAAoB,IAC7B+pC,EAAU/pC,EAAoB,GAqClCuC,GAAWyR,UAAY,GAAI3R,GAO3BE,EAAWyR,UAAUD,WAAa,SAAS/E,GACrCA,IAEFvO,EAAKyF,iBAAiB,iBAAkB,SAAU,UAAW,MAAOpG,KAAKkP,QAASA,GAG9ElP,KAAKkP,QAAQ7O,IACfL,KAAKyiB,WASXhgB,EAAWyR,UAAUohB,QAAU,WAC7B,GAAI7C,GAAMzgB,SAASM,cAAc,MACjCmgB,GAAIrqB,UAAY,aAChBqqB,EAAI/kB,MAAMkX,SAAW,WACrB6N,EAAI/kB,MAAMzF,IAAM,MAChBwqB,EAAI/kB,MAAM6F,OAAS,OACnBvT,KAAKyyB,IAAMA,CAEX,IAAIiY,GAAO14B,SAASM,cAAc,MAClCo4B,GAAKh9B,MAAMkX,SAAW,WACtB8lB,EAAKh9B,MAAMzF,IAAM,MACjByiC,EAAKh9B,MAAM7F,KAAO,QAClB6iC,EAAKh9B,MAAM6F,OAAS,OACpBm3B,EAAKh9B,MAAM4F,MAAQ,OACnBmf,EAAIvgB,YAAYw4B,GAGhB1qC,KAAK8D,OAAS4iC,EAAOjU,GACnBkY,iBAAiB,IAEnB3qC,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACnDA,KAAK8D,OAAOwQ,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OAC9CA,KAAK8D,OAAOwQ,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,QAMnDyC,EAAWyR,UAAUG,QAAU,WAC7BrU,KAAKkP,QAAQs7B,gBAAiB,EAC9BxqC,KAAKyiB,SAELziB,KAAK8D,OAAOqhC,QAAO,GACnBnlC,KAAK8D,OAAS,KAEd9D,KAAKu1B,KAAO,MAOd9yB,EAAWyR,UAAUuO,OAAS,WAC5B,GAAIziB,KAAKkP,QAAQs7B,eAAgB,CAC/B,GAAIngC,GAASrK,KAAKu1B,KAAK5E,IAAIuZ,kBACvBlqC,MAAKyyB,IAAItoB,YAAcE,IAErBrK,KAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCpoB,EAAO6H,YAAYlS,KAAKyyB,KAG1B,IAAIjgB,GAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAAS91B,KAAKy2B,YAEjC2P,EAASpmC,KAAKkP,QAAQ+6B,QAAQjqC,KAAKkP,QAAQk3B,QAC3CmB,EAAQnB,EAAOxN,KAAO,KAAO/0B,EAAO7D,KAAKy2B,YAAY8M,OAAO,8BAChEgE,GAAQA,EAAMnhB,OAAO,GAAG+jB,cAAgB5C,EAAM6C,UAAU,GAExDpqC,KAAKyyB,IAAI/kB,MAAM7F,KAAO2K,EAAI,KAC1BxS,KAAKyyB,IAAI8U,MAAQA,MAIbvnC,MAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,IAIzC,QAAO,GAOThwB,EAAWyR,UAAU02B,cAAgB,SAAShS,GAC5C54B,KAAKy2B,WAAa91B,EAAKuG,QAAQ0xB,EAAM,QACrC54B,KAAKyiB,UAOPhgB,EAAWyR,UAAU22B,cAAgB,WACnC,MAAO,IAAIjmC,MAAK5E,KAAKy2B,WAAWpvB,YAQlC5E,EAAWyR,UAAU8rB,aAAe,SAASn2B,GAC3C7J,KAAKyqC,YAAYzJ,UAAW,EAC5BhhC,KAAKyqC,YAAYhU,WAAaz2B,KAAKy2B,WAEnC5sB,EAAM49B,kBACN59B,EAAMD,kBAQRnH,EAAWyR,UAAU+rB,QAAU,SAAUp2B,GACvC,GAAK7J,KAAKyqC,YAAYzJ,SAAtB,CAEA,GAAIS,GAAS53B,EAAM2uB,QAAQiJ,OACvBjvB,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAAS91B,KAAKyqC,YAAYhU,YAAcgL,EAC3D7I,EAAO54B,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,EAEjCxS,MAAK4qC,cAAchS,GAGnB54B,KAAKu1B,KAAKE,QAAQhH,KAAK,cACrBpuB,GAAIL,KAAKkP,QAAQ7O,GACjBu4B,KAAM,GAAIh0B,MAAK5E,KAAKy2B,WAAWpvB,aAGjCwC,EAAM49B,kBACN59B,EAAMD,mBAQRnH,EAAWyR,UAAUgsB,WAAa,SAAUr2B,GACrC7J,KAAKyqC,YAAYzJ,WAGtBhhC,KAAKu1B,KAAKE,QAAQhH,KAAK,eACrBpuB,GAAIL,KAAKkP,QAAQ7O,GACjBu4B,KAAM,GAAIh0B,MAAK5E,KAAKy2B,WAAWpvB,aAGjCwC,EAAM49B,kBACN59B,EAAMD,mBAGR/J,EAAOD,QAAU6C,GAKb,SAAS5C,EAAQD,EAASM,GAe9B,QAASwC,GAAU6yB,EAAMrmB,EAAS47B,EAAKC,GACrC/qC,KAAKK,GAAKM,EAAK2E,aACftF,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACHE,YAAa,OACb6V,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACPC,iBAAkB,EAClBC,iBAAkB,EAClBC,aAAc,GACdC,aAAc,EACdC,UAAW,GACXj4B,MAAO,OACPmW,SAAS,EACT8T,YAAY,EACZD,aACEz1B,MAAO1D,IAAI0C,OAAWzC,IAAIyC,QAC1BwhB,OAAQlkB,IAAI0C,OAAWzC,IAAIyC,SAE7B0gC,OACE1/B,MAAOyiB,KAAKzjB,QACZwhB,OAAQiC,KAAKzjB,SAEf08B,QACE17B,MAAOk3B,SAAUl4B,QACjBwhB,OAAQ0W,SAAUl4B,UAItB7G,KAAK+qC,iBAAmBA,EACxB/qC,KAAKwrC,aAAeV,EACpB9qC,KAAKqG,SACLrG,KAAKyrC,aACHC,SACAC,UACApE,UAGFvnC,KAAK2wB,OAEL3wB,KAAKs2B,OAASjmB,MAAM,EAAGC,IAAI,GAE3BtQ,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAK4rC,iBAAmB,EAExB5rC,KAAKiU,WAAW/E,GAChBlP,KAAKsT,MAAQrP,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAC3DjL,KAAK6rC,SAAW7rC,KAAKsT,MACrBtT,KAAKuT,OAASvT,KAAKwrC,aAAata,aAChClxB,KAAK05B,QAAS,EAEd15B,KAAK8rC,WAAa,GAClB9rC,KAAK+rC,iBAAmB,GACxB/rC,KAAKgsC,aAAe,GAEpBhsC,KAAKisC,WAAa,EAClBjsC,KAAKksC,QAAS,EACdlsC,KAAKmsC,eACLnsC,KAAKosC,cAAe,EAGpBpsC,KAAK+0B,UACL/0B,KAAKqsC,eAAiB,EAGtBrsC,KAAKs1B,SAEL,IAAIpgB,GAAKlV,IACTA,MAAKu1B,KAAKE,QAAQnhB,GAAG,eAAgB,WACnCY,EAAGyb,IAAI2b,cAAc5+B,MAAMzF,IAAMiN,EAAGqgB,KAAKC,SAAS+W,UAAY,OApFlE,GAAI5rC,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BqC,EAAYrC,EAAoB,IAChC0B,EAAW1B,EAAoB,GAqFnCwC,GAASwR,UAAY,GAAI3R,GAGzBG,EAASwR,UAAUs4B,SAAW,SAASx5B,EAAOy5B,GACvCzsC,KAAK+0B,OAAO5uB,eAAe6M,KAC9BhT,KAAK+0B,OAAO/hB,GAASy5B,GAEvBzsC,KAAKqsC,gBAAkB,GAGzB3pC,EAASwR,UAAUw4B,YAAc,SAAS15B,EAAOy5B,GAC/CzsC,KAAK+0B,OAAO/hB,GAASy5B,GAGvB/pC,EAASwR,UAAUy4B,YAAc,SAAS35B,GACpChT,KAAK+0B,OAAO5uB,eAAe6M,WACtBhT,MAAK+0B,OAAO/hB,GACnBhT,KAAKqsC,gBAAkB,IAK3B3pC,EAASwR,UAAUD,WAAa,SAAU/E,GACxC,GAAIA,EAAS,CACX,GAAIuT,IAAS,CACTziB,MAAKkP,QAAQimB,aAAejmB,EAAQimB,aAAuCtuB,SAAxBqI,EAAQimB,cAC7D1S,GAAS,EAEX,IAAI9T,IACF,cACA,kBACA,kBACA,QACA,mBACA,mBACA,eACA,eACA,YACA,QACA,UACA,cACA,QACA,SACA,aAEFhO,GAAKyF,gBAAgBuI,EAAQ3O,KAAKkP,QAASA,GAE3ClP,KAAK6rC,SAAW5nC,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAEhD,GAAVwX,GAAkBziB,KAAK2wB,IAAIrQ,QAC7BtgB,KAAK8mC,OACL9mC,KAAK+mC,UASXrkC,EAASwR,UAAUohB,QAAU,WAC3Bt1B,KAAK2wB,IAAIrQ,MAAQtO,SAASM,cAAc,OACxCtS,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAKkP,QAAQoE,MAC1CtT,KAAK2wB,IAAIrQ,MAAM5S,MAAM6F,OAASvT,KAAKuT,OAEnCvT,KAAK2wB,IAAI2b,cAAgBt6B,SAASM,cAAc,OAChDtS,KAAK2wB,IAAI2b,cAAc5+B,MAAM4F,MAAQ,OACrCtT,KAAK2wB,IAAI2b,cAAc5+B,MAAM6F,OAASvT,KAAKuT,OAC3CvT,KAAK2wB,IAAI2b,cAAc5+B,MAAMkX,SAAW,WAGxC5kB,KAAK8qC,IAAM94B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAK8qC,IAAIp9B,MAAMkX,SAAW,WAC1B5kB,KAAK8qC,IAAIp9B,MAAMzF,IAAM,MACrBjI,KAAK8qC,IAAIp9B,MAAM6F,OAAS,OACxBvT,KAAK8qC,IAAIp9B,MAAM4F,MAAQ,OACvBtT,KAAK8qC,IAAIp9B,MAAMk/B,QAAU,QACzB5sC,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAK8qC;EAGlCpoC,EAASwR,UAAU24B,kBAAoB,WACrCjsC,EAAQ0Q,gBAAgBtR,KAAKmsC,YAE7B,IAAI35B,GACA+4B,EAAYvrC,KAAKkP,QAAQq8B,UACzBuB,EAAa,GACbC,EAAa,EACbt6B,EAAIs6B,EAAa,GAAMD,CAGzBt6B,GAD8B,QAA5BxS,KAAKkP,QAAQimB,YACX4X,EAGA/sC,KAAKsT,MAAQi4B,EAAYwB,CAG/B,KAAK,GAAI9T,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,KACvIj5B,KAAK+0B,OAAOkE,GAAS+T,SAASx6B,EAAGC,EAAGzS,KAAKmsC,YAAansC,KAAK8qC,IAAKS,EAAWuB,GAC3Er6B,GAAKq6B,EAAaC,GAKxBnsC,GAAQ+Q,gBAAgB3R,KAAKmsC,aAC7BnsC,KAAKosC,cAAe,GAGtB1pC,EAASwR,UAAU+4B,cAAgB,WACR,GAArBjtC,KAAKosC,eACPxrC,EAAQ0Q,gBAAgBtR,KAAKmsC,aAC7BvrC,EAAQ+Q,gBAAgB3R,KAAKmsC,aAC7BnsC,KAAKosC,cAAe,IAOxB1pC,EAASwR,UAAU6yB,KAAO,WACxB/mC,KAAK05B,QAAS,EACT15B,KAAK2wB,IAAIrQ,MAAMnW,aACc,QAA5BnK,KAAKkP,QAAQimB,YACfn1B,KAAKu1B,KAAK5E,IAAI9oB,KAAKqK,YAAYlS,KAAK2wB,IAAIrQ,OAGxCtgB,KAAKu1B,KAAK5E,IAAItI,MAAMnW,YAAYlS,KAAK2wB,IAAIrQ,QAIxCtgB,KAAK2wB,IAAI2b,cAAcniC,YAC1BnK,KAAKu1B,KAAK5E,IAAIuc,qBAAqBh7B,YAAYlS,KAAK2wB,IAAI2b,gBAO5D5pC,EAASwR,UAAU4yB,KAAO,WACxB9mC,KAAK05B,QAAS,EACV15B,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,OAG7CtgB,KAAK2wB,IAAI2b,cAAcniC,YACzBnK,KAAK2wB,IAAI2b,cAAcniC,WAAWyH,YAAY5R,KAAK2wB,IAAI2b,gBAU3D5pC,EAASwR,UAAUigB,SAAW,SAAU9jB,EAAOC,GAC1B,GAAftQ,KAAKksC,QAA8C,GAA3BlsC,KAAKkP,QAAQquB,YAA2C,IAArBv9B,KAAKgsC,cAC9D37B,EAAQ,IACVA,EAAQ,GAGZrQ,KAAKs2B,MAAMjmB,MAAQA,EACnBrQ,KAAKs2B,MAAMhmB,IAAMA,GAOnB5N,EAASwR,UAAUuO,OAAS,WAC1B,GAAIonB,IAAU,EACVsD,EAAe,CAGnBntC,MAAK2wB,IAAI2b,cAAc5+B,MAAMzF,IAAMjI,KAAKu1B,KAAKC,SAAS+W,UAAY,IAElE,KAAK,GAAItT,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,IACvIkU,IAIN,IAA2B,GAAvBntC,KAAKqsC,gBAAuC,GAAhBc,EAC9BntC,KAAK8mC,WAEF,CACH9mC,KAAK+mC,OACL/mC,KAAKuT,OAAStP,OAAOjE,KAAKwrC,aAAa99B,MAAM6F,OAAOtI,QAAQ,KAAK,KAGjEjL,KAAK2wB,IAAI2b,cAAc5+B,MAAM6F,OAASvT,KAAKuT,OAAS,KACpDvT,KAAKsT,MAAgC,GAAxBtT,KAAKkP,QAAQua,QAAkBxlB,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAAO,CAEjG,IAAI5E,GAAQrG,KAAKqG,MACbia,EAAQtgB,KAAK2wB,IAAIrQ,KAGrBA,GAAMlY,UAAY,WAGlBpI,KAAKotC,oBAEL,IAAIjY,GAAcn1B,KAAKkP,QAAQimB,YAC3B6V,EAAkBhrC,KAAKkP,QAAQ87B,gBAC/BC,EAAkBjrC,KAAKkP,QAAQ+7B,eAGnC5kC,GAAMgnC,iBAAmBrC,EAAkB3kC,EAAMinC,gBAAkB,EACnEjnC,EAAMknC,iBAAmBtC,EAAkB5kC,EAAMmnC,gBAAkB,EAEnEnnC,EAAMonC,eAAiBztC,KAAKu1B,KAAK5E,IAAIuc,qBAAqBlc,YAAchxB,KAAKisC,WAAajsC,KAAKsT,MAAQ,EAAItT,KAAKkP,QAAQk8B,iBACxH/kC,EAAMqnC,gBAAkB,EACxBrnC,EAAMsnC,eAAiB3tC,KAAKu1B,KAAK5E,IAAIuc,qBAAqBlc,YAAchxB,KAAKisC,WAAajsC,KAAKsT,MAAQ,EAAItT,KAAKkP,QAAQi8B,iBACxH9kC,EAAMunC,gBAAkB,EAGL,QAAfzY,GACF7U,EAAM5S,MAAMzF,IAAM,IAClBqY,EAAM5S,MAAM7F,KAAO,IACnByY,EAAM5S,MAAM4W,OAAS,GACrBhE,EAAM5S,MAAM4F,MAAQtT,KAAKsT,MAAQ,KACjCgN,EAAM5S,MAAM6F,OAASvT,KAAKuT,OAAS,KACnCvT,KAAKqG,MAAMiN,MAAQtT,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAC3CtT,KAAKqG,MAAMkN,OAASvT,KAAKu1B,KAAKC,SAAS3tB,KAAK0L,SAG5C+M,EAAM5S,MAAMzF,IAAM,GAClBqY,EAAM5S,MAAM4W,OAAS,IACrBhE,EAAM5S,MAAM7F,KAAO,IACnByY,EAAM5S,MAAM4F,MAAQtT,KAAKsT,MAAQ,KACjCgN,EAAM5S,MAAM6F,OAASvT,KAAKuT,OAAS,KACnCvT,KAAKqG,MAAMiN,MAAQtT,KAAKu1B,KAAKC,SAASnN,MAAM/U,MAC5CtT,KAAKqG,MAAMkN,OAASvT,KAAKu1B,KAAKC,SAASnN,MAAM9U,QAG/Cs2B,EAAU7pC,KAAK6tC,gBACfhE,EAAU7pC,KAAK4pC,cAAgBC,EAEL,GAAtB7pC,KAAKkP,QAAQg8B,MACflrC,KAAK6sC,oBAGL7sC,KAAKitC,gBAGPjtC,KAAK8tC,aAAa3Y,GAEpB,MAAO0U,IAOTnnC,EAASwR,UAAU25B,cAAgB,WACjC,GAAIhE,IAAU,CACdjpC,GAAQ0Q,gBAAgBtR,KAAKyrC,YAAYC,OACzC9qC,EAAQ0Q,gBAAgBtR,KAAKyrC,YAAYE,OAEzC,IAAIxW,GAAcn1B,KAAKkP,QAAqB,YAGxCkuB,EAAcp9B,KAAKksC,OAASlsC,KAAKqG,MAAMmnC,iBAAmB,GAAKxtC,KAAK+rC,iBAEpE5iB,EAAO,GAAIvnB,GACb5B,KAAKs2B,MAAMjmB,MACXrQ,KAAKs2B,MAAMhmB,IACX8sB,EACAp9B,KAAK2wB,IAAIrQ,MAAM4Q,aACflxB,KAAKkP,QAAQouB,YAAYt9B,KAAKkP,QAAQimB,aACvB,GAAfn1B,KAAKksC,QAAmBlsC,KAAKkP,QAAQquB,WAGvCv9B,MAAKmpB,KAAOA,CAGZ,IAAI2iB,IAAc9rC,KAAK2wB,IAAIrQ,MAAM4Q,aAAgB/H,EAAKyU,WAAa59B,KAAK2wB,IAAIrQ,MAAM4Q,aAAe/H,EAAKwV,gBAAoBxV,EAAKwV,YAAcxV,EAAKyU,WAAazU,EAAKA,KAEpKnpB,MAAK8rC,WAAaA,CAElB,IAAIiC,GAAgB/tC,KAAKuT,OAASu4B,EAC9BkC,EAAiB,CAGrB,IAAmB,GAAfhuC,KAAKksC,OAAiB,CACxBJ,EAAa9rC,KAAK+rC,iBAClBiC,EAAiBxpC,KAAK+pB,MAAOvuB,KAAK2wB,IAAIrQ,MAAM4Q,aAAe4a,EAAciC,EACzE,KAAK,GAAIloC,GAAI,EAAO,GAAMmoC,EAAVnoC,EAA0BA,IACxCsjB,EAAK2V,UAIP,IAFAiP,EAAgB/tC,KAAKuT,OAASu4B,EAEL,IAArB9rC,KAAKgsC,cAAiD,GAA3BhsC,KAAKkP,QAAQquB,WAAoB,CAC9D,GAAI0Q,GAAsB9kB,EAAKwU,UAAYxU,EAAKA,KAAQnpB,KAAKgsC,YAC7D,IAAIiC,EAAqB,EACvB,IAAK,GAAIpoC,GAAI,EAAOooC,EAAJpoC,EAAwBA,IAAMsjB,EAAKE,WAEhD,IAAyB,EAArB4kB,EACP,IAAK,GAAIpoC,GAAI,GAAQooC,EAALpoC,EAAyBA,IAAMsjB,EAAK2V,gBAKxDiP,IAAiB,GAInB/tC,MAAKkuC,YAAc/kB,EAAKwU,SACxB,IAMIoB,GANAoP,EAAiB,EAGjB/pC,EAAM,CAI8ByC,UAArC7G,KAAKkP,QAAQq0B,OAAOpO,KACrB4J,EAAW/+B,KAAKkP,QAAQq0B,OAAOpO,GAAa4J,UAG9C/+B,KAAKouC,aAAe,CAEpB,KADA,GAAI37B,GAAI,EACDrO,EAAMI,KAAK+pB,MAAMwf,IAAgB,CACtC5kB,EAAKE,OACL5W,EAAIjO,KAAK+pB,MAAMnqB,EAAM0nC,GACrBqC,EAAiB/pC,EAAM0nC,CACvB,IAAI5M,GAAU/V,EAAK+V,WAEfl/B,KAAKkP,QAAyB,iBAAgB,GAAXgwB,GAAmC,GAAfl/B,KAAKksC,QAAsD,GAAnClsC,KAAKkP,QAAyB,kBAC/GlP,KAAKquC,aAAa57B,EAAI,EAAG0W,EAAKC,WAAW2V,GAAW5J,EAAa,cAAen1B,KAAKqG,MAAMinC,iBAGzFpO,GAAWl/B,KAAKkP,QAAyB,iBAAoB,GAAflP,KAAKksC,QAChB,GAAnClsC,KAAKkP,QAAyB,iBAA6B,GAAflP,KAAKksC,QAA8B,GAAXhN,GAClEzsB,GAAK,GACPzS,KAAKquC,aAAa57B,EAAI,EAAG0W,EAAKC,WAAW2V,GAAW5J,EAAa,cAAen1B,KAAKqG,MAAMmnC,iBAE7FxtC,KAAKsuC,YAAY77B,EAAG0iB,EAAa,wBAAyBn1B,KAAKkP,QAAQi8B,iBAAkBnrC,KAAKqG,MAAMsnC,iBAGpG3tC,KAAKsuC,YAAY77B,EAAG0iB,EAAa,wBAAyBn1B,KAAKkP,QAAQk8B,iBAAkBprC,KAAKqG,MAAMonC,gBAGnF,GAAfztC,KAAKksC,QAAkC,GAAhB/iB,EAAK4S,UAC9B/7B,KAAKgsC,aAAe5nC,GAGtBA,IAIApE,KAAK4rC,iBADY,GAAf5rC,KAAKksC,OACiBz5B,GAAKzS,KAAKkuC,YAAc/kB,EAAK4S,SAG7B/7B,KAAK2wB,IAAIrQ,MAAM4Q,aAAe/H,EAAKwV,WAI7D,IAAI4P,GAAa,CACuB1nC,UAApC7G,KAAKkP,QAAQq4B,MAAMpS,IAAuEtuB,SAAzC7G,KAAKkP,QAAQq4B,MAAMpS,GAAa7K,OACnFikB,EAAavuC,KAAKqG,MAAMmoC,gBAE1B,IAAI9jB,GAA+B,GAAtB1qB,KAAKkP,QAAQg8B,MAAgB1mC,KAAKJ,IAAIpE,KAAKkP,QAAQq8B,UAAWgD,GAAcvuC,KAAKkP,QAAQm8B,aAAe,GAAKkD,EAAavuC,KAAKkP,QAAQm8B,aAAe,EA0BnK,OAvBIrrC,MAAKouC,aAAgBpuC,KAAKsT,MAAQoX,GAAmC,GAAxB1qB,KAAKkP,QAAQua,SAC5DzpB,KAAKsT,MAAQtT,KAAKouC,aAAe1jB,EACjC1qB,KAAKkP,QAAQoE,MAAQtT,KAAKsT,MAAQ,KAClC1S,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYC,OACzC9qC,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYE,QACzC3rC,KAAKyiB,SACLonB,GAAU,GAGH7pC,KAAKouC,aAAgBpuC,KAAKsT,MAAQoX,GAAmC,GAAxB1qB,KAAKkP,QAAQua,SAAmBzpB,KAAKsT,MAAQtT,KAAK6rC,UACtG7rC,KAAKsT,MAAQ9O,KAAKJ,IAAIpE,KAAK6rC,SAAS7rC,KAAKouC,aAAe1jB,GACxD1qB,KAAKkP,QAAQoE,MAAQtT,KAAKsT,MAAQ,KAClC1S,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYC,OACzC9qC,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYE,QACzC3rC,KAAKyiB,SACLonB,GAAU,IAGVjpC,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYC,OACzC9qC,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYE,QACzC9B,GAAU,GAGLA,GAGTnnC,EAASwR,UAAUu6B,aAAe,SAAUnqC,GAC1C,GAAIoqC,GAAgB1uC,KAAKkuC,YAAc5pC,EACnCqqC,EAAiBD,EAAgB1uC,KAAK4rC,gBAC1C,OAAO+C,IAGTjsC,EAASwR,UAAUylB,cAAgB,SAAUnnB,GAC3C,MAAOxS,MAAKkuC,YAAe17B,EAAIxS,KAAK4rC,kBAYtClpC,EAASwR,UAAUm6B,aAAe,SAAU57B,EAAG6X,EAAM6K,EAAa/sB,EAAWwmC,GAE3E,GAAI57B,GAAQpS,EAAQuR,cAAc,MAAMnS,KAAKyrC,YAAYE,OAAQ3rC,KAAK2wB,IAAIrQ,MAC1EtN,GAAM5K,UAAYA,EAClB4K,EAAMiS,UAAYqF,EACC,QAAf6K,GACFniB,EAAMtF,MAAM7F,KAAO,IAAM7H,KAAKkP,QAAQm8B,aAAe,KACrDr4B,EAAMtF,MAAM4b,UAAY,UAGxBtW,EAAMtF,MAAM2a,MAAQ,IAAMroB,KAAKkP,QAAQm8B,aAAe,KACtDr4B,EAAMtF,MAAM4b,UAAY,QAG1BtW,EAAMtF,MAAMzF,IAAMwK,EAAI,GAAMm8B,EAAkB5uC,KAAKkP,QAAQo8B,aAAe,KAE1EhhB,GAAQ,EAER,IAAIukB,GAAerqC,KAAKJ,IAAIpE,KAAKqG,MAAMyoC,eAAe9uC,KAAKqG,MAAM0oC,eAC7D/uC,MAAKouC,aAAe9jB,EAAKtkB,OAAS6oC,IACpC7uC,KAAKouC,aAAe9jB,EAAKtkB,OAAS6oC,IAYtCnsC,EAASwR,UAAUo6B,YAAc,SAAU77B,EAAG0iB,EAAa/sB,EAAWsiB,EAAQpX,GAC5E,GAAmB,GAAftT,KAAKksC,OAAgB,CACvB,GAAIzb,GAAO7vB,EAAQuR,cAAc,MAAMnS,KAAKyrC,YAAYC,MAAO1rC,KAAK2wB,IAAI2b,cACxE7b,GAAKroB,UAAYA,EACjBqoB,EAAKxL,UAAY,GAEE,QAAfkQ,EACF1E,EAAK/iB,MAAM7F,KAAQ7H,KAAKsT,MAAQoX,EAAU,KAG1C+F,EAAK/iB,MAAM2a,MAASroB,KAAKsT,MAAQoX,EAAU,KAG7C+F,EAAK/iB,MAAM4F,MAAQA,EAAQ,KAC3Bmd,EAAK/iB,MAAMzF,IAAMwK,EAAI,OASzB/P,EAASwR,UAAU45B,aAAe,SAAU3Y,GAI1C,GAHAv0B,EAAQ0Q,gBAAgBtR,KAAKyrC,YAAYlE,OAGD1gC,SAApC7G,KAAKkP,QAAQq4B,MAAMpS,IAAuEtuB,SAAzC7G,KAAKkP,QAAQq4B,MAAMpS,GAAa7K,KAAoB,CACvG,GAAIid,GAAQ3mC,EAAQuR,cAAc,MAAOnS,KAAKyrC,YAAYlE,MAAOvnC,KAAK2wB,IAAIrQ,MAC1EinB,GAAMn/B,UAAY,eAAiB+sB,EACnCoS,EAAMtiB,UAAYjlB,KAAKkP,QAAQq4B,MAAMpS,GAAa7K,KAGJzjB,SAA1C7G,KAAKkP,QAAQq4B,MAAMpS,GAAaznB,OAClC/M,EAAKoN,WAAWw5B,EAAOvnC,KAAKkP,QAAQq4B,MAAMpS,GAAaznB,OAGtC,QAAfynB,EACFoS,EAAM75B,MAAM7F,KAAO7H,KAAKqG,MAAMmoC,gBAAkB,KAGhDjH,EAAM75B,MAAM2a,MAAQroB,KAAKqG,MAAMmoC,gBAAkB,KAGnDjH,EAAM75B,MAAM4F,MAAQtT,KAAKuT,OAAS,KAIpC3S,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYlE,QAW3C7kC,EAASwR,UAAUk5B,mBAAqB,WAEtC,KAAM,mBAAqBptC,MAAKqG,OAAQ,CACtC,GAAI2oC,GAAYh9B,SAASi9B,eAAe,KACpCC,EAAmBl9B,SAASM,cAAc,MAC9C48B,GAAiB9mC,UAAY,sBAC7B8mC,EAAiBh9B,YAAY88B,GAC7BhvC,KAAK2wB,IAAIrQ,MAAMpO,YAAYg9B,GAE3BlvC,KAAKqG,MAAMinC,gBAAkB4B,EAAiBrpB,aAC9C7lB,KAAKqG,MAAM0oC,eAAiBG,EAAiB1uB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAYs9B,GAG7B,KAAM,mBAAqBlvC,MAAKqG,OAAQ,CACtC,GAAI8oC,GAAYn9B,SAASi9B,eAAe,KACpCG,EAAmBp9B,SAASM,cAAc,MAC9C88B,GAAiBhnC,UAAY,sBAC7BgnC,EAAiBl9B,YAAYi9B,GAC7BnvC,KAAK2wB,IAAIrQ,MAAMpO,YAAYk9B,GAE3BpvC,KAAKqG,MAAMmnC,gBAAkB4B,EAAiBvpB,aAC9C7lB,KAAKqG,MAAMyoC,eAAiBM,EAAiB5uB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAYw9B,GAG7B,KAAM,mBAAqBpvC,MAAKqG,OAAQ,CACtC,GAAIgpC,GAAYr9B,SAASi9B,eAAe,KACpCK,EAAmBt9B,SAASM,cAAc,MAC9Cg9B,GAAiBlnC,UAAY,sBAC7BknC,EAAiBp9B,YAAYm9B,GAC7BrvC,KAAK2wB,IAAIrQ,MAAMpO,YAAYo9B,GAE3BtvC,KAAKqG,MAAMmoC,gBAAkBc,EAAiBzpB,aAC9C7lB,KAAKqG,MAAMkpC,eAAiBD,EAAiB9uB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAY09B,KAI/BzvC,EAAOD,QAAU8C,GAKb,SAAS7C,EAAQD,EAASM,GAkB9B,QAASyC,GAAY+P,EAAOumB,EAAS/pB,EAASsgC,GAC5CxvC,KAAKK,GAAK44B,CACV,IAAItqB,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAAW,aAAa,SAAS,aAC5F3O,MAAKkP,QAAUvO,EAAK+N,sBAAsBC,EAAOO,GACjDlP,KAAKyvC,kBAAwC5oC,SAApB6L,EAAMtK,UAC/BpI,KAAKwvC,yBAA2BA,EAChCxvC,KAAK0vC,aAAe,EACpB1vC,KAAK4V,OAAOlD,GACkB,GAA1B1S,KAAKyvC,oBACPzvC,KAAKwvC,yBAAyB,IAAM,GAEtCxvC,KAAK22B,aACL32B,KAAKypB,QAA4B5iB,SAAlB6L,EAAM+W,SAAwB,EAAO/W,EAAM+W,QA5B5D,GAAI9oB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9ByvC,EAAOzvC,EAAoB,IAC3B0vC,EAAM1vC,EAAoB,IAC1B2vC,EAAS3vC,EAAoB,GAgCjCyC,GAAWuR,UAAU8iB,SAAW,SAAS/0B,GAC1B,MAATA,GACFjC,KAAK22B,UAAY10B,EACQ,GAArBjC,KAAKkP,QAAQ+H,MACfjX,KAAK22B,UAAU1f,KAAK,SAAUrR,EAAEa,GAAI,MAAOb,GAAE4M,EAAI/L,EAAE+L,KAIrDxS,KAAK22B,cASTh0B,EAAWuR,UAAU47B,gBAAkB,SAASvpB,GAC9CvmB,KAAK0vC,aAAenpB,GAQtB5jB,EAAWuR,UAAUD,WAAa,SAAS/E,GACzC,GAAgBrI,SAAZqI,EAAuB,CACzB,GAAIP,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAC3DhO,GAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAASA,GAE/CvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UAEpCA,EAAQ6gC,YACuB,gBAAtB7gC,GAAQ6gC,YACb7gC,EAAQ6gC,WAAWC,kBACqB,WAAtC9gC,EAAQ6gC,WAAWC,gBACrBhwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,EAEa,WAAtC/gC,EAAQ6gC,WAAWC,gBAC1BhwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,GAGhCjwC,KAAKkP,QAAQ6gC,WAAWC,gBAAkB,cAC1ChwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,KAOhB,QAAtBjwC,KAAKkP,QAAQxB,MACf1N,KAAKmH,KAAO,GAAIwoC,GAAK3vC,KAAKK,GAAIL,KAAKkP,SAEN,OAAtBlP,KAAKkP,QAAQxB,MACpB1N,KAAKmH,KAAO,GAAIyoC,GAAI5vC,KAAKK,GAAIL,KAAKkP,SAEL,UAAtBlP,KAAKkP,QAAQxB,QACpB1N,KAAKmH,KAAO,GAAI0oC,GAAO7vC,KAAKK,GAAIL,KAAKkP,WASzCvM,EAAWuR,UAAU0B,OAAS,SAASlD,GACrC1S,KAAK0S,MAAQA,EACb1S,KAAKmT,QAAUT,EAAMS,SAAW,QAChCnT,KAAKoI,UAAYsK,EAAMtK,WAAapI,KAAKoI,WAAa,aAAepI,KAAKwvC,yBAAyB,GAAK,GACxGxvC,KAAKypB,QAA4B5iB,SAAlB6L,EAAM+W,SAAwB,EAAO/W,EAAM+W,QAC1DzpB,KAAK0N,MAAQgF,EAAMhF,MACnB1N,KAAKiU,WAAWvB,EAAMxD,UAcxBvM,EAAWuR,UAAU84B,SAAW,SAASx6B,EAAGC,EAAGlB,EAAe2+B,EAAc3E,EAAWuB,GACrF,GACIqD,GAAMC,EADNC,EAA0B,GAAbvD,EAGbwD,EAAU1vC,EAAQiR,cAAc,OAAQN,EAAe2+B,EAO3D,IANAI,EAAQx9B,eAAe,KAAM,IAAKN,GAClC89B,EAAQx9B,eAAe,KAAM,IAAKL,EAAI49B,GACtCC,EAAQx9B,eAAe,KAAM,QAASy4B,GACtC+E,EAAQx9B,eAAe,KAAM,SAAU,EAAEu9B,GACzCC,EAAQx9B,eAAe,KAAM,QAAS,WAEZ,QAAtB9S,KAAKkP,QAAQxB,MACfyiC,EAAOvvC,EAAQiR,cAAc,OAAQN,EAAe2+B,GACpDC,EAAKr9B,eAAe,KAAM,QAAS9S,KAAKoI,WACtBvB,SAAf7G,KAAK0N,OACNyiC,EAAKr9B,eAAe,KAAM,QAAS9S,KAAK0N,OAG1CyiC,EAAKr9B,eAAe,KAAM,IAAK,IAAMN,EAAI,IAAIC,EAAE,MAAQD,EAAI+4B,GAAa,IAAI94B,GACzC,GAA/BzS,KAAKkP,QAAQqhC,OAAOphC,UACtBihC,EAAWxvC,EAAQiR,cAAc,OAAQN,EAAe2+B,GACjB,OAAnClwC,KAAKkP,QAAQqhC,OAAOpb,YACtBib,EAASt9B,eAAe,KAAM,IAAK,IAAIN,EAAE,MAAQC,EAAI49B,GACnD,IAAI79B,EAAE,IAAIC,EAAE,MAAOD,EAAI+4B,GAAa,IAAI94B,EAAE,MAAOD,EAAI+4B,GAAa,KAAO94B,EAAI49B,IAG/ED,EAASt9B,eAAe,KAAM,IAAK,IAAIN,EAAE,IAAIC,EAAE,KACzCD,EAAE,KAAOC,EAAI49B,GAAc,MACzB79B,EAAI+4B,GAAa,KAAO94B,EAAI49B,GAClC,KAAM79B,EAAI+4B,GAAa,IAAI94B,GAE/B29B,EAASt9B,eAAe,KAAM,QAAS9S,KAAKoI,UAAY,cAGnB,GAAnCpI,KAAKkP,QAAQ2D,WAAW1D,SAC1BvO,EAAQ2R,UAAUC,EAAI,GAAM+4B,EAAU94B,EAAGzS,KAAMuR,EAAe2+B,OAG7D,CACH,GAAIM,GAAWhsC,KAAK+pB,MAAM,GAAMgd,GAC5BkF,EAAajsC,KAAK+pB,MAAM,GAAMue,GAC9B4D,EAAalsC,KAAK+pB,MAAM,IAAOue,GAE/BpiB,EAASlmB,KAAK+pB,OAAOgd,EAAa,EAAIiF,GAAW,EAErD5vC,GAAQyS,QAAQb,EAAI,GAAIg+B,EAAW9lB,EAAYjY,EAAI49B,EAAaI,EAAa,EAAGD,EAAUC,EAAYzwC,KAAKoI,UAAY,OAAQmJ,EAAe2+B,GAC9ItvC,EAAQyS,QAAQb,EAAI,IAAIg+B,EAAW9lB,EAAS,EAAGjY,EAAI49B,EAAaK,EAAa,EAAGF,EAAUE,EAAY1wC,KAAKoI,UAAY,OAAQmJ,EAAe2+B,KAYlJvtC,EAAWuR,UAAUilB,UAAY,SAASoS,EAAWuB,GACnD,GAAIhC,GAAM94B,SAASC,gBAAgB,6BAA6B,MAEhE,OADAjS,MAAKgtC,SAAS,EAAE,GAAIF,KAAchC,EAAIS,EAAUuB,IACxC6D,KAAM7F,EAAK93B,MAAOhT,KAAKmT,QAASgiB,YAAYn1B,KAAKkP,QAAQ0hC,mBAGnEjuC,EAAWuR,UAAU28B,UAAY,SAASC,GACxC,MAAO9wC,MAAKmH,KAAK0pC,UAAUC,IAG7BnuC,EAAWuR,UAAU68B,KAAO,SAAS9Y,EAASvlB,EAAOs+B,GACnDhxC,KAAKmH,KAAK4pC,KAAK9Y,EAASvlB,EAAOs+B,IAIjCnxC,EAAOD,QAAU+C,GAKb,SAAS9C,EAAQD,EAASM,GAY9B,QAAS0C,GAAOq2B,EAASxlB,EAAMijB,GAC7B12B,KAAKi5B,QAAUA,EACfj5B,KAAKojC,aACLpjC,KAAK0oC,cAAgB,EACrB1oC,KAAKixC,gBAAkBx9B,GAAQA,EAAKy9B,cACpClxC,KAAK02B,QAAUA,EAEf12B,KAAK2wB,OACL3wB,KAAKqG,OACH2M,OACEM,MAAO,EACPC,OAAQ,IAGZvT,KAAKoI,UAAY,KAEjBpI,KAAKiC,SACLjC,KAAKmxC,gBACLnxC,KAAKqP,cACH+hC,WACAC,UAEFrxC,KAAKsxC,kBAAmB,CACxB,IAAIp8B,GAAKlV,IACTA,MAAK02B,QAAQnB,KAAKE,QAAQnhB,GAAG,mBAAoB,WAC/CY,EAAGo8B,kBAAmB,IAGxBtxC,KAAKs1B,UAELt1B,KAAK+Y,QAAQtF,GAxCf,CAAA,GAAI9S,GAAOT,EAAoB,GAC3B4B,EAAQ5B,EAAoB,GAChBA,GAAoB,IA6CpC0C,EAAMsR,UAAUohB,QAAU,WACxB,GAAItiB,GAAQhB,SAASM,cAAc,MACnCU,GAAM5K,UAAY,SAClBpI,KAAK2wB,IAAI3d,MAAQA,CAEjB,IAAIu+B,GAAQv/B,SAASM,cAAc,MACnCi/B,GAAMnpC,UAAY,QAClB4K,EAAMd,YAAYq/B,GAClBvxC,KAAK2wB,IAAI4gB,MAAQA,CAEjB,IAAIxY,GAAa/mB,SAASM,cAAc,MACxCymB,GAAW3wB,UAAY,QACvB2wB,EAAW,kBAAoB/4B,KAC/BA,KAAK2wB,IAAIoI,WAAaA,EAEtB/4B,KAAK2wB,IAAI9jB,WAAamF,SAASM,cAAc,OAC7CtS,KAAK2wB,IAAI9jB,WAAWzE,UAAY,QAEhCpI,KAAK2wB,IAAIoS,KAAO/wB,SAASM,cAAc,OACvCtS,KAAK2wB,IAAIoS,KAAK36B,UAAY,QAK1BpI,KAAK2wB,IAAI6gB,OAASx/B,SAASM,cAAc,OACzCtS,KAAK2wB,IAAI6gB,OAAO9jC,MAAM2rB,WAAa,SACnCr5B,KAAK2wB,IAAI6gB,OAAOvsB,UAAY,IAC5BjlB,KAAK2wB,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAI6gB,SAO3C5uC,EAAMsR,UAAU6E,QAAU,SAAStF,GAEjC,GAAIN,GAAUM,GAAQA,EAAKN,OACvBA,aAAmBy0B,SACrB5nC,KAAK2wB,IAAI4gB,MAAMr/B,YAAYiB,GAG3BnT,KAAK2wB,IAAI4gB,MAAMtsB,UADIpe,SAAZsM,GAAqC,OAAZA,EACLA,EAGAnT,KAAKi5B,SAAW,GAI7Cj5B,KAAK2wB,IAAI3d,MAAMu0B,MAAQ9zB,GAAQA,EAAK8zB,OAAS,GAExCvnC,KAAK2wB,IAAI4gB,MAAM5sB,WAIlBhkB,EAAK8H,gBAAgBzI,KAAK2wB,IAAI4gB,MAAO,UAHrC5wC,EAAKwH,aAAanI,KAAK2wB,IAAI4gB,MAAO,SAOpC,IAAInpC,GAAYqL,GAAQA,EAAKrL,WAAa,IACtCA,IAAapI,KAAKoI,YAChBpI,KAAKoI,YACPzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAI3d,MAAOhT,KAAKoI,WAC1CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAIoI,WAAY/4B,KAAKoI,WAC/CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAI9jB,WAAY7M,KAAKoI,WAC/CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAIoS,KAAM/iC,KAAKoI,YAE3CzH,EAAKwH,aAAanI,KAAK2wB,IAAI3d,MAAO5K,GAClCzH,EAAKwH,aAAanI,KAAK2wB,IAAIoI,WAAY3wB,GACvCzH,EAAKwH,aAAanI,KAAK2wB,IAAI9jB,WAAYzE,GACvCzH,EAAKwH,aAAanI,KAAK2wB,IAAIoS,KAAM36B,GACjCpI,KAAKoI,UAAYA,GAIfpI,KAAK0N,QACP/M,EAAKuN,cAAclO,KAAK2wB,IAAI3d,MAAOhT,KAAK0N,OACxC1N,KAAK0N,MAAQ,MAEX+F,GAAQA,EAAK/F,QACf/M,EAAKoN,WAAW/N,KAAK2wB,IAAI3d,MAAOS,EAAK/F,OACrC1N,KAAK0N,MAAQ+F,EAAK/F,QAQtB9K,EAAMsR,UAAUu9B,cAAgB,WAC9B,MAAOzxC,MAAKqG,MAAM2M,MAAMM,OAW1B1Q,EAAMsR,UAAUuO,OAAS,SAAS6T,EAAO3b,EAAQ+2B,GAC/C,GAAI7H,IAAU,EAIV8H,EAAe3xC,KAAK2wB,IAAI6gB,OAAO3rB,YAanC,IAZI8rB,GAAgB3xC,KAAK4xC,mBACvB5xC,KAAK4xC,iBAAmBD,EAExBhxC,EAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GACjCA,EAAK22B,OAAQ,EACT32B,EAAK02B,WAAW12B,EAAK2S,WAG3BivB,GAAU,GAI8B,kBAA/B1xC,MAAK02B,QAAQxnB,QAAQsH,MAAsB,CAGpD,GAAIk7B,EAAS,CAIX,GAAIx8B,GAAKlV,KACLmpC,GAAY,CAChBxoC,GAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GAC5BA,EAAK02B,YACR12B,EAAK2S,SACLvN,EAAGi8B,aAAa5oC,KAAKuH,IAEvBA,EAAKm3B,YAAYkC,IAInB,IAAI0I,GAAqB7xC,KAAKqP,aAAa+hC,QAAQrlC,QAAQkL,KAAK,SAAUrR,EAAGa,GAC3E,MAAOyO,GAAGwhB,QAAQxnB,QAAQsH,MAAM5Q,EAAE6N,KAAMhN,EAAEgN,OAE5C3R,GAAMA,MAAM+vC,EAAoBl3B,GAAQ,GAG1C3a,KAAKmxC,aAAenxC,KAAK8xC,oBAAoB9xC,KAAKqP,aAAcrP,KAAKmxC,aAAc7a,OAInFt2B,MAAKmxC,aAAenxC,KAAK8xC,oBAAoB9xC,KAAKqP,aAAcrP,KAAKmxC,aAAc7a,GAE/Et2B,KAAK02B,QAAQxnB,QAAQpN,MACvBA,EAAMA,MAAM9B,KAAKmxC,aAAcx2B,EAAQ+2B,GAGvC5vC,EAAMqhC,QAAQnjC,KAAKmxC,aAAcx2B,EAAQ3a,KAAKojC,UAKlD,IAAI7vB,GAASvT,KAAK+xC,iBAAiBp3B,GAG/Boe,EAAa/4B,KAAK2wB,IAAIoI,UAC1B/4B,MAAKiI,IAAM8wB,EAAWiZ,UACtBhyC,KAAK6H,KAAOkxB,EAAWkZ,WACvBjyC,KAAKsT,MAAQylB,EAAW/H,YACxB6Y,EAAUlpC,EAAKqI,eAAehJ,KAAM,SAAUuT,IAAWs2B,EAGzDA,EAAUlpC,EAAKqI,eAAehJ,KAAKqG,MAAM2M,MAAO,QAAShT,KAAK2wB,IAAI4gB,MAAM/wB,cAAgBqpB,EACxFA,EAAUlpC,EAAKqI,eAAehJ,KAAKqG,MAAM2M,MAAO,SAAUhT,KAAK2wB,IAAI4gB,MAAM1rB,eAAiBgkB,EAG1F7pC,KAAK2wB,IAAI9jB,WAAWa,MAAM6F,OAAUA,EAAS,KAC7CvT,KAAK2wB,IAAIoI,WAAWrrB,MAAM6F,OAAUA,EAAS,KAC7CvT,KAAK2wB,IAAI3d,MAAMtF,MAAM6F,OAASA,EAAS,IAGvC,KAAK,GAAI1N,GAAI,EAAGqsC,EAAKlyC,KAAKmxC,aAAanrC,OAAYksC,EAAJrsC,EAAQA,IAAK,CAC1D,GAAIiK,GAAO9P,KAAKmxC,aAAatrC,EAC7BiK,GAAKo3B,YAAYvsB,GAGnB,MAAOkvB,IASTjnC,EAAMsR,UAAU69B,iBAAmB,SAAUp3B,GAE3C,GAAIpH,GACA49B,EAAenxC,KAAKmxC,YAGxBnxC,MAAKmyC,gBACL,IAAIj9B,GAAKlV,IACT,IAAImxC,EAAanrC,OAAQ,CACvB,GAAI7B,GAAMgtC,EAAa,GAAGlpC,IACtB7D,EAAM+sC,EAAa,GAAGlpC,IAAMkpC,EAAa,GAAG59B,MAahD,IAZA5S,EAAKiI,QAAQuoC,EAAc,SAAUrhC,GACnC3L,EAAMK,KAAKL,IAAIA,EAAK2L,EAAK7H,KACzB7D,EAAMI,KAAKJ,IAAIA,EAAM0L,EAAK7H,IAAM6H,EAAKyD,QACV1M,SAAvBiJ,EAAK2D,KAAK6vB,WACZpuB,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU/vB,OAAS/O,KAAKJ,IAAI8Q,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU/vB,OAAOzD,EAAKyD,QAChG2B,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU7Z,SAAU,KAO3CtlB,EAAMwW,EAAOooB,KAAM,CAErB,GAAIrY,GAASvmB,EAAMwW,EAAOooB,IAC1B3+B,IAAOsmB,EACP/pB,EAAKiI,QAAQuoC,EAAc,SAAUrhC,GACnCA,EAAK7H,KAAOyiB,IAGhBnX,EAASnP,EAAMuW,EAAO7K,KAAK2W,SAAW,MAGtClT,GAASoH,EAAOooB,KAAOpoB,EAAO7K,KAAK2W,QAIrC,OAFAlT,GAAS/O,KAAKJ,IAAImP,EAAQvT,KAAKqG,MAAM2M,MAAMO,SAQ7C3Q,EAAMsR,UAAU6yB,KAAO,WAChB/mC,KAAK2wB,IAAI3d,MAAM7I,YAClBnK,KAAK02B,QAAQ/F,IAAIqI,SAAS9mB,YAAYlS,KAAK2wB,IAAI3d,OAG5ChT,KAAK2wB,IAAIoI,WAAW5uB,YACvBnK,KAAK02B,QAAQ/F,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAIoI,YAG9C/4B,KAAK2wB,IAAI9jB,WAAW1C,YACvBnK,KAAK02B,QAAQ/F,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAI9jB,YAG9C7M,KAAK2wB,IAAIoS,KAAK54B,YACjBnK,KAAK02B,QAAQ/F,IAAIoS,KAAK7wB,YAAYlS,KAAK2wB,IAAIoS,OAO/CngC,EAAMsR,UAAU4yB,KAAO,WACrB,GAAI9zB,GAAQhT,KAAK2wB,IAAI3d,KACjBA,GAAM7I,YACR6I,EAAM7I,WAAWyH,YAAYoB,EAG/B,IAAI+lB,GAAa/4B,KAAK2wB,IAAIoI,UACtBA,GAAW5uB,YACb4uB,EAAW5uB,WAAWyH,YAAYmnB,EAGpC,IAAIlsB,GAAa7M,KAAK2wB,IAAI9jB,UACtBA,GAAW1C,YACb0C,EAAW1C,WAAWyH,YAAY/E,EAGpC,IAAIk2B,GAAO/iC,KAAK2wB,IAAIoS,IAChBA,GAAK54B,YACP44B,EAAK54B,WAAWyH,YAAYmxB,IAQhCngC,EAAMsR,UAAUF,IAAM,SAASlE,GAc7B,GAbA9P,KAAKiC,MAAM6N,EAAKzP,IAAMyP,EACtBA,EAAK+2B,UAAU7mC,MAGY6G,SAAvBiJ,EAAK2D,KAAK6vB,WAC+Bz8B,SAAvC7G,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,YAC3BtjC,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,WAAa/vB,OAAO,EAAGkW,SAAS,EAAO/gB,MAAM1I,KAAK0oC,cAAezmC,UAC1FjC,KAAK0oC,iBAEP1oC,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,UAAUrhC,MAAMsG,KAAKuH,IAEhD9P,KAAKoyC,iBAEkC,IAAnCpyC,KAAKmxC,aAAanqC,QAAQ8I,GAAa,CACzC,GAAIwmB,GAAQt2B,KAAK02B,QAAQnB,KAAKe,KAC9Bt2B,MAAKqyC,gBAAgBviC,EAAM9P,KAAKmxC,aAAc7a,KAIlD1zB,EAAMsR,UAAUk+B,eAAiB,WAC/B,GAA6BvrC,SAAzB7G,KAAKixC,gBAA+B,CACtC,GAAIqB,KACJ,IAAmC,gBAAxBtyC,MAAKixC,gBAA6B,CAC3C,IAAK,GAAI3N,KAAYtjC,MAAKojC,UACxBkP,EAAU/pC,MAAM+6B,SAAUA,EAAUiP,UAAWvyC,KAAKojC,UAAUE,GAAUrhC,MAAM,GAAGwR,KAAKzT,KAAKixC,kBAE7FqB,GAAUr7B,KAAK,SAAUrR,EAAGa,GAC1B,MAAOb,GAAE2sC,UAAY9rC,EAAE8rC,gBAGtB,IAAmC,kBAAxBvyC,MAAKixC,gBAA+B,CAClD,IAAK,GAAI3N,KAAYtjC,MAAKojC,UACxBkP,EAAU/pC,KAAKvI,KAAKojC,UAAUE,GAAUrhC,MAAM,GAAGwR,KAEnD6+B,GAAUr7B,KAAKjX,KAAKixC,iBAGtB,GAAIqB,EAAUtsC,OAAS,EACrB,IAAK,GAAIH,GAAI,EAAGA,EAAIysC,EAAUtsC,OAAQH,IACpC7F,KAAKojC,UAAUkP,EAAUzsC,GAAGy9B,UAAU56B,MAAQ7C,IAMtDjD,EAAMsR,UAAUi+B,eAAiB,WAC/B,IAAK,GAAI7O,KAAYtjC,MAAKojC,UACpBpjC,KAAKojC,UAAUj9B,eAAem9B,KAChCtjC,KAAKojC,UAAUE,GAAU7Z,SAAU,IASzC7mB,EAAMsR,UAAUkD,OAAS,SAAStH,SACzB9P,MAAKiC,MAAM6N,EAAKzP,IACvByP,EAAK+2B,UAAU,KAGf,IAAIn+B,GAAQ1I,KAAKmxC,aAAanqC,QAAQ8I,EACzB,KAATpH,GAAa1I,KAAKmxC,aAAaxoC,OAAOD,EAAO,IAUnD9F,EAAMsR,UAAUszB,kBAAoB,SAAS13B,GAC3C9P,KAAK02B,QAAQ8b,WAAW1iC,EAAKzP,KAO/BuC,EAAMsR,UAAUsC,MAAQ,WAKtB,IAAK,GAJDzN,GAAQpI,EAAKmI,QAAQ9I,KAAKiC,OAC1BwwC,KACAC,KAEK7sC,EAAI,EAAGA,EAAIkD,EAAM/C,OAAQH,IACNgB,SAAtBkC,EAAMlD,GAAG4N,KAAKnD,KAChBoiC,EAASnqC,KAAKQ,EAAMlD,IAEtB4sC,EAAWlqC,KAAKQ,EAAMlD,GAExB7F,MAAKqP,cACH+hC,QAASqB,EACTpB,MAAOqB,GAGT5wC,EAAM2gC,aAAaziC,KAAKqP,aAAa+hC,SACrCtvC,EAAM4gC,WAAW1iC,KAAKqP,aAAagiC,QAYrCzuC,EAAMsR,UAAU49B,oBAAsB,SAASziC,EAAcsjC,EAAiBrc,GAC5E,GAKIxmB,GAAMjK,EALNsrC,KACAyB,KACAxf,GAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,EACvCwiC,EAAavc,EAAMjmB,MAAQ+iB,EAC3B0f,EAAaxc,EAAMhmB,IAAM8iB,EAIzB9jB,EAAiB,SAAUhL,GAC7B,MAAiBuuC,GAARvuC,EAA6B,GACpBwuC,GAATxuC,EAA8B,EACA,EAMzC,IAAIquC,EAAgB3sC,OAAS,EAC3B,IAAKH,EAAI,EAAGA,EAAI8sC,EAAgB3sC,OAAQH,IACtC7F,KAAK+yC,6BAA6BJ,EAAgB9sC,GAAIsrC,EAAcyB,EAAoBtc,EAK5F,IAAI0c,GAAoBryC,EAAKyO,mBAAmBC,EAAa+hC,QAAS9hC,EAAgB,OAAO,QAS7F,IANAtP,KAAKizC,cAAcD,EAAmB3jC,EAAa+hC,QAASD,EAAcyB,EAAoB,SAAU9iC,GACtG,MAAQA,GAAK2D,KAAKpD,MAAQwiC,GAAc/iC,EAAK2D,KAAKpD,MAAQyiC,IAK/B,GAAzB9yC,KAAKsxC,iBAEP,IADAtxC,KAAKsxC,kBAAmB,EACnBzrC,EAAI,EAAGA,EAAIwJ,EAAagiC,MAAMrrC,OAAQH,IACzC7F,KAAK+yC,6BAA6B1jC,EAAagiC,MAAMxrC,GAAIsrC,EAAcyB,EAAoBtc,OAG1F,CAEH,GAAI4c,GAAkBvyC,EAAKyO,mBAAmBC,EAAagiC,MAAO/hC,EAAgB,OAAO,MAGzFtP,MAAKizC,cAAcC,EAAiB7jC,EAAagiC,MAAOF,EAAcyB,EAAoB,SAAU9iC,GAClG,MAAQA,GAAK2D,KAAKnD,IAAMuiC,GAAc/iC,EAAK2D,KAAKnD,IAAMwiC,IAM1D,IAAKjtC,EAAI,EAAGA,EAAIsrC,EAAanrC,OAAQH,IACnCiK,EAAOqhC,EAAatrC,GACfiK,EAAK02B,WAAW12B,EAAKi3B,OAE1Bj3B,EAAKm3B,aAgBP,OAAOkK,IAGTvuC,EAAMsR,UAAU++B,cAAgB,SAAUE,EAAYlxC,EAAOkvC,EAAcyB,EAAoBQ,GAC7F,GAAItjC,GACAjK,CAEJ,IAAkB,IAAdstC,EAAkB,CACpB,IAAKttC,EAAIstC,EAAYttC,GAAK,IACxBiK,EAAO7N,EAAM4D,IACTutC,EAAetjC,IAFQjK,IAMWgB,SAAhC+rC,EAAmB9iC,EAAKzP,MAC1BuyC,EAAmB9iC,EAAKzP,KAAM,EAC9B8wC,EAAa5oC,KAAKuH,GAKxB,KAAKjK,EAAIstC,EAAa,EAAGttC,EAAI5D,EAAM+D,SACjC8J,EAAO7N,EAAM4D,IACTutC,EAAetjC,IAFsBjK,IAMHgB,SAAhC+rC,EAAmB9iC,EAAKzP,MAC1BuyC,EAAmB9iC,EAAKzP,KAAM,EAC9B8wC,EAAa5oC,KAAKuH,MAmB5BlN,EAAMsR,UAAUm+B,gBAAkB,SAASviC,EAAMqhC,EAAc7a,GACvDxmB,EAAKk3B,UAAU1Q,IACZxmB,EAAK02B,WAAW12B,EAAKi3B,OAE1Bj3B,EAAKm3B,cACLkK,EAAa5oC,KAAKuH,IAGdA,EAAK02B,WAAW12B,EAAKg3B,QAgB/BlkC,EAAMsR,UAAU6+B,6BAA+B,SAASjjC,EAAMqhC,EAAcyB,EAAoBtc,GAC1FxmB,EAAKk3B,UAAU1Q,GACmBzvB,SAAhC+rC,EAAmB9iC,EAAKzP,MAC1BuyC,EAAmB9iC,EAAKzP,KAAM,EAC9B8wC,EAAa5oC,KAAKuH,IAIhBA,EAAK02B,WAAW12B,EAAKg3B,QAM7BjnC,EAAOD,QAAUgD,GAKb,SAAS/C,EAAQD,EAASM,GAW9B,QAAS2C,GAAiBo2B,EAASxlB,EAAMijB,GACvC9zB,EAAMrC,KAAKP,KAAMi5B,EAASxlB,EAAMijB,GAEhC12B,KAAKsT,MAAQ,EACbtT,KAAKuT,OAAS,EACdvT,KAAKiI,IAAM,EACXjI,KAAK6H,KAAO,EAfd,GACIjF,IADO1C,EAAoB,GACnBA,EAAoB,IAiBhC2C,GAAgBqR,UAAYtN,OAAOkI,OAAOlM,EAAMsR,WAShDrR,EAAgBqR,UAAUuO,OAAS,SAAS6T,EAAO3b,GACjD,GAAIkvB,IAAU,CAEd7pC,MAAKmxC,aAAenxC,KAAK8xC,oBAAoB9xC,KAAKqP,aAAcrP,KAAKmxC,aAAc7a,GAGnFt2B,KAAKsT,MAAQtT,KAAK2wB,IAAI9jB,WAAWmkB,YAGjChxB,KAAK2wB,IAAI9jB,WAAWa,MAAM6F,OAAU,GAGpC,KAAK,GAAI1N,GAAI,EAAGqsC,EAAKlyC,KAAKmxC,aAAanrC,OAAYksC,EAAJrsC,EAAQA,IAAK,CAC1D,GAAIiK,GAAO9P,KAAKmxC,aAAatrC,EAC7BiK,GAAKo3B,YAAYvsB,GAGnB,MAAOkvB,IAMThnC,EAAgBqR,UAAU6yB,KAAO,WAC1B/mC,KAAK2wB,IAAI9jB,WAAW1C,YACvBnK,KAAK02B,QAAQ/F,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAI9jB,aAIrDhN,EAAOD,QAAUiD,GAKb,SAAShD,EAAQD,EAASM,GA4B9B,QAAS4C,GAAQyyB,EAAMrmB,GACrBlP,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACH9tB,KAAM,KACNguB,YAAa,SACb0T,MAAO,OACP/mC,OAAO,EACPuxC,WAAY,KAEZC,YAAY,EACZjM,UACEkC,YAAY,EACZmD,aAAa,EACb14B,KAAK,EACLoD,QAAQ,GAGVuhB,KAAO52B,EAAS42B,KAEhB4a,MAAO,SAAUzjC,EAAMjH,GACrBA,EAASiH,IAEX0jC,SAAU,SAAU1jC,EAAMjH,GACxBA,EAASiH,IAEX2jC,OAAQ,SAAU3jC,EAAMjH,GACtBA,EAASiH,IAEX4jC,SAAU,SAAU5jC,EAAMjH,GACxBA,EAASiH,IAEX6jC,SAAU,SAAU7jC,EAAMjH,GACxBA,EAASiH,IAGX6K,QACE7K,MACE0W,WAAY,GACZC,SAAU,IAEZsc,KAAM,IAER/d,QAAS,GAIXhlB,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAGpCj1B,KAAK4zC,aACHzsC,MAAOkJ,MAAO,OAAQC,IAAK,SAG7BtQ,KAAKo8B,YACHtG,SAAUP,EAAK50B,KAAKm1B,SACpBI,OAAQX,EAAK50B,KAAKu1B,QAEpBl2B,KAAK2wB,OACL3wB,KAAKqG,SACLrG,KAAK8D,OAAS,IAEd,IAAIoR,GAAKlV,IACTA,MAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAGlB52B,KAAK6zC,eACH7/B,IAAO,SAAUnK,EAAOgL,GACtBK,EAAG4+B,OAAOj/B,EAAO5S,QAEnB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAG6+B,UAAUl/B,EAAO5S,QAEtBmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAG8+B,UAAUn/B,EAAO5S,SAKxBjC,KAAKi0C,gBACHjgC,IAAO,SAAUnK,EAAOgL,GACtBK,EAAGg/B,aAAar/B,EAAO5S,QAEzB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAGi/B,gBAAgBt/B,EAAO5S,QAE5BmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAGk/B,gBAAgBv/B,EAAO5S,SAI9BjC,KAAKiC,SACLjC,KAAK+0B,UACL/0B,KAAKq0C,YAELr0C,KAAKs0C,aACLt0C,KAAKu0C,YAAa,EAElBv0C,KAAKw0C,eAGLx0C,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAlIlB,GAAIw3B,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B6B,EAAW7B,EAAoB,IAC/BqC,EAAYrC,EAAoB,IAChC0C,EAAQ1C,EAAoB,IAC5B2C,EAAkB3C,EAAoB,IACtCkC,EAAUlC,EAAoB,IAC9BmC,EAAYnC,EAAoB,IAChCoC,EAAYpC,EAAoB,IAChCiC,EAAiBjC,EAAoB,IAGrCu0C,EAAY,gBACZC,EAAa,gBAsHjB5xC,GAAQoR,UAAY,GAAI3R,GAGxBO,EAAQmV,OACNpL,WAAY1K,EACZmmC,IAAKlmC,EACLk0B,MAAOh0B,EACPsQ,MAAOvQ,GAMTS,EAAQoR,UAAUohB,QAAU,WAC1B,GAAIhV,GAAQtO,SAASM,cAAc,MACnCgO,GAAMlY,UAAY,UAClBkY,EAAM,oBAAsBtgB,KAC5BA,KAAK2wB,IAAIrQ,MAAQA,CAGjB,IAAIzT,GAAamF,SAASM,cAAc,MACxCzF,GAAWzE,UAAY,aACvBkY,EAAMpO,YAAYrF,GAClB7M,KAAK2wB,IAAI9jB,WAAaA,CAGtB,IAAIksB,GAAa/mB,SAASM,cAAc,MACxCymB,GAAW3wB,UAAY,aACvBkY,EAAMpO,YAAY6mB,GAClB/4B,KAAK2wB,IAAIoI,WAAaA,CAGtB,IAAIgK,GAAO/wB,SAASM,cAAc,MAClCywB,GAAK36B,UAAY,OACjBpI,KAAK2wB,IAAIoS,KAAOA,CAGhB,IAAI/J,GAAWhnB,SAASM,cAAc,MACtC0mB,GAAS5wB,UAAY,WACrBpI,KAAK2wB,IAAIqI,SAAWA,EAGpBh5B,KAAK20C,kBAGL,IAAIC,GAAkB,GAAI/xC,GAAgB6xC,EAAY,KAAM10C,KAC5D40C,GAAgB7N,OAChB/mC,KAAK+0B,OAAO2f,GAAcE,EAM1B50C,KAAK8D,OAAS4iC,EAAO1mC,KAAKu1B,KAAK5E,IAAI+H,iBACjC9uB,gBAAgB,IAIlB5J,KAAK8D,OAAOwQ,GAAG,QAAatU,KAAKqgC,SAAS3K,KAAK11B,OAC/CA,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACnDA,KAAK8D,OAAOwQ,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OAC9CA,KAAK8D,OAAOwQ,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,OAGjDA,KAAK8D,OAAOwQ,GAAG,MAAQtU,KAAK60C,cAAcnf,KAAK11B,OAG/CA,KAAK8D,OAAOwQ,GAAG,OAAQtU,KAAK80C,mBAAmBpf,KAAK11B,OAGpDA,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAK+0C,WAAWrf,KAAK11B,OAGjDA,KAAK+mC,QAmEPjkC,EAAQoR,UAAUD,WAAa,SAAS/E,GACtC,GAAIA,EAAS,CAEX,GAAIP,IAAU,OAAQ,QAAS,cAAe,QAAS,UAAW,QAAS,aAAc,aAAc,iBAAkB,WAAW,OAAQ,OAC5IhO,GAAKyF,gBAAgBuI,EAAQ3O,KAAKkP,QAASA,GAEvC,UAAYA,KACgB,gBAAnBA,GAAQyL,QACjB3a,KAAKkP,QAAQyL,OAAOooB,KAAO7zB,EAAQyL,OACnC3a,KAAKkP,QAAQyL,OAAO7K,KAAK0W,WAAatX,EAAQyL,OAC9C3a,KAAKkP,QAAQyL,OAAO7K,KAAK2W,SAAWvX,EAAQyL,QAEX,gBAAnBzL,GAAQyL,SACtBha,EAAKyF,iBAAiB,QAASpG,KAAKkP,QAAQyL,OAAQzL,EAAQyL,QACxD,QAAUzL,GAAQyL,SACe,gBAAxBzL,GAAQyL,OAAO7K,MACxB9P,KAAKkP,QAAQyL,OAAO7K,KAAK0W,WAAatX,EAAQyL,OAAO7K,KACrD9P,KAAKkP,QAAQyL,OAAO7K,KAAK2W,SAAWvX,EAAQyL,OAAO7K,MAEb,gBAAxBZ,GAAQyL,OAAO7K,MAC7BnP,EAAKyF,iBAAiB,aAAc,YAAapG,KAAKkP,QAAQyL,OAAO7K,KAAMZ,EAAQyL,OAAO7K,SAM9F,YAAcZ,KACgB,iBAArBA,GAAQm4B,UACjBrnC,KAAKkP,QAAQm4B,SAASkC,WAAcr6B,EAAQm4B,SAC5CrnC,KAAKkP,QAAQm4B,SAASqF,YAAcx9B,EAAQm4B,SAC5CrnC,KAAKkP,QAAQm4B,SAASrzB,IAAc9E,EAAQm4B,SAC5CrnC,KAAKkP,QAAQm4B,SAASjwB,OAAclI,EAAQm4B,UAET,gBAArBn4B,GAAQm4B,UACtB1mC,EAAKyF,iBAAiB,aAAc,cAAe,MAAO,UAAWpG,KAAKkP,QAAQm4B,SAAUn4B,EAAQm4B,UAKxG,IAAI2N,GAAc,SAAWh+B,GAC3B,GAAImD,GAAKjL,EAAQ8H,EACjB,IAAImD,EAAI,CACN,KAAMA,YAAc86B,WAClB,KAAM,IAAIrxC,OAAM,UAAYoT,EAAO,uBAAyBA,EAAO,mBAErEhX,MAAKkP,QAAQ8H,GAAQmD,IAEtBub,KAAK11B,OACP,QAAS,WAAY,WAAY,SAAU,YAAY4I,QAAQosC,GAGhEh1C,KAAKm3B,cASTr0B,EAAQoR,UAAUijB,UAAY,SAASjoB,GACrClP,KAAKq0C,YACLr0C,KAAKu0C,YAAa,EAEdrlC,GAAWA,EAAQkoB,cACrBz2B,EAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GACjCA,EAAK22B,OAAQ,EACT32B,EAAK02B,WAAW12B,EAAK2S,YAQ/B3f,EAAQoR,UAAUG,QAAU,WAC1BrU,KAAK8mC,OACL9mC,KAAKg3B,SAAS,MACdh3B,KAAK+2B,UAAU,MAEf/2B,KAAK8D,OAAS,KAEd9D,KAAKu1B,KAAO,KACZv1B,KAAKo8B,WAAa,MAMpBt5B,EAAQoR,UAAU4yB,KAAO,WAEnB9mC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,OAI7CtgB,KAAK2wB,IAAIoS,KAAK54B,YAChBnK,KAAK2wB,IAAIoS,KAAK54B,WAAWyH,YAAY5R,KAAK2wB,IAAIoS,MAI5C/iC,KAAK2wB,IAAIqI,SAAS7uB,YACpBnK,KAAK2wB,IAAIqI,SAAS7uB,WAAWyH,YAAY5R,KAAK2wB,IAAIqI,WAQtDl2B,EAAQoR,UAAU6yB,KAAO,WAElB/mC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,OAIvCtgB,KAAK2wB,IAAIoS,KAAK54B,YACjBnK,KAAKu1B,KAAK5E,IAAIuZ,mBAAmBh4B,YAAYlS,KAAK2wB,IAAIoS,MAInD/iC,KAAK2wB,IAAIqI,SAAS7uB,YACrBnK,KAAKu1B,KAAK5E,IAAI9oB,KAAKqK,YAAYlS,KAAK2wB,IAAIqI,WAW5Cl2B,EAAQoR,UAAU0jB,aAAe,SAAS1hB,GACxC,GAAIrQ,GAAGqsC,EAAI7xC,EAAIyP,CAMf,KAJWjJ,QAAPqP,IAAkBA,MACjB5P,MAAMC,QAAQ2P,KAAMA,GAAOA,IAG3BrQ,EAAI,EAAGqsC,EAAKlyC,KAAKs0C,UAAUtuC,OAAYksC,EAAJrsC,EAAQA,IAC9CxF,EAAKL,KAAKs0C,UAAUzuC,GACpBiK,EAAO9P,KAAKiC,MAAM5B,GACdyP,GAAMA,EAAK82B,UAKjB,KADA5mC,KAAKs0C,aACAzuC,EAAI,EAAGqsC,EAAKh8B,EAAIlQ,OAAYksC,EAAJrsC,EAAQA,IACnCxF,EAAK6V,EAAIrQ,GACTiK,EAAO9P,KAAKiC,MAAM5B,GACdyP,IACF9P,KAAKs0C,UAAU/rC,KAAKlI,GACpByP,EAAK62B,WASX7jC,EAAQoR,UAAU4jB,aAAe,WAC/B,MAAO93B,MAAKs0C,UAAUv/B,YAOxBjS,EAAQoR,UAAUghC,gBAAkB,WAClC,GAAI5e,GAAQt2B,KAAKu1B,KAAKe,MAAM+K,WACxBx5B,EAAQ7H,KAAKu1B,KAAK50B,KAAKm1B,SAASQ,EAAMjmB,OACtCgY,EAAQroB,KAAKu1B,KAAK50B,KAAKm1B,SAASQ,EAAMhmB,KAEtC4F,IACJ,KAAK,GAAI+iB,KAAWj5B,MAAK+0B,OACvB,GAAI/0B,KAAK+0B,OAAO5uB,eAAe8yB,GAM7B,IAAK,GALDvmB,GAAQ1S,KAAK+0B,OAAOkE,GACpBkc,EAAkBziC,EAAMy+B,aAInBtrC,EAAI,EAAGA,EAAIsvC,EAAgBnvC,OAAQH,IAAK,CAC/C,GAAIiK,GAAOqlC,EAAgBtvC,EAEtBiK,GAAKjI,KAAOwgB,GAAWvY,EAAKjI,KAAOiI,EAAKwD,MAAQzL,GACnDqO,EAAI3N,KAAKuH,EAAKzP,IAMtB,MAAO6V,IAQTpT,EAAQoR,UAAUkhC,UAAY,SAAS/0C,GAErC,IAAK,GADDi0C,GAAYt0C,KAAKs0C,UACZzuC,EAAI,EAAGqsC,EAAKoC,EAAUtuC,OAAYksC,EAAJrsC,EAAQA,IAC7C,GAAIyuC,EAAUzuC,IAAMxF,EAAI,CACtBi0C,EAAU3rC,OAAO9C,EAAG,EACpB,SASN/C,EAAQoR,UAAUuO,OAAS,WACzB,GAAI9H,GAAS3a,KAAKkP,QAAQyL,OACtB2b,EAAQt2B,KAAKu1B,KAAKe,MAClB1rB,EAASjK,EAAK4J,OAAOK,OACrBsE,EAAUlP,KAAKkP,QACfimB,EAAcjmB,EAAQimB,YACtB0U,GAAU,EACVvpB,EAAQtgB,KAAK2wB,IAAIrQ,MACjB+mB,EAAWn4B,EAAQm4B,SAASkC,YAAcr6B,EAAQm4B,SAASqF,WAG/D1sC,MAAKqG,MAAM4B,IAAMjI,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAAS1oB,OAAO7E,IAC3EjI,KAAKqG,MAAMwB,KAAO7H,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAAQtT,KAAKu1B,KAAKC,SAAS1oB,OAAOjF,KAG5EyY,EAAMlY,UAAY,WAAai/B,EAAW,YAAc,IAGxDwC,EAAU7pC,KAAKq1C,gBAAkBxL,CAIjC,IAAIyL,GAAkBhf,EAAMhmB,IAAMgmB,EAAMjmB,MACpCklC,EAAUD,GAAmBt1C,KAAKw1C,qBAAyBx1C,KAAKqG,MAAMiN,OAAStT,KAAKqG,MAAMovC,SAC1FF,KAAQv1C,KAAKu0C,YAAa,GAC9Bv0C,KAAKw1C,oBAAsBF,EAC3Bt1C,KAAKqG,MAAMovC,UAAYz1C,KAAKqG,MAAMiN,KAElC,IAAIo+B,GAAU1xC,KAAKu0C,WACfmB,EAAa11C,KAAK21C,cAClBC,GACF9lC,KAAM6K,EAAO7K,KACbizB,KAAMpoB,EAAOooB,MAEX8S,GACF/lC,KAAM6K,EAAO7K,KACbizB,KAAMpoB,EAAO7K,KAAK2W,SAAW,GAE3BlT,EAAS,EACT8hB,EAAY1a,EAAOooB,KAAOpoB,EAAO7K,KAAK2W,QA+B1C,OA5BAzmB,MAAK+0B,OAAO2f,GAAYjyB,OAAO6T,EAAOuf,EAAgBnE,GAGtD/wC,EAAKiI,QAAQ5I,KAAK+0B,OAAQ,SAAUriB,GAClC,GAAIojC,GAAepjC,GAASgjC,EAAcE,EAAcC,EACpDE,EAAerjC,EAAM+P,OAAO6T,EAAOwf,EAAapE,EACpD7H,GAAUkM,GAAgBlM,EAC1Bt2B,GAAUb,EAAMa,SAElBA,EAAS/O,KAAKJ,IAAImP,EAAQ8hB,GAC1Br1B,KAAKu0C,YAAa,EAGlBj0B,EAAM5S,MAAM6F,OAAU3I,EAAO2I,GAG7BvT,KAAKqG,MAAMiN,MAAQgN,EAAM0Q,YACzBhxB,KAAKqG,MAAMkN,OAASA,EAGpBvT,KAAK2wB,IAAIoS,KAAKr1B,MAAMzF,IAAM2C,EAAuB,OAAfuqB,EAC7Bn1B,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAAS1oB,OAAO7E,IAC1DjI,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QACxEvT,KAAK2wB,IAAIoS,KAAKr1B,MAAM7F,KAAO,IAG3BgiC,EAAU7pC,KAAK4pC,cAAgBC,GAUjC/mC,EAAQoR,UAAUyhC,YAAc,WAC9B,GAAIK,GAA+C,OAA5Bh2C,KAAKkP,QAAQimB,YAAwB,EAAKn1B,KAAKq0C,SAASruC,OAAS,EACpFiwC,EAAej2C,KAAKq0C,SAAS2B,GAC7BN,EAAa11C,KAAK+0B,OAAOkhB,IAAiBj2C,KAAK+0B,OAAO0f,EAE1D,OAAOiB,IAAc,MAQvB5yC,EAAQoR,UAAUygC,iBAAmB,WACnC,CAAA,GAEI7kC,GAAMwG,EAFN4/B,EAAYl2C,KAAK+0B,OAAO0f,EACXz0C,MAAK+0B,OAAO2f,GAG7B,GAAI10C,KAAK42B,YAEP,GAAIsf,EAAW,CACbA,EAAUpP,aACH9mC,MAAK+0B,OAAO0f,EAEnB,KAAKn+B,IAAUtW,MAAKiC,MAClB,GAAIjC,KAAKiC,MAAMkE,eAAemQ,GAAS,CACrCxG,EAAO9P,KAAKiC,MAAMqU,GAClBxG,EAAKzF,QAAUyF,EAAKzF,OAAO+M,OAAOtH,EAClC,IAAImpB,GAAUj5B,KAAKm2C,YAAYrmC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACxBvmB,IAASA,EAAMsB,IAAIlE,IAASA,EAAKg3B,aAOvC,KAAKoP,EAAW,CACd,GAAI71C,GAAK,KACLoT,EAAO,IACXyiC,GAAY,GAAItzC,GAAMvC,EAAIoT,EAAMzT,MAChCA,KAAK+0B,OAAO0f,GAAayB,CAEzB,KAAK5/B,IAAUtW,MAAKiC,MACdjC,KAAKiC,MAAMkE,eAAemQ,KAC5BxG,EAAO9P,KAAKiC,MAAMqU,GAClB4/B,EAAUliC,IAAIlE,GAIlBomC,GAAUnP,SAShBjkC,EAAQoR,UAAUkiC,YAAc,WAC9B,MAAOp2C,MAAK2wB,IAAIqI,UAOlBl2B,EAAQoR,UAAU8iB,SAAW,SAAS/0B,GACpC,GACIiU,GADAhB,EAAKlV,KAELq2C,EAAer2C,KAAK22B,SAGxB,IAAK10B,EAGA,CAAA,KAAIA,YAAiBpB,IAAWoB,YAAiBnB,IAIpD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK22B,UAAY10B,MAHjBjC,MAAK22B,UAAY,IAoBnB,IAXI0f,IAEF11C,EAAKiI,QAAQ5I,KAAK6zC,cAAe,SAAUhrC,EAAUgB,GACnDwsC,EAAa5hC,IAAI5K,EAAOhB,KAI1BqN,EAAMmgC,EAAaz/B,SACnB5W,KAAKg0C,UAAU99B,IAGblW,KAAK22B,UAAW,CAElB,GAAIt2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAK6zC,cAAe,SAAUhrC,EAAUgB,GACnDqL,EAAGyhB,UAAUriB,GAAGzK,EAAOhB,EAAUxI,KAInC6V,EAAMlW,KAAK22B,UAAU/f,SACrB5W,KAAK8zC,OAAO59B,GAGZlW,KAAK20C,qBAQT7xC,EAAQoR,UAAUoiC,SAAW,WAC3B,MAAOt2C,MAAK22B,WAOd7zB,EAAQoR,UAAU6iB,UAAY,SAAShC,GACrC,GACI7e,GADAhB,EAAKlV,IAgBT,IAZIA,KAAK42B,aACPj2B,EAAKiI,QAAQ5I,KAAKi0C,eAAgB,SAAUprC,EAAUgB,GACpDqL,EAAG0hB,WAAWjiB,YAAY9K,EAAOhB,KAInCqN,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAK42B,WAAa,KAClB52B,KAAKo0C,gBAAgBl+B,IAIlB6e,EAGA,CAAA,KAAIA,YAAkBl0B,IAAWk0B,YAAkBj0B,IAItD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK42B,WAAa7B,MAHlB/0B,MAAK42B,WAAa,IASpB,IAAI52B,KAAK42B,WAAY,CAEnB,GAAIv2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAKi0C,eAAgB,SAAUprC,EAAUgB,GACpDqL,EAAG0hB,WAAWtiB,GAAGzK,EAAOhB,EAAUxI,KAIpC6V,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAKk0C,aAAah+B,GAIpBlW,KAAK20C,mBAGL30C,KAAKu2C,SAELv2C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAO3CrR,EAAQoR,UAAUsiC,UAAY,WAC5B,MAAOx2C,MAAK42B,YAOd9zB,EAAQoR,UAAUs+B,WAAa,SAASnyC,GACtC,GAAIyP,GAAO9P,KAAK22B,UAAU1gB,IAAI5V,GAC1B43B,EAAUj4B,KAAK22B,UAAU9f,YAEzB/G,IAEF9P,KAAKkP,QAAQwkC,SAAS5jC,EAAM,SAAUA,GAChCA,GAGFmoB,EAAQ7gB,OAAO/W,MAYvByC,EAAQoR,UAAUuiC,SAAW,SAAU1e,GACrC,MAAOA,GAAS5wB,MAAQnH,KAAKkP,QAAQ/H,OAAS4wB,EAASznB,IAAM,QAAU,QAUzExN,EAAQoR,UAAUiiC,YAAc,SAAUpe,GACxC,GAAI5wB,GAAOnH,KAAKy2C,SAAS1e,EACzB,OAAY,cAAR5wB,GAA0CN,QAAlBkxB,EAASrlB,MAC7BgiC,EAGC10C,KAAK42B,WAAamB,EAASrlB,MAAQ+hC,GAS9C3xC,EAAQoR,UAAU6/B,UAAY,SAAS79B,GACrC,GAAIhB,GAAKlV,IAETkW,GAAItN,QAAQ,SAAUvI,GACpB,GAAI03B,GAAW7iB,EAAGyhB,UAAU1gB,IAAI5V,EAAI6U,EAAG0+B,aACnC9jC,EAAOoF,EAAGjT,MAAM5B,GAChB8G,EAAO+N,EAAGuhC,SAAS1e,GAEnBpxB,EAAc7D,EAAQmV,MAAM9Q,EAchC,IAZI2I,IAEGnJ,GAAiBmJ,YAAgBnJ,GAMpCuO,EAAGc,YAAYlG,EAAMioB,IAJrB7iB,EAAGwhC,YAAY5mC,GACfA,EAAO,QAONA,EAAM,CAET,IAAInJ,EAKC,KAEG,IAAID,WAFK,iBAARS,EAEa,4HAIA,sBAAwBA,EAAO,IAVnD2I,GAAO,GAAInJ,GAAYoxB,EAAU7iB,EAAGknB,WAAYlnB,EAAGhG,SACnDY,EAAKzP,GAAKA,EACV6U,EAAGC,SAASrF,MAalB9P,KAAKu2C,SACLv2C,KAAKu0C,YAAa,EAClBv0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAU4/B,OAAShxC,EAAQoR,UAAU6/B,UAO7CjxC,EAAQoR,UAAU8/B,UAAY,SAAS99B,GACrC,GAAI6B,GAAQ,EACR7C,EAAKlV,IACTkW,GAAItN,QAAQ,SAAUvI,GACpB,GAAIyP,GAAOoF,EAAGjT,MAAM5B,EAChByP,KACFiI,IACA7C,EAAGwhC,YAAY5mC,MAIfiI,IAEF/X,KAAKu2C,SACLv2C,KAAKu0C,YAAa,EAClBv0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,MAQ7CrR,EAAQoR,UAAUqiC,OAAS,WAGzB51C,EAAKiI,QAAQ5I,KAAK+0B,OAAQ,SAAUriB,GAClCA,EAAM8D,WASV1T,EAAQoR,UAAUigC,gBAAkB,SAASj+B,GAC3ClW,KAAKk0C,aAAah+B,IAQpBpT,EAAQoR,UAAUggC,aAAe,SAASh+B,GACxC,GAAIhB,GAAKlV,IAETkW,GAAItN,QAAQ,SAAUvI,GACpB,GAAIywC,GAAY57B,EAAG0hB,WAAW3gB,IAAI5V,GAC9BqS,EAAQwC,EAAG6f,OAAO10B,EAEtB,IAAKqS,EA6BHA,EAAMqG,QAAQ+3B,OA7BJ,CAEV,GAAIzwC,GAAMo0C,GAAap0C,GAAMq0C,EAC3B,KAAM,IAAI9wC,OAAM,qBAAuBvD,EAAK,qBAG9C,IAAIs2C,GAAe/vC,OAAOkI,OAAOoG,EAAGhG,QACpCvO,GAAKgF,OAAOgxC,GACVpjC,OAAQ,OAGVb,EAAQ,GAAI9P,GAAMvC,EAAIywC,EAAW57B,GACjCA,EAAG6f,OAAO10B,GAAMqS,CAGhB,KAAK,GAAI4D,KAAUpB,GAAGjT,MACpB,GAAIiT,EAAGjT,MAAMkE,eAAemQ,GAAS,CACnC,GAAIxG,GAAOoF,EAAGjT,MAAMqU,EAChBxG,GAAK2D,KAAKf,OAASrS,GACrBqS,EAAMsB,IAAIlE,GAKhB4C,EAAM8D,QACN9D,EAAMq0B,UAQV/mC,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAUkgC,gBAAkB,SAASl+B,GAC3C,GAAI6e,GAAS/0B,KAAK+0B,MAClB7e,GAAItN,QAAQ,SAAUvI,GACpB,GAAIqS,GAAQqiB,EAAO10B,EAEfqS,KACFA,EAAMo0B,aACC/R,GAAO10B,MAIlBL,KAAKm3B,YAELn3B,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAUmhC,aAAe,WAC/B,GAAIr1C,KAAK42B,WAAY,CAEnB,GAAIyd,GAAWr0C,KAAK42B,WAAWhgB,QAC7BJ,MAAOxW,KAAKkP,QAAQmkC,aAGlBnS,GAAWvgC,EAAKsG,WAAWotC,EAAUr0C,KAAKq0C,SAC9C,IAAInT,EAAS,CAEX,GAAInM,GAAS/0B,KAAK+0B,MAClBsf,GAASzrC,QAAQ,SAAUqwB,GACzBlE,EAAOkE,GAAS6N,SAIlBuN,EAASzrC,QAAQ,SAAUqwB,GACzBlE,EAAOkE,GAAS8N,SAGlB/mC,KAAKq0C,SAAWA,EAGlB,MAAOnT,GAGP,OAAO,GASXp+B,EAAQoR,UAAUiB,SAAW,SAASrF,GACpC9P,KAAKiC,MAAM6N,EAAKzP,IAAMyP,CAGtB,IAAImpB,GAAUj5B,KAAKm2C,YAAYrmC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACpBvmB,IAAOA,EAAMsB,IAAIlE,IASvBhN,EAAQoR,UAAU8B,YAAc,SAASlG,EAAMioB,GAC7C,GAAI6e,GAAa9mC,EAAK2D,KAAKf,KAM3B,IAHA5C,EAAKiJ,QAAQgf,GAGT6e,GAAc9mC,EAAK2D,KAAKf,MAAO,CACjC,GAAImkC,GAAW72C,KAAK+0B,OAAO6hB,EACvBC,IAAUA,EAASz/B,OAAOtH,EAE9B,IAAImpB,GAAUj5B,KAAKm2C,YAAYrmC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACpBvmB,IAAOA,EAAMsB,IAAIlE,KAUzBhN,EAAQoR,UAAUwiC,YAAc,SAAS5mC,GAEvCA,EAAKg3B,aAGE9mC,MAAKiC,MAAM6N,EAAKzP,GAGvB,IAAIqI,GAAQ1I,KAAKs0C,UAAUttC,QAAQ8I,EAAKzP,GAC3B,KAATqI,GAAa1I,KAAKs0C,UAAU3rC,OAAOD,EAAO,GAG9CoH,EAAKzF,QAAUyF,EAAKzF,OAAO+M,OAAOtH,IASpChN,EAAQoR,UAAU4iC,qBAAuB,SAAS/tC,GAGhD,IAAK,GAFD2pC,MAEK7sC,EAAI,EAAGA,EAAIkD,EAAM/C,OAAQH,IAC5BkD,EAAMlD,YAAcvD,IACtBowC,EAASnqC,KAAKQ,EAAMlD,GAGxB,OAAO6sC,IAYT5vC,EAAQoR,UAAUmsB,SAAW,SAAUx2B,GAErC7J,KAAKw0C,YAAY1kC,KAAO9P,KAAKq4B,eAAexuB,IAQ9C/G,EAAQoR,UAAU8rB,aAAe,SAAUn2B,GACzC,GAAK7J,KAAKkP,QAAQm4B,SAASkC,YAAevpC,KAAKkP,QAAQm4B,SAASqF,YAAhE,CAIA,GAEIrmC,GAFAyJ,EAAO9P,KAAKw0C,YAAY1kC,MAAQ,KAChCoF,EAAKlV,IAGT,IAAI8P,GAAQA,EAAKy2B,SAAU,CACzB,GAAIkD,GAAe5/B,EAAMG,OAAOy/B,aAC5BE,EAAgB9/B,EAAMG,OAAO2/B,aAE7BF,IACFpjC,GACEyJ,KAAM25B,EACNsN,SAAUltC,EAAM2uB,QAAQzL,OAAOnP,SAG7B1I,EAAGhG,QAAQm4B,SAASkC,aACtBljC,EAAMgK,MAAQP,EAAK2D,KAAKpD,MAAMhJ,WAE5B6N,EAAGhG,QAAQm4B,SAASqF,aAClB,SAAW58B,GAAK2D,OAAMpN,EAAMqM,MAAQ5C,EAAK2D,KAAKf,OAGpD1S,KAAKw0C,YAAYwC,WAAa3wC,IAEvBsjC,GACPtjC,GACEyJ,KAAM65B,EACNoN,SAAUltC,EAAM2uB,QAAQzL,OAAOnP,SAG7B1I,EAAGhG,QAAQm4B,SAASkC,aACtBljC,EAAMiK,IAAMR,EAAK2D,KAAKnD,IAAIjJ,WAExB6N,EAAGhG,QAAQm4B,SAASqF,aAClB,SAAW58B,GAAK2D,OAAMpN,EAAMqM,MAAQ5C,EAAK2D,KAAKf,OAGpD1S,KAAKw0C,YAAYwC,WAAa3wC,IAG9BrG,KAAKw0C,YAAYwC,UAAYh3C,KAAK83B,eAAehqB,IAAI,SAAUzN,GAC7D,GAAIyP,GAAOoF,EAAGjT,MAAM5B,GAChBgG,GACFyJ,KAAMA,EACNinC,SAAUltC,EAAM2uB,QAAQzL,OAAOnP,QAkBjC,OAfI1I,GAAGhG,QAAQm4B,SAASkC,YAClB,SAAWz5B,GAAK2D,OAClBpN,EAAMgK,MAAQP,EAAK2D,KAAKpD,MAAMhJ,UAE1B,OAASyI,GAAK2D,OAGhBpN,EAAMkK,SAAWT,EAAK2D,KAAKnD,IAAIjJ,UAAYhB,EAAMgK,QAInD6E,EAAGhG,QAAQm4B,SAASqF,aAClB,SAAW58B,GAAK2D,OAAMpN,EAAMqM,MAAQ5C,EAAK2D,KAAKf,OAG7CrM,IAIXwD,EAAM49B,sBAECznC,MAAKkP,QAAQm4B,SAASrzB,KAAOnK,EAAM2uB,QAAQye,SAASC,SAE3Dl3C,KAAKm3C,oBAAoBttC,KAS7B/G,EAAQoR,UAAUijC,oBAAsB,SAAUttC,GAChD,GAAI8uB,GAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5Bye,EAAOz2C,EAAK+G,gBAAgB1H,KAAK2wB,IAAIrQ,OACrC9N,EAAI3I,EAAM2uB,QAAQzL,OAAOwL,MAAQ6e,EAAO,GACxCxe,EAAO54B,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,GAC7BjO,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UACtBzkB,EAAQsoB,EAAOA,EAAKC,EAAMr0B,EAAO4kB,GAAQ9Y,EACzCC,EAAMD,EAEN0nB,GACF5wB,KAAM,QACNkJ,MAAOA,EACPC,IAAKA,EACL6C,QAAS,YAGP9S,EAAKM,EAAK2E,YACdyyB,GAAS/3B,KAAK22B,UAAU/iB,UAAYvT,CAEpC,IAAIqS,GAAQ1S,KAAKs4B,gBAAgBzuB,EAC7B6I,KACFqlB,EAASrlB,MAAQA,EAAMumB,QAGzB;GAAIoe,GAAU,GAAI/0C,GAAUy1B,EAAU/3B,KAAKo8B,WAAYp8B,KAAKkP,QAC5DmoC,GAAQh3C,GAAKA,EACbL,KAAKmV,SAASkiC,EAEd,IAAIhxC,IACFyJ,KAAMunC,EACN/mC,IAAKA,EAAIjJ,UACT0vC,SAAUltC,EAAM2uB,QAAQzL,OAAOnP,QAEjC5d,MAAKw0C,YAAYwC,WAAa3wC,GAE9BwD,EAAM49B,mBAQR3kC,EAAQoR,UAAU+rB,QAAU,SAAUp2B,GAGpC,GAFAA,EAAMD,iBAEF5J,KAAKw0C,YAAYwC,UAAW,CAC9B,GAAI9hC,GAAKlV,KACL24B,EAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5B1lB,EAAUjT,KAAKu1B,KAAK5E,IAAIjxB,KAAKuyC,WAAajyC,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAClE/O,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,SAG1B90B,MAAKw0C,YAAYwC,UAAUpuC,QAAQ,SAAUvC,GAC3C,GAAIixC,MACAvb,EAAU7mB,EAAGqgB,KAAK50B,KAAKu1B,OAAOrsB,EAAM2uB,QAAQzL,OAAOnP,QAAU3K,GAC7DskC,EAAUriC,EAAGqgB,KAAK50B,KAAKu1B,OAAO7vB,EAAM0wC,SAAW9jC,GAC/CyX,EAASqR,EAAUwb,CAEvB,IAAI,SAAWlxC,GAAO,CACpB,GAAIgK,GAAQ,GAAIzL,MAAKyB,EAAMgK,MAAQqa,EACnC4sB,GAASjnC,MAAQsoB,EAAOA,EAAKtoB,EAAO9L,EAAO4kB,GAAQ9Y,EAGrD,GAAI,OAAShK,GAAO,CAClB,GAAIiK,GAAM,GAAI1L,MAAKyB,EAAMiK,IAAMoa,EAC/B4sB,GAAShnC,IAAMqoB,EAAOA,EAAKroB,EAAK/L,EAAO4kB,GAAQ7Y,MAExC,YAAcjK,KACrBixC,EAAShnC,IAAM,GAAI1L,MAAK0yC,EAASjnC,MAAMhJ,UAAYhB,EAAMkK,UAG3D,IAAI,SAAWlK,GAAO,CAEpB,GAAIqM,GAAQwC,EAAGojB,gBAAgBzuB,EAC/BytC,GAAS5kC,MAAQA,GAASA,EAAMumB,QAIlC,GAAIlB,GAAWp3B,EAAKgF,UAAWU,EAAMyJ,KAAK2D,KAAM6jC,EAChDpiC,GAAGhG,QAAQykC,SAAS5b,EAAU,SAAUA,GAClCA,GACF7iB,EAAGsiC,iBAAiBnxC,EAAMyJ,KAAMioB,OAKtC/3B,KAAKu0C,YAAa,EAClBv0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAEvB5kB,EAAM49B,oBAUV3kC,EAAQoR,UAAUsjC,iBAAmB,SAAS1nC,EAAMzJ,GAE9C,SAAWA,KACbyJ,EAAK2D,KAAKpD,MAAQhK,EAAMgK,OAEtB,OAAShK,GACXyJ,EAAK2D,KAAKnD,IAAMjK,EAAMiK,IAEf,YAAcjK,KACrByJ,EAAK2D,KAAKnD,IAAM,GAAI1L,MAAKyB,EAAMgK,MAAMhJ,UAAYhB,EAAMkK,WAErD,SAAWlK,IAASyJ,EAAK2D,KAAKf,OAASrM,EAAMqM,OAC/C1S,KAAKy3C,aAAa3nC,EAAMzJ,EAAMqM,QAUlC5P,EAAQoR,UAAUujC,aAAe,SAAS3nC,EAAMmpB,GAC9C,GAAIvmB,GAAQ1S,KAAK+0B,OAAOkE,EACxB,IAAIvmB,GAASA,EAAMumB,SAAWnpB,EAAK2D,KAAKf,MAAO,CAC7C,GAAImkC,GAAW/mC,EAAKzF,MACpBwsC,GAASz/B,OAAOtH,GAChB+mC,EAASrgC,QACT9D,EAAMsB,IAAIlE,GACV4C,EAAM8D,QAEN1G,EAAK2D,KAAKf,MAAQA,EAAMumB,UAS5Bn2B,EAAQoR,UAAUgsB,WAAa,SAAUr2B,GAGvC,GAFAA,EAAMD,iBAEF5J,KAAKw0C,YAAYwC,UAAW,CAE9B,GAAIU,MACAxiC,EAAKlV,KACLi4B,EAAUj4B,KAAK22B,UAAU9f,aAEzBmgC,EAAYh3C,KAAKw0C,YAAYwC,SACjCh3C,MAAKw0C,YAAYwC,UAAY,KAC7BA,EAAUpuC,QAAQ,SAAUvC,GAC1B,GAAIhG,GAAKgG,EAAMyJ,KAAKzP,GAChB03B,EAAW7iB,EAAGyhB,UAAU1gB,IAAI5V,EAAI6U,EAAG0+B,YAEvC,IAAK7b,EAaA,CAEH,GAAImJ,IAAU,CACV,UAAW76B,GAAMyJ,KAAK2D,OACxBytB,EAAW76B,EAAMgK,OAAShK,EAAMyJ,KAAK2D,KAAKpD,MAAMhJ,UAChD0wB,EAAS1nB,MAAQ1P,EAAKuG,QAAQb,EAAMyJ,KAAK2D,KAAKpD,MAC1C4nB,EAAQvkB,SAASvM,MAAQ8wB,EAAQvkB,SAASvM,KAAKkJ,OAAS,SAE1D,OAAShK,GAAMyJ,KAAK2D,OACtBytB,EAAUA,GAAa76B,EAAMiK,KAAOjK,EAAMyJ,KAAK2D,KAAKnD,IAAIjJ,UACxD0wB,EAASznB,IAAM3P,EAAKuG,QAAQb,EAAMyJ,KAAK2D,KAAKnD,IACxC2nB,EAAQvkB,SAASvM,MAAQ8wB,EAAQvkB,SAASvM,KAAKmJ,KAAO,SAExD,SAAWjK,GAAMyJ,KAAK2D,OACxBytB,EAAUA,GAAa76B,EAAMqM,OAASrM,EAAMyJ,KAAK2D,KAAKf,MACtDqlB,EAASrlB,MAAQrM,EAAMyJ,KAAK2D,KAAKf,OAI/BwuB,GACFhsB,EAAGhG,QAAQukC,OAAO1b,EAAU,SAAUA,GAChCA,GAEFA,EAASE,EAAQrkB,UAAYvT,EAC7Bq3C,EAAQnvC,KAAKwvB,KAIb7iB,EAAGsiC,iBAAiBnxC,EAAMyJ,KAAMzJ,GAEhC6O,EAAGq/B,YAAa,EAChBr/B,EAAGqgB,KAAKE,QAAQhH,KAAK,iBA1C3BvZ,GAAGhG,QAAQqkC,MAAMltC,EAAMyJ,KAAK2D,KAAM,SAAUskB,GAC1C7iB,EAAGwhC,YAAYrwC,EAAMyJ,MACjBioB,GACF7iB,EAAGyhB,UAAU9f,aAAa7C,IAAI+jB,GAIhC7iB,EAAGq/B,YAAa,EAChBr/B,EAAGqgB,KAAKE,QAAQhH,KAAK,cA0CvBipB,EAAQ1xC,QACViyB,EAAQriB,OAAO8hC,GAGjB7tC,EAAM49B,oBASV3kC,EAAQoR,UAAU2gC,cAAgB,SAAUhrC,GAC1C,GAAK7J,KAAKkP,QAAQokC,WAAlB,CAEA,GAAI4D,GAAWrtC,EAAM2uB,QAAQye,UAAYptC,EAAM2uB,QAAQye,SAASC,QAC5DS,EAAW9tC,EAAM2uB,QAAQye,UAAYptC,EAAM2uB,QAAQye,SAASU,QAChE,IAAIT,GAAWS,EAEb,WADA33C,MAAK80C,mBAAmBjrC,EAI1B,IAAI+tC,GAAe53C,KAAK83B,eAEpBhoB,EAAO9P,KAAKq4B,eAAexuB,GAC3ByqC,EAAYxkC,GAAQA,EAAKzP,MAC7BL,MAAK43B,aAAa0c,EAElB,IAAIuD,GAAe73C,KAAK83B,gBAIpB+f,EAAa7xC,OAAS,GAAK4xC,EAAa5xC,OAAS,IACnDhG,KAAKu1B,KAAKE,QAAQhH,KAAK,UACrBxsB,MAAO41C,MAUb/0C,EAAQoR,UAAU6gC,WAAa,SAAUlrC,GACvC,GAAK7J,KAAKkP,QAAQokC,YACbtzC,KAAKkP,QAAQm4B,SAASrzB,IAA3B,CAEA,GAAIkB,GAAKlV,KACL24B,EAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5B7oB,EAAO9P,KAAKq4B,eAAexuB,EAE/B,IAAIiG,EAAM,CAIR,GAAIioB,GAAW7iB,EAAGyhB,UAAU1gB,IAAInG,EAAKzP,GACrCL,MAAKkP,QAAQskC,SAASzb,EAAU,SAAUA,GACpCA,GACF7iB,EAAGyhB,UAAU9f,aAAajB,OAAOmiB,SAIlC,CAEH,GAAIqf,GAAOz2C,EAAK+G,gBAAgB1H,KAAK2wB,IAAIrQ,OACrC9N,EAAI3I,EAAM2uB,QAAQzL,OAAOwL,MAAQ6e,EACjC/mC,EAAQrQ,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,GAC9BjO,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UAEtBuiB,GACFhnC,MAAOsoB,EAAOA,EAAKtoB,EAAO9L,EAAO4kB,GAAQ9Y,EACzC8C,QAAS,WAIX,IAA0B,UAAtBnT,KAAKkP,QAAQ/H,KAAkB,CACjC,GAAImJ,GAAMtQ,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,EAAIxS,KAAKqG,MAAMiN,MAAQ,EACvD+jC,GAAQ/mC,IAAMqoB,EAAOA,EAAKroB,EAAK/L,EAAO4kB,GAAQ7Y,EAGhD+mC,EAAQr3C,KAAK22B,UAAU/iB,UAAYjT,EAAK2E,YAExC,IAAIoN,GAAQ1S,KAAKs4B,gBAAgBzuB,EAC7B6I,KACF2kC,EAAQ3kC,MAAQA,EAAMumB,SAIxBj5B,KAAKkP,QAAQqkC,MAAM8D,EAAS,SAAUvnC,GAChCA,GACFoF,EAAGyhB,UAAU9f,aAAa7C,IAAIlE,QAYtChN,EAAQoR,UAAU4gC,mBAAqB,SAAUjrC,GAC/C,GAAK7J,KAAKkP,QAAQokC,WAAlB,CAEA,GAAIgB,GACAxkC,EAAO9P,KAAKq4B,eAAexuB,EAE/B,IAAIiG,EAAM,CAERwkC,EAAYt0C,KAAK83B,cAEjB,IAAI6f,GAAW9tC,EAAM2uB,QAAQ2J,QAAQ,IAAMt4B,EAAM2uB,QAAQ2J,QAAQ,GAAGwV,WAAY,CAChF,IAAIA,EAAU,CAIZrD,EAAU/rC,KAAKuH,EAAKzP,GACpB,IAAIi2B,GAAQxzB,EAAQg1C,cAAc93C,KAAK22B,UAAU1gB,IAAIq+B,EAAWt0C,KAAK4zC,aAGrEU,KACA,KAAK,GAAIj0C,KAAML,MAAKiC,MAClB,GAAIjC,KAAKiC,MAAMkE,eAAe9F,GAAK,CACjC,GAAI03C,GAAQ/3C,KAAKiC,MAAM5B,GACnBgQ,EAAQ0nC,EAAMtkC,KAAKpD,MACnBC,EAA0BzJ,SAAnBkxC,EAAMtkC,KAAKnD,IAAqBynC,EAAMtkC,KAAKnD,IAAMD,CAExDA,IAASimB,EAAMnyB,KAAOmM,GAAOgmB,EAAMlyB,KACrCkwC,EAAU/rC,KAAKwvC,EAAM13C,SAKxB,CAEH,GAAIqI,GAAQ4rC,EAAUttC,QAAQ8I,EAAKzP,GACtB,KAATqI,EAEF4rC,EAAU/rC,KAAKuH,EAAKzP,IAIpBi0C,EAAU3rC,OAAOD,EAAO,GAI5B1I,KAAK43B,aAAa0c,GAElBt0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UACrBxsB,MAAOjC,KAAK83B,oBAWlBh1B,EAAQg1C,cAAgB,SAASnhB,GAC/B,GAAIvyB,GAAM,KACND,EAAM,IAmBV,OAjBAwyB,GAAU/tB,QAAQ,SAAU6K,IACf,MAAPtP,GAAesP,EAAKpD,MAAQlM,KAC9BA,EAAMsP,EAAKpD,OAGGxJ,QAAZ4M,EAAKnD,KACI,MAAPlM,GAAeqP,EAAKnD,IAAMlM,KAC5BA,EAAMqP,EAAKnD,MAIF,MAAPlM,GAAeqP,EAAKpD,MAAQjM,KAC9BA,EAAMqP,EAAKpD,UAMflM,IAAKA,EACLC,IAAKA,IAUTtB,EAAQoR,UAAUmkB,eAAiB,SAASxuB,GAE1C,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO7D,eAAe,iBACxB,MAAO6D,GAAO,gBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OASTrH,EAAQoR,UAAUokB,gBAAkB,SAASzuB,GAE3C,IAAK,GADDkU,GAAUlU,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAOhP,QAAUlU,EAAMkU,QAC1DlY,EAAI,EAAGA,EAAI7F,KAAKq0C,SAASruC,OAAQH,IAAK,CAC7C,GAAIozB,GAAUj5B,KAAKq0C,SAASxuC,GACxB6M,EAAQ1S,KAAK+0B,OAAOkE,GACpBF,EAAarmB,EAAMie,IAAIoI,WACvB9wB,EAAMtH,EAAKqH,eAAe+wB,EAC9B,IAAIhb,EAAU9V,GAAO8V,EAAU9V,EAAM8wB,EAAW7H,aAC9C,MAAOxe,EAGT,IAAiC,QAA7B1S,KAAKkP,QAAQimB,aACf,GAAItvB,IAAM7F,KAAKq0C,SAASruC,OAAS,GAAK+X,EAAU9V,EAC9C,MAAOyK,OAIT,IAAU,IAAN7M,GAAWkY,EAAU9V,EAAM8wB,EAAWrO,OACxC,MAAOhY,GAKb,MAAO,OAST5P,EAAQk1C,kBAAoB,SAASnuC,GAEnC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO7D,eAAe,oBACxB,MAAO6D,GAAO,mBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAGTtK,EAAOD,QAAUkD,GAKb,SAASjD,EAAQD,EAASM,GAS9B,QAAS6C,GAAOwyB,EAAMrmB,EAAS+oC,EAAMlN,GACnC/qC,KAAKu1B,KAAOA,EACZv1B,KAAKi1B,gBACH9lB,SAAS,EACT+7B,OAAO,EACPgN,SAAU,GACVC,YAAa,EACbtwC,MACE4hB,SAAS,EACT7E,SAAU,YAEZyD,OACEoB,SAAS,EACT7E,SAAU,aAGd5kB,KAAKi4C,KAAOA,EACZj4C,KAAKkP,QAAUvO,EAAKgF,UAAU3F,KAAKi1B,gBACnCj1B,KAAK+qC,iBAAmBA,EAExB/qC,KAAKmsC,eACLnsC,KAAK2wB,OACL3wB,KAAK+0B,UACL/0B,KAAKqsC,eAAiB,EACtBrsC,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAjClB,GAAIvO,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BqC,EAAYrC,EAAoB,GAkCpC6C,GAAOmR,UAAY,GAAI3R,GAEvBQ,EAAOmR,UAAUsD,MAAQ,WACvBxX,KAAK+0B,UACL/0B,KAAKqsC,eAAiB,GAGxBtpC,EAAOmR,UAAUs4B,SAAW,SAASx5B,EAAOy5B,GAErCzsC,KAAK+0B,OAAO5uB,eAAe6M,KAC9BhT,KAAK+0B,OAAO/hB,GAASy5B,GAEvBzsC,KAAKqsC,gBAAkB,GAGzBtpC,EAAOmR,UAAUw4B,YAAc,SAAS15B,EAAOy5B,GAC7CzsC,KAAK+0B,OAAO/hB,GAASy5B,GAGvB1pC,EAAOmR,UAAUy4B,YAAc,SAAS35B,GAClChT,KAAK+0B,OAAO5uB,eAAe6M,WACtBhT,MAAK+0B,OAAO/hB,GACnBhT,KAAKqsC,gBAAkB,IAI3BtpC,EAAOmR,UAAUohB,QAAU,WACzBt1B,KAAK2wB,IAAIrQ,MAAQtO,SAASM,cAAc,OACxCtS,KAAK2wB,IAAIrQ,MAAMlY,UAAY,SAC3BpI,KAAK2wB,IAAIrQ,MAAM5S,MAAMkX,SAAW,WAChC5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,OAC3BjI,KAAK2wB,IAAIrQ,MAAM5S,MAAMk/B,QAAU,QAE/B5sC,KAAK2wB,IAAIynB,SAAWpmC,SAASM,cAAc,OAC3CtS,KAAK2wB,IAAIynB,SAAShwC,UAAY,aAC9BpI,KAAK2wB,IAAIynB,SAAS1qC,MAAMkX,SAAW,WACnC5kB,KAAK2wB,IAAIynB,SAAS1qC,MAAMzF,IAAM,MAE9BjI,KAAK8qC,IAAM94B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAK8qC,IAAIp9B,MAAMkX,SAAW,WAC1B5kB,KAAK8qC,IAAIp9B,MAAMzF,IAAM,MACrBjI,KAAK8qC,IAAIp9B,MAAM4F,MAAQtT,KAAKkP,QAAQgpC,SAAW,EAAI,KACnDl4C,KAAK8qC,IAAIp9B,MAAM6F,OAAS,OAExBvT,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAK8qC,KAChC9qC,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAK2wB,IAAIynB,WAMtCr1C,EAAOmR,UAAU4yB,KAAO,WAElB9mC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,QAQnDvd,EAAOmR,UAAU6yB,KAAO,WAEjB/mC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,QAI9Cvd,EAAOmR,UAAUD,WAAa,SAAS/E,GACrC,GAAIP,IAAU,UAAU,cAAc,QAAQ,OAAO,QACrDhO,GAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAASA,IAGjDnM,EAAOmR,UAAUuO,OAAS,WACxB,GAAI0qB,GAAe,CACnB,KAAK,GAAIlU,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,IACvIkU,IAKN,IAAuC,GAAnCntC,KAAKkP,QAAQlP,KAAKi4C,MAAMxuB,SAA2C,GAAvBzpB,KAAKqsC,gBAA+C,GAAxBrsC,KAAKkP,QAAQC,SAAoC,GAAhBg+B,EAC3GntC,KAAK8mC,WAEF,CAqBH,GApBA9mC,KAAK+mC,OACmC,YAApC/mC,KAAKkP,QAAQlP,KAAKi4C,MAAMrzB,UAA8D,eAApC5kB,KAAKkP,QAAQlP,KAAKi4C,MAAMrzB,UAC5E5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAM7F,KAAO,MAC5B7H,KAAK2wB,IAAIrQ,MAAM5S,MAAM4b,UAAY,OACjCtpB,KAAK2wB,IAAIynB,SAAS1qC,MAAM4b,UAAY,OACpCtpB,KAAK2wB,IAAIynB,SAAS1qC,MAAM7F,KAAQ7H,KAAKkP,QAAQgpC,SAAW,GAAM,KAC9Dl4C,KAAK2wB,IAAIynB,SAAS1qC,MAAM2a,MAAQ,GAChCroB,KAAK8qC,IAAIp9B,MAAM7F,KAAO,MACtB7H,KAAK8qC,IAAIp9B,MAAM2a,MAAQ,KAGvBroB,KAAK2wB,IAAIrQ,MAAM5S,MAAM2a,MAAQ,MAC7BroB,KAAK2wB,IAAIrQ,MAAM5S,MAAM4b,UAAY,QACjCtpB,KAAK2wB,IAAIynB,SAAS1qC,MAAM4b,UAAY,QACpCtpB,KAAK2wB,IAAIynB,SAAS1qC,MAAM2a,MAASroB,KAAKkP,QAAQgpC,SAAW,GAAM,KAC/Dl4C,KAAK2wB,IAAIynB,SAAS1qC,MAAM7F,KAAO,GAC/B7H,KAAK8qC,IAAIp9B,MAAM2a,MAAQ,MACvBroB,KAAK8qC,IAAIp9B,MAAM7F,KAAO,IAGgB,YAApC7H,KAAKkP,QAAQlP,KAAKi4C,MAAMrzB,UAA8D,aAApC5kB,KAAKkP,QAAQlP,KAAKi4C,MAAMrzB,SAC5E5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,EAAIhE,OAAOjE,KAAKu1B,KAAK5E,IAAI5D,OAAOrf,MAAMzF,IAAIgD,QAAQ,KAAK,KAAO,KACzFjL,KAAK2wB,IAAIrQ,MAAM5S,MAAM4W,OAAS,OAE3B,CACH,GAAI+zB,GAAmBr4C,KAAKu1B,KAAKC,SAASzI,OAAOxZ,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,MAC7FvT,MAAK2wB,IAAIrQ,MAAM5S,MAAM4W,OAAS,EAAI+zB,EAAmBp0C,OAAOjE,KAAKu1B,KAAK5E,IAAI5D,OAAOrf,MAAMzF,IAAIgD,QAAQ,KAAK,KAAO,KAC/GjL,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,GAGH,GAAtBjI,KAAKkP,QAAQg8B,OACflrC,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAK2wB,IAAIynB,SAASpnB,YAAc,GAAK,KAClEhxB,KAAK2wB,IAAIynB,SAAS1qC,MAAM2a,MAAQ,GAChCroB,KAAK2wB,IAAIynB,SAAS1qC,MAAM7F,KAAO,GAC/B7H,KAAK8qC,IAAIp9B,MAAM4F,MAAQ,QAGvBtT,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAKkP,QAAQgpC,SAAW,GAAKl4C,KAAK2wB,IAAIynB,SAASpnB,YAAc,GAAK,KAC/FhxB,KAAKs4C,kBAGP,IAAInlC,GAAU,EACd,KAAK,GAAI8lB,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,KACvI9lB,GAAWnT,KAAK+0B,OAAOkE,GAAS9lB,QAAU,UAIhDnT,MAAK2wB,IAAIynB,SAASnzB,UAAY9R,EAC9BnT,KAAK2wB,IAAIynB,SAAS1qC,MAAMyjB,WAAe,IAAOnxB,KAAKkP,QAAQgpC,SAAYl4C,KAAKkP,QAAQipC,YAAe,OAIvGp1C,EAAOmR,UAAUokC,gBAAkB,WACjC,GAAIt4C,KAAK2wB,IAAIrQ,MAAMnW,WAAY,CAC7BvJ,EAAQ0Q,gBAAgBtR,KAAKmsC,YAC7B,IAAInnB,GAAUld,OAAOygC,iBAAiBvoC,KAAK2wB,IAAIrQ,OAAOi4B,WAClDxL,EAAa9oC,OAAO+gB,EAAQ/Z,QAAQ,KAAK,KACzCuH,EAAIu6B,EACJxB,EAAYvrC,KAAKkP,QAAQgpC,SACzBpL,EAAa,IAAO9sC,KAAKkP,QAAQgpC,SACjCzlC,EAAIs6B,EAAa,GAAMD,EAAa,CAExC9sC,MAAK8qC,IAAIp9B,MAAM4F,MAAQi4B,EAAY,EAAIwB,EAAa,IAEpD,KAAK,GAAI9T,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,KACvIj5B,KAAK+0B,OAAOkE,GAAS+T,SAASx6B,EAAGC,EAAGzS,KAAKmsC,YAAansC,KAAK8qC,IAAKS,EAAWuB,GAC3Er6B,GAAKq6B,EAAa9sC,KAAKkP,QAAQipC,aAKrCv3C,GAAQ+Q,gBAAgB3R,KAAKmsC,eAIjCtsC,EAAOD,QAAUmD,GAKb,SAASlD,EAAQD,EAASM,GAqB9B,QAAS8C,GAAUuyB,EAAMrmB,GACvBlP,KAAKK,GAAKM,EAAK2E,aACftF,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACH2b,iBAAkB,OAClB4H,aAAc,UACdvhC,MAAM,EACNwhC,UAAU,EACVC,YAAa,QACbnI,QACEphC,SAAS,EACTgmB,YAAa,UAEfznB,MAAO,OACPirC,UACErlC,MAAO,GACPslC,cAAe,UACf/P,MAAO,UAETkH,YACE5gC,SAAS,EACT6gC,gBAAiB,cACjBC,MAAO,IAETp9B,YACE1D,SAAS,EACT4D,KAAM,EACNrF,MAAO,UAETmrC,UACE7N,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACP53B,MAAO,OACPmW,SAAS,EACT8T,YAAY,EACZD,aACEz1B,MAAO1D,IAAI0C,OAAWzC,IAAIyC,QAC1BwhB,OAAQlkB,IAAI0C,OAAWzC,IAAIyC,UAkB/BiyC,QACE3pC,SAAS,EACT+7B,OAAO,EACPrjC,MACE4hB,SAAS,EACT7E,SAAU,YAEZyD,OACEoB,SAAS,EACT7E,SAAU,cAGdmQ,QACEsE,gBAKJr5B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAK2wB,OACL3wB,KAAKqG,SACLrG,KAAK8D,OAAS,KACd9D,KAAK+0B,UACL/0B,KAAK+4C,oBAAqB,EAC1B/4C,KAAKg5C,iBAAkB,EACvBh5C,KAAKi5C,yBAA0B,CAE/B,IAAI/jC,GAAKlV,IACTA,MAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAGlB52B,KAAK6zC,eACH7/B,IAAO,SAAUnK,EAAOgL,GACtBK,EAAG4+B,OAAOj/B,EAAO5S,QAEnB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAG6+B,UAAUl/B,EAAO5S,QAEtBmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAG8+B,UAAUn/B,EAAO5S,SAKxBjC,KAAKi0C,gBACHjgC,IAAO,SAAUnK,EAAOgL,GACtBK,EAAGg/B,aAAar/B,EAAO5S,QAEzB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAGi/B,gBAAgBt/B,EAAO5S,QAE5BmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAGk/B,gBAAgBv/B,EAAO5S,SAI9BjC,KAAKiC,SACLjC,KAAKs0C,aACLt0C,KAAKk5C,UAAYl5C,KAAKu1B,KAAKe,MAAMjmB,MACjCrQ,KAAKw0C,eAELx0C,KAAKmsC,eACLnsC,KAAKiU,WAAW/E,GAChBlP,KAAKwvC,0BAA4B,GACjCxvC,KAAKm5C,QAAU,EACfn5C,KAAKu1B,KAAKE,QAAQnhB,GAAG,eAAgB,WACnCY,EAAGgkC,UAAYhkC,EAAGqgB,KAAKe,MAAMjmB,MAC7B6E,EAAG41B,IAAIp9B,MAAM7F,KAAOlH,EAAK4J,OAAOK,QAAQsK,EAAG7O,MAAMiN,OACjD4B,EAAGuN,OAAOliB,KAAK2U,GAAG,KAIpBlV,KAAKs1B,UACLt1B,KAAKgxC,WAAalG,IAAK9qC,KAAK8qC,IAAKqB,YAAansC,KAAKmsC,YAAaj9B,QAASlP,KAAKkP,QAAS6lB,OAAQ/0B,KAAK+0B,QACpG/0B,KAAKu1B,KAAKE,QAAQhH,KAAK,UAvJzB,GAAI9tB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BqC,EAAYrC,EAAoB,IAChCwC,EAAWxC,EAAoB,IAC/ByC,EAAazC,EAAoB,IACjC6C,EAAS7C,EAAoB,IAC7Bk5C,EAAoBl5C,EAAoB,IAExCu0C,EAAY,eAiJhBzxC,GAAUkR,UAAY,GAAI3R,GAK1BS,EAAUkR,UAAUohB,QAAU,WAC5B,GAAIhV,GAAQtO,SAASM,cAAc,MACnCgO,GAAMlY,UAAY,YAClBpI,KAAK2wB,IAAIrQ,MAAQA,EAGjBtgB,KAAK8qC,IAAM94B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAK8qC,IAAIp9B,MAAMkX,SAAW,WAC1B5kB,KAAK8qC,IAAIp9B,MAAM6F,QAAU,GAAKvT,KAAKkP,QAAQwpC,aAAaztC,QAAQ,KAAK,IAAM,KAC3EjL,KAAK8qC,IAAIp9B,MAAMk/B,QAAU,QACzBtsB,EAAMpO,YAAYlS,KAAK8qC,KAGvB9qC,KAAKkP,QAAQ2pC,SAAS1jB,YAAc,OACpCn1B,KAAKs5B,UAAY,GAAI52B,GAAS1C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ2pC,SAAU74C,KAAK8qC,IAAK9qC,KAAKkP,QAAQ6lB,QAEvF/0B,KAAKkP,QAAQ2pC,SAAS1jB,YAAc,QACpCn1B,KAAKu5B,WAAa,GAAI72B,GAAS1C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ2pC,SAAU74C,KAAK8qC,IAAK9qC,KAAKkP,QAAQ6lB,cACjF/0B,MAAKkP,QAAQ2pC,SAAS1jB,YAG7Bn1B,KAAKw5B,WAAa,GAAIz2B,GAAO/C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ4pC,OAAQ,OAAQ94C,KAAKkP,QAAQ6lB,QAClF/0B,KAAKy5B,YAAc,GAAI12B,GAAO/C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ4pC,OAAQ,QAAS94C,KAAKkP,QAAQ6lB,QAEpF/0B,KAAK+mC,QAOP/jC,EAAUkR,UAAUD,WAAa,SAAS/E,GACxC,GAAIA,EAAS,CACX,GAAIP,IAAU,WAAW,eAAe,SAAS,cAAc,mBAAmB,QAAQ,WAAW,WAAW,OAAO,SAC3F9H,UAAxBqI,EAAQwpC,aAAgD7xC,SAAnBqI,EAAQqE,QAAsE1M,SAA9C7G,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QAC1GvT,KAAKg5C,iBAAkB,EACvBh5C,KAAKi5C,yBAA0B,GAEsBpyC,SAA9C7G,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QAAgD1M,SAAxBqI,EAAQwpC,aACtErtC,UAAU6D,EAAQwpC,YAAc,IAAIztC,QAAQ,KAAK,KAAOjL,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,SAC7FvT,KAAKg5C,iBAAkB,GAG3Br4C,EAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAASA,GAC/CvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UAEpCA,EAAQ6gC,YACuB,gBAAtB7gC,GAAQ6gC,YACb7gC,EAAQ6gC,WAAWC,kBACqB,WAAtC9gC,EAAQ6gC,WAAWC,gBACrBhwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,EAEa,WAAtC/gC,EAAQ6gC,WAAWC,gBAC1BhwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,GAGhCjwC,KAAKkP,QAAQ6gC,WAAWC,gBAAkB,cAC1ChwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,KAMpCjwC,KAAKs5B,WACkBzyB,SAArBqI,EAAQ2pC,WACV74C,KAAKs5B,UAAUrlB,WAAWjU,KAAKkP,QAAQ2pC,UACvC74C,KAAKu5B,WAAWtlB,WAAWjU,KAAKkP,QAAQ2pC,WAIxC74C,KAAKw5B,YACgB3yB,SAAnBqI,EAAQ4pC,SACV94C,KAAKw5B,WAAWvlB,WAAWjU,KAAKkP,QAAQ4pC,QACxC94C,KAAKy5B,YAAYxlB,WAAWjU,KAAKkP,QAAQ4pC,SAIzC94C,KAAK+0B,OAAO5uB,eAAesuC,IAC7Bz0C,KAAK+0B,OAAO0f,GAAWxgC,WAAW/E,GAKlClP,KAAK2wB,IAAIrQ,OACXtgB,KAAKyiB,QAAO,IAOhBzf,EAAUkR,UAAU4yB,KAAO,WAErB9mC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,QASnDtd,EAAUkR,UAAU6yB,KAAO,WAEpB/mC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,QAS9Ctd,EAAUkR,UAAU8iB,SAAW,SAAS/0B,GACtC,GACEiU,GADEhB,EAAKlV,KAEPq2C,EAAer2C,KAAK22B,SAGtB,IAAK10B,EAGA,CAAA,KAAIA,YAAiBpB,IAAWoB,YAAiBnB,IAIpD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK22B,UAAY10B,MAHjBjC,MAAK22B,UAAY,IAoBnB,IAXI0f,IAEF11C,EAAKiI,QAAQ5I,KAAK6zC,cAAe,SAAUhrC,EAAUgB,GACnDwsC,EAAa5hC,IAAI5K,EAAOhB,KAI1BqN,EAAMmgC,EAAaz/B,SACnB5W,KAAKg0C,UAAU99B,IAGblW,KAAK22B,UAAW,CAElB,GAAIt2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAK6zC,cAAe,SAAUhrC,EAAUgB,GACnDqL,EAAGyhB,UAAUriB,GAAGzK,EAAOhB,EAAUxI,KAInC6V,EAAMlW,KAAK22B,UAAU/f,SACrB5W,KAAK8zC,OAAO59B,GAEdlW,KAAK20C,mBAEL30C,KAAKyiB,QAAO,IAQdzf,EAAUkR,UAAU6iB,UAAY,SAAShC,GACvC,GACI7e,GADAhB,EAAKlV,IAgBT,IAZIA,KAAK42B,aACPj2B,EAAKiI,QAAQ5I,KAAKi0C,eAAgB,SAAUprC,EAAUgB,GACpDqL,EAAG0hB,WAAWjiB,YAAY9K,EAAOhB,KAInCqN,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAK42B,WAAa,KAClB52B,KAAKo0C,gBAAgBl+B,IAIlB6e,EAGA,CAAA,KAAIA,YAAkBl0B,IAAWk0B,YAAkBj0B,IAItD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK42B,WAAa7B,MAHlB/0B,MAAK42B,WAAa,IASpB,IAAI52B,KAAK42B,WAAY,CAEnB,GAAIv2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAKi0C,eAAgB,SAAUprC,EAAUgB,GACpDqL,EAAG0hB,WAAWtiB,GAAGzK,EAAOhB,EAAUxI,KAIpC6V,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAKk0C,aAAah+B,GAEpBlW,KAAK+zC,aASP/wC,EAAUkR,UAAU6/B,UAAY,WAC9B/zC,KAAK20C,mBACL30C,KAAKq5C,sBAELr5C,KAAKyiB,QAAO,IAEdzf,EAAUkR,UAAU4/B,OAAkB,SAAU59B,GAAMlW,KAAK+zC,UAAU79B,IACrElT,EAAUkR,UAAU8/B,UAAkB,SAAU99B,GAAMlW,KAAK+zC,UAAU79B,IACrElT,EAAUkR,UAAUigC,gBAAmB,SAAUE,GAC/C,IAAK,GAAIxuC,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAAK,CACxC,GAAI6M,GAAQ1S,KAAK42B,WAAW3gB,IAAIo+B,EAASxuC,GACzC7F,MAAKs5C,aAAa5mC,EAAO2hC,EAASxuC,IAIpC7F,KAAKyiB,QAAO,IAEdzf,EAAUkR,UAAUggC,aAAe,SAAUG,GAAWr0C,KAAKm0C,gBAAgBE,IAQ7ErxC,EAAUkR,UAAUkgC,gBAAkB,SAAUC,GAC9C,IAAK,GAAIxuC,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/B7F,KAAK+0B,OAAO5uB,eAAekuC,EAASxuC,MACmB,SAArD7F,KAAK+0B,OAAOsf,EAASxuC,IAAIqJ,QAAQ0hC,kBACnC5wC,KAAKu5B,WAAWoT,YAAY0H,EAASxuC,IACrC7F,KAAKy5B,YAAYkT,YAAY0H,EAASxuC,IACtC7F,KAAKy5B,YAAYhX,WAGjBziB,KAAKs5B,UAAUqT,YAAY0H,EAASxuC,IACpC7F,KAAKw5B,WAAWmT,YAAY0H,EAASxuC,IACrC7F,KAAKw5B,WAAW/W,gBAEXziB,MAAK+0B,OAAOsf,EAASxuC,IAGhC7F,MAAK20C,mBAEL30C,KAAKyiB,QAAO,IAWdzf,EAAUkR,UAAUolC,aAAe,SAAU5mC,EAAOumB,GAC7Cj5B,KAAK+0B,OAAO5uB,eAAe8yB,IAY9Bj5B,KAAK+0B,OAAOkE,GAASrjB,OAAOlD,GACyB,SAAjD1S,KAAK+0B,OAAOkE,GAAS/pB,QAAQ0hC,kBAC/B5wC,KAAKu5B,WAAWmT,YAAYzT,EAASj5B,KAAK+0B,OAAOkE,IACjDj5B,KAAKy5B,YAAYiT,YAAYzT,EAASj5B,KAAK+0B,OAAOkE,MAGlDj5B,KAAKs5B,UAAUoT,YAAYzT,EAASj5B,KAAK+0B,OAAOkE,IAChDj5B,KAAKw5B,WAAWkT,YAAYzT,EAASj5B,KAAK+0B,OAAOkE,OAlBnDj5B,KAAK+0B,OAAOkE,GAAW,GAAIt2B,GAAW+P,EAAOumB,EAASj5B,KAAKkP,QAASlP,KAAKwvC,0BACpB,SAAjDxvC,KAAK+0B,OAAOkE,GAAS/pB,QAAQ0hC,kBAC/B5wC,KAAKu5B,WAAWiT,SAASvT,EAASj5B,KAAK+0B,OAAOkE,IAC9Cj5B,KAAKy5B,YAAY+S,SAASvT,EAASj5B,KAAK+0B,OAAOkE,MAG/Cj5B,KAAKs5B,UAAUkT,SAASvT,EAASj5B,KAAK+0B,OAAOkE,IAC7Cj5B,KAAKw5B,WAAWgT,SAASvT,EAASj5B,KAAK+0B,OAAOkE,MAclDj5B,KAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,UASnBzf,EAAUkR,UAAUmlC,oBAAsB,WACxC,GAAsB,MAAlBr5C,KAAK22B,UAAmB,CAC1B,GACIsC,GADAsgB,IAEJ,KAAKtgB,IAAWj5B,MAAK+0B,OACf/0B,KAAK+0B,OAAO5uB,eAAe8yB,KAC7BsgB,EAActgB,MAGlB,KAAK,GAAI3iB,KAAUtW,MAAK22B,UAAUhjB,MAChC,GAAI3T,KAAK22B,UAAUhjB,MAAMxN,eAAemQ,GAAS,CAC/C,GAAIxG,GAAO9P,KAAK22B,UAAUhjB,MAAM2C,EAChC,IAAkCzP,SAA9B0yC,EAAczpC,EAAK4C,OACrB,KAAM,IAAI9O,OAAM,4IAElBkM,GAAK0C,EAAI7R,EAAKuG,QAAQ4I,EAAK0C,EAAE,QAC7B+mC,EAAczpC,EAAK4C,OAAOnK,KAAKuH,GAGnC,IAAKmpB,IAAWj5B,MAAK+0B,OACf/0B,KAAK+0B,OAAO5uB,eAAe8yB,IAC7Bj5B,KAAK+0B,OAAOkE,GAASjC,SAASuiB,EAActgB,MAYpDj2B,EAAUkR,UAAUygC,iBAAmB,WACrC,GAAI30C,KAAK22B,WAA+B,MAAlB32B,KAAK22B,UAAmB,CAC5C,GAAI6iB,GAAmB,CACvB,KAAK,GAAIljC,KAAUtW,MAAK22B,UAAUhjB,MAChC,GAAI3T,KAAK22B,UAAUhjB,MAAMxN,eAAemQ,GAAS,CAC/C,GAAIxG,GAAO9P,KAAK22B,UAAUhjB,MAAM2C,EACpBzP,SAARiJ,IACEA,EAAK3J,eAAe,SACHU,SAAfiJ,EAAK4C,QACP5C,EAAK4C,MAAQ+hC,GAIf3kC,EAAK4C,MAAQ+hC,EAEf+E,EAAmB1pC,EAAK4C,OAAS+hC,EAAY+E,EAAmB,EAAIA,GAK1E,GAAwB,GAApBA,QACKx5C,MAAK+0B,OAAO0f,GACnBz0C,KAAKw5B,WAAWmT,YAAY8H,GAC5Bz0C,KAAKy5B,YAAYkT,YAAY8H,GAC7Bz0C,KAAKs5B,UAAUqT,YAAY8H,GAC3Bz0C,KAAKu5B,WAAWoT,YAAY8H,OAEzB,CACH,GAAI/hC,IAASrS,GAAIo0C,EAAWthC,QAASnT,KAAKkP,QAAQspC,aAClDx4C,MAAKs5C,aAAa5mC,EAAO+hC,eAIpBz0C,MAAK+0B,OAAO0f,GACnBz0C,KAAKw5B,WAAWmT,YAAY8H,GAC5Bz0C,KAAKy5B,YAAYkT,YAAY8H,GAC7Bz0C,KAAKs5B,UAAUqT,YAAY8H,GAC3Bz0C,KAAKu5B,WAAWoT,YAAY8H,EAG9Bz0C,MAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,UAQnBzf,EAAUkR,UAAUuO,OAAS,SAASg3B,GACpC,GAAI5P,IAAU,CAGd7pC,MAAKqG,MAAMiN,MAAQtT,KAAK2wB,IAAIrQ,MAAM0Q,YAClChxB,KAAKqG,MAAMkN,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAGhC1M,SAAnB7G,KAAKy1C,WAA2Bz1C,KAAKqG,MAAMiN,QAC7CmmC,GAAmB,GAIrB5P,EAAU7pC,KAAK4pC,cAAgBC,CAG/B,IAAIyL,GAAkBt1C,KAAKu1B,KAAKe,MAAMhmB,IAAMtQ,KAAKu1B,KAAKe,MAAMjmB,MACxDklC,EAAUD,GAAmBt1C,KAAKw1C,mBA6BtC,IA5BAx1C,KAAKw1C,oBAAsBF,EAKZ,GAAXzL,IACF7pC,KAAK8qC,IAAIp9B,MAAM4F,MAAQ3S,EAAK4J,OAAOK,OAAO,EAAE5K,KAAKqG,MAAMiN,OACvDtT,KAAK8qC,IAAIp9B,MAAM7F,KAAOlH,EAAK4J,OAAOK,QAAQ5K,KAAKqG,MAAMiN,QAGN,KAA1CtT,KAAKkP,QAAQqE,OAAS,IAAIvM,QAAQ,MAA8C,GAAhChH,KAAKi5C,2BACxDj5C,KAAKg5C,iBAAkB,IAKC,GAAxBh5C,KAAKg5C,iBACHh5C,KAAKkP,QAAQwpC,aAAe14C,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,OAC1EvT,KAAKkP,QAAQwpC,YAAc14C,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,KACvEvT,KAAK8qC,IAAIp9B,MAAM6F,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,MAEtEvT,KAAKg5C,iBAAkB,GAGvBh5C,KAAK8qC,IAAIp9B,MAAM6F,QAAU,GAAKvT,KAAKkP,QAAQwpC,aAAaztC,QAAQ,KAAK,IAAM,KAI9D,GAAX4+B,GAA6B,GAAV0L,GAA6C,GAA3Bv1C,KAAK+4C,oBAAkD,GAApBU,EAC1E5P,EAAU7pC,KAAK05C,gBAAkB7P,MAIjC,IAAsB,GAAlB7pC,KAAKk5C,UAAgB,CACvB,GAAIxuB,GAAS1qB,KAAKu1B,KAAKe,MAAMjmB,MAAQrQ,KAAKk5C,UACtC5iB,EAAQt2B,KAAKu1B,KAAKe,MAAMhmB,IAAMtQ,KAAKu1B,KAAKe,MAAMjmB,KAClD,IAAwB,GAApBrQ,KAAKqG,MAAMiN,MAAY,CACzB,GAAIqmC,GAAmB35C,KAAKqG,MAAMiN,MAAMgjB,EACpCrjB,EAAUyX,EAASivB,CACvB35C,MAAK8qC,IAAIp9B,MAAM7F,MAAS7H,KAAKqG,MAAMiN,MAAQL,EAAW,MAO5D,MAFAjT,MAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,SACVonB,GAQT7mC,EAAUkR,UAAUwlC,aAAe,WAGjC,GADA94C,EAAQ0Q,gBAAgBtR,KAAKmsC,aACL,GAApBnsC,KAAKqG,MAAMiN,OAAgC,MAAlBtT,KAAK22B,UAAmB,CACnD,GAAIjkB,GAAO7M,EACP+zC,KACAC,KACAC,KACAC,GAAe,EAGf1F,IACJ,KAAK,GAAIpb,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KAC7BvmB,EAAQ1S,KAAK+0B,OAAOkE,GACC,GAAjBvmB,EAAM+W,SAAgE5iB,SAA5C7G,KAAKkP,QAAQ6lB,OAAOsE,WAAWJ,IAAqE,GAA3Cj5B,KAAKkP,QAAQ6lB,OAAOsE,WAAWJ,IACpHob,EAAS9rC,KAAK0wB,GAIpB,IAAIob,EAASruC,OAAS,EAAG,CAEvB,GAAIg0C,GAAUh6C,KAAKu1B,KAAK50B,KAAKy1B,cAAcp2B,KAAKu1B,KAAKC,SAAS91B,KAAK4T,OAC/D2mC,EAAUj6C,KAAKu1B,KAAK50B,KAAKy1B,aAAa,EAAIp2B,KAAKu1B,KAAKC,SAAS91B,KAAK4T,OAClEsjB,IAQJ,KANA52B,KAAKk6C,iBAAiB7F,EAAUzd,EAAYojB,EAASC,GAGrDj6C,KAAKm6C,eAAe9F,EAAUzd,GAGzB/wB,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/B+zC,EAAsBvF,EAASxuC,IAAM7F,KAAKo6C,qBAAqBxjB,EAAWyd,EAASxuC,IAIrF7F,MAAKq6C,YAAYhG,EAAUuF,EAAuBE,GAIlDC,EAAe/5C,KAAKs6C,aAAajG,EAAUyF,EAC3C,IAAIS,GAAa,CACjB,IAAoB,GAAhBR,GAAwB/5C,KAAKm5C,QAAUoB,EAKzC,MAJA35C,GAAQ+Q,gBAAgB3R,KAAKmsC,aAC7BnsC,KAAK+4C,oBAAqB,EAC1B/4C,KAAKm5C,UACLn5C,KAAKu1B,KAAKE,QAAQhH,KAAK,WAChB,CAUP,KAPIzuB,KAAKm5C,QAAUoB,GACjB1f,QAAQtG,IAAI,6EAEdv0B,KAAKm5C,QAAU,EACfn5C,KAAK+4C,oBAAqB,EAGrBlzC,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/B6M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IAC7Bg0C,EAAmBxF,EAASxuC,IAAM7F,KAAKw6C,qBAAqB5jB,EAAWyd,EAASxuC,IAAK6M,EAIvF,KAAK7M,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/B6M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IACF,OAAvB6M,EAAMxD,QAAQxB,OAChBgF,EAAMq+B,KAAK8I,EAAmBxF,EAASxuC,IAAK6M,EAAO1S,KAAKgxC,UAG5DoI,GAAkBrI,KAAKsD,EAAUwF,EAAoB75C,KAAKgxC,YAOhE,MADApwC,GAAQ+Q,gBAAgB3R,KAAKmsC,cACtB,GAiBTnpC,EAAUkR,UAAUgmC,iBAAmB,SAAU7F,EAAUzd,EAAYojB,EAASC,GAC9E,GAAIvnC,GAAO7M,EAAG4mB,EAAG3c,CACjB,IAAIukC,EAASruC,OAAS,EACpB,IAAKH,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAAK,CACpC6M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IAC7B+wB,EAAWyd,EAASxuC,MACpB,IAAI40C,GAAgB7jB,EAAWyd,EAASxuC,GAExC,IAA0B,GAAtB6M,EAAMxD,QAAQ+H,KAAc,CAC9B,GAAIyjC,GAAQl2C,KAAKJ,IAAI,EAAGzD,EAAKqP,kBAAkB0C,EAAMikB,UAAWqjB,EAAS,IAAK,UAC9E,KAAKvtB,EAAIiuB,EAAOjuB,EAAI/Z,EAAMikB,UAAU3wB,OAAQymB,IAE1C,GADA3c,EAAO4C,EAAMikB,UAAUlK,GACV5lB,SAATiJ,EAAoB,CACtB,GAAIA,EAAK0C,EAAIynC,EAAS,CACpBQ,EAAclyC,KAAKuH,EACnB,OAGA2qC,EAAclyC,KAAKuH,QAMzB,KAAK2c,EAAI,EAAGA,EAAI/Z,EAAMikB,UAAU3wB,OAAQymB,IACtC3c,EAAO4C,EAAMikB,UAAUlK,GACV5lB,SAATiJ,GACEA,EAAK0C,EAAIwnC,GAAWlqC,EAAK0C,EAAIynC,GAC/BQ,EAAclyC,KAAKuH,KAgBjC9M,EAAUkR,UAAUimC,eAAiB,SAAU9F,EAAUzd,GACvD,GAAIlkB,EACJ,IAAI2hC,EAASruC,OAAS,EACpB,IAAK,GAAIH,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAEnC,GADA6M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IACC,GAA1B6M,EAAMxD,QAAQupC,SAAkB,CAClC,GAAIgC,GAAgB7jB,EAAWyd,EAASxuC,GACxC,IAAI40C,EAAcz0C,OAAS,EAAG,CAC5B,GAAI20C,GAAY,EACZC,EAAiBH,EAAcz0C,OAI/B60C,EAAY76C,KAAKu1B,KAAK50B,KAAKq1B,eAAeykB,EAAcA,EAAcz0C,OAAS,GAAGwM,GAAKxS,KAAKu1B,KAAK50B,KAAKq1B,eAAeykB,EAAc,GAAGjoC,GACtIsoC,EAAiBF,EAAiBC,CACtCF,GAAYn2C,KAAKL,IAAIK,KAAKu2C,KAAK,GAAMH,GAAiBp2C,KAAKJ,IAAI,EAAGI,KAAK+pB,MAAMusB,IAG7E,KAAK,GADDE,MACKvuB,EAAI,EAAOmuB,EAAJnuB,EAAoBA,GAAKkuB,EACvCK,EAAYzyC,KAAKkyC,EAAchuB,GAGjCmK,GAAWyd,EAASxuC,IAAMm1C,KAgBpCh4C,EAAUkR,UAAUmmC,YAAc,SAAUhG,EAAUzd,EAAYkjB,GAChE,GAAIhJ,GAAWp+B,EAAO7M,EAGlBqJ,EAFA+rC,KACAC,IAEJ,IAAI7G,EAASruC,OAAS,EAAG,CACvB,IAAKH,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/BirC,EAAYla,EAAWyd,EAASxuC,IAChCqJ,EAAUlP,KAAK+0B,OAAOsf,EAASxuC,IAAIqJ,QAC/B4hC,EAAU9qC,OAAS,IACrB0M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IAES,SAAlCqJ,EAAQypC,SAASC,eAA6C,OAAjB1pC,EAAQxB,MACvB,QAA5BwB,EAAQ0hC,iBAA6BqK,EAAuBA,EAAoBlmC,OAAOrC,EAAMm+B,UAAUC,IAClEoK,EAAuBA,EAAqBnmC,OAAOrC,EAAMm+B,UAAUC,IAG5GgJ,EAAYzF,EAASxuC,IAAM6M,EAAMm+B,UAAUC,EAAUuD,EAASxuC,IAMpEuzC,GAAkB+B,oBAAoBF,EAAsBnB,EAAazF,EAAU,iBAAmB,QACtG+E,EAAkB+B,oBAAoBD,EAAsBpB,EAAazF,EAAU,kBAAmB,WAW1GrxC,EAAUkR,UAAUomC,aAAe,SAAUjG,EAAUyF,GACrD,GAGoEsB,GAAQC,EAHxExR,GAAU,EACVyR,GAAgB,EAChBC,GAAiB,EACjBC,EAAU,IAAKC,EAAW,IAAKC,EAAU,KAAMC,EAAW,IAE9D,IAAItH,EAASruC,OAAS,EAAG,CAEvB,IAAK,GAAIH,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAAK,CACxC,GAAI6M,GAAQ1S,KAAK+0B,OAAOsf,EAASxuC,GAC7B6M,IAA2C,SAAlCA,EAAMxD,QAAQ0hC,kBACzB0K,GAAgB,EAChBE,EAAU,EACVE,EAAU,GAEHhpC,GAASA,EAAMxD,QAAQ0hC,mBAC9B2K,GAAiB,EACjBE,EAAW,EACXE,EAAW,GAKf,IAAK,GAAI91C,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/Bi0C,EAAY3zC,eAAekuC,EAASxuC,KAClCi0C,EAAYzF,EAASxuC,IAAI+1C,UAAW,IACtCR,EAAStB,EAAYzF,EAASxuC,IAAI1B,IAClCk3C,EAASvB,EAAYzF,EAASxuC,IAAIzB,IAEe,SAA7C01C,EAAYzF,EAASxuC,IAAI+qC,kBAC3B0K,GAAgB,EAChBE,EAAUA,EAAUJ,EAASA,EAASI,EACtCE,EAAoBL,EAAVK,EAAmBL,EAASK,IAGtCH,GAAiB,EACjBE,EAAWA,EAAWL,EAASA,EAASK,EACxCE,EAAsBN,EAAXM,EAAoBN,EAASM,GAM3B,IAAjBL,GACFt7C,KAAKs5B,UAAUnF,SAASqnB,EAASE,GAEb,GAAlBH,GACFv7C,KAAKu5B,WAAWpF,SAASsnB,EAAUE,GAoCvC,MAjCA9R,GAAU7pC,KAAK67C,qBAAqBP,EAAgBt7C,KAAKs5B,YAAeuQ,EACxEA,EAAU7pC,KAAK67C,qBAAqBN,EAAgBv7C,KAAKu5B,aAAesQ,EAElD,GAAlB0R,GAA2C,GAAjBD,GAC5Bt7C,KAAKs5B,UAAUwiB,WAAY,EAC3B97C,KAAKu5B,WAAWuiB,WAAY,IAG5B97C,KAAKs5B,UAAUwiB,WAAY,EAC3B97C,KAAKu5B,WAAWuiB,WAAY,GAE9B97C,KAAKu5B,WAAW2S,QAAUoP,EACI,GAA1Bt7C,KAAKu5B,WAAW2S,QACWlsC,KAAKs5B,UAAU2S,WAAtB,GAAlBsP,EAAqDv7C,KAAKu5B,WAAWjmB,MAChB,EAEzDu2B,EAAU7pC,KAAKs5B,UAAU7W,UAAYonB,EACrC7pC,KAAKu5B,WAAWwS,iBAAmB/rC,KAAKs5B,UAAUwS,WAClD9rC,KAAKu5B,WAAWyS,aAAehsC,KAAKs5B,UAAU0S,aAC9CnC,EAAU7pC,KAAKu5B,WAAW9W,UAAYonB,GAGtCA,EAAU7pC,KAAKu5B,WAAW9W,UAAYonB,EAIE,IAAtCwK,EAASrtC,QAAQ,mBACnBqtC,EAAS1rC,OAAO0rC,EAASrtC,QAAQ,kBAAkB,GAEV,IAAvCqtC,EAASrtC,QAAQ,oBACnBqtC,EAAS1rC,OAAO0rC,EAASrtC,QAAQ,mBAAmB,GAG/C6iC,GAYT7mC,EAAUkR,UAAU2nC,qBAAuB,SAAUE,EAAUhZ,GAC7D,GAAI7B,IAAU,CAad,OAZgB,IAAZ6a,EACEhZ,EAAKpS,IAAIrQ,MAAMnW,YAA6B,GAAf44B,EAAKrJ,SACpCqJ,EAAK+D,OACL5F,GAAU,GAIP6B,EAAKpS,IAAIrQ,MAAMnW,YAA6B,GAAf44B,EAAKrJ,SACrCqJ,EAAKgE,OACL7F,GAAU,GAGPA,GAaTl+B,EAAUkR,UAAUkmC,qBAAuB,SAAU4B,GAKnD,IAAK,GAHDC,GAAQC,EADRC,KAEArmB,EAAW91B,KAAKu1B,KAAK50B,KAAKm1B,SAErBjwB,EAAI,EAAGA,EAAIm2C,EAAWh2C,OAAQH,IACrCo2C,EAASnmB,EAASkmB,EAAWn2C,GAAG2M,GAAKxS,KAAKqG,MAAMiN,MAChD4oC,EAASF,EAAWn2C,GAAG4M,EACvB0pC,EAAc5zC,MAAMiK,EAAGypC,EAAQxpC,EAAGypC,GAGpC,OAAOC,IAcTn5C,EAAUkR,UAAUsmC,qBAAuB,SAAUwB,EAAYtpC,GAC/D,GACIupC,GAAQC,EADRC,KAEArmB,EAAW91B,KAAKu1B,KAAK50B,KAAKm1B,SAC1BiN,EAAO/iC,KAAKs5B,UACZ8iB,EAAYn4C,OAAOjE,KAAK8qC,IAAIp9B,MAAM6F,OAAOtI,QAAQ,KAAK,IACpB,UAAlCyH,EAAMxD,QAAQ0hC,mBAChB7N,EAAO/iC,KAAKu5B,WAGd,KAAK,GAAI1zB,GAAI,EAAGA,EAAIm2C,EAAWh2C,OAAQH,IAAK,CAC1C,GAAIw2C,EAOJA,GAAaL,EAAWn2C,GAAGmN,MAAQgpC,EAAWn2C,GAAGmN,MAAQ,KACzDipC,EAASnmB,EAASkmB,EAAWn2C,GAAG2M,GAAKxS,KAAKqG,MAAMiN,MAChD4oC,EAAS13C,KAAK+pB,MAAMwU,EAAK0L,aAAauN,EAAWn2C,GAAG4M,IACpD0pC,EAAc5zC,MAAMiK,EAAGypC,EAAQxpC,EAAGypC,EAAQlpC,MAAMqpC,IAKlD,MAFA3pC,GAAMo9B,gBAAgBtrC,KAAKL,IAAIi4C,EAAWrZ,EAAK0L,aAAa,KAErD0N,GAITt8C,EAAOD,QAAUoD,GAKb,SAASnD,EAAQD,EAASM,GAgB9B,QAAS+C,GAAUsyB,EAAMrmB,GACvBlP,KAAK2wB,KACHoI,WAAY,KACZ2S,SACA4Q,cACAC,cACA9qC,WACEi6B,SACA4Q,cACAC,gBAGJv8C,KAAKqG,OACHiwB,OACEjmB,MAAO,EACPC,IAAK,EACL8sB,YAAa,GAEfof,QAAS,GAGXx8C,KAAKi1B,gBACHE,YAAa,SAEb6V,iBAAiB,EACjBC,iBAAiB,EACjB1H,OAAQ,KACR1N,SAAU,MAEZ71B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAEpCj1B,KAAKu1B,KAAOA,EAGZv1B,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAlDlB,GAAIvO,GAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC6B,EAAW7B,EAAoB,IAC/ByB,EAAWzB,EAAoB,IAC/B2D,EAAS3D,EAAoB,GAiDjC+C,GAASiR,UAAY,GAAI3R,GAUzBU,EAASiR,UAAUD,WAAa,SAAS/E,GACnCA,IAEFvO,EAAKyF,iBACH,cACA,kBACA,kBACA,cACA,SACA,YACCpG,KAAKkP,QAASA,GAIb,UAAYA,KACe,kBAAlBrL,GAAOuiC,OAEhBviC,EAAOuiC,OAAOl3B,EAAQk3B,QAGtBviC,EAAOwiC,KAAKn3B,EAAQk3B,WAS5BnjC,EAASiR,UAAUohB,QAAU,WAC3Bt1B,KAAK2wB,IAAIoI,WAAa/mB,SAASM,cAAc,OAC7CtS,KAAK2wB,IAAI9jB,WAAamF,SAASM,cAAc,OAE7CtS,KAAK2wB,IAAIoI,WAAW3wB,UAAY,sBAChCpI,KAAK2wB,IAAI9jB,WAAWzE,UAAY,uBAMlCnF,EAASiR,UAAUG,QAAU,WAEvBrU,KAAK2wB,IAAIoI,WAAW5uB,YACtBnK,KAAK2wB,IAAIoI,WAAW5uB,WAAWyH,YAAY5R,KAAK2wB,IAAIoI,YAElD/4B,KAAK2wB,IAAI9jB,WAAW1C,YACtBnK,KAAK2wB,IAAI9jB,WAAW1C,WAAWyH,YAAY5R,KAAK2wB,IAAI9jB,YAGtD7M,KAAKu1B,KAAO,MAOdtyB,EAASiR,UAAUuO,OAAS,WAC1B,GAAIvT,GAAUlP,KAAKkP,QACf7I,EAAQrG,KAAKqG,MACb0yB,EAAa/4B,KAAK2wB,IAAIoI,WACtBlsB,EAAa7M,KAAK2wB,IAAI9jB,WAGtBxC,EAAiC,OAAvB6E,EAAQimB,YAAwBn1B,KAAKu1B,KAAK5E,IAAI1oB,IAAMjI,KAAKu1B,KAAK5E,IAAIrM,OAC5Em4B,EAAiB1jB,EAAW5uB,aAAeE,CAG/CrK,MAAKotC,oBAGL,IACIpC,IADchrC,KAAKkP,QAAQimB,YACTn1B,KAAKkP,QAAQ87B,iBAC/BC,EAAkBjrC,KAAKkP,QAAQ+7B,eAGnC5kC,GAAMgnC,iBAAmBrC,EAAkB3kC,EAAMinC,gBAAkB,EACnEjnC,EAAMknC,iBAAmBtC,EAAkB5kC,EAAMmnC,gBAAkB,EACnEnnC,EAAMkN,OAASlN,EAAMgnC,iBAAmBhnC,EAAMknC,iBAC9ClnC,EAAMiN,MAAQylB,EAAW/H,YAEzB3qB,EAAMqnC,gBAAkB1tC,KAAKu1B,KAAKC,SAAS91B,KAAK6T,OAASlN,EAAMknC,kBACnC,OAAvBr+B,EAAQimB,YAAuBn1B,KAAKu1B,KAAKC,SAASlR,OAAO/Q,OAASvT,KAAKu1B,KAAKC,SAASvtB,IAAIsL,QAC9FlN,EAAMonC,eAAiB,EACvBpnC,EAAMunC,gBAAkBvnC,EAAMqnC,gBAAkBrnC,EAAMknC,iBACtDlnC,EAAMsnC,eAAiB,CAGvB,IAAI+O,GAAwB3jB,EAAW4jB,YACnCC,EAAwB/vC,EAAW8vC,WAsBvC,OArBA5jB,GAAW5uB,YAAc4uB,EAAW5uB,WAAWyH,YAAYmnB,GAC3DlsB,EAAW1C,YAAc0C,EAAW1C,WAAWyH,YAAY/E,GAE3DksB,EAAWrrB,MAAM6F,OAASvT,KAAKqG,MAAMkN,OAAS,KAE9CvT,KAAK68C,iBAGDH,EACFryC,EAAOgI,aAAa0mB,EAAY2jB,GAGhCryC,EAAO6H,YAAY6mB,GAEjB6jB,EACF58C,KAAKu1B,KAAK5E,IAAIuZ,mBAAmB73B,aAAaxF,EAAY+vC,GAG1D58C,KAAKu1B,KAAK5E,IAAIuZ,mBAAmBh4B,YAAYrF,GAGxC7M,KAAK4pC,cAAgB6S,GAO9Bx5C,EAASiR,UAAU2oC,eAAiB,WAClC,GAAI1nB,GAAcn1B,KAAKkP,QAAQimB,YAG3B9kB,EAAQ1P,EAAKuG,QAAQlH,KAAKu1B,KAAKe,MAAMjmB,MAAO,UAC5CC,EAAM3P,EAAKuG,QAAQlH,KAAKu1B,KAAKe,MAAMhmB,IAAK,UACxCwsC,EAAgB98C,KAAKu1B,KAAK50B,KAAKu1B,OAA2C,GAAnCl2B,KAAKqG,MAAM0oC,gBAAkB,KAAS1nC,UAC7E+1B,EAAc0f,EAAgBn7C,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAKu1B,KAAKe,MAAOwmB,EAC3G1f,IAAep9B,KAAKu1B,KAAK50B,KAAKu1B,OAAO,GAAG7uB,SAExC,IAAI8hB,GAAO,GAAIpnB,GAAS,GAAI6C,MAAKyL,GAAQ,GAAIzL,MAAK0L,GAAM8sB,EAAap9B,KAAKu1B,KAAKI,YAC3E31B,MAAKkP,QAAQq0B,QACfpa,EAAK6a,UAAUhkC,KAAKkP,QAAQq0B,QAE1BvjC,KAAKkP,QAAQ2mB,UACf1M,EAAK8b,SAASjlC,KAAKkP,QAAQ2mB,UAE7B71B,KAAKmpB,KAAOA,CAKZ,IAAIwH,GAAM3wB,KAAK2wB,GACfA,GAAIlf,UAAUi6B,MAAQ/a,EAAI+a,MAC1B/a,EAAIlf,UAAU6qC,WAAa3rB,EAAI2rB,WAC/B3rB,EAAIlf,UAAU8qC,WAAa5rB,EAAI4rB,WAC/B5rB,EAAI+a,SACJ/a,EAAI2rB,cACJ3rB,EAAI4rB,aAEJ,IAAIQ,GAEA7d,EAGA8d,EAGA50C,EAPAoK,EAAI,EAEJyqC,EAAQ,EACR3pC,EAAQ,EAER4pC,EAAmBr2C,OACnBzC,EAAM,CAIV,KADA+kB,EAAK+a,QACE/a,EAAK0V,WAAmB,IAANz6B,GACvBA,IAEA24C,EAAM5zB,EAAKC,aACX8V,EAAU/V,EAAK+V,UACf92B,EAAY+gB,EAAK0c,eAEjBoX,EAAQzqC,EACRA,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAASinB,GAC5BzpC,EAAQd,EAAIyqC,EACRD,IACFA,EAAStvC,MAAM4F,MAAQA,EAAQ,MAG7BtT,KAAKkP,QAAQ87B,iBACfhrC,KAAKm9C,kBAAkB3qC,EAAG2W,EAAKwc,gBAAiBxQ,EAAa/sB,GAG3D82B,GAAWl/B,KAAKkP,QAAQ+7B,iBACtBz4B,EAAI,IACkB3L,QAApBq2C,IACFA,EAAmB1qC,GAErBxS,KAAKo9C,kBAAkB5qC,EAAG2W,EAAKyc,gBAAiBzQ,EAAa/sB,IAE/D40C,EAAWh9C,KAAKq9C,kBAAkB7qC,EAAG2iB,EAAa/sB,IAGlD40C,EAAWh9C,KAAKs9C,kBAAkB9qC,EAAG2iB,EAAa/sB,GAGpD+gB,EAAKE,MAIP,IAAIrpB,KAAKkP,QAAQ+7B,gBAAiB,CAChC,GAAIsS,GAAWv9C,KAAKu1B,KAAK50B,KAAKu1B,OAAO,GACjCsnB,EAAWr0B,EAAKyc,cAAc2X,GAC9BE,EAAYD,EAASx3C,QAAUhG,KAAKqG,MAAMyoC,gBAAkB,IAAM,IAE9CjoC,QAApBq2C,GAA6CA,EAAZO,IACnCz9C,KAAKo9C,kBAAkB,EAAGI,EAAUroB,EAAa/sB,GAKrDzH,EAAKiI,QAAQ5I,KAAK2wB,IAAIlf,UAAW,SAAUisC,GACzC,KAAOA,EAAI13C,QAAQ,CACjB,GAAI2B,GAAO+1C,EAAIC,KACXh2C,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWyH,YAAYjK,OAcpC1E,EAASiR,UAAUipC,kBAAoB,SAAU3qC,EAAG8X,EAAM6K,EAAa/sB,GAErE,GAAI4K,GAAQhT,KAAK2wB,IAAIlf,UAAU8qC,WAAWxqC,OAE1C,KAAKiB,EAAO,CAEV,GAAIG,GAAUnB,SAASi9B,eAAe,GACtCj8B,GAAQhB,SAASM,cAAc,OAC/BU,EAAMd,YAAYiB,GAClBnT,KAAK2wB,IAAIoI,WAAW7mB,YAAYc,GAElChT,KAAK2wB,IAAI4rB,WAAWh0C,KAAKyK,GAEzBA,EAAM4qC,WAAW,GAAGC,UAAYvzB,EAEhCtX,EAAMtF,MAAMzF,IAAsB,OAAfktB,EAAyBn1B,KAAKqG,MAAMknC,iBAAmB,KAAQ,IAClFv6B,EAAMtF,MAAM7F,KAAO2K,EAAI,KACvBQ,EAAM5K,UAAY,cAAgBA,GAYpCnF,EAASiR,UAAUkpC,kBAAoB,SAAU5qC,EAAG8X,EAAM6K,EAAa/sB,GAErE,GAAI4K,GAAQhT,KAAK2wB,IAAIlf,UAAU6qC,WAAWvqC,OAE1C,KAAKiB,EAAO,CAEV,GAAIG,GAAUnB,SAASi9B,eAAe3kB,EACtCtX,GAAQhB,SAASM,cAAc,OAC/BU,EAAMd,YAAYiB,GAClBnT,KAAK2wB,IAAIoI,WAAW7mB,YAAYc,GAElChT,KAAK2wB,IAAI2rB,WAAW/zC,KAAKyK,GAEzBA,EAAM4qC,WAAW,GAAGC,UAAYvzB,EAChCtX,EAAM5K,UAAY,cAAgBA,EAGlC4K,EAAMtF,MAAMzF,IAAsB,OAAfktB,EAAwB,IAAOn1B,KAAKqG,MAAMgnC,iBAAoB,KACjFr6B,EAAMtF,MAAM7F,KAAO2K,EAAI,MAWzBvP,EAASiR,UAAUopC,kBAAoB,SAAU9qC,EAAG2iB,EAAa/sB,GAE/D,GAAIqoB,GAAOzwB,KAAK2wB,IAAIlf,UAAUi6B,MAAM35B,OAC/B0e,KAEHA,EAAOze,SAASM,cAAc,OAC9BtS,KAAK2wB,IAAI9jB,WAAWqF,YAAYue,IAElCzwB,KAAK2wB,IAAI+a,MAAMnjC,KAAKkoB,EAEpB,IAAIpqB,GAAQrG,KAAKqG,KAYjB,OAVEoqB,GAAK/iB,MAAMzF,IADM,OAAfktB,EACe9uB,EAAMknC,iBAAmB,KAGzBvtC,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAAS,KAEnDkd,EAAK/iB,MAAM6F,OAASlN,EAAMqnC,gBAAkB,KAC5Cjd,EAAK/iB,MAAM7F,KAAQ2K,EAAInM,EAAMonC,eAAiB,EAAK,KAEnDhd,EAAKroB,UAAY,uBAAyBA,EAEnCqoB,GAWTxtB,EAASiR,UAAUmpC,kBAAoB,SAAU7qC,EAAG2iB,EAAa/sB,GAE/D,GAAIqoB,GAAOzwB,KAAK2wB,IAAIlf,UAAUi6B,MAAM35B,OAC/B0e,KAEHA,EAAOze,SAASM,cAAc,OAC9BtS,KAAK2wB,IAAI9jB,WAAWqF,YAAYue,IAElCzwB,KAAK2wB,IAAI+a,MAAMnjC,KAAKkoB,EAEpB,IAAIpqB,GAAQrG,KAAKqG,KAYjB,OAVEoqB,GAAK/iB,MAAMzF,IADM,OAAfktB,EACe,IAGAn1B,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAAS,KAEnDkd,EAAK/iB,MAAM7F,KAAQ2K,EAAInM,EAAMsnC,eAAiB,EAAK,KACnDld,EAAK/iB,MAAM6F,OAASlN,EAAMunC,gBAAkB,KAE5Cnd,EAAKroB,UAAY,uBAAyBA,EAEnCqoB,GAQTxtB,EAASiR,UAAUk5B,mBAAqB,WAKjCptC,KAAK2wB,IAAIue,mBACZlvC,KAAK2wB,IAAIue,iBAAmBl9B,SAASM,cAAc,OACnDtS,KAAK2wB,IAAIue,iBAAiB9mC,UAAY,qBACtCpI,KAAK2wB,IAAIue,iBAAiBxhC,MAAMkX,SAAW,WAE3C5kB,KAAK2wB,IAAIue,iBAAiBh9B,YAAYF,SAASi9B,eAAe,MAC9DjvC,KAAK2wB,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAIue,mBAE3ClvC,KAAKqG,MAAMinC,gBAAkBttC,KAAK2wB,IAAIue,iBAAiBrpB,aACvD7lB,KAAKqG,MAAM0oC,eAAiB/uC,KAAK2wB,IAAIue,iBAAiB1uB,YAGjDxgB,KAAK2wB,IAAIye,mBACZpvC,KAAK2wB,IAAIye,iBAAmBp9B,SAASM,cAAc,OACnDtS,KAAK2wB,IAAIye,iBAAiBhnC,UAAY,qBACtCpI,KAAK2wB,IAAIye,iBAAiB1hC,MAAMkX,SAAW,WAE3C5kB,KAAK2wB,IAAIye,iBAAiBl9B,YAAYF,SAASi9B,eAAe,MAC9DjvC,KAAK2wB,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAIye,mBAE3CpvC,KAAKqG,MAAMmnC,gBAAkBxtC,KAAK2wB,IAAIye,iBAAiBvpB,aACvD7lB,KAAKqG,MAAMyoC,eAAiB9uC,KAAK2wB,IAAIye,iBAAiB5uB,aAGxD3gB,EAAOD,QAAUqD,GAKb,SAASpD,EAAQD,EAASM,GAkC9B,QAASgD,GAASsX,EAAW/G,EAAMvE,GACjC,KAAMlP,eAAgBkD,IACpB,KAAM,IAAIuX,aAAY,mDAGxBza,MAAK89C,0BACL99C,KAAK+9C,0BAGL/9C,KAAK0a,iBAAmBF,EAGxBxa,KAAKg+C,kBAAoB,GACzBh+C,KAAKi+C,eAAiB,IAAOj+C,KAAKg+C,kBAClCh+C,KAAKk+C,WAAa,EAClBl+C,KAAKm+C,YAAc,EACnBn+C,KAAKo+C,gBAAiB,EACtBp+C,KAAKq+C,wBAA0B,GAE/Br+C,KAAKs+C,cAAe,EAEpBt+C,KAAKu+C,kBAAoBvqC,IAAI,KAAKwqC,KAAK,KAAKC,SAAS,KAAKC,QAAQ,KAAKC,IAAI,KAE3E,IAAIC,GAAwB,SAAUz6C,EAAIC,EAAIC,EAAMC,GAClD,GAAIF,GAAOD,EACT,MAAO,EAGP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAGE,EAAQH,GAAKI,GAIpCvE,MAAKi1B,gBACH4pB,OACED,sBAAuBA,EACvBE,KAAM,EACNC,UAAW,GACXC,UAAW,GACX1yB,OAAQ,GACR2yB,MAAO,UACPC,MAAOr4C,OACPqhB,SAAU,GACVC,SAAU,GACVg3B,UAAW,QACXC,SAAU,GACVC,SAAU,UACVC,SAAUz4C,OACV04C,gBAAiB,EACjBC,gBAAiB,UACjBC,kBAAmB,EACnBC,oBAAoB,EACpBC,YAAa,GACbC,YAAa,GACbC,mBAAoB,GACpBC,MAAO,GACPv0C,OACIuB,OAAQ,UACRD,WAAY,UACdE,WACED,OAAQ,UACRD,WAAY,WAEdG,OACEF,OAAQ,UACRD,WAAY,YAGhB6F,MAAO7L,OACPma,YAAa,EACb++B,oBAAqBl5C,QAEvBm5C,OACEpB,sBAAuBA,EACvB12B,SAAU,EACVC,SAAU,GACV7U,MAAO,EACP2sC,yBAA0B,EAC1BC,WAAY,IACZxyC,MAAO,OACPnC,OACEA,MAAM,UACNwB,UAAU,UACVC,MAAO,WAETxB,QAAQ,EACR2zC,UAAW,UACXC,SAAU,GACVC,SAAU,QACVC,SAAU,QACVC,gBAAiB,EACjBC,gBAAiB,QACjBW,eAAe,aACfC,iBAAkB,EAClBC,MACEr6C,OAAQ,GACRs6C,IAAK,EACLC,UAAW15C,QAEb25C,aAAc,OACdC,cAAc,GAEhBC,kBAAiB,EACjBC,SACEC,WACEzxC,SAAS,EACT0xC,cAAe,EACfC,sBAAuB,KACvBC,eAAgB,GAChBC,aAAc,GACdC,eAAgB,IAChBC,QAAS,KAEXC,WACEJ,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXG,uBACElyC,SAAS,EACT4xC,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXA,QAAS,KACTH,eAAgB,KAChBC,aAAc,KACdC,eAAgB,MAElBK,YACEnyC,SAAS,EACToyC,gBAAiB,IACjBC,iBAAiB,IACjBC,cAAc,IACdC,eAAgB,GAChBC,qBAAsB,GACtBC,gBAAiB,IACjBC,oBAAqB,GACrBC,mBAAoB,EACpBC,YAAa,IACbC,mBAAoB,GACpBC,sBAAuB,GACvBC,WAAY,GACZC,aAAc7uC,MAAQ,EACRC,OAAQ,EACR+Y,OAAQ,GACtB81B,sBAAuB,IACvBC,kBAAmB,GACnBC,uBAAwB,EACxBC,eAAe,GAEjBC,YACErzC,SAAS,GAEXszC,UACEtzC,SAAS,EACTuzC,OAAQlwC,EAAG,GAAIC,EAAG,GAAIyvB,KAAM,KAC5BygB,cAAc,GAEhBC,kBACEzzC,SAAS,EACT0zC,kBAAkB,GAEpBC,oBACE3zC,SAAQ,EACR4zC,gBAAiB,IACjBC,YAAa,IACb9lB,UAAW,KACX+lB,OAAQ,WAEVC,wBAAwB,EACxBC,cACEh0C,SAAS,EACTi0C,SAAS,EACTj8C,KAAM,aACNk8C,UAAW,IAEbC,YAAc,GACdC,YAAc,GACdC,WAAW,EACXC,wBAAyB,IACzBC,uBAAuB,EACvBtd,OAAQ,KACR6D,QAASA,EACT7iB,SACE3N,MAAO,IACP0lC,UAAW,QACXC,SAAU,GACVC,SAAU,UACV9zC,OACEuB,OAAQ,OACRD,WAAY,YAGhB82C,aAAa,EACbC,WAAW,EACXjkB,UAAU,EACV3yB,OAAO,EACP62C,iBAAiB,EACjBC,iBAAiB,EACjBxwC,MAAQ,OACRC,OAAS,OACT+/B,YAAY,EACZyQ,kBAAkB,GAEpB/jD,KAAKgkD,UAAYrjD,EAAKgF,UAAW3F,KAAKi1B,gBACtCj1B,KAAKikD,WAAa,EAGlBjkD,KAAKkkD,UAAYrF,SAASmB,UAC1BhgD,KAAKmkD,oBAAqB,EAC1BnkD,KAAKokD,qBACLpkD,KAAKqkD,uBAGLrkD,KAAKskD,eAAiB,EAAEtkD,KAAKg+C,kBAC7Bh+C,KAAKukD,wBAA0B,iBAC/BvkD,KAAKwkD,WAAY,EACjBxkD,KAAKykD,WAAa,EAClBzkD,KAAK0kD,YAAc,EACnB1kD,KAAK2kD,YAAc,EACnB3kD,KAAK4kD,kBAAoB,EACzB5kD,KAAK6kD,kBAAoB,EACzB7kD,KAAK8kD,eAAiB,KACtB9kD,KAAK+kD,mBAAqB,KAC1B/kD,KAAKglD,UAAY,EACjBhlD,KAAKilD,iBAAkB,CAGvB;GAAI9hD,GAAUnD,IACdA,MAAK+0B,OAAS,GAAI1xB,GAClBrD,KAAKklD,OAAS,GAAI5hD,GAClBtD,KAAKklD,OAAOC,kBAAkB,WAC5BhiD,EAAQiiD,mBAIVplD,KAAKqlD,WAAa,EAClBrlD,KAAKslD,WAAa,EAClBtlD,KAAKulD,cAAgB,EAIrBvlD,KAAKwlD,qBAELxlD,KAAKs1B,UAELt1B,KAAKylD,oBAELzlD,KAAK0lD,qBAEL1lD,KAAK2lD,uBAEL3lD,KAAK4lD,uBAIL5lD,KAAK6lD,gBAAgB7lD,KAAKsgB,MAAME,YAAc,EAAGxgB,KAAKsgB,MAAMuF,aAAe,GAC3E7lB,KAAKie,UAAU,GACfje,KAAKiU,WAAW/E,GAGhBlP,KAAK8lD,yBAA0B,EAC/B9lD,KAAK+lD,mBACL/lD,KAAKgmD,sBAAuB,EAC5BhmD,KAAKimD,YAAa,EAClBjmD,KAAKyjD,wBAA0B,KAC/BzjD,KAAKkmD,eAAgB,EAGrBlmD,KAAKmmD,oBACLnmD,KAAKomD,0BACLpmD,KAAKqmD,eACLrmD,KAAK6+C,SACL7+C,KAAKggD,SAGLhgD,KAAKsmD,eAAqB9zC,EAAK,EAAEC,EAAK,GACtCzS,KAAKumD,mBAAqB/zC,EAAK,EAAEC,EAAK,GACtCzS,KAAKwmD,iBAAmBh0C,EAAK,EAAEC,EAAK,GACpCzS,KAAKymD,cACLzmD,KAAKuE,MAAQ,EACbvE,KAAK0mD,cAAgB1mD,KAAKuE,MAG1BvE,KAAK2mD,UAAY,KACjB3mD,KAAK4mD,UAAY,KAGjB5mD,KAAK6mD,gBACH7yC,IAAO,SAAUnK,EAAOgL,GACtB1R,EAAQ2jD,UAAUjyC,EAAO5S,OACzBkB,EAAQkN,SAEVuF,OAAU,SAAU/L,EAAOgL,GACzB1R,EAAQ4jD,aAAalyC,EAAO5S,OAC5BkB,EAAQkN,SAEV+G,OAAU,SAAUvN,EAAOgL,GACzB1R,EAAQ6jD,aAAanyC,EAAO5S,OAC5BkB,EAAQkN,UAGZrQ,KAAKinD,gBACHjzC,IAAO,SAAUnK,EAAOgL,GACtB1R,EAAQ+jD,UAAUryC,EAAO5S,OACzBkB,EAAQkN,SAEVuF,OAAU,SAAU/L,EAAOgL,GACzB1R,EAAQgkD,aAAatyC,EAAO5S,OAC5BkB,EAAQkN,SAEV+G,OAAU,SAAUvN,EAAOgL,GACzB1R,EAAQikD,aAAavyC,EAAO5S,OAC5BkB,EAAQkN,UAKZrQ,KAAKqnD,QAAS,EACdrnD,KAAKsnD,MAAQzgD,OAGb7G,KAAK+Y,QAAQtF,EAAKzT,KAAKgkD,UAAU1C,WAAWnyC,SAAWnP,KAAKgkD,UAAUlB,mBAAmB3zC,SAGzFnP,KAAKs+C,cAAe,EAC6B,GAA7Ct+C,KAAKgkD,UAAUlB,mBAAmB3zC,QACpCnP,KAAKunD,2BAI2B,GAA5BvnD,KAAKgkD,UAAUR,WACjBxjD,KAAKwnD,YAAYj3C,SAAS,IAAI,EAAMvQ,KAAKgkD,UAAU1C,WAAWnyC,SAK9DnP,KAAKgkD,UAAU1C,WAAWnyC,SAC5BnP,KAAKynD,sBAvXT,GAAIzpC,GAAU9d,EAAoB,IAC9BwmC,EAASxmC,EAAoB,IAC7BwnD,EAAWxnD,EAAoB,IAC/BS,EAAOT,EAAoB,GAC3BugC,EAAavgC,EAAoB,IACjCW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BuD,EAAYvD,EAAoB,IAChCwD,EAAcxD,EAAoB,IAClCmD,EAASnD,EAAoB,IAC7BoD,EAASpD,EAAoB,IAC7BqD,EAAOrD,EAAoB,IAC3BkD,EAAOlD,EAAoB,IAC3BsD,EAAQtD,EAAoB,IAC5BynD,EAAcznD,EAAoB,IAClC0nD,EAAY1nD,EAAoB,IAChC+pC,EAAU/pC,EAAoB,GAGlCA,GAAoB,IAyWpB8d,EAAQ9a,EAAQgR,WAOhBhR,EAAQgR,UAAU4pC,wBAA0B,WAC1C,GAAI+J,GAAct+C,UAAUC,UAAU88B,aACtCtmC,MAAK8nD,iBAAkB,EACgB,IAAnCD,EAAY7gD,QAAQ,YACtBhH,KAAK8nD,iBAAkB,EAEiB,IAAjCD,EAAY7gD,QAAQ,WACvB6gD,EAAY7gD,QAAQ,WAAa,KACnChH,KAAK8nD,iBAAkB,IAa7B5kD,EAAQgR,UAAU6zC,eAAiB,WAIjC,IAAK,GAHDC,GAAUh2C,SAASi2C,qBAAsB,UAGpCpiD,EAAI,EAAGA,EAAImiD,EAAQhiD,OAAQH,IAAK,CACvC,GAAIqiD,GAAMF,EAAQniD,GAAGqiD,IACjBrjD,EAAQqjD,GAAO,qBAAqBnjD,KAAKmjD,EAC7C,IAAIrjD,EAEF,MAAOqjD,GAAI9d,UAAU,EAAG8d,EAAIliD,OAASnB,EAAM,GAAGmB,QAIlD,MAAO,OAQT9C,EAAQgR,UAAUi0C,UAAY,SAASC,GACrC,GAAsDC,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,IAAIL,EAAcpiD,OAAS,EACzB,IAAK,GAAIH,GAAI,EAAGA,EAAIuiD,EAAcpiD,OAAQH,IACxCwiD,EAAOroD,KAAK6+C,MAAMuJ,EAAcviD,IAC5B2iD,EAAQH,EAAKK,YAAgB,OAC/BF,EAAOH,EAAKK,YAAY7gD,MAEtB4gD,EAAQJ,EAAKK,YAAiB,QAChCD,EAAOJ,EAAKK,YAAYrgC,OAEtBigC,EAAQD,EAAKK,YAAkB,SACjCJ,EAAOD,EAAKK,YAAYzgD,KAEtBsgD,EAAQF,EAAKK,YAAe,MAC9BH,EAAOF,EAAKK,YAAYpkC,YAK5B,KAAK,GAAIqkC,KAAU3oD,MAAK6+C,MAClB7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5BN,EAAOroD,KAAK6+C,MAAM8J,GACdH,EAAQH,EAAKK,YAAgB,OAC/BF,EAAOH,EAAKK,YAAY7gD,MAEtB4gD,EAAQJ,EAAKK,YAAiB,QAChCD,EAAOJ,EAAKK,YAAYrgC,OAEtBigC,EAAQD,EAAKK,YAAkB,SACjCJ,EAAOD,EAAKK,YAAYzgD,KAEtBsgD,EAAQF,EAAKK,YAAe,MAC9BH,EAAOF,EAAKK,YAAYpkC,QAShC,OAHY,MAARkkC,GAAuB,MAARC,GAAwB,KAARH,GAAuB,MAARC,IAChDD,EAAO,EAAGC,EAAO,EAAGC,EAAO,EAAGC,EAAO,IAE/BD,KAAMA,EAAMC,KAAMA,EAAMH,KAAMA,EAAMC,KAAMA,IASpDrlD,EAAQgR,UAAU00C,YAAc,SAAStyB,GACvC,OAAQ9jB,EAAI,IAAO8jB,EAAMmyB,KAAOnyB,EAAMkyB,MAC9B/1C,EAAI,IAAO6jB,EAAMiyB,KAAOjyB,EAAMgyB,QAUxCplD,EAAQgR,UAAUszC,WAAa,SAASt4C,EAAS25C,EAAaC,GAC5D9oD,KAAKi3B,SAAQ,GAEYpwB,SAArBgiD,IAAiCA,GAAc,GAC1BhiD,SAArBiiD,IAAiCA,GAAe,GACpCjiD,SAAZqI,IAAwBA,GAAW2vC,WACjBh4C,SAAlBqI,EAAQ2vC,QACV3vC,EAAQ2vC,SAGV,IAAIvoB,GACAyyB,CAEJ,IAAmB,GAAfF,EAAqB,CAEvB,GAAIG,GAAkB,CACtB,KAAK,GAAIL,KAAU3oD,MAAK6+C,MACtB,GAAI7+C,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrC,GAAIN,GAAOroD,KAAK6+C,MAAM8J,EACS,IAA3BN,EAAKY,qBACPD,GAAmB,GAIzB,GAAIA,EAAkB,GAAMhpD,KAAKqmD,YAAYrgD,OAE3C,WADAhG,MAAKwnD,WAAWt4C,GAAQ,EAAM45C,EAIhCxyB,GAAQt2B,KAAKmoD,UAAUj5C,EAAQ2vC,MAE/B,IAAIqK,GAAgBlpD,KAAKqmD,YAAYrgD,MAIjC+iD,GAH+B,GAA/B/oD,KAAKgkD,UAAUb,aACwB,GAArCnjD,KAAKgkD,UAAU1C,WAAWnyC,SAC5B+5C,GAAiBlpD,KAAKgkD,UAAU1C,WAAWC,gBAC/B,UAAY2H,EAAgB,WAAa,SAGzC,QAAUA,EAAgB,QAAU,SAIT,GAArClpD,KAAKgkD,UAAU1C,WAAWnyC,SAC1B+5C,GAAiBlpD,KAAKgkD,UAAU1C,WAAWC,gBACjC,YAAc2H,EAAgB,YAAc,cAG5C,YAAcA,EAAgB,aAAe,SAK7D,IAAIC,GAAS3kD,KAAKL,IAAInE,KAAKsgB,MAAMC,OAAOC,YAAc,IAAKxgB,KAAKsgB,MAAMC,OAAOsF,aAAe,IAC5FkjC,IAAaI,MAEV,CACH7yB,EAAQt2B,KAAKmoD,UAAUj5C,EAAQ2vC,MAC/B,IAAIhE,GAAgD,IAApCr2C,KAAKknB,IAAI4K,EAAMmyB,KAAOnyB,EAAMkyB,MACxCY,EAAgD,IAApC5kD,KAAKknB,IAAI4K,EAAMiyB,KAAOjyB,EAAMgyB,MAExCe,EAAarpD,KAAKsgB,MAAMC,OAAOC,YAAeq6B,EAC9CyO,EAAatpD,KAAKsgB,MAAMC,OAAOsF,aAAeujC,CAClDL,GAA2BO,GAAdD,EAA4BA,EAAaC,EAGpDP,EAAY,IACdA,EAAY,EAId,IAAIh8B,GAAS/sB,KAAK4oD,YAAYtyB,EAC9B,IAAoB,GAAhBwyB,EAAuB,CACzB,GAAI55C,IAAW0V,SAAUmI,EAAQxoB,MAAOwkD,EAAWQ,UAAWr6C,EAC9DlP,MAAK6oB,OAAO3Z,GACZlP,KAAKqnD,QAAS,EACdrnD,KAAKqQ,YAGL0c,GAAOva,GAAKu2C,EACZh8B,EAAOta,GAAKs2C,EACZh8B,EAAOva,GAAK,GAAMxS,KAAKsgB,MAAMC,OAAOC,YACpCuM,EAAOta,GAAK,GAAMzS,KAAKsgB,MAAMC,OAAOsF,aACpC7lB,KAAKie,UAAU8qC,GACf/oD,KAAK6lD,iBAAiB94B,EAAOva,GAAGua,EAAOta,IAS3CvP,EAAQgR,UAAUs1C,qBAAuB,WACvCxpD,KAAKypD,qBACL,KAAK,GAAIC,KAAO1pD,MAAK6+C,MACf7+C,KAAK6+C,MAAM14C,eAAeujD,IAC5B1pD,KAAKqmD,YAAY99C,KAAKmhD,IAiB5BxmD,EAAQgR,UAAU6E,QAAU,SAAStF,EAAMq1C,GAWzC,GAVqBjiD,SAAjBiiD,IACFA,GAAe,GAIjB9oD,KAAK2pD,cAAa,GAGlB3pD,KAAKs+C,cAAe,EAEhB7qC,GAAQA,EAAKid,MAAQjd,EAAKorC,OAASprC,EAAKusC,OAC1C,KAAM,IAAIvlC,aAAY,iGAYxB,IAP+C,GAA3Cza,KAAKgkD,UAAUpB,iBAAiBzzC,SAClCnP,KAAK4pD,wBAIP5pD,KAAKiU,WAAWR,GAAQA,EAAKvE,SAEzBuE,GAAQA,EAAKid,KAEf,GAAGjd,GAAQA,EAAKid,IAAK,CACnB,GAAIm5B,GAAUpmD,EAAUqmD,WAAWr2C,EAAKid,IAExC,YADA1wB,MAAK+Y,QAAQ8wC,QAIZ,IAAIp2C,GAAQA,EAAKs2C,OAEpB,GAAGt2C,GAAQA,EAAKs2C,MAAO,CACrB,GAAIC,GAAYtmD,EAAYumD,WAAWx2C,EAAKs2C,MAE5C,YADA/pD,MAAK+Y,QAAQixC,QAKfhqD,MAAKkqD,UAAUz2C,GAAQA,EAAKorC,OAC5B7+C,KAAKmqD,UAAU12C,GAAQA,EAAKusC,MAE9BhgD,MAAKoqD,mBACe,GAAhBtB,IAC+C,GAA7C9oD,KAAKgkD,UAAUlB,mBAAmB3zC,SACpCnP,KAAKqqD,eACLrqD,KAAKunD,4BAI2B,GAA5BvnD,KAAKgkD,UAAUR,WACjBxjD,KAAKsqD,aAGTtqD,KAAKqQ,SAEPrQ,KAAKs+C,cAAe,GAOtBp7C,EAAQgR,UAAUD,WAAa,SAAU/E,GACvC,GAAIA,EAAS,CACX,GAAIhJ,GACAyI,GAAU,QAAQ,QAAQ,eAAe,qBAAqB,aAAa,aAC7E,WAAW,mBAAmB,QAAQ,SAAS,aAAa,YAAY,WAAW,aAQrF,IALAhO,EAAKoG,uBAAuB4H,EAAO3O,KAAKgkD,UAAW90C,GACnDvO,EAAKoG,wBAAwB,SAAS/G,KAAKgkD,UAAUnF,MAAO3vC,EAAQ2vC,OACpEl+C,EAAKoG,wBAAwB,QAAQ,UAAU/G,KAAKgkD,UAAUhE,MAAO9wC,EAAQ8wC,OAE7EhgD,KAAK+0B,OAAOgvB,iBAAmB/jD,KAAKgkD,UAAUD,iBAC1C70C,EAAQyxC,UACVhgD,EAAKqO,aAAahP,KAAKgkD,UAAUrD,QAASzxC,EAAQyxC,QAAQ,aAC1DhgD,EAAKqO,aAAahP,KAAKgkD,UAAUrD,QAASzxC,EAAQyxC,QAAQ,aAEtDzxC,EAAQyxC,QAAQU,uBAAuB,CACzCrhD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAU,EAC5CnP,KAAKgkD,UAAUrD,QAAQU,sBAAsBlyC,SAAU,EACvDnP,KAAKgkD,UAAUrD,QAAQC,UAAUzxC,SAAU,CAC3C,KAAKjJ,IAAQgJ,GAAQyxC,QAAQU,sBACvBnyC,EAAQyxC,QAAQU,sBAAsBl7C,eAAeD,KACvDlG,KAAKgkD,UAAUrD,QAAQU,sBAAsBn7C,GAAQgJ,EAAQyxC,QAAQU,sBAAsBn7C,IAkDnG,GA5CIgJ,EAAQqkC,QAAQvzC,KAAKu+C,iBAAiBvqC,IAAM9E,EAAQqkC,OACpDrkC,EAAQq7C,SAASvqD,KAAKu+C,iBAAiBC,KAAOtvC,EAAQq7C,QACtDr7C,EAAQs7C,aAAaxqD,KAAKu+C,iBAAiBE,SAAWvvC,EAAQs7C,YAC9Dt7C,EAAQu7C,YAAYzqD,KAAKu+C,iBAAiBG,QAAUxvC,EAAQu7C,WAC5Dv7C,EAAQw7C,WAAW1qD,KAAKu+C,iBAAiBI,IAAMzvC,EAAQw7C,UAE3D/pD,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,gBAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,sBAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,cAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,cAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,YAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,oBAGtCA,EAAQ0zC,mBACV5iD,KAAK2qD,SAAW3qD,KAAKgkD,UAAUpB,iBAAiBC,kBAK9C3zC,EAAQ8wC,QACkBn5C,SAAxBqI,EAAQ8wC,MAAMz0C,QACZ5K,EAAK8D,SAASyK,EAAQ8wC,MAAMz0C,QAC9BvL,KAAKgkD,UAAUhE,MAAMz0C,SACrBvL,KAAKgkD,UAAUhE,MAAMz0C,MAAMA,MAAQ2D,EAAQ8wC,MAAMz0C,MACjDvL,KAAKgkD,UAAUhE,MAAMz0C,MAAMwB,UAAYmC,EAAQ8wC,MAAMz0C,MACrDvL,KAAKgkD,UAAUhE,MAAMz0C,MAAMyB,MAAQkC,EAAQ8wC,MAAMz0C,QAGf1E,SAA9BqI,EAAQ8wC,MAAMz0C,MAAMA,QAA0BvL,KAAKgkD,UAAUhE,MAAMz0C,MAAMA,MAAQ2D,EAAQ8wC,MAAMz0C,MAAMA,OACnE1E,SAAlCqI,EAAQ8wC,MAAMz0C,MAAMwB,YAA0B/M,KAAKgkD,UAAUhE,MAAMz0C,MAAMwB,UAAYmC,EAAQ8wC,MAAMz0C,MAAMwB,WAC3ElG,SAA9BqI,EAAQ8wC,MAAMz0C,MAAMyB,QAA0BhN,KAAKgkD,UAAUhE,MAAMz0C,MAAMyB,MAAQkC,EAAQ8wC,MAAMz0C,MAAMyB,QAE3GhN,KAAKgkD,UAAUhE,MAAMQ,cAAe,GAGjCtxC,EAAQ8wC,MAAMb,WACWt4C,SAAxBqI,EAAQ8wC,MAAMz0C,QACZ5K,EAAK8D,SAASyK,EAAQ8wC,MAAMz0C,OAAmBvL,KAAKgkD,UAAUhE,MAAMb,UAAYjwC,EAAQ8wC,MAAMz0C,MAC3D1E,SAA9BqI,EAAQ8wC,MAAMz0C,MAAMA,QAAsBvL,KAAKgkD,UAAUhE,MAAMb,UAAYjwC,EAAQ8wC,MAAMz0C,MAAMA,SAK1G2D,EAAQ2vC,OACN3vC,EAAQ2vC,MAAMtzC,MAAO,CACvB,GAAIq/C,GAAcjqD,EAAKqL,WAAWkD,EAAQ2vC,MAAMtzC,MAChDvL,MAAKgkD,UAAUnF,MAAMtzC,MAAMsB,WAAa+9C,EAAY/9C,WACpD7M,KAAKgkD,UAAUnF,MAAMtzC,MAAMuB,OAAS89C,EAAY99C,OAChD9M,KAAKgkD,UAAUnF,MAAMtzC,MAAMwB,UAAUF,WAAa+9C,EAAY79C,UAAUF,WACxE7M,KAAKgkD,UAAUnF,MAAMtzC,MAAMwB,UAAUD,OAAS89C,EAAY79C,UAAUD,OACpE9M,KAAKgkD,UAAUnF,MAAMtzC,MAAMyB,MAAMH,WAAa+9C,EAAY59C,MAAMH,WAChE7M,KAAKgkD,UAAUnF,MAAMtzC,MAAMyB,MAAMF,OAAS89C,EAAY59C,MAAMF,OAGhE,GAAIoC,EAAQ6lB,OACV,IAAK,GAAI81B,KAAa37C,GAAQ6lB,OAC5B,GAAI7lB,EAAQ6lB,OAAO5uB,eAAe0kD,GAAY,CAC5C,GAAIn4C,GAAQxD,EAAQ6lB,OAAO81B,EAC3B7qD,MAAK+0B,OAAO/gB,IAAI62C,EAAWn4C,GAKjC,GAAIxD,EAAQkY,QAAS,CACnB,IAAKlhB,IAAQgJ,GAAQkY,QACflY,EAAQkY,QAAQjhB,eAAeD,KACjClG,KAAKgkD,UAAU58B,QAAQlhB,GAAQgJ,EAAQkY,QAAQlhB,GAG/CgJ,GAAQkY,QAAQ7b,QAClBvL,KAAKgkD,UAAU58B,QAAQ7b,MAAQ5K,EAAKqL,WAAWkD,EAAQkY,QAAQ7b,QAmBnE,GAfI,cAAgB2D,KACdA,EAAQ47C,WACL9qD,KAAK+qD,YACR/qD,KAAK+qD,UAAY,GAAInD,GAAU5nD,KAAKsgB,OACpCtgB,KAAK+qD,UAAUz2C,GAAG,SAAUtU,KAAKgrD,gBAAgBt1B,KAAK11B,QAIpDA,KAAK+qD,YACP/qD,KAAK+qD,UAAU12C,gBACRrU,MAAK+qD,YAKd77C,EAAQy8B,OACV,KAAM,IAAI/nC,OAAM,6EAMlB5D,MAAKwlD,qBAELxlD,KAAKirD,0BAELjrD,KAAKkrD,0BAELlrD,KAAKmrD,yBAGLnrD,KAAKorD,cAGLprD,KAAKgrD,kBAELhrD,KAAKqrD,uBACLrrD,KAAK2lB,QAAQ3lB,KAAKgkD,UAAU1wC,MAAOtT,KAAKgkD,UAAUzwC,QAClDvT,KAAKqnD,QAAS,EACmC,GAA7CrnD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKqQ,UAaTnN,EAAQgR,UAAUohB,QAAU,WAE1B,KAAOt1B,KAAK0a,iBAAiBgK,iBAC3B1kB,KAAK0a,iBAAiB9I,YAAY5R,KAAK0a,iBAAiBiK,WAgB1D,IAbA3kB,KAAKsgB,MAAQtO,SAASM,cAAc,OACpCtS,KAAKsgB,MAAMlY,UAAY,oBACvBpI,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKsgB,MAAM5S,MAAMmX,SAAW,SAC5B7kB,KAAKsgB,MAAMgrC,SAAW,IAKtBtrD,KAAKsgB,MAAMC,OAASvO,SAASM,cAAc,UAC3CtS,KAAKsgB,MAAMC,OAAO7S,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMC,QAE7BvgB,KAAKsgB,MAAMC,OAAOyH,WAQlB,CACH,GAAID,GAAM/nB,KAAKsgB,MAAMC,OAAOyH,WAAW,KACvChoB,MAAKikD,YAAcn8C,OAAOyjD,kBAAoB,IAAMxjC,EAAIyjC,8BAC9CzjC,EAAI0jC,2BACJ1jC,EAAI2jC,0BACJ3jC,EAAI4jC,yBACJ5jC,EAAI6jC,wBAA0B,GAGxC5rD,KAAKsgB,MAAMC,OAAOyH,WAAW,MAAM6jC,aAAa7rD,KAAKikD,WAAY,EAAG,EAAGjkD,KAAKikD,WAAY,EAAG,OAjB1D,CACjC,GAAIn/B,GAAW9S,SAASM,cAAe,MACvCwS,GAASpX,MAAMnC,MAAQ,MACvBuZ,EAASpX,MAAMqX,WAAc,OAC7BD,EAASpX,MAAMsX,QAAW,OAC1BF,EAASG,UAAa,mDACtBjlB,KAAKsgB,MAAMC,OAAOrO,YAAY4S,GAchC9kB,KAAKorD,eAQPloD,EAAQgR,UAAUk3C,YAAc,WAC9B,GAAIl2C,GAAKlV,IACW6G,UAAhB7G,KAAK8D,QACP9D,KAAK8D,OAAOgoD,UAEd9rD,KAAK0qC,QACL1qC,KAAK+rD,SACL/rD,KAAK8D,OAAS4iC,EAAO1mC,KAAKsgB,MAAMC,QAC9BoqB,iBAAiB,IAEnB3qC,KAAK8D,OAAOwQ,GAAG,MAAaY,EAAG82C,OAAOt2B,KAAKxgB,IAC3ClV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAG+2C,aAAav2B,KAAKxgB,IACjDlV,KAAK8D,OAAOwQ,GAAG,OAAaY,EAAGirB,QAAQzK,KAAKxgB,IAC5ClV,KAAK8D,OAAOwQ,GAAG,QAAaY,EAAGmrB,SAAS3K,KAAKxgB,IAC7ClV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAG8qB,aAAatK,KAAKxgB,IACjDlV,KAAK8D,OAAOwQ,GAAG,OAAaY,EAAG+qB,QAAQvK,KAAKxgB,IAC5ClV,KAAK8D,OAAOwQ,GAAG,UAAaY,EAAGgrB,WAAWxK,KAAKxgB,IAEhB,GAA3BlV,KAAKgkD,UAAUrkB,WACjB3/B,KAAK8D,OAAOwQ,GAAG,aAAmBY,EAAGkrB,cAAc1K,KAAKxgB,IACxDlV,KAAK8D,OAAOwQ,GAAG,iBAAmBY,EAAGkrB,cAAc1K,KAAKxgB,IACxDlV,KAAK8D,OAAOwQ,GAAG,QAAmBY,EAAGorB,SAAS5K,KAAKxgB,KAGrDlV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAGg3C,kBAAkBx2B,KAAKxgB,IAEtDlV,KAAKmsD,YAAczlB,EAAO1mC,KAAKsgB,OAC7BqqB,iBAAiB,IAEnB3qC,KAAKmsD,YAAY73C,GAAG,UAAWY,EAAGk3C,WAAW12B,KAAKxgB,IAGlDlV,KAAK0a,iBAAiBxI,YAAYlS,KAAKsgB,QAOzCpd,EAAQgR,UAAU82C,gBAAkB,WAClC,GAAI91C,GAAKlV,IACa6G,UAAlB7G,KAAK0nD,UACP1nD,KAAK0nD,SAASrzC,UAIdrU,KAAK0nD,SAAWA,EAD0B,GAAxC1nD,KAAKgkD,UAAUvB,SAASE,cACAnoC,UAAW1S,OAAQ8B,gBAAgB,IAGnC4Q,UAAWxa,KAAKsgB,MAAO1W,gBAAgB,IAGnE5J,KAAK0nD,SAAS2E,QAEVrsD,KAAKgkD,UAAUvB,SAAStzC,SAAWnP,KAAKssD,aAC1CtsD,KAAK0nD,SAAShyB,KAAK,KAAQ11B,KAAKusD,QAAQ72B,KAAKxgB,GAAQ,WACrDlV,KAAK0nD,SAAShyB,KAAK,KAAQ11B,KAAKwsD,aAAa92B,KAAKxgB,GAAK,SACvDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAKysD,UAAU/2B,KAAKxgB,GAAM,WACrDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAKwsD,aAAa92B,KAAKxgB,GAAK,SACvDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK0sD,UAAUh3B,KAAKxgB,GAAM,WACrDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK2sD,aAAaj3B,KAAKxgB,GAAK,SACvDlV,KAAK0nD,SAAShyB,KAAK,QAAQ11B,KAAK4sD,WAAWl3B,KAAKxgB,GAAK,WACrDlV,KAAK0nD,SAAShyB,KAAK,QAAQ11B,KAAK2sD,aAAaj3B,KAAKxgB,GAAK,SACvDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK6sD,QAAQn3B,KAAKxgB,GAAQ,WACrDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK6sD,QAAQn3B,KAAKxgB,GAAQ,WACrDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK+sD,SAASr3B,KAAKxgB,GAAO,WACrDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK+sD,SAASr3B,KAAKxgB,GAAO,WACrDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK6sD,QAAQn3B,KAAKxgB,GAAQ,WACrDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK+sD,SAASr3B,KAAKxgB,GAAO,WACrDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,SAAS11B,KAAK6sD,QAAQn3B,KAAKxgB,GAAO,WACrDlV,KAAK0nD,SAAShyB,KAAK,SAAS11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAO,SACvDlV,KAAK0nD,SAAShyB,KAAK,WAAW11B,KAAK+sD,SAASr3B,KAAKxgB,GAAI,WACrDlV,KAAK0nD,SAAShyB,KAAK,WAAW11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAK,UAGV,GAA3ClV,KAAKgkD,UAAUpB,iBAAiBzzC,UAClCnP,KAAK0nD,SAAShyB,KAAK,MAAM11B,KAAK4pD,sBAAsBl0B,KAAKxgB,IACzDlV,KAAK0nD,SAAShyB,KAAK,SAAS11B,KAAKgtD,gBAAgBt3B,KAAKxgB,MAU1DhS,EAAQgR,UAAUG,QAAU,WAC1BrU,KAAKqQ,MAAQ,aACbrQ,KAAKyiB,OAAS,aACdziB,KAAKsnD,OAAQ,EAGbtnD,KAAKitD,+BAGLjtD,KAAK0nD,SAAS2E,QAGdrsD,KAAK8D,OAAOgoD,UAGZ9rD,KAAKyU,MAELzU,KAAKktD,oBAAoBltD,KAAK0a,mBAGhCxX,EAAQgR,UAAUg5C,oBAAsB,SAASC,GAC/C,KAAoC,GAA7BA,EAAUzoC,iBACf1kB,KAAKktD,oBAAoBC,EAAUxoC,YACnCwoC,EAAUv7C,YAAYu7C,EAAUxoC,aAUpCzhB,EAAQgR,UAAUk5C,YAAc,SAAUttB,GACxC,OACEttB,EAAGstB,EAAMvH,MAAQ53B,EAAK+G,gBAAgB1H,KAAKsgB,MAAMC,QACjD9N,EAAGqtB,EAAMrH,MAAQ93B,EAAKqH,eAAehI,KAAKsgB,MAAMC,UASpDrd,EAAQgR,UAAUmsB,SAAW,SAAUx2B,IACjC,GAAIjF,OAAOyC,UAAYrH,KAAKglD,UAAY,MAC1ChlD,KAAK0qC,KAAK3I,QAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,QACnD/sB,KAAK0qC,KAAK2iB,SAAU,EACpBrtD,KAAK+rD,MAAMxnD,MAAQvE,KAAKstD,YAGxBttD,KAAKglD,WAAY,GAAIpgD,OAAOyC,UAE5BrH,KAAKutD,aAAavtD,KAAK0qC,KAAK3I,WAQhC7+B,EAAQgR,UAAU8rB,aAAe,SAAUn2B,GACzC7J,KAAKwtD,iBAAiB3jD,IAUxB3G,EAAQgR,UAAUs5C,iBAAmB,SAAS3jD,GAElBhD,SAAtB7G,KAAK0qC,KAAK3I,SACZ/hC,KAAKqgC,SAASx2B,EAGhB,IAAIw+C,GAAOroD,KAAKytD,WAAWztD,KAAK0qC,KAAK3I,QASrC,IANA/hC,KAAK0qC,KAAK1J,UAAW,EACrBhhC,KAAK0qC,KAAK4J,aACVt0C,KAAK0qC,KAAKjsB,YAAcze,KAAK0tD,kBAC7B1tD,KAAK0qC,KAAKie,OAAS,KACnB3oD,KAAKkmD,eAAgB,EAET,MAARmC,GAA4C,GAA5BroD,KAAKgkD,UAAUJ,UAAmB,CACpD5jD,KAAKkmD,eAAgB,EACrBlmD,KAAK0qC,KAAKie,OAASN,EAAKhoD,GAEnBgoD,EAAKsF,cACR3tD,KAAK4tD,cAAcvF,GAAK,GAG1BroD,KAAKyuB,KAAK,aAAao/B,QAAQ7tD,KAAK83B,eAAe+mB,OAGnD,KAAK,GAAIiP,KAAY9tD,MAAK+tD,aAAalP,MACrC,GAAI7+C,KAAK+tD,aAAalP,MAAM14C,eAAe2nD,GAAW,CACpD,GAAI9pD,GAAShE,KAAK+tD,aAAalP,MAAMiP,GACjCvhD,GACFlM,GAAI2D,EAAO3D,GACXgoD,KAAMrkD,EAGNwO,EAAGxO,EAAOwO,EACVC,EAAGzO,EAAOyO,EACVu7C,OAAQhqD,EAAOgqD,OACfC,OAAQjqD,EAAOiqD,OAGjBjqD,GAAOgqD,QAAS,EAChBhqD,EAAOiqD,QAAS,EAEhBjuD,KAAK0qC,KAAK4J,UAAU/rC,KAAKgE,MAWjCrJ,EAAQgR,UAAU+rB,QAAU,SAAUp2B,GACpC7J,KAAKkuD,cAAcrkD,IAUrB3G,EAAQgR,UAAUg6C,cAAgB,SAASrkD,GACzC,IAAI7J,KAAK0qC,KAAK2iB,QAAd,CAKArtD,KAAKmuD,aAEL,IAAIpsB,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,QACzC7X,EAAKlV,KACL0qC,EAAO1qC,KAAK0qC,KACZ4J,EAAY5J,EAAK4J,SACrB,IAAIA,GAAaA,EAAUtuC,QAAsC,GAA5BhG,KAAKgkD,UAAUJ,UAAmB,CAErE,GAAIniB,GAASM,EAAQvvB,EAAIk4B,EAAK3I,QAAQvvB,EAClCkvB,EAASK,EAAQtvB,EAAIi4B,EAAK3I,QAAQtvB,CAGtC6hC,GAAU1rC,QAAQ,SAAU2D,GAC1B,GAAI87C,GAAO97C,EAAE87C,IAER97C,GAAEyhD,SACL3F,EAAK71C,EAAI0C,EAAGk5C,qBAAqBl5C,EAAGm5C,qBAAqB9hD,EAAEiG,GAAKivB,IAG7Dl1B,EAAE0hD,SACL5F,EAAK51C,EAAIyC,EAAGo5C,qBAAqBp5C,EAAGq5C,qBAAqBhiD,EAAEkG,GAAKivB,MAM/D1hC,KAAKqnD,SACRrnD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,aAKP,IAAkC,GAA9BrQ,KAAKgkD,UAAUL,YAAqB,CAEtC,GAA0B98C,SAAtB7G,KAAK0qC,KAAK3I,QAEZ,WADA/hC,MAAKwtD,iBAAiB3jD,EAGxB,IAAIokB,GAAQ8T,EAAQvvB,EAAIxS,KAAK0qC,KAAK3I,QAAQvvB,EACtC0b,EAAQ6T,EAAQtvB,EAAIzS,KAAK0qC,KAAK3I,QAAQtvB,CAE1CzS,MAAK6lD,gBACH7lD,KAAK0qC,KAAKjsB,YAAYjM,EAAIyb,EAC1BjuB,KAAK0qC,KAAKjsB,YAAYhM,EAAIyb,GAE5BluB,KAAKi3B,aASX/zB,EAAQgR,UAAUgsB,WAAa,SAAUr2B,GACvC7J,KAAKwuD,eAAe3kD,IAItB3G,EAAQgR,UAAUs6C,eAAiB,WACjCxuD,KAAK0qC,KAAK1J,UAAW,CACrB,IAAIsT,GAAYt0C,KAAK0qC,KAAK4J,SACtBA,IAAaA,EAAUtuC,QACzBsuC,EAAU1rC,QAAQ,SAAU2D,GAE1BA,EAAE87C,KAAK2F,OAASzhD,EAAEyhD,OAClBzhD,EAAE87C,KAAK4F,OAAS1hD,EAAE0hD,SAEpBjuD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,SAGLrQ,KAAKi3B,UAEmB,GAAtBj3B,KAAKkmD,cACPlmD,KAAKyuB,KAAK,WAAWo/B,aAGrB7tD,KAAKyuB,KAAK,WAAWo/B,QAAQ7tD,KAAK83B,eAAe+mB,SAQrD37C,EAAQgR,UAAU83C,OAAS,SAAUniD,GACnC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAKwmD,gBAAkBzkB,EACvB/hC,KAAKyuD,WAAW1sB,IASlB7+B,EAAQgR,UAAU+3C,aAAe,SAAUpiD,GACzC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAK0uD,iBAAiB3sB,IAQxB7+B,EAAQgR,UAAUisB,QAAU,SAAUt2B,GACpC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAKwmD,gBAAkBzkB,EACvB/hC,KAAK2uD,cAAc5sB,IAQrB7+B,EAAQgR,UAAUk4C,WAAa,SAAUviD,GACvC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAK4uD,iBAAiB7sB,IAQxB7+B,EAAQgR,UAAUosB,SAAW,SAAUz2B,GACrC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAE7C/sB,MAAK0qC,KAAK2iB,SAAU,EACd,SAAWrtD,MAAK+rD,QACpB/rD,KAAK+rD,MAAMxnD,MAAQ,EAIrB,IAAIA,GAAQvE,KAAK+rD,MAAMxnD,MAAQsF,EAAM2uB,QAAQj0B,KAC7CvE,MAAK6uD,MAAMtqD,EAAOw9B,IAUpB7+B,EAAQgR,UAAU26C,MAAQ,SAAStqD,EAAOw9B,GACxC,GAA+B,GAA3B/hC,KAAKgkD,UAAUrkB,SAAkB,CACnC,GAAImvB,GAAW9uD,KAAKstD,WACR,MAAR/oD,IACFA,EAAQ,MAENA,EAAQ,KACVA,EAAQ,GAGV,IAAIwqD,GAAsB,IACRloD,UAAd7G,KAAK0qC,MACmB,GAAtB1qC,KAAK0qC,KAAK1J,WACZ+tB,EAAsB/uD,KAAKgvD,YAAYhvD,KAAK0qC,KAAK3I,SAIrD,IAAItjB,GAAcze,KAAK0tD,kBAEnBuB,EAAY1qD,EAAQuqD,EACpBI,GAAM,EAAID,GAAaltB,EAAQvvB,EAAIiM,EAAYjM,EAAIy8C,EACnDE,GAAM,EAAIF,GAAaltB,EAAQtvB,EAAIgM,EAAYhM,EAAIw8C,CASvD,IAPAjvD,KAAKymD,YAAcj0C,EAAMxS,KAAKouD,qBAAqBrsB,EAAQvvB,GACxCC,EAAMzS,KAAKsuD,qBAAqBvsB,EAAQtvB,IAE3DzS,KAAKie,UAAU1Z,GACfvE,KAAK6lD,gBAAgBqJ,EAAIC,GACzBnvD,KAAKovD,wBAEsB,MAAvBL,EAA6B,CAC/B,GAAIM,GAAuBrvD,KAAKsvD,YAAYP,EAC5C/uD,MAAK0qC,KAAK3I,QAAQvvB,EAAI68C,EAAqB78C,EAC3CxS,KAAK0qC,KAAK3I,QAAQtvB,EAAI48C,EAAqB58C,EAY7C,MATAzS,MAAKi3B,UAEU1yB,EAAXuqD,EACF9uD,KAAKyuB,KAAK,QAASyO,UAAU,MAG7Bl9B,KAAKyuB,KAAK,QAASyO,UAAU,MAGxB34B,IAYXrB,EAAQgR,UAAUksB,cAAgB,SAASv2B,GAEzC,GAAIylB,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAW,IAChB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAO,GAMpBF,EAAO,CAGT,GAAI/qB,GAAQvE,KAAKstD,YACbprB,EAAO5S,EAAQ,EACP,GAARA,IACF4S,GAAe,EAAIA,GAErB39B,GAAU,EAAI29B,CAGd,IAAI1J,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAU/hC,KAAKotD,YAAY50B,EAAQzL,OAGvC/sB,MAAK6uD,MAAMtqD,EAAOw9B,GAIpBl4B,EAAMD,kBASR1G,EAAQgR,UAAUg4C,kBAAoB,SAAUriD,GAC9C,GAAI2uB,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAU/hC,KAAKotD,YAAY50B,EAAQzL,QACnCwiC,GAAe,CAsBnB,IAnBmB1oD,SAAf7G,KAAKwvD,QACHxvD,KAAKwvD,MAAM91B,UAAW,GACxB15B,KAAKyvD,gBAAgB1tB,GAInB/hC,KAAKwvD,MAAM91B,UAAW,IACxB61B,GAAe,EACfvvD,KAAKwvD,MAAME,YAAY3tB,EAAQvvB,EAAI,EAAEuvB,EAAQtvB,EAAI,GACjDzS,KAAKwvD,MAAMzoB,SAK6B,GAAxC/mC,KAAKgkD,UAAUvB,SAASE,cAA4D,GAAnC3iD,KAAKgkD,UAAUvB,SAAStzC,SAC3EnP,KAAKsgB,MAAMuX,QAIT03B,KAAiB,EAAO,CAC1B,GAAIr6C,GAAKlV,KACL2vD,EAAY,WACdz6C,EAAG06C,gBAAgB7tB,GAEjB/hC,MAAK6vD,YACPx8B,cAAcrzB,KAAK6vD,YAEhB7vD,KAAK0qC,KAAK1J,WACbhhC,KAAK6vD,WAAat1C,WAAWo1C,EAAW3vD,KAAKgkD,UAAU58B,QAAQ3N,QAOnE,GAA4B,GAAxBzZ,KAAKgkD,UAAUh3C,MAAe,CAEhC,IAAK,GAAI8iD,KAAU9vD,MAAKkkD,SAASlE,MAC3BhgD,KAAKkkD,SAASlE,MAAM75C,eAAe2pD,KACrC9vD,KAAKkkD,SAASlE,MAAM8P,GAAQ9iD,OAAQ,QAC7BhN,MAAKkkD,SAASlE,MAAM8P,GAK/B,IAAI/rC,GAAM/jB,KAAKytD,WAAW1rB,EACf,OAAPhe,IACFA,EAAM/jB,KAAK+vD,WAAWhuB,IAEb,MAAPhe,GACF/jB,KAAKgwD,aAAajsC,EAIpB,KAAK,GAAI4kC,KAAU3oD,MAAKkkD,SAASrF,MAC3B7+C,KAAKkkD,SAASrF,MAAM14C,eAAewiD,KACjC5kC,YAAexgB,IAAQwgB,EAAI1jB,IAAMsoD,GAAU5kC,YAAe3gB,IAAe,MAAP2gB,KACpE/jB,KAAKiwD,YAAYjwD,KAAKkkD,SAASrF,MAAM8J,UAC9B3oD,MAAKkkD,SAASrF,MAAM8J,GAIjC3oD,MAAKyiB,WAYTvf,EAAQgR,UAAU07C,gBAAkB,SAAU7tB,GAC5C,GAOI1hC,GAPA0jB,GACFlc,KAAQ7H,KAAKouD,qBAAqBrsB,EAAQvvB,GAC1CvK,IAAQjI,KAAKsuD,qBAAqBvsB,EAAQtvB,GAC1C4V,MAAQroB,KAAKouD,qBAAqBrsB,EAAQvvB,GAC1C8R,OAAQtkB,KAAKsuD,qBAAqBvsB,EAAQtvB,IAIxCy9C,EAAuCrpD,SAAlB7G,KAAKmwD,SAAyB,GAAKnwD,KAAKmwD,SAAS9vD,GACtE+vD,GAAkB,EAClBC,EAAY,MAEhB,IAAqBxpD,QAAjB7G,KAAKmwD,SAAuB,CAE9B,GAAItR,GAAQ7+C,KAAK6+C,MACbyR,IACJ,KAAKjwD,IAAMw+C,GACT,GAAIA,EAAM14C,eAAe9F,GAAK,CAC5B,GAAIgoD,GAAOxJ,EAAMx+C,EACbgoD,GAAKkI,kBAAkBxsC,IACDld,SAApBwhD,EAAKmI,YACPF,EAAiB/nD,KAAKlI,GAM1BiwD,EAAiBtqD,OAAS,IAG5BhG,KAAKmwD,SAAWnwD,KAAK6+C,MAAMyR,EAAiBA,EAAiBtqD,OAAS,IAEtEoqD,GAAkB,GAItB,GAAsBvpD,SAAlB7G,KAAKmwD,UAA6C,GAAnBC,EAA0B,CAE3D,GAAIpQ,GAAQhgD,KAAKggD,MACbyQ,IACJ,KAAKpwD,IAAM2/C,GACT,GAAIA,EAAM75C,eAAe9F,GAAK,CAC5B,GAAIqwD,GAAO1Q,EAAM3/C,EACbqwD,GAAKC,WAAkC9pD,SAApB6pD,EAAKF,YACxBE,EAAKH,kBAAkBxsC,IACzB0sC,EAAiBloD,KAAKlI,GAKxBowD,EAAiBzqD,OAAS,IAC5BhG,KAAKmwD,SAAWnwD,KAAKggD,MAAMyQ,EAAiBA,EAAiBzqD,OAAS,IACtEqqD,EAAY,QAIZrwD,KAAKmwD,SAEHnwD,KAAKmwD,SAAS9vD,IAAM6vD,IACHrpD,SAAf7G,KAAKwvD,QACPxvD,KAAKwvD,MAAQ,GAAIhsD,GAAMxD,KAAKsgB,MAAOtgB,KAAKgkD,UAAU58B,UAGpDpnB,KAAKwvD,MAAMoB,gBAAkBP,EAC7BrwD,KAAKwvD,MAAMqB,cAAgB7wD,KAAKmwD,SAAS9vD,GAKzCL,KAAKwvD,MAAME,YAAY3tB,EAAQvvB,EAAI,EAAGuvB,EAAQtvB,EAAI,GAClDzS,KAAKwvD,MAAMsB,QAAQ9wD,KAAKmwD,SAASK,YACjCxwD,KAAKwvD,MAAMzoB,QAIT/mC,KAAKwvD,OACPxvD,KAAKwvD,MAAM1oB,QAYjB5jC,EAAQgR,UAAUu7C,gBAAkB,SAAU1tB,GAC5C,GAAIgvB,IACFlpD,KAAQ7H,KAAKouD,qBAAqBrsB,EAAQvvB,GAC1CvK,IAAQjI,KAAKsuD,qBAAqBvsB,EAAQtvB,GAC1C4V,MAAQroB,KAAKouD,qBAAqBrsB,EAAQvvB,GAC1C8R,OAAQtkB,KAAKsuD,qBAAqBvsB,EAAQtvB,IAGxCu+C,GAAa,CACjB,IAAkC,QAA9BhxD,KAAKwvD,MAAMoB,iBAEb,GADAI,EAAahxD,KAAK6+C,MAAM7+C,KAAKwvD,MAAMqB,eAAeN,kBAAkBQ,GAChEC,KAAe,EAAM,CACvB,GAAIC,GAAWjxD,KAAKytD,WAAW1rB,EAC/BivB,GAAaC,EAAS5wD,IAAML,KAAKwvD,MAAMqB,mBAIR,QAA7B7wD,KAAKytD,WAAW1rB,KAClBivB,EAAahxD,KAAKggD,MAAMhgD,KAAKwvD,MAAMqB,eAAeN,kBAAkBQ,GAKpEC,MAAe,IACjBhxD,KAAKmwD,SAAWtpD,OAChB7G,KAAKwvD,MAAM1oB,SAYf5jC,EAAQgR,UAAUyR,QAAU,SAASrS,EAAOC,GAC1C,GAAI29C,IAAY,EACZC,EAAWnxD,KAAKsgB,MAAMC,OAAOjN,MAC7B89C,EAAYpxD,KAAKsgB,MAAMC,OAAOhN,MAC9BD,IAAStT,KAAKgkD,UAAU1wC,OAASC,GAAUvT,KAAKgkD,UAAUzwC,QAAUvT,KAAKsgB,MAAM5S,MAAM4F,OAASA,GAAStT,KAAKsgB,MAAM5S,MAAM6F,QAAUA,GACpIvT,KAAKsgB,MAAM5S,MAAM4F,MAAQA,EACzBtT,KAAKsgB,MAAM5S,MAAM6F,OAASA,EAE1BvT,KAAKsgB,MAAMC,OAAO7S,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMC,OAAO7S,MAAM6F,OAAS,OAEjCvT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKikD,WAC/DjkD,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKikD,WAEjEjkD,KAAKgkD,UAAU1wC,MAAQA,EACvBtT,KAAKgkD,UAAUzwC,OAASA,EAExB29C,GAAY,IAMRlxD,KAAKsgB,MAAMC,OAAOjN,OAAStT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKikD,aAClEjkD,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKikD,WAC/DiN,GAAY,GAEVlxD,KAAKsgB,MAAMC,OAAOhN,QAAUvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKikD,aACpEjkD,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKikD,WACjEiN,GAAY,IAIC,GAAbA,GACFlxD,KAAKyuB,KAAK,UAAWnb,MAAMtT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKikD,WAAW1wC,OAAOvT,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKikD,WAAYkN,SAAUA,EAAWnxD,KAAKikD,WAAYmN,UAAWA,EAAYpxD,KAAKikD,cAS9L/gD,EAAQgR,UAAUg2C,UAAY,SAASrL,GACrC,GAAIwS,GAAerxD,KAAK2mD,SAExB,IAAI9H,YAAiBh+C,IAAWg+C,YAAiB/9C,GAC/Cd,KAAK2mD,UAAY9H,MAEd,IAAIv4C,MAAMC,QAAQs4C,GACrB7+C,KAAK2mD,UAAY,GAAI9lD,GACrBb,KAAK2mD,UAAU3yC,IAAI6qC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAIn4C,WAAU,4BAHpB1G,MAAK2mD,UAAY,GAAI9lD,GAgBvB,GAVIwwD,GAEF1wD,EAAKiI,QAAQ5I,KAAK6mD,eAAgB,SAAUh+C,EAAUgB,GACpDwnD,EAAa58C,IAAI5K,EAAOhB,KAK5B7I,KAAK6+C,SAED7+C,KAAK2mD,UAAW,CAElB,GAAIzxC,GAAKlV,IACTW,GAAKiI,QAAQ5I,KAAK6mD,eAAgB,SAAUh+C,EAAUgB,GACpDqL,EAAGyxC,UAAUryC,GAAGzK,EAAOhB,IAIzB,IAAIqN,GAAMlW,KAAK2mD,UAAU/vC,QACzB5W,MAAK8mD,UAAU5wC,GAEjBlW,KAAKsxD,oBAQPpuD,EAAQgR,UAAU4yC,UAAY,SAAS5wC,GAErC,IAAK,GADD7V,GACKwF,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9CxF,EAAK6V,EAAIrQ,EACT,IAAI4N,GAAOzT,KAAK2mD,UAAU1wC,IAAI5V,GAC1BgoD,EAAO,GAAI9kD,GAAKkQ,EAAMzT,KAAKklD,OAAQllD,KAAK+0B,OAAQ/0B,KAAKgkD,UAEzD,IADAhkD,KAAK6+C,MAAMx+C,GAAMgoD,IACG,GAAfA,EAAK2F,QAAkC,GAAf3F,EAAK4F,QAAgC,OAAX5F,EAAK71C,GAAyB,OAAX61C,EAAK51C,GAAa,CAC1F,GAAI6Z,GAAS,EAASpW,EAAIlQ,OAAS,GAC/BurD,EAAQ,EAAI/sD,KAAKgoB,GAAKhoB,KAAKiB,QACZ,IAAf4iD,EAAK2F,SAAkB3F,EAAK71C,EAAI8Z,EAAS9nB,KAAK+a,IAAIgyC,IACnC,GAAflJ,EAAK4F,SAAkB5F,EAAK51C,EAAI6Z,EAAS9nB,KAAK4a,IAAImyC,IAExDvxD,KAAKqnD,QAAS,EAGhBrnD,KAAKwpD,uBAC4C,GAA7CxpD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKwxD,0BACLxxD,KAAKyxD,kBACLzxD,KAAK0xD,kBAAkB1xD,KAAK6+C,OAC5B7+C,KAAK2xD,gBAQPzuD,EAAQgR,UAAU6yC,aAAe,SAAS7wC,GAIxC,IAAK,GAHDywC,GAAY3mD,KAAK2mD,UAAU1wC,IAAIC,GAC/B2oC,EAAQ7+C,KAAK6+C,MAERh5C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GACTwiD,EAAOxJ,EAAMx+C,GACboT,EAAOkzC,EAAU9gD,EACjBwiD,GAEFA,EAAKuJ,cAAcn+C,EAAMzT,KAAKgkD,YAI9BqE,EAAO,GAAI9kD,GAAKsuD,WAAY7xD,KAAKklD,OAAQllD,KAAK+0B,OAAQ/0B,KAAKgkD,WAC3DnF,EAAMx+C,GAAMgoD,GAGhBroD,KAAKqnD,QAAS,EACmC,GAA7CrnD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKwpD,uBACLxpD,KAAK0xD,kBAAkB7S,GACvB7+C,KAAKqrD,wBAIPnoD,EAAQgR,UAAUm3C,qBAAuB,WACvC,IAAK,GAAIyE,KAAU9vD,MAAKggD,MACtBhgD,KAAKggD,MAAM8P,GAAQgC,YAAa,GASpC5uD,EAAQgR,UAAU8yC,aAAe,SAAS9wC,GAIxC,IAAK,GAHD2oC,GAAQ7+C,KAAK6+C,MAGRh5C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACDgB,SAApC7G,KAAK+tD,aAAalP,MAAM3oC,EAAIrQ,MAC9B7F,KAAK6+C,MAAM3oC,EAAIrQ,IAAI+gC,WACnB5mC,KAAK+xD,qBAAqB/xD,KAAK6+C,MAAM3oC,EAAIrQ,KAI7C,KAAK,GAAIA,GAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,SACNg5C,GAAMx+C,GAKfL,KAAKwpD,uBAC4C,GAA7CxpD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKwxD,0BACLxxD,KAAKyxD,kBACLzxD,KAAKsxD,mBACLtxD,KAAK0xD,kBAAkB7S,IASzB37C,EAAQgR,UAAUi2C,UAAY,SAASnK,GACrC,GAAIgS,GAAehyD,KAAK4mD,SAExB,IAAI5G,YAAiBn/C,IAAWm/C,YAAiBl/C,GAC/Cd,KAAK4mD,UAAY5G,MAEd,IAAI15C,MAAMC,QAAQy5C,GACrBhgD,KAAK4mD,UAAY,GAAI/lD,GACrBb,KAAK4mD,UAAU5yC,IAAIgsC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAIt5C,WAAU,4BAHpB1G,MAAK4mD,UAAY,GAAI/lD,GAgBvB,GAVImxD,GAEFrxD,EAAKiI,QAAQ5I,KAAKinD,eAAgB,SAAUp+C,EAAUgB,GACpDmoD,EAAav9C,IAAI5K,EAAOhB,KAK5B7I,KAAKggD,SAEDhgD,KAAK4mD,UAAW,CAElB,GAAI1xC,GAAKlV,IACTW,GAAKiI,QAAQ5I,KAAKinD,eAAgB,SAAUp+C,EAAUgB,GACpDqL,EAAG0xC,UAAUtyC,GAAGzK,EAAOhB,IAIzB,IAAIqN,GAAMlW,KAAK4mD,UAAUhwC,QACzB5W,MAAKknD,UAAUhxC,GAGjBlW,KAAKyxD,mBAQPvuD,EAAQgR,UAAUgzC,UAAY,SAAUhxC,GAItC,IAAK,GAHD8pC,GAAQhgD,KAAKggD,MACb4G,EAAY5mD,KAAK4mD,UAEZ/gD,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GAETosD,EAAUjS,EAAM3/C,EAChB4xD,IACFA,EAAQC,YAGV,IAAIz+C,GAAOmzC,EAAU3wC,IAAI5V,GAAK8xD,iBAAoB,GAClDnS,GAAM3/C,GAAM,GAAI+C,GAAKqQ,EAAMzT,KAAMA,KAAKgkD,WAExChkD,KAAKqnD,QAAS,EACdrnD,KAAK0xD,kBAAkB1R,GACvBhgD,KAAKoyD,qBACLpyD,KAAKwxD,0BAC4C,GAA7CxxD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,6BASTrkD,EAAQgR,UAAUizC,aAAe,SAAUjxC,GAGzC,IAAK,GAFD8pC,GAAQhgD,KAAKggD,MACb4G,EAAY5mD,KAAK4mD,UACZ/gD,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GAET4N,EAAOmzC,EAAU3wC,IAAI5V,GACrBqwD,EAAO1Q,EAAM3/C,EACbqwD,IAEFA,EAAKwB,aACLxB,EAAKkB,cAAcn+C,EAAMzT,KAAKgkD,WAC9B0M,EAAKhS,YAILgS,EAAO,GAAIttD,GAAKqQ,EAAMzT,KAAMA,KAAKgkD,WACjChkD,KAAKggD,MAAM3/C,GAAMqwD,GAIrB1wD,KAAKoyD,qBAC4C,GAA7CpyD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKqnD,QAAS,EACdrnD,KAAK0xD,kBAAkB1R,IAQzB98C,EAAQgR,UAAUkzC,aAAe,SAAUlxC,GAIzC,IAAK,GAHD8pC,GAAQhgD,KAAKggD,MAGRn6C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACDgB,SAApC7G,KAAK+tD,aAAa/N,MAAM9pC,EAAIrQ,MAC9Bm6C,EAAM9pC,EAAIrQ,IAAI+gC,WACd5mC,KAAK+xD,qBAAqB/R,EAAM9pC,EAAIrQ,KAIxC,KAAK,GAAIA,GAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GACT6qD,EAAO1Q,EAAM3/C,EACbqwD,KACc,MAAZA,EAAK2B,WACAryD,MAAKsyD,QAAiB,QAAS,MAAE5B,EAAK2B,IAAIhyD,IAEnDqwD,EAAKwB,mBACElS,GAAM3/C,IAIjBL,KAAKqnD,QAAS,EACdrnD,KAAK0xD,kBAAkB1R,GAC0B,GAA7ChgD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKwxD,2BAOPtuD,EAAQgR,UAAUu9C,gBAAkB,WAClC,GAAIpxD,GACAw+C,EAAQ7+C,KAAK6+C,MACbmB,EAAQhgD,KAAKggD,KACjB,KAAK3/C,IAAMw+C,GACLA,EAAM14C,eAAe9F,KACvBw+C,EAAMx+C,GAAI2/C,SACVnB,EAAMx+C,GAAIkyD,gBAId,KAAKlyD,IAAM2/C,GACT,GAAIA,EAAM75C,eAAe9F,GAAK,CAC5B,GAAIqwD,GAAO1Q,EAAM3/C,EACjBqwD,GAAKvmC,KAAO,KACZumC,EAAKtmC,GAAK,KACVsmC,EAAKhS,YAaXx7C,EAAQgR,UAAUw9C,kBAAoB,SAAS3tC,GAC7C,GAAI1jB,GAGA8c,EAAWtW,OACXuW,EAAWvW,OACX2rD,EAAa,CACjB,KAAKnyD,IAAM0jB,GACT,GAAIA,EAAI5d,eAAe9F,GAAK,CAC1B,GAAIiE,GAAQyf,EAAI1jB,GAAIsV,UACN9O,UAAVvC,IACF6Y,EAAyBtW,SAAbsW,EAA0B7Y,EAAQE,KAAKL,IAAIG,EAAO6Y,GAC9DC,EAAyBvW,SAAbuW,EAA0B9Y,EAAQE,KAAKJ,IAAIE,EAAO8Y,GAC9Do1C,GAAcluD,GAMpB,GAAiBuC,SAAbsW,GAAuCtW,SAAbuW,EAC5B,IAAK/c,IAAM0jB,GACLA,EAAI5d,eAAe9F,IACrB0jB,EAAI1jB,GAAIoyD,cAAct1C,EAAUC,EAAUo1C,IAUlDtvD,EAAQgR,UAAUuO,OAAS,WACzBziB,KAAK2lB,QAAQ3lB,KAAKgkD,UAAU1wC,MAAOtT,KAAKgkD,UAAUzwC,QAClDvT,KAAKi3B,WAQP/zB,EAAQgR,UAAUkxC,eAAiB,SAAS1rB,GACtC15B,KAAKilD,mBAAoB,IAC3BjlD,KAAKilD,iBAAkB,EACnBjlD,KAAK8nD,mBAAoB,EAC3BhgD,OAAOyS,WAAWva,KAAKi3B,QAAQvB,KAAK11B,KAAM05B,GAAQ,GAGlD5xB,OAAO4qD,sBAAsB1yD,KAAKi3B,QAAQvB,KAAK11B,KAAM05B,GAAQ,MAKnEx2B,EAAQgR,UAAU+iB,QAAU,SAASyC,GACpB7yB,SAAX6yB,IACFA,GAAS,GAEX15B,KAAKilD,iBAAkB,CACvB,IAAIl9B,GAAM/nB,KAAKsgB,MAAMC,OAAOyH,WAAW,KAEvCD,GAAI8jC,aAAa7rD,KAAKikD,WAAY,EAAG,EAAGjkD,KAAKikD,WAAY,EAAG,EAG5D,IAAI0O,GAAI3yD,KAAKsgB,MAAMC,OAAOC,YACtBlU,EAAItM,KAAKsgB,MAAMC,OAAOsF,YAC1BkC,GAAIE,UAAU,EAAG,EAAG0qC,EAAGrmD,GAGvByb,EAAI6qC,OACJ7qC,EAAI8qC,UAAU7yD,KAAKye,YAAYjM,EAAGxS,KAAKye,YAAYhM,GACnDsV,EAAIxjB,MAAMvE,KAAKuE,MAAOvE,KAAKuE,OAE3BvE,KAAKsmD,eACH9zC,EAAKxS,KAAKouD,qBAAqB,GAC/B37C,EAAKzS,KAAKsuD,qBAAqB,IAEjCtuD,KAAKumD,mBACH/zC,EAAKxS,KAAKouD,qBAAqBpuD,KAAKsgB,MAAMC,OAAOC,aACjD/N,EAAKzS,KAAKsuD,qBAAqBtuD,KAAKsgB,MAAMC,OAAOsF,eAG/C6T,KAAW,IACb15B,KAAK8yD,gBAAgB,sBAAuB/qC,IAClB,GAAtB/nB,KAAK0qC,KAAK1J,UAA4Cn6B,SAAvB7G,KAAK0qC,KAAK1J,UAA4D,GAAlChhC,KAAKgkD,UAAUH,kBACpF7jD,KAAK8yD,gBAAgB,aAAc/qC,KAIb,GAAtB/nB,KAAK0qC,KAAK1J,UAA4Cn6B,SAAvB7G,KAAK0qC,KAAK1J,UAA4D,GAAlChhC,KAAKgkD,UAAUF,kBACpF9jD,KAAK8yD,gBAAgB,aAAa/qC,GAAI,GAGpC2R,KAAW,GACkB,GAA3B15B,KAAKmkD,oBACPnkD,KAAK8yD,gBAAgB,oBAAqB/qC,GAQ9CA,EAAIgrC,UAEAr5B,KAAW,GACb3R,EAAIE,UAAU,EAAG,EAAG0qC,EAAGrmD,IAU3BpJ,EAAQgR,UAAU2xC,gBAAkB,SAASmN,EAASC,GAC3BpsD,SAArB7G,KAAKye,cACPze,KAAKye,aACHjM,EAAG,EACHC,EAAG,IAIS5L,SAAZmsD,IACFhzD,KAAKye,YAAYjM,EAAIwgD,GAEPnsD,SAAZosD,IACFjzD,KAAKye,YAAYhM,EAAIwgD,GAGvBjzD,KAAKyuB,KAAK,gBAQZvrB,EAAQgR,UAAUw5C,gBAAkB,WAClC,OACEl7C,EAAGxS,KAAKye,YAAYjM,EACpBC,EAAGzS,KAAKye,YAAYhM,IASxBvP,EAAQgR,UAAU+J,UAAY,SAAS1Z,GACrCvE,KAAKuE,MAAQA,GAQfrB,EAAQgR,UAAUo5C,UAAY,WAC5B,MAAOttD,MAAKuE,OAUdrB,EAAQgR,UAAUk6C,qBAAuB,SAAS57C,GAChD,OAAQA,EAAIxS,KAAKye,YAAYjM,GAAKxS,KAAKuE,OAUzCrB,EAAQgR,UAAUm6C,qBAAuB,SAAS77C,GAChD,MAAOA,GAAIxS,KAAKuE,MAAQvE,KAAKye,YAAYjM,GAU3CtP,EAAQgR,UAAUo6C,qBAAuB,SAAS77C,GAChD,OAAQA,EAAIzS,KAAKye,YAAYhM,GAAKzS,KAAKuE,OAUzCrB,EAAQgR,UAAUq6C,qBAAuB,SAAS97C,GAChD,MAAOA,GAAIzS,KAAKuE,MAAQvE,KAAKye,YAAYhM,GAU3CvP,EAAQgR,UAAUo7C,YAAc,SAAU/oC,GACxC,OAAQ/T,EAAGxS,KAAKquD,qBAAqB9nC,EAAI/T,GAAIC,EAAGzS,KAAKuuD,qBAAqBhoC,EAAI9T,KAShFvP,EAAQgR,UAAU86C,YAAc,SAAUzoC,GACxC,OAAQ/T,EAAGxS,KAAKouD,qBAAqB7nC,EAAI/T,GAAIC,EAAGzS,KAAKsuD,qBAAqB/nC,EAAI9T,KAUhFvP,EAAQgR,UAAUg/C,WAAa,SAASnrC,EAAIorC,GACvBtsD,SAAfssD,IACFA,GAAa,EAIf,IAAItU,GAAQ7+C,KAAK6+C,MACbtY,IAEJ,KAAK,GAAIlmC,KAAMw+C,GACTA,EAAM14C,eAAe9F,KACvBw+C,EAAMx+C,GAAI+yD,eAAepzD,KAAKuE,MAAMvE,KAAKsmD,cAActmD,KAAKumD,mBACxD1H,EAAMx+C,GAAIstD,aACZpnB,EAASh+B,KAAKlI,IAGVw+C,EAAMx+C,GAAIgzD,UAAYF,IACxBtU,EAAMx+C,GAAI0wC,KAAKhpB,GAOvB,KAAK,GAAIxb,GAAI,EAAG+mD,EAAO/sB,EAASvgC,OAAYstD,EAAJ/mD,EAAUA,KAC5CsyC,EAAMtY,EAASh6B,IAAI8mD,UAAYF,IACjCtU,EAAMtY,EAASh6B,IAAIwkC,KAAKhpB,IAW9B7kB,EAAQgR,UAAUq/C,WAAa,SAASxrC,GACtC,GAAIi4B,GAAQhgD,KAAKggD,KACjB,KAAK,GAAI3/C,KAAM2/C,GACb,GAAIA,EAAM75C,eAAe9F,GAAK,CAC5B,GAAIqwD,GAAO1Q,EAAM3/C,EACjBqwD,GAAKzrB,SAASjlC,KAAKuE,OACfmsD,EAAKC,WACP3Q,EAAM3/C,GAAI0wC,KAAKhpB,KAYvB7kB,EAAQgR,UAAUs/C,kBAAoB,SAASzrC,GAC7C,GAAIi4B,GAAQhgD,KAAKggD,KACjB,KAAK,GAAI3/C,KAAM2/C,GACTA,EAAM75C,eAAe9F,IACvB2/C,EAAM3/C,GAAImzD,kBAAkBzrC,IASlC7kB,EAAQgR,UAAUo2C,WAAa,WACgB,GAAzCtqD,KAAKgkD,UAAUd,wBACjBljD,KAAKyzD,qBAKP,KADA,GAAI17C,GAAQ,EACL/X,KAAKqnD,QAAUtvC,EAAQ/X,KAAKgkD,UAAUP,yBAC3CzjD,KAAK0zD,eACL37C,GAI0C,IAAxC/X,KAAKgkD,UAAUN,uBACjB1jD,KAAKwnD,YAAYj3C,SAAS,IAAI,GAAO,GAGM,GAAzCvQ,KAAKgkD,UAAUd,wBACjBljD,KAAK2zD,sBAGP3zD,KAAKyuB,KAAK,gCASZvrB,EAAQgR,UAAUu/C,oBAAsB,WACtC,GAAI5U,GAAQ7+C,KAAK6+C,KACjB,KAAK,GAAIx+C,KAAMw+C,GACTA,EAAM14C,eAAe9F,IACJ,MAAfw+C,EAAMx+C,GAAImS,GAA4B,MAAfqsC,EAAMx+C,GAAIoS,IACnCosC,EAAMx+C,GAAIuzD,UAAUphD,EAAIqsC,EAAMx+C,GAAI2tD,OAClCnP,EAAMx+C,GAAIuzD,UAAUnhD,EAAIosC,EAAMx+C,GAAI4tD,OAClCpP,EAAMx+C,GAAI2tD,QAAS,EACnBnP,EAAMx+C,GAAI4tD,QAAS,IAW3B/qD,EAAQgR,UAAUy/C,oBAAsB,WACtC,GAAI9U,GAAQ7+C,KAAK6+C,KACjB,KAAK,GAAIx+C,KAAMw+C,GACTA,EAAM14C,eAAe9F,IACM,MAAzBw+C,EAAMx+C,GAAIuzD,UAAUphD,IACtBqsC,EAAMx+C,GAAI2tD,OAASnP,EAAMx+C,GAAIuzD,UAAUphD,EACvCqsC,EAAMx+C,GAAI4tD,OAASpP,EAAMx+C,GAAIuzD,UAAUnhD,IAa/CvP,EAAQgR,UAAU2/C,UAAY,SAASC,GACrC,GAAIjV,GAAQ7+C,KAAK6+C,KACjB,KAAK,GAAIx+C,KAAMw+C,GACb,GAAkBh4C,SAAdg4C,EAAMx+C,IACwB,GAA5Bw+C,EAAMx+C,GAAI0zD,SAASD,GACrB,OAAO,CAIb,QAAO,GAUT5wD,EAAQgR,UAAU8/C,mBAAqB,WACrC,GAEIrL,GAFAv1B,EAAWpzB,KAAKq+C,wBAChBQ,EAAQ7+C,KAAK6+C,MAEboV,GAAe,CAEnB,IAAIj0D,KAAKgkD,UAAUV,YAAc,EAC/B,IAAKqF,IAAU9J,GACTA,EAAM14C,eAAewiD,KACvB9J,EAAM8J,GAAQuL,oBAAoB9gC,EAAUpzB,KAAKgkD,UAAUV,aAC3D2Q,GAAe,OAKnB,KAAKtL,IAAU9J,GACTA,EAAM14C,eAAewiD,KACvB9J,EAAM8J,GAAQwL,aAAa/gC,GAC3B6gC,GAAe,EAKrB,IAAoB,GAAhBA,EAAsB,CACxB,GAAIG,GAAgBp0D,KAAKgkD,UAAUT,YAAc/+C,KAAKJ,IAAIpE,KAAKuE,MAAM,IACrE,OAAI6vD,GAAgB,GAAIp0D,KAAKgkD,UAAUV,aAC9B,EAGAtjD,KAAK6zD,UAAUO,GAG1B,OAAO,GAITlxD,EAAQgR,UAAUmgD,oBAAsB,WACtC,GAAIxV,GAAQ7+C,KAAK6+C,KACjB,KAAK,GAAI8J,KAAU9J,GACbA,EAAM14C,eAAewiD,IACvB9J,EAAM8J,GAAQ2L,kBAKpBpxD,EAAQgR,UAAUqgD,mBAAqB,WACrCv0D,KAAKw0D,sBAAsB,uBACgB,GAAvCx0D,KAAKgkD,UAAUb,aAAah0C,SAA0D,GAAvCnP,KAAKgkD,UAAUb,aAAaC,SAC7EpjD,KAAKy0D,mBAAmB,wBAS5BvxD,EAAQgR,UAAUw/C,aAAe,WAC/B,IAAK1zD,KAAK8lD,yBACW,GAAf9lD,KAAKqnD,OAAgB,CACvB,GAAIqN,IAAmB,EACnBC,GAAsB,CAE1B30D,MAAKw0D,sBAAsB,8BAC3B,IAAII,GAAa50D,KAAKw0D,sBAAsB,qBACD,IAAvCx0D,KAAKgkD,UAAUb,aAAah0C,SAA0D,GAAvCnP,KAAKgkD,UAAUb,aAAaC,UAC7EuR,EAAsB30D,KAAKy0D,mBAAmB,sBAIhD,KAAK,GAAI5uD,GAAI,EAAGA,EAAI+uD,EAAW5uD,OAAQH,IACrC6uD,EAAmBE,EAAW/uD,IAAM6uD,CAItC10D,MAAKqnD,OAASqN,GAAoBC,EACf,GAAf30D,KAAKqnD,OACPrnD,KAAKu0D,qBAI4B,GAA7Bv0D,KAAKgmD,uBACPhmD,KAAKyuB,KAAK,sBACVzuB,KAAKgmD,sBAAuB,GAIhChmD,KAAKyjD,4BAYXvgD,EAAQgR,UAAU2gD,eAAiB,WAajC,GAXA70D,KAAKsnD,MAAQzgD,OAEe,GAAxB7G,KAAK8nD,iBAEP9nD,KAAKqQ,QAIPrQ,KAAK80D,oBAGc,GAAf90D,KAAKqnD,OAAgB,CACvB,GAAI0N,GAAYnwD,KAAKu6B,KACrBn/B,MAAK0zD,cACL,IAAIvV,GAAcv5C,KAAKu6B,MAAQ41B,GAG1B/0D,KAAKi+C,eAAiBj+C,KAAKk+C,WAAa,EAAIC,GAAsC,GAAvBn+C,KAAKo+C,iBAA0C,GAAfp+C,KAAKqnD,SACnGrnD,KAAK0zD,eAGkB,GAAnB1zD,KAAKk+C,aACPl+C,KAAKo+C,gBAAiB,IAK5B,GAAI4W,GAAkBpwD,KAAKu6B,KAC3Bn/B,MAAKi3B,UACLj3B,KAAKk+C,WAAat5C,KAAKu6B,MAAQ61B,EAEH,GAAxBh1D,KAAK8nD,iBAEP9nD,KAAKqQ,SAIa,mBAAXvI,UACTA,OAAO4qD,sBAAwB5qD,OAAO4qD,uBAAyB5qD,OAAOmtD,0BACvCntD,OAAOotD,6BAA+BptD,OAAOqtD,yBAM9EjyD,EAAQgR,UAAU7D,MAAQ,WAIxB,GAHoC,GAAhCrQ,KAAK8lD,0BACP9lD,KAAKqnD,QAAS,GAEG,GAAfrnD,KAAKqnD,QAAqC,GAAnBrnD,KAAKqlD,YAAsC,GAAnBrlD,KAAKslD,YAAyC,GAAtBtlD,KAAKulD,eAAwC,GAAlBvlD,KAAKwkD,UACpGxkD,KAAKsnD,QAENtnD,KAAKsnD,MADqB,GAAxBtnD,KAAK8nD,gBACMhgD,OAAOyS,WAAWva,KAAK60D,eAAen/B,KAAK11B,MAAOA,KAAKi+C,gBAGvDn2C,OAAO4qD,sBAAsB1yD,KAAK60D,eAAen/B,KAAK11B,YAOvE,IAFAA,KAAKolD,iBAEDplD,KAAKyjD,wBAA0B,EAAG,CAKpC,GAAIvuC,GAAKlV,KACL6U,GACFugD,WAAYlgD,EAAGuuC,wBAEjBzjD,MAAKyjD,wBAA0B,EAC/BzjD,KAAKgmD,sBAAuB,EAC5BzrC,WAAW,WACTrF,EAAGuZ,KAAK,aAAc5Z,IACrB,OAGH7U,MAAKyjD,wBAA0B,GAWrCvgD,EAAQgR,UAAU4gD,kBAAoB,WACpC,GAAuB,GAAnB90D,KAAKqlD,YAAsC,GAAnBrlD,KAAKslD,WAAiB,CAChD,GAAI7mC,GAAcze,KAAK0tD,iBACvB1tD,MAAK6lD,gBAAgBpnC,EAAYjM,EAAExS,KAAKqlD,WAAY5mC,EAAYhM,EAAEzS,KAAKslD,YAEzE,GAA0B,GAAtBtlD,KAAKulD,cAAoB,CAC3B,GAAIx4B,IACFva,EAAGxS,KAAKsgB,MAAMC,OAAOC,YAAc,EACnC/N,EAAGzS,KAAKsgB,MAAMC,OAAOsF,aAAe,EAEtC7lB,MAAK6uD,MAAM7uD,KAAKuE,OAAO,EAAIvE,KAAKulD,eAAgBx4B,KAQpD7pB,EAAQgR,UAAUmhD,iBAAmB,SAASC,GAC9B,GAAVA,GACFt1D,KAAK8lD,yBAA0B,EAC/B9lD,KAAKqnD,QAAS,IAGdrnD,KAAK8lD,yBAA0B,EAC/B9lD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,UAWTnN,EAAQgR,UAAUi3C,uBAAyB,SAASrC,GAIlD,GAHqBjiD,SAAjBiiD,IACFA,GAAe,GAE0B,GAAvC9oD,KAAKgkD,UAAUb,aAAah0C,SAA0D,GAAvCnP,KAAKgkD,UAAUb,aAAaC,QAAiB,CAC9FpjD,KAAKoyD,oBAEL;IAAK,GAAIzJ,KAAU3oD,MAAKsyD,QAAiB,QAAS,MAC5CtyD,KAAKsyD,QAAiB,QAAS,MAAEnsD,eAAewiD,IACwB9hD,SAAtE7G,KAAKggD,MAAMhgD,KAAKsyD,QAAiB,QAAS,MAAE3J,GAAQ4M,qBAC/Cv1D,MAAKsyD,QAAiB,QAAS,MAAE3J,OAK3C,CAEH3oD,KAAKsyD,QAAiB,QAAS,QAC/B,KAAK,GAAIxC,KAAU9vD,MAAKggD,MAClBhgD,KAAKggD,MAAM75C,eAAe2pD,KAC5B9vD,KAAKggD,MAAM8P,GAAQuC,IAAM,MAM/BryD,KAAKwxD,0BACA1I,IACH9oD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,UAWTnN,EAAQgR,UAAUk+C,mBAAqB,WACrC,GAA2C,GAAvCpyD,KAAKgkD,UAAUb,aAAah0C,SAA0D,GAAvCnP,KAAKgkD,UAAUb,aAAaC,QAC7E,IAAK,GAAI0M,KAAU9vD,MAAKggD,MACtB,GAAIhgD,KAAKggD,MAAM75C,eAAe2pD,GAAS,CACrC,GAAIY,GAAO1wD,KAAKggD,MAAM8P,EACtB,IAAgB,MAAZY,EAAK2B,IAAa,CACpB,GAAI1J,GAAS,UAAU5zC,OAAO27C,EAAKrwD,GACnCL,MAAKsyD,QAAiB,QAAS,MAAE3J,GAAU,GAAIplD,IACtClD,GAAGsoD,EACF7J,KAAK,EACLG,MAAM,SACNC,MAAM,GACNsW,mBAAmB,SACbx1D,KAAKgkD,WACrB0M,EAAK2B,IAAMryD,KAAKsyD,QAAiB,QAAS,MAAE3J,GAC5C+H,EAAK2B,IAAIkD,aAAe7E,EAAKrwD,GAC7BqwD,EAAK+E,wBAYfvyD,EAAQgR,UAAU6pC,wBAA0B,WAC1C,IAAK,GAAI2X,KAAS/N,GACZA,EAAYxhD,eAAeuvD,KAC7BxyD,EAAQgR,UAAUwhD,GAAS/N,EAAY+N,KAQ7CxyD,EAAQgR,UAAUyhD,cAAgB,WAChC96B,QAAQtG,IAAI,mEACZv0B,KAAK41D,kBAMP1yD,EAAQgR,UAAU0hD,eAAiB,WACjC,GAAIC,KACJ,KAAK,GAAIlN,KAAU3oD,MAAK6+C,MACtB,GAAI7+C,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrC,GAAIN,GAAOroD,KAAK6+C,MAAM8J,GAClBmN,GAAkB91D,KAAK6+C,MAAMmP,OAC7B+H,GAAkB/1D,KAAK6+C,MAAMoP,QAC7BjuD,KAAK2mD,UAAUhzC,MAAMg1C,GAAQn2C,GAAKhO,KAAK+pB,MAAM85B,EAAK71C,IAAMxS,KAAK2mD,UAAUhzC,MAAMg1C,GAAQl2C,GAAKjO,KAAK+pB,MAAM85B,EAAK51C,KAC5GojD,EAAUttD,MAAMlI,GAAGsoD,EAAOn2C,EAAEhO,KAAK+pB,MAAM85B,EAAK71C,GAAGC,EAAEjO,KAAK+pB,MAAM85B,EAAK51C,GAAGqjD,eAAeA,EAAeC,eAAeA,IAIvH/1D,KAAK2mD,UAAU/wC,OAAOigD,IAMxB3yD,EAAQgR,UAAU8hD,aAAe,SAAS9/C,GACxC,GAAI2/C,KACJ,IAAYhvD,SAARqP,GACF,GAA0B,GAAtB5P,MAAMC,QAAQ2P,IAChB,IAAK,GAAIrQ,GAAI,EAAGA,EAAIqQ,EAAIlQ,OAAQH,IAC9B,GAA2BgB,SAAvB7G,KAAK6+C,MAAM3oC,EAAIrQ,IAAmB,CACpC,GAAIwiD,GAAOroD,KAAK6+C,MAAM3oC,EAAIrQ,GAC1BgwD,GAAU3/C,EAAIrQ,KAAO2M,EAAGhO,KAAK+pB,MAAM85B,EAAK71C,GAAIC,EAAGjO,KAAK+pB,MAAM85B,EAAK51C,SAKnE,IAAwB5L,SAApB7G,KAAK6+C,MAAM3oC,GAAoB,CACjC,GAAImyC,GAAOroD,KAAK6+C,MAAM3oC,EACtB2/C,GAAU3/C,IAAQ1D,EAAGhO,KAAK+pB,MAAM85B,EAAK71C,GAAIC,EAAGjO,KAAK+pB,MAAM85B,EAAK51C,SAKhE,KAAK,GAAIk2C,KAAU3oD,MAAK6+C,MACtB,GAAI7+C,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrC,GAAIN,GAAOroD,KAAK6+C,MAAM8J,EACtBkN,GAAUlN,IAAWn2C,EAAGhO,KAAK+pB,MAAM85B,EAAK71C,GAAIC,EAAGjO,KAAK+pB,MAAM85B,EAAK51C,IAIrE,MAAOojD,IAWT3yD,EAAQgR,UAAU+hD,YAAc,SAAUtN,EAAQz5C,GAChD,GAAIlP,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrB9hD,SAAZqI,IACFA,KAEF,IAAIgnD,IAAgB1jD,EAAGxS,KAAK6+C,MAAM8J,GAAQn2C,EAAGC,EAAGzS,KAAK6+C,MAAM8J,GAAQl2C,EACnEvD,GAAQ0V,SAAWsxC,EACnBhnD,EAAQinD,aAAexN,EAEvB3oD,KAAK6oB,OAAO3Z,OAGZ2rB,SAAQtG,IAAI,iCAWhBrxB,EAAQgR,UAAU2U,OAAS,SAAU3Z,GACnC,MAAgBrI,UAAZqI,OACFA,OAGwBrI,SAAtBqI,EAAQwb,SAAoCxb,EAAQwb,QAAalY,EAAG,EAAGC,EAAG,IACpD5L,SAAtBqI,EAAQwb,OAAOlY,IAA6BtD,EAAQwb,OAAOlY,EAAK,GAC1C3L,SAAtBqI,EAAQwb,OAAOjY,IAA6BvD,EAAQwb,OAAOjY,EAAK,GAC1C5L,SAAtBqI,EAAQ3K,QAAoC2K,EAAQ3K,MAAYvE,KAAKstD,aAC/CzmD,SAAtBqI,EAAQ0V,WAAoC1V,EAAQ0V,SAAY5kB,KAAK0tD,mBAC/C7mD,SAAtBqI,EAAQq6C,YAAoCr6C,EAAQq6C,WAAah5C,SAAS,IAC1ErB,EAAQq6C,aAAc,IAAsBr6C,EAAQq6C,WAAah5C,SAAS,IAC1ErB,EAAQq6C,aAAc,IAAsBr6C,EAAQq6C,cACrB1iD,SAA/BqI,EAAQq6C,UAAUh5C,WAA0BrB,EAAQq6C,UAAUh5C,SAAW,KACpC1J,SAArCqI,EAAQq6C,UAAU6M,iBAAgClnD,EAAQq6C,UAAU6M,eAAiB,qBAEzFp2D,MAAKq2D,YAAYnnD,KAcnBhM,EAAQgR,UAAUmiD,YAAc,SAAUnnD,GACxC,GAAgBrI,SAAZqI,EAEF,YADAA,KAKFlP,MAAKmuD,cACiB,GAAlBj/C,EAAQonD,SACVt2D,KAAK8kD,eAAiB51C,EAAQinD,aAC9Bn2D,KAAK+kD,mBAAqB71C,EAAQwb,QAIb,GAAnB1qB,KAAKykD,YACPzkD,KAAKu2D,kBAAkB,GAGzBv2D,KAAK0kD,YAAc1kD,KAAKstD,YACxBttD,KAAK4kD,kBAAoB5kD,KAAK0tD,kBAC9B1tD,KAAK2kD,YAAcz1C,EAAQ3K,MAI3BvE,KAAKie,UAAUje,KAAK2kD,YACpB,IAAI6R,GAAax2D,KAAKgvD,aAAax8C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,eAClG4wC,GACFjkD,EAAGgkD,EAAWhkD,EAAItD,EAAQ0V,SAASpS,EACnCC,EAAG+jD,EAAW/jD,EAAIvD,EAAQ0V,SAASnS,EAErCzS,MAAK6kD,mBACHryC,EAAGxS,KAAK4kD,kBAAkBpyC,EAAIikD,EAAmBjkD,EAAIxS,KAAK2kD,YAAcz1C,EAAQwb,OAAOlY,EACvFC,EAAGzS,KAAK4kD,kBAAkBnyC,EAAIgkD,EAAmBhkD,EAAIzS,KAAK2kD,YAAcz1C,EAAQwb,OAAOjY,GAIvD,GAA9BvD,EAAQq6C,UAAUh5C,SACO,MAAvBvQ,KAAK8kD,gBACP9kD,KAAK02D,eAAiB12D,KAAKi3B,QAC3Bj3B,KAAKi3B,QAAUj3B,KAAK22D,gBAGpB32D,KAAKie,UAAUje,KAAK2kD,aACpB3kD,KAAK6lD,gBAAgB7lD,KAAK6kD,kBAAkBryC,EAAGxS,KAAK6kD,kBAAkBpyC,GACtEzS,KAAKi3B,YAIPj3B,KAAKwkD,WAAY,EACjBxkD,KAAKskD,eAAiB,GAAKtkD,KAAKg+C,kBAAoB9uC,EAAQq6C,UAAUh5C,SAAW,OAAU,EAAIvQ,KAAKg+C,kBACpGh+C,KAAKukD,wBAA0Br1C,EAAQq6C,UAAU6M,eACjDp2D,KAAK02D,eAAiB12D,KAAKi3B,QAC3Bj3B,KAAKi3B,QAAUj3B,KAAKu2D,kBACpBv2D,KAAKi3B,UACLj3B,KAAKqQ,UAQTnN,EAAQgR,UAAUyiD,cAAgB,WAChC,GAAIT,IAAgB1jD,EAAGxS,KAAK6+C,MAAM7+C,KAAK8kD,gBAAgBtyC,EAAGC,EAAGzS,KAAK6+C,MAAM7+C,KAAK8kD,gBAAgBryC,GACzF+jD,EAAax2D,KAAKgvD,aAAax8C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,eAClG4wC,GACFjkD,EAAGgkD,EAAWhkD,EAAI0jD,EAAa1jD,EAC/BC,EAAG+jD,EAAW/jD,EAAIyjD,EAAazjD,GAE7BmyC,EAAoB5kD,KAAK0tD,kBACzB7I,GACFryC,EAAGoyC,EAAkBpyC,EAAIikD,EAAmBjkD,EAAIxS,KAAKuE,MAAQvE,KAAK+kD,mBAAmBvyC,EACrFC,EAAGmyC,EAAkBnyC,EAAIgkD,EAAmBhkD,EAAIzS,KAAKuE,MAAQvE,KAAK+kD,mBAAmBtyC,EAGvFzS,MAAK6lD,gBAAgBhB,EAAkBryC,EAAEqyC,EAAkBpyC,GAC3DzS,KAAK02D,kBAGPxzD,EAAQgR,UAAUi6C,YAAc,WACH,MAAvBnuD,KAAK8kD,iBACP9kD,KAAKi3B,QAAUj3B,KAAK02D,eACpB12D,KAAK8kD,eAAiB,KACtB9kD,KAAK+kD,mBAAqB,OAS9B7hD,EAAQgR,UAAUqiD,kBAAoB,SAAU9R,GAC9CzkD,KAAKykD,WAAaA,GAAczkD,KAAKykD,WAAazkD,KAAKskD,eACvDtkD,KAAKykD,YAAczkD,KAAKskD,cAExB,IAAIjyB,GAAW1xB,EAAK8P,gBAAgBzQ,KAAKukD,yBAAyBvkD,KAAKykD,WAEvEzkD,MAAKie,UAAUje,KAAK0kD,aAAe1kD,KAAK2kD,YAAc3kD,KAAK0kD,aAAeryB,GAC1EryB,KAAK6lD,gBACH7lD,KAAK4kD,kBAAkBpyC,GAAKxS,KAAK6kD,kBAAkBryC,EAAIxS,KAAK4kD,kBAAkBpyC,GAAK6f,EACnFryB,KAAK4kD,kBAAkBnyC,GAAKzS,KAAK6kD,kBAAkBpyC,EAAIzS,KAAK4kD,kBAAkBnyC,GAAK4f,GAGrFryB,KAAK02D,iBAGD12D,KAAKykD,YAAc,IACrBzkD,KAAKwkD,WAAY,EACjBxkD,KAAKykD,WAAa,EAEhBzkD,KAAKi3B,QADoB,MAAvBj3B,KAAK8kD,eACQ9kD,KAAK22D,cAGL32D,KAAK02D,eAEtB12D,KAAKyuB,KAAK,uBAIdvrB,EAAQgR,UAAUwiD,eAAiB,aAQnCxzD,EAAQgR,UAAUo4C,SAAW,WAC3B,OAAQtsD,KAAK+qD,WAAa/qD,KAAK+qD,UAAU6L,QAQ3C1zD,EAAQgR,UAAU+wB,SAAW,WAC3B,MAAOjlC,MAAKie,aAQd/a,EAAQgR,UAAU0hB,SAAW,WAC3B,MAAO51B,MAAKstD,aAQdpqD,EAAQgR,UAAU2iD,qBAAuB,WACvC,MAAO72D,MAAKgvD,aAAax8C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,gBAI9F3iB,EAAQgR,UAAU4iD,eAAiB,SAASnO,GAC1C,MAA2B9hD,UAAvB7G,KAAK6+C,MAAM8J,GACN3oD,KAAK6+C,MAAM8J,GAAQD,YAD5B,QAKFxlD,EAAQgR,UAAU6iD,kBAAoB,SAASpO,GAC7C,GAAIqO,KACJ,IAA2BnwD,SAAvB7G,KAAK6+C,MAAM8J,GAGb,IAAK,GAFDN,GAAOroD,KAAK6+C,MAAM8J,GAClBsO,GAAWtO,QAAS,GACf9iD,EAAI,EAAGA,EAAIwiD,EAAKrI,MAAMh6C,OAAQH,IAAK,CAC1C,GAAI6qD,GAAOrI,EAAKrI,MAAMn6C,EAClB6qD,GAAKwG,MAAQvO,EACc9hD,SAAzBowD,EAAQvG,EAAKyG,UACfH,EAASzuD,KAAKmoD,EAAKyG,QACnBF,EAAQvG,EAAKyG,SAAU,GAGlBzG,EAAKyG,QAAUxO,GACK9hD,SAAvBowD,EAAQvG,EAAKwG,QACfF,EAASzuD,KAAKmoD,EAAKwG,MACnBD,EAAQvG,EAAKwG,OAAQ,GAK7B,MAAOF,IAIT9zD,EAAQgR,UAAUkjD,iBAAmB,SAASzO,GAC5C,GAAI0O,KACJ,IAA2BxwD,SAAvB7G,KAAK6+C,MAAM8J,GAEb,IAAK,GADDN,GAAOroD,KAAK6+C,MAAM8J,GACb9iD,EAAI,EAAGA,EAAIwiD,EAAKrI,MAAMh6C,OAAQH,IACrCwxD,EAAU9uD,KAAK8/C,EAAKrI,MAAMn6C,GAAGxF,GAGjC,OAAOg3D,IAGTn0D,EAAQgR,UAAUojD,oBAAsB,SAAS/rD,GAC/C,MAAO5K,GAAKqL,WAAWT,IAIzB1L,EAAOD,QAAUsD,GAKb,SAASrD,EAAQD,EAASM,GAoB9B,QAASkD,GAAMyuD,EAAY1uD,EAASo0D,GAClC,IAAKp0D,EACH,KAAM,qBAER,IAAIwL,IAAU,QAAQ,WAClBq1C,EAAYrjD,EAAK+N,sBAAsBC,EAAO4oD,EAClDv3D,MAAKkP,QAAU80C,EAAUhE,MACzBhgD,KAAK2gD,QAAUqD,EAAUrD,QACzB3gD,KAAKkP,QAAsB,aAAIqoD,EAA+B,aAG9Dv3D,KAAKmD,QAAUA,EAGfnD,KAAKK,GAASwG,OACd7G,KAAKm3D,OAAStwD,OACd7G,KAAKk3D,KAASrwD,OACd7G,KAAKunC,MAAS1gC,OACd7G,KAAKw3D,cAAgBx3D,KAAKkP,QAAQoE,MAAQtT,KAAKkP,QAAQ+wC,yBACvDjgD,KAAKsE,MAASuC,OACd7G,KAAKumC,UAAW,EAChBvmC,KAAKgN,OAAQ,EACbhN,KAAKy3D,iBAAmBxvD,IAAI,EAAEJ,KAAK,EAAEyL,MAAM,EAAEC,OAAO,EAAEmkD,MAAM,GAC5D13D,KAAK23D,YAAa,EAClB33D,KAAK8xD,YAAa,EAElB9xD,KAAKmqB,KAAO,KACZnqB,KAAKoqB,GAAK,KACVpqB,KAAKqyD,IAAM,KAEXryD,KAAK43D,WAAa,KAClB53D,KAAK63D,SAAW,KAIhB73D,KAAK83D,kBACL93D,KAAK+3D,gBAEL/3D,KAAK2wD,WAAY,EAEjB3wD,KAAKg4D,YAAc,EACnBh4D,KAAKi4D,aAAc,EAEnBj4D,KAAK4xD,cAAcC,GAEnB7xD,KAAKk4D,qBAAsB,EAC3Bl4D,KAAKm4D,cAAgBhuC,KAAK,KAAMC,GAAG,KAAMguC,cACzCp4D,KAAKq4D,cAAgB,KAjEvB,GAAI13D,GAAOT,EAAoB,GAC3BqD,EAAOrD,EAAoB,GAwE/BkD,GAAK8Q,UAAU09C,cAAgB,SAASC,GAEtC,GADA7xD,KAAK8xD,YAAa,EACbD,EAAL,CAIA,GAAIljD,IAAU,QAAQ,WAAW,WAAW,YAAY,WAAW,kBAAkB,kBAAkB,QACrG,2BAA2B,aAAa,mBAAmB,OAAO,eAAe,iBAAkB,UACnG,wBAAwB,eAsC1B,QApCAhO,EAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAAS2iD,GAEvBhrD,SAApBgrD,EAAW1nC,OAA+BnqB,KAAKm3D,OAAStF,EAAW1nC,MACjDtjB,SAAlBgrD,EAAWznC,KAA+BpqB,KAAKk3D,KAAOrF,EAAWznC,IAE/CvjB,SAAlBgrD,EAAWxxD,KAA+BL,KAAKK,GAAKwxD,EAAWxxD,IAC1CwG,SAArBgrD,EAAW7+C,QAA+BhT,KAAKgT,MAAQ6+C,EAAW7+C,MAAOhT,KAAK23D,YAAa,GAEtE9wD,SAArBgrD,EAAWtqB,QAA6BvnC,KAAKunC,MAAQsqB,EAAWtqB,OAC3C1gC,SAArBgrD,EAAWvtD,QAA6BtE,KAAKsE,MAAQutD,EAAWvtD,OAC1CuC,SAAtBgrD,EAAW7rD,SAA6BhG,KAAK2gD,QAAQK,aAAe6Q,EAAW7rD,QAE1Da,SAArBgrD,EAAWtmD,QACbvL,KAAKkP,QAAQsxC,cAAe,EACxB7/C,EAAK8D,SAASotD,EAAWtmD,QAC3BvL,KAAKkP,QAAQ3D,MAAMA,MAAQsmD,EAAWtmD,MACtCvL,KAAKkP,QAAQ3D,MAAMwB,UAAY8kD,EAAWtmD,QAGX1E,SAA3BgrD,EAAWtmD,MAAMA,QAA0BvL,KAAKkP,QAAQ3D,MAAMA,MAAQsmD,EAAWtmD,MAAMA,OACxD1E,SAA/BgrD,EAAWtmD,MAAMwB,YAA0B/M,KAAKkP,QAAQ3D,MAAMwB,UAAY8kD,EAAWtmD,MAAMwB,WAChElG,SAA3BgrD,EAAWtmD,MAAMyB,QAA0BhN,KAAKkP,QAAQ3D,MAAMyB,MAAQ6kD,EAAWtmD,MAAMyB,SAO/FhN,KAAK0+C,UAEL1+C,KAAKg4D,WAAah4D,KAAKg4D,YAAoCnxD,SAArBgrD,EAAWv+C,MACjDtT,KAAKi4D,YAAcj4D,KAAKi4D,aAAsCpxD,SAAtBgrD,EAAW7rD,OAEnDhG,KAAKw3D,cAAgBx3D,KAAKkP,QAAQoE,MAAOtT,KAAKkP,QAAQ+wC,yBAG9CjgD,KAAKkP,QAAQxB,OACnB,IAAK,OAAiB1N,KAAK+wC,KAAO/wC,KAAKs4D,SAAW,MAClD,KAAK,QAAiBt4D,KAAK+wC,KAAO/wC,KAAKu4D,UAAY,MACnD,KAAK,eAAiBv4D,KAAK+wC,KAAO/wC,KAAKw4D,gBAAkB,MACzD,KAAK,YAAiBx4D,KAAK+wC,KAAO/wC,KAAKy4D,aAAe,MACtD,SAAsBz4D,KAAK+wC,KAAO/wC,KAAKs4D,aAQ3Cl1D,EAAK8Q,UAAUwqC,QAAU,WACvB1+C,KAAKkyD,aAELlyD,KAAKmqB,KAAOnqB,KAAKmD,QAAQ07C,MAAM7+C,KAAKm3D,SAAW,KAC/Cn3D,KAAKoqB,GAAKpqB,KAAKmD,QAAQ07C,MAAM7+C,KAAKk3D,OAAS,KAC3Cl3D,KAAK2wD,UAAa3wD,KAAKmqB,MAAQnqB,KAAKoqB,GAEhCpqB,KAAK2wD,WACP3wD,KAAKmqB,KAAKuuC,WAAW14D,MACrBA,KAAKoqB,GAAGsuC,WAAW14D,QAGfA,KAAKmqB,MACPnqB,KAAKmqB,KAAKwuC,WAAW34D,MAEnBA,KAAKoqB,IACPpqB,KAAKoqB,GAAGuuC,WAAW34D,QAQzBoD,EAAK8Q,UAAUg+C,WAAa,WACtBlyD,KAAKmqB,OACPnqB,KAAKmqB,KAAKwuC,WAAW34D,MACrBA,KAAKmqB,KAAO,MAEVnqB,KAAKoqB,KACPpqB,KAAKoqB,GAAGuuC,WAAW34D,MACnBA,KAAKoqB,GAAK,MAGZpqB,KAAK2wD,WAAY,GAQnBvtD,EAAK8Q,UAAUs8C,SAAW,WACxB,MAA6B,kBAAfxwD,MAAKunC,MAAuBvnC,KAAKunC,QAAUvnC,KAAKunC,OAQhEnkC,EAAK8Q,UAAUyB,SAAW,WACxB,MAAO3V,MAAKsE,OASdlB,EAAK8Q,UAAUu+C,cAAgB,SAAStuD,EAAKC,EAAKC,GAChD,IAAKrE,KAAKg4D,YAA6BnxD,SAAf7G,KAAKsE,MAAqB,CAChD,GAAIC,GAAQvE,KAAKkP,QAAQ0vC,sBAAsBz6C,EAAKC,EAAKC,EAAOrE,KAAKsE,OACjEs0D,EAAY54D,KAAKkP,QAAQiZ,SAAWnoB,KAAKkP,QAAQgZ,QACrDloB,MAAKkP,QAAQoE,MAAQtT,KAAKkP,QAAQgZ,SAAW3jB,EAAQq0D,EACrD54D,KAAKw3D,cAAgBx3D,KAAKkP,QAAQoE,MAAOtT,KAAKkP,QAAQ+wC,2BAU1D78C,EAAK8Q,UAAU68B,KAAO,WACpB,KAAM,uCAQR3tC,EAAK8Q,UAAUq8C,kBAAoB,SAASxsC,GAC1C,GAAI/jB,KAAK2wD,UAAW,CAClB,GAAI1gC,GAAU,GACV4oC,EAAQ74D,KAAKmqB,KAAK3X,EAClBsmD,EAAQ94D,KAAKmqB,KAAK1X,EAClBsmD,EAAM/4D,KAAKoqB,GAAG5X,EACdwmD,EAAMh5D,KAAKoqB,GAAG3X,EACdwmD,EAAOl1C,EAAIlc,KACXqxD,EAAOn1C,EAAI9b,IAEX8jB,EAAO/rB,KAAKm5D,mBAAmBN,EAAOC,EAAOC,EAAKC,EAAKC,EAAMC,EAEjE,OAAejpC,GAAPlE,EAGR,OAAO,GAIX3oB,EAAK8Q,UAAUklD,UAAY,SAASrxC,GAClC,GAAIsxC,GAAWr5D,KAAKkP,QAAQ3D,KAC5B,IAAiC,GAA7BvL,KAAKkP,QAAQuxC,aAAsB,CACrC,GACI6Y,GAAWC,EADXC,EAAMzxC,EAAI0xC,qBAAqBz5D,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,EAAGzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,EAkBhF,OAhBA6mD,GAAYt5D,KAAKmqB,KAAKjb,QAAQ3D,MAAMwB,UAAUD,OAC9CysD,EAAUv5D,KAAKoqB,GAAGlb,QAAQ3D,MAAMwB,UAAUD,OAGhB,GAAtB9M,KAAKmqB,KAAKoc,UAAyC,GAApBvmC,KAAKoqB,GAAGmc,UACzC+yB,EAAY34D,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,SAC9E+tD,EAAU54D,EAAK2K,gBAAgBtL,KAAKoqB,GAAGlb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,UAE7C,GAAtBxL,KAAKmqB,KAAKoc,UAAwC,GAApBvmC,KAAKoqB,GAAGmc,SAC7CgzB,EAAUv5D,KAAKoqB,GAAGlb,QAAQ3D,MAAMuB,OAEH,GAAtB9M,KAAKmqB,KAAKoc,UAAyC,GAApBvmC,KAAKoqB,GAAGmc,WAC9C+yB,EAAYt5D,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,QAEtC0sD,EAAIE,aAAa,EAAGJ,GACpBE,EAAIE,aAAa,EAAGH,GACbC,EAwBT,MArBIx5D,MAAK8xD,cAAe,IACW,MAA7B9xD,KAAKkP,QAAQsxC,aACf6Y,GACEtsD,UAAW/M,KAAKoqB,GAAGlb,QAAQ3D,MAAMwB,UAAUD,OAC3CE,MAAOhN,KAAKoqB,GAAGlb,QAAQ3D,MAAMyB,MAAMF,OACnCvB,MAAO5K,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,WAGvC,QAA7BxL,KAAKkP,QAAQsxC,cAAuD,GAA7BxgD,KAAKkP,QAAQsxC,gBAC3D6Y,GACEtsD,UAAW/M,KAAKmqB,KAAKjb,QAAQ3D,MAAMwB,UAAUD,OAC7CE,MAAOhN,KAAKmqB,KAAKjb,QAAQ3D,MAAMyB,MAAMF,OACrCvB,MAAO5K,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,WAG7ExL,KAAKkP,QAAQ3D,MAAQ8tD,EACrBr5D,KAAK8xD,YAAa,GAKC,GAAjB9xD,KAAKumC,SAA4B8yB,EAAStsD,UACvB,GAAd/M,KAAKgN,MAAuBqsD,EAASrsD,MACTqsD,EAAS9tD,OAWhDnI,EAAK8Q,UAAUokD,UAAY,SAASvwC,GAKlC,GAHAA,EAAIY,YAAc3oB,KAAKo5D,UAAUrxC,GACjCA,EAAIO,UAActoB,KAAK25D,gBAEnB35D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAExB,GAGIxX,GAHAy/C,EAAMryD,KAAK45D,MAAM7xC,EAIrB,IAAI/nB,KAAKgT,MAAO,CACd,GAAyC,GAArChT,KAAKkP,QAAQi0C,aAAah0C,SAA0B,MAAPkjD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAK75D,KAAKmqB,KAAK3X,EAAI6/C,EAAI7/C,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAI6/C,EAAI7/C,IAClEsnD,EAAY,IAAK,IAAK95D,KAAKmqB,KAAK1X,EAAI4/C,EAAI5/C,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAI4/C,EAAI5/C,GACtEG,IAASJ,EAAEqnD,EAAWpnD,EAAEqnD,OAGxBlnD,GAAQ5S,KAAK+5D,aAAa,GAE5B/5D,MAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,QAG3C,CACH,GAAID,GAAGC,EACH6Z,EAAStsB,KAAK2gD,QAAQK,aAAe,EACrCqH,EAAOroD,KAAKmqB,IACXk+B,GAAK/0C,OACR+0C,EAAK4R,OAAOlyC,GAEVsgC,EAAK/0C,MAAQ+0C,EAAK90C,QACpBf,EAAI61C,EAAK71C,EAAI61C,EAAK/0C,MAAQ,EAC1Bb,EAAI41C,EAAK51C,EAAI6Z,IAGb9Z,EAAI61C,EAAK71C,EAAI8Z,EACb7Z,EAAI41C,EAAK51C,EAAI41C,EAAK90C,OAAS,GAE7BvT,KAAKk6D,QAAQnyC,EAAKvV,EAAGC,EAAG6Z,GACxB1Z,EAAQ5S,KAAKm6D,eAAe3nD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,KAUhDrP,EAAK8Q,UAAUylD,cAAgB,WAC7B,MAAqB,IAAjB35D,KAAKumC,SACC/hC,KAAKJ,IAAII,KAAKL,IAAInE,KAAKw3D,cAAex3D,KAAKkP,QAAQiZ,UAAW,GAAInoB,KAAKo6D,iBAG7D,GAAdp6D,KAAKgN,MACAxI,KAAKJ,IAAII,KAAKL,IAAInE,KAAKkP,QAAQgxC,WAAYlgD,KAAKkP,QAAQiZ,UAAW,GAAInoB,KAAKo6D,iBAG5E51D,KAAKJ,IAAIpE,KAAKkP,QAAQoE,MAAO,GAAItT,KAAKo6D,kBAKnDh3D,EAAK8Q,UAAUmmD,mBAAqB,WAClC,GAAyC,GAArCr6D,KAAKkP,QAAQi0C,aAAaC,SAAwD,GAArCpjD,KAAKkP,QAAQi0C,aAAah0C,QACzE,MAAOnP,MAAKqyD,GAET,IAAyC,GAArCryD,KAAKkP,QAAQi0C,aAAah0C,QACjC,OAAQqD,EAAE,EAAEC,EAAE,EAGd,IAAI6nD,GAAO,KACPC,EAAO,KACPpR,EAASnpD,KAAKkP,QAAQi0C,aAAaE,UACnCl8C,EAAOnH,KAAKkP,QAAQi0C,aAAah8C,KACjCyY,EAAKpb,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACpCqN,EAAKrb,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACxC,IAAY,YAARtL,GAA8B,iBAARA,EACpB3C,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACjEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,GAEvB7f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,GAGzB7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,GAEvB7f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,IAGtB,YAAR1Y,IACFmzD,EAAYnR,EAAStpC,EAAdD,EAAmB5f,KAAKmqB,KAAK3X,EAAI8nD,IAGnC91D,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KACtEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,GAEvB5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,GAGzB5f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,GAEvB5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,IAGtB,YAARzY,IACFozD,EAAYpR,EAASvpC,EAAdC,EAAmB7f,KAAKmqB,KAAK1X,EAAI8nD,QAIzC,IAAY,iBAARpzD,EACH3C,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACrE6nD,EAAOt6D,KAAKmqB,KAAK3X,EAEf+nD,EADEv6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACjBzS,KAAKoqB,GAAG3X,GAAK,EAAI02C,GAAUtpC,EAG3B7f,KAAKoqB,GAAG3X,GAAK,EAAI02C,GAAUtpC,GAG7Brb,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KAExE6nD,EADEt6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EACjBxS,KAAKoqB,GAAG5X,GAAK,EAAI22C,GAAUvpC,EAG3B5f,KAAKoqB,GAAG5X,GAAK,EAAI22C,GAAUvpC,EAEpC26C,EAAOv6D,KAAKmqB,KAAK1X,OAGhB,IAAY,cAARtL,EAELmzD,EADEt6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EACjBxS,KAAKoqB,GAAG5X,GAAK,EAAI22C,GAAUvpC,EAG3B5f,KAAKoqB,GAAG5X,GAAK,EAAI22C,GAAUvpC,EAEpC26C,EAAOv6D,KAAKmqB,KAAK1X,MAEd,IAAY,YAARtL,EACPmzD,EAAOt6D,KAAKmqB,KAAK3X,EAEf+nD,EADEv6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACjBzS,KAAKoqB,GAAG3X,GAAK,EAAI02C,GAAUtpC,EAG3B7f,KAAKoqB,GAAG3X,GAAK,EAAI02C,GAAUtpC,MAGjC,IAAY,YAAR1Y,EAAoB,CAC3B,GAAIyY,GAAK5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC3BqN,EAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3B6Z,EAAS9nB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAC9B26C,EAAKh2D,KAAKgoB,GAEViuC,EAAgBj2D,KAAKk2D,MAAM76C,EAAGD,GAC9B+6C,GAAWF,GAA2B,GAATtR,EAAgB,IAAOqR,IAAO,EAAIA,EAEnEF,GAAOt6D,KAAKmqB,KAAK3X,GAAY,GAAP22C,EAAa,IAAK78B,EAAO9nB,KAAK4a,IAAIu7C,GACxDJ,EAAOv6D,KAAKmqB,KAAK1X,GAAY,GAAP02C,EAAa,IAAK78B,EAAO9nB,KAAK+a,IAAIo7C,OAErD,IAAY,aAARxzD,EAAqB,CAC5B,GAAIyY,GAAK5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC3BqN,EAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3B6Z,EAAS9nB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAC9B26C,EAAKh2D,KAAKgoB,GAEViuC,EAAgBj2D,KAAKk2D,MAAM76C,EAAGD,GAC9B+6C,GAAWF,GAA4B,IAATtR,EAAgB,IAAOqR,IAAO,EAAIA,EAEpEF,GAAOt6D,KAAKmqB,KAAK3X,GAAY,GAAP22C,EAAa,IAAK78B,EAAO9nB,KAAK4a,IAAIu7C,GACxDJ,EAAOv6D,KAAKmqB,KAAK1X,GAAY,GAAP02C,EAAa,IAAK78B,EAAO9nB,KAAK+a,IAAIo7C,OAGpDn2D,MAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,GACjEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,EAC9By6C,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,GAE/Bt6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,EAC9By6C,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,GAGjCt6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,EAC9By6C,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,GAE/Bt6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,EAC9By6C,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,IAInC91D,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KACtEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,EAC9B26C,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,GAE/Bv6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,EAC9B26C,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,GAGjCv6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,EAC9B26C,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,GAE/Bv6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,EAC9B26C,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,IAO9C,QAAQ/nD,EAAG8nD,EAAM7nD,EAAG8nD,IASxBn3D,EAAK8Q,UAAU0lD,MAAQ,SAAU7xC,GAI/B,GAFAA,EAAIa,YACJb,EAAIc,OAAO7oB,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,GACO,GAArCzS,KAAKkP,QAAQi0C,aAAah0C,QAAiB,CAC7C,GAAyC,GAArCnP,KAAKkP,QAAQi0C,aAAaC,QAAkB,CAC9C,GAAIiP,GAAMryD,KAAKq6D,oBACf,OAAa,OAAThI,EAAI7/C,GACNuV,EAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9BsV,EAAIlH,SACG,OAKPkH,EAAI6yC,iBAAiBvI,EAAI7/C,EAAE6/C,EAAI5/C,EAAEzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GACpDsV,EAAIlH,SAGGwxC,GAMT,MAFAtqC,GAAI6yC,iBAAiB56D,KAAKqyD,IAAI7/C,EAAExS,KAAKqyD,IAAI5/C,EAAEzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9DsV,EAAIlH,SACG7gB,KAAKqyD,IAMd,MAFAtqC,GAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9BsV,EAAIlH,SACG,MAYXzd,EAAK8Q,UAAUgmD,QAAU,SAAUnyC,EAAKvV,EAAGC,EAAG6Z,GAE5CvE,EAAIa,YACJb,EAAIwE,IAAI/Z,EAAGC,EAAG6Z,EAAQ,EAAG,EAAI9nB,KAAKgoB,IAAI,GACtCzE,EAAIlH,UAWNzd,EAAK8Q,UAAU8lD,OAAS,SAAUjyC,EAAKuC,EAAM9X,EAAGC,GAC9C,GAAI6X,EAAM,CACRvC,EAAIQ,MAASvoB,KAAKmqB,KAAKoc,UAAYvmC,KAAKoqB,GAAGmc,SAAY,QAAU,IACjEvmC,KAAKkP,QAAQkwC,SAAW,MAAQp/C,KAAKkP,QAAQmwC,QAC7C,IAAIqY,EAEJ,IAAuB,GAAnB13D,KAAK23D,WAAoB,CAC3B,GAAIjsB,GAAQhnC,OAAO4lB,GAAMhiB,MAAM,MAC3BuyD,EAAYnvB,EAAM1lC,OAClBo5C,EAAWn7C,OAAOjE,KAAKkP,QAAQkwC,SACnCsY,GAAQjlD,GAAK,EAAIooD,GAAa,EAAIzb,CAGlC,KAAK,GADD9rC,GAAQyU,EAAI+yC,YAAYpvB,EAAM,IAAIp4B,MAC7BzN,EAAI,EAAOg1D,EAAJh1D,EAAeA,IAAK,CAClC,GAAIyiB,GAAYP,EAAI+yC,YAAYpvB,EAAM7lC,IAAIyN,KAC1CA,GAAQgV,EAAYhV,EAAQgV,EAAYhV,EAE1C,GAAIC,GAASvT,KAAKkP,QAAQkwC,SAAWyb,EACjChzD,EAAO2K,EAAIc,EAAQ,EACnBrL,EAAMwK,EAAIc,EAAS,CAGvBvT,MAAKy3D,iBAAmBxvD,IAAIA,EAAIJ,KAAKA,EAAKyL,MAAMA,EAAMC,OAAOA,EAAOmkD,MAAMA,GAG/E,GAAIA,GAAQ13D,KAAKy3D,gBAAgBC,KAEjC3vC,GAAI6qC,OAE+B,cAA/B5yD,KAAKkP,QAAQixC,iBAChBp4B,EAAI8qC,UAAUrgD,EAAGklD,GACjB13D,KAAK+6D,yBAAyBhzC,GAC9BvV,EAAI,EACJklD,EAAQ,GAIT13D,KAAKg7D,eAAejzC,GACpB/nB,KAAKi7D,eAAelzC,EAAIvV,EAAEklD,EAAOhsB,EAAOmvB,EAAWzb,GAEnDr3B,EAAIgrC,YASL3vD,EAAK8Q,UAAU6mD,yBAA2B,SAAShzC,GAClD,GAAIlI,GAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3BmN,EAAK5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EAC3B0oD,EAAiB12D,KAAKk2D,MAAM76C,EAAID,IAGf,GAAjBs7C,GAA4B,EAALt7C,GAAYs7C,EAAiB,GAAU,EAALt7C,KAC5Ds7C,GAAkC12D,KAAKgoB,IAGxCzE,EAAIozC,OAAOD,IASZ93D,EAAK8Q,UAAU8mD,eAAiB,SAASjzC,GACxC,GAA8BlhB,SAA1B7G,KAAKkP,QAAQowC,UAAoD,OAA1Bt/C,KAAKkP,QAAQowC,UAA+C,SAA1Bt/C,KAAKkP,QAAQowC,SAAqB,CAC9Gv3B,EAAIiB,UAAYhpB,KAAKkP,QAAQowC,QAE7B,IAAI8b,GAAa,CAEoB,gBAA/Bp7D,KAAKkP,QAAQixC,eACfp4B,EAAIszC,SAAuC,IAA7Br7D,KAAKy3D,gBAAgBnkD,MAA4C,IAA9BtT,KAAKy3D,gBAAgBlkD,OAAcvT,KAAKy3D,gBAAgBnkD,MAAOtT,KAAKy3D,gBAAgBlkD,QAE/F,cAA/BvT,KAAKkP,QAAQixC,eACpBp4B,EAAIszC,SAAuC,IAA7Br7D,KAAKy3D,gBAAgBnkD,QAAetT,KAAKy3D,gBAAgBlkD,OAAS6nD,GAAap7D,KAAKy3D,gBAAgBnkD,MAAOtT,KAAKy3D,gBAAgBlkD,QAExG,cAA/BvT,KAAKkP,QAAQixC,eACpBp4B,EAAIszC,SAAuC,IAA7Br7D,KAAKy3D,gBAAgBnkD,MAAa8nD,EAAYp7D,KAAKy3D,gBAAgBnkD,MAAOtT,KAAKy3D,gBAAgBlkD,QAG7GwU,EAAIszC,SAASr7D,KAAKy3D,gBAAgB5vD,KAAM7H,KAAKy3D,gBAAgBxvD,IAAKjI,KAAKy3D,gBAAgBnkD,MAAOtT,KAAKy3D,gBAAgBlkD,UAezHnQ,EAAK8Q,UAAU+mD,eAAiB,SAASlzC,EAAKvV,EAAGklD,EAAOhsB,EAAOmvB,EAAWzb,GAMxE,GAJDr3B,EAAIiB,UAAYhpB,KAAKkP,QAAQiwC,WAAa,QAC1Cp3B,EAAIuB,UAAY,SAGoB,cAA/BtpB,KAAKkP,QAAQixC,eAAgC,CAC/C,GAAIib,GAAa,CACkB,eAA/Bp7D,KAAKkP,QAAQixC,gBACfp4B,EAAIwB,aAAe,aACnBmuC,GAAS,EAAI0D,GAEyB,cAA/Bp7D,KAAKkP,QAAQixC,gBACpBp4B,EAAIwB,aAAe,UACnBmuC,GAAS,EAAI0D,GAGbrzC,EAAIwB,aAAe,aAIrBxB,GAAIwB,aAAe,QAIjBvpB,MAAKkP,QAAQqwC,gBAAkB,IACjCx3B,EAAIO,UAActoB,KAAKkP,QAAQqwC,gBAC/Bx3B,EAAIY,YAAc3oB,KAAKkP,QAAQswC,gBAC/Bz3B,EAAIuzC,SAAc,QAErB,KAAK,GAAIz1D,GAAI,EAAOg1D,EAAJh1D,EAAeA,IACzB7F,KAAKkP,QAAQqwC,gBAAkB,GAChCx3B,EAAIwzC,WAAW7vB,EAAM7lC,GAAI2M,EAAGklD,GAEhC3vC,EAAIyB,SAASkiB,EAAM7lC,GAAI2M,EAAGklD,GAC1BA,GAAStY,GAaXh8C,EAAK8Q,UAAUukD,cAAgB,SAAS1wC,GAEtCA,EAAIY,YAAc3oB,KAAKo5D,UAAUrxC,GACjCA,EAAIO,UAAYtoB,KAAK25D,eAErB,IAAItH,GAAM,IAEV,IAAwBxrD,SAApBkhB,EAAIyzC,YAA2B,CACjCzzC,EAAI6qC,MAEJ,IAAI6I,IAAW,EAEbA,GAD+B50D,SAA7B7G,KAAKkP,QAAQmxC,KAAKr6C,QAAkDa,SAA1B7G,KAAKkP,QAAQmxC,KAAKC,KACnDtgD,KAAKkP,QAAQmxC,KAAKr6C,OAAOhG,KAAKkP,QAAQmxC,KAAKC,MAG3C,EAAE,GAIfv4B,EAAIyzC,YAAYC,GAChB1zC,EAAI2zC,eAAiB,EAGrBrJ,EAAMryD,KAAK45D,MAAM7xC,GAGjBA,EAAIyzC,aAAa,IACjBzzC,EAAI2zC,eAAiB,EACrB3zC,EAAIgrC,cAIJhrC,GAAIa,YACJb,EAAI4zC,QAAU,QACsB90D,SAAhC7G,KAAKkP,QAAQmxC,KAAKE,UAEpBx4B,EAAI6zC,WAAW57D,KAAKmqB,KAAK3X,EAAExS,KAAKmqB,KAAK1X,EAAEzS,KAAKoqB,GAAG5X,EAAExS,KAAKoqB,GAAG3X,GACpDzS,KAAKkP,QAAQmxC,KAAKr6C,OAAOhG,KAAKkP,QAAQmxC,KAAKC,IAAItgD,KAAKkP,QAAQmxC,KAAKE,UAAUvgD,KAAKkP,QAAQmxC,KAAKC,MAE9Dz5C,SAA7B7G,KAAKkP,QAAQmxC,KAAKr6C,QAAkDa,SAA1B7G,KAAKkP,QAAQmxC,KAAKC,IAEnEv4B,EAAI6zC,WAAW57D,KAAKmqB,KAAK3X,EAAExS,KAAKmqB,KAAK1X,EAAEzS,KAAKoqB,GAAG5X,EAAExS,KAAKoqB,GAAG3X,GACpDzS,KAAKkP,QAAQmxC,KAAKr6C,OAAOhG,KAAKkP,QAAQmxC,KAAKC,OAIhDv4B,EAAIc,OAAO7oB,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,GAClCsV,EAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,IAEhCsV,EAAIlH,QAIN,IAAI7gB,KAAKgT,MAAO,CACd,GAAIJ,EACJ,IAAyC,GAArC5S,KAAKkP,QAAQi0C,aAAah0C,SAA0B,MAAPkjD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAK75D,KAAKmqB,KAAK3X,EAAI6/C,EAAI7/C,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAI6/C,EAAI7/C,IAClEsnD,EAAY,IAAK,IAAK95D,KAAKmqB,KAAK1X,EAAI4/C,EAAI5/C,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAI4/C,EAAI5/C,GACtEG,IAASJ,EAAEqnD,EAAWpnD,EAAEqnD,OAGxBlnD,GAAQ5S,KAAK+5D,aAAa,GAE5B/5D,MAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,KAUhDrP,EAAK8Q,UAAU6lD,aAAe,SAAU8B,GACtC,OACErpD,GAAI,EAAIqpD,GAAc77D,KAAKmqB,KAAK3X,EAAIqpD,EAAa77D,KAAKoqB,GAAG5X,EACzDC,GAAI,EAAIopD,GAAc77D,KAAKmqB,KAAK1X,EAAIopD,EAAa77D,KAAKoqB,GAAG3X,IAa7DrP,EAAK8Q,UAAUimD,eAAiB,SAAU3nD,EAAGC,EAAG6Z,EAAQuvC,GACtD,GAAItK,GAA6B,GAApBsK,EAAa,EAAE,GAASr3D,KAAKgoB,EAC1C,QACEha,EAAGA,EAAI8Z,EAAS9nB,KAAK+a,IAAIgyC,GACzB9+C,EAAGA,EAAI6Z,EAAS9nB,KAAK4a,IAAImyC,KAW7BnuD,EAAK8Q,UAAUskD,iBAAmB,SAASzwC,GACzC,GAAInV,EAMJ,IAJAmV,EAAIY,YAAc3oB,KAAKo5D,UAAUrxC,GACjCA,EAAIiB,UAAYjB,EAAIY,YACpBZ,EAAIO,UAAYtoB,KAAK25D,gBAEjB35D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAExB,GAAIioC,GAAMryD,KAAK45D,MAAM7xC,GAEjBwpC,EAAQ/sD,KAAKk2D,MAAO16D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrExM,GAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQkxC,gBAE1D,IAAyC,GAArCpgD,KAAKkP,QAAQi0C,aAAah0C,SAA0B,MAAPkjD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAK75D,KAAKmqB,KAAK3X,EAAI6/C,EAAI7/C,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAI6/C,EAAI7/C,IAClEsnD,EAAY,IAAK,IAAK95D,KAAKmqB,KAAK1X,EAAI4/C,EAAI5/C,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAI4/C,EAAI5/C,GACtEG,IAASJ,EAAEqnD,EAAWpnD,EAAEqnD,OAGxBlnD,GAAQ5S,KAAK+5D,aAAa,GAG5BhyC,GAAI+zC,MAAMlpD,EAAMJ,EAAGI,EAAMH,EAAG8+C,EAAOvrD,GACnC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,OACPhT,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,OAG3C,CAEH,GAAID,GAAGC,EACH6Z,EAAS,IAAO9nB,KAAKJ,IAAI,IAAIpE,KAAK2gD,QAAQK,cAC1CqH,EAAOroD,KAAKmqB,IACXk+B,GAAK/0C,OACR+0C,EAAK4R,OAAOlyC,GAEVsgC,EAAK/0C,MAAQ+0C,EAAK90C,QACpBf,EAAI61C,EAAK71C,EAAiB,GAAb61C,EAAK/0C,MAClBb,EAAI41C,EAAK51C,EAAI6Z,IAGb9Z,EAAI61C,EAAK71C,EAAI8Z,EACb7Z,EAAI41C,EAAK51C,EAAkB,GAAd41C,EAAK90C,QAEpBvT,KAAKk6D,QAAQnyC,EAAKvV,EAAGC,EAAG6Z,EAGxB,IAAIilC,GAAQ,GAAM/sD,KAAKgoB,GACnBxmB,GAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQkxC,gBAC1DxtC,GAAQ5S,KAAKm6D,eAAe3nD,EAAGC,EAAG6Z,EAAQ,IAC1CvE,EAAI+zC,MAAMlpD,EAAMJ,EAAGI,EAAMH,EAAG8+C,EAAOvrD,GACnC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,QACPJ,EAAQ5S,KAAKm6D,eAAe3nD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,MAKlDrP,EAAK8Q,UAAU6nD,eAAiB,SAASxtD,GACvC,GAAI8jD,GAAMryD,KAAKq6D,qBAEX7nD,EAAIhO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGvO,KAAKmqB,KAAK3X,EAAK,EAAEjE,GAAG,EAAIA,GAAI8jD,EAAI7/C,EAAIhO,KAAKkwB,IAAInmB,EAAE,GAAGvO,KAAKoqB,GAAG5X,EAC9EC,EAAIjO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGvO,KAAKmqB,KAAK1X,EAAK,EAAElE,GAAG,EAAIA,GAAI8jD,EAAI5/C,EAAIjO,KAAKkwB,IAAInmB,EAAE,GAAGvO,KAAKoqB,GAAG3X,CAElF,QAAQD,EAAEA,EAAEC,EAAEA,IAWhBrP,EAAK8Q,UAAU8nD,oBAAsB,SAAS7xC,EAAKpC,GACjD,GAIIxB,GAAIgrC,EAAM0K,EAAkBC,EAAiBC,EAJ7C1sD,EAAgB,GAChBC,EAAY,EACZC,EAAM,EACNC,EAAO,EAEPwsD,EAAY,GACZ/T,EAAOroD,KAAKoqB,EAKhB,KAJY,GAARD,IACFk+B,EAAOroD,KAAKmqB,MAGAva,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAAwB,IAAdF,EAAMC,EAOpB,IALA2W,EAAMvmB,KAAK+7D,eAAelsD,GAC1B0hD,EAAQ/sD,KAAKk2D,MAAOrS,EAAK51C,EAAI8T,EAAI9T,EAAK41C,EAAK71C,EAAI+T,EAAI/T,GACnDypD,EAAmB5T,EAAK4T,iBAAiBl0C,EAAIwpC,GAC7C2K,EAAkB13D,KAAKgsB,KAAKhsB,KAAKkwB,IAAInO,EAAI/T,EAAE61C,EAAK71C,EAAE,GAAKhO,KAAKkwB,IAAInO,EAAI9T,EAAE41C,EAAK51C,EAAE,IAC7E0pD,EAAaF,EAAmBC,EAC5B13D,KAAKknB,IAAIywC,GAAcC,EACzB,KAEoB,GAAbD,EACK,GAARhyC,EACFxa,EAAME,EAGND,EAAOC,EAIG,GAARsa,EACFva,EAAOC,EAGPF,EAAME,EAIVH,IAIF,MAFA6W,GAAIhY,EAAIsB,EAED0W,GAUTnjB,EAAK8Q,UAAUqkD,WAAa,SAASxwC,GAEnCA,EAAIY,YAAc3oB,KAAKo5D,UAAUrxC,GACjCA,EAAIiB,UAAYjB,EAAIY,YACpBZ,EAAIO,UAAYtoB,KAAK25D,eAGrB,IAAIpI,GAAOvrD,EAAQq2D,CAGnB,IAAIr8D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAKxB,GAHApqB,KAAK45D,MAAM7xC,GAG8B,GAArC/nB,KAAKkP,QAAQi0C,aAAah0C,QAAiB,CAC7C,GAAIkjD,GAAMryD,KAAKq6D,oBACfgC,GAAWr8D,KAAKg8D,qBAAoB,EAAOj0C,EAC3C,IAAIu0C,GAAWt8D,KAAK+7D,eAAev3D,KAAKJ,IAAI,EAAKi4D,EAAS9tD,EAAI,IAC9DgjD,GAAQ/sD,KAAKk2D,MAAO2B,EAAS5pD,EAAI6pD,EAAS7pD,EAAK4pD,EAAS7pD,EAAI8pD,EAAS9pD,OAElE,CACH++C,EAAQ/sD,KAAKk2D,MAAO16D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EACrE,IAAIoN,GAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5B8pD,EAAoB/3D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAC7C28C,EAAex8D,KAAKoqB,GAAG6xC,iBAAiBl0C,EAAKwpC,GAC7CkL,GAAiBF,EAAoBC,GAAgBD,CAEzDF,MACAA,EAAS7pD,GAAK,EAAIiqD,GAAiBz8D,KAAKmqB,KAAK3X,EAAIiqD,EAAgBz8D,KAAKoqB,GAAG5X,EACzE6pD,EAAS5pD,GAAK,EAAIgqD,GAAiBz8D,KAAKmqB,KAAK1X,EAAIgqD,EAAgBz8D,KAAKoqB,GAAG3X,EAU3E,GANAzM,GAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQkxC,iBACtDr4B,EAAI+zC,MAAMO,EAAS7pD,EAAE6pD,EAAS5pD,EAAG8+C,EAAOvrD,GACxC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,MAAO,CACd,GAAIJ,EAEFA,GADuC,GAArC5S,KAAKkP,QAAQi0C,aAAah0C,SAA0B,MAAPkjD,EACvCryD,KAAK+7D,eAAe,IAGpB/7D,KAAK+5D,aAAa,IAE5B/5D,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,QAG3C,CAEH,GACID,GAAGC,EAAGqpD,EADNzT,EAAOroD,KAAKmqB,KAEZmC,EAAS,IAAO9nB,KAAKJ,IAAI,IAAIpE,KAAK2gD,QAAQK,aACzCqH,GAAK/0C,OACR+0C,EAAK4R,OAAOlyC,GAEVsgC,EAAK/0C,MAAQ+0C,EAAK90C,QACpBf,EAAI61C,EAAK71C,EAAiB,GAAb61C,EAAK/0C,MAClBb,EAAI41C,EAAK51C,EAAI6Z,EACbwvC,GACEtpD,EAAGA,EACHC,EAAG41C,EAAK51C,EACR8+C,MAAO,GAAM/sD,KAAKgoB,MAIpBha,EAAI61C,EAAK71C,EAAI8Z,EACb7Z,EAAI41C,EAAK51C,EAAkB,GAAd41C,EAAK90C,OAClBuoD,GACEtpD,EAAG61C,EAAK71C,EACRC,EAAGA,EACH8+C,MAAO,GAAM/sD,KAAKgoB,KAGtBzE,EAAIa,YAEJb,EAAIwE,IAAI/Z,EAAGC,EAAG6Z,EAAQ,EAAG,EAAI9nB,KAAKgoB,IAAI,GACtCzE,EAAIlH,QAGJ,IAAI7a,IAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQkxC,gBAC1Dr4B,GAAI+zC,MAAMA,EAAMtpD,EAAGspD,EAAMrpD,EAAGqpD,EAAMvK,MAAOvrD,GACzC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,QACPJ,EAAQ5S,KAAKm6D,eAAe3nD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,MAiBlDrP,EAAK8Q,UAAUilD,mBAAqB,SAAUuD,EAAGC,EAAIC,EAAGC,EAAIC,EAAGC,GAC7D,GAAIjzD,GAAc,CAClB,IAAI9J,KAAKmqB,MAAQnqB,KAAKoqB,GACpB,GAAyC,GAArCpqB,KAAKkP,QAAQi0C,aAAah0C,QAAiB,CAC7C,GAAImrD,GAAMC,CACV,IAAyC,GAArCv6D,KAAKkP,QAAQi0C,aAAah0C,SAAwD,GAArCnP,KAAKkP,QAAQi0C,aAAaC,QACzEkX,EAAOt6D,KAAKqyD,IAAI7/C,EAChB+nD,EAAOv6D,KAAKqyD,IAAI5/C,MAEb,CACH,GAAI4/C,GAAMryD,KAAKq6D,oBACfC,GAAOjI,EAAI7/C,EACX+nD,EAAOlI,EAAI5/C,EAEb,GACIkU,GACA9gB,EAAE0I,EAAEiE,EAAEC,EAAGuqD,EAAOC,EAFhBC,EAAc,GAGlB,KAAKr3D,EAAI,EAAO,GAAJA,EAAQA,IAClB0I,EAAI,GAAI1I,EACR2M,EAAIhO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGmuD,EAAM,EAAEnuD,GAAG,EAAIA,GAAI+rD,EAAO91D,KAAKkwB,IAAInmB,EAAE,GAAGquD,EAC5DnqD,EAAIjO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGouD,EAAM,EAAEpuD,GAAG,EAAIA,GAAIgsD,EAAO/1D,KAAKkwB,IAAInmB,EAAE,GAAGsuD,EACxDh3D,EAAI,IACN8gB,EAAW3mB,KAAKm9D,mBAAmBH,EAAMC,EAAMzqD,EAAEC,EAAGqqD,EAAGC,GACvDG,EAAyBA,EAAXv2C,EAAyBA,EAAWu2C,GAEpDF,EAAQxqD,EAAGyqD,EAAQxqD,CAErB3I,GAAcozD,MAGdpzD,GAAc9J,KAAKm9D,mBAAmBT,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,OAGpD,CACH,GAAIvqD,GAAGC,EAAGmN,EAAIC,EACVyM,EAAS,IAAOtsB,KAAK2gD,QAAQK,aAC7BqH,EAAOroD,KAAKmqB,IACZk+B,GAAK/0C,MAAQ+0C,EAAK90C,QACpBf,EAAI61C,EAAK71C,EAAI,GAAM61C,EAAK/0C,MACxBb,EAAI41C,EAAK51C,EAAI6Z,IAGb9Z,EAAI61C,EAAK71C,EAAI8Z,EACb7Z,EAAI41C,EAAK51C,EAAI,GAAM41C,EAAK90C,QAE1BqM,EAAKpN,EAAIsqD,EACTj9C,EAAKpN,EAAIsqD,EACTjzD,EAActF,KAAKknB,IAAIlnB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAAMyM,GAGpD,MAAItsB,MAAKy3D,gBAAgB5vD,KAAOi1D,GAC9B98D,KAAKy3D,gBAAgB5vD,KAAO7H,KAAKy3D,gBAAgBnkD,MAAQwpD,GACzD98D,KAAKy3D,gBAAgBxvD,IAAM80D,GAC3B/8D,KAAKy3D,gBAAgBxvD,IAAMjI,KAAKy3D,gBAAgBlkD,OAASwpD,EAClD,EAGAjzD,GAIX1G,EAAK8Q,UAAUipD,mBAAqB,SAAST,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GAC1D,GAAIK,GAAKR,EAAGF,EACVW,EAAKR,EAAGF,EACRW,EAAYF,EAAGA,EAAKC,EAAGA,EACvBE,IAAOT,EAAKJ,GAAMU,GAAML,EAAKJ,GAAMU,GAAMC,CAEvCC,GAAI,EACNA,EAAI,EAEO,EAAJA,IACPA,EAAI,EAGN,IAAI/qD,GAAIkqD,EAAKa,EAAIH,EACf3qD,EAAIkqD,EAAKY,EAAIF,EACbz9C,EAAKpN,EAAIsqD,EACTj9C,EAAKpN,EAAIsqD,CAQX,OAAOv4D,MAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,IAQ9Bzc,EAAK8Q,UAAU+wB,SAAW,SAAS1gC,GACjCvE,KAAKo6D,gBAAkB,EAAI71D,GAI7BnB,EAAK8Q,UAAUyyB,OAAS,WACtB3mC,KAAKumC,UAAW,GAGlBnjC,EAAK8Q,UAAU0yB,SAAW,WACxB5mC,KAAKumC,UAAW,GAGlBnjC,EAAK8Q,UAAUuhD,mBAAqB,WACjB,OAAbz1D,KAAKqyD,KAA8B,OAAdryD,KAAKmqB,MAA6B,OAAZnqB,KAAKoqB,IAClDpqB,KAAKqyD,IAAI7/C,EAAI,IAAOxS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAC1CxS,KAAKqyD,IAAI5/C,EAAI,IAAOzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IAEtB,OAAbzS,KAAKqyD,MACZryD,KAAKqyD,IAAI7/C,EAAI,EACbxS,KAAKqyD,IAAI5/C,EAAI,IASjBrP,EAAK8Q,UAAUs/C,kBAAoB,SAASzrC,GAC1C,GAAgC,GAA5B/nB,KAAKk4D,oBAA6B,CACpC,GAA+B,OAA3Bl4D,KAAKm4D,aAAahuC,MAA0C,OAAzBnqB,KAAKm4D,aAAa/tC,GAAa,CACpE,GAAIozC,GAAa,cAAczoD,OAAO/U,KAAKK,IACvCo9D,EAAW,YAAY1oD,OAAO/U,KAAKK,IACnC2jD,GACYnF,OAAOnsC,MAAM,GAAI4Z,OAAO,EAAGtL,YAAY,EAAG++B,oBAAqB,GAC/DY,SAASO,QAAQ,GACjBI,YAAac,sBAAuB,EAAGD,aAAc7uC,MAAM,EAAGC,OAAQ,EAAG+Y,OAAO,IAEhGtsB,MAAKm4D,aAAahuC,KAAO,GAAI5mB,IAC1BlD,GAAGm9D,EACFve,MAAM,MACJ1zC,OAAOsB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAClEm3C,GACVhkD,KAAKm4D,aAAa/tC,GAAK,GAAI7mB,IACxBlD,GAAGo9D,EACFxe,MAAM,MACN1zC,OAAOsB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAChEm3C,GAGZhkD,KAAKm4D,aAAaC,aACqB,GAAnCp4D,KAAKm4D,aAAahuC,KAAKoc,WACzBvmC,KAAKm4D,aAAaC,UAAUjuC,KAAOnqB,KAAK09D,2BAA2B31C,GACnE/nB,KAAKm4D,aAAahuC,KAAK3X,EAAIxS,KAAKm4D,aAAaC,UAAUjuC,KAAK3X,EAC5DxS,KAAKm4D,aAAahuC,KAAK1X,EAAIzS,KAAKm4D,aAAaC,UAAUjuC,KAAK1X,GAEzB,GAAjCzS,KAAKm4D,aAAa/tC,GAAGmc,WACvBvmC,KAAKm4D,aAAaC,UAAUhuC,GAAKpqB,KAAK29D,yBAAyB51C,GAC/D/nB,KAAKm4D,aAAa/tC,GAAG5X,EAAIxS,KAAKm4D,aAAaC,UAAUhuC,GAAG5X,EACxDxS,KAAKm4D,aAAa/tC,GAAG3X,EAAIzS,KAAKm4D,aAAaC,UAAUhuC,GAAG3X,GAG1DzS,KAAKm4D,aAAahuC,KAAK4mB,KAAKhpB,GAC5B/nB,KAAKm4D,aAAa/tC,GAAG2mB,KAAKhpB,OAG1B/nB,MAAKm4D,cAAgBhuC,KAAK,KAAMC,GAAG,KAAMguC,eAQ7Ch1D,EAAK8Q,UAAU0pD,oBAAsB,WACnC59D,KAAK43D,WAAa53D,KAAKmqB,KACvBnqB,KAAK63D,SAAW73D,KAAKoqB,GACrBpqB,KAAKk4D,qBAAsB,GAO7B90D,EAAK8Q,UAAU2pD,qBAAuB,WACpC79D,KAAKm3D,OAASn3D,KAAKmqB,KAAK9pB,GACxBL,KAAKk3D,KAAOl3D,KAAKoqB,GAAG/pB,GAChBL,KAAKm3D,QAAUn3D,KAAK43D,WAAWv3D,GACjCL,KAAK43D,WAAWe,WAAW34D,MAEpBA,KAAKk3D,MAAQl3D,KAAK63D,SAASx3D,IAClCL,KAAK63D,SAASc,WAAW34D,MAG3BA,KAAK43D,WAAa,KAClB53D,KAAK63D,SAAW,KAChB73D,KAAKk4D,qBAAsB,GAW7B90D,EAAK8Q,UAAU4pD,wBAA0B,SAAStrD,EAAEC,GAClD,GAAI2lD,GAAYp4D,KAAKm4D,aAAaC,UAC9B2F,EAAev5D,KAAKgsB,KAAKhsB,KAAKkwB,IAAIliB,EAAI4lD,EAAUjuC,KAAK3X,EAAE,GAAKhO,KAAKkwB,IAAIjiB,EAAI2lD,EAAUjuC,KAAK1X,EAAE,IAC1FurD,EAAex5D,KAAKgsB,KAAKhsB,KAAKkwB,IAAIliB,EAAI4lD,EAAUhuC,GAAG5X,EAAI,GAAKhO,KAAKkwB,IAAIjiB,EAAI2lD,EAAUhuC,GAAG3X,EAAI,GAE9F,OAAmB,IAAfsrD,GACF/9D,KAAKq4D,cAAgBr4D,KAAKmqB,KAC1BnqB,KAAKmqB,KAAOnqB,KAAKm4D,aAAahuC,KACvBnqB,KAAKm4D,aAAahuC,MAEL,GAAb6zC,GACPh+D,KAAKq4D,cAAgBr4D,KAAKoqB,GAC1BpqB,KAAKoqB,GAAKpqB,KAAKm4D,aAAa/tC,GACrBpqB,KAAKm4D,aAAa/tC,IAGlB,MASXhnB,EAAK8Q,UAAU+pD,qBAAuB,WACG,GAAnCj+D,KAAKm4D,aAAahuC,KAAKoc,UACzBvmC,KAAKmqB,KAAOnqB,KAAKq4D,cACjBr4D,KAAKq4D,cAAgB,KACrBr4D,KAAKm4D,aAAahuC,KAAKyc,YAEiB,GAAjC5mC,KAAKm4D,aAAa/tC,GAAGmc,WAC5BvmC,KAAKoqB,GAAKpqB,KAAKq4D,cACfr4D,KAAKq4D,cAAgB,KACrBr4D,KAAKm4D,aAAa/tC,GAAGwc,aAUzBxjC,EAAK8Q,UAAUwpD,2BAA6B,SAAS31C,GAEnD,GAAIm2C,EACJ,IAAyC,GAArCl+D,KAAKkP,QAAQi0C,aAAah0C,QAC5B+uD,EAAqBl+D,KAAKg8D,qBAAoB,EAAMj0C,OAEjD,CACH,GAAIwpC,GAAQ/sD,KAAKk2D,MAAO16D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrEoN,EAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5B8pD,EAAoB/3D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAE7Cs+C,EAAiBn+D,KAAKmqB,KAAK8xC,iBAAiBl0C,EAAKwpC,EAAQ/sD,KAAKgoB,IAC9D4xC,GAAmB7B,EAAoB4B,GAAkB5B,CAC7D2B,MACAA,EAAmB1rD,EAAI,EAAoBxS,KAAKmqB,KAAK3X,GAAK,EAAI4rD,GAAmBp+D,KAAKoqB,GAAG5X,EACzF0rD,EAAmBzrD,EAAI,EAAoBzS,KAAKmqB,KAAK1X,GAAK,EAAI2rD,GAAmBp+D,KAAKoqB,GAAG3X,EAG3F,MAAOyrD,IAST96D,EAAK8Q,UAAUypD,yBAA2B,SAAS51C,GAEjD,GAAuBs2C,EACvB,IAAyC,GAArCr+D,KAAKkP,QAAQi0C,aAAah0C,QAC5BkvD,EAAmBr+D,KAAKg8D,qBAAoB,EAAOj0C,OAEhD,CACH,GAAIwpC,GAAQ/sD,KAAKk2D,MAAO16D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrEoN,EAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5B8pD,EAAoB/3D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAC7C28C,EAAex8D,KAAKoqB,GAAG6xC,iBAAiBl0C,EAAKwpC,GAC7CkL,GAAiBF,EAAoBC,GAAgBD,CAEzD8B,MACAA,EAAiB7rD,GAAK,EAAIiqD,GAAiBz8D,KAAKmqB,KAAK3X,EAAIiqD,EAAgBz8D,KAAKoqB,GAAG5X,EACjF6rD,EAAiB5rD,GAAK,EAAIgqD,GAAiBz8D,KAAKmqB,KAAK1X,EAAIgqD,EAAgBz8D,KAAKoqB,GAAG3X,EAGnF,MAAO4rD,IAGTx+D,EAAOD,QAAUwD,GAIb,SAASvD,EAAQD,EAASM,GAQ9B,QAASmD,KACPrD,KAAKwX,QACLxX,KAAKs+D,aAAe,EACpBt+D,KAAKu+D,eACLv+D,KAAKw+D,WAAa,EAClBx+D,KAAK+jD,kBAAmB,EAXf7jD,EAAoB,EAkB/BmD,GAAOo7D,UACJ3xD,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 3c993ef8..f8759b40 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -24,16 +24,16 @@ */ "use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);else for(var s in t)t.hasOwnProperty(s)&&e.hasOwnProperty(s)&&(i[e[s]]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var S=this.yLabel;S.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(S,o.x,o.y));var D=this.zLabel;D.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(D,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/D/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
    x:"+t.point.x+"
    y:"+t.point.y+"
    z:"+t.point.z+"
    ",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index] -},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.dom.center)?m="background":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)&&(m="current-time"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT -}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer) -},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.clientY:t.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start() -},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(59),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t]) -},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id"; -if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=M.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=M.DELIMITER);var i=E+n();if(C[i])return N=M.DELIMITER,k=i,o(),void o();if(C[E])return N=M.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=M.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=M.IDENTIFIER)}for(N=M.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==M.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=M.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=M.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==M.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=M.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=M.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=M.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),S(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=M.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Ie.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Ce.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return b(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){Si[t]||(d(e),Si[t]=!0)}function p(t,e){return function(i){return w(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function m(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Mi===!1&&(Mi=!0,Ce.updateOffset(this),Mi=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null; -if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Si={},Di=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Mi=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=D(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Di.length-1;Oe>=0;--Oe)I(Di[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:M(1,"add"),subtract:M(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Se(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Se(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&De(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Me(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d -},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); +},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)?m="current-time":o.hasParent(u,this.dom.center)&&(m="background"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},s.prototype.getEventProperties=function(t){var e=t.gesture?t.gesture.center.pageX:t.pageX,i=t.gesture?t.gesture.center.pageY:t.pageY,s=e-o.getAbsoluteLeft(this.dom.centerContainer),n=i-o.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(s),a=o.getTarget(t),h=null;o.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&o.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":o.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":o.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":o.hasParent(a,this.customTime.bar)?h="custom-time":o.hasParent(a,this.currentTime.bar)?h="current-time":o.hasParent(a,this.dom.center)&&(h="background");var d=[],l=this.linegraph.yAxisLeft,c=this.linegraph.yAxisRight;return l.hidden||d.push(l.screenToValue(n)),c.hidden||d.push(c.screenToValue(n)),{event:t,what:h,pageX:e,pageY:i,x:s,y:n,time:r,value:d}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start +})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg) +},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.clientY:t.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1; +var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes(); +for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy +},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=M.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=M.DELIMITER);var i=E+n();if(C[i])return N=M.DELIMITER,k=i,o(),void o();if(C[E])return N=M.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=M.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=M.IDENTIFIER)}for(N=M.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==M.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=M.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=M.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==M.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=M.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=M.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=M.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),S(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=M.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Mi===!1&&(Mi=!0,Ce.updateOffset(this),Mi=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Si={},Di=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Mi=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=D(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Di.length-1;Oe>=0;--Oe)I(Di[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:M(1,"add"),subtract:M(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Se(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Se(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&De(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Me(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t) +}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/docs/graph2d.html b/docs/graph2d.html index 05b741a1..9f895282 100644 --- a/docs/graph2d.html +++ b/docs/graph2d.html @@ -834,6 +834,24 @@ Graph2d.clear({options: true}); // clear options only + + getEventProperties(event) + Object + + Returns an Object with relevant properties from an event: +
      +
    • pageX (Number): absolute horizontal position of the click event.
    • +
    • pageY (Number): absolute vertical position of the click event.
    • +
    • x (Number): relative horizontal position of the click event.
    • +
    • y (Number): relative vertical position of the click event.
    • +
    • time (Date): Date of the clicked event.
    • +
    • value (Number[]): The data value of the click event. The array contains one value when there is one data axis visible, and two values when there are two visible data axes.
    • +
    • what (String | null): name of the clicked thing: background, axis, dat-axis, custom-time, or current-time, legend.
    • +
    • event (Object): the original click event.
    • +
    + + + getLegend(groupId, iconWidth, iconHeight) SVGelement, String, String diff --git a/lib/timeline/Graph2d.js b/lib/timeline/Graph2d.js index 07fe656d..3f8fd7cf 100644 --- a/lib/timeline/Graph2d.js +++ b/lib/timeline/Graph2d.js @@ -90,6 +90,16 @@ function Graph2d (container, items, groups, options) { this.itemsData = null; // DataSet this.groupsData = null; // DataSet + this.on('tap', function (event) { + me.emit('click', me.getEventProperties(event)) + }); + this.on('doubletap', function (event) { + me.emit('doubleClick', me.getEventProperties(event)) + }); + this.dom.root.oncontextmenu = function (event) { + me.emit('contextmenu', me.getEventProperties(event)) + }; + // apply options if (options) { this.setOptions(options); @@ -191,7 +201,7 @@ Graph2d.prototype.getLegend = function(groupId, width, height) { else { return "cannot find group:" + groupId; } -} +}; /** * This checks if the visible option of the supplied group (by ID) is true or false. @@ -205,7 +215,7 @@ Graph2d.prototype.isGroupVisible = function(groupId) { else { return false; } -} +}; /** @@ -239,5 +249,52 @@ Graph2d.prototype.getItemRange = function() { }; +/** + * Generate Timeline related information from an event + * @param {Event} event + * @return {Object} An object with related information, like on which area + * The event happened, whether clicked on an item, etc. + */ +Graph2d.prototype.getEventProperties = function (event) { + var pageX = event.gesture ? event.gesture.center.pageX : event.pageX; + var pageY = event.gesture ? event.gesture.center.pageY : event.pageY; + var x = pageX - util.getAbsoluteLeft(this.dom.centerContainer); + var y = pageY - util.getAbsoluteTop(this.dom.centerContainer); + var time = this._toTime(x); + + var element = util.getTarget(event); + var what = null; + if (util.hasParent(element, this.timeAxis.dom.foreground)) {what = 'axis';} + else if (this.timeAxis2 && util.hasParent(element, this.timeAxis2.dom.foreground)) {what = 'axis';} + else if (util.hasParent(element, this.linegraph.yAxisLeft.dom.frame)) {what = 'data-axis';} + else if (util.hasParent(element, this.linegraph.yAxisRight.dom.frame)) {what = 'data-axis';} + else if (util.hasParent(element, this.linegraph.legendLeft.dom.frame)) {what = 'legend';} + else if (util.hasParent(element, this.linegraph.legendRight.dom.frame)) {what = 'legend';} + else if (util.hasParent(element, this.customTime.bar)) {what = 'custom-time';} // TODO: fix for multiple custom time bars + else if (util.hasParent(element, this.currentTime.bar)) {what = 'current-time';} + else if (util.hasParent(element, this.dom.center)) {what = 'background';} + + var value = []; + var yAxisLeft = this.linegraph.yAxisLeft; + var yAxisRight = this.linegraph.yAxisRight; + if (!yAxisLeft.hidden) { + value.push(yAxisLeft.screenToValue(y)); + } + if (!yAxisRight.hidden) { + value.push(yAxisRight.screenToValue(y)); + } + + return { + event: event, + what: what, + pageX: pageX, + pageY: pageY, + x: x, + y: y, + time: time, + value: value + } +}; + module.exports = Graph2d; diff --git a/lib/timeline/Timeline.js b/lib/timeline/Timeline.js index 9c177c75..e8380d39 100644 --- a/lib/timeline/Timeline.js +++ b/lib/timeline/Timeline.js @@ -359,12 +359,12 @@ Timeline.prototype.getEventProperties = function (event) { var element = util.getTarget(event); var what = null; if (item != null) {what = 'item';} - else if (util.hasParent(element, this.dom.center)) {what = 'background';} else if (util.hasParent(element, this.timeAxis.dom.foreground)) {what = 'axis';} else if (this.timeAxis2 && util.hasParent(element, this.timeAxis2.dom.foreground)) {what = 'axis';} else if (util.hasParent(element, this.itemSet.dom.labelSet)) {what = 'group-label';} - else if (util.hasParent(element, this.customTime.bar)) {what = 'custom-time';} + else if (util.hasParent(element, this.customTime.bar)) {what = 'custom-time';} // TODO: fix for multiple custom time bars else if (util.hasParent(element, this.currentTime.bar)) {what = 'current-time';} + else if (util.hasParent(element, this.dom.center)) {what = 'background';} return { event: event, diff --git a/lib/timeline/component/DataAxis.js b/lib/timeline/component/DataAxis.js index 0af46490..288e3180 100644 --- a/lib/timeline/component/DataAxis.js +++ b/lib/timeline/component/DataAxis.js @@ -484,6 +484,10 @@ DataAxis.prototype.convertValue = function (value) { return convertedValue; }; +DataAxis.prototype.screenToValue = function (x) { + return this.valueAtZero - (x / this.conversionFactor); +}; + /** * Create a label for the axis at position x * @private From 76f30e74e4d621a1d1154cb116efe7d43e426461 Mon Sep 17 00:00:00 2001 From: jos Date: Thu, 5 Mar 2015 15:04:42 +0100 Subject: [PATCH 21/43] Updated docs --- docs/graph2d.html | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/graph2d.html b/docs/graph2d.html index 9f895282..68aad11c 100644 --- a/docs/graph2d.html +++ b/docs/graph2d.html @@ -813,6 +813,29 @@ Graph2d.clear({options: true}); // clear options only + + click + Fired when clicked inside the Graph2d. + + + Passes a properties object as returned by the method Graph2d.getEventProperties(event). + + + + + contextmenu + Fired when right-clicked inside the Graph2d. Note that in order to prevent the context menu from showing up, default behavior of the event must be stopped: +
    graph2d.on('contextmenu', function (props) {
    +  alert('Right click!');
    +  props.event.preventDefault();
    +});
    +
    + + + Passes a properties object as returned by the method Graph2d.getEventProperties(event). + + + destroy() none @@ -820,6 +843,15 @@ Graph2d.clear({options: true}); // clear options only + + doubleClick + Fired when double clicked inside the Graph2d. + + + Passes a properties object as returned by the method Graph2d.getEventProperties(event). + + + getCurrentTime() Date From 77e7cc420bd6e25890532817bcfb257133ab3ff5 Mon Sep 17 00:00:00 2001 From: jos Date: Thu, 5 Mar 2015 15:10:28 +0100 Subject: [PATCH 22/43] Released version 3.11.0 --- HISTORY.md | 2 +- bower.json | 2 +- dist/vis.js | 63 +++++++++++++++++++++++++------------------------ dist/vis.map | 2 +- dist/vis.min.js | 6 ++--- package.json | 2 +- 6 files changed, 39 insertions(+), 38 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 525c7a89..ffe0444e 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -2,7 +2,7 @@ http://visjs.org -## not yet released, version 3.11.0-SNAPSHOT +## 2015-03-05, version 3.11.0 ### Network diff --git a/bower.json b/bower.json index c65da124..588d3f2c 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "vis", - "version": "3.10.1-SNAPSHOT", + "version": "3.11.0", "main": ["dist/vis.min.js", "dist/vis.min.css"], "description": "A dynamic, browser-based visualization library.", "homepage": "http://visjs.org/", diff --git a/dist/vis.js b/dist/vis.js index 3d95cfba..b42c66a1 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -4,7 +4,7 @@ * * A dynamic, browser-based visualization library. * - * @version 3.10.1-SNAPSHOT + * @version 3.11.0 * @date 2015-03-05 * * @license @@ -38,41 +38,41 @@ return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; -/******/ + /******/ // The require function /******/ function __webpack_require__(moduleId) { -/******/ + /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; -/******/ + /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; -/******/ + /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ + /******/ // Flag the module as loaded /******/ module.loaded = true; -/******/ + /******/ // Return the exports of the module /******/ return module.exports; /******/ } -/******/ -/******/ + + /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; -/******/ + /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; -/******/ + /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; -/******/ + /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) @@ -28334,7 +28334,7 @@ return /******/ (function(modules) { // webpackBootstrap makeGlobal(); } }).call(this); - + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) /***/ }, @@ -30509,9 +30509,9 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(68); - var HierarchialRepulsionMixin = __webpack_require__(69); - var BarnesHutMixin = __webpack_require__(70); + var RepulsionMixin = __webpack_require__(67); + var HierarchialRepulsionMixin = __webpack_require__(68); + var BarnesHutMixin = __webpack_require__(69); /** * Toggling barnes Hut calculation on and off. @@ -34951,19 +34951,6 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 67 */ -/***/ function(module, exports, __webpack_require__) { - - function webpackContext(req) { - throw new Error("Cannot find module '" + req + "'."); - } - webpackContext.keys = function() { return []; }; - webpackContext.resolve = webpackContext; - module.exports = webpackContext; - webpackContext.id = 67; - - -/***/ }, -/* 68 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35033,7 +35020,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 69 */ +/* 68 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35192,7 +35179,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 70 */ +/* 69 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35596,6 +35583,19 @@ return /******/ (function(modules) { // webpackBootstrap }; +/***/ }, +/* 70 */ +/***/ function(module, exports, __webpack_require__) { + + function webpackContext(req) { + throw new Error("Cannot find module '" + req + "'."); + } + webpackContext.keys = function() { return []; }; + webpackContext.resolve = webpackContext; + module.exports = webpackContext; + webpackContext.id = 70; + + /***/ }, /* 71 */ /***/ function(module, exports, __webpack_require__) { @@ -35615,3 +35615,4 @@ return /******/ (function(modules) { // webpackBootstrap /***/ } /******/ ]) }); +; \ No newline at end of file diff --git a/dist/vis.map b/dist/vis.map index 8932959c..f19a12ab 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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AQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackContext","req","resolve","webpackPolyfill","paths"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyBA,cAEA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,OAAOH,GACmB,gBAAZC,SACdA,QAAa,IAAID,IAEjBD,EAAU,IAAIC,KACbK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GAG9BN,EAAQe,KAAOT,EAAoB,GACnCN,EAAQgB,QAAUV,EAAoB,GAGtCN,EAAQiB,QAAUX,EAAoB,GACtCN,EAAQkB,SAAWZ,EAAoB,GACvCN,EAAQmB,MAAQb,EAAoB,GAGpCN,EAAQoB,QAAUd,EAAoB,GACtCN,EAAQqB,SACNC,OAAQhB,EAAoB,GAC5BiB,OAAQjB,EAAoB,GAC5BkB,QAASlB,EAAoB,GAC7BmB,QAASnB,EAAoB,IAC7BoB,OAAQpB,EAAoB,IAC5BqB,WAAYrB,EAAoB,KAIlCN,EAAQ4B,SAAWtB,EAAoB,IACvCN,EAAQ6B,QAAUvB,EAAoB,IACtCN,EAAQ8B,UACNC,SAAUzB,EAAoB,IAC9B0B,SAAU1B,EAAoB,IAC9B2B,MAAO3B,EAAoB,IAC3B4B,MAAO5B,EAAoB,IAC3B6B,SAAU7B,EAAoB,IAE9B8B,YACEC,OACEC,KAAMhC,EAAoB,IAC1BiC,eAAgBjC,EAAoB,IACpCkC,QAASlC,EAAoB,IAC7BmC,UAAWnC,EAAoB,IAC/BoC,UAAWpC,EAAoB,KAGjCqC,UAAWrC,EAAoB,IAC/BsC,YAAatC,EAAoB,IACjCuC,WAAYvC,EAAoB,IAChCwC,SAAUxC,EAAoB,IAC9ByC,WAAYzC,EAAoB,IAChC0C,MAAO1C,EAAoB,IAC3B2C,gBAAiB3C,EAAoB,IACrC4C,QAAS5C,EAAoB,IAC7B6C,OAAQ7C,EAAoB,IAC5B8C,UAAW9C,EAAoB,IAC/B+C,SAAU/C,EAAoB,MAKlCN,EAAQsD,QAAUhD,EAAoB,IACtCN,EAAQuD,SACNC,KAAMlD,EAAoB,IAC1BmD,OAAQnD,EAAoB,IAC5BoD,OAAQpD,EAAoB,IAC5BqD,KAAMrD,EAAoB,IAC1BsD,MAAOtD,EAAoB,IAC3BuD,UAAWvD,EAAoB,IAC/BwD,YAAaxD,EAAoB,KAInCN,EAAQ+D,MAAQ,WACd,KAAM,IAAIC,OAAM,+EAIlBhE,EAAQiE,OAAS3D,EAAoB,IACrCN,EAAQkE,OAAS5D,EAAoB,KAKjC,SAASL,EAAQD,EAASM,GAM9B,GAAI2D,GAAS3D,EAAoB,GAOjCN,GAAQmE,SAAW,SAASC,GAC1B,MAAQA,aAAkBC,SAA2B,gBAAVD,IAa7CpE,EAAQsE,UAAY,SAASC,EAAIC,EAAIC,EAAMC,GACzC,GAAIF,GAAOD,EACT,MAAO,EAGP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAGE,EAAQH,GAAKI,IASpC3E,EAAQ6E,SAAW,SAAST,GAC1B,MAAQA,aAAkBU,SAA2B,gBAAVV,IAQ7CpE,EAAQ+E,OAAS,SAASX,GACxB,GAAIA,YAAkBY,MACpB,OAAO,CAEJ,IAAIhF,EAAQ6E,SAAST,GAAS,CAEjC,GAAIa,GAAQC,EAAaC,KAAKf,EAC9B,IAAIa,EACF,OAAO,CAEJ,KAAKG,MAAMJ,KAAKK,MAAMjB,IACzB,OAAO,EAIX,OAAO,GAQTpE,EAAQsF,YAAc,SAASlB,GAC7B,MAA4B,mBAAb,SACVmB,OAAoB,eACpBA,OAAOC,cAAuB,WAC9BpB,YAAkBmB,QAAOC,cAAcC,WAQ9CzF,EAAQ0F,WAAa,WACnB,GAAIC,GAAK,WACP,MAAOf,MAAKgB,MACQ,MAAhBhB,KAAKiB,UACPC,SAAS,IAGb,OACIH,KAAOA,IAAO,IACVA,IAAO,IACPA,IAAO,IACPA,IAAO,IACPA,IAAOA,IAAOA,KAWxB3F,EAAQ+F,OAAS,SAAUC,GACzB,IAAK,GAAIC,GAAI,EAAGC,EAAMC,UAAUC,OAAYF,EAAJD,EAASA,IAAK,CACpD,GAAII,GAAQF,UAAUF,EACtB,KAAK,GAAIK,KAAQD,GACXA,EAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAKtB,MAAON,IAWThG,EAAQwG,gBAAkB,SAAUC,EAAOT,GACzC,IAAKU,MAAMC,QAAQF,GACjB,KAAM,IAAIzC,OAAM,uDAGlB,KAAK,GAAIiC,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAGpC,IAAK,GAFDI,GAAQF,UAAUF,GAEbnF,EAAI,EAAGA,EAAI2F,EAAML,OAAQtF,IAAK,CACrC,GAAIwF,GAAOG,EAAM3F,EACbuF,GAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAItB,MAAON,IAWThG,EAAQ4G,oBAAsB,SAAUH,EAAOT,EAAGa,GAEhD,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAEtB,KAAK,GAAIb,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAEpC,IAAK,GADDI,GAAQF,UAAUF,GACbnF,EAAI,EAAGA,EAAI2F,EAAML,OAAQtF,IAAK,CACrC,GAAIwF,GAAOG,EAAM3F,EACjB,IAAIuF,EAAME,eAAeD,GACvB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,IAMpB,MAAON,IAWThG,EAAQmH,uBAAyB,SAAUV,EAAOT,EAAGa,GAEnD,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAEtB,KAAK,GAAIR,KAAQO,GACf,GAAIA,EAAEN,eAAeD,IACQ,IAAvBG,EAAMW,QAAQd,GAChB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAKpB,MAAON,IASThG,EAAQkH,WAAa,SAASlB,EAAGa,GAE/B,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAGtB,KAAK,GAAIR,KAAQO,GACf,GAAIA,EAAEN,eAAeD,GACnB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAIlB,MAAON,IAUThG,EAAQqH,WAAa,SAAUrB,EAAGa,GAChC,GAAIb,EAAEI,QAAUS,EAAET,OAAQ,OAAO,CAEjC,KAAK,GAAIH,GAAI,EAAGC,EAAMF,EAAEI,OAAYF,EAAJD,EAASA,IACvC,GAAID,EAAEC,IAAMY,EAAEZ,GAAI,OAAO,CAG3B,QAAO,GAYTjG,EAAQsH,QAAU,SAASlD,EAAQmD,GACjC,GAAItC,EAEJ,IAAegC,SAAX7C,EACF,MAAO6C,OAET,IAAe,OAAX7C,EACF,MAAO,KAGT,KAAKmD,EACH,MAAOnD,EAET,IAAsB,gBAATmD,MAAwBA,YAAgBzC,SACnD,KAAM,IAAId,OAAM,wBAIlB,QAAQuD,GACN,IAAK,UACL,IAAK,UACH,MAAOC,SAAQpD,EAEjB,KAAK,SACL,IAAK,SACH,MAAOC,QAAOD,EAAOqD,UAEvB,KAAK,SACL,IAAK,SACH,MAAO3C,QAAOV,EAEhB,KAAK,OACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,IAAIY,MAAKZ,EAElB,IAAIA,YAAkBY,MACpB,MAAO,IAAIA,MAAKZ,EAAOqD,UAEpB,IAAIxD,EAAOyD,SAAStD,GACvB,MAAO,IAAIY,MAAKZ,EAAOqD,UAEzB,IAAIzH,EAAQ6E,SAAST,GAEnB,MADAa,GAAQC,EAAaC,KAAKf,GACtBa,EAEK,GAAID,MAAKX,OAAOY,EAAM,KAGtBhB,EAAOG,GAAQuD,QAIxB,MAAM,IAAI3D,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,gBAGZ,KAAK,SACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAOH,GAAOG,EAEhB,IAAIA,YAAkBY,MACpB,MAAOf,GAAOG,EAAOqD,UAElB,IAAIxD,EAAOyD,SAAStD,GACvB,MAAOH,GAAOG,EAEhB,IAAIpE,EAAQ6E,SAAST,GAEnB,MADAa,GAAQC,EAAaC,KAAKf,GAGjBH,EAFLgB,EAEYZ,OAAOY,EAAM,IAGbb,EAIhB,MAAM,IAAIJ,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,gBAGZ,KAAK,UACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,IAAIY,MAAKZ,EAEb,IAAIA,YAAkBY,MACzB,MAAOZ,GAAOyD,aAEX,IAAI5D,EAAOyD,SAAStD,GACvB,MAAOA,GAAOuD,SAASE,aAEpB,IAAI7H,EAAQ6E,SAAST,GAExB,MADAa,GAAQC,EAAaC,KAAKf,GACtBa,EAEK,GAAID,MAAKX,OAAOY,EAAM,KAAK4C,cAG3B,GAAI7C,MAAKZ,GAAQyD,aAI1B,MAAM,IAAI7D,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,mBAGZ,KAAK,UACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,SAAWA,EAAS,IAExB,IAAIA,YAAkBY,MACzB,MAAO,SAAWZ,EAAOqD,UAAY,IAElC,IAAIzH,EAAQ6E,SAAST,GAAS,CACjCa,EAAQC,EAAaC,KAAKf,EAC1B,IAAIM,EAQJ,OALEA,GAFEO,EAEM,GAAID,MAAKX,OAAOY,EAAM,KAAKwC,UAG3B,GAAIzC,MAAKZ,GAAQqD,UAEpB,SAAW/C,EAAQ,KAG1B,KAAM,IAAIV,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,mBAGZ,SACE,KAAM,IAAIJ,OAAM,iBAAmBuD,EAAO,MAOhD,IAAIrC,GAAe,qBAOnBlF,GAAQ4H,QAAU,SAASxD,GACzB,GAAImD,SAAcnD,EAElB,OAAY,UAARmD,EACY,MAAVnD,EACK,OAELA,YAAkBoD,SACb,UAELpD,YAAkBC,QACb,SAELD,YAAkBU,QACb,SAEL4B,MAAMC,QAAQvC,GACT,QAELA,YAAkBY,MACb,OAEF,SAEQ,UAARuC,EACA,SAEQ,WAARA,EACA,UAEQ,UAARA,EACA,SAGFA,GASTvH,EAAQ8H,gBAAkB,SAASC,GACjC,MAAOA,GAAKC,wBAAwBC,KAAOC,OAAOC,aASpDnI,EAAQoI,eAAiB,SAASL,GAChC,MAAOA,GAAKC,wBAAwBK,IAAMH,OAAOI,aAQnDtI,EAAQuI,aAAe,SAASR,EAAMS,GACpC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,IACD,KAA9BD,EAAQrB,QAAQoB,KAClBC,EAAQE,KAAKH,GACbT,EAAKS,UAAYC,EAAQG,KAAK,OASlC5I,EAAQ6I,gBAAkB,SAASd,EAAMS,GACvC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,KAC/BI,EAAQL,EAAQrB,QAAQoB,EACf,KAATM,IACFL,EAAQM,OAAOD,EAAO,GACtBf,EAAKS,UAAYC,EAAQG,KAAK,OAalC5I,EAAQgJ,QAAU,SAAS5E,EAAQ6E,GACjC,GAAIhD,GACAC,CACJ,IAAIQ,MAAMC,QAAQvC,GAEhB,IAAK6B,EAAI,EAAGC,EAAM9B,EAAOgC,OAAYF,EAAJD,EAASA,IACxCgD,EAAS7E,EAAO6B,GAAIA,EAAG7B,OAKzB,KAAK6B,IAAK7B,GACJA,EAAOmC,eAAeN,IACxBgD,EAAS7E,EAAO6B,GAAIA,EAAG7B,IAY/BpE,EAAQkJ,QAAU,SAAS9E,GACzB,GAAI+E,KAEJ,KAAK,GAAI7C,KAAQlC,GACXA,EAAOmC,eAAeD,IAAO6C,EAAMR,KAAKvE,EAAOkC,GAGrD,OAAO6C,IAUTnJ,EAAQoJ,eAAiB,SAAShF,EAAQiF,EAAK3E,GAC7C,MAAIN,GAAOiF,KAAS3E,GAClBN,EAAOiF,GAAO3E,GACP,IAGA,GAYX1E,EAAQsJ,iBAAmB,SAASC,EAASC,EAAQC,EAAUC,GACzDH,EAAQD,kBACSrC,SAAfyC,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUxC,QAAQ,YAAc,IACvEoC,EAAS,kBAGXD,EAAQD,iBAAiBE,EAAQC,EAAUC,IAE3CH,EAAQM,YAAY,KAAOL,EAAQC,IAWvCzJ,EAAQ8J,oBAAsB,SAASP,EAASC,EAAQC,EAAUC,GAC5DH,EAAQO,qBAES7C,SAAfyC,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUxC,QAAQ,YAAc,IACvEoC,EAAS,kBAGXD,EAAQO,oBAAoBN,EAAQC,EAAUC,IAG9CH,EAAQQ,YAAY,KAAOP,EAAQC,IAOvCzJ,EAAQgK,eAAiB,SAAUC,GAC5BA,IACHA,EAAQ/B,OAAO+B,OAEbA,EAAMD,eACRC,EAAMD,iBAGNC,EAAMC,aAAc,GASxBlK,EAAQmK,UAAY,SAASF,GAEtBA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAIG,EAcJ,OAZIH,GAAMG,OACRA,EAASH,EAAMG,OAERH,EAAMI,aACbD,EAASH,EAAMI,YAGMpD,QAAnBmD,EAAOE,UAA4C,GAAnBF,EAAOE,WAEzCF,EAASA,EAAOG,YAGXH,GAQTpK,EAAQwK,UAAY,SAAUjB,EAASkB,GAGrC,IAFA,GAAIC,GAAInB,EAEDmB,GAAG,CACR,GAAIA,IAAMD,EACR,OAAO,CAETC,GAAIA,EAAEH,WAGR,OAAO,GAGTvK,EAAQ2K,UAQR3K,EAAQ2K,OAAOC,UAAY,SAAUlG,EAAOmG,GAK1C,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACe,GAATA,EAGHmG,GAAgB,MASzB7K,EAAQ2K,OAAOG,SAAW,SAAUpG,EAAOmG,GAKzC,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACKL,OAAOK,IAAUmG,GAAgB,KAGnCA,GAAgB,MASzB7K,EAAQ2K,OAAOI,SAAW,SAAUrG,EAAOmG,GAKzC,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACKI,OAAOJ,GAGTmG,GAAgB,MASzB7K,EAAQ2K,OAAOK,OAAS,SAAUtG,EAAOmG,GAKvC,MAJoB,kBAATnG,KACTA,EAAQA,KAGN1E,EAAQ6E,SAASH,GACZA,EAEA1E,EAAQmE,SAASO,GACjBA,EAAQ,KAGRmG,GAAgB,MAU3B7K,EAAQ2K,OAAOM,UAAY,SAAUvG,EAAOmG,GAK1C,MAJoB,kBAATnG,KACTA,EAAQA,KAGHA,GAASmG,GAAgB,MASlC7K,EAAQkL,SAAW,SAASC,GAE1B,GAAIC,GAAiB,kCACrBD,GAAMA,EAAIE,QAAQD,EAAgB,SAASxK,EAAG0K,EAAGC,EAAG1E,GAChD,MAAOyE,GAAIA,EAAIC,EAAIA,EAAI1E,EAAIA,GAE/B,IAAI2E,GAAS,4CAA4CrG,KAAKgG,EAC9D,OAAOK,IACHF,EAAGG,SAASD,EAAO,GAAI,IACvBD,EAAGE,SAASD,EAAO,GAAI,IACvB3E,EAAG4E,SAASD,EAAO,GAAI,KACvB,MASNxL,EAAQ0L,gBAAkB,SAASC,EAAMC,GACvC,GAA4B,IAAxBD,EAAMvE,QAAQ,OAAc,CAC9B,GAAIyE,GAAMF,EAAMG,OAAOH,EAAMvE,QAAQ,KAAK,GAAGiE,QAAQ,IAAI,IAAI3C,MAAM,IACnE,OAAO,QAAUmD,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMD,EAAU,IAGxE,GAAIC,GAAM7L,EAAQkL,SAASS,EAC3B,OAAW,OAAPE,EACKF,EAGA,QAAUE,EAAIP,EAAI,IAAMO,EAAIN,EAAI,IAAMM,EAAIhF,EAAI,IAAM+E,EAAU,KAa3E5L,EAAQ+L,SAAW,SAASC,EAAIC,EAAMC,GACpC,MAAO,MAAQ,GAAK,KAAOF,GAAO,KAAOC,GAAS,GAAKC,GAAMpG,SAAS,IAAIqG,MAAM,IASlFnM,EAAQoM,WAAa,SAAST,GAC5B,GAAI9K,EACJ,IAAIb,EAAQ6E,SAAS8G,GAAQ,CAC3B,GAAI3L,EAAQqM,WAAWV,GAAQ,CAC7B,GAAIE,GAAMF,EAAMG,OAAO,GAAGA,OAAO,EAAEH,EAAMvF,OAAO,GAAGsC,MAAM,IACzDiD,GAAQ3L,EAAQ+L,SAASF,EAAI,GAAGA,EAAI,GAAGA,EAAI,IAE7C,GAAI7L,EAAQsM,WAAWX,GAAQ,CAC7B,GAAIY,GAAMvM,EAAQwM,SAASb,GACvBc,GAAmBC,EAAEH,EAAIG,EAAEC,EAAU,IAARJ,EAAII,EAASC,EAAEhI,KAAKL,IAAI,EAAU,KAARgI,EAAIK,IAC3DC,GAAmBH,EAAEH,EAAIG,EAAEC,EAAE/H,KAAKL,IAAI,EAAU,KAARgI,EAAIK,GAAUA,EAAQ,GAANL,EAAIK,GAC5DE,EAAkB9M,EAAQ+M,SAASF,EAAeH,EAAGG,EAAeH,EAAGG,EAAeD,GACtFI,EAAkBhN,EAAQ+M,SAASN,EAAgBC,EAAED,EAAgBE,EAAEF,EAAgBG,EAE3F/L,IACEoM,WAAYtB,EACZuB,OAAOJ,EACPK,WACEF,WAAWD,EACXE,OAAOJ,GAETM,OACEH,WAAWD,EACXE,OAAOJ,QAKXjM,IACEoM,WAAWtB,EACXuB,OAAOvB,EACPwB,WACEF,WAAWtB,EACXuB,OAAOvB,GAETyB,OACEH,WAAWtB,EACXuB,OAAOvB,QAMb9K,MACAA,EAAEoM,WAAatB,EAAMsB,YAAc,QACnCpM,EAAEqM,OAASvB,EAAMuB,QAAUrM,EAAEoM,WAEzBjN,EAAQ6E,SAAS8G,EAAMwB,WACzBtM,EAAEsM,WACAD,OAAQvB,EAAMwB,UACdF,WAAYtB,EAAMwB,YAIpBtM,EAAEsM,aACFtM,EAAEsM,UAAUF,WAAatB,EAAMwB,WAAaxB,EAAMwB,UAAUF,YAAcpM,EAAEoM,WAC5EpM,EAAEsM,UAAUD,OAASvB,EAAMwB,WAAaxB,EAAMwB,UAAUD,QAAUrM,EAAEqM,QAGlElN,EAAQ6E,SAAS8G,EAAMyB,OACzBvM,EAAEuM,OACAF,OAAQvB,EAAMyB,MACdH,WAAYtB,EAAMyB,QAIpBvM,EAAEuM,SACFvM,EAAEuM,MAAMH,WAAatB,EAAMyB,OAASzB,EAAMyB,MAAMH,YAAcpM,EAAEoM,WAChEpM,EAAEuM,MAAMF,OAASvB,EAAMyB,OAASzB,EAAMyB,MAAMF,QAAUrM,EAAEqM,OAI5D,OAAOrM,IAYTb,EAAQqN,SAAW,SAASrB,EAAIC,EAAMC,GACpCF,GAAQ,IAAKC,GAAY,IAAKC,GAAU,GACxC,IAAIoB,GAAS1I,KAAKL,IAAIyH,EAAIpH,KAAKL,IAAI0H,EAAMC,IACrCqB,EAAS3I,KAAKJ,IAAIwH,EAAIpH,KAAKJ,IAAIyH,EAAMC,GAGzC,IAAIoB,GAAUC,EACZ,OAAQb,EAAE,EAAEC,EAAE,EAAEC,EAAEU,EAIpB,IAAIE,GAAKxB,GAAKsB,EAAUrB,EAAMC,EAASA,GAAMoB,EAAUtB,EAAIC,EAAQC,EAAKF,EACpEU,EAAKV,GAAKsB,EAAU,EAAMpB,GAAMoB,EAAU,EAAI,EAC9CG,EAAM,IAAIf,EAAIc,GAAGD,EAASD,IAAS,IACnCI,GAAcH,EAASD,GAAQC,EAC/B7I,EAAQ6I,CACZ,QAAQb,EAAEe,EAAId,EAAEe,EAAWd,EAAElI,GAG/B,IAAIiJ,IAEFjF,MAAO,SAAUkF,GACf,GAAIC,KAWJ,OATAD,GAAQlF,MAAM,KAAKM,QAAQ,SAAU8E,GACnC,GAAoB,IAAhBA,EAAMC,OAAc,CACtB,GAAIC,GAAQF,EAAMpF,MAAM,KACpBW,EAAM2E,EAAM,GAAGD,OACfrJ,EAAQsJ,EAAM,GAAGD,MACrBF,GAAOxE,GAAO3E,KAIXmJ,GAITjF,KAAM,SAAUiF,GACd,MAAO7G,QAAOiH,KAAKJ,GACdK,IAAI,SAAU7E,GACb,MAAOA,GAAM,KAAOwE,EAAOxE,KAE5BT,KAAK,OASd5I,GAAQmO,WAAa,SAAU5E,EAASqE,GACtC,GAAIQ,GAAgBT,EAAQjF,MAAMa,EAAQuE,MAAMF,SAC5CS,EAAYV,EAAQjF,MAAMkF,GAC1BC,EAAS7N,EAAQ+F,OAAOqI,EAAeC,EAE3C9E,GAAQuE,MAAMF,QAAUD,EAAQ/E,KAAKiF,IAQvC7N,EAAQsO,cAAgB,SAAU/E,EAASqE,GACzC,GAAIC,GAASF,EAAQjF,MAAMa,EAAQuE,MAAMF,SACrCW,EAAeZ,EAAQjF,MAAMkF,EAEjC,KAAK,GAAIvE,KAAOkF,GACVA,EAAahI,eAAe8C,UACvBwE,GAAOxE,EAIlBE,GAAQuE,MAAMF,QAAUD,EAAQ/E,KAAKiF,IAWvC7N,EAAQwO,SAAW,SAAS9B,EAAGC,EAAGC,GAChC,GAAItB,GAAGC,EAAG1E,EAENZ,EAAIrB,KAAKgB,MAAU,EAAJ8G,GACf+B,EAAQ,EAAJ/B,EAAQzG,EACZnF,EAAI8L,GAAK,EAAID,GACb+B,EAAI9B,GAAK,EAAI6B,EAAI9B,GACjBgC,EAAI/B,GAAK,GAAK,EAAI6B,GAAK9B,EAE3B,QAAQ1G,EAAI,GACV,IAAK,GAAGqF,EAAIsB,EAAGrB,EAAIoD,EAAG9H,EAAI/F,CAAG,MAC7B,KAAK,GAAGwK,EAAIoD,EAAGnD,EAAIqB,EAAG/F,EAAI/F,CAAG,MAC7B,KAAK,GAAGwK,EAAIxK,EAAGyK,EAAIqB,EAAG/F,EAAI8H,CAAG,MAC7B,KAAK,GAAGrD,EAAIxK,EAAGyK,EAAImD,EAAG7H,EAAI+F,CAAG,MAC7B,KAAK,GAAGtB,EAAIqD,EAAGpD,EAAIzK,EAAG+F,EAAI+F,CAAG,MAC7B,KAAK,GAAGtB,EAAIsB,EAAGrB,EAAIzK,EAAG+F,EAAI6H,EAG5B,OAAQpD,EAAE1G,KAAKgB,MAAU,IAAJ0F,GAAUC,EAAE3G,KAAKgB,MAAU,IAAJ2F,GAAU1E,EAAEjC,KAAKgB,MAAU,IAAJiB,KAGrE7G,EAAQ+M,SAAW,SAASL,EAAGC,EAAGC,GAChC,GAAIf,GAAM7L,EAAQwO,SAAS9B,EAAGC,EAAGC,EACjC,OAAO5M,GAAQ+L,SAASF,EAAIP,EAAGO,EAAIN,EAAGM,EAAIhF,IAG5C7G,EAAQwM,SAAW,SAASrB,GAC1B,GAAIU,GAAM7L,EAAQkL,SAASC,EAC3B,OAAOnL,GAAQqN,SAASxB,EAAIP,EAAGO,EAAIN,EAAGM,EAAIhF,IAG5C7G,EAAQsM,WAAa,SAASnB,GAC5B,GAAIyD,GAAO,qCAAqCC,KAAK1D,EACrD,OAAOyD,IAGT5O,EAAQqM,WAAa,SAASR,GAC5BA,EAAMA,EAAIR,QAAQ,IAAI,GACtB,IAAIuD,GAAO,wCAAwCC,KAAKhD,EACxD,OAAO+C,IAUT5O,EAAQ8O,sBAAwB,SAASC,EAAQC,GAC/C,GAA8B,gBAAnBA,GAA6B,CAEtC,IAAK,GADDC,GAAWjI,OAAOkI,OAAOF,GACpB/I,EAAI,EAAGA,EAAI8I,EAAO3I,OAAQH,IAC7B+I,EAAgBzI,eAAewI,EAAO9I,KACC,gBAA9B+I,GAAgBD,EAAO9I,MAChCgJ,EAASF,EAAO9I,IAAMjG,EAAQmP,aAAaH,EAAgBD,EAAO9I,KAIxE,OAAOgJ,GAGP,MAAO,OAWXjP,EAAQmP,aAAe,SAASH,GAC9B,GAA8B,gBAAnBA,GAA6B,CACtC,GAAIC,GAAWjI,OAAOkI,OAAOF,EAC7B,KAAK,GAAI/I,KAAK+I,GACRA,EAAgBzI,eAAeN,IACA,gBAAtB+I,GAAgB/I,KACzBgJ,EAAShJ,GAAKjG,EAAQmP,aAAaH,EAAgB/I,IAIzD,OAAOgJ,GAGP,MAAO,OAcXjP,EAAQoP,aAAe,SAAUC,EAAaC,EAAS3E,GACrD,GAAwB1D,SAApBqI,EAAQ3E,GACV,GAA8B,iBAAnB2E,GAAQ3E,GACjB0E,EAAY1E,GAAQ4E,QAAUD,EAAQ3E,OAEnC,CACH0E,EAAY1E,GAAQ4E,SAAU,CAC9B,KAAK,GAAIjJ,KAAQgJ,GAAQ3E,GACnB2E,EAAQ3E,GAAQpE,eAAeD,KACjC+I,EAAY1E,GAAQrE,GAAQgJ,EAAQ3E,GAAQrE,MAmBtDtG,EAAQwP,mBAAqB,SAASC,EAAcC,EAAgBC,EAAOC,GAMzE,IALA,GAAIC,GAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAarJ,OAAS,EAEnB4J,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAASrL,KAAKgB,OAAOmK,EAAMC,GAAQ,GAEnCE,EAAOT,EAAaQ,GACpBvL,EAAoBuC,SAAX2I,EAAwBM,EAAKP,GAASO,EAAKP,GAAOC,GAE3DO,EAAeT,EAAehL,EAClC,IAAoB,GAAhByL,EACF,MAAOF,EAEgB,KAAhBE,EACPJ,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGlBH,IAGF,MAAO,IAeT9P,EAAQoQ,kBAAoB,SAASX,EAAcrF,EAAQuF,EAAOU,GAOhE,IANA,GAIIC,GAAW5L,EAAO6L,EAAWN,EAJ7BJ,EAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAarJ,OAAS,EAGnB4J,GAAPD,GAA2BF,EAAZC,GAA2B,CAO/C,GALAG,EAASrL,KAAKgB,MAAM,IAAKoK,EAAKD,IAC9BO,EAAYb,EAAa7K,KAAKJ,IAAI,EAAEyL,EAAS,IAAIN,GACjDjL,EAAY+K,EAAaQ,GAAQN,GACjCY,EAAYd,EAAa7K,KAAKL,IAAIkL,EAAarJ,OAAO,EAAE6J,EAAS,IAAIN,GAEjEjL,GAAS0F,EACX,MAAO6F,EAEJ,IAAgB7F,EAAZkG,GAAsB5L,EAAQ0F,EACrC,MAAyB,UAAlBiG,EAA6BzL,KAAKJ,IAAI,EAAEyL,EAAS,GAAKA,CAE1D,IAAY7F,EAAR1F,GAAkB6L,EAAYnG,EACrC,MAAyB,UAAlBiG,EAA6BJ,EAASrL,KAAKL,IAAIkL,EAAarJ,OAAO,EAAE6J,EAAS,EAGzE7F,GAAR1F,EACFqL,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGpBH,IAIF,MAAO,IAYT9P,EAAQwQ,cAAgB,SAAU7B,EAAG8B,EAAOC,EAAKC,GAC/C,GAAIC,GAASF,EAAMD,CAEnB,OADA9B,IAAKgC,EAAS,EACN,EAAJhC,EAAciC,EAAO,EAAEjC,EAAEA,EAAI8B,GACjC9B,KACQiC,EAAO,GAAKjC,GAAGA,EAAE,GAAK,GAAK8B,IAUrCzQ,EAAQ6Q,iBAENC,OAAQ,SAAUnC,GAChB,MAAOA,IAGToC,WAAY,SAAUpC,GACpB,MAAOA,GAAIA,GAGbqC,YAAa,SAAUrC,GACrB,MAAOA,IAAK,EAAIA,IAGlB6B,cAAe,SAAU7B,GACvB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAI,IAAM,EAAI,EAAIA,GAAKA,GAGjDsC,YAAa,SAAUtC,GACrB,MAAOA,GAAIA,EAAIA,GAGjBuC,aAAc,SAAUvC,GACtB,QAAUA,EAAKA,EAAIA,EAAI,GAGzBwC,eAAgB,SAAUxC,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,GAGxEyC,YAAa,SAAUzC,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,GAGrB0C,aAAc,SAAU1C,GACtB,MAAO,MAAOA,EAAKA,EAAIA,EAAIA,GAG7B2C,eAAgB,SAAU3C,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,IAAOA,EAAKA,EAAIA,EAAIA,GAG9D4C,YAAa,SAAU5C,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAGzB6C,aAAc,SAAU7C,GACtB,MAAO,KAAOA,EAAKA,EAAIA,EAAIA,EAAIA,GAGjC8C,eAAgB,SAAU9C,GACxB,MAAW,GAAJA,EAAS,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,KAAQA,EAAKA,EAAIA,EAAIA,EAAIA,KAMtE,SAAS1O,EAAQD,GASrBA,EAAQ0R,gBAAkB,SAASC,GAEjC,IAAK,GAAIC,KAAeD,GAClBA,EAAcpL,eAAeqL,KAC/BD,EAAcC,GAAaC,UAAYF,EAAcC,GAAaE,KAClEH,EAAcC,GAAaE,UAYjC9R,EAAQ+R,gBAAkB,SAASJ,GAEjC,IAAK,GAAIC,KAAeD,GACtB,GAAIA,EAAcpL,eAAeqL,IAC3BD,EAAcC,GAAaC,UAAW,CACxC,IAAK,GAAI5L,GAAI,EAAGA,EAAI0L,EAAcC,GAAaC,UAAUzL,OAAQH,IAC/D0L,EAAcC,GAAaC,UAAU5L,GAAGsE,WAAWyH,YAAYL,EAAcC,GAAaC,UAAU5L,GAEtG0L,GAAcC,GAAaC,eAgBnC7R,EAAQiS,cAAgB,SAAUL,EAAaD,EAAeO,GAC5D,GAAI3I,EAqBJ,OAnBIoI,GAAcpL,eAAeqL,GAE3BD,EAAcC,GAAaC,UAAUzL,OAAS,GAChDmD,EAAUoI,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrC5I,EAAU6I,SAASC,gBAAgB,6BAA8BT,GACjEM,EAAaI,YAAY/I,KAK3BA,EAAU6I,SAASC,gBAAgB,6BAA8BT,GACjED,EAAcC,IAAgBE,QAAUD,cACxCK,EAAaI,YAAY/I,IAE3BoI,EAAcC,GAAaE,KAAKnJ,KAAKY,GAC9BA,GAcTvJ,EAAQuS,cAAgB,SAAUX,EAAaD,EAAea,EAAcC,GAC1E,GAAIlJ,EA+BJ,OA7BIoI,GAAcpL,eAAeqL,GAE3BD,EAAcC,GAAaC,UAAUzL,OAAS,GAChDmD,EAAUoI,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrC5I,EAAU6I,SAASM,cAAcd,GACZ3K,SAAjBwL,EACFD,EAAaC,aAAalJ,EAASkJ,GAGnCD,EAAaF,YAAY/I,KAM7BA,EAAU6I,SAASM,cAAcd,GACjCD,EAAcC,IAAgBE,QAAUD,cACnB5K,SAAjBwL,EACFD,EAAaC,aAAalJ,EAASkJ,GAGnCD,EAAaF,YAAY/I,IAG7BoI,EAAcC,GAAaE,KAAKnJ,KAAKY,GAC9BA,GAmBTvJ,EAAQ2S,UAAY,SAASC,EAAGC,EAAGC,EAAOnB,EAAeO,EAAca,GACrE,GAAIC,EACkC,WAAlCF,EAAMxD,QAAQ2D,WAAWnF,OAC3BkF,EAAQhT,EAAQiS,cAAc,SAASN,EAAcO,GACrDc,EAAME,eAAe,KAAM,KAAMN,GACjCI,EAAME,eAAe,KAAM,KAAML,GACjCG,EAAME,eAAe,KAAM,IAAK,GAAMJ,EAAMxD,QAAQ2D,WAAWE,QAG/DH,EAAQhT,EAAQiS,cAAc,OAAON,EAAcO,GACnDc,EAAME,eAAe,KAAM,IAAKN,EAAI,GAAIE,EAAMxD,QAAQ2D,WAAWE,MACjEH,EAAME,eAAe,KAAM,IAAKL,EAAI,GAAIC,EAAMxD,QAAQ2D,WAAWE,MACjEH,EAAME,eAAe,KAAM,QAASJ,EAAMxD,QAAQ2D,WAAWE,MAC7DH,EAAME,eAAe,KAAM,SAAUJ,EAAMxD,QAAQ2D,WAAWE,OAGzBlM,SAApC6L,EAAMxD,QAAQ2D,WAAWpF,QAC1BmF,EAAME,eAAe,KAAM,QAASJ,EAAMA,MAAMxD,QAAQ2D,WAAWpF,QAErEmF,EAAME,eAAe,KAAM,QAASJ,EAAMtK,UAAY,SAEtD,IAAI4K,GAAQpT,EAAQiS,cAAc,OAAON,EAAcO,EAqBvD,OApBIa,KACIA,EAASM,UACXT,GAAQG,EAASM,SAGfN,EAASO,UACXT,GAAQE,EAASO,SAEfP,EAASQ,UACXH,EAAMI,YAAcT,EAASQ,SAG3BR,EAASvK,WACX4K,EAAMF,eAAe,KAAM,QAASH,EAASvK,UAAa,WAKhE4K,EAAMF,eAAe,KAAM,IAAKN,GAChCQ,EAAMF,eAAe,KAAM,IAAKL,GACzBG,GAUThT,EAAQyT,QAAU,SAAUb,EAAGC,EAAGa,EAAOC,EAAQnL,EAAWmJ,EAAeO,GACzE,GAAc,GAAVyB,EAAa,CACF,EAATA,IACFA,GAAU,GACVd,GAAKc,EAEP,IAAIC,GAAO5T,EAAQiS,cAAc,OAAON,EAAeO,EACvD0B,GAAKV,eAAe,KAAM,IAAKN,EAAI,GAAMc,GACzCE,EAAKV,eAAe,KAAM,IAAKL,GAC/Be,EAAKV,eAAe,KAAM,QAASQ,GACnCE,EAAKV,eAAe,KAAM,SAAUS,GACpCC,EAAKV,eAAe,KAAM,QAAS1K,MAMnC,SAASvI,EAAQD,EAASM,GAgD9B,QAASW,GAAS4S,EAAMvE,GAetB,IAbIuE,GAASnN,MAAMC,QAAQkN,IAAU9S,EAAKuE,YAAYuO,KACpDvE,EAAUuE,EACVA,EAAO,MAGTzT,KAAK0T,SAAWxE,MAChBlP,KAAK2T,SACL3T,KAAKgG,OAAS,EACdhG,KAAK4T,SAAW5T,KAAK0T,SAASG,SAAW,KACzC7T,KAAK8T,SAID9T,KAAK0T,SAASvM,KAChB,IAAK,GAAIoI,KAASvP,MAAK0T,SAASvM,KAC9B,GAAInH,KAAK0T,SAASvM,KAAKhB,eAAeoJ,GAAQ,CAC5C,GAAIjL,GAAQtE,KAAK0T,SAASvM,KAAKoI,EAE7BvP,MAAK8T,MAAMvE,GADA,QAATjL,GAA4B,WAATA,GAA+B,WAATA,EACvB,OAGAA,EAO5B,GAAItE,KAAK0T,SAASxM,QAChB,KAAM,IAAItD,OAAM,sDAGlB5D,MAAK+T,gBAGDN,GACFzT,KAAKgU,IAAIP,GAGXzT,KAAKiU,WAAW/E,GAvFlB,GAAIvO,GAAOT,EAAoB,GAC3Ba,EAAQb,EAAoB,EAkGhCW,GAAQqT,UAAUD,WAAa,SAAS/E,GAClCA,GAA6BrI,SAAlBqI,EAAQiF,QACjBjF,EAAQiF,SAAU,EAEhBnU,KAAKoU,SACPpU,KAAKoU,OAAOC,gBACLrU,MAAKoU,SAKTpU,KAAKoU,SACRpU,KAAKoU,OAASrT,EAAM4E,OAAO3F,MACzBiL,SAAU,MAAO,SAAU,aAIF,gBAAlBiE,GAAQiF,OACjBnU,KAAKoU,OAAOH,WAAW/E,EAAQiF,UAevCtT,EAAQqT,UAAUI,GAAK,SAASzK,EAAOhB,GACrC,GAAI0L,GAAcvU,KAAK+T,aAAalK,EAC/B0K,KACHA,KACAvU,KAAK+T,aAAalK,GAAS0K,GAG7BA,EAAYhM,MACVM,SAAUA,KAKdhI,EAAQqT,UAAUM,UAAY3T,EAAQqT,UAAUI,GAOhDzT,EAAQqT,UAAUO,IAAM,SAAS5K,EAAOhB,GACtC,GAAI0L,GAAcvU,KAAK+T,aAAalK,EAChC0K,KACFvU,KAAK+T,aAAalK,GAAS0K,EAAYG,OAAO,SAAUrL,GACtD,MAAQA,GAASR,UAAYA,MAMnChI,EAAQqT,UAAUS,YAAc9T,EAAQqT,UAAUO,IASlD5T,EAAQqT,UAAUU,SAAW,SAAU/K,EAAOgL,EAAQC,GACpD,GAAa,KAATjL,EACF,KAAM,IAAIjG,OAAM,yBAGlB,IAAI2Q,KACA1K,KAAS7J,MAAK+T,eAChBQ,EAAcA,EAAYQ,OAAO/U,KAAK+T,aAAalK,KAEjD,KAAO7J,MAAK+T,eACdQ,EAAcA,EAAYQ,OAAO/U,KAAK+T,aAAa,MAGrD,KAAK,GAAIlO,GAAI,EAAGA,EAAI0O,EAAYvO,OAAQH,IAAK,CAC3C,GAAImP,GAAaT,EAAY1O,EACzBmP,GAAWnM,UACbmM,EAAWnM,SAASgB,EAAOgL,EAAQC,GAAY,QAYrDjU,EAAQqT,UAAUF,IAAM,SAAUP,EAAMqB,GACtC,GACIzU,GADA4U,KAEAC,EAAKlV,IAET,IAAIsG,MAAMC,QAAQkN,GAEhB,IAAK,GAAI5N,GAAI,EAAGC,EAAM2N,EAAKzN,OAAYF,EAAJD,EAASA,IAC1CxF,EAAK6U,EAAGC,SAAS1B,EAAK5N,IACtBoP,EAAS1M,KAAKlI,OAGb,IAAIM,EAAKuE,YAAYuO,GAGxB,IAAK,GADD2B,GAAUpV,KAAKqV,gBAAgB5B,GAC1B6B,EAAM,EAAGC,EAAO9B,EAAK+B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDxF,MACK2F,EAAM,EAAGC,EAAON,EAAQpP,OAAc0P,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB3F,GAAKP,GAASkE,EAAKkC,SAASL,EAAKG,GAGnCpV,EAAK6U,EAAGC,SAASrF,GACjBmF,EAAS1M,KAAKlI,OAGb,CAAA,KAAIoT,YAAgB7M,SAMvB,KAAM,IAAIhD,OAAM,mBAJhBvD,GAAK6U,EAAGC,SAAS1B,GACjBwB,EAAS1M,KAAKlI,GAUhB,MAJI4U,GAASjP,QACXhG,KAAK4U,SAAS,OAAQ3S,MAAOgT,GAAWH,GAGnCG,GASTpU,EAAQqT,UAAU0B,OAAS,SAAUnC,EAAMqB,GACzC,GAAIG,MACAY,KACAC,KACAZ,EAAKlV,KACL6T,EAAUqB,EAAGtB,SAEbmC,EAAc,SAAUjG,GAC1B,GAAIzP,GAAKyP,EAAK+D,EACVqB,GAAGvB,MAAMtT,IAEXA,EAAK6U,EAAGc,YAAYlG,GACpB+F,EAAWtN,KAAKlI,GAChByV,EAAYvN,KAAKuH,KAIjBzP,EAAK6U,EAAGC,SAASrF,GACjBmF,EAAS1M,KAAKlI,IAIlB,IAAIiG,MAAMC,QAAQkN,GAEhB,IAAK,GAAI5N,GAAI,EAAGC,EAAM2N,EAAKzN,OAAYF,EAAJD,EAASA,IAC1CkQ,EAAYtC,EAAK5N,QAGhB,IAAIlF,EAAKuE,YAAYuO,GAGxB,IAAK,GADD2B,GAAUpV,KAAKqV,gBAAgB5B,GAC1B6B,EAAM,EAAGC,EAAO9B,EAAK+B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDxF,MACK2F,EAAM,EAAGC,EAAON,EAAQpP,OAAc0P,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB3F,GAAKP,GAASkE,EAAKkC,SAASL,EAAKG,GAGnCM,EAAYjG,OAGX,CAAA,KAAI2D,YAAgB7M,SAKvB,KAAM,IAAIhD,OAAM,mBAHhBmS,GAAYtC,GAad,MAPIwB,GAASjP,QACXhG,KAAK4U,SAAS,OAAQ3S,MAAOgT,GAAWH,GAEtCe,EAAW7P,QACbhG,KAAK4U,SAAS,UAAW3S,MAAO4T,EAAYpC,KAAMqC,GAAchB,GAG3DG,EAASF,OAAOc,IAsCzBhV,EAAQqT,UAAU+B,IAAM,WACtB,GAGI5V,GAAI6V,EAAKhH,EAASuE,EAHlByB,EAAKlV,KAILmW,EAAYxV,EAAK6G,QAAQzB,UAAU,GACtB,WAAboQ,GAAsC,UAAbA,GAE3B9V,EAAK0F,UAAU,GACfmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,IAEG,SAAboQ,GAEPD,EAAMnQ,UAAU,GAChBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,KAIjBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,GAInB,IAAIqQ,EACJ,IAAIlH,GAAWA,EAAQkH,WAAY,CACjC,GAAIC,IAAiB,YAAa,QAAS,SAG3C,IAFAD,EAA0D,IAA7CC,EAAcrP,QAAQkI,EAAQkH,YAAoB,QAAUlH,EAAQkH,WAE7E3C,GAAS2C,GAAczV,EAAK6G,QAAQiM,GACtC,KAAM,IAAI7P,OAAM,6BAA+BjD,EAAK6G,QAAQiM,GAAQ,sDACVvE,EAAQ/H,KAAO,IAE3E,IAAkB,aAAdiP,IAA8BzV,EAAKuE,YAAYuO,GACjD,KAAM,IAAI7P,OAAM,6EAKlBwS,GADO3C,GAC6B,aAAtB9S,EAAK6G,QAAQiM,GAAwB,YAGtC,OAIf,IAEgB3D,GAAMwG,EAAQzQ,EAAGC,EAF7BqB,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChDuN,EAASxF,GAAWA,EAAQwF,OAC5BzS,IAGJ,IAAU4E,QAANxG,EAEFyP,EAAOoF,EAAGqB,SAASlW,EAAI8G,GACnBuN,IAAWA,EAAO5E,KACpBA,EAAO,UAGN,IAAWjJ,QAAPqP,EAEP,IAAKrQ,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCiK,EAAOoF,EAAGqB,SAASL,EAAIrQ,GAAIsB,KACtBuN,GAAUA,EAAO5E,KACpB7N,EAAMsG,KAAKuH,OAMf,KAAKwG,IAAUtW,MAAK2T,MACd3T,KAAK2T,MAAMxN,eAAemQ,KAC5BxG,EAAOoF,EAAGqB,SAASD,EAAQnP,KACtBuN,GAAUA,EAAO5E,KACpB7N,EAAMsG,KAAKuH,GAYnB,IALIZ,GAAWA,EAAQsH,OAAe3P,QAANxG,GAC9BL,KAAKyW,MAAMxU,EAAOiN,EAAQsH,OAIxBtH,GAAWA,EAAQP,OAAQ,CAC7B,GAAIA,GAASO,EAAQP,MACrB,IAAU9H,QAANxG,EACFyP,EAAO9P,KAAK0W,cAAc5G,EAAMnB,OAGhC,KAAK9I,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvC5D,EAAM4D,GAAK7F,KAAK0W,cAAczU,EAAM4D,GAAI8I,GAM9C,GAAkB,aAAdyH,EAA2B,CAC7B,GAAIhB,GAAUpV,KAAKqV,gBAAgB5B,EACnC,IAAU5M,QAANxG,EAEF6U,EAAGyB,WAAWlD,EAAM2B,EAAStF,OAI7B,KAAKjK,EAAI,EAAGA,EAAI5D,EAAM+D,OAAQH,IAC5BqP,EAAGyB,WAAWlD,EAAM2B,EAASnT,EAAM4D,GAGvC,OAAO4N,GAEJ,GAAkB,UAAd2C,EAAwB,CAC/B,GAAIhL,KACJ,KAAKvF,EAAI,EAAGA,EAAI5D,EAAM+D,OAAQH,IAC5BuF,EAAOnJ,EAAM4D,GAAGxF,IAAM4B,EAAM4D,EAE9B,OAAOuF,GAIP,GAAUvE,QAANxG,EAEF,MAAOyP,EAIP,IAAI2D,EAAM,CAER,IAAK5N,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvC4N,EAAKlL,KAAKtG,EAAM4D,GAElB,OAAO4N,GAIP,MAAOxR,IAcfpB,EAAQqT,UAAU0C,OAAS,SAAU1H,GACnC,GAIIrJ,GACAC,EACAzF,EACAyP,EACA7N,EARAwR,EAAOzT,KAAK2T,MACZe,EAASxF,GAAWA,EAAQwF,OAC5B8B,EAAQtH,GAAWA,EAAQsH,MAC3BrP,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAMhD+O,IAEJ,IAAIxB,EAEF,GAAI8B,EAAO,CAETvU,IACA,KAAK5B,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,GACrBuN,EAAO5E,IACT7N,EAAMsG,KAAKuH,GAOjB,KAFA9P,KAAKyW,MAAMxU,EAAOuU,GAEb3Q,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvCqQ,EAAIrQ,GAAK5D,EAAM4D,GAAG7F,KAAK4T,cAKzB,KAAKvT,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,GACrBuN,EAAO5E,IACToG,EAAI3N,KAAKuH,EAAK9P,KAAK4T,gBAQ3B,IAAI4C,EAAO,CAETvU,IACA,KAAK5B,IAAMoT,GACLA,EAAKtN,eAAe9F,IACtB4B,EAAMsG,KAAKkL,EAAKpT,GAMpB,KAFAL,KAAKyW,MAAMxU,EAAOuU,GAEb3Q,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvCqQ,EAAIrQ,GAAK5D,EAAM4D,GAAG7F,KAAK4T,cAKzB,KAAKvT,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO2D,EAAKpT,GACZ6V,EAAI3N,KAAKuH,EAAK9P,KAAK4T,WAM3B,OAAOsC,IAOTrV,EAAQqT,UAAU2C,WAAa,WAC7B,MAAO7W,OAaTa,EAAQqT,UAAUtL,QAAU,SAAUC,EAAUqG,GAC9C,GAGIY,GACAzP,EAJAqU,EAASxF,GAAWA,EAAQwF,OAC5BvN,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChDsM,EAAOzT,KAAK2T,KAIhB,IAAIzE,GAAWA,EAAQsH,MAIrB,IAAK,GAFDvU,GAAQjC,KAAKiW,IAAI/G,GAEZrJ,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IAC3CiK,EAAO7N,EAAM4D,GACbxF,EAAKyP,EAAK9P,KAAK4T,UACf/K,EAASiH,EAAMzP,OAKjB,KAAKA,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,KACpBuN,GAAUA,EAAO5E,KACpBjH,EAASiH,EAAMzP,KAkBzBQ,EAAQqT,UAAUpG,IAAM,SAAUjF,EAAUqG,GAC1C,GAIIY,GAJA4E,EAASxF,GAAWA,EAAQwF,OAC5BvN,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChD2P,KACArD,EAAOzT,KAAK2T,KAIhB,KAAK,GAAItT,KAAMoT,GACTA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,KACpBuN,GAAUA,EAAO5E,KACpBgH,EAAYvO,KAAKM,EAASiH,EAAMzP,IAUtC,OAJI6O,IAAWA,EAAQsH,OACrBxW,KAAKyW,MAAMK,EAAa5H,EAAQsH,OAG3BM,GAUTjW,EAAQqT,UAAUwC,cAAgB,SAAU5G,EAAMnB,GAChD,IAAKmB,EACH,MAAOA,EAGT,IAAIiH,KAEJ,IAAGzQ,MAAMC,QAAQoI,GACf,IAAK,GAAIY,KAASO,GACZA,EAAK3J,eAAeoJ,IAAoC,IAAzBZ,EAAO3H,QAAQuI,KAChDwH,EAAaxH,GAASO,EAAKP,QAI/B,KAAK,GAAIA,KAASO,GACZA,EAAK3J,eAAeoJ,IAAUZ,EAAOxI,eAAeoJ,KACtDwH,EAAapI,EAAOY,IAAUO,EAAKP,GAKzC,OAAOwH,IASTlW,EAAQqT,UAAUuC,MAAQ,SAAUxU,EAAOuU,GACzC,GAAI7V,EAAK8D,SAAS+R,GAAQ,CAExB,GAAIQ,GAAOR,CACXvU,GAAMgV,KAAK,SAAUrR,EAAGa,GACtB,GAAIyQ,GAAKtR,EAAEoR,GACPG,EAAK1Q,EAAEuQ,EACX,OAAQE,GAAKC,EAAM,EAAWA,EAALD,EAAW,GAAK,QAGxC,CAAA,GAAqB,kBAAVV,GAOd,KAAM,IAAI9P,WAAU,uCALpBzE,GAAMgV,KAAKT,KAgBf3V,EAAQqT,UAAUkD,OAAS,SAAU/W,EAAIyU,GACvC,GACIjP,GAAGC,EAAKuR,EADRC,IAGJ,IAAIhR,MAAMC,QAAQlG,GAChB,IAAKwF,EAAI,EAAGC,EAAMzF,EAAG2F,OAAYF,EAAJD,EAASA,IACpCwR,EAAYrX,KAAKuX,QAAQlX,EAAGwF,IACX,MAAbwR,GACFC,EAAW/O,KAAK8O,OAKpBA,GAAYrX,KAAKuX,QAAQlX,GACR,MAAbgX,GACFC,EAAW/O,KAAK8O,EAQpB,OAJIC,GAAWtR,QACbhG,KAAK4U,SAAS,UAAW3S,MAAOqV,GAAaxC,GAGxCwC,GASTzW,EAAQqT,UAAUqD,QAAU,SAAUlX,GACpC,GAAIM,EAAKoD,SAAS1D,IAAOM,EAAK8D,SAASpE,IACrC,GAAIL,KAAK2T,MAAMtT,GAGb,aAFOL,MAAK2T,MAAMtT,GAClBL,KAAKgG,SACE3F,MAGN,IAAIA,YAAcuG,QAAQ,CAC7B,GAAI0P,GAASjW,EAAGL,KAAK4T,SACrB,IAAI0C,GAAUtW,KAAK2T,MAAM2C,GAGvB,aAFOtW,MAAK2T,MAAM2C,GAClBtW,KAAKgG,SACEsQ,EAGX,MAAO,OAQTzV,EAAQqT,UAAUsD,MAAQ,SAAU1C,GAClC,GAAIoB,GAAMtP,OAAOiH,KAAK7N,KAAK2T,MAO3B,OALA3T,MAAK2T,SACL3T,KAAKgG,OAAS,EAEdhG,KAAK4U,SAAS,UAAW3S,MAAOiU,GAAMpB,GAE/BoB,GAQTrV,EAAQqT,UAAU9P,IAAM,SAAUmL,GAChC,GAAIkE,GAAOzT,KAAK2T,MACZvP,EAAM,KACNqT,EAAW,IAEf,KAAK,GAAIpX,KAAMoT,GACb,GAAIA,EAAKtN,eAAe9F,GAAK,CAC3B,GAAIyP,GAAO2D,EAAKpT,GACZqX,EAAY5H,EAAKP,EACJ,OAAbmI,KAAuBtT,GAAOsT,EAAYD,KAC5CrT,EAAM0L,EACN2H,EAAWC,GAKjB,MAAOtT,IAQTvD,EAAQqT,UAAU/P,IAAM,SAAUoL,GAChC,GAAIkE,GAAOzT,KAAK2T,MACZxP,EAAM,KACNwT,EAAW,IAEf,KAAK,GAAItX,KAAMoT,GACb,GAAIA,EAAKtN,eAAe9F,GAAK,CAC3B,GAAIyP,GAAO2D,EAAKpT,GACZqX,EAAY5H,EAAKP,EACJ,OAAbmI,KAAuBvT,GAAmBwT,EAAZD,KAChCvT,EAAM2L,EACN6H,EAAWD,GAKjB,MAAOvT,IAUTtD,EAAQqT,UAAU0D,SAAW,SAAUrI,GACrC,GAII1J,GAJA4N,EAAOzT,KAAK2T,MACZkE,KACAC,EAAY9X,KAAK0T,SAASvM,MAAQnH,KAAK0T,SAASvM,KAAKoI,IAAU,KAC/DwI,EAAQ,CAGZ,KAAK,GAAI7R,KAAQuN,GACf,GAAIA,EAAKtN,eAAeD,GAAO,CAC7B,GAAI4J,GAAO2D,EAAKvN,GACZ5B,EAAQwL,EAAKP,GACbyI,GAAS,CACb,KAAKnS,EAAI,EAAOkS,EAAJlS,EAAWA,IACrB,GAAIgS,EAAOhS,IAAMvB,EAAO,CACtB0T,GAAS,CACT,OAGCA,GAAqBnR,SAAVvC,IACduT,EAAOE,GAASzT,EAChByT,KAKN,GAAID,EACF,IAAKjS,EAAI,EAAGA,EAAIgS,EAAO7R,OAAQH,IAC7BgS,EAAOhS,GAAKlF,EAAKuG,QAAQ2Q,EAAOhS,GAAIiS,EAIxC,OAAOD,IASThX,EAAQqT,UAAUiB,SAAW,SAAUrF,GACrC,GAAIzP,GAAKyP,EAAK9P,KAAK4T,SAEnB,IAAU/M,QAANxG,GAEF,GAAIL,KAAK2T,MAAMtT,GAEb,KAAM,IAAIuD,OAAM,iCAAmCvD,EAAK,uBAK1DA,GAAKM,EAAK2E,aACVwK,EAAK9P,KAAK4T,UAAYvT,CAGxB,IAAI+M,KACJ,KAAK,GAAImC,KAASO,GAChB,GAAIA,EAAK3J,eAAeoJ,GAAQ,CAC9B,GAAIuI,GAAY9X,KAAK8T,MAAMvE,EAC3BnC,GAAEmC,GAAS5O,EAAKuG,QAAQ4I,EAAKP,GAAQuI,GAMzC,MAHA9X,MAAK2T,MAAMtT,GAAM+M,EACjBpN,KAAKgG,SAEE3F,GAUTQ,EAAQqT,UAAUqC,SAAW,SAAUlW,EAAI4X,GACzC,GAAI1I,GAAOjL,EAGP4T,EAAMlY,KAAK2T,MAAMtT,EACrB,KAAK6X,EACH,MAAO,KAIT,IAAIC,KACJ,IAAIF,EACF,IAAK1I,IAAS2I,GACRA,EAAI/R,eAAeoJ,KACrBjL,EAAQ4T,EAAI3I,GACZ4I,EAAU5I,GAAS5O,EAAKuG,QAAQ5C,EAAO2T,EAAM1I,SAMjD,KAAKA,IAAS2I,GACRA,EAAI/R,eAAeoJ,KACrBjL,EAAQ4T,EAAI3I,GACZ4I,EAAU5I,GAASjL,EAIzB,OAAO6T,IAWTtX,EAAQqT,UAAU8B,YAAc,SAAUlG,GACxC,GAAIzP,GAAKyP,EAAK9P,KAAK4T,SACnB,IAAU/M,QAANxG,EACF,KAAM,IAAIuD,OAAM,6CAA+CwU,KAAKC,UAAUvI,GAAQ,IAExF,IAAI1C,GAAIpN,KAAK2T,MAAMtT,EACnB,KAAK+M,EAEH,KAAM,IAAIxJ,OAAM,uCAAyCvD,EAAK,SAIhE,KAAK,GAAIkP,KAASO,GAChB,GAAIA,EAAK3J,eAAeoJ,GAAQ,CAC9B,GAAIuI,GAAY9X,KAAK8T,MAAMvE,EAC3BnC,GAAEmC,GAAS5O,EAAKuG,QAAQ4I,EAAKP,GAAQuI,GAIzC,MAAOzX,IASTQ,EAAQqT,UAAUmB,gBAAkB,SAAUiD,GAE5C,IAAK,GADDlD,MACKK,EAAM,EAAGC,EAAO4C,EAAUC,qBAA4B7C,EAAND,EAAYA,IACnEL,EAAQK,GAAO6C,EAAUE,YAAY/C,IAAQ6C,EAAUG,eAAehD,EAExE,OAAOL,IAUTvU,EAAQqT,UAAUyC,WAAa,SAAU2B,EAAWlD,EAAStF,GAG3D,IAAK,GAFDwF,GAAMgD,EAAUI,SAEXjD,EAAM,EAAGC,EAAON,EAAQpP,OAAc0P,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB6C,GAAUK,SAASrD,EAAKG,EAAK3F,EAAKP,MAItC1P,EAAOD,QAAUiB,GAKb,SAAShB,EAAQD,EAASM,GAe9B,QAASY,GAAU2S,EAAMvE,GACvBlP,KAAK2T,MAAQ,KACb3T,KAAK4Y,QACL5Y,KAAKgG,OAAS,EACdhG,KAAK0T,SAAWxE,MAChBlP,KAAK4T,SAAW,KAChB5T,KAAK+T,eAEL,IAAImB,GAAKlV,IACTA,MAAKqJ,SAAW,WACd6L,EAAG2D,SAASC,MAAM5D,EAAInP,YAGxB/F,KAAK+Y,QAAQtF,GA1Bf,GAAI9S,GAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,EAmClCY,GAASoT,UAAU6E,QAAU,SAAUtF,GACrC,GAAIyC,GAAKrQ,EAAGC,CAEZ,IAAI9F,KAAK2T,MAAO,CAEV3T,KAAK2T,MAAMgB,aACb3U,KAAK2T,MAAMgB,YAAY,IAAK3U,KAAKqJ,UAInC6M,IACA,KAAK,GAAI7V,KAAML,MAAK4Y,KACd5Y,KAAK4Y,KAAKzS,eAAe9F,IAC3B6V,EAAI3N,KAAKlI,EAGbL,MAAK4Y,QACL5Y,KAAKgG,OAAS,EACdhG,KAAK4U,SAAS,UAAW3S,MAAOiU,IAKlC,GAFAlW,KAAK2T,MAAQF,EAETzT,KAAK2T,MAAO,CAQd,IANA3T,KAAK4T,SAAW5T,KAAK0T,SAASG,SACzB7T,KAAK2T,OAAS3T,KAAK2T,MAAMzE,SAAWlP,KAAK2T,MAAMzE,QAAQ2E,SACxD,KAGJqC,EAAMlW,KAAK2T,MAAMiD,QAAQlC,OAAQ1U,KAAK0T,UAAY1T,KAAK0T,SAASgB,SAC3D7O,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACT7F,KAAK4Y,KAAKvY,IAAM,CAElBL,MAAKgG,OAASkQ,EAAIlQ,OAClBhG,KAAK4U,SAAS,OAAQ3S,MAAOiU,IAGzBlW,KAAK2T,MAAMW,IACbtU,KAAK2T,MAAMW,GAAG,IAAKtU,KAAKqJ,YAS9BvI,EAASoT,UAAU8E,QAAU,WAQ3B,IAAK,GAPD3Y,GACA6V,EAAMlW,KAAK2T,MAAMiD,QAAQlC,OAAQ1U,KAAK0T,UAAY1T,KAAK0T,SAASgB,SAChEuE,KACAC,KACAC,KAGKtT,EAAI,EAAGA,EAAIqQ,EAAIlQ,OAAQH,IAC9BxF,EAAK6V,EAAIrQ,GACToT,EAAO5Y,IAAM,EACRL,KAAK4Y,KAAKvY,KACb6Y,EAAM3Q,KAAKlI,GACXL,KAAK4Y,KAAKvY,IAAM,EAChBL,KAAKgG,SAKT,KAAK3F,IAAML,MAAK4Y,KACV5Y,KAAK4Y,KAAKzS,eAAe9F,KACtB4Y,EAAO5Y,KACV8Y,EAAQ5Q,KAAKlI,SACNL,MAAK4Y,KAAKvY,GACjBL,KAAKgG,UAMPkT,GAAMlT,QACRhG,KAAK4U,SAAS,OAAQ3S,MAAOiX,IAE3BC,EAAQnT,QACVhG,KAAK4U,SAAS,UAAW3S,MAAOkX,KAsCpCrY,EAASoT,UAAU+B,IAAM,WACvB,GAGIC,GAAKhH,EAASuE,EAHdyB,EAAKlV,KAILmW,EAAYxV,EAAK6G,QAAQzB,UAAU,GACtB,WAAboQ,GAAsC,UAAbA,GAAsC,SAAbA,GAEpDD,EAAMnQ,UAAU,GAChBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,KAIjBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,GAInB,IAAIqT,GAAczY,EAAKgF,UAAW3F,KAAK0T,SAAUxE,EAG7ClP,MAAK0T,SAASgB,QAAUxF,GAAWA,EAAQwF,SAC7C0E,EAAY1E,OAAS,SAAU5E,GAC7B,MAAOoF,GAAGxB,SAASgB,OAAO5E,IAASZ,EAAQwF,OAAO5E,IAKtD,IAAIuJ,KAOJ,OANWxS,SAAPqP,GACFmD,EAAa9Q,KAAK2N,GAEpBmD,EAAa9Q,KAAK6Q,GAClBC,EAAa9Q,KAAKkL,GAEXzT,KAAK2T,OAAS3T,KAAK2T,MAAMsC,IAAI6C,MAAM9Y,KAAK2T,MAAO0F,IAWxDvY,EAASoT,UAAU0C,OAAS,SAAU1H,GACpC,GAAIgH,EAEJ,IAAIlW,KAAK2T,MAAO,CACd,GACIe,GADA4E,EAAgBtZ,KAAK0T,SAASgB,MAK9BA,GAFAxF,GAAWA,EAAQwF,OACjB4E,EACO,SAAUxJ,GACjB,MAAOwJ,GAAcxJ,IAASZ,EAAQwF,OAAO5E,IAItCZ,EAAQwF,OAIV4E,EAGXpD,EAAMlW,KAAK2T,MAAMiD,QACflC,OAAQA,EACR8B,MAAOtH,GAAWA,EAAQsH,YAI5BN,KAGF,OAAOA,IAQTpV,EAASoT,UAAU2C,WAAa,WAE9B,IADA,GAAI0C,GAAUvZ,KACPuZ,YAAmBzY,IACxByY,EAAUA,EAAQ5F,KAEpB,OAAO4F,IAAW,MAYpBzY,EAASoT,UAAU2E,SAAW,SAAUhP,EAAOgL,EAAQC,GACrD,GAAIjP,GAAGC,EAAKzF,EAAIyP,EACZoG,EAAMrB,GAAUA,EAAO5S,MACvBwR,EAAOzT,KAAK2T,MACZmC,KACAoD,KACAM,KACAL,IAEJ,IAAIjD,GAAOzC,EAAM,CACf,OAAQ5J,GACN,IAAK,MAEH,IAAKhE,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACTiK,EAAO9P,KAAKiW,IAAI5V,GACZyP,IACF9P,KAAK4Y,KAAKvY,IAAM,EAChB6Y,EAAM3Q,KAAKlI,GAIf,MAEF,KAAK,SAGH,IAAKwF,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACTiK,EAAO9P,KAAKiW,IAAI5V,GAEZyP,EACE9P,KAAK4Y,KAAKvY,IACZmZ,EAAQjR,KAAKlI,GACbyV,EAAYvN,KAAKsM,EAAOpB,KAAK5N,MAG7B7F,KAAK4Y,KAAKvY,IAAM,EAChB6Y,EAAM3Q,KAAKlI,IAITL,KAAK4Y,KAAKvY,WACLL,MAAK4Y,KAAKvY,GACjB8Y,EAAQ5Q,KAAKlI,GAQnB,MAEF,KAAK,SAEH,IAAKwF,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACL7F,KAAK4Y,KAAKvY,WACLL,MAAK4Y,KAAKvY,GACjB8Y,EAAQ5Q,KAAKlI,IAOrBL,KAAKgG,QAAUkT,EAAMlT,OAASmT,EAAQnT,OAElCkT,EAAMlT,QACRhG,KAAK4U,SAAS,OAAQ3S,MAAOiX,GAAQpE,GAEnC0E,EAAQxT,QACVhG,KAAK4U,SAAS,UAAW3S,MAAOuX,EAAS/F,KAAMqC,GAAchB,GAE3DqE,EAAQnT,QACVhG,KAAK4U,SAAS,UAAW3S,MAAOkX,GAAUrE,KAMhDhU,EAASoT,UAAUI,GAAKzT,EAAQqT,UAAUI,GAC1CxT,EAASoT,UAAUO,IAAM5T,EAAQqT,UAAUO,IAC3C3T,EAASoT,UAAUU,SAAW/T,EAAQqT,UAAUU,SAGhD9T,EAASoT,UAAUM,UAAY1T,EAASoT,UAAUI,GAClDxT,EAASoT,UAAUS,YAAc7T,EAASoT,UAAUO,IAEpD5U,EAAOD,QAAUkB,GAIb,SAASjB,GAeb,QAASkB,GAAMmO,GAEblP,KAAKyZ,MAAQ,KACbzZ,KAAKoE,IAAMsV,IAGX1Z,KAAKoU,UACLpU,KAAK2Z,SAAW,KAChB3Z,KAAK4Z,UAAY,KAEjB5Z,KAAKiU,WAAW/E,GAgBlBnO,EAAMmT,UAAUD,WAAa,SAAU/E,GACjCA,GAAoC,mBAAlBA,GAAQuK,QAC5BzZ,KAAKyZ,MAAQvK,EAAQuK,OAEnBvK,GAAkC,mBAAhBA,GAAQ9K,MAC5BpE,KAAKoE,IAAM8K,EAAQ9K,KAGrBpE,KAAK6Z,kBAsBP9Y,EAAM4E,OAAS,SAAU3B,EAAQkL,GAC/B,GAAIiF,GAAQ,GAAIpT,GAAMmO,EAEtB,IAAqBrI,SAAjB7C,EAAO8V,MACT,KAAM,IAAIlW,OAAM,6CAElBI,GAAO8V,MAAQ,WACb3F,EAAM2F,QAGR,IAAIC,KACF/C,KAAM,QACNgD,SAAUnT,QAGZ,IAAIqI,GAAWA,EAAQjE,QACrB,IAAK,GAAIpF,GAAI,EAAGA,EAAIqJ,EAAQjE,QAAQjF,OAAQH,IAAK,CAC/C,GAAImR,GAAO9H,EAAQjE,QAAQpF,EAC3BkU,GAAQxR,MACNyO,KAAMA,EACNgD,SAAUhW,EAAOgT,KAEnB7C,EAAMlJ,QAAQjH,EAAQgT,GAS1B,MALA7C,GAAMyF,WACJ5V,OAAQA,EACR+V,QAASA,GAGJ5F,GAOTpT,EAAMmT,UAAUG,QAAU,WAGxB,GAFArU,KAAK8Z,QAED9Z,KAAK4Z,UAAW,CAGlB,IAAK,GAFD5V,GAAShE,KAAK4Z,UAAU5V,OACxB+V,EAAU/Z,KAAK4Z,UAAUG,QACpBlU,EAAI,EAAGA,EAAIkU,EAAQ/T,OAAQH,IAAK,CACvC,GAAIoU,GAASF,EAAQlU,EACjBoU,GAAOD,SACThW,EAAOiW,EAAOjD,MAAQiD,EAAOD,eAGtBhW,GAAOiW,EAAOjD,MAGzBhX,KAAK4Z,UAAY,OASrB7Y,EAAMmT,UAAUjJ,QAAU,SAASjH,EAAQiW,GACzC,GAAI/E,GAAKlV,KACLga,EAAWhW,EAAOiW,EACtB,KAAKD,EACH,KAAM,IAAIpW,OAAM,UAAYqW,EAAS,aAGvCjW,GAAOiW,GAAU,WAGf,IAAK,GADDC,MACKrU,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IACpCqU,EAAKrU,GAAKE,UAAUF,EAItBqP,GAAGf,OACD+F,KAAMA,EACNC,GAAIH,EACJI,QAASpa,SASfe,EAAMmT,UAAUC,MAAQ,SAASkG,GAE7Bra,KAAKoU,OAAO7L,KADO,kBAAV8R,IACSF,GAAIE,GAGLA,GAGnBra,KAAK6Z,kBAOP9Y,EAAMmT,UAAU2F,eAAiB,WAQ/B,GANI7Z,KAAKoU,OAAOpO,OAAShG,KAAKoE,KAC5BpE,KAAK8Z,QAIPQ,aAAata,KAAK2Z,UACd3Z,KAAKmU,MAAMnO,OAAS,GAA2B,gBAAfhG,MAAKyZ,MAAoB,CAC3D,GAAIvE,GAAKlV,IACTA,MAAK2Z,SAAWY,WAAW,WACzBrF,EAAG4E,SACF9Z,KAAKyZ,SAOZ1Y,EAAMmT,UAAU4F,MAAQ,WACtB,KAAO9Z,KAAKoU,OAAOpO,OAAS,GAAG,CAC7B,GAAIqU,GAAQra,KAAKoU,OAAOrC,OACxBsI,GAAMF,GAAGrB,MAAMuB,EAAMD,SAAWC,EAAMF,GAAIE,EAAMH,YAIpDra,EAAOD,QAAUmB,GAKb,SAASlB,EAAQD,EAASM,GAwB9B,QAASc,GAAQwZ,EAAW/G,EAAMvE,GAChC,KAAMlP,eAAgBgB,IACpB,KAAM,IAAIyZ,aAAY,mDAIxBza,MAAK0a,iBAAmBF,EACxBxa,KAAKsT,MAAQ,QACbtT,KAAKuT,OAAS,QACdvT,KAAK2a,OAAS,GACd3a,KAAK4a,eAAiB,MACtB5a,KAAK6a,eAAiB,MAEtB7a,KAAK8a,OAAS,IACd9a,KAAK+a,OAAS,IACd/a,KAAKgb,OAAS,GAEd,IAAIC,GAAc,SAASzO,GAAK,MAAOA,GACvCxM,MAAKkb,YAAcD,EACnBjb,KAAKmb,YAAcF,EACnBjb,KAAKob,YAAcH,EAEnBjb,KAAKqb,YAAc,OACnBrb,KAAKsb,YAAc,QAEnBtb,KAAK0N,MAAQ1M,EAAQua,MAAMC,IAC3Bxb,KAAKyb,iBAAkB,EACvBzb,KAAK0b,UAAW,EAChB1b,KAAK2b,iBAAkB,EACvB3b,KAAK4b,YAAa,EAClB5b,KAAK6b,gBAAiB,EACtB7b,KAAK8b,aAAc,EACnB9b,KAAK+b,cAAgB,GAErB/b,KAAKgc,kBAAoB,IACzBhc,KAAKic,kBAAmB,EAExBjc,KAAKkc,OAAS,GAAIhb,GAClBlB,KAAKmc,IAAM,GAAI9a,GAAQ,EAAG,EAAG,IAE7BrB,KAAKsY,UAAY,KACjBtY,KAAKoc,WAAa,KAGlBpc,KAAKqc,KAAOxV,OACZ7G,KAAKsc,KAAOzV,OACZ7G,KAAKuc,KAAO1V,OACZ7G,KAAKwc,SAAW3V,OAChB7G,KAAKyc,UAAY5V,OAEjB7G,KAAK0c,KAAO,EACZ1c,KAAK2c,MAAQ9V,OACb7G,KAAK4c,KAAO,EACZ5c,KAAK6c,KAAO,EACZ7c,KAAK8c,MAAQjW,OACb7G,KAAK+c,KAAO,EACZ/c,KAAKgd,KAAO,EACZhd,KAAKid,MAAQpW,OACb7G,KAAKkd,KAAO,EACZld,KAAKmd,SAAW,EAChBnd,KAAKod,SAAW,EAChBpd,KAAKqd,UAAY,EACjBrd,KAAKsd,UAAY,EAIjBtd,KAAKud,UAAY,UACjBvd,KAAKwd,UAAY,UACjBxd,KAAKyd,SAAW,UAChBzd,KAAK0d,eAAiB,UAGtB1d,KAAK8O,SAGL9O,KAAKiU,WAAW/E,GAGZuE,GACFzT,KAAK+Y,QAAQtF,GAknEjB,QAASkK,GAAW9T,GAClB,MAAI,WAAaA,GAAcA,EAAM+T,QAC9B/T,EAAMgU,cAAc,IAAMhU,EAAMgU,cAAc,GAAGD,SAAW,EAQrE,QAASE,GAAWjU,GAClB,MAAI,WAAaA,GAAcA,EAAMkU,QAC9BlU,EAAMgU,cAAc,IAAMhU,EAAMgU,cAAc,GAAGE,SAAW,EAnuErE,GAAIC,GAAU9d,EAAoB,IAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BS,EAAOT,EAAoB,GAC3BmB,EAAUnB,EAAoB,IAC9BkB,EAAUlB,EAAoB,GAC9BgB,EAAShB,EAAoB,GAC7BiB,EAASjB,EAAoB,GAC7BoB,EAASpB,EAAoB,IAC7BqB,EAAarB,EAAoB,GAiGrC8d,GAAQhd,EAAQkT,WAKhBlT,EAAQkT,UAAU+J,UAAY,WAC5Bje,KAAKuE,MAAQ,GAAIlD,GAAQ,GAAKrB,KAAK4c,KAAO5c,KAAK0c,MAC7C,GAAK1c,KAAK+c,KAAO/c,KAAK6c,MACtB,GAAK7c,KAAKkd,KAAOld,KAAKgd,OAGpBhd,KAAK2b,kBACH3b,KAAKuE,MAAMiO,EAAIxS,KAAKuE,MAAMkO,EAE5BzS,KAAKuE,MAAMkO,EAAIzS,KAAKuE,MAAMiO,EAI1BxS,KAAKuE,MAAMiO,EAAIxS,KAAKuE,MAAMkO,GAK9BzS,KAAKuE,MAAM2Z,GAAKle,KAAK+b,cAIrB/b,KAAKuE,MAAMD,MAAQ,GAAKtE,KAAKod,SAAWpd,KAAKmd,SAG7C,IAAIgB,IAAWne,KAAK4c,KAAO5c,KAAK0c,MAAQ,EAAI1c,KAAKuE,MAAMiO,EACnD4L,GAAWpe,KAAK+c,KAAO/c,KAAK6c,MAAQ,EAAI7c,KAAKuE,MAAMkO,EACnD4L,GAAWre,KAAKkd,KAAOld,KAAKgd,MAAQ,EAAIhd,KAAKuE,MAAM2Z,CACvDle,MAAKkc,OAAOoC,eAAeH,EAASC,EAASC,IAU/Crd,EAAQkT,UAAUqK,eAAiB,SAASC,GAC1C,GAAIC,GAAcze,KAAK0e,2BAA2BF,EAClD,OAAOxe,MAAK2e,4BAA4BF,IAW1Czd,EAAQkT,UAAUwK,2BAA6B,SAASF,GACtD,GAAII,GAAKJ,EAAQhM,EAAIxS,KAAKuE,MAAMiO,EAC9BqM,EAAKL,EAAQ/L,EAAIzS,KAAKuE,MAAMkO,EAC5BqM,EAAKN,EAAQN,EAAIle,KAAKuE,MAAM2Z,EAE5Ba,EAAK/e,KAAKkc,OAAO8C,oBAAoBxM,EACrCyM,EAAKjf,KAAKkc,OAAO8C,oBAAoBvM,EACrCyM,EAAKlf,KAAKkc,OAAO8C,oBAAoBd,EAGrCiB,EAAQ3a,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoB7M,GACjD8M,EAAQ9a,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoB7M,GACjDgN,EAAQhb,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoB5M,GACjDgN,EAAQjb,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoB5M,GACjDiN,EAAQlb,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoBnB,GACjDyB,EAAQnb,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoBnB,GAGjD0B,EAAKH,GAASC,GAASb,EAAKI,GAAMU,GAASf,EAAKG,IAAOS,GAASV,EAAKI,GACrEW,EAAKV,GAASM,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQO,GAASK,GAASd,EAAKI,GAAMS,GAASd,EAAGG,IAC9He,EAAKR,GAASG,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQI,GAASQ,GAASd,EAAKI,GAAMS,GAASd,EAAGG,GAEhI,OAAO,IAAI1d,GAAQue,EAAIC,EAAIC,IAU7B9e,EAAQkT,UAAUyK,4BAA8B,SAASF,GACvD,GAQIsB,GACAC,EATAC,EAAKjgB,KAAKmc,IAAI3J,EAChB0N,EAAKlgB,KAAKmc,IAAI1J,EACd0N,EAAKngB,KAAKmc,IAAI+B,EACd0B,EAAKnB,EAAYjM,EACjBqN,EAAKpB,EAAYhM,EACjBqN,EAAKrB,EAAYP,CAgBnB,OAXIle,MAAKyb,iBACPsE,GAAMH,EAAKK,IAAOE,EAAKL,GACvBE,GAAMH,EAAKK,IAAOC,EAAKL,KAGvBC,EAAKH,IAAOO,EAAKngB,KAAKkc,OAAOkE,gBAC7BJ,EAAKH,IAAOM,EAAKngB,KAAKkc,OAAOkE,iBAKxB,GAAIhf,GACTpB,KAAKqgB,QAAUN,EAAK/f,KAAKsgB,MAAMC,OAAOC,YACtCxgB,KAAKygB,QAAUT,EAAKhgB,KAAKsgB,MAAMC,OAAOC,cAO1Cxf,EAAQkT,UAAUwM,oBAAsB,SAASC,GAC/C,GAAIC,GAAO,QACPC,EAAS,OACTC,EAAc,CAElB,IAAgC,gBAAtB,GACRF,EAAOD,EACPE,EAAS,OACTC,EAAc,MAEX,IAAgC,gBAAtB,GACgBja,SAAzB8Z,EAAgBC,OAAuBA,EAAOD,EAAgBC,MACnC/Z,SAA3B8Z,EAAgBE,SAAyBA,EAASF,EAAgBE,QAClCha,SAAhC8Z,EAAgBG,cAA2BA,EAAcH,EAAgBG,iBAE1E,IAAyBja,SAApB8Z,EAIR,KAAM,qCAGR3gB,MAAKsgB,MAAM5S,MAAMiT,gBAAkBC,EACnC5gB,KAAKsgB,MAAM5S,MAAMqT,YAAcF,EAC/B7gB,KAAKsgB,MAAM5S,MAAMsT,YAAcF,EAAc,KAC7C9gB,KAAKsgB,MAAM5S,MAAMuT,YAAc,SAKjCjgB,EAAQua,OACN2F,IAAK,EACLC,SAAU,EACVC,QAAS,EACT5F,IAAM,EACN6F,QAAU,EACVC,SAAU,EACVC,QAAS,EACTC,KAAO,EACPC,KAAM,EACNC,QAAU,GASZ1gB,EAAQkT,UAAUyN,gBAAkB,SAASC,GAC3C,OAAQA,GACN,IAAK,MAAW,MAAO5gB,GAAQua,MAAMC,GACrC,KAAK,WAAa,MAAOxa,GAAQua,MAAM8F,OACvC,KAAK,YAAe,MAAOrgB,GAAQua,MAAM+F,QACzC,KAAK,WAAa,MAAOtgB,GAAQua,MAAMgG,OACvC,KAAK,OAAW,MAAOvgB,GAAQua,MAAMkG,IACrC,KAAK,OAAW,MAAOzgB,GAAQua,MAAMiG,IACrC,KAAK,UAAa,MAAOxgB,GAAQua,MAAMmG,OACvC,KAAK,MAAW,MAAO1gB,GAAQua,MAAM2F,GACrC,KAAK,YAAe,MAAOlgB,GAAQua,MAAM4F,QACzC,KAAK,WAAa,MAAOngB,GAAQua,MAAM6F,QAGzC,MAAO,IAQTpgB,EAAQkT,UAAU2N,wBAA0B,SAASpO,GACnD,GAAIzT,KAAK0N,QAAU1M,EAAQua,MAAMC,KAC/Bxb,KAAK0N,QAAU1M,EAAQua,MAAM8F,SAC7BrhB,KAAK0N,QAAU1M,EAAQua,MAAMkG,MAC7BzhB,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC7BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,SAC7B1hB,KAAK0N,QAAU1M,EAAQua,MAAM2F,IAE7BlhB,KAAKqc,KAAO,EACZrc,KAAKsc,KAAO,EACZtc,KAAKuc,KAAO,EACZvc,KAAKwc,SAAW3V,OAEZ4M,EAAK8E,qBAAuB,IAC9BvY,KAAKyc,UAAY,OAGhB,CAAA,GAAIzc,KAAK0N,QAAU1M,EAAQua,MAAM+F,UACpCthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,SAC7BvhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAY7B,KAAM,kBAAoBphB,KAAK0N,MAAQ,GAVvC1N,MAAKqc,KAAO,EACZrc,KAAKsc,KAAO,EACZtc,KAAKuc,KAAO,EACZvc,KAAKwc,SAAW,EAEZ/I,EAAK8E,qBAAuB,IAC9BvY,KAAKyc,UAAY,KAQvBzb,EAAQkT,UAAUsB,gBAAkB,SAAS/B,GAC3C,MAAOA,GAAKzN,QAIdhF,EAAQkT,UAAUqE,mBAAqB,SAAS9E,GAC9C,GAAIqO,GAAU,CACd,KAAK,GAAIC,KAAUtO,GAAK,GAClBA,EAAK,GAAGtN,eAAe4b,IACzBD,GAGJ,OAAOA,IAIT9gB,EAAQkT,UAAU8N,kBAAoB,SAASvO,EAAMsO,GAEnD,IAAK,GADDE,MACKpc,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IACgB,IAA3Coc,EAAejb,QAAQyM,EAAK5N,GAAGkc,KACjCE,EAAe1Z,KAAKkL,EAAK5N,GAAGkc,GAGhC,OAAOE,IAITjhB,EAAQkT,UAAUgO,eAAiB,SAASzO,EAAKsO,GAE/C,IAAK,GADDI,IAAUhe,IAAIsP,EAAK,GAAGsO,GAAQ3d,IAAIqP,EAAK,GAAGsO,IACrClc,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IAC3Bsc,EAAOhe,IAAMsP,EAAK5N,GAAGkc,KAAWI,EAAOhe,IAAMsP,EAAK5N,GAAGkc,IACrDI,EAAO/d,IAAMqP,EAAK5N,GAAGkc,KAAWI,EAAO/d,IAAMqP,EAAK5N,GAAGkc,GAE3D,OAAOI,IASTnhB,EAAQkT,UAAUkO,gBAAkB,SAAUC,GAC5C,GAAInN,GAAKlV,IAOT;GAJIA,KAAKuZ,SACPvZ,KAAKuZ,QAAQ9E,IAAI,IAAKzU,KAAKsiB,WAGbzb,SAAZwb,EAAJ,CAGI/b,MAAMC,QAAQ8b,KAChBA,EAAU,GAAIxhB,GAAQwhB,GAGxB,IAAI5O,EACJ,MAAI4O,YAAmBxhB,IAAWwhB,YAAmBvhB,IAInD,KAAM,IAAI8C,OAAM,uCAGlB,IANE6P,EAAO4O,EAAQpM,MAME,GAAfxC,EAAKzN,OAAT,CAGAhG,KAAKuZ,QAAU8I,EACfriB,KAAKsY,UAAY7E,EAGjBzT,KAAKsiB,UAAY,WACfpN,EAAG6D,QAAQ7D,EAAGqE,UAEhBvZ,KAAKuZ,QAAQjF,GAAG,IAAKtU,KAAKsiB,WAS1BtiB,KAAKqc,KAAO,IACZrc,KAAKsc,KAAO,IACZtc,KAAKuc,KAAO,IACZvc,KAAKwc,SAAW,QAChBxc,KAAKyc,UAAY,SAKbhJ,EAAK,GAAGtN,eAAe,WACDU,SAApB7G,KAAKuiB,aACPviB,KAAKuiB,WAAa,GAAIphB,GAAOkhB,EAASriB,KAAKyc,UAAWzc,MACtDA,KAAKuiB,WAAWC,kBAAkB,WAAYtN,EAAGuN,WAKrD,IAAIC,GAAW1iB,KAAK0N,OAAS1M,EAAQua,MAAM2F,KACzClhB,KAAK0N,OAAS1M,EAAQua,MAAM4F,UAC5BnhB,KAAK0N,OAAS1M,EAAQua,MAAM6F,OAG9B,IAAIsB,EAAU,CACZ,GAA8B7b,SAA1B7G,KAAK2iB,iBACP3iB,KAAKqd,UAAYrd,KAAK2iB,qBAEnB,CACH,GAAIC,GAAQ5iB,KAAKgiB,kBAAkBvO,EAAKzT,KAAKqc,KAC7Crc,MAAKqd,UAAauF,EAAM,GAAKA,EAAM,IAAO,EAG5C,GAA8B/b,SAA1B7G,KAAK6iB,iBACP7iB,KAAKsd,UAAYtd,KAAK6iB,qBAEnB,CACH,GAAIC,GAAQ9iB,KAAKgiB,kBAAkBvO,EAAKzT,KAAKsc,KAC7Ctc,MAAKsd,UAAawF,EAAM,GAAKA,EAAM,IAAO,GAK9C,GAAIC,GAAS/iB,KAAKkiB,eAAezO,EAAKzT,KAAKqc,KACvCqG,KACFK,EAAO5e,KAAOnE,KAAKqd,UAAY,EAC/B0F,EAAO3e,KAAOpE,KAAKqd,UAAY,GAEjCrd,KAAK0c,KAA6B7V,SAArB7G,KAAKgjB,YAA6BhjB,KAAKgjB,YAAcD,EAAO5e,IACzEnE,KAAK4c,KAA6B/V,SAArB7G,KAAKijB,YAA6BjjB,KAAKijB,YAAcF,EAAO3e,IACrEpE,KAAK4c,MAAQ5c,KAAK0c,OAAM1c,KAAK4c,KAAO5c,KAAK0c,KAAO,GACpD1c,KAAK2c,MAA+B9V,SAAtB7G,KAAKkjB,aAA8BljB,KAAKkjB,cAAgBljB,KAAK4c,KAAK5c,KAAK0c,MAAM,CAE3F,IAAIyG,GAASnjB,KAAKkiB,eAAezO,EAAKzT,KAAKsc,KACvCoG,KACFS,EAAOhf,KAAOnE,KAAKsd,UAAY,EAC/B6F,EAAO/e,KAAOpE,KAAKsd,UAAY,GAEjCtd,KAAK6c,KAA6BhW,SAArB7G,KAAKojB,YAA6BpjB,KAAKojB,YAAcD,EAAOhf,IACzEnE,KAAK+c,KAA6BlW,SAArB7G,KAAKqjB,YAA6BrjB,KAAKqjB,YAAcF,EAAO/e,IACrEpE,KAAK+c,MAAQ/c,KAAK6c,OAAM7c,KAAK+c,KAAO/c,KAAK6c,KAAO,GACpD7c,KAAK8c,MAA+BjW,SAAtB7G,KAAKsjB,aAA8BtjB,KAAKsjB,cAAgBtjB,KAAK+c,KAAK/c,KAAK6c,MAAM,CAE3F,IAAI0G,GAASvjB,KAAKkiB,eAAezO,EAAKzT,KAAKuc,KAM3C,IALAvc,KAAKgd,KAA6BnW,SAArB7G,KAAKwjB,YAA6BxjB,KAAKwjB,YAAcD,EAAOpf,IACzEnE,KAAKkd,KAA6BrW,SAArB7G,KAAKyjB,YAA6BzjB,KAAKyjB,YAAcF,EAAOnf,IACrEpE,KAAKkd,MAAQld,KAAKgd,OAAMhd,KAAKkd,KAAOld,KAAKgd,KAAO,GACpDhd,KAAKid,MAA+BpW,SAAtB7G,KAAK0jB,aAA8B1jB,KAAK0jB,cAAgB1jB,KAAKkd,KAAKld,KAAKgd,MAAM,EAErEnW,SAAlB7G,KAAKwc,SAAwB,CAC/B,GAAImH,GAAa3jB,KAAKkiB,eAAezO,EAAKzT,KAAKwc,SAC/Cxc,MAAKmd,SAAqCtW,SAAzB7G,KAAK4jB,gBAAiC5jB,KAAK4jB,gBAAkBD,EAAWxf,IACzFnE,KAAKod,SAAqCvW,SAAzB7G,KAAK6jB,gBAAiC7jB,KAAK6jB,gBAAkBF,EAAWvf,IACrFpE,KAAKod,UAAYpd,KAAKmd,WAAUnd,KAAKod,SAAWpd,KAAKmd,SAAW,GAItEnd,KAAKie,eAUPjd,EAAQkT,UAAU4P,eAAiB,SAAUrQ,GAE3C,GAAIjB,GAAGC,EAAG5M,EAAGqY,EAAG6F,EAAKnR,EAEjBwJ,IAEJ,IAAIpc,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC/BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,QAAS,CAKtC,GAAIkB,MACAE,IACJ,KAAKjd,EAAI,EAAGA,EAAI7F,KAAKwV,gBAAgB/B,GAAO5N,IAC1C2M,EAAIiB,EAAK5N,GAAG7F,KAAKqc,OAAS,EAC1B5J,EAAIgB,EAAK5N,GAAG7F,KAAKsc,OAAS,EAED,KAArBsG,EAAM5b,QAAQwL,IAChBoQ,EAAMra,KAAKiK,GAEY,KAArBsQ,EAAM9b,QAAQyL,IAChBqQ,EAAMva,KAAKkK,EAIf,IAAIuR,GAAa,SAAUpe,EAAGa,GAC5B,MAAOb,GAAIa,EAEbmc,GAAM3L,KAAK+M,GACXlB,EAAM7L,KAAK+M,EAGX,IAAIC,KACJ,KAAKpe,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IAAK,CAChC2M,EAAIiB,EAAK5N,GAAG7F,KAAKqc,OAAS,EAC1B5J,EAAIgB,EAAK5N,GAAG7F,KAAKsc,OAAS,EAC1B4B,EAAIzK,EAAK5N,GAAG7F,KAAKuc,OAAS,CAE1B,IAAI2H,GAAStB,EAAM5b,QAAQwL,GACvB2R,EAASrB,EAAM9b,QAAQyL,EAEA5L,UAAvBod,EAAWC,KACbD,EAAWC,MAGb,IAAI1F,GAAU,GAAInd,EAClBmd,GAAQhM,EAAIA,EACZgM,EAAQ/L,EAAIA,EACZ+L,EAAQN,EAAIA,EAEZ6F,KACAA,EAAInR,MAAQ4L,EACZuF,EAAIK,MAAQvd,OACZkd,EAAIM,OAASxd,OACbkd,EAAIO,OAAS,GAAIjjB,GAAQmR,EAAGC,EAAGzS,KAAKgd,MAEpCiH,EAAWC,GAAQC,GAAUJ,EAE7B3H,EAAW7T,KAAKwb,GAIlB,IAAKvR,EAAI,EAAGA,EAAIyR,EAAWje,OAAQwM,IACjC,IAAKC,EAAI,EAAGA,EAAIwR,EAAWzR,GAAGxM,OAAQyM,IAChCwR,EAAWzR,GAAGC,KAChBwR,EAAWzR,GAAGC,GAAG8R,WAAc/R,EAAIyR,EAAWje,OAAO,EAAKie,EAAWzR,EAAE,GAAGC,GAAK5L,OAC/Eod,EAAWzR,GAAGC,GAAG+R,SAAc/R,EAAIwR,EAAWzR,GAAGxM,OAAO,EAAKie,EAAWzR,GAAGC,EAAE,GAAK5L,OAClFod,EAAWzR,GAAGC,GAAGgS,WACdjS,EAAIyR,EAAWje,OAAO,GAAKyM,EAAIwR,EAAWzR,GAAGxM,OAAO,EACnDie,EAAWzR,EAAE,GAAGC,EAAE,GAClB5L,YAOV,KAAKhB,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IAC3B+M,EAAQ,GAAIvR,GACZuR,EAAMJ,EAAIiB,EAAK5N,GAAG7F,KAAKqc,OAAS,EAChCzJ,EAAMH,EAAIgB,EAAK5N,GAAG7F,KAAKsc,OAAS,EAChC1J,EAAMsL,EAAIzK,EAAK5N,GAAG7F,KAAKuc,OAAS,EAEV1V,SAAlB7G,KAAKwc,WACP5J,EAAMtO,MAAQmP,EAAK5N,GAAG7F,KAAKwc,WAAa,GAG1CuH,KACAA,EAAInR,MAAQA,EACZmR,EAAIO,OAAS,GAAIjjB,GAAQuR,EAAMJ,EAAGI,EAAMH,EAAGzS,KAAKgd,MAChD+G,EAAIK,MAAQvd,OACZkd,EAAIM,OAASxd,OAEbuV,EAAW7T,KAAKwb,EAIpB,OAAO3H,IASTpb,EAAQkT,UAAUpF,OAAS,WAEzB,KAAO9O,KAAK0a,iBAAiBgK,iBAC3B1kB,KAAK0a,iBAAiB9I,YAAY5R,KAAK0a,iBAAiBiK,WAG1D3kB,MAAKsgB,MAAQtO,SAASM,cAAc,OACpCtS,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKsgB,MAAM5S,MAAMmX,SAAW,SAG5B7kB,KAAKsgB,MAAMC,OAASvO,SAASM,cAAe,UAC5CtS,KAAKsgB,MAAMC,OAAO7S,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMC,OAGhC,IAAIuE,GAAW9S,SAASM,cAAe,MACvCwS,GAASpX,MAAMnC,MAAQ,MACvBuZ,EAASpX,MAAMqX,WAAc,OAC7BD,EAASpX,MAAMsX,QAAW,OAC1BF,EAASG,UAAa,mDACtBjlB,KAAKsgB,MAAMC,OAAOrO,YAAY4S,GAGhC9kB,KAAKsgB,MAAM5L,OAAS1C,SAASM,cAAe,OAC5CtS,KAAKsgB,MAAM5L,OAAOhH,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAM5L,OAAOhH,MAAM4W,OAAS,MACjCtkB,KAAKsgB,MAAM5L,OAAOhH,MAAM7F,KAAO,MAC/B7H,KAAKsgB,MAAM5L,OAAOhH,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM5L,OAGlC,IAAIQ,GAAKlV,KACLklB,EAAc,SAAUrb,GAAQqL,EAAGiQ,aAAatb,IAChDub,EAAe,SAAUvb,GAAQqL,EAAGmQ,cAAcxb,IAClDyb,EAAe,SAAUzb,GAAQqL,EAAGqQ,SAAS1b,IAC7C2b,EAAY,SAAU3b,GAAQqL,EAAGuQ,WAAW5b,GAGhDlJ,GAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,UAAWmF,WACpD/kB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,YAAa2E,GACtDvkB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,aAAc6E,GACvDzkB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,aAAc+E,GACvD3kB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,YAAaiF,GAGtDxlB,KAAK0a,iBAAiBxI,YAAYlS,KAAKsgB,QAWzCtf,EAAQkT,UAAUyR,QAAU,SAASrS,EAAOC,GAC1CvT,KAAKsgB,MAAM5S,MAAM4F,MAAQA,EACzBtT,KAAKsgB,MAAM5S,MAAM6F,OAASA,EAE1BvT,KAAK4lB,iBAMP5kB,EAAQkT,UAAU0R,cAAgB,WAChC5lB,KAAKsgB,MAAMC,OAAO7S,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMC,OAAO7S,MAAM6F,OAAS,OAEjCvT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAC5CxgB,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAG7C7lB,KAAKsgB,MAAM5L,OAAOhH,MAAM4F,MAAStT,KAAKsgB,MAAMC,OAAOC,YAAc,GAAU,MAM7Exf,EAAQkT,UAAU4R,eAAiB,WACjC,IAAK9lB,KAAKsgB,MAAM5L,SAAW1U,KAAKsgB,MAAM5L,OAAOqR,OAC3C,KAAM,wBAER/lB,MAAKsgB,MAAM5L,OAAOqR,OAAOC,QAO3BhlB,EAAQkT,UAAU+R,cAAgB,WAC3BjmB,KAAKsgB,MAAM5L,QAAW1U,KAAKsgB,MAAM5L,OAAOqR,QAE7C/lB,KAAKsgB,MAAM5L,OAAOqR,OAAOG,QAU3BllB,EAAQkT,UAAUiS,cAAgB,WAG9BnmB,KAAKqgB,QAD0D,MAA7DrgB,KAAK4a,eAAewL,OAAOpmB,KAAK4a,eAAe5U,OAAO,GAEtDqgB,WAAWrmB,KAAK4a,gBAAkB,IAChC5a,KAAKsgB,MAAMC,OAAOC,YAGP6F,WAAWrmB,KAAK4a,gBAK/B5a,KAAKygB,QAD0D,MAA7DzgB,KAAK6a,eAAeuL,OAAOpmB,KAAK6a,eAAe7U,OAAO,GAEtDqgB,WAAWrmB,KAAK6a,gBAAkB,KAC/B7a,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKsgB,MAAM5L,OAAOmR,cAGzCQ,WAAWrmB,KAAK6a,iBAoBnC7Z,EAAQkT,UAAUoS,kBAAoB,SAASC,GACjC1f,SAAR0f,IAImB1f,SAAnB0f,EAAIC,YAA6C3f,SAAjB0f,EAAIE,UACtCzmB,KAAKkc,OAAOwK,eAAeH,EAAIC,WAAYD,EAAIE,UAG5B5f,SAAjB0f,EAAII,UACN3mB,KAAKkc,OAAO0K,aAAaL,EAAII,UAG/B3mB,KAAKyiB,WASPzhB,EAAQkT,UAAU2S,kBAAoB,WACpC,GAAIN,GAAMvmB,KAAKkc,OAAO4K,gBAEtB,OADAP,GAAII,SAAW3mB,KAAKkc,OAAOkE,eACpBmG,GAMTvlB,EAAQkT,UAAU6S,UAAY,SAAStT,GAErCzT,KAAKoiB,gBAAgB3O,EAAMzT,KAAK0N,OAK9B1N,KAAKoc,WAFHpc,KAAKuiB,WAEWviB,KAAKuiB,WAAWuB,iBAIhB9jB,KAAK8jB,eAAe9jB,KAAKsY,WAI7CtY,KAAKgnB,iBAOPhmB,EAAQkT,UAAU6E,QAAU,SAAUtF,GACpCzT,KAAK+mB,UAAUtT,GACfzT,KAAKyiB,SAGDziB,KAAKinB,oBAAsBjnB,KAAKuiB,YAClCviB,KAAK8lB,kBAQT9kB,EAAQkT,UAAUD,WAAa,SAAU/E,GACvC,GAAIgY,GAAiBrgB,MAIrB,IAFA7G,KAAKimB,gBAEWpf,SAAZqI,EAAuB,CAkBzB,GAhBsBrI,SAAlBqI,EAAQoE,QAA2BtT,KAAKsT,MAAQpE,EAAQoE,OACrCzM,SAAnBqI,EAAQqE,SAA2BvT,KAAKuT,OAASrE,EAAQqE,QAErC1M,SAApBqI,EAAQiP,UAA2Bne,KAAK4a,eAAiB1L,EAAQiP,SAC7CtX,SAApBqI,EAAQkP,UAA2Bpe,KAAK6a,eAAiB3L,EAAQkP,SAEzCvX,SAAxBqI,EAAQmM,cAA+Brb,KAAKqb,YAAcnM,EAAQmM,aAC1CxU,SAAxBqI,EAAQoM,cAA+Btb,KAAKsb,YAAcpM,EAAQoM,aAC/CzU,SAAnBqI,EAAQ4L,SAA0B9a,KAAK8a,OAAS5L,EAAQ4L,QACrCjU,SAAnBqI,EAAQ6L,SAA0B/a,KAAK+a,OAAS7L,EAAQ6L,QACrClU,SAAnBqI,EAAQ8L,SAA0Bhb,KAAKgb,OAAS9L,EAAQ8L,QAEhCnU,SAAxBqI,EAAQgM,cAA+Blb,KAAKkb,YAAchM,EAAQgM,aAC1CrU,SAAxBqI,EAAQiM,cAA+Bnb,KAAKmb,YAAcjM,EAAQiM,aAC1CtU,SAAxBqI,EAAQkM,cAA+Bpb,KAAKob,YAAclM,EAAQkM,aAEhDvU,SAAlBqI,EAAQxB,MAAqB,CAC/B,GAAIyZ,GAAcnnB,KAAK2hB,gBAAgBzS,EAAQxB,MAC3B,MAAhByZ,IACFnnB,KAAK0N,MAAQyZ,GAGQtgB,SAArBqI,EAAQwM,WAA6B1b,KAAK0b,SAAWxM,EAAQwM,UACjC7U,SAA5BqI,EAAQuM,kBAAiCzb,KAAKyb,gBAAkBvM,EAAQuM,iBACjD5U,SAAvBqI,EAAQ0M,aAA6B5b,KAAK4b,WAAa1M,EAAQ0M,YAC3C/U,SAApBqI,EAAQkY,UAA6BpnB,KAAK8b,YAAc5M,EAAQkY,SAC9BvgB,SAAlCqI,EAAQmY,wBAAqCrnB,KAAKqnB,sBAAwBnY,EAAQmY,uBACtDxgB,SAA5BqI,EAAQyM,kBAAiC3b,KAAK2b,gBAAkBzM,EAAQyM,iBAC9C9U,SAA1BqI,EAAQ6M,gBAA+B/b,KAAK+b,cAAgB7M,EAAQ6M,eAEtClV,SAA9BqI,EAAQ8M,oBAAiChc,KAAKgc,kBAAoB9M,EAAQ8M,mBAC7CnV,SAA7BqI,EAAQ+M,mBAAiCjc,KAAKic,iBAAmB/M,EAAQ+M,kBAC1CpV,SAA/BqI,EAAQ+X,qBAAiCjnB,KAAKinB,mBAAqB/X,EAAQ+X,oBAErDpgB,SAAtBqI,EAAQmO,YAAyBrd,KAAK2iB,iBAAmBzT,EAAQmO,WAC3CxW,SAAtBqI,EAAQoO,YAAyBtd,KAAK6iB,iBAAmB3T,EAAQoO,WAEhDzW,SAAjBqI,EAAQwN,OAAoB1c,KAAKgjB,YAAc9T,EAAQwN,MACrC7V,SAAlBqI,EAAQyN,QAAqB3c,KAAKkjB,aAAehU,EAAQyN,OACxC9V,SAAjBqI,EAAQ0N,OAAoB5c,KAAKijB,YAAc/T,EAAQ0N,MACtC/V,SAAjBqI,EAAQ2N,OAAoB7c,KAAKojB,YAAclU,EAAQ2N,MACrChW,SAAlBqI,EAAQ4N,QAAqB9c,KAAKsjB,aAAepU,EAAQ4N,OACxCjW,SAAjBqI,EAAQ6N,OAAoB/c,KAAKqjB,YAAcnU,EAAQ6N,MACtClW,SAAjBqI,EAAQ8N,OAAoBhd,KAAKwjB,YAActU,EAAQ8N,MACrCnW,SAAlBqI,EAAQ+N,QAAqBjd,KAAK0jB,aAAexU,EAAQ+N,OACxCpW,SAAjBqI,EAAQgO,OAAoBld,KAAKyjB,YAAcvU,EAAQgO,MAClCrW,SAArBqI,EAAQiO,WAAwBnd,KAAK4jB,gBAAkB1U,EAAQiO,UAC1CtW,SAArBqI,EAAQkO,WAAwBpd,KAAK6jB,gBAAkB3U,EAAQkO,UAEpCvW,SAA3BqI,EAAQgY,iBAA8BA,EAAiBhY,EAAQgY,gBAE5CrgB,SAAnBqgB,GACFlnB,KAAKkc,OAAOwK,eAAeQ,EAAeV,WAAYU,EAAeT,UACrEzmB,KAAKkc,OAAO0K,aAAaM,EAAeP,YAGxC3mB,KAAKkc,OAAOwK,eAAe,EAAK,IAChC1mB,KAAKkc,OAAO0K,aAAa,MAI7B5mB,KAAK0gB,oBAAoBxR,GAAWA,EAAQyR,iBAE5C3gB,KAAK2lB,QAAQ3lB,KAAKsT,MAAOtT,KAAKuT,QAG1BvT,KAAKsY,WACPtY,KAAK+Y,QAAQ/Y,KAAKsY,WAIhBtY,KAAKinB,oBAAsBjnB,KAAKuiB,YAClCviB,KAAK8lB,kBAOT9kB,EAAQkT,UAAUuO,OAAS,WACzB,GAAwB5b,SAApB7G,KAAKoc,WACP,KAAM,mCAGRpc,MAAK4lB,gBACL5lB,KAAKmmB,gBACLnmB,KAAKsnB,gBACLtnB,KAAKunB,eACLvnB,KAAKwnB,cAEDxnB,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC/BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,QAC7B1hB,KAAKynB,kBAEEznB,KAAK0N,QAAU1M,EAAQua,MAAMkG,KACpCzhB,KAAK0nB,kBAEE1nB,KAAK0N,QAAU1M,EAAQua,MAAM2F,KACpClhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAC7BphB,KAAK2nB,iBAIL3nB,KAAK4nB,iBAGP5nB,KAAK6nB,cACL7nB,KAAK8nB,iBAMP9mB,EAAQkT,UAAUqT,aAAe,WAC/B,GAAIhH,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIE,UAAU,EAAG,EAAG1H,EAAOjN,MAAOiN,EAAOhN,SAO3CvS,EAAQkT,UAAU4T,cAAgB,WAChC,GAAIrV,EAEJ,IAAIzS,KAAK0N,QAAU1M,EAAQua,MAAM+F,UAC/BthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,QAAS,CAEtC,GAEI2G,GAAUC,EAFVC,EAAmC,IAAzBpoB,KAAKsgB,MAAME,WAGrBxgB,MAAK0N,QAAU1M,EAAQua,MAAMgG,SAC/B2G,EAAWE,EAAU,EACrBD,EAAWC,EAAU,EAAc,EAAVA,IAGzBF,EAAW,GACXC,EAAW,GAGb,IAAI5U,GAAS/O,KAAKJ,IAA8B,IAA1BpE,KAAKsgB,MAAMuF,aAAqB,KAClD5d,EAAMjI,KAAK2a,OACX0N,EAAQroB,KAAKsgB,MAAME,YAAcxgB,KAAK2a,OACtC9S,EAAOwgB,EAAQF,EACf7D,EAASrc,EAAMsL,EAGrB,GAAIgN,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAI5B,IAHAD,EAAIO,UAAY,EAChBP,EAAIQ,KAAO,aAEPvoB,KAAK0N,QAAU1M,EAAQua,MAAM+F,SAAU,CAEzC,GAAIkH,GAAO,EACPC,EAAOlV,CACX,KAAKd,EAAI+V,EAAUC,EAAJhW,EAAUA,IAAK,CAC5B,GAAIpE,IAAKoE,EAAI+V,IAASC,EAAOD,GAGzBnb,EAAU,IAAJgB,EACN9C,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,EAElC0a,GAAIY,YAAcpd,EAClBwc,EAAIa,YACJb,EAAIc,OAAOhhB,EAAMI,EAAMwK,GACvBsV,EAAIe,OAAOT,EAAOpgB,EAAMwK,GACxBsV,EAAIlH,SAGNkH,EAAIY,YAAe3oB,KAAKud,UACxBwK,EAAIgB,WAAWlhB,EAAMI,EAAKkgB,EAAU5U,GAiBtC,GAdIvT,KAAK0N,QAAU1M,EAAQua,MAAMgG,UAE/BwG,EAAIY,YAAe3oB,KAAKud,UACxBwK,EAAIiB,UAAahpB,KAAKyd,SACtBsK,EAAIa,YACJb,EAAIc,OAAOhhB,EAAMI,GACjB8f,EAAIe,OAAOT,EAAOpgB,GAClB8f,EAAIe,OAAOT,EAAQF,EAAWD,EAAU5D,GACxCyD,EAAIe,OAAOjhB,EAAMyc,GACjByD,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,UAGF7gB,KAAK0N,QAAU1M,EAAQua,MAAM+F,UAC/BthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,QAAS,CAEtC,GAAI2H,GAAc,EACdC,EAAO,GAAI5nB,GAAWvB,KAAKmd,SAAUnd,KAAKod,UAAWpd,KAAKod,SAASpd,KAAKmd,UAAU,GAAG,EAKzF,KAJAgM,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAKmd,UAC3BgM,EAAKE,QAECF,EAAK7Y,OACXmC,EAAI6R,GAAU6E,EAAKC,aAAeppB,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY5J,EAErFwU,EAAIa,YACJb,EAAIc,OAAOhhB,EAAOqhB,EAAazW,GAC/BsV,EAAIe,OAAOjhB,EAAM4K,GACjBsV,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASL,EAAKC,aAAcvhB,EAAO,EAAIqhB,EAAazW,GAExD0W,EAAKE,MAGPtB,GAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,KACnB,IAAIvW,GAAQhT,KAAKsb,WACjByM,GAAIyB,SAASxW,EAAOqV,EAAO/D,EAAStkB,KAAK2a,UAO7C3Z,EAAQkT,UAAU8S,cAAgB,WAGhC,GAFAhnB,KAAKsgB,MAAM5L,OAAOuQ,UAAY,GAE1BjlB,KAAKuiB,WAAY,CACnB,GAAIrT,IACFua,QAAWzpB,KAAKqnB,uBAEdtB,EAAS,GAAIzkB,GAAOtB,KAAKsgB,MAAM5L,OAAQxF,EAC3ClP,MAAKsgB,MAAM5L,OAAOqR,OAASA,EAG3B/lB,KAAKsgB,MAAM5L,OAAOhH,MAAMsX,QAAU,OAGlCe,EAAO2D,UAAU1pB,KAAKuiB,WAAW1K,QACjCkO,EAAO4D,gBAAgB3pB,KAAKgc,kBAG5B,IAAI9G,GAAKlV,KACL4pB,EAAW,WACb,GAAIlhB,GAAQqd,EAAO8D,UAEnB3U,GAAGqN,WAAWuH,YAAYphB,GAC1BwM,EAAGkH,WAAalH,EAAGqN,WAAWuB,iBAE9B5O,EAAGuN,SAELsD,GAAOgE,oBAAoBH,OAG3B5pB,MAAKsgB,MAAM5L,OAAOqR,OAASlf,QAO/B7F,EAAQkT,UAAUoT,cAAgB,WACEzgB,SAA7B7G,KAAKsgB,MAAM5L,OAAOqR,QACrB/lB,KAAKsgB,MAAM5L,OAAOqR,OAAOtD,UAQ7BzhB,EAAQkT,UAAU2T,YAAc,WAC9B,GAAI7nB,KAAKuiB,WAAY,CACnB,GAAIhC,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIQ,KAAO,aACXR,EAAIiC,UAAY,OAChBjC,EAAIiB,UAAY,OAChBjB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,KAEnB,IAAI/W,GAAIxS,KAAK2a,OACTlI,EAAIzS,KAAK2a,MACboN,GAAIyB,SAASxpB,KAAKuiB,WAAW0H,WAAa,KAAOjqB,KAAKuiB,WAAW2H,mBAAoB1X,EAAGC,KAQ5FzR,EAAQkT,UAAUsT,YAAc,WAC9B,GAEE2C,GAAMC,EAAIjB,EAAMkB,EAChBC,EAAMC,EAAOC,EAAOC,EACpBC,EAAQzX,EAASC,EACjByX,EAAQC,EALNrK,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAQ1BD,GAAIQ,KAAO,GAAKvoB,KAAKkc,OAAOkE,eAAiB,UAG7C,IAAIyK,GAAW,KAAQ7qB,KAAKuE,MAAMiO,EAC9BsY,EAAW,KAAQ9qB,KAAKuE,MAAMkO,EAC9BsY,EAAa,EAAI/qB,KAAKkc,OAAOkE,eAC7B4K,EAAWhrB,KAAKkc,OAAO4K,iBAAiBN,UAU5C,KAPAuB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAKkjB,aACnBiG,EAAO,GAAI5nB,GAAWvB,KAAK0c,KAAM1c,KAAK4c,KAAM5c,KAAK2c,MAAO0N,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAK0c,MAC3ByM,EAAKE,QAECF,EAAK7Y,OAAO,CAClB,GAAIkC,GAAI2W,EAAKC,YAETppB,MAAK0b,UACPyO,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAM7c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAM/c,KAAKgd,OACxD+K,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,WAGJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAM7c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAKgO,EAAU7qB,KAAKgd,OACjE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAM/c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAK8N,EAAU7qB,KAAKgd,OACjE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,UAGN2J,EAAShmB,KAAK+a,IAAIyL,GAAY,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,KACpDuN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGgY,EAAOxqB,KAAKgd,OAClDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBe,EAAK7X,GAAKsY,GAEHvmB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS,KAAOxpB,KAAKkb,YAAYiO,EAAKC,cAAgB,KAAMkB,EAAK9X,EAAG8X,EAAK7X,GAE7E0W,EAAKE,OAWP,IAPAtB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAKsjB,aACnB6F,EAAO,GAAI5nB,GAAWvB,KAAK6c,KAAM7c,KAAK+c,KAAM/c,KAAK8c,MAAOuN,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAK6c,MAC3BsM,EAAKE,QAECF,EAAK7Y,OACPtQ,KAAK0b,UACPyO,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAMyM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAMuM,EAAKC,aAAcppB,KAAKgd,OACxE+K,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,WAGJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAMyM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAKoO,EAAU3B,EAAKC,aAAcppB,KAAKgd,OACjF+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAMuM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAKkO,EAAU3B,EAAKC,aAAcppB,KAAKgd,OACjF+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,UAGN0J,EAAS/lB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD0N,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOpB,EAAKC,aAAcppB,KAAKgd,OAClExY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBe,EAAK7X,GAAKsY,GAEHvmB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS,KAAOxpB,KAAKmb,YAAYgO,EAAKC,cAAgB,KAAMkB,EAAK9X,EAAG8X,EAAK7X,GAE7E0W,EAAKE,MAaP,KATAtB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAK0jB,aACnByF,EAAO,GAAI5nB,GAAWvB,KAAKgd,KAAMhd,KAAKkd,KAAMld,KAAKid,MAAOoN,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAKgd,MAC3BmM,EAAKE,OAEPkB,EAAS/lB,KAAK+a,IAAIyL,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD4N,EAAShmB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,MAC7CoM,EAAK7Y,OAEX6Z,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOrB,EAAKC,eAC1DrB,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOqB,EAAK3X,EAAIuY,EAAYZ,EAAK1X,GACrCsV,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASxpB,KAAKob,YAAY+N,EAAKC,cAAgB,IAAKe,EAAK3X,EAAI,EAAG2X,EAAK1X,GAEzE0W,EAAKE,MAEPtB,GAAIO,UAAY,EAChB6B,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKkd,OACxD6K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhBqC,EAAS3qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK6c,KAAM7c,KAAKgd,OACpE4N,EAAS5qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK6c,KAAM7c,KAAKgd,OACpE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAO8B,EAAOnY,EAAGmY,EAAOlY,GAC5BsV,EAAIe,OAAO8B,EAAOpY,EAAGoY,EAAOnY,GAC5BsV,EAAIlH,SAEJ8J,EAAS3qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK+c,KAAM/c,KAAKgd,OACpE4N,EAAS5qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK+c,KAAM/c,KAAKgd,OACpE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAO8B,EAAOnY,EAAGmY,EAAOlY,GAC5BsV,EAAIe,OAAO8B,EAAOpY,EAAGoY,EAAOnY,GAC5BsV,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhB6B,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK6c,KAAM7c,KAAKgd,OAClEoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK+c,KAAM/c,KAAKgd,OAChE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK6c,KAAM7c,KAAKgd,OAClEoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK+c,KAAM/c,KAAKgd,OAChE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,QAGJ,IAAI/F,GAAS9a,KAAK8a,MACdA,GAAO9U,OAAS,IAClBkN,EAAU,GAAMlT,KAAKuE,MAAMkO,EAC3B8X,GAASvqB,KAAK0c,KAAO1c,KAAK4c,MAAQ,EAClC4N,EAAShmB,KAAK+a,IAAIyL,GAAY,EAAKhrB,KAAK6c,KAAO3J,EAASlT,KAAK+c,KAAO7J,EACpEoX,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OACtDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ/kB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS1O,EAAQwP,EAAK9X,EAAG8X,EAAK7X,GAIpC,IAAIsI,GAAS/a,KAAK+a,MACdA,GAAO/U,OAAS,IAClBiN,EAAU,GAAMjT,KAAKuE,MAAMiO,EAC3B+X,EAAS/lB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK0c,KAAOzJ,EAAUjT,KAAK4c,KAAO3J,EACtEuX,GAASxqB,KAAK6c,KAAO7c,KAAK+c,MAAQ,EAClCuN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OACtDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ/kB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASzO,EAAQuP,EAAK9X,EAAG8X,EAAK7X,GAIpC,IAAIuI,GAAShb,KAAKgb,MACdA,GAAOhV,OAAS,IAClB0kB,EAAS,GACTH,EAAS/lB,KAAK+a,IAAIyL,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD4N,EAAShmB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,KACrD0N,GAASzqB,KAAKgd,KAAOhd,KAAKkd,MAAQ,EAClCoN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOC,IACrD1C,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASxO,EAAQsP,EAAK9X,EAAIkY,EAAQJ,EAAK7X,KAU/CzR,EAAQkT,UAAUwU,SAAW,SAASuC,EAAGC,EAAGC,GAC1C,GAAIC,GAAGC,EAAGC,EAAGC,EAAGC,EAAIC,CAMpB,QAJAF,EAAIJ,EAAID,EACRM,EAAKhnB,KAAKgB,MAAMylB,EAAE,IAClBQ,EAAIF,GAAK,EAAI/mB,KAAKknB,IAAMT,EAAE,GAAM,EAAK,IAE7BO,GACN,IAAK,GAAGJ,EAAIG,EAAGF,EAAII,EAAGH,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAIK,EAAGJ,EAAIE,EAAGD,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAI,EAAGC,EAAIE,EAAGD,EAAIG,CAAG,MAC7B,KAAK,GAAGL,EAAI,EAAGC,EAAII,EAAGH,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIK,EAAGJ,EAAI,EAAGC,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIG,EAAGF,EAAI,EAAGC,EAAIG,CAAG,MAE7B,SAASL,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAG7B,MAAO,OAASjgB,SAAW,IAAF+f,GAAS,IAAM/f,SAAW,IAAFggB,GAAS,IAAMhgB,SAAW,IAAFigB,GAAS,KAQpFtqB,EAAQkT,UAAUuT,gBAAkB,WAClC,GAEE7U,GAAOyV,EAAOpgB,EAAK0jB,EACnB9lB,EACA+lB,EAAgB5C,EAAWL,EAAaL,EACxChc,EAAGC,EAAGC,EAAGqf,EALPtL,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAO1B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAE9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAGye,OACrEtkB,MAAKoc,WAAWvW,GAAGkmB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY9lB,UAAY8lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGa,GAC3B,MAAOA,GAAEslB,KAAOnmB,EAAEmmB,KAIpB,IAFA/rB,KAAKoc,WAAWnF,KAAK+U,GAEjBhsB,KAAK0N,QAAU1M,EAAQua,MAAMmG,SAC/B,IAAK7b,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAMtC,GALA+M,EAAQ5S,KAAKoc,WAAWvW,GACxBwiB,EAAQroB,KAAKoc,WAAWvW,GAAG0e,WAC3Btc,EAAQjI,KAAKoc,WAAWvW,GAAG2e,SAC3BmH,EAAQ3rB,KAAKoc,WAAWvW,GAAG4e,WAEb5d,SAAV+L,GAAiC/L,SAAVwhB,GAA+BxhB,SAARoB,GAA+BpB,SAAV8kB,EAAqB,CAE1F,GAAI3rB,KAAK6b,gBAAkB7b,KAAK4b,WAAY,CAK1C,GAAIqQ,GAAQ5qB,EAAQ6qB,SAASP,EAAMvH,MAAOxR,EAAMwR,OAC5C+H,EAAQ9qB,EAAQ6qB,SAASjkB,EAAImc,MAAOiE,EAAMjE,OAC1CgI,EAAe/qB,EAAQgrB,aAAaJ,EAAOE,GAC3CrmB,EAAMsmB,EAAapmB,QAGvB4lB,GAAkBQ,EAAalO,EAAI,MAGnC0N,IAAiB,CAGfA,IAEFC,GAAQjZ,EAAMA,MAAMsL,EAAImK,EAAMzV,MAAMsL,EAAIjW,EAAI2K,MAAMsL,EAAIyN,EAAM/Y,MAAMsL,GAAK,EACvE5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eACnDxP,EAAI,EAEAvM,KAAK4b,YACPpP,EAAIhI,KAAKL,IAAI,EAAKioB,EAAa5Z,EAAI1M,EAAO,EAAG,GAC7CkjB,EAAYhpB,KAAK0oB,SAASpc,EAAGC,EAAGC,GAChCmc,EAAcK,IAGdxc,EAAI,EACJwc,EAAYhpB,KAAK0oB,SAASpc,EAAGC,EAAGC,GAChCmc,EAAc3oB,KAAKud,aAIrByL,EAAY,OACZL,EAAc3oB,KAAKud,WAErB+K,EAAY,GAEZP,EAAIO,UAAYA,EAChBP,EAAIiB,UAAYA,EAChBjB,EAAIY,YAAcA,EAClBZ,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAOT,EAAMhE,OAAO7R,EAAG6V,EAAMhE,OAAO5R,GACxCsV,EAAIe,OAAO6C,EAAMtH,OAAO7R,EAAGmZ,EAAMtH,OAAO5R,GACxCsV,EAAIe,OAAO7gB,EAAIoc,OAAO7R,EAAGvK,EAAIoc,OAAO5R,GACpCsV,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,cAKR,KAAKhb,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IACtC+M,EAAQ5S,KAAKoc,WAAWvW,GACxBwiB,EAAQroB,KAAKoc,WAAWvW,GAAG0e,WAC3Btc,EAAQjI,KAAKoc,WAAWvW,GAAG2e,SAEb3d,SAAV+L,IAEA0V,EADEtoB,KAAKyb,gBACK,GAAK7I,EAAMwR,MAAMlG,EAGjB,IAAMle,KAAKmc,IAAI+B,EAAIle,KAAKkc,OAAOkE,iBAIjCvZ,SAAV+L,GAAiC/L,SAAVwhB,IAEzBwD,GAAQjZ,EAAMA,MAAMsL,EAAImK,EAAMzV,MAAMsL,GAAK,EACzC5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAEnDgM,EAAIO,UAAYA,EAChBP,EAAIY,YAAc3oB,KAAK0oB,SAASpc,EAAG,EAAG,GACtCyb,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAOT,EAAMhE,OAAO7R,EAAG6V,EAAMhE,OAAO5R,GACxCsV,EAAIlH,UAGQha,SAAV+L,GAA+B/L,SAARoB,IAEzB4jB,GAAQjZ,EAAMA,MAAMsL,EAAIjW,EAAI2K,MAAMsL,GAAK,EACvC5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAEnDgM,EAAIO,UAAYA,EAChBP,EAAIY,YAAc3oB,KAAK0oB,SAASpc,EAAG,EAAG,GACtCyb,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAO7gB,EAAIoc,OAAO7R,EAAGvK,EAAIoc,OAAO5R,GACpCsV,EAAIlH,YAWZ7f,EAAQkT,UAAU0T,eAAiB,WACjC,GAEI/hB,GAFA0a,EAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAC9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAGye,OACrEtkB,MAAKoc,WAAWvW,GAAGkmB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY9lB,UAAY8lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGa,GAC3B,MAAOA,GAAEslB,KAAOnmB,EAAEmmB,KAEpB/rB,MAAKoc,WAAWnF,KAAK+U,EAGrB,IAAI5D,GAAmC,IAAzBpoB,KAAKsgB,MAAME,WACzB,KAAK3a,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAI+M,GAAQ5S,KAAKoc,WAAWvW,EAE5B,IAAI7F,KAAK0N,QAAU1M,EAAQua,MAAM8F,QAAS,CAGxC,GAAI8I,GAAOnqB,KAAKue,eAAe3L,EAAM0R,OACrCyD,GAAIO,UAAY,EAChBP,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOlW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIlH,SAIN,GAAI9N,EAEFA,GADE/S,KAAK0N,QAAU1M,EAAQua,MAAMgG,QACxB6G,EAAQ,EAAI,EAAEA,GAAWxV,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAGpFiL,CAGT,IAAIkE,EAEFA,GADEtsB,KAAKyb,gBACE1I,GAAQH,EAAMwR,MAAMlG,EAGpBnL,IAAS/S,KAAKmc,IAAI+B,EAAIle,KAAKkc,OAAOkE,gBAEhC,EAATkM,IACFA,EAAS,EAGX,IAAIjf,GAAK9B,EAAOwV,CACZ/gB,MAAK0N,QAAU1M,EAAQua,MAAM+F,UAE/BjU,EAAqE,KAA9D,GAAKuF,EAAMA,MAAMtO,MAAQtE,KAAKmd,UAAYnd,KAAKuE,MAAMD,OAC5DiH,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAE7BrN,KAAK0N,QAAU1M,EAAQua,MAAMgG,SACpChW,EAAQvL,KAAKyd,SACbsD,EAAc/gB,KAAK0d,iBAInBrQ,EAA+E,KAAxE,GAAKuF,EAAMA,MAAMsL,EAAIle,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAC9DxQ,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAItC0a,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzd,EAChBwc,EAAIa,YACJb,EAAIwE,IAAI3Z,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,EAAG6Z,EAAQ,EAAW,EAAR9nB,KAAKgoB,IAAM,GAC9DzE,EAAInH,OACJmH,EAAIlH,YAQR7f,EAAQkT,UAAUyT,eAAiB,WACjC,GAEI9hB,GAAG4mB,EAAGC,EAASC,EAFfpM,EAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAC9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAGye,OACrEtkB,MAAKoc,WAAWvW,GAAGkmB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY9lB,UAAY8lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGa,GAC3B,MAAOA,GAAEslB,KAAOnmB,EAAEmmB,KAEpB/rB,MAAKoc,WAAWnF,KAAK+U,EAGrB,IAAIY,GAAS5sB,KAAKqd,UAAY,EAC1BwP,EAAS7sB,KAAKsd,UAAY,CAC9B,KAAKzX,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAGIwH,GAAK9B,EAAOwV,EAHZnO,EAAQ5S,KAAKoc,WAAWvW,EAIxB7F,MAAK0N,QAAU1M,EAAQua,MAAM4F,UAE/B9T,EAAqE,KAA9D,GAAKuF,EAAMA,MAAMtO,MAAQtE,KAAKmd,UAAYnd,KAAKuE,MAAMD,OAC5DiH,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAE7BrN,KAAK0N,QAAU1M,EAAQua,MAAM6F,SACpC7V,EAAQvL,KAAKyd,SACbsD,EAAc/gB,KAAK0d,iBAInBrQ,EAA+E,KAAxE,GAAKuF,EAAMA,MAAMsL,EAAIle,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAC9DxQ,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAIlCrN,KAAK0N,QAAU1M,EAAQua,MAAM6F,UAC/BwL,EAAU5sB,KAAKqd,UAAY,IAAOzK,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY,GAAM,IAC/G0P,EAAU7sB,KAAKsd,UAAY,IAAO1K,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY,GAAM,IAIjH,IAAIjI,GAAKlV,KACLwe,EAAU5L,EAAMA,MAChB3K,IACD2K,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KAElEoG,IACD1R,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,OAInE/U,GAAIW,QAAQ,SAAUmb,GACpBA,EAAIM,OAASnP,EAAGqJ,eAAewF,EAAInR,SAErC0R,EAAO1b,QAAQ,SAAUmb,GACvBA,EAAIM,OAASnP,EAAGqJ,eAAewF,EAAInR,QAIrC,IAAIka,KACDH,QAAS1kB,EAAK8kB,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAC7D+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,QAKnG,KAHAA,EAAMka,SAAWA,EAGZL,EAAI,EAAGA,EAAIK,EAAS9mB,OAAQymB,IAAK,CACpCC,EAAUI,EAASL,EACnB,IAAIQ,GAAcjtB,KAAK0e,2BAA2BgO,EAAQK,OAC1DL,GAAQX,KAAO/rB,KAAKyb,gBAAkBwR,EAAYjnB,UAAYinB,EAAY/O,EAwB5E,IAjBA4O,EAAS7V,KAAK,SAAUrR,EAAGa,GACzB,GAAIymB,GAAOzmB,EAAEslB,KAAOnmB,EAAEmmB,IACtB,OAAImB,GAAaA,EAGbtnB,EAAE+mB,UAAY1kB,EAAY,EAC1BxB,EAAEkmB,UAAY1kB,EAAY,GAGvB,IAIT8f,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzd,EAEXkhB,EAAI,EAAGA,EAAIK,EAAS9mB,OAAQymB,IAC/BC,EAAUI,EAASL,GACnBE,EAAUD,EAAQC,QAClB5E,EAAIa,YACJb,EAAIc,OAAO8D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAInH,OACJmH,EAAIlH,YAUV7f,EAAQkT,UAAUwT,gBAAkB,WAClC,GAEE9U,GAAO/M,EAFL0a,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAG1B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAE9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,EAc9B,IAVIrkB,KAAKoc,WAAWpW,OAAS,IAC3B4M,EAAQ5S,KAAKoc,WAAW,GAExB2L,EAAIO,UAAY,EAChBP,EAAIY,YAAc,OAClBZ,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,IAIrC5M,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IACtC+M,EAAQ5S,KAAKoc,WAAWvW,GACxBkiB,EAAIe,OAAOlW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,EAItCzS,MAAKoc,WAAWpW,OAAS,GAC3B+hB,EAAIlH,WASR7f,EAAQkT,UAAUiR,aAAe,SAAStb,GAWxC,GAVAA,EAAQA,GAAS/B,OAAO+B,MAIpB7J,KAAKmtB,gBACPntB,KAAKotB,WAAWvjB,GAIlB7J,KAAKmtB,eAAiBtjB,EAAMwjB,MAAyB,IAAhBxjB,EAAMwjB,MAAiC,IAAjBxjB,EAAMyjB,OAC5DttB,KAAKmtB,gBAAmBntB,KAAKutB,UAAlC,CAGAvtB,KAAKwtB,YAAc7P,EAAU9T,GAC7B7J,KAAKytB,YAAc3P,EAAUjU,GAE7B7J,KAAK0tB,WAAa,GAAI9oB,MAAK5E,KAAKqQ,OAChCrQ,KAAK2tB,SAAW,GAAI/oB,MAAK5E,KAAKsQ,KAC9BtQ,KAAK4tB,iBAAmB5tB,KAAKkc,OAAO4K,iBAEpC9mB,KAAKsgB,MAAM5S,MAAMmgB,OAAS,MAK1B,IAAI3Y,GAAKlV,IACTA,MAAK8tB,YAAc,SAAUjkB,GAAQqL,EAAG6Y,aAAalkB,IACrD7J,KAAKguB,UAAc,SAAUnkB,GAAQqL,EAAGkY,WAAWvjB,IACnDlJ,EAAKuI,iBAAiB8I,SAAU,YAAakD,EAAG4Y,aAChDntB,EAAKuI,iBAAiB8I,SAAU,UAAWkD,EAAG8Y,WAC9CrtB,EAAKiJ,eAAeC,KAStB7I,EAAQkT,UAAU6Z,aAAe,SAAUlkB,GACzCA,EAAQA,GAAS/B,OAAO+B,KAGxB,IAAIokB,GAAQ5H,WAAW1I,EAAU9T,IAAU7J,KAAKwtB,YAC5CU,EAAQ7H,WAAWvI,EAAUjU,IAAU7J,KAAKytB,YAE5CU,EAAgBnuB,KAAK4tB,iBAAiBpH,WAAayH,EAAQ,IAC3DG,EAAcpuB,KAAK4tB,iBAAiBnH,SAAWyH,EAAQ,IAEvDG,EAAY,EACZC,EAAY9pB,KAAK4a,IAAIiP,EAAY,IAAM,EAAI7pB,KAAKgoB,GAIhDhoB,MAAKknB,IAAIlnB,KAAK4a,IAAI+O,IAAkBG,IACtCH,EAAgB3pB,KAAK+pB,MAAOJ,EAAgB3pB,KAAKgoB,IAAOhoB,KAAKgoB,GAAK,MAEhEhoB,KAAKknB,IAAIlnB,KAAK+a,IAAI4O,IAAkBG,IACtCH,GAAiB3pB,KAAK+pB,MAAOJ,EAAe3pB,KAAKgoB,GAAK,IAAQ,IAAOhoB,KAAKgoB,GAAK,MAI7EhoB,KAAKknB,IAAIlnB,KAAK4a,IAAIgP,IAAgBE,IACpCF,EAAc5pB,KAAK+pB,MAAOH,EAAc5pB,KAAKgoB,IAAOhoB,KAAKgoB,IAEvDhoB,KAAKknB,IAAIlnB,KAAK+a,IAAI6O,IAAgBE,IACpCF,GAAe5pB,KAAK+pB,MAAOH,EAAa5pB,KAAKgoB,GAAK,IAAQ,IAAOhoB,KAAKgoB,IAGxExsB,KAAKkc,OAAOwK,eAAeyH,EAAeC,GAC1CpuB,KAAKyiB,QAGL,IAAI+L,GAAaxuB,KAAK6mB,mBACtB7mB,MAAKyuB,KAAK,uBAAwBD,GAElC7tB,EAAKiJ,eAAeC,IAStB7I,EAAQkT,UAAUkZ,WAAa,SAAUvjB,GACvC7J,KAAKsgB,MAAM5S,MAAMmgB,OAAS,OAC1B7tB,KAAKmtB,gBAAiB,EAGtBxsB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAK8tB,aACrDntB,EAAK+I,oBAAoBsI,SAAU,UAAahS,KAAKguB,WACrDrtB,EAAKiJ,eAAeC,IAOtB7I,EAAQkT,UAAUuR,WAAa,SAAU5b,GACvC,GAAI4P,GAAQ,IACRiV,EAAe1uB,KAAKsgB,MAAM1Y,wBAC1B+mB,EAAShR,EAAU9T,GAAS6kB,EAAa7mB,KACzC+mB,EAAS9Q,EAAUjU,GAAS6kB,EAAazmB,GAE7C,IAAKjI,KAAK8b,YAAV,CASA,GALI9b,KAAK6uB,gBACPvU,aAAata,KAAK6uB,gBAIhB7uB,KAAKmtB,eAEP,WADAntB,MAAK8uB,cAIP,IAAI9uB,KAAKonB,SAAWpnB,KAAKonB,QAAQ2H,UAAW,CAE1C,GAAIA,GAAY/uB,KAAKgvB,iBAAiBL,EAAQC,EAC1CG,KAAc/uB,KAAKonB,QAAQ2H,YAEzBA,EACF/uB,KAAKivB,aAAaF,GAGlB/uB,KAAK8uB,oBAIN,CAEH,GAAI5Z,GAAKlV,IACTA,MAAK6uB,eAAiBtU,WAAW,WAC/BrF,EAAG2Z,eAAiB,IAGpB,IAAIE,GAAY7Z,EAAG8Z,iBAAiBL,EAAQC,EACxCG,IACF7Z,EAAG+Z,aAAaF,IAEjBtV,MAOPzY,EAAQkT,UAAUmR,cAAgB,SAASxb,GACzC7J,KAAKutB,WAAY,CAEjB,IAAIrY,GAAKlV,IACTA,MAAKkvB,YAAc,SAAUrlB,GAAQqL,EAAGia,aAAatlB,IACrD7J,KAAKovB,WAAc,SAAUvlB,GAAQqL,EAAGma,YAAYxlB,IACpDlJ,EAAKuI,iBAAiB8I,SAAU,YAAakD,EAAGga,aAChDvuB,EAAKuI,iBAAiB8I,SAAU,WAAYkD,EAAGka,YAE/CpvB,KAAKmlB,aAAatb,IAMpB7I,EAAQkT,UAAUib,aAAe,SAAStlB,GACxC7J,KAAK+tB,aAAalkB,IAMpB7I,EAAQkT,UAAUmb,YAAc,SAASxlB,GACvC7J,KAAKutB,WAAY,EAEjB5sB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAKkvB,aACrDvuB,EAAK+I,oBAAoBsI,SAAU,WAAchS,KAAKovB,YAEtDpvB,KAAKotB,WAAWvjB,IASlB7I,EAAQkT,UAAUqR,SAAW,SAAS1b,GAC/BA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAIylB,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAW,IAChB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAO,GAMpBF,EAAO,CACT,GAAIG,GAAYzvB,KAAKkc,OAAOkE,eACxBsP,EAAYD,GAAa,EAAIH,EAAQ,GAEzCtvB,MAAKkc,OAAO0K,aAAa8I,GACzB1vB,KAAKyiB,SAELziB,KAAK8uB,eAIP,GAAIN,GAAaxuB,KAAK6mB,mBACtB7mB,MAAKyuB,KAAK,uBAAwBD,GAKlC7tB,EAAKiJ,eAAeC,IAUtB7I,EAAQkT,UAAUyb,gBAAkB,SAAU/c,EAAOgd,GAKnD,QAASC,GAAMrd,GACb,MAAOA,GAAI,EAAI,EAAQ,EAAJA,EAAQ,GAAK,EALlC,GAAI5M,GAAIgqB,EAAS,GACfnpB,EAAImpB,EAAS,GACbnvB,EAAImvB,EAAS,GAMXE,EAAKD,GAAMppB,EAAE+L,EAAI5M,EAAE4M,IAAMI,EAAMH,EAAI7M,EAAE6M,IAAMhM,EAAEgM,EAAI7M,EAAE6M,IAAMG,EAAMJ,EAAI5M,EAAE4M,IACrEud,EAAKF,GAAMpvB,EAAE+R,EAAI/L,EAAE+L,IAAMI,EAAMH,EAAIhM,EAAEgM,IAAMhS,EAAEgS,EAAIhM,EAAEgM,IAAMG,EAAMJ,EAAI/L,EAAE+L,IACrEwd,EAAKH,GAAMjqB,EAAE4M,EAAI/R,EAAE+R,IAAMI,EAAMH,EAAIhS,EAAEgS,IAAM7M,EAAE6M,EAAIhS,EAAEgS,IAAMG,EAAMJ,EAAI/R,EAAE+R,GAGzE,SAAc,GAANsd,GAAiB,GAANC,GAAWD,GAAMC,GAC3B,GAANA,GAAiB,GAANC,GAAWD,GAAMC,GACtB,GAANF,GAAiB,GAANE,GAAWF,GAAME,IAUjChvB,EAAQkT,UAAU8a,iBAAmB,SAAUxc,EAAGC,GAChD,GAAI5M,GACFoqB,EAAU,IACVlB,EAAY,KACZmB,EAAmB,KACnBC,EAAc,KACdpD,EAAS,GAAI3rB,GAAQoR,EAAGC,EAE1B,IAAIzS,KAAK0N,QAAU1M,EAAQua,MAAM2F,KAC/BlhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAE7B,IAAKvb,EAAI7F,KAAKoc,WAAWpW,OAAS,EAAGH,GAAK,EAAGA,IAAK,CAChDkpB,EAAY/uB,KAAKoc,WAAWvW,EAC5B,IAAIinB,GAAYiC,EAAUjC,QAC1B,IAAIA,EACF,IAAK,GAAIvgB,GAAIugB,EAAS9mB,OAAS,EAAGuG,GAAK,EAAGA,IAAK,CAE7C,GAAImgB,GAAUI,EAASvgB,GACnBogB,EAAUD,EAAQC,QAClByD,GAAazD,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,QAC9DgM,GAAa1D,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAClE,IAAIrkB,KAAK2vB,gBAAgB5C,EAAQqD,IAC/BpwB,KAAK2vB,gBAAgB5C,EAAQsD,GAE7B,MAAOtB,QAQf,KAAKlpB,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3CkpB,EAAY/uB,KAAKoc,WAAWvW,EAC5B,IAAI+M,GAAQmc,EAAU1K,MACtB,IAAIzR,EAAO,CACT,GAAI0d,GAAQ9rB,KAAKknB,IAAIlZ,EAAII,EAAMJ,GAC3B+d,EAAQ/rB,KAAKknB,IAAIjZ,EAAIG,EAAMH,GAC3BsZ,EAAQvnB,KAAKgsB,KAAKF,EAAQA,EAAQC,EAAQA,IAEzB,OAAhBJ,GAA+BA,EAAPpE,IAA8BkE,EAAPlE,IAClDoE,EAAcpE,EACdmE,EAAmBnB,IAO3B,MAAOmB,IAQTlvB,EAAQkT,UAAU+a,aAAe,SAAUF,GACzC,GAAI5b,GAASsd,EAAMC,CAEd1wB,MAAKonB,SAiCRjU,EAAUnT,KAAKonB,QAAQuJ,IAAIxd,QAC3Bsd,EAAQzwB,KAAKonB,QAAQuJ,IAAIF,KACzBC,EAAQ1wB,KAAKonB,QAAQuJ,IAAID,MAlCzBvd,EAAUnB,SAASM,cAAc,OACjCa,EAAQzF,MAAMkX,SAAW,WACzBzR,EAAQzF,MAAMsX,QAAU,OACxB7R,EAAQzF,MAAMZ,OAAS,oBACvBqG,EAAQzF,MAAMnC,MAAQ,UACtB4H,EAAQzF,MAAMb,WAAa,wBAC3BsG,EAAQzF,MAAMkjB,aAAe,MAC7Bzd,EAAQzF,MAAMmjB,UAAY,qCAE1BJ,EAAOze,SAASM,cAAc,OAC9Bme,EAAK/iB,MAAMkX,SAAW,WACtB6L,EAAK/iB,MAAM6F,OAAS,OACpBkd,EAAK/iB,MAAM4F,MAAQ,IACnBmd,EAAK/iB,MAAMojB,WAAa,oBAExBJ,EAAM1e,SAASM,cAAc,OAC7Boe,EAAIhjB,MAAMkX,SAAW,WACrB8L,EAAIhjB,MAAM6F,OAAS,IACnBmd,EAAIhjB,MAAM4F,MAAQ,IAClBod,EAAIhjB,MAAMZ,OAAS,oBACnB4jB,EAAIhjB,MAAMkjB,aAAe,MAEzB5wB,KAAKonB,SACH2H,UAAW,KACX4B,KACExd,QAASA,EACTsd,KAAMA,EACNC,IAAKA,KAUX1wB,KAAK8uB,eAEL9uB,KAAKonB,QAAQ2H,UAAYA,EAEvB5b,EAAQ8R,UADsB,kBAArBjlB,MAAK8b,YACM9b,KAAK8b,YAAYiT,EAAUnc,OAG3B,6BACMmc,EAAUnc,MAAMJ,EAAI,gCACpBuc,EAAUnc,MAAMH,EAAI,gCACpBsc,EAAUnc,MAAMsL,EAAI,qBAIhD/K,EAAQzF,MAAM7F,KAAQ,IACtBsL,EAAQzF,MAAMzF,IAAQ,IACtBjI,KAAKsgB,MAAMpO,YAAYiB,GACvBnT,KAAKsgB,MAAMpO,YAAYue,GACvBzwB,KAAKsgB,MAAMpO,YAAYwe,EAGvB,IAAIK,GAAgB5d,EAAQ6d,YACxBC,EAAkB9d,EAAQ+d,aAC1BC,EAAgBV,EAAKS,aACrBE,EAAcV,EAAIM,YAClBK,EAAgBX,EAAIQ,aAEpBrpB,EAAOknB,EAAU1K,OAAO7R,EAAIue,EAAe,CAC/ClpB,GAAOrD,KAAKL,IAAIK,KAAKJ,IAAIyD,EAAM,IAAK7H,KAAKsgB,MAAME,YAAc,GAAKuQ,GAElEN,EAAK/iB,MAAM7F,KAASknB,EAAU1K,OAAO7R,EAAI,KACzCie,EAAK/iB,MAAMzF,IAAU8mB,EAAU1K,OAAO5R,EAAI0e,EAAc,KACxDhe,EAAQzF,MAAM7F,KAAQA,EAAO,KAC7BsL,EAAQzF,MAAMzF,IAAS8mB,EAAU1K,OAAO5R,EAAI0e,EAAaF,EAAiB,KAC1EP,EAAIhjB,MAAM7F,KAAWknB,EAAU1K,OAAO7R,EAAI4e,EAAW,EAAK,KAC1DV,EAAIhjB,MAAMzF,IAAW8mB,EAAU1K,OAAO5R,EAAI4e,EAAY,EAAK,MAO7DrwB,EAAQkT,UAAU4a,aAAe,WAC/B,GAAI9uB,KAAKonB,QAAS,CAChBpnB,KAAKonB,QAAQ2H,UAAY,IAEzB,KAAK,GAAI7oB,KAAQlG,MAAKonB,QAAQuJ,IAC5B,GAAI3wB,KAAKonB,QAAQuJ,IAAIxqB,eAAeD,GAAO,CACzC,GAAIyB,GAAO3H,KAAKonB,QAAQuJ,IAAIzqB,EACxByB,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWyH,YAAYjK,MA8BtC9H,EAAOD,QAAUoB,GAKb,SAASnB,EAAQD,EAASM,GAc9B,QAASgB,KACPlB,KAAKsxB,YAAc,GAAIjwB,GACvBrB,KAAKuxB,eACLvxB,KAAKuxB,YAAY/K,WAAa,EAC9BxmB,KAAKuxB,YAAY9K,SAAW,EAC5BzmB,KAAKwxB,UAAY,IAEjBxxB,KAAKyxB,eAAiB,GAAIpwB,GAC1BrB,KAAK0xB,eAAkB,GAAIrwB,GAAQ,GAAImD,KAAKgoB,GAAI,EAAG,GAEnDxsB,KAAK2xB,6BAtBP,GAAItwB,GAAUnB,EAAoB,GA+BlCgB,GAAOgT,UAAUoK,eAAiB,SAAS9L,EAAGC,EAAGyL,GAC/Cle,KAAKsxB,YAAY9e,EAAIA,EACrBxS,KAAKsxB,YAAY7e,EAAIA,EACrBzS,KAAKsxB,YAAYpT,EAAIA,EAErBle,KAAK2xB,8BAWPzwB,EAAOgT,UAAUwS,eAAiB,SAASF,EAAYC,GAClC5f,SAAf2f,IACFxmB,KAAKuxB,YAAY/K,WAAaA,GAGf3f,SAAb4f,IACFzmB,KAAKuxB,YAAY9K,SAAWA,EACxBzmB,KAAKuxB,YAAY9K,SAAW,IAAGzmB,KAAKuxB,YAAY9K,SAAW,GAC3DzmB,KAAKuxB,YAAY9K,SAAW,GAAIjiB,KAAKgoB,KAAIxsB,KAAKuxB,YAAY9K,SAAW,GAAIjiB,KAAKgoB,MAGjE3lB,SAAf2f,GAAyC3f,SAAb4f,IAC9BzmB,KAAK2xB,8BAQTzwB,EAAOgT,UAAU4S,eAAiB,WAChC,GAAI8K,KAIJ,OAHAA,GAAIpL,WAAaxmB,KAAKuxB,YAAY/K,WAClCoL,EAAInL,SAAWzmB,KAAKuxB,YAAY9K,SAEzBmL,GAOT1wB,EAAOgT,UAAU0S,aAAe,SAAS5gB,GACxBa,SAAXb,IAGJhG,KAAKwxB,UAAYxrB,EAKbhG,KAAKwxB,UAAY,MAAMxxB,KAAKwxB,UAAY,KACxCxxB,KAAKwxB,UAAY,IAAKxxB,KAAKwxB,UAAY,GAE3CxxB,KAAK2xB,+BAOPzwB,EAAOgT,UAAUkM,aAAe,WAC9B,MAAOpgB,MAAKwxB,WAOdtwB,EAAOgT,UAAU8K,kBAAoB,WACnC,MAAOhf,MAAKyxB,gBAOdvwB,EAAOgT,UAAUmL,kBAAoB,WACnC,MAAOrf,MAAK0xB,gBAOdxwB,EAAOgT,UAAUyd,2BAA6B,WAE5C3xB,KAAKyxB,eAAejf,EAAIxS,KAAKsxB,YAAY9e,EAAIxS,KAAKwxB,UAAYhtB,KAAK4a,IAAIpf,KAAKuxB,YAAY/K,YAAchiB,KAAK+a,IAAIvf,KAAKuxB,YAAY9K,UAChIzmB,KAAKyxB,eAAehf,EAAIzS,KAAKsxB,YAAY7e,EAAIzS,KAAKwxB,UAAYhtB,KAAK+a,IAAIvf,KAAKuxB,YAAY/K,YAAchiB,KAAK+a,IAAIvf,KAAKuxB,YAAY9K,UAChIzmB,KAAKyxB,eAAevT,EAAIle,KAAKsxB,YAAYpT,EAAIle,KAAKwxB,UAAYhtB,KAAK4a,IAAIpf,KAAKuxB,YAAY9K,UAGxFzmB,KAAK0xB,eAAelf,EAAIhO,KAAKgoB,GAAG,EAAIxsB,KAAKuxB,YAAY9K,SACrDzmB,KAAK0xB,eAAejf,EAAI,EACxBzS,KAAK0xB,eAAexT,GAAKle,KAAKuxB,YAAY/K,YAG5C3mB,EAAOD,QAAUsB,GAIb,SAASrB,EAAQD,EAASM,GAW9B,QAASiB,GAAQsS,EAAMsO,EAAQ8P,GAC7B7xB,KAAKyT,KAAOA,EACZzT,KAAK+hB,OAASA,EACd/hB,KAAK6xB,MAAQA,EAEb7xB,KAAK0I,MAAQ7B,OACb7G,KAAKsE,MAAQuC,OAGb7G,KAAK6X,OAASga,EAAM7P,kBAAkBvO,EAAKwC,MAAOjW,KAAK+hB,QAGvD/hB,KAAK6X,OAAOZ,KAAK,SAAUrR,EAAGa,GAC5B,MAAOb,GAAIa,EAAI,EAAQA,EAAJb,EAAQ,GAAK,IAG9B5F,KAAK6X,OAAO7R,OAAS,GACvBhG,KAAK8pB,YAAY,GAInB9pB,KAAKoc,cAELpc,KAAKM,QAAS,EACdN,KAAK8xB,eAAiBjrB,OAElBgrB,EAAM5V,kBACRjc,KAAKM,QAAS,EACdN,KAAK+xB,oBAGL/xB,KAAKM,QAAS,EAxClB,GAAIQ,GAAWZ,EAAoB,EAiDnCiB,GAAO+S,UAAU8d,SAAW,WAC1B,MAAOhyB,MAAKM,QAQda,EAAO+S,UAAU+d,kBAAoB,WAInC,IAHA,GAAInsB,GAAM9F,KAAK6X,OAAO7R,OAElBH,EAAI,EACD7F,KAAKoc,WAAWvW,IACrBA,GAGF,OAAOrB,MAAK+pB,MAAM1oB,EAAIC,EAAM,MAQ9B3E,EAAO+S,UAAU+V,SAAW,WAC1B,MAAOjqB,MAAK6xB,MAAMxW,aAQpBla,EAAO+S,UAAUge,UAAY,WAC3B,MAAOlyB,MAAK+hB,QAOd5gB,EAAO+S,UAAUgW,iBAAmB,WAClC,MAAmBrjB,UAAf7G,KAAK0I,MACA7B,OAEF7G,KAAK6X,OAAO7X,KAAK0I;EAO1BvH,EAAO+S,UAAUie,UAAY,WAC3B,MAAOnyB,MAAK6X,QAQd1W,EAAO+S,UAAUyB,SAAW,SAASjN,GACnC,GAAIA,GAAS1I,KAAK6X,OAAO7R,OACvB,KAAM,2BAER,OAAOhG,MAAK6X,OAAOnP,IASrBvH,EAAO+S,UAAU4P,eAAiB,SAASpb,GAIzC,GAHc7B,SAAV6B,IACFA,EAAQ1I,KAAK0I,OAED7B,SAAV6B,EACF,QAEF,IAAI0T,EACJ,IAAIpc,KAAKoc,WAAW1T,GAClB0T,EAAapc,KAAKoc,WAAW1T,OAE1B,CACH,GAAI2F,KACJA,GAAE0T,OAAS/hB,KAAK+hB,OAChB1T,EAAE/J,MAAQtE,KAAK6X,OAAOnP,EAEtB,IAAI0pB,GAAW,GAAItxB,GAASd,KAAKyT,MAAMiB,OAAQ,SAAU5E,GAAO,MAAQA,GAAKzB,EAAE0T,SAAW1T,EAAE/J,SAAW2R,KACvGmG,GAAapc,KAAK6xB,MAAM/N,eAAesO,GAEvCpyB,KAAKoc,WAAW1T,GAAS0T,EAG3B,MAAOA,IAQTjb,EAAO+S,UAAUsO,kBAAoB,SAAS3Z,GAC5C7I,KAAK8xB,eAAiBjpB,GASxB1H,EAAO+S,UAAU4V,YAAc,SAASphB,GACtC,GAAIA,GAAS1I,KAAK6X,OAAO7R,OACvB,KAAM,2BAERhG,MAAK0I,MAAQA,EACb1I,KAAKsE,MAAQtE,KAAK6X,OAAOnP,IAO3BvH,EAAO+S,UAAU6d,iBAAmB,SAASrpB,GAC7B7B,SAAV6B,IACFA,EAAQ,EAEV,IAAI4X,GAAQtgB,KAAK6xB,MAAMvR,KAEvB,IAAI5X,EAAQ1I,KAAK6X,OAAO7R,OAAQ,CAC9B,CAAqBhG,KAAK8jB,eAAepb,GAIlB7B,SAAnByZ,EAAM+R,WACR/R,EAAM+R,SAAWrgB,SAASM,cAAc,OACxCgO,EAAM+R,SAAS3kB,MAAMkX,SAAW,WAChCtE,EAAM+R,SAAS3kB,MAAMnC,MAAQ,OAC7B+U,EAAMpO,YAAYoO,EAAM+R,UAE1B,IAAIA,GAAWryB,KAAKiyB,mBACpB3R,GAAM+R,SAASpN,UAAY,wBAA0BoN,EAAW,IAEhE/R,EAAM+R,SAAS3kB,MAAM4W,OAAS,OAC9BhE,EAAM+R,SAAS3kB,MAAM7F,KAAO,MAE5B,IAAIqN,GAAKlV,IACTua,YAAW,WAAYrF,EAAG6c,iBAAiBrpB,EAAM,IAAM,IACvD1I,KAAKM,QAAS,MAGdN,MAAKM,QAAS,EAGSuG,SAAnByZ,EAAM+R,WACR/R,EAAM1O,YAAY0O,EAAM+R,UACxB/R,EAAM+R,SAAWxrB,QAGf7G,KAAK8xB,gBACP9xB,KAAK8xB,kBAIXjyB,EAAOD,QAAUuB,GAKb,SAAStB,GAOb,QAASuB,GAASoR,EAAGC,GACnBzS,KAAKwS,EAAU3L,SAAN2L,EAAkBA,EAAI,EAC/BxS,KAAKyS,EAAU5L,SAAN4L,EAAkBA,EAAI,EAGjC5S,EAAOD,QAAUwB,GAKb,SAASvB,GAQb,QAASwB,GAAQmR,EAAGC,EAAGyL,GACrBle,KAAKwS,EAAU3L,SAAN2L,EAAkBA,EAAI,EAC/BxS,KAAKyS,EAAU5L,SAAN4L,EAAkBA,EAAI,EAC/BzS,KAAKke,EAAUrX,SAANqX,EAAkBA,EAAI,EASjC7c,EAAQ6qB,SAAW,SAAStmB,EAAGa,GAC7B,GAAI6rB,GAAM,GAAIjxB,EAId,OAHAixB,GAAI9f,EAAI5M,EAAE4M,EAAI/L,EAAE+L,EAChB8f,EAAI7f,EAAI7M,EAAE6M,EAAIhM,EAAEgM,EAChB6f,EAAIpU,EAAItY,EAAEsY,EAAIzX,EAAEyX,EACToU,GASTjxB,EAAQ2S,IAAM,SAASpO,EAAGa,GACxB,GAAI8rB,GAAM,GAAIlxB,EAId,OAHAkxB,GAAI/f,EAAI5M,EAAE4M,EAAI/L,EAAE+L,EAChB+f,EAAI9f,EAAI7M,EAAE6M,EAAIhM,EAAEgM,EAChB8f,EAAIrU,EAAItY,EAAEsY,EAAIzX,EAAEyX,EACTqU,GASTlxB,EAAQ2rB,IAAM,SAASpnB,EAAGa,GACxB,MAAO,IAAIpF,IACFuE,EAAE4M,EAAI/L,EAAE+L,GAAK,GACb5M,EAAE6M,EAAIhM,EAAEgM,GAAK,GACb7M,EAAEsY,EAAIzX,EAAEyX,GAAK,IAWxB7c,EAAQgrB,aAAe,SAASzmB,EAAGa,GACjC,GAAI2lB,GAAe,GAAI/qB,EAMvB,OAJA+qB,GAAa5Z,EAAI5M,EAAE6M,EAAIhM,EAAEyX,EAAItY,EAAEsY,EAAIzX,EAAEgM,EACrC2Z,EAAa3Z,EAAI7M,EAAEsY,EAAIzX,EAAE+L,EAAI5M,EAAE4M,EAAI/L,EAAEyX,EACrCkO,EAAalO,EAAItY,EAAE4M,EAAI/L,EAAEgM,EAAI7M,EAAE6M,EAAIhM,EAAE+L,EAE9B4Z,GAQT/qB,EAAQ6S,UAAUlO,OAAS,WACzB,MAAOxB,MAAKgsB,KACJxwB,KAAKwS,EAAIxS,KAAKwS,EACdxS,KAAKyS,EAAIzS,KAAKyS,EACdzS,KAAKke,EAAIle,KAAKke,IAIxBre,EAAOD,QAAUyB,GAKb,SAASxB,EAAQD,EAASM,GAa9B,QAASoB,GAAOkZ,EAAWtL,GACzB,GAAkBrI,SAAd2T,EACF,KAAM,qCAKR,IAHAxa,KAAKwa,UAAYA,EACjBxa,KAAKypB,QAAWva,GAA8BrI,QAAnBqI,EAAQua,QAAwBva,EAAQua,SAAU,EAEzEzpB,KAAKypB,QAAS,CAChBzpB,KAAKsgB,MAAQtO,SAASM,cAAc,OAEpCtS,KAAKsgB,MAAM5S,MAAM4F,MAAQ,OACzBtT,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKwa,UAAUtI,YAAYlS,KAAKsgB,OAEhCtgB,KAAKsgB,MAAMkS,KAAOxgB,SAASM,cAAc,SACzCtS,KAAKsgB,MAAMkS,KAAKrrB,KAAO,SACvBnH,KAAKsgB,MAAMkS,KAAKluB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMkS,MAElCxyB,KAAKsgB,MAAM0F,KAAOhU,SAASM,cAAc,SACzCtS,KAAKsgB,MAAM0F,KAAK7e,KAAO,SACvBnH,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM0F,MAElChmB,KAAKsgB,MAAM+I,KAAOrX,SAASM,cAAc,SACzCtS,KAAKsgB,MAAM+I,KAAKliB,KAAO,SACvBnH,KAAKsgB,MAAM+I,KAAK/kB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM+I,MAElCrpB,KAAKsgB,MAAMmS,IAAMzgB,SAASM,cAAc,SACxCtS,KAAKsgB,MAAMmS,IAAItrB,KAAO,SACtBnH,KAAKsgB,MAAMmS,IAAI/kB,MAAMkX,SAAW,WAChC5kB,KAAKsgB,MAAMmS,IAAI/kB,MAAMZ,OAAS,gBAC9B9M,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,MAAQ,QAC7BtT,KAAKsgB,MAAMmS,IAAI/kB,MAAM6F,OAAS,MAC9BvT,KAAKsgB,MAAMmS,IAAI/kB,MAAMkjB,aAAe,MACpC5wB,KAAKsgB,MAAMmS,IAAI/kB,MAAMglB,gBAAkB,MACvC1yB,KAAKsgB,MAAMmS,IAAI/kB,MAAMZ,OAAS,oBAC9B9M,KAAKsgB,MAAMmS,IAAI/kB,MAAMiT,gBAAkB,UACvC3gB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMmS,KAElCzyB,KAAKsgB,MAAMqS,MAAQ3gB,SAASM,cAAc,SAC1CtS,KAAKsgB,MAAMqS,MAAMxrB,KAAO,SACxBnH,KAAKsgB,MAAMqS,MAAMjlB,MAAMiN,OAAS,MAChC3a,KAAKsgB,MAAMqS,MAAMruB,MAAQ,IACzBtE,KAAKsgB,MAAMqS,MAAMjlB,MAAMkX,SAAW,WAClC5kB,KAAKsgB,MAAMqS,MAAMjlB,MAAM7F,KAAO,SAC9B7H,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMqS,MAGlC,IAAIzd,GAAKlV,IACTA,MAAKsgB,MAAMqS,MAAMzN,YAAc,SAAUrb,GAAQqL,EAAGiQ,aAAatb,IACjE7J,KAAKsgB,MAAMkS,KAAKI,QAAU,SAAU/oB,GAAQqL,EAAGsd,KAAK3oB,IACpD7J,KAAKsgB,MAAM0F,KAAK4M,QAAU,SAAU/oB,GAAQqL,EAAG2d,WAAWhpB,IAC1D7J,KAAKsgB,MAAM+I,KAAKuJ,QAAU,SAAU/oB,GAAQqL,EAAGmU,KAAKxf,IAGtD7J,KAAK8yB,iBAAmBjsB,OAExB7G,KAAK6X,UACL7X,KAAK0I,MAAQ7B,OAEb7G,KAAK+yB,YAAclsB,OACnB7G,KAAKgzB,aAAe,IACpBhzB,KAAKizB,UAAW,EA3ElB,GAAItyB,GAAOT,EAAoB,EAiF/BoB,GAAO4S,UAAUse,KAAO,WACtB,GAAI9pB,GAAQ1I,KAAK6pB,UACbnhB,GAAQ,IACVA,IACA1I,KAAKkzB,SAASxqB,KAOlBpH,EAAO4S,UAAUmV,KAAO,WACtB,GAAI3gB,GAAQ1I,KAAK6pB,UACbnhB,GAAQ1I,KAAK6X,OAAO7R,OAAS,IAC/B0C,IACA1I,KAAKkzB,SAASxqB,KAOlBpH,EAAO4S,UAAUif,SAAW,WAC1B,GAAI9iB,GAAQ,GAAIzL,MAEZ8D,EAAQ1I,KAAK6pB,UACbnhB,GAAQ1I,KAAK6X,OAAO7R,OAAS,GAC/B0C,IACA1I,KAAKkzB,SAASxqB,IAEP1I,KAAKizB,WAEZvqB,EAAQ,EACR1I,KAAKkzB,SAASxqB,GAGhB,IAAI4H,GAAM,GAAI1L,MACVsoB,EAAQ5c,EAAMD,EAId+iB,EAAW5uB,KAAKJ,IAAIpE,KAAKgzB,aAAe9F,EAAM,GAG9ChY,EAAKlV,IACTA,MAAK+yB,YAAcxY,WAAW,WAAYrF,EAAGie,YAAcC,IAM7D9xB,EAAO4S,UAAU2e,WAAa,WACHhsB,SAArB7G,KAAK+yB,YACP/yB,KAAKgmB,OAELhmB,KAAKkmB,QAOT5kB,EAAO4S,UAAU8R,KAAO,WAElBhmB,KAAK+yB,cAET/yB,KAAKmzB,WAEDnzB,KAAKsgB,QACPtgB,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,UAO5BhD,EAAO4S,UAAUgS,KAAO,WACtBmN,cAAcrzB,KAAK+yB,aACnB/yB,KAAK+yB,YAAclsB,OAEf7G,KAAKsgB,QACPtgB,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,SAQ5BhD,EAAO4S,UAAU6V,oBAAsB,SAASlhB,GAC9C7I,KAAK8yB,iBAAmBjqB,GAO1BvH,EAAO4S,UAAUyV,gBAAkB,SAASyJ,GAC1CpzB,KAAKgzB,aAAeI,GAOtB9xB,EAAO4S,UAAUof,gBAAkB,WACjC,MAAOtzB,MAAKgzB,cASd1xB,EAAO4S,UAAUqf,YAAc,SAASC,GACtCxzB,KAAKizB,SAAWO,GAOlBlyB,EAAO4S,UAAUuf,SAAW,WACI5sB,SAA1B7G,KAAK8yB,kBACP9yB,KAAK8yB,oBAOTxxB,EAAO4S,UAAUuO,OAAS,WACxB,GAAIziB,KAAKsgB,MAAO,CAEdtgB,KAAKsgB,MAAMmS,IAAI/kB,MAAMzF,IAAOjI,KAAKsgB,MAAMuF,aAAa,EAChD7lB,KAAKsgB,MAAMmS,IAAIvB,aAAa,EAAK,KACrClxB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,MAAStT,KAAKsgB,MAAME,YACrCxgB,KAAKsgB,MAAMkS,KAAKhS,YAChBxgB,KAAKsgB,MAAM0F,KAAKxF,YAChBxgB,KAAKsgB,MAAM+I,KAAK7I,YAAc,GAAO,IAGzC,IAAI3Y,GAAO7H,KAAK0zB,YAAY1zB,KAAK0I,MACjC1I,MAAKsgB,MAAMqS,MAAMjlB,MAAM7F,KAAO,EAAS,OAS3CvG,EAAO4S,UAAUwV,UAAY,SAAS7R,GACpC7X,KAAK6X,OAASA,EAEV7X,KAAK6X,OAAO7R,OAAS,EACvBhG,KAAKkzB,SAAS,GAEdlzB,KAAK0I,MAAQ7B,QAOjBvF,EAAO4S,UAAUgf,SAAW,SAASxqB,GACnC,KAAIA,EAAQ1I,KAAK6X,OAAO7R,QAOtB,KAAM,2BANNhG,MAAK0I,MAAQA,EAEb1I,KAAKyiB,SACLziB,KAAKyzB,YAWTnyB,EAAO4S,UAAU2V,SAAW,WAC1B,MAAO7pB,MAAK0I,OAQdpH,EAAO4S,UAAU+B,IAAM,WACrB,MAAOjW,MAAK6X,OAAO7X,KAAK0I,QAI1BpH,EAAO4S,UAAUiR,aAAe,SAAStb,GAEvC,GAAIsjB,GAAiBtjB,EAAMwjB,MAAyB,IAAhBxjB,EAAMwjB,MAAiC,IAAjBxjB,EAAMyjB,MAChE,IAAKH,EAAL,CAEAntB,KAAK2zB,aAAe9pB,EAAM+T,QAC1B5d,KAAK4zB,YAAcvN,WAAWrmB,KAAKsgB,MAAMqS,MAAMjlB,MAAM7F,MAErD7H,KAAKsgB,MAAM5S,MAAMmgB,OAAS,MAK1B,IAAI3Y,GAAKlV,IACTA,MAAK8tB,YAAc,SAAUjkB,GAAQqL,EAAG6Y,aAAalkB,IACrD7J,KAAKguB,UAAc,SAAUnkB,GAAQqL,EAAGkY,WAAWvjB,IACnDlJ,EAAKuI,iBAAiB8I,SAAU,YAAahS,KAAK8tB,aAClDntB,EAAKuI,iBAAiB8I,SAAU,UAAahS,KAAKguB,WAClDrtB,EAAKiJ,eAAeC,KAItBvI,EAAO4S,UAAU2f,YAAc,SAAUhsB,GACvC,GAAIyL,GAAQ+S,WAAWrmB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,OACxCtT,KAAKsgB,MAAMqS,MAAMnS,YAAc,GAC/BhO,EAAI3K,EAAO,EAEXa,EAAQlE,KAAK+pB,MAAM/b,EAAIc,GAAStT,KAAK6X,OAAO7R,OAAO,GAIvD,OAHY,GAAR0C,IAAWA,EAAQ,GACnBA,EAAQ1I,KAAK6X,OAAO7R,OAAO,IAAG0C,EAAQ1I,KAAK6X,OAAO7R,OAAO,GAEtD0C,GAGTpH,EAAO4S,UAAUwf,YAAc,SAAUhrB,GACvC,GAAI4K,GAAQ+S,WAAWrmB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,OACxCtT,KAAKsgB,MAAMqS,MAAMnS,YAAc,GAE/BhO,EAAI9J,GAAS1I,KAAK6X,OAAO7R,OAAO,GAAKsN,EACrCzL,EAAO2K,EAAI,CAEf,OAAO3K,IAKTvG,EAAO4S,UAAU6Z,aAAe,SAAUlkB,GACxC,GAAIqjB,GAAOrjB,EAAM+T,QAAU5d,KAAK2zB,aAC5BnhB,EAAIxS,KAAK4zB,YAAc1G,EAEvBxkB,EAAQ1I,KAAK6zB,YAAYrhB,EAE7BxS,MAAKkzB,SAASxqB,GAEd/H,EAAKiJ,kBAIPtI,EAAO4S,UAAUkZ,WAAa,WAC5BptB,KAAKsgB,MAAM5S,MAAMmgB,OAAS,OAG1BltB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAK8tB,aACrDntB,EAAK+I,oBAAoBsI,SAAU,UAAWhS,KAAKguB,WAEnDrtB,EAAKiJ,kBAGP/J,EAAOD,QAAU0B,GAKb,SAASzB,GA2Bb,QAAS0B,GAAW8O,EAAOC,EAAK6Y,EAAMkB,GAEpCrqB,KAAK8zB,OAAS,EACd9zB,KAAK+zB,KAAO,EACZ/zB,KAAKg0B,MAAQ,EACbh0B,KAAKqqB,YAAa,EAClBrqB,KAAKi0B,UAAY,EAEjBj0B,KAAKk0B,SAAW,EAChBl0B,KAAKm0B,SAAS9jB,EAAOC,EAAK6Y,EAAMkB,GAYlC9oB,EAAW2S,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK6Y,EAAMkB,GACzDrqB,KAAK8zB,OAASzjB,EAAQA,EAAQ,EAC9BrQ,KAAK+zB,KAAOzjB,EAAMA,EAAM,EAExBtQ,KAAKo0B,QAAQjL,EAAMkB,IASrB9oB,EAAW2S,UAAUkgB,QAAU,SAASjL,EAAMkB,GAC/BxjB,SAATsiB,GAA8B,GAARA,IAGPtiB,SAAfwjB,IACFrqB,KAAKqqB,WAAaA,GAGlBrqB,KAAKg0B,MADHh0B,KAAKqqB,cAAe,EACT9oB,EAAW8yB,oBAAoBlL,GAE/BA,IAUjB5nB,EAAW8yB,oBAAsB,SAAUlL,GACzC,GAAImL,GAAQ,SAAU9hB,GAAI,MAAOhO,MAAK+vB,IAAI/hB,GAAKhO,KAAKgwB,MAGhDC,EAAQjwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,KACtCwL,EAAQ,EAAInwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,EAAO,KACjDyL,EAAQ,EAAIpwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,EAAO,KAGjDkB,EAAaoK,CASjB,OARIjwB,MAAKknB,IAAIiJ,EAAQxL,IAAS3kB,KAAKknB,IAAIrB,EAAalB,KAAOkB,EAAasK,GACpEnwB,KAAKknB,IAAIkJ,EAAQzL,IAAS3kB,KAAKknB,IAAIrB,EAAalB,KAAOkB,EAAauK,GAGtD,GAAdvK,IACFA,EAAa,GAGRA,GAOT9oB,EAAW2S,UAAUkV,WAAa,WAChC,MAAO/C,YAAWrmB,KAAKk0B,SAASW,YAAY70B,KAAKi0B,aAOnD1yB,EAAW2S,UAAU4gB,QAAU,WAC7B,MAAO90B,MAAKg0B,OAOdzyB,EAAW2S,UAAU7D,MAAQ,WAC3BrQ,KAAKk0B,SAAWl0B,KAAK8zB,OAAS9zB,KAAK8zB,OAAS9zB,KAAKg0B,OAMnDzyB,EAAW2S,UAAUmV,KAAO,WAC1BrpB,KAAKk0B,UAAYl0B,KAAKg0B,OAOxBzyB,EAAW2S,UAAU5D,IAAM,WACzB,MAAQtQ,MAAKk0B,SAAWl0B,KAAK+zB,MAG/Bl0B,EAAOD,QAAU2B,GAKb,SAAS1B,EAAQD,EAASM,GAuB9B,QAASsB,GAAUgZ,EAAWvY,EAAO8yB,EAAQ7lB,GAC3C,KAAMlP,eAAgBwB,IACpB,KAAM,IAAIiZ,aAAY,mDAIxB,MAAMnU,MAAMC,QAAQwuB,IAAWA,YAAkBl0B,IAAWk0B,YAAkBj0B,KAAai0B,YAAkBnuB,QAAQ,CACnH,GAAIouB,GAAgB9lB,CACpBA,GAAU6lB,EACVA,EAASC,EAGX,GAAI9f,GAAKlV,IACTA,MAAKi1B,gBACH5kB,MAAO,KACPC,IAAO,KAEP4kB,YAAY,EAEZC,YAAa,SACb7hB,MAAO,KACPC,OAAQ,KACR6hB,UAAW,KACXC,UAAW,MAEbr1B,KAAKkP,QAAUvO,EAAKmG,cAAe9G,KAAKi1B,gBAGxCj1B,KAAKs1B,QAAQ9a,GAGbxa,KAAKgC,cAELhC,KAAKu1B,MACH5E,IAAK3wB,KAAK2wB,IACV6E,SAAUx1B,KAAKqG,MACfovB,SACEnhB,GAAItU,KAAKsU,GAAGohB,KAAK11B,MACjByU,IAAKzU,KAAKyU,IAAIihB,KAAK11B,MACnByuB,KAAMzuB,KAAKyuB,KAAKiH,KAAK11B,OAEvB21B,eACAh1B,MACEi1B,SAAU,WACR,MAAO1gB,GAAG2gB,SAAS1M,KAAK5kB,OAE1BuwB,QAAS,WACP,MAAO5f,GAAG2gB,SAAS1M,KAAKA,MAG1B2M,SAAU5gB,EAAG6gB,UAAUL,KAAKxgB,GAC5B8gB,eAAgB9gB,EAAG+gB,gBAAgBP,KAAKxgB,GACxCghB,OAAQhhB,EAAGihB,QAAQT,KAAKxgB,GACxBkhB,aAAelhB,EAAGmhB,cAAcX,KAAKxgB,KAKzClV,KAAKs2B,MAAQ,GAAIz0B,GAAM7B,KAAKu1B,MAC5Bv1B,KAAKgC,WAAWuG,KAAKvI,KAAKs2B,OAC1Bt2B,KAAKu1B,KAAKe,MAAQt2B,KAAKs2B,MAGvBt2B,KAAK61B,SAAW,GAAI5yB,GAASjD,KAAKu1B,MAClCv1B,KAAKu2B,UAAY,KACjBv2B,KAAKgC,WAAWuG,KAAKvI,KAAK61B,UAG1B71B,KAAKw2B,YAAc,GAAIh0B,GAAYxC,KAAKu1B,MACxCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKw2B,aAI1Bx2B,KAAKy2B,WAAa,GAAIh0B,GAAWzC,KAAKu1B,MACtCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKy2B,YAG1Bz2B,KAAK02B,QAAU,GAAI5zB,GAAQ9C,KAAKu1B,MAChCv1B,KAAKgC,WAAWuG,KAAKvI,KAAK02B,SAE1B12B,KAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAElB52B,KAAKsU,GAAG,MAAO,SAAUzK,GACvBqL,EAAGuZ,KAAK,QAASvZ,EAAG2hB,mBAAmBhtB,MAEzC7J,KAAKsU,GAAG,YAAa,SAAUzK,GAC7BqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,MAE/C7J,KAAK2wB,IAAIjxB,KAAKo3B,cAAgB,SAAUjtB,GACtCqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,KAI3CqF,GACFlP,KAAKiU,WAAW/E,GAId6lB,GACF/0B,KAAK+2B,UAAUhC,GAIb9yB,EACFjC,KAAKg3B,SAAS/0B,GAGdjC,KAAKi3B,UAjIT,GAEIt2B,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B2B,EAAQ3B,EAAoB,IAC5Bg3B,EAAOh3B,EAAoB,IAC3B+C,EAAW/C,EAAoB,IAC/BsC,EAActC,EAAoB,IAClCuC,EAAavC,EAAoB,IACjC4C,EAAU5C,EAAoB,GA4HlCsB,GAAS0S,UAAY,GAAIgjB,GAOzB11B,EAAS0S,UAAUuO,OAAS,WAC1BziB,KAAK02B,SAAW12B,KAAK02B,QAAQS,WAAWC,cAAc,IACtDp3B,KAAKi3B,WAOPz1B,EAAS0S,UAAU8iB,SAAW,SAAS/0B,GACrC,GAGIo1B,GAHAC,EAAiC,MAAlBt3B,KAAK22B,SAwBxB,IAhBEU,EAJGp1B,EAGIA,YAAiBpB,IAAWoB,YAAiBnB,GACvCmB,EAIA,GAAIpB,GAAQoB,GACvBkF,MACEkJ,MAAO,OACPC,IAAK,UAVI,KAgBftQ,KAAK22B,UAAYU,EACjBr3B,KAAK02B,SAAW12B,KAAK02B,QAAQM,SAASK,GAElCC,EACF,GAA0BzwB,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAAkB,CACpE,GAA0BzJ,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAClD,GAAIinB,GAAYv3B,KAAKw3B,eAGvB,IAAInnB,GAA8BxJ,QAAtB7G,KAAKkP,QAAQmB,MAAqBrQ,KAAKkP,QAAQmB,MAAQknB,EAAUlnB,MACzEC,EAA4BzJ,QAApB7G,KAAKkP,QAAQoB,IAAqBtQ,KAAKkP,QAAQoB,IAAQinB,EAAUjnB,GAE7EtQ,MAAKy3B,UAAUpnB,EAAOC,GAAMonB,SAAS,QAGrC13B,MAAK23B,KAAKD,SAAS,KASzBl2B,EAAS0S,UAAU6iB,UAAY,SAAShC,GAEtC,GAAIsC,EAKFA,GAJGtC,EAGIA,YAAkBl0B,IAAWk0B,YAAkBj0B,GACzCi0B,EAIA,GAAIl0B,GAAQk0B,GAPZ,KAUf/0B,KAAK42B,WAAaS,EAClBr3B,KAAK02B,QAAQK,UAAUM,IAmBzB71B,EAAS0S,UAAU0jB,aAAe,SAAS1hB,EAAKhH,GAC9ClP,KAAK02B,SAAW12B,KAAK02B,QAAQkB,aAAa1hB,GAEtChH,GAAWA,EAAQ2oB,OACrB73B,KAAK63B,MAAM3hB,EAAKhH,IAQpB1N,EAAS0S,UAAU4jB,aAAe,WAChC,MAAO93B,MAAK02B,SAAW12B,KAAK02B,QAAQoB,oBAetCt2B,EAAS0S,UAAU2jB,MAAQ,SAASx3B,EAAI6O,GACtC,GAAKlP,KAAK22B,WAAmB9vB,QAANxG,EAAvB,CAEA,GAAI6V,GAAM5P,MAAMC,QAAQlG,GAAMA,GAAMA,GAGhCs2B,EAAY32B,KAAK22B,UAAU9f,aAAaZ,IAAIC,GAC9C/O,MACEkJ,MAAO,OACPC,IAAK,UAKLD,EAAQ,KACRC,EAAM,IAcV,IAbAqmB,EAAU/tB,QAAQ,SAAUmvB,GAC1B,GAAIxrB,GAAIwrB,EAAS1nB,MAAMhJ,UACnBiD,EAAI,OAASytB,GAAWA,EAASznB,IAAIjJ,UAAY0wB,EAAS1nB,MAAMhJ,WAEtD,OAAVgJ,GAAsBA,EAAJ9D,KACpB8D,EAAQ9D,IAGE,OAAR+D,GAAgBhG,EAAIgG,KACtBA,EAAMhG,KAII,OAAV+F,GAA0B,OAARC,EAAc,CAElC,GAAIT,IAAUQ,EAAQC,GAAO,EACzB8iB,EAAW5uB,KAAKJ,IAAKpE,KAAKs2B,MAAMhmB,IAAMtQ,KAAKs2B,MAAMjmB,MAAwB,KAAfC,EAAMD,IAEhEqnB,EAAWxoB,GAA+BrI,SAApBqI,EAAQwoB,QAAyBxoB,EAAQwoB,SAAU,CAC7E13B,MAAKs2B,MAAMnC,SAAStkB,EAASujB,EAAW,EAAGvjB,EAASujB,EAAW,EAAGsE,MAUtEl2B,EAAS0S,UAAU8jB,aAAe,WAEhC,GAAIC,GAAUj4B,KAAK22B,UAAU9f,aAC3B1S,EAAM,KACNC,EAAM,IAER,IAAI6zB,EAAS,CAEX,GAAIC,GAAUD,EAAQ9zB,IAAI,QAC1BA,GAAM+zB,EAAUv3B,EAAKuG,QAAQgxB,EAAQ7nB,MAAO,QAAQhJ,UAAY,IAKhE,IAAI8wB,GAAeF,EAAQ7zB,IAAI,QAC3B+zB,KACF/zB,EAAMzD,EAAKuG,QAAQixB,EAAa9nB,MAAO,QAAQhJ,UAEjD,IAAI+wB,GAAaH,EAAQ7zB,IAAI,MACzBg0B,KAEAh0B,EADS,MAAPA,EACIzD,EAAKuG,QAAQkxB,EAAW9nB,IAAK,QAAQjJ,UAGrC7C,KAAKJ,IAAIA,EAAKzD,EAAKuG,QAAQkxB,EAAW9nB,IAAK,QAAQjJ,YAK/D,OACElD,IAAa,MAAPA,EAAe,GAAIS,MAAKT,GAAO,KACrCC,IAAa,MAAPA,EAAe,GAAIQ,MAAKR,GAAO,OAUzC5C,EAAS0S,UAAU2iB,mBAAqB,SAAUhtB,GAChD,GAAIiG,GAAQ9P,KAAK02B,QAAQ2B,eAAexuB,GACpC6I,EAAQ1S,KAAK02B,QAAQ4B,gBAAgBzuB,GACrC0uB,EAAQ1uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAOwL,MAAQ1uB,EAAM0uB,MAC3DE,EAAQ5uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAO0L,MAAQ5uB,EAAM4uB,MAC3DjmB,EAAI+lB,EAAQ53B,EAAK+G,gBAAgB1H,KAAK2wB,IAAI+H,iBAC1CjmB,EAAIgmB,EAAQ93B,EAAKqH,eAAehI,KAAK2wB,IAAI+H,iBAEzCC,EAAO34B,KAAK02B,QAAQxnB,QAAQypB,MAAQ,KACpCp0B,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UACtB8D,EAAO54B,KAAKm2B,QAAQ3jB,GACpBqmB,EAAcF,EAAOA,EAAKC,EAAMr0B,EAAO4kB,GAAQyP,EAE/CzvB,EAAUxI,EAAKoJ,UAAUF,GACzBivB,EAAO,IASX,OARY,OAARhpB,EAAkEgpB,EAAO,OACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK61B,SAASlF,IAAIoI,YAAmBD,EAAO,OACpE94B,KAAKu2B,WAAa51B,EAAKyJ,UAAUjB,EAASnJ,KAAKu2B,UAAU5F,IAAIoI,YAAcD,EAAO,OAClFn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK02B,QAAQ/F,IAAIqI,UAAoBF,EAAO,cACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKy2B,WAAWhE,KAAqBqG,EAAO,cACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKw2B,YAAY/D,KAAoBqG,EAAO,eACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK2wB,IAAI5D,UAA4B+L,EAAO,eAG3EjvB,MAAOA,EACPiG,KAAMA,EAAOA,EAAKzP,GAAK,KACvBqS,MAAOA,EAAQA,EAAMumB,QAAU,KAC/BH,KAAMA,EACNP,MAAOA,EACPE,MAAOA,EACPjmB,EAAGA,EACHC,EAAGA,EACHmmB,KAAMA,EACNC,YAAaA,IAIjBh5B,EAAOD,QAAU4B,GAKb,SAAS3B,EAAQD,EAASM,GAsB9B,QAASuB,GAAS+Y,EAAWvY,EAAO8yB,EAAQ7lB,GAE1C,KAAM5I,MAAMC,QAAQwuB,IAAWA,YAAkBl0B,KAAYk0B,YAAkBnuB,QAAQ,CACrF,GAAIouB,GAAgB9lB,CACpBA,GAAU6lB,EACVA,EAASC,EAGX,GAAI9f,GAAKlV,IACTA,MAAKi1B,gBACH5kB,MAAO,KACPC,IAAO,KAEP4kB,YAAY,EAEZC,YAAa,SACb7hB,MAAO,KACPC,OAAQ,KACR6hB,UAAW,KACXC,UAAW,MAEbr1B,KAAKkP,QAAUvO,EAAKmG,cAAe9G,KAAKi1B,gBAGxCj1B,KAAKs1B,QAAQ9a,GAGbxa,KAAKgC,cAELhC,KAAKu1B,MACH5E,IAAK3wB,KAAK2wB,IACV6E,SAAUx1B,KAAKqG,MACfovB,SACEnhB,GAAItU,KAAKsU,GAAGohB,KAAK11B,MACjByU,IAAKzU,KAAKyU,IAAIihB,KAAK11B,MACnByuB,KAAMzuB,KAAKyuB,KAAKiH,KAAK11B,OAEvB21B,eACAh1B,MACEm1B,SAAU5gB,EAAG6gB,UAAUL,KAAKxgB,GAC5B8gB,eAAgB9gB,EAAG+gB,gBAAgBP,KAAKxgB,GACxCghB,OAAQhhB,EAAGihB,QAAQT,KAAKxgB,GACxBkhB,aAAelhB,EAAGmhB,cAAcX,KAAKxgB,KAKzClV,KAAKs2B,MAAQ,GAAIz0B,GAAM7B,KAAKu1B,MAC5Bv1B,KAAKgC,WAAWuG,KAAKvI,KAAKs2B,OAC1Bt2B,KAAKu1B,KAAKe,MAAQt2B,KAAKs2B,MAGvBt2B,KAAK61B,SAAW,GAAI5yB,GAASjD,KAAKu1B,MAClCv1B,KAAKgC,WAAWuG,KAAKvI,KAAK61B,UAI1B71B,KAAKw2B,YAAc,GAAIh0B,GAAYxC,KAAKu1B,MACxCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKw2B,aAI1Bx2B,KAAKy2B,WAAa,GAAIh0B,GAAWzC,KAAKu1B,MACtCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKy2B,YAG1Bz2B,KAAKk5B,UAAY,GAAIl2B,GAAUhD,KAAKu1B,MACpCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKk5B,WAE1Bl5B,KAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAElB52B,KAAKsU,GAAG,MAAO,SAAUzK,GACvBqL,EAAGuZ,KAAK,QAASvZ,EAAG2hB,mBAAmBhtB,MAEzC7J,KAAKsU,GAAG,YAAa,SAAUzK,GAC7BqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,MAE/C7J,KAAK2wB,IAAIjxB,KAAKo3B,cAAgB,SAAUjtB,GACtCqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,KAI3CqF,GACFlP,KAAKiU,WAAW/E,GAId6lB,GACF/0B,KAAK+2B,UAAUhC,GAIb9yB,EACFjC,KAAKg3B,SAAS/0B,GAGdjC,KAAKi3B,UArHT,GAEIt2B,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B2B,EAAQ3B,EAAoB,IAC5Bg3B,EAAOh3B,EAAoB,IAC3B+C,EAAW/C,EAAoB,IAC/BsC,EAActC,EAAoB,IAClCuC,EAAavC,EAAoB,IACjC8C,EAAY9C,EAAoB,GAgHpCuB,GAAQyS,UAAY,GAAIgjB,GAMxBz1B,EAAQyS,UAAU8iB,SAAW,SAAS/0B,GACpC,GAGIo1B,GAHAC,EAAiC,MAAlBt3B,KAAK22B,SAwBxB,IAhBEU,EAJGp1B,EAGIA,YAAiBpB,IAAWoB,YAAiBnB,GACvCmB,EAIA,GAAIpB,GAAQoB,GACvBkF,MACEkJ,MAAO,OACPC,IAAK,UAVI,KAgBftQ,KAAK22B,UAAYU,EACjBr3B,KAAKk5B,WAAal5B,KAAKk5B,UAAUlC,SAASK,GAEtCC,EACF,GAA0BzwB,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAAkB,CACpE,GAAID,GAA8BxJ,QAAtB7G,KAAKkP,QAAQmB,MAAqBrQ,KAAKkP,QAAQmB,MAAQ,KAC/DC,EAA4BzJ,QAApB7G,KAAKkP,QAAQoB,IAAqBtQ,KAAKkP,QAAQoB,IAAM,IAEjEtQ,MAAKy3B,UAAUpnB,EAAOC,GAAMonB,SAAS,QAGrC13B,MAAK23B,KAAKD,SAAS,KASzBj2B,EAAQyS,UAAU6iB,UAAY,SAAShC,GAErC,GAAIsC,EAKFA,GAJGtC,EAGIA,YAAkBl0B,IAAWk0B,YAAkBj0B,GACzCi0B,EAIA,GAAIl0B,GAAQk0B,GAPZ,KAUf/0B,KAAK42B,WAAaS,EAClBr3B,KAAKk5B,UAAUnC,UAAUM,IAS3B51B,EAAQyS,UAAUilB,UAAY,SAASF,EAAS3lB,EAAOC,GAGrD,MAFe1M,UAAXyM,IAAuBA,EAAS,IACrBzM,SAAX0M,IAAuBA,EAAS,IACG1M,SAAnC7G,KAAKk5B,UAAUnE,OAAOkE,GACjBj5B,KAAKk5B,UAAUnE,OAAOkE,GAASE,UAAU7lB,EAAMC,GAG/C,qBAAwB0lB,GASnCx3B,EAAQyS,UAAUklB,eAAiB,SAASH,GAC1C,MAAuCpyB,UAAnC7G,KAAKk5B,UAAUnE,OAAOkE,GAChBj5B,KAAKk5B,UAAUnE,OAAOkE,GAASxP,UAAkE5iB,SAAtD7G,KAAKk5B,UAAUhqB,QAAQ6lB,OAAOsE,WAAWJ,IAA+E,GAArDj5B,KAAKk5B,UAAUhqB,QAAQ6lB,OAAOsE,WAAWJ,KAGxJ,GAWXx3B,EAAQyS,UAAU8jB,aAAe,WAC/B,GAAI7zB,GAAM,KACNC,EAAM,IAGV,KAAK,GAAI60B,KAAWj5B,MAAKk5B,UAAUnE,OACjC,GAAI/0B,KAAKk5B,UAAUnE,OAAO5uB,eAAe8yB,IACO,GAA1Cj5B,KAAKk5B,UAAUnE,OAAOkE,GAASxP,QACjC,IAAK,GAAI5jB,GAAI,EAAGA,EAAI7F,KAAKk5B,UAAUnE,OAAOkE,GAAStC,UAAU3wB,OAAQH,IAAK,CACxE,GAAIiK,GAAO9P,KAAKk5B,UAAUnE,OAAOkE,GAAStC,UAAU9wB,GAChDvB,EAAQ3D,EAAKuG,QAAQ4I,EAAK0C,EAAG,QAAQnL,SACzClD,GAAa,MAAPA,EAAcG,EAAQH,EAAMG,EAAQA,EAAQH,EAClDC,EAAa,MAAPA,EAAcE,EAAcA,EAANF,EAAcE,EAAQF,EAM1D,OACED,IAAa,MAAPA,EAAe,GAAIS,MAAKT,GAAO,KACrCC,IAAa,MAAPA,EAAe,GAAIQ,MAAKR,GAAO,OAWzC3C,EAAQyS,UAAU2iB,mBAAqB,SAAUhtB,GAC/C,GAAI0uB,GAAQ1uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAOwL,MAAQ1uB,EAAM0uB,MAC3DE,EAAQ5uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAO0L,MAAQ5uB,EAAM4uB,MAC3DjmB,EAAI+lB,EAAQ53B,EAAK+G,gBAAgB1H,KAAK2wB,IAAI+H,iBAC1CjmB,EAAIgmB,EAAQ93B,EAAKqH,eAAehI,KAAK2wB,IAAI+H,iBACzCE,EAAO54B,KAAKm2B,QAAQ3jB,GAEpBrJ,EAAUxI,EAAKoJ,UAAUF,GACzBivB,EAAO,IACPn4B,GAAKyJ,UAAUjB,EAASnJ,KAAK61B,SAASlF,IAAIoI,YAA2BD,EAAO,OACvE94B,KAAKu2B,WAAa51B,EAAKyJ,UAAUjB,EAASnJ,KAAKu2B,UAAU5F,IAAIoI,YAAcD,EAAO,OAClFn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUI,UAAU3I,IAAIrQ,OAAWwY,EAAO,YACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUK,WAAW5I,IAAIrQ,OAAUwY,EAAO,YACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUM,WAAW7I,IAAIrQ,OAAUwY,EAAO,SACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUO,YAAY9I,IAAIrQ,OAASwY,EAAO,SACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKy2B,WAAWhE,KAAwBqG,EAAO,cACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKw2B,YAAY/D,KAAuBqG,EAAO,eACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK2wB,IAAI5D,UAA+B+L,EAAO,aAEhF,IAAIx0B,MACAg1B,EAAYt5B,KAAKk5B,UAAUI,UAC3BC,EAAav5B,KAAKk5B,UAAUK,UAQhC,OAPKD,GAAUI,QACbp1B,EAAMiE,KAAK+wB,EAAUK,cAAclnB,IAEhC8mB,EAAWG,QACdp1B,EAAMiE,KAAKgxB,EAAWI,cAAclnB,KAIpC5I,MAAOA,EACPivB,KAAMA,EACNP,MAAOA,EACPE,MAAOA,EACPjmB,EAAGA,EACHC,EAAGA,EACHmmB,KAAMA,EACNt0B,MAAOA,IAKXzE,EAAOD,QAAU6B,GAKb,SAAS5B,EAAQD,EAASM,GAK9B,GAAI2D,GAAS3D,EAAoB,GAQjCN,GAAQg6B,qBAAuB,SAASrE,EAAMI,GAE5C,GADAJ,EAAKI,eACDA,GACgC,GAA9BrvB,MAAMC,QAAQovB,GAAsB,CACtC,IAAK,GAAI9vB,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IACtC,GAA8BgB,SAA1B8uB,EAAY9vB,GAAGg0B,OAAsB,CACvC,GAAIC,KACJA,GAASzpB,MAAQxM,EAAO8xB,EAAY9vB,GAAGwK,OAAO9I,SAASF,UACvDyyB,EAASxpB,IAAMzM,EAAO8xB,EAAY9vB,GAAGyK,KAAK/I,SAASF,UACnDkuB,EAAKI,YAAYptB,KAAKuxB,GAG1BvE,EAAKI,YAAY1e,KAAK,SAAUrR,EAAGa,GACjC,MAAOb,GAAEyK,MAAQ5J,EAAE4J,UAY3BzQ,EAAQm6B,kBAAoB,SAAUxE,EAAMI,GAC1C,GAAIA,GAAuD9uB,SAAxC0uB,EAAKC,SAASkD,gBAAgBplB,MAAqB,CACpE1T,EAAQg6B,qBAAqBrE,EAAMI,EAQnC,KAAK,GANDtlB,GAAQxM,EAAO0xB,EAAKe,MAAMjmB,OAC1BC,EAAMzM,EAAO0xB,EAAKe,MAAMhmB,KAExB0pB,EAAczE,EAAKe,MAAMhmB,IAAMilB,EAAKe,MAAMjmB,MAC1C4pB,EAAYD,EAAazE,EAAKC,SAASkD,gBAAgBplB,MAElDzN,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IACtC,GAA8BgB,SAA1B8uB,EAAY9vB,GAAGg0B,OAAsB,CACvC,GAAIK,GAAYr2B,EAAO8xB,EAAY9vB,GAAGwK,OAClC8pB,EAAUt2B,EAAO8xB,EAAY9vB,GAAGyK,IAEpC,IAAoB,gBAAhB4pB,EAAUE,GACZ,KAAM,IAAIx2B,OAAM,qCAAuC+xB,EAAY9vB,GAAGwK,MAExE,IAAkB,gBAAd8pB,EAAQC,GACV,KAAM,IAAIx2B,OAAM,mCAAqC+xB,EAAY9vB,GAAGyK,IAGtE,IAAIC,GAAW4pB,EAAUD,CACzB,IAAI3pB,GAAY,EAAI0pB,EAAW,CAE7B,GAAIvP,GAAS,EACT2P,EAAW/pB,EAAIgqB,OACnB,QAAQ3E,EAAY9vB,GAAGg0B,QACrB,IAAK,QACCK,EAAUK,OAASJ,EAAQI,QAC7B7P,EAAS,GAEXwP,EAAUM,UAAUnqB,EAAMmqB,aAC1BN,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,QAErBiO,EAAQK,UAAUnqB,EAAMmqB,aACxBL,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAIxB,EAAO,QAE5B2P,EAASrmB,IAAI,EAAG,QAChB,MACF,KAAK,SACH,GAAI0mB,GAAYP,EAAQjN,KAAKgN,EAAU,QACnCK,EAAML,EAAUK,KAGpBL,GAAUS,KAAKtqB,EAAMsqB,QACrBT,EAAUU,MAAMvqB,EAAMuqB,SACtBV,EAAUO,KAAKpqB,EAAMoqB,QACrBN,EAAUD,EAAUI,QAGpBJ,EAAUK,IAAIA,GACdJ,EAAQI,IAAIA,GACZJ,EAAQnmB,IAAI0mB,EAAU,QAEtBR,EAAUhO,SAAS,EAAE,SACrBiO,EAAQjO,SAAS,EAAE,SAEnBmO,EAASrmB,IAAI,EAAG,QAChB,MACF,KAAK,UACCkmB,EAAUU,SAAWT,EAAQS,UAC/BlQ,EAAS,GAEXwP,EAAUU,MAAMvqB,EAAMuqB,SACtBV,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,UAErBiO,EAAQS,MAAMvqB,EAAMuqB,SACpBT,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAE,UACnBiO,EAAQnmB,IAAI0W,EAAO,UAEnB2P,EAASrmB,IAAI,EAAG,SAChB,MACF,KAAK,SACCkmB,EAAUO,QAAUN,EAAQM,SAC9B/P,EAAS,GAEXwP,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,SACrBiO,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAE,SACnBiO,EAAQnmB,IAAI0W,EAAO,SAEnB2P,EAASrmB,IAAI,EAAG,QAChB,MACF,SAEE,WADA6mB,SAAQtG,IAAI,2EAA4EoB,EAAY9vB,GAAGg0B,QAG3G,KAAmBQ,EAAZH,GAEL,OADA3E,EAAKI,YAAYptB,MAAM8H,MAAO6pB,EAAU7yB,UAAWiJ,IAAK6pB,EAAQ9yB,YACxDsuB,EAAY9vB,GAAGg0B,QACrB,IAAK,QACHK,EAAUlmB,IAAI,EAAG,QACjBmmB,EAAQnmB,IAAI,EAAG,OACf,MACF,KAAK,SACHkmB,EAAUlmB,IAAI,EAAG,SACjBmmB,EAAQnmB,IAAI,EAAG,QACf,MACF,KAAK,UACHkmB,EAAUlmB,IAAI,EAAG,UACjBmmB,EAAQnmB,IAAI,EAAG,SACf,MACF,KAAK,SACHkmB,EAAUlmB,IAAI,EAAG,KACjBmmB,EAAQnmB,IAAI,EAAG,IACf,MACF,SAEE,WADA6mB,SAAQtG,IAAI,2EAA4EoB,EAAY9vB,GAAGg0B,QAI7GtE,EAAKI,YAAYptB,MAAM8H,MAAO6pB,EAAU7yB,UAAWiJ,IAAK6pB,EAAQ9yB,aAKtEzH,EAAQk7B,iBAAiBvF,EAEzB,IAAIwF,GAAcn7B,EAAQo7B,SAASzF,EAAKe,MAAMjmB,MAAOklB,EAAKI,aACtDsF,EAAYr7B,EAAQo7B,SAASzF,EAAKe,MAAMhmB,IAAIilB,EAAKI,aACjDuF,EAAa3F,EAAKe,MAAMjmB,MACxB8qB,EAAW5F,EAAKe,MAAMhmB,GACA,IAAtByqB,EAAYrB,SAAiBwB,EAAwC,GAA3B3F,EAAKe,MAAM8E,aAAuBL,EAAYb,UAAY,EAAIa,EAAYZ,QAAU,GAC1G,GAApBc,EAAUvB,SAAmByB,EAAsC,GAAzB5F,EAAKe,MAAM+E,WAAuBJ,EAAUf,UAAY,EAAMe,EAAUd,QAAU,IACtG,GAAtBY,EAAYrB,QAAsC,GAApBuB,EAAUvB,SAC1CnE,EAAKe,MAAMgF,YAAYJ,EAAYC,KAYzCv7B,EAAQk7B,iBAAmB,SAASvF,GAGlC,IAAK,GAFDI,GAAcJ,EAAKI,YACnB4F,KACK11B,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IACtC,IAAK,GAAI4mB,GAAI,EAAGA,EAAIkJ,EAAY3vB,OAAQymB,IAClC5mB,GAAK4mB,GAA8B,GAAzBkJ,EAAYlJ,GAAGrV,QAA2C,GAAzBue,EAAY9vB,GAAGuR,SAExDue,EAAYlJ,GAAGpc,OAASslB,EAAY9vB,GAAGwK,OAASslB,EAAYlJ,GAAGnc,KAAOqlB,EAAY9vB,GAAGyK,IACvFqlB,EAAYlJ,GAAGrV,QAAS,EAGjBue,EAAYlJ,GAAGpc,OAASslB,EAAY9vB,GAAGwK,OAASslB,EAAYlJ,GAAGpc,OAASslB,EAAY9vB,GAAGyK,KAC9FqlB,EAAY9vB,GAAGyK,IAAMqlB,EAAYlJ,GAAGnc,IACpCqlB,EAAYlJ,GAAGrV,QAAS,GAGjBue,EAAYlJ,GAAGnc,KAAOqlB,EAAY9vB,GAAGwK,OAASslB,EAAYlJ,GAAGnc,KAAOqlB,EAAY9vB,GAAGyK,MAC1FqlB,EAAY9vB,GAAGwK,MAAQslB,EAAYlJ,GAAGpc,MACtCslB,EAAYlJ,GAAGrV,QAAS,GAMhC,KAAK,GAAIvR,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAClC8vB,EAAY9vB,GAAGuR,UAAW,GAC5BmkB,EAAUhzB,KAAKotB,EAAY9vB,GAI/B0vB,GAAKI,YAAc4F,EACnBhG,EAAKI,YAAY1e,KAAK,SAAUrR,EAAGa,GACjC,MAAOb,GAAEyK,MAAQ5J,EAAE4J,SAIvBzQ,EAAQ47B,WAAa,SAASC,GAC5B,IAAK,GAAI51B,GAAG,EAAGA,EAAI41B,EAAMz1B,OAAQH,IAC/Bg1B,QAAQtG,IAAI1uB,EAAG,GAAIjB,MAAK62B,EAAM51B,GAAGwK,OAAO,GAAIzL,MAAK62B,EAAM51B,GAAGyK,KAAMmrB,EAAM51B,GAAGwK,MAAOorB,EAAM51B,GAAGyK,IAAKmrB,EAAM51B,GAAGuR,SAS3GxX,EAAQ87B,oBAAsB,SAASC,EAAUC,GAG/C,IAAK,GAFDC,IAAe,EACfC,EAAeH,EAASI,QAAQ10B,UAC3BxB,EAAI,EAAGA,EAAI81B,EAAShG,YAAY3vB,OAAQH,IAAK,CACpD,GAAIq0B,GAAYyB,EAAShG,YAAY9vB,GAAGwK,MACpC8pB,EAAUwB,EAAShG,YAAY9vB,GAAGyK,GACtC,IAAIwrB,GAAgB5B,GAA4BC,EAAf2B,EAAwB,CACvDD,GAAe,CACf,QAIJ,GAAoB,GAAhBA,GAAwBC,EAAeH,EAAS5H,KAAK1sB,WAAay0B,GAAgBF,EAAc,CAClG,GAAI1rB,GAAYrM,EAAO+3B,GACnBI,EAAWn4B,EAAOs2B,EAElBjqB,GAAUuqB,QAAUuB,EAASvB,OAASkB,EAASM,cAAe,EACzD/rB,EAAU0qB,SAAWoB,EAASpB,QAAUe,EAASO,eAAgB,EACjEhsB,EAAUsqB,aAAewB,EAASxB,cAAcmB,EAASQ,aAAc,GAEhFR,EAASI,QAAUC,EAASz0B,WAmChC3H,EAAQk2B,SAAW,SAASoB,EAAM0B,EAAMtlB,GACtC,GAAoC,GAAhC4jB,EAAK3B,KAAKI,YAAY3vB,OAAa,CACrC,GAAIo2B,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EACvC,QAAQslB,EAAKvxB,UAAY+0B,EAAW1R,QAAU0R,EAAW73B,MAGzD,GAAIm1B,GAAS95B,EAAQo7B,SAASpC,EAAM1B,EAAK3B,KAAKI,YACzB,IAAjB+D,EAAOA,SACTd,EAAOc,EAAOQ,UAGhB,IAAI3pB,GAAW3Q,EAAQy8B,yBAAyBnF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAMjmB,MAAO6mB,EAAKZ,MAAMhmB,IACpGsoB,GAAOh5B,EAAQ08B,qBAAqBpF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAOsC,EAEvE,IAAIwD,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EAAO/C,EAC9C,QAAQqoB,EAAKvxB,UAAY+0B,EAAW1R,QAAU0R,EAAW73B,OAa7D3E,EAAQs2B,OAAS,SAASgB,EAAM1kB,EAAGc,GACjC,GAAoC,GAAhC4jB,EAAK3B,KAAKI,YAAY3vB,OAAa,CACrC,GAAIo2B,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EACvC,OAAO,IAAI1O,MAAK4N,EAAI4pB,EAAW73B,MAAQ63B,EAAW1R,QAGlD,GAAI6R,GAAiB38B,EAAQy8B,yBAAyBnF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAMjmB,MAAO6mB,EAAKZ,MAAMhmB,KACtGksB,EAAgBtF,EAAKZ,MAAMhmB,IAAM4mB,EAAKZ,MAAMjmB,MAAQksB,EACpDE,EAAkBD,EAAgBhqB,EAAIc,EACtCopB,EAA4B98B,EAAQ+8B,6BAA6BzF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAOmG,GAEpGG,EAAU,GAAIh4B,MAAK83B,EAA4BD,EAAkBvF,EAAKZ,MAAMjmB,MAChF,OAAOusB,IAYXh9B,EAAQy8B,yBAA2B,SAAS1G,EAAatlB,EAAOC,GAE9D,IAAK,GADDC,GAAW,EACN1K,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAEzB4pB,IAAa7pB,GAAmBC,EAAV6pB,IACxB5pB,GAAY4pB,EAAUD,GAG1B,MAAO3pB,IAWT3Q,EAAQ08B,qBAAuB,SAAS3G,EAAaW,EAAOsC,GAG1D,MAFAA,GAAO/0B,EAAO+0B,GAAMrxB,SAASF,UAC7BuxB,GAAQh5B,EAAQi9B,wBAAwBlH,EAAYW,EAAMsC,IAI5Dh5B,EAAQi9B,wBAA0B,SAASlH,EAAaW,EAAOsC,GAC7D,GAAIkE,GAAa,CACjBlE,GAAO/0B,EAAO+0B,GAAMrxB,SAASF,SAE7B,KAAK,GAAIxB,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAEzB4pB,IAAa5D,EAAMjmB,OAAS8pB,EAAU7D,EAAMhmB,KAC1CsoB,GAAQuB,IACV2C,GAAe3C,EAAUD,GAI/B,MAAO4C,IAWTl9B,EAAQ+8B,6BAA+B,SAAShH,EAAaW,EAAOyG,GAKlE,IAAK,GAJDR,GAAiB,EACjBhsB,EAAW,EACXysB,EAAgB1G,EAAMjmB,MAEjBxK,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAE7B,IAAI4pB,GAAa5D,EAAMjmB,OAAS8pB,EAAU7D,EAAMhmB,IAAK,CAGnD,GAFAC,GAAY2pB,EAAY8C,EACxBA,EAAgB7C,EACZ5pB,GAAYwsB,EACd,KAGAR,IAAkBpC,EAAUD,GAKlC,MAAOqC,IAaT38B,EAAQq9B,mBAAqB,SAAStH,EAAaiD,EAAMsE,EAAWC,GAClE,GAAInC,GAAWp7B,EAAQo7B,SAASpC,EAAMjD,EACtC,OAAuB,IAAnBqF,EAAStB,OACK,EAAZwD,EACuB,GAArBC,EACKnC,EAASd,WAAac,EAASb,QAAUvB,GAAQ,EAGjDoC,EAASd,UAAY,EAIL,GAArBiD,EACKnC,EAASb,SAAWvB,EAAOoC,EAASd,WAAa,EAGjDc,EAASb,QAAU,EAKvBvB,GAaXh5B,EAAQo7B,SAAW,SAASpC,EAAMjD,GAChC,IAAK,GAAI9vB,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAE7B,IAAIsoB,GAAQsB,GAAoBC,EAAPvB,EACvB,OAAQc,QAAQ,EAAMQ,UAAWA,EAAWC,QAASA,GAIzD,OAAQT,QAAQ,EAAOQ,UAAWA,EAAWC,QAASA,KAKpD,SAASt6B,GA4Bb,QAAS+B,GAASyO,EAAOC,EAAK8sB,EAAaC,EAAiBC,EAAaC,GAEvEv9B,KAAK+7B,QAAU,EAEf/7B,KAAKw9B,WAAY,EACjBx9B,KAAKy9B,UAAY,EACjBz9B,KAAKmpB,KAAO,EACZnpB,KAAKuE,MAAQ,EAEbvE,KAAK09B,YACL19B,KAAK29B,UACL39B,KAAK49B,UAAY,EAEjB59B,KAAK69B,YAAc,EAAO,EAAM,EAAI,IACpC79B,KAAK89B,YAAc,IAAO,GAAM,EAAI,GAEpC99B,KAAKu9B,WAAaA,EAElBv9B,KAAKm0B,SAAS9jB,EAAOC,EAAK8sB,EAAaC,EAAiBC,GAe1D17B,EAASsS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK8sB,EAAaC,EAAiBC,GAC/Et9B,KAAK8zB,OAA6BjtB,SAApBy2B,EAAYn5B,IAAoBkM,EAAQitB,EAAYn5B,IAClEnE,KAAK+zB,KAA2BltB,SAApBy2B,EAAYl5B,IAAoBkM,EAAMgtB,EAAYl5B,IAE1DpE,KAAK8zB,QAAU9zB,KAAK+zB,OACtB/zB,KAAK8zB,QAAU,IACf9zB,KAAK+zB,MAAQ,GAGO,GAAlB/zB,KAAKw9B,WACPx9B,KAAK+9B,eAAeX,EAAaC,GAGnCr9B,KAAKg+B,SAASV,IAOhB17B,EAASsS,UAAU6pB,eAAiB,SAASX,EAAaC,GAExD,GAAItqB,GAAO/S,KAAK+zB,KAAO/zB,KAAK8zB,OACxBmK,EAAkB,IAAPlrB,EACXmrB,EAAmBd,GAAea,EAAWZ,GAC7Cc,EAAmB35B,KAAK+pB,MAAM/pB,KAAK+vB,IAAI0J,GAAUz5B,KAAKgwB,MAEtD4J,EAAe,GACfC,EAAkB75B,KAAKkwB,IAAI,GAAGyJ,GAE9B9tB,EAAQ,CACW,GAAnB8tB,IACF9tB,EAAQ8tB,EAIV,KAAK,GADDG,IAAgB,EACXz4B,EAAIwK,EAAO7L,KAAKknB,IAAI7lB,IAAMrB,KAAKknB,IAAIyS,GAAmBt4B,IAAK,CAClEw4B,EAAkB75B,KAAKkwB,IAAI,GAAG7uB,EAC9B,KAAK,GAAI4mB,GAAI,EAAGA,EAAIzsB,KAAK89B,WAAW93B,OAAQymB,IAAK,CAC/C,GAAI8R,GAAWF,EAAkBr+B,KAAK89B,WAAWrR,EACjD,IAAI8R,GAAYL,EAAkB,CAChCI,GAAgB,EAChBF,EAAe3R,CACf,QAGJ,GAAqB,GAAjB6R,EACF,MAGJt+B,KAAKy9B,UAAYW,EACjBp+B,KAAKuE,MAAQ85B,EACbr+B,KAAKmpB,KAAOkV,EAAkBr+B,KAAK89B,WAAWM,IAShDx8B,EAASsS,UAAU8pB,SAAW,SAASV,GACjBz2B,SAAhBy2B,IACFA,KAGF,IAAIkB,GAAgC33B,SAApBy2B,EAAYn5B,IAAoBnE,KAAK8zB,OAAuB,EAAb9zB,KAAKuE,MAAYvE,KAAK89B,WAAW99B,KAAKy9B,WAAcH,EAAYn5B,IAC3Hs6B,EAA8B53B,SAApBy2B,EAAYl5B,IAAoBpE,KAAK+zB,KAAQ/zB,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAAcH,EAAYl5B,GAEvHpE,MAAK29B,UAAgC92B,SAApBy2B,EAAYl5B,IAAoBpE,KAAK0+B,aAAaD,GAAWnB,EAAYl5B,IAC1FpE,KAAK09B,YAAkC72B,SAApBy2B,EAAYn5B,IAAoBnE,KAAK0+B,aAAaF,GAAalB,EAAYn5B,IAGvE,GAAnBnE,KAAKu9B,aAAuBv9B,KAAK29B,UAAY39B,KAAK09B,aAAe19B,KAAKmpB,MAAQ,IAChFnpB,KAAK29B,WAAa39B,KAAK29B,UAAY39B,KAAKmpB,MAG1CnpB,KAAK49B,UAAY59B,KAAK0+B,aAAaD,GAAWA,EAAUz+B,KAAK0+B,aAAaF,GAAaA,EACvFx+B,KAAK2+B,YAAc3+B,KAAK29B,UAAY39B,KAAK09B,YAGzC19B,KAAK+7B,QAAU/7B,KAAK29B,WAGtB/7B,EAASsS,UAAUwqB,aAAe,SAASp6B,GACzC,GAAIs6B,GAAUt6B,EAASA,GAAStE,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAClE,OAAIn5B,IAAStE,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,YAAc,GAAOz9B,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAC7FmB,EAAW5+B,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAG7CmB,GASXh9B,EAASsS,UAAU2qB,QAAU,WAC3B,MAAQ7+B,MAAK+7B,SAAW/7B,KAAK09B,aAM/B97B,EAASsS,UAAUmV,KAAO,WACxB,GAAImJ,GAAOxyB,KAAK+7B,OAChB/7B,MAAK+7B,SAAW/7B,KAAKmpB,KAGjBnpB,KAAK+7B,SAAWvJ,IAClBxyB,KAAK+7B,QAAU/7B,KAAK+zB,OAOxBnyB,EAASsS,UAAU4qB,SAAW,WAC5B9+B,KAAK+7B,SAAW/7B,KAAKmpB,KACrBnpB,KAAK29B,WAAa39B,KAAKmpB,KACvBnpB,KAAK2+B,YAAc3+B,KAAK29B,UAAY39B,KAAK09B,aAS3C97B,EAASsS,UAAUkV,WAAa,SAAS2V,GAEvC,GAAIhD,GAAWv3B,KAAKknB,IAAI1rB,KAAK+7B,SAAW/7B,KAAKmpB,KAAO,EAAK,EAAInpB,KAAK+7B,QAC9DlH,EAAc,GAAK5wB,OAAO83B,GAASlH,YAAY,EAGnD,IAAgBhuB,SAAbk4B,GAA2B/5B,MAAMf,OAAO86B,KAqCzC,GAAgC,IAA5BlK,EAAY7tB,QAAQ,MAA0C,IAA5B6tB,EAAY7tB,QAAQ,KAExD,IAAK,GAAInB,GAAIgvB,EAAY7uB,OAAS,EAAGH,EAAI,EAAGA,IAAK,CAC/C,GAAsB,KAAlBgvB,EAAYhvB,GAGX,CAAA,GAAsB,KAAlBgvB,EAAYhvB,IAA+B,KAAlBgvB,EAAYhvB,GAAW,CACvDgvB,EAAcA,EAAY9oB,MAAM,EAAGlG,EACnC,OAGA,MAPAgvB,EAAcA,EAAY9oB,MAAM,EAAGlG,QAzCY,CAErD,GAAIm5B,GAAM,GACNt2B,EAAQmsB,EAAY7tB,QAAQ,IAoBhC,IAnBY,IAAT0B,IAEDs2B,EAAMnK,EAAY9oB,MAAMrD,GAExBmsB,EAAcA,EAAY9oB,MAAM,EAAGrD,IAErCA,EAAQlE,KAAKJ,IAAIywB,EAAY7tB,QAAQ,KAAM6tB,EAAY7tB,QAAQ,MAClD,KAAV0B,GAEe,IAAbq2B,IACDlK,GAAe,KAGjBnsB,EAAQmsB,EAAY7uB,OAAS+4B,GAEV,IAAbA,IAENr2B,GAASq2B,EAAW,GAEnBr2B,EAAQmsB,EAAY7uB,OAErB,IAAI,GAAIi5B,GAAMv2B,EAAQmsB,EAAY7uB,OAAQi5B,EAAM,EAAGA,IACjDpK,GAAe,QAKjBA,GAAcA,EAAY9oB,MAAM,EAAGrD,EAGrCmsB,IAAemK,EAoBjB,MAAOnK,IAQTjzB,EAASsS,UAAUgrB,QAAU,WAC3B,MAAQl/B,MAAK+7B,SAAW/7B,KAAKuE,MAAQvE,KAAK69B,WAAW79B,KAAKy9B,aAAe,GAG3E59B,EAAOD,QAAUgC,GAKb,SAAS/B,EAAQD,EAASM,GAgB9B,QAAS2B,GAAM0zB,EAAMrmB,GACnB,GAAIiwB,GAAMt7B,IAASu7B,MAAM,GAAGC,QAAQ,GAAGC,QAAQ,GAAGC,aAAa,EAC/Dv/B,MAAKqQ,MAAQ8uB,EAAI7E,QAAQtmB,IAAI,GAAI,QAAQ3M,UACzCrH,KAAKsQ,IAAM6uB,EAAI7E,QAAQtmB,IAAI,EAAG,QAAQ3M,UAEtCrH,KAAKu1B,KAAOA,EACZv1B,KAAKw/B,gBAAkB,EACvBx/B,KAAKy/B,YAAc,EACnBz/B,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,EAGlBr7B,KAAKi1B,gBACH5kB,MAAO,KACPC,IAAK,KACL4sB,UAAW,aACXwC,UAAU,EACVC,UAAU,EACVx7B,IAAK,KACLC,IAAK,KACLw7B,QAAS,GACTC,QAAS,UAEX7/B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAEpCj1B,KAAKqG,OACHy5B,UAEF9/B,KAAK+/B,aAAe,KAGpB//B,KAAKu1B,KAAKE,QAAQnhB,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACzDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OACpDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,OAGvDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,OAAQtU,KAAKmgC,QAAQzK,KAAK11B,OAG/CA,KAAKu1B,KAAKE,QAAQnhB,GAAG,aAAmBtU,KAAKogC,cAAc1K,KAAK11B,OAChEA,KAAKu1B,KAAKE,QAAQnhB,GAAG,iBAAmBtU,KAAKogC,cAAc1K,KAAK11B,OAGhEA,KAAKu1B,KAAKE,QAAQnhB,GAAG,QAAStU,KAAKqgC,SAAS3K,KAAK11B,OACjDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,QAAStU,KAAKsgC,SAAS5K,KAAK11B,OAEjDA,KAAKiU,WAAW/E,GAsClB,QAASqxB,GAAmBrD,GAC1B,GAAiB,cAAbA,GAA0C,YAAbA,EAC/B,KAAM,IAAIx2B,WAAU,sBAAwBw2B,EAAY,yCAif5D,QAASsD,GAAYV,EAAO32B,GAC1B,OACEqJ,EAAGstB,EAAMvH,MAAQ53B,EAAK+G,gBAAgByB,GACtCsJ,EAAGqtB,EAAMrH,MAAQ93B,EAAKqH,eAAemB,IAxlBzC,GAAIxI,GAAOT,EAAoB,GAC3BugC,EAAavgC,EAAoB,IACjC2D,EAAS3D,EAAoB,IAC7BqC,EAAYrC,EAAoB,IAChCyB,EAAWzB,EAAoB,GA2DnC2B,GAAMqS,UAAY,GAAI3R,GAkBtBV,EAAMqS,UAAUD,WAAa,SAAU/E,GACrC,GAAIA,EAAS,CAEX,GAAIP,IAAU,YAAa,MAAO,MAAO,UAAW,UAAW,WAAY,WAAY,WAAY,cACnGhO,GAAKyF,gBAAgBuI,EAAQ3O,KAAKkP,QAASA,IAEvC,SAAWA,IAAW,OAASA,KAEjClP,KAAKm0B,SAASjlB,EAAQmB,MAAOnB,EAAQoB,OA4B3CzO,EAAMqS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAKonB,EAASgJ,GACnDA,KAAW,IACbA,GAAS,EAEX,IAAI5M,GAAkBjtB,QAATwJ,EAAqB1P,EAAKuG,QAAQmJ,EAAO,QAAQhJ,UAAY,KACtE0sB,EAAgBltB,QAAPyJ,EAAqB3P,EAAKuG,QAAQoJ,EAAK,QAAQjJ,UAAc,IAG1E,IAFArH,KAAK2gC,mBAEDjJ,EAAS,CACX,GAAIxiB,GAAKlV,KACL4gC,EAAY5gC,KAAKqQ,MACjBwwB,EAAU7gC,KAAKsQ,IACfC,EAA8B,gBAAZmnB,GAAuBA,EAAU,IACnDoJ,GAAW,GAAIl8B,OAAOyC,UACtB05B,GAAa,EAEb1X,EAAO,WACT,IAAKnU,EAAG7O,MAAMy5B,MAAMkB,SAAU,CAC5B,GAAI7B,IAAM,GAAIv6B,OAAOyC,UACjBuxB,EAAOuG,EAAM2B,EACbG,EAAOrI,EAAOroB,EACdhE,EAAK00B,GAAmB,OAAXnN,EAAmBA,EAASnzB,EAAKyP,cAAcwoB,EAAMgI,EAAW9M,EAAQvjB,GACrFjG,EAAK22B,GAAiB,OAATlN,EAAmBA,EAASpzB,EAAKyP,cAAcwoB,EAAMiI,EAAS9M,EAAMxjB,EAErF2wB,GAAUhsB,EAAGomB,YAAY/uB,EAAGjC,GAC5B3I,EAASo4B,kBAAkB7kB,EAAGqgB,KAAMrgB,EAAGhG,QAAQymB,aAC/CoL,EAAaA,GAAcG,EACvBA,GACFhsB,EAAGqgB,KAAKE,QAAQhH,KAAK,eAAgBpe,MAAO,GAAIzL,MAAKsQ,EAAG7E,OAAQC,IAAK,GAAI1L,MAAKsQ,EAAG5E,KAAMowB,OAAOA,IAG5FO,EACEF,GACF7rB,EAAGqgB,KAAKE,QAAQhH,KAAK,gBAAiBpe,MAAO,GAAIzL,MAAKsQ,EAAG7E,OAAQC,IAAK,GAAI1L,MAAKsQ,EAAG5E,KAAMowB,OAAOA,IAMjGxrB,EAAG6qB,aAAexlB,WAAW8O,EAAM,KAKzC,OAAOA,KAGP,GAAI6X,GAAUlhC,KAAKs7B,YAAYxH,EAAQC,EAEvC,IADApyB,EAASo4B,kBAAkB/5B,KAAKu1B,KAAMv1B,KAAKkP,QAAQymB,aAC/CuL,EAAS,CACX,GAAIrsB,IAAUxE,MAAO,GAAIzL,MAAK5E,KAAKqQ,OAAQC,IAAK,GAAI1L,MAAK5E,KAAKsQ,KAAMowB,OAAOA,EAC3E1gC,MAAKu1B,KAAKE,QAAQhH,KAAK,cAAe5Z,GACtC7U,KAAKu1B,KAAKE,QAAQhH,KAAK,eAAgB5Z,KAS7ChT,EAAMqS,UAAUysB,iBAAmB,WAC7B3gC,KAAK+/B,eACPzlB,aAAata,KAAK+/B,cAClB//B,KAAK+/B,aAAe,OAaxBl+B,EAAMqS,UAAUonB,YAAc,SAASjrB,EAAOC,GAC5C,GAII4c,GAJAiU,EAAqB,MAAT9wB,EAAiB1P,EAAKuG,QAAQmJ,EAAO,QAAQhJ,UAAYrH,KAAKqQ,MAC1E+wB,EAAmB,MAAP9wB,EAAiB3P,EAAKuG,QAAQoJ,EAAK,QAAQjJ,UAAcrH,KAAKsQ,IAC1ElM,EAA2B,MAApBpE,KAAKkP,QAAQ9K,IAAezD,EAAKuG,QAAQlH,KAAKkP,QAAQ9K,IAAK,QAAQiD,UAAY,KACtFlD,EAA2B,MAApBnE,KAAKkP,QAAQ/K,IAAexD,EAAKuG,QAAQlH,KAAKkP,QAAQ/K,IAAK,QAAQkD,UAAY,IAI1F,IAAIrC,MAAMm8B,IAA0B,OAAbA,EACrB,KAAM,IAAIv9B,OAAM,kBAAoByM,EAAQ,IAE9C,IAAIrL,MAAMo8B,IAAsB,OAAXA,EACnB,KAAM,IAAIx9B,OAAM,gBAAkB0M,EAAM,IAyC1C,IArCa6wB,EAATC,IACFA,EAASD,GAIC,OAARh9B,GACaA,EAAXg9B,IACFjU,EAAQ/oB,EAAMg9B,EACdA,GAAYjU,EACZkU,GAAUlU,EAGC,MAAP9oB,GACEg9B,EAASh9B,IACXg9B,EAASh9B,IAOL,OAARA,GACEg9B,EAASh9B,IACX8oB,EAAQkU,EAASh9B,EACjB+8B,GAAYjU,EACZkU,GAAUlU,EAGC,MAAP/oB,GACaA,EAAXg9B,IACFA,EAAWh9B,IAOU,OAAzBnE,KAAKkP,QAAQ0wB,QAAkB,CACjC,GAAIA,GAAUvZ,WAAWrmB,KAAKkP,QAAQ0wB,QACxB,GAAVA,IACFA,EAAU,GAEcA,EAArBwB,EAASD,IACPnhC,KAAKsQ,IAAMtQ,KAAKqQ,QAAWuvB,GAAWuB,EAAWnhC,KAAKqQ,OAAS+wB,EAASphC,KAAKsQ,KAEhF6wB,EAAWnhC,KAAKqQ,MAChB+wB,EAASphC,KAAKsQ,MAId4c,EAAQ0S,GAAWwB,EAASD,GAC5BA,GAAYjU,EAAO,EACnBkU,GAAUlU,EAAO,IAMvB,GAA6B,OAAzBltB,KAAKkP,QAAQ2wB,QAAkB,CACjC,GAAIA,GAAUxZ,WAAWrmB,KAAKkP,QAAQ2wB,QACxB,GAAVA,IACFA,EAAU,GAGPuB,EAASD,EAAYtB,IACnB7/B,KAAKsQ,IAAMtQ,KAAKqQ,QAAWwvB,GAAWsB,EAAWnhC,KAAKqQ,OAAS+wB,EAASphC,KAAKsQ,KAEhF6wB,EAAWnhC,KAAKqQ,MAChB+wB,EAASphC,KAAKsQ,MAId4c,EAASkU,EAASD,EAAYtB,EAC9BsB,GAAYjU,EAAO,EACnBkU,GAAUlU,EAAO,IAKvB,GAAIgU,GAAWlhC,KAAKqQ,OAAS8wB,GAAYnhC,KAAKsQ,KAAO8wB,CAUrD,OAPOD,IAAYnhC,KAAKqQ,OAAS8wB,GAAcnhC,KAAKsQ,KAAS8wB,GAAYphC,KAAKqQ,OAAS+wB,GAAYphC,KAAKsQ,KACjGtQ,KAAKqQ,OAAS8wB,GAAYnhC,KAAKqQ,OAAS+wB,GAAcphC,KAAKsQ,KAAO6wB,GAAcnhC,KAAKsQ,KAAO8wB,GACjGphC,KAAKu1B,KAAKE,QAAQhH,KAAK,oBAGzBzuB,KAAKqQ,MAAQ8wB,EACbnhC,KAAKsQ,IAAM8wB,EACJF,GAOTr/B,EAAMqS,UAAUmtB,SAAW,WACzB,OACEhxB,MAAOrQ,KAAKqQ,MACZC,IAAKtQ,KAAKsQ,MAUdzO,EAAMqS,UAAUkoB,WAAa,SAAU9oB,EAAOguB,GAC5C,MAAOz/B,GAAMu6B,WAAWp8B,KAAKqQ,MAAOrQ,KAAKsQ,IAAKgD,EAAOguB,IAWvDz/B,EAAMu6B,WAAa,SAAU/rB,EAAOC,EAAKgD,EAAOguB,GAI9C,MAHoBz6B,UAAhBy6B,IACFA,EAAc,GAEH,GAAThuB,GAAehD,EAAMD,GAAS,GAE9Bqa,OAAQra,EACR9L,MAAO+O,GAAShD,EAAMD,EAAQixB,KAK9B5W,OAAQ,EACRnmB,MAAO,IAUb1C,EAAMqS,UAAU8rB,aAAe,WAC7BhgC,KAAKw/B,gBAAkB,EACvBx/B,KAAKuhC,cAAgB,EAEhBvhC,KAAKkP,QAAQwwB,UAIb1/B,KAAKqG,MAAMy5B,MAAM0B,gBAEtBxhC,KAAKqG,MAAMy5B,MAAMzvB,MAAQrQ,KAAKqQ,MAC9BrQ,KAAKqG,MAAMy5B,MAAMxvB,IAAMtQ,KAAKsQ,IAC5BtQ,KAAKqG,MAAMy5B,MAAMkB,UAAW,EAExBhhC,KAAKu1B,KAAK5E,IAAIjxB,OAChBM,KAAKu1B,KAAK5E,IAAIjxB,KAAKgO,MAAMmgB,OAAS,UAStChsB,EAAMqS,UAAU+rB,QAAU,SAAUp2B,GAElC,GAAK7J,KAAKkP,QAAQwwB,UAGb1/B,KAAKqG,MAAMy5B,MAAM0B,cAAtB,CAEA,GAAItE,GAAYl9B,KAAKkP,QAAQguB,SAC7BqD,GAAkBrD,EAElB,IAAI5N,GAAsB,cAAb4N,EAA6BrzB,EAAM2uB,QAAQiJ,OAAS53B,EAAM2uB,QAAQkJ,MAC/EpS,IAAStvB,KAAKw/B,eACd,IAAIpM,GAAYpzB,KAAKqG,MAAMy5B,MAAMxvB,IAAMtQ,KAAKqG,MAAMy5B,MAAMzvB,MAGpDE,EAAW5O,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,IACzF8iB,IAAY7iB,CAEZ,IAAI+C,GAAsB,cAAb4pB,EAA6Bl9B,KAAKu1B,KAAKC,SAASzI,OAAOzZ,MAAQtT,KAAKu1B,KAAKC,SAASzI,OAAOxZ,OAClGouB,GAAarS,EAAQhc,EAAQ8f,EAC7B+N,EAAWnhC,KAAKqG,MAAMy5B,MAAMzvB,MAAQsxB,EACpCP,EAASphC,KAAKqG,MAAMy5B,MAAMxvB,IAAMqxB,EAIhCC,EAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAUnhC,KAAKuhC,cAAcjS,GAAO,GACnGuS,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,EAAQphC,KAAKuhC,cAAcjS,GAAO,EACnG,IAAIsS,GAAaT,GAAYU,GAAWT,EAKtC,MAJAphC,MAAKw/B,iBAAmBlQ,EACxBtvB,KAAKqG,MAAMy5B,MAAMzvB,MAAQuxB,EACzB5hC,KAAKqG,MAAMy5B,MAAMxvB,IAAMuxB,MACvB7hC,MAAKigC,QAAQp2B,EAIf7J,MAAKuhC,cAAgBjS,EACrBtvB,KAAKs7B,YAAY6F,EAAUC,GAG3BphC,KAAKu1B,KAAKE,QAAQhH,KAAK,eACrBpe,MAAO,GAAIzL,MAAK5E,KAAKqQ,OACrBC,IAAO,GAAI1L,MAAK5E,KAAKsQ,KACrBowB,QAAQ,MASZ7+B,EAAMqS,UAAUgsB,WAAa,WAEtBlgC,KAAKkP,QAAQwwB,UAIb1/B,KAAKqG,MAAMy5B,MAAM0B,gBAEtBxhC,KAAKqG,MAAMy5B,MAAMkB,UAAW,EACxBhhC,KAAKu1B,KAAK5E,IAAIjxB,OAChBM,KAAKu1B,KAAK5E,IAAIjxB,KAAKgO,MAAMmgB,OAAS,QAIpC7tB,KAAKu1B,KAAKE,QAAQhH,KAAK,gBACrBpe,MAAO,GAAIzL,MAAK5E,KAAKqQ,OACrBC,IAAO,GAAI1L,MAAK5E,KAAKsQ,KACrBowB,QAAQ,MAUZ7+B,EAAMqS,UAAUksB,cAAgB,SAASv2B,GAEvC,GAAM7J,KAAKkP,QAAQywB,UAAY3/B,KAAKkP,QAAQwwB,SAA5C,CAGA,GAAIpQ,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAa,IAClB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAS,GAMtBF,EAAO,CAKT,GAAI/qB,EAEFA,GADU,EAAR+qB,EACM,EAAKA,EAAQ,EAGb,GAAK,EAAKA,EAAQ,EAI5B,IAAIkJ,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAUvB,EAAWhI,EAAQzL,OAAQ/sB,KAAKu1B,KAAK5E,IAAI5D,QACnDiV,EAAchiC,KAAKiiC,eAAeF,EAEtC/hC,MAAKkiC,KAAK39B,EAAOy9B,EAAa1S,GAKhCzlB,EAAMD,mBAOR/H,EAAMqS,UAAUmsB,SAAW,WACzBrgC,KAAKqG,MAAMy5B,MAAMzvB,MAAQrQ,KAAKqQ,MAC9BrQ,KAAKqG,MAAMy5B,MAAMxvB,IAAMtQ,KAAKsQ,IAC5BtQ,KAAKqG,MAAMy5B,MAAM0B,eAAgB,EACjCxhC,KAAKqG,MAAMy5B,MAAM/S,OAAS,KAC1B/sB,KAAKy/B,YAAc,EACnBz/B,KAAKw/B,gBAAkB,GAOzB39B,EAAMqS,UAAUisB,QAAU,WACxBngC,KAAKqG,MAAMy5B,MAAM0B,eAAgB,GAQnC3/B,EAAMqS,UAAUosB,SAAW,SAAUz2B,GAEnC,GAAM7J,KAAKkP,QAAQywB,UAAY3/B,KAAKkP,QAAQwwB,WAE5C1/B,KAAKqG,MAAMy5B,MAAM0B,eAAgB,EAE7B33B,EAAM2uB,QAAQ2J,QAAQn8B,OAAS,GAAG,CAC/BhG,KAAKqG,MAAMy5B,MAAM/S,SACpB/sB,KAAKqG,MAAMy5B,MAAM/S,OAASyT,EAAW32B,EAAM2uB,QAAQzL,OAAQ/sB,KAAKu1B,KAAK5E,IAAI5D,QAG3E,IAAIxoB,GAAQ,GAAKsF,EAAM2uB,QAAQj0B,MAAQvE,KAAKy/B,aACxC2C,EAAapiC,KAAKiiC,eAAejiC,KAAKqG,MAAMy5B,MAAM/S,QAElDwP,EAAiB56B,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,KAC3F+xB,EAAuB1gC,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAMoiC,GACrFE,EAAsB/F,EAAiB8F,EAGvClB,EAAYiB,EAAaC,GAAyBriC,KAAKqG,MAAMy5B,MAAMzvB,OAAS+xB,EAAaC,IAAyB99B,EAClH68B,EAAUgB,EAAaE,GAAwBtiC,KAAKqG,MAAMy5B,MAAMxvB,KAAO8xB,EAAaE,IAAwB/9B,CAGhHvE,MAAKo7B,aAAe,EAAI72B,EAAQ,GAAI,GAAQ,EAC5CvE,KAAKq7B,WAAa92B,EAAQ,EAAI,GAAI,GAAQ,CAE1C,IAAIq9B,GAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAU,EAAI58B,GAAO,GACpFs9B,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,EAAQ78B,EAAQ,GAAG,IAChFq9B,GAAaT,GAAYU,GAAWT,KACtCphC,KAAKqG,MAAMy5B,MAAMzvB,MAAQuxB,EACzB5hC,KAAKqG,MAAMy5B,MAAMxvB,IAAMuxB,EACvB7hC,KAAKy/B,YAAc,EAAI51B,EAAM2uB,QAAQj0B,MACrC48B,EAAWS,EACXR,EAASS,GAGX7hC,KAAKm0B,SAASgN,EAAUC,GAAQ,GAAO,GAEvCphC,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,IAUtBx5B,EAAMqS,UAAU+tB,eAAiB,SAAUF,GACzC,GAAI3F,GACAc,EAAYl9B,KAAKkP,QAAQguB,SAI7B,IAFAqD,EAAkBrD,GAED,cAAbA,EACF,MAAOl9B,MAAKu1B,KAAK50B,KAAKu1B,OAAO6L,EAAQvvB,GAAGnL,SAGxC,IAAIkM,GAASvT,KAAKu1B,KAAKC,SAASzI,OAAOxZ,MAEvC,OADA6oB,GAAap8B,KAAKo8B,WAAW7oB,GACtBwuB,EAAQtvB,EAAI2pB,EAAW73B,MAAQ63B,EAAW1R,QA4BrD7oB,EAAMqS,UAAUguB,KAAO,SAAS39B,EAAOwoB,EAAQuC,GAE/B,MAAVvC,IACFA,GAAU/sB,KAAKqQ,MAAQrQ,KAAKsQ,KAAO,EAGrC,IAAIisB,GAAiB56B,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,KAC3F+xB,EAAuB1gC,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAM+sB,GACrFuV,EAAsB/F,EAAiB8F,EAGvClB,EAAYpU,EAAOsV,GAAyBriC,KAAKqQ,OAAS0c,EAAOsV,IAAyB99B,EAC1F68B,EAAYrU,EAAOuV,GAAwBtiC,KAAKsQ,KAAOyc,EAAOuV,IAAwB/9B,CAG1FvE,MAAKo7B,aAAe9L,EAAQ,GAAI,GAAQ,EACxCtvB,KAAKq7B,YAAc/L,EAAS,GAAI,GAAQ,CACxC,IAAIsS,GAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAU7R,GAAO,GAChFuS,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,GAAS9R,GAAO,IAC7EsS,GAAaT,GAAYU,GAAWT,KACtCD,EAAWS,EACXR,EAASS,GAGX7hC,KAAKm0B,SAASgN,EAAUC,GAAQ,GAAO,GAEvCphC,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,GAWpBx5B,EAAMqS,UAAUquB,KAAO,SAASjT,GAE9B,GAAIpC,GAAQltB,KAAKsQ,IAAMtQ,KAAKqQ,MAGxB8wB,EAAWnhC,KAAKqQ,MAAQ6c,EAAOoC,EAC/B8R,EAASphC,KAAKsQ,IAAM4c,EAAOoC,CAI/BtvB,MAAKqQ,MAAQ8wB,EACbnhC,KAAKsQ,IAAM8wB,GAObv/B,EAAMqS,UAAU2U,OAAS,SAASA,GAChC,GAAIkE,IAAU/sB,KAAKqQ,MAAQrQ,KAAKsQ,KAAO,EAEnC4c,EAAOH,EAASlE,EAGhBsY,EAAWnhC,KAAKqQ,MAAQ6c,EACxBkU,EAASphC,KAAKsQ,IAAM4c,CAExBltB,MAAKm0B,SAASgN,EAAUC,IAG1BvhC,EAAOD,QAAUiC,GAKb,SAAShC,EAAQD,GAGrB,GAAI4iC,GAAU,IAMd5iC,GAAQ6iC,aAAe,SAASxgC,GAC9BA,EAAMgV,KAAK,SAAUrR,EAAGa,GACtB,MAAOb,GAAE6N,KAAKpD,MAAQ5J,EAAEgN,KAAKpD;IASjCzQ,EAAQ8iC,WAAa,SAASzgC,GAC5BA,EAAMgV,KAAK,SAAUrR,EAAGa,GACtB,GAAIk8B,GAAS,OAAS/8B,GAAE6N,KAAQ7N,EAAE6N,KAAKnD,IAAM1K,EAAE6N,KAAKpD,MAChDuyB,EAAS,OAASn8B,GAAEgN,KAAQhN,EAAEgN,KAAKnD,IAAM7J,EAAEgN,KAAKpD,KAEpD,OAAOsyB,GAAQC,KAenBhjC,EAAQkC,MAAQ,SAASG,EAAO0Y,EAAQkoB,GACtC,GAAIh9B,GAAGi9B,CAEP,IAAID,EAEF,IAAKh9B,EAAI,EAAGi9B,EAAO7gC,EAAM+D,OAAY88B,EAAJj9B,EAAUA,IACzC5D,EAAM4D,GAAGoC,IAAM,IAKnB,KAAKpC,EAAI,EAAGi9B,EAAO7gC,EAAM+D,OAAY88B,EAAJj9B,EAAUA,IAAK,CAC9C,GAAIiK,GAAO7N,EAAM4D,EACjB,IAAIiK,EAAKhO,OAAsB,OAAbgO,EAAK7H,IAAc,CAEnC6H,EAAK7H,IAAM0S,EAAOooB,IAElB,GAAG,CAID,IAAK,GADDC,GAAgB,KACXvW,EAAI,EAAGwW,EAAKhhC,EAAM+D,OAAYi9B,EAAJxW,EAAQA,IAAK,CAC9C,GAAIxmB,GAAQhE,EAAMwqB,EAClB,IAAkB,OAAdxmB,EAAMgC,KAAgBhC,IAAU6J,GAAQ7J,EAAMnE,OAASlC,EAAQsjC,UAAUpzB,EAAM7J,EAAO0U,EAAO7K,MAAO,CACtGkzB,EAAgB/8B,CAChB,QAIiB,MAAjB+8B,IAEFlzB,EAAK7H,IAAM+6B,EAAc/6B,IAAM+6B,EAAczvB,OAASoH,EAAO7K,KAAK2W,gBAE7Duc,MAafpjC,EAAQujC,QAAU,SAASlhC,EAAO0Y,EAAQyoB,GACxC,GAAIv9B,GAAGi9B,EAAMO,CAGb,KAAKx9B,EAAI,EAAGi9B,EAAO7gC,EAAM+D,OAAY88B,EAAJj9B,EAAUA,IACzC,GAA+BgB,SAA3B5E,EAAM4D,GAAG4N,KAAK6vB,SAAwB,CACxCD,EAAS1oB,EAAOooB,IAChB,KAAK,GAAIO,KAAYF,GACfA,EAAUj9B,eAAem9B,IACQ,GAA/BF,EAAUE,GAAU7Z,SAAmB2Z,EAAUE,GAAU56B,MAAQ06B,EAAUnhC,EAAM4D,GAAG4N,KAAK6vB,UAAU56B,QACvG26B,GAAUD,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,SAIzDxkB,GAAM4D,GAAGoC,IAAMo7B,MAGfphC,GAAM4D,GAAGoC,IAAM0S,EAAOooB,MAe5BnjC,EAAQsjC,UAAY,SAASt9B,EAAGa,EAAGkU,GACjC,MAAS/U,GAAEiC,KAAO8S,EAAO6L,WAAagc,EAAkB/7B,EAAEoB,KAAOpB,EAAE6M,OAC9D1N,EAAEiC,KAAOjC,EAAE0N,MAAQqH,EAAO6L,WAAagc,EAAW/7B,EAAEoB,MACpDjC,EAAEqC,IAAM0S,EAAO8L,SAAW+b,EAAyB/7B,EAAEwB,IAAMxB,EAAE8M,QAC7D3N,EAAEqC,IAAMrC,EAAE2N,OAASoH,EAAO8L,SAAW+b,EAAa/7B,EAAEwB,MAMvD,SAASpI,EAAQD,EAASM,GAgC9B,QAAS6B,GAASsO,EAAOC,EAAK8sB,EAAazH,GAEzC31B,KAAK+7B,QAAU,GAAIn3B,MACnB5E,KAAK8zB,OAAS,GAAIlvB,MAClB5E,KAAK+zB,KAAO,GAAInvB,MAEhB5E,KAAKw9B,WAAa,EAClBx9B,KAAKuE,MAAQ,MACbvE,KAAKmpB,KAAO,EAGZnpB,KAAKm0B,SAAS9jB,EAAOC,EAAK8sB,GAG1Bp9B,KAAKm8B,aAAc,EACnBn8B,KAAKk8B,eAAgB,EACrBl8B,KAAKi8B,cAAe,EACpBj8B,KAAK21B,YAAcA,EACC9uB,SAAhB8uB,IACF31B,KAAK21B,gBAGP31B,KAAKujC,OAASxhC,EAASyhC,OApDzB,GAAI3/B,GAAS3D,EAAoB,IAC7ByB,EAAWzB,EAAoB,IAC/BS,EAAOT,EAAoB,EAsD/B6B,GAASyhC,QACPC,aACEC,YAAY,MACZC,OAAY,IACZC,OAAY,QACZC,KAAY,QACZC,QAAY,QACZvJ,IAAY,IACZK,MAAY,MACZH,KAAY,QAEdsJ,aACEL,YAAY,WACZC,OAAY,eACZC,OAAY,aACZC,KAAY,aACZC,QAAY,YACZvJ,IAAY,YACZK,MAAY,OACZH,KAAY,KAUhB14B,EAASmS,UAAU8vB,UAAY,SAAUT,GACvC,GAAIU,GAAgBtjC,EAAKmG,cAAe/E,EAASyhC,OACjDxjC,MAAKujC,OAAS5iC,EAAKmG,WAAWm9B,EAAeV,IAa/CxhC,EAASmS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK8sB,GACjD,KAAM/sB,YAAiBzL,OAAW0L,YAAe1L,OAC/C,KAAO,+CAGT5E,MAAK8zB,OAAmBjtB,QAATwJ,EAAsB,GAAIzL,MAAKyL,EAAMhJ,WAAa,GAAIzC,MACrE5E,KAAK+zB,KAAeltB,QAAPyJ,EAAoB,GAAI1L,MAAK0L,EAAIjJ,WAAa,GAAIzC,MAE3D5E,KAAKw9B,WACPx9B,KAAK+9B,eAAeX,IAOxBr7B,EAASmS,UAAUgwB,MAAQ,WACzBlkC,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK8zB,OAAOzsB,WACpCrH,KAAK0+B,gBAOP38B,EAASmS,UAAUwqB,aAAe,WAIhC,OAAQ1+B,KAAKuE,OACX,IAAK,OACHvE,KAAK+7B,QAAQoI,YAAYnkC,KAAKmpB,KAAO3kB,KAAKgB,MAAMxF,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,OAClFnpB,KAAK+7B,QAAQsI,SAAS,EACxB,KAAK,QAAgBrkC,KAAK+7B,QAAQuI,QAAQ,EAC1C,KAAK,MACL,IAAK,UAAgBtkC,KAAK+7B,QAAQwI,SAAS,EAC3C,KAAK,OAAgBvkC,KAAK+7B,QAAQyI,WAAW,EAC7C,KAAK,SAAgBxkC,KAAK+7B,QAAQ0I,WAAW,EAC7C,KAAK,SAAgBzkC,KAAK+7B,QAAQ2I,gBAAgB,GAIpD,GAAiB,GAAb1kC,KAAKmpB,KAEP,OAAQnpB,KAAKuE,OACX,IAAK,cAAgBvE,KAAK+7B,QAAQ2I,gBAAgB1kC,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAKmpB,KAAQ,MACjI,KAAK,SAAgBnpB,KAAK+7B,QAAQ0I,WAAWzkC,KAAK+7B,QAAQ6I,aAAe5kC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,KAAO,MACjH,KAAK,SAAgBnpB,KAAK+7B,QAAQyI,WAAWxkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,KAAO,MACjH,KAAK,OAAgBnpB,KAAK+7B,QAAQwI,SAASvkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,KAAO,MAC3G,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAStkC,KAAK+7B,QAAQgJ,UAAU,GAAM/kC,KAAK+7B,QAAQgJ,UAAU,GAAK/kC,KAAKmpB,KAAO,EAAI,MACpH,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAQ,MAC5G,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,QAUnHpnB,EAASmS,UAAU2qB,QAAU,WAC3B,MAAQ7+B,MAAK+7B,QAAQ10B,WAAarH,KAAK+zB,KAAK1sB,WAM9CtF,EAASmS,UAAUmV,KAAO,WACxB,GAAImJ,GAAOxyB,KAAK+7B,QAAQ10B,SAIxB,IAAIrH,KAAK+7B,QAAQiJ,WAAa,EAC5B,OAAQhlC,KAAKuE,OACX,IAAK,cAEHvE,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAYrH,KAAKmpB,KAAO,MAC/D,KAAK,SAAgBnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,MACzF,KAAK,SAAgBnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,GAAK,MAC9F,KAAK,OACHnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,GAAK,GAEzE,IAAI7c,GAAItM,KAAK+7B,QAAQ+I,UACrB9kC,MAAK+7B,QAAQwI,SAASj4B,EAAKA,EAAItM,KAAKmpB,KACpC,MACF,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAQtkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAO,MAC/E,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAO,MACjF,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,UAKlF,QAAQnpB,KAAKuE,OACX,IAAK,cAAgBvE,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAYrH,KAAKmpB,KAAO,MAClF,KAAK,SAAgBnpB,KAAK+7B,QAAQ0I,WAAWzkC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,KAAO,MACrF,KAAK,SAAgBnpB,KAAK+7B,QAAQyI,WAAWxkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,KAAO,MACrF,KAAK,OAAgBnpB,KAAK+7B,QAAQwI,SAASvkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,KAAO,MACjF,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAQtkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAO,MAC/E,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAO,MACjF,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,MAKpF,GAAiB,GAAbnpB,KAAKmpB,KAEP,OAAQnpB,KAAKuE,OACX,IAAK,cAAmBvE,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQ2I,gBAAgB,EAAK,MACtG,KAAK,SAAmB1kC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQ0I,WAAW,EAAK,MAC5F,KAAK,SAAmBzkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQyI,WAAW,EAAK,MAC5F,KAAK,OAAmBxkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQwI,SAAS,EAAK,MACxF,KAAK,UACL,IAAK,MAAmBvkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAK,GAAGnpB,KAAK+7B,QAAQuI,QAAQ,EAAI,MACvF,KAAK,QAAmBtkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQsI,SAAS,EAAK,MACxF,KAAK,QAMLrkC,KAAK+7B,QAAQ10B,WAAamrB,IAC5BxyB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+zB,KAAK1sB,YAGpC1F,EAAS+5B,oBAAoB17B,KAAMwyB,IAQrCzwB,EAASmS,UAAUkV,WAAa,WAC9B,MAAOppB,MAAK+7B,SAedh6B,EAASmS,UAAU+wB,SAAW,SAASpwB,GACjCA,GAAiC,gBAAhBA,GAAOtQ,QAC1BvE,KAAKuE,MAAQsQ,EAAOtQ,MACpBvE,KAAKmpB,KAAOtU,EAAOsU,KAAO,EAAItU,EAAOsU,KAAO,EAC5CnpB,KAAKw9B,WAAY,IAQrBz7B,EAASmS,UAAUgxB,aAAe,SAAUC,GAC1CnlC,KAAKw9B,UAAY2H,GAQnBpjC,EAASmS,UAAU6pB,eAAiB,SAASX,GAC3C,GAAmBv2B,QAAfu2B,EAAJ,CAMA,GAAIgI,GAAiB,QACjBC,EAAiB,OACjBC,EAAiB,MACjBC,EAAiB,KACjBC,EAAiB,IACjBC,EAAiB,IACjBC,EAAiB,CAGR,KAATN,EAAgBhI,IAAqBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,IAATic,EAAehI,IAAsBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,IAATic,EAAehI,IAAsBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,GAATic,EAAchI,IAAuBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,IACpE,GAATic,EAAchI,IAAuBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,IACpE,EAATic,EAAahI,IAAwBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAC7Eic,EAAWhI,IAA0Bp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GACnE,EAAVkc,EAAcjI,IAAuBp9B,KAAKuE,MAAQ,QAAevE,KAAKmpB,KAAO,GAC7Ekc,EAAYjI,IAAyBp9B,KAAKuE,MAAQ,QAAevE,KAAKmpB,KAAO,GACrE,EAARmc,EAAYlI,IAAyBp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GACrE,EAARmc,EAAYlI,IAAyBp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GAC7Emc,EAAUlI,IAA2Bp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GAC7Emc,EAAQ,EAAIlI,IAAyBp9B,KAAKuE,MAAQ,UAAevE,KAAKmpB,KAAO,GACpE,EAAToc,EAAanI,IAAwBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAC7Eoc,EAAWnI,IAA0Bp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAClE,GAAXqc,EAAgBpI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,GAAXqc,EAAgBpI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,EAAXqc,EAAepI,IAAsBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7Eqc,EAAapI,IAAwBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAClE,GAAXsc,EAAgBrI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,GAAXsc,EAAgBrI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,EAAXsc,EAAerI,IAAsBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7Esc,EAAarI,IAAwBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7D,IAAhBuc,EAAsBtI,IAAep9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAC7D,IAAhBuc,EAAsBtI,IAAep9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAC7D,GAAhBuc,EAAqBtI,IAAgBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,IAC7D,GAAhBuc,EAAqBtI,IAAgBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,IAC7D,EAAhBuc,EAAoBtI,IAAiBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,GAC7Euc,EAAkBtI,IAAmBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAanFpnB,EAAS42B,KAAO,SAASgC,EAAMp2B,EAAO4kB,GACpC,GAAImR,GAAQ,GAAI11B,MAAK+1B,EAAKtzB,UAE1B,IAAa,QAAT9C,EAAiB,CACnB,GAAIk2B,GAAOH,EAAM8J,cAAgB5/B,KAAK+pB,MAAM+L,EAAM0K,WAAa,GAC/D1K,GAAM6J,YAAY3/B,KAAK+pB,MAAMkM,EAAOtR,GAAQA,GAC5CmR,EAAM+J,SAAS,GACf/J,EAAMgK,QAAQ,GACdhK,EAAMiK,SAAS,GACfjK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,SAATngC,EACH+1B,EAAMyK,UAAY,IACpBzK,EAAMgK,QAAQ,GACdhK,EAAM+J,SAAS/J,EAAM0K,WAAa,IAIlC1K,EAAMgK,QAAQ,GAGhBhK,EAAMiK,SAAS,GACfjK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,OAATngC,EAAgB,CAEvB,OAAQ4kB,GACN,IAAK,GACL,IAAK,GACHmR,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAAW,MAC1D,SACExK,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,KAEjDxK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,WAATngC,EAAoB,CAE3B,OAAQ4kB,GACN,IAAK,GACL,IAAK,GACHmR,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAAW,MAC1D,SACExK,EAAMiK,SAA4C,EAAnC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAEjDxK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,QAATngC,EAAiB,CACxB,OAAQ4kB,GACN,IAAK,GACHmR,EAAMkK,WAAiD,GAAtChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,IAAW,MAC9D,SACEvK,EAAMkK,WAAiD,GAAtChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,KAErDvK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OACjB,IAAa,UAATngC,EAAmB,CAE5B,OAAQ4kB,GACN,IAAK,IACL,IAAK,IACHmR,EAAMkK,WAAgD,EAArChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,IACjDvK,EAAMmK,WAAW,EACjB,MACF,KAAK,GACHnK,EAAMmK,WAAiD,GAAtCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,IAAW,MAC9D,SACEtK,EAAMmK,WAAiD,GAAtCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,KAErDtK,EAAMoK,gBAAgB,OAEnB,IAAa,UAATngC,EAEP,OAAQ4kB,GACN,IAAK,IACL,IAAK,IACHmR,EAAMmK,WAAgD,EAArCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,IACjDtK,EAAMoK,gBAAgB,EACtB,MACF,KAAK,GACHpK,EAAMoK,gBAA6D,IAA7ClgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB,KAAe,MAC5E,SACErK,EAAMoK,gBAA4D,IAA5ClgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB,UAG5D,IAAa,eAATpgC,EAAwB,CAC/B,GAAIyvB,GAAQ7K,EAAO,EAAIA,EAAO,EAAI,CAClCmR,GAAMoK,gBAAgBlgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB3Q,GAASA,GAGtE,MAAOsG,IAQTv4B,EAASmS,UAAUgrB,QAAU,WAC3B,GAAyB,GAArBl/B,KAAKi8B,aAEP,OADAj8B,KAAKi8B,cAAe,EACZj8B,KAAKuE,OACX,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAGR,IAA0B,GAAtBvE,KAAKk8B,cAEZ,OADAl8B,KAAKk8B,eAAgB,EACbl8B,KAAKuE,OACX,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAGR,IAAwB,GAApBvE,KAAKm8B,YAEZ,OADAn8B,KAAKm8B,aAAc,EACXn8B,KAAKuE,OACX,IAAK,cACL,IAAK,SACL,IAAK,SACL,IAAK,OACH,OAAO,CACT,SACE,OAAO,EAIb,OAAQvE,KAAKuE,OACX,IAAK,cACH,MAA0C,IAAlCvE,KAAK+7B,QAAQ4I,iBACvB,KAAK,SACH,MAAqC,IAA7B3kC,KAAK+7B,QAAQ6I,YACvB,KAAK,SACH,MAAmC,IAA3B5kC,KAAK+7B,QAAQ+I,YAAkD,GAA7B9kC,KAAK+7B,QAAQ8I,YACzD,KAAK,OACH,MAAmC,IAA3B7kC,KAAK+7B,QAAQ+I,UACvB,KAAK,UACL,IAAK,MACH,MAAkC,IAA1B9kC,KAAK+7B,QAAQgJ,SACvB,KAAK,QACH,MAAmC,IAA3B/kC,KAAK+7B,QAAQiJ,UACvB,KAAK,OACH,OAAO,CACT,SACE,OAAO,IAWbjjC,EAASmS,UAAUyxB,cAAgB,SAAShL,GAC9B9zB,QAAR8zB,IACFA,EAAO36B,KAAK+7B,QAGd,IAAIwH,GAASvjC,KAAKujC,OAAOE,YAAYzjC,KAAKuE,MAC1C,OAAQg/B,IAAUA,EAAOv9B,OAAS,EAAKnC,EAAO82B,GAAM4I,OAAOA,GAAU,IASvExhC,EAASmS,UAAU0xB,cAAgB,SAASjL,GAC9B9zB,QAAR8zB,IACFA,EAAO36B,KAAK+7B,QAGd,IAAIwH,GAASvjC,KAAKujC,OAAOQ,YAAY/jC,KAAKuE,MAC1C,OAAQg/B,IAAUA,EAAOv9B,OAAS,EAAKnC,EAAO82B,GAAM4I,OAAOA,GAAU,IAGvExhC,EAASmS,UAAU2xB,aAAe,WAKhC,QAASC,GAAKxhC,GACZ,MAAQA,GAAQ6kB,EAAO,GAAK,EAAK,QAAU,OAG7C,QAAS4c,GAAMpL,GACb,MAAIA,GAAKqL,OAAO,GAAIphC,MAAQ,OACnB,SAEL+1B,EAAKqL,OAAOniC,IAASmQ,IAAI,EAAG,OAAQ,OAC/B,YAEL2mB,EAAKqL,OAAOniC,IAASmQ,IAAI,GAAI,OAAQ,OAChC,aAEF,GAGT,QAASiyB,GAAYtL,GACnB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,QAAU,gBAAkB,GAG7D,QAASshC,GAAavL,GACpB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,SAAW,iBAAmB,GAG/D,QAASuhC,GAAYxL,GACnB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,QAAU,gBAAkB,GA9B7D,GAAIpE,GAAIqD,EAAO7D,KAAK+7B,SAChBpB,EAAOn6B,EAAE4lC,OAAS5lC,EAAE4lC,OAAO,MAAQ5lC,EAAE6lC,KAAK,MAC1Cld,EAAOnpB,KAAKmpB,IA+BhB,QAAQnpB,KAAKuE,OACX,IAAK,cACH,MAAOuhC,GAAKnL,EAAK4E,gBAAgB5xB,MAEnC,KAAK,SACH,MAAOm4B,GAAKnL,EAAK2E,WAAW3xB,MAE9B,KAAK,SACH,MAAOm4B,GAAKnL,EAAK0E,WAAW1xB,MAE9B,KAAK,OACH,GAAIyxB,GAAQzE,EAAKyE,OAIjB,OAHiB,IAAbp/B,KAAKmpB,OACPiW,EAAQA,EAAQ,KAAOA,EAAQ,IAE1BA,EAAQ,IAAM2G,EAAMpL,GAAQmL,EAAKnL,EAAKyE,QAE/C,KAAK,UACH,MAAOzE,GAAK4I,OAAO,QAAQ+C,cACvBP,EAAMpL,GAAQsL,EAAYtL,GAAQmL,EAAKnL,EAAKA,OAElD,KAAK,MACH,GAAIJ,GAAMI,EAAKA,OACXC,EAAQD,EAAK4I,OAAO,QAAQ+C,aAChC,OAAO,MAAQ/L,EAAM,IAAMK,EAAQsL,EAAavL,GAAQmL,EAAKvL,EAAM,EAErE,KAAK,QACH,MAAOI,GAAK4I,OAAO,QAAQ+C,cACvBJ,EAAavL,GAAQmL,EAAKnL,EAAKC,QAErC,KAAK,OACH,GAAIH,GAAOE,EAAKF,MAChB,OAAO,OAASA,EAAO0L,EAAYxL,GAAOmL,EAAKrL,EAEjD,SACE,MAAO,KAIb56B,EAAOD,QAAUmC,GAKb,SAASlC,EAAQD,EAASM,GAc9B,QAASgC,GAAMuR,EAAM2oB,EAAYltB,GAC/BlP,KAAKK,GAAK,KACVL,KAAKqK,OAAS,KACdrK,KAAKyT,KAAOA,EACZzT,KAAK2wB,IAAM,KACX3wB,KAAKo8B,WAAaA,MAClBp8B,KAAKkP,QAAUA,MAEflP,KAAKumC,UAAW,EAChBvmC,KAAKwmC,WAAY,EACjBxmC,KAAKymC,OAAQ,EAEbzmC,KAAKiI,IAAM,KACXjI,KAAK6H,KAAO,KACZ7H,KAAKsT,MAAQ,KACbtT,KAAKuT,OAAS,KA3BhB,GAAImzB,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,EA6B/BgC,GAAKgS,UAAUpS,OAAQ,EAKvBI,EAAKgS,UAAUyyB,OAAS,WACtB3mC,KAAKumC,UAAW,EAChBvmC,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAM3BvgB,EAAKgS,UAAU0yB,SAAW,WACxB5mC,KAAKumC,UAAW,EAChBvmC,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAQ3BvgB,EAAKgS,UAAU6E,QAAU,SAAStF,GAChCzT,KAAKyT,KAAOA,EACZzT,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAO3BvgB,EAAKgS,UAAU2yB,UAAY,SAASx8B,GAC9BrK,KAAKwmC,WACPxmC,KAAK8mC,OACL9mC,KAAKqK,OAASA,EACVrK,KAAKqK,QACPrK,KAAK+mC,QAIP/mC,KAAKqK,OAASA,GASlBnI,EAAKgS,UAAU8yB,UAAY,WAEzB,OAAO,GAOT9kC,EAAKgS,UAAU6yB,KAAO,WACpB,OAAO,GAOT7kC,EAAKgS,UAAU4yB,KAAO,WACpB,OAAO,GAMT5kC,EAAKgS,UAAUuO,OAAS,aAOxBvgB,EAAKgS,UAAU+yB,YAAc,aAO7B/kC,EAAKgS,UAAUgzB,YAAc,aAS7BhlC,EAAKgS,UAAUizB,qBAAuB,SAAUC,GAC9C,GAAIpnC,KAAKumC,UAAYvmC,KAAKkP,QAAQm4B,SAASjwB,SAAWpX,KAAK2wB,IAAI2W,aAAc,CAE3E,GAAIpyB,GAAKlV,KAELsnC,EAAet1B,SAASM,cAAc,MAC1Cg1B,GAAal/B,UAAY,SACzBk/B,EAAaC,MAAQ,mBAErBb,EAAOY,GACL19B,gBAAgB,IACf0K,GAAG,MAAO,SAAUzK,GACrBqL,EAAG7K,OAAOm9B,kBAAkBtyB,GAC5BrL,EAAM49B,oBAGRL,EAAOl1B,YAAYo1B,GACnBtnC,KAAK2wB,IAAI2W,aAAeA,OAEhBtnC,KAAKumC,UAAYvmC,KAAK2wB,IAAI2W,eAE9BtnC,KAAK2wB,IAAI2W,aAAan9B,YACxBnK,KAAK2wB,IAAI2W,aAAan9B,WAAWyH,YAAY5R,KAAK2wB,IAAI2W,cAExDtnC,KAAK2wB,IAAI2W,aAAe,OAS5BplC,EAAKgS,UAAUwzB,gBAAkB,SAAUv+B,GACzC,GAAIgK,EACJ,IAAInT,KAAKkP,QAAQy4B,SAAU,CACzB,GAAI5P,GAAW/3B,KAAKqK,OAAOqsB,QAAQC,UAAU1gB,IAAIjW,KAAKK,GACtD8S,GAAUnT,KAAKkP,QAAQy4B,SAAS5P,OAGhC5kB,GAAUnT,KAAKyT,KAAKN,OAGtB,IAAGA,IAAYnT,KAAKmT,QAAS,CAE3B,GAAIA,YAAmBy0B,SACrBz+B,EAAQ8b,UAAY,GACpB9b,EAAQ+I,YAAYiB,OAEjB,IAAetM,QAAXsM,EACPhK,EAAQ8b,UAAY9R,MAGpB,IAAwB,cAAlBnT,KAAKyT,KAAKtM,MAA8CN,SAAtB7G,KAAKyT,KAAKN,QAChD,KAAM,IAAIvP,OAAM,sCAAwC5D,KAAKK,GAIjEL,MAAKmT,QAAUA,IASnBjR,EAAKgS,UAAU2zB,aAAe,SAAU1+B,GACf,MAAnBnJ,KAAKyT,KAAK8zB,MACZp+B,EAAQo+B,MAAQvnC,KAAKyT,KAAK8zB,OAAS,GAGnCp+B,EAAQ2+B,gBAAgB,UAS3B5lC,EAAKgS,UAAU6zB,sBAAwB,SAAS5+B,GAC/C,GAAInJ,KAAKkP,QAAQ84B,gBAAkBhoC,KAAKkP,QAAQ84B,eAAehiC,OAAS,EAAG,CACzE,GAAIiiC,KAEJ,IAAI3hC,MAAMC,QAAQvG,KAAKkP,QAAQ84B,gBAC7BC,EAAajoC,KAAKkP,QAAQ84B,mBAEvB,CAAA,GAAmC,OAA/BhoC,KAAKkP,QAAQ84B,eAIpB,MAHAC,GAAarhC,OAAOiH,KAAK7N,KAAKyT,MAMhC,IAAK,GAAI5N,GAAI,EAAGA,EAAIoiC,EAAWjiC,OAAQH,IAAK,CAC1C,GAAImR,GAAOixB,EAAWpiC,GAClBvB,EAAQtE,KAAKyT,KAAKuD,EAET,OAAT1S,EACF6E,EAAQ++B,aAAa,QAAUlxB,EAAM1S,GAGrC6E,EAAQ2+B,gBAAgB,QAAU9wB,MAW1C9U,EAAKgS,UAAUi0B,aAAe,SAASh/B,GAEjCnJ,KAAK0N,QACP/M,EAAKuN,cAAc/E,EAASnJ,KAAK0N,OACjC1N,KAAK0N,MAAQ,MAIX1N,KAAKyT,KAAK/F,QACZ/M,EAAKoN,WAAW5E,EAASnJ,KAAKyT,KAAK/F,OACnC1N,KAAK0N,MAAQ1N,KAAKyT,KAAK/F,QAI3B7N,EAAOD,QAAUsC,GAKb,SAASrC,EAAQD,EAASM,GAkB9B,QAASiC,GAAgBsR,EAAM2oB,EAAYltB,GASzC,GARAlP,KAAKqG,OACH8M,SACEG,MAAO,IAGXtT,KAAK6kB,UAAW,EAGZpR,EAAM,CACR,GAAkB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAAKpT,GAE7D,IAAgBwG,QAAZ4M,EAAKnD,IACP,KAAM,IAAI1M,OAAM,kCAAoC6P,EAAKpT,IAI7D6B,EAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAElClP,KAAKooC,cAAe,EApCtB,GACIlmC,IADShC,EAAoB,IACtBA,EAAoB,KAC3B2C,EAAkB3C,EAAoB,IACtCoC,EAAYpC,EAAoB,GAoCpCiC,GAAe+R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAEjDC,EAAe+R,UAAUm0B,cAAgB,kBACzClmC,EAAe+R,UAAUpS,OAAQ,EAOjCK,EAAe+R,UAAU8yB,UAAY,SAAS1Q,GAE5C,MAAQt2B,MAAKyT,KAAKpD,MAAQimB,EAAMhmB,KAAStQ,KAAKyT,KAAKnD,IAAMgmB,EAAMjmB,OAMjElO,EAAe+R,UAAUuO,OAAS,WAChC,GAAIkO,GAAM3wB,KAAK2wB,GAuBf,IAtBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI2X,IAAMt2B,SAASM,cAAc,OAIjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI2X,IAAIp2B,YAAYye,EAAIxd,SAMxBnT,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI2X,IAAIn+B,WAAY,CACvB,GAAI0C,GAAa7M,KAAKqK,OAAOsmB,IAAI9jB,UACjC,KAAKA,EACH,KAAM,IAAIjJ,OAAM,iEAElBiJ,GAAWqF,YAAYye,EAAI2X,KAQ7B,GANAtoC,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK0nC,gBAAgB1nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK6nC,aAAa7nC,KAAK2wB,IAAIxd,SAC3BnT,KAAK+nC,sBAAsB/nC,KAAK2wB,IAAIxd,SACpCnT,KAAKmoC,aAAanoC,KAAK2wB,IAAI2X,IAG3B,IAAIlgC,IAAapI,KAAKyT,KAAKrL,UAAa,IAAMpI,KAAKyT,KAAKrL,UAAa,KAChEpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI2X,IAAIlgC,UAAYpI,KAAKqoC,cAAgBjgC,EAGzCpI,KAAK6kB,SAA6D,WAAlD/c,OAAOygC,iBAAiB5X,EAAIxd,SAAS0R,SAGrD7kB,KAAKqG,MAAM8M,QAAQG,MAAQtT,KAAK2wB,IAAIxd,QAAQ6d,YAC5ChxB,KAAKuT,OAAS,EAEdvT,KAAKymC,OAAQ,IAQjBtkC,EAAe+R,UAAU6yB,KAAOzkC,EAAU4R,UAAU6yB,KAMpD5kC,EAAe+R,UAAU4yB,KAAOxkC,EAAU4R,UAAU4yB,KAMpD3kC,EAAe+R,UAAU+yB,YAAc3kC,EAAU4R,UAAU+yB,YAM3D9kC,EAAe+R,UAAUgzB,YAAc,SAASvsB,GAC9C,GAAI6tB,GAAqC,QAA7BxoC,KAAKkP,QAAQimB,WACzBn1B,MAAK2wB,IAAIxd,QAAQzF,MAAMzF,IAAMugC,EAAQ,GAAK,IAC1CxoC,KAAK2wB,IAAIxd,QAAQzF,MAAM4W,OAASkkB,EAAQ,IAAM,EAC9C,IAAIj1B,EAGJ,IAA2B1M,SAAvB7G,KAAKyT,KAAK6vB,SAAwB,CAGpC,GAAImF,GAAezoC,KAAKyT,KAAK6vB,SACzBF,EAAYpjC,KAAKqK,OAAO+4B,UACxBsF,EAAgBtF,EAAUqF,GAAc//B,KAE5C,IAAa,GAAT8/B,EAAe,CAEjBj1B,EAASvT,KAAKqK,OAAO+4B,UAAUqF,GAAcl1B,OAASoH,EAAO7K,KAAK2W,SAClElT,GAA2B,GAAjBm1B,EAAqB/tB,EAAOooB,KAAO,GAAIpoB,EAAO7K,KAAK2W,SAAW,CACxE,IAAI4c,GAASrjC,KAAKqK,OAAOpC,GACzB,KAAK,GAAIq7B,KAAYF,GACfA,EAAUj9B,eAAem9B,IACQ,GAA/BF,EAAUE,GAAU7Z,SAAmB2Z,EAAUE,GAAU56B,MAAQggC,IACrErF,GAAUD,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,SAMzD4c,IAA2B,GAAjBqF,EAAqB/tB,EAAOooB,KAAO,GAAMpoB,EAAO7K,KAAK2W,SAAW,EAC1EzmB,KAAK2wB,IAAI2X,IAAI56B,MAAMzF,IAAMo7B,EAAS,KAClCrjC,KAAK2wB,IAAI2X,IAAI56B,MAAM4W,OAAS,OAGzB,CACH,GAAI+e,GAASrjC,KAAKqK,OAAOpC,IACrB0gC,EAAc,CAClB,KAAK,GAAIrF,KAAYF,GACnB,GAAIA,EAAUj9B,eAAem9B,IACQ,GAA/BF,EAAUE,GAAU7Z,QAAiB,CACvC,GAAImf,GAAYxF,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,QACzDkiB,IAAeC,EACXxF,EAAUE,GAAU56B,MAAQggC,IAC9BrF,GAAUuF,GAKlBr1B,EAASvT,KAAKqK,OAAO+4B,UAAUqF,GAAcl1B,OAASoH,EAAO7K,KAAK2W,SAClEzmB,KAAK2wB,IAAI2X,IAAI56B,MAAMzF,IAAOjI,KAAKqK,OAAOkJ,OAASo1B,EAActF,EAAU,KACvErjC,KAAK2wB,IAAI2X,IAAI56B,MAAM4W,OAAS,QAM1BtkB,MAAKqK,iBAAkBxH,IAEzB0Q,EAAS/O,KAAKJ,IAAIpE,KAAKqK,OAAOkJ,OAC1BvT,KAAKqK,OAAOqsB,QAAQnB,KAAKC,SAASzI,OAAOxZ,OACzCvT,KAAKqK,OAAOqsB,QAAQnB,KAAKC,SAASkD,gBAAgBnlB,QACtDvT,KAAK2wB,IAAI2X,IAAI56B,MAAMzF,IAAMugC,EAAQ,IAAM,GACvCxoC,KAAK2wB,IAAI2X,IAAI56B,MAAM4W,OAASkkB,EAAQ,GAAK,MAGzCj1B,EAASvT,KAAKqK,OAAOkJ,OAErBvT,KAAK2wB,IAAI2X,IAAI56B,MAAMzF,IAAMjI,KAAKqK,OAAOpC,IAAM,KAC3CjI,KAAK2wB,IAAI2X,IAAI56B,MAAM4W,OAAS,GAGhCtkB,MAAK2wB,IAAI2X,IAAI56B,MAAM6F,OAASA,EAAS,MAGvC1T,EAAOD,QAAUuC,GAKb,SAAStC,EAAQD,EAASM,GAe9B,QAASkC,GAASqR,EAAM2oB,EAAYltB,GAalC,GAZAlP,KAAKqG,OACHqqB,KACEpd,MAAO,EACPC,OAAQ,GAEVkd,MACEnd,MAAO,EACPC,OAAQ,IAKRE,GACgB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAI1DvR,GAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAhCpC,CAAA,GAAIhN,GAAOhC,EAAoB,GACpBA,GAAoB,GAkC/BkC,EAAQ8R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAO1CE,EAAQ8R,UAAU8yB,UAAY,SAAS1Q,GAGrC,GAAIlD,IAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,CAC3C,OAAQrQ,MAAKyT,KAAKpD,MAAQimB,EAAMjmB,MAAQ+iB,GAAcpzB,KAAKyT,KAAKpD,MAAQimB,EAAMhmB,IAAM8iB,GAMtFhxB,EAAQ8R,UAAUuO,OAAS,WACzB,GAAIkO,GAAM3wB,KAAK2wB,GA6Bf,IA5BKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI2X,IAAMt2B,SAASM,cAAc,OAGjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI2X,IAAIp2B,YAAYye,EAAIxd,SAGxBwd,EAAIF,KAAOze,SAASM,cAAc,OAClCqe,EAAIF,KAAKroB,UAAY,OAGrBuoB,EAAID,IAAM1e,SAASM,cAAc,OACjCqe,EAAID,IAAItoB,UAAY,MAGpBuoB,EAAI2X,IAAI,iBAAmBtoC,KAE3BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI2X,IAAIn+B,WAAY,CACvB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EAAY,KAAM,IAAIn1B,OAAM,iEACjCm1B,GAAW7mB,YAAYye,EAAI2X,KAE7B,IAAK3X,EAAIF,KAAKtmB,WAAY,CACxB,GAAI0C,GAAa7M,KAAKqK,OAAOsmB,IAAI9jB,UACjC,KAAKA,EAAY,KAAM,IAAIjJ,OAAM,iEACjCiJ,GAAWqF,YAAYye,EAAIF,MAE7B,IAAKE,EAAID,IAAIvmB,WAAY,CACvB,GAAI44B,GAAO/iC,KAAKqK,OAAOsmB,IAAIoS,IAC3B,KAAKl2B,EAAY,KAAM,IAAIjJ,OAAM,2DACjCm/B,GAAK7wB,YAAYye,EAAID,KAQvB,GANA1wB,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK0nC,gBAAgB1nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK6nC,aAAa7nC,KAAK2wB,IAAI2X,KAC3BtoC,KAAK+nC,sBAAsB/nC,KAAK2wB,IAAI2X,KACpCtoC,KAAKmoC,aAAanoC,KAAK2wB,IAAI2X,IAG3B,IAAIlgC,IAAapI,KAAKyT,KAAKrL,UAAW,IAAMpI,KAAKyT,KAAKrL,UAAY,KAC7DpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI2X,IAAIlgC,UAAY,WAAaA,EACjCuoB,EAAIF,KAAKroB,UAAY,YAAcA,EACnCuoB,EAAID,IAAItoB,UAAa,WAAaA,EAGlCpI,KAAKqG,MAAMqqB,IAAInd,OAASod,EAAID,IAAIQ,aAChClxB,KAAKqG,MAAMqqB,IAAIpd,MAAQqd,EAAID,IAAIM,YAC/BhxB,KAAKqG,MAAMoqB,KAAKnd,MAAQqd,EAAIF,KAAKO,YACjChxB,KAAKsT,MAAQqd,EAAI2X,IAAItX,YACrBhxB,KAAKuT,OAASod,EAAI2X,IAAIpX,aAEtBlxB,KAAKymC,OAAQ,EAGfzmC,KAAKmnC,qBAAqBxW,EAAI2X,MAOhClmC,EAAQ8R,UAAU6yB,KAAO,WAClB/mC,KAAKwmC,WACRxmC,KAAKyiB,UAOTrgB,EAAQ8R,UAAU4yB,KAAO,WACvB,GAAI9mC,KAAKwmC,UAAW,CAClB,GAAI7V,GAAM3wB,KAAK2wB,GAEXA,GAAI2X,IAAIn+B,YAAcwmB,EAAI2X,IAAIn+B,WAAWyH,YAAY+e,EAAI2X,KACzD3X,EAAIF,KAAKtmB,YAAawmB,EAAIF,KAAKtmB,WAAWyH,YAAY+e,EAAIF,MAC1DE,EAAID,IAAIvmB,YAAcwmB,EAAID,IAAIvmB,WAAWyH,YAAY+e,EAAID,KAE7D1wB,KAAKwmC,WAAY,IAQrBpkC,EAAQ8R,UAAU+yB,YAAc,WAC9B,GAAI52B,GAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,OAC3Cw4B,EAAQ7oC,KAAKkP,QAAQ25B,KAKvB7oC,MAAK6H,KADM,SAATghC,EACUx4B,EAAQrQ,KAAKsT,MAET,QAATu1B,EACKx4B,EAIAA,EAAQrQ,KAAKsT,MAAQ,EAInCtT,KAAK2wB,IAAI2X,IAAI56B,MAAM7F,KAAO7H,KAAK6H,KAAO,KAGtC7H,KAAK2wB,IAAIF,KAAK/iB,MAAM7F,KAAQwI,EAAQrQ,KAAKqG,MAAMoqB,KAAKnd,MAAQ,EAAK,KAGjEtT,KAAK2wB,IAAID,IAAIhjB,MAAM7F,KAAQwI,EAAQrQ,KAAKqG,MAAMqqB,IAAIpd,MAAQ,EAAK,MAOjElR,EAAQ8R,UAAUgzB,YAAc,WAC9B,GAAI/R,GAAcn1B,KAAKkP,QAAQimB,YAC3BmT,EAAMtoC,KAAK2wB,IAAI2X,IACf7X,EAAOzwB,KAAK2wB,IAAIF,KAChBC,EAAM1wB,KAAK2wB,IAAID,GAEnB,IAAmB,OAAfyE,EACFmT,EAAI56B,MAAMzF,KAAWjI,KAAKiI,KAAO,GAAK,KAEtCwoB,EAAK/iB,MAAMzF,IAAS,IACpBwoB,EAAK/iB,MAAM6F,OAAUvT,KAAKqK,OAAOpC,IAAMjI,KAAKiI,IAAM,EAAK,KACvDwoB,EAAK/iB,MAAM4W,OAAS,OAEjB,CACH,GAAIwkB,GAAgB9oC,KAAKqK,OAAOqsB,QAAQrwB,MAAMkN,OAC1C4d,EAAa2X,EAAgB9oC,KAAKqK,OAAOpC,IAAMjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,GAE7EqgC,GAAI56B,MAAMzF,KAAWjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,QAAU,GAAK,KACzEkd,EAAK/iB,MAAMzF,IAAU6gC,EAAgB3X,EAAc,KACnDV,EAAK/iB,MAAM4W,OAAS,IAGtBoM,EAAIhjB,MAAMzF,KAAQjI,KAAKqG,MAAMqqB,IAAInd,OAAS,EAAK,MAGjD1T,EAAOD,QAAUwC,GAKb,SAASvC,EAAQD,EAASM,GAc9B,QAASmC,GAAWoR,EAAM2oB,EAAYltB,GAcpC,GAbAlP,KAAKqG,OACHqqB,KACEzoB,IAAK,EACLqL,MAAO,EACPC,OAAQ,GAEVJ,SACEI,OAAQ,EACRw1B,WAAY,IAKZt1B,GACgB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAI1DvR,GAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAhCpC,GAAIhN,GAAOhC,EAAoB,GAmC/BmC,GAAU6R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAO5CG,EAAU6R,UAAU8yB,UAAY,SAAS1Q,GAGvC,GAAIlD,IAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,CAC3C,OAAQrQ,MAAKyT,KAAKpD,MAAQimB,EAAMjmB,MAAQ+iB,GAAcpzB,KAAKyT,KAAKpD,MAAQimB,EAAMhmB,IAAM8iB,GAMtF/wB,EAAU6R,UAAUuO,OAAS,WAC3B,GAAIkO,GAAM3wB,KAAK2wB,GA0Bf,IAzBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI/d,MAAQZ,SAASM,cAAc,OAInCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI/d,MAAMV,YAAYye,EAAIxd,SAG1Bwd,EAAID,IAAM1e,SAASM,cAAc,OACjCqe,EAAI/d,MAAMV,YAAYye,EAAID,KAG1BC,EAAI/d,MAAM,iBAAmB5S,KAE7BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI/d,MAAMzI,WAAY,CACzB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EACH,KAAM,IAAIn1B,OAAM,iEAElBm1B,GAAW7mB,YAAYye,EAAI/d,OAQ7B,GANA5S,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK0nC,gBAAgB1nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK6nC,aAAa7nC,KAAK2wB,IAAI/d,OAC3B5S,KAAK+nC,sBAAsB/nC,KAAK2wB,IAAI/d,OACpC5S,KAAKmoC,aAAanoC,KAAK2wB,IAAI/d,MAG3B,IAAIxK,IAAapI,KAAKyT,KAAKrL,UAAW,IAAMpI,KAAKyT,KAAKrL,UAAY,KAC7DpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI/d,MAAMxK,UAAa,aAAeA,EACtCuoB,EAAID,IAAItoB,UAAa,WAAaA,EAGlCpI,KAAKsT,MAAQqd,EAAI/d,MAAMoe,YACvBhxB,KAAKuT,OAASod,EAAI/d,MAAMse,aACxBlxB,KAAKqG,MAAMqqB,IAAIpd,MAAQqd,EAAID,IAAIM,YAC/BhxB,KAAKqG,MAAMqqB,IAAInd,OAASod,EAAID,IAAIQ,aAChClxB,KAAKqG,MAAM8M,QAAQI,OAASod,EAAIxd,QAAQ+d,aAGxCP,EAAIxd,QAAQzF,MAAMq7B,WAAa,EAAI/oC,KAAKqG,MAAMqqB,IAAIpd,MAAQ,KAG1Dqd,EAAID,IAAIhjB,MAAMzF,KAAQjI,KAAKuT,OAASvT,KAAKqG,MAAMqqB,IAAInd,QAAU,EAAK,KAClEod,EAAID,IAAIhjB,MAAM7F,KAAQ7H,KAAKqG,MAAMqqB,IAAIpd,MAAQ,EAAK,KAElDtT,KAAKymC,OAAQ,EAGfzmC,KAAKmnC,qBAAqBxW,EAAI/d,QAOhCvQ,EAAU6R,UAAU6yB,KAAO,WACpB/mC,KAAKwmC,WACRxmC,KAAKyiB,UAOTpgB,EAAU6R,UAAU4yB,KAAO,WACrB9mC,KAAKwmC,YACHxmC,KAAK2wB,IAAI/d,MAAMzI,YACjBnK,KAAK2wB,IAAI/d,MAAMzI,WAAWyH,YAAY5R,KAAK2wB,IAAI/d,OAGjD5S,KAAKwmC,WAAY,IAQrBnkC,EAAU6R,UAAU+yB,YAAc,WAChC,GAAI52B,GAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,MAE/CrQ,MAAK6H,KAAOwI,EAAQrQ,KAAKqG,MAAMqqB,IAAIpd,MAGnCtT,KAAK2wB,IAAI/d,MAAMlF,MAAM7F,KAAO7H,KAAK6H,KAAO,MAO1CxF,EAAU6R,UAAUgzB,YAAc,WAChC,GAAI/R,GAAcn1B,KAAKkP,QAAQimB,YAC3BviB,EAAQ5S,KAAK2wB,IAAI/d,KAGnBA,GAAMlF,MAAMzF,IADK,OAAfktB,EACgBn1B,KAAKiI,IAAM,KAGVjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,OAAU,MAItE1T,EAAOD,QAAUyC,GAKb,SAASxC,EAAQD,EAASM,GAe9B,QAASoC,GAAWmR,EAAM2oB,EAAYltB,GASpC,GARAlP,KAAKqG,OACH8M,SACEG,MAAO,IAGXtT,KAAK6kB,UAAW,EAGZpR,EAAM,CACR,GAAkB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAAKpT,GAE7D,IAAgBwG,QAAZ4M,EAAKnD,IACP,KAAM,IAAI1M,OAAM,kCAAoC6P,EAAKpT,IAI7D6B,EAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GA/BpC,GAAIw3B,GAASxmC,EAAoB,IAC7BgC,EAAOhC,EAAoB,GAiC/BoC,GAAU4R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAE5CI,EAAU4R,UAAUm0B,cAAgB,aAOpC/lC,EAAU4R,UAAU8yB,UAAY,SAAS1Q,GAEvC,MAAQt2B,MAAKyT,KAAKpD,MAAQimB,EAAMhmB,KAAStQ,KAAKyT,KAAKnD,IAAMgmB,EAAMjmB,OAMjE/N,EAAU4R,UAAUuO,OAAS,WAC3B,GAAIkO,GAAM3wB,KAAK2wB,GAsBf,IArBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI2X,IAAMt2B,SAASM,cAAc,OAIjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI2X,IAAIp2B,YAAYye,EAAIxd,SAGxBwd,EAAI2X,IAAI,iBAAmBtoC,KAE3BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI2X,IAAIn+B,WAAY,CACvB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EACH,KAAM,IAAIn1B,OAAM,iEAElBm1B,GAAW7mB,YAAYye,EAAI2X,KAQ7B,GANAtoC,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK0nC,gBAAgB1nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK6nC,aAAa7nC,KAAK2wB,IAAI2X,KAC3BtoC,KAAK+nC,sBAAsB/nC,KAAK2wB,IAAI2X,KACpCtoC,KAAKmoC,aAAanoC,KAAK2wB,IAAI2X,IAG3B,IAAIlgC,IAAapI,KAAKyT,KAAKrL,UAAa,IAAMpI,KAAKyT,KAAKrL,UAAa,KAChEpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI2X,IAAIlgC,UAAYpI,KAAKqoC,cAAgBjgC,EAGzCpI,KAAK6kB,SAA6D,WAAlD/c,OAAOygC,iBAAiB5X,EAAIxd,SAAS0R,SAKrD7kB,KAAK2wB,IAAIxd,QAAQzF,MAAMs7B,SAAW,OAClChpC,KAAKqG,MAAM8M,QAAQG,MAAQtT,KAAK2wB,IAAIxd,QAAQ6d,YAC5ChxB,KAAKuT,OAASvT,KAAK2wB,IAAI2X,IAAIpX,aAC3BlxB,KAAK2wB,IAAIxd,QAAQzF,MAAMs7B,SAAW,GAElChpC,KAAKymC,OAAQ,EAGfzmC,KAAKmnC,qBAAqBxW,EAAI2X,KAC9BtoC,KAAKipC,mBACLjpC,KAAKkpC,qBAOP5mC,EAAU4R,UAAU6yB,KAAO,WACpB/mC,KAAKwmC,WACRxmC,KAAKyiB,UAQTngB,EAAU4R,UAAU4yB,KAAO,WACzB,GAAI9mC,KAAKwmC,UAAW,CAClB,GAAI8B,GAAMtoC,KAAK2wB,IAAI2X,GAEfA,GAAIn+B,YACNm+B,EAAIn+B,WAAWyH,YAAY02B,GAG7BtoC,KAAKwmC,WAAY,IAarBlkC,EAAU4R,UAAU+yB,YAAc,SAASkC,GACzC,GAGIC,GACArY,EAJAsY,EAAcrpC,KAAKqK,OAAOiJ,MAC1BjD,EAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,OAC3CC,EAAMtQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKnD,MAK3BzJ,SAAdsiC,GAA2BA,KAAc,MAC9BE,EAATh5B,IACFA,GAASg5B,GAEP/4B,EAAM,EAAI+4B,IACZ/4B,EAAM,EAAI+4B,GAGd,IAAIC,GAAW9kC,KAAKJ,IAAIkM,EAAMD,EAAO,EAoBrC,QAlBIrQ,KAAK6kB,UACP7kB,KAAK6H,KAAOwI,EACZrQ,KAAKsT,MAAQg2B,EAAWtpC,KAAKqG,MAAM8M,QAAQG,MAC3Cyd,EAAe/wB,KAAKqG,MAAM8M,QAAQG,QAOlCtT,KAAK6H,KAAOwI,EACZrQ,KAAKsT,MAAQg2B,EACbvY,EAAevsB,KAAKL,IAAImM,EAAMD,EAAQ,EAAIrQ,KAAKkP,QAAQ8V,QAAShlB,KAAKqG,MAAM8M,QAAQG,QAGrFtT,KAAK2wB,IAAI2X,IAAI56B,MAAM7F,KAAO7H,KAAK6H,KAAO,KACtC7H,KAAK2wB,IAAI2X,IAAI56B,MAAM4F,MAAQg2B,EAAW,KAE9BtpC,KAAKkP,QAAQ25B,OACnB,IAAK,OACH7oC,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAO,GAC9B,MAEF,KAAK,QACH7H,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAOrD,KAAKJ,IAAKklC,EAAWvY,EAAe,EAAI/wB,KAAKkP,QAAQ8V,QAAU,GAAK,IAClG,MAEF,KAAK,SACHhlB,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAOrD,KAAKJ,KAAKklC,EAAWvY,EAAe,EAAI/wB,KAAKkP,QAAQ8V,SAAW,EAAG,GAAK,IACtG,MAEF,SAIMokB,EAFAppC,KAAK6kB,SACHvU,EAAM,EACM9L,KAAKJ,KAAKiM,EAAO,IAGhB0gB,EAIL,EAAR1gB,EACY7L,KAAKL,KAAKkM,EACnBC,EAAMD,EAAQ0gB,EAAe,EAAI/wB,KAAKkP,QAAQ8V,SAIrC,EAGlBhlB,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAOuhC,EAAc,OAQlD9mC,EAAU4R,UAAUgzB,YAAc,WAChC,GAAI/R,GAAcn1B,KAAKkP,QAAQimB,YAC3BmT,EAAMtoC,KAAK2wB,IAAI2X,GAGjBA,GAAI56B,MAAMzF,IADO,OAAfktB,EACcn1B,KAAKiI,IAAM,KAGVjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,OAAU,MAQpEjR,EAAU4R,UAAU+0B,iBAAmB,WACrC,GAAIjpC,KAAKumC,UAAYvmC,KAAKkP,QAAQm4B,SAASkC,aAAevpC,KAAK2wB,IAAI6Y,SAAU,CAE3E,GAAIA,GAAWx3B,SAASM,cAAc,MACtCk3B,GAASphC,UAAY,YACrBohC,EAASC,aAAezpC,KAGxB0mC,EAAO8C,GACL5/B,gBAAgB,IACf0K,GAAG,OAAQ,cAIdtU,KAAK2wB,IAAI2X,IAAIp2B,YAAYs3B,GACzBxpC,KAAK2wB,IAAI6Y,SAAWA,OAEZxpC,KAAKumC,UAAYvmC,KAAK2wB,IAAI6Y,WAE9BxpC,KAAK2wB,IAAI6Y,SAASr/B,YACpBnK,KAAK2wB,IAAI6Y,SAASr/B,WAAWyH,YAAY5R,KAAK2wB,IAAI6Y,UAEpDxpC,KAAK2wB,IAAI6Y,SAAW,OAQxBlnC,EAAU4R,UAAUg1B,kBAAoB,WACtC,GAAIlpC,KAAKumC,UAAYvmC,KAAKkP,QAAQm4B,SAASkC,aAAevpC,KAAK2wB,IAAI+Y,UAAW,CAE5E,GAAIA,GAAY13B,SAASM,cAAc,MACvCo3B,GAAUthC,UAAY,aACtBshC,EAAUC,cAAgB3pC,KAG1B0mC,EAAOgD,GACL9/B,gBAAgB,IACf0K,GAAG,OAAQ,cAIdtU,KAAK2wB,IAAI2X,IAAIp2B,YAAYw3B,GACzB1pC,KAAK2wB,IAAI+Y,UAAYA,OAEb1pC,KAAKumC,UAAYvmC,KAAK2wB,IAAI+Y,YAE9B1pC,KAAK2wB,IAAI+Y,UAAUv/B,YACrBnK,KAAK2wB,IAAI+Y,UAAUv/B,WAAWyH,YAAY5R,KAAK2wB,IAAI+Y,WAErD1pC,KAAK2wB,IAAI+Y,UAAY,OAIzB7pC,EAAOD,QAAU0C,GAKb,SAASzC,GAOb,QAAS0C,KACPvC,KAAKkP,QAAU,KACflP,KAAKqG,MAAQ,KAQf9D,EAAU2R,UAAUD,WAAa,SAAS/E,GACpCA,GACFvO,KAAKgF,OAAO3F,KAAKkP,QAASA,IAQ9B3M,EAAU2R,UAAUuO,OAAS,WAE3B,OAAO,GAMTlgB,EAAU2R,UAAUG,QAAU,aAU9B9R,EAAU2R,UAAU01B,WAAa,WAC/B,GAAIC,GAAW7pC,KAAKqG,MAAMyjC,iBAAmB9pC,KAAKqG,MAAMiN,OACpDtT,KAAKqG,MAAM0jC,kBAAoB/pC,KAAKqG,MAAMkN,MAK9C,OAHAvT,MAAKqG,MAAMyjC,eAAiB9pC,KAAKqG,MAAMiN,MACvCtT,KAAKqG,MAAM0jC,gBAAkB/pC,KAAKqG,MAAMkN,OAEjCs2B,GAGThqC,EAAOD,QAAU2C,GAKb,SAAS1C,EAAQD,EAASM,GAe9B,QAASsC,GAAa+yB,EAAMrmB,GAC1BlP,KAAKu1B,KAAOA,EAGZv1B,KAAKi1B,gBACH+U,iBAAiB,EAEjBC,QAASA,EACT7D,OAAQ,MAEVpmC,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAK0qB,OAAS,EAEd1qB,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GA5BlB,GAAIvO,GAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC2D,EAAS3D,EAAoB,IAC7B+pC,EAAU/pC,EAAoB,GA4BlCsC,GAAY0R,UAAY,GAAI3R,GAM5BC,EAAY0R,UAAUohB,QAAU,WAC9B,GAAI7C,GAAMzgB,SAASM,cAAc,MACjCmgB,GAAIrqB,UAAY,cAChBqqB,EAAI/kB,MAAMkX,SAAW,WACrB6N,EAAI/kB,MAAMzF,IAAM,MAChBwqB,EAAI/kB,MAAM6F,OAAS,OAEnBvT,KAAKyyB,IAAMA,GAMbjwB,EAAY0R,UAAUG,QAAU,WAC9BrU,KAAKkP,QAAQ86B,iBAAkB,EAC/BhqC,KAAKyiB,SAELziB,KAAKu1B,KAAO,MAQd/yB,EAAY0R,UAAUD,WAAa,SAAS/E,GACtCA,GAEFvO,EAAKyF,iBAAiB,kBAAmB,SAAU,WAAYpG,KAAKkP,QAASA,IAQjF1M,EAAY0R,UAAUuO,OAAS,WAC7B,GAAIziB,KAAKkP,QAAQ86B,gBAAiB,CAChC,GAAI3/B,GAASrK,KAAKu1B,KAAK5E,IAAIuZ,kBACvBlqC,MAAKyyB,IAAItoB,YAAcE,IAErBrK,KAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCpoB,EAAO6H,YAAYlS,KAAKyyB,KAExBzyB,KAAKqQ,QAGP,IAAI8uB,GAAM,GAAIv6B,OAAK,GAAIA,OAAOyC,UAAYrH,KAAK0qB,QAC3ClY,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAASqJ,GAE5BiH,EAASpmC,KAAKkP,QAAQ+6B,QAAQjqC,KAAKkP,QAAQk3B,QAC3CmB,EAAQnB,EAAOrK,QAAU,IAAMqK,EAAOxN,KAAO,KAAO/0B,EAAOs7B,GAAKoE,OAAO,8BAC3EgE,GAAQA,EAAMnhB,OAAO,GAAG+jB,cAAgB5C,EAAM6C,UAAU,GAExDpqC,KAAKyyB,IAAI/kB,MAAM7F,KAAO2K,EAAI,KAC1BxS,KAAKyyB,IAAI8U,MAAQA,MAIbvnC,MAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCzyB,KAAKkmB,MAGP,QAAO,GAMT1jB,EAAY0R,UAAU7D,MAAQ,WAG5B,QAASuF,KACPV,EAAGgR,MAGH,IAAI3hB,GAAQ2Q,EAAGqgB,KAAKe,MAAM8F,WAAWlnB,EAAGqgB,KAAKC,SAASzI,OAAOzZ,OAAO/O,MAChE6uB,EAAW,EAAI7uB,EAAQ,EACZ,IAAX6uB,IAAiBA,EAAW,IAC5BA,EAAW,MAAMA,EAAW,KAEhCle,EAAGuN,SAGHvN,EAAGm1B,iBAAmB9vB,WAAW3E,EAAQwd,GAd3C,GAAIle,GAAKlV,IAiBT4V,MAMFpT,EAAY0R,UAAUgS,KAAO,WACGrf,SAA1B7G,KAAKqqC,mBACP/vB,aAAata,KAAKqqC,wBACXrqC,MAAKqqC,mBAUhB7nC,EAAY0R,UAAUo2B,eAAiB,SAAS1R,GAC9C,GAAIrqB,GAAI5N,EAAKuG,QAAQ0xB,EAAM,QAAQvxB,UAC/B83B,GAAM,GAAIv6B,OAAOyC,SACrBrH,MAAK0qB,OAASnc,EAAI4wB,EAClBn/B,KAAKyiB,UAOPjgB,EAAY0R,UAAUq2B,eAAiB,WACrC,MAAO,IAAI3lC,OAAK,GAAIA,OAAOyC,UAAYrH,KAAK0qB,SAG9C7qB,EAAOD,QAAU4C,GAKb,SAAS3C,EAAQD,EAASM,GAiB9B,QAASuC,GAAY8yB,EAAMrmB,GACzBlP,KAAKu1B,KAAOA,EAGZv1B,KAAKi1B,gBACHuV,gBAAgB,EAChBP,QAASA,EACT7D,OAAQ,KACR/lC,GAAI,GAENL,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAGlCj1B,KAAKy2B,WADHvnB,GAAWA,EAAQ0pB,KACH1pB,EAAQ0pB,KAER,GAAIh0B,MAGxB5E,KAAKyqC,eAGLzqC,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAtClB,GAAIw3B,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC2D,EAAS3D,EAAoB,IAC7B+pC,EAAU/pC,EAAoB,GAqClCuC,GAAWyR,UAAY,GAAI3R,GAO3BE,EAAWyR,UAAUD,WAAa,SAAS/E,GACrCA,IAEFvO,EAAKyF,iBAAiB,iBAAkB,SAAU,UAAW,MAAOpG,KAAKkP,QAASA,GAG9ElP,KAAKkP,QAAQ7O,IACfL,KAAKyiB,WASXhgB,EAAWyR,UAAUohB,QAAU,WAC7B,GAAI7C,GAAMzgB,SAASM,cAAc,MACjCmgB,GAAIrqB,UAAY,aAChBqqB,EAAI/kB,MAAMkX,SAAW,WACrB6N,EAAI/kB,MAAMzF,IAAM,MAChBwqB,EAAI/kB,MAAM6F,OAAS,OACnBvT,KAAKyyB,IAAMA,CAEX,IAAIiY,GAAO14B,SAASM,cAAc,MAClCo4B,GAAKh9B,MAAMkX,SAAW,WACtB8lB,EAAKh9B,MAAMzF,IAAM,MACjByiC,EAAKh9B,MAAM7F,KAAO,QAClB6iC,EAAKh9B,MAAM6F,OAAS,OACpBm3B,EAAKh9B,MAAM4F,MAAQ,OACnBmf,EAAIvgB,YAAYw4B,GAGhB1qC,KAAK8D,OAAS4iC,EAAOjU,GACnBkY,iBAAiB,IAEnB3qC,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACnDA,KAAK8D,OAAOwQ,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OAC9CA,KAAK8D,OAAOwQ,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,QAMnDyC,EAAWyR,UAAUG,QAAU,WAC7BrU,KAAKkP,QAAQs7B,gBAAiB,EAC9BxqC,KAAKyiB,SAELziB,KAAK8D,OAAOqhC,QAAO,GACnBnlC,KAAK8D,OAAS,KAEd9D,KAAKu1B,KAAO,MAOd9yB,EAAWyR,UAAUuO,OAAS,WAC5B,GAAIziB,KAAKkP,QAAQs7B,eAAgB,CAC/B,GAAIngC,GAASrK,KAAKu1B,KAAK5E,IAAIuZ,kBACvBlqC,MAAKyyB,IAAItoB,YAAcE,IAErBrK,KAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCpoB,EAAO6H,YAAYlS,KAAKyyB,KAG1B,IAAIjgB,GAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAAS91B,KAAKy2B,YAEjC2P,EAASpmC,KAAKkP,QAAQ+6B,QAAQjqC,KAAKkP,QAAQk3B,QAC3CmB,EAAQnB,EAAOxN,KAAO,KAAO/0B,EAAO7D,KAAKy2B,YAAY8M,OAAO,8BAChEgE,GAAQA,EAAMnhB,OAAO,GAAG+jB,cAAgB5C,EAAM6C,UAAU,GAExDpqC,KAAKyyB,IAAI/kB,MAAM7F,KAAO2K,EAAI,KAC1BxS,KAAKyyB,IAAI8U,MAAQA,MAIbvnC,MAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,IAIzC,QAAO,GAOThwB,EAAWyR,UAAU02B,cAAgB,SAAShS,GAC5C54B,KAAKy2B,WAAa91B,EAAKuG,QAAQ0xB,EAAM,QACrC54B,KAAKyiB,UAOPhgB,EAAWyR,UAAU22B,cAAgB,WACnC,MAAO,IAAIjmC,MAAK5E,KAAKy2B,WAAWpvB,YAQlC5E,EAAWyR,UAAU8rB,aAAe,SAASn2B,GAC3C7J,KAAKyqC,YAAYzJ,UAAW,EAC5BhhC,KAAKyqC,YAAYhU,WAAaz2B,KAAKy2B,WAEnC5sB,EAAM49B,kBACN59B,EAAMD,kBAQRnH,EAAWyR,UAAU+rB,QAAU,SAAUp2B,GACvC,GAAK7J,KAAKyqC,YAAYzJ,SAAtB,CAEA,GAAIS,GAAS53B,EAAM2uB,QAAQiJ,OACvBjvB,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAAS91B,KAAKyqC,YAAYhU,YAAcgL,EAC3D7I,EAAO54B,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,EAEjCxS,MAAK4qC,cAAchS,GAGnB54B,KAAKu1B,KAAKE,QAAQhH,KAAK,cACrBpuB,GAAIL,KAAKkP,QAAQ7O,GACjBu4B,KAAM,GAAIh0B,MAAK5E,KAAKy2B,WAAWpvB,aAGjCwC,EAAM49B,kBACN59B,EAAMD,mBAQRnH,EAAWyR,UAAUgsB,WAAa,SAAUr2B,GACrC7J,KAAKyqC,YAAYzJ,WAGtBhhC,KAAKu1B,KAAKE,QAAQhH,KAAK,eACrBpuB,GAAIL,KAAKkP,QAAQ7O,GACjBu4B,KAAM,GAAIh0B,MAAK5E,KAAKy2B,WAAWpvB,aAGjCwC,EAAM49B,kBACN59B,EAAMD,mBAGR/J,EAAOD,QAAU6C,GAKb,SAAS5C,EAAQD,EAASM,GAe9B,QAASwC,GAAU6yB,EAAMrmB,EAAS47B,EAAKC,GACrC/qC,KAAKK,GAAKM,EAAK2E,aACftF,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACHE,YAAa,OACb6V,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACPC,iBAAkB,EAClBC,iBAAkB,EAClBC,aAAc,GACdC,aAAc,EACdC,UAAW,GACXj4B,MAAO,OACPmW,SAAS,EACT8T,YAAY,EACZD,aACEz1B,MAAO1D,IAAI0C,OAAWzC,IAAIyC,QAC1BwhB,OAAQlkB,IAAI0C,OAAWzC,IAAIyC,SAE7B0gC,OACE1/B,MAAOyiB,KAAKzjB,QACZwhB,OAAQiC,KAAKzjB,SAEf08B,QACE17B,MAAOk3B,SAAUl4B,QACjBwhB,OAAQ0W,SAAUl4B,UAItB7G,KAAK+qC,iBAAmBA,EACxB/qC,KAAKwrC,aAAeV,EACpB9qC,KAAKqG,SACLrG,KAAKyrC,aACHC,SACAC,UACApE,UAGFvnC,KAAK2wB,OAEL3wB,KAAKs2B,OAASjmB,MAAM,EAAGC,IAAI,GAE3BtQ,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAK4rC,iBAAmB,EAExB5rC,KAAKiU,WAAW/E,GAChBlP,KAAKsT,MAAQrP,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAC3DjL,KAAK6rC,SAAW7rC,KAAKsT,MACrBtT,KAAKuT,OAASvT,KAAKwrC,aAAata,aAChClxB,KAAK05B,QAAS,EAEd15B,KAAK8rC,WAAa,GAClB9rC,KAAK+rC,iBAAmB,GACxB/rC,KAAKgsC,aAAe,GAEpBhsC,KAAKisC,WAAa,EAClBjsC,KAAKksC,QAAS,EACdlsC,KAAKmsC,eACLnsC,KAAKosC,cAAe,EAGpBpsC,KAAK+0B,UACL/0B,KAAKqsC,eAAiB,EAGtBrsC,KAAKs1B,SAEL,IAAIpgB,GAAKlV,IACTA,MAAKu1B,KAAKE,QAAQnhB,GAAG,eAAgB,WACnCY,EAAGyb,IAAI2b,cAAc5+B,MAAMzF,IAAMiN,EAAGqgB,KAAKC,SAAS+W,UAAY,OApFlE,GAAI5rC,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BqC,EAAYrC,EAAoB,IAChC0B,EAAW1B,EAAoB,GAqFnCwC,GAASwR,UAAY,GAAI3R,GAGzBG,EAASwR,UAAUs4B,SAAW,SAASx5B,EAAOy5B,GACvCzsC,KAAK+0B,OAAO5uB,eAAe6M,KAC9BhT,KAAK+0B,OAAO/hB,GAASy5B,GAEvBzsC,KAAKqsC,gBAAkB,GAGzB3pC,EAASwR,UAAUw4B,YAAc,SAAS15B,EAAOy5B,GAC/CzsC,KAAK+0B,OAAO/hB,GAASy5B,GAGvB/pC,EAASwR,UAAUy4B,YAAc,SAAS35B,GACpChT,KAAK+0B,OAAO5uB,eAAe6M,WACtBhT,MAAK+0B,OAAO/hB,GACnBhT,KAAKqsC,gBAAkB,IAK3B3pC,EAASwR,UAAUD,WAAa,SAAU/E,GACxC,GAAIA,EAAS,CACX,GAAIuT,IAAS,CACTziB,MAAKkP,QAAQimB,aAAejmB,EAAQimB,aAAuCtuB,SAAxBqI,EAAQimB,cAC7D1S,GAAS,EAEX,IAAI9T,IACF,cACA,kBACA,kBACA,QACA,mBACA,mBACA,eACA,eACA,YACA,QACA,UACA,cACA,QACA,SACA,aAEFhO,GAAKyF,gBAAgBuI,EAAQ3O,KAAKkP,QAASA,GAE3ClP,KAAK6rC,SAAW5nC,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAEhD,GAAVwX,GAAkBziB,KAAK2wB,IAAIrQ,QAC7BtgB,KAAK8mC,OACL9mC,KAAK+mC,UASXrkC,EAASwR,UAAUohB,QAAU,WAC3Bt1B,KAAK2wB,IAAIrQ,MAAQtO,SAASM,cAAc,OACxCtS,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAKkP,QAAQoE,MAC1CtT,KAAK2wB,IAAIrQ,MAAM5S,MAAM6F,OAASvT,KAAKuT,OAEnCvT,KAAK2wB,IAAI2b,cAAgBt6B,SAASM,cAAc,OAChDtS,KAAK2wB,IAAI2b,cAAc5+B,MAAM4F,MAAQ,OACrCtT,KAAK2wB,IAAI2b,cAAc5+B,MAAM6F,OAASvT,KAAKuT,OAC3CvT,KAAK2wB,IAAI2b,cAAc5+B,MAAMkX,SAAW,WAGxC5kB,KAAK8qC,IAAM94B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAK8qC,IAAIp9B,MAAMkX,SAAW,WAC1B5kB,KAAK8qC,IAAIp9B,MAAMzF,IAAM,MACrBjI,KAAK8qC,IAAIp9B,MAAM6F,OAAS,OACxBvT,KAAK8qC,IAAIp9B,MAAM4F,MAAQ,OACvBtT,KAAK8qC,IAAIp9B,MAAMk/B,QAAU,QACzB5sC,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAK8qC;EAGlCpoC,EAASwR,UAAU24B,kBAAoB,WACrCjsC,EAAQ0Q,gBAAgBtR,KAAKmsC,YAE7B,IAAI35B,GACA+4B,EAAYvrC,KAAKkP,QAAQq8B,UACzBuB,EAAa,GACbC,EAAa,EACbt6B,EAAIs6B,EAAa,GAAMD,CAGzBt6B,GAD8B,QAA5BxS,KAAKkP,QAAQimB,YACX4X,EAGA/sC,KAAKsT,MAAQi4B,EAAYwB,CAG/B,KAAK,GAAI9T,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,KACvIj5B,KAAK+0B,OAAOkE,GAAS+T,SAASx6B,EAAGC,EAAGzS,KAAKmsC,YAAansC,KAAK8qC,IAAKS,EAAWuB,GAC3Er6B,GAAKq6B,EAAaC,GAKxBnsC,GAAQ+Q,gBAAgB3R,KAAKmsC,aAC7BnsC,KAAKosC,cAAe,GAGtB1pC,EAASwR,UAAU+4B,cAAgB,WACR,GAArBjtC,KAAKosC,eACPxrC,EAAQ0Q,gBAAgBtR,KAAKmsC,aAC7BvrC,EAAQ+Q,gBAAgB3R,KAAKmsC,aAC7BnsC,KAAKosC,cAAe,IAOxB1pC,EAASwR,UAAU6yB,KAAO,WACxB/mC,KAAK05B,QAAS,EACT15B,KAAK2wB,IAAIrQ,MAAMnW,aACc,QAA5BnK,KAAKkP,QAAQimB,YACfn1B,KAAKu1B,KAAK5E,IAAI9oB,KAAKqK,YAAYlS,KAAK2wB,IAAIrQ,OAGxCtgB,KAAKu1B,KAAK5E,IAAItI,MAAMnW,YAAYlS,KAAK2wB,IAAIrQ,QAIxCtgB,KAAK2wB,IAAI2b,cAAcniC,YAC1BnK,KAAKu1B,KAAK5E,IAAIuc,qBAAqBh7B,YAAYlS,KAAK2wB,IAAI2b,gBAO5D5pC,EAASwR,UAAU4yB,KAAO,WACxB9mC,KAAK05B,QAAS,EACV15B,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,OAG7CtgB,KAAK2wB,IAAI2b,cAAcniC,YACzBnK,KAAK2wB,IAAI2b,cAAcniC,WAAWyH,YAAY5R,KAAK2wB,IAAI2b,gBAU3D5pC,EAASwR,UAAUigB,SAAW,SAAU9jB,EAAOC,GAC1B,GAAftQ,KAAKksC,QAA8C,GAA3BlsC,KAAKkP,QAAQquB,YAA2C,IAArBv9B,KAAKgsC,cAC9D37B,EAAQ,IACVA,EAAQ,GAGZrQ,KAAKs2B,MAAMjmB,MAAQA,EACnBrQ,KAAKs2B,MAAMhmB,IAAMA,GAOnB5N,EAASwR,UAAUuO,OAAS,WAC1B,GAAIonB,IAAU,EACVsD,EAAe,CAGnBntC,MAAK2wB,IAAI2b,cAAc5+B,MAAMzF,IAAMjI,KAAKu1B,KAAKC,SAAS+W,UAAY,IAElE,KAAK,GAAItT,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,IACvIkU,IAIN,IAA2B,GAAvBntC,KAAKqsC,gBAAuC,GAAhBc,EAC9BntC,KAAK8mC,WAEF,CACH9mC,KAAK+mC,OACL/mC,KAAKuT,OAAStP,OAAOjE,KAAKwrC,aAAa99B,MAAM6F,OAAOtI,QAAQ,KAAK,KAGjEjL,KAAK2wB,IAAI2b,cAAc5+B,MAAM6F,OAASvT,KAAKuT,OAAS,KACpDvT,KAAKsT,MAAgC,GAAxBtT,KAAKkP,QAAQua,QAAkBxlB,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAAO,CAEjG,IAAI5E,GAAQrG,KAAKqG,MACbia,EAAQtgB,KAAK2wB,IAAIrQ,KAGrBA,GAAMlY,UAAY,WAGlBpI,KAAKotC,oBAEL,IAAIjY,GAAcn1B,KAAKkP,QAAQimB,YAC3B6V,EAAkBhrC,KAAKkP,QAAQ87B,gBAC/BC,EAAkBjrC,KAAKkP,QAAQ+7B,eAGnC5kC,GAAMgnC,iBAAmBrC,EAAkB3kC,EAAMinC,gBAAkB,EACnEjnC,EAAMknC,iBAAmBtC,EAAkB5kC,EAAMmnC,gBAAkB,EAEnEnnC,EAAMonC,eAAiBztC,KAAKu1B,KAAK5E,IAAIuc,qBAAqBlc,YAAchxB,KAAKisC,WAAajsC,KAAKsT,MAAQ,EAAItT,KAAKkP,QAAQk8B,iBACxH/kC,EAAMqnC,gBAAkB,EACxBrnC,EAAMsnC,eAAiB3tC,KAAKu1B,KAAK5E,IAAIuc,qBAAqBlc,YAAchxB,KAAKisC,WAAajsC,KAAKsT,MAAQ,EAAItT,KAAKkP,QAAQi8B,iBACxH9kC,EAAMunC,gBAAkB,EAGL,QAAfzY,GACF7U,EAAM5S,MAAMzF,IAAM,IAClBqY,EAAM5S,MAAM7F,KAAO,IACnByY,EAAM5S,MAAM4W,OAAS,GACrBhE,EAAM5S,MAAM4F,MAAQtT,KAAKsT,MAAQ,KACjCgN,EAAM5S,MAAM6F,OAASvT,KAAKuT,OAAS,KACnCvT,KAAKqG,MAAMiN,MAAQtT,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAC3CtT,KAAKqG,MAAMkN,OAASvT,KAAKu1B,KAAKC,SAAS3tB,KAAK0L,SAG5C+M,EAAM5S,MAAMzF,IAAM,GAClBqY,EAAM5S,MAAM4W,OAAS,IACrBhE,EAAM5S,MAAM7F,KAAO,IACnByY,EAAM5S,MAAM4F,MAAQtT,KAAKsT,MAAQ,KACjCgN,EAAM5S,MAAM6F,OAASvT,KAAKuT,OAAS,KACnCvT,KAAKqG,MAAMiN,MAAQtT,KAAKu1B,KAAKC,SAASnN,MAAM/U,MAC5CtT,KAAKqG,MAAMkN,OAASvT,KAAKu1B,KAAKC,SAASnN,MAAM9U,QAG/Cs2B,EAAU7pC,KAAK6tC,gBACfhE,EAAU7pC,KAAK4pC,cAAgBC,EAEL,GAAtB7pC,KAAKkP,QAAQg8B,MACflrC,KAAK6sC,oBAGL7sC,KAAKitC,gBAGPjtC,KAAK8tC,aAAa3Y,GAEpB,MAAO0U,IAOTnnC,EAASwR,UAAU25B,cAAgB,WACjC,GAAIhE,IAAU,CACdjpC,GAAQ0Q,gBAAgBtR,KAAKyrC,YAAYC,OACzC9qC,EAAQ0Q,gBAAgBtR,KAAKyrC,YAAYE,OAEzC,IAAIxW,GAAcn1B,KAAKkP,QAAqB,YAGxCkuB,EAAcp9B,KAAKksC,OAASlsC,KAAKqG,MAAMmnC,iBAAmB,GAAKxtC,KAAK+rC,iBAEpE5iB,EAAO,GAAIvnB,GACb5B,KAAKs2B,MAAMjmB,MACXrQ,KAAKs2B,MAAMhmB,IACX8sB,EACAp9B,KAAK2wB,IAAIrQ,MAAM4Q,aACflxB,KAAKkP,QAAQouB,YAAYt9B,KAAKkP,QAAQimB,aACvB,GAAfn1B,KAAKksC,QAAmBlsC,KAAKkP,QAAQquB,WAGvCv9B,MAAKmpB,KAAOA,CAGZ,IAAI2iB,IAAc9rC,KAAK2wB,IAAIrQ,MAAM4Q,aAAgB/H,EAAKyU,WAAa59B,KAAK2wB,IAAIrQ,MAAM4Q,aAAe/H,EAAKwV,gBAAoBxV,EAAKwV,YAAcxV,EAAKyU,WAAazU,EAAKA,KAEpKnpB,MAAK8rC,WAAaA,CAElB,IAAIiC,GAAgB/tC,KAAKuT,OAASu4B,EAC9BkC,EAAiB,CAGrB,IAAmB,GAAfhuC,KAAKksC,OAAiB,CACxBJ,EAAa9rC,KAAK+rC,iBAClBiC,EAAiBxpC,KAAK+pB,MAAOvuB,KAAK2wB,IAAIrQ,MAAM4Q,aAAe4a,EAAciC,EACzE,KAAK,GAAIloC,GAAI,EAAO,GAAMmoC,EAAVnoC,EAA0BA,IACxCsjB,EAAK2V,UAIP,IAFAiP,EAAgB/tC,KAAKuT,OAASu4B,EAEL,IAArB9rC,KAAKgsC,cAAiD,GAA3BhsC,KAAKkP,QAAQquB,WAAoB,CAC9D,GAAI0Q,GAAsB9kB,EAAKwU,UAAYxU,EAAKA,KAAQnpB,KAAKgsC,YAC7D,IAAIiC,EAAqB,EACvB,IAAK,GAAIpoC,GAAI,EAAOooC,EAAJpoC,EAAwBA,IAAMsjB,EAAKE,WAEhD,IAAyB,EAArB4kB,EACP,IAAK,GAAIpoC,GAAI,GAAQooC,EAALpoC,EAAyBA,IAAMsjB,EAAK2V,gBAKxDiP,IAAiB,GAInB/tC,MAAKkuC,YAAc/kB,EAAKwU,SACxB,IAMIoB,GANAoP,EAAiB,EAGjB/pC,EAAM,CAI8ByC,UAArC7G,KAAKkP,QAAQq0B,OAAOpO,KACrB4J,EAAW/+B,KAAKkP,QAAQq0B,OAAOpO,GAAa4J,UAG9C/+B,KAAKouC,aAAe,CAEpB,KADA,GAAI37B,GAAI,EACDrO,EAAMI,KAAK+pB,MAAMwf,IAAgB,CACtC5kB,EAAKE,OACL5W,EAAIjO,KAAK+pB,MAAMnqB,EAAM0nC,GACrBqC,EAAiB/pC,EAAM0nC,CACvB,IAAI5M,GAAU/V,EAAK+V,WAEfl/B,KAAKkP,QAAyB,iBAAgB,GAAXgwB,GAAmC,GAAfl/B,KAAKksC,QAAsD,GAAnClsC,KAAKkP,QAAyB,kBAC/GlP,KAAKquC,aAAa57B,EAAI,EAAG0W,EAAKC,WAAW2V,GAAW5J,EAAa,cAAen1B,KAAKqG,MAAMinC,iBAGzFpO,GAAWl/B,KAAKkP,QAAyB,iBAAoB,GAAflP,KAAKksC,QAChB,GAAnClsC,KAAKkP,QAAyB,iBAA6B,GAAflP,KAAKksC,QAA8B,GAAXhN,GAClEzsB,GAAK,GACPzS,KAAKquC,aAAa57B,EAAI,EAAG0W,EAAKC,WAAW2V,GAAW5J,EAAa,cAAen1B,KAAKqG,MAAMmnC,iBAE7FxtC,KAAKsuC,YAAY77B,EAAG0iB,EAAa,wBAAyBn1B,KAAKkP,QAAQi8B,iBAAkBnrC,KAAKqG,MAAMsnC,iBAGpG3tC,KAAKsuC,YAAY77B,EAAG0iB,EAAa,wBAAyBn1B,KAAKkP,QAAQk8B,iBAAkBprC,KAAKqG,MAAMonC,gBAGnF,GAAfztC,KAAKksC,QAAkC,GAAhB/iB,EAAK4S,UAC9B/7B,KAAKgsC,aAAe5nC,GAGtBA,IAIApE,KAAK4rC,iBADY,GAAf5rC,KAAKksC,OACiBz5B,GAAKzS,KAAKkuC,YAAc/kB,EAAK4S,SAG7B/7B,KAAK2wB,IAAIrQ,MAAM4Q,aAAe/H,EAAKwV,WAI7D,IAAI4P,GAAa,CACuB1nC,UAApC7G,KAAKkP,QAAQq4B,MAAMpS,IAAuEtuB,SAAzC7G,KAAKkP,QAAQq4B,MAAMpS,GAAa7K,OACnFikB,EAAavuC,KAAKqG,MAAMmoC,gBAE1B,IAAI9jB,GAA+B,GAAtB1qB,KAAKkP,QAAQg8B,MAAgB1mC,KAAKJ,IAAIpE,KAAKkP,QAAQq8B,UAAWgD,GAAcvuC,KAAKkP,QAAQm8B,aAAe,GAAKkD,EAAavuC,KAAKkP,QAAQm8B,aAAe,EA0BnK,OAvBIrrC,MAAKouC,aAAgBpuC,KAAKsT,MAAQoX,GAAmC,GAAxB1qB,KAAKkP,QAAQua,SAC5DzpB,KAAKsT,MAAQtT,KAAKouC,aAAe1jB,EACjC1qB,KAAKkP,QAAQoE,MAAQtT,KAAKsT,MAAQ,KAClC1S,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYC,OACzC9qC,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYE,QACzC3rC,KAAKyiB,SACLonB,GAAU,GAGH7pC,KAAKouC,aAAgBpuC,KAAKsT,MAAQoX,GAAmC,GAAxB1qB,KAAKkP,QAAQua,SAAmBzpB,KAAKsT,MAAQtT,KAAK6rC,UACtG7rC,KAAKsT,MAAQ9O,KAAKJ,IAAIpE,KAAK6rC,SAAS7rC,KAAKouC,aAAe1jB,GACxD1qB,KAAKkP,QAAQoE,MAAQtT,KAAKsT,MAAQ,KAClC1S,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYC,OACzC9qC,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYE,QACzC3rC,KAAKyiB,SACLonB,GAAU,IAGVjpC,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYC,OACzC9qC,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYE,QACzC9B,GAAU,GAGLA,GAGTnnC,EAASwR,UAAUu6B,aAAe,SAAUnqC,GAC1C,GAAIoqC,GAAgB1uC,KAAKkuC,YAAc5pC,EACnCqqC,EAAiBD,EAAgB1uC,KAAK4rC,gBAC1C,OAAO+C,IAGTjsC,EAASwR,UAAUylB,cAAgB,SAAUnnB,GAC3C,MAAOxS,MAAKkuC,YAAe17B,EAAIxS,KAAK4rC,kBAYtClpC,EAASwR,UAAUm6B,aAAe,SAAU57B,EAAG6X,EAAM6K,EAAa/sB,EAAWwmC,GAE3E,GAAI57B,GAAQpS,EAAQuR,cAAc,MAAMnS,KAAKyrC,YAAYE,OAAQ3rC,KAAK2wB,IAAIrQ,MAC1EtN,GAAM5K,UAAYA,EAClB4K,EAAMiS,UAAYqF,EACC,QAAf6K,GACFniB,EAAMtF,MAAM7F,KAAO,IAAM7H,KAAKkP,QAAQm8B,aAAe,KACrDr4B,EAAMtF,MAAM4b,UAAY,UAGxBtW,EAAMtF,MAAM2a,MAAQ,IAAMroB,KAAKkP,QAAQm8B,aAAe,KACtDr4B,EAAMtF,MAAM4b,UAAY,QAG1BtW,EAAMtF,MAAMzF,IAAMwK,EAAI,GAAMm8B,EAAkB5uC,KAAKkP,QAAQo8B,aAAe,KAE1EhhB,GAAQ,EAER,IAAIukB,GAAerqC,KAAKJ,IAAIpE,KAAKqG,MAAMyoC,eAAe9uC,KAAKqG,MAAM0oC,eAC7D/uC,MAAKouC,aAAe9jB,EAAKtkB,OAAS6oC,IACpC7uC,KAAKouC,aAAe9jB,EAAKtkB,OAAS6oC,IAYtCnsC,EAASwR,UAAUo6B,YAAc,SAAU77B,EAAG0iB,EAAa/sB,EAAWsiB,EAAQpX,GAC5E,GAAmB,GAAftT,KAAKksC,OAAgB,CACvB,GAAIzb,GAAO7vB,EAAQuR,cAAc,MAAMnS,KAAKyrC,YAAYC,MAAO1rC,KAAK2wB,IAAI2b,cACxE7b,GAAKroB,UAAYA,EACjBqoB,EAAKxL,UAAY,GAEE,QAAfkQ,EACF1E,EAAK/iB,MAAM7F,KAAQ7H,KAAKsT,MAAQoX,EAAU,KAG1C+F,EAAK/iB,MAAM2a,MAASroB,KAAKsT,MAAQoX,EAAU,KAG7C+F,EAAK/iB,MAAM4F,MAAQA,EAAQ,KAC3Bmd,EAAK/iB,MAAMzF,IAAMwK,EAAI,OASzB/P,EAASwR,UAAU45B,aAAe,SAAU3Y,GAI1C,GAHAv0B,EAAQ0Q,gBAAgBtR,KAAKyrC,YAAYlE,OAGD1gC,SAApC7G,KAAKkP,QAAQq4B,MAAMpS,IAAuEtuB,SAAzC7G,KAAKkP,QAAQq4B,MAAMpS,GAAa7K,KAAoB,CACvG,GAAIid,GAAQ3mC,EAAQuR,cAAc,MAAOnS,KAAKyrC,YAAYlE,MAAOvnC,KAAK2wB,IAAIrQ,MAC1EinB,GAAMn/B,UAAY,eAAiB+sB,EACnCoS,EAAMtiB,UAAYjlB,KAAKkP,QAAQq4B,MAAMpS,GAAa7K,KAGJzjB,SAA1C7G,KAAKkP,QAAQq4B,MAAMpS,GAAaznB,OAClC/M,EAAKoN,WAAWw5B,EAAOvnC,KAAKkP,QAAQq4B,MAAMpS,GAAaznB,OAGtC,QAAfynB,EACFoS,EAAM75B,MAAM7F,KAAO7H,KAAKqG,MAAMmoC,gBAAkB,KAGhDjH,EAAM75B,MAAM2a,MAAQroB,KAAKqG,MAAMmoC,gBAAkB,KAGnDjH,EAAM75B,MAAM4F,MAAQtT,KAAKuT,OAAS,KAIpC3S,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYlE,QAW3C7kC,EAASwR,UAAUk5B,mBAAqB,WAEtC,KAAM,mBAAqBptC,MAAKqG,OAAQ,CACtC,GAAI2oC,GAAYh9B,SAASi9B,eAAe,KACpCC,EAAmBl9B,SAASM,cAAc,MAC9C48B,GAAiB9mC,UAAY,sBAC7B8mC,EAAiBh9B,YAAY88B,GAC7BhvC,KAAK2wB,IAAIrQ,MAAMpO,YAAYg9B,GAE3BlvC,KAAKqG,MAAMinC,gBAAkB4B,EAAiBrpB,aAC9C7lB,KAAKqG,MAAM0oC,eAAiBG,EAAiB1uB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAYs9B,GAG7B,KAAM,mBAAqBlvC,MAAKqG,OAAQ,CACtC,GAAI8oC,GAAYn9B,SAASi9B,eAAe,KACpCG,EAAmBp9B,SAASM,cAAc,MAC9C88B,GAAiBhnC,UAAY,sBAC7BgnC,EAAiBl9B,YAAYi9B,GAC7BnvC,KAAK2wB,IAAIrQ,MAAMpO,YAAYk9B,GAE3BpvC,KAAKqG,MAAMmnC,gBAAkB4B,EAAiBvpB,aAC9C7lB,KAAKqG,MAAMyoC,eAAiBM,EAAiB5uB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAYw9B,GAG7B,KAAM,mBAAqBpvC,MAAKqG,OAAQ,CACtC,GAAIgpC,GAAYr9B,SAASi9B,eAAe,KACpCK,EAAmBt9B,SAASM,cAAc,MAC9Cg9B,GAAiBlnC,UAAY,sBAC7BknC,EAAiBp9B,YAAYm9B,GAC7BrvC,KAAK2wB,IAAIrQ,MAAMpO,YAAYo9B,GAE3BtvC,KAAKqG,MAAMmoC,gBAAkBc,EAAiBzpB,aAC9C7lB,KAAKqG,MAAMkpC,eAAiBD,EAAiB9uB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAY09B,KAI/BzvC,EAAOD,QAAU8C,GAKb,SAAS7C,EAAQD,EAASM,GAkB9B,QAASyC,GAAY+P,EAAOumB,EAAS/pB,EAASsgC,GAC5CxvC,KAAKK,GAAK44B,CACV,IAAItqB,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAAW,aAAa,SAAS,aAC5F3O,MAAKkP,QAAUvO,EAAK+N,sBAAsBC,EAAOO,GACjDlP,KAAKyvC,kBAAwC5oC,SAApB6L,EAAMtK,UAC/BpI,KAAKwvC,yBAA2BA,EAChCxvC,KAAK0vC,aAAe,EACpB1vC,KAAK4V,OAAOlD,GACkB,GAA1B1S,KAAKyvC,oBACPzvC,KAAKwvC,yBAAyB,IAAM,GAEtCxvC,KAAK22B,aACL32B,KAAKypB,QAA4B5iB,SAAlB6L,EAAM+W,SAAwB,EAAO/W,EAAM+W,QA5B5D,GAAI9oB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9ByvC,EAAOzvC,EAAoB,IAC3B0vC,EAAM1vC,EAAoB,IAC1B2vC,EAAS3vC,EAAoB,GAgCjCyC,GAAWuR,UAAU8iB,SAAW,SAAS/0B,GAC1B,MAATA,GACFjC,KAAK22B,UAAY10B,EACQ,GAArBjC,KAAKkP,QAAQ+H,MACfjX,KAAK22B,UAAU1f,KAAK,SAAUrR,EAAEa,GAAI,MAAOb,GAAE4M,EAAI/L,EAAE+L,KAIrDxS,KAAK22B,cASTh0B,EAAWuR,UAAU47B,gBAAkB,SAASvpB,GAC9CvmB,KAAK0vC,aAAenpB,GAQtB5jB,EAAWuR,UAAUD,WAAa,SAAS/E,GACzC,GAAgBrI,SAAZqI,EAAuB,CACzB,GAAIP,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAC3DhO,GAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAASA,GAE/CvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UAEpCA,EAAQ6gC,YACuB,gBAAtB7gC,GAAQ6gC,YACb7gC,EAAQ6gC,WAAWC,kBACqB,WAAtC9gC,EAAQ6gC,WAAWC,gBACrBhwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,EAEa,WAAtC/gC,EAAQ6gC,WAAWC,gBAC1BhwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,GAGhCjwC,KAAKkP,QAAQ6gC,WAAWC,gBAAkB,cAC1ChwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,KAOhB,QAAtBjwC,KAAKkP,QAAQxB,MACf1N,KAAKmH,KAAO,GAAIwoC,GAAK3vC,KAAKK,GAAIL,KAAKkP,SAEN,OAAtBlP,KAAKkP,QAAQxB,MACpB1N,KAAKmH,KAAO,GAAIyoC,GAAI5vC,KAAKK,GAAIL,KAAKkP,SAEL,UAAtBlP,KAAKkP,QAAQxB,QACpB1N,KAAKmH,KAAO,GAAI0oC,GAAO7vC,KAAKK,GAAIL,KAAKkP,WASzCvM,EAAWuR,UAAU0B,OAAS,SAASlD,GACrC1S,KAAK0S,MAAQA,EACb1S,KAAKmT,QAAUT,EAAMS,SAAW,QAChCnT,KAAKoI,UAAYsK,EAAMtK,WAAapI,KAAKoI,WAAa,aAAepI,KAAKwvC,yBAAyB,GAAK,GACxGxvC,KAAKypB,QAA4B5iB,SAAlB6L,EAAM+W,SAAwB,EAAO/W,EAAM+W,QAC1DzpB,KAAK0N,MAAQgF,EAAMhF,MACnB1N,KAAKiU,WAAWvB,EAAMxD,UAcxBvM,EAAWuR,UAAU84B,SAAW,SAASx6B,EAAGC,EAAGlB,EAAe2+B,EAAc3E,EAAWuB,GACrF,GACIqD,GAAMC,EADNC,EAA0B,GAAbvD,EAGbwD,EAAU1vC,EAAQiR,cAAc,OAAQN,EAAe2+B,EAO3D,IANAI,EAAQx9B,eAAe,KAAM,IAAKN,GAClC89B,EAAQx9B,eAAe,KAAM,IAAKL,EAAI49B,GACtCC,EAAQx9B,eAAe,KAAM,QAASy4B,GACtC+E,EAAQx9B,eAAe,KAAM,SAAU,EAAEu9B,GACzCC,EAAQx9B,eAAe,KAAM,QAAS,WAEZ,QAAtB9S,KAAKkP,QAAQxB,MACfyiC,EAAOvvC,EAAQiR,cAAc,OAAQN,EAAe2+B,GACpDC,EAAKr9B,eAAe,KAAM,QAAS9S,KAAKoI,WACtBvB,SAAf7G,KAAK0N,OACNyiC,EAAKr9B,eAAe,KAAM,QAAS9S,KAAK0N,OAG1CyiC,EAAKr9B,eAAe,KAAM,IAAK,IAAMN,EAAI,IAAIC,EAAE,MAAQD,EAAI+4B,GAAa,IAAI94B,GACzC,GAA/BzS,KAAKkP,QAAQqhC,OAAOphC,UACtBihC,EAAWxvC,EAAQiR,cAAc,OAAQN,EAAe2+B,GACjB,OAAnClwC,KAAKkP,QAAQqhC,OAAOpb,YACtBib,EAASt9B,eAAe,KAAM,IAAK,IAAIN,EAAE,MAAQC,EAAI49B,GACnD,IAAI79B,EAAE,IAAIC,EAAE,MAAOD,EAAI+4B,GAAa,IAAI94B,EAAE,MAAOD,EAAI+4B,GAAa,KAAO94B,EAAI49B,IAG/ED,EAASt9B,eAAe,KAAM,IAAK,IAAIN,EAAE,IAAIC,EAAE,KACzCD,EAAE,KAAOC,EAAI49B,GAAc,MACzB79B,EAAI+4B,GAAa,KAAO94B,EAAI49B,GAClC,KAAM79B,EAAI+4B,GAAa,IAAI94B,GAE/B29B,EAASt9B,eAAe,KAAM,QAAS9S,KAAKoI,UAAY,cAGnB,GAAnCpI,KAAKkP,QAAQ2D,WAAW1D,SAC1BvO,EAAQ2R,UAAUC,EAAI,GAAM+4B,EAAU94B,EAAGzS,KAAMuR,EAAe2+B,OAG7D,CACH,GAAIM,GAAWhsC,KAAK+pB,MAAM,GAAMgd,GAC5BkF,EAAajsC,KAAK+pB,MAAM,GAAMue,GAC9B4D,EAAalsC,KAAK+pB,MAAM,IAAOue,GAE/BpiB,EAASlmB,KAAK+pB,OAAOgd,EAAa,EAAIiF,GAAW,EAErD5vC,GAAQyS,QAAQb,EAAI,GAAIg+B,EAAW9lB,EAAYjY,EAAI49B,EAAaI,EAAa,EAAGD,EAAUC,EAAYzwC,KAAKoI,UAAY,OAAQmJ,EAAe2+B,GAC9ItvC,EAAQyS,QAAQb,EAAI,IAAIg+B,EAAW9lB,EAAS,EAAGjY,EAAI49B,EAAaK,EAAa,EAAGF,EAAUE,EAAY1wC,KAAKoI,UAAY,OAAQmJ,EAAe2+B,KAYlJvtC,EAAWuR,UAAUilB,UAAY,SAASoS,EAAWuB,GACnD,GAAIhC,GAAM94B,SAASC,gBAAgB,6BAA6B,MAEhE,OADAjS,MAAKgtC,SAAS,EAAE,GAAIF,KAAchC,EAAIS,EAAUuB,IACxC6D,KAAM7F,EAAK93B,MAAOhT,KAAKmT,QAASgiB,YAAYn1B,KAAKkP,QAAQ0hC,mBAGnEjuC,EAAWuR,UAAU28B,UAAY,SAASC,GACxC,MAAO9wC,MAAKmH,KAAK0pC,UAAUC,IAG7BnuC,EAAWuR,UAAU68B,KAAO,SAAS9Y,EAASvlB,EAAOs+B,GACnDhxC,KAAKmH,KAAK4pC,KAAK9Y,EAASvlB,EAAOs+B,IAIjCnxC,EAAOD,QAAU+C,GAKb,SAAS9C,EAAQD,EAASM,GAY9B,QAAS0C,GAAOq2B,EAASxlB,EAAMijB,GAC7B12B,KAAKi5B,QAAUA,EACfj5B,KAAKojC,aACLpjC,KAAK0oC,cAAgB,EACrB1oC,KAAKixC,gBAAkBx9B,GAAQA,EAAKy9B,cACpClxC,KAAK02B,QAAUA,EAEf12B,KAAK2wB,OACL3wB,KAAKqG,OACH2M,OACEM,MAAO,EACPC,OAAQ,IAGZvT,KAAKoI,UAAY,KAEjBpI,KAAKiC,SACLjC,KAAKmxC,gBACLnxC,KAAKqP,cACH+hC,WACAC,UAEFrxC,KAAKsxC,kBAAmB,CACxB,IAAIp8B,GAAKlV,IACTA,MAAK02B,QAAQnB,KAAKE,QAAQnhB,GAAG,mBAAoB,WAC/CY,EAAGo8B,kBAAmB,IAGxBtxC,KAAKs1B,UAELt1B,KAAK+Y,QAAQtF,GAxCf,CAAA,GAAI9S,GAAOT,EAAoB,GAC3B4B,EAAQ5B,EAAoB,GAChBA,GAAoB,IA6CpC0C,EAAMsR,UAAUohB,QAAU,WACxB,GAAItiB,GAAQhB,SAASM,cAAc,MACnCU,GAAM5K,UAAY,SAClBpI,KAAK2wB,IAAI3d,MAAQA,CAEjB,IAAIu+B,GAAQv/B,SAASM,cAAc,MACnCi/B,GAAMnpC,UAAY,QAClB4K,EAAMd,YAAYq/B,GAClBvxC,KAAK2wB,IAAI4gB,MAAQA,CAEjB,IAAIxY,GAAa/mB,SAASM,cAAc,MACxCymB,GAAW3wB,UAAY,QACvB2wB,EAAW,kBAAoB/4B,KAC/BA,KAAK2wB,IAAIoI,WAAaA,EAEtB/4B,KAAK2wB,IAAI9jB,WAAamF,SAASM,cAAc,OAC7CtS,KAAK2wB,IAAI9jB,WAAWzE,UAAY,QAEhCpI,KAAK2wB,IAAIoS,KAAO/wB,SAASM,cAAc,OACvCtS,KAAK2wB,IAAIoS,KAAK36B,UAAY,QAK1BpI,KAAK2wB,IAAI6gB,OAASx/B,SAASM,cAAc,OACzCtS,KAAK2wB,IAAI6gB,OAAO9jC,MAAM2rB,WAAa,SACnCr5B,KAAK2wB,IAAI6gB,OAAOvsB,UAAY,IAC5BjlB,KAAK2wB,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAI6gB,SAO3C5uC,EAAMsR,UAAU6E,QAAU,SAAStF,GAEjC,GAAIN,GAAUM,GAAQA,EAAKN,OACvBA,aAAmBy0B,SACrB5nC,KAAK2wB,IAAI4gB,MAAMr/B,YAAYiB,GAG3BnT,KAAK2wB,IAAI4gB,MAAMtsB,UADIpe,SAAZsM,GAAqC,OAAZA,EACLA,EAGAnT,KAAKi5B,SAAW,GAI7Cj5B,KAAK2wB,IAAI3d,MAAMu0B,MAAQ9zB,GAAQA,EAAK8zB,OAAS,GAExCvnC,KAAK2wB,IAAI4gB,MAAM5sB,WAIlBhkB,EAAK8H,gBAAgBzI,KAAK2wB,IAAI4gB,MAAO,UAHrC5wC,EAAKwH,aAAanI,KAAK2wB,IAAI4gB,MAAO,SAOpC,IAAInpC,GAAYqL,GAAQA,EAAKrL,WAAa,IACtCA,IAAapI,KAAKoI,YAChBpI,KAAKoI,YACPzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAI3d,MAAOhT,KAAKoI,WAC1CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAIoI,WAAY/4B,KAAKoI,WAC/CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAI9jB,WAAY7M,KAAKoI,WAC/CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAIoS,KAAM/iC,KAAKoI,YAE3CzH,EAAKwH,aAAanI,KAAK2wB,IAAI3d,MAAO5K,GAClCzH,EAAKwH,aAAanI,KAAK2wB,IAAIoI,WAAY3wB,GACvCzH,EAAKwH,aAAanI,KAAK2wB,IAAI9jB,WAAYzE,GACvCzH,EAAKwH,aAAanI,KAAK2wB,IAAIoS,KAAM36B,GACjCpI,KAAKoI,UAAYA,GAIfpI,KAAK0N,QACP/M,EAAKuN,cAAclO,KAAK2wB,IAAI3d,MAAOhT,KAAK0N,OACxC1N,KAAK0N,MAAQ,MAEX+F,GAAQA,EAAK/F,QACf/M,EAAKoN,WAAW/N,KAAK2wB,IAAI3d,MAAOS,EAAK/F,OACrC1N,KAAK0N,MAAQ+F,EAAK/F,QAQtB9K,EAAMsR,UAAUu9B,cAAgB,WAC9B,MAAOzxC,MAAKqG,MAAM2M,MAAMM,OAW1B1Q,EAAMsR,UAAUuO,OAAS,SAAS6T,EAAO3b,EAAQ+2B,GAC/C,GAAI7H,IAAU,EAIV8H,EAAe3xC,KAAK2wB,IAAI6gB,OAAO3rB,YAanC,IAZI8rB,GAAgB3xC,KAAK4xC,mBACvB5xC,KAAK4xC,iBAAmBD,EAExBhxC,EAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GACjCA,EAAK22B,OAAQ,EACT32B,EAAK02B,WAAW12B,EAAK2S,WAG3BivB,GAAU,GAI8B,kBAA/B1xC,MAAK02B,QAAQxnB,QAAQsH,MAAsB,CAGpD,GAAIk7B,EAAS,CAIX,GAAIx8B,GAAKlV,KACLmpC,GAAY,CAChBxoC,GAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GAC5BA,EAAK02B,YACR12B,EAAK2S,SACLvN,EAAGi8B,aAAa5oC,KAAKuH,IAEvBA,EAAKm3B,YAAYkC,IAInB,IAAI0I,GAAqB7xC,KAAKqP,aAAa+hC,QAAQrlC,QAAQkL,KAAK,SAAUrR,EAAGa,GAC3E,MAAOyO,GAAGwhB,QAAQxnB,QAAQsH,MAAM5Q,EAAE6N,KAAMhN,EAAEgN,OAE5C3R,GAAMA,MAAM+vC,EAAoBl3B,GAAQ,GAG1C3a,KAAKmxC,aAAenxC,KAAK8xC,oBAAoB9xC,KAAKqP,aAAcrP,KAAKmxC,aAAc7a,OAInFt2B,MAAKmxC,aAAenxC,KAAK8xC,oBAAoB9xC,KAAKqP,aAAcrP,KAAKmxC,aAAc7a,GAE/Et2B,KAAK02B,QAAQxnB,QAAQpN,MACvBA,EAAMA,MAAM9B,KAAKmxC,aAAcx2B,EAAQ+2B,GAGvC5vC,EAAMqhC,QAAQnjC,KAAKmxC,aAAcx2B,EAAQ3a,KAAKojC,UAKlD,IAAI7vB,GAASvT,KAAK+xC,iBAAiBp3B,GAG/Boe,EAAa/4B,KAAK2wB,IAAIoI,UAC1B/4B,MAAKiI,IAAM8wB,EAAWiZ,UACtBhyC,KAAK6H,KAAOkxB,EAAWkZ,WACvBjyC,KAAKsT,MAAQylB,EAAW/H,YACxB6Y,EAAUlpC,EAAKqI,eAAehJ,KAAM,SAAUuT,IAAWs2B,EAGzDA,EAAUlpC,EAAKqI,eAAehJ,KAAKqG,MAAM2M,MAAO,QAAShT,KAAK2wB,IAAI4gB,MAAM/wB,cAAgBqpB,EACxFA,EAAUlpC,EAAKqI,eAAehJ,KAAKqG,MAAM2M,MAAO,SAAUhT,KAAK2wB,IAAI4gB,MAAM1rB,eAAiBgkB,EAG1F7pC,KAAK2wB,IAAI9jB,WAAWa,MAAM6F,OAAUA,EAAS,KAC7CvT,KAAK2wB,IAAIoI,WAAWrrB,MAAM6F,OAAUA,EAAS,KAC7CvT,KAAK2wB,IAAI3d,MAAMtF,MAAM6F,OAASA,EAAS,IAGvC,KAAK,GAAI1N,GAAI,EAAGqsC,EAAKlyC,KAAKmxC,aAAanrC,OAAYksC,EAAJrsC,EAAQA,IAAK,CAC1D,GAAIiK,GAAO9P,KAAKmxC,aAAatrC,EAC7BiK,GAAKo3B,YAAYvsB,GAGnB,MAAOkvB,IASTjnC,EAAMsR,UAAU69B,iBAAmB,SAAUp3B,GAE3C,GAAIpH,GACA49B,EAAenxC,KAAKmxC,YAGxBnxC,MAAKmyC,gBACL,IAAIj9B,GAAKlV,IACT,IAAImxC,EAAanrC,OAAQ,CACvB,GAAI7B,GAAMgtC,EAAa,GAAGlpC,IACtB7D,EAAM+sC,EAAa,GAAGlpC,IAAMkpC,EAAa,GAAG59B,MAahD,IAZA5S,EAAKiI,QAAQuoC,EAAc,SAAUrhC,GACnC3L,EAAMK,KAAKL,IAAIA,EAAK2L,EAAK7H,KACzB7D,EAAMI,KAAKJ,IAAIA,EAAM0L,EAAK7H,IAAM6H,EAAKyD,QACV1M,SAAvBiJ,EAAK2D,KAAK6vB,WACZpuB,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU/vB,OAAS/O,KAAKJ,IAAI8Q,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU/vB,OAAOzD,EAAKyD,QAChG2B,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU7Z,SAAU,KAO3CtlB,EAAMwW,EAAOooB,KAAM,CAErB,GAAIrY,GAASvmB,EAAMwW,EAAOooB,IAC1B3+B,IAAOsmB,EACP/pB,EAAKiI,QAAQuoC,EAAc,SAAUrhC,GACnCA,EAAK7H,KAAOyiB,IAGhBnX,EAASnP,EAAMuW,EAAO7K,KAAK2W,SAAW,MAGtClT,GAASoH,EAAOooB,KAAOpoB,EAAO7K,KAAK2W,QAIrC,OAFAlT,GAAS/O,KAAKJ,IAAImP,EAAQvT,KAAKqG,MAAM2M,MAAMO,SAQ7C3Q,EAAMsR,UAAU6yB,KAAO,WAChB/mC,KAAK2wB,IAAI3d,MAAM7I,YAClBnK,KAAK02B,QAAQ/F,IAAIqI,SAAS9mB,YAAYlS,KAAK2wB,IAAI3d,OAG5ChT,KAAK2wB,IAAIoI,WAAW5uB,YACvBnK,KAAK02B,QAAQ/F,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAIoI,YAG9C/4B,KAAK2wB,IAAI9jB,WAAW1C,YACvBnK,KAAK02B,QAAQ/F,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAI9jB,YAG9C7M,KAAK2wB,IAAIoS,KAAK54B,YACjBnK,KAAK02B,QAAQ/F,IAAIoS,KAAK7wB,YAAYlS,KAAK2wB,IAAIoS,OAO/CngC,EAAMsR,UAAU4yB,KAAO,WACrB,GAAI9zB,GAAQhT,KAAK2wB,IAAI3d,KACjBA,GAAM7I,YACR6I,EAAM7I,WAAWyH,YAAYoB,EAG/B,IAAI+lB,GAAa/4B,KAAK2wB,IAAIoI,UACtBA,GAAW5uB,YACb4uB,EAAW5uB,WAAWyH,YAAYmnB,EAGpC,IAAIlsB,GAAa7M,KAAK2wB,IAAI9jB,UACtBA,GAAW1C,YACb0C,EAAW1C,WAAWyH,YAAY/E,EAGpC,IAAIk2B,GAAO/iC,KAAK2wB,IAAIoS,IAChBA,GAAK54B,YACP44B,EAAK54B,WAAWyH,YAAYmxB,IAQhCngC,EAAMsR,UAAUF,IAAM,SAASlE,GAc7B,GAbA9P,KAAKiC,MAAM6N,EAAKzP,IAAMyP,EACtBA,EAAK+2B,UAAU7mC,MAGY6G,SAAvBiJ,EAAK2D,KAAK6vB,WAC+Bz8B,SAAvC7G,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,YAC3BtjC,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,WAAa/vB,OAAO,EAAGkW,SAAS,EAAO/gB,MAAM1I,KAAK0oC,cAAezmC,UAC1FjC,KAAK0oC,iBAEP1oC,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,UAAUrhC,MAAMsG,KAAKuH,IAEhD9P,KAAKoyC,iBAEkC,IAAnCpyC,KAAKmxC,aAAanqC,QAAQ8I,GAAa,CACzC,GAAIwmB,GAAQt2B,KAAK02B,QAAQnB,KAAKe,KAC9Bt2B,MAAKqyC,gBAAgBviC,EAAM9P,KAAKmxC,aAAc7a,KAIlD1zB,EAAMsR,UAAUk+B,eAAiB,WAC/B,GAA6BvrC,SAAzB7G,KAAKixC,gBAA+B,CACtC,GAAIqB,KACJ,IAAmC,gBAAxBtyC,MAAKixC,gBAA6B,CAC3C,IAAK,GAAI3N,KAAYtjC,MAAKojC,UACxBkP,EAAU/pC,MAAM+6B,SAAUA,EAAUiP,UAAWvyC,KAAKojC,UAAUE,GAAUrhC,MAAM,GAAGwR,KAAKzT,KAAKixC,kBAE7FqB,GAAUr7B,KAAK,SAAUrR,EAAGa,GAC1B,MAAOb,GAAE2sC,UAAY9rC,EAAE8rC,gBAGtB,IAAmC,kBAAxBvyC,MAAKixC,gBAA+B,CAClD,IAAK,GAAI3N,KAAYtjC,MAAKojC,UACxBkP,EAAU/pC,KAAKvI,KAAKojC,UAAUE,GAAUrhC,MAAM,GAAGwR,KAEnD6+B,GAAUr7B,KAAKjX,KAAKixC,iBAGtB,GAAIqB,EAAUtsC,OAAS,EACrB,IAAK,GAAIH,GAAI,EAAGA,EAAIysC,EAAUtsC,OAAQH,IACpC7F,KAAKojC,UAAUkP,EAAUzsC,GAAGy9B,UAAU56B,MAAQ7C,IAMtDjD,EAAMsR,UAAUi+B,eAAiB,WAC/B,IAAK,GAAI7O,KAAYtjC,MAAKojC,UACpBpjC,KAAKojC,UAAUj9B,eAAem9B,KAChCtjC,KAAKojC,UAAUE,GAAU7Z,SAAU,IASzC7mB,EAAMsR,UAAUkD,OAAS,SAAStH,SACzB9P,MAAKiC,MAAM6N,EAAKzP,IACvByP,EAAK+2B,UAAU,KAGf,IAAIn+B,GAAQ1I,KAAKmxC,aAAanqC,QAAQ8I,EACzB,KAATpH,GAAa1I,KAAKmxC,aAAaxoC,OAAOD,EAAO,IAUnD9F,EAAMsR,UAAUszB,kBAAoB,SAAS13B,GAC3C9P,KAAK02B,QAAQ8b,WAAW1iC,EAAKzP,KAO/BuC,EAAMsR,UAAUsC,MAAQ,WAKtB,IAAK,GAJDzN,GAAQpI,EAAKmI,QAAQ9I,KAAKiC,OAC1BwwC,KACAC,KAEK7sC,EAAI,EAAGA,EAAIkD,EAAM/C,OAAQH,IACNgB,SAAtBkC,EAAMlD,GAAG4N,KAAKnD,KAChBoiC,EAASnqC,KAAKQ,EAAMlD,IAEtB4sC,EAAWlqC,KAAKQ,EAAMlD,GAExB7F,MAAKqP,cACH+hC,QAASqB,EACTpB,MAAOqB,GAGT5wC,EAAM2gC,aAAaziC,KAAKqP,aAAa+hC,SACrCtvC,EAAM4gC,WAAW1iC,KAAKqP,aAAagiC,QAYrCzuC,EAAMsR,UAAU49B,oBAAsB,SAASziC,EAAcsjC,EAAiBrc,GAC5E,GAKIxmB,GAAMjK,EALNsrC,KACAyB,KACAxf,GAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,EACvCwiC,EAAavc,EAAMjmB,MAAQ+iB,EAC3B0f,EAAaxc,EAAMhmB,IAAM8iB,EAIzB9jB,EAAiB,SAAUhL,GAC7B,MAAiBuuC,GAARvuC,EAA6B,GACpBwuC,GAATxuC,EAA8B,EACA,EAMzC,IAAIquC,EAAgB3sC,OAAS,EAC3B,IAAKH,EAAI,EAAGA,EAAI8sC,EAAgB3sC,OAAQH,IACtC7F,KAAK+yC,6BAA6BJ,EAAgB9sC,GAAIsrC,EAAcyB,EAAoBtc,EAK5F,IAAI0c,GAAoBryC,EAAKyO,mBAAmBC,EAAa+hC,QAAS9hC,EAAgB,OAAO,QAS7F,IANAtP,KAAKizC,cAAcD,EAAmB3jC,EAAa+hC,QAASD,EAAcyB,EAAoB,SAAU9iC,GACtG,MAAQA,GAAK2D,KAAKpD,MAAQwiC,GAAc/iC,EAAK2D,KAAKpD,MAAQyiC,IAK/B,GAAzB9yC,KAAKsxC,iBAEP,IADAtxC,KAAKsxC,kBAAmB,EACnBzrC,EAAI,EAAGA,EAAIwJ,EAAagiC,MAAMrrC,OAAQH,IACzC7F,KAAK+yC,6BAA6B1jC,EAAagiC,MAAMxrC,GAAIsrC,EAAcyB,EAAoBtc,OAG1F,CAEH,GAAI4c,GAAkBvyC,EAAKyO,mBAAmBC,EAAagiC,MAAO/hC,EAAgB,OAAO,MAGzFtP,MAAKizC,cAAcC,EAAiB7jC,EAAagiC,MAAOF,EAAcyB,EAAoB,SAAU9iC,GAClG,MAAQA,GAAK2D,KAAKnD,IAAMuiC,GAAc/iC,EAAK2D,KAAKnD,IAAMwiC,IAM1D,IAAKjtC,EAAI,EAAGA,EAAIsrC,EAAanrC,OAAQH,IACnCiK,EAAOqhC,EAAatrC,GACfiK,EAAK02B,WAAW12B,EAAKi3B,OAE1Bj3B,EAAKm3B,aAgBP,OAAOkK,IAGTvuC,EAAMsR,UAAU++B,cAAgB,SAAUE,EAAYlxC,EAAOkvC,EAAcyB,EAAoBQ,GAC7F,GAAItjC,GACAjK,CAEJ,IAAkB,IAAdstC,EAAkB,CACpB,IAAKttC,EAAIstC,EAAYttC,GAAK,IACxBiK,EAAO7N,EAAM4D,IACTutC,EAAetjC,IAFQjK,IAMWgB,SAAhC+rC,EAAmB9iC,EAAKzP,MAC1BuyC,EAAmB9iC,EAAKzP,KAAM,EAC9B8wC,EAAa5oC,KAAKuH,GAKxB,KAAKjK,EAAIstC,EAAa,EAAGttC,EAAI5D,EAAM+D,SACjC8J,EAAO7N,EAAM4D,IACTutC,EAAetjC,IAFsBjK,IAMHgB,SAAhC+rC,EAAmB9iC,EAAKzP,MAC1BuyC,EAAmB9iC,EAAKzP,KAAM,EAC9B8wC,EAAa5oC,KAAKuH,MAmB5BlN,EAAMsR,UAAUm+B,gBAAkB,SAASviC,EAAMqhC,EAAc7a,GACvDxmB,EAAKk3B,UAAU1Q,IACZxmB,EAAK02B,WAAW12B,EAAKi3B,OAE1Bj3B,EAAKm3B,cACLkK,EAAa5oC,KAAKuH,IAGdA,EAAK02B,WAAW12B,EAAKg3B,QAgB/BlkC,EAAMsR,UAAU6+B,6BAA+B,SAASjjC,EAAMqhC,EAAcyB,EAAoBtc,GAC1FxmB,EAAKk3B,UAAU1Q,GACmBzvB,SAAhC+rC,EAAmB9iC,EAAKzP,MAC1BuyC,EAAmB9iC,EAAKzP,KAAM,EAC9B8wC,EAAa5oC,KAAKuH,IAIhBA,EAAK02B,WAAW12B,EAAKg3B,QAM7BjnC,EAAOD,QAAUgD,GAKb,SAAS/C,EAAQD,EAASM,GAW9B,QAAS2C,GAAiBo2B,EAASxlB,EAAMijB,GACvC9zB,EAAMrC,KAAKP,KAAMi5B,EAASxlB,EAAMijB,GAEhC12B,KAAKsT,MAAQ,EACbtT,KAAKuT,OAAS,EACdvT,KAAKiI,IAAM,EACXjI,KAAK6H,KAAO,EAfd,GACIjF,IADO1C,EAAoB,GACnBA,EAAoB,IAiBhC2C,GAAgBqR,UAAYtN,OAAOkI,OAAOlM,EAAMsR,WAShDrR,EAAgBqR,UAAUuO,OAAS,SAAS6T,EAAO3b,GACjD,GAAIkvB,IAAU,CAEd7pC,MAAKmxC,aAAenxC,KAAK8xC,oBAAoB9xC,KAAKqP,aAAcrP,KAAKmxC,aAAc7a,GAGnFt2B,KAAKsT,MAAQtT,KAAK2wB,IAAI9jB,WAAWmkB,YAGjChxB,KAAK2wB,IAAI9jB,WAAWa,MAAM6F,OAAU,GAGpC,KAAK,GAAI1N,GAAI,EAAGqsC,EAAKlyC,KAAKmxC,aAAanrC,OAAYksC,EAAJrsC,EAAQA,IAAK,CAC1D,GAAIiK,GAAO9P,KAAKmxC,aAAatrC,EAC7BiK,GAAKo3B,YAAYvsB,GAGnB,MAAOkvB,IAMThnC,EAAgBqR,UAAU6yB,KAAO,WAC1B/mC,KAAK2wB,IAAI9jB,WAAW1C,YACvBnK,KAAK02B,QAAQ/F,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAI9jB,aAIrDhN,EAAOD,QAAUiD,GAKb,SAAShD,EAAQD,EAASM,GA4B9B,QAAS4C,GAAQyyB,EAAMrmB,GACrBlP,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACH9tB,KAAM,KACNguB,YAAa,SACb0T,MAAO,OACP/mC,OAAO,EACPuxC,WAAY,KAEZC,YAAY,EACZjM,UACEkC,YAAY,EACZmD,aAAa,EACb14B,KAAK,EACLoD,QAAQ,GAGVuhB,KAAO52B,EAAS42B,KAEhB4a,MAAO,SAAUzjC,EAAMjH,GACrBA,EAASiH,IAEX0jC,SAAU,SAAU1jC,EAAMjH,GACxBA,EAASiH,IAEX2jC,OAAQ,SAAU3jC,EAAMjH,GACtBA,EAASiH,IAEX4jC,SAAU,SAAU5jC,EAAMjH,GACxBA,EAASiH,IAEX6jC,SAAU,SAAU7jC,EAAMjH,GACxBA,EAASiH,IAGX6K,QACE7K,MACE0W,WAAY,GACZC,SAAU,IAEZsc,KAAM,IAER/d,QAAS,GAIXhlB,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAGpCj1B,KAAK4zC,aACHzsC,MAAOkJ,MAAO,OAAQC,IAAK,SAG7BtQ,KAAKo8B,YACHtG,SAAUP,EAAK50B,KAAKm1B,SACpBI,OAAQX,EAAK50B,KAAKu1B,QAEpBl2B,KAAK2wB,OACL3wB,KAAKqG,SACLrG,KAAK8D,OAAS,IAEd,IAAIoR,GAAKlV,IACTA,MAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAGlB52B,KAAK6zC,eACH7/B,IAAO,SAAUnK,EAAOgL,GACtBK,EAAG4+B,OAAOj/B,EAAO5S,QAEnB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAG6+B,UAAUl/B,EAAO5S,QAEtBmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAG8+B,UAAUn/B,EAAO5S,SAKxBjC,KAAKi0C,gBACHjgC,IAAO,SAAUnK,EAAOgL,GACtBK,EAAGg/B,aAAar/B,EAAO5S,QAEzB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAGi/B,gBAAgBt/B,EAAO5S,QAE5BmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAGk/B,gBAAgBv/B,EAAO5S,SAI9BjC,KAAKiC,SACLjC,KAAK+0B,UACL/0B,KAAKq0C,YAELr0C,KAAKs0C,aACLt0C,KAAKu0C,YAAa,EAElBv0C,KAAKw0C,eAGLx0C,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAlIlB,GAAIw3B,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B6B,EAAW7B,EAAoB,IAC/BqC,EAAYrC,EAAoB,IAChC0C,EAAQ1C,EAAoB,IAC5B2C,EAAkB3C,EAAoB,IACtCkC,EAAUlC,EAAoB,IAC9BmC,EAAYnC,EAAoB,IAChCoC,EAAYpC,EAAoB,IAChCiC,EAAiBjC,EAAoB,IAGrCu0C,EAAY,gBACZC,EAAa,gBAsHjB5xC,GAAQoR,UAAY,GAAI3R,GAGxBO,EAAQmV,OACNpL,WAAY1K,EACZmmC,IAAKlmC,EACLk0B,MAAOh0B,EACPsQ,MAAOvQ,GAMTS,EAAQoR,UAAUohB,QAAU,WAC1B,GAAIhV,GAAQtO,SAASM,cAAc,MACnCgO,GAAMlY,UAAY,UAClBkY,EAAM,oBAAsBtgB,KAC5BA,KAAK2wB,IAAIrQ,MAAQA,CAGjB,IAAIzT,GAAamF,SAASM,cAAc,MACxCzF,GAAWzE,UAAY,aACvBkY,EAAMpO,YAAYrF,GAClB7M,KAAK2wB,IAAI9jB,WAAaA,CAGtB,IAAIksB,GAAa/mB,SAASM,cAAc,MACxCymB,GAAW3wB,UAAY,aACvBkY,EAAMpO,YAAY6mB,GAClB/4B,KAAK2wB,IAAIoI,WAAaA,CAGtB,IAAIgK,GAAO/wB,SAASM,cAAc,MAClCywB,GAAK36B,UAAY,OACjBpI,KAAK2wB,IAAIoS,KAAOA,CAGhB,IAAI/J,GAAWhnB,SAASM,cAAc,MACtC0mB,GAAS5wB,UAAY,WACrBpI,KAAK2wB,IAAIqI,SAAWA,EAGpBh5B,KAAK20C,kBAGL,IAAIC,GAAkB,GAAI/xC,GAAgB6xC,EAAY,KAAM10C,KAC5D40C,GAAgB7N,OAChB/mC,KAAK+0B,OAAO2f,GAAcE,EAM1B50C,KAAK8D,OAAS4iC,EAAO1mC,KAAKu1B,KAAK5E,IAAI+H,iBACjC9uB,gBAAgB,IAIlB5J,KAAK8D,OAAOwQ,GAAG,QAAatU,KAAKqgC,SAAS3K,KAAK11B,OAC/CA,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACnDA,KAAK8D,OAAOwQ,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OAC9CA,KAAK8D,OAAOwQ,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,OAGjDA,KAAK8D,OAAOwQ,GAAG,MAAQtU,KAAK60C,cAAcnf,KAAK11B,OAG/CA,KAAK8D,OAAOwQ,GAAG,OAAQtU,KAAK80C,mBAAmBpf,KAAK11B,OAGpDA,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAK+0C,WAAWrf,KAAK11B,OAGjDA,KAAK+mC,QAmEPjkC,EAAQoR,UAAUD,WAAa,SAAS/E,GACtC,GAAIA,EAAS,CAEX,GAAIP,IAAU,OAAQ,QAAS,cAAe,QAAS,UAAW,QAAS,aAAc,aAAc,iBAAkB,WAAW,OAAQ,OAC5IhO,GAAKyF,gBAAgBuI,EAAQ3O,KAAKkP,QAASA,GAEvC,UAAYA,KACgB,gBAAnBA,GAAQyL,QACjB3a,KAAKkP,QAAQyL,OAAOooB,KAAO7zB,EAAQyL,OACnC3a,KAAKkP,QAAQyL,OAAO7K,KAAK0W,WAAatX,EAAQyL,OAC9C3a,KAAKkP,QAAQyL,OAAO7K,KAAK2W,SAAWvX,EAAQyL,QAEX,gBAAnBzL,GAAQyL,SACtBha,EAAKyF,iBAAiB,QAASpG,KAAKkP,QAAQyL,OAAQzL,EAAQyL,QACxD,QAAUzL,GAAQyL,SACe,gBAAxBzL,GAAQyL,OAAO7K,MACxB9P,KAAKkP,QAAQyL,OAAO7K,KAAK0W,WAAatX,EAAQyL,OAAO7K,KACrD9P,KAAKkP,QAAQyL,OAAO7K,KAAK2W,SAAWvX,EAAQyL,OAAO7K,MAEb,gBAAxBZ,GAAQyL,OAAO7K,MAC7BnP,EAAKyF,iBAAiB,aAAc,YAAapG,KAAKkP,QAAQyL,OAAO7K,KAAMZ,EAAQyL,OAAO7K,SAM9F,YAAcZ,KACgB,iBAArBA,GAAQm4B,UACjBrnC,KAAKkP,QAAQm4B,SAASkC,WAAcr6B,EAAQm4B,SAC5CrnC,KAAKkP,QAAQm4B,SAASqF,YAAcx9B,EAAQm4B,SAC5CrnC,KAAKkP,QAAQm4B,SAASrzB,IAAc9E,EAAQm4B,SAC5CrnC,KAAKkP,QAAQm4B,SAASjwB,OAAclI,EAAQm4B,UAET,gBAArBn4B,GAAQm4B,UACtB1mC,EAAKyF,iBAAiB,aAAc,cAAe,MAAO,UAAWpG,KAAKkP,QAAQm4B,SAAUn4B,EAAQm4B,UAKxG,IAAI2N,GAAc,SAAWh+B,GAC3B,GAAImD,GAAKjL,EAAQ8H,EACjB,IAAImD,EAAI,CACN,KAAMA,YAAc86B,WAClB,KAAM,IAAIrxC,OAAM,UAAYoT,EAAO,uBAAyBA,EAAO,mBAErEhX,MAAKkP,QAAQ8H,GAAQmD,IAEtBub,KAAK11B,OACP,QAAS,WAAY,WAAY,SAAU,YAAY4I,QAAQosC,GAGhEh1C,KAAKm3B,cASTr0B,EAAQoR,UAAUijB,UAAY,SAASjoB,GACrClP,KAAKq0C,YACLr0C,KAAKu0C,YAAa,EAEdrlC,GAAWA,EAAQkoB,cACrBz2B,EAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GACjCA,EAAK22B,OAAQ,EACT32B,EAAK02B,WAAW12B,EAAK2S,YAQ/B3f,EAAQoR,UAAUG,QAAU,WAC1BrU,KAAK8mC,OACL9mC,KAAKg3B,SAAS,MACdh3B,KAAK+2B,UAAU,MAEf/2B,KAAK8D,OAAS,KAEd9D,KAAKu1B,KAAO,KACZv1B,KAAKo8B,WAAa,MAMpBt5B,EAAQoR,UAAU4yB,KAAO,WAEnB9mC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,OAI7CtgB,KAAK2wB,IAAIoS,KAAK54B,YAChBnK,KAAK2wB,IAAIoS,KAAK54B,WAAWyH,YAAY5R,KAAK2wB,IAAIoS,MAI5C/iC,KAAK2wB,IAAIqI,SAAS7uB,YACpBnK,KAAK2wB,IAAIqI,SAAS7uB,WAAWyH,YAAY5R,KAAK2wB,IAAIqI,WAQtDl2B,EAAQoR,UAAU6yB,KAAO,WAElB/mC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,OAIvCtgB,KAAK2wB,IAAIoS,KAAK54B,YACjBnK,KAAKu1B,KAAK5E,IAAIuZ,mBAAmBh4B,YAAYlS,KAAK2wB,IAAIoS,MAInD/iC,KAAK2wB,IAAIqI,SAAS7uB,YACrBnK,KAAKu1B,KAAK5E,IAAI9oB,KAAKqK,YAAYlS,KAAK2wB,IAAIqI,WAW5Cl2B,EAAQoR,UAAU0jB,aAAe,SAAS1hB,GACxC,GAAIrQ,GAAGqsC,EAAI7xC,EAAIyP,CAMf,KAJWjJ,QAAPqP,IAAkBA,MACjB5P,MAAMC,QAAQ2P,KAAMA,GAAOA,IAG3BrQ,EAAI,EAAGqsC,EAAKlyC,KAAKs0C,UAAUtuC,OAAYksC,EAAJrsC,EAAQA,IAC9CxF,EAAKL,KAAKs0C,UAAUzuC,GACpBiK,EAAO9P,KAAKiC,MAAM5B,GACdyP,GAAMA,EAAK82B,UAKjB,KADA5mC,KAAKs0C,aACAzuC,EAAI,EAAGqsC,EAAKh8B,EAAIlQ,OAAYksC,EAAJrsC,EAAQA,IACnCxF,EAAK6V,EAAIrQ,GACTiK,EAAO9P,KAAKiC,MAAM5B,GACdyP,IACF9P,KAAKs0C,UAAU/rC,KAAKlI,GACpByP,EAAK62B,WASX7jC,EAAQoR,UAAU4jB,aAAe,WAC/B,MAAO93B,MAAKs0C,UAAUv/B,YAOxBjS,EAAQoR,UAAUghC,gBAAkB,WAClC,GAAI5e,GAAQt2B,KAAKu1B,KAAKe,MAAM+K,WACxBx5B,EAAQ7H,KAAKu1B,KAAK50B,KAAKm1B,SAASQ,EAAMjmB,OACtCgY,EAAQroB,KAAKu1B,KAAK50B,KAAKm1B,SAASQ,EAAMhmB,KAEtC4F,IACJ,KAAK,GAAI+iB,KAAWj5B,MAAK+0B,OACvB,GAAI/0B,KAAK+0B,OAAO5uB,eAAe8yB,GAM7B,IAAK,GALDvmB,GAAQ1S,KAAK+0B,OAAOkE,GACpBkc,EAAkBziC,EAAMy+B,aAInBtrC,EAAI,EAAGA,EAAIsvC,EAAgBnvC,OAAQH,IAAK,CAC/C,GAAIiK,GAAOqlC,EAAgBtvC,EAEtBiK,GAAKjI,KAAOwgB,GAAWvY,EAAKjI,KAAOiI,EAAKwD,MAAQzL,GACnDqO,EAAI3N,KAAKuH,EAAKzP,IAMtB,MAAO6V,IAQTpT,EAAQoR,UAAUkhC,UAAY,SAAS/0C,GAErC,IAAK,GADDi0C,GAAYt0C,KAAKs0C,UACZzuC,EAAI,EAAGqsC,EAAKoC,EAAUtuC,OAAYksC,EAAJrsC,EAAQA,IAC7C,GAAIyuC,EAAUzuC,IAAMxF,EAAI,CACtBi0C,EAAU3rC,OAAO9C,EAAG,EACpB,SASN/C,EAAQoR,UAAUuO,OAAS,WACzB,GAAI9H,GAAS3a,KAAKkP,QAAQyL,OACtB2b,EAAQt2B,KAAKu1B,KAAKe,MAClB1rB,EAASjK,EAAK4J,OAAOK,OACrBsE,EAAUlP,KAAKkP,QACfimB,EAAcjmB,EAAQimB,YACtB0U,GAAU,EACVvpB,EAAQtgB,KAAK2wB,IAAIrQ,MACjB+mB,EAAWn4B,EAAQm4B,SAASkC,YAAcr6B,EAAQm4B,SAASqF,WAG/D1sC,MAAKqG,MAAM4B,IAAMjI,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAAS1oB,OAAO7E,IAC3EjI,KAAKqG,MAAMwB,KAAO7H,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAAQtT,KAAKu1B,KAAKC,SAAS1oB,OAAOjF,KAG5EyY,EAAMlY,UAAY,WAAai/B,EAAW,YAAc,IAGxDwC,EAAU7pC,KAAKq1C,gBAAkBxL,CAIjC,IAAIyL,GAAkBhf,EAAMhmB,IAAMgmB,EAAMjmB,MACpCklC,EAAUD,GAAmBt1C,KAAKw1C,qBAAyBx1C,KAAKqG,MAAMiN,OAAStT,KAAKqG,MAAMovC,SAC1FF,KAAQv1C,KAAKu0C,YAAa,GAC9Bv0C,KAAKw1C,oBAAsBF,EAC3Bt1C,KAAKqG,MAAMovC,UAAYz1C,KAAKqG,MAAMiN,KAElC,IAAIo+B,GAAU1xC,KAAKu0C,WACfmB,EAAa11C,KAAK21C,cAClBC,GACF9lC,KAAM6K,EAAO7K,KACbizB,KAAMpoB,EAAOooB,MAEX8S,GACF/lC,KAAM6K,EAAO7K,KACbizB,KAAMpoB,EAAO7K,KAAK2W,SAAW,GAE3BlT,EAAS,EACT8hB,EAAY1a,EAAOooB,KAAOpoB,EAAO7K,KAAK2W,QA+B1C,OA5BAzmB,MAAK+0B,OAAO2f,GAAYjyB,OAAO6T,EAAOuf,EAAgBnE,GAGtD/wC,EAAKiI,QAAQ5I,KAAK+0B,OAAQ,SAAUriB,GAClC,GAAIojC,GAAepjC,GAASgjC,EAAcE,EAAcC,EACpDE,EAAerjC,EAAM+P,OAAO6T,EAAOwf,EAAapE,EACpD7H,GAAUkM,GAAgBlM,EAC1Bt2B,GAAUb,EAAMa,SAElBA,EAAS/O,KAAKJ,IAAImP,EAAQ8hB,GAC1Br1B,KAAKu0C,YAAa,EAGlBj0B,EAAM5S,MAAM6F,OAAU3I,EAAO2I,GAG7BvT,KAAKqG,MAAMiN,MAAQgN,EAAM0Q,YACzBhxB,KAAKqG,MAAMkN,OAASA,EAGpBvT,KAAK2wB,IAAIoS,KAAKr1B,MAAMzF,IAAM2C,EAAuB,OAAfuqB,EAC7Bn1B,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAAS1oB,OAAO7E,IAC1DjI,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QACxEvT,KAAK2wB,IAAIoS,KAAKr1B,MAAM7F,KAAO,IAG3BgiC,EAAU7pC,KAAK4pC,cAAgBC,GAUjC/mC,EAAQoR,UAAUyhC,YAAc,WAC9B,GAAIK,GAA+C,OAA5Bh2C,KAAKkP,QAAQimB,YAAwB,EAAKn1B,KAAKq0C,SAASruC,OAAS,EACpFiwC,EAAej2C,KAAKq0C,SAAS2B,GAC7BN,EAAa11C,KAAK+0B,OAAOkhB,IAAiBj2C,KAAK+0B,OAAO0f,EAE1D,OAAOiB,IAAc,MAQvB5yC,EAAQoR,UAAUygC,iBAAmB,WACnC,CAAA,GAEI7kC,GAAMwG,EAFN4/B,EAAYl2C,KAAK+0B,OAAO0f,EACXz0C,MAAK+0B,OAAO2f,GAG7B,GAAI10C,KAAK42B,YAEP,GAAIsf,EAAW,CACbA,EAAUpP,aACH9mC,MAAK+0B,OAAO0f,EAEnB,KAAKn+B,IAAUtW,MAAKiC,MAClB,GAAIjC,KAAKiC,MAAMkE,eAAemQ,GAAS,CACrCxG,EAAO9P,KAAKiC,MAAMqU,GAClBxG,EAAKzF,QAAUyF,EAAKzF,OAAO+M,OAAOtH,EAClC,IAAImpB,GAAUj5B,KAAKm2C,YAAYrmC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACxBvmB,IAASA,EAAMsB,IAAIlE,IAASA,EAAKg3B,aAOvC,KAAKoP,EAAW,CACd,GAAI71C,GAAK,KACLoT,EAAO,IACXyiC,GAAY,GAAItzC,GAAMvC,EAAIoT,EAAMzT,MAChCA,KAAK+0B,OAAO0f,GAAayB,CAEzB,KAAK5/B,IAAUtW,MAAKiC,MACdjC,KAAKiC,MAAMkE,eAAemQ,KAC5BxG,EAAO9P,KAAKiC,MAAMqU,GAClB4/B,EAAUliC,IAAIlE,GAIlBomC,GAAUnP,SAShBjkC,EAAQoR,UAAUkiC,YAAc,WAC9B,MAAOp2C,MAAK2wB,IAAIqI,UAOlBl2B,EAAQoR,UAAU8iB,SAAW,SAAS/0B,GACpC,GACIiU,GADAhB,EAAKlV,KAELq2C,EAAer2C,KAAK22B,SAGxB,IAAK10B,EAGA,CAAA,KAAIA,YAAiBpB,IAAWoB,YAAiBnB,IAIpD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK22B,UAAY10B,MAHjBjC,MAAK22B,UAAY,IAoBnB,IAXI0f,IAEF11C,EAAKiI,QAAQ5I,KAAK6zC,cAAe,SAAUhrC,EAAUgB,GACnDwsC,EAAa5hC,IAAI5K,EAAOhB,KAI1BqN,EAAMmgC,EAAaz/B,SACnB5W,KAAKg0C,UAAU99B,IAGblW,KAAK22B,UAAW,CAElB,GAAIt2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAK6zC,cAAe,SAAUhrC,EAAUgB,GACnDqL,EAAGyhB,UAAUriB,GAAGzK,EAAOhB,EAAUxI,KAInC6V,EAAMlW,KAAK22B,UAAU/f,SACrB5W,KAAK8zC,OAAO59B,GAGZlW,KAAK20C,qBAQT7xC,EAAQoR,UAAUoiC,SAAW,WAC3B,MAAOt2C,MAAK22B,WAOd7zB,EAAQoR,UAAU6iB,UAAY,SAAShC,GACrC,GACI7e,GADAhB,EAAKlV,IAgBT,IAZIA,KAAK42B,aACPj2B,EAAKiI,QAAQ5I,KAAKi0C,eAAgB,SAAUprC,EAAUgB,GACpDqL,EAAG0hB,WAAWjiB,YAAY9K,EAAOhB,KAInCqN,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAK42B,WAAa,KAClB52B,KAAKo0C,gBAAgBl+B,IAIlB6e,EAGA,CAAA,KAAIA,YAAkBl0B,IAAWk0B,YAAkBj0B,IAItD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK42B,WAAa7B,MAHlB/0B,MAAK42B,WAAa,IASpB,IAAI52B,KAAK42B,WAAY,CAEnB,GAAIv2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAKi0C,eAAgB,SAAUprC,EAAUgB,GACpDqL,EAAG0hB,WAAWtiB,GAAGzK,EAAOhB,EAAUxI,KAIpC6V,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAKk0C,aAAah+B,GAIpBlW,KAAK20C,mBAGL30C,KAAKu2C,SAELv2C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAO3CrR,EAAQoR,UAAUsiC,UAAY,WAC5B,MAAOx2C,MAAK42B,YAOd9zB,EAAQoR,UAAUs+B,WAAa,SAASnyC,GACtC,GAAIyP,GAAO9P,KAAK22B,UAAU1gB,IAAI5V,GAC1B43B,EAAUj4B,KAAK22B,UAAU9f,YAEzB/G,IAEF9P,KAAKkP,QAAQwkC,SAAS5jC,EAAM,SAAUA,GAChCA,GAGFmoB,EAAQ7gB,OAAO/W,MAYvByC,EAAQoR,UAAUuiC,SAAW,SAAU1e,GACrC,MAAOA,GAAS5wB,MAAQnH,KAAKkP,QAAQ/H,OAAS4wB,EAASznB,IAAM,QAAU,QAUzExN,EAAQoR,UAAUiiC,YAAc,SAAUpe,GACxC,GAAI5wB,GAAOnH,KAAKy2C,SAAS1e,EACzB,OAAY,cAAR5wB,GAA0CN,QAAlBkxB,EAASrlB,MAC7BgiC,EAGC10C,KAAK42B,WAAamB,EAASrlB,MAAQ+hC,GAS9C3xC,EAAQoR,UAAU6/B,UAAY,SAAS79B,GACrC,GAAIhB,GAAKlV,IAETkW,GAAItN,QAAQ,SAAUvI,GACpB,GAAI03B,GAAW7iB,EAAGyhB,UAAU1gB,IAAI5V,EAAI6U,EAAG0+B,aACnC9jC,EAAOoF,EAAGjT,MAAM5B,GAChB8G,EAAO+N,EAAGuhC,SAAS1e,GAEnBpxB,EAAc7D,EAAQmV,MAAM9Q,EAchC,IAZI2I,IAEGnJ,GAAiBmJ,YAAgBnJ,GAMpCuO,EAAGc,YAAYlG,EAAMioB,IAJrB7iB,EAAGwhC,YAAY5mC,GACfA,EAAO,QAONA,EAAM,CAET,IAAInJ,EAKC,KAEG,IAAID,WAFK,iBAARS,EAEa,4HAIA,sBAAwBA,EAAO,IAVnD2I,GAAO,GAAInJ,GAAYoxB,EAAU7iB,EAAGknB,WAAYlnB,EAAGhG,SACnDY,EAAKzP,GAAKA,EACV6U,EAAGC,SAASrF,MAalB9P,KAAKu2C,SACLv2C,KAAKu0C,YAAa,EAClBv0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAU4/B,OAAShxC,EAAQoR,UAAU6/B,UAO7CjxC,EAAQoR,UAAU8/B,UAAY,SAAS99B,GACrC,GAAI6B,GAAQ,EACR7C,EAAKlV,IACTkW,GAAItN,QAAQ,SAAUvI,GACpB,GAAIyP,GAAOoF,EAAGjT,MAAM5B,EAChByP,KACFiI,IACA7C,EAAGwhC,YAAY5mC,MAIfiI,IAEF/X,KAAKu2C,SACLv2C,KAAKu0C,YAAa,EAClBv0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,MAQ7CrR,EAAQoR,UAAUqiC,OAAS,WAGzB51C,EAAKiI,QAAQ5I,KAAK+0B,OAAQ,SAAUriB,GAClCA,EAAM8D,WASV1T,EAAQoR,UAAUigC,gBAAkB,SAASj+B,GAC3ClW,KAAKk0C,aAAah+B,IAQpBpT,EAAQoR,UAAUggC,aAAe,SAASh+B,GACxC,GAAIhB,GAAKlV,IAETkW,GAAItN,QAAQ,SAAUvI,GACpB,GAAIywC,GAAY57B,EAAG0hB,WAAW3gB,IAAI5V,GAC9BqS,EAAQwC,EAAG6f,OAAO10B,EAEtB,IAAKqS,EA6BHA,EAAMqG,QAAQ+3B,OA7BJ,CAEV,GAAIzwC,GAAMo0C,GAAap0C,GAAMq0C,EAC3B,KAAM,IAAI9wC,OAAM,qBAAuBvD,EAAK,qBAG9C,IAAIs2C,GAAe/vC,OAAOkI,OAAOoG,EAAGhG,QACpCvO,GAAKgF,OAAOgxC,GACVpjC,OAAQ,OAGVb,EAAQ,GAAI9P,GAAMvC,EAAIywC,EAAW57B,GACjCA,EAAG6f,OAAO10B,GAAMqS,CAGhB,KAAK,GAAI4D,KAAUpB,GAAGjT,MACpB,GAAIiT,EAAGjT,MAAMkE,eAAemQ,GAAS,CACnC,GAAIxG,GAAOoF,EAAGjT,MAAMqU,EAChBxG,GAAK2D,KAAKf,OAASrS,GACrBqS,EAAMsB,IAAIlE,GAKhB4C,EAAM8D,QACN9D,EAAMq0B,UAQV/mC,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAUkgC,gBAAkB,SAASl+B,GAC3C,GAAI6e,GAAS/0B,KAAK+0B,MAClB7e,GAAItN,QAAQ,SAAUvI,GACpB,GAAIqS,GAAQqiB,EAAO10B,EAEfqS,KACFA,EAAMo0B,aACC/R,GAAO10B,MAIlBL,KAAKm3B,YAELn3B,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAUmhC,aAAe,WAC/B,GAAIr1C,KAAK42B,WAAY,CAEnB,GAAIyd,GAAWr0C,KAAK42B,WAAWhgB,QAC7BJ,MAAOxW,KAAKkP,QAAQmkC,aAGlBnS,GAAWvgC,EAAKsG,WAAWotC,EAAUr0C,KAAKq0C,SAC9C,IAAInT,EAAS,CAEX,GAAInM,GAAS/0B,KAAK+0B,MAClBsf,GAASzrC,QAAQ,SAAUqwB,GACzBlE,EAAOkE,GAAS6N,SAIlBuN,EAASzrC,QAAQ,SAAUqwB,GACzBlE,EAAOkE,GAAS8N,SAGlB/mC,KAAKq0C,SAAWA,EAGlB,MAAOnT,GAGP,OAAO,GASXp+B,EAAQoR,UAAUiB,SAAW,SAASrF,GACpC9P,KAAKiC,MAAM6N,EAAKzP,IAAMyP,CAGtB,IAAImpB,GAAUj5B,KAAKm2C,YAAYrmC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACpBvmB,IAAOA,EAAMsB,IAAIlE,IASvBhN,EAAQoR,UAAU8B,YAAc,SAASlG,EAAMioB,GAC7C,GAAI6e,GAAa9mC,EAAK2D,KAAKf,KAM3B,IAHA5C,EAAKiJ,QAAQgf,GAGT6e,GAAc9mC,EAAK2D,KAAKf,MAAO,CACjC,GAAImkC,GAAW72C,KAAK+0B,OAAO6hB,EACvBC,IAAUA,EAASz/B,OAAOtH,EAE9B,IAAImpB,GAAUj5B,KAAKm2C,YAAYrmC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACpBvmB,IAAOA,EAAMsB,IAAIlE,KAUzBhN,EAAQoR,UAAUwiC,YAAc,SAAS5mC,GAEvCA,EAAKg3B,aAGE9mC,MAAKiC,MAAM6N,EAAKzP,GAGvB,IAAIqI,GAAQ1I,KAAKs0C,UAAUttC,QAAQ8I,EAAKzP,GAC3B,KAATqI,GAAa1I,KAAKs0C,UAAU3rC,OAAOD,EAAO,GAG9CoH,EAAKzF,QAAUyF,EAAKzF,OAAO+M,OAAOtH,IASpChN,EAAQoR,UAAU4iC,qBAAuB,SAAS/tC,GAGhD,IAAK,GAFD2pC,MAEK7sC,EAAI,EAAGA,EAAIkD,EAAM/C,OAAQH,IAC5BkD,EAAMlD,YAAcvD,IACtBowC,EAASnqC,KAAKQ,EAAMlD,GAGxB,OAAO6sC,IAYT5vC,EAAQoR,UAAUmsB,SAAW,SAAUx2B,GAErC7J,KAAKw0C,YAAY1kC,KAAO9P,KAAKq4B,eAAexuB,IAQ9C/G,EAAQoR,UAAU8rB,aAAe,SAAUn2B,GACzC,GAAK7J,KAAKkP,QAAQm4B,SAASkC,YAAevpC,KAAKkP,QAAQm4B,SAASqF,YAAhE,CAIA,GAEIrmC,GAFAyJ,EAAO9P,KAAKw0C,YAAY1kC,MAAQ,KAChCoF,EAAKlV,IAGT,IAAI8P,GAAQA,EAAKy2B,SAAU,CACzB,GAAIkD,GAAe5/B,EAAMG,OAAOy/B,aAC5BE,EAAgB9/B,EAAMG,OAAO2/B,aAE7BF,IACFpjC,GACEyJ,KAAM25B,EACNsN,SAAUltC,EAAM2uB,QAAQzL,OAAOnP,SAG7B1I,EAAGhG,QAAQm4B,SAASkC,aACtBljC,EAAMgK,MAAQP,EAAK2D,KAAKpD,MAAMhJ,WAE5B6N,EAAGhG,QAAQm4B,SAASqF,aAClB,SAAW58B,GAAK2D,OAAMpN,EAAMqM,MAAQ5C,EAAK2D,KAAKf,OAGpD1S,KAAKw0C,YAAYwC,WAAa3wC,IAEvBsjC,GACPtjC,GACEyJ,KAAM65B,EACNoN,SAAUltC,EAAM2uB,QAAQzL,OAAOnP,SAG7B1I,EAAGhG,QAAQm4B,SAASkC,aACtBljC,EAAMiK,IAAMR,EAAK2D,KAAKnD,IAAIjJ,WAExB6N,EAAGhG,QAAQm4B,SAASqF,aAClB,SAAW58B,GAAK2D,OAAMpN,EAAMqM,MAAQ5C,EAAK2D,KAAKf,OAGpD1S,KAAKw0C,YAAYwC,WAAa3wC,IAG9BrG,KAAKw0C,YAAYwC,UAAYh3C,KAAK83B,eAAehqB,IAAI,SAAUzN,GAC7D,GAAIyP,GAAOoF,EAAGjT,MAAM5B,GAChBgG,GACFyJ,KAAMA,EACNinC,SAAUltC,EAAM2uB,QAAQzL,OAAOnP,QAkBjC,OAfI1I,GAAGhG,QAAQm4B,SAASkC,YAClB,SAAWz5B,GAAK2D,OAClBpN,EAAMgK,MAAQP,EAAK2D,KAAKpD,MAAMhJ,UAE1B,OAASyI,GAAK2D,OAGhBpN,EAAMkK,SAAWT,EAAK2D,KAAKnD,IAAIjJ,UAAYhB,EAAMgK,QAInD6E,EAAGhG,QAAQm4B,SAASqF,aAClB,SAAW58B,GAAK2D,OAAMpN,EAAMqM,MAAQ5C,EAAK2D,KAAKf,OAG7CrM,IAIXwD,EAAM49B,sBAECznC,MAAKkP,QAAQm4B,SAASrzB,KAAOnK,EAAM2uB,QAAQye,SAASC,SAE3Dl3C,KAAKm3C,oBAAoBttC,KAS7B/G,EAAQoR,UAAUijC,oBAAsB,SAAUttC,GAChD,GAAI8uB,GAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5Bye,EAAOz2C,EAAK+G,gBAAgB1H,KAAK2wB,IAAIrQ,OACrC9N,EAAI3I,EAAM2uB,QAAQzL,OAAOwL,MAAQ6e,EAAO,GACxCxe,EAAO54B,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,GAC7BjO,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UACtBzkB,EAAQsoB,EAAOA,EAAKC,EAAMr0B,EAAO4kB,GAAQ9Y,EACzCC,EAAMD,EAEN0nB,GACF5wB,KAAM,QACNkJ,MAAOA,EACPC,IAAKA,EACL6C,QAAS,YAGP9S,EAAKM,EAAK2E,YACdyyB,GAAS/3B,KAAK22B,UAAU/iB,UAAYvT,CAEpC,IAAIqS,GAAQ1S,KAAKs4B,gBAAgBzuB,EAC7B6I,KACFqlB,EAASrlB,MAAQA,EAAMumB,QAGzB;GAAIoe,GAAU,GAAI/0C,GAAUy1B,EAAU/3B,KAAKo8B,WAAYp8B,KAAKkP,QAC5DmoC,GAAQh3C,GAAKA,EACbL,KAAKmV,SAASkiC,EAEd,IAAIhxC,IACFyJ,KAAMunC,EACN/mC,IAAKA,EAAIjJ,UACT0vC,SAAUltC,EAAM2uB,QAAQzL,OAAOnP,QAEjC5d,MAAKw0C,YAAYwC,WAAa3wC,GAE9BwD,EAAM49B,mBAQR3kC,EAAQoR,UAAU+rB,QAAU,SAAUp2B,GAGpC,GAFAA,EAAMD,iBAEF5J,KAAKw0C,YAAYwC,UAAW,CAC9B,GAAI9hC,GAAKlV,KACL24B,EAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5B1lB,EAAUjT,KAAKu1B,KAAK5E,IAAIjxB,KAAKuyC,WAAajyC,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAClE/O,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,SAG1B90B,MAAKw0C,YAAYwC,UAAUpuC,QAAQ,SAAUvC,GAC3C,GAAIixC,MACAvb,EAAU7mB,EAAGqgB,KAAK50B,KAAKu1B,OAAOrsB,EAAM2uB,QAAQzL,OAAOnP,QAAU3K,GAC7DskC,EAAUriC,EAAGqgB,KAAK50B,KAAKu1B,OAAO7vB,EAAM0wC,SAAW9jC,GAC/CyX,EAASqR,EAAUwb,CAEvB,IAAI,SAAWlxC,GAAO,CACpB,GAAIgK,GAAQ,GAAIzL,MAAKyB,EAAMgK,MAAQqa,EACnC4sB,GAASjnC,MAAQsoB,EAAOA,EAAKtoB,EAAO9L,EAAO4kB,GAAQ9Y,EAGrD,GAAI,OAAShK,GAAO,CAClB,GAAIiK,GAAM,GAAI1L,MAAKyB,EAAMiK,IAAMoa,EAC/B4sB,GAAShnC,IAAMqoB,EAAOA,EAAKroB,EAAK/L,EAAO4kB,GAAQ7Y,MAExC,YAAcjK,KACrBixC,EAAShnC,IAAM,GAAI1L,MAAK0yC,EAASjnC,MAAMhJ,UAAYhB,EAAMkK,UAG3D,IAAI,SAAWlK,GAAO,CAEpB,GAAIqM,GAAQwC,EAAGojB,gBAAgBzuB,EAC/BytC,GAAS5kC,MAAQA,GAASA,EAAMumB,QAIlC,GAAIlB,GAAWp3B,EAAKgF,UAAWU,EAAMyJ,KAAK2D,KAAM6jC,EAChDpiC,GAAGhG,QAAQykC,SAAS5b,EAAU,SAAUA,GAClCA,GACF7iB,EAAGsiC,iBAAiBnxC,EAAMyJ,KAAMioB,OAKtC/3B,KAAKu0C,YAAa,EAClBv0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAEvB5kB,EAAM49B,oBAUV3kC,EAAQoR,UAAUsjC,iBAAmB,SAAS1nC,EAAMzJ,GAE9C,SAAWA,KACbyJ,EAAK2D,KAAKpD,MAAQhK,EAAMgK,OAEtB,OAAShK,GACXyJ,EAAK2D,KAAKnD,IAAMjK,EAAMiK,IAEf,YAAcjK,KACrByJ,EAAK2D,KAAKnD,IAAM,GAAI1L,MAAKyB,EAAMgK,MAAMhJ,UAAYhB,EAAMkK,WAErD,SAAWlK,IAASyJ,EAAK2D,KAAKf,OAASrM,EAAMqM,OAC/C1S,KAAKy3C,aAAa3nC,EAAMzJ,EAAMqM,QAUlC5P,EAAQoR,UAAUujC,aAAe,SAAS3nC,EAAMmpB,GAC9C,GAAIvmB,GAAQ1S,KAAK+0B,OAAOkE,EACxB,IAAIvmB,GAASA,EAAMumB,SAAWnpB,EAAK2D,KAAKf,MAAO,CAC7C,GAAImkC,GAAW/mC,EAAKzF,MACpBwsC,GAASz/B,OAAOtH,GAChB+mC,EAASrgC,QACT9D,EAAMsB,IAAIlE,GACV4C,EAAM8D,QAEN1G,EAAK2D,KAAKf,MAAQA,EAAMumB,UAS5Bn2B,EAAQoR,UAAUgsB,WAAa,SAAUr2B,GAGvC,GAFAA,EAAMD,iBAEF5J,KAAKw0C,YAAYwC,UAAW,CAE9B,GAAIU,MACAxiC,EAAKlV,KACLi4B,EAAUj4B,KAAK22B,UAAU9f,aAEzBmgC,EAAYh3C,KAAKw0C,YAAYwC,SACjCh3C,MAAKw0C,YAAYwC,UAAY,KAC7BA,EAAUpuC,QAAQ,SAAUvC,GAC1B,GAAIhG,GAAKgG,EAAMyJ,KAAKzP,GAChB03B,EAAW7iB,EAAGyhB,UAAU1gB,IAAI5V,EAAI6U,EAAG0+B,YAEvC,IAAK7b,EAaA,CAEH,GAAImJ,IAAU,CACV,UAAW76B,GAAMyJ,KAAK2D,OACxBytB,EAAW76B,EAAMgK,OAAShK,EAAMyJ,KAAK2D,KAAKpD,MAAMhJ,UAChD0wB,EAAS1nB,MAAQ1P,EAAKuG,QAAQb,EAAMyJ,KAAK2D,KAAKpD,MAC1C4nB,EAAQvkB,SAASvM,MAAQ8wB,EAAQvkB,SAASvM,KAAKkJ,OAAS,SAE1D,OAAShK,GAAMyJ,KAAK2D,OACtBytB,EAAUA,GAAa76B,EAAMiK,KAAOjK,EAAMyJ,KAAK2D,KAAKnD,IAAIjJ,UACxD0wB,EAASznB,IAAM3P,EAAKuG,QAAQb,EAAMyJ,KAAK2D,KAAKnD,IACxC2nB,EAAQvkB,SAASvM,MAAQ8wB,EAAQvkB,SAASvM,KAAKmJ,KAAO,SAExD,SAAWjK,GAAMyJ,KAAK2D,OACxBytB,EAAUA,GAAa76B,EAAMqM,OAASrM,EAAMyJ,KAAK2D,KAAKf,MACtDqlB,EAASrlB,MAAQrM,EAAMyJ,KAAK2D,KAAKf,OAI/BwuB,GACFhsB,EAAGhG,QAAQukC,OAAO1b,EAAU,SAAUA,GAChCA,GAEFA,EAASE,EAAQrkB,UAAYvT,EAC7Bq3C,EAAQnvC,KAAKwvB,KAIb7iB,EAAGsiC,iBAAiBnxC,EAAMyJ,KAAMzJ,GAEhC6O,EAAGq/B,YAAa,EAChBr/B,EAAGqgB,KAAKE,QAAQhH,KAAK,iBA1C3BvZ,GAAGhG,QAAQqkC,MAAMltC,EAAMyJ,KAAK2D,KAAM,SAAUskB,GAC1C7iB,EAAGwhC,YAAYrwC,EAAMyJ,MACjBioB,GACF7iB,EAAGyhB,UAAU9f,aAAa7C,IAAI+jB,GAIhC7iB,EAAGq/B,YAAa,EAChBr/B,EAAGqgB,KAAKE,QAAQhH,KAAK,cA0CvBipB,EAAQ1xC,QACViyB,EAAQriB,OAAO8hC,GAGjB7tC,EAAM49B,oBASV3kC,EAAQoR,UAAU2gC,cAAgB,SAAUhrC,GAC1C,GAAK7J,KAAKkP,QAAQokC,WAAlB,CAEA,GAAI4D,GAAWrtC,EAAM2uB,QAAQye,UAAYptC,EAAM2uB,QAAQye,SAASC,QAC5DS,EAAW9tC,EAAM2uB,QAAQye,UAAYptC,EAAM2uB,QAAQye,SAASU,QAChE,IAAIT,GAAWS,EAEb,WADA33C,MAAK80C,mBAAmBjrC,EAI1B,IAAI+tC,GAAe53C,KAAK83B,eAEpBhoB,EAAO9P,KAAKq4B,eAAexuB,GAC3ByqC,EAAYxkC,GAAQA,EAAKzP,MAC7BL,MAAK43B,aAAa0c,EAElB,IAAIuD,GAAe73C,KAAK83B,gBAIpB+f,EAAa7xC,OAAS,GAAK4xC,EAAa5xC,OAAS,IACnDhG,KAAKu1B,KAAKE,QAAQhH,KAAK,UACrBxsB,MAAO41C,MAUb/0C,EAAQoR,UAAU6gC,WAAa,SAAUlrC,GACvC,GAAK7J,KAAKkP,QAAQokC,YACbtzC,KAAKkP,QAAQm4B,SAASrzB,IAA3B,CAEA,GAAIkB,GAAKlV,KACL24B,EAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5B7oB,EAAO9P,KAAKq4B,eAAexuB,EAE/B,IAAIiG,EAAM,CAIR,GAAIioB,GAAW7iB,EAAGyhB,UAAU1gB,IAAInG,EAAKzP,GACrCL,MAAKkP,QAAQskC,SAASzb,EAAU,SAAUA,GACpCA,GACF7iB,EAAGyhB,UAAU9f,aAAajB,OAAOmiB,SAIlC,CAEH,GAAIqf,GAAOz2C,EAAK+G,gBAAgB1H,KAAK2wB,IAAIrQ,OACrC9N,EAAI3I,EAAM2uB,QAAQzL,OAAOwL,MAAQ6e,EACjC/mC,EAAQrQ,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,GAC9BjO,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UAEtBuiB,GACFhnC,MAAOsoB,EAAOA,EAAKtoB,EAAO9L,EAAO4kB,GAAQ9Y,EACzC8C,QAAS,WAIX,IAA0B,UAAtBnT,KAAKkP,QAAQ/H,KAAkB,CACjC,GAAImJ,GAAMtQ,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,EAAIxS,KAAKqG,MAAMiN,MAAQ,EACvD+jC,GAAQ/mC,IAAMqoB,EAAOA,EAAKroB,EAAK/L,EAAO4kB,GAAQ7Y,EAGhD+mC,EAAQr3C,KAAK22B,UAAU/iB,UAAYjT,EAAK2E,YAExC,IAAIoN,GAAQ1S,KAAKs4B,gBAAgBzuB,EAC7B6I,KACF2kC,EAAQ3kC,MAAQA,EAAMumB,SAIxBj5B,KAAKkP,QAAQqkC,MAAM8D,EAAS,SAAUvnC,GAChCA,GACFoF,EAAGyhB,UAAU9f,aAAa7C,IAAIlE,QAYtChN,EAAQoR,UAAU4gC,mBAAqB,SAAUjrC,GAC/C,GAAK7J,KAAKkP,QAAQokC,WAAlB,CAEA,GAAIgB,GACAxkC,EAAO9P,KAAKq4B,eAAexuB,EAE/B,IAAIiG,EAAM,CAERwkC,EAAYt0C,KAAK83B,cAEjB,IAAI6f,GAAW9tC,EAAM2uB,QAAQ2J,QAAQ,IAAMt4B,EAAM2uB,QAAQ2J,QAAQ,GAAGwV,WAAY,CAChF,IAAIA,EAAU,CAIZrD,EAAU/rC,KAAKuH,EAAKzP,GACpB,IAAIi2B,GAAQxzB,EAAQg1C,cAAc93C,KAAK22B,UAAU1gB,IAAIq+B,EAAWt0C,KAAK4zC,aAGrEU,KACA,KAAK,GAAIj0C,KAAML,MAAKiC,MAClB,GAAIjC,KAAKiC,MAAMkE,eAAe9F,GAAK,CACjC,GAAI03C,GAAQ/3C,KAAKiC,MAAM5B,GACnBgQ,EAAQ0nC,EAAMtkC,KAAKpD,MACnBC,EAA0BzJ,SAAnBkxC,EAAMtkC,KAAKnD,IAAqBynC,EAAMtkC,KAAKnD,IAAMD,CAExDA,IAASimB,EAAMnyB,KAAOmM,GAAOgmB,EAAMlyB,KACrCkwC,EAAU/rC,KAAKwvC,EAAM13C,SAKxB,CAEH,GAAIqI,GAAQ4rC,EAAUttC,QAAQ8I,EAAKzP,GACtB,KAATqI,EAEF4rC,EAAU/rC,KAAKuH,EAAKzP,IAIpBi0C,EAAU3rC,OAAOD,EAAO,GAI5B1I,KAAK43B,aAAa0c,GAElBt0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UACrBxsB,MAAOjC,KAAK83B,oBAWlBh1B,EAAQg1C,cAAgB,SAASnhB,GAC/B,GAAIvyB,GAAM,KACND,EAAM,IAmBV,OAjBAwyB,GAAU/tB,QAAQ,SAAU6K,IACf,MAAPtP,GAAesP,EAAKpD,MAAQlM,KAC9BA,EAAMsP,EAAKpD,OAGGxJ,QAAZ4M,EAAKnD,KACI,MAAPlM,GAAeqP,EAAKnD,IAAMlM,KAC5BA,EAAMqP,EAAKnD,MAIF,MAAPlM,GAAeqP,EAAKpD,MAAQjM,KAC9BA,EAAMqP,EAAKpD,UAMflM,IAAKA,EACLC,IAAKA,IAUTtB,EAAQoR,UAAUmkB,eAAiB,SAASxuB,GAE1C,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO7D,eAAe,iBACxB,MAAO6D,GAAO,gBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OASTrH,EAAQoR,UAAUokB,gBAAkB,SAASzuB,GAE3C,IAAK,GADDkU,GAAUlU,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAOhP,QAAUlU,EAAMkU,QAC1DlY,EAAI,EAAGA,EAAI7F,KAAKq0C,SAASruC,OAAQH,IAAK,CAC7C,GAAIozB,GAAUj5B,KAAKq0C,SAASxuC,GACxB6M,EAAQ1S,KAAK+0B,OAAOkE,GACpBF,EAAarmB,EAAMie,IAAIoI,WACvB9wB,EAAMtH,EAAKqH,eAAe+wB,EAC9B,IAAIhb,EAAU9V,GAAO8V,EAAU9V,EAAM8wB,EAAW7H,aAC9C,MAAOxe,EAGT,IAAiC,QAA7B1S,KAAKkP,QAAQimB,aACf,GAAItvB,IAAM7F,KAAKq0C,SAASruC,OAAS,GAAK+X,EAAU9V,EAC9C,MAAOyK,OAIT,IAAU,IAAN7M,GAAWkY,EAAU9V,EAAM8wB,EAAWrO,OACxC,MAAOhY,GAKb,MAAO,OAST5P,EAAQk1C,kBAAoB,SAASnuC,GAEnC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO7D,eAAe,oBACxB,MAAO6D,GAAO,mBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAGTtK,EAAOD,QAAUkD,GAKb,SAASjD,EAAQD,EAASM,GAS9B,QAAS6C,GAAOwyB,EAAMrmB,EAAS+oC,EAAMlN,GACnC/qC,KAAKu1B,KAAOA,EACZv1B,KAAKi1B,gBACH9lB,SAAS,EACT+7B,OAAO,EACPgN,SAAU,GACVC,YAAa,EACbtwC,MACE4hB,SAAS,EACT7E,SAAU,YAEZyD,OACEoB,SAAS,EACT7E,SAAU,aAGd5kB,KAAKi4C,KAAOA,EACZj4C,KAAKkP,QAAUvO,EAAKgF,UAAU3F,KAAKi1B,gBACnCj1B,KAAK+qC,iBAAmBA,EAExB/qC,KAAKmsC,eACLnsC,KAAK2wB,OACL3wB,KAAK+0B,UACL/0B,KAAKqsC,eAAiB,EACtBrsC,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAjClB,GAAIvO,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BqC,EAAYrC,EAAoB,GAkCpC6C,GAAOmR,UAAY,GAAI3R,GAEvBQ,EAAOmR,UAAUsD,MAAQ,WACvBxX,KAAK+0B,UACL/0B,KAAKqsC,eAAiB,GAGxBtpC,EAAOmR,UAAUs4B,SAAW,SAASx5B,EAAOy5B,GAErCzsC,KAAK+0B,OAAO5uB,eAAe6M,KAC9BhT,KAAK+0B,OAAO/hB,GAASy5B,GAEvBzsC,KAAKqsC,gBAAkB,GAGzBtpC,EAAOmR,UAAUw4B,YAAc,SAAS15B,EAAOy5B,GAC7CzsC,KAAK+0B,OAAO/hB,GAASy5B,GAGvB1pC,EAAOmR,UAAUy4B,YAAc,SAAS35B,GAClChT,KAAK+0B,OAAO5uB,eAAe6M,WACtBhT,MAAK+0B,OAAO/hB,GACnBhT,KAAKqsC,gBAAkB,IAI3BtpC,EAAOmR,UAAUohB,QAAU,WACzBt1B,KAAK2wB,IAAIrQ,MAAQtO,SAASM,cAAc,OACxCtS,KAAK2wB,IAAIrQ,MAAMlY,UAAY,SAC3BpI,KAAK2wB,IAAIrQ,MAAM5S,MAAMkX,SAAW,WAChC5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,OAC3BjI,KAAK2wB,IAAIrQ,MAAM5S,MAAMk/B,QAAU,QAE/B5sC,KAAK2wB,IAAIynB,SAAWpmC,SAASM,cAAc,OAC3CtS,KAAK2wB,IAAIynB,SAAShwC,UAAY,aAC9BpI,KAAK2wB,IAAIynB,SAAS1qC,MAAMkX,SAAW,WACnC5kB,KAAK2wB,IAAIynB,SAAS1qC,MAAMzF,IAAM,MAE9BjI,KAAK8qC,IAAM94B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAK8qC,IAAIp9B,MAAMkX,SAAW,WAC1B5kB,KAAK8qC,IAAIp9B,MAAMzF,IAAM,MACrBjI,KAAK8qC,IAAIp9B,MAAM4F,MAAQtT,KAAKkP,QAAQgpC,SAAW,EAAI,KACnDl4C,KAAK8qC,IAAIp9B,MAAM6F,OAAS,OAExBvT,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAK8qC,KAChC9qC,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAK2wB,IAAIynB,WAMtCr1C,EAAOmR,UAAU4yB,KAAO,WAElB9mC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,QAQnDvd,EAAOmR,UAAU6yB,KAAO,WAEjB/mC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,QAI9Cvd,EAAOmR,UAAUD,WAAa,SAAS/E,GACrC,GAAIP,IAAU,UAAU,cAAc,QAAQ,OAAO,QACrDhO,GAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAASA,IAGjDnM,EAAOmR,UAAUuO,OAAS,WACxB,GAAI0qB,GAAe,CACnB,KAAK,GAAIlU,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,IACvIkU,IAKN,IAAuC,GAAnCntC,KAAKkP,QAAQlP,KAAKi4C,MAAMxuB,SAA2C,GAAvBzpB,KAAKqsC,gBAA+C,GAAxBrsC,KAAKkP,QAAQC,SAAoC,GAAhBg+B,EAC3GntC,KAAK8mC,WAEF,CAqBH,GApBA9mC,KAAK+mC,OACmC,YAApC/mC,KAAKkP,QAAQlP,KAAKi4C,MAAMrzB,UAA8D,eAApC5kB,KAAKkP,QAAQlP,KAAKi4C,MAAMrzB,UAC5E5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAM7F,KAAO,MAC5B7H,KAAK2wB,IAAIrQ,MAAM5S,MAAM4b,UAAY,OACjCtpB,KAAK2wB,IAAIynB,SAAS1qC,MAAM4b,UAAY,OACpCtpB,KAAK2wB,IAAIynB,SAAS1qC,MAAM7F,KAAQ7H,KAAKkP,QAAQgpC,SAAW,GAAM,KAC9Dl4C,KAAK2wB,IAAIynB,SAAS1qC,MAAM2a,MAAQ,GAChCroB,KAAK8qC,IAAIp9B,MAAM7F,KAAO,MACtB7H,KAAK8qC,IAAIp9B,MAAM2a,MAAQ,KAGvBroB,KAAK2wB,IAAIrQ,MAAM5S,MAAM2a,MAAQ,MAC7BroB,KAAK2wB,IAAIrQ,MAAM5S,MAAM4b,UAAY,QACjCtpB,KAAK2wB,IAAIynB,SAAS1qC,MAAM4b,UAAY,QACpCtpB,KAAK2wB,IAAIynB,SAAS1qC,MAAM2a,MAASroB,KAAKkP,QAAQgpC,SAAW,GAAM,KAC/Dl4C,KAAK2wB,IAAIynB,SAAS1qC,MAAM7F,KAAO,GAC/B7H,KAAK8qC,IAAIp9B,MAAM2a,MAAQ,MACvBroB,KAAK8qC,IAAIp9B,MAAM7F,KAAO,IAGgB,YAApC7H,KAAKkP,QAAQlP,KAAKi4C,MAAMrzB,UAA8D,aAApC5kB,KAAKkP,QAAQlP,KAAKi4C,MAAMrzB,SAC5E5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,EAAIhE,OAAOjE,KAAKu1B,KAAK5E,IAAI5D,OAAOrf,MAAMzF,IAAIgD,QAAQ,KAAK,KAAO,KACzFjL,KAAK2wB,IAAIrQ,MAAM5S,MAAM4W,OAAS,OAE3B,CACH,GAAI+zB,GAAmBr4C,KAAKu1B,KAAKC,SAASzI,OAAOxZ,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,MAC7FvT,MAAK2wB,IAAIrQ,MAAM5S,MAAM4W,OAAS,EAAI+zB,EAAmBp0C,OAAOjE,KAAKu1B,KAAK5E,IAAI5D,OAAOrf,MAAMzF,IAAIgD,QAAQ,KAAK,KAAO,KAC/GjL,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,GAGH,GAAtBjI,KAAKkP,QAAQg8B,OACflrC,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAK2wB,IAAIynB,SAASpnB,YAAc,GAAK,KAClEhxB,KAAK2wB,IAAIynB,SAAS1qC,MAAM2a,MAAQ,GAChCroB,KAAK2wB,IAAIynB,SAAS1qC,MAAM7F,KAAO,GAC/B7H,KAAK8qC,IAAIp9B,MAAM4F,MAAQ,QAGvBtT,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAKkP,QAAQgpC,SAAW,GAAKl4C,KAAK2wB,IAAIynB,SAASpnB,YAAc,GAAK,KAC/FhxB,KAAKs4C,kBAGP,IAAInlC,GAAU,EACd,KAAK,GAAI8lB,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,KACvI9lB,GAAWnT,KAAK+0B,OAAOkE,GAAS9lB,QAAU,UAIhDnT,MAAK2wB,IAAIynB,SAASnzB,UAAY9R,EAC9BnT,KAAK2wB,IAAIynB,SAAS1qC,MAAMyjB,WAAe,IAAOnxB,KAAKkP,QAAQgpC,SAAYl4C,KAAKkP,QAAQipC,YAAe,OAIvGp1C,EAAOmR,UAAUokC,gBAAkB,WACjC,GAAIt4C,KAAK2wB,IAAIrQ,MAAMnW,WAAY,CAC7BvJ,EAAQ0Q,gBAAgBtR,KAAKmsC,YAC7B,IAAInnB,GAAUld,OAAOygC,iBAAiBvoC,KAAK2wB,IAAIrQ,OAAOi4B,WAClDxL,EAAa9oC,OAAO+gB,EAAQ/Z,QAAQ,KAAK,KACzCuH,EAAIu6B,EACJxB,EAAYvrC,KAAKkP,QAAQgpC,SACzBpL,EAAa,IAAO9sC,KAAKkP,QAAQgpC,SACjCzlC,EAAIs6B,EAAa,GAAMD,EAAa,CAExC9sC,MAAK8qC,IAAIp9B,MAAM4F,MAAQi4B,EAAY,EAAIwB,EAAa,IAEpD,KAAK,GAAI9T,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,KACvIj5B,KAAK+0B,OAAOkE,GAAS+T,SAASx6B,EAAGC,EAAGzS,KAAKmsC,YAAansC,KAAK8qC,IAAKS,EAAWuB,GAC3Er6B,GAAKq6B,EAAa9sC,KAAKkP,QAAQipC,aAKrCv3C,GAAQ+Q,gBAAgB3R,KAAKmsC,eAIjCtsC,EAAOD,QAAUmD,GAKb,SAASlD,EAAQD,EAASM,GAqB9B,QAAS8C,GAAUuyB,EAAMrmB,GACvBlP,KAAKK,GAAKM,EAAK2E,aACftF,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACH2b,iBAAkB,OAClB4H,aAAc,UACdvhC,MAAM,EACNwhC,UAAU,EACVC,YAAa,QACbnI,QACEphC,SAAS,EACTgmB,YAAa,UAEfznB,MAAO,OACPirC,UACErlC,MAAO,GACPslC,cAAe,UACf/P,MAAO,UAETkH,YACE5gC,SAAS,EACT6gC,gBAAiB,cACjBC,MAAO,IAETp9B,YACE1D,SAAS,EACT4D,KAAM,EACNrF,MAAO,UAETmrC,UACE7N,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACP53B,MAAO,OACPmW,SAAS,EACT8T,YAAY,EACZD,aACEz1B,MAAO1D,IAAI0C,OAAWzC,IAAIyC,QAC1BwhB,OAAQlkB,IAAI0C,OAAWzC,IAAIyC,UAkB/BiyC,QACE3pC,SAAS,EACT+7B,OAAO,EACPrjC,MACE4hB,SAAS,EACT7E,SAAU,YAEZyD,OACEoB,SAAS,EACT7E,SAAU,cAGdmQ,QACEsE,gBAKJr5B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAK2wB,OACL3wB,KAAKqG,SACLrG,KAAK8D,OAAS,KACd9D,KAAK+0B,UACL/0B,KAAK+4C,oBAAqB,EAC1B/4C,KAAKg5C,iBAAkB,EACvBh5C,KAAKi5C,yBAA0B,CAE/B,IAAI/jC,GAAKlV,IACTA,MAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAGlB52B,KAAK6zC,eACH7/B,IAAO,SAAUnK,EAAOgL,GACtBK,EAAG4+B,OAAOj/B,EAAO5S,QAEnB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAG6+B,UAAUl/B,EAAO5S,QAEtBmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAG8+B,UAAUn/B,EAAO5S,SAKxBjC,KAAKi0C,gBACHjgC,IAAO,SAAUnK,EAAOgL,GACtBK,EAAGg/B,aAAar/B,EAAO5S,QAEzB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAGi/B,gBAAgBt/B,EAAO5S,QAE5BmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAGk/B,gBAAgBv/B,EAAO5S,SAI9BjC,KAAKiC,SACLjC,KAAKs0C,aACLt0C,KAAKk5C,UAAYl5C,KAAKu1B,KAAKe,MAAMjmB,MACjCrQ,KAAKw0C,eAELx0C,KAAKmsC,eACLnsC,KAAKiU,WAAW/E,GAChBlP,KAAKwvC,0BAA4B,GACjCxvC,KAAKm5C,QAAU,EACfn5C,KAAKu1B,KAAKE,QAAQnhB,GAAG,eAAgB,WACnCY,EAAGgkC,UAAYhkC,EAAGqgB,KAAKe,MAAMjmB,MAC7B6E,EAAG41B,IAAIp9B,MAAM7F,KAAOlH,EAAK4J,OAAOK,QAAQsK,EAAG7O,MAAMiN,OACjD4B,EAAGuN,OAAOliB,KAAK2U,GAAG,KAIpBlV,KAAKs1B,UACLt1B,KAAKgxC,WAAalG,IAAK9qC,KAAK8qC,IAAKqB,YAAansC,KAAKmsC,YAAaj9B,QAASlP,KAAKkP,QAAS6lB,OAAQ/0B,KAAK+0B,QACpG/0B,KAAKu1B,KAAKE,QAAQhH,KAAK,UAvJzB,GAAI9tB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BqC,EAAYrC,EAAoB,IAChCwC,EAAWxC,EAAoB,IAC/ByC,EAAazC,EAAoB,IACjC6C,EAAS7C,EAAoB,IAC7Bk5C,EAAoBl5C,EAAoB,IAExCu0C,EAAY,eAiJhBzxC,GAAUkR,UAAY,GAAI3R,GAK1BS,EAAUkR,UAAUohB,QAAU,WAC5B,GAAIhV,GAAQtO,SAASM,cAAc,MACnCgO,GAAMlY,UAAY,YAClBpI,KAAK2wB,IAAIrQ,MAAQA,EAGjBtgB,KAAK8qC,IAAM94B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAK8qC,IAAIp9B,MAAMkX,SAAW,WAC1B5kB,KAAK8qC,IAAIp9B,MAAM6F,QAAU,GAAKvT,KAAKkP,QAAQwpC,aAAaztC,QAAQ,KAAK,IAAM,KAC3EjL,KAAK8qC,IAAIp9B,MAAMk/B,QAAU,QACzBtsB,EAAMpO,YAAYlS,KAAK8qC,KAGvB9qC,KAAKkP,QAAQ2pC,SAAS1jB,YAAc,OACpCn1B,KAAKs5B,UAAY,GAAI52B,GAAS1C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ2pC,SAAU74C,KAAK8qC,IAAK9qC,KAAKkP,QAAQ6lB,QAEvF/0B,KAAKkP,QAAQ2pC,SAAS1jB,YAAc,QACpCn1B,KAAKu5B,WAAa,GAAI72B,GAAS1C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ2pC,SAAU74C,KAAK8qC,IAAK9qC,KAAKkP,QAAQ6lB,cACjF/0B,MAAKkP,QAAQ2pC,SAAS1jB,YAG7Bn1B,KAAKw5B,WAAa,GAAIz2B,GAAO/C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ4pC,OAAQ,OAAQ94C,KAAKkP,QAAQ6lB,QAClF/0B,KAAKy5B,YAAc,GAAI12B,GAAO/C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ4pC,OAAQ,QAAS94C,KAAKkP,QAAQ6lB,QAEpF/0B,KAAK+mC,QAOP/jC,EAAUkR,UAAUD,WAAa,SAAS/E,GACxC,GAAIA,EAAS,CACX,GAAIP,IAAU,WAAW,eAAe,SAAS,cAAc,mBAAmB,QAAQ,WAAW,WAAW,OAAO,SAC3F9H,UAAxBqI,EAAQwpC,aAAgD7xC,SAAnBqI,EAAQqE,QAAsE1M,SAA9C7G,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QAC1GvT,KAAKg5C,iBAAkB,EACvBh5C,KAAKi5C,yBAA0B,GAEsBpyC,SAA9C7G,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QAAgD1M,SAAxBqI,EAAQwpC,aACtErtC,UAAU6D,EAAQwpC,YAAc,IAAIztC,QAAQ,KAAK,KAAOjL,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,SAC7FvT,KAAKg5C,iBAAkB,GAG3Br4C,EAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAASA,GAC/CvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UAEpCA,EAAQ6gC,YACuB,gBAAtB7gC,GAAQ6gC,YACb7gC,EAAQ6gC,WAAWC,kBACqB,WAAtC9gC,EAAQ6gC,WAAWC,gBACrBhwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,EAEa,WAAtC/gC,EAAQ6gC,WAAWC,gBAC1BhwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,GAGhCjwC,KAAKkP,QAAQ6gC,WAAWC,gBAAkB,cAC1ChwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,KAMpCjwC,KAAKs5B,WACkBzyB,SAArBqI,EAAQ2pC,WACV74C,KAAKs5B,UAAUrlB,WAAWjU,KAAKkP,QAAQ2pC,UACvC74C,KAAKu5B,WAAWtlB,WAAWjU,KAAKkP,QAAQ2pC,WAIxC74C,KAAKw5B,YACgB3yB,SAAnBqI,EAAQ4pC,SACV94C,KAAKw5B,WAAWvlB,WAAWjU,KAAKkP,QAAQ4pC,QACxC94C,KAAKy5B,YAAYxlB,WAAWjU,KAAKkP,QAAQ4pC,SAIzC94C,KAAK+0B,OAAO5uB,eAAesuC,IAC7Bz0C,KAAK+0B,OAAO0f,GAAWxgC,WAAW/E,GAKlClP,KAAK2wB,IAAIrQ,OACXtgB,KAAKyiB,QAAO,IAOhBzf,EAAUkR,UAAU4yB,KAAO,WAErB9mC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,QASnDtd,EAAUkR,UAAU6yB,KAAO,WAEpB/mC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,QAS9Ctd,EAAUkR,UAAU8iB,SAAW,SAAS/0B,GACtC,GACEiU,GADEhB,EAAKlV,KAEPq2C,EAAer2C,KAAK22B,SAGtB,IAAK10B,EAGA,CAAA,KAAIA,YAAiBpB,IAAWoB,YAAiBnB,IAIpD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK22B,UAAY10B,MAHjBjC,MAAK22B,UAAY,IAoBnB,IAXI0f,IAEF11C,EAAKiI,QAAQ5I,KAAK6zC,cAAe,SAAUhrC,EAAUgB,GACnDwsC,EAAa5hC,IAAI5K,EAAOhB,KAI1BqN,EAAMmgC,EAAaz/B,SACnB5W,KAAKg0C,UAAU99B,IAGblW,KAAK22B,UAAW,CAElB,GAAIt2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAK6zC,cAAe,SAAUhrC,EAAUgB,GACnDqL,EAAGyhB,UAAUriB,GAAGzK,EAAOhB,EAAUxI,KAInC6V,EAAMlW,KAAK22B,UAAU/f,SACrB5W,KAAK8zC,OAAO59B,GAEdlW,KAAK20C,mBAEL30C,KAAKyiB,QAAO,IAQdzf,EAAUkR,UAAU6iB,UAAY,SAAShC,GACvC,GACI7e,GADAhB,EAAKlV,IAgBT,IAZIA,KAAK42B,aACPj2B,EAAKiI,QAAQ5I,KAAKi0C,eAAgB,SAAUprC,EAAUgB,GACpDqL,EAAG0hB,WAAWjiB,YAAY9K,EAAOhB,KAInCqN,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAK42B,WAAa,KAClB52B,KAAKo0C,gBAAgBl+B,IAIlB6e,EAGA,CAAA,KAAIA,YAAkBl0B,IAAWk0B,YAAkBj0B,IAItD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK42B,WAAa7B,MAHlB/0B,MAAK42B,WAAa,IASpB,IAAI52B,KAAK42B,WAAY,CAEnB,GAAIv2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAKi0C,eAAgB,SAAUprC,EAAUgB,GACpDqL,EAAG0hB,WAAWtiB,GAAGzK,EAAOhB,EAAUxI,KAIpC6V,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAKk0C,aAAah+B,GAEpBlW,KAAK+zC,aASP/wC,EAAUkR,UAAU6/B,UAAY,WAC9B/zC,KAAK20C,mBACL30C,KAAKq5C,sBAELr5C,KAAKyiB,QAAO,IAEdzf,EAAUkR,UAAU4/B,OAAkB,SAAU59B,GAAMlW,KAAK+zC,UAAU79B,IACrElT,EAAUkR,UAAU8/B,UAAkB,SAAU99B,GAAMlW,KAAK+zC,UAAU79B,IACrElT,EAAUkR,UAAUigC,gBAAmB,SAAUE,GAC/C,IAAK,GAAIxuC,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAAK,CACxC,GAAI6M,GAAQ1S,KAAK42B,WAAW3gB,IAAIo+B,EAASxuC,GACzC7F,MAAKs5C,aAAa5mC,EAAO2hC,EAASxuC,IAIpC7F,KAAKyiB,QAAO,IAEdzf,EAAUkR,UAAUggC,aAAe,SAAUG,GAAWr0C,KAAKm0C,gBAAgBE,IAQ7ErxC,EAAUkR,UAAUkgC,gBAAkB,SAAUC,GAC9C,IAAK,GAAIxuC,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/B7F,KAAK+0B,OAAO5uB,eAAekuC,EAASxuC,MACmB,SAArD7F,KAAK+0B,OAAOsf,EAASxuC,IAAIqJ,QAAQ0hC,kBACnC5wC,KAAKu5B,WAAWoT,YAAY0H,EAASxuC,IACrC7F,KAAKy5B,YAAYkT,YAAY0H,EAASxuC,IACtC7F,KAAKy5B,YAAYhX,WAGjBziB,KAAKs5B,UAAUqT,YAAY0H,EAASxuC,IACpC7F,KAAKw5B,WAAWmT,YAAY0H,EAASxuC,IACrC7F,KAAKw5B,WAAW/W,gBAEXziB,MAAK+0B,OAAOsf,EAASxuC,IAGhC7F,MAAK20C,mBAEL30C,KAAKyiB,QAAO,IAWdzf,EAAUkR,UAAUolC,aAAe,SAAU5mC,EAAOumB,GAC7Cj5B,KAAK+0B,OAAO5uB,eAAe8yB,IAY9Bj5B,KAAK+0B,OAAOkE,GAASrjB,OAAOlD,GACyB,SAAjD1S,KAAK+0B,OAAOkE,GAAS/pB,QAAQ0hC,kBAC/B5wC,KAAKu5B,WAAWmT,YAAYzT,EAASj5B,KAAK+0B,OAAOkE,IACjDj5B,KAAKy5B,YAAYiT,YAAYzT,EAASj5B,KAAK+0B,OAAOkE,MAGlDj5B,KAAKs5B,UAAUoT,YAAYzT,EAASj5B,KAAK+0B,OAAOkE,IAChDj5B,KAAKw5B,WAAWkT,YAAYzT,EAASj5B,KAAK+0B,OAAOkE,OAlBnDj5B,KAAK+0B,OAAOkE,GAAW,GAAIt2B,GAAW+P,EAAOumB,EAASj5B,KAAKkP,QAASlP,KAAKwvC,0BACpB,SAAjDxvC,KAAK+0B,OAAOkE,GAAS/pB,QAAQ0hC,kBAC/B5wC,KAAKu5B,WAAWiT,SAASvT,EAASj5B,KAAK+0B,OAAOkE,IAC9Cj5B,KAAKy5B,YAAY+S,SAASvT,EAASj5B,KAAK+0B,OAAOkE,MAG/Cj5B,KAAKs5B,UAAUkT,SAASvT,EAASj5B,KAAK+0B,OAAOkE,IAC7Cj5B,KAAKw5B,WAAWgT,SAASvT,EAASj5B,KAAK+0B,OAAOkE,MAclDj5B,KAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,UASnBzf,EAAUkR,UAAUmlC,oBAAsB,WACxC,GAAsB,MAAlBr5C,KAAK22B,UAAmB,CAC1B,GACIsC,GADAsgB,IAEJ,KAAKtgB,IAAWj5B,MAAK+0B,OACf/0B,KAAK+0B,OAAO5uB,eAAe8yB,KAC7BsgB,EAActgB,MAGlB,KAAK,GAAI3iB,KAAUtW,MAAK22B,UAAUhjB,MAChC,GAAI3T,KAAK22B,UAAUhjB,MAAMxN,eAAemQ,GAAS,CAC/C,GAAIxG,GAAO9P,KAAK22B,UAAUhjB,MAAM2C,EAChC,IAAkCzP,SAA9B0yC,EAAczpC,EAAK4C,OACrB,KAAM,IAAI9O,OAAM,4IAElBkM,GAAK0C,EAAI7R,EAAKuG,QAAQ4I,EAAK0C,EAAE,QAC7B+mC,EAAczpC,EAAK4C,OAAOnK,KAAKuH,GAGnC,IAAKmpB,IAAWj5B,MAAK+0B,OACf/0B,KAAK+0B,OAAO5uB,eAAe8yB,IAC7Bj5B,KAAK+0B,OAAOkE,GAASjC,SAASuiB,EAActgB,MAYpDj2B,EAAUkR,UAAUygC,iBAAmB,WACrC,GAAI30C,KAAK22B,WAA+B,MAAlB32B,KAAK22B,UAAmB,CAC5C,GAAI6iB,GAAmB,CACvB,KAAK,GAAIljC,KAAUtW,MAAK22B,UAAUhjB,MAChC,GAAI3T,KAAK22B,UAAUhjB,MAAMxN,eAAemQ,GAAS,CAC/C,GAAIxG,GAAO9P,KAAK22B,UAAUhjB,MAAM2C,EACpBzP,SAARiJ,IACEA,EAAK3J,eAAe,SACHU,SAAfiJ,EAAK4C,QACP5C,EAAK4C,MAAQ+hC,GAIf3kC,EAAK4C,MAAQ+hC,EAEf+E,EAAmB1pC,EAAK4C,OAAS+hC,EAAY+E,EAAmB,EAAIA,GAK1E,GAAwB,GAApBA,QACKx5C,MAAK+0B,OAAO0f,GACnBz0C,KAAKw5B,WAAWmT,YAAY8H,GAC5Bz0C,KAAKy5B,YAAYkT,YAAY8H,GAC7Bz0C,KAAKs5B,UAAUqT,YAAY8H,GAC3Bz0C,KAAKu5B,WAAWoT,YAAY8H,OAEzB,CACH,GAAI/hC,IAASrS,GAAIo0C,EAAWthC,QAASnT,KAAKkP,QAAQspC,aAClDx4C,MAAKs5C,aAAa5mC,EAAO+hC,eAIpBz0C,MAAK+0B,OAAO0f,GACnBz0C,KAAKw5B,WAAWmT,YAAY8H,GAC5Bz0C,KAAKy5B,YAAYkT,YAAY8H,GAC7Bz0C,KAAKs5B,UAAUqT,YAAY8H,GAC3Bz0C,KAAKu5B,WAAWoT,YAAY8H,EAG9Bz0C,MAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,UAQnBzf,EAAUkR,UAAUuO,OAAS,SAASg3B,GACpC,GAAI5P,IAAU,CAGd7pC,MAAKqG,MAAMiN,MAAQtT,KAAK2wB,IAAIrQ,MAAM0Q,YAClChxB,KAAKqG,MAAMkN,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAGhC1M,SAAnB7G,KAAKy1C,WAA2Bz1C,KAAKqG,MAAMiN,QAC7CmmC,GAAmB,GAIrB5P,EAAU7pC,KAAK4pC,cAAgBC,CAG/B,IAAIyL,GAAkBt1C,KAAKu1B,KAAKe,MAAMhmB,IAAMtQ,KAAKu1B,KAAKe,MAAMjmB,MACxDklC,EAAUD,GAAmBt1C,KAAKw1C,mBA6BtC,IA5BAx1C,KAAKw1C,oBAAsBF,EAKZ,GAAXzL,IACF7pC,KAAK8qC,IAAIp9B,MAAM4F,MAAQ3S,EAAK4J,OAAOK,OAAO,EAAE5K,KAAKqG,MAAMiN,OACvDtT,KAAK8qC,IAAIp9B,MAAM7F,KAAOlH,EAAK4J,OAAOK,QAAQ5K,KAAKqG,MAAMiN,QAGN,KAA1CtT,KAAKkP,QAAQqE,OAAS,IAAIvM,QAAQ,MAA8C,GAAhChH,KAAKi5C,2BACxDj5C,KAAKg5C,iBAAkB,IAKC,GAAxBh5C,KAAKg5C,iBACHh5C,KAAKkP,QAAQwpC,aAAe14C,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,OAC1EvT,KAAKkP,QAAQwpC,YAAc14C,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,KACvEvT,KAAK8qC,IAAIp9B,MAAM6F,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,MAEtEvT,KAAKg5C,iBAAkB,GAGvBh5C,KAAK8qC,IAAIp9B,MAAM6F,QAAU,GAAKvT,KAAKkP,QAAQwpC,aAAaztC,QAAQ,KAAK,IAAM,KAI9D,GAAX4+B,GAA6B,GAAV0L,GAA6C,GAA3Bv1C,KAAK+4C,oBAAkD,GAApBU,EAC1E5P,EAAU7pC,KAAK05C,gBAAkB7P,MAIjC,IAAsB,GAAlB7pC,KAAKk5C,UAAgB,CACvB,GAAIxuB,GAAS1qB,KAAKu1B,KAAKe,MAAMjmB,MAAQrQ,KAAKk5C,UACtC5iB,EAAQt2B,KAAKu1B,KAAKe,MAAMhmB,IAAMtQ,KAAKu1B,KAAKe,MAAMjmB,KAClD,IAAwB,GAApBrQ,KAAKqG,MAAMiN,MAAY,CACzB,GAAIqmC,GAAmB35C,KAAKqG,MAAMiN,MAAMgjB,EACpCrjB,EAAUyX,EAASivB,CACvB35C,MAAK8qC,IAAIp9B,MAAM7F,MAAS7H,KAAKqG,MAAMiN,MAAQL,EAAW,MAO5D,MAFAjT,MAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,SACVonB,GAQT7mC,EAAUkR,UAAUwlC,aAAe,WAGjC,GADA94C,EAAQ0Q,gBAAgBtR,KAAKmsC,aACL,GAApBnsC,KAAKqG,MAAMiN,OAAgC,MAAlBtT,KAAK22B,UAAmB,CACnD,GAAIjkB,GAAO7M,EACP+zC,KACAC,KACAC,KACAC,GAAe,EAGf1F,IACJ,KAAK,GAAIpb,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KAC7BvmB,EAAQ1S,KAAK+0B,OAAOkE,GACC,GAAjBvmB,EAAM+W,SAAgE5iB,SAA5C7G,KAAKkP,QAAQ6lB,OAAOsE,WAAWJ,IAAqE,GAA3Cj5B,KAAKkP,QAAQ6lB,OAAOsE,WAAWJ,IACpHob,EAAS9rC,KAAK0wB,GAIpB,IAAIob,EAASruC,OAAS,EAAG,CAEvB,GAAIg0C,GAAUh6C,KAAKu1B,KAAK50B,KAAKy1B,cAAcp2B,KAAKu1B,KAAKC,SAAS91B,KAAK4T,OAC/D2mC,EAAUj6C,KAAKu1B,KAAK50B,KAAKy1B,aAAa,EAAIp2B,KAAKu1B,KAAKC,SAAS91B,KAAK4T,OAClEsjB,IAQJ,KANA52B,KAAKk6C,iBAAiB7F,EAAUzd,EAAYojB,EAASC,GAGrDj6C,KAAKm6C,eAAe9F,EAAUzd,GAGzB/wB,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/B+zC,EAAsBvF,EAASxuC,IAAM7F,KAAKo6C,qBAAqBxjB,EAAWyd,EAASxuC,IAIrF7F,MAAKq6C,YAAYhG,EAAUuF,EAAuBE,GAIlDC,EAAe/5C,KAAKs6C,aAAajG,EAAUyF,EAC3C,IAAIS,GAAa,CACjB,IAAoB,GAAhBR,GAAwB/5C,KAAKm5C,QAAUoB,EAKzC,MAJA35C,GAAQ+Q,gBAAgB3R,KAAKmsC,aAC7BnsC,KAAK+4C,oBAAqB,EAC1B/4C,KAAKm5C,UACLn5C,KAAKu1B,KAAKE,QAAQhH,KAAK,WAChB,CAUP,KAPIzuB,KAAKm5C,QAAUoB,GACjB1f,QAAQtG,IAAI,6EAEdv0B,KAAKm5C,QAAU,EACfn5C,KAAK+4C,oBAAqB,EAGrBlzC,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/B6M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IAC7Bg0C,EAAmBxF,EAASxuC,IAAM7F,KAAKw6C,qBAAqB5jB,EAAWyd,EAASxuC,IAAK6M,EAIvF,KAAK7M,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/B6M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IACF,OAAvB6M,EAAMxD,QAAQxB,OAChBgF,EAAMq+B,KAAK8I,EAAmBxF,EAASxuC,IAAK6M,EAAO1S,KAAKgxC,UAG5DoI,GAAkBrI,KAAKsD,EAAUwF,EAAoB75C,KAAKgxC,YAOhE,MADApwC,GAAQ+Q,gBAAgB3R,KAAKmsC,cACtB,GAiBTnpC,EAAUkR,UAAUgmC,iBAAmB,SAAU7F,EAAUzd,EAAYojB,EAASC,GAC9E,GAAIvnC,GAAO7M,EAAG4mB,EAAG3c,CACjB,IAAIukC,EAASruC,OAAS,EACpB,IAAKH,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAAK,CACpC6M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IAC7B+wB,EAAWyd,EAASxuC,MACpB,IAAI40C,GAAgB7jB,EAAWyd,EAASxuC,GAExC,IAA0B,GAAtB6M,EAAMxD,QAAQ+H,KAAc,CAC9B,GAAIyjC,GAAQl2C,KAAKJ,IAAI,EAAGzD,EAAKqP,kBAAkB0C,EAAMikB,UAAWqjB,EAAS,IAAK,UAC9E,KAAKvtB,EAAIiuB,EAAOjuB,EAAI/Z,EAAMikB,UAAU3wB,OAAQymB,IAE1C,GADA3c,EAAO4C,EAAMikB,UAAUlK,GACV5lB,SAATiJ,EAAoB,CACtB,GAAIA,EAAK0C,EAAIynC,EAAS,CACpBQ,EAAclyC,KAAKuH,EACnB,OAGA2qC,EAAclyC,KAAKuH,QAMzB,KAAK2c,EAAI,EAAGA,EAAI/Z,EAAMikB,UAAU3wB,OAAQymB,IACtC3c,EAAO4C,EAAMikB,UAAUlK,GACV5lB,SAATiJ,GACEA,EAAK0C,EAAIwnC,GAAWlqC,EAAK0C,EAAIynC,GAC/BQ,EAAclyC,KAAKuH,KAgBjC9M,EAAUkR,UAAUimC,eAAiB,SAAU9F,EAAUzd,GACvD,GAAIlkB,EACJ,IAAI2hC,EAASruC,OAAS,EACpB,IAAK,GAAIH,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAEnC,GADA6M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IACC,GAA1B6M,EAAMxD,QAAQupC,SAAkB,CAClC,GAAIgC,GAAgB7jB,EAAWyd,EAASxuC,GACxC,IAAI40C,EAAcz0C,OAAS,EAAG,CAC5B,GAAI20C,GAAY,EACZC,EAAiBH,EAAcz0C,OAI/B60C,EAAY76C,KAAKu1B,KAAK50B,KAAKq1B,eAAeykB,EAAcA,EAAcz0C,OAAS,GAAGwM,GAAKxS,KAAKu1B,KAAK50B,KAAKq1B,eAAeykB,EAAc,GAAGjoC,GACtIsoC,EAAiBF,EAAiBC,CACtCF,GAAYn2C,KAAKL,IAAIK,KAAKu2C,KAAK,GAAMH,GAAiBp2C,KAAKJ,IAAI,EAAGI,KAAK+pB,MAAMusB,IAG7E,KAAK,GADDE,MACKvuB,EAAI,EAAOmuB,EAAJnuB,EAAoBA,GAAKkuB,EACvCK,EAAYzyC,KAAKkyC,EAAchuB,GAGjCmK,GAAWyd,EAASxuC,IAAMm1C,KAgBpCh4C,EAAUkR,UAAUmmC,YAAc,SAAUhG,EAAUzd,EAAYkjB,GAChE,GAAIhJ,GAAWp+B,EAAO7M,EAGlBqJ,EAFA+rC,KACAC,IAEJ,IAAI7G,EAASruC,OAAS,EAAG,CACvB,IAAKH,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/BirC,EAAYla,EAAWyd,EAASxuC,IAChCqJ,EAAUlP,KAAK+0B,OAAOsf,EAASxuC,IAAIqJ,QAC/B4hC,EAAU9qC,OAAS,IACrB0M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IAES,SAAlCqJ,EAAQypC,SAASC,eAA6C,OAAjB1pC,EAAQxB,MACvB,QAA5BwB,EAAQ0hC,iBAA6BqK,EAAuBA,EAAoBlmC,OAAOrC,EAAMm+B,UAAUC,IAClEoK,EAAuBA,EAAqBnmC,OAAOrC,EAAMm+B,UAAUC,IAG5GgJ,EAAYzF,EAASxuC,IAAM6M,EAAMm+B,UAAUC,EAAUuD,EAASxuC,IAMpEuzC,GAAkB+B,oBAAoBF,EAAsBnB,EAAazF,EAAU,iBAAmB,QACtG+E,EAAkB+B,oBAAoBD,EAAsBpB,EAAazF,EAAU,kBAAmB,WAW1GrxC,EAAUkR,UAAUomC,aAAe,SAAUjG,EAAUyF,GACrD,GAGoEsB,GAAQC,EAHxExR,GAAU,EACVyR,GAAgB,EAChBC,GAAiB,EACjBC,EAAU,IAAKC,EAAW,IAAKC,EAAU,KAAMC,EAAW,IAE9D,IAAItH,EAASruC,OAAS,EAAG,CAEvB,IAAK,GAAIH,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAAK,CACxC,GAAI6M,GAAQ1S,KAAK+0B,OAAOsf,EAASxuC,GAC7B6M,IAA2C,SAAlCA,EAAMxD,QAAQ0hC,kBACzB0K,GAAgB,EAChBE,EAAU,EACVE,EAAU,GAEHhpC,GAASA,EAAMxD,QAAQ0hC,mBAC9B2K,GAAiB,EACjBE,EAAW,EACXE,EAAW,GAKf,IAAK,GAAI91C,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/Bi0C,EAAY3zC,eAAekuC,EAASxuC,KAClCi0C,EAAYzF,EAASxuC,IAAI+1C,UAAW,IACtCR,EAAStB,EAAYzF,EAASxuC,IAAI1B,IAClCk3C,EAASvB,EAAYzF,EAASxuC,IAAIzB,IAEe,SAA7C01C,EAAYzF,EAASxuC,IAAI+qC,kBAC3B0K,GAAgB,EAChBE,EAAUA,EAAUJ,EAASA,EAASI,EACtCE,EAAoBL,EAAVK,EAAmBL,EAASK,IAGtCH,GAAiB,EACjBE,EAAWA,EAAWL,EAASA,EAASK,EACxCE,EAAsBN,EAAXM,EAAoBN,EAASM,GAM3B,IAAjBL,GACFt7C,KAAKs5B,UAAUnF,SAASqnB,EAASE,GAEb,GAAlBH,GACFv7C,KAAKu5B,WAAWpF,SAASsnB,EAAUE,GAoCvC,MAjCA9R,GAAU7pC,KAAK67C,qBAAqBP,EAAgBt7C,KAAKs5B,YAAeuQ,EACxEA,EAAU7pC,KAAK67C,qBAAqBN,EAAgBv7C,KAAKu5B,aAAesQ,EAElD,GAAlB0R,GAA2C,GAAjBD,GAC5Bt7C,KAAKs5B,UAAUwiB,WAAY,EAC3B97C,KAAKu5B,WAAWuiB,WAAY,IAG5B97C,KAAKs5B,UAAUwiB,WAAY,EAC3B97C,KAAKu5B,WAAWuiB,WAAY,GAE9B97C,KAAKu5B,WAAW2S,QAAUoP,EACI,GAA1Bt7C,KAAKu5B,WAAW2S,QACWlsC,KAAKs5B,UAAU2S,WAAtB,GAAlBsP,EAAqDv7C,KAAKu5B,WAAWjmB,MAChB,EAEzDu2B,EAAU7pC,KAAKs5B,UAAU7W,UAAYonB,EACrC7pC,KAAKu5B,WAAWwS,iBAAmB/rC,KAAKs5B,UAAUwS,WAClD9rC,KAAKu5B,WAAWyS,aAAehsC,KAAKs5B,UAAU0S,aAC9CnC,EAAU7pC,KAAKu5B,WAAW9W,UAAYonB,GAGtCA,EAAU7pC,KAAKu5B,WAAW9W,UAAYonB,EAIE,IAAtCwK,EAASrtC,QAAQ,mBACnBqtC,EAAS1rC,OAAO0rC,EAASrtC,QAAQ,kBAAkB,GAEV,IAAvCqtC,EAASrtC,QAAQ,oBACnBqtC,EAAS1rC,OAAO0rC,EAASrtC,QAAQ,mBAAmB,GAG/C6iC,GAYT7mC,EAAUkR,UAAU2nC,qBAAuB,SAAUE,EAAUhZ,GAC7D,GAAI7B,IAAU,CAad,OAZgB,IAAZ6a,EACEhZ,EAAKpS,IAAIrQ,MAAMnW,YAA6B,GAAf44B,EAAKrJ,SACpCqJ,EAAK+D,OACL5F,GAAU,GAIP6B,EAAKpS,IAAIrQ,MAAMnW,YAA6B,GAAf44B,EAAKrJ,SACrCqJ,EAAKgE,OACL7F,GAAU,GAGPA,GAaTl+B,EAAUkR,UAAUkmC,qBAAuB,SAAU4B,GAKnD,IAAK,GAHDC,GAAQC,EADRC,KAEArmB,EAAW91B,KAAKu1B,KAAK50B,KAAKm1B,SAErBjwB,EAAI,EAAGA,EAAIm2C,EAAWh2C,OAAQH,IACrCo2C,EAASnmB,EAASkmB,EAAWn2C,GAAG2M,GAAKxS,KAAKqG,MAAMiN,MAChD4oC,EAASF,EAAWn2C,GAAG4M,EACvB0pC,EAAc5zC,MAAMiK,EAAGypC,EAAQxpC,EAAGypC,GAGpC,OAAOC,IAcTn5C,EAAUkR,UAAUsmC,qBAAuB,SAAUwB,EAAYtpC,GAC/D,GACIupC,GAAQC,EADRC,KAEArmB,EAAW91B,KAAKu1B,KAAK50B,KAAKm1B,SAC1BiN,EAAO/iC,KAAKs5B,UACZ8iB,EAAYn4C,OAAOjE,KAAK8qC,IAAIp9B,MAAM6F,OAAOtI,QAAQ,KAAK,IACpB,UAAlCyH,EAAMxD,QAAQ0hC,mBAChB7N,EAAO/iC,KAAKu5B,WAGd,KAAK,GAAI1zB,GAAI,EAAGA,EAAIm2C,EAAWh2C,OAAQH,IAAK,CAC1C,GAAIw2C,EAOJA,GAAaL,EAAWn2C,GAAGmN,MAAQgpC,EAAWn2C,GAAGmN,MAAQ,KACzDipC,EAASnmB,EAASkmB,EAAWn2C,GAAG2M,GAAKxS,KAAKqG,MAAMiN,MAChD4oC,EAAS13C,KAAK+pB,MAAMwU,EAAK0L,aAAauN,EAAWn2C,GAAG4M,IACpD0pC,EAAc5zC,MAAMiK,EAAGypC,EAAQxpC,EAAGypC,EAAQlpC,MAAMqpC,IAKlD,MAFA3pC,GAAMo9B,gBAAgBtrC,KAAKL,IAAIi4C,EAAWrZ,EAAK0L,aAAa,KAErD0N,GAITt8C,EAAOD,QAAUoD,GAKb,SAASnD,EAAQD,EAASM,GAgB9B,QAAS+C,GAAUsyB,EAAMrmB,GACvBlP,KAAK2wB,KACHoI,WAAY,KACZ2S,SACA4Q,cACAC,cACA9qC,WACEi6B,SACA4Q,cACAC,gBAGJv8C,KAAKqG,OACHiwB,OACEjmB,MAAO,EACPC,IAAK,EACL8sB,YAAa,GAEfof,QAAS,GAGXx8C,KAAKi1B,gBACHE,YAAa,SAEb6V,iBAAiB,EACjBC,iBAAiB,EACjB1H,OAAQ,KACR1N,SAAU,MAEZ71B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAEpCj1B,KAAKu1B,KAAOA,EAGZv1B,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAlDlB,GAAIvO,GAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC6B,EAAW7B,EAAoB,IAC/ByB,EAAWzB,EAAoB,IAC/B2D,EAAS3D,EAAoB,GAiDjC+C,GAASiR,UAAY,GAAI3R,GAUzBU,EAASiR,UAAUD,WAAa,SAAS/E,GACnCA,IAEFvO,EAAKyF,iBACH,cACA,kBACA,kBACA,cACA,SACA,YACCpG,KAAKkP,QAASA,GAIb,UAAYA,KACe,kBAAlBrL,GAAOuiC,OAEhBviC,EAAOuiC,OAAOl3B,EAAQk3B,QAGtBviC,EAAOwiC,KAAKn3B,EAAQk3B,WAS5BnjC,EAASiR,UAAUohB,QAAU,WAC3Bt1B,KAAK2wB,IAAIoI,WAAa/mB,SAASM,cAAc,OAC7CtS,KAAK2wB,IAAI9jB,WAAamF,SAASM,cAAc,OAE7CtS,KAAK2wB,IAAIoI,WAAW3wB,UAAY,sBAChCpI,KAAK2wB,IAAI9jB,WAAWzE,UAAY,uBAMlCnF,EAASiR,UAAUG,QAAU,WAEvBrU,KAAK2wB,IAAIoI,WAAW5uB,YACtBnK,KAAK2wB,IAAIoI,WAAW5uB,WAAWyH,YAAY5R,KAAK2wB,IAAIoI,YAElD/4B,KAAK2wB,IAAI9jB,WAAW1C,YACtBnK,KAAK2wB,IAAI9jB,WAAW1C,WAAWyH,YAAY5R,KAAK2wB,IAAI9jB,YAGtD7M,KAAKu1B,KAAO,MAOdtyB,EAASiR,UAAUuO,OAAS,WAC1B,GAAIvT,GAAUlP,KAAKkP,QACf7I,EAAQrG,KAAKqG,MACb0yB,EAAa/4B,KAAK2wB,IAAIoI,WACtBlsB,EAAa7M,KAAK2wB,IAAI9jB,WAGtBxC,EAAiC,OAAvB6E,EAAQimB,YAAwBn1B,KAAKu1B,KAAK5E,IAAI1oB,IAAMjI,KAAKu1B,KAAK5E,IAAIrM,OAC5Em4B,EAAiB1jB,EAAW5uB,aAAeE,CAG/CrK,MAAKotC,oBAGL,IACIpC,IADchrC,KAAKkP,QAAQimB,YACTn1B,KAAKkP,QAAQ87B,iBAC/BC,EAAkBjrC,KAAKkP,QAAQ+7B,eAGnC5kC,GAAMgnC,iBAAmBrC,EAAkB3kC,EAAMinC,gBAAkB,EACnEjnC,EAAMknC,iBAAmBtC,EAAkB5kC,EAAMmnC,gBAAkB,EACnEnnC,EAAMkN,OAASlN,EAAMgnC,iBAAmBhnC,EAAMknC,iBAC9ClnC,EAAMiN,MAAQylB,EAAW/H,YAEzB3qB,EAAMqnC,gBAAkB1tC,KAAKu1B,KAAKC,SAAS91B,KAAK6T,OAASlN,EAAMknC,kBACnC,OAAvBr+B,EAAQimB,YAAuBn1B,KAAKu1B,KAAKC,SAASlR,OAAO/Q,OAASvT,KAAKu1B,KAAKC,SAASvtB,IAAIsL,QAC9FlN,EAAMonC,eAAiB,EACvBpnC,EAAMunC,gBAAkBvnC,EAAMqnC,gBAAkBrnC,EAAMknC,iBACtDlnC,EAAMsnC,eAAiB,CAGvB,IAAI+O,GAAwB3jB,EAAW4jB,YACnCC,EAAwB/vC,EAAW8vC,WAsBvC,OArBA5jB,GAAW5uB,YAAc4uB,EAAW5uB,WAAWyH,YAAYmnB,GAC3DlsB,EAAW1C,YAAc0C,EAAW1C,WAAWyH,YAAY/E,GAE3DksB,EAAWrrB,MAAM6F,OAASvT,KAAKqG,MAAMkN,OAAS,KAE9CvT,KAAK68C,iBAGDH,EACFryC,EAAOgI,aAAa0mB,EAAY2jB,GAGhCryC,EAAO6H,YAAY6mB,GAEjB6jB,EACF58C,KAAKu1B,KAAK5E,IAAIuZ,mBAAmB73B,aAAaxF,EAAY+vC,GAG1D58C,KAAKu1B,KAAK5E,IAAIuZ,mBAAmBh4B,YAAYrF,GAGxC7M,KAAK4pC,cAAgB6S,GAO9Bx5C,EAASiR,UAAU2oC,eAAiB,WAClC,GAAI1nB,GAAcn1B,KAAKkP,QAAQimB,YAG3B9kB,EAAQ1P,EAAKuG,QAAQlH,KAAKu1B,KAAKe,MAAMjmB,MAAO,UAC5CC,EAAM3P,EAAKuG,QAAQlH,KAAKu1B,KAAKe,MAAMhmB,IAAK,UACxCwsC,EAAgB98C,KAAKu1B,KAAK50B,KAAKu1B,OAA2C,GAAnCl2B,KAAKqG,MAAM0oC,gBAAkB,KAAS1nC,UAC7E+1B,EAAc0f,EAAgBn7C,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAKu1B,KAAKe,MAAOwmB,EAC3G1f,IAAep9B,KAAKu1B,KAAK50B,KAAKu1B,OAAO,GAAG7uB,SAExC,IAAI8hB,GAAO,GAAIpnB,GAAS,GAAI6C,MAAKyL,GAAQ,GAAIzL,MAAK0L,GAAM8sB,EAAap9B,KAAKu1B,KAAKI,YAC3E31B,MAAKkP,QAAQq0B,QACfpa,EAAK6a,UAAUhkC,KAAKkP,QAAQq0B,QAE1BvjC,KAAKkP,QAAQ2mB,UACf1M,EAAK8b,SAASjlC,KAAKkP,QAAQ2mB,UAE7B71B,KAAKmpB,KAAOA,CAKZ,IAAIwH,GAAM3wB,KAAK2wB,GACfA,GAAIlf,UAAUi6B,MAAQ/a,EAAI+a,MAC1B/a,EAAIlf,UAAU6qC,WAAa3rB,EAAI2rB,WAC/B3rB,EAAIlf,UAAU8qC,WAAa5rB,EAAI4rB,WAC/B5rB,EAAI+a,SACJ/a,EAAI2rB,cACJ3rB,EAAI4rB,aAEJ,IAAIQ,GAEA7d,EAGA8d,EAGA50C,EAPAoK,EAAI,EAEJyqC,EAAQ,EACR3pC,EAAQ,EAER4pC,EAAmBr2C,OACnBzC,EAAM,CAIV,KADA+kB,EAAK+a,QACE/a,EAAK0V,WAAmB,IAANz6B,GACvBA,IAEA24C,EAAM5zB,EAAKC,aACX8V,EAAU/V,EAAK+V,UACf92B,EAAY+gB,EAAK0c,eAEjBoX,EAAQzqC,EACRA,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAASinB,GAC5BzpC,EAAQd,EAAIyqC,EACRD,IACFA,EAAStvC,MAAM4F,MAAQA,EAAQ,MAG7BtT,KAAKkP,QAAQ87B,iBACfhrC,KAAKm9C,kBAAkB3qC,EAAG2W,EAAKwc,gBAAiBxQ,EAAa/sB,GAG3D82B,GAAWl/B,KAAKkP,QAAQ+7B,iBACtBz4B,EAAI,IACkB3L,QAApBq2C,IACFA,EAAmB1qC,GAErBxS,KAAKo9C,kBAAkB5qC,EAAG2W,EAAKyc,gBAAiBzQ,EAAa/sB,IAE/D40C,EAAWh9C,KAAKq9C,kBAAkB7qC,EAAG2iB,EAAa/sB,IAGlD40C,EAAWh9C,KAAKs9C,kBAAkB9qC,EAAG2iB,EAAa/sB,GAGpD+gB,EAAKE,MAIP,IAAIrpB,KAAKkP,QAAQ+7B,gBAAiB,CAChC,GAAIsS,GAAWv9C,KAAKu1B,KAAK50B,KAAKu1B,OAAO,GACjCsnB,EAAWr0B,EAAKyc,cAAc2X,GAC9BE,EAAYD,EAASx3C,QAAUhG,KAAKqG,MAAMyoC,gBAAkB,IAAM,IAE9CjoC,QAApBq2C,GAA6CA,EAAZO,IACnCz9C,KAAKo9C,kBAAkB,EAAGI,EAAUroB,EAAa/sB,GAKrDzH,EAAKiI,QAAQ5I,KAAK2wB,IAAIlf,UAAW,SAAUisC,GACzC,KAAOA,EAAI13C,QAAQ,CACjB,GAAI2B,GAAO+1C,EAAIC,KACXh2C,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWyH,YAAYjK,OAcpC1E,EAASiR,UAAUipC,kBAAoB,SAAU3qC,EAAG8X,EAAM6K,EAAa/sB,GAErE,GAAI4K,GAAQhT,KAAK2wB,IAAIlf,UAAU8qC,WAAWxqC,OAE1C,KAAKiB,EAAO,CAEV,GAAIG,GAAUnB,SAASi9B,eAAe,GACtCj8B,GAAQhB,SAASM,cAAc,OAC/BU,EAAMd,YAAYiB,GAClBnT,KAAK2wB,IAAIoI,WAAW7mB,YAAYc,GAElChT,KAAK2wB,IAAI4rB,WAAWh0C,KAAKyK,GAEzBA,EAAM4qC,WAAW,GAAGC,UAAYvzB,EAEhCtX,EAAMtF,MAAMzF,IAAsB,OAAfktB,EAAyBn1B,KAAKqG,MAAMknC,iBAAmB,KAAQ,IAClFv6B,EAAMtF,MAAM7F,KAAO2K,EAAI,KACvBQ,EAAM5K,UAAY,cAAgBA,GAYpCnF,EAASiR,UAAUkpC,kBAAoB,SAAU5qC,EAAG8X,EAAM6K,EAAa/sB,GAErE,GAAI4K,GAAQhT,KAAK2wB,IAAIlf,UAAU6qC,WAAWvqC,OAE1C,KAAKiB,EAAO,CAEV,GAAIG,GAAUnB,SAASi9B,eAAe3kB,EACtCtX,GAAQhB,SAASM,cAAc,OAC/BU,EAAMd,YAAYiB,GAClBnT,KAAK2wB,IAAIoI,WAAW7mB,YAAYc,GAElChT,KAAK2wB,IAAI2rB,WAAW/zC,KAAKyK,GAEzBA,EAAM4qC,WAAW,GAAGC,UAAYvzB,EAChCtX,EAAM5K,UAAY,cAAgBA,EAGlC4K,EAAMtF,MAAMzF,IAAsB,OAAfktB,EAAwB,IAAOn1B,KAAKqG,MAAMgnC,iBAAoB,KACjFr6B,EAAMtF,MAAM7F,KAAO2K,EAAI,MAWzBvP,EAASiR,UAAUopC,kBAAoB,SAAU9qC,EAAG2iB,EAAa/sB,GAE/D,GAAIqoB,GAAOzwB,KAAK2wB,IAAIlf,UAAUi6B,MAAM35B,OAC/B0e,KAEHA,EAAOze,SAASM,cAAc,OAC9BtS,KAAK2wB,IAAI9jB,WAAWqF,YAAYue,IAElCzwB,KAAK2wB,IAAI+a,MAAMnjC,KAAKkoB,EAEpB,IAAIpqB,GAAQrG,KAAKqG,KAYjB,OAVEoqB,GAAK/iB,MAAMzF,IADM,OAAfktB,EACe9uB,EAAMknC,iBAAmB,KAGzBvtC,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAAS,KAEnDkd,EAAK/iB,MAAM6F,OAASlN,EAAMqnC,gBAAkB,KAC5Cjd,EAAK/iB,MAAM7F,KAAQ2K,EAAInM,EAAMonC,eAAiB,EAAK,KAEnDhd,EAAKroB,UAAY,uBAAyBA,EAEnCqoB,GAWTxtB,EAASiR,UAAUmpC,kBAAoB,SAAU7qC,EAAG2iB,EAAa/sB,GAE/D,GAAIqoB,GAAOzwB,KAAK2wB,IAAIlf,UAAUi6B,MAAM35B,OAC/B0e,KAEHA,EAAOze,SAASM,cAAc,OAC9BtS,KAAK2wB,IAAI9jB,WAAWqF,YAAYue,IAElCzwB,KAAK2wB,IAAI+a,MAAMnjC,KAAKkoB,EAEpB,IAAIpqB,GAAQrG,KAAKqG,KAYjB,OAVEoqB,GAAK/iB,MAAMzF,IADM,OAAfktB,EACe,IAGAn1B,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAAS,KAEnDkd,EAAK/iB,MAAM7F,KAAQ2K,EAAInM,EAAMsnC,eAAiB,EAAK,KACnDld,EAAK/iB,MAAM6F,OAASlN,EAAMunC,gBAAkB,KAE5Cnd,EAAKroB,UAAY,uBAAyBA,EAEnCqoB,GAQTxtB,EAASiR,UAAUk5B,mBAAqB,WAKjCptC,KAAK2wB,IAAIue,mBACZlvC,KAAK2wB,IAAIue,iBAAmBl9B,SAASM,cAAc,OACnDtS,KAAK2wB,IAAIue,iBAAiB9mC,UAAY,qBACtCpI,KAAK2wB,IAAIue,iBAAiBxhC,MAAMkX,SAAW,WAE3C5kB,KAAK2wB,IAAIue,iBAAiBh9B,YAAYF,SAASi9B,eAAe,MAC9DjvC,KAAK2wB,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAIue,mBAE3ClvC,KAAKqG,MAAMinC,gBAAkBttC,KAAK2wB,IAAIue,iBAAiBrpB,aACvD7lB,KAAKqG,MAAM0oC,eAAiB/uC,KAAK2wB,IAAIue,iBAAiB1uB,YAGjDxgB,KAAK2wB,IAAIye,mBACZpvC,KAAK2wB,IAAIye,iBAAmBp9B,SAASM,cAAc,OACnDtS,KAAK2wB,IAAIye,iBAAiBhnC,UAAY,qBACtCpI,KAAK2wB,IAAIye,iBAAiB1hC,MAAMkX,SAAW,WAE3C5kB,KAAK2wB,IAAIye,iBAAiBl9B,YAAYF,SAASi9B,eAAe,MAC9DjvC,KAAK2wB,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAIye,mBAE3CpvC,KAAKqG,MAAMmnC,gBAAkBxtC,KAAK2wB,IAAIye,iBAAiBvpB,aACvD7lB,KAAKqG,MAAMyoC,eAAiB9uC,KAAK2wB,IAAIye,iBAAiB5uB,aAGxD3gB,EAAOD,QAAUqD,GAKb,SAASpD,EAAQD,EAASM,GAkC9B,QAASgD,GAASsX,EAAW/G,EAAMvE,GACjC,KAAMlP,eAAgBkD,IACpB,KAAM,IAAIuX,aAAY,mDAGxBza,MAAK89C,0BACL99C,KAAK+9C,0BAGL/9C,KAAK0a,iBAAmBF,EAGxBxa,KAAKg+C,kBAAoB,GACzBh+C,KAAKi+C,eAAiB,IAAOj+C,KAAKg+C,kBAClCh+C,KAAKk+C,WAAa,EAClBl+C,KAAKm+C,YAAc,EACnBn+C,KAAKo+C,gBAAiB,EACtBp+C,KAAKq+C,wBAA0B,GAE/Br+C,KAAKs+C,cAAe,EAEpBt+C,KAAKu+C,kBAAoBvqC,IAAI,KAAKwqC,KAAK,KAAKC,SAAS,KAAKC,QAAQ,KAAKC,IAAI,KAE3E,IAAIC,GAAwB,SAAUz6C,EAAIC,EAAIC,EAAMC,GAClD,GAAIF,GAAOD,EACT,MAAO,EAGP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAGE,EAAQH,GAAKI,GAIpCvE,MAAKi1B,gBACH4pB,OACED,sBAAuBA,EACvBE,KAAM,EACNC,UAAW,GACXC,UAAW,GACX1yB,OAAQ,GACR2yB,MAAO,UACPC,MAAOr4C,OACPqhB,SAAU,GACVC,SAAU,GACVg3B,UAAW,QACXC,SAAU,GACVC,SAAU,UACVC,SAAUz4C,OACV04C,gBAAiB,EACjBC,gBAAiB,UACjBC,kBAAmB,EACnBC,oBAAoB,EACpBC,YAAa,GACbC,YAAa,GACbC,mBAAoB,GACpBC,MAAO,GACPv0C,OACIuB,OAAQ,UACRD,WAAY,UACdE,WACED,OAAQ,UACRD,WAAY,WAEdG,OACEF,OAAQ,UACRD,WAAY,YAGhB6F,MAAO7L,OACPma,YAAa,EACb++B,oBAAqBl5C,QAEvBm5C,OACEpB,sBAAuBA,EACvB12B,SAAU,EACVC,SAAU,GACV7U,MAAO,EACP2sC,yBAA0B,EAC1BC,WAAY,IACZxyC,MAAO,OACPnC,OACEA,MAAM,UACNwB,UAAU,UACVC,MAAO,WAETxB,QAAQ,EACR2zC,UAAW,UACXC,SAAU,GACVC,SAAU,QACVC,SAAU,QACVC,gBAAiB,EACjBC,gBAAiB,QACjBW,eAAe,aACfC,iBAAkB,EAClBC,MACEr6C,OAAQ,GACRs6C,IAAK,EACLC,UAAW15C,QAEb25C,aAAc,OACdC,cAAc,GAEhBC,kBAAiB,EACjBC,SACEC,WACEzxC,SAAS,EACT0xC,cAAe,EACfC,sBAAuB,KACvBC,eAAgB,GAChBC,aAAc,GACdC,eAAgB,IAChBC,QAAS,KAEXC,WACEJ,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXG,uBACElyC,SAAS,EACT4xC,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXA,QAAS,KACTH,eAAgB,KAChBC,aAAc,KACdC,eAAgB,MAElBK,YACEnyC,SAAS,EACToyC,gBAAiB,IACjBC,iBAAiB,IACjBC,cAAc,IACdC,eAAgB,GAChBC,qBAAsB,GACtBC,gBAAiB,IACjBC,oBAAqB,GACrBC,mBAAoB,EACpBC,YAAa,IACbC,mBAAoB,GACpBC,sBAAuB,GACvBC,WAAY,GACZC,aAAc7uC,MAAQ,EACRC,OAAQ,EACR+Y,OAAQ,GACtB81B,sBAAuB,IACvBC,kBAAmB,GACnBC,uBAAwB,EACxBC,eAAe,GAEjBC,YACErzC,SAAS,GAEXszC,UACEtzC,SAAS,EACTuzC,OAAQlwC,EAAG,GAAIC,EAAG,GAAIyvB,KAAM,KAC5BygB,cAAc,GAEhBC,kBACEzzC,SAAS,EACT0zC,kBAAkB,GAEpBC,oBACE3zC,SAAQ,EACR4zC,gBAAiB,IACjBC,YAAa,IACb9lB,UAAW,KACX+lB,OAAQ,WAEVC,wBAAwB,EACxBC,cACEh0C,SAAS,EACTi0C,SAAS,EACTj8C,KAAM,aACNk8C,UAAW,IAEbC,YAAc,GACdC,YAAc,GACdC,WAAW,EACXC,wBAAyB,IACzBC,uBAAuB,EACvBtd,OAAQ,KACR6D,QAASA,EACT7iB,SACE3N,MAAO,IACP0lC,UAAW,QACXC,SAAU,GACVC,SAAU,UACV9zC,OACEuB,OAAQ,OACRD,WAAY,YAGhB82C,aAAa,EACbC,WAAW,EACXjkB,UAAU,EACV3yB,OAAO,EACP62C,iBAAiB,EACjBC,iBAAiB,EACjBxwC,MAAQ,OACRC,OAAS,OACT+/B,YAAY,EACZyQ,kBAAkB,GAEpB/jD,KAAKgkD,UAAYrjD,EAAKgF,UAAW3F,KAAKi1B,gBACtCj1B,KAAKikD,WAAa,EAGlBjkD,KAAKkkD,UAAYrF,SAASmB,UAC1BhgD,KAAKmkD,oBAAqB,EAC1BnkD,KAAKokD,qBACLpkD,KAAKqkD,uBAGLrkD,KAAKskD,eAAiB,EAAEtkD,KAAKg+C,kBAC7Bh+C,KAAKukD,wBAA0B,iBAC/BvkD,KAAKwkD,WAAY,EACjBxkD,KAAKykD,WAAa,EAClBzkD,KAAK0kD,YAAc,EACnB1kD,KAAK2kD,YAAc,EACnB3kD,KAAK4kD,kBAAoB,EACzB5kD,KAAK6kD,kBAAoB,EACzB7kD,KAAK8kD,eAAiB,KACtB9kD,KAAK+kD,mBAAqB,KAC1B/kD,KAAKglD,UAAY,EACjBhlD,KAAKilD,iBAAkB,CAGvB;GAAI9hD,GAAUnD,IACdA,MAAK+0B,OAAS,GAAI1xB,GAClBrD,KAAKklD,OAAS,GAAI5hD,GAClBtD,KAAKklD,OAAOC,kBAAkB,WAC5BhiD,EAAQiiD,mBAIVplD,KAAKqlD,WAAa,EAClBrlD,KAAKslD,WAAa,EAClBtlD,KAAKulD,cAAgB,EAIrBvlD,KAAKwlD,qBAELxlD,KAAKs1B,UAELt1B,KAAKylD,oBAELzlD,KAAK0lD,qBAEL1lD,KAAK2lD,uBAEL3lD,KAAK4lD,uBAIL5lD,KAAK6lD,gBAAgB7lD,KAAKsgB,MAAME,YAAc,EAAGxgB,KAAKsgB,MAAMuF,aAAe,GAC3E7lB,KAAKie,UAAU,GACfje,KAAKiU,WAAW/E,GAGhBlP,KAAK8lD,yBAA0B,EAC/B9lD,KAAK+lD,mBACL/lD,KAAKgmD,sBAAuB,EAC5BhmD,KAAKimD,YAAa,EAClBjmD,KAAKyjD,wBAA0B,KAC/BzjD,KAAKkmD,eAAgB,EAGrBlmD,KAAKmmD,oBACLnmD,KAAKomD,0BACLpmD,KAAKqmD,eACLrmD,KAAK6+C,SACL7+C,KAAKggD,SAGLhgD,KAAKsmD,eAAqB9zC,EAAK,EAAEC,EAAK,GACtCzS,KAAKumD,mBAAqB/zC,EAAK,EAAEC,EAAK,GACtCzS,KAAKwmD,iBAAmBh0C,EAAK,EAAEC,EAAK,GACpCzS,KAAKymD,cACLzmD,KAAKuE,MAAQ,EACbvE,KAAK0mD,cAAgB1mD,KAAKuE,MAG1BvE,KAAK2mD,UAAY,KACjB3mD,KAAK4mD,UAAY,KAGjB5mD,KAAK6mD,gBACH7yC,IAAO,SAAUnK,EAAOgL,GACtB1R,EAAQ2jD,UAAUjyC,EAAO5S,OACzBkB,EAAQkN,SAEVuF,OAAU,SAAU/L,EAAOgL,GACzB1R,EAAQ4jD,aAAalyC,EAAO5S,OAC5BkB,EAAQkN,SAEV+G,OAAU,SAAUvN,EAAOgL,GACzB1R,EAAQ6jD,aAAanyC,EAAO5S,OAC5BkB,EAAQkN,UAGZrQ,KAAKinD,gBACHjzC,IAAO,SAAUnK,EAAOgL,GACtB1R,EAAQ+jD,UAAUryC,EAAO5S,OACzBkB,EAAQkN,SAEVuF,OAAU,SAAU/L,EAAOgL,GACzB1R,EAAQgkD,aAAatyC,EAAO5S,OAC5BkB,EAAQkN,SAEV+G,OAAU,SAAUvN,EAAOgL,GACzB1R,EAAQikD,aAAavyC,EAAO5S,OAC5BkB,EAAQkN,UAKZrQ,KAAKqnD,QAAS,EACdrnD,KAAKsnD,MAAQzgD,OAGb7G,KAAK+Y,QAAQtF,EAAKzT,KAAKgkD,UAAU1C,WAAWnyC,SAAWnP,KAAKgkD,UAAUlB,mBAAmB3zC,SAGzFnP,KAAKs+C,cAAe,EAC6B,GAA7Ct+C,KAAKgkD,UAAUlB,mBAAmB3zC,QACpCnP,KAAKunD,2BAI2B,GAA5BvnD,KAAKgkD,UAAUR,WACjBxjD,KAAKwnD,YAAYj3C,SAAS,IAAI,EAAMvQ,KAAKgkD,UAAU1C,WAAWnyC,SAK9DnP,KAAKgkD,UAAU1C,WAAWnyC,SAC5BnP,KAAKynD,sBAvXT,GAAIzpC,GAAU9d,EAAoB,IAC9BwmC,EAASxmC,EAAoB,IAC7BwnD,EAAWxnD,EAAoB,IAC/BS,EAAOT,EAAoB,GAC3BugC,EAAavgC,EAAoB,IACjCW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BuD,EAAYvD,EAAoB,IAChCwD,EAAcxD,EAAoB,IAClCmD,EAASnD,EAAoB,IAC7BoD,EAASpD,EAAoB,IAC7BqD,EAAOrD,EAAoB,IAC3BkD,EAAOlD,EAAoB,IAC3BsD,EAAQtD,EAAoB,IAC5BynD,EAAcznD,EAAoB,IAClC0nD,EAAY1nD,EAAoB,IAChC+pC,EAAU/pC,EAAoB,GAGlCA,GAAoB,IAyWpB8d,EAAQ9a,EAAQgR,WAOhBhR,EAAQgR,UAAU4pC,wBAA0B,WAC1C,GAAI+J,GAAct+C,UAAUC,UAAU88B,aACtCtmC,MAAK8nD,iBAAkB,EACgB,IAAnCD,EAAY7gD,QAAQ,YACtBhH,KAAK8nD,iBAAkB,EAEiB,IAAjCD,EAAY7gD,QAAQ,WACvB6gD,EAAY7gD,QAAQ,WAAa,KACnChH,KAAK8nD,iBAAkB,IAa7B5kD,EAAQgR,UAAU6zC,eAAiB,WAIjC,IAAK,GAHDC,GAAUh2C,SAASi2C,qBAAsB,UAGpCpiD,EAAI,EAAGA,EAAImiD,EAAQhiD,OAAQH,IAAK,CACvC,GAAIqiD,GAAMF,EAAQniD,GAAGqiD,IACjBrjD,EAAQqjD,GAAO,qBAAqBnjD,KAAKmjD,EAC7C,IAAIrjD,EAEF,MAAOqjD,GAAI9d,UAAU,EAAG8d,EAAIliD,OAASnB,EAAM,GAAGmB,QAIlD,MAAO,OAQT9C,EAAQgR,UAAUi0C,UAAY,SAASC,GACrC,GAAsDC,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,IAAIL,EAAcpiD,OAAS,EACzB,IAAK,GAAIH,GAAI,EAAGA,EAAIuiD,EAAcpiD,OAAQH,IACxCwiD,EAAOroD,KAAK6+C,MAAMuJ,EAAcviD,IAC5B2iD,EAAQH,EAAKK,YAAgB,OAC/BF,EAAOH,EAAKK,YAAY7gD,MAEtB4gD,EAAQJ,EAAKK,YAAiB,QAChCD,EAAOJ,EAAKK,YAAYrgC,OAEtBigC,EAAQD,EAAKK,YAAkB,SACjCJ,EAAOD,EAAKK,YAAYzgD,KAEtBsgD,EAAQF,EAAKK,YAAe,MAC9BH,EAAOF,EAAKK,YAAYpkC,YAK5B,KAAK,GAAIqkC,KAAU3oD,MAAK6+C,MAClB7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5BN,EAAOroD,KAAK6+C,MAAM8J,GACdH,EAAQH,EAAKK,YAAgB,OAC/BF,EAAOH,EAAKK,YAAY7gD,MAEtB4gD,EAAQJ,EAAKK,YAAiB,QAChCD,EAAOJ,EAAKK,YAAYrgC,OAEtBigC,EAAQD,EAAKK,YAAkB,SACjCJ,EAAOD,EAAKK,YAAYzgD,KAEtBsgD,EAAQF,EAAKK,YAAe,MAC9BH,EAAOF,EAAKK,YAAYpkC,QAShC,OAHY,MAARkkC,GAAuB,MAARC,GAAwB,KAARH,GAAuB,MAARC,IAChDD,EAAO,EAAGC,EAAO,EAAGC,EAAO,EAAGC,EAAO,IAE/BD,KAAMA,EAAMC,KAAMA,EAAMH,KAAMA,EAAMC,KAAMA,IASpDrlD,EAAQgR,UAAU00C,YAAc,SAAStyB,GACvC,OAAQ9jB,EAAI,IAAO8jB,EAAMmyB,KAAOnyB,EAAMkyB,MAC9B/1C,EAAI,IAAO6jB,EAAMiyB,KAAOjyB,EAAMgyB,QAUxCplD,EAAQgR,UAAUszC,WAAa,SAASt4C,EAAS25C,EAAaC,GAC5D9oD,KAAKi3B,SAAQ,GAEYpwB,SAArBgiD,IAAiCA,GAAc,GAC1BhiD,SAArBiiD,IAAiCA,GAAe,GACpCjiD,SAAZqI,IAAwBA,GAAW2vC,WACjBh4C,SAAlBqI,EAAQ2vC,QACV3vC,EAAQ2vC,SAGV,IAAIvoB,GACAyyB,CAEJ,IAAmB,GAAfF,EAAqB,CAEvB,GAAIG,GAAkB,CACtB,KAAK,GAAIL,KAAU3oD,MAAK6+C,MACtB,GAAI7+C,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrC,GAAIN,GAAOroD,KAAK6+C,MAAM8J,EACS,IAA3BN,EAAKY,qBACPD,GAAmB,GAIzB,GAAIA,EAAkB,GAAMhpD,KAAKqmD,YAAYrgD,OAE3C,WADAhG,MAAKwnD,WAAWt4C,GAAQ,EAAM45C,EAIhCxyB,GAAQt2B,KAAKmoD,UAAUj5C,EAAQ2vC,MAE/B,IAAIqK,GAAgBlpD,KAAKqmD,YAAYrgD,MAIjC+iD,GAH+B,GAA/B/oD,KAAKgkD,UAAUb,aACwB,GAArCnjD,KAAKgkD,UAAU1C,WAAWnyC,SAC5B+5C,GAAiBlpD,KAAKgkD,UAAU1C,WAAWC,gBAC/B,UAAY2H,EAAgB,WAAa,SAGzC,QAAUA,EAAgB,QAAU,SAIT,GAArClpD,KAAKgkD,UAAU1C,WAAWnyC,SAC1B+5C,GAAiBlpD,KAAKgkD,UAAU1C,WAAWC,gBACjC,YAAc2H,EAAgB,YAAc,cAG5C,YAAcA,EAAgB,aAAe,SAK7D,IAAIC,GAAS3kD,KAAKL,IAAInE,KAAKsgB,MAAMC,OAAOC,YAAc,IAAKxgB,KAAKsgB,MAAMC,OAAOsF,aAAe,IAC5FkjC,IAAaI,MAEV,CACH7yB,EAAQt2B,KAAKmoD,UAAUj5C,EAAQ2vC,MAC/B,IAAIhE,GAAgD,IAApCr2C,KAAKknB,IAAI4K,EAAMmyB,KAAOnyB,EAAMkyB,MACxCY,EAAgD,IAApC5kD,KAAKknB,IAAI4K,EAAMiyB,KAAOjyB,EAAMgyB,MAExCe,EAAarpD,KAAKsgB,MAAMC,OAAOC,YAAeq6B,EAC9CyO,EAAatpD,KAAKsgB,MAAMC,OAAOsF,aAAeujC,CAClDL,GAA2BO,GAAdD,EAA4BA,EAAaC,EAGpDP,EAAY,IACdA,EAAY,EAId,IAAIh8B,GAAS/sB,KAAK4oD,YAAYtyB,EAC9B,IAAoB,GAAhBwyB,EAAuB,CACzB,GAAI55C,IAAW0V,SAAUmI,EAAQxoB,MAAOwkD,EAAWQ,UAAWr6C,EAC9DlP,MAAK6oB,OAAO3Z,GACZlP,KAAKqnD,QAAS,EACdrnD,KAAKqQ,YAGL0c,GAAOva,GAAKu2C,EACZh8B,EAAOta,GAAKs2C,EACZh8B,EAAOva,GAAK,GAAMxS,KAAKsgB,MAAMC,OAAOC,YACpCuM,EAAOta,GAAK,GAAMzS,KAAKsgB,MAAMC,OAAOsF,aACpC7lB,KAAKie,UAAU8qC,GACf/oD,KAAK6lD,iBAAiB94B,EAAOva,GAAGua,EAAOta,IAS3CvP,EAAQgR,UAAUs1C,qBAAuB,WACvCxpD,KAAKypD,qBACL,KAAK,GAAIC,KAAO1pD,MAAK6+C,MACf7+C,KAAK6+C,MAAM14C,eAAeujD,IAC5B1pD,KAAKqmD,YAAY99C,KAAKmhD,IAiB5BxmD,EAAQgR,UAAU6E,QAAU,SAAStF,EAAMq1C,GAWzC,GAVqBjiD,SAAjBiiD,IACFA,GAAe,GAIjB9oD,KAAK2pD,cAAa,GAGlB3pD,KAAKs+C,cAAe,EAEhB7qC,GAAQA,EAAKid,MAAQjd,EAAKorC,OAASprC,EAAKusC,OAC1C,KAAM,IAAIvlC,aAAY,iGAYxB,IAP+C,GAA3Cza,KAAKgkD,UAAUpB,iBAAiBzzC,SAClCnP,KAAK4pD,wBAIP5pD,KAAKiU,WAAWR,GAAQA,EAAKvE,SAEzBuE,GAAQA,EAAKid,KAEf,GAAGjd,GAAQA,EAAKid,IAAK,CACnB,GAAIm5B,GAAUpmD,EAAUqmD,WAAWr2C,EAAKid,IAExC,YADA1wB,MAAK+Y,QAAQ8wC,QAIZ,IAAIp2C,GAAQA,EAAKs2C,OAEpB,GAAGt2C,GAAQA,EAAKs2C,MAAO,CACrB,GAAIC,GAAYtmD,EAAYumD,WAAWx2C,EAAKs2C,MAE5C,YADA/pD,MAAK+Y,QAAQixC,QAKfhqD,MAAKkqD,UAAUz2C,GAAQA,EAAKorC,OAC5B7+C,KAAKmqD,UAAU12C,GAAQA,EAAKusC,MAE9BhgD,MAAKoqD,mBACe,GAAhBtB,IAC+C,GAA7C9oD,KAAKgkD,UAAUlB,mBAAmB3zC,SACpCnP,KAAKqqD,eACLrqD,KAAKunD,4BAI2B,GAA5BvnD,KAAKgkD,UAAUR,WACjBxjD,KAAKsqD,aAGTtqD,KAAKqQ,SAEPrQ,KAAKs+C,cAAe,GAOtBp7C,EAAQgR,UAAUD,WAAa,SAAU/E,GACvC,GAAIA,EAAS,CACX,GAAIhJ,GACAyI,GAAU,QAAQ,QAAQ,eAAe,qBAAqB,aAAa,aAC7E,WAAW,mBAAmB,QAAQ,SAAS,aAAa,YAAY,WAAW,aAQrF,IALAhO,EAAKoG,uBAAuB4H,EAAO3O,KAAKgkD,UAAW90C,GACnDvO,EAAKoG,wBAAwB,SAAS/G,KAAKgkD,UAAUnF,MAAO3vC,EAAQ2vC,OACpEl+C,EAAKoG,wBAAwB,QAAQ,UAAU/G,KAAKgkD,UAAUhE,MAAO9wC,EAAQ8wC,OAE7EhgD,KAAK+0B,OAAOgvB,iBAAmB/jD,KAAKgkD,UAAUD,iBAC1C70C,EAAQyxC,UACVhgD,EAAKqO,aAAahP,KAAKgkD,UAAUrD,QAASzxC,EAAQyxC,QAAQ,aAC1DhgD,EAAKqO,aAAahP,KAAKgkD,UAAUrD,QAASzxC,EAAQyxC,QAAQ,aAEtDzxC,EAAQyxC,QAAQU,uBAAuB,CACzCrhD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAU,EAC5CnP,KAAKgkD,UAAUrD,QAAQU,sBAAsBlyC,SAAU,EACvDnP,KAAKgkD,UAAUrD,QAAQC,UAAUzxC,SAAU,CAC3C,KAAKjJ,IAAQgJ,GAAQyxC,QAAQU,sBACvBnyC,EAAQyxC,QAAQU,sBAAsBl7C,eAAeD,KACvDlG,KAAKgkD,UAAUrD,QAAQU,sBAAsBn7C,GAAQgJ,EAAQyxC,QAAQU,sBAAsBn7C,IAkDnG,GA5CIgJ,EAAQqkC,QAAQvzC,KAAKu+C,iBAAiBvqC,IAAM9E,EAAQqkC,OACpDrkC,EAAQq7C,SAASvqD,KAAKu+C,iBAAiBC,KAAOtvC,EAAQq7C,QACtDr7C,EAAQs7C,aAAaxqD,KAAKu+C,iBAAiBE,SAAWvvC,EAAQs7C,YAC9Dt7C,EAAQu7C,YAAYzqD,KAAKu+C,iBAAiBG,QAAUxvC,EAAQu7C,WAC5Dv7C,EAAQw7C,WAAW1qD,KAAKu+C,iBAAiBI,IAAMzvC,EAAQw7C,UAE3D/pD,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,gBAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,sBAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,cAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,cAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,YAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,oBAGtCA,EAAQ0zC,mBACV5iD,KAAK2qD,SAAW3qD,KAAKgkD,UAAUpB,iBAAiBC,kBAK9C3zC,EAAQ8wC,QACkBn5C,SAAxBqI,EAAQ8wC,MAAMz0C,QACZ5K,EAAK8D,SAASyK,EAAQ8wC,MAAMz0C,QAC9BvL,KAAKgkD,UAAUhE,MAAMz0C,SACrBvL,KAAKgkD,UAAUhE,MAAMz0C,MAAMA,MAAQ2D,EAAQ8wC,MAAMz0C,MACjDvL,KAAKgkD,UAAUhE,MAAMz0C,MAAMwB,UAAYmC,EAAQ8wC,MAAMz0C,MACrDvL,KAAKgkD,UAAUhE,MAAMz0C,MAAMyB,MAAQkC,EAAQ8wC,MAAMz0C,QAGf1E,SAA9BqI,EAAQ8wC,MAAMz0C,MAAMA,QAA0BvL,KAAKgkD,UAAUhE,MAAMz0C,MAAMA,MAAQ2D,EAAQ8wC,MAAMz0C,MAAMA,OACnE1E,SAAlCqI,EAAQ8wC,MAAMz0C,MAAMwB,YAA0B/M,KAAKgkD,UAAUhE,MAAMz0C,MAAMwB,UAAYmC,EAAQ8wC,MAAMz0C,MAAMwB,WAC3ElG,SAA9BqI,EAAQ8wC,MAAMz0C,MAAMyB,QAA0BhN,KAAKgkD,UAAUhE,MAAMz0C,MAAMyB,MAAQkC,EAAQ8wC,MAAMz0C,MAAMyB,QAE3GhN,KAAKgkD,UAAUhE,MAAMQ,cAAe,GAGjCtxC,EAAQ8wC,MAAMb,WACWt4C,SAAxBqI,EAAQ8wC,MAAMz0C,QACZ5K,EAAK8D,SAASyK,EAAQ8wC,MAAMz0C,OAAmBvL,KAAKgkD,UAAUhE,MAAMb,UAAYjwC,EAAQ8wC,MAAMz0C,MAC3D1E,SAA9BqI,EAAQ8wC,MAAMz0C,MAAMA,QAAsBvL,KAAKgkD,UAAUhE,MAAMb,UAAYjwC,EAAQ8wC,MAAMz0C,MAAMA,SAK1G2D,EAAQ2vC,OACN3vC,EAAQ2vC,MAAMtzC,MAAO,CACvB,GAAIq/C,GAAcjqD,EAAKqL,WAAWkD,EAAQ2vC,MAAMtzC,MAChDvL,MAAKgkD,UAAUnF,MAAMtzC,MAAMsB,WAAa+9C,EAAY/9C,WACpD7M,KAAKgkD,UAAUnF,MAAMtzC,MAAMuB,OAAS89C,EAAY99C,OAChD9M,KAAKgkD,UAAUnF,MAAMtzC,MAAMwB,UAAUF,WAAa+9C,EAAY79C,UAAUF,WACxE7M,KAAKgkD,UAAUnF,MAAMtzC,MAAMwB,UAAUD,OAAS89C,EAAY79C,UAAUD,OACpE9M,KAAKgkD,UAAUnF,MAAMtzC,MAAMyB,MAAMH,WAAa+9C,EAAY59C,MAAMH,WAChE7M,KAAKgkD,UAAUnF,MAAMtzC,MAAMyB,MAAMF,OAAS89C,EAAY59C,MAAMF,OAGhE,GAAIoC,EAAQ6lB,OACV,IAAK,GAAI81B,KAAa37C,GAAQ6lB,OAC5B,GAAI7lB,EAAQ6lB,OAAO5uB,eAAe0kD,GAAY,CAC5C,GAAIn4C,GAAQxD,EAAQ6lB,OAAO81B,EAC3B7qD,MAAK+0B,OAAO/gB,IAAI62C,EAAWn4C,GAKjC,GAAIxD,EAAQkY,QAAS,CACnB,IAAKlhB,IAAQgJ,GAAQkY,QACflY,EAAQkY,QAAQjhB,eAAeD,KACjClG,KAAKgkD,UAAU58B,QAAQlhB,GAAQgJ,EAAQkY,QAAQlhB,GAG/CgJ,GAAQkY,QAAQ7b,QAClBvL,KAAKgkD,UAAU58B,QAAQ7b,MAAQ5K,EAAKqL,WAAWkD,EAAQkY,QAAQ7b,QAmBnE,GAfI,cAAgB2D,KACdA,EAAQ47C,WACL9qD,KAAK+qD,YACR/qD,KAAK+qD,UAAY,GAAInD,GAAU5nD,KAAKsgB,OACpCtgB,KAAK+qD,UAAUz2C,GAAG,SAAUtU,KAAKgrD,gBAAgBt1B,KAAK11B,QAIpDA,KAAK+qD,YACP/qD,KAAK+qD,UAAU12C,gBACRrU,MAAK+qD,YAKd77C,EAAQy8B,OACV,KAAM,IAAI/nC,OAAM,6EAMlB5D,MAAKwlD,qBAELxlD,KAAKirD,0BAELjrD,KAAKkrD,0BAELlrD,KAAKmrD,yBAGLnrD,KAAKorD,cAGLprD,KAAKgrD,kBAELhrD,KAAKqrD,uBACLrrD,KAAK2lB,QAAQ3lB,KAAKgkD,UAAU1wC,MAAOtT,KAAKgkD,UAAUzwC,QAClDvT,KAAKqnD,QAAS,EACmC,GAA7CrnD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKqQ,UAaTnN,EAAQgR,UAAUohB,QAAU,WAE1B,KAAOt1B,KAAK0a,iBAAiBgK,iBAC3B1kB,KAAK0a,iBAAiB9I,YAAY5R,KAAK0a,iBAAiBiK,WAgB1D,IAbA3kB,KAAKsgB,MAAQtO,SAASM,cAAc,OACpCtS,KAAKsgB,MAAMlY,UAAY,oBACvBpI,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKsgB,MAAM5S,MAAMmX,SAAW,SAC5B7kB,KAAKsgB,MAAMgrC,SAAW,IAKtBtrD,KAAKsgB,MAAMC,OAASvO,SAASM,cAAc,UAC3CtS,KAAKsgB,MAAMC,OAAO7S,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMC,QAE7BvgB,KAAKsgB,MAAMC,OAAOyH,WAQlB,CACH,GAAID,GAAM/nB,KAAKsgB,MAAMC,OAAOyH,WAAW,KACvChoB,MAAKikD,YAAcn8C,OAAOyjD,kBAAoB,IAAMxjC,EAAIyjC,8BAC9CzjC,EAAI0jC,2BACJ1jC,EAAI2jC,0BACJ3jC,EAAI4jC,yBACJ5jC,EAAI6jC,wBAA0B,GAGxC5rD,KAAKsgB,MAAMC,OAAOyH,WAAW,MAAM6jC,aAAa7rD,KAAKikD,WAAY,EAAG,EAAGjkD,KAAKikD,WAAY,EAAG,OAjB1D,CACjC,GAAIn/B,GAAW9S,SAASM,cAAe,MACvCwS,GAASpX,MAAMnC,MAAQ,MACvBuZ,EAASpX,MAAMqX,WAAc,OAC7BD,EAASpX,MAAMsX,QAAW,OAC1BF,EAASG,UAAa,mDACtBjlB,KAAKsgB,MAAMC,OAAOrO,YAAY4S,GAchC9kB,KAAKorD,eAQPloD,EAAQgR,UAAUk3C,YAAc,WAC9B,GAAIl2C,GAAKlV,IACW6G,UAAhB7G,KAAK8D,QACP9D,KAAK8D,OAAOgoD,UAEd9rD,KAAK0qC,QACL1qC,KAAK+rD,SACL/rD,KAAK8D,OAAS4iC,EAAO1mC,KAAKsgB,MAAMC,QAC9BoqB,iBAAiB,IAEnB3qC,KAAK8D,OAAOwQ,GAAG,MAAaY,EAAG82C,OAAOt2B,KAAKxgB,IAC3ClV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAG+2C,aAAav2B,KAAKxgB,IACjDlV,KAAK8D,OAAOwQ,GAAG,OAAaY,EAAGirB,QAAQzK,KAAKxgB,IAC5ClV,KAAK8D,OAAOwQ,GAAG,QAAaY,EAAGmrB,SAAS3K,KAAKxgB,IAC7ClV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAG8qB,aAAatK,KAAKxgB,IACjDlV,KAAK8D,OAAOwQ,GAAG,OAAaY,EAAG+qB,QAAQvK,KAAKxgB,IAC5ClV,KAAK8D,OAAOwQ,GAAG,UAAaY,EAAGgrB,WAAWxK,KAAKxgB,IAEhB,GAA3BlV,KAAKgkD,UAAUrkB,WACjB3/B,KAAK8D,OAAOwQ,GAAG,aAAmBY,EAAGkrB,cAAc1K,KAAKxgB,IACxDlV,KAAK8D,OAAOwQ,GAAG,iBAAmBY,EAAGkrB,cAAc1K,KAAKxgB,IACxDlV,KAAK8D,OAAOwQ,GAAG,QAAmBY,EAAGorB,SAAS5K,KAAKxgB,KAGrDlV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAGg3C,kBAAkBx2B,KAAKxgB,IAEtDlV,KAAKmsD,YAAczlB,EAAO1mC,KAAKsgB,OAC7BqqB,iBAAiB,IAEnB3qC,KAAKmsD,YAAY73C,GAAG,UAAWY,EAAGk3C,WAAW12B,KAAKxgB,IAGlDlV,KAAK0a,iBAAiBxI,YAAYlS,KAAKsgB,QAOzCpd,EAAQgR,UAAU82C,gBAAkB,WAClC,GAAI91C,GAAKlV,IACa6G,UAAlB7G,KAAK0nD,UACP1nD,KAAK0nD,SAASrzC,UAIdrU,KAAK0nD,SAAWA,EAD0B,GAAxC1nD,KAAKgkD,UAAUvB,SAASE,cACAnoC,UAAW1S,OAAQ8B,gBAAgB,IAGnC4Q,UAAWxa,KAAKsgB,MAAO1W,gBAAgB,IAGnE5J,KAAK0nD,SAAS2E,QAEVrsD,KAAKgkD,UAAUvB,SAAStzC,SAAWnP,KAAKssD,aAC1CtsD,KAAK0nD,SAAShyB,KAAK,KAAQ11B,KAAKusD,QAAQ72B,KAAKxgB,GAAQ,WACrDlV,KAAK0nD,SAAShyB,KAAK,KAAQ11B,KAAKwsD,aAAa92B,KAAKxgB,GAAK,SACvDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAKysD,UAAU/2B,KAAKxgB,GAAM,WACrDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAKwsD,aAAa92B,KAAKxgB,GAAK,SACvDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK0sD,UAAUh3B,KAAKxgB,GAAM,WACrDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK2sD,aAAaj3B,KAAKxgB,GAAK,SACvDlV,KAAK0nD,SAAShyB,KAAK,QAAQ11B,KAAK4sD,WAAWl3B,KAAKxgB,GAAK,WACrDlV,KAAK0nD,SAAShyB,KAAK,QAAQ11B,KAAK2sD,aAAaj3B,KAAKxgB,GAAK,SACvDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK6sD,QAAQn3B,KAAKxgB,GAAQ,WACrDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK6sD,QAAQn3B,KAAKxgB,GAAQ,WACrDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK+sD,SAASr3B,KAAKxgB,GAAO,WACrDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK+sD,SAASr3B,KAAKxgB,GAAO,WACrDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK6sD,QAAQn3B,KAAKxgB,GAAQ,WACrDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK+sD,SAASr3B,KAAKxgB,GAAO,WACrDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,SAAS11B,KAAK6sD,QAAQn3B,KAAKxgB,GAAO,WACrDlV,KAAK0nD,SAAShyB,KAAK,SAAS11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAO,SACvDlV,KAAK0nD,SAAShyB,KAAK,WAAW11B,KAAK+sD,SAASr3B,KAAKxgB,GAAI,WACrDlV,KAAK0nD,SAAShyB,KAAK,WAAW11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAK,UAGV,GAA3ClV,KAAKgkD,UAAUpB,iBAAiBzzC,UAClCnP,KAAK0nD,SAAShyB,KAAK,MAAM11B,KAAK4pD,sBAAsBl0B,KAAKxgB,IACzDlV,KAAK0nD,SAAShyB,KAAK,SAAS11B,KAAKgtD,gBAAgBt3B,KAAKxgB,MAU1DhS,EAAQgR,UAAUG,QAAU,WAC1BrU,KAAKqQ,MAAQ,aACbrQ,KAAKyiB,OAAS,aACdziB,KAAKsnD,OAAQ,EAGbtnD,KAAKitD,+BAGLjtD,KAAK0nD,SAAS2E,QAGdrsD,KAAK8D,OAAOgoD,UAGZ9rD,KAAKyU,MAELzU,KAAKktD,oBAAoBltD,KAAK0a,mBAGhCxX,EAAQgR,UAAUg5C,oBAAsB,SAASC,GAC/C,KAAoC,GAA7BA,EAAUzoC,iBACf1kB,KAAKktD,oBAAoBC,EAAUxoC,YACnCwoC,EAAUv7C,YAAYu7C,EAAUxoC,aAUpCzhB,EAAQgR,UAAUk5C,YAAc,SAAUttB,GACxC,OACEttB,EAAGstB,EAAMvH,MAAQ53B,EAAK+G,gBAAgB1H,KAAKsgB,MAAMC,QACjD9N,EAAGqtB,EAAMrH,MAAQ93B,EAAKqH,eAAehI,KAAKsgB,MAAMC,UASpDrd,EAAQgR,UAAUmsB,SAAW,SAAUx2B,IACjC,GAAIjF,OAAOyC,UAAYrH,KAAKglD,UAAY,MAC1ChlD,KAAK0qC,KAAK3I,QAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,QACnD/sB,KAAK0qC,KAAK2iB,SAAU,EACpBrtD,KAAK+rD,MAAMxnD,MAAQvE,KAAKstD,YAGxBttD,KAAKglD,WAAY,GAAIpgD,OAAOyC,UAE5BrH,KAAKutD,aAAavtD,KAAK0qC,KAAK3I,WAQhC7+B,EAAQgR,UAAU8rB,aAAe,SAAUn2B,GACzC7J,KAAKwtD,iBAAiB3jD,IAUxB3G,EAAQgR,UAAUs5C,iBAAmB,SAAS3jD,GAElBhD,SAAtB7G,KAAK0qC,KAAK3I,SACZ/hC,KAAKqgC,SAASx2B,EAGhB,IAAIw+C,GAAOroD,KAAKytD,WAAWztD,KAAK0qC,KAAK3I,QASrC,IANA/hC,KAAK0qC,KAAK1J,UAAW,EACrBhhC,KAAK0qC,KAAK4J,aACVt0C,KAAK0qC,KAAKjsB,YAAcze,KAAK0tD,kBAC7B1tD,KAAK0qC,KAAKie,OAAS,KACnB3oD,KAAKkmD,eAAgB,EAET,MAARmC,GAA4C,GAA5BroD,KAAKgkD,UAAUJ,UAAmB,CACpD5jD,KAAKkmD,eAAgB,EACrBlmD,KAAK0qC,KAAKie,OAASN,EAAKhoD,GAEnBgoD,EAAKsF,cACR3tD,KAAK4tD,cAAcvF,GAAK,GAG1BroD,KAAKyuB,KAAK,aAAao/B,QAAQ7tD,KAAK83B,eAAe+mB,OAGnD,KAAK,GAAIiP,KAAY9tD,MAAK+tD,aAAalP,MACrC,GAAI7+C,KAAK+tD,aAAalP,MAAM14C,eAAe2nD,GAAW,CACpD,GAAI9pD,GAAShE,KAAK+tD,aAAalP,MAAMiP,GACjCvhD,GACFlM,GAAI2D,EAAO3D,GACXgoD,KAAMrkD,EAGNwO,EAAGxO,EAAOwO,EACVC,EAAGzO,EAAOyO,EACVu7C,OAAQhqD,EAAOgqD,OACfC,OAAQjqD,EAAOiqD,OAGjBjqD,GAAOgqD,QAAS,EAChBhqD,EAAOiqD,QAAS,EAEhBjuD,KAAK0qC,KAAK4J,UAAU/rC,KAAKgE,MAWjCrJ,EAAQgR,UAAU+rB,QAAU,SAAUp2B,GACpC7J,KAAKkuD,cAAcrkD,IAUrB3G,EAAQgR,UAAUg6C,cAAgB,SAASrkD,GACzC,IAAI7J,KAAK0qC,KAAK2iB,QAAd,CAKArtD,KAAKmuD,aAEL,IAAIpsB,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,QACzC7X,EAAKlV,KACL0qC,EAAO1qC,KAAK0qC,KACZ4J,EAAY5J,EAAK4J,SACrB,IAAIA,GAAaA,EAAUtuC,QAAsC,GAA5BhG,KAAKgkD,UAAUJ,UAAmB,CAErE,GAAIniB,GAASM,EAAQvvB,EAAIk4B,EAAK3I,QAAQvvB,EAClCkvB,EAASK,EAAQtvB,EAAIi4B,EAAK3I,QAAQtvB,CAGtC6hC,GAAU1rC,QAAQ,SAAU2D,GAC1B,GAAI87C,GAAO97C,EAAE87C,IAER97C,GAAEyhD,SACL3F,EAAK71C,EAAI0C,EAAGk5C,qBAAqBl5C,EAAGm5C,qBAAqB9hD,EAAEiG,GAAKivB,IAG7Dl1B,EAAE0hD,SACL5F,EAAK51C,EAAIyC,EAAGo5C,qBAAqBp5C,EAAGq5C,qBAAqBhiD,EAAEkG,GAAKivB,MAM/D1hC,KAAKqnD,SACRrnD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,aAKP,IAAkC,GAA9BrQ,KAAKgkD,UAAUL,YAAqB,CAEtC,GAA0B98C,SAAtB7G,KAAK0qC,KAAK3I,QAEZ,WADA/hC,MAAKwtD,iBAAiB3jD,EAGxB,IAAIokB,GAAQ8T,EAAQvvB,EAAIxS,KAAK0qC,KAAK3I,QAAQvvB,EACtC0b,EAAQ6T,EAAQtvB,EAAIzS,KAAK0qC,KAAK3I,QAAQtvB,CAE1CzS,MAAK6lD,gBACH7lD,KAAK0qC,KAAKjsB,YAAYjM,EAAIyb,EAC1BjuB,KAAK0qC,KAAKjsB,YAAYhM,EAAIyb,GAE5BluB,KAAKi3B,aASX/zB,EAAQgR,UAAUgsB,WAAa,SAAUr2B,GACvC7J,KAAKwuD,eAAe3kD,IAItB3G,EAAQgR,UAAUs6C,eAAiB,WACjCxuD,KAAK0qC,KAAK1J,UAAW,CACrB,IAAIsT,GAAYt0C,KAAK0qC,KAAK4J,SACtBA,IAAaA,EAAUtuC,QACzBsuC,EAAU1rC,QAAQ,SAAU2D,GAE1BA,EAAE87C,KAAK2F,OAASzhD,EAAEyhD,OAClBzhD,EAAE87C,KAAK4F,OAAS1hD,EAAE0hD,SAEpBjuD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,SAGLrQ,KAAKi3B,UAEmB,GAAtBj3B,KAAKkmD,cACPlmD,KAAKyuB,KAAK,WAAWo/B,aAGrB7tD,KAAKyuB,KAAK,WAAWo/B,QAAQ7tD,KAAK83B,eAAe+mB,SAQrD37C,EAAQgR,UAAU83C,OAAS,SAAUniD,GACnC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAKwmD,gBAAkBzkB,EACvB/hC,KAAKyuD,WAAW1sB,IASlB7+B,EAAQgR,UAAU+3C,aAAe,SAAUpiD,GACzC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAK0uD,iBAAiB3sB,IAQxB7+B,EAAQgR,UAAUisB,QAAU,SAAUt2B,GACpC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAKwmD,gBAAkBzkB,EACvB/hC,KAAK2uD,cAAc5sB,IAQrB7+B,EAAQgR,UAAUk4C,WAAa,SAAUviD,GACvC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAK4uD,iBAAiB7sB,IAQxB7+B,EAAQgR,UAAUosB,SAAW,SAAUz2B,GACrC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAE7C/sB,MAAK0qC,KAAK2iB,SAAU,EACd,SAAWrtD,MAAK+rD,QACpB/rD,KAAK+rD,MAAMxnD,MAAQ,EAIrB,IAAIA,GAAQvE,KAAK+rD,MAAMxnD,MAAQsF,EAAM2uB,QAAQj0B,KAC7CvE,MAAK6uD,MAAMtqD,EAAOw9B,IAUpB7+B,EAAQgR,UAAU26C,MAAQ,SAAStqD,EAAOw9B,GACxC,GAA+B,GAA3B/hC,KAAKgkD,UAAUrkB,SAAkB,CACnC,GAAImvB,GAAW9uD,KAAKstD,WACR,MAAR/oD,IACFA,EAAQ,MAENA,EAAQ,KACVA,EAAQ,GAGV,IAAIwqD,GAAsB,IACRloD,UAAd7G,KAAK0qC,MACmB,GAAtB1qC,KAAK0qC,KAAK1J,WACZ+tB,EAAsB/uD,KAAKgvD,YAAYhvD,KAAK0qC,KAAK3I,SAIrD,IAAItjB,GAAcze,KAAK0tD,kBAEnBuB,EAAY1qD,EAAQuqD,EACpBI,GAAM,EAAID,GAAaltB,EAAQvvB,EAAIiM,EAAYjM,EAAIy8C,EACnDE,GAAM,EAAIF,GAAaltB,EAAQtvB,EAAIgM,EAAYhM,EAAIw8C,CASvD,IAPAjvD,KAAKymD,YAAcj0C,EAAMxS,KAAKouD,qBAAqBrsB,EAAQvvB,GACxCC,EAAMzS,KAAKsuD,qBAAqBvsB,EAAQtvB,IAE3DzS,KAAKie,UAAU1Z,GACfvE,KAAK6lD,gBAAgBqJ,EAAIC,GACzBnvD,KAAKovD,wBAEsB,MAAvBL,EAA6B,CAC/B,GAAIM,GAAuBrvD,KAAKsvD,YAAYP,EAC5C/uD,MAAK0qC,KAAK3I,QAAQvvB,EAAI68C,EAAqB78C,EAC3CxS,KAAK0qC,KAAK3I,QAAQtvB,EAAI48C,EAAqB58C,EAY7C,MATAzS,MAAKi3B,UAEU1yB,EAAXuqD,EACF9uD,KAAKyuB,KAAK,QAASyO,UAAU,MAG7Bl9B,KAAKyuB,KAAK,QAASyO,UAAU,MAGxB34B,IAYXrB,EAAQgR,UAAUksB,cAAgB,SAASv2B,GAEzC,GAAIylB,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAW,IAChB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAO,GAMpBF,EAAO,CAGT,GAAI/qB,GAAQvE,KAAKstD,YACbprB,EAAO5S,EAAQ,EACP,GAARA,IACF4S,GAAe,EAAIA,GAErB39B,GAAU,EAAI29B,CAGd,IAAI1J,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAU/hC,KAAKotD,YAAY50B,EAAQzL,OAGvC/sB,MAAK6uD,MAAMtqD,EAAOw9B,GAIpBl4B,EAAMD,kBASR1G,EAAQgR,UAAUg4C,kBAAoB,SAAUriD,GAC9C,GAAI2uB,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAU/hC,KAAKotD,YAAY50B,EAAQzL,QACnCwiC,GAAe,CAsBnB,IAnBmB1oD,SAAf7G,KAAKwvD,QACHxvD,KAAKwvD,MAAM91B,UAAW,GACxB15B,KAAKyvD,gBAAgB1tB,GAInB/hC,KAAKwvD,MAAM91B,UAAW,IACxB61B,GAAe,EACfvvD,KAAKwvD,MAAME,YAAY3tB,EAAQvvB,EAAI,EAAEuvB,EAAQtvB,EAAI,GACjDzS,KAAKwvD,MAAMzoB,SAK6B,GAAxC/mC,KAAKgkD,UAAUvB,SAASE,cAA4D,GAAnC3iD,KAAKgkD,UAAUvB,SAAStzC,SAC3EnP,KAAKsgB,MAAMuX,QAIT03B,KAAiB,EAAO,CAC1B,GAAIr6C,GAAKlV,KACL2vD,EAAY,WACdz6C,EAAG06C,gBAAgB7tB,GAEjB/hC,MAAK6vD,YACPx8B,cAAcrzB,KAAK6vD,YAEhB7vD,KAAK0qC,KAAK1J,WACbhhC,KAAK6vD,WAAat1C,WAAWo1C,EAAW3vD,KAAKgkD,UAAU58B,QAAQ3N,QAOnE,GAA4B,GAAxBzZ,KAAKgkD,UAAUh3C,MAAe,CAEhC,IAAK,GAAI8iD,KAAU9vD,MAAKkkD,SAASlE,MAC3BhgD,KAAKkkD,SAASlE,MAAM75C,eAAe2pD,KACrC9vD,KAAKkkD,SAASlE,MAAM8P,GAAQ9iD,OAAQ,QAC7BhN,MAAKkkD,SAASlE,MAAM8P,GAK/B,IAAI/rC,GAAM/jB,KAAKytD,WAAW1rB,EACf,OAAPhe,IACFA,EAAM/jB,KAAK+vD,WAAWhuB,IAEb,MAAPhe,GACF/jB,KAAKgwD,aAAajsC,EAIpB,KAAK,GAAI4kC,KAAU3oD,MAAKkkD,SAASrF,MAC3B7+C,KAAKkkD,SAASrF,MAAM14C,eAAewiD,KACjC5kC,YAAexgB,IAAQwgB,EAAI1jB,IAAMsoD,GAAU5kC,YAAe3gB,IAAe,MAAP2gB,KACpE/jB,KAAKiwD,YAAYjwD,KAAKkkD,SAASrF,MAAM8J,UAC9B3oD,MAAKkkD,SAASrF,MAAM8J,GAIjC3oD,MAAKyiB,WAYTvf,EAAQgR,UAAU07C,gBAAkB,SAAU7tB,GAC5C,GAOI1hC,GAPA0jB,GACFlc,KAAQ7H,KAAKouD,qBAAqBrsB,EAAQvvB,GAC1CvK,IAAQjI,KAAKsuD,qBAAqBvsB,EAAQtvB,GAC1C4V,MAAQroB,KAAKouD,qBAAqBrsB,EAAQvvB,GAC1C8R,OAAQtkB,KAAKsuD,qBAAqBvsB,EAAQtvB,IAIxCy9C,EAAuCrpD,SAAlB7G,KAAKmwD,SAAyB,GAAKnwD,KAAKmwD,SAAS9vD,GACtE+vD,GAAkB,EAClBC,EAAY,MAEhB,IAAqBxpD,QAAjB7G,KAAKmwD,SAAuB,CAE9B,GAAItR,GAAQ7+C,KAAK6+C,MACbyR,IACJ,KAAKjwD,IAAMw+C,GACT,GAAIA,EAAM14C,eAAe9F,GAAK,CAC5B,GAAIgoD,GAAOxJ,EAAMx+C,EACbgoD,GAAKkI,kBAAkBxsC,IACDld,SAApBwhD,EAAKmI,YACPF,EAAiB/nD,KAAKlI,GAM1BiwD,EAAiBtqD,OAAS,IAG5BhG,KAAKmwD,SAAWnwD,KAAK6+C,MAAMyR,EAAiBA,EAAiBtqD,OAAS,IAEtEoqD,GAAkB,GAItB,GAAsBvpD,SAAlB7G,KAAKmwD,UAA6C,GAAnBC,EAA0B,CAE3D,GAAIpQ,GAAQhgD,KAAKggD,MACbyQ,IACJ,KAAKpwD,IAAM2/C,GACT,GAAIA,EAAM75C,eAAe9F,GAAK,CAC5B,GAAIqwD,GAAO1Q,EAAM3/C,EACbqwD,GAAKC,WAAkC9pD,SAApB6pD,EAAKF,YACxBE,EAAKH,kBAAkBxsC,IACzB0sC,EAAiBloD,KAAKlI,GAKxBowD,EAAiBzqD,OAAS,IAC5BhG,KAAKmwD,SAAWnwD,KAAKggD,MAAMyQ,EAAiBA,EAAiBzqD,OAAS,IACtEqqD,EAAY,QAIZrwD,KAAKmwD,SAEHnwD,KAAKmwD,SAAS9vD,IAAM6vD,IACHrpD,SAAf7G,KAAKwvD,QACPxvD,KAAKwvD,MAAQ,GAAIhsD,GAAMxD,KAAKsgB,MAAOtgB,KAAKgkD,UAAU58B,UAGpDpnB,KAAKwvD,MAAMoB,gBAAkBP,EAC7BrwD,KAAKwvD,MAAMqB,cAAgB7wD,KAAKmwD,SAAS9vD,GAKzCL,KAAKwvD,MAAME,YAAY3tB,EAAQvvB,EAAI,EAAGuvB,EAAQtvB,EAAI,GAClDzS,KAAKwvD,MAAMsB,QAAQ9wD,KAAKmwD,SAASK,YACjCxwD,KAAKwvD,MAAMzoB,QAIT/mC,KAAKwvD,OACPxvD,KAAKwvD,MAAM1oB,QAYjB5jC,EAAQgR,UAAUu7C,gBAAkB,SAAU1tB,GAC5C,GAAIgvB,IACFlpD,KAAQ7H,KAAKouD,qBAAqBrsB,EAAQvvB,GAC1CvK,IAAQjI,KAAKsuD,qBAAqBvsB,EAAQtvB,GAC1C4V,MAAQroB,KAAKouD,qBAAqBrsB,EAAQvvB,GAC1C8R,OAAQtkB,KAAKsuD,qBAAqBvsB,EAAQtvB,IAGxCu+C,GAAa,CACjB,IAAkC,QAA9BhxD,KAAKwvD,MAAMoB,iBAEb,GADAI,EAAahxD,KAAK6+C,MAAM7+C,KAAKwvD,MAAMqB,eAAeN,kBAAkBQ,GAChEC,KAAe,EAAM,CACvB,GAAIC,GAAWjxD,KAAKytD,WAAW1rB,EAC/BivB,GAAaC,EAAS5wD,IAAML,KAAKwvD,MAAMqB,mBAIR,QAA7B7wD,KAAKytD,WAAW1rB,KAClBivB,EAAahxD,KAAKggD,MAAMhgD,KAAKwvD,MAAMqB,eAAeN,kBAAkBQ,GAKpEC,MAAe,IACjBhxD,KAAKmwD,SAAWtpD,OAChB7G,KAAKwvD,MAAM1oB,SAYf5jC,EAAQgR,UAAUyR,QAAU,SAASrS,EAAOC,GAC1C,GAAI29C,IAAY,EACZC,EAAWnxD,KAAKsgB,MAAMC,OAAOjN,MAC7B89C,EAAYpxD,KAAKsgB,MAAMC,OAAOhN,MAC9BD,IAAStT,KAAKgkD,UAAU1wC,OAASC,GAAUvT,KAAKgkD,UAAUzwC,QAAUvT,KAAKsgB,MAAM5S,MAAM4F,OAASA,GAAStT,KAAKsgB,MAAM5S,MAAM6F,QAAUA,GACpIvT,KAAKsgB,MAAM5S,MAAM4F,MAAQA,EACzBtT,KAAKsgB,MAAM5S,MAAM6F,OAASA,EAE1BvT,KAAKsgB,MAAMC,OAAO7S,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMC,OAAO7S,MAAM6F,OAAS,OAEjCvT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKikD,WAC/DjkD,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKikD,WAEjEjkD,KAAKgkD,UAAU1wC,MAAQA,EACvBtT,KAAKgkD,UAAUzwC,OAASA,EAExB29C,GAAY,IAMRlxD,KAAKsgB,MAAMC,OAAOjN,OAAStT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKikD,aAClEjkD,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKikD,WAC/DiN,GAAY,GAEVlxD,KAAKsgB,MAAMC,OAAOhN,QAAUvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKikD,aACpEjkD,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKikD,WACjEiN,GAAY,IAIC,GAAbA,GACFlxD,KAAKyuB,KAAK,UAAWnb,MAAMtT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKikD,WAAW1wC,OAAOvT,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKikD,WAAYkN,SAAUA,EAAWnxD,KAAKikD,WAAYmN,UAAWA,EAAYpxD,KAAKikD,cAS9L/gD,EAAQgR,UAAUg2C,UAAY,SAASrL,GACrC,GAAIwS,GAAerxD,KAAK2mD,SAExB,IAAI9H,YAAiBh+C,IAAWg+C,YAAiB/9C,GAC/Cd,KAAK2mD,UAAY9H,MAEd,IAAIv4C,MAAMC,QAAQs4C,GACrB7+C,KAAK2mD,UAAY,GAAI9lD,GACrBb,KAAK2mD,UAAU3yC,IAAI6qC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAIn4C,WAAU,4BAHpB1G,MAAK2mD,UAAY,GAAI9lD,GAgBvB,GAVIwwD,GAEF1wD,EAAKiI,QAAQ5I,KAAK6mD,eAAgB,SAAUh+C,EAAUgB,GACpDwnD,EAAa58C,IAAI5K,EAAOhB,KAK5B7I,KAAK6+C,SAED7+C,KAAK2mD,UAAW,CAElB,GAAIzxC,GAAKlV,IACTW,GAAKiI,QAAQ5I,KAAK6mD,eAAgB,SAAUh+C,EAAUgB,GACpDqL,EAAGyxC,UAAUryC,GAAGzK,EAAOhB,IAIzB,IAAIqN,GAAMlW,KAAK2mD,UAAU/vC,QACzB5W,MAAK8mD,UAAU5wC,GAEjBlW,KAAKsxD,oBAQPpuD,EAAQgR,UAAU4yC,UAAY,SAAS5wC,GAErC,IAAK,GADD7V,GACKwF,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9CxF,EAAK6V,EAAIrQ,EACT,IAAI4N,GAAOzT,KAAK2mD,UAAU1wC,IAAI5V,GAC1BgoD,EAAO,GAAI9kD,GAAKkQ,EAAMzT,KAAKklD,OAAQllD,KAAK+0B,OAAQ/0B,KAAKgkD,UAEzD,IADAhkD,KAAK6+C,MAAMx+C,GAAMgoD,IACG,GAAfA,EAAK2F,QAAkC,GAAf3F,EAAK4F,QAAgC,OAAX5F,EAAK71C,GAAyB,OAAX61C,EAAK51C,GAAa,CAC1F,GAAI6Z,GAAS,EAASpW,EAAIlQ,OAAS,GAC/BurD,EAAQ,EAAI/sD,KAAKgoB,GAAKhoB,KAAKiB,QACZ,IAAf4iD,EAAK2F,SAAkB3F,EAAK71C,EAAI8Z,EAAS9nB,KAAK+a,IAAIgyC,IACnC,GAAflJ,EAAK4F,SAAkB5F,EAAK51C,EAAI6Z,EAAS9nB,KAAK4a,IAAImyC,IAExDvxD,KAAKqnD,QAAS,EAGhBrnD,KAAKwpD,uBAC4C,GAA7CxpD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKwxD,0BACLxxD,KAAKyxD,kBACLzxD,KAAK0xD,kBAAkB1xD,KAAK6+C,OAC5B7+C,KAAK2xD,gBAQPzuD,EAAQgR,UAAU6yC,aAAe,SAAS7wC,GAIxC,IAAK,GAHDywC,GAAY3mD,KAAK2mD,UAAU1wC,IAAIC,GAC/B2oC,EAAQ7+C,KAAK6+C,MAERh5C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GACTwiD,EAAOxJ,EAAMx+C,GACboT,EAAOkzC,EAAU9gD,EACjBwiD,GAEFA,EAAKuJ,cAAcn+C,EAAMzT,KAAKgkD,YAI9BqE,EAAO,GAAI9kD,GAAKsuD,WAAY7xD,KAAKklD,OAAQllD,KAAK+0B,OAAQ/0B,KAAKgkD,WAC3DnF,EAAMx+C,GAAMgoD,GAGhBroD,KAAKqnD,QAAS,EACmC,GAA7CrnD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKwpD,uBACLxpD,KAAK0xD,kBAAkB7S,GACvB7+C,KAAKqrD,wBAIPnoD,EAAQgR,UAAUm3C,qBAAuB,WACvC,IAAK,GAAIyE,KAAU9vD,MAAKggD,MACtBhgD,KAAKggD,MAAM8P,GAAQgC,YAAa,GASpC5uD,EAAQgR,UAAU8yC,aAAe,SAAS9wC,GAIxC,IAAK,GAHD2oC,GAAQ7+C,KAAK6+C,MAGRh5C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACDgB,SAApC7G,KAAK+tD,aAAalP,MAAM3oC,EAAIrQ,MAC9B7F,KAAK6+C,MAAM3oC,EAAIrQ,IAAI+gC,WACnB5mC,KAAK+xD,qBAAqB/xD,KAAK6+C,MAAM3oC,EAAIrQ,KAI7C,KAAK,GAAIA,GAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,SACNg5C,GAAMx+C,GAKfL,KAAKwpD,uBAC4C,GAA7CxpD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKwxD,0BACLxxD,KAAKyxD,kBACLzxD,KAAKsxD,mBACLtxD,KAAK0xD,kBAAkB7S,IASzB37C,EAAQgR,UAAUi2C,UAAY,SAASnK,GACrC,GAAIgS,GAAehyD,KAAK4mD,SAExB,IAAI5G,YAAiBn/C,IAAWm/C,YAAiBl/C,GAC/Cd,KAAK4mD,UAAY5G,MAEd,IAAI15C,MAAMC,QAAQy5C,GACrBhgD,KAAK4mD,UAAY,GAAI/lD,GACrBb,KAAK4mD,UAAU5yC,IAAIgsC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAIt5C,WAAU,4BAHpB1G,MAAK4mD,UAAY,GAAI/lD,GAgBvB,GAVImxD,GAEFrxD,EAAKiI,QAAQ5I,KAAKinD,eAAgB,SAAUp+C,EAAUgB,GACpDmoD,EAAav9C,IAAI5K,EAAOhB,KAK5B7I,KAAKggD,SAEDhgD,KAAK4mD,UAAW,CAElB,GAAI1xC,GAAKlV,IACTW,GAAKiI,QAAQ5I,KAAKinD,eAAgB,SAAUp+C,EAAUgB,GACpDqL,EAAG0xC,UAAUtyC,GAAGzK,EAAOhB,IAIzB,IAAIqN,GAAMlW,KAAK4mD,UAAUhwC,QACzB5W,MAAKknD,UAAUhxC,GAGjBlW,KAAKyxD,mBAQPvuD,EAAQgR,UAAUgzC,UAAY,SAAUhxC,GAItC,IAAK,GAHD8pC,GAAQhgD,KAAKggD,MACb4G,EAAY5mD,KAAK4mD,UAEZ/gD,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GAETosD,EAAUjS,EAAM3/C,EAChB4xD,IACFA,EAAQC,YAGV,IAAIz+C,GAAOmzC,EAAU3wC,IAAI5V,GAAK8xD,iBAAoB,GAClDnS,GAAM3/C,GAAM,GAAI+C,GAAKqQ,EAAMzT,KAAMA,KAAKgkD,WAExChkD,KAAKqnD,QAAS,EACdrnD,KAAK0xD,kBAAkB1R,GACvBhgD,KAAKoyD,qBACLpyD,KAAKwxD,0BAC4C,GAA7CxxD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,6BASTrkD,EAAQgR,UAAUizC,aAAe,SAAUjxC,GAGzC,IAAK,GAFD8pC,GAAQhgD,KAAKggD,MACb4G,EAAY5mD,KAAK4mD,UACZ/gD,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GAET4N,EAAOmzC,EAAU3wC,IAAI5V,GACrBqwD,EAAO1Q,EAAM3/C,EACbqwD,IAEFA,EAAKwB,aACLxB,EAAKkB,cAAcn+C,EAAMzT,KAAKgkD,WAC9B0M,EAAKhS,YAILgS,EAAO,GAAIttD,GAAKqQ,EAAMzT,KAAMA,KAAKgkD,WACjChkD,KAAKggD,MAAM3/C,GAAMqwD,GAIrB1wD,KAAKoyD,qBAC4C,GAA7CpyD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKqnD,QAAS,EACdrnD,KAAK0xD,kBAAkB1R,IAQzB98C,EAAQgR,UAAUkzC,aAAe,SAAUlxC,GAIzC,IAAK,GAHD8pC,GAAQhgD,KAAKggD,MAGRn6C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACDgB,SAApC7G,KAAK+tD,aAAa/N,MAAM9pC,EAAIrQ,MAC9Bm6C,EAAM9pC,EAAIrQ,IAAI+gC,WACd5mC,KAAK+xD,qBAAqB/R,EAAM9pC,EAAIrQ,KAIxC,KAAK,GAAIA,GAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GACT6qD,EAAO1Q,EAAM3/C,EACbqwD,KACc,MAAZA,EAAK2B,WACAryD,MAAKsyD,QAAiB,QAAS,MAAE5B,EAAK2B,IAAIhyD,IAEnDqwD,EAAKwB,mBACElS,GAAM3/C,IAIjBL,KAAKqnD,QAAS,EACdrnD,KAAK0xD,kBAAkB1R,GAC0B,GAA7ChgD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKwxD,2BAOPtuD,EAAQgR,UAAUu9C,gBAAkB,WAClC,GAAIpxD,GACAw+C,EAAQ7+C,KAAK6+C,MACbmB,EAAQhgD,KAAKggD,KACjB,KAAK3/C,IAAMw+C,GACLA,EAAM14C,eAAe9F,KACvBw+C,EAAMx+C,GAAI2/C,SACVnB,EAAMx+C,GAAIkyD,gBAId,KAAKlyD,IAAM2/C,GACT,GAAIA,EAAM75C,eAAe9F,GAAK,CAC5B,GAAIqwD,GAAO1Q,EAAM3/C,EACjBqwD,GAAKvmC,KAAO,KACZumC,EAAKtmC,GAAK,KACVsmC,EAAKhS,YAaXx7C,EAAQgR,UAAUw9C,kBAAoB,SAAS3tC,GAC7C,GAAI1jB,GAGA8c,EAAWtW,OACXuW,EAAWvW,OACX2rD,EAAa,CACjB,KAAKnyD,IAAM0jB,GACT,GAAIA,EAAI5d,eAAe9F,GAAK,CAC1B,GAAIiE,GAAQyf,EAAI1jB,GAAIsV,UACN9O,UAAVvC,IACF6Y,EAAyBtW,SAAbsW,EAA0B7Y,EAAQE,KAAKL,IAAIG,EAAO6Y,GAC9DC,EAAyBvW,SAAbuW,EAA0B9Y,EAAQE,KAAKJ,IAAIE,EAAO8Y,GAC9Do1C,GAAcluD,GAMpB,GAAiBuC,SAAbsW,GAAuCtW,SAAbuW,EAC5B,IAAK/c,IAAM0jB,GACLA,EAAI5d,eAAe9F,IACrB0jB,EAAI1jB,GAAIoyD,cAAct1C,EAAUC,EAAUo1C,IAUlDtvD,EAAQgR,UAAUuO,OAAS,WACzBziB,KAAK2lB,QAAQ3lB,KAAKgkD,UAAU1wC,MAAOtT,KAAKgkD,UAAUzwC,QAClDvT,KAAKi3B,WAQP/zB,EAAQgR,UAAUkxC,eAAiB,SAAS1rB,GACtC15B,KAAKilD,mBAAoB,IAC3BjlD,KAAKilD,iBAAkB,EACnBjlD,KAAK8nD,mBAAoB,EAC3BhgD,OAAOyS,WAAWva,KAAKi3B,QAAQvB,KAAK11B,KAAM05B,GAAQ,GAGlD5xB,OAAO4qD,sBAAsB1yD,KAAKi3B,QAAQvB,KAAK11B,KAAM05B,GAAQ,MAKnEx2B,EAAQgR,UAAU+iB,QAAU,SAASyC,GACpB7yB,SAAX6yB,IACFA,GAAS,GAEX15B,KAAKilD,iBAAkB,CACvB,IAAIl9B,GAAM/nB,KAAKsgB,MAAMC,OAAOyH,WAAW,KAEvCD,GAAI8jC,aAAa7rD,KAAKikD,WAAY,EAAG,EAAGjkD,KAAKikD,WAAY,EAAG,EAG5D,IAAI0O,GAAI3yD,KAAKsgB,MAAMC,OAAOC,YACtBlU,EAAItM,KAAKsgB,MAAMC,OAAOsF,YAC1BkC,GAAIE,UAAU,EAAG,EAAG0qC,EAAGrmD,GAGvByb,EAAI6qC,OACJ7qC,EAAI8qC,UAAU7yD,KAAKye,YAAYjM,EAAGxS,KAAKye,YAAYhM,GACnDsV,EAAIxjB,MAAMvE,KAAKuE,MAAOvE,KAAKuE,OAE3BvE,KAAKsmD,eACH9zC,EAAKxS,KAAKouD,qBAAqB,GAC/B37C,EAAKzS,KAAKsuD,qBAAqB,IAEjCtuD,KAAKumD,mBACH/zC,EAAKxS,KAAKouD,qBAAqBpuD,KAAKsgB,MAAMC,OAAOC,aACjD/N,EAAKzS,KAAKsuD,qBAAqBtuD,KAAKsgB,MAAMC,OAAOsF,eAG/C6T,KAAW,IACb15B,KAAK8yD,gBAAgB,sBAAuB/qC,IAClB,GAAtB/nB,KAAK0qC,KAAK1J,UAA4Cn6B,SAAvB7G,KAAK0qC,KAAK1J,UAA4D,GAAlChhC,KAAKgkD,UAAUH,kBACpF7jD,KAAK8yD,gBAAgB,aAAc/qC,KAIb,GAAtB/nB,KAAK0qC,KAAK1J,UAA4Cn6B,SAAvB7G,KAAK0qC,KAAK1J,UAA4D,GAAlChhC,KAAKgkD,UAAUF,kBACpF9jD,KAAK8yD,gBAAgB,aAAa/qC,GAAI,GAGpC2R,KAAW,GACkB,GAA3B15B,KAAKmkD,oBACPnkD,KAAK8yD,gBAAgB,oBAAqB/qC,GAQ9CA,EAAIgrC,UAEAr5B,KAAW,GACb3R,EAAIE,UAAU,EAAG,EAAG0qC,EAAGrmD,IAU3BpJ,EAAQgR,UAAU2xC,gBAAkB,SAASmN,EAASC,GAC3BpsD,SAArB7G,KAAKye,cACPze,KAAKye,aACHjM,EAAG,EACHC,EAAG,IAIS5L,SAAZmsD,IACFhzD,KAAKye,YAAYjM,EAAIwgD,GAEPnsD,SAAZosD,IACFjzD,KAAKye,YAAYhM,EAAIwgD,GAGvBjzD,KAAKyuB,KAAK,gBAQZvrB,EAAQgR,UAAUw5C,gBAAkB,WAClC,OACEl7C,EAAGxS,KAAKye,YAAYjM,EACpBC,EAAGzS,KAAKye,YAAYhM,IASxBvP,EAAQgR,UAAU+J,UAAY,SAAS1Z,GACrCvE,KAAKuE,MAAQA,GAQfrB,EAAQgR,UAAUo5C,UAAY,WAC5B,MAAOttD,MAAKuE,OAUdrB,EAAQgR,UAAUk6C,qBAAuB,SAAS57C,GAChD,OAAQA,EAAIxS,KAAKye,YAAYjM,GAAKxS,KAAKuE,OAUzCrB,EAAQgR,UAAUm6C,qBAAuB,SAAS77C,GAChD,MAAOA,GAAIxS,KAAKuE,MAAQvE,KAAKye,YAAYjM,GAU3CtP,EAAQgR,UAAUo6C,qBAAuB,SAAS77C,GAChD,OAAQA,EAAIzS,KAAKye,YAAYhM,GAAKzS,KAAKuE,OAUzCrB,EAAQgR,UAAUq6C,qBAAuB,SAAS97C,GAChD,MAAOA,GAAIzS,KAAKuE,MAAQvE,KAAKye,YAAYhM,GAU3CvP,EAAQgR,UAAUo7C,YAAc,SAAU/oC,GACxC,OAAQ/T,EAAGxS,KAAKquD,qBAAqB9nC,EAAI/T,GAAIC,EAAGzS,KAAKuuD,qBAAqBhoC,EAAI9T,KAShFvP,EAAQgR,UAAU86C,YAAc,SAAUzoC,GACxC,OAAQ/T,EAAGxS,KAAKouD,qBAAqB7nC,EAAI/T,GAAIC,EAAGzS,KAAKsuD,qBAAqB/nC,EAAI9T,KAUhFvP,EAAQgR,UAAUg/C,WAAa,SAASnrC,EAAIorC,GACvBtsD,SAAfssD,IACFA,GAAa,EAIf,IAAItU,GAAQ7+C,KAAK6+C,MACbtY,IAEJ,KAAK,GAAIlmC,KAAMw+C,GACTA,EAAM14C,eAAe9F,KACvBw+C,EAAMx+C,GAAI+yD,eAAepzD,KAAKuE,MAAMvE,KAAKsmD,cAActmD,KAAKumD,mBACxD1H,EAAMx+C,GAAIstD,aACZpnB,EAASh+B,KAAKlI,IAGVw+C,EAAMx+C,GAAIgzD,UAAYF,IACxBtU,EAAMx+C,GAAI0wC,KAAKhpB,GAOvB,KAAK,GAAIxb,GAAI,EAAG+mD,EAAO/sB,EAASvgC,OAAYstD,EAAJ/mD,EAAUA,KAC5CsyC,EAAMtY,EAASh6B,IAAI8mD,UAAYF,IACjCtU,EAAMtY,EAASh6B,IAAIwkC,KAAKhpB,IAW9B7kB,EAAQgR,UAAUq/C,WAAa,SAASxrC,GACtC,GAAIi4B,GAAQhgD,KAAKggD,KACjB,KAAK,GAAI3/C,KAAM2/C,GACb,GAAIA,EAAM75C,eAAe9F,GAAK,CAC5B,GAAIqwD,GAAO1Q,EAAM3/C,EACjBqwD,GAAKzrB,SAASjlC,KAAKuE,OACfmsD,EAAKC,WACP3Q,EAAM3/C,GAAI0wC,KAAKhpB,KAYvB7kB,EAAQgR,UAAUs/C,kBAAoB,SAASzrC,GAC7C,GAAIi4B,GAAQhgD,KAAKggD,KACjB,KAAK,GAAI3/C,KAAM2/C,GACTA,EAAM75C,eAAe9F,IACvB2/C,EAAM3/C,GAAImzD,kBAAkBzrC,IASlC7kB,EAAQgR,UAAUo2C,WAAa,WACgB,GAAzCtqD,KAAKgkD,UAAUd,wBACjBljD,KAAKyzD,qBAKP,KADA,GAAI17C,GAAQ,EACL/X,KAAKqnD,QAAUtvC,EAAQ/X,KAAKgkD,UAAUP,yBAC3CzjD,KAAK0zD,eACL37C,GAI0C,IAAxC/X,KAAKgkD,UAAUN,uBACjB1jD,KAAKwnD,YAAYj3C,SAAS,IAAI,GAAO,GAGM,GAAzCvQ,KAAKgkD,UAAUd,wBACjBljD,KAAK2zD,sBAGP3zD,KAAKyuB,KAAK,gCASZvrB,EAAQgR,UAAUu/C,oBAAsB,WACtC,GAAI5U,GAAQ7+C,KAAK6+C,KACjB,KAAK,GAAIx+C,KAAMw+C,GACTA,EAAM14C,eAAe9F,IACJ,MAAfw+C,EAAMx+C,GAAImS,GAA4B,MAAfqsC,EAAMx+C,GAAIoS,IACnCosC,EAAMx+C,GAAIuzD,UAAUphD,EAAIqsC,EAAMx+C,GAAI2tD,OAClCnP,EAAMx+C,GAAIuzD,UAAUnhD,EAAIosC,EAAMx+C,GAAI4tD,OAClCpP,EAAMx+C,GAAI2tD,QAAS,EACnBnP,EAAMx+C,GAAI4tD,QAAS,IAW3B/qD,EAAQgR,UAAUy/C,oBAAsB,WACtC,GAAI9U,GAAQ7+C,KAAK6+C,KACjB,KAAK,GAAIx+C,KAAMw+C,GACTA,EAAM14C,eAAe9F,IACM,MAAzBw+C,EAAMx+C,GAAIuzD,UAAUphD,IACtBqsC,EAAMx+C,GAAI2tD,OAASnP,EAAMx+C,GAAIuzD,UAAUphD,EACvCqsC,EAAMx+C,GAAI4tD,OAASpP,EAAMx+C,GAAIuzD,UAAUnhD,IAa/CvP,EAAQgR,UAAU2/C,UAAY,SAASC,GACrC,GAAIjV,GAAQ7+C,KAAK6+C,KACjB,KAAK,GAAIx+C,KAAMw+C,GACb,GAAkBh4C,SAAdg4C,EAAMx+C,IACwB,GAA5Bw+C,EAAMx+C,GAAI0zD,SAASD,GACrB,OAAO,CAIb,QAAO,GAUT5wD,EAAQgR,UAAU8/C,mBAAqB,WACrC,GAEIrL,GAFAv1B,EAAWpzB,KAAKq+C,wBAChBQ,EAAQ7+C,KAAK6+C,MAEboV,GAAe,CAEnB,IAAIj0D,KAAKgkD,UAAUV,YAAc,EAC/B,IAAKqF,IAAU9J,GACTA,EAAM14C,eAAewiD,KACvB9J,EAAM8J,GAAQuL,oBAAoB9gC,EAAUpzB,KAAKgkD,UAAUV,aAC3D2Q,GAAe,OAKnB,KAAKtL,IAAU9J,GACTA,EAAM14C,eAAewiD,KACvB9J,EAAM8J,GAAQwL,aAAa/gC,GAC3B6gC,GAAe,EAKrB,IAAoB,GAAhBA,EAAsB,CACxB,GAAIG,GAAgBp0D,KAAKgkD,UAAUT,YAAc/+C,KAAKJ,IAAIpE,KAAKuE,MAAM,IACrE,OAAI6vD,GAAgB,GAAIp0D,KAAKgkD,UAAUV,aAC9B,EAGAtjD,KAAK6zD,UAAUO,GAG1B,OAAO,GAITlxD,EAAQgR,UAAUmgD,oBAAsB,WACtC,GAAIxV,GAAQ7+C,KAAK6+C,KACjB,KAAK,GAAI8J,KAAU9J,GACbA,EAAM14C,eAAewiD,IACvB9J,EAAM8J,GAAQ2L,kBAKpBpxD,EAAQgR,UAAUqgD,mBAAqB,WACrCv0D,KAAKw0D,sBAAsB,uBACgB,GAAvCx0D,KAAKgkD,UAAUb,aAAah0C,SAA0D,GAAvCnP,KAAKgkD,UAAUb,aAAaC,SAC7EpjD,KAAKy0D,mBAAmB,wBAS5BvxD,EAAQgR,UAAUw/C,aAAe,WAC/B,IAAK1zD,KAAK8lD,yBACW,GAAf9lD,KAAKqnD,OAAgB,CACvB,GAAIqN,IAAmB,EACnBC,GAAsB,CAE1B30D,MAAKw0D,sBAAsB,8BAC3B,IAAII,GAAa50D,KAAKw0D,sBAAsB,qBACD,IAAvCx0D,KAAKgkD,UAAUb,aAAah0C,SAA0D,GAAvCnP,KAAKgkD,UAAUb,aAAaC,UAC7EuR,EAAsB30D,KAAKy0D,mBAAmB,sBAIhD,KAAK,GAAI5uD,GAAI,EAAGA,EAAI+uD,EAAW5uD,OAAQH,IACrC6uD,EAAmBE,EAAW/uD,IAAM6uD,CAItC10D,MAAKqnD,OAASqN,GAAoBC,EACf,GAAf30D,KAAKqnD,OACPrnD,KAAKu0D,qBAI4B,GAA7Bv0D,KAAKgmD,uBACPhmD,KAAKyuB,KAAK,sBACVzuB,KAAKgmD,sBAAuB,GAIhChmD,KAAKyjD,4BAYXvgD,EAAQgR,UAAU2gD,eAAiB,WAajC,GAXA70D,KAAKsnD,MAAQzgD,OAEe,GAAxB7G,KAAK8nD,iBAEP9nD,KAAKqQ,QAIPrQ,KAAK80D,oBAGc,GAAf90D,KAAKqnD,OAAgB,CACvB,GAAI0N,GAAYnwD,KAAKu6B,KACrBn/B,MAAK0zD,cACL,IAAIvV,GAAcv5C,KAAKu6B,MAAQ41B,GAG1B/0D,KAAKi+C,eAAiBj+C,KAAKk+C,WAAa,EAAIC,GAAsC,GAAvBn+C,KAAKo+C,iBAA0C,GAAfp+C,KAAKqnD,SACnGrnD,KAAK0zD,eAGkB,GAAnB1zD,KAAKk+C,aACPl+C,KAAKo+C,gBAAiB,IAK5B,GAAI4W,GAAkBpwD,KAAKu6B,KAC3Bn/B,MAAKi3B,UACLj3B,KAAKk+C,WAAat5C,KAAKu6B,MAAQ61B,EAEH,GAAxBh1D,KAAK8nD,iBAEP9nD,KAAKqQ,SAIa,mBAAXvI,UACTA,OAAO4qD,sBAAwB5qD,OAAO4qD,uBAAyB5qD,OAAOmtD,0BACvCntD,OAAOotD,6BAA+BptD,OAAOqtD,yBAM9EjyD,EAAQgR,UAAU7D,MAAQ,WAIxB,GAHoC,GAAhCrQ,KAAK8lD,0BACP9lD,KAAKqnD,QAAS,GAEG,GAAfrnD,KAAKqnD,QAAqC,GAAnBrnD,KAAKqlD,YAAsC,GAAnBrlD,KAAKslD,YAAyC,GAAtBtlD,KAAKulD,eAAwC,GAAlBvlD,KAAKwkD,UACpGxkD,KAAKsnD,QAENtnD,KAAKsnD,MADqB,GAAxBtnD,KAAK8nD,gBACMhgD,OAAOyS,WAAWva,KAAK60D,eAAen/B,KAAK11B,MAAOA,KAAKi+C,gBAGvDn2C,OAAO4qD,sBAAsB1yD,KAAK60D,eAAen/B,KAAK11B,YAOvE,IAFAA,KAAKolD,iBAEDplD,KAAKyjD,wBAA0B,EAAG,CAKpC,GAAIvuC,GAAKlV,KACL6U,GACFugD,WAAYlgD,EAAGuuC,wBAEjBzjD,MAAKyjD,wBAA0B,EAC/BzjD,KAAKgmD,sBAAuB,EAC5BzrC,WAAW,WACTrF,EAAGuZ,KAAK,aAAc5Z,IACrB,OAGH7U,MAAKyjD,wBAA0B,GAWrCvgD,EAAQgR,UAAU4gD,kBAAoB,WACpC,GAAuB,GAAnB90D,KAAKqlD,YAAsC,GAAnBrlD,KAAKslD,WAAiB,CAChD,GAAI7mC,GAAcze,KAAK0tD,iBACvB1tD,MAAK6lD,gBAAgBpnC,EAAYjM,EAAExS,KAAKqlD,WAAY5mC,EAAYhM,EAAEzS,KAAKslD,YAEzE,GAA0B,GAAtBtlD,KAAKulD,cAAoB,CAC3B,GAAIx4B,IACFva,EAAGxS,KAAKsgB,MAAMC,OAAOC,YAAc,EACnC/N,EAAGzS,KAAKsgB,MAAMC,OAAOsF,aAAe,EAEtC7lB,MAAK6uD,MAAM7uD,KAAKuE,OAAO,EAAIvE,KAAKulD,eAAgBx4B,KAQpD7pB,EAAQgR,UAAUmhD,iBAAmB,SAASC,GAC9B,GAAVA,GACFt1D,KAAK8lD,yBAA0B,EAC/B9lD,KAAKqnD,QAAS,IAGdrnD,KAAK8lD,yBAA0B,EAC/B9lD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,UAWTnN,EAAQgR,UAAUi3C,uBAAyB,SAASrC,GAIlD,GAHqBjiD,SAAjBiiD,IACFA,GAAe,GAE0B,GAAvC9oD,KAAKgkD,UAAUb,aAAah0C,SAA0D,GAAvCnP,KAAKgkD,UAAUb,aAAaC,QAAiB,CAC9FpjD,KAAKoyD,oBAEL;IAAK,GAAIzJ,KAAU3oD,MAAKsyD,QAAiB,QAAS,MAC5CtyD,KAAKsyD,QAAiB,QAAS,MAAEnsD,eAAewiD,IACwB9hD,SAAtE7G,KAAKggD,MAAMhgD,KAAKsyD,QAAiB,QAAS,MAAE3J,GAAQ4M,qBAC/Cv1D,MAAKsyD,QAAiB,QAAS,MAAE3J,OAK3C,CAEH3oD,KAAKsyD,QAAiB,QAAS,QAC/B,KAAK,GAAIxC,KAAU9vD,MAAKggD,MAClBhgD,KAAKggD,MAAM75C,eAAe2pD,KAC5B9vD,KAAKggD,MAAM8P,GAAQuC,IAAM,MAM/BryD,KAAKwxD,0BACA1I,IACH9oD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,UAWTnN,EAAQgR,UAAUk+C,mBAAqB,WACrC,GAA2C,GAAvCpyD,KAAKgkD,UAAUb,aAAah0C,SAA0D,GAAvCnP,KAAKgkD,UAAUb,aAAaC,QAC7E,IAAK,GAAI0M,KAAU9vD,MAAKggD,MACtB,GAAIhgD,KAAKggD,MAAM75C,eAAe2pD,GAAS,CACrC,GAAIY,GAAO1wD,KAAKggD,MAAM8P,EACtB,IAAgB,MAAZY,EAAK2B,IAAa,CACpB,GAAI1J,GAAS,UAAU5zC,OAAO27C,EAAKrwD,GACnCL,MAAKsyD,QAAiB,QAAS,MAAE3J,GAAU,GAAIplD,IACtClD,GAAGsoD,EACF7J,KAAK,EACLG,MAAM,SACNC,MAAM,GACNsW,mBAAmB,SACbx1D,KAAKgkD,WACrB0M,EAAK2B,IAAMryD,KAAKsyD,QAAiB,QAAS,MAAE3J,GAC5C+H,EAAK2B,IAAIkD,aAAe7E,EAAKrwD,GAC7BqwD,EAAK+E,wBAYfvyD,EAAQgR,UAAU6pC,wBAA0B,WAC1C,IAAK,GAAI2X,KAAS/N,GACZA,EAAYxhD,eAAeuvD,KAC7BxyD,EAAQgR,UAAUwhD,GAAS/N,EAAY+N,KAQ7CxyD,EAAQgR,UAAUyhD,cAAgB,WAChC96B,QAAQtG,IAAI,mEACZv0B,KAAK41D,kBAMP1yD,EAAQgR,UAAU0hD,eAAiB,WACjC,GAAIC,KACJ,KAAK,GAAIlN,KAAU3oD,MAAK6+C,MACtB,GAAI7+C,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrC,GAAIN,GAAOroD,KAAK6+C,MAAM8J,GAClBmN,GAAkB91D,KAAK6+C,MAAMmP,OAC7B+H,GAAkB/1D,KAAK6+C,MAAMoP,QAC7BjuD,KAAK2mD,UAAUhzC,MAAMg1C,GAAQn2C,GAAKhO,KAAK+pB,MAAM85B,EAAK71C,IAAMxS,KAAK2mD,UAAUhzC,MAAMg1C,GAAQl2C,GAAKjO,KAAK+pB,MAAM85B,EAAK51C,KAC5GojD,EAAUttD,MAAMlI,GAAGsoD,EAAOn2C,EAAEhO,KAAK+pB,MAAM85B,EAAK71C,GAAGC,EAAEjO,KAAK+pB,MAAM85B,EAAK51C,GAAGqjD,eAAeA,EAAeC,eAAeA,IAIvH/1D,KAAK2mD,UAAU/wC,OAAOigD,IAMxB3yD,EAAQgR,UAAU8hD,aAAe,SAAS9/C,GACxC,GAAI2/C,KACJ,IAAYhvD,SAARqP,GACF,GAA0B,GAAtB5P,MAAMC,QAAQ2P,IAChB,IAAK,GAAIrQ,GAAI,EAAGA,EAAIqQ,EAAIlQ,OAAQH,IAC9B,GAA2BgB,SAAvB7G,KAAK6+C,MAAM3oC,EAAIrQ,IAAmB,CACpC,GAAIwiD,GAAOroD,KAAK6+C,MAAM3oC,EAAIrQ,GAC1BgwD,GAAU3/C,EAAIrQ,KAAO2M,EAAGhO,KAAK+pB,MAAM85B,EAAK71C,GAAIC,EAAGjO,KAAK+pB,MAAM85B,EAAK51C,SAKnE,IAAwB5L,SAApB7G,KAAK6+C,MAAM3oC,GAAoB,CACjC,GAAImyC,GAAOroD,KAAK6+C,MAAM3oC,EACtB2/C,GAAU3/C,IAAQ1D,EAAGhO,KAAK+pB,MAAM85B,EAAK71C,GAAIC,EAAGjO,KAAK+pB,MAAM85B,EAAK51C,SAKhE,KAAK,GAAIk2C,KAAU3oD,MAAK6+C,MACtB,GAAI7+C,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrC,GAAIN,GAAOroD,KAAK6+C,MAAM8J,EACtBkN,GAAUlN,IAAWn2C,EAAGhO,KAAK+pB,MAAM85B,EAAK71C,GAAIC,EAAGjO,KAAK+pB,MAAM85B,EAAK51C,IAIrE,MAAOojD,IAWT3yD,EAAQgR,UAAU+hD,YAAc,SAAUtN,EAAQz5C,GAChD,GAAIlP,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrB9hD,SAAZqI,IACFA,KAEF,IAAIgnD,IAAgB1jD,EAAGxS,KAAK6+C,MAAM8J,GAAQn2C,EAAGC,EAAGzS,KAAK6+C,MAAM8J,GAAQl2C,EACnEvD,GAAQ0V,SAAWsxC,EACnBhnD,EAAQinD,aAAexN,EAEvB3oD,KAAK6oB,OAAO3Z,OAGZ2rB,SAAQtG,IAAI,iCAWhBrxB,EAAQgR,UAAU2U,OAAS,SAAU3Z,GACnC,MAAgBrI,UAAZqI,OACFA,OAGwBrI,SAAtBqI,EAAQwb,SAAoCxb,EAAQwb,QAAalY,EAAG,EAAGC,EAAG,IACpD5L,SAAtBqI,EAAQwb,OAAOlY,IAA6BtD,EAAQwb,OAAOlY,EAAK,GAC1C3L,SAAtBqI,EAAQwb,OAAOjY,IAA6BvD,EAAQwb,OAAOjY,EAAK,GAC1C5L,SAAtBqI,EAAQ3K,QAAoC2K,EAAQ3K,MAAYvE,KAAKstD,aAC/CzmD,SAAtBqI,EAAQ0V,WAAoC1V,EAAQ0V,SAAY5kB,KAAK0tD,mBAC/C7mD,SAAtBqI,EAAQq6C,YAAoCr6C,EAAQq6C,WAAah5C,SAAS,IAC1ErB,EAAQq6C,aAAc,IAAsBr6C,EAAQq6C,WAAah5C,SAAS,IAC1ErB,EAAQq6C,aAAc,IAAsBr6C,EAAQq6C,cACrB1iD,SAA/BqI,EAAQq6C,UAAUh5C,WAA0BrB,EAAQq6C,UAAUh5C,SAAW,KACpC1J,SAArCqI,EAAQq6C,UAAU6M,iBAAgClnD,EAAQq6C,UAAU6M,eAAiB,qBAEzFp2D,MAAKq2D,YAAYnnD,KAcnBhM,EAAQgR,UAAUmiD,YAAc,SAAUnnD,GACxC,GAAgBrI,SAAZqI,EAEF,YADAA,KAKFlP,MAAKmuD,cACiB,GAAlBj/C,EAAQonD,SACVt2D,KAAK8kD,eAAiB51C,EAAQinD,aAC9Bn2D,KAAK+kD,mBAAqB71C,EAAQwb,QAIb,GAAnB1qB,KAAKykD,YACPzkD,KAAKu2D,kBAAkB,GAGzBv2D,KAAK0kD,YAAc1kD,KAAKstD,YACxBttD,KAAK4kD,kBAAoB5kD,KAAK0tD,kBAC9B1tD,KAAK2kD,YAAcz1C,EAAQ3K,MAI3BvE,KAAKie,UAAUje,KAAK2kD,YACpB,IAAI6R,GAAax2D,KAAKgvD,aAAax8C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,eAClG4wC,GACFjkD,EAAGgkD,EAAWhkD,EAAItD,EAAQ0V,SAASpS,EACnCC,EAAG+jD,EAAW/jD,EAAIvD,EAAQ0V,SAASnS,EAErCzS,MAAK6kD,mBACHryC,EAAGxS,KAAK4kD,kBAAkBpyC,EAAIikD,EAAmBjkD,EAAIxS,KAAK2kD,YAAcz1C,EAAQwb,OAAOlY,EACvFC,EAAGzS,KAAK4kD,kBAAkBnyC,EAAIgkD,EAAmBhkD,EAAIzS,KAAK2kD,YAAcz1C,EAAQwb,OAAOjY,GAIvD,GAA9BvD,EAAQq6C,UAAUh5C,SACO,MAAvBvQ,KAAK8kD,gBACP9kD,KAAK02D,eAAiB12D,KAAKi3B,QAC3Bj3B,KAAKi3B,QAAUj3B,KAAK22D,gBAGpB32D,KAAKie,UAAUje,KAAK2kD,aACpB3kD,KAAK6lD,gBAAgB7lD,KAAK6kD,kBAAkBryC,EAAGxS,KAAK6kD,kBAAkBpyC,GACtEzS,KAAKi3B,YAIPj3B,KAAKwkD,WAAY,EACjBxkD,KAAKskD,eAAiB,GAAKtkD,KAAKg+C,kBAAoB9uC,EAAQq6C,UAAUh5C,SAAW,OAAU,EAAIvQ,KAAKg+C,kBACpGh+C,KAAKukD,wBAA0Br1C,EAAQq6C,UAAU6M,eACjDp2D,KAAK02D,eAAiB12D,KAAKi3B,QAC3Bj3B,KAAKi3B,QAAUj3B,KAAKu2D,kBACpBv2D,KAAKi3B,UACLj3B,KAAKqQ,UAQTnN,EAAQgR,UAAUyiD,cAAgB,WAChC,GAAIT,IAAgB1jD,EAAGxS,KAAK6+C,MAAM7+C,KAAK8kD,gBAAgBtyC,EAAGC,EAAGzS,KAAK6+C,MAAM7+C,KAAK8kD,gBAAgBryC,GACzF+jD,EAAax2D,KAAKgvD,aAAax8C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,eAClG4wC,GACFjkD,EAAGgkD,EAAWhkD,EAAI0jD,EAAa1jD,EAC/BC,EAAG+jD,EAAW/jD,EAAIyjD,EAAazjD,GAE7BmyC,EAAoB5kD,KAAK0tD,kBACzB7I,GACFryC,EAAGoyC,EAAkBpyC,EAAIikD,EAAmBjkD,EAAIxS,KAAKuE,MAAQvE,KAAK+kD,mBAAmBvyC,EACrFC,EAAGmyC,EAAkBnyC,EAAIgkD,EAAmBhkD,EAAIzS,KAAKuE,MAAQvE,KAAK+kD,mBAAmBtyC,EAGvFzS,MAAK6lD,gBAAgBhB,EAAkBryC,EAAEqyC,EAAkBpyC,GAC3DzS,KAAK02D,kBAGPxzD,EAAQgR,UAAUi6C,YAAc,WACH,MAAvBnuD,KAAK8kD,iBACP9kD,KAAKi3B,QAAUj3B,KAAK02D,eACpB12D,KAAK8kD,eAAiB,KACtB9kD,KAAK+kD,mBAAqB,OAS9B7hD,EAAQgR,UAAUqiD,kBAAoB,SAAU9R,GAC9CzkD,KAAKykD,WAAaA,GAAczkD,KAAKykD,WAAazkD,KAAKskD,eACvDtkD,KAAKykD,YAAczkD,KAAKskD,cAExB,IAAIjyB,GAAW1xB,EAAK8P,gBAAgBzQ,KAAKukD,yBAAyBvkD,KAAKykD,WAEvEzkD,MAAKie,UAAUje,KAAK0kD,aAAe1kD,KAAK2kD,YAAc3kD,KAAK0kD,aAAeryB,GAC1EryB,KAAK6lD,gBACH7lD,KAAK4kD,kBAAkBpyC,GAAKxS,KAAK6kD,kBAAkBryC,EAAIxS,KAAK4kD,kBAAkBpyC,GAAK6f,EACnFryB,KAAK4kD,kBAAkBnyC,GAAKzS,KAAK6kD,kBAAkBpyC,EAAIzS,KAAK4kD,kBAAkBnyC,GAAK4f,GAGrFryB,KAAK02D,iBAGD12D,KAAKykD,YAAc,IACrBzkD,KAAKwkD,WAAY,EACjBxkD,KAAKykD,WAAa,EAEhBzkD,KAAKi3B,QADoB,MAAvBj3B,KAAK8kD,eACQ9kD,KAAK22D,cAGL32D,KAAK02D,eAEtB12D,KAAKyuB,KAAK,uBAIdvrB,EAAQgR,UAAUwiD,eAAiB,aAQnCxzD,EAAQgR,UAAUo4C,SAAW,WAC3B,OAAQtsD,KAAK+qD,WAAa/qD,KAAK+qD,UAAU6L,QAQ3C1zD,EAAQgR,UAAU+wB,SAAW,WAC3B,MAAOjlC,MAAKie,aAQd/a,EAAQgR,UAAU0hB,SAAW,WAC3B,MAAO51B,MAAKstD,aAQdpqD,EAAQgR,UAAU2iD,qBAAuB,WACvC,MAAO72D,MAAKgvD,aAAax8C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,gBAI9F3iB,EAAQgR,UAAU4iD,eAAiB,SAASnO,GAC1C,MAA2B9hD,UAAvB7G,KAAK6+C,MAAM8J,GACN3oD,KAAK6+C,MAAM8J,GAAQD,YAD5B,QAKFxlD,EAAQgR,UAAU6iD,kBAAoB,SAASpO,GAC7C,GAAIqO,KACJ,IAA2BnwD,SAAvB7G,KAAK6+C,MAAM8J,GAGb,IAAK,GAFDN,GAAOroD,KAAK6+C,MAAM8J,GAClBsO,GAAWtO,QAAS,GACf9iD,EAAI,EAAGA,EAAIwiD,EAAKrI,MAAMh6C,OAAQH,IAAK,CAC1C,GAAI6qD,GAAOrI,EAAKrI,MAAMn6C,EAClB6qD,GAAKwG,MAAQvO,EACc9hD,SAAzBowD,EAAQvG,EAAKyG,UACfH,EAASzuD,KAAKmoD,EAAKyG,QACnBF,EAAQvG,EAAKyG,SAAU,GAGlBzG,EAAKyG,QAAUxO,GACK9hD,SAAvBowD,EAAQvG,EAAKwG,QACfF,EAASzuD,KAAKmoD,EAAKwG,MACnBD,EAAQvG,EAAKwG,OAAQ,GAK7B,MAAOF,IAIT9zD,EAAQgR,UAAUkjD,iBAAmB,SAASzO,GAC5C,GAAI0O,KACJ,IAA2BxwD,SAAvB7G,KAAK6+C,MAAM8J,GAEb,IAAK,GADDN,GAAOroD,KAAK6+C,MAAM8J,GACb9iD,EAAI,EAAGA,EAAIwiD,EAAKrI,MAAMh6C,OAAQH,IACrCwxD,EAAU9uD,KAAK8/C,EAAKrI,MAAMn6C,GAAGxF,GAGjC,OAAOg3D,IAGTn0D,EAAQgR,UAAUojD,oBAAsB,SAAS/rD,GAC/C,MAAO5K,GAAKqL,WAAWT,IAIzB1L,EAAOD,QAAUsD,GAKb,SAASrD,EAAQD,EAASM,GAoB9B,QAASkD,GAAMyuD,EAAY1uD,EAASo0D,GAClC,IAAKp0D,EACH,KAAM,qBAER,IAAIwL,IAAU,QAAQ,WAClBq1C,EAAYrjD,EAAK+N,sBAAsBC,EAAO4oD,EAClDv3D,MAAKkP,QAAU80C,EAAUhE,MACzBhgD,KAAK2gD,QAAUqD,EAAUrD,QACzB3gD,KAAKkP,QAAsB,aAAIqoD,EAA+B,aAG9Dv3D,KAAKmD,QAAUA,EAGfnD,KAAKK,GAASwG,OACd7G,KAAKm3D,OAAStwD,OACd7G,KAAKk3D,KAASrwD,OACd7G,KAAKunC,MAAS1gC,OACd7G,KAAKw3D,cAAgBx3D,KAAKkP,QAAQoE,MAAQtT,KAAKkP,QAAQ+wC,yBACvDjgD,KAAKsE,MAASuC,OACd7G,KAAKumC,UAAW,EAChBvmC,KAAKgN,OAAQ,EACbhN,KAAKy3D,iBAAmBxvD,IAAI,EAAEJ,KAAK,EAAEyL,MAAM,EAAEC,OAAO,EAAEmkD,MAAM,GAC5D13D,KAAK23D,YAAa,EAClB33D,KAAK8xD,YAAa,EAElB9xD,KAAKmqB,KAAO,KACZnqB,KAAKoqB,GAAK,KACVpqB,KAAKqyD,IAAM,KAEXryD,KAAK43D,WAAa,KAClB53D,KAAK63D,SAAW,KAIhB73D,KAAK83D,kBACL93D,KAAK+3D,gBAEL/3D,KAAK2wD,WAAY,EAEjB3wD,KAAKg4D,YAAc,EACnBh4D,KAAKi4D,aAAc,EAEnBj4D,KAAK4xD,cAAcC,GAEnB7xD,KAAKk4D,qBAAsB,EAC3Bl4D,KAAKm4D,cAAgBhuC,KAAK,KAAMC,GAAG,KAAMguC,cACzCp4D,KAAKq4D,cAAgB,KAjEvB,GAAI13D,GAAOT,EAAoB,GAC3BqD,EAAOrD,EAAoB,GAwE/BkD,GAAK8Q,UAAU09C,cAAgB,SAASC,GAEtC,GADA7xD,KAAK8xD,YAAa,EACbD,EAAL,CAIA,GAAIljD,IAAU,QAAQ,WAAW,WAAW,YAAY,WAAW,kBAAkB,kBAAkB,QACrG,2BAA2B,aAAa,mBAAmB,OAAO,eAAe,iBAAkB,UACnG,wBAAwB,eAsC1B,QApCAhO,EAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAAS2iD,GAEvBhrD,SAApBgrD,EAAW1nC,OAA+BnqB,KAAKm3D,OAAStF,EAAW1nC,MACjDtjB,SAAlBgrD,EAAWznC,KAA+BpqB,KAAKk3D,KAAOrF,EAAWznC,IAE/CvjB,SAAlBgrD,EAAWxxD,KAA+BL,KAAKK,GAAKwxD,EAAWxxD,IAC1CwG,SAArBgrD,EAAW7+C,QAA+BhT,KAAKgT,MAAQ6+C,EAAW7+C,MAAOhT,KAAK23D,YAAa,GAEtE9wD,SAArBgrD,EAAWtqB,QAA6BvnC,KAAKunC,MAAQsqB,EAAWtqB,OAC3C1gC,SAArBgrD,EAAWvtD,QAA6BtE,KAAKsE,MAAQutD,EAAWvtD,OAC1CuC,SAAtBgrD,EAAW7rD,SAA6BhG,KAAK2gD,QAAQK,aAAe6Q,EAAW7rD,QAE1Da,SAArBgrD,EAAWtmD,QACbvL,KAAKkP,QAAQsxC,cAAe,EACxB7/C,EAAK8D,SAASotD,EAAWtmD,QAC3BvL,KAAKkP,QAAQ3D,MAAMA,MAAQsmD,EAAWtmD,MACtCvL,KAAKkP,QAAQ3D,MAAMwB,UAAY8kD,EAAWtmD,QAGX1E,SAA3BgrD,EAAWtmD,MAAMA,QAA0BvL,KAAKkP,QAAQ3D,MAAMA,MAAQsmD,EAAWtmD,MAAMA,OACxD1E,SAA/BgrD,EAAWtmD,MAAMwB,YAA0B/M,KAAKkP,QAAQ3D,MAAMwB,UAAY8kD,EAAWtmD,MAAMwB,WAChElG,SAA3BgrD,EAAWtmD,MAAMyB,QAA0BhN,KAAKkP,QAAQ3D,MAAMyB,MAAQ6kD,EAAWtmD,MAAMyB,SAO/FhN,KAAK0+C,UAEL1+C,KAAKg4D,WAAah4D,KAAKg4D,YAAoCnxD,SAArBgrD,EAAWv+C,MACjDtT,KAAKi4D,YAAcj4D,KAAKi4D,aAAsCpxD,SAAtBgrD,EAAW7rD,OAEnDhG,KAAKw3D,cAAgBx3D,KAAKkP,QAAQoE,MAAOtT,KAAKkP,QAAQ+wC,yBAG9CjgD,KAAKkP,QAAQxB,OACnB,IAAK,OAAiB1N,KAAK+wC,KAAO/wC,KAAKs4D,SAAW,MAClD,KAAK,QAAiBt4D,KAAK+wC,KAAO/wC,KAAKu4D,UAAY,MACnD,KAAK,eAAiBv4D,KAAK+wC,KAAO/wC,KAAKw4D,gBAAkB,MACzD,KAAK,YAAiBx4D,KAAK+wC,KAAO/wC,KAAKy4D,aAAe,MACtD,SAAsBz4D,KAAK+wC,KAAO/wC,KAAKs4D,aAQ3Cl1D,EAAK8Q,UAAUwqC,QAAU,WACvB1+C,KAAKkyD,aAELlyD,KAAKmqB,KAAOnqB,KAAKmD,QAAQ07C,MAAM7+C,KAAKm3D,SAAW,KAC/Cn3D,KAAKoqB,GAAKpqB,KAAKmD,QAAQ07C,MAAM7+C,KAAKk3D,OAAS,KAC3Cl3D,KAAK2wD,UAAa3wD,KAAKmqB,MAAQnqB,KAAKoqB,GAEhCpqB,KAAK2wD,WACP3wD,KAAKmqB,KAAKuuC,WAAW14D,MACrBA,KAAKoqB,GAAGsuC,WAAW14D,QAGfA,KAAKmqB,MACPnqB,KAAKmqB,KAAKwuC,WAAW34D,MAEnBA,KAAKoqB,IACPpqB,KAAKoqB,GAAGuuC,WAAW34D,QAQzBoD,EAAK8Q,UAAUg+C,WAAa,WACtBlyD,KAAKmqB,OACPnqB,KAAKmqB,KAAKwuC,WAAW34D,MACrBA,KAAKmqB,KAAO,MAEVnqB,KAAKoqB,KACPpqB,KAAKoqB,GAAGuuC,WAAW34D,MACnBA,KAAKoqB,GAAK,MAGZpqB,KAAK2wD,WAAY,GAQnBvtD,EAAK8Q,UAAUs8C,SAAW,WACxB,MAA6B,kBAAfxwD,MAAKunC,MAAuBvnC,KAAKunC,QAAUvnC,KAAKunC,OAQhEnkC,EAAK8Q,UAAUyB,SAAW,WACxB,MAAO3V,MAAKsE,OASdlB,EAAK8Q,UAAUu+C,cAAgB,SAAStuD,EAAKC,EAAKC,GAChD,IAAKrE,KAAKg4D,YAA6BnxD,SAAf7G,KAAKsE,MAAqB,CAChD,GAAIC,GAAQvE,KAAKkP,QAAQ0vC,sBAAsBz6C,EAAKC,EAAKC,EAAOrE,KAAKsE,OACjEs0D,EAAY54D,KAAKkP,QAAQiZ,SAAWnoB,KAAKkP,QAAQgZ,QACrDloB,MAAKkP,QAAQoE,MAAQtT,KAAKkP,QAAQgZ,SAAW3jB,EAAQq0D,EACrD54D,KAAKw3D,cAAgBx3D,KAAKkP,QAAQoE,MAAOtT,KAAKkP,QAAQ+wC,2BAU1D78C,EAAK8Q,UAAU68B,KAAO,WACpB,KAAM,uCAQR3tC,EAAK8Q,UAAUq8C,kBAAoB,SAASxsC,GAC1C,GAAI/jB,KAAK2wD,UAAW,CAClB,GAAI1gC,GAAU,GACV4oC,EAAQ74D,KAAKmqB,KAAK3X,EAClBsmD,EAAQ94D,KAAKmqB,KAAK1X,EAClBsmD,EAAM/4D,KAAKoqB,GAAG5X,EACdwmD,EAAMh5D,KAAKoqB,GAAG3X,EACdwmD,EAAOl1C,EAAIlc,KACXqxD,EAAOn1C,EAAI9b,IAEX8jB,EAAO/rB,KAAKm5D,mBAAmBN,EAAOC,EAAOC,EAAKC,EAAKC,EAAMC,EAEjE,OAAejpC,GAAPlE,EAGR,OAAO,GAIX3oB,EAAK8Q,UAAUklD,UAAY,SAASrxC,GAClC,GAAIsxC,GAAWr5D,KAAKkP,QAAQ3D,KAC5B,IAAiC,GAA7BvL,KAAKkP,QAAQuxC,aAAsB,CACrC,GACI6Y,GAAWC,EADXC,EAAMzxC,EAAI0xC,qBAAqBz5D,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,EAAGzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,EAkBhF,OAhBA6mD,GAAYt5D,KAAKmqB,KAAKjb,QAAQ3D,MAAMwB,UAAUD,OAC9CysD,EAAUv5D,KAAKoqB,GAAGlb,QAAQ3D,MAAMwB,UAAUD,OAGhB,GAAtB9M,KAAKmqB,KAAKoc,UAAyC,GAApBvmC,KAAKoqB,GAAGmc,UACzC+yB,EAAY34D,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,SAC9E+tD,EAAU54D,EAAK2K,gBAAgBtL,KAAKoqB,GAAGlb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,UAE7C,GAAtBxL,KAAKmqB,KAAKoc,UAAwC,GAApBvmC,KAAKoqB,GAAGmc,SAC7CgzB,EAAUv5D,KAAKoqB,GAAGlb,QAAQ3D,MAAMuB,OAEH,GAAtB9M,KAAKmqB,KAAKoc,UAAyC,GAApBvmC,KAAKoqB,GAAGmc,WAC9C+yB,EAAYt5D,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,QAEtC0sD,EAAIE,aAAa,EAAGJ,GACpBE,EAAIE,aAAa,EAAGH,GACbC,EAwBT,MArBIx5D,MAAK8xD,cAAe,IACW,MAA7B9xD,KAAKkP,QAAQsxC,aACf6Y,GACEtsD,UAAW/M,KAAKoqB,GAAGlb,QAAQ3D,MAAMwB,UAAUD,OAC3CE,MAAOhN,KAAKoqB,GAAGlb,QAAQ3D,MAAMyB,MAAMF,OACnCvB,MAAO5K,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,WAGvC,QAA7BxL,KAAKkP,QAAQsxC,cAAuD,GAA7BxgD,KAAKkP,QAAQsxC,gBAC3D6Y,GACEtsD,UAAW/M,KAAKmqB,KAAKjb,QAAQ3D,MAAMwB,UAAUD,OAC7CE,MAAOhN,KAAKmqB,KAAKjb,QAAQ3D,MAAMyB,MAAMF,OACrCvB,MAAO5K,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,WAG7ExL,KAAKkP,QAAQ3D,MAAQ8tD,EACrBr5D,KAAK8xD,YAAa,GAKC,GAAjB9xD,KAAKumC,SAA4B8yB,EAAStsD,UACvB,GAAd/M,KAAKgN,MAAuBqsD,EAASrsD,MACTqsD,EAAS9tD,OAWhDnI,EAAK8Q,UAAUokD,UAAY,SAASvwC,GAKlC,GAHAA,EAAIY,YAAc3oB,KAAKo5D,UAAUrxC,GACjCA,EAAIO,UAActoB,KAAK25D,gBAEnB35D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAExB,GAGIxX,GAHAy/C,EAAMryD,KAAK45D,MAAM7xC,EAIrB,IAAI/nB,KAAKgT,MAAO,CACd,GAAyC,GAArChT,KAAKkP,QAAQi0C,aAAah0C,SAA0B,MAAPkjD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAK75D,KAAKmqB,KAAK3X,EAAI6/C,EAAI7/C,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAI6/C,EAAI7/C,IAClEsnD,EAAY,IAAK,IAAK95D,KAAKmqB,KAAK1X,EAAI4/C,EAAI5/C,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAI4/C,EAAI5/C,GACtEG,IAASJ,EAAEqnD,EAAWpnD,EAAEqnD,OAGxBlnD,GAAQ5S,KAAK+5D,aAAa,GAE5B/5D,MAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,QAG3C,CACH,GAAID,GAAGC,EACH6Z,EAAStsB,KAAK2gD,QAAQK,aAAe,EACrCqH,EAAOroD,KAAKmqB,IACXk+B,GAAK/0C,OACR+0C,EAAK4R,OAAOlyC,GAEVsgC,EAAK/0C,MAAQ+0C,EAAK90C,QACpBf,EAAI61C,EAAK71C,EAAI61C,EAAK/0C,MAAQ,EAC1Bb,EAAI41C,EAAK51C,EAAI6Z,IAGb9Z,EAAI61C,EAAK71C,EAAI8Z,EACb7Z,EAAI41C,EAAK51C,EAAI41C,EAAK90C,OAAS,GAE7BvT,KAAKk6D,QAAQnyC,EAAKvV,EAAGC,EAAG6Z,GACxB1Z,EAAQ5S,KAAKm6D,eAAe3nD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,KAUhDrP,EAAK8Q,UAAUylD,cAAgB,WAC7B,MAAqB,IAAjB35D,KAAKumC,SACC/hC,KAAKJ,IAAII,KAAKL,IAAInE,KAAKw3D,cAAex3D,KAAKkP,QAAQiZ,UAAW,GAAInoB,KAAKo6D,iBAG7D,GAAdp6D,KAAKgN,MACAxI,KAAKJ,IAAII,KAAKL,IAAInE,KAAKkP,QAAQgxC,WAAYlgD,KAAKkP,QAAQiZ,UAAW,GAAInoB,KAAKo6D,iBAG5E51D,KAAKJ,IAAIpE,KAAKkP,QAAQoE,MAAO,GAAItT,KAAKo6D,kBAKnDh3D,EAAK8Q,UAAUmmD,mBAAqB,WAClC,GAAyC,GAArCr6D,KAAKkP,QAAQi0C,aAAaC,SAAwD,GAArCpjD,KAAKkP,QAAQi0C,aAAah0C,QACzE,MAAOnP,MAAKqyD,GAET,IAAyC,GAArCryD,KAAKkP,QAAQi0C,aAAah0C,QACjC,OAAQqD,EAAE,EAAEC,EAAE,EAGd,IAAI6nD,GAAO,KACPC,EAAO,KACPpR,EAASnpD,KAAKkP,QAAQi0C,aAAaE,UACnCl8C,EAAOnH,KAAKkP,QAAQi0C,aAAah8C,KACjCyY,EAAKpb,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACpCqN,EAAKrb,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACxC,IAAY,YAARtL,GAA8B,iBAARA,EACpB3C,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACjEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,GAEvB7f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,GAGzB7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,GAEvB7f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,IAGtB,YAAR1Y,IACFmzD,EAAYnR,EAAStpC,EAAdD,EAAmB5f,KAAKmqB,KAAK3X,EAAI8nD,IAGnC91D,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KACtEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,GAEvB5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,GAGzB5f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,GAEvB5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,IAGtB,YAARzY,IACFozD,EAAYpR,EAASvpC,EAAdC,EAAmB7f,KAAKmqB,KAAK1X,EAAI8nD,QAIzC,IAAY,iBAARpzD,EACH3C,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACrE6nD,EAAOt6D,KAAKmqB,KAAK3X,EAEf+nD,EADEv6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACjBzS,KAAKoqB,GAAG3X,GAAK,EAAI02C,GAAUtpC,EAG3B7f,KAAKoqB,GAAG3X,GAAK,EAAI02C,GAAUtpC,GAG7Brb,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KAExE6nD,EADEt6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EACjBxS,KAAKoqB,GAAG5X,GAAK,EAAI22C,GAAUvpC,EAG3B5f,KAAKoqB,GAAG5X,GAAK,EAAI22C,GAAUvpC,EAEpC26C,EAAOv6D,KAAKmqB,KAAK1X,OAGhB,IAAY,cAARtL,EAELmzD,EADEt6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EACjBxS,KAAKoqB,GAAG5X,GAAK,EAAI22C,GAAUvpC,EAG3B5f,KAAKoqB,GAAG5X,GAAK,EAAI22C,GAAUvpC,EAEpC26C,EAAOv6D,KAAKmqB,KAAK1X,MAEd,IAAY,YAARtL,EACPmzD,EAAOt6D,KAAKmqB,KAAK3X,EAEf+nD,EADEv6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACjBzS,KAAKoqB,GAAG3X,GAAK,EAAI02C,GAAUtpC,EAG3B7f,KAAKoqB,GAAG3X,GAAK,EAAI02C,GAAUtpC,MAGjC,IAAY,YAAR1Y,EAAoB,CAC3B,GAAIyY,GAAK5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC3BqN,EAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3B6Z,EAAS9nB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAC9B26C,EAAKh2D,KAAKgoB,GAEViuC,EAAgBj2D,KAAKk2D,MAAM76C,EAAGD,GAC9B+6C,GAAWF,GAA2B,GAATtR,EAAgB,IAAOqR,IAAO,EAAIA,EAEnEF,GAAOt6D,KAAKmqB,KAAK3X,GAAY,GAAP22C,EAAa,IAAK78B,EAAO9nB,KAAK4a,IAAIu7C,GACxDJ,EAAOv6D,KAAKmqB,KAAK1X,GAAY,GAAP02C,EAAa,IAAK78B,EAAO9nB,KAAK+a,IAAIo7C,OAErD,IAAY,aAARxzD,EAAqB,CAC5B,GAAIyY,GAAK5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC3BqN,EAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3B6Z,EAAS9nB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAC9B26C,EAAKh2D,KAAKgoB,GAEViuC,EAAgBj2D,KAAKk2D,MAAM76C,EAAGD,GAC9B+6C,GAAWF,GAA4B,IAATtR,EAAgB,IAAOqR,IAAO,EAAIA,EAEpEF,GAAOt6D,KAAKmqB,KAAK3X,GAAY,GAAP22C,EAAa,IAAK78B,EAAO9nB,KAAK4a,IAAIu7C,GACxDJ,EAAOv6D,KAAKmqB,KAAK1X,GAAY,GAAP02C,EAAa,IAAK78B,EAAO9nB,KAAK+a,IAAIo7C,OAGpDn2D,MAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,GACjEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,EAC9By6C,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,GAE/Bt6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,EAC9By6C,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,GAGjCt6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,EAC9By6C,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,GAE/Bt6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,EAC9By6C,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,IAInC91D,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KACtEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,EAC9B26C,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,GAE/Bv6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,EAC9B26C,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,GAGjCv6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,EAC9B26C,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,GAE/Bv6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,EAC9B26C,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,IAO9C,QAAQ/nD,EAAG8nD,EAAM7nD,EAAG8nD,IASxBn3D,EAAK8Q,UAAU0lD,MAAQ,SAAU7xC,GAI/B,GAFAA,EAAIa,YACJb,EAAIc,OAAO7oB,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,GACO,GAArCzS,KAAKkP,QAAQi0C,aAAah0C,QAAiB,CAC7C,GAAyC,GAArCnP,KAAKkP,QAAQi0C,aAAaC,QAAkB,CAC9C,GAAIiP,GAAMryD,KAAKq6D,oBACf,OAAa,OAAThI,EAAI7/C,GACNuV,EAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9BsV,EAAIlH,SACG,OAKPkH,EAAI6yC,iBAAiBvI,EAAI7/C,EAAE6/C,EAAI5/C,EAAEzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GACpDsV,EAAIlH,SAGGwxC,GAMT,MAFAtqC,GAAI6yC,iBAAiB56D,KAAKqyD,IAAI7/C,EAAExS,KAAKqyD,IAAI5/C,EAAEzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9DsV,EAAIlH,SACG7gB,KAAKqyD,IAMd,MAFAtqC,GAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9BsV,EAAIlH,SACG,MAYXzd,EAAK8Q,UAAUgmD,QAAU,SAAUnyC,EAAKvV,EAAGC,EAAG6Z,GAE5CvE,EAAIa,YACJb,EAAIwE,IAAI/Z,EAAGC,EAAG6Z,EAAQ,EAAG,EAAI9nB,KAAKgoB,IAAI,GACtCzE,EAAIlH,UAWNzd,EAAK8Q,UAAU8lD,OAAS,SAAUjyC,EAAKuC,EAAM9X,EAAGC,GAC9C,GAAI6X,EAAM,CACRvC,EAAIQ,MAASvoB,KAAKmqB,KAAKoc,UAAYvmC,KAAKoqB,GAAGmc,SAAY,QAAU,IACjEvmC,KAAKkP,QAAQkwC,SAAW,MAAQp/C,KAAKkP,QAAQmwC,QAC7C,IAAIqY,EAEJ,IAAuB,GAAnB13D,KAAK23D,WAAoB,CAC3B,GAAIjsB,GAAQhnC,OAAO4lB,GAAMhiB,MAAM,MAC3BuyD,EAAYnvB,EAAM1lC,OAClBo5C,EAAWn7C,OAAOjE,KAAKkP,QAAQkwC,SACnCsY,GAAQjlD,GAAK,EAAIooD,GAAa,EAAIzb,CAGlC,KAAK,GADD9rC,GAAQyU,EAAI+yC,YAAYpvB,EAAM,IAAIp4B,MAC7BzN,EAAI,EAAOg1D,EAAJh1D,EAAeA,IAAK,CAClC,GAAIyiB,GAAYP,EAAI+yC,YAAYpvB,EAAM7lC,IAAIyN,KAC1CA,GAAQgV,EAAYhV,EAAQgV,EAAYhV,EAE1C,GAAIC,GAASvT,KAAKkP,QAAQkwC,SAAWyb,EACjChzD,EAAO2K,EAAIc,EAAQ,EACnBrL,EAAMwK,EAAIc,EAAS,CAGvBvT,MAAKy3D,iBAAmBxvD,IAAIA,EAAIJ,KAAKA,EAAKyL,MAAMA,EAAMC,OAAOA,EAAOmkD,MAAMA,GAG/E,GAAIA,GAAQ13D,KAAKy3D,gBAAgBC,KAEjC3vC,GAAI6qC,OAE+B,cAA/B5yD,KAAKkP,QAAQixC,iBAChBp4B,EAAI8qC,UAAUrgD,EAAGklD,GACjB13D,KAAK+6D,yBAAyBhzC,GAC9BvV,EAAI,EACJklD,EAAQ,GAIT13D,KAAKg7D,eAAejzC,GACpB/nB,KAAKi7D,eAAelzC,EAAIvV,EAAEklD,EAAOhsB,EAAOmvB,EAAWzb,GAEnDr3B,EAAIgrC,YASL3vD,EAAK8Q,UAAU6mD,yBAA2B,SAAShzC,GAClD,GAAIlI,GAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3BmN,EAAK5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EAC3B0oD,EAAiB12D,KAAKk2D,MAAM76C,EAAID,IAGf,GAAjBs7C,GAA4B,EAALt7C,GAAYs7C,EAAiB,GAAU,EAALt7C,KAC5Ds7C,GAAkC12D,KAAKgoB,IAGxCzE,EAAIozC,OAAOD,IASZ93D,EAAK8Q,UAAU8mD,eAAiB,SAASjzC,GACxC,GAA8BlhB,SAA1B7G,KAAKkP,QAAQowC,UAAoD,OAA1Bt/C,KAAKkP,QAAQowC,UAA+C,SAA1Bt/C,KAAKkP,QAAQowC,SAAqB,CAC9Gv3B,EAAIiB,UAAYhpB,KAAKkP,QAAQowC,QAE7B,IAAI8b,GAAa,CAEoB,gBAA/Bp7D,KAAKkP,QAAQixC,eACfp4B,EAAIszC,SAAuC,IAA7Br7D,KAAKy3D,gBAAgBnkD,MAA4C,IAA9BtT,KAAKy3D,gBAAgBlkD,OAAcvT,KAAKy3D,gBAAgBnkD,MAAOtT,KAAKy3D,gBAAgBlkD,QAE/F,cAA/BvT,KAAKkP,QAAQixC,eACpBp4B,EAAIszC,SAAuC,IAA7Br7D,KAAKy3D,gBAAgBnkD,QAAetT,KAAKy3D,gBAAgBlkD,OAAS6nD,GAAap7D,KAAKy3D,gBAAgBnkD,MAAOtT,KAAKy3D,gBAAgBlkD,QAExG,cAA/BvT,KAAKkP,QAAQixC,eACpBp4B,EAAIszC,SAAuC,IAA7Br7D,KAAKy3D,gBAAgBnkD,MAAa8nD,EAAYp7D,KAAKy3D,gBAAgBnkD,MAAOtT,KAAKy3D,gBAAgBlkD,QAG7GwU,EAAIszC,SAASr7D,KAAKy3D,gBAAgB5vD,KAAM7H,KAAKy3D,gBAAgBxvD,IAAKjI,KAAKy3D,gBAAgBnkD,MAAOtT,KAAKy3D,gBAAgBlkD,UAezHnQ,EAAK8Q,UAAU+mD,eAAiB,SAASlzC,EAAKvV,EAAGklD,EAAOhsB,EAAOmvB,EAAWzb,GAMxE,GAJDr3B,EAAIiB,UAAYhpB,KAAKkP,QAAQiwC,WAAa,QAC1Cp3B,EAAIuB,UAAY,SAGoB,cAA/BtpB,KAAKkP,QAAQixC,eAAgC,CAC/C,GAAIib,GAAa,CACkB,eAA/Bp7D,KAAKkP,QAAQixC,gBACfp4B,EAAIwB,aAAe,aACnBmuC,GAAS,EAAI0D,GAEyB,cAA/Bp7D,KAAKkP,QAAQixC,gBACpBp4B,EAAIwB,aAAe,UACnBmuC,GAAS,EAAI0D,GAGbrzC,EAAIwB,aAAe,aAIrBxB,GAAIwB,aAAe,QAIjBvpB,MAAKkP,QAAQqwC,gBAAkB,IACjCx3B,EAAIO,UAActoB,KAAKkP,QAAQqwC,gBAC/Bx3B,EAAIY,YAAc3oB,KAAKkP,QAAQswC,gBAC/Bz3B,EAAIuzC,SAAc,QAErB,KAAK,GAAIz1D,GAAI,EAAOg1D,EAAJh1D,EAAeA,IACzB7F,KAAKkP,QAAQqwC,gBAAkB,GAChCx3B,EAAIwzC,WAAW7vB,EAAM7lC,GAAI2M,EAAGklD,GAEhC3vC,EAAIyB,SAASkiB,EAAM7lC,GAAI2M,EAAGklD,GAC1BA,GAAStY,GAaXh8C,EAAK8Q,UAAUukD,cAAgB,SAAS1wC,GAEtCA,EAAIY,YAAc3oB,KAAKo5D,UAAUrxC,GACjCA,EAAIO,UAAYtoB,KAAK25D,eAErB,IAAItH,GAAM,IAEV,IAAwBxrD,SAApBkhB,EAAIyzC,YAA2B,CACjCzzC,EAAI6qC,MAEJ,IAAI6I,IAAW,EAEbA,GAD+B50D,SAA7B7G,KAAKkP,QAAQmxC,KAAKr6C,QAAkDa,SAA1B7G,KAAKkP,QAAQmxC,KAAKC,KACnDtgD,KAAKkP,QAAQmxC,KAAKr6C,OAAOhG,KAAKkP,QAAQmxC,KAAKC,MAG3C,EAAE,GAIfv4B,EAAIyzC,YAAYC,GAChB1zC,EAAI2zC,eAAiB,EAGrBrJ,EAAMryD,KAAK45D,MAAM7xC,GAGjBA,EAAIyzC,aAAa,IACjBzzC,EAAI2zC,eAAiB,EACrB3zC,EAAIgrC,cAIJhrC,GAAIa,YACJb,EAAI4zC,QAAU,QACsB90D,SAAhC7G,KAAKkP,QAAQmxC,KAAKE,UAEpBx4B,EAAI6zC,WAAW57D,KAAKmqB,KAAK3X,EAAExS,KAAKmqB,KAAK1X,EAAEzS,KAAKoqB,GAAG5X,EAAExS,KAAKoqB,GAAG3X,GACpDzS,KAAKkP,QAAQmxC,KAAKr6C,OAAOhG,KAAKkP,QAAQmxC,KAAKC,IAAItgD,KAAKkP,QAAQmxC,KAAKE,UAAUvgD,KAAKkP,QAAQmxC,KAAKC,MAE9Dz5C,SAA7B7G,KAAKkP,QAAQmxC,KAAKr6C,QAAkDa,SAA1B7G,KAAKkP,QAAQmxC,KAAKC,IAEnEv4B,EAAI6zC,WAAW57D,KAAKmqB,KAAK3X,EAAExS,KAAKmqB,KAAK1X,EAAEzS,KAAKoqB,GAAG5X,EAAExS,KAAKoqB,GAAG3X,GACpDzS,KAAKkP,QAAQmxC,KAAKr6C,OAAOhG,KAAKkP,QAAQmxC,KAAKC,OAIhDv4B,EAAIc,OAAO7oB,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,GAClCsV,EAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,IAEhCsV,EAAIlH,QAIN,IAAI7gB,KAAKgT,MAAO,CACd,GAAIJ,EACJ,IAAyC,GAArC5S,KAAKkP,QAAQi0C,aAAah0C,SAA0B,MAAPkjD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAK75D,KAAKmqB,KAAK3X,EAAI6/C,EAAI7/C,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAI6/C,EAAI7/C,IAClEsnD,EAAY,IAAK,IAAK95D,KAAKmqB,KAAK1X,EAAI4/C,EAAI5/C,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAI4/C,EAAI5/C,GACtEG,IAASJ,EAAEqnD,EAAWpnD,EAAEqnD,OAGxBlnD,GAAQ5S,KAAK+5D,aAAa,GAE5B/5D,MAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,KAUhDrP,EAAK8Q,UAAU6lD,aAAe,SAAU8B,GACtC,OACErpD,GAAI,EAAIqpD,GAAc77D,KAAKmqB,KAAK3X,EAAIqpD,EAAa77D,KAAKoqB,GAAG5X,EACzDC,GAAI,EAAIopD,GAAc77D,KAAKmqB,KAAK1X,EAAIopD,EAAa77D,KAAKoqB,GAAG3X,IAa7DrP,EAAK8Q,UAAUimD,eAAiB,SAAU3nD,EAAGC,EAAG6Z,EAAQuvC,GACtD,GAAItK,GAA6B,GAApBsK,EAAa,EAAE,GAASr3D,KAAKgoB,EAC1C,QACEha,EAAGA,EAAI8Z,EAAS9nB,KAAK+a,IAAIgyC,GACzB9+C,EAAGA,EAAI6Z,EAAS9nB,KAAK4a,IAAImyC,KAW7BnuD,EAAK8Q,UAAUskD,iBAAmB,SAASzwC,GACzC,GAAInV,EAMJ,IAJAmV,EAAIY,YAAc3oB,KAAKo5D,UAAUrxC,GACjCA,EAAIiB,UAAYjB,EAAIY,YACpBZ,EAAIO,UAAYtoB,KAAK25D,gBAEjB35D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAExB,GAAIioC,GAAMryD,KAAK45D,MAAM7xC,GAEjBwpC,EAAQ/sD,KAAKk2D,MAAO16D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrExM,GAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQkxC,gBAE1D,IAAyC,GAArCpgD,KAAKkP,QAAQi0C,aAAah0C,SAA0B,MAAPkjD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAK75D,KAAKmqB,KAAK3X,EAAI6/C,EAAI7/C,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAI6/C,EAAI7/C,IAClEsnD,EAAY,IAAK,IAAK95D,KAAKmqB,KAAK1X,EAAI4/C,EAAI5/C,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAI4/C,EAAI5/C,GACtEG,IAASJ,EAAEqnD,EAAWpnD,EAAEqnD,OAGxBlnD,GAAQ5S,KAAK+5D,aAAa,GAG5BhyC,GAAI+zC,MAAMlpD,EAAMJ,EAAGI,EAAMH,EAAG8+C,EAAOvrD,GACnC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,OACPhT,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,OAG3C,CAEH,GAAID,GAAGC,EACH6Z,EAAS,IAAO9nB,KAAKJ,IAAI,IAAIpE,KAAK2gD,QAAQK,cAC1CqH,EAAOroD,KAAKmqB,IACXk+B,GAAK/0C,OACR+0C,EAAK4R,OAAOlyC,GAEVsgC,EAAK/0C,MAAQ+0C,EAAK90C,QACpBf,EAAI61C,EAAK71C,EAAiB,GAAb61C,EAAK/0C,MAClBb,EAAI41C,EAAK51C,EAAI6Z,IAGb9Z,EAAI61C,EAAK71C,EAAI8Z,EACb7Z,EAAI41C,EAAK51C,EAAkB,GAAd41C,EAAK90C,QAEpBvT,KAAKk6D,QAAQnyC,EAAKvV,EAAGC,EAAG6Z,EAGxB,IAAIilC,GAAQ,GAAM/sD,KAAKgoB,GACnBxmB,GAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQkxC,gBAC1DxtC,GAAQ5S,KAAKm6D,eAAe3nD,EAAGC,EAAG6Z,EAAQ,IAC1CvE,EAAI+zC,MAAMlpD,EAAMJ,EAAGI,EAAMH,EAAG8+C,EAAOvrD,GACnC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,QACPJ,EAAQ5S,KAAKm6D,eAAe3nD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,MAKlDrP,EAAK8Q,UAAU6nD,eAAiB,SAASxtD,GACvC,GAAI8jD,GAAMryD,KAAKq6D,qBAEX7nD,EAAIhO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGvO,KAAKmqB,KAAK3X,EAAK,EAAEjE,GAAG,EAAIA,GAAI8jD,EAAI7/C,EAAIhO,KAAKkwB,IAAInmB,EAAE,GAAGvO,KAAKoqB,GAAG5X,EAC9EC,EAAIjO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGvO,KAAKmqB,KAAK1X,EAAK,EAAElE,GAAG,EAAIA,GAAI8jD,EAAI5/C,EAAIjO,KAAKkwB,IAAInmB,EAAE,GAAGvO,KAAKoqB,GAAG3X,CAElF,QAAQD,EAAEA,EAAEC,EAAEA,IAWhBrP,EAAK8Q,UAAU8nD,oBAAsB,SAAS7xC,EAAKpC,GACjD,GAIIxB,GAAIgrC,EAAM0K,EAAkBC,EAAiBC,EAJ7C1sD,EAAgB,GAChBC,EAAY,EACZC,EAAM,EACNC,EAAO,EAEPwsD,EAAY,GACZ/T,EAAOroD,KAAKoqB,EAKhB,KAJY,GAARD,IACFk+B,EAAOroD,KAAKmqB,MAGAva,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAAwB,IAAdF,EAAMC,EAOpB,IALA2W,EAAMvmB,KAAK+7D,eAAelsD,GAC1B0hD,EAAQ/sD,KAAKk2D,MAAOrS,EAAK51C,EAAI8T,EAAI9T,EAAK41C,EAAK71C,EAAI+T,EAAI/T,GACnDypD,EAAmB5T,EAAK4T,iBAAiBl0C,EAAIwpC,GAC7C2K,EAAkB13D,KAAKgsB,KAAKhsB,KAAKkwB,IAAInO,EAAI/T,EAAE61C,EAAK71C,EAAE,GAAKhO,KAAKkwB,IAAInO,EAAI9T,EAAE41C,EAAK51C,EAAE,IAC7E0pD,EAAaF,EAAmBC,EAC5B13D,KAAKknB,IAAIywC,GAAcC,EACzB,KAEoB,GAAbD,EACK,GAARhyC,EACFxa,EAAME,EAGND,EAAOC,EAIG,GAARsa,EACFva,EAAOC,EAGPF,EAAME,EAIVH,IAIF,MAFA6W,GAAIhY,EAAIsB,EAED0W,GAUTnjB,EAAK8Q,UAAUqkD,WAAa,SAASxwC,GAEnCA,EAAIY,YAAc3oB,KAAKo5D,UAAUrxC,GACjCA,EAAIiB,UAAYjB,EAAIY,YACpBZ,EAAIO,UAAYtoB,KAAK25D,eAGrB,IAAIpI,GAAOvrD,EAAQq2D,CAGnB,IAAIr8D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAKxB,GAHApqB,KAAK45D,MAAM7xC,GAG8B,GAArC/nB,KAAKkP,QAAQi0C,aAAah0C,QAAiB,CAC7C,GAAIkjD,GAAMryD,KAAKq6D,oBACfgC,GAAWr8D,KAAKg8D,qBAAoB,EAAOj0C,EAC3C,IAAIu0C,GAAWt8D,KAAK+7D,eAAev3D,KAAKJ,IAAI,EAAKi4D,EAAS9tD,EAAI,IAC9DgjD,GAAQ/sD,KAAKk2D,MAAO2B,EAAS5pD,EAAI6pD,EAAS7pD,EAAK4pD,EAAS7pD,EAAI8pD,EAAS9pD,OAElE,CACH++C,EAAQ/sD,KAAKk2D,MAAO16D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EACrE,IAAIoN,GAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5B8pD,EAAoB/3D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAC7C28C,EAAex8D,KAAKoqB,GAAG6xC,iBAAiBl0C,EAAKwpC,GAC7CkL,GAAiBF,EAAoBC,GAAgBD,CAEzDF,MACAA,EAAS7pD,GAAK,EAAIiqD,GAAiBz8D,KAAKmqB,KAAK3X,EAAIiqD,EAAgBz8D,KAAKoqB,GAAG5X,EACzE6pD,EAAS5pD,GAAK,EAAIgqD,GAAiBz8D,KAAKmqB,KAAK1X,EAAIgqD,EAAgBz8D,KAAKoqB,GAAG3X,EAU3E,GANAzM,GAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQkxC,iBACtDr4B,EAAI+zC,MAAMO,EAAS7pD,EAAE6pD,EAAS5pD,EAAG8+C,EAAOvrD,GACxC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,MAAO,CACd,GAAIJ,EAEFA,GADuC,GAArC5S,KAAKkP,QAAQi0C,aAAah0C,SAA0B,MAAPkjD,EACvCryD,KAAK+7D,eAAe,IAGpB/7D,KAAK+5D,aAAa,IAE5B/5D,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,QAG3C,CAEH,GACID,GAAGC,EAAGqpD,EADNzT,EAAOroD,KAAKmqB,KAEZmC,EAAS,IAAO9nB,KAAKJ,IAAI,IAAIpE,KAAK2gD,QAAQK,aACzCqH,GAAK/0C,OACR+0C,EAAK4R,OAAOlyC,GAEVsgC,EAAK/0C,MAAQ+0C,EAAK90C,QACpBf,EAAI61C,EAAK71C,EAAiB,GAAb61C,EAAK/0C,MAClBb,EAAI41C,EAAK51C,EAAI6Z,EACbwvC,GACEtpD,EAAGA,EACHC,EAAG41C,EAAK51C,EACR8+C,MAAO,GAAM/sD,KAAKgoB,MAIpBha,EAAI61C,EAAK71C,EAAI8Z,EACb7Z,EAAI41C,EAAK51C,EAAkB,GAAd41C,EAAK90C,OAClBuoD,GACEtpD,EAAG61C,EAAK71C,EACRC,EAAGA,EACH8+C,MAAO,GAAM/sD,KAAKgoB,KAGtBzE,EAAIa,YAEJb,EAAIwE,IAAI/Z,EAAGC,EAAG6Z,EAAQ,EAAG,EAAI9nB,KAAKgoB,IAAI,GACtCzE,EAAIlH,QAGJ,IAAI7a,IAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQkxC,gBAC1Dr4B,GAAI+zC,MAAMA,EAAMtpD,EAAGspD,EAAMrpD,EAAGqpD,EAAMvK,MAAOvrD,GACzC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,QACPJ,EAAQ5S,KAAKm6D,eAAe3nD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,MAiBlDrP,EAAK8Q,UAAUilD,mBAAqB,SAAUuD,EAAGC,EAAIC,EAAGC,EAAIC,EAAGC,GAC7D,GAAIjzD,GAAc,CAClB,IAAI9J,KAAKmqB,MAAQnqB,KAAKoqB,GACpB,GAAyC,GAArCpqB,KAAKkP,QAAQi0C,aAAah0C,QAAiB,CAC7C,GAAImrD,GAAMC,CACV,IAAyC,GAArCv6D,KAAKkP,QAAQi0C,aAAah0C,SAAwD,GAArCnP,KAAKkP,QAAQi0C,aAAaC,QACzEkX,EAAOt6D,KAAKqyD,IAAI7/C,EAChB+nD,EAAOv6D,KAAKqyD,IAAI5/C,MAEb,CACH,GAAI4/C,GAAMryD,KAAKq6D,oBACfC,GAAOjI,EAAI7/C,EACX+nD,EAAOlI,EAAI5/C,EAEb,GACIkU,GACA9gB,EAAE0I,EAAEiE,EAAEC,EAAGuqD,EAAOC,EAFhBC,EAAc,GAGlB,KAAKr3D,EAAI,EAAO,GAAJA,EAAQA,IAClB0I,EAAI,GAAI1I,EACR2M,EAAIhO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGmuD,EAAM,EAAEnuD,GAAG,EAAIA,GAAI+rD,EAAO91D,KAAKkwB,IAAInmB,EAAE,GAAGquD,EAC5DnqD,EAAIjO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGouD,EAAM,EAAEpuD,GAAG,EAAIA,GAAIgsD,EAAO/1D,KAAKkwB,IAAInmB,EAAE,GAAGsuD,EACxDh3D,EAAI,IACN8gB,EAAW3mB,KAAKm9D,mBAAmBH,EAAMC,EAAMzqD,EAAEC,EAAGqqD,EAAGC,GACvDG,EAAyBA,EAAXv2C,EAAyBA,EAAWu2C,GAEpDF,EAAQxqD,EAAGyqD,EAAQxqD,CAErB3I,GAAcozD,MAGdpzD,GAAc9J,KAAKm9D,mBAAmBT,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,OAGpD,CACH,GAAIvqD,GAAGC,EAAGmN,EAAIC,EACVyM,EAAS,IAAOtsB,KAAK2gD,QAAQK,aAC7BqH,EAAOroD,KAAKmqB,IACZk+B,GAAK/0C,MAAQ+0C,EAAK90C,QACpBf,EAAI61C,EAAK71C,EAAI,GAAM61C,EAAK/0C,MACxBb,EAAI41C,EAAK51C,EAAI6Z,IAGb9Z,EAAI61C,EAAK71C,EAAI8Z,EACb7Z,EAAI41C,EAAK51C,EAAI,GAAM41C,EAAK90C,QAE1BqM,EAAKpN,EAAIsqD,EACTj9C,EAAKpN,EAAIsqD,EACTjzD,EAActF,KAAKknB,IAAIlnB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAAMyM,GAGpD,MAAItsB,MAAKy3D,gBAAgB5vD,KAAOi1D,GAC9B98D,KAAKy3D,gBAAgB5vD,KAAO7H,KAAKy3D,gBAAgBnkD,MAAQwpD,GACzD98D,KAAKy3D,gBAAgBxvD,IAAM80D,GAC3B/8D,KAAKy3D,gBAAgBxvD,IAAMjI,KAAKy3D,gBAAgBlkD,OAASwpD,EAClD,EAGAjzD,GAIX1G,EAAK8Q,UAAUipD,mBAAqB,SAAST,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GAC1D,GAAIK,GAAKR,EAAGF,EACVW,EAAKR,EAAGF,EACRW,EAAYF,EAAGA,EAAKC,EAAGA,EACvBE,IAAOT,EAAKJ,GAAMU,GAAML,EAAKJ,GAAMU,GAAMC,CAEvCC,GAAI,EACNA,EAAI,EAEO,EAAJA,IACPA,EAAI,EAGN,IAAI/qD,GAAIkqD,EAAKa,EAAIH,EACf3qD,EAAIkqD,EAAKY,EAAIF,EACbz9C,EAAKpN,EAAIsqD,EACTj9C,EAAKpN,EAAIsqD,CAQX,OAAOv4D,MAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,IAQ9Bzc,EAAK8Q,UAAU+wB,SAAW,SAAS1gC,GACjCvE,KAAKo6D,gBAAkB,EAAI71D,GAI7BnB,EAAK8Q,UAAUyyB,OAAS,WACtB3mC,KAAKumC,UAAW,GAGlBnjC,EAAK8Q,UAAU0yB,SAAW,WACxB5mC,KAAKumC,UAAW,GAGlBnjC,EAAK8Q,UAAUuhD,mBAAqB,WACjB,OAAbz1D,KAAKqyD,KAA8B,OAAdryD,KAAKmqB,MAA6B,OAAZnqB,KAAKoqB,IAClDpqB,KAAKqyD,IAAI7/C,EAAI,IAAOxS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAC1CxS,KAAKqyD,IAAI5/C,EAAI,IAAOzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IAEtB,OAAbzS,KAAKqyD,MACZryD,KAAKqyD,IAAI7/C,EAAI,EACbxS,KAAKqyD,IAAI5/C,EAAI,IASjBrP,EAAK8Q,UAAUs/C,kBAAoB,SAASzrC,GAC1C,GAAgC,GAA5B/nB,KAAKk4D,oBAA6B,CACpC,GAA+B,OAA3Bl4D,KAAKm4D,aAAahuC,MAA0C,OAAzBnqB,KAAKm4D,aAAa/tC,GAAa,CACpE,GAAIozC,GAAa,cAAczoD,OAAO/U,KAAKK,IACvCo9D,EAAW,YAAY1oD,OAAO/U,KAAKK,IACnC2jD,GACYnF,OAAOnsC,MAAM,GAAI4Z,OAAO,EAAGtL,YAAY,EAAG++B,oBAAqB,GAC/DY,SAASO,QAAQ,GACjBI,YAAac,sBAAuB,EAAGD,aAAc7uC,MAAM,EAAGC,OAAQ,EAAG+Y,OAAO,IAEhGtsB,MAAKm4D,aAAahuC,KAAO,GAAI5mB,IAC1BlD,GAAGm9D,EACFve,MAAM,MACJ1zC,OAAOsB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAClEm3C,GACVhkD,KAAKm4D,aAAa/tC,GAAK,GAAI7mB,IACxBlD,GAAGo9D,EACFxe,MAAM,MACN1zC,OAAOsB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAChEm3C,GAGZhkD,KAAKm4D,aAAaC,aACqB,GAAnCp4D,KAAKm4D,aAAahuC,KAAKoc,WACzBvmC,KAAKm4D,aAAaC,UAAUjuC,KAAOnqB,KAAK09D,2BAA2B31C,GACnE/nB,KAAKm4D,aAAahuC,KAAK3X,EAAIxS,KAAKm4D,aAAaC,UAAUjuC,KAAK3X,EAC5DxS,KAAKm4D,aAAahuC,KAAK1X,EAAIzS,KAAKm4D,aAAaC,UAAUjuC,KAAK1X,GAEzB,GAAjCzS,KAAKm4D,aAAa/tC,GAAGmc,WACvBvmC,KAAKm4D,aAAaC,UAAUhuC,GAAKpqB,KAAK29D,yBAAyB51C,GAC/D/nB,KAAKm4D,aAAa/tC,GAAG5X,EAAIxS,KAAKm4D,aAAaC,UAAUhuC,GAAG5X,EACxDxS,KAAKm4D,aAAa/tC,GAAG3X,EAAIzS,KAAKm4D,aAAaC,UAAUhuC,GAAG3X,GAG1DzS,KAAKm4D,aAAahuC,KAAK4mB,KAAKhpB,GAC5B/nB,KAAKm4D,aAAa/tC,GAAG2mB,KAAKhpB,OAG1B/nB,MAAKm4D,cAAgBhuC,KAAK,KAAMC,GAAG,KAAMguC,eAQ7Ch1D,EAAK8Q,UAAU0pD,oBAAsB,WACnC59D,KAAK43D,WAAa53D,KAAKmqB,KACvBnqB,KAAK63D,SAAW73D,KAAKoqB,GACrBpqB,KAAKk4D,qBAAsB,GAO7B90D,EAAK8Q,UAAU2pD,qBAAuB,WACpC79D,KAAKm3D,OAASn3D,KAAKmqB,KAAK9pB,GACxBL,KAAKk3D,KAAOl3D,KAAKoqB,GAAG/pB,GAChBL,KAAKm3D,QAAUn3D,KAAK43D,WAAWv3D,GACjCL,KAAK43D,WAAWe,WAAW34D,MAEpBA,KAAKk3D,MAAQl3D,KAAK63D,SAASx3D,IAClCL,KAAK63D,SAASc,WAAW34D,MAG3BA,KAAK43D,WAAa,KAClB53D,KAAK63D,SAAW,KAChB73D,KAAKk4D,qBAAsB,GAW7B90D,EAAK8Q,UAAU4pD,wBAA0B,SAAStrD,EAAEC,GAClD,GAAI2lD,GAAYp4D,KAAKm4D,aAAaC,UAC9B2F,EAAev5D,KAAKgsB,KAAKhsB,KAAKkwB,IAAIliB,EAAI4lD,EAAUjuC,KAAK3X,EAAE,GAAKhO,KAAKkwB,IAAIjiB,EAAI2lD,EAAUjuC,KAAK1X,EAAE,IAC1FurD,EAAex5D,KAAKgsB,KAAKhsB,KAAKkwB,IAAIliB,EAAI4lD,EAAUhuC,GAAG5X,EAAI,GAAKhO,KAAKkwB,IAAIjiB,EAAI2lD,EAAUhuC,GAAG3X,EAAI,GAE9F,OAAmB,IAAfsrD,GACF/9D,KAAKq4D,cAAgBr4D,KAAKmqB,KAC1BnqB,KAAKmqB,KAAOnqB,KAAKm4D,aAAahuC,KACvBnqB,KAAKm4D,aAAahuC,MAEL,GAAb6zC,GACPh+D,KAAKq4D,cAAgBr4D,KAAKoqB,GAC1BpqB,KAAKoqB,GAAKpqB,KAAKm4D,aAAa/tC,GACrBpqB,KAAKm4D,aAAa/tC,IAGlB,MASXhnB,EAAK8Q,UAAU+pD,qBAAuB,WACG,GAAnCj+D,KAAKm4D,aAAahuC,KAAKoc,UACzBvmC,KAAKmqB,KAAOnqB,KAAKq4D,cACjBr4D,KAAKq4D,cAAgB,KACrBr4D,KAAKm4D,aAAahuC,KAAKyc,YAEiB,GAAjC5mC,KAAKm4D,aAAa/tC,GAAGmc,WAC5BvmC,KAAKoqB,GAAKpqB,KAAKq4D,cACfr4D,KAAKq4D,cAAgB,KACrBr4D,KAAKm4D,aAAa/tC,GAAGwc,aAUzBxjC,EAAK8Q,UAAUwpD,2BAA6B,SAAS31C,GAEnD,GAAIm2C,EACJ,IAAyC,GAArCl+D,KAAKkP,QAAQi0C,aAAah0C,QAC5B+uD,EAAqBl+D,KAAKg8D,qBAAoB,EAAMj0C,OAEjD,CACH,GAAIwpC,GAAQ/sD,KAAKk2D,MAAO16D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrEoN,EAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5B8pD,EAAoB/3D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAE7Cs+C,EAAiBn+D,KAAKmqB,KAAK8xC,iBAAiBl0C,EAAKwpC,EAAQ/sD,KAAKgoB,IAC9D4xC,GAAmB7B,EAAoB4B,GAAkB5B,CAC7D2B,MACAA,EAAmB1rD,EAAI,EAAoBxS,KAAKmqB,KAAK3X,GAAK,EAAI4rD,GAAmBp+D,KAAKoqB,GAAG5X,EACzF0rD,EAAmBzrD,EAAI,EAAoBzS,KAAKmqB,KAAK1X,GAAK,EAAI2rD,GAAmBp+D,KAAKoqB,GAAG3X,EAG3F,MAAOyrD,IAST96D,EAAK8Q,UAAUypD,yBAA2B,SAAS51C,GAEjD,GAAuBs2C,EACvB,IAAyC,GAArCr+D,KAAKkP,QAAQi0C,aAAah0C,QAC5BkvD,EAAmBr+D,KAAKg8D,qBAAoB,EAAOj0C,OAEhD,CACH,GAAIwpC,GAAQ/sD,KAAKk2D,MAAO16D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrEoN,EAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5B8pD,EAAoB/3D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAC7C28C,EAAex8D,KAAKoqB,GAAG6xC,iBAAiBl0C,EAAKwpC,GAC7CkL,GAAiBF,EAAoBC,GAAgBD,CAEzD8B,MACAA,EAAiB7rD,GAAK,EAAIiqD,GAAiBz8D,KAAKmqB,KAAK3X,EAAIiqD,EAAgBz8D,KAAKoqB,GAAG5X,EACjF6rD,EAAiB5rD,GAAK,EAAIgqD,GAAiBz8D,KAAKmqB,KAAK1X,EAAIgqD,EAAgBz8D,KAAKoqB,GAAG3X,EAGnF,MAAO4rD,IAGTx+D,EAAOD,QAAUwD,GAIb,SAASvD,EAAQD,EAASM,GAQ9B,QAASmD,KACPrD,KAAKwX,QACLxX,KAAKs+D,aAAe,EACpBt+D,KAAKu+D,eACLv+D,KAAKw+D,WAAa,EAClBx+D,KAAK+jD,kBAAmB,EAXf7jD,EAAoB,EAkB/BmD,GAAOo7D,UACJ3xD,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index f8759b40..c385c14a 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -4,7 +4,7 @@ * * A dynamic, browser-based visualization library. * - * @version 3.10.1-SNAPSHOT + * @version 3.11.0 * @date 2015-03-05 * * @license @@ -33,7 +33,7 @@ for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnPropert },s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=M.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=M.DELIMITER);var i=E+n();if(C[i])return N=M.DELIMITER,k=i,o(),void o();if(C[E])return N=M.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=M.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=M.IDENTIFIER)}for(N=M.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==M.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=M.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=M.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==M.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=M.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=M.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=M.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),S(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=M.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Mi===!1&&(Mi=!0,Ce.updateOffset(this),Mi=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Si={},Di=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Mi=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=D(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Di.length-1;Oe>=0;--Oe)I(Di[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:M(1,"add"),subtract:M(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Se(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Se(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&De(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Me(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t) -}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); +}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +var e=this;this.boundFunction=e._createManipulatorBar,this.on("select",this.boundFunction)}else{for(;this.editModeDiv.hasChildNodes();)this.editModeDiv.removeChild(this.editModeDiv.firstChild);this.manipulationDOM.editModeSpan=document.createElement("div"),this.manipulationDOM.editModeSpan.className="network-manipulationUI edit editmode",this.manipulationDOM.editModeLabelSpan=document.createElement("div"),this.manipulationDOM.editModeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editModeLabelSpan.innerHTML=t.edit,this.manipulationDOM.editModeSpan.appendChild(this.manipulationDOM.editModeLabelSpan),this.editModeDiv.appendChild(this.manipulationDOM.editModeSpan),this._bindHammerToDiv(this.manipulationDOM.editModeSpan,"_toggleEditMode")}},e._bindHammerToDiv=function(t,e){var i=r(t,{prevent_default:!0});i.on("touch",this[e].bind(this)),this.manipulationHammers.push(i)},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.addDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar");var e=this;this.boundFunction=e._addNode,this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation(!0),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.edgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar");var e=this;this.boundFunction=e._handleConnect,this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this.cachedFunctions._handleOnHold=this._handleOnHold,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleOnHold=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.editEdgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar"),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation(!0)),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!==e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation(!1),this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=70},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/package.json b/package.json index 79b25b9e..e64c3f01 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vis", - "version": "3.10.1-SNAPSHOT", + "version": "3.11.0", "description": "A dynamic, browser-based visualization library.", "homepage": "http://visjs.org/", "repository": { From 91ff9345023b93c4c971deb04d98791d7d9ee420 Mon Sep 17 00:00:00 2001 From: jos Date: Mon, 9 Mar 2015 11:27:02 +0100 Subject: [PATCH 23/43] Updated version number to 3.11.1-SNAPSHOT --- bower.json | 2 +- dist/vis.js | 16810 +++++++++++++++++++-------------------- dist/vis.map | 2 +- dist/vis.min.js | 22 +- misc/how_to_publish.md | 2 +- package.json | 2 +- 6 files changed, 8420 insertions(+), 8420 deletions(-) diff --git a/bower.json b/bower.json index 588d3f2c..785c3f9b 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "vis", - "version": "3.11.0", + "version": "3.11.1-SNAPSHOT", "main": ["dist/vis.min.js", "dist/vis.min.css"], "description": "A dynamic, browser-based visualization library.", "homepage": "http://visjs.org/", diff --git a/dist/vis.js b/dist/vis.js index b42c66a1..70b66a7c 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -4,8 +4,8 @@ * * A dynamic, browser-based visualization library. * - * @version 3.11.0 - * @date 2015-03-05 + * @version 3.11.1-SNAPSHOT + * @date 2015-03-09 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -3235,7 +3235,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 6 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(56); + var Emitter = __webpack_require__(66); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var util = __webpack_require__(1); @@ -6490,7 +6490,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 13 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(56); + var Emitter = __webpack_require__(66); var Hammer = __webpack_require__(45); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); @@ -6879,7 +6879,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 14 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(56); + var Emitter = __webpack_require__(66); var Hammer = __webpack_require__(45); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); @@ -15825,9 +15825,9 @@ return /******/ (function(modules) { // webpackBootstrap /* 36 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(56); + var Emitter = __webpack_require__(66); var Hammer = __webpack_require__(45); - var keycharm = __webpack_require__(57); + var keycharm = __webpack_require__(56); var util = __webpack_require__(1); var hammerUtil = __webpack_require__(47); var DataSet = __webpack_require__(3); @@ -22699,7 +22699,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(58); + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(65); /***/ }, @@ -22709,7 +22709,7 @@ return /******/ (function(modules) { // webpackBootstrap // Only load hammer.js when in a browser environment // (loading hammer.js in a node.js environment gives errors) if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(59); + module.exports = window['Hammer'] || __webpack_require__(64); } else { module.exports = function () { @@ -22722,7 +22722,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 46 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(56); + var Emitter = __webpack_require__(66); var Hammer = __webpack_require__(45); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); @@ -24289,13 +24289,13 @@ return /******/ (function(modules) { // webpackBootstrap /* 52 */ /***/ function(module, exports, __webpack_require__) { - var PhysicsMixin = __webpack_require__(60); - var ClusterMixin = __webpack_require__(61); - var SectorsMixin = __webpack_require__(62); - var SelectionMixin = __webpack_require__(63); - var ManipulationMixin = __webpack_require__(64); - var NavigationMixin = __webpack_require__(65); - var HierarchicalLayoutMixin = __webpack_require__(66); + var PhysicsMixin = __webpack_require__(57); + var ClusterMixin = __webpack_require__(58); + var SectorsMixin = __webpack_require__(59); + var SelectionMixin = __webpack_require__(60); + var ManipulationMixin = __webpack_require__(61); + var NavigationMixin = __webpack_require__(62); + var HierarchicalLayoutMixin = __webpack_require__(63); /** * Load a mixin into the network object @@ -24493,8 +24493,8 @@ return /******/ (function(modules) { // webpackBootstrap /* 53 */ /***/ function(module, exports, __webpack_require__) { - var keycharm = __webpack_require__(57); - var Emitter = __webpack_require__(56); + var keycharm = __webpack_require__(56); + var Emitter = __webpack_require__(66); var Hammer = __webpack_require__(45); var util = __webpack_require__(1); @@ -24922,176 +24922,6 @@ return /******/ (function(modules) { // webpackBootstrap /* 56 */ /***/ function(module, exports, __webpack_require__) { - - /** - * Expose `Emitter`. - */ - - module.exports = Emitter; - - /** - * Initialize a new `Emitter`. - * - * @api public - */ - - function Emitter(obj) { - if (obj) return mixin(obj); - }; - - /** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - - function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - return obj; - } - - /** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.on = - Emitter.prototype.addEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks[event] = this._callbacks[event] || []) - .push(fn); - return this; - }; - - /** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.once = function(event, fn){ - var self = this; - this._callbacks = this._callbacks || {}; - - function on() { - self.off(event, on); - fn.apply(this, arguments); - } - - on.fn = fn; - this.on(event, on); - return this; - }; - - /** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.off = - Emitter.prototype.removeListener = - Emitter.prototype.removeAllListeners = - Emitter.prototype.removeEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; - } - - // specific event - var callbacks = this._callbacks[event]; - if (!callbacks) return this; - - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks[event]; - return this; - } - - // remove specific handler - var cb; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; - } - } - return this; - }; - - /** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} - */ - - Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - var args = [].slice.call(arguments, 1) - , callbacks = this._callbacks[event]; - - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } - } - - return this; - }; - - /** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public - */ - - Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks[event] || []; - }; - - /** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public - */ - - Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; - }; - - -/***/ }, -/* 57 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; /** * Created by Alex on 11/6/2014. @@ -25288,9664 +25118,9834 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 58 */ +/* 57 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.9.0 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com + var util = __webpack_require__(1); + var RepulsionMixin = __webpack_require__(67); + var HierarchialRepulsionMixin = __webpack_require__(68); + var BarnesHutMixin = __webpack_require__(69); - (function (undefined) { - /************************************ - Constants - ************************************/ + /** + * Toggling barnes Hut calculation on and off. + * + * @private + */ + exports._toggleBarnesHut = function () { + this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; + this._loadSelectedForceSolver(); + this.moving = true; + this.start(); + }; - var moment, - VERSION = '2.9.0', - // the global-scope this is NOT the global object in Node.js - globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, - oldGlobalMoment, - round = Math.round, - hasOwnProperty = Object.prototype.hasOwnProperty, - i, - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, + /** + * This loads the node force solver based on the barnes hut or repulsion algorithm + * + * @private + */ + exports._loadSelectedForceSolver = function () { + // this overloads the this._calculateNodeForces + if (this.constants.physics.barnesHut.enabled == true) { + this._clearMixin(RepulsionMixin); + this._clearMixin(HierarchialRepulsionMixin); - // internal storage for locale config files - locales = {}, + this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity; + this.constants.physics.springLength = this.constants.physics.barnesHut.springLength; + this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant; + this.constants.physics.damping = this.constants.physics.barnesHut.damping; - // extra moment internal properties (plugins register props here) - momentProperties = [], + this._loadMixin(BarnesHutMixin); + } + else if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._clearMixin(BarnesHutMixin); + this._clearMixin(RepulsionMixin); - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module && module.exports), + this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity; + this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength; + this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant; + this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping; - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + this._loadMixin(HierarchialRepulsionMixin); + } + else { + this._clearMixin(BarnesHutMixin); + this._clearMixin(HierarchialRepulsionMixin); + this.barnesHutTree = undefined; - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity; + this.constants.physics.springLength = this.constants.physics.repulsion.springLength; + this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant; + this.constants.physics.damping = this.constants.physics.repulsion.damping; - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, + this._loadMixin(RepulsionMixin); + } + }; - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + /** + * Before calculating the forces, we check if we need to cluster to keep up performance and we check + * if there is more than one node. If it is just one node, we dont calculate anything. + * + * @private + */ + exports._initializeForceCalculation = function () { + // stop calculation if there is only one node + if (this.nodeIndices.length == 1) { + this.nodes[this.nodeIndices[0]]._setForce(0, 0); + } + else { + // if there are too many nodes on screen, we cluster without repositioning + if (this.nodeIndices.length > this.constants.clustering.clusterThreshold && this.constants.clustering.enabled == true) { + this.clusterToFit(this.constants.clustering.reduceToNodes, false); + } - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + // we now start the force calculation + this._calculateForces(); + } + }; - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + /** + * Calculate the external forces acting on the nodes + * Forces are caused by: edges, repulsing forces between nodes, gravity + * @private + */ + exports._calculateForces = function () { + // Gravity is required to keep separated groups from floating off + // the forces are reset to zero in this loop by using _setForce instead + // of _addForce - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], + this._calculateGravitationalForces(); + this._calculateNodeForces(); - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], + if (this.constants.physics.springConstant > 0) { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this._calculateSpringForcesWithSupport(); + } + else { + if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._calculateHierarchicalSpringForces(); + } + else { + this._calculateSpringForces(); + } + } + } + }; - // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, + /** + * Smooth curves are created by adding invisible nodes in the center of the edges. These nodes are also + * handled in the calculateForces function. We then use a quadratic curve with the center node as control. + * This function joins the datanodes and invisible (called support) nodes into one object. + * We do this so we do not contaminate this.nodes with the support nodes. + * + * @private + */ + exports._updateCalculationNodes = function () { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this.calculationNodes = {}; + this.calculationNodeIndices = []; - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.calculationNodes[nodeId] = this.nodes[nodeId]; + } + } + var supportNodes = this.sectors['support']['nodes']; + for (var supportNodeId in supportNodes) { + if (supportNodes.hasOwnProperty(supportNodeId)) { + if (this.edges.hasOwnProperty(supportNodes[supportNodeId].parentEdgeId)) { + this.calculationNodes[supportNodeId] = supportNodes[supportNodeId]; + } + else { + supportNodes[supportNodeId]._setForce(0, 0); + } + } + } - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, + for (var idx in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(idx)) { + this.calculationNodeIndices.push(idx); + } + } + } + else { + this.calculationNodes = this.nodes; + this.calculationNodeIndices = this.nodeIndices; + } + }; - // format function strings - formatFunctions = {}, - // default relative time thresholds - relativeTimeThresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }, + /** + * this function applies the central gravity effect to keep groups from floating off + * + * @private + */ + exports._calculateGravitationalForces = function () { + var dx, dy, distance, node, i; + var nodes = this.calculationNodes; + var gravity = this.constants.physics.centralGravity; + var gravityForce = 0; - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), + for (i = 0; i < this.calculationNodeIndices.length; i++) { + node = nodes[this.calculationNodeIndices[i]]; + node.damping = this.constants.physics.damping; // possibly add function to alter damping properties of clusters. + // gravity does not apply when we are in a pocket sector + if (this._sector() == "default" && gravity != 0) { + dx = -node.x; + dy = -node.y; + distance = Math.sqrt(dx * dx + dy * dy); - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.localeData().monthsShort(this, format); - }, - MMMM : function (format) { - return this.localeData().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.localeData().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.localeData().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.localeData().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - x : function () { - return this.valueOf(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); - } - }, + gravityForce = (distance == 0) ? 0 : (gravity / distance); + node.fx = dx * gravityForce; + node.fy = dy * gravityForce; + } + else { + node.fx = 0; + node.fy = 0; + } + } + }; - deprecations = {}, - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], - updateInProgress = false; - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error('Implement me'); - } - } + /** + * this function calculates the effects of the springs in the case of unsmooth curves. + * + * @private + */ + exports._calculateSpringForces = function () { + var edgeLength, edge, edgeId; + var dx, dy, fx, fy, springForce, distance; + var edges = this.edges; - function hasOwnProp(a, b) { - return hasOwnProperty.call(a, b); - } + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + edgeLength = edge.physics.springLength; + // this implies that the edges between big clusters are longer + edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; - function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; - } + dx = (edge.from.x - edge.to.x); + dy = (edge.from.y - edge.to.y); + distance = Math.sqrt(dx * dx + dy * dy); - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } + if (distance == 0) { + distance = 0.01; + } - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; + fx = dx * springForce; + fy = dy * springForce; + + edge.from.fx += fx; + edge.from.fy += fy; + edge.to.fx -= fx; + edge.to.fy -= fy; } + } } + } + }; - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.localeData().ordinal(func.call(this, a), period); - }; - } - function monthDiff(a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } - return -(wholeMonthDiff + adjust); - } + /** + * This function calculates the springforces on the nodes, accounting for the support nodes. + * + * @private + */ + exports._calculateSpringForcesWithSupport = function () { + var edgeLength, edge, edgeId, combinedClusterSize; + var edges = this.edges; - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); - } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); - } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + if (edge.via != null) { + var node1 = edge.to; + var node2 = edge.via; + var node3 = edge.from; + edgeLength = edge.physics.springLength; - function meridiemFixWrap(locale, hour, meridiem) { - var isPm; + combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // thie is not supposed to happen - return hour; + // this implies that the edges between big clusters are longer + edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth; + this._calculateSpringForce(node1, node2, 0.5 * edgeLength); + this._calculateSpringForce(node2, node3, 0.5 * edgeLength); + } } + } } + } + }; - /************************************ - Constructors - ************************************/ - function Locale() { - } + /** + * This is the code actually performing the calculation for the function above. It is split out to avoid repetition. + * + * @param node1 + * @param node2 + * @param edgeLength + * @private + */ + exports._calculateSpringForce = function (node1, node2, edgeLength) { + var dx, dy, fx, fy, springForce, distance; - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - moment.updateOffset(this); - updateInProgress = false; - } - } + dx = (node1.x - node2.x); + dy = (node1.y - node2.y); + distance = Math.sqrt(dx * dx + dy * dy); - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; + if (distance == 0) { + distance = 0.01; + } - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; - this._data = {}; + fx = dx * springForce; + fy = dy * springForce; - this._locale = moment.localeData(); + node1.fx += fx; + node1.fy += fy; + node2.fx -= fx; + node2.fy -= fy; + }; - this._bubble(); + + exports._cleanupPhysicsConfiguration = function() { + if (this.physicsConfiguration !== undefined) { + while (this.physicsConfiguration.hasChildNodes()) { + this.physicsConfiguration.removeChild(this.physicsConfiguration.firstChild); } - /************************************ - Helpers - ************************************/ + this.physicsConfiguration.parentNode.removeChild(this.physicsConfiguration); + this.physicsConfiguration = undefined; + } + } + /** + * Load the HTML for the physics config and bind it + * @private + */ + exports._loadPhysicsConfiguration = function () { + if (this.physicsConfiguration === undefined) { + this.backupConstants = {}; + util.deepExtend(this.backupConstants,this.constants); - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } + var maxGravitational = Math.max(20000, (-1 * this.constants.physics.barnesHut.gravitationalConstant) * 10); + var maxSpring = Math.min(0.05, this.constants.physics.barnesHut.springConstant * 10) - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } + var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"]; + this.physicsConfiguration = document.createElement('div'); + this.physicsConfiguration.className = "PhysicsConfiguration"; + this.physicsConfiguration.innerHTML = '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
    Simulation Mode:
    Barnes HutRepulsionHierarchical
    ' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
    Options:
    ' + this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement); + this.optionsDiv = document.createElement("div"); + this.optionsDiv.style.fontSize = "14px"; + this.optionsDiv.style.fontFamily = "verdana"; + this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement); - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } + var rangeElement; + rangeElement = document.getElementById('graph_BH_gc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant"); + rangeElement = document.getElementById('graph_BH_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_BH_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_BH_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_BH_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping"); - return a; + rangeElement = document.getElementById('graph_R_nd'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance"); + rangeElement = document.getElementById('graph_R_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_R_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_R_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_R_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping"); + + rangeElement = document.getElementById('graph_H_nd'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); + rangeElement = document.getElementById('graph_H_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_H_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_H_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_H_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping"); + rangeElement = document.getElementById('graph_H_direction'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction"); + rangeElement = document.getElementById('graph_H_levsep'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation"); + rangeElement = document.getElementById('graph_H_nspac'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing"); + + var radioButton1 = document.getElementById("graph_physicsMethod1"); + var radioButton2 = document.getElementById("graph_physicsMethod2"); + var radioButton3 = document.getElementById("graph_physicsMethod3"); + radioButton2.checked = true; + if (this.constants.physics.barnesHut.enabled) { + radioButton1.checked = true; + } + if (this.constants.hierarchicalLayout.enabled) { + radioButton3.checked = true; } - function copyConfig(to, from) { - var i, prop, val; + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + var graph_repositionNodes = document.getElementById("graph_repositionNodes"); + var graph_generateOptions = document.getElementById("graph_generateOptions"); - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = from._pf; - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } - - return to; - } - - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } + graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this); + graph_repositionNodes.onclick = graphRepositionNodes.bind(this); + graph_generateOptions.onclick = graphGenerateOptions.bind(this); + if (this.constants.smoothCurves == true && this.constants.dynamicSmoothCurves == false) { + graph_toggleSmooth.style.background = "#A4FF56"; } - - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; - - while (output.length < targetLength) { - output = '0' + output; - } - return (sign ? (forceSign ? '+' : '') : '-') + output; + else { + graph_toggleSmooth.style.background = "#FF8532"; } - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } + switchConfigurations.apply(this); - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + radioButton1.onchange = switchConfigurations.bind(this); + radioButton2.onchange = switchConfigurations.bind(this); + radioButton3.onchange = switchConfigurations.bind(this); + } + }; - return res; - } + /** + * This overwrites the this.constants. + * + * @param constantsVariableName + * @param value + * @private + */ + exports._overWriteGraphConstants = function (constantsVariableName, value) { + var nameArray = constantsVariableName.split("_"); + if (nameArray.length == 1) { + this.constants[nameArray[0]] = value; + } + else if (nameArray.length == 2) { + this.constants[nameArray[0]][nameArray[1]] = value; + } + else if (nameArray.length == 3) { + this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value; + } + }; - function momentsDifference(base, other) { - var res; - other = makeAs(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } - return res; - } + /** + * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. + */ + function graphToggleSmoothCurves () { + this.constants.smoothCurves.enabled = !this.constants.smoothCurves.enabled; + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} + else {graph_toggleSmooth.style.background = "#FF8532";} - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; - } + this._configureSmoothCurves(false); + } - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; + /** + * this function is used to scramble the nodes + * + */ + function graphRepositionNodes () { + for (var nodeId in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(nodeId)) { + this.calculationNodes[nodeId].vx = 0; this.calculationNodes[nodeId].vy = 0; + this.calculationNodes[nodeId].fx = 0; this.calculationNodes[nodeId].fy = 0; } + } + if (this.constants.hierarchicalLayout.enabled == true) { + this._setupHierarchicalLayout(); + showValueOfRange.call(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); + showValueOfRange.call(this, 'graph_H_cg', 1, "physics_centralGravity"); + showValueOfRange.call(this, 'graph_H_sc', 1, "physics_springConstant"); + showValueOfRange.call(this, 'graph_H_sl', 1, "physics_springLength"); + showValueOfRange.call(this, 'graph_H_damp', 1, "physics_damping"); + } + else { + this.repositionNodes(); + } + this.moving = true; + this.start(); + } - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); - } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - moment.updateOffset(mom, days || months); + /** + * this is used to generate an options file from the playing with physics system. + */ + function graphGenerateOptions () { + var options = "No options are required, default values used."; + var optionsSpecific = []; + var radioButton1 = document.getElementById("graph_physicsMethod1"); + var radioButton2 = document.getElementById("graph_physicsMethod2"); + if (radioButton1.checked == true) { + if (this.constants.physics.barnesHut.gravitationalConstant != this.backupConstants.physics.barnesHut.gravitationalConstant) {optionsSpecific.push("gravitationalConstant: " + this.constants.physics.barnesHut.gravitationalConstant);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.barnesHut.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.barnesHut.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options = "var options = {"; + options += "physics: {barnesHut: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " } + } + options += '}}' } - - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; + if (this.constants.smoothCurves.enabled != this.backupConstants.smoothCurves.enabled) { + if (optionsSpecific.length == 0) {options = "var options = {";} + else {options += ", "} + options += "smoothCurves: " + this.constants.smoothCurves.enabled; } - - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; + if (options != "No options are required, default values used.") { + options += '};' } - - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } + } + else if (radioButton2.checked == true) { + options = "var options = {"; + options += "physics: {barnesHut: {enabled: false}"; + if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.repulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options += ", repulsion: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " } - return diffs + lengthDiff; + } + options += '}}' } - - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; + if (optionsSpecific.length == 0) {options += "}"} + if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { + options += ", smoothCurves: " + this.constants.smoothCurves; + } + options += '};' + } + else { + options = "var options = {"; + if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options += "physics: {hierarchicalRepulsion: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", "; } - return units; + } + options += '}},'; + } + options += 'hierarchicalLayout: {'; + optionsSpecific = []; + if (this.constants.hierarchicalLayout.direction != this.backupConstants.hierarchicalLayout.direction) {optionsSpecific.push("direction: " + this.constants.hierarchicalLayout.direction);} + if (Math.abs(this.constants.hierarchicalLayout.levelSeparation) != this.backupConstants.hierarchicalLayout.levelSeparation) {optionsSpecific.push("levelSeparation: " + this.constants.hierarchicalLayout.levelSeparation);} + if (this.constants.hierarchicalLayout.nodeSpacing != this.backupConstants.hierarchicalLayout.nodeSpacing) {optionsSpecific.push("nodeSpacing: " + this.constants.hierarchicalLayout.nodeSpacing);} + if (optionsSpecific.length != 0) { + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } + } + options += '}' + } + else { + options += "enabled:true}"; } + options += '};' + } - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } + this.optionsDiv.innerHTML = options; + } - return normalizedInput; + /** + * this is used to switch between barnesHut, repulsion and hierarchical. + * + */ + function switchConfigurations () { + var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"]; + var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value; + var tableId = "graph_" + radioButton + "_table"; + var table = document.getElementById(tableId); + table.style.display = "block"; + for (var i = 0; i < ids.length; i++) { + if (ids[i] != tableId) { + table = document.getElementById(ids[i]); + table.style.display = "none"; } + } + this._restoreNodes(); + if (radioButton == "R") { + this.constants.hierarchicalLayout.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = false; + this.constants.physics.barnesHut.enabled = false; + } + else if (radioButton == "H") { + if (this.constants.hierarchicalLayout.enabled == false) { + this.constants.hierarchicalLayout.enabled = true; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this.constants.physics.barnesHut.enabled = false; + this.constants.smoothCurves.enabled = false; + this._setupHierarchicalLayout(); + } + } + else { + this.constants.hierarchicalLayout.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = false; + this.constants.physics.barnesHut.enabled = true; + } + this._loadSelectedForceSolver(); + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} + else {graph_toggleSmooth.style.background = "#FF8532";} + this.moving = true; + this.start(); + } - function makeList(field) { - var count, setter; - - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { - return; - } - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; + /** + * this generates the ranges depending on the iniital values. + * + * @param id + * @param map + * @param constantsVariableName + */ + function showValueOfRange (id,map,constantsVariableName) { + var valueId = id + "_value"; + var rangeValue = document.getElementById(id).value; - if (typeof format === 'number') { - index = format; - format = undefined; - } + if (Array.isArray(map)) { + document.getElementById(valueId).value = map[parseInt(rangeValue)]; + this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); + } + else { + document.getElementById(valueId).value = parseInt(map) * parseFloat(rangeValue); + this._overWriteGraphConstants(constantsVariableName, parseInt(map) * parseFloat(rangeValue)); + } - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; + if (constantsVariableName == "hierarchicalLayout_direction" || + constantsVariableName == "hierarchicalLayout_levelSeparation" || + constantsVariableName == "hierarchicalLayout_nodeSpacing") { + this._setupHierarchicalLayout(); + } + this.moving = true; + this.start(); + } - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } - }; - } - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } - } - return value; - } +/***/ }, +/* 58 */ +/***/ function(module, exports, __webpack_require__) { - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } + /** + * Creation of the ClusterMixin var. + * + * This contains all the functions the Network object can use to employ clustering + */ - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } + /** + * This is only called in the constructor of the network object + * + */ + exports.startWithClustering = function() { + // cluster if the data set is big + this.clusterToFit(this.constants.clustering.initialMaxNodes, true); - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } + // updates the lables after clustering + this.updateLabels(); - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } + // this is called here because if clusterin is disabled, the start and stabilize are called in + // the setData function. + if (this.constants.stabilize == true) { + this._stabilize(); + } + this.start(); + }; - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 24 || - (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || - m._a[SECOND] !== 0 || - m._a[MILLISECOND] !== 0)) ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; + /** + * This function clusters until the initialMaxNodes has been reached + * + * @param {Number} maxNumberOfNodes + * @param {Boolean} reposition + */ + exports.clusterToFit = function(maxNumberOfNodes, reposition) { + var numberOfNodes = this.nodeIndices.length; - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } + var maxLevels = 50; + var level = 0; - m._pf.overflow = overflow; - } + // we first cluster the hubs, then we pull in the outliers, repeat + while (numberOfNodes > maxNumberOfNodes && level < maxLevels) { + if (level % 3 == 0.0) { + this.forceAggregateHubs(true); + this.normalizeClusterLevels(); + } + else { + this.increaseClusterLevel(); // this also includes a cluster normalization } + this.forceAggregateHubs(true); + numberOfNodes = this.nodeIndices.length; + level += 1; + } - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; + // after the clustering we reposition the nodes to reduce the initial chaos + if (level > 0 && reposition == true) { + this.repositionNodes(); + } + this._updateCalculationNodes(); + }; - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0 && - m._pf.bigHour === undefined; - } - } - return m._isValid; - } - - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } - - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; - - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; - } + /** + * This function can be called to open up a specific cluster. + * It will unpack the cluster back one level. + * + * @param node | Node object: cluster to open. + */ + exports.openCluster = function(node) { + var isMovingBeforeClustering = this.moving; + if (node.clusterSize > this.constants.clustering.sectorThreshold && this._nodeInActiveArea(node) && + !(this._sector() == "default" && this.nodeIndices.length == 1)) { + // this loads a new sector, loads the nodes and edges and nodeIndices of it. + this._addSector(node); + var level = 0; - function loadLocale(name) { - var oldLocale = null; - if (!locales[name] && hasModule) { - try { - oldLocale = moment.locale(); - !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); - // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales - moment.locale(oldLocale); - } catch (e) { } - } - return locales[name]; + // we decluster until we reach a decent number of nodes + while ((this.nodeIndices.length < this.constants.clustering.initialMaxNodes) && (level < 10)) { + this.decreaseClusterLevel(); + level += 1; } - // Return a moment from input, that is local/utc/utcOffset equivalent to - // model. - function makeAs(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (moment.isMoment(input) || isDate(input) ? - +input : +moment(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - moment.updateOffset(res, false); - return res; - } else { - return moment(input).local(); - } - } + } + else { + this._expandClusterNode(node,false,true); - /************************************ - Locale - ************************************/ + // update the index list and labels + this._updateNodeIndexList(); + this._updateCalculationNodes(); + this.updateLabels(); + } + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); + } + }; - extend(Locale.prototype, { - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); - }, + /** + * This calls the updateClustes with default arguments + */ + exports.updateClustersDefault = function() { + if (this.constants.clustering.enabled == true && this.constants.clustering.clusterByZoom == true) { + this.updateClusters(0,false,false); + } + }; - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, + /** + * This function can be called to increase the cluster level. This means that the nodes with only one edge connection will + * be clustered with their connected node. This can be repeated as many times as needed. + * This can be called externally (by a keybind for instance) to reduce the complexity of big datasets. + */ + exports.increaseClusterLevel = function() { + this.updateClusters(-1,false,true); + }; - monthsParse : function (monthName, format, strict) { - var i, mom, regex; - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } + /** + * This function can be called to decrease the cluster level. This means that the nodes with only one edge connection will + * be unpacked if they are a cluster. This can be repeated as many times as needed. + * This can be called externally (by a key-bind for instance) to look into clusters without zooming. + */ + exports.decreaseClusterLevel = function() { + this.updateClusters(1,false,true); + }; - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = moment.utc([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - }, - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, + /** + * This is the main clustering function. It clusters and declusters on zoom or forced + * This function clusters on zoom, it can be called with a predefined zoom direction + * If out, check if we can form clusters, if in, check if we can open clusters. + * This function is only called from _zoom() + * + * @param {Number} zoomDirection | -1 / 0 / +1 for zoomOut / determineByZoom / zoomIn + * @param {Boolean} recursive | enabled or disable recursive calling of the opening of clusters + * @param {Boolean} force | enabled or disable forcing + * @param {Boolean} doNotStart | if true do not call start + * + */ + exports.updateClusters = function(zoomDirection,recursive,force,doNotStart) { + var isMovingBeforeClustering = this.moving; + var amountOfNodes = this.nodeIndices.length; - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, + var detectedZoomingIn = (this.previousScale < this.scale && zoomDirection == 0); + var detectedZoomingOut = (this.previousScale > this.scale && zoomDirection == 0); - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, + // on zoom out collapse the sector if the scale is at the level the sector was made + if (detectedZoomingOut == true) { + this._collapseSector(); + } - weekdaysParse : function (weekdayName) { - var i, mom, regex; + // check if we zoom in or out + if (detectedZoomingOut == true || zoomDirection == -1) { // zoom out + // forming clusters when forced pulls outliers in. When not forced, the edge length of the + // outer nodes determines if it is being clustered + this._formClusters(force); + } + else if (detectedZoomingIn == true || zoomDirection == 1) { // zoom in + if (force == true) { + // _openClusters checks for each node if the formationScale of the cluster is smaller than + // the current scale and if so, declusters. When forced, all clusters are reduced by one step + this._openClusters(recursive,force); + } + else { + // if a cluster takes up a set percentage of the active window + //this._openClustersBySize(); + this._openClusters(recursive, false); + } + } + this._updateNodeIndexList(); - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } + // if a cluster was NOT formed and the user zoomed out, we try clustering by hubs + if (this.nodeIndices.length == amountOfNodes && (detectedZoomingOut == true || zoomDirection == -1)) { + this._aggregateHubs(force); + this._updateNodeIndexList(); + } - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - }, + // we now reduce chains. + if (detectedZoomingOut == true || zoomDirection == -1) { // zoom out + this.handleChains(); + this._updateNodeIndexList(); + } - _longDateFormat : { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; - } - return output; - }, + this.previousScale = this.scale; - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - }, + // update labels + this.updateLabels(); - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - }, + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length < amountOfNodes) { // this means a clustering operation has taken place + this.clusterSession += 1; + // if clusters have been made, we normalize the cluster level + this.normalizeClusterLevels(); + } + if (doNotStart == false || doNotStart === undefined) { + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); + } + } - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom, [now]) : output; - }, + this._updateCalculationNodes(); + }; - _relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, + /** + * This function handles the chains. It is called on every updateClusters(). + */ + exports.handleChains = function() { + // after clustering we check how many chains there are + var chainPercentage = this._getChainFraction(); + if (chainPercentage > this.constants.clustering.chainThreshold) { + this._reduceAmountOfChains(1 - this.constants.clustering.chainThreshold / chainPercentage) - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, + } + }; - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, + /** + * this functions starts clustering by hubs + * The minimum hub threshold is set globally + * + * @private + */ + exports._aggregateHubs = function(force) { + this._getHubSize(); + this._formClustersByHub(force,false); + }; - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', - _ordinalParse : /\d{1,2}/, - preparse : function (string) { - return string; - }, + /** + * This function forces hubs to form. + * + */ + exports.forceAggregateHubs = function(doNotStart) { + var isMovingBeforeClustering = this.moving; + var amountOfNodes = this.nodeIndices.length; - postformat : function (string) { - return string; - }, + this._aggregateHubs(true); - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, + // update the index list, dynamic edges and labels + this._updateNodeIndexList(); + this.updateLabels(); - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }, + this._updateCalculationNodes(); - firstDayOfWeek : function () { - return this._week.dow; - }, + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length != amountOfNodes) { + this.clusterSession += 1; + } - firstDayOfYear : function () { - return this._week.doy; - }, + if (doNotStart == false || doNotStart === undefined) { + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); + } + } + }; - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; + /** + * If a cluster takes up more than a set percentage of the screen, open the cluster + * + * @private + */ + exports._openClustersBySize = function() { + if (this.constants.clustering.clusterByZoom == true) { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.inView() == true) { + if ((node.width * this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || + (node.height * this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { + this.openCluster(node); + } } - }); + } + } + } + }; - /************************************ - Formatting - ************************************/ + /** + * This function loops over all nodes in the nodeIndices list. For each node it checks if it is a cluster and if it + * has to be opened based on the current zoom level. + * + * @private + */ + exports._openClusters = function(recursive,force) { + for (var i = 0; i < this.nodeIndices.length; i++) { + var node = this.nodes[this.nodeIndices[i]]; + this._expandClusterNode(node,recursive,force); + this._updateCalculationNodes(); + } + }; - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); + /** + * This function checks if a node has to be opened. This is done by checking the zoom level. + * If the node contains child nodes, this function is recursively called on the child nodes as well. + * This recursive behaviour is optional and can be set by the recursive argument. + * + * @param {Node} parentNode | to check for cluster and expand + * @param {Boolean} recursive | enabled or disable recursive calling + * @param {Boolean} force | enabled or disable forcing + * @param {Boolean} [openAll] | This will recursively force all nodes in the parent to be released + * @private + */ + exports._expandClusterNode = function(parentNode, recursive, force, openAll) { + // first check if node is a cluster + if (parentNode.clusterSize > 1) { + if (openAll === undefined) { + openAll = false; } + // this means that on a double tap event or a zoom event, the cluster fully unpacks if it is smaller than 20 - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + recursive = openAll || recursive; + // if the last child has been added on a smaller scale than current scale decluster + if (parentNode.formationScale < this.scale || force == true) { + // we will check if any of the contained child nodes should be removed from the cluster + for (var containedNodeId in parentNode.containedNodes) { + if (parentNode.containedNodes.hasOwnProperty(containedNodeId)) { + var childNode = parentNode.containedNodes[containedNodeId]; - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); + // force expand will expand the largest cluster size clusters. Since we cluster from outside in, we assume that + // the largest cluster is the one that comes from outside + if (force == true) { + if (childNode.clusterSession == parentNode.clusterSessions[parentNode.clusterSessions.length-1] + || openAll) { + this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); } - } - - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + else { + if (this._nodeInActiveArea(parentNode)) { + this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); } - return output; - }; - } - - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); + } } + } + } + } + }; - format = expandFormat(format, m.localeData()); - - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); - } + /** + * ONLY CALLED FROM _expandClusterNode + * + * This function will expel a child_node from a parent_node. This is to de-cluster the node. This function will remove + * the child node from the parent contained_node object and put it back into the global nodes object. + * The same holds for the edge that was connected to the child node. It is moved back into the global edges object. + * + * @param {Node} parentNode | the parent node + * @param {String} containedNodeId | child_node id as it is contained in the containedNodes object of the parent node + * @param {Boolean} recursive | This will also check if the child needs to be expanded. + * With force and recursive both true, the entire cluster is unpacked + * @param {Boolean} force | This will disregard the zoom level and will expel this child from the parent + * @param {Boolean} openAll | This will recursively force all nodes in the parent to be released + * @private + */ + exports._expelChildFromParent = function(parentNode, containedNodeId, recursive, force, openAll) { + var childNode = parentNode.containedNodes[containedNodeId] - return formatFunctions[format](m); - } + // if child node has been added on smaller scale than current, kick out + if (childNode.formationScale < this.scale || force == true) { + // unselect all selected items + this._unselectAll(); - function expandFormat(format, locale) { - var i = 5; + // put the child node back in the global nodes object + this.nodes[containedNodeId] = childNode; - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } + // release the contained edges from this childNode back into the global edges + this._releaseContainedEdges(parentNode,childNode); - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } + // reconnect rerouted edges to the childNode + this._connectEdgeBackToChild(parentNode,childNode); - return format; - } + // validate all edges in dynamicEdges + this._validateEdges(parentNode); + // undo the changes from the clustering operation on the parent node + parentNode.options.mass -= childNode.options.mass; + parentNode.clusterSize -= childNode.clusterSize; + parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*(parentNode.clusterSize-1)); - /************************************ - Parsing - ************************************/ + // place the child node near the parent, not at the exact same location to avoid chaos in the system + childNode.x = parentNode.x + parentNode.growthIndicator * (0.5 - Math.random()); + childNode.y = parentNode.y + parentNode.growthIndicator * (0.5 - Math.random()); + // remove node from the list + delete parentNode.containedNodes[containedNodeId]; - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { - return parseTokenOneDigit; - } - /* falls through */ - case 'SS': - if (strict) { - return parseTokenTwoDigits; - } - /* falls through */ - case 'SSS': - if (strict) { - return parseTokenThreeDigits; - } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return config._locale._meridiemParse; - case 'x': - return parseTokenOffsetMs; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); - return a; + // check if there are other childs with this clusterSession in the parent. + var othersPresent = false; + for (var childNodeId in parentNode.containedNodes) { + if (parentNode.containedNodes.hasOwnProperty(childNodeId)) { + if (parentNode.containedNodes[childNodeId].clusterSession == childNode.clusterSession) { + othersPresent = true; + break; } + } } - - function utcOffsetFromString(string) { - string = string || ''; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); - - return parts[0] === '+' ? minutes : -minutes; + // if there are no others, remove the cluster session from the list + if (othersPresent == false) { + parentNode.clusterSessions.pop(); } - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + this._repositionBezierNodes(childNode); + // this._repositionBezierNodes(parentNode); - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; - } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt( - input.match(/\d{1,2}/)[0], 10)); - } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); - } + // remove the clusterSession from the child node + childNode.clusterSession = 0; - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._meridiem = input; - // config._isPm = config._locale.isPM(input); - break; - // HOUR - case 'h' : // fall through to hh - case 'hh' : - config._pf.bigHour = true; - /* falls through */ - case 'H' : // fall through to HH - case 'HH' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX OFFSET (MILLISECONDS) - case 'x': - config._d = new Date(toInt(input)); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = utcOffsetFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; - } else { - config._pf.invalidWeekday = input; - } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); - } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); - } - } + // recalculate the size of the node on the next time the node is rendered + parentNode.clearSizeCache(); - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; + // restart the simulation to reorganise all nodes + this.moving = true; + } - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + // check if a further expansion step is possible if recursivity is enabled + if (recursive == true) { + this._expandClusterNode(childNode,recursive,force,openAll); + } + }; - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + /** + * position the bezier nodes at the center of the edges + * + * @param node + * @private + */ + exports._repositionBezierNodes = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + node.dynamicEdges[i].positionBezierNode(); + } + }; - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; + /** + * This function checks if any nodes at the end of their trees have edges below a threshold length + * This function is called only from updateClusters() + * forceLevelCollapse ignores the length of the edge and collapses one level + * This means that a node with only one edge will be clustered with its connected node + * + * @private + * @param {Boolean} force + */ + exports._formClusters = function(force) { + if (force == false) { + if (this.constants.clustering.clusterByZoom == true) { + this._formClustersByZoom(); } + } + else { + this._forceClustersByZoom(); + } + }; - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; - - if (config._d) { - return; - } - currentDate = currentDateArray(config); + /** + * This function handles the clustering by zooming out, this is based on a minimum edge distance + * + * @private + */ + exports._formClustersByZoom = function() { + var dx,dy,length; + var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } + // check if any edges are shorter than minLength and start the clustering + // the clustering favours the node with the larger mass + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + var edge = this.edges[edgeId]; + if (edge.connected) { + if (edge.toId != edge.fromId) { + dx = (edge.to.x - edge.from.x); + dy = (edge.to.y - edge.from.y); + length = Math.sqrt(dx * dx + dy * dy); - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; + if (length < minLength) { + // first check which node is larger + var parentNode = edge.from; + var childNode = edge.to; + if (edge.to.options.mass > edge.from.options.mass) { + parentNode = edge.to; + childNode = edge.from; } - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } - - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } - - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } - - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; + if (childNode.dynamicEdges.length == 1) { + this._addToCluster(parentNode,childNode,false); + } + else if (parentNode.dynamicEdges.length == 1) { + this._addToCluster(childNode,parentNode,false); + } + } } + } + } + } + }; - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } + /** + * This function forces the network to cluster all nodes with only one connecting edge to their + * connected node. + * + * @private + */ + exports._forceClustersByZoom = function() { + for (var nodeId in this.nodes) { + // another node could have absorbed this child. + if (this.nodes.hasOwnProperty(nodeId)) { + var childNode = this.nodes[nodeId]; - if (config._nextDay) { - config._a[HOUR] = 24; + // the edges can be swallowed by another decrease + if (childNode.dynamicEdges.length == 1) { + var edge = childNode.dynamicEdges[0]; + var parentNode = (edge.toId == childNode.id) ? this.nodes[edge.fromId] : this.nodes[edge.toId]; + // group to the largest node + if (childNode.id != parentNode.id) { + if (parentNode.options.mass > childNode.options.mass) { + this._addToCluster(parentNode,childNode,true); + } + else { + this._addToCluster(childNode,parentNode,true); + } } + } } + } + }; - function dateFromObject(config) { - var normalizedInput; - - if (config._d) { - return; - } - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day || normalizedInput.date, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; + /** + * To keep the nodes of roughly equal size we normalize the cluster levels. + * This function clusters a node to its smallest connected neighbour. + * + * @param node + * @private + */ + exports._clusterToSmallestNeighbour = function(node) { + var smallestNeighbour = -1; + var smallestNeighbourNode = null; + for (var i = 0; i < node.dynamicEdges.length; i++) { + if (node.dynamicEdges[i] !== undefined) { + var neighbour = null; + if (node.dynamicEdges[i].fromId != node.id) { + neighbour = node.dynamicEdges[i].from; + } + else if (node.dynamicEdges[i].toId != node.id) { + neighbour = node.dynamicEdges[i].to; + } - dateFromConfig(config); - } - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; - } + if (neighbour != null && smallestNeighbour > neighbour.clusterSessions.length) { + smallestNeighbour = neighbour.clusterSessions.length; + smallestNeighbourNode = neighbour; + } } + } - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; - } + if (neighbour != null && this.nodes[neighbour.id] !== undefined) { + this._addToCluster(neighbour, node, true); + } + }; - config._a = []; - config._pf.empty = true; - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; + /** + * This function forms clusters from hubs, it loops over all nodes + * + * @param {Boolean} force | Disregard zoom level + * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges + * @private + */ + exports._formClustersByHub = function(force, onlyEqual) { + // we loop over all nodes in the list + for (var nodeId in this.nodes) { + // we check if it is still available since it can be used by the clustering in this loop + if (this.nodes.hasOwnProperty(nodeId)) { + this._formClusterFromHub(this.nodes[nodeId],force,onlyEqual); + } + } + }; - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + /** + * This function forms a cluster from a specific preselected hub node + * + * @param {Node} hubNode | the node we will cluster as a hub + * @param {Boolean} force | Disregard zoom level + * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges + * @param {Number} [absorptionSizeOffset] | + * @private + */ + exports._formClusterFromHub = function(hubNode, force, onlyEqual, absorptionSizeOffset) { + if (absorptionSizeOffset === undefined) { + absorptionSizeOffset = 0; + } + //this.hubThreshold = 43 + //if (hubNode.dynamicEdgesLength < 0) { + // console.error(hubNode.dynamicEdgesLength, this.hubThreshold, onlyEqual) + //} + // we decide if the node is a hub + if ((hubNode.dynamicEdges.length >= this.hubThreshold && onlyEqual == false) || + (hubNode.dynamicEdges.length == this.hubThreshold && onlyEqual == true)) { + // initialize variables + var dx,dy,length; + var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; + var allowCluster = false; - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - config._pf.empty = false; - } - else { - config._pf.unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); + // we create a list of edges because the dynamicEdges change over the course of this loop + var edgesIdarray = []; + var amountOfInitialEdges = hubNode.dynamicEdges.length; + for (var j = 0; j < amountOfInitialEdges; j++) { + edgesIdarray.push(hubNode.dynamicEdges[j].id); + } + + // if the hub clustering is not forced, we check if one of the edges connected + // to a cluster is small enough based on the constants.clustering.clusterEdgeThreshold + if (force == false) { + allowCluster = false; + for (j = 0; j < amountOfInitialEdges; j++) { + var edge = this.edges[edgesIdarray[j]]; + if (edge !== undefined) { + if (edge.connected) { + if (edge.toId != edge.fromId) { + dx = (edge.to.x - edge.from.x); + dy = (edge.to.y - edge.from.y); + length = Math.sqrt(dx * dx + dy * dy); + + if (length < minLength) { + allowCluster = true; + break; + } } + } } + } + } - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); + // start the clustering if allowed + if ((!force && allowCluster) || force) { + var children = []; + var childrenIds = {}; + // we loop over all edges INITIALLY connected to this hub to get a list of the childNodes + for (j = 0; j < amountOfInitialEdges; j++) { + edge = this.edges[edgesIdarray[j]]; + var childNode = this.nodes[(edge.fromId == hubNode.id) ? edge.toId : edge.fromId]; + if (childrenIds[childNode.id] === undefined) { + childrenIds[childNode.id] = true; + children.push(childNode); } + } + + for (j = 0; j < children.length; j++) { + var childNode = children[j]; + // we do not want hubs to merge with other hubs nor do we want to cluster itself. + if ((childNode.dynamicEdges.length <= (this.hubThreshold + absorptionSizeOffset)) && + (childNode.id != hubNode.id)) { + this._addToCluster(hubNode,childNode,force); - // clear _12h flag if hour is <= 12 - if (config._pf.bigHour === true && config._a[HOUR] <= 12) { - config._pf.bigHour = undefined; } - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], - config._meridiem); - dateFromConfig(config); - checkOverflow(config); - } + else { + //console.log("WILL NOT MERGE:",childNode.dynamicEdges.length , (this.hubThreshold + absorptionSizeOffset)) + } + } - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); } + } + }; - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, - scoreToBeat, - i, - currentScore; + /** + * This function adds the child node to the parent node, creating a cluster if it is not already. + * + * @param {Node} parentNode | this is the node that will house the child node + * @param {Node} childNode | this node will be deleted from the global this.nodes and stored in the parent node + * @param {Boolean} force | true will only update the remainingEdges at the very end of the clustering, ensuring single level collapse + * @private + */ + exports._addToCluster = function(parentNode, childNode, force) { + // join child node in the parent node + parentNode.containedNodes[childNode.id] = childNode; + //console.log(parentNode.id, childNode.id) + // manage all the edges connected to the child and parent nodes + for (var i = 0; i < childNode.dynamicEdges.length; i++) { + var edge = childNode.dynamicEdges[i]; + if (edge.toId == parentNode.id || edge.fromId == parentNode.id) { // edge connected to parentNode + //console.log("COLLECT",parentNode.id, childNode.id, edge.toId, edge.fromId) + this._addToContainedEdges(parentNode,childNode,edge); + } + else { + //console.log("REWIRE",parentNode.id, childNode.id, edge.toId, edge.fromId) + this._connectEdgeToCluster(parentNode,childNode,edge); + } + } + // a contained node has no dynamic edges. + childNode.dynamicEdges = []; - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; - } + // remove circular edges from clusters + this._containCircularEdgesFromNode(parentNode,childNode); - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); - if (!isValid(tempConfig)) { - continue; - } + // remove the childNode from the global nodes object + delete this.nodes[childNode.id]; - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + // update the properties of the child and parent + var massBefore = parentNode.options.mass; + childNode.clusterSession = this.clusterSession; + parentNode.options.mass += childNode.options.mass; + parentNode.clusterSize += childNode.clusterSize; + parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + // keep track of the clustersessions so we can open the cluster up as it has been formed. + if (parentNode.clusterSessions[parentNode.clusterSessions.length - 1] != this.clusterSession) { + parentNode.clusterSessions.push(this.clusterSession); + } - tempConfig._pf.score = currentScore; + // forced clusters only open from screen size and double tap + if (force == true) { + parentNode.formationScale = 0; + } + else { + parentNode.formationScale = this.scale; // The latest child has been added on this scale + } - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } + // recalculate the size of the node on the next time the node is rendered + parentNode.clearSizeCache(); - extend(config, bestMoment || tempConfig); - } + // set the pop-out scale for the childnode + parentNode.containedNodes[childNode.id].formationScale = parentNode.formationScale; - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); + // nullify the movement velocity of the child, this is to avoid hectic behaviour + childNode.clearVelocity(); - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be 'T' or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; - } - } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; - } - } + // the mass has altered, preservation of energy dictates the velocity to be updated + parentNode.updateVelocity(massBefore); - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); - } - } + // restart the simulation to reorganise all nodes + this.moving = true; + }; - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } - function makeDateFromInput(config) { - var input = config._i, matched; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - dateFromConfig(config); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - moment.createFromInputFallback(config); - } - } + /** + * This adds an edge from the childNode to the contained edges of the parent node + * + * @param parentNode | Node object + * @param childNode | Node object + * @param edge | Edge object + * @private + */ + exports._addToContainedEdges = function(parentNode, childNode, edge) { + // create an array object if it does not yet exist for this childNode + if (parentNode.containedEdges[childNode.id] === undefined) { + parentNode.containedEdges[childNode.id] = [] + } + // add this edge to the list + parentNode.containedEdges[childNode.id].push(edge); - function makeDate(y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); + // remove the edge from the global edges object + delete this.edges[edge.id]; - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; + // remove the edge from the parent object + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + if (parentNode.dynamicEdges[i].id == edge.id) { + parentNode.dynamicEdges.splice(i,1); + break; } + } + }; - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; + /** + * This function connects an edge that was connected to a child node to the parent node. + * It keeps track of which nodes it has been connected to with the originalId array. + * + * @param {Node} parentNode | Node object + * @param {Node} childNode | Node object + * @param {Edge} edge | Edge object + * @private + */ + exports._connectEdgeToCluster = function(parentNode, childNode, edge) { + // handle circular edges + if (edge.toId == edge.fromId) { + this._addToContainedEdges(parentNode, childNode, edge); + } + else { + if (edge.toId == childNode.id) { // edge connected to other node on the "to" side + edge.originalToId.push(childNode.id); + edge.to = parentNode; + edge.toId = parentNode.id; } - - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } - } - } - return input; + else { // edge connected to other node with the "from" side + edge.originalFromId.push(childNode.id); + edge.from = parentNode; + edge.fromId = parentNode.id; } - /************************************ - Relative Time - ************************************/ + this._addToReroutedEdges(parentNode,childNode,edge); + } + }; - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + /** + * If a node is connected to itself, a circular edge is drawn. When clustering we want to contain + * these edges inside of the cluster. + * + * @param parentNode + * @param childNode + * @private + */ + exports._containCircularEdgesFromNode = function(parentNode, childNode) { + // manage all the edges connected to the child and parent nodes + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + var edge = parentNode.dynamicEdges[i]; + // handle circular edges + if (edge.toId == edge.fromId) { + this._addToContainedEdges(parentNode, childNode, edge); } + } + }; - function relativeTime(posNegDuration, withoutSuffix, locale) { - var duration = moment.duration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - years = round(duration.as('y')), - - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < relativeTimeThresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < relativeTimeThresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); - } + /** + * This adds an edge from the childNode to the rerouted edges of the parent node + * + * @param parentNode | Node object + * @param childNode | Node object + * @param edge | Edge object + * @private + */ + exports._addToReroutedEdges = function(parentNode, childNode, edge) { + // create an array object if it does not yet exist for this childNode + // we store the edge in the rerouted edges so we can restore it when the cluster pops open + if (!(parentNode.reroutedEdges.hasOwnProperty(childNode.id))) { + parentNode.reroutedEdges[childNode.id] = []; + } + parentNode.reroutedEdges[childNode.id].push(edge); + // this edge becomes part of the dynamicEdges of the cluster node + parentNode.dynamicEdges.push(edge); + }; - /************************************ - Week of Year - ************************************/ - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; - + /** + * This function connects an edge that was connected to a cluster node back to the child node. + * + * @param parentNode | Node object + * @param childNode | Node object + * @private + */ + exports._connectEdgeBackToChild = function(parentNode, childNode) { + if (parentNode.reroutedEdges.hasOwnProperty(childNode.id)) { + for (var i = 0; i < parentNode.reroutedEdges[childNode.id].length; i++) { + var edge = parentNode.reroutedEdges[childNode.id][i]; + if (edge.originalFromId[edge.originalFromId.length-1] == childNode.id) { + edge.originalFromId.pop(); + edge.fromId = childNode.id; + edge.from = childNode; + } + else { + edge.originalToId.pop(); + edge.toId = childNode.id; + edge.to = childNode; + } - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } + // append this edge to the list of edges connecting to the childnode + childNode.dynamicEdges.push(edge); - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; + // remove the edge from the parent object + for (var j = 0; j < parentNode.dynamicEdges.length; j++) { + if (parentNode.dynamicEdges[j].id == edge.id) { + parentNode.dynamicEdges.splice(j,1); + break; } - - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; + } } + // remove the entry from the rerouted edges + delete parentNode.reroutedEdges[childNode.id]; + } + }; - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; + /** + * When loops are clustered, an edge can be both in the rerouted array and the contained array. + * This function is called last to verify that all edges in dynamicEdges are in fact connected to the + * parentNode + * + * @param parentNode | Node object + * @private + */ + exports._validateEdges = function(parentNode) { + var dynamicEdges = [] + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + var edge = parentNode.dynamicEdges[i]; + if (parentNode.id == edge.toId || parentNode.id == edge.fromId) { + dynamicEdges.push(edge); } + } + parentNode.dynamicEdges = dynamicEdges; + }; - /************************************ - Top Level Functions - ************************************/ - - function makeMoment(config) { - var input = config._i, - format = config._f, - res; - - config._locale = config._locale || moment.localeData(config._l); - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } + /** + * This function released the contained edges back into the global domain and puts them back into the + * dynamic edges of both parent and child. + * + * @param {Node} parentNode | + * @param {Node} childNode | + * @private + */ + exports._releaseContainedEdges = function(parentNode, childNode) { + for (var i = 0; i < parentNode.containedEdges[childNode.id].length; i++) { + var edge = parentNode.containedEdges[childNode.id][i]; - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } + // put the edge back in the global edges object + this.edges[edge.id] = edge; - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); - } - } else { - makeDateFromInput(config); - } + // put the edge back in the dynamic edges of the child and parent + childNode.dynamicEdges.push(edge); + parentNode.dynamicEdges.push(edge); + } + // remove the entry from the contained edges + delete parentNode.containedEdges[childNode.id]; - res = new Moment(config); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } + }; - return res; - } - moment = function (input, format, locale, strict) { - var c; - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = locale; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); - return makeMoment(c); - }; + // ------------------- UTILITY FUNCTIONS ---------------------------- // - moment.suppressDeprecationWarnings = false; - moment.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); + /** + * This updates the node labels for all nodes (for debugging purposes) + */ + exports.updateLabels = function() { + var nodeId; + // update node labels + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.clusterSize > 1) { + node.label = "[".concat(String(node.clusterSize),"]"); + } + } + } - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return moment(); + // update node labels + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.clusterSize == 1) { + if (node.originalLabel !== undefined) { + node.label = node.originalLabel; } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; - } + else { + node.label = String(node.id); } - return res; + } } + } - moment.min = function () { - var args = [].slice.call(arguments, 0); + // /* Debug Override */ + // for (nodeId in this.nodes) { + // if (this.nodes.hasOwnProperty(nodeId)) { + // node = this.nodes[nodeId]; + // node.label = String(node.clusterSize + ":" + node.dynamicEdges.length); + // } + // } - return pickBy('isBefore', args); - }; + }; - moment.max = function () { - var args = [].slice.call(arguments, 0); - return pickBy('isAfter', args); - }; + /** + * We want to keep the cluster level distribution rather small. This means we do not want unclustered nodes + * if the rest of the nodes are already a few cluster levels in. + * To fix this we use this function. It determines the min and max cluster level and sends nodes that have not + * clustered enough to the clusterToSmallestNeighbours function. + */ + exports.normalizeClusterLevels = function() { + var maxLevel = 0; + var minLevel = 1e9; + var clusterLevel = 0; + var nodeId; - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; + // we loop over all nodes in the list + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + clusterLevel = this.nodes[nodeId].clusterSessions.length; + if (maxLevel < clusterLevel) {maxLevel = clusterLevel;} + if (minLevel > clusterLevel) {minLevel = clusterLevel;} + } + } - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; + if (maxLevel - minLevel > this.constants.clustering.clusterLevelDifference) { + var amountOfNodes = this.nodeIndices.length; + var targetLevel = maxLevel - this.constants.clustering.clusterLevelDifference; + // we loop over all nodes in the list + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].clusterSessions.length < targetLevel) { + this._clusterToSmallestNeighbour(this.nodes[nodeId]); } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); - - return makeMoment(c).utc(); - }; + } + } + this._updateNodeIndexList(); + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length != amountOfNodes) { + this.clusterSession += 1; + } + } + }; - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; - if (moment.isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; - duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && - ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + /** + * This function determines if the cluster we want to decluster is in the active area + * this means around the zoom center + * + * @param {Node} node + * @returns {boolean} + * @private + */ + exports._nodeInActiveArea = function(node) { + return ( + Math.abs(node.x - this.areaCenter.x) <= this.constants.clustering.activeAreaBoxSize/this.scale + && + Math.abs(node.y - this.areaCenter.y) <= this.constants.clustering.activeAreaBoxSize/this.scale + ) + }; - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } - ret = new Duration(duration); + /** + * This is an adaptation of the original repositioning function. This is called if the system is clustered initially + * It puts large clusters away from the center and randomizes the order. + * + */ + exports.repositionNodes = function() { + for (var i = 0; i < this.nodeIndices.length; i++) { + var node = this.nodes[this.nodeIndices[i]]; + if ((node.xFixed == false || node.yFixed == false)) { + var radius = 10 * 0.1*this.nodeIndices.length * Math.min(100,node.options.mass); + var angle = 2 * Math.PI * Math.random(); + if (node.xFixed == false) {node.x = radius * Math.cos(angle);} + if (node.yFixed == false) {node.y = radius * Math.sin(angle);} + this._repositionBezierNodes(node); + } + } + }; - if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } - return ret; - }; + /** + * We determine how many connections denote an important hub. + * We take the mean + 2*std as the important hub size. (Assuming a normal distribution of data, ~2.2%) + * + * @private + */ + exports._getHubSize = function() { + var average = 0; + var averageSquared = 0; + var hubCounter = 0; + var largestHub = 0; - // version number - moment.version = VERSION; + for (var i = 0; i < this.nodeIndices.length; i++) { - // default format - moment.defaultFormat = isoFormat; + var node = this.nodes[this.nodeIndices[i]]; + if (node.dynamicEdges.length > largestHub) { + largestHub = node.dynamicEdges.length; + } + average += node.dynamicEdges.length; + averageSquared += Math.pow(node.dynamicEdges.length,2); + hubCounter += 1; + } + average = average / hubCounter; + averageSquared = averageSquared / hubCounter; - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + var variance = averageSquared - Math.pow(average,2); - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + var standardDeviation = Math.sqrt(variance); - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; + this.hubThreshold = Math.floor(average + 2*standardDeviation); - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function (threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return relativeTimeThresholds[threshold]; - } - relativeTimeThresholds[threshold] = limit; - return true; - }; + // always have at least one to cluster + if (this.hubThreshold > largestHub) { + this.hubThreshold = largestHub; + } - moment.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - function (key, value) { - return moment.locale(key, value); - } - ); + // console.log("average",average,"averageSQ",averageSquared,"var",variance,"std",standardDeviation); + // console.log("hubThreshold:",this.hubThreshold); + }; - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - moment.locale = function (key, values) { - var data; - if (key) { - if (typeof(values) !== 'undefined') { - data = moment.defineLocale(key, values); - } - else { - data = moment.localeData(key); - } - if (data) { - moment.duration._locale = moment._locale = data; - } + /** + * We reduce the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods + * with this amount we can cluster specifically on these chains. + * + * @param {Number} fraction | between 0 and 1, the percentage of chains to reduce + * @private + */ + exports._reduceAmountOfChains = function(fraction) { + this.hubThreshold = 2; + var reduceAmount = Math.floor(this.nodeIndices.length * fraction); + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].dynamicEdges.length == 2) { + if (reduceAmount > 0) { + this._formClusterFromHub(this.nodes[nodeId],true,true,1); + reduceAmount -= 1; } + } + } + } + }; - return moment._locale._abbr; - }; + /** + * We get the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods + * with this amount we can cluster specifically on these chains. + * + * @private + */ + exports._getChainFraction = function() { + var chains = 0; + var total = 0; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].dynamicEdges.length == 2) { + chains += 1; + } + total += 1; + } + } + return chains/total; + }; - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); - } - locales[name].set(values); - // backwards compat for now: also set the locale - moment.locale(name); +/***/ }, +/* 59 */ +/***/ function(module, exports, __webpack_require__) { - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - }; - - moment.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - function (key) { - return moment.localeData(key); - } - ); + var util = __webpack_require__(1); + var Node = __webpack_require__(40); - // returns locale data - moment.localeData = function (key) { - var locale; + /** + * Creation of the SectorMixin var. + * + * This contains all the functions the Network object can use to employ the sector system. + * The sector system is always used by Network, though the benefits only apply to the use of clustering. + * If clustering is not used, there is no overhead except for a duplicate object with references to nodes and edges. + */ - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } + /** + * This function is only called by the setData function of the Network object. + * This loads the global references into the active sector. This initializes the sector. + * + * @private + */ + exports._putDataInSector = function() { + this.sectors["active"][this._sector()].nodes = this.nodes; + this.sectors["active"][this._sector()].edges = this.edges; + this.sectors["active"][this._sector()].nodeIndices = this.nodeIndices; + }; - if (!key) { - return moment._locale; - } - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } + /** + * /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied (active) sector. If a type is defined, do the specific type + * + * @param {String} sectorId + * @param {String} [sectorType] | "active" or "frozen" + * @private + */ + exports._switchToSector = function(sectorId, sectorType) { + if (sectorType === undefined || sectorType == "active") { + this._switchToActiveSector(sectorId); + } + else { + this._switchToFrozenSector(sectorId); + } + }; - return chooseLocale(key); - }; - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && hasOwnProp(obj, '_isAMomentObject')); - }; + /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied active sector. + * + * @param sectorId + * @private + */ + exports._switchToActiveSector = function(sectorId) { + this.nodeIndices = this.sectors["active"][sectorId]["nodeIndices"]; + this.nodes = this.sectors["active"][sectorId]["nodes"]; + this.edges = this.sectors["active"][sectorId]["edges"]; + }; - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); - } + /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied active sector. + * + * @private + */ + exports._switchToSupportSector = function() { + this.nodeIndices = this.sectors["support"]["nodeIndices"]; + this.nodes = this.sectors["support"]["nodes"]; + this.edges = this.sectors["support"]["edges"]; + }; - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; - } + /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied frozen sector. + * + * @param sectorId + * @private + */ + exports._switchToFrozenSector = function(sectorId) { + this.nodeIndices = this.sectors["frozen"][sectorId]["nodeIndices"]; + this.nodes = this.sectors["frozen"][sectorId]["nodes"]; + this.edges = this.sectors["frozen"][sectorId]["edges"]; + }; - return m; - }; - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the currently active sector. + * + * @private + */ + exports._loadLatestSector = function() { + this._switchToSector(this._sector()); + }; - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; - moment.isDate = isDate; + /** + * This function returns the currently active sector Id + * + * @returns {String} + * @private + */ + exports._sector = function() { + return this.activeSector[this.activeSector.length-1]; + }; - /************************************ - Moment Prototype - ************************************/ + /** + * This function returns the previously active sector Id + * + * @returns {String} + * @private + */ + exports._previousSector = function() { + if (this.activeSector.length > 1) { + return this.activeSector[this.activeSector.length-2]; + } + else { + throw new TypeError('there are not enough sectors in the this.activeSector array.'); + } + }; - extend(moment.fn = Moment.prototype, { - clone : function () { - return moment(this); - }, + /** + * We add the active sector at the end of the this.activeSector array + * This ensures it is the currently active sector returned by _sector() and it reaches the top + * of the activeSector stack. When we reverse our steps we move from the end to the beginning of this stack. + * + * @param newId + * @private + */ + exports._setActiveSector = function(newId) { + this.activeSector.push(newId); + }; - valueOf : function () { - return +this._d - ((this._offset || 0) * 60000); - }, - unix : function () { - return Math.floor(+this / 1000); - }, + /** + * We remove the currently active sector id from the active sector stack. This happens when + * we reactivate the previously active sector + * + * @private + */ + exports._forgetLastSector = function() { + this.activeSector.pop(); + }; - toString : function () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - }, - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, + /** + * This function creates a new active sector with the supplied newId. This newId + * is the expanding node id. + * + * @param {String} newId | Id of the new active sector + * @private + */ + exports._createNewSector = function(newId) { + // create the new sector + this.sectors["active"][newId] = {"nodes":{}, + "edges":{}, + "nodeIndices":[], + "formationScale": this.scale, + "drawingNode": undefined}; - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - }, + // create the new sector render node. This gives visual feedback that you are in a new sector. + this.sectors["active"][newId]['drawingNode'] = new Node( + {id:newId, + color: { + background: "#eaefef", + border: "495c5e" + } + },{},{},this.constants); + this.sectors["active"][newId]['drawingNode'].clusterSize = 2; + }; - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, - isValid : function () { - return isValid(this); - }, + /** + * This function removes the currently active sector. This is called when we create a new + * active sector. + * + * @param {String} sectorId | Id of the active sector that will be removed + * @private + */ + exports._deleteActiveSector = function(sectorId) { + delete this.sectors["active"][sectorId]; + }; - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } - return false; - }, + /** + * This function removes the currently active sector. This is called when we reactivate + * the previously active sector. + * + * @param {String} sectorId | Id of the active sector that will be removed + * @private + */ + exports._deleteFrozenSector = function(sectorId) { + delete this.sectors["frozen"][sectorId]; + }; - parsingFlags : function () { - return extend({}, this._pf); - }, - invalidAt: function () { - return this._pf.overflow; - }, + /** + * Freezing an active sector means moving it from the "active" object to the "frozen" object. + * We copy the references, then delete the active entree. + * + * @param sectorId + * @private + */ + exports._freezeSector = function(sectorId) { + // we move the set references from the active to the frozen stack. + this.sectors["frozen"][sectorId] = this.sectors["active"][sectorId]; - utc : function (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - }, + // we have moved the sector data into the frozen set, we now remove it from the active set + this._deleteActiveSector(sectorId); + }; - local : function (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; - if (keepLocalTime) { - this.subtract(this._dateUtcOffset(), 'm'); - } - } - return this; - }, + /** + * This is the reverse operation of _freezeSector. Activating means moving the sector from the "frozen" + * object to the "active" object. + * + * @param sectorId + * @private + */ + exports._activateSector = function(sectorId) { + // we move the set references from the frozen to the active stack. + this.sectors["active"][sectorId] = this.sectors["frozen"][sectorId]; - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, + // we have moved the sector data into the active set, we now remove it from the frozen stack + this._deleteFrozenSector(sectorId); + }; - add : createAdder(1, 'add'), - subtract : createAdder(-1, 'subtract'), + /** + * This function merges the data from the currently active sector with a frozen sector. This is used + * in the process of reverting back to the previously active sector. + * The data that is placed in the frozen (the previously active) sector is the node that has been removed from it + * upon the creation of a new active sector. + * + * @param sectorId + * @private + */ + exports._mergeThisWithFrozen = function(sectorId) { + // copy all nodes + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.sectors["frozen"][sectorId]["nodes"][nodeId] = this.nodes[nodeId]; + } + } - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, - anchor, diff, output, daysAdjust; + // copy all edges (if not fully clustered, else there are no edges) + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + this.sectors["frozen"][sectorId]["edges"][edgeId] = this.edges[edgeId]; + } + } - units = normalizeUnits(units); + // merge the nodeIndices + for (var i = 0; i < this.nodeIndices.length; i++) { + this.sectors["frozen"][sectorId]["nodeIndices"].push(this.nodeIndices[i]); + } + }; - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - diff = this - that; - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, + /** + * This clusters the sector to one cluster. It was a single cluster before this process started so + * we revert to that state. The clusterToFit function with a maximum size of 1 node does this. + * + * @private + */ + exports._collapseThisToSingleCluster = function() { + this.clusterToFit(1,false); + }; - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're locat/utc/offset - // or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this, moment(now))); - }, + /** + * We create a new active sector from the node that we want to open. + * + * @param node + * @private + */ + exports._addSector = function(node) { + // this is the currently active sector + var sector = this._sector(); - isLeapYear : function () { - return isLeapYear(this.year()); - }, + // // this should allow me to select nodes from a frozen set. + // if (this.sectors['active'][sector]["nodes"].hasOwnProperty(node.id)) { + // console.log("the node is part of the active sector"); + // } + // else { + // console.log("I dont know what the fuck happened!!"); + // } - isDST : function () { - return (this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset()); - }, + // when we switch to a new sector, we remove the node that will be expanded from the current nodes list. + delete this.nodes[node.id]; - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - }, + var unqiueIdentifier = util.randomUUID(); - month : makeAccessor('Month', true), + // we fully freeze the currently active sector + this._freezeSector(sector); - startOf : function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ - } + // we create a new active sector. This sector has the Id of the node to ensure uniqueness + this._createNewSector(unqiueIdentifier); - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } + // we add the active sector to the sectors array to be able to revert these steps later on + this._setActiveSector(unqiueIdentifier); - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } + // we redirect the global references to the new sector's references. this._sector() now returns unqiueIdentifier + this._switchToSector(this._sector()); - return this; - }, + // finally we add the node we removed from our previous active sector to the new active sector + this.nodes[node.id] = node; + }; - endOf: function (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, - isAfter: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this > +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return inputMs < +this.clone().startOf(units); - } - }, + /** + * We close the sector that is currently open and revert back to the one before. + * If the active sector is the "default" sector, nothing happens. + * + * @private + */ + exports._collapseSector = function() { + // the currently active sector + var sector = this._sector(); - isBefore: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this < +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return +this.clone().endOf(units) < inputMs; - } - }, + // we cannot collapse the default sector + if (sector != "default") { + if ((this.nodeIndices.length == 1) || + (this.sectors["active"][sector]["drawingNode"].width*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || + (this.sectors["active"][sector]["drawingNode"].height*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { + var previousSector = this._previousSector(); - isBetween: function (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); - }, + // we collapse the sector back to a single cluster + this._collapseThisToSingleCluster(); - isSame: function (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this === +input; - } else { - inputMs = +moment(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); - } - }, + // we move the remaining nodes, edges and nodeIndices to the previous sector. + // This previous sector is the one we will reactivate + this._mergeThisWithFrozen(previousSector); - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), + // the previously active (frozen) sector now has all the data from the currently active sector. + // we can now delete the active sector. + this._deleteActiveSector(sector); - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), + // we activate the previously active (and currently frozen) sector. + this._activateSector(previousSector); - zone : deprecate( - 'moment().zone is deprecated, use moment().utcOffset instead. ' + - 'https://github.com/moment/moment/issues/1779', - function (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } + // we load the references from the newly active sector into the global references + this._switchToSector(previousSector); - this.utcOffset(input, keepLocalTime); + // we forget the previously active sector because we reverted to the one before + this._forgetLastSector(); - return this; - } else { - return -this.utcOffset(); - } - } - ), + // finally, we update the node index list. + this._updateNodeIndexList(); - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - utcOffset : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = utcOffsetFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._dateUtcOffset(); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } - } + // we refresh the list with calulation nodes and calculation node indices. + this._updateCalculationNodes(); + } + } + }; - return this; - } else { - return this._isUTC ? offset : this._dateUtcOffset(); - } - }, - isLocal : function () { - return !this._isUTC; - }, + /** + * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we dont pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private + */ + exports._doInAllActiveSectors = function(runFunction,argument) { + var returnValues = []; + if (argument === undefined) { + for (var sector in this.sectors["active"]) { + if (this.sectors["active"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToActiveSector(sector); + returnValues.push( this[runFunction]() ); + } + } + } + else { + for (var sector in this.sectors["active"]) { + if (this.sectors["active"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToActiveSector(sector); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + returnValues.push( this[runFunction](args[0],args[1]) ); + } + else { + returnValues.push( this[runFunction](argument) ); + } + } + } + } + // we revert the global references back to our active sector + this._loadLatestSector(); + return returnValues; + }; - isUtcOffset : function () { - return this._isUTC; - }, - isUtc : function () { - return this._isUTC && this._offset === 0; - }, + /** + * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we dont pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private + */ + exports._doInSupportSector = function(runFunction,argument) { + var returnValues = false; + if (argument === undefined) { + this._switchToSupportSector(); + returnValues = this[runFunction](); + } + else { + this._switchToSupportSector(); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + returnValues = this[runFunction](args[0],args[1]); + } + else { + returnValues = this[runFunction](argument); + } + } + // we revert the global references back to our active sector + this._loadLatestSector(); + return returnValues; + }; - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, + /** + * This runs a function in all frozen sectors. This is used in the _redraw(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we don't pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private + */ + exports._doInAllFrozenSectors = function(runFunction,argument) { + if (argument === undefined) { + for (var sector in this.sectors["frozen"]) { + if (this.sectors["frozen"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToFrozenSector(sector); + this[runFunction](); + } + } + } + else { + for (var sector in this.sectors["frozen"]) { + if (this.sectors["frozen"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToFrozenSector(sector); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + this[runFunction](args[0],args[1]); + } + else { + this[runFunction](argument); + } + } + } + } + this._loadLatestSector(); + }; - parseZone : function () { - if (this._tzm) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - this.utcOffset(utcOffsetFromString(this._i)); - } - return this; - }, - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).utcOffset(); - } + /** + * This runs a function in all sectors. This is used in the _redraw(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we don't pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private + */ + exports._doInAllSectors = function(runFunction,argument) { + var args = Array.prototype.splice.call(arguments, 1); + if (argument === undefined) { + this._doInAllActiveSectors(runFunction); + this._doInAllFrozenSectors(runFunction); + } + else { + if (args.length > 1) { + this._doInAllActiveSectors(runFunction,args[0],args[1]); + this._doInAllFrozenSectors(runFunction,args[0],args[1]); + } + else { + this._doInAllActiveSectors(runFunction,argument); + this._doInAllFrozenSectors(runFunction,argument); + } + } + }; - return (this.utcOffset() - input) % 60 === 0; - }, - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + /** + * This clears the nodeIndices list. We cannot use this.nodeIndices = [] because we would break the link with the + * active sector. Thus we clear the nodeIndices in the active sector, then reconnect the this.nodeIndices to it. + * + * @private + */ + exports._clearNodeIndexList = function() { + var sector = this._sector(); + this.sectors["active"][sector]["nodeIndices"] = []; + this.nodeIndices = this.sectors["active"][sector]["nodeIndices"]; + }; - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - }, - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + /** + * Draw the encompassing sector node + * + * @param ctx + * @param sectorType + * @private + */ + exports._drawSectorNodes = function(ctx,sectorType) { + var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; + for (var sector in this.sectors[sectorType]) { + if (this.sectors[sectorType].hasOwnProperty(sector)) { + if (this.sectors[sectorType][sector]["drawingNode"] !== undefined) { - weekYear : function (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - }, + this._switchToSector(sector,sectorType); - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, + minY = 1e9; maxY = -1e9; minX = 1e9; maxX = -1e9; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.resize(ctx); + if (minX > node.x - 0.5 * node.width) {minX = node.x - 0.5 * node.width;} + if (maxX < node.x + 0.5 * node.width) {maxX = node.x + 0.5 * node.width;} + if (minY > node.y - 0.5 * node.height) {minY = node.y - 0.5 * node.height;} + if (maxY < node.y + 0.5 * node.height) {maxY = node.y + 0.5 * node.height;} + } + } + node = this.sectors[sectorType][sector]["drawingNode"]; + node.x = 0.5 * (maxX + minX); + node.y = 0.5 * (maxY + minY); + node.width = 2 * (node.x - minX); + node.height = 2 * (node.y - minY); + node.options.radius = Math.sqrt(Math.pow(0.5*node.width,2) + Math.pow(0.5*node.height,2)); + node.setScale(this.scale); + node._drawCircle(ctx); + } + } + } + }; - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + exports._drawAllSectorNodes = function(ctx) { + this._drawSectorNodes(ctx,"frozen"); + this._drawSectorNodes(ctx,"active"); + this._loadLatestSector(); + }; - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, +/***/ }, +/* 60 */ +/***/ function(module, exports, __webpack_require__) { - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, + var Node = __webpack_require__(40); - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, + /** + * This function can be called from the _doInAllSectors function + * + * @param object + * @param overlappingNodes + * @private + */ + exports._getNodesOverlappingWith = function(object, overlappingNodes) { + var nodes = this.nodes; + for (var nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + if (nodes[nodeId].isOverlappingWith(object)) { + overlappingNodes.push(nodeId); + } + } + } + }; - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, + /** + * retrieve all nodes overlapping with given object + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes + * @private + */ + exports._getAllNodesOverlappingWith = function (object) { + var overlappingNodes = []; + this._doInAllActiveSectors("_getNodesOverlappingWith",object,overlappingNodes); + return overlappingNodes; + }; - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, - set : function (units, value) { - var unit; - if (typeof units === 'object') { - for (unit in units) { - this.set(unit, units[unit]); - } - } - else { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); - } - } - return this; - }, + /** + * Return a position object in canvasspace from a single point in screenspace + * + * @param pointer + * @returns {{left: number, top: number, right: number, bottom: number}} + * @private + */ + exports._pointerToPositionObject = function(pointer) { + var x = this._XconvertDOMtoCanvas(pointer.x); + var y = this._YconvertDOMtoCanvas(pointer.y); - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - var newLocaleData; + return { + left: x, + top: y, + right: x, + bottom: y + }; + }; - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = moment.localeData(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - }, - lang : deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ), + /** + * Get the top node at the a specific point (like a click) + * + * @param {{x: Number, y: Number}} pointer + * @return {Node | null} node + * @private + */ + exports._getNodeAt = function (pointer) { + // we first check if this is an navigation controls element + var positionObject = this._pointerToPositionObject(pointer); + var overlappingNodes = this._getAllNodesOverlappingWith(positionObject); - localeData : function () { - return this._locale; - }, + // if there are overlapping nodes, select the last one, this is the + // one which is drawn on top of the others + if (overlappingNodes.length > 0) { + return this.nodes[overlappingNodes[overlappingNodes.length - 1]]; + } + else { + return null; + } + }; - _dateUtcOffset : function () { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(this._d.getTimezoneOffset() / 15) * 15; - } - - }); - - function rawMonthSetter(mom, value) { - var dayOfMonth; - - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } - } - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; + /** + * retrieve all edges overlapping with given object, selector is around center + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes + * @private + */ + exports._getEdgesOverlappingWith = function (object, overlappingEdges) { + var edges = this.edges; + for (var edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + if (edges[edgeId].isOverlappingWith(object)) { + overlappingEdges.push(edgeId); + } } + } + }; - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); - } - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - } + /** + * retrieve all nodes overlapping with given object + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes + * @private + */ + exports._getAllEdgesOverlappingWith = function (object) { + var overlappingEdges = []; + this._doInAllActiveSectors("_getEdgesOverlappingWith",object,overlappingEdges); + return overlappingEdges; + }; - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; - } else { - return rawGetter(this, unit); - } - }; - } + /** + * Place holder. To implement change the _getNodeAt to a _getObjectAt. Have the _getObjectAt call + * _getNodeAt and _getEdgesAt, then priortize the selection to user preferences. + * + * @param pointer + * @returns {null} + * @private + */ + exports._getEdgeAt = function(pointer) { + var positionObject = this._pointerToPositionObject(pointer); + var overlappingEdges = this._getAllEdgesOverlappingWith(positionObject); - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + if (overlappingEdges.length > 0) { + return this.edges[overlappingEdges[overlappingEdges.length - 1]]; + } + else { + return null; + } + }; - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; + /** + * Add object to the selection array. + * + * @param obj + * @private + */ + exports._addToSelection = function(obj) { + if (obj instanceof Node) { + this.selectionObj.nodes[obj.id] = obj; + } + else { + this.selectionObj.edges[obj.id] = obj; + } + }; - // alias isUtc for dev-friendliness - moment.fn.isUTC = moment.fn.isUtc; + /** + * Add object to the selection array. + * + * @param obj + * @private + */ + exports._addToHover = function(obj) { + if (obj instanceof Node) { + this.hoverObj.nodes[obj.id] = obj; + } + else { + this.hoverObj.edges[obj.id] = obj; + } + }; - /************************************ - Duration Prototype - ************************************/ + /** + * Remove a single option from selection. + * + * @param {Object} obj + * @private + */ + exports._removeFromSelection = function(obj) { + if (obj instanceof Node) { + delete this.selectionObj.nodes[obj.id]; + } + else { + delete this.selectionObj.edges[obj.id]; + } + }; - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; + /** + * Unselect all. The selectionObj is useful for this. + * + * @param {Boolean} [doNotTrigger] | ignore trigger + * @private + */ + exports._unselectAll = function(doNotTrigger) { + if (doNotTrigger === undefined) { + doNotTrigger = false; + } + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + this.selectionObj.nodes[nodeId].unselect(); } - - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + this.selectionObj.edges[edgeId].unselect(); } + } - extend(moment.duration.fn = Duration.prototype, { + this.selectionObj = {nodes:{},edges:{}}; - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); + } + }; - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + /** + * Unselect all clusters. The selectionObj is useful for this. + * + * @param {Boolean} [doNotTrigger] | ignore trigger + * @private + */ + exports._unselectClusters = function(doNotTrigger) { + if (doNotTrigger === undefined) { + doNotTrigger = false; + } - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (this.selectionObj.nodes[nodeId].clusterSize > 1) { + this.selectionObj.nodes[nodeId].unselect(); + this._removeFromSelection(this.selectionObj.nodes[nodeId]); + } + } + } - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); + } + }; - hours = absRound(minutes / 60); - data.hours = hours % 24; - days += absRound(hours / 24); + /** + * return the number of selected nodes + * + * @returns {number} + * @private + */ + exports._getSelectedNodeCount = function() { + var count = 0; + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + count += 1; + } + } + return count; + }; - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); + /** + * return the selected node + * + * @returns {number} + * @private + */ + exports._getSelectedNode = function() { + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + return this.selectionObj.nodes[nodeId]; + } + } + return null; + }; - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + /** + * return the selected edge + * + * @returns {number} + * @private + */ + exports._getSelectedEdge = function() { + for (var edgeId in this.selectionObj.edges) { + if (this.selectionObj.edges.hasOwnProperty(edgeId)) { + return this.selectionObj.edges[edgeId]; + } + } + return null; + }; - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; - data.days = days; - data.months = months; - data.years = years; - }, + /** + * return the number of selected edges + * + * @returns {number} + * @private + */ + exports._getSelectedEdgeCount = function() { + var count = 0; + for (var edgeId in this.selectionObj.edges) { + if (this.selectionObj.edges.hasOwnProperty(edgeId)) { + count += 1; + } + } + return count; + }; - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); - this._data.milliseconds = Math.abs(this._data.milliseconds); - this._data.seconds = Math.abs(this._data.seconds); - this._data.minutes = Math.abs(this._data.minutes); - this._data.hours = Math.abs(this._data.hours); - this._data.months = Math.abs(this._data.months); - this._data.years = Math.abs(this._data.years); + /** + * return the number of selected objects. + * + * @returns {number} + * @private + */ + exports._getSelectedObjectCount = function() { + var count = 0; + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + count += 1; + } + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + count += 1; + } + } + return count; + }; - return this; - }, + /** + * Check if anything is selected + * + * @returns {boolean} + * @private + */ + exports._selectionIsEmpty = function() { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + return false; + } + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + return false; + } + } + return true; + }; - weeks : function () { - return absRound(this.days() / 7); - }, - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + /** + * check if one of the selected nodes is a cluster. + * + * @returns {boolean} + * @private + */ + exports._clusterInSelection = function() { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (this.selectionObj.nodes[nodeId].clusterSize > 1) { + return true; + } + } + } + return false; + }; - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); + /** + * select the edges connected to the node that is being selected + * + * @param {Node} node + * @private + */ + exports._selectConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.select(); + this._addToSelection(edge); + } + }; - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); - } + /** + * select the edges connected to the node that is being selected + * + * @param {Node} node + * @private + */ + exports._hoverConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.hover = true; + this._addToHover(edge); + } + }; - return this.localeData().postformat(output); - }, - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); + /** + * unselect the edges connected to the node that is being selected + * + * @param {Node} node + * @private + */ + exports._unselectConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.unselect(); + this._removeFromSelection(edge); + } + }; - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; - this._bubble(); - return this; - }, - subtract : function (input, val) { - var dur = moment.duration(input, val); + /** + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection + * + * @param {Node || Edge} object + * @param {Boolean} append + * @param {Boolean} [doNotTrigger] | ignore trigger + * @private + */ + exports._selectObject = function(object, append, doNotTrigger, highlightEdges, overrideSelectable) { + if (doNotTrigger === undefined) { + doNotTrigger = false; + } + if (highlightEdges === undefined) { + highlightEdges = true; + } - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + if (this._selectionIsEmpty() == false && append == false && this.forceAppendSelection == false) { + this._unselectAll(true); + } - this._bubble(); + // selectable allows the object to be selected. Override can be used if needed to bypass this. + if (object.selected == false && (this.constants.selectable == true || overrideSelectable)) { + object.select(); + this._addToSelection(object); + if (object instanceof Node && this.blockConnectingEdgeSelection == false && highlightEdges == true) { + this._selectConnectedEdges(object); + } + } + // do not select the object if selectable is false, only add it to selection to allow drag to work + else if (object.selected == false) { + this._addToSelection(object); + doNotTrigger = true; + } + else { + object.unselect(); + this._removeFromSelection(object); + } - return this; - }, + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); + } + }; - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, - as : function (units) { - var days, months; - units = normalizeUnits(units); + /** + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection + * + * @param {Node || Edge} object + * @private + */ + exports._blurObject = function(object) { + if (object.hover == true) { + object.hover = false; + this.emit("blurNode",{node:object.id}); + } + }; - if (units === 'month' || units === 'year') { - days = this._days + this._milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(yearsToDays(this._months / 12)); - switch (units) { - case 'week': return days / 7 + this._milliseconds / 6048e5; - case 'day': return days + this._milliseconds / 864e5; - case 'hour': return days * 24 + this._milliseconds / 36e5; - case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; - case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } - }, - - lang : moment.fn.lang, - locale : moment.fn.locale, - - toIsoString : deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead ' + - '(notice the capitals)', - function () { - return this.toISOString(); - } - ), - - toISOString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); - - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } - - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); - }, + /** + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection + * + * @param {Node || Edge} object + * @private + */ + exports._hoverObject = function(object) { + if (object.hover == false) { + object.hover = true; + this._addToHover(object); + if (object instanceof Node) { + this.emit("hoverNode",{node:object.id}); + } + } + if (object instanceof Node) { + this._hoverConnectedEdges(object); + } + }; - localeData : function () { - return this._locale; - }, - toJSON : function () { - return this.toISOString(); - } - }); + /** + * handles the selection part of the touch, only for navigation controls elements; + * Touch is triggered before tap, also before hold. Hold triggers after a while. + * This is the most responsive solution + * + * @param {Object} pointer + * @private + */ + exports._handleTouch = function(pointer) { + }; - moment.duration.fn.toString = moment.duration.fn.toISOString; - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; + /** + * handles the selection part of the tap; + * + * @param {Object} pointer + * @private + */ + exports._handleTap = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null) { + this._selectObject(node, false); + } + else { + var edge = this._getEdgeAt(pointer); + if (edge != null) { + this._selectObject(edge, false); } - - for (i in unitMillisecondFactors) { - if (hasOwnProp(unitMillisecondFactors, i)) { - makeDurationGetter(i.toLowerCase()); - } + else { + this._unselectAll(); } + } + var properties = this.getSelection(); + properties['pointer'] = { + DOM: {x: pointer.x, y: pointer.y}, + canvas: {x: this._XconvertDOMtoCanvas(pointer.x), y: this._YconvertDOMtoCanvas(pointer.y)} + } + this.emit("click", properties); + this._requestRedraw(); + }; - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); - }; - - /************************************ - Default Locale - ************************************/ - - - // Set default locale, other locale will inherit from English. - moment.locale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); - - /* EMBED_LOCALES */ - - /************************************ - Exposing Moment - ************************************/ - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - 'Accessing Moment through the global scope is ' + - 'deprecated, and will be removed in an upcoming ' + - 'release.', - moment); - } else { - globalScope.moment = moment; - } - } + /** + * handles the selection part of the double tap and opens a cluster if needed + * + * @param {Object} pointer + * @private + */ + exports._handleDoubleTap = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null && node !== undefined) { + // we reset the areaCenter here so the opening of the node will occur + this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), + "y" : this._YconvertDOMtoCanvas(pointer.y)}; + this.openCluster(node); + } + var properties = this.getSelection(); + properties['pointer'] = { + DOM: {x: pointer.x, y: pointer.y}, + canvas: {x: this._XconvertDOMtoCanvas(pointer.x), y: this._YconvertDOMtoCanvas(pointer.y)} + } + this.emit("doubleClick", properties); + }; - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; - } - return moment; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - makeGlobal(true); - } else { - makeGlobal(); + /** + * Handle the onHold selection part + * + * @param pointer + * @private + */ + exports._handleOnHold = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null) { + this._selectObject(node,true); + } + else { + var edge = this._getEdgeAt(pointer); + if (edge != null) { + this._selectObject(edge,true); } - }).call(this); - - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) + } + this._requestRedraw(); + }; -/***/ }, -/* 59 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 - * http://eightmedia.github.io/hammer.js + /** + * handle the onRelease event. These functions are here for the navigation controls module + * and data manipulation module. * - * Copyright (c) 2014 Jorik Tangelder ; - * Licensed under the MIT license */ + * @private + */ + exports._handleOnRelease = function(pointer) { + this._manipulationReleaseOverload(pointer); + this._navigationReleaseOverload(pointer); + }; - (function(window, undefined) { - 'use strict'; + exports._manipulationReleaseOverload = function (pointer) {}; + exports._navigationReleaseOverload = function (pointer) {}; /** - * @main - * @module hammer * - * @class Hammer - * @static + * retrieve the currently selected objects + * @return {{nodes: Array., edges: Array.}} selection */ + exports.getSelection = function() { + var nodeIds = this.getSelectedNodes(); + var edgeIds = this.getSelectedEdges(); + return {nodes:nodeIds, edges:edgeIds}; + }; /** - * Hammer, use this to create instances - * ```` - * var hammertime = new Hammer(myElement); - * ```` * - * @method Hammer - * @param {HTMLElement} element - * @param {Object} [options={}] - * @return {Hammer.Instance} + * retrieve the currently selected nodes + * @return {String[]} selection An array with the ids of the + * selected nodes. */ - var Hammer = function Hammer(element, options) { - return new Hammer.Instance(element, options || {}); + exports.getSelectedNodes = function() { + var idArray = []; + if (this.constants.selectable == true) { + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + idArray.push(nodeId); + } + } + } + return idArray }; /** - * version, as defined in package.json - * the value will be set at each build - * @property VERSION - * @final - * @type {String} + * + * retrieve the currently selected edges + * @return {Array} selection An array with the ids of the + * selected nodes. */ - Hammer.VERSION = '1.1.3'; + exports.getSelectedEdges = function() { + var idArray = []; + if (this.constants.selectable == true) { + for (var edgeId in this.selectionObj.edges) { + if (this.selectionObj.edges.hasOwnProperty(edgeId)) { + idArray.push(edgeId); + } + } + } + return idArray; + }; + /** - * default settings. - * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled - * by setting it's name (like `swipe`) to false. - * You can set the defaults for all instances by changing this object before creating an instance. - * @example - * ```` - * Hammer.defaults.drag = false; - * Hammer.defaults.behavior.touchAction = 'pan-y'; - * delete Hammer.defaults.behavior.userSelect; - * ```` - * @property defaults - * @type {Object} + * select zero or more nodes DEPRICATED + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. */ - Hammer.defaults = { - /** - * this setting object adds styles and attributes to the element to prevent the browser from doing - * its native behavior. The css properties are auto prefixed for the browsers when needed. - * @property defaults.behavior - * @type {Object} - */ - behavior: { - /** - * Disables text selection to improve the dragging gesture. When the value is `none` it also sets - * `onselectstart=false` for IE on the element. Mainly for desktop browsers. - * @property defaults.behavior.userSelect - * @type {String} - * @default 'none' - */ - userSelect: 'none', + exports.setSelection = function() { + console.log("setSelection is deprecated. Please use selectNodes instead.") + }; - /** - * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). - * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. - * @property defaults.behavior.touchAction - * @type {String} - * @default: 'pan-y' - */ - touchAction: 'pan-y', - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @property defaults.behavior.touchCallout - * @type {String} - * @default 'none' - */ - touchCallout: 'none', + /** + * select zero or more nodes with the option to highlight edges + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. + * @param {boolean} [highlightEdges] + */ + exports.selectNodes = function(selection, highlightEdges) { + var i, iMax, id; - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', + if (!selection || (selection.length == undefined)) + throw 'Selection must be an array with ids'; - /** - * Specifies that an entire element should be draggable instead of its contents. - * Mainly for desktop browsers. - * @property defaults.behavior.userDrag - * @type {String} - * @default 'none' - */ - userDrag: 'none', + // first unselect any selected node + this._unselectAll(true); - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. - * - * If you don't specify an alpha value, Safari on iPhone applies a default alpha value - * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). - * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. - * @property defaults.behavior.tapHighlightColor - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: 'rgba(0,0,0,0)' + for (i = 0, iMax = selection.length; i < iMax; i++) { + id = selection[i]; + + var node = this.nodes[id]; + if (!node) { + throw new RangeError('Node with id "' + id + '" not found'); } + this._selectObject(node,true,true,highlightEdges,true); + } + this.redraw(); }; - /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document - */ - Hammer.DOCUMENT = document; /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} + * select zero or more edges + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + exports.selectEdges = function(selection) { + var i, iMax, id; - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} - */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + if (!selection || (selection.length == undefined)) + throw 'Selection must be an array with ids'; - /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} - */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + // first unselect any selected node + this._unselectAll(true); - /** - * detect if we want to support mouseevents at all - * @property NO_MOUSEEVENTS - * @type {Boolean} - */ - Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; + for (i = 0, iMax = selection.length; i < iMax; i++) { + id = selection[i]; - /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 - */ - Hammer.CALCULATE_INTERVAL = 25; + var edge = this.edges[id]; + if (!edge) { + throw new RangeError('Edge with id "' + id + '" not found'); + } + this._selectObject(edge,true,true,false,true); + } + this.redraw(); + }; /** - * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` - * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) - * @property EVENT_TYPES + * Validate the selection: remove ids of nodes which no longer exist * @private - * @writeOnce - * @type {Object} */ - var EVENT_TYPES = {}; + exports._updateSelection = function () { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (!this.nodes.hasOwnProperty(nodeId)) { + delete this.selectionObj.nodes[nodeId]; + } + } + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + if (!this.edges.hasOwnProperty(edgeId)) { + delete this.selectionObj.edges[edgeId]; + } + } + } + }; - /** - * direction strings, for safe comparisons - * @property DIRECTION_DOWN|LEFT|UP|RIGHT - * @final - * @type {String} - * @default 'down' 'left' 'up' 'right' - */ - var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; - var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; - var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; - var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + +/***/ }, +/* 61 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var Node = __webpack_require__(40); + var Edge = __webpack_require__(37); + var Hammer = __webpack_require__(45); /** - * pointertype strings, for safe comparisons - * @property POINTER_MOUSE|TOUCH|PEN - * @final - * @type {String} - * @default 'mouse' 'touch' 'pen' + * clears the toolbar div element of children + * + * @private */ - var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; - var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; - var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; + exports._clearManipulatorBar = function() { + this._recursiveDOMDelete(this.manipulationDiv); + this.manipulationDOM = {}; - /** - * eventtypes - * @property EVENT_START|MOVE|END|RELEASE|TOUCH - * @final - * @type {String} - * @default 'start' 'change' 'move' 'end' 'release' 'touch' - */ - var EVENT_START = Hammer.EVENT_START = 'start'; - var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; - var EVENT_END = Hammer.EVENT_END = 'end'; - var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; - var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + this._cleanManipulatorHammers(); - /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false - */ - Hammer.READY = false; + this._manipulationReleaseOverload = function () {}; + delete this.sectors['support']['nodes']['targetNode']; + delete this.sectors['support']['nodes']['targetViaNode']; + this.controlNodesActive = false; + this.freezeSimulation(false); + }; + + + exports._cleanManipulatorHammers = function() { + // clean hammer bindings + if (this.manipulationHammers.length != 0) { + for (var i = 0; i < this.manipulationHammers.length; i++) { + this.manipulationHammers[i].dispose(); + } + this.manipulationHammers = []; + } + }; /** - * plugins namespace - * @property plugins - * @type {Object} + * Manipulation UI temporarily overloads certain functions to extend or replace them. To be able to restore + * these functions to their original functionality, we saved them in this.cachedFunctions. + * This function restores these functions to their original function. + * + * @private */ - Hammer.plugins = Hammer.plugins || {}; + exports._restoreOverloadedFunctions = function() { + for (var functionName in this.cachedFunctions) { + if (this.cachedFunctions.hasOwnProperty(functionName)) { + this[functionName] = this.cachedFunctions[functionName]; + delete this.cachedFunctions[functionName]; + } + } + }; /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} + * Enable or disable edit-mode. + * + * @private */ - Hammer.gestures = Hammer.gestures || {}; + exports._toggleEditMode = function() { + this.editMode = !this.editMode; + var toolbar = this.manipulationDiv; + var closeDiv = this.closeDiv; + var editModeDiv = this.editModeDiv; + if (this.editMode == true) { + toolbar.style.display="block"; + closeDiv.style.display="block"; + editModeDiv.style.display="none"; + this._bindHammerToDiv(closeDiv,'_toggleEditMode'); + } + else { + toolbar.style.display="none"; + closeDiv.style.display="none"; + editModeDiv.style.display="block"; + } + this._createManipulatorBar() + }; /** - * setup events to detect gestures on the document - * this function is called when creating an new instance + * main function, creates the main toolbar. Removes functions bound to the select event. Binds all the buttons of the toolbar. + * * @private */ - function setup() { - if(Hammer.READY) { - return; - } + exports._createManipulatorBar = function() { + // remove bound functions + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - // find what eventtypes we add listeners to - Event.determineEventTypes(); + this._cleanManipulatorHammers(); - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); + var locale = this.constants.locales[this.constants.locale]; - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + if (this.edgeBeingEdited !== undefined) { + this.edgeBeingEdited._disableControlNodes(); + this.edgeBeingEdited = undefined; + this.selectedControlNode = null; + this.controlNodesActive = false; + this._redraw(); + } - // Hammer is ready...! - Hammer.READY = true; - } + // restore overloaded functions + this._restoreOverloadedFunctions(); - /** - * @module hammer - * - * @class Utils - * @static - */ - var Utils = Hammer.utils = { - /** - * extend method, could also be used for cloning when `dest` is an empty object. - * changes the dest object - * @method extend - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge=false] do a merge - * @return {Object} dest - */ - extend: function extend(dest, src, merge) { - for(var key in src) { - if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { - continue; - } - dest[key] = src[key]; - } - return dest; - }, + // resume calculation + this.freezeSimulation(false); - /** - * simple addEventListener wrapper - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - on: function on(element, type, handler) { - element.addEventListener(type, handler, false); - }, + // reset global variables + this.blockConnectingEdgeSelection = false; + this.forceAppendSelection = false; + this.manipulationDOM = {}; - /** - * simple removeEventListener wrapper - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - off: function off(element, type, handler) { - element.removeEventListener(type, handler, false); - }, + if (this.editMode == true) { + while (this.manipulationDiv.hasChildNodes()) { + this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); + } - /** - * forEach over arrays and objects - * @method each - * @param {Object|Array} obj - * @param {Function} iterator - * @param {any} iterator.item - * @param {Number} iterator.index - * @param {Object|Array} iterator.obj the source object - * @param {Object} context value to use as `this` in the iterator - */ - each: function each(obj, iterator, context) { - var i, len; + this.manipulationDOM['addNodeSpan'] = document.createElement('div'); + this.manipulationDOM['addNodeSpan'].className = 'network-manipulationUI add'; - // native forEach on arrays - if('forEach' in obj) { - obj.forEach(iterator, context); - // arrays - } else if(obj.length !== undefined) { - for(i = 0, len = obj.length; i < len; i++) { - if(iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - // objects - } else { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - } - }, + this.manipulationDOM['addNodeLabelSpan'] = document.createElement('div'); + this.manipulationDOM['addNodeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['addNodeLabelSpan'].innerHTML = locale['addNode']; + this.manipulationDOM['addNodeSpan'].appendChild(this.manipulationDOM['addNodeLabelSpan']); - /** - * find if a string contains the string using indexOf - * @method inStr - * @param {String} src - * @param {String} find - * @return {Boolean} found - */ - inStr: function inStr(src, find) { - return src.indexOf(find) > -1; - }, + this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; - /** - * find if a array contains the object using indexOf or a simple polyfill - * @method inArray - * @param {String} src - * @param {String} find - * @return {Boolean|Number} false when not found, or the index - */ - inArray: function inArray(src, find) { - if(src.indexOf) { - var index = src.indexOf(find); - return (index === -1) ? false : index; - } else { - for(var i = 0, len = src.length; i < len; i++) { - if(src[i] === find) { - return i; - } - } - return false; - } - }, + this.manipulationDOM['addEdgeSpan'] = document.createElement('div'); + this.manipulationDOM['addEdgeSpan'].className = 'network-manipulationUI connect'; + this.manipulationDOM['addEdgeLabelSpan'] = document.createElement('div'); + this.manipulationDOM['addEdgeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['addEdgeLabelSpan'].innerHTML = locale['addEdge']; + this.manipulationDOM['addEdgeSpan'].appendChild(this.manipulationDOM['addEdgeLabelSpan']); - /** - * convert an array-like object (`arguments`, `touchlist`) to an array - * @method toArray - * @param {Object} obj - * @return {Array} - */ - toArray: function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - }, + this.manipulationDiv.appendChild(this.manipulationDOM['addNodeSpan']); + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); + this.manipulationDiv.appendChild(this.manipulationDOM['addEdgeSpan']); - /** - * find if a node is in the given parent - * @method hasParent - * @param {HTMLElement} node - * @param {HTMLElement} parent - * @return {Boolean} found - */ - hasParent: function hasParent(node, parent) { - while(node) { - if(node == parent) { - return true; - } - node = node.parentNode; - } - return false; - }, + if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { + this.manipulationDOM['seperatorLineDiv2'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv2'].className = 'network-seperatorLine'; - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; + this.manipulationDOM['editNodeSpan'] = document.createElement('div'); + this.manipulationDOM['editNodeSpan'].className = 'network-manipulationUI edit node'; + this.manipulationDOM['editNodeLabelSpan'] = document.createElement('div'); + this.manipulationDOM['editNodeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['editNodeLabelSpan'].innerHTML = locale['editNode']; + this.manipulationDOM['editNodeSpan'].appendChild(this.manipulationDOM['editNodeLabelSpan']); - // no need to loop when only one touch - if(touches.length === 1) { - return { - pageX: touches[0].pageX, - pageY: touches[0].pageY, - clientX: touches[0].clientX, - clientY: touches[0].clientY - }; - } + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv2']); + this.manipulationDiv.appendChild(this.manipulationDOM['editNodeSpan']); + } + else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { + this.manipulationDOM['seperatorLineDiv3'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv3'].className = 'network-seperatorLine'; - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); + this.manipulationDOM['editEdgeSpan'] = document.createElement('div'); + this.manipulationDOM['editEdgeSpan'].className = 'network-manipulationUI edit edge'; + this.manipulationDOM['editEdgeLabelSpan'] = document.createElement('div'); + this.manipulationDOM['editEdgeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['editEdgeLabelSpan'].innerHTML = locale['editEdge']; + this.manipulationDOM['editEdgeSpan'].appendChild(this.manipulationDOM['editEdgeLabelSpan']); - return { - pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, - pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, - clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, - clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 - }; - }, + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv3']); + this.manipulationDiv.appendChild(this.manipulationDOM['editEdgeSpan']); + } + if (this._selectionIsEmpty() == false) { + this.manipulationDOM['seperatorLineDiv4'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv4'].className = 'network-seperatorLine'; - /** - * calculate the velocity between two points. unit is in px per ms. - * @method getVelocity - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - * @return {Object} velocity `x` and `y` - */ - getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { - return { - x: Math.abs(deltaX / deltaTime) || 0, - y: Math.abs(deltaY / deltaTime) || 0 - }; - }, + this.manipulationDOM['deleteSpan'] = document.createElement('div'); + this.manipulationDOM['deleteSpan'].className = 'network-manipulationUI delete'; + this.manipulationDOM['deleteLabelSpan'] = document.createElement('div'); + this.manipulationDOM['deleteLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['deleteLabelSpan'].innerHTML = locale['del']; + this.manipulationDOM['deleteSpan'].appendChild(this.manipulationDOM['deleteLabelSpan']); - /** - * calculate the angle between two coordinates - * @method getAngle - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {Number} angle - */ - getAngle: function getAngle(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv4']); + this.manipulationDiv.appendChild(this.manipulationDOM['deleteSpan']); + } - return Math.atan2(y, x) * 180 / Math.PI; - }, + // bind the icons + this._bindHammerToDiv(this.manipulationDOM['addNodeSpan'],'_createAddNodeToolbar'); + this._bindHammerToDiv(this.manipulationDOM['addEdgeSpan'],'_createAddEdgeToolbar'); + this._bindHammerToDiv(this.closeDiv,'_toggleEditMode'); - /** - * do a small comparision to get the direction between two touches. - * @method getDirection - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` - */ - getDirection: function getDirection(touch1, touch2) { - var x = Math.abs(touch1.clientX - touch2.clientX), - y = Math.abs(touch1.clientY - touch2.clientY); + if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { + this._bindHammerToDiv(this.manipulationDOM['editNodeSpan'],'_editNode'); + } + else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { + this._bindHammerToDiv(this.manipulationDOM['editEdgeSpan'],'_createEditEdgeToolbar'); + } + if (this._selectionIsEmpty() == false) { + this._bindHammerToDiv(this.manipulationDOM['deleteSpan'],'_deleteSelected'); + } - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, + var me = this; + this.boundFunction = me._createManipulatorBar; + this.on('select', this.boundFunction); + } + else { + while (this.editModeDiv.hasChildNodes()) { + this.editModeDiv.removeChild(this.editModeDiv.firstChild); + } - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + this.manipulationDOM['editModeSpan'] = document.createElement('div'); + this.manipulationDOM['editModeSpan'].className = 'network-manipulationUI edit editmode'; + this.manipulationDOM['editModeLabelSpan'] = document.createElement('div'); + this.manipulationDOM['editModeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['editModeLabelSpan'].innerHTML = locale['edit']; + this.manipulationDOM['editModeSpan'].appendChild(this.manipulationDOM['editModeLabelSpan']); - return Math.sqrt((x * x) + (y * y)); - }, + this.editModeDiv.appendChild(this.manipulationDOM['editModeSpan']); - /** - * calculate the scale factor between two touchLists - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @method getScale - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} scale - */ - getScale: function getScale(start, end) { - // need two fingers... - if(start.length >= 2 && end.length >= 2) { - return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); - } - return 1; - }, + this._bindHammerToDiv(this.manipulationDOM['editModeSpan'],'_toggleEditMode'); + } + }; - /** - * calculate the rotation degrees between two touchLists - * @method getRotation - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} rotation - */ - getRotation: function getRotation(start, end) { - // need two fingers - if(start.length >= 2 && end.length >= 2) { - return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); - } - return 0; - }, - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, + exports._bindHammerToDiv = function(domElement, funct) { + var hammer = Hammer(domElement, {prevent_default: true}); + hammer.on('touch', this[funct].bind(this)); + this.manipulationHammers.push(hammer); + } - /** - * set css properties with their prefixes - * @param {HTMLElement} element - * @param {String} prop - * @param {String} value - * @param {Boolean} [toggle=true] - * @return {Boolean} - */ - setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { - var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; - prop = Utils.toCamelCase(prop); - for(var i = 0; i < prefixes.length; i++) { - var p = prop; - // prefixes - if(prefixes[i]) { - p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); - } + /** + * Create the toolbar for adding Nodes + * + * @private + */ + exports._createAddNodeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; - } - } - }, + var locale = this.constants.locales[this.constants.locale]; - /** - * toggle browser default behavior by setting css properties. - * `userSelect='none'` also sets `element.onselectstart` to false - * `userDrag='none'` also sets `element.ondragstart` to false - * - * @method toggleBehavior - * @param {HtmlElement} element - * @param {Object} props - * @param {Boolean} [toggle=true] - */ - toggleBehavior: function toggleBehavior(element, props, toggle) { - if(!props || !element || !element.style) { - return; - } + this.manipulationDOM = {}; + this.manipulationDOM['backSpan'] = document.createElement('div'); + this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; + this.manipulationDOM['backLabelSpan'] = document.createElement('div'); + this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; + this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); + this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; - var falseFn = toggle && function() { - return false; - }; + this.manipulationDOM['descriptionSpan'] = document.createElement('div'); + this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; + this.manipulationDOM['descriptionLabelSpan'] = document.createElement('div'); + this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['addDescription']; + this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; - } - }, + this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); + this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); - /** - * convert a string with underscores to camelCase - * so prevent_default becomes preventDefault - * @param {String} str - * @return {String} camelCaseStr - */ - toCamelCase: function toCamelCase(str) { - return str.replace(/[_-]([a-z])/g, function(s) { - return s[1].toUpperCase(); - }); - } + // bind the icon + this._bindHammerToDiv(this.manipulationDOM['backSpan'],'_createManipulatorBar'); + + // we use the boundFunction so we can reference it when we unbind it from the "select" event. + var me = this; + this.boundFunction = me._addNode; + this.on('select', this.boundFunction); }; /** - * @module hammer - */ - /** - * @class Event - * @static + * create the toolbar to connect nodes + * + * @private */ - var Event = Hammer.event = { - /** - * when touch events have been fired, this is true - * this is used to stop mouse events - * @property prevent_mouseevents - * @private - * @type {Boolean} - */ - preventMouseEvents: false, + exports._createAddEdgeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + this._unselectAll(true); + this.freezeSimulation(true); - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, + var locale = this.constants.locales[this.constants.locale]; - /** - * simple event binder with a hook and support for multiple types - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - on: function on(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.on(element, type, handler); - hook && hook(type); - }); - }, + this._unselectAll(); + this.forceAppendSelection = false; + this.blockConnectingEdgeSelection = true; - /** - * simple event unbinder with a hook and support for multiple types - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - off: function off(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.off(element, type, handler); - hook && hook(type); - }); - }, + this.manipulationDOM = {}; + this.manipulationDOM['backSpan'] = document.createElement('div'); + this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; + this.manipulationDOM['backLabelSpan'] = document.createElement('div'); + this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; + this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); - /** - * the core touch event handler. - * this finds out if we should to detect gestures - * @method onTouch - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Function} handler - * @return onTouchHandler {Function} the core event handler - */ - onTouch: function onTouch(element, eventType, handler) { - var self = this; + this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; + this.manipulationDOM['descriptionSpan'] = document.createElement('div'); + this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; + this.manipulationDOM['descriptionLabelSpan'] = document.createElement('div'); + this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['edgeDescription']; + this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); - // if we are in a mouseevent, but there has been a touchevent triggered in this session - // we want to do nothing. simply break out of the event. - if(isMouse && self.preventMouseEvents) { - return; + this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); + this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); - // mousebutton must be down - } else if(isMouse && eventType == EVENT_START && ev.button === 0) { - self.preventMouseEvents = false; - self.shouldDetect = true; - } else if(isPointer && eventType == EVENT_START) { - self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); - // just a valid start event, but no mouse - } else if(!isMouse && eventType == EVENT_START) { - self.preventMouseEvents = true; - self.shouldDetect = true; - } + // bind the icon + this._bindHammerToDiv(this.manipulationDOM['backSpan'],'_createManipulatorBar'); - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } + // we use the boundFunction so we can reference it when we unbind it from the "select" event. + var me = this; + this.boundFunction = me._handleConnect; + this.on('select', this.boundFunction); - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } + // temporarily overload functions + this.cachedFunctions["_handleTouch"] = this._handleTouch; + this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload; + this.cachedFunctions["_handleDragStart"] = this._handleDragStart; + this.cachedFunctions["_handleDragEnd"] = this._handleDragEnd; + this.cachedFunctions["_handleOnHold"] = this._handleOnHold; + this._handleTouch = this._handleConnect; + this._manipulationReleaseOverload = function () {}; + this._handleOnHold = function () {}; + this._handleDragStart = function () {}; + this._handleDragEnd = this._finishConnect; - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - if(triggerType == EVENT_END) { - self.preventMouseEvents = false; - self.shouldDetect = false; - PointerEvent.reset(); - // update the pointerevent object after the detection - } + // redraw to show the unselect + this._redraw(); + }; - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - }; + /** + * create the toolbar to edit edges + * + * @private + */ + exports._createEditEdgeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + this.controlNodesActive = true; - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - /** - * the core detection method - * this finds out what hammer-touch-events to trigger - * @method doDetect - * @param {Object} ev - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {HTMLElement} element - * @param {Function} handler - * @return {String} triggerType matches `EVENT_START|MOVE|END` - */ - doDetect: function doDetect(ev, eventType, element, handler) { - var touchList = this.getTouchList(ev, eventType); - var touchListLength = touchList.length; - var triggerType = eventType; - var triggerChange = touchList.trigger; // used by fakeMultitouch plugin - var changedLength = touchListLength; + this.edgeBeingEdited = this._getSelectedEdge(); + this.edgeBeingEdited._enableControlNodes(); - // at each touchstart-like event we want also want to trigger a TOUCH event... - if(eventType == EVENT_START) { - triggerChange = EVENT_TOUCH; - // ...the same for a touchend-like event - } else if(eventType == EVENT_END) { - triggerChange = EVENT_RELEASE; + var locale = this.constants.locales[this.constants.locale]; - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); - } + this.manipulationDOM = {}; + this.manipulationDOM['backSpan'] = document.createElement('div'); + this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; + this.manipulationDOM['backLabelSpan'] = document.createElement('div'); + this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; + this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); - // after there are still touches on the screen, - // we just want to trigger a MOVE event. so change the START or END to a MOVE - // but only after detection has been started, the first time we actualy want a START - if(changedLength > 0 && this.started) { - triggerType = EVENT_MOVE; - } + this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; - // detection has been started, we keep track of this, see above - this.started = true; + this.manipulationDOM['descriptionSpan'] = document.createElement('div'); + this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; + this.manipulationDOM['descriptionLabelSpan'] = document.createElement('div'); + this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['editEdgeDescription']; + this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); + this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); - // trigger the triggerType event before the change (TOUCH, RELEASE) events - // but the END event should be at last - if(eventType != EVENT_END) { - handler.call(Detection, evData); - } + // bind the icon + this._bindHammerToDiv(this.manipulationDOM['backSpan'],'_createManipulatorBar'); - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; + // temporarily overload functions + this.cachedFunctions["_handleTouch"] = this._handleTouch; + this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload; + this.cachedFunctions["_handleTap"] = this._handleTap; + this.cachedFunctions["_handleDragStart"] = this._handleDragStart; + this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; + this._handleTouch = this._selectControlNode; + this._handleTap = function () {}; + this._handleOnDrag = this._controlNodeDrag; + this._handleDragStart = function () {} + this._manipulationReleaseOverload = this._releaseControlNode; - handler.call(Detection, evData); + // redraw to show the unselect + this._redraw(); + }; - evData.eventType = triggerType; - delete evData.changedLength; - } - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); + /** + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. + * + * @private + */ + exports._selectControlNode = function(pointer) { + this.edgeBeingEdited.controlNodes.from.unselect(); + this.edgeBeingEdited.controlNodes.to.unselect(); + this.selectedControlNode = this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(pointer.x),this._YconvertDOMtoCanvas(pointer.y)); + if (this.selectedControlNode !== null) { + this.selectedControlNode.select(); + this.freezeSimulation(true); + } + this._redraw(); + }; - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; - } - return triggerType; - }, + /** + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. + * + * @private + */ + exports._controlNodeDrag = function(event) { + var pointer = this._getPointer(event.gesture.center); + if (this.selectedControlNode !== null && this.selectedControlNode !== undefined) { + this.selectedControlNode.x = this._XconvertDOMtoCanvas(pointer.x); + this.selectedControlNode.y = this._YconvertDOMtoCanvas(pointer.y); + } + this._redraw(); + }; - /** - * we have different events for each device/browser - * determine what we need and set them in the EVENT_TYPES constant - * the `onTouch` method is bind to these properties. - * @method determineEventTypes - * @return {Object} events - */ - determineEventTypes: function determineEventTypes() { - var types; - if(Hammer.HAS_POINTEREVENTS) { - if(window.PointerEvent) { - types = [ - 'pointerdown', - 'pointermove', - 'pointerup pointercancel lostpointercapture' - ]; - } else { - types = [ - 'MSPointerDown', - 'MSPointerMove', - 'MSPointerUp MSPointerCancel MSLostPointerCapture' - ]; - } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; - } else { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; - } - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, + /** + * + * @param pointer + * @private + */ + exports._releaseControlNode = function(pointer) { + var newNode = this._getNodeAt(pointer); + if (newNode !== null) { + if (this.edgeBeingEdited.controlNodes.from.selected == true) { + this.edgeBeingEdited._restoreControlNodes(); + this._editEdge(newNode.id, this.edgeBeingEdited.to.id); + this.edgeBeingEdited.controlNodes.from.unselect(); + } + if (this.edgeBeingEdited.controlNodes.to.selected == true) { + this.edgeBeingEdited._restoreControlNodes(); + this._editEdge(this.edgeBeingEdited.from.id, newNode.id); + this.edgeBeingEdited.controlNodes.to.unselect(); + } + } + else { + this.edgeBeingEdited._restoreControlNodes(); + } + this.freezeSimulation(false); + this._redraw(); + }; - /** - * create touchList depending on the event - * @method getTouchList - * @param {Object} ev - * @param {String} eventType - * @return {Array} touches - */ - getTouchList: function getTouchList(ev, eventType) { - // get the fake pointerEvent touchlist - if(Hammer.HAS_POINTEREVENTS) { - return PointerEvent.getTouchList(); - } + /** + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. + * + * @private + */ + exports._handleConnect = function(pointer) { + if (this._getSelectedNodeCount() == 0) { + var node = this._getNodeAt(pointer); - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; - } + if (node != null) { + if (node.clusterSize > 1) { + alert(this.constants.locales[this.constants.locale]['createEdgeError']) + } + else { + this._selectObject(node,false); + var supportNodes = this.sectors['support']['nodes']; - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; + // create a node the temporary line can look at + supportNodes['targetNode'] = new Node({id:'targetNode'},{},{},this.constants); + var targetNode = supportNodes['targetNode']; + targetNode.x = node.x; + targetNode.y = node.y; - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); - } - identifiers.push(touch.identifier); - }); + // create a temporary edge + this.edges['connectionEdge'] = new Edge({id:"connectionEdge",from:node.id,to:targetNode.id}, this, this.constants); + var connectionEdge = this.edges['connectionEdge']; + connectionEdge.from = node; + connectionEdge.connected = true; + connectionEdge.options.smoothCurves = {enabled: true, + dynamic: false, + type: "continuous", + roundness: 0.5 + }; + connectionEdge.selected = true; + connectionEdge.to = targetNode; - return touchList; - } + this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; + var me = this; + this._handleOnDrag = function(event) { + var pointer = this._getPointer(event.gesture.center); + var connectionEdge = me.edges['connectionEdge']; + connectionEdge.to.x = me._XconvertDOMtoCanvas(pointer.x); + connectionEdge.to.y = me._YconvertDOMtoCanvas(pointer.y); + me._redraw(); + }; - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, + this.moving = true; + this.start(); + } + } + } + }; - /** - * collect basic event data - * @method collectEventData - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Array} touches - * @param {Object} ev - * @return {Object} ev - */ - collectEventData: function collectEventData(element, eventType, touches, ev) { - // find out pointerType - var pointerType = POINTER_TOUCH; - if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { - pointerType = POINTER_MOUSE; - } else if(PointerEvent.matchType(POINTER_PEN, ev)) { - pointerType = POINTER_PEN; - } + exports._finishConnect = function(event) { + if (this._getSelectedNodeCount() == 1) { + var pointer = this._getPointer(event.gesture.center); + // restore the drag function + this._handleOnDrag = this.cachedFunctions["_handleOnDrag"]; + delete this.cachedFunctions["_handleOnDrag"]; - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, + // remember the edge id + var connectFromId = this.edges['connectionEdge'].fromId; - /** - * prevent the browser default actions - * mostly used to disable scrolling of the browser - */ - preventDefault: function() { - var srcEvent = this.srcEvent; - srcEvent.preventManipulation && srcEvent.preventManipulation(); - srcEvent.preventDefault && srcEvent.preventDefault(); - }, + // remove the temporary nodes and edge + delete this.edges['connectionEdge']; + delete this.sectors['support']['nodes']['targetNode']; + delete this.sectors['support']['nodes']['targetViaNode']; - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, + var node = this._getNodeAt(pointer); + if (node != null) { + if (node.clusterSize > 1) { + alert(this.constants.locales[this.constants.locale]["createEdgeError"]) + } + else { + this._createEdge(connectFromId,node.id); + this._createManipulatorBar(); + } + } + this._unselectAll(); + } + }; - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; + + /** + * Adds a node on the specified location + */ + exports._addNode = function() { + if (this._selectionIsEmpty() && this.editMode == true) { + var positionObject = this._pointerToPositionObject(this.pointerPosition); + var defaultData = {id:util.randomUUID(),x:positionObject.left,y:positionObject.top,label:"new",allowedToMoveX:true,allowedToMoveY:true}; + if (this.triggerFunctions.add) { + if (this.triggerFunctions.add.length == 2) { + var me = this; + this.triggerFunctions.add(defaultData, function(finalizedData) { + me.nodesData.add(finalizedData); + me._createManipulatorBar(); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for add does not support two arguments (data,callback)'); + this._createManipulatorBar(); + this.moving = true; + this.start(); + } + } + else { + this.nodesData.add(defaultData); + this._createManipulatorBar(); + this.moving = true; + this.start(); } + } }; /** - * @module hammer + * connect two nodes with a new edge. * - * @class PointerEvent - * @static + * @private */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, + exports._createEdge = function(sourceNodeId,targetNodeId) { + if (this.editMode == true) { + var defaultData = {from:sourceNodeId, to:targetNodeId}; + if (this.triggerFunctions.connect) { + if (this.triggerFunctions.connect.length == 2) { + var me = this; + this.triggerFunctions.connect(defaultData, function(finalizedData) { + me.edgesData.add(finalizedData); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for connect does not support two arguments (data,callback)'); + this.moving = true; + this.start(); + } + } + else { + this.edgesData.add(defaultData); + this.moving = true; + this.start(); + } + } + }; - /** - * get the pointers as an array - * @method getTouchList - * @return {Array} touchlist - */ - getTouchList: function getTouchList() { - var touchlist = []; - // we can use forEach since pointerEvents only is in IE10 - Utils.each(this.pointers, function(pointer) { - touchlist.push(pointer); + /** + * connect two nodes with a new edge. + * + * @private + */ + exports._editEdge = function(sourceNodeId,targetNodeId) { + if (this.editMode == true) { + var defaultData = {id: this.edgeBeingEdited.id, from:sourceNodeId, to:targetNodeId}; + if (this.triggerFunctions.editEdge) { + if (this.triggerFunctions.editEdge.length == 2) { + var me = this; + this.triggerFunctions.editEdge(defaultData, function(finalizedData) { + me.edgesData.update(finalizedData); + me.moving = true; + me.start(); }); - return touchlist; - }, + } + else { + throw new Error('The function for edit does not support two arguments (data, callback)'); + this.moving = true; + this.start(); + } + } + else { + this.edgesData.update(defaultData); + this.moving = true; + this.start(); + } + } + }; - /** - * update the position of a pointer - * @method updatePointer - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Object} pointerEvent - */ - updatePointer: function updatePointer(eventType, pointerEvent) { - if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { - delete this.pointers[pointerEvent.pointerId]; - } else { - pointerEvent.identifier = pointerEvent.pointerId; - this.pointers[pointerEvent.pointerId] = pointerEvent; + /** + * Create the toolbar to edit the selected node. The label and the color can be changed. Other colors are derived from the chosen color. + * + * @private + */ + exports._editNode = function() { + if (this.triggerFunctions.edit && this.editMode == true) { + var node = this._getSelectedNode(); + var data = {id:node.id, + label: node.label, + group: node.options.group, + shape: node.options.shape, + color: { + background:node.options.color.background, + border:node.options.color.border, + highlight: { + background:node.options.color.highlight.background, + border:node.options.color.highlight.border } - }, + }}; + if (this.triggerFunctions.edit.length == 2) { + var me = this; + this.triggerFunctions.edit(data, function (finalizedData) { + me.nodesData.update(finalizedData); + me._createManipulatorBar(); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for edit does not support two arguments (data, callback)'); + } + } + else { + throw new Error('No edit function has been bound to this button'); + } + }; - /** - * check if ev matches pointertype - * @method matchType - * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` - * @param {PointerEvent} ev - */ - matchType: function matchType(pointerType, ev) { - if(!ev.pointerType) { - return false; - } - var pt = ev.pointerType, - types = {}; - types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); - types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); - types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); - return types[pointerType]; - }, - /** - * reset the stored pointers - * @method reset - */ - reset: function resetList() { - this.pointers = {}; + /** + * delete everything in the selection + * + * @private + */ + exports._deleteSelected = function() { + if (!this._selectionIsEmpty() && this.editMode == true) { + if (!this._clusterInSelection()) { + var selectedNodes = this.getSelectedNodes(); + var selectedEdges = this.getSelectedEdges(); + if (this.triggerFunctions.del) { + var me = this; + var data = {nodes: selectedNodes, edges: selectedEdges}; + if (this.triggerFunctions.del.length == 2) { + this.triggerFunctions.del(data, function (finalizedData) { + me.edgesData.remove(finalizedData.edges); + me.nodesData.remove(finalizedData.nodes); + me._unselectAll(); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for delete does not support two arguments (data, callback)') + } + } + else { + this.edgesData.remove(selectedEdges); + this.nodesData.remove(selectedNodes); + this._unselectAll(); + this.moving = true; + this.start(); + } + } + else { + alert(this.constants.locales[this.constants.locale]["deleteClusterError"]); } + } }; - /** - * @module hammer - * - * @class Detection - * @static - */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], +/***/ }, +/* 62 */ +/***/ function(module, exports, __webpack_require__) { - // data of the current Hammer.gesture detection session - current: null, + var util = __webpack_require__(1); + var Hammer = __webpack_require__(45); - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, + exports._cleanNavigation = function() { + // clean hammer bindings + if (this.navigationHammers.length != 0) { + for (var i = 0; i < this.navigationHammers.length; i++) { + this.navigationHammers[i].dispose(); + } + this.navigationHammers = []; + } - // when this becomes true, no gestures are fired - stopped: false, + this._navigationReleaseOverload = function () {}; - /** - * start Hammer.gesture detection - * @method startDetect - * @param {Hammer.Instance} inst - * @param {Object} eventData - */ - startDetect: function startDetect(inst, eventData) { - // already busy with a Hammer.gesture detection on an element - if(this.current) { - return; - } + // clean up previous navigation items + if (this.navigationDOM && this.navigationDOM['wrapper'] && this.navigationDOM['wrapper'].parentNode) { + this.navigationDOM['wrapper'].parentNode.removeChild(this.navigationDOM['wrapper']); + } + }; - this.stopped = false; + /** + * Creation of the navigation controls nodes. They are drawn over the rest of the nodes and are not affected by scale and translation + * they have a triggerFunction which is called on click. If the position of the navigation controls is dependent + * on this.frame.canvas.clientWidth or this.frame.canvas.clientHeight, we flag horizontalAlignLeft and verticalAlignTop false. + * This means that the location will be corrected by the _relocateNavigation function on a size change of the canvas. + * + * @private + */ + exports._loadNavigationElements = function() { + this._cleanNavigation(); - // holds current session - this.current = { - inst: inst, // reference to HammerInstance we're working for - startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc - lastEvent: false, // last eventData - lastCalcEvent: false, // last eventData for calculations. - futureCalcEvent: false, // last eventData for calculations. - lastCalcData: {}, // last lastCalcData - name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc - }; + this.navigationDOM = {}; + var navigationDivs = ['up','down','left','right','zoomIn','zoomOut','zoomExtends']; + var navigationDivActions = ['_moveUp','_moveDown','_moveLeft','_moveRight','_zoomIn','_zoomOut','_zoomExtent']; - this.detect(eventData); - }, + this.navigationDOM['wrapper'] = document.createElement('div'); + this.frame.appendChild(this.navigationDOM['wrapper']); - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; - } + for (var i = 0; i < navigationDivs.length; i++) { + this.navigationDOM[navigationDivs[i]] = document.createElement('div'); + this.navigationDOM[navigationDivs[i]].className = 'network-navigation ' + navigationDivs[i]; + this.navigationDOM['wrapper'].appendChild(this.navigationDOM[navigationDivs[i]]); - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); + var hammer = Hammer(this.navigationDOM[navigationDivs[i]], {prevent_default: true}); + hammer.on('touch', this[navigationDivActions[i]].bind(this)); + this.navigationHammers.push(hammer); + } - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; + this._navigationReleaseOverload = this._stopMovement; - // call Hammer.gesture handlers - Utils.each(this.gestures, function triggerGesture(gesture) { - // only when the instance options have enabled this gesture - if(!this.stopped && inst.enabled && instOptions[gesture.name]) { - gesture.handler.call(gesture, eventData, inst); - } - }, this); + }; - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; - } - if(eventData.eventType == EVENT_END) { - this.stopDetect(); - } + /** + * this stops all movement induced by the navigation buttons + * + * @private + */ + exports._zoomExtent = function(event) { + this.zoomExtent({duration:700}); + event.stopPropagation(); + }; - return eventData; - }, + /** + * this stops all movement induced by the navigation buttons + * + * @private + */ + exports._stopMovement = function() { + this._xStopMoving(); + this._yStopMoving(); + this._stopZoom(); + }; - /** - * clear the Hammer.gesture vars - * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected - * to stop other Hammer.gestures from being fired - * @method stopDetect - */ - stopDetect: function stopDetect() { - // clone current data to the store as the previous gesture - // used for the double tap gesture, since this is an other gesture detect session - this.previous = Utils.extend({}, this.current); - // reset the current - this.current = null; - this.stopped = true; - }, + /** + * move the screen up + * By using the increments, instead of adding a fixed number to the translation, we keep fluent and + * instant movement. The onKeypress event triggers immediately, then pauses, then triggers frequently + * To avoid this behaviour, we do the translation in the start loop. + * + * @private + */ + exports._moveUp = function(event) { + this.yIncrement = this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - /** - * calculate velocity, angle and direction - * @method getVelocityData - * @param {Object} ev - * @param {Object} center - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - */ - getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { - var cur = this.current, - recalc = false, - calcEv = cur.lastCalcEvent, - calcData = cur.lastCalcData; - if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { - center = calcEv.center; - deltaTime = ev.timeStamp - calcEv.timeStamp; - deltaX = ev.center.clientX - calcEv.center.clientX; - deltaY = ev.center.clientY - calcEv.center.clientY; - recalc = true; - } + /** + * move the screen down + * @private + */ + exports._moveDown = function(event) { + this.yIncrement = -this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; - } - if(!cur.lastCalcEvent || recalc) { - calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); - calcData.angle = Utils.getAngle(center, ev.center); - calcData.direction = Utils.getDirection(center, ev.center); + /** + * move the screen left + * @private + */ + exports._moveLeft = function(event) { + this.xIncrement = this.constants.keyboard.speed.x; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; - } - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, - - /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev - */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; + /** + * move the screen right + * @private + */ + exports._moveRight = function(event) { + this.xIncrement = -this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - // update the start touchlist to calculate the scale/rotation - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - startEv.touches = []; - Utils.each(ev.touches, function(touch) { - startEv.touches.push({ - clientX: touch.clientX, - clientY: touch.clientY - }); - }); - } - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; + /** + * Zoom in, using the same method as the movement. + * @private + */ + exports._zoomIn = function(event) { + this.zoomIncrement = this.constants.keyboard.speed.zoom; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - Utils.extend(ev, { - startEvent: startEv, + /** + * Zoom out + * @private + */ + exports._zoomOut = function(event) { + this.zoomIncrement = -this.constants.keyboard.speed.zoom; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, - distance: Utils.getDistance(startEv.center, ev.center), - angle: Utils.getAngle(startEv.center, ev.center), - direction: Utils.getDirection(startEv.center, ev.center), - scale: Utils.getScale(startEv.touches, ev.touches), - rotation: Utils.getRotation(startEv.touches, ev.touches) - }); + /** + * Stop zooming and unhighlight the zoom controls + * @private + */ + exports._stopZoom = function(event) { + this.zoomIncrement = 0; + event && event.preventDefault(); + }; - return ev; - }, - /** - * register new gesture - * @method register - * @param {Object} gesture object, see `gestures/` for documentation - * @return {Array} gestures - */ - register: function register(gesture) { - // add an enable gesture options if there is no given - var options = gesture.defaults || {}; - if(options[gesture.name] === undefined) { - options[gesture.name] = true; - } + /** + * Stop moving in the Y direction and unHighlight the up and down + * @private + */ + exports._yStopMoving = function(event) { + this.yIncrement = 0; + event && event.preventDefault(); + }; - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); - // set its index - gesture.index = gesture.index || 1000; + /** + * Stop moving in the X direction and unHighlight left and right. + * @private + */ + exports._xStopMoving = function(event) { + this.xIncrement = 0; + event && event.preventDefault(); + }; - // add Hammer.gesture to the list - this.gestures.push(gesture); - // sort the list by index - this.gestures.sort(function(a, b) { - if(a.index < b.index) { - return -1; - } - if(a.index > b.index) { - return 1; - } - return 0; - }); +/***/ }, +/* 63 */ +/***/ function(module, exports, __webpack_require__) { - return this.gestures; + exports._resetLevels = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.preassignedLevel == false) { + node.level = -1; + node.hierarchyEnumerated = false; + } } + } }; - - /** - * @module hammer - */ - /** - * create new hammer instance - * all methods should return the instance itself, so it is chainable. + * This is the main function to layout the nodes in a hierarchical way. + * It checks if the node details are supplied correctly * - * @class Instance - * @constructor - * @param {HTMLElement} element - * @param {Object} [options={}] options are merged with `Hammer.defaults` - * @return {Hammer.Instance} + * @private */ - Hammer.Instance = function(element, options) { - var self = this; + exports._setupHierarchicalLayout = function() { + if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { + // get the size of the largest hubs and check if the user has defined a level for a node. + var hubsize = 0; + var node, nodeId; + var definedLevel = false; + var undefinedLevel = false; - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level != -1) { + definedLevel = true; + } + else { + undefinedLevel = true; + } + if (hubsize < node.edges.length) { + hubsize = node.edges.length; + } + } + } - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; + // if the user defined some levels but not all, alert and run without hierarchical layout + if (undefinedLevel == true && definedLevel == true) { + throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); + this.zoomExtent({duration:0},true,this.constants.clustering.enabled); + if (!this.constants.clustering.enabled) { + this.start(); + } + } + else { + // setup the system to use hierarchical method. + this._changeConstants(); - /** - * @property enabled - * @type {Boolean} - * @protected - */ - this.enabled = true; + // define levels if undefined by the users. Based on hubsize + if (undefinedLevel == true) { + if (this.constants.hierarchicalLayout.layout == "hubsize") { + this._determineLevels(hubsize); + } + else { + this._determineLevelsDirected(false); + } - /** - * options, merged with the defaults - * options with an _ are converted to camelCase - * @property options - * @type {Object} - */ - Utils.each(options, function(value, name) { - delete options[name]; - options[Utils.toCamelCase(name)] = value; - }); + } + // check the distribution of the nodes per level. + var distribution = this._getDistribution(); - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + // place the nodes on the canvas. This also stablilizes the system. + this._placeNodesByHierarchy(distribution); - // add some css to the element to prevent the browser from doing its native behavoir - if(this.options.behavior) { - Utils.toggleBehavior(this.element, this.options.behavior, true); + // start the simulation. + this.start(); } + } + }; - /** - * event start handler on the element to start the detection - * @property eventStartHandler - * @type {Object} - */ - this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { - if(self.enabled && ev.eventType == EVENT_START) { - Detection.startDetect(self, ev); - } else if(ev.eventType == EVENT_TOUCH) { - Detection.detect(ev); - } - }); - /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} - */ - this.eventHandlers = []; - }; + /** + * This function places the nodes on the canvas based on the hierarchial distribution. + * + * @param {Object} distribution | obtained by the function this._getDistribution() + * @private + */ + exports._placeNodesByHierarchy = function(distribution) { + var nodeId, node; - Hammer.Instance.prototype = { - /** - * bind events to the instance - * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space - * @param {Function} handler - * @param {Object} handler.ev event object - */ - on: function onEvent(gestures, handler) { - var self = this; - Event.on(self.element, gestures, handler, function(type) { - self.eventHandlers.push({ gesture: type, handler: handler }); - }); - return self; - }, + // start placing all the level 0 nodes first. Then recursively position their branches. + for (var level in distribution) { + if (distribution.hasOwnProperty(level)) { - /** - * unbind events to the instance - * @method off - * @chainable - * @param {String} gestures - * @param {Function} handler - */ - off: function offEvent(gestures, handler) { - var self = this; + for (nodeId in distribution[level].nodes) { + if (distribution[level].nodes.hasOwnProperty(nodeId)) { + node = distribution[level].nodes[nodeId]; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (node.xFixed) { + node.x = distribution[level].minPos; + node.xFixed = false; - Event.off(self.element, gestures, handler, function(type) { - var index = Utils.inArray({ gesture: type, handler: handler }); - if(index !== false) { - self.eventHandlers.splice(index, 1); + distribution[level].minPos += distribution[level].nodeSpacing; } - }); - return self; - }, + } + else { + if (node.yFixed) { + node.y = distribution[level].minPos; + node.yFixed = false; - /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] - */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; + distribution[level].minPos += distribution[level].nodeSpacing; + } + } + this._placeBranchNodes(node.edges,node.id,distribution,node.level); } + } + } + } - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; + // stabilize the system after positioning. This function calls zoomExtent. + this._stabilize(); + }; - // trigger on the target if it is in the instance element, - // this is for event delegation tricks - var element = this.element; - if(Utils.hasParent(eventData.target, element)) { - element = eventData.target; - } - element.dispatchEvent(event); - return this; - }, + /** + * This function get the distribution of levels based on hubsize + * + * @returns {Object} + * @private + */ + exports._getDistribution = function() { + var distribution = {}; + var nodeId, node, level; - /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state - */ - enable: function enable(state) { - this.enabled = state; - return this; - }, + // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. + // the fix of X is removed after the x value has been set. + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.xFixed = true; + node.yFixed = true; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + else { + node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + if (distribution[node.level] === undefined) { + distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; + } + distribution[node.level].amount += 1; + distribution[node.level].nodes[nodeId] = node; + } + } - /** - * dispose this hammer instance - * @method dispose - * @return {Null} - */ - dispose: function dispose() { - var i, eh; + // determine the largest amount of nodes of all levels + var maxCount = 0; + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + if (maxCount < distribution[level].amount) { + maxCount = distribution[level].amount; + } + } + } - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); + // set the initial position and spacing of each nodes accordingly + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; + distribution[level].nodeSpacing /= (distribution[level].amount + 1); + distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); + } + } - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); - } + return distribution; + }; - this.eventHandlers = []; - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + /** + * this function allocates nodes in levels based on the recursive branching from the largest hubs. + * + * @param hubsize + * @private + */ + exports._determineLevels = function(hubsize) { + var nodeId, node; - return null; + // determine hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.edges.length == hubsize) { + node.level = 0; + } + } + } + + // branch from hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level == 0) { + this._setLevel(1,node.edges,node.id); + } } + } }; - /** - * @module gestures - */ - /** - * Move with x fingers (default 1) around on the page. - * Preventing the default browser behavior is a good way to improve feel and working. - * ```` - * hammertime.on("drag", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Drag - * @static - */ - /** - * @event drag - * @param {Object} ev - */ - /** - * @event dragstart - * @param {Object} ev - */ - /** - * @event dragend - * @param {Object} ev - */ - /** - * @event drapleft - * @param {Object} ev - */ - /** - * @event dragright - * @param {Object} ev - */ - /** - * @event dragup - * @param {Object} ev - */ - /** - * @event dragdown - * @param {Object} ev - */ /** - * @param {String} name + * this function allocates nodes in levels based on the direction of the edges + * + * @param hubsize + * @private */ - (function(name) { - var triggered = false; + exports._determineLevelsDirected = function() { + var nodeId, node, firstNode; + var minLevel = 10000; - function dragGesture(ev, inst) { - var cur = Detection.current; + // set first node to source + firstNode = this.nodes[this.nodeIndices[0]]; + firstNode.level = minLevel; + this._setLevelDirected(minLevel,firstNode.edges,firstNode.id); - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; - } + // get the minimum level + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + minLevel = node.level < minLevel ? node.level : minLevel; + } + } - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; - - case EVENT_MOVE: - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.distance < inst.options.dragMinDistance && - cur.name != name) { - return; - } - - var startCenter = cur.startEvent.center; - - // we are dragging! - if(cur.name != name) { - cur.name = name; - if(inst.options.dragDistanceCorrection && ev.distance > 0) { - // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. - // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. - // It might be useful to save the original start point somewhere - var factor = Math.abs(inst.options.dragMinDistance / ev.distance); - startCenter.pageX += ev.deltaX * factor; - startCenter.pageY += ev.deltaY * factor; - startCenter.clientX += ev.deltaX * factor; - startCenter.clientY += ev.deltaY * factor; - - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } - - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } - - // keep direction on the axis that the drag gesture started on - var lastDirection = cur.lastEvent.direction; - if(ev.dragLockToAxis && lastDirection !== ev.direction) { - if(Utils.isVertical(lastDirection)) { - ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; - } else { - ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - } - - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } - - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + // subtract the minimum from the set so we have a range starting from 0 + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.level -= minLevel; + } + } + }; - var isVertical = Utils.isVertical(ev.direction); - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + /** + * Since hierarchical layout does not support: + * - smooth curves (based on the physics), + * - clustering (based on dynamic node counts) + * + * We disable both features so there will be no problems. + * + * @private + */ + exports._changeConstants = function() { + this.constants.clustering.enabled = false; + this.constants.physics.barnesHut.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this._loadSelectedForceSolver(); + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.dynamic = false; + } + this._configureSmoothCurves(); - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + var config = this.constants.hierarchicalLayout; + config.levelSeparation = Math.abs(config.levelSeparation); + if (config.direction == "RL" || config.direction == "DU") { + config.levelSeparation *= -1; + } - case EVENT_END: - triggered = false; - break; - } + if (config.direction == "RL" || config.direction == "LR") { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "vertical"; } + } + else { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "horizontal"; + } + } + }; - Hammer.gestures.Drag = { - name: name, - index: 50, - handler: dragGesture, - defaults: { - /** - * minimal movement that have to be made before the drag event gets triggered - * @property dragMinDistance - * @type {Number} - * @default 10 - */ - dragMinDistance: 10, - - /** - * Set dragDistanceCorrection to true to make the starting point of the drag - * be calculated from where the drag was triggered, not from where the touch started. - * Useful to avoid a jerk-starting drag, which can make fine-adjustments - * through dragging difficult, and be visually unappealing. - * @property dragDistanceCorrection - * @type {Boolean} - * @default true - */ - dragDistanceCorrection: true, - - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, - /** - * prevent default browser behavior when dragging occurs - * be careful with it, it makes the element a blocking element - * when you are using the drag gesture, it is a good practice to set this true - * @property dragBlockHorizontal - * @type {Boolean} - * @default false - */ - dragBlockHorizontal: false, + /** + * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes + * on a X position that ensures there will be no overlap. + * + * @param edges + * @param parentId + * @param distribution + * @param parentLevel + * @private + */ + exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + } + else { + childNode = edges[i].to; + } - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, + // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. + var nodeMoved = false; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (childNode.xFixed && childNode.level > parentLevel) { + childNode.xFixed = false; + childNode.x = distribution[childNode.level].minPos; + nodeMoved = true; + } + } + else { + if (childNode.yFixed && childNode.level > parentLevel) { + childNode.yFixed = false; + childNode.y = distribution[childNode.level].minPos; + nodeMoved = true; + } + } - /** - * dragLockToAxis keeps the drag gesture on the axis that it started on, - * It disallows vertical directions if the initial direction was horizontal, and vice versa. - * @property dragLockToAxis - * @type {Boolean} - * @default false - */ - dragLockToAxis: false, + if (nodeMoved == true) { + distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; + if (childNode.edges.length > 1) { + this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); + } + } + } + }; - /** - * drag lock only kicks in when distance > dragLockMinDistance - * This way, locking occurs only when the distance has become large enough to reliably determine the direction - * @property dragLockMinDistance - * @type {Number} - * @default 25 - */ - dragLockMinDistance: 25 - } - }; - })('drag'); /** - * @module gestures - */ - /** - * trigger a simple gesture event, so you can do anything in your handler. - * only usable if you know what your doing... + * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. * - * @class Gesture - * @static - */ - /** - * @event gesture - * @param {Object} ev + * @param level + * @param edges + * @param parentId + * @private */ - Hammer.gestures.Gesture = { - name: 'gesture', - index: 1337, - handler: function releaseGesture(ev, inst) { - inst.trigger(this.name, ev); + exports._setLevel = function(level, edges, parentId) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + } + else { + childNode = edges[i].to; + } + if (childNode.level == -1 || childNode.level > level) { + childNode.level = level; + if (childNode.edges.length > 1) { + this._setLevel(level+1, childNode.edges, childNode.id); + } } + } }; - /** - * @module gestures - */ - /** - * Touch stays at the same place for x time - * - * @class Hold - * @static - */ - /** - * @event hold - * @param {Object} ev - */ /** - * @param {String} name + * this function is called recursively to enumerate the branched of the first node and give each node a level based on edge direction + * + * @param level + * @param edges + * @param parentId + * @private */ - (function(name) { - var timer; + exports._setLevelDirected = function(level, edges, parentId) { + this.nodes[parentId].hierarchyEnumerated = true; + var childNode, direction; + for (var i = 0; i < edges.length; i++) { + direction = 1; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + direction = -1; + } + else { + childNode = edges[i].to; + } + if (childNode.level == -1) { + childNode.level = level + direction; + } + } - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; + for (var i = 0; i < edges.length; i++) { + if (edges[i].toId == parentId) {childNode = edges[i].from;} + else {childNode = edges[i].to;} - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { + this._setLevelDirected(childNode.level, childNode.edges, childNode.id); + } + } + }; - // set the gesture so we can check in the timeout if it still is - current.name = name; - // set timer and if after the timeout it still is hold, - // we trigger the hold event - timer = setTimeout(function() { - if(current && current.name == name) { - inst.trigger(name, ev); - } - }, options.holdTimeout); - break; + /** + * Unfix nodes + * + * @private + */ + exports._restoreNodes = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.nodes[nodeId].xFixed = false; + this.nodes[nodeId].yFixed = false; + } + } + }; - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); - } - break; - case EVENT_RELEASE: - clearTimeout(timer); - break; - } - } +/***/ }, +/* 64 */ +/***/ function(module, exports, __webpack_require__) { - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { - /** - * @property holdTimeout - * @type {Number} - * @default 500 - */ - holdTimeout: 500, + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 + * http://eightmedia.github.io/hammer.js + * + * Copyright (c) 2014 Jorik Tangelder ; + * Licensed under the MIT license */ - /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 - */ - holdThreshold: 2 - }, - handler: holdGesture - }; - })('hold'); + (function(window, undefined) { + 'use strict'; /** - * @module gestures - */ - /** - * when a touch is being released from the page + * @main + * @module hammer * - * @class Release + * @class Hammer * @static */ - /** - * @event release - * @param {Object} ev - */ - Hammer.gestures.Release = { - name: 'release', - index: Infinity, - handler: function releaseGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - inst.trigger(this.name, ev); - } - } - }; /** - * @module gestures - */ - /** - * triggers swipe events when the end velocity is above the threshold - * for best usage, set `preventDefault` (on the drag gesture) to `true` + * Hammer, use this to create instances * ```` - * hammertime.on("dragleft swipeleft", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); + * var hammertime = new Hammer(myElement); * ```` * - * @class Swipe - * @static - */ - /** - * @event swipe - * @param {Object} ev - */ - /** - * @event swipeleft - * @param {Object} ev - */ - /** - * @event swiperight - * @param {Object} ev + * @method Hammer + * @param {HTMLElement} element + * @param {Object} [options={}] + * @return {Hammer.Instance} */ + var Hammer = function Hammer(element, options) { + return new Hammer.Instance(element, options || {}); + }; + /** - * @event swipeup - * @param {Object} ev + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} */ + Hammer.VERSION = '1.1.3'; + /** - * @event swipedown - * @param {Object} ev + * default settings. + * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled + * by setting it's name (like `swipe`) to false. + * You can set the defaults for all instances by changing this object before creating an instance. + * @example + * ```` + * Hammer.defaults.drag = false; + * Hammer.defaults.behavior.touchAction = 'pan-y'; + * delete Hammer.defaults.behavior.userSelect; + * ```` + * @property defaults + * @type {Object} */ - Hammer.gestures.Swipe = { - name: 'swipe', - index: 40, - defaults: { + Hammer.defaults = { + /** + * this setting object adds styles and attributes to the element to prevent the browser from doing + * its native behavior. The css properties are auto prefixed for the browsers when needed. + * @property defaults.behavior + * @type {Object} + */ + behavior: { /** - * @property swipeMinTouches - * @type {Number} - * @default 1 + * Disables text selection to improve the dragging gesture. When the value is `none` it also sets + * `onselectstart=false` for IE on the element. Mainly for desktop browsers. + * @property defaults.behavior.userSelect + * @type {String} + * @default 'none' */ - swipeMinTouches: 1, + userSelect: 'none', /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 + * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). + * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. + * @property defaults.behavior.touchAction + * @type {String} + * @default: 'pan-y' */ - swipeMaxTouches: 1, + touchAction: 'pan-y', /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @property defaults.behavior.touchCallout + * @type {String} + * @default 'none' */ - swipeVelocityX: 0.6, + touchCallout: 'none', /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' */ - swipeVelocityY: 0.6 - }, - - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; + contentZooming: 'none', - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; - } + /** + * Specifies that an entire element should be draggable instead of its contents. + * Mainly for desktop browsers. + * @property defaults.behavior.userDrag + * @type {String} + * @default 'none' + */ + userDrag: 'none', - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.velocityX > options.swipeVelocityX || - ev.velocityY > options.swipeVelocityY) { - // trigger swipe events - inst.trigger(this.name, ev); - inst.trigger(this.name + ev.direction, ev); - } - } + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. + * + * If you don't specify an alpha value, Safari on iPhone applies a default alpha value + * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). + * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. + * @property defaults.behavior.tapHighlightColor + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' } }; /** - * @module gestures - */ - /** - * Single tap and a double tap on a place - * - * @class Tap - * @static - */ - /** - * @event tap - * @param {Object} ev - */ - /** - * @event doubletap - * @param {Object} ev + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document */ + Hammer.DOCUMENT = document; /** - * @param {String} name + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} */ - (function(name) { - var hasMoved = false; - - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; - - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; - - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; - - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; - - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } - - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; - } - } - - Hammer.gestures.Tap = { - name: name, - index: 100, - handler: tapGesture, - defaults: { - /** - * max time of a tap, this is for the slow tappers - * @property tapMaxTime - * @type {Number} - * @default 250 - */ - tapMaxTime: 250, - - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, - - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, - - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, - - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 - } - }; - })('tap'); + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; /** - * @module gestures + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + /** - * when a touch is being touched at the page - * - * @class Touch - * @static + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + /** - * @event touch - * @param {Object} ev + * detect if we want to support mouseevents at all + * @property NO_MOUSEEVENTS + * @type {Boolean} */ - Hammer.gestures.Touch = { - name: 'touch', - index: -Infinity, - defaults: { - /** - * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, - * but it improves gestures like transforming and dragging. - * be careful with using this, it can be very annoying for users to be stuck on the page - * @property preventDefault - * @type {Boolean} - * @default false - */ - preventDefault: false, - - /** - * disable mouse events, so only touch (or pen!) input triggers events - * @property preventMouse - * @type {Boolean} - * @default false - */ - preventMouse: false - }, - handler: function touchGesture(ev, inst) { - if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { - ev.stopDetect(); - return; - } - - if(inst.options.preventDefault) { - ev.preventDefault(); - } - - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); - } - } - }; + Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; /** - * @module gestures + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 */ + Hammer.CALCULATE_INTERVAL = 25; + /** - * User want to scale or rotate with 2 fingers - * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the - * `preventDefault` option. - * - * @class Transform - * @static + * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` + * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) + * @property EVENT_TYPES + * @private + * @writeOnce + * @type {Object} */ + var EVENT_TYPES = {}; + /** - * @event transform - * @param {Object} ev + * direction strings, for safe comparisons + * @property DIRECTION_DOWN|LEFT|UP|RIGHT + * @final + * @type {String} + * @default 'down' 'left' 'up' 'right' */ + var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; + var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; + var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; + var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + /** - * @event transformstart - * @param {Object} ev + * pointertype strings, for safe comparisons + * @property POINTER_MOUSE|TOUCH|PEN + * @final + * @type {String} + * @default 'mouse' 'touch' 'pen' */ + var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; + var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; + var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; + /** - * @event transformend - * @param {Object} ev + * eventtypes + * @property EVENT_START|MOVE|END|RELEASE|TOUCH + * @final + * @type {String} + * @default 'start' 'change' 'move' 'end' 'release' 'touch' */ + var EVENT_START = Hammer.EVENT_START = 'start'; + var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; + var EVENT_END = Hammer.EVENT_END = 'end'; + var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; + var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + /** - * @event pinchin - * @param {Object} ev + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false */ + Hammer.READY = false; + /** - * @event pinchout - * @param {Object} ev + * plugins namespace + * @property plugins + * @type {Object} */ + Hammer.plugins = Hammer.plugins || {}; + /** - * @event rotate - * @param {Object} ev + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} */ + Hammer.gestures = Hammer.gestures || {}; /** - * @param {String} name + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private */ - (function(name) { - var triggered = false; + function setup() { + if(Hammer.READY) { + return; + } - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + // find what eventtypes we add listeners to + Event.determineEventTypes(); - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); + }); - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(scaleThreshold < inst.options.transformMinScale && - rotationThreshold < inst.options.transformMinRotation) { - return; - } + // Hammer is ready...! + Hammer.READY = true; + } - // we are transforming! - Detection.current.name = name; + /** + * @module hammer + * + * @class Utils + * @static + */ + var Utils = Hammer.utils = { + /** + * extend method, could also be used for cloning when `dest` is an empty object. + * changes the dest object + * @method extend + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] do a merge + * @return {Object} dest + */ + extend: function extend(dest, src, merge) { + for(var key in src) { + if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { + continue; + } + dest[key] = src[key]; + } + return dest; + }, - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + /** + * simple addEventListener wrapper + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + on: function on(element, type, handler) { + element.addEventListener(type, handler, false); + }, - inst.trigger(name, ev); // basic transform event + /** + * simple removeEventListener wrapper + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); + }, - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } + /** + * forEach over arrays and objects + * @method each + * @param {Object|Array} obj + * @param {Function} iterator + * @param {any} iterator.item + * @param {Number} iterator.index + * @param {Object|Array} iterator.obj the source object + * @param {Object} context value to use as `this` in the iterator + */ + each: function each(obj, iterator, context) { + var i, len; - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + // native forEach on arrays + if('forEach' in obj) { + obj.forEach(iterator, context); + // arrays + } else if(obj.length !== undefined) { + for(i = 0, len = obj.length; i < len; i++) { + if(iterator.call(context, obj[i], i, obj) === false) { + return; } - break; - - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; + } + // objects + } else { + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; } - break; + } } - } + }, - Hammer.gestures.Transform = { - name: name, - index: 45, - defaults: { - /** - * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 - * @property transformMinScale - * @type {Number} - * @default 0.01 - */ - transformMinScale: 0.01, + /** + * find if a string contains the string using indexOf + * @method inStr + * @param {String} src + * @param {String} find + * @return {Boolean} found + */ + inStr: function inStr(src, find) { + return src.indexOf(find) > -1; + }, - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 - }, + /** + * find if a array contains the object using indexOf or a simple polyfill + * @method inArray + * @param {String} src + * @param {String} find + * @return {Boolean|Number} false when not found, or the index + */ + inArray: function inArray(src, find) { + if(src.indexOf) { + var index = src.indexOf(find); + return (index === -1) ? false : index; + } else { + for(var i = 0, len = src.length; i < len; i++) { + if(src[i] === find) { + return i; + } + } + return false; + } + }, - handler: transformGesture - }; - })('transform'); + /** + * convert an array-like object (`arguments`, `touchlist`) to an array + * @method toArray + * @param {Object} obj + * @return {Array} + */ + toArray: function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + }, - /** - * @module hammer - */ + /** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ + hasParent: function hasParent(node, parent) { + while(node) { + if(node == parent) { + return true; + } + node = node.parentNode; + } + return false; + }, - // AMD export - if(true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - // commonjs export - } else if(typeof module !== 'undefined' && module.exports) { - module.exports = Hammer; - // browser export - } else { - window.Hammer = Hammer; - } - - })(window); + /** + * get the center of all the touches + * @method getCenter + * @param {Array} touches + * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties + */ + getCenter: function getCenter(touches) { + var pageX = [], + pageY = [], + clientX = [], + clientY = [], + min = Math.min, + max = Math.max; -/***/ }, -/* 60 */ -/***/ function(module, exports, __webpack_require__) { + // no need to loop when only one touch + if(touches.length === 1) { + return { + pageX: touches[0].pageX, + pageY: touches[0].pageY, + clientX: touches[0].clientX, + clientY: touches[0].clientY + }; + } - var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(67); - var HierarchialRepulsionMixin = __webpack_require__(68); - var BarnesHutMixin = __webpack_require__(69); + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); - /** - * Toggling barnes Hut calculation on and off. - * - * @private - */ - exports._toggleBarnesHut = function () { - this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; - this._loadSelectedForceSolver(); - this.moving = true; - this.start(); - }; + return { + pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, + pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, + clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, + clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 + }; + }, + /** + * calculate the velocity between two points. unit is in px per ms. + * @method getVelocity + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + * @return {Object} velocity `x` and `y` + */ + getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { + return { + x: Math.abs(deltaX / deltaTime) || 0, + y: Math.abs(deltaY / deltaTime) || 0 + }; + }, - /** - * This loads the node force solver based on the barnes hut or repulsion algorithm - * - * @private - */ - exports._loadSelectedForceSolver = function () { - // this overloads the this._calculateNodeForces - if (this.constants.physics.barnesHut.enabled == true) { - this._clearMixin(RepulsionMixin); - this._clearMixin(HierarchialRepulsionMixin); + /** + * calculate the angle between two coordinates + * @method getAngle + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {Number} angle + */ + getAngle: function getAngle(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity; - this.constants.physics.springLength = this.constants.physics.barnesHut.springLength; - this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant; - this.constants.physics.damping = this.constants.physics.barnesHut.damping; + return Math.atan2(y, x) * 180 / Math.PI; + }, - this._loadMixin(BarnesHutMixin); - } - else if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._clearMixin(BarnesHutMixin); - this._clearMixin(RepulsionMixin); + /** + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` + */ + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); - this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity; - this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength; - this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant; - this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping; + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, - this._loadMixin(HierarchialRepulsionMixin); - } - else { - this._clearMixin(BarnesHutMixin); - this._clearMixin(HierarchialRepulsionMixin); - this.barnesHutTree = undefined; + /** + * calculate the distance between two touches + * @method getDistance + * @param {Touch}touch1 + * @param {Touch} touch2 + * @return {Number} distance + */ + getDistance: function getDistance(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity; - this.constants.physics.springLength = this.constants.physics.repulsion.springLength; - this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant; - this.constants.physics.damping = this.constants.physics.repulsion.damping; + return Math.sqrt((x * x) + (y * y)); + }, - this._loadMixin(RepulsionMixin); - } - }; + /** + * calculate the scale factor between two touchLists + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @method getScale + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} scale + */ + getScale: function getScale(start, end) { + // need two fingers... + if(start.length >= 2 && end.length >= 2) { + return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); + } + return 1; + }, - /** - * Before calculating the forces, we check if we need to cluster to keep up performance and we check - * if there is more than one node. If it is just one node, we dont calculate anything. - * - * @private - */ - exports._initializeForceCalculation = function () { - // stop calculation if there is only one node - if (this.nodeIndices.length == 1) { - this.nodes[this.nodeIndices[0]]._setForce(0, 0); - } - else { - // if there are too many nodes on screen, we cluster without repositioning - if (this.nodeIndices.length > this.constants.clustering.clusterThreshold && this.constants.clustering.enabled == true) { - this.clusterToFit(this.constants.clustering.reduceToNodes, false); - } + /** + * calculate the rotation degrees between two touchLists + * @method getRotation + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} rotation + */ + getRotation: function getRotation(start, end) { + // need two fingers + if(start.length >= 2 && end.length >= 2) { + return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); + } + return 0; + }, - // we now start the force calculation - this._calculateForces(); - } - }; + /** + * find out if the direction is vertical * + * @method isVertical + * @param {String} direction matches `DIRECTION_UP|DOWN` + * @return {Boolean} is_vertical + */ + isVertical: function isVertical(direction) { + return direction == DIRECTION_UP || direction == DIRECTION_DOWN; + }, + /** + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} + */ + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); - /** - * Calculate the external forces acting on the nodes - * Forces are caused by: edges, repulsing forces between nodes, gravity - * @private - */ - exports._calculateForces = function () { - // Gravity is required to keep separated groups from floating off - // the forces are reset to zero in this loop by using _setForce instead - // of _addForce + for(var i = 0; i < prefixes.length; i++) { + var p = prop; + // prefixes + if(prefixes[i]) { + p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + } - this._calculateGravitationalForces(); - this._calculateNodeForces(); + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; + } + } + }, - if (this.constants.physics.springConstant > 0) { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this._calculateSpringForcesWithSupport(); - } - else { - if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._calculateHierarchicalSpringForces(); - } - else { - this._calculateSpringForces(); - } - } - } - }; + /** + * toggle browser default behavior by setting css properties. + * `userSelect='none'` also sets `element.onselectstart` to false + * `userDrag='none'` also sets `element.ondragstart` to false + * + * @method toggleBehavior + * @param {HtmlElement} element + * @param {Object} props + * @param {Boolean} [toggle=true] + */ + toggleBehavior: function toggleBehavior(element, props, toggle) { + if(!props || !element || !element.style) { + return; + } + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); - /** - * Smooth curves are created by adding invisible nodes in the center of the edges. These nodes are also - * handled in the calculateForces function. We then use a quadratic curve with the center node as control. - * This function joins the datanodes and invisible (called support) nodes into one object. - * We do this so we do not contaminate this.nodes with the support nodes. - * - * @private - */ - exports._updateCalculationNodes = function () { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this.calculationNodes = {}; - this.calculationNodeIndices = []; + var falseFn = toggle && function() { + return false; + }; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.calculationNodes[nodeId] = this.nodes[nodeId]; - } - } - var supportNodes = this.sectors['support']['nodes']; - for (var supportNodeId in supportNodes) { - if (supportNodes.hasOwnProperty(supportNodeId)) { - if (this.edges.hasOwnProperty(supportNodes[supportNodeId].parentEdgeId)) { - this.calculationNodes[supportNodeId] = supportNodes[supportNodeId]; + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; } - else { - supportNodes[supportNodeId]._setForce(0, 0); + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; } - } - } + }, - for (var idx in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(idx)) { - this.calculationNodeIndices.push(idx); - } + /** + * convert a string with underscores to camelCase + * so prevent_default becomes preventDefault + * @param {String} str + * @return {String} camelCaseStr + */ + toCamelCase: function toCamelCase(str) { + return str.replace(/[_-]([a-z])/g, function(s) { + return s[1].toUpperCase(); + }); } - } - else { - this.calculationNodes = this.nodes; - this.calculationNodeIndices = this.nodeIndices; - } }; /** - * this function applies the central gravity effect to keep groups from floating off - * - * @private + * @module hammer */ - exports._calculateGravitationalForces = function () { - var dx, dy, distance, node, i; - var nodes = this.calculationNodes; - var gravity = this.constants.physics.centralGravity; - var gravityForce = 0; - - for (i = 0; i < this.calculationNodeIndices.length; i++) { - node = nodes[this.calculationNodeIndices[i]]; - node.damping = this.constants.physics.damping; // possibly add function to alter damping properties of clusters. - // gravity does not apply when we are in a pocket sector - if (this._sector() == "default" && gravity != 0) { - dx = -node.x; - dy = -node.y; - distance = Math.sqrt(dx * dx + dy * dy); - - gravityForce = (distance == 0) ? 0 : (gravity / distance); - node.fx = dx * gravityForce; - node.fy = dy * gravityForce; - } - else { - node.fx = 0; - node.fy = 0; - } - } - }; + /** + * @class Event + * @static + */ + var Event = Hammer.event = { + /** + * when touch events have been fired, this is true + * this is used to stop mouse events + * @property prevent_mouseevents + * @private + * @type {Boolean} + */ + preventMouseEvents: false, + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, + /** + * simple event binder with a hook and support for multiple types + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + on: function on(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.on(element, type, handler); + hook && hook(type); + }); + }, - /** - * this function calculates the effects of the springs in the case of unsmooth curves. - * - * @private - */ - exports._calculateSpringForces = function () { - var edgeLength, edge, edgeId; - var dx, dy, fx, fy, springForce, distance; - var edges = this.edges; + /** + * simple event unbinder with a hook and support for multiple types + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + off: function off(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.off(element, type, handler); + hook && hook(type); + }); + }, - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - edgeLength = edge.physics.springLength; - // this implies that the edges between big clusters are longer - edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; + /** + * the core touch event handler. + * this finds out if we should to detect gestures + * @method onTouch + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Function} handler + * @return onTouchHandler {Function} the core event handler + */ + onTouch: function onTouch(element, eventType, handler) { + var self = this; - dx = (edge.from.x - edge.to.x); - dy = (edge.from.y - edge.to.y); - distance = Math.sqrt(dx * dx + dy * dy); + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - if (distance == 0) { - distance = 0.01; - } + // if we are in a mouseevent, but there has been a touchevent triggered in this session + // we want to do nothing. simply break out of the event. + if(isMouse && self.preventMouseEvents) { + return; - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + // mousebutton must be down + } else if(isMouse && eventType == EVENT_START && ev.button === 0) { + self.preventMouseEvents = false; + self.shouldDetect = true; + } else if(isPointer && eventType == EVENT_START) { + self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); + // just a valid start event, but no mouse + } else if(!isMouse && eventType == EVENT_START) { + self.preventMouseEvents = true; + self.shouldDetect = true; + } - fx = dx * springForce; - fy = dy * springForce; + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } - edge.from.fx += fx; - edge.from.fy += fy; - edge.to.fx -= fx; - edge.to.fy -= fy; - } - } - } - } - }; + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); + } + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + if(triggerType == EVENT_END) { + self.preventMouseEvents = false; + self.shouldDetect = false; + PointerEvent.reset(); + // update the pointerevent object after the detection + } + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } + }; + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, - /** - * This function calculates the springforces on the nodes, accounting for the support nodes. - * - * @private - */ - exports._calculateSpringForcesWithSupport = function () { - var edgeLength, edge, edgeId, combinedClusterSize; - var edges = this.edges; - - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - if (edge.via != null) { - var node1 = edge.to; - var node2 = edge.via; - var node3 = edge.from; + /** + * the core detection method + * this finds out what hammer-touch-events to trigger + * @method doDetect + * @param {Object} ev + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {HTMLElement} element + * @param {Function} handler + * @return {String} triggerType matches `EVENT_START|MOVE|END` + */ + doDetect: function doDetect(ev, eventType, element, handler) { + var touchList = this.getTouchList(ev, eventType); + var touchListLength = touchList.length; + var triggerType = eventType; + var triggerChange = touchList.trigger; // used by fakeMultitouch plugin + var changedLength = touchListLength; - edgeLength = edge.physics.springLength; + // at each touchstart-like event we want also want to trigger a TOUCH event... + if(eventType == EVENT_START) { + triggerChange = EVENT_TOUCH; + // ...the same for a touchend-like event + } else if(eventType == EVENT_END) { + triggerChange = EVENT_RELEASE; - combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + } - // this implies that the edges between big clusters are longer - edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth; - this._calculateSpringForce(node1, node2, 0.5 * edgeLength); - this._calculateSpringForce(node2, node3, 0.5 * edgeLength); - } + // after there are still touches on the screen, + // we just want to trigger a MOVE event. so change the START or END to a MOVE + // but only after detection has been started, the first time we actualy want a START + if(changedLength > 0 && this.started) { + triggerType = EVENT_MOVE; } - } - } - } - }; + // detection has been started, we keep track of this, see above + this.started = true; - /** - * This is the code actually performing the calculation for the function above. It is split out to avoid repetition. - * - * @param node1 - * @param node2 - * @param edgeLength - * @private - */ - exports._calculateSpringForce = function (node1, node2, edgeLength) { - var dx, dy, fx, fy, springForce, distance; + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); - dx = (node1.x - node2.x); - dy = (node1.y - node2.y); - distance = Math.sqrt(dx * dx + dy * dy); + // trigger the triggerType event before the change (TOUCH, RELEASE) events + // but the END event should be at last + if(eventType != EVENT_END) { + handler.call(Detection, evData); + } - if (distance == 0) { - distance = 0.01; - } + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + handler.call(Detection, evData); - fx = dx * springForce; - fy = dy * springForce; + evData.eventType = triggerType; + delete evData.changedLength; + } - node1.fx += fx; - node1.fy += fy; - node2.fx -= fx; - node2.fy -= fy; - }; + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; + } - exports._cleanupPhysicsConfiguration = function() { - if (this.physicsConfiguration !== undefined) { - while (this.physicsConfiguration.hasChildNodes()) { - this.physicsConfiguration.removeChild(this.physicsConfiguration.firstChild); - } + return triggerType; + }, - this.physicsConfiguration.parentNode.removeChild(this.physicsConfiguration); - this.physicsConfiguration = undefined; - } - } + /** + * we have different events for each device/browser + * determine what we need and set them in the EVENT_TYPES constant + * the `onTouch` method is bind to these properties. + * @method determineEventTypes + * @return {Object} events + */ + determineEventTypes: function determineEventTypes() { + var types; + if(Hammer.HAS_POINTEREVENTS) { + if(window.PointerEvent) { + types = [ + 'pointerdown', + 'pointermove', + 'pointerup pointercancel lostpointercapture' + ]; + } else { + types = [ + 'MSPointerDown', + 'MSPointerMove', + 'MSPointerUp MSPointerCancel MSLostPointerCapture' + ]; + } + } else if(Hammer.NO_MOUSEEVENTS) { + types = [ + 'touchstart', + 'touchmove', + 'touchend touchcancel' + ]; + } else { + types = [ + 'touchstart mousedown', + 'touchmove mousemove', + 'touchend touchcancel mouseup' + ]; + } - /** - * Load the HTML for the physics config and bind it - * @private - */ - exports._loadPhysicsConfiguration = function () { - if (this.physicsConfiguration === undefined) { - this.backupConstants = {}; - util.deepExtend(this.backupConstants,this.constants); + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, - var maxGravitational = Math.max(20000, (-1 * this.constants.physics.barnesHut.gravitationalConstant) * 10); - var maxSpring = Math.min(0.05, this.constants.physics.barnesHut.springConstant * 10) + /** + * create touchList depending on the event + * @method getTouchList + * @param {Object} ev + * @param {String} eventType + * @return {Array} touches + */ + getTouchList: function getTouchList(ev, eventType) { + // get the fake pointerEvent touchlist + if(Hammer.HAS_POINTEREVENTS) { + return PointerEvent.getTouchList(); + } - var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"]; - this.physicsConfiguration = document.createElement('div'); - this.physicsConfiguration.className = "PhysicsConfiguration"; - this.physicsConfiguration.innerHTML = '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
    Simulation Mode:
    Barnes HutRepulsionHierarchical
    ' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
    Options:
    ' - this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement); - this.optionsDiv = document.createElement("div"); - this.optionsDiv.style.fontSize = "14px"; - this.optionsDiv.style.fontFamily = "verdana"; - this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement); + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; + } - var rangeElement; - rangeElement = document.getElementById('graph_BH_gc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant"); - rangeElement = document.getElementById('graph_BH_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_BH_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_BH_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_BH_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping"); + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; - rangeElement = document.getElementById('graph_R_nd'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance"); - rangeElement = document.getElementById('graph_R_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_R_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_R_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_R_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping"); + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); + } + identifiers.push(touch.identifier); + }); - rangeElement = document.getElementById('graph_H_nd'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); - rangeElement = document.getElementById('graph_H_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_H_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_H_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_H_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping"); - rangeElement = document.getElementById('graph_H_direction'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction"); - rangeElement = document.getElementById('graph_H_levsep'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation"); - rangeElement = document.getElementById('graph_H_nspac'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing"); + return touchList; + } - var radioButton1 = document.getElementById("graph_physicsMethod1"); - var radioButton2 = document.getElementById("graph_physicsMethod2"); - var radioButton3 = document.getElementById("graph_physicsMethod3"); - radioButton2.checked = true; - if (this.constants.physics.barnesHut.enabled) { - radioButton1.checked = true; - } - if (this.constants.hierarchicalLayout.enabled) { - radioButton3.checked = true; - } + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - var graph_repositionNodes = document.getElementById("graph_repositionNodes"); - var graph_generateOptions = document.getElementById("graph_generateOptions"); + /** + * collect basic event data + * @method collectEventData + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Array} touches + * @param {Object} ev + * @return {Object} ev + */ + collectEventData: function collectEventData(element, eventType, touches, ev) { + // find out pointerType + var pointerType = POINTER_TOUCH; + if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { + pointerType = POINTER_MOUSE; + } else if(PointerEvent.matchType(POINTER_PEN, ev)) { + pointerType = POINTER_PEN; + } - graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this); - graph_repositionNodes.onclick = graphRepositionNodes.bind(this); - graph_generateOptions.onclick = graphGenerateOptions.bind(this); - if (this.constants.smoothCurves == true && this.constants.dynamicSmoothCurves == false) { - graph_toggleSmooth.style.background = "#A4FF56"; - } - else { - graph_toggleSmooth.style.background = "#FF8532"; - } + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, + /** + * prevent the browser default actions + * mostly used to disable scrolling of the browser + */ + preventDefault: function() { + var srcEvent = this.srcEvent; + srcEvent.preventManipulation && srcEvent.preventManipulation(); + srcEvent.preventDefault && srcEvent.preventDefault(); + }, - switchConfigurations.apply(this); + /** + * stop bubbling the event up to its parents + */ + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, - radioButton1.onchange = switchConfigurations.bind(this); - radioButton2.onchange = switchConfigurations.bind(this); - radioButton3.onchange = switchConfigurations.bind(this); - } + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); + } + }; + } }; + /** - * This overwrites the this.constants. + * @module hammer * - * @param constantsVariableName - * @param value - * @private + * @class PointerEvent + * @static */ - exports._overWriteGraphConstants = function (constantsVariableName, value) { - var nameArray = constantsVariableName.split("_"); - if (nameArray.length == 1) { - this.constants[nameArray[0]] = value; - } - else if (nameArray.length == 2) { - this.constants[nameArray[0]][nameArray[1]] = value; - } - else if (nameArray.length == 3) { - this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value; - } - }; + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, + /** + * get the pointers as an array + * @method getTouchList + * @return {Array} touchlist + */ + getTouchList: function getTouchList() { + var touchlist = []; + // we can use forEach since pointerEvents only is in IE10 + Utils.each(this.pointers, function(pointer) { + touchlist.push(pointer); + }); + return touchlist; + }, - /** - * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. - */ - function graphToggleSmoothCurves () { - this.constants.smoothCurves.enabled = !this.constants.smoothCurves.enabled; - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} - else {graph_toggleSmooth.style.background = "#FF8532";} + /** + * update the position of a pointer + * @method updatePointer + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Object} pointerEvent + */ + updatePointer: function updatePointer(eventType, pointerEvent) { + if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { + delete this.pointers[pointerEvent.pointerId]; + } else { + pointerEvent.identifier = pointerEvent.pointerId; + this.pointers[pointerEvent.pointerId] = pointerEvent; + } + }, + + /** + * check if ev matches pointertype + * @method matchType + * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` + * @param {PointerEvent} ev + */ + matchType: function matchType(pointerType, ev) { + if(!ev.pointerType) { + return false; + } + + var pt = ev.pointerType, + types = {}; + + types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); + types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); + types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); + return types[pointerType]; + }, + + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; + } + }; - this._configureSmoothCurves(false); - } /** - * this function is used to scramble the nodes + * @module hammer * + * @class Detection + * @static */ - function graphRepositionNodes () { - for (var nodeId in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(nodeId)) { - this.calculationNodes[nodeId].vx = 0; this.calculationNodes[nodeId].vy = 0; - this.calculationNodes[nodeId].fx = 0; this.calculationNodes[nodeId].fy = 0; - } - } - if (this.constants.hierarchicalLayout.enabled == true) { - this._setupHierarchicalLayout(); - showValueOfRange.call(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); - showValueOfRange.call(this, 'graph_H_cg', 1, "physics_centralGravity"); - showValueOfRange.call(this, 'graph_H_sc', 1, "physics_springConstant"); - showValueOfRange.call(this, 'graph_H_sl', 1, "physics_springLength"); - showValueOfRange.call(this, 'graph_H_damp', 1, "physics_damping"); - } - else { - this.repositionNodes(); - } - this.moving = true; - this.start(); - } + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], - /** - * this is used to generate an options file from the playing with physics system. - */ - function graphGenerateOptions () { - var options = "No options are required, default values used."; - var optionsSpecific = []; - var radioButton1 = document.getElementById("graph_physicsMethod1"); - var radioButton2 = document.getElementById("graph_physicsMethod2"); - if (radioButton1.checked == true) { - if (this.constants.physics.barnesHut.gravitationalConstant != this.backupConstants.physics.barnesHut.gravitationalConstant) {optionsSpecific.push("gravitationalConstant: " + this.constants.physics.barnesHut.gravitationalConstant);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.barnesHut.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.barnesHut.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options = "var options = {"; - options += "physics: {barnesHut: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } - } - options += '}}' - } - if (this.constants.smoothCurves.enabled != this.backupConstants.smoothCurves.enabled) { - if (optionsSpecific.length == 0) {options = "var options = {";} - else {options += ", "} - options += "smoothCurves: " + this.constants.smoothCurves.enabled; - } - if (options != "No options are required, default values used.") { - options += '};' - } - } - else if (radioButton2.checked == true) { - options = "var options = {"; - options += "physics: {barnesHut: {enabled: false}"; - if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.repulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options += ", repulsion: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } - } - options += '}}' - } - if (optionsSpecific.length == 0) {options += "}"} - if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { - options += ", smoothCurves: " + this.constants.smoothCurves; - } - options += '};' - } - else { - options = "var options = {"; - if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options += "physics: {hierarchicalRepulsion: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", "; + // data of the current Hammer.gesture detection session + current: null, + + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, + + // when this becomes true, no gestures are fired + stopped: false, + + /** + * start Hammer.gesture detection + * @method startDetect + * @param {Hammer.Instance} inst + * @param {Object} eventData + */ + startDetect: function startDetect(inst, eventData) { + // already busy with a Hammer.gesture detection on an element + if(this.current) { + return; } - } - options += '}},'; - } - options += 'hierarchicalLayout: {'; - optionsSpecific = []; - if (this.constants.hierarchicalLayout.direction != this.backupConstants.hierarchicalLayout.direction) {optionsSpecific.push("direction: " + this.constants.hierarchicalLayout.direction);} - if (Math.abs(this.constants.hierarchicalLayout.levelSeparation) != this.backupConstants.hierarchicalLayout.levelSeparation) {optionsSpecific.push("levelSeparation: " + this.constants.hierarchicalLayout.levelSeparation);} - if (this.constants.hierarchicalLayout.nodeSpacing != this.backupConstants.hierarchicalLayout.nodeSpacing) {optionsSpecific.push("nodeSpacing: " + this.constants.hierarchicalLayout.nodeSpacing);} - if (optionsSpecific.length != 0) { - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " + + this.stopped = false; + + // holds current session + this.current = { + inst: inst, // reference to HammerInstance we're working for + startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc + lastEvent: false, // last eventData + lastCalcEvent: false, // last eventData for calculations. + futureCalcEvent: false, // last eventData for calculations. + lastCalcData: {}, // last lastCalcData + name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc + }; + + this.detect(eventData); + }, + + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; } - } - options += '}' - } - else { - options += "enabled:true}"; - } - options += '};' - } + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); - this.optionsDiv.innerHTML = options; - } + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; - /** - * this is used to switch between barnesHut, repulsion and hierarchical. - * - */ - function switchConfigurations () { - var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"]; - var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value; - var tableId = "graph_" + radioButton + "_table"; - var table = document.getElementById(tableId); - table.style.display = "block"; - for (var i = 0; i < ids.length; i++) { - if (ids[i] != tableId) { - table = document.getElementById(ids[i]); - table.style.display = "none"; - } - } - this._restoreNodes(); - if (radioButton == "R") { - this.constants.hierarchicalLayout.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = false; - this.constants.physics.barnesHut.enabled = false; - } - else if (radioButton == "H") { - if (this.constants.hierarchicalLayout.enabled == false) { - this.constants.hierarchicalLayout.enabled = true; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this.constants.physics.barnesHut.enabled = false; - this.constants.smoothCurves.enabled = false; - this._setupHierarchicalLayout(); - } - } - else { - this.constants.hierarchicalLayout.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = false; - this.constants.physics.barnesHut.enabled = true; - } - this._loadSelectedForceSolver(); - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} - else {graph_toggleSmooth.style.background = "#FF8532";} - this.moving = true; - this.start(); - } + // call Hammer.gesture handlers + Utils.each(this.gestures, function triggerGesture(gesture) { + // only when the instance options have enabled this gesture + if(!this.stopped && inst.enabled && instOptions[gesture.name]) { + gesture.handler.call(gesture, eventData, inst); + } + }, this); + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; + } - /** - * this generates the ranges depending on the iniital values. - * - * @param id - * @param map - * @param constantsVariableName - */ - function showValueOfRange (id,map,constantsVariableName) { - var valueId = id + "_value"; - var rangeValue = document.getElementById(id).value; + if(eventData.eventType == EVENT_END) { + this.stopDetect(); + } - if (Array.isArray(map)) { - document.getElementById(valueId).value = map[parseInt(rangeValue)]; - this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); - } - else { - document.getElementById(valueId).value = parseInt(map) * parseFloat(rangeValue); - this._overWriteGraphConstants(constantsVariableName, parseInt(map) * parseFloat(rangeValue)); - } + return eventData; + }, - if (constantsVariableName == "hierarchicalLayout_direction" || - constantsVariableName == "hierarchicalLayout_levelSeparation" || - constantsVariableName == "hierarchicalLayout_nodeSpacing") { - this._setupHierarchicalLayout(); - } - this.moving = true; - this.start(); - } + /** + * clear the Hammer.gesture vars + * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected + * to stop other Hammer.gestures from being fired + * @method stopDetect + */ + stopDetect: function stopDetect() { + // clone current data to the store as the previous gesture + // used for the double tap gesture, since this is an other gesture detect session + this.previous = Utils.extend({}, this.current); + // reset the current + this.current = null; + this.stopped = true; + }, + /** + * calculate velocity, angle and direction + * @method getVelocityData + * @param {Object} ev + * @param {Object} center + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + */ + getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { + var cur = this.current, + recalc = false, + calcEv = cur.lastCalcEvent, + calcData = cur.lastCalcData; + if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { + center = calcEv.center; + deltaTime = ev.timeStamp - calcEv.timeStamp; + deltaX = ev.center.clientX - calcEv.center.clientX; + deltaY = ev.center.clientY - calcEv.center.clientY; + recalc = true; + } -/***/ }, -/* 61 */ -/***/ function(module, exports, __webpack_require__) { + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; + } - /** - * Creation of the ClusterMixin var. - * - * This contains all the functions the Network object can use to employ clustering - */ + if(!cur.lastCalcEvent || recalc) { + calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); + calcData.angle = Utils.getAngle(center, ev.center); + calcData.direction = Utils.getDirection(center, ev.center); - /** - * This is only called in the constructor of the network object - * - */ - exports.startWithClustering = function() { - // cluster if the data set is big - this.clusterToFit(this.constants.clustering.initialMaxNodes, true); + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; + } - // updates the lables after clustering - this.updateLabels(); + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, - // this is called here because if clusterin is disabled, the start and stabilize are called in - // the setData function. - if (this.constants.stabilize == true) { - this._stabilize(); - } - this.start(); - }; + /** + * extend eventData for Hammer.gestures + * @method extendEventData + * @param {Object} ev + * @return {Object} ev + */ + extendEventData: function extendEventData(ev) { + var cur = this.current, + startEv = cur.startEvent, + lastEv = cur.lastEvent || startEv; - /** - * This function clusters until the initialMaxNodes has been reached - * - * @param {Number} maxNumberOfNodes - * @param {Boolean} reposition - */ - exports.clusterToFit = function(maxNumberOfNodes, reposition) { - var numberOfNodes = this.nodeIndices.length; + // update the start touchlist to calculate the scale/rotation + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + startEv.touches = []; + Utils.each(ev.touches, function(touch) { + startEv.touches.push({ + clientX: touch.clientX, + clientY: touch.clientY + }); + }); + } - var maxLevels = 50; - var level = 0; + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - // we first cluster the hubs, then we pull in the outliers, repeat - while (numberOfNodes > maxNumberOfNodes && level < maxLevels) { - if (level % 3 == 0.0) { - this.forceAggregateHubs(true); - this.normalizeClusterLevels(); - } - else { - this.increaseClusterLevel(); // this also includes a cluster normalization - } - this.forceAggregateHubs(true); - numberOfNodes = this.nodeIndices.length; - level += 1; - } + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - // after the clustering we reposition the nodes to reduce the initial chaos - if (level > 0 && reposition == true) { - this.repositionNodes(); - } - this._updateCalculationNodes(); - }; + Utils.extend(ev, { + startEvent: startEv, - /** - * This function can be called to open up a specific cluster. - * It will unpack the cluster back one level. - * - * @param node | Node object: cluster to open. - */ - exports.openCluster = function(node) { - var isMovingBeforeClustering = this.moving; - if (node.clusterSize > this.constants.clustering.sectorThreshold && this._nodeInActiveArea(node) && - !(this._sector() == "default" && this.nodeIndices.length == 1)) { - // this loads a new sector, loads the nodes and edges and nodeIndices of it. - this._addSector(node); - var level = 0; + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, - // we decluster until we reach a decent number of nodes - while ((this.nodeIndices.length < this.constants.clustering.initialMaxNodes) && (level < 10)) { - this.decreaseClusterLevel(); - level += 1; - } + distance: Utils.getDistance(startEv.center, ev.center), + angle: Utils.getAngle(startEv.center, ev.center), + direction: Utils.getDirection(startEv.center, ev.center), + scale: Utils.getScale(startEv.touches, ev.touches), + rotation: Utils.getRotation(startEv.touches, ev.touches) + }); - } - else { - this._expandClusterNode(node,false,true); + return ev; + }, - // update the index list and labels - this._updateNodeIndexList(); - this._updateCalculationNodes(); - this.updateLabels(); - } + /** + * register new gesture + * @method register + * @param {Object} gesture object, see `gestures/` for documentation + * @return {Array} gestures + */ + register: function register(gesture) { + // add an enable gesture options if there is no given + var options = gesture.defaults || {}; + if(options[gesture.name] === undefined) { + options[gesture.name] = true; + } - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); - } - }; + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); + // set its index + gesture.index = gesture.index || 1000; - /** - * This calls the updateClustes with default arguments - */ - exports.updateClustersDefault = function() { - if (this.constants.clustering.enabled == true && this.constants.clustering.clusterByZoom == true) { - this.updateClusters(0,false,false); - } - }; + // add Hammer.gesture to the list + this.gestures.push(gesture); + // sort the list by index + this.gestures.sort(function(a, b) { + if(a.index < b.index) { + return -1; + } + if(a.index > b.index) { + return 1; + } + return 0; + }); - /** - * This function can be called to increase the cluster level. This means that the nodes with only one edge connection will - * be clustered with their connected node. This can be repeated as many times as needed. - * This can be called externally (by a keybind for instance) to reduce the complexity of big datasets. - */ - exports.increaseClusterLevel = function() { - this.updateClusters(-1,false,true); + return this.gestures; + } }; /** - * This function can be called to decrease the cluster level. This means that the nodes with only one edge connection will - * be unpacked if they are a cluster. This can be repeated as many times as needed. - * This can be called externally (by a key-bind for instance) to look into clusters without zooming. + * @module hammer */ - exports.decreaseClusterLevel = function() { - this.updateClusters(1,false,true); - }; - /** - * This is the main clustering function. It clusters and declusters on zoom or forced - * This function clusters on zoom, it can be called with a predefined zoom direction - * If out, check if we can form clusters, if in, check if we can open clusters. - * This function is only called from _zoom() - * - * @param {Number} zoomDirection | -1 / 0 / +1 for zoomOut / determineByZoom / zoomIn - * @param {Boolean} recursive | enabled or disable recursive calling of the opening of clusters - * @param {Boolean} force | enabled or disable forcing - * @param {Boolean} doNotStart | if true do not call start + * create new hammer instance + * all methods should return the instance itself, so it is chainable. * + * @class Instance + * @constructor + * @param {HTMLElement} element + * @param {Object} [options={}] options are merged with `Hammer.defaults` + * @return {Hammer.Instance} */ - exports.updateClusters = function(zoomDirection,recursive,force,doNotStart) { - var isMovingBeforeClustering = this.moving; - var amountOfNodes = this.nodeIndices.length; + Hammer.Instance = function(element, options) { + var self = this; - var detectedZoomingIn = (this.previousScale < this.scale && zoomDirection == 0); - var detectedZoomingOut = (this.previousScale > this.scale && zoomDirection == 0); + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - // on zoom out collapse the sector if the scale is at the level the sector was made - if (detectedZoomingOut == true) { - this._collapseSector(); - } + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - // check if we zoom in or out - if (detectedZoomingOut == true || zoomDirection == -1) { // zoom out - // forming clusters when forced pulls outliers in. When not forced, the edge length of the - // outer nodes determines if it is being clustered - this._formClusters(force); - } - else if (detectedZoomingIn == true || zoomDirection == 1) { // zoom in - if (force == true) { - // _openClusters checks for each node if the formationScale of the cluster is smaller than - // the current scale and if so, declusters. When forced, all clusters are reduced by one step - this._openClusters(recursive,force); - } - else { - // if a cluster takes up a set percentage of the active window - //this._openClustersBySize(); - this._openClusters(recursive, false); - } - } - this._updateNodeIndexList(); - - // if a cluster was NOT formed and the user zoomed out, we try clustering by hubs - if (this.nodeIndices.length == amountOfNodes && (detectedZoomingOut == true || zoomDirection == -1)) { - this._aggregateHubs(force); - this._updateNodeIndexList(); - } - - // we now reduce chains. - if (detectedZoomingOut == true || zoomDirection == -1) { // zoom out - this.handleChains(); - this._updateNodeIndexList(); - } - - this.previousScale = this.scale; + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; - // update labels - this.updateLabels(); + /** + * options, merged with the defaults + * options with an _ are converted to camelCase + * @property options + * @type {Object} + */ + Utils.each(options, function(value, name) { + delete options[name]; + options[Utils.toCamelCase(name)] = value; + }); - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length < amountOfNodes) { // this means a clustering operation has taken place - this.clusterSession += 1; - // if clusters have been made, we normalize the cluster level - this.normalizeClusterLevels(); - } + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - if (doNotStart == false || doNotStart === undefined) { - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); + // add some css to the element to prevent the browser from doing its native behavoir + if(this.options.behavior) { + Utils.toggleBehavior(this.element, this.options.behavior, true); } - } - this._updateCalculationNodes(); + /** + * event start handler on the element to start the detection + * @property eventStartHandler + * @type {Object} + */ + this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { + if(self.enabled && ev.eventType == EVENT_START) { + Detection.startDetect(self, ev); + } else if(ev.eventType == EVENT_TOUCH) { + Detection.detect(ev); + } + }); + + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; }; - /** - * This function handles the chains. It is called on every updateClusters(). - */ - exports.handleChains = function() { - // after clustering we check how many chains there are - var chainPercentage = this._getChainFraction(); - if (chainPercentage > this.constants.clustering.chainThreshold) { - this._reduceAmountOfChains(1 - this.constants.clustering.chainThreshold / chainPercentage) + Hammer.Instance.prototype = { + /** + * bind events to the instance + * @method on + * @chainable + * @param {String} gestures multiple gestures by splitting with a space + * @param {Function} handler + * @param {Object} handler.ev event object + */ + on: function onEvent(gestures, handler) { + var self = this; + Event.on(self.element, gestures, handler, function(type) { + self.eventHandlers.push({ gesture: type, handler: handler }); + }); + return self; + }, - } - }; + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; - /** - * this functions starts clustering by hubs - * The minimum hub threshold is set globally - * - * @private - */ - exports._aggregateHubs = function(force) { - this._getHubSize(); - this._formClustersByHub(force,false); - }; + Event.off(self.element, gestures, handler, function(type) { + var index = Utils.inArray({ gesture: type, handler: handler }); + if(index !== false) { + self.eventHandlers.splice(index, 1); + } + }); + return self; + }, + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; + } - /** - * This function forces hubs to form. - * - */ - exports.forceAggregateHubs = function(doNotStart) { - var isMovingBeforeClustering = this.moving; - var amountOfNodes = this.nodeIndices.length; + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; - this._aggregateHubs(true); + // trigger on the target if it is in the instance element, + // this is for event delegation tricks + var element = this.element; + if(Utils.hasParent(eventData.target, element)) { + element = eventData.target; + } - // update the index list, dynamic edges and labels - this._updateNodeIndexList(); - this.updateLabels(); + element.dispatchEvent(event); + return this; + }, - this._updateCalculationNodes(); + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length != amountOfNodes) { - this.clusterSession += 1; - } + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; - if (doNotStart == false || doNotStart === undefined) { - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); - } - } - }; + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); - /** - * If a cluster takes up more than a set percentage of the screen, open the cluster - * - * @private - */ - exports._openClustersBySize = function() { - if (this.constants.clustering.clusterByZoom == true) { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.inView() == true) { - if ((node.width * this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || - (node.height * this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { - this.openCluster(node); - } + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); } - } + + this.eventHandlers = []; + + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + + return null; } - } }; /** - * This function loops over all nodes in the nodeIndices list. For each node it checks if it is a cluster and if it - * has to be opened based on the current zoom level. + * @module gestures + */ + /** + * Move with x fingers (default 1) around on the page. + * Preventing the default browser behavior is a good way to improve feel and working. + * ```` + * hammertime.on("drag", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` * - * @private + * @class Drag + * @static + */ + /** + * @event drag + * @param {Object} ev + */ + /** + * @event dragstart + * @param {Object} ev + */ + /** + * @event dragend + * @param {Object} ev + */ + /** + * @event drapleft + * @param {Object} ev + */ + /** + * @event dragright + * @param {Object} ev + */ + /** + * @event dragup + * @param {Object} ev + */ + /** + * @event dragdown + * @param {Object} ev */ - exports._openClusters = function(recursive,force) { - for (var i = 0; i < this.nodeIndices.length; i++) { - var node = this.nodes[this.nodeIndices[i]]; - this._expandClusterNode(node,recursive,force); - this._updateCalculationNodes(); - } - }; /** - * This function checks if a node has to be opened. This is done by checking the zoom level. - * If the node contains child nodes, this function is recursively called on the child nodes as well. - * This recursive behaviour is optional and can be set by the recursive argument. - * - * @param {Node} parentNode | to check for cluster and expand - * @param {Boolean} recursive | enabled or disable recursive calling - * @param {Boolean} force | enabled or disable forcing - * @param {Boolean} [openAll] | This will recursively force all nodes in the parent to be released - * @private + * @param {String} name */ - exports._expandClusterNode = function(parentNode, recursive, force, openAll) { - // first check if node is a cluster - if (parentNode.clusterSize > 1) { - if (openAll === undefined) { - openAll = false; - } - // this means that on a double tap event or a zoom event, the cluster fully unpacks if it is smaller than 20 + (function(name) { + var triggered = false; - recursive = openAll || recursive; - // if the last child has been added on a smaller scale than current scale decluster - if (parentNode.formationScale < this.scale || force == true) { - // we will check if any of the contained child nodes should be removed from the cluster - for (var containedNodeId in parentNode.containedNodes) { - if (parentNode.containedNodes.hasOwnProperty(containedNodeId)) { - var childNode = parentNode.containedNodes[containedNodeId]; + function dragGesture(ev, inst) { + var cur = Detection.current; - // force expand will expand the largest cluster size clusters. Since we cluster from outside in, we assume that - // the largest cluster is the one that comes from outside - if (force == true) { - if (childNode.clusterSession == parentNode.clusterSessions[parentNode.clusterSessions.length-1] - || openAll) { - this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); - } - } - else { - if (this._nodeInActiveArea(parentNode)) { - this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); - } - } + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { + return; } - } - } - } - }; - /** - * ONLY CALLED FROM _expandClusterNode - * - * This function will expel a child_node from a parent_node. This is to de-cluster the node. This function will remove - * the child node from the parent contained_node object and put it back into the global nodes object. - * The same holds for the edge that was connected to the child node. It is moved back into the global edges object. - * - * @param {Node} parentNode | the parent node - * @param {String} containedNodeId | child_node id as it is contained in the containedNodes object of the parent node - * @param {Boolean} recursive | This will also check if the child needs to be expanded. - * With force and recursive both true, the entire cluster is unpacked - * @param {Boolean} force | This will disregard the zoom level and will expel this child from the parent - * @param {Boolean} openAll | This will recursively force all nodes in the parent to be released - * @private - */ - exports._expelChildFromParent = function(parentNode, containedNodeId, recursive, force, openAll) { - var childNode = parentNode.containedNodes[containedNodeId] + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - // if child node has been added on smaller scale than current, kick out - if (childNode.formationScale < this.scale || force == true) { - // unselect all selected items - this._unselectAll(); + case EVENT_MOVE: + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.distance < inst.options.dragMinDistance && + cur.name != name) { + return; + } - // put the child node back in the global nodes object - this.nodes[containedNodeId] = childNode; + var startCenter = cur.startEvent.center; - // release the contained edges from this childNode back into the global edges - this._releaseContainedEdges(parentNode,childNode); + // we are dragging! + if(cur.name != name) { + cur.name = name; + if(inst.options.dragDistanceCorrection && ev.distance > 0) { + // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. + // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. + // It might be useful to save the original start point somewhere + var factor = Math.abs(inst.options.dragMinDistance / ev.distance); + startCenter.pageX += ev.deltaX * factor; + startCenter.pageY += ev.deltaY * factor; + startCenter.clientX += ev.deltaX * factor; + startCenter.clientY += ev.deltaY * factor; - // reconnect rerouted edges to the childNode - this._connectEdgeBackToChild(parentNode,childNode); + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } - // validate all edges in dynamicEdges - this._validateEdges(parentNode); + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; + } - // undo the changes from the clustering operation on the parent node - parentNode.options.mass -= childNode.options.mass; - parentNode.clusterSize -= childNode.clusterSize; - parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*(parentNode.clusterSize-1)); + // keep direction on the axis that the drag gesture started on + var lastDirection = cur.lastEvent.direction; + if(ev.dragLockToAxis && lastDirection !== ev.direction) { + if(Utils.isVertical(lastDirection)) { + ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; + } else { + ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + } - // place the child node near the parent, not at the exact same location to avoid chaos in the system - childNode.x = parentNode.x + parentNode.growthIndicator * (0.5 - Math.random()); - childNode.y = parentNode.y + parentNode.growthIndicator * (0.5 - Math.random()); + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - // remove node from the list - delete parentNode.containedNodes[containedNodeId]; + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); - // check if there are other childs with this clusterSession in the parent. - var othersPresent = false; - for (var childNodeId in parentNode.containedNodes) { - if (parentNode.containedNodes.hasOwnProperty(childNodeId)) { - if (parentNode.containedNodes[childNodeId].clusterSession == childNode.clusterSession) { - othersPresent = true; - break; - } - } - } - // if there are no others, remove the cluster session from the list - if (othersPresent == false) { - parentNode.clusterSessions.pop(); - } + var isVertical = Utils.isVertical(ev.direction); - this._repositionBezierNodes(childNode); - // this._repositionBezierNodes(parentNode); + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - // remove the clusterSession from the child node - childNode.clusterSession = 0; + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; - // recalculate the size of the node on the next time the node is rendered - parentNode.clearSizeCache(); + case EVENT_END: + triggered = false; + break; + } + } - // restart the simulation to reorganise all nodes - this.moving = true; - } + Hammer.gestures.Drag = { + name: name, + index: 50, + handler: dragGesture, + defaults: { + /** + * minimal movement that have to be made before the drag event gets triggered + * @property dragMinDistance + * @type {Number} + * @default 10 + */ + dragMinDistance: 10, - // check if a further expansion step is possible if recursivity is enabled - if (recursive == true) { - this._expandClusterNode(childNode,recursive,force,openAll); - } - }; + /** + * Set dragDistanceCorrection to true to make the starting point of the drag + * be calculated from where the drag was triggered, not from where the touch started. + * Useful to avoid a jerk-starting drag, which can make fine-adjustments + * through dragging difficult, and be visually unappealing. + * @property dragDistanceCorrection + * @type {Boolean} + * @default true + */ + dragDistanceCorrection: true, + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, - /** - * position the bezier nodes at the center of the edges - * - * @param node - * @private - */ - exports._repositionBezierNodes = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - node.dynamicEdges[i].positionBezierNode(); - } - }; + /** + * prevent default browser behavior when dragging occurs + * be careful with it, it makes the element a blocking element + * when you are using the drag gesture, it is a good practice to set this true + * @property dragBlockHorizontal + * @type {Boolean} + * @default false + */ + dragBlockHorizontal: false, + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, + + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, + + /** + * drag lock only kicks in when distance > dragLockMinDistance + * This way, locking occurs only when the distance has become large enough to reliably determine the direction + * @property dragLockMinDistance + * @type {Number} + * @default 25 + */ + dragLockMinDistance: 25 + } + }; + })('drag'); /** - * This function checks if any nodes at the end of their trees have edges below a threshold length - * This function is called only from updateClusters() - * forceLevelCollapse ignores the length of the edge and collapses one level - * This means that a node with only one edge will be clustered with its connected node + * @module gestures + */ + /** + * trigger a simple gesture event, so you can do anything in your handler. + * only usable if you know what your doing... * - * @private - * @param {Boolean} force + * @class Gesture + * @static */ - exports._formClusters = function(force) { - if (force == false) { - if (this.constants.clustering.clusterByZoom == true) { - this._formClustersByZoom(); + /** + * @event gesture + * @param {Object} ev + */ + Hammer.gestures.Gesture = { + name: 'gesture', + index: 1337, + handler: function releaseGesture(ev, inst) { + inst.trigger(this.name, ev); } - } - else { - this._forceClustersByZoom(); - } }; - /** - * This function handles the clustering by zooming out, this is based on a minimum edge distance + * @module gestures + */ + /** + * Touch stays at the same place for x time * - * @private + * @class Hold + * @static + */ + /** + * @event hold + * @param {Object} ev */ - exports._formClustersByZoom = function() { - var dx,dy,length; - var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; - - // check if any edges are shorter than minLength and start the clustering - // the clustering favours the node with the larger mass - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - var edge = this.edges[edgeId]; - if (edge.connected) { - if (edge.toId != edge.fromId) { - dx = (edge.to.x - edge.from.x); - dy = (edge.to.y - edge.from.y); - length = Math.sqrt(dx * dx + dy * dy); - - - if (length < minLength) { - // first check which node is larger - var parentNode = edge.from; - var childNode = edge.to; - if (edge.to.options.mass > edge.from.options.mass) { - parentNode = edge.to; - childNode = edge.from; - } - - if (childNode.dynamicEdges.length == 1) { - this._addToCluster(parentNode,childNode,false); - } - else if (parentNode.dynamicEdges.length == 1) { - this._addToCluster(childNode,parentNode,false); - } - } - } - } - } - } - }; /** - * This function forces the network to cluster all nodes with only one connecting edge to their - * connected node. - * - * @private + * @param {String} name */ - exports._forceClustersByZoom = function() { - for (var nodeId in this.nodes) { - // another node could have absorbed this child. - if (this.nodes.hasOwnProperty(nodeId)) { - var childNode = this.nodes[nodeId]; + (function(name) { + var timer; - // the edges can be swallowed by another decrease - if (childNode.dynamicEdges.length == 1) { - var edge = childNode.dynamicEdges[0]; - var parentNode = (edge.toId == childNode.id) ? this.nodes[edge.fromId] : this.nodes[edge.toId]; - // group to the largest node - if (childNode.id != parentNode.id) { - if (parentNode.options.mass > childNode.options.mass) { - this._addToCluster(parentNode,childNode,true); - } - else { - this._addToCluster(childNode,parentNode,true); - } - } - } - } - } - }; + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); - /** - * To keep the nodes of roughly equal size we normalize the cluster levels. - * This function clusters a node to its smallest connected neighbour. - * - * @param node - * @private - */ - exports._clusterToSmallestNeighbour = function(node) { - var smallestNeighbour = -1; - var smallestNeighbourNode = null; - for (var i = 0; i < node.dynamicEdges.length; i++) { - if (node.dynamicEdges[i] !== undefined) { - var neighbour = null; - if (node.dynamicEdges[i].fromId != node.id) { - neighbour = node.dynamicEdges[i].from; - } - else if (node.dynamicEdges[i].toId != node.id) { - neighbour = node.dynamicEdges[i].to; - } + // set the gesture so we can check in the timeout if it still is + current.name = name; + + // set timer and if after the timeout it still is hold, + // we trigger the hold event + timer = setTimeout(function() { + if(current && current.name == name) { + inst.trigger(name, ev); + } + }, options.holdTimeout); + break; + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; - if (neighbour != null && smallestNeighbour > neighbour.clusterSessions.length) { - smallestNeighbour = neighbour.clusterSessions.length; - smallestNeighbourNode = neighbour; - } + case EVENT_RELEASE: + clearTimeout(timer); + break; + } } - } - if (neighbour != null && this.nodes[neighbour.id] !== undefined) { - this._addToCluster(neighbour, node, true); - } - }; + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture + }; + })('hold'); /** - * This function forms clusters from hubs, it loops over all nodes + * @module gestures + */ + /** + * when a touch is being released from the page * - * @param {Boolean} force | Disregard zoom level - * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges - * @private + * @class Release + * @static */ - exports._formClustersByHub = function(force, onlyEqual) { - // we loop over all nodes in the list - for (var nodeId in this.nodes) { - // we check if it is still available since it can be used by the clustering in this loop - if (this.nodes.hasOwnProperty(nodeId)) { - this._formClusterFromHub(this.nodes[nodeId],force,onlyEqual); + /** + * @event release + * @param {Object} ev + */ + Hammer.gestures.Release = { + name: 'release', + index: Infinity, + handler: function releaseGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + inst.trigger(this.name, ev); + } } - } }; /** - * This function forms a cluster from a specific preselected hub node + * @module gestures + */ + /** + * triggers swipe events when the end velocity is above the threshold + * for best usage, set `preventDefault` (on the drag gesture) to `true` + * ```` + * hammertime.on("dragleft swipeleft", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` * - * @param {Node} hubNode | the node we will cluster as a hub - * @param {Boolean} force | Disregard zoom level - * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges - * @param {Number} [absorptionSizeOffset] | - * @private + * @class Swipe + * @static */ - exports._formClusterFromHub = function(hubNode, force, onlyEqual, absorptionSizeOffset) { - if (absorptionSizeOffset === undefined) { - absorptionSizeOffset = 0; - } - //this.hubThreshold = 43 - //if (hubNode.dynamicEdgesLength < 0) { - // console.error(hubNode.dynamicEdgesLength, this.hubThreshold, onlyEqual) - //} - // we decide if the node is a hub - if ((hubNode.dynamicEdges.length >= this.hubThreshold && onlyEqual == false) || - (hubNode.dynamicEdges.length == this.hubThreshold && onlyEqual == true)) { - // initialize variables - var dx,dy,length; - var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; - var allowCluster = false; + /** + * @event swipe + * @param {Object} ev + */ + /** + * @event swipeleft + * @param {Object} ev + */ + /** + * @event swiperight + * @param {Object} ev + */ + /** + * @event swipeup + * @param {Object} ev + */ + /** + * @event swipedown + * @param {Object} ev + */ + Hammer.gestures.Swipe = { + name: 'swipe', + index: 40, + defaults: { + /** + * @property swipeMinTouches + * @type {Number} + * @default 1 + */ + swipeMinTouches: 1, - // we create a list of edges because the dynamicEdges change over the course of this loop - var edgesIdarray = []; - var amountOfInitialEdges = hubNode.dynamicEdges.length; - for (var j = 0; j < amountOfInitialEdges; j++) { - edgesIdarray.push(hubNode.dynamicEdges[j].id); - } + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - // if the hub clustering is not forced, we check if one of the edges connected - // to a cluster is small enough based on the constants.clustering.clusterEdgeThreshold - if (force == false) { - allowCluster = false; - for (j = 0; j < amountOfInitialEdges; j++) { - var edge = this.edges[edgesIdarray[j]]; - if (edge !== undefined) { - if (edge.connected) { - if (edge.toId != edge.fromId) { - dx = (edge.to.x - edge.from.x); - dy = (edge.to.y - edge.from.y); - length = Math.sqrt(dx * dx + dy * dy); + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, - if (length < minLength) { - allowCluster = true; - break; - } - } - } - } - } - } + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, - // start the clustering if allowed - if ((!force && allowCluster) || force) { - var children = []; - var childrenIds = {}; - // we loop over all edges INITIALLY connected to this hub to get a list of the childNodes - for (j = 0; j < amountOfInitialEdges; j++) { - edge = this.edges[edgesIdarray[j]]; - var childNode = this.nodes[(edge.fromId == hubNode.id) ? edge.toId : edge.fromId]; - if (childrenIds[childNode.id] === undefined) { - childrenIds[childNode.id] = true; - children.push(childNode); - } - } + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; - for (j = 0; j < children.length; j++) { - var childNode = children[j]; - // we do not want hubs to merge with other hubs nor do we want to cluster itself. - if ((childNode.dynamicEdges.length <= (this.hubThreshold + absorptionSizeOffset)) && - (childNode.id != hubNode.id)) { - this._addToCluster(hubNode,childNode,force); + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; + } + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.velocityX > options.swipeVelocityX || + ev.velocityY > options.swipeVelocityY) { + // trigger swipe events + inst.trigger(this.name, ev); + inst.trigger(this.name + ev.direction, ev); + } } - else { - //console.log("WILL NOT MERGE:",childNode.dynamicEdges.length , (this.hubThreshold + absorptionSizeOffset)) - } - } - } - } }; - - /** - * This function adds the child node to the parent node, creating a cluster if it is not already. + * @module gestures + */ + /** + * Single tap and a double tap on a place * - * @param {Node} parentNode | this is the node that will house the child node - * @param {Node} childNode | this node will be deleted from the global this.nodes and stored in the parent node - * @param {Boolean} force | true will only update the remainingEdges at the very end of the clustering, ensuring single level collapse - * @private + * @class Tap + * @static + */ + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev */ - exports._addToCluster = function(parentNode, childNode, force) { - // join child node in the parent node - parentNode.containedNodes[childNode.id] = childNode; - //console.log(parentNode.id, childNode.id) - // manage all the edges connected to the child and parent nodes - for (var i = 0; i < childNode.dynamicEdges.length; i++) { - var edge = childNode.dynamicEdges[i]; - if (edge.toId == parentNode.id || edge.fromId == parentNode.id) { // edge connected to parentNode - //console.log("COLLECT",parentNode.id, childNode.id, edge.toId, edge.fromId) - this._addToContainedEdges(parentNode,childNode,edge); - } - else { - //console.log("REWIRE",parentNode.id, childNode.id, edge.toId, edge.fromId) - this._connectEdgeToCluster(parentNode,childNode,edge); - } - } - // a contained node has no dynamic edges. - childNode.dynamicEdges = []; - // remove circular edges from clusters - this._containCircularEdgesFromNode(parentNode,childNode); + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - // remove the childNode from the global nodes object - delete this.nodes[childNode.id]; + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - // update the properties of the child and parent - var massBefore = parentNode.options.mass; - childNode.clusterSession = this.clusterSession; - parentNode.options.mass += childNode.options.mass; - parentNode.clusterSize += childNode.clusterSize; - parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - // keep track of the clustersessions so we can open the cluster up as it has been formed. - if (parentNode.clusterSessions[parentNode.clusterSessions.length - 1] != this.clusterSession) { - parentNode.clusterSessions.push(this.clusterSession); - } + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; - // forced clusters only open from screen size and double tap - if (force == true) { - parentNode.formationScale = 0; - } - else { - parentNode.formationScale = this.scale; // The latest child has been added on this scale - } + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } - // recalculate the size of the node on the next time the node is rendered - parentNode.clearSizeCache(); + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } + } + break; + } + } - // set the pop-out scale for the childnode - parentNode.containedNodes[childNode.id].formationScale = parentNode.formationScale; + Hammer.gestures.Tap = { + name: name, + index: 100, + handler: tapGesture, + defaults: { + /** + * max time of a tap, this is for the slow tappers + * @property tapMaxTime + * @type {Number} + * @default 250 + */ + tapMaxTime: 250, - // nullify the movement velocity of the child, this is to avoid hectic behaviour - childNode.clearVelocity(); + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - // the mass has altered, preservation of energy dictates the velocity to be updated - parentNode.updateVelocity(massBefore); + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - // restart the simulation to reorganise all nodes - this.moving = true; - }; + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 + } + }; + })('tap'); /** - * This adds an edge from the childNode to the contained edges of the parent node + * @module gestures + */ + /** + * when a touch is being touched at the page * - * @param parentNode | Node object - * @param childNode | Node object - * @param edge | Edge object - * @private + * @class Touch + * @static */ - exports._addToContainedEdges = function(parentNode, childNode, edge) { - // create an array object if it does not yet exist for this childNode - if (parentNode.containedEdges[childNode.id] === undefined) { - parentNode.containedEdges[childNode.id] = [] - } - // add this edge to the list - parentNode.containedEdges[childNode.id].push(edge); + /** + * @event touch + * @param {Object} ev + */ + Hammer.gestures.Touch = { + name: 'touch', + index: -Infinity, + defaults: { + /** + * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, + * but it improves gestures like transforming and dragging. + * be careful with using this, it can be very annoying for users to be stuck on the page + * @property preventDefault + * @type {Boolean} + * @default false + */ + preventDefault: false, - // remove the edge from the global edges object - delete this.edges[edge.id]; + /** + * disable mouse events, so only touch (or pen!) input triggers events + * @property preventMouse + * @type {Boolean} + * @default false + */ + preventMouse: false + }, + handler: function touchGesture(ev, inst) { + if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { + ev.stopDetect(); + return; + } - // remove the edge from the parent object - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - if (parentNode.dynamicEdges[i].id == edge.id) { - parentNode.dynamicEdges.splice(i,1); - break; + if(inst.options.preventDefault) { + ev.preventDefault(); + } + + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); + } } - } }; /** - * This function connects an edge that was connected to a child node to the parent node. - * It keeps track of which nodes it has been connected to with the originalId array. - * - * @param {Node} parentNode | Node object - * @param {Node} childNode | Node object - * @param {Edge} edge | Edge object - * @private + * @module gestures */ - exports._connectEdgeToCluster = function(parentNode, childNode, edge) { - // handle circular edges - if (edge.toId == edge.fromId) { - this._addToContainedEdges(parentNode, childNode, edge); - } - else { - if (edge.toId == childNode.id) { // edge connected to other node on the "to" side - edge.originalToId.push(childNode.id); - edge.to = parentNode; - edge.toId = parentNode.id; - } - else { // edge connected to other node with the "from" side - edge.originalFromId.push(childNode.id); - edge.from = parentNode; - edge.fromId = parentNode.id; - } - - this._addToReroutedEdges(parentNode,childNode,edge); - } - }; - - /** - * If a node is connected to itself, a circular edge is drawn. When clustering we want to contain - * these edges inside of the cluster. + * User want to scale or rotate with 2 fingers + * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the + * `preventDefault` option. * - * @param parentNode - * @param childNode - * @private + * @class Transform + * @static */ - exports._containCircularEdgesFromNode = function(parentNode, childNode) { - // manage all the edges connected to the child and parent nodes - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - var edge = parentNode.dynamicEdges[i]; - // handle circular edges - if (edge.toId == edge.fromId) { - this._addToContainedEdges(parentNode, childNode, edge); - } - } - }; - - /** - * This adds an edge from the childNode to the rerouted edges of the parent node - * - * @param parentNode | Node object - * @param childNode | Node object - * @param edge | Edge object - * @private + * @event transform + * @param {Object} ev */ - exports._addToReroutedEdges = function(parentNode, childNode, edge) { - // create an array object if it does not yet exist for this childNode - // we store the edge in the rerouted edges so we can restore it when the cluster pops open - if (!(parentNode.reroutedEdges.hasOwnProperty(childNode.id))) { - parentNode.reroutedEdges[childNode.id] = []; - } - parentNode.reroutedEdges[childNode.id].push(edge); - - // this edge becomes part of the dynamicEdges of the cluster node - parentNode.dynamicEdges.push(edge); - }; - - - /** - * This function connects an edge that was connected to a cluster node back to the child node. - * - * @param parentNode | Node object - * @param childNode | Node object - * @private + * @event transformstart + * @param {Object} ev */ - exports._connectEdgeBackToChild = function(parentNode, childNode) { - if (parentNode.reroutedEdges.hasOwnProperty(childNode.id)) { - for (var i = 0; i < parentNode.reroutedEdges[childNode.id].length; i++) { - var edge = parentNode.reroutedEdges[childNode.id][i]; - if (edge.originalFromId[edge.originalFromId.length-1] == childNode.id) { - edge.originalFromId.pop(); - edge.fromId = childNode.id; - edge.from = childNode; - } - else { - edge.originalToId.pop(); - edge.toId = childNode.id; - edge.to = childNode; - } - - // append this edge to the list of edges connecting to the childnode - childNode.dynamicEdges.push(edge); - - // remove the edge from the parent object - for (var j = 0; j < parentNode.dynamicEdges.length; j++) { - if (parentNode.dynamicEdges[j].id == edge.id) { - parentNode.dynamicEdges.splice(j,1); - break; - } - } - } - // remove the entry from the rerouted edges - delete parentNode.reroutedEdges[childNode.id]; - } - }; - - /** - * When loops are clustered, an edge can be both in the rerouted array and the contained array. - * This function is called last to verify that all edges in dynamicEdges are in fact connected to the - * parentNode - * - * @param parentNode | Node object - * @private + * @event transformend + * @param {Object} ev + */ + /** + * @event pinchin + * @param {Object} ev + */ + /** + * @event pinchout + * @param {Object} ev + */ + /** + * @event rotate + * @param {Object} ev */ - exports._validateEdges = function(parentNode) { - var dynamicEdges = [] - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - var edge = parentNode.dynamicEdges[i]; - if (parentNode.id == edge.toId || parentNode.id == edge.fromId) { - dynamicEdges.push(edge); - } - } - parentNode.dynamicEdges = dynamicEdges; - }; - /** - * This function released the contained edges back into the global domain and puts them back into the - * dynamic edges of both parent and child. - * - * @param {Node} parentNode | - * @param {Node} childNode | - * @private + * @param {String} name */ - exports._releaseContainedEdges = function(parentNode, childNode) { - for (var i = 0; i < parentNode.containedEdges[childNode.id].length; i++) { - var edge = parentNode.containedEdges[childNode.id][i]; + (function(name) { + var triggered = false; - // put the edge back in the global edges object - this.edges[edge.id] = edge; + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - // put the edge back in the dynamic edges of the child and parent - childNode.dynamicEdges.push(edge); - parentNode.dynamicEdges.push(edge); - } - // remove the entry from the contained edges - delete parentNode.containedEdges[childNode.id]; + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - }; + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; + } + // we are transforming! + Detection.current.name = name; + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - // ------------------- UTILITY FUNCTIONS ---------------------------- // + inst.trigger(name, ev); // basic transform event + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } - /** - * This updates the node labels for all nodes (for debugging purposes) - */ - exports.updateLabels = function() { - var nodeId; - // update node labels - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.clusterSize > 1) { - node.label = "[".concat(String(node.clusterSize),"]"); - } - } - } + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; - // update node labels - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.clusterSize == 1) { - if (node.originalLabel !== undefined) { - node.label = node.originalLabel; - } - else { - node.label = String(node.id); + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; } - } } - } - // /* Debug Override */ - // for (nodeId in this.nodes) { - // if (this.nodes.hasOwnProperty(nodeId)) { - // node = this.nodes[nodeId]; - // node.label = String(node.clusterSize + ":" + node.dynamicEdges.length); - // } - // } + Hammer.gestures.Transform = { + name: name, + index: 45, + defaults: { + /** + * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 + * @property transformMinScale + * @type {Number} + * @default 0.01 + */ + transformMinScale: 0.01, - }; + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 + }, + handler: transformGesture + }; + })('transform'); /** - * We want to keep the cluster level distribution rather small. This means we do not want unclustered nodes - * if the rest of the nodes are already a few cluster levels in. - * To fix this we use this function. It determines the min and max cluster level and sends nodes that have not - * clustered enough to the clusterToSmallestNeighbours function. + * @module hammer */ - exports.normalizeClusterLevels = function() { - var maxLevel = 0; - var minLevel = 1e9; - var clusterLevel = 0; - var nodeId; - - // we loop over all nodes in the list - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - clusterLevel = this.nodes[nodeId].clusterSessions.length; - if (maxLevel < clusterLevel) {maxLevel = clusterLevel;} - if (minLevel > clusterLevel) {minLevel = clusterLevel;} - } - } - - if (maxLevel - minLevel > this.constants.clustering.clusterLevelDifference) { - var amountOfNodes = this.nodeIndices.length; - var targetLevel = maxLevel - this.constants.clustering.clusterLevelDifference; - // we loop over all nodes in the list - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].clusterSessions.length < targetLevel) { - this._clusterToSmallestNeighbour(this.nodes[nodeId]); - } - } - } - this._updateNodeIndexList(); - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length != amountOfNodes) { - this.clusterSession += 1; - } - } - }; + // AMD export + if(true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + // commonjs export + } else if(typeof module !== 'undefined' && module.exports) { + module.exports = Hammer; + // browser export + } else { + window.Hammer = Hammer; + } + })(window); - /** - * This function determines if the cluster we want to decluster is in the active area - * this means around the zoom center - * - * @param {Node} node - * @returns {boolean} - * @private - */ - exports._nodeInActiveArea = function(node) { - return ( - Math.abs(node.x - this.areaCenter.x) <= this.constants.clustering.activeAreaBoxSize/this.scale - && - Math.abs(node.y - this.areaCenter.y) <= this.constants.clustering.activeAreaBoxSize/this.scale - ) - }; +/***/ }, +/* 65 */ +/***/ function(module, exports, __webpack_require__) { + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js + //! version : 2.9.0 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com - /** - * This is an adaptation of the original repositioning function. This is called if the system is clustered initially - * It puts large clusters away from the center and randomizes the order. - * - */ - exports.repositionNodes = function() { - for (var i = 0; i < this.nodeIndices.length; i++) { - var node = this.nodes[this.nodeIndices[i]]; - if ((node.xFixed == false || node.yFixed == false)) { - var radius = 10 * 0.1*this.nodeIndices.length * Math.min(100,node.options.mass); - var angle = 2 * Math.PI * Math.random(); - if (node.xFixed == false) {node.x = radius * Math.cos(angle);} - if (node.yFixed == false) {node.y = radius * Math.sin(angle);} - this._repositionBezierNodes(node); - } - } - }; + (function (undefined) { + /************************************ + Constants + ************************************/ + var moment, + VERSION = '2.9.0', + // the global-scope this is NOT the global object in Node.js + globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, + oldGlobalMoment, + round = Math.round, + hasOwnProperty = Object.prototype.hasOwnProperty, + i, - /** - * We determine how many connections denote an important hub. - * We take the mean + 2*std as the important hub size. (Assuming a normal distribution of data, ~2.2%) - * - * @private - */ - exports._getHubSize = function() { - var average = 0; - var averageSquared = 0; - var hubCounter = 0; - var largestHub = 0; + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, - for (var i = 0; i < this.nodeIndices.length; i++) { + // internal storage for locale config files + locales = {}, - var node = this.nodes[this.nodeIndices[i]]; - if (node.dynamicEdges.length > largestHub) { - largestHub = node.dynamicEdges.length; - } - average += node.dynamicEdges.length; - averageSquared += Math.pow(node.dynamicEdges.length,2); - hubCounter += 1; - } - average = average / hubCounter; - averageSquared = averageSquared / hubCounter; + // extra moment internal properties (plugins register props here) + momentProperties = [], - var variance = averageSquared - Math.pow(average,2); + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module && module.exports), - var standardDeviation = Math.sqrt(variance); + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - this.hubThreshold = Math.floor(average + 2*standardDeviation); + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, - // always have at least one to cluster - if (this.hubThreshold > largestHub) { - this.hubThreshold = largestHub; - } + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, - // console.log("average",average,"averageSQ",averageSquared,"var",variance,"std",standardDeviation); - // console.log("hubThreshold:",this.hubThreshold); - }; + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - /** - * We reduce the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods - * with this amount we can cluster specifically on these chains. - * - * @param {Number} fraction | between 0 and 1, the percentage of chains to reduce - * @private - */ - exports._reduceAmountOfChains = function(fraction) { - this.hubThreshold = 2; - var reduceAmount = Math.floor(this.nodeIndices.length * fraction); - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].dynamicEdges.length == 2) { - if (reduceAmount > 0) { - this._formClusterFromHub(this.nodes[nodeId],true,true,1); - reduceAmount -= 1; + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], + + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], + + // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, + + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 + }, + + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + Q : 'quarter', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' + }, + + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' + }, + + // format function strings + formatFunctions = {}, + + // default relative time thresholds + relativeTimeThresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }, + + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), + + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.localeData().monthsShort(this, format); + }, + MMMM : function (format) { + return this.localeData().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.localeData().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.localeData().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.localeData().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); + }, + z : function () { + return this.zoneAbbr(); + }, + zz : function () { + return this.zoneName(); + }, + x : function () { + return this.valueOf(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); + } + }, + + deprecations = {}, + + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], + + updateInProgress = false; + + // Pick the first defined of two or three arguments. dfl comes from + // default. + function dfl(a, b, c) { + switch (arguments.length) { + case 2: return a != null ? a : b; + case 3: return a != null ? a : b != null ? b : c; + default: throw new Error('Implement me'); } - } } - } - }; - /** - * We get the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods - * with this amount we can cluster specifically on these chains. - * - * @private - */ - exports._getChainFraction = function() { - var chains = 0; - var total = 0; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].dynamicEdges.length == 2) { - chains += 1; - } - total += 1; + function hasOwnProp(a, b) { + return hasOwnProperty.call(a, b); } - } - return chains/total; - }; + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; + } -/***/ }, -/* 62 */ -/***/ function(module, exports, __webpack_require__) { + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } - var util = __webpack_require__(1); - var Node = __webpack_require__(40); + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + printMsg(msg); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } - /** - * Creation of the SectorMixin var. - * - * This contains all the functions the Network object can use to employ the sector system. - * The sector system is always used by Network, though the benefits only apply to the use of clustering. - * If clustering is not used, there is no overhead except for a duplicate object with references to nodes and edges. - */ + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; + } + } - /** - * This function is only called by the setData function of the Network object. - * This loads the global references into the active sector. This initializes the sector. - * - * @private - */ - exports._putDataInSector = function() { - this.sectors["active"][this._sector()].nodes = this.nodes; - this.sectors["active"][this._sector()].edges = this.edges; - this.sectors["active"][this._sector()].nodeIndices = this.nodeIndices; - }; + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.localeData().ordinal(func.call(this, a), period); + }; + } + function monthDiff(a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; - /** - * /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied (active) sector. If a type is defined, do the specific type - * - * @param {String} sectorId - * @param {String} [sectorType] | "active" or "frozen" - * @private - */ - exports._switchToSector = function(sectorId, sectorType) { - if (sectorType === undefined || sectorType == "active") { - this._switchToActiveSector(sectorId); - } - else { - this._switchToFrozenSector(sectorId); - } - }; + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + return -(wholeMonthDiff + adjust); + } - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied active sector. - * - * @param sectorId - * @private - */ - exports._switchToActiveSector = function(sectorId) { - this.nodeIndices = this.sectors["active"][sectorId]["nodeIndices"]; - this.nodes = this.sectors["active"][sectorId]["nodes"]; - this.edges = this.sectors["active"][sectorId]["edges"]; - }; + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + + + function meridiemFixWrap(locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // thie is not supposed to happen + return hour; + } + } + + /************************************ + Constructors + ************************************/ + + function Locale() { + } + + // Moment prototype object + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); + } + copyConfig(this, config); + this._d = new Date(+config._d); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + moment.updateOffset(this); + updateInProgress = false; + } + } + + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = moment.localeData(); + + this._bubble(); + } + + /************************************ + Helpers + ************************************/ + + + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; + } + + function copyConfig(to, from) { + var i, prop, val; + + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } + } + } + + return to; + } + + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } + + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; + + while (output.length < targetLength) { + output = '0' + output; + } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } + + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + other = makeAs(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; + } + + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); + return this; + }; + } + + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); + } + if (months) { + rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + moment.updateOffset(mom, days || months); + } + } + + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } + + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } + + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } + + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } + + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; + } + + function makeList(field) { + var count, setter; + + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; + } + + moment[field] = function (format, index) { + var i, getter, + method = moment._locale[field], + results = []; + + if (typeof format === 'number') { + index = format; + format = undefined; + } + + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment._locale, m, format || ''); + }; + + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } + }; + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } + } + + return value; + } + + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } + + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; + } + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 24 || + (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || + m._a[SECOND] !== 0 || + m._a[MILLISECOND] !== 0)) ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + + m._pf.overflow = overflow; + } + } + + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; + + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0 && + m._pf.bigHour === undefined; + } + } + return m._isValid; + } + + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } + + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } + + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } + } + return locales[name]; + } + + // Return a moment from input, that is local/utc/utcOffset equivalent to + // model. + function makeAs(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (moment.isMoment(input) || isDate(input) ? + +input : +moment(input)) - (+res); + // Use low-level api, because this fn is low-level api. + res._d.setTime(+res._d + diff); + moment.updateOffset(res, false); + return res; + } else { + return moment(input).local(); + } + } + + /************************************ + Locale + ************************************/ + + + extend(Locale.prototype, { + + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); + }, + _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + months : function (m) { + return this._months[m.month()]; + }, - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied active sector. - * - * @private - */ - exports._switchToSupportSector = function() { - this.nodeIndices = this.sectors["support"]["nodeIndices"]; - this.nodes = this.sectors["support"]["nodes"]; - this.edges = this.sectors["support"]["edges"]; - }; + _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, + monthsParse : function (monthName, format, strict) { + var i, mom, regex; - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied frozen sector. - * - * @param sectorId - * @private - */ - exports._switchToFrozenSector = function(sectorId) { - this.nodeIndices = this.sectors["frozen"][sectorId]["nodeIndices"]; - this.nodes = this.sectors["frozen"][sectorId]["nodes"]; - this.edges = this.sectors["frozen"][sectorId]["edges"]; - }; + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = moment.utc([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + }, - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the currently active sector. - * - * @private - */ - exports._loadLatestSector = function() { - this._switchToSector(this._sector()); - }; + _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, + _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, - /** - * This function returns the currently active sector Id - * - * @returns {String} - * @private - */ - exports._sector = function() { - return this.activeSector[this.activeSector.length-1]; - }; + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, + weekdaysParse : function (weekdayName) { + var i, mom, regex; - /** - * This function returns the previously active sector Id - * - * @returns {String} - * @private - */ - exports._previousSector = function() { - if (this.activeSector.length > 1) { - return this.activeSector[this.activeSector.length-2]; - } - else { - throw new TypeError('there are not enough sectors in the this.activeSector array.'); - } - }; + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + }, - /** - * We add the active sector at the end of the this.activeSector array - * This ensures it is the currently active sector returned by _sector() and it reaches the top - * of the activeSector stack. When we reverse our steps we move from the end to the beginning of this stack. - * - * @param newId - * @private - */ - exports._setActiveSector = function(newId) { - this.activeSector.push(newId); - }; + _longDateFormat : { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; + } + return output; + }, + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, - /** - * We remove the currently active sector id from the active sector stack. This happens when - * we reactivate the previously active sector - * - * @private - */ - exports._forgetLastSector = function() { - this.activeSector.pop(); - }; + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, - /** - * This function creates a new active sector with the supplied newId. This newId - * is the expanding node id. - * - * @param {String} newId | Id of the new active sector - * @private - */ - exports._createNewSector = function(newId) { - // create the new sector - this.sectors["active"][newId] = {"nodes":{}, - "edges":{}, - "nodeIndices":[], - "formationScale": this.scale, - "drawingNode": undefined}; + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom, now) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom, [now]) : output; + }, - // create the new sector render node. This gives visual feedback that you are in a new sector. - this.sectors["active"][newId]['drawingNode'] = new Node( - {id:newId, - color: { - background: "#eaefef", - border: "495c5e" - } - },{},{},this.constants); - this.sectors["active"][newId]['drawingNode'].clusterSize = 2; - }; + _relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, - /** - * This function removes the currently active sector. This is called when we create a new - * active sector. - * - * @param {String} sectorId | Id of the active sector that will be removed - * @private - */ - exports._deleteActiveSector = function(sectorId) { - delete this.sectors["active"][sectorId]; - }; + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, + ordinal : function (number) { + return this._ordinal.replace('%d', number); + }, + _ordinal : '%d', + _ordinalParse : /\d{1,2}/, - /** - * This function removes the currently active sector. This is called when we reactivate - * the previously active sector. - * - * @param {String} sectorId | Id of the active sector that will be removed - * @private - */ - exports._deleteFrozenSector = function(sectorId) { - delete this.sectors["frozen"][sectorId]; - }; + preparse : function (string) { + return string; + }, + postformat : function (string) { + return string; + }, - /** - * Freezing an active sector means moving it from the "active" object to the "frozen" object. - * We copy the references, then delete the active entree. - * - * @param sectorId - * @private - */ - exports._freezeSector = function(sectorId) { - // we move the set references from the active to the frozen stack. - this.sectors["frozen"][sectorId] = this.sectors["active"][sectorId]; + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, - // we have moved the sector data into the frozen set, we now remove it from the active set - this._deleteActiveSector(sectorId); - }; + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, + firstDayOfWeek : function () { + return this._week.dow; + }, - /** - * This is the reverse operation of _freezeSector. Activating means moving the sector from the "frozen" - * object to the "active" object. - * - * @param sectorId - * @private - */ - exports._activateSector = function(sectorId) { - // we move the set references from the frozen to the active stack. - this.sectors["active"][sectorId] = this.sectors["frozen"][sectorId]; + firstDayOfYear : function () { + return this._week.doy; + }, - // we have moved the sector data into the active set, we now remove it from the frozen stack - this._deleteFrozenSector(sectorId); - }; + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; + } + }); + /************************************ + Formatting + ************************************/ - /** - * This function merges the data from the currently active sector with a frozen sector. This is used - * in the process of reverting back to the previously active sector. - * The data that is placed in the frozen (the previously active) sector is the node that has been removed from it - * upon the creation of a new active sector. - * - * @param sectorId - * @private - */ - exports._mergeThisWithFrozen = function(sectorId) { - // copy all nodes - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.sectors["frozen"][sectorId]["nodes"][nodeId] = this.nodes[nodeId]; - } - } - // copy all edges (if not fully clustered, else there are no edges) - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - this.sectors["frozen"][sectorId]["edges"][edgeId] = this.edges[edgeId]; + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); } - } - // merge the nodeIndices - for (var i = 0; i < this.nodeIndices.length; i++) { - this.sectors["frozen"][sectorId]["nodeIndices"].push(this.nodeIndices[i]); - } - }; + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } - /** - * This clusters the sector to one cluster. It was a single cluster before this process started so - * we revert to that state. The clusterToFit function with a maximum size of 1 node does this. - * - * @private - */ - exports._collapseThisToSingleCluster = function() { - this.clusterToFit(1,false); - }; + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } - /** - * We create a new active sector from the node that we want to open. - * - * @param node - * @private - */ - exports._addSector = function(node) { - // this is the currently active sector - var sector = this._sector(); + format = expandFormat(format, m.localeData()); - // // this should allow me to select nodes from a frozen set. - // if (this.sectors['active'][sector]["nodes"].hasOwnProperty(node.id)) { - // console.log("the node is part of the active sector"); - // } - // else { - // console.log("I dont know what the fuck happened!!"); - // } + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } - // when we switch to a new sector, we remove the node that will be expanded from the current nodes list. - delete this.nodes[node.id]; + return formatFunctions[format](m); + } - var unqiueIdentifier = util.randomUUID(); + function expandFormat(format, locale) { + var i = 5; - // we fully freeze the currently active sector - this._freezeSector(sector); + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } - // we create a new active sector. This sector has the Id of the node to ensure uniqueness - this._createNewSector(unqiueIdentifier); + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } - // we add the active sector to the sectors array to be able to revert these steps later on - this._setActiveSector(unqiueIdentifier); + return format; + } - // we redirect the global references to the new sector's references. this._sector() now returns unqiueIdentifier - this._switchToSector(this._sector()); - // finally we add the node we removed from our previous active sector to the new active sector - this.nodes[node.id] = node; - }; + /************************************ + Parsing + ************************************/ + + + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'Q': + return parseTokenOneDigit; + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { + return parseTokenOneDigit; + } + /* falls through */ + case 'SS': + if (strict) { + return parseTokenTwoDigits; + } + /* falls through */ + case 'SSS': + if (strict) { + return parseTokenThreeDigits; + } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return config._locale._meridiemParse; + case 'x': + return parseTokenOffsetMs; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + case 'Do': + return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); + return a; + } + } + function utcOffsetFromString(string) { + string = string || ''; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); - /** - * We close the sector that is currently open and revert back to the one before. - * If the active sector is the "default" sector, nothing happens. - * - * @private - */ - exports._collapseSector = function() { - // the currently active sector - var sector = this._sector(); + return parts[0] === '+' ? minutes : -minutes; + } - // we cannot collapse the default sector - if (sector != "default") { - if ((this.nodeIndices.length == 1) || - (this.sectors["active"][sector]["drawingNode"].width*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || - (this.sectors["active"][sector]["drawingNode"].height*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { - var previousSector = this._previousSector(); + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; - // we collapse the sector back to a single cluster - this._collapseThisToSingleCluster(); + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + case 'Do' : + if (input != null) { + datePartArray[DATE] = toInt(parseInt( + input.match(/\d{1,2}/)[0], 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); + } - // we move the remaining nodes, edges and nodeIndices to the previous sector. - // This previous sector is the one we will reactivate - this._mergeThisWithFrozen(previousSector); + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = moment.parseTwoDigitYear(input); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._meridiem = input; + // config._isPm = config._locale.isPM(input); + break; + // HOUR + case 'h' : // fall through to hh + case 'hh' : + config._pf.bigHour = true; + /* falls through */ + case 'H' : // fall through to HH + case 'HH' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX OFFSET (MILLISECONDS) + case 'x': + config._d = new Date(toInt(input)); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = utcOffsetFromString(input); + break; + // WEEKDAY - human + case 'dd': + case 'ddd': + case 'dddd': + a = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (a != null) { + config._w = config._w || {}; + config._w['d'] = a; + } else { + config._pf.invalidWeekday = input; + } + break; + // WEEK, WEEK DAY - numeric + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gggg': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = toInt(input); + } + break; + case 'gg': + case 'GG': + config._w = config._w || {}; + config._w[token] = moment.parseTwoDigitYear(input); + } + } - // the previously active (frozen) sector now has all the data from the currently active sector. - // we can now delete the active sector. - this._deleteActiveSector(sector); + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; - // we activate the previously active (and currently frozen) sector. - this._activateSector(previousSector); + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - // we load the references from the newly active sector into the global references - this._switchToSector(previousSector); + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); + week = dfl(w.W, 1); + weekday = dfl(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; - // we forget the previously active sector because we reverted to the one before - this._forgetLastSector(); + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); - // finally, we update the node index list. - this._updateNodeIndexList(); + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; + } + } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - // we refresh the list with calulation nodes and calculation node indices. - this._updateCalculationNodes(); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; } - } - }; + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; - /** - * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we dont pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private - */ - exports._doInAllActiveSectors = function(runFunction,argument) { - var returnValues = []; - if (argument === undefined) { - for (var sector in this.sectors["active"]) { - if (this.sectors["active"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToActiveSector(sector); - returnValues.push( this[runFunction]() ); - } - } - } - else { - for (var sector in this.sectors["active"]) { - if (this.sectors["active"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToActiveSector(sector); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - returnValues.push( this[runFunction](args[0],args[1]) ); - } - else { - returnValues.push( this[runFunction](argument) ); + if (config._d) { + return; } - } - } - } - // we revert the global references back to our active sector - this._loadLatestSector(); - return returnValues; - }; - - - /** - * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we dont pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private - */ - exports._doInSupportSector = function(runFunction,argument) { - var returnValues = false; - if (argument === undefined) { - this._switchToSupportSector(); - returnValues = this[runFunction](); - } - else { - this._switchToSupportSector(); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - returnValues = this[runFunction](args[0],args[1]); - } - else { - returnValues = this[runFunction](argument); - } - } - // we revert the global references back to our active sector - this._loadLatestSector(); - return returnValues; - }; + currentDate = currentDateArray(config); - /** - * This runs a function in all frozen sectors. This is used in the _redraw(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we don't pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private - */ - exports._doInAllFrozenSectors = function(runFunction,argument) { - if (argument === undefined) { - for (var sector in this.sectors["frozen"]) { - if (this.sectors["frozen"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToFrozenSector(sector); - this[runFunction](); - } - } - } - else { - for (var sector in this.sectors["frozen"]) { - if (this.sectors["frozen"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToFrozenSector(sector); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - this[runFunction](args[0],args[1]); - } - else { - this[runFunction](argument); + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); } - } - } - } - this._loadLatestSector(); - }; + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - /** - * This runs a function in all sectors. This is used in the _redraw(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we don't pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private - */ - exports._doInAllSectors = function(runFunction,argument) { - var args = Array.prototype.splice.call(arguments, 1); - if (argument === undefined) { - this._doInAllActiveSectors(runFunction); - this._doInAllFrozenSectors(runFunction); - } - else { - if (args.length > 1) { - this._doInAllActiveSectors(runFunction,args[0],args[1]); - this._doInAllFrozenSectors(runFunction,args[0],args[1]); - } - else { - this._doInAllActiveSectors(runFunction,argument); - this._doInAllFrozenSectors(runFunction,argument); - } - } - }; + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; + } + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } - /** - * This clears the nodeIndices list. We cannot use this.nodeIndices = [] because we would break the link with the - * active sector. Thus we clear the nodeIndices in the active sector, then reconnect the this.nodeIndices to it. - * - * @private - */ - exports._clearNodeIndexList = function() { - var sector = this._sector(); - this.sectors["active"][sector]["nodeIndices"] = []; - this.nodeIndices = this.sectors["active"][sector]["nodeIndices"]; - }; + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } - /** - * Draw the encompassing sector node - * - * @param ctx - * @param sectorType - * @private - */ - exports._drawSectorNodes = function(ctx,sectorType) { - var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; - for (var sector in this.sectors[sectorType]) { - if (this.sectors[sectorType].hasOwnProperty(sector)) { - if (this.sectors[sectorType][sector]["drawingNode"] !== undefined) { + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } - this._switchToSector(sector,sectorType); + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } - minY = 1e9; maxY = -1e9; minX = 1e9; maxX = -1e9; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.resize(ctx); - if (minX > node.x - 0.5 * node.width) {minX = node.x - 0.5 * node.width;} - if (maxX < node.x + 0.5 * node.width) {maxX = node.x + 0.5 * node.width;} - if (minY > node.y - 0.5 * node.height) {minY = node.y - 0.5 * node.height;} - if (maxY < node.y + 0.5 * node.height) {maxY = node.y + 0.5 * node.height;} - } + if (config._nextDay) { + config._a[HOUR] = 24; } - node = this.sectors[sectorType][sector]["drawingNode"]; - node.x = 0.5 * (maxX + minX); - node.y = 0.5 * (maxY + minY); - node.width = 2 * (node.x - minX); - node.height = 2 * (node.y - minY); - node.options.radius = Math.sqrt(Math.pow(0.5*node.width,2) + Math.pow(0.5*node.height,2)); - node.setScale(this.scale); - node._drawCircle(ctx); - } } - } - }; - - exports._drawAllSectorNodes = function(ctx) { - this._drawSectorNodes(ctx,"frozen"); - this._drawSectorNodes(ctx,"active"); - this._loadLatestSector(); - }; + function dateFromObject(config) { + var normalizedInput; -/***/ }, -/* 63 */ -/***/ function(module, exports, __webpack_require__) { + if (config._d) { + return; + } - var Node = __webpack_require__(40); + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day || normalizedInput.date, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; - /** - * This function can be called from the _doInAllSectors function - * - * @param object - * @param overlappingNodes - * @private - */ - exports._getNodesOverlappingWith = function(object, overlappingNodes) { - var nodes = this.nodes; - for (var nodeId in nodes) { - if (nodes.hasOwnProperty(nodeId)) { - if (nodes[nodeId].isOverlappingWith(object)) { - overlappingNodes.push(nodeId); - } + dateFromConfig(config); } - } - }; - /** - * retrieve all nodes overlapping with given object - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes - * @private - */ - exports._getAllNodesOverlappingWith = function (object) { - var overlappingNodes = []; - this._doInAllActiveSectors("_getNodesOverlappingWith",object,overlappingNodes); - return overlappingNodes; - }; + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + } + // date from string and format string + function makeDateFromStringAndFormat(config) { + if (config._f === moment.ISO_8601) { + parseISO(config); + return; + } - /** - * Return a position object in canvasspace from a single point in screenspace - * - * @param pointer - * @returns {{left: number, top: number, right: number, bottom: number}} - * @private - */ - exports._pointerToPositionObject = function(pointer) { - var x = this._XconvertDOMtoCanvas(pointer.x); - var y = this._YconvertDOMtoCanvas(pointer.y); + config._a = []; + config._pf.empty = true; - return { - left: x, - top: y, - right: x, - bottom: y - }; - }; + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - /** - * Get the top node at the a specific point (like a click) - * - * @param {{x: Number, y: Number}} pointer - * @return {Node | null} node - * @private - */ - exports._getNodeAt = function (pointer) { - // we first check if this is an navigation controls element - var positionObject = this._pointerToPositionObject(pointer); - var overlappingNodes = this._getAllNodesOverlappingWith(positionObject); + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; + } + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } + } - // if there are overlapping nodes, select the last one, this is the - // one which is drawn on top of the others - if (overlappingNodes.length > 0) { - return this.nodes[overlappingNodes[overlappingNodes.length - 1]]; - } - else { - return null; - } - }; + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } + // clear _12h flag if hour is <= 12 + if (config._pf.bigHour === true && config._a[HOUR] <= 12) { + config._pf.bigHour = undefined; + } + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], + config._meridiem); + dateFromConfig(config); + checkOverflow(config); + } - /** - * retrieve all edges overlapping with given object, selector is around center - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes - * @private - */ - exports._getEdgesOverlappingWith = function (object, overlappingEdges) { - var edges = this.edges; - for (var edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - if (edges[edgeId].isOverlappingWith(object)) { - overlappingEdges.push(edgeId); - } + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); } - } - }; + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } - /** - * retrieve all nodes overlapping with given object - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes - * @private - */ - exports._getAllEdgesOverlappingWith = function (object) { - var overlappingEdges = []; - this._doInAllActiveSectors("_getEdgesOverlappingWith",object,overlappingEdges); - return overlappingEdges; - }; + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, - /** - * Place holder. To implement change the _getNodeAt to a _getObjectAt. Have the _getObjectAt call - * _getNodeAt and _getEdgesAt, then priortize the selection to user preferences. - * - * @param pointer - * @returns {null} - * @private - */ - exports._getEdgeAt = function(pointer) { - var positionObject = this._pointerToPositionObject(pointer); - var overlappingEdges = this._getAllEdgesOverlappingWith(positionObject); + scoreToBeat, + i, + currentScore; - if (overlappingEdges.length > 0) { - return this.edges[overlappingEdges[overlappingEdges.length - 1]]; - } - else { - return null; - } - }; + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); - /** - * Add object to the selection array. - * - * @param obj - * @private - */ - exports._addToSelection = function(obj) { - if (obj instanceof Node) { - this.selectionObj.nodes[obj.id] = obj; - } - else { - this.selectionObj.edges[obj.id] = obj; - } - }; + if (!isValid(tempConfig)) { + continue; + } - /** - * Add object to the selection array. - * - * @param obj - * @private - */ - exports._addToHover = function(obj) { - if (obj instanceof Node) { - this.hoverObj.nodes[obj.id] = obj; - } - else { - this.hoverObj.edges[obj.id] = obj; - } - }; + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; - /** - * Remove a single option from selection. - * - * @param {Object} obj - * @private - */ - exports._removeFromSelection = function(obj) { - if (obj instanceof Node) { - delete this.selectionObj.nodes[obj.id]; - } - else { - delete this.selectionObj.edges[obj.id]; - } - }; + tempConfig._pf.score = currentScore; - /** - * Unselect all. The selectionObj is useful for this. - * - * @param {Boolean} [doNotTrigger] | ignore trigger - * @private - */ - exports._unselectAll = function(doNotTrigger) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - this.selectionObj.nodes[nodeId].unselect(); - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - this.selectionObj.edges[edgeId].unselect(); + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); } - } - this.selectionObj = {nodes:{},edges:{}}; + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); - } - }; + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(parseTokenTimezone)) { + config._f += 'Z'; + } + makeDateFromStringAndFormat(config); + } else { + config._isValid = false; + } + } - /** - * Unselect all clusters. The selectionObj is useful for this. - * - * @param {Boolean} [doNotTrigger] | ignore trigger - * @private - */ - exports._unselectClusters = function(doNotTrigger) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); + } + } - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (this.selectionObj.nodes[nodeId].clusterSize > 1) { - this.selectionObj.nodes[nodeId].unselect(); - this._removeFromSelection(this.selectionObj.nodes[nodeId]); - } + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; } - } - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); - } - }; + function makeDateFromInput(config) { + var input = config._i, matched; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + dateFromConfig(config); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); + } + } + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); - /** - * return the number of selected nodes - * - * @returns {number} - * @private - */ - exports._getSelectedNodeCount = function() { - var count = 0; - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - count += 1; + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; } - } - return count; - }; - /** - * return the selected node - * - * @returns {number} - * @private - */ - exports._getSelectedNode = function() { - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - return this.selectionObj.nodes[nodeId]; + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; } - } - return null; - }; - /** - * return the selected edge - * - * @returns {number} - * @private - */ - exports._getSelectedEdge = function() { - for (var edgeId in this.selectionObj.edges) { - if (this.selectionObj.edges.hasOwnProperty(edgeId)) { - return this.selectionObj.edges[edgeId]; + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } + } + } + return input; } - } - return null; - }; - - /** - * return the number of selected edges - * - * @returns {number} - * @private - */ - exports._getSelectedEdgeCount = function() { - var count = 0; - for (var edgeId in this.selectionObj.edges) { - if (this.selectionObj.edges.hasOwnProperty(edgeId)) { - count += 1; - } - } - return count; - }; + /************************************ + Relative Time + ************************************/ - /** - * return the number of selected objects. - * - * @returns {number} - * @private - */ - exports._getSelectedObjectCount = function() { - var count = 0; - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - count += 1; - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - count += 1; + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); } - } - return count; - }; - /** - * Check if anything is selected - * - * @returns {boolean} - * @private - */ - exports._selectionIsEmpty = function() { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - return false; - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - return false; - } - } - return true; - }; + function relativeTime(posNegDuration, withoutSuffix, locale) { + var duration = moment.duration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + years = round(duration.as('y')), + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < relativeTimeThresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < relativeTimeThresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; - /** - * check if one of the selected nodes is a cluster. - * - * @returns {boolean} - * @private - */ - exports._clusterInSelection = function() { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (this.selectionObj.nodes[nodeId].clusterSize > 1) { - return true; - } + args[2] = withoutSuffix; + args[3] = +posNegDuration > 0; + args[4] = locale; + return substituteTimeAgo.apply({}, args); } - } - return false; - }; - /** - * select the edges connected to the node that is being selected - * - * @param {Node} node - * @private - */ - exports._selectConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.select(); - this._addToSelection(edge); - } - }; - /** - * select the edges connected to the node that is being selected - * - * @param {Node} node - * @private - */ - exports._hoverConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.hover = true; - this._addToHover(edge); - } - }; + /************************************ + Week of Year + ************************************/ + + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; - /** - * unselect the edges connected to the node that is being selected - * - * @param {Node} node - * @private - */ - exports._unselectConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.unselect(); - this._removeFromSelection(edge); - } - }; + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; + } + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } - /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection - * - * @param {Node || Edge} object - * @param {Boolean} append - * @param {Boolean} [doNotTrigger] | ignore trigger - * @private - */ - exports._selectObject = function(object, append, doNotTrigger, highlightEdges, overrideSelectable) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } - if (highlightEdges === undefined) { - highlightEdges = true; - } + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - if (this._selectionIsEmpty() == false && append == false && this.forceAppendSelection == false) { - this._unselectAll(true); - } + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; - // selectable allows the object to be selected. Override can be used if needed to bypass this. - if (object.selected == false && (this.constants.selectable == true || overrideSelectable)) { - object.select(); - this._addToSelection(object); - if (object instanceof Node && this.blockConnectingEdgeSelection == false && highlightEdges == true) { - this._selectConnectedEdges(object); + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; } - } - // do not select the object if selectable is false, only add it to selection to allow drag to work - else if (object.selected == false) { - this._addToSelection(object); - doNotTrigger = true; - } - else { - object.unselect(); - this._removeFromSelection(object); - } - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); - } - }; + /************************************ + Top Level Functions + ************************************/ + function makeMoment(config) { + var input = config._i, + format = config._f, + res; - /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection - * - * @param {Node || Edge} object - * @private - */ - exports._blurObject = function(object) { - if (object.hover == true) { - object.hover = false; - this.emit("blurNode",{node:object.id}); - } - }; + config._locale = config._locale || moment.localeData(config._l); - /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection - * - * @param {Node || Edge} object - * @private - */ - exports._hoverObject = function(object) { - if (object.hover == false) { - object.hover = true; - this._addToHover(object); - if (object instanceof Node) { - this.emit("hoverNode",{node:object.id}); - } - } - if (object instanceof Node) { - this._hoverConnectedEdges(object); - } - }; + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); + } + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } - /** - * handles the selection part of the touch, only for navigation controls elements; - * Touch is triggered before tap, also before hold. Hold triggers after a while. - * This is the most responsive solution - * - * @param {Object} pointer - * @private - */ - exports._handleTouch = function(pointer) { - }; + if (moment.isMoment(input)) { + return new Moment(input, true); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); + } + res = new Moment(config); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } - /** - * handles the selection part of the tap; - * - * @param {Object} pointer - * @private - */ - exports._handleTap = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null) { - this._selectObject(node, false); - } - else { - var edge = this._getEdgeAt(pointer); - if (edge != null) { - this._selectObject(edge, false); - } - else { - this._unselectAll(); + return res; } - } - var properties = this.getSelection(); - properties['pointer'] = { - DOM: {x: pointer.x, y: pointer.y}, - canvas: {x: this._XconvertDOMtoCanvas(pointer.x), y: this._YconvertDOMtoCanvas(pointer.y)} - } - this.emit("click", properties); - this._requestRedraw(); - }; + moment = function (input, format, locale, strict) { + var c; - /** - * handles the selection part of the double tap and opens a cluster if needed - * - * @param {Object} pointer - * @private - */ - exports._handleDoubleTap = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null && node !== undefined) { - // we reset the areaCenter here so the opening of the node will occur - this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), - "y" : this._YconvertDOMtoCanvas(pointer.y)}; - this.openCluster(node); - } - var properties = this.getSelection(); - properties['pointer'] = { - DOM: {x: pointer.x, y: pointer.y}, - canvas: {x: this._XconvertDOMtoCanvas(pointer.x), y: this._YconvertDOMtoCanvas(pointer.y)} - } - this.emit("doubleClick", properties); - }; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = locale; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); + return makeMoment(c); + }; - /** - * Handle the onHold selection part - * - * @param pointer - * @private - */ - exports._handleOnHold = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null) { - this._selectObject(node,true); - } - else { - var edge = this._getEdgeAt(pointer); - if (edge != null) { - this._selectObject(edge,true); + moment.suppressDeprecationWarnings = false; + + moment.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return moment(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; + } + } + return res; } - } - this._requestRedraw(); - }; + moment.min = function () { + var args = [].slice.call(arguments, 0); - /** - * handle the onRelease event. These functions are here for the navigation controls module - * and data manipulation module. - * - * @private - */ - exports._handleOnRelease = function(pointer) { - this._manipulationReleaseOverload(pointer); - this._navigationReleaseOverload(pointer); - }; + return pickBy('isBefore', args); + }; - exports._manipulationReleaseOverload = function (pointer) {}; - exports._navigationReleaseOverload = function (pointer) {}; + moment.max = function () { + var args = [].slice.call(arguments, 0); - /** - * - * retrieve the currently selected objects - * @return {{nodes: Array., edges: Array.}} selection - */ - exports.getSelection = function() { - var nodeIds = this.getSelectedNodes(); - var edgeIds = this.getSelectedEdges(); - return {nodes:nodeIds, edges:edgeIds}; - }; + return pickBy('isAfter', args); + }; - /** - * - * retrieve the currently selected nodes - * @return {String[]} selection An array with the ids of the - * selected nodes. - */ - exports.getSelectedNodes = function() { - var idArray = []; - if (this.constants.selectable == true) { - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - idArray.push(nodeId); - } - } - } - return idArray - }; + // creating with utc + moment.utc = function (input, format, locale, strict) { + var c; - /** - * - * retrieve the currently selected edges - * @return {Array} selection An array with the ids of the - * selected nodes. - */ - exports.getSelectedEdges = function() { - var idArray = []; - if (this.constants.selectable == true) { - for (var edgeId in this.selectionObj.edges) { - if (this.selectionObj.edges.hasOwnProperty(edgeId)) { - idArray.push(edgeId); - } - } - } - return idArray; - }; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); + return makeMoment(c).utc(); + }; - /** - * select zero or more nodes DEPRICATED - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. - */ - exports.setSelection = function() { - console.log("setSelection is deprecated. Please use selectNodes instead.") - }; + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso, + diffRes; - /** - * select zero or more nodes with the option to highlight edges - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. - * @param {boolean} [highlightEdges] - */ - exports.selectNodes = function(selection, highlightEdges) { - var i, iMax, id; + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); - if (!selection || (selection.length == undefined)) - throw 'Selection must be an array with ids'; + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } - // first unselect any selected node - this._unselectAll(true); + ret = new Duration(duration); - for (i = 0, iMax = selection.length; i < iMax; i++) { - id = selection[i]; + if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } - var node = this.nodes[id]; - if (!node) { - throw new RangeError('Node with id "' + id + '" not found'); - } - this._selectObject(node,true,true,highlightEdges,true); - } - this.redraw(); - }; + return ret; + }; + // version number + moment.version = VERSION; - /** - * select zero or more edges - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. - */ - exports.selectEdges = function(selection) { - var i, iMax, id; + // default format + moment.defaultFormat = isoFormat; - if (!selection || (selection.length == undefined)) - throw 'Selection must be an array with ids'; + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; - // first unselect any selected node - this._unselectAll(true); + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; + + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function (threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return relativeTimeThresholds[threshold]; + } + relativeTimeThresholds[threshold] = limit; + return true; + }; - for (i = 0, iMax = selection.length; i < iMax; i++) { - id = selection[i]; + moment.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + function (key, value) { + return moment.locale(key, value); + } + ); - var edge = this.edges[id]; - if (!edge) { - throw new RangeError('Edge with id "' + id + '" not found'); - } - this._selectObject(edge,true,true,false,true); - } - this.redraw(); - }; + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + moment.locale = function (key, values) { + var data; + if (key) { + if (typeof(values) !== 'undefined') { + data = moment.defineLocale(key, values); + } + else { + data = moment.localeData(key); + } - /** - * Validate the selection: remove ids of nodes which no longer exist - * @private - */ - exports._updateSelection = function () { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (!this.nodes.hasOwnProperty(nodeId)) { - delete this.selectionObj.nodes[nodeId]; - } - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - if (!this.edges.hasOwnProperty(edgeId)) { - delete this.selectionObj.edges[edgeId]; - } - } - } - }; + if (data) { + moment.duration._locale = moment._locale = data; + } + } + return moment._locale._abbr; + }; -/***/ }, -/* 64 */ -/***/ function(module, exports, __webpack_require__) { + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); + } + locales[name].set(values); - var util = __webpack_require__(1); - var Node = __webpack_require__(40); - var Edge = __webpack_require__(37); - var Hammer = __webpack_require__(45); + // backwards compat for now: also set the locale + moment.locale(name); - /** - * clears the toolbar div element of children - * - * @private - */ - exports._clearManipulatorBar = function() { - this._recursiveDOMDelete(this.manipulationDiv); - this.manipulationDOM = {}; + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + }; - this._cleanManipulatorHammers(); + moment.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + function (key) { + return moment.localeData(key); + } + ); - this._manipulationReleaseOverload = function () {}; - delete this.sectors['support']['nodes']['targetNode']; - delete this.sectors['support']['nodes']['targetViaNode']; - this.controlNodesActive = false; - this.freezeSimulation(false); - }; + // returns locale data + moment.localeData = function (key) { + var locale; + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } - exports._cleanManipulatorHammers = function() { - // clean hammer bindings - if (this.manipulationHammers.length != 0) { - for (var i = 0; i < this.manipulationHammers.length; i++) { - this.manipulationHammers[i].dispose(); - } - this.manipulationHammers = []; - } - }; + if (!key) { + return moment._locale; + } - /** - * Manipulation UI temporarily overloads certain functions to extend or replace them. To be able to restore - * these functions to their original functionality, we saved them in this.cachedFunctions. - * This function restores these functions to their original function. - * - * @private - */ - exports._restoreOverloadedFunctions = function() { - for (var functionName in this.cachedFunctions) { - if (this.cachedFunctions.hasOwnProperty(functionName)) { - this[functionName] = this.cachedFunctions[functionName]; - delete this.cachedFunctions[functionName]; - } - } - }; + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } - /** - * Enable or disable edit-mode. - * - * @private - */ - exports._toggleEditMode = function() { - this.editMode = !this.editMode; - var toolbar = this.manipulationDiv; - var closeDiv = this.closeDiv; - var editModeDiv = this.editModeDiv; - if (this.editMode == true) { - toolbar.style.display="block"; - closeDiv.style.display="block"; - editModeDiv.style.display="none"; - this._bindHammerToDiv(closeDiv,'_toggleEditMode'); - } - else { - toolbar.style.display="none"; - closeDiv.style.display="none"; - editModeDiv.style.display="block"; - } - this._createManipulatorBar() - }; + return chooseLocale(key); + }; - /** - * main function, creates the main toolbar. Removes functions bound to the select event. Binds all the buttons of the toolbar. - * - * @private - */ - exports._createManipulatorBar = function() { - // remove bound functions - if (this.boundFunction) { - this.off('select', this.boundFunction); - } + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && hasOwnProp(obj, '_isAMomentObject')); + }; - this._cleanManipulatorHammers(); + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; - var locale = this.constants.locales[this.constants.locale]; + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); + } - if (this.edgeBeingEdited !== undefined) { - this.edgeBeingEdited._disableControlNodes(); - this.edgeBeingEdited = undefined; - this.selectedControlNode = null; - this.controlNodesActive = false; - this._redraw(); - } + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; - // restore overloaded functions - this._restoreOverloadedFunctions(); + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); + } + else { + m._pf.userInvalidated = true; + } - // resume calculation - this.freezeSimulation(false); + return m; + }; - // reset global variables - this.blockConnectingEdgeSelection = false; - this.forceAppendSelection = false; - this.manipulationDOM = {}; + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; - if (this.editMode == true) { - while (this.manipulationDiv.hasChildNodes()) { - this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); - } + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; - this.manipulationDOM['addNodeSpan'] = document.createElement('div'); - this.manipulationDOM['addNodeSpan'].className = 'network-manipulationUI add'; + moment.isDate = isDate; - this.manipulationDOM['addNodeLabelSpan'] = document.createElement('div'); - this.manipulationDOM['addNodeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['addNodeLabelSpan'].innerHTML = locale['addNode']; - this.manipulationDOM['addNodeSpan'].appendChild(this.manipulationDOM['addNodeLabelSpan']); + /************************************ + Moment Prototype + ************************************/ - this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; - this.manipulationDOM['addEdgeSpan'] = document.createElement('div'); - this.manipulationDOM['addEdgeSpan'].className = 'network-manipulationUI connect'; - this.manipulationDOM['addEdgeLabelSpan'] = document.createElement('div'); - this.manipulationDOM['addEdgeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['addEdgeLabelSpan'].innerHTML = locale['addEdge']; - this.manipulationDOM['addEdgeSpan'].appendChild(this.manipulationDOM['addEdgeLabelSpan']); + extend(moment.fn = Moment.prototype, { - this.manipulationDiv.appendChild(this.manipulationDOM['addNodeSpan']); - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); - this.manipulationDiv.appendChild(this.manipulationDOM['addEdgeSpan']); + clone : function () { + return moment(this); + }, - if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { - this.manipulationDOM['seperatorLineDiv2'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv2'].className = 'network-seperatorLine'; + valueOf : function () { + return +this._d - ((this._offset || 0) * 60000); + }, - this.manipulationDOM['editNodeSpan'] = document.createElement('div'); - this.manipulationDOM['editNodeSpan'].className = 'network-manipulationUI edit node'; - this.manipulationDOM['editNodeLabelSpan'] = document.createElement('div'); - this.manipulationDOM['editNodeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['editNodeLabelSpan'].innerHTML = locale['editNode']; - this.manipulationDOM['editNodeSpan'].appendChild(this.manipulationDOM['editNodeLabelSpan']); + unix : function () { + return Math.floor(+this / 1000); + }, - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv2']); - this.manipulationDiv.appendChild(this.manipulationDOM['editNodeSpan']); - } - else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { - this.manipulationDOM['seperatorLineDiv3'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv3'].className = 'network-seperatorLine'; + toString : function () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + }, - this.manipulationDOM['editEdgeSpan'] = document.createElement('div'); - this.manipulationDOM['editEdgeSpan'].className = 'network-manipulationUI edit edge'; - this.manipulationDOM['editEdgeLabelSpan'] = document.createElement('div'); - this.manipulationDOM['editEdgeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['editEdgeLabelSpan'].innerHTML = locale['editEdge']; - this.manipulationDOM['editEdgeSpan'].appendChild(this.manipulationDOM['editEdgeLabelSpan']); + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv3']); - this.manipulationDiv.appendChild(this.manipulationDOM['editEdgeSpan']); - } - if (this._selectionIsEmpty() == false) { - this.manipulationDOM['seperatorLineDiv4'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv4'].className = 'network-seperatorLine'; + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + if ('function' === typeof Date.prototype.toISOString) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + }, - this.manipulationDOM['deleteSpan'] = document.createElement('div'); - this.manipulationDOM['deleteSpan'].className = 'network-manipulationUI delete'; - this.manipulationDOM['deleteLabelSpan'] = document.createElement('div'); - this.manipulationDOM['deleteLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['deleteLabelSpan'].innerHTML = locale['del']; - this.manipulationDOM['deleteSpan'].appendChild(this.manipulationDOM['deleteLabelSpan']); + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv4']); - this.manipulationDiv.appendChild(this.manipulationDOM['deleteSpan']); - } + isValid : function () { + return isValid(this); + }, - // bind the icons - this._bindHammerToDiv(this.manipulationDOM['addNodeSpan'],'_createAddNodeToolbar'); - this._bindHammerToDiv(this.manipulationDOM['addEdgeSpan'],'_createAddEdgeToolbar'); - this._bindHammerToDiv(this.closeDiv,'_toggleEditMode'); + isDSTShifted : function () { + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } - if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { - this._bindHammerToDiv(this.manipulationDOM['editNodeSpan'],'_editNode'); - } - else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { - this._bindHammerToDiv(this.manipulationDOM['editEdgeSpan'],'_createEditEdgeToolbar'); - } - if (this._selectionIsEmpty() == false) { - this._bindHammerToDiv(this.manipulationDOM['deleteSpan'],'_deleteSelected'); - } + return false; + }, - var me = this; - this.boundFunction = me._createManipulatorBar; - this.on('select', this.boundFunction); - } - else { - while (this.editModeDiv.hasChildNodes()) { - this.editModeDiv.removeChild(this.editModeDiv.firstChild); - } + parsingFlags : function () { + return extend({}, this._pf); + }, - this.manipulationDOM['editModeSpan'] = document.createElement('div'); - this.manipulationDOM['editModeSpan'].className = 'network-manipulationUI edit editmode'; - this.manipulationDOM['editModeLabelSpan'] = document.createElement('div'); - this.manipulationDOM['editModeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['editModeLabelSpan'].innerHTML = locale['edit']; - this.manipulationDOM['editModeSpan'].appendChild(this.manipulationDOM['editModeLabelSpan']); + invalidAt: function () { + return this._pf.overflow; + }, - this.editModeDiv.appendChild(this.manipulationDOM['editModeSpan']); + utc : function (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + }, - this._bindHammerToDiv(this.manipulationDOM['editModeSpan'],'_toggleEditMode'); - } - }; + local : function (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + if (keepLocalTime) { + this.subtract(this._dateUtcOffset(), 'm'); + } + } + return this; + }, - exports._bindHammerToDiv = function(domElement, funct) { - var hammer = Hammer(domElement, {prevent_default: true}); - hammer.on('touch', this[funct].bind(this)); - this.manipulationHammers.push(hammer); - } + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.localeData().postformat(output); + }, + add : createAdder(1, 'add'), - /** - * Create the toolbar for adding Nodes - * - * @private - */ - exports._createAddNodeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - if (this.boundFunction) { - this.off('select', this.boundFunction); - } + subtract : createAdder(-1, 'subtract'), - var locale = this.constants.locales[this.constants.locale]; + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, + anchor, diff, output, daysAdjust; - this.manipulationDOM = {}; - this.manipulationDOM['backSpan'] = document.createElement('div'); - this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; - this.manipulationDOM['backLabelSpan'] = document.createElement('div'); - this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; - this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); + units = normalizeUnits(units); - this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + diff = this - that; + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; + } + return asFloat ? output : absRound(output); + }, - this.manipulationDOM['descriptionSpan'] = document.createElement('div'); - this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; - this.manipulationDOM['descriptionLabelSpan'] = document.createElement('div'); - this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['addDescription']; - this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); + from : function (time, withoutSuffix) { + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + }, - this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); - this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, - // bind the icon - this._bindHammerToDiv(this.manipulationDOM['backSpan'],'_createManipulatorBar'); + calendar : function (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're locat/utc/offset + // or not. + var now = time || moment(), + sod = makeAs(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this, moment(now))); + }, - // we use the boundFunction so we can reference it when we unbind it from the "select" event. - var me = this; - this.boundFunction = me._addNode; - this.on('select', this.boundFunction); - }; + isLeapYear : function () { + return isLeapYear(this.year()); + }, + + isDST : function () { + return (this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset()); + }, + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + }, - /** - * create the toolbar to connect nodes - * - * @private - */ - exports._createAddEdgeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - this._unselectAll(true); - this.freezeSimulation(true); + month : makeAccessor('Month', true), - if (this.boundFunction) { - this.off('select', this.boundFunction); - } + startOf : function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } - var locale = this.constants.locales[this.constants.locale]; + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } - this._unselectAll(); - this.forceAppendSelection = false; - this.blockConnectingEdgeSelection = true; + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } - this.manipulationDOM = {}; - this.manipulationDOM['backSpan'] = document.createElement('div'); - this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; - this.manipulationDOM['backLabelSpan'] = document.createElement('div'); - this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; - this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); + return this; + }, - this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; + endOf: function (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + }, - this.manipulationDOM['descriptionSpan'] = document.createElement('div'); - this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; - this.manipulationDOM['descriptionLabelSpan'] = document.createElement('div'); - this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['edgeDescription']; - this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); + isAfter: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this > +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return inputMs < +this.clone().startOf(units); + } + }, - this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); - this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); + isBefore: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this < +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return +this.clone().endOf(units) < inputMs; + } + }, - // bind the icon - this._bindHammerToDiv(this.manipulationDOM['backSpan'],'_createManipulatorBar'); + isBetween: function (from, to, units) { + return this.isAfter(from, units) && this.isBefore(to, units); + }, - // we use the boundFunction so we can reference it when we unbind it from the "select" event. - var me = this; - this.boundFunction = me._handleConnect; - this.on('select', this.boundFunction); + isSame: function (input, units) { + var inputMs; + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this === +input; + } else { + inputMs = +moment(input); + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + } + }, - // temporarily overload functions - this.cachedFunctions["_handleTouch"] = this._handleTouch; - this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload; - this.cachedFunctions["_handleDragStart"] = this._handleDragStart; - this.cachedFunctions["_handleDragEnd"] = this._handleDragEnd; - this.cachedFunctions["_handleOnHold"] = this._handleOnHold; - this._handleTouch = this._handleConnect; - this._manipulationReleaseOverload = function () {}; - this._handleOnHold = function () {}; - this._handleDragStart = function () {}; - this._handleDragEnd = this._finishConnect; + min: deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), - // redraw to show the unselect - this._redraw(); - }; + max: deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; + } + ), - /** - * create the toolbar to edit edges - * - * @private - */ - exports._createEditEdgeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - this.controlNodesActive = true; + zone : deprecate( + 'moment().zone is deprecated, use moment().utcOffset instead. ' + + 'https://github.com/moment/moment/issues/1779', + function (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } - if (this.boundFunction) { - this.off('select', this.boundFunction); - } + this.utcOffset(input, keepLocalTime); - this.edgeBeingEdited = this._getSelectedEdge(); - this.edgeBeingEdited._enableControlNodes(); + return this; + } else { + return -this.utcOffset(); + } + } + ), - var locale = this.constants.locales[this.constants.locale]; + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + utcOffset : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = utcOffsetFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._dateUtcOffset(); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } + } - this.manipulationDOM = {}; - this.manipulationDOM['backSpan'] = document.createElement('div'); - this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; - this.manipulationDOM['backLabelSpan'] = document.createElement('div'); - this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; - this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); + return this; + } else { + return this._isUTC ? offset : this._dateUtcOffset(); + } + }, - this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; + isLocal : function () { + return !this._isUTC; + }, - this.manipulationDOM['descriptionSpan'] = document.createElement('div'); - this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; - this.manipulationDOM['descriptionLabelSpan'] = document.createElement('div'); - this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['editEdgeDescription']; - this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); + isUtcOffset : function () { + return this._isUTC; + }, - this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); - this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); + isUtc : function () { + return this._isUTC && this._offset === 0; + }, - // bind the icon - this._bindHammerToDiv(this.manipulationDOM['backSpan'],'_createManipulatorBar'); + zoneAbbr : function () { + return this._isUTC ? 'UTC' : ''; + }, - // temporarily overload functions - this.cachedFunctions["_handleTouch"] = this._handleTouch; - this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload; - this.cachedFunctions["_handleTap"] = this._handleTap; - this.cachedFunctions["_handleDragStart"] = this._handleDragStart; - this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; - this._handleTouch = this._selectControlNode; - this._handleTap = function () {}; - this._handleOnDrag = this._controlNodeDrag; - this._handleDragStart = function () {} - this._manipulationReleaseOverload = this._releaseControlNode; + zoneName : function () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + }, - // redraw to show the unselect - this._redraw(); - }; + parseZone : function () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(utcOffsetFromString(this._i)); + } + return this; + }, + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).utcOffset(); + } - /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. - * - * @private - */ - exports._selectControlNode = function(pointer) { - this.edgeBeingEdited.controlNodes.from.unselect(); - this.edgeBeingEdited.controlNodes.to.unselect(); - this.selectedControlNode = this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(pointer.x),this._YconvertDOMtoCanvas(pointer.y)); - if (this.selectedControlNode !== null) { - this.selectedControlNode.select(); - this.freezeSimulation(true); - } - this._redraw(); - }; + return (this.utcOffset() - input) % 60 === 0; + }, + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, - /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. - * - * @private - */ - exports._controlNodeDrag = function(event) { - var pointer = this._getPointer(event.gesture.center); - if (this.selectedControlNode !== null && this.selectedControlNode !== undefined) { - this.selectedControlNode.x = this._XconvertDOMtoCanvas(pointer.x); - this.selectedControlNode.y = this._YconvertDOMtoCanvas(pointer.y); - } - this._redraw(); - }; + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + }, + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, - /** - * - * @param pointer - * @private - */ - exports._releaseControlNode = function(pointer) { - var newNode = this._getNodeAt(pointer); - if (newNode !== null) { - if (this.edgeBeingEdited.controlNodes.from.selected == true) { - this.edgeBeingEdited._restoreControlNodes(); - this._editEdge(newNode.id, this.edgeBeingEdited.to.id); - this.edgeBeingEdited.controlNodes.from.unselect(); - } - if (this.edgeBeingEdited.controlNodes.to.selected == true) { - this.edgeBeingEdited._restoreControlNodes(); - this._editEdge(this.edgeBeingEdited.from.id, newNode.id); - this.edgeBeingEdited.controlNodes.to.unselect(); - } - } - else { - this.edgeBeingEdited._restoreControlNodes(); - } - this.freezeSimulation(false); - this._redraw(); - }; + weekYear : function (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + }, - /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. - * - * @private - */ - exports._handleConnect = function(pointer) { - if (this._getSelectedNodeCount() == 0) { - var node = this._getNodeAt(pointer); + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + }, - if (node != null) { - if (node.clusterSize > 1) { - alert(this.constants.locales[this.constants.locale]['createEdgeError']) - } - else { - this._selectObject(node,false); - var supportNodes = this.sectors['support']['nodes']; + week : function (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - // create a node the temporary line can look at - supportNodes['targetNode'] = new Node({id:'targetNode'},{},{},this.constants); - var targetNode = supportNodes['targetNode']; - targetNode.x = node.x; - targetNode.y = node.y; + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - // create a temporary edge - this.edges['connectionEdge'] = new Edge({id:"connectionEdge",from:node.id,to:targetNode.id}, this, this.constants); - var connectionEdge = this.edges['connectionEdge']; - connectionEdge.from = node; - connectionEdge.connected = true; - connectionEdge.options.smoothCurves = {enabled: true, - dynamic: false, - type: "continuous", - roundness: 0.5 - }; - connectionEdge.selected = true; - connectionEdge.to = targetNode; + weekday : function (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + }, - this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; - var me = this; - this._handleOnDrag = function(event) { - var pointer = this._getPointer(event.gesture.center); - var connectionEdge = me.edges['connectionEdge']; - connectionEdge.to.x = me._XconvertDOMtoCanvas(pointer.x); - connectionEdge.to.y = me._YconvertDOMtoCanvas(pointer.y); - me._redraw(); - }; + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + }, - this.moving = true; - this.start(); - } - } - } - }; + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, - exports._finishConnect = function(event) { - if (this._getSelectedNodeCount() == 1) { - var pointer = this._getPointer(event.gesture.center); - // restore the drag function - this._handleOnDrag = this.cachedFunctions["_handleOnDrag"]; - delete this.cachedFunctions["_handleOnDrag"]; + weeksInYear : function () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, - // remember the edge id - var connectFromId = this.edges['connectionEdge'].fromId; + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, - // remove the temporary nodes and edge - delete this.edges['connectionEdge']; - delete this.sectors['support']['nodes']['targetNode']; - delete this.sectors['support']['nodes']['targetViaNode']; + set : function (units, value) { + var unit; + if (typeof units === 'object') { + for (unit in units) { + this.set(unit, units[unit]); + } + } + else { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + } + return this; + }, - var node = this._getNodeAt(pointer); - if (node != null) { - if (node.clusterSize > 1) { - alert(this.constants.locales[this.constants.locale]["createEdgeError"]) - } - else { - this._createEdge(connectFromId,node.id); - this._createManipulatorBar(); - } - } - this._unselectAll(); - } - }; + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + locale : function (key) { + var newLocaleData; + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = moment.localeData(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + }, - /** - * Adds a node on the specified location - */ - exports._addNode = function() { - if (this._selectionIsEmpty() && this.editMode == true) { - var positionObject = this._pointerToPositionObject(this.pointerPosition); - var defaultData = {id:util.randomUUID(),x:positionObject.left,y:positionObject.top,label:"new",allowedToMoveX:true,allowedToMoveY:true}; - if (this.triggerFunctions.add) { - if (this.triggerFunctions.add.length == 2) { - var me = this; - this.triggerFunctions.add(defaultData, function(finalizedData) { - me.nodesData.add(finalizedData); - me._createManipulatorBar(); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for add does not support two arguments (data,callback)'); - this._createManipulatorBar(); - this.moving = true; - this.start(); - } - } - else { - this.nodesData.add(defaultData); - this._createManipulatorBar(); - this.moving = true; - this.start(); - } - } - }; + lang : deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ), + localeData : function () { + return this._locale; + }, - /** - * connect two nodes with a new edge. - * - * @private - */ - exports._createEdge = function(sourceNodeId,targetNodeId) { - if (this.editMode == true) { - var defaultData = {from:sourceNodeId, to:targetNodeId}; - if (this.triggerFunctions.connect) { - if (this.triggerFunctions.connect.length == 2) { - var me = this; - this.triggerFunctions.connect(defaultData, function(finalizedData) { - me.edgesData.add(finalizedData); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for connect does not support two arguments (data,callback)'); - this.moving = true; - this.start(); - } - } - else { - this.edgesData.add(defaultData); - this.moving = true; - this.start(); - } - } - }; + _dateUtcOffset : function () { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(this._d.getTimezoneOffset() / 15) * 15; + } - /** - * connect two nodes with a new edge. - * - * @private - */ - exports._editEdge = function(sourceNodeId,targetNodeId) { - if (this.editMode == true) { - var defaultData = {id: this.edgeBeingEdited.id, from:sourceNodeId, to:targetNodeId}; - if (this.triggerFunctions.editEdge) { - if (this.triggerFunctions.editEdge.length == 2) { - var me = this; - this.triggerFunctions.editEdge(defaultData, function(finalizedData) { - me.edgesData.update(finalizedData); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for edit does not support two arguments (data, callback)'); - this.moving = true; - this.start(); - } + }); + + function rawMonthSetter(mom, value) { + var dayOfMonth; + + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } + + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; } - else { - this.edgesData.update(defaultData); - this.moving = true; - this.start(); + + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); } - } - }; - /** - * Create the toolbar to edit the selected node. The label and the color can be changed. Other colors are derived from the chosen color. - * - * @private - */ - exports._editNode = function() { - if (this.triggerFunctions.edit && this.editMode == true) { - var node = this._getSelectedNode(); - var data = {id:node.id, - label: node.label, - group: node.options.group, - shape: node.options.shape, - color: { - background:node.options.color.background, - border:node.options.color.border, - highlight: { - background:node.options.color.highlight.background, - border:node.options.color.highlight.border + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); } - }}; - if (this.triggerFunctions.edit.length == 2) { - var me = this; - this.triggerFunctions.edit(data, function (finalizedData) { - me.nodesData.update(finalizedData); - me._createManipulatorBar(); - me.moving = true; - me.start(); - }); } - else { - throw new Error('The function for edit does not support two arguments (data, callback)'); + + function makeAccessor(unit, keepTime) { + return function (value) { + if (value != null) { + rawSetter(this, unit, value); + moment.updateOffset(this, keepTime); + return this; + } else { + return rawGetter(this, unit); + } + }; } - } - else { - throw new Error('No edit function has been bound to this button'); - } - }; + moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); + moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); + moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); + // moment.fn.month is defined separately + moment.fn.date = makeAccessor('Date', true); + moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); + moment.fn.year = makeAccessor('FullYear', true); + moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + moment.fn.quarters = moment.fn.quarter; + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; - /** - * delete everything in the selection - * - * @private - */ - exports._deleteSelected = function() { - if (!this._selectionIsEmpty() && this.editMode == true) { - if (!this._clusterInSelection()) { - var selectedNodes = this.getSelectedNodes(); - var selectedEdges = this.getSelectedEdges(); - if (this.triggerFunctions.del) { - var me = this; - var data = {nodes: selectedNodes, edges: selectedEdges}; - if (this.triggerFunctions.del.length == 2) { - this.triggerFunctions.del(data, function (finalizedData) { - me.edgesData.remove(finalizedData.edges); - me.nodesData.remove(finalizedData.nodes); - me._unselectAll(); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for delete does not support two arguments (data, callback)') - } - } - else { - this.edgesData.remove(selectedEdges); - this.nodesData.remove(selectedNodes); - this._unselectAll(); - this.moving = true; - this.start(); - } - } - else { - alert(this.constants.locales[this.constants.locale]["deleteClusterError"]); - } - } - }; + // alias isUtc for dev-friendliness + moment.fn.isUTC = moment.fn.isUtc; + /************************************ + Duration Prototype + ************************************/ -/***/ }, -/* 65 */ -/***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(1); - var Hammer = __webpack_require__(45); + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; + } - exports._cleanNavigation = function() { - // clean hammer bindings - if (this.navigationHammers.length != 0) { - for (var i = 0; i < this.navigationHammers.length; i++) { - this.navigationHammers[i].dispose(); + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; } - this.navigationHammers = []; - } - this._navigationReleaseOverload = function () {}; + extend(moment.duration.fn = Duration.prototype, { - // clean up previous navigation items - if (this.navigationDOM && this.navigationDOM['wrapper'] && this.navigationDOM['wrapper'].parentNode) { - this.navigationDOM['wrapper'].parentNode.removeChild(this.navigationDOM['wrapper']); - } - }; + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years = 0; - /** - * Creation of the navigation controls nodes. They are drawn over the rest of the nodes and are not affected by scale and translation - * they have a triggerFunction which is called on click. If the position of the navigation controls is dependent - * on this.frame.canvas.clientWidth or this.frame.canvas.clientHeight, we flag horizontalAlignLeft and verticalAlignTop false. - * This means that the location will be corrected by the _relocateNavigation function on a size change of the canvas. - * - * @private - */ - exports._loadNavigationElements = function() { - this._cleanNavigation(); + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - this.navigationDOM = {}; - var navigationDivs = ['up','down','left','right','zoomIn','zoomOut','zoomExtends']; - var navigationDivActions = ['_moveUp','_moveDown','_moveLeft','_moveRight','_zoomIn','_zoomOut','_zoomExtent']; + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; - this.navigationDOM['wrapper'] = document.createElement('div'); - this.frame.appendChild(this.navigationDOM['wrapper']); + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; - for (var i = 0; i < navigationDivs.length; i++) { - this.navigationDOM[navigationDivs[i]] = document.createElement('div'); - this.navigationDOM[navigationDivs[i]].className = 'network-navigation ' + navigationDivs[i]; - this.navigationDOM['wrapper'].appendChild(this.navigationDOM[navigationDivs[i]]); + hours = absRound(minutes / 60); + data.hours = hours % 24; - var hammer = Hammer(this.navigationDOM[navigationDivs[i]], {prevent_default: true}); - hammer.on('touch', this[navigationDivActions[i]].bind(this)); - this.navigationHammers.push(hammer); - } + days += absRound(hours / 24); - this._navigationReleaseOverload = this._stopMovement; + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); - }; + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absRound(days / 30); + days %= 30; + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; - /** - * this stops all movement induced by the navigation buttons - * - * @private - */ - exports._zoomExtent = function(event) { - this.zoomExtent({duration:700}); - event.stopPropagation(); - }; + data.days = days; + data.months = months; + data.years = years; + }, - /** - * this stops all movement induced by the navigation buttons - * - * @private - */ - exports._stopMovement = function() { - this._xStopMoving(); - this._yStopMoving(); - this._stopZoom(); - }; + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); + this._data.milliseconds = Math.abs(this._data.milliseconds); + this._data.seconds = Math.abs(this._data.seconds); + this._data.minutes = Math.abs(this._data.minutes); + this._data.hours = Math.abs(this._data.hours); + this._data.months = Math.abs(this._data.months); + this._data.years = Math.abs(this._data.years); - /** - * move the screen up - * By using the increments, instead of adding a fixed number to the translation, we keep fluent and - * instant movement. The onKeypress event triggers immediately, then pauses, then triggers frequently - * To avoid this behaviour, we do the translation in the start loop. - * - * @private - */ - exports._moveUp = function(event) { - this.yIncrement = this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + return this; + }, + weeks : function () { + return absRound(this.days() / 7); + }, - /** - * move the screen down - * @private - */ - exports._moveDown = function(event) { - this.yIncrement = -this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, + humanize : function (withSuffix) { + var output = relativeTime(this, !withSuffix, this.localeData()); - /** - * move the screen left - * @private - */ - exports._moveLeft = function(event) { - this.xIncrement = this.constants.keyboard.speed.x; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + if (withSuffix) { + output = this.localeData().pastFuture(+this, output); + } + return this.localeData().postformat(output); + }, - /** - * move the screen right - * @private - */ - exports._moveRight = function(event) { - this.xIncrement = -this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; - /** - * Zoom in, using the same method as the movement. - * @private - */ - exports._zoomIn = function(event) { - this.zoomIncrement = this.constants.keyboard.speed.zoom; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + this._bubble(); + return this; + }, - /** - * Zoom out - * @private - */ - exports._zoomOut = function(event) { - this.zoomIncrement = -this.constants.keyboard.speed.zoom; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + subtract : function (input, val) { + var dur = moment.duration(input, val); + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; - /** - * Stop zooming and unhighlight the zoom controls - * @private - */ - exports._stopZoom = function(event) { - this.zoomIncrement = 0; - event && event.preventDefault(); - }; + this._bubble(); + return this; + }, - /** - * Stop moving in the Y direction and unHighlight the up and down - * @private - */ - exports._yStopMoving = function(event) { - this.yIncrement = 0; - event && event.preventDefault(); - }; + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, + as : function (units) { + var days, months; + units = normalizeUnits(units); - /** - * Stop moving in the X direction and unHighlight left and right. - * @private - */ - exports._xStopMoving = function(event) { - this.xIncrement = 0; - event && event.preventDefault(); - }; + if (units === 'month' || units === 'year') { + days = this._days + this._milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(yearsToDays(this._months / 12)); + switch (units) { + case 'week': return days / 7 + this._milliseconds / 6048e5; + case 'day': return days + this._milliseconds / 864e5; + case 'hour': return days * 24 + this._milliseconds / 36e5; + case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; + case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + }, + lang : moment.fn.lang, + locale : moment.fn.locale, -/***/ }, -/* 66 */ -/***/ function(module, exports, __webpack_require__) { + toIsoString : deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead ' + + '(notice the capitals)', + function () { + return this.toISOString(); + } + ), - exports._resetLevels = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.preassignedLevel == false) { - node.level = -1; - node.hierarchyEnumerated = false; - } - } - } - }; + toISOString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); - /** - * This is the main function to layout the nodes in a hierarchical way. - * It checks if the node details are supplied correctly - * - * @private - */ - exports._setupHierarchicalLayout = function() { - if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { - // get the size of the largest hubs and check if the user has defined a level for a node. - var hubsize = 0; - var node, nodeId; - var definedLevel = false; - var undefinedLevel = false; + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); + }, - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level != -1) { - definedLevel = true; - } - else { - undefinedLevel = true; - } - if (hubsize < node.edges.length) { - hubsize = node.edges.length; + localeData : function () { + return this._locale; + }, + + toJSON : function () { + return this.toISOString(); } - } - } + }); - // if the user defined some levels but not all, alert and run without hierarchical layout - if (undefinedLevel == true && definedLevel == true) { - throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); - this.zoomExtent({duration:0},true,this.constants.clustering.enabled); - if (!this.constants.clustering.enabled) { - this.start(); - } + moment.duration.fn.toString = moment.duration.fn.toISOString; + + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; } - else { - // setup the system to use hierarchical method. - this._changeConstants(); - // define levels if undefined by the users. Based on hubsize - if (undefinedLevel == true) { - if (this.constants.hierarchicalLayout.layout == "hubsize") { - this._determineLevels(hubsize); - } - else { - this._determineLevelsDirected(false); + for (i in unitMillisecondFactors) { + if (hasOwnProp(unitMillisecondFactors, i)) { + makeDurationGetter(i.toLowerCase()); } + } - } - // check the distribution of the nodes per level. - var distribution = this._getDistribution(); + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); + }; + moment.duration.fn.asSeconds = function () { + return this.as('s'); + }; + moment.duration.fn.asMinutes = function () { + return this.as('m'); + }; + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; + moment.duration.fn.asMonths = function () { + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); + }; - // place the nodes on the canvas. This also stablilizes the system. - this._placeNodesByHierarchy(distribution); + /************************************ + Default Locale + ************************************/ - // start the simulation. - this.start(); - } - } - }; + // Set default locale, other locale will inherit from English. + moment.locale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); - /** - * This function places the nodes on the canvas based on the hierarchial distribution. - * - * @param {Object} distribution | obtained by the function this._getDistribution() - * @private - */ - exports._placeNodesByHierarchy = function(distribution) { - var nodeId, node; + /* EMBED_LOCALES */ - // start placing all the level 0 nodes first. Then recursively position their branches. - for (var level in distribution) { - if (distribution.hasOwnProperty(level)) { + /************************************ + Exposing Moment + ************************************/ - for (nodeId in distribution[level].nodes) { - if (distribution[level].nodes.hasOwnProperty(nodeId)) { - node = distribution[level].nodes[nodeId]; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (node.xFixed) { - node.x = distribution[level].minPos; - node.xFixed = false; + function makeGlobal(shouldDeprecate) { + /*global ender:false */ + if (typeof ender !== 'undefined') { + return; + } + oldGlobalMoment = globalScope.moment; + if (shouldDeprecate) { + globalScope.moment = deprecate( + 'Accessing Moment through the global scope is ' + + 'deprecated, and will be removed in an upcoming ' + + 'release.', + moment); + } else { + globalScope.moment = moment; + } + } - distribution[level].minPos += distribution[level].nodeSpacing; + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } else if (true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal === true) { + // release the global variable + globalScope.moment = oldGlobalMoment; } - } - else { - if (node.yFixed) { - node.y = distribution[level].minPos; - node.yFixed = false; - distribution[level].minPos += distribution[level].nodeSpacing; - } - } - this._placeBranchNodes(node.edges,node.id,distribution,node.level); - } - } + return moment; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + makeGlobal(true); + } else { + makeGlobal(); } - } + }).call(this); - // stabilize the system after positioning. This function calls zoomExtent. - this._stabilize(); - }; + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) +/***/ }, +/* 66 */ +/***/ function(module, exports, __webpack_require__) { + /** - * This function get the distribution of levels based on hubsize - * - * @returns {Object} - * @private + * Expose `Emitter`. */ - exports._getDistribution = function() { - var distribution = {}; - var nodeId, node, level; - - // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. - // the fix of X is removed after the x value has been set. - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.xFixed = true; - node.yFixed = true; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - else { - node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - if (distribution[node.level] === undefined) { - distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; - } - distribution[node.level].amount += 1; - distribution[node.level].nodes[nodeId] = node; - } - } - // determine the largest amount of nodes of all levels - var maxCount = 0; - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - if (maxCount < distribution[level].amount) { - maxCount = distribution[level].amount; - } - } - } + module.exports = Emitter; - // set the initial position and spacing of each nodes accordingly - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; - distribution[level].nodeSpacing /= (distribution[level].amount + 1); - distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); - } - } + /** + * Initialize a new `Emitter`. + * + * @api public + */ - return distribution; + function Emitter(obj) { + if (obj) return mixin(obj); }; - /** - * this function allocates nodes in levels based on the recursive branching from the largest hubs. + * Mixin the emitter properties. * - * @param hubsize - * @private + * @param {Object} obj + * @return {Object} + * @api private */ - exports._determineLevels = function(hubsize) { - var nodeId, node; - - // determine hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.edges.length == hubsize) { - node.level = 0; - } - } - } - // branch from hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level == 0) { - this._setLevel(1,node.edges,node.id); - } - } + function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; } - }; + return obj; + } + /** + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + Emitter.prototype.on = + Emitter.prototype.addEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + (this._callbacks[event] = this._callbacks[event] || []) + .push(fn); + return this; + }; /** - * this function allocates nodes in levels based on the direction of the edges + * Adds an `event` listener that will be invoked a single + * time then automatically removed. * - * @param hubsize - * @private + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public */ - exports._determineLevelsDirected = function() { - var nodeId, node, firstNode; - var minLevel = 10000; - // set first node to source - firstNode = this.nodes[this.nodeIndices[0]]; - firstNode.level = minLevel; - this._setLevelDirected(minLevel,firstNode.edges,firstNode.id); + Emitter.prototype.once = function(event, fn){ + var self = this; + this._callbacks = this._callbacks || {}; - // get the minimum level - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - minLevel = node.level < minLevel ? node.level : minLevel; - } + function on() { + self.off(event, on); + fn.apply(this, arguments); } - // subtract the minimum from the set so we have a range starting from 0 - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.level -= minLevel; - } - } + on.fn = fn; + this.on(event, on); + return this; }; - /** - * Since hierarchical layout does not support: - * - smooth curves (based on the physics), - * - clustering (based on dynamic node counts) - * - * We disable both features so there will be no problems. + * Remove the given callback for `event` or all + * registered callbacks. * - * @private + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public */ - exports._changeConstants = function() { - this.constants.clustering.enabled = false; - this.constants.physics.barnesHut.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this._loadSelectedForceSolver(); - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.dynamic = false; - } - this._configureSmoothCurves(); - var config = this.constants.hierarchicalLayout; - config.levelSeparation = Math.abs(config.levelSeparation); - if (config.direction == "RL" || config.direction == "DU") { - config.levelSeparation *= -1; + Emitter.prototype.off = + Emitter.prototype.removeListener = + Emitter.prototype.removeAllListeners = + Emitter.prototype.removeEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + + // all + if (0 == arguments.length) { + this._callbacks = {}; + return this; } - if (config.direction == "RL" || config.direction == "LR") { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "vertical"; - } + // specific event + var callbacks = this._callbacks[event]; + if (!callbacks) return this; + + // remove all handlers + if (1 == arguments.length) { + delete this._callbacks[event]; + return this; } - else { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "horizontal"; + + // remove specific handler + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; } } + return this; }; - /** - * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes - * on a X position that ensures there will be no overlap. + * Emit `event` with the given args. * - * @param edges - * @param parentId - * @param distribution - * @param parentLevel - * @private + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} */ - exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } - // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. - var nodeMoved = false; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (childNode.xFixed && childNode.level > parentLevel) { - childNode.xFixed = false; - childNode.x = distribution[childNode.level].minPos; - nodeMoved = true; - } - } - else { - if (childNode.yFixed && childNode.level > parentLevel) { - childNode.yFixed = false; - childNode.y = distribution[childNode.level].minPos; - nodeMoved = true; - } - } + Emitter.prototype.emit = function(event){ + this._callbacks = this._callbacks || {}; + var args = [].slice.call(arguments, 1) + , callbacks = this._callbacks[event]; - if (nodeMoved == true) { - distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; - if (childNode.edges.length > 1) { - this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); - } + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); } } - }; - - /** - * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. - * - * @param level - * @param edges - * @param parentId - * @private - */ - exports._setLevel = function(level, edges, parentId) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } - if (childNode.level == -1 || childNode.level > level) { - childNode.level = level; - if (childNode.edges.length > 1) { - this._setLevel(level+1, childNode.edges, childNode.id); - } - } - } + return this; }; - /** - * this function is called recursively to enumerate the branched of the first node and give each node a level based on edge direction + * Return array of callbacks for `event`. * - * @param level - * @param edges - * @param parentId - * @private + * @param {String} event + * @return {Array} + * @api public */ - exports._setLevelDirected = function(level, edges, parentId) { - this.nodes[parentId].hierarchyEnumerated = true; - var childNode, direction; - for (var i = 0; i < edges.length; i++) { - direction = 1; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - direction = -1; - } - else { - childNode = edges[i].to; - } - if (childNode.level == -1) { - childNode.level = level + direction; - } - } - - for (var i = 0; i < edges.length; i++) { - if (edges[i].toId == parentId) {childNode = edges[i].from;} - else {childNode = edges[i].to;} - if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { - this._setLevelDirected(childNode.level, childNode.edges, childNode.id); - } - } + Emitter.prototype.listeners = function(event){ + this._callbacks = this._callbacks || {}; + return this._callbacks[event] || []; }; - /** - * Unfix nodes + * Check if this emitter has `event` handlers. * - * @private + * @param {String} event + * @return {Boolean} + * @api public */ - exports._restoreNodes = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.nodes[nodeId].xFixed = false; - this.nodes[nodeId].yFixed = false; - } - } + + Emitter.prototype.hasListeners = function(event){ + return !! this.listeners(event).length; }; diff --git a/dist/vis.map b/dist/vis.map index f19a12ab..c1221d1e 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackContext","req","resolve","webpackPolyfill","paths"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyBA,cAEA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,OAAOH,GACmB,gBAAZC,SACdA,QAAa,IAAID,IAEjBD,EAAU,IAAIC,KACbK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GAG9BN,EAAQe,KAAOT,EAAoB,GACnCN,EAAQgB,QAAUV,EAAoB,GAGtCN,EAAQiB,QAAUX,EAAoB,GACtCN,EAAQkB,SAAWZ,EAAoB,GACvCN,EAAQmB,MAAQb,EAAoB,GAGpCN,EAAQoB,QAAUd,EAAoB,GACtCN,EAAQqB,SACNC,OAAQhB,EAAoB,GAC5BiB,OAAQjB,EAAoB,GAC5BkB,QAASlB,EAAoB,GAC7BmB,QAASnB,EAAoB,IAC7BoB,OAAQpB,EAAoB,IAC5BqB,WAAYrB,EAAoB,KAIlCN,EAAQ4B,SAAWtB,EAAoB,IACvCN,EAAQ6B,QAAUvB,EAAoB,IACtCN,EAAQ8B,UACNC,SAAUzB,EAAoB,IAC9B0B,SAAU1B,EAAoB,IAC9B2B,MAAO3B,EAAoB,IAC3B4B,MAAO5B,EAAoB,IAC3B6B,SAAU7B,EAAoB,IAE9B8B,YACEC,OACEC,KAAMhC,EAAoB,IAC1BiC,eAAgBjC,EAAoB,IACpCkC,QAASlC,EAAoB,IAC7BmC,UAAWnC,EAAoB,IAC/BoC,UAAWpC,EAAoB,KAGjCqC,UAAWrC,EAAoB,IAC/BsC,YAAatC,EAAoB,IACjCuC,WAAYvC,EAAoB,IAChCwC,SAAUxC,EAAoB,IAC9ByC,WAAYzC,EAAoB,IAChC0C,MAAO1C,EAAoB,IAC3B2C,gBAAiB3C,EAAoB,IACrC4C,QAAS5C,EAAoB,IAC7B6C,OAAQ7C,EAAoB,IAC5B8C,UAAW9C,EAAoB,IAC/B+C,SAAU/C,EAAoB,MAKlCN,EAAQsD,QAAUhD,EAAoB,IACtCN,EAAQuD,SACNC,KAAMlD,EAAoB,IAC1BmD,OAAQnD,EAAoB,IAC5BoD,OAAQpD,EAAoB,IAC5BqD,KAAMrD,EAAoB,IAC1BsD,MAAOtD,EAAoB,IAC3BuD,UAAWvD,EAAoB,IAC/BwD,YAAaxD,EAAoB,KAInCN,EAAQ+D,MAAQ,WACd,KAAM,IAAIC,OAAM,+EAIlBhE,EAAQiE,OAAS3D,EAAoB,IACrCN,EAAQkE,OAAS5D,EAAoB,KAKjC,SAASL,EAAQD,EAASM,GAM9B,GAAI2D,GAAS3D,EAAoB,GAOjCN,GAAQmE,SAAW,SAASC,GAC1B,MAAQA,aAAkBC,SAA2B,gBAAVD,IAa7CpE,EAAQsE,UAAY,SAASC,EAAIC,EAAIC,EAAMC,GACzC,GAAIF,GAAOD,EACT,MAAO,EAGP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAGE,EAAQH,GAAKI,IASpC3E,EAAQ6E,SAAW,SAAST,GAC1B,MAAQA,aAAkBU,SAA2B,gBAAVV,IAQ7CpE,EAAQ+E,OAAS,SAASX,GACxB,GAAIA,YAAkBY,MACpB,OAAO,CAEJ,IAAIhF,EAAQ6E,SAAST,GAAS,CAEjC,GAAIa,GAAQC,EAAaC,KAAKf,EAC9B,IAAIa,EACF,OAAO,CAEJ,KAAKG,MAAMJ,KAAKK,MAAMjB,IACzB,OAAO,EAIX,OAAO,GAQTpE,EAAQsF,YAAc,SAASlB,GAC7B,MAA4B,mBAAb,SACVmB,OAAoB,eACpBA,OAAOC,cAAuB,WAC9BpB,YAAkBmB,QAAOC,cAAcC,WAQ9CzF,EAAQ0F,WAAa,WACnB,GAAIC,GAAK,WACP,MAAOf,MAAKgB,MACQ,MAAhBhB,KAAKiB,UACPC,SAAS,IAGb,OACIH,KAAOA,IAAO,IACVA,IAAO,IACPA,IAAO,IACPA,IAAO,IACPA,IAAOA,IAAOA,KAWxB3F,EAAQ+F,OAAS,SAAUC,GACzB,IAAK,GAAIC,GAAI,EAAGC,EAAMC,UAAUC,OAAYF,EAAJD,EAASA,IAAK,CACpD,GAAII,GAAQF,UAAUF,EACtB,KAAK,GAAIK,KAAQD,GACXA,EAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAKtB,MAAON,IAWThG,EAAQwG,gBAAkB,SAAUC,EAAOT,GACzC,IAAKU,MAAMC,QAAQF,GACjB,KAAM,IAAIzC,OAAM,uDAGlB,KAAK,GAAIiC,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAGpC,IAAK,GAFDI,GAAQF,UAAUF,GAEbnF,EAAI,EAAGA,EAAI2F,EAAML,OAAQtF,IAAK,CACrC,GAAIwF,GAAOG,EAAM3F,EACbuF,GAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAItB,MAAON,IAWThG,EAAQ4G,oBAAsB,SAAUH,EAAOT,EAAGa,GAEhD,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAEtB,KAAK,GAAIb,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAEpC,IAAK,GADDI,GAAQF,UAAUF,GACbnF,EAAI,EAAGA,EAAI2F,EAAML,OAAQtF,IAAK,CACrC,GAAIwF,GAAOG,EAAM3F,EACjB,IAAIuF,EAAME,eAAeD,GACvB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,IAMpB,MAAON,IAWThG,EAAQmH,uBAAyB,SAAUV,EAAOT,EAAGa,GAEnD,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAEtB,KAAK,GAAIR,KAAQO,GACf,GAAIA,EAAEN,eAAeD,IACQ,IAAvBG,EAAMW,QAAQd,GAChB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAKpB,MAAON,IASThG,EAAQkH,WAAa,SAASlB,EAAGa,GAE/B,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAGtB,KAAK,GAAIR,KAAQO,GACf,GAAIA,EAAEN,eAAeD,GACnB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAIlB,MAAON,IAUThG,EAAQqH,WAAa,SAAUrB,EAAGa,GAChC,GAAIb,EAAEI,QAAUS,EAAET,OAAQ,OAAO,CAEjC,KAAK,GAAIH,GAAI,EAAGC,EAAMF,EAAEI,OAAYF,EAAJD,EAASA,IACvC,GAAID,EAAEC,IAAMY,EAAEZ,GAAI,OAAO,CAG3B,QAAO,GAYTjG,EAAQsH,QAAU,SAASlD,EAAQmD,GACjC,GAAItC,EAEJ,IAAegC,SAAX7C,EACF,MAAO6C,OAET,IAAe,OAAX7C,EACF,MAAO,KAGT,KAAKmD,EACH,MAAOnD,EAET,IAAsB,gBAATmD,MAAwBA,YAAgBzC,SACnD,KAAM,IAAId,OAAM,wBAIlB,QAAQuD,GACN,IAAK,UACL,IAAK,UACH,MAAOC,SAAQpD,EAEjB,KAAK,SACL,IAAK,SACH,MAAOC,QAAOD,EAAOqD,UAEvB,KAAK,SACL,IAAK,SACH,MAAO3C,QAAOV,EAEhB,KAAK,OACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,IAAIY,MAAKZ,EAElB,IAAIA,YAAkBY,MACpB,MAAO,IAAIA,MAAKZ,EAAOqD,UAEpB,IAAIxD,EAAOyD,SAAStD,GACvB,MAAO,IAAIY,MAAKZ,EAAOqD,UAEzB,IAAIzH,EAAQ6E,SAAST,GAEnB,MADAa,GAAQC,EAAaC,KAAKf,GACtBa,EAEK,GAAID,MAAKX,OAAOY,EAAM,KAGtBhB,EAAOG,GAAQuD,QAIxB,MAAM,IAAI3D,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,gBAGZ,KAAK,SACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAOH,GAAOG,EAEhB,IAAIA,YAAkBY,MACpB,MAAOf,GAAOG,EAAOqD,UAElB,IAAIxD,EAAOyD,SAAStD,GACvB,MAAOH,GAAOG,EAEhB,IAAIpE,EAAQ6E,SAAST,GAEnB,MADAa,GAAQC,EAAaC,KAAKf,GAGjBH,EAFLgB,EAEYZ,OAAOY,EAAM,IAGbb,EAIhB,MAAM,IAAIJ,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,gBAGZ,KAAK,UACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,IAAIY,MAAKZ,EAEb,IAAIA,YAAkBY,MACzB,MAAOZ,GAAOyD,aAEX,IAAI5D,EAAOyD,SAAStD,GACvB,MAAOA,GAAOuD,SAASE,aAEpB,IAAI7H,EAAQ6E,SAAST,GAExB,MADAa,GAAQC,EAAaC,KAAKf,GACtBa,EAEK,GAAID,MAAKX,OAAOY,EAAM,KAAK4C,cAG3B,GAAI7C,MAAKZ,GAAQyD,aAI1B,MAAM,IAAI7D,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,mBAGZ,KAAK,UACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,SAAWA,EAAS,IAExB,IAAIA,YAAkBY,MACzB,MAAO,SAAWZ,EAAOqD,UAAY,IAElC,IAAIzH,EAAQ6E,SAAST,GAAS,CACjCa,EAAQC,EAAaC,KAAKf,EAC1B,IAAIM,EAQJ,OALEA,GAFEO,EAEM,GAAID,MAAKX,OAAOY,EAAM,KAAKwC,UAG3B,GAAIzC,MAAKZ,GAAQqD,UAEpB,SAAW/C,EAAQ,KAG1B,KAAM,IAAIV,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,mBAGZ,SACE,KAAM,IAAIJ,OAAM,iBAAmBuD,EAAO,MAOhD,IAAIrC,GAAe,qBAOnBlF,GAAQ4H,QAAU,SAASxD,GACzB,GAAImD,SAAcnD,EAElB,OAAY,UAARmD,EACY,MAAVnD,EACK,OAELA,YAAkBoD,SACb,UAELpD,YAAkBC,QACb,SAELD,YAAkBU,QACb,SAEL4B,MAAMC,QAAQvC,GACT,QAELA,YAAkBY,MACb,OAEF,SAEQ,UAARuC,EACA,SAEQ,WAARA,EACA,UAEQ,UAARA,EACA,SAGFA,GASTvH,EAAQ8H,gBAAkB,SAASC,GACjC,MAAOA,GAAKC,wBAAwBC,KAAOC,OAAOC,aASpDnI,EAAQoI,eAAiB,SAASL,GAChC,MAAOA,GAAKC,wBAAwBK,IAAMH,OAAOI,aAQnDtI,EAAQuI,aAAe,SAASR,EAAMS,GACpC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,IACD,KAA9BD,EAAQrB,QAAQoB,KAClBC,EAAQE,KAAKH,GACbT,EAAKS,UAAYC,EAAQG,KAAK,OASlC5I,EAAQ6I,gBAAkB,SAASd,EAAMS,GACvC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,KAC/BI,EAAQL,EAAQrB,QAAQoB,EACf,KAATM,IACFL,EAAQM,OAAOD,EAAO,GACtBf,EAAKS,UAAYC,EAAQG,KAAK,OAalC5I,EAAQgJ,QAAU,SAAS5E,EAAQ6E,GACjC,GAAIhD,GACAC,CACJ,IAAIQ,MAAMC,QAAQvC,GAEhB,IAAK6B,EAAI,EAAGC,EAAM9B,EAAOgC,OAAYF,EAAJD,EAASA,IACxCgD,EAAS7E,EAAO6B,GAAIA,EAAG7B,OAKzB,KAAK6B,IAAK7B,GACJA,EAAOmC,eAAeN,IACxBgD,EAAS7E,EAAO6B,GAAIA,EAAG7B,IAY/BpE,EAAQkJ,QAAU,SAAS9E,GACzB,GAAI+E,KAEJ,KAAK,GAAI7C,KAAQlC,GACXA,EAAOmC,eAAeD,IAAO6C,EAAMR,KAAKvE,EAAOkC,GAGrD,OAAO6C,IAUTnJ,EAAQoJ,eAAiB,SAAShF,EAAQiF,EAAK3E,GAC7C,MAAIN,GAAOiF,KAAS3E,GAClBN,EAAOiF,GAAO3E,GACP,IAGA,GAYX1E,EAAQsJ,iBAAmB,SAASC,EAASC,EAAQC,EAAUC,GACzDH,EAAQD,kBACSrC,SAAfyC,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUxC,QAAQ,YAAc,IACvEoC,EAAS,kBAGXD,EAAQD,iBAAiBE,EAAQC,EAAUC,IAE3CH,EAAQM,YAAY,KAAOL,EAAQC,IAWvCzJ,EAAQ8J,oBAAsB,SAASP,EAASC,EAAQC,EAAUC,GAC5DH,EAAQO,qBAES7C,SAAfyC,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUxC,QAAQ,YAAc,IACvEoC,EAAS,kBAGXD,EAAQO,oBAAoBN,EAAQC,EAAUC,IAG9CH,EAAQQ,YAAY,KAAOP,EAAQC,IAOvCzJ,EAAQgK,eAAiB,SAAUC,GAC5BA,IACHA,EAAQ/B,OAAO+B,OAEbA,EAAMD,eACRC,EAAMD,iBAGNC,EAAMC,aAAc,GASxBlK,EAAQmK,UAAY,SAASF,GAEtBA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAIG,EAcJ,OAZIH,GAAMG,OACRA,EAASH,EAAMG,OAERH,EAAMI,aACbD,EAASH,EAAMI,YAGMpD,QAAnBmD,EAAOE,UAA4C,GAAnBF,EAAOE,WAEzCF,EAASA,EAAOG,YAGXH,GAQTpK,EAAQwK,UAAY,SAAUjB,EAASkB,GAGrC,IAFA,GAAIC,GAAInB,EAEDmB,GAAG,CACR,GAAIA,IAAMD,EACR,OAAO,CAETC,GAAIA,EAAEH,WAGR,OAAO,GAGTvK,EAAQ2K,UAQR3K,EAAQ2K,OAAOC,UAAY,SAAUlG,EAAOmG,GAK1C,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACe,GAATA,EAGHmG,GAAgB,MASzB7K,EAAQ2K,OAAOG,SAAW,SAAUpG,EAAOmG,GAKzC,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACKL,OAAOK,IAAUmG,GAAgB,KAGnCA,GAAgB,MASzB7K,EAAQ2K,OAAOI,SAAW,SAAUrG,EAAOmG,GAKzC,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACKI,OAAOJ,GAGTmG,GAAgB,MASzB7K,EAAQ2K,OAAOK,OAAS,SAAUtG,EAAOmG,GAKvC,MAJoB,kBAATnG,KACTA,EAAQA,KAGN1E,EAAQ6E,SAASH,GACZA,EAEA1E,EAAQmE,SAASO,GACjBA,EAAQ,KAGRmG,GAAgB,MAU3B7K,EAAQ2K,OAAOM,UAAY,SAAUvG,EAAOmG,GAK1C,MAJoB,kBAATnG,KACTA,EAAQA,KAGHA,GAASmG,GAAgB,MASlC7K,EAAQkL,SAAW,SAASC,GAE1B,GAAIC,GAAiB,kCACrBD,GAAMA,EAAIE,QAAQD,EAAgB,SAASxK,EAAG0K,EAAGC,EAAG1E,GAChD,MAAOyE,GAAIA,EAAIC,EAAIA,EAAI1E,EAAIA,GAE/B,IAAI2E,GAAS,4CAA4CrG,KAAKgG,EAC9D,OAAOK,IACHF,EAAGG,SAASD,EAAO,GAAI,IACvBD,EAAGE,SAASD,EAAO,GAAI,IACvB3E,EAAG4E,SAASD,EAAO,GAAI,KACvB,MASNxL,EAAQ0L,gBAAkB,SAASC,EAAMC,GACvC,GAA4B,IAAxBD,EAAMvE,QAAQ,OAAc,CAC9B,GAAIyE,GAAMF,EAAMG,OAAOH,EAAMvE,QAAQ,KAAK,GAAGiE,QAAQ,IAAI,IAAI3C,MAAM,IACnE,OAAO,QAAUmD,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMD,EAAU,IAGxE,GAAIC,GAAM7L,EAAQkL,SAASS,EAC3B,OAAW,OAAPE,EACKF,EAGA,QAAUE,EAAIP,EAAI,IAAMO,EAAIN,EAAI,IAAMM,EAAIhF,EAAI,IAAM+E,EAAU,KAa3E5L,EAAQ+L,SAAW,SAASC,EAAIC,EAAMC,GACpC,MAAO,MAAQ,GAAK,KAAOF,GAAO,KAAOC,GAAS,GAAKC,GAAMpG,SAAS,IAAIqG,MAAM,IASlFnM,EAAQoM,WAAa,SAAST,GAC5B,GAAI9K,EACJ,IAAIb,EAAQ6E,SAAS8G,GAAQ,CAC3B,GAAI3L,EAAQqM,WAAWV,GAAQ,CAC7B,GAAIE,GAAMF,EAAMG,OAAO,GAAGA,OAAO,EAAEH,EAAMvF,OAAO,GAAGsC,MAAM,IACzDiD,GAAQ3L,EAAQ+L,SAASF,EAAI,GAAGA,EAAI,GAAGA,EAAI,IAE7C,GAAI7L,EAAQsM,WAAWX,GAAQ,CAC7B,GAAIY,GAAMvM,EAAQwM,SAASb,GACvBc,GAAmBC,EAAEH,EAAIG,EAAEC,EAAU,IAARJ,EAAII,EAASC,EAAEhI,KAAKL,IAAI,EAAU,KAARgI,EAAIK,IAC3DC,GAAmBH,EAAEH,EAAIG,EAAEC,EAAE/H,KAAKL,IAAI,EAAU,KAARgI,EAAIK,GAAUA,EAAQ,GAANL,EAAIK,GAC5DE,EAAkB9M,EAAQ+M,SAASF,EAAeH,EAAGG,EAAeH,EAAGG,EAAeD,GACtFI,EAAkBhN,EAAQ+M,SAASN,EAAgBC,EAAED,EAAgBE,EAAEF,EAAgBG,EAE3F/L,IACEoM,WAAYtB,EACZuB,OAAOJ,EACPK,WACEF,WAAWD,EACXE,OAAOJ,GAETM,OACEH,WAAWD,EACXE,OAAOJ,QAKXjM,IACEoM,WAAWtB,EACXuB,OAAOvB,EACPwB,WACEF,WAAWtB,EACXuB,OAAOvB,GAETyB,OACEH,WAAWtB,EACXuB,OAAOvB,QAMb9K,MACAA,EAAEoM,WAAatB,EAAMsB,YAAc,QACnCpM,EAAEqM,OAASvB,EAAMuB,QAAUrM,EAAEoM,WAEzBjN,EAAQ6E,SAAS8G,EAAMwB,WACzBtM,EAAEsM,WACAD,OAAQvB,EAAMwB,UACdF,WAAYtB,EAAMwB,YAIpBtM,EAAEsM,aACFtM,EAAEsM,UAAUF,WAAatB,EAAMwB,WAAaxB,EAAMwB,UAAUF,YAAcpM,EAAEoM,WAC5EpM,EAAEsM,UAAUD,OAASvB,EAAMwB,WAAaxB,EAAMwB,UAAUD,QAAUrM,EAAEqM,QAGlElN,EAAQ6E,SAAS8G,EAAMyB,OACzBvM,EAAEuM,OACAF,OAAQvB,EAAMyB,MACdH,WAAYtB,EAAMyB,QAIpBvM,EAAEuM,SACFvM,EAAEuM,MAAMH,WAAatB,EAAMyB,OAASzB,EAAMyB,MAAMH,YAAcpM,EAAEoM,WAChEpM,EAAEuM,MAAMF,OAASvB,EAAMyB,OAASzB,EAAMyB,MAAMF,QAAUrM,EAAEqM,OAI5D,OAAOrM,IAYTb,EAAQqN,SAAW,SAASrB,EAAIC,EAAMC,GACpCF,GAAQ,IAAKC,GAAY,IAAKC,GAAU,GACxC,IAAIoB,GAAS1I,KAAKL,IAAIyH,EAAIpH,KAAKL,IAAI0H,EAAMC,IACrCqB,EAAS3I,KAAKJ,IAAIwH,EAAIpH,KAAKJ,IAAIyH,EAAMC,GAGzC,IAAIoB,GAAUC,EACZ,OAAQb,EAAE,EAAEC,EAAE,EAAEC,EAAEU,EAIpB,IAAIE,GAAKxB,GAAKsB,EAAUrB,EAAMC,EAASA,GAAMoB,EAAUtB,EAAIC,EAAQC,EAAKF,EACpEU,EAAKV,GAAKsB,EAAU,EAAMpB,GAAMoB,EAAU,EAAI,EAC9CG,EAAM,IAAIf,EAAIc,GAAGD,EAASD,IAAS,IACnCI,GAAcH,EAASD,GAAQC,EAC/B7I,EAAQ6I,CACZ,QAAQb,EAAEe,EAAId,EAAEe,EAAWd,EAAElI,GAG/B,IAAIiJ,IAEFjF,MAAO,SAAUkF,GACf,GAAIC,KAWJ,OATAD,GAAQlF,MAAM,KAAKM,QAAQ,SAAU8E,GACnC,GAAoB,IAAhBA,EAAMC,OAAc,CACtB,GAAIC,GAAQF,EAAMpF,MAAM,KACpBW,EAAM2E,EAAM,GAAGD,OACfrJ,EAAQsJ,EAAM,GAAGD,MACrBF,GAAOxE,GAAO3E,KAIXmJ,GAITjF,KAAM,SAAUiF,GACd,MAAO7G,QAAOiH,KAAKJ,GACdK,IAAI,SAAU7E,GACb,MAAOA,GAAM,KAAOwE,EAAOxE,KAE5BT,KAAK,OASd5I,GAAQmO,WAAa,SAAU5E,EAASqE,GACtC,GAAIQ,GAAgBT,EAAQjF,MAAMa,EAAQuE,MAAMF,SAC5CS,EAAYV,EAAQjF,MAAMkF,GAC1BC,EAAS7N,EAAQ+F,OAAOqI,EAAeC,EAE3C9E,GAAQuE,MAAMF,QAAUD,EAAQ/E,KAAKiF,IAQvC7N,EAAQsO,cAAgB,SAAU/E,EAASqE,GACzC,GAAIC,GAASF,EAAQjF,MAAMa,EAAQuE,MAAMF,SACrCW,EAAeZ,EAAQjF,MAAMkF,EAEjC,KAAK,GAAIvE,KAAOkF,GACVA,EAAahI,eAAe8C,UACvBwE,GAAOxE,EAIlBE,GAAQuE,MAAMF,QAAUD,EAAQ/E,KAAKiF,IAWvC7N,EAAQwO,SAAW,SAAS9B,EAAGC,EAAGC,GAChC,GAAItB,GAAGC,EAAG1E,EAENZ,EAAIrB,KAAKgB,MAAU,EAAJ8G,GACf+B,EAAQ,EAAJ/B,EAAQzG,EACZnF,EAAI8L,GAAK,EAAID,GACb+B,EAAI9B,GAAK,EAAI6B,EAAI9B,GACjBgC,EAAI/B,GAAK,GAAK,EAAI6B,GAAK9B,EAE3B,QAAQ1G,EAAI,GACV,IAAK,GAAGqF,EAAIsB,EAAGrB,EAAIoD,EAAG9H,EAAI/F,CAAG,MAC7B,KAAK,GAAGwK,EAAIoD,EAAGnD,EAAIqB,EAAG/F,EAAI/F,CAAG,MAC7B,KAAK,GAAGwK,EAAIxK,EAAGyK,EAAIqB,EAAG/F,EAAI8H,CAAG,MAC7B,KAAK,GAAGrD,EAAIxK,EAAGyK,EAAImD,EAAG7H,EAAI+F,CAAG,MAC7B,KAAK,GAAGtB,EAAIqD,EAAGpD,EAAIzK,EAAG+F,EAAI+F,CAAG,MAC7B,KAAK,GAAGtB,EAAIsB,EAAGrB,EAAIzK,EAAG+F,EAAI6H,EAG5B,OAAQpD,EAAE1G,KAAKgB,MAAU,IAAJ0F,GAAUC,EAAE3G,KAAKgB,MAAU,IAAJ2F,GAAU1E,EAAEjC,KAAKgB,MAAU,IAAJiB,KAGrE7G,EAAQ+M,SAAW,SAASL,EAAGC,EAAGC,GAChC,GAAIf,GAAM7L,EAAQwO,SAAS9B,EAAGC,EAAGC,EACjC,OAAO5M,GAAQ+L,SAASF,EAAIP,EAAGO,EAAIN,EAAGM,EAAIhF,IAG5C7G,EAAQwM,SAAW,SAASrB,GAC1B,GAAIU,GAAM7L,EAAQkL,SAASC,EAC3B,OAAOnL,GAAQqN,SAASxB,EAAIP,EAAGO,EAAIN,EAAGM,EAAIhF,IAG5C7G,EAAQsM,WAAa,SAASnB,GAC5B,GAAIyD,GAAO,qCAAqCC,KAAK1D,EACrD,OAAOyD,IAGT5O,EAAQqM,WAAa,SAASR,GAC5BA,EAAMA,EAAIR,QAAQ,IAAI,GACtB,IAAIuD,GAAO,wCAAwCC,KAAKhD,EACxD,OAAO+C,IAUT5O,EAAQ8O,sBAAwB,SAASC,EAAQC,GAC/C,GAA8B,gBAAnBA,GAA6B,CAEtC,IAAK,GADDC,GAAWjI,OAAOkI,OAAOF,GACpB/I,EAAI,EAAGA,EAAI8I,EAAO3I,OAAQH,IAC7B+I,EAAgBzI,eAAewI,EAAO9I,KACC,gBAA9B+I,GAAgBD,EAAO9I,MAChCgJ,EAASF,EAAO9I,IAAMjG,EAAQmP,aAAaH,EAAgBD,EAAO9I,KAIxE,OAAOgJ,GAGP,MAAO,OAWXjP,EAAQmP,aAAe,SAASH,GAC9B,GAA8B,gBAAnBA,GAA6B,CACtC,GAAIC,GAAWjI,OAAOkI,OAAOF,EAC7B,KAAK,GAAI/I,KAAK+I,GACRA,EAAgBzI,eAAeN,IACA,gBAAtB+I,GAAgB/I,KACzBgJ,EAAShJ,GAAKjG,EAAQmP,aAAaH,EAAgB/I,IAIzD,OAAOgJ,GAGP,MAAO,OAcXjP,EAAQoP,aAAe,SAAUC,EAAaC,EAAS3E,GACrD,GAAwB1D,SAApBqI,EAAQ3E,GACV,GAA8B,iBAAnB2E,GAAQ3E,GACjB0E,EAAY1E,GAAQ4E,QAAUD,EAAQ3E,OAEnC,CACH0E,EAAY1E,GAAQ4E,SAAU,CAC9B,KAAK,GAAIjJ,KAAQgJ,GAAQ3E,GACnB2E,EAAQ3E,GAAQpE,eAAeD,KACjC+I,EAAY1E,GAAQrE,GAAQgJ,EAAQ3E,GAAQrE,MAmBtDtG,EAAQwP,mBAAqB,SAASC,EAAcC,EAAgBC,EAAOC,GAMzE,IALA,GAAIC,GAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAarJ,OAAS,EAEnB4J,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAASrL,KAAKgB,OAAOmK,EAAMC,GAAQ,GAEnCE,EAAOT,EAAaQ,GACpBvL,EAAoBuC,SAAX2I,EAAwBM,EAAKP,GAASO,EAAKP,GAAOC,GAE3DO,EAAeT,EAAehL,EAClC,IAAoB,GAAhByL,EACF,MAAOF,EAEgB,KAAhBE,EACPJ,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGlBH,IAGF,MAAO,IAeT9P,EAAQoQ,kBAAoB,SAASX,EAAcrF,EAAQuF,EAAOU,GAOhE,IANA,GAIIC,GAAW5L,EAAO6L,EAAWN,EAJ7BJ,EAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAarJ,OAAS,EAGnB4J,GAAPD,GAA2BF,EAAZC,GAA2B,CAO/C,GALAG,EAASrL,KAAKgB,MAAM,IAAKoK,EAAKD,IAC9BO,EAAYb,EAAa7K,KAAKJ,IAAI,EAAEyL,EAAS,IAAIN,GACjDjL,EAAY+K,EAAaQ,GAAQN,GACjCY,EAAYd,EAAa7K,KAAKL,IAAIkL,EAAarJ,OAAO,EAAE6J,EAAS,IAAIN,GAEjEjL,GAAS0F,EACX,MAAO6F,EAEJ,IAAgB7F,EAAZkG,GAAsB5L,EAAQ0F,EACrC,MAAyB,UAAlBiG,EAA6BzL,KAAKJ,IAAI,EAAEyL,EAAS,GAAKA,CAE1D,IAAY7F,EAAR1F,GAAkB6L,EAAYnG,EACrC,MAAyB,UAAlBiG,EAA6BJ,EAASrL,KAAKL,IAAIkL,EAAarJ,OAAO,EAAE6J,EAAS,EAGzE7F,GAAR1F,EACFqL,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGpBH,IAIF,MAAO,IAYT9P,EAAQwQ,cAAgB,SAAU7B,EAAG8B,EAAOC,EAAKC,GAC/C,GAAIC,GAASF,EAAMD,CAEnB,OADA9B,IAAKgC,EAAS,EACN,EAAJhC,EAAciC,EAAO,EAAEjC,EAAEA,EAAI8B,GACjC9B,KACQiC,EAAO,GAAKjC,GAAGA,EAAE,GAAK,GAAK8B,IAUrCzQ,EAAQ6Q,iBAENC,OAAQ,SAAUnC,GAChB,MAAOA,IAGToC,WAAY,SAAUpC,GACpB,MAAOA,GAAIA,GAGbqC,YAAa,SAAUrC,GACrB,MAAOA,IAAK,EAAIA,IAGlB6B,cAAe,SAAU7B,GACvB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAI,IAAM,EAAI,EAAIA,GAAKA,GAGjDsC,YAAa,SAAUtC,GACrB,MAAOA,GAAIA,EAAIA,GAGjBuC,aAAc,SAAUvC,GACtB,QAAUA,EAAKA,EAAIA,EAAI,GAGzBwC,eAAgB,SAAUxC,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,GAGxEyC,YAAa,SAAUzC,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,GAGrB0C,aAAc,SAAU1C,GACtB,MAAO,MAAOA,EAAKA,EAAIA,EAAIA,GAG7B2C,eAAgB,SAAU3C,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,IAAOA,EAAKA,EAAIA,EAAIA,GAG9D4C,YAAa,SAAU5C,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAGzB6C,aAAc,SAAU7C,GACtB,MAAO,KAAOA,EAAKA,EAAIA,EAAIA,EAAIA,GAGjC8C,eAAgB,SAAU9C,GACxB,MAAW,GAAJA,EAAS,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,KAAQA,EAAKA,EAAIA,EAAIA,EAAIA,KAMtE,SAAS1O,EAAQD,GASrBA,EAAQ0R,gBAAkB,SAASC,GAEjC,IAAK,GAAIC,KAAeD,GAClBA,EAAcpL,eAAeqL,KAC/BD,EAAcC,GAAaC,UAAYF,EAAcC,GAAaE,KAClEH,EAAcC,GAAaE,UAYjC9R,EAAQ+R,gBAAkB,SAASJ,GAEjC,IAAK,GAAIC,KAAeD,GACtB,GAAIA,EAAcpL,eAAeqL,IAC3BD,EAAcC,GAAaC,UAAW,CACxC,IAAK,GAAI5L,GAAI,EAAGA,EAAI0L,EAAcC,GAAaC,UAAUzL,OAAQH,IAC/D0L,EAAcC,GAAaC,UAAU5L,GAAGsE,WAAWyH,YAAYL,EAAcC,GAAaC,UAAU5L,GAEtG0L,GAAcC,GAAaC,eAgBnC7R,EAAQiS,cAAgB,SAAUL,EAAaD,EAAeO,GAC5D,GAAI3I,EAqBJ,OAnBIoI,GAAcpL,eAAeqL,GAE3BD,EAAcC,GAAaC,UAAUzL,OAAS,GAChDmD,EAAUoI,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrC5I,EAAU6I,SAASC,gBAAgB,6BAA8BT,GACjEM,EAAaI,YAAY/I,KAK3BA,EAAU6I,SAASC,gBAAgB,6BAA8BT,GACjED,EAAcC,IAAgBE,QAAUD,cACxCK,EAAaI,YAAY/I,IAE3BoI,EAAcC,GAAaE,KAAKnJ,KAAKY,GAC9BA,GAcTvJ,EAAQuS,cAAgB,SAAUX,EAAaD,EAAea,EAAcC,GAC1E,GAAIlJ,EA+BJ,OA7BIoI,GAAcpL,eAAeqL,GAE3BD,EAAcC,GAAaC,UAAUzL,OAAS,GAChDmD,EAAUoI,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrC5I,EAAU6I,SAASM,cAAcd,GACZ3K,SAAjBwL,EACFD,EAAaC,aAAalJ,EAASkJ,GAGnCD,EAAaF,YAAY/I,KAM7BA,EAAU6I,SAASM,cAAcd,GACjCD,EAAcC,IAAgBE,QAAUD,cACnB5K,SAAjBwL,EACFD,EAAaC,aAAalJ,EAASkJ,GAGnCD,EAAaF,YAAY/I,IAG7BoI,EAAcC,GAAaE,KAAKnJ,KAAKY,GAC9BA,GAmBTvJ,EAAQ2S,UAAY,SAASC,EAAGC,EAAGC,EAAOnB,EAAeO,EAAca,GACrE,GAAIC,EACkC,WAAlCF,EAAMxD,QAAQ2D,WAAWnF,OAC3BkF,EAAQhT,EAAQiS,cAAc,SAASN,EAAcO,GACrDc,EAAME,eAAe,KAAM,KAAMN,GACjCI,EAAME,eAAe,KAAM,KAAML,GACjCG,EAAME,eAAe,KAAM,IAAK,GAAMJ,EAAMxD,QAAQ2D,WAAWE,QAG/DH,EAAQhT,EAAQiS,cAAc,OAAON,EAAcO,GACnDc,EAAME,eAAe,KAAM,IAAKN,EAAI,GAAIE,EAAMxD,QAAQ2D,WAAWE,MACjEH,EAAME,eAAe,KAAM,IAAKL,EAAI,GAAIC,EAAMxD,QAAQ2D,WAAWE,MACjEH,EAAME,eAAe,KAAM,QAASJ,EAAMxD,QAAQ2D,WAAWE,MAC7DH,EAAME,eAAe,KAAM,SAAUJ,EAAMxD,QAAQ2D,WAAWE,OAGzBlM,SAApC6L,EAAMxD,QAAQ2D,WAAWpF,QAC1BmF,EAAME,eAAe,KAAM,QAASJ,EAAMA,MAAMxD,QAAQ2D,WAAWpF,QAErEmF,EAAME,eAAe,KAAM,QAASJ,EAAMtK,UAAY,SAEtD,IAAI4K,GAAQpT,EAAQiS,cAAc,OAAON,EAAcO,EAqBvD,OApBIa,KACIA,EAASM,UACXT,GAAQG,EAASM,SAGfN,EAASO,UACXT,GAAQE,EAASO,SAEfP,EAASQ,UACXH,EAAMI,YAAcT,EAASQ,SAG3BR,EAASvK,WACX4K,EAAMF,eAAe,KAAM,QAASH,EAASvK,UAAa,WAKhE4K,EAAMF,eAAe,KAAM,IAAKN,GAChCQ,EAAMF,eAAe,KAAM,IAAKL,GACzBG,GAUThT,EAAQyT,QAAU,SAAUb,EAAGC,EAAGa,EAAOC,EAAQnL,EAAWmJ,EAAeO,GACzE,GAAc,GAAVyB,EAAa,CACF,EAATA,IACFA,GAAU,GACVd,GAAKc,EAEP,IAAIC,GAAO5T,EAAQiS,cAAc,OAAON,EAAeO,EACvD0B,GAAKV,eAAe,KAAM,IAAKN,EAAI,GAAMc,GACzCE,EAAKV,eAAe,KAAM,IAAKL,GAC/Be,EAAKV,eAAe,KAAM,QAASQ,GACnCE,EAAKV,eAAe,KAAM,SAAUS,GACpCC,EAAKV,eAAe,KAAM,QAAS1K,MAMnC,SAASvI,EAAQD,EAASM,GAgD9B,QAASW,GAAS4S,EAAMvE,GAetB,IAbIuE,GAASnN,MAAMC,QAAQkN,IAAU9S,EAAKuE,YAAYuO,KACpDvE,EAAUuE,EACVA,EAAO,MAGTzT,KAAK0T,SAAWxE,MAChBlP,KAAK2T,SACL3T,KAAKgG,OAAS,EACdhG,KAAK4T,SAAW5T,KAAK0T,SAASG,SAAW,KACzC7T,KAAK8T,SAID9T,KAAK0T,SAASvM,KAChB,IAAK,GAAIoI,KAASvP,MAAK0T,SAASvM,KAC9B,GAAInH,KAAK0T,SAASvM,KAAKhB,eAAeoJ,GAAQ,CAC5C,GAAIjL,GAAQtE,KAAK0T,SAASvM,KAAKoI,EAE7BvP,MAAK8T,MAAMvE,GADA,QAATjL,GAA4B,WAATA,GAA+B,WAATA,EACvB,OAGAA,EAO5B,GAAItE,KAAK0T,SAASxM,QAChB,KAAM,IAAItD,OAAM,sDAGlB5D,MAAK+T,gBAGDN,GACFzT,KAAKgU,IAAIP,GAGXzT,KAAKiU,WAAW/E,GAvFlB,GAAIvO,GAAOT,EAAoB,GAC3Ba,EAAQb,EAAoB,EAkGhCW,GAAQqT,UAAUD,WAAa,SAAS/E,GAClCA,GAA6BrI,SAAlBqI,EAAQiF,QACjBjF,EAAQiF,SAAU,EAEhBnU,KAAKoU,SACPpU,KAAKoU,OAAOC,gBACLrU,MAAKoU,SAKTpU,KAAKoU,SACRpU,KAAKoU,OAASrT,EAAM4E,OAAO3F,MACzBiL,SAAU,MAAO,SAAU,aAIF,gBAAlBiE,GAAQiF,OACjBnU,KAAKoU,OAAOH,WAAW/E,EAAQiF,UAevCtT,EAAQqT,UAAUI,GAAK,SAASzK,EAAOhB,GACrC,GAAI0L,GAAcvU,KAAK+T,aAAalK,EAC/B0K,KACHA,KACAvU,KAAK+T,aAAalK,GAAS0K,GAG7BA,EAAYhM,MACVM,SAAUA,KAKdhI,EAAQqT,UAAUM,UAAY3T,EAAQqT,UAAUI,GAOhDzT,EAAQqT,UAAUO,IAAM,SAAS5K,EAAOhB,GACtC,GAAI0L,GAAcvU,KAAK+T,aAAalK,EAChC0K,KACFvU,KAAK+T,aAAalK,GAAS0K,EAAYG,OAAO,SAAUrL,GACtD,MAAQA,GAASR,UAAYA,MAMnChI,EAAQqT,UAAUS,YAAc9T,EAAQqT,UAAUO,IASlD5T,EAAQqT,UAAUU,SAAW,SAAU/K,EAAOgL,EAAQC,GACpD,GAAa,KAATjL,EACF,KAAM,IAAIjG,OAAM,yBAGlB,IAAI2Q,KACA1K,KAAS7J,MAAK+T,eAChBQ,EAAcA,EAAYQ,OAAO/U,KAAK+T,aAAalK,KAEjD,KAAO7J,MAAK+T,eACdQ,EAAcA,EAAYQ,OAAO/U,KAAK+T,aAAa,MAGrD,KAAK,GAAIlO,GAAI,EAAGA,EAAI0O,EAAYvO,OAAQH,IAAK,CAC3C,GAAImP,GAAaT,EAAY1O,EACzBmP,GAAWnM,UACbmM,EAAWnM,SAASgB,EAAOgL,EAAQC,GAAY,QAYrDjU,EAAQqT,UAAUF,IAAM,SAAUP,EAAMqB,GACtC,GACIzU,GADA4U,KAEAC,EAAKlV,IAET,IAAIsG,MAAMC,QAAQkN,GAEhB,IAAK,GAAI5N,GAAI,EAAGC,EAAM2N,EAAKzN,OAAYF,EAAJD,EAASA,IAC1CxF,EAAK6U,EAAGC,SAAS1B,EAAK5N,IACtBoP,EAAS1M,KAAKlI,OAGb,IAAIM,EAAKuE,YAAYuO,GAGxB,IAAK,GADD2B,GAAUpV,KAAKqV,gBAAgB5B,GAC1B6B,EAAM,EAAGC,EAAO9B,EAAK+B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDxF,MACK2F,EAAM,EAAGC,EAAON,EAAQpP,OAAc0P,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB3F,GAAKP,GAASkE,EAAKkC,SAASL,EAAKG,GAGnCpV,EAAK6U,EAAGC,SAASrF,GACjBmF,EAAS1M,KAAKlI,OAGb,CAAA,KAAIoT,YAAgB7M,SAMvB,KAAM,IAAIhD,OAAM,mBAJhBvD,GAAK6U,EAAGC,SAAS1B,GACjBwB,EAAS1M,KAAKlI,GAUhB,MAJI4U,GAASjP,QACXhG,KAAK4U,SAAS,OAAQ3S,MAAOgT,GAAWH,GAGnCG,GASTpU,EAAQqT,UAAU0B,OAAS,SAAUnC,EAAMqB,GACzC,GAAIG,MACAY,KACAC,KACAZ,EAAKlV,KACL6T,EAAUqB,EAAGtB,SAEbmC,EAAc,SAAUjG,GAC1B,GAAIzP,GAAKyP,EAAK+D,EACVqB,GAAGvB,MAAMtT,IAEXA,EAAK6U,EAAGc,YAAYlG,GACpB+F,EAAWtN,KAAKlI,GAChByV,EAAYvN,KAAKuH,KAIjBzP,EAAK6U,EAAGC,SAASrF,GACjBmF,EAAS1M,KAAKlI,IAIlB,IAAIiG,MAAMC,QAAQkN,GAEhB,IAAK,GAAI5N,GAAI,EAAGC,EAAM2N,EAAKzN,OAAYF,EAAJD,EAASA,IAC1CkQ,EAAYtC,EAAK5N,QAGhB,IAAIlF,EAAKuE,YAAYuO,GAGxB,IAAK,GADD2B,GAAUpV,KAAKqV,gBAAgB5B,GAC1B6B,EAAM,EAAGC,EAAO9B,EAAK+B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDxF,MACK2F,EAAM,EAAGC,EAAON,EAAQpP,OAAc0P,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB3F,GAAKP,GAASkE,EAAKkC,SAASL,EAAKG,GAGnCM,EAAYjG,OAGX,CAAA,KAAI2D,YAAgB7M,SAKvB,KAAM,IAAIhD,OAAM,mBAHhBmS,GAAYtC,GAad,MAPIwB,GAASjP,QACXhG,KAAK4U,SAAS,OAAQ3S,MAAOgT,GAAWH,GAEtCe,EAAW7P,QACbhG,KAAK4U,SAAS,UAAW3S,MAAO4T,EAAYpC,KAAMqC,GAAchB,GAG3DG,EAASF,OAAOc,IAsCzBhV,EAAQqT,UAAU+B,IAAM,WACtB,GAGI5V,GAAI6V,EAAKhH,EAASuE,EAHlByB,EAAKlV,KAILmW,EAAYxV,EAAK6G,QAAQzB,UAAU,GACtB,WAAboQ,GAAsC,UAAbA,GAE3B9V,EAAK0F,UAAU,GACfmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,IAEG,SAAboQ,GAEPD,EAAMnQ,UAAU,GAChBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,KAIjBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,GAInB,IAAIqQ,EACJ,IAAIlH,GAAWA,EAAQkH,WAAY,CACjC,GAAIC,IAAiB,YAAa,QAAS,SAG3C,IAFAD,EAA0D,IAA7CC,EAAcrP,QAAQkI,EAAQkH,YAAoB,QAAUlH,EAAQkH,WAE7E3C,GAAS2C,GAAczV,EAAK6G,QAAQiM,GACtC,KAAM,IAAI7P,OAAM,6BAA+BjD,EAAK6G,QAAQiM,GAAQ,sDACVvE,EAAQ/H,KAAO,IAE3E,IAAkB,aAAdiP,IAA8BzV,EAAKuE,YAAYuO,GACjD,KAAM,IAAI7P,OAAM,6EAKlBwS,GADO3C,GAC6B,aAAtB9S,EAAK6G,QAAQiM,GAAwB,YAGtC,OAIf,IAEgB3D,GAAMwG,EAAQzQ,EAAGC,EAF7BqB,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChDuN,EAASxF,GAAWA,EAAQwF,OAC5BzS,IAGJ,IAAU4E,QAANxG,EAEFyP,EAAOoF,EAAGqB,SAASlW,EAAI8G,GACnBuN,IAAWA,EAAO5E,KACpBA,EAAO,UAGN,IAAWjJ,QAAPqP,EAEP,IAAKrQ,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCiK,EAAOoF,EAAGqB,SAASL,EAAIrQ,GAAIsB,KACtBuN,GAAUA,EAAO5E,KACpB7N,EAAMsG,KAAKuH,OAMf,KAAKwG,IAAUtW,MAAK2T,MACd3T,KAAK2T,MAAMxN,eAAemQ,KAC5BxG,EAAOoF,EAAGqB,SAASD,EAAQnP,KACtBuN,GAAUA,EAAO5E,KACpB7N,EAAMsG,KAAKuH,GAYnB,IALIZ,GAAWA,EAAQsH,OAAe3P,QAANxG,GAC9BL,KAAKyW,MAAMxU,EAAOiN,EAAQsH,OAIxBtH,GAAWA,EAAQP,OAAQ,CAC7B,GAAIA,GAASO,EAAQP,MACrB,IAAU9H,QAANxG,EACFyP,EAAO9P,KAAK0W,cAAc5G,EAAMnB,OAGhC,KAAK9I,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvC5D,EAAM4D,GAAK7F,KAAK0W,cAAczU,EAAM4D,GAAI8I,GAM9C,GAAkB,aAAdyH,EAA2B,CAC7B,GAAIhB,GAAUpV,KAAKqV,gBAAgB5B,EACnC,IAAU5M,QAANxG,EAEF6U,EAAGyB,WAAWlD,EAAM2B,EAAStF,OAI7B,KAAKjK,EAAI,EAAGA,EAAI5D,EAAM+D,OAAQH,IAC5BqP,EAAGyB,WAAWlD,EAAM2B,EAASnT,EAAM4D,GAGvC,OAAO4N,GAEJ,GAAkB,UAAd2C,EAAwB,CAC/B,GAAIhL,KACJ,KAAKvF,EAAI,EAAGA,EAAI5D,EAAM+D,OAAQH,IAC5BuF,EAAOnJ,EAAM4D,GAAGxF,IAAM4B,EAAM4D,EAE9B,OAAOuF,GAIP,GAAUvE,QAANxG,EAEF,MAAOyP,EAIP,IAAI2D,EAAM,CAER,IAAK5N,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvC4N,EAAKlL,KAAKtG,EAAM4D,GAElB,OAAO4N,GAIP,MAAOxR,IAcfpB,EAAQqT,UAAU0C,OAAS,SAAU1H,GACnC,GAIIrJ,GACAC,EACAzF,EACAyP,EACA7N,EARAwR,EAAOzT,KAAK2T,MACZe,EAASxF,GAAWA,EAAQwF,OAC5B8B,EAAQtH,GAAWA,EAAQsH,MAC3BrP,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAMhD+O,IAEJ,IAAIxB,EAEF,GAAI8B,EAAO,CAETvU,IACA,KAAK5B,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,GACrBuN,EAAO5E,IACT7N,EAAMsG,KAAKuH,GAOjB,KAFA9P,KAAKyW,MAAMxU,EAAOuU,GAEb3Q,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvCqQ,EAAIrQ,GAAK5D,EAAM4D,GAAG7F,KAAK4T,cAKzB,KAAKvT,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,GACrBuN,EAAO5E,IACToG,EAAI3N,KAAKuH,EAAK9P,KAAK4T,gBAQ3B,IAAI4C,EAAO,CAETvU,IACA,KAAK5B,IAAMoT,GACLA,EAAKtN,eAAe9F,IACtB4B,EAAMsG,KAAKkL,EAAKpT,GAMpB,KAFAL,KAAKyW,MAAMxU,EAAOuU,GAEb3Q,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvCqQ,EAAIrQ,GAAK5D,EAAM4D,GAAG7F,KAAK4T,cAKzB,KAAKvT,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO2D,EAAKpT,GACZ6V,EAAI3N,KAAKuH,EAAK9P,KAAK4T,WAM3B,OAAOsC,IAOTrV,EAAQqT,UAAU2C,WAAa,WAC7B,MAAO7W,OAaTa,EAAQqT,UAAUtL,QAAU,SAAUC,EAAUqG,GAC9C,GAGIY,GACAzP,EAJAqU,EAASxF,GAAWA,EAAQwF,OAC5BvN,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChDsM,EAAOzT,KAAK2T,KAIhB,IAAIzE,GAAWA,EAAQsH,MAIrB,IAAK,GAFDvU,GAAQjC,KAAKiW,IAAI/G,GAEZrJ,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IAC3CiK,EAAO7N,EAAM4D,GACbxF,EAAKyP,EAAK9P,KAAK4T,UACf/K,EAASiH,EAAMzP,OAKjB,KAAKA,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,KACpBuN,GAAUA,EAAO5E,KACpBjH,EAASiH,EAAMzP,KAkBzBQ,EAAQqT,UAAUpG,IAAM,SAAUjF,EAAUqG,GAC1C,GAIIY,GAJA4E,EAASxF,GAAWA,EAAQwF,OAC5BvN,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChD2P,KACArD,EAAOzT,KAAK2T,KAIhB,KAAK,GAAItT,KAAMoT,GACTA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,KACpBuN,GAAUA,EAAO5E,KACpBgH,EAAYvO,KAAKM,EAASiH,EAAMzP,IAUtC,OAJI6O,IAAWA,EAAQsH,OACrBxW,KAAKyW,MAAMK,EAAa5H,EAAQsH,OAG3BM,GAUTjW,EAAQqT,UAAUwC,cAAgB,SAAU5G,EAAMnB,GAChD,IAAKmB,EACH,MAAOA,EAGT,IAAIiH,KAEJ,IAAGzQ,MAAMC,QAAQoI,GACf,IAAK,GAAIY,KAASO,GACZA,EAAK3J,eAAeoJ,IAAoC,IAAzBZ,EAAO3H,QAAQuI,KAChDwH,EAAaxH,GAASO,EAAKP,QAI/B,KAAK,GAAIA,KAASO,GACZA,EAAK3J,eAAeoJ,IAAUZ,EAAOxI,eAAeoJ,KACtDwH,EAAapI,EAAOY,IAAUO,EAAKP,GAKzC,OAAOwH,IASTlW,EAAQqT,UAAUuC,MAAQ,SAAUxU,EAAOuU,GACzC,GAAI7V,EAAK8D,SAAS+R,GAAQ,CAExB,GAAIQ,GAAOR,CACXvU,GAAMgV,KAAK,SAAUrR,EAAGa,GACtB,GAAIyQ,GAAKtR,EAAEoR,GACPG,EAAK1Q,EAAEuQ,EACX,OAAQE,GAAKC,EAAM,EAAWA,EAALD,EAAW,GAAK,QAGxC,CAAA,GAAqB,kBAAVV,GAOd,KAAM,IAAI9P,WAAU,uCALpBzE,GAAMgV,KAAKT,KAgBf3V,EAAQqT,UAAUkD,OAAS,SAAU/W,EAAIyU,GACvC,GACIjP,GAAGC,EAAKuR,EADRC,IAGJ,IAAIhR,MAAMC,QAAQlG,GAChB,IAAKwF,EAAI,EAAGC,EAAMzF,EAAG2F,OAAYF,EAAJD,EAASA,IACpCwR,EAAYrX,KAAKuX,QAAQlX,EAAGwF,IACX,MAAbwR,GACFC,EAAW/O,KAAK8O,OAKpBA,GAAYrX,KAAKuX,QAAQlX,GACR,MAAbgX,GACFC,EAAW/O,KAAK8O,EAQpB,OAJIC,GAAWtR,QACbhG,KAAK4U,SAAS,UAAW3S,MAAOqV,GAAaxC,GAGxCwC,GASTzW,EAAQqT,UAAUqD,QAAU,SAAUlX,GACpC,GAAIM,EAAKoD,SAAS1D,IAAOM,EAAK8D,SAASpE,IACrC,GAAIL,KAAK2T,MAAMtT,GAGb,aAFOL,MAAK2T,MAAMtT,GAClBL,KAAKgG,SACE3F,MAGN,IAAIA,YAAcuG,QAAQ,CAC7B,GAAI0P,GAASjW,EAAGL,KAAK4T,SACrB,IAAI0C,GAAUtW,KAAK2T,MAAM2C,GAGvB,aAFOtW,MAAK2T,MAAM2C,GAClBtW,KAAKgG,SACEsQ,EAGX,MAAO,OAQTzV,EAAQqT,UAAUsD,MAAQ,SAAU1C,GAClC,GAAIoB,GAAMtP,OAAOiH,KAAK7N,KAAK2T,MAO3B,OALA3T,MAAK2T,SACL3T,KAAKgG,OAAS,EAEdhG,KAAK4U,SAAS,UAAW3S,MAAOiU,GAAMpB,GAE/BoB,GAQTrV,EAAQqT,UAAU9P,IAAM,SAAUmL,GAChC,GAAIkE,GAAOzT,KAAK2T,MACZvP,EAAM,KACNqT,EAAW,IAEf,KAAK,GAAIpX,KAAMoT,GACb,GAAIA,EAAKtN,eAAe9F,GAAK,CAC3B,GAAIyP,GAAO2D,EAAKpT,GACZqX,EAAY5H,EAAKP,EACJ,OAAbmI,KAAuBtT,GAAOsT,EAAYD,KAC5CrT,EAAM0L,EACN2H,EAAWC,GAKjB,MAAOtT,IAQTvD,EAAQqT,UAAU/P,IAAM,SAAUoL,GAChC,GAAIkE,GAAOzT,KAAK2T,MACZxP,EAAM,KACNwT,EAAW,IAEf,KAAK,GAAItX,KAAMoT,GACb,GAAIA,EAAKtN,eAAe9F,GAAK,CAC3B,GAAIyP,GAAO2D,EAAKpT,GACZqX,EAAY5H,EAAKP,EACJ,OAAbmI,KAAuBvT,GAAmBwT,EAAZD,KAChCvT,EAAM2L,EACN6H,EAAWD,GAKjB,MAAOvT,IAUTtD,EAAQqT,UAAU0D,SAAW,SAAUrI,GACrC,GAII1J,GAJA4N,EAAOzT,KAAK2T,MACZkE,KACAC,EAAY9X,KAAK0T,SAASvM,MAAQnH,KAAK0T,SAASvM,KAAKoI,IAAU,KAC/DwI,EAAQ,CAGZ,KAAK,GAAI7R,KAAQuN,GACf,GAAIA,EAAKtN,eAAeD,GAAO,CAC7B,GAAI4J,GAAO2D,EAAKvN,GACZ5B,EAAQwL,EAAKP,GACbyI,GAAS,CACb,KAAKnS,EAAI,EAAOkS,EAAJlS,EAAWA,IACrB,GAAIgS,EAAOhS,IAAMvB,EAAO,CACtB0T,GAAS,CACT,OAGCA,GAAqBnR,SAAVvC,IACduT,EAAOE,GAASzT,EAChByT,KAKN,GAAID,EACF,IAAKjS,EAAI,EAAGA,EAAIgS,EAAO7R,OAAQH,IAC7BgS,EAAOhS,GAAKlF,EAAKuG,QAAQ2Q,EAAOhS,GAAIiS,EAIxC,OAAOD,IASThX,EAAQqT,UAAUiB,SAAW,SAAUrF,GACrC,GAAIzP,GAAKyP,EAAK9P,KAAK4T,SAEnB,IAAU/M,QAANxG,GAEF,GAAIL,KAAK2T,MAAMtT,GAEb,KAAM,IAAIuD,OAAM,iCAAmCvD,EAAK,uBAK1DA,GAAKM,EAAK2E,aACVwK,EAAK9P,KAAK4T,UAAYvT,CAGxB,IAAI+M,KACJ,KAAK,GAAImC,KAASO,GAChB,GAAIA,EAAK3J,eAAeoJ,GAAQ,CAC9B,GAAIuI,GAAY9X,KAAK8T,MAAMvE,EAC3BnC,GAAEmC,GAAS5O,EAAKuG,QAAQ4I,EAAKP,GAAQuI,GAMzC,MAHA9X,MAAK2T,MAAMtT,GAAM+M,EACjBpN,KAAKgG,SAEE3F,GAUTQ,EAAQqT,UAAUqC,SAAW,SAAUlW,EAAI4X,GACzC,GAAI1I,GAAOjL,EAGP4T,EAAMlY,KAAK2T,MAAMtT,EACrB,KAAK6X,EACH,MAAO,KAIT,IAAIC,KACJ,IAAIF,EACF,IAAK1I,IAAS2I,GACRA,EAAI/R,eAAeoJ,KACrBjL,EAAQ4T,EAAI3I,GACZ4I,EAAU5I,GAAS5O,EAAKuG,QAAQ5C,EAAO2T,EAAM1I,SAMjD,KAAKA,IAAS2I,GACRA,EAAI/R,eAAeoJ,KACrBjL,EAAQ4T,EAAI3I,GACZ4I,EAAU5I,GAASjL,EAIzB,OAAO6T,IAWTtX,EAAQqT,UAAU8B,YAAc,SAAUlG,GACxC,GAAIzP,GAAKyP,EAAK9P,KAAK4T,SACnB,IAAU/M,QAANxG,EACF,KAAM,IAAIuD,OAAM,6CAA+CwU,KAAKC,UAAUvI,GAAQ,IAExF,IAAI1C,GAAIpN,KAAK2T,MAAMtT,EACnB,KAAK+M,EAEH,KAAM,IAAIxJ,OAAM,uCAAyCvD,EAAK,SAIhE,KAAK,GAAIkP,KAASO,GAChB,GAAIA,EAAK3J,eAAeoJ,GAAQ,CAC9B,GAAIuI,GAAY9X,KAAK8T,MAAMvE,EAC3BnC,GAAEmC,GAAS5O,EAAKuG,QAAQ4I,EAAKP,GAAQuI,GAIzC,MAAOzX,IASTQ,EAAQqT,UAAUmB,gBAAkB,SAAUiD,GAE5C,IAAK,GADDlD,MACKK,EAAM,EAAGC,EAAO4C,EAAUC,qBAA4B7C,EAAND,EAAYA,IACnEL,EAAQK,GAAO6C,EAAUE,YAAY/C,IAAQ6C,EAAUG,eAAehD,EAExE,OAAOL,IAUTvU,EAAQqT,UAAUyC,WAAa,SAAU2B,EAAWlD,EAAStF,GAG3D,IAAK,GAFDwF,GAAMgD,EAAUI,SAEXjD,EAAM,EAAGC,EAAON,EAAQpP,OAAc0P,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB6C,GAAUK,SAASrD,EAAKG,EAAK3F,EAAKP,MAItC1P,EAAOD,QAAUiB,GAKb,SAAShB,EAAQD,EAASM,GAe9B,QAASY,GAAU2S,EAAMvE,GACvBlP,KAAK2T,MAAQ,KACb3T,KAAK4Y,QACL5Y,KAAKgG,OAAS,EACdhG,KAAK0T,SAAWxE,MAChBlP,KAAK4T,SAAW,KAChB5T,KAAK+T,eAEL,IAAImB,GAAKlV,IACTA,MAAKqJ,SAAW,WACd6L,EAAG2D,SAASC,MAAM5D,EAAInP,YAGxB/F,KAAK+Y,QAAQtF,GA1Bf,GAAI9S,GAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,EAmClCY,GAASoT,UAAU6E,QAAU,SAAUtF,GACrC,GAAIyC,GAAKrQ,EAAGC,CAEZ,IAAI9F,KAAK2T,MAAO,CAEV3T,KAAK2T,MAAMgB,aACb3U,KAAK2T,MAAMgB,YAAY,IAAK3U,KAAKqJ,UAInC6M,IACA,KAAK,GAAI7V,KAAML,MAAK4Y,KACd5Y,KAAK4Y,KAAKzS,eAAe9F,IAC3B6V,EAAI3N,KAAKlI,EAGbL,MAAK4Y,QACL5Y,KAAKgG,OAAS,EACdhG,KAAK4U,SAAS,UAAW3S,MAAOiU,IAKlC,GAFAlW,KAAK2T,MAAQF,EAETzT,KAAK2T,MAAO,CAQd,IANA3T,KAAK4T,SAAW5T,KAAK0T,SAASG,SACzB7T,KAAK2T,OAAS3T,KAAK2T,MAAMzE,SAAWlP,KAAK2T,MAAMzE,QAAQ2E,SACxD,KAGJqC,EAAMlW,KAAK2T,MAAMiD,QAAQlC,OAAQ1U,KAAK0T,UAAY1T,KAAK0T,SAASgB,SAC3D7O,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACT7F,KAAK4Y,KAAKvY,IAAM,CAElBL,MAAKgG,OAASkQ,EAAIlQ,OAClBhG,KAAK4U,SAAS,OAAQ3S,MAAOiU,IAGzBlW,KAAK2T,MAAMW,IACbtU,KAAK2T,MAAMW,GAAG,IAAKtU,KAAKqJ,YAS9BvI,EAASoT,UAAU8E,QAAU,WAQ3B,IAAK,GAPD3Y,GACA6V,EAAMlW,KAAK2T,MAAMiD,QAAQlC,OAAQ1U,KAAK0T,UAAY1T,KAAK0T,SAASgB,SAChEuE,KACAC,KACAC,KAGKtT,EAAI,EAAGA,EAAIqQ,EAAIlQ,OAAQH,IAC9BxF,EAAK6V,EAAIrQ,GACToT,EAAO5Y,IAAM,EACRL,KAAK4Y,KAAKvY,KACb6Y,EAAM3Q,KAAKlI,GACXL,KAAK4Y,KAAKvY,IAAM,EAChBL,KAAKgG,SAKT,KAAK3F,IAAML,MAAK4Y,KACV5Y,KAAK4Y,KAAKzS,eAAe9F,KACtB4Y,EAAO5Y,KACV8Y,EAAQ5Q,KAAKlI,SACNL,MAAK4Y,KAAKvY,GACjBL,KAAKgG,UAMPkT,GAAMlT,QACRhG,KAAK4U,SAAS,OAAQ3S,MAAOiX,IAE3BC,EAAQnT,QACVhG,KAAK4U,SAAS,UAAW3S,MAAOkX,KAsCpCrY,EAASoT,UAAU+B,IAAM,WACvB,GAGIC,GAAKhH,EAASuE,EAHdyB,EAAKlV,KAILmW,EAAYxV,EAAK6G,QAAQzB,UAAU,GACtB,WAAboQ,GAAsC,UAAbA,GAAsC,SAAbA,GAEpDD,EAAMnQ,UAAU,GAChBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,KAIjBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,GAInB,IAAIqT,GAAczY,EAAKgF,UAAW3F,KAAK0T,SAAUxE,EAG7ClP,MAAK0T,SAASgB,QAAUxF,GAAWA,EAAQwF,SAC7C0E,EAAY1E,OAAS,SAAU5E,GAC7B,MAAOoF,GAAGxB,SAASgB,OAAO5E,IAASZ,EAAQwF,OAAO5E,IAKtD,IAAIuJ,KAOJ,OANWxS,SAAPqP,GACFmD,EAAa9Q,KAAK2N,GAEpBmD,EAAa9Q,KAAK6Q,GAClBC,EAAa9Q,KAAKkL,GAEXzT,KAAK2T,OAAS3T,KAAK2T,MAAMsC,IAAI6C,MAAM9Y,KAAK2T,MAAO0F,IAWxDvY,EAASoT,UAAU0C,OAAS,SAAU1H,GACpC,GAAIgH,EAEJ,IAAIlW,KAAK2T,MAAO,CACd,GACIe,GADA4E,EAAgBtZ,KAAK0T,SAASgB,MAK9BA,GAFAxF,GAAWA,EAAQwF,OACjB4E,EACO,SAAUxJ,GACjB,MAAOwJ,GAAcxJ,IAASZ,EAAQwF,OAAO5E,IAItCZ,EAAQwF,OAIV4E,EAGXpD,EAAMlW,KAAK2T,MAAMiD,QACflC,OAAQA,EACR8B,MAAOtH,GAAWA,EAAQsH,YAI5BN,KAGF,OAAOA,IAQTpV,EAASoT,UAAU2C,WAAa,WAE9B,IADA,GAAI0C,GAAUvZ,KACPuZ,YAAmBzY,IACxByY,EAAUA,EAAQ5F,KAEpB,OAAO4F,IAAW,MAYpBzY,EAASoT,UAAU2E,SAAW,SAAUhP,EAAOgL,EAAQC,GACrD,GAAIjP,GAAGC,EAAKzF,EAAIyP,EACZoG,EAAMrB,GAAUA,EAAO5S,MACvBwR,EAAOzT,KAAK2T,MACZmC,KACAoD,KACAM,KACAL,IAEJ,IAAIjD,GAAOzC,EAAM,CACf,OAAQ5J,GACN,IAAK,MAEH,IAAKhE,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACTiK,EAAO9P,KAAKiW,IAAI5V,GACZyP,IACF9P,KAAK4Y,KAAKvY,IAAM,EAChB6Y,EAAM3Q,KAAKlI,GAIf,MAEF,KAAK,SAGH,IAAKwF,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACTiK,EAAO9P,KAAKiW,IAAI5V,GAEZyP,EACE9P,KAAK4Y,KAAKvY,IACZmZ,EAAQjR,KAAKlI,GACbyV,EAAYvN,KAAKsM,EAAOpB,KAAK5N,MAG7B7F,KAAK4Y,KAAKvY,IAAM,EAChB6Y,EAAM3Q,KAAKlI,IAITL,KAAK4Y,KAAKvY,WACLL,MAAK4Y,KAAKvY,GACjB8Y,EAAQ5Q,KAAKlI,GAQnB,MAEF,KAAK,SAEH,IAAKwF,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACL7F,KAAK4Y,KAAKvY,WACLL,MAAK4Y,KAAKvY,GACjB8Y,EAAQ5Q,KAAKlI,IAOrBL,KAAKgG,QAAUkT,EAAMlT,OAASmT,EAAQnT,OAElCkT,EAAMlT,QACRhG,KAAK4U,SAAS,OAAQ3S,MAAOiX,GAAQpE,GAEnC0E,EAAQxT,QACVhG,KAAK4U,SAAS,UAAW3S,MAAOuX,EAAS/F,KAAMqC,GAAchB,GAE3DqE,EAAQnT,QACVhG,KAAK4U,SAAS,UAAW3S,MAAOkX,GAAUrE,KAMhDhU,EAASoT,UAAUI,GAAKzT,EAAQqT,UAAUI,GAC1CxT,EAASoT,UAAUO,IAAM5T,EAAQqT,UAAUO,IAC3C3T,EAASoT,UAAUU,SAAW/T,EAAQqT,UAAUU,SAGhD9T,EAASoT,UAAUM,UAAY1T,EAASoT,UAAUI,GAClDxT,EAASoT,UAAUS,YAAc7T,EAASoT,UAAUO,IAEpD5U,EAAOD,QAAUkB,GAIb,SAASjB,GAeb,QAASkB,GAAMmO,GAEblP,KAAKyZ,MAAQ,KACbzZ,KAAKoE,IAAMsV,IAGX1Z,KAAKoU,UACLpU,KAAK2Z,SAAW,KAChB3Z,KAAK4Z,UAAY,KAEjB5Z,KAAKiU,WAAW/E,GAgBlBnO,EAAMmT,UAAUD,WAAa,SAAU/E,GACjCA,GAAoC,mBAAlBA,GAAQuK,QAC5BzZ,KAAKyZ,MAAQvK,EAAQuK,OAEnBvK,GAAkC,mBAAhBA,GAAQ9K,MAC5BpE,KAAKoE,IAAM8K,EAAQ9K,KAGrBpE,KAAK6Z,kBAsBP9Y,EAAM4E,OAAS,SAAU3B,EAAQkL,GAC/B,GAAIiF,GAAQ,GAAIpT,GAAMmO,EAEtB,IAAqBrI,SAAjB7C,EAAO8V,MACT,KAAM,IAAIlW,OAAM,6CAElBI,GAAO8V,MAAQ,WACb3F,EAAM2F,QAGR,IAAIC,KACF/C,KAAM,QACNgD,SAAUnT,QAGZ,IAAIqI,GAAWA,EAAQjE,QACrB,IAAK,GAAIpF,GAAI,EAAGA,EAAIqJ,EAAQjE,QAAQjF,OAAQH,IAAK,CAC/C,GAAImR,GAAO9H,EAAQjE,QAAQpF,EAC3BkU,GAAQxR,MACNyO,KAAMA,EACNgD,SAAUhW,EAAOgT,KAEnB7C,EAAMlJ,QAAQjH,EAAQgT,GAS1B,MALA7C,GAAMyF,WACJ5V,OAAQA,EACR+V,QAASA,GAGJ5F,GAOTpT,EAAMmT,UAAUG,QAAU,WAGxB,GAFArU,KAAK8Z,QAED9Z,KAAK4Z,UAAW,CAGlB,IAAK,GAFD5V,GAAShE,KAAK4Z,UAAU5V,OACxB+V,EAAU/Z,KAAK4Z,UAAUG,QACpBlU,EAAI,EAAGA,EAAIkU,EAAQ/T,OAAQH,IAAK,CACvC,GAAIoU,GAASF,EAAQlU,EACjBoU,GAAOD,SACThW,EAAOiW,EAAOjD,MAAQiD,EAAOD,eAGtBhW,GAAOiW,EAAOjD,MAGzBhX,KAAK4Z,UAAY,OASrB7Y,EAAMmT,UAAUjJ,QAAU,SAASjH,EAAQiW,GACzC,GAAI/E,GAAKlV,KACLga,EAAWhW,EAAOiW,EACtB,KAAKD,EACH,KAAM,IAAIpW,OAAM,UAAYqW,EAAS,aAGvCjW,GAAOiW,GAAU,WAGf,IAAK,GADDC,MACKrU,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IACpCqU,EAAKrU,GAAKE,UAAUF,EAItBqP,GAAGf,OACD+F,KAAMA,EACNC,GAAIH,EACJI,QAASpa,SASfe,EAAMmT,UAAUC,MAAQ,SAASkG,GAE7Bra,KAAKoU,OAAO7L,KADO,kBAAV8R,IACSF,GAAIE,GAGLA,GAGnBra,KAAK6Z,kBAOP9Y,EAAMmT,UAAU2F,eAAiB,WAQ/B,GANI7Z,KAAKoU,OAAOpO,OAAShG,KAAKoE,KAC5BpE,KAAK8Z,QAIPQ,aAAata,KAAK2Z,UACd3Z,KAAKmU,MAAMnO,OAAS,GAA2B,gBAAfhG,MAAKyZ,MAAoB,CAC3D,GAAIvE,GAAKlV,IACTA,MAAK2Z,SAAWY,WAAW,WACzBrF,EAAG4E,SACF9Z,KAAKyZ,SAOZ1Y,EAAMmT,UAAU4F,MAAQ,WACtB,KAAO9Z,KAAKoU,OAAOpO,OAAS,GAAG,CAC7B,GAAIqU,GAAQra,KAAKoU,OAAOrC,OACxBsI,GAAMF,GAAGrB,MAAMuB,EAAMD,SAAWC,EAAMF,GAAIE,EAAMH,YAIpDra,EAAOD,QAAUmB,GAKb,SAASlB,EAAQD,EAASM,GAwB9B,QAASc,GAAQwZ,EAAW/G,EAAMvE,GAChC,KAAMlP,eAAgBgB,IACpB,KAAM,IAAIyZ,aAAY,mDAIxBza,MAAK0a,iBAAmBF,EACxBxa,KAAKsT,MAAQ,QACbtT,KAAKuT,OAAS,QACdvT,KAAK2a,OAAS,GACd3a,KAAK4a,eAAiB,MACtB5a,KAAK6a,eAAiB,MAEtB7a,KAAK8a,OAAS,IACd9a,KAAK+a,OAAS,IACd/a,KAAKgb,OAAS,GAEd,IAAIC,GAAc,SAASzO,GAAK,MAAOA,GACvCxM,MAAKkb,YAAcD,EACnBjb,KAAKmb,YAAcF,EACnBjb,KAAKob,YAAcH,EAEnBjb,KAAKqb,YAAc,OACnBrb,KAAKsb,YAAc,QAEnBtb,KAAK0N,MAAQ1M,EAAQua,MAAMC,IAC3Bxb,KAAKyb,iBAAkB,EACvBzb,KAAK0b,UAAW,EAChB1b,KAAK2b,iBAAkB,EACvB3b,KAAK4b,YAAa,EAClB5b,KAAK6b,gBAAiB,EACtB7b,KAAK8b,aAAc,EACnB9b,KAAK+b,cAAgB,GAErB/b,KAAKgc,kBAAoB,IACzBhc,KAAKic,kBAAmB,EAExBjc,KAAKkc,OAAS,GAAIhb,GAClBlB,KAAKmc,IAAM,GAAI9a,GAAQ,EAAG,EAAG,IAE7BrB,KAAKsY,UAAY,KACjBtY,KAAKoc,WAAa,KAGlBpc,KAAKqc,KAAOxV,OACZ7G,KAAKsc,KAAOzV,OACZ7G,KAAKuc,KAAO1V,OACZ7G,KAAKwc,SAAW3V,OAChB7G,KAAKyc,UAAY5V,OAEjB7G,KAAK0c,KAAO,EACZ1c,KAAK2c,MAAQ9V,OACb7G,KAAK4c,KAAO,EACZ5c,KAAK6c,KAAO,EACZ7c,KAAK8c,MAAQjW,OACb7G,KAAK+c,KAAO,EACZ/c,KAAKgd,KAAO,EACZhd,KAAKid,MAAQpW,OACb7G,KAAKkd,KAAO,EACZld,KAAKmd,SAAW,EAChBnd,KAAKod,SAAW,EAChBpd,KAAKqd,UAAY,EACjBrd,KAAKsd,UAAY,EAIjBtd,KAAKud,UAAY,UACjBvd,KAAKwd,UAAY,UACjBxd,KAAKyd,SAAW,UAChBzd,KAAK0d,eAAiB,UAGtB1d,KAAK8O,SAGL9O,KAAKiU,WAAW/E,GAGZuE,GACFzT,KAAK+Y,QAAQtF,GAknEjB,QAASkK,GAAW9T,GAClB,MAAI,WAAaA,GAAcA,EAAM+T,QAC9B/T,EAAMgU,cAAc,IAAMhU,EAAMgU,cAAc,GAAGD,SAAW,EAQrE,QAASE,GAAWjU,GAClB,MAAI,WAAaA,GAAcA,EAAMkU,QAC9BlU,EAAMgU,cAAc,IAAMhU,EAAMgU,cAAc,GAAGE,SAAW,EAnuErE,GAAIC,GAAU9d,EAAoB,IAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BS,EAAOT,EAAoB,GAC3BmB,EAAUnB,EAAoB,IAC9BkB,EAAUlB,EAAoB,GAC9BgB,EAAShB,EAAoB,GAC7BiB,EAASjB,EAAoB,GAC7BoB,EAASpB,EAAoB,IAC7BqB,EAAarB,EAAoB,GAiGrC8d,GAAQhd,EAAQkT,WAKhBlT,EAAQkT,UAAU+J,UAAY,WAC5Bje,KAAKuE,MAAQ,GAAIlD,GAAQ,GAAKrB,KAAK4c,KAAO5c,KAAK0c,MAC7C,GAAK1c,KAAK+c,KAAO/c,KAAK6c,MACtB,GAAK7c,KAAKkd,KAAOld,KAAKgd,OAGpBhd,KAAK2b,kBACH3b,KAAKuE,MAAMiO,EAAIxS,KAAKuE,MAAMkO,EAE5BzS,KAAKuE,MAAMkO,EAAIzS,KAAKuE,MAAMiO,EAI1BxS,KAAKuE,MAAMiO,EAAIxS,KAAKuE,MAAMkO,GAK9BzS,KAAKuE,MAAM2Z,GAAKle,KAAK+b,cAIrB/b,KAAKuE,MAAMD,MAAQ,GAAKtE,KAAKod,SAAWpd,KAAKmd,SAG7C,IAAIgB,IAAWne,KAAK4c,KAAO5c,KAAK0c,MAAQ,EAAI1c,KAAKuE,MAAMiO,EACnD4L,GAAWpe,KAAK+c,KAAO/c,KAAK6c,MAAQ,EAAI7c,KAAKuE,MAAMkO,EACnD4L,GAAWre,KAAKkd,KAAOld,KAAKgd,MAAQ,EAAIhd,KAAKuE,MAAM2Z,CACvDle,MAAKkc,OAAOoC,eAAeH,EAASC,EAASC,IAU/Crd,EAAQkT,UAAUqK,eAAiB,SAASC,GAC1C,GAAIC,GAAcze,KAAK0e,2BAA2BF,EAClD,OAAOxe,MAAK2e,4BAA4BF,IAW1Czd,EAAQkT,UAAUwK,2BAA6B,SAASF,GACtD,GAAII,GAAKJ,EAAQhM,EAAIxS,KAAKuE,MAAMiO,EAC9BqM,EAAKL,EAAQ/L,EAAIzS,KAAKuE,MAAMkO,EAC5BqM,EAAKN,EAAQN,EAAIle,KAAKuE,MAAM2Z,EAE5Ba,EAAK/e,KAAKkc,OAAO8C,oBAAoBxM,EACrCyM,EAAKjf,KAAKkc,OAAO8C,oBAAoBvM,EACrCyM,EAAKlf,KAAKkc,OAAO8C,oBAAoBd,EAGrCiB,EAAQ3a,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoB7M,GACjD8M,EAAQ9a,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoB7M,GACjDgN,EAAQhb,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoB5M,GACjDgN,EAAQjb,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoB5M,GACjDiN,EAAQlb,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoBnB,GACjDyB,EAAQnb,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoBnB,GAGjD0B,EAAKH,GAASC,GAASb,EAAKI,GAAMU,GAASf,EAAKG,IAAOS,GAASV,EAAKI,GACrEW,EAAKV,GAASM,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQO,GAASK,GAASd,EAAKI,GAAMS,GAASd,EAAGG,IAC9He,EAAKR,GAASG,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQI,GAASQ,GAASd,EAAKI,GAAMS,GAASd,EAAGG,GAEhI,OAAO,IAAI1d,GAAQue,EAAIC,EAAIC,IAU7B9e,EAAQkT,UAAUyK,4BAA8B,SAASF,GACvD,GAQIsB,GACAC,EATAC,EAAKjgB,KAAKmc,IAAI3J,EAChB0N,EAAKlgB,KAAKmc,IAAI1J,EACd0N,EAAKngB,KAAKmc,IAAI+B,EACd0B,EAAKnB,EAAYjM,EACjBqN,EAAKpB,EAAYhM,EACjBqN,EAAKrB,EAAYP,CAgBnB,OAXIle,MAAKyb,iBACPsE,GAAMH,EAAKK,IAAOE,EAAKL,GACvBE,GAAMH,EAAKK,IAAOC,EAAKL,KAGvBC,EAAKH,IAAOO,EAAKngB,KAAKkc,OAAOkE,gBAC7BJ,EAAKH,IAAOM,EAAKngB,KAAKkc,OAAOkE,iBAKxB,GAAIhf,GACTpB,KAAKqgB,QAAUN,EAAK/f,KAAKsgB,MAAMC,OAAOC,YACtCxgB,KAAKygB,QAAUT,EAAKhgB,KAAKsgB,MAAMC,OAAOC,cAO1Cxf,EAAQkT,UAAUwM,oBAAsB,SAASC,GAC/C,GAAIC,GAAO,QACPC,EAAS,OACTC,EAAc,CAElB,IAAgC,gBAAtB,GACRF,EAAOD,EACPE,EAAS,OACTC,EAAc,MAEX,IAAgC,gBAAtB,GACgBja,SAAzB8Z,EAAgBC,OAAuBA,EAAOD,EAAgBC,MACnC/Z,SAA3B8Z,EAAgBE,SAAyBA,EAASF,EAAgBE,QAClCha,SAAhC8Z,EAAgBG,cAA2BA,EAAcH,EAAgBG,iBAE1E,IAAyBja,SAApB8Z,EAIR,KAAM,qCAGR3gB,MAAKsgB,MAAM5S,MAAMiT,gBAAkBC,EACnC5gB,KAAKsgB,MAAM5S,MAAMqT,YAAcF,EAC/B7gB,KAAKsgB,MAAM5S,MAAMsT,YAAcF,EAAc,KAC7C9gB,KAAKsgB,MAAM5S,MAAMuT,YAAc,SAKjCjgB,EAAQua,OACN2F,IAAK,EACLC,SAAU,EACVC,QAAS,EACT5F,IAAM,EACN6F,QAAU,EACVC,SAAU,EACVC,QAAS,EACTC,KAAO,EACPC,KAAM,EACNC,QAAU,GASZ1gB,EAAQkT,UAAUyN,gBAAkB,SAASC,GAC3C,OAAQA,GACN,IAAK,MAAW,MAAO5gB,GAAQua,MAAMC,GACrC,KAAK,WAAa,MAAOxa,GAAQua,MAAM8F,OACvC,KAAK,YAAe,MAAOrgB,GAAQua,MAAM+F,QACzC,KAAK,WAAa,MAAOtgB,GAAQua,MAAMgG,OACvC,KAAK,OAAW,MAAOvgB,GAAQua,MAAMkG,IACrC,KAAK,OAAW,MAAOzgB,GAAQua,MAAMiG,IACrC,KAAK,UAAa,MAAOxgB,GAAQua,MAAMmG,OACvC,KAAK,MAAW,MAAO1gB,GAAQua,MAAM2F,GACrC,KAAK,YAAe,MAAOlgB,GAAQua,MAAM4F,QACzC,KAAK,WAAa,MAAOngB,GAAQua,MAAM6F,QAGzC,MAAO,IAQTpgB,EAAQkT,UAAU2N,wBAA0B,SAASpO,GACnD,GAAIzT,KAAK0N,QAAU1M,EAAQua,MAAMC,KAC/Bxb,KAAK0N,QAAU1M,EAAQua,MAAM8F,SAC7BrhB,KAAK0N,QAAU1M,EAAQua,MAAMkG,MAC7BzhB,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC7BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,SAC7B1hB,KAAK0N,QAAU1M,EAAQua,MAAM2F,IAE7BlhB,KAAKqc,KAAO,EACZrc,KAAKsc,KAAO,EACZtc,KAAKuc,KAAO,EACZvc,KAAKwc,SAAW3V,OAEZ4M,EAAK8E,qBAAuB,IAC9BvY,KAAKyc,UAAY,OAGhB,CAAA,GAAIzc,KAAK0N,QAAU1M,EAAQua,MAAM+F,UACpCthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,SAC7BvhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAY7B,KAAM,kBAAoBphB,KAAK0N,MAAQ,GAVvC1N,MAAKqc,KAAO,EACZrc,KAAKsc,KAAO,EACZtc,KAAKuc,KAAO,EACZvc,KAAKwc,SAAW,EAEZ/I,EAAK8E,qBAAuB,IAC9BvY,KAAKyc,UAAY,KAQvBzb,EAAQkT,UAAUsB,gBAAkB,SAAS/B,GAC3C,MAAOA,GAAKzN,QAIdhF,EAAQkT,UAAUqE,mBAAqB,SAAS9E,GAC9C,GAAIqO,GAAU,CACd,KAAK,GAAIC,KAAUtO,GAAK,GAClBA,EAAK,GAAGtN,eAAe4b,IACzBD,GAGJ,OAAOA,IAIT9gB,EAAQkT,UAAU8N,kBAAoB,SAASvO,EAAMsO,GAEnD,IAAK,GADDE,MACKpc,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IACgB,IAA3Coc,EAAejb,QAAQyM,EAAK5N,GAAGkc,KACjCE,EAAe1Z,KAAKkL,EAAK5N,GAAGkc,GAGhC,OAAOE,IAITjhB,EAAQkT,UAAUgO,eAAiB,SAASzO,EAAKsO,GAE/C,IAAK,GADDI,IAAUhe,IAAIsP,EAAK,GAAGsO,GAAQ3d,IAAIqP,EAAK,GAAGsO,IACrClc,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IAC3Bsc,EAAOhe,IAAMsP,EAAK5N,GAAGkc,KAAWI,EAAOhe,IAAMsP,EAAK5N,GAAGkc,IACrDI,EAAO/d,IAAMqP,EAAK5N,GAAGkc,KAAWI,EAAO/d,IAAMqP,EAAK5N,GAAGkc,GAE3D,OAAOI,IASTnhB,EAAQkT,UAAUkO,gBAAkB,SAAUC,GAC5C,GAAInN,GAAKlV,IAOT;GAJIA,KAAKuZ,SACPvZ,KAAKuZ,QAAQ9E,IAAI,IAAKzU,KAAKsiB,WAGbzb,SAAZwb,EAAJ,CAGI/b,MAAMC,QAAQ8b,KAChBA,EAAU,GAAIxhB,GAAQwhB,GAGxB,IAAI5O,EACJ,MAAI4O,YAAmBxhB,IAAWwhB,YAAmBvhB,IAInD,KAAM,IAAI8C,OAAM,uCAGlB,IANE6P,EAAO4O,EAAQpM,MAME,GAAfxC,EAAKzN,OAAT,CAGAhG,KAAKuZ,QAAU8I,EACfriB,KAAKsY,UAAY7E,EAGjBzT,KAAKsiB,UAAY,WACfpN,EAAG6D,QAAQ7D,EAAGqE,UAEhBvZ,KAAKuZ,QAAQjF,GAAG,IAAKtU,KAAKsiB,WAS1BtiB,KAAKqc,KAAO,IACZrc,KAAKsc,KAAO,IACZtc,KAAKuc,KAAO,IACZvc,KAAKwc,SAAW,QAChBxc,KAAKyc,UAAY,SAKbhJ,EAAK,GAAGtN,eAAe,WACDU,SAApB7G,KAAKuiB,aACPviB,KAAKuiB,WAAa,GAAIphB,GAAOkhB,EAASriB,KAAKyc,UAAWzc,MACtDA,KAAKuiB,WAAWC,kBAAkB,WAAYtN,EAAGuN,WAKrD,IAAIC,GAAW1iB,KAAK0N,OAAS1M,EAAQua,MAAM2F,KACzClhB,KAAK0N,OAAS1M,EAAQua,MAAM4F,UAC5BnhB,KAAK0N,OAAS1M,EAAQua,MAAM6F,OAG9B,IAAIsB,EAAU,CACZ,GAA8B7b,SAA1B7G,KAAK2iB,iBACP3iB,KAAKqd,UAAYrd,KAAK2iB,qBAEnB,CACH,GAAIC,GAAQ5iB,KAAKgiB,kBAAkBvO,EAAKzT,KAAKqc,KAC7Crc,MAAKqd,UAAauF,EAAM,GAAKA,EAAM,IAAO,EAG5C,GAA8B/b,SAA1B7G,KAAK6iB,iBACP7iB,KAAKsd,UAAYtd,KAAK6iB,qBAEnB,CACH,GAAIC,GAAQ9iB,KAAKgiB,kBAAkBvO,EAAKzT,KAAKsc,KAC7Ctc,MAAKsd,UAAawF,EAAM,GAAKA,EAAM,IAAO,GAK9C,GAAIC,GAAS/iB,KAAKkiB,eAAezO,EAAKzT,KAAKqc,KACvCqG,KACFK,EAAO5e,KAAOnE,KAAKqd,UAAY,EAC/B0F,EAAO3e,KAAOpE,KAAKqd,UAAY,GAEjCrd,KAAK0c,KAA6B7V,SAArB7G,KAAKgjB,YAA6BhjB,KAAKgjB,YAAcD,EAAO5e,IACzEnE,KAAK4c,KAA6B/V,SAArB7G,KAAKijB,YAA6BjjB,KAAKijB,YAAcF,EAAO3e,IACrEpE,KAAK4c,MAAQ5c,KAAK0c,OAAM1c,KAAK4c,KAAO5c,KAAK0c,KAAO,GACpD1c,KAAK2c,MAA+B9V,SAAtB7G,KAAKkjB,aAA8BljB,KAAKkjB,cAAgBljB,KAAK4c,KAAK5c,KAAK0c,MAAM,CAE3F,IAAIyG,GAASnjB,KAAKkiB,eAAezO,EAAKzT,KAAKsc,KACvCoG,KACFS,EAAOhf,KAAOnE,KAAKsd,UAAY,EAC/B6F,EAAO/e,KAAOpE,KAAKsd,UAAY,GAEjCtd,KAAK6c,KAA6BhW,SAArB7G,KAAKojB,YAA6BpjB,KAAKojB,YAAcD,EAAOhf,IACzEnE,KAAK+c,KAA6BlW,SAArB7G,KAAKqjB,YAA6BrjB,KAAKqjB,YAAcF,EAAO/e,IACrEpE,KAAK+c,MAAQ/c,KAAK6c,OAAM7c,KAAK+c,KAAO/c,KAAK6c,KAAO,GACpD7c,KAAK8c,MAA+BjW,SAAtB7G,KAAKsjB,aAA8BtjB,KAAKsjB,cAAgBtjB,KAAK+c,KAAK/c,KAAK6c,MAAM,CAE3F,IAAI0G,GAASvjB,KAAKkiB,eAAezO,EAAKzT,KAAKuc,KAM3C,IALAvc,KAAKgd,KAA6BnW,SAArB7G,KAAKwjB,YAA6BxjB,KAAKwjB,YAAcD,EAAOpf,IACzEnE,KAAKkd,KAA6BrW,SAArB7G,KAAKyjB,YAA6BzjB,KAAKyjB,YAAcF,EAAOnf,IACrEpE,KAAKkd,MAAQld,KAAKgd,OAAMhd,KAAKkd,KAAOld,KAAKgd,KAAO,GACpDhd,KAAKid,MAA+BpW,SAAtB7G,KAAK0jB,aAA8B1jB,KAAK0jB,cAAgB1jB,KAAKkd,KAAKld,KAAKgd,MAAM,EAErEnW,SAAlB7G,KAAKwc,SAAwB,CAC/B,GAAImH,GAAa3jB,KAAKkiB,eAAezO,EAAKzT,KAAKwc,SAC/Cxc,MAAKmd,SAAqCtW,SAAzB7G,KAAK4jB,gBAAiC5jB,KAAK4jB,gBAAkBD,EAAWxf,IACzFnE,KAAKod,SAAqCvW,SAAzB7G,KAAK6jB,gBAAiC7jB,KAAK6jB,gBAAkBF,EAAWvf,IACrFpE,KAAKod,UAAYpd,KAAKmd,WAAUnd,KAAKod,SAAWpd,KAAKmd,SAAW,GAItEnd,KAAKie,eAUPjd,EAAQkT,UAAU4P,eAAiB,SAAUrQ,GAE3C,GAAIjB,GAAGC,EAAG5M,EAAGqY,EAAG6F,EAAKnR,EAEjBwJ,IAEJ,IAAIpc,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC/BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,QAAS,CAKtC,GAAIkB,MACAE,IACJ,KAAKjd,EAAI,EAAGA,EAAI7F,KAAKwV,gBAAgB/B,GAAO5N,IAC1C2M,EAAIiB,EAAK5N,GAAG7F,KAAKqc,OAAS,EAC1B5J,EAAIgB,EAAK5N,GAAG7F,KAAKsc,OAAS,EAED,KAArBsG,EAAM5b,QAAQwL,IAChBoQ,EAAMra,KAAKiK,GAEY,KAArBsQ,EAAM9b,QAAQyL,IAChBqQ,EAAMva,KAAKkK,EAIf,IAAIuR,GAAa,SAAUpe,EAAGa,GAC5B,MAAOb,GAAIa,EAEbmc,GAAM3L,KAAK+M,GACXlB,EAAM7L,KAAK+M,EAGX,IAAIC,KACJ,KAAKpe,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IAAK,CAChC2M,EAAIiB,EAAK5N,GAAG7F,KAAKqc,OAAS,EAC1B5J,EAAIgB,EAAK5N,GAAG7F,KAAKsc,OAAS,EAC1B4B,EAAIzK,EAAK5N,GAAG7F,KAAKuc,OAAS,CAE1B,IAAI2H,GAAStB,EAAM5b,QAAQwL,GACvB2R,EAASrB,EAAM9b,QAAQyL,EAEA5L,UAAvBod,EAAWC,KACbD,EAAWC,MAGb,IAAI1F,GAAU,GAAInd,EAClBmd,GAAQhM,EAAIA,EACZgM,EAAQ/L,EAAIA,EACZ+L,EAAQN,EAAIA,EAEZ6F,KACAA,EAAInR,MAAQ4L,EACZuF,EAAIK,MAAQvd,OACZkd,EAAIM,OAASxd,OACbkd,EAAIO,OAAS,GAAIjjB,GAAQmR,EAAGC,EAAGzS,KAAKgd,MAEpCiH,EAAWC,GAAQC,GAAUJ,EAE7B3H,EAAW7T,KAAKwb,GAIlB,IAAKvR,EAAI,EAAGA,EAAIyR,EAAWje,OAAQwM,IACjC,IAAKC,EAAI,EAAGA,EAAIwR,EAAWzR,GAAGxM,OAAQyM,IAChCwR,EAAWzR,GAAGC,KAChBwR,EAAWzR,GAAGC,GAAG8R,WAAc/R,EAAIyR,EAAWje,OAAO,EAAKie,EAAWzR,EAAE,GAAGC,GAAK5L,OAC/Eod,EAAWzR,GAAGC,GAAG+R,SAAc/R,EAAIwR,EAAWzR,GAAGxM,OAAO,EAAKie,EAAWzR,GAAGC,EAAE,GAAK5L,OAClFod,EAAWzR,GAAGC,GAAGgS,WACdjS,EAAIyR,EAAWje,OAAO,GAAKyM,EAAIwR,EAAWzR,GAAGxM,OAAO,EACnDie,EAAWzR,EAAE,GAAGC,EAAE,GAClB5L,YAOV,KAAKhB,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IAC3B+M,EAAQ,GAAIvR,GACZuR,EAAMJ,EAAIiB,EAAK5N,GAAG7F,KAAKqc,OAAS,EAChCzJ,EAAMH,EAAIgB,EAAK5N,GAAG7F,KAAKsc,OAAS,EAChC1J,EAAMsL,EAAIzK,EAAK5N,GAAG7F,KAAKuc,OAAS,EAEV1V,SAAlB7G,KAAKwc,WACP5J,EAAMtO,MAAQmP,EAAK5N,GAAG7F,KAAKwc,WAAa,GAG1CuH,KACAA,EAAInR,MAAQA,EACZmR,EAAIO,OAAS,GAAIjjB,GAAQuR,EAAMJ,EAAGI,EAAMH,EAAGzS,KAAKgd,MAChD+G,EAAIK,MAAQvd,OACZkd,EAAIM,OAASxd,OAEbuV,EAAW7T,KAAKwb,EAIpB,OAAO3H,IASTpb,EAAQkT,UAAUpF,OAAS,WAEzB,KAAO9O,KAAK0a,iBAAiBgK,iBAC3B1kB,KAAK0a,iBAAiB9I,YAAY5R,KAAK0a,iBAAiBiK,WAG1D3kB,MAAKsgB,MAAQtO,SAASM,cAAc,OACpCtS,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKsgB,MAAM5S,MAAMmX,SAAW,SAG5B7kB,KAAKsgB,MAAMC,OAASvO,SAASM,cAAe,UAC5CtS,KAAKsgB,MAAMC,OAAO7S,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMC,OAGhC,IAAIuE,GAAW9S,SAASM,cAAe,MACvCwS,GAASpX,MAAMnC,MAAQ,MACvBuZ,EAASpX,MAAMqX,WAAc,OAC7BD,EAASpX,MAAMsX,QAAW,OAC1BF,EAASG,UAAa,mDACtBjlB,KAAKsgB,MAAMC,OAAOrO,YAAY4S,GAGhC9kB,KAAKsgB,MAAM5L,OAAS1C,SAASM,cAAe,OAC5CtS,KAAKsgB,MAAM5L,OAAOhH,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAM5L,OAAOhH,MAAM4W,OAAS,MACjCtkB,KAAKsgB,MAAM5L,OAAOhH,MAAM7F,KAAO,MAC/B7H,KAAKsgB,MAAM5L,OAAOhH,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM5L,OAGlC,IAAIQ,GAAKlV,KACLklB,EAAc,SAAUrb,GAAQqL,EAAGiQ,aAAatb,IAChDub,EAAe,SAAUvb,GAAQqL,EAAGmQ,cAAcxb,IAClDyb,EAAe,SAAUzb,GAAQqL,EAAGqQ,SAAS1b,IAC7C2b,EAAY,SAAU3b,GAAQqL,EAAGuQ,WAAW5b,GAGhDlJ,GAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,UAAWmF,WACpD/kB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,YAAa2E,GACtDvkB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,aAAc6E,GACvDzkB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,aAAc+E,GACvD3kB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,YAAaiF,GAGtDxlB,KAAK0a,iBAAiBxI,YAAYlS,KAAKsgB,QAWzCtf,EAAQkT,UAAUyR,QAAU,SAASrS,EAAOC,GAC1CvT,KAAKsgB,MAAM5S,MAAM4F,MAAQA,EACzBtT,KAAKsgB,MAAM5S,MAAM6F,OAASA,EAE1BvT,KAAK4lB,iBAMP5kB,EAAQkT,UAAU0R,cAAgB,WAChC5lB,KAAKsgB,MAAMC,OAAO7S,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMC,OAAO7S,MAAM6F,OAAS,OAEjCvT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAC5CxgB,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAG7C7lB,KAAKsgB,MAAM5L,OAAOhH,MAAM4F,MAAStT,KAAKsgB,MAAMC,OAAOC,YAAc,GAAU,MAM7Exf,EAAQkT,UAAU4R,eAAiB,WACjC,IAAK9lB,KAAKsgB,MAAM5L,SAAW1U,KAAKsgB,MAAM5L,OAAOqR,OAC3C,KAAM,wBAER/lB,MAAKsgB,MAAM5L,OAAOqR,OAAOC,QAO3BhlB,EAAQkT,UAAU+R,cAAgB,WAC3BjmB,KAAKsgB,MAAM5L,QAAW1U,KAAKsgB,MAAM5L,OAAOqR,QAE7C/lB,KAAKsgB,MAAM5L,OAAOqR,OAAOG,QAU3BllB,EAAQkT,UAAUiS,cAAgB,WAG9BnmB,KAAKqgB,QAD0D,MAA7DrgB,KAAK4a,eAAewL,OAAOpmB,KAAK4a,eAAe5U,OAAO,GAEtDqgB,WAAWrmB,KAAK4a,gBAAkB,IAChC5a,KAAKsgB,MAAMC,OAAOC,YAGP6F,WAAWrmB,KAAK4a,gBAK/B5a,KAAKygB,QAD0D,MAA7DzgB,KAAK6a,eAAeuL,OAAOpmB,KAAK6a,eAAe7U,OAAO,GAEtDqgB,WAAWrmB,KAAK6a,gBAAkB,KAC/B7a,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKsgB,MAAM5L,OAAOmR,cAGzCQ,WAAWrmB,KAAK6a,iBAoBnC7Z,EAAQkT,UAAUoS,kBAAoB,SAASC,GACjC1f,SAAR0f,IAImB1f,SAAnB0f,EAAIC,YAA6C3f,SAAjB0f,EAAIE,UACtCzmB,KAAKkc,OAAOwK,eAAeH,EAAIC,WAAYD,EAAIE,UAG5B5f,SAAjB0f,EAAII,UACN3mB,KAAKkc,OAAO0K,aAAaL,EAAII,UAG/B3mB,KAAKyiB,WASPzhB,EAAQkT,UAAU2S,kBAAoB,WACpC,GAAIN,GAAMvmB,KAAKkc,OAAO4K,gBAEtB,OADAP,GAAII,SAAW3mB,KAAKkc,OAAOkE,eACpBmG,GAMTvlB,EAAQkT,UAAU6S,UAAY,SAAStT,GAErCzT,KAAKoiB,gBAAgB3O,EAAMzT,KAAK0N,OAK9B1N,KAAKoc,WAFHpc,KAAKuiB,WAEWviB,KAAKuiB,WAAWuB,iBAIhB9jB,KAAK8jB,eAAe9jB,KAAKsY,WAI7CtY,KAAKgnB,iBAOPhmB,EAAQkT,UAAU6E,QAAU,SAAUtF,GACpCzT,KAAK+mB,UAAUtT,GACfzT,KAAKyiB,SAGDziB,KAAKinB,oBAAsBjnB,KAAKuiB,YAClCviB,KAAK8lB,kBAQT9kB,EAAQkT,UAAUD,WAAa,SAAU/E,GACvC,GAAIgY,GAAiBrgB,MAIrB,IAFA7G,KAAKimB,gBAEWpf,SAAZqI,EAAuB,CAkBzB,GAhBsBrI,SAAlBqI,EAAQoE,QAA2BtT,KAAKsT,MAAQpE,EAAQoE,OACrCzM,SAAnBqI,EAAQqE,SAA2BvT,KAAKuT,OAASrE,EAAQqE,QAErC1M,SAApBqI,EAAQiP,UAA2Bne,KAAK4a,eAAiB1L,EAAQiP,SAC7CtX,SAApBqI,EAAQkP,UAA2Bpe,KAAK6a,eAAiB3L,EAAQkP,SAEzCvX,SAAxBqI,EAAQmM,cAA+Brb,KAAKqb,YAAcnM,EAAQmM,aAC1CxU,SAAxBqI,EAAQoM,cAA+Btb,KAAKsb,YAAcpM,EAAQoM,aAC/CzU,SAAnBqI,EAAQ4L,SAA0B9a,KAAK8a,OAAS5L,EAAQ4L,QACrCjU,SAAnBqI,EAAQ6L,SAA0B/a,KAAK+a,OAAS7L,EAAQ6L,QACrClU,SAAnBqI,EAAQ8L,SAA0Bhb,KAAKgb,OAAS9L,EAAQ8L,QAEhCnU,SAAxBqI,EAAQgM,cAA+Blb,KAAKkb,YAAchM,EAAQgM,aAC1CrU,SAAxBqI,EAAQiM,cAA+Bnb,KAAKmb,YAAcjM,EAAQiM,aAC1CtU,SAAxBqI,EAAQkM,cAA+Bpb,KAAKob,YAAclM,EAAQkM,aAEhDvU,SAAlBqI,EAAQxB,MAAqB,CAC/B,GAAIyZ,GAAcnnB,KAAK2hB,gBAAgBzS,EAAQxB,MAC3B,MAAhByZ,IACFnnB,KAAK0N,MAAQyZ,GAGQtgB,SAArBqI,EAAQwM,WAA6B1b,KAAK0b,SAAWxM,EAAQwM,UACjC7U,SAA5BqI,EAAQuM,kBAAiCzb,KAAKyb,gBAAkBvM,EAAQuM,iBACjD5U,SAAvBqI,EAAQ0M,aAA6B5b,KAAK4b,WAAa1M,EAAQ0M,YAC3C/U,SAApBqI,EAAQkY,UAA6BpnB,KAAK8b,YAAc5M,EAAQkY,SAC9BvgB,SAAlCqI,EAAQmY,wBAAqCrnB,KAAKqnB,sBAAwBnY,EAAQmY,uBACtDxgB,SAA5BqI,EAAQyM,kBAAiC3b,KAAK2b,gBAAkBzM,EAAQyM,iBAC9C9U,SAA1BqI,EAAQ6M,gBAA+B/b,KAAK+b,cAAgB7M,EAAQ6M,eAEtClV,SAA9BqI,EAAQ8M,oBAAiChc,KAAKgc,kBAAoB9M,EAAQ8M,mBAC7CnV,SAA7BqI,EAAQ+M,mBAAiCjc,KAAKic,iBAAmB/M,EAAQ+M,kBAC1CpV,SAA/BqI,EAAQ+X,qBAAiCjnB,KAAKinB,mBAAqB/X,EAAQ+X,oBAErDpgB,SAAtBqI,EAAQmO,YAAyBrd,KAAK2iB,iBAAmBzT,EAAQmO,WAC3CxW,SAAtBqI,EAAQoO,YAAyBtd,KAAK6iB,iBAAmB3T,EAAQoO,WAEhDzW,SAAjBqI,EAAQwN,OAAoB1c,KAAKgjB,YAAc9T,EAAQwN,MACrC7V,SAAlBqI,EAAQyN,QAAqB3c,KAAKkjB,aAAehU,EAAQyN,OACxC9V,SAAjBqI,EAAQ0N,OAAoB5c,KAAKijB,YAAc/T,EAAQ0N,MACtC/V,SAAjBqI,EAAQ2N,OAAoB7c,KAAKojB,YAAclU,EAAQ2N,MACrChW,SAAlBqI,EAAQ4N,QAAqB9c,KAAKsjB,aAAepU,EAAQ4N,OACxCjW,SAAjBqI,EAAQ6N,OAAoB/c,KAAKqjB,YAAcnU,EAAQ6N,MACtClW,SAAjBqI,EAAQ8N,OAAoBhd,KAAKwjB,YAActU,EAAQ8N,MACrCnW,SAAlBqI,EAAQ+N,QAAqBjd,KAAK0jB,aAAexU,EAAQ+N,OACxCpW,SAAjBqI,EAAQgO,OAAoBld,KAAKyjB,YAAcvU,EAAQgO,MAClCrW,SAArBqI,EAAQiO,WAAwBnd,KAAK4jB,gBAAkB1U,EAAQiO,UAC1CtW,SAArBqI,EAAQkO,WAAwBpd,KAAK6jB,gBAAkB3U,EAAQkO,UAEpCvW,SAA3BqI,EAAQgY,iBAA8BA,EAAiBhY,EAAQgY,gBAE5CrgB,SAAnBqgB,GACFlnB,KAAKkc,OAAOwK,eAAeQ,EAAeV,WAAYU,EAAeT,UACrEzmB,KAAKkc,OAAO0K,aAAaM,EAAeP,YAGxC3mB,KAAKkc,OAAOwK,eAAe,EAAK,IAChC1mB,KAAKkc,OAAO0K,aAAa,MAI7B5mB,KAAK0gB,oBAAoBxR,GAAWA,EAAQyR,iBAE5C3gB,KAAK2lB,QAAQ3lB,KAAKsT,MAAOtT,KAAKuT,QAG1BvT,KAAKsY,WACPtY,KAAK+Y,QAAQ/Y,KAAKsY,WAIhBtY,KAAKinB,oBAAsBjnB,KAAKuiB,YAClCviB,KAAK8lB,kBAOT9kB,EAAQkT,UAAUuO,OAAS,WACzB,GAAwB5b,SAApB7G,KAAKoc,WACP,KAAM,mCAGRpc,MAAK4lB,gBACL5lB,KAAKmmB,gBACLnmB,KAAKsnB,gBACLtnB,KAAKunB,eACLvnB,KAAKwnB,cAEDxnB,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC/BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,QAC7B1hB,KAAKynB,kBAEEznB,KAAK0N,QAAU1M,EAAQua,MAAMkG,KACpCzhB,KAAK0nB,kBAEE1nB,KAAK0N,QAAU1M,EAAQua,MAAM2F,KACpClhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAC7BphB,KAAK2nB,iBAIL3nB,KAAK4nB,iBAGP5nB,KAAK6nB,cACL7nB,KAAK8nB,iBAMP9mB,EAAQkT,UAAUqT,aAAe,WAC/B,GAAIhH,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIE,UAAU,EAAG,EAAG1H,EAAOjN,MAAOiN,EAAOhN,SAO3CvS,EAAQkT,UAAU4T,cAAgB,WAChC,GAAIrV,EAEJ,IAAIzS,KAAK0N,QAAU1M,EAAQua,MAAM+F,UAC/BthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,QAAS,CAEtC,GAEI2G,GAAUC,EAFVC,EAAmC,IAAzBpoB,KAAKsgB,MAAME,WAGrBxgB,MAAK0N,QAAU1M,EAAQua,MAAMgG,SAC/B2G,EAAWE,EAAU,EACrBD,EAAWC,EAAU,EAAc,EAAVA,IAGzBF,EAAW,GACXC,EAAW,GAGb,IAAI5U,GAAS/O,KAAKJ,IAA8B,IAA1BpE,KAAKsgB,MAAMuF,aAAqB,KAClD5d,EAAMjI,KAAK2a,OACX0N,EAAQroB,KAAKsgB,MAAME,YAAcxgB,KAAK2a,OACtC9S,EAAOwgB,EAAQF,EACf7D,EAASrc,EAAMsL,EAGrB,GAAIgN,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAI5B,IAHAD,EAAIO,UAAY,EAChBP,EAAIQ,KAAO,aAEPvoB,KAAK0N,QAAU1M,EAAQua,MAAM+F,SAAU,CAEzC,GAAIkH,GAAO,EACPC,EAAOlV,CACX,KAAKd,EAAI+V,EAAUC,EAAJhW,EAAUA,IAAK,CAC5B,GAAIpE,IAAKoE,EAAI+V,IAASC,EAAOD,GAGzBnb,EAAU,IAAJgB,EACN9C,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,EAElC0a,GAAIY,YAAcpd,EAClBwc,EAAIa,YACJb,EAAIc,OAAOhhB,EAAMI,EAAMwK,GACvBsV,EAAIe,OAAOT,EAAOpgB,EAAMwK,GACxBsV,EAAIlH,SAGNkH,EAAIY,YAAe3oB,KAAKud,UACxBwK,EAAIgB,WAAWlhB,EAAMI,EAAKkgB,EAAU5U,GAiBtC,GAdIvT,KAAK0N,QAAU1M,EAAQua,MAAMgG,UAE/BwG,EAAIY,YAAe3oB,KAAKud,UACxBwK,EAAIiB,UAAahpB,KAAKyd,SACtBsK,EAAIa,YACJb,EAAIc,OAAOhhB,EAAMI,GACjB8f,EAAIe,OAAOT,EAAOpgB,GAClB8f,EAAIe,OAAOT,EAAQF,EAAWD,EAAU5D,GACxCyD,EAAIe,OAAOjhB,EAAMyc,GACjByD,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,UAGF7gB,KAAK0N,QAAU1M,EAAQua,MAAM+F,UAC/BthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,QAAS,CAEtC,GAAI2H,GAAc,EACdC,EAAO,GAAI5nB,GAAWvB,KAAKmd,SAAUnd,KAAKod,UAAWpd,KAAKod,SAASpd,KAAKmd,UAAU,GAAG,EAKzF,KAJAgM,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAKmd,UAC3BgM,EAAKE,QAECF,EAAK7Y,OACXmC,EAAI6R,GAAU6E,EAAKC,aAAeppB,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY5J,EAErFwU,EAAIa,YACJb,EAAIc,OAAOhhB,EAAOqhB,EAAazW,GAC/BsV,EAAIe,OAAOjhB,EAAM4K,GACjBsV,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASL,EAAKC,aAAcvhB,EAAO,EAAIqhB,EAAazW,GAExD0W,EAAKE,MAGPtB,GAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,KACnB,IAAIvW,GAAQhT,KAAKsb,WACjByM,GAAIyB,SAASxW,EAAOqV,EAAO/D,EAAStkB,KAAK2a,UAO7C3Z,EAAQkT,UAAU8S,cAAgB,WAGhC,GAFAhnB,KAAKsgB,MAAM5L,OAAOuQ,UAAY,GAE1BjlB,KAAKuiB,WAAY,CACnB,GAAIrT,IACFua,QAAWzpB,KAAKqnB,uBAEdtB,EAAS,GAAIzkB,GAAOtB,KAAKsgB,MAAM5L,OAAQxF,EAC3ClP,MAAKsgB,MAAM5L,OAAOqR,OAASA,EAG3B/lB,KAAKsgB,MAAM5L,OAAOhH,MAAMsX,QAAU,OAGlCe,EAAO2D,UAAU1pB,KAAKuiB,WAAW1K,QACjCkO,EAAO4D,gBAAgB3pB,KAAKgc,kBAG5B,IAAI9G,GAAKlV,KACL4pB,EAAW,WACb,GAAIlhB,GAAQqd,EAAO8D,UAEnB3U,GAAGqN,WAAWuH,YAAYphB,GAC1BwM,EAAGkH,WAAalH,EAAGqN,WAAWuB,iBAE9B5O,EAAGuN,SAELsD,GAAOgE,oBAAoBH,OAG3B5pB,MAAKsgB,MAAM5L,OAAOqR,OAASlf,QAO/B7F,EAAQkT,UAAUoT,cAAgB,WACEzgB,SAA7B7G,KAAKsgB,MAAM5L,OAAOqR,QACrB/lB,KAAKsgB,MAAM5L,OAAOqR,OAAOtD,UAQ7BzhB,EAAQkT,UAAU2T,YAAc,WAC9B,GAAI7nB,KAAKuiB,WAAY,CACnB,GAAIhC,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIQ,KAAO,aACXR,EAAIiC,UAAY,OAChBjC,EAAIiB,UAAY,OAChBjB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,KAEnB,IAAI/W,GAAIxS,KAAK2a,OACTlI,EAAIzS,KAAK2a,MACboN,GAAIyB,SAASxpB,KAAKuiB,WAAW0H,WAAa,KAAOjqB,KAAKuiB,WAAW2H,mBAAoB1X,EAAGC,KAQ5FzR,EAAQkT,UAAUsT,YAAc,WAC9B,GAEE2C,GAAMC,EAAIjB,EAAMkB,EAChBC,EAAMC,EAAOC,EAAOC,EACpBC,EAAQzX,EAASC,EACjByX,EAAQC,EALNrK,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAQ1BD,GAAIQ,KAAO,GAAKvoB,KAAKkc,OAAOkE,eAAiB,UAG7C,IAAIyK,GAAW,KAAQ7qB,KAAKuE,MAAMiO,EAC9BsY,EAAW,KAAQ9qB,KAAKuE,MAAMkO,EAC9BsY,EAAa,EAAI/qB,KAAKkc,OAAOkE,eAC7B4K,EAAWhrB,KAAKkc,OAAO4K,iBAAiBN,UAU5C,KAPAuB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAKkjB,aACnBiG,EAAO,GAAI5nB,GAAWvB,KAAK0c,KAAM1c,KAAK4c,KAAM5c,KAAK2c,MAAO0N,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAK0c,MAC3ByM,EAAKE,QAECF,EAAK7Y,OAAO,CAClB,GAAIkC,GAAI2W,EAAKC,YAETppB,MAAK0b,UACPyO,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAM7c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAM/c,KAAKgd,OACxD+K,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,WAGJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAM7c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAKgO,EAAU7qB,KAAKgd,OACjE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAM/c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAK8N,EAAU7qB,KAAKgd,OACjE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,UAGN2J,EAAShmB,KAAK+a,IAAIyL,GAAY,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,KACpDuN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGgY,EAAOxqB,KAAKgd,OAClDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBe,EAAK7X,GAAKsY,GAEHvmB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS,KAAOxpB,KAAKkb,YAAYiO,EAAKC,cAAgB,KAAMkB,EAAK9X,EAAG8X,EAAK7X,GAE7E0W,EAAKE,OAWP,IAPAtB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAKsjB,aACnB6F,EAAO,GAAI5nB,GAAWvB,KAAK6c,KAAM7c,KAAK+c,KAAM/c,KAAK8c,MAAOuN,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAK6c,MAC3BsM,EAAKE,QAECF,EAAK7Y,OACPtQ,KAAK0b,UACPyO,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAMyM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAMuM,EAAKC,aAAcppB,KAAKgd,OACxE+K,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,WAGJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAMyM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAKoO,EAAU3B,EAAKC,aAAcppB,KAAKgd,OACjF+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAMuM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAKkO,EAAU3B,EAAKC,aAAcppB,KAAKgd,OACjF+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,UAGN0J,EAAS/lB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD0N,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOpB,EAAKC,aAAcppB,KAAKgd,OAClExY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBe,EAAK7X,GAAKsY,GAEHvmB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS,KAAOxpB,KAAKmb,YAAYgO,EAAKC,cAAgB,KAAMkB,EAAK9X,EAAG8X,EAAK7X,GAE7E0W,EAAKE,MAaP,KATAtB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAK0jB,aACnByF,EAAO,GAAI5nB,GAAWvB,KAAKgd,KAAMhd,KAAKkd,KAAMld,KAAKid,MAAOoN,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAKgd,MAC3BmM,EAAKE,OAEPkB,EAAS/lB,KAAK+a,IAAIyL,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD4N,EAAShmB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,MAC7CoM,EAAK7Y,OAEX6Z,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOrB,EAAKC,eAC1DrB,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOqB,EAAK3X,EAAIuY,EAAYZ,EAAK1X,GACrCsV,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASxpB,KAAKob,YAAY+N,EAAKC,cAAgB,IAAKe,EAAK3X,EAAI,EAAG2X,EAAK1X,GAEzE0W,EAAKE,MAEPtB,GAAIO,UAAY,EAChB6B,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKkd,OACxD6K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhBqC,EAAS3qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK6c,KAAM7c,KAAKgd,OACpE4N,EAAS5qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK6c,KAAM7c,KAAKgd,OACpE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAO8B,EAAOnY,EAAGmY,EAAOlY,GAC5BsV,EAAIe,OAAO8B,EAAOpY,EAAGoY,EAAOnY,GAC5BsV,EAAIlH,SAEJ8J,EAAS3qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK+c,KAAM/c,KAAKgd,OACpE4N,EAAS5qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK+c,KAAM/c,KAAKgd,OACpE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAO8B,EAAOnY,EAAGmY,EAAOlY,GAC5BsV,EAAIe,OAAO8B,EAAOpY,EAAGoY,EAAOnY,GAC5BsV,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhB6B,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK6c,KAAM7c,KAAKgd,OAClEoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK+c,KAAM/c,KAAKgd,OAChE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK6c,KAAM7c,KAAKgd,OAClEoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK+c,KAAM/c,KAAKgd,OAChE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,QAGJ,IAAI/F,GAAS9a,KAAK8a,MACdA,GAAO9U,OAAS,IAClBkN,EAAU,GAAMlT,KAAKuE,MAAMkO,EAC3B8X,GAASvqB,KAAK0c,KAAO1c,KAAK4c,MAAQ,EAClC4N,EAAShmB,KAAK+a,IAAIyL,GAAY,EAAKhrB,KAAK6c,KAAO3J,EAASlT,KAAK+c,KAAO7J,EACpEoX,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OACtDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ/kB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS1O,EAAQwP,EAAK9X,EAAG8X,EAAK7X,GAIpC,IAAIsI,GAAS/a,KAAK+a,MACdA,GAAO/U,OAAS,IAClBiN,EAAU,GAAMjT,KAAKuE,MAAMiO,EAC3B+X,EAAS/lB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK0c,KAAOzJ,EAAUjT,KAAK4c,KAAO3J,EACtEuX,GAASxqB,KAAK6c,KAAO7c,KAAK+c,MAAQ,EAClCuN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OACtDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ/kB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASzO,EAAQuP,EAAK9X,EAAG8X,EAAK7X,GAIpC,IAAIuI,GAAShb,KAAKgb,MACdA,GAAOhV,OAAS,IAClB0kB,EAAS,GACTH,EAAS/lB,KAAK+a,IAAIyL,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD4N,EAAShmB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,KACrD0N,GAASzqB,KAAKgd,KAAOhd,KAAKkd,MAAQ,EAClCoN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOC,IACrD1C,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASxO,EAAQsP,EAAK9X,EAAIkY,EAAQJ,EAAK7X,KAU/CzR,EAAQkT,UAAUwU,SAAW,SAASuC,EAAGC,EAAGC,GAC1C,GAAIC,GAAGC,EAAGC,EAAGC,EAAGC,EAAIC,CAMpB,QAJAF,EAAIJ,EAAID,EACRM,EAAKhnB,KAAKgB,MAAMylB,EAAE,IAClBQ,EAAIF,GAAK,EAAI/mB,KAAKknB,IAAMT,EAAE,GAAM,EAAK,IAE7BO,GACN,IAAK,GAAGJ,EAAIG,EAAGF,EAAII,EAAGH,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAIK,EAAGJ,EAAIE,EAAGD,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAI,EAAGC,EAAIE,EAAGD,EAAIG,CAAG,MAC7B,KAAK,GAAGL,EAAI,EAAGC,EAAII,EAAGH,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIK,EAAGJ,EAAI,EAAGC,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIG,EAAGF,EAAI,EAAGC,EAAIG,CAAG,MAE7B,SAASL,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAG7B,MAAO,OAASjgB,SAAW,IAAF+f,GAAS,IAAM/f,SAAW,IAAFggB,GAAS,IAAMhgB,SAAW,IAAFigB,GAAS,KAQpFtqB,EAAQkT,UAAUuT,gBAAkB,WAClC,GAEE7U,GAAOyV,EAAOpgB,EAAK0jB,EACnB9lB,EACA+lB,EAAgB5C,EAAWL,EAAaL,EACxChc,EAAGC,EAAGC,EAAGqf,EALPtL,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAO1B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAE9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAGye,OACrEtkB,MAAKoc,WAAWvW,GAAGkmB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY9lB,UAAY8lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGa,GAC3B,MAAOA,GAAEslB,KAAOnmB,EAAEmmB,KAIpB,IAFA/rB,KAAKoc,WAAWnF,KAAK+U,GAEjBhsB,KAAK0N,QAAU1M,EAAQua,MAAMmG,SAC/B,IAAK7b,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAMtC,GALA+M,EAAQ5S,KAAKoc,WAAWvW,GACxBwiB,EAAQroB,KAAKoc,WAAWvW,GAAG0e,WAC3Btc,EAAQjI,KAAKoc,WAAWvW,GAAG2e,SAC3BmH,EAAQ3rB,KAAKoc,WAAWvW,GAAG4e,WAEb5d,SAAV+L,GAAiC/L,SAAVwhB,GAA+BxhB,SAARoB,GAA+BpB,SAAV8kB,EAAqB,CAE1F,GAAI3rB,KAAK6b,gBAAkB7b,KAAK4b,WAAY,CAK1C,GAAIqQ,GAAQ5qB,EAAQ6qB,SAASP,EAAMvH,MAAOxR,EAAMwR,OAC5C+H,EAAQ9qB,EAAQ6qB,SAASjkB,EAAImc,MAAOiE,EAAMjE,OAC1CgI,EAAe/qB,EAAQgrB,aAAaJ,EAAOE,GAC3CrmB,EAAMsmB,EAAapmB,QAGvB4lB,GAAkBQ,EAAalO,EAAI,MAGnC0N,IAAiB,CAGfA,IAEFC,GAAQjZ,EAAMA,MAAMsL,EAAImK,EAAMzV,MAAMsL,EAAIjW,EAAI2K,MAAMsL,EAAIyN,EAAM/Y,MAAMsL,GAAK,EACvE5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eACnDxP,EAAI,EAEAvM,KAAK4b,YACPpP,EAAIhI,KAAKL,IAAI,EAAKioB,EAAa5Z,EAAI1M,EAAO,EAAG,GAC7CkjB,EAAYhpB,KAAK0oB,SAASpc,EAAGC,EAAGC,GAChCmc,EAAcK,IAGdxc,EAAI,EACJwc,EAAYhpB,KAAK0oB,SAASpc,EAAGC,EAAGC,GAChCmc,EAAc3oB,KAAKud,aAIrByL,EAAY,OACZL,EAAc3oB,KAAKud,WAErB+K,EAAY,GAEZP,EAAIO,UAAYA,EAChBP,EAAIiB,UAAYA,EAChBjB,EAAIY,YAAcA,EAClBZ,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAOT,EAAMhE,OAAO7R,EAAG6V,EAAMhE,OAAO5R,GACxCsV,EAAIe,OAAO6C,EAAMtH,OAAO7R,EAAGmZ,EAAMtH,OAAO5R,GACxCsV,EAAIe,OAAO7gB,EAAIoc,OAAO7R,EAAGvK,EAAIoc,OAAO5R,GACpCsV,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,cAKR,KAAKhb,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IACtC+M,EAAQ5S,KAAKoc,WAAWvW,GACxBwiB,EAAQroB,KAAKoc,WAAWvW,GAAG0e,WAC3Btc,EAAQjI,KAAKoc,WAAWvW,GAAG2e,SAEb3d,SAAV+L,IAEA0V,EADEtoB,KAAKyb,gBACK,GAAK7I,EAAMwR,MAAMlG,EAGjB,IAAMle,KAAKmc,IAAI+B,EAAIle,KAAKkc,OAAOkE,iBAIjCvZ,SAAV+L,GAAiC/L,SAAVwhB,IAEzBwD,GAAQjZ,EAAMA,MAAMsL,EAAImK,EAAMzV,MAAMsL,GAAK,EACzC5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAEnDgM,EAAIO,UAAYA,EAChBP,EAAIY,YAAc3oB,KAAK0oB,SAASpc,EAAG,EAAG,GACtCyb,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAOT,EAAMhE,OAAO7R,EAAG6V,EAAMhE,OAAO5R,GACxCsV,EAAIlH,UAGQha,SAAV+L,GAA+B/L,SAARoB,IAEzB4jB,GAAQjZ,EAAMA,MAAMsL,EAAIjW,EAAI2K,MAAMsL,GAAK,EACvC5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAEnDgM,EAAIO,UAAYA,EAChBP,EAAIY,YAAc3oB,KAAK0oB,SAASpc,EAAG,EAAG,GACtCyb,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAO7gB,EAAIoc,OAAO7R,EAAGvK,EAAIoc,OAAO5R,GACpCsV,EAAIlH,YAWZ7f,EAAQkT,UAAU0T,eAAiB,WACjC,GAEI/hB,GAFA0a,EAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAC9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAGye,OACrEtkB,MAAKoc,WAAWvW,GAAGkmB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY9lB,UAAY8lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGa,GAC3B,MAAOA,GAAEslB,KAAOnmB,EAAEmmB,KAEpB/rB,MAAKoc,WAAWnF,KAAK+U,EAGrB,IAAI5D,GAAmC,IAAzBpoB,KAAKsgB,MAAME,WACzB,KAAK3a,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAI+M,GAAQ5S,KAAKoc,WAAWvW,EAE5B,IAAI7F,KAAK0N,QAAU1M,EAAQua,MAAM8F,QAAS,CAGxC,GAAI8I,GAAOnqB,KAAKue,eAAe3L,EAAM0R,OACrCyD,GAAIO,UAAY,EAChBP,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOlW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIlH,SAIN,GAAI9N,EAEFA,GADE/S,KAAK0N,QAAU1M,EAAQua,MAAMgG,QACxB6G,EAAQ,EAAI,EAAEA,GAAWxV,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAGpFiL,CAGT,IAAIkE,EAEFA,GADEtsB,KAAKyb,gBACE1I,GAAQH,EAAMwR,MAAMlG,EAGpBnL,IAAS/S,KAAKmc,IAAI+B,EAAIle,KAAKkc,OAAOkE,gBAEhC,EAATkM,IACFA,EAAS,EAGX,IAAIjf,GAAK9B,EAAOwV,CACZ/gB,MAAK0N,QAAU1M,EAAQua,MAAM+F,UAE/BjU,EAAqE,KAA9D,GAAKuF,EAAMA,MAAMtO,MAAQtE,KAAKmd,UAAYnd,KAAKuE,MAAMD,OAC5DiH,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAE7BrN,KAAK0N,QAAU1M,EAAQua,MAAMgG,SACpChW,EAAQvL,KAAKyd,SACbsD,EAAc/gB,KAAK0d,iBAInBrQ,EAA+E,KAAxE,GAAKuF,EAAMA,MAAMsL,EAAIle,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAC9DxQ,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAItC0a,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzd,EAChBwc,EAAIa,YACJb,EAAIwE,IAAI3Z,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,EAAG6Z,EAAQ,EAAW,EAAR9nB,KAAKgoB,IAAM,GAC9DzE,EAAInH,OACJmH,EAAIlH,YAQR7f,EAAQkT,UAAUyT,eAAiB,WACjC,GAEI9hB,GAAG4mB,EAAGC,EAASC,EAFfpM,EAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAC9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAGye,OACrEtkB,MAAKoc,WAAWvW,GAAGkmB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY9lB,UAAY8lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGa,GAC3B,MAAOA,GAAEslB,KAAOnmB,EAAEmmB,KAEpB/rB,MAAKoc,WAAWnF,KAAK+U,EAGrB,IAAIY,GAAS5sB,KAAKqd,UAAY,EAC1BwP,EAAS7sB,KAAKsd,UAAY,CAC9B,KAAKzX,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAGIwH,GAAK9B,EAAOwV,EAHZnO,EAAQ5S,KAAKoc,WAAWvW,EAIxB7F,MAAK0N,QAAU1M,EAAQua,MAAM4F,UAE/B9T,EAAqE,KAA9D,GAAKuF,EAAMA,MAAMtO,MAAQtE,KAAKmd,UAAYnd,KAAKuE,MAAMD,OAC5DiH,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAE7BrN,KAAK0N,QAAU1M,EAAQua,MAAM6F,SACpC7V,EAAQvL,KAAKyd,SACbsD,EAAc/gB,KAAK0d,iBAInBrQ,EAA+E,KAAxE,GAAKuF,EAAMA,MAAMsL,EAAIle,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAC9DxQ,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAIlCrN,KAAK0N,QAAU1M,EAAQua,MAAM6F,UAC/BwL,EAAU5sB,KAAKqd,UAAY,IAAOzK,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY,GAAM,IAC/G0P,EAAU7sB,KAAKsd,UAAY,IAAO1K,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY,GAAM,IAIjH,IAAIjI,GAAKlV,KACLwe,EAAU5L,EAAMA,MAChB3K,IACD2K,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KAElEoG,IACD1R,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,OAInE/U,GAAIW,QAAQ,SAAUmb,GACpBA,EAAIM,OAASnP,EAAGqJ,eAAewF,EAAInR,SAErC0R,EAAO1b,QAAQ,SAAUmb,GACvBA,EAAIM,OAASnP,EAAGqJ,eAAewF,EAAInR,QAIrC,IAAIka,KACDH,QAAS1kB,EAAK8kB,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAC7D+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,QAKnG,KAHAA,EAAMka,SAAWA,EAGZL,EAAI,EAAGA,EAAIK,EAAS9mB,OAAQymB,IAAK,CACpCC,EAAUI,EAASL,EACnB,IAAIQ,GAAcjtB,KAAK0e,2BAA2BgO,EAAQK,OAC1DL,GAAQX,KAAO/rB,KAAKyb,gBAAkBwR,EAAYjnB,UAAYinB,EAAY/O,EAwB5E,IAjBA4O,EAAS7V,KAAK,SAAUrR,EAAGa,GACzB,GAAIymB,GAAOzmB,EAAEslB,KAAOnmB,EAAEmmB,IACtB,OAAImB,GAAaA,EAGbtnB,EAAE+mB,UAAY1kB,EAAY,EAC1BxB,EAAEkmB,UAAY1kB,EAAY,GAGvB,IAIT8f,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzd,EAEXkhB,EAAI,EAAGA,EAAIK,EAAS9mB,OAAQymB,IAC/BC,EAAUI,EAASL,GACnBE,EAAUD,EAAQC,QAClB5E,EAAIa,YACJb,EAAIc,OAAO8D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAInH,OACJmH,EAAIlH,YAUV7f,EAAQkT,UAAUwT,gBAAkB,WAClC,GAEE9U,GAAO/M,EAFL0a,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAG1B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAE9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,EAc9B,IAVIrkB,KAAKoc,WAAWpW,OAAS,IAC3B4M,EAAQ5S,KAAKoc,WAAW,GAExB2L,EAAIO,UAAY,EAChBP,EAAIY,YAAc,OAClBZ,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,IAIrC5M,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IACtC+M,EAAQ5S,KAAKoc,WAAWvW,GACxBkiB,EAAIe,OAAOlW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,EAItCzS,MAAKoc,WAAWpW,OAAS,GAC3B+hB,EAAIlH,WASR7f,EAAQkT,UAAUiR,aAAe,SAAStb,GAWxC,GAVAA,EAAQA,GAAS/B,OAAO+B,MAIpB7J,KAAKmtB,gBACPntB,KAAKotB,WAAWvjB,GAIlB7J,KAAKmtB,eAAiBtjB,EAAMwjB,MAAyB,IAAhBxjB,EAAMwjB,MAAiC,IAAjBxjB,EAAMyjB,OAC5DttB,KAAKmtB,gBAAmBntB,KAAKutB,UAAlC,CAGAvtB,KAAKwtB,YAAc7P,EAAU9T,GAC7B7J,KAAKytB,YAAc3P,EAAUjU,GAE7B7J,KAAK0tB,WAAa,GAAI9oB,MAAK5E,KAAKqQ,OAChCrQ,KAAK2tB,SAAW,GAAI/oB,MAAK5E,KAAKsQ,KAC9BtQ,KAAK4tB,iBAAmB5tB,KAAKkc,OAAO4K,iBAEpC9mB,KAAKsgB,MAAM5S,MAAMmgB,OAAS,MAK1B,IAAI3Y,GAAKlV,IACTA,MAAK8tB,YAAc,SAAUjkB,GAAQqL,EAAG6Y,aAAalkB,IACrD7J,KAAKguB,UAAc,SAAUnkB,GAAQqL,EAAGkY,WAAWvjB,IACnDlJ,EAAKuI,iBAAiB8I,SAAU,YAAakD,EAAG4Y,aAChDntB,EAAKuI,iBAAiB8I,SAAU,UAAWkD,EAAG8Y,WAC9CrtB,EAAKiJ,eAAeC,KAStB7I,EAAQkT,UAAU6Z,aAAe,SAAUlkB,GACzCA,EAAQA,GAAS/B,OAAO+B,KAGxB,IAAIokB,GAAQ5H,WAAW1I,EAAU9T,IAAU7J,KAAKwtB,YAC5CU,EAAQ7H,WAAWvI,EAAUjU,IAAU7J,KAAKytB,YAE5CU,EAAgBnuB,KAAK4tB,iBAAiBpH,WAAayH,EAAQ,IAC3DG,EAAcpuB,KAAK4tB,iBAAiBnH,SAAWyH,EAAQ,IAEvDG,EAAY,EACZC,EAAY9pB,KAAK4a,IAAIiP,EAAY,IAAM,EAAI7pB,KAAKgoB,GAIhDhoB,MAAKknB,IAAIlnB,KAAK4a,IAAI+O,IAAkBG,IACtCH,EAAgB3pB,KAAK+pB,MAAOJ,EAAgB3pB,KAAKgoB,IAAOhoB,KAAKgoB,GAAK,MAEhEhoB,KAAKknB,IAAIlnB,KAAK+a,IAAI4O,IAAkBG,IACtCH,GAAiB3pB,KAAK+pB,MAAOJ,EAAe3pB,KAAKgoB,GAAK,IAAQ,IAAOhoB,KAAKgoB,GAAK,MAI7EhoB,KAAKknB,IAAIlnB,KAAK4a,IAAIgP,IAAgBE,IACpCF,EAAc5pB,KAAK+pB,MAAOH,EAAc5pB,KAAKgoB,IAAOhoB,KAAKgoB,IAEvDhoB,KAAKknB,IAAIlnB,KAAK+a,IAAI6O,IAAgBE,IACpCF,GAAe5pB,KAAK+pB,MAAOH,EAAa5pB,KAAKgoB,GAAK,IAAQ,IAAOhoB,KAAKgoB,IAGxExsB,KAAKkc,OAAOwK,eAAeyH,EAAeC,GAC1CpuB,KAAKyiB,QAGL,IAAI+L,GAAaxuB,KAAK6mB,mBACtB7mB,MAAKyuB,KAAK,uBAAwBD,GAElC7tB,EAAKiJ,eAAeC,IAStB7I,EAAQkT,UAAUkZ,WAAa,SAAUvjB,GACvC7J,KAAKsgB,MAAM5S,MAAMmgB,OAAS,OAC1B7tB,KAAKmtB,gBAAiB,EAGtBxsB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAK8tB,aACrDntB,EAAK+I,oBAAoBsI,SAAU,UAAahS,KAAKguB,WACrDrtB,EAAKiJ,eAAeC,IAOtB7I,EAAQkT,UAAUuR,WAAa,SAAU5b,GACvC,GAAI4P,GAAQ,IACRiV,EAAe1uB,KAAKsgB,MAAM1Y,wBAC1B+mB,EAAShR,EAAU9T,GAAS6kB,EAAa7mB,KACzC+mB,EAAS9Q,EAAUjU,GAAS6kB,EAAazmB,GAE7C,IAAKjI,KAAK8b,YAAV,CASA,GALI9b,KAAK6uB,gBACPvU,aAAata,KAAK6uB,gBAIhB7uB,KAAKmtB,eAEP,WADAntB,MAAK8uB,cAIP,IAAI9uB,KAAKonB,SAAWpnB,KAAKonB,QAAQ2H,UAAW,CAE1C,GAAIA,GAAY/uB,KAAKgvB,iBAAiBL,EAAQC,EAC1CG,KAAc/uB,KAAKonB,QAAQ2H,YAEzBA,EACF/uB,KAAKivB,aAAaF,GAGlB/uB,KAAK8uB,oBAIN,CAEH,GAAI5Z,GAAKlV,IACTA,MAAK6uB,eAAiBtU,WAAW,WAC/BrF,EAAG2Z,eAAiB,IAGpB,IAAIE,GAAY7Z,EAAG8Z,iBAAiBL,EAAQC,EACxCG,IACF7Z,EAAG+Z,aAAaF,IAEjBtV,MAOPzY,EAAQkT,UAAUmR,cAAgB,SAASxb,GACzC7J,KAAKutB,WAAY,CAEjB,IAAIrY,GAAKlV,IACTA,MAAKkvB,YAAc,SAAUrlB,GAAQqL,EAAGia,aAAatlB,IACrD7J,KAAKovB,WAAc,SAAUvlB,GAAQqL,EAAGma,YAAYxlB,IACpDlJ,EAAKuI,iBAAiB8I,SAAU,YAAakD,EAAGga,aAChDvuB,EAAKuI,iBAAiB8I,SAAU,WAAYkD,EAAGka,YAE/CpvB,KAAKmlB,aAAatb,IAMpB7I,EAAQkT,UAAUib,aAAe,SAAStlB,GACxC7J,KAAK+tB,aAAalkB,IAMpB7I,EAAQkT,UAAUmb,YAAc,SAASxlB,GACvC7J,KAAKutB,WAAY,EAEjB5sB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAKkvB,aACrDvuB,EAAK+I,oBAAoBsI,SAAU,WAAchS,KAAKovB,YAEtDpvB,KAAKotB,WAAWvjB,IASlB7I,EAAQkT,UAAUqR,SAAW,SAAS1b,GAC/BA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAIylB,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAW,IAChB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAO,GAMpBF,EAAO,CACT,GAAIG,GAAYzvB,KAAKkc,OAAOkE,eACxBsP,EAAYD,GAAa,EAAIH,EAAQ,GAEzCtvB,MAAKkc,OAAO0K,aAAa8I,GACzB1vB,KAAKyiB,SAELziB,KAAK8uB,eAIP,GAAIN,GAAaxuB,KAAK6mB,mBACtB7mB,MAAKyuB,KAAK,uBAAwBD,GAKlC7tB,EAAKiJ,eAAeC,IAUtB7I,EAAQkT,UAAUyb,gBAAkB,SAAU/c,EAAOgd,GAKnD,QAASC,GAAMrd,GACb,MAAOA,GAAI,EAAI,EAAQ,EAAJA,EAAQ,GAAK,EALlC,GAAI5M,GAAIgqB,EAAS,GACfnpB,EAAImpB,EAAS,GACbnvB,EAAImvB,EAAS,GAMXE,EAAKD,GAAMppB,EAAE+L,EAAI5M,EAAE4M,IAAMI,EAAMH,EAAI7M,EAAE6M,IAAMhM,EAAEgM,EAAI7M,EAAE6M,IAAMG,EAAMJ,EAAI5M,EAAE4M,IACrEud,EAAKF,GAAMpvB,EAAE+R,EAAI/L,EAAE+L,IAAMI,EAAMH,EAAIhM,EAAEgM,IAAMhS,EAAEgS,EAAIhM,EAAEgM,IAAMG,EAAMJ,EAAI/L,EAAE+L,IACrEwd,EAAKH,GAAMjqB,EAAE4M,EAAI/R,EAAE+R,IAAMI,EAAMH,EAAIhS,EAAEgS,IAAM7M,EAAE6M,EAAIhS,EAAEgS,IAAMG,EAAMJ,EAAI/R,EAAE+R,GAGzE,SAAc,GAANsd,GAAiB,GAANC,GAAWD,GAAMC,GAC3B,GAANA,GAAiB,GAANC,GAAWD,GAAMC,GACtB,GAANF,GAAiB,GAANE,GAAWF,GAAME,IAUjChvB,EAAQkT,UAAU8a,iBAAmB,SAAUxc,EAAGC,GAChD,GAAI5M,GACFoqB,EAAU,IACVlB,EAAY,KACZmB,EAAmB,KACnBC,EAAc,KACdpD,EAAS,GAAI3rB,GAAQoR,EAAGC,EAE1B,IAAIzS,KAAK0N,QAAU1M,EAAQua,MAAM2F,KAC/BlhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAE7B,IAAKvb,EAAI7F,KAAKoc,WAAWpW,OAAS,EAAGH,GAAK,EAAGA,IAAK,CAChDkpB,EAAY/uB,KAAKoc,WAAWvW,EAC5B,IAAIinB,GAAYiC,EAAUjC,QAC1B,IAAIA,EACF,IAAK,GAAIvgB,GAAIugB,EAAS9mB,OAAS,EAAGuG,GAAK,EAAGA,IAAK,CAE7C,GAAImgB,GAAUI,EAASvgB,GACnBogB,EAAUD,EAAQC,QAClByD,GAAazD,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,QAC9DgM,GAAa1D,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAClE,IAAIrkB,KAAK2vB,gBAAgB5C,EAAQqD,IAC/BpwB,KAAK2vB,gBAAgB5C,EAAQsD,GAE7B,MAAOtB,QAQf,KAAKlpB,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3CkpB,EAAY/uB,KAAKoc,WAAWvW,EAC5B,IAAI+M,GAAQmc,EAAU1K,MACtB,IAAIzR,EAAO,CACT,GAAI0d,GAAQ9rB,KAAKknB,IAAIlZ,EAAII,EAAMJ,GAC3B+d,EAAQ/rB,KAAKknB,IAAIjZ,EAAIG,EAAMH,GAC3BsZ,EAAQvnB,KAAKgsB,KAAKF,EAAQA,EAAQC,EAAQA,IAEzB,OAAhBJ,GAA+BA,EAAPpE,IAA8BkE,EAAPlE,IAClDoE,EAAcpE,EACdmE,EAAmBnB,IAO3B,MAAOmB,IAQTlvB,EAAQkT,UAAU+a,aAAe,SAAUF,GACzC,GAAI5b,GAASsd,EAAMC,CAEd1wB,MAAKonB,SAiCRjU,EAAUnT,KAAKonB,QAAQuJ,IAAIxd,QAC3Bsd,EAAQzwB,KAAKonB,QAAQuJ,IAAIF,KACzBC,EAAQ1wB,KAAKonB,QAAQuJ,IAAID,MAlCzBvd,EAAUnB,SAASM,cAAc,OACjCa,EAAQzF,MAAMkX,SAAW,WACzBzR,EAAQzF,MAAMsX,QAAU,OACxB7R,EAAQzF,MAAMZ,OAAS,oBACvBqG,EAAQzF,MAAMnC,MAAQ,UACtB4H,EAAQzF,MAAMb,WAAa,wBAC3BsG,EAAQzF,MAAMkjB,aAAe,MAC7Bzd,EAAQzF,MAAMmjB,UAAY,qCAE1BJ,EAAOze,SAASM,cAAc,OAC9Bme,EAAK/iB,MAAMkX,SAAW,WACtB6L,EAAK/iB,MAAM6F,OAAS,OACpBkd,EAAK/iB,MAAM4F,MAAQ,IACnBmd,EAAK/iB,MAAMojB,WAAa,oBAExBJ,EAAM1e,SAASM,cAAc,OAC7Boe,EAAIhjB,MAAMkX,SAAW,WACrB8L,EAAIhjB,MAAM6F,OAAS,IACnBmd,EAAIhjB,MAAM4F,MAAQ,IAClBod,EAAIhjB,MAAMZ,OAAS,oBACnB4jB,EAAIhjB,MAAMkjB,aAAe,MAEzB5wB,KAAKonB,SACH2H,UAAW,KACX4B,KACExd,QAASA,EACTsd,KAAMA,EACNC,IAAKA,KAUX1wB,KAAK8uB,eAEL9uB,KAAKonB,QAAQ2H,UAAYA,EAEvB5b,EAAQ8R,UADsB,kBAArBjlB,MAAK8b,YACM9b,KAAK8b,YAAYiT,EAAUnc,OAG3B,6BACMmc,EAAUnc,MAAMJ,EAAI,gCACpBuc,EAAUnc,MAAMH,EAAI,gCACpBsc,EAAUnc,MAAMsL,EAAI,qBAIhD/K,EAAQzF,MAAM7F,KAAQ,IACtBsL,EAAQzF,MAAMzF,IAAQ,IACtBjI,KAAKsgB,MAAMpO,YAAYiB,GACvBnT,KAAKsgB,MAAMpO,YAAYue,GACvBzwB,KAAKsgB,MAAMpO,YAAYwe,EAGvB,IAAIK,GAAgB5d,EAAQ6d,YACxBC,EAAkB9d,EAAQ+d,aAC1BC,EAAgBV,EAAKS,aACrBE,EAAcV,EAAIM,YAClBK,EAAgBX,EAAIQ,aAEpBrpB,EAAOknB,EAAU1K,OAAO7R,EAAIue,EAAe,CAC/ClpB,GAAOrD,KAAKL,IAAIK,KAAKJ,IAAIyD,EAAM,IAAK7H,KAAKsgB,MAAME,YAAc,GAAKuQ,GAElEN,EAAK/iB,MAAM7F,KAASknB,EAAU1K,OAAO7R,EAAI,KACzCie,EAAK/iB,MAAMzF,IAAU8mB,EAAU1K,OAAO5R,EAAI0e,EAAc,KACxDhe,EAAQzF,MAAM7F,KAAQA,EAAO,KAC7BsL,EAAQzF,MAAMzF,IAAS8mB,EAAU1K,OAAO5R,EAAI0e,EAAaF,EAAiB,KAC1EP,EAAIhjB,MAAM7F,KAAWknB,EAAU1K,OAAO7R,EAAI4e,EAAW,EAAK,KAC1DV,EAAIhjB,MAAMzF,IAAW8mB,EAAU1K,OAAO5R,EAAI4e,EAAY,EAAK,MAO7DrwB,EAAQkT,UAAU4a,aAAe,WAC/B,GAAI9uB,KAAKonB,QAAS,CAChBpnB,KAAKonB,QAAQ2H,UAAY,IAEzB,KAAK,GAAI7oB,KAAQlG,MAAKonB,QAAQuJ,IAC5B,GAAI3wB,KAAKonB,QAAQuJ,IAAIxqB,eAAeD,GAAO,CACzC,GAAIyB,GAAO3H,KAAKonB,QAAQuJ,IAAIzqB,EACxByB,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWyH,YAAYjK,MA8BtC9H,EAAOD,QAAUoB,GAKb,SAASnB,EAAQD,EAASM,GAc9B,QAASgB,KACPlB,KAAKsxB,YAAc,GAAIjwB,GACvBrB,KAAKuxB,eACLvxB,KAAKuxB,YAAY/K,WAAa,EAC9BxmB,KAAKuxB,YAAY9K,SAAW,EAC5BzmB,KAAKwxB,UAAY,IAEjBxxB,KAAKyxB,eAAiB,GAAIpwB,GAC1BrB,KAAK0xB,eAAkB,GAAIrwB,GAAQ,GAAImD,KAAKgoB,GAAI,EAAG,GAEnDxsB,KAAK2xB,6BAtBP,GAAItwB,GAAUnB,EAAoB,GA+BlCgB,GAAOgT,UAAUoK,eAAiB,SAAS9L,EAAGC,EAAGyL,GAC/Cle,KAAKsxB,YAAY9e,EAAIA,EACrBxS,KAAKsxB,YAAY7e,EAAIA,EACrBzS,KAAKsxB,YAAYpT,EAAIA,EAErBle,KAAK2xB,8BAWPzwB,EAAOgT,UAAUwS,eAAiB,SAASF,EAAYC,GAClC5f,SAAf2f,IACFxmB,KAAKuxB,YAAY/K,WAAaA,GAGf3f,SAAb4f,IACFzmB,KAAKuxB,YAAY9K,SAAWA,EACxBzmB,KAAKuxB,YAAY9K,SAAW,IAAGzmB,KAAKuxB,YAAY9K,SAAW,GAC3DzmB,KAAKuxB,YAAY9K,SAAW,GAAIjiB,KAAKgoB,KAAIxsB,KAAKuxB,YAAY9K,SAAW,GAAIjiB,KAAKgoB,MAGjE3lB,SAAf2f,GAAyC3f,SAAb4f,IAC9BzmB,KAAK2xB,8BAQTzwB,EAAOgT,UAAU4S,eAAiB,WAChC,GAAI8K,KAIJ,OAHAA,GAAIpL,WAAaxmB,KAAKuxB,YAAY/K,WAClCoL,EAAInL,SAAWzmB,KAAKuxB,YAAY9K,SAEzBmL,GAOT1wB,EAAOgT,UAAU0S,aAAe,SAAS5gB,GACxBa,SAAXb,IAGJhG,KAAKwxB,UAAYxrB,EAKbhG,KAAKwxB,UAAY,MAAMxxB,KAAKwxB,UAAY,KACxCxxB,KAAKwxB,UAAY,IAAKxxB,KAAKwxB,UAAY,GAE3CxxB,KAAK2xB,+BAOPzwB,EAAOgT,UAAUkM,aAAe,WAC9B,MAAOpgB,MAAKwxB,WAOdtwB,EAAOgT,UAAU8K,kBAAoB,WACnC,MAAOhf,MAAKyxB,gBAOdvwB,EAAOgT,UAAUmL,kBAAoB,WACnC,MAAOrf,MAAK0xB,gBAOdxwB,EAAOgT,UAAUyd,2BAA6B,WAE5C3xB,KAAKyxB,eAAejf,EAAIxS,KAAKsxB,YAAY9e,EAAIxS,KAAKwxB,UAAYhtB,KAAK4a,IAAIpf,KAAKuxB,YAAY/K,YAAchiB,KAAK+a,IAAIvf,KAAKuxB,YAAY9K,UAChIzmB,KAAKyxB,eAAehf,EAAIzS,KAAKsxB,YAAY7e,EAAIzS,KAAKwxB,UAAYhtB,KAAK+a,IAAIvf,KAAKuxB,YAAY/K,YAAchiB,KAAK+a,IAAIvf,KAAKuxB,YAAY9K,UAChIzmB,KAAKyxB,eAAevT,EAAIle,KAAKsxB,YAAYpT,EAAIle,KAAKwxB,UAAYhtB,KAAK4a,IAAIpf,KAAKuxB,YAAY9K,UAGxFzmB,KAAK0xB,eAAelf,EAAIhO,KAAKgoB,GAAG,EAAIxsB,KAAKuxB,YAAY9K,SACrDzmB,KAAK0xB,eAAejf,EAAI,EACxBzS,KAAK0xB,eAAexT,GAAKle,KAAKuxB,YAAY/K,YAG5C3mB,EAAOD,QAAUsB,GAIb,SAASrB,EAAQD,EAASM,GAW9B,QAASiB,GAAQsS,EAAMsO,EAAQ8P,GAC7B7xB,KAAKyT,KAAOA,EACZzT,KAAK+hB,OAASA,EACd/hB,KAAK6xB,MAAQA,EAEb7xB,KAAK0I,MAAQ7B,OACb7G,KAAKsE,MAAQuC,OAGb7G,KAAK6X,OAASga,EAAM7P,kBAAkBvO,EAAKwC,MAAOjW,KAAK+hB,QAGvD/hB,KAAK6X,OAAOZ,KAAK,SAAUrR,EAAGa,GAC5B,MAAOb,GAAIa,EAAI,EAAQA,EAAJb,EAAQ,GAAK,IAG9B5F,KAAK6X,OAAO7R,OAAS,GACvBhG,KAAK8pB,YAAY,GAInB9pB,KAAKoc,cAELpc,KAAKM,QAAS,EACdN,KAAK8xB,eAAiBjrB,OAElBgrB,EAAM5V,kBACRjc,KAAKM,QAAS,EACdN,KAAK+xB,oBAGL/xB,KAAKM,QAAS,EAxClB,GAAIQ,GAAWZ,EAAoB,EAiDnCiB,GAAO+S,UAAU8d,SAAW,WAC1B,MAAOhyB,MAAKM,QAQda,EAAO+S,UAAU+d,kBAAoB,WAInC,IAHA,GAAInsB,GAAM9F,KAAK6X,OAAO7R,OAElBH,EAAI,EACD7F,KAAKoc,WAAWvW,IACrBA,GAGF,OAAOrB,MAAK+pB,MAAM1oB,EAAIC,EAAM,MAQ9B3E,EAAO+S,UAAU+V,SAAW,WAC1B,MAAOjqB,MAAK6xB,MAAMxW,aAQpBla,EAAO+S,UAAUge,UAAY,WAC3B,MAAOlyB,MAAK+hB,QAOd5gB,EAAO+S,UAAUgW,iBAAmB,WAClC,MAAmBrjB,UAAf7G,KAAK0I,MACA7B,OAEF7G,KAAK6X,OAAO7X,KAAK0I;EAO1BvH,EAAO+S,UAAUie,UAAY,WAC3B,MAAOnyB,MAAK6X,QAQd1W,EAAO+S,UAAUyB,SAAW,SAASjN,GACnC,GAAIA,GAAS1I,KAAK6X,OAAO7R,OACvB,KAAM,2BAER,OAAOhG,MAAK6X,OAAOnP,IASrBvH,EAAO+S,UAAU4P,eAAiB,SAASpb,GAIzC,GAHc7B,SAAV6B,IACFA,EAAQ1I,KAAK0I,OAED7B,SAAV6B,EACF,QAEF,IAAI0T,EACJ,IAAIpc,KAAKoc,WAAW1T,GAClB0T,EAAapc,KAAKoc,WAAW1T,OAE1B,CACH,GAAI2F,KACJA,GAAE0T,OAAS/hB,KAAK+hB,OAChB1T,EAAE/J,MAAQtE,KAAK6X,OAAOnP,EAEtB,IAAI0pB,GAAW,GAAItxB,GAASd,KAAKyT,MAAMiB,OAAQ,SAAU5E,GAAO,MAAQA,GAAKzB,EAAE0T,SAAW1T,EAAE/J,SAAW2R,KACvGmG,GAAapc,KAAK6xB,MAAM/N,eAAesO,GAEvCpyB,KAAKoc,WAAW1T,GAAS0T,EAG3B,MAAOA,IAQTjb,EAAO+S,UAAUsO,kBAAoB,SAAS3Z,GAC5C7I,KAAK8xB,eAAiBjpB,GASxB1H,EAAO+S,UAAU4V,YAAc,SAASphB,GACtC,GAAIA,GAAS1I,KAAK6X,OAAO7R,OACvB,KAAM,2BAERhG,MAAK0I,MAAQA,EACb1I,KAAKsE,MAAQtE,KAAK6X,OAAOnP,IAO3BvH,EAAO+S,UAAU6d,iBAAmB,SAASrpB,GAC7B7B,SAAV6B,IACFA,EAAQ,EAEV,IAAI4X,GAAQtgB,KAAK6xB,MAAMvR,KAEvB,IAAI5X,EAAQ1I,KAAK6X,OAAO7R,OAAQ,CAC9B,CAAqBhG,KAAK8jB,eAAepb,GAIlB7B,SAAnByZ,EAAM+R,WACR/R,EAAM+R,SAAWrgB,SAASM,cAAc,OACxCgO,EAAM+R,SAAS3kB,MAAMkX,SAAW,WAChCtE,EAAM+R,SAAS3kB,MAAMnC,MAAQ,OAC7B+U,EAAMpO,YAAYoO,EAAM+R,UAE1B,IAAIA,GAAWryB,KAAKiyB,mBACpB3R,GAAM+R,SAASpN,UAAY,wBAA0BoN,EAAW,IAEhE/R,EAAM+R,SAAS3kB,MAAM4W,OAAS,OAC9BhE,EAAM+R,SAAS3kB,MAAM7F,KAAO,MAE5B,IAAIqN,GAAKlV,IACTua,YAAW,WAAYrF,EAAG6c,iBAAiBrpB,EAAM,IAAM,IACvD1I,KAAKM,QAAS,MAGdN,MAAKM,QAAS,EAGSuG,SAAnByZ,EAAM+R,WACR/R,EAAM1O,YAAY0O,EAAM+R,UACxB/R,EAAM+R,SAAWxrB,QAGf7G,KAAK8xB,gBACP9xB,KAAK8xB,kBAIXjyB,EAAOD,QAAUuB,GAKb,SAAStB,GAOb,QAASuB,GAASoR,EAAGC,GACnBzS,KAAKwS,EAAU3L,SAAN2L,EAAkBA,EAAI,EAC/BxS,KAAKyS,EAAU5L,SAAN4L,EAAkBA,EAAI,EAGjC5S,EAAOD,QAAUwB,GAKb,SAASvB,GAQb,QAASwB,GAAQmR,EAAGC,EAAGyL,GACrBle,KAAKwS,EAAU3L,SAAN2L,EAAkBA,EAAI,EAC/BxS,KAAKyS,EAAU5L,SAAN4L,EAAkBA,EAAI,EAC/BzS,KAAKke,EAAUrX,SAANqX,EAAkBA,EAAI,EASjC7c,EAAQ6qB,SAAW,SAAStmB,EAAGa,GAC7B,GAAI6rB,GAAM,GAAIjxB,EAId,OAHAixB,GAAI9f,EAAI5M,EAAE4M,EAAI/L,EAAE+L,EAChB8f,EAAI7f,EAAI7M,EAAE6M,EAAIhM,EAAEgM,EAChB6f,EAAIpU,EAAItY,EAAEsY,EAAIzX,EAAEyX,EACToU,GASTjxB,EAAQ2S,IAAM,SAASpO,EAAGa,GACxB,GAAI8rB,GAAM,GAAIlxB,EAId,OAHAkxB,GAAI/f,EAAI5M,EAAE4M,EAAI/L,EAAE+L,EAChB+f,EAAI9f,EAAI7M,EAAE6M,EAAIhM,EAAEgM,EAChB8f,EAAIrU,EAAItY,EAAEsY,EAAIzX,EAAEyX,EACTqU,GASTlxB,EAAQ2rB,IAAM,SAASpnB,EAAGa,GACxB,MAAO,IAAIpF,IACFuE,EAAE4M,EAAI/L,EAAE+L,GAAK,GACb5M,EAAE6M,EAAIhM,EAAEgM,GAAK,GACb7M,EAAEsY,EAAIzX,EAAEyX,GAAK,IAWxB7c,EAAQgrB,aAAe,SAASzmB,EAAGa,GACjC,GAAI2lB,GAAe,GAAI/qB,EAMvB,OAJA+qB,GAAa5Z,EAAI5M,EAAE6M,EAAIhM,EAAEyX,EAAItY,EAAEsY,EAAIzX,EAAEgM,EACrC2Z,EAAa3Z,EAAI7M,EAAEsY,EAAIzX,EAAE+L,EAAI5M,EAAE4M,EAAI/L,EAAEyX,EACrCkO,EAAalO,EAAItY,EAAE4M,EAAI/L,EAAEgM,EAAI7M,EAAE6M,EAAIhM,EAAE+L,EAE9B4Z,GAQT/qB,EAAQ6S,UAAUlO,OAAS,WACzB,MAAOxB,MAAKgsB,KACJxwB,KAAKwS,EAAIxS,KAAKwS,EACdxS,KAAKyS,EAAIzS,KAAKyS,EACdzS,KAAKke,EAAIle,KAAKke,IAIxBre,EAAOD,QAAUyB,GAKb,SAASxB,EAAQD,EAASM,GAa9B,QAASoB,GAAOkZ,EAAWtL,GACzB,GAAkBrI,SAAd2T,EACF,KAAM,qCAKR,IAHAxa,KAAKwa,UAAYA,EACjBxa,KAAKypB,QAAWva,GAA8BrI,QAAnBqI,EAAQua,QAAwBva,EAAQua,SAAU,EAEzEzpB,KAAKypB,QAAS,CAChBzpB,KAAKsgB,MAAQtO,SAASM,cAAc,OAEpCtS,KAAKsgB,MAAM5S,MAAM4F,MAAQ,OACzBtT,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKwa,UAAUtI,YAAYlS,KAAKsgB,OAEhCtgB,KAAKsgB,MAAMkS,KAAOxgB,SAASM,cAAc,SACzCtS,KAAKsgB,MAAMkS,KAAKrrB,KAAO,SACvBnH,KAAKsgB,MAAMkS,KAAKluB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMkS,MAElCxyB,KAAKsgB,MAAM0F,KAAOhU,SAASM,cAAc,SACzCtS,KAAKsgB,MAAM0F,KAAK7e,KAAO,SACvBnH,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM0F,MAElChmB,KAAKsgB,MAAM+I,KAAOrX,SAASM,cAAc,SACzCtS,KAAKsgB,MAAM+I,KAAKliB,KAAO,SACvBnH,KAAKsgB,MAAM+I,KAAK/kB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM+I,MAElCrpB,KAAKsgB,MAAMmS,IAAMzgB,SAASM,cAAc,SACxCtS,KAAKsgB,MAAMmS,IAAItrB,KAAO,SACtBnH,KAAKsgB,MAAMmS,IAAI/kB,MAAMkX,SAAW,WAChC5kB,KAAKsgB,MAAMmS,IAAI/kB,MAAMZ,OAAS,gBAC9B9M,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,MAAQ,QAC7BtT,KAAKsgB,MAAMmS,IAAI/kB,MAAM6F,OAAS,MAC9BvT,KAAKsgB,MAAMmS,IAAI/kB,MAAMkjB,aAAe,MACpC5wB,KAAKsgB,MAAMmS,IAAI/kB,MAAMglB,gBAAkB,MACvC1yB,KAAKsgB,MAAMmS,IAAI/kB,MAAMZ,OAAS,oBAC9B9M,KAAKsgB,MAAMmS,IAAI/kB,MAAMiT,gBAAkB,UACvC3gB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMmS,KAElCzyB,KAAKsgB,MAAMqS,MAAQ3gB,SAASM,cAAc,SAC1CtS,KAAKsgB,MAAMqS,MAAMxrB,KAAO,SACxBnH,KAAKsgB,MAAMqS,MAAMjlB,MAAMiN,OAAS,MAChC3a,KAAKsgB,MAAMqS,MAAMruB,MAAQ,IACzBtE,KAAKsgB,MAAMqS,MAAMjlB,MAAMkX,SAAW,WAClC5kB,KAAKsgB,MAAMqS,MAAMjlB,MAAM7F,KAAO,SAC9B7H,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMqS,MAGlC,IAAIzd,GAAKlV,IACTA,MAAKsgB,MAAMqS,MAAMzN,YAAc,SAAUrb,GAAQqL,EAAGiQ,aAAatb,IACjE7J,KAAKsgB,MAAMkS,KAAKI,QAAU,SAAU/oB,GAAQqL,EAAGsd,KAAK3oB,IACpD7J,KAAKsgB,MAAM0F,KAAK4M,QAAU,SAAU/oB,GAAQqL,EAAG2d,WAAWhpB,IAC1D7J,KAAKsgB,MAAM+I,KAAKuJ,QAAU,SAAU/oB,GAAQqL,EAAGmU,KAAKxf,IAGtD7J,KAAK8yB,iBAAmBjsB,OAExB7G,KAAK6X,UACL7X,KAAK0I,MAAQ7B,OAEb7G,KAAK+yB,YAAclsB,OACnB7G,KAAKgzB,aAAe,IACpBhzB,KAAKizB,UAAW,EA3ElB,GAAItyB,GAAOT,EAAoB,EAiF/BoB,GAAO4S,UAAUse,KAAO,WACtB,GAAI9pB,GAAQ1I,KAAK6pB,UACbnhB,GAAQ,IACVA,IACA1I,KAAKkzB,SAASxqB,KAOlBpH,EAAO4S,UAAUmV,KAAO,WACtB,GAAI3gB,GAAQ1I,KAAK6pB,UACbnhB,GAAQ1I,KAAK6X,OAAO7R,OAAS,IAC/B0C,IACA1I,KAAKkzB,SAASxqB,KAOlBpH,EAAO4S,UAAUif,SAAW,WAC1B,GAAI9iB,GAAQ,GAAIzL,MAEZ8D,EAAQ1I,KAAK6pB,UACbnhB,GAAQ1I,KAAK6X,OAAO7R,OAAS,GAC/B0C,IACA1I,KAAKkzB,SAASxqB,IAEP1I,KAAKizB,WAEZvqB,EAAQ,EACR1I,KAAKkzB,SAASxqB,GAGhB,IAAI4H,GAAM,GAAI1L,MACVsoB,EAAQ5c,EAAMD,EAId+iB,EAAW5uB,KAAKJ,IAAIpE,KAAKgzB,aAAe9F,EAAM,GAG9ChY,EAAKlV,IACTA,MAAK+yB,YAAcxY,WAAW,WAAYrF,EAAGie,YAAcC,IAM7D9xB,EAAO4S,UAAU2e,WAAa,WACHhsB,SAArB7G,KAAK+yB,YACP/yB,KAAKgmB,OAELhmB,KAAKkmB,QAOT5kB,EAAO4S,UAAU8R,KAAO,WAElBhmB,KAAK+yB,cAET/yB,KAAKmzB,WAEDnzB,KAAKsgB,QACPtgB,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,UAO5BhD,EAAO4S,UAAUgS,KAAO,WACtBmN,cAAcrzB,KAAK+yB,aACnB/yB,KAAK+yB,YAAclsB,OAEf7G,KAAKsgB,QACPtgB,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,SAQ5BhD,EAAO4S,UAAU6V,oBAAsB,SAASlhB,GAC9C7I,KAAK8yB,iBAAmBjqB,GAO1BvH,EAAO4S,UAAUyV,gBAAkB,SAASyJ,GAC1CpzB,KAAKgzB,aAAeI,GAOtB9xB,EAAO4S,UAAUof,gBAAkB,WACjC,MAAOtzB,MAAKgzB,cASd1xB,EAAO4S,UAAUqf,YAAc,SAASC,GACtCxzB,KAAKizB,SAAWO,GAOlBlyB,EAAO4S,UAAUuf,SAAW,WACI5sB,SAA1B7G,KAAK8yB,kBACP9yB,KAAK8yB,oBAOTxxB,EAAO4S,UAAUuO,OAAS,WACxB,GAAIziB,KAAKsgB,MAAO,CAEdtgB,KAAKsgB,MAAMmS,IAAI/kB,MAAMzF,IAAOjI,KAAKsgB,MAAMuF,aAAa,EAChD7lB,KAAKsgB,MAAMmS,IAAIvB,aAAa,EAAK,KACrClxB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,MAAStT,KAAKsgB,MAAME,YACrCxgB,KAAKsgB,MAAMkS,KAAKhS,YAChBxgB,KAAKsgB,MAAM0F,KAAKxF,YAChBxgB,KAAKsgB,MAAM+I,KAAK7I,YAAc,GAAO,IAGzC,IAAI3Y,GAAO7H,KAAK0zB,YAAY1zB,KAAK0I,MACjC1I,MAAKsgB,MAAMqS,MAAMjlB,MAAM7F,KAAO,EAAS,OAS3CvG,EAAO4S,UAAUwV,UAAY,SAAS7R,GACpC7X,KAAK6X,OAASA,EAEV7X,KAAK6X,OAAO7R,OAAS,EACvBhG,KAAKkzB,SAAS,GAEdlzB,KAAK0I,MAAQ7B,QAOjBvF,EAAO4S,UAAUgf,SAAW,SAASxqB,GACnC,KAAIA,EAAQ1I,KAAK6X,OAAO7R,QAOtB,KAAM,2BANNhG,MAAK0I,MAAQA,EAEb1I,KAAKyiB,SACLziB,KAAKyzB,YAWTnyB,EAAO4S,UAAU2V,SAAW,WAC1B,MAAO7pB,MAAK0I,OAQdpH,EAAO4S,UAAU+B,IAAM,WACrB,MAAOjW,MAAK6X,OAAO7X,KAAK0I,QAI1BpH,EAAO4S,UAAUiR,aAAe,SAAStb,GAEvC,GAAIsjB,GAAiBtjB,EAAMwjB,MAAyB,IAAhBxjB,EAAMwjB,MAAiC,IAAjBxjB,EAAMyjB,MAChE,IAAKH,EAAL,CAEAntB,KAAK2zB,aAAe9pB,EAAM+T,QAC1B5d,KAAK4zB,YAAcvN,WAAWrmB,KAAKsgB,MAAMqS,MAAMjlB,MAAM7F,MAErD7H,KAAKsgB,MAAM5S,MAAMmgB,OAAS,MAK1B,IAAI3Y,GAAKlV,IACTA,MAAK8tB,YAAc,SAAUjkB,GAAQqL,EAAG6Y,aAAalkB,IACrD7J,KAAKguB,UAAc,SAAUnkB,GAAQqL,EAAGkY,WAAWvjB,IACnDlJ,EAAKuI,iBAAiB8I,SAAU,YAAahS,KAAK8tB,aAClDntB,EAAKuI,iBAAiB8I,SAAU,UAAahS,KAAKguB,WAClDrtB,EAAKiJ,eAAeC,KAItBvI,EAAO4S,UAAU2f,YAAc,SAAUhsB,GACvC,GAAIyL,GAAQ+S,WAAWrmB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,OACxCtT,KAAKsgB,MAAMqS,MAAMnS,YAAc,GAC/BhO,EAAI3K,EAAO,EAEXa,EAAQlE,KAAK+pB,MAAM/b,EAAIc,GAAStT,KAAK6X,OAAO7R,OAAO,GAIvD,OAHY,GAAR0C,IAAWA,EAAQ,GACnBA,EAAQ1I,KAAK6X,OAAO7R,OAAO,IAAG0C,EAAQ1I,KAAK6X,OAAO7R,OAAO,GAEtD0C,GAGTpH,EAAO4S,UAAUwf,YAAc,SAAUhrB,GACvC,GAAI4K,GAAQ+S,WAAWrmB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,OACxCtT,KAAKsgB,MAAMqS,MAAMnS,YAAc,GAE/BhO,EAAI9J,GAAS1I,KAAK6X,OAAO7R,OAAO,GAAKsN,EACrCzL,EAAO2K,EAAI,CAEf,OAAO3K,IAKTvG,EAAO4S,UAAU6Z,aAAe,SAAUlkB,GACxC,GAAIqjB,GAAOrjB,EAAM+T,QAAU5d,KAAK2zB,aAC5BnhB,EAAIxS,KAAK4zB,YAAc1G,EAEvBxkB,EAAQ1I,KAAK6zB,YAAYrhB,EAE7BxS,MAAKkzB,SAASxqB,GAEd/H,EAAKiJ,kBAIPtI,EAAO4S,UAAUkZ,WAAa,WAC5BptB,KAAKsgB,MAAM5S,MAAMmgB,OAAS,OAG1BltB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAK8tB,aACrDntB,EAAK+I,oBAAoBsI,SAAU,UAAWhS,KAAKguB,WAEnDrtB,EAAKiJ,kBAGP/J,EAAOD,QAAU0B,GAKb,SAASzB,GA2Bb,QAAS0B,GAAW8O,EAAOC,EAAK6Y,EAAMkB,GAEpCrqB,KAAK8zB,OAAS,EACd9zB,KAAK+zB,KAAO,EACZ/zB,KAAKg0B,MAAQ,EACbh0B,KAAKqqB,YAAa,EAClBrqB,KAAKi0B,UAAY,EAEjBj0B,KAAKk0B,SAAW,EAChBl0B,KAAKm0B,SAAS9jB,EAAOC,EAAK6Y,EAAMkB,GAYlC9oB,EAAW2S,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK6Y,EAAMkB,GACzDrqB,KAAK8zB,OAASzjB,EAAQA,EAAQ,EAC9BrQ,KAAK+zB,KAAOzjB,EAAMA,EAAM,EAExBtQ,KAAKo0B,QAAQjL,EAAMkB,IASrB9oB,EAAW2S,UAAUkgB,QAAU,SAASjL,EAAMkB,GAC/BxjB,SAATsiB,GAA8B,GAARA,IAGPtiB,SAAfwjB,IACFrqB,KAAKqqB,WAAaA,GAGlBrqB,KAAKg0B,MADHh0B,KAAKqqB,cAAe,EACT9oB,EAAW8yB,oBAAoBlL,GAE/BA,IAUjB5nB,EAAW8yB,oBAAsB,SAAUlL,GACzC,GAAImL,GAAQ,SAAU9hB,GAAI,MAAOhO,MAAK+vB,IAAI/hB,GAAKhO,KAAKgwB,MAGhDC,EAAQjwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,KACtCwL,EAAQ,EAAInwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,EAAO,KACjDyL,EAAQ,EAAIpwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,EAAO,KAGjDkB,EAAaoK,CASjB,OARIjwB,MAAKknB,IAAIiJ,EAAQxL,IAAS3kB,KAAKknB,IAAIrB,EAAalB,KAAOkB,EAAasK,GACpEnwB,KAAKknB,IAAIkJ,EAAQzL,IAAS3kB,KAAKknB,IAAIrB,EAAalB,KAAOkB,EAAauK,GAGtD,GAAdvK,IACFA,EAAa,GAGRA,GAOT9oB,EAAW2S,UAAUkV,WAAa,WAChC,MAAO/C,YAAWrmB,KAAKk0B,SAASW,YAAY70B,KAAKi0B,aAOnD1yB,EAAW2S,UAAU4gB,QAAU,WAC7B,MAAO90B,MAAKg0B,OAOdzyB,EAAW2S,UAAU7D,MAAQ,WAC3BrQ,KAAKk0B,SAAWl0B,KAAK8zB,OAAS9zB,KAAK8zB,OAAS9zB,KAAKg0B,OAMnDzyB,EAAW2S,UAAUmV,KAAO,WAC1BrpB,KAAKk0B,UAAYl0B,KAAKg0B,OAOxBzyB,EAAW2S,UAAU5D,IAAM,WACzB,MAAQtQ,MAAKk0B,SAAWl0B,KAAK+zB,MAG/Bl0B,EAAOD,QAAU2B,GAKb,SAAS1B,EAAQD,EAASM,GAuB9B,QAASsB,GAAUgZ,EAAWvY,EAAO8yB,EAAQ7lB,GAC3C,KAAMlP,eAAgBwB,IACpB,KAAM,IAAIiZ,aAAY,mDAIxB,MAAMnU,MAAMC,QAAQwuB,IAAWA,YAAkBl0B,IAAWk0B,YAAkBj0B,KAAai0B,YAAkBnuB,QAAQ,CACnH,GAAIouB,GAAgB9lB,CACpBA,GAAU6lB,EACVA,EAASC,EAGX,GAAI9f,GAAKlV,IACTA,MAAKi1B,gBACH5kB,MAAO,KACPC,IAAO,KAEP4kB,YAAY,EAEZC,YAAa,SACb7hB,MAAO,KACPC,OAAQ,KACR6hB,UAAW,KACXC,UAAW,MAEbr1B,KAAKkP,QAAUvO,EAAKmG,cAAe9G,KAAKi1B,gBAGxCj1B,KAAKs1B,QAAQ9a,GAGbxa,KAAKgC,cAELhC,KAAKu1B,MACH5E,IAAK3wB,KAAK2wB,IACV6E,SAAUx1B,KAAKqG,MACfovB,SACEnhB,GAAItU,KAAKsU,GAAGohB,KAAK11B,MACjByU,IAAKzU,KAAKyU,IAAIihB,KAAK11B,MACnByuB,KAAMzuB,KAAKyuB,KAAKiH,KAAK11B,OAEvB21B,eACAh1B,MACEi1B,SAAU,WACR,MAAO1gB,GAAG2gB,SAAS1M,KAAK5kB,OAE1BuwB,QAAS,WACP,MAAO5f,GAAG2gB,SAAS1M,KAAKA,MAG1B2M,SAAU5gB,EAAG6gB,UAAUL,KAAKxgB,GAC5B8gB,eAAgB9gB,EAAG+gB,gBAAgBP,KAAKxgB,GACxCghB,OAAQhhB,EAAGihB,QAAQT,KAAKxgB,GACxBkhB,aAAelhB,EAAGmhB,cAAcX,KAAKxgB,KAKzClV,KAAKs2B,MAAQ,GAAIz0B,GAAM7B,KAAKu1B,MAC5Bv1B,KAAKgC,WAAWuG,KAAKvI,KAAKs2B,OAC1Bt2B,KAAKu1B,KAAKe,MAAQt2B,KAAKs2B,MAGvBt2B,KAAK61B,SAAW,GAAI5yB,GAASjD,KAAKu1B,MAClCv1B,KAAKu2B,UAAY,KACjBv2B,KAAKgC,WAAWuG,KAAKvI,KAAK61B,UAG1B71B,KAAKw2B,YAAc,GAAIh0B,GAAYxC,KAAKu1B,MACxCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKw2B,aAI1Bx2B,KAAKy2B,WAAa,GAAIh0B,GAAWzC,KAAKu1B,MACtCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKy2B,YAG1Bz2B,KAAK02B,QAAU,GAAI5zB,GAAQ9C,KAAKu1B,MAChCv1B,KAAKgC,WAAWuG,KAAKvI,KAAK02B,SAE1B12B,KAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAElB52B,KAAKsU,GAAG,MAAO,SAAUzK,GACvBqL,EAAGuZ,KAAK,QAASvZ,EAAG2hB,mBAAmBhtB,MAEzC7J,KAAKsU,GAAG,YAAa,SAAUzK,GAC7BqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,MAE/C7J,KAAK2wB,IAAIjxB,KAAKo3B,cAAgB,SAAUjtB,GACtCqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,KAI3CqF,GACFlP,KAAKiU,WAAW/E,GAId6lB,GACF/0B,KAAK+2B,UAAUhC,GAIb9yB,EACFjC,KAAKg3B,SAAS/0B,GAGdjC,KAAKi3B,UAjIT,GAEIt2B,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B2B,EAAQ3B,EAAoB,IAC5Bg3B,EAAOh3B,EAAoB,IAC3B+C,EAAW/C,EAAoB,IAC/BsC,EAActC,EAAoB,IAClCuC,EAAavC,EAAoB,IACjC4C,EAAU5C,EAAoB,GA4HlCsB,GAAS0S,UAAY,GAAIgjB,GAOzB11B,EAAS0S,UAAUuO,OAAS,WAC1BziB,KAAK02B,SAAW12B,KAAK02B,QAAQS,WAAWC,cAAc,IACtDp3B,KAAKi3B,WAOPz1B,EAAS0S,UAAU8iB,SAAW,SAAS/0B,GACrC,GAGIo1B,GAHAC,EAAiC,MAAlBt3B,KAAK22B,SAwBxB,IAhBEU,EAJGp1B,EAGIA,YAAiBpB,IAAWoB,YAAiBnB,GACvCmB,EAIA,GAAIpB,GAAQoB,GACvBkF,MACEkJ,MAAO,OACPC,IAAK,UAVI,KAgBftQ,KAAK22B,UAAYU,EACjBr3B,KAAK02B,SAAW12B,KAAK02B,QAAQM,SAASK,GAElCC,EACF,GAA0BzwB,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAAkB,CACpE,GAA0BzJ,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAClD,GAAIinB,GAAYv3B,KAAKw3B,eAGvB,IAAInnB,GAA8BxJ,QAAtB7G,KAAKkP,QAAQmB,MAAqBrQ,KAAKkP,QAAQmB,MAAQknB,EAAUlnB,MACzEC,EAA4BzJ,QAApB7G,KAAKkP,QAAQoB,IAAqBtQ,KAAKkP,QAAQoB,IAAQinB,EAAUjnB,GAE7EtQ,MAAKy3B,UAAUpnB,EAAOC,GAAMonB,SAAS,QAGrC13B,MAAK23B,KAAKD,SAAS,KASzBl2B,EAAS0S,UAAU6iB,UAAY,SAAShC,GAEtC,GAAIsC,EAKFA,GAJGtC,EAGIA,YAAkBl0B,IAAWk0B,YAAkBj0B,GACzCi0B,EAIA,GAAIl0B,GAAQk0B,GAPZ,KAUf/0B,KAAK42B,WAAaS,EAClBr3B,KAAK02B,QAAQK,UAAUM,IAmBzB71B,EAAS0S,UAAU0jB,aAAe,SAAS1hB,EAAKhH,GAC9ClP,KAAK02B,SAAW12B,KAAK02B,QAAQkB,aAAa1hB,GAEtChH,GAAWA,EAAQ2oB,OACrB73B,KAAK63B,MAAM3hB,EAAKhH,IAQpB1N,EAAS0S,UAAU4jB,aAAe,WAChC,MAAO93B,MAAK02B,SAAW12B,KAAK02B,QAAQoB,oBAetCt2B,EAAS0S,UAAU2jB,MAAQ,SAASx3B,EAAI6O,GACtC,GAAKlP,KAAK22B,WAAmB9vB,QAANxG,EAAvB,CAEA,GAAI6V,GAAM5P,MAAMC,QAAQlG,GAAMA,GAAMA,GAGhCs2B,EAAY32B,KAAK22B,UAAU9f,aAAaZ,IAAIC,GAC9C/O,MACEkJ,MAAO,OACPC,IAAK,UAKLD,EAAQ,KACRC,EAAM,IAcV,IAbAqmB,EAAU/tB,QAAQ,SAAUmvB,GAC1B,GAAIxrB,GAAIwrB,EAAS1nB,MAAMhJ,UACnBiD,EAAI,OAASytB,GAAWA,EAASznB,IAAIjJ,UAAY0wB,EAAS1nB,MAAMhJ,WAEtD,OAAVgJ,GAAsBA,EAAJ9D,KACpB8D,EAAQ9D,IAGE,OAAR+D,GAAgBhG,EAAIgG,KACtBA,EAAMhG,KAII,OAAV+F,GAA0B,OAARC,EAAc,CAElC,GAAIT,IAAUQ,EAAQC,GAAO,EACzB8iB,EAAW5uB,KAAKJ,IAAKpE,KAAKs2B,MAAMhmB,IAAMtQ,KAAKs2B,MAAMjmB,MAAwB,KAAfC,EAAMD,IAEhEqnB,EAAWxoB,GAA+BrI,SAApBqI,EAAQwoB,QAAyBxoB,EAAQwoB,SAAU,CAC7E13B,MAAKs2B,MAAMnC,SAAStkB,EAASujB,EAAW,EAAGvjB,EAASujB,EAAW,EAAGsE,MAUtEl2B,EAAS0S,UAAU8jB,aAAe,WAEhC,GAAIC,GAAUj4B,KAAK22B,UAAU9f,aAC3B1S,EAAM,KACNC,EAAM,IAER,IAAI6zB,EAAS,CAEX,GAAIC,GAAUD,EAAQ9zB,IAAI,QAC1BA,GAAM+zB,EAAUv3B,EAAKuG,QAAQgxB,EAAQ7nB,MAAO,QAAQhJ,UAAY,IAKhE,IAAI8wB,GAAeF,EAAQ7zB,IAAI,QAC3B+zB,KACF/zB,EAAMzD,EAAKuG,QAAQixB,EAAa9nB,MAAO,QAAQhJ,UAEjD,IAAI+wB,GAAaH,EAAQ7zB,IAAI,MACzBg0B,KAEAh0B,EADS,MAAPA,EACIzD,EAAKuG,QAAQkxB,EAAW9nB,IAAK,QAAQjJ,UAGrC7C,KAAKJ,IAAIA,EAAKzD,EAAKuG,QAAQkxB,EAAW9nB,IAAK,QAAQjJ,YAK/D,OACElD,IAAa,MAAPA,EAAe,GAAIS,MAAKT,GAAO,KACrCC,IAAa,MAAPA,EAAe,GAAIQ,MAAKR,GAAO,OAUzC5C,EAAS0S,UAAU2iB,mBAAqB,SAAUhtB,GAChD,GAAIiG,GAAQ9P,KAAK02B,QAAQ2B,eAAexuB,GACpC6I,EAAQ1S,KAAK02B,QAAQ4B,gBAAgBzuB,GACrC0uB,EAAQ1uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAOwL,MAAQ1uB,EAAM0uB,MAC3DE,EAAQ5uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAO0L,MAAQ5uB,EAAM4uB,MAC3DjmB,EAAI+lB,EAAQ53B,EAAK+G,gBAAgB1H,KAAK2wB,IAAI+H,iBAC1CjmB,EAAIgmB,EAAQ93B,EAAKqH,eAAehI,KAAK2wB,IAAI+H,iBAEzCC,EAAO34B,KAAK02B,QAAQxnB,QAAQypB,MAAQ,KACpCp0B,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UACtB8D,EAAO54B,KAAKm2B,QAAQ3jB,GACpBqmB,EAAcF,EAAOA,EAAKC,EAAMr0B,EAAO4kB,GAAQyP,EAE/CzvB,EAAUxI,EAAKoJ,UAAUF,GACzBivB,EAAO,IASX,OARY,OAARhpB,EAAkEgpB,EAAO,OACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK61B,SAASlF,IAAIoI,YAAmBD,EAAO,OACpE94B,KAAKu2B,WAAa51B,EAAKyJ,UAAUjB,EAASnJ,KAAKu2B,UAAU5F,IAAIoI,YAAcD,EAAO,OAClFn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK02B,QAAQ/F,IAAIqI,UAAoBF,EAAO,cACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKy2B,WAAWhE,KAAqBqG,EAAO,cACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKw2B,YAAY/D,KAAoBqG,EAAO,eACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK2wB,IAAI5D,UAA4B+L,EAAO,eAG3EjvB,MAAOA,EACPiG,KAAMA,EAAOA,EAAKzP,GAAK,KACvBqS,MAAOA,EAAQA,EAAMumB,QAAU,KAC/BH,KAAMA,EACNP,MAAOA,EACPE,MAAOA,EACPjmB,EAAGA,EACHC,EAAGA,EACHmmB,KAAMA,EACNC,YAAaA,IAIjBh5B,EAAOD,QAAU4B,GAKb,SAAS3B,EAAQD,EAASM,GAsB9B,QAASuB,GAAS+Y,EAAWvY,EAAO8yB,EAAQ7lB,GAE1C,KAAM5I,MAAMC,QAAQwuB,IAAWA,YAAkBl0B,KAAYk0B,YAAkBnuB,QAAQ,CACrF,GAAIouB,GAAgB9lB,CACpBA,GAAU6lB,EACVA,EAASC,EAGX,GAAI9f,GAAKlV,IACTA,MAAKi1B,gBACH5kB,MAAO,KACPC,IAAO,KAEP4kB,YAAY,EAEZC,YAAa,SACb7hB,MAAO,KACPC,OAAQ,KACR6hB,UAAW,KACXC,UAAW,MAEbr1B,KAAKkP,QAAUvO,EAAKmG,cAAe9G,KAAKi1B,gBAGxCj1B,KAAKs1B,QAAQ9a,GAGbxa,KAAKgC,cAELhC,KAAKu1B,MACH5E,IAAK3wB,KAAK2wB,IACV6E,SAAUx1B,KAAKqG,MACfovB,SACEnhB,GAAItU,KAAKsU,GAAGohB,KAAK11B,MACjByU,IAAKzU,KAAKyU,IAAIihB,KAAK11B,MACnByuB,KAAMzuB,KAAKyuB,KAAKiH,KAAK11B,OAEvB21B,eACAh1B,MACEm1B,SAAU5gB,EAAG6gB,UAAUL,KAAKxgB,GAC5B8gB,eAAgB9gB,EAAG+gB,gBAAgBP,KAAKxgB,GACxCghB,OAAQhhB,EAAGihB,QAAQT,KAAKxgB,GACxBkhB,aAAelhB,EAAGmhB,cAAcX,KAAKxgB,KAKzClV,KAAKs2B,MAAQ,GAAIz0B,GAAM7B,KAAKu1B,MAC5Bv1B,KAAKgC,WAAWuG,KAAKvI,KAAKs2B,OAC1Bt2B,KAAKu1B,KAAKe,MAAQt2B,KAAKs2B,MAGvBt2B,KAAK61B,SAAW,GAAI5yB,GAASjD,KAAKu1B,MAClCv1B,KAAKgC,WAAWuG,KAAKvI,KAAK61B,UAI1B71B,KAAKw2B,YAAc,GAAIh0B,GAAYxC,KAAKu1B,MACxCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKw2B,aAI1Bx2B,KAAKy2B,WAAa,GAAIh0B,GAAWzC,KAAKu1B,MACtCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKy2B,YAG1Bz2B,KAAKk5B,UAAY,GAAIl2B,GAAUhD,KAAKu1B,MACpCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKk5B,WAE1Bl5B,KAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAElB52B,KAAKsU,GAAG,MAAO,SAAUzK,GACvBqL,EAAGuZ,KAAK,QAASvZ,EAAG2hB,mBAAmBhtB,MAEzC7J,KAAKsU,GAAG,YAAa,SAAUzK,GAC7BqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,MAE/C7J,KAAK2wB,IAAIjxB,KAAKo3B,cAAgB,SAAUjtB,GACtCqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,KAI3CqF,GACFlP,KAAKiU,WAAW/E,GAId6lB,GACF/0B,KAAK+2B,UAAUhC,GAIb9yB,EACFjC,KAAKg3B,SAAS/0B,GAGdjC,KAAKi3B,UArHT,GAEIt2B,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B2B,EAAQ3B,EAAoB,IAC5Bg3B,EAAOh3B,EAAoB,IAC3B+C,EAAW/C,EAAoB,IAC/BsC,EAActC,EAAoB,IAClCuC,EAAavC,EAAoB,IACjC8C,EAAY9C,EAAoB,GAgHpCuB,GAAQyS,UAAY,GAAIgjB,GAMxBz1B,EAAQyS,UAAU8iB,SAAW,SAAS/0B,GACpC,GAGIo1B,GAHAC,EAAiC,MAAlBt3B,KAAK22B,SAwBxB,IAhBEU,EAJGp1B,EAGIA,YAAiBpB,IAAWoB,YAAiBnB,GACvCmB,EAIA,GAAIpB,GAAQoB,GACvBkF,MACEkJ,MAAO,OACPC,IAAK,UAVI,KAgBftQ,KAAK22B,UAAYU,EACjBr3B,KAAKk5B,WAAal5B,KAAKk5B,UAAUlC,SAASK,GAEtCC,EACF,GAA0BzwB,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAAkB,CACpE,GAAID,GAA8BxJ,QAAtB7G,KAAKkP,QAAQmB,MAAqBrQ,KAAKkP,QAAQmB,MAAQ,KAC/DC,EAA4BzJ,QAApB7G,KAAKkP,QAAQoB,IAAqBtQ,KAAKkP,QAAQoB,IAAM,IAEjEtQ,MAAKy3B,UAAUpnB,EAAOC,GAAMonB,SAAS,QAGrC13B,MAAK23B,KAAKD,SAAS,KASzBj2B,EAAQyS,UAAU6iB,UAAY,SAAShC,GAErC,GAAIsC,EAKFA,GAJGtC,EAGIA,YAAkBl0B,IAAWk0B,YAAkBj0B,GACzCi0B,EAIA,GAAIl0B,GAAQk0B,GAPZ,KAUf/0B,KAAK42B,WAAaS,EAClBr3B,KAAKk5B,UAAUnC,UAAUM,IAS3B51B,EAAQyS,UAAUilB,UAAY,SAASF,EAAS3lB,EAAOC,GAGrD,MAFe1M,UAAXyM,IAAuBA,EAAS,IACrBzM,SAAX0M,IAAuBA,EAAS,IACG1M,SAAnC7G,KAAKk5B,UAAUnE,OAAOkE,GACjBj5B,KAAKk5B,UAAUnE,OAAOkE,GAASE,UAAU7lB,EAAMC,GAG/C,qBAAwB0lB,GASnCx3B,EAAQyS,UAAUklB,eAAiB,SAASH,GAC1C,MAAuCpyB,UAAnC7G,KAAKk5B,UAAUnE,OAAOkE,GAChBj5B,KAAKk5B,UAAUnE,OAAOkE,GAASxP,UAAkE5iB,SAAtD7G,KAAKk5B,UAAUhqB,QAAQ6lB,OAAOsE,WAAWJ,IAA+E,GAArDj5B,KAAKk5B,UAAUhqB,QAAQ6lB,OAAOsE,WAAWJ,KAGxJ,GAWXx3B,EAAQyS,UAAU8jB,aAAe,WAC/B,GAAI7zB,GAAM,KACNC,EAAM,IAGV,KAAK,GAAI60B,KAAWj5B,MAAKk5B,UAAUnE,OACjC,GAAI/0B,KAAKk5B,UAAUnE,OAAO5uB,eAAe8yB,IACO,GAA1Cj5B,KAAKk5B,UAAUnE,OAAOkE,GAASxP,QACjC,IAAK,GAAI5jB,GAAI,EAAGA,EAAI7F,KAAKk5B,UAAUnE,OAAOkE,GAAStC,UAAU3wB,OAAQH,IAAK,CACxE,GAAIiK,GAAO9P,KAAKk5B,UAAUnE,OAAOkE,GAAStC,UAAU9wB,GAChDvB,EAAQ3D,EAAKuG,QAAQ4I,EAAK0C,EAAG,QAAQnL,SACzClD,GAAa,MAAPA,EAAcG,EAAQH,EAAMG,EAAQA,EAAQH,EAClDC,EAAa,MAAPA,EAAcE,EAAcA,EAANF,EAAcE,EAAQF,EAM1D,OACED,IAAa,MAAPA,EAAe,GAAIS,MAAKT,GAAO,KACrCC,IAAa,MAAPA,EAAe,GAAIQ,MAAKR,GAAO,OAWzC3C,EAAQyS,UAAU2iB,mBAAqB,SAAUhtB,GAC/C,GAAI0uB,GAAQ1uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAOwL,MAAQ1uB,EAAM0uB,MAC3DE,EAAQ5uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAO0L,MAAQ5uB,EAAM4uB,MAC3DjmB,EAAI+lB,EAAQ53B,EAAK+G,gBAAgB1H,KAAK2wB,IAAI+H,iBAC1CjmB,EAAIgmB,EAAQ93B,EAAKqH,eAAehI,KAAK2wB,IAAI+H,iBACzCE,EAAO54B,KAAKm2B,QAAQ3jB,GAEpBrJ,EAAUxI,EAAKoJ,UAAUF,GACzBivB,EAAO,IACPn4B,GAAKyJ,UAAUjB,EAASnJ,KAAK61B,SAASlF,IAAIoI,YAA2BD,EAAO,OACvE94B,KAAKu2B,WAAa51B,EAAKyJ,UAAUjB,EAASnJ,KAAKu2B,UAAU5F,IAAIoI,YAAcD,EAAO,OAClFn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUI,UAAU3I,IAAIrQ,OAAWwY,EAAO,YACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUK,WAAW5I,IAAIrQ,OAAUwY,EAAO,YACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUM,WAAW7I,IAAIrQ,OAAUwY,EAAO,SACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUO,YAAY9I,IAAIrQ,OAASwY,EAAO,SACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKy2B,WAAWhE,KAAwBqG,EAAO,cACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKw2B,YAAY/D,KAAuBqG,EAAO,eACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK2wB,IAAI5D,UAA+B+L,EAAO,aAEhF,IAAIx0B,MACAg1B,EAAYt5B,KAAKk5B,UAAUI,UAC3BC,EAAav5B,KAAKk5B,UAAUK,UAQhC,OAPKD,GAAUI,QACbp1B,EAAMiE,KAAK+wB,EAAUK,cAAclnB,IAEhC8mB,EAAWG,QACdp1B,EAAMiE,KAAKgxB,EAAWI,cAAclnB,KAIpC5I,MAAOA,EACPivB,KAAMA,EACNP,MAAOA,EACPE,MAAOA,EACPjmB,EAAGA,EACHC,EAAGA,EACHmmB,KAAMA,EACNt0B,MAAOA,IAKXzE,EAAOD,QAAU6B,GAKb,SAAS5B,EAAQD,EAASM,GAK9B,GAAI2D,GAAS3D,EAAoB,GAQjCN,GAAQg6B,qBAAuB,SAASrE,EAAMI,GAE5C,GADAJ,EAAKI,eACDA,GACgC,GAA9BrvB,MAAMC,QAAQovB,GAAsB,CACtC,IAAK,GAAI9vB,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IACtC,GAA8BgB,SAA1B8uB,EAAY9vB,GAAGg0B,OAAsB,CACvC,GAAIC,KACJA,GAASzpB,MAAQxM,EAAO8xB,EAAY9vB,GAAGwK,OAAO9I,SAASF,UACvDyyB,EAASxpB,IAAMzM,EAAO8xB,EAAY9vB,GAAGyK,KAAK/I,SAASF,UACnDkuB,EAAKI,YAAYptB,KAAKuxB,GAG1BvE,EAAKI,YAAY1e,KAAK,SAAUrR,EAAGa,GACjC,MAAOb,GAAEyK,MAAQ5J,EAAE4J,UAY3BzQ,EAAQm6B,kBAAoB,SAAUxE,EAAMI,GAC1C,GAAIA,GAAuD9uB,SAAxC0uB,EAAKC,SAASkD,gBAAgBplB,MAAqB,CACpE1T,EAAQg6B,qBAAqBrE,EAAMI,EAQnC,KAAK,GANDtlB,GAAQxM,EAAO0xB,EAAKe,MAAMjmB,OAC1BC,EAAMzM,EAAO0xB,EAAKe,MAAMhmB,KAExB0pB,EAAczE,EAAKe,MAAMhmB,IAAMilB,EAAKe,MAAMjmB,MAC1C4pB,EAAYD,EAAazE,EAAKC,SAASkD,gBAAgBplB,MAElDzN,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IACtC,GAA8BgB,SAA1B8uB,EAAY9vB,GAAGg0B,OAAsB,CACvC,GAAIK,GAAYr2B,EAAO8xB,EAAY9vB,GAAGwK,OAClC8pB,EAAUt2B,EAAO8xB,EAAY9vB,GAAGyK,IAEpC,IAAoB,gBAAhB4pB,EAAUE,GACZ,KAAM,IAAIx2B,OAAM,qCAAuC+xB,EAAY9vB,GAAGwK,MAExE,IAAkB,gBAAd8pB,EAAQC,GACV,KAAM,IAAIx2B,OAAM,mCAAqC+xB,EAAY9vB,GAAGyK,IAGtE,IAAIC,GAAW4pB,EAAUD,CACzB,IAAI3pB,GAAY,EAAI0pB,EAAW,CAE7B,GAAIvP,GAAS,EACT2P,EAAW/pB,EAAIgqB,OACnB,QAAQ3E,EAAY9vB,GAAGg0B,QACrB,IAAK,QACCK,EAAUK,OAASJ,EAAQI,QAC7B7P,EAAS,GAEXwP,EAAUM,UAAUnqB,EAAMmqB,aAC1BN,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,QAErBiO,EAAQK,UAAUnqB,EAAMmqB,aACxBL,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAIxB,EAAO,QAE5B2P,EAASrmB,IAAI,EAAG,QAChB,MACF,KAAK,SACH,GAAI0mB,GAAYP,EAAQjN,KAAKgN,EAAU,QACnCK,EAAML,EAAUK,KAGpBL,GAAUS,KAAKtqB,EAAMsqB,QACrBT,EAAUU,MAAMvqB,EAAMuqB,SACtBV,EAAUO,KAAKpqB,EAAMoqB,QACrBN,EAAUD,EAAUI,QAGpBJ,EAAUK,IAAIA,GACdJ,EAAQI,IAAIA,GACZJ,EAAQnmB,IAAI0mB,EAAU,QAEtBR,EAAUhO,SAAS,EAAE,SACrBiO,EAAQjO,SAAS,EAAE,SAEnBmO,EAASrmB,IAAI,EAAG,QAChB,MACF,KAAK,UACCkmB,EAAUU,SAAWT,EAAQS,UAC/BlQ,EAAS,GAEXwP,EAAUU,MAAMvqB,EAAMuqB,SACtBV,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,UAErBiO,EAAQS,MAAMvqB,EAAMuqB,SACpBT,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAE,UACnBiO,EAAQnmB,IAAI0W,EAAO,UAEnB2P,EAASrmB,IAAI,EAAG,SAChB,MACF,KAAK,SACCkmB,EAAUO,QAAUN,EAAQM,SAC9B/P,EAAS,GAEXwP,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,SACrBiO,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAE,SACnBiO,EAAQnmB,IAAI0W,EAAO,SAEnB2P,EAASrmB,IAAI,EAAG,QAChB,MACF,SAEE,WADA6mB,SAAQtG,IAAI,2EAA4EoB,EAAY9vB,GAAGg0B,QAG3G,KAAmBQ,EAAZH,GAEL,OADA3E,EAAKI,YAAYptB,MAAM8H,MAAO6pB,EAAU7yB,UAAWiJ,IAAK6pB,EAAQ9yB,YACxDsuB,EAAY9vB,GAAGg0B,QACrB,IAAK,QACHK,EAAUlmB,IAAI,EAAG,QACjBmmB,EAAQnmB,IAAI,EAAG,OACf,MACF,KAAK,SACHkmB,EAAUlmB,IAAI,EAAG,SACjBmmB,EAAQnmB,IAAI,EAAG,QACf,MACF,KAAK,UACHkmB,EAAUlmB,IAAI,EAAG,UACjBmmB,EAAQnmB,IAAI,EAAG,SACf,MACF,KAAK,SACHkmB,EAAUlmB,IAAI,EAAG,KACjBmmB,EAAQnmB,IAAI,EAAG,IACf,MACF,SAEE,WADA6mB,SAAQtG,IAAI,2EAA4EoB,EAAY9vB,GAAGg0B,QAI7GtE,EAAKI,YAAYptB,MAAM8H,MAAO6pB,EAAU7yB,UAAWiJ,IAAK6pB,EAAQ9yB,aAKtEzH,EAAQk7B,iBAAiBvF,EAEzB,IAAIwF,GAAcn7B,EAAQo7B,SAASzF,EAAKe,MAAMjmB,MAAOklB,EAAKI,aACtDsF,EAAYr7B,EAAQo7B,SAASzF,EAAKe,MAAMhmB,IAAIilB,EAAKI,aACjDuF,EAAa3F,EAAKe,MAAMjmB,MACxB8qB,EAAW5F,EAAKe,MAAMhmB,GACA,IAAtByqB,EAAYrB,SAAiBwB,EAAwC,GAA3B3F,EAAKe,MAAM8E,aAAuBL,EAAYb,UAAY,EAAIa,EAAYZ,QAAU,GAC1G,GAApBc,EAAUvB,SAAmByB,EAAsC,GAAzB5F,EAAKe,MAAM+E,WAAuBJ,EAAUf,UAAY,EAAMe,EAAUd,QAAU,IACtG,GAAtBY,EAAYrB,QAAsC,GAApBuB,EAAUvB,SAC1CnE,EAAKe,MAAMgF,YAAYJ,EAAYC,KAYzCv7B,EAAQk7B,iBAAmB,SAASvF,GAGlC,IAAK,GAFDI,GAAcJ,EAAKI,YACnB4F,KACK11B,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IACtC,IAAK,GAAI4mB,GAAI,EAAGA,EAAIkJ,EAAY3vB,OAAQymB,IAClC5mB,GAAK4mB,GAA8B,GAAzBkJ,EAAYlJ,GAAGrV,QAA2C,GAAzBue,EAAY9vB,GAAGuR,SAExDue,EAAYlJ,GAAGpc,OAASslB,EAAY9vB,GAAGwK,OAASslB,EAAYlJ,GAAGnc,KAAOqlB,EAAY9vB,GAAGyK,IACvFqlB,EAAYlJ,GAAGrV,QAAS,EAGjBue,EAAYlJ,GAAGpc,OAASslB,EAAY9vB,GAAGwK,OAASslB,EAAYlJ,GAAGpc,OAASslB,EAAY9vB,GAAGyK,KAC9FqlB,EAAY9vB,GAAGyK,IAAMqlB,EAAYlJ,GAAGnc,IACpCqlB,EAAYlJ,GAAGrV,QAAS,GAGjBue,EAAYlJ,GAAGnc,KAAOqlB,EAAY9vB,GAAGwK,OAASslB,EAAYlJ,GAAGnc,KAAOqlB,EAAY9vB,GAAGyK,MAC1FqlB,EAAY9vB,GAAGwK,MAAQslB,EAAYlJ,GAAGpc,MACtCslB,EAAYlJ,GAAGrV,QAAS,GAMhC,KAAK,GAAIvR,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAClC8vB,EAAY9vB,GAAGuR,UAAW,GAC5BmkB,EAAUhzB,KAAKotB,EAAY9vB,GAI/B0vB,GAAKI,YAAc4F,EACnBhG,EAAKI,YAAY1e,KAAK,SAAUrR,EAAGa,GACjC,MAAOb,GAAEyK,MAAQ5J,EAAE4J,SAIvBzQ,EAAQ47B,WAAa,SAASC,GAC5B,IAAK,GAAI51B,GAAG,EAAGA,EAAI41B,EAAMz1B,OAAQH,IAC/Bg1B,QAAQtG,IAAI1uB,EAAG,GAAIjB,MAAK62B,EAAM51B,GAAGwK,OAAO,GAAIzL,MAAK62B,EAAM51B,GAAGyK,KAAMmrB,EAAM51B,GAAGwK,MAAOorB,EAAM51B,GAAGyK,IAAKmrB,EAAM51B,GAAGuR,SAS3GxX,EAAQ87B,oBAAsB,SAASC,EAAUC,GAG/C,IAAK,GAFDC,IAAe,EACfC,EAAeH,EAASI,QAAQ10B,UAC3BxB,EAAI,EAAGA,EAAI81B,EAAShG,YAAY3vB,OAAQH,IAAK,CACpD,GAAIq0B,GAAYyB,EAAShG,YAAY9vB,GAAGwK,MACpC8pB,EAAUwB,EAAShG,YAAY9vB,GAAGyK,GACtC,IAAIwrB,GAAgB5B,GAA4BC,EAAf2B,EAAwB,CACvDD,GAAe,CACf,QAIJ,GAAoB,GAAhBA,GAAwBC,EAAeH,EAAS5H,KAAK1sB,WAAay0B,GAAgBF,EAAc,CAClG,GAAI1rB,GAAYrM,EAAO+3B,GACnBI,EAAWn4B,EAAOs2B,EAElBjqB,GAAUuqB,QAAUuB,EAASvB,OAASkB,EAASM,cAAe,EACzD/rB,EAAU0qB,SAAWoB,EAASpB,QAAUe,EAASO,eAAgB,EACjEhsB,EAAUsqB,aAAewB,EAASxB,cAAcmB,EAASQ,aAAc,GAEhFR,EAASI,QAAUC,EAASz0B,WAmChC3H,EAAQk2B,SAAW,SAASoB,EAAM0B,EAAMtlB,GACtC,GAAoC,GAAhC4jB,EAAK3B,KAAKI,YAAY3vB,OAAa,CACrC,GAAIo2B,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EACvC,QAAQslB,EAAKvxB,UAAY+0B,EAAW1R,QAAU0R,EAAW73B,MAGzD,GAAIm1B,GAAS95B,EAAQo7B,SAASpC,EAAM1B,EAAK3B,KAAKI,YACzB,IAAjB+D,EAAOA,SACTd,EAAOc,EAAOQ,UAGhB,IAAI3pB,GAAW3Q,EAAQy8B,yBAAyBnF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAMjmB,MAAO6mB,EAAKZ,MAAMhmB,IACpGsoB,GAAOh5B,EAAQ08B,qBAAqBpF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAOsC,EAEvE,IAAIwD,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EAAO/C,EAC9C,QAAQqoB,EAAKvxB,UAAY+0B,EAAW1R,QAAU0R,EAAW73B,OAa7D3E,EAAQs2B,OAAS,SAASgB,EAAM1kB,EAAGc,GACjC,GAAoC,GAAhC4jB,EAAK3B,KAAKI,YAAY3vB,OAAa,CACrC,GAAIo2B,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EACvC,OAAO,IAAI1O,MAAK4N,EAAI4pB,EAAW73B,MAAQ63B,EAAW1R,QAGlD,GAAI6R,GAAiB38B,EAAQy8B,yBAAyBnF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAMjmB,MAAO6mB,EAAKZ,MAAMhmB,KACtGksB,EAAgBtF,EAAKZ,MAAMhmB,IAAM4mB,EAAKZ,MAAMjmB,MAAQksB,EACpDE,EAAkBD,EAAgBhqB,EAAIc,EACtCopB,EAA4B98B,EAAQ+8B,6BAA6BzF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAOmG,GAEpGG,EAAU,GAAIh4B,MAAK83B,EAA4BD,EAAkBvF,EAAKZ,MAAMjmB,MAChF,OAAOusB,IAYXh9B,EAAQy8B,yBAA2B,SAAS1G,EAAatlB,EAAOC,GAE9D,IAAK,GADDC,GAAW,EACN1K,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAEzB4pB,IAAa7pB,GAAmBC,EAAV6pB,IACxB5pB,GAAY4pB,EAAUD,GAG1B,MAAO3pB,IAWT3Q,EAAQ08B,qBAAuB,SAAS3G,EAAaW,EAAOsC,GAG1D,MAFAA,GAAO/0B,EAAO+0B,GAAMrxB,SAASF,UAC7BuxB,GAAQh5B,EAAQi9B,wBAAwBlH,EAAYW,EAAMsC,IAI5Dh5B,EAAQi9B,wBAA0B,SAASlH,EAAaW,EAAOsC,GAC7D,GAAIkE,GAAa,CACjBlE,GAAO/0B,EAAO+0B,GAAMrxB,SAASF,SAE7B,KAAK,GAAIxB,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAEzB4pB,IAAa5D,EAAMjmB,OAAS8pB,EAAU7D,EAAMhmB,KAC1CsoB,GAAQuB,IACV2C,GAAe3C,EAAUD,GAI/B,MAAO4C,IAWTl9B,EAAQ+8B,6BAA+B,SAAShH,EAAaW,EAAOyG,GAKlE,IAAK,GAJDR,GAAiB,EACjBhsB,EAAW,EACXysB,EAAgB1G,EAAMjmB,MAEjBxK,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAE7B,IAAI4pB,GAAa5D,EAAMjmB,OAAS8pB,EAAU7D,EAAMhmB,IAAK,CAGnD,GAFAC,GAAY2pB,EAAY8C,EACxBA,EAAgB7C,EACZ5pB,GAAYwsB,EACd,KAGAR,IAAkBpC,EAAUD,GAKlC,MAAOqC,IAaT38B,EAAQq9B,mBAAqB,SAAStH,EAAaiD,EAAMsE,EAAWC,GAClE,GAAInC,GAAWp7B,EAAQo7B,SAASpC,EAAMjD,EACtC,OAAuB,IAAnBqF,EAAStB,OACK,EAAZwD,EACuB,GAArBC,EACKnC,EAASd,WAAac,EAASb,QAAUvB,GAAQ,EAGjDoC,EAASd,UAAY,EAIL,GAArBiD,EACKnC,EAASb,SAAWvB,EAAOoC,EAASd,WAAa,EAGjDc,EAASb,QAAU,EAKvBvB,GAaXh5B,EAAQo7B,SAAW,SAASpC,EAAMjD,GAChC,IAAK,GAAI9vB,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAE7B,IAAIsoB,GAAQsB,GAAoBC,EAAPvB,EACvB,OAAQc,QAAQ,EAAMQ,UAAWA,EAAWC,QAASA,GAIzD,OAAQT,QAAQ,EAAOQ,UAAWA,EAAWC,QAASA,KAKpD,SAASt6B,GA4Bb,QAAS+B,GAASyO,EAAOC,EAAK8sB,EAAaC,EAAiBC,EAAaC,GAEvEv9B,KAAK+7B,QAAU,EAEf/7B,KAAKw9B,WAAY,EACjBx9B,KAAKy9B,UAAY,EACjBz9B,KAAKmpB,KAAO,EACZnpB,KAAKuE,MAAQ,EAEbvE,KAAK09B,YACL19B,KAAK29B,UACL39B,KAAK49B,UAAY,EAEjB59B,KAAK69B,YAAc,EAAO,EAAM,EAAI,IACpC79B,KAAK89B,YAAc,IAAO,GAAM,EAAI,GAEpC99B,KAAKu9B,WAAaA,EAElBv9B,KAAKm0B,SAAS9jB,EAAOC,EAAK8sB,EAAaC,EAAiBC,GAe1D17B,EAASsS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK8sB,EAAaC,EAAiBC,GAC/Et9B,KAAK8zB,OAA6BjtB,SAApBy2B,EAAYn5B,IAAoBkM,EAAQitB,EAAYn5B,IAClEnE,KAAK+zB,KAA2BltB,SAApBy2B,EAAYl5B,IAAoBkM,EAAMgtB,EAAYl5B,IAE1DpE,KAAK8zB,QAAU9zB,KAAK+zB,OACtB/zB,KAAK8zB,QAAU,IACf9zB,KAAK+zB,MAAQ,GAGO,GAAlB/zB,KAAKw9B,WACPx9B,KAAK+9B,eAAeX,EAAaC,GAGnCr9B,KAAKg+B,SAASV,IAOhB17B,EAASsS,UAAU6pB,eAAiB,SAASX,EAAaC,GAExD,GAAItqB,GAAO/S,KAAK+zB,KAAO/zB,KAAK8zB,OACxBmK,EAAkB,IAAPlrB,EACXmrB,EAAmBd,GAAea,EAAWZ,GAC7Cc,EAAmB35B,KAAK+pB,MAAM/pB,KAAK+vB,IAAI0J,GAAUz5B,KAAKgwB,MAEtD4J,EAAe,GACfC,EAAkB75B,KAAKkwB,IAAI,GAAGyJ,GAE9B9tB,EAAQ,CACW,GAAnB8tB,IACF9tB,EAAQ8tB,EAIV,KAAK,GADDG,IAAgB,EACXz4B,EAAIwK,EAAO7L,KAAKknB,IAAI7lB,IAAMrB,KAAKknB,IAAIyS,GAAmBt4B,IAAK,CAClEw4B,EAAkB75B,KAAKkwB,IAAI,GAAG7uB,EAC9B,KAAK,GAAI4mB,GAAI,EAAGA,EAAIzsB,KAAK89B,WAAW93B,OAAQymB,IAAK,CAC/C,GAAI8R,GAAWF,EAAkBr+B,KAAK89B,WAAWrR,EACjD,IAAI8R,GAAYL,EAAkB,CAChCI,GAAgB,EAChBF,EAAe3R,CACf,QAGJ,GAAqB,GAAjB6R,EACF,MAGJt+B,KAAKy9B,UAAYW,EACjBp+B,KAAKuE,MAAQ85B,EACbr+B,KAAKmpB,KAAOkV,EAAkBr+B,KAAK89B,WAAWM,IAShDx8B,EAASsS,UAAU8pB,SAAW,SAASV,GACjBz2B,SAAhBy2B,IACFA,KAGF,IAAIkB,GAAgC33B,SAApBy2B,EAAYn5B,IAAoBnE,KAAK8zB,OAAuB,EAAb9zB,KAAKuE,MAAYvE,KAAK89B,WAAW99B,KAAKy9B,WAAcH,EAAYn5B,IAC3Hs6B,EAA8B53B,SAApBy2B,EAAYl5B,IAAoBpE,KAAK+zB,KAAQ/zB,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAAcH,EAAYl5B,GAEvHpE,MAAK29B,UAAgC92B,SAApBy2B,EAAYl5B,IAAoBpE,KAAK0+B,aAAaD,GAAWnB,EAAYl5B,IAC1FpE,KAAK09B,YAAkC72B,SAApBy2B,EAAYn5B,IAAoBnE,KAAK0+B,aAAaF,GAAalB,EAAYn5B,IAGvE,GAAnBnE,KAAKu9B,aAAuBv9B,KAAK29B,UAAY39B,KAAK09B,aAAe19B,KAAKmpB,MAAQ,IAChFnpB,KAAK29B,WAAa39B,KAAK29B,UAAY39B,KAAKmpB,MAG1CnpB,KAAK49B,UAAY59B,KAAK0+B,aAAaD,GAAWA,EAAUz+B,KAAK0+B,aAAaF,GAAaA,EACvFx+B,KAAK2+B,YAAc3+B,KAAK29B,UAAY39B,KAAK09B,YAGzC19B,KAAK+7B,QAAU/7B,KAAK29B,WAGtB/7B,EAASsS,UAAUwqB,aAAe,SAASp6B,GACzC,GAAIs6B,GAAUt6B,EAASA,GAAStE,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAClE,OAAIn5B,IAAStE,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,YAAc,GAAOz9B,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAC7FmB,EAAW5+B,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAG7CmB,GASXh9B,EAASsS,UAAU2qB,QAAU,WAC3B,MAAQ7+B,MAAK+7B,SAAW/7B,KAAK09B,aAM/B97B,EAASsS,UAAUmV,KAAO,WACxB,GAAImJ,GAAOxyB,KAAK+7B,OAChB/7B,MAAK+7B,SAAW/7B,KAAKmpB,KAGjBnpB,KAAK+7B,SAAWvJ,IAClBxyB,KAAK+7B,QAAU/7B,KAAK+zB,OAOxBnyB,EAASsS,UAAU4qB,SAAW,WAC5B9+B,KAAK+7B,SAAW/7B,KAAKmpB,KACrBnpB,KAAK29B,WAAa39B,KAAKmpB,KACvBnpB,KAAK2+B,YAAc3+B,KAAK29B,UAAY39B,KAAK09B,aAS3C97B,EAASsS,UAAUkV,WAAa,SAAS2V,GAEvC,GAAIhD,GAAWv3B,KAAKknB,IAAI1rB,KAAK+7B,SAAW/7B,KAAKmpB,KAAO,EAAK,EAAInpB,KAAK+7B,QAC9DlH,EAAc,GAAK5wB,OAAO83B,GAASlH,YAAY,EAGnD,IAAgBhuB,SAAbk4B,GAA2B/5B,MAAMf,OAAO86B,KAqCzC,GAAgC,IAA5BlK,EAAY7tB,QAAQ,MAA0C,IAA5B6tB,EAAY7tB,QAAQ,KAExD,IAAK,GAAInB,GAAIgvB,EAAY7uB,OAAS,EAAGH,EAAI,EAAGA,IAAK,CAC/C,GAAsB,KAAlBgvB,EAAYhvB,GAGX,CAAA,GAAsB,KAAlBgvB,EAAYhvB,IAA+B,KAAlBgvB,EAAYhvB,GAAW,CACvDgvB,EAAcA,EAAY9oB,MAAM,EAAGlG,EACnC,OAGA,MAPAgvB,EAAcA,EAAY9oB,MAAM,EAAGlG,QAzCY,CAErD,GAAIm5B,GAAM,GACNt2B,EAAQmsB,EAAY7tB,QAAQ,IAoBhC,IAnBY,IAAT0B,IAEDs2B,EAAMnK,EAAY9oB,MAAMrD,GAExBmsB,EAAcA,EAAY9oB,MAAM,EAAGrD,IAErCA,EAAQlE,KAAKJ,IAAIywB,EAAY7tB,QAAQ,KAAM6tB,EAAY7tB,QAAQ,MAClD,KAAV0B,GAEe,IAAbq2B,IACDlK,GAAe,KAGjBnsB,EAAQmsB,EAAY7uB,OAAS+4B,GAEV,IAAbA,IAENr2B,GAASq2B,EAAW,GAEnBr2B,EAAQmsB,EAAY7uB,OAErB,IAAI,GAAIi5B,GAAMv2B,EAAQmsB,EAAY7uB,OAAQi5B,EAAM,EAAGA,IACjDpK,GAAe,QAKjBA,GAAcA,EAAY9oB,MAAM,EAAGrD,EAGrCmsB,IAAemK,EAoBjB,MAAOnK,IAQTjzB,EAASsS,UAAUgrB,QAAU,WAC3B,MAAQl/B,MAAK+7B,SAAW/7B,KAAKuE,MAAQvE,KAAK69B,WAAW79B,KAAKy9B,aAAe,GAG3E59B,EAAOD,QAAUgC,GAKb,SAAS/B,EAAQD,EAASM,GAgB9B,QAAS2B,GAAM0zB,EAAMrmB,GACnB,GAAIiwB,GAAMt7B,IAASu7B,MAAM,GAAGC,QAAQ,GAAGC,QAAQ,GAAGC,aAAa,EAC/Dv/B,MAAKqQ,MAAQ8uB,EAAI7E,QAAQtmB,IAAI,GAAI,QAAQ3M,UACzCrH,KAAKsQ,IAAM6uB,EAAI7E,QAAQtmB,IAAI,EAAG,QAAQ3M,UAEtCrH,KAAKu1B,KAAOA,EACZv1B,KAAKw/B,gBAAkB,EACvBx/B,KAAKy/B,YAAc,EACnBz/B,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,EAGlBr7B,KAAKi1B,gBACH5kB,MAAO,KACPC,IAAK,KACL4sB,UAAW,aACXwC,UAAU,EACVC,UAAU,EACVx7B,IAAK,KACLC,IAAK,KACLw7B,QAAS,GACTC,QAAS,UAEX7/B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAEpCj1B,KAAKqG,OACHy5B,UAEF9/B,KAAK+/B,aAAe,KAGpB//B,KAAKu1B,KAAKE,QAAQnhB,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACzDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OACpDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,OAGvDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,OAAQtU,KAAKmgC,QAAQzK,KAAK11B,OAG/CA,KAAKu1B,KAAKE,QAAQnhB,GAAG,aAAmBtU,KAAKogC,cAAc1K,KAAK11B,OAChEA,KAAKu1B,KAAKE,QAAQnhB,GAAG,iBAAmBtU,KAAKogC,cAAc1K,KAAK11B,OAGhEA,KAAKu1B,KAAKE,QAAQnhB,GAAG,QAAStU,KAAKqgC,SAAS3K,KAAK11B,OACjDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,QAAStU,KAAKsgC,SAAS5K,KAAK11B,OAEjDA,KAAKiU,WAAW/E,GAsClB,QAASqxB,GAAmBrD,GAC1B,GAAiB,cAAbA,GAA0C,YAAbA,EAC/B,KAAM,IAAIx2B,WAAU,sBAAwBw2B,EAAY,yCAif5D,QAASsD,GAAYV,EAAO32B,GAC1B,OACEqJ,EAAGstB,EAAMvH,MAAQ53B,EAAK+G,gBAAgByB,GACtCsJ,EAAGqtB,EAAMrH,MAAQ93B,EAAKqH,eAAemB,IAxlBzC,GAAIxI,GAAOT,EAAoB,GAC3BugC,EAAavgC,EAAoB,IACjC2D,EAAS3D,EAAoB,IAC7BqC,EAAYrC,EAAoB,IAChCyB,EAAWzB,EAAoB,GA2DnC2B,GAAMqS,UAAY,GAAI3R,GAkBtBV,EAAMqS,UAAUD,WAAa,SAAU/E,GACrC,GAAIA,EAAS,CAEX,GAAIP,IAAU,YAAa,MAAO,MAAO,UAAW,UAAW,WAAY,WAAY,WAAY,cACnGhO,GAAKyF,gBAAgBuI,EAAQ3O,KAAKkP,QAASA,IAEvC,SAAWA,IAAW,OAASA,KAEjClP,KAAKm0B,SAASjlB,EAAQmB,MAAOnB,EAAQoB,OA4B3CzO,EAAMqS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAKonB,EAASgJ,GACnDA,KAAW,IACbA,GAAS,EAEX,IAAI5M,GAAkBjtB,QAATwJ,EAAqB1P,EAAKuG,QAAQmJ,EAAO,QAAQhJ,UAAY,KACtE0sB,EAAgBltB,QAAPyJ,EAAqB3P,EAAKuG,QAAQoJ,EAAK,QAAQjJ,UAAc,IAG1E,IAFArH,KAAK2gC,mBAEDjJ,EAAS,CACX,GAAIxiB,GAAKlV,KACL4gC,EAAY5gC,KAAKqQ,MACjBwwB,EAAU7gC,KAAKsQ,IACfC,EAA8B,gBAAZmnB,GAAuBA,EAAU,IACnDoJ,GAAW,GAAIl8B,OAAOyC,UACtB05B,GAAa,EAEb1X,EAAO,WACT,IAAKnU,EAAG7O,MAAMy5B,MAAMkB,SAAU,CAC5B,GAAI7B,IAAM,GAAIv6B,OAAOyC,UACjBuxB,EAAOuG,EAAM2B,EACbG,EAAOrI,EAAOroB,EACdhE,EAAK00B,GAAmB,OAAXnN,EAAmBA,EAASnzB,EAAKyP,cAAcwoB,EAAMgI,EAAW9M,EAAQvjB,GACrFjG,EAAK22B,GAAiB,OAATlN,EAAmBA,EAASpzB,EAAKyP,cAAcwoB,EAAMiI,EAAS9M,EAAMxjB,EAErF2wB,GAAUhsB,EAAGomB,YAAY/uB,EAAGjC,GAC5B3I,EAASo4B,kBAAkB7kB,EAAGqgB,KAAMrgB,EAAGhG,QAAQymB,aAC/CoL,EAAaA,GAAcG,EACvBA,GACFhsB,EAAGqgB,KAAKE,QAAQhH,KAAK,eAAgBpe,MAAO,GAAIzL,MAAKsQ,EAAG7E,OAAQC,IAAK,GAAI1L,MAAKsQ,EAAG5E,KAAMowB,OAAOA,IAG5FO,EACEF,GACF7rB,EAAGqgB,KAAKE,QAAQhH,KAAK,gBAAiBpe,MAAO,GAAIzL,MAAKsQ,EAAG7E,OAAQC,IAAK,GAAI1L,MAAKsQ,EAAG5E,KAAMowB,OAAOA,IAMjGxrB,EAAG6qB,aAAexlB,WAAW8O,EAAM,KAKzC,OAAOA,KAGP,GAAI6X,GAAUlhC,KAAKs7B,YAAYxH,EAAQC,EAEvC,IADApyB,EAASo4B,kBAAkB/5B,KAAKu1B,KAAMv1B,KAAKkP,QAAQymB,aAC/CuL,EAAS,CACX,GAAIrsB,IAAUxE,MAAO,GAAIzL,MAAK5E,KAAKqQ,OAAQC,IAAK,GAAI1L,MAAK5E,KAAKsQ,KAAMowB,OAAOA,EAC3E1gC,MAAKu1B,KAAKE,QAAQhH,KAAK,cAAe5Z,GACtC7U,KAAKu1B,KAAKE,QAAQhH,KAAK,eAAgB5Z,KAS7ChT,EAAMqS,UAAUysB,iBAAmB,WAC7B3gC,KAAK+/B,eACPzlB,aAAata,KAAK+/B,cAClB//B,KAAK+/B,aAAe,OAaxBl+B,EAAMqS,UAAUonB,YAAc,SAASjrB,EAAOC,GAC5C,GAII4c,GAJAiU,EAAqB,MAAT9wB,EAAiB1P,EAAKuG,QAAQmJ,EAAO,QAAQhJ,UAAYrH,KAAKqQ,MAC1E+wB,EAAmB,MAAP9wB,EAAiB3P,EAAKuG,QAAQoJ,EAAK,QAAQjJ,UAAcrH,KAAKsQ,IAC1ElM,EAA2B,MAApBpE,KAAKkP,QAAQ9K,IAAezD,EAAKuG,QAAQlH,KAAKkP,QAAQ9K,IAAK,QAAQiD,UAAY,KACtFlD,EAA2B,MAApBnE,KAAKkP,QAAQ/K,IAAexD,EAAKuG,QAAQlH,KAAKkP,QAAQ/K,IAAK,QAAQkD,UAAY,IAI1F,IAAIrC,MAAMm8B,IAA0B,OAAbA,EACrB,KAAM,IAAIv9B,OAAM,kBAAoByM,EAAQ,IAE9C,IAAIrL,MAAMo8B,IAAsB,OAAXA,EACnB,KAAM,IAAIx9B,OAAM,gBAAkB0M,EAAM,IAyC1C,IArCa6wB,EAATC,IACFA,EAASD,GAIC,OAARh9B,GACaA,EAAXg9B,IACFjU,EAAQ/oB,EAAMg9B,EACdA,GAAYjU,EACZkU,GAAUlU,EAGC,MAAP9oB,GACEg9B,EAASh9B,IACXg9B,EAASh9B,IAOL,OAARA,GACEg9B,EAASh9B,IACX8oB,EAAQkU,EAASh9B,EACjB+8B,GAAYjU,EACZkU,GAAUlU,EAGC,MAAP/oB,GACaA,EAAXg9B,IACFA,EAAWh9B,IAOU,OAAzBnE,KAAKkP,QAAQ0wB,QAAkB,CACjC,GAAIA,GAAUvZ,WAAWrmB,KAAKkP,QAAQ0wB,QACxB,GAAVA,IACFA,EAAU,GAEcA,EAArBwB,EAASD,IACPnhC,KAAKsQ,IAAMtQ,KAAKqQ,QAAWuvB,GAAWuB,EAAWnhC,KAAKqQ,OAAS+wB,EAASphC,KAAKsQ,KAEhF6wB,EAAWnhC,KAAKqQ,MAChB+wB,EAASphC,KAAKsQ,MAId4c,EAAQ0S,GAAWwB,EAASD,GAC5BA,GAAYjU,EAAO,EACnBkU,GAAUlU,EAAO,IAMvB,GAA6B,OAAzBltB,KAAKkP,QAAQ2wB,QAAkB,CACjC,GAAIA,GAAUxZ,WAAWrmB,KAAKkP,QAAQ2wB,QACxB,GAAVA,IACFA,EAAU,GAGPuB,EAASD,EAAYtB,IACnB7/B,KAAKsQ,IAAMtQ,KAAKqQ,QAAWwvB,GAAWsB,EAAWnhC,KAAKqQ,OAAS+wB,EAASphC,KAAKsQ,KAEhF6wB,EAAWnhC,KAAKqQ,MAChB+wB,EAASphC,KAAKsQ,MAId4c,EAASkU,EAASD,EAAYtB,EAC9BsB,GAAYjU,EAAO,EACnBkU,GAAUlU,EAAO,IAKvB,GAAIgU,GAAWlhC,KAAKqQ,OAAS8wB,GAAYnhC,KAAKsQ,KAAO8wB,CAUrD,OAPOD,IAAYnhC,KAAKqQ,OAAS8wB,GAAcnhC,KAAKsQ,KAAS8wB,GAAYphC,KAAKqQ,OAAS+wB,GAAYphC,KAAKsQ,KACjGtQ,KAAKqQ,OAAS8wB,GAAYnhC,KAAKqQ,OAAS+wB,GAAcphC,KAAKsQ,KAAO6wB,GAAcnhC,KAAKsQ,KAAO8wB,GACjGphC,KAAKu1B,KAAKE,QAAQhH,KAAK,oBAGzBzuB,KAAKqQ,MAAQ8wB,EACbnhC,KAAKsQ,IAAM8wB,EACJF,GAOTr/B,EAAMqS,UAAUmtB,SAAW,WACzB,OACEhxB,MAAOrQ,KAAKqQ,MACZC,IAAKtQ,KAAKsQ,MAUdzO,EAAMqS,UAAUkoB,WAAa,SAAU9oB,EAAOguB,GAC5C,MAAOz/B,GAAMu6B,WAAWp8B,KAAKqQ,MAAOrQ,KAAKsQ,IAAKgD,EAAOguB,IAWvDz/B,EAAMu6B,WAAa,SAAU/rB,EAAOC,EAAKgD,EAAOguB,GAI9C,MAHoBz6B,UAAhBy6B,IACFA,EAAc,GAEH,GAAThuB,GAAehD,EAAMD,GAAS,GAE9Bqa,OAAQra,EACR9L,MAAO+O,GAAShD,EAAMD,EAAQixB,KAK9B5W,OAAQ,EACRnmB,MAAO,IAUb1C,EAAMqS,UAAU8rB,aAAe,WAC7BhgC,KAAKw/B,gBAAkB,EACvBx/B,KAAKuhC,cAAgB,EAEhBvhC,KAAKkP,QAAQwwB,UAIb1/B,KAAKqG,MAAMy5B,MAAM0B,gBAEtBxhC,KAAKqG,MAAMy5B,MAAMzvB,MAAQrQ,KAAKqQ,MAC9BrQ,KAAKqG,MAAMy5B,MAAMxvB,IAAMtQ,KAAKsQ,IAC5BtQ,KAAKqG,MAAMy5B,MAAMkB,UAAW,EAExBhhC,KAAKu1B,KAAK5E,IAAIjxB,OAChBM,KAAKu1B,KAAK5E,IAAIjxB,KAAKgO,MAAMmgB,OAAS,UAStChsB,EAAMqS,UAAU+rB,QAAU,SAAUp2B,GAElC,GAAK7J,KAAKkP,QAAQwwB,UAGb1/B,KAAKqG,MAAMy5B,MAAM0B,cAAtB,CAEA,GAAItE,GAAYl9B,KAAKkP,QAAQguB,SAC7BqD,GAAkBrD,EAElB,IAAI5N,GAAsB,cAAb4N,EAA6BrzB,EAAM2uB,QAAQiJ,OAAS53B,EAAM2uB,QAAQkJ,MAC/EpS,IAAStvB,KAAKw/B,eACd,IAAIpM,GAAYpzB,KAAKqG,MAAMy5B,MAAMxvB,IAAMtQ,KAAKqG,MAAMy5B,MAAMzvB,MAGpDE,EAAW5O,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,IACzF8iB,IAAY7iB,CAEZ,IAAI+C,GAAsB,cAAb4pB,EAA6Bl9B,KAAKu1B,KAAKC,SAASzI,OAAOzZ,MAAQtT,KAAKu1B,KAAKC,SAASzI,OAAOxZ,OAClGouB,GAAarS,EAAQhc,EAAQ8f,EAC7B+N,EAAWnhC,KAAKqG,MAAMy5B,MAAMzvB,MAAQsxB,EACpCP,EAASphC,KAAKqG,MAAMy5B,MAAMxvB,IAAMqxB,EAIhCC,EAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAUnhC,KAAKuhC,cAAcjS,GAAO,GACnGuS,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,EAAQphC,KAAKuhC,cAAcjS,GAAO,EACnG,IAAIsS,GAAaT,GAAYU,GAAWT,EAKtC,MAJAphC,MAAKw/B,iBAAmBlQ,EACxBtvB,KAAKqG,MAAMy5B,MAAMzvB,MAAQuxB,EACzB5hC,KAAKqG,MAAMy5B,MAAMxvB,IAAMuxB,MACvB7hC,MAAKigC,QAAQp2B,EAIf7J,MAAKuhC,cAAgBjS,EACrBtvB,KAAKs7B,YAAY6F,EAAUC,GAG3BphC,KAAKu1B,KAAKE,QAAQhH,KAAK,eACrBpe,MAAO,GAAIzL,MAAK5E,KAAKqQ,OACrBC,IAAO,GAAI1L,MAAK5E,KAAKsQ,KACrBowB,QAAQ,MASZ7+B,EAAMqS,UAAUgsB,WAAa,WAEtBlgC,KAAKkP,QAAQwwB,UAIb1/B,KAAKqG,MAAMy5B,MAAM0B,gBAEtBxhC,KAAKqG,MAAMy5B,MAAMkB,UAAW,EACxBhhC,KAAKu1B,KAAK5E,IAAIjxB,OAChBM,KAAKu1B,KAAK5E,IAAIjxB,KAAKgO,MAAMmgB,OAAS,QAIpC7tB,KAAKu1B,KAAKE,QAAQhH,KAAK,gBACrBpe,MAAO,GAAIzL,MAAK5E,KAAKqQ,OACrBC,IAAO,GAAI1L,MAAK5E,KAAKsQ,KACrBowB,QAAQ,MAUZ7+B,EAAMqS,UAAUksB,cAAgB,SAASv2B,GAEvC,GAAM7J,KAAKkP,QAAQywB,UAAY3/B,KAAKkP,QAAQwwB,SAA5C,CAGA,GAAIpQ,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAa,IAClB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAS,GAMtBF,EAAO,CAKT,GAAI/qB,EAEFA,GADU,EAAR+qB,EACM,EAAKA,EAAQ,EAGb,GAAK,EAAKA,EAAQ,EAI5B,IAAIkJ,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAUvB,EAAWhI,EAAQzL,OAAQ/sB,KAAKu1B,KAAK5E,IAAI5D,QACnDiV,EAAchiC,KAAKiiC,eAAeF,EAEtC/hC,MAAKkiC,KAAK39B,EAAOy9B,EAAa1S,GAKhCzlB,EAAMD,mBAOR/H,EAAMqS,UAAUmsB,SAAW,WACzBrgC,KAAKqG,MAAMy5B,MAAMzvB,MAAQrQ,KAAKqQ,MAC9BrQ,KAAKqG,MAAMy5B,MAAMxvB,IAAMtQ,KAAKsQ,IAC5BtQ,KAAKqG,MAAMy5B,MAAM0B,eAAgB,EACjCxhC,KAAKqG,MAAMy5B,MAAM/S,OAAS,KAC1B/sB,KAAKy/B,YAAc,EACnBz/B,KAAKw/B,gBAAkB,GAOzB39B,EAAMqS,UAAUisB,QAAU,WACxBngC,KAAKqG,MAAMy5B,MAAM0B,eAAgB,GAQnC3/B,EAAMqS,UAAUosB,SAAW,SAAUz2B,GAEnC,GAAM7J,KAAKkP,QAAQywB,UAAY3/B,KAAKkP,QAAQwwB,WAE5C1/B,KAAKqG,MAAMy5B,MAAM0B,eAAgB,EAE7B33B,EAAM2uB,QAAQ2J,QAAQn8B,OAAS,GAAG,CAC/BhG,KAAKqG,MAAMy5B,MAAM/S,SACpB/sB,KAAKqG,MAAMy5B,MAAM/S,OAASyT,EAAW32B,EAAM2uB,QAAQzL,OAAQ/sB,KAAKu1B,KAAK5E,IAAI5D,QAG3E,IAAIxoB,GAAQ,GAAKsF,EAAM2uB,QAAQj0B,MAAQvE,KAAKy/B,aACxC2C,EAAapiC,KAAKiiC,eAAejiC,KAAKqG,MAAMy5B,MAAM/S,QAElDwP,EAAiB56B,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,KAC3F+xB,EAAuB1gC,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAMoiC,GACrFE,EAAsB/F,EAAiB8F,EAGvClB,EAAYiB,EAAaC,GAAyBriC,KAAKqG,MAAMy5B,MAAMzvB,OAAS+xB,EAAaC,IAAyB99B,EAClH68B,EAAUgB,EAAaE,GAAwBtiC,KAAKqG,MAAMy5B,MAAMxvB,KAAO8xB,EAAaE,IAAwB/9B,CAGhHvE,MAAKo7B,aAAe,EAAI72B,EAAQ,GAAI,GAAQ,EAC5CvE,KAAKq7B,WAAa92B,EAAQ,EAAI,GAAI,GAAQ,CAE1C,IAAIq9B,GAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAU,EAAI58B,GAAO,GACpFs9B,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,EAAQ78B,EAAQ,GAAG,IAChFq9B,GAAaT,GAAYU,GAAWT,KACtCphC,KAAKqG,MAAMy5B,MAAMzvB,MAAQuxB,EACzB5hC,KAAKqG,MAAMy5B,MAAMxvB,IAAMuxB,EACvB7hC,KAAKy/B,YAAc,EAAI51B,EAAM2uB,QAAQj0B,MACrC48B,EAAWS,EACXR,EAASS,GAGX7hC,KAAKm0B,SAASgN,EAAUC,GAAQ,GAAO,GAEvCphC,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,IAUtBx5B,EAAMqS,UAAU+tB,eAAiB,SAAUF,GACzC,GAAI3F,GACAc,EAAYl9B,KAAKkP,QAAQguB,SAI7B,IAFAqD,EAAkBrD,GAED,cAAbA,EACF,MAAOl9B,MAAKu1B,KAAK50B,KAAKu1B,OAAO6L,EAAQvvB,GAAGnL,SAGxC,IAAIkM,GAASvT,KAAKu1B,KAAKC,SAASzI,OAAOxZ,MAEvC,OADA6oB,GAAap8B,KAAKo8B,WAAW7oB,GACtBwuB,EAAQtvB,EAAI2pB,EAAW73B,MAAQ63B,EAAW1R,QA4BrD7oB,EAAMqS,UAAUguB,KAAO,SAAS39B,EAAOwoB,EAAQuC,GAE/B,MAAVvC,IACFA,GAAU/sB,KAAKqQ,MAAQrQ,KAAKsQ,KAAO,EAGrC,IAAIisB,GAAiB56B,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,KAC3F+xB,EAAuB1gC,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAM+sB,GACrFuV,EAAsB/F,EAAiB8F,EAGvClB,EAAYpU,EAAOsV,GAAyBriC,KAAKqQ,OAAS0c,EAAOsV,IAAyB99B,EAC1F68B,EAAYrU,EAAOuV,GAAwBtiC,KAAKsQ,KAAOyc,EAAOuV,IAAwB/9B,CAG1FvE,MAAKo7B,aAAe9L,EAAQ,GAAI,GAAQ,EACxCtvB,KAAKq7B,YAAc/L,EAAS,GAAI,GAAQ,CACxC,IAAIsS,GAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAU7R,GAAO,GAChFuS,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,GAAS9R,GAAO,IAC7EsS,GAAaT,GAAYU,GAAWT,KACtCD,EAAWS,EACXR,EAASS,GAGX7hC,KAAKm0B,SAASgN,EAAUC,GAAQ,GAAO,GAEvCphC,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,GAWpBx5B,EAAMqS,UAAUquB,KAAO,SAASjT,GAE9B,GAAIpC,GAAQltB,KAAKsQ,IAAMtQ,KAAKqQ,MAGxB8wB,EAAWnhC,KAAKqQ,MAAQ6c,EAAOoC,EAC/B8R,EAASphC,KAAKsQ,IAAM4c,EAAOoC,CAI/BtvB,MAAKqQ,MAAQ8wB,EACbnhC,KAAKsQ,IAAM8wB,GAObv/B,EAAMqS,UAAU2U,OAAS,SAASA,GAChC,GAAIkE,IAAU/sB,KAAKqQ,MAAQrQ,KAAKsQ,KAAO,EAEnC4c,EAAOH,EAASlE,EAGhBsY,EAAWnhC,KAAKqQ,MAAQ6c,EACxBkU,EAASphC,KAAKsQ,IAAM4c,CAExBltB,MAAKm0B,SAASgN,EAAUC,IAG1BvhC,EAAOD,QAAUiC,GAKb,SAAShC,EAAQD,GAGrB,GAAI4iC,GAAU,IAMd5iC,GAAQ6iC,aAAe,SAASxgC,GAC9BA,EAAMgV,KAAK,SAAUrR,EAAGa,GACtB,MAAOb,GAAE6N,KAAKpD,MAAQ5J,EAAEgN,KAAKpD;IASjCzQ,EAAQ8iC,WAAa,SAASzgC,GAC5BA,EAAMgV,KAAK,SAAUrR,EAAGa,GACtB,GAAIk8B,GAAS,OAAS/8B,GAAE6N,KAAQ7N,EAAE6N,KAAKnD,IAAM1K,EAAE6N,KAAKpD,MAChDuyB,EAAS,OAASn8B,GAAEgN,KAAQhN,EAAEgN,KAAKnD,IAAM7J,EAAEgN,KAAKpD,KAEpD,OAAOsyB,GAAQC,KAenBhjC,EAAQkC,MAAQ,SAASG,EAAO0Y,EAAQkoB,GACtC,GAAIh9B,GAAGi9B,CAEP,IAAID,EAEF,IAAKh9B,EAAI,EAAGi9B,EAAO7gC,EAAM+D,OAAY88B,EAAJj9B,EAAUA,IACzC5D,EAAM4D,GAAGoC,IAAM,IAKnB,KAAKpC,EAAI,EAAGi9B,EAAO7gC,EAAM+D,OAAY88B,EAAJj9B,EAAUA,IAAK,CAC9C,GAAIiK,GAAO7N,EAAM4D,EACjB,IAAIiK,EAAKhO,OAAsB,OAAbgO,EAAK7H,IAAc,CAEnC6H,EAAK7H,IAAM0S,EAAOooB,IAElB,GAAG,CAID,IAAK,GADDC,GAAgB,KACXvW,EAAI,EAAGwW,EAAKhhC,EAAM+D,OAAYi9B,EAAJxW,EAAQA,IAAK,CAC9C,GAAIxmB,GAAQhE,EAAMwqB,EAClB,IAAkB,OAAdxmB,EAAMgC,KAAgBhC,IAAU6J,GAAQ7J,EAAMnE,OAASlC,EAAQsjC,UAAUpzB,EAAM7J,EAAO0U,EAAO7K,MAAO,CACtGkzB,EAAgB/8B,CAChB,QAIiB,MAAjB+8B,IAEFlzB,EAAK7H,IAAM+6B,EAAc/6B,IAAM+6B,EAAczvB,OAASoH,EAAO7K,KAAK2W,gBAE7Duc,MAafpjC,EAAQujC,QAAU,SAASlhC,EAAO0Y,EAAQyoB,GACxC,GAAIv9B,GAAGi9B,EAAMO,CAGb,KAAKx9B,EAAI,EAAGi9B,EAAO7gC,EAAM+D,OAAY88B,EAAJj9B,EAAUA,IACzC,GAA+BgB,SAA3B5E,EAAM4D,GAAG4N,KAAK6vB,SAAwB,CACxCD,EAAS1oB,EAAOooB,IAChB,KAAK,GAAIO,KAAYF,GACfA,EAAUj9B,eAAem9B,IACQ,GAA/BF,EAAUE,GAAU7Z,SAAmB2Z,EAAUE,GAAU56B,MAAQ06B,EAAUnhC,EAAM4D,GAAG4N,KAAK6vB,UAAU56B,QACvG26B,GAAUD,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,SAIzDxkB,GAAM4D,GAAGoC,IAAMo7B,MAGfphC,GAAM4D,GAAGoC,IAAM0S,EAAOooB,MAe5BnjC,EAAQsjC,UAAY,SAASt9B,EAAGa,EAAGkU,GACjC,MAAS/U,GAAEiC,KAAO8S,EAAO6L,WAAagc,EAAkB/7B,EAAEoB,KAAOpB,EAAE6M,OAC9D1N,EAAEiC,KAAOjC,EAAE0N,MAAQqH,EAAO6L,WAAagc,EAAW/7B,EAAEoB,MACpDjC,EAAEqC,IAAM0S,EAAO8L,SAAW+b,EAAyB/7B,EAAEwB,IAAMxB,EAAE8M,QAC7D3N,EAAEqC,IAAMrC,EAAE2N,OAASoH,EAAO8L,SAAW+b,EAAa/7B,EAAEwB,MAMvD,SAASpI,EAAQD,EAASM,GAgC9B,QAAS6B,GAASsO,EAAOC,EAAK8sB,EAAazH,GAEzC31B,KAAK+7B,QAAU,GAAIn3B,MACnB5E,KAAK8zB,OAAS,GAAIlvB,MAClB5E,KAAK+zB,KAAO,GAAInvB,MAEhB5E,KAAKw9B,WAAa,EAClBx9B,KAAKuE,MAAQ,MACbvE,KAAKmpB,KAAO,EAGZnpB,KAAKm0B,SAAS9jB,EAAOC,EAAK8sB,GAG1Bp9B,KAAKm8B,aAAc,EACnBn8B,KAAKk8B,eAAgB,EACrBl8B,KAAKi8B,cAAe,EACpBj8B,KAAK21B,YAAcA,EACC9uB,SAAhB8uB,IACF31B,KAAK21B,gBAGP31B,KAAKujC,OAASxhC,EAASyhC,OApDzB,GAAI3/B,GAAS3D,EAAoB,IAC7ByB,EAAWzB,EAAoB,IAC/BS,EAAOT,EAAoB,EAsD/B6B,GAASyhC,QACPC,aACEC,YAAY,MACZC,OAAY,IACZC,OAAY,QACZC,KAAY,QACZC,QAAY,QACZvJ,IAAY,IACZK,MAAY,MACZH,KAAY,QAEdsJ,aACEL,YAAY,WACZC,OAAY,eACZC,OAAY,aACZC,KAAY,aACZC,QAAY,YACZvJ,IAAY,YACZK,MAAY,OACZH,KAAY,KAUhB14B,EAASmS,UAAU8vB,UAAY,SAAUT,GACvC,GAAIU,GAAgBtjC,EAAKmG,cAAe/E,EAASyhC,OACjDxjC,MAAKujC,OAAS5iC,EAAKmG,WAAWm9B,EAAeV,IAa/CxhC,EAASmS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK8sB,GACjD,KAAM/sB,YAAiBzL,OAAW0L,YAAe1L,OAC/C,KAAO,+CAGT5E,MAAK8zB,OAAmBjtB,QAATwJ,EAAsB,GAAIzL,MAAKyL,EAAMhJ,WAAa,GAAIzC,MACrE5E,KAAK+zB,KAAeltB,QAAPyJ,EAAoB,GAAI1L,MAAK0L,EAAIjJ,WAAa,GAAIzC,MAE3D5E,KAAKw9B,WACPx9B,KAAK+9B,eAAeX,IAOxBr7B,EAASmS,UAAUgwB,MAAQ,WACzBlkC,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK8zB,OAAOzsB,WACpCrH,KAAK0+B,gBAOP38B,EAASmS,UAAUwqB,aAAe,WAIhC,OAAQ1+B,KAAKuE,OACX,IAAK,OACHvE,KAAK+7B,QAAQoI,YAAYnkC,KAAKmpB,KAAO3kB,KAAKgB,MAAMxF,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,OAClFnpB,KAAK+7B,QAAQsI,SAAS,EACxB,KAAK,QAAgBrkC,KAAK+7B,QAAQuI,QAAQ,EAC1C,KAAK,MACL,IAAK,UAAgBtkC,KAAK+7B,QAAQwI,SAAS,EAC3C,KAAK,OAAgBvkC,KAAK+7B,QAAQyI,WAAW,EAC7C,KAAK,SAAgBxkC,KAAK+7B,QAAQ0I,WAAW,EAC7C,KAAK,SAAgBzkC,KAAK+7B,QAAQ2I,gBAAgB,GAIpD,GAAiB,GAAb1kC,KAAKmpB,KAEP,OAAQnpB,KAAKuE,OACX,IAAK,cAAgBvE,KAAK+7B,QAAQ2I,gBAAgB1kC,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAKmpB,KAAQ,MACjI,KAAK,SAAgBnpB,KAAK+7B,QAAQ0I,WAAWzkC,KAAK+7B,QAAQ6I,aAAe5kC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,KAAO,MACjH,KAAK,SAAgBnpB,KAAK+7B,QAAQyI,WAAWxkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,KAAO,MACjH,KAAK,OAAgBnpB,KAAK+7B,QAAQwI,SAASvkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,KAAO,MAC3G,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAStkC,KAAK+7B,QAAQgJ,UAAU,GAAM/kC,KAAK+7B,QAAQgJ,UAAU,GAAK/kC,KAAKmpB,KAAO,EAAI,MACpH,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAQ,MAC5G,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,QAUnHpnB,EAASmS,UAAU2qB,QAAU,WAC3B,MAAQ7+B,MAAK+7B,QAAQ10B,WAAarH,KAAK+zB,KAAK1sB,WAM9CtF,EAASmS,UAAUmV,KAAO,WACxB,GAAImJ,GAAOxyB,KAAK+7B,QAAQ10B,SAIxB,IAAIrH,KAAK+7B,QAAQiJ,WAAa,EAC5B,OAAQhlC,KAAKuE,OACX,IAAK,cAEHvE,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAYrH,KAAKmpB,KAAO,MAC/D,KAAK,SAAgBnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,MACzF,KAAK,SAAgBnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,GAAK,MAC9F,KAAK,OACHnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,GAAK,GAEzE,IAAI7c,GAAItM,KAAK+7B,QAAQ+I,UACrB9kC,MAAK+7B,QAAQwI,SAASj4B,EAAKA,EAAItM,KAAKmpB,KACpC,MACF,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAQtkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAO,MAC/E,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAO,MACjF,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,UAKlF,QAAQnpB,KAAKuE,OACX,IAAK,cAAgBvE,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAYrH,KAAKmpB,KAAO,MAClF,KAAK,SAAgBnpB,KAAK+7B,QAAQ0I,WAAWzkC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,KAAO,MACrF,KAAK,SAAgBnpB,KAAK+7B,QAAQyI,WAAWxkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,KAAO,MACrF,KAAK,OAAgBnpB,KAAK+7B,QAAQwI,SAASvkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,KAAO,MACjF,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAQtkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAO,MAC/E,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAO,MACjF,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,MAKpF,GAAiB,GAAbnpB,KAAKmpB,KAEP,OAAQnpB,KAAKuE,OACX,IAAK,cAAmBvE,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQ2I,gBAAgB,EAAK,MACtG,KAAK,SAAmB1kC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQ0I,WAAW,EAAK,MAC5F,KAAK,SAAmBzkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQyI,WAAW,EAAK,MAC5F,KAAK,OAAmBxkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQwI,SAAS,EAAK,MACxF,KAAK,UACL,IAAK,MAAmBvkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAK,GAAGnpB,KAAK+7B,QAAQuI,QAAQ,EAAI,MACvF,KAAK,QAAmBtkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQsI,SAAS,EAAK,MACxF,KAAK,QAMLrkC,KAAK+7B,QAAQ10B,WAAamrB,IAC5BxyB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+zB,KAAK1sB,YAGpC1F,EAAS+5B,oBAAoB17B,KAAMwyB,IAQrCzwB,EAASmS,UAAUkV,WAAa,WAC9B,MAAOppB,MAAK+7B,SAedh6B,EAASmS,UAAU+wB,SAAW,SAASpwB,GACjCA,GAAiC,gBAAhBA,GAAOtQ,QAC1BvE,KAAKuE,MAAQsQ,EAAOtQ,MACpBvE,KAAKmpB,KAAOtU,EAAOsU,KAAO,EAAItU,EAAOsU,KAAO,EAC5CnpB,KAAKw9B,WAAY,IAQrBz7B,EAASmS,UAAUgxB,aAAe,SAAUC,GAC1CnlC,KAAKw9B,UAAY2H,GAQnBpjC,EAASmS,UAAU6pB,eAAiB,SAASX,GAC3C,GAAmBv2B,QAAfu2B,EAAJ,CAMA,GAAIgI,GAAiB,QACjBC,EAAiB,OACjBC,EAAiB,MACjBC,EAAiB,KACjBC,EAAiB,IACjBC,EAAiB,IACjBC,EAAiB,CAGR,KAATN,EAAgBhI,IAAqBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,IAATic,EAAehI,IAAsBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,IAATic,EAAehI,IAAsBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,GAATic,EAAchI,IAAuBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,IACpE,GAATic,EAAchI,IAAuBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,IACpE,EAATic,EAAahI,IAAwBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAC7Eic,EAAWhI,IAA0Bp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GACnE,EAAVkc,EAAcjI,IAAuBp9B,KAAKuE,MAAQ,QAAevE,KAAKmpB,KAAO,GAC7Ekc,EAAYjI,IAAyBp9B,KAAKuE,MAAQ,QAAevE,KAAKmpB,KAAO,GACrE,EAARmc,EAAYlI,IAAyBp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GACrE,EAARmc,EAAYlI,IAAyBp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GAC7Emc,EAAUlI,IAA2Bp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GAC7Emc,EAAQ,EAAIlI,IAAyBp9B,KAAKuE,MAAQ,UAAevE,KAAKmpB,KAAO,GACpE,EAAToc,EAAanI,IAAwBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAC7Eoc,EAAWnI,IAA0Bp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAClE,GAAXqc,EAAgBpI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,GAAXqc,EAAgBpI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,EAAXqc,EAAepI,IAAsBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7Eqc,EAAapI,IAAwBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAClE,GAAXsc,EAAgBrI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,GAAXsc,EAAgBrI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,EAAXsc,EAAerI,IAAsBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7Esc,EAAarI,IAAwBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7D,IAAhBuc,EAAsBtI,IAAep9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAC7D,IAAhBuc,EAAsBtI,IAAep9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAC7D,GAAhBuc,EAAqBtI,IAAgBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,IAC7D,GAAhBuc,EAAqBtI,IAAgBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,IAC7D,EAAhBuc,EAAoBtI,IAAiBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,GAC7Euc,EAAkBtI,IAAmBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAanFpnB,EAAS42B,KAAO,SAASgC,EAAMp2B,EAAO4kB,GACpC,GAAImR,GAAQ,GAAI11B,MAAK+1B,EAAKtzB,UAE1B,IAAa,QAAT9C,EAAiB,CACnB,GAAIk2B,GAAOH,EAAM8J,cAAgB5/B,KAAK+pB,MAAM+L,EAAM0K,WAAa,GAC/D1K,GAAM6J,YAAY3/B,KAAK+pB,MAAMkM,EAAOtR,GAAQA,GAC5CmR,EAAM+J,SAAS,GACf/J,EAAMgK,QAAQ,GACdhK,EAAMiK,SAAS,GACfjK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,SAATngC,EACH+1B,EAAMyK,UAAY,IACpBzK,EAAMgK,QAAQ,GACdhK,EAAM+J,SAAS/J,EAAM0K,WAAa,IAIlC1K,EAAMgK,QAAQ,GAGhBhK,EAAMiK,SAAS,GACfjK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,OAATngC,EAAgB,CAEvB,OAAQ4kB,GACN,IAAK,GACL,IAAK,GACHmR,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAAW,MAC1D,SACExK,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,KAEjDxK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,WAATngC,EAAoB,CAE3B,OAAQ4kB,GACN,IAAK,GACL,IAAK,GACHmR,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAAW,MAC1D,SACExK,EAAMiK,SAA4C,EAAnC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAEjDxK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,QAATngC,EAAiB,CACxB,OAAQ4kB,GACN,IAAK,GACHmR,EAAMkK,WAAiD,GAAtChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,IAAW,MAC9D,SACEvK,EAAMkK,WAAiD,GAAtChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,KAErDvK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OACjB,IAAa,UAATngC,EAAmB,CAE5B,OAAQ4kB,GACN,IAAK,IACL,IAAK,IACHmR,EAAMkK,WAAgD,EAArChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,IACjDvK,EAAMmK,WAAW,EACjB,MACF,KAAK,GACHnK,EAAMmK,WAAiD,GAAtCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,IAAW,MAC9D,SACEtK,EAAMmK,WAAiD,GAAtCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,KAErDtK,EAAMoK,gBAAgB,OAEnB,IAAa,UAATngC,EAEP,OAAQ4kB,GACN,IAAK,IACL,IAAK,IACHmR,EAAMmK,WAAgD,EAArCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,IACjDtK,EAAMoK,gBAAgB,EACtB,MACF,KAAK,GACHpK,EAAMoK,gBAA6D,IAA7ClgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB,KAAe,MAC5E,SACErK,EAAMoK,gBAA4D,IAA5ClgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB,UAG5D,IAAa,eAATpgC,EAAwB,CAC/B,GAAIyvB,GAAQ7K,EAAO,EAAIA,EAAO,EAAI,CAClCmR,GAAMoK,gBAAgBlgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB3Q,GAASA,GAGtE,MAAOsG,IAQTv4B,EAASmS,UAAUgrB,QAAU,WAC3B,GAAyB,GAArBl/B,KAAKi8B,aAEP,OADAj8B,KAAKi8B,cAAe,EACZj8B,KAAKuE,OACX,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAGR,IAA0B,GAAtBvE,KAAKk8B,cAEZ,OADAl8B,KAAKk8B,eAAgB,EACbl8B,KAAKuE,OACX,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAGR,IAAwB,GAApBvE,KAAKm8B,YAEZ,OADAn8B,KAAKm8B,aAAc,EACXn8B,KAAKuE,OACX,IAAK,cACL,IAAK,SACL,IAAK,SACL,IAAK,OACH,OAAO,CACT,SACE,OAAO,EAIb,OAAQvE,KAAKuE,OACX,IAAK,cACH,MAA0C,IAAlCvE,KAAK+7B,QAAQ4I,iBACvB,KAAK,SACH,MAAqC,IAA7B3kC,KAAK+7B,QAAQ6I,YACvB,KAAK,SACH,MAAmC,IAA3B5kC,KAAK+7B,QAAQ+I,YAAkD,GAA7B9kC,KAAK+7B,QAAQ8I,YACzD,KAAK,OACH,MAAmC,IAA3B7kC,KAAK+7B,QAAQ+I,UACvB,KAAK,UACL,IAAK,MACH,MAAkC,IAA1B9kC,KAAK+7B,QAAQgJ,SACvB,KAAK,QACH,MAAmC,IAA3B/kC,KAAK+7B,QAAQiJ,UACvB,KAAK,OACH,OAAO,CACT,SACE,OAAO,IAWbjjC,EAASmS,UAAUyxB,cAAgB,SAAShL,GAC9B9zB,QAAR8zB,IACFA,EAAO36B,KAAK+7B,QAGd,IAAIwH,GAASvjC,KAAKujC,OAAOE,YAAYzjC,KAAKuE,MAC1C,OAAQg/B,IAAUA,EAAOv9B,OAAS,EAAKnC,EAAO82B,GAAM4I,OAAOA,GAAU,IASvExhC,EAASmS,UAAU0xB,cAAgB,SAASjL,GAC9B9zB,QAAR8zB,IACFA,EAAO36B,KAAK+7B,QAGd,IAAIwH,GAASvjC,KAAKujC,OAAOQ,YAAY/jC,KAAKuE,MAC1C,OAAQg/B,IAAUA,EAAOv9B,OAAS,EAAKnC,EAAO82B,GAAM4I,OAAOA,GAAU,IAGvExhC,EAASmS,UAAU2xB,aAAe,WAKhC,QAASC,GAAKxhC,GACZ,MAAQA,GAAQ6kB,EAAO,GAAK,EAAK,QAAU,OAG7C,QAAS4c,GAAMpL,GACb,MAAIA,GAAKqL,OAAO,GAAIphC,MAAQ,OACnB,SAEL+1B,EAAKqL,OAAOniC,IAASmQ,IAAI,EAAG,OAAQ,OAC/B,YAEL2mB,EAAKqL,OAAOniC,IAASmQ,IAAI,GAAI,OAAQ,OAChC,aAEF,GAGT,QAASiyB,GAAYtL,GACnB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,QAAU,gBAAkB,GAG7D,QAASshC,GAAavL,GACpB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,SAAW,iBAAmB,GAG/D,QAASuhC,GAAYxL,GACnB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,QAAU,gBAAkB,GA9B7D,GAAIpE,GAAIqD,EAAO7D,KAAK+7B,SAChBpB,EAAOn6B,EAAE4lC,OAAS5lC,EAAE4lC,OAAO,MAAQ5lC,EAAE6lC,KAAK,MAC1Cld,EAAOnpB,KAAKmpB,IA+BhB,QAAQnpB,KAAKuE,OACX,IAAK,cACH,MAAOuhC,GAAKnL,EAAK4E,gBAAgB5xB,MAEnC,KAAK,SACH,MAAOm4B,GAAKnL,EAAK2E,WAAW3xB,MAE9B,KAAK,SACH,MAAOm4B,GAAKnL,EAAK0E,WAAW1xB,MAE9B,KAAK,OACH,GAAIyxB,GAAQzE,EAAKyE,OAIjB,OAHiB,IAAbp/B,KAAKmpB,OACPiW,EAAQA,EAAQ,KAAOA,EAAQ,IAE1BA,EAAQ,IAAM2G,EAAMpL,GAAQmL,EAAKnL,EAAKyE,QAE/C,KAAK,UACH,MAAOzE,GAAK4I,OAAO,QAAQ+C,cACvBP,EAAMpL,GAAQsL,EAAYtL,GAAQmL,EAAKnL,EAAKA,OAElD,KAAK,MACH,GAAIJ,GAAMI,EAAKA,OACXC,EAAQD,EAAK4I,OAAO,QAAQ+C,aAChC,OAAO,MAAQ/L,EAAM,IAAMK,EAAQsL,EAAavL,GAAQmL,EAAKvL,EAAM,EAErE,KAAK,QACH,MAAOI,GAAK4I,OAAO,QAAQ+C,cACvBJ,EAAavL,GAAQmL,EAAKnL,EAAKC,QAErC,KAAK,OACH,GAAIH,GAAOE,EAAKF,MAChB,OAAO,OAASA,EAAO0L,EAAYxL,GAAOmL,EAAKrL,EAEjD,SACE,MAAO,KAIb56B,EAAOD,QAAUmC,GAKb,SAASlC,EAAQD,EAASM,GAc9B,QAASgC,GAAMuR,EAAM2oB,EAAYltB,GAC/BlP,KAAKK,GAAK,KACVL,KAAKqK,OAAS,KACdrK,KAAKyT,KAAOA,EACZzT,KAAK2wB,IAAM,KACX3wB,KAAKo8B,WAAaA,MAClBp8B,KAAKkP,QAAUA,MAEflP,KAAKumC,UAAW,EAChBvmC,KAAKwmC,WAAY,EACjBxmC,KAAKymC,OAAQ,EAEbzmC,KAAKiI,IAAM,KACXjI,KAAK6H,KAAO,KACZ7H,KAAKsT,MAAQ,KACbtT,KAAKuT,OAAS,KA3BhB,GAAImzB,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,EA6B/BgC,GAAKgS,UAAUpS,OAAQ,EAKvBI,EAAKgS,UAAUyyB,OAAS,WACtB3mC,KAAKumC,UAAW,EAChBvmC,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAM3BvgB,EAAKgS,UAAU0yB,SAAW,WACxB5mC,KAAKumC,UAAW,EAChBvmC,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAQ3BvgB,EAAKgS,UAAU6E,QAAU,SAAStF,GAChCzT,KAAKyT,KAAOA,EACZzT,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAO3BvgB,EAAKgS,UAAU2yB,UAAY,SAASx8B,GAC9BrK,KAAKwmC,WACPxmC,KAAK8mC,OACL9mC,KAAKqK,OAASA,EACVrK,KAAKqK,QACPrK,KAAK+mC,QAIP/mC,KAAKqK,OAASA,GASlBnI,EAAKgS,UAAU8yB,UAAY,WAEzB,OAAO,GAOT9kC,EAAKgS,UAAU6yB,KAAO,WACpB,OAAO,GAOT7kC,EAAKgS,UAAU4yB,KAAO,WACpB,OAAO,GAMT5kC,EAAKgS,UAAUuO,OAAS,aAOxBvgB,EAAKgS,UAAU+yB,YAAc,aAO7B/kC,EAAKgS,UAAUgzB,YAAc,aAS7BhlC,EAAKgS,UAAUizB,qBAAuB,SAAUC,GAC9C,GAAIpnC,KAAKumC,UAAYvmC,KAAKkP,QAAQm4B,SAASjwB,SAAWpX,KAAK2wB,IAAI2W,aAAc,CAE3E,GAAIpyB,GAAKlV,KAELsnC,EAAet1B,SAASM,cAAc,MAC1Cg1B,GAAal/B,UAAY,SACzBk/B,EAAaC,MAAQ,mBAErBb,EAAOY,GACL19B,gBAAgB,IACf0K,GAAG,MAAO,SAAUzK,GACrBqL,EAAG7K,OAAOm9B,kBAAkBtyB,GAC5BrL,EAAM49B,oBAGRL,EAAOl1B,YAAYo1B,GACnBtnC,KAAK2wB,IAAI2W,aAAeA,OAEhBtnC,KAAKumC,UAAYvmC,KAAK2wB,IAAI2W,eAE9BtnC,KAAK2wB,IAAI2W,aAAan9B,YACxBnK,KAAK2wB,IAAI2W,aAAan9B,WAAWyH,YAAY5R,KAAK2wB,IAAI2W,cAExDtnC,KAAK2wB,IAAI2W,aAAe,OAS5BplC,EAAKgS,UAAUwzB,gBAAkB,SAAUv+B,GACzC,GAAIgK,EACJ,IAAInT,KAAKkP,QAAQy4B,SAAU,CACzB,GAAI5P,GAAW/3B,KAAKqK,OAAOqsB,QAAQC,UAAU1gB,IAAIjW,KAAKK,GACtD8S,GAAUnT,KAAKkP,QAAQy4B,SAAS5P,OAGhC5kB,GAAUnT,KAAKyT,KAAKN,OAGtB,IAAGA,IAAYnT,KAAKmT,QAAS,CAE3B,GAAIA,YAAmBy0B,SACrBz+B,EAAQ8b,UAAY,GACpB9b,EAAQ+I,YAAYiB,OAEjB,IAAetM,QAAXsM,EACPhK,EAAQ8b,UAAY9R,MAGpB,IAAwB,cAAlBnT,KAAKyT,KAAKtM,MAA8CN,SAAtB7G,KAAKyT,KAAKN,QAChD,KAAM,IAAIvP,OAAM,sCAAwC5D,KAAKK,GAIjEL,MAAKmT,QAAUA,IASnBjR,EAAKgS,UAAU2zB,aAAe,SAAU1+B,GACf,MAAnBnJ,KAAKyT,KAAK8zB,MACZp+B,EAAQo+B,MAAQvnC,KAAKyT,KAAK8zB,OAAS,GAGnCp+B,EAAQ2+B,gBAAgB,UAS3B5lC,EAAKgS,UAAU6zB,sBAAwB,SAAS5+B,GAC/C,GAAInJ,KAAKkP,QAAQ84B,gBAAkBhoC,KAAKkP,QAAQ84B,eAAehiC,OAAS,EAAG,CACzE,GAAIiiC,KAEJ,IAAI3hC,MAAMC,QAAQvG,KAAKkP,QAAQ84B,gBAC7BC,EAAajoC,KAAKkP,QAAQ84B,mBAEvB,CAAA,GAAmC,OAA/BhoC,KAAKkP,QAAQ84B,eAIpB,MAHAC,GAAarhC,OAAOiH,KAAK7N,KAAKyT,MAMhC,IAAK,GAAI5N,GAAI,EAAGA,EAAIoiC,EAAWjiC,OAAQH,IAAK,CAC1C,GAAImR,GAAOixB,EAAWpiC,GAClBvB,EAAQtE,KAAKyT,KAAKuD,EAET,OAAT1S,EACF6E,EAAQ++B,aAAa,QAAUlxB,EAAM1S,GAGrC6E,EAAQ2+B,gBAAgB,QAAU9wB,MAW1C9U,EAAKgS,UAAUi0B,aAAe,SAASh/B,GAEjCnJ,KAAK0N,QACP/M,EAAKuN,cAAc/E,EAASnJ,KAAK0N,OACjC1N,KAAK0N,MAAQ,MAIX1N,KAAKyT,KAAK/F,QACZ/M,EAAKoN,WAAW5E,EAASnJ,KAAKyT,KAAK/F,OACnC1N,KAAK0N,MAAQ1N,KAAKyT,KAAK/F,QAI3B7N,EAAOD,QAAUsC,GAKb,SAASrC,EAAQD,EAASM,GAkB9B,QAASiC,GAAgBsR,EAAM2oB,EAAYltB,GASzC,GARAlP,KAAKqG,OACH8M,SACEG,MAAO,IAGXtT,KAAK6kB,UAAW,EAGZpR,EAAM,CACR,GAAkB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAAKpT,GAE7D,IAAgBwG,QAAZ4M,EAAKnD,IACP,KAAM,IAAI1M,OAAM,kCAAoC6P,EAAKpT,IAI7D6B,EAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAElClP,KAAKooC,cAAe,EApCtB,GACIlmC,IADShC,EAAoB,IACtBA,EAAoB,KAC3B2C,EAAkB3C,EAAoB,IACtCoC,EAAYpC,EAAoB,GAoCpCiC,GAAe+R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAEjDC,EAAe+R,UAAUm0B,cAAgB,kBACzClmC,EAAe+R,UAAUpS,OAAQ,EAOjCK,EAAe+R,UAAU8yB,UAAY,SAAS1Q,GAE5C,MAAQt2B,MAAKyT,KAAKpD,MAAQimB,EAAMhmB,KAAStQ,KAAKyT,KAAKnD,IAAMgmB,EAAMjmB,OAMjElO,EAAe+R,UAAUuO,OAAS,WAChC,GAAIkO,GAAM3wB,KAAK2wB,GAuBf,IAtBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI2X,IAAMt2B,SAASM,cAAc,OAIjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI2X,IAAIp2B,YAAYye,EAAIxd,SAMxBnT,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI2X,IAAIn+B,WAAY,CACvB,GAAI0C,GAAa7M,KAAKqK,OAAOsmB,IAAI9jB,UACjC,KAAKA,EACH,KAAM,IAAIjJ,OAAM,iEAElBiJ,GAAWqF,YAAYye,EAAI2X,KAQ7B,GANAtoC,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK0nC,gBAAgB1nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK6nC,aAAa7nC,KAAK2wB,IAAIxd,SAC3BnT,KAAK+nC,sBAAsB/nC,KAAK2wB,IAAIxd,SACpCnT,KAAKmoC,aAAanoC,KAAK2wB,IAAI2X,IAG3B,IAAIlgC,IAAapI,KAAKyT,KAAKrL,UAAa,IAAMpI,KAAKyT,KAAKrL,UAAa,KAChEpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI2X,IAAIlgC,UAAYpI,KAAKqoC,cAAgBjgC,EAGzCpI,KAAK6kB,SAA6D,WAAlD/c,OAAOygC,iBAAiB5X,EAAIxd,SAAS0R,SAGrD7kB,KAAKqG,MAAM8M,QAAQG,MAAQtT,KAAK2wB,IAAIxd,QAAQ6d,YAC5ChxB,KAAKuT,OAAS,EAEdvT,KAAKymC,OAAQ,IAQjBtkC,EAAe+R,UAAU6yB,KAAOzkC,EAAU4R,UAAU6yB,KAMpD5kC,EAAe+R,UAAU4yB,KAAOxkC,EAAU4R,UAAU4yB,KAMpD3kC,EAAe+R,UAAU+yB,YAAc3kC,EAAU4R,UAAU+yB,YAM3D9kC,EAAe+R,UAAUgzB,YAAc,SAASvsB,GAC9C,GAAI6tB,GAAqC,QAA7BxoC,KAAKkP,QAAQimB,WACzBn1B,MAAK2wB,IAAIxd,QAAQzF,MAAMzF,IAAMugC,EAAQ,GAAK,IAC1CxoC,KAAK2wB,IAAIxd,QAAQzF,MAAM4W,OAASkkB,EAAQ,IAAM,EAC9C,IAAIj1B,EAGJ,IAA2B1M,SAAvB7G,KAAKyT,KAAK6vB,SAAwB,CAGpC,GAAImF,GAAezoC,KAAKyT,KAAK6vB,SACzBF,EAAYpjC,KAAKqK,OAAO+4B,UACxBsF,EAAgBtF,EAAUqF,GAAc//B,KAE5C,IAAa,GAAT8/B,EAAe,CAEjBj1B,EAASvT,KAAKqK,OAAO+4B,UAAUqF,GAAcl1B,OAASoH,EAAO7K,KAAK2W,SAClElT,GAA2B,GAAjBm1B,EAAqB/tB,EAAOooB,KAAO,GAAIpoB,EAAO7K,KAAK2W,SAAW,CACxE,IAAI4c,GAASrjC,KAAKqK,OAAOpC,GACzB,KAAK,GAAIq7B,KAAYF,GACfA,EAAUj9B,eAAem9B,IACQ,GAA/BF,EAAUE,GAAU7Z,SAAmB2Z,EAAUE,GAAU56B,MAAQggC,IACrErF,GAAUD,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,SAMzD4c,IAA2B,GAAjBqF,EAAqB/tB,EAAOooB,KAAO,GAAMpoB,EAAO7K,KAAK2W,SAAW,EAC1EzmB,KAAK2wB,IAAI2X,IAAI56B,MAAMzF,IAAMo7B,EAAS,KAClCrjC,KAAK2wB,IAAI2X,IAAI56B,MAAM4W,OAAS,OAGzB,CACH,GAAI+e,GAASrjC,KAAKqK,OAAOpC,IACrB0gC,EAAc,CAClB,KAAK,GAAIrF,KAAYF,GACnB,GAAIA,EAAUj9B,eAAem9B,IACQ,GAA/BF,EAAUE,GAAU7Z,QAAiB,CACvC,GAAImf,GAAYxF,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,QACzDkiB,IAAeC,EACXxF,EAAUE,GAAU56B,MAAQggC,IAC9BrF,GAAUuF,GAKlBr1B,EAASvT,KAAKqK,OAAO+4B,UAAUqF,GAAcl1B,OAASoH,EAAO7K,KAAK2W,SAClEzmB,KAAK2wB,IAAI2X,IAAI56B,MAAMzF,IAAOjI,KAAKqK,OAAOkJ,OAASo1B,EAActF,EAAU,KACvErjC,KAAK2wB,IAAI2X,IAAI56B,MAAM4W,OAAS,QAM1BtkB,MAAKqK,iBAAkBxH,IAEzB0Q,EAAS/O,KAAKJ,IAAIpE,KAAKqK,OAAOkJ,OAC1BvT,KAAKqK,OAAOqsB,QAAQnB,KAAKC,SAASzI,OAAOxZ,OACzCvT,KAAKqK,OAAOqsB,QAAQnB,KAAKC,SAASkD,gBAAgBnlB,QACtDvT,KAAK2wB,IAAI2X,IAAI56B,MAAMzF,IAAMugC,EAAQ,IAAM,GACvCxoC,KAAK2wB,IAAI2X,IAAI56B,MAAM4W,OAASkkB,EAAQ,GAAK,MAGzCj1B,EAASvT,KAAKqK,OAAOkJ,OAErBvT,KAAK2wB,IAAI2X,IAAI56B,MAAMzF,IAAMjI,KAAKqK,OAAOpC,IAAM,KAC3CjI,KAAK2wB,IAAI2X,IAAI56B,MAAM4W,OAAS,GAGhCtkB,MAAK2wB,IAAI2X,IAAI56B,MAAM6F,OAASA,EAAS,MAGvC1T,EAAOD,QAAUuC,GAKb,SAAStC,EAAQD,EAASM,GAe9B,QAASkC,GAASqR,EAAM2oB,EAAYltB,GAalC,GAZAlP,KAAKqG,OACHqqB,KACEpd,MAAO,EACPC,OAAQ,GAEVkd,MACEnd,MAAO,EACPC,OAAQ,IAKRE,GACgB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAI1DvR,GAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAhCpC,CAAA,GAAIhN,GAAOhC,EAAoB,GACpBA,GAAoB,GAkC/BkC,EAAQ8R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAO1CE,EAAQ8R,UAAU8yB,UAAY,SAAS1Q,GAGrC,GAAIlD,IAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,CAC3C,OAAQrQ,MAAKyT,KAAKpD,MAAQimB,EAAMjmB,MAAQ+iB,GAAcpzB,KAAKyT,KAAKpD,MAAQimB,EAAMhmB,IAAM8iB,GAMtFhxB,EAAQ8R,UAAUuO,OAAS,WACzB,GAAIkO,GAAM3wB,KAAK2wB,GA6Bf,IA5BKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI2X,IAAMt2B,SAASM,cAAc,OAGjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI2X,IAAIp2B,YAAYye,EAAIxd,SAGxBwd,EAAIF,KAAOze,SAASM,cAAc,OAClCqe,EAAIF,KAAKroB,UAAY,OAGrBuoB,EAAID,IAAM1e,SAASM,cAAc,OACjCqe,EAAID,IAAItoB,UAAY,MAGpBuoB,EAAI2X,IAAI,iBAAmBtoC,KAE3BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI2X,IAAIn+B,WAAY,CACvB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EAAY,KAAM,IAAIn1B,OAAM,iEACjCm1B,GAAW7mB,YAAYye,EAAI2X,KAE7B,IAAK3X,EAAIF,KAAKtmB,WAAY,CACxB,GAAI0C,GAAa7M,KAAKqK,OAAOsmB,IAAI9jB,UACjC,KAAKA,EAAY,KAAM,IAAIjJ,OAAM,iEACjCiJ,GAAWqF,YAAYye,EAAIF,MAE7B,IAAKE,EAAID,IAAIvmB,WAAY,CACvB,GAAI44B,GAAO/iC,KAAKqK,OAAOsmB,IAAIoS,IAC3B,KAAKl2B,EAAY,KAAM,IAAIjJ,OAAM,2DACjCm/B,GAAK7wB,YAAYye,EAAID,KAQvB,GANA1wB,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK0nC,gBAAgB1nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK6nC,aAAa7nC,KAAK2wB,IAAI2X,KAC3BtoC,KAAK+nC,sBAAsB/nC,KAAK2wB,IAAI2X,KACpCtoC,KAAKmoC,aAAanoC,KAAK2wB,IAAI2X,IAG3B,IAAIlgC,IAAapI,KAAKyT,KAAKrL,UAAW,IAAMpI,KAAKyT,KAAKrL,UAAY,KAC7DpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI2X,IAAIlgC,UAAY,WAAaA,EACjCuoB,EAAIF,KAAKroB,UAAY,YAAcA,EACnCuoB,EAAID,IAAItoB,UAAa,WAAaA,EAGlCpI,KAAKqG,MAAMqqB,IAAInd,OAASod,EAAID,IAAIQ,aAChClxB,KAAKqG,MAAMqqB,IAAIpd,MAAQqd,EAAID,IAAIM,YAC/BhxB,KAAKqG,MAAMoqB,KAAKnd,MAAQqd,EAAIF,KAAKO,YACjChxB,KAAKsT,MAAQqd,EAAI2X,IAAItX,YACrBhxB,KAAKuT,OAASod,EAAI2X,IAAIpX,aAEtBlxB,KAAKymC,OAAQ,EAGfzmC,KAAKmnC,qBAAqBxW,EAAI2X,MAOhClmC,EAAQ8R,UAAU6yB,KAAO,WAClB/mC,KAAKwmC,WACRxmC,KAAKyiB,UAOTrgB,EAAQ8R,UAAU4yB,KAAO,WACvB,GAAI9mC,KAAKwmC,UAAW,CAClB,GAAI7V,GAAM3wB,KAAK2wB,GAEXA,GAAI2X,IAAIn+B,YAAcwmB,EAAI2X,IAAIn+B,WAAWyH,YAAY+e,EAAI2X,KACzD3X,EAAIF,KAAKtmB,YAAawmB,EAAIF,KAAKtmB,WAAWyH,YAAY+e,EAAIF,MAC1DE,EAAID,IAAIvmB,YAAcwmB,EAAID,IAAIvmB,WAAWyH,YAAY+e,EAAID,KAE7D1wB,KAAKwmC,WAAY,IAQrBpkC,EAAQ8R,UAAU+yB,YAAc,WAC9B,GAAI52B,GAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,OAC3Cw4B,EAAQ7oC,KAAKkP,QAAQ25B,KAKvB7oC,MAAK6H,KADM,SAATghC,EACUx4B,EAAQrQ,KAAKsT,MAET,QAATu1B,EACKx4B,EAIAA,EAAQrQ,KAAKsT,MAAQ,EAInCtT,KAAK2wB,IAAI2X,IAAI56B,MAAM7F,KAAO7H,KAAK6H,KAAO,KAGtC7H,KAAK2wB,IAAIF,KAAK/iB,MAAM7F,KAAQwI,EAAQrQ,KAAKqG,MAAMoqB,KAAKnd,MAAQ,EAAK,KAGjEtT,KAAK2wB,IAAID,IAAIhjB,MAAM7F,KAAQwI,EAAQrQ,KAAKqG,MAAMqqB,IAAIpd,MAAQ,EAAK,MAOjElR,EAAQ8R,UAAUgzB,YAAc,WAC9B,GAAI/R,GAAcn1B,KAAKkP,QAAQimB,YAC3BmT,EAAMtoC,KAAK2wB,IAAI2X,IACf7X,EAAOzwB,KAAK2wB,IAAIF,KAChBC,EAAM1wB,KAAK2wB,IAAID,GAEnB,IAAmB,OAAfyE,EACFmT,EAAI56B,MAAMzF,KAAWjI,KAAKiI,KAAO,GAAK,KAEtCwoB,EAAK/iB,MAAMzF,IAAS,IACpBwoB,EAAK/iB,MAAM6F,OAAUvT,KAAKqK,OAAOpC,IAAMjI,KAAKiI,IAAM,EAAK,KACvDwoB,EAAK/iB,MAAM4W,OAAS,OAEjB,CACH,GAAIwkB,GAAgB9oC,KAAKqK,OAAOqsB,QAAQrwB,MAAMkN,OAC1C4d,EAAa2X,EAAgB9oC,KAAKqK,OAAOpC,IAAMjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,GAE7EqgC,GAAI56B,MAAMzF,KAAWjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,QAAU,GAAK,KACzEkd,EAAK/iB,MAAMzF,IAAU6gC,EAAgB3X,EAAc,KACnDV,EAAK/iB,MAAM4W,OAAS,IAGtBoM,EAAIhjB,MAAMzF,KAAQjI,KAAKqG,MAAMqqB,IAAInd,OAAS,EAAK,MAGjD1T,EAAOD,QAAUwC,GAKb,SAASvC,EAAQD,EAASM,GAc9B,QAASmC,GAAWoR,EAAM2oB,EAAYltB,GAcpC,GAbAlP,KAAKqG,OACHqqB,KACEzoB,IAAK,EACLqL,MAAO,EACPC,OAAQ,GAEVJ,SACEI,OAAQ,EACRw1B,WAAY,IAKZt1B,GACgB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAI1DvR,GAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAhCpC,GAAIhN,GAAOhC,EAAoB,GAmC/BmC,GAAU6R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAO5CG,EAAU6R,UAAU8yB,UAAY,SAAS1Q,GAGvC,GAAIlD,IAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,CAC3C,OAAQrQ,MAAKyT,KAAKpD,MAAQimB,EAAMjmB,MAAQ+iB,GAAcpzB,KAAKyT,KAAKpD,MAAQimB,EAAMhmB,IAAM8iB,GAMtF/wB,EAAU6R,UAAUuO,OAAS,WAC3B,GAAIkO,GAAM3wB,KAAK2wB,GA0Bf,IAzBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI/d,MAAQZ,SAASM,cAAc,OAInCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI/d,MAAMV,YAAYye,EAAIxd,SAG1Bwd,EAAID,IAAM1e,SAASM,cAAc,OACjCqe,EAAI/d,MAAMV,YAAYye,EAAID,KAG1BC,EAAI/d,MAAM,iBAAmB5S,KAE7BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI/d,MAAMzI,WAAY,CACzB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EACH,KAAM,IAAIn1B,OAAM,iEAElBm1B,GAAW7mB,YAAYye,EAAI/d,OAQ7B,GANA5S,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK0nC,gBAAgB1nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK6nC,aAAa7nC,KAAK2wB,IAAI/d,OAC3B5S,KAAK+nC,sBAAsB/nC,KAAK2wB,IAAI/d,OACpC5S,KAAKmoC,aAAanoC,KAAK2wB,IAAI/d,MAG3B,IAAIxK,IAAapI,KAAKyT,KAAKrL,UAAW,IAAMpI,KAAKyT,KAAKrL,UAAY,KAC7DpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI/d,MAAMxK,UAAa,aAAeA,EACtCuoB,EAAID,IAAItoB,UAAa,WAAaA,EAGlCpI,KAAKsT,MAAQqd,EAAI/d,MAAMoe,YACvBhxB,KAAKuT,OAASod,EAAI/d,MAAMse,aACxBlxB,KAAKqG,MAAMqqB,IAAIpd,MAAQqd,EAAID,IAAIM,YAC/BhxB,KAAKqG,MAAMqqB,IAAInd,OAASod,EAAID,IAAIQ,aAChClxB,KAAKqG,MAAM8M,QAAQI,OAASod,EAAIxd,QAAQ+d,aAGxCP,EAAIxd,QAAQzF,MAAMq7B,WAAa,EAAI/oC,KAAKqG,MAAMqqB,IAAIpd,MAAQ,KAG1Dqd,EAAID,IAAIhjB,MAAMzF,KAAQjI,KAAKuT,OAASvT,KAAKqG,MAAMqqB,IAAInd,QAAU,EAAK,KAClEod,EAAID,IAAIhjB,MAAM7F,KAAQ7H,KAAKqG,MAAMqqB,IAAIpd,MAAQ,EAAK,KAElDtT,KAAKymC,OAAQ,EAGfzmC,KAAKmnC,qBAAqBxW,EAAI/d,QAOhCvQ,EAAU6R,UAAU6yB,KAAO,WACpB/mC,KAAKwmC,WACRxmC,KAAKyiB,UAOTpgB,EAAU6R,UAAU4yB,KAAO,WACrB9mC,KAAKwmC,YACHxmC,KAAK2wB,IAAI/d,MAAMzI,YACjBnK,KAAK2wB,IAAI/d,MAAMzI,WAAWyH,YAAY5R,KAAK2wB,IAAI/d,OAGjD5S,KAAKwmC,WAAY,IAQrBnkC,EAAU6R,UAAU+yB,YAAc,WAChC,GAAI52B,GAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,MAE/CrQ,MAAK6H,KAAOwI,EAAQrQ,KAAKqG,MAAMqqB,IAAIpd,MAGnCtT,KAAK2wB,IAAI/d,MAAMlF,MAAM7F,KAAO7H,KAAK6H,KAAO,MAO1CxF,EAAU6R,UAAUgzB,YAAc,WAChC,GAAI/R,GAAcn1B,KAAKkP,QAAQimB,YAC3BviB,EAAQ5S,KAAK2wB,IAAI/d,KAGnBA,GAAMlF,MAAMzF,IADK,OAAfktB,EACgBn1B,KAAKiI,IAAM,KAGVjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,OAAU,MAItE1T,EAAOD,QAAUyC,GAKb,SAASxC,EAAQD,EAASM,GAe9B,QAASoC,GAAWmR,EAAM2oB,EAAYltB,GASpC,GARAlP,KAAKqG,OACH8M,SACEG,MAAO,IAGXtT,KAAK6kB,UAAW,EAGZpR,EAAM,CACR,GAAkB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAAKpT,GAE7D,IAAgBwG,QAAZ4M,EAAKnD,IACP,KAAM,IAAI1M,OAAM,kCAAoC6P,EAAKpT,IAI7D6B,EAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GA/BpC,GAAIw3B,GAASxmC,EAAoB,IAC7BgC,EAAOhC,EAAoB,GAiC/BoC,GAAU4R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAE5CI,EAAU4R,UAAUm0B,cAAgB,aAOpC/lC,EAAU4R,UAAU8yB,UAAY,SAAS1Q,GAEvC,MAAQt2B,MAAKyT,KAAKpD,MAAQimB,EAAMhmB,KAAStQ,KAAKyT,KAAKnD,IAAMgmB,EAAMjmB,OAMjE/N,EAAU4R,UAAUuO,OAAS,WAC3B,GAAIkO,GAAM3wB,KAAK2wB,GAsBf,IArBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI2X,IAAMt2B,SAASM,cAAc,OAIjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI2X,IAAIp2B,YAAYye,EAAIxd,SAGxBwd,EAAI2X,IAAI,iBAAmBtoC,KAE3BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI2X,IAAIn+B,WAAY,CACvB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EACH,KAAM,IAAIn1B,OAAM,iEAElBm1B,GAAW7mB,YAAYye,EAAI2X,KAQ7B,GANAtoC,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK0nC,gBAAgB1nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK6nC,aAAa7nC,KAAK2wB,IAAI2X,KAC3BtoC,KAAK+nC,sBAAsB/nC,KAAK2wB,IAAI2X,KACpCtoC,KAAKmoC,aAAanoC,KAAK2wB,IAAI2X,IAG3B,IAAIlgC,IAAapI,KAAKyT,KAAKrL,UAAa,IAAMpI,KAAKyT,KAAKrL,UAAa,KAChEpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI2X,IAAIlgC,UAAYpI,KAAKqoC,cAAgBjgC,EAGzCpI,KAAK6kB,SAA6D,WAAlD/c,OAAOygC,iBAAiB5X,EAAIxd,SAAS0R,SAKrD7kB,KAAK2wB,IAAIxd,QAAQzF,MAAMs7B,SAAW,OAClChpC,KAAKqG,MAAM8M,QAAQG,MAAQtT,KAAK2wB,IAAIxd,QAAQ6d,YAC5ChxB,KAAKuT,OAASvT,KAAK2wB,IAAI2X,IAAIpX,aAC3BlxB,KAAK2wB,IAAIxd,QAAQzF,MAAMs7B,SAAW,GAElChpC,KAAKymC,OAAQ,EAGfzmC,KAAKmnC,qBAAqBxW,EAAI2X,KAC9BtoC,KAAKipC,mBACLjpC,KAAKkpC,qBAOP5mC,EAAU4R,UAAU6yB,KAAO,WACpB/mC,KAAKwmC,WACRxmC,KAAKyiB,UAQTngB,EAAU4R,UAAU4yB,KAAO,WACzB,GAAI9mC,KAAKwmC,UAAW,CAClB,GAAI8B,GAAMtoC,KAAK2wB,IAAI2X,GAEfA,GAAIn+B,YACNm+B,EAAIn+B,WAAWyH,YAAY02B,GAG7BtoC,KAAKwmC,WAAY,IAarBlkC,EAAU4R,UAAU+yB,YAAc,SAASkC,GACzC,GAGIC,GACArY,EAJAsY,EAAcrpC,KAAKqK,OAAOiJ,MAC1BjD,EAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,OAC3CC,EAAMtQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKnD,MAK3BzJ,SAAdsiC,GAA2BA,KAAc,MAC9BE,EAATh5B,IACFA,GAASg5B,GAEP/4B,EAAM,EAAI+4B,IACZ/4B,EAAM,EAAI+4B,GAGd,IAAIC,GAAW9kC,KAAKJ,IAAIkM,EAAMD,EAAO,EAoBrC,QAlBIrQ,KAAK6kB,UACP7kB,KAAK6H,KAAOwI,EACZrQ,KAAKsT,MAAQg2B,EAAWtpC,KAAKqG,MAAM8M,QAAQG,MAC3Cyd,EAAe/wB,KAAKqG,MAAM8M,QAAQG,QAOlCtT,KAAK6H,KAAOwI,EACZrQ,KAAKsT,MAAQg2B,EACbvY,EAAevsB,KAAKL,IAAImM,EAAMD,EAAQ,EAAIrQ,KAAKkP,QAAQ8V,QAAShlB,KAAKqG,MAAM8M,QAAQG,QAGrFtT,KAAK2wB,IAAI2X,IAAI56B,MAAM7F,KAAO7H,KAAK6H,KAAO,KACtC7H,KAAK2wB,IAAI2X,IAAI56B,MAAM4F,MAAQg2B,EAAW,KAE9BtpC,KAAKkP,QAAQ25B,OACnB,IAAK,OACH7oC,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAO,GAC9B,MAEF,KAAK,QACH7H,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAOrD,KAAKJ,IAAKklC,EAAWvY,EAAe,EAAI/wB,KAAKkP,QAAQ8V,QAAU,GAAK,IAClG,MAEF,KAAK,SACHhlB,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAOrD,KAAKJ,KAAKklC,EAAWvY,EAAe,EAAI/wB,KAAKkP,QAAQ8V,SAAW,EAAG,GAAK,IACtG,MAEF,SAIMokB,EAFAppC,KAAK6kB,SACHvU,EAAM,EACM9L,KAAKJ,KAAKiM,EAAO,IAGhB0gB,EAIL,EAAR1gB,EACY7L,KAAKL,KAAKkM,EACnBC,EAAMD,EAAQ0gB,EAAe,EAAI/wB,KAAKkP,QAAQ8V,SAIrC,EAGlBhlB,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAOuhC,EAAc,OAQlD9mC,EAAU4R,UAAUgzB,YAAc,WAChC,GAAI/R,GAAcn1B,KAAKkP,QAAQimB,YAC3BmT,EAAMtoC,KAAK2wB,IAAI2X,GAGjBA,GAAI56B,MAAMzF,IADO,OAAfktB,EACcn1B,KAAKiI,IAAM,KAGVjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,OAAU,MAQpEjR,EAAU4R,UAAU+0B,iBAAmB,WACrC,GAAIjpC,KAAKumC,UAAYvmC,KAAKkP,QAAQm4B,SAASkC,aAAevpC,KAAK2wB,IAAI6Y,SAAU,CAE3E,GAAIA,GAAWx3B,SAASM,cAAc,MACtCk3B,GAASphC,UAAY,YACrBohC,EAASC,aAAezpC,KAGxB0mC,EAAO8C,GACL5/B,gBAAgB,IACf0K,GAAG,OAAQ,cAIdtU,KAAK2wB,IAAI2X,IAAIp2B,YAAYs3B,GACzBxpC,KAAK2wB,IAAI6Y,SAAWA,OAEZxpC,KAAKumC,UAAYvmC,KAAK2wB,IAAI6Y,WAE9BxpC,KAAK2wB,IAAI6Y,SAASr/B,YACpBnK,KAAK2wB,IAAI6Y,SAASr/B,WAAWyH,YAAY5R,KAAK2wB,IAAI6Y,UAEpDxpC,KAAK2wB,IAAI6Y,SAAW,OAQxBlnC,EAAU4R,UAAUg1B,kBAAoB,WACtC,GAAIlpC,KAAKumC,UAAYvmC,KAAKkP,QAAQm4B,SAASkC,aAAevpC,KAAK2wB,IAAI+Y,UAAW,CAE5E,GAAIA,GAAY13B,SAASM,cAAc,MACvCo3B,GAAUthC,UAAY,aACtBshC,EAAUC,cAAgB3pC,KAG1B0mC,EAAOgD,GACL9/B,gBAAgB,IACf0K,GAAG,OAAQ,cAIdtU,KAAK2wB,IAAI2X,IAAIp2B,YAAYw3B,GACzB1pC,KAAK2wB,IAAI+Y,UAAYA,OAEb1pC,KAAKumC,UAAYvmC,KAAK2wB,IAAI+Y,YAE9B1pC,KAAK2wB,IAAI+Y,UAAUv/B,YACrBnK,KAAK2wB,IAAI+Y,UAAUv/B,WAAWyH,YAAY5R,KAAK2wB,IAAI+Y,WAErD1pC,KAAK2wB,IAAI+Y,UAAY,OAIzB7pC,EAAOD,QAAU0C,GAKb,SAASzC,GAOb,QAAS0C,KACPvC,KAAKkP,QAAU,KACflP,KAAKqG,MAAQ,KAQf9D,EAAU2R,UAAUD,WAAa,SAAS/E,GACpCA,GACFvO,KAAKgF,OAAO3F,KAAKkP,QAASA,IAQ9B3M,EAAU2R,UAAUuO,OAAS,WAE3B,OAAO,GAMTlgB,EAAU2R,UAAUG,QAAU,aAU9B9R,EAAU2R,UAAU01B,WAAa,WAC/B,GAAIC,GAAW7pC,KAAKqG,MAAMyjC,iBAAmB9pC,KAAKqG,MAAMiN,OACpDtT,KAAKqG,MAAM0jC,kBAAoB/pC,KAAKqG,MAAMkN,MAK9C,OAHAvT,MAAKqG,MAAMyjC,eAAiB9pC,KAAKqG,MAAMiN,MACvCtT,KAAKqG,MAAM0jC,gBAAkB/pC,KAAKqG,MAAMkN,OAEjCs2B,GAGThqC,EAAOD,QAAU2C,GAKb,SAAS1C,EAAQD,EAASM,GAe9B,QAASsC,GAAa+yB,EAAMrmB,GAC1BlP,KAAKu1B,KAAOA,EAGZv1B,KAAKi1B,gBACH+U,iBAAiB,EAEjBC,QAASA,EACT7D,OAAQ,MAEVpmC,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAK0qB,OAAS,EAEd1qB,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GA5BlB,GAAIvO,GAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC2D,EAAS3D,EAAoB,IAC7B+pC,EAAU/pC,EAAoB,GA4BlCsC,GAAY0R,UAAY,GAAI3R,GAM5BC,EAAY0R,UAAUohB,QAAU,WAC9B,GAAI7C,GAAMzgB,SAASM,cAAc,MACjCmgB,GAAIrqB,UAAY,cAChBqqB,EAAI/kB,MAAMkX,SAAW,WACrB6N,EAAI/kB,MAAMzF,IAAM,MAChBwqB,EAAI/kB,MAAM6F,OAAS,OAEnBvT,KAAKyyB,IAAMA,GAMbjwB,EAAY0R,UAAUG,QAAU,WAC9BrU,KAAKkP,QAAQ86B,iBAAkB,EAC/BhqC,KAAKyiB,SAELziB,KAAKu1B,KAAO,MAQd/yB,EAAY0R,UAAUD,WAAa,SAAS/E,GACtCA,GAEFvO,EAAKyF,iBAAiB,kBAAmB,SAAU,WAAYpG,KAAKkP,QAASA,IAQjF1M,EAAY0R,UAAUuO,OAAS,WAC7B,GAAIziB,KAAKkP,QAAQ86B,gBAAiB,CAChC,GAAI3/B,GAASrK,KAAKu1B,KAAK5E,IAAIuZ,kBACvBlqC,MAAKyyB,IAAItoB,YAAcE,IAErBrK,KAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCpoB,EAAO6H,YAAYlS,KAAKyyB,KAExBzyB,KAAKqQ,QAGP,IAAI8uB,GAAM,GAAIv6B,OAAK,GAAIA,OAAOyC,UAAYrH,KAAK0qB,QAC3ClY,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAASqJ,GAE5BiH,EAASpmC,KAAKkP,QAAQ+6B,QAAQjqC,KAAKkP,QAAQk3B,QAC3CmB,EAAQnB,EAAOrK,QAAU,IAAMqK,EAAOxN,KAAO,KAAO/0B,EAAOs7B,GAAKoE,OAAO,8BAC3EgE,GAAQA,EAAMnhB,OAAO,GAAG+jB,cAAgB5C,EAAM6C,UAAU,GAExDpqC,KAAKyyB,IAAI/kB,MAAM7F,KAAO2K,EAAI,KAC1BxS,KAAKyyB,IAAI8U,MAAQA,MAIbvnC,MAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCzyB,KAAKkmB,MAGP,QAAO,GAMT1jB,EAAY0R,UAAU7D,MAAQ,WAG5B,QAASuF,KACPV,EAAGgR,MAGH,IAAI3hB,GAAQ2Q,EAAGqgB,KAAKe,MAAM8F,WAAWlnB,EAAGqgB,KAAKC,SAASzI,OAAOzZ,OAAO/O,MAChE6uB,EAAW,EAAI7uB,EAAQ,EACZ,IAAX6uB,IAAiBA,EAAW,IAC5BA,EAAW,MAAMA,EAAW,KAEhCle,EAAGuN,SAGHvN,EAAGm1B,iBAAmB9vB,WAAW3E,EAAQwd,GAd3C,GAAIle,GAAKlV,IAiBT4V,MAMFpT,EAAY0R,UAAUgS,KAAO,WACGrf,SAA1B7G,KAAKqqC,mBACP/vB,aAAata,KAAKqqC,wBACXrqC,MAAKqqC,mBAUhB7nC,EAAY0R,UAAUo2B,eAAiB,SAAS1R,GAC9C,GAAIrqB,GAAI5N,EAAKuG,QAAQ0xB,EAAM,QAAQvxB,UAC/B83B,GAAM,GAAIv6B,OAAOyC,SACrBrH,MAAK0qB,OAASnc,EAAI4wB,EAClBn/B,KAAKyiB,UAOPjgB,EAAY0R,UAAUq2B,eAAiB,WACrC,MAAO,IAAI3lC,OAAK,GAAIA,OAAOyC,UAAYrH,KAAK0qB,SAG9C7qB,EAAOD,QAAU4C,GAKb,SAAS3C,EAAQD,EAASM,GAiB9B,QAASuC,GAAY8yB,EAAMrmB,GACzBlP,KAAKu1B,KAAOA,EAGZv1B,KAAKi1B,gBACHuV,gBAAgB,EAChBP,QAASA,EACT7D,OAAQ,KACR/lC,GAAI,GAENL,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAGlCj1B,KAAKy2B,WADHvnB,GAAWA,EAAQ0pB,KACH1pB,EAAQ0pB,KAER,GAAIh0B,MAGxB5E,KAAKyqC,eAGLzqC,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAtClB,GAAIw3B,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC2D,EAAS3D,EAAoB,IAC7B+pC,EAAU/pC,EAAoB,GAqClCuC,GAAWyR,UAAY,GAAI3R,GAO3BE,EAAWyR,UAAUD,WAAa,SAAS/E,GACrCA,IAEFvO,EAAKyF,iBAAiB,iBAAkB,SAAU,UAAW,MAAOpG,KAAKkP,QAASA,GAG9ElP,KAAKkP,QAAQ7O,IACfL,KAAKyiB,WASXhgB,EAAWyR,UAAUohB,QAAU,WAC7B,GAAI7C,GAAMzgB,SAASM,cAAc,MACjCmgB,GAAIrqB,UAAY,aAChBqqB,EAAI/kB,MAAMkX,SAAW,WACrB6N,EAAI/kB,MAAMzF,IAAM,MAChBwqB,EAAI/kB,MAAM6F,OAAS,OACnBvT,KAAKyyB,IAAMA,CAEX,IAAIiY,GAAO14B,SAASM,cAAc,MAClCo4B,GAAKh9B,MAAMkX,SAAW,WACtB8lB,EAAKh9B,MAAMzF,IAAM,MACjByiC,EAAKh9B,MAAM7F,KAAO,QAClB6iC,EAAKh9B,MAAM6F,OAAS,OACpBm3B,EAAKh9B,MAAM4F,MAAQ,OACnBmf,EAAIvgB,YAAYw4B,GAGhB1qC,KAAK8D,OAAS4iC,EAAOjU,GACnBkY,iBAAiB,IAEnB3qC,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACnDA,KAAK8D,OAAOwQ,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OAC9CA,KAAK8D,OAAOwQ,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,QAMnDyC,EAAWyR,UAAUG,QAAU,WAC7BrU,KAAKkP,QAAQs7B,gBAAiB,EAC9BxqC,KAAKyiB,SAELziB,KAAK8D,OAAOqhC,QAAO,GACnBnlC,KAAK8D,OAAS,KAEd9D,KAAKu1B,KAAO,MAOd9yB,EAAWyR,UAAUuO,OAAS,WAC5B,GAAIziB,KAAKkP,QAAQs7B,eAAgB,CAC/B,GAAIngC,GAASrK,KAAKu1B,KAAK5E,IAAIuZ,kBACvBlqC,MAAKyyB,IAAItoB,YAAcE,IAErBrK,KAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCpoB,EAAO6H,YAAYlS,KAAKyyB,KAG1B,IAAIjgB,GAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAAS91B,KAAKy2B,YAEjC2P,EAASpmC,KAAKkP,QAAQ+6B,QAAQjqC,KAAKkP,QAAQk3B,QAC3CmB,EAAQnB,EAAOxN,KAAO,KAAO/0B,EAAO7D,KAAKy2B,YAAY8M,OAAO,8BAChEgE,GAAQA,EAAMnhB,OAAO,GAAG+jB,cAAgB5C,EAAM6C,UAAU,GAExDpqC,KAAKyyB,IAAI/kB,MAAM7F,KAAO2K,EAAI,KAC1BxS,KAAKyyB,IAAI8U,MAAQA,MAIbvnC,MAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,IAIzC,QAAO,GAOThwB,EAAWyR,UAAU02B,cAAgB,SAAShS,GAC5C54B,KAAKy2B,WAAa91B,EAAKuG,QAAQ0xB,EAAM,QACrC54B,KAAKyiB,UAOPhgB,EAAWyR,UAAU22B,cAAgB,WACnC,MAAO,IAAIjmC,MAAK5E,KAAKy2B,WAAWpvB,YAQlC5E,EAAWyR,UAAU8rB,aAAe,SAASn2B,GAC3C7J,KAAKyqC,YAAYzJ,UAAW,EAC5BhhC,KAAKyqC,YAAYhU,WAAaz2B,KAAKy2B,WAEnC5sB,EAAM49B,kBACN59B,EAAMD,kBAQRnH,EAAWyR,UAAU+rB,QAAU,SAAUp2B,GACvC,GAAK7J,KAAKyqC,YAAYzJ,SAAtB,CAEA,GAAIS,GAAS53B,EAAM2uB,QAAQiJ,OACvBjvB,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAAS91B,KAAKyqC,YAAYhU,YAAcgL,EAC3D7I,EAAO54B,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,EAEjCxS,MAAK4qC,cAAchS,GAGnB54B,KAAKu1B,KAAKE,QAAQhH,KAAK,cACrBpuB,GAAIL,KAAKkP,QAAQ7O,GACjBu4B,KAAM,GAAIh0B,MAAK5E,KAAKy2B,WAAWpvB,aAGjCwC,EAAM49B,kBACN59B,EAAMD,mBAQRnH,EAAWyR,UAAUgsB,WAAa,SAAUr2B,GACrC7J,KAAKyqC,YAAYzJ,WAGtBhhC,KAAKu1B,KAAKE,QAAQhH,KAAK,eACrBpuB,GAAIL,KAAKkP,QAAQ7O,GACjBu4B,KAAM,GAAIh0B,MAAK5E,KAAKy2B,WAAWpvB,aAGjCwC,EAAM49B,kBACN59B,EAAMD,mBAGR/J,EAAOD,QAAU6C,GAKb,SAAS5C,EAAQD,EAASM,GAe9B,QAASwC,GAAU6yB,EAAMrmB,EAAS47B,EAAKC,GACrC/qC,KAAKK,GAAKM,EAAK2E,aACftF,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACHE,YAAa,OACb6V,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACPC,iBAAkB,EAClBC,iBAAkB,EAClBC,aAAc,GACdC,aAAc,EACdC,UAAW,GACXj4B,MAAO,OACPmW,SAAS,EACT8T,YAAY,EACZD,aACEz1B,MAAO1D,IAAI0C,OAAWzC,IAAIyC,QAC1BwhB,OAAQlkB,IAAI0C,OAAWzC,IAAIyC,SAE7B0gC,OACE1/B,MAAOyiB,KAAKzjB,QACZwhB,OAAQiC,KAAKzjB,SAEf08B,QACE17B,MAAOk3B,SAAUl4B,QACjBwhB,OAAQ0W,SAAUl4B,UAItB7G,KAAK+qC,iBAAmBA,EACxB/qC,KAAKwrC,aAAeV,EACpB9qC,KAAKqG,SACLrG,KAAKyrC,aACHC,SACAC,UACApE,UAGFvnC,KAAK2wB,OAEL3wB,KAAKs2B,OAASjmB,MAAM,EAAGC,IAAI,GAE3BtQ,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAK4rC,iBAAmB,EAExB5rC,KAAKiU,WAAW/E,GAChBlP,KAAKsT,MAAQrP,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAC3DjL,KAAK6rC,SAAW7rC,KAAKsT,MACrBtT,KAAKuT,OAASvT,KAAKwrC,aAAata,aAChClxB,KAAK05B,QAAS,EAEd15B,KAAK8rC,WAAa,GAClB9rC,KAAK+rC,iBAAmB,GACxB/rC,KAAKgsC,aAAe,GAEpBhsC,KAAKisC,WAAa,EAClBjsC,KAAKksC,QAAS,EACdlsC,KAAKmsC,eACLnsC,KAAKosC,cAAe,EAGpBpsC,KAAK+0B,UACL/0B,KAAKqsC,eAAiB,EAGtBrsC,KAAKs1B,SAEL,IAAIpgB,GAAKlV,IACTA,MAAKu1B,KAAKE,QAAQnhB,GAAG,eAAgB,WACnCY,EAAGyb,IAAI2b,cAAc5+B,MAAMzF,IAAMiN,EAAGqgB,KAAKC,SAAS+W,UAAY,OApFlE,GAAI5rC,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BqC,EAAYrC,EAAoB,IAChC0B,EAAW1B,EAAoB,GAqFnCwC,GAASwR,UAAY,GAAI3R,GAGzBG,EAASwR,UAAUs4B,SAAW,SAASx5B,EAAOy5B,GACvCzsC,KAAK+0B,OAAO5uB,eAAe6M,KAC9BhT,KAAK+0B,OAAO/hB,GAASy5B,GAEvBzsC,KAAKqsC,gBAAkB,GAGzB3pC,EAASwR,UAAUw4B,YAAc,SAAS15B,EAAOy5B,GAC/CzsC,KAAK+0B,OAAO/hB,GAASy5B,GAGvB/pC,EAASwR,UAAUy4B,YAAc,SAAS35B,GACpChT,KAAK+0B,OAAO5uB,eAAe6M,WACtBhT,MAAK+0B,OAAO/hB,GACnBhT,KAAKqsC,gBAAkB,IAK3B3pC,EAASwR,UAAUD,WAAa,SAAU/E,GACxC,GAAIA,EAAS,CACX,GAAIuT,IAAS,CACTziB,MAAKkP,QAAQimB,aAAejmB,EAAQimB,aAAuCtuB,SAAxBqI,EAAQimB,cAC7D1S,GAAS,EAEX,IAAI9T,IACF,cACA,kBACA,kBACA,QACA,mBACA,mBACA,eACA,eACA,YACA,QACA,UACA,cACA,QACA,SACA,aAEFhO,GAAKyF,gBAAgBuI,EAAQ3O,KAAKkP,QAASA,GAE3ClP,KAAK6rC,SAAW5nC,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAEhD,GAAVwX,GAAkBziB,KAAK2wB,IAAIrQ,QAC7BtgB,KAAK8mC,OACL9mC,KAAK+mC,UASXrkC,EAASwR,UAAUohB,QAAU,WAC3Bt1B,KAAK2wB,IAAIrQ,MAAQtO,SAASM,cAAc,OACxCtS,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAKkP,QAAQoE,MAC1CtT,KAAK2wB,IAAIrQ,MAAM5S,MAAM6F,OAASvT,KAAKuT,OAEnCvT,KAAK2wB,IAAI2b,cAAgBt6B,SAASM,cAAc,OAChDtS,KAAK2wB,IAAI2b,cAAc5+B,MAAM4F,MAAQ,OACrCtT,KAAK2wB,IAAI2b,cAAc5+B,MAAM6F,OAASvT,KAAKuT,OAC3CvT,KAAK2wB,IAAI2b,cAAc5+B,MAAMkX,SAAW,WAGxC5kB,KAAK8qC,IAAM94B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAK8qC,IAAIp9B,MAAMkX,SAAW,WAC1B5kB,KAAK8qC,IAAIp9B,MAAMzF,IAAM,MACrBjI,KAAK8qC,IAAIp9B,MAAM6F,OAAS,OACxBvT,KAAK8qC,IAAIp9B,MAAM4F,MAAQ,OACvBtT,KAAK8qC,IAAIp9B,MAAMk/B,QAAU,QACzB5sC,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAK8qC;EAGlCpoC,EAASwR,UAAU24B,kBAAoB,WACrCjsC,EAAQ0Q,gBAAgBtR,KAAKmsC,YAE7B,IAAI35B,GACA+4B,EAAYvrC,KAAKkP,QAAQq8B,UACzBuB,EAAa,GACbC,EAAa,EACbt6B,EAAIs6B,EAAa,GAAMD,CAGzBt6B,GAD8B,QAA5BxS,KAAKkP,QAAQimB,YACX4X,EAGA/sC,KAAKsT,MAAQi4B,EAAYwB,CAG/B,KAAK,GAAI9T,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,KACvIj5B,KAAK+0B,OAAOkE,GAAS+T,SAASx6B,EAAGC,EAAGzS,KAAKmsC,YAAansC,KAAK8qC,IAAKS,EAAWuB,GAC3Er6B,GAAKq6B,EAAaC,GAKxBnsC,GAAQ+Q,gBAAgB3R,KAAKmsC,aAC7BnsC,KAAKosC,cAAe,GAGtB1pC,EAASwR,UAAU+4B,cAAgB,WACR,GAArBjtC,KAAKosC,eACPxrC,EAAQ0Q,gBAAgBtR,KAAKmsC,aAC7BvrC,EAAQ+Q,gBAAgB3R,KAAKmsC,aAC7BnsC,KAAKosC,cAAe,IAOxB1pC,EAASwR,UAAU6yB,KAAO,WACxB/mC,KAAK05B,QAAS,EACT15B,KAAK2wB,IAAIrQ,MAAMnW,aACc,QAA5BnK,KAAKkP,QAAQimB,YACfn1B,KAAKu1B,KAAK5E,IAAI9oB,KAAKqK,YAAYlS,KAAK2wB,IAAIrQ,OAGxCtgB,KAAKu1B,KAAK5E,IAAItI,MAAMnW,YAAYlS,KAAK2wB,IAAIrQ,QAIxCtgB,KAAK2wB,IAAI2b,cAAcniC,YAC1BnK,KAAKu1B,KAAK5E,IAAIuc,qBAAqBh7B,YAAYlS,KAAK2wB,IAAI2b,gBAO5D5pC,EAASwR,UAAU4yB,KAAO,WACxB9mC,KAAK05B,QAAS,EACV15B,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,OAG7CtgB,KAAK2wB,IAAI2b,cAAcniC,YACzBnK,KAAK2wB,IAAI2b,cAAcniC,WAAWyH,YAAY5R,KAAK2wB,IAAI2b,gBAU3D5pC,EAASwR,UAAUigB,SAAW,SAAU9jB,EAAOC,GAC1B,GAAftQ,KAAKksC,QAA8C,GAA3BlsC,KAAKkP,QAAQquB,YAA2C,IAArBv9B,KAAKgsC,cAC9D37B,EAAQ,IACVA,EAAQ,GAGZrQ,KAAKs2B,MAAMjmB,MAAQA,EACnBrQ,KAAKs2B,MAAMhmB,IAAMA,GAOnB5N,EAASwR,UAAUuO,OAAS,WAC1B,GAAIonB,IAAU,EACVsD,EAAe,CAGnBntC,MAAK2wB,IAAI2b,cAAc5+B,MAAMzF,IAAMjI,KAAKu1B,KAAKC,SAAS+W,UAAY,IAElE,KAAK,GAAItT,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,IACvIkU,IAIN,IAA2B,GAAvBntC,KAAKqsC,gBAAuC,GAAhBc,EAC9BntC,KAAK8mC,WAEF,CACH9mC,KAAK+mC,OACL/mC,KAAKuT,OAAStP,OAAOjE,KAAKwrC,aAAa99B,MAAM6F,OAAOtI,QAAQ,KAAK,KAGjEjL,KAAK2wB,IAAI2b,cAAc5+B,MAAM6F,OAASvT,KAAKuT,OAAS,KACpDvT,KAAKsT,MAAgC,GAAxBtT,KAAKkP,QAAQua,QAAkBxlB,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAAO,CAEjG,IAAI5E,GAAQrG,KAAKqG,MACbia,EAAQtgB,KAAK2wB,IAAIrQ,KAGrBA,GAAMlY,UAAY,WAGlBpI,KAAKotC,oBAEL,IAAIjY,GAAcn1B,KAAKkP,QAAQimB,YAC3B6V,EAAkBhrC,KAAKkP,QAAQ87B,gBAC/BC,EAAkBjrC,KAAKkP,QAAQ+7B,eAGnC5kC,GAAMgnC,iBAAmBrC,EAAkB3kC,EAAMinC,gBAAkB,EACnEjnC,EAAMknC,iBAAmBtC,EAAkB5kC,EAAMmnC,gBAAkB,EAEnEnnC,EAAMonC,eAAiBztC,KAAKu1B,KAAK5E,IAAIuc,qBAAqBlc,YAAchxB,KAAKisC,WAAajsC,KAAKsT,MAAQ,EAAItT,KAAKkP,QAAQk8B,iBACxH/kC,EAAMqnC,gBAAkB,EACxBrnC,EAAMsnC,eAAiB3tC,KAAKu1B,KAAK5E,IAAIuc,qBAAqBlc,YAAchxB,KAAKisC,WAAajsC,KAAKsT,MAAQ,EAAItT,KAAKkP,QAAQi8B,iBACxH9kC,EAAMunC,gBAAkB,EAGL,QAAfzY,GACF7U,EAAM5S,MAAMzF,IAAM,IAClBqY,EAAM5S,MAAM7F,KAAO,IACnByY,EAAM5S,MAAM4W,OAAS,GACrBhE,EAAM5S,MAAM4F,MAAQtT,KAAKsT,MAAQ,KACjCgN,EAAM5S,MAAM6F,OAASvT,KAAKuT,OAAS,KACnCvT,KAAKqG,MAAMiN,MAAQtT,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAC3CtT,KAAKqG,MAAMkN,OAASvT,KAAKu1B,KAAKC,SAAS3tB,KAAK0L,SAG5C+M,EAAM5S,MAAMzF,IAAM,GAClBqY,EAAM5S,MAAM4W,OAAS,IACrBhE,EAAM5S,MAAM7F,KAAO,IACnByY,EAAM5S,MAAM4F,MAAQtT,KAAKsT,MAAQ,KACjCgN,EAAM5S,MAAM6F,OAASvT,KAAKuT,OAAS,KACnCvT,KAAKqG,MAAMiN,MAAQtT,KAAKu1B,KAAKC,SAASnN,MAAM/U,MAC5CtT,KAAKqG,MAAMkN,OAASvT,KAAKu1B,KAAKC,SAASnN,MAAM9U,QAG/Cs2B,EAAU7pC,KAAK6tC,gBACfhE,EAAU7pC,KAAK4pC,cAAgBC,EAEL,GAAtB7pC,KAAKkP,QAAQg8B,MACflrC,KAAK6sC,oBAGL7sC,KAAKitC,gBAGPjtC,KAAK8tC,aAAa3Y,GAEpB,MAAO0U,IAOTnnC,EAASwR,UAAU25B,cAAgB,WACjC,GAAIhE,IAAU,CACdjpC,GAAQ0Q,gBAAgBtR,KAAKyrC,YAAYC,OACzC9qC,EAAQ0Q,gBAAgBtR,KAAKyrC,YAAYE,OAEzC,IAAIxW,GAAcn1B,KAAKkP,QAAqB,YAGxCkuB,EAAcp9B,KAAKksC,OAASlsC,KAAKqG,MAAMmnC,iBAAmB,GAAKxtC,KAAK+rC,iBAEpE5iB,EAAO,GAAIvnB,GACb5B,KAAKs2B,MAAMjmB,MACXrQ,KAAKs2B,MAAMhmB,IACX8sB,EACAp9B,KAAK2wB,IAAIrQ,MAAM4Q,aACflxB,KAAKkP,QAAQouB,YAAYt9B,KAAKkP,QAAQimB,aACvB,GAAfn1B,KAAKksC,QAAmBlsC,KAAKkP,QAAQquB,WAGvCv9B,MAAKmpB,KAAOA,CAGZ,IAAI2iB,IAAc9rC,KAAK2wB,IAAIrQ,MAAM4Q,aAAgB/H,EAAKyU,WAAa59B,KAAK2wB,IAAIrQ,MAAM4Q,aAAe/H,EAAKwV,gBAAoBxV,EAAKwV,YAAcxV,EAAKyU,WAAazU,EAAKA,KAEpKnpB,MAAK8rC,WAAaA,CAElB,IAAIiC,GAAgB/tC,KAAKuT,OAASu4B,EAC9BkC,EAAiB,CAGrB,IAAmB,GAAfhuC,KAAKksC,OAAiB,CACxBJ,EAAa9rC,KAAK+rC,iBAClBiC,EAAiBxpC,KAAK+pB,MAAOvuB,KAAK2wB,IAAIrQ,MAAM4Q,aAAe4a,EAAciC,EACzE,KAAK,GAAIloC,GAAI,EAAO,GAAMmoC,EAAVnoC,EAA0BA,IACxCsjB,EAAK2V,UAIP,IAFAiP,EAAgB/tC,KAAKuT,OAASu4B,EAEL,IAArB9rC,KAAKgsC,cAAiD,GAA3BhsC,KAAKkP,QAAQquB,WAAoB,CAC9D,GAAI0Q,GAAsB9kB,EAAKwU,UAAYxU,EAAKA,KAAQnpB,KAAKgsC,YAC7D,IAAIiC,EAAqB,EACvB,IAAK,GAAIpoC,GAAI,EAAOooC,EAAJpoC,EAAwBA,IAAMsjB,EAAKE,WAEhD,IAAyB,EAArB4kB,EACP,IAAK,GAAIpoC,GAAI,GAAQooC,EAALpoC,EAAyBA,IAAMsjB,EAAK2V,gBAKxDiP,IAAiB,GAInB/tC,MAAKkuC,YAAc/kB,EAAKwU,SACxB,IAMIoB,GANAoP,EAAiB,EAGjB/pC,EAAM,CAI8ByC,UAArC7G,KAAKkP,QAAQq0B,OAAOpO,KACrB4J,EAAW/+B,KAAKkP,QAAQq0B,OAAOpO,GAAa4J,UAG9C/+B,KAAKouC,aAAe,CAEpB,KADA,GAAI37B,GAAI,EACDrO,EAAMI,KAAK+pB,MAAMwf,IAAgB,CACtC5kB,EAAKE,OACL5W,EAAIjO,KAAK+pB,MAAMnqB,EAAM0nC,GACrBqC,EAAiB/pC,EAAM0nC,CACvB,IAAI5M,GAAU/V,EAAK+V,WAEfl/B,KAAKkP,QAAyB,iBAAgB,GAAXgwB,GAAmC,GAAfl/B,KAAKksC,QAAsD,GAAnClsC,KAAKkP,QAAyB,kBAC/GlP,KAAKquC,aAAa57B,EAAI,EAAG0W,EAAKC,WAAW2V,GAAW5J,EAAa,cAAen1B,KAAKqG,MAAMinC,iBAGzFpO,GAAWl/B,KAAKkP,QAAyB,iBAAoB,GAAflP,KAAKksC,QAChB,GAAnClsC,KAAKkP,QAAyB,iBAA6B,GAAflP,KAAKksC,QAA8B,GAAXhN,GAClEzsB,GAAK,GACPzS,KAAKquC,aAAa57B,EAAI,EAAG0W,EAAKC,WAAW2V,GAAW5J,EAAa,cAAen1B,KAAKqG,MAAMmnC,iBAE7FxtC,KAAKsuC,YAAY77B,EAAG0iB,EAAa,wBAAyBn1B,KAAKkP,QAAQi8B,iBAAkBnrC,KAAKqG,MAAMsnC,iBAGpG3tC,KAAKsuC,YAAY77B,EAAG0iB,EAAa,wBAAyBn1B,KAAKkP,QAAQk8B,iBAAkBprC,KAAKqG,MAAMonC,gBAGnF,GAAfztC,KAAKksC,QAAkC,GAAhB/iB,EAAK4S,UAC9B/7B,KAAKgsC,aAAe5nC,GAGtBA,IAIApE,KAAK4rC,iBADY,GAAf5rC,KAAKksC,OACiBz5B,GAAKzS,KAAKkuC,YAAc/kB,EAAK4S,SAG7B/7B,KAAK2wB,IAAIrQ,MAAM4Q,aAAe/H,EAAKwV,WAI7D,IAAI4P,GAAa,CACuB1nC,UAApC7G,KAAKkP,QAAQq4B,MAAMpS,IAAuEtuB,SAAzC7G,KAAKkP,QAAQq4B,MAAMpS,GAAa7K,OACnFikB,EAAavuC,KAAKqG,MAAMmoC,gBAE1B,IAAI9jB,GAA+B,GAAtB1qB,KAAKkP,QAAQg8B,MAAgB1mC,KAAKJ,IAAIpE,KAAKkP,QAAQq8B,UAAWgD,GAAcvuC,KAAKkP,QAAQm8B,aAAe,GAAKkD,EAAavuC,KAAKkP,QAAQm8B,aAAe,EA0BnK,OAvBIrrC,MAAKouC,aAAgBpuC,KAAKsT,MAAQoX,GAAmC,GAAxB1qB,KAAKkP,QAAQua,SAC5DzpB,KAAKsT,MAAQtT,KAAKouC,aAAe1jB,EACjC1qB,KAAKkP,QAAQoE,MAAQtT,KAAKsT,MAAQ,KAClC1S,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYC,OACzC9qC,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYE,QACzC3rC,KAAKyiB,SACLonB,GAAU,GAGH7pC,KAAKouC,aAAgBpuC,KAAKsT,MAAQoX,GAAmC,GAAxB1qB,KAAKkP,QAAQua,SAAmBzpB,KAAKsT,MAAQtT,KAAK6rC,UACtG7rC,KAAKsT,MAAQ9O,KAAKJ,IAAIpE,KAAK6rC,SAAS7rC,KAAKouC,aAAe1jB,GACxD1qB,KAAKkP,QAAQoE,MAAQtT,KAAKsT,MAAQ,KAClC1S,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYC,OACzC9qC,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYE,QACzC3rC,KAAKyiB,SACLonB,GAAU,IAGVjpC,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYC,OACzC9qC,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYE,QACzC9B,GAAU,GAGLA,GAGTnnC,EAASwR,UAAUu6B,aAAe,SAAUnqC,GAC1C,GAAIoqC,GAAgB1uC,KAAKkuC,YAAc5pC,EACnCqqC,EAAiBD,EAAgB1uC,KAAK4rC,gBAC1C,OAAO+C,IAGTjsC,EAASwR,UAAUylB,cAAgB,SAAUnnB,GAC3C,MAAOxS,MAAKkuC,YAAe17B,EAAIxS,KAAK4rC,kBAYtClpC,EAASwR,UAAUm6B,aAAe,SAAU57B,EAAG6X,EAAM6K,EAAa/sB,EAAWwmC,GAE3E,GAAI57B,GAAQpS,EAAQuR,cAAc,MAAMnS,KAAKyrC,YAAYE,OAAQ3rC,KAAK2wB,IAAIrQ,MAC1EtN,GAAM5K,UAAYA,EAClB4K,EAAMiS,UAAYqF,EACC,QAAf6K,GACFniB,EAAMtF,MAAM7F,KAAO,IAAM7H,KAAKkP,QAAQm8B,aAAe,KACrDr4B,EAAMtF,MAAM4b,UAAY,UAGxBtW,EAAMtF,MAAM2a,MAAQ,IAAMroB,KAAKkP,QAAQm8B,aAAe,KACtDr4B,EAAMtF,MAAM4b,UAAY,QAG1BtW,EAAMtF,MAAMzF,IAAMwK,EAAI,GAAMm8B,EAAkB5uC,KAAKkP,QAAQo8B,aAAe,KAE1EhhB,GAAQ,EAER,IAAIukB,GAAerqC,KAAKJ,IAAIpE,KAAKqG,MAAMyoC,eAAe9uC,KAAKqG,MAAM0oC,eAC7D/uC,MAAKouC,aAAe9jB,EAAKtkB,OAAS6oC,IACpC7uC,KAAKouC,aAAe9jB,EAAKtkB,OAAS6oC,IAYtCnsC,EAASwR,UAAUo6B,YAAc,SAAU77B,EAAG0iB,EAAa/sB,EAAWsiB,EAAQpX,GAC5E,GAAmB,GAAftT,KAAKksC,OAAgB,CACvB,GAAIzb,GAAO7vB,EAAQuR,cAAc,MAAMnS,KAAKyrC,YAAYC,MAAO1rC,KAAK2wB,IAAI2b,cACxE7b,GAAKroB,UAAYA,EACjBqoB,EAAKxL,UAAY,GAEE,QAAfkQ,EACF1E,EAAK/iB,MAAM7F,KAAQ7H,KAAKsT,MAAQoX,EAAU,KAG1C+F,EAAK/iB,MAAM2a,MAASroB,KAAKsT,MAAQoX,EAAU,KAG7C+F,EAAK/iB,MAAM4F,MAAQA,EAAQ,KAC3Bmd,EAAK/iB,MAAMzF,IAAMwK,EAAI,OASzB/P,EAASwR,UAAU45B,aAAe,SAAU3Y,GAI1C,GAHAv0B,EAAQ0Q,gBAAgBtR,KAAKyrC,YAAYlE,OAGD1gC,SAApC7G,KAAKkP,QAAQq4B,MAAMpS,IAAuEtuB,SAAzC7G,KAAKkP,QAAQq4B,MAAMpS,GAAa7K,KAAoB,CACvG,GAAIid,GAAQ3mC,EAAQuR,cAAc,MAAOnS,KAAKyrC,YAAYlE,MAAOvnC,KAAK2wB,IAAIrQ,MAC1EinB,GAAMn/B,UAAY,eAAiB+sB,EACnCoS,EAAMtiB,UAAYjlB,KAAKkP,QAAQq4B,MAAMpS,GAAa7K,KAGJzjB,SAA1C7G,KAAKkP,QAAQq4B,MAAMpS,GAAaznB,OAClC/M,EAAKoN,WAAWw5B,EAAOvnC,KAAKkP,QAAQq4B,MAAMpS,GAAaznB,OAGtC,QAAfynB,EACFoS,EAAM75B,MAAM7F,KAAO7H,KAAKqG,MAAMmoC,gBAAkB,KAGhDjH,EAAM75B,MAAM2a,MAAQroB,KAAKqG,MAAMmoC,gBAAkB,KAGnDjH,EAAM75B,MAAM4F,MAAQtT,KAAKuT,OAAS,KAIpC3S,EAAQ+Q,gBAAgB3R,KAAKyrC,YAAYlE,QAW3C7kC,EAASwR,UAAUk5B,mBAAqB,WAEtC,KAAM,mBAAqBptC,MAAKqG,OAAQ,CACtC,GAAI2oC,GAAYh9B,SAASi9B,eAAe,KACpCC,EAAmBl9B,SAASM,cAAc,MAC9C48B,GAAiB9mC,UAAY,sBAC7B8mC,EAAiBh9B,YAAY88B,GAC7BhvC,KAAK2wB,IAAIrQ,MAAMpO,YAAYg9B,GAE3BlvC,KAAKqG,MAAMinC,gBAAkB4B,EAAiBrpB,aAC9C7lB,KAAKqG,MAAM0oC,eAAiBG,EAAiB1uB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAYs9B,GAG7B,KAAM,mBAAqBlvC,MAAKqG,OAAQ,CACtC,GAAI8oC,GAAYn9B,SAASi9B,eAAe,KACpCG,EAAmBp9B,SAASM,cAAc,MAC9C88B,GAAiBhnC,UAAY,sBAC7BgnC,EAAiBl9B,YAAYi9B,GAC7BnvC,KAAK2wB,IAAIrQ,MAAMpO,YAAYk9B,GAE3BpvC,KAAKqG,MAAMmnC,gBAAkB4B,EAAiBvpB,aAC9C7lB,KAAKqG,MAAMyoC,eAAiBM,EAAiB5uB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAYw9B,GAG7B,KAAM,mBAAqBpvC,MAAKqG,OAAQ,CACtC,GAAIgpC,GAAYr9B,SAASi9B,eAAe,KACpCK,EAAmBt9B,SAASM,cAAc,MAC9Cg9B,GAAiBlnC,UAAY,sBAC7BknC,EAAiBp9B,YAAYm9B,GAC7BrvC,KAAK2wB,IAAIrQ,MAAMpO,YAAYo9B,GAE3BtvC,KAAKqG,MAAMmoC,gBAAkBc,EAAiBzpB,aAC9C7lB,KAAKqG,MAAMkpC,eAAiBD,EAAiB9uB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAY09B,KAI/BzvC,EAAOD,QAAU8C,GAKb,SAAS7C,EAAQD,EAASM,GAkB9B,QAASyC,GAAY+P,EAAOumB,EAAS/pB,EAASsgC,GAC5CxvC,KAAKK,GAAK44B,CACV,IAAItqB,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAAW,aAAa,SAAS,aAC5F3O,MAAKkP,QAAUvO,EAAK+N,sBAAsBC,EAAOO,GACjDlP,KAAKyvC,kBAAwC5oC,SAApB6L,EAAMtK,UAC/BpI,KAAKwvC,yBAA2BA,EAChCxvC,KAAK0vC,aAAe,EACpB1vC,KAAK4V,OAAOlD,GACkB,GAA1B1S,KAAKyvC,oBACPzvC,KAAKwvC,yBAAyB,IAAM,GAEtCxvC,KAAK22B,aACL32B,KAAKypB,QAA4B5iB,SAAlB6L,EAAM+W,SAAwB,EAAO/W,EAAM+W,QA5B5D,GAAI9oB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9ByvC,EAAOzvC,EAAoB,IAC3B0vC,EAAM1vC,EAAoB,IAC1B2vC,EAAS3vC,EAAoB,GAgCjCyC,GAAWuR,UAAU8iB,SAAW,SAAS/0B,GAC1B,MAATA,GACFjC,KAAK22B,UAAY10B,EACQ,GAArBjC,KAAKkP,QAAQ+H,MACfjX,KAAK22B,UAAU1f,KAAK,SAAUrR,EAAEa,GAAI,MAAOb,GAAE4M,EAAI/L,EAAE+L,KAIrDxS,KAAK22B,cASTh0B,EAAWuR,UAAU47B,gBAAkB,SAASvpB,GAC9CvmB,KAAK0vC,aAAenpB,GAQtB5jB,EAAWuR,UAAUD,WAAa,SAAS/E,GACzC,GAAgBrI,SAAZqI,EAAuB,CACzB,GAAIP,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAC3DhO,GAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAASA,GAE/CvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UAEpCA,EAAQ6gC,YACuB,gBAAtB7gC,GAAQ6gC,YACb7gC,EAAQ6gC,WAAWC,kBACqB,WAAtC9gC,EAAQ6gC,WAAWC,gBACrBhwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,EAEa,WAAtC/gC,EAAQ6gC,WAAWC,gBAC1BhwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,GAGhCjwC,KAAKkP,QAAQ6gC,WAAWC,gBAAkB,cAC1ChwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,KAOhB,QAAtBjwC,KAAKkP,QAAQxB,MACf1N,KAAKmH,KAAO,GAAIwoC,GAAK3vC,KAAKK,GAAIL,KAAKkP,SAEN,OAAtBlP,KAAKkP,QAAQxB,MACpB1N,KAAKmH,KAAO,GAAIyoC,GAAI5vC,KAAKK,GAAIL,KAAKkP,SAEL,UAAtBlP,KAAKkP,QAAQxB,QACpB1N,KAAKmH,KAAO,GAAI0oC,GAAO7vC,KAAKK,GAAIL,KAAKkP,WASzCvM,EAAWuR,UAAU0B,OAAS,SAASlD,GACrC1S,KAAK0S,MAAQA,EACb1S,KAAKmT,QAAUT,EAAMS,SAAW,QAChCnT,KAAKoI,UAAYsK,EAAMtK,WAAapI,KAAKoI,WAAa,aAAepI,KAAKwvC,yBAAyB,GAAK,GACxGxvC,KAAKypB,QAA4B5iB,SAAlB6L,EAAM+W,SAAwB,EAAO/W,EAAM+W,QAC1DzpB,KAAK0N,MAAQgF,EAAMhF,MACnB1N,KAAKiU,WAAWvB,EAAMxD,UAcxBvM,EAAWuR,UAAU84B,SAAW,SAASx6B,EAAGC,EAAGlB,EAAe2+B,EAAc3E,EAAWuB,GACrF,GACIqD,GAAMC,EADNC,EAA0B,GAAbvD,EAGbwD,EAAU1vC,EAAQiR,cAAc,OAAQN,EAAe2+B,EAO3D,IANAI,EAAQx9B,eAAe,KAAM,IAAKN,GAClC89B,EAAQx9B,eAAe,KAAM,IAAKL,EAAI49B,GACtCC,EAAQx9B,eAAe,KAAM,QAASy4B,GACtC+E,EAAQx9B,eAAe,KAAM,SAAU,EAAEu9B,GACzCC,EAAQx9B,eAAe,KAAM,QAAS,WAEZ,QAAtB9S,KAAKkP,QAAQxB,MACfyiC,EAAOvvC,EAAQiR,cAAc,OAAQN,EAAe2+B,GACpDC,EAAKr9B,eAAe,KAAM,QAAS9S,KAAKoI,WACtBvB,SAAf7G,KAAK0N,OACNyiC,EAAKr9B,eAAe,KAAM,QAAS9S,KAAK0N,OAG1CyiC,EAAKr9B,eAAe,KAAM,IAAK,IAAMN,EAAI,IAAIC,EAAE,MAAQD,EAAI+4B,GAAa,IAAI94B,GACzC,GAA/BzS,KAAKkP,QAAQqhC,OAAOphC,UACtBihC,EAAWxvC,EAAQiR,cAAc,OAAQN,EAAe2+B,GACjB,OAAnClwC,KAAKkP,QAAQqhC,OAAOpb,YACtBib,EAASt9B,eAAe,KAAM,IAAK,IAAIN,EAAE,MAAQC,EAAI49B,GACnD,IAAI79B,EAAE,IAAIC,EAAE,MAAOD,EAAI+4B,GAAa,IAAI94B,EAAE,MAAOD,EAAI+4B,GAAa,KAAO94B,EAAI49B,IAG/ED,EAASt9B,eAAe,KAAM,IAAK,IAAIN,EAAE,IAAIC,EAAE,KACzCD,EAAE,KAAOC,EAAI49B,GAAc,MACzB79B,EAAI+4B,GAAa,KAAO94B,EAAI49B,GAClC,KAAM79B,EAAI+4B,GAAa,IAAI94B,GAE/B29B,EAASt9B,eAAe,KAAM,QAAS9S,KAAKoI,UAAY,cAGnB,GAAnCpI,KAAKkP,QAAQ2D,WAAW1D,SAC1BvO,EAAQ2R,UAAUC,EAAI,GAAM+4B,EAAU94B,EAAGzS,KAAMuR,EAAe2+B,OAG7D,CACH,GAAIM,GAAWhsC,KAAK+pB,MAAM,GAAMgd,GAC5BkF,EAAajsC,KAAK+pB,MAAM,GAAMue,GAC9B4D,EAAalsC,KAAK+pB,MAAM,IAAOue,GAE/BpiB,EAASlmB,KAAK+pB,OAAOgd,EAAa,EAAIiF,GAAW,EAErD5vC,GAAQyS,QAAQb,EAAI,GAAIg+B,EAAW9lB,EAAYjY,EAAI49B,EAAaI,EAAa,EAAGD,EAAUC,EAAYzwC,KAAKoI,UAAY,OAAQmJ,EAAe2+B,GAC9ItvC,EAAQyS,QAAQb,EAAI,IAAIg+B,EAAW9lB,EAAS,EAAGjY,EAAI49B,EAAaK,EAAa,EAAGF,EAAUE,EAAY1wC,KAAKoI,UAAY,OAAQmJ,EAAe2+B,KAYlJvtC,EAAWuR,UAAUilB,UAAY,SAASoS,EAAWuB,GACnD,GAAIhC,GAAM94B,SAASC,gBAAgB,6BAA6B,MAEhE,OADAjS,MAAKgtC,SAAS,EAAE,GAAIF,KAAchC,EAAIS,EAAUuB,IACxC6D,KAAM7F,EAAK93B,MAAOhT,KAAKmT,QAASgiB,YAAYn1B,KAAKkP,QAAQ0hC,mBAGnEjuC,EAAWuR,UAAU28B,UAAY,SAASC,GACxC,MAAO9wC,MAAKmH,KAAK0pC,UAAUC,IAG7BnuC,EAAWuR,UAAU68B,KAAO,SAAS9Y,EAASvlB,EAAOs+B,GACnDhxC,KAAKmH,KAAK4pC,KAAK9Y,EAASvlB,EAAOs+B,IAIjCnxC,EAAOD,QAAU+C,GAKb,SAAS9C,EAAQD,EAASM,GAY9B,QAAS0C,GAAOq2B,EAASxlB,EAAMijB,GAC7B12B,KAAKi5B,QAAUA,EACfj5B,KAAKojC,aACLpjC,KAAK0oC,cAAgB,EACrB1oC,KAAKixC,gBAAkBx9B,GAAQA,EAAKy9B,cACpClxC,KAAK02B,QAAUA,EAEf12B,KAAK2wB,OACL3wB,KAAKqG,OACH2M,OACEM,MAAO,EACPC,OAAQ,IAGZvT,KAAKoI,UAAY,KAEjBpI,KAAKiC,SACLjC,KAAKmxC,gBACLnxC,KAAKqP,cACH+hC,WACAC,UAEFrxC,KAAKsxC,kBAAmB,CACxB,IAAIp8B,GAAKlV,IACTA,MAAK02B,QAAQnB,KAAKE,QAAQnhB,GAAG,mBAAoB,WAC/CY,EAAGo8B,kBAAmB,IAGxBtxC,KAAKs1B,UAELt1B,KAAK+Y,QAAQtF,GAxCf,CAAA,GAAI9S,GAAOT,EAAoB,GAC3B4B,EAAQ5B,EAAoB,GAChBA,GAAoB,IA6CpC0C,EAAMsR,UAAUohB,QAAU,WACxB,GAAItiB,GAAQhB,SAASM,cAAc,MACnCU,GAAM5K,UAAY,SAClBpI,KAAK2wB,IAAI3d,MAAQA,CAEjB,IAAIu+B,GAAQv/B,SAASM,cAAc,MACnCi/B,GAAMnpC,UAAY,QAClB4K,EAAMd,YAAYq/B,GAClBvxC,KAAK2wB,IAAI4gB,MAAQA,CAEjB,IAAIxY,GAAa/mB,SAASM,cAAc,MACxCymB,GAAW3wB,UAAY,QACvB2wB,EAAW,kBAAoB/4B,KAC/BA,KAAK2wB,IAAIoI,WAAaA,EAEtB/4B,KAAK2wB,IAAI9jB,WAAamF,SAASM,cAAc,OAC7CtS,KAAK2wB,IAAI9jB,WAAWzE,UAAY,QAEhCpI,KAAK2wB,IAAIoS,KAAO/wB,SAASM,cAAc,OACvCtS,KAAK2wB,IAAIoS,KAAK36B,UAAY,QAK1BpI,KAAK2wB,IAAI6gB,OAASx/B,SAASM,cAAc,OACzCtS,KAAK2wB,IAAI6gB,OAAO9jC,MAAM2rB,WAAa,SACnCr5B,KAAK2wB,IAAI6gB,OAAOvsB,UAAY,IAC5BjlB,KAAK2wB,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAI6gB,SAO3C5uC,EAAMsR,UAAU6E,QAAU,SAAStF,GAEjC,GAAIN,GAAUM,GAAQA,EAAKN,OACvBA,aAAmBy0B,SACrB5nC,KAAK2wB,IAAI4gB,MAAMr/B,YAAYiB,GAG3BnT,KAAK2wB,IAAI4gB,MAAMtsB,UADIpe,SAAZsM,GAAqC,OAAZA,EACLA,EAGAnT,KAAKi5B,SAAW,GAI7Cj5B,KAAK2wB,IAAI3d,MAAMu0B,MAAQ9zB,GAAQA,EAAK8zB,OAAS,GAExCvnC,KAAK2wB,IAAI4gB,MAAM5sB,WAIlBhkB,EAAK8H,gBAAgBzI,KAAK2wB,IAAI4gB,MAAO,UAHrC5wC,EAAKwH,aAAanI,KAAK2wB,IAAI4gB,MAAO,SAOpC,IAAInpC,GAAYqL,GAAQA,EAAKrL,WAAa,IACtCA,IAAapI,KAAKoI,YAChBpI,KAAKoI,YACPzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAI3d,MAAOhT,KAAKoI,WAC1CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAIoI,WAAY/4B,KAAKoI,WAC/CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAI9jB,WAAY7M,KAAKoI,WAC/CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAIoS,KAAM/iC,KAAKoI,YAE3CzH,EAAKwH,aAAanI,KAAK2wB,IAAI3d,MAAO5K,GAClCzH,EAAKwH,aAAanI,KAAK2wB,IAAIoI,WAAY3wB,GACvCzH,EAAKwH,aAAanI,KAAK2wB,IAAI9jB,WAAYzE,GACvCzH,EAAKwH,aAAanI,KAAK2wB,IAAIoS,KAAM36B,GACjCpI,KAAKoI,UAAYA,GAIfpI,KAAK0N,QACP/M,EAAKuN,cAAclO,KAAK2wB,IAAI3d,MAAOhT,KAAK0N,OACxC1N,KAAK0N,MAAQ,MAEX+F,GAAQA,EAAK/F,QACf/M,EAAKoN,WAAW/N,KAAK2wB,IAAI3d,MAAOS,EAAK/F,OACrC1N,KAAK0N,MAAQ+F,EAAK/F,QAQtB9K,EAAMsR,UAAUu9B,cAAgB,WAC9B,MAAOzxC,MAAKqG,MAAM2M,MAAMM,OAW1B1Q,EAAMsR,UAAUuO,OAAS,SAAS6T,EAAO3b,EAAQ+2B,GAC/C,GAAI7H,IAAU,EAIV8H,EAAe3xC,KAAK2wB,IAAI6gB,OAAO3rB,YAanC,IAZI8rB,GAAgB3xC,KAAK4xC,mBACvB5xC,KAAK4xC,iBAAmBD,EAExBhxC,EAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GACjCA,EAAK22B,OAAQ,EACT32B,EAAK02B,WAAW12B,EAAK2S,WAG3BivB,GAAU,GAI8B,kBAA/B1xC,MAAK02B,QAAQxnB,QAAQsH,MAAsB,CAGpD,GAAIk7B,EAAS,CAIX,GAAIx8B,GAAKlV,KACLmpC,GAAY,CAChBxoC,GAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GAC5BA,EAAK02B,YACR12B,EAAK2S,SACLvN,EAAGi8B,aAAa5oC,KAAKuH,IAEvBA,EAAKm3B,YAAYkC,IAInB,IAAI0I,GAAqB7xC,KAAKqP,aAAa+hC,QAAQrlC,QAAQkL,KAAK,SAAUrR,EAAGa,GAC3E,MAAOyO,GAAGwhB,QAAQxnB,QAAQsH,MAAM5Q,EAAE6N,KAAMhN,EAAEgN,OAE5C3R,GAAMA,MAAM+vC,EAAoBl3B,GAAQ,GAG1C3a,KAAKmxC,aAAenxC,KAAK8xC,oBAAoB9xC,KAAKqP,aAAcrP,KAAKmxC,aAAc7a,OAInFt2B,MAAKmxC,aAAenxC,KAAK8xC,oBAAoB9xC,KAAKqP,aAAcrP,KAAKmxC,aAAc7a,GAE/Et2B,KAAK02B,QAAQxnB,QAAQpN,MACvBA,EAAMA,MAAM9B,KAAKmxC,aAAcx2B,EAAQ+2B,GAGvC5vC,EAAMqhC,QAAQnjC,KAAKmxC,aAAcx2B,EAAQ3a,KAAKojC,UAKlD,IAAI7vB,GAASvT,KAAK+xC,iBAAiBp3B,GAG/Boe,EAAa/4B,KAAK2wB,IAAIoI,UAC1B/4B,MAAKiI,IAAM8wB,EAAWiZ,UACtBhyC,KAAK6H,KAAOkxB,EAAWkZ,WACvBjyC,KAAKsT,MAAQylB,EAAW/H,YACxB6Y,EAAUlpC,EAAKqI,eAAehJ,KAAM,SAAUuT,IAAWs2B,EAGzDA,EAAUlpC,EAAKqI,eAAehJ,KAAKqG,MAAM2M,MAAO,QAAShT,KAAK2wB,IAAI4gB,MAAM/wB,cAAgBqpB,EACxFA,EAAUlpC,EAAKqI,eAAehJ,KAAKqG,MAAM2M,MAAO,SAAUhT,KAAK2wB,IAAI4gB,MAAM1rB,eAAiBgkB,EAG1F7pC,KAAK2wB,IAAI9jB,WAAWa,MAAM6F,OAAUA,EAAS,KAC7CvT,KAAK2wB,IAAIoI,WAAWrrB,MAAM6F,OAAUA,EAAS,KAC7CvT,KAAK2wB,IAAI3d,MAAMtF,MAAM6F,OAASA,EAAS,IAGvC,KAAK,GAAI1N,GAAI,EAAGqsC,EAAKlyC,KAAKmxC,aAAanrC,OAAYksC,EAAJrsC,EAAQA,IAAK,CAC1D,GAAIiK,GAAO9P,KAAKmxC,aAAatrC,EAC7BiK,GAAKo3B,YAAYvsB,GAGnB,MAAOkvB,IASTjnC,EAAMsR,UAAU69B,iBAAmB,SAAUp3B,GAE3C,GAAIpH,GACA49B,EAAenxC,KAAKmxC,YAGxBnxC,MAAKmyC,gBACL,IAAIj9B,GAAKlV,IACT,IAAImxC,EAAanrC,OAAQ,CACvB,GAAI7B,GAAMgtC,EAAa,GAAGlpC,IACtB7D,EAAM+sC,EAAa,GAAGlpC,IAAMkpC,EAAa,GAAG59B,MAahD,IAZA5S,EAAKiI,QAAQuoC,EAAc,SAAUrhC,GACnC3L,EAAMK,KAAKL,IAAIA,EAAK2L,EAAK7H,KACzB7D,EAAMI,KAAKJ,IAAIA,EAAM0L,EAAK7H,IAAM6H,EAAKyD,QACV1M,SAAvBiJ,EAAK2D,KAAK6vB,WACZpuB,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU/vB,OAAS/O,KAAKJ,IAAI8Q,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU/vB,OAAOzD,EAAKyD,QAChG2B,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU7Z,SAAU,KAO3CtlB,EAAMwW,EAAOooB,KAAM,CAErB,GAAIrY,GAASvmB,EAAMwW,EAAOooB,IAC1B3+B,IAAOsmB,EACP/pB,EAAKiI,QAAQuoC,EAAc,SAAUrhC,GACnCA,EAAK7H,KAAOyiB,IAGhBnX,EAASnP,EAAMuW,EAAO7K,KAAK2W,SAAW,MAGtClT,GAASoH,EAAOooB,KAAOpoB,EAAO7K,KAAK2W,QAIrC,OAFAlT,GAAS/O,KAAKJ,IAAImP,EAAQvT,KAAKqG,MAAM2M,MAAMO,SAQ7C3Q,EAAMsR,UAAU6yB,KAAO,WAChB/mC,KAAK2wB,IAAI3d,MAAM7I,YAClBnK,KAAK02B,QAAQ/F,IAAIqI,SAAS9mB,YAAYlS,KAAK2wB,IAAI3d,OAG5ChT,KAAK2wB,IAAIoI,WAAW5uB,YACvBnK,KAAK02B,QAAQ/F,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAIoI,YAG9C/4B,KAAK2wB,IAAI9jB,WAAW1C,YACvBnK,KAAK02B,QAAQ/F,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAI9jB,YAG9C7M,KAAK2wB,IAAIoS,KAAK54B,YACjBnK,KAAK02B,QAAQ/F,IAAIoS,KAAK7wB,YAAYlS,KAAK2wB,IAAIoS,OAO/CngC,EAAMsR,UAAU4yB,KAAO,WACrB,GAAI9zB,GAAQhT,KAAK2wB,IAAI3d,KACjBA,GAAM7I,YACR6I,EAAM7I,WAAWyH,YAAYoB,EAG/B,IAAI+lB,GAAa/4B,KAAK2wB,IAAIoI,UACtBA,GAAW5uB,YACb4uB,EAAW5uB,WAAWyH,YAAYmnB,EAGpC,IAAIlsB,GAAa7M,KAAK2wB,IAAI9jB,UACtBA,GAAW1C,YACb0C,EAAW1C,WAAWyH,YAAY/E,EAGpC,IAAIk2B,GAAO/iC,KAAK2wB,IAAIoS,IAChBA,GAAK54B,YACP44B,EAAK54B,WAAWyH,YAAYmxB,IAQhCngC,EAAMsR,UAAUF,IAAM,SAASlE,GAc7B,GAbA9P,KAAKiC,MAAM6N,EAAKzP,IAAMyP,EACtBA,EAAK+2B,UAAU7mC,MAGY6G,SAAvBiJ,EAAK2D,KAAK6vB,WAC+Bz8B,SAAvC7G,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,YAC3BtjC,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,WAAa/vB,OAAO,EAAGkW,SAAS,EAAO/gB,MAAM1I,KAAK0oC,cAAezmC,UAC1FjC,KAAK0oC,iBAEP1oC,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,UAAUrhC,MAAMsG,KAAKuH,IAEhD9P,KAAKoyC,iBAEkC,IAAnCpyC,KAAKmxC,aAAanqC,QAAQ8I,GAAa,CACzC,GAAIwmB,GAAQt2B,KAAK02B,QAAQnB,KAAKe,KAC9Bt2B,MAAKqyC,gBAAgBviC,EAAM9P,KAAKmxC,aAAc7a,KAIlD1zB,EAAMsR,UAAUk+B,eAAiB,WAC/B,GAA6BvrC,SAAzB7G,KAAKixC,gBAA+B,CACtC,GAAIqB,KACJ,IAAmC,gBAAxBtyC,MAAKixC,gBAA6B,CAC3C,IAAK,GAAI3N,KAAYtjC,MAAKojC,UACxBkP,EAAU/pC,MAAM+6B,SAAUA,EAAUiP,UAAWvyC,KAAKojC,UAAUE,GAAUrhC,MAAM,GAAGwR,KAAKzT,KAAKixC,kBAE7FqB,GAAUr7B,KAAK,SAAUrR,EAAGa,GAC1B,MAAOb,GAAE2sC,UAAY9rC,EAAE8rC,gBAGtB,IAAmC,kBAAxBvyC,MAAKixC,gBAA+B,CAClD,IAAK,GAAI3N,KAAYtjC,MAAKojC,UACxBkP,EAAU/pC,KAAKvI,KAAKojC,UAAUE,GAAUrhC,MAAM,GAAGwR,KAEnD6+B,GAAUr7B,KAAKjX,KAAKixC,iBAGtB,GAAIqB,EAAUtsC,OAAS,EACrB,IAAK,GAAIH,GAAI,EAAGA,EAAIysC,EAAUtsC,OAAQH,IACpC7F,KAAKojC,UAAUkP,EAAUzsC,GAAGy9B,UAAU56B,MAAQ7C,IAMtDjD,EAAMsR,UAAUi+B,eAAiB,WAC/B,IAAK,GAAI7O,KAAYtjC,MAAKojC,UACpBpjC,KAAKojC,UAAUj9B,eAAem9B,KAChCtjC,KAAKojC,UAAUE,GAAU7Z,SAAU,IASzC7mB,EAAMsR,UAAUkD,OAAS,SAAStH,SACzB9P,MAAKiC,MAAM6N,EAAKzP,IACvByP,EAAK+2B,UAAU,KAGf,IAAIn+B,GAAQ1I,KAAKmxC,aAAanqC,QAAQ8I,EACzB,KAATpH,GAAa1I,KAAKmxC,aAAaxoC,OAAOD,EAAO,IAUnD9F,EAAMsR,UAAUszB,kBAAoB,SAAS13B,GAC3C9P,KAAK02B,QAAQ8b,WAAW1iC,EAAKzP,KAO/BuC,EAAMsR,UAAUsC,MAAQ,WAKtB,IAAK,GAJDzN,GAAQpI,EAAKmI,QAAQ9I,KAAKiC,OAC1BwwC,KACAC,KAEK7sC,EAAI,EAAGA,EAAIkD,EAAM/C,OAAQH,IACNgB,SAAtBkC,EAAMlD,GAAG4N,KAAKnD,KAChBoiC,EAASnqC,KAAKQ,EAAMlD,IAEtB4sC,EAAWlqC,KAAKQ,EAAMlD,GAExB7F,MAAKqP,cACH+hC,QAASqB,EACTpB,MAAOqB,GAGT5wC,EAAM2gC,aAAaziC,KAAKqP,aAAa+hC,SACrCtvC,EAAM4gC,WAAW1iC,KAAKqP,aAAagiC,QAYrCzuC,EAAMsR,UAAU49B,oBAAsB,SAASziC,EAAcsjC,EAAiBrc,GAC5E,GAKIxmB,GAAMjK,EALNsrC,KACAyB,KACAxf,GAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,EACvCwiC,EAAavc,EAAMjmB,MAAQ+iB,EAC3B0f,EAAaxc,EAAMhmB,IAAM8iB,EAIzB9jB,EAAiB,SAAUhL,GAC7B,MAAiBuuC,GAARvuC,EAA6B,GACpBwuC,GAATxuC,EAA8B,EACA,EAMzC,IAAIquC,EAAgB3sC,OAAS,EAC3B,IAAKH,EAAI,EAAGA,EAAI8sC,EAAgB3sC,OAAQH,IACtC7F,KAAK+yC,6BAA6BJ,EAAgB9sC,GAAIsrC,EAAcyB,EAAoBtc,EAK5F,IAAI0c,GAAoBryC,EAAKyO,mBAAmBC,EAAa+hC,QAAS9hC,EAAgB,OAAO,QAS7F,IANAtP,KAAKizC,cAAcD,EAAmB3jC,EAAa+hC,QAASD,EAAcyB,EAAoB,SAAU9iC,GACtG,MAAQA,GAAK2D,KAAKpD,MAAQwiC,GAAc/iC,EAAK2D,KAAKpD,MAAQyiC,IAK/B,GAAzB9yC,KAAKsxC,iBAEP,IADAtxC,KAAKsxC,kBAAmB,EACnBzrC,EAAI,EAAGA,EAAIwJ,EAAagiC,MAAMrrC,OAAQH,IACzC7F,KAAK+yC,6BAA6B1jC,EAAagiC,MAAMxrC,GAAIsrC,EAAcyB,EAAoBtc,OAG1F,CAEH,GAAI4c,GAAkBvyC,EAAKyO,mBAAmBC,EAAagiC,MAAO/hC,EAAgB,OAAO,MAGzFtP,MAAKizC,cAAcC,EAAiB7jC,EAAagiC,MAAOF,EAAcyB,EAAoB,SAAU9iC,GAClG,MAAQA,GAAK2D,KAAKnD,IAAMuiC,GAAc/iC,EAAK2D,KAAKnD,IAAMwiC,IAM1D,IAAKjtC,EAAI,EAAGA,EAAIsrC,EAAanrC,OAAQH,IACnCiK,EAAOqhC,EAAatrC,GACfiK,EAAK02B,WAAW12B,EAAKi3B,OAE1Bj3B,EAAKm3B,aAgBP,OAAOkK,IAGTvuC,EAAMsR,UAAU++B,cAAgB,SAAUE,EAAYlxC,EAAOkvC,EAAcyB,EAAoBQ,GAC7F,GAAItjC,GACAjK,CAEJ,IAAkB,IAAdstC,EAAkB,CACpB,IAAKttC,EAAIstC,EAAYttC,GAAK,IACxBiK,EAAO7N,EAAM4D,IACTutC,EAAetjC,IAFQjK,IAMWgB,SAAhC+rC,EAAmB9iC,EAAKzP,MAC1BuyC,EAAmB9iC,EAAKzP,KAAM,EAC9B8wC,EAAa5oC,KAAKuH,GAKxB,KAAKjK,EAAIstC,EAAa,EAAGttC,EAAI5D,EAAM+D,SACjC8J,EAAO7N,EAAM4D,IACTutC,EAAetjC,IAFsBjK,IAMHgB,SAAhC+rC,EAAmB9iC,EAAKzP,MAC1BuyC,EAAmB9iC,EAAKzP,KAAM,EAC9B8wC,EAAa5oC,KAAKuH,MAmB5BlN,EAAMsR,UAAUm+B,gBAAkB,SAASviC,EAAMqhC,EAAc7a,GACvDxmB,EAAKk3B,UAAU1Q,IACZxmB,EAAK02B,WAAW12B,EAAKi3B,OAE1Bj3B,EAAKm3B,cACLkK,EAAa5oC,KAAKuH,IAGdA,EAAK02B,WAAW12B,EAAKg3B,QAgB/BlkC,EAAMsR,UAAU6+B,6BAA+B,SAASjjC,EAAMqhC,EAAcyB,EAAoBtc,GAC1FxmB,EAAKk3B,UAAU1Q,GACmBzvB,SAAhC+rC,EAAmB9iC,EAAKzP,MAC1BuyC,EAAmB9iC,EAAKzP,KAAM,EAC9B8wC,EAAa5oC,KAAKuH,IAIhBA,EAAK02B,WAAW12B,EAAKg3B,QAM7BjnC,EAAOD,QAAUgD,GAKb,SAAS/C,EAAQD,EAASM,GAW9B,QAAS2C,GAAiBo2B,EAASxlB,EAAMijB,GACvC9zB,EAAMrC,KAAKP,KAAMi5B,EAASxlB,EAAMijB,GAEhC12B,KAAKsT,MAAQ,EACbtT,KAAKuT,OAAS,EACdvT,KAAKiI,IAAM,EACXjI,KAAK6H,KAAO,EAfd,GACIjF,IADO1C,EAAoB,GACnBA,EAAoB,IAiBhC2C,GAAgBqR,UAAYtN,OAAOkI,OAAOlM,EAAMsR,WAShDrR,EAAgBqR,UAAUuO,OAAS,SAAS6T,EAAO3b,GACjD,GAAIkvB,IAAU,CAEd7pC,MAAKmxC,aAAenxC,KAAK8xC,oBAAoB9xC,KAAKqP,aAAcrP,KAAKmxC,aAAc7a,GAGnFt2B,KAAKsT,MAAQtT,KAAK2wB,IAAI9jB,WAAWmkB,YAGjChxB,KAAK2wB,IAAI9jB,WAAWa,MAAM6F,OAAU,GAGpC,KAAK,GAAI1N,GAAI,EAAGqsC,EAAKlyC,KAAKmxC,aAAanrC,OAAYksC,EAAJrsC,EAAQA,IAAK,CAC1D,GAAIiK,GAAO9P,KAAKmxC,aAAatrC,EAC7BiK,GAAKo3B,YAAYvsB,GAGnB,MAAOkvB,IAMThnC,EAAgBqR,UAAU6yB,KAAO,WAC1B/mC,KAAK2wB,IAAI9jB,WAAW1C,YACvBnK,KAAK02B,QAAQ/F,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAI9jB,aAIrDhN,EAAOD,QAAUiD,GAKb,SAAShD,EAAQD,EAASM,GA4B9B,QAAS4C,GAAQyyB,EAAMrmB,GACrBlP,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACH9tB,KAAM,KACNguB,YAAa,SACb0T,MAAO,OACP/mC,OAAO,EACPuxC,WAAY,KAEZC,YAAY,EACZjM,UACEkC,YAAY,EACZmD,aAAa,EACb14B,KAAK,EACLoD,QAAQ,GAGVuhB,KAAO52B,EAAS42B,KAEhB4a,MAAO,SAAUzjC,EAAMjH,GACrBA,EAASiH,IAEX0jC,SAAU,SAAU1jC,EAAMjH,GACxBA,EAASiH,IAEX2jC,OAAQ,SAAU3jC,EAAMjH,GACtBA,EAASiH,IAEX4jC,SAAU,SAAU5jC,EAAMjH,GACxBA,EAASiH,IAEX6jC,SAAU,SAAU7jC,EAAMjH,GACxBA,EAASiH,IAGX6K,QACE7K,MACE0W,WAAY,GACZC,SAAU,IAEZsc,KAAM,IAER/d,QAAS,GAIXhlB,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAGpCj1B,KAAK4zC,aACHzsC,MAAOkJ,MAAO,OAAQC,IAAK,SAG7BtQ,KAAKo8B,YACHtG,SAAUP,EAAK50B,KAAKm1B,SACpBI,OAAQX,EAAK50B,KAAKu1B,QAEpBl2B,KAAK2wB,OACL3wB,KAAKqG,SACLrG,KAAK8D,OAAS,IAEd,IAAIoR,GAAKlV,IACTA,MAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAGlB52B,KAAK6zC,eACH7/B,IAAO,SAAUnK,EAAOgL,GACtBK,EAAG4+B,OAAOj/B,EAAO5S,QAEnB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAG6+B,UAAUl/B,EAAO5S,QAEtBmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAG8+B,UAAUn/B,EAAO5S,SAKxBjC,KAAKi0C,gBACHjgC,IAAO,SAAUnK,EAAOgL,GACtBK,EAAGg/B,aAAar/B,EAAO5S,QAEzB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAGi/B,gBAAgBt/B,EAAO5S,QAE5BmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAGk/B,gBAAgBv/B,EAAO5S,SAI9BjC,KAAKiC,SACLjC,KAAK+0B,UACL/0B,KAAKq0C,YAELr0C,KAAKs0C,aACLt0C,KAAKu0C,YAAa,EAElBv0C,KAAKw0C,eAGLx0C,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAlIlB,GAAIw3B,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B6B,EAAW7B,EAAoB,IAC/BqC,EAAYrC,EAAoB,IAChC0C,EAAQ1C,EAAoB,IAC5B2C,EAAkB3C,EAAoB,IACtCkC,EAAUlC,EAAoB,IAC9BmC,EAAYnC,EAAoB,IAChCoC,EAAYpC,EAAoB,IAChCiC,EAAiBjC,EAAoB,IAGrCu0C,EAAY,gBACZC,EAAa,gBAsHjB5xC,GAAQoR,UAAY,GAAI3R,GAGxBO,EAAQmV,OACNpL,WAAY1K,EACZmmC,IAAKlmC,EACLk0B,MAAOh0B,EACPsQ,MAAOvQ,GAMTS,EAAQoR,UAAUohB,QAAU,WAC1B,GAAIhV,GAAQtO,SAASM,cAAc,MACnCgO,GAAMlY,UAAY,UAClBkY,EAAM,oBAAsBtgB,KAC5BA,KAAK2wB,IAAIrQ,MAAQA,CAGjB,IAAIzT,GAAamF,SAASM,cAAc,MACxCzF,GAAWzE,UAAY,aACvBkY,EAAMpO,YAAYrF,GAClB7M,KAAK2wB,IAAI9jB,WAAaA,CAGtB,IAAIksB,GAAa/mB,SAASM,cAAc,MACxCymB,GAAW3wB,UAAY,aACvBkY,EAAMpO,YAAY6mB,GAClB/4B,KAAK2wB,IAAIoI,WAAaA,CAGtB,IAAIgK,GAAO/wB,SAASM,cAAc,MAClCywB,GAAK36B,UAAY,OACjBpI,KAAK2wB,IAAIoS,KAAOA,CAGhB,IAAI/J,GAAWhnB,SAASM,cAAc,MACtC0mB,GAAS5wB,UAAY,WACrBpI,KAAK2wB,IAAIqI,SAAWA,EAGpBh5B,KAAK20C,kBAGL,IAAIC,GAAkB,GAAI/xC,GAAgB6xC,EAAY,KAAM10C,KAC5D40C,GAAgB7N,OAChB/mC,KAAK+0B,OAAO2f,GAAcE,EAM1B50C,KAAK8D,OAAS4iC,EAAO1mC,KAAKu1B,KAAK5E,IAAI+H,iBACjC9uB,gBAAgB,IAIlB5J,KAAK8D,OAAOwQ,GAAG,QAAatU,KAAKqgC,SAAS3K,KAAK11B,OAC/CA,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACnDA,KAAK8D,OAAOwQ,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OAC9CA,KAAK8D,OAAOwQ,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,OAGjDA,KAAK8D,OAAOwQ,GAAG,MAAQtU,KAAK60C,cAAcnf,KAAK11B,OAG/CA,KAAK8D,OAAOwQ,GAAG,OAAQtU,KAAK80C,mBAAmBpf,KAAK11B,OAGpDA,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAK+0C,WAAWrf,KAAK11B,OAGjDA,KAAK+mC,QAmEPjkC,EAAQoR,UAAUD,WAAa,SAAS/E,GACtC,GAAIA,EAAS,CAEX,GAAIP,IAAU,OAAQ,QAAS,cAAe,QAAS,UAAW,QAAS,aAAc,aAAc,iBAAkB,WAAW,OAAQ,OAC5IhO,GAAKyF,gBAAgBuI,EAAQ3O,KAAKkP,QAASA,GAEvC,UAAYA,KACgB,gBAAnBA,GAAQyL,QACjB3a,KAAKkP,QAAQyL,OAAOooB,KAAO7zB,EAAQyL,OACnC3a,KAAKkP,QAAQyL,OAAO7K,KAAK0W,WAAatX,EAAQyL,OAC9C3a,KAAKkP,QAAQyL,OAAO7K,KAAK2W,SAAWvX,EAAQyL,QAEX,gBAAnBzL,GAAQyL,SACtBha,EAAKyF,iBAAiB,QAASpG,KAAKkP,QAAQyL,OAAQzL,EAAQyL,QACxD,QAAUzL,GAAQyL,SACe,gBAAxBzL,GAAQyL,OAAO7K,MACxB9P,KAAKkP,QAAQyL,OAAO7K,KAAK0W,WAAatX,EAAQyL,OAAO7K,KACrD9P,KAAKkP,QAAQyL,OAAO7K,KAAK2W,SAAWvX,EAAQyL,OAAO7K,MAEb,gBAAxBZ,GAAQyL,OAAO7K,MAC7BnP,EAAKyF,iBAAiB,aAAc,YAAapG,KAAKkP,QAAQyL,OAAO7K,KAAMZ,EAAQyL,OAAO7K,SAM9F,YAAcZ,KACgB,iBAArBA,GAAQm4B,UACjBrnC,KAAKkP,QAAQm4B,SAASkC,WAAcr6B,EAAQm4B,SAC5CrnC,KAAKkP,QAAQm4B,SAASqF,YAAcx9B,EAAQm4B,SAC5CrnC,KAAKkP,QAAQm4B,SAASrzB,IAAc9E,EAAQm4B,SAC5CrnC,KAAKkP,QAAQm4B,SAASjwB,OAAclI,EAAQm4B,UAET,gBAArBn4B,GAAQm4B,UACtB1mC,EAAKyF,iBAAiB,aAAc,cAAe,MAAO,UAAWpG,KAAKkP,QAAQm4B,SAAUn4B,EAAQm4B,UAKxG,IAAI2N,GAAc,SAAWh+B,GAC3B,GAAImD,GAAKjL,EAAQ8H,EACjB,IAAImD,EAAI,CACN,KAAMA,YAAc86B,WAClB,KAAM,IAAIrxC,OAAM,UAAYoT,EAAO,uBAAyBA,EAAO,mBAErEhX,MAAKkP,QAAQ8H,GAAQmD,IAEtBub,KAAK11B,OACP,QAAS,WAAY,WAAY,SAAU,YAAY4I,QAAQosC,GAGhEh1C,KAAKm3B,cASTr0B,EAAQoR,UAAUijB,UAAY,SAASjoB,GACrClP,KAAKq0C,YACLr0C,KAAKu0C,YAAa,EAEdrlC,GAAWA,EAAQkoB,cACrBz2B,EAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GACjCA,EAAK22B,OAAQ,EACT32B,EAAK02B,WAAW12B,EAAK2S,YAQ/B3f,EAAQoR,UAAUG,QAAU,WAC1BrU,KAAK8mC,OACL9mC,KAAKg3B,SAAS,MACdh3B,KAAK+2B,UAAU,MAEf/2B,KAAK8D,OAAS,KAEd9D,KAAKu1B,KAAO,KACZv1B,KAAKo8B,WAAa,MAMpBt5B,EAAQoR,UAAU4yB,KAAO,WAEnB9mC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,OAI7CtgB,KAAK2wB,IAAIoS,KAAK54B,YAChBnK,KAAK2wB,IAAIoS,KAAK54B,WAAWyH,YAAY5R,KAAK2wB,IAAIoS,MAI5C/iC,KAAK2wB,IAAIqI,SAAS7uB,YACpBnK,KAAK2wB,IAAIqI,SAAS7uB,WAAWyH,YAAY5R,KAAK2wB,IAAIqI,WAQtDl2B,EAAQoR,UAAU6yB,KAAO,WAElB/mC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,OAIvCtgB,KAAK2wB,IAAIoS,KAAK54B,YACjBnK,KAAKu1B,KAAK5E,IAAIuZ,mBAAmBh4B,YAAYlS,KAAK2wB,IAAIoS,MAInD/iC,KAAK2wB,IAAIqI,SAAS7uB,YACrBnK,KAAKu1B,KAAK5E,IAAI9oB,KAAKqK,YAAYlS,KAAK2wB,IAAIqI,WAW5Cl2B,EAAQoR,UAAU0jB,aAAe,SAAS1hB,GACxC,GAAIrQ,GAAGqsC,EAAI7xC,EAAIyP,CAMf,KAJWjJ,QAAPqP,IAAkBA,MACjB5P,MAAMC,QAAQ2P,KAAMA,GAAOA,IAG3BrQ,EAAI,EAAGqsC,EAAKlyC,KAAKs0C,UAAUtuC,OAAYksC,EAAJrsC,EAAQA,IAC9CxF,EAAKL,KAAKs0C,UAAUzuC,GACpBiK,EAAO9P,KAAKiC,MAAM5B,GACdyP,GAAMA,EAAK82B,UAKjB,KADA5mC,KAAKs0C,aACAzuC,EAAI,EAAGqsC,EAAKh8B,EAAIlQ,OAAYksC,EAAJrsC,EAAQA,IACnCxF,EAAK6V,EAAIrQ,GACTiK,EAAO9P,KAAKiC,MAAM5B,GACdyP,IACF9P,KAAKs0C,UAAU/rC,KAAKlI,GACpByP,EAAK62B,WASX7jC,EAAQoR,UAAU4jB,aAAe,WAC/B,MAAO93B,MAAKs0C,UAAUv/B,YAOxBjS,EAAQoR,UAAUghC,gBAAkB,WAClC,GAAI5e,GAAQt2B,KAAKu1B,KAAKe,MAAM+K,WACxBx5B,EAAQ7H,KAAKu1B,KAAK50B,KAAKm1B,SAASQ,EAAMjmB,OACtCgY,EAAQroB,KAAKu1B,KAAK50B,KAAKm1B,SAASQ,EAAMhmB,KAEtC4F,IACJ,KAAK,GAAI+iB,KAAWj5B,MAAK+0B,OACvB,GAAI/0B,KAAK+0B,OAAO5uB,eAAe8yB,GAM7B,IAAK,GALDvmB,GAAQ1S,KAAK+0B,OAAOkE,GACpBkc,EAAkBziC,EAAMy+B,aAInBtrC,EAAI,EAAGA,EAAIsvC,EAAgBnvC,OAAQH,IAAK,CAC/C,GAAIiK,GAAOqlC,EAAgBtvC,EAEtBiK,GAAKjI,KAAOwgB,GAAWvY,EAAKjI,KAAOiI,EAAKwD,MAAQzL,GACnDqO,EAAI3N,KAAKuH,EAAKzP,IAMtB,MAAO6V,IAQTpT,EAAQoR,UAAUkhC,UAAY,SAAS/0C,GAErC,IAAK,GADDi0C,GAAYt0C,KAAKs0C,UACZzuC,EAAI,EAAGqsC,EAAKoC,EAAUtuC,OAAYksC,EAAJrsC,EAAQA,IAC7C,GAAIyuC,EAAUzuC,IAAMxF,EAAI,CACtBi0C,EAAU3rC,OAAO9C,EAAG,EACpB,SASN/C,EAAQoR,UAAUuO,OAAS,WACzB,GAAI9H,GAAS3a,KAAKkP,QAAQyL,OACtB2b,EAAQt2B,KAAKu1B,KAAKe,MAClB1rB,EAASjK,EAAK4J,OAAOK,OACrBsE,EAAUlP,KAAKkP,QACfimB,EAAcjmB,EAAQimB,YACtB0U,GAAU,EACVvpB,EAAQtgB,KAAK2wB,IAAIrQ,MACjB+mB,EAAWn4B,EAAQm4B,SAASkC,YAAcr6B,EAAQm4B,SAASqF,WAG/D1sC,MAAKqG,MAAM4B,IAAMjI,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAAS1oB,OAAO7E,IAC3EjI,KAAKqG,MAAMwB,KAAO7H,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAAQtT,KAAKu1B,KAAKC,SAAS1oB,OAAOjF,KAG5EyY,EAAMlY,UAAY,WAAai/B,EAAW,YAAc,IAGxDwC,EAAU7pC,KAAKq1C,gBAAkBxL,CAIjC,IAAIyL,GAAkBhf,EAAMhmB,IAAMgmB,EAAMjmB,MACpCklC,EAAUD,GAAmBt1C,KAAKw1C,qBAAyBx1C,KAAKqG,MAAMiN,OAAStT,KAAKqG,MAAMovC,SAC1FF,KAAQv1C,KAAKu0C,YAAa,GAC9Bv0C,KAAKw1C,oBAAsBF,EAC3Bt1C,KAAKqG,MAAMovC,UAAYz1C,KAAKqG,MAAMiN,KAElC,IAAIo+B,GAAU1xC,KAAKu0C,WACfmB,EAAa11C,KAAK21C,cAClBC,GACF9lC,KAAM6K,EAAO7K,KACbizB,KAAMpoB,EAAOooB,MAEX8S,GACF/lC,KAAM6K,EAAO7K,KACbizB,KAAMpoB,EAAO7K,KAAK2W,SAAW,GAE3BlT,EAAS,EACT8hB,EAAY1a,EAAOooB,KAAOpoB,EAAO7K,KAAK2W,QA+B1C,OA5BAzmB,MAAK+0B,OAAO2f,GAAYjyB,OAAO6T,EAAOuf,EAAgBnE,GAGtD/wC,EAAKiI,QAAQ5I,KAAK+0B,OAAQ,SAAUriB,GAClC,GAAIojC,GAAepjC,GAASgjC,EAAcE,EAAcC,EACpDE,EAAerjC,EAAM+P,OAAO6T,EAAOwf,EAAapE,EACpD7H,GAAUkM,GAAgBlM,EAC1Bt2B,GAAUb,EAAMa,SAElBA,EAAS/O,KAAKJ,IAAImP,EAAQ8hB,GAC1Br1B,KAAKu0C,YAAa,EAGlBj0B,EAAM5S,MAAM6F,OAAU3I,EAAO2I,GAG7BvT,KAAKqG,MAAMiN,MAAQgN,EAAM0Q,YACzBhxB,KAAKqG,MAAMkN,OAASA,EAGpBvT,KAAK2wB,IAAIoS,KAAKr1B,MAAMzF,IAAM2C,EAAuB,OAAfuqB,EAC7Bn1B,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAAS1oB,OAAO7E,IAC1DjI,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QACxEvT,KAAK2wB,IAAIoS,KAAKr1B,MAAM7F,KAAO,IAG3BgiC,EAAU7pC,KAAK4pC,cAAgBC,GAUjC/mC,EAAQoR,UAAUyhC,YAAc,WAC9B,GAAIK,GAA+C,OAA5Bh2C,KAAKkP,QAAQimB,YAAwB,EAAKn1B,KAAKq0C,SAASruC,OAAS,EACpFiwC,EAAej2C,KAAKq0C,SAAS2B,GAC7BN,EAAa11C,KAAK+0B,OAAOkhB,IAAiBj2C,KAAK+0B,OAAO0f,EAE1D,OAAOiB,IAAc,MAQvB5yC,EAAQoR,UAAUygC,iBAAmB,WACnC,CAAA,GAEI7kC,GAAMwG,EAFN4/B,EAAYl2C,KAAK+0B,OAAO0f,EACXz0C,MAAK+0B,OAAO2f,GAG7B,GAAI10C,KAAK42B,YAEP,GAAIsf,EAAW,CACbA,EAAUpP,aACH9mC,MAAK+0B,OAAO0f,EAEnB,KAAKn+B,IAAUtW,MAAKiC,MAClB,GAAIjC,KAAKiC,MAAMkE,eAAemQ,GAAS,CACrCxG,EAAO9P,KAAKiC,MAAMqU,GAClBxG,EAAKzF,QAAUyF,EAAKzF,OAAO+M,OAAOtH,EAClC,IAAImpB,GAAUj5B,KAAKm2C,YAAYrmC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACxBvmB,IAASA,EAAMsB,IAAIlE,IAASA,EAAKg3B,aAOvC,KAAKoP,EAAW,CACd,GAAI71C,GAAK,KACLoT,EAAO,IACXyiC,GAAY,GAAItzC,GAAMvC,EAAIoT,EAAMzT,MAChCA,KAAK+0B,OAAO0f,GAAayB,CAEzB,KAAK5/B,IAAUtW,MAAKiC,MACdjC,KAAKiC,MAAMkE,eAAemQ,KAC5BxG,EAAO9P,KAAKiC,MAAMqU,GAClB4/B,EAAUliC,IAAIlE,GAIlBomC,GAAUnP,SAShBjkC,EAAQoR,UAAUkiC,YAAc,WAC9B,MAAOp2C,MAAK2wB,IAAIqI,UAOlBl2B,EAAQoR,UAAU8iB,SAAW,SAAS/0B,GACpC,GACIiU,GADAhB,EAAKlV,KAELq2C,EAAer2C,KAAK22B,SAGxB,IAAK10B,EAGA,CAAA,KAAIA,YAAiBpB,IAAWoB,YAAiBnB,IAIpD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK22B,UAAY10B,MAHjBjC,MAAK22B,UAAY,IAoBnB,IAXI0f,IAEF11C,EAAKiI,QAAQ5I,KAAK6zC,cAAe,SAAUhrC,EAAUgB,GACnDwsC,EAAa5hC,IAAI5K,EAAOhB,KAI1BqN,EAAMmgC,EAAaz/B,SACnB5W,KAAKg0C,UAAU99B,IAGblW,KAAK22B,UAAW,CAElB,GAAIt2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAK6zC,cAAe,SAAUhrC,EAAUgB,GACnDqL,EAAGyhB,UAAUriB,GAAGzK,EAAOhB,EAAUxI,KAInC6V,EAAMlW,KAAK22B,UAAU/f,SACrB5W,KAAK8zC,OAAO59B,GAGZlW,KAAK20C,qBAQT7xC,EAAQoR,UAAUoiC,SAAW,WAC3B,MAAOt2C,MAAK22B,WAOd7zB,EAAQoR,UAAU6iB,UAAY,SAAShC,GACrC,GACI7e,GADAhB,EAAKlV,IAgBT,IAZIA,KAAK42B,aACPj2B,EAAKiI,QAAQ5I,KAAKi0C,eAAgB,SAAUprC,EAAUgB,GACpDqL,EAAG0hB,WAAWjiB,YAAY9K,EAAOhB,KAInCqN,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAK42B,WAAa,KAClB52B,KAAKo0C,gBAAgBl+B,IAIlB6e,EAGA,CAAA,KAAIA,YAAkBl0B,IAAWk0B,YAAkBj0B,IAItD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK42B,WAAa7B,MAHlB/0B,MAAK42B,WAAa,IASpB,IAAI52B,KAAK42B,WAAY,CAEnB,GAAIv2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAKi0C,eAAgB,SAAUprC,EAAUgB,GACpDqL,EAAG0hB,WAAWtiB,GAAGzK,EAAOhB,EAAUxI,KAIpC6V,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAKk0C,aAAah+B,GAIpBlW,KAAK20C,mBAGL30C,KAAKu2C,SAELv2C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAO3CrR,EAAQoR,UAAUsiC,UAAY,WAC5B,MAAOx2C,MAAK42B,YAOd9zB,EAAQoR,UAAUs+B,WAAa,SAASnyC,GACtC,GAAIyP,GAAO9P,KAAK22B,UAAU1gB,IAAI5V,GAC1B43B,EAAUj4B,KAAK22B,UAAU9f,YAEzB/G,IAEF9P,KAAKkP,QAAQwkC,SAAS5jC,EAAM,SAAUA,GAChCA,GAGFmoB,EAAQ7gB,OAAO/W,MAYvByC,EAAQoR,UAAUuiC,SAAW,SAAU1e,GACrC,MAAOA,GAAS5wB,MAAQnH,KAAKkP,QAAQ/H,OAAS4wB,EAASznB,IAAM,QAAU,QAUzExN,EAAQoR,UAAUiiC,YAAc,SAAUpe,GACxC,GAAI5wB,GAAOnH,KAAKy2C,SAAS1e,EACzB,OAAY,cAAR5wB,GAA0CN,QAAlBkxB,EAASrlB,MAC7BgiC,EAGC10C,KAAK42B,WAAamB,EAASrlB,MAAQ+hC,GAS9C3xC,EAAQoR,UAAU6/B,UAAY,SAAS79B,GACrC,GAAIhB,GAAKlV,IAETkW,GAAItN,QAAQ,SAAUvI,GACpB,GAAI03B,GAAW7iB,EAAGyhB,UAAU1gB,IAAI5V,EAAI6U,EAAG0+B,aACnC9jC,EAAOoF,EAAGjT,MAAM5B,GAChB8G,EAAO+N,EAAGuhC,SAAS1e,GAEnBpxB,EAAc7D,EAAQmV,MAAM9Q,EAchC,IAZI2I,IAEGnJ,GAAiBmJ,YAAgBnJ,GAMpCuO,EAAGc,YAAYlG,EAAMioB,IAJrB7iB,EAAGwhC,YAAY5mC,GACfA,EAAO,QAONA,EAAM,CAET,IAAInJ,EAKC,KAEG,IAAID,WAFK,iBAARS,EAEa,4HAIA,sBAAwBA,EAAO,IAVnD2I,GAAO,GAAInJ,GAAYoxB,EAAU7iB,EAAGknB,WAAYlnB,EAAGhG,SACnDY,EAAKzP,GAAKA,EACV6U,EAAGC,SAASrF,MAalB9P,KAAKu2C,SACLv2C,KAAKu0C,YAAa,EAClBv0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAU4/B,OAAShxC,EAAQoR,UAAU6/B,UAO7CjxC,EAAQoR,UAAU8/B,UAAY,SAAS99B,GACrC,GAAI6B,GAAQ,EACR7C,EAAKlV,IACTkW,GAAItN,QAAQ,SAAUvI,GACpB,GAAIyP,GAAOoF,EAAGjT,MAAM5B,EAChByP,KACFiI,IACA7C,EAAGwhC,YAAY5mC,MAIfiI,IAEF/X,KAAKu2C,SACLv2C,KAAKu0C,YAAa,EAClBv0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,MAQ7CrR,EAAQoR,UAAUqiC,OAAS,WAGzB51C,EAAKiI,QAAQ5I,KAAK+0B,OAAQ,SAAUriB,GAClCA,EAAM8D,WASV1T,EAAQoR,UAAUigC,gBAAkB,SAASj+B,GAC3ClW,KAAKk0C,aAAah+B,IAQpBpT,EAAQoR,UAAUggC,aAAe,SAASh+B,GACxC,GAAIhB,GAAKlV,IAETkW,GAAItN,QAAQ,SAAUvI,GACpB,GAAIywC,GAAY57B,EAAG0hB,WAAW3gB,IAAI5V,GAC9BqS,EAAQwC,EAAG6f,OAAO10B,EAEtB,IAAKqS,EA6BHA,EAAMqG,QAAQ+3B,OA7BJ,CAEV,GAAIzwC,GAAMo0C,GAAap0C,GAAMq0C,EAC3B,KAAM,IAAI9wC,OAAM,qBAAuBvD,EAAK,qBAG9C,IAAIs2C,GAAe/vC,OAAOkI,OAAOoG,EAAGhG,QACpCvO,GAAKgF,OAAOgxC,GACVpjC,OAAQ,OAGVb,EAAQ,GAAI9P,GAAMvC,EAAIywC,EAAW57B,GACjCA,EAAG6f,OAAO10B,GAAMqS,CAGhB,KAAK,GAAI4D,KAAUpB,GAAGjT,MACpB,GAAIiT,EAAGjT,MAAMkE,eAAemQ,GAAS,CACnC,GAAIxG,GAAOoF,EAAGjT,MAAMqU,EAChBxG,GAAK2D,KAAKf,OAASrS,GACrBqS,EAAMsB,IAAIlE,GAKhB4C,EAAM8D,QACN9D,EAAMq0B,UAQV/mC,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAUkgC,gBAAkB,SAASl+B,GAC3C,GAAI6e,GAAS/0B,KAAK+0B,MAClB7e,GAAItN,QAAQ,SAAUvI,GACpB,GAAIqS,GAAQqiB,EAAO10B,EAEfqS,KACFA,EAAMo0B,aACC/R,GAAO10B,MAIlBL,KAAKm3B,YAELn3B,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAUmhC,aAAe,WAC/B,GAAIr1C,KAAK42B,WAAY,CAEnB,GAAIyd,GAAWr0C,KAAK42B,WAAWhgB,QAC7BJ,MAAOxW,KAAKkP,QAAQmkC,aAGlBnS,GAAWvgC,EAAKsG,WAAWotC,EAAUr0C,KAAKq0C,SAC9C,IAAInT,EAAS,CAEX,GAAInM,GAAS/0B,KAAK+0B,MAClBsf,GAASzrC,QAAQ,SAAUqwB,GACzBlE,EAAOkE,GAAS6N,SAIlBuN,EAASzrC,QAAQ,SAAUqwB,GACzBlE,EAAOkE,GAAS8N,SAGlB/mC,KAAKq0C,SAAWA,EAGlB,MAAOnT,GAGP,OAAO,GASXp+B,EAAQoR,UAAUiB,SAAW,SAASrF,GACpC9P,KAAKiC,MAAM6N,EAAKzP,IAAMyP,CAGtB,IAAImpB,GAAUj5B,KAAKm2C,YAAYrmC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACpBvmB,IAAOA,EAAMsB,IAAIlE,IASvBhN,EAAQoR,UAAU8B,YAAc,SAASlG,EAAMioB,GAC7C,GAAI6e,GAAa9mC,EAAK2D,KAAKf,KAM3B,IAHA5C,EAAKiJ,QAAQgf,GAGT6e,GAAc9mC,EAAK2D,KAAKf,MAAO,CACjC,GAAImkC,GAAW72C,KAAK+0B,OAAO6hB,EACvBC,IAAUA,EAASz/B,OAAOtH,EAE9B,IAAImpB,GAAUj5B,KAAKm2C,YAAYrmC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACpBvmB,IAAOA,EAAMsB,IAAIlE,KAUzBhN,EAAQoR,UAAUwiC,YAAc,SAAS5mC,GAEvCA,EAAKg3B,aAGE9mC,MAAKiC,MAAM6N,EAAKzP,GAGvB,IAAIqI,GAAQ1I,KAAKs0C,UAAUttC,QAAQ8I,EAAKzP,GAC3B,KAATqI,GAAa1I,KAAKs0C,UAAU3rC,OAAOD,EAAO,GAG9CoH,EAAKzF,QAAUyF,EAAKzF,OAAO+M,OAAOtH,IASpChN,EAAQoR,UAAU4iC,qBAAuB,SAAS/tC,GAGhD,IAAK,GAFD2pC,MAEK7sC,EAAI,EAAGA,EAAIkD,EAAM/C,OAAQH,IAC5BkD,EAAMlD,YAAcvD,IACtBowC,EAASnqC,KAAKQ,EAAMlD,GAGxB,OAAO6sC,IAYT5vC,EAAQoR,UAAUmsB,SAAW,SAAUx2B,GAErC7J,KAAKw0C,YAAY1kC,KAAO9P,KAAKq4B,eAAexuB,IAQ9C/G,EAAQoR,UAAU8rB,aAAe,SAAUn2B,GACzC,GAAK7J,KAAKkP,QAAQm4B,SAASkC,YAAevpC,KAAKkP,QAAQm4B,SAASqF,YAAhE,CAIA,GAEIrmC,GAFAyJ,EAAO9P,KAAKw0C,YAAY1kC,MAAQ,KAChCoF,EAAKlV,IAGT,IAAI8P,GAAQA,EAAKy2B,SAAU,CACzB,GAAIkD,GAAe5/B,EAAMG,OAAOy/B,aAC5BE,EAAgB9/B,EAAMG,OAAO2/B,aAE7BF,IACFpjC,GACEyJ,KAAM25B,EACNsN,SAAUltC,EAAM2uB,QAAQzL,OAAOnP,SAG7B1I,EAAGhG,QAAQm4B,SAASkC,aACtBljC,EAAMgK,MAAQP,EAAK2D,KAAKpD,MAAMhJ,WAE5B6N,EAAGhG,QAAQm4B,SAASqF,aAClB,SAAW58B,GAAK2D,OAAMpN,EAAMqM,MAAQ5C,EAAK2D,KAAKf,OAGpD1S,KAAKw0C,YAAYwC,WAAa3wC,IAEvBsjC,GACPtjC,GACEyJ,KAAM65B,EACNoN,SAAUltC,EAAM2uB,QAAQzL,OAAOnP,SAG7B1I,EAAGhG,QAAQm4B,SAASkC,aACtBljC,EAAMiK,IAAMR,EAAK2D,KAAKnD,IAAIjJ,WAExB6N,EAAGhG,QAAQm4B,SAASqF,aAClB,SAAW58B,GAAK2D,OAAMpN,EAAMqM,MAAQ5C,EAAK2D,KAAKf,OAGpD1S,KAAKw0C,YAAYwC,WAAa3wC,IAG9BrG,KAAKw0C,YAAYwC,UAAYh3C,KAAK83B,eAAehqB,IAAI,SAAUzN,GAC7D,GAAIyP,GAAOoF,EAAGjT,MAAM5B,GAChBgG,GACFyJ,KAAMA,EACNinC,SAAUltC,EAAM2uB,QAAQzL,OAAOnP,QAkBjC,OAfI1I,GAAGhG,QAAQm4B,SAASkC,YAClB,SAAWz5B,GAAK2D,OAClBpN,EAAMgK,MAAQP,EAAK2D,KAAKpD,MAAMhJ,UAE1B,OAASyI,GAAK2D,OAGhBpN,EAAMkK,SAAWT,EAAK2D,KAAKnD,IAAIjJ,UAAYhB,EAAMgK,QAInD6E,EAAGhG,QAAQm4B,SAASqF,aAClB,SAAW58B,GAAK2D,OAAMpN,EAAMqM,MAAQ5C,EAAK2D,KAAKf,OAG7CrM,IAIXwD,EAAM49B,sBAECznC,MAAKkP,QAAQm4B,SAASrzB,KAAOnK,EAAM2uB,QAAQye,SAASC,SAE3Dl3C,KAAKm3C,oBAAoBttC,KAS7B/G,EAAQoR,UAAUijC,oBAAsB,SAAUttC,GAChD,GAAI8uB,GAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5Bye,EAAOz2C,EAAK+G,gBAAgB1H,KAAK2wB,IAAIrQ,OACrC9N,EAAI3I,EAAM2uB,QAAQzL,OAAOwL,MAAQ6e,EAAO,GACxCxe,EAAO54B,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,GAC7BjO,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UACtBzkB,EAAQsoB,EAAOA,EAAKC,EAAMr0B,EAAO4kB,GAAQ9Y,EACzCC,EAAMD,EAEN0nB,GACF5wB,KAAM,QACNkJ,MAAOA,EACPC,IAAKA,EACL6C,QAAS,YAGP9S,EAAKM,EAAK2E,YACdyyB,GAAS/3B,KAAK22B,UAAU/iB,UAAYvT,CAEpC,IAAIqS,GAAQ1S,KAAKs4B,gBAAgBzuB,EAC7B6I,KACFqlB,EAASrlB,MAAQA,EAAMumB,QAGzB;GAAIoe,GAAU,GAAI/0C,GAAUy1B,EAAU/3B,KAAKo8B,WAAYp8B,KAAKkP,QAC5DmoC,GAAQh3C,GAAKA,EACbL,KAAKmV,SAASkiC,EAEd,IAAIhxC,IACFyJ,KAAMunC,EACN/mC,IAAKA,EAAIjJ,UACT0vC,SAAUltC,EAAM2uB,QAAQzL,OAAOnP,QAEjC5d,MAAKw0C,YAAYwC,WAAa3wC,GAE9BwD,EAAM49B,mBAQR3kC,EAAQoR,UAAU+rB,QAAU,SAAUp2B,GAGpC,GAFAA,EAAMD,iBAEF5J,KAAKw0C,YAAYwC,UAAW,CAC9B,GAAI9hC,GAAKlV,KACL24B,EAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5B1lB,EAAUjT,KAAKu1B,KAAK5E,IAAIjxB,KAAKuyC,WAAajyC,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAClE/O,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,SAG1B90B,MAAKw0C,YAAYwC,UAAUpuC,QAAQ,SAAUvC,GAC3C,GAAIixC,MACAvb,EAAU7mB,EAAGqgB,KAAK50B,KAAKu1B,OAAOrsB,EAAM2uB,QAAQzL,OAAOnP,QAAU3K,GAC7DskC,EAAUriC,EAAGqgB,KAAK50B,KAAKu1B,OAAO7vB,EAAM0wC,SAAW9jC,GAC/CyX,EAASqR,EAAUwb,CAEvB,IAAI,SAAWlxC,GAAO,CACpB,GAAIgK,GAAQ,GAAIzL,MAAKyB,EAAMgK,MAAQqa,EACnC4sB,GAASjnC,MAAQsoB,EAAOA,EAAKtoB,EAAO9L,EAAO4kB,GAAQ9Y,EAGrD,GAAI,OAAShK,GAAO,CAClB,GAAIiK,GAAM,GAAI1L,MAAKyB,EAAMiK,IAAMoa,EAC/B4sB,GAAShnC,IAAMqoB,EAAOA,EAAKroB,EAAK/L,EAAO4kB,GAAQ7Y,MAExC,YAAcjK,KACrBixC,EAAShnC,IAAM,GAAI1L,MAAK0yC,EAASjnC,MAAMhJ,UAAYhB,EAAMkK,UAG3D,IAAI,SAAWlK,GAAO,CAEpB,GAAIqM,GAAQwC,EAAGojB,gBAAgBzuB,EAC/BytC,GAAS5kC,MAAQA,GAASA,EAAMumB,QAIlC,GAAIlB,GAAWp3B,EAAKgF,UAAWU,EAAMyJ,KAAK2D,KAAM6jC,EAChDpiC,GAAGhG,QAAQykC,SAAS5b,EAAU,SAAUA,GAClCA,GACF7iB,EAAGsiC,iBAAiBnxC,EAAMyJ,KAAMioB,OAKtC/3B,KAAKu0C,YAAa,EAClBv0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAEvB5kB,EAAM49B,oBAUV3kC,EAAQoR,UAAUsjC,iBAAmB,SAAS1nC,EAAMzJ,GAE9C,SAAWA,KACbyJ,EAAK2D,KAAKpD,MAAQhK,EAAMgK,OAEtB,OAAShK,GACXyJ,EAAK2D,KAAKnD,IAAMjK,EAAMiK,IAEf,YAAcjK,KACrByJ,EAAK2D,KAAKnD,IAAM,GAAI1L,MAAKyB,EAAMgK,MAAMhJ,UAAYhB,EAAMkK,WAErD,SAAWlK,IAASyJ,EAAK2D,KAAKf,OAASrM,EAAMqM,OAC/C1S,KAAKy3C,aAAa3nC,EAAMzJ,EAAMqM,QAUlC5P,EAAQoR,UAAUujC,aAAe,SAAS3nC,EAAMmpB,GAC9C,GAAIvmB,GAAQ1S,KAAK+0B,OAAOkE,EACxB,IAAIvmB,GAASA,EAAMumB,SAAWnpB,EAAK2D,KAAKf,MAAO,CAC7C,GAAImkC,GAAW/mC,EAAKzF,MACpBwsC,GAASz/B,OAAOtH,GAChB+mC,EAASrgC,QACT9D,EAAMsB,IAAIlE,GACV4C,EAAM8D,QAEN1G,EAAK2D,KAAKf,MAAQA,EAAMumB,UAS5Bn2B,EAAQoR,UAAUgsB,WAAa,SAAUr2B,GAGvC,GAFAA,EAAMD,iBAEF5J,KAAKw0C,YAAYwC,UAAW,CAE9B,GAAIU,MACAxiC,EAAKlV,KACLi4B,EAAUj4B,KAAK22B,UAAU9f,aAEzBmgC,EAAYh3C,KAAKw0C,YAAYwC,SACjCh3C,MAAKw0C,YAAYwC,UAAY,KAC7BA,EAAUpuC,QAAQ,SAAUvC,GAC1B,GAAIhG,GAAKgG,EAAMyJ,KAAKzP,GAChB03B,EAAW7iB,EAAGyhB,UAAU1gB,IAAI5V,EAAI6U,EAAG0+B,YAEvC,IAAK7b,EAaA,CAEH,GAAImJ,IAAU,CACV,UAAW76B,GAAMyJ,KAAK2D,OACxBytB,EAAW76B,EAAMgK,OAAShK,EAAMyJ,KAAK2D,KAAKpD,MAAMhJ,UAChD0wB,EAAS1nB,MAAQ1P,EAAKuG,QAAQb,EAAMyJ,KAAK2D,KAAKpD,MAC1C4nB,EAAQvkB,SAASvM,MAAQ8wB,EAAQvkB,SAASvM,KAAKkJ,OAAS,SAE1D,OAAShK,GAAMyJ,KAAK2D,OACtBytB,EAAUA,GAAa76B,EAAMiK,KAAOjK,EAAMyJ,KAAK2D,KAAKnD,IAAIjJ,UACxD0wB,EAASznB,IAAM3P,EAAKuG,QAAQb,EAAMyJ,KAAK2D,KAAKnD,IACxC2nB,EAAQvkB,SAASvM,MAAQ8wB,EAAQvkB,SAASvM,KAAKmJ,KAAO,SAExD,SAAWjK,GAAMyJ,KAAK2D,OACxBytB,EAAUA,GAAa76B,EAAMqM,OAASrM,EAAMyJ,KAAK2D,KAAKf,MACtDqlB,EAASrlB,MAAQrM,EAAMyJ,KAAK2D,KAAKf,OAI/BwuB,GACFhsB,EAAGhG,QAAQukC,OAAO1b,EAAU,SAAUA,GAChCA,GAEFA,EAASE,EAAQrkB,UAAYvT,EAC7Bq3C,EAAQnvC,KAAKwvB,KAIb7iB,EAAGsiC,iBAAiBnxC,EAAMyJ,KAAMzJ,GAEhC6O,EAAGq/B,YAAa,EAChBr/B,EAAGqgB,KAAKE,QAAQhH,KAAK,iBA1C3BvZ,GAAGhG,QAAQqkC,MAAMltC,EAAMyJ,KAAK2D,KAAM,SAAUskB,GAC1C7iB,EAAGwhC,YAAYrwC,EAAMyJ,MACjBioB,GACF7iB,EAAGyhB,UAAU9f,aAAa7C,IAAI+jB,GAIhC7iB,EAAGq/B,YAAa,EAChBr/B,EAAGqgB,KAAKE,QAAQhH,KAAK,cA0CvBipB,EAAQ1xC,QACViyB,EAAQriB,OAAO8hC,GAGjB7tC,EAAM49B,oBASV3kC,EAAQoR,UAAU2gC,cAAgB,SAAUhrC,GAC1C,GAAK7J,KAAKkP,QAAQokC,WAAlB,CAEA,GAAI4D,GAAWrtC,EAAM2uB,QAAQye,UAAYptC,EAAM2uB,QAAQye,SAASC,QAC5DS,EAAW9tC,EAAM2uB,QAAQye,UAAYptC,EAAM2uB,QAAQye,SAASU,QAChE,IAAIT,GAAWS,EAEb,WADA33C,MAAK80C,mBAAmBjrC,EAI1B,IAAI+tC,GAAe53C,KAAK83B,eAEpBhoB,EAAO9P,KAAKq4B,eAAexuB,GAC3ByqC,EAAYxkC,GAAQA,EAAKzP,MAC7BL,MAAK43B,aAAa0c,EAElB,IAAIuD,GAAe73C,KAAK83B,gBAIpB+f,EAAa7xC,OAAS,GAAK4xC,EAAa5xC,OAAS,IACnDhG,KAAKu1B,KAAKE,QAAQhH,KAAK,UACrBxsB,MAAO41C,MAUb/0C,EAAQoR,UAAU6gC,WAAa,SAAUlrC,GACvC,GAAK7J,KAAKkP,QAAQokC,YACbtzC,KAAKkP,QAAQm4B,SAASrzB,IAA3B,CAEA,GAAIkB,GAAKlV,KACL24B,EAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5B7oB,EAAO9P,KAAKq4B,eAAexuB,EAE/B,IAAIiG,EAAM,CAIR,GAAIioB,GAAW7iB,EAAGyhB,UAAU1gB,IAAInG,EAAKzP,GACrCL,MAAKkP,QAAQskC,SAASzb,EAAU,SAAUA,GACpCA,GACF7iB,EAAGyhB,UAAU9f,aAAajB,OAAOmiB,SAIlC,CAEH,GAAIqf,GAAOz2C,EAAK+G,gBAAgB1H,KAAK2wB,IAAIrQ,OACrC9N,EAAI3I,EAAM2uB,QAAQzL,OAAOwL,MAAQ6e,EACjC/mC,EAAQrQ,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,GAC9BjO,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UAEtBuiB,GACFhnC,MAAOsoB,EAAOA,EAAKtoB,EAAO9L,EAAO4kB,GAAQ9Y,EACzC8C,QAAS,WAIX,IAA0B,UAAtBnT,KAAKkP,QAAQ/H,KAAkB,CACjC,GAAImJ,GAAMtQ,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,EAAIxS,KAAKqG,MAAMiN,MAAQ,EACvD+jC,GAAQ/mC,IAAMqoB,EAAOA,EAAKroB,EAAK/L,EAAO4kB,GAAQ7Y,EAGhD+mC,EAAQr3C,KAAK22B,UAAU/iB,UAAYjT,EAAK2E,YAExC,IAAIoN,GAAQ1S,KAAKs4B,gBAAgBzuB,EAC7B6I,KACF2kC,EAAQ3kC,MAAQA,EAAMumB,SAIxBj5B,KAAKkP,QAAQqkC,MAAM8D,EAAS,SAAUvnC,GAChCA,GACFoF,EAAGyhB,UAAU9f,aAAa7C,IAAIlE,QAYtChN,EAAQoR,UAAU4gC,mBAAqB,SAAUjrC,GAC/C,GAAK7J,KAAKkP,QAAQokC,WAAlB,CAEA,GAAIgB,GACAxkC,EAAO9P,KAAKq4B,eAAexuB,EAE/B,IAAIiG,EAAM,CAERwkC,EAAYt0C,KAAK83B,cAEjB,IAAI6f,GAAW9tC,EAAM2uB,QAAQ2J,QAAQ,IAAMt4B,EAAM2uB,QAAQ2J,QAAQ,GAAGwV,WAAY,CAChF,IAAIA,EAAU,CAIZrD,EAAU/rC,KAAKuH,EAAKzP,GACpB,IAAIi2B,GAAQxzB,EAAQg1C,cAAc93C,KAAK22B,UAAU1gB,IAAIq+B,EAAWt0C,KAAK4zC,aAGrEU,KACA,KAAK,GAAIj0C,KAAML,MAAKiC,MAClB,GAAIjC,KAAKiC,MAAMkE,eAAe9F,GAAK,CACjC,GAAI03C,GAAQ/3C,KAAKiC,MAAM5B,GACnBgQ,EAAQ0nC,EAAMtkC,KAAKpD,MACnBC,EAA0BzJ,SAAnBkxC,EAAMtkC,KAAKnD,IAAqBynC,EAAMtkC,KAAKnD,IAAMD,CAExDA,IAASimB,EAAMnyB,KAAOmM,GAAOgmB,EAAMlyB,KACrCkwC,EAAU/rC,KAAKwvC,EAAM13C,SAKxB,CAEH,GAAIqI,GAAQ4rC,EAAUttC,QAAQ8I,EAAKzP,GACtB,KAATqI,EAEF4rC,EAAU/rC,KAAKuH,EAAKzP,IAIpBi0C,EAAU3rC,OAAOD,EAAO,GAI5B1I,KAAK43B,aAAa0c,GAElBt0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UACrBxsB,MAAOjC,KAAK83B,oBAWlBh1B,EAAQg1C,cAAgB,SAASnhB,GAC/B,GAAIvyB,GAAM,KACND,EAAM,IAmBV,OAjBAwyB,GAAU/tB,QAAQ,SAAU6K,IACf,MAAPtP,GAAesP,EAAKpD,MAAQlM,KAC9BA,EAAMsP,EAAKpD,OAGGxJ,QAAZ4M,EAAKnD,KACI,MAAPlM,GAAeqP,EAAKnD,IAAMlM,KAC5BA,EAAMqP,EAAKnD,MAIF,MAAPlM,GAAeqP,EAAKpD,MAAQjM,KAC9BA,EAAMqP,EAAKpD,UAMflM,IAAKA,EACLC,IAAKA,IAUTtB,EAAQoR,UAAUmkB,eAAiB,SAASxuB,GAE1C,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO7D,eAAe,iBACxB,MAAO6D,GAAO,gBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OASTrH,EAAQoR,UAAUokB,gBAAkB,SAASzuB,GAE3C,IAAK,GADDkU,GAAUlU,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAOhP,QAAUlU,EAAMkU,QAC1DlY,EAAI,EAAGA,EAAI7F,KAAKq0C,SAASruC,OAAQH,IAAK,CAC7C,GAAIozB,GAAUj5B,KAAKq0C,SAASxuC,GACxB6M,EAAQ1S,KAAK+0B,OAAOkE,GACpBF,EAAarmB,EAAMie,IAAIoI,WACvB9wB,EAAMtH,EAAKqH,eAAe+wB,EAC9B,IAAIhb,EAAU9V,GAAO8V,EAAU9V,EAAM8wB,EAAW7H,aAC9C,MAAOxe,EAGT,IAAiC,QAA7B1S,KAAKkP,QAAQimB,aACf,GAAItvB,IAAM7F,KAAKq0C,SAASruC,OAAS,GAAK+X,EAAU9V,EAC9C,MAAOyK,OAIT,IAAU,IAAN7M,GAAWkY,EAAU9V,EAAM8wB,EAAWrO,OACxC,MAAOhY,GAKb,MAAO,OAST5P,EAAQk1C,kBAAoB,SAASnuC,GAEnC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO7D,eAAe,oBACxB,MAAO6D,GAAO,mBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAGTtK,EAAOD,QAAUkD,GAKb,SAASjD,EAAQD,EAASM,GAS9B,QAAS6C,GAAOwyB,EAAMrmB,EAAS+oC,EAAMlN,GACnC/qC,KAAKu1B,KAAOA,EACZv1B,KAAKi1B,gBACH9lB,SAAS,EACT+7B,OAAO,EACPgN,SAAU,GACVC,YAAa,EACbtwC,MACE4hB,SAAS,EACT7E,SAAU,YAEZyD,OACEoB,SAAS,EACT7E,SAAU,aAGd5kB,KAAKi4C,KAAOA,EACZj4C,KAAKkP,QAAUvO,EAAKgF,UAAU3F,KAAKi1B,gBACnCj1B,KAAK+qC,iBAAmBA,EAExB/qC,KAAKmsC,eACLnsC,KAAK2wB,OACL3wB,KAAK+0B,UACL/0B,KAAKqsC,eAAiB,EACtBrsC,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAjClB,GAAIvO,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BqC,EAAYrC,EAAoB,GAkCpC6C,GAAOmR,UAAY,GAAI3R,GAEvBQ,EAAOmR,UAAUsD,MAAQ,WACvBxX,KAAK+0B,UACL/0B,KAAKqsC,eAAiB,GAGxBtpC,EAAOmR,UAAUs4B,SAAW,SAASx5B,EAAOy5B,GAErCzsC,KAAK+0B,OAAO5uB,eAAe6M,KAC9BhT,KAAK+0B,OAAO/hB,GAASy5B,GAEvBzsC,KAAKqsC,gBAAkB,GAGzBtpC,EAAOmR,UAAUw4B,YAAc,SAAS15B,EAAOy5B,GAC7CzsC,KAAK+0B,OAAO/hB,GAASy5B,GAGvB1pC,EAAOmR,UAAUy4B,YAAc,SAAS35B,GAClChT,KAAK+0B,OAAO5uB,eAAe6M,WACtBhT,MAAK+0B,OAAO/hB,GACnBhT,KAAKqsC,gBAAkB,IAI3BtpC,EAAOmR,UAAUohB,QAAU,WACzBt1B,KAAK2wB,IAAIrQ,MAAQtO,SAASM,cAAc,OACxCtS,KAAK2wB,IAAIrQ,MAAMlY,UAAY,SAC3BpI,KAAK2wB,IAAIrQ,MAAM5S,MAAMkX,SAAW,WAChC5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,OAC3BjI,KAAK2wB,IAAIrQ,MAAM5S,MAAMk/B,QAAU,QAE/B5sC,KAAK2wB,IAAIynB,SAAWpmC,SAASM,cAAc,OAC3CtS,KAAK2wB,IAAIynB,SAAShwC,UAAY,aAC9BpI,KAAK2wB,IAAIynB,SAAS1qC,MAAMkX,SAAW,WACnC5kB,KAAK2wB,IAAIynB,SAAS1qC,MAAMzF,IAAM,MAE9BjI,KAAK8qC,IAAM94B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAK8qC,IAAIp9B,MAAMkX,SAAW,WAC1B5kB,KAAK8qC,IAAIp9B,MAAMzF,IAAM,MACrBjI,KAAK8qC,IAAIp9B,MAAM4F,MAAQtT,KAAKkP,QAAQgpC,SAAW,EAAI,KACnDl4C,KAAK8qC,IAAIp9B,MAAM6F,OAAS,OAExBvT,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAK8qC,KAChC9qC,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAK2wB,IAAIynB,WAMtCr1C,EAAOmR,UAAU4yB,KAAO,WAElB9mC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,QAQnDvd,EAAOmR,UAAU6yB,KAAO,WAEjB/mC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,QAI9Cvd,EAAOmR,UAAUD,WAAa,SAAS/E,GACrC,GAAIP,IAAU,UAAU,cAAc,QAAQ,OAAO,QACrDhO,GAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAASA,IAGjDnM,EAAOmR,UAAUuO,OAAS,WACxB,GAAI0qB,GAAe,CACnB,KAAK,GAAIlU,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,IACvIkU,IAKN,IAAuC,GAAnCntC,KAAKkP,QAAQlP,KAAKi4C,MAAMxuB,SAA2C,GAAvBzpB,KAAKqsC,gBAA+C,GAAxBrsC,KAAKkP,QAAQC,SAAoC,GAAhBg+B,EAC3GntC,KAAK8mC,WAEF,CAqBH,GApBA9mC,KAAK+mC,OACmC,YAApC/mC,KAAKkP,QAAQlP,KAAKi4C,MAAMrzB,UAA8D,eAApC5kB,KAAKkP,QAAQlP,KAAKi4C,MAAMrzB,UAC5E5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAM7F,KAAO,MAC5B7H,KAAK2wB,IAAIrQ,MAAM5S,MAAM4b,UAAY,OACjCtpB,KAAK2wB,IAAIynB,SAAS1qC,MAAM4b,UAAY,OACpCtpB,KAAK2wB,IAAIynB,SAAS1qC,MAAM7F,KAAQ7H,KAAKkP,QAAQgpC,SAAW,GAAM,KAC9Dl4C,KAAK2wB,IAAIynB,SAAS1qC,MAAM2a,MAAQ,GAChCroB,KAAK8qC,IAAIp9B,MAAM7F,KAAO,MACtB7H,KAAK8qC,IAAIp9B,MAAM2a,MAAQ,KAGvBroB,KAAK2wB,IAAIrQ,MAAM5S,MAAM2a,MAAQ,MAC7BroB,KAAK2wB,IAAIrQ,MAAM5S,MAAM4b,UAAY,QACjCtpB,KAAK2wB,IAAIynB,SAAS1qC,MAAM4b,UAAY,QACpCtpB,KAAK2wB,IAAIynB,SAAS1qC,MAAM2a,MAASroB,KAAKkP,QAAQgpC,SAAW,GAAM,KAC/Dl4C,KAAK2wB,IAAIynB,SAAS1qC,MAAM7F,KAAO,GAC/B7H,KAAK8qC,IAAIp9B,MAAM2a,MAAQ,MACvBroB,KAAK8qC,IAAIp9B,MAAM7F,KAAO,IAGgB,YAApC7H,KAAKkP,QAAQlP,KAAKi4C,MAAMrzB,UAA8D,aAApC5kB,KAAKkP,QAAQlP,KAAKi4C,MAAMrzB,SAC5E5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,EAAIhE,OAAOjE,KAAKu1B,KAAK5E,IAAI5D,OAAOrf,MAAMzF,IAAIgD,QAAQ,KAAK,KAAO,KACzFjL,KAAK2wB,IAAIrQ,MAAM5S,MAAM4W,OAAS,OAE3B,CACH,GAAI+zB,GAAmBr4C,KAAKu1B,KAAKC,SAASzI,OAAOxZ,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,MAC7FvT,MAAK2wB,IAAIrQ,MAAM5S,MAAM4W,OAAS,EAAI+zB,EAAmBp0C,OAAOjE,KAAKu1B,KAAK5E,IAAI5D,OAAOrf,MAAMzF,IAAIgD,QAAQ,KAAK,KAAO,KAC/GjL,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,GAGH,GAAtBjI,KAAKkP,QAAQg8B,OACflrC,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAK2wB,IAAIynB,SAASpnB,YAAc,GAAK,KAClEhxB,KAAK2wB,IAAIynB,SAAS1qC,MAAM2a,MAAQ,GAChCroB,KAAK2wB,IAAIynB,SAAS1qC,MAAM7F,KAAO,GAC/B7H,KAAK8qC,IAAIp9B,MAAM4F,MAAQ,QAGvBtT,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAKkP,QAAQgpC,SAAW,GAAKl4C,KAAK2wB,IAAIynB,SAASpnB,YAAc,GAAK,KAC/FhxB,KAAKs4C,kBAGP,IAAInlC,GAAU,EACd,KAAK,GAAI8lB,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,KACvI9lB,GAAWnT,KAAK+0B,OAAOkE,GAAS9lB,QAAU,UAIhDnT,MAAK2wB,IAAIynB,SAASnzB,UAAY9R,EAC9BnT,KAAK2wB,IAAIynB,SAAS1qC,MAAMyjB,WAAe,IAAOnxB,KAAKkP,QAAQgpC,SAAYl4C,KAAKkP,QAAQipC,YAAe,OAIvGp1C,EAAOmR,UAAUokC,gBAAkB,WACjC,GAAIt4C,KAAK2wB,IAAIrQ,MAAMnW,WAAY,CAC7BvJ,EAAQ0Q,gBAAgBtR,KAAKmsC,YAC7B,IAAInnB,GAAUld,OAAOygC,iBAAiBvoC,KAAK2wB,IAAIrQ,OAAOi4B,WAClDxL,EAAa9oC,OAAO+gB,EAAQ/Z,QAAQ,KAAK,KACzCuH,EAAIu6B,EACJxB,EAAYvrC,KAAKkP,QAAQgpC,SACzBpL,EAAa,IAAO9sC,KAAKkP,QAAQgpC,SACjCzlC,EAAIs6B,EAAa,GAAMD,EAAa,CAExC9sC,MAAK8qC,IAAIp9B,MAAM4F,MAAQi4B,EAAY,EAAIwB,EAAa,IAEpD,KAAK,GAAI9T,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAK+qC,iBAAiB1R,WAAWJ,IAAuE,GAA7Cj5B,KAAK+qC,iBAAiB1R,WAAWJ,KACvIj5B,KAAK+0B,OAAOkE,GAAS+T,SAASx6B,EAAGC,EAAGzS,KAAKmsC,YAAansC,KAAK8qC,IAAKS,EAAWuB,GAC3Er6B,GAAKq6B,EAAa9sC,KAAKkP,QAAQipC,aAKrCv3C,GAAQ+Q,gBAAgB3R,KAAKmsC,eAIjCtsC,EAAOD,QAAUmD,GAKb,SAASlD,EAAQD,EAASM,GAqB9B,QAAS8C,GAAUuyB,EAAMrmB,GACvBlP,KAAKK,GAAKM,EAAK2E,aACftF,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACH2b,iBAAkB,OAClB4H,aAAc,UACdvhC,MAAM,EACNwhC,UAAU,EACVC,YAAa,QACbnI,QACEphC,SAAS,EACTgmB,YAAa,UAEfznB,MAAO,OACPirC,UACErlC,MAAO,GACPslC,cAAe,UACf/P,MAAO,UAETkH,YACE5gC,SAAS,EACT6gC,gBAAiB,cACjBC,MAAO,IAETp9B,YACE1D,SAAS,EACT4D,KAAM,EACNrF,MAAO,UAETmrC,UACE7N,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACP53B,MAAO,OACPmW,SAAS,EACT8T,YAAY,EACZD,aACEz1B,MAAO1D,IAAI0C,OAAWzC,IAAIyC,QAC1BwhB,OAAQlkB,IAAI0C,OAAWzC,IAAIyC,UAkB/BiyC,QACE3pC,SAAS,EACT+7B,OAAO,EACPrjC,MACE4hB,SAAS,EACT7E,SAAU,YAEZyD,OACEoB,SAAS,EACT7E,SAAU,cAGdmQ,QACEsE,gBAKJr5B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAK2wB,OACL3wB,KAAKqG,SACLrG,KAAK8D,OAAS,KACd9D,KAAK+0B,UACL/0B,KAAK+4C,oBAAqB,EAC1B/4C,KAAKg5C,iBAAkB,EACvBh5C,KAAKi5C,yBAA0B,CAE/B,IAAI/jC,GAAKlV,IACTA,MAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAGlB52B,KAAK6zC,eACH7/B,IAAO,SAAUnK,EAAOgL,GACtBK,EAAG4+B,OAAOj/B,EAAO5S,QAEnB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAG6+B,UAAUl/B,EAAO5S,QAEtBmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAG8+B,UAAUn/B,EAAO5S,SAKxBjC,KAAKi0C,gBACHjgC,IAAO,SAAUnK,EAAOgL,GACtBK,EAAGg/B,aAAar/B,EAAO5S,QAEzB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAGi/B,gBAAgBt/B,EAAO5S,QAE5BmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAGk/B,gBAAgBv/B,EAAO5S,SAI9BjC,KAAKiC,SACLjC,KAAKs0C,aACLt0C,KAAKk5C,UAAYl5C,KAAKu1B,KAAKe,MAAMjmB,MACjCrQ,KAAKw0C,eAELx0C,KAAKmsC,eACLnsC,KAAKiU,WAAW/E,GAChBlP,KAAKwvC,0BAA4B,GACjCxvC,KAAKm5C,QAAU,EACfn5C,KAAKu1B,KAAKE,QAAQnhB,GAAG,eAAgB,WACnCY,EAAGgkC,UAAYhkC,EAAGqgB,KAAKe,MAAMjmB,MAC7B6E,EAAG41B,IAAIp9B,MAAM7F,KAAOlH,EAAK4J,OAAOK,QAAQsK,EAAG7O,MAAMiN,OACjD4B,EAAGuN,OAAOliB,KAAK2U,GAAG,KAIpBlV,KAAKs1B,UACLt1B,KAAKgxC,WAAalG,IAAK9qC,KAAK8qC,IAAKqB,YAAansC,KAAKmsC,YAAaj9B,QAASlP,KAAKkP,QAAS6lB,OAAQ/0B,KAAK+0B,QACpG/0B,KAAKu1B,KAAKE,QAAQhH,KAAK,UAvJzB,GAAI9tB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BqC,EAAYrC,EAAoB,IAChCwC,EAAWxC,EAAoB,IAC/ByC,EAAazC,EAAoB,IACjC6C,EAAS7C,EAAoB,IAC7Bk5C,EAAoBl5C,EAAoB,IAExCu0C,EAAY,eAiJhBzxC,GAAUkR,UAAY,GAAI3R,GAK1BS,EAAUkR,UAAUohB,QAAU,WAC5B,GAAIhV,GAAQtO,SAASM,cAAc,MACnCgO,GAAMlY,UAAY,YAClBpI,KAAK2wB,IAAIrQ,MAAQA,EAGjBtgB,KAAK8qC,IAAM94B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAK8qC,IAAIp9B,MAAMkX,SAAW,WAC1B5kB,KAAK8qC,IAAIp9B,MAAM6F,QAAU,GAAKvT,KAAKkP,QAAQwpC,aAAaztC,QAAQ,KAAK,IAAM,KAC3EjL,KAAK8qC,IAAIp9B,MAAMk/B,QAAU,QACzBtsB,EAAMpO,YAAYlS,KAAK8qC,KAGvB9qC,KAAKkP,QAAQ2pC,SAAS1jB,YAAc,OACpCn1B,KAAKs5B,UAAY,GAAI52B,GAAS1C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ2pC,SAAU74C,KAAK8qC,IAAK9qC,KAAKkP,QAAQ6lB,QAEvF/0B,KAAKkP,QAAQ2pC,SAAS1jB,YAAc,QACpCn1B,KAAKu5B,WAAa,GAAI72B,GAAS1C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ2pC,SAAU74C,KAAK8qC,IAAK9qC,KAAKkP,QAAQ6lB,cACjF/0B,MAAKkP,QAAQ2pC,SAAS1jB,YAG7Bn1B,KAAKw5B,WAAa,GAAIz2B,GAAO/C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ4pC,OAAQ,OAAQ94C,KAAKkP,QAAQ6lB,QAClF/0B,KAAKy5B,YAAc,GAAI12B,GAAO/C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ4pC,OAAQ,QAAS94C,KAAKkP,QAAQ6lB,QAEpF/0B,KAAK+mC,QAOP/jC,EAAUkR,UAAUD,WAAa,SAAS/E,GACxC,GAAIA,EAAS,CACX,GAAIP,IAAU,WAAW,eAAe,SAAS,cAAc,mBAAmB,QAAQ,WAAW,WAAW,OAAO,SAC3F9H,UAAxBqI,EAAQwpC,aAAgD7xC,SAAnBqI,EAAQqE,QAAsE1M,SAA9C7G,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QAC1GvT,KAAKg5C,iBAAkB,EACvBh5C,KAAKi5C,yBAA0B,GAEsBpyC,SAA9C7G,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QAAgD1M,SAAxBqI,EAAQwpC,aACtErtC,UAAU6D,EAAQwpC,YAAc,IAAIztC,QAAQ,KAAK,KAAOjL,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,SAC7FvT,KAAKg5C,iBAAkB,GAG3Br4C,EAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAASA,GAC/CvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UAEpCA,EAAQ6gC,YACuB,gBAAtB7gC,GAAQ6gC,YACb7gC,EAAQ6gC,WAAWC,kBACqB,WAAtC9gC,EAAQ6gC,WAAWC,gBACrBhwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,EAEa,WAAtC/gC,EAAQ6gC,WAAWC,gBAC1BhwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,GAGhCjwC,KAAKkP,QAAQ6gC,WAAWC,gBAAkB,cAC1ChwC,KAAKkP,QAAQ6gC,WAAWE,MAAQ,KAMpCjwC,KAAKs5B,WACkBzyB,SAArBqI,EAAQ2pC,WACV74C,KAAKs5B,UAAUrlB,WAAWjU,KAAKkP,QAAQ2pC,UACvC74C,KAAKu5B,WAAWtlB,WAAWjU,KAAKkP,QAAQ2pC,WAIxC74C,KAAKw5B,YACgB3yB,SAAnBqI,EAAQ4pC,SACV94C,KAAKw5B,WAAWvlB,WAAWjU,KAAKkP,QAAQ4pC,QACxC94C,KAAKy5B,YAAYxlB,WAAWjU,KAAKkP,QAAQ4pC,SAIzC94C,KAAK+0B,OAAO5uB,eAAesuC,IAC7Bz0C,KAAK+0B,OAAO0f,GAAWxgC,WAAW/E,GAKlClP,KAAK2wB,IAAIrQ,OACXtgB,KAAKyiB,QAAO,IAOhBzf,EAAUkR,UAAU4yB,KAAO,WAErB9mC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,QASnDtd,EAAUkR,UAAU6yB,KAAO,WAEpB/mC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,QAS9Ctd,EAAUkR,UAAU8iB,SAAW,SAAS/0B,GACtC,GACEiU,GADEhB,EAAKlV,KAEPq2C,EAAer2C,KAAK22B,SAGtB,IAAK10B,EAGA,CAAA,KAAIA,YAAiBpB,IAAWoB,YAAiBnB,IAIpD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK22B,UAAY10B,MAHjBjC,MAAK22B,UAAY,IAoBnB,IAXI0f,IAEF11C,EAAKiI,QAAQ5I,KAAK6zC,cAAe,SAAUhrC,EAAUgB,GACnDwsC,EAAa5hC,IAAI5K,EAAOhB,KAI1BqN,EAAMmgC,EAAaz/B,SACnB5W,KAAKg0C,UAAU99B,IAGblW,KAAK22B,UAAW,CAElB,GAAIt2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAK6zC,cAAe,SAAUhrC,EAAUgB,GACnDqL,EAAGyhB,UAAUriB,GAAGzK,EAAOhB,EAAUxI,KAInC6V,EAAMlW,KAAK22B,UAAU/f,SACrB5W,KAAK8zC,OAAO59B,GAEdlW,KAAK20C,mBAEL30C,KAAKyiB,QAAO,IAQdzf,EAAUkR,UAAU6iB,UAAY,SAAShC,GACvC,GACI7e,GADAhB,EAAKlV,IAgBT,IAZIA,KAAK42B,aACPj2B,EAAKiI,QAAQ5I,KAAKi0C,eAAgB,SAAUprC,EAAUgB,GACpDqL,EAAG0hB,WAAWjiB,YAAY9K,EAAOhB,KAInCqN,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAK42B,WAAa,KAClB52B,KAAKo0C,gBAAgBl+B,IAIlB6e,EAGA,CAAA,KAAIA,YAAkBl0B,IAAWk0B,YAAkBj0B,IAItD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK42B,WAAa7B,MAHlB/0B,MAAK42B,WAAa,IASpB,IAAI52B,KAAK42B,WAAY,CAEnB,GAAIv2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAKi0C,eAAgB,SAAUprC,EAAUgB,GACpDqL,EAAG0hB,WAAWtiB,GAAGzK,EAAOhB,EAAUxI,KAIpC6V,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAKk0C,aAAah+B,GAEpBlW,KAAK+zC,aASP/wC,EAAUkR,UAAU6/B,UAAY,WAC9B/zC,KAAK20C,mBACL30C,KAAKq5C,sBAELr5C,KAAKyiB,QAAO,IAEdzf,EAAUkR,UAAU4/B,OAAkB,SAAU59B,GAAMlW,KAAK+zC,UAAU79B,IACrElT,EAAUkR,UAAU8/B,UAAkB,SAAU99B,GAAMlW,KAAK+zC,UAAU79B,IACrElT,EAAUkR,UAAUigC,gBAAmB,SAAUE,GAC/C,IAAK,GAAIxuC,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAAK,CACxC,GAAI6M,GAAQ1S,KAAK42B,WAAW3gB,IAAIo+B,EAASxuC,GACzC7F,MAAKs5C,aAAa5mC,EAAO2hC,EAASxuC,IAIpC7F,KAAKyiB,QAAO,IAEdzf,EAAUkR,UAAUggC,aAAe,SAAUG,GAAWr0C,KAAKm0C,gBAAgBE,IAQ7ErxC,EAAUkR,UAAUkgC,gBAAkB,SAAUC,GAC9C,IAAK,GAAIxuC,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/B7F,KAAK+0B,OAAO5uB,eAAekuC,EAASxuC,MACmB,SAArD7F,KAAK+0B,OAAOsf,EAASxuC,IAAIqJ,QAAQ0hC,kBACnC5wC,KAAKu5B,WAAWoT,YAAY0H,EAASxuC,IACrC7F,KAAKy5B,YAAYkT,YAAY0H,EAASxuC,IACtC7F,KAAKy5B,YAAYhX,WAGjBziB,KAAKs5B,UAAUqT,YAAY0H,EAASxuC,IACpC7F,KAAKw5B,WAAWmT,YAAY0H,EAASxuC,IACrC7F,KAAKw5B,WAAW/W,gBAEXziB,MAAK+0B,OAAOsf,EAASxuC,IAGhC7F,MAAK20C,mBAEL30C,KAAKyiB,QAAO,IAWdzf,EAAUkR,UAAUolC,aAAe,SAAU5mC,EAAOumB,GAC7Cj5B,KAAK+0B,OAAO5uB,eAAe8yB,IAY9Bj5B,KAAK+0B,OAAOkE,GAASrjB,OAAOlD,GACyB,SAAjD1S,KAAK+0B,OAAOkE,GAAS/pB,QAAQ0hC,kBAC/B5wC,KAAKu5B,WAAWmT,YAAYzT,EAASj5B,KAAK+0B,OAAOkE,IACjDj5B,KAAKy5B,YAAYiT,YAAYzT,EAASj5B,KAAK+0B,OAAOkE,MAGlDj5B,KAAKs5B,UAAUoT,YAAYzT,EAASj5B,KAAK+0B,OAAOkE,IAChDj5B,KAAKw5B,WAAWkT,YAAYzT,EAASj5B,KAAK+0B,OAAOkE,OAlBnDj5B,KAAK+0B,OAAOkE,GAAW,GAAIt2B,GAAW+P,EAAOumB,EAASj5B,KAAKkP,QAASlP,KAAKwvC,0BACpB,SAAjDxvC,KAAK+0B,OAAOkE,GAAS/pB,QAAQ0hC,kBAC/B5wC,KAAKu5B,WAAWiT,SAASvT,EAASj5B,KAAK+0B,OAAOkE,IAC9Cj5B,KAAKy5B,YAAY+S,SAASvT,EAASj5B,KAAK+0B,OAAOkE,MAG/Cj5B,KAAKs5B,UAAUkT,SAASvT,EAASj5B,KAAK+0B,OAAOkE,IAC7Cj5B,KAAKw5B,WAAWgT,SAASvT,EAASj5B,KAAK+0B,OAAOkE,MAclDj5B,KAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,UASnBzf,EAAUkR,UAAUmlC,oBAAsB,WACxC,GAAsB,MAAlBr5C,KAAK22B,UAAmB,CAC1B,GACIsC,GADAsgB,IAEJ,KAAKtgB,IAAWj5B,MAAK+0B,OACf/0B,KAAK+0B,OAAO5uB,eAAe8yB,KAC7BsgB,EAActgB,MAGlB,KAAK,GAAI3iB,KAAUtW,MAAK22B,UAAUhjB,MAChC,GAAI3T,KAAK22B,UAAUhjB,MAAMxN,eAAemQ,GAAS,CAC/C,GAAIxG,GAAO9P,KAAK22B,UAAUhjB,MAAM2C,EAChC,IAAkCzP,SAA9B0yC,EAAczpC,EAAK4C,OACrB,KAAM,IAAI9O,OAAM,4IAElBkM,GAAK0C,EAAI7R,EAAKuG,QAAQ4I,EAAK0C,EAAE,QAC7B+mC,EAAczpC,EAAK4C,OAAOnK,KAAKuH,GAGnC,IAAKmpB,IAAWj5B,MAAK+0B,OACf/0B,KAAK+0B,OAAO5uB,eAAe8yB,IAC7Bj5B,KAAK+0B,OAAOkE,GAASjC,SAASuiB,EAActgB,MAYpDj2B,EAAUkR,UAAUygC,iBAAmB,WACrC,GAAI30C,KAAK22B,WAA+B,MAAlB32B,KAAK22B,UAAmB,CAC5C,GAAI6iB,GAAmB,CACvB,KAAK,GAAIljC,KAAUtW,MAAK22B,UAAUhjB,MAChC,GAAI3T,KAAK22B,UAAUhjB,MAAMxN,eAAemQ,GAAS,CAC/C,GAAIxG,GAAO9P,KAAK22B,UAAUhjB,MAAM2C,EACpBzP,SAARiJ,IACEA,EAAK3J,eAAe,SACHU,SAAfiJ,EAAK4C,QACP5C,EAAK4C,MAAQ+hC,GAIf3kC,EAAK4C,MAAQ+hC,EAEf+E,EAAmB1pC,EAAK4C,OAAS+hC,EAAY+E,EAAmB,EAAIA,GAK1E,GAAwB,GAApBA,QACKx5C,MAAK+0B,OAAO0f,GACnBz0C,KAAKw5B,WAAWmT,YAAY8H,GAC5Bz0C,KAAKy5B,YAAYkT,YAAY8H,GAC7Bz0C,KAAKs5B,UAAUqT,YAAY8H,GAC3Bz0C,KAAKu5B,WAAWoT,YAAY8H,OAEzB,CACH,GAAI/hC,IAASrS,GAAIo0C,EAAWthC,QAASnT,KAAKkP,QAAQspC,aAClDx4C,MAAKs5C,aAAa5mC,EAAO+hC,eAIpBz0C,MAAK+0B,OAAO0f,GACnBz0C,KAAKw5B,WAAWmT,YAAY8H,GAC5Bz0C,KAAKy5B,YAAYkT,YAAY8H,GAC7Bz0C,KAAKs5B,UAAUqT,YAAY8H,GAC3Bz0C,KAAKu5B,WAAWoT,YAAY8H,EAG9Bz0C,MAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,UAQnBzf,EAAUkR,UAAUuO,OAAS,SAASg3B,GACpC,GAAI5P,IAAU,CAGd7pC,MAAKqG,MAAMiN,MAAQtT,KAAK2wB,IAAIrQ,MAAM0Q,YAClChxB,KAAKqG,MAAMkN,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAGhC1M,SAAnB7G,KAAKy1C,WAA2Bz1C,KAAKqG,MAAMiN,QAC7CmmC,GAAmB,GAIrB5P,EAAU7pC,KAAK4pC,cAAgBC,CAG/B,IAAIyL,GAAkBt1C,KAAKu1B,KAAKe,MAAMhmB,IAAMtQ,KAAKu1B,KAAKe,MAAMjmB,MACxDklC,EAAUD,GAAmBt1C,KAAKw1C,mBA6BtC,IA5BAx1C,KAAKw1C,oBAAsBF,EAKZ,GAAXzL,IACF7pC,KAAK8qC,IAAIp9B,MAAM4F,MAAQ3S,EAAK4J,OAAOK,OAAO,EAAE5K,KAAKqG,MAAMiN,OACvDtT,KAAK8qC,IAAIp9B,MAAM7F,KAAOlH,EAAK4J,OAAOK,QAAQ5K,KAAKqG,MAAMiN,QAGN,KAA1CtT,KAAKkP,QAAQqE,OAAS,IAAIvM,QAAQ,MAA8C,GAAhChH,KAAKi5C,2BACxDj5C,KAAKg5C,iBAAkB,IAKC,GAAxBh5C,KAAKg5C,iBACHh5C,KAAKkP,QAAQwpC,aAAe14C,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,OAC1EvT,KAAKkP,QAAQwpC,YAAc14C,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,KACvEvT,KAAK8qC,IAAIp9B,MAAM6F,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,MAEtEvT,KAAKg5C,iBAAkB,GAGvBh5C,KAAK8qC,IAAIp9B,MAAM6F,QAAU,GAAKvT,KAAKkP,QAAQwpC,aAAaztC,QAAQ,KAAK,IAAM,KAI9D,GAAX4+B,GAA6B,GAAV0L,GAA6C,GAA3Bv1C,KAAK+4C,oBAAkD,GAApBU,EAC1E5P,EAAU7pC,KAAK05C,gBAAkB7P,MAIjC,IAAsB,GAAlB7pC,KAAKk5C,UAAgB,CACvB,GAAIxuB,GAAS1qB,KAAKu1B,KAAKe,MAAMjmB,MAAQrQ,KAAKk5C,UACtC5iB,EAAQt2B,KAAKu1B,KAAKe,MAAMhmB,IAAMtQ,KAAKu1B,KAAKe,MAAMjmB,KAClD,IAAwB,GAApBrQ,KAAKqG,MAAMiN,MAAY,CACzB,GAAIqmC,GAAmB35C,KAAKqG,MAAMiN,MAAMgjB,EACpCrjB,EAAUyX,EAASivB,CACvB35C,MAAK8qC,IAAIp9B,MAAM7F,MAAS7H,KAAKqG,MAAMiN,MAAQL,EAAW,MAO5D,MAFAjT,MAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,SACVonB,GAQT7mC,EAAUkR,UAAUwlC,aAAe,WAGjC,GADA94C,EAAQ0Q,gBAAgBtR,KAAKmsC,aACL,GAApBnsC,KAAKqG,MAAMiN,OAAgC,MAAlBtT,KAAK22B,UAAmB,CACnD,GAAIjkB,GAAO7M,EACP+zC,KACAC,KACAC,KACAC,GAAe,EAGf1F,IACJ,KAAK,GAAIpb,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KAC7BvmB,EAAQ1S,KAAK+0B,OAAOkE,GACC,GAAjBvmB,EAAM+W,SAAgE5iB,SAA5C7G,KAAKkP,QAAQ6lB,OAAOsE,WAAWJ,IAAqE,GAA3Cj5B,KAAKkP,QAAQ6lB,OAAOsE,WAAWJ,IACpHob,EAAS9rC,KAAK0wB,GAIpB,IAAIob,EAASruC,OAAS,EAAG,CAEvB,GAAIg0C,GAAUh6C,KAAKu1B,KAAK50B,KAAKy1B,cAAcp2B,KAAKu1B,KAAKC,SAAS91B,KAAK4T,OAC/D2mC,EAAUj6C,KAAKu1B,KAAK50B,KAAKy1B,aAAa,EAAIp2B,KAAKu1B,KAAKC,SAAS91B,KAAK4T,OAClEsjB,IAQJ,KANA52B,KAAKk6C,iBAAiB7F,EAAUzd,EAAYojB,EAASC,GAGrDj6C,KAAKm6C,eAAe9F,EAAUzd,GAGzB/wB,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/B+zC,EAAsBvF,EAASxuC,IAAM7F,KAAKo6C,qBAAqBxjB,EAAWyd,EAASxuC,IAIrF7F,MAAKq6C,YAAYhG,EAAUuF,EAAuBE,GAIlDC,EAAe/5C,KAAKs6C,aAAajG,EAAUyF,EAC3C,IAAIS,GAAa,CACjB,IAAoB,GAAhBR,GAAwB/5C,KAAKm5C,QAAUoB,EAKzC,MAJA35C,GAAQ+Q,gBAAgB3R,KAAKmsC,aAC7BnsC,KAAK+4C,oBAAqB,EAC1B/4C,KAAKm5C,UACLn5C,KAAKu1B,KAAKE,QAAQhH,KAAK,WAChB,CAUP,KAPIzuB,KAAKm5C,QAAUoB,GACjB1f,QAAQtG,IAAI,6EAEdv0B,KAAKm5C,QAAU,EACfn5C,KAAK+4C,oBAAqB,EAGrBlzC,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/B6M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IAC7Bg0C,EAAmBxF,EAASxuC,IAAM7F,KAAKw6C,qBAAqB5jB,EAAWyd,EAASxuC,IAAK6M,EAIvF,KAAK7M,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/B6M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IACF,OAAvB6M,EAAMxD,QAAQxB,OAChBgF,EAAMq+B,KAAK8I,EAAmBxF,EAASxuC,IAAK6M,EAAO1S,KAAKgxC,UAG5DoI,GAAkBrI,KAAKsD,EAAUwF,EAAoB75C,KAAKgxC,YAOhE,MADApwC,GAAQ+Q,gBAAgB3R,KAAKmsC,cACtB,GAiBTnpC,EAAUkR,UAAUgmC,iBAAmB,SAAU7F,EAAUzd,EAAYojB,EAASC,GAC9E,GAAIvnC,GAAO7M,EAAG4mB,EAAG3c,CACjB,IAAIukC,EAASruC,OAAS,EACpB,IAAKH,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAAK,CACpC6M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IAC7B+wB,EAAWyd,EAASxuC,MACpB,IAAI40C,GAAgB7jB,EAAWyd,EAASxuC,GAExC,IAA0B,GAAtB6M,EAAMxD,QAAQ+H,KAAc,CAC9B,GAAIyjC,GAAQl2C,KAAKJ,IAAI,EAAGzD,EAAKqP,kBAAkB0C,EAAMikB,UAAWqjB,EAAS,IAAK,UAC9E,KAAKvtB,EAAIiuB,EAAOjuB,EAAI/Z,EAAMikB,UAAU3wB,OAAQymB,IAE1C,GADA3c,EAAO4C,EAAMikB,UAAUlK,GACV5lB,SAATiJ,EAAoB,CACtB,GAAIA,EAAK0C,EAAIynC,EAAS,CACpBQ,EAAclyC,KAAKuH,EACnB,OAGA2qC,EAAclyC,KAAKuH,QAMzB,KAAK2c,EAAI,EAAGA,EAAI/Z,EAAMikB,UAAU3wB,OAAQymB,IACtC3c,EAAO4C,EAAMikB,UAAUlK,GACV5lB,SAATiJ,GACEA,EAAK0C,EAAIwnC,GAAWlqC,EAAK0C,EAAIynC,GAC/BQ,EAAclyC,KAAKuH,KAgBjC9M,EAAUkR,UAAUimC,eAAiB,SAAU9F,EAAUzd,GACvD,GAAIlkB,EACJ,IAAI2hC,EAASruC,OAAS,EACpB,IAAK,GAAIH,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAEnC,GADA6M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IACC,GAA1B6M,EAAMxD,QAAQupC,SAAkB,CAClC,GAAIgC,GAAgB7jB,EAAWyd,EAASxuC,GACxC,IAAI40C,EAAcz0C,OAAS,EAAG,CAC5B,GAAI20C,GAAY,EACZC,EAAiBH,EAAcz0C,OAI/B60C,EAAY76C,KAAKu1B,KAAK50B,KAAKq1B,eAAeykB,EAAcA,EAAcz0C,OAAS,GAAGwM,GAAKxS,KAAKu1B,KAAK50B,KAAKq1B,eAAeykB,EAAc,GAAGjoC,GACtIsoC,EAAiBF,EAAiBC,CACtCF,GAAYn2C,KAAKL,IAAIK,KAAKu2C,KAAK,GAAMH,GAAiBp2C,KAAKJ,IAAI,EAAGI,KAAK+pB,MAAMusB,IAG7E,KAAK,GADDE,MACKvuB,EAAI,EAAOmuB,EAAJnuB,EAAoBA,GAAKkuB,EACvCK,EAAYzyC,KAAKkyC,EAAchuB,GAGjCmK,GAAWyd,EAASxuC,IAAMm1C,KAgBpCh4C,EAAUkR,UAAUmmC,YAAc,SAAUhG,EAAUzd,EAAYkjB,GAChE,GAAIhJ,GAAWp+B,EAAO7M,EAGlBqJ,EAFA+rC,KACAC,IAEJ,IAAI7G,EAASruC,OAAS,EAAG,CACvB,IAAKH,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/BirC,EAAYla,EAAWyd,EAASxuC,IAChCqJ,EAAUlP,KAAK+0B,OAAOsf,EAASxuC,IAAIqJ,QAC/B4hC,EAAU9qC,OAAS,IACrB0M,EAAQ1S,KAAK+0B,OAAOsf,EAASxuC,IAES,SAAlCqJ,EAAQypC,SAASC,eAA6C,OAAjB1pC,EAAQxB,MACvB,QAA5BwB,EAAQ0hC,iBAA6BqK,EAAuBA,EAAoBlmC,OAAOrC,EAAMm+B,UAAUC,IAClEoK,EAAuBA,EAAqBnmC,OAAOrC,EAAMm+B,UAAUC,IAG5GgJ,EAAYzF,EAASxuC,IAAM6M,EAAMm+B,UAAUC,EAAUuD,EAASxuC,IAMpEuzC,GAAkB+B,oBAAoBF,EAAsBnB,EAAazF,EAAU,iBAAmB,QACtG+E,EAAkB+B,oBAAoBD,EAAsBpB,EAAazF,EAAU,kBAAmB,WAW1GrxC,EAAUkR,UAAUomC,aAAe,SAAUjG,EAAUyF,GACrD,GAGoEsB,GAAQC,EAHxExR,GAAU,EACVyR,GAAgB,EAChBC,GAAiB,EACjBC,EAAU,IAAKC,EAAW,IAAKC,EAAU,KAAMC,EAAW,IAE9D,IAAItH,EAASruC,OAAS,EAAG,CAEvB,IAAK,GAAIH,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAAK,CACxC,GAAI6M,GAAQ1S,KAAK+0B,OAAOsf,EAASxuC,GAC7B6M,IAA2C,SAAlCA,EAAMxD,QAAQ0hC,kBACzB0K,GAAgB,EAChBE,EAAU,EACVE,EAAU,GAEHhpC,GAASA,EAAMxD,QAAQ0hC,mBAC9B2K,GAAiB,EACjBE,EAAW,EACXE,EAAW,GAKf,IAAK,GAAI91C,GAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAC/Bi0C,EAAY3zC,eAAekuC,EAASxuC,KAClCi0C,EAAYzF,EAASxuC,IAAI+1C,UAAW,IACtCR,EAAStB,EAAYzF,EAASxuC,IAAI1B,IAClCk3C,EAASvB,EAAYzF,EAASxuC,IAAIzB,IAEe,SAA7C01C,EAAYzF,EAASxuC,IAAI+qC,kBAC3B0K,GAAgB,EAChBE,EAAUA,EAAUJ,EAASA,EAASI,EACtCE,EAAoBL,EAAVK,EAAmBL,EAASK,IAGtCH,GAAiB,EACjBE,EAAWA,EAAWL,EAASA,EAASK,EACxCE,EAAsBN,EAAXM,EAAoBN,EAASM,GAM3B,IAAjBL,GACFt7C,KAAKs5B,UAAUnF,SAASqnB,EAASE,GAEb,GAAlBH,GACFv7C,KAAKu5B,WAAWpF,SAASsnB,EAAUE,GAoCvC,MAjCA9R,GAAU7pC,KAAK67C,qBAAqBP,EAAgBt7C,KAAKs5B,YAAeuQ,EACxEA,EAAU7pC,KAAK67C,qBAAqBN,EAAgBv7C,KAAKu5B,aAAesQ,EAElD,GAAlB0R,GAA2C,GAAjBD,GAC5Bt7C,KAAKs5B,UAAUwiB,WAAY,EAC3B97C,KAAKu5B,WAAWuiB,WAAY,IAG5B97C,KAAKs5B,UAAUwiB,WAAY,EAC3B97C,KAAKu5B,WAAWuiB,WAAY,GAE9B97C,KAAKu5B,WAAW2S,QAAUoP,EACI,GAA1Bt7C,KAAKu5B,WAAW2S,QACWlsC,KAAKs5B,UAAU2S,WAAtB,GAAlBsP,EAAqDv7C,KAAKu5B,WAAWjmB,MAChB,EAEzDu2B,EAAU7pC,KAAKs5B,UAAU7W,UAAYonB,EACrC7pC,KAAKu5B,WAAWwS,iBAAmB/rC,KAAKs5B,UAAUwS,WAClD9rC,KAAKu5B,WAAWyS,aAAehsC,KAAKs5B,UAAU0S,aAC9CnC,EAAU7pC,KAAKu5B,WAAW9W,UAAYonB,GAGtCA,EAAU7pC,KAAKu5B,WAAW9W,UAAYonB,EAIE,IAAtCwK,EAASrtC,QAAQ,mBACnBqtC,EAAS1rC,OAAO0rC,EAASrtC,QAAQ,kBAAkB,GAEV,IAAvCqtC,EAASrtC,QAAQ,oBACnBqtC,EAAS1rC,OAAO0rC,EAASrtC,QAAQ,mBAAmB,GAG/C6iC,GAYT7mC,EAAUkR,UAAU2nC,qBAAuB,SAAUE,EAAUhZ,GAC7D,GAAI7B,IAAU,CAad,OAZgB,IAAZ6a,EACEhZ,EAAKpS,IAAIrQ,MAAMnW,YAA6B,GAAf44B,EAAKrJ,SACpCqJ,EAAK+D,OACL5F,GAAU,GAIP6B,EAAKpS,IAAIrQ,MAAMnW,YAA6B,GAAf44B,EAAKrJ,SACrCqJ,EAAKgE,OACL7F,GAAU,GAGPA,GAaTl+B,EAAUkR,UAAUkmC,qBAAuB,SAAU4B,GAKnD,IAAK,GAHDC,GAAQC,EADRC,KAEArmB,EAAW91B,KAAKu1B,KAAK50B,KAAKm1B,SAErBjwB,EAAI,EAAGA,EAAIm2C,EAAWh2C,OAAQH,IACrCo2C,EAASnmB,EAASkmB,EAAWn2C,GAAG2M,GAAKxS,KAAKqG,MAAMiN,MAChD4oC,EAASF,EAAWn2C,GAAG4M,EACvB0pC,EAAc5zC,MAAMiK,EAAGypC,EAAQxpC,EAAGypC,GAGpC,OAAOC,IAcTn5C,EAAUkR,UAAUsmC,qBAAuB,SAAUwB,EAAYtpC,GAC/D,GACIupC,GAAQC,EADRC,KAEArmB,EAAW91B,KAAKu1B,KAAK50B,KAAKm1B,SAC1BiN,EAAO/iC,KAAKs5B,UACZ8iB,EAAYn4C,OAAOjE,KAAK8qC,IAAIp9B,MAAM6F,OAAOtI,QAAQ,KAAK,IACpB,UAAlCyH,EAAMxD,QAAQ0hC,mBAChB7N,EAAO/iC,KAAKu5B,WAGd,KAAK,GAAI1zB,GAAI,EAAGA,EAAIm2C,EAAWh2C,OAAQH,IAAK,CAC1C,GAAIw2C,EAOJA,GAAaL,EAAWn2C,GAAGmN,MAAQgpC,EAAWn2C,GAAGmN,MAAQ,KACzDipC,EAASnmB,EAASkmB,EAAWn2C,GAAG2M,GAAKxS,KAAKqG,MAAMiN,MAChD4oC,EAAS13C,KAAK+pB,MAAMwU,EAAK0L,aAAauN,EAAWn2C,GAAG4M,IACpD0pC,EAAc5zC,MAAMiK,EAAGypC,EAAQxpC,EAAGypC,EAAQlpC,MAAMqpC,IAKlD,MAFA3pC,GAAMo9B,gBAAgBtrC,KAAKL,IAAIi4C,EAAWrZ,EAAK0L,aAAa,KAErD0N,GAITt8C,EAAOD,QAAUoD,GAKb,SAASnD,EAAQD,EAASM,GAgB9B,QAAS+C,GAAUsyB,EAAMrmB,GACvBlP,KAAK2wB,KACHoI,WAAY,KACZ2S,SACA4Q,cACAC,cACA9qC,WACEi6B,SACA4Q,cACAC,gBAGJv8C,KAAKqG,OACHiwB,OACEjmB,MAAO,EACPC,IAAK,EACL8sB,YAAa,GAEfof,QAAS,GAGXx8C,KAAKi1B,gBACHE,YAAa,SAEb6V,iBAAiB,EACjBC,iBAAiB,EACjB1H,OAAQ,KACR1N,SAAU,MAEZ71B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAEpCj1B,KAAKu1B,KAAOA,EAGZv1B,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAlDlB,GAAIvO,GAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC6B,EAAW7B,EAAoB,IAC/ByB,EAAWzB,EAAoB,IAC/B2D,EAAS3D,EAAoB,GAiDjC+C,GAASiR,UAAY,GAAI3R,GAUzBU,EAASiR,UAAUD,WAAa,SAAS/E,GACnCA,IAEFvO,EAAKyF,iBACH,cACA,kBACA,kBACA,cACA,SACA,YACCpG,KAAKkP,QAASA,GAIb,UAAYA,KACe,kBAAlBrL,GAAOuiC,OAEhBviC,EAAOuiC,OAAOl3B,EAAQk3B,QAGtBviC,EAAOwiC,KAAKn3B,EAAQk3B,WAS5BnjC,EAASiR,UAAUohB,QAAU,WAC3Bt1B,KAAK2wB,IAAIoI,WAAa/mB,SAASM,cAAc,OAC7CtS,KAAK2wB,IAAI9jB,WAAamF,SAASM,cAAc,OAE7CtS,KAAK2wB,IAAIoI,WAAW3wB,UAAY,sBAChCpI,KAAK2wB,IAAI9jB,WAAWzE,UAAY,uBAMlCnF,EAASiR,UAAUG,QAAU,WAEvBrU,KAAK2wB,IAAIoI,WAAW5uB,YACtBnK,KAAK2wB,IAAIoI,WAAW5uB,WAAWyH,YAAY5R,KAAK2wB,IAAIoI,YAElD/4B,KAAK2wB,IAAI9jB,WAAW1C,YACtBnK,KAAK2wB,IAAI9jB,WAAW1C,WAAWyH,YAAY5R,KAAK2wB,IAAI9jB,YAGtD7M,KAAKu1B,KAAO,MAOdtyB,EAASiR,UAAUuO,OAAS,WAC1B,GAAIvT,GAAUlP,KAAKkP,QACf7I,EAAQrG,KAAKqG,MACb0yB,EAAa/4B,KAAK2wB,IAAIoI,WACtBlsB,EAAa7M,KAAK2wB,IAAI9jB,WAGtBxC,EAAiC,OAAvB6E,EAAQimB,YAAwBn1B,KAAKu1B,KAAK5E,IAAI1oB,IAAMjI,KAAKu1B,KAAK5E,IAAIrM,OAC5Em4B,EAAiB1jB,EAAW5uB,aAAeE,CAG/CrK,MAAKotC,oBAGL,IACIpC,IADchrC,KAAKkP,QAAQimB,YACTn1B,KAAKkP,QAAQ87B,iBAC/BC,EAAkBjrC,KAAKkP,QAAQ+7B,eAGnC5kC,GAAMgnC,iBAAmBrC,EAAkB3kC,EAAMinC,gBAAkB,EACnEjnC,EAAMknC,iBAAmBtC,EAAkB5kC,EAAMmnC,gBAAkB,EACnEnnC,EAAMkN,OAASlN,EAAMgnC,iBAAmBhnC,EAAMknC,iBAC9ClnC,EAAMiN,MAAQylB,EAAW/H,YAEzB3qB,EAAMqnC,gBAAkB1tC,KAAKu1B,KAAKC,SAAS91B,KAAK6T,OAASlN,EAAMknC,kBACnC,OAAvBr+B,EAAQimB,YAAuBn1B,KAAKu1B,KAAKC,SAASlR,OAAO/Q,OAASvT,KAAKu1B,KAAKC,SAASvtB,IAAIsL,QAC9FlN,EAAMonC,eAAiB,EACvBpnC,EAAMunC,gBAAkBvnC,EAAMqnC,gBAAkBrnC,EAAMknC,iBACtDlnC,EAAMsnC,eAAiB,CAGvB,IAAI+O,GAAwB3jB,EAAW4jB,YACnCC,EAAwB/vC,EAAW8vC,WAsBvC,OArBA5jB,GAAW5uB,YAAc4uB,EAAW5uB,WAAWyH,YAAYmnB,GAC3DlsB,EAAW1C,YAAc0C,EAAW1C,WAAWyH,YAAY/E,GAE3DksB,EAAWrrB,MAAM6F,OAASvT,KAAKqG,MAAMkN,OAAS,KAE9CvT,KAAK68C,iBAGDH,EACFryC,EAAOgI,aAAa0mB,EAAY2jB,GAGhCryC,EAAO6H,YAAY6mB,GAEjB6jB,EACF58C,KAAKu1B,KAAK5E,IAAIuZ,mBAAmB73B,aAAaxF,EAAY+vC,GAG1D58C,KAAKu1B,KAAK5E,IAAIuZ,mBAAmBh4B,YAAYrF,GAGxC7M,KAAK4pC,cAAgB6S,GAO9Bx5C,EAASiR,UAAU2oC,eAAiB,WAClC,GAAI1nB,GAAcn1B,KAAKkP,QAAQimB,YAG3B9kB,EAAQ1P,EAAKuG,QAAQlH,KAAKu1B,KAAKe,MAAMjmB,MAAO,UAC5CC,EAAM3P,EAAKuG,QAAQlH,KAAKu1B,KAAKe,MAAMhmB,IAAK,UACxCwsC,EAAgB98C,KAAKu1B,KAAK50B,KAAKu1B,OAA2C,GAAnCl2B,KAAKqG,MAAM0oC,gBAAkB,KAAS1nC,UAC7E+1B,EAAc0f,EAAgBn7C,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAKu1B,KAAKe,MAAOwmB,EAC3G1f,IAAep9B,KAAKu1B,KAAK50B,KAAKu1B,OAAO,GAAG7uB,SAExC,IAAI8hB,GAAO,GAAIpnB,GAAS,GAAI6C,MAAKyL,GAAQ,GAAIzL,MAAK0L,GAAM8sB,EAAap9B,KAAKu1B,KAAKI,YAC3E31B,MAAKkP,QAAQq0B,QACfpa,EAAK6a,UAAUhkC,KAAKkP,QAAQq0B,QAE1BvjC,KAAKkP,QAAQ2mB,UACf1M,EAAK8b,SAASjlC,KAAKkP,QAAQ2mB,UAE7B71B,KAAKmpB,KAAOA,CAKZ,IAAIwH,GAAM3wB,KAAK2wB,GACfA,GAAIlf,UAAUi6B,MAAQ/a,EAAI+a,MAC1B/a,EAAIlf,UAAU6qC,WAAa3rB,EAAI2rB,WAC/B3rB,EAAIlf,UAAU8qC,WAAa5rB,EAAI4rB,WAC/B5rB,EAAI+a,SACJ/a,EAAI2rB,cACJ3rB,EAAI4rB,aAEJ,IAAIQ,GAEA7d,EAGA8d,EAGA50C,EAPAoK,EAAI,EAEJyqC,EAAQ,EACR3pC,EAAQ,EAER4pC,EAAmBr2C,OACnBzC,EAAM,CAIV,KADA+kB,EAAK+a,QACE/a,EAAK0V,WAAmB,IAANz6B,GACvBA,IAEA24C,EAAM5zB,EAAKC,aACX8V,EAAU/V,EAAK+V,UACf92B,EAAY+gB,EAAK0c,eAEjBoX,EAAQzqC,EACRA,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAASinB,GAC5BzpC,EAAQd,EAAIyqC,EACRD,IACFA,EAAStvC,MAAM4F,MAAQA,EAAQ,MAG7BtT,KAAKkP,QAAQ87B,iBACfhrC,KAAKm9C,kBAAkB3qC,EAAG2W,EAAKwc,gBAAiBxQ,EAAa/sB,GAG3D82B,GAAWl/B,KAAKkP,QAAQ+7B,iBACtBz4B,EAAI,IACkB3L,QAApBq2C,IACFA,EAAmB1qC,GAErBxS,KAAKo9C,kBAAkB5qC,EAAG2W,EAAKyc,gBAAiBzQ,EAAa/sB,IAE/D40C,EAAWh9C,KAAKq9C,kBAAkB7qC,EAAG2iB,EAAa/sB,IAGlD40C,EAAWh9C,KAAKs9C,kBAAkB9qC,EAAG2iB,EAAa/sB,GAGpD+gB,EAAKE,MAIP,IAAIrpB,KAAKkP,QAAQ+7B,gBAAiB,CAChC,GAAIsS,GAAWv9C,KAAKu1B,KAAK50B,KAAKu1B,OAAO,GACjCsnB,EAAWr0B,EAAKyc,cAAc2X,GAC9BE,EAAYD,EAASx3C,QAAUhG,KAAKqG,MAAMyoC,gBAAkB,IAAM,IAE9CjoC,QAApBq2C,GAA6CA,EAAZO,IACnCz9C,KAAKo9C,kBAAkB,EAAGI,EAAUroB,EAAa/sB,GAKrDzH,EAAKiI,QAAQ5I,KAAK2wB,IAAIlf,UAAW,SAAUisC,GACzC,KAAOA,EAAI13C,QAAQ,CACjB,GAAI2B,GAAO+1C,EAAIC,KACXh2C,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWyH,YAAYjK,OAcpC1E,EAASiR,UAAUipC,kBAAoB,SAAU3qC,EAAG8X,EAAM6K,EAAa/sB,GAErE,GAAI4K,GAAQhT,KAAK2wB,IAAIlf,UAAU8qC,WAAWxqC,OAE1C,KAAKiB,EAAO,CAEV,GAAIG,GAAUnB,SAASi9B,eAAe,GACtCj8B,GAAQhB,SAASM,cAAc,OAC/BU,EAAMd,YAAYiB,GAClBnT,KAAK2wB,IAAIoI,WAAW7mB,YAAYc,GAElChT,KAAK2wB,IAAI4rB,WAAWh0C,KAAKyK,GAEzBA,EAAM4qC,WAAW,GAAGC,UAAYvzB,EAEhCtX,EAAMtF,MAAMzF,IAAsB,OAAfktB,EAAyBn1B,KAAKqG,MAAMknC,iBAAmB,KAAQ,IAClFv6B,EAAMtF,MAAM7F,KAAO2K,EAAI,KACvBQ,EAAM5K,UAAY,cAAgBA,GAYpCnF,EAASiR,UAAUkpC,kBAAoB,SAAU5qC,EAAG8X,EAAM6K,EAAa/sB,GAErE,GAAI4K,GAAQhT,KAAK2wB,IAAIlf,UAAU6qC,WAAWvqC,OAE1C,KAAKiB,EAAO,CAEV,GAAIG,GAAUnB,SAASi9B,eAAe3kB,EACtCtX,GAAQhB,SAASM,cAAc,OAC/BU,EAAMd,YAAYiB,GAClBnT,KAAK2wB,IAAIoI,WAAW7mB,YAAYc,GAElChT,KAAK2wB,IAAI2rB,WAAW/zC,KAAKyK,GAEzBA,EAAM4qC,WAAW,GAAGC,UAAYvzB,EAChCtX,EAAM5K,UAAY,cAAgBA,EAGlC4K,EAAMtF,MAAMzF,IAAsB,OAAfktB,EAAwB,IAAOn1B,KAAKqG,MAAMgnC,iBAAoB,KACjFr6B,EAAMtF,MAAM7F,KAAO2K,EAAI,MAWzBvP,EAASiR,UAAUopC,kBAAoB,SAAU9qC,EAAG2iB,EAAa/sB,GAE/D,GAAIqoB,GAAOzwB,KAAK2wB,IAAIlf,UAAUi6B,MAAM35B,OAC/B0e,KAEHA,EAAOze,SAASM,cAAc,OAC9BtS,KAAK2wB,IAAI9jB,WAAWqF,YAAYue,IAElCzwB,KAAK2wB,IAAI+a,MAAMnjC,KAAKkoB,EAEpB,IAAIpqB,GAAQrG,KAAKqG,KAYjB,OAVEoqB,GAAK/iB,MAAMzF,IADM,OAAfktB,EACe9uB,EAAMknC,iBAAmB,KAGzBvtC,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAAS,KAEnDkd,EAAK/iB,MAAM6F,OAASlN,EAAMqnC,gBAAkB,KAC5Cjd,EAAK/iB,MAAM7F,KAAQ2K,EAAInM,EAAMonC,eAAiB,EAAK,KAEnDhd,EAAKroB,UAAY,uBAAyBA,EAEnCqoB,GAWTxtB,EAASiR,UAAUmpC,kBAAoB,SAAU7qC,EAAG2iB,EAAa/sB,GAE/D,GAAIqoB,GAAOzwB,KAAK2wB,IAAIlf,UAAUi6B,MAAM35B,OAC/B0e,KAEHA,EAAOze,SAASM,cAAc,OAC9BtS,KAAK2wB,IAAI9jB,WAAWqF,YAAYue,IAElCzwB,KAAK2wB,IAAI+a,MAAMnjC,KAAKkoB,EAEpB,IAAIpqB,GAAQrG,KAAKqG,KAYjB,OAVEoqB,GAAK/iB,MAAMzF,IADM,OAAfktB,EACe,IAGAn1B,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAAS,KAEnDkd,EAAK/iB,MAAM7F,KAAQ2K,EAAInM,EAAMsnC,eAAiB,EAAK,KACnDld,EAAK/iB,MAAM6F,OAASlN,EAAMunC,gBAAkB,KAE5Cnd,EAAKroB,UAAY,uBAAyBA,EAEnCqoB,GAQTxtB,EAASiR,UAAUk5B,mBAAqB,WAKjCptC,KAAK2wB,IAAIue,mBACZlvC,KAAK2wB,IAAIue,iBAAmBl9B,SAASM,cAAc,OACnDtS,KAAK2wB,IAAIue,iBAAiB9mC,UAAY,qBACtCpI,KAAK2wB,IAAIue,iBAAiBxhC,MAAMkX,SAAW,WAE3C5kB,KAAK2wB,IAAIue,iBAAiBh9B,YAAYF,SAASi9B,eAAe,MAC9DjvC,KAAK2wB,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAIue,mBAE3ClvC,KAAKqG,MAAMinC,gBAAkBttC,KAAK2wB,IAAIue,iBAAiBrpB,aACvD7lB,KAAKqG,MAAM0oC,eAAiB/uC,KAAK2wB,IAAIue,iBAAiB1uB,YAGjDxgB,KAAK2wB,IAAIye,mBACZpvC,KAAK2wB,IAAIye,iBAAmBp9B,SAASM,cAAc,OACnDtS,KAAK2wB,IAAIye,iBAAiBhnC,UAAY,qBACtCpI,KAAK2wB,IAAIye,iBAAiB1hC,MAAMkX,SAAW,WAE3C5kB,KAAK2wB,IAAIye,iBAAiBl9B,YAAYF,SAASi9B,eAAe,MAC9DjvC,KAAK2wB,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAIye,mBAE3CpvC,KAAKqG,MAAMmnC,gBAAkBxtC,KAAK2wB,IAAIye,iBAAiBvpB,aACvD7lB,KAAKqG,MAAMyoC,eAAiB9uC,KAAK2wB,IAAIye,iBAAiB5uB,aAGxD3gB,EAAOD,QAAUqD,GAKb,SAASpD,EAAQD,EAASM,GAkC9B,QAASgD,GAASsX,EAAW/G,EAAMvE,GACjC,KAAMlP,eAAgBkD,IACpB,KAAM,IAAIuX,aAAY,mDAGxBza,MAAK89C,0BACL99C,KAAK+9C,0BAGL/9C,KAAK0a,iBAAmBF,EAGxBxa,KAAKg+C,kBAAoB,GACzBh+C,KAAKi+C,eAAiB,IAAOj+C,KAAKg+C,kBAClCh+C,KAAKk+C,WAAa,EAClBl+C,KAAKm+C,YAAc,EACnBn+C,KAAKo+C,gBAAiB,EACtBp+C,KAAKq+C,wBAA0B,GAE/Br+C,KAAKs+C,cAAe,EAEpBt+C,KAAKu+C,kBAAoBvqC,IAAI,KAAKwqC,KAAK,KAAKC,SAAS,KAAKC,QAAQ,KAAKC,IAAI,KAE3E,IAAIC,GAAwB,SAAUz6C,EAAIC,EAAIC,EAAMC,GAClD,GAAIF,GAAOD,EACT,MAAO,EAGP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAGE,EAAQH,GAAKI,GAIpCvE,MAAKi1B,gBACH4pB,OACED,sBAAuBA,EACvBE,KAAM,EACNC,UAAW,GACXC,UAAW,GACX1yB,OAAQ,GACR2yB,MAAO,UACPC,MAAOr4C,OACPqhB,SAAU,GACVC,SAAU,GACVg3B,UAAW,QACXC,SAAU,GACVC,SAAU,UACVC,SAAUz4C,OACV04C,gBAAiB,EACjBC,gBAAiB,UACjBC,kBAAmB,EACnBC,oBAAoB,EACpBC,YAAa,GACbC,YAAa,GACbC,mBAAoB,GACpBC,MAAO,GACPv0C,OACIuB,OAAQ,UACRD,WAAY,UACdE,WACED,OAAQ,UACRD,WAAY,WAEdG,OACEF,OAAQ,UACRD,WAAY,YAGhB6F,MAAO7L,OACPma,YAAa,EACb++B,oBAAqBl5C,QAEvBm5C,OACEpB,sBAAuBA,EACvB12B,SAAU,EACVC,SAAU,GACV7U,MAAO,EACP2sC,yBAA0B,EAC1BC,WAAY,IACZxyC,MAAO,OACPnC,OACEA,MAAM,UACNwB,UAAU,UACVC,MAAO,WAETxB,QAAQ,EACR2zC,UAAW,UACXC,SAAU,GACVC,SAAU,QACVC,SAAU,QACVC,gBAAiB,EACjBC,gBAAiB,QACjBW,eAAe,aACfC,iBAAkB,EAClBC,MACEr6C,OAAQ,GACRs6C,IAAK,EACLC,UAAW15C,QAEb25C,aAAc,OACdC,cAAc,GAEhBC,kBAAiB,EACjBC,SACEC,WACEzxC,SAAS,EACT0xC,cAAe,EACfC,sBAAuB,KACvBC,eAAgB,GAChBC,aAAc,GACdC,eAAgB,IAChBC,QAAS,KAEXC,WACEJ,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXG,uBACElyC,SAAS,EACT4xC,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXA,QAAS,KACTH,eAAgB,KAChBC,aAAc,KACdC,eAAgB,MAElBK,YACEnyC,SAAS,EACToyC,gBAAiB,IACjBC,iBAAiB,IACjBC,cAAc,IACdC,eAAgB,GAChBC,qBAAsB,GACtBC,gBAAiB,IACjBC,oBAAqB,GACrBC,mBAAoB,EACpBC,YAAa,IACbC,mBAAoB,GACpBC,sBAAuB,GACvBC,WAAY,GACZC,aAAc7uC,MAAQ,EACRC,OAAQ,EACR+Y,OAAQ,GACtB81B,sBAAuB,IACvBC,kBAAmB,GACnBC,uBAAwB,EACxBC,eAAe,GAEjBC,YACErzC,SAAS,GAEXszC,UACEtzC,SAAS,EACTuzC,OAAQlwC,EAAG,GAAIC,EAAG,GAAIyvB,KAAM,KAC5BygB,cAAc,GAEhBC,kBACEzzC,SAAS,EACT0zC,kBAAkB,GAEpBC,oBACE3zC,SAAQ,EACR4zC,gBAAiB,IACjBC,YAAa,IACb9lB,UAAW,KACX+lB,OAAQ,WAEVC,wBAAwB,EACxBC,cACEh0C,SAAS,EACTi0C,SAAS,EACTj8C,KAAM,aACNk8C,UAAW,IAEbC,YAAc,GACdC,YAAc,GACdC,WAAW,EACXC,wBAAyB,IACzBC,uBAAuB,EACvBtd,OAAQ,KACR6D,QAASA,EACT7iB,SACE3N,MAAO,IACP0lC,UAAW,QACXC,SAAU,GACVC,SAAU,UACV9zC,OACEuB,OAAQ,OACRD,WAAY,YAGhB82C,aAAa,EACbC,WAAW,EACXjkB,UAAU,EACV3yB,OAAO,EACP62C,iBAAiB,EACjBC,iBAAiB,EACjBxwC,MAAQ,OACRC,OAAS,OACT+/B,YAAY,EACZyQ,kBAAkB,GAEpB/jD,KAAKgkD,UAAYrjD,EAAKgF,UAAW3F,KAAKi1B,gBACtCj1B,KAAKikD,WAAa,EAGlBjkD,KAAKkkD,UAAYrF,SAASmB,UAC1BhgD,KAAKmkD,oBAAqB,EAC1BnkD,KAAKokD,qBACLpkD,KAAKqkD,uBAGLrkD,KAAKskD,eAAiB,EAAEtkD,KAAKg+C,kBAC7Bh+C,KAAKukD,wBAA0B,iBAC/BvkD,KAAKwkD,WAAY,EACjBxkD,KAAKykD,WAAa,EAClBzkD,KAAK0kD,YAAc,EACnB1kD,KAAK2kD,YAAc,EACnB3kD,KAAK4kD,kBAAoB,EACzB5kD,KAAK6kD,kBAAoB,EACzB7kD,KAAK8kD,eAAiB,KACtB9kD,KAAK+kD,mBAAqB,KAC1B/kD,KAAKglD,UAAY,EACjBhlD,KAAKilD,iBAAkB,CAGvB;GAAI9hD,GAAUnD,IACdA,MAAK+0B,OAAS,GAAI1xB,GAClBrD,KAAKklD,OAAS,GAAI5hD,GAClBtD,KAAKklD,OAAOC,kBAAkB,WAC5BhiD,EAAQiiD,mBAIVplD,KAAKqlD,WAAa,EAClBrlD,KAAKslD,WAAa,EAClBtlD,KAAKulD,cAAgB,EAIrBvlD,KAAKwlD,qBAELxlD,KAAKs1B,UAELt1B,KAAKylD,oBAELzlD,KAAK0lD,qBAEL1lD,KAAK2lD,uBAEL3lD,KAAK4lD,uBAIL5lD,KAAK6lD,gBAAgB7lD,KAAKsgB,MAAME,YAAc,EAAGxgB,KAAKsgB,MAAMuF,aAAe,GAC3E7lB,KAAKie,UAAU,GACfje,KAAKiU,WAAW/E,GAGhBlP,KAAK8lD,yBAA0B,EAC/B9lD,KAAK+lD,mBACL/lD,KAAKgmD,sBAAuB,EAC5BhmD,KAAKimD,YAAa,EAClBjmD,KAAKyjD,wBAA0B,KAC/BzjD,KAAKkmD,eAAgB,EAGrBlmD,KAAKmmD,oBACLnmD,KAAKomD,0BACLpmD,KAAKqmD,eACLrmD,KAAK6+C,SACL7+C,KAAKggD,SAGLhgD,KAAKsmD,eAAqB9zC,EAAK,EAAEC,EAAK,GACtCzS,KAAKumD,mBAAqB/zC,EAAK,EAAEC,EAAK,GACtCzS,KAAKwmD,iBAAmBh0C,EAAK,EAAEC,EAAK,GACpCzS,KAAKymD,cACLzmD,KAAKuE,MAAQ,EACbvE,KAAK0mD,cAAgB1mD,KAAKuE,MAG1BvE,KAAK2mD,UAAY,KACjB3mD,KAAK4mD,UAAY,KAGjB5mD,KAAK6mD,gBACH7yC,IAAO,SAAUnK,EAAOgL,GACtB1R,EAAQ2jD,UAAUjyC,EAAO5S,OACzBkB,EAAQkN,SAEVuF,OAAU,SAAU/L,EAAOgL,GACzB1R,EAAQ4jD,aAAalyC,EAAO5S,OAC5BkB,EAAQkN,SAEV+G,OAAU,SAAUvN,EAAOgL,GACzB1R,EAAQ6jD,aAAanyC,EAAO5S,OAC5BkB,EAAQkN,UAGZrQ,KAAKinD,gBACHjzC,IAAO,SAAUnK,EAAOgL,GACtB1R,EAAQ+jD,UAAUryC,EAAO5S,OACzBkB,EAAQkN,SAEVuF,OAAU,SAAU/L,EAAOgL,GACzB1R,EAAQgkD,aAAatyC,EAAO5S,OAC5BkB,EAAQkN,SAEV+G,OAAU,SAAUvN,EAAOgL,GACzB1R,EAAQikD,aAAavyC,EAAO5S,OAC5BkB,EAAQkN,UAKZrQ,KAAKqnD,QAAS,EACdrnD,KAAKsnD,MAAQzgD,OAGb7G,KAAK+Y,QAAQtF,EAAKzT,KAAKgkD,UAAU1C,WAAWnyC,SAAWnP,KAAKgkD,UAAUlB,mBAAmB3zC,SAGzFnP,KAAKs+C,cAAe,EAC6B,GAA7Ct+C,KAAKgkD,UAAUlB,mBAAmB3zC,QACpCnP,KAAKunD,2BAI2B,GAA5BvnD,KAAKgkD,UAAUR,WACjBxjD,KAAKwnD,YAAYj3C,SAAS,IAAI,EAAMvQ,KAAKgkD,UAAU1C,WAAWnyC,SAK9DnP,KAAKgkD,UAAU1C,WAAWnyC,SAC5BnP,KAAKynD,sBAvXT,GAAIzpC,GAAU9d,EAAoB,IAC9BwmC,EAASxmC,EAAoB,IAC7BwnD,EAAWxnD,EAAoB,IAC/BS,EAAOT,EAAoB,GAC3BugC,EAAavgC,EAAoB,IACjCW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BuD,EAAYvD,EAAoB,IAChCwD,EAAcxD,EAAoB,IAClCmD,EAASnD,EAAoB,IAC7BoD,EAASpD,EAAoB,IAC7BqD,EAAOrD,EAAoB,IAC3BkD,EAAOlD,EAAoB,IAC3BsD,EAAQtD,EAAoB,IAC5BynD,EAAcznD,EAAoB,IAClC0nD,EAAY1nD,EAAoB,IAChC+pC,EAAU/pC,EAAoB,GAGlCA,GAAoB,IAyWpB8d,EAAQ9a,EAAQgR,WAOhBhR,EAAQgR,UAAU4pC,wBAA0B,WAC1C,GAAI+J,GAAct+C,UAAUC,UAAU88B,aACtCtmC,MAAK8nD,iBAAkB,EACgB,IAAnCD,EAAY7gD,QAAQ,YACtBhH,KAAK8nD,iBAAkB,EAEiB,IAAjCD,EAAY7gD,QAAQ,WACvB6gD,EAAY7gD,QAAQ,WAAa,KACnChH,KAAK8nD,iBAAkB,IAa7B5kD,EAAQgR,UAAU6zC,eAAiB,WAIjC,IAAK,GAHDC,GAAUh2C,SAASi2C,qBAAsB,UAGpCpiD,EAAI,EAAGA,EAAImiD,EAAQhiD,OAAQH,IAAK,CACvC,GAAIqiD,GAAMF,EAAQniD,GAAGqiD,IACjBrjD,EAAQqjD,GAAO,qBAAqBnjD,KAAKmjD,EAC7C,IAAIrjD,EAEF,MAAOqjD,GAAI9d,UAAU,EAAG8d,EAAIliD,OAASnB,EAAM,GAAGmB,QAIlD,MAAO,OAQT9C,EAAQgR,UAAUi0C,UAAY,SAASC,GACrC,GAAsDC,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,IAAIL,EAAcpiD,OAAS,EACzB,IAAK,GAAIH,GAAI,EAAGA,EAAIuiD,EAAcpiD,OAAQH,IACxCwiD,EAAOroD,KAAK6+C,MAAMuJ,EAAcviD,IAC5B2iD,EAAQH,EAAKK,YAAgB,OAC/BF,EAAOH,EAAKK,YAAY7gD,MAEtB4gD,EAAQJ,EAAKK,YAAiB,QAChCD,EAAOJ,EAAKK,YAAYrgC,OAEtBigC,EAAQD,EAAKK,YAAkB,SACjCJ,EAAOD,EAAKK,YAAYzgD,KAEtBsgD,EAAQF,EAAKK,YAAe,MAC9BH,EAAOF,EAAKK,YAAYpkC,YAK5B,KAAK,GAAIqkC,KAAU3oD,MAAK6+C,MAClB7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5BN,EAAOroD,KAAK6+C,MAAM8J,GACdH,EAAQH,EAAKK,YAAgB,OAC/BF,EAAOH,EAAKK,YAAY7gD,MAEtB4gD,EAAQJ,EAAKK,YAAiB,QAChCD,EAAOJ,EAAKK,YAAYrgC,OAEtBigC,EAAQD,EAAKK,YAAkB,SACjCJ,EAAOD,EAAKK,YAAYzgD,KAEtBsgD,EAAQF,EAAKK,YAAe,MAC9BH,EAAOF,EAAKK,YAAYpkC,QAShC,OAHY,MAARkkC,GAAuB,MAARC,GAAwB,KAARH,GAAuB,MAARC,IAChDD,EAAO,EAAGC,EAAO,EAAGC,EAAO,EAAGC,EAAO,IAE/BD,KAAMA,EAAMC,KAAMA,EAAMH,KAAMA,EAAMC,KAAMA,IASpDrlD,EAAQgR,UAAU00C,YAAc,SAAStyB,GACvC,OAAQ9jB,EAAI,IAAO8jB,EAAMmyB,KAAOnyB,EAAMkyB,MAC9B/1C,EAAI,IAAO6jB,EAAMiyB,KAAOjyB,EAAMgyB,QAUxCplD,EAAQgR,UAAUszC,WAAa,SAASt4C,EAAS25C,EAAaC,GAC5D9oD,KAAKi3B,SAAQ,GAEYpwB,SAArBgiD,IAAiCA,GAAc,GAC1BhiD,SAArBiiD,IAAiCA,GAAe,GACpCjiD,SAAZqI,IAAwBA,GAAW2vC,WACjBh4C,SAAlBqI,EAAQ2vC,QACV3vC,EAAQ2vC,SAGV,IAAIvoB,GACAyyB,CAEJ,IAAmB,GAAfF,EAAqB,CAEvB,GAAIG,GAAkB,CACtB,KAAK,GAAIL,KAAU3oD,MAAK6+C,MACtB,GAAI7+C,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrC,GAAIN,GAAOroD,KAAK6+C,MAAM8J,EACS,IAA3BN,EAAKY,qBACPD,GAAmB,GAIzB,GAAIA,EAAkB,GAAMhpD,KAAKqmD,YAAYrgD,OAE3C,WADAhG,MAAKwnD,WAAWt4C,GAAQ,EAAM45C,EAIhCxyB,GAAQt2B,KAAKmoD,UAAUj5C,EAAQ2vC,MAE/B,IAAIqK,GAAgBlpD,KAAKqmD,YAAYrgD,MAIjC+iD,GAH+B,GAA/B/oD,KAAKgkD,UAAUb,aACwB,GAArCnjD,KAAKgkD,UAAU1C,WAAWnyC,SAC5B+5C,GAAiBlpD,KAAKgkD,UAAU1C,WAAWC,gBAC/B,UAAY2H,EAAgB,WAAa,SAGzC,QAAUA,EAAgB,QAAU,SAIT,GAArClpD,KAAKgkD,UAAU1C,WAAWnyC,SAC1B+5C,GAAiBlpD,KAAKgkD,UAAU1C,WAAWC,gBACjC,YAAc2H,EAAgB,YAAc,cAG5C,YAAcA,EAAgB,aAAe,SAK7D,IAAIC,GAAS3kD,KAAKL,IAAInE,KAAKsgB,MAAMC,OAAOC,YAAc,IAAKxgB,KAAKsgB,MAAMC,OAAOsF,aAAe,IAC5FkjC,IAAaI,MAEV,CACH7yB,EAAQt2B,KAAKmoD,UAAUj5C,EAAQ2vC,MAC/B,IAAIhE,GAAgD,IAApCr2C,KAAKknB,IAAI4K,EAAMmyB,KAAOnyB,EAAMkyB,MACxCY,EAAgD,IAApC5kD,KAAKknB,IAAI4K,EAAMiyB,KAAOjyB,EAAMgyB,MAExCe,EAAarpD,KAAKsgB,MAAMC,OAAOC,YAAeq6B,EAC9CyO,EAAatpD,KAAKsgB,MAAMC,OAAOsF,aAAeujC,CAClDL,GAA2BO,GAAdD,EAA4BA,EAAaC,EAGpDP,EAAY,IACdA,EAAY,EAId,IAAIh8B,GAAS/sB,KAAK4oD,YAAYtyB,EAC9B,IAAoB,GAAhBwyB,EAAuB,CACzB,GAAI55C,IAAW0V,SAAUmI,EAAQxoB,MAAOwkD,EAAWQ,UAAWr6C,EAC9DlP,MAAK6oB,OAAO3Z,GACZlP,KAAKqnD,QAAS,EACdrnD,KAAKqQ,YAGL0c,GAAOva,GAAKu2C,EACZh8B,EAAOta,GAAKs2C,EACZh8B,EAAOva,GAAK,GAAMxS,KAAKsgB,MAAMC,OAAOC,YACpCuM,EAAOta,GAAK,GAAMzS,KAAKsgB,MAAMC,OAAOsF,aACpC7lB,KAAKie,UAAU8qC,GACf/oD,KAAK6lD,iBAAiB94B,EAAOva,GAAGua,EAAOta,IAS3CvP,EAAQgR,UAAUs1C,qBAAuB,WACvCxpD,KAAKypD,qBACL,KAAK,GAAIC,KAAO1pD,MAAK6+C,MACf7+C,KAAK6+C,MAAM14C,eAAeujD,IAC5B1pD,KAAKqmD,YAAY99C,KAAKmhD,IAiB5BxmD,EAAQgR,UAAU6E,QAAU,SAAStF,EAAMq1C,GAWzC,GAVqBjiD,SAAjBiiD,IACFA,GAAe,GAIjB9oD,KAAK2pD,cAAa,GAGlB3pD,KAAKs+C,cAAe,EAEhB7qC,GAAQA,EAAKid,MAAQjd,EAAKorC,OAASprC,EAAKusC,OAC1C,KAAM,IAAIvlC,aAAY,iGAYxB,IAP+C,GAA3Cza,KAAKgkD,UAAUpB,iBAAiBzzC,SAClCnP,KAAK4pD,wBAIP5pD,KAAKiU,WAAWR,GAAQA,EAAKvE,SAEzBuE,GAAQA,EAAKid,KAEf,GAAGjd,GAAQA,EAAKid,IAAK,CACnB,GAAIm5B,GAAUpmD,EAAUqmD,WAAWr2C,EAAKid,IAExC,YADA1wB,MAAK+Y,QAAQ8wC,QAIZ,IAAIp2C,GAAQA,EAAKs2C,OAEpB,GAAGt2C,GAAQA,EAAKs2C,MAAO,CACrB,GAAIC,GAAYtmD,EAAYumD,WAAWx2C,EAAKs2C,MAE5C,YADA/pD,MAAK+Y,QAAQixC,QAKfhqD,MAAKkqD,UAAUz2C,GAAQA,EAAKorC,OAC5B7+C,KAAKmqD,UAAU12C,GAAQA,EAAKusC,MAE9BhgD,MAAKoqD,mBACe,GAAhBtB,IAC+C,GAA7C9oD,KAAKgkD,UAAUlB,mBAAmB3zC,SACpCnP,KAAKqqD,eACLrqD,KAAKunD,4BAI2B,GAA5BvnD,KAAKgkD,UAAUR,WACjBxjD,KAAKsqD,aAGTtqD,KAAKqQ,SAEPrQ,KAAKs+C,cAAe,GAOtBp7C,EAAQgR,UAAUD,WAAa,SAAU/E,GACvC,GAAIA,EAAS,CACX,GAAIhJ,GACAyI,GAAU,QAAQ,QAAQ,eAAe,qBAAqB,aAAa,aAC7E,WAAW,mBAAmB,QAAQ,SAAS,aAAa,YAAY,WAAW,aAQrF,IALAhO,EAAKoG,uBAAuB4H,EAAO3O,KAAKgkD,UAAW90C,GACnDvO,EAAKoG,wBAAwB,SAAS/G,KAAKgkD,UAAUnF,MAAO3vC,EAAQ2vC,OACpEl+C,EAAKoG,wBAAwB,QAAQ,UAAU/G,KAAKgkD,UAAUhE,MAAO9wC,EAAQ8wC,OAE7EhgD,KAAK+0B,OAAOgvB,iBAAmB/jD,KAAKgkD,UAAUD,iBAC1C70C,EAAQyxC,UACVhgD,EAAKqO,aAAahP,KAAKgkD,UAAUrD,QAASzxC,EAAQyxC,QAAQ,aAC1DhgD,EAAKqO,aAAahP,KAAKgkD,UAAUrD,QAASzxC,EAAQyxC,QAAQ,aAEtDzxC,EAAQyxC,QAAQU,uBAAuB,CACzCrhD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAU,EAC5CnP,KAAKgkD,UAAUrD,QAAQU,sBAAsBlyC,SAAU,EACvDnP,KAAKgkD,UAAUrD,QAAQC,UAAUzxC,SAAU,CAC3C,KAAKjJ,IAAQgJ,GAAQyxC,QAAQU,sBACvBnyC,EAAQyxC,QAAQU,sBAAsBl7C,eAAeD,KACvDlG,KAAKgkD,UAAUrD,QAAQU,sBAAsBn7C,GAAQgJ,EAAQyxC,QAAQU,sBAAsBn7C,IAkDnG,GA5CIgJ,EAAQqkC,QAAQvzC,KAAKu+C,iBAAiBvqC,IAAM9E,EAAQqkC,OACpDrkC,EAAQq7C,SAASvqD,KAAKu+C,iBAAiBC,KAAOtvC,EAAQq7C,QACtDr7C,EAAQs7C,aAAaxqD,KAAKu+C,iBAAiBE,SAAWvvC,EAAQs7C,YAC9Dt7C,EAAQu7C,YAAYzqD,KAAKu+C,iBAAiBG,QAAUxvC,EAAQu7C,WAC5Dv7C,EAAQw7C,WAAW1qD,KAAKu+C,iBAAiBI,IAAMzvC,EAAQw7C,UAE3D/pD,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,gBAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,sBAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,cAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,cAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,YAC1CvO,EAAKqO,aAAahP,KAAKgkD,UAAW90C,EAAQ,oBAGtCA,EAAQ0zC,mBACV5iD,KAAK2qD,SAAW3qD,KAAKgkD,UAAUpB,iBAAiBC,kBAK9C3zC,EAAQ8wC,QACkBn5C,SAAxBqI,EAAQ8wC,MAAMz0C,QACZ5K,EAAK8D,SAASyK,EAAQ8wC,MAAMz0C,QAC9BvL,KAAKgkD,UAAUhE,MAAMz0C,SACrBvL,KAAKgkD,UAAUhE,MAAMz0C,MAAMA,MAAQ2D,EAAQ8wC,MAAMz0C,MACjDvL,KAAKgkD,UAAUhE,MAAMz0C,MAAMwB,UAAYmC,EAAQ8wC,MAAMz0C,MACrDvL,KAAKgkD,UAAUhE,MAAMz0C,MAAMyB,MAAQkC,EAAQ8wC,MAAMz0C,QAGf1E,SAA9BqI,EAAQ8wC,MAAMz0C,MAAMA,QAA0BvL,KAAKgkD,UAAUhE,MAAMz0C,MAAMA,MAAQ2D,EAAQ8wC,MAAMz0C,MAAMA,OACnE1E,SAAlCqI,EAAQ8wC,MAAMz0C,MAAMwB,YAA0B/M,KAAKgkD,UAAUhE,MAAMz0C,MAAMwB,UAAYmC,EAAQ8wC,MAAMz0C,MAAMwB,WAC3ElG,SAA9BqI,EAAQ8wC,MAAMz0C,MAAMyB,QAA0BhN,KAAKgkD,UAAUhE,MAAMz0C,MAAMyB,MAAQkC,EAAQ8wC,MAAMz0C,MAAMyB,QAE3GhN,KAAKgkD,UAAUhE,MAAMQ,cAAe,GAGjCtxC,EAAQ8wC,MAAMb,WACWt4C,SAAxBqI,EAAQ8wC,MAAMz0C,QACZ5K,EAAK8D,SAASyK,EAAQ8wC,MAAMz0C,OAAmBvL,KAAKgkD,UAAUhE,MAAMb,UAAYjwC,EAAQ8wC,MAAMz0C,MAC3D1E,SAA9BqI,EAAQ8wC,MAAMz0C,MAAMA,QAAsBvL,KAAKgkD,UAAUhE,MAAMb,UAAYjwC,EAAQ8wC,MAAMz0C,MAAMA,SAK1G2D,EAAQ2vC,OACN3vC,EAAQ2vC,MAAMtzC,MAAO,CACvB,GAAIq/C,GAAcjqD,EAAKqL,WAAWkD,EAAQ2vC,MAAMtzC,MAChDvL,MAAKgkD,UAAUnF,MAAMtzC,MAAMsB,WAAa+9C,EAAY/9C,WACpD7M,KAAKgkD,UAAUnF,MAAMtzC,MAAMuB,OAAS89C,EAAY99C,OAChD9M,KAAKgkD,UAAUnF,MAAMtzC,MAAMwB,UAAUF,WAAa+9C,EAAY79C,UAAUF,WACxE7M,KAAKgkD,UAAUnF,MAAMtzC,MAAMwB,UAAUD,OAAS89C,EAAY79C,UAAUD,OACpE9M,KAAKgkD,UAAUnF,MAAMtzC,MAAMyB,MAAMH,WAAa+9C,EAAY59C,MAAMH,WAChE7M,KAAKgkD,UAAUnF,MAAMtzC,MAAMyB,MAAMF,OAAS89C,EAAY59C,MAAMF,OAGhE,GAAIoC,EAAQ6lB,OACV,IAAK,GAAI81B,KAAa37C,GAAQ6lB,OAC5B,GAAI7lB,EAAQ6lB,OAAO5uB,eAAe0kD,GAAY,CAC5C,GAAIn4C,GAAQxD,EAAQ6lB,OAAO81B,EAC3B7qD,MAAK+0B,OAAO/gB,IAAI62C,EAAWn4C,GAKjC,GAAIxD,EAAQkY,QAAS,CACnB,IAAKlhB,IAAQgJ,GAAQkY,QACflY,EAAQkY,QAAQjhB,eAAeD,KACjClG,KAAKgkD,UAAU58B,QAAQlhB,GAAQgJ,EAAQkY,QAAQlhB,GAG/CgJ,GAAQkY,QAAQ7b,QAClBvL,KAAKgkD,UAAU58B,QAAQ7b,MAAQ5K,EAAKqL,WAAWkD,EAAQkY,QAAQ7b,QAmBnE,GAfI,cAAgB2D,KACdA,EAAQ47C,WACL9qD,KAAK+qD,YACR/qD,KAAK+qD,UAAY,GAAInD,GAAU5nD,KAAKsgB,OACpCtgB,KAAK+qD,UAAUz2C,GAAG,SAAUtU,KAAKgrD,gBAAgBt1B,KAAK11B,QAIpDA,KAAK+qD,YACP/qD,KAAK+qD,UAAU12C,gBACRrU,MAAK+qD,YAKd77C,EAAQy8B,OACV,KAAM,IAAI/nC,OAAM,6EAMlB5D,MAAKwlD,qBAELxlD,KAAKirD,0BAELjrD,KAAKkrD,0BAELlrD,KAAKmrD,yBAGLnrD,KAAKorD,cAGLprD,KAAKgrD,kBAELhrD,KAAKqrD,uBACLrrD,KAAK2lB,QAAQ3lB,KAAKgkD,UAAU1wC,MAAOtT,KAAKgkD,UAAUzwC,QAClDvT,KAAKqnD,QAAS,EACmC,GAA7CrnD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKqQ,UAaTnN,EAAQgR,UAAUohB,QAAU,WAE1B,KAAOt1B,KAAK0a,iBAAiBgK,iBAC3B1kB,KAAK0a,iBAAiB9I,YAAY5R,KAAK0a,iBAAiBiK,WAgB1D,IAbA3kB,KAAKsgB,MAAQtO,SAASM,cAAc,OACpCtS,KAAKsgB,MAAMlY,UAAY,oBACvBpI,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKsgB,MAAM5S,MAAMmX,SAAW,SAC5B7kB,KAAKsgB,MAAMgrC,SAAW,IAKtBtrD,KAAKsgB,MAAMC,OAASvO,SAASM,cAAc,UAC3CtS,KAAKsgB,MAAMC,OAAO7S,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMC,QAE7BvgB,KAAKsgB,MAAMC,OAAOyH,WAQlB,CACH,GAAID,GAAM/nB,KAAKsgB,MAAMC,OAAOyH,WAAW,KACvChoB,MAAKikD,YAAcn8C,OAAOyjD,kBAAoB,IAAMxjC,EAAIyjC,8BAC9CzjC,EAAI0jC,2BACJ1jC,EAAI2jC,0BACJ3jC,EAAI4jC,yBACJ5jC,EAAI6jC,wBAA0B,GAGxC5rD,KAAKsgB,MAAMC,OAAOyH,WAAW,MAAM6jC,aAAa7rD,KAAKikD,WAAY,EAAG,EAAGjkD,KAAKikD,WAAY,EAAG,OAjB1D,CACjC,GAAIn/B,GAAW9S,SAASM,cAAe,MACvCwS,GAASpX,MAAMnC,MAAQ,MACvBuZ,EAASpX,MAAMqX,WAAc,OAC7BD,EAASpX,MAAMsX,QAAW,OAC1BF,EAASG,UAAa,mDACtBjlB,KAAKsgB,MAAMC,OAAOrO,YAAY4S,GAchC9kB,KAAKorD,eAQPloD,EAAQgR,UAAUk3C,YAAc,WAC9B,GAAIl2C,GAAKlV,IACW6G,UAAhB7G,KAAK8D,QACP9D,KAAK8D,OAAOgoD,UAEd9rD,KAAK0qC,QACL1qC,KAAK+rD,SACL/rD,KAAK8D,OAAS4iC,EAAO1mC,KAAKsgB,MAAMC,QAC9BoqB,iBAAiB,IAEnB3qC,KAAK8D,OAAOwQ,GAAG,MAAaY,EAAG82C,OAAOt2B,KAAKxgB,IAC3ClV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAG+2C,aAAav2B,KAAKxgB,IACjDlV,KAAK8D,OAAOwQ,GAAG,OAAaY,EAAGirB,QAAQzK,KAAKxgB,IAC5ClV,KAAK8D,OAAOwQ,GAAG,QAAaY,EAAGmrB,SAAS3K,KAAKxgB,IAC7ClV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAG8qB,aAAatK,KAAKxgB,IACjDlV,KAAK8D,OAAOwQ,GAAG,OAAaY,EAAG+qB,QAAQvK,KAAKxgB,IAC5ClV,KAAK8D,OAAOwQ,GAAG,UAAaY,EAAGgrB,WAAWxK,KAAKxgB,IAEhB,GAA3BlV,KAAKgkD,UAAUrkB,WACjB3/B,KAAK8D,OAAOwQ,GAAG,aAAmBY,EAAGkrB,cAAc1K,KAAKxgB,IACxDlV,KAAK8D,OAAOwQ,GAAG,iBAAmBY,EAAGkrB,cAAc1K,KAAKxgB,IACxDlV,KAAK8D,OAAOwQ,GAAG,QAAmBY,EAAGorB,SAAS5K,KAAKxgB,KAGrDlV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAGg3C,kBAAkBx2B,KAAKxgB,IAEtDlV,KAAKmsD,YAAczlB,EAAO1mC,KAAKsgB,OAC7BqqB,iBAAiB,IAEnB3qC,KAAKmsD,YAAY73C,GAAG,UAAWY,EAAGk3C,WAAW12B,KAAKxgB,IAGlDlV,KAAK0a,iBAAiBxI,YAAYlS,KAAKsgB,QAOzCpd,EAAQgR,UAAU82C,gBAAkB,WAClC,GAAI91C,GAAKlV,IACa6G,UAAlB7G,KAAK0nD,UACP1nD,KAAK0nD,SAASrzC,UAIdrU,KAAK0nD,SAAWA,EAD0B,GAAxC1nD,KAAKgkD,UAAUvB,SAASE,cACAnoC,UAAW1S,OAAQ8B,gBAAgB,IAGnC4Q,UAAWxa,KAAKsgB,MAAO1W,gBAAgB,IAGnE5J,KAAK0nD,SAAS2E,QAEVrsD,KAAKgkD,UAAUvB,SAAStzC,SAAWnP,KAAKssD,aAC1CtsD,KAAK0nD,SAAShyB,KAAK,KAAQ11B,KAAKusD,QAAQ72B,KAAKxgB,GAAQ,WACrDlV,KAAK0nD,SAAShyB,KAAK,KAAQ11B,KAAKwsD,aAAa92B,KAAKxgB,GAAK,SACvDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAKysD,UAAU/2B,KAAKxgB,GAAM,WACrDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAKwsD,aAAa92B,KAAKxgB,GAAK,SACvDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK0sD,UAAUh3B,KAAKxgB,GAAM,WACrDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK2sD,aAAaj3B,KAAKxgB,GAAK,SACvDlV,KAAK0nD,SAAShyB,KAAK,QAAQ11B,KAAK4sD,WAAWl3B,KAAKxgB,GAAK,WACrDlV,KAAK0nD,SAAShyB,KAAK,QAAQ11B,KAAK2sD,aAAaj3B,KAAKxgB,GAAK,SACvDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK6sD,QAAQn3B,KAAKxgB,GAAQ,WACrDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK6sD,QAAQn3B,KAAKxgB,GAAQ,WACrDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK+sD,SAASr3B,KAAKxgB,GAAO,WACrDlV,KAAK0nD,SAAShyB,KAAK,OAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK+sD,SAASr3B,KAAKxgB,GAAO,WACrDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK6sD,QAAQn3B,KAAKxgB,GAAQ,WACrDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK+sD,SAASr3B,KAAKxgB,GAAO,WACrDlV,KAAK0nD,SAAShyB,KAAK,IAAQ11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAQ,SACvDlV,KAAK0nD,SAAShyB,KAAK,SAAS11B,KAAK6sD,QAAQn3B,KAAKxgB,GAAO,WACrDlV,KAAK0nD,SAAShyB,KAAK,SAAS11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAO,SACvDlV,KAAK0nD,SAAShyB,KAAK,WAAW11B,KAAK+sD,SAASr3B,KAAKxgB,GAAI,WACrDlV,KAAK0nD,SAAShyB,KAAK,WAAW11B,KAAK8sD,UAAUp3B,KAAKxgB,GAAK,UAGV,GAA3ClV,KAAKgkD,UAAUpB,iBAAiBzzC,UAClCnP,KAAK0nD,SAAShyB,KAAK,MAAM11B,KAAK4pD,sBAAsBl0B,KAAKxgB,IACzDlV,KAAK0nD,SAAShyB,KAAK,SAAS11B,KAAKgtD,gBAAgBt3B,KAAKxgB,MAU1DhS,EAAQgR,UAAUG,QAAU,WAC1BrU,KAAKqQ,MAAQ,aACbrQ,KAAKyiB,OAAS,aACdziB,KAAKsnD,OAAQ,EAGbtnD,KAAKitD,+BAGLjtD,KAAK0nD,SAAS2E,QAGdrsD,KAAK8D,OAAOgoD,UAGZ9rD,KAAKyU,MAELzU,KAAKktD,oBAAoBltD,KAAK0a,mBAGhCxX,EAAQgR,UAAUg5C,oBAAsB,SAASC,GAC/C,KAAoC,GAA7BA,EAAUzoC,iBACf1kB,KAAKktD,oBAAoBC,EAAUxoC,YACnCwoC,EAAUv7C,YAAYu7C,EAAUxoC,aAUpCzhB,EAAQgR,UAAUk5C,YAAc,SAAUttB,GACxC,OACEttB,EAAGstB,EAAMvH,MAAQ53B,EAAK+G,gBAAgB1H,KAAKsgB,MAAMC,QACjD9N,EAAGqtB,EAAMrH,MAAQ93B,EAAKqH,eAAehI,KAAKsgB,MAAMC,UASpDrd,EAAQgR,UAAUmsB,SAAW,SAAUx2B,IACjC,GAAIjF,OAAOyC,UAAYrH,KAAKglD,UAAY,MAC1ChlD,KAAK0qC,KAAK3I,QAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,QACnD/sB,KAAK0qC,KAAK2iB,SAAU,EACpBrtD,KAAK+rD,MAAMxnD,MAAQvE,KAAKstD,YAGxBttD,KAAKglD,WAAY,GAAIpgD,OAAOyC,UAE5BrH,KAAKutD,aAAavtD,KAAK0qC,KAAK3I,WAQhC7+B,EAAQgR,UAAU8rB,aAAe,SAAUn2B,GACzC7J,KAAKwtD,iBAAiB3jD,IAUxB3G,EAAQgR,UAAUs5C,iBAAmB,SAAS3jD,GAElBhD,SAAtB7G,KAAK0qC,KAAK3I,SACZ/hC,KAAKqgC,SAASx2B,EAGhB,IAAIw+C,GAAOroD,KAAKytD,WAAWztD,KAAK0qC,KAAK3I,QASrC,IANA/hC,KAAK0qC,KAAK1J,UAAW,EACrBhhC,KAAK0qC,KAAK4J,aACVt0C,KAAK0qC,KAAKjsB,YAAcze,KAAK0tD,kBAC7B1tD,KAAK0qC,KAAKie,OAAS,KACnB3oD,KAAKkmD,eAAgB,EAET,MAARmC,GAA4C,GAA5BroD,KAAKgkD,UAAUJ,UAAmB,CACpD5jD,KAAKkmD,eAAgB,EACrBlmD,KAAK0qC,KAAKie,OAASN,EAAKhoD,GAEnBgoD,EAAKsF,cACR3tD,KAAK4tD,cAAcvF,GAAK,GAG1BroD,KAAKyuB,KAAK,aAAao/B,QAAQ7tD,KAAK83B,eAAe+mB,OAGnD,KAAK,GAAIiP,KAAY9tD,MAAK+tD,aAAalP,MACrC,GAAI7+C,KAAK+tD,aAAalP,MAAM14C,eAAe2nD,GAAW,CACpD,GAAI9pD,GAAShE,KAAK+tD,aAAalP,MAAMiP,GACjCvhD,GACFlM,GAAI2D,EAAO3D,GACXgoD,KAAMrkD,EAGNwO,EAAGxO,EAAOwO,EACVC,EAAGzO,EAAOyO,EACVu7C,OAAQhqD,EAAOgqD,OACfC,OAAQjqD,EAAOiqD,OAGjBjqD,GAAOgqD,QAAS,EAChBhqD,EAAOiqD,QAAS,EAEhBjuD,KAAK0qC,KAAK4J,UAAU/rC,KAAKgE,MAWjCrJ,EAAQgR,UAAU+rB,QAAU,SAAUp2B,GACpC7J,KAAKkuD,cAAcrkD,IAUrB3G,EAAQgR,UAAUg6C,cAAgB,SAASrkD,GACzC,IAAI7J,KAAK0qC,KAAK2iB,QAAd,CAKArtD,KAAKmuD,aAEL,IAAIpsB,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,QACzC7X,EAAKlV,KACL0qC,EAAO1qC,KAAK0qC,KACZ4J,EAAY5J,EAAK4J,SACrB,IAAIA,GAAaA,EAAUtuC,QAAsC,GAA5BhG,KAAKgkD,UAAUJ,UAAmB,CAErE,GAAIniB,GAASM,EAAQvvB,EAAIk4B,EAAK3I,QAAQvvB,EAClCkvB,EAASK,EAAQtvB,EAAIi4B,EAAK3I,QAAQtvB,CAGtC6hC,GAAU1rC,QAAQ,SAAU2D,GAC1B,GAAI87C,GAAO97C,EAAE87C,IAER97C,GAAEyhD,SACL3F,EAAK71C,EAAI0C,EAAGk5C,qBAAqBl5C,EAAGm5C,qBAAqB9hD,EAAEiG,GAAKivB,IAG7Dl1B,EAAE0hD,SACL5F,EAAK51C,EAAIyC,EAAGo5C,qBAAqBp5C,EAAGq5C,qBAAqBhiD,EAAEkG,GAAKivB,MAM/D1hC,KAAKqnD,SACRrnD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,aAKP,IAAkC,GAA9BrQ,KAAKgkD,UAAUL,YAAqB,CAEtC,GAA0B98C,SAAtB7G,KAAK0qC,KAAK3I,QAEZ,WADA/hC,MAAKwtD,iBAAiB3jD,EAGxB,IAAIokB,GAAQ8T,EAAQvvB,EAAIxS,KAAK0qC,KAAK3I,QAAQvvB,EACtC0b,EAAQ6T,EAAQtvB,EAAIzS,KAAK0qC,KAAK3I,QAAQtvB,CAE1CzS,MAAK6lD,gBACH7lD,KAAK0qC,KAAKjsB,YAAYjM,EAAIyb,EAC1BjuB,KAAK0qC,KAAKjsB,YAAYhM,EAAIyb,GAE5BluB,KAAKi3B,aASX/zB,EAAQgR,UAAUgsB,WAAa,SAAUr2B,GACvC7J,KAAKwuD,eAAe3kD,IAItB3G,EAAQgR,UAAUs6C,eAAiB,WACjCxuD,KAAK0qC,KAAK1J,UAAW,CACrB,IAAIsT,GAAYt0C,KAAK0qC,KAAK4J,SACtBA,IAAaA,EAAUtuC,QACzBsuC,EAAU1rC,QAAQ,SAAU2D,GAE1BA,EAAE87C,KAAK2F,OAASzhD,EAAEyhD,OAClBzhD,EAAE87C,KAAK4F,OAAS1hD,EAAE0hD,SAEpBjuD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,SAGLrQ,KAAKi3B,UAEmB,GAAtBj3B,KAAKkmD,cACPlmD,KAAKyuB,KAAK,WAAWo/B,aAGrB7tD,KAAKyuB,KAAK,WAAWo/B,QAAQ7tD,KAAK83B,eAAe+mB,SAQrD37C,EAAQgR,UAAU83C,OAAS,SAAUniD,GACnC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAKwmD,gBAAkBzkB,EACvB/hC,KAAKyuD,WAAW1sB,IASlB7+B,EAAQgR,UAAU+3C,aAAe,SAAUpiD,GACzC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAK0uD,iBAAiB3sB,IAQxB7+B,EAAQgR,UAAUisB,QAAU,SAAUt2B,GACpC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAKwmD,gBAAkBzkB,EACvB/hC,KAAK2uD,cAAc5sB,IAQrB7+B,EAAQgR,UAAUk4C,WAAa,SAAUviD,GACvC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAK4uD,iBAAiB7sB,IAQxB7+B,EAAQgR,UAAUosB,SAAW,SAAUz2B,GACrC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAE7C/sB,MAAK0qC,KAAK2iB,SAAU,EACd,SAAWrtD,MAAK+rD,QACpB/rD,KAAK+rD,MAAMxnD,MAAQ,EAIrB,IAAIA,GAAQvE,KAAK+rD,MAAMxnD,MAAQsF,EAAM2uB,QAAQj0B,KAC7CvE,MAAK6uD,MAAMtqD,EAAOw9B,IAUpB7+B,EAAQgR,UAAU26C,MAAQ,SAAStqD,EAAOw9B,GACxC,GAA+B,GAA3B/hC,KAAKgkD,UAAUrkB,SAAkB,CACnC,GAAImvB,GAAW9uD,KAAKstD,WACR,MAAR/oD,IACFA,EAAQ,MAENA,EAAQ,KACVA,EAAQ,GAGV,IAAIwqD,GAAsB,IACRloD,UAAd7G,KAAK0qC,MACmB,GAAtB1qC,KAAK0qC,KAAK1J,WACZ+tB,EAAsB/uD,KAAKgvD,YAAYhvD,KAAK0qC,KAAK3I,SAIrD,IAAItjB,GAAcze,KAAK0tD,kBAEnBuB,EAAY1qD,EAAQuqD,EACpBI,GAAM,EAAID,GAAaltB,EAAQvvB,EAAIiM,EAAYjM,EAAIy8C,EACnDE,GAAM,EAAIF,GAAaltB,EAAQtvB,EAAIgM,EAAYhM,EAAIw8C,CASvD,IAPAjvD,KAAKymD,YAAcj0C,EAAMxS,KAAKouD,qBAAqBrsB,EAAQvvB,GACxCC,EAAMzS,KAAKsuD,qBAAqBvsB,EAAQtvB,IAE3DzS,KAAKie,UAAU1Z,GACfvE,KAAK6lD,gBAAgBqJ,EAAIC,GACzBnvD,KAAKovD,wBAEsB,MAAvBL,EAA6B,CAC/B,GAAIM,GAAuBrvD,KAAKsvD,YAAYP,EAC5C/uD,MAAK0qC,KAAK3I,QAAQvvB,EAAI68C,EAAqB78C,EAC3CxS,KAAK0qC,KAAK3I,QAAQtvB,EAAI48C,EAAqB58C,EAY7C,MATAzS,MAAKi3B,UAEU1yB,EAAXuqD,EACF9uD,KAAKyuB,KAAK,QAASyO,UAAU,MAG7Bl9B,KAAKyuB,KAAK,QAASyO,UAAU,MAGxB34B,IAYXrB,EAAQgR,UAAUksB,cAAgB,SAASv2B,GAEzC,GAAIylB,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAW,IAChB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAO,GAMpBF,EAAO,CAGT,GAAI/qB,GAAQvE,KAAKstD,YACbprB,EAAO5S,EAAQ,EACP,GAARA,IACF4S,GAAe,EAAIA,GAErB39B,GAAU,EAAI29B,CAGd,IAAI1J,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAU/hC,KAAKotD,YAAY50B,EAAQzL,OAGvC/sB,MAAK6uD,MAAMtqD,EAAOw9B,GAIpBl4B,EAAMD,kBASR1G,EAAQgR,UAAUg4C,kBAAoB,SAAUriD,GAC9C,GAAI2uB,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAU/hC,KAAKotD,YAAY50B,EAAQzL,QACnCwiC,GAAe,CAsBnB,IAnBmB1oD,SAAf7G,KAAKwvD,QACHxvD,KAAKwvD,MAAM91B,UAAW,GACxB15B,KAAKyvD,gBAAgB1tB,GAInB/hC,KAAKwvD,MAAM91B,UAAW,IACxB61B,GAAe,EACfvvD,KAAKwvD,MAAME,YAAY3tB,EAAQvvB,EAAI,EAAEuvB,EAAQtvB,EAAI,GACjDzS,KAAKwvD,MAAMzoB,SAK6B,GAAxC/mC,KAAKgkD,UAAUvB,SAASE,cAA4D,GAAnC3iD,KAAKgkD,UAAUvB,SAAStzC,SAC3EnP,KAAKsgB,MAAMuX,QAIT03B,KAAiB,EAAO,CAC1B,GAAIr6C,GAAKlV,KACL2vD,EAAY,WACdz6C,EAAG06C,gBAAgB7tB,GAEjB/hC,MAAK6vD,YACPx8B,cAAcrzB,KAAK6vD,YAEhB7vD,KAAK0qC,KAAK1J,WACbhhC,KAAK6vD,WAAat1C,WAAWo1C,EAAW3vD,KAAKgkD,UAAU58B,QAAQ3N,QAOnE,GAA4B,GAAxBzZ,KAAKgkD,UAAUh3C,MAAe,CAEhC,IAAK,GAAI8iD,KAAU9vD,MAAKkkD,SAASlE,MAC3BhgD,KAAKkkD,SAASlE,MAAM75C,eAAe2pD,KACrC9vD,KAAKkkD,SAASlE,MAAM8P,GAAQ9iD,OAAQ,QAC7BhN,MAAKkkD,SAASlE,MAAM8P,GAK/B,IAAI/rC,GAAM/jB,KAAKytD,WAAW1rB,EACf,OAAPhe,IACFA,EAAM/jB,KAAK+vD,WAAWhuB,IAEb,MAAPhe,GACF/jB,KAAKgwD,aAAajsC,EAIpB,KAAK,GAAI4kC,KAAU3oD,MAAKkkD,SAASrF,MAC3B7+C,KAAKkkD,SAASrF,MAAM14C,eAAewiD,KACjC5kC,YAAexgB,IAAQwgB,EAAI1jB,IAAMsoD,GAAU5kC,YAAe3gB,IAAe,MAAP2gB,KACpE/jB,KAAKiwD,YAAYjwD,KAAKkkD,SAASrF,MAAM8J,UAC9B3oD,MAAKkkD,SAASrF,MAAM8J,GAIjC3oD,MAAKyiB,WAYTvf,EAAQgR,UAAU07C,gBAAkB,SAAU7tB,GAC5C,GAOI1hC,GAPA0jB,GACFlc,KAAQ7H,KAAKouD,qBAAqBrsB,EAAQvvB,GAC1CvK,IAAQjI,KAAKsuD,qBAAqBvsB,EAAQtvB,GAC1C4V,MAAQroB,KAAKouD,qBAAqBrsB,EAAQvvB,GAC1C8R,OAAQtkB,KAAKsuD,qBAAqBvsB,EAAQtvB,IAIxCy9C,EAAuCrpD,SAAlB7G,KAAKmwD,SAAyB,GAAKnwD,KAAKmwD,SAAS9vD,GACtE+vD,GAAkB,EAClBC,EAAY,MAEhB,IAAqBxpD,QAAjB7G,KAAKmwD,SAAuB,CAE9B,GAAItR,GAAQ7+C,KAAK6+C,MACbyR,IACJ,KAAKjwD,IAAMw+C,GACT,GAAIA,EAAM14C,eAAe9F,GAAK,CAC5B,GAAIgoD,GAAOxJ,EAAMx+C,EACbgoD,GAAKkI,kBAAkBxsC,IACDld,SAApBwhD,EAAKmI,YACPF,EAAiB/nD,KAAKlI,GAM1BiwD,EAAiBtqD,OAAS,IAG5BhG,KAAKmwD,SAAWnwD,KAAK6+C,MAAMyR,EAAiBA,EAAiBtqD,OAAS,IAEtEoqD,GAAkB,GAItB,GAAsBvpD,SAAlB7G,KAAKmwD,UAA6C,GAAnBC,EAA0B,CAE3D,GAAIpQ,GAAQhgD,KAAKggD,MACbyQ,IACJ,KAAKpwD,IAAM2/C,GACT,GAAIA,EAAM75C,eAAe9F,GAAK,CAC5B,GAAIqwD,GAAO1Q,EAAM3/C,EACbqwD,GAAKC,WAAkC9pD,SAApB6pD,EAAKF,YACxBE,EAAKH,kBAAkBxsC,IACzB0sC,EAAiBloD,KAAKlI,GAKxBowD,EAAiBzqD,OAAS,IAC5BhG,KAAKmwD,SAAWnwD,KAAKggD,MAAMyQ,EAAiBA,EAAiBzqD,OAAS,IACtEqqD,EAAY,QAIZrwD,KAAKmwD,SAEHnwD,KAAKmwD,SAAS9vD,IAAM6vD,IACHrpD,SAAf7G,KAAKwvD,QACPxvD,KAAKwvD,MAAQ,GAAIhsD,GAAMxD,KAAKsgB,MAAOtgB,KAAKgkD,UAAU58B,UAGpDpnB,KAAKwvD,MAAMoB,gBAAkBP,EAC7BrwD,KAAKwvD,MAAMqB,cAAgB7wD,KAAKmwD,SAAS9vD,GAKzCL,KAAKwvD,MAAME,YAAY3tB,EAAQvvB,EAAI,EAAGuvB,EAAQtvB,EAAI,GAClDzS,KAAKwvD,MAAMsB,QAAQ9wD,KAAKmwD,SAASK,YACjCxwD,KAAKwvD,MAAMzoB,QAIT/mC,KAAKwvD,OACPxvD,KAAKwvD,MAAM1oB,QAYjB5jC,EAAQgR,UAAUu7C,gBAAkB,SAAU1tB,GAC5C,GAAIgvB,IACFlpD,KAAQ7H,KAAKouD,qBAAqBrsB,EAAQvvB,GAC1CvK,IAAQjI,KAAKsuD,qBAAqBvsB,EAAQtvB,GAC1C4V,MAAQroB,KAAKouD,qBAAqBrsB,EAAQvvB,GAC1C8R,OAAQtkB,KAAKsuD,qBAAqBvsB,EAAQtvB,IAGxCu+C,GAAa,CACjB,IAAkC,QAA9BhxD,KAAKwvD,MAAMoB,iBAEb,GADAI,EAAahxD,KAAK6+C,MAAM7+C,KAAKwvD,MAAMqB,eAAeN,kBAAkBQ,GAChEC,KAAe,EAAM,CACvB,GAAIC,GAAWjxD,KAAKytD,WAAW1rB,EAC/BivB,GAAaC,EAAS5wD,IAAML,KAAKwvD,MAAMqB,mBAIR,QAA7B7wD,KAAKytD,WAAW1rB,KAClBivB,EAAahxD,KAAKggD,MAAMhgD,KAAKwvD,MAAMqB,eAAeN,kBAAkBQ,GAKpEC,MAAe,IACjBhxD,KAAKmwD,SAAWtpD,OAChB7G,KAAKwvD,MAAM1oB,SAYf5jC,EAAQgR,UAAUyR,QAAU,SAASrS,EAAOC,GAC1C,GAAI29C,IAAY,EACZC,EAAWnxD,KAAKsgB,MAAMC,OAAOjN,MAC7B89C,EAAYpxD,KAAKsgB,MAAMC,OAAOhN,MAC9BD,IAAStT,KAAKgkD,UAAU1wC,OAASC,GAAUvT,KAAKgkD,UAAUzwC,QAAUvT,KAAKsgB,MAAM5S,MAAM4F,OAASA,GAAStT,KAAKsgB,MAAM5S,MAAM6F,QAAUA,GACpIvT,KAAKsgB,MAAM5S,MAAM4F,MAAQA,EACzBtT,KAAKsgB,MAAM5S,MAAM6F,OAASA,EAE1BvT,KAAKsgB,MAAMC,OAAO7S,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMC,OAAO7S,MAAM6F,OAAS,OAEjCvT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKikD,WAC/DjkD,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKikD,WAEjEjkD,KAAKgkD,UAAU1wC,MAAQA,EACvBtT,KAAKgkD,UAAUzwC,OAASA,EAExB29C,GAAY,IAMRlxD,KAAKsgB,MAAMC,OAAOjN,OAAStT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKikD,aAClEjkD,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKikD,WAC/DiN,GAAY,GAEVlxD,KAAKsgB,MAAMC,OAAOhN,QAAUvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKikD,aACpEjkD,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKikD,WACjEiN,GAAY,IAIC,GAAbA,GACFlxD,KAAKyuB,KAAK,UAAWnb,MAAMtT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKikD,WAAW1wC,OAAOvT,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKikD,WAAYkN,SAAUA,EAAWnxD,KAAKikD,WAAYmN,UAAWA,EAAYpxD,KAAKikD,cAS9L/gD,EAAQgR,UAAUg2C,UAAY,SAASrL,GACrC,GAAIwS,GAAerxD,KAAK2mD,SAExB,IAAI9H,YAAiBh+C,IAAWg+C,YAAiB/9C,GAC/Cd,KAAK2mD,UAAY9H,MAEd,IAAIv4C,MAAMC,QAAQs4C,GACrB7+C,KAAK2mD,UAAY,GAAI9lD,GACrBb,KAAK2mD,UAAU3yC,IAAI6qC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAIn4C,WAAU,4BAHpB1G,MAAK2mD,UAAY,GAAI9lD,GAgBvB,GAVIwwD,GAEF1wD,EAAKiI,QAAQ5I,KAAK6mD,eAAgB,SAAUh+C,EAAUgB,GACpDwnD,EAAa58C,IAAI5K,EAAOhB,KAK5B7I,KAAK6+C,SAED7+C,KAAK2mD,UAAW,CAElB,GAAIzxC,GAAKlV,IACTW,GAAKiI,QAAQ5I,KAAK6mD,eAAgB,SAAUh+C,EAAUgB,GACpDqL,EAAGyxC,UAAUryC,GAAGzK,EAAOhB,IAIzB,IAAIqN,GAAMlW,KAAK2mD,UAAU/vC,QACzB5W,MAAK8mD,UAAU5wC,GAEjBlW,KAAKsxD,oBAQPpuD,EAAQgR,UAAU4yC,UAAY,SAAS5wC,GAErC,IAAK,GADD7V,GACKwF,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9CxF,EAAK6V,EAAIrQ,EACT,IAAI4N,GAAOzT,KAAK2mD,UAAU1wC,IAAI5V,GAC1BgoD,EAAO,GAAI9kD,GAAKkQ,EAAMzT,KAAKklD,OAAQllD,KAAK+0B,OAAQ/0B,KAAKgkD,UAEzD,IADAhkD,KAAK6+C,MAAMx+C,GAAMgoD,IACG,GAAfA,EAAK2F,QAAkC,GAAf3F,EAAK4F,QAAgC,OAAX5F,EAAK71C,GAAyB,OAAX61C,EAAK51C,GAAa,CAC1F,GAAI6Z,GAAS,EAASpW,EAAIlQ,OAAS,GAC/BurD,EAAQ,EAAI/sD,KAAKgoB,GAAKhoB,KAAKiB,QACZ,IAAf4iD,EAAK2F,SAAkB3F,EAAK71C,EAAI8Z,EAAS9nB,KAAK+a,IAAIgyC,IACnC,GAAflJ,EAAK4F,SAAkB5F,EAAK51C,EAAI6Z,EAAS9nB,KAAK4a,IAAImyC,IAExDvxD,KAAKqnD,QAAS,EAGhBrnD,KAAKwpD,uBAC4C,GAA7CxpD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKwxD,0BACLxxD,KAAKyxD,kBACLzxD,KAAK0xD,kBAAkB1xD,KAAK6+C,OAC5B7+C,KAAK2xD,gBAQPzuD,EAAQgR,UAAU6yC,aAAe,SAAS7wC,GAIxC,IAAK,GAHDywC,GAAY3mD,KAAK2mD,UAAU1wC,IAAIC,GAC/B2oC,EAAQ7+C,KAAK6+C,MAERh5C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GACTwiD,EAAOxJ,EAAMx+C,GACboT,EAAOkzC,EAAU9gD,EACjBwiD,GAEFA,EAAKuJ,cAAcn+C,EAAMzT,KAAKgkD,YAI9BqE,EAAO,GAAI9kD,GAAKsuD,WAAY7xD,KAAKklD,OAAQllD,KAAK+0B,OAAQ/0B,KAAKgkD,WAC3DnF,EAAMx+C,GAAMgoD,GAGhBroD,KAAKqnD,QAAS,EACmC,GAA7CrnD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKwpD,uBACLxpD,KAAK0xD,kBAAkB7S,GACvB7+C,KAAKqrD,wBAIPnoD,EAAQgR,UAAUm3C,qBAAuB,WACvC,IAAK,GAAIyE,KAAU9vD,MAAKggD,MACtBhgD,KAAKggD,MAAM8P,GAAQgC,YAAa,GASpC5uD,EAAQgR,UAAU8yC,aAAe,SAAS9wC,GAIxC,IAAK,GAHD2oC,GAAQ7+C,KAAK6+C,MAGRh5C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACDgB,SAApC7G,KAAK+tD,aAAalP,MAAM3oC,EAAIrQ,MAC9B7F,KAAK6+C,MAAM3oC,EAAIrQ,IAAI+gC,WACnB5mC,KAAK+xD,qBAAqB/xD,KAAK6+C,MAAM3oC,EAAIrQ,KAI7C,KAAK,GAAIA,GAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,SACNg5C,GAAMx+C,GAKfL,KAAKwpD,uBAC4C,GAA7CxpD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKwxD,0BACLxxD,KAAKyxD,kBACLzxD,KAAKsxD,mBACLtxD,KAAK0xD,kBAAkB7S,IASzB37C,EAAQgR,UAAUi2C,UAAY,SAASnK,GACrC,GAAIgS,GAAehyD,KAAK4mD,SAExB,IAAI5G,YAAiBn/C,IAAWm/C,YAAiBl/C,GAC/Cd,KAAK4mD,UAAY5G,MAEd,IAAI15C,MAAMC,QAAQy5C,GACrBhgD,KAAK4mD,UAAY,GAAI/lD,GACrBb,KAAK4mD,UAAU5yC,IAAIgsC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAIt5C,WAAU,4BAHpB1G,MAAK4mD,UAAY,GAAI/lD,GAgBvB,GAVImxD,GAEFrxD,EAAKiI,QAAQ5I,KAAKinD,eAAgB,SAAUp+C,EAAUgB,GACpDmoD,EAAav9C,IAAI5K,EAAOhB,KAK5B7I,KAAKggD,SAEDhgD,KAAK4mD,UAAW,CAElB,GAAI1xC,GAAKlV,IACTW,GAAKiI,QAAQ5I,KAAKinD,eAAgB,SAAUp+C,EAAUgB,GACpDqL,EAAG0xC,UAAUtyC,GAAGzK,EAAOhB,IAIzB,IAAIqN,GAAMlW,KAAK4mD,UAAUhwC,QACzB5W,MAAKknD,UAAUhxC,GAGjBlW,KAAKyxD,mBAQPvuD,EAAQgR,UAAUgzC,UAAY,SAAUhxC,GAItC,IAAK,GAHD8pC,GAAQhgD,KAAKggD,MACb4G,EAAY5mD,KAAK4mD,UAEZ/gD,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GAETosD,EAAUjS,EAAM3/C,EAChB4xD,IACFA,EAAQC,YAGV,IAAIz+C,GAAOmzC,EAAU3wC,IAAI5V,GAAK8xD,iBAAoB,GAClDnS,GAAM3/C,GAAM,GAAI+C,GAAKqQ,EAAMzT,KAAMA,KAAKgkD,WAExChkD,KAAKqnD,QAAS,EACdrnD,KAAK0xD,kBAAkB1R,GACvBhgD,KAAKoyD,qBACLpyD,KAAKwxD,0BAC4C,GAA7CxxD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,6BASTrkD,EAAQgR,UAAUizC,aAAe,SAAUjxC,GAGzC,IAAK,GAFD8pC,GAAQhgD,KAAKggD,MACb4G,EAAY5mD,KAAK4mD,UACZ/gD,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GAET4N,EAAOmzC,EAAU3wC,IAAI5V,GACrBqwD,EAAO1Q,EAAM3/C,EACbqwD,IAEFA,EAAKwB,aACLxB,EAAKkB,cAAcn+C,EAAMzT,KAAKgkD,WAC9B0M,EAAKhS,YAILgS,EAAO,GAAIttD,GAAKqQ,EAAMzT,KAAMA,KAAKgkD,WACjChkD,KAAKggD,MAAM3/C,GAAMqwD,GAIrB1wD,KAAKoyD,qBAC4C,GAA7CpyD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKqnD,QAAS,EACdrnD,KAAK0xD,kBAAkB1R,IAQzB98C,EAAQgR,UAAUkzC,aAAe,SAAUlxC,GAIzC,IAAK,GAHD8pC,GAAQhgD,KAAKggD,MAGRn6C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACDgB,SAApC7G,KAAK+tD,aAAa/N,MAAM9pC,EAAIrQ,MAC9Bm6C,EAAM9pC,EAAIrQ,IAAI+gC,WACd5mC,KAAK+xD,qBAAqB/R,EAAM9pC,EAAIrQ,KAIxC,KAAK,GAAIA,GAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GACT6qD,EAAO1Q,EAAM3/C,EACbqwD,KACc,MAAZA,EAAK2B,WACAryD,MAAKsyD,QAAiB,QAAS,MAAE5B,EAAK2B,IAAIhyD,IAEnDqwD,EAAKwB,mBACElS,GAAM3/C,IAIjBL,KAAKqnD,QAAS,EACdrnD,KAAK0xD,kBAAkB1R,GAC0B,GAA7ChgD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAwC,GAArBnP,KAAKs+C,eAC5Dt+C,KAAKqqD,eACLrqD,KAAKunD,4BAEPvnD,KAAKwxD,2BAOPtuD,EAAQgR,UAAUu9C,gBAAkB,WAClC,GAAIpxD,GACAw+C,EAAQ7+C,KAAK6+C,MACbmB,EAAQhgD,KAAKggD,KACjB,KAAK3/C,IAAMw+C,GACLA,EAAM14C,eAAe9F,KACvBw+C,EAAMx+C,GAAI2/C,SACVnB,EAAMx+C,GAAIkyD,gBAId,KAAKlyD,IAAM2/C,GACT,GAAIA,EAAM75C,eAAe9F,GAAK,CAC5B,GAAIqwD,GAAO1Q,EAAM3/C,EACjBqwD,GAAKvmC,KAAO,KACZumC,EAAKtmC,GAAK,KACVsmC,EAAKhS,YAaXx7C,EAAQgR,UAAUw9C,kBAAoB,SAAS3tC,GAC7C,GAAI1jB,GAGA8c,EAAWtW,OACXuW,EAAWvW,OACX2rD,EAAa,CACjB,KAAKnyD,IAAM0jB,GACT,GAAIA,EAAI5d,eAAe9F,GAAK,CAC1B,GAAIiE,GAAQyf,EAAI1jB,GAAIsV,UACN9O,UAAVvC,IACF6Y,EAAyBtW,SAAbsW,EAA0B7Y,EAAQE,KAAKL,IAAIG,EAAO6Y,GAC9DC,EAAyBvW,SAAbuW,EAA0B9Y,EAAQE,KAAKJ,IAAIE,EAAO8Y,GAC9Do1C,GAAcluD,GAMpB,GAAiBuC,SAAbsW,GAAuCtW,SAAbuW,EAC5B,IAAK/c,IAAM0jB,GACLA,EAAI5d,eAAe9F,IACrB0jB,EAAI1jB,GAAIoyD,cAAct1C,EAAUC,EAAUo1C,IAUlDtvD,EAAQgR,UAAUuO,OAAS,WACzBziB,KAAK2lB,QAAQ3lB,KAAKgkD,UAAU1wC,MAAOtT,KAAKgkD,UAAUzwC,QAClDvT,KAAKi3B,WAQP/zB,EAAQgR,UAAUkxC,eAAiB,SAAS1rB,GACtC15B,KAAKilD,mBAAoB,IAC3BjlD,KAAKilD,iBAAkB,EACnBjlD,KAAK8nD,mBAAoB,EAC3BhgD,OAAOyS,WAAWva,KAAKi3B,QAAQvB,KAAK11B,KAAM05B,GAAQ,GAGlD5xB,OAAO4qD,sBAAsB1yD,KAAKi3B,QAAQvB,KAAK11B,KAAM05B,GAAQ,MAKnEx2B,EAAQgR,UAAU+iB,QAAU,SAASyC,GACpB7yB,SAAX6yB,IACFA,GAAS,GAEX15B,KAAKilD,iBAAkB,CACvB,IAAIl9B,GAAM/nB,KAAKsgB,MAAMC,OAAOyH,WAAW,KAEvCD,GAAI8jC,aAAa7rD,KAAKikD,WAAY,EAAG,EAAGjkD,KAAKikD,WAAY,EAAG,EAG5D,IAAI0O,GAAI3yD,KAAKsgB,MAAMC,OAAOC,YACtBlU,EAAItM,KAAKsgB,MAAMC,OAAOsF,YAC1BkC,GAAIE,UAAU,EAAG,EAAG0qC,EAAGrmD,GAGvByb,EAAI6qC,OACJ7qC,EAAI8qC,UAAU7yD,KAAKye,YAAYjM,EAAGxS,KAAKye,YAAYhM,GACnDsV,EAAIxjB,MAAMvE,KAAKuE,MAAOvE,KAAKuE,OAE3BvE,KAAKsmD,eACH9zC,EAAKxS,KAAKouD,qBAAqB,GAC/B37C,EAAKzS,KAAKsuD,qBAAqB,IAEjCtuD,KAAKumD,mBACH/zC,EAAKxS,KAAKouD,qBAAqBpuD,KAAKsgB,MAAMC,OAAOC,aACjD/N,EAAKzS,KAAKsuD,qBAAqBtuD,KAAKsgB,MAAMC,OAAOsF,eAG/C6T,KAAW,IACb15B,KAAK8yD,gBAAgB,sBAAuB/qC,IAClB,GAAtB/nB,KAAK0qC,KAAK1J,UAA4Cn6B,SAAvB7G,KAAK0qC,KAAK1J,UAA4D,GAAlChhC,KAAKgkD,UAAUH,kBACpF7jD,KAAK8yD,gBAAgB,aAAc/qC,KAIb,GAAtB/nB,KAAK0qC,KAAK1J,UAA4Cn6B,SAAvB7G,KAAK0qC,KAAK1J,UAA4D,GAAlChhC,KAAKgkD,UAAUF,kBACpF9jD,KAAK8yD,gBAAgB,aAAa/qC,GAAI,GAGpC2R,KAAW,GACkB,GAA3B15B,KAAKmkD,oBACPnkD,KAAK8yD,gBAAgB,oBAAqB/qC,GAQ9CA,EAAIgrC,UAEAr5B,KAAW,GACb3R,EAAIE,UAAU,EAAG,EAAG0qC,EAAGrmD,IAU3BpJ,EAAQgR,UAAU2xC,gBAAkB,SAASmN,EAASC,GAC3BpsD,SAArB7G,KAAKye,cACPze,KAAKye,aACHjM,EAAG,EACHC,EAAG,IAIS5L,SAAZmsD,IACFhzD,KAAKye,YAAYjM,EAAIwgD,GAEPnsD,SAAZosD,IACFjzD,KAAKye,YAAYhM,EAAIwgD,GAGvBjzD,KAAKyuB,KAAK,gBAQZvrB,EAAQgR,UAAUw5C,gBAAkB,WAClC,OACEl7C,EAAGxS,KAAKye,YAAYjM,EACpBC,EAAGzS,KAAKye,YAAYhM,IASxBvP,EAAQgR,UAAU+J,UAAY,SAAS1Z,GACrCvE,KAAKuE,MAAQA,GAQfrB,EAAQgR,UAAUo5C,UAAY,WAC5B,MAAOttD,MAAKuE,OAUdrB,EAAQgR,UAAUk6C,qBAAuB,SAAS57C,GAChD,OAAQA,EAAIxS,KAAKye,YAAYjM,GAAKxS,KAAKuE,OAUzCrB,EAAQgR,UAAUm6C,qBAAuB,SAAS77C,GAChD,MAAOA,GAAIxS,KAAKuE,MAAQvE,KAAKye,YAAYjM,GAU3CtP,EAAQgR,UAAUo6C,qBAAuB,SAAS77C,GAChD,OAAQA,EAAIzS,KAAKye,YAAYhM,GAAKzS,KAAKuE,OAUzCrB,EAAQgR,UAAUq6C,qBAAuB,SAAS97C,GAChD,MAAOA,GAAIzS,KAAKuE,MAAQvE,KAAKye,YAAYhM,GAU3CvP,EAAQgR,UAAUo7C,YAAc,SAAU/oC,GACxC,OAAQ/T,EAAGxS,KAAKquD,qBAAqB9nC,EAAI/T,GAAIC,EAAGzS,KAAKuuD,qBAAqBhoC,EAAI9T,KAShFvP,EAAQgR,UAAU86C,YAAc,SAAUzoC,GACxC,OAAQ/T,EAAGxS,KAAKouD,qBAAqB7nC,EAAI/T,GAAIC,EAAGzS,KAAKsuD,qBAAqB/nC,EAAI9T,KAUhFvP,EAAQgR,UAAUg/C,WAAa,SAASnrC,EAAIorC,GACvBtsD,SAAfssD,IACFA,GAAa,EAIf,IAAItU,GAAQ7+C,KAAK6+C,MACbtY,IAEJ,KAAK,GAAIlmC,KAAMw+C,GACTA,EAAM14C,eAAe9F,KACvBw+C,EAAMx+C,GAAI+yD,eAAepzD,KAAKuE,MAAMvE,KAAKsmD,cAActmD,KAAKumD,mBACxD1H,EAAMx+C,GAAIstD,aACZpnB,EAASh+B,KAAKlI,IAGVw+C,EAAMx+C,GAAIgzD,UAAYF,IACxBtU,EAAMx+C,GAAI0wC,KAAKhpB,GAOvB,KAAK,GAAIxb,GAAI,EAAG+mD,EAAO/sB,EAASvgC,OAAYstD,EAAJ/mD,EAAUA,KAC5CsyC,EAAMtY,EAASh6B,IAAI8mD,UAAYF,IACjCtU,EAAMtY,EAASh6B,IAAIwkC,KAAKhpB,IAW9B7kB,EAAQgR,UAAUq/C,WAAa,SAASxrC,GACtC,GAAIi4B,GAAQhgD,KAAKggD,KACjB,KAAK,GAAI3/C,KAAM2/C,GACb,GAAIA,EAAM75C,eAAe9F,GAAK,CAC5B,GAAIqwD,GAAO1Q,EAAM3/C,EACjBqwD,GAAKzrB,SAASjlC,KAAKuE,OACfmsD,EAAKC,WACP3Q,EAAM3/C,GAAI0wC,KAAKhpB,KAYvB7kB,EAAQgR,UAAUs/C,kBAAoB,SAASzrC,GAC7C,GAAIi4B,GAAQhgD,KAAKggD,KACjB,KAAK,GAAI3/C,KAAM2/C,GACTA,EAAM75C,eAAe9F,IACvB2/C,EAAM3/C,GAAImzD,kBAAkBzrC,IASlC7kB,EAAQgR,UAAUo2C,WAAa,WACgB,GAAzCtqD,KAAKgkD,UAAUd,wBACjBljD,KAAKyzD,qBAKP,KADA,GAAI17C,GAAQ,EACL/X,KAAKqnD,QAAUtvC,EAAQ/X,KAAKgkD,UAAUP,yBAC3CzjD,KAAK0zD,eACL37C,GAI0C,IAAxC/X,KAAKgkD,UAAUN,uBACjB1jD,KAAKwnD,YAAYj3C,SAAS,IAAI,GAAO,GAGM,GAAzCvQ,KAAKgkD,UAAUd,wBACjBljD,KAAK2zD,sBAGP3zD,KAAKyuB,KAAK,gCASZvrB,EAAQgR,UAAUu/C,oBAAsB,WACtC,GAAI5U,GAAQ7+C,KAAK6+C,KACjB,KAAK,GAAIx+C,KAAMw+C,GACTA,EAAM14C,eAAe9F,IACJ,MAAfw+C,EAAMx+C,GAAImS,GAA4B,MAAfqsC,EAAMx+C,GAAIoS,IACnCosC,EAAMx+C,GAAIuzD,UAAUphD,EAAIqsC,EAAMx+C,GAAI2tD,OAClCnP,EAAMx+C,GAAIuzD,UAAUnhD,EAAIosC,EAAMx+C,GAAI4tD,OAClCpP,EAAMx+C,GAAI2tD,QAAS,EACnBnP,EAAMx+C,GAAI4tD,QAAS,IAW3B/qD,EAAQgR,UAAUy/C,oBAAsB,WACtC,GAAI9U,GAAQ7+C,KAAK6+C,KACjB,KAAK,GAAIx+C,KAAMw+C,GACTA,EAAM14C,eAAe9F,IACM,MAAzBw+C,EAAMx+C,GAAIuzD,UAAUphD,IACtBqsC,EAAMx+C,GAAI2tD,OAASnP,EAAMx+C,GAAIuzD,UAAUphD,EACvCqsC,EAAMx+C,GAAI4tD,OAASpP,EAAMx+C,GAAIuzD,UAAUnhD,IAa/CvP,EAAQgR,UAAU2/C,UAAY,SAASC,GACrC,GAAIjV,GAAQ7+C,KAAK6+C,KACjB,KAAK,GAAIx+C,KAAMw+C,GACb,GAAkBh4C,SAAdg4C,EAAMx+C,IACwB,GAA5Bw+C,EAAMx+C,GAAI0zD,SAASD,GACrB,OAAO,CAIb,QAAO,GAUT5wD,EAAQgR,UAAU8/C,mBAAqB,WACrC,GAEIrL,GAFAv1B,EAAWpzB,KAAKq+C,wBAChBQ,EAAQ7+C,KAAK6+C,MAEboV,GAAe,CAEnB,IAAIj0D,KAAKgkD,UAAUV,YAAc,EAC/B,IAAKqF,IAAU9J,GACTA,EAAM14C,eAAewiD,KACvB9J,EAAM8J,GAAQuL,oBAAoB9gC,EAAUpzB,KAAKgkD,UAAUV,aAC3D2Q,GAAe,OAKnB,KAAKtL,IAAU9J,GACTA,EAAM14C,eAAewiD,KACvB9J,EAAM8J,GAAQwL,aAAa/gC,GAC3B6gC,GAAe,EAKrB,IAAoB,GAAhBA,EAAsB,CACxB,GAAIG,GAAgBp0D,KAAKgkD,UAAUT,YAAc/+C,KAAKJ,IAAIpE,KAAKuE,MAAM,IACrE,OAAI6vD,GAAgB,GAAIp0D,KAAKgkD,UAAUV,aAC9B,EAGAtjD,KAAK6zD,UAAUO,GAG1B,OAAO,GAITlxD,EAAQgR,UAAUmgD,oBAAsB,WACtC,GAAIxV,GAAQ7+C,KAAK6+C,KACjB,KAAK,GAAI8J,KAAU9J,GACbA,EAAM14C,eAAewiD,IACvB9J,EAAM8J,GAAQ2L,kBAKpBpxD,EAAQgR,UAAUqgD,mBAAqB,WACrCv0D,KAAKw0D,sBAAsB,uBACgB,GAAvCx0D,KAAKgkD,UAAUb,aAAah0C,SAA0D,GAAvCnP,KAAKgkD,UAAUb,aAAaC,SAC7EpjD,KAAKy0D,mBAAmB,wBAS5BvxD,EAAQgR,UAAUw/C,aAAe,WAC/B,IAAK1zD,KAAK8lD,yBACW,GAAf9lD,KAAKqnD,OAAgB,CACvB,GAAIqN,IAAmB,EACnBC,GAAsB,CAE1B30D,MAAKw0D,sBAAsB,8BAC3B,IAAII,GAAa50D,KAAKw0D,sBAAsB,qBACD,IAAvCx0D,KAAKgkD,UAAUb,aAAah0C,SAA0D,GAAvCnP,KAAKgkD,UAAUb,aAAaC,UAC7EuR,EAAsB30D,KAAKy0D,mBAAmB,sBAIhD,KAAK,GAAI5uD,GAAI,EAAGA,EAAI+uD,EAAW5uD,OAAQH,IACrC6uD,EAAmBE,EAAW/uD,IAAM6uD,CAItC10D,MAAKqnD,OAASqN,GAAoBC,EACf,GAAf30D,KAAKqnD,OACPrnD,KAAKu0D,qBAI4B,GAA7Bv0D,KAAKgmD,uBACPhmD,KAAKyuB,KAAK,sBACVzuB,KAAKgmD,sBAAuB,GAIhChmD,KAAKyjD,4BAYXvgD,EAAQgR,UAAU2gD,eAAiB,WAajC,GAXA70D,KAAKsnD,MAAQzgD,OAEe,GAAxB7G,KAAK8nD,iBAEP9nD,KAAKqQ,QAIPrQ,KAAK80D,oBAGc,GAAf90D,KAAKqnD,OAAgB,CACvB,GAAI0N,GAAYnwD,KAAKu6B,KACrBn/B,MAAK0zD,cACL,IAAIvV,GAAcv5C,KAAKu6B,MAAQ41B,GAG1B/0D,KAAKi+C,eAAiBj+C,KAAKk+C,WAAa,EAAIC,GAAsC,GAAvBn+C,KAAKo+C,iBAA0C,GAAfp+C,KAAKqnD,SACnGrnD,KAAK0zD,eAGkB,GAAnB1zD,KAAKk+C,aACPl+C,KAAKo+C,gBAAiB,IAK5B,GAAI4W,GAAkBpwD,KAAKu6B,KAC3Bn/B,MAAKi3B,UACLj3B,KAAKk+C,WAAat5C,KAAKu6B,MAAQ61B,EAEH,GAAxBh1D,KAAK8nD,iBAEP9nD,KAAKqQ,SAIa,mBAAXvI,UACTA,OAAO4qD,sBAAwB5qD,OAAO4qD,uBAAyB5qD,OAAOmtD,0BACvCntD,OAAOotD,6BAA+BptD,OAAOqtD,yBAM9EjyD,EAAQgR,UAAU7D,MAAQ,WAIxB,GAHoC,GAAhCrQ,KAAK8lD,0BACP9lD,KAAKqnD,QAAS,GAEG,GAAfrnD,KAAKqnD,QAAqC,GAAnBrnD,KAAKqlD,YAAsC,GAAnBrlD,KAAKslD,YAAyC,GAAtBtlD,KAAKulD,eAAwC,GAAlBvlD,KAAKwkD,UACpGxkD,KAAKsnD,QAENtnD,KAAKsnD,MADqB,GAAxBtnD,KAAK8nD,gBACMhgD,OAAOyS,WAAWva,KAAK60D,eAAen/B,KAAK11B,MAAOA,KAAKi+C,gBAGvDn2C,OAAO4qD,sBAAsB1yD,KAAK60D,eAAen/B,KAAK11B,YAOvE,IAFAA,KAAKolD,iBAEDplD,KAAKyjD,wBAA0B,EAAG,CAKpC,GAAIvuC,GAAKlV,KACL6U,GACFugD,WAAYlgD,EAAGuuC,wBAEjBzjD,MAAKyjD,wBAA0B,EAC/BzjD,KAAKgmD,sBAAuB,EAC5BzrC,WAAW,WACTrF,EAAGuZ,KAAK,aAAc5Z,IACrB,OAGH7U,MAAKyjD,wBAA0B,GAWrCvgD,EAAQgR,UAAU4gD,kBAAoB,WACpC,GAAuB,GAAnB90D,KAAKqlD,YAAsC,GAAnBrlD,KAAKslD,WAAiB,CAChD,GAAI7mC,GAAcze,KAAK0tD,iBACvB1tD,MAAK6lD,gBAAgBpnC,EAAYjM,EAAExS,KAAKqlD,WAAY5mC,EAAYhM,EAAEzS,KAAKslD,YAEzE,GAA0B,GAAtBtlD,KAAKulD,cAAoB,CAC3B,GAAIx4B,IACFva,EAAGxS,KAAKsgB,MAAMC,OAAOC,YAAc,EACnC/N,EAAGzS,KAAKsgB,MAAMC,OAAOsF,aAAe,EAEtC7lB,MAAK6uD,MAAM7uD,KAAKuE,OAAO,EAAIvE,KAAKulD,eAAgBx4B,KAQpD7pB,EAAQgR,UAAUmhD,iBAAmB,SAASC,GAC9B,GAAVA,GACFt1D,KAAK8lD,yBAA0B,EAC/B9lD,KAAKqnD,QAAS,IAGdrnD,KAAK8lD,yBAA0B,EAC/B9lD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,UAWTnN,EAAQgR,UAAUi3C,uBAAyB,SAASrC,GAIlD,GAHqBjiD,SAAjBiiD,IACFA,GAAe,GAE0B,GAAvC9oD,KAAKgkD,UAAUb,aAAah0C,SAA0D,GAAvCnP,KAAKgkD,UAAUb,aAAaC,QAAiB,CAC9FpjD,KAAKoyD,oBAEL;IAAK,GAAIzJ,KAAU3oD,MAAKsyD,QAAiB,QAAS,MAC5CtyD,KAAKsyD,QAAiB,QAAS,MAAEnsD,eAAewiD,IACwB9hD,SAAtE7G,KAAKggD,MAAMhgD,KAAKsyD,QAAiB,QAAS,MAAE3J,GAAQ4M,qBAC/Cv1D,MAAKsyD,QAAiB,QAAS,MAAE3J,OAK3C,CAEH3oD,KAAKsyD,QAAiB,QAAS,QAC/B,KAAK,GAAIxC,KAAU9vD,MAAKggD,MAClBhgD,KAAKggD,MAAM75C,eAAe2pD,KAC5B9vD,KAAKggD,MAAM8P,GAAQuC,IAAM,MAM/BryD,KAAKwxD,0BACA1I,IACH9oD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,UAWTnN,EAAQgR,UAAUk+C,mBAAqB,WACrC,GAA2C,GAAvCpyD,KAAKgkD,UAAUb,aAAah0C,SAA0D,GAAvCnP,KAAKgkD,UAAUb,aAAaC,QAC7E,IAAK,GAAI0M,KAAU9vD,MAAKggD,MACtB,GAAIhgD,KAAKggD,MAAM75C,eAAe2pD,GAAS,CACrC,GAAIY,GAAO1wD,KAAKggD,MAAM8P,EACtB,IAAgB,MAAZY,EAAK2B,IAAa,CACpB,GAAI1J,GAAS,UAAU5zC,OAAO27C,EAAKrwD,GACnCL,MAAKsyD,QAAiB,QAAS,MAAE3J,GAAU,GAAIplD,IACtClD,GAAGsoD,EACF7J,KAAK,EACLG,MAAM,SACNC,MAAM,GACNsW,mBAAmB,SACbx1D,KAAKgkD,WACrB0M,EAAK2B,IAAMryD,KAAKsyD,QAAiB,QAAS,MAAE3J,GAC5C+H,EAAK2B,IAAIkD,aAAe7E,EAAKrwD,GAC7BqwD,EAAK+E,wBAYfvyD,EAAQgR,UAAU6pC,wBAA0B,WAC1C,IAAK,GAAI2X,KAAS/N,GACZA,EAAYxhD,eAAeuvD,KAC7BxyD,EAAQgR,UAAUwhD,GAAS/N,EAAY+N,KAQ7CxyD,EAAQgR,UAAUyhD,cAAgB,WAChC96B,QAAQtG,IAAI,mEACZv0B,KAAK41D,kBAMP1yD,EAAQgR,UAAU0hD,eAAiB,WACjC,GAAIC,KACJ,KAAK,GAAIlN,KAAU3oD,MAAK6+C,MACtB,GAAI7+C,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrC,GAAIN,GAAOroD,KAAK6+C,MAAM8J,GAClBmN,GAAkB91D,KAAK6+C,MAAMmP,OAC7B+H,GAAkB/1D,KAAK6+C,MAAMoP,QAC7BjuD,KAAK2mD,UAAUhzC,MAAMg1C,GAAQn2C,GAAKhO,KAAK+pB,MAAM85B,EAAK71C,IAAMxS,KAAK2mD,UAAUhzC,MAAMg1C,GAAQl2C,GAAKjO,KAAK+pB,MAAM85B,EAAK51C,KAC5GojD,EAAUttD,MAAMlI,GAAGsoD,EAAOn2C,EAAEhO,KAAK+pB,MAAM85B,EAAK71C,GAAGC,EAAEjO,KAAK+pB,MAAM85B,EAAK51C,GAAGqjD,eAAeA,EAAeC,eAAeA,IAIvH/1D,KAAK2mD,UAAU/wC,OAAOigD,IAMxB3yD,EAAQgR,UAAU8hD,aAAe,SAAS9/C,GACxC,GAAI2/C,KACJ,IAAYhvD,SAARqP,GACF,GAA0B,GAAtB5P,MAAMC,QAAQ2P,IAChB,IAAK,GAAIrQ,GAAI,EAAGA,EAAIqQ,EAAIlQ,OAAQH,IAC9B,GAA2BgB,SAAvB7G,KAAK6+C,MAAM3oC,EAAIrQ,IAAmB,CACpC,GAAIwiD,GAAOroD,KAAK6+C,MAAM3oC,EAAIrQ,GAC1BgwD,GAAU3/C,EAAIrQ,KAAO2M,EAAGhO,KAAK+pB,MAAM85B,EAAK71C,GAAIC,EAAGjO,KAAK+pB,MAAM85B,EAAK51C,SAKnE,IAAwB5L,SAApB7G,KAAK6+C,MAAM3oC,GAAoB,CACjC,GAAImyC,GAAOroD,KAAK6+C,MAAM3oC,EACtB2/C,GAAU3/C,IAAQ1D,EAAGhO,KAAK+pB,MAAM85B,EAAK71C,GAAIC,EAAGjO,KAAK+pB,MAAM85B,EAAK51C,SAKhE,KAAK,GAAIk2C,KAAU3oD,MAAK6+C,MACtB,GAAI7+C,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrC,GAAIN,GAAOroD,KAAK6+C,MAAM8J,EACtBkN,GAAUlN,IAAWn2C,EAAGhO,KAAK+pB,MAAM85B,EAAK71C,GAAIC,EAAGjO,KAAK+pB,MAAM85B,EAAK51C,IAIrE,MAAOojD,IAWT3yD,EAAQgR,UAAU+hD,YAAc,SAAUtN,EAAQz5C,GAChD,GAAIlP,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrB9hD,SAAZqI,IACFA,KAEF,IAAIgnD,IAAgB1jD,EAAGxS,KAAK6+C,MAAM8J,GAAQn2C,EAAGC,EAAGzS,KAAK6+C,MAAM8J,GAAQl2C,EACnEvD,GAAQ0V,SAAWsxC,EACnBhnD,EAAQinD,aAAexN,EAEvB3oD,KAAK6oB,OAAO3Z,OAGZ2rB,SAAQtG,IAAI,iCAWhBrxB,EAAQgR,UAAU2U,OAAS,SAAU3Z,GACnC,MAAgBrI,UAAZqI,OACFA,OAGwBrI,SAAtBqI,EAAQwb,SAAoCxb,EAAQwb,QAAalY,EAAG,EAAGC,EAAG,IACpD5L,SAAtBqI,EAAQwb,OAAOlY,IAA6BtD,EAAQwb,OAAOlY,EAAK,GAC1C3L,SAAtBqI,EAAQwb,OAAOjY,IAA6BvD,EAAQwb,OAAOjY,EAAK,GAC1C5L,SAAtBqI,EAAQ3K,QAAoC2K,EAAQ3K,MAAYvE,KAAKstD,aAC/CzmD,SAAtBqI,EAAQ0V,WAAoC1V,EAAQ0V,SAAY5kB,KAAK0tD,mBAC/C7mD,SAAtBqI,EAAQq6C,YAAoCr6C,EAAQq6C,WAAah5C,SAAS,IAC1ErB,EAAQq6C,aAAc,IAAsBr6C,EAAQq6C,WAAah5C,SAAS,IAC1ErB,EAAQq6C,aAAc,IAAsBr6C,EAAQq6C,cACrB1iD,SAA/BqI,EAAQq6C,UAAUh5C,WAA0BrB,EAAQq6C,UAAUh5C,SAAW,KACpC1J,SAArCqI,EAAQq6C,UAAU6M,iBAAgClnD,EAAQq6C,UAAU6M,eAAiB,qBAEzFp2D,MAAKq2D,YAAYnnD,KAcnBhM,EAAQgR,UAAUmiD,YAAc,SAAUnnD,GACxC,GAAgBrI,SAAZqI,EAEF,YADAA,KAKFlP,MAAKmuD,cACiB,GAAlBj/C,EAAQonD,SACVt2D,KAAK8kD,eAAiB51C,EAAQinD,aAC9Bn2D,KAAK+kD,mBAAqB71C,EAAQwb,QAIb,GAAnB1qB,KAAKykD,YACPzkD,KAAKu2D,kBAAkB,GAGzBv2D,KAAK0kD,YAAc1kD,KAAKstD,YACxBttD,KAAK4kD,kBAAoB5kD,KAAK0tD,kBAC9B1tD,KAAK2kD,YAAcz1C,EAAQ3K,MAI3BvE,KAAKie,UAAUje,KAAK2kD,YACpB,IAAI6R,GAAax2D,KAAKgvD,aAAax8C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,eAClG4wC,GACFjkD,EAAGgkD,EAAWhkD,EAAItD,EAAQ0V,SAASpS,EACnCC,EAAG+jD,EAAW/jD,EAAIvD,EAAQ0V,SAASnS,EAErCzS,MAAK6kD,mBACHryC,EAAGxS,KAAK4kD,kBAAkBpyC,EAAIikD,EAAmBjkD,EAAIxS,KAAK2kD,YAAcz1C,EAAQwb,OAAOlY,EACvFC,EAAGzS,KAAK4kD,kBAAkBnyC,EAAIgkD,EAAmBhkD,EAAIzS,KAAK2kD,YAAcz1C,EAAQwb,OAAOjY,GAIvD,GAA9BvD,EAAQq6C,UAAUh5C,SACO,MAAvBvQ,KAAK8kD,gBACP9kD,KAAK02D,eAAiB12D,KAAKi3B,QAC3Bj3B,KAAKi3B,QAAUj3B,KAAK22D,gBAGpB32D,KAAKie,UAAUje,KAAK2kD,aACpB3kD,KAAK6lD,gBAAgB7lD,KAAK6kD,kBAAkBryC,EAAGxS,KAAK6kD,kBAAkBpyC,GACtEzS,KAAKi3B,YAIPj3B,KAAKwkD,WAAY,EACjBxkD,KAAKskD,eAAiB,GAAKtkD,KAAKg+C,kBAAoB9uC,EAAQq6C,UAAUh5C,SAAW,OAAU,EAAIvQ,KAAKg+C,kBACpGh+C,KAAKukD,wBAA0Br1C,EAAQq6C,UAAU6M,eACjDp2D,KAAK02D,eAAiB12D,KAAKi3B,QAC3Bj3B,KAAKi3B,QAAUj3B,KAAKu2D,kBACpBv2D,KAAKi3B,UACLj3B,KAAKqQ,UAQTnN,EAAQgR,UAAUyiD,cAAgB,WAChC,GAAIT,IAAgB1jD,EAAGxS,KAAK6+C,MAAM7+C,KAAK8kD,gBAAgBtyC,EAAGC,EAAGzS,KAAK6+C,MAAM7+C,KAAK8kD,gBAAgBryC,GACzF+jD,EAAax2D,KAAKgvD,aAAax8C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,eAClG4wC,GACFjkD,EAAGgkD,EAAWhkD,EAAI0jD,EAAa1jD,EAC/BC,EAAG+jD,EAAW/jD,EAAIyjD,EAAazjD,GAE7BmyC,EAAoB5kD,KAAK0tD,kBACzB7I,GACFryC,EAAGoyC,EAAkBpyC,EAAIikD,EAAmBjkD,EAAIxS,KAAKuE,MAAQvE,KAAK+kD,mBAAmBvyC,EACrFC,EAAGmyC,EAAkBnyC,EAAIgkD,EAAmBhkD,EAAIzS,KAAKuE,MAAQvE,KAAK+kD,mBAAmBtyC,EAGvFzS,MAAK6lD,gBAAgBhB,EAAkBryC,EAAEqyC,EAAkBpyC,GAC3DzS,KAAK02D,kBAGPxzD,EAAQgR,UAAUi6C,YAAc,WACH,MAAvBnuD,KAAK8kD,iBACP9kD,KAAKi3B,QAAUj3B,KAAK02D,eACpB12D,KAAK8kD,eAAiB,KACtB9kD,KAAK+kD,mBAAqB,OAS9B7hD,EAAQgR,UAAUqiD,kBAAoB,SAAU9R,GAC9CzkD,KAAKykD,WAAaA,GAAczkD,KAAKykD,WAAazkD,KAAKskD,eACvDtkD,KAAKykD,YAAczkD,KAAKskD,cAExB,IAAIjyB,GAAW1xB,EAAK8P,gBAAgBzQ,KAAKukD,yBAAyBvkD,KAAKykD,WAEvEzkD,MAAKie,UAAUje,KAAK0kD,aAAe1kD,KAAK2kD,YAAc3kD,KAAK0kD,aAAeryB,GAC1EryB,KAAK6lD,gBACH7lD,KAAK4kD,kBAAkBpyC,GAAKxS,KAAK6kD,kBAAkBryC,EAAIxS,KAAK4kD,kBAAkBpyC,GAAK6f,EACnFryB,KAAK4kD,kBAAkBnyC,GAAKzS,KAAK6kD,kBAAkBpyC,EAAIzS,KAAK4kD,kBAAkBnyC,GAAK4f,GAGrFryB,KAAK02D,iBAGD12D,KAAKykD,YAAc,IACrBzkD,KAAKwkD,WAAY,EACjBxkD,KAAKykD,WAAa,EAEhBzkD,KAAKi3B,QADoB,MAAvBj3B,KAAK8kD,eACQ9kD,KAAK22D,cAGL32D,KAAK02D,eAEtB12D,KAAKyuB,KAAK,uBAIdvrB,EAAQgR,UAAUwiD,eAAiB,aAQnCxzD,EAAQgR,UAAUo4C,SAAW,WAC3B,OAAQtsD,KAAK+qD,WAAa/qD,KAAK+qD,UAAU6L,QAQ3C1zD,EAAQgR,UAAU+wB,SAAW,WAC3B,MAAOjlC,MAAKie,aAQd/a,EAAQgR,UAAU0hB,SAAW,WAC3B,MAAO51B,MAAKstD,aAQdpqD,EAAQgR,UAAU2iD,qBAAuB,WACvC,MAAO72D,MAAKgvD,aAAax8C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,gBAI9F3iB,EAAQgR,UAAU4iD,eAAiB,SAASnO,GAC1C,MAA2B9hD,UAAvB7G,KAAK6+C,MAAM8J,GACN3oD,KAAK6+C,MAAM8J,GAAQD,YAD5B,QAKFxlD,EAAQgR,UAAU6iD,kBAAoB,SAASpO,GAC7C,GAAIqO,KACJ,IAA2BnwD,SAAvB7G,KAAK6+C,MAAM8J,GAGb,IAAK,GAFDN,GAAOroD,KAAK6+C,MAAM8J,GAClBsO,GAAWtO,QAAS,GACf9iD,EAAI,EAAGA,EAAIwiD,EAAKrI,MAAMh6C,OAAQH,IAAK,CAC1C,GAAI6qD,GAAOrI,EAAKrI,MAAMn6C,EAClB6qD,GAAKwG,MAAQvO,EACc9hD,SAAzBowD,EAAQvG,EAAKyG,UACfH,EAASzuD,KAAKmoD,EAAKyG,QACnBF,EAAQvG,EAAKyG,SAAU,GAGlBzG,EAAKyG,QAAUxO,GACK9hD,SAAvBowD,EAAQvG,EAAKwG,QACfF,EAASzuD,KAAKmoD,EAAKwG,MACnBD,EAAQvG,EAAKwG,OAAQ,GAK7B,MAAOF,IAIT9zD,EAAQgR,UAAUkjD,iBAAmB,SAASzO,GAC5C,GAAI0O,KACJ,IAA2BxwD,SAAvB7G,KAAK6+C,MAAM8J,GAEb,IAAK,GADDN,GAAOroD,KAAK6+C,MAAM8J,GACb9iD,EAAI,EAAGA,EAAIwiD,EAAKrI,MAAMh6C,OAAQH,IACrCwxD,EAAU9uD,KAAK8/C,EAAKrI,MAAMn6C,GAAGxF,GAGjC,OAAOg3D,IAGTn0D,EAAQgR,UAAUojD,oBAAsB,SAAS/rD,GAC/C,MAAO5K,GAAKqL,WAAWT,IAIzB1L,EAAOD,QAAUsD,GAKb,SAASrD,EAAQD,EAASM,GAoB9B,QAASkD,GAAMyuD,EAAY1uD,EAASo0D,GAClC,IAAKp0D,EACH,KAAM,qBAER,IAAIwL,IAAU,QAAQ,WAClBq1C,EAAYrjD,EAAK+N,sBAAsBC,EAAO4oD,EAClDv3D,MAAKkP,QAAU80C,EAAUhE,MACzBhgD,KAAK2gD,QAAUqD,EAAUrD,QACzB3gD,KAAKkP,QAAsB,aAAIqoD,EAA+B,aAG9Dv3D,KAAKmD,QAAUA,EAGfnD,KAAKK,GAASwG,OACd7G,KAAKm3D,OAAStwD,OACd7G,KAAKk3D,KAASrwD,OACd7G,KAAKunC,MAAS1gC,OACd7G,KAAKw3D,cAAgBx3D,KAAKkP,QAAQoE,MAAQtT,KAAKkP,QAAQ+wC,yBACvDjgD,KAAKsE,MAASuC,OACd7G,KAAKumC,UAAW,EAChBvmC,KAAKgN,OAAQ,EACbhN,KAAKy3D,iBAAmBxvD,IAAI,EAAEJ,KAAK,EAAEyL,MAAM,EAAEC,OAAO,EAAEmkD,MAAM,GAC5D13D,KAAK23D,YAAa,EAClB33D,KAAK8xD,YAAa,EAElB9xD,KAAKmqB,KAAO,KACZnqB,KAAKoqB,GAAK,KACVpqB,KAAKqyD,IAAM,KAEXryD,KAAK43D,WAAa,KAClB53D,KAAK63D,SAAW,KAIhB73D,KAAK83D,kBACL93D,KAAK+3D,gBAEL/3D,KAAK2wD,WAAY,EAEjB3wD,KAAKg4D,YAAc,EACnBh4D,KAAKi4D,aAAc,EAEnBj4D,KAAK4xD,cAAcC,GAEnB7xD,KAAKk4D,qBAAsB,EAC3Bl4D,KAAKm4D,cAAgBhuC,KAAK,KAAMC,GAAG,KAAMguC,cACzCp4D,KAAKq4D,cAAgB,KAjEvB,GAAI13D,GAAOT,EAAoB,GAC3BqD,EAAOrD,EAAoB,GAwE/BkD,GAAK8Q,UAAU09C,cAAgB,SAASC,GAEtC,GADA7xD,KAAK8xD,YAAa,EACbD,EAAL,CAIA,GAAIljD,IAAU,QAAQ,WAAW,WAAW,YAAY,WAAW,kBAAkB,kBAAkB,QACrG,2BAA2B,aAAa,mBAAmB,OAAO,eAAe,iBAAkB,UACnG,wBAAwB,eAsC1B,QApCAhO,EAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAAS2iD,GAEvBhrD,SAApBgrD,EAAW1nC,OAA+BnqB,KAAKm3D,OAAStF,EAAW1nC,MACjDtjB,SAAlBgrD,EAAWznC,KAA+BpqB,KAAKk3D,KAAOrF,EAAWznC,IAE/CvjB,SAAlBgrD,EAAWxxD,KAA+BL,KAAKK,GAAKwxD,EAAWxxD,IAC1CwG,SAArBgrD,EAAW7+C,QAA+BhT,KAAKgT,MAAQ6+C,EAAW7+C,MAAOhT,KAAK23D,YAAa,GAEtE9wD,SAArBgrD,EAAWtqB,QAA6BvnC,KAAKunC,MAAQsqB,EAAWtqB,OAC3C1gC,SAArBgrD,EAAWvtD,QAA6BtE,KAAKsE,MAAQutD,EAAWvtD,OAC1CuC,SAAtBgrD,EAAW7rD,SAA6BhG,KAAK2gD,QAAQK,aAAe6Q,EAAW7rD,QAE1Da,SAArBgrD,EAAWtmD,QACbvL,KAAKkP,QAAQsxC,cAAe,EACxB7/C,EAAK8D,SAASotD,EAAWtmD,QAC3BvL,KAAKkP,QAAQ3D,MAAMA,MAAQsmD,EAAWtmD,MACtCvL,KAAKkP,QAAQ3D,MAAMwB,UAAY8kD,EAAWtmD,QAGX1E,SAA3BgrD,EAAWtmD,MAAMA,QAA0BvL,KAAKkP,QAAQ3D,MAAMA,MAAQsmD,EAAWtmD,MAAMA,OACxD1E,SAA/BgrD,EAAWtmD,MAAMwB,YAA0B/M,KAAKkP,QAAQ3D,MAAMwB,UAAY8kD,EAAWtmD,MAAMwB,WAChElG,SAA3BgrD,EAAWtmD,MAAMyB,QAA0BhN,KAAKkP,QAAQ3D,MAAMyB,MAAQ6kD,EAAWtmD,MAAMyB,SAO/FhN,KAAK0+C,UAEL1+C,KAAKg4D,WAAah4D,KAAKg4D,YAAoCnxD,SAArBgrD,EAAWv+C,MACjDtT,KAAKi4D,YAAcj4D,KAAKi4D,aAAsCpxD,SAAtBgrD,EAAW7rD,OAEnDhG,KAAKw3D,cAAgBx3D,KAAKkP,QAAQoE,MAAOtT,KAAKkP,QAAQ+wC,yBAG9CjgD,KAAKkP,QAAQxB,OACnB,IAAK,OAAiB1N,KAAK+wC,KAAO/wC,KAAKs4D,SAAW,MAClD,KAAK,QAAiBt4D,KAAK+wC,KAAO/wC,KAAKu4D,UAAY,MACnD,KAAK,eAAiBv4D,KAAK+wC,KAAO/wC,KAAKw4D,gBAAkB,MACzD,KAAK,YAAiBx4D,KAAK+wC,KAAO/wC,KAAKy4D,aAAe,MACtD,SAAsBz4D,KAAK+wC,KAAO/wC,KAAKs4D,aAQ3Cl1D,EAAK8Q,UAAUwqC,QAAU,WACvB1+C,KAAKkyD,aAELlyD,KAAKmqB,KAAOnqB,KAAKmD,QAAQ07C,MAAM7+C,KAAKm3D,SAAW,KAC/Cn3D,KAAKoqB,GAAKpqB,KAAKmD,QAAQ07C,MAAM7+C,KAAKk3D,OAAS,KAC3Cl3D,KAAK2wD,UAAa3wD,KAAKmqB,MAAQnqB,KAAKoqB,GAEhCpqB,KAAK2wD,WACP3wD,KAAKmqB,KAAKuuC,WAAW14D,MACrBA,KAAKoqB,GAAGsuC,WAAW14D,QAGfA,KAAKmqB,MACPnqB,KAAKmqB,KAAKwuC,WAAW34D,MAEnBA,KAAKoqB,IACPpqB,KAAKoqB,GAAGuuC,WAAW34D,QAQzBoD,EAAK8Q,UAAUg+C,WAAa,WACtBlyD,KAAKmqB,OACPnqB,KAAKmqB,KAAKwuC,WAAW34D,MACrBA,KAAKmqB,KAAO,MAEVnqB,KAAKoqB,KACPpqB,KAAKoqB,GAAGuuC,WAAW34D,MACnBA,KAAKoqB,GAAK,MAGZpqB,KAAK2wD,WAAY,GAQnBvtD,EAAK8Q,UAAUs8C,SAAW,WACxB,MAA6B,kBAAfxwD,MAAKunC,MAAuBvnC,KAAKunC,QAAUvnC,KAAKunC,OAQhEnkC,EAAK8Q,UAAUyB,SAAW,WACxB,MAAO3V,MAAKsE,OASdlB,EAAK8Q,UAAUu+C,cAAgB,SAAStuD,EAAKC,EAAKC,GAChD,IAAKrE,KAAKg4D,YAA6BnxD,SAAf7G,KAAKsE,MAAqB,CAChD,GAAIC,GAAQvE,KAAKkP,QAAQ0vC,sBAAsBz6C,EAAKC,EAAKC,EAAOrE,KAAKsE,OACjEs0D,EAAY54D,KAAKkP,QAAQiZ,SAAWnoB,KAAKkP,QAAQgZ,QACrDloB,MAAKkP,QAAQoE,MAAQtT,KAAKkP,QAAQgZ,SAAW3jB,EAAQq0D,EACrD54D,KAAKw3D,cAAgBx3D,KAAKkP,QAAQoE,MAAOtT,KAAKkP,QAAQ+wC,2BAU1D78C,EAAK8Q,UAAU68B,KAAO,WACpB,KAAM,uCAQR3tC,EAAK8Q,UAAUq8C,kBAAoB,SAASxsC,GAC1C,GAAI/jB,KAAK2wD,UAAW,CAClB,GAAI1gC,GAAU,GACV4oC,EAAQ74D,KAAKmqB,KAAK3X,EAClBsmD,EAAQ94D,KAAKmqB,KAAK1X,EAClBsmD,EAAM/4D,KAAKoqB,GAAG5X,EACdwmD,EAAMh5D,KAAKoqB,GAAG3X,EACdwmD,EAAOl1C,EAAIlc,KACXqxD,EAAOn1C,EAAI9b,IAEX8jB,EAAO/rB,KAAKm5D,mBAAmBN,EAAOC,EAAOC,EAAKC,EAAKC,EAAMC,EAEjE,OAAejpC,GAAPlE,EAGR,OAAO,GAIX3oB,EAAK8Q,UAAUklD,UAAY,SAASrxC,GAClC,GAAIsxC,GAAWr5D,KAAKkP,QAAQ3D,KAC5B,IAAiC,GAA7BvL,KAAKkP,QAAQuxC,aAAsB,CACrC,GACI6Y,GAAWC,EADXC,EAAMzxC,EAAI0xC,qBAAqBz5D,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,EAAGzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,EAkBhF,OAhBA6mD,GAAYt5D,KAAKmqB,KAAKjb,QAAQ3D,MAAMwB,UAAUD,OAC9CysD,EAAUv5D,KAAKoqB,GAAGlb,QAAQ3D,MAAMwB,UAAUD,OAGhB,GAAtB9M,KAAKmqB,KAAKoc,UAAyC,GAApBvmC,KAAKoqB,GAAGmc,UACzC+yB,EAAY34D,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,SAC9E+tD,EAAU54D,EAAK2K,gBAAgBtL,KAAKoqB,GAAGlb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,UAE7C,GAAtBxL,KAAKmqB,KAAKoc,UAAwC,GAApBvmC,KAAKoqB,GAAGmc,SAC7CgzB,EAAUv5D,KAAKoqB,GAAGlb,QAAQ3D,MAAMuB,OAEH,GAAtB9M,KAAKmqB,KAAKoc,UAAyC,GAApBvmC,KAAKoqB,GAAGmc,WAC9C+yB,EAAYt5D,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,QAEtC0sD,EAAIE,aAAa,EAAGJ,GACpBE,EAAIE,aAAa,EAAGH,GACbC,EAwBT,MArBIx5D,MAAK8xD,cAAe,IACW,MAA7B9xD,KAAKkP,QAAQsxC,aACf6Y,GACEtsD,UAAW/M,KAAKoqB,GAAGlb,QAAQ3D,MAAMwB,UAAUD,OAC3CE,MAAOhN,KAAKoqB,GAAGlb,QAAQ3D,MAAMyB,MAAMF,OACnCvB,MAAO5K,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,WAGvC,QAA7BxL,KAAKkP,QAAQsxC,cAAuD,GAA7BxgD,KAAKkP,QAAQsxC,gBAC3D6Y,GACEtsD,UAAW/M,KAAKmqB,KAAKjb,QAAQ3D,MAAMwB,UAAUD,OAC7CE,MAAOhN,KAAKmqB,KAAKjb,QAAQ3D,MAAMyB,MAAMF,OACrCvB,MAAO5K,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,WAG7ExL,KAAKkP,QAAQ3D,MAAQ8tD,EACrBr5D,KAAK8xD,YAAa,GAKC,GAAjB9xD,KAAKumC,SAA4B8yB,EAAStsD,UACvB,GAAd/M,KAAKgN,MAAuBqsD,EAASrsD,MACTqsD,EAAS9tD,OAWhDnI,EAAK8Q,UAAUokD,UAAY,SAASvwC,GAKlC,GAHAA,EAAIY,YAAc3oB,KAAKo5D,UAAUrxC,GACjCA,EAAIO,UAActoB,KAAK25D,gBAEnB35D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAExB,GAGIxX,GAHAy/C,EAAMryD,KAAK45D,MAAM7xC,EAIrB,IAAI/nB,KAAKgT,MAAO,CACd,GAAyC,GAArChT,KAAKkP,QAAQi0C,aAAah0C,SAA0B,MAAPkjD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAK75D,KAAKmqB,KAAK3X,EAAI6/C,EAAI7/C,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAI6/C,EAAI7/C,IAClEsnD,EAAY,IAAK,IAAK95D,KAAKmqB,KAAK1X,EAAI4/C,EAAI5/C,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAI4/C,EAAI5/C,GACtEG,IAASJ,EAAEqnD,EAAWpnD,EAAEqnD,OAGxBlnD,GAAQ5S,KAAK+5D,aAAa,GAE5B/5D,MAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,QAG3C,CACH,GAAID,GAAGC,EACH6Z,EAAStsB,KAAK2gD,QAAQK,aAAe,EACrCqH,EAAOroD,KAAKmqB,IACXk+B,GAAK/0C,OACR+0C,EAAK4R,OAAOlyC,GAEVsgC,EAAK/0C,MAAQ+0C,EAAK90C,QACpBf,EAAI61C,EAAK71C,EAAI61C,EAAK/0C,MAAQ,EAC1Bb,EAAI41C,EAAK51C,EAAI6Z,IAGb9Z,EAAI61C,EAAK71C,EAAI8Z,EACb7Z,EAAI41C,EAAK51C,EAAI41C,EAAK90C,OAAS,GAE7BvT,KAAKk6D,QAAQnyC,EAAKvV,EAAGC,EAAG6Z,GACxB1Z,EAAQ5S,KAAKm6D,eAAe3nD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,KAUhDrP,EAAK8Q,UAAUylD,cAAgB,WAC7B,MAAqB,IAAjB35D,KAAKumC,SACC/hC,KAAKJ,IAAII,KAAKL,IAAInE,KAAKw3D,cAAex3D,KAAKkP,QAAQiZ,UAAW,GAAInoB,KAAKo6D,iBAG7D,GAAdp6D,KAAKgN,MACAxI,KAAKJ,IAAII,KAAKL,IAAInE,KAAKkP,QAAQgxC,WAAYlgD,KAAKkP,QAAQiZ,UAAW,GAAInoB,KAAKo6D,iBAG5E51D,KAAKJ,IAAIpE,KAAKkP,QAAQoE,MAAO,GAAItT,KAAKo6D,kBAKnDh3D,EAAK8Q,UAAUmmD,mBAAqB,WAClC,GAAyC,GAArCr6D,KAAKkP,QAAQi0C,aAAaC,SAAwD,GAArCpjD,KAAKkP,QAAQi0C,aAAah0C,QACzE,MAAOnP,MAAKqyD,GAET,IAAyC,GAArCryD,KAAKkP,QAAQi0C,aAAah0C,QACjC,OAAQqD,EAAE,EAAEC,EAAE,EAGd,IAAI6nD,GAAO,KACPC,EAAO,KACPpR,EAASnpD,KAAKkP,QAAQi0C,aAAaE,UACnCl8C,EAAOnH,KAAKkP,QAAQi0C,aAAah8C,KACjCyY,EAAKpb,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACpCqN,EAAKrb,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACxC,IAAY,YAARtL,GAA8B,iBAARA,EACpB3C,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACjEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,GAEvB7f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,GAGzB7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,GAEvB7f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,IAGtB,YAAR1Y,IACFmzD,EAAYnR,EAAStpC,EAAdD,EAAmB5f,KAAKmqB,KAAK3X,EAAI8nD,IAGnC91D,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KACtEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,GAEvB5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,GAGzB5f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,GAEvB5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,IAGtB,YAARzY,IACFozD,EAAYpR,EAASvpC,EAAdC,EAAmB7f,KAAKmqB,KAAK1X,EAAI8nD,QAIzC,IAAY,iBAARpzD,EACH3C,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACrE6nD,EAAOt6D,KAAKmqB,KAAK3X,EAEf+nD,EADEv6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACjBzS,KAAKoqB,GAAG3X,GAAK,EAAI02C,GAAUtpC,EAG3B7f,KAAKoqB,GAAG3X,GAAK,EAAI02C,GAAUtpC,GAG7Brb,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KAExE6nD,EADEt6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EACjBxS,KAAKoqB,GAAG5X,GAAK,EAAI22C,GAAUvpC,EAG3B5f,KAAKoqB,GAAG5X,GAAK,EAAI22C,GAAUvpC,EAEpC26C,EAAOv6D,KAAKmqB,KAAK1X,OAGhB,IAAY,cAARtL,EAELmzD,EADEt6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EACjBxS,KAAKoqB,GAAG5X,GAAK,EAAI22C,GAAUvpC,EAG3B5f,KAAKoqB,GAAG5X,GAAK,EAAI22C,GAAUvpC,EAEpC26C,EAAOv6D,KAAKmqB,KAAK1X,MAEd,IAAY,YAARtL,EACPmzD,EAAOt6D,KAAKmqB,KAAK3X,EAEf+nD,EADEv6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACjBzS,KAAKoqB,GAAG3X,GAAK,EAAI02C,GAAUtpC,EAG3B7f,KAAKoqB,GAAG3X,GAAK,EAAI02C,GAAUtpC,MAGjC,IAAY,YAAR1Y,EAAoB,CAC3B,GAAIyY,GAAK5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC3BqN,EAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3B6Z,EAAS9nB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAC9B26C,EAAKh2D,KAAKgoB,GAEViuC,EAAgBj2D,KAAKk2D,MAAM76C,EAAGD,GAC9B+6C,GAAWF,GAA2B,GAATtR,EAAgB,IAAOqR,IAAO,EAAIA,EAEnEF,GAAOt6D,KAAKmqB,KAAK3X,GAAY,GAAP22C,EAAa,IAAK78B,EAAO9nB,KAAK4a,IAAIu7C,GACxDJ,EAAOv6D,KAAKmqB,KAAK1X,GAAY,GAAP02C,EAAa,IAAK78B,EAAO9nB,KAAK+a,IAAIo7C,OAErD,IAAY,aAARxzD,EAAqB,CAC5B,GAAIyY,GAAK5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC3BqN,EAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3B6Z,EAAS9nB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAC9B26C,EAAKh2D,KAAKgoB,GAEViuC,EAAgBj2D,KAAKk2D,MAAM76C,EAAGD,GAC9B+6C,GAAWF,GAA4B,IAATtR,EAAgB,IAAOqR,IAAO,EAAIA,EAEpEF,GAAOt6D,KAAKmqB,KAAK3X,GAAY,GAAP22C,EAAa,IAAK78B,EAAO9nB,KAAK4a,IAAIu7C,GACxDJ,EAAOv6D,KAAKmqB,KAAK1X,GAAY,GAAP02C,EAAa,IAAK78B,EAAO9nB,KAAK+a,IAAIo7C,OAGpDn2D,MAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,GACjEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,EAC9By6C,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,GAE/Bt6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,EAC9By6C,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,GAGjCt6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,EAC9By6C,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,GAE/Bt6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAAStpC,EAC9B06C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAAStpC,EAC9By6C,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,EAAOt6D,KAAKoqB,GAAG5X,EAAI8nD,IAInC91D,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KACtEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,EAC9B26C,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,GAE/Bv6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,EAC9B26C,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,GAGjCv6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,EAC9B26C,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,GAE/Bv6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B8nD,EAAOt6D,KAAKmqB,KAAK3X,EAAI22C,EAASvpC,EAC9B26C,EAAOv6D,KAAKmqB,KAAK1X,EAAI02C,EAASvpC,EAC9B26C,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,EAAOv6D,KAAKoqB,GAAG3X,EAAI8nD,IAO9C,QAAQ/nD,EAAG8nD,EAAM7nD,EAAG8nD,IASxBn3D,EAAK8Q,UAAU0lD,MAAQ,SAAU7xC,GAI/B,GAFAA,EAAIa,YACJb,EAAIc,OAAO7oB,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,GACO,GAArCzS,KAAKkP,QAAQi0C,aAAah0C,QAAiB,CAC7C,GAAyC,GAArCnP,KAAKkP,QAAQi0C,aAAaC,QAAkB,CAC9C,GAAIiP,GAAMryD,KAAKq6D,oBACf,OAAa,OAAThI,EAAI7/C,GACNuV,EAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9BsV,EAAIlH,SACG,OAKPkH,EAAI6yC,iBAAiBvI,EAAI7/C,EAAE6/C,EAAI5/C,EAAEzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GACpDsV,EAAIlH,SAGGwxC,GAMT,MAFAtqC,GAAI6yC,iBAAiB56D,KAAKqyD,IAAI7/C,EAAExS,KAAKqyD,IAAI5/C,EAAEzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9DsV,EAAIlH,SACG7gB,KAAKqyD,IAMd,MAFAtqC,GAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9BsV,EAAIlH,SACG,MAYXzd,EAAK8Q,UAAUgmD,QAAU,SAAUnyC,EAAKvV,EAAGC,EAAG6Z,GAE5CvE,EAAIa,YACJb,EAAIwE,IAAI/Z,EAAGC,EAAG6Z,EAAQ,EAAG,EAAI9nB,KAAKgoB,IAAI,GACtCzE,EAAIlH,UAWNzd,EAAK8Q,UAAU8lD,OAAS,SAAUjyC,EAAKuC,EAAM9X,EAAGC,GAC9C,GAAI6X,EAAM,CACRvC,EAAIQ,MAASvoB,KAAKmqB,KAAKoc,UAAYvmC,KAAKoqB,GAAGmc,SAAY,QAAU,IACjEvmC,KAAKkP,QAAQkwC,SAAW,MAAQp/C,KAAKkP,QAAQmwC,QAC7C,IAAIqY,EAEJ,IAAuB,GAAnB13D,KAAK23D,WAAoB,CAC3B,GAAIjsB,GAAQhnC,OAAO4lB,GAAMhiB,MAAM,MAC3BuyD,EAAYnvB,EAAM1lC,OAClBo5C,EAAWn7C,OAAOjE,KAAKkP,QAAQkwC,SACnCsY,GAAQjlD,GAAK,EAAIooD,GAAa,EAAIzb,CAGlC,KAAK,GADD9rC,GAAQyU,EAAI+yC,YAAYpvB,EAAM,IAAIp4B,MAC7BzN,EAAI,EAAOg1D,EAAJh1D,EAAeA,IAAK,CAClC,GAAIyiB,GAAYP,EAAI+yC,YAAYpvB,EAAM7lC,IAAIyN,KAC1CA,GAAQgV,EAAYhV,EAAQgV,EAAYhV,EAE1C,GAAIC,GAASvT,KAAKkP,QAAQkwC,SAAWyb,EACjChzD,EAAO2K,EAAIc,EAAQ,EACnBrL,EAAMwK,EAAIc,EAAS,CAGvBvT,MAAKy3D,iBAAmBxvD,IAAIA,EAAIJ,KAAKA,EAAKyL,MAAMA,EAAMC,OAAOA,EAAOmkD,MAAMA,GAG/E,GAAIA,GAAQ13D,KAAKy3D,gBAAgBC,KAEjC3vC,GAAI6qC,OAE+B,cAA/B5yD,KAAKkP,QAAQixC,iBAChBp4B,EAAI8qC,UAAUrgD,EAAGklD,GACjB13D,KAAK+6D,yBAAyBhzC,GAC9BvV,EAAI,EACJklD,EAAQ,GAIT13D,KAAKg7D,eAAejzC,GACpB/nB,KAAKi7D,eAAelzC,EAAIvV,EAAEklD,EAAOhsB,EAAOmvB,EAAWzb,GAEnDr3B,EAAIgrC,YASL3vD,EAAK8Q,UAAU6mD,yBAA2B,SAAShzC,GAClD,GAAIlI,GAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3BmN,EAAK5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EAC3B0oD,EAAiB12D,KAAKk2D,MAAM76C,EAAID,IAGf,GAAjBs7C,GAA4B,EAALt7C,GAAYs7C,EAAiB,GAAU,EAALt7C,KAC5Ds7C,GAAkC12D,KAAKgoB,IAGxCzE,EAAIozC,OAAOD,IASZ93D,EAAK8Q,UAAU8mD,eAAiB,SAASjzC,GACxC,GAA8BlhB,SAA1B7G,KAAKkP,QAAQowC,UAAoD,OAA1Bt/C,KAAKkP,QAAQowC,UAA+C,SAA1Bt/C,KAAKkP,QAAQowC,SAAqB,CAC9Gv3B,EAAIiB,UAAYhpB,KAAKkP,QAAQowC,QAE7B,IAAI8b,GAAa,CAEoB,gBAA/Bp7D,KAAKkP,QAAQixC,eACfp4B,EAAIszC,SAAuC,IAA7Br7D,KAAKy3D,gBAAgBnkD,MAA4C,IAA9BtT,KAAKy3D,gBAAgBlkD,OAAcvT,KAAKy3D,gBAAgBnkD,MAAOtT,KAAKy3D,gBAAgBlkD,QAE/F,cAA/BvT,KAAKkP,QAAQixC,eACpBp4B,EAAIszC,SAAuC,IAA7Br7D,KAAKy3D,gBAAgBnkD,QAAetT,KAAKy3D,gBAAgBlkD,OAAS6nD,GAAap7D,KAAKy3D,gBAAgBnkD,MAAOtT,KAAKy3D,gBAAgBlkD,QAExG,cAA/BvT,KAAKkP,QAAQixC,eACpBp4B,EAAIszC,SAAuC,IAA7Br7D,KAAKy3D,gBAAgBnkD,MAAa8nD,EAAYp7D,KAAKy3D,gBAAgBnkD,MAAOtT,KAAKy3D,gBAAgBlkD,QAG7GwU,EAAIszC,SAASr7D,KAAKy3D,gBAAgB5vD,KAAM7H,KAAKy3D,gBAAgBxvD,IAAKjI,KAAKy3D,gBAAgBnkD,MAAOtT,KAAKy3D,gBAAgBlkD,UAezHnQ,EAAK8Q,UAAU+mD,eAAiB,SAASlzC,EAAKvV,EAAGklD,EAAOhsB,EAAOmvB,EAAWzb,GAMxE,GAJDr3B,EAAIiB,UAAYhpB,KAAKkP,QAAQiwC,WAAa,QAC1Cp3B,EAAIuB,UAAY,SAGoB,cAA/BtpB,KAAKkP,QAAQixC,eAAgC,CAC/C,GAAIib,GAAa,CACkB,eAA/Bp7D,KAAKkP,QAAQixC,gBACfp4B,EAAIwB,aAAe,aACnBmuC,GAAS,EAAI0D,GAEyB,cAA/Bp7D,KAAKkP,QAAQixC,gBACpBp4B,EAAIwB,aAAe,UACnBmuC,GAAS,EAAI0D,GAGbrzC,EAAIwB,aAAe,aAIrBxB,GAAIwB,aAAe,QAIjBvpB,MAAKkP,QAAQqwC,gBAAkB,IACjCx3B,EAAIO,UAActoB,KAAKkP,QAAQqwC,gBAC/Bx3B,EAAIY,YAAc3oB,KAAKkP,QAAQswC,gBAC/Bz3B,EAAIuzC,SAAc,QAErB,KAAK,GAAIz1D,GAAI,EAAOg1D,EAAJh1D,EAAeA,IACzB7F,KAAKkP,QAAQqwC,gBAAkB,GAChCx3B,EAAIwzC,WAAW7vB,EAAM7lC,GAAI2M,EAAGklD,GAEhC3vC,EAAIyB,SAASkiB,EAAM7lC,GAAI2M,EAAGklD,GAC1BA,GAAStY,GAaXh8C,EAAK8Q,UAAUukD,cAAgB,SAAS1wC,GAEtCA,EAAIY,YAAc3oB,KAAKo5D,UAAUrxC,GACjCA,EAAIO,UAAYtoB,KAAK25D,eAErB,IAAItH,GAAM,IAEV,IAAwBxrD,SAApBkhB,EAAIyzC,YAA2B,CACjCzzC,EAAI6qC,MAEJ,IAAI6I,IAAW,EAEbA,GAD+B50D,SAA7B7G,KAAKkP,QAAQmxC,KAAKr6C,QAAkDa,SAA1B7G,KAAKkP,QAAQmxC,KAAKC,KACnDtgD,KAAKkP,QAAQmxC,KAAKr6C,OAAOhG,KAAKkP,QAAQmxC,KAAKC,MAG3C,EAAE,GAIfv4B,EAAIyzC,YAAYC,GAChB1zC,EAAI2zC,eAAiB,EAGrBrJ,EAAMryD,KAAK45D,MAAM7xC,GAGjBA,EAAIyzC,aAAa,IACjBzzC,EAAI2zC,eAAiB,EACrB3zC,EAAIgrC,cAIJhrC,GAAIa,YACJb,EAAI4zC,QAAU,QACsB90D,SAAhC7G,KAAKkP,QAAQmxC,KAAKE,UAEpBx4B,EAAI6zC,WAAW57D,KAAKmqB,KAAK3X,EAAExS,KAAKmqB,KAAK1X,EAAEzS,KAAKoqB,GAAG5X,EAAExS,KAAKoqB,GAAG3X,GACpDzS,KAAKkP,QAAQmxC,KAAKr6C,OAAOhG,KAAKkP,QAAQmxC,KAAKC,IAAItgD,KAAKkP,QAAQmxC,KAAKE,UAAUvgD,KAAKkP,QAAQmxC,KAAKC,MAE9Dz5C,SAA7B7G,KAAKkP,QAAQmxC,KAAKr6C,QAAkDa,SAA1B7G,KAAKkP,QAAQmxC,KAAKC,IAEnEv4B,EAAI6zC,WAAW57D,KAAKmqB,KAAK3X,EAAExS,KAAKmqB,KAAK1X,EAAEzS,KAAKoqB,GAAG5X,EAAExS,KAAKoqB,GAAG3X,GACpDzS,KAAKkP,QAAQmxC,KAAKr6C,OAAOhG,KAAKkP,QAAQmxC,KAAKC,OAIhDv4B,EAAIc,OAAO7oB,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,GAClCsV,EAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,IAEhCsV,EAAIlH,QAIN,IAAI7gB,KAAKgT,MAAO,CACd,GAAIJ,EACJ,IAAyC,GAArC5S,KAAKkP,QAAQi0C,aAAah0C,SAA0B,MAAPkjD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAK75D,KAAKmqB,KAAK3X,EAAI6/C,EAAI7/C,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAI6/C,EAAI7/C,IAClEsnD,EAAY,IAAK,IAAK95D,KAAKmqB,KAAK1X,EAAI4/C,EAAI5/C,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAI4/C,EAAI5/C,GACtEG,IAASJ,EAAEqnD,EAAWpnD,EAAEqnD,OAGxBlnD,GAAQ5S,KAAK+5D,aAAa,GAE5B/5D,MAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,KAUhDrP,EAAK8Q,UAAU6lD,aAAe,SAAU8B,GACtC,OACErpD,GAAI,EAAIqpD,GAAc77D,KAAKmqB,KAAK3X,EAAIqpD,EAAa77D,KAAKoqB,GAAG5X,EACzDC,GAAI,EAAIopD,GAAc77D,KAAKmqB,KAAK1X,EAAIopD,EAAa77D,KAAKoqB,GAAG3X,IAa7DrP,EAAK8Q,UAAUimD,eAAiB,SAAU3nD,EAAGC,EAAG6Z,EAAQuvC,GACtD,GAAItK,GAA6B,GAApBsK,EAAa,EAAE,GAASr3D,KAAKgoB,EAC1C,QACEha,EAAGA,EAAI8Z,EAAS9nB,KAAK+a,IAAIgyC,GACzB9+C,EAAGA,EAAI6Z,EAAS9nB,KAAK4a,IAAImyC,KAW7BnuD,EAAK8Q,UAAUskD,iBAAmB,SAASzwC,GACzC,GAAInV,EAMJ,IAJAmV,EAAIY,YAAc3oB,KAAKo5D,UAAUrxC,GACjCA,EAAIiB,UAAYjB,EAAIY,YACpBZ,EAAIO,UAAYtoB,KAAK25D,gBAEjB35D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAExB,GAAIioC,GAAMryD,KAAK45D,MAAM7xC,GAEjBwpC,EAAQ/sD,KAAKk2D,MAAO16D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrExM,GAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQkxC,gBAE1D,IAAyC,GAArCpgD,KAAKkP,QAAQi0C,aAAah0C,SAA0B,MAAPkjD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAK75D,KAAKmqB,KAAK3X,EAAI6/C,EAAI7/C,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAI6/C,EAAI7/C,IAClEsnD,EAAY,IAAK,IAAK95D,KAAKmqB,KAAK1X,EAAI4/C,EAAI5/C,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAI4/C,EAAI5/C,GACtEG,IAASJ,EAAEqnD,EAAWpnD,EAAEqnD,OAGxBlnD,GAAQ5S,KAAK+5D,aAAa,GAG5BhyC,GAAI+zC,MAAMlpD,EAAMJ,EAAGI,EAAMH,EAAG8+C,EAAOvrD,GACnC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,OACPhT,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,OAG3C,CAEH,GAAID,GAAGC,EACH6Z,EAAS,IAAO9nB,KAAKJ,IAAI,IAAIpE,KAAK2gD,QAAQK,cAC1CqH,EAAOroD,KAAKmqB,IACXk+B,GAAK/0C,OACR+0C,EAAK4R,OAAOlyC,GAEVsgC,EAAK/0C,MAAQ+0C,EAAK90C,QACpBf,EAAI61C,EAAK71C,EAAiB,GAAb61C,EAAK/0C,MAClBb,EAAI41C,EAAK51C,EAAI6Z,IAGb9Z,EAAI61C,EAAK71C,EAAI8Z,EACb7Z,EAAI41C,EAAK51C,EAAkB,GAAd41C,EAAK90C,QAEpBvT,KAAKk6D,QAAQnyC,EAAKvV,EAAGC,EAAG6Z,EAGxB,IAAIilC,GAAQ,GAAM/sD,KAAKgoB,GACnBxmB,GAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQkxC,gBAC1DxtC,GAAQ5S,KAAKm6D,eAAe3nD,EAAGC,EAAG6Z,EAAQ,IAC1CvE,EAAI+zC,MAAMlpD,EAAMJ,EAAGI,EAAMH,EAAG8+C,EAAOvrD,GACnC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,QACPJ,EAAQ5S,KAAKm6D,eAAe3nD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,MAKlDrP,EAAK8Q,UAAU6nD,eAAiB,SAASxtD,GACvC,GAAI8jD,GAAMryD,KAAKq6D,qBAEX7nD,EAAIhO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGvO,KAAKmqB,KAAK3X,EAAK,EAAEjE,GAAG,EAAIA,GAAI8jD,EAAI7/C,EAAIhO,KAAKkwB,IAAInmB,EAAE,GAAGvO,KAAKoqB,GAAG5X,EAC9EC,EAAIjO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGvO,KAAKmqB,KAAK1X,EAAK,EAAElE,GAAG,EAAIA,GAAI8jD,EAAI5/C,EAAIjO,KAAKkwB,IAAInmB,EAAE,GAAGvO,KAAKoqB,GAAG3X,CAElF,QAAQD,EAAEA,EAAEC,EAAEA,IAWhBrP,EAAK8Q,UAAU8nD,oBAAsB,SAAS7xC,EAAKpC,GACjD,GAIIxB,GAAIgrC,EAAM0K,EAAkBC,EAAiBC,EAJ7C1sD,EAAgB,GAChBC,EAAY,EACZC,EAAM,EACNC,EAAO,EAEPwsD,EAAY,GACZ/T,EAAOroD,KAAKoqB,EAKhB,KAJY,GAARD,IACFk+B,EAAOroD,KAAKmqB,MAGAva,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAAwB,IAAdF,EAAMC,EAOpB,IALA2W,EAAMvmB,KAAK+7D,eAAelsD,GAC1B0hD,EAAQ/sD,KAAKk2D,MAAOrS,EAAK51C,EAAI8T,EAAI9T,EAAK41C,EAAK71C,EAAI+T,EAAI/T,GACnDypD,EAAmB5T,EAAK4T,iBAAiBl0C,EAAIwpC,GAC7C2K,EAAkB13D,KAAKgsB,KAAKhsB,KAAKkwB,IAAInO,EAAI/T,EAAE61C,EAAK71C,EAAE,GAAKhO,KAAKkwB,IAAInO,EAAI9T,EAAE41C,EAAK51C,EAAE,IAC7E0pD,EAAaF,EAAmBC,EAC5B13D,KAAKknB,IAAIywC,GAAcC,EACzB,KAEoB,GAAbD,EACK,GAARhyC,EACFxa,EAAME,EAGND,EAAOC,EAIG,GAARsa,EACFva,EAAOC,EAGPF,EAAME,EAIVH,IAIF,MAFA6W,GAAIhY,EAAIsB,EAED0W,GAUTnjB,EAAK8Q,UAAUqkD,WAAa,SAASxwC,GAEnCA,EAAIY,YAAc3oB,KAAKo5D,UAAUrxC,GACjCA,EAAIiB,UAAYjB,EAAIY,YACpBZ,EAAIO,UAAYtoB,KAAK25D,eAGrB,IAAIpI,GAAOvrD,EAAQq2D,CAGnB,IAAIr8D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAKxB,GAHApqB,KAAK45D,MAAM7xC,GAG8B,GAArC/nB,KAAKkP,QAAQi0C,aAAah0C,QAAiB,CAC7C,GAAIkjD,GAAMryD,KAAKq6D,oBACfgC,GAAWr8D,KAAKg8D,qBAAoB,EAAOj0C,EAC3C,IAAIu0C,GAAWt8D,KAAK+7D,eAAev3D,KAAKJ,IAAI,EAAKi4D,EAAS9tD,EAAI,IAC9DgjD,GAAQ/sD,KAAKk2D,MAAO2B,EAAS5pD,EAAI6pD,EAAS7pD,EAAK4pD,EAAS7pD,EAAI8pD,EAAS9pD,OAElE,CACH++C,EAAQ/sD,KAAKk2D,MAAO16D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EACrE,IAAIoN,GAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5B8pD,EAAoB/3D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAC7C28C,EAAex8D,KAAKoqB,GAAG6xC,iBAAiBl0C,EAAKwpC,GAC7CkL,GAAiBF,EAAoBC,GAAgBD,CAEzDF,MACAA,EAAS7pD,GAAK,EAAIiqD,GAAiBz8D,KAAKmqB,KAAK3X,EAAIiqD,EAAgBz8D,KAAKoqB,GAAG5X,EACzE6pD,EAAS5pD,GAAK,EAAIgqD,GAAiBz8D,KAAKmqB,KAAK1X,EAAIgqD,EAAgBz8D,KAAKoqB,GAAG3X,EAU3E,GANAzM,GAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQkxC,iBACtDr4B,EAAI+zC,MAAMO,EAAS7pD,EAAE6pD,EAAS5pD,EAAG8+C,EAAOvrD,GACxC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,MAAO,CACd,GAAIJ,EAEFA,GADuC,GAArC5S,KAAKkP,QAAQi0C,aAAah0C,SAA0B,MAAPkjD,EACvCryD,KAAK+7D,eAAe,IAGpB/7D,KAAK+5D,aAAa,IAE5B/5D,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,QAG3C,CAEH,GACID,GAAGC,EAAGqpD,EADNzT,EAAOroD,KAAKmqB,KAEZmC,EAAS,IAAO9nB,KAAKJ,IAAI,IAAIpE,KAAK2gD,QAAQK,aACzCqH,GAAK/0C,OACR+0C,EAAK4R,OAAOlyC,GAEVsgC,EAAK/0C,MAAQ+0C,EAAK90C,QACpBf,EAAI61C,EAAK71C,EAAiB,GAAb61C,EAAK/0C,MAClBb,EAAI41C,EAAK51C,EAAI6Z,EACbwvC,GACEtpD,EAAGA,EACHC,EAAG41C,EAAK51C,EACR8+C,MAAO,GAAM/sD,KAAKgoB,MAIpBha,EAAI61C,EAAK71C,EAAI8Z,EACb7Z,EAAI41C,EAAK51C,EAAkB,GAAd41C,EAAK90C,OAClBuoD,GACEtpD,EAAG61C,EAAK71C,EACRC,EAAGA,EACH8+C,MAAO,GAAM/sD,KAAKgoB,KAGtBzE,EAAIa,YAEJb,EAAIwE,IAAI/Z,EAAGC,EAAG6Z,EAAQ,EAAG,EAAI9nB,KAAKgoB,IAAI,GACtCzE,EAAIlH,QAGJ,IAAI7a,IAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQkxC,gBAC1Dr4B,GAAI+zC,MAAMA,EAAMtpD,EAAGspD,EAAMrpD,EAAGqpD,EAAMvK,MAAOvrD,GACzC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,QACPJ,EAAQ5S,KAAKm6D,eAAe3nD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,MAiBlDrP,EAAK8Q,UAAUilD,mBAAqB,SAAUuD,EAAGC,EAAIC,EAAGC,EAAIC,EAAGC,GAC7D,GAAIjzD,GAAc,CAClB,IAAI9J,KAAKmqB,MAAQnqB,KAAKoqB,GACpB,GAAyC,GAArCpqB,KAAKkP,QAAQi0C,aAAah0C,QAAiB,CAC7C,GAAImrD,GAAMC,CACV,IAAyC,GAArCv6D,KAAKkP,QAAQi0C,aAAah0C,SAAwD,GAArCnP,KAAKkP,QAAQi0C,aAAaC,QACzEkX,EAAOt6D,KAAKqyD,IAAI7/C,EAChB+nD,EAAOv6D,KAAKqyD,IAAI5/C,MAEb,CACH,GAAI4/C,GAAMryD,KAAKq6D,oBACfC,GAAOjI,EAAI7/C,EACX+nD,EAAOlI,EAAI5/C,EAEb,GACIkU,GACA9gB,EAAE0I,EAAEiE,EAAEC,EAAGuqD,EAAOC,EAFhBC,EAAc,GAGlB,KAAKr3D,EAAI,EAAO,GAAJA,EAAQA,IAClB0I,EAAI,GAAI1I,EACR2M,EAAIhO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGmuD,EAAM,EAAEnuD,GAAG,EAAIA,GAAI+rD,EAAO91D,KAAKkwB,IAAInmB,EAAE,GAAGquD,EAC5DnqD,EAAIjO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGouD,EAAM,EAAEpuD,GAAG,EAAIA,GAAIgsD,EAAO/1D,KAAKkwB,IAAInmB,EAAE,GAAGsuD,EACxDh3D,EAAI,IACN8gB,EAAW3mB,KAAKm9D,mBAAmBH,EAAMC,EAAMzqD,EAAEC,EAAGqqD,EAAGC,GACvDG,EAAyBA,EAAXv2C,EAAyBA,EAAWu2C,GAEpDF,EAAQxqD,EAAGyqD,EAAQxqD,CAErB3I,GAAcozD,MAGdpzD,GAAc9J,KAAKm9D,mBAAmBT,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,OAGpD,CACH,GAAIvqD,GAAGC,EAAGmN,EAAIC,EACVyM,EAAS,IAAOtsB,KAAK2gD,QAAQK,aAC7BqH,EAAOroD,KAAKmqB,IACZk+B,GAAK/0C,MAAQ+0C,EAAK90C,QACpBf,EAAI61C,EAAK71C,EAAI,GAAM61C,EAAK/0C,MACxBb,EAAI41C,EAAK51C,EAAI6Z,IAGb9Z,EAAI61C,EAAK71C,EAAI8Z,EACb7Z,EAAI41C,EAAK51C,EAAI,GAAM41C,EAAK90C,QAE1BqM,EAAKpN,EAAIsqD,EACTj9C,EAAKpN,EAAIsqD,EACTjzD,EAActF,KAAKknB,IAAIlnB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAAMyM,GAGpD,MAAItsB,MAAKy3D,gBAAgB5vD,KAAOi1D,GAC9B98D,KAAKy3D,gBAAgB5vD,KAAO7H,KAAKy3D,gBAAgBnkD,MAAQwpD,GACzD98D,KAAKy3D,gBAAgBxvD,IAAM80D,GAC3B/8D,KAAKy3D,gBAAgBxvD,IAAMjI,KAAKy3D,gBAAgBlkD,OAASwpD,EAClD,EAGAjzD,GAIX1G,EAAK8Q,UAAUipD,mBAAqB,SAAST,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GAC1D,GAAIK,GAAKR,EAAGF,EACVW,EAAKR,EAAGF,EACRW,EAAYF,EAAGA,EAAKC,EAAGA,EACvBE,IAAOT,EAAKJ,GAAMU,GAAML,EAAKJ,GAAMU,GAAMC,CAEvCC,GAAI,EACNA,EAAI,EAEO,EAAJA,IACPA,EAAI,EAGN,IAAI/qD,GAAIkqD,EAAKa,EAAIH,EACf3qD,EAAIkqD,EAAKY,EAAIF,EACbz9C,EAAKpN,EAAIsqD,EACTj9C,EAAKpN,EAAIsqD,CAQX,OAAOv4D,MAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,IAQ9Bzc,EAAK8Q,UAAU+wB,SAAW,SAAS1gC,GACjCvE,KAAKo6D,gBAAkB,EAAI71D,GAI7BnB,EAAK8Q,UAAUyyB,OAAS,WACtB3mC,KAAKumC,UAAW,GAGlBnjC,EAAK8Q,UAAU0yB,SAAW,WACxB5mC,KAAKumC,UAAW,GAGlBnjC,EAAK8Q,UAAUuhD,mBAAqB,WACjB,OAAbz1D,KAAKqyD,KAA8B,OAAdryD,KAAKmqB,MAA6B,OAAZnqB,KAAKoqB,IAClDpqB,KAAKqyD,IAAI7/C,EAAI,IAAOxS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAC1CxS,KAAKqyD,IAAI5/C,EAAI,IAAOzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IAEtB,OAAbzS,KAAKqyD,MACZryD,KAAKqyD,IAAI7/C,EAAI,EACbxS,KAAKqyD,IAAI5/C,EAAI,IASjBrP,EAAK8Q,UAAUs/C,kBAAoB,SAASzrC,GAC1C,GAAgC,GAA5B/nB,KAAKk4D,oBAA6B,CACpC,GAA+B,OAA3Bl4D,KAAKm4D,aAAahuC,MAA0C,OAAzBnqB,KAAKm4D,aAAa/tC,GAAa,CACpE,GAAIozC,GAAa,cAAczoD,OAAO/U,KAAKK,IACvCo9D,EAAW,YAAY1oD,OAAO/U,KAAKK,IACnC2jD,GACYnF,OAAOnsC,MAAM,GAAI4Z,OAAO,EAAGtL,YAAY,EAAG++B,oBAAqB,GAC/DY,SAASO,QAAQ,GACjBI,YAAac,sBAAuB,EAAGD,aAAc7uC,MAAM,EAAGC,OAAQ,EAAG+Y,OAAO,IAEhGtsB,MAAKm4D,aAAahuC,KAAO,GAAI5mB,IAC1BlD,GAAGm9D,EACFve,MAAM,MACJ1zC,OAAOsB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAClEm3C,GACVhkD,KAAKm4D,aAAa/tC,GAAK,GAAI7mB,IACxBlD,GAAGo9D,EACFxe,MAAM,MACN1zC,OAAOsB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAChEm3C,GAGZhkD,KAAKm4D,aAAaC,aACqB,GAAnCp4D,KAAKm4D,aAAahuC,KAAKoc,WACzBvmC,KAAKm4D,aAAaC,UAAUjuC,KAAOnqB,KAAK09D,2BAA2B31C,GACnE/nB,KAAKm4D,aAAahuC,KAAK3X,EAAIxS,KAAKm4D,aAAaC,UAAUjuC,KAAK3X,EAC5DxS,KAAKm4D,aAAahuC,KAAK1X,EAAIzS,KAAKm4D,aAAaC,UAAUjuC,KAAK1X,GAEzB,GAAjCzS,KAAKm4D,aAAa/tC,GAAGmc,WACvBvmC,KAAKm4D,aAAaC,UAAUhuC,GAAKpqB,KAAK29D,yBAAyB51C,GAC/D/nB,KAAKm4D,aAAa/tC,GAAG5X,EAAIxS,KAAKm4D,aAAaC,UAAUhuC,GAAG5X,EACxDxS,KAAKm4D,aAAa/tC,GAAG3X,EAAIzS,KAAKm4D,aAAaC,UAAUhuC,GAAG3X,GAG1DzS,KAAKm4D,aAAahuC,KAAK4mB,KAAKhpB,GAC5B/nB,KAAKm4D,aAAa/tC,GAAG2mB,KAAKhpB,OAG1B/nB,MAAKm4D,cAAgBhuC,KAAK,KAAMC,GAAG,KAAMguC,eAQ7Ch1D,EAAK8Q,UAAU0pD,oBAAsB,WACnC59D,KAAK43D,WAAa53D,KAAKmqB,KACvBnqB,KAAK63D,SAAW73D,KAAKoqB,GACrBpqB,KAAKk4D,qBAAsB,GAO7B90D,EAAK8Q,UAAU2pD,qBAAuB,WACpC79D,KAAKm3D,OAASn3D,KAAKmqB,KAAK9pB,GACxBL,KAAKk3D,KAAOl3D,KAAKoqB,GAAG/pB,GAChBL,KAAKm3D,QAAUn3D,KAAK43D,WAAWv3D,GACjCL,KAAK43D,WAAWe,WAAW34D,MAEpBA,KAAKk3D,MAAQl3D,KAAK63D,SAASx3D,IAClCL,KAAK63D,SAASc,WAAW34D,MAG3BA,KAAK43D,WAAa,KAClB53D,KAAK63D,SAAW,KAChB73D,KAAKk4D,qBAAsB,GAW7B90D,EAAK8Q,UAAU4pD,wBAA0B,SAAStrD,EAAEC,GAClD,GAAI2lD,GAAYp4D,KAAKm4D,aAAaC,UAC9B2F,EAAev5D,KAAKgsB,KAAKhsB,KAAKkwB,IAAIliB,EAAI4lD,EAAUjuC,KAAK3X,EAAE,GAAKhO,KAAKkwB,IAAIjiB,EAAI2lD,EAAUjuC,KAAK1X,EAAE,IAC1FurD,EAAex5D,KAAKgsB,KAAKhsB,KAAKkwB,IAAIliB,EAAI4lD,EAAUhuC,GAAG5X,EAAI,GAAKhO,KAAKkwB,IAAIjiB,EAAI2lD,EAAUhuC,GAAG3X,EAAI,GAE9F,OAAmB,IAAfsrD,GACF/9D,KAAKq4D,cAAgBr4D,KAAKmqB,KAC1BnqB,KAAKmqB,KAAOnqB,KAAKm4D,aAAahuC,KACvBnqB,KAAKm4D,aAAahuC,MAEL,GAAb6zC,GACPh+D,KAAKq4D,cAAgBr4D,KAAKoqB,GAC1BpqB,KAAKoqB,GAAKpqB,KAAKm4D,aAAa/tC,GACrBpqB,KAAKm4D,aAAa/tC,IAGlB,MASXhnB,EAAK8Q,UAAU+pD,qBAAuB,WACG,GAAnCj+D,KAAKm4D,aAAahuC,KAAKoc,UACzBvmC,KAAKmqB,KAAOnqB,KAAKq4D,cACjBr4D,KAAKq4D,cAAgB,KACrBr4D,KAAKm4D,aAAahuC,KAAKyc,YAEiB,GAAjC5mC,KAAKm4D,aAAa/tC,GAAGmc,WAC5BvmC,KAAKoqB,GAAKpqB,KAAKq4D,cACfr4D,KAAKq4D,cAAgB,KACrBr4D,KAAKm4D,aAAa/tC,GAAGwc,aAUzBxjC,EAAK8Q,UAAUwpD,2BAA6B,SAAS31C,GAEnD,GAAIm2C,EACJ,IAAyC,GAArCl+D,KAAKkP,QAAQi0C,aAAah0C,QAC5B+uD,EAAqBl+D,KAAKg8D,qBAAoB,EAAMj0C,OAEjD,CACH,GAAIwpC,GAAQ/sD,KAAKk2D,MAAO16D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrEoN,EAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5B8pD,EAAoB/3D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAE7Cs+C,EAAiBn+D,KAAKmqB,KAAK8xC,iBAAiBl0C,EAAKwpC,EAAQ/sD,KAAKgoB,IAC9D4xC,GAAmB7B,EAAoB4B,GAAkB5B,CAC7D2B,MACAA,EAAmB1rD,EAAI,EAAoBxS,KAAKmqB,KAAK3X,GAAK,EAAI4rD,GAAmBp+D,KAAKoqB,GAAG5X,EACzF0rD,EAAmBzrD,EAAI,EAAoBzS,KAAKmqB,KAAK1X,GAAK,EAAI2rD,GAAmBp+D,KAAKoqB,GAAG3X,EAG3F,MAAOyrD,IAST96D,EAAK8Q,UAAUypD,yBAA2B,SAAS51C,GAEjD,GAAuBs2C,EACvB,IAAyC,GAArCr+D,KAAKkP,QAAQi0C,aAAah0C,QAC5BkvD,EAAmBr+D,KAAKg8D,qBAAoB,EAAOj0C,OAEhD,CACH,GAAIwpC,GAAQ/sD,KAAKk2D,MAAO16D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrEoN,EAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5B8pD,EAAoB/3D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAC7C28C,EAAex8D,KAAKoqB,GAAG6xC,iBAAiBl0C,EAAKwpC,GAC7CkL,GAAiBF,EAAoBC,GAAgBD,CAEzD8B,MACAA,EAAiB7rD,GAAK,EAAIiqD,GAAiBz8D,KAAKmqB,KAAK3X,EAAIiqD,EAAgBz8D,KAAKoqB,GAAG5X,EACjF6rD,EAAiB5rD,GAAK,EAAIgqD,GAAiBz8D,KAAKmqB,KAAK1X,EAAIgqD,EAAgBz8D,KAAKoqB,GAAG3X,EAGnF,MAAO4rD,IAGTx+D,EAAOD,QAAUwD,GAIb,SAASvD,EAAQD,EAASM,GAQ9B,QAASmD,KACPrD,KAAKwX,QACLxX,KAAKs+D,aAAe,EACpBt+D,KAAKu+D,eACLv+D,KAAKw+D,WAAa,EAClBx+D,KAAK+jD,kBAAmB,EAXf7jD,EAAoB,EAkB/BmD,GAAOo7D,UACJ3xD,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","config","parentId","parentLevel","nodeMoved","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","self","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","_callbacks","once","removeListener","removeAllListeners","callbacks","cb","hasListeners","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackContext","req","resolve","webpackPolyfill","paths"],"mappings":"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AQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAO3IxJ,EAAO6Q,UAAUsD,MAAQ,WACvBxX,KAAK+0B,UACL/0B,KAAK+0B,OAAO/uB,OAAS,WAEnB,GAAIH,GAAI,CACR,KAAM,GAAInF,KAAKV,MACTA,KAAKmG,eAAezF,IACtBmF,GAGJ,OAAOA,KAWXxC,EAAO6Q,UAAU+B,IAAM,SAAU40C,GAC/B,GAAIn4C,GAAQ1S,KAAK+0B,OAAO81B,EACxB,IAAahkD,QAAT6L,EACF,GAAI1S,KAAK+jD,oBAAqB,GAAS/jD,KAAKu+D,YAAYv4D,OAAS,EAAG,CAElE,GAAI0C,GAAQ1I,KAAKw+D,WAAax+D,KAAKu+D,YAAYv4D,MAC/ChG,MAAKw+D,aACL9rD,KACAA,EAAMnH,MAAQvL,KAAK+0B,OAAO/0B,KAAKu+D,YAAY71D,IAC3C1I,KAAK+0B,OAAO81B,GAAan4C,MAEtB,CAEH,GAAIhK,GAAQ1I,KAAKs+D,aAAej7D,EAAOo7D,QAAQz4D,MAC/ChG,MAAKs+D,eACL5rD,KACAA,EAAMnH,MAAQlI,EAAOo7D,QAAQ/1D,GAC7B1I,KAAK+0B,OAAO81B,GAAan4C,EAI7B,MAAOA,IAUTrP,EAAO6Q,UAAUF,IAAM,SAAU0qD,EAAWhxD,GAG1C,MAFA1N,MAAK+0B,OAAO2pC,GAAahxD,EACzB1N,KAAKu+D,YAAYh2D,KAAKm2D,GACfhxD,GAGT7N,EAAOD,QAAUyD,GAKb,SAASxD,GAMb,QAASyD,KACPtD,KAAKklD,UACLllD,KAAK2+D,eACL3+D,KAAK6I,SAAWhC,OAQlBvD,EAAO4Q,UAAUixC,kBAAoB,SAASt8C,GAC5C7I,KAAK6I,SAAWA,GASlBvF,EAAO4Q,UAAU0qD,KAAO,SAASC,EAAKC,GACpC,GAAIC,GAAM/+D,KAAKklD,OAAO2Z,EACtB,IAAYh4D,SAARk4D,EAAmB,CAErB,GAAI7pD,GAAKlV,IACT++D,GAAM,GAAIC,OACVD,EAAIE,OAAS,WAEO,GAAdj/D,KAAKsT,QACPtB,SAASujB,KAAKrjB,YAAYlS,MAC1BA,KAAKsT,MAAQtT,KAAKgxB,YAClBhxB,KAAKuT,OAASvT,KAAKkxB,aACnBlf,SAASujB,KAAK3jB,YAAY5R,OAGxBkV,EAAGrM,WACLqM,EAAGgwC,OAAO2Z,GAAOE,EACjB7pD,EAAGrM,SAAS7I,QAIhB++D,EAAIG,QAAU,WACMr4D,SAAdi4D,GACFjkC,QAAQskC,MAAM,wBAAyBN,SAChC7+D,MAAKkoD,IACRhzC,EAAGrM,UACLqM,EAAGrM,SAAS7I,OAIVkV,EAAGypD,YAAYE,MAAS,EACtB7+D,KAAKkoD,KAAO4W,GACdjkC,QAAQskC,MAAM,8BAA+BL,SACtC9+D,MAAKkoD,IACRhzC,EAAGrM,UACLqM,EAAGrM,SAAS7I,QAId66B,QAAQskC,MAAM,wBAAyBN,GACvC7+D,KAAKkoD,IAAM4W,IAIbjkC,QAAQskC,MAAM,wBAAyBN,GACvC7+D,KAAKkoD,IAAM4W,EACX5pD,EAAGypD,YAAYE,IAAO,IAK5BE,EAAI7W,IAAM2W,EAGZ,MAAOE,IAGTl/D,EAAOD,QAAU0D,GAKb,SAASzD,EAAQD,EAASM,GA6B9B,QAASqD,GAAKsuD,EAAYuN,EAAWC,EAAW9H,GAC9C,GAAIvT,GAAYrjD,EAAK+N,uBAAuB,SAAS6oD,EACrDv3D,MAAKkP,QAAU80C,EAAUnF,MAEzB7+C,KAAKumC,UAAW,EAChBvmC,KAAKgN,OAAQ,EAEbhN,KAAKggD,SACLhgD,KAAKuyD,gBACLvyD,KAAKs/D,iBAGLt/D,KAAKK,GAAKwG,OACV7G,KAAK81D,gBAAiB,EACtB91D,KAAK+1D,gBAAiB,EACtB/1D,KAAKguD,QAAS,EACdhuD,KAAKiuD,QAAS,EACdjuD,KAAKu/D,qBAAsB,EAC3Bv/D,KAAKw/D,kBAAsB,EAC3Bx/D,KAAKy/D,gBAAkBlI,EAAiB1Y,MAAMvyB,OAC9CtsB,KAAK0/D,aAAc,EACnB1/D,KAAK8/C,MAAQ,GACb9/C,KAAK2/D,kBAAmB,EACxB3/D,KAAK4/D,qBAAsB,EAC3B5/D,KAAKy3D,iBAAmBxvD,IAAI,EAAGJ,KAAK,EAAGyL,MAAM,EAAGC,OAAO,EAAGmkD,MAAM,GAChE13D,KAAK0oD,aAAezgD,IAAI,EAAGJ,KAAK,EAAGwgB,MAAM,EAAG/D,OAAO,GAEnDtkB,KAAKo/D,UAAYA,EACjBp/D,KAAKq/D,UAAYA,EAGjBr/D,KAAK6/D,GAAK,EACV7/D,KAAK8/D,GAAK,EACV9/D,KAAK+/D,GAAK,EACV//D,KAAKggE,GAAK,EACVhgE,KAAKwS,EAAI,KACTxS,KAAKyS,EAAI,KACTzS,KAAKipD,oBAAqB,EAG1BjpD,KAAKigE,eAAiBF,GAAG,EAAEC,GAAG,EAAExtD,EAAE,EAAEC,EAAE,GAEtCzS,KAAKkhD,QAAUqW,EAAiB5W,QAAQO,QACxClhD,KAAK4zD,WAAaphD,EAAE,KAAKC,EAAE,MAE3BzS,KAAK4xD,cAAcC,EAAY7N,GAG/BhkD,KAAKkgE,eACLlgE,KAAKmgE,eAAiB,EACtBngE,KAAKogE,uBAA0B7I,EAAiBjW,WAAWa,YAAY7uC,MACvEtT,KAAKqgE,wBAA0B9I,EAAiBjW,WAAWa,YAAY5uC,OACvEvT,KAAKsgE,wBAA0B/I,EAAiBjW,WAAWa,YAAY71B,OACvEtsB,KAAKoiD,sBAA0BmV,EAAiBjW,WAAWc,sBAC3DpiD,KAAKugE,gBAAkB,EAGvBvgE,KAAKo6D,gBAAkB,EACvBp6D,KAAKwgE,aAAe,EACpBxgE,KAAKsmD,eAAiB9zC,EAAK,KAAMC,EAAK,MACtCzS,KAAKumD,mBAAqB/zC,EAAM,IAAKC,EAAM,KAC3CzS,KAAKu1D,aAAe,KAxFtB,GAAI50D,GAAOT,EAAoB,EA+F/BqD,GAAK2Q,UAAUogD,eAAiB,WAC9Bt0D,KAAKwS,EAAIxS,KAAKigE,cAAcztD,EAC5BxS,KAAKyS,EAAIzS,KAAKigE,cAAcxtD,EAC5BzS,KAAK+/D,GAAK//D,KAAKigE,cAAcF,GAC7B//D,KAAKggE,GAAKhgE,KAAKigE,cAAcD;EAO/Bz8D,EAAK2Q,UAAUgsD,aAAe,WAE5BlgE,KAAKygE,eAAiB55D,OACtB7G,KAAK0gE,YAAc,EACnB1gE,KAAK2gE,kBACL3gE,KAAK4gE,kBACL5gE,KAAK6gE,oBAOPt9D,EAAK2Q,UAAUwkD,WAAa,SAAShI,GACH,IAA5B1wD,KAAKggD,MAAMh5C,QAAQ0pD,IACrB1wD,KAAKggD,MAAMz3C,KAAKmoD,GAEqB,IAAnC1wD,KAAKuyD,aAAavrD,QAAQ0pD,IAC5B1wD,KAAKuyD,aAAahqD,KAAKmoD,IAQ3BntD,EAAK2Q,UAAUykD,WAAa,SAASjI,GACnC,GAAIhoD,GAAQ1I,KAAKggD,MAAMh5C,QAAQ0pD,EAClB,KAAThoD,GACF1I,KAAKggD,MAAMr3C,OAAOD,EAAO,GAE3BA,EAAQ1I,KAAKuyD,aAAavrD,QAAQ0pD,GACrB,IAAThoD,GACF1I,KAAKuyD,aAAa5pD,OAAOD,EAAO,IAUpCnF,EAAK2Q,UAAU09C,cAAgB,SAASC,EAAY7N,GAClD,GAAK6N,EAAL,CAIA,GAAIljD,IAAU,cAAc,sBAAsB,QAAQ,QAAQ,cAAc,SAAS,YACvF,WAAW,WAAW,WAAW,kBAAkB,kBAAkB,QAAQ,OAAO,oBACpF,qBAAqB,qBAAqB,wBAAwB,eAAgB,OAAQ,YAAa,WAkBzG,IAhBAhO,EAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAAS2iD,GAGzBhrD,SAAlBgrD,EAAWxxD,KAA0BL,KAAKK,GAAKwxD,EAAWxxD,IACrCwG,SAArBgrD,EAAW7+C,QAA0BhT,KAAKgT,MAAQ6+C,EAAW7+C,MAAOhT,KAAK8gE,cAAgBjP,EAAW7+C,OAC/EnM,SAArBgrD,EAAWtqB,QAA0BvnC,KAAKunC,MAAQsqB,EAAWtqB,OAC5C1gC,SAAjBgrD,EAAWr/C,IAA0BxS,KAAKwS,EAAIq/C,EAAWr/C,EAAGxS,KAAKipD,oBAAqB,GACrEpiD,SAAjBgrD,EAAWp/C,IAA0BzS,KAAKyS,EAAIo/C,EAAWp/C,EAAGzS,KAAKipD,oBAAqB,GACjEpiD,SAArBgrD,EAAWvtD,QAA0BtE,KAAKsE,MAAQutD,EAAWvtD,OACxCuC,SAArBgrD,EAAW/R,QAA0B9/C,KAAK8/C,MAAQ+R,EAAW/R,MAAO9/C,KAAK2/D,kBAAmB,GAGzD94D,SAAnCgrD,EAAW0N,sBAAoCv/D,KAAKu/D,oBAAsB1N,EAAW0N,qBAClD14D,SAAnCgrD,EAAW2N,mBAAoCx/D,KAAKw/D,iBAAsB3N,EAAW2N,kBAClD34D,SAAnCgrD,EAAWkP,kBAAoC/gE,KAAK+gE,gBAAsBlP,EAAWkP,iBAEzEl6D,SAAZ7G,KAAKK,GACP,KAAM,sBAIR,IAAgC,gBAArBwxD,GAAWn/C,OAAmD,gBAArBm/C,GAAWn/C,OAA0C,IAApBm/C,EAAWn/C,MAAc,CAC5G,GAAIsuD,GAAWhhE,KAAKq/D,UAAUppD,IAAI47C,EAAWn/C,MAC7C/R,GAAKmG,WAAW9G,KAAKkP,QAAS8xD,GAE9BhhE,KAAKkP,QAAQ3D,MAAQ5K,EAAKqL,WAAWhM,KAAKkP,QAAQ3D,OAMpD,GAH0B1E,SAAtBgrD,EAAWvlC,SAA+BtsB,KAAKy/D,gBAAkBz/D,KAAKkP,QAAQod,QACzDzlB,SAArBgrD,EAAWtmD,QAA+BvL,KAAKkP,QAAQ3D,MAAQ5K,EAAKqL,WAAW6lD,EAAWtmD,QAEnE1E,SAAvB7G,KAAKkP,QAAQgwC,OAA4C,IAArBl/C,KAAKkP,QAAQgwC,MAAY,CAC/D,IAAIl/C,KAAKo/D,UAIP,KAAM,uBAHNp/D,MAAKihE,SAAWjhE,KAAKo/D,UAAUR,KAAK5+D,KAAKkP,QAAQgwC,MAAOl/C,KAAKkP,QAAQgyD,aAgCzE,OAzBkCr6D,SAA9BgrD,EAAWiE,gBACb91D,KAAKguD,QAAU6D,EAAWiE,eAC1B91D,KAAK81D,eAAiBjE,EAAWiE,gBAETjvD,SAAjBgrD,EAAWr/C,GAA0C,GAAvBxS,KAAK81D,iBAC1C91D,KAAKguD,QAAS,GAIkBnnD,SAA9BgrD,EAAWkE,gBACb/1D,KAAKiuD,QAAU4D,EAAWkE,eAC1B/1D,KAAK+1D,eAAiBlE,EAAWkE,gBAETlvD,SAAjBgrD,EAAWp/C,GAA0C,GAAvBzS,KAAK+1D,iBAC1C/1D,KAAKiuD,QAAS,GAGhBjuD,KAAK0/D,YAAc1/D,KAAK0/D,aAAsC74D,SAAtBgrD,EAAWvlC,QAExB,UAAvBtsB,KAAKkP,QAAQ+vC,OAA4C,kBAAvBj/C,KAAKkP,QAAQ+vC,SACjDj/C,KAAKkP,QAAQ6vC,UAAYiF,EAAUnF,MAAM32B,SACzCloB,KAAKkP,QAAQ8vC,UAAYgF,EAAUnF,MAAM12B,UAInCnoB,KAAKkP,QAAQ+vC,OACnB,IAAK,WAAiBj/C,KAAK+wC,KAAO/wC,KAAKmhE,cAAenhE,KAAKi6D,OAASj6D,KAAKohE,eAAiB,MAC1F,KAAK,MAAiBphE,KAAK+wC,KAAO/wC,KAAKqhE,SAAUrhE,KAAKi6D,OAASj6D,KAAKshE,UAAY,MAChF,KAAK,SAAiBthE,KAAK+wC,KAAO/wC,KAAKuhE,YAAavhE,KAAKi6D,OAASj6D,KAAKwhE,aAAe,MACtF,KAAK,UAAiBxhE,KAAK+wC,KAAO/wC,KAAKyhE,aAAczhE,KAAKi6D,OAASj6D,KAAK0hE,cAAgB,MAExF,KAAK,QAAiB1hE,KAAK+wC,KAAO/wC,KAAK2hE,WAAY3hE,KAAKi6D,OAASj6D,KAAK4hE,YAAc,MACpF,KAAK,gBAAiB5hE,KAAK+wC,KAAO/wC,KAAK6hE,mBAAoB7hE,KAAKi6D,OAASj6D,KAAK8hE,oBAAsB,MACpG,KAAK,OAAiB9hE,KAAK+wC,KAAO/wC,KAAK+hE,UAAW/hE,KAAKi6D,OAASj6D,KAAKgiE,WAAa,MAClF,KAAK,MAAiBhiE,KAAK+wC,KAAO/wC,KAAKiiE,SAAUjiE,KAAKi6D,OAASj6D,KAAKkiE,YAAc,MAClF,KAAK,SAAiBliE,KAAK+wC,KAAO/wC,KAAKmiE,YAAaniE,KAAKi6D,OAASj6D,KAAKkiE,YAAc,MACrF,KAAK,WAAiBliE,KAAK+wC,KAAO/wC,KAAKoiE,cAAepiE,KAAKi6D,OAASj6D,KAAKkiE,YAAc,MACvF,KAAK,eAAiBliE,KAAK+wC,KAAO/wC,KAAKqiE,kBAAmBriE,KAAKi6D,OAASj6D,KAAKkiE,YAAc,MAC3F,KAAK,OAAiBliE,KAAK+wC,KAAO/wC,KAAKsiE,UAAWtiE,KAAKi6D,OAASj6D,KAAKkiE,YAAc,MACnF,KAAK,OAAiBliE,KAAK+wC,KAAO/wC,KAAKuiE,UAAWviE,KAAKi6D,OAASj6D,KAAKwiE,WAAa,MAClF,SAAsBxiE,KAAK+wC,KAAO/wC,KAAKyhE,aAAczhE,KAAKi6D,OAASj6D,KAAK0hE,eAG1E1hE,KAAKyiE,WAOPl/D,EAAK2Q,UAAUyyB,OAAS,WACtB3mC,KAAKumC,UAAW,EAChBvmC,KAAKyiE,UAMPl/D,EAAK2Q,UAAU0yB,SAAW,WACxB5mC,KAAKumC,UAAW,EAChBvmC,KAAKyiE,UAOPl/D,EAAK2Q,UAAUwuD,eAAiB,WAC9B1iE,KAAKyiE,UAOPl/D,EAAK2Q,UAAUuuD,OAAS,WACtBziE,KAAKsT,MAAQzM,OACb7G,KAAKuT,OAAS1M,QAQhBtD,EAAK2Q,UAAUs8C,SAAW,WACxB,MAA6B,kBAAfxwD,MAAKunC,MAAuBvnC,KAAKunC,QAAUvnC,KAAKunC,OAShEhkC,EAAK2Q,UAAU+nD,iBAAmB,SAAUl0C,EAAKwpC,GAC/C,GAAIvwC,GAAc,CAMlB,QAJKhhB,KAAKsT,OACRtT,KAAKi6D,OAAOlyC,GAGN/nB,KAAKkP,QAAQ+vC,OACnB,IAAK,SACL,IAAK,MACH,MAAOj/C,MAAKkP,QAAQod,OAAQtL,CAE9B,KAAK,UACH,GAAIpb,GAAI5F,KAAKsT,MAAQ,EACjB7M,EAAIzG,KAAKuT,OAAS,EAClBo/C,EAAKnuD,KAAK4a,IAAImyC,GAAS3rD,EACvB0G,EAAK9H,KAAK+a,IAAIgyC,GAAS9qD,CAC3B,OAAOb,GAAIa,EAAIjC,KAAKgsB,KAAKmiC,EAAIA,EAAIrmD,EAAIA,EAMvC,KAAK,MACL,IAAK,QACL,IAAK,OACL,QACE,MAAItM,MAAKsT,MACA9O,KAAKL,IACRK,KAAKknB,IAAI1rB,KAAKsT,MAAQ,EAAI9O,KAAK+a,IAAIgyC,IACnC/sD,KAAKknB,IAAI1rB,KAAKuT,OAAS,EAAI/O,KAAK4a,IAAImyC,KAAWvwC,EAI5C,IAYfzd,EAAK2Q,UAAUyuD,UAAY,SAAS9C,EAAIC,GACtC9/D,KAAK6/D,GAAKA,EACV7/D,KAAK8/D,GAAKA,GASZv8D,EAAK2Q,UAAU0uD,UAAY,SAAS/C,EAAIC,GACtC9/D,KAAK6/D,IAAMA,EACX7/D,KAAK8/D,IAAMA,GAMbv8D,EAAK2Q,UAAU2uD,WAAa,WAC1B7iE,KAAKigE,cAAcztD,EAAIxS,KAAKwS,EAC5BxS,KAAKigE,cAAcxtD,EAAIzS,KAAKyS,EAC5BzS,KAAKigE,cAAcF,GAAK//D,KAAK+/D,GAC7B//D,KAAKigE,cAAcD,GAAKhgE,KAAKggE,IAO/Bz8D,EAAK2Q,UAAUigD,aAAe,SAAS/gC,GAErC,GADApzB,KAAK6iE,aACA7iE,KAAKguD,OAORhuD,KAAK6/D,GAAK,EACV7/D,KAAK+/D,GAAK,MARM,CAChB,GAAIngD,GAAO5f,KAAKkhD,QAAUlhD,KAAK+/D,GAC3BnhD,GAAQ5e,KAAK6/D,GAAKjgD,GAAM5f,KAAKkP,QAAQ4vC,IACzC9+C,MAAK+/D,IAAMnhD,EAAKwU,EAChBpzB,KAAKwS,GAAMxS,KAAK+/D,GAAK3sC,EAOvB,GAAKpzB,KAAKiuD,OAORjuD,KAAK8/D,GAAK,EACV9/D,KAAKggE,GAAK,MARM,CAChB,GAAIngD,GAAO7f,KAAKkhD,QAAUlhD,KAAKggE,GAC3BnhD,GAAQ7e,KAAK8/D,GAAKjgD,GAAM7f,KAAKkP,QAAQ4vC,IACzC9+C,MAAKggE,IAAMnhD,EAAKuU,EAChBpzB,KAAKyS,GAAMzS,KAAKggE,GAAK5sC,IAezB7vB,EAAK2Q,UAAUggD,oBAAsB,SAAS9gC,EAAUkwB,GAEtD,GADAtjD,KAAK6iE,aACA7iE,KAAKguD,OAQRhuD,KAAK6/D,GAAK,EACV7/D,KAAK+/D,GAAK,MATM,CAChB,GAAIngD,GAAO5f,KAAKkhD,QAAUlhD,KAAK+/D,GAC3BnhD,GAAQ5e,KAAK6/D,GAAKjgD,GAAM5f,KAAKkP,QAAQ4vC,IACzC9+C,MAAK+/D,IAAMnhD,EAAKwU,EAChBpzB,KAAK+/D,GAAMv7D,KAAKknB,IAAI1rB,KAAK+/D,IAAMzc,EAAiBtjD,KAAK+/D,GAAK,EAAKzc,GAAeA,EAAetjD,KAAK+/D,GAClG//D,KAAKwS,GAAMxS,KAAK+/D,GAAK3sC,EAOvB,GAAKpzB,KAAKiuD,OAQRjuD,KAAK8/D,GAAK,EACV9/D,KAAKggE,GAAK,MATM,CAChB,GAAIngD,GAAO7f,KAAKkhD,QAAUlhD,KAAKggE,GAC3BnhD,GAAQ7e,KAAK8/D,GAAKjgD,GAAM7f,KAAKkP,QAAQ4vC,IACzC9+C,MAAKggE,IAAMnhD,EAAKuU,EAChBpzB,KAAKggE,GAAMx7D,KAAKknB,IAAI1rB,KAAKggE,IAAM1c,EAAiBtjD,KAAKggE,GAAK,EAAK1c,GAAeA,EAAetjD,KAAKggE,GAClGhgE,KAAKyS,GAAMzS,KAAKggE,GAAK5sC,IAYzB7vB,EAAK2Q,UAAU4uD,QAAU,WACvB,MAAQ9iE,MAAKguD,QAAUhuD,KAAKiuD,QAQ9B1qD,EAAK2Q,UAAU6/C,SAAW,SAASD,GACjC,GAAIiP,GAAWv+D,KAAKgsB,KAAKhsB,KAAKkwB,IAAI10B,KAAK+/D,GAAG,GAAKv7D,KAAKkwB,IAAI10B,KAAKggE,GAAG,GAEhE,OAAQ+C,GAAWjP,GAOrBvwD,EAAK2Q,UAAUy5C,WAAa,WAC1B,MAAO3tD,MAAKumC,UAOdhjC,EAAK2Q,UAAUyB,SAAW,WACxB,MAAO3V,MAAKsE,OASdf,EAAK2Q,UAAU8uD,YAAc,SAASxwD,EAAGC,GACvC,GAAImN,GAAK5f,KAAKwS,EAAIA,EACdqN,EAAK7f,KAAKyS,EAAIA,CAClB,OAAOjO,MAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,IAUlCtc,EAAK2Q,UAAUu+C,cAAgB,SAAStuD,EAAKC,EAAKC,GAChD,IAAKrE,KAAK0/D,aAA8B74D,SAAf7G,KAAKsE,MAAqB,CACjD,GAAIC,GAAQvE,KAAKkP,QAAQ0vC,sBAAsBz6C,EAAKC,EAAKC,EAAOrE,KAAKsE,OACjE2+D,EAAajjE,KAAKkP,QAAQ8vC,UAAYh/C,KAAKkP,QAAQ6vC,SACvD,IAAuC,GAAnC/+C,KAAKkP,QAAQwwC,mBAA4B,CAC3C,GAAIwjB,GAAWljE,KAAKkP,QAAQ0wC,YAAc5/C,KAAKkP,QAAQywC,WACvD3/C,MAAKkP,QAAQkwC,SAAWp/C,KAAKkP,QAAQywC,YAAcp7C,EAAQ2+D,EAE7DljE,KAAKkP,QAAQod,OAAStsB,KAAKkP,QAAQ6vC,UAAYx6C,EAAQ0+D,EAGzDjjE,KAAKy/D,gBAAkBz/D,KAAKkP,QAAQod,QAQtC/oB,EAAK2Q,UAAU68B,KAAO,WACpB,KAAM,wCAQRxtC,EAAK2Q,UAAU+lD,OAAS,WACtB,KAAM,0CAQR12D,EAAK2Q,UAAUq8C,kBAAoB,SAASxsC,GAC1C,MAAQ/jB,MAAK6H,KAAoBkc,EAAIsE,OAC7BroB,KAAK6H,KAAO7H,KAAKsT,MAAQyQ,EAAIlc,MAC7B7H,KAAKiI,IAAoB8b,EAAIO,QAC7BtkB,KAAKiI,IAAMjI,KAAKuT,OAASwQ,EAAI9b,KAGvC1E,EAAK2Q,UAAU0tD,aAAe,WAG5B,IAAK5hE,KAAKsT,QAAUtT,KAAKuT,OAAQ,CAC/B,GAAID,GAAOC,CACX,IAAIvT,KAAKsE,MAAO,CACdtE,KAAKkP,QAAQod,OAAQtsB,KAAKy/D,eAC1B,IAAIl7D,GAAQvE,KAAKihE,SAAS1tD,OAASvT,KAAKihE,SAAS3tD,KACnCzM,UAAVtC,GACF+O,EAAQtT,KAAKkP,QAAQod,QAAStsB,KAAKihE,SAAS3tD,MAC5CC,EAASvT,KAAKkP,QAAQod,OAAQ/nB,GAASvE,KAAKihE,SAAS1tD,SAGrDD,EAAQ,EACRC,EAAS,OAIXD,GAAQtT,KAAKihE,SAAS3tD,MACtBC,EAASvT,KAAKihE,SAAS1tD,MAEzBvT,MAAKsT,MAASA,EACdtT,KAAKuT,OAASA,EAEdvT,KAAKugE,gBAAkB,EACnBvgE,KAAKsT,MAAQ,GAAKtT,KAAKuT,OAAS,IAClCvT,KAAKsT,OAAU9O,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAA0BpiD,KAAKogE,uBAClFpgE,KAAKuT,QAAU/O,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKqgE,wBACjFrgE,KAAKkP,QAAQod,QAAS9nB,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKsgE,wBACxFtgE,KAAKugE,gBAAkBvgE,KAAKsT,MAAQA,KAK1C/P,EAAK2Q,UAAUivD,qBAAuB,SAAUp7C,GAC9C,GAA2B,GAAvB/nB,KAAKihE,SAAS3tD,MAAa,CAE7B,GAAItT,KAAK0gE,YAAc,EAAG,CACxB,GAAIp4C,GAActoB,KAAK0gE,YAAc,EAAK,GAAK,CAC/Cp4C,IAAatoB,KAAKo6D,gBAClB9xC,EAAY9jB,KAAKL,IAAI,GAAMnE,KAAKsT,MAAMgV,GAEtCP,EAAIq7C,YAAc,GAClBr7C,EAAIs7C,UAAUrjE,KAAKihE,SAAUjhE,KAAK6H,KAAOygB,EAAWtoB,KAAKiI,IAAMqgB,EAAWtoB,KAAKsT,MAAQ,EAAEgV,EAAWtoB,KAAKuT,OAAS,EAAE+U,GAItHP,EAAIq7C,YAAc,EAClBr7C,EAAIs7C,UAAUrjE,KAAKihE,SAAUjhE,KAAK6H,KAAM7H,KAAKiI,IAAKjI,KAAKsT,MAAOtT,KAAKuT,UAIvEhQ,EAAK2Q,UAAUovD,gBAAkB,SAAUv7C,GACzC,GAAIhN,GACA2P,EAAS,CAEb,IAAI1qB,KAAKuT,OAAO,CACdmX,EAAS1qB,KAAKuT,OAAS,CACvB,IAAIkkD,GAAkBz3D,KAAKujE,YAAYx7C,EAEnC0vC,GAAgBoD,WAAa,IAC/BnwC,GAAU+sC,EAAgBlkD,OAAS,EACnCmX,GAAU,GAId3P,EAAS/a,KAAKyS,EAAIiY,EAElB1qB,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOhT,KAAKwS,EAAGuI,EAAQlU,SAG/CtD,EAAK2Q,UAAUytD,WAAa,SAAU55C,GACpC/nB,KAAK4hE,aAAa75C,GAClB/nB,KAAK6H,KAAS7H,KAAKwS,EAAIxS,KAAKsT,MAAQ,EACpCtT,KAAKiI,IAASjI,KAAKyS,EAAIzS,KAAKuT,OAAS,EAErCvT,KAAKmjE,qBAAqBp7C,GAE1B/nB,KAAK0oD,YAAYzgD,IAAMjI,KAAKiI,IAC5BjI,KAAK0oD,YAAY7gD,KAAO7H,KAAK6H,KAC7B7H,KAAK0oD,YAAYrgC,MAAQroB,KAAK6H,KAAO7H,KAAKsT,MAC1CtT,KAAK0oD,YAAYpkC,OAAStkB,KAAKiI,IAAMjI,KAAKuT,OAE1CvT,KAAKsjE,gBAAgBv7C,GACrB/nB,KAAK0oD,YAAY7gD,KAAOrD,KAAKL,IAAInE,KAAK0oD,YAAY7gD,KAAM7H,KAAKy3D,gBAAgB5vD,MAC7E7H,KAAK0oD,YAAYrgC,MAAQ7jB,KAAKJ,IAAIpE,KAAK0oD,YAAYrgC,MAAOroB,KAAKy3D,gBAAgB5vD,KAAO7H,KAAKy3D,gBAAgBnkD,OAC3GtT,KAAK0oD,YAAYpkC,OAAS9f,KAAKJ,IAAIpE,KAAK0oD,YAAYpkC,OAAQtkB,KAAK0oD,YAAYpkC,OAAStkB,KAAKy3D,gBAAgBlkD,SAG7GhQ,EAAK2Q,UAAU4tD,qBAAuB,SAAU/5C,GAC9C,GAAI/nB,KAAKihE,SAAS/Y,KAAQloD,KAAKihE,SAAS3tD,OAAUtT,KAAKihE,SAAS1tD,OAe1DvT,KAAKwjE,oCACPxjE,KAAKsT,MAAQ,EACbtT,KAAKuT,OAAS,QACPvT,MAAKwjE,mCAEdxjE,KAAK4hE,aAAa75C,OAnBlB,KAAK/nB,KAAKsT,MAAO,CACf,GAAImwD,GAAiC,EAAtBzjE,KAAKkP,QAAQod,MAC5BtsB,MAAKsT,MAAQmwD,EACbzjE,KAAKuT,OAASkwD,EAKdzjE,KAAKkP,QAAQod,QAAuE,GAA7D9nB,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAA+BpiD,KAAKsgE,wBAC/FtgE,KAAKugE,gBAAkBvgE,KAAKkP,QAAQod,OAAQ,GAAIm3C,EAChDzjE,KAAKwjE,mCAAoC,IAc/CjgE,EAAK2Q,UAAU2tD,mBAAqB,SAAU95C,GAC5C/nB,KAAK8hE,qBAAqB/5C,GAE1B/nB,KAAK6H,KAAS7H,KAAKwS,EAAIxS,KAAKsT,MAAQ,EACpCtT,KAAKiI,IAASjI,KAAKyS,EAAIzS,KAAKuT,OAAS,CAErC,IAAImwD,GAAU1jE,KAAK6H,KAAQ7H,KAAKsT,MAAQ,EACpCqwD,EAAU3jE,KAAKiI,IAAOjI,KAAKuT,OAAS,EACpC+Y,EAAS9nB,KAAKknB,IAAI1rB,KAAKuT,OAAS,EAEpCvT,MAAK4jE,eAAe77C,EAAK27C,EAASC,EAASr3C,GAE3CvE,EAAI6qC,OACJ7qC,EAAI87C,OAAO7jE,KAAKwS,EAAGxS,KAAKyS,EAAG6Z,GAC3BvE,EAAIlH,SACJkH,EAAI+7C,OAEJ9jE,KAAKmjE,qBAAqBp7C,GAE1BA,EAAIgrC,UAEJ/yD,KAAK0oD,YAAYzgD,IAAMjI,KAAKyS,EAAIzS,KAAKkP,QAAQod,OAC7CtsB,KAAK0oD,YAAY7gD,KAAO7H,KAAKwS,EAAIxS,KAAKkP,QAAQod,OAC9CtsB,KAAK0oD,YAAYrgC,MAAQroB,KAAKwS,EAAIxS,KAAKkP,QAAQod,OAC/CtsB,KAAK0oD,YAAYpkC,OAAStkB,KAAKyS,EAAIzS,KAAKkP,QAAQod,OAEhDtsB,KAAKsjE,gBAAgBv7C,GAErB/nB,KAAK0oD,YAAY7gD,KAAOrD,KAAKL,IAAInE,KAAK0oD,YAAY7gD,KAAM7H,KAAKy3D,gBAAgB5vD,MAC7E7H,KAAK0oD,YAAYrgC,MAAQ7jB,KAAKJ,IAAIpE,KAAK0oD,YAAYrgC,MAAOroB,KAAKy3D,gBAAgB5vD,KAAO7H,KAAKy3D,gBAAgBnkD,OAC3GtT,KAAK0oD,YAAYpkC,OAAS9f,KAAKJ,IAAIpE,KAAK0oD,YAAYpkC,OAAQtkB,KAAK0oD,YAAYpkC,OAAStkB,KAAKy3D,gBAAgBlkD,SAG7GhQ,EAAK2Q,UAAUotD,WAAa,SAAUv5C,GACpC,IAAK/nB,KAAKsT,MAAO,CACf,GAAIqH,GAAS,EACTopD,EAAW/jE,KAAKujE,YAAYx7C,EAChC/nB,MAAKsT,MAAQywD,EAASzwD,MAAQ,EAAIqH,EAClC3a,KAAKuT,OAASwwD,EAASxwD,OAAS,EAAIoH,EAEpC3a,KAAKsT,OAAuE,GAA7D9O,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAA+BpiD,KAAKogE,uBACvFpgE,KAAKuT,QAAuE,GAA7D/O,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAA+BpiD,KAAKqgE,wBACvFrgE,KAAKugE,gBAAkBvgE,KAAKsT,OAASywD,EAASzwD,MAAQ,EAAIqH,KAM9DpX,EAAK2Q,UAAUmtD,SAAW,SAAUt5C,GAClC/nB,KAAKshE,WAAWv5C,GAEhB/nB,KAAK6H,KAAO7H,KAAKwS,EAAIxS,KAAKsT,MAAQ,EAClCtT,KAAKiI,IAAMjI,KAAKyS,EAAIzS,KAAKuT,OAAS,CAElC,IAAIywD,GAAmB,IACnBhjD,EAAchhB,KAAKkP,QAAQ8R,YAC3BijD,EAAqBjkE,KAAKkP,QAAQ6wC,qBAAuB,EAAI//C,KAAKkP,QAAQ8R,WAE9E+G,GAAIY,YAAc3oB,KAAKumC,SAAWvmC,KAAKkP,QAAQ3D,MAAMwB,UAAUD,OAAS9M,KAAKgN,MAAQhN,KAAKkP,QAAQ3D,MAAMyB,MAAMF,OAAS9M,KAAKkP,QAAQ3D,MAAMuB,OAGtI9M,KAAK0gE,YAAc,IACrB34C,EAAIO,WAAatoB,KAAKumC,SAAW09B,EAAqBjjD,IAAiBhhB,KAAK0gE,YAAc,EAAKsD,EAAmB,GAClHj8C,EAAIO,WAAatoB,KAAKo6D,gBACtBryC,EAAIO,UAAY9jB,KAAKL,IAAInE,KAAKsT,MAAMyU,EAAIO,WAExCP,EAAIm8C,UAAUlkE,KAAK6H,KAAK,EAAEkgB,EAAIO,UAAWtoB,KAAKiI,IAAI,EAAE8f,EAAIO,UAAWtoB,KAAKsT,MAAM,EAAEyU,EAAIO,UAAWtoB,KAAKuT,OAAO,EAAEwU,EAAIO,UAAWtoB,KAAKkP,QAAQod,QACzIvE,EAAIlH,UAENkH,EAAIO,WAAatoB,KAAKumC,SAAW09B,EAAqBjjD,IAAiBhhB,KAAK0gE,YAAc,EAAKsD,EAAmB,GAClHj8C,EAAIO,WAAatoB,KAAKo6D,gBACtBryC,EAAIO,UAAY9jB,KAAKL,IAAInE,KAAKsT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAYhpB,KAAKumC,SAAWvmC,KAAKkP,QAAQ3D,MAAMwB,UAAUF,WAAa7M,KAAKgN,MAAQhN,KAAKkP,QAAQ3D,MAAMyB,MAAMH,WAAa7M,KAAKkP,QAAQ3D,MAAMsB,WAEhJkb,EAAIm8C,UAAUlkE,KAAK6H,KAAM7H,KAAKiI,IAAKjI,KAAKsT,MAAOtT,KAAKuT,OAAQvT,KAAKkP,QAAQod,QACzEvE,EAAInH,OACJmH,EAAIlH,SAEJ7gB,KAAK0oD,YAAYzgD,IAAMjI,KAAKiI,IAC5BjI,KAAK0oD,YAAY7gD,KAAO7H,KAAK6H,KAC7B7H,KAAK0oD,YAAYrgC,MAAQroB,KAAK6H,KAAO7H,KAAKsT,MAC1CtT,KAAK0oD,YAAYpkC,OAAStkB,KAAKiI,IAAMjI,KAAKuT,OAE1CvT,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOhT,KAAKwS,EAAGxS,KAAKyS,IAI5ClP,EAAK2Q,UAAUktD,gBAAkB,SAAUr5C,GACzC,IAAK/nB,KAAKsT,MAAO,CACf,GAAIqH,GAAS,EACTopD,EAAW/jE,KAAKujE,YAAYx7C,GAC5BhV,EAAOgxD,EAASzwD,MAAQ,EAAIqH,CAChC3a,MAAKsT,MAAQP,EACb/S,KAAKuT,OAASR,EAGd/S,KAAKsT,OAAU9O,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKogE,uBACjFpgE,KAAKuT,QAAU/O,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKqgE,wBACjFrgE,KAAKkP,QAAQod,QAAS9nB,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKsgE,wBACxFtgE,KAAKugE,gBAAkBvgE,KAAKsT,MAAQP,IAIxCxP,EAAK2Q,UAAUitD,cAAgB,SAAUp5C,GACvC/nB,KAAKohE,gBAAgBr5C,GACrB/nB,KAAK6H,KAAO7H,KAAKwS,EAAIxS,KAAKsT,MAAQ,EAClCtT,KAAKiI,IAAMjI,KAAKyS,EAAIzS,KAAKuT,OAAS,CAElC,IAAIywD,GAAmB,IACnBhjD,EAAchhB,KAAKkP,QAAQ8R,YAC3BijD,EAAqBjkE,KAAKkP,QAAQ6wC,qBAAuB,EAAI//C,KAAKkP,QAAQ8R,WAE9E+G,GAAIY,YAAc3oB,KAAKumC,SAAWvmC,KAAKkP,QAAQ3D,MAAMwB,UAAUD,OAAS9M,KAAKgN,MAAQhN,KAAKkP,QAAQ3D,MAAMyB,MAAMF,OAAS9M,KAAKkP,QAAQ3D,MAAMuB,OAGtI9M,KAAK0gE,YAAc,IACrB34C,EAAIO,WAAatoB,KAAKumC,SAAW09B,EAAqBjjD,IAAiBhhB,KAAK0gE,YAAc,EAAKsD,EAAmB,GAClHj8C,EAAIO,WAAatoB,KAAKo6D,gBACtBryC,EAAIO,UAAY9jB,KAAKL,IAAInE,KAAKsT,MAAMyU,EAAIO,WAExCP,EAAIo8C,SAASnkE,KAAKwS,EAAIxS,KAAKsT,MAAM,EAAI,EAAEyU,EAAIO,UAAWtoB,KAAKyS,EAAgB,GAAZzS,KAAKuT,OAAa,EAAEwU,EAAIO,UAAWtoB,KAAKsT,MAAQ,EAAEyU,EAAIO,UAAWtoB,KAAKuT,OAAS,EAAEwU,EAAIO,WACpJP,EAAIlH,UAENkH,EAAIO,WAAatoB,KAAKumC,SAAW09B,EAAqBjjD,IAAiBhhB,KAAK0gE,YAAc,EAAKsD,EAAmB,GAClHj8C,EAAIO,WAAatoB,KAAKo6D,gBACtBryC,EAAIO,UAAY9jB,KAAKL,IAAInE,KAAKsT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAYhpB,KAAKumC,SAAWvmC,KAAKkP,QAAQ3D,MAAMwB,UAAUF,WAAa7M,KAAKgN,MAAQhN,KAAKkP,QAAQ3D,MAAMyB,MAAMH,WAAa7M,KAAKkP,QAAQ3D,MAAMsB,WAChJkb,EAAIo8C,SAASnkE,KAAKwS,EAAIxS,KAAKsT,MAAM,EAAGtT,KAAKyS,EAAgB,GAAZzS,KAAKuT,OAAYvT,KAAKsT,MAAOtT,KAAKuT,QAC/EwU,EAAInH,OACJmH,EAAIlH,SAEJ7gB,KAAK0oD,YAAYzgD,IAAMjI,KAAKiI,IAC5BjI,KAAK0oD,YAAY7gD,KAAO7H,KAAK6H,KAC7B7H,KAAK0oD,YAAYrgC,MAAQroB,KAAK6H,KAAO7H,KAAKsT,MAC1CtT,KAAK0oD,YAAYpkC,OAAStkB,KAAKiI,IAAMjI,KAAKuT,OAE1CvT,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOhT,KAAKwS,EAAGxS,KAAKyS,IAI5ClP,EAAK2Q,UAAUstD,cAAgB,SAAUz5C,GACvC,IAAK/nB,KAAKsT,MAAO,CACf,GAAIqH,GAAS,EACTopD,EAAW/jE,KAAKujE,YAAYx7C,GAC5B07C,EAAWj/D,KAAKJ,IAAI2/D,EAASzwD,MAAOywD,EAASxwD,QAAU,EAAIoH,CAC/D3a,MAAKkP,QAAQod,OAASm3C,EAAW,EAEjCzjE,KAAKsT,MAAQmwD,EACbzjE,KAAKuT,OAASkwD,EAKdzjE,KAAKkP,QAAQod,QAAuE,GAA7D9nB,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAA+BpiD,KAAKsgE,wBAC/FtgE,KAAKugE,gBAAkBvgE,KAAKkP,QAAQod,OAAQ,GAAIm3C,IAIpDlgE,EAAK2Q,UAAU0vD,eAAiB,SAAU77C,EAAKvV,EAAGC,EAAG6Z,GACnD,GAAI03C,GAAmB,IACnBhjD,EAAchhB,KAAKkP,QAAQ8R,YAC3BijD,EAAqBjkE,KAAKkP,QAAQ6wC,qBAAuB,EAAI//C,KAAKkP,QAAQ8R,WAE9E+G,GAAIY,YAAc3oB,KAAKumC,SAAWvmC,KAAKkP,QAAQ3D,MAAMwB,UAAUD,OAAS9M,KAAKgN,MAAQhN,KAAKkP,QAAQ3D,MAAMyB,MAAMF,OAAS9M,KAAKkP,QAAQ3D,MAAMuB,OAGtI9M,KAAK0gE,YAAc,IACrB34C,EAAIO,WAAatoB,KAAKumC,SAAW09B,EAAqBjjD,IAAiBhhB,KAAK0gE,YAAc,EAAKsD,EAAmB,GAClHj8C,EAAIO,WAAatoB,KAAKo6D,gBACtBryC,EAAIO,UAAY9jB,KAAKL,IAAInE,KAAKsT,MAAMyU,EAAIO,WAExCP,EAAI87C,OAAOrxD,EAAGC,EAAG6Z,EAAO,EAAEvE,EAAIO,WAC9BP,EAAIlH,UAENkH,EAAIO,WAAatoB,KAAKumC,SAAW09B,EAAqBjjD,IAAiBhhB,KAAK0gE,YAAc,EAAKsD,EAAmB,GAClHj8C,EAAIO,WAAatoB,KAAKo6D,gBACtBryC,EAAIO,UAAY9jB,KAAKL,IAAInE,KAAKsT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAYhpB,KAAKumC,SAAWvmC,KAAKkP,QAAQ3D,MAAMwB,UAAUF,WAAa7M,KAAKgN,MAAQhN,KAAKkP,QAAQ3D,MAAMyB,MAAMH,WAAa7M,KAAKkP,QAAQ3D,MAAMsB,WAChJkb,EAAI87C,OAAO7jE,KAAKwS,EAAGxS,KAAKyS,EAAG6Z,GAC3BvE,EAAInH,OACJmH,EAAIlH,UAGNtd,EAAK2Q,UAAUqtD,YAAc,SAAUx5C,GACrC/nB,KAAKwhE,cAAcz5C,GACnB/nB,KAAK6H,KAAO7H,KAAKwS,EAAIxS,KAAKsT,MAAQ,EAClCtT,KAAKiI,IAAMjI,KAAKyS,EAAIzS,KAAKuT,OAAS,EAElCvT,KAAK4jE,eAAe77C,EAAK/nB,KAAKwS,EAAGxS,KAAKyS,EAAGzS,KAAKkP,QAAQod,QAEtDtsB,KAAK0oD,YAAYzgD,IAAMjI,KAAKyS,EAAIzS,KAAKkP,QAAQod,OAC7CtsB,KAAK0oD,YAAY7gD,KAAO7H,KAAKwS,EAAIxS,KAAKkP,QAAQod,OAC9CtsB,KAAK0oD,YAAYrgC,MAAQroB,KAAKwS,EAAIxS,KAAKkP,QAAQod,OAC/CtsB,KAAK0oD,YAAYpkC,OAAStkB,KAAKyS,EAAIzS,KAAKkP,QAAQod,OAEhDtsB,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOhT,KAAKwS,EAAGxS,KAAKyS,IAG5ClP,EAAK2Q,UAAUwtD,eAAiB,SAAU35C,GACxC,IAAK/nB,KAAKsT,MAAO,CACf,GAAIywD,GAAW/jE,KAAKujE,YAAYx7C,EAEhC/nB,MAAKsT,MAAyB,IAAjBywD,EAASzwD,MACtBtT,KAAKuT,OAA2B,EAAlBwwD,EAASxwD,OACnBvT,KAAKsT,MAAQtT,KAAKuT,SACpBvT,KAAKsT,MAAQtT,KAAKuT,OAEpB,IAAI6wD,GAAcpkE,KAAKsT,KAGvBtT,MAAKsT,OAAU9O,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKogE,uBACjFpgE,KAAKuT,QAAU/O,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKqgE,wBACjFrgE,KAAKkP,QAAQod,QAAU9nB,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKsgE,wBACzFtgE,KAAKugE,gBAAkBvgE,KAAKsT,MAAQ8wD,IAIxC7gE,EAAK2Q,UAAUutD,aAAe,SAAU15C,GACtC/nB,KAAK0hE,eAAe35C,GACpB/nB,KAAK6H,KAAO7H,KAAKwS,EAAIxS,KAAKsT,MAAQ,EAClCtT,KAAKiI,IAAMjI,KAAKyS,EAAIzS,KAAKuT,OAAS,CAElC,IAAIywD,GAAmB,IACnBhjD,EAAchhB,KAAKkP,QAAQ8R,YAC3BijD,EAAqBjkE,KAAKkP,QAAQ6wC,qBAAuB,EAAI//C,KAAKkP,QAAQ8R,WAE9E+G,GAAIY,YAAc3oB,KAAKumC,SAAWvmC,KAAKkP,QAAQ3D,MAAMwB,UAAUD,OAAS9M,KAAKgN,MAAQhN,KAAKkP,QAAQ3D,MAAMyB,MAAMF,OAAS9M,KAAKkP,QAAQ3D,MAAMuB,OAGtI9M,KAAK0gE,YAAc,IACrB34C,EAAIO,WAAatoB,KAAKumC,SAAW09B,EAAqBjjD,IAAiBhhB,KAAK0gE,YAAc,EAAKsD,EAAmB,GAClHj8C,EAAIO,WAAatoB,KAAKo6D,gBACtBryC,EAAIO,UAAY9jB,KAAKL,IAAInE,KAAKsT,MAAMyU,EAAIO,WAExCP,EAAIs8C,QAAQrkE,KAAK6H,KAAK,EAAEkgB,EAAIO,UAAWtoB,KAAKiI,IAAI,EAAE8f,EAAIO,UAAWtoB,KAAKsT,MAAM,EAAEyU,EAAIO,UAAWtoB,KAAKuT,OAAO,EAAEwU,EAAIO,WAC/GP,EAAIlH,UAENkH,EAAIO,WAAatoB,KAAKumC,SAAW09B,EAAqBjjD,IAAiBhhB,KAAK0gE,YAAc,EAAKsD,EAAmB,GAClHj8C,EAAIO,WAAatoB,KAAKo6D,gBACtBryC,EAAIO,UAAY9jB,KAAKL,IAAInE,KAAKsT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAYhpB,KAAKumC,SAAWvmC,KAAKkP,QAAQ3D,MAAMwB,UAAUF,WAAa7M,KAAKgN,MAAQhN,KAAKkP,QAAQ3D,MAAMyB,MAAMH,WAAa7M,KAAKkP,QAAQ3D,MAAMsB,WAEhJkb,EAAIs8C,QAAQrkE,KAAK6H,KAAM7H,KAAKiI,IAAKjI,KAAKsT,MAAOtT,KAAKuT,QAClDwU,EAAInH,OACJmH,EAAIlH,SAEJ7gB,KAAK0oD,YAAYzgD,IAAMjI,KAAKiI,IAC5BjI,KAAK0oD,YAAY7gD,KAAO7H,KAAK6H,KAC7B7H,KAAK0oD,YAAYrgC,MAAQroB,KAAK6H,KAAO7H,KAAKsT,MAC1CtT,KAAK0oD,YAAYpkC,OAAStkB,KAAKiI,IAAMjI,KAAKuT,OAE1CvT,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOhT,KAAKwS,EAAGxS,KAAKyS,IAG5ClP,EAAK2Q,UAAU+tD,SAAW,SAAUl6C,GAClC/nB,KAAKskE,WAAWv8C,EAAK,WAGvBxkB,EAAK2Q,UAAUkuD,cAAgB,SAAUr6C,GACvC/nB,KAAKskE,WAAWv8C,EAAK,aAGvBxkB,EAAK2Q,UAAUmuD,kBAAoB,SAAUt6C,GAC3C/nB,KAAKskE,WAAWv8C,EAAK,iBAGvBxkB,EAAK2Q,UAAUiuD,YAAc,SAAUp6C,GACrC/nB,KAAKskE,WAAWv8C,EAAK,WAGvBxkB,EAAK2Q,UAAUouD,UAAY,SAAUv6C,GACnC/nB,KAAKskE,WAAWv8C,EAAK,SAGvBxkB,EAAK2Q,UAAUguD,aAAe,WAC5B,IAAKliE,KAAKsT,MAAO,CACftT,KAAKkP,QAAQod,OAAQtsB,KAAKy/D,eAC1B,IAAI1sD,GAAO,EAAI/S,KAAKkP,QAAQod,MAC5BtsB,MAAKsT,MAAQP,EACb/S,KAAKuT,OAASR,EAGd/S,KAAKsT,OAAU9O,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKogE,uBACjFpgE,KAAKuT,QAAU/O,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKqgE,wBACjFrgE,KAAKkP,QAAQod,QAAsE,GAA7D9nB,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAA+BpiD,KAAKsgE,wBAC9FtgE,KAAKugE,gBAAkBvgE,KAAKsT,MAAQP,IAIxCxP,EAAK2Q,UAAUowD,WAAa,SAAUv8C,EAAKk3B,GACzCj/C,KAAKkiE,aAAan6C,GAElB/nB,KAAK6H,KAAO7H,KAAKwS,EAAIxS,KAAKsT,MAAQ,EAClCtT,KAAKiI,IAAMjI,KAAKyS,EAAIzS,KAAKuT,OAAS,CAElC,IAAIywD,GAAmB,IACnBhjD,EAAchhB,KAAKkP,QAAQ8R,YAC3BijD,EAAqBjkE,KAAKkP,QAAQ6wC,qBAAuB,EAAI//C,KAAKkP,QAAQ8R,YAC1EujD,EAAmB,CAGvB,QAAQtlB,GACN,IAAK,MAAiBslB,EAAmB,CAAG,MAC5C,KAAK,SAAiBA,EAAmB,CAAG,MAC5C,KAAK,WAAiBA,EAAmB,CAAG,MAC5C,KAAK,eAAiBA,EAAmB,CAAG,MAC5C,KAAK,OAAiBA,EAAmB,EAG3Cx8C,EAAIY,YAAc3oB,KAAKumC,SAAWvmC,KAAKkP,QAAQ3D,MAAMwB,UAAUD,OAAS9M,KAAKgN,MAAQhN,KAAKkP,QAAQ3D,MAAMyB,MAAMF,OAAS9M,KAAKkP,QAAQ3D,MAAMuB,OAEtI9M,KAAK0gE,YAAc,IACrB34C,EAAIO,WAAatoB,KAAKumC,SAAW09B,EAAqBjjD,IAAiBhhB,KAAK0gE,YAAc,EAAKsD,EAAmB,GAClHj8C,EAAIO,WAAatoB,KAAKo6D,gBACtBryC,EAAIO,UAAY9jB,KAAKL,IAAInE,KAAKsT,MAAMyU,EAAIO,WAExCP,EAAIk3B,GAAOj/C,KAAKwS,EAAGxS,KAAKyS,EAAGzS,KAAKkP,QAAQod,OAAQi4C,EAAmBx8C,EAAIO,WACvEP,EAAIlH,UAENkH,EAAIO,WAAatoB,KAAKumC,SAAW09B,EAAqBjjD,IAAiBhhB,KAAK0gE,YAAc,EAAKsD,EAAmB,GAClHj8C,EAAIO,WAAatoB,KAAKo6D,gBACtBryC,EAAIO,UAAY9jB,KAAKL,IAAInE,KAAKsT,MAAMyU,EAAIO,WAExCP,EAAIiB,UAAYhpB,KAAKumC,SAAWvmC,KAAKkP,QAAQ3D,MAAMwB,UAAUF,WAAa7M,KAAKgN,MAAQhN,KAAKkP,QAAQ3D,MAAMyB,MAAMH,WAAa7M,KAAKkP,QAAQ3D,MAAMsB,WAChJkb,EAAIk3B,GAAOj/C,KAAKwS,EAAGxS,KAAKyS,EAAGzS,KAAKkP,QAAQod,QACxCvE,EAAInH,OACJmH,EAAIlH,SAEJ7gB,KAAK0oD,YAAYzgD,IAAMjI,KAAKyS,EAAIzS,KAAKkP,QAAQod,OAC7CtsB,KAAK0oD,YAAY7gD,KAAO7H,KAAKwS,EAAIxS,KAAKkP,QAAQod,OAC9CtsB,KAAK0oD,YAAYrgC,MAAQroB,KAAKwS,EAAIxS,KAAKkP,QAAQod,OAC/CtsB,KAAK0oD,YAAYpkC,OAAStkB,KAAKyS,EAAIzS,KAAKkP,QAAQod,OAE5CtsB,KAAKgT,QACPhT,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOhT,KAAKwS,EAAGxS,KAAKyS,EAAIzS,KAAKuT,OAAS,EAAG1M,OAAW,WAAU,GACpF7G,KAAK0oD,YAAY7gD,KAAOrD,KAAKL,IAAInE,KAAK0oD,YAAY7gD,KAAM7H,KAAKy3D,gBAAgB5vD,MAC7E7H,KAAK0oD,YAAYrgC,MAAQ7jB,KAAKJ,IAAIpE,KAAK0oD,YAAYrgC,MAAOroB,KAAKy3D,gBAAgB5vD,KAAO7H,KAAKy3D,gBAAgBnkD,OAC3GtT,KAAK0oD,YAAYpkC,OAAS9f,KAAKJ,IAAIpE,KAAK0oD,YAAYpkC,OAAQtkB,KAAK0oD,YAAYpkC,OAAStkB,KAAKy3D,gBAAgBlkD,UAI/GhQ,EAAK2Q,UAAU8tD,YAAc,SAAUj6C,GACrC,IAAK/nB,KAAKsT,MAAO,CACf,GAAIqH,GAAS,EACTopD,EAAW/jE,KAAKujE,YAAYx7C,EAChC/nB,MAAKsT,MAAQywD,EAASzwD,MAAQ,EAAIqH,EAClC3a,KAAKuT,OAASwwD,EAASxwD,OAAS,EAAIoH,EAGpC3a,KAAKsT,OAAU9O,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKogE,uBACjFpgE,KAAKuT,QAAU/O,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKqgE,wBACjFrgE,KAAKkP,QAAQod,QAAS9nB,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKsgE,wBACxFtgE,KAAKugE,gBAAkBvgE,KAAKsT,OAASywD,EAASzwD,MAAQ,EAAIqH,KAI9DpX,EAAK2Q,UAAU6tD,UAAY,SAAUh6C,GACnC/nB,KAAKgiE,YAAYj6C,GACjB/nB,KAAK6H,KAAO7H,KAAKwS,EAAIxS,KAAKsT,MAAQ,EAClCtT,KAAKiI,IAAMjI,KAAKyS,EAAIzS,KAAKuT,OAAS,EAElCvT,KAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOhT,KAAKwS,EAAGxS,KAAKyS,GAE1CzS,KAAK0oD,YAAYzgD,IAAMjI,KAAKiI,IAC5BjI,KAAK0oD,YAAY7gD,KAAO7H,KAAK6H,KAC7B7H,KAAK0oD,YAAYrgC,MAAQroB,KAAK6H,KAAO7H,KAAKsT,MAC1CtT,KAAK0oD,YAAYpkC,OAAStkB,KAAKiI,IAAMjI,KAAKuT,QAG5ChQ,EAAK2Q,UAAUsuD,YAAc,WAC3B,IAAKxiE,KAAKsT,MAAO,CACf,GAAIqH,GAAS,EACTu9B,GAEF5kC,MAAOrP,OAAOjE,KAAKkP,QAAQgpC,UAC3B3kC,OAAQtP,OAAOjE,KAAKkP,QAAQgpC,UAE9Bl4C,MAAKsT,MAAQ4kC,EAAS5kC,MAAQ,EAAIqH,EAClC3a,KAAKuT,OAAS2kC,EAAS3kC,OAAS,EAAIoH,EAGpC3a,KAAKsT,OAAS9O,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKogE,uBAChFpgE,KAAKuT,QAAU/O,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKqgE,wBACjFrgE,KAAKkP,QAAQod,QAAU9nB,KAAKL,IAAInE,KAAK0gE,YAAc,EAAG1gE,KAAKoiD,uBAAyBpiD,KAAKsgE,wBACzFtgE,KAAKugE,gBAAkBvgE,KAAKsT,OAAS4kC,EAAS5kC,MAAQ,EAAIqH,KAI9DpX,EAAK2Q,UAAUquD,UAAY,SAAUx6C,GAenC,GAdA/nB,KAAKwiE,YAAYz6C,GAEjB/nB,KAAKkP,QAAQgpC,SAAWl4C,KAAKkP,QAAQgpC,UAAY,GAEjDl4C,KAAK6H,KAAO7H,KAAKwS,EAAIxS,KAAKsT,MAAQ,EAClCtT,KAAKiI,IAAMjI,KAAKyS,EAAIzS,KAAKuT,OAAS,EAClCvT,KAAKwkE,MAAMz8C,GAGX/nB,KAAK0oD,YAAYzgD,IAAMjI,KAAKyS,EAAIzS,KAAKkP,QAAQgpC,SAAS,EACtDl4C,KAAK0oD,YAAY7gD,KAAO7H,KAAKwS,EAAIxS,KAAKkP,QAAQgpC,SAAS,EACvDl4C,KAAK0oD,YAAYrgC,MAAQroB,KAAKwS,EAAIxS,KAAKkP,QAAQgpC,SAAS,EACxDl4C,KAAK0oD,YAAYpkC,OAAStkB,KAAKyS,EAAIzS,KAAKkP,QAAQgpC,SAAS,EAErDl4C,KAAKgT,MAAO,CACd,GAAIyxD,GAAkB,CACtBzkE,MAAKg6D,OAAOjyC,EAAK/nB,KAAKgT,MAAOhT,KAAKwS,EAAGxS,KAAKyS,EAAIzS,KAAKuT,OAAS,EAAIkxD,EAAiB,OAAO,GAExFzkE,KAAK0oD,YAAY7gD,KAAOrD,KAAKL,IAAInE,KAAK0oD,YAAY7gD,KAAM7H,KAAKy3D,gBAAgB5vD,MAC7E7H,KAAK0oD,YAAYrgC,MAAQ7jB,KAAKJ,IAAIpE,KAAK0oD,YAAYrgC,MAAOroB,KAAKy3D,gBAAgB5vD,KAAO7H,KAAKy3D,gBAAgBnkD,OAC3GtT,KAAK0oD,YAAYpkC,OAAS9f,KAAKJ,IAAIpE,KAAK0oD,YAAYpkC,OAAQtkB,KAAK0oD,YAAYpkC,OAAStkB,KAAKy3D,gBAAgBlkD,UAI/GhQ,EAAK2Q,UAAUswD,MAAQ,SAAUz8C,GAC/B,GAAI28C,GAAmBzgE,OAAOjE,KAAKkP,QAAQgpC,UAAYl4C,KAAKwgE,YAE5D,IAAIxgE,KAAKkP,QAAQyhC,MAAQ+zB,EAAmB1kE,KAAKkP,QAAQuwC,kBAAoB,EAAG,CAE5E,GAAIvH,GAAWj0C,OAAOjE,KAAKkP,QAAQgpC,SAEnCnwB,GAAIQ,MAAQvoB,KAAKumC,SAAW,QAAU,IAAM2R,EAAW,MAAQl4C,KAAKkP,QAAQy1D,aAG5E58C,EAAIiB,UAAYhpB,KAAKkP,QAAQ01D,WAAa,QAC1C78C,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,SACnBxB,EAAIyB,SAASxpB,KAAKkP,QAAQyhC,KAAM3wC,KAAKwS,EAAGxS,KAAKyS,KAInDlP,EAAK2Q,UAAU8lD,OAAS,SAAUjyC,EAAKuC,EAAM9X,EAAGC,EAAGo2B,EAAOg8B,EAAUC,GAClE,GAAIC,GAAmB9gE,OAAOjE,KAAKkP,QAAQkwC,UAAYp/C,KAAKwgE,YAC5D,IAAIl2C,GAAQy6C,GAAoB/kE,KAAKkP,QAAQuwC,kBAAoB,EAAG,CAClE,GAAIL,GAAWn7C,OAAOjE,KAAKkP,QAAQkwC,SAG/B2lB,IAAoB/kE,KAAKkP,QAAQ2wC,qBACnCT,EAAWn7C,OAAOjE,KAAKkP,QAAQ2wC,oBAAsB7/C,KAAKo6D,gBAI5D,IAAIjb,GAAYn/C,KAAKkP,QAAQiwC,WAAa,UACtC6lB,EAAchlE,KAAKkP,QAAQswC,eAC/B,IAAIulB,GAAoB/kE,KAAKkP,QAAQuwC,kBAAmB,CACtD,GAAIj0C,GAAUhH,KAAKJ,IAAI,EAAEI,KAAKL,IAAI,EAAE,GAAKnE,KAAKkP,QAAQuwC,kBAAoBslB,IAC1E5lB,GAAcx+C,EAAK2K,gBAAgB6zC,EAAa3zC,GAChDw5D,EAAcrkE,EAAK2K,gBAAgB05D,EAAax5D,GAIlDuc,EAAIQ,MAAQvoB,KAAKumC,SAAW,QAAU,IAAM6Y,EAAW,MAAQp/C,KAAKkP,QAAQmwC,QAE5E,IAAI3T,GAAQphB,EAAKhiB,MAAM,MACnBuyD,EAAYnvB,EAAM1lC,OAClB0xD,EAAQjlD,GAAK,EAAIooD,GAAa,EAAIzb,CAChB,IAAlB0lB,IACFpN,EAAQjlD,GAAK,EAAIooD,IAAc,EAAIzb,GAKrC,KAAK,GADD9rC,GAAQyU,EAAI+yC,YAAYpvB,EAAM,IAAIp4B,MAC7BzN,EAAI,EAAOg1D,EAAJh1D,EAAeA,IAAK,CAClC,GAAIyiB,GAAYP,EAAI+yC,YAAYpvB,EAAM7lC,IAAIyN,KAC1CA,GAAQgV,EAAYhV,EAAQgV,EAAYhV,EAE1C,GAAIC,GAAS6rC,EAAWyb,EACpBhzD,EAAO2K,EAAIc,EAAQ,EACnBrL,EAAMwK,EAAIc,EAAS,CACP,YAAZsxD,IACF58D,GAAO,GAAMm3C,EACbn3C,GAAO,EACPyvD,GAAS,GAEX13D,KAAKy3D,iBAAmBxvD,IAAIA,EAAIJ,KAAKA,EAAKyL,MAAMA,EAAMC,OAAOA,EAAOmkD,MAAMA,GAG5C7wD,SAA1B7G,KAAKkP,QAAQowC,UAAoD,OAA1Bt/C,KAAKkP,QAAQowC,UAA+C,SAA1Bt/C,KAAKkP,QAAQowC,WACxFv3B,EAAIiB,UAAYhpB,KAAKkP,QAAQowC,SAC7Bv3B,EAAIszC,SAASxzD,EAAMI,EAAKqL,EAAOC,IAIjCwU,EAAIiB,UAAYm2B,EAChBp3B,EAAIuB,UAAYuf,GAAS,SACzB9gB,EAAIwB,aAAes7C,GAAY,SAC3B7kE,KAAKkP,QAAQqwC,gBAAkB,IACjCx3B,EAAIO,UAActoB,KAAKkP,QAAQqwC,gBAC/Bx3B,EAAIY,YAAcq8C,EAClBj9C,EAAIuzC,SAAc,QAEpB,KAAK,GAAIz1D,GAAI,EAAOg1D,EAAJh1D,EAAeA,IAC1B7F,KAAKkP,QAAQqwC,iBACdx3B,EAAIwzC,WAAW7vB,EAAM7lC,GAAI2M,EAAGklD,GAE9B3vC,EAAIyB,SAASkiB,EAAM7lC,GAAI2M,EAAGklD,GAC1BA,GAAStY,IAMf77C,EAAK2Q,UAAUqvD,YAAc,SAASx7C,GACpC,GAAmBlhB,SAAf7G,KAAKgT,MAAqB,CAC5B,GAAIosC,GAAWn7C,OAAOjE,KAAKkP,QAAQkwC,SAC/BA,GAAWp/C,KAAKwgE,aAAexgE,KAAKkP,QAAQ2wC,qBAC9CT,EAAWn7C,OAAOjE,KAAKkP,QAAQ2wC,oBAAsB7/C,KAAKo6D,iBAE5DryC,EAAIQ,MAAQvoB,KAAKumC,SAAW,QAAU,IAAM6Y,EAAW,MAAQp/C,KAAKkP,QAAQmwC,QAM5E,KAAK,GAJD3T,GAAQ1rC,KAAKgT,MAAM1K,MAAM,MACzBiL,GAAU6rC,EAAW,GAAK1T,EAAM1lC,OAChCsN,EAAQ,EAEHzN,EAAI,EAAGi9B,EAAO4I,EAAM1lC,OAAY88B,EAAJj9B,EAAUA,IAC7CyN,EAAQ9O,KAAKJ,IAAIkP,EAAOyU,EAAI+yC,YAAYpvB,EAAM7lC,IAAIyN,MAGpD,QAAQA,MAASA,EAAOC,OAAUA,EAAQsnD,UAAWnvB,EAAM1lC,QAG3D,OAAQsN,MAAS,EAAGC,OAAU,EAAGsnD,UAAW,IAUhDt3D,EAAK2Q,UAAUm/C,OAAS,WACtB,MAAmBxsD,UAAf7G,KAAKsT,MACDtT,KAAKwS,EAAIxS,KAAKsT,MAAOtT,KAAKo6D,iBAAoBp6D,KAAKsmD,cAAc9zC,GACjExS,KAAKwS,EAAIxS,KAAKsT,MAAOtT,KAAKo6D,gBAAoBp6D,KAAKumD,kBAAkB/zC,GACrExS,KAAKyS,EAAIzS,KAAKuT,OAAOvT,KAAKo6D,iBAAoBp6D,KAAKsmD,cAAc7zC,GACjEzS,KAAKyS,EAAIzS,KAAKuT,OAAOvT,KAAKo6D,gBAAoBp6D,KAAKumD,kBAAkB9zC,GAGpE,GAQXlP,EAAK2Q,UAAU+wD,OAAS,WACtB,MAAQjlE,MAAKwS,GAAKxS,KAAKsmD,cAAc9zC,GAC7BxS,KAAKwS,EAAIxS,KAAKumD,kBAAkB/zC,GAChCxS,KAAKyS,GAAKzS,KAAKsmD,cAAc7zC,GAC7BzS,KAAKyS,EAAIzS,KAAKumD,kBAAkB9zC,GAW1ClP,EAAK2Q,UAAUk/C,eAAiB,SAAS7uD,EAAM+hD,EAAcC,GAC3DvmD,KAAKo6D,gBAAkB,EAAI71D,EAC3BvE,KAAKwgE,aAAej8D,EACpBvE,KAAKsmD,cAAgBA,EACrBtmD,KAAKumD,kBAAoBA,GAS3BhjD,EAAK2Q,UAAU+wB,SAAW,SAAS1gC,GACjCvE,KAAKo6D,gBAAkB,EAAI71D,EAC3BvE,KAAKwgE,aAAej8D,GAQtBhB,EAAK2Q,UAAUgxD,cAAgB,WAC7BllE,KAAK+/D,GAAK,EACV//D,KAAKggE,GAAK,GASZz8D,EAAK2Q,UAAUixD,eAAiB,SAASC,GACvC,GAAIC,GAAerlE,KAAK+/D,GAAK//D,KAAK+/D,GAAKqF,CAEvCplE,MAAK+/D,GAAKv7D,KAAKgsB,KAAK60C,EAAarlE,KAAKkP,QAAQ4vC,MAC9CumB,EAAerlE,KAAKggE,GAAKhgE,KAAKggE,GAAKoF,EAEnCplE,KAAKggE,GAAKx7D,KAAKgsB,KAAK60C,EAAarlE,KAAKkP,QAAQ4vC,OAGhDj/C,EAAOD,QAAU2D,GAKb,SAAS1D,GAWb,QAAS2D,GAAMgX,EAAWhI,EAAGC,EAAG6X,EAAM5c,GAElC1N,KAAKwa,UADHA,EACeA,EAGAxI,SAASujB,KAId1uB,SAAV6G,IACe,gBAAN8E,IACT9E,EAAQ8E,EACRA,EAAI3L,QACqB,gBAATyjB,IAChB5c,EAAQ4c,EACRA,EAAOzjB,QAGP6G,GACEyxC,UAAW,QACXC,SAAU,GACVC,SAAU,UACV9zC,OACEuB,OAAQ,OACRD,WAAY,aAMpB7M,KAAKwS,EAAI,EACTxS,KAAKyS,EAAI,EACTzS,KAAKglB,QAAU,EACfhlB,KAAK05B,QAAS,EAEJ7yB,SAAN2L,GAAyB3L,SAAN4L,GACrBzS,KAAK0vD,YAAYl9C,EAAGC,GAET5L,SAATyjB,GACFtqB,KAAK8wD,QAAQxmC,GAIftqB,KAAKsgB,MAAQtO,SAASM,cAAc,OACpCtS,KAAKsgB,MAAMlY,UAAY,kBACvBpI,KAAKsgB,MAAM5S,MAAMnC,MAAkBmC,EAAMyxC,UACzCn/C,KAAKsgB,MAAM5S,MAAMiT,gBAAkBjT,EAAMnC,MAAMsB,WAC/C7M,KAAKsgB,MAAM5S,MAAMqT,YAAkBrT,EAAMnC,MAAMuB,OAC/C9M,KAAKsgB,MAAM5S,MAAM0xC,SAAkB1xC,EAAM0xC,SAAW,KACpDp/C,KAAKsgB,MAAM5S,MAAM43D,WAAkB53D,EAAM2xC,SACzCr/C,KAAKwa,UAAUtI,YAAYlS,KAAKsgB,OAOlC9c,EAAM0Q,UAAUw7C,YAAc,SAASl9C,EAAGC,GACxCzS,KAAKwS,EAAInH,SAASmH,GAClBxS,KAAKyS,EAAIpH,SAASoH,IAOpBjP,EAAM0Q,UAAU48C,QAAU,SAAS39C,GAC7BA,YAAmBy0B,UACrB5nC,KAAKsgB,MAAM2E,UAAY,GACvBjlB,KAAKsgB,MAAMpO,YAAYiB,IAGvBnT,KAAKsgB,MAAM2E,UAAY9R,GAQ3B3P,EAAM0Q,UAAU6yB,KAAO,SAAUA,GAK/B,GAJalgC,SAATkgC,IACFA,GAAO,GAGLA,EAAM,CACR,GAAIxzB,GAASvT,KAAKsgB,MAAMuF,aACpBvS,EAAStT,KAAKsgB,MAAME,YACpB4U,EAAYp1B,KAAKsgB,MAAMnW,WAAW0b,aAClCmjB,EAAWhpC,KAAKsgB,MAAMnW,WAAWqW,YAEjCvY,EAAOjI,KAAKyS,EAAIc,CAChBtL,GAAMsL,EAASvT,KAAKglB,QAAUoQ,IAChCntB,EAAMmtB,EAAY7hB,EAASvT,KAAKglB,SAE9B/c,EAAMjI,KAAKglB,UACb/c,EAAMjI,KAAKglB,QAGb,IAAInd,GAAO7H,KAAKwS,CACZ3K,GAAOyL,EAAQtT,KAAKglB,QAAUgkB,IAChCnhC,EAAOmhC,EAAW11B,EAAQtT,KAAKglB,SAE7Bnd,EAAO7H,KAAKglB,UACdnd,EAAO7H,KAAKglB,SAGdhlB,KAAKsgB,MAAM5S,MAAM7F,KAAOA,EAAO,KAC/B7H,KAAKsgB,MAAM5S,MAAMzF,IAAMA,EAAM,KAC7BjI,KAAKsgB,MAAM5S,MAAM2rB,WAAa,UAC9Br5B,KAAK05B,QAAS,MAGd15B,MAAK8mC,QAOTtjC,EAAM0Q,UAAU4yB,KAAO,WACrB9mC,KAAK05B,QAAS,EACd15B,KAAKsgB,MAAM5S,MAAM2rB,WAAa,UAGhCx5B,EAAOD,QAAU4D,GAKb,SAAS3D,EAAQD,GAarB,QAAS2lE,GAAU9xD,GAEjB,MADAid,GAAMjd,EACC+xD,IAoCT,QAASthC,KACPx7B,EAAQ,EACRjI,EAAIiwB,EAAItK,OAAO,GAQjB,QAASiD,KACP3gB,IACAjI,EAAIiwB,EAAItK,OAAO1d,GAOjB,QAAS+8D,KACP,MAAO/0C,GAAItK,OAAO1d,EAAQ,GAS5B,QAASg9D,GAAejlE,GACtB,MAAOklE,GAAkBl3D,KAAKhO,GAShC,QAASmlE,GAAOhgE,EAAGa,GAKjB,GAJKb,IACHA,MAGEa,EACF,IAAK,GAAIuQ,KAAQvQ,GACXA,EAAEN,eAAe6Q,KACnBpR,EAAEoR,GAAQvQ,EAAEuQ,GAIlB,OAAOpR,GAeT,QAAS+S,GAASoL,EAAKosB,EAAM7rC,GAG3B,IAFA,GAAIuJ,GAAOsiC,EAAK7nC,MAAM,KAClBu9D,EAAI9hD,EACDlW,EAAK7H,QAAQ,CAClB,GAAIiD,GAAM4E,EAAKkE,OACXlE,GAAK7H,QAEF6/D,EAAE58D,KACL48D,EAAE58D,OAEJ48D,EAAIA,EAAE58D,IAIN48D,EAAE58D,GAAO3E,GAWf,QAASwhE,GAAQj0C,EAAOw2B,GAOtB,IANA,GAAIxiD,GAAGC,EACHi2B,EAAU,KAGVgqC,GAAUl0C,GACVnyB,EAAOmyB,EACJnyB,EAAK2K,QACV07D,EAAOx9D,KAAK7I,EAAK2K,QACjB3K,EAAOA,EAAK2K,MAId,IAAI3K,EAAKm/C,MACP,IAAKh5C,EAAI,EAAGC,EAAMpG,EAAKm/C,MAAM74C,OAAYF,EAAJD,EAASA,IAC5C,GAAIwiD,EAAKhoD,KAAOX,EAAKm/C,MAAMh5C,GAAGxF,GAAI,CAChC07B,EAAUr8B,EAAKm/C,MAAMh5C,EACrB,OAiBN,IAZKk2B,IAEHA,GACE17B,GAAIgoD,EAAKhoD,IAEPwxB,EAAMw2B,OAERtsB,EAAQiqC,KAAOJ,EAAM7pC,EAAQiqC,KAAMn0C,EAAMw2B,QAKxCxiD,EAAIkgE,EAAO//D,OAAS,EAAGH,GAAK,EAAGA,IAAK,CACvC,GAAIsF,GAAI46D,EAAOlgE,EAEVsF,GAAE0zC,QACL1zC,EAAE0zC,UAE4B,IAA5B1zC,EAAE0zC,MAAM73C,QAAQ+0B,IAClB5wB,EAAE0zC,MAAMt2C,KAAKwzB,GAKbssB,EAAK2d,OACPjqC,EAAQiqC,KAAOJ,EAAM7pC,EAAQiqC,KAAM3d,EAAK2d,OAS5C,QAASC,GAAQp0C,EAAO6+B,GAKtB,GAJK7+B,EAAMmuB,QACTnuB,EAAMmuB,UAERnuB,EAAMmuB,MAAMz3C,KAAKmoD,GACb7+B,EAAM6+B,KAAM,CACd,GAAIsV,GAAOJ,KAAU/zC,EAAM6+B,KAC3BA,GAAKsV,KAAOJ,EAAMI,EAAMtV,EAAKsV,OAajC,QAASE,GAAWr0C,EAAO1H,EAAMC,EAAIjjB,EAAM6+D,GACzC,GAAItV,IACFvmC,KAAMA,EACNC,GAAIA,EACJjjB,KAAMA,EAQR,OALI0qB,GAAM6+B,OACRA,EAAKsV,KAAOJ,KAAU/zC,EAAM6+B,OAE9BA,EAAKsV,KAAOJ,EAAMlV,EAAKsV,SAAYA,GAE5BtV,EAOT,QAASyV,KAKP,IAJAC,EAAYC,EAAUC,KACtBC,EAAQ,GAGI,KAAL9lE,GAAiB,KAALA,GAAkB,MAALA,GAAkB,MAALA,GAC3C4oB,GAGF,GAAG,CACD,GAAIm9C,IAAY,CAGhB,IAAS,KAAL/lE,EAAU,CAGZ,IADA,GAAIoF,GAAI6C,EAAQ,EACQ,KAAjBgoB,EAAItK,OAAOvgB,IAA8B,KAAjB6qB,EAAItK,OAAOvgB,IACxCA,GAEF,IAAqB,MAAjB6qB,EAAItK,OAAOvgB,IAA+B,IAAjB6qB,EAAItK,OAAOvgB,GAAU,CAEhD,KAAY,IAALpF,GAAgB,MAALA,GAChB4oB,GAEFm9C,IAAY,GAGhB,GAAS,KAAL/lE,GAA6B,KAAjBglE,IAAsB,CAEpC,KAAY,IAALhlE,GAAgB,MAALA,GAChB4oB,GAEFm9C,IAAY,EAEd,GAAS,KAAL/lE,GAA6B,KAAjBglE,IAAsB,CAEpC,KAAY,IAALhlE,GAAS,CACd,GAAS,KAALA,GAA6B,KAAjBglE,IAAsB,CAEpCp8C,IACAA,GACA,OAGAA,IAGJm9C,GAAY,EAId,KAAY,KAAL/lE,GAAiB,KAALA,GAAkB,MAALA,GAAkB,MAALA,GAC3C4oB,UAGGm9C,EAGP,IAAS,IAAL/lE,EAGF,YADA2lE,EAAYC,EAAUI,UAKxB,IAAIC,GAAKjmE,EAAIglE,GACb,IAAIkB,EAAWD,GAKb,MAJAN,GAAYC,EAAUI,UACtBF,EAAQG,EACRr9C,QACAA,IAKF,IAAIs9C,EAAWlmE,GAIb,MAHA2lE,GAAYC,EAAUI,UACtBF,EAAQ9lE,MACR4oB,IAMF,IAAIq8C,EAAejlE,IAAW,KAALA,EAAU,CAIjC,IAHA8lE,GAAS9lE,EACT4oB,IAEOq8C,EAAejlE,IACpB8lE,GAAS9lE,EACT4oB,GAYF,OAVa,SAATk9C,EACFA,GAAQ,EAEQ,QAATA,EACPA,GAAQ,EAEAvhE,MAAMf,OAAOsiE,MACrBA,EAAQtiE,OAAOsiE,SAEjBH,EAAYC,EAAUO,YAKxB,GAAS,KAALnmE,EAAU,CAEZ,IADA4oB,IACY,IAAL5oB,IAAiB,KAALA,GAAkB,KAALA,GAA6B,KAAjBglE,MAC1Cc,GAAS9lE,EACA,KAALA,GACF4oB,IAEFA,GAEF,IAAS,KAAL5oB,EACF,KAAMomE,GAAe,2BAIvB,OAFAx9C,UACA+8C,EAAYC,EAAUO,YAMxB,IADAR,EAAYC,EAAUS,QACV,IAALrmE,GACL8lE,GAAS9lE,EACT4oB,GAEF,MAAM,IAAI5O,aAAY,yBAA2BssD,EAAKR,EAAO,IAAM,KAOrE,QAASf,KACP,GAAI3zC,KAwBJ,IAtBAqS,IACAiiC,IAGa,UAATI,IACF10C,EAAMm1C,QAAS,EACfb,MAIW,SAATI,GAA6B,WAATA,KACtB10C,EAAM1qB,KAAOo/D,EACbJ,KAIEC,GAAaC,EAAUO,aACzB/0C,EAAMxxB,GAAKkmE,EACXJ,KAIW,KAATI,EACF,KAAMM,GAAe,2BAQvB,IANAV,IAGAc,EAAgBp1C,GAGH,KAAT00C,EACF,KAAMM,GAAe,2BAKvB,IAHAV,IAGc,KAAVI,EACF,KAAMM,GAAe,uBASvB,OAPAV,WAGOt0C,GAAMw2B,WACNx2B,GAAM6+B,WACN7+B,GAAMA,MAENA,EAOT,QAASo1C,GAAiBp1C,GACxB,KAAiB,KAAV00C,GAAyB,KAATA,GACrBW,EAAer1C,GACF,KAAT00C,GACFJ,IAWN,QAASe,GAAer1C,GAEtB,GAAIs1C,GAAWC,EAAcv1C,EAC7B,IAAIs1C,EAIF,WAFAE,GAAUx1C,EAAOs1C,EAMnB,IAAInB,GAAOsB,EAAwBz1C,EACnC,KAAIm0C,EAAJ,CAKA,GAAII,GAAaC,EAAUO,WACzB,KAAMC,GAAe,sBAEvB,IAAIxmE,GAAKkmE,CAGT,IAFAJ,IAEa,KAATI,EAAc,CAGhB,GADAJ,IACIC,GAAaC,EAAUO,WACzB,KAAMC,GAAe,sBAEvBh1C,GAAMxxB,GAAMkmE,EACZJ,QAIAoB,GAAmB11C,EAAOxxB,IAS9B,QAAS+mE,GAAev1C,GACtB,GAAIs1C,GAAW,IAgBf,IAba,YAATZ,IACFY,KACAA,EAAShgE,KAAO,WAChBg/D,IAGIC,GAAaC,EAAUO,aACzBO,EAAS9mE,GAAKkmE,EACdJ,MAKS,KAATI,EAAc,CAehB,GAdAJ,IAEKgB,IACHA,MAEFA,EAAS98D,OAASwnB,EAClBs1C,EAAS9e,KAAOx2B,EAAMw2B,KACtB8e,EAASzW,KAAO7+B,EAAM6+B,KACtByW,EAASt1C,MAAQA,EAAMA,MAGvBo1C,EAAgBE,GAGH,KAATZ,EACF,KAAMM,GAAe,2BAEvBV,WAGOgB,GAAS9e,WACT8e,GAASzW,WACTyW,GAASt1C,YACTs1C,GAAS98D,OAGXwnB,EAAM21C,YACT31C,EAAM21C,cAER31C,EAAM21C,UAAUj/D,KAAK4+D,GAGvB,MAAOA,GAYT,QAASG,GAAyBz1C,GAEhC,MAAa,QAAT00C,GACFJ,IAGAt0C,EAAMw2B,KAAOof,IACN,QAES,QAATlB,GACPJ,IAGAt0C,EAAM6+B,KAAO+W,IACN,QAES,SAATlB,GACPJ,IAGAt0C,EAAMA,MAAQ41C,IACP,SAGF,KAQT,QAASF,GAAmB11C,EAAOxxB,GAEjC,GAAIgoD,IACFhoD,GAAIA,GAEF2lE,EAAOyB,GACPzB,KACF3d,EAAK2d,KAAOA,GAEdF,EAAQj0C,EAAOw2B,GAGfgf,EAAUx1C,EAAOxxB,GAQnB,QAASgnE,GAAUx1C,EAAO1H,GACxB,KAAgB,MAATo8C,GAA0B,MAATA,GAAe,CACrC,GAAIn8C,GACAjjB,EAAOo/D,CACXJ,IAEA,IAAIgB,GAAWC,EAAcv1C,EAC7B,IAAIs1C,EACF/8C,EAAK+8C,MAEF,CACH,GAAIf,GAAaC,EAAUO,WACzB,KAAMC,GAAe,kCAEvBz8C,GAAKm8C,EACLT,EAAQj0C,GACNxxB,GAAI+pB,IAEN+7C,IAIF,GAAIH,GAAOyB,IAGP/W,EAAOwV,EAAWr0C,EAAO1H,EAAMC,EAAIjjB,EAAM6+D,EAC7CC,GAAQp0C,EAAO6+B,GAEfvmC,EAAOC,GASX,QAASq9C,KAGP,IAFA,GAAIzB,GAAO,KAEK,KAATO,GAAc,CAGnB,IAFAJ,IACAH,KACiB,KAAVO,GAAyB,KAATA,GAAc,CACnC,GAAIH,GAAaC,EAAUO,WACzB,KAAMC,GAAe,0BAEvB,IAAI7vD,GAAOuvD,CAGX,IADAJ,IACa,KAATI,EACF,KAAMM,GAAe,wBAIvB,IAFAV,IAEIC,GAAaC,EAAUO,WACzB,KAAMC,GAAe,2BAEvB,IAAIviE,GAAQiiE,CACZ5tD,GAASqtD,EAAMhvD,EAAM1S,GAErB6hE,IACY,KAARI,GACFJ,IAIJ,GAAa,KAATI,EACF,KAAMM,GAAe,qBAEvBV,KAGF,MAAOH,GAQT,QAASa,GAAea,GACtB,MAAO,IAAIjtD,aAAYitD,EAAU,UAAYX,EAAKR,EAAO,IAAM,WAAa79D,EAAQ,KAStF,QAASq+D,GAAMz8C,EAAMq9C,GACnB,MAAQr9C,GAAKtkB,QAAU2hE,EAAar9C,EAAQA,EAAK5e,OAAO,EAAG,IAAM,MASnE,QAASk8D,GAASC,EAAQC,EAAQ3tD,GAC5B7T,MAAMC,QAAQshE,GAChBA,EAAOj/D,QAAQ,SAAUm/D,GACnBzhE,MAAMC,QAAQuhE,GAChBA,EAAOl/D,QAAQ,SAAUo/D,GACvB7tD,EAAG4tD,EAAOC,KAIZ7tD,EAAG4tD,EAAOD,KAKVxhE,MAAMC,QAAQuhE,GAChBA,EAAOl/D,QAAQ,SAAUo/D,GACvB7tD,EAAG0tD,EAAQG,KAIb7tD,EAAG0tD,EAAQC,GAWjB,QAAShe,GAAYr2C,GAEnB,GAAIo2C,GAAU0b,EAAS9xD,GACnBw0D,GACFppB,SACAmB,SACA9wC,WAmBF,IAfI26C,EAAQhL,OACVgL,EAAQhL,MAAMj2C,QAAQ,SAAUs/D,GAC9B,GAAIC,IACF9nE,GAAI6nE,EAAQ7nE,GACZ2S,MAAOtO,OAAOwjE,EAAQl1D,OAASk1D,EAAQ7nE,IAEzCulE,GAAMuC,EAAWD,EAAQlC,MACrBmC,EAAUjpB,QACZipB,EAAUlpB,MAAQ,SAEpBgpB,EAAUppB,MAAMt2C,KAAK4/D,KAKrBte,EAAQ7J,MAAO,CAMjB,GAAIooB,GAAc,SAAUC,GAC1B,GAAIC,IACFn+C,KAAMk+C,EAAQl+C,KACdC,GAAIi+C,EAAQj+C,GAId,OAFAw7C,GAAM0C,EAAWD,EAAQrC,MACzBsC,EAAU56D,MAAyB,MAAhB26D,EAAQlhE,KAAgB,QAAU,OAC9CmhE,EAGTze,GAAQ7J,MAAMp3C,QAAQ,SAAUy/D,GAC9B,GAAIl+C,GAAMC,CAERD,GADEk+C,EAAQl+C,eAAgBvjB,QACnByhE,EAAQl+C,KAAK00B,OAIlBx+C,GAAIgoE,EAAQl+C,MAKdC,EADEi+C,EAAQj+C,aAAcxjB,QACnByhE,EAAQj+C,GAAGy0B,OAIdx+C,GAAIgoE,EAAQj+C,IAIZi+C,EAAQl+C,eAAgBvjB,SAAUyhE,EAAQl+C,KAAK61B,OACjDqoB,EAAQl+C,KAAK61B,MAAMp3C,QAAQ,SAAU2/D,GACnC,GAAID,GAAYF,EAAYG,EAC5BN,GAAUjoB,MAAMz3C,KAAK+/D,KAIzBV,EAASz9C,EAAMC,EAAI,SAAUD,EAAMC,GACjC,GAAIm+C,GAAUrC,EAAW+B,EAAW99C,EAAK9pB,GAAI+pB,EAAG/pB,GAAIgoE,EAAQlhE,KAAMkhE,EAAQrC,MACtEsC,EAAYF,EAAYG,EAC5BN,GAAUjoB,MAAMz3C,KAAK+/D,KAGnBD,EAAQj+C,aAAcxjB,SAAUyhE,EAAQj+C,GAAG41B,OAC7CqoB,EAAQj+C,GAAG41B,MAAMp3C,QAAQ,SAAU2/D,GACjC,GAAID,GAAYF,EAAYG,EAC5BN,GAAUjoB,MAAMz3C,KAAK+/D,OAW7B,MAJIze,GAAQmc,OACViC,EAAU/4D,QAAU26C,EAAQmc,MAGvBiC,EAnyBT,GAAI5B,IACFC,KAAO,EACPG,UAAY,EACZG,WAAY,EACZE,QAAU,GAIRH,GACF6B,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EAELC,MAAM,EACNC,MAAM,GAGJt4C,EAAM,GACNhoB,EAAQ,EACRjI,EAAI,GACJ8lE,EAAQ,GACRH,EAAYC,EAAUC,KAmCtBX,EAAoB,iBA2uBxB/lE,GAAQ2lE,SAAWA,EACnB3lE,EAAQkqD,WAAaA,GAKjB,SAASjqD,EAAQD,GAGrB,QAASqqD,GAAWgf,EAAW/5D,GAC7B,GAAI8wC,MACAnB,IACJ7+C,MAAKkP,SACH8wC,OACEQ,cAAc,GAEhB3B,OACEqqB,eAAe,EACfl9D,YAAY,IAIAnF,SAAZqI,IACFlP,KAAKkP,QAAQ2vC,MAAqB,cAAI3vC,EAAQg6D,eAAgB,EAC9DlpE,KAAKkP,QAAQ2vC,MAAkB,WAAO3vC,EAAQlD,YAAgB,EAC9DhM,KAAKkP,QAAQ8wC,MAAoB,aAAK9wC,EAAQsxC,cAAgB,EAKhE,KAAK,GAFD2oB,GAASF,EAAUjpB,MACnBopB,EAASH,EAAUpqB,MACdh5C,EAAI,EAAGA,EAAIsjE,EAAOnjE,OAAQH,IAAK,CACtC,GAAI6qD,MACA2Y,EAAQF,EAAOtjE,EACnB6qD,GAAS,GAAI2Y,EAAMhpE,GACnBqwD,EAAW,KAAI2Y,EAAMC,OACrB5Y,EAAS,GAAI2Y,EAAMr/D,OACnB0mD,EAAiB,WAAI2Y,EAAMphC,WAG3ByoB,EAAY,MAAI2Y,EAAM99D,MACtBmlD,EAAmB,aAAsB7pD,SAAlB6pD,EAAY,OAAkB,EAAQ1wD,KAAKkP,QAAQsxC,aAC1ER,EAAMz3C,KAAKmoD,GAGb,IAAK,GAAI7qD,GAAI,EAAGA,EAAIujE,EAAOpjE,OAAQH,IAAK,CACtC,GAAIwiD,MACAkhB,EAAQH,EAAOvjE,EACnBwiD,GAAS,GAAIkhB,EAAMlpE,GACnBgoD,EAAiB,WAAIkhB,EAAMthC,WAC3BogB,EAAQ,EAAIkhB,EAAM/2D,EAClB61C,EAAQ,EAAIkhB,EAAM92D,EAClB41C,EAAY,MAAIkhB,EAAMv2D,MAEpBq1C,EAAY,MADuB,GAAjCroD,KAAKkP,QAAQ2vC,MAAM7yC,WACLu9D,EAAMh+D,MAGU1E,SAAhB0iE,EAAMh+D,OAAuBsB,WAAW08D,EAAMh+D,MAAOuB,OAAOy8D,EAAMh+D,OAAS1E,OAE7FwhD,EAAa,OAAIkhB,EAAMx2D,KACvBs1C,EAAqB,eAAIroD,KAAKkP,QAAQ2vC,MAAMqqB,cAC5C7gB,EAAqB,eAAIroD,KAAKkP,QAAQ2vC,MAAMqqB,cAC5CrqB,EAAMt2C,KAAK8/C,GAGb,OAAQxJ,MAAMA,EAAOmB,MAAMA,GAG7BpgD,EAAQqqD,WAAaA,GAIjB,SAASpqD,EAAQD,EAASM,GAI9BL,EAAOD,QAA6B,mBAAXkI,SAA2BA,OAAe,QAAK5H,EAAoB,KAKxF,SAASL,EAAQD,EAASM,GAK5BL,EAAOD,QADa,mBAAXkI,QACQA,OAAe,QAAK5H,EAAoB,IAGxC,WACf,KAAM0D,OAAM,+DAOZ,SAAS/D,EAAQD,EAASM,GAqB9B,QAASg3B,MAnBT,GAAIlZ,GAAU9d,EAAoB,IAC9BwmC,EAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,GAK3B+C,GAJU/C,EAAoB,GACnBA,EAAoB,GACvBA,EAAoB,IAClBA,EAAoB,IACnBA,EAAoB,KAC/B0nD,EAAY1nD,EAAoB,IAChCyB,EAAWzB,EAAoB,IAC/BuC,EAAavC,EAAoB,GAYrC8d,GAAQkZ,EAAKhjB,WASbgjB,EAAKhjB,UAAUohB,QAAU,SAAU9a,GACjCxa,KAAK2wB,OAEL3wB,KAAK2wB,IAAIjxB,KAAuBsS,SAASM,cAAc,OACvDtS,KAAK2wB,IAAI9jB,WAAuBmF,SAASM,cAAc,OACvDtS,KAAK2wB,IAAIuZ,mBAAuBl4B,SAASM,cAAc,OACvDtS,KAAK2wB,IAAIuc,qBAAuBl7B,SAASM,cAAc,OACvDtS,KAAK2wB,IAAI+H,gBAAuB1mB,SAASM,cAAc,OACvDtS,KAAK2wB,IAAI64C,cAAuBx3D,SAASM,cAAc,OACvDtS,KAAK2wB,IAAI84C,eAAuBz3D,SAASM,cAAc,OACvDtS,KAAK2wB,IAAI5D,OAAuB/a,SAASM,cAAc,OACvDtS,KAAK2wB,IAAI9oB,KAAuBmK,SAASM,cAAc,OACvDtS,KAAK2wB,IAAItI,MAAuBrW,SAASM,cAAc,OACvDtS,KAAK2wB,IAAI1oB,IAAuB+J,SAASM,cAAc,OACvDtS,KAAK2wB,IAAIrM,OAAuBtS,SAASM,cAAc,OACvDtS,KAAK2wB,IAAI+4C,UAAuB13D,SAASM,cAAc,OACvDtS,KAAK2wB,IAAIg5C,aAAuB33D,SAASM,cAAc,OACvDtS,KAAK2wB,IAAIi5C,cAAuB53D,SAASM,cAAc,OACvDtS,KAAK2wB,IAAIk5C,iBAAuB73D,SAASM,cAAc,OACvDtS,KAAK2wB,IAAIm5C,eAAuB93D,SAASM,cAAc,OACvDtS,KAAK2wB,IAAIo5C,kBAAuB/3D,SAASM,cAAc,OAEvDtS,KAAK2wB,IAAIjxB,KAAK0I,UAA4B,oBAC1CpI,KAAK2wB,IAAI9jB,WAAWzE,UAAsB,sBAC1CpI,KAAK2wB,IAAIuZ,mBAAmB9hC,UAAc,+BAC1CpI,KAAK2wB,IAAIuc,qBAAqB9kC,UAAY,iCAC1CpI,KAAK2wB,IAAI+H,gBAAgBtwB,UAAiB,uBAC1CpI,KAAK2wB,IAAI64C,cAAcphE,UAAmB,gBAC1CpI,KAAK2wB,IAAI84C,eAAerhE,UAAkB,iBAC1CpI,KAAK2wB,IAAI1oB,IAAIG,UAA6B,eAC1CpI,KAAK2wB,IAAIrM,OAAOlc,UAA0B,kBAC1CpI,KAAK2wB,IAAI9oB,KAAKO,UAA4B,UAC1CpI,KAAK2wB,IAAI5D,OAAO3kB,UAA0B,UAC1CpI,KAAK2wB,IAAItI,MAAMjgB,UAA2B,UAC1CpI,KAAK2wB,IAAI+4C,UAAUthE,UAAuB,aAC1CpI,KAAK2wB,IAAIg5C,aAAavhE,UAAoB,gBAC1CpI,KAAK2wB,IAAIi5C,cAAcxhE,UAAmB,aAC1CpI,KAAK2wB,IAAIk5C,iBAAiBzhE,UAAgB,gBAC1CpI,KAAK2wB,IAAIm5C,eAAe1hE,UAAkB,aAC1CpI,KAAK2wB,IAAIo5C,kBAAkB3hE,UAAe,gBAE1CpI,KAAK2wB,IAAIjxB,KAAKwS,YAAYlS,KAAK2wB,IAAI9jB,YACnC7M,KAAK2wB,IAAIjxB,KAAKwS,YAAYlS,KAAK2wB,IAAIuZ,oBACnClqC,KAAK2wB,IAAIjxB,KAAKwS,YAAYlS,KAAK2wB,IAAIuc,sBACnCltC,KAAK2wB,IAAIjxB,KAAKwS,YAAYlS,KAAK2wB,IAAI+H,iBACnC14B,KAAK2wB,IAAIjxB,KAAKwS,YAAYlS,KAAK2wB,IAAI64C,eACnCxpE,KAAK2wB,IAAIjxB,KAAKwS,YAAYlS,KAAK2wB,IAAI84C,gBACnCzpE,KAAK2wB,IAAIjxB,KAAKwS,YAAYlS,KAAK2wB,IAAI1oB,KACnCjI,KAAK2wB,IAAIjxB,KAAKwS,YAAYlS,KAAK2wB,IAAIrM,QAEnCtkB,KAAK2wB,IAAI+H,gBAAgBxmB,YAAYlS,KAAK2wB,IAAI5D,QAC9C/sB,KAAK2wB,IAAI64C,cAAct3D,YAAYlS,KAAK2wB,IAAI9oB,MAC5C7H,KAAK2wB,IAAI84C,eAAev3D,YAAYlS,KAAK2wB,IAAItI,OAE7CroB,KAAK2wB,IAAI+H,gBAAgBxmB,YAAYlS,KAAK2wB,IAAI+4C,WAC9C1pE,KAAK2wB,IAAI+H,gBAAgBxmB,YAAYlS,KAAK2wB,IAAIg5C,cAC9C3pE,KAAK2wB,IAAI64C,cAAct3D,YAAYlS,KAAK2wB,IAAIi5C,eAC5C5pE,KAAK2wB,IAAI64C,cAAct3D,YAAYlS,KAAK2wB,IAAIk5C,kBAC5C7pE,KAAK2wB,IAAI84C,eAAev3D,YAAYlS,KAAK2wB,IAAIm5C,gBAC7C9pE,KAAK2wB,IAAI84C,eAAev3D,YAAYlS,KAAK2wB,IAAIo5C,mBAE7C/pE,KAAKsU,GAAG,cAAetU,KAAKi3B,QAAQvB,KAAK11B,OACzCA,KAAKsU,GAAG,QAAStU,KAAKqgC,SAAS3K,KAAK11B,OACpCA,KAAKsU,GAAG,QAAStU,KAAKsgC,SAAS5K,KAAK11B,OACpCA,KAAKsU,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OAC5CA,KAAKsU,GAAG,OAAQtU,KAAKigC,QAAQvK,KAAK11B,MAElC;GAAIkV,GAAKlV,IACTA,MAAKsU,GAAG,SAAU,SAAUu9C,GACtBA,GAAkC,GAApBA,EAAW19C,MAEtBe,EAAG80D,eACN90D,EAAG80D,aAAezvD,WAAW,WAC3BrF,EAAG80D,aAAe,KAClB90D,EAAG+hB,WACF,IAKL/hB,EAAG+hB,YAMPj3B,KAAK8D,OAAS4iC,EAAO1mC,KAAK2wB,IAAIjxB,MAC5BkK,gBAAgB,IAElB5J,KAAKiqE,YAEL,IAAIC,IACF,QAAS,QACT,MAAO,YAAa,OACpB,YAAa,OAAQ,UACrB,aAAc,iBAkChB,IAhCAA,EAAOthE,QAAQ,SAAUiB,GACvB,GAAIR,GAAW,WACb,GAAI6Q,IAAQrQ,GAAOkL,OAAOzO,MAAM4N,UAAUnI,MAAMxL,KAAKwF,UAAW,GAC5DmP,GAAGo3C,YACLp3C,EAAGuZ,KAAK3V,MAAM5D,EAAIgF,GAGtBhF,GAAGpR,OAAOwQ,GAAGzK,EAAOR,GACpB6L,EAAG+0D,UAAUpgE,GAASR,IAIxBrJ,KAAKqG,OACH3G,QACAmN,cACA6rB,mBACA8wC,iBACAC,kBACA18C,UACAllB,QACAwgB,SACApgB,OACAqc,UACAxX,UACAy/B,UAAW,EACX49B,aAAc,GAEhBnqE,KAAK8/B,SAEL9/B,KAAKoqE,YAAc,GAGd5vD,EAAW,KAAM,IAAI5W,OAAM,wBAChC4W,GAAUtI,YAAYlS,KAAK2wB,IAAIjxB,OA4BjCw3B,EAAKhjB,UAAUD,WAAa,SAAU/E,GACpC,GAAIA,EAAS,CAEX,GAAIP,IAAU,QAAS,SAAU,YAAa,YAAa,aAAc,QAAS,MAAO,cAAe,aAAc,iBAAkB,cAGxI,IAFAhO,EAAKyF,gBAAgBuI,EAAQ3O,KAAKkP,QAASA,GAEV,SAA7BlP,KAAKkP,QAAQimB,aACf,IAAKn1B,KAAKu2B,UAAW,CACnB,GAAIA,GAAYv2B,KAAKu2B,UAAY,GAAItzB,GAASjD,KAAKu1B,KACnDgB,GAAUtiB,WAAa,SAAU/E,GAC/B,GAAIwE,GAAWxE,EAAUvO,EAAKgF,UAAWuJ,KACzCwE,GAASyhB,YAAc,MACvBlyB,EAASiR,UAAUD,WAAW1T,KAAKg2B,EAAW7iB,IAEhD1T,KAAKgC,WAAWuG,KAAKguB,QAIvB,IAAIv2B,KAAKu2B,UAAW,CAClB,GAAI7tB,GAAQ1I,KAAKgC,WAAWgF,QAAQhH,KAAKu2B,UAC3B,MAAV7tB,GACF1I,KAAKgC,WAAW2G,OAAOD,EAAO,GAEhC1I,KAAKu2B,UAAUliB,UACfrU,KAAKu2B,UAAY,KAIjB,eAAiBv2B,MAAKkP,SACxBvN,EAASi4B,qBAAqB55B,KAAKu1B,KAAMv1B,KAAKkP,QAAQymB,aAGpD,cAAgBzmB,KACdA,EAAQ47C,WACL9qD,KAAK+qD,YACR/qD,KAAK+qD,UAAY,GAAInD,GAAU5nD,KAAK2wB,IAAIjxB,OAItCM,KAAK+qD,YACP/qD,KAAK+qD,UAAU12C,gBACRrU,MAAK+qD,YAMlB/qD,KAAKqqE,kBAIPrqE,KAAKgC,WAAW4G,QAAQ,SAAU0hE,GAChCA,EAAUr2D,WAAW/E,KAIvBlP,KAAKi3B,WAOPC,EAAKhjB,UAAUo4C,SAAW,WACxB,OAAQtsD,KAAK+qD,WAAa/qD,KAAK+qD,UAAU6L,QAM3C1/B,EAAKhjB,UAAUG,QAAU,WAEvBrU,KAAKwX,QAGLxX,KAAKyU,MAGLzU,KAAKuqE,kBAGDvqE,KAAK2wB,IAAIjxB,KAAKyK,YAChBnK,KAAK2wB,IAAIjxB,KAAKyK,WAAWyH,YAAY5R,KAAK2wB,IAAIjxB,MAEhDM,KAAK2wB,IAAM,KAGP3wB,KAAK+qD,YACP/qD,KAAK+qD,UAAU12C,gBACRrU,MAAK+qD,UAId,KAAK,GAAIlhD,KAAS7J,MAAKiqE,UACjBjqE,KAAKiqE,UAAU9jE,eAAe0D,UACzB7J,MAAKiqE,UAAUpgE,EAG1B7J,MAAKiqE,UAAY,KACjBjqE,KAAK8D,OAAS,KAGd9D,KAAKgC,WAAW4G,QAAQ,SAAU0hE,GAChCA,EAAUj2D,YAGZrU,KAAKu1B,KAAO,MASd2B,EAAKhjB,UAAU02B,cAAgB,SAAUhS,EAAMv4B,GAC7C,IAAKL,KAAKy2B,WACR,KAAM,IAAI7yB,OAAM,yDAGlB,IAAI4mE,GAAQnqE,GAAM,CAElBL,MAAKgC,WAAW4G,QAAQ,SAAUO,GAC5BA,YAAmB1G,IAAc0G,EAAQ+F,QAAQ7O,KAAOmqE,GAC1DrhE,EAAQyhC,cAAchS,MAU5B1B,EAAKhjB,UAAU22B,cAAgB,SAASxqC,GACtC,IAAKL,KAAKy2B,WACR,KAAM,IAAI7yB,OAAM,yDAGlB,IAAI4mE,GAAQnqE,GAAM,EACdo2B,EAAaz2B,KAAKy2B,WAAWoU,eAQjC,OANA7qC,MAAKgC,WAAW4G,QAAQ,SAAUO,GAC5BA,YAAmB1G,IAAc0G,EAAQ+F,QAAQ7O,KAAOmqE,IAC1D/zC,EAAattB,EAAQ0hC,mBAIlBpU,GAUTS,EAAKhjB,UAAUu2D,cAAgB,SAAU7xC,EAAMv4B,GAC7C,IAAKL,KAAKw2B,YACR,KAAM,IAAI5yB,OAAM,sCAGlB,IAAaiD,SAAT+xB,EACF,KAAM,IAAIh1B,OAAM,qDAGlB,IACI8mE,GAAQj0C,EAAYk0C,EADpBC,EAAKjqE,EAAKuG,QAAQ0xB,EAAM,QAAQvxB,SAyCpC,OApCKrH,MAAK6qE,cAAgB7qE,KAAK6qE,aAAalkE,cAAgBL,QAC1DtG,KAAK6qE,cAAgB,IAIZhkE,SAAPxG,GAEFqqE,EAAS1qE,KAAK6qE,aAAan2D,OAAO,SAAUvL,GAC1C,MAAOxI,GAAKoD,SAASoF,KAGvBwhE,EAAcD,EAAO1kE,OAAS,EAAIxB,KAAKJ,IAAI0U,MAAM,KAAM4xD,GAAU,EAAI,IAKrE1qE,KAAK6qE,aAAajiE,QAAQ,SAAUO,GAClC,GAAIA,IAAY9I,EACd,KAAM,IAAIuD,OAAM,mCAIpB+mE,EAActqE,GAGhBL,KAAK6qE,aAAatiE,KAAKoiE,GAEvBl0C,EAAa,GAAIh0B,GAAWzC,KAAKu1B,MAC/BiV,gBAAiB,EACjB5R,KAAOgyC,EACPvqE,GAAKsqE,IAGP3qE,KAAKgC,WAAWuG,KAAKkuB,GACrBz2B,KAAKyiB,SAEEkoD,GAQTzzC,EAAKhjB,UAAU42D,iBAAmB,SAAUzqE,GAE1C,GAAI6U,GAAKlV,IAETA,MAAKgC,WAAW4G,QAAQ,SAAU6pB,EAAK/pB,EAAO1G,GACxCywB,YAAehwB,IAAcgwB,EAAIvjB,QAAQ7O,KAAOA,GAE3B,IAAnBoyB,EAAIvjB,QAAQ7O,KACd6U,EAAG21D,aAAaliE,OAAOuM,EAAG21D,aAAa7jE,QAAQ3G,GAAK,GACpD2B,EAAW2G,OAAOD,EAAO,GACzB+pB,EAAIpe,cAWZ6iB,EAAKhjB,UAAUghC,gBAAkB,WAC/B,MAAOl1C,MAAK02B,SAAW12B,KAAK02B,QAAQwe,uBAetChe,EAAKhjB,UAAUsD,MAAQ,SAASshB,KAEzBA,GAAQA,EAAK72B,QAChBjC,KAAKg3B,SAAS,QAIX8B,GAAQA,EAAK/D,SAChB/0B,KAAK+2B,UAAU,QAIZ+B,GAAQA,EAAK5pB,WAChBlP,KAAKgC,WAAW4G,QAAQ,SAAU0hE,GAChCA,EAAUr2D,WAAWq2D,EAAUr1C,kBAGjCj1B,KAAKiU,WAAWjU,KAAKi1B,kBAazBiC,EAAKhjB,UAAUyjB,IAAM,SAASzoB,GAC5B,GAAIonB,GAAQt2B,KAAKw3B,eAGjB,IAAoB,OAAhBlB,EAAMjmB,OAAgC,OAAdimB,EAAMhmB,IAAlC,CAIA,GAAIonB,GAAWxoB,GAA+BrI,SAApBqI,EAAQwoB,QAAyBxoB,EAAQwoB,SAAU,CAC7E13B,MAAKs2B,MAAMnC,SAASmC,EAAMjmB,MAAOimB,EAAMhmB,IAAKonB,KAQ9CR,EAAKhjB,UAAUsjB,cAAgB,WAE7B,GAAID,GAAYv3B,KAAKg4B,eAGjB3nB,EAAQknB,EAAUpzB,IAClBmM,EAAMinB,EAAUnzB,GACpB,IAAa,MAATiM,GAAwB,MAAPC,EAAa,CAChC,GAAI8iB,GAAY9iB,EAAIjJ,UAAYgJ,EAAMhJ,SACtB,IAAZ+rB,IAEFA,EAAW,OAEb/iB,EAAQ,GAAIzL,MAAKyL,EAAMhJ,UAAuB,IAAX+rB,GACnC9iB,EAAM,GAAI1L,MAAK0L,EAAIjJ,UAAuB,IAAX+rB,GAGjC,OACE/iB,MAAOA,EACPC,IAAKA,IAwBT4mB,EAAKhjB,UAAUujB,UAAY,SAASpnB,EAAOC,EAAKpB,GAC9C,GAAIwoB,EACJ,IAAwB,GAApB3xB,UAAUC,OAAa,CACzB,GAAIswB,GAAQvwB,UAAU,EACtB2xB,GAA6B7wB,SAAlByvB,EAAMoB,QAAyBpB,EAAMoB,SAAU,EAC1D13B,KAAKs2B,MAAMnC,SAASmC,EAAMjmB,MAAOimB,EAAMhmB,IAAKonB,OAG5CA,GAAWxoB,GAA+BrI,SAApBqI,EAAQwoB,QAAyBxoB,EAAQwoB,SAAU,EACzE13B,KAAKs2B,MAAMnC,SAAS9jB,EAAOC,EAAKonB,IAcpCR,EAAKhjB,UAAU2U,OAAS,SAAS+P,EAAM1pB,GACrC,GAAIkkB,GAAWpzB,KAAKs2B,MAAMhmB,IAAMtQ,KAAKs2B,MAAMjmB,MACvC9B,EAAI5N,EAAKuG,QAAQ0xB,EAAM,QAAQvxB,UAE/BgJ,EAAQ9B,EAAI6kB,EAAW,EACvB9iB,EAAM/B,EAAI6kB,EAAW,EACrBsE,EAAWxoB,GAA+BrI,SAApBqI,EAAQwoB,QAAyBxoB,EAAQwoB,SAAU,CAE7E13B,MAAKs2B,MAAMnC,SAAS9jB,EAAOC,EAAKonB,IAOlCR,EAAKhjB,UAAU62D,UAAY,WACzB,GAAIz0C,GAAQt2B,KAAKs2B,MAAM+K,UACvB,QACEhxB,MAAO,GAAIzL,MAAK0xB,EAAMjmB,OACtBC,IAAK,GAAI1L,MAAK0xB,EAAMhmB,OAOxB4mB,EAAKhjB,UAAUuO,OAAS,WACtBziB,KAAKi3B,WAQPC,EAAKhjB,UAAU+iB,QAAU,WACvB,GAAI4S,IAAU,EACV36B,EAAUlP,KAAKkP,QACf7I,EAAQrG,KAAKqG,MACbsqB,EAAM3wB,KAAK2wB,GAEf,IAAKA,EAAL,CAEAhvB,EAASo4B,kBAAkB/5B,KAAKu1B,KAAMv1B,KAAKkP,QAAQymB,aAGxB,OAAvBzmB,EAAQimB,aACVx0B,EAAKwH,aAAawoB,EAAIjxB,KAAM,OAC5BiB,EAAK8H,gBAAgBkoB,EAAIjxB,KAAM,YAG/BiB,EAAK8H,gBAAgBkoB,EAAIjxB,KAAM,OAC/BiB,EAAKwH,aAAawoB,EAAIjxB,KAAM,WAI9BixB,EAAIjxB,KAAKgO,MAAM0nB,UAAYz0B,EAAK4J,OAAOK,OAAOsE,EAAQkmB,UAAW,IACjEzE,EAAIjxB,KAAKgO,MAAM2nB,UAAY10B,EAAK4J,OAAOK,OAAOsE,EAAQmmB,UAAW,IACjE1E,EAAIjxB,KAAKgO,MAAM4F,MAAQ3S,EAAK4J,OAAOK,OAAOsE,EAAQoE,MAAO,IAGzDjN,EAAMyG,OAAOjF,MAAU8oB,EAAI+H,gBAAgB1H,YAAcL,EAAI+H,gBAAgBlY,aAAe,EAC5Fna,EAAMyG,OAAOub,MAAShiB,EAAMyG,OAAOjF,KACnCxB,EAAMyG,OAAO7E,KAAU0oB,EAAI+H,gBAAgBxH,aAAeP,EAAI+H,gBAAgB7S,cAAgB,EAC9Fxf,EAAMyG,OAAOwX,OAASje,EAAMyG,OAAO7E,GACnC,IAAI+iE,GAAkBr6C,EAAIjxB,KAAKwxB,aAAeP,EAAIjxB,KAAKmmB,aACnDolD,EAAkBt6C,EAAIjxB,KAAKsxB,YAAcL,EAAIjxB,KAAK8gB,WAIb,KAArCmQ,EAAI+H,gBAAgB7S,eACtBxf,EAAMyG,OAAOjF,KAAOxB,EAAMyG,OAAO7E,IACjC5B,EAAMyG,OAAOub,MAAShiB,EAAMyG,OAAOjF,MAEP,IAA1B8oB,EAAIjxB,KAAKmmB,eACXolD,EAAkBD,GAKpB3kE,EAAM0mB,OAAOxZ,OAASod,EAAI5D,OAAOmE,aACjC7qB,EAAMwB,KAAK0L,OAAWod,EAAI9oB,KAAKqpB,aAC/B7qB,EAAMgiB,MAAM9U,OAAUod,EAAItI,MAAM6I,aAChC7qB,EAAM4B,IAAIsL,OAAYod,EAAI1oB,IAAI4d,eAAoBxf,EAAMyG,OAAO7E,IAC/D5B,EAAMie,OAAO/Q,OAASod,EAAIrM,OAAOuB,eAAiBxf,EAAMyG,OAAOwX,MAM/D,IAAI2M,GAAgBzsB,KAAKJ,IAAIiC,EAAMwB,KAAK0L,OAAQlN,EAAM0mB,OAAOxZ,OAAQlN,EAAMgiB,MAAM9U,QAC7E23D,EAAa7kE,EAAM4B,IAAIsL,OAAS0d,EAAgB5qB,EAAMie,OAAO/Q,OAC/Dy3D,EAAmB3kE,EAAMyG,OAAO7E,IAAM5B,EAAMyG,OAAOwX,MACrDqM,GAAIjxB,KAAKgO,MAAM6F,OAAS5S,EAAK4J,OAAOK,OAAOsE,EAAQqE,OAAQ23D,EAAa,MAGxE7kE,EAAM3G,KAAK6T,OAASod,EAAIjxB,KAAKwxB,aAC7B7qB,EAAMwG,WAAW0G,OAASlN,EAAM3G,KAAK6T,OAASy3D,CAC9C,IAAI3tC,GAAkBh3B,EAAM3G,KAAK6T,OAASlN,EAAM4B,IAAIsL,OAASlN,EAAMie,OAAO/Q,OACxEy3D,CACF3kE,GAAMqyB,gBAAgBnlB,OAAU8pB,EAChCh3B,EAAMmjE,cAAcj2D,OAAY8pB,EAChCh3B,EAAMojE,eAAel2D,OAAWlN,EAAMmjE,cAAcj2D,OAGpDlN,EAAM3G,KAAK4T,MAAQqd,EAAIjxB,KAAKsxB,YAC5B3qB,EAAMwG,WAAWyG,MAAQjN,EAAM3G,KAAK4T,MAAQ23D,EAC5C5kE,EAAMwB,KAAKyL,MAAQqd,EAAI64C,cAAchpD,cAAkBna,EAAMyG,OAAOjF,KACpExB,EAAMmjE,cAAcl2D,MAAQjN,EAAMwB,KAAKyL,MACvCjN,EAAMgiB,MAAM/U,MAAQqd,EAAI84C,eAAejpD,cAAgBna,EAAMyG,OAAOub,MACpEhiB,EAAMojE,eAAen2D,MAAQjN,EAAMgiB,MAAM/U,KACzC,IAAI63D,GAAc9kE,EAAM3G,KAAK4T,MAAQjN,EAAMwB,KAAKyL,MAAQjN,EAAMgiB,MAAM/U,MAAQ23D,CAC5E5kE,GAAM0mB,OAAOzZ,MAAiB63D,EAC9B9kE,EAAMqyB,gBAAgBplB,MAAQ63D,EAC9B9kE,EAAM4B,IAAIqL,MAAoB63D,EAC9B9kE,EAAMie,OAAOhR,MAAiB63D,EAG9Bx6C,EAAI9jB,WAAWa,MAAM6F,OAAmBlN,EAAMwG,WAAW0G,OAAS,KAClEod,EAAIuZ,mBAAmBx8B,MAAM6F,OAAWlN,EAAMwG,WAAW0G,OAAS,KAClEod,EAAIuc,qBAAqBx/B,MAAM6F,OAASlN,EAAMqyB,gBAAgBnlB,OAAS,KACvEod,EAAI+H,gBAAgBhrB,MAAM6F,OAAclN,EAAMqyB,gBAAgBnlB,OAAS,KACvEod,EAAI64C,cAAc97D,MAAM6F,OAAgBlN,EAAMmjE,cAAcj2D,OAAS,KACrEod,EAAI84C,eAAe/7D,MAAM6F,OAAelN,EAAMojE,eAAel2D,OAAS,KAEtEod,EAAI9jB,WAAWa,MAAM4F,MAAmBjN,EAAMwG,WAAWyG,MAAQ,KACjEqd,EAAIuZ,mBAAmBx8B,MAAM4F,MAAWjN,EAAMqyB,gBAAgBplB,MAAQ,KACtEqd,EAAIuc,qBAAqBx/B,MAAM4F,MAASjN,EAAMwG,WAAWyG,MAAQ,KACjEqd,EAAI+H,gBAAgBhrB,MAAM4F,MAAcjN,EAAM0mB,OAAOzZ,MAAQ,KAC7Dqd,EAAI1oB,IAAIyF,MAAM4F,MAA0BjN,EAAM4B,IAAIqL,MAAQ,KAC1Dqd,EAAIrM,OAAO5W,MAAM4F,MAAuBjN,EAAMie,OAAOhR,MAAQ,KAG7Dqd,EAAI9jB,WAAWa,MAAM7F,KAAiB,IACtC8oB,EAAI9jB,WAAWa,MAAMzF,IAAiB,IACtC0oB,EAAIuZ,mBAAmBx8B,MAAM7F,KAAUxB,EAAMwB,KAAKyL,MAAQjN,EAAMyG,OAAOjF,KAAQ,KAC/E8oB,EAAIuZ,mBAAmBx8B,MAAMzF,IAAS,IACtC0oB,EAAIuc,qBAAqBx/B,MAAM7F,KAAO,IACtC8oB,EAAIuc,qBAAqBx/B,MAAMzF,IAAO5B,EAAM4B,IAAIsL,OAAS,KACzDod,EAAI+H,gBAAgBhrB,MAAM7F,KAAYxB,EAAMwB,KAAKyL,MAAQ,KACzDqd,EAAI+H,gBAAgBhrB,MAAMzF,IAAY5B,EAAM4B,IAAIsL,OAAS,KACzDod,EAAI64C,cAAc97D,MAAM7F,KAAc,IACtC8oB,EAAI64C,cAAc97D,MAAMzF,IAAc5B,EAAM4B,IAAIsL,OAAS,KACzDod,EAAI84C,eAAe/7D,MAAM7F,KAAcxB,EAAMwB,KAAKyL,MAAQjN,EAAM0mB,OAAOzZ,MAAS,KAChFqd,EAAI84C,eAAe/7D,MAAMzF,IAAa5B,EAAM4B,IAAIsL,OAAS,KACzDod,EAAI1oB,IAAIyF,MAAM7F,KAAwBxB,EAAMwB,KAAKyL,MAAQ,KACzDqd,EAAI1oB,IAAIyF,MAAMzF,IAAwB,IACtC0oB,EAAIrM,OAAO5W,MAAM7F,KAAqBxB,EAAMwB,KAAKyL,MAAQ,KACzDqd,EAAIrM,OAAO5W,MAAMzF,IAAsB5B,EAAM4B,IAAIsL,OAASlN,EAAMqyB,gBAAgBnlB,OAAU,KAI1FvT,KAAKorE,kBAGL,IAAI1gD,GAAS1qB,KAAKqG,MAAMkmC,SACG,WAAvBr9B,EAAQimB,cACVzK,GAAUlmB,KAAKJ,IAAIpE,KAAKqG,MAAMqyB,gBAAgBnlB,OAASvT,KAAKqG,MAAM0mB,OAAOxZ,OACvEvT,KAAKqG,MAAMyG,OAAO7E,IAAMjI,KAAKqG,MAAMyG,OAAOwX,OAAQ,IAEtDqM,EAAI5D,OAAOrf,MAAM7F,KAAO,IACxB8oB,EAAI5D,OAAOrf,MAAMzF,IAAOyiB,EAAS,KACjCiG,EAAI9oB,KAAK6F,MAAM7F,KAAS,IACxB8oB,EAAI9oB,KAAK6F,MAAMzF,IAASyiB,EAAS,KACjCiG,EAAItI,MAAM3a,MAAM7F,KAAQ,IACxB8oB,EAAItI,MAAM3a,MAAMzF,IAAQyiB,EAAS,IAGjC,IAAI2gD,GAAwC,GAAxBrrE,KAAKqG,MAAMkmC,UAAiB,SAAW,GACvD++B,EAAmBtrE,KAAKqG,MAAMkmC,WAAavsC,KAAKqG,MAAM8jE,aAAe,SAAW,EAYpF,IAXAx5C,EAAI+4C,UAAUh8D,MAAM2rB,WAAsBgyC,EAC1C16C,EAAIg5C,aAAaj8D,MAAM2rB,WAAmBiyC,EAC1C36C,EAAIi5C,cAAcl8D,MAAM2rB,WAAkBgyC,EAC1C16C,EAAIk5C,iBAAiBn8D,MAAM2rB,WAAeiyC,EAC1C36C,EAAIm5C,eAAep8D,MAAM2rB,WAAiBgyC,EAC1C16C,EAAIo5C,kBAAkBr8D,MAAM2rB,WAAciyC,EAG1CtrE,KAAKgC,WAAW4G,QAAQ,SAAU0hE,GAChCzgC,EAAUygC,EAAU7nD,UAAYonB,IAE9BA,EAAS,CAEX,GAAI0hC,GAAc,CACdvrE,MAAKoqE,YAAcmB,GACrBvrE,KAAKoqE,cACLpqE,KAAKi3B,WAGL4D,QAAQtG,IAAI,qCAEdv0B,KAAKoqE,YAAc,EAGrBpqE,KAAKyuB,KAAK,oBAIZyI,EAAKhjB,UAAUs3D,QAAU,WACvB,KAAM,IAAI5nE,OAAM,wDAUlBszB,EAAKhjB,UAAUo2B,eAAiB,SAAS1R,GACvC,IAAK54B,KAAKw2B,YACR,KAAM,IAAI5yB,OAAM,sCAGlB5D,MAAKw2B,YAAY8T,eAAe1R,IAQlC1B,EAAKhjB,UAAUq2B,eAAiB,WAC9B,IAAKvqC,KAAKw2B,YACR,KAAM,IAAI5yB,OAAM,sCAGlB,OAAO5D,MAAKw2B,YAAY+T,kBAU1BrT,EAAKhjB,UAAUiiB,QAAU,SAAS3jB,GAChC,MAAO7Q,GAASu0B,OAAOl2B,KAAMwS,EAAGxS,KAAKqG,MAAM0mB,OAAOzZ,QAUpD4jB,EAAKhjB,UAAUmiB,cAAgB,SAAS7jB,GACtC,MAAO7Q,GAASu0B,OAAOl2B,KAAMwS,EAAGxS,KAAKqG,MAAM3G,KAAK4T,QAalD4jB,EAAKhjB,UAAU6hB,UAAY,SAAS6C,GAClC,MAAOj3B,GAASm0B,SAAS91B,KAAM44B,EAAM54B,KAAKqG,MAAM0mB,OAAOzZ,QAczD4jB,EAAKhjB,UAAU+hB,gBAAkB,SAAS2C,GACxC,MAAOj3B,GAASm0B,SAAS91B,KAAM44B,EAAM54B,KAAKqG,MAAM3G,KAAK4T,QAUvD4jB,EAAKhjB,UAAUm2D,gBAAkB,WACA,GAA3BrqE,KAAKkP,QAAQgmB,WACfl1B,KAAKyrE,mBAGLzrE,KAAKuqE,mBASTrzC,EAAKhjB,UAAUu3D,iBAAmB,WAChC,GAAIv2D,GAAKlV,IAETA,MAAKuqE,kBAELvqE,KAAK0rE,UAAY,WACf,MAA6B,IAAzBx2D,EAAGhG,QAAQgmB,eAEbhgB,GAAGq1D,uBAIDr1D,EAAGyb,IAAIjxB,OAKJwV,EAAGyb,IAAIjxB,KAAKsxB,aAAe9b,EAAG7O,MAAMovC,WACtCvgC,EAAGyb,IAAIjxB,KAAKwxB,cAAgBhc,EAAG7O,MAAMslE,cACtCz2D,EAAG7O,MAAMovC,UAAYvgC,EAAGyb,IAAIjxB,KAAKsxB,YACjC9b,EAAG7O,MAAMslE,WAAaz2D,EAAGyb,IAAIjxB,KAAKwxB,aAElChc,EAAGuZ,KAAK,aAMd9tB,EAAKuI,iBAAiBpB,OAAQ,SAAU9H,KAAK0rE,WAE7C1rE,KAAK4rE,WAAaC,YAAY7rE,KAAK0rE,UAAW,MAOhDx0C,EAAKhjB,UAAUq2D,gBAAkB,WAC3BvqE,KAAK4rE,aACPv4C,cAAcrzB,KAAK4rE,YACnB5rE,KAAK4rE,WAAa/kE,QAIpBlG,EAAK+I,oBAAoB5B,OAAQ,SAAU9H,KAAK0rE,WAChD1rE,KAAK0rE,UAAY,MAQnBx0C,EAAKhjB,UAAUmsB,SAAW,WACxBrgC,KAAK8/B,MAAM0B,eAAgB,GAQ7BtK,EAAKhjB,UAAUosB,SAAW,WACxBtgC,KAAK8/B,MAAM0B,eAAgB,GAQ7BtK,EAAKhjB,UAAU8rB,aAAe,WAC5BhgC,KAAK8/B,MAAMgsC,iBAAmB9rE,KAAKqG,MAAMkmC,WAQ3CrV,EAAKhjB,UAAU+rB,QAAU,SAAUp2B,GAGjC,GAAK7J,KAAK8/B,MAAM0B,cAAhB,CAEA,GAAIlS,GAAQzlB,EAAM2uB,QAAQkJ,OAEtBqqC,EAAe/rE,KAAKgsE,gBACpBC,EAAejsE,KAAKksE,cAAclsE,KAAK8/B,MAAMgsC,iBAAmBx8C,EAGhE28C,IAAgBF,IAClB/rE,KAAKi3B,UACLj3B,KAAKyuB,KAAK,mBAUdyI,EAAKhjB,UAAUg4D,cAAgB,SAAU3/B,GAGvC,MAFAvsC,MAAKqG,MAAMkmC,UAAYA,EACvBvsC,KAAKorE,mBACEprE,KAAKqG,MAAMkmC,WAQpBrV,EAAKhjB,UAAUk3D,iBAAmB,WAEhC,GAAIjB,GAAe3lE,KAAKL,IAAInE,KAAKqG,MAAMqyB,gBAAgBnlB,OAASvT,KAAKqG,MAAM0mB,OAAOxZ,OAAQ,EAc1F,OAbI42D,IAAgBnqE,KAAKqG,MAAM8jE,eAGG,UAA5BnqE,KAAKkP,QAAQimB,cACfn1B,KAAKqG,MAAMkmC,WAAc49B,EAAenqE,KAAKqG,MAAM8jE,cAErDnqE,KAAKqG,MAAM8jE,aAAeA,GAIxBnqE,KAAKqG,MAAMkmC,UAAY,IAAGvsC,KAAKqG,MAAMkmC,UAAY,GACjDvsC,KAAKqG,MAAMkmC,UAAY49B,IAAcnqE,KAAKqG,MAAMkmC,UAAY49B,GAEzDnqE,KAAKqG,MAAMkmC,WAQpBrV,EAAKhjB,UAAU83D,cAAgB,WAC7B,MAAOhsE,MAAKqG,MAAMkmC,WAGpB1sC,EAAOD,QAAUs3B,GAKb,SAASr3B,EAAQD,EAASM,GAE9B,GAAIwmC,GAASxmC,EAAoB,GAOjCN,GAAQkiC,YAAc,SAAS34B,EAASU,GACtC,GAAIsiE,GAAY,KAMZhqC,EAAUuE,EAAO78B,MAAMuiE,aAAaviE,EAAOsiE,GAC3C3zC,EAAUkO,EAAO78B,MAAMwiE,iBAAiBrsE,KAAMmsE,EAAWhqC,EAASt4B,EAWtE,OAPI7E,OAAMwzB,EAAQzL,OAAOwL,SACvBC,EAAQzL,OAAOwL,MAAQ1uB,EAAM0uB,OAE3BvzB,MAAMwzB,EAAQzL,OAAO0L,SACvBD,EAAQzL,OAAO0L,MAAQ5uB,EAAM4uB,OAGxBD,IAML,SAAS34B,EAAQD,GAGrBA,EAAY,IACVm8B,QAAS,UACTnD,KAAM,QAERh5B,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,GAG/BA,EAAY,IACV0sE,OAAQ,aACR1zC,KAAM,QAERh5B,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,IAK3B,SAASC,EAAQD,EAASM,GAQ9B,QAASyvC,GAAK1W,EAAS/pB,GACrBlP,KAAKi5B,QAAUA,EACfj5B,KAAKkP,QAAUA,EALjB,GAAItO,GAAUV,EAAoB,GAC9B2vC,EAAS3vC,EAAoB,GAOjCyvC,GAAKz7B,UAAU28B,UAAY,SAASC,GAGlC,IAAK,GAFDj0B,GAAOi0B,EAAU,GAAGr+B,EACpBsK,EAAO+zB,EAAU,GAAGr+B,EACfga,EAAI,EAAGA,EAAIqkB,EAAU9qC,OAAQymB,IACpC5P,EAAOA,EAAOi0B,EAAUrkB,GAAGha,EAAIq+B,EAAUrkB,GAAGha,EAAIoK,EAChDE,EAAOA,EAAO+zB,EAAUrkB,GAAGha,EAAIq+B,EAAUrkB,GAAGha,EAAIsK,CAElD,QAAQ5Y,IAAK0Y,EAAMzY,IAAK2Y,EAAM6zB,iBAAkB5wC,KAAKkP,QAAQ0hC,mBAU/DjB,EAAKz7B,UAAU68B,KAAO,SAAU9Y,EAASvlB,EAAOs+B,GAC9C,GAAe,MAAX/Y,GACEA,EAAQjyB,OAAS,EAAG,CACtB,GAAImqC,GAAM/iC,EACNgvC,EAAYn4C,OAAO+sC,EAAUlG,IAAIp9B,MAAM6F,OAAOtI,QAAQ,KAAK,IAgB/D,IAfAklC,EAAOvvC,EAAQiR,cAAc,OAAQm/B,EAAU7E,YAAa6E,EAAUlG,KACtEqF,EAAKr9B,eAAe,KAAM,QAASJ,EAAMtK,WACtBvB,SAAhB6L,EAAMhF,OACPyiC,EAAKr9B,eAAe,KAAM,QAASJ,EAAMhF,OAKzCN,EADsC,GAApCsF,EAAMxD,QAAQ6gC,WAAW5gC,QACvBwgC,EAAK48B,YAAYt0C,EAASvlB,GAG1Bi9B,EAAK68B,QAAQv0C,GAIiB,GAAhCvlB,EAAMxD,QAAQqhC,OAAOphC,QAAiB,CACxC,GACIs9D,GADAr8B,EAAWxvC,EAAQiR,cAAc,OAAQm/B,EAAU7E,YAAa6E,EAAUlG,IAG5E2hC,GADsC,OAApC/5D,EAAMxD,QAAQqhC,OAAOpb,YACf,IAAM8C,EAAQ,GAAGzlB,EAAI,MAAgBpF,EAAI,IAAM6qB,EAAQA,EAAQjyB,OAAS,GAAGwM,EAAI,KAG/E,IAAMylB,EAAQ,GAAGzlB,EAAI,IAAM4pC,EAAY,IAAMhvC,EAAI,IAAM6qB,EAAQA,EAAQjyB,OAAS,GAAGwM,EAAI,IAAM4pC,EAEvGhM,EAASt9B,eAAe,KAAM,QAASJ,EAAMtK,UAAY,SACvBvB,SAA/B6L,EAAMxD,QAAQqhC,OAAO7iC,OACtB0iC,EAASt9B,eAAe,KAAM,QAASJ,EAAMxD,QAAQqhC,OAAO7iC,OAE9D0iC,EAASt9B,eAAe,KAAM,IAAK25D,GAGrCt8B,EAAKr9B,eAAe,KAAM,IAAK,IAAM1F,GAGG,GAApCsF,EAAMxD,QAAQ2D,WAAW1D,SAC3B0gC,EAAOkB,KAAK9Y,EAASvlB,EAAOs+B,KAepCrB,EAAK+8B,mBAAqB,SAASj5D,GAMjC,IAAK,GAJDk5D,GAAIC,EAAIC,EAAIC,EAAIC,EAAKC,EACrB5/D,EAAI5I,KAAK+pB,MAAM9a,EAAK,GAAGjB,GAAK,IAAMhO,KAAK+pB,MAAM9a,EAAK,GAAGhB,GAAK,IAC1Dw6D,EAAgB,EAAE,EAClBjnE,EAASyN,EAAKzN,OACTH,EAAI,EAAOG,EAAS,EAAbH,EAAgBA,IAE9B8mE,EAAW,GAAL9mE,EAAU4N,EAAK,GAAKA,EAAK5N,EAAE,GACjC+mE,EAAKn5D,EAAK5N,GACVgnE,EAAKp5D,EAAK5N,EAAE,GACZinE,EAAc9mE,EAARH,EAAI,EAAc4N,EAAK5N,EAAE,GAAKgnE,EAUpCE,GAAQv6D,IAAMm6D,EAAGn6D,EAAI,EAAEo6D,EAAGp6D,EAAIq6D,EAAGr6D,GAAIy6D,EAAgBx6D,IAAMk6D,EAAGl6D,EAAI,EAAEm6D,EAAGn6D,EAAIo6D,EAAGp6D,GAAIw6D,GAClFD,GAAQx6D,GAAMo6D,EAAGp6D,EAAI,EAAEq6D,EAAGr6D,EAAIs6D,EAAGt6D,GAAIy6D,EAAgBx6D,GAAMm6D,EAAGn6D,EAAI,EAAEo6D,EAAGp6D,EAAIq6D,EAAGr6D,GAAIw6D,GAGlF7/D,GAAK,IACL2/D,EAAIv6D,EAAI,IACRu6D,EAAIt6D,EAAI,IACRu6D,EAAIx6D,EAAI,IACRw6D,EAAIv6D,EAAI,IACRo6D,EAAGr6D,EAAI,IACPq6D,EAAGp6D,EAAI,GAGT,OAAOrF,IAcTuiC,EAAK48B,YAAc,SAAS94D,EAAMf,GAChC,GAAIu9B,GAAQv9B,EAAMxD,QAAQ6gC,WAAWE,KACrC,IAAa,GAATA,GAAwBppC,SAAVopC,EAChB,MAAOjwC,MAAK0sE,mBAAmBj5D,EAO/B,KAAK,GAJDk5D,GAAIC,EAAIC,EAAIC,EAAIC,EAAKC,EAAKE,EAAGC,EAAGC,EAAIC,EAAG/hD,EAAGgiD,EAAGC,EAC7CC,EAAQC,EAAQC,EAASC,EAASC,EAASC,EAC3CzgE,EAAI5I,KAAK+pB,MAAM9a,EAAK,GAAGjB,GAAK,IAAMhO,KAAK+pB,MAAM9a,EAAK,GAAGhB,GAAK,IAC1DzM,EAASyN,EAAKzN,OACTH,EAAI,EAAOG,EAAS,EAAbH,EAAgBA,IAE9B8mE,EAAW,GAAL9mE,EAAU4N,EAAK,GAAKA,EAAK5N,EAAE,GACjC+mE,EAAKn5D,EAAK5N,GACVgnE,EAAKp5D,EAAK5N,EAAE,GACZinE,EAAc9mE,EAARH,EAAI,EAAc4N,EAAK5N,EAAE,GAAKgnE,EAEpCK,EAAK1oE,KAAKgsB,KAAKhsB,KAAKkwB,IAAIi4C,EAAGn6D,EAAIo6D,EAAGp6D,EAAE,GAAKhO,KAAKkwB,IAAIi4C,EAAGl6D,EAAIm6D,EAAGn6D,EAAE,IAC9D06D,EAAK3oE,KAAKgsB,KAAKhsB,KAAKkwB,IAAIk4C,EAAGp6D,EAAIq6D,EAAGr6D,EAAE,GAAKhO,KAAKkwB,IAAIk4C,EAAGn6D,EAAIo6D,EAAGp6D,EAAE,IAC9D26D,EAAK5oE,KAAKgsB,KAAKhsB,KAAKkwB,IAAIm4C,EAAGr6D,EAAIs6D,EAAGt6D,EAAE,GAAKhO,KAAKkwB,IAAIm4C,EAAGp6D,EAAIq6D,EAAGr6D,EAAE,IAY9D+6D,EAAUhpE,KAAKkwB,IAAI04C,EAAKn9B,GACxBy9B,EAAUlpE,KAAKkwB,IAAI04C,EAAG,EAAEn9B,GACxBw9B,EAAUjpE,KAAKkwB,IAAIy4C,EAAKl9B,GACxB09B,EAAUnpE,KAAKkwB,IAAIy4C,EAAG,EAAEl9B,GACxB49B,EAAUrpE,KAAKkwB,IAAIw4C,EAAKj9B,GACxB29B,EAAUppE,KAAKkwB,IAAIw4C,EAAG,EAAEj9B,GAExBo9B,EAAI,EAAEO,EAAU,EAAEC,EAASJ,EAASE,EACpCriD,EAAI,EAAEoiD,EAAU,EAAEF,EAASC,EAASE,EACpCL,EAAI,EAAEO,GAAUA,EAASJ,GACrBH,EAAI,IAAIA,EAAI,EAAIA,GACpBC,EAAI,EAAEC,GAAUA,EAASC,GACrBF,EAAI,IAAIA,EAAI,EAAIA,GAEpBR,GAAQv6D,IAAMm7D,EAAUhB,EAAGn6D,EAAI66D,EAAET,EAAGp6D,EAAIo7D,EAAUf,EAAGr6D,GAAK86D,EACxD76D,IAAMk7D,EAAUhB,EAAGl6D,EAAI46D,EAAET,EAAGn6D,EAAIm7D,EAAUf,EAAGp6D,GAAK66D,GAEpDN,GAAQx6D,GAAMk7D,EAAUd,EAAGp6D,EAAI8Y,EAAEuhD,EAAGr6D,EAAIm7D,EAAUb,EAAGt6D,GAAK+6D,EACxD96D,GAAMi7D,EAAUd,EAAGn6D,EAAI6Y,EAAEuhD,EAAGp6D,EAAIk7D,EAAUb,EAAGr6D,GAAK86D,GAEvC,GAATR,EAAIv6D,GAAmB,GAATu6D,EAAIt6D,IAASs6D,EAAMH,GACxB,GAATI,EAAIx6D,GAAmB,GAATw6D,EAAIv6D,IAASu6D,EAAMH,GACrCz/D,GAAK,IACL2/D,EAAIv6D,EAAI,IACRu6D,EAAIt6D,EAAI,IACRu6D,EAAIx6D,EAAI,IACRw6D,EAAIv6D,EAAI,IACRo6D,EAAGr6D,EAAI,IACPq6D,EAAGp6D,EAAI,GAGT,OAAOrF,IAUXuiC,EAAK68B,QAAU,SAAS/4D,GAGtB,IAAK,GADDrG,GAAI,GACCvH,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IAE7BuH,GADO,GAALvH,EACG4N,EAAK5N,GAAG2M,EAAI,IAAMiB,EAAK5N,GAAG4M,EAG1B,IAAMgB,EAAK5N,GAAG2M,EAAI,IAAMiB,EAAK5N,GAAG4M,CAGzC,OAAOrF,IAGTvN,EAAOD,QAAU+vC,GAKb,SAAS9vC,EAAQD,EAASM,GAQ9B,QAAS4tE,GAAS70C,EAAS/pB,GACzBlP,KAAKi5B,QAAUA,EACfj5B,KAAKkP,QAAUA,EALjB,CAAA,GAAItO,GAAUV,EAAoB,EACrBA,GAAoB,IAOjC4tE,EAAS55D,UAAU28B,UAAY,SAASC,GACtC,GAA2C,SAAvC9wC,KAAKkP,QAAQypC,SAASC,cAA0B,CAGlD,IAAK,GAFD/7B,GAAOi0B,EAAU,GAAGr+B,EACpBsK,EAAO+zB,EAAU,GAAGr+B,EACfga,EAAI,EAAGA,EAAIqkB,EAAU9qC,OAAQymB,IACpC5P,EAAOA,EAAOi0B,EAAUrkB,GAAGha,EAAIq+B,EAAUrkB,GAAGha,EAAIoK,EAChDE,EAAOA,EAAO+zB,EAAUrkB,GAAGha,EAAIq+B,EAAUrkB,GAAGha,EAAIsK,CAElD,QAAQ5Y,IAAK0Y,EAAMzY,IAAK2Y,EAAM6zB,iBAAkB5wC,KAAKkP,QAAQ0hC,kBAI7D,IAAK,GADDm9B,MACKthD,EAAI,EAAGA,EAAIqkB,EAAU9qC,OAAQymB,IACpCshD,EAAgBxlE,MACdiK,EAAGs+B,EAAUrkB,GAAGja,EAChBC,EAAGq+B,EAAUrkB,GAAGha,EAChBwmB,QAASj5B,KAAKi5B,SAGlB,OAAO80C,IAYXD,EAAS/8B,KAAO,SAAUsD,EAAUwF,EAAoB7I,GACtD,GAEIg9B,GACA/kE,EAAKglE,EACLv7D,EACA7M,EAAE4mB,EALFyhD,KACAC,KAKAC,EAAY,CAGhB,KAAKvoE,EAAI,EAAGA,EAAIwuC,EAASruC,OAAQH,IAE/B,GADA6M,EAAQs+B,EAAUjc,OAAOsf,EAASxuC,IACP,OAAvB6M,EAAMxD,QAAQxB,OACK,GAAjBgF,EAAM+W,UAAyE5iB,SAArDmqC,EAAU9hC,QAAQ6lB,OAAOsE,WAAWgb,EAASxuC,KAAyE,GAApDmrC,EAAU9hC,QAAQ6lB,OAAOsE,WAAWgb,EAASxuC,KAC3I,IAAK4mB,EAAI,EAAGA,EAAIotB,EAAmBxF,EAASxuC,IAAIG,OAAQymB,IACtDyhD,EAAa3lE,MACXiK,EAAGqnC,EAAmBxF,EAASxuC,IAAI4mB,GAAGja,EACtCC,EAAGonC,EAAmBxF,EAASxuC,IAAI4mB,GAAGha,EACtCwmB,QAASob,EAASxuC,KAEpBuoE,GAAa,CAMrB,IAAiB,GAAbA,EAeJ,IAZAF,EAAaj3D,KAAK,SAAUrR,EAAGa,GAC7B,MAAIb,GAAE4M,GAAK/L,EAAE+L,EACJ5M,EAAEqzB,QAAUxyB,EAAEwyB,QAEdrzB,EAAE4M,EAAI/L,EAAE+L,IAKnBs7D,EAASO,sBAAsBF,EAAeD,GAGzCroE,EAAI,EAAGA,EAAIqoE,EAAaloE,OAAQH,IAAK,CACxC6M,EAAQs+B,EAAUjc,OAAOm5C,EAAaroE,GAAGozB,QACzC,IAAI4S,GAAW,GAAMn5B,EAAMxD,QAAQypC,SAASrlC,KAE5CrK,GAAMilE,EAAaroE,GAAG2M,CACtB,IAAI87D,GAAe,CACnB,IAA2BznE,SAAvBsnE,EAAcllE,GACZpD,EAAE,EAAIqoE,EAAaloE,SAASgoE,EAAexpE,KAAKknB,IAAIwiD,EAAaroE,EAAE,GAAG2M,EAAIvJ,IAC1EpD,EAAI,IAAwBmoE,EAAexpE,KAAKL,IAAI6pE,EAAaxpE,KAAKknB,IAAIwiD,EAAaroE,EAAE,GAAG2M,EAAIvJ,KACpGglE,EAAWH,EAASS,iBAAiBP,EAAct7D,EAAOm5B,OAEvD,CACH,GAAI2iC,GAAU3oE,GAAKsoE,EAAcllE,GAAKwlE,OAASN,EAAcllE,GAAKylE,UAC9DC,EAAU9oE,GAAKsoE,EAAcllE,GAAKylE,SAAW,EAC7CF,GAAUN,EAAaloE,SAASgoE,EAAexpE,KAAKknB,IAAIwiD,EAAaM,GAASh8D,EAAIvJ,IAClF0lE,EAAU,IAAsBX,EAAexpE,KAAKL,IAAI6pE,EAAaxpE,KAAKknB,IAAIwiD,EAAaS,GAASn8D,EAAIvJ,KAC5GglE,EAAWH,EAASS,iBAAiBP,EAAct7D,EAAOm5B,GAC1DsiC,EAAcllE,GAAKylE,UAAY,EAEa,SAAxCh8D,EAAMxD,QAAQypC,SAASC,eACzB01B,EAAeH,EAAcllE,GAAK2lE,YAClCT,EAAcllE,GAAK2lE,aAAel8D,EAAMg9B,aAAew+B,EAAaroE,GAAG4M,GAExB,cAAxCC,EAAMxD,QAAQypC,SAASC,gBAC9Bq1B,EAAS36D,MAAQ26D,EAAS36D,MAAQ66D,EAAcllE,GAAKwlE,OACrDR,EAASvjD,QAAWyjD,EAAcllE,GAAa,SAAIglE,EAAS36D,MAAS,GAAI26D,EAAS36D,OAAS66D,EAAcllE,GAAKwlE,OAAO,GACjF,QAAhC/7D,EAAMxD,QAAQypC,SAAS9P,MAAwBolC,EAASvjD,QAAU,GAAIujD,EAAS36D,MAC1C,SAAhCZ,EAAMxD,QAAQypC,SAAS9P,QAAmBolC,EAASvjD,QAAU,GAAIujD,EAAS36D,QAGvF1S,EAAQyS,QAAQ66D,EAAaroE,GAAG2M,EAAIy7D,EAASvjD,OAAQwjD,EAAaroE,GAAG4M,EAAI67D,EAAcL,EAAS36D,MAAOZ,EAAMg9B,aAAew+B,EAAaroE,GAAG4M,EAAGC,EAAMtK,UAAY,OAAQ4oC,EAAU7E,YAAa6E,EAAUlG,KAElK,GAApCp4B,EAAMxD,QAAQ2D,WAAW1D,SAC3BvO,EAAQ2R,UAAU27D,EAAaroE,GAAG2M,EAAIy7D,EAASvjD,OAAQwjD,EAAaroE,GAAG4M,EAAGC,EAAOs+B,EAAU7E,YAAa6E,EAAUlG,OAYxHgjC,EAASO,sBAAwB,SAAUF,EAAeD,GAGxD,IAAK,GADDF,GACKnoE,EAAI,EAAGA,EAAIqoE,EAAaloE,OAAQH,IACnCA,EAAI,EAAIqoE,EAAaloE,SACvBgoE,EAAexpE,KAAKknB,IAAIwiD,EAAaroE,EAAI,GAAG2M,EAAI07D,EAAaroE,GAAG2M,IAE9D3M,EAAI,IACNmoE,EAAexpE,KAAKL,IAAI6pE,EAAcxpE,KAAKknB,IAAIwiD,EAAaroE,EAAI,GAAG2M,EAAI07D,EAAaroE,GAAG2M,KAErE,GAAhBw7D,IACuCnnE,SAArCsnE,EAAcD,EAAaroE,GAAG2M,KAChC27D,EAAcD,EAAaroE,GAAG2M,IAAMi8D,OAAQ,EAAGC,SAAU,EAAGE,YAAa,IAE3ET,EAAcD,EAAaroE,GAAG2M,GAAGi8D,QAAU,IAejDX,EAASS,iBAAmB,SAAUP,EAAct7D,EAAOm5B,GACzD,GAAIv4B,GAAOoX,CAwBX,OAvBIsjD,GAAet7D,EAAMxD,QAAQypC,SAASrlC,OAAS06D,EAAe,GAChE16D,EAAuBu4B,EAAfmiC,EAA0BniC,EAAWmiC,EAE7CtjD,EAAS,EAC2B,QAAhChY,EAAMxD,QAAQypC,SAAS9P,MACzBne,GAAU,GAAMsjD,EAEuB,SAAhCt7D,EAAMxD,QAAQypC,SAAS9P,QAC9Bne,GAAU,GAAMsjD,KAKlB16D,EAAQZ,EAAMxD,QAAQypC,SAASrlC,MAC/BoX,EAAS,EAC2B,QAAhChY,EAAMxD,QAAQypC,SAAS9P,MACzBne,GAAU,GAAMhY,EAAMxD,QAAQypC,SAASrlC,MAEA,SAAhCZ,EAAMxD,QAAQypC,SAAS9P,QAC9Bne,GAAU,GAAMhY,EAAMxD,QAAQypC,SAASrlC,SAInCA,MAAOA,EAAOoX,OAAQA,IAGhCojD,EAAS3yB,oBAAsB,SAAS4yB,EAAiBj0B,EAAazF,EAAUw6B,EAAY15C,GAC1F,GAAI44C,EAAgB/nE,OAAS,EAAG,CAE9B+nE,EAAgB92D,KAAK,SAAUrR,EAAGa,GAChC,MAAIb,GAAE4M,GAAK/L,EAAE+L,EACJ5M,EAAEqzB,QAAUxyB,EAAEwyB,QAEdrzB,EAAE4M,EAAI/L,EAAE+L,GAGnB,IAAI27D,KAEJL,GAASO,sBAAsBF,EAAeJ,GAC9Cj0B,EAAY+0B,GAAcf,EAASgB,qBAAqBX,EAAeJ,GACvEj0B,EAAY+0B,GAAYj+B,iBAAmBzb,EAC3Ckf,EAAS9rC,KAAKsmE,KAIlBf,EAASgB,qBAAuB,SAAUX,EAAeD,GAIvD,IAAK,GAHDjlE,GACA4T,EAAOqxD,EAAa,GAAGz7D,EACvBsK,EAAOmxD,EAAa,GAAGz7D,EAClB5M,EAAI,EAAGA,EAAIqoE,EAAaloE,OAAQH,IACvCoD,EAAMilE,EAAaroE,GAAG2M,EACK3L,SAAvBsnE,EAAcllE,IAChB4T,EAAOA,EAAOqxD,EAAaroE,GAAG4M,EAAIy7D,EAAaroE,GAAG4M,EAAIoK,EACtDE,EAAOA,EAAOmxD,EAAaroE,GAAG4M,EAAIy7D,EAAaroE,GAAG4M,EAAIsK,GAGtDoxD,EAAcllE,GAAK2lE,aAAeV,EAAaroE,GAAG4M,CAGtD,KAAK,GAAIs8D,KAAQZ,GACXA,EAAchoE,eAAe4oE,KAC/BlyD,EAAOA,EAAOsxD,EAAcY,GAAMH,YAAcT,EAAcY,GAAMH,YAAc/xD,EAClFE,EAAOA,EAAOoxD,EAAcY,GAAMH,YAAcT,EAAcY,GAAMH,YAAc7xD,EAItF,QAAQ5Y,IAAK0Y,EAAMzY,IAAK2Y,IAG1Bld,EAAOD,QAAUkuE,GAIb,SAASjuE,EAAQD,EAASM,GAO9B,QAAS2vC,GAAO5W,EAAS/pB,GACvBlP,KAAKi5B,QAAUA,EACfj5B,KAAKkP,QAAUA,EAJjB,GAAItO,GAAUV,EAAoB,EAQlC2vC,GAAO37B,UAAU28B,UAAY,SAASC,GAGpC,IAAK,GAFDj0B,GAAOi0B,EAAU,GAAGr+B,EACpBsK,EAAO+zB,EAAU,GAAGr+B,EACfga,EAAI,EAAGA,EAAIqkB,EAAU9qC,OAAQymB,IACpC5P,EAAOA,EAAOi0B,EAAUrkB,GAAGha,EAAIq+B,EAAUrkB,GAAGha,EAAIoK,EAChDE,EAAOA,EAAO+zB,EAAUrkB,GAAGha,EAAIq+B,EAAUrkB,GAAGha,EAAIsK,CAElD,QAAQ5Y,IAAK0Y,EAAMzY,IAAK2Y,EAAM6zB,iBAAkB5wC,KAAKkP,QAAQ0hC,mBAG/Df,EAAO37B,UAAU68B,KAAO,SAAS9Y,EAASvlB,EAAOs+B,EAAWtmB,GAC1DmlB,EAAOkB,KAAK9Y,EAASvlB,EAAOs+B,EAAWtmB,IAYzCmlB,EAAOkB,KAAO,SAAU9Y,EAASvlB,EAAOs+B,EAAWtmB,GAClC7jB,SAAX6jB,IAAuBA,EAAS,EACpC,KAAK,GAAI7kB,GAAI,EAAGA,EAAIoyB,EAAQjyB,OAAQH,IAClCjF,EAAQ2R,UAAU0lB,EAAQpyB,GAAG2M,EAAIkY,EAAQuN,EAAQpyB,GAAG4M,EAAGC,EAAOs+B,EAAU7E,YAAa6E,EAAUlG,IAAK7S,EAAQpyB,GAAGmN,QAKnHnT,EAAOD,QAAUiwC,GAIb,SAAShwC,EAAQD,EAASM,GAE9B,GAAI8uE,GAAe9uE,EAAoB,IACnC+uE,EAAe/uE,EAAoB,IACnCgvE,EAAehvE,EAAoB,IACnCivE,EAAiBjvE,EAAoB,IACrCkvE,EAAoBlvE,EAAoB,IACxCmvE,EAAkBnvE,EAAoB,IACtCovE,EAA0BpvE,EAAoB,GAQlDN,GAAQ2vE,WAAa,SAAUC,GAC7B,IAAK,GAAIC,KAAiBD,GACpBA,EAAerpE,eAAespE,KAChCzvE,KAAKyvE,GAAiBD,EAAeC,KAY3C7vE,EAAQ8vE,YAAc,SAAUF,GAC9B,IAAK,GAAIC,KAAiBD,GACpBA,EAAerpE,eAAespE,KAChCzvE,KAAKyvE,GAAiB5oE,SAW5BjH,EAAQ4lD,mBAAqB,WAC3BxlD,KAAKuvE,WAAWP,GAChBhvE,KAAK2vE,2BACkC,GAAnC3vE,KAAKgkD,UAAUtD,iBACjB1gD,KAAK4vE,4BAGL5vE,KAAKitD,gCAUTrtD,EAAQ8lD,mBAAqB,WAC3B1lD,KAAKmgE,eAAiB,EACtBngE,KAAK6vE,aAAe,EACpB7vE,KAAKuvE,WAAWN,IASlBrvE,EAAQ6lD,kBAAoB,WAC1BzlD,KAAKsyD,WACLtyD,KAAK8vE,cAAgB,WACrB9vE,KAAKsyD,QAAgB,UACrBtyD,KAAKsyD,QAAgB,OAAE,YAAczT,SACnCmB,SACAqG,eACAoa,eAAkB,EAClBsP,YAAelpE,QACjB7G,KAAKsyD,QAAgB,UACrBtyD,KAAKsyD,QAAiB,SAAKzT,SACzBmB,SACAqG,eACAoa,eAAkB,EAClBsP,YAAelpE,QAEjB7G,KAAKqmD,YAAcrmD,KAAKsyD,QAAgB,OAAE,WAAwB,YAElEtyD,KAAKuvE,WAAWL,IASlBtvE,EAAQ+lD,qBAAuB,WAC7B3lD,KAAK+tD,cAAgBlP,SAAWmB,UAEhChgD,KAAKuvE,WAAWJ,IASlBvvE,EAAQsrD,wBAA0B,WAEhClrD,KAAKgwE,8BAA+B,EACpChwE,KAAKiwE,sBAAuB,EAEmB,GAA3CjwE,KAAKgkD,UAAUpB,iBAAiBzzC,SAELtI,SAAzB7G,KAAKkwE,kBACPlwE,KAAKkwE,gBAAkBl+D,SAASM,cAAc,OAC9CtS,KAAKkwE,gBAAgB9nE,UAAY,0BAE/BpI,KAAKkwE,gBAAgBxiE,MAAMk/B,QADR,GAAjB5sC,KAAK2qD,SAC8B,QAGA,OAEvC3qD,KAAKsgB,MAAMpO,YAAYlS,KAAKkwE,kBAGLrpE,SAArB7G,KAAKmwE,cACPnwE,KAAKmwE,YAAcn+D,SAASM,cAAc,OAC1CtS,KAAKmwE,YAAY/nE,UAAY,gCAE3BpI,KAAKmwE,YAAYziE,MAAMk/B,QADJ,GAAjB5sC,KAAK2qD,SAC0B,OAGA,QAEnC3qD,KAAKsgB,MAAMpO,YAAYlS,KAAKmwE,cAGRtpE,SAAlB7G,KAAKowE,WACPpwE,KAAKowE,SAAWp+D,SAASM,cAAc,OACvCtS,KAAKowE,SAAShoE,UAAY,gCAC1BpI,KAAKowE,SAAS1iE,MAAMk/B,QAAU5sC,KAAKkwE,gBAAgBxiE,MAAMk/B,QACzD5sC,KAAKsgB,MAAMpO,YAAYlS,KAAKowE,WAI9BpwE,KAAKuvE,WAAWH,GAGhBpvE,KAAK4pD,yBAGwB/iD,SAAzB7G,KAAKkwE,kBAEPlwE,KAAK4pD,wBAGL5pD,KAAKsgB,MAAM1O,YAAY5R,KAAKkwE,iBAC5BlwE,KAAKsgB,MAAM1O,YAAY5R,KAAKmwE,aAC5BnwE,KAAKsgB,MAAM1O,YAAY5R,KAAKowE,UAE5BpwE,KAAKkwE,gBAAkBrpE,OACvB7G,KAAKmwE,YAActpE,OACnB7G,KAAKowE,SAAWvpE,OAEhB7G,KAAK0vE,YAAYN,KAWvBxvE,EAAQqrD,wBAA0B,WAChCjrD,KAAKuvE,WAAWF,GAEhBrvE,KAAKqwE,mBACoC,GAArCrwE,KAAKgkD,UAAUxB,WAAWrzC,SAC5BnP,KAAKswE,2BAUT1wE,EAAQgmD,qBAAuB,WAC7B5lD,KAAKuvE,WAAWD,KAMd,SAASzvE,EAAQD,EAASM,GAiB9B,QAAS0nD,GAAUptC,GACjBxa,KAAK42D,QAAS,EAEd52D,KAAK2wB,KACHnW,UAAWA,GAGbxa,KAAK2wB,IAAI4/C,QAAUv+D,SAASM,cAAc,OAC1CtS,KAAK2wB,IAAI4/C,QAAQnoE,UAAY,UAE7BpI,KAAK2wB,IAAInW,UAAUtI,YAAYlS,KAAK2wB,IAAI4/C,SAExCvwE,KAAK8D,OAAS4iC,EAAO1mC,KAAK2wB,IAAI4/C,SAAU5lC,iBAAiB,IACzD3qC,KAAK8D,OAAOwQ,GAAG,MAAOtU,KAAKwwE,cAAc96C,KAAK11B,MAG9C,IAAIkV,GAAKlV,KACLkqE,GACF,QAAS,QACT,YAAa,OACb,YAAa,OAAQ,UACrB,aAAc,iBAEhBA,GAAOthE,QAAQ,SAAUiB,GACvBqL,EAAGpR,OAAOwQ,GAAGzK,EAAO,SAAUA,GAC5BA,EAAM49B,sBAKVznC,KAAKywE,aAAe/pC,EAAO5+B,QAAS6iC,iBAAiB,IACrD3qC,KAAKywE,aAAan8D,GAAG,MAAO,SAAUzK,GAE/B6mE,EAAW7mE,EAAMG,OAAQwQ,IAC5BtF,EAAGy7D,eAIe9pE,SAAlB7G,KAAK0nD,UACP1nD,KAAK0nD,SAASrzC,UAEhBrU,KAAK0nD,SAAWA,IAGhB1nD,KAAK4wE,YAAc5wE,KAAK2wE,WAAWj7C,KAAK11B,MAiF1C,QAAS0wE,GAAWvnE,EAASkB,GAC3B,KAAOlB,GAAS,CACd,GAAIA,IAAYkB,EACd,OAAO,CAETlB,GAAUA,EAAQgB,WAEpB,OAAO,EAnJT,GAAIu9C,GAAWxnD,EAAoB,IAC/B8d,EAAU9d,EAAoB,IAC9BwmC,EAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,EA4D/B8d,GAAQ4pC,EAAU1zC,WAGlB0zC,EAAU7rB,QAAU,KAKpB6rB,EAAU1zC,UAAUG,QAAU,WAC5BrU,KAAK2wE,aAGL3wE,KAAK2wB,IAAI4/C,QAAQpmE,WAAWyH,YAAY5R,KAAK2wB,IAAI4/C,SAGjDvwE,KAAK8D,OAAS,KACd9D,KAAKywE,aAAe,MAQtB7oB,EAAU1zC,UAAU28D,SAAW,WAEzBjpB,EAAU7rB,SACZ6rB,EAAU7rB,QAAQ40C,aAEpB/oB,EAAU7rB,QAAU/7B,KAEpBA,KAAK42D,QAAS,EACd52D,KAAK2wB,IAAI4/C,QAAQ7iE,MAAMk/B,QAAU,OACjCjsC,EAAKwH,aAAanI,KAAK2wB,IAAInW,UAAW,cAEtCxa,KAAKyuB,KAAK,UACVzuB,KAAKyuB,KAAK,YAIVzuB,KAAK0nD,SAAShyB,KAAK,MAAO11B,KAAK4wE,cAOjChpB,EAAU1zC,UAAUy8D,WAAa,WAC/B3wE,KAAK42D,QAAS,EACd52D,KAAK2wB,IAAI4/C,QAAQ7iE,MAAMk/B,QAAU,GACjCjsC,EAAK8H,gBAAgBzI,KAAK2wB,IAAInW,UAAW,cACzCxa,KAAK0nD,SAASopB,OAAO,MAAO9wE,KAAK4wE,aAEjC5wE,KAAKyuB,KAAK,UACVzuB,KAAKyuB,KAAK,eAQZm5B,EAAU1zC,UAAUs8D,cAAgB,SAAU3mE,GAE5C7J,KAAK6wE,WACLhnE,EAAM49B,mBAsBR5nC,EAAOD,QAAUgoD,GAKb,SAAS/nD,EAAQD,GAGrBA,EAAY,IACV4+C,KAAM,OACNG,IAAK,kBACLoyB,KAAM,OACNjL,QAAS,WACTG,QAAS,WACT+K,SAAU,YACVvyB,SAAU,YACVwyB,eAAgB,+CAChBC,gBAAiB,qEACjBC,oBAAqB,wEACrBC,gBAAiB,kCACjBC,mBAAoB,+BAEtBzxE,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,GAG/BA,EAAY,IACV4+C,KAAM,WACNG,IAAK,uBACLoyB,KAAM,QACNjL,QAAS,iBACTG,QAAS,iBACT+K,SAAU,gBACVvyB,SAAU,gBACVwyB,eAAgB,uDAChBC,gBAAiB,6EACjBC,oBAAqB,kFACrBC,gBAAiB,wCACjBC,mBAAoB,2CAEtBzxE,EAAe,MAAIA,EAAY,GAC/BA,EAAe,MAAIA,EAAY,IAK3B,WAKoC,mBAA7B0xE,4BAKTA,yBAAyBp9D,UAAU2vD,OAAS,SAASrxD,EAAGC,EAAGvH,GACzDlL,KAAK4oB,YACL5oB,KAAKusB,IAAI/Z,EAAGC,EAAGvH,EAAG,EAAG,EAAE1G,KAAKgoB,IAAI,IASlC8kD,yBAAyBp9D,UAAUq9D,OAAS,SAAS/+D,EAAGC,EAAGvH,GACzDlL,KAAK4oB,YACL5oB,KAAKwT,KAAKhB,EAAItH,EAAGuH,EAAIvH,EAAO,EAAJA,EAAW,EAAJA,IASjComE,yBAAyBp9D,UAAU0b,SAAW,SAASpd,EAAGC,EAAGvH,GAE3DlL,KAAK4oB,WAEL,IAAIrc,GAAQ,EAAJrB,EACJsmE,EAAKjlE,EAAI,EACTklE,EAAKjtE,KAAKgsB,KAAK,GAAK,EAAIjkB,EACxBD,EAAI9H,KAAKgsB,KAAKjkB,EAAIA,EAAIilE,EAAKA,EAE/BxxE,MAAK6oB,OAAOrW,EAAGC,GAAKnG,EAAImlE,IACxBzxE,KAAK8oB,OAAOtW,EAAIg/D,EAAI/+D,EAAIg/D,GACxBzxE,KAAK8oB,OAAOtW,EAAIg/D,EAAI/+D,EAAIg/D,GACxBzxE,KAAK8oB,OAAOtW,EAAGC,GAAKnG,EAAImlE,IACxBzxE,KAAKipB,aASPqoD,yBAAyBp9D,UAAUw9D,aAAe,SAASl/D,EAAGC,EAAGvH,GAE/DlL,KAAK4oB,WAEL,IAAIrc,GAAQ,EAAJrB,EACJsmE,EAAKjlE,EAAI,EACTklE,EAAKjtE,KAAKgsB,KAAK,GAAK,EAAIjkB,EACxBD,EAAI9H,KAAKgsB,KAAKjkB,EAAIA,EAAIilE,EAAKA,EAE/BxxE,MAAK6oB,OAAOrW,EAAGC,GAAKnG,EAAImlE,IACxBzxE,KAAK8oB,OAAOtW,EAAIg/D,EAAI/+D,EAAIg/D,GACxBzxE,KAAK8oB,OAAOtW,EAAIg/D,EAAI/+D,EAAIg/D,GACxBzxE,KAAK8oB,OAAOtW,EAAGC,GAAKnG,EAAImlE,IACxBzxE,KAAKipB,aASPqoD,yBAAyBp9D,UAAUy9D,KAAO,SAASn/D,EAAGC,EAAGvH,GAEvDlL,KAAK4oB,WAEL,KAAK,GAAIgpD,GAAI,EAAO,GAAJA,EAAQA,IAAK,CAC3B,GAAItlD,GAAUslD,EAAI,IAAM,EAAS,IAAJ1mE,EAAc,GAAJA,CACvClL,MAAK8oB,OACDtW,EAAI8Z,EAAS9nB,KAAK4a,IAAQ,EAAJwyD,EAAQptE,KAAKgoB,GAAK,IACxC/Z,EAAI6Z,EAAS9nB,KAAK+a,IAAQ,EAAJqyD,EAAQptE,KAAKgoB,GAAK,KAI9CxsB,KAAKipB,aAMPqoD,yBAAyBp9D,UAAUgwD,UAAY,SAAS1xD,EAAGC,EAAGkgD,EAAGrmD,EAAGpB,GAClE,GAAI2mE,GAAMrtE,KAAKgoB,GAAG,GACE,GAAhBmmC,EAAM,EAAIznD,IAAYA,EAAMynD,EAAI,GAChB,EAAhBrmD,EAAM,EAAIpB,IAAYA,EAAMoB,EAAI,GACpCtM,KAAK4oB,YACL5oB,KAAK6oB,OAAOrW,EAAEtH,EAAEuH,GAChBzS,KAAK8oB,OAAOtW,EAAEmgD,EAAEznD,EAAEuH,GAClBzS,KAAKusB,IAAI/Z,EAAEmgD,EAAEznD,EAAEuH,EAAEvH,EAAEA,EAAM,IAAJ2mE,EAAY,IAAJA,GAAQ,GACrC7xE,KAAK8oB,OAAOtW,EAAEmgD,EAAElgD,EAAEnG,EAAEpB,GACpBlL,KAAKusB,IAAI/Z,EAAEmgD,EAAEznD,EAAEuH,EAAEnG,EAAEpB,EAAEA,EAAE,EAAM,GAAJ2mE,GAAO,GAChC7xE,KAAK8oB,OAAOtW,EAAEtH,EAAEuH,EAAEnG,GAClBtM,KAAKusB,IAAI/Z,EAAEtH,EAAEuH,EAAEnG,EAAEpB,EAAEA,EAAM,GAAJ2mE,EAAW,IAAJA,GAAQ,GACpC7xE,KAAK8oB,OAAOtW,EAAEC,EAAEvH,GAChBlL,KAAKusB,IAAI/Z,EAAEtH,EAAEuH,EAAEvH,EAAEA,EAAM,IAAJ2mE,EAAY,IAAJA,GAAQ,IAMrCP,yBAAyBp9D,UAAUmwD,QAAU,SAAS7xD,EAAGC,EAAGkgD,EAAGrmD,GAC7D,GAAIwlE,GAAQ,SACRC,EAAMpf,EAAI,EAAKmf,EACfE,EAAM1lE,EAAI,EAAKwlE,EACfG,EAAKz/D,EAAImgD,EACTuf,EAAKz/D,EAAInG,EACT6lE,EAAK3/D,EAAImgD,EAAI,EACbyf,EAAK3/D,EAAInG,EAAI,CAEjBtM,MAAK4oB,YACL5oB,KAAK6oB,OAAOrW,EAAG4/D,GACfpyE,KAAKqyE,cAAc7/D,EAAG4/D,EAAKJ,EAAIG,EAAKJ,EAAIt/D,EAAG0/D,EAAI1/D,GAC/CzS,KAAKqyE,cAAcF,EAAKJ,EAAIt/D,EAAGw/D,EAAIG,EAAKJ,EAAIC,EAAIG,GAChDpyE,KAAKqyE,cAAcJ,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACjDlyE,KAAKqyE,cAAcF,EAAKJ,EAAIG,EAAI1/D,EAAG4/D,EAAKJ,EAAIx/D,EAAG4/D,IAQjDd,yBAAyBp9D,UAAUiwD,SAAW,SAAS3xD,EAAGC,EAAGkgD,EAAGrmD,GAC9D,GAAI+B,GAAI,EAAE,EACNikE,EAAW3f,EACX4f,EAAWjmE,EAAI+B,EAEfyjE,EAAQ,SACRC,EAAMO,EAAW,EAAKR,EACtBE,EAAMO,EAAW,EAAKT,EACtBG,EAAKz/D,EAAI8/D,EACTJ,EAAKz/D,EAAI8/D,EACTJ,EAAK3/D,EAAI8/D,EAAW,EACpBF,EAAK3/D,EAAI8/D,EAAW,EACpBC,EAAM//D,GAAKnG,EAAIimE,EAAS,GACxBE,EAAMhgE,EAAInG,CAEdtM,MAAK4oB,YACL5oB,KAAK6oB,OAAOopD,EAAIG,GAEhBpyE,KAAKqyE,cAAcJ,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACjDlyE,KAAKqyE,cAAcF,EAAKJ,EAAIG,EAAI1/D,EAAG4/D,EAAKJ,EAAIx/D,EAAG4/D,GAE/CpyE,KAAKqyE,cAAc7/D,EAAG4/D,EAAKJ,EAAIG,EAAKJ,EAAIt/D,EAAG0/D,EAAI1/D,GAC/CzS,KAAKqyE,cAAcF,EAAKJ,EAAIt/D,EAAGw/D,EAAIG,EAAKJ,EAAIC,EAAIG,GAEhDpyE,KAAK8oB,OAAOmpD,EAAIO,GAEhBxyE,KAAKqyE,cAAcJ,EAAIO,EAAMR,EAAIG,EAAKJ,EAAIU,EAAKN,EAAIM,GACnDzyE,KAAKqyE,cAAcF,EAAKJ,EAAIU,EAAKjgE,EAAGggE,EAAMR,EAAIx/D,EAAGggE,GAEjDxyE,KAAK8oB,OAAOtW,EAAG4/D,IAOjBd,yBAAyBp9D,UAAU4nD,MAAQ,SAAStpD,EAAGC,EAAG8+C,EAAOvrD,GAE/D,GAAI0sE,GAAKlgE,EAAIxM,EAASxB,KAAK+a,IAAIgyC,GAC3BohB,EAAKlgE,EAAIzM,EAASxB,KAAK4a,IAAImyC,GAI3BqhB,EAAKpgE,EAAa,GAATxM,EAAexB,KAAK+a,IAAIgyC,GACjCshB,EAAKpgE,EAAa,GAATzM,EAAexB,KAAK4a,IAAImyC,GAGjCuhB,EAAKJ,EAAK1sE,EAAS,EAAIxB,KAAK+a,IAAIgyC,EAAQ,GAAM/sD,KAAKgoB,IACnDumD,EAAKJ,EAAK3sE,EAAS,EAAIxB,KAAK4a,IAAImyC,EAAQ,GAAM/sD,KAAKgoB,IAGnDwmD,EAAKN,EAAK1sE,EAAS,EAAIxB,KAAK+a,IAAIgyC,EAAQ,GAAM/sD,KAAKgoB,IACnDymD,EAAKN,EAAK3sE,EAAS,EAAIxB,KAAK4a,IAAImyC,EAAQ,GAAM/sD,KAAKgoB,GAEvDxsB,MAAK4oB,YACL5oB,KAAK6oB,OAAOrW,EAAGC,GACfzS,KAAK8oB,OAAOgqD,EAAIC,GAChB/yE,KAAK8oB,OAAO8pD,EAAIC,GAChB7yE,KAAK8oB,OAAOkqD,EAAIC,GAChBjzE,KAAKipB,aASPqoD,yBAAyBp9D,UAAU0nD,WAAa,SAASppD,EAAEC,EAAEmqD,EAAGC,EAAGqW,GAC5DA,IAAWA,GAAW,GAAG,IACd,GAAZC,IAAeA,EAAa,KAChC,IAAIC,GAAYF,EAAUltE,MAC1BhG,MAAK6oB,OAAOrW,EAAGC,EAKf,KAJA,GAAImN,GAAMg9C,EAAGpqD,EAAIqN,EAAMg9C,EAAGpqD,EACtB4gE,EAAQxzD,EAAGD,EACX0zD,EAAgB9uE,KAAKgsB,KAAM5Q,EAAGA,EAAKC,EAAGA,GACtC0zD,EAAU,EAAGxiC,GAAK,EACfuiC,GAAe,IAAI,CACxB,GAAIH,GAAaD,EAAUK,IAAYH,EACnCD,GAAaG,IAAeH,EAAaG,EAC7C,IAAI32D,GAAQnY,KAAKgsB,KAAM2iD,EAAWA,GAAc,EAAIE,EAAMA,GACnD,GAAHzzD,IAAMjD,GAASA,GACnBnK,GAAKmK,EACLlK,GAAK4gE,EAAM12D,EACX3c,KAAK+wC,EAAO,SAAW,UAAUv+B,EAAEC,GACnC6gE,GAAiBH,EACjBpiC,GAAQA,MAUV,SAASlxC,EAAQD,GAErB,GAAI4zE,GAAgCC,EAA8BC,GAOjE,SAAUh0E,EAAMC,GAGX8zE,KAAmCD,EAAiC,EAAWE,EAA2E,kBAAnCF,GAAiDA,EAA+B16D,MAAMlZ,EAAS6zE,GAAiCD,IAAmE3sE,SAAlC6sE,IAAgD7zE,EAAOD,QAAU8zE,KAU7V1zE,KAAM,WAEN,QAAS0nD,GAASx4C,GAChB,GAOIrJ,GAPA+D,EAAiBsF,GAAWA,EAAQtF,iBAAkB,EAEtD4Q,EAAYtL,GAAWA,EAAQsL,WAAa1S,OAE5C6rE,KACAC,GAAUC,WAAYC,UACtBC,IAIJ,KAAKluE,EAAI,GAAS,KAALA,EAAUA,IAAMkuE,EAAMrvE,OAAOsvE,aAAanuE,KAAOouE,KAAK,IAAMpuE,EAAI,IAAKkM,OAAO,EAEzF,KAAKlM,EAAI,GAAS,IAALA,EAASA,IAAMkuE,EAAMrvE,OAAOsvE,aAAanuE,KAAOouE,KAAKpuE,EAAGkM,OAAO,EAE5E,KAAKlM,EAAI,EAAS,GAALA,EAAUA,IAAMkuE,EAAM,GAAKluE,IAAMouE,KAAK,GAAKpuE,EAAGkM,OAAO,EAElE,KAAKlM,EAAI,EAAS,IAALA,EAAWA,IAAMkuE,EAAM,IAAMluE,IAAMouE,KAAK,IAAMpuE,EAAGkM,OAAO,EAErE,KAAKlM,EAAI,EAAS,GAALA,EAAUA,IAAMkuE,EAAM,MAAQluE,IAAMouE,KAAK,GAAKpuE,EAAGkM,OAAO,EAGrEgiE,GAAM,SAAWE,KAAK,IAAKliE,OAAO,GAClCgiE,EAAM,SAAWE,KAAK,IAAKliE,OAAO,GAClCgiE,EAAM,SAAWE,KAAK,IAAKliE,OAAO,GAClCgiE,EAAM,SAAWE,KAAK,IAAKliE,OAAO,GAClCgiE,EAAM,SAAWE,KAAK,IAAKliE,OAAO,GAElCgiE,EAAY,MAAME,KAAK,GAAIliE,OAAO,GAClCgiE,EAAU,IAAQE,KAAK,GAAIliE,OAAO,GAClCgiE,EAAa,OAAKE,KAAK,GAAIliE,OAAO,GAClCgiE,EAAY,MAAME,KAAK,GAAIliE,OAAO,GAElCgiE,EAAa,OAAKE,KAAK,GAAIliE,OAAO,GAClCgiE,EAAa,OAAKE,KAAK,GAAIliE,OAAO,GAClCgiE,EAAa,OAAKE,KAAK,GAAIliE,MAAOlL,QAClCktE,EAAW,KAAOE,KAAK,GAAIliE,OAAO,GAClCgiE,EAAiB,WAAKE,KAAK,EAAGliE,OAAO,GACrCgiE,EAAW,KAAWE,KAAK,EAAGliE,OAAO,GACrCgiE,EAAY,MAAUE,KAAK,GAAIliE,OAAO,GACtCgiE,EAAW,KAAWE,KAAK,GAAIliE,OAAO,GACtCgiE,EAAM,WAAgBE,KAAK,GAAIliE,OAAO,GACtCgiE,EAAc,QAAQE,KAAK,GAAIliE,OAAO,GACtCgiE,EAAgB,UAAME,KAAK,GAAIliE,OAAO,GAEtCgiE,EAAM,MAAYE,KAAK,IAAKliE,OAAO,GACnCgiE,EAAM,MAAYE,KAAK,IAAKliE,OAAO,GACnCgiE,EAAM,MAAYE,KAAK,IAAKliE,OAAO,GACnCgiE,EAAM,MAAYE,KAAK,IAAKliE,OAAO,EAInC,IAAImiE,GAAO,SAASrqE,GAAQsqE,EAAYtqE,EAAM,YAC1CuqE,EAAK,SAASvqE,GAAQsqE,EAAYtqE,EAAM,UAGxCsqE,EAAc,SAAStqE,EAAM1C,GAC/B,GAAoCN,SAAhC+sE,EAAOzsE,GAAM0C,EAAMwqE,SAAwB,CAE7C,IAAK,GADDC,GAAQV,EAAOzsE,GAAM0C,EAAMwqE,SACtBxuE,EAAI,EAAGA,EAAIyuE,EAAMtuE,OAAQH,IACTgB,SAAnBytE,EAAMzuE,GAAGkM,MACXuiE,EAAMzuE,GAAGsU,GAAGtQ,GAEa,GAAlByqE,EAAMzuE,GAAGkM,OAAmC,GAAlBlI,EAAM8tC,SACvC28B,EAAMzuE,GAAGsU,GAAGtQ,GAEa,GAAlByqE,EAAMzuE,GAAGkM,OAAoC,GAAlBlI,EAAM8tC,UACxC28B,EAAMzuE,GAAGsU,GAAGtQ,EAIM,IAAlBD,GACFC,EAAMD,kBA4FZ,OAtFA+pE,GAAiBj+C,KAAO,SAASzsB,EAAKJ,EAAU1B,GAI9C,GAHaN,SAATM,IACFA,EAAO,WAEUN,SAAfktE,EAAM9qE,GACR,KAAM,IAAIrF,OAAM,oBAAsBqF,EAEFpC,UAAlC+sE,EAAOzsE,GAAM4sE,EAAM9qE,GAAKgrE,QAC1BL,EAAOzsE,GAAM4sE,EAAM9qE,GAAKgrE,UAE1BL,EAAOzsE,GAAM4sE,EAAM9qE,GAAKgrE,MAAM1rE,MAAM4R,GAAGtR,EAAUkJ,MAAMgiE,EAAM9qE,GAAK8I,SAKpE4hE,EAAiBY,QAAU,SAAS1rE,EAAU1B,GAC/BN,SAATM,IACFA,EAAO,UAET,KAAK,GAAI8B,KAAO8qE,GACVA,EAAM5tE,eAAe8C,IACvB0qE,EAAiBj+C,KAAKzsB,EAAIJ,EAAS1B,IAMzCwsE,EAAiBa,OAAS,SAAS3qE,GACjC,IAAK,GAAIZ,KAAO8qE,GACd,GAAIA,EAAM5tE,eAAe8C,GAAM,CAC7B,GAAsB,GAAlBY,EAAM8tC,UAAwC,GAApBo8B,EAAM9qE,GAAK8I,OAAiBlI,EAAMwqE,SAAWN,EAAM9qE,GAAKgrE,KACpF,MAAOhrE,EAEJ,IAAsB,GAAlBY,EAAM8tC,UAAyC,GAApBo8B,EAAM9qE,GAAK8I,OAAkBlI,EAAMwqE,SAAWN,EAAM9qE,GAAKgrE,KAC3F,MAAOhrE,EAEJ,IAAIY,EAAMwqE,SAAWN,EAAM9qE,GAAKgrE,MAAe,SAAPhrE,EAC3C,MAAOA,GAIb,MAAO,wCAIT0qE,EAAiB7C,OAAS,SAAS7nE,EAAKJ,EAAU1B,GAIhD,GAHaN,SAATM,IACFA,EAAO,WAEUN,SAAfktE,EAAM9qE,GACR,KAAM,IAAIrF,OAAM,oBAAsBqF,EAExC,IAAiBpC,SAAbgC,EAAwB,CAC1B,GAAI4rE,MACAH,EAAQV,EAAOzsE,GAAM4sE,EAAM9qE,GAAKgrE,KACpC,IAAcptE,SAAVytE,EACF,IAAK,GAAIzuE,GAAI,EAAGA,EAAIyuE,EAAMtuE,OAAQH,KAC1ByuE,EAAMzuE,GAAGsU,IAAMtR,GAAYyrE,EAAMzuE,GAAGkM,OAASgiE,EAAM9qE,GAAK8I,QAC5D0iE,EAAYlsE,KAAKqrE,EAAOzsE,GAAM4sE,EAAM9qE,GAAKgrE,MAAMpuE,GAIrD+tE,GAAOzsE,GAAM4sE,EAAM9qE,GAAKgrE,MAAQQ,MAGhCb,GAAOzsE,GAAM4sE,EAAM9qE,GAAKgrE,UAK5BN,EAAiBtnB,MAAQ,WACvBunB,GAAUC,WAAYC,WAIxBH,EAAiBt/D,QAAU,WACzBu/D,GAAUC,WAAYC,UACtBt5D,EAAU9Q,oBAAoB,UAAWwqE,GAAM,GAC/C15D,EAAU9Q,oBAAoB,QAAS0qE,GAAI,IAI7C55D,EAAUtR,iBAAiB,UAAUgrE,GAAK,GAC1C15D,EAAUtR,iBAAiB,QAAQkrE,GAAG,GAG/BT,EAGT,MAAOjsB,MAQL,SAAS7nD,EAAQD,EAASM,GAqgB9B,QAASw0E,KACP10E,KAAKgkD,UAAUb,aAAah0C,SAAWnP,KAAKgkD,UAAUb,aAAah0C,OACnE,IAAIwlE,GAAqB3iE,SAAS4iE,eAAe,qBACCD,GAAmBjnE,MAAMb,WAAhC,GAAvC7M,KAAKgkD,UAAUb,aAAah0C,QAAwD,UACR,UAEhFnP,KAAKmrD,wBAAuB,GAO9B,QAAS0pB,KACP,IAAK,GAAIlsB,KAAU3oD,MAAKmmD,iBAClBnmD,KAAKmmD,iBAAiBhgD,eAAewiD,KACvC3oD,KAAKmmD,iBAAiBwC,GAAQoX,GAAK,EAAI//D,KAAKmmD,iBAAiBwC,GAAQqX,GAAK,EAC1EhgE,KAAKmmD,iBAAiBwC,GAAQkX,GAAK,EAAI7/D,KAAKmmD,iBAAiBwC,GAAQmX,GAAK,EAG7B,IAA7C9/D,KAAKgkD,UAAUlB,mBAAmB3zC,SACpCnP,KAAKunD,2BACLutB,EAAiBv0E,KAAKP,KAAM,aAAc,EAAG,8CAC7C80E,EAAiBv0E,KAAKP,KAAM,aAAc,EAAG,0BAC7C80E,EAAiBv0E,KAAKP,KAAM,aAAc,EAAG,0BAC7C80E,EAAiBv0E,KAAKP,KAAM,aAAc,EAAG,wBAC7C80E,EAAiBv0E,KAAKP,KAAM,eAAgB,EAAG,oBAG/CA,KAAK+0E,kBAEP/0E,KAAKqnD,QAAS,EACdrnD,KAAKqQ,QAMP,QAAS2kE,KACP,GAAI9lE,GAAU,gDACV+lE,KACAC,EAAeljE,SAAS4iE,eAAe,wBACvCO,EAAenjE,SAAS4iE,eAAe,uBAC3C,IAA4B,GAAxBM,EAAaE,QAAiB,CAMhC,GALIp1E,KAAKgkD,UAAUrD,QAAQC,UAAUE,uBAAyB9gD,KAAKq1E,gBAAgB10B,QAAQC,UAAUE,uBAAwBm0B,EAAgB1sE,KAAK,0BAA4BvI,KAAKgkD,UAAUrD,QAAQC,UAAUE,uBAC3M9gD,KAAKgkD,UAAUrD,QAAQI,gBAAkB/gD,KAAKq1E,gBAAgB10B,QAAQC,UAAUG,gBAAyCk0B,EAAgB1sE,KAAK,mBAAqBvI,KAAKgkD,UAAUrD,QAAQI,gBAC1L/gD,KAAKgkD,UAAUrD,QAAQK,cAAgBhhD,KAAKq1E,gBAAgB10B,QAAQC,UAAUI,cAA2Ci0B,EAAgB1sE,KAAK,iBAAmBvI,KAAKgkD,UAAUrD,QAAQK,cACxLhhD,KAAKgkD,UAAUrD,QAAQM,gBAAkBjhD,KAAKq1E,gBAAgB10B,QAAQC,UAAUK,gBAAyCg0B,EAAgB1sE,KAAK,mBAAqBvI,KAAKgkD,UAAUrD,QAAQM,gBAC1LjhD,KAAKgkD,UAAUrD,QAAQO,SAAWlhD,KAAKq1E,gBAAgB10B,QAAQC,UAAUM,SAAgD+zB,EAAgB1sE,KAAK,YAAcvI,KAAKgkD,UAAUrD,QAAQO,SACzJ,GAA1B+zB,EAAgBjvE,OAAa,CAC/BkJ,EAAU,kBACVA,GAAW,wBACX,KAAK,GAAIrJ,GAAI,EAAGA,EAAIovE,EAAgBjvE,OAAQH,IAC1CqJ,GAAW+lE,EAAgBpvE,GACvBA,EAAIovE,EAAgBjvE,OAAS,IAC/BkJ,GAAW,KAGfA,IAAW,KAETlP,KAAKgkD,UAAUb,aAAah0C,SAAWnP,KAAKq1E,gBAAgBlyB,aAAah0C,UAC7C,GAA1B8lE,EAAgBjvE,OAAckJ,EAAU,kBACtCA,GAAW,KACjBA,GAAW,iBAAmBlP,KAAKgkD,UAAUb,aAAah0C,SAE7C,iDAAXD,IACFA,GAAW,UAGV,IAA4B,GAAxBimE,EAAaC,QAAiB,CAQrC,GAPAlmE,EAAU,kBACVA,GAAW,wCACPlP,KAAKgkD,UAAUrD,QAAQQ,UAAUC,cAAgBphD,KAAKq1E,gBAAgB10B,QAAQQ,UAAUC,cAAgB6zB,EAAgB1sE,KAAK,iBAAmBvI,KAAKgkD,UAAUrD,QAAQQ,UAAUC,cACjLphD,KAAKgkD,UAAUrD,QAAQI,gBAAkB/gD,KAAKq1E,gBAAgB10B,QAAQQ,UAAUJ,gBAAwBk0B,EAAgB1sE,KAAK,mBAAqBvI,KAAKgkD,UAAUrD,QAAQI,gBACzK/gD,KAAKgkD,UAAUrD,QAAQK,cAAgBhhD,KAAKq1E,gBAAgB10B,QAAQQ,UAAUH,cAA0Bi0B,EAAgB1sE,KAAK,iBAAmBvI,KAAKgkD,UAAUrD,QAAQK,cACvKhhD,KAAKgkD,UAAUrD,QAAQM,gBAAkBjhD,KAAKq1E,gBAAgB10B,QAAQQ,UAAUF,gBAAwBg0B,EAAgB1sE,KAAK,mBAAqBvI,KAAKgkD,UAAUrD,QAAQM,gBACzKjhD,KAAKgkD,UAAUrD,QAAQO,SAAWlhD,KAAKq1E,gBAAgB10B,QAAQQ,UAAUD,SAA+B+zB,EAAgB1sE,KAAK,YAAcvI,KAAKgkD,UAAUrD,QAAQO,SACxI,GAA1B+zB,EAAgBjvE,OAAa,CAC/BkJ,GAAW,gBACX,KAAK,GAAIrJ,GAAI,EAAGA,EAAIovE,EAAgBjvE,OAAQH,IAC1CqJ,GAAW+lE,EAAgBpvE,GACvBA,EAAIovE,EAAgBjvE,OAAS,IAC/BkJ,GAAW,KAGfA,IAAW,KAEiB,GAA1B+lE,EAAgBjvE,SAAckJ,GAAW,KACzClP,KAAKgkD,UAAUb,cAAgBnjD,KAAKq1E,gBAAgBlyB,eACtDj0C,GAAW,mBAAqBlP,KAAKgkD,UAAUb,cAEjDj0C,GAAW,SAER,CAOH,GANAA,EAAU,kBACNlP,KAAKgkD,UAAUrD,QAAQU,sBAAsBD,cAAgBphD,KAAKq1E,gBAAgB10B,QAAQU,sBAAsBD,cAAgB6zB,EAAgB1sE,KAAK,iBAAmBvI,KAAKgkD,UAAUrD,QAAQU,sBAAsBD,cACrNphD,KAAKgkD,UAAUrD,QAAQI,gBAAkB/gD,KAAKq1E,gBAAgB10B,QAAQU,sBAAsBN,gBAAwBk0B,EAAgB1sE,KAAK,mBAAqBvI,KAAKgkD,UAAUrD,QAAQI,gBACrL/gD,KAAKgkD,UAAUrD,QAAQK,cAAgBhhD,KAAKq1E,gBAAgB10B,QAAQU,sBAAsBL,cAA0Bi0B,EAAgB1sE,KAAK,iBAAmBvI,KAAKgkD,UAAUrD,QAAQK,cACnLhhD,KAAKgkD,UAAUrD,QAAQM,gBAAkBjhD,KAAKq1E,gBAAgB10B,QAAQU,sBAAsBJ,gBAAwBg0B,EAAgB1sE,KAAK,mBAAqBvI,KAAKgkD,UAAUrD,QAAQM,gBACrLjhD,KAAKgkD,UAAUrD,QAAQO,SAAWlhD,KAAKq1E,gBAAgB10B,QAAQU,sBAAsBH,SAA+B+zB,EAAgB1sE,KAAK,YAAcvI,KAAKgkD,UAAUrD,QAAQO,SACpJ,GAA1B+zB,EAAgBjvE,OAAa,CAC/BkJ,GAAW,oCACX;IAAK,GAAIrJ,GAAI,EAAGA,EAAIovE,EAAgBjvE,OAAQH,IAC1CqJ,GAAW+lE,EAAgBpvE,GACvBA,EAAIovE,EAAgBjvE,OAAS,IAC/BkJ,GAAW,KAGfA,IAAW,MAOb,GALAA,GAAW,wBACX+lE,KACIj1E,KAAKgkD,UAAUlB,mBAAmB5lB,WAAal9B,KAAKq1E,gBAAgBvyB,mBAAmB5lB,WAAkC+3C,EAAgB1sE,KAAK,cAAgBvI,KAAKgkD,UAAUlB,mBAAmB5lB,WAChM14B,KAAKknB,IAAI1rB,KAAKgkD,UAAUlB,mBAAmBC,kBAAoB/iD,KAAKq1E,gBAAgBvyB,mBAAmBC,iBAAkBkyB,EAAgB1sE,KAAK,oBAAsBvI,KAAKgkD,UAAUlB,mBAAmBC,iBACtM/iD,KAAKgkD,UAAUlB,mBAAmBE,aAAehjD,KAAKq1E,gBAAgBvyB,mBAAmBE,aAAgCiyB,EAAgB1sE,KAAK,gBAAkBvI,KAAKgkD,UAAUlB,mBAAmBE,aACxK,GAA1BiyB,EAAgBjvE,OAAa,CAC/B,IAAK,GAAIH,GAAI,EAAGA,EAAIovE,EAAgBjvE,OAAQH,IAC1CqJ,GAAW+lE,EAAgBpvE,GACvBA,EAAIovE,EAAgBjvE,OAAS,IAC/BkJ,GAAW,KAGfA,IAAW,QAGXA,IAAW,eAEbA,IAAW,KAIblP,KAAKs1E,WAAWrwD,UAAY/V,EAO9B,QAASqmE,KACP,GAAIr/D,IAAO,iBAAkB,gBAAiB,iBAC1Cs/D,EAAcxjE,SAASyjE,cAAc,6CAA6CnxE,MAClFoxE,EAAU,SAAWF,EAAc,SACnCG,EAAQ3jE,SAAS4iE,eAAec,EACpCC,GAAMjoE,MAAMk/B,QAAU,OACtB,KAAK,GAAI/mC,GAAI,EAAGA,EAAIqQ,EAAIlQ,OAAQH,IAC1BqQ,EAAIrQ,IAAM6vE,IACZC,EAAQ3jE,SAAS4iE,eAAe1+D,EAAIrQ,IACpC8vE,EAAMjoE,MAAMk/B,QAAU,OAG1B5sC,MAAK41E,gBACc,KAAfJ,GACFx1E,KAAKgkD,UAAUlB,mBAAmB3zC,SAAU,EAC5CnP,KAAKgkD,UAAUrD,QAAQU,sBAAsBlyC,SAAU,EACvDnP,KAAKgkD,UAAUrD,QAAQC,UAAUzxC,SAAU,GAErB,KAAfqmE,EAC0C,GAA7Cx1E,KAAKgkD,UAAUlB,mBAAmB3zC,UACpCnP,KAAKgkD,UAAUlB,mBAAmB3zC,SAAU,EAC5CnP,KAAKgkD,UAAUrD,QAAQU,sBAAsBlyC,SAAU,EACvDnP,KAAKgkD,UAAUrD,QAAQC,UAAUzxC,SAAU,EAC3CnP,KAAKgkD,UAAUb,aAAah0C,SAAU,EACtCnP,KAAKunD,6BAIPvnD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAU,EAC5CnP,KAAKgkD,UAAUrD,QAAQU,sBAAsBlyC,SAAU,EACvDnP,KAAKgkD,UAAUrD,QAAQC,UAAUzxC,SAAU,GAE7CnP,KAAK2vE,0BACL,IAAIgF,GAAqB3iE,SAAS4iE,eAAe,qBACCD,GAAmBjnE,MAAMb,WAAhC,GAAvC7M,KAAKgkD,UAAUb,aAAah0C,QAAwD,UACR,UAChFnP,KAAKqnD,QAAS,EACdrnD,KAAKqQ,QAWP,QAASykE,GAAkBz0E,EAAGyN,EAAI+nE,GAChC,GAAIC,GAAUz1E,EAAK,SACf01E,EAAa/jE,SAAS4iE,eAAev0E,GAAIiE,KAEzCgC,OAAMC,QAAQuH,IAChBkE,SAAS4iE,eAAekB,GAASxxE,MAAQwJ,EAAIzC,SAAS0qE,IACtD/1E,KAAKg2E,yBAAyBH,EAAsB/nE,EAAIzC,SAAS0qE,OAGjE/jE,SAAS4iE,eAAekB,GAASxxE,MAAQ+G,SAASyC,GAAOuY,WAAW0vD,GACpE/1E,KAAKg2E,yBAAyBH,EAAuBxqE,SAASyC,GAAOuY,WAAW0vD,MAGrD,gCAAzBF,GACuB,sCAAzBA,GACyB,kCAAzBA,IACA71E,KAAKunD,2BAEPvnD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,QAhtBP,GAAI1P,GAAOT,EAAoB,GAC3B+1E,EAAiB/1E,EAAoB,IACrCg2E,EAA4Bh2E,EAAoB,IAChDi2E,EAAiBj2E,EAAoB,GAOzCN,GAAQw2E,iBAAmB,WACzBp2E,KAAKgkD,UAAUrD,QAAQC,UAAUzxC,SAAWnP,KAAKgkD,UAAUrD,QAAQC,UAAUzxC,QAC7EnP,KAAK2vE,2BACL3vE,KAAKqnD,QAAS,EACdrnD,KAAKqQ,SASPzQ,EAAQ+vE,yBAA2B,WAEe,GAA5C3vE,KAAKgkD,UAAUrD,QAAQC,UAAUzxC,SACnCnP,KAAK0vE,YAAYuG,GACjBj2E,KAAK0vE,YAAYwG,GAEjBl2E,KAAKgkD,UAAUrD,QAAQI,eAAiB/gD,KAAKgkD,UAAUrD,QAAQC,UAAUG,eACzE/gD,KAAKgkD,UAAUrD,QAAQK,aAAehhD,KAAKgkD,UAAUrD,QAAQC,UAAUI,aACvEhhD,KAAKgkD,UAAUrD,QAAQM,eAAiBjhD,KAAKgkD,UAAUrD,QAAQC,UAAUK,eACzEjhD,KAAKgkD,UAAUrD,QAAQO,QAAUlhD,KAAKgkD,UAAUrD,QAAQC,UAAUM,QAElElhD,KAAKuvE,WAAW4G,IAE+C,GAAxDn2E,KAAKgkD,UAAUrD,QAAQU,sBAAsBlyC,SACpDnP,KAAK0vE,YAAYyG,GACjBn2E,KAAK0vE,YAAYuG,GAEjBj2E,KAAKgkD,UAAUrD,QAAQI,eAAiB/gD,KAAKgkD,UAAUrD,QAAQU,sBAAsBN,eACrF/gD,KAAKgkD,UAAUrD,QAAQK,aAAehhD,KAAKgkD,UAAUrD,QAAQU,sBAAsBL,aACnFhhD,KAAKgkD,UAAUrD,QAAQM,eAAiBjhD,KAAKgkD,UAAUrD,QAAQU,sBAAsBJ,eACrFjhD,KAAKgkD,UAAUrD,QAAQO,QAAUlhD,KAAKgkD,UAAUrD,QAAQU,sBAAsBH,QAE9ElhD,KAAKuvE,WAAW2G,KAGhBl2E,KAAK0vE,YAAYyG,GACjBn2E,KAAK0vE,YAAYwG,GACjBl2E,KAAKq2E,cAAgBxvE,OAErB7G,KAAKgkD,UAAUrD,QAAQI,eAAiB/gD,KAAKgkD,UAAUrD,QAAQQ,UAAUJ,eACzE/gD,KAAKgkD,UAAUrD,QAAQK,aAAehhD,KAAKgkD,UAAUrD,QAAQQ,UAAUH,aACvEhhD,KAAKgkD,UAAUrD,QAAQM,eAAiBjhD,KAAKgkD,UAAUrD,QAAQQ,UAAUF,eACzEjhD,KAAKgkD,UAAUrD,QAAQO,QAAUlhD,KAAKgkD,UAAUrD,QAAQQ,UAAUD,QAElElhD,KAAKuvE,WAAW0G,KAUpBr2E,EAAQ02E,4BAA8B,WAEL,GAA3Bt2E,KAAKqmD,YAAYrgD,OACnBhG,KAAK6+C,MAAM7+C,KAAKqmD,YAAY,IAAIsc,UAAU,EAAG,IAIzC3iE,KAAKqmD,YAAYrgD,OAAShG,KAAKgkD,UAAU1C,WAAWE,kBAAyD,GAArCxhD,KAAKgkD,UAAU1C,WAAWnyC,SACpGnP,KAAKu2E,aAAav2E,KAAKgkD,UAAU1C,WAAWG,eAAe,GAI7DzhD,KAAKw2E,qBAUT52E,EAAQ42E,iBAAmB,WAKzBx2E,KAAKy2E,gCACLz2E,KAAK02E,uBAED12E,KAAKgkD,UAAUrD,QAAQM,eAAiB,IACC,GAAvCjhD,KAAKgkD,UAAUb,aAAah0C,SAA0D,GAAvCnP,KAAKgkD,UAAUb,aAAaC,QAC7EpjD,KAAK22E,oCAGuD,GAAxD32E,KAAKgkD,UAAUrD,QAAQU,sBAAsBlyC,QAC/CnP,KAAK42E,qCAGL52E,KAAK62E,2BAebj3E,EAAQ4xD,wBAA0B,WAChC,GAA2C,GAAvCxxD,KAAKgkD,UAAUb,aAAah0C,SAA0D,GAAvCnP,KAAKgkD,UAAUb,aAAaC,QAAiB,CAC9FpjD,KAAKmmD,oBACLnmD,KAAKomD,yBAEL,KAAK,GAAIuC,KAAU3oD,MAAK6+C,MAClB7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5B3oD,KAAKmmD,iBAAiBwC,GAAU3oD,KAAK6+C,MAAM8J,GAG/C,IAAImuB,GAAe92E,KAAKsyD,QAAiB,QAAS,KAClD,KAAK,GAAIykB,KAAiBD,GACpBA,EAAa3wE,eAAe4wE,KAC1B/2E,KAAKggD,MAAM75C,eAAe2wE,EAAaC,GAAexhB,cACxDv1D,KAAKmmD,iBAAiB4wB,GAAiBD,EAAaC,GAGpDD,EAAaC,GAAepU,UAAU,EAAG,GAK/C,KAAK,GAAIjZ,KAAO1pD,MAAKmmD,iBACfnmD,KAAKmmD,iBAAiBhgD,eAAeujD,IACvC1pD,KAAKomD,uBAAuB79C,KAAKmhD,OAKrC1pD,MAAKmmD,iBAAmBnmD,KAAK6+C,MAC7B7+C,KAAKomD,uBAAyBpmD,KAAKqmD,aAUvCzmD,EAAQ62E,8BAAgC,WACtC,GAAI72D,GAAIC,EAAI8G,EAAU0hC,EAAMxiD,EACxBg5C,EAAQ7+C,KAAKmmD,iBACb6wB,EAAUh3E,KAAKgkD,UAAUrD,QAAQI,eACjCk2B,EAAe,CAEnB,KAAKpxE,EAAI,EAAGA,EAAI7F,KAAKomD,uBAAuBpgD,OAAQH,IAClDwiD,EAAOxJ,EAAM7+C,KAAKomD,uBAAuBvgD,IACzCwiD,EAAKnH,QAAUlhD,KAAKgkD,UAAUrD,QAAQO,QAEhB,WAAlBlhD,KAAKk3E,WAAqC,GAAXF,GACjCp3D,GAAMyoC,EAAK71C,EACXqN,GAAMwoC,EAAK51C,EACXkU,EAAWniB,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAEpCo3D,EAA4B,GAAZtwD,EAAiB,EAAKqwD,EAAUrwD,EAChD0hC,EAAKwX,GAAKjgD,EAAKq3D,EACf5uB,EAAKyX,GAAKjgD,EAAKo3D,IAGf5uB,EAAKwX,GAAK,EACVxX,EAAKyX,GAAK,IAahBlgE,EAAQi3E,uBAAyB,WAC/B,GAAIM,GAAYzmB,EAAMZ,EAClBlwC,EAAIC,EAAIggD,EAAIC,EAAIsX,EAAazwD,EAC7Bq5B,EAAQhgD,KAAKggD,KAGjB,KAAK8P,IAAU9P,GACTA,EAAM75C,eAAe2pD,KACvBY,EAAO1Q,EAAM8P,GACTY,EAAKC,WAEH3wD,KAAK6+C,MAAM14C,eAAeuqD,EAAKwG,OAASl3D,KAAK6+C,MAAM14C,eAAeuqD,EAAKyG,UACzEggB,EAAazmB,EAAK/P,QAAQK,aAE1Bm2B,IAAezmB,EAAKtmC,GAAGs2C,YAAchQ,EAAKvmC,KAAKu2C,YAAc,GAAK1gE,KAAKgkD,UAAU1C,WAAWY,WAE5FtiC,EAAM8wC,EAAKvmC,KAAK3X,EAAIk+C,EAAKtmC,GAAG5X,EAC5BqN,EAAM6wC,EAAKvmC,KAAK1X,EAAIi+C,EAAKtmC,GAAG3X,EAC5BkU,EAAWniB,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIbywD,EAAcp3E,KAAKgkD,UAAUrD,QAAQM,gBAAkBk2B,EAAaxwD,GAAYA,EAEhFk5C,EAAKjgD,EAAKw3D,EACVtX,EAAKjgD,EAAKu3D,EAEV1mB,EAAKvmC,KAAK01C,IAAMA,EAChBnP,EAAKvmC,KAAK21C,IAAMA,EAChBpP,EAAKtmC,GAAGy1C,IAAMA,EACdnP,EAAKtmC,GAAG01C,IAAMA,KAexBlgE,EAAQ+2E,kCAAoC,WAC1C,GAAIQ,GAAYzmB,EAAMZ,EAAQunB,EAC1Br3B,EAAQhgD,KAAKggD,KAGjB,KAAK8P,IAAU9P,GACb,GAAIA,EAAM75C,eAAe2pD,KACvBY,EAAO1Q,EAAM8P,GACTY,EAAKC,WAEH3wD,KAAK6+C,MAAM14C,eAAeuqD,EAAKwG,OAASl3D,KAAK6+C,MAAM14C,eAAeuqD,EAAKyG,SACzD,MAAZzG,EAAK2B,KAAa,CACpB,GAAIilB,GAAQ5mB,EAAKtmC,GACbmtD,EAAQ7mB,EAAK2B,IACbmlB,EAAQ9mB,EAAKvmC,IAEjBgtD,GAAazmB,EAAK/P,QAAQK,aAE1Bq2B,EAAsBC,EAAM5W,YAAc8W,EAAM9W,YAAc,EAG9DyW,GAAcE,EAAsBr3E,KAAKgkD,UAAU1C,WAAWY,WAC9DliD,KAAKy3E,sBAAsBH,EAAOC,EAAO,GAAMJ,GAC/Cn3E,KAAKy3E,sBAAsBF,EAAOC,EAAO,GAAML,KAiB3Dv3E,EAAQ63E,sBAAwB,SAAUH,EAAOC,EAAOJ,GACtD,GAAIv3D,GAAIC,EAAIggD,EAAIC,EAAIsX,EAAazwD,CAEjC/G,GAAM03D,EAAM9kE,EAAI+kE,EAAM/kE,EACtBqN,EAAMy3D,EAAM7kE,EAAI8kE,EAAM9kE,EACtBkU,EAAWniB,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIbywD,EAAcp3E,KAAKgkD,UAAUrD,QAAQM,gBAAkBk2B,EAAaxwD,GAAYA,EAEhFk5C,EAAKjgD,EAAKw3D,EACVtX,EAAKjgD,EAAKu3D,EAEVE,EAAMzX,IAAMA,EACZyX,EAAMxX,IAAMA,EACZyX,EAAM1X,IAAMA,EACZ0X,EAAMzX,IAAMA,GAIdlgE,EAAQqtD,6BAA+B,WACrC,GAAkCpmD,SAA9B7G,KAAK03E,qBAAoC,CAC3C,KAAO13E,KAAK03E,qBAAqBhzD,iBAC/B1kB,KAAK03E,qBAAqB9lE,YAAY5R,KAAK03E,qBAAqB/yD,WAGlE3kB,MAAK03E,qBAAqBvtE,WAAWyH,YAAY5R,KAAK03E,sBACtD13E,KAAK03E,qBAAuB7wE,SAQhCjH,EAAQgwE,0BAA4B,WAClC,GAAkC/oE,SAA9B7G,KAAK03E,qBAAoC,CAC3C13E,KAAKq1E,mBACL10E,EAAKmG,WAAW9G,KAAKq1E,gBAAgBr1E,KAAKgkD,UAE1C,IAAI2zB,GAAmBnzE,KAAKJ,IAAI,IAAQ,GAAKpE,KAAKgkD,UAAUrD,QAAQC,UAAUE,sBAAyB,IACnG82B,EAAYpzE,KAAKL,IAAI,IAAwD,GAAlDnE,KAAKgkD,UAAUrD,QAAQC,UAAUK,gBAE5D42B,GAAgC,KAAM,KAAM,KAAM,KACtD73E,MAAK03E,qBAAuB1lE,SAASM,cAAc,OACnDtS,KAAK03E,qBAAqBtvE,UAAY,uBACtCpI,KAAK03E,qBAAqBzyD,UAAY,smBAW0D0yD,EAAiB,YAAe,GAAK33E,KAAKgkD,UAAUrD,QAAQC,UAAUE,sBAAyB,4EAA4E62B,EAAiB,0BAA6B33E,KAAKgkD,UAAUrD,QAAQC,UAA+B,sBAAI,4JAG7Q5gD,KAAKgkD,UAAUrD,QAAQC,UAAUG,eAAiB,wFAA0F/gD,KAAKgkD,UAAUrD,QAAQC,UAAUG,eAAiB,2JAG/L/gD,KAAKgkD,UAAUrD,QAAQC,UAAUI,aAAe,sFAAwFhhD,KAAKgkD,UAAUrD,QAAQC,UAAUI,aAAe,iJAGpM42B,EAAU,YAAc53E,KAAKgkD,UAAUrD,QAAQC,UAAUK,eAAiB,iEAAiE22B,EAAU,0BAA4B53E,KAAKgkD,UAAUrD,QAAQC,UAAUK,eAAiB,sJAG5NjhD,KAAKgkD,UAAUrD,QAAQC,UAAUM,QAAU,4FAA8FlhD,KAAKgkD,UAAUrD,QAAQC,UAAUM,QAAU,sPAM/KlhD,KAAKgkD,UAAUrD,QAAQQ,UAAUC,aAAe,kGAAoGphD,KAAKgkD,UAAUrD,QAAQQ,UAAUC,aAAe,2JAGnMphD,KAAKgkD,UAAUrD,QAAQQ,UAAUJ,eAAiB,uFAAyF/gD,KAAKgkD,UAAUrD,QAAQQ,UAAUJ,eAAiB,0JAG9L/gD,KAAKgkD,UAAUrD,QAAQQ,UAAUH,aAAe,qFAAuFhhD,KAAKgkD,UAAUrD,QAAQQ,UAAUH,aAAe,4JAGrLhhD,KAAKgkD,UAAUrD,QAAQQ,UAAUF,eAAiB,yFAA2FjhD,KAAKgkD,UAAUrD,QAAQQ,UAAUF,eAAiB,qJAGtMjhD,KAAKgkD,UAAUrD,QAAQQ,UAAUD,QAAU,2FAA6FlhD,KAAKgkD,UAAUrD,QAAQQ,UAAUD,QAAU,oQAM9KlhD,KAAKgkD,UAAUrD,QAAQU,sBAAsBD,aAAe,kGAAoGphD,KAAKgkD,UAAUrD,QAAQU,sBAAsBD,aAAe,2JAG3NphD,KAAKgkD,UAAUrD,QAAQU,sBAAsBN,eAAiB,uFAAyF/gD,KAAKgkD,UAAUrD,QAAQU,sBAAsBN,eAAiB,0JAGtN/gD,KAAKgkD,UAAUrD,QAAQU,sBAAsBL,aAAe,qFAAuFhhD,KAAKgkD,UAAUrD,QAAQU,sBAAsBL,aAAe,4JAG7MhhD,KAAKgkD,UAAUrD,QAAQU,sBAAsBJ,eAAiB,yFAA2FjhD,KAAKgkD,UAAUrD,QAAQU,sBAAsBJ,eAAiB,qJAG9NjhD,KAAKgkD,UAAUrD,QAAQU,sBAAsBH,QAAU,2FAA6FlhD,KAAKgkD,UAAUrD,QAAQU,sBAAsBH,QAAU,uJAG3M22B,EAA6B7wE,QAAQhH,KAAKgkD,UAAUlB,mBAAmB5lB,WAAa,0FAA4Fl9B,KAAKgkD,UAAUlB,mBAAmB5lB,UAAY,oKAGtNl9B,KAAKgkD,UAAUlB,mBAAmBC,gBAAkB,yFAA2F/iD,KAAKgkD,UAAUlB,mBAAmBC,gBAAkB,6JAGvM/iD,KAAKgkD,UAAUlB,mBAAmBE,YAAc,wFAA0FhjD,KAAKgkD,UAAUlB,mBAAmBE,YAAc,odAU9RhjD,KAAK0a,iBAAiBo9D,cAAczlE,aAAarS,KAAK03E,qBAAsB13E,KAAK0a,kBACjF1a,KAAKs1E,WAAatjE,SAASM,cAAc,OACzCtS,KAAKs1E,WAAW5nE,MAAM0xC,SAAW,OACjCp/C,KAAKs1E,WAAW5nE,MAAM43D,WAAa,UACnCtlE,KAAK0a,iBAAiBo9D,cAAczlE,aAAarS,KAAKs1E,WAAYt1E,KAAK0a,iBAEvE,IAAIq9D,EACJA,GAAe/lE,SAAS4iE,eAAe,eACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,cAAe,GAAI,2CACvE+3E,EAAe/lE,SAAS4iE,eAAe,eACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,cAAe,EAAG,0BACtE+3E,EAAe/lE,SAAS4iE,eAAe,eACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,cAAe,EAAG,0BACtE+3E,EAAe/lE,SAAS4iE,eAAe,eACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,cAAe,EAAG,wBACtE+3E,EAAe/lE,SAAS4iE,eAAe,iBACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,gBAAiB,EAAG,mBAExE+3E,EAAe/lE,SAAS4iE,eAAe,cACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,aAAc,EAAG,kCACrE+3E,EAAe/lE,SAAS4iE,eAAe,cACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,aAAc,EAAG,0BACrE+3E,EAAe/lE,SAAS4iE,eAAe,cACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,aAAc,EAAG,0BACrE+3E,EAAe/lE,SAAS4iE,eAAe,cACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,aAAc,EAAG,wBACrE+3E,EAAe/lE,SAAS4iE,eAAe,gBACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,eAAgB,EAAG,mBAEvE+3E,EAAe/lE,SAAS4iE,eAAe,cACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,aAAc,EAAG,8CACrE+3E,EAAe/lE,SAAS4iE,eAAe,cACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,aAAc,EAAG,0BACrE+3E,EAAe/lE,SAAS4iE,eAAe,cACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,aAAc,EAAG,0BACrE+3E,EAAe/lE,SAAS4iE,eAAe,cACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,aAAc,EAAG,wBACrE+3E,EAAe/lE,SAAS4iE,eAAe,gBACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,eAAgB,EAAG,mBACvE+3E,EAAe/lE,SAAS4iE,eAAe,qBACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,oBAAqB63E,EAA8B,gCACvGE,EAAe/lE,SAAS4iE,eAAe,kBACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,iBAAkB,EAAG,sCACzE+3E,EAAe/lE,SAAS4iE,eAAe,iBACvCmD,EAAanuD,SAAWkrD,EAAiBp/C,KAAK11B,KAAM,gBAAiB,EAAG,iCAExE,IAAIk1E,GAAeljE,SAAS4iE,eAAe,wBACvCO,EAAenjE,SAAS4iE,eAAe,wBACvCoD,EAAehmE,SAAS4iE,eAAe,uBAC3CO,GAAaC,SAAU,EACnBp1E,KAAKgkD,UAAUrD,QAAQC,UAAUzxC,UACnC+lE,EAAaE,SAAU,GAErBp1E,KAAKgkD,UAAUlB,mBAAmB3zC,UACpC6oE,EAAa5C,SAAU,EAGzB,IAAIT,GAAqB3iE,SAAS4iE,eAAe,sBAC7CqD,EAAwBjmE,SAAS4iE,eAAe,yBAChDsD,EAAwBlmE,SAAS4iE,eAAe,wBAEpDD,GAAmB/hD,QAAU8hD,EAAwBh/C,KAAK11B,MAC1Di4E,EAAsBrlD,QAAUiiD,EAAqBn/C,KAAK11B,MAC1Dk4E,EAAsBtlD,QAAUoiD,EAAqBt/C,KAAK11B,MAExD20E,EAAmBjnE,MAAMb,WADQ,GAA/B7M,KAAKgkD,UAAUb,cAA8D,GAAtCnjD,KAAKgkD,UAAUm0B,oBAClB,UAGA,UAIxC5C,EAAqBz8D,MAAM9Y,MAE3Bk1E,EAAatrD,SAAW2rD,EAAqB7/C,KAAK11B,MAClDm1E,EAAavrD,SAAW2rD,EAAqB7/C,KAAK11B,MAClDg4E,EAAapuD,SAAW2rD,EAAqB7/C,KAAK11B,QAWtDJ,EAAQo2E,yBAA2B,SAAUH,EAAuBvxE,GAClE,GAAI8zE,GAAYvC,EAAsBvtE,MAAM,IACpB,IAApB8vE,EAAUpyE,OACZhG,KAAKgkD,UAAUo0B,EAAU,IAAM9zE,EAEJ,GAApB8zE,EAAUpyE,OACjBhG,KAAKgkD,UAAUo0B,EAAU,IAAIA,EAAU,IAAM9zE,EAElB,GAApB8zE,EAAUpyE,SACjBhG,KAAKgkD,UAAUo0B,EAAU,IAAIA,EAAU,IAAIA,EAAU,IAAM9zE,KA6N3D,SAASzE,EAAQD,GAYrBA,EAAQ6nD,oBAAsB,WAE7BznD,KAAKu2E,aAAav2E,KAAKgkD,UAAU1C,WAAWC,iBAAiB,GAG7DvhD,KAAK2xD,eAI2B,GAA5B3xD,KAAKgkD,UAAUR,WACjBxjD,KAAKsqD,aAEPtqD,KAAKqQ,SASNzQ,EAAQ22E,aAAe,SAAS8B,EAAkBC,GAOhD,IANA,GAAIpvB,GAAgBlpD,KAAKqmD,YAAYrgD,OAEjCuyE,EAAY,GACZz4B,EAAQ,EAGLoJ,EAAgBmvB,GAA4BE,EAARz4B,GACrCA,EAAQ,GAAK,GACf9/C,KAAKw4E,oBAAmB,GACxBx4E,KAAKy4E,0BAGLz4E,KAAK04E,uBAEP14E,KAAKw4E,oBAAmB,GACxBtvB,EAAgBlpD,KAAKqmD,YAAYrgD,OACjC85C,GAAS,CAIPA,GAAQ,GAAmB,GAAdw4B,GACft4E,KAAK+0E,kBAEP/0E,KAAKwxD,2BASP5xD,EAAQ+4E,YAAc,SAAStwB,GAC7B,GAAIuwB,GAA2B54E,KAAKqnD,MACpC,IAAIgB,EAAKqY,YAAc1gE,KAAKgkD,UAAU1C,WAAWM,iBAAmB5hD,KAAK64E,kBAAkBxwB,KACrE,WAAlBroD,KAAKk3E,WAAqD,GAA3Bl3E,KAAKqmD,YAAYrgD,QAAc,CAEhEhG,KAAK84E,WAAWzwB,EAIhB,KAHA,GAAIvI,GAAQ,EAGJ9/C,KAAKqmD,YAAYrgD,OAAShG,KAAKgkD,UAAU1C,WAAWC,iBAA6B,GAARzB,GAC/E9/C,KAAK+4E,uBACLj5B,GAAS,MAKX9/C,MAAKg5E,mBAAmB3wB,GAAK,GAAM,GAGnCroD,KAAKwpD,uBACLxpD,KAAKwxD,0BACLxxD,KAAK2xD,cAIH3xD,MAAKqnD,QAAUuxB,GACjB54E,KAAKqQ,SAQTzQ,EAAQwvD,sBAAwB,WACW,GAArCpvD,KAAKgkD,UAAU1C,WAAWnyC,SAA8D,GAA3CnP,KAAKgkD,UAAU1C,WAAWiB,eACzEviD,KAAKi5E,eAAe,GAAE,GAAM,IAUhCr5E,EAAQ84E,qBAAuB,WAC7B14E,KAAKi5E,eAAe,IAAG,GAAM,IAS/Br5E,EAAQm5E,qBAAuB,WAC7B/4E,KAAKi5E,eAAe,GAAE,GAAM,IAgB9Br5E,EAAQq5E,eAAiB,SAASC,EAAcC,EAAUt2C,EAAMu2C,GAC9D,GAAIR,GAA2B54E,KAAKqnD,OAChCgyB,EAAgBr5E,KAAKqmD,YAAYrgD,OAEjCszE,EAAqBt5E,KAAK0mD,cAAgB1mD,KAAKuE,OAA0B,GAAjB20E,EACxDK,EAAsBv5E,KAAK0mD,cAAgB1mD,KAAKuE,OAA0B,GAAjB20E,CAGnC,IAAtBK,GACFv5E,KAAKw5E,kBAImB,GAAtBD,GAA+C,IAAjBL,EAGhCl5E,KAAKy5E,cAAc52C,IAES,GAArBy2C,GAA8C,GAAjBJ,KACvB,GAATr2C,EAGF7iC,KAAK05E,cAAcP,EAAUt2C,GAK7B7iC,KAAK05E,cAAcP,GAAW,IAGlCn5E,KAAKwpD,uBAGDxpD,KAAKqmD,YAAYrgD,QAAUqzE,GAAwC,GAAtBE,GAA+C,IAAjBL,IAC7El5E,KAAK25E,eAAe92C,GACpB7iC,KAAKwpD,yBAImB,GAAtB+vB,GAA+C,IAAjBL,KAChCl5E,KAAK45E,eACL55E,KAAKwpD,wBAGPxpD,KAAK0mD,cAAgB1mD,KAAKuE,MAG1BvE,KAAK2xD,eAGD3xD,KAAKqmD,YAAYrgD,OAASqzE,IAC5Br5E,KAAKmgE,gBAAkB,EAEvBngE,KAAKy4E,2BAGW,GAAdW,GAAsCvyE,SAAfuyE,IAErBp5E,KAAKqnD,QAAUuxB,GACjB54E,KAAKqQ,QAITrQ,KAAKwxD,2BAMP5xD,EAAQg6E,aAAe,WAErB,GAAIC,GAAkB75E,KAAK85E,mBACvBD,GAAkB75E,KAAKgkD,UAAU1C,WAAWI,gBAC9C1hD,KAAK+5E,sBAAsB,EAAI/5E,KAAKgkD,UAAU1C,WAAWI,eAAiBm4B,IAW9Ej6E,EAAQ+5E,eAAiB,SAAS92C,GAChC7iC,KAAKg6E,cACLh6E,KAAKi6E,mBAAmBp3C,GAAM,IAQhCjjC,EAAQ44E,mBAAqB,SAASY,GACpC,GAAIR,GAA2B54E,KAAKqnD,OAChCgyB,EAAgBr5E,KAAKqmD,YAAYrgD,MAErChG,MAAK25E,gBAAe,GAGpB35E,KAAKwpD,uBACLxpD,KAAK2xD,eAEL3xD,KAAKwxD,0BAGDxxD,KAAKqmD,YAAYrgD,QAAUqzE,IAC7Br5E,KAAKmgE,gBAAkB,IAGP,GAAdiZ,GAAsCvyE,SAAfuyE,IAErBp5E,KAAKqnD,QAAUuxB,GACjB54E,KAAKqQ,SAUXzQ,EAAQs6E,oBAAsB,WAC5B,GAA+C,GAA3Cl6E,KAAKgkD,UAAU1C,WAAWiB,cAC5B,IAAK,GAAIoG,KAAU3oD,MAAK6+C,MACtB,GAAI7+C,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrC,GAAIN,GAAOroD,KAAK6+C,MAAM8J,EACD,IAAjBN,EAAK4c,WACF5c,EAAK/0C,MAAQtT,KAAKuE,MAAQvE,KAAKgkD,UAAU1C,WAAWO,oBAAsB7hD,KAAKsgB,MAAMC,OAAOC,aAC9F6nC,EAAK90C,OAASvT,KAAKuE,MAAQvE,KAAKgkD,UAAU1C,WAAWO,oBAAsB7hD,KAAKsgB,MAAMC,OAAOsF,eAC9F7lB,KAAK24E,YAAYtwB,KAe7BzoD,EAAQ85E,cAAgB,SAASP,EAAUt2C,GACzC,IAAK,GAAIh9B,GAAI,EAAGA,EAAI7F,KAAKqmD,YAAYrgD,OAAQH,IAAK,CAChD,GAAIwiD,GAAOroD,KAAK6+C,MAAM7+C,KAAKqmD,YAAYxgD,GACvC7F,MAAKg5E,mBAAmB3wB,EAAK8wB,EAAUt2C,GACvC7iC,KAAKwxD,4BAeT5xD,EAAQo5E,mBAAqB,SAAS7uE,EAAYgvE,EAAWt2C,EAAOs3C,GAElE,GAAIhwE,EAAWu2D,YAAc,IACX75D,SAAZszE,IACFA,GAAU,GAIZhB,EAAYgB,GAAWhB,EAEnBhvE,EAAWs2D,eAAiBzgE,KAAKuE,OAAkB,GAATs+B,GAE5C,IAAK,GAAIu3C,KAAmBjwE,GAAWw2D,eACrC,GAAIx2D,EAAWw2D,eAAex6D,eAAei0E,GAAkB,CAC7D,GAAIC,GAAYlwE,EAAWw2D,eAAeyZ,EAI7B,IAATv3C,GACEw3C,EAAUla,gBAAkBh2D,EAAW02D,gBAAgB12D,EAAW02D,gBAAgB76D,OAAO,IACtFm0E,IACLn6E,KAAKs6E,sBAAsBnwE,EAAWiwE,EAAgBjB,EAAUt2C,EAAMs3C,GAIpEn6E,KAAK64E,kBAAkB1uE,IACzBnK,KAAKs6E,sBAAsBnwE,EAAWiwE,EAAgBjB,EAAUt2C,EAAMs3C,KAwBpFv6E,EAAQ06E,sBAAwB,SAASnwE,EAAYiwE,EAAiBjB,EAAWt2C,EAAOs3C,GACtF,GAAIE,GAAYlwE,EAAWw2D,eAAeyZ,EAG1C,IAAIC,EAAU5Z,eAAiBzgE,KAAKuE,OAAkB,GAATs+B,EAAe,CAE1D7iC,KAAK2pD,eAGL3pD,KAAK6+C,MAAMu7B,GAAmBC,EAG9Br6E,KAAKu6E,uBAAuBpwE,EAAWkwE,GAGvCr6E,KAAKw6E,wBAAwBrwE,EAAWkwE,GAGxCr6E,KAAKy6E,eAAetwE,GAGpBA,EAAW+E,QAAQ4vC,MAAQu7B,EAAUnrE,QAAQ4vC,KAC7C30C,EAAWu2D,aAAe2Z,EAAU3Z,YACpCv2D,EAAW+E,QAAQkwC,SAAW56C,KAAKL,IAAInE,KAAKgkD,UAAU1C,WAAWS,YAAa/hD,KAAKgkD,UAAUnF,MAAMO,SAAWp/C,KAAKgkD,UAAU1C,WAAWQ,oBAAoB33C,EAAWu2D,YAAY,IAGnL2Z,EAAU7nE,EAAIrI,EAAWqI,EAAIrI,EAAWo2D,iBAAmB,GAAM/7D,KAAKiB,UACtE40E,EAAU5nE,EAAItI,EAAWsI,EAAItI,EAAWo2D,iBAAmB,GAAM/7D,KAAKiB,gBAG/D0E,GAAWw2D,eAAeyZ,EAGjC,IAAIM,IAAgB,CACpB,KAAK,GAAIC,KAAexwE,GAAWw2D,eACjC,GAAIx2D,EAAWw2D,eAAex6D,eAAew0E,IACvCxwE,EAAWw2D,eAAega,GAAaxa,gBAAkBka,EAAUla,eAAgB,CACrFua,GAAgB,CAChB,OAKe,GAAjBA,GACFvwE,EAAW02D,gBAAgBljB,MAG7B39C,KAAK46E,uBAAuBP,GAI5BA,EAAUla,eAAiB,EAG3Bh2D,EAAWu4D,iBAGX1iE,KAAKqnD,QAAS,EAIC,GAAb8xB,GACFn5E,KAAKg5E,mBAAmBqB,EAAUlB,EAAUt2C,EAAMs3C,IAWtDv6E,EAAQg7E,uBAAyB,SAASvyB,GACxC,IAAK,GAAIxiD,GAAI,EAAGA,EAAIwiD,EAAKkK,aAAavsD,OAAQH,IAC5CwiD,EAAKkK,aAAa1sD,GAAG4vD,sBAczB71D,EAAQ65E,cAAgB,SAAS52C,GAClB,GAATA,EAC6C,GAA3C7iC,KAAKgkD,UAAU1C,WAAWiB,eAC5BviD,KAAK66E,sBAIP76E,KAAK86E,wBAUTl7E,EAAQi7E,oBAAsB,WAC5B,GAAIj7D,GAAGC,EAAG7Z,EACN+0E,EAAY/6E,KAAKgkD,UAAU1C,WAAWK,qBAAqB3hD,KAAKuE,KAIpE,KAAK,GAAIurD,KAAU9vD,MAAKggD,MACtB,GAAIhgD,KAAKggD,MAAM75C,eAAe2pD,GAAS,CACrC,GAAIY,GAAO1wD,KAAKggD,MAAM8P,EACtB,IAAIY,EAAKC,WACHD,EAAKwG,MAAQxG,EAAKyG,SACpBv3C,EAAM8wC,EAAKtmC,GAAG5X,EAAIk+C,EAAKvmC,KAAK3X,EAC5BqN,EAAM6wC,EAAKtmC,GAAG3X,EAAIi+C,EAAKvmC,KAAK1X,EAC5BzM,EAASxB,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAGrBk7D,EAAT/0E,GAAoB,CAEtB,GAAImE,GAAaumD,EAAKvmC,KAClBkwD,EAAY3pB,EAAKtmC,EACjBsmC,GAAKtmC,GAAGlb,QAAQ4vC,KAAO4R,EAAKvmC,KAAKjb,QAAQ4vC,OAC3C30C,EAAaumD,EAAKtmC,GAClBiwD,EAAY3pB,EAAKvmC,MAGkB,GAAjCkwD,EAAU9nB,aAAavsD,OACzBhG,KAAKg7E,cAAc7wE,EAAWkwE,GAAU,GAEC,GAAlClwE,EAAWooD,aAAavsD,QAC/BhG,KAAKg7E,cAAcX,EAAUlwE,GAAW,MAetDvK,EAAQk7E,qBAAuB,WAC7B,IAAK,GAAInyB,KAAU3oD,MAAK6+C,MAEtB,GAAI7+C,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrC,GAAI0xB,GAAYr6E,KAAK6+C,MAAM8J,EAG3B,IAAqC,GAAjC0xB,EAAU9nB,aAAavsD,OAAa,CACtC,GAAI0qD,GAAO2pB,EAAU9nB,aAAa,GAC9BpoD,EAAcumD,EAAKwG,MAAQmjB,EAAUh6E,GAAML,KAAK6+C,MAAM6R,EAAKyG,QAAUn3D,KAAK6+C,MAAM6R,EAAKwG,KAErFmjB,GAAUh6E,IAAM8J,EAAW9J,KACzB8J,EAAW+E,QAAQ4vC,KAAOu7B,EAAUnrE,QAAQ4vC,KAC9C9+C,KAAKg7E,cAAc7wE,EAAWkwE,GAAU,GAGxCr6E,KAAKg7E,cAAcX,EAAUlwE,GAAW,OAgBpDvK,EAAQq7E,4BAA8B,SAAS5yB,GAG7C,IAAK,GAFD6yB,GAAoB,GACpBC,EAAwB,KACnBt1E,EAAI,EAAGA,EAAIwiD,EAAKkK,aAAavsD,OAAQH,IAC5C,GAA6BgB,SAAzBwhD,EAAKkK,aAAa1sD,GAAkB,CACtC,GAAIu1E,GAAY,IACZ/yB,GAAKkK,aAAa1sD,GAAGsxD,QAAU9O,EAAKhoD,GACtC+6E,EAAY/yB,EAAKkK,aAAa1sD,GAAGskB,KAE1Bk+B,EAAKkK,aAAa1sD,GAAGqxD,MAAQ7O,EAAKhoD,KACzC+6E,EAAY/yB,EAAKkK,aAAa1sD,GAAGukB,IAIlB,MAAbgxD,GAAqBF,EAAoBE,EAAUva,gBAAgB76D,SACrEk1E,EAAoBE,EAAUva,gBAAgB76D,OAC9Cm1E,EAAwBC,GAKb,MAAbA,GAAkDv0E,SAA7B7G,KAAK6+C,MAAMu8B,EAAU/6E,KAC5CL,KAAKg7E,cAAcI,EAAW/yB,GAAM,IAYxCzoD,EAAQq6E,mBAAqB,SAASp3C,EAAOw4C,GAE3C,IAAK,GAAI1yB,KAAU3oD,MAAK6+C,MAElB7+C,KAAK6+C,MAAM14C,eAAewiD,IAC5B3oD,KAAKs7E,oBAAoBt7E,KAAK6+C,MAAM8J,GAAQ9lB,EAAMw4C,IAcxDz7E,EAAQ07E,oBAAsB,SAASC,EAAS14C,EAAOw4C,EAAWG,GAShE,GAR6B30E,SAAzB20E,IACFA,EAAuB,GAOpBD,EAAQhpB,aAAavsD,QAAUhG,KAAK6vE,cAA6B,GAAbwL,GACtDE,EAAQhpB,aAAavsD,QAAUhG,KAAK6vE,cAA6B,GAAbwL,EAAoB,CASzE,IAAK,GAPDz7D,GAAGC,EAAG7Z,EACN+0E,EAAY/6E,KAAKgkD,UAAU1C,WAAWK,qBAAqB3hD,KAAKuE,MAChEk3E,GAAe,EAGfC,KACAC,EAAuBJ,EAAQhpB,aAAavsD,OACvCymB,EAAI,EAAOkvD,EAAJlvD,EAA0BA,IACxCivD,EAAanzE,KAAKgzE,EAAQhpB,aAAa9lC,GAAGpsB,GAK5C,IAAa,GAATwiC,EAEF,IADA44C,GAAe,EACVhvD,EAAI,EAAOkvD,EAAJlvD,EAA0BA,IAAK,CACzC,GAAIikC,GAAO1wD,KAAKggD,MAAM07B,EAAajvD,GACnC,IAAa5lB,SAAT6pD,GACEA,EAAKC,WACHD,EAAKwG,MAAQxG,EAAKyG,SACpBv3C,EAAM8wC,EAAKtmC,GAAG5X,EAAIk+C,EAAKvmC,KAAK3X,EAC5BqN,EAAM6wC,EAAKtmC,GAAG3X,EAAIi+C,EAAKvmC,KAAK1X,EAC5BzM,EAASxB,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAErBk7D,EAAT/0E,GAAoB,CACtBy1E,GAAe,CACf,QASZ,IAAM54C,GAAS44C,GAAiB54C,EAAO,CACrC,GAAI+4C,MACAC,IAEJ,KAAKpvD,EAAI,EAAOkvD,EAAJlvD,EAA0BA,IAAK,CACzCikC,EAAO1wD,KAAKggD,MAAM07B,EAAajvD,GAC/B,IAAI4tD,GAAYr6E,KAAK6+C,MAAO6R,EAAKyG,QAAUokB,EAAQl7E,GAAMqwD,EAAKwG,KAAOxG,EAAKyG,OACxCtwD,UAA9Bg1E,EAAYxB,EAAUh6E,MACxBw7E,EAAYxB,EAAUh6E,KAAM,EAC5Bu7E,EAASrzE,KAAK8xE,IAIlB,IAAK5tD,EAAI,EAAGA,EAAImvD,EAAS51E,OAAQymB,IAAK,CACpC,GAAI4tD,GAAYuB,EAASnvD,EAEpB4tD,GAAU9nB,aAAavsD,QAAWhG,KAAK6vE,aAAe2L,GACxDnB,EAAUh6E,IAAMk7E,EAAQl7E,IACzBL,KAAKg7E,cAAcO,EAAQlB,EAAUx3C,OAsB/CjjC,EAAQo7E,cAAgB,SAAS7wE,EAAYkwE,EAAWx3C,GAEtD14B,EAAWw2D,eAAe0Z,EAAUh6E,IAAMg6E,CAG1C,KAAK,GAAIx0E,GAAI,EAAGA,EAAIw0E,EAAU9nB,aAAavsD,OAAQH,IAAK,CACtD,GAAI6qD,GAAO2pB,EAAU9nB,aAAa1sD,EAC9B6qD,GAAKwG,MAAQ/sD,EAAW9J,IAAMqwD,EAAKyG,QAAUhtD,EAAW9J,GAE1DL,KAAK87E,qBAAqB3xE,EAAWkwE,EAAU3pB,GAI/C1wD,KAAK+7E,sBAAsB5xE,EAAWkwE,EAAU3pB,GAIpD2pB,EAAU9nB,gBAGVvyD,KAAKg8E,8BAA8B7xE,EAAWkwE,SAIvCr6E,MAAK6+C,MAAMw7B,EAAUh6E,GAG5B,IAAI47E,GAAa9xE,EAAW+E,QAAQ4vC,IACpCu7B,GAAUla,eAAiBngE,KAAKmgE,eAChCh2D,EAAW+E,QAAQ4vC,MAAQu7B,EAAUnrE,QAAQ4vC,KAC7C30C,EAAWu2D,aAAe2Z,EAAU3Z,YACpCv2D,EAAW+E,QAAQkwC,SAAW56C,KAAKL,IAAInE,KAAKgkD,UAAU1C,WAAWS,YAAa/hD,KAAKgkD,UAAUnF,MAAMO,SAAWp/C,KAAKgkD,UAAU1C,WAAWQ,mBAAmB33C,EAAWu2D,aAGlKv2D,EAAW02D,gBAAgB12D,EAAW02D,gBAAgB76D,OAAS,IAAMhG,KAAKmgE,gBAC5Eh2D,EAAW02D,gBAAgBt4D,KAAKvI,KAAKmgE,gBAKrCh2D,EAAWs2D,eADA,GAAT59B,EAC0B,EAGA7iC,KAAKuE,MAInC4F,EAAWu4D,iBAGXv4D,EAAWw2D,eAAe0Z,EAAUh6E,IAAIogE,eAAiBt2D,EAAWs2D,eAGpE4Z,EAAUnV,gBAGV/6D,EAAWg7D,eAAe8W,GAG1Bj8E,KAAKqnD,QAAS,GAYhBznD,EAAQk8E,qBAAuB,SAAS3xE,EAAYkwE,EAAW3pB,GAEb7pD,SAA5CsD,EAAWy2D,eAAeyZ,EAAUh6E,MACtC8J,EAAWy2D,eAAeyZ,EAAUh6E,QAGtC8J,EAAWy2D,eAAeyZ,EAAUh6E,IAAIkI,KAAKmoD,SAGtC1wD,MAAKggD,MAAM0Q,EAAKrwD,GAGvB,KAAK,GAAIwF,GAAI,EAAGA,EAAIsE,EAAWooD,aAAavsD,OAAQH,IAClD,GAAIsE,EAAWooD,aAAa1sD,GAAGxF,IAAMqwD,EAAKrwD,GAAI,CAC5C8J,EAAWooD,aAAa5pD,OAAO9C,EAAE,EACjC,SAcNjG,EAAQm8E,sBAAwB,SAAS5xE,EAAYkwE,EAAW3pB,GAE1DA,EAAKwG,MAAQxG,EAAKyG,OACpBn3D,KAAK87E,qBAAqB3xE,EAAYkwE,EAAW3pB,IAG7CA,EAAKwG,MAAQmjB,EAAUh6E,IACzBqwD,EAAKqH,aAAaxvD,KAAK8xE,EAAUh6E,IACjCqwD,EAAKtmC,GAAKjgB,EACVumD,EAAKwG,KAAO/sD,EAAW9J,KAGvBqwD,EAAKoH,eAAevvD,KAAK8xE,EAAUh6E,IACnCqwD,EAAKvmC,KAAOhgB,EACZumD,EAAKyG,OAAShtD,EAAW9J,IAG3BL,KAAKk8E,oBAAoB/xE,EAAWkwE,EAAU3pB,KAalD9wD,EAAQo8E,8BAAgC,SAAS7xE,EAAYkwE,GAE3D,IAAK,GAAIx0E,GAAI,EAAGA,EAAIsE,EAAWooD,aAAavsD,OAAQH,IAAK,CACvD,GAAI6qD,GAAOvmD,EAAWooD,aAAa1sD,EAE/B6qD,GAAKwG,MAAQxG,EAAKyG,QACpBn3D,KAAK87E,qBAAqB3xE,EAAYkwE,EAAW3pB,KAcvD9wD,EAAQs8E,oBAAsB,SAAS/xE,EAAYkwE,EAAW3pB,GAGtDvmD,EAAWm1D,cAAcn5D,eAAek0E,EAAUh6E,MACtD8J,EAAWm1D,cAAc+a,EAAUh6E,QAErC8J,EAAWm1D,cAAc+a,EAAUh6E,IAAIkI,KAAKmoD,GAG5CvmD,EAAWooD,aAAahqD,KAAKmoD,IAY/B9wD,EAAQ46E,wBAA0B,SAASrwE,EAAYkwE,GACrD,GAAIlwE,EAAWm1D,cAAcn5D,eAAek0E,EAAUh6E,IAAK,CACzD,IAAK,GAAIwF,GAAI,EAAGA,EAAIsE,EAAWm1D,cAAc+a,EAAUh6E,IAAI2F,OAAQH,IAAK,CACtE,GAAI6qD,GAAOvmD,EAAWm1D,cAAc+a,EAAUh6E,IAAIwF,EAC9C6qD,GAAKoH,eAAepH,EAAKoH,eAAe9xD,OAAO,IAAMq0E,EAAUh6E,IACjEqwD,EAAKoH,eAAena,MACpB+S,EAAKyG,OAASkjB,EAAUh6E,GACxBqwD,EAAKvmC,KAAOkwD,IAGZ3pB,EAAKqH,aAAapa,MAClB+S,EAAKwG,KAAOmjB,EAAUh6E,GACtBqwD,EAAKtmC,GAAKiwD,GAIZA,EAAU9nB,aAAahqD,KAAKmoD,EAG5B,KAAK,GAAIjkC,GAAI,EAAGA,EAAItiB,EAAWooD,aAAavsD,OAAQymB,IAClD,GAAItiB,EAAWooD,aAAa9lC,GAAGpsB,IAAMqwD,EAAKrwD,GAAI,CAC5C8J,EAAWooD,aAAa5pD,OAAO8jB,EAAE,EACjC,cAKCtiB,GAAWm1D,cAAc+a,EAAUh6E,MAa9CT,EAAQ66E,eAAiB,SAAStwE,GAEhC,IAAK,GADDooD,MACK1sD,EAAI,EAAGA,EAAIsE,EAAWooD,aAAavsD,OAAQH,IAAK,CACvD,GAAI6qD,GAAOvmD,EAAWooD,aAAa1sD,IAC/BsE,EAAW9J,IAAMqwD,EAAKwG,MAAQ/sD,EAAW9J,IAAMqwD,EAAKyG,SACtD5E,EAAahqD,KAAKmoD,GAGtBvmD,EAAWooD,aAAeA,GAY5B3yD,EAAQ26E,uBAAyB,SAASpwE,EAAYkwE,GACpD,IAAK,GAAIx0E,GAAI,EAAGA,EAAIsE,EAAWy2D,eAAeyZ,EAAUh6E,IAAI2F,OAAQH,IAAK,CACvE,GAAI6qD,GAAOvmD,EAAWy2D,eAAeyZ,EAAUh6E,IAAIwF,EAGnD7F,MAAKggD,MAAM0Q,EAAKrwD,IAAMqwD,EAGtB2pB,EAAU9nB,aAAahqD,KAAKmoD,GAC5BvmD,EAAWooD,aAAahqD,KAAKmoD,SAGxBvmD,GAAWy2D,eAAeyZ,EAAUh6E,KAa7CT,EAAQ+xD,aAAe,WACrB,GAAIhJ,EAEJ,KAAKA,IAAU3oD,MAAK6+C,MAClB,GAAI7+C,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrC,GAAIN,GAAOroD,KAAK6+C,MAAM8J,EAClBN,GAAKqY,YAAc,IACrBrY,EAAKr1C,MAAQ,IAAI+B,OAAOrQ,OAAO2jD,EAAKqY,aAAa,MAMvD,IAAK/X,IAAU3oD,MAAK6+C,MACd7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5BN,EAAOroD,KAAK6+C,MAAM8J,GACM,GAApBN,EAAKqY,cAELrY,EAAKr1C,MADoBnM,SAAvBwhD,EAAKyY,cACMzY,EAAKyY,cAGLp8D,OAAO2jD,EAAKhoD,OAuBnCT,EAAQ64E,uBAAyB,WAC/B,GAGI9vB,GAHAwzB,EAAW,EACXC,EAAW,IACXC,EAAe,CAInB,KAAK1zB,IAAU3oD,MAAK6+C,MACd7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5B0zB,EAAer8E,KAAK6+C,MAAM8J,GAAQkY,gBAAgB76D,OACnCq2E,EAAXF,IAA0BA,EAAWE,GACrCD,EAAWC,IAAeD,EAAWC,GAI7C,IAAIF,EAAWC,EAAWp8E,KAAKgkD,UAAU1C,WAAWgB,uBAAwB,CAC1E,GAAI+2B,GAAgBr5E,KAAKqmD,YAAYrgD,OACjCs2E,EAAcH,EAAWn8E,KAAKgkD,UAAU1C,WAAWgB,sBAEvD,KAAKqG,IAAU3oD,MAAK6+C,MACd7+C,KAAK6+C,MAAM14C,eAAewiD,IACxB3oD,KAAK6+C,MAAM8J,GAAQkY,gBAAgB76D,OAASs2E,GAC9Ct8E,KAAKi7E,4BAA4Bj7E,KAAK6+C,MAAM8J,GAIlD3oD,MAAKwpD,uBAEDxpD,KAAKqmD,YAAYrgD,QAAUqzE,IAC7Br5E,KAAKmgE,gBAAkB,KAe7BvgE,EAAQi5E,kBAAoB,SAASxwB,GACnC,MACE7jD,MAAKknB,IAAI28B,EAAK71C,EAAIxS,KAAKymD,WAAWj0C,IAAMxS,KAAKgkD,UAAU1C,WAAWe,kBAAkBriD,KAAKuE,OAEzFC,KAAKknB,IAAI28B,EAAK51C,EAAIzS,KAAKymD,WAAWh0C,IAAMzS,KAAKgkD,UAAU1C,WAAWe,kBAAkBriD,KAAKuE,OAU7F3E,EAAQm1E,gBAAkB,WACxB,IAAK,GAAIlvE,GAAI,EAAGA,EAAI7F,KAAKqmD,YAAYrgD,OAAQH,IAAK,CAChD,GAAIwiD,GAAOroD,KAAK6+C,MAAM7+C,KAAKqmD,YAAYxgD,GACvC,IAAoB,GAAfwiD,EAAK2F,QAAkC,GAAf3F,EAAK4F,OAAkB,CAClD,GAAI3hC,GAAS,EAAStsB,KAAKqmD,YAAYrgD,OAASxB,KAAKL,IAAI,IAAIkkD,EAAKn5C,QAAQ4vC,MACtEyS,EAAQ,EAAI/sD,KAAKgoB,GAAKhoB,KAAKiB,QACZ,IAAf4iD,EAAK2F,SAAkB3F,EAAK71C,EAAI8Z,EAAS9nB,KAAK+a,IAAIgyC,IACnC,GAAflJ,EAAK4F,SAAkB5F,EAAK51C,EAAI6Z,EAAS9nB,KAAK4a,IAAImyC,IACtDvxD,KAAK46E,uBAAuBvyB,MAYlCzoD,EAAQo6E,YAAc,WAMpB,IAAK,GALDuC,GAAU,EACVC,EAAiB,EACjBC,EAAa,EACbC,EAAa,EAER72E,EAAI,EAAGA,EAAI7F,KAAKqmD,YAAYrgD,OAAQH,IAAK,CAEhD,GAAIwiD,GAAOroD,KAAK6+C,MAAM7+C,KAAKqmD,YAAYxgD,GACnCwiD,GAAKkK,aAAavsD,OAAS02E,IAC7BA,EAAar0B,EAAKkK,aAAavsD,QAEjCu2E,GAAWl0B,EAAKkK,aAAavsD,OAC7Bw2E,GAAkBh4E,KAAKkwB,IAAI2zB,EAAKkK,aAAavsD,OAAO,GACpDy2E,GAAc,EAEhBF,GAAoBE,EACpBD,GAAkCC,CAElC,IAAIE,GAAWH,EAAiBh4E,KAAKkwB,IAAI6nD,EAAQ,GAE7CK,EAAoBp4E,KAAKgsB,KAAKmsD,EAElC38E,MAAK6vE,aAAerrE,KAAKgB,MAAM+2E,EAAU,EAAEK,GAGvC58E,KAAK6vE,aAAe6M,IACtB18E,KAAK6vE,aAAe6M,IAexB98E,EAAQm6E,sBAAwB,SAAS8C,GACvC78E,KAAK6vE,aAAe,CACpB,IAAIiN,GAAet4E,KAAKgB,MAAMxF,KAAKqmD,YAAYrgD,OAAS62E,EACxD,KAAK,GAAIl0B,KAAU3oD,MAAK6+C,MAClB7+C,KAAK6+C,MAAM14C,eAAewiD,IACkB,GAA1C3oD,KAAK6+C,MAAM8J,GAAQ4J,aAAavsD,QAC9B82E,EAAe,IACjB98E,KAAKs7E,oBAAoBt7E,KAAK6+C,MAAM8J,IAAQ,GAAK,EAAK,GACtDm0B,GAAgB,IAa1Bl9E,EAAQk6E,kBAAoB,WAC1B,GAAIiD,GAAS,EACT14E,EAAQ,CACZ,KAAK,GAAIskD,KAAU3oD,MAAK6+C,MAClB7+C,KAAK6+C,MAAM14C,eAAewiD,KACkB,GAA1C3oD,KAAK6+C,MAAM8J,GAAQ4J,aAAavsD,SAClC+2E,GAAU,GAEZ14E,GAAS,EAGb,OAAO04E,GAAO14E,IAMZ,SAASxE,EAAQD,EAASM,GAE9B,GAAIS,GAAOT,EAAoB,GAC3BqD,EAAOrD,EAAoB,GAgB/BN,GAAQwqD,iBAAmB,WACzBpqD,KAAKsyD,QAAgB,OAAEtyD,KAAKk3E,WAAWr4B,MAAQ7+C,KAAK6+C,MACpD7+C,KAAKsyD,QAAgB,OAAEtyD,KAAKk3E,WAAWl3B,MAAQhgD,KAAKggD,MACpDhgD,KAAKsyD,QAAgB,OAAEtyD,KAAKk3E,WAAW7wB,YAAcrmD,KAAKqmD,aAa5DzmD,EAAQo9E,gBAAkB,SAASC,EAAUC,GACxBr2E,SAAfq2E,GAA0C,UAAdA,EAC9Bl9E,KAAKm9E,sBAAsBF,GAG3Bj9E,KAAKo9E,sBAAsBH,IAY/Br9E,EAAQu9E,sBAAwB,SAASF,GACvCj9E,KAAKqmD,YAAcrmD,KAAKsyD,QAAgB,OAAE2qB,GAAuB,YACjEj9E,KAAK6+C,MAAc7+C,KAAKsyD,QAAgB,OAAE2qB,GAAiB,MAC3Dj9E,KAAKggD,MAAchgD,KAAKsyD,QAAgB,OAAE2qB,GAAiB,OAU7Dr9E,EAAQy9E,uBAAyB,WAC/Br9E,KAAKqmD,YAAcrmD,KAAKsyD,QAAiB,QAAe,YACxDtyD,KAAK6+C,MAAc7+C,KAAKsyD,QAAiB,QAAS,MAClDtyD,KAAKggD,MAAchgD,KAAKsyD,QAAiB,QAAS,OAWpD1yD,EAAQw9E,sBAAwB,SAASH,GACvCj9E,KAAKqmD,YAAcrmD,KAAKsyD,QAAgB,OAAE2qB,GAAuB,YACjEj9E,KAAK6+C,MAAc7+C,KAAKsyD,QAAgB,OAAE2qB,GAAiB,MAC3Dj9E,KAAKggD,MAAchgD,KAAKsyD,QAAgB,OAAE2qB,GAAiB,OAU7Dr9E,EAAQ09E,kBAAoB,WAC1Bt9E,KAAKg9E,gBAAgBh9E,KAAKk3E,YAU5Bt3E,EAAQs3E,QAAU,WAChB,MAAOl3E,MAAK8vE,aAAa9vE,KAAK8vE,aAAa9pE,OAAO,IAUpDpG,EAAQ29E,gBAAkB,WACxB,GAAIv9E,KAAK8vE,aAAa9pE,OAAS,EAC7B,MAAOhG,MAAK8vE,aAAa9vE,KAAK8vE,aAAa9pE,OAAO,EAGlD,MAAM,IAAIU,WAAU,iEAaxB9G,EAAQ49E,iBAAmB,SAASC,GAClCz9E,KAAK8vE,aAAavnE,KAAKk1E,IAUzB79E,EAAQ89E,kBAAoB,WAC1B19E,KAAK8vE,aAAanyB,OAWpB/9C,EAAQ+9E,iBAAmB,SAASF,GAElCz9E,KAAKsyD,QAAgB,OAAEmrB,IAAU5+B,SACAmB,SACAqG,eACAoa,eAAkBzgE,KAAKuE,MACvBwrE,YAAelpE,QAGhD7G,KAAKsyD,QAAgB,OAAEmrB,GAAoB,YAAI,GAAIl6E,IAC9ClD,GAAGo9E,EACFlyE,OACEsB,WAAY,UACZC,OAAQ,iBAEJ9M,KAAKgkD,WACjBhkD,KAAKsyD,QAAgB,OAAEmrB,GAAoB,YAAE/c,YAAc,GAW7D9gE,EAAQg+E,oBAAsB,SAASX,SAC9Bj9E,MAAKsyD,QAAgB,OAAE2qB,IAWhCr9E,EAAQi+E,oBAAsB,SAASZ,SAC9Bj9E,MAAKsyD,QAAgB,OAAE2qB,IAWhCr9E,EAAQk+E,cAAgB,SAASb,GAE/Bj9E,KAAKsyD,QAAgB,OAAE2qB,GAAYj9E,KAAKsyD,QAAgB,OAAE2qB,GAG1Dj9E,KAAK49E,oBAAoBX,IAW3Br9E,EAAQm+E,gBAAkB,SAASd,GAEjCj9E,KAAKsyD,QAAgB,OAAE2qB,GAAYj9E,KAAKsyD,QAAgB,OAAE2qB,GAG1Dj9E,KAAK69E,oBAAoBZ,IAa3Br9E,EAAQo+E,qBAAuB,SAASf,GAEtC,IAAK,GAAIt0B,KAAU3oD,MAAK6+C,MAClB7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5B3oD,KAAKsyD,QAAgB,OAAE2qB,GAAiB,MAAEt0B,GAAU3oD,KAAK6+C,MAAM8J,GAKnE,KAAK,GAAImH,KAAU9vD,MAAKggD,MAClBhgD,KAAKggD,MAAM75C,eAAe2pD,KAC5B9vD,KAAKsyD,QAAgB,OAAE2qB,GAAiB,MAAEntB,GAAU9vD,KAAKggD,MAAM8P,GAKnE,KAAK,GAAIjqD,GAAI,EAAGA,EAAI7F,KAAKqmD,YAAYrgD,OAAQH,IAC3C7F,KAAKsyD,QAAgB,OAAE2qB,GAAuB,YAAE10E,KAAKvI,KAAKqmD,YAAYxgD,KAW1EjG,EAAQq+E,6BAA+B,WACrCj+E,KAAKu2E,aAAa,GAAE,IAUtB32E,EAAQk5E,WAAa,SAASzwB,GAE5B,GAAI61B,GAASl+E,KAAKk3E,gBAWXl3E,MAAK6+C,MAAMwJ,EAAKhoD,GAEvB,IAAI89E,GAAmBx9E,EAAK2E,YAG5BtF,MAAK89E,cAAcI,GAGnBl+E,KAAK29E,iBAAiBQ,GAGtBn+E,KAAKw9E,iBAAiBW,GAGtBn+E,KAAKg9E,gBAAgBh9E,KAAKk3E,WAG1Bl3E,KAAK6+C,MAAMwJ,EAAKhoD,IAAMgoD,GAUxBzoD,EAAQ45E,gBAAkB,WAExB,GAAI0E,GAASl+E,KAAKk3E,SAGlB,IAAc,WAAVgH,IAC8B,GAA3Bl+E,KAAKqmD,YAAYrgD,QACpBhG,KAAKsyD,QAAgB,OAAE4rB,GAAqB,YAAE5qE,MAAMtT,KAAKuE,MAAQvE,KAAKgkD,UAAU1C,WAAWO,oBAAsB7hD,KAAKsgB,MAAMC,OAAOC,aACnIxgB,KAAKsyD,QAAgB,OAAE4rB,GAAqB,YAAE3qE,OAAOvT,KAAKuE,MAAQvE,KAAKgkD,UAAU1C,WAAWO,oBAAsB7hD,KAAKsgB,MAAMC,OAAOsF,cAAe,CACnJ,GAAIu4D,GAAiBp+E,KAAKu9E,iBAG1Bv9E;KAAKi+E,+BAILj+E,KAAKg+E,qBAAqBI,GAI1Bp+E,KAAK49E,oBAAoBM,GAGzBl+E,KAAK+9E,gBAAgBK,GAGrBp+E,KAAKg9E,gBAAgBoB,GAGrBp+E,KAAK09E,oBAGL19E,KAAKwpD,uBAGLxpD,KAAKwxD,4BAeX5xD,EAAQ40D,sBAAwB,SAAS6pB,EAAYC,GACnD,GAAIC,KACJ,IAAiB13E,SAAby3E,EACF,IAAK,GAAIJ,KAAUl+E,MAAKsyD,QAAgB,OAClCtyD,KAAKsyD,QAAgB,OAAEnsD,eAAe+3E,KAExCl+E,KAAKm9E,sBAAsBe,GAC3BK,EAAah2E,KAAMvI,KAAKq+E,WAK5B,KAAK,GAAIH,KAAUl+E,MAAKsyD,QAAgB,OACtC,GAAItyD,KAAKsyD,QAAgB,OAAEnsD,eAAe+3E,GAAS,CAEjDl+E,KAAKm9E,sBAAsBe,EAC3B,IAAIhkE,GAAO5T,MAAM4N,UAAUvL,OAAOpI,KAAKwF,UAAW,EAEhDw4E,GAAah2E,KADX2R,EAAKlU,OAAS,EACGhG,KAAKq+E,GAAankE,EAAK,GAAGA,EAAK,IAG/Bla,KAAKq+E,GAAaC,IAO7C,MADAt+E,MAAKs9E,oBACEiB,GAaT3+E,EAAQ60D,mBAAqB,SAAS4pB,EAAYC,GAChD,GAAIC,IAAe,CACnB,IAAiB13E,SAAby3E,EACFt+E,KAAKq9E,yBACLkB,EAAev+E,KAAKq+E,SAEjB,CACHr+E,KAAKq9E,wBACL,IAAInjE,GAAO5T,MAAM4N,UAAUvL,OAAOpI,KAAKwF,UAAW,EAEhDw4E,GADErkE,EAAKlU,OAAS,EACDhG,KAAKq+E,GAAankE,EAAK,GAAGA,EAAK,IAG/Bla,KAAKq+E,GAAaC,GAKrC,MADAt+E,MAAKs9E,oBACEiB,GAaT3+E,EAAQ4+E,sBAAwB,SAASH,EAAYC,GACnD,GAAiBz3E,SAAby3E,EACF,IAAK,GAAIJ,KAAUl+E,MAAKsyD,QAAgB,OAClCtyD,KAAKsyD,QAAgB,OAAEnsD,eAAe+3E,KAExCl+E,KAAKo9E,sBAAsBc,GAC3Bl+E,KAAKq+E,UAKT,KAAK,GAAIH,KAAUl+E,MAAKsyD,QAAgB,OACtC,GAAItyD,KAAKsyD,QAAgB,OAAEnsD,eAAe+3E,GAAS,CAEjDl+E,KAAKo9E,sBAAsBc,EAC3B,IAAIhkE,GAAO5T,MAAM4N,UAAUvL,OAAOpI,KAAKwF,UAAW,EAC9CmU,GAAKlU,OAAS,EAChBhG,KAAKq+E,GAAankE,EAAK,GAAGA,EAAK,IAG/Bla,KAAKq+E,GAAaC,GAK1Bt+E,KAAKs9E,qBAaP19E,EAAQkzD,gBAAkB,SAASurB,EAAYC,GAC7C,GAAIpkE,GAAO5T,MAAM4N,UAAUvL,OAAOpI,KAAKwF,UAAW,EACjCc,UAAby3E,GACFt+E,KAAKw0D,sBAAsB6pB,GAC3Br+E,KAAKw+E,sBAAsBH,IAGvBnkE,EAAKlU,OAAS,GAChBhG,KAAKw0D,sBAAsB6pB,EAAYnkE,EAAK,GAAGA,EAAK,IACpDla,KAAKw+E,sBAAsBH,EAAYnkE,EAAK,GAAGA,EAAK,MAGpDla,KAAKw0D,sBAAsB6pB,EAAYC,GACvCt+E,KAAKw+E,sBAAsBH,EAAYC,KAY7C1+E,EAAQ6pD,oBAAsB,WAC5B,GAAIy0B,GAASl+E,KAAKk3E,SAClBl3E,MAAKsyD,QAAgB,OAAE4rB,GAAqB,eAC5Cl+E,KAAKqmD,YAAcrmD,KAAKsyD,QAAgB,OAAE4rB,GAAqB,aAWjEt+E,EAAQ6+E,iBAAmB,SAAS12D,EAAIm1D,GACtC,GAAsD70B,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,KAAK,GAAIy1B,KAAUl+E,MAAKsyD,QAAQ4qB,GAC9B,GAAIl9E,KAAKsyD,QAAQ4qB,GAAY/2E,eAAe+3E,IACcr3E,SAApD7G,KAAKsyD,QAAQ4qB,GAAYgB,GAAqB,YAAiB,CAEjEl+E,KAAKg9E,gBAAgBkB,EAAOhB,GAE5B50B,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAC5C,KAAK,GAAIE,KAAU3oD,MAAK6+C,MAClB7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5BN,EAAOroD,KAAK6+C,MAAM8J,GAClBN,EAAK4R,OAAOlyC,GACRygC,EAAOH,EAAK71C,EAAI,GAAM61C,EAAK/0C,QAAQk1C,EAAOH,EAAK71C,EAAI,GAAM61C,EAAK/0C,OAC9Dm1C,EAAOJ,EAAK71C,EAAI,GAAM61C,EAAK/0C,QAAQm1C,EAAOJ,EAAK71C,EAAI,GAAM61C,EAAK/0C,OAC9Dg1C,EAAOD,EAAK51C,EAAI,GAAM41C,EAAK90C,SAAS+0C,EAAOD,EAAK51C,EAAI,GAAM41C,EAAK90C,QAC/Dg1C,EAAOF,EAAK51C,EAAI,GAAM41C,EAAK90C,SAASg1C,EAAOF,EAAK51C,EAAI,GAAM41C,EAAK90C,QAGvE80C,GAAOroD,KAAKsyD,QAAQ4qB,GAAYgB,GAAqB,YACrD71B,EAAK71C,EAAI,IAAOi2C,EAAOD,GACvBH,EAAK51C,EAAI,IAAO81C,EAAOD,GACvBD,EAAK/0C,MAAQ,GAAK+0C,EAAK71C,EAAIg2C,GAC3BH,EAAK90C,OAAS,GAAK80C,EAAK51C,EAAI61C,GAC5BD,EAAKn5C,QAAQod,OAAS9nB,KAAKgsB,KAAKhsB,KAAKkwB,IAAI,GAAI2zB,EAAK/0C,MAAM,GAAK9O,KAAKkwB,IAAI,GAAI2zB,EAAK90C,OAAO,IACtF80C,EAAKpjB,SAASjlC,KAAKuE,OACnB8jD,EAAKkZ,YAAYx5C,KAMzBnoB,EAAQ8+E,oBAAsB,SAAS32D,GACrC/nB,KAAKy+E,iBAAiB12D,EAAI,UAC1B/nB,KAAKy+E,iBAAiB12D,EAAI,UAC1B/nB,KAAKs9E,sBAMH,SAASz9E,EAAQD,EAASM,GAE9B,GAAIqD,GAAOrD,EAAoB,GAS/BN,GAAQ++E,yBAA2B,SAAS36E,EAAQssD,GAClD,GAAIzR,GAAQ7+C,KAAK6+C,KACjB,KAAK,GAAI8J,KAAU9J,GACbA,EAAM14C,eAAewiD,IACnB9J,EAAM8J,GAAQ4H,kBAAkBvsD,IAClCssD,EAAiB/nD,KAAKogD,IAY9B/oD,EAAQg/E,4BAA8B,SAAU56E,GAC9C,GAAIssD,KAEJ,OADAtwD,MAAKw0D,sBAAsB,2BAA2BxwD,EAAOssD,GACtDA,GAWT1wD,EAAQi/E,yBAA2B,SAAS98C,GAC1C,GAAIvvB,GAAIxS,KAAKouD,qBAAqBrsB,EAAQvvB,GACtCC,EAAIzS,KAAKsuD,qBAAqBvsB,EAAQtvB,EAE1C,QACE5K,KAAQ2K,EACRvK,IAAQwK,EACR4V,MAAQ7V,EACR8R,OAAQ7R,IAYZ7S,EAAQ6tD,WAAa,SAAU1rB,GAE7B,GAAI+8C,GAAiB9+E,KAAK6+E,yBAAyB98C,GAC/CuuB,EAAmBtwD,KAAK4+E,4BAA4BE,EAIxD,OAAIxuB,GAAiBtqD,OAAS,EACpBhG,KAAK6+C,MAAMyR,EAAiBA,EAAiBtqD,OAAS,IAGvD,MAWXpG,EAAQm/E,yBAA2B,SAAU/6E,EAAQysD,GACnD,GAAIzQ,GAAQhgD,KAAKggD,KACjB,KAAK,GAAI8P,KAAU9P,GACbA,EAAM75C,eAAe2pD,IACnB9P,EAAM8P,GAAQS,kBAAkBvsD,IAClCysD,EAAiBloD,KAAKunD,IAa9BlwD,EAAQo/E,4BAA8B,SAAUh7E,GAC9C,GAAIysD,KAEJ,OADAzwD,MAAKw0D,sBAAsB,2BAA2BxwD,EAAOysD,GACtDA,GAWT7wD,EAAQmwD,WAAa,SAAShuB,GAC5B,GAAI+8C,GAAiB9+E,KAAK6+E,yBAAyB98C,GAC/C0uB,EAAmBzwD,KAAKg/E,4BAA4BF,EAExD,OAAIruB,GAAiBzqD,OAAS,EACrBhG,KAAKggD,MAAMyQ,EAAiBA,EAAiBzqD,OAAS,IAGtD,MAWXpG,EAAQq/E,gBAAkB,SAASl7D,GAC7BA,YAAexgB,GACjBvD,KAAK+tD,aAAalP,MAAM96B,EAAI1jB,IAAM0jB,EAGlC/jB,KAAK+tD,aAAa/N,MAAMj8B,EAAI1jB,IAAM0jB,GAUtCnkB,EAAQs/E,YAAc,SAASn7D,GACzBA,YAAexgB,GACjBvD,KAAKkkD,SAASrF,MAAM96B,EAAI1jB,IAAM0jB,EAG9B/jB,KAAKkkD,SAASlE,MAAMj8B,EAAI1jB,IAAM0jB,GAWlCnkB,EAAQmyD,qBAAuB,SAAShuC,GAClCA,YAAexgB,SACVvD,MAAK+tD,aAAalP,MAAM96B,EAAI1jB,UAG5BL,MAAK+tD,aAAa/N,MAAMj8B,EAAI1jB,KAUvCT,EAAQ+pD,aAAe,SAASw1B,GACTt4E,SAAjBs4E,IACFA,GAAe,EAEjB,KAAI,GAAIx2B,KAAU3oD,MAAK+tD,aAAalP,MAC/B7+C,KAAK+tD,aAAalP,MAAM14C,eAAewiD,IACxC3oD,KAAK+tD,aAAalP,MAAM8J,GAAQ/hB,UAGpC,KAAI,GAAIkpB,KAAU9vD,MAAK+tD,aAAa/N,MAC/BhgD,KAAK+tD,aAAa/N,MAAM75C,eAAe2pD,IACxC9vD,KAAK+tD,aAAa/N,MAAM8P,GAAQlpB,UAIpC5mC,MAAK+tD,cAAgBlP,SAASmB,UAEV,GAAhBm/B,GACFn/E,KAAKyuB,KAAK,SAAUzuB,KAAK83B,iBAU7Bl4B,EAAQw/E,kBAAoB,SAASD,GACdt4E,SAAjBs4E,IACFA,GAAe,EAGjB,KAAK,GAAIx2B,KAAU3oD,MAAK+tD,aAAalP,MAC/B7+C,KAAK+tD,aAAalP,MAAM14C,eAAewiD,IACrC3oD,KAAK+tD,aAAalP,MAAM8J,GAAQ+X,YAAc,IAChD1gE,KAAK+tD,aAAalP,MAAM8J,GAAQ/hB,WAChC5mC,KAAK+xD,qBAAqB/xD,KAAK+tD,aAAalP,MAAM8J,IAKpC,IAAhBw2B,GACFn/E,KAAKyuB,KAAK,SAAUzuB,KAAK83B,iBAW7Bl4B,EAAQy/E,sBAAwB,WAC9B,GAAItnE,GAAQ,CACZ,KAAK,GAAI4wC,KAAU3oD,MAAK+tD,aAAalP,MAC/B7+C,KAAK+tD,aAAalP,MAAM14C,eAAewiD,KACzC5wC,GAAS,EAGb,OAAOA,IASTnY,EAAQ0/E,iBAAmB,WACzB,IAAK,GAAI32B,KAAU3oD,MAAK+tD,aAAalP,MACnC,GAAI7+C,KAAK+tD,aAAalP,MAAM14C,eAAewiD,GACzC,MAAO3oD,MAAK+tD,aAAalP,MAAM8J,EAGnC,OAAO,OAST/oD,EAAQ2/E,iBAAmB,WACzB,IAAK,GAAIzvB,KAAU9vD,MAAK+tD,aAAa/N,MACnC,GAAIhgD,KAAK+tD,aAAa/N,MAAM75C,eAAe2pD,GACzC,MAAO9vD,MAAK+tD,aAAa/N,MAAM8P,EAGnC,OAAO,OAUTlwD,EAAQ4/E,sBAAwB,WAC9B,GAAIznE,GAAQ,CACZ,KAAK,GAAI+3C,KAAU9vD,MAAK+tD,aAAa/N,MAC/BhgD,KAAK+tD,aAAa/N,MAAM75C,eAAe2pD,KACzC/3C,GAAS,EAGb,OAAOA,IAUTnY,EAAQ6/E,wBAA0B,WAChC,GAAI1nE,GAAQ,CACZ,KAAI,GAAI4wC,KAAU3oD,MAAK+tD,aAAalP,MAC/B7+C,KAAK+tD,aAAalP,MAAM14C,eAAewiD,KACxC5wC,GAAS,EAGb,KAAI,GAAI+3C,KAAU9vD,MAAK+tD,aAAa/N,MAC/BhgD,KAAK+tD,aAAa/N,MAAM75C,eAAe2pD,KACxC/3C,GAAS,EAGb,OAAOA,IASTnY,EAAQ8/E,kBAAoB,WAC1B,IAAI,GAAI/2B,KAAU3oD,MAAK+tD,aAAalP,MAClC,GAAG7+C,KAAK+tD,aAAalP,MAAM14C,eAAewiD,GACxC,OAAO,CAGX,KAAI,GAAImH,KAAU9vD,MAAK+tD,aAAa/N,MAClC,GAAGhgD,KAAK+tD,aAAa/N,MAAM75C,eAAe2pD,GACxC,OAAO,CAGX,QAAO,GAUTlwD,EAAQ+/E,oBAAsB,WAC5B,IAAI,GAAIh3B,KAAU3oD,MAAK+tD,aAAalP,MAClC,GAAG7+C,KAAK+tD,aAAalP,MAAM14C,eAAewiD,IACpC3oD,KAAK+tD,aAAalP,MAAM8J,GAAQ+X,YAAc,EAChD,OAAO,CAIb,QAAO,GAST9gE,EAAQggF,sBAAwB,SAASv3B,GACvC,IAAK,GAAIxiD,GAAI,EAAGA,EAAIwiD,EAAKkK,aAAavsD,OAAQH,IAAK,CACjD,GAAI6qD,GAAOrI,EAAKkK,aAAa1sD,EAC7B6qD,GAAK/pB,SACL3mC,KAAKi/E,gBAAgBvuB,KAUzB9wD,EAAQigF,qBAAuB,SAASx3B,GACtC,IAAK,GAAIxiD,GAAI,EAAGA,EAAIwiD,EAAKkK,aAAavsD,OAAQH,IAAK,CACjD,GAAI6qD,GAAOrI,EAAKkK,aAAa1sD,EAC7B6qD,GAAK1jD,OAAQ,EACbhN,KAAKk/E,YAAYxuB,KAWrB9wD,EAAQkgF,wBAA0B,SAASz3B,GACzC,IAAK,GAAIxiD,GAAI,EAAGA,EAAIwiD,EAAKkK,aAAavsD,OAAQH,IAAK,CACjD,GAAI6qD,GAAOrI,EAAKkK,aAAa1sD,EAC7B6qD,GAAK9pB,WACL5mC,KAAK+xD,qBAAqBrB,KAgB9B9wD,EAAQguD,cAAgB,SAAS5pD,EAAQ+7E,EAAQZ,EAAca,EAAgBC,GACxDp5E,SAAjBs4E,IACFA,GAAe,GAEMt4E,SAAnBm5E,IACFA,GAAiB,GAGa,GAA5BhgF,KAAK0/E,qBAA0C,GAAVK,GAAgD,GAA7B//E,KAAKiwE,sBAC/DjwE,KAAK2pD,cAAa,GAIG,GAAnB3lD,EAAOuiC,UAAmD,GAA7BvmC,KAAKgkD,UAAU1Q,aAAsB2sC,EAQ1C,GAAnBj8E,EAAOuiC,UACdvmC,KAAKi/E,gBAAgBj7E,GACrBm7E,GAAe,IAGfn7E,EAAO4iC,WACP5mC,KAAK+xD,qBAAqB/tD,KAb1BA,EAAO2iC,SACP3mC,KAAKi/E,gBAAgBj7E,GACjBA,YAAkBT,IAA6C,GAArCvD,KAAKgwE,8BAA2D,GAAlBgQ,GAC1EhgF,KAAK4/E,sBAAsB57E,IAaX,GAAhBm7E,GACFn/E,KAAKyuB,KAAK,SAAUzuB,KAAK83B,iBAY7Bl4B,EAAQqwD,YAAc,SAASjsD,GACT,GAAhBA,EAAOgJ,QACThJ,EAAOgJ,OAAQ,EACfhN,KAAKyuB,KAAK,YAAY45B,KAAKrkD,EAAO3D,OAWtCT,EAAQowD,aAAe,SAAShsD,GACV,GAAhBA,EAAOgJ,QACThJ,EAAOgJ,OAAQ,EACfhN,KAAKk/E,YAAYl7E,GACbA,YAAkBT,IACpBvD,KAAKyuB,KAAK,aAAa45B,KAAKrkD,EAAO3D,MAGnC2D,YAAkBT,IACpBvD,KAAK6/E,qBAAqB77E,IAa9BpE,EAAQ2tD,aAAe,aAUvB3tD,EAAQ6uD,WAAa,SAAS1sB,GAC5B,GAAIsmB,GAAOroD,KAAKytD,WAAW1rB,EAC3B,IAAY,MAARsmB,EACFroD,KAAK4tD,cAAcvF,GAAM,OAEtB,CACH,GAAIqI,GAAO1wD,KAAK+vD,WAAWhuB,EACf,OAAR2uB,EACF1wD,KAAK4tD,cAAc8C,GAAM,GAGzB1wD,KAAK2pD,eAGT,GAAIkI,GAAa7xD,KAAK83B,cACtB+5B,GAAoB,SAClBquB,KAAM1tE,EAAGuvB,EAAQvvB,EAAGC,EAAGsvB,EAAQtvB,GAC/B8N,QAAS/N,EAAGxS,KAAKouD,qBAAqBrsB,EAAQvvB,GAAIC,EAAGzS,KAAKsuD,qBAAqBvsB,EAAQtvB,KAEzFzS,KAAKyuB,KAAK,QAASojC,GACnB7xD,KAAKolD,kBAUPxlD,EAAQ8uD,iBAAmB,SAAS3sB,GAClC,GAAIsmB,GAAOroD,KAAKytD,WAAW1rB,EACf,OAARsmB,GAAyBxhD,SAATwhD,IAElBroD,KAAKymD,YAAej0C,EAAMxS,KAAKouD,qBAAqBrsB,EAAQvvB,GACxCC,EAAMzS,KAAKsuD,qBAAqBvsB,EAAQtvB,IAC5DzS,KAAK24E,YAAYtwB,GAEnB,IAAIwJ,GAAa7xD,KAAK83B,cACtB+5B,GAAoB,SAClBquB,KAAM1tE,EAAGuvB,EAAQvvB,EAAGC,EAAGsvB,EAAQtvB,GAC/B8N,QAAS/N,EAAGxS,KAAKouD,qBAAqBrsB,EAAQvvB,GAAIC,EAAGzS,KAAKsuD,qBAAqBvsB,EAAQtvB,KAEzFzS,KAAKyuB,KAAK,cAAeojC,IAU3BjyD,EAAQ+uD,cAAgB,SAAS5sB,GAC/B,GAAIsmB,GAAOroD,KAAKytD,WAAW1rB,EAC3B,IAAY,MAARsmB,EACFroD,KAAK4tD,cAAcvF,GAAK,OAErB,CACH,GAAIqI,GAAO1wD,KAAK+vD,WAAWhuB,EACf,OAAR2uB,GACF1wD,KAAK4tD,cAAc8C,GAAK,GAG5B1wD,KAAKolD,kBAUPxlD,EAAQgvD,iBAAmB,SAAS7sB,GAClC/hC,KAAKmgF,6BAA6Bp+C,GAClC/hC,KAAKogF,2BAA2Br+C,IAGlCniC,EAAQugF,6BAA+B,aACvCvgF,EAAQwgF,2BAA6B,aAOrCxgF,EAAQk4B,aAAe,WACrB,GAAI+1B,GAAU7tD,KAAKqgF,mBACfC,EAAUtgF,KAAKugF,kBACnB,QAAQ1hC,MAAMgP,EAAS7N,MAAMsgC,IAS/B1gF,EAAQygF,iBAAmB,WACzB,GAAIG,KACJ,IAAiC,GAA7BxgF,KAAKgkD,UAAU1Q,WACjB,IAAK,GAAIqV,KAAU3oD,MAAK+tD,aAAalP,MAC/B7+C,KAAK+tD,aAAalP,MAAM14C,eAAewiD,IACzC63B,EAAQj4E,KAAKogD,EAInB,OAAO63B,IAST5gF,EAAQ2gF,iBAAmB,WACzB,GAAIC,KACJ,IAAiC,GAA7BxgF,KAAKgkD,UAAU1Q,WACjB,IAAK,GAAIwc,KAAU9vD,MAAK+tD,aAAa/N,MAC/BhgD,KAAK+tD,aAAa/N,MAAM75C,eAAe2pD,IACzC0wB,EAAQj4E,KAAKunD,EAInB,OAAO0wB,IAST5gF,EAAQg4B,aAAe,WACrBiD,QAAQtG,IAAI,gEAUd30B,EAAQ6gF,YAAc,SAASnsC,EAAW0rC,GACxC,GAAIn6E,GAAGi9B,EAAMziC,CAEb,KAAKi0C,GAAkCztC,QAApBytC,EAAUtuC,OAC3B,KAAM,qCAKR,KAFAhG,KAAK2pD,cAAa,GAEb9jD,EAAI,EAAGi9B,EAAOwR,EAAUtuC,OAAY88B,EAAJj9B,EAAUA,IAAK,CAClDxF,EAAKi0C,EAAUzuC,EAEf,IAAIwiD,GAAOroD,KAAK6+C,MAAMx+C,EACtB,KAAKgoD,EACH,KAAM,IAAIq4B,YAAW,iBAAmBrgF,EAAK,cAE/CL,MAAK4tD,cAAcvF,GAAK,GAAK,EAAK23B,GAAe,GAEnDhgF,KAAKyiB,UASP7iB,EAAQ+gF,YAAc,SAASrsC,GAC7B,GAAIzuC,GAAGi9B,EAAMziC,CAEb,KAAKi0C,GAAkCztC,QAApBytC,EAAUtuC,OAC3B,KAAM,qCAKR,KAFAhG,KAAK2pD,cAAa,GAEb9jD,EAAI,EAAGi9B,EAAOwR,EAAUtuC,OAAY88B,EAAJj9B,EAAUA,IAAK,CAClDxF,EAAKi0C,EAAUzuC,EAEf,IAAI6qD,GAAO1wD,KAAKggD,MAAM3/C,EACtB,KAAKqwD,EACH,KAAM,IAAIgwB,YAAW,iBAAmBrgF,EAAK,cAE/CL,MAAK4tD,cAAc8C,GAAK,GAAK,GAAK,GAAM,GAE1C1wD,KAAKyiB,UAOP7iB,EAAQ0xD,iBAAmB,WACzB,IAAI,GAAI3I,KAAU3oD,MAAK+tD,aAAalP,MAC/B7+C,KAAK+tD,aAAalP,MAAM14C,eAAewiD,KACnC3oD,KAAK6+C,MAAM14C,eAAewiD,UACtB3oD,MAAK+tD,aAAalP,MAAM8J,GAIrC,KAAI,GAAImH,KAAU9vD,MAAK+tD,aAAa/N,MAC/BhgD,KAAK+tD,aAAa/N,MAAM75C,eAAe2pD,KACnC9vD,KAAKggD,MAAM75C,eAAe2pD,UACtB9vD,MAAK+tD,aAAa/N,MAAM8P,MASnC,SAASjwD,EAAQD,EAASM,GAE9B,GAAIS,GAAOT,EAAoB,GAC3BqD,EAAOrD,EAAoB,IAC3BkD,EAAOlD,EAAoB,IAC3BwmC,EAASxmC,EAAoB,GAOjCN,GAAQghF,qBAAuB,WAC7B5gF,KAAKktD,oBAAoBltD,KAAKkwE,iBAC9BlwE,KAAK6gF,mBAEL7gF,KAAK8gF,2BAEL9gF,KAAKmgF,6BAA+B,mBAC7BngF,MAAKsyD,QAAiB,QAAS,MAAc,iBAC7CtyD,MAAKsyD,QAAiB,QAAS,MAAiB,cACvDtyD,KAAKmkD,oBAAqB,EAC1BnkD,KAAKq1D,kBAAiB,IAIxBz1D,EAAQkhF,yBAA2B,WAEjC,GAAuC,GAAnC9gF,KAAKqkD,oBAAoBr+C,OAAa,CACxC,IAAK,GAAIH,GAAI,EAAGA,EAAI7F,KAAKqkD,oBAAoBr+C,OAAQH,IACnD7F,KAAKqkD,oBAAoBx+C,GAAGimD,SAE9B9rD,MAAKqkD,yBAWTzkD,EAAQmhF,4BAA8B,WACpC,IAAK,GAAIC,KAAgBhhF,MAAK+lD,gBACxB/lD,KAAK+lD,gBAAgB5/C,eAAe66E,KACtChhF,KAAKghF,GAAgBhhF,KAAK+lD,gBAAgBi7B,SACnChhF,MAAK+lD,gBAAgBi7B,KAUlCphF,EAAQqhF,gBAAkB,WACxBjhF,KAAK2qD,UAAY3qD,KAAK2qD,QACtB,IAAIu2B,GAAUlhF,KAAKkwE,gBACfE,EAAWpwE,KAAKowE,SAChBD,EAAcnwE,KAAKmwE,WACF,IAAjBnwE,KAAK2qD,UACPu2B,EAAQxzE,MAAMk/B,QAAQ,QACtBwjC,EAAS1iE,MAAMk/B,QAAQ,QACvBujC,EAAYziE,MAAMk/B,QAAQ,OAC1B5sC,KAAKmhF,iBAAiB/Q,EAAS,qBAG/B8Q,EAAQxzE,MAAMk/B,QAAQ,OACtBwjC,EAAS1iE,MAAMk/B,QAAQ,OACvBujC,EAAYziE,MAAMk/B,QAAQ,SAE5B5sC,KAAK4pD,yBAQPhqD,EAAQgqD,sBAAwB,WAE1B5pD,KAAKohF,eACPphF,KAAKyU,IAAI,SAAUzU,KAAKohF,eAG1BphF,KAAK8gF,0BAEL,IAAI16C,GAASpmC,KAAKgkD,UAAU/Z,QAAQjqC,KAAKgkD,UAAU5d,OAqBnD,IAnB6Bv/B,SAAzB7G,KAAKqhF,kBACPrhF,KAAKqhF,gBAAgBxjB,uBACrB79D,KAAKqhF,gBAAkBx6E,OACvB7G,KAAKshF,oBAAsB,KAC3BthF,KAAKmkD,oBAAqB,EAC1BnkD,KAAKi3B,WAIPj3B,KAAK+gF,8BAGL/gF,KAAKq1D,kBAAiB,GAGtBr1D,KAAKgwE,8BAA+B,EACpChwE,KAAKiwE,sBAAuB,EAC5BjwE,KAAK6gF,mBAEgB,GAAjB7gF,KAAK2qD,SAAkB,CACzB,KAAO3qD,KAAKkwE,gBAAgBxrD,iBAC1B1kB,KAAKkwE,gBAAgBt+D,YAAY5R,KAAKkwE,gBAAgBvrD,WAGxD3kB,MAAK6gF,gBAA6B,YAAI7uE,SAASM,cAAc,OAC7DtS,KAAK6gF,gBAA6B,YAAEz4E,UAAY,6BAEhDpI,KAAK6gF,gBAAkC,iBAAI7uE,SAASM,cAAc,OAClEtS,KAAK6gF,gBAAkC,iBAAEz4E,UAAY,4BACrDpI,KAAK6gF,gBAAkC,iBAAE57D,UAAYmhB,EAAgB,QACrEpmC,KAAK6gF,gBAA6B,YAAE3uE,YAAYlS,KAAK6gF,gBAAkC,kBAEvF7gF,KAAK6gF,gBAAmC,kBAAI7uE,SAASM,cAAc,OACnEtS,KAAK6gF,gBAAmC,kBAAEz4E,UAAY,wBAEtDpI,KAAK6gF,gBAA6B,YAAI7uE,SAASM,cAAc,OAC7DtS,KAAK6gF,gBAA6B,YAAEz4E,UAAY,iCAChDpI,KAAK6gF,gBAAkC,iBAAI7uE,SAASM,cAAc,OAClEtS,KAAK6gF,gBAAkC,iBAAEz4E,UAAY,4BACrDpI,KAAK6gF,gBAAkC,iBAAE57D,UAAYmhB,EAAgB,QACrEpmC,KAAK6gF,gBAA6B,YAAE3uE,YAAYlS,KAAK6gF,gBAAkC,kBAEvF7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAA6B,aACnE7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAAmC,mBACzE7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAA6B,aAE/B,GAAhC7gF,KAAKq/E,yBAAgCr/E,KAAKu+C,iBAAiBC,MAC7Dx+C,KAAK6gF,gBAAmC,kBAAI7uE,SAASM,cAAc,OACnEtS,KAAK6gF,gBAAmC,kBAAEz4E,UAAY,wBAEtDpI,KAAK6gF,gBAA8B,aAAI7uE,SAASM,cAAc,OAC9DtS,KAAK6gF,gBAA8B,aAAEz4E,UAAY,mCACjDpI,KAAK6gF,gBAAmC,kBAAI7uE,SAASM,cAAc,OACnEtS,KAAK6gF,gBAAmC,kBAAEz4E,UAAY,4BACtDpI,KAAK6gF,gBAAmC,kBAAE57D,UAAYmhB,EAAiB,SACvEpmC,KAAK6gF,gBAA8B,aAAE3uE,YAAYlS,KAAK6gF,gBAAmC,mBAEzF7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAAmC,mBACzE7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAA8B,eAE7B,GAAhC7gF,KAAKw/E,yBAAgE,GAAhCx/E,KAAKq/E,0BACjDr/E,KAAK6gF,gBAAmC,kBAAI7uE,SAASM,cAAc,OACnEtS,KAAK6gF,gBAAmC,kBAAEz4E,UAAY,wBAEtDpI,KAAK6gF,gBAA8B,aAAI7uE,SAASM,cAAc,OAC9DtS,KAAK6gF,gBAA8B,aAAEz4E,UAAY,mCACjDpI,KAAK6gF,gBAAmC,kBAAI7uE,SAASM,cAAc,OACnEtS,KAAK6gF,gBAAmC,kBAAEz4E,UAAY,4BACtDpI,KAAK6gF,gBAAmC,kBAAE57D,UAAYmhB,EAAiB,SACvEpmC,KAAK6gF,gBAA8B,aAAE3uE,YAAYlS,KAAK6gF,gBAAmC,mBAEzF7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAAmC,mBACzE7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAA8B,eAEtC,GAA5B7gF,KAAK0/E,sBACP1/E,KAAK6gF,gBAAmC,kBAAI7uE,SAASM,cAAc,OACnEtS,KAAK6gF,gBAAmC,kBAAEz4E,UAAY,wBAEtDpI,KAAK6gF,gBAA4B,WAAI7uE,SAASM,cAAc,OAC5DtS,KAAK6gF,gBAA4B,WAAEz4E,UAAY,gCAC/CpI,KAAK6gF,gBAAiC,gBAAI7uE,SAASM,cAAc,OACjEtS,KAAK6gF,gBAAiC,gBAAEz4E,UAAY,4BACpDpI,KAAK6gF,gBAAiC,gBAAE57D,UAAYmhB,EAAY,IAChEpmC,KAAK6gF,gBAA4B,WAAE3uE,YAAYlS,KAAK6gF,gBAAiC,iBAErF7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAAmC,mBACzE7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAA4B,aAIpE7gF,KAAKmhF,iBAAiBnhF,KAAK6gF,gBAA6B,YAAE,yBAC1D7gF,KAAKmhF,iBAAiBnhF,KAAK6gF,gBAA6B,YAAE,yBAC1D7gF,KAAKmhF,iBAAiBnhF,KAAKowE,SAAS,mBAEA,GAAhCpwE,KAAKq/E,yBAAgCr/E,KAAKu+C,iBAAiBC,KAC7Dx+C,KAAKmhF,iBAAiBnhF,KAAK6gF,gBAA8B,aAAE,aAEpB,GAAhC7gF,KAAKw/E,yBAAgE,GAAhCx/E,KAAKq/E,yBACjDr/E,KAAKmhF,iBAAiBnhF,KAAK6gF,gBAA8B,aAAE,0BAE7B,GAA5B7gF,KAAK0/E,qBACP1/E,KAAKmhF,iBAAiBnhF,KAAK6gF,gBAA4B,WAAE,kBAG3D,IAAI3rE,GAAKlV,IACTA,MAAKohF,cAAgBlsE,EAAG00C,sBACxB5pD,KAAKsU,GAAG,SAAUtU,KAAKohF,mBAEpB,CACH,KAAOphF,KAAKmwE,YAAYzrD,iBACtB1kB,KAAKmwE,YAAYv+D,YAAY5R,KAAKmwE,YAAYxrD,WAGhD3kB,MAAK6gF,gBAA8B,aAAI7uE,SAASM,cAAc,OAC9DtS,KAAK6gF,gBAA8B,aAAEz4E,UAAY,uCACjDpI,KAAK6gF,gBAAmC,kBAAI7uE,SAASM,cAAc,OACnEtS,KAAK6gF,gBAAmC,kBAAEz4E,UAAY,4BACtDpI,KAAK6gF,gBAAmC,kBAAE57D,UAAYmhB,EAAa,KACnEpmC,KAAK6gF,gBAA8B,aAAE3uE,YAAYlS,KAAK6gF,gBAAmC,mBAEzF7gF,KAAKmwE,YAAYj+D,YAAYlS,KAAK6gF,gBAA8B,cAEhE7gF,KAAKmhF,iBAAiBnhF,KAAK6gF,gBAA8B,aAAE,qBAK/DjhF,EAAQuhF,iBAAmB,SAASI,EAAYC,GAC9C,GAAI19E,GAAS4iC,EAAO66C,GAAa52C,iBAAiB,GAClD7mC,GAAOwQ,GAAG,QAAStU,KAAKwhF,GAAO9rD,KAAK11B,OACpCA,KAAKqkD,oBAAoB97C,KAAKzE,IAShClE,EAAQ6hF,sBAAwB,WAE9BzhF,KAAK4gF,uBACD5gF,KAAKohF,eACPphF,KAAKyU,IAAI,SAAUzU,KAAKohF,cAG1B,IAAIh7C,GAASpmC,KAAKgkD,UAAU/Z,QAAQjqC,KAAKgkD,UAAU5d,OAEnDpmC,MAAK6gF,mBACL7gF,KAAK6gF,gBAA0B,SAAI7uE,SAASM,cAAc,OAC1DtS,KAAK6gF,gBAA0B,SAAEz4E,UAAY,8BAC7CpI,KAAK6gF,gBAA+B,cAAI7uE,SAASM,cAAc,OAC/DtS,KAAK6gF,gBAA+B,cAAEz4E,UAAY,4BAClDpI,KAAK6gF,gBAA+B,cAAE57D,UAAYmhB,EAAa,KAC/DpmC,KAAK6gF,gBAA0B,SAAE3uE,YAAYlS,KAAK6gF,gBAA+B,eAEjF7gF,KAAK6gF,gBAAmC,kBAAI7uE,SAASM,cAAc,OACnEtS,KAAK6gF,gBAAmC,kBAAEz4E,UAAY,wBAEtDpI,KAAK6gF,gBAAiC,gBAAI7uE,SAASM,cAAc,OACjEtS,KAAK6gF,gBAAiC,gBAAEz4E,UAAY,8BACpDpI,KAAK6gF,gBAAsC,qBAAI7uE,SAASM,cAAc,OACtEtS,KAAK6gF,gBAAsC,qBAAEz4E,UAAY,4BACzDpI,KAAK6gF,gBAAsC,qBAAE57D,UAAYmhB,EAAuB,eAChFpmC,KAAK6gF,gBAAiC,gBAAE3uE,YAAYlS,KAAK6gF,gBAAsC,sBAE/F7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAA0B,UAChE7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAAmC,mBACzE7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAAiC,iBAGvE7gF,KAAKmhF,iBAAiBnhF,KAAK6gF,gBAA0B,SAAE,wBAGvD,IAAI3rE,GAAKlV,IACTA,MAAKohF,cAAgBlsE,EAAGwsE,SACxB1hF,KAAKsU,GAAG,SAAUtU,KAAKohF,gBASzBxhF,EAAQ+hF,sBAAwB,WAE9B3hF,KAAK4gF,uBACL5gF,KAAK2pD,cAAa,GAClB3pD,KAAKq1D,kBAAiB,GAElBr1D,KAAKohF,eACPphF,KAAKyU,IAAI,SAAUzU,KAAKohF,cAG1B,IAAIh7C,GAASpmC,KAAKgkD,UAAU/Z,QAAQjqC,KAAKgkD,UAAU5d,OAEnDpmC,MAAK2pD,eACL3pD,KAAKiwE,sBAAuB,EAC5BjwE,KAAKgwE,8BAA+B,EAEpChwE,KAAK6gF,mBACL7gF,KAAK6gF,gBAA0B,SAAI7uE,SAASM,cAAc,OAC1DtS,KAAK6gF,gBAA0B,SAAEz4E,UAAY,8BAC7CpI,KAAK6gF,gBAA+B,cAAI7uE,SAASM,cAAc,OAC/DtS,KAAK6gF,gBAA+B,cAAEz4E,UAAY,4BAClDpI,KAAK6gF,gBAA+B,cAAE57D,UAAYmhB,EAAa,KAC/DpmC,KAAK6gF,gBAA0B,SAAE3uE,YAAYlS,KAAK6gF,gBAA+B,eAEjF7gF,KAAK6gF,gBAAmC,kBAAI7uE,SAASM,cAAc,OACnEtS,KAAK6gF,gBAAmC,kBAAEz4E,UAAY,wBAEtDpI,KAAK6gF,gBAAiC,gBAAI7uE,SAASM,cAAc,OACjEtS,KAAK6gF,gBAAiC,gBAAEz4E,UAAY,8BACpDpI,KAAK6gF,gBAAsC,qBAAI7uE,SAASM,cAAc,OACtEtS,KAAK6gF,gBAAsC,qBAAEz4E,UAAY,4BACzDpI,KAAK6gF,gBAAsC,qBAAE57D,UAAYmhB,EAAwB,gBACjFpmC,KAAK6gF,gBAAiC,gBAAE3uE,YAAYlS,KAAK6gF,gBAAsC,sBAE/F7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAA0B,UAChE7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAAmC,mBACzE7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAAiC,iBAGvE7gF,KAAKmhF,iBAAiBnhF,KAAK6gF,gBAA0B,SAAE,wBAGvD,IAAI3rE,GAAKlV,IACTA,MAAKohF,cAAgBlsE,EAAG0sE,eACxB5hF,KAAKsU,GAAG,SAAUtU,KAAKohF,eAGvBphF,KAAK+lD,gBAA8B,aAAI/lD,KAAKutD,aAC5CvtD,KAAK+lD,gBAA8C,6BAAI/lD,KAAKmgF,6BAC5DngF,KAAK+lD,gBAAkC,iBAAI/lD,KAAKwtD,iBAChDxtD,KAAK+lD,gBAAgC,eAAI/lD,KAAKwuD,eAC9CxuD,KAAK+lD,gBAA+B,cAAI/lD,KAAK2uD,cAC7C3uD,KAAKutD,aAAevtD,KAAK4hF,eACzB5hF,KAAKmgF,6BAA+B,aACpCngF,KAAK2uD,cAAmB,aACxB3uD,KAAKwtD,iBAAmB,aACxBxtD,KAAKwuD,eAAmBxuD,KAAK6hF,eAG7B7hF,KAAKi3B,WAQPr3B,EAAQkiF,uBAAyB,WAE/B9hF,KAAK4gF,uBACL5gF,KAAKmkD,oBAAqB,EAEtBnkD,KAAKohF,eACPphF,KAAKyU,IAAI,SAAUzU,KAAKohF,eAG1BphF,KAAKqhF,gBAAkBrhF,KAAKu/E,mBAC5Bv/E,KAAKqhF,gBAAgBzjB,qBAErB,IAAIx3B,GAASpmC,KAAKgkD,UAAU/Z,QAAQjqC,KAAKgkD,UAAU5d,OAEnDpmC,MAAK6gF,mBACL7gF,KAAK6gF,gBAA0B,SAAI7uE,SAASM,cAAc,OAC1DtS,KAAK6gF,gBAA0B,SAAEz4E,UAAY,8BAC7CpI,KAAK6gF,gBAA+B,cAAI7uE,SAASM,cAAc,OAC/DtS,KAAK6gF,gBAA+B,cAAEz4E,UAAY,4BAClDpI,KAAK6gF,gBAA+B,cAAE57D,UAAYmhB,EAAa,KAC/DpmC,KAAK6gF,gBAA0B,SAAE3uE,YAAYlS,KAAK6gF,gBAA+B,eAEjF7gF,KAAK6gF,gBAAmC,kBAAI7uE,SAASM,cAAc,OACnEtS,KAAK6gF,gBAAmC,kBAAEz4E,UAAY,wBAEtDpI,KAAK6gF,gBAAiC,gBAAI7uE,SAASM,cAAc,OACjEtS,KAAK6gF,gBAAiC,gBAAEz4E,UAAY,8BACpDpI,KAAK6gF,gBAAsC,qBAAI7uE,SAASM,cAAc,OACtEtS,KAAK6gF,gBAAsC,qBAAEz4E,UAAY,4BACzDpI,KAAK6gF,gBAAsC,qBAAE57D,UAAYmhB,EAA4B,oBACrFpmC,KAAK6gF,gBAAiC,gBAAE3uE,YAAYlS,KAAK6gF,gBAAsC,sBAE/F7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAA0B,UAChE7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAAmC,mBACzE7gF,KAAKkwE,gBAAgBh+D,YAAYlS,KAAK6gF,gBAAiC,iBAGvE7gF,KAAKmhF,iBAAiBnhF,KAAK6gF,gBAA0B,SAAE,yBAGvD7gF,KAAK+lD,gBAA8B,aAAS/lD,KAAKutD,aACjDvtD,KAAK+lD,gBAA8C,6BAAK/lD,KAAKmgF,6BAC7DngF,KAAK+lD,gBAA4B,WAAW/lD,KAAKyuD,WACjDzuD,KAAK+lD,gBAAkC,iBAAK/lD,KAAKwtD,iBACjDxtD,KAAK+lD,gBAA+B,cAAQ/lD,KAAKkuD,cACjDluD,KAAKutD,aAAmBvtD,KAAK+hF,mBAC7B/hF,KAAKyuD,WAAmB,aACxBzuD,KAAKkuD,cAAmBluD,KAAKgiF,iBAC7BhiF,KAAKwtD,iBAAmB,aACxBxtD,KAAKmgF,6BAA+BngF,KAAKiiF,oBAGzCjiF,KAAKi3B,WAUPr3B,EAAQmiF,mBAAqB,SAAShgD,GACpC/hC,KAAKqhF,gBAAgBlpB,aAAahuC,KAAKyc,WACvC5mC,KAAKqhF,gBAAgBlpB,aAAa/tC,GAAGwc,WACrC5mC,KAAKshF,oBAAsBthF,KAAKqhF,gBAAgBvjB,wBAAwB99D,KAAKouD,qBAAqBrsB,EAAQvvB,GAAGxS,KAAKsuD,qBAAqBvsB,EAAQtvB,IAC9G,OAA7BzS,KAAKshF,sBACPthF,KAAKshF,oBAAoB36C,SACzB3mC,KAAKq1D,kBAAiB,IAExBr1D,KAAKi3B,WAUPr3B,EAAQoiF,iBAAmB,SAASn4E,GAClC,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OACZ,QAA7B/sB,KAAKshF,qBAA6Dz6E,SAA7B7G,KAAKshF,sBAC5CthF,KAAKshF,oBAAoB9uE,EAAIxS,KAAKouD,qBAAqBrsB,EAAQvvB,GAC/DxS,KAAKshF,oBAAoB7uE,EAAIzS,KAAKsuD,qBAAqBvsB,EAAQtvB,IAEjEzS,KAAKi3B,WASPr3B,EAAQqiF,oBAAsB,SAASlgD,GACrC,GAAImgD,GAAUliF,KAAKytD,WAAW1rB,EACd,QAAZmgD,GACqD,GAAnDliF,KAAKqhF,gBAAgBlpB,aAAahuC,KAAKoc,WACzCvmC,KAAKqhF,gBAAgBpjB,uBACrBj+D,KAAKmiF,UAAUD,EAAQ7hF,GAAIL,KAAKqhF,gBAAgBj3D,GAAG/pB,IACnDL,KAAKqhF,gBAAgBlpB,aAAahuC,KAAKyc,YAEY,GAAjD5mC,KAAKqhF,gBAAgBlpB,aAAa/tC,GAAGmc,WACvCvmC,KAAKqhF,gBAAgBpjB,uBACrBj+D,KAAKmiF,UAAUniF,KAAKqhF,gBAAgBl3D,KAAK9pB,GAAI6hF,EAAQ7hF,IACrDL,KAAKqhF,gBAAgBlpB,aAAa/tC,GAAGwc,aAIvC5mC,KAAKqhF,gBAAgBpjB,uBAEvBj+D,KAAKq1D,kBAAiB,GACtBr1D,KAAKi3B,WASPr3B,EAAQgiF,eAAiB,SAAS7/C,GAChC,GAAoC,GAAhC/hC,KAAKq/E,wBAA8B,CACrC,GAAIh3B,GAAOroD,KAAKytD,WAAW1rB,EAE3B,IAAY,MAARsmB,EACF,GAAIA,EAAKqY,YAAc,EACrB0hB,MAAMpiF,KAAKgkD,UAAU/Z,QAAQjqC,KAAKgkD,UAAU5d,QAAyB,qBAElE,CACHpmC,KAAK4tD,cAAcvF,GAAK,EACxB,IAAIyuB,GAAe92E,KAAKsyD,QAAiB,QAAS,KAGlDwkB,GAAyB,WAAI,GAAIvzE,IAAMlD,GAAG,oBAAoBL,KAAKgkD,UACnE,IAAIq+B,GAAavL,EAAyB,UAC1CuL,GAAW7vE,EAAI61C,EAAK71C,EACpB6vE,EAAW5vE,EAAI41C,EAAK51C,EAGpBzS,KAAKggD,MAAsB,eAAI,GAAI58C,IAAM/C,GAAG,iBAAiB8pB,KAAKk+B,EAAKhoD,GAAG+pB,GAAGi4D,EAAWhiF,IAAKL,KAAMA,KAAKgkD,UACxG,IAAIs+B,GAAiBtiF,KAAKggD,MAAsB,cAChDsiC,GAAen4D,KAAOk+B,EACtBi6B,EAAe3xB,WAAY,EAC3B2xB,EAAepzE,QAAQi0C,cAAgBh0C,SAAS,EAC5Ci0C,SAAS,EACTj8C,KAAM,aACNk8C,UAAW,IAEfi/B,EAAe/7C,UAAW,EAC1B+7C,EAAel4D,GAAKi4D,EAEpBriF,KAAK+lD,gBAA+B,cAAI/lD,KAAKkuD,aAC7C,IAAIh5C,GAAKlV,IACTA,MAAKkuD,cAAgB,SAASrkD,GAC5B,GAAIk4B,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,QACzCu1D,EAAiBptE,EAAG8qC,MAAsB,cAC9CsiC,GAAel4D,GAAG5X,EAAI0C,EAAGk5C,qBAAqBrsB,EAAQvvB,GACtD8vE,EAAel4D,GAAG3X,EAAIyC,EAAGo5C,qBAAqBvsB,EAAQtvB,GACtDyC,EAAG+hB,WAGLj3B,KAAKqnD,QAAS,EACdrnD,KAAKqQ,WAMbzQ,EAAQiiF,eAAiB,SAASh4E,GAChC,GAAoC,GAAhC7J,KAAKq/E,wBAA8B,CACrC,GAAIt9C,GAAU/hC,KAAKotD,YAAYvjD,EAAM2uB,QAAQzL,OAE7C/sB,MAAKkuD,cAAgBluD,KAAK+lD,gBAA+B,oBAClD/lD,MAAK+lD,gBAA+B,aAG3C,IAAIw8B,GAAgBviF,KAAKggD,MAAsB,eAAEmX,aAG1Cn3D,MAAKggD,MAAsB,qBAC3BhgD,MAAKsyD,QAAiB,QAAS,MAAc,iBAC7CtyD,MAAKsyD,QAAiB,QAAS,MAAiB,aAEvD,IAAIjK,GAAOroD,KAAKytD,WAAW1rB,EACf,OAARsmB,IACEA,EAAKqY,YAAc,EACrB0hB,MAAMpiF,KAAKgkD,UAAU/Z,QAAQjqC,KAAKgkD,UAAU5d,QAAyB,kBAGrEpmC,KAAKwiF,YAAYD,EAAcl6B,EAAKhoD,IACpCL,KAAK4pD,0BAGT5pD,KAAK2pD,iBAQT/pD,EAAQ8hF,SAAW,WACjB,GAAI1hF,KAAK0/E,qBAAwC,GAAjB1/E,KAAK2qD,SAAkB,CACrD,GAAIm0B,GAAiB9+E,KAAK6+E,yBAAyB7+E,KAAKwmD,iBACpDi8B,GAAepiF,GAAGM,EAAK2E,aAAakN,EAAEssE,EAAej3E,KAAK4K,EAAEqsE,EAAe72E,IAAI+K,MAAM,MAAM8iD,gBAAe,EAAKC,gBAAe,EAClI,IAAI/1D,KAAKu+C,iBAAiBvqC,IAAK,CAC7B,GAAwC,GAApChU,KAAKu+C,iBAAiBvqC,IAAIhO,OAU5B,KAAM,IAAIpC,OAAM,sEAThB,IAAIsR,GAAKlV,IACTA,MAAKu+C,iBAAiBvqC,IAAIyuE,EAAa,SAASC,GAC9CxtE,EAAGyxC,UAAU3yC,IAAI0uE,GACjBxtE,EAAG00C,wBACH10C,EAAGmyC,QAAS,EACZnyC,EAAG7E,cAWPrQ,MAAK2mD,UAAU3yC,IAAIyuE,GACnBziF,KAAK4pD,wBACL5pD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,UAWXzQ,EAAQ4iF,YAAc,SAASG,EAAaC,GAC1C,GAAqB,GAAjB5iF,KAAK2qD,SAAkB,CACzB,GAAI83B,IAAet4D,KAAKw4D,EAAcv4D,GAAGw4D,EACzC,IAAI5iF,KAAKu+C,iBAAiBG,QAAS,CACjC,GAA4C,GAAxC1+C,KAAKu+C,iBAAiBG,QAAQ14C,OAShC,KAAM,IAAIpC,OAAM,0EARhB,IAAIsR,GAAKlV,IACTA,MAAKu+C,iBAAiBG,QAAQ+jC,EAAa,SAASC,GAClDxtE,EAAG0xC,UAAU5yC,IAAI0uE,GACjBxtE,EAAGmyC,QAAS,EACZnyC,EAAG7E,cAUPrQ,MAAK4mD,UAAU5yC,IAAIyuE,GACnBziF,KAAKqnD,QAAS,EACdrnD,KAAKqQ,UAUXzQ,EAAQuiF,UAAY,SAASQ,EAAaC,GACxC,GAAqB,GAAjB5iF,KAAK2qD,SAAkB,CACzB,GAAI83B,IAAepiF,GAAIL,KAAKqhF,gBAAgBhhF,GAAI8pB,KAAKw4D,EAAcv4D,GAAGw4D,EACtE,IAAI5iF,KAAKu+C,iBAAiBE,SAAU,CAClC,GAA6C,GAAzCz+C,KAAKu+C,iBAAiBE,SAASz4C,OASjC,KAAM,IAAIpC,OAAM,wEARhB,IAAIsR,GAAKlV,IACTA,MAAKu+C,iBAAiBE,SAASgkC,EAAa,SAASC,GACnDxtE,EAAG0xC,UAAUhxC,OAAO8sE,GACpBxtE,EAAGmyC,QAAS,EACZnyC,EAAG7E,cAUPrQ,MAAK4mD,UAAUhxC,OAAO6sE,GACtBziF,KAAKqnD,QAAS,EACdrnD,KAAKqQ,UAUXzQ,EAAQijF,UAAY,WAClB,IAAI7iF,KAAKu+C,iBAAiBC,MAAyB,GAAjBx+C,KAAK2qD,SA4BrC,KAAM,IAAI/mD,OAAM,iDA3BhB,IAAIykD,GAAOroD,KAAKs/E,mBACZ7rE,GAAQpT,GAAGgoD,EAAKhoD,GAClB2S,MAAOq1C,EAAKr1C,MACZN,MAAO21C,EAAKn5C,QAAQwD,MACpBusC,MAAOoJ,EAAKn5C,QAAQ+vC,MACpB1zC,OACEsB,WAAWw7C,EAAKn5C,QAAQ3D,MAAMsB,WAC9BC,OAAOu7C,EAAKn5C,QAAQ3D,MAAMuB,OAC1BC,WACEF,WAAWw7C,EAAKn5C,QAAQ3D,MAAMwB,UAAUF,WACxCC,OAAOu7C,EAAKn5C,QAAQ3D,MAAMwB,UAAUD,SAG1C,IAAyC,GAArC9M,KAAKu+C,iBAAiBC,KAAKx4C,OAU7B,KAAM,IAAIpC,OAAM,wEAThB,IAAIsR,GAAKlV,IACTA,MAAKu+C,iBAAiBC,KAAK/qC,EAAM,SAAUivE,GACzCxtE,EAAGyxC,UAAU/wC,OAAO8sE,GACpBxtE,EAAG00C,wBACH10C,EAAGmyC,QAAS,EACZnyC,EAAG7E,WAoBXzQ,EAAQotD,gBAAkB,WACxB,IAAKhtD,KAAK0/E,qBAAwC,GAAjB1/E,KAAK2qD,SACpC,GAAK3qD,KAAK2/E,sBA4BRyC,MAAMpiF,KAAKgkD,UAAU/Z,QAAQjqC,KAAKgkD,UAAU5d,QAA4B,wBA5BzC,CAC/B,GAAI08C,GAAgB9iF,KAAKqgF,mBACrB0C,EAAgB/iF,KAAKugF,kBACzB,IAAIvgF,KAAKu+C,iBAAiBI,IAAK,CAC7B,GAAIzpC,GAAKlV,KACLyT,GAAQorC,MAAOikC,EAAe9iC,MAAO+iC,EACzC,IAAwC,GAApC/iF,KAAKu+C,iBAAiBI,IAAI34C,OAU5B,KAAM,IAAIpC,OAAM,0EAThB5D,MAAKu+C,iBAAiBI,IAAIlrC,EAAM,SAAUivE,GACxCxtE,EAAG0xC,UAAUxvC,OAAOsrE,EAAc1iC,OAClC9qC,EAAGyxC,UAAUvvC,OAAOsrE,EAAc7jC,OAClC3pC,EAAGy0C,eACHz0C,EAAGmyC,QAAS,EACZnyC,EAAG7E,cAQPrQ,MAAK4mD,UAAUxvC,OAAO2rE,GACtB/iF,KAAK2mD,UAAUvvC,OAAO0rE,GACtB9iF,KAAK2pD,eACL3pD,KAAKqnD,QAAS,EACdrnD,KAAKqQ,WAYT,SAASxQ,EAAQD,EAASM,GAE9B,GACIwmC,IADOxmC,EAAoB,GAClBA,EAAoB,IAEjCN,GAAQywE,iBAAmB,WAEzB,GAAqC,GAAjCrwE,KAAKokD,kBAAkBp+C,OAAa,CACtC,IAAK,GAAIH,GAAI,EAAGA,EAAI7F,KAAKokD,kBAAkBp+C,OAAQH,IACjD7F,KAAKokD,kBAAkBv+C,GAAGimD,SAE5B9rD,MAAKokD,qBAGPpkD,KAAKogF,2BAA6B,aAG9BpgF,KAAKgjF,eAAiBhjF,KAAKgjF,cAAuB,SAAKhjF,KAAKgjF,cAAuB,QAAE74E,YACvFnK,KAAKgjF,cAAuB,QAAE74E,WAAWyH,YAAY5R,KAAKgjF,cAAuB,UAYrFpjF,EAAQ0wE,wBAA0B,WAChCtwE,KAAKqwE,mBAELrwE,KAAKgjF,gBACL,IAAIC,IAAkB,KAAK,OAAO,OAAO,QAAQ,SAAS,UAAU,eAChEC,GAAwB,UAAU,YAAY,YAAY,aAAa,UAAU,WAAW,cAEhGljF,MAAKgjF,cAAuB,QAAIhxE,SAASM,cAAc,OACvDtS,KAAKsgB,MAAMpO,YAAYlS,KAAKgjF,cAAuB,QAEnD,KAAK,GAAIn9E,GAAI,EAAGA,EAAIo9E,EAAej9E,OAAQH,IAAK,CAC9C7F,KAAKgjF,cAAcC,EAAep9E,IAAMmM,SAASM,cAAc,OAC/DtS,KAAKgjF,cAAcC,EAAep9E,IAAIuC,UAAY,sBAAwB66E,EAAep9E,GACzF7F,KAAKgjF,cAAuB,QAAE9wE,YAAYlS,KAAKgjF,cAAcC,EAAep9E,IAE5E,IAAI/B,GAAS4iC,EAAO1mC,KAAKgjF,cAAcC,EAAep9E,KAAM8kC,iBAAiB,GAC7E7mC,GAAOwQ,GAAG,QAAStU,KAAKkjF,EAAqBr9E,IAAI6vB,KAAK11B,OACtDA,KAAKokD,kBAAkB77C,KAAKzE,GAG9B9D,KAAKogF,2BAA6BpgF,KAAKmjF,eAUzCvjF,EAAQwjF,YAAc,SAASv5E,GAC7B7J,KAAKwnD,YAAYj3C,SAAS,MAC1B1G,EAAM49B,mBAQR7nC,EAAQujF,cAAgB,WACtBnjF,KAAK2sD,eACL3sD,KAAKwsD,eACLxsD,KAAK8sD,aAYPltD,EAAQ2sD,QAAU,SAAS1iD,GACzB7J,KAAKslD,WAAatlD,KAAKgkD,UAAUvB,SAASC,MAAMjwC,EAChDzS,KAAKqQ,QACLxG,EAAMD,kBAQRhK,EAAQ6sD,UAAY,SAAS5iD,GAC3B7J,KAAKslD,YAActlD,KAAKgkD,UAAUvB,SAASC,MAAMjwC,EACjDzS,KAAKqQ,QACLxG,EAAMD,kBAQRhK,EAAQ8sD,UAAY,SAAS7iD,GAC3B7J,KAAKqlD,WAAarlD,KAAKgkD,UAAUvB,SAASC,MAAMlwC,EAChDxS,KAAKqQ,QACLxG,EAAMD,kBAQRhK,EAAQgtD,WAAa,SAAS/iD,GAC5B7J,KAAKqlD,YAAcrlD,KAAKgkD,UAAUvB,SAASC,MAAMjwC,EACjDzS,KAAKqQ,QACLxG,EAAMD,kBAQRhK,EAAQitD,QAAU,SAAShjD,GACzB7J,KAAKulD,cAAgBvlD,KAAKgkD,UAAUvB,SAASC,MAAMxgB,KACnDliC,KAAKqQ,QACLxG,EAAMD,kBAQRhK,EAAQmtD,SAAW,SAASljD,GAC1B7J,KAAKulD,eAAiBvlD,KAAKgkD,UAAUvB,SAASC,MAAMxgB,KACpDliC,KAAKqQ,QACLxG,EAAMD,kBAQRhK,EAAQktD,UAAY,SAASjjD,GAC3B7J,KAAKulD,cAAgB,EACrB17C,GAASA,EAAMD,kBAQjBhK,EAAQ4sD,aAAe,SAAS3iD,GAC9B7J,KAAKslD,WAAa,EAClBz7C,GAASA,EAAMD,kBAQjBhK,EAAQ+sD,aAAe,SAAS9iD,GAC9B7J,KAAKqlD,WAAa,EAClBx7C,GAASA,EAAMD,mBAMb,SAAS/J,EAAQD,GAErBA,EAAQyqD,aAAe,WACrB,IAAK,GAAI1B,KAAU3oD,MAAK6+C,MACtB,GAAI7+C,KAAK6+C,MAAM14C,eAAewiD,GAAS,CACrC,GAAIN,GAAOroD,KAAK6+C,MAAM8J,EACO,IAAzBN,EAAKsX,mBACPtX,EAAKvI,MAAQ,GACbuI,EAAKuX,qBAAsB,KAYnChgE,EAAQ2nD,yBAA2B,WACjC,GAAiD,GAA7CvnD,KAAKgkD,UAAUlB,mBAAmB3zC,SAAmBnP,KAAKqmD,YAAYrgD,OAAS,EAAG,CAEpF,GACIqiD,GAAMM,EADN06B,EAAU,EAEVC,GAAe,EACfC,GAAiB,CAErB,KAAK56B,IAAU3oD,MAAK6+C,MACd7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5BN,EAAOroD,KAAK6+C,MAAM8J,GACA,IAAdN,EAAKvI,MACPwjC,GAAe,EAGfC,GAAiB,EAEfF,EAAUh7B,EAAKrI,MAAMh6C,SACvBq9E,EAAUh7B,EAAKrI,MAAMh6C,QAM3B,IAAsB,GAAlBu9E,GAA0C,GAAhBD,EAC5B,KAAM,IAAI1/E,OAAM,wHAQhB5D,MAAKwjF,mBAGiB,GAAlBD,IAC8C,WAA5CvjF,KAAKgkD,UAAUlB,mBAAmBG,OACpCjjD,KAAKyjF,iBAAiBJ,GAGtBrjF,KAAK0jF,0BAAyB,GAKlC,IAAIC,GAAe3jF,KAAK4jF,kBAGxB5jF,MAAK6jF,uBAAuBF,GAG5B3jF,KAAKqQ,UAYXzQ,EAAQikF,uBAAyB,SAASF,GACxC,GAAIh7B,GAAQN,CAGZ,KAAK,GAAIvI,KAAS6jC,GAChB,GAAIA,EAAax9E,eAAe25C,GAE9B,IAAK6I,IAAUg7B,GAAa7jC,GAAOjB,MAC7B8kC,EAAa7jC,GAAOjB,MAAM14C,eAAewiD,KAC3CN,EAAOs7B,EAAa7jC,GAAOjB,MAAM8J,GACkB,MAA/C3oD,KAAKgkD,UAAUlB,mBAAmB5lB,WAAoE,MAA/Cl9B,KAAKgkD,UAAUlB,mBAAmB5lB,UACvFmrB,EAAK2F,SACP3F,EAAK71C,EAAImxE,EAAa7jC,GAAOgkC,OAC7Bz7B,EAAK2F,QAAS,EAEd21B,EAAa7jC,GAAOgkC,QAAUH,EAAa7jC,GAAOkD,aAIhDqF,EAAK4F,SACP5F,EAAK51C,EAAIkxE,EAAa7jC,GAAOgkC,OAC7Bz7B,EAAK4F,QAAS,EAEd01B,EAAa7jC,GAAOgkC,QAAUH,EAAa7jC,GAAOkD,aAGtDhjD,KAAK+jF,kBAAkB17B,EAAKrI,MAAMqI,EAAKhoD,GAAGsjF,EAAat7B,EAAKvI,OAOpE9/C,MAAKsqD,cAUP1qD,EAAQgkF,iBAAmB,WACzB,GACIj7B,GAAQN,EAAMvI,EADd6jC,IAKJ,KAAKh7B,IAAU3oD,MAAK6+C,MACd7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5BN,EAAOroD,KAAK6+C,MAAM8J,GAClBN,EAAK2F,QAAS,EACd3F,EAAK4F,QAAS,EACqC,MAA/CjuD,KAAKgkD,UAAUlB,mBAAmB5lB,WAAoE,MAA/Cl9B,KAAKgkD,UAAUlB,mBAAmB5lB,UAC3FmrB,EAAK51C,EAAIzS,KAAKgkD,UAAUlB,mBAAmBC,gBAAgBsF,EAAKvI,MAGhEuI,EAAK71C,EAAIxS,KAAKgkD,UAAUlB,mBAAmBC,gBAAgBsF,EAAKvI,MAEjCj5C,SAA7B88E,EAAat7B,EAAKvI,SACpB6jC,EAAat7B,EAAKvI,QAAU2uB,OAAQ,EAAG5vB,SAAWilC,OAAO,EAAG9gC,YAAY,IAE1E2gC,EAAat7B,EAAKvI,OAAO2uB,QAAU,EACnCkV,EAAat7B,EAAKvI,OAAOjB,MAAM8J,GAAUN,EAK7C,IAAI27B,GAAW,CACf,KAAKlkC,IAAS6jC,GACRA,EAAax9E,eAAe25C,IAC1BkkC,EAAWL,EAAa7jC,GAAO2uB,SACjCuV,EAAWL,EAAa7jC,GAAO2uB,OAMrC,KAAK3uB,IAAS6jC,GACRA,EAAax9E,eAAe25C,KAC9B6jC,EAAa7jC,GAAOkD,aAAeghC,EAAW,GAAKhkF,KAAKgkD,UAAUlB,mBAAmBE,YACrF2gC,EAAa7jC,GAAOkD,aAAgB2gC,EAAa7jC,GAAO2uB,OAAS,EACjEkV,EAAa7jC,GAAOgkC,OAASH,EAAa7jC,GAAOkD,YAAe,IAAO2gC,EAAa7jC,GAAO2uB,OAAS,GAAKkV,EAAa7jC,GAAOkD,YAIjI,OAAO2gC,IAUT/jF,EAAQ6jF,iBAAmB,SAASJ,GAClC,GAAI16B,GAAQN,CAGZ,KAAKM,IAAU3oD,MAAK6+C,MACd7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5BN,EAAOroD,KAAK6+C,MAAM8J,GACdN,EAAKrI,MAAMh6C,QAAUq9E,IACvBh7B,EAAKvI,MAAQ,GAMnB,KAAK6I,IAAU3oD,MAAK6+C,MACd7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5BN,EAAOroD,KAAK6+C,MAAM8J,GACA,GAAdN,EAAKvI,OACP9/C,KAAKikF,UAAU,EAAE57B,EAAKrI,MAAMqI,EAAKhoD,MAczCT,EAAQ8jF,yBAA2B,WACjC,GAAI/6B,GAAQN,EAAM67B,EACd9H,EAAW,GAGf8H,GAAYlkF,KAAK6+C,MAAM7+C,KAAKqmD,YAAY,IACxC69B,EAAUpkC,MAAQs8B,EAClBp8E,KAAKmkF,kBAAkB/H,EAAS8H,EAAUlkC,MAAMkkC,EAAU7jF,GAG1D;IAAKsoD,IAAU3oD,MAAK6+C,MACd7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5BN,EAAOroD,KAAK6+C,MAAM8J,GAClByzB,EAAW/zB,EAAKvI,MAAQs8B,EAAW/zB,EAAKvI,MAAQs8B,EAKpD,KAAKzzB,IAAU3oD,MAAK6+C,MACd7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5BN,EAAOroD,KAAK6+C,MAAM8J,GAClBN,EAAKvI,OAASs8B,IAepBx8E,EAAQ4jF,iBAAmB,WACzBxjF,KAAKgkD,UAAU1C,WAAWnyC,SAAU,EACpCnP,KAAKgkD,UAAUrD,QAAQC,UAAUzxC,SAAU,EAC3CnP,KAAKgkD,UAAUrD,QAAQU,sBAAsBlyC,SAAU,EACvDnP,KAAK2vE,2BACsC,GAAvC3vE,KAAKgkD,UAAUb,aAAah0C,UAC9BnP,KAAKgkD,UAAUb,aAAaC,SAAU,GAExCpjD,KAAKmrD,wBAEL,IAAIi5B,GAASpkF,KAAKgkD,UAAUlB,kBAC5BshC,GAAOrhC,gBAAkBv+C,KAAKknB,IAAI04D,EAAOrhC,kBACjB,MAApBqhC,EAAOlnD,WAAyC,MAApBknD,EAAOlnD,aACrCknD,EAAOrhC,iBAAmB,IAGJ,MAApBqhC,EAAOlnD,WAAyC,MAApBknD,EAAOlnD,UACM,GAAvCl9B,KAAKgkD,UAAUb,aAAah0C,UAC9BnP,KAAKgkD,UAAUb,aAAah8C,KAAO,YAIM,GAAvCnH,KAAKgkD,UAAUb,aAAah0C,UAC9BnP,KAAKgkD,UAAUb,aAAah8C,KAAO,eAgBzCvH,EAAQmkF,kBAAoB,SAAS/jC,EAAOqkC,EAAUV,EAAcW,GAClE,IAAK,GAAIz+E,GAAI,EAAGA,EAAIm6C,EAAMh6C,OAAQH,IAAK,CACrC,GAAIw0E,GAAY,IAEdA,GADEr6B,EAAMn6C,GAAGqxD,MAAQmtB,EACPrkC,EAAMn6C,GAAGskB,KAGT61B,EAAMn6C,GAAGukB,EAIvB,IAAIm6D,IAAY,CACmC,OAA/CvkF,KAAKgkD,UAAUlB,mBAAmB5lB,WAAoE,MAA/Cl9B,KAAKgkD,UAAUlB,mBAAmB5lB,UACvFm9C,EAAUrsB,QAAUqsB,EAAUv6B,MAAQwkC,IACxCjK,EAAUrsB,QAAS,EACnBqsB,EAAU7nE,EAAImxE,EAAatJ,EAAUv6B,OAAOgkC,OAC5CS,GAAY,GAIVlK,EAAUpsB,QAAUosB,EAAUv6B,MAAQwkC,IACxCjK,EAAUpsB,QAAS,EACnBosB,EAAU5nE,EAAIkxE,EAAatJ,EAAUv6B,OAAOgkC,OAC5CS,GAAY,GAIC,GAAbA,IACFZ,EAAatJ,EAAUv6B,OAAOgkC,QAAUH,EAAatJ,EAAUv6B,OAAOkD,YAClEq3B,EAAUr6B,MAAMh6C,OAAS,GAC3BhG,KAAK+jF,kBAAkB1J,EAAUr6B,MAAMq6B,EAAUh6E,GAAGsjF,EAAatJ,EAAUv6B,UAenFlgD,EAAQqkF,UAAY,SAASnkC,EAAOE,EAAOqkC,GACzC,IAAK,GAAIx+E,GAAI,EAAGA,EAAIm6C,EAAMh6C,OAAQH,IAAK,CACrC,GAAIw0E,GAAY,IAEdA,GADEr6B,EAAMn6C,GAAGqxD,MAAQmtB,EACPrkC,EAAMn6C,GAAGskB,KAGT61B,EAAMn6C,GAAGukB,IAEA,IAAnBiwD,EAAUv6B,OAAeu6B,EAAUv6B,MAAQA,KAC7Cu6B,EAAUv6B,MAAQA,EACdu6B,EAAUr6B,MAAMh6C,OAAS,GAC3BhG,KAAKikF,UAAUnkC,EAAM,EAAGu6B,EAAUr6B,MAAOq6B,EAAUh6E,OAe3DT,EAAQukF,kBAAoB,SAASrkC,EAAOE,EAAOqkC,GACjDrkF,KAAK6+C,MAAMwlC,GAAUzkB,qBAAsB,CAE3C,KAAK,GADDya,GAAWn9C,EACNr3B,EAAI,EAAGA,EAAIm6C,EAAMh6C,OAAQH,IAChCq3B,EAAY,EACR8iB,EAAMn6C,GAAGqxD,MAAQmtB,GACnBhK,EAAYr6B,EAAMn6C,GAAGskB,KACrB+S,EAAY,IAGZm9C,EAAYr6B,EAAMn6C,GAAGukB,GAEA,IAAnBiwD,EAAUv6B,QACZu6B,EAAUv6B,MAAQA,EAAQ5iB,EAI9B,KAAK,GAAIr3B,GAAI,EAAGA,EAAIm6C,EAAMh6C,OAAQH,IACAw0E,EAA5Br6B,EAAMn6C,GAAGqxD,MAAQmtB,EAAuBrkC,EAAMn6C,GAAGskB,KACnC61B,EAAMn6C,GAAGukB,GAEvBiwD,EAAUr6B,MAAMh6C,OAAS,GAAKq0E,EAAUza,uBAAwB,GAClE5/D,KAAKmkF,kBAAkB9J,EAAUv6B,MAAOu6B,EAAUr6B,MAAOq6B,EAAUh6E,KAWzET,EAAQg2E,cAAgB,WACtB,IAAK,GAAIjtB,KAAU3oD,MAAK6+C,MAClB7+C,KAAK6+C,MAAM14C,eAAewiD,KAC5B3oD,KAAK6+C,MAAM8J,GAAQqF,QAAS,EAC5BhuD,KAAK6+C,MAAM8J,GAAQsF,QAAS,KAQ9B,SAASpuD,EAAQD,EAASM,GAE9B,GAAIwzE,IAMJ,SAAU5rE,EAAQjB,GA4OlB,QAAS29E,KACF99C,EAAO+9C,QAKVC,EAAMC,sBAGNC,EAAMC,KAAKn+C,EAAOo+C,SAAU,SAAStsD,GACjCusD,EAAUC,SAASxsD,KAIvBksD,EAAMO,QAAQv+C,EAAOw+C,SAAUC,EAAYJ,EAAUK,QACrDV,EAAMO,QAAQv+C,EAAOw+C,SAAUG,EAAWN,EAAUK,QAGpD1+C,EAAO+9C,OAAQ,GAxOnB,GAAI/9C,GAAS,QAASA,GAAOv9B,EAAS+F,GAClC,MAAO,IAAIw3B,GAAO4+C,SAASn8E,EAAS+F,OAUxCw3B,GAAO6+C,QAAU,QAgBjB7+C,EAAO8+C,UAOHC,UAQIC,WAAY,OASZC,YAAa,QAUbC,aAAc,OAQdC,eAAgB,OAShBC,SAAU,OAaVC,kBAAmB,kBAU3Br/C,EAAOw+C,SAAWlzE,SAOlB00B,EAAOs/C,kBAAoBz8E,UAAU08E,gBAAkB18E,UAAU28E,iBAOjEx/C,EAAOy/C,gBAAmB,gBAAkBr+E,GAO5C4+B,EAAO0/C,UAAY,6CAA6C33E,KAAKlF,UAAUC,WAO/Ek9B,EAAO2/C,eAAkB3/C,EAAOy/C,iBAAmBz/C,EAAO0/C,WAAc1/C,EAAOs/C,kBAQ/Et/C,EAAO4/C,mBAAqB,EAU5B,IAAIC,MASAC,EAAiB9/C,EAAO8/C,eAAiB,OACzCC,EAAiB//C,EAAO+/C,eAAiB,OACzCC,EAAehgD,EAAOggD,aAAe,KACrCC,EAAkBjgD,EAAOigD,gBAAkB,QAS3CC,EAAgBlgD,EAAOkgD,cAAgB,QACvCC,EAAgBngD,EAAOmgD,cAAgB,QACvCC,EAAcpgD,EAAOogD,YAAc,MASnCC,EAAcrgD,EAAOqgD,YAAc,QACnC5B,EAAaz+C,EAAOy+C,WAAa,OACjCE,EAAY3+C,EAAO2+C,UAAY,MAC/B2B,EAAgBtgD,EAAOsgD,cAAgB,UACvCC,EAAcvgD,EAAOugD,YAAc,OASvCvgD,GAAO+9C,OAAQ,EAOf/9C,EAAOwgD,QAAUxgD,EAAOwgD,YAQxBxgD,EAAOo+C,SAAWp+C,EAAOo+C,YAkCzB,IAAIF,GAAQl+C,EAAOygD,OAUfxhF,OAAQ,SAAgByhF,EAAMl/B,EAAK0d,GAC/B,IAAI,GAAI38D,KAAOi/C,IACPA,EAAI/hD,eAAe8C,IAASm+E,EAAKn+E,KAASpC,GAAa++D,IAG3DwhB,EAAKn+E,GAAOi/C,EAAIj/C,GAEpB,OAAOm+E,IAUX9yE,GAAI,SAAYnL,EAAShC,EAAMkgF,GAC3Bl+E,EAAQD,iBAAiB/B,EAAMkgF,GAAS,IAU5C5yE,IAAK,SAAatL,EAAShC,EAAMkgF,GAC7Bl+E,EAAQO,oBAAoBvC,EAAMkgF,GAAS,IAa/CxC,KAAM,SAAc9gE,EAAKujE,EAAUltE,GAC/B,GAAIvU,GAAGC,CAGP,IAAG,WAAaie,GACZA,EAAInb,QAAQ0+E,EAAUltE,OAEnB,IAAG2J,EAAI/d,SAAWa,GACrB,IAAIhB,EAAI,EAAGC,EAAMie,EAAI/d,OAAYF,EAAJD,EAASA,IAClC,GAAGyhF,EAAS/mF,KAAK6Z,EAAS2J,EAAIle,GAAIA,EAAGke,MAAS,EAC1C,WAKR,KAAIle,IAAKke,GACL,GAAGA,EAAI5d,eAAeN,IAClByhF,EAAS/mF,KAAK6Z,EAAS2J,EAAIle,GAAIA,EAAGke,MAAS,EAC3C,QAahBwjE,MAAO,SAAer/B,EAAKs/B,GACvB,MAAOt/B,GAAIlhD,QAAQwgF,GAAQ,IAU/BC,QAAS,SAAiBv/B,EAAKs/B,GAC3B,GAAGt/B,EAAIlhD,QAAS,CACZ,GAAI0B,GAAQw/C,EAAIlhD,QAAQwgF,EACxB,OAAkB,KAAV9+E,GAAgB,EAAQA,EAEhC,IAAI,GAAI7C,GAAI,EAAGC,EAAMoiD,EAAIliD,OAAYF,EAAJD,EAASA,IACtC,GAAGqiD,EAAIriD,KAAO2hF,EACV,MAAO3hF,EAGf,QAAO,GAUfiD,QAAS,SAAiBib,GACtB,MAAOzd,OAAM4N,UAAUnI,MAAMxL,KAAKwjB,EAAK,IAU3C3Z,UAAW,SAAmBi+C,EAAMh+C,GAChC,KAAMg+C,GAAM,CACR,GAAGA,GAAQh+C,EACP,OAAO,CAEXg+C,GAAOA,EAAKl+C,WAEhB,OAAO,GASXu9E,UAAW,SAAmBvlD,GAC1B,GAAI5J,MACAE,KACA7a,KACAG,KACA5Z,EAAMK,KAAKL,IACXC,EAAMI,KAAKJ,GAGf,OAAsB,KAAnB+9B,EAAQn8B,QAEHuyB,MAAO4J,EAAQ,GAAG5J,MAClBE,MAAO0J,EAAQ,GAAG1J,MAClB7a,QAASukB,EAAQ,GAAGvkB,QACpBG,QAASokB,EAAQ,GAAGpkB,UAI5B6mE,EAAMC,KAAK1iD,EAAS,SAASrC,GACzBvH,EAAMhwB,KAAKu3B,EAAMvH,OACjBE,EAAMlwB,KAAKu3B,EAAMrH,OACjB7a,EAAQrV,KAAKu3B,EAAMliB,SACnBG,EAAQxV,KAAKu3B,EAAM/hB,YAInBwa,OAAQp0B,EAAI2U,MAAMtU,KAAM+zB,GAASn0B,EAAI0U,MAAMtU,KAAM+zB,IAAU,EAC3DE,OAAQt0B,EAAI2U,MAAMtU,KAAMi0B,GAASr0B,EAAI0U,MAAMtU,KAAMi0B,IAAU,EAC3D7a,SAAUzZ,EAAI2U,MAAMtU,KAAMoZ,GAAWxZ,EAAI0U,MAAMtU,KAAMoZ,IAAY,EACjEG,SAAU5Z,EAAI2U,MAAMtU,KAAMuZ,GAAW3Z,EAAI0U,MAAMtU,KAAMuZ,IAAY,KAYzE4pE,YAAa,SAAqBC,EAAWnmD,EAAQC,GACjD,OACIlvB,EAAGhO,KAAKknB,IAAI+V,EAASmmD,IAAc,EACnCn1E,EAAGjO,KAAKknB,IAAIgW,EAASkmD,IAAc,IAW3CC,SAAU,SAAkBC,EAAQC,GAChC,GAAIv1E,GAAIu1E,EAAOnqE,QAAUkqE,EAAOlqE,QAC5BnL,EAAIs1E,EAAOhqE,QAAU+pE,EAAO/pE,OAEhC,OAA0B,KAAnBvZ,KAAKk2D,MAAMjoD,EAAGD,GAAWhO,KAAKgoB,IAUzCw7D,aAAc,SAAsBF,EAAQC,GACxC,GAAIv1E,GAAIhO,KAAKknB,IAAIo8D,EAAOlqE,QAAUmqE,EAAOnqE,SACrCnL,EAAIjO,KAAKknB,IAAIo8D,EAAO/pE,QAAUgqE,EAAOhqE,QAEzC,OAAGvL,IAAKC,EACGq1E,EAAOlqE,QAAUmqE,EAAOnqE,QAAU,EAAI6oE,EAAiBE,EAE3DmB,EAAO/pE,QAAUgqE,EAAOhqE,QAAU,EAAI2oE,EAAeF,GAUhExjB,YAAa,SAAqB8kB,EAAQC,GACtC,GAAIv1E,GAAIu1E,EAAOnqE,QAAUkqE,EAAOlqE,QAC5BnL,EAAIs1E,EAAOhqE,QAAU+pE,EAAO/pE,OAEhC,OAAOvZ,MAAKgsB,KAAMhe,EAAIA,EAAMC,EAAIA,IAWpCmjB,SAAU,SAAkBvlB,EAAOC,GAE/B,MAAGD,GAAMrK,QAAU,GAAKsK,EAAItK,QAAU,EAC3BhG,KAAKgjE,YAAY1yD,EAAI,GAAIA,EAAI,IAAMtQ,KAAKgjE,YAAY3yD,EAAM,GAAIA,EAAM,IAExE,GAUX43E,YAAa,SAAqB53E,EAAOC,GAErC,MAAGD,GAAMrK,QAAU,GAAKsK,EAAItK,QAAU,EAC3BhG,KAAK6nF,SAASv3E,EAAI,GAAIA,EAAI,IAAMtQ,KAAK6nF,SAASx3E,EAAM,GAAIA,EAAM,IAElE,GASX63E,WAAY,SAAoBhrD,GAC5B,MAAOA,IAAawpD,GAAgBxpD,GAAaspD,GAWrD2B,eAAgB,SAAwBh/E,EAASjD,EAAM5B,EAAO8jF,GAC1D,GAAIC,IAAY,GAAI,SAAU,MAAO,IAAK,KAC1CniF,GAAO0+E,EAAM0D,YAAYpiF,EAEzB,KAAI,GAAIL,GAAI,EAAGA,EAAIwiF,EAASriF,OAAQH,IAAK,CACrC,GAAInF,GAAIwF,CAOR,IALGmiF,EAASxiF,KACRnF,EAAI2nF,EAASxiF,GAAKnF,EAAEqL,MAAM,EAAG,GAAGo+B,cAAgBzpC,EAAEqL,MAAM,IAIzDrL,IAAKyI,GAAQuE,MAAO,CACnBvE,EAAQuE,MAAMhN,IAAgB,MAAV0nF,GAAkBA,IAAW9jF,GAAS,EAC1D,UAeZikF,eAAgB,SAAwBp/E,EAAS9C,EAAO+hF,GACpD,GAAI/hF,GAAU8C,GAAYA,EAAQuE,MAAlC,CAKAk3E,EAAMC,KAAKx+E,EAAO,SAAS/B,EAAO4B,GAC9B0+E,EAAMuD,eAAeh/E,EAASjD,EAAM5B,EAAO8jF,IAG/C,IAAII,GAAUJ,GAAU,WACpB,OAAO,EAIY,SAApB/hF,EAAMq/E,aACLv8E,EAAQs/E,cAAgBD,GAGP,QAAlBniF,EAAMy/E,WACL38E,EAAQu/E,YAAcF,KAU9BF,YAAa,SAAqBK,GAC9B,MAAOA,GAAI19E,QAAQ,eAAgB,SAASsB,GACxC,MAAOA,GAAE,GAAG49B,kBAapBu6C,EAAQh+C,EAAO78B,OAQf++E,oBAAoB,EAQpBC,SAAS,EAQTC,cAAc,EAWdx0E,GAAI,SAAYnL,EAAShC,EAAMkgF,EAAS0B,GACpC,GAAI9wE,GAAQ9Q,EAAKmB,MAAM,IACvBs8E,GAAMC,KAAK5sE,EAAO,SAAS9Q,GACvBy9E,EAAMtwE,GAAGnL,EAAShC,EAAMkgF,GACxB0B,GAAQA,EAAK5hF,MAarBsN,IAAK,SAAatL,EAAShC,EAAMkgF,EAAS0B,GACtC,GAAI9wE,GAAQ9Q,EAAKmB,MAAM,IACvBs8E,GAAMC,KAAK5sE,EAAO,SAAS9Q,GACvBy9E,EAAMnwE,IAAItL,EAAShC,EAAMkgF,GACzB0B,GAAQA,EAAK5hF,MAarB89E,QAAS,SAAiB97E,EAASgjE,EAAWkb,GAC1C,GAAI2B,GAAOhpF,KAEPipF,EAAiB,SAAwBC,GACzC,GAGIC,GAHAC,EAAUF,EAAG/hF,KAAKm/B,cAClB+iD,EAAY3iD,EAAOs/C,kBACnBsD,EAAU1E,EAAM2C,MAAM6B,EAAS,QAKhCE,IAAWN,EAAKJ,qBAITU,GAAWnd,GAAa4a,GAA6B,IAAdmC,EAAG57D,QAChD07D,EAAKJ,oBAAqB,EAC1BI,EAAKF,cAAe,GACdO,GAAald,GAAa4a,EAChCiC,EAAKF,aAA+B,IAAfI,EAAGK,SAAiBC,EAAaC,UAAU5C,EAAeqC,GAExEI,GAAWnd,GAAa4a,IAC/BiC,EAAKJ,oBAAqB,EAC1BI,EAAKF,cAAe,GAIrBO,GAAald,GAAakZ,GACzBmE,EAAaE,cAAcvd,EAAW+c,GAIvCF,EAAKF,eACJK,EAAcH,EAAKW,SAASppF,KAAKyoF,EAAME,EAAI/c,EAAWhjE,EAASk+E,IAKhE8B,GAAe9D,IACd2D,EAAKJ,oBAAqB,EAC1BI,EAAKF,cAAe,EACpBU,EAAan9B,SAIdg9B,GAAald,GAAakZ,GACzBmE,EAAaE,cAAcvd,EAAW+c,IAK9C,OADAlpF,MAAKsU,GAAGnL,EAASo9E,EAAYpa,GAAY8c,GAClCA,GAaXU,SAAU,SAAkBT,EAAI/c,EAAWhjE,EAASk+E,GAChD,GAAIuC,GAAY5pF,KAAKosE,aAAa8c,EAAI/c,GAClC0d,EAAkBD,EAAU5jF,OAC5BmjF,EAAchd,EACd2d,EAAgBF,EAAUG,QAC1BC,EAAgBH,CAGjB1d,IAAa4a,EACZ+C,EAAgB7C,EAEV9a,GAAakZ,IACnByE,EAAgB9C,EAGhBgD,EAAgBJ,EAAU5jF,QAAWkjF,EAAiB,eAAIA,EAAGe,eAAejkF,OAAS,IAMtFgkF,EAAgB,GAAKhqF,KAAK6oF,UACzBM,EAAchE,GAIlBnlF,KAAK6oF,SAAU,CAGf,IAAIqB,GAASlqF,KAAKqsE,iBAAiBljE,EAASggF,EAAaS,EAAWV,EA4BpE,OAxBG/c,IAAakZ,GACZgC,EAAQ9mF,KAAKwkF,EAAWmF,GAIzBJ,IACCI,EAAOF,cAAgBA,EACvBE,EAAO/d,UAAY2d,EAEnBzC,EAAQ9mF,KAAKwkF,EAAWmF,GAExBA,EAAO/d,UAAYgd,QACZe,GAAOF,eAIfb,GAAe9D,IACdgC,EAAQ9mF,KAAKwkF,EAAWmF,GAIxBlqF,KAAK6oF,SAAU,GAGZM,GAUXxE,oBAAqB,WACjB,GAAI1sE,EAgCJ,OA7BQA,GAFLyuB,EAAOs/C,kBACHl+E,EAAO0hF,cAEF,cACA,cACA,+CAIA,gBACA,gBACA,oDAGF9iD,EAAO2/C,gBAET,aACA,YACA,yBAIA,uBACA,sBACA,gCAIRE,EAAYQ,GAAe9uE,EAAM,GACjCsuE,EAAYpB,GAAcltE,EAAM,GAChCsuE,EAAYlB,GAAaptE,EAAM,GACxBsuE,GAUXna,aAAc,SAAsB8c,EAAI/c,GAEpC,GAAGzlC,EAAOs/C,kBACN,MAAOwD,GAAapd,cAIxB,IAAG8c,EAAG/mD,QAAS,CACX,GAAGgqC,GAAagZ,EACZ,MAAO+D,GAAG/mD,OAGd,IAAIgoD,MACAp1E,KAAYA,OAAO6vE,EAAM97E,QAAQogF,EAAG/mD,SAAUyiD,EAAM97E,QAAQogF,EAAGe,iBAC/DL,IASJ,OAPAhF,GAAMC,KAAK9vE,EAAQ,SAAS+qB,GACrB8kD,EAAM6C,QAAQ0C,EAAarqD,EAAMsqD,eAAgB,GAChDR,EAAUrhF,KAAKu3B,GAEnBqqD,EAAY5hF,KAAKu3B,EAAMsqD,cAGpBR,EAKX,MADAV,GAAGkB,WAAa,GACRlB,IAYZ7c,iBAAkB,SAA0BljE,EAASgjE,EAAWhqC,EAAS+mD,GAErE,GAAImB,GAAcxD,CAOlB,OANGjC,GAAM2C,MAAM2B,EAAG/hF,KAAM,UAAYqiF,EAAaC,UAAU7C,EAAesC,GACtEmB,EAAczD,EACR4C,EAAaC,UAAU3C,EAAaoC,KAC1CmB,EAAcvD,IAId/5D,OAAQ63D,EAAM8C,UAAUvlD,GACxBmoD,UAAW1lF,KAAKu6B,MAChBn1B,OAAQk/E,EAAGl/E,OACXm4B,QAASA,EACTgqC,UAAWA,EACXke,YAAaA,EACbpzC,SAAUiyC,EAMVt/E,eAAgB,WACZ,GAAIqtC,GAAWj3C,KAAKi3C,QACpBA,GAASszC,qBAAuBtzC,EAASszC,sBACzCtzC,EAASrtC,gBAAkBqtC,EAASrtC,kBAMxC69B,gBAAiB,WACbznC,KAAKi3C,SAASxP,mBAQlB+iD,WAAY,WACR,MAAOzF,GAAUyF,iBAa7BhB,EAAe9iD,EAAO8iD,cAMtBiB,YAOAre,aAAc,WACV,GAAIse,KAKJ,OAHA9F,GAAMC,KAAK7kF,KAAKyqF,SAAU,SAAS1oD,GAC/B2oD,EAAUniF,KAAKw5B,KAEZ2oD,GASXhB,cAAe,SAAuBvd,EAAWwe,GAC1Cxe,GAAakZ,GAAclZ,GAAakZ,GAAsC,IAAzBsF,EAAapB,cAC1DvpF,MAAKyqF,SAASE,EAAaC,YAElCD,EAAaP,WAAaO,EAAaC,UACvC5qF,KAAKyqF,SAASE,EAAaC,WAAaD,IAUhDlB,UAAW,SAAmBY,EAAanB,GACvC,IAAIA,EAAGmB,YACH,OAAO,CAGX,IAAIQ,GAAK3B,EAAGmB,YACRpyE,IAKJ,OAHAA,GAAM2uE,GAAkBiE,KAAQ3B,EAAG4B,sBAAwBlE,GAC3D3uE,EAAM4uE,GAAkBgE,KAAQ3B,EAAG6B,sBAAwBlE,GAC3D5uE,EAAM6uE,GAAgB+D,KAAQ3B,EAAG8B,oBAAsBlE,GAChD7uE,EAAMoyE,IAOjBh+B,MAAO,WACHrsD,KAAKyqF,cAWT1F,EAAYr+C,EAAOukD,WAEnBnG,YAGA/oD,QAAS,KAIT+C,SAAU,KAGVosD,SAAS,EAQTC,YAAa,SAAqBC,EAAMC,GAEjCrrF,KAAK+7B,UAIR/7B,KAAKkrF,SAAU,EAGflrF,KAAK+7B,SACDqvD,KAAMA,EACNE,WAAY1G,EAAMj/E,UAAW0lF,GAC7BE,WAAW,EACXC,eAAe,EACfC,iBAAiB,EACjBC,gBACA10E,KAAM,IAGVhX,KAAKolF,OAAOiG,KAShBjG,OAAQ,SAAgBiG,GACpB,GAAIrrF,KAAK+7B,UAAW/7B,KAAKkrF,QAAzB,CAKAG,EAAYrrF,KAAK2rF,gBAAgBN,EAGjC,IAAID,GAAOprF,KAAK+7B,QAAQqvD,KACpBQ,EAAcR,EAAKl8E,OAmBvB,OAhBA01E,GAAMC,KAAK7kF,KAAK8kF,SAAU,SAAwBtsD,IAE1Cx4B,KAAKkrF,SAAWE,EAAKj8E,SAAWy8E,EAAYpzD,EAAQxhB,OACpDwhB,EAAQ6uD,QAAQ9mF,KAAKi4B,EAAS6yD,EAAWD,IAE9CprF,MAGAA,KAAK+7B,UACJ/7B,KAAK+7B,QAAQwvD,UAAYF,GAG1BA,EAAUlf,WAAakZ,GACtBrlF,KAAKwqF,aAGFa,IASXb,WAAY,WAGRxqF,KAAK8+B,SAAW8lD,EAAMj/E,UAAW3F,KAAK+7B,SAGtC/7B,KAAK+7B,QAAU,KACf/7B,KAAKkrF,SAAU,GAYnBW,kBAAmB,SAA2B3C,EAAIn8D,EAAQ66D,EAAWnmD,EAAQC,GACzE,GAAIqb,GAAM/8C,KAAK+7B,QACX+vD,GAAS,EACTC,EAAShvC,EAAIyuC,cACbQ,EAAWjvC,EAAI2uC,YAEhBK,IAAU7C,EAAGoB,UAAYyB,EAAOzB,UAAY5jD,EAAO4/C,qBAClDv5D,EAASg/D,EAAOh/D,OAChB66D,EAAYsB,EAAGoB,UAAYyB,EAAOzB,UAClC7oD,EAASynD,EAAGn8D,OAAOnP,QAAUmuE,EAAOh/D,OAAOnP,QAC3C8jB,EAASwnD,EAAGn8D,OAAOhP,QAAUguE,EAAOh/D,OAAOhP,QAC3C+tE,GAAS,IAGV5C,EAAG/c,WAAa8a,GAAeiC,EAAG/c,WAAa6a,KAC9CjqC,EAAI0uC,gBAAkBvC,KAGtBnsC,EAAIyuC,eAAiBM,KACrBE,EAASjpB,SAAW6hB,EAAM+C,YAAYC,EAAWnmD,EAAQC,GACzDsqD,EAASz6B,MAAQqzB,EAAMiD,SAAS96D,EAAQm8D,EAAGn8D,QAC3Ci/D,EAAS9uD,UAAY0nD,EAAMoD,aAAaj7D,EAAQm8D,EAAGn8D,QAEnDgwB,EAAIyuC,cAAgBzuC,EAAI0uC,iBAAmBvC,EAC3CnsC,EAAI0uC,gBAAkBvC,GAG1BA,EAAG+C,UAAYD,EAASjpB,SAASvwD,EACjC02E,EAAGgD,UAAYF,EAASjpB,SAAStwD,EACjCy2E,EAAGiD,aAAeH,EAASz6B,MAC3B23B,EAAGkD,iBAAmBJ,EAAS9uD,WASnCyuD,gBAAiB,SAAyBzC,GACtC,GAAInsC,GAAM/8C,KAAK+7B,QACXswD,EAAUtvC,EAAIuuC,WACdgB,EAASvvC,EAAIwuC,WAAac,GAG3BnD,EAAG/c,WAAa8a,GAAeiC,EAAG/c,WAAa6a,KAC9CqF,EAAQlqD,WACRyiD,EAAMC,KAAKqE,EAAG/mD,QAAS,SAASrC,GAC5BusD,EAAQlqD,QAAQ55B,MACZqV,QAASkiB,EAAMliB,QACfG,QAAS+hB,EAAM/hB,YAK3B,IAAI6pE,GAAYsB,EAAGoB,UAAY+B,EAAQ/B,UACnC7oD,EAASynD,EAAGn8D,OAAOnP,QAAUyuE,EAAQt/D,OAAOnP,QAC5C8jB,EAASwnD,EAAGn8D,OAAOhP,QAAUsuE,EAAQt/D,OAAOhP,OAkBhD,OAhBA/d,MAAK6rF,kBAAkB3C,EAAIoD,EAAOv/D,OAAQ66D,EAAWnmD,EAAQC,GAE7DkjD,EAAMj/E,OAAOujF,GACToC,WAAYe,EAEZzE,UAAWA,EACXnmD,OAAQA,EACRC,OAAQA,EAER/a,SAAUi+D,EAAM5hB,YAAYqpB,EAAQt/D,OAAQm8D,EAAGn8D,QAC/CwkC,MAAOqzB,EAAMiD,SAASwE,EAAQt/D,OAAQm8D,EAAGn8D,QACzCmQ,UAAW0nD,EAAMoD,aAAaqE,EAAQt/D,OAAQm8D,EAAGn8D,QACjDxoB,MAAOqgF,EAAMhvD,SAASy2D,EAAQlqD,QAAS+mD,EAAG/mD,SAC1CoqD,SAAU3H,EAAMqD,YAAYoE,EAAQlqD,QAAS+mD,EAAG/mD,WAG7C+mD,GASXlE,SAAU,SAAkBxsD,GAExB,GAAItpB,GAAUspB,EAAQgtD,YAyBtB,OAxBGt2E,GAAQspB,EAAQxhB,QAAUnQ,IACzBqI,EAAQspB,EAAQxhB,OAAQ,GAI5B4tE,EAAMj/E,OAAO+gC,EAAO8+C,SAAUt2E,GAAS,GAGvCspB,EAAQ9vB,MAAQ8vB,EAAQ9vB,OAAS,IAGjC1I,KAAK8kF,SAASv8E,KAAKiwB,GAGnBx4B,KAAK8kF,SAAS7tE,KAAK,SAASrR,EAAGa,GAC3B,MAAGb,GAAE8C,MAAQjC,EAAEiC,MACJ,GAER9C,EAAE8C,MAAQjC,EAAEiC,MACJ,EAEJ,IAGJ1I,KAAK8kF,UAmBpBp+C,GAAO4+C,SAAW,SAASn8E,EAAS+F,GAChC,GAAI85E,GAAOhpF,IAIXwkF,KAMAxkF,KAAKmJ,QAAUA,EAOfnJ,KAAKmP,SAAU,EAQfy1E,EAAMC,KAAK31E,EAAS,SAAS5K,EAAO0S,SACzB9H,GAAQ8H,GACf9H,EAAQ01E,EAAM0D,YAAYtxE,IAAS1S,IAGvCtE,KAAKkP,QAAU01E,EAAMj/E,OAAOi/E,EAAMj/E,UAAW+gC,EAAO8+C,UAAWt2E,OAG5DlP,KAAKkP,QAAQu2E,UACZb,EAAM2D,eAAevoF,KAAKmJ,QAASnJ,KAAKkP,QAAQu2E,UAAU,GAQ9DzlF,KAAKwsF,kBAAoB9H,EAAMO,QAAQ97E,EAAS49E,EAAa,SAASmC,GAC/DF,EAAK75E,SAAW+5E,EAAG/c,WAAa4a,EAC/BhC,EAAUoG,YAAYnC,EAAME,GACtBA,EAAG/c,WAAa8a,GACtBlC,EAAUK,OAAO8D,KASzBlpF,KAAKysF,kBAGT/lD,EAAO4+C,SAASpxE,WASZI,GAAI,SAAiBwwE,EAAUuC,GAC3B,GAAI2B,GAAOhpF,IAIX,OAHA0kF,GAAMpwE,GAAG00E,EAAK7/E,QAAS27E,EAAUuC,EAAS,SAASlgF,GAC/C6hF,EAAKyD,cAAclkF,MAAOiwB,QAASrxB,EAAMkgF,QAASA,MAE/C2B,GAUXv0E,IAAK,SAAkBqwE,EAAUuC,GAC7B,GAAI2B,GAAOhpF,IAQX,OANA0kF,GAAMjwE,IAAIu0E,EAAK7/E,QAAS27E,EAAUuC,EAAS,SAASlgF,GAChD,GAAIuB,GAAQk8E,EAAM6C,SAAUjvD,QAASrxB,EAAMkgF,QAASA,GACjD3+E,MAAU,GACTsgF,EAAKyD,cAAc9jF,OAAOD,EAAO,KAGlCsgF,GAUXe,QAAS,SAAsBvxD,EAAS6yD,GAEhCA,IACAA,KAIJ,IAAIxhF,GAAQ68B,EAAOw+C,SAASwH,YAAY,QACxC7iF,GAAM8iF,UAAUn0D,GAAS,GAAM,GAC/B3uB,EAAM2uB,QAAU6yD,CAIhB,IAAIliF,GAAUnJ,KAAKmJ,OAMnB,OALGy7E,GAAMx6E,UAAUihF,EAAUrhF,OAAQb,KACjCA,EAAUkiF,EAAUrhF,QAGxBb,EAAQyjF,cAAc/iF,GACf7J,MASXmlC,OAAQ,SAAgB0nD,GAEpB,MADA7sF,MAAKmP,QAAU09E,EACR7sF,MAQX8rD,QAAS,WACL,GAAIjmD,GAAGinF,CAMP,KAHAlI,EAAM2D,eAAevoF,KAAKmJ,QAASnJ,KAAKkP,QAAQu2E,UAAU,GAGtD5/E,EAAI,GAAKinF,EAAK9sF,KAAKysF,gBAAgB5mF,IACnC++E,EAAMnwE,IAAIzU,KAAKmJ,QAAS2jF,EAAGt0D,QAASs0D,EAAGzF,QAQ3C,OALArnF,MAAKysF,iBAGL/H,EAAMjwE,IAAIzU,KAAKmJ,QAASo9E,EAAYQ,GAAc/mF,KAAKwsF,mBAEhD,OAqDf,SAAUx1E,GAGN,QAAS+1E,GAAY7D,EAAIkC,GACrB,GAAIruC,GAAMgoC,EAAUhpD,OAGpB,MAAGqvD,EAAKl8E,QAAQ89E,eAAiB,GAC7B9D,EAAG/mD,QAAQn8B,OAASolF,EAAKl8E,QAAQ89E,gBAIrC,OAAO9D,EAAG/c,WACN,IAAK4a,GACDkG,GAAY,CACZ,MAEJ,KAAK9H,GAGD,GAAG+D,EAAGviE,SAAWykE,EAAKl8E,QAAQg+E,iBAC1BnwC,EAAI/lC,MAAQA,EACZ,MAGJ,IAAIm2E,GAAcpwC,EAAIuuC,WAAWv+D,MAGjC,IAAGgwB,EAAI/lC,MAAQA,IACX+lC,EAAI/lC,KAAOA,EACRo0E,EAAKl8E,QAAQk+E,wBAA0BlE,EAAGviE,SAAW,GAAG,CAIvD,GAAIwiC,GAAS3kD,KAAKknB,IAAI0/D,EAAKl8E,QAAQg+E,gBAAkBhE,EAAGviE,SACxDwmE,GAAY50D,OAAS2wD,EAAGznD,OAAS0nB,EACjCgkC,EAAY10D,OAASywD,EAAGxnD,OAASynB,EACjCgkC,EAAYvvE,SAAWsrE,EAAGznD,OAAS0nB,EACnCgkC,EAAYpvE,SAAWmrE,EAAGxnD,OAASynB,EAGnC+/B,EAAKnE,EAAU4G,gBAAgBzC,IAKpCnsC,EAAIwuC,UAAU8B,gBACXjC,EAAKl8E,QAAQm+E,gBACXjC,EAAKl8E,QAAQo+E,qBAAuBpE,EAAGviE,YAE3CuiE,EAAGmE,gBAAiB,EAIxB,IAAIE,GAAgBxwC,EAAIwuC,UAAUruD,SAC/BgsD,GAAGmE,gBAAkBE,IAAkBrE,EAAGhsD,YAErCgsD,EAAGhsD,UADJ0nD,EAAMsD,WAAWqF,GACArE,EAAGxnD,OAAS,EAAKglD,EAAeF,EAEhC0C,EAAGznD,OAAS,EAAKglD,EAAiBE,GAKtDsG,IACA7B,EAAKrB,QAAQ/yE,EAAO,QAASkyE,GAC7B+D,GAAY,GAIhB7B,EAAKrB,QAAQ/yE,EAAMkyE,GACnBkC,EAAKrB,QAAQ/yE,EAAOkyE,EAAGhsD,UAAWgsD,EAElC,IAAIhB,GAAatD,EAAMsD,WAAWgB,EAAGhsD,YAGjCkuD,EAAKl8E,QAAQs+E,mBAAqBtF,GACjCkD,EAAKl8E,QAAQu+E,sBAAwBvF,IACtCgB,EAAGt/E,gBAEP,MAEJ,KAAKo9E,GACEiG,GAAa/D,EAAGc,eAAiBoB,EAAKl8E,QAAQ89E,iBAC7C5B,EAAKrB,QAAQ/yE,EAAO,MAAOkyE,GAC3B+D,GAAY,EAEhB,MAEJ,KAAK5H,GACD4H,GAAY,GAzFxB,GAAIA,IAAY,CA8FhBvmD,GAAOo+C,SAAS4I,MACZ12E,KAAMA,EACNtO,MAAO,GACP2+E,QAAS0F,EACTvH,UAOI0H,gBAAiB,GAWjBE,wBAAwB,EAQxBJ,eAAgB,EAUhBS,qBAAqB,EAQrBD,mBAAmB,EASnBH,gBAAgB,EAShBC,oBAAqB,MAG9B,QAgBH5mD,EAAOo+C,SAAS6I,SACZ32E,KAAM,UACNtO,MAAO,KACP2+E,QAAS,SAAwB6B,EAAIkC,GACjCA,EAAKrB,QAAQ/pF,KAAKgX,KAAMkyE,KAqBhC,SAAUlyE,GAGN,QAAS42E,GAAY1E,EAAIkC,GACrB,GAAIl8E,GAAUk8E,EAAKl8E,QACf6sB,EAAUgpD,EAAUhpD,OAExB,QAAOmtD,EAAG/c,WACN,IAAK4a,GACDzsE,aAAagtC,GAGbvrB,EAAQ/kB,KAAOA,EAIfswC,EAAQ/sC,WAAW,WACZwhB,GAAWA,EAAQ/kB,MAAQA,GAC1Bo0E,EAAKrB,QAAQ/yE,EAAMkyE,IAExBh6E,EAAQ2+E,YACX,MAEJ,KAAK1I,GACE+D,EAAGviE,SAAWzX,EAAQ4+E,eACrBxzE,aAAagtC,EAEjB,MAEJ,KAAK0/B,GACD1sE,aAAagtC,IA7BzB,GAAIA,EAkCJ5gB,GAAOo+C,SAASiJ,MACZ/2E,KAAMA,EACNtO,MAAO,GACP88E,UAMIqI,YAAa,IAQbC,cAAe,GAEnBzG,QAASuG,IAEd,QAeHlnD,EAAOo+C,SAASkJ,SACZh3E,KAAM,UACNtO,MAAOgR,IACP2tE,QAAS,SAAwB6B,EAAIkC,GAC9BlC,EAAG/c,WAAa6a,GACfoE,EAAKrB,QAAQ/pF,KAAKgX,KAAMkyE,KAyCpCxiD,EAAOo+C,SAASmJ,OACZj3E,KAAM,QACNtO,MAAO,GACP88E,UAMI0I,gBAAiB,EAOjBC,gBAAiB,EAQjBC,eAAgB,GAQhBC,eAAgB,IAGpBhH,QAAS,SAAsB6B,EAAIkC,GAC/B,GAAGlC,EAAG/c,WAAa6a,EAAe,CAC9B,GAAI7kD,GAAU+mD,EAAG/mD,QAAQn8B,OACrBkJ,EAAUk8E,EAAKl8E,OAGnB,IAAGizB,EAAUjzB,EAAQg/E,iBACjB/rD,EAAUjzB,EAAQi/E,gBAClB,QAKDjF,EAAG+C,UAAY/8E,EAAQk/E,gBACtBlF,EAAGgD,UAAYh9E,EAAQm/E,kBAEvBjD,EAAKrB,QAAQ/pF,KAAKgX,KAAMkyE,GACxBkC,EAAKrB,QAAQ/pF,KAAKgX,KAAOkyE,EAAGhsD,UAAWgsD,OA2BvD,SAAUlyE,GAGN,QAASs3E,GAAWpF,EAAIkC,GACpB,GAGImD,GACAC,EAJAt/E,EAAUk8E,EAAKl8E,QACf6sB,EAAUgpD,EAAUhpD,QACpBvJ,EAAOuyD,EAAUjmD,QAIrB,QAAOoqD,EAAG/c,WACN,IAAK4a,GACD0H,GAAW,CACX,MAEJ,KAAKtJ,GACDsJ,EAAWA,GAAavF,EAAGviE,SAAWzX,EAAQw/E,cAC9C,MAEJ,KAAKrJ,IACGT,EAAM2C,MAAM2B,EAAGjyC,SAAS9vC,KAAM,WAAa+hF,EAAGtB,UAAY14E,EAAQy/E,aAAeF,IAEjFF,EAAY/7D,GAAQA,EAAK+4D,WAAarC,EAAGoB,UAAY93D,EAAK+4D,UAAUjB,UACpEkE,GAAe,EAGZh8D,GAAQA,EAAKxb,MAAQA,GACnBu3E,GAAaA,EAAYr/E,EAAQ0/E,mBAClC1F,EAAGviE,SAAWzX,EAAQ2/E,oBACtBzD,EAAKrB,QAAQ,YAAab,GAC1BsF,GAAe,KAIfA,GAAgBt/E,EAAQ4/E,aACxB/yD,EAAQ/kB,KAAOA,EACfo0E,EAAKrB,QAAQhuD,EAAQ/kB,KAAMkyE,MAnC/C,GAAIuF,IAAW,CA0Cf/nD,GAAOo+C,SAASiK,KACZ/3E,KAAMA,EACNtO,MAAO,IACP2+E,QAASiH,EACT9I,UAOImJ,WAAY,IAQZD,eAAgB,GAQhBI,WAAW,EAQXD,kBAAmB,GAQnBD,kBAAmB,OAG5B,OAeHloD,EAAOo+C,SAASkK,OACZh4E,KAAM,QACNtO,OAAQgR,IACR8rE,UASI57E,gBAAgB,EAQhBqlF,cAAc,GAElB5H,QAAS,SAAsB6B,EAAIkC,GAC/B,MAAGA,GAAKl8E,QAAQ+/E,cAAgB/F,EAAGmB,aAAezD,MAC9CsC,GAAGsB,cAIJY,EAAKl8E,QAAQtF,gBACZs/E,EAAGt/E,sBAGJs/E,EAAG/c,WAAa8a,GACfmE,EAAKrB,QAAQ,QAASb,OA4ClC,SAAUlyE,GAGN,QAASk4E,GAAiBhG,EAAIkC,GAC1B,OAAOlC,EAAG/c,WACN,IAAK4a,GACDkG,GAAY,CACZ,MAEJ,KAAK9H,GAED,GAAG+D,EAAG/mD,QAAQn8B,OAAS,EACnB,MAGJ,IAAImpF,GAAiB3qF,KAAKknB,IAAI,EAAIw9D,EAAG3kF,OACjC6qF,EAAoB5qF,KAAKknB,IAAIw9D,EAAGqD,SAIpC,IAAG4C,EAAiB/D,EAAKl8E,QAAQmgF,mBAC7BD,EAAoBhE,EAAKl8E,QAAQogF,qBACjC,MAIJvK,GAAUhpD,QAAQ/kB,KAAOA,EAGrBi2E,IACA7B,EAAKrB,QAAQ/yE,EAAO,QAASkyE,GAC7B+D,GAAY,GAGhB7B,EAAKrB,QAAQ/yE,EAAMkyE,GAGhBkG,EAAoBhE,EAAKl8E,QAAQogF,sBAChClE,EAAKrB,QAAQ,SAAUb,GAIxBiG,EAAiB/D,EAAKl8E,QAAQmgF,oBAC7BjE,EAAKrB,QAAQ,QAASb,GACtBkC,EAAKrB,QAAQ,SAAWb,EAAG3kF,MAAQ,EAAI,KAAO,OAAQ2kF,GAE1D,MAEJ,KAAKlC,GACEiG,GAAa/D,EAAGc,cAAgB,IAC/BoB,EAAKrB,QAAQ/yE,EAAO,MAAOkyE,GAC3B+D,GAAY,IAlD5B,GAAIA,IAAY,CAwDhBvmD,GAAOo+C,SAASyK,WACZv4E,KAAMA,EACNtO,MAAO,GACP88E,UAOI6J,kBAAmB,IAQnBC,qBAAsB,GAG1BjI,QAAS6H,IAEd,aAQGxb,EAAgC,WAC9B,MAAOhtC,IACTnmC,KAAKX,EAASM,EAAqBN,EAASC,KAAS6zE,IAAkC7sE,IAAchH,EAAOD,QAAU8zE,KASzH5rE,SAIC,SAASjI,EAAQD,EAASM,GAE9B,GAAIwzE,IAA0D,SAAS8b,EAAQ3vF,IAM/E,SAAWgH,GA+RP,QAAS4oF,GAAI7pF,EAAGa,EAAGhG,GACf,OAAQsF,UAAUC,QACd,IAAK,GAAG,MAAY,OAALJ,EAAYA,EAAIa,CAC/B,KAAK,GAAG,MAAY,OAALb,EAAYA,EAAS,MAALa,EAAYA,EAAIhG,CAC/C,SAAS,KAAM,IAAImD,OAAM,iBAIjC,QAAS8rF,GAAW9pF,EAAGa,GACnB,MAAON,IAAe5F,KAAKqF,EAAGa,GAGlC,QAASkpF,KAGL,OACIC,OAAQ,EACRC,gBACAC,eACAjrE,SAAW,GACXkrE,cAAgB,EAChBC,WAAY,EACZC,aAAe,KACfC,eAAgB,EAChBC,iBAAkB,EAClBC,KAAK,GAIb,QAASC,GAASC,GACVzsF,GAAO0sF,+BAAgC,GAChB,mBAAZ11D,UAA2BA,QAAQ21D,MAC9C31D,QAAQ21D,KAAK,wBAA0BF,GAI/C,QAASG,GAAUH,EAAKn2E,GACpB,GAAIu2E,IAAY,CAChB,OAAO/qF,GAAO,WAKV,MAJI+qF,KACAL,EAASC,GACTI,GAAY,GAETv2E,EAAGrB,MAAM9Y,KAAM+F,YACvBoU,GAGP,QAASw2E,GAAgB35E,EAAMs5E,GACtBM,GAAa55E,KACdq5E,EAASC,GACTM,GAAa55E,IAAQ,GAI7B,QAAS65E,GAASC,EAAM/4E,GACpB,MAAO,UAAUnS,GACb,MAAOmrF,GAAaD,EAAKvwF,KAAKP,KAAM4F,GAAImS,IAGhD,QAASi5E,GAAgBF,EAAMG,GAC3B,MAAO,UAAUrrF,GACb,MAAO5F,MAAKkxF,aAAaC,QAAQL,EAAKvwF,KAAKP,KAAM4F,GAAIqrF,IAI7D,QAASG,GAAUxrF,EAAGa,GAElB,GAGI4qF,GAASC,EAHTC,EAA0C,IAAvB9qF,EAAEg0B,OAAS70B,EAAE60B,SAAiBh0B,EAAEm0B,QAAUh1B,EAAEg1B,SAE/DwM,EAASxhC,EAAE00B,QAAQtmB,IAAIu9E,EAAgB,SAa3C,OAViB,GAAb9qF,EAAI2gC,GACJiqD,EAAUzrF,EAAE00B,QAAQtmB,IAAIu9E,EAAiB,EAAG,UAE5CD,GAAU7qF,EAAI2gC,IAAWA,EAASiqD,KAElCA,EAAUzrF,EAAE00B,QAAQtmB,IAAIu9E,EAAiB,EAAG,UAE5CD,GAAU7qF,EAAI2gC,IAAWiqD,EAAUjqD,MAG9BmqD,EAAiBD,GAc9B,QAASE,GAAgBprD,EAAQvC,EAAM4tD,GACnC,GAAIC,EAEJ,OAAgB,OAAZD,EAEO5tD,EAEgB,MAAvBuC,EAAOurD,aACAvrD,EAAOurD,aAAa9tD,EAAM4tD,GACX,MAAfrrD,EAAOwrD,MAEdF,EAAOtrD,EAAOwrD,KAAKH,GACfC,GAAe,GAAP7tD,IACRA,GAAQ,IAEP6tD,GAAiB,KAAT7tD,IACTA,EAAO,GAEJA,GAGAA,EAQf,QAASguD,MAIT,QAASC,GAAO1N,EAAQ2N,GAChBA,KAAiB,GACjBC,EAAc5N,GAElB6N,EAAWjyF,KAAMokF,GACjBpkF,KAAKo6B,GAAK,GAAIx1B,OAAMw/E,EAAOhqD,IAGvB83D,MAAqB,IACrBA,IAAmB,EACnBruF,GAAOsuF,aAAanyF,MACpBkyF,IAAmB,GAK3B,QAASE,GAAS7hF,GACd,GAAI8hF,GAAkBC,EAAqB/hF,GACvCgiF,EAAQF,EAAgB53D,MAAQ,EAChC+3D,EAAWH,EAAgBI,SAAW,EACtCC,EAASL,EAAgBz3D,OAAS,EAClC+3D,EAAQN,EAAgBO,MAAQ,EAChCC,EAAOR,EAAgB93D,KAAO,EAC9B6E,EAAQizD,EAAgBxuD,MAAQ,EAChCxE,EAAUgzD,EAAgBzuD,QAAU,EACpCtE,EAAU+yD,EAAgB1uD,QAAU,EACpCpE,EAAe8yD,EAAgB3uD,aAAe,CAGlD1jC,MAAK8yF,eAAiBvzD,EACR,IAAVD,EACU,IAAVD,EACQ,KAARD,EAGJp/B,KAAK+yF,OAASF,EACF,EAARF,EAIJ3yF,KAAKgzF,SAAWN,EACD,EAAXF,EACQ,GAARD,EAEJvyF,KAAK2T,SAEL3T,KAAKizF,QAAUpvF,GAAOqtF,aAEtBlxF,KAAKkzF,UAQT,QAASvtF,GAAOC,EAAGa,GACf,IAAK,GAAIZ,KAAKY,GACNipF,EAAWjpF,EAAGZ,KACdD,EAAEC,GAAKY,EAAEZ,GAYjB,OARI6pF,GAAWjpF,EAAG,cACdb,EAAEF,SAAWe,EAAEf,UAGfgqF,EAAWjpF,EAAG,aACdb,EAAEyB,QAAUZ,EAAEY,SAGXzB,EAGX,QAASqsF,GAAW7nE,EAAID,GACpB,GAAItkB,GAAGK,EAAMitF,CAiCb,IA/BqC,mBAA1BhpE,GAAKipE,mBACZhpE,EAAGgpE,iBAAmBjpE,EAAKipE,kBAER,mBAAZjpE,GAAKkpE,KACZjpE,EAAGipE,GAAKlpE,EAAKkpE,IAEM,mBAAZlpE,GAAKmpE,KACZlpE,EAAGkpE,GAAKnpE,EAAKmpE,IAEM,mBAAZnpE,GAAKopE,KACZnpE,EAAGmpE,GAAKppE,EAAKopE,IAEW,mBAAjBppE,GAAKqpE,UACZppE,EAAGopE,QAAUrpE,EAAKqpE,SAEG,mBAAdrpE,GAAKspE,OACZrpE,EAAGqpE,KAAOtpE,EAAKspE,MAEQ,mBAAhBtpE,GAAKupE,SACZtpE,EAAGspE,OAASvpE,EAAKupE,QAEO,mBAAjBvpE,GAAKwpE,UACZvpE,EAAGupE,QAAUxpE,EAAKwpE,SAEE,mBAAbxpE,GAAKypE,MACZxpE,EAAGwpE,IAAMzpE,EAAKypE,KAEU,mBAAjBzpE,GAAK8oE,UACZ7oE,EAAG6oE,QAAU9oE,EAAK8oE,SAGlBY,GAAiB7tF,OAAS,EAC1B,IAAKH,IAAKguF,IACN3tF,EAAO2tF,GAAiBhuF,GACxBstF,EAAMhpE,EAAKjkB,GACQ,mBAARitF,KACP/oE,EAAGlkB,GAAQitF,EAKvB,OAAO/oE,GAGX,QAAS0pE,GAASC,GACd,MAAa,GAATA,EACOvvF,KAAKu2C,KAAKg5C,GAEVvvF,KAAKgB,MAAMuuF,GAM1B,QAAShD,GAAagD,EAAQC,EAAcC,GAIxC,IAHA,GAAIC,GAAS,GAAK1vF,KAAKknB,IAAIqoE,GACvBlkE,EAAOkkE,GAAU,EAEdG,EAAOluF,OAASguF,GACnBE,EAAS,IAAMA,CAEnB,QAAQrkE,EAAQokE,EAAY,IAAM,GAAM,KAAOC,EAGnD,QAASC,GAA0BC,EAAMnuF,GACrC,GAAIouF,IAAO90D,aAAc,EAAGmzD,OAAQ,EAUpC,OARA2B,GAAI3B,OAASzsF,EAAM20B,QAAUw5D,EAAKx5D,QACC,IAA9B30B,EAAMw0B,OAAS25D,EAAK35D,QACrB25D,EAAK95D,QAAQtmB,IAAIqgF,EAAI3B,OAAQ,KAAK4B,QAAQruF,MACxCouF,EAAI3B,OAGV2B,EAAI90D,cAAgBt5B,GAAUmuF,EAAK95D,QAAQtmB,IAAIqgF,EAAI3B,OAAQ,KAEpD2B,EAGX,QAASE,GAAkBH,EAAMnuF,GAC7B,GAAIouF,EAUJ,OATApuF,GAAQuuF,EAAOvuF,EAAOmuF,GAClBA,EAAKK,SAASxuF,GACdouF,EAAMF,EAA0BC,EAAMnuF,IAEtCouF,EAAMF,EAA0BluF,EAAOmuF,GACvCC,EAAI90D,cAAgB80D,EAAI90D,aACxB80D,EAAI3B,QAAU2B,EAAI3B,QAGf2B,EAIX,QAASK,GAAYx3D,EAAWlmB,GAC5B,MAAO,UAAUm8E,EAAKlC,GAClB,GAAI0D,GAAKC,CAUT,OARe,QAAX3D,GAAoBjsF,OAAOisF,KAC3BN,EAAgB35E,EAAM,YAAcA,EAAQ,uDAAyDA,EAAO,qBAC5G49E,EAAMzB,EAAKA,EAAMlC,EAAQA,EAAS2D,GAGtCzB,EAAqB,gBAARA,IAAoBA,EAAMA,EACvCwB,EAAM9wF,GAAO0M,SAAS4iF,EAAKlC,GAC3B4D,EAAgC70F,KAAM20F,EAAKz3D,GACpCl9B,MAIf,QAAS60F,GAAgCC,EAAKvkF,EAAUwkF,EAAU5C,GAC9D,GAAI5yD,GAAehvB,EAASuiF,cACxBD,EAAOtiF,EAASwiF,MAChBL,EAASniF,EAASyiF,OACtBb,GAA+B,MAAhBA,GAAuB,EAAOA,EAEzC5yD,GACAu1D,EAAI16D,GAAG46D,SAASF,EAAI16D,GAAKmF,EAAew1D,GAExClC,GACAoC,GAAUH,EAAK,OAAQI,GAAUJ,EAAK,QAAUjC,EAAOkC,GAEvDrC,GACAyC,GAAeL,EAAKI,GAAUJ,EAAK,SAAWpC,EAASqC,GAEvD5C,GACAtuF,GAAOsuF,aAAa2C,EAAKjC,GAAQH,GAKzC,QAASnsF,GAAQ6uF,GACb,MAAiD,mBAA1CxuF,OAAOsN,UAAUxO,SAASnF,KAAK60F,GAG1C,QAASzwF,GAAOywF,GACZ,MAAiD,kBAA1CxuF,OAAOsN,UAAUxO,SAASnF,KAAK60F,IAClCA,YAAiBxwF,MAIzB,QAASywF,GAAcxtB,EAAQC,EAAQwtB,GACnC,GAGIzvF,GAHAC,EAAMtB,KAAKL,IAAI0jE,EAAO7hE,OAAQ8hE,EAAO9hE,QACrCuvF,EAAa/wF,KAAKknB,IAAIm8C,EAAO7hE,OAAS8hE,EAAO9hE,QAC7CwvF,EAAQ,CAEZ,KAAK3vF,EAAI,EAAOC,EAAJD,EAASA,KACZyvF,GAAeztB,EAAOhiE,KAAOiiE,EAAOjiE,KACnCyvF,GAAeG,EAAM5tB,EAAOhiE,MAAQ4vF,EAAM3tB,EAAOjiE,MACnD2vF,GAGR,OAAOA,GAAQD,EAGnB,QAASG,GAAeC,GACpB,GAAIA,EAAO,CACP,GAAIC,GAAUD,EAAMrvD,cAAcr7B,QAAQ,QAAS,KACnD0qF,GAAQE,GAAYF,IAAUG,GAAeF,IAAYA,EAE7D,MAAOD,GAGX,QAASrD,GAAqByD,GAC1B,GACIC,GACA9vF,EAFAmsF,IAIJ,KAAKnsF,IAAQ6vF,GACLrG,EAAWqG,EAAa7vF,KACxB8vF,EAAiBN,EAAexvF,GAC5B8vF,IACA3D,EAAgB2D,GAAkBD,EAAY7vF,IAK1D,OAAOmsF,GAGX,QAAS4D,GAAS1mF,GACd,GAAIwI,GAAOm+E,CAEX,IAA8B,IAA1B3mF,EAAMvI,QAAQ,QACd+Q,EAAQ,EACRm+E,EAAS,UAER,CAAA,GAA+B,IAA3B3mF,EAAMvI,QAAQ,SAKnB,MAJA+Q,GAAQ,GACRm+E,EAAS,QAMbryF,GAAO0L,GAAS,SAAUg0B,EAAQ76B,GAC9B,GAAI7C,GAAGswF,EACHl8E,EAASpW,GAAOovF,QAAQ1jF,GACxB6mF,IAYJ,IAVsB,gBAAX7yD,KACP76B,EAAQ66B,EACRA,EAAS18B,GAGbsvF,EAAS,SAAUtwF,GACf,GAAIrF,GAAIqD,KAASwyF,MAAMC,IAAIJ,EAAQrwF,EACnC,OAAOoU,GAAO1Z,KAAKsD,GAAOovF,QAASzyF,EAAG+iC,GAAU,KAGvC,MAAT76B,EACA,MAAOytF,GAAOztF,EAGd,KAAK7C,EAAI,EAAOkS,EAAJlS,EAAWA,IACnBuwF,EAAQ7tF,KAAK4tF,EAAOtwF,GAExB,OAAOuwF,IAKnB,QAASX,GAAMc,GACX,GAAIC,IAAiBD,EACjBjyF,EAAQ,CAUZ,OARsB,KAAlBkyF,GAAuBC,SAASD,KAE5BlyF,EADAkyF,GAAiB,EACThyF,KAAKgB,MAAMgxF,GAEXhyF,KAAKu2C,KAAKy7C,IAInBlyF,EAGX,QAASoyF,GAAYj8D,EAAMG,GACvB,MAAO,IAAIh2B,MAAKA,KAAK+xF,IAAIl8D,EAAMG,EAAQ,EAAG,IAAIg8D,aAGlD,QAASC,GAAYp8D,EAAMq8D,EAAKC,GAC5B,MAAOC,IAAWnzF,IAAQ42B,EAAM,GAAI,GAAKq8D,EAAMC,IAAOD,EAAKC,GAAKnE,KAGpE,QAASqE,GAAWx8D,GAChB,MAAOy8D,GAAWz8D,GAAQ,IAAM,IAGpC,QAASy8D,GAAWz8D,GAChB,MAAQA,GAAO,IAAM,GAAKA,EAAO,MAAQ,GAAMA,EAAO,MAAQ,EAGlE,QAASu3D,GAAcxxF,GACnB,GAAIqkB,EACArkB,GAAE22F,IAAyB,KAAnB32F,EAAEozF,IAAI/uE,WACdA,EACIrkB,EAAE22F,GAAGC,IAAS,GAAK52F,EAAE22F,GAAGC,IAAS,GAAKA,GACtC52F,EAAE22F,GAAGE,IAAQ,GAAK72F,EAAE22F,GAAGE,IAAQX,EAAYl2F,EAAE22F,GAAGG,IAAO92F,EAAE22F,GAAGC,KAAUC,GACtE72F,EAAE22F,GAAGI,IAAQ,GAAK/2F,EAAE22F,GAAGI,IAAQ,IACX,KAAf/2F,EAAE22F,GAAGI,MAAkC,IAAjB/2F,EAAE22F,GAAGK,KACY,IAAjBh3F,EAAE22F,GAAGM,KACiB,IAAtBj3F,EAAE22F,GAAGO,KAAuBH,GACvD/2F,EAAE22F,GAAGK,IAAU,GAAKh3F,EAAE22F,GAAGK,IAAU,GAAKA,GACxCh3F,EAAE22F,GAAGM,IAAU,GAAKj3F,EAAE22F,GAAGM,IAAU,GAAKA,GACxCj3F,EAAE22F,GAAGO,IAAe,GAAKl3F,EAAE22F,GAAGO,IAAe,IAAMA,GACnD,GAEAl3F,EAAEozF,IAAI+D,qBAAkCL,GAAXzyE,GAAmBA,EAAWwyE,MAC3DxyE,EAAWwyE,IAGf72F,EAAEozF,IAAI/uE,SAAWA,GAIzB,QAAS+yE,GAAQp3F,GAiBb,MAhBkB,OAAdA,EAAEq3F,WACFr3F,EAAEq3F,UAAY7yF,MAAMxE,EAAE45B,GAAG09D,YACrBt3F,EAAEozF,IAAI/uE,SAAW,IAChBrkB,EAAEozF,IAAIhE,QACNpvF,EAAEozF,IAAI3D,eACNzvF,EAAEozF,IAAI5D,YACNxvF,EAAEozF,IAAI1D,gBACN1vF,EAAEozF,IAAIzD,gBAEP3vF,EAAEgzF,UACFhzF,EAAEq3F,SAAWr3F,EAAEq3F,UACa,IAAxBr3F,EAAEozF,IAAI7D,eACwB,IAA9BvvF,EAAEozF,IAAI/D,aAAa7pF,QACnBxF,EAAEozF,IAAImE,UAAYlxF,IAGvBrG,EAAEq3F,SAGb,QAASG,GAAgB/uF,GACrB,MAAOA,GAAMA,EAAIq9B,cAAcr7B,QAAQ,IAAK,KAAOhC,EAMvD,QAASgvF,GAAaC,GAGlB,IAFA,GAAWzrE,GAAGpD,EAAM+c,EAAQ99B,EAAxBzC,EAAI,EAEDA,EAAIqyF,EAAMlyF,QAAQ,CAKrB,IAJAsC,EAAQ0vF,EAAgBE,EAAMryF,IAAIyC,MAAM,KACxCmkB,EAAInkB,EAAMtC,OACVqjB,EAAO2uE,EAAgBE,EAAMryF,EAAI,IACjCwjB,EAAOA,EAAOA,EAAK/gB,MAAM,KAAO,KACzBmkB,EAAI,GAAG,CAEV,GADA2Z,EAAS+xD,EAAW7vF,EAAMyD,MAAM,EAAG0gB,GAAGjkB,KAAK,MAEvC,MAAO49B,EAEX,IAAI/c,GAAQA,EAAKrjB,QAAUymB,GAAK4oE,EAAc/sF,EAAO+gB,GAAM,IAASoD,EAAI,EAEpE,KAEJA,KAEJ5mB,IAEJ,MAAO,MAGX,QAASsyF,GAAWnhF,GAChB,GAAIohF,GAAY,IAChB,KAAKnuD,GAAQjzB,IAASqhF,GAClB,IACID,EAAYv0F,GAAOuiC,UACjB,WAAkC,GAAI97B,GAAI,GAAI1G,OAAM,gCAAiE,MAA7B0G,GAAE2pE,KAAO,mBAA0B3pE,KAE7HzG,GAAOuiC,OAAOgyD,GAChB,MAAO9tF,IAEb,MAAO2/B,IAAQjzB,GAKnB,QAASw9E,GAAOY,EAAOkD,GACnB,GAAIjE,GAAKnnE,CACT,OAAIorE,GAAM5E,QACNW,EAAMiE,EAAMh+D,QACZpN,GAAQrpB,GAAOyD,SAAS8tF,IAAUzwF,EAAOywF,IAChCA,GAASvxF,GAAOuxF,KAAYf,EAErCA,EAAIj6D,GAAG46D,SAASX,EAAIj6D,GAAKlN,GACzBrpB,GAAOsuF,aAAakC,GAAK,GAClBA,GAEAxwF,GAAOuxF,GAAOmD,QA6N7B,QAASC,GAAuBpD,GAC5B,MAAIA,GAAMvwF,MAAM,YACLuwF,EAAMnqF,QAAQ,WAAY,IAE9BmqF,EAAMnqF,QAAQ,MAAO,IAGhC,QAASwtF,GAAmBl1D,GACxB,GAA4C19B,GAAGG,EAA3C+C,EAAQw6B,EAAO1+B,MAAM6zF,GAEzB,KAAK7yF,EAAI,EAAGG,EAAS+C,EAAM/C,OAAYA,EAAJH,EAAYA,IAEvCkD,EAAMlD,GADN8yF,GAAqB5vF,EAAMlD,IAChB8yF,GAAqB5vF,EAAMlD,IAE3B2yF,EAAuBzvF,EAAMlD,GAIhD,OAAO,UAAUivF,GACb,GAAIZ,GAAS,EACb,KAAKruF,EAAI,EAAOG,EAAJH,EAAYA,IACpBquF,GAAUnrF,EAAMlD,YAAcovC,UAAWlsC,EAAMlD,GAAGtF,KAAKu0F,EAAKvxD,GAAUx6B,EAAMlD,EAEhF,OAAOquF,IAKf,QAAS0E,GAAap4F,EAAG+iC,GACrB,MAAK/iC,GAAEo3F,WAIPr0D,EAASs1D,EAAat1D,EAAQ/iC,EAAE0wF,cAE3B4H,GAAgBv1D,KACjBu1D,GAAgBv1D,GAAUk1D,EAAmBl1D,IAG1Cu1D,GAAgBv1D,GAAQ/iC,IATpBA,EAAE0wF,aAAa6H,cAY9B,QAASF,GAAat1D,EAAQ6C,GAG1B,QAAS4yD,GAA4B5D,GACjC,MAAOhvD,GAAO6yD,eAAe7D,IAAUA,EAH3C,GAAIvvF,GAAI,CAOR,KADAqzF,GAAsBC,UAAY,EAC3BtzF,GAAK,GAAKqzF,GAAsBzqF,KAAK80B,IACxCA,EAASA,EAAOt4B,QAAQiuF,GAAuBF,GAC/CE,GAAsBC,UAAY,EAClCtzF,GAAK,CAGT,OAAO09B,GAUX,QAAS61D,GAAsB7yB,EAAO6d,GAClC,GAAIx+E,GAAGohE,EAASod,EAAOoP,OACvB,QAAQjtB,GACR,IAAK,IACD,MAAO8yB,GACX,KAAK,OACD,MAAOC,GACX,KAAK,OACL,IAAK,OACL,IAAK,OACD,MAAOtyB,GAASuyB,GAAuBC,EAC3C,KAAK,IACL,IAAK,IACL,IAAK,IACD,MAAOC,GACX,KAAK,SACL,IAAK,QACL,IAAK,QACL,IAAK,QACD,MAAOzyB,GAAS0yB,GAAsBC,EAC1C,KAAK,IACD,GAAI3yB,EACA,MAAOqyB,GAGf,KAAK,KACD,GAAIryB,EACA,MAAO4yB,GAGf,KAAK,MACD,GAAI5yB,EACA,MAAOsyB,GAGf,KAAK,MACD,MAAOO,GACX,KAAK,MACL,IAAK,OACL,IAAK,KACL,IAAK,MACL,IAAK,OACD,MAAOC,GACX,KAAK,IACL,IAAK,IACD,MAAO1V,GAAO6O,QAAQ8G,cAC1B,KAAK,IACD,MAAOC,GACX,KAAK,IACD,MAAOC,GACX,KAAK,IACL,IAAK,KACD,MAAOC,GACX,KAAK,IACD,MAAOC,GACX,KAAK,OACD,MAAOC,GACX,KAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACD,MAAOpzB,GAAS4yB,GAAsBS,EAC1C,KAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,MAAOA,GACX,KAAK,KACD,MAAOrzB,GAASod,EAAO6O,QAAQqH,cAAgBlW,EAAO6O,QAAQsH,oBAClE,SAEI,MADA30F,GAAI,GAAI40F,QAAOC,GAAaC,GAAen0B,EAAMt7D,QAAQ,KAAM,KAAM,OAK7E,QAAS0vF,GAAoBC,GACzBA,EAASA,GAAU,EACnB,IAAIC,GAAqBD,EAAO/1F,MAAMq1F,QAClCY,EAAUD,EAAkBA,EAAkB70F,OAAS,OACvD4H,GAASktF,EAAU,IAAIj2F,MAAMk2F,MAA0B,IAAK,EAAG,GAC/D17D,IAAuB,GAAXzxB,EAAM,IAAW6nF,EAAM7nF,EAAM,GAE7C,OAAoB,MAAbA,EAAM,GAAayxB,GAAWA,EAIzC,QAAS27D,GAAwBz0B,EAAO6uB,EAAOhR,GAC3C,GAAIx+E,GAAGq1F,EAAgB7W,EAAO+S,EAE9B,QAAQ5wB,GAER,IAAK,IACY,MAAT6uB,IACA6F,EAAc7D,IAA8B,GAApB3B,EAAML,GAAS,GAE3C,MAEJ,KAAK,IACL,IAAK,KACY,MAATA,IACA6F,EAAc7D,IAAS3B,EAAML,GAAS,EAE1C,MACJ,KAAK,MACL,IAAK,OACDxvF,EAAIw+E,EAAO6O,QAAQiI,YAAY9F,EAAO7uB,EAAO6d,EAAOoP,SAE3C,MAAL5tF,EACAq1F,EAAc7D,IAASxxF,EAEvBw+E,EAAOwP,IAAI3D,aAAemF,CAE9B,MAEJ,KAAK,IACL,IAAK,KACY,MAATA,IACA6F,EAAc5D,IAAQ5B,EAAML,GAEhC,MACJ,KAAK,KACY,MAATA,IACA6F,EAAc5D,IAAQ5B,EAAMpqF,SAChB+pF,EAAMvwF,MAAM,WAAW,GAAI,KAE3C,MAEJ,KAAK,MACL,IAAK,OACY,MAATuwF,IACAhR,EAAO+W,WAAa1F,EAAML,GAG9B,MAEJ,KAAK,KACD6F,EAAc3D,IAAQzzF,GAAOu3F,kBAAkBhG,EAC/C,MACJ,KAAK,OACL,IAAK,QACL,IAAK,SACD6F,EAAc3D,IAAQ7B,EAAML,EAC5B,MAEJ,KAAK,IACL,IAAK,IACDhR,EAAOiX,UAAYjG,CAEnB,MAEJ,KAAK,IACL,IAAK,KACDhR,EAAOwP,IAAImE,SAAU,CAEzB,KAAK,IACL,IAAK,KACDkD,EAAc1D,IAAQ9B,EAAML,EAC5B,MAEJ,KAAK,IACL,IAAK,KACD6F,EAAczD,IAAU/B,EAAML,EAC9B,MAEJ,KAAK,IACL,IAAK,KACD6F,EAAcxD,IAAUhC,EAAML,EAC9B,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,OACD6F,EAAcvD,IAAejC,EAAuB,KAAhB,KAAOL,GAC3C,MAEJ,KAAK,IACDhR,EAAOhqD,GAAK,GAAIx1B,MAAK6wF,EAAML,GAC3B,MAEJ,KAAK,IACDhR,EAAOhqD,GAAK,GAAIx1B,MAAyB,IAApByhB,WAAW+uE,GAChC,MAEJ,KAAK,IACL,IAAK,KACDhR,EAAOkX,SAAU,EACjBlX,EAAOqP,KAAOkH,EAAoBvF,EAClC,MAEJ,KAAK,KACL,IAAK,MACL,IAAK,OACDxvF,EAAIw+E,EAAO6O,QAAQsI,cAAcnG,GAExB,MAALxvF,GACAw+E,EAAOoX,GAAKpX,EAAOoX,OACnBpX,EAAOoX,GAAM,EAAI51F,GAEjBw+E,EAAOwP,IAAI6H,eAAiBrG,CAEhC,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACD7uB,EAAQA,EAAM76D,OAAO,EAAG,EAE5B,KAAK,OACL,IAAK,OACL,IAAK,QACD66D,EAAQA,EAAM76D,OAAO,EAAG,GACpB0pF,IACAhR,EAAOoX,GAAKpX,EAAOoX,OACnBpX,EAAOoX,GAAGj1B,GAASkvB,EAAML,GAE7B,MACJ,KAAK,KACL,IAAK,KACDhR,EAAOoX,GAAKpX,EAAOoX,OACnBpX,EAAOoX,GAAGj1B,GAAS1iE,GAAOu3F,kBAAkBhG,IAIpD,QAASsG,GAAsBtX,GAC3B,GAAIzxB,GAAGgpC,EAAU/I,EAAM9uD,EAASgzD,EAAKC,EAAK6E,CAE1CjpC,GAAIyxB,EAAOoX,GACC,MAAR7oC,EAAEkpC,IAAqB,MAAPlpC,EAAEmpC,GAAoB,MAAPnpC,EAAEopC,GACjCjF,EAAM,EACNC,EAAM,EAMN4E,EAAWlM,EAAI98B,EAAEkpC,GAAIzX,EAAO+S,GAAGG,IAAON,GAAWnzF,KAAU,EAAG,GAAG42B,MACjEm4D,EAAOnD,EAAI98B,EAAEmpC,EAAG,GAChBh4D,EAAU2rD,EAAI98B,EAAEopC,EAAG,KAEnBjF,EAAM1S,EAAO6O,QAAQ+I,MAAMlF,IAC3BC,EAAM3S,EAAO6O,QAAQ+I,MAAMjF,IAE3B4E,EAAWlM,EAAI98B,EAAEspC,GAAI7X,EAAO+S,GAAGG,IAAON,GAAWnzF,KAAUizF,EAAKC,GAAKt8D,MACrEm4D,EAAOnD,EAAI98B,EAAEA,EAAG,GAEL,MAAPA,EAAEvlD,GAEF02B,EAAU6uB,EAAEvlD,EACE0pF,EAAVhzD,KACE8uD,GAIN9uD,EAFc,MAAP6uB,EAAEroD,EAECqoD,EAAEroD,EAAIwsF,EAGNA,GAGlB8E,EAAOM,GAAmBP,EAAU/I,EAAM9uD,EAASizD,EAAKD,GAExD1S,EAAO+S,GAAGG,IAAQsE,EAAKnhE,KACvB2pD,EAAO+W,WAAaS,EAAKphE,UAO7B,QAAS2hE,GAAe/X,GACpB,GAAIv+E,GAAG80B,EAAkByhE,EAAaC,EAAzBjH,IAEb,KAAIhR,EAAOhqD,GAAX,CA6BA,IAzBAgiE,EAAcE,GAAiBlY,GAG3BA,EAAOoX,IAAyB,MAAnBpX,EAAO+S,GAAGE,KAAqC,MAApBjT,EAAO+S,GAAGC,KAClDsE,EAAsBtX,GAItBA,EAAO+W,aACPkB,EAAY5M,EAAIrL,EAAO+S,GAAGG,IAAO8E,EAAY9E,KAEzClT,EAAO+W,WAAalE,EAAWoF,KAC/BjY,EAAOwP,IAAI+D,oBAAqB,GAGpCh9D,EAAO4hE,GAAYF,EAAW,EAAGjY,EAAO+W,YACxC/W,EAAO+S,GAAGC,IAASz8D,EAAK6hE,cACxBpY,EAAO+S,GAAGE,IAAQ18D,EAAKi8D,cAQtB/wF,EAAI,EAAO,EAAJA,GAAyB,MAAhBu+E,EAAO+S,GAAGtxF,KAAcA,EACzCu+E,EAAO+S,GAAGtxF,GAAKuvF,EAAMvvF,GAAKu2F,EAAYv2F,EAI1C,MAAW,EAAJA,EAAOA,IACVu+E,EAAO+S,GAAGtxF,GAAKuvF,EAAMvvF,GAAsB,MAAhBu+E,EAAO+S,GAAGtxF,GAAqB,IAANA,EAAU,EAAI,EAAKu+E,EAAO+S,GAAGtxF,EAI7D,MAApBu+E,EAAO+S,GAAGI,KACgB,IAAtBnT,EAAO+S,GAAGK,KACY,IAAtBpT,EAAO+S,GAAGM,KACiB,IAA3BrT,EAAO+S,GAAGO,MACdtT,EAAOqY,UAAW,EAClBrY,EAAO+S,GAAGI,IAAQ,GAGtBnT,EAAOhqD,IAAMgqD,EAAOkX,QAAUiB,GAAcG,IAAU5jF,MAAM,KAAMs8E,GAG/C,MAAfhR,EAAOqP,MACPrP,EAAOhqD,GAAGuiE,cAAcvY,EAAOhqD,GAAGwiE,gBAAkBxY,EAAOqP,MAG3DrP,EAAOqY,WACPrY,EAAO+S,GAAGI,IAAQ,KAI1B,QAASsF,GAAezY,GACpB,GAAIiO,EAEAjO,GAAOhqD,KAIXi4D,EAAkBC,EAAqBlO,EAAOiP,IAC9CjP,EAAO+S,IACH9E,EAAgB53D,KAChB43D,EAAgBz3D,MAChBy3D,EAAgB93D,KAAO83D,EAAgB13D,KACvC03D,EAAgBxuD,KAChBwuD,EAAgBzuD,OAChByuD,EAAgB1uD,OAChB0uD,EAAgB3uD,aAGpBy4D,EAAe/X,IAGnB,QAASkY,IAAiBlY,GACtB,GAAIjlD,GAAM,GAAIv6B,KACd,OAAIw/E,GAAOkX,SAEHn8D,EAAI29D,iBACJ39D,EAAIq9D,cACJr9D,EAAIy3D,eAGAz3D,EAAIiF,cAAejF,EAAI6F,WAAY7F,EAAI4F,WAKvD,QAASg4D,IAA4B3Y,GACjC,GAAIA,EAAOkP,KAAOzvF,GAAOm5F,SAErB,WADAC,IAAS7Y,EAIbA,GAAO+S,MACP/S,EAAOwP,IAAIhE,OAAQ,CAGnB,IACI/pF,GAAGq3F,EAAaC,EAAQ52B,EAAO62B,EAD/BxC,EAAS,GAAKxW,EAAOiP,GAErBgK,EAAezC,EAAO50F,OACtBs3F,EAAyB,CAI7B,KAFAH,EAAStE,EAAazU,EAAOkP,GAAIlP,EAAO6O,SAASpuF,MAAM6zF,QAElD7yF,EAAI,EAAGA,EAAIs3F,EAAOn3F,OAAQH,IAC3B0gE,EAAQ42B,EAAOt3F,GACfq3F,GAAetC,EAAO/1F,MAAMu0F,EAAsB7yB,EAAO6d,SAAgB,GACrE8Y,IACAE,EAAUxC,EAAOlvF,OAAO,EAAGkvF,EAAO5zF,QAAQk2F,IACtCE,EAAQp3F,OAAS,GACjBo+E,EAAOwP,IAAI9D,YAAYvnF,KAAK60F,GAEhCxC,EAASA,EAAO7uF,MAAM6uF,EAAO5zF,QAAQk2F,GAAeA,EAAYl3F,QAChEs3F,GAA0BJ,EAAYl3F,QAGtC2yF,GAAqBpyB,IACjB22B,EACA9Y,EAAOwP,IAAIhE,OAAQ,EAGnBxL,EAAOwP,IAAI/D,aAAatnF,KAAKg+D,GAEjCy0B,EAAwBz0B,EAAO22B,EAAa9Y,IAEvCA,EAAOoP,UAAY0J,GACxB9Y,EAAOwP,IAAI/D,aAAatnF,KAAKg+D,EAKrC6d,GAAOwP,IAAI7D,cAAgBsN,EAAeC,EACtC1C,EAAO50F,OAAS,GAChBo+E,EAAOwP,IAAI9D,YAAYvnF,KAAKqyF,GAI5BxW,EAAOwP,IAAImE,WAAY,GAAQ3T,EAAO+S,GAAGI,KAAS,KAClDnT,EAAOwP,IAAImE,QAAUlxF,GAGzBu9E,EAAO+S,GAAGI,IAAQ/F,EAAgBpN,EAAO6O,QAAS7O,EAAO+S,GAAGI,IACpDnT,EAAOiX,WACfc,EAAe/X,GACf4N,EAAc5N,GAGlB,QAASsW,IAAenuF,GACpB,MAAOA,GAAEtB,QAAQ,sCAAuC,SAAUsyF,EAAS3wB,EAAIC,EAAIC,EAAI0wB,GACnF,MAAO5wB,IAAMC,GAAMC,GAAM0wB,IAKjC,QAAS/C,IAAaluF,GAClB,MAAOA,GAAEtB,QAAQ,yBAA0B,QAI/C,QAASwyF,IAA2BrZ,GAChC,GAAIsZ,GACAC,EAEAC,EACA/3F,EACAg4F,CAEJ,IAAyB,IAArBzZ,EAAOkP,GAAGttF,OAGV,MAFAo+E,GAAOwP,IAAI1D,eAAgB,OAC3B9L,EAAOhqD,GAAK,GAAIx1B,MAAKk5F,KAIzB,KAAKj4F,EAAI,EAAGA,EAAIu+E,EAAOkP,GAAGttF,OAAQH,IAC9Bg4F,EAAe,EACfH,EAAazL,KAAe7N,GACN,MAAlBA,EAAOkX,UACPoC,EAAWpC,QAAUlX,EAAOkX,SAEhCoC,EAAW9J,IAAMjE,IACjB+N,EAAWpK,GAAKlP,EAAOkP,GAAGztF,GAC1Bk3F,GAA4BW,GAEvB9F,EAAQ8F,KAKbG,GAAgBH,EAAW9J,IAAI7D,cAG/B8N,GAAqD,GAArCH,EAAW9J,IAAI/D,aAAa7pF,OAE5C03F,EAAW9J,IAAImK,MAAQF,GAEJ,MAAfD,GAAsCA,EAAfC,KACvBD,EAAcC,EACdF,EAAaD,GAIrB/3F,GAAOy+E,EAAQuZ,GAAcD,GAIjC,QAAST,IAAS7Y,GACd,GAAIv+E,GAAGm4F,EACHpD,EAASxW,EAAOiP,GAChBxuF,EAAQo5F,GAASl5F,KAAK61F,EAE1B,IAAI/1F,EAAO,CAEP,IADAu/E,EAAOwP,IAAIxD,KAAM,EACZvqF,EAAI,EAAGm4F,EAAIE,GAASl4F,OAAYg4F,EAAJn4F,EAAOA,IACpC,GAAIq4F,GAASr4F,GAAG,GAAGd,KAAK61F,GAAS,CAE7BxW,EAAOkP,GAAK4K,GAASr4F,GAAG,IAAMhB,EAAM,IAAM,IAC1C,OAGR,IAAKgB,EAAI,EAAGm4F,EAAIG,GAASn4F,OAAYg4F,EAAJn4F,EAAOA,IACpC,GAAIs4F,GAASt4F,GAAG,GAAGd,KAAK61F,GAAS,CAC7BxW,EAAOkP,IAAM6K,GAASt4F,GAAG,EACzB,OAGJ+0F,EAAO/1F,MAAMq1F,MACb9V,EAAOkP,IAAM,KAEjByJ,GAA4B3Y,OAE5BA,GAAOyT,UAAW,EAK1B,QAASuG,IAAmBha,GACxB6Y,GAAS7Y,GACLA,EAAOyT,YAAa,UACbzT,GAAOyT,SACdh0F,GAAOw6F,wBAAwBja,IAIvC,QAASt2E,IAAI4vC,EAAKvjC,GACd,GAActU,GAAVwuF,IACJ,KAAKxuF,EAAI,EAAGA,EAAI63C,EAAI13C,SAAUH,EAC1BwuF,EAAI9rF,KAAK4R,EAAGujC,EAAI73C,GAAIA,GAExB,OAAOwuF,GAGX,QAASiK,IAAkBla,GACvB,GAAuBmZ,GAAnBnI,EAAQhR,EAAOiP,EACf+B,KAAUvuF,EACVu9E,EAAOhqD,GAAK,GAAIx1B,MACTD,EAAOywF,GACdhR,EAAOhqD,GAAK,GAAIx1B,OAAMwwF,GAC6B,QAA3CmI,EAAUgB,GAAgBx5F,KAAKqwF,IACvChR,EAAOhqD,GAAK,GAAIx1B,OAAM24F,EAAQ,IACN,gBAAVnI,GACdgJ,GAAmBha,GACZ79E,EAAQ6uF,IACfhR,EAAO+S,GAAKrpF,GAAIsnF,EAAMrpF,MAAM,GAAI,SAAUgY,GACtC,MAAO1Y,UAAS0Y,EAAK,MAEzBo4E,EAAe/X,IACU,gBAAZ,GACbyY,EAAezY,GACU,gBAAZ,GAEbA,EAAOhqD,GAAK,GAAIx1B,MAAKwwF,GAErBvxF,GAAOw6F,wBAAwBja,GAIvC,QAASsY,IAASjqF,EAAGjS,EAAG4M,EAAGd,EAAGihE,EAAGhhE,EAAGiyF,GAGhC,GAAI7jE,GAAO,GAAI/1B,MAAK6N,EAAGjS,EAAG4M,EAAGd,EAAGihE,EAAGhhE,EAAGiyF,EAMtC,OAHQ,MAAJ/rF,GACAkoB,EAAKwJ,YAAY1xB,GAEdkoB,EAGX,QAAS4hE,IAAY9pF,GACjB,GAAIkoB,GAAO,GAAI/1B,MAAKA,KAAK+xF,IAAI79E,MAAM,KAAM/S,WAIzC,OAHQ,MAAJ0M,GACAkoB,EAAK8jE,eAAehsF,GAEjBkoB,EAGX,QAAS+jE,IAAatJ,EAAOhvD,GACzB,GAAqB,gBAAVgvD,GACP,GAAKpwF,MAAMowF,IAKP,GADAA,EAAQhvD,EAAOm1D,cAAcnG,GACR,gBAAVA,GACP,MAAO,UALXA,GAAQ/pF,SAAS+pF,EAAO,GAShC,OAAOA,GASX,QAASuJ,IAAkB/D,EAAQ7G,EAAQ6K,EAAeC,EAAUz4D,GAChE,MAAOA,GAAO04D,aAAa/K,GAAU,IAAK6K,EAAehE,EAAQiE,GAGrE,QAASC,IAAaC,EAAgBH,EAAex4D,GACjD,GAAI71B,GAAW1M,GAAO0M,SAASwuF,GAAgBrzE,MAC3C4T,EAAU/Q,GAAMhe,EAASuf,GAAG,MAC5BuP,EAAU9Q,GAAMhe,EAASuf,GAAG,MAC5BsP,EAAQ7Q,GAAMhe,EAASuf,GAAG,MAC1B+iE,EAAOtkE,GAAMhe,EAASuf,GAAG,MACzB4iE,EAASnkE,GAAMhe,EAASuf,GAAG,MAC3ByiE,EAAQhkE,GAAMhe,EAASuf,GAAG,MAE1B5V,EAAOolB,EAAU0/D,GAAuBzyF,IAAM,IAAK+yB,IACnC,IAAZD,IAAkB,MAClBA,EAAU2/D,GAAuBx+F,IAAM,KAAM6+B,IACnC,IAAVD,IAAgB,MAChBA,EAAQ4/D,GAAuB1yF,IAAM,KAAM8yB,IAClC,IAATyzD,IAAe,MACfA,EAAOmM,GAAuB5xF,IAAM,KAAMylF,IAC/B,IAAXH,IAAiB,MACjBA,EAASsM,GAAuBzxB,IAAM,KAAMmlB,IAClC,IAAVH,IAAgB,OAAS,KAAMA,EAKvC,OAHAr4E,GAAK,GAAK0kF,EACV1kF,EAAK,IAAM6kF,EAAiB,EAC5B7kF,EAAK,GAAKksB,EACHu4D,GAAkB7lF,SAAUoB,GAgBvC,QAAS88E,IAAWlC,EAAKmK,EAAgBC,GACrC,GAEIC,GAFA7uF,EAAM4uF,EAAuBD,EAC7BG,EAAkBF,EAAuBpK,EAAIv6D,KAajD,OATI6kE,GAAkB9uF,IAClB8uF,GAAmB,GAGD9uF,EAAM,EAAxB8uF,IACAA,GAAmB,GAGvBD,EAAiBt7F,GAAOixF,GAAK9gF,IAAIorF,EAAiB,MAE9CxM,KAAMpuF,KAAKu2C,KAAKokD,EAAe3kE,YAAc,GAC7CC,KAAM0kE,EAAe1kE,QAK7B,QAASyhE,IAAmBzhE,EAAMm4D,EAAM9uD,EAASo7D,EAAsBD,GACnE,GAA6CI,GAAW7kE,EAApDptB,EAAImvF,GAAY9hE,EAAM,EAAG,GAAG6kE,WAOhC,OALAlyF,GAAU,IAANA,EAAU,EAAIA,EAClB02B,EAAqB,MAAXA,EAAkBA,EAAUm7D,EACtCI,EAAYJ,EAAiB7xF,GAAKA,EAAI8xF,EAAuB,EAAI,IAAUD,EAAJ7xF,EAAqB,EAAI,GAChGotB,EAAY,GAAKo4D,EAAO,IAAM9uD,EAAUm7D,GAAkBI,EAAY,GAGlE5kE,KAAMD,EAAY,EAAIC,EAAOA,EAAO,EACpCD,UAAWA,EAAY,EAAKA,EAAYy8D,EAAWx8D,EAAO,GAAKD,GAQvE,QAAS+kE,IAAWnb,GAChB,GAEIiQ,GAFAe,EAAQhR,EAAOiP,GACf9vD,EAAS6gD,EAAOkP,EAKpB,OAFAlP,GAAO6O,QAAU7O,EAAO6O,SAAWpvF,GAAOqtF,WAAW9M,EAAOmP,IAE9C,OAAV6B,GAAmB7xD,IAAW18B,GAAuB,KAAVuuF,EACpCvxF,GAAO27F,SAASxP,WAAW,KAGjB,gBAAVoF,KACPhR,EAAOiP,GAAK+B,EAAQhR,EAAO6O,QAAQwM,SAASrK,IAG5CvxF,GAAOyD,SAAS8tF,GACT,GAAItD,GAAOsD,GAAO,IAClB7xD,EACHh9B,EAAQg9B,GACRk6D,GAA2BrZ,GAE3B2Y,GAA4B3Y,GAGhCka,GAAkBla,GAGtBiQ,EAAM,GAAIvC,GAAO1N,GACbiQ,EAAIoI,WAEJpI,EAAIrgF,IAAI,EAAG,KACXqgF,EAAIoI,SAAW51F,GAGZwtF,IAyCX,QAASqL,IAAOvlF,EAAIwlF,GAChB,GAAItL,GAAKxuF,CAIT,IAHuB,IAAnB85F,EAAQ35F,QAAgBO,EAAQo5F,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQ35F,OACT,MAAOnC,KAGX,KADAwwF,EAAMsL,EAAQ,GACT95F,EAAI,EAAGA,EAAI85F,EAAQ35F,SAAUH,EAC1B85F,EAAQ95F,GAAGsU,GAAIk6E,KACfA,EAAMsL,EAAQ95F,GAGtB,OAAOwuF,GAsvBX,QAASc,IAAeL,EAAKxwF,GACzB,GAAIs7F,EAGJ,OAAqB,gBAAVt7F,KACPA,EAAQwwF,EAAI5D,aAAagK,YAAY52F,GAEhB,gBAAVA,IACAwwF,GAIf8K,EAAap7F,KAAKL,IAAI2wF,EAAIn6D,OAClB+7D,EAAY5B,EAAIr6D,OAAQn2B,IAChCwwF,EAAI16D,GAAG,OAAS06D,EAAIpB,OAAS,MAAQ,IAAM,SAASpvF,EAAOs7F,GACpD9K,GAGX,QAASI,IAAUJ,EAAK+K,GACpB,MAAO/K,GAAI16D,GAAG,OAAS06D,EAAIpB,OAAS,MAAQ,IAAMmM,KAGtD,QAAS5K,IAAUH,EAAK+K,EAAMv7F,GAC1B,MAAa,UAATu7F,EACO1K,GAAeL,EAAKxwF,GAEpBwwF,EAAI16D,GAAG,OAAS06D,EAAIpB,OAAS,MAAQ,IAAMmM,GAAMv7F,GAIhE,QAASw7F,IAAaD,EAAME,GACxB,MAAO,UAAUz7F,GACb,MAAa,OAATA,GACA2wF,GAAUj1F,KAAM6/F,EAAMv7F,GACtBT,GAAOsuF,aAAanyF,KAAM+/F,GACnB//F,MAEAk1F,GAAUl1F,KAAM6/F,IAqCnC,QAASG,IAAanN,GAElB,MAAc,KAAPA,EAAa,OAGxB,QAASoN,IAAa1N,GAGlB,MAAe,QAARA,EAAiB,IAuL5B,QAAS2N,IAAmBlpF,GACxBnT,GAAO0M,SAAS4J,GAAGnD,GAAQ,WACvB,MAAOhX,MAAK2T,MAAMqD,IA2D1B,QAASmpF,IAAWC,GAEK,mBAAVC,SAGXC,GAAkBC,GAAY18F,OAE1B08F,GAAY18F,OADZu8F,EACqB3P,EACb,uGAGA5sF,IAEaA,IAplF7B,IA/WA,GAAIA,IAIAy8F,GAGAz6F,GANA0/E,GAAU,QAEVgb,GAAiC,mBAAX/Q,IAA6C,mBAAX1nF,SAA0BA,SAAW0nF,EAAO1nF,OAAoB9H,KAATwvF,EAE/GjhE,GAAQ/pB,KAAK+pB,MACbpoB,GAAiBS,OAAOsN,UAAU/N,eAGlCmxF,GAAO,EACPF,GAAQ,EACRC,GAAO,EACPE,GAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,EAGdztD,MAGA4pD,MAGAwE,GAA+B,mBAAXx4F,IAA0BA,GAAUA,EAAOD,QAG/D2+F,GAAkB,sBAClBiC,GAA0B,uDAI1BC,GAAmB,gIAGnB/H,GAAmB,qKACnBQ,GAAwB,6CAGxBmB,GAA2B,QAC3BR,GAA6B,UAC7BL,GAA4B,UAC5BG,GAA2B,gBAC3BS,GAAmB,MACnBN,GAAiB,mHACjBI,GAAqB,uBACrBC,GAAc,KACdH,GAAqB,aACrBC,GAAwB,yBAGxBZ,GAAqB,KACrBO,GAAsB,OACtBN,GAAwB,QACxBC,GAAuB,QACvBG,GAAsB,aACtBD,GAAyB,WAIzBwE,GAAW,4IAEXyC,GAAY,uBAEZxC,KACK,eAAgB,0BAChB,aAAc,sBACd,eAAgB,oBAChB,aAAc,iBACd,WAAY,gBAIjBC,KACK,gBAAiB,6BACjB,WAAY,wBACZ,QAAS,mBACT,KAAM,cAIXpD,GAAuB,kBAIvB4F,IADyB,0CAA0Cr4F,MAAM,MAErEs4F,aAAiB,EACjBC,QAAY,IACZC,QAAY,IACZC,MAAU,KACVC,KAAS,MACTC,OAAW,OACXC,MAAU,UAGdrL,IACI2I,GAAK,cACLjyF,EAAI,SACJ/L,EAAI,SACJ8L,EAAI,OACJc,EAAI,MACJ+zF,EAAI,OACJxuC,EAAI,OACJmpC,EAAI,UACJvuB,EAAI,QACJ6zB,EAAI,UACJ3uF,EAAI,OACJ4uF,IAAM,YACN/2F,EAAI,UACJyxF,EAAI,aACJE,GAAI,WACJJ,GAAI,eAGR/F,IACIwL,UAAY,YACZC,WAAa,aACbC,QAAU,UACVC,SAAW,WACXC,YAAc,eAIlB5I,MAGAkG,IACIzyF,EAAG,GACH/L,EAAG,GACH8L,EAAG,GACHc,EAAG,GACHmgE,EAAG,IAIPo0B,GAAmB,gBAAgBr5F,MAAM,KACzCs5F,GAAe,kBAAkBt5F,MAAM,KAEvCqwF,IACIprB,EAAO,WACH,MAAOvtE,MAAK46B,QAAU,GAE1BinE,IAAO,SAAUt+D,GACb,MAAOvjC,MAAKkxF,aAAa4Q,YAAY9hG,KAAMujC,IAE/Cw+D,KAAO,SAAUx+D,GACb,MAAOvjC,MAAKkxF,aAAawB,OAAO1yF,KAAMujC,IAE1C49D,EAAO,WACH,MAAOnhG,MAAK26B,QAEhB0mE,IAAO,WACH,MAAOrhG,MAAKw6B,aAEhBptB,EAAO,WACH,MAAOpN,MAAKu6B,OAEhBynE,GAAO,SAAUz+D,GACb,MAAOvjC,MAAKkxF,aAAa+Q,YAAYjiG,KAAMujC,IAE/C2+D,IAAO,SAAU3+D,GACb,MAAOvjC,MAAKkxF,aAAaiR,cAAcniG,KAAMujC,IAEjD6+D,KAAO,SAAU7+D,GACb,MAAOvjC,MAAKkxF,aAAamR,SAASriG,KAAMujC,IAE5CovB,EAAO,WACH,MAAO3yD,MAAK4yF,QAEhBkJ,EAAO,WACH,MAAO97F,MAAKsiG,WAEhBC,GAAO,WACH,MAAOxR,GAAa/wF,KAAKy6B,OAAS,IAAK,IAE3C+nE,KAAO,WACH,MAAOzR,GAAa/wF,KAAKy6B,OAAQ,IAErCgoE,MAAQ,WACJ,MAAO1R,GAAa/wF,KAAKy6B,OAAQ,IAErCioE,OAAS,WACL,GAAIjwF,GAAIzS,KAAKy6B,OAAQ5K,EAAOpd,GAAK,EAAI,IAAM,GAC3C,OAAOod,GAAOkhE,EAAavsF,KAAKknB,IAAIjZ,GAAI,IAE5CwpF,GAAO,WACH,MAAOlL,GAAa/wF,KAAK27F,WAAa,IAAK,IAE/CgH,KAAO,WACH,MAAO5R,GAAa/wF,KAAK27F,WAAY,IAEzCiH,MAAQ,WACJ,MAAO7R,GAAa/wF,KAAK27F,WAAY,IAEzCE,GAAO,WACH,MAAO9K,GAAa/wF,KAAK6iG,cAAgB,IAAK;EAElDC,KAAO,WACH,MAAO/R,GAAa/wF,KAAK6iG,cAAe,IAE5CE,MAAQ,WACJ,MAAOhS,GAAa/wF,KAAK6iG,cAAe,IAE5Cv4F,EAAI,WACA,MAAOtK,MAAK8jC,WAEhBi4D,EAAI,WACA,MAAO/7F,MAAKgjG,cAEhBp9F,EAAO,WACH,MAAO5F,MAAKkxF,aAAaO,SAASzxF,KAAKo/B,QAASp/B,KAAKq/B,WAAW,IAEpEguC,EAAO,WACH,MAAOrtE,MAAKkxF,aAAaO,SAASzxF,KAAKo/B,QAASp/B,KAAKq/B,WAAW,IAEpEpU,EAAO,WACH,MAAOjrB,MAAKo/B,SAEhB9yB,EAAO,WACH,MAAOtM,MAAKo/B,QAAU,IAAM,IAEhC5+B,EAAO,WACH,MAAOR,MAAKq/B,WAEhB9yB,EAAO,WACH,MAAOvM,MAAKs/B,WAEhBpU,EAAO,WACH,MAAOuqE,GAAMz1F,KAAKu/B,eAAiB,MAEvC0jE,GAAO,WACH,MAAOlS,GAAa0E,EAAMz1F,KAAKu/B,eAAiB,IAAK,IAEzD2jE,IAAO,WACH,MAAOnS,GAAa/wF,KAAKu/B,eAAgB,IAE7C4jE,KAAO,WACH,MAAOpS,GAAa/wF,KAAKu/B,eAAgB,IAE7C6jE,EAAO,WACH,GAAIx9F,GAAI5F,KAAKqjG,YACT58F,EAAI,GAKR,OAJQ,GAAJb,IACAA,GAAKA,EACLa,EAAI,KAEDA,EAAIsqF,EAAa0E,EAAM7vF,EAAI,IAAK,GAAK,IAAMmrF,EAAa0E,EAAM7vF,GAAK,GAAI,IAElF09F,GAAO,WACH,GAAI19F,GAAI5F,KAAKqjG,YACT58F,EAAI,GAKR,OAJQ,GAAJb,IACAA,GAAKA,EACLa,EAAI,KAEDA,EAAIsqF,EAAa0E,EAAM7vF,EAAI,IAAK,GAAKmrF,EAAa0E,EAAM7vF,GAAK,GAAI,IAE5EsY,EAAI,WACA,MAAOle,MAAKujG,YAEhBC,GAAK,WACD,MAAOxjG,MAAKyjG,YAEhBjxF,EAAO,WACH,MAAOxS,MAAKqH,WAEhBokB,EAAO,WACH,MAAOzrB,MAAK0jG,QAEhBtC,EAAI,WACA,MAAOphG,MAAKyyF,YAIpB7B,MAEA+S,IAAS,SAAU,cAAe,WAAY,gBAAiB,eAE/DzR,IAAmB,EAyFhByP,GAAiB37F,QACpBH,GAAI87F,GAAiBhkD,MACrBg7C,GAAqB9yF,GAAI,KAAOmrF,EAAgB2H,GAAqB9yF,IAAIA,GAE7E,MAAO+7F,GAAa57F,QAChBH,GAAI+7F,GAAajkD,MACjBg7C,GAAqB9yF,GAAIA,IAAKgrF,EAAS8H,GAAqB9yF,IAAI,EAEpE8yF,IAAqBiL,KAAO/S,EAAS8H,GAAqB0I,IAAK,GA0d/D17F,EAAOksF,EAAO39E,WAEVoiF,IAAM,SAAUlS,GACZ,GAAIl+E,GAAML,CACV,KAAKA,IAAKu+E,GACNl+E,EAAOk+E,EAAOv+E,GACM,kBAATK,GACPlG,KAAK6F,GAAKK,EAEVlG,KAAK,IAAM6F,GAAKK,CAKxBlG,MAAKu6F,qBAAuB,GAAIC,QAAOx6F,KAAKs6F,cAAchxB,OAAS,IAAM,UAAUA,SAGvF0pB,QAAU,wFAAwF1qF,MAAM,KACxGoqF,OAAS,SAAUlyF,GACf,MAAOR,MAAKgzF,QAAQxyF,EAAEo6B,UAG1BipE,aAAe,kDAAkDv7F,MAAM,KACvEw5F,YAAc,SAAUthG,GACpB,MAAOR,MAAK6jG,aAAarjG,EAAEo6B,UAG/BsgE,YAAc,SAAU4I,EAAWvgE,EAAQyjC,GACvC,GAAInhE,GAAGivF,EAAKiP,CAQZ,KANK/jG,KAAKgkG,eACNhkG,KAAKgkG,gBACLhkG,KAAKikG,oBACLjkG,KAAKkkG,sBAGJr+F,EAAI,EAAO,GAAJA,EAAQA,IAAK,CAYrB,GAVAivF,EAAMjxF,GAAOwyF,KAAK,IAAMxwF,IACpBmhE,IAAWhnE,KAAKikG,iBAAiBp+F,KACjC7F,KAAKikG,iBAAiBp+F,GAAK,GAAI20F,QAAO,IAAMx6F,KAAK0yF,OAAOoC,EAAK,IAAI7pF,QAAQ,IAAK,IAAM,IAAK,KACzFjL,KAAKkkG,kBAAkBr+F,GAAK,GAAI20F,QAAO,IAAMx6F,KAAK8hG,YAAYhN,EAAK,IAAI7pF,QAAQ,IAAK,IAAM,IAAK,MAE9F+7D,GAAWhnE,KAAKgkG,aAAan+F,KAC9Bk+F,EAAQ,IAAM/jG,KAAK0yF,OAAOoC,EAAK,IAAM,KAAO90F,KAAK8hG,YAAYhN,EAAK,IAClE90F,KAAKgkG,aAAan+F,GAAK,GAAI20F,QAAOuJ,EAAM94F,QAAQ,IAAK,IAAK,MAG1D+7D,GAAqB,SAAXzjC,GAAqBvjC,KAAKikG,iBAAiBp+F,GAAG4I,KAAKq1F,GAC7D,MAAOj+F,EACJ,IAAImhE,GAAqB,QAAXzjC,GAAoBvjC,KAAKkkG,kBAAkBr+F,GAAG4I,KAAKq1F,GACpE,MAAOj+F,EACJ,KAAKmhE,GAAUhnE,KAAKgkG,aAAan+F,GAAG4I,KAAKq1F,GAC5C,MAAOj+F,KAKnBs+F,UAAY,2DAA2D77F,MAAM,KAC7E+5F,SAAW,SAAU7hG,GACjB,MAAOR,MAAKmkG,UAAU3jG,EAAE+5B,QAG5B6pE,eAAiB,8BAA8B97F,MAAM,KACrD65F,cAAgB,SAAU3hG,GACtB,MAAOR,MAAKokG,eAAe5jG,EAAE+5B,QAGjC8pE,aAAe,uBAAuB/7F,MAAM,KAC5C25F,YAAc,SAAUzhG,GACpB,MAAOR,MAAKqkG,aAAa7jG,EAAE+5B,QAG/BghE,cAAgB,SAAU+I,GACtB,GAAIz+F,GAAGivF,EAAKiP,CAMZ,KAJK/jG,KAAKukG,iBACNvkG,KAAKukG,mBAGJ1+F,EAAI,EAAO,EAAJA,EAAOA,IAQf,GANK7F,KAAKukG,eAAe1+F,KACrBivF,EAAMjxF,IAAQ,IAAM,IAAI02B,IAAI10B,GAC5Bk+F,EAAQ,IAAM/jG,KAAKqiG,SAASvN,EAAK,IAAM,KAAO90F,KAAKmiG,cAAcrN,EAAK,IAAM,KAAO90F,KAAKiiG,YAAYnN,EAAK,IACzG90F,KAAKukG,eAAe1+F,GAAK,GAAI20F,QAAOuJ,EAAM94F,QAAQ,IAAK,IAAK,MAG5DjL,KAAKukG,eAAe1+F,GAAG4I,KAAK61F,GAC5B,MAAOz+F,IAKnB2+F,iBACIC,IAAM,YACNC,GAAK,SACLC,EAAI,aACJC,GAAK,eACLC,IAAM,kBACNC,KAAO,yBAEX7L,eAAiB,SAAUhwF,GACvB,GAAIirF,GAASl0F,KAAKwkG,gBAAgBv7F,EAOlC,QANKirF,GAAUl0F,KAAKwkG,gBAAgBv7F,EAAIkhC,iBACpC+pD,EAASl0F,KAAKwkG,gBAAgBv7F,EAAIkhC,eAAel/B,QAAQ,mBAAoB,SAAUkoF,GACnF,MAAOA,GAAIpnF,MAAM,KAErB/L,KAAKwkG,gBAAgBv7F,GAAOirF,GAEzBA,GAGXtC,KAAO,SAAUwD,GAGb,MAAiD,OAAxCA,EAAQ,IAAI9uD,cAAclgB,OAAO,IAG9C2zE,eAAiB,gBACjBtI,SAAW,SAAUryD,EAAOC,EAAS0lE,GACjC,MAAI3lE,GAAQ,GACD2lE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAKhCC,WACIC,QAAU,gBACVC,QAAU,mBACVC,SAAW,eACXC,QAAU,oBACVC,SAAW,sBACXC,SAAW,KAEfC,SAAW,SAAUt8F,EAAK6rF,EAAK31D,GAC3B,GAAI+0D,GAASl0F,KAAKglG,UAAU/7F,EAC5B,OAAyB,kBAAXirF,GAAwBA,EAAOp7E,MAAMg8E,GAAM31D,IAAQ+0D,GAGrEsR,eACIC,OAAS,QACTC,KAAO,SACPn5F,EAAI,gBACJ/L,EAAI,WACJmlG,GAAK,aACLr5F,EAAI,UACJs5F,GAAK,WACLx4F,EAAI,QACJ40F,GAAK,UACLz0B,EAAI,UACJs4B,GAAK,YACLpzF,EAAI,SACJqzF,GAAK,YAGThH,aAAe,SAAU/K,EAAQ6K,EAAehE,EAAQiE,GACpD,GAAI3K,GAASl0F,KAAKwlG,cAAc5K,EAChC,OAA0B,kBAAX1G,GACXA,EAAOH,EAAQ6K,EAAehE,EAAQiE,GACtC3K,EAAOjpF,QAAQ,MAAO8oF,IAG9BgS,WAAa,SAAU74E,EAAMgnE,GACzB,GAAI3wD,GAASvjC,KAAKwlG,cAAct4E,EAAO,EAAI,SAAW,OACtD,OAAyB,kBAAXqW,GAAwBA,EAAO2wD,GAAU3wD,EAAOt4B,QAAQ,MAAOipF,IAGjF/C,QAAU,SAAU4C,GAChB,MAAO/zF,MAAKgmG,SAAS/6F,QAAQ,KAAM8oF,IAEvCiS,SAAW,KACX1L,cAAgB,UAEhBmF,SAAW,SAAU7E,GACjB,MAAOA,IAGXqL,WAAa,SAAUrL,GACnB,MAAOA,IAGXhI,KAAO,SAAUkC,GACb,MAAOkC,IAAWlC,EAAK90F,KAAKg8F,MAAMlF,IAAK92F,KAAKg8F,MAAMjF,KAAKnE,MAG3DoJ,OACIlF,IAAM,EACNC,IAAM,GAGVkI,eAAiB,WACb,MAAOj/F,MAAKg8F,MAAMlF,KAGtBoP,eAAiB,WACb,MAAOlmG,MAAKg8F,MAAMjF,KAGtBoP,aAAc,eACdpN,YAAa,WACT,MAAO/4F,MAAKmmG,gBA0yBpBtiG,GAAS,SAAUuxF,EAAO7xD,EAAQ6C,EAAQ4gC,GACtC,GAAIvmE,EAiBJ,OAfuB,iBAAb,KACNumE,EAAS5gC,EACTA,EAASv/B,GAIbpG,KACAA,EAAE2yF,kBAAmB,EACrB3yF,EAAE4yF,GAAK+B,EACP30F,EAAE6yF,GAAK/vD,EACP9iC,EAAE8yF,GAAKntD,EACP3lC,EAAE+yF,QAAUxsB,EACZvmE,EAAEizF,QAAS,EACXjzF,EAAEmzF,IAAMjE,IAED4P,GAAW9+F,IAGtBoD,GAAO0sF,6BAA8B,EAErC1sF,GAAOw6F,wBAA0B5N,EAC7B,4LAIA,SAAUrM,GACNA,EAAOhqD,GAAK,GAAIx1B,MAAKw/E,EAAOiP,IAAMjP,EAAOkX,QAAU,OAAS,OA0BpEz3F,GAAOM,IAAM,WACT,GAAI+V,MAAUnO,MAAMxL,KAAKwF,UAAW,EAEpC,OAAO25F,IAAO,WAAYxlF,IAG9BrW,GAAOO,IAAM,WACT,GAAI8V,MAAUnO,MAAMxL,KAAKwF,UAAW,EAEpC,OAAO25F,IAAO,UAAWxlF,IAI7BrW,GAAOwyF,IAAM,SAAUjB,EAAO7xD,EAAQ6C,EAAQ4gC,GAC1C,GAAIvmE,EAkBJ,OAhBuB,iBAAb,KACNumE,EAAS5gC,EACTA,EAASv/B,GAIbpG,KACAA,EAAE2yF,kBAAmB,EACrB3yF,EAAE66F,SAAU,EACZ76F,EAAEizF,QAAS,EACXjzF,EAAE8yF,GAAKntD,EACP3lC,EAAE4yF,GAAK+B,EACP30F,EAAE6yF,GAAK/vD,EACP9iC,EAAE+yF,QAAUxsB,EACZvmE,EAAEmzF,IAAMjE,IAED4P,GAAW9+F,GAAG41F,OAIzBxyF,GAAO6/F,KAAO,SAAUtO,GACpB,MAAOvxF,IAAe,IAARuxF,IAIlBvxF,GAAO0M,SAAW,SAAU6kF,EAAOnsF,GAC/B,GAGI4mB,GACAu2E,EACAC,EACAC,EANA/1F,EAAW6kF,EAEXvwF,EAAQ,IAiEZ,OA3DIhB,IAAO0iG,WAAWnR,GAClB7kF,GACIiuF,GAAIpJ,EAAMtC,cACV1lF,EAAGgoF,EAAMrC,MACTxlB,EAAG6nB,EAAMpC,SAEW,gBAAVoC,IACd7kF,KACItH,EACAsH,EAAStH,GAAOmsF,EAEhB7kF,EAASgvB,aAAe61D,IAElBvwF,EAAQ27F,GAAwBz7F,KAAKqwF,KAC/CvlE,EAAqB,MAAbhrB,EAAM,GAAc,GAAK,EACjC0L,GACIkC,EAAG,EACHrF,EAAGqoF,EAAM5wF,EAAMwyF,KAASxnE,EACxBvjB,EAAGmpF,EAAM5wF,EAAM0yF,KAAS1nE,EACxBrvB,EAAGi1F,EAAM5wF,EAAM2yF,KAAW3nE,EAC1BtjB,EAAGkpF,EAAM5wF,EAAM4yF,KAAW5nE,EAC1B2uE,GAAI/I,EAAM5wF,EAAM6yF,KAAgB7nE,KAE1BhrB,EAAQ47F,GAAiB17F,KAAKqwF,KACxCvlE,EAAqB,MAAbhrB,EAAM,GAAc,GAAK,EACjCwhG,EAAW,SAAUG,GAIjB,GAAInS,GAAMmS,GAAOngF,WAAWmgF,EAAIv7F,QAAQ,IAAK,KAE7C,QAAQjG,MAAMqvF,GAAO,EAAIA,GAAOxkE,GAEpCtf,GACIkC,EAAG4zF,EAASxhG,EAAM,IAClB0oE,EAAG84B,EAASxhG,EAAM,IAClBuI,EAAGi5F,EAASxhG,EAAM,IAClByH,EAAG+5F,EAASxhG,EAAM,IAClBrE,EAAG6lG,EAASxhG,EAAM,IAClB0H,EAAG85F,EAASxhG,EAAM,IAClB8tD,EAAG0zC,EAASxhG,EAAM,MAEH,MAAZ0L,EACPA,KAC2B,gBAAbA,KACT,QAAUA,IAAY,MAAQA,MACnC+1F,EAAU/R,EAAkB1wF,GAAO0M,EAAS4Z,MAAOtmB,GAAO0M,EAAS6Z,KAEnE7Z,KACAA,EAASiuF,GAAK8H,EAAQ/mE,aACtBhvB,EAASg9D,EAAI+4B,EAAQ5T,QAGzB0T,EAAM,GAAIhU,GAAS7hF,GAEf1M,GAAO0iG,WAAWnR,IAAU1F,EAAW0F,EAAO,aAC9CgR,EAAInT,QAAUmC,EAAMnC,SAGjBmT,GAIXviG,GAAO4iG,QAAUlhB,GAGjB1hF,GAAOogC,cAAgBy8D,GAGvB78F,GAAOm5F,SAAW,aAIlBn5F,GAAOgwF,iBAAmBA,GAI1BhwF,GAAOsuF,aAAe,aAGtBtuF,GAAO6iG,sBAAwB,SAAUtqC,EAAWuqC,GAChD,MAAI3H,IAAuB5iC,KAAev1D,GAC/B,EAEP8/F,IAAU9/F,EACHm4F,GAAuB5iC,IAElC4iC,GAAuB5iC,GAAauqC,GAC7B,IAGX9iG,GAAOwiC,KAAOoqD,EACV,wDACA,SAAUxnF,EAAK3E,GACX,MAAOT,IAAOuiC,OAAOn9B,EAAK3E,KAOlCT,GAAOuiC,OAAS,SAAUn9B,EAAK4O,GAC3B,GAAIpE,EAcJ,OAbIxK,KAEIwK,EADmB,mBAAb,GACC5P,GAAO+iG,aAAa39F,EAAK4O,GAGzBhU,GAAOqtF,WAAWjoF,GAGzBwK,IACA5P,GAAO0M,SAAS0iF,QAAUpvF,GAAOovF,QAAUx/E,IAI5C5P,GAAOovF,QAAQ4T,OAG1BhjG,GAAO+iG,aAAe,SAAU5vF,EAAMa,GAClC,MAAe,QAAXA,GACAA,EAAOivF,KAAO9vF,EACTizB,GAAQjzB,KACTizB,GAAQjzB,GAAQ,GAAI66E,IAExB5nD,GAAQjzB,GAAMs/E,IAAIz+E,GAGlBhU,GAAOuiC,OAAOpvB,GAEPizB,GAAQjzB,WAGRizB,IAAQjzB,GACR,OAIfnT,GAAOkjG,SAAWtW,EACd,gEACA,SAAUxnF,GACN,MAAOpF,IAAOqtF,WAAWjoF,KAKjCpF,GAAOqtF,WAAa,SAAUjoF,GAC1B,GAAIm9B,EAMJ,IAJIn9B,GAAOA,EAAIgqF,SAAWhqF,EAAIgqF,QAAQ4T,QAClC59F,EAAMA,EAAIgqF,QAAQ4T,QAGjB59F,EACD,MAAOpF,IAAOovF,OAGlB,KAAK1sF,EAAQ0C,GAAM,CAGf,GADAm9B,EAAS+xD,EAAWlvF,GAEhB,MAAOm9B,EAEXn9B,IAAOA,GAGX,MAAOgvF,GAAahvF,IAIxBpF,GAAOyD,SAAW,SAAUyc,GACxB,MAAOA,aAAe+tE,IACV,MAAP/tE,GAAe2rE,EAAW3rE,EAAK,qBAIxClgB,GAAO0iG,WAAa,SAAUxiF,GAC1B,MAAOA,aAAequE,GAG1B,KAAKvsF,GAAI89F,GAAM39F,OAAS,EAAGH,IAAK,IAAKA,GACjCowF,EAAS0N,GAAM99F,IAGnBhC,IAAO6xF,eAAiB,SAAUC,GAC9B,MAAOD,GAAeC,IAG1B9xF,GAAO27F,QAAU,SAAUwH,GACvB,GAAIxmG,GAAIqD,GAAOwyF,IAAIyH,IAQnB,OAPa,OAATkJ,EACArhG,EAAOnF,EAAEozF,IAAKoT,GAGdxmG,EAAEozF,IAAIzD,iBAAkB,EAGrB3vF,GAGXqD,GAAOojG,UAAY,WACf,MAAOpjG,IAAOiV,MAAM,KAAM/S,WAAWkhG,aAGzCpjG,GAAOu3F,kBAAoB,SAAUhG,GACjC,MAAOK,GAAML,IAAUK,EAAML,GAAS,GAAK,KAAO,MAGtDvxF,GAAOc,OAASA,EAOhBgB,EAAO9B,GAAOsW,GAAK23E,EAAO59E,WAEtBomB,MAAQ,WACJ,MAAOz2B,IAAO7D,OAGlBqH,QAAU,WACN,OAAQrH,KAAKo6B,GAA4B,KAArBp6B,KAAK2zF,SAAW,IAGxC+P,KAAO,WACH,MAAOl/F,MAAKgB,OAAOxF,KAAO,MAG9B0F,SAAW,WACP,MAAO1F,MAAKs6B,QAAQ8L,OAAO,MAAM7C,OAAO,qCAG5Ch8B,OAAS,WACL,MAAOvH,MAAK2zF,QAAU,GAAI/uF,OAAM5E,MAAQA,KAAKo6B,IAGjD3yB,YAAc,WACV,GAAIjH,GAAIqD,GAAO7D,MAAMq2F,KACrB,OAAI,GAAI71F,EAAEi6B,QAAUj6B,EAAEi6B,QAAU,KACxB,kBAAsB71B,MAAKsP,UAAUzM,YAE9BzH,KAAKuH,SAASE,cAEdmxF,EAAap4F,EAAG,gCAGpBo4F,EAAap4F,EAAG,mCAI/BsI,QAAU,WACN,GAAItI,GAAIR,IACR,QACIQ,EAAEi6B,OACFj6B,EAAEo6B,QACFp6B,EAAEm6B,OACFn6B,EAAE4+B,QACF5+B,EAAE6+B,UACF7+B,EAAE8+B,UACF9+B,EAAE++B,iBAIVq4D,QAAU,WACN,MAAOA,GAAQ53F,OAGnBknG,aAAe,WACX,MAAIlnG,MAAKm3F,GACEn3F,KAAK43F,WAAavC,EAAcr1F,KAAKm3F,IAAKn3F,KAAK0zF,OAAS7vF,GAAOwyF,IAAIr2F,KAAKm3F,IAAMtzF,GAAO7D,KAAKm3F,KAAKruF,WAAa,GAGhH,GAGXq+F,aAAe,WACX,MAAOxhG,MAAW3F,KAAK4zF,MAG3BwT,UAAW,WACP,MAAOpnG,MAAK4zF,IAAI/uE,UAGpBwxE,IAAM,SAAUgR,GACZ,MAAOrnG,MAAKqjG,UAAU,EAAGgE,IAG7B9O,MAAQ,SAAU8O,GASd,MARIrnG,MAAK0zF,SACL1zF,KAAKqjG,UAAU,EAAGgE,GAClBrnG,KAAK0zF,QAAS,EAEV2T,GACArnG,KAAKksB,SAASlsB,KAAKsnG,iBAAkB,MAGtCtnG,MAGXujC,OAAS,SAAUgkE,GACf,GAAIrT,GAAS0E,EAAa54F,KAAMunG,GAAe1jG,GAAOogC,cACtD,OAAOjkC,MAAKkxF,aAAa+U,WAAW/R,IAGxClgF,IAAM0gF,EAAY,EAAG,OAErBxoE,SAAWwoE,EAAY,GAAI,YAE3BxnE,KAAO,SAAUkoE,EAAOO,EAAO6R,GAC3B,GAEYt6E,GAAMgnE,EAFduT,EAAOjT,EAAOY,EAAOp1F,MACrB0nG,EAAmD,KAAvCD,EAAKpE,YAAcrjG,KAAKqjG,YAqBxC,OAlBA1N,GAAQD,EAAeC,GAET,SAAVA,GAA8B,UAAVA,GAA+B,YAAVA,GACzCzB,EAAS9C,EAAUpxF,KAAMynG,GACX,YAAV9R,EACAzB,GAAkB,EACD,SAAVyB,IACPzB,GAAkB,MAGtBhnE,EAAOltB,KAAOynG,EACdvT,EAAmB,WAAVyB,EAAqBzoE,EAAO,IACvB,WAAVyoE,EAAqBzoE,EAAO,IAClB,SAAVyoE,EAAmBzoE,EAAO,KAChB,QAAVyoE,GAAmBzoE,EAAOw6E,GAAY,MAC5B,SAAV/R,GAAoBzoE,EAAOw6E,GAAY,OACvCx6E,GAEDs6E,EAAUtT,EAASJ,EAASI,IAGvC/pE,KAAO,SAAUyO,EAAMgmE,GACnB,MAAO/6F,IAAO0M,UAAU6Z,GAAIpqB,KAAMmqB,KAAMyO,IAAOwN,OAAOpmC,KAAKomC,UAAUuhE,UAAU/I,IAGnFgJ,QAAU,SAAUhJ,GAChB,MAAO5+F,MAAKmqB,KAAKtmB,KAAU+6F,IAG/B2G,SAAW,SAAU3sE,GAIjB,GAAIuG,GAAMvG,GAAQ/0B,KACdgkG,EAAMrT,EAAOr1D,EAAKn/B,MAAM8nG,QAAQ,OAChC56E,EAAOltB,KAAKktB,KAAK26E,EAAK,QAAQ,GAC9BtkE,EAAgB,GAAPrW,EAAY,WACV,GAAPA,EAAY,WACL,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,WAAa,UAChC,OAAOltB,MAAKujC,OAAOvjC,KAAKkxF,aAAaqU,SAAShiE,EAAQvjC,KAAM6D,GAAOs7B,MAGvE+3D,WAAa,WACT,MAAOA,GAAWl3F,KAAKy6B,SAG3BstE,MAAQ,WACJ,MAAQ/nG,MAAKqjG,YAAcrjG,KAAKs6B,QAAQM,MAAM,GAAGyoE,aAC7CrjG,KAAKqjG,YAAcrjG,KAAKs6B,QAAQM,MAAM,GAAGyoE,aAGjD9oE,IAAM,SAAU66D,GACZ,GAAI76D,GAAMv6B,KAAK0zF,OAAS1zF,KAAKo6B,GAAGklE,YAAct/F,KAAKo6B,GAAG4tE,QACtD,OAAa,OAAT5S,GACAA,EAAQsJ,GAAatJ,EAAOp1F,KAAKkxF,cAC1BlxF,KAAKgU,IAAIohF,EAAQ76D,EAAK,MAEtBA,GAIfK,MAAQklE,GAAa,SAAS,GAE9BgI,QAAU,SAAUnS,GAIhB,OAHAA,EAAQD,EAAeC,IAIvB,IAAK,OACD31F,KAAK46B,MAAM,EAEf,KAAK,UACL,IAAK,QACD56B,KAAK26B,KAAK,EAEd,KAAK,OACL,IAAK,UACL,IAAK,MACD36B,KAAKo/B,MAAM,EAEf,KAAK,OACDp/B,KAAKq/B,QAAQ,EAEjB,KAAK,SACDr/B,KAAKs/B,QAAQ,EAEjB,KAAK,SACDt/B,KAAKu/B,aAAa,GAgBtB,MAXc,SAAVo2D,EACA31F,KAAK8jC,QAAQ,GACI,YAAV6xD,GACP31F,KAAKgjG,WAAW,GAIN,YAAVrN,GACA31F,KAAK46B,MAAqC,EAA/Bp2B,KAAKgB,MAAMxF,KAAK46B,QAAU,IAGlC56B,MAGXioG,MAAO,SAAUtS,GAEb,MADAA,GAAQD,EAAeC,GACnBA,IAAU9uF,GAAuB,gBAAV8uF,EAChB31F,KAEJA,KAAK8nG,QAAQnS,GAAO3hF,IAAI,EAAc,YAAV2hF,EAAsB,OAASA,GAAQzpE,SAAS,EAAG,OAG1FooE,QAAS,SAAUc,EAAOO,GACtB,GAAIuS,EAEJ,OADAvS,GAAQD,EAAgC,mBAAVC,GAAwBA,EAAQ,eAChD,gBAAVA,GACAP,EAAQvxF,GAAOyD,SAAS8tF,GAASA,EAAQvxF,GAAOuxF,IACxCp1F,MAAQo1F,IAEhB8S,EAAUrkG,GAAOyD,SAAS8tF,IAAUA,GAASvxF,GAAOuxF,GAC7C8S,GAAWloG,KAAKs6B,QAAQwtE,QAAQnS,KAI/ClB,SAAU,SAAUW,EAAOO,GACvB,GAAIuS,EAEJ,OADAvS,GAAQD,EAAgC,mBAAVC,GAAwBA,EAAQ,eAChD,gBAAVA,GACAP,EAAQvxF,GAAOyD,SAAS8tF,GAASA,EAAQvxF,GAAOuxF,IAChCA,GAARp1F,OAERkoG,EAAUrkG,GAAOyD,SAAS8tF,IAAUA,GAASvxF,GAAOuxF,IAC5Cp1F,KAAKs6B,QAAQ2tE,MAAMtS,GAASuS,IAI5CC,UAAW,SAAUh+E,EAAMC,EAAIurE,GAC3B,MAAO31F,MAAKs0F,QAAQnqE,EAAMwrE,IAAU31F,KAAKy0F,SAASrqE,EAAIurE,IAG1D3vD,OAAQ,SAAUovD,EAAOO,GACrB,GAAIuS,EAEJ,OADAvS,GAAQD,EAAeC,GAAS,eAClB,gBAAVA,GACAP,EAAQvxF,GAAOyD,SAAS8tF,GAASA,EAAQvxF,GAAOuxF,IACxCp1F,QAAUo1F,IAElB8S,GAAWrkG,GAAOuxF,IACTp1F,KAAKs6B,QAAQwtE,QAAQnS,IAAWuS,GAAWA,IAAaloG,KAAKs6B,QAAQ2tE,MAAMtS,KAI5FxxF,IAAKssF,EACI,mGACA,SAAUxqF,GAEN,MADAA,GAAQpC,GAAOiV,MAAM,KAAM/S,WACZ/F,KAARiG,EAAejG,KAAOiG,IAI1C7B,IAAKqsF,EACG,mGACA,SAAUxqF,GAEN,MADAA,GAAQpC,GAAOiV,MAAM,KAAM/S,WACpBE,EAAQjG,KAAOA,KAAOiG,IAIzCmiG,KAAO3X,EACC,4GAEA,SAAU2E,EAAOiS,GACb,MAAa,OAATjS,GACqB,gBAAVA,KACPA,GAASA,GAGbp1F,KAAKqjG,UAAUjO,EAAOiS,GAEfrnG,OAECA,KAAKqjG,cAe7BA,UAAY,SAAUjO,EAAOiS,GACzB,GACIgB,GADA39E,EAAS1qB,KAAK2zF,SAAW,CAE7B,OAAa,OAATyB,GACqB,gBAAVA,KACPA,EAAQuF,EAAoBvF,IAE5B5wF,KAAKknB,IAAI0pE,GAAS,KAClBA,EAAgB,GAARA,IAEPp1F,KAAK0zF,QAAU2T,IAChBgB,EAAcroG,KAAKsnG,kBAEvBtnG,KAAK2zF,QAAUyB,EACfp1F,KAAK0zF,QAAS,EACK,MAAf2U,GACAroG,KAAKgU,IAAIq0F,EAAa,KAEtB39E,IAAW0qE,KACNiS,GAAiBrnG,KAAKsoG,kBACvBzT,EAAgC70F,KACxB6D,GAAO0M,SAAS6kF,EAAQ1qE,EAAQ,KAAM,GAAG,GACzC1qB,KAAKsoG,oBACbtoG,KAAKsoG,mBAAoB,EACzBzkG,GAAOsuF,aAAanyF,MAAM,GAC1BA,KAAKsoG,kBAAoB,OAI1BtoG,MAEAA,KAAK0zF,OAAShpE,EAAS1qB,KAAKsnG,kBAI3CiB,QAAU,WACN,OAAQvoG,KAAK0zF,QAGjB8U,YAAc,WACV,MAAOxoG,MAAK0zF,QAGhB+U,MAAQ,WACJ,MAAOzoG,MAAK0zF,QAA2B,IAAjB1zF,KAAK2zF,SAG/B4P,SAAW,WACP,MAAOvjG,MAAK0zF,OAAS,MAAQ,IAGjC+P,SAAW,WACP,MAAOzjG,MAAK0zF,OAAS,6BAA+B,IAGxDuT,UAAY,WAMR,MALIjnG,MAAKyzF,KACLzzF,KAAKqjG,UAAUrjG,KAAKyzF,MACM,gBAAZzzF,MAAKqzF,IACnBrzF,KAAKqjG,UAAU1I,EAAoB36F,KAAKqzF,KAErCrzF,MAGX0oG,qBAAuB,SAAUtT,GAQ7B,MAHIA,GAJCA,EAIOvxF,GAAOuxF,GAAOiO,YAHd,GAMJrjG,KAAKqjG,YAAcjO,GAAS,KAAO,GAG/CsB,YAAc,WACV,MAAOA,GAAY12F,KAAKy6B,OAAQz6B,KAAK46B,UAGzCJ,UAAY,SAAU46D,GAClB,GAAI56D,GAAYjM,IAAO1qB,GAAO7D,MAAM8nG,QAAQ,OAASjkG,GAAO7D,MAAM8nG,QAAQ,SAAW,OAAS,CAC9F,OAAgB,OAAT1S,EAAgB56D,EAAYx6B,KAAKgU,IAAKohF,EAAQ56D,EAAY,MAGrEi4D,QAAU,SAAU2C,GAChB,MAAgB,OAATA,EAAgB5wF,KAAKu2C,MAAM/6C,KAAK46B,QAAU,GAAK,GAAK56B,KAAK46B,MAAoB,GAAbw6D,EAAQ,GAASp1F,KAAK46B,QAAU,IAG3G+gE,SAAW,SAAUvG,GACjB,GAAI36D,GAAOu8D,GAAWh3F,KAAMA,KAAKkxF,aAAa8K,MAAMlF,IAAK92F,KAAKkxF,aAAa8K,MAAMjF,KAAKt8D,IACtF,OAAgB,OAAT26D,EAAgB36D,EAAOz6B,KAAKgU,IAAKohF,EAAQ36D,EAAO,MAG3DooE,YAAc,SAAUzN,GACpB,GAAI36D,GAAOu8D,GAAWh3F,KAAM,EAAG,GAAGy6B,IAClC,OAAgB,OAAT26D,EAAgB36D,EAAOz6B,KAAKgU,IAAKohF,EAAQ36D,EAAO,MAG3Dm4D,KAAO,SAAUwC,GACb,GAAIxC,GAAO5yF,KAAKkxF,aAAa0B,KAAK5yF,KAClC,OAAgB,OAATo1F,EAAgBxC,EAAO5yF,KAAKgU,IAAqB,GAAhBohF,EAAQxC,GAAW,MAG/D0P,QAAU,SAAUlN,GAChB,GAAIxC,GAAOoE,GAAWh3F,KAAM,EAAG,GAAG4yF,IAClC,OAAgB,OAATwC,EAAgBxC,EAAO5yF,KAAKgU,IAAqB,GAAhBohF,EAAQxC,GAAW,MAG/D9uD,QAAU,SAAUsxD,GAChB,GAAItxD,IAAW9jC,KAAKu6B,MAAQ,EAAIv6B,KAAKkxF,aAAa8K,MAAMlF,KAAO,CAC/D,OAAgB,OAAT1B,EAAgBtxD,EAAU9jC,KAAKgU,IAAIohF,EAAQtxD,EAAS,MAG/Dk/D,WAAa,SAAU5N,GAInB,MAAgB,OAATA,EAAgBp1F,KAAKu6B,OAAS,EAAIv6B,KAAKu6B,IAAIv6B,KAAKu6B,MAAQ,EAAI66D,EAAQA,EAAQ,IAGvFuT,eAAiB,WACb,MAAO9R,GAAY72F,KAAKy6B,OAAQ,EAAG,IAGvCo8D,YAAc,WACV,GAAI+R,GAAW5oG,KAAKkxF,aAAa8K,KACjC,OAAOnF,GAAY72F,KAAKy6B,OAAQmuE,EAAS9R,IAAK8R,EAAS7R,MAG3D9gF,IAAM,SAAU0/E,GAEZ,MADAA,GAAQD,EAAeC,GAChB31F,KAAK21F,MAGhBW,IAAM,SAAUX,EAAOrxF,GACnB,GAAIu7F,EACJ,IAAqB,gBAAVlK,GACP,IAAKkK,IAAQlK,GACT31F,KAAKs2F,IAAIuJ,EAAMlK,EAAMkK,QAIzBlK,GAAQD,EAAeC,GACI,kBAAhB31F,MAAK21F,IACZ31F,KAAK21F,GAAOrxF,EAGpB,OAAOtE,OAMXomC,OAAS,SAAUn9B,GACf,GAAI4/F,EAEJ,OAAI5/F,KAAQpC,EACD7G,KAAKizF,QAAQ4T,OAEpBgC,EAAgBhlG,GAAOqtF,WAAWjoF,GACb,MAAjB4/F,IACA7oG,KAAKizF,QAAU4V,GAEZ7oG,OAIfqmC,KAAOoqD,EACH,kJACA,SAAUxnF,GACN,MAAIA,KAAQpC,EACD7G,KAAKkxF,aAELlxF,KAAKomC,OAAOn9B,KAK/BioF,WAAa,WACT,MAAOlxF,MAAKizF,SAGhBqU,eAAiB,WAGb,MAAuD,KAA/C9iG,KAAK+pB,MAAMvuB,KAAKo6B,GAAG0uE,oBAAsB,OA+CzDjlG,GAAOsW,GAAGupB,YAAc7/B,GAAOsW,GAAGolB,aAAeugE,GAAa,gBAAgB,GAC9Ej8F,GAAOsW,GAAGwpB,OAAS9/B,GAAOsW,GAAGmlB,QAAUwgE,GAAa,WAAW,GAC/Dj8F,GAAOsW,GAAGypB,OAAS//B,GAAOsW,GAAGklB,QAAUygE,GAAa,WAAW,GAK/Dj8F,GAAOsW,GAAG0pB,KAAOhgC,GAAOsW,GAAGilB,MAAQ0gE,GAAa,SAAS,GAEzDj8F,GAAOsW,GAAGwgB,KAAOmlE,GAAa,QAAQ,GACtCj8F,GAAOsW,GAAGshB,MAAQg1D,EAAU,kDAAmDqP,GAAa,QAAQ,IACpGj8F,GAAOsW,GAAGsgB,KAAOqlE,GAAa,YAAY,GAC1Cj8F,GAAOsW,GAAGo4E,MAAQ9B,EAAU,kDAAmDqP,GAAa,YAAY,IAGxGj8F,GAAOsW,GAAG04E,KAAOhvF,GAAOsW,GAAGogB,IAC3B12B,GAAOsW,GAAGu4E,OAAS7uF,GAAOsW,GAAGygB,MAC7B/2B,GAAOsW,GAAGw4E,MAAQ9uF,GAAOsW,GAAGy4E,KAC5B/uF,GAAOsW,GAAG4uF,SAAWllG,GAAOsW,GAAGmoF,QAC/Bz+F,GAAOsW,GAAGq4E,SAAW3uF,GAAOsW,GAAGs4E,QAG/B5uF,GAAOsW,GAAG6uF,OAASnlG,GAAOsW,GAAG1S,YAG7B5D,GAAOsW,GAAG8uF,MAAQplG,GAAOsW,GAAGsuF,MAkB5B9iG,EAAO9B,GAAO0M,SAAS4J,GAAKi4E,EAASl+E,WAEjCg/E,QAAU,WACN,GAII5zD,GAASD,EAASD,EAJlBG,EAAev/B,KAAK8yF,cACpBD,EAAO7yF,KAAK+yF,MACZL,EAAS1yF,KAAKgzF,QACdv/E,EAAOzT,KAAK2T,MACa4+E,EAAQ,CAIrC9+E,GAAK8rB,aAAeA,EAAe,IAEnCD,EAAUw0D,EAASv0D,EAAe,KAClC9rB,EAAK6rB,QAAUA,EAAU,GAEzBD,EAAUy0D,EAASx0D,EAAU,IAC7B7rB,EAAK4rB,QAAUA,EAAU,GAEzBD,EAAQ00D,EAASz0D,EAAU,IAC3B5rB,EAAK2rB,MAAQA,EAAQ,GAErByzD,GAAQiB,EAAS10D,EAAQ,IAGzBmzD,EAAQuB,EAASkM,GAAYnN,IAC7BA,GAAQiB,EAASmM,GAAY1N,IAI7BG,GAAUoB,EAASjB,EAAO,IAC1BA,GAAQ,GAGRN,GAASuB,EAASpB,EAAS,IAC3BA,GAAU,GAEVj/E,EAAKo/E,KAAOA,EACZp/E,EAAKi/E,OAASA,EACdj/E,EAAK8+E,MAAQA,GAGjB7mE,IAAM,WAYF,MAXA1rB,MAAK8yF,cAAgBtuF,KAAKknB,IAAI1rB,KAAK8yF,eACnC9yF,KAAK+yF,MAAQvuF,KAAKknB,IAAI1rB,KAAK+yF,OAC3B/yF,KAAKgzF,QAAUxuF,KAAKknB,IAAI1rB,KAAKgzF,SAE7BhzF,KAAK2T,MAAM4rB,aAAe/6B,KAAKknB,IAAI1rB,KAAK2T,MAAM4rB,cAC9Cv/B,KAAK2T,MAAM2rB,QAAU96B,KAAKknB,IAAI1rB,KAAK2T,MAAM2rB,SACzCt/B,KAAK2T,MAAM0rB,QAAU76B,KAAKknB,IAAI1rB,KAAK2T,MAAM0rB,SACzCr/B,KAAK2T,MAAMyrB,MAAQ56B,KAAKknB,IAAI1rB,KAAK2T,MAAMyrB,OACvCp/B,KAAK2T,MAAM++E,OAASluF,KAAKknB,IAAI1rB,KAAK2T,MAAM++E,QACxC1yF,KAAK2T,MAAM4+E,MAAQ/tF,KAAKknB,IAAI1rB,KAAK2T,MAAM4+E,OAEhCvyF,MAGX2yF,MAAQ,WACJ,MAAOmB,GAAS9zF,KAAK6yF,OAAS,IAGlCxrF,QAAU,WACN,MAAOrH,MAAK8yF,cACG,MAAb9yF,KAAK+yF,MACJ/yF,KAAKgzF,QAAU,GAAM,OACK,QAA3ByC,EAAMz1F,KAAKgzF,QAAU,KAG3B2U,SAAW,SAAUuB,GACjB,GAAIhV,GAAS4K,GAAa9+F,MAAOkpG,EAAYlpG,KAAKkxF,aAMlD,OAJIgY,KACAhV,EAASl0F,KAAKkxF,aAAa6U,YAAY/lG,KAAMk0F,IAG1Cl0F,KAAKkxF,aAAa+U,WAAW/R,IAGxClgF,IAAM,SAAUohF,EAAOjC,GAEnB,GAAIwB,GAAM9wF,GAAO0M,SAAS6kF,EAAOjC,EAQjC,OANAnzF,MAAK8yF,eAAiB6B,EAAI7B,cAC1B9yF,KAAK+yF,OAAS4B,EAAI5B,MAClB/yF,KAAKgzF,SAAW2B,EAAI3B,QAEpBhzF,KAAKkzF,UAEElzF,MAGXksB,SAAW,SAAUkpE,EAAOjC,GACxB,GAAIwB,GAAM9wF,GAAO0M,SAAS6kF,EAAOjC,EAQjC,OANAnzF,MAAK8yF,eAAiB6B,EAAI7B,cAC1B9yF,KAAK+yF,OAAS4B,EAAI5B,MAClB/yF,KAAKgzF,SAAW2B,EAAI3B,QAEpBhzF,KAAKkzF,UAEElzF,MAGXiW,IAAM,SAAU0/E,GAEZ,MADAA,GAAQD,EAAeC,GAChB31F,KAAK21F,EAAMrvD,cAAgB,QAGtCxW,GAAK,SAAU6lE,GACX,GAAI9C,GAAMH,CAGV,IAFAiD,EAAQD,EAAeC,GAET,UAAVA,GAA+B,SAAVA,EAGrB,MAFA9C,GAAO7yF,KAAK+yF,MAAQ/yF,KAAK8yF,cAAgB,MACzCJ,EAAS1yF,KAAKgzF,QAA8B,GAApBgN,GAAYnN,GACnB,UAAV8C,EAAoBjD,EAASA,EAAS,EAI7C,QADAG,EAAO7yF,KAAK+yF,MAAQvuF,KAAK+pB,MAAM0xE,GAAYjgG,KAAKgzF,QAAU,KAClD2C,GACJ,IAAK,OAAQ,MAAO9C,GAAO,EAAI7yF,KAAK8yF,cAAgB,MACpD,KAAK,MAAO,MAAOD,GAAO7yF,KAAK8yF,cAAgB,KAC/C,KAAK,OAAQ,MAAc,IAAPD,EAAY7yF,KAAK8yF,cAAgB,IACrD,KAAK,SAAU,MAAc,IAAPD,EAAY,GAAK7yF,KAAK8yF,cAAgB,GAC5D,KAAK,SAAU,MAAc,IAAPD,EAAY,GAAK,GAAK7yF,KAAK8yF,cAAgB,GAEjE,KAAK,cAAe,MAAOtuF,MAAKgB,MAAa,GAAPqtF,EAAY,GAAK,GAAK,KAAQ7yF,KAAK8yF,aACzE,SAAS,KAAM,IAAIlvF,OAAM,gBAAkB+xF,KAKvDtvD,KAAOxiC,GAAOsW,GAAGksB,KACjBD,OAASviC,GAAOsW,GAAGisB,OAEnB+iE,YAAc1Y,EACV,sFAEA,WACI,MAAOzwF,MAAKyH,gBAIpBA,YAAc,WAEV,GAAI8qF,GAAQ/tF,KAAKknB,IAAI1rB,KAAKuyF,SACtBG,EAASluF,KAAKknB,IAAI1rB,KAAK0yF,UACvBG,EAAOruF,KAAKknB,IAAI1rB,KAAK6yF,QACrBzzD,EAAQ56B,KAAKknB,IAAI1rB,KAAKo/B,SACtBC,EAAU76B,KAAKknB,IAAI1rB,KAAKq/B,WACxBC,EAAU96B,KAAKknB,IAAI1rB,KAAKs/B,UAAYt/B,KAAKu/B,eAAiB,IAE9D,OAAKv/B,MAAKopG,aAMFppG,KAAKopG,YAAc,EAAI,IAAM,IACjC,KACC7W,EAAQA,EAAQ,IAAM,KACtBG,EAASA,EAAS,IAAM,KACxBG,EAAOA,EAAO,IAAM,KACnBzzD,GAASC,GAAWC,EAAW,IAAM,KACtCF,EAAQA,EAAQ,IAAM,KACtBC,EAAUA,EAAU,IAAM,KAC1BC,EAAUA,EAAU,IAAM,IAXpB,OAcf4xD,WAAa,WACT,MAAOlxF,MAAKizF,SAGhB+V,OAAS,WACL,MAAOhpG,MAAKyH,iBAIpB5D,GAAO0M,SAAS4J,GAAGzU,SAAW7B,GAAO0M,SAAS4J,GAAG1S,WAQjD,KAAK5B,KAAK86F,IACFjR,EAAWiR,GAAwB96F,KACnCq6F,GAAmBr6F,GAAEygC,cAI7BziC,IAAO0M,SAAS4J,GAAGkvF,eAAiB,WAChC,MAAOrpG,MAAK8vB,GAAG,OAEnBjsB,GAAO0M,SAAS4J,GAAGivF,UAAY,WAC3B,MAAOppG,MAAK8vB,GAAG,MAEnBjsB,GAAO0M,SAAS4J,GAAGmvF,UAAY,WAC3B,MAAOtpG,MAAK8vB,GAAG,MAEnBjsB,GAAO0M,SAAS4J,GAAGovF,QAAU,WACzB,MAAOvpG,MAAK8vB,GAAG,MAEnBjsB,GAAO0M,SAAS4J,GAAGqvF,OAAS,WACxB,MAAOxpG,MAAK8vB,GAAG,MAEnBjsB,GAAO0M,SAAS4J,GAAGsvF,QAAU,WACzB,MAAOzpG,MAAK8vB,GAAG,UAEnBjsB,GAAO0M,SAAS4J,GAAGuvF,SAAW,WAC1B,MAAO1pG,MAAK8vB,GAAG,MAEnBjsB,GAAO0M,SAAS4J,GAAGwvF,QAAU,WACzB,MAAO3pG,MAAK8vB,GAAG,MASnBjsB,GAAOuiC,OAAO,MACVwjE,aAAc,uBACdzY,QAAU,SAAU4C,GAChB,GAAIttF,GAAIstF,EAAS,GACbG,EAAuC,IAA7BuB,EAAM1B,EAAS,IAAM,IAAa,KACrC,IAANttF,EAAW,KACL,IAANA,EAAW,KACL,IAANA,EAAW,KAAO,IACvB,OAAOstF,GAASG,KA4BpBmE,GACAx4F,EAAOD,QAAUiE,IAEf6vE,EAAgC,SAAUm2B,EAASjqG,EAASC,GAM1D,MALIA,GAAOukF,QAAUvkF,EAAOukF,UAAYvkF,EAAOukF,SAAS0lB,YAAa,IAEjEvJ,GAAY18F,OAASy8F,IAGlBz8F,IACTtD,KAAKX,EAASM,EAAqBN,EAASC,KAAS6zE,IAAkC7sE,IAAchH,EAAOD,QAAU8zE,IACxHysB,IAAW,MAIhB5/F,KAAKP,QAEqBO,KAAKX,EAAU,WAAa,MAAOI,SAAYE,EAAoB,IAAIL,KAIhG,SAASA,GAeb,QAASme,GAAQ+F,GACf,MAAIA,GAAY2xC,EAAM3xC,GAAtB,OAWF,QAAS2xC,GAAM3xC,GACb,IAAK,GAAI9a,KAAO+U,GAAQ9J,UACtB6P,EAAI9a,GAAO+U,EAAQ9J,UAAUjL,EAE/B,OAAO8a,GAxBTlkB,EAAOD,QAAUoe,EAoCjBA,EAAQ9J,UAAUI,GAClB0J,EAAQ9J,UAAUhL,iBAAmB,SAASW,EAAOsQ,GAInD,MAHAna,MAAK+pG,WAAa/pG,KAAK+pG,gBACtB/pG,KAAK+pG,WAAWlgG,GAAS7J,KAAK+pG,WAAWlgG,QACvCtB,KAAK4R,GACDna,MAaTge,EAAQ9J,UAAU81F,KAAO,SAASngG,EAAOsQ,GAIvC,QAAS7F,KACP00E,EAAKv0E,IAAI5K,EAAOyK,GAChB6F,EAAGrB,MAAM9Y,KAAM+F,WALjB,GAAIijF,GAAOhpF,IAUX,OATAA,MAAK+pG,WAAa/pG,KAAK+pG,eAOvBz1F,EAAG6F,GAAKA,EACRna,KAAKsU,GAAGzK,EAAOyK,GACRtU,MAaTge,EAAQ9J,UAAUO,IAClBuJ,EAAQ9J,UAAU+1F,eAClBjsF,EAAQ9J,UAAUg2F,mBAClBlsF,EAAQ9J,UAAUxK,oBAAsB,SAASG,EAAOsQ,GAItD,GAHAna,KAAK+pG,WAAa/pG,KAAK+pG,eAGnB,GAAKhkG,UAAUC,OAEjB,MADAhG,MAAK+pG,cACE/pG,IAIT,IAAImqG,GAAYnqG,KAAK+pG,WAAWlgG,EAChC,KAAKsgG,EAAW,MAAOnqG,KAGvB,IAAI,GAAK+F,UAAUC,OAEjB,aADOhG,MAAK+pG,WAAWlgG,GAChB7J,IAKT,KAAK,GADDoqG,GACKvkG,EAAI,EAAGA,EAAIskG,EAAUnkG,OAAQH,IAEpC,GADAukG,EAAKD,EAAUtkG,GACXukG,IAAOjwF,GAAMiwF,EAAGjwF,KAAOA,EAAI,CAC7BgwF,EAAUxhG,OAAO9C,EAAG,EACpB,OAGJ,MAAO7F,OAWTge,EAAQ9J,UAAUua,KAAO,SAAS5kB,GAChC7J,KAAK+pG,WAAa/pG,KAAK+pG,cACvB,IAAI7vF,MAAUnO,MAAMxL,KAAKwF,UAAW,GAChCokG,EAAYnqG,KAAK+pG,WAAWlgG,EAEhC,IAAIsgG,EAAW,CACbA,EAAYA,EAAUp+F,MAAM,EAC5B,KAAK,GAAIlG,GAAI,EAAGC,EAAMqkG,EAAUnkG,OAAYF,EAAJD,IAAWA,EACjDskG,EAAUtkG,GAAGiT,MAAM9Y,KAAMka,GAI7B,MAAOla,OAWTge,EAAQ9J,UAAU+1D,UAAY,SAASpgE,GAErC,MADA7J,MAAK+pG,WAAa/pG,KAAK+pG,eAChB/pG,KAAK+pG,WAAWlgG,QAWzBmU,EAAQ9J,UAAUm2F,aAAe,SAASxgG,GACxC,QAAU7J,KAAKiqE,UAAUpgE,GAAO7D,SAM9B,SAASnG,EAAQD,GAQrBA,EAAQ82E,qBAAuB,WAC7B,GAAI92D,GAAIC,EAAW8G,EAAUk5C,EAAIC,EAAIuX,EACnCizB,EAAgBhzB,EAAOC,EAAO1xE,EAAG4mB,EAE/BoyB,EAAQ7+C,KAAKmmD,iBACbE,EAAcrmD,KAAKomD,uBAGnBmkD,EAAS,GAAK,EACd9jG,EAAI,EAAI,EAGR26C,EAAephD,KAAKgkD,UAAUrD,QAAQQ,UAAUC,aAChDopD,EAAkBppD,CAItB,KAAKv7C,EAAI,EAAGA,EAAIwgD,EAAYrgD,OAAS,EAAGH,IAEtC,IADAyxE,EAAQz4B,EAAMwH,EAAYxgD,IACrB4mB,EAAI5mB,EAAI,EAAG4mB,EAAI45B,EAAYrgD,OAAQymB,IAAK,CAC3C8qD,EAAQ14B,EAAMwH,EAAY55B,IAC1B4qD,EAAsBC,EAAM5W,YAAc6W,EAAM7W,YAAc,EAE9D9gD,EAAK23D,EAAM/kE,EAAI8kE,EAAM9kE,EACrBqN,EAAK03D,EAAM9kE,EAAI6kE,EAAM7kE,EACrBkU,EAAWniB,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAGpB,GAAZ8G,IACFA,EAAW,GAAIniB,KAAKiB,SACpBma,EAAK+G,GAGP6jF,EAA0C,GAAvBnzB,EAA4Bj2B,EAAgBA,GAAgB,EAAIi2B,EAAsBr3E,KAAKgkD,UAAU1C,WAAWW,sBACnI,IAAIr8C,GAAI2kG,EAASC,CACF,GAAIA,EAAf7jF,IAEA2jF,EADa,GAAME,EAAjB7jF,EACe,EAGA/gB,EAAI+gB,EAAWlgB,EAIlC6jG,GAA0C,GAAvBjzB,EAA4B,EAAI,EAAIA,EAAsBr3E,KAAKgkD,UAAU1C,WAAWU,mBACvGsoD,GAAkC9lG,KAAKJ,IAAIuiB,EAAS,IAAK6jF,GAEzD3qC,EAAKjgD,EAAK0qF,EACVxqC,EAAKjgD,EAAKyqF,EACVhzB,EAAMzX,IAAMA,EACZyX,EAAMxX,IAAMA,EACZyX,EAAM1X,IAAMA,EACZ0X,EAAMzX,IAAMA,MAUhB,SAASjgE,EAAQD,GAQrBA,EAAQ82E,qBAAuB,WAC7B,GAAI92D,GAAIC,EAAI8G,EAAUk5C,EAAIC,EACxBwqC,EAAgBhzB,EAAOC,EAAO1xE,EAAG4mB,EAE/BoyB,EAAQ7+C,KAAKmmD,iBACbE,EAAcrmD,KAAKomD,uBAGnBhF,EAAephD,KAAKgkD,UAAUrD,QAAQU,sBAAsBD,YAIhE,KAAKv7C,EAAI,EAAGA,EAAIwgD,EAAYrgD,OAAS,EAAGH,IAEtC,IADAyxE,EAAQz4B,EAAMwH,EAAYxgD,IACrB4mB,EAAI5mB,EAAI,EAAG4mB,EAAI45B,EAAYrgD,OAAQymB,IAItC,GAHA8qD,EAAQ14B,EAAMwH,EAAY55B,IAGtB6qD,EAAMx3B,OAASy3B,EAAMz3B,MAAO,CAE9BlgC,EAAK23D,EAAM/kE,EAAI8kE,EAAM9kE,EACrBqN,EAAK03D,EAAM9kE,EAAI6kE,EAAM7kE,EACrBkU,EAAWniB,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,EAGpC,IAAI4qF,GAAY,GAEdH,GADalpD,EAAXz6B,GACgBniB,KAAKkwB,IAAI+1E,EAAU9jF,EAAS,GAAKniB,KAAKkwB,IAAI+1E,EAAUrpD,EAAa,GAGlE,EAGD,GAAZz6B,EACFA,EAAW,IAGX2jF,GAAkC3jF,EAEpCk5C,EAAKjgD,EAAK0qF,EACVxqC,EAAKjgD,EAAKyqF,EAEVhzB,EAAMzX,IAAMA,EACZyX,EAAMxX,IAAMA,EACZyX,EAAM1X,IAAMA,EACZ0X,EAAMzX,IAAMA,IAYtBlgE,EAAQg3E,mCAAqC,WAS3C,IAAK,GARDO,GAAYzmB,EAAMZ,EAClBlwC,EAAIC,EAAIggD,EAAIC,EAAIsX,EAAazwD,EAC7Bq5B,EAAQhgD,KAAKggD,MAEbnB,EAAQ7+C,KAAKmmD,iBACbE,EAAcrmD,KAAKomD,uBAGdvgD,EAAI,EAAGA,EAAIwgD,EAAYrgD,OAAQH,IAAK,CAC3C,GAAIyxE,GAAQz4B,EAAMwH,EAAYxgD,GAC9ByxE,GAAMozB,SAAW,EACjBpzB,EAAMqzB,SAAW,EAKnB,IAAK76C,IAAU9P,GACb,GAAIA,EAAM75C,eAAe2pD,KACvBY,EAAO1Q,EAAM8P,GACTY,EAAKC,WAEH3wD,KAAK6+C,MAAM14C,eAAeuqD,EAAKwG,OAASl3D,KAAK6+C,MAAM14C,eAAeuqD,EAAKyG,SAqBzE,GApBAggB,EAAazmB,EAAK/P,QAAQK,aAE1Bm2B,IAAezmB,EAAKtmC,GAAGs2C,YAAchQ,EAAKvmC,KAAKu2C,YAAc,GAAK1gE,KAAKgkD,UAAU1C,WAAWY,WAE5FtiC,EAAM8wC,EAAKvmC,KAAK3X,EAAIk+C,EAAKtmC,GAAG5X,EAC5BqN,EAAM6wC,EAAKvmC,KAAK1X,EAAIi+C,EAAKtmC,GAAG3X,EAC5BkU,EAAWniB,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIbywD,EAAcp3E,KAAKgkD,UAAUrD,QAAQM,gBAAkBk2B,EAAaxwD,GAAYA,EAEhFk5C,EAAKjgD,EAAKw3D,EACVtX,EAAKjgD,EAAKu3D,EAIN1mB,EAAKtmC,GAAG01B,OAAS4Q,EAAKvmC,KAAK21B,MAC7B4Q,EAAKtmC,GAAGsgF,UAAY7qC,EACpBnP,EAAKtmC,GAAGugF,UAAY7qC,EACpBpP,EAAKvmC,KAAKugF,UAAY7qC,EACtBnP,EAAKvmC,KAAKwgF,UAAY7qC,MAEnB,CACH,GAAI3W,GAAS,EACbuH,GAAKtmC,GAAGy1C,IAAM1W,EAAO0W,EACrBnP,EAAKtmC,GAAG01C,IAAM3W,EAAO2W,EACrBpP,EAAKvmC,KAAK01C,IAAM1W,EAAO0W,EACvBnP,EAAKvmC,KAAK21C,IAAM3W,EAAO2W,EAQjC,GACI4qC,GAAUC,EADVvzB,EAAc,CAElB,KAAKvxE,EAAI,EAAGA,EAAIwgD,EAAYrgD,OAAQH,IAAK,CACvC,GAAIwiD,GAAOxJ,EAAMwH,EAAYxgD,GAC7B6kG,GAAWlmG,KAAKL,IAAIizE,EAAY5yE,KAAKJ,KAAKgzE,EAAY/uB,EAAKqiD,WAC3DC,EAAWnmG,KAAKL,IAAIizE,EAAY5yE,KAAKJ,KAAKgzE,EAAY/uB,EAAKsiD,WAE3DtiD,EAAKwX,IAAM6qC,EACXriD,EAAKyX,IAAM6qC,EAIb,GAAIC,GAAU,EACVC,EAAU,CACd,KAAKhlG,EAAI,EAAGA,EAAIwgD,EAAYrgD,OAAQH,IAAK,CACvC,GAAIwiD,GAAOxJ,EAAMwH,EAAYxgD,GAC7B+kG,IAAWviD,EAAKwX,GAChBgrC,GAAWxiD,EAAKyX,GAElB,GAAIgrC,GAAeF,EAAUvkD,EAAYrgD,OACrC+kG,EAAeF,EAAUxkD,EAAYrgD,MAEzC,KAAKH,EAAI,EAAGA,EAAIwgD,EAAYrgD,OAAQH,IAAK,CACvC,GAAIwiD,GAAOxJ,EAAMwH,EAAYxgD,GAC7BwiD,GAAKwX,IAAMirC,EACXziD,EAAKyX,IAAMirC,KAOX,SAASlrG,EAAQD,GAQrBA,EAAQ82E,qBAAuB,WAC7B,GAA8D,GAA1D12E,KAAKgkD,UAAUrD,QAAQC,UAAUE,sBAA4B,CAC/D,GAAIuH,GACAxJ,EAAQ7+C,KAAKmmD,iBACbE,EAAcrmD,KAAKomD,uBACnB4kD,EAAY3kD,EAAYrgD,MAE5BhG,MAAKirG,mBAAmBpsD,EAAMwH,EAK9B,KAAK,GAHDgwB,GAAgBr2E,KAAKq2E,cAGhBxwE,EAAI,EAAOmlG,EAAJnlG,EAAeA,IAC7BwiD,EAAOxJ,EAAMwH,EAAYxgD,IACrBwiD,EAAKn5C,QAAQ4vC,KAAO,IAEtB9+C,KAAKkrG,sBAAsB70B,EAAc32E,KAAKk8E,SAASuvB,GAAG9iD,GAC1DroD,KAAKkrG,sBAAsB70B,EAAc32E,KAAKk8E,SAASwvB,GAAG/iD,GAC1DroD,KAAKkrG,sBAAsB70B,EAAc32E,KAAKk8E,SAASyvB,GAAGhjD,GAC1DroD,KAAKkrG,sBAAsB70B,EAAc32E,KAAKk8E,SAAS0vB,GAAGjjD,MAelEzoD,EAAQsrG,sBAAwB,SAASK,EAAaljD,GAEpD,GAAIkjD,EAAaC,cAAgB,EAAG,CAClC,GAAI5rF,GAAGC,EAAG8G,CAUV,IAPA/G,EAAK2rF,EAAaE,aAAaj5F,EAAI61C,EAAK71C,EACxCqN,EAAK0rF,EAAaE,aAAah5F,EAAI41C,EAAK51C,EACxCkU,EAAWniB,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAKhC8G,EAAW4kF,EAAaG,SAAW1rG,KAAKgkD,UAAUrD,QAAQC,UAAUC,cAAe,CAErE,GAAZl6B,IACFA,EAAW,GAAIniB,KAAKiB,SACpBma,EAAK+G,EAEP,IAAIswD,GAAej3E,KAAKgkD,UAAUrD,QAAQC,UAAUE,sBAAwByqD,EAAazsD,KAAOuJ,EAAKn5C,QAAQ4vC,MAAQn4B,EAAWA,EAAWA,GACvIk5C,EAAKjgD,EAAKq3D,EACVnX,EAAKjgD,EAAKo3D,CACd5uB,GAAKwX,IAAMA,EACXxX,EAAKyX,IAAMA,MAIX,IAAkC,GAA9ByrC,EAAaC,cACfxrG,KAAKkrG,sBAAsBK,EAAa3vB,SAASuvB,GAAG9iD,GACpDroD,KAAKkrG,sBAAsBK,EAAa3vB,SAASwvB,GAAG/iD,GACpDroD,KAAKkrG,sBAAsBK,EAAa3vB,SAASyvB,GAAGhjD,GACpDroD,KAAKkrG,sBAAsBK,EAAa3vB,SAAS0vB,GAAGjjD,OAGpD,IAAIkjD,EAAa3vB,SAASnoE,KAAKpT,IAAMgoD,EAAKhoD,GAAI,CAE5B,GAAZsmB,IACFA,EAAW,GAAIniB,KAAKiB,SACpBma,EAAK+G,EAEP,IAAIswD,GAAej3E,KAAKgkD,UAAUrD,QAAQC,UAAUE,sBAAwByqD,EAAazsD,KAAOuJ,EAAKn5C,QAAQ4vC,MAAQn4B,EAAWA,EAAWA,GACvIk5C,EAAKjgD,EAAKq3D,EACVnX,EAAKjgD,EAAKo3D,CACd5uB,GAAKwX,IAAMA,EACXxX,EAAKyX,IAAMA,KAcrBlgE,EAAQqrG,mBAAqB,SAASpsD,EAAMwH,GAU1C,IAAK,GATDgC,GACA2iD,EAAY3kD,EAAYrgD,OAExBwiD,EAAOvkD,OAAO0nG,UAChBrjD,EAAOrkD,OAAO0nG,UACdljD,GAAOxkD,OAAO0nG,UACdpjD,GAAOtkD,OAAO0nG,UAGP9lG,EAAI,EAAOmlG,EAAJnlG,EAAeA,IAAK,CAClC,GAAI2M,GAAIqsC,EAAMwH,EAAYxgD,IAAI2M,EAC1BC,EAAIosC,EAAMwH,EAAYxgD,IAAI4M,CAC1BosC,GAAMwH,EAAYxgD,IAAIqJ,QAAQ4vC,KAAO,IAC/B0J,EAAJh2C,IAAYg2C,EAAOh2C,GACnBA,EAAIi2C,IAAQA,EAAOj2C,GACf81C,EAAJ71C,IAAY61C,EAAO71C,GACnBA,EAAI81C,IAAQA,EAAO91C,IAI3B,GAAIm5F,GAAWpnG,KAAKknB,IAAI+8B,EAAOD,GAAQhkD,KAAKknB,IAAI68B,EAAOD,EACnDsjD,GAAW,GAAItjD,GAAQ,GAAMsjD,EAAUrjD,GAAQ,GAAMqjD,IACtCpjD,GAAQ,GAAMojD,EAAUnjD,GAAQ,GAAMmjD,EAGzD,IAAIC,GAAkB,KAClBC,EAAWtnG,KAAKJ,IAAIynG,EAAgBrnG,KAAKknB,IAAI+8B,EAAOD,IACpDujD,EAAe,GAAMD,EACrBpoC,EAAU,IAAOlb,EAAOC,GAAOkb,EAAU,IAAOrb,EAAOC,GAGvD8tB,GACF32E,MACE+rG,cAAej5F,EAAE,EAAGC,EAAE,GACtBqsC,KAAK,EACLxoB,OACEkyB,KAAMkb,EAAQqoC,EAAatjD,KAAKib,EAAQqoC,EACxCzjD,KAAMqb,EAAQooC,EAAaxjD,KAAKob,EAAQooC,GAE1Ch5F,KAAM+4F,EACNJ,SAAU,EAAII,EACdlwB,UAAYnoE,KAAK,MACjBu1B,SAAU,EACV8W,MAAO,EACP0rD,cAAe,GAMnB,KAHAxrG,KAAKgsG,aAAa31B,EAAc32E,MAG3BmG,EAAI,EAAOmlG,EAAJnlG,EAAeA,IACzBwiD,EAAOxJ,EAAMwH,EAAYxgD,IACrBwiD,EAAKn5C,QAAQ4vC,KAAO,GACtB9+C,KAAKisG,aAAa51B,EAAc32E,KAAK2oD,EAKzCroD,MAAKq2E,cAAgBA,GAWvBz2E,EAAQssG,kBAAoB,SAASX,EAAcljD,GACjD,GAAI8jD,GAAYZ,EAAazsD,KAAOuJ,EAAKn5C,QAAQ4vC,KAC7CstD,EAAe,EAAED,CAErBZ,GAAaE,aAAaj5F,EAAI+4F,EAAaE,aAAaj5F,EAAI+4F,EAAazsD,KAAOuJ,EAAK71C,EAAI61C,EAAKn5C,QAAQ4vC,KACtGysD,EAAaE,aAAaj5F,GAAK45F,EAE/Bb,EAAaE,aAAah5F,EAAI84F,EAAaE,aAAah5F,EAAI84F,EAAazsD,KAAOuJ,EAAK51C,EAAI41C,EAAKn5C,QAAQ4vC,KACtGysD,EAAaE,aAAah5F,GAAK25F,EAE/Bb,EAAazsD,KAAOqtD,CACpB,IAAIE,GAAc7nG,KAAKJ,IAAII,KAAKJ,IAAIikD,EAAK90C,OAAO80C,EAAK/7B,QAAQ+7B,EAAK/0C,MAClEi4F,GAAaviE,SAAYuiE,EAAaviE,SAAWqjE,EAAeA,EAAcd,EAAaviE,UAa7FppC,EAAQqsG,aAAe,SAASV,EAAaljD,EAAKikD,IAC1B,GAAlBA,GAA6CzlG,SAAnBylG,IAE5BtsG,KAAKksG,kBAAkBX,EAAaljD,GAGlCkjD,EAAa3vB,SAASuvB,GAAG70E,MAAMmyB,KAAOJ,EAAK71C,EACzC+4F,EAAa3vB,SAASuvB,GAAG70E,MAAMiyB,KAAOF,EAAK51C,EAC7CzS,KAAKusG,eAAehB,EAAaljD,EAAK,MAGtCroD,KAAKusG,eAAehB,EAAaljD,EAAK,MAIpCkjD,EAAa3vB,SAASuvB,GAAG70E,MAAMiyB,KAAOF,EAAK51C,EAC7CzS,KAAKusG,eAAehB,EAAaljD,EAAK,MAGtCroD,KAAKusG,eAAehB,EAAaljD,EAAK,OAc5CzoD,EAAQ2sG,eAAiB,SAAShB,EAAaljD,EAAKmkD,GAClD,OAAQjB,EAAa3vB,SAAS4wB,GAAQhB,eACpC,IAAK,GACHD,EAAa3vB,SAAS4wB,GAAQ5wB,SAASnoE,KAAO40C,EAC9CkjD,EAAa3vB,SAAS4wB,GAAQhB,cAAgB,EAC9CxrG,KAAKksG,kBAAkBX,EAAa3vB,SAAS4wB,GAAQnkD,EACrD,MACF,KAAK,GAGCkjD,EAAa3vB,SAAS4wB,GAAQ5wB,SAASnoE,KAAKjB,GAAK61C,EAAK71C,GACtD+4F,EAAa3vB,SAAS4wB,GAAQ5wB,SAASnoE,KAAKhB,GAAK41C,EAAK51C,GACxD41C,EAAK71C,GAAKhO,KAAKiB,SACf4iD,EAAK51C,GAAKjO,KAAKiB,WAGfzF,KAAKgsG,aAAaT,EAAa3vB,SAAS4wB,IACxCxsG,KAAKisG,aAAaV,EAAa3vB,SAAS4wB,GAAQnkD,GAElD,MACF,KAAK,GACHroD,KAAKisG,aAAaV,EAAa3vB,SAAS4wB,GAAQnkD,KAatDzoD,EAAQosG,aAAe,SAAST,GAE9B,GAAIkB,GAAgB,IACc,IAA9BlB,EAAaC,gBACfiB,EAAgBlB,EAAa3vB,SAASnoE,KACtC83F,EAAazsD,KAAO,EAAGysD,EAAaE,aAAaj5F,EAAI,EAAG+4F,EAAaE,aAAah5F,EAAI,GAExF84F,EAAaC,cAAgB,EAC7BD,EAAa3vB,SAASnoE,KAAO,KAC7BzT,KAAK0sG,cAAcnB,EAAa,MAChCvrG,KAAK0sG,cAAcnB,EAAa,MAChCvrG,KAAK0sG,cAAcnB,EAAa,MAChCvrG,KAAK0sG,cAAcnB,EAAa,MAEX,MAAjBkB,GACFzsG,KAAKisG,aAAaV,EAAakB,IAenC7sG,EAAQ8sG,cAAgB,SAASnB,EAAciB,GAC7C,GAAIhkD,GAAKC,EAAKH,EAAKC,EACfokD,EAAY,GAAMpB,EAAax4F,IACnC,QAAQy5F,GACN,IAAK,KACHhkD,EAAO+iD,EAAaj1E,MAAMkyB,KAC1BC,EAAO8iD,EAAaj1E,MAAMkyB,KAAOmkD,EACjCrkD,EAAOijD,EAAaj1E,MAAMgyB,KAC1BC,EAAOgjD,EAAaj1E,MAAMgyB,KAAOqkD,CACjC,MACF,KAAK,KACHnkD,EAAO+iD,EAAaj1E,MAAMkyB,KAAOmkD,EACjClkD,EAAO8iD,EAAaj1E,MAAMmyB,KAC1BH,EAAOijD,EAAaj1E,MAAMgyB,KAC1BC,EAAOgjD,EAAaj1E,MAAMgyB,KAAOqkD,CACjC,MACF,KAAK,KACHnkD,EAAO+iD,EAAaj1E,MAAMkyB,KAC1BC,EAAO8iD,EAAaj1E,MAAMkyB,KAAOmkD,EACjCrkD,EAAOijD,EAAaj1E,MAAMgyB,KAAOqkD,EACjCpkD,EAAOgjD,EAAaj1E,MAAMiyB,IAC1B,MACF,KAAK,KACHC,EAAO+iD,EAAaj1E,MAAMkyB,KAAOmkD,EACjClkD,EAAO8iD,EAAaj1E,MAAMmyB,KAC1BH,EAAOijD,EAAaj1E,MAAMgyB,KAAOqkD,EACjCpkD,EAAOgjD,EAAaj1E,MAAMiyB,KAK9BgjD,EAAa3vB,SAAS4wB,IACpBf,cAAcj5F,EAAE,EAAEC,EAAE,GACpBqsC,KAAK,EACLxoB,OAAOkyB,KAAKA,EAAKC,KAAKA,EAAKH,KAAKA,EAAKC,KAAKA,GAC1Cx1C,KAAM,GAAMw4F,EAAax4F,KACzB24F,SAAU,EAAIH,EAAaG,SAC3B9vB,UAAWnoE,KAAK,MAChBu1B,SAAU,EACV8W,MAAOyrD,EAAazrD,MAAM,EAC1B0rD,cAAe,IAYnB5rG,EAAQgtG,UAAY,SAAS7kF,EAAIxc,GACJ1E,SAAvB7G,KAAKq2E,gBAEPtuD,EAAIO,UAAY,EAEhBtoB,KAAK6sG,YAAY7sG,KAAKq2E,cAAc32E,KAAKqoB,EAAIxc,KAajD3L,EAAQitG,YAAc,SAASC,EAAO/kF,EAAIxc,GAC1B1E,SAAV0E,IACFA,EAAQ,WAGkB,GAAxBuhG,EAAOtB,gBACTxrG,KAAK6sG,YAAYC,EAAOlxB,SAASuvB,GAAGpjF,GACpC/nB,KAAK6sG,YAAYC,EAAOlxB,SAASwvB,GAAGrjF,GACpC/nB,KAAK6sG,YAAYC,EAAOlxB,SAAS0vB,GAAGvjF,GACpC/nB,KAAK6sG,YAAYC,EAAOlxB,SAASyvB,GAAGtjF,IAEtCA,EAAIY,YAAcpd,EAClBwc,EAAIa,YACJb,EAAIc,OAAOikF,EAAOx2E,MAAMkyB,KAAKskD,EAAOx2E,MAAMgyB,MAC1CvgC,EAAIe,OAAOgkF,EAAOx2E,MAAMmyB,KAAKqkD,EAAOx2E,MAAMgyB,MAC1CvgC,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAOikF,EAAOx2E,MAAMmyB,KAAKqkD,EAAOx2E,MAAMgyB,MAC1CvgC,EAAIe,OAAOgkF,EAAOx2E,MAAMmyB,KAAKqkD,EAAOx2E,MAAMiyB,MAC1CxgC,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAOikF,EAAOx2E,MAAMmyB,KAAKqkD,EAAOx2E,MAAMiyB,MAC1CxgC,EAAIe,OAAOgkF,EAAOx2E,MAAMkyB,KAAKskD,EAAOx2E,MAAMiyB,MAC1CxgC,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAOikF,EAAOx2E,MAAMkyB,KAAKskD,EAAOx2E,MAAMiyB,MAC1CxgC,EAAIe,OAAOgkF,EAAOx2E,MAAMkyB,KAAKskD,EAAOx2E,MAAMgyB,MAC1CvgC,EAAIlH,WAaF,SAAShhB,GAEb,QAASktG,GAAeC,GACvB,KAAM,IAAIppG,OAAM,uBAAyBopG,EAAM,MAEhDD,EAAel/F,KAAO,WAAa,UACnCk/F,EAAeE,QAAUF,EACzBltG,EAAOD,QAAUmtG,EACjBA,EAAe1sG,GAAK,IAKhB,SAASR,GAEbA,EAAOD,QAAU,SAASC,GAQzB,MAPIA,GAAOqtG,kBACVrtG,EAAO4wF,UAAY,aACnB5wF,EAAOstG,SAEPttG,EAAO+7E,YACP/7E,EAAOqtG,gBAAkB,GAEnBrtG"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index c385c14a..d7f37609 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -4,8 +4,8 @@ * * A dynamic, browser-based visualization library. * - * @version 3.11.0 - * @date 2015-03-05 + * @version 3.11.1-SNAPSHOT + * @date 2015-03-09 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -22,18 +22,18 @@ * * Vis.js may be distributed under either license. */ -"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);else for(var s in t)t.hasOwnProperty(s)&&e.hasOwnProperty(s)&&(i[e[s]]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxe;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);else for(var s in t)t.hasOwnProperty(s)&&e.hasOwnProperty(s)&&(i[e[s]]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(66),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var S=this.yLabel;S.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(S,o.x,o.y));var D=this.zLabel;D.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(D,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/D/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
    x:"+t.point.x+"
    y:"+t.point.y+"
    z:"+t.point.z+"
    ",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index] -},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)?m="current-time":o.hasParent(u,this.dom.center)&&(m="background"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},s.prototype.getEventProperties=function(t){var e=t.gesture?t.gesture.center.pageX:t.pageX,i=t.gesture?t.gesture.center.pageY:t.pageY,s=e-o.getAbsoluteLeft(this.dom.centerContainer),n=i-o.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(s),a=o.getTarget(t),h=null;o.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&o.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":o.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":o.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":o.hasParent(a,this.customTime.bar)?h="custom-time":o.hasParent(a,this.currentTime.bar)?h="current-time":o.hasParent(a,this.dom.center)&&(h="background");var d=[],l=this.linegraph.yAxisLeft,c=this.linegraph.yAxisRight;return l.hidden||d.push(l.screenToValue(n)),c.hidden||d.push(c.screenToValue(n)),{event:t,what:h,pageX:e,pageY:i,x:s,y:n,time:r,value:d}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start +},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(66),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)?m="current-time":o.hasParent(u,this.dom.center)&&(m="background"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(66),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},s.prototype.getEventProperties=function(t){var e=t.gesture?t.gesture.center.pageX:t.pageX,i=t.gesture?t.gesture.center.pageY:t.pageY,s=e-o.getAbsoluteLeft(this.dom.centerContainer),n=i-o.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(s),a=o.getTarget(t),h=null;o.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&o.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":o.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":o.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":o.hasParent(a,this.customTime.bar)?h="custom-time":o.hasParent(a,this.currentTime.bar)?h="current-time":o.hasParent(a,this.dom.center)&&(h="background");var d=[],l=this.linegraph.yAxisLeft,c=this.linegraph.yAxisRight;return l.hidden||d.push(l.screenToValue(n)),c.hidden||d.push(c.screenToValue(n)),{event:t,what:h,pageX:e,pageY:i,x:s,y:n,time:r,value:d}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start })},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg) },s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.clientY:t.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1; -var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes(); +var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(66),n=i(45),r=i(56),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes(); for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy -},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=M.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=M.DELIMITER);var i=E+n();if(C[i])return N=M.DELIMITER,k=i,o(),void o();if(C[E])return N=M.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=M.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=M.IDENTIFIER)}for(N=M.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==M.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=M.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=M.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==M.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=M.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=M.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=M.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),S(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=M.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Mi===!1&&(Mi=!0,Ce.updateOffset(this),Mi=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Si={},Di=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Mi=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=D(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Di.length-1;Oe>=0;--Oe)I(Di[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:M(1,"add"),subtract:M(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Se(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Se(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&De(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Me(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t) -}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); -var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=70},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=M.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=M.DELIMITER);var i=E+n();if(C[i])return N=M.DELIMITER,k=i,o(),void o();if(C[E])return N=M.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=M.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=M.IDENTIFIER)}for(N=M.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==M.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=M.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=M.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==M.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=M.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=M.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=M.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),S(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=M.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Ie.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Ce.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return b(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){Si[t]||(d(e),Si[t]=!0)}function p(t,e){return function(i){return w(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function m(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Mi===!1&&(Mi=!0,Ce.updateOffset(this),Mi=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2) +},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Si={},Di=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Mi=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=D(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Di.length-1;Oe>=0;--Oe)I(Di[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:M(1,"add"),subtract:M(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Se(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Se(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&De(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Me(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=70},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/misc/how_to_publish.md b/misc/how_to_publish.md index 1ab46341..62dced77 100644 --- a/misc/how_to_publish.md +++ b/misc/how_to_publish.md @@ -66,7 +66,7 @@ This generates the vis.js library in the folder `./dist`. - Copy the `examples` folder from the `master` branch to the `github-pages` branch. - Create a packaged version of vis.js. Go to the `master` branch and run: - zip vis.zip dist docs examples README.md HISTORY.md LICENSE* NOTICE -r + zip vis.zip dist docs examples README.md HISTORY.md CONTRIBUTING.md LICENSE* NOTICE -r - Move the created zip file `vis.zip` to the `download` folder in the `github-pages` branch. TODO: this should be automated. diff --git a/package.json b/package.json index e64c3f01..ca8c44e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vis", - "version": "3.11.0", + "version": "3.11.1-SNAPSHOT", "description": "A dynamic, browser-based visualization library.", "homepage": "http://visjs.org/", "repository": { From fd15b369ff0435aeb29da007a7e39f70c5de6ea3 Mon Sep 17 00:00:00 2001 From: jos Date: Mon, 9 Mar 2015 12:51:28 +0100 Subject: [PATCH 24/43] Added missing docs on `hiddenDates` for Graph2d (see #695) --- docs/graph2d.html | 15 +++++++++++++-- examples/graph2d/01_basic.html | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/docs/graph2d.html b/docs/graph2d.html index 68aad11c..652a94ae 100644 --- a/docs/graph2d.html +++ b/docs/graph2d.html @@ -852,6 +852,13 @@ Graph2d.clear({options: true}); // clear options only + + fit() + none + Adjust the visible window such that it fits all items. + + + getCurrentTime() Date @@ -904,9 +911,13 @@ Graph2d.clear({options: true}); // clear options only - fit() + hiddenDates + Object none - Adjust the visible window such that it fits all items. + This option allows you to hide specific timespans from the time axis. The dates can be supplied as an object: + {start: '2014-03-21 00:00:00', end: '2014-03-28 00:00:00', [repeat:'daily']} or as an Array of these objects. The repeat argument is optional. + The possible values are (case-sensitive): daily, weekly, monthly, yearly. To hide a weekend, pick any Saturday as start and the following Monday as end + and set repeat to weekly. diff --git a/examples/graph2d/01_basic.html b/examples/graph2d/01_basic.html index 84565a9e..8b0510b8 100644 --- a/examples/graph2d/01_basic.html +++ b/examples/graph2d/01_basic.html @@ -44,7 +44,7 @@ var dataset = new vis.DataSet(items); var options = { start: '2014-06-10', - end: '2014-06-18', + end: '2014-06-18' }; var graph2d = new vis.Graph2d(container, dataset, options); From 4c6d3310ca1445961b88bd7f97195b1e7b0dfaa0 Mon Sep 17 00:00:00 2001 From: jos Date: Tue, 10 Mar 2015 09:53:38 +0100 Subject: [PATCH 25/43] Fixed support for DataSet with custom id fields (option `fieldId`). See #701. --- HISTORY.md | 7 +++++++ lib/network/Network.js | 13 +++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index ffe0444e..b9f372ac 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -2,6 +2,13 @@ http://visjs.org +## not yet released, version 3.11.1-SNAPSHOT + +### Network + +- Fixed support for DataSet with custom id fields (option `fieldId`). + + ## 2015-03-05, version 3.11.0 ### Network diff --git a/lib/network/Network.js b/lib/network/Network.js index e5eb3476..ace182e7 100644 --- a/lib/network/Network.js +++ b/lib/network/Network.js @@ -1657,9 +1657,14 @@ Network.prototype._setNodes = function(nodes) { */ Network.prototype._addNodes = function(ids) { var id; + var fieldId = this.nodesData._fieldId || null; for (var i = 0, len = ids.length; i < len; i++) { id = ids[i]; var data = this.nodesData.get(id); + if (fieldId) { + data.id = data[fieldId]; + } + var node = new Node(data, this.images, this.groups, this.constants); this.nodes[id] = node; // note: this may replace an existing node if ((node.xFixed == false || node.yFixed == false) && (node.x === null || node.y === null)) { @@ -1810,8 +1815,9 @@ Network.prototype._setEdges = function(edges) { * @private */ Network.prototype._addEdges = function (ids) { - var edges = this.edges, - edgesData = this.edgesData; + var edges = this.edges; + var edgesData = this.edgesData; + var fieldId = this.edgesData._fieldId; for (var i = 0, len = ids.length; i < len; i++) { var id = ids[i]; @@ -1822,6 +1828,9 @@ Network.prototype._addEdges = function (ids) { } var data = edgesData.get(id, {"showInternalIds" : true}); + if (fieldId) { + data.id = data[fieldId]; + } edges[id] = new Edge(data, this, this.constants); } this.moving = true; From b9bb040967dff94b9a1f6ddc0ba6a3e7716f3312 Mon Sep 17 00:00:00 2001 From: jos Date: Tue, 10 Mar 2015 10:46:08 +0100 Subject: [PATCH 26/43] Fixed #691: Orientation can now be configured separately for axis and items. --- HISTORY.md | 4 + dist/vis.js | 17021 ++++++++++++++------------- dist/vis.map | 2 +- dist/vis.min.js | 26 +- docs/timeline.html | 23 +- lib/timeline/Core.js | 11 +- lib/timeline/Timeline.js | 2 +- lib/timeline/component/ItemSet.js | 13 +- lib/timeline/component/TimeAxis.js | 18 +- test/timeline_groups.html | 7 +- 10 files changed, 8607 insertions(+), 8520 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index b9f372ac..65d78e2c 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -8,6 +8,10 @@ http://visjs.org - Fixed support for DataSet with custom id fields (option `fieldId`). +### Timeline + +- Orientation can now be configured separately for axis and items. + ## 2015-03-05, version 3.11.0 diff --git a/dist/vis.js b/dist/vis.js index 70b66a7c..62b1b2d2 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.11.1-SNAPSHOT - * @date 2015-03-09 + * @date 2015-03-10 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -3235,7 +3235,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 6 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(66); + var Emitter = __webpack_require__(56); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var util = __webpack_require__(1); @@ -6490,7 +6490,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 13 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(66); + var Emitter = __webpack_require__(56); var Hammer = __webpack_require__(45); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); @@ -6530,7 +6530,7 @@ return /******/ (function(modules) { // webpackBootstrap autoResize: true, - orientation: 'bottom', // 'bottom', 'top', or 'both' + orientation: 'bottom', // axis orientation: 'bottom', 'top', or 'both' width: null, height: null, maxHeight: null, @@ -6879,7 +6879,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 14 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(66); + var Emitter = __webpack_require__(56); var Hammer = __webpack_require__(45); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); @@ -12545,7 +12545,7 @@ return /******/ (function(modules) { // webpackBootstrap this.defaultOptions = { type: null, // 'box', 'point', 'range', 'background' - orientation: 'bottom', // 'top' or 'bottom' + orientation: 'bottom', // item orientation: 'top' or 'bottom' align: 'auto', // alignment of box items stack: true, groupOrder: null, @@ -12790,9 +12790,18 @@ return /******/ (function(modules) { // webpackBootstrap ItemSet.prototype.setOptions = function(options) { if (options) { // copy all options that we know - var fields = ['type', 'align', 'orientation', 'order', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide', 'snap']; + var fields = ['type', 'align', 'order', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide', 'snap']; util.selectiveExtend(fields, this.options, options); + if ('orientation' in options) { + if (typeof options.orientation === 'string') { + this.options.orientation = options.orientation; + } + else if (typeof options.orientation === 'object' && 'item' in options.orientation) { + this.options.orientation = options.orientation.item; + } + } + if ('margin' in options) { if (typeof options.margin === 'number') { this.options.margin.axis = options.margin; @@ -15419,8 +15428,7 @@ return /******/ (function(modules) { // webpackBootstrap }; this.defaultOptions = { - orientation: 'bottom', // supported: 'top', 'bottom' - // TODO: implement timeaxis orientations 'left' and 'right' + orientation: 'bottom', // axis orientation: 'top' or 'bottom' showMinorLabels: true, showMajorLabels: true, format: null, @@ -15450,7 +15458,6 @@ return /******/ (function(modules) { // webpackBootstrap if (options) { // copy all options that we know util.selectiveExtend([ - 'orientation', 'showMinorLabels', 'showMajorLabels', 'hiddenDates', @@ -15458,6 +15465,15 @@ return /******/ (function(modules) { // webpackBootstrap 'timeAxis' ], this.options, options); + if ('orientation' in options) { + if (typeof options.orientation === 'string') { + this.options.orientation = options.orientation; + } + else if (typeof options.orientation === 'object' && 'axis' in options.orientation) { + this.options.orientation = options.orientation.axis; + } + } + // apply locale to moment.js // TODO: not so nice, this is applied globally to moment.js if ('locale' in options) { @@ -15516,9 +15532,8 @@ return /******/ (function(modules) { // webpackBootstrap this._calculateCharSize(); // TODO: recalculate sizes only needed when parent is resized or options is changed - var orientation = this.options.orientation, - showMinorLabels = this.options.showMinorLabels, - showMajorLabels = this.options.showMajorLabels; + var showMinorLabels = this.options.showMinorLabels; + var showMajorLabels = this.options.showMajorLabels; // determine the width and height of the elemens for the axis props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; @@ -15825,9 +15840,9 @@ return /******/ (function(modules) { // webpackBootstrap /* 36 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(66); + var Emitter = __webpack_require__(56); var Hammer = __webpack_require__(45); - var keycharm = __webpack_require__(56); + var keycharm = __webpack_require__(57); var util = __webpack_require__(1); var hammerUtil = __webpack_require__(47); var DataSet = __webpack_require__(3); @@ -17484,9 +17499,14 @@ return /******/ (function(modules) { // webpackBootstrap */ Network.prototype._addNodes = function(ids) { var id; + var fieldId = this.nodesData._fieldId || null; for (var i = 0, len = ids.length; i < len; i++) { id = ids[i]; var data = this.nodesData.get(id); + if (fieldId) { + data.id = data[fieldId]; + } + var node = new Node(data, this.images, this.groups, this.constants); this.nodes[id] = node; // note: this may replace an existing node if ((node.xFixed == false || node.yFixed == false) && (node.x === null || node.y === null)) { @@ -17637,8 +17657,9 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ Network.prototype._addEdges = function (ids) { - var edges = this.edges, - edgesData = this.edgesData; + var edges = this.edges; + var edgesData = this.edgesData; + var fieldId = this.edgesData._fieldId; for (var i = 0, len = ids.length; i < len; i++) { var id = ids[i]; @@ -17649,6 +17670,9 @@ return /******/ (function(modules) { // webpackBootstrap } var data = edgesData.get(id, {"showInternalIds" : true}); + if (fieldId) { + data.id = data[fieldId]; + } edges[id] = new Edge(data, this, this.constants); } this.moving = true; @@ -22699,7 +22723,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(65); + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(58); /***/ }, @@ -22709,7 +22733,7 @@ return /******/ (function(modules) { // webpackBootstrap // Only load hammer.js when in a browser environment // (loading hammer.js in a node.js environment gives errors) if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(64); + module.exports = window['Hammer'] || __webpack_require__(59); } else { module.exports = function () { @@ -22722,7 +22746,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 46 */ /***/ function(module, exports, __webpack_require__) { - var Emitter = __webpack_require__(66); + var Emitter = __webpack_require__(56); var Hammer = __webpack_require__(45); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); @@ -22914,9 +22938,18 @@ return /******/ (function(modules) { // webpackBootstrap Core.prototype.setOptions = function (options) { if (options) { // copy the known options - var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'orientation', 'clickToUse', 'dataAttributes', 'hiddenDates']; + var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'clickToUse', 'dataAttributes', 'hiddenDates']; util.selectiveExtend(fields, this.options, options); + if ('orientation' in options) { + if (typeof options.orientation === 'string') { + this.options.orientation = options.orientation; + } + else if (typeof options.orientation === 'object' && 'axis' in options.orientation) { + this.options.orientation = options.orientation.axis; + } + } + if (this.options.orientation === 'both') { if (!this.timeAxis2) { var timeAxis2 = this.timeAxis2 = new TimeAxis(this.body); @@ -24289,13 +24322,13 @@ return /******/ (function(modules) { // webpackBootstrap /* 52 */ /***/ function(module, exports, __webpack_require__) { - var PhysicsMixin = __webpack_require__(57); - var ClusterMixin = __webpack_require__(58); - var SectorsMixin = __webpack_require__(59); - var SelectionMixin = __webpack_require__(60); - var ManipulationMixin = __webpack_require__(61); - var NavigationMixin = __webpack_require__(62); - var HierarchicalLayoutMixin = __webpack_require__(63); + var PhysicsMixin = __webpack_require__(60); + var ClusterMixin = __webpack_require__(61); + var SectorsMixin = __webpack_require__(62); + var SelectionMixin = __webpack_require__(63); + var ManipulationMixin = __webpack_require__(64); + var NavigationMixin = __webpack_require__(65); + var HierarchicalLayoutMixin = __webpack_require__(66); /** * Load a mixin into the network object @@ -24493,8 +24526,8 @@ return /******/ (function(modules) { // webpackBootstrap /* 53 */ /***/ function(module, exports, __webpack_require__) { - var keycharm = __webpack_require__(56); - var Emitter = __webpack_require__(66); + var keycharm = __webpack_require__(57); + var Emitter = __webpack_require__(56); var Hammer = __webpack_require__(45); var util = __webpack_require__(1); @@ -24922,6 +24955,176 @@ return /******/ (function(modules) { // webpackBootstrap /* 56 */ /***/ function(module, exports, __webpack_require__) { + + /** + * Expose `Emitter`. + */ + + module.exports = Emitter; + + /** + * Initialize a new `Emitter`. + * + * @api public + */ + + function Emitter(obj) { + if (obj) return mixin(obj); + }; + + /** + * Mixin the emitter properties. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + + function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; + } + return obj; + } + + /** + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.on = + Emitter.prototype.addEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + (this._callbacks[event] = this._callbacks[event] || []) + .push(fn); + return this; + }; + + /** + * Adds an `event` listener that will be invoked a single + * time then automatically removed. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.once = function(event, fn){ + var self = this; + this._callbacks = this._callbacks || {}; + + function on() { + self.off(event, on); + fn.apply(this, arguments); + } + + on.fn = fn; + this.on(event, on); + return this; + }; + + /** + * Remove the given callback for `event` or all + * registered callbacks. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.off = + Emitter.prototype.removeListener = + Emitter.prototype.removeAllListeners = + Emitter.prototype.removeEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + + // all + if (0 == arguments.length) { + this._callbacks = {}; + return this; + } + + // specific event + var callbacks = this._callbacks[event]; + if (!callbacks) return this; + + // remove all handlers + if (1 == arguments.length) { + delete this._callbacks[event]; + return this; + } + + // remove specific handler + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; + } + } + return this; + }; + + /** + * Emit `event` with the given args. + * + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} + */ + + Emitter.prototype.emit = function(event){ + this._callbacks = this._callbacks || {}; + var args = [].slice.call(arguments, 1) + , callbacks = this._callbacks[event]; + + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); + } + } + + return this; + }; + + /** + * Return array of callbacks for `event`. + * + * @param {String} event + * @return {Array} + * @api public + */ + + Emitter.prototype.listeners = function(event){ + this._callbacks = this._callbacks || {}; + return this._callbacks[event] || []; + }; + + /** + * Check if this emitter has `event` handlers. + * + * @param {String} event + * @return {Boolean} + * @api public + */ + + Emitter.prototype.hasListeners = function(event){ + return !! this.listeners(event).length; + }; + + +/***/ }, +/* 57 */ +/***/ function(module, exports, __webpack_require__) { + var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; /** * Created by Alex on 11/6/2014. @@ -25118,9839 +25321,9682 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 57 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(67); - var HierarchialRepulsionMixin = __webpack_require__(68); - var BarnesHutMixin = __webpack_require__(69); - - /** - * Toggling barnes Hut calculation on and off. - * - * @private - */ - exports._toggleBarnesHut = function () { - this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; - this._loadSelectedForceSolver(); - this.moving = true; - this.start(); - }; - - - /** - * This loads the node force solver based on the barnes hut or repulsion algorithm - * - * @private - */ - exports._loadSelectedForceSolver = function () { - // this overloads the this._calculateNodeForces - if (this.constants.physics.barnesHut.enabled == true) { - this._clearMixin(RepulsionMixin); - this._clearMixin(HierarchialRepulsionMixin); - - this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity; - this.constants.physics.springLength = this.constants.physics.barnesHut.springLength; - this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant; - this.constants.physics.damping = this.constants.physics.barnesHut.damping; - - this._loadMixin(BarnesHutMixin); - } - else if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._clearMixin(BarnesHutMixin); - this._clearMixin(RepulsionMixin); - - this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity; - this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength; - this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant; - this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping; - - this._loadMixin(HierarchialRepulsionMixin); - } - else { - this._clearMixin(BarnesHutMixin); - this._clearMixin(HierarchialRepulsionMixin); - this.barnesHutTree = undefined; - - this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity; - this.constants.physics.springLength = this.constants.physics.repulsion.springLength; - this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant; - this.constants.physics.damping = this.constants.physics.repulsion.damping; + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js + //! version : 2.9.0 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com - this._loadMixin(RepulsionMixin); - } - }; + (function (undefined) { + /************************************ + Constants + ************************************/ - /** - * Before calculating the forces, we check if we need to cluster to keep up performance and we check - * if there is more than one node. If it is just one node, we dont calculate anything. - * - * @private - */ - exports._initializeForceCalculation = function () { - // stop calculation if there is only one node - if (this.nodeIndices.length == 1) { - this.nodes[this.nodeIndices[0]]._setForce(0, 0); - } - else { - // if there are too many nodes on screen, we cluster without repositioning - if (this.nodeIndices.length > this.constants.clustering.clusterThreshold && this.constants.clustering.enabled == true) { - this.clusterToFit(this.constants.clustering.reduceToNodes, false); - } + var moment, + VERSION = '2.9.0', + // the global-scope this is NOT the global object in Node.js + globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, + oldGlobalMoment, + round = Math.round, + hasOwnProperty = Object.prototype.hasOwnProperty, + i, - // we now start the force calculation - this._calculateForces(); - } - }; + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, + // internal storage for locale config files + locales = {}, - /** - * Calculate the external forces acting on the nodes - * Forces are caused by: edges, repulsing forces between nodes, gravity - * @private - */ - exports._calculateForces = function () { - // Gravity is required to keep separated groups from floating off - // the forces are reset to zero in this loop by using _setForce instead - // of _addForce + // extra moment internal properties (plugins register props here) + momentProperties = [], - this._calculateGravitationalForces(); - this._calculateNodeForces(); + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module && module.exports), - if (this.constants.physics.springConstant > 0) { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this._calculateSpringForcesWithSupport(); - } - else { - if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._calculateHierarchicalSpringForces(); - } - else { - this._calculateSpringForces(); - } - } - } - }; + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, - /** - * Smooth curves are created by adding invisible nodes in the center of the edges. These nodes are also - * handled in the calculateForces function. We then use a quadratic curve with the center node as control. - * This function joins the datanodes and invisible (called support) nodes into one object. - * We do this so we do not contaminate this.nodes with the support nodes. - * - * @private - */ - exports._updateCalculationNodes = function () { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this.calculationNodes = {}; - this.calculationNodeIndices = []; + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.calculationNodes[nodeId] = this.nodes[nodeId]; - } - } - var supportNodes = this.sectors['support']['nodes']; - for (var supportNodeId in supportNodes) { - if (supportNodes.hasOwnProperty(supportNodeId)) { - if (this.edges.hasOwnProperty(supportNodes[supportNodeId].parentEdgeId)) { - this.calculationNodes[supportNodeId] = supportNodes[supportNodeId]; - } - else { - supportNodes[supportNodeId]._setForce(0, 0); - } - } - } + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - for (var idx in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(idx)) { - this.calculationNodeIndices.push(idx); - } - } - } - else { - this.calculationNodes = this.nodes; - this.calculationNodeIndices = this.nodeIndices; - } - }; + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - /** - * this function applies the central gravity effect to keep groups from floating off - * - * @private - */ - exports._calculateGravitationalForces = function () { - var dx, dy, distance, node, i; - var nodes = this.calculationNodes; - var gravity = this.constants.physics.centralGravity; - var gravityForce = 0; + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - for (i = 0; i < this.calculationNodeIndices.length; i++) { - node = nodes[this.calculationNodeIndices[i]]; - node.damping = this.constants.physics.damping; // possibly add function to alter damping properties of clusters. - // gravity does not apply when we are in a pocket sector - if (this._sector() == "default" && gravity != 0) { - dx = -node.x; - dy = -node.y; - distance = Math.sqrt(dx * dx + dy * dy); + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], - gravityForce = (distance == 0) ? 0 : (gravity / distance); - node.fx = dx * gravityForce; - node.fy = dy * gravityForce; - } - else { - node.fx = 0; - node.fy = 0; - } - } - }; + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], + // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 + }, + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + Q : 'quarter', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' + }, - /** - * this function calculates the effects of the springs in the case of unsmooth curves. - * - * @private - */ - exports._calculateSpringForces = function () { - var edgeLength, edge, edgeId; - var dx, dy, fx, fy, springForce, distance; - var edges = this.edges; + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' + }, - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - edgeLength = edge.physics.springLength; - // this implies that the edges between big clusters are longer - edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; + // format function strings + formatFunctions = {}, - dx = (edge.from.x - edge.to.x); - dy = (edge.from.y - edge.to.y); - distance = Math.sqrt(dx * dx + dy * dy); + // default relative time thresholds + relativeTimeThresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }, - if (distance == 0) { - distance = 0.01; - } + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.localeData().monthsShort(this, format); + }, + MMMM : function (format) { + return this.localeData().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.localeData().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.localeData().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.localeData().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); + }, + z : function () { + return this.zoneAbbr(); + }, + zz : function () { + return this.zoneName(); + }, + x : function () { + return this.valueOf(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); + } + }, - fx = dx * springForce; - fy = dy * springForce; + deprecations = {}, - edge.from.fx += fx; - edge.from.fy += fy; - edge.to.fx -= fx; - edge.to.fy -= fy; + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], + + updateInProgress = false; + + // Pick the first defined of two or three arguments. dfl comes from + // default. + function dfl(a, b, c) { + switch (arguments.length) { + case 2: return a != null ? a : b; + case 3: return a != null ? a : b != null ? b : c; + default: throw new Error('Implement me'); } - } } - } - }; + function hasOwnProp(a, b) { + return hasOwnProperty.call(a, b); + } + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; + } + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } - /** - * This function calculates the springforces on the nodes, accounting for the support nodes. - * - * @private - */ - exports._calculateSpringForcesWithSupport = function () { - var edgeLength, edge, edgeId, combinedClusterSize; - var edges = this.edges; + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + printMsg(msg); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - if (edge.via != null) { - var node1 = edge.to; - var node2 = edge.via; - var node3 = edge.from; + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; + } + } - edgeLength = edge.physics.springLength; + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.localeData().ordinal(func.call(this, a), period); + }; + } - combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; + function monthDiff(a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; - // this implies that the edges between big clusters are longer - edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth; - this._calculateSpringForce(node1, node2, 0.5 * edgeLength); - this._calculateSpringForce(node2, node3, 0.5 * edgeLength); - } + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); } - } + + return -(wholeMonthDiff + adjust); } - } - }; + + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - /** - * This is the code actually performing the calculation for the function above. It is split out to avoid repetition. - * - * @param node1 - * @param node2 - * @param edgeLength - * @private - */ - exports._calculateSpringForce = function (node1, node2, edgeLength) { - var dx, dy, fx, fy, springForce, distance; + function meridiemFixWrap(locale, hour, meridiem) { + var isPm; - dx = (node1.x - node2.x); - dy = (node1.y - node2.y); - distance = Math.sqrt(dx * dx + dy * dy); + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // thie is not supposed to happen + return hour; + } + } - if (distance == 0) { - distance = 0.01; - } + /************************************ + Constructors + ************************************/ - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + function Locale() { + } - fx = dx * springForce; - fy = dy * springForce; + // Moment prototype object + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); + } + copyConfig(this, config); + this._d = new Date(+config._d); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + moment.updateOffset(this); + updateInProgress = false; + } + } - node1.fx += fx; - node1.fy += fy; - node2.fx -= fx; - node2.fy -= fy; - }; + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + this._locale = moment.localeData(); - exports._cleanupPhysicsConfiguration = function() { - if (this.physicsConfiguration !== undefined) { - while (this.physicsConfiguration.hasChildNodes()) { - this.physicsConfiguration.removeChild(this.physicsConfiguration.firstChild); + this._bubble(); } - this.physicsConfiguration.parentNode.removeChild(this.physicsConfiguration); - this.physicsConfiguration = undefined; - } - } + /************************************ + Helpers + ************************************/ - /** - * Load the HTML for the physics config and bind it - * @private - */ - exports._loadPhysicsConfiguration = function () { - if (this.physicsConfiguration === undefined) { - this.backupConstants = {}; - util.deepExtend(this.backupConstants,this.constants); - var maxGravitational = Math.max(20000, (-1 * this.constants.physics.barnesHut.gravitationalConstant) * 10); - var maxSpring = Math.min(0.05, this.constants.physics.barnesHut.springConstant * 10) + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } - var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"]; - this.physicsConfiguration = document.createElement('div'); - this.physicsConfiguration.className = "PhysicsConfiguration"; - this.physicsConfiguration.innerHTML = '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
    Simulation Mode:
    Barnes HutRepulsionHierarchical
    ' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
    Options:
    ' - this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement); - this.optionsDiv = document.createElement("div"); - this.optionsDiv.style.fontSize = "14px"; - this.optionsDiv.style.fontFamily = "verdana"; - this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement); + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } - var rangeElement; - rangeElement = document.getElementById('graph_BH_gc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant"); - rangeElement = document.getElementById('graph_BH_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_BH_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_BH_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_BH_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping"); + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } - rangeElement = document.getElementById('graph_R_nd'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance"); - rangeElement = document.getElementById('graph_R_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_R_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_R_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_R_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping"); + return a; + } - rangeElement = document.getElementById('graph_H_nd'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); - rangeElement = document.getElementById('graph_H_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_H_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_H_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_H_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping"); - rangeElement = document.getElementById('graph_H_direction'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction"); - rangeElement = document.getElementById('graph_H_levsep'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation"); - rangeElement = document.getElementById('graph_H_nspac'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing"); + function copyConfig(to, from) { + var i, prop, val; - var radioButton1 = document.getElementById("graph_physicsMethod1"); - var radioButton2 = document.getElementById("graph_physicsMethod2"); - var radioButton3 = document.getElementById("graph_physicsMethod3"); - radioButton2.checked = true; - if (this.constants.physics.barnesHut.enabled) { - radioButton1.checked = true; + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } + } + } + + return to; } - if (this.constants.hierarchicalLayout.enabled) { - radioButton3.checked = true; + + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } } - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - var graph_repositionNodes = document.getElementById("graph_repositionNodes"); - var graph_generateOptions = document.getElementById("graph_generateOptions"); + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; - graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this); - graph_repositionNodes.onclick = graphRepositionNodes.bind(this); - graph_generateOptions.onclick = graphGenerateOptions.bind(this); - if (this.constants.smoothCurves == true && this.constants.dynamicSmoothCurves == false) { - graph_toggleSmooth.style.background = "#A4FF56"; - } - else { - graph_toggleSmooth.style.background = "#FF8532"; + while (output.length < targetLength) { + output = '0' + output; + } + return (sign ? (forceSign ? '+' : '') : '-') + output; } + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; - switchConfigurations.apply(this); + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } - radioButton1.onchange = switchConfigurations.bind(this); - radioButton2.onchange = switchConfigurations.bind(this); - radioButton3.onchange = switchConfigurations.bind(this); - } - }; + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - /** - * This overwrites the this.constants. - * - * @param constantsVariableName - * @param value - * @private - */ - exports._overWriteGraphConstants = function (constantsVariableName, value) { - var nameArray = constantsVariableName.split("_"); - if (nameArray.length == 1) { - this.constants[nameArray[0]] = value; - } - else if (nameArray.length == 2) { - this.constants[nameArray[0]][nameArray[1]] = value; - } - else if (nameArray.length == 3) { - this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value; - } - }; + return res; + } + function momentsDifference(base, other) { + var res; + other = makeAs(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } - /** - * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. - */ - function graphToggleSmoothCurves () { - this.constants.smoothCurves.enabled = !this.constants.smoothCurves.enabled; - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} - else {graph_toggleSmooth.style.background = "#FF8532";} + return res; + } - this._configureSmoothCurves(false); - } + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } - /** - * this function is used to scramble the nodes - * - */ - function graphRepositionNodes () { - for (var nodeId in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(nodeId)) { - this.calculationNodes[nodeId].vx = 0; this.calculationNodes[nodeId].vy = 0; - this.calculationNodes[nodeId].fx = 0; this.calculationNodes[nodeId].fy = 0; + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); + return this; + }; } - } - if (this.constants.hierarchicalLayout.enabled == true) { - this._setupHierarchicalLayout(); - showValueOfRange.call(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); - showValueOfRange.call(this, 'graph_H_cg', 1, "physics_centralGravity"); - showValueOfRange.call(this, 'graph_H_sc', 1, "physics_springConstant"); - showValueOfRange.call(this, 'graph_H_sl', 1, "physics_springLength"); - showValueOfRange.call(this, 'graph_H_damp', 1, "physics_damping"); - } - else { - this.repositionNodes(); - } - this.moving = true; - this.start(); - } - /** - * this is used to generate an options file from the playing with physics system. - */ - function graphGenerateOptions () { - var options = "No options are required, default values used."; - var optionsSpecific = []; - var radioButton1 = document.getElementById("graph_physicsMethod1"); - var radioButton2 = document.getElementById("graph_physicsMethod2"); - if (radioButton1.checked == true) { - if (this.constants.physics.barnesHut.gravitationalConstant != this.backupConstants.physics.barnesHut.gravitationalConstant) {optionsSpecific.push("gravitationalConstant: " + this.constants.physics.barnesHut.gravitationalConstant);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.barnesHut.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.barnesHut.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options = "var options = {"; - options += "physics: {barnesHut: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); } - } - options += '}}' - } - if (this.constants.smoothCurves.enabled != this.backupConstants.smoothCurves.enabled) { - if (optionsSpecific.length == 0) {options = "var options = {";} - else {options += ", "} - options += "smoothCurves: " + this.constants.smoothCurves.enabled; - } - if (options != "No options are required, default values used.") { - options += '};' - } - } - else if (radioButton2.checked == true) { - options = "var options = {"; - options += "physics: {barnesHut: {enabled: false}"; - if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.repulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options += ", repulsion: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " + if (days) { + rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); } - } - options += '}}' - } - if (optionsSpecific.length == 0) {options += "}"} - if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { - options += ", smoothCurves: " + this.constants.smoothCurves; - } - options += '};' - } - else { - options = "var options = {"; - if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options += "physics: {hierarchicalRepulsion: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", "; + if (months) { + rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); } - } - options += '}},'; - } - options += 'hierarchicalLayout: {'; - optionsSpecific = []; - if (this.constants.hierarchicalLayout.direction != this.backupConstants.hierarchicalLayout.direction) {optionsSpecific.push("direction: " + this.constants.hierarchicalLayout.direction);} - if (Math.abs(this.constants.hierarchicalLayout.levelSeparation) != this.backupConstants.hierarchicalLayout.levelSeparation) {optionsSpecific.push("levelSeparation: " + this.constants.hierarchicalLayout.levelSeparation);} - if (this.constants.hierarchicalLayout.nodeSpacing != this.backupConstants.hierarchicalLayout.nodeSpacing) {optionsSpecific.push("nodeSpacing: " + this.constants.hierarchicalLayout.nodeSpacing);} - if (optionsSpecific.length != 0) { - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " + if (updateOffset) { + moment.updateOffset(mom, days || months); } - } - options += '}' - } - else { - options += "enabled:true}"; } - options += '};' - } + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } - this.optionsDiv.innerHTML = options; - } - - /** - * this is used to switch between barnesHut, repulsion and hierarchical. - * - */ - function switchConfigurations () { - var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"]; - var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value; - var tableId = "graph_" + radioButton + "_table"; - var table = document.getElementById(tableId); - table.style.display = "block"; - for (var i = 0; i < ids.length; i++) { - if (ids[i] != tableId) { - table = document.getElementById(ids[i]); - table.style.display = "none"; + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; } - } - this._restoreNodes(); - if (radioButton == "R") { - this.constants.hierarchicalLayout.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = false; - this.constants.physics.barnesHut.enabled = false; - } - else if (radioButton == "H") { - if (this.constants.hierarchicalLayout.enabled == false) { - this.constants.hierarchicalLayout.enabled = true; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this.constants.physics.barnesHut.enabled = false; - this.constants.smoothCurves.enabled = false; - this._setupHierarchicalLayout(); + + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; } - } - else { - this.constants.hierarchicalLayout.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = false; - this.constants.physics.barnesHut.enabled = true; - } - this._loadSelectedForceSolver(); - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} - else {graph_toggleSmooth.style.background = "#FF8532";} - this.moving = true; - this.start(); - } + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } - /** - * this generates the ranges depending on the iniital values. - * - * @param id - * @param map - * @param constantsVariableName - */ - function showValueOfRange (id,map,constantsVariableName) { - var valueId = id + "_value"; - var rangeValue = document.getElementById(id).value; + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; - if (Array.isArray(map)) { - document.getElementById(valueId).value = map[parseInt(rangeValue)]; - this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); - } - else { - document.getElementById(valueId).value = parseInt(map) * parseFloat(rangeValue); - this._overWriteGraphConstants(constantsVariableName, parseInt(map) * parseFloat(rangeValue)); - } + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } - if (constantsVariableName == "hierarchicalLayout_direction" || - constantsVariableName == "hierarchicalLayout_levelSeparation" || - constantsVariableName == "hierarchicalLayout_nodeSpacing") { - this._setupHierarchicalLayout(); - } - this.moving = true; - this.start(); - } + return normalizedInput; + } + function makeList(field) { + var count, setter; + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; + } + moment[field] = function (format, index) { + var i, getter, + method = moment._locale[field], + results = []; -/***/ }, -/* 58 */ -/***/ function(module, exports, __webpack_require__) { + if (typeof format === 'number') { + index = format; + format = undefined; + } - /** - * Creation of the ClusterMixin var. - * - * This contains all the functions the Network object can use to employ clustering - */ + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment._locale, m, format || ''); + }; - /** - * This is only called in the constructor of the network object - * - */ - exports.startWithClustering = function() { - // cluster if the data set is big - this.clusterToFit(this.constants.clustering.initialMaxNodes, true); + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } + }; + } - // updates the lables after clustering - this.updateLabels(); + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - // this is called here because if clusterin is disabled, the start and stabilize are called in - // the setData function. - if (this.constants.stabilize == true) { - this._stabilize(); - } - this.start(); - }; + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } + } - /** - * This function clusters until the initialMaxNodes has been reached - * - * @param {Number} maxNumberOfNodes - * @param {Boolean} reposition - */ - exports.clusterToFit = function(maxNumberOfNodes, reposition) { - var numberOfNodes = this.nodeIndices.length; + return value; + } - var maxLevels = 50; - var level = 0; + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } - // we first cluster the hubs, then we pull in the outliers, repeat - while (numberOfNodes > maxNumberOfNodes && level < maxLevels) { - if (level % 3 == 0.0) { - this.forceAggregateHubs(true); - this.normalizeClusterLevels(); + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; } - else { - this.increaseClusterLevel(); // this also includes a cluster normalization + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; } - this.forceAggregateHubs(true); - numberOfNodes = this.nodeIndices.length; - level += 1; - } - // after the clustering we reposition the nodes to reduce the initial chaos - if (level > 0 && reposition == true) { - this.repositionNodes(); - } - this._updateCalculationNodes(); - }; + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - /** - * This function can be called to open up a specific cluster. - * It will unpack the cluster back one level. - * - * @param node | Node object: cluster to open. - */ - exports.openCluster = function(node) { - var isMovingBeforeClustering = this.moving; - if (node.clusterSize > this.constants.clustering.sectorThreshold && this._nodeInActiveArea(node) && - !(this._sector() == "default" && this.nodeIndices.length == 1)) { - // this loads a new sector, loads the nodes and edges and nodeIndices of it. - this._addSector(node); - var level = 0; + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 24 || + (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || + m._a[SECOND] !== 0 || + m._a[MILLISECOND] !== 0)) ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; - // we decluster until we reach a decent number of nodes - while ((this.nodeIndices.length < this.constants.clustering.initialMaxNodes) && (level < 10)) { - this.decreaseClusterLevel(); - level += 1; + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + + m._pf.overflow = overflow; + } } - } - else { - this._expandClusterNode(node,false,true); + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; - // update the index list and labels - this._updateNodeIndexList(); - this._updateCalculationNodes(); - this.updateLabels(); - } + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0 && + m._pf.bigHour === undefined; + } + } + return m._isValid; + } - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); - } - }; + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; - /** - * This calls the updateClustes with default arguments - */ - exports.updateClustersDefault = function() { - if (this.constants.clustering.enabled == true && this.constants.clustering.clusterByZoom == true) { - this.updateClusters(0,false,false); - } - }; + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } + } + return locales[name]; + } - /** - * This function can be called to increase the cluster level. This means that the nodes with only one edge connection will - * be clustered with their connected node. This can be repeated as many times as needed. - * This can be called externally (by a keybind for instance) to reduce the complexity of big datasets. - */ - exports.increaseClusterLevel = function() { - this.updateClusters(-1,false,true); - }; + // Return a moment from input, that is local/utc/utcOffset equivalent to + // model. + function makeAs(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (moment.isMoment(input) || isDate(input) ? + +input : +moment(input)) - (+res); + // Use low-level api, because this fn is low-level api. + res._d.setTime(+res._d + diff); + moment.updateOffset(res, false); + return res; + } else { + return moment(input).local(); + } + } + /************************************ + Locale + ************************************/ - /** - * This function can be called to decrease the cluster level. This means that the nodes with only one edge connection will - * be unpacked if they are a cluster. This can be repeated as many times as needed. - * This can be called externally (by a key-bind for instance) to look into clusters without zooming. - */ - exports.decreaseClusterLevel = function() { - this.updateClusters(1,false,true); - }; + extend(Locale.prototype, { - /** - * This is the main clustering function. It clusters and declusters on zoom or forced - * This function clusters on zoom, it can be called with a predefined zoom direction - * If out, check if we can form clusters, if in, check if we can open clusters. - * This function is only called from _zoom() - * - * @param {Number} zoomDirection | -1 / 0 / +1 for zoomOut / determineByZoom / zoomIn - * @param {Boolean} recursive | enabled or disable recursive calling of the opening of clusters - * @param {Boolean} force | enabled or disable forcing - * @param {Boolean} doNotStart | if true do not call start - * - */ - exports.updateClusters = function(zoomDirection,recursive,force,doNotStart) { - var isMovingBeforeClustering = this.moving; - var amountOfNodes = this.nodeIndices.length; + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); + }, - var detectedZoomingIn = (this.previousScale < this.scale && zoomDirection == 0); - var detectedZoomingOut = (this.previousScale > this.scale && zoomDirection == 0); + _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + months : function (m) { + return this._months[m.month()]; + }, - // on zoom out collapse the sector if the scale is at the level the sector was made - if (detectedZoomingOut == true) { - this._collapseSector(); - } + _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, - // check if we zoom in or out - if (detectedZoomingOut == true || zoomDirection == -1) { // zoom out - // forming clusters when forced pulls outliers in. When not forced, the edge length of the - // outer nodes determines if it is being clustered - this._formClusters(force); - } - else if (detectedZoomingIn == true || zoomDirection == 1) { // zoom in - if (force == true) { - // _openClusters checks for each node if the formationScale of the cluster is smaller than - // the current scale and if so, declusters. When forced, all clusters are reduced by one step - this._openClusters(recursive,force); - } - else { - // if a cluster takes up a set percentage of the active window - //this._openClustersBySize(); - this._openClusters(recursive, false); - } - } - this._updateNodeIndexList(); + monthsParse : function (monthName, format, strict) { + var i, mom, regex; - // if a cluster was NOT formed and the user zoomed out, we try clustering by hubs - if (this.nodeIndices.length == amountOfNodes && (detectedZoomingOut == true || zoomDirection == -1)) { - this._aggregateHubs(force); - this._updateNodeIndexList(); - } + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } - // we now reduce chains. - if (detectedZoomingOut == true || zoomDirection == -1) { // zoom out - this.handleChains(); - this._updateNodeIndexList(); - } + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = moment.utc([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + }, - this.previousScale = this.scale; + _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, - // update labels - this.updateLabels(); + _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length < amountOfNodes) { // this means a clustering operation has taken place - this.clusterSession += 1; - // if clusters have been made, we normalize the cluster level - this.normalizeClusterLevels(); - } + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, - if (doNotStart == false || doNotStart === undefined) { - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); - } - } + weekdaysParse : function (weekdayName) { + var i, mom, regex; - this._updateCalculationNodes(); - }; + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } - /** - * This function handles the chains. It is called on every updateClusters(). - */ - exports.handleChains = function() { - // after clustering we check how many chains there are - var chainPercentage = this._getChainFraction(); - if (chainPercentage > this.constants.clustering.chainThreshold) { - this._reduceAmountOfChains(1 - this.constants.clustering.chainThreshold / chainPercentage) + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + }, - } - }; + _longDateFormat : { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; + } + return output; + }, - /** - * this functions starts clustering by hubs - * The minimum hub threshold is set globally - * - * @private - */ - exports._aggregateHubs = function(force) { - this._getHubSize(); - this._formClustersByHub(force,false); - }; + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, - /** - * This function forces hubs to form. - * - */ - exports.forceAggregateHubs = function(doNotStart) { - var isMovingBeforeClustering = this.moving; - var amountOfNodes = this.nodeIndices.length; - this._aggregateHubs(true); + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom, now) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom, [now]) : output; + }, - // update the index list, dynamic edges and labels - this._updateNodeIndexList(); - this.updateLabels(); + _relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, - this._updateCalculationNodes(); + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length != amountOfNodes) { - this.clusterSession += 1; - } + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, - if (doNotStart == false || doNotStart === undefined) { - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); - } - } - }; + ordinal : function (number) { + return this._ordinal.replace('%d', number); + }, + _ordinal : '%d', + _ordinalParse : /\d{1,2}/, - /** - * If a cluster takes up more than a set percentage of the screen, open the cluster - * - * @private - */ - exports._openClustersBySize = function() { - if (this.constants.clustering.clusterByZoom == true) { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.inView() == true) { - if ((node.width * this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || - (node.height * this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { - this.openCluster(node); - } - } - } - } - } - }; + preparse : function (string) { + return string; + }, + postformat : function (string) { + return string; + }, - /** - * This function loops over all nodes in the nodeIndices list. For each node it checks if it is a cluster and if it - * has to be opened based on the current zoom level. - * - * @private - */ - exports._openClusters = function(recursive,force) { - for (var i = 0; i < this.nodeIndices.length; i++) { - var node = this.nodes[this.nodeIndices[i]]; - this._expandClusterNode(node,recursive,force); - this._updateCalculationNodes(); - } - }; + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, - /** - * This function checks if a node has to be opened. This is done by checking the zoom level. - * If the node contains child nodes, this function is recursively called on the child nodes as well. - * This recursive behaviour is optional and can be set by the recursive argument. - * - * @param {Node} parentNode | to check for cluster and expand - * @param {Boolean} recursive | enabled or disable recursive calling - * @param {Boolean} force | enabled or disable forcing - * @param {Boolean} [openAll] | This will recursively force all nodes in the parent to be released - * @private - */ - exports._expandClusterNode = function(parentNode, recursive, force, openAll) { - // first check if node is a cluster - if (parentNode.clusterSize > 1) { - if (openAll === undefined) { - openAll = false; - } - // this means that on a double tap event or a zoom event, the cluster fully unpacks if it is smaller than 20 + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, - recursive = openAll || recursive; - // if the last child has been added on a smaller scale than current scale decluster - if (parentNode.formationScale < this.scale || force == true) { - // we will check if any of the contained child nodes should be removed from the cluster - for (var containedNodeId in parentNode.containedNodes) { - if (parentNode.containedNodes.hasOwnProperty(containedNodeId)) { - var childNode = parentNode.containedNodes[containedNodeId]; + firstDayOfWeek : function () { + return this._week.dow; + }, - // force expand will expand the largest cluster size clusters. Since we cluster from outside in, we assume that - // the largest cluster is the one that comes from outside - if (force == true) { - if (childNode.clusterSession == parentNode.clusterSessions[parentNode.clusterSessions.length-1] - || openAll) { - this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); - } - } - else { - if (this._nodeInActiveArea(parentNode)) { - this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); - } - } + firstDayOfYear : function () { + return this._week.doy; + }, + + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; } - } - } - } - }; + }); - /** - * ONLY CALLED FROM _expandClusterNode - * - * This function will expel a child_node from a parent_node. This is to de-cluster the node. This function will remove - * the child node from the parent contained_node object and put it back into the global nodes object. - * The same holds for the edge that was connected to the child node. It is moved back into the global edges object. - * - * @param {Node} parentNode | the parent node - * @param {String} containedNodeId | child_node id as it is contained in the containedNodes object of the parent node - * @param {Boolean} recursive | This will also check if the child needs to be expanded. - * With force and recursive both true, the entire cluster is unpacked - * @param {Boolean} force | This will disregard the zoom level and will expel this child from the parent - * @param {Boolean} openAll | This will recursively force all nodes in the parent to be released - * @private - */ - exports._expelChildFromParent = function(parentNode, containedNodeId, recursive, force, openAll) { - var childNode = parentNode.containedNodes[containedNodeId] - - // if child node has been added on smaller scale than current, kick out - if (childNode.formationScale < this.scale || force == true) { - // unselect all selected items - this._unselectAll(); + /************************************ + Formatting + ************************************/ - // put the child node back in the global nodes object - this.nodes[containedNodeId] = childNode; - // release the contained edges from this childNode back into the global edges - this._releaseContainedEdges(parentNode,childNode); + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } - // reconnect rerouted edges to the childNode - this._connectEdgeBackToChild(parentNode,childNode); + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; - // validate all edges in dynamicEdges - this._validateEdges(parentNode); + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } - // undo the changes from the clustering operation on the parent node - parentNode.options.mass -= childNode.options.mass; - parentNode.clusterSize -= childNode.clusterSize; - parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*(parentNode.clusterSize-1)); + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } - // place the child node near the parent, not at the exact same location to avoid chaos in the system - childNode.x = parentNode.x + parentNode.growthIndicator * (0.5 - Math.random()); - childNode.y = parentNode.y + parentNode.growthIndicator * (0.5 - Math.random()); + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } - // remove node from the list - delete parentNode.containedNodes[containedNodeId]; + format = expandFormat(format, m.localeData()); - // check if there are other childs with this clusterSession in the parent. - var othersPresent = false; - for (var childNodeId in parentNode.containedNodes) { - if (parentNode.containedNodes.hasOwnProperty(childNodeId)) { - if (parentNode.containedNodes[childNodeId].clusterSession == childNode.clusterSession) { - othersPresent = true; - break; + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); } - } - } - // if there are no others, remove the cluster session from the list - if (othersPresent == false) { - parentNode.clusterSessions.pop(); - } - this._repositionBezierNodes(childNode); - // this._repositionBezierNodes(parentNode); + return formatFunctions[format](m); + } - // remove the clusterSession from the child node - childNode.clusterSession = 0; + function expandFormat(format, locale) { + var i = 5; - // recalculate the size of the node on the next time the node is rendered - parentNode.clearSizeCache(); + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } - // restart the simulation to reorganise all nodes - this.moving = true; - } + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } - // check if a further expansion step is possible if recursivity is enabled - if (recursive == true) { - this._expandClusterNode(childNode,recursive,force,openAll); - } - }; + return format; + } - /** - * position the bezier nodes at the center of the edges - * - * @param node - * @private - */ - exports._repositionBezierNodes = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - node.dynamicEdges[i].positionBezierNode(); - } - }; + /************************************ + Parsing + ************************************/ - /** - * This function checks if any nodes at the end of their trees have edges below a threshold length - * This function is called only from updateClusters() - * forceLevelCollapse ignores the length of the edge and collapses one level - * This means that a node with only one edge will be clustered with its connected node - * - * @private - * @param {Boolean} force - */ - exports._formClusters = function(force) { - if (force == false) { - if (this.constants.clustering.clusterByZoom == true) { - this._formClustersByZoom(); + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'Q': + return parseTokenOneDigit; + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { + return parseTokenOneDigit; + } + /* falls through */ + case 'SS': + if (strict) { + return parseTokenTwoDigits; + } + /* falls through */ + case 'SSS': + if (strict) { + return parseTokenThreeDigits; + } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return config._locale._meridiemParse; + case 'x': + return parseTokenOffsetMs; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + case 'Do': + return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); + return a; + } } - } - else { - this._forceClustersByZoom(); - } - }; - - /** - * This function handles the clustering by zooming out, this is based on a minimum edge distance - * - * @private - */ - exports._formClustersByZoom = function() { - var dx,dy,length; - var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; + function utcOffsetFromString(string) { + string = string || ''; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); - // check if any edges are shorter than minLength and start the clustering - // the clustering favours the node with the larger mass - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - var edge = this.edges[edgeId]; - if (edge.connected) { - if (edge.toId != edge.fromId) { - dx = (edge.to.x - edge.from.x); - dy = (edge.to.y - edge.from.y); - length = Math.sqrt(dx * dx + dy * dy); + return parts[0] === '+' ? minutes : -minutes; + } + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; - if (length < minLength) { - // first check which node is larger - var parentNode = edge.from; - var childNode = edge.to; - if (edge.to.options.mass > edge.from.options.mass) { - parentNode = edge.to; - childNode = edge.from; + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + case 'Do' : + if (input != null) { + datePartArray[DATE] = toInt(parseInt( + input.match(/\d{1,2}/)[0], 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); } - if (childNode.dynamicEdges.length == 1) { - this._addToCluster(parentNode,childNode,false); + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = moment.parseTwoDigitYear(input); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._meridiem = input; + // config._isPm = config._locale.isPM(input); + break; + // HOUR + case 'h' : // fall through to hh + case 'hh' : + config._pf.bigHour = true; + /* falls through */ + case 'H' : // fall through to HH + case 'HH' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX OFFSET (MILLISECONDS) + case 'x': + config._d = new Date(toInt(input)); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = utcOffsetFromString(input); + break; + // WEEKDAY - human + case 'dd': + case 'ddd': + case 'dddd': + a = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (a != null) { + config._w = config._w || {}; + config._w['d'] = a; + } else { + config._pf.invalidWeekday = input; } - else if (parentNode.dynamicEdges.length == 1) { - this._addToCluster(childNode,parentNode,false); + break; + // WEEK, WEEK DAY - numeric + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gggg': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = toInt(input); } - } + break; + case 'gg': + case 'GG': + config._w = config._w || {}; + config._w[token] = moment.parseTwoDigitYear(input); } - } } - } - }; - /** - * This function forces the network to cluster all nodes with only one connecting edge to their - * connected node. - * - * @private - */ - exports._forceClustersByZoom = function() { - for (var nodeId in this.nodes) { - // another node could have absorbed this child. - if (this.nodes.hasOwnProperty(nodeId)) { - var childNode = this.nodes[nodeId]; + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; - // the edges can be swallowed by another decrease - if (childNode.dynamicEdges.length == 1) { - var edge = childNode.dynamicEdges[0]; - var parentNode = (edge.toId == childNode.id) ? this.nodes[edge.fromId] : this.nodes[edge.toId]; - // group to the largest node - if (childNode.id != parentNode.id) { - if (parentNode.options.mass > childNode.options.mass) { - this._addToCluster(parentNode,childNode,true); - } - else { - this._addToCluster(childNode,parentNode,true); - } - } - } - } - } - }; + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); + week = dfl(w.W, 1); + weekday = dfl(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; - /** - * To keep the nodes of roughly equal size we normalize the cluster levels. - * This function clusters a node to its smallest connected neighbour. - * - * @param node - * @private - */ - exports._clusterToSmallestNeighbour = function(node) { - var smallestNeighbour = -1; - var smallestNeighbourNode = null; - for (var i = 0; i < node.dynamicEdges.length; i++) { - if (node.dynamicEdges[i] !== undefined) { - var neighbour = null; - if (node.dynamicEdges[i].fromId != node.id) { - neighbour = node.dynamicEdges[i].from; - } - else if (node.dynamicEdges[i].toId != node.id) { - neighbour = node.dynamicEdges[i].to; - } + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; + } + } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - if (neighbour != null && smallestNeighbour > neighbour.clusterSessions.length) { - smallestNeighbour = neighbour.clusterSessions.length; - smallestNeighbourNode = neighbour; - } + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; } - } - if (neighbour != null && this.nodes[neighbour.id] !== undefined) { - this._addToCluster(neighbour, node, true); - } - }; + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; + if (config._d) { + return; + } - /** - * This function forms clusters from hubs, it loops over all nodes - * - * @param {Boolean} force | Disregard zoom level - * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges - * @private - */ - exports._formClustersByHub = function(force, onlyEqual) { - // we loop over all nodes in the list - for (var nodeId in this.nodes) { - // we check if it is still available since it can be used by the clustering in this loop - if (this.nodes.hasOwnProperty(nodeId)) { - this._formClusterFromHub(this.nodes[nodeId],force,onlyEqual); - } - } - }; - - /** - * This function forms a cluster from a specific preselected hub node - * - * @param {Node} hubNode | the node we will cluster as a hub - * @param {Boolean} force | Disregard zoom level - * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges - * @param {Number} [absorptionSizeOffset] | - * @private - */ - exports._formClusterFromHub = function(hubNode, force, onlyEqual, absorptionSizeOffset) { - if (absorptionSizeOffset === undefined) { - absorptionSizeOffset = 0; - } - //this.hubThreshold = 43 - //if (hubNode.dynamicEdgesLength < 0) { - // console.error(hubNode.dynamicEdgesLength, this.hubThreshold, onlyEqual) - //} - // we decide if the node is a hub - if ((hubNode.dynamicEdges.length >= this.hubThreshold && onlyEqual == false) || - (hubNode.dynamicEdges.length == this.hubThreshold && onlyEqual == true)) { - // initialize variables - var dx,dy,length; - var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; - var allowCluster = false; + currentDate = currentDateArray(config); - // we create a list of edges because the dynamicEdges change over the course of this loop - var edgesIdarray = []; - var amountOfInitialEdges = hubNode.dynamicEdges.length; - for (var j = 0; j < amountOfInitialEdges; j++) { - edgesIdarray.push(hubNode.dynamicEdges[j].id); - } + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } - // if the hub clustering is not forced, we check if one of the edges connected - // to a cluster is small enough based on the constants.clustering.clusterEdgeThreshold - if (force == false) { - allowCluster = false; - for (j = 0; j < amountOfInitialEdges; j++) { - var edge = this.edges[edgesIdarray[j]]; - if (edge !== undefined) { - if (edge.connected) { - if (edge.toId != edge.fromId) { - dx = (edge.to.x - edge.from.x); - dy = (edge.to.y - edge.from.y); - length = Math.sqrt(dx * dx + dy * dy); + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - if (length < minLength) { - allowCluster = true; - break; - } + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; } - } + + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); } - } - } - // start the clustering if allowed - if ((!force && allowCluster) || force) { - var children = []; - var childrenIds = {}; - // we loop over all edges INITIALLY connected to this hub to get a list of the childNodes - for (j = 0; j < amountOfInitialEdges; j++) { - edge = this.edges[edgesIdarray[j]]; - var childNode = this.nodes[(edge.fromId == hubNode.id) ? edge.toId : edge.fromId]; - if (childrenIds[childNode.id] === undefined) { - childrenIds[childNode.id] = true; - children.push(childNode); + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; } - } - for (j = 0; j < children.length; j++) { - var childNode = children[j]; - // we do not want hubs to merge with other hubs nor do we want to cluster itself. - if ((childNode.dynamicEdges.length <= (this.hubThreshold + absorptionSizeOffset)) && - (childNode.id != hubNode.id)) { - this._addToCluster(hubNode,childNode,force); + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; } - else { - //console.log("WILL NOT MERGE:",childNode.dynamicEdges.length , (this.hubThreshold + absorptionSizeOffset)) + + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); } - } + if (config._nextDay) { + config._a[HOUR] = 24; + } } - } - }; + function dateFromObject(config) { + var normalizedInput; + if (config._d) { + return; + } - /** - * This function adds the child node to the parent node, creating a cluster if it is not already. - * - * @param {Node} parentNode | this is the node that will house the child node - * @param {Node} childNode | this node will be deleted from the global this.nodes and stored in the parent node - * @param {Boolean} force | true will only update the remainingEdges at the very end of the clustering, ensuring single level collapse - * @private - */ - exports._addToCluster = function(parentNode, childNode, force) { - // join child node in the parent node - parentNode.containedNodes[childNode.id] = childNode; - //console.log(parentNode.id, childNode.id) - // manage all the edges connected to the child and parent nodes - for (var i = 0; i < childNode.dynamicEdges.length; i++) { - var edge = childNode.dynamicEdges[i]; - if (edge.toId == parentNode.id || edge.fromId == parentNode.id) { // edge connected to parentNode - //console.log("COLLECT",parentNode.id, childNode.id, edge.toId, edge.fromId) - this._addToContainedEdges(parentNode,childNode,edge); + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day || normalizedInput.date, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; + + dateFromConfig(config); } - else { - //console.log("REWIRE",parentNode.id, childNode.id, edge.toId, edge.fromId) - this._connectEdgeToCluster(parentNode,childNode,edge); + + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } } - } - // a contained node has no dynamic edges. - childNode.dynamicEdges = []; - // remove circular edges from clusters - this._containCircularEdgesFromNode(parentNode,childNode); + // date from string and format string + function makeDateFromStringAndFormat(config) { + if (config._f === moment.ISO_8601) { + parseISO(config); + return; + } + config._a = []; + config._pf.empty = true; - // remove the childNode from the global nodes object - delete this.nodes[childNode.id]; + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; - // update the properties of the child and parent - var massBefore = parentNode.options.mass; - childNode.clusterSession = this.clusterSession; - parentNode.options.mass += childNode.options.mass; - parentNode.clusterSize += childNode.clusterSize; - parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - // keep track of the clustersessions so we can open the cluster up as it has been formed. - if (parentNode.clusterSessions[parentNode.clusterSessions.length - 1] != this.clusterSession) { - parentNode.clusterSessions.push(this.clusterSession); - } + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; + } + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } + } - // forced clusters only open from screen size and double tap - if (force == true) { - parentNode.formationScale = 0; - } - else { - parentNode.formationScale = this.scale; // The latest child has been added on this scale - } + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } - // recalculate the size of the node on the next time the node is rendered - parentNode.clearSizeCache(); + // clear _12h flag if hour is <= 12 + if (config._pf.bigHour === true && config._a[HOUR] <= 12) { + config._pf.bigHour = undefined; + } + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], + config._meridiem); + dateFromConfig(config); + checkOverflow(config); + } - // set the pop-out scale for the childnode - parentNode.containedNodes[childNode.id].formationScale = parentNode.formationScale; + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } - // nullify the movement velocity of the child, this is to avoid hectic behaviour - childNode.clearVelocity(); + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } - // the mass has altered, preservation of energy dictates the velocity to be updated - parentNode.updateVelocity(massBefore); + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, - // restart the simulation to reorganise all nodes - this.moving = true; - }; + scoreToBeat, + i, + currentScore; + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } - /** - * This adds an edge from the childNode to the contained edges of the parent node - * - * @param parentNode | Node object - * @param childNode | Node object - * @param edge | Edge object - * @private - */ - exports._addToContainedEdges = function(parentNode, childNode, edge) { - // create an array object if it does not yet exist for this childNode - if (parentNode.containedEdges[childNode.id] === undefined) { - parentNode.containedEdges[childNode.id] = [] - } - // add this edge to the list - parentNode.containedEdges[childNode.id].push(edge); + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); - // remove the edge from the global edges object - delete this.edges[edge.id]; + if (!isValid(tempConfig)) { + continue; + } - // remove the edge from the parent object - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - if (parentNode.dynamicEdges[i].id == edge.id) { - parentNode.dynamicEdges.splice(i,1); - break; - } - } - }; + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; - /** - * This function connects an edge that was connected to a child node to the parent node. - * It keeps track of which nodes it has been connected to with the originalId array. - * - * @param {Node} parentNode | Node object - * @param {Node} childNode | Node object - * @param {Edge} edge | Edge object - * @private - */ - exports._connectEdgeToCluster = function(parentNode, childNode, edge) { - // handle circular edges - if (edge.toId == edge.fromId) { - this._addToContainedEdges(parentNode, childNode, edge); - } - else { - if (edge.toId == childNode.id) { // edge connected to other node on the "to" side - edge.originalToId.push(childNode.id); - edge.to = parentNode; - edge.toId = parentNode.id; - } - else { // edge connected to other node with the "from" side - edge.originalFromId.push(childNode.id); - edge.from = parentNode; - edge.fromId = parentNode.id; - } + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; - this._addToReroutedEdges(parentNode,childNode,edge); - } - }; + tempConfig._pf.score = currentScore; + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } - /** - * If a node is connected to itself, a circular edge is drawn. When clustering we want to contain - * these edges inside of the cluster. - * - * @param parentNode - * @param childNode - * @private - */ - exports._containCircularEdgesFromNode = function(parentNode, childNode) { - // manage all the edges connected to the child and parent nodes - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - var edge = parentNode.dynamicEdges[i]; - // handle circular edges - if (edge.toId == edge.fromId) { - this._addToContainedEdges(parentNode, childNode, edge); + extend(config, bestMoment || tempConfig); } - } - }; - - /** - * This adds an edge from the childNode to the rerouted edges of the parent node - * - * @param parentNode | Node object - * @param childNode | Node object - * @param edge | Edge object - * @private - */ - exports._addToReroutedEdges = function(parentNode, childNode, edge) { - // create an array object if it does not yet exist for this childNode - // we store the edge in the rerouted edges so we can restore it when the cluster pops open - if (!(parentNode.reroutedEdges.hasOwnProperty(childNode.id))) { - parentNode.reroutedEdges[childNode.id] = []; - } - parentNode.reroutedEdges[childNode.id].push(edge); + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); - // this edge becomes part of the dynamicEdges of the cluster node - parentNode.dynamicEdges.push(edge); - }; + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(parseTokenTimezone)) { + config._f += 'Z'; + } + makeDateFromStringAndFormat(config); + } else { + config._isValid = false; + } + } + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); + } + } + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } - /** - * This function connects an edge that was connected to a cluster node back to the child node. - * - * @param parentNode | Node object - * @param childNode | Node object - * @private - */ - exports._connectEdgeBackToChild = function(parentNode, childNode) { - if (parentNode.reroutedEdges.hasOwnProperty(childNode.id)) { - for (var i = 0; i < parentNode.reroutedEdges[childNode.id].length; i++) { - var edge = parentNode.reroutedEdges[childNode.id][i]; - if (edge.originalFromId[edge.originalFromId.length-1] == childNode.id) { - edge.originalFromId.pop(); - edge.fromId = childNode.id; - edge.from = childNode; - } - else { - edge.originalToId.pop(); - edge.toId = childNode.id; - edge.to = childNode; - } + function makeDateFromInput(config) { + var input = config._i, matched; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + dateFromConfig(config); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); + } + } - // append this edge to the list of edges connecting to the childnode - childNode.dynamicEdges.push(edge); + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); - // remove the edge from the parent object - for (var j = 0; j < parentNode.dynamicEdges.length; j++) { - if (parentNode.dynamicEdges[j].id == edge.id) { - parentNode.dynamicEdges.splice(j,1); - break; + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); } - } + return date; } - // remove the entry from the rerouted edges - delete parentNode.reroutedEdges[childNode.id]; - } - }; - - /** - * When loops are clustered, an edge can be both in the rerouted array and the contained array. - * This function is called last to verify that all edges in dynamicEdges are in fact connected to the - * parentNode - * - * @param parentNode | Node object - * @private - */ - exports._validateEdges = function(parentNode) { - var dynamicEdges = [] - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - var edge = parentNode.dynamicEdges[i]; - if (parentNode.id == edge.toId || parentNode.id == edge.fromId) { - dynamicEdges.push(edge); + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; } - } - parentNode.dynamicEdges = dynamicEdges; - }; + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } + } + } + return input; + } - /** - * This function released the contained edges back into the global domain and puts them back into the - * dynamic edges of both parent and child. - * - * @param {Node} parentNode | - * @param {Node} childNode | - * @private - */ - exports._releaseContainedEdges = function(parentNode, childNode) { - for (var i = 0; i < parentNode.containedEdges[childNode.id].length; i++) { - var edge = parentNode.containedEdges[childNode.id][i]; + /************************************ + Relative Time + ************************************/ - // put the edge back in the global edges object - this.edges[edge.id] = edge; - // put the edge back in the dynamic edges of the child and parent - childNode.dynamicEdges.push(edge); - parentNode.dynamicEdges.push(edge); - } - // remove the entry from the contained edges - delete parentNode.containedEdges[childNode.id]; + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } - }; + function relativeTime(posNegDuration, withoutSuffix, locale) { + var duration = moment.duration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + years = round(duration.as('y')), + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < relativeTimeThresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < relativeTimeThresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; + args[2] = withoutSuffix; + args[3] = +posNegDuration > 0; + args[4] = locale; + return substituteTimeAgo.apply({}, args); + } - // ------------------- UTILITY FUNCTIONS ---------------------------- // + /************************************ + Week of Year + ************************************/ - /** - * This updates the node labels for all nodes (for debugging purposes) - */ - exports.updateLabels = function() { - var nodeId; - // update node labels - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.clusterSize > 1) { - node.label = "[".concat(String(node.clusterSize),"]"); - } - } - } + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; - // update node labels - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.clusterSize == 1) { - if (node.originalLabel !== undefined) { - node.label = node.originalLabel; + + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; } - else { - node.label = String(node.id); + + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; } - } + + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; } - } - // /* Debug Override */ - // for (nodeId in this.nodes) { - // if (this.nodes.hasOwnProperty(nodeId)) { - // node = this.nodes[nodeId]; - // node.label = String(node.clusterSize + ":" + node.dynamicEdges.length); - // } - // } + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - }; + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; + } - /** - * We want to keep the cluster level distribution rather small. This means we do not want unclustered nodes - * if the rest of the nodes are already a few cluster levels in. - * To fix this we use this function. It determines the min and max cluster level and sends nodes that have not - * clustered enough to the clusterToSmallestNeighbours function. - */ - exports.normalizeClusterLevels = function() { - var maxLevel = 0; - var minLevel = 1e9; - var clusterLevel = 0; - var nodeId; + /************************************ + Top Level Functions + ************************************/ - // we loop over all nodes in the list - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - clusterLevel = this.nodes[nodeId].clusterSessions.length; - if (maxLevel < clusterLevel) {maxLevel = clusterLevel;} - if (minLevel > clusterLevel) {minLevel = clusterLevel;} - } - } + function makeMoment(config) { + var input = config._i, + format = config._f, + res; - if (maxLevel - minLevel > this.constants.clustering.clusterLevelDifference) { - var amountOfNodes = this.nodeIndices.length; - var targetLevel = maxLevel - this.constants.clustering.clusterLevelDifference; - // we loop over all nodes in the list - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].clusterSessions.length < targetLevel) { - this._clusterToSmallestNeighbour(this.nodes[nodeId]); + config._locale = config._locale || moment.localeData(config._l); + + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); } - } - } - this._updateNodeIndexList(); - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length != amountOfNodes) { - this.clusterSession += 1; + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (moment.isMoment(input)) { + return new Moment(input, true); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); + } + + res = new Moment(config); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; } - } - }; + moment = function (input, format, locale, strict) { + var c; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = locale; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); - /** - * This function determines if the cluster we want to decluster is in the active area - * this means around the zoom center - * - * @param {Node} node - * @returns {boolean} - * @private - */ - exports._nodeInActiveArea = function(node) { - return ( - Math.abs(node.x - this.areaCenter.x) <= this.constants.clustering.activeAreaBoxSize/this.scale - && - Math.abs(node.y - this.areaCenter.y) <= this.constants.clustering.activeAreaBoxSize/this.scale - ) - }; + return makeMoment(c); + }; + moment.suppressDeprecationWarnings = false; - /** - * This is an adaptation of the original repositioning function. This is called if the system is clustered initially - * It puts large clusters away from the center and randomizes the order. - * - */ - exports.repositionNodes = function() { - for (var i = 0; i < this.nodeIndices.length; i++) { - var node = this.nodes[this.nodeIndices[i]]; - if ((node.xFixed == false || node.yFixed == false)) { - var radius = 10 * 0.1*this.nodeIndices.length * Math.min(100,node.options.mass); - var angle = 2 * Math.PI * Math.random(); - if (node.xFixed == false) {node.x = radius * Math.cos(angle);} - if (node.yFixed == false) {node.y = radius * Math.sin(angle);} - this._repositionBezierNodes(node); + moment.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return moment(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; + } + } + return res; } - } - }; + moment.min = function () { + var args = [].slice.call(arguments, 0); - /** - * We determine how many connections denote an important hub. - * We take the mean + 2*std as the important hub size. (Assuming a normal distribution of data, ~2.2%) - * - * @private - */ - exports._getHubSize = function() { - var average = 0; - var averageSquared = 0; - var hubCounter = 0; - var largestHub = 0; + return pickBy('isBefore', args); + }; - for (var i = 0; i < this.nodeIndices.length; i++) { + moment.max = function () { + var args = [].slice.call(arguments, 0); - var node = this.nodes[this.nodeIndices[i]]; - if (node.dynamicEdges.length > largestHub) { - largestHub = node.dynamicEdges.length; - } - average += node.dynamicEdges.length; - averageSquared += Math.pow(node.dynamicEdges.length,2); - hubCounter += 1; - } - average = average / hubCounter; - averageSquared = averageSquared / hubCounter; + return pickBy('isAfter', args); + }; - var variance = averageSquared - Math.pow(average,2); + // creating with utc + moment.utc = function (input, format, locale, strict) { + var c; - var standardDeviation = Math.sqrt(variance); + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); - this.hubThreshold = Math.floor(average + 2*standardDeviation); + return makeMoment(c).utc(); + }; - // always have at least one to cluster - if (this.hubThreshold > largestHub) { - this.hubThreshold = largestHub; - } + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; - // console.log("average",average,"averageSQ",averageSquared,"var",variance,"std",standardDeviation); - // console.log("hubThreshold:",this.hubThreshold); - }; + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso, + diffRes; + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); - /** - * We reduce the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods - * with this amount we can cluster specifically on these chains. - * - * @param {Number} fraction | between 0 and 1, the percentage of chains to reduce - * @private - */ - exports._reduceAmountOfChains = function(fraction) { - this.hubThreshold = 2; - var reduceAmount = Math.floor(this.nodeIndices.length * fraction); - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].dynamicEdges.length == 2) { - if (reduceAmount > 0) { - this._formClusterFromHub(this.nodes[nodeId],true,true,1); - reduceAmount -= 1; + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; } - } - } - } - }; - /** - * We get the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods - * with this amount we can cluster specifically on these chains. - * - * @private - */ - exports._getChainFraction = function() { - var chains = 0; - var total = 0; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].dynamicEdges.length == 2) { - chains += 1; - } - total += 1; - } - } - return chains/total; - }; + ret = new Duration(duration); + if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } -/***/ }, -/* 59 */ -/***/ function(module, exports, __webpack_require__) { + return ret; + }; - var util = __webpack_require__(1); - var Node = __webpack_require__(40); + // version number + moment.version = VERSION; - /** - * Creation of the SectorMixin var. - * - * This contains all the functions the Network object can use to employ the sector system. - * The sector system is always used by Network, though the benefits only apply to the use of clustering. - * If clustering is not used, there is no overhead except for a duplicate object with references to nodes and edges. - */ + // default format + moment.defaultFormat = isoFormat; - /** - * This function is only called by the setData function of the Network object. - * This loads the global references into the active sector. This initializes the sector. - * - * @private - */ - exports._putDataInSector = function() { - this.sectors["active"][this._sector()].nodes = this.nodes; - this.sectors["active"][this._sector()].edges = this.edges; - this.sectors["active"][this._sector()].nodeIndices = this.nodeIndices; - }; + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; - /** - * /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied (active) sector. If a type is defined, do the specific type - * - * @param {String} sectorId - * @param {String} [sectorType] | "active" or "frozen" - * @private - */ - exports._switchToSector = function(sectorId, sectorType) { - if (sectorType === undefined || sectorType == "active") { - this._switchToActiveSector(sectorId); - } - else { - this._switchToFrozenSector(sectorId); - } - }; + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function (threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return relativeTimeThresholds[threshold]; + } + relativeTimeThresholds[threshold] = limit; + return true; + }; - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied active sector. - * - * @param sectorId - * @private - */ - exports._switchToActiveSector = function(sectorId) { - this.nodeIndices = this.sectors["active"][sectorId]["nodeIndices"]; - this.nodes = this.sectors["active"][sectorId]["nodes"]; - this.edges = this.sectors["active"][sectorId]["edges"]; - }; + moment.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + function (key, value) { + return moment.locale(key, value); + } + ); + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + moment.locale = function (key, values) { + var data; + if (key) { + if (typeof(values) !== 'undefined') { + data = moment.defineLocale(key, values); + } + else { + data = moment.localeData(key); + } - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied active sector. - * - * @private - */ - exports._switchToSupportSector = function() { - this.nodeIndices = this.sectors["support"]["nodeIndices"]; - this.nodes = this.sectors["support"]["nodes"]; - this.edges = this.sectors["support"]["edges"]; - }; + if (data) { + moment.duration._locale = moment._locale = data; + } + } + return moment._locale._abbr; + }; - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied frozen sector. - * - * @param sectorId - * @private - */ - exports._switchToFrozenSector = function(sectorId) { - this.nodeIndices = this.sectors["frozen"][sectorId]["nodeIndices"]; - this.nodes = this.sectors["frozen"][sectorId]["nodes"]; - this.edges = this.sectors["frozen"][sectorId]["edges"]; - }; + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); + } + locales[name].set(values); + // backwards compat for now: also set the locale + moment.locale(name); - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the currently active sector. - * - * @private - */ - exports._loadLatestSector = function() { - this._switchToSector(this._sector()); - }; + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + }; + moment.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + function (key) { + return moment.localeData(key); + } + ); - /** - * This function returns the currently active sector Id - * - * @returns {String} - * @private - */ - exports._sector = function() { - return this.activeSector[this.activeSector.length-1]; - }; + // returns locale data + moment.localeData = function (key) { + var locale; + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } - /** - * This function returns the previously active sector Id - * - * @returns {String} - * @private - */ - exports._previousSector = function() { - if (this.activeSector.length > 1) { - return this.activeSector[this.activeSector.length-2]; - } - else { - throw new TypeError('there are not enough sectors in the this.activeSector array.'); - } - }; + if (!key) { + return moment._locale; + } + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } - /** - * We add the active sector at the end of the this.activeSector array - * This ensures it is the currently active sector returned by _sector() and it reaches the top - * of the activeSector stack. When we reverse our steps we move from the end to the beginning of this stack. - * - * @param newId - * @private - */ - exports._setActiveSector = function(newId) { - this.activeSector.push(newId); - }; + return chooseLocale(key); + }; + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && hasOwnProp(obj, '_isAMomentObject')); + }; - /** - * We remove the currently active sector id from the active sector stack. This happens when - * we reactivate the previously active sector - * - * @private - */ - exports._forgetLastSector = function() { - this.activeSector.pop(); - }; + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); + } - /** - * This function creates a new active sector with the supplied newId. This newId - * is the expanding node id. - * - * @param {String} newId | Id of the new active sector - * @private - */ - exports._createNewSector = function(newId) { - // create the new sector - this.sectors["active"][newId] = {"nodes":{}, - "edges":{}, - "nodeIndices":[], - "formationScale": this.scale, - "drawingNode": undefined}; + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; - // create the new sector render node. This gives visual feedback that you are in a new sector. - this.sectors["active"][newId]['drawingNode'] = new Node( - {id:newId, - color: { - background: "#eaefef", - border: "495c5e" + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); + } + else { + m._pf.userInvalidated = true; } - },{},{},this.constants); - this.sectors["active"][newId]['drawingNode'].clusterSize = 2; - }; + return m; + }; - /** - * This function removes the currently active sector. This is called when we create a new - * active sector. - * - * @param {String} sectorId | Id of the active sector that will be removed - * @private - */ - exports._deleteActiveSector = function(sectorId) { - delete this.sectors["active"][sectorId]; - }; + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; - /** - * This function removes the currently active sector. This is called when we reactivate - * the previously active sector. - * - * @param {String} sectorId | Id of the active sector that will be removed - * @private - */ - exports._deleteFrozenSector = function(sectorId) { - delete this.sectors["frozen"][sectorId]; - }; + moment.isDate = isDate; + /************************************ + Moment Prototype + ************************************/ - /** - * Freezing an active sector means moving it from the "active" object to the "frozen" object. - * We copy the references, then delete the active entree. - * - * @param sectorId - * @private - */ - exports._freezeSector = function(sectorId) { - // we move the set references from the active to the frozen stack. - this.sectors["frozen"][sectorId] = this.sectors["active"][sectorId]; - // we have moved the sector data into the frozen set, we now remove it from the active set - this._deleteActiveSector(sectorId); - }; + extend(moment.fn = Moment.prototype, { + clone : function () { + return moment(this); + }, - /** - * This is the reverse operation of _freezeSector. Activating means moving the sector from the "frozen" - * object to the "active" object. - * - * @param sectorId - * @private - */ - exports._activateSector = function(sectorId) { - // we move the set references from the frozen to the active stack. - this.sectors["active"][sectorId] = this.sectors["frozen"][sectorId]; + valueOf : function () { + return +this._d - ((this._offset || 0) * 60000); + }, - // we have moved the sector data into the active set, we now remove it from the frozen stack - this._deleteFrozenSector(sectorId); - }; + unix : function () { + return Math.floor(+this / 1000); + }, + toString : function () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + }, - /** - * This function merges the data from the currently active sector with a frozen sector. This is used - * in the process of reverting back to the previously active sector. - * The data that is placed in the frozen (the previously active) sector is the node that has been removed from it - * upon the creation of a new active sector. - * - * @param sectorId - * @private - */ - exports._mergeThisWithFrozen = function(sectorId) { - // copy all nodes - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.sectors["frozen"][sectorId]["nodes"][nodeId] = this.nodes[nodeId]; - } - } + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, - // copy all edges (if not fully clustered, else there are no edges) - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - this.sectors["frozen"][sectorId]["edges"][edgeId] = this.edges[edgeId]; - } - } + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + if ('function' === typeof Date.prototype.toISOString) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + }, - // merge the nodeIndices - for (var i = 0; i < this.nodeIndices.length; i++) { - this.sectors["frozen"][sectorId]["nodeIndices"].push(this.nodeIndices[i]); - } - }; + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, + isValid : function () { + return isValid(this); + }, - /** - * This clusters the sector to one cluster. It was a single cluster before this process started so - * we revert to that state. The clusterToFit function with a maximum size of 1 node does this. - * - * @private - */ - exports._collapseThisToSingleCluster = function() { - this.clusterToFit(1,false); - }; + isDSTShifted : function () { + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } + return false; + }, - /** - * We create a new active sector from the node that we want to open. - * - * @param node - * @private - */ - exports._addSector = function(node) { - // this is the currently active sector - var sector = this._sector(); + parsingFlags : function () { + return extend({}, this._pf); + }, - // // this should allow me to select nodes from a frozen set. - // if (this.sectors['active'][sector]["nodes"].hasOwnProperty(node.id)) { - // console.log("the node is part of the active sector"); - // } - // else { - // console.log("I dont know what the fuck happened!!"); - // } + invalidAt: function () { + return this._pf.overflow; + }, - // when we switch to a new sector, we remove the node that will be expanded from the current nodes list. - delete this.nodes[node.id]; + utc : function (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + }, - var unqiueIdentifier = util.randomUUID(); + local : function (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; - // we fully freeze the currently active sector - this._freezeSector(sector); + if (keepLocalTime) { + this.subtract(this._dateUtcOffset(), 'm'); + } + } + return this; + }, - // we create a new active sector. This sector has the Id of the node to ensure uniqueness - this._createNewSector(unqiueIdentifier); + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.localeData().postformat(output); + }, - // we add the active sector to the sectors array to be able to revert these steps later on - this._setActiveSector(unqiueIdentifier); + add : createAdder(1, 'add'), - // we redirect the global references to the new sector's references. this._sector() now returns unqiueIdentifier - this._switchToSector(this._sector()); + subtract : createAdder(-1, 'subtract'), - // finally we add the node we removed from our previous active sector to the new active sector - this.nodes[node.id] = node; - }; + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, + anchor, diff, output, daysAdjust; + units = normalizeUnits(units); - /** - * We close the sector that is currently open and revert back to the one before. - * If the active sector is the "default" sector, nothing happens. - * - * @private - */ - exports._collapseSector = function() { - // the currently active sector - var sector = this._sector(); + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + diff = this - that; + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; + } + return asFloat ? output : absRound(output); + }, - // we cannot collapse the default sector - if (sector != "default") { - if ((this.nodeIndices.length == 1) || - (this.sectors["active"][sector]["drawingNode"].width*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || - (this.sectors["active"][sector]["drawingNode"].height*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { - var previousSector = this._previousSector(); + from : function (time, withoutSuffix) { + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + }, - // we collapse the sector back to a single cluster - this._collapseThisToSingleCluster(); + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, - // we move the remaining nodes, edges and nodeIndices to the previous sector. - // This previous sector is the one we will reactivate - this._mergeThisWithFrozen(previousSector); + calendar : function (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're locat/utc/offset + // or not. + var now = time || moment(), + sod = makeAs(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this, moment(now))); + }, - // the previously active (frozen) sector now has all the data from the currently active sector. - // we can now delete the active sector. - this._deleteActiveSector(sector); + isLeapYear : function () { + return isLeapYear(this.year()); + }, - // we activate the previously active (and currently frozen) sector. - this._activateSector(previousSector); + isDST : function () { + return (this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset()); + }, - // we load the references from the newly active sector into the global references - this._switchToSector(previousSector); + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + }, - // we forget the previously active sector because we reverted to the one before - this._forgetLastSector(); + month : makeAccessor('Month', true), - // finally, we update the node index list. - this._updateNodeIndexList(); + startOf : function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } - // we refresh the list with calulation nodes and calculation node indices. - this._updateCalculationNodes(); - } - } - }; + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } - /** - * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we dont pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private - */ - exports._doInAllActiveSectors = function(runFunction,argument) { - var returnValues = []; - if (argument === undefined) { - for (var sector in this.sectors["active"]) { - if (this.sectors["active"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToActiveSector(sector); - returnValues.push( this[runFunction]() ); - } - } - } - else { - for (var sector in this.sectors["active"]) { - if (this.sectors["active"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToActiveSector(sector); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - returnValues.push( this[runFunction](args[0],args[1]) ); - } - else { - returnValues.push( this[runFunction](argument) ); - } - } - } - } - // we revert the global references back to our active sector - this._loadLatestSector(); - return returnValues; - }; + return this; + }, + endOf: function (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + }, - /** - * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we dont pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private - */ - exports._doInSupportSector = function(runFunction,argument) { - var returnValues = false; - if (argument === undefined) { - this._switchToSupportSector(); - returnValues = this[runFunction](); - } - else { - this._switchToSupportSector(); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - returnValues = this[runFunction](args[0],args[1]); - } - else { - returnValues = this[runFunction](argument); - } - } - // we revert the global references back to our active sector - this._loadLatestSector(); - return returnValues; - }; + isAfter: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this > +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return inputMs < +this.clone().startOf(units); + } + }, + isBefore: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this < +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return +this.clone().endOf(units) < inputMs; + } + }, - /** - * This runs a function in all frozen sectors. This is used in the _redraw(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we don't pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private - */ - exports._doInAllFrozenSectors = function(runFunction,argument) { - if (argument === undefined) { - for (var sector in this.sectors["frozen"]) { - if (this.sectors["frozen"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToFrozenSector(sector); - this[runFunction](); - } - } - } - else { - for (var sector in this.sectors["frozen"]) { - if (this.sectors["frozen"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToFrozenSector(sector); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - this[runFunction](args[0],args[1]); - } - else { - this[runFunction](argument); - } - } - } - } - this._loadLatestSector(); - }; + isBetween: function (from, to, units) { + return this.isAfter(from, units) && this.isBefore(to, units); + }, + isSame: function (input, units) { + var inputMs; + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this === +input; + } else { + inputMs = +moment(input); + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + } + }, - /** - * This runs a function in all sectors. This is used in the _redraw(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we don't pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private - */ - exports._doInAllSectors = function(runFunction,argument) { - var args = Array.prototype.splice.call(arguments, 1); - if (argument === undefined) { - this._doInAllActiveSectors(runFunction); - this._doInAllFrozenSectors(runFunction); - } - else { - if (args.length > 1) { - this._doInAllActiveSectors(runFunction,args[0],args[1]); - this._doInAllFrozenSectors(runFunction,args[0],args[1]); - } - else { - this._doInAllActiveSectors(runFunction,argument); - this._doInAllFrozenSectors(runFunction,argument); - } - } - }; + min: deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), + max: deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; + } + ), - /** - * This clears the nodeIndices list. We cannot use this.nodeIndices = [] because we would break the link with the - * active sector. Thus we clear the nodeIndices in the active sector, then reconnect the this.nodeIndices to it. - * - * @private - */ - exports._clearNodeIndexList = function() { - var sector = this._sector(); - this.sectors["active"][sector]["nodeIndices"] = []; - this.nodeIndices = this.sectors["active"][sector]["nodeIndices"]; - }; + zone : deprecate( + 'moment().zone is deprecated, use moment().utcOffset instead. ' + + 'https://github.com/moment/moment/issues/1779', + function (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + this.utcOffset(input, keepLocalTime); - /** - * Draw the encompassing sector node - * - * @param ctx - * @param sectorType - * @private - */ - exports._drawSectorNodes = function(ctx,sectorType) { - var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; - for (var sector in this.sectors[sectorType]) { - if (this.sectors[sectorType].hasOwnProperty(sector)) { - if (this.sectors[sectorType][sector]["drawingNode"] !== undefined) { + return this; + } else { + return -this.utcOffset(); + } + } + ), - this._switchToSector(sector,sectorType); + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + utcOffset : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = utcOffsetFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._dateUtcOffset(); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } + } - minY = 1e9; maxY = -1e9; minX = 1e9; maxX = -1e9; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.resize(ctx); - if (minX > node.x - 0.5 * node.width) {minX = node.x - 0.5 * node.width;} - if (maxX < node.x + 0.5 * node.width) {maxX = node.x + 0.5 * node.width;} - if (minY > node.y - 0.5 * node.height) {minY = node.y - 0.5 * node.height;} - if (maxY < node.y + 0.5 * node.height) {maxY = node.y + 0.5 * node.height;} - } - } - node = this.sectors[sectorType][sector]["drawingNode"]; - node.x = 0.5 * (maxX + minX); - node.y = 0.5 * (maxY + minY); - node.width = 2 * (node.x - minX); - node.height = 2 * (node.y - minY); - node.options.radius = Math.sqrt(Math.pow(0.5*node.width,2) + Math.pow(0.5*node.height,2)); - node.setScale(this.scale); - node._drawCircle(ctx); - } - } - } - }; + return this; + } else { + return this._isUTC ? offset : this._dateUtcOffset(); + } + }, - exports._drawAllSectorNodes = function(ctx) { - this._drawSectorNodes(ctx,"frozen"); - this._drawSectorNodes(ctx,"active"); - this._loadLatestSector(); - }; + isLocal : function () { + return !this._isUTC; + }, + isUtcOffset : function () { + return this._isUTC; + }, -/***/ }, -/* 60 */ -/***/ function(module, exports, __webpack_require__) { + isUtc : function () { + return this._isUTC && this._offset === 0; + }, - var Node = __webpack_require__(40); + zoneAbbr : function () { + return this._isUTC ? 'UTC' : ''; + }, - /** - * This function can be called from the _doInAllSectors function - * - * @param object - * @param overlappingNodes - * @private - */ - exports._getNodesOverlappingWith = function(object, overlappingNodes) { - var nodes = this.nodes; - for (var nodeId in nodes) { - if (nodes.hasOwnProperty(nodeId)) { - if (nodes[nodeId].isOverlappingWith(object)) { - overlappingNodes.push(nodeId); - } - } - } - }; + zoneName : function () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + }, - /** - * retrieve all nodes overlapping with given object - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes - * @private - */ - exports._getAllNodesOverlappingWith = function (object) { - var overlappingNodes = []; - this._doInAllActiveSectors("_getNodesOverlappingWith",object,overlappingNodes); - return overlappingNodes; - }; + parseZone : function () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(utcOffsetFromString(this._i)); + } + return this; + }, + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).utcOffset(); + } - /** - * Return a position object in canvasspace from a single point in screenspace - * - * @param pointer - * @returns {{left: number, top: number, right: number, bottom: number}} - * @private - */ - exports._pointerToPositionObject = function(pointer) { - var x = this._XconvertDOMtoCanvas(pointer.x); - var y = this._YconvertDOMtoCanvas(pointer.y); + return (this.utcOffset() - input) % 60 === 0; + }, - return { - left: x, - top: y, - right: x, - bottom: y - }; - }; + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + }, - /** - * Get the top node at the a specific point (like a click) - * - * @param {{x: Number, y: Number}} pointer - * @return {Node | null} node - * @private - */ - exports._getNodeAt = function (pointer) { - // we first check if this is an navigation controls element - var positionObject = this._pointerToPositionObject(pointer); - var overlappingNodes = this._getAllNodesOverlappingWith(positionObject); + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, - // if there are overlapping nodes, select the last one, this is the - // one which is drawn on top of the others - if (overlappingNodes.length > 0) { - return this.nodes[overlappingNodes[overlappingNodes.length - 1]]; - } - else { - return null; - } - }; + weekYear : function (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + }, + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + }, - /** - * retrieve all edges overlapping with given object, selector is around center - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes - * @private - */ - exports._getEdgesOverlappingWith = function (object, overlappingEdges) { - var edges = this.edges; - for (var edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - if (edges[edgeId].isOverlappingWith(object)) { - overlappingEdges.push(edgeId); - } - } - } - }; + week : function (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + }, + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + }, - /** - * retrieve all nodes overlapping with given object - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes - * @private - */ - exports._getAllEdgesOverlappingWith = function (object) { - var overlappingEdges = []; - this._doInAllActiveSectors("_getEdgesOverlappingWith",object,overlappingEdges); - return overlappingEdges; - }; + weekday : function (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + }, - /** - * Place holder. To implement change the _getNodeAt to a _getObjectAt. Have the _getObjectAt call - * _getNodeAt and _getEdgesAt, then priortize the selection to user preferences. - * - * @param pointer - * @returns {null} - * @private - */ - exports._getEdgeAt = function(pointer) { - var positionObject = this._pointerToPositionObject(pointer); - var overlappingEdges = this._getAllEdgesOverlappingWith(positionObject); + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + }, - if (overlappingEdges.length > 0) { - return this.edges[overlappingEdges[overlappingEdges.length - 1]]; - } - else { - return null; - } - }; + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, + weeksInYear : function () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, - /** - * Add object to the selection array. - * - * @param obj - * @private - */ - exports._addToSelection = function(obj) { - if (obj instanceof Node) { - this.selectionObj.nodes[obj.id] = obj; - } - else { - this.selectionObj.edges[obj.id] = obj; - } - }; + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, - /** - * Add object to the selection array. - * - * @param obj - * @private - */ - exports._addToHover = function(obj) { - if (obj instanceof Node) { - this.hoverObj.nodes[obj.id] = obj; - } - else { - this.hoverObj.edges[obj.id] = obj; - } - }; + set : function (units, value) { + var unit; + if (typeof units === 'object') { + for (unit in units) { + this.set(unit, units[unit]); + } + } + else { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + } + return this; + }, + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + locale : function (key) { + var newLocaleData; - /** - * Remove a single option from selection. - * - * @param {Object} obj - * @private - */ - exports._removeFromSelection = function(obj) { - if (obj instanceof Node) { - delete this.selectionObj.nodes[obj.id]; - } - else { - delete this.selectionObj.edges[obj.id]; - } - }; + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = moment.localeData(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + }, - /** - * Unselect all. The selectionObj is useful for this. - * - * @param {Boolean} [doNotTrigger] | ignore trigger - * @private - */ - exports._unselectAll = function(doNotTrigger) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - this.selectionObj.nodes[nodeId].unselect(); - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - this.selectionObj.edges[edgeId].unselect(); - } - } + lang : deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ), - this.selectionObj = {nodes:{},edges:{}}; + localeData : function () { + return this._locale; + }, - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); - } - }; + _dateUtcOffset : function () { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(this._d.getTimezoneOffset() / 15) * 15; + } - /** - * Unselect all clusters. The selectionObj is useful for this. - * - * @param {Boolean} [doNotTrigger] | ignore trigger - * @private - */ - exports._unselectClusters = function(doNotTrigger) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } + }); - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (this.selectionObj.nodes[nodeId].clusterSize > 1) { - this.selectionObj.nodes[nodeId].unselect(); - this._removeFromSelection(this.selectionObj.nodes[nodeId]); - } - } - } + function rawMonthSetter(mom, value) { + var dayOfMonth; - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); - } - }; + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } - /** - * return the number of selected nodes - * - * @returns {number} - * @private - */ - exports._getSelectedNodeCount = function() { - var count = 0; - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - count += 1; + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); } - } - return count; - }; - /** - * return the selected node - * - * @returns {number} - * @private - */ - exports._getSelectedNode = function() { - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - return this.selectionObj.nodes[nodeId]; + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } } - } - return null; - }; - /** - * return the selected edge - * - * @returns {number} - * @private - */ - exports._getSelectedEdge = function() { - for (var edgeId in this.selectionObj.edges) { - if (this.selectionObj.edges.hasOwnProperty(edgeId)) { - return this.selectionObj.edges[edgeId]; + function makeAccessor(unit, keepTime) { + return function (value) { + if (value != null) { + rawSetter(this, unit, value); + moment.updateOffset(this, keepTime); + return this; + } else { + return rawGetter(this, unit); + } + }; } - } - return null; - }; + moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); + moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); + moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); + // moment.fn.month is defined separately + moment.fn.date = makeAccessor('Date', true); + moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); + moment.fn.year = makeAccessor('FullYear', true); + moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); - /** - * return the number of selected edges - * - * @returns {number} - * @private - */ - exports._getSelectedEdgeCount = function() { - var count = 0; - for (var edgeId in this.selectionObj.edges) { - if (this.selectionObj.edges.hasOwnProperty(edgeId)) { - count += 1; - } - } - return count; - }; + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + moment.fn.quarters = moment.fn.quarter; + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; - /** - * return the number of selected objects. - * - * @returns {number} - * @private - */ - exports._getSelectedObjectCount = function() { - var count = 0; - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - count += 1; - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - count += 1; - } - } - return count; - }; + // alias isUtc for dev-friendliness + moment.fn.isUTC = moment.fn.isUtc; - /** - * Check if anything is selected - * - * @returns {boolean} - * @private - */ - exports._selectionIsEmpty = function() { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - return false; - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - return false; - } - } - return true; - }; + /************************************ + Duration Prototype + ************************************/ - /** - * check if one of the selected nodes is a cluster. - * - * @returns {boolean} - * @private - */ - exports._clusterInSelection = function() { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (this.selectionObj.nodes[nodeId].clusterSize > 1) { - return true; - } + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; } - } - return false; - }; - /** - * select the edges connected to the node that is being selected - * - * @param {Node} node - * @private - */ - exports._selectConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.select(); - this._addToSelection(edge); - } - }; + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; + } - /** - * select the edges connected to the node that is being selected - * - * @param {Node} node - * @private - */ - exports._hoverConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.hover = true; - this._addToHover(edge); - } - }; + extend(moment.duration.fn = Duration.prototype, { + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years = 0; - /** - * unselect the edges connected to the node that is being selected - * - * @param {Node} node - * @private - */ - exports._unselectConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.unselect(); - this._removeFromSelection(edge); - } - }; + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; + hours = absRound(minutes / 60); + data.hours = hours % 24; - /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection - * - * @param {Node || Edge} object - * @param {Boolean} append - * @param {Boolean} [doNotTrigger] | ignore trigger - * @private - */ - exports._selectObject = function(object, append, doNotTrigger, highlightEdges, overrideSelectable) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } - if (highlightEdges === undefined) { - highlightEdges = true; - } + days += absRound(hours / 24); - if (this._selectionIsEmpty() == false && append == false && this.forceAppendSelection == false) { - this._unselectAll(true); - } + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); - // selectable allows the object to be selected. Override can be used if needed to bypass this. - if (object.selected == false && (this.constants.selectable == true || overrideSelectable)) { - object.select(); - this._addToSelection(object); - if (object instanceof Node && this.blockConnectingEdgeSelection == false && highlightEdges == true) { - this._selectConnectedEdges(object); - } - } - // do not select the object if selectable is false, only add it to selection to allow drag to work - else if (object.selected == false) { - this._addToSelection(object); - doNotTrigger = true; - } - else { - object.unselect(); - this._removeFromSelection(object); - } + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absRound(days / 30); + days %= 30; - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); - } - }; + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; + data.days = days; + data.months = months; + data.years = years; + }, - /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection - * - * @param {Node || Edge} object - * @private - */ - exports._blurObject = function(object) { - if (object.hover == true) { - object.hover = false; - this.emit("blurNode",{node:object.id}); - } - }; + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); - /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection - * - * @param {Node || Edge} object - * @private - */ - exports._hoverObject = function(object) { - if (object.hover == false) { - object.hover = true; - this._addToHover(object); - if (object instanceof Node) { - this.emit("hoverNode",{node:object.id}); - } - } - if (object instanceof Node) { - this._hoverConnectedEdges(object); - } - }; + this._data.milliseconds = Math.abs(this._data.milliseconds); + this._data.seconds = Math.abs(this._data.seconds); + this._data.minutes = Math.abs(this._data.minutes); + this._data.hours = Math.abs(this._data.hours); + this._data.months = Math.abs(this._data.months); + this._data.years = Math.abs(this._data.years); + return this; + }, - /** - * handles the selection part of the touch, only for navigation controls elements; - * Touch is triggered before tap, also before hold. Hold triggers after a while. - * This is the most responsive solution - * - * @param {Object} pointer - * @private - */ - exports._handleTouch = function(pointer) { - }; + weeks : function () { + return absRound(this.days() / 7); + }, + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, - /** - * handles the selection part of the tap; - * - * @param {Object} pointer - * @private - */ - exports._handleTap = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null) { - this._selectObject(node, false); - } - else { - var edge = this._getEdgeAt(pointer); - if (edge != null) { - this._selectObject(edge, false); - } - else { - this._unselectAll(); - } - } - var properties = this.getSelection(); - properties['pointer'] = { - DOM: {x: pointer.x, y: pointer.y}, - canvas: {x: this._XconvertDOMtoCanvas(pointer.x), y: this._YconvertDOMtoCanvas(pointer.y)} - } - this.emit("click", properties); - this._requestRedraw(); - }; + humanize : function (withSuffix) { + var output = relativeTime(this, !withSuffix, this.localeData()); + if (withSuffix) { + output = this.localeData().pastFuture(+this, output); + } - /** - * handles the selection part of the double tap and opens a cluster if needed - * - * @param {Object} pointer - * @private - */ - exports._handleDoubleTap = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null && node !== undefined) { - // we reset the areaCenter here so the opening of the node will occur - this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), - "y" : this._YconvertDOMtoCanvas(pointer.y)}; - this.openCluster(node); - } - var properties = this.getSelection(); - properties['pointer'] = { - DOM: {x: pointer.x, y: pointer.y}, - canvas: {x: this._XconvertDOMtoCanvas(pointer.x), y: this._YconvertDOMtoCanvas(pointer.y)} - } - this.emit("doubleClick", properties); - }; + return this.localeData().postformat(output); + }, + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); - /** - * Handle the onHold selection part - * - * @param pointer - * @private - */ - exports._handleOnHold = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null) { - this._selectObject(node,true); - } - else { - var edge = this._getEdgeAt(pointer); - if (edge != null) { - this._selectObject(edge,true); - } - } - this._requestRedraw(); - }; + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; + this._bubble(); - /** - * handle the onRelease event. These functions are here for the navigation controls module - * and data manipulation module. - * - * @private - */ - exports._handleOnRelease = function(pointer) { - this._manipulationReleaseOverload(pointer); - this._navigationReleaseOverload(pointer); - }; + return this; + }, - exports._manipulationReleaseOverload = function (pointer) {}; - exports._navigationReleaseOverload = function (pointer) {}; + subtract : function (input, val) { + var dur = moment.duration(input, val); - /** - * - * retrieve the currently selected objects - * @return {{nodes: Array., edges: Array.}} selection - */ - exports.getSelection = function() { - var nodeIds = this.getSelectedNodes(); - var edgeIds = this.getSelectedEdges(); - return {nodes:nodeIds, edges:edgeIds}; - }; + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; - /** - * - * retrieve the currently selected nodes - * @return {String[]} selection An array with the ids of the - * selected nodes. - */ - exports.getSelectedNodes = function() { - var idArray = []; - if (this.constants.selectable == true) { - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - idArray.push(nodeId); - } - } - } - return idArray - }; + this._bubble(); - /** - * - * retrieve the currently selected edges - * @return {Array} selection An array with the ids of the - * selected nodes. - */ - exports.getSelectedEdges = function() { - var idArray = []; - if (this.constants.selectable == true) { - for (var edgeId in this.selectionObj.edges) { - if (this.selectionObj.edges.hasOwnProperty(edgeId)) { - idArray.push(edgeId); - } - } - } - return idArray; - }; + return this; + }, + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, - /** - * select zero or more nodes DEPRICATED - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. - */ - exports.setSelection = function() { - console.log("setSelection is deprecated. Please use selectNodes instead.") - }; + as : function (units) { + var days, months; + units = normalizeUnits(units); + if (units === 'month' || units === 'year') { + days = this._days + this._milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(yearsToDays(this._months / 12)); + switch (units) { + case 'week': return days / 7 + this._milliseconds / 6048e5; + case 'day': return days + this._milliseconds / 864e5; + case 'hour': return days * 24 + this._milliseconds / 36e5; + case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; + case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + }, - /** - * select zero or more nodes with the option to highlight edges - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. - * @param {boolean} [highlightEdges] - */ - exports.selectNodes = function(selection, highlightEdges) { - var i, iMax, id; + lang : moment.fn.lang, + locale : moment.fn.locale, - if (!selection || (selection.length == undefined)) - throw 'Selection must be an array with ids'; + toIsoString : deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead ' + + '(notice the capitals)', + function () { + return this.toISOString(); + } + ), - // first unselect any selected node - this._unselectAll(true); + toISOString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); - for (i = 0, iMax = selection.length; i < iMax; i++) { - id = selection[i]; + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } - var node = this.nodes[id]; - if (!node) { - throw new RangeError('Node with id "' + id + '" not found'); + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); + }, + + localeData : function () { + return this._locale; + }, + + toJSON : function () { + return this.toISOString(); + } + }); + + moment.duration.fn.toString = moment.duration.fn.toISOString; + + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; } - this._selectObject(node,true,true,highlightEdges,true); - } - this.redraw(); - }; + for (i in unitMillisecondFactors) { + if (hasOwnProp(unitMillisecondFactors, i)) { + makeDurationGetter(i.toLowerCase()); + } + } - /** - * select zero or more edges - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. - */ - exports.selectEdges = function(selection) { - var i, iMax, id; + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); + }; + moment.duration.fn.asSeconds = function () { + return this.as('s'); + }; + moment.duration.fn.asMinutes = function () { + return this.as('m'); + }; + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; + moment.duration.fn.asMonths = function () { + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); + }; - if (!selection || (selection.length == undefined)) - throw 'Selection must be an array with ids'; + /************************************ + Default Locale + ************************************/ - // first unselect any selected node - this._unselectAll(true); - for (i = 0, iMax = selection.length; i < iMax; i++) { - id = selection[i]; + // Set default locale, other locale will inherit from English. + moment.locale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); - var edge = this.edges[id]; - if (!edge) { - throw new RangeError('Edge with id "' + id + '" not found'); - } - this._selectObject(edge,true,true,false,true); - } - this.redraw(); - }; + /* EMBED_LOCALES */ - /** - * Validate the selection: remove ids of nodes which no longer exist - * @private - */ - exports._updateSelection = function () { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (!this.nodes.hasOwnProperty(nodeId)) { - delete this.selectionObj.nodes[nodeId]; - } + /************************************ + Exposing Moment + ************************************/ + + function makeGlobal(shouldDeprecate) { + /*global ender:false */ + if (typeof ender !== 'undefined') { + return; + } + oldGlobalMoment = globalScope.moment; + if (shouldDeprecate) { + globalScope.moment = deprecate( + 'Accessing Moment through the global scope is ' + + 'deprecated, and will be removed in an upcoming ' + + 'release.', + moment); + } else { + globalScope.moment = moment; + } } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - if (!this.edges.hasOwnProperty(edgeId)) { - delete this.selectionObj.edges[edgeId]; - } + + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } else if (true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal === true) { + // release the global variable + globalScope.moment = oldGlobalMoment; + } + + return moment; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + makeGlobal(true); + } else { + makeGlobal(); } - } - }; + }).call(this); + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) /***/ }, -/* 61 */ +/* 59 */ /***/ function(module, exports, __webpack_require__) { - var util = __webpack_require__(1); - var Node = __webpack_require__(40); - var Edge = __webpack_require__(37); - var Hammer = __webpack_require__(45); - - /** - * clears the toolbar div element of children + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 + * http://eightmedia.github.io/hammer.js * - * @private - */ - exports._clearManipulatorBar = function() { - this._recursiveDOMDelete(this.manipulationDiv); - this.manipulationDOM = {}; - - this._cleanManipulatorHammers(); - - this._manipulationReleaseOverload = function () {}; - delete this.sectors['support']['nodes']['targetNode']; - delete this.sectors['support']['nodes']['targetViaNode']; - this.controlNodesActive = false; - this.freezeSimulation(false); - }; - + * Copyright (c) 2014 Jorik Tangelder ; + * Licensed under the MIT license */ - exports._cleanManipulatorHammers = function() { - // clean hammer bindings - if (this.manipulationHammers.length != 0) { - for (var i = 0; i < this.manipulationHammers.length; i++) { - this.manipulationHammers[i].dispose(); - } - this.manipulationHammers = []; - } - }; + (function(window, undefined) { + 'use strict'; /** - * Manipulation UI temporarily overloads certain functions to extend or replace them. To be able to restore - * these functions to their original functionality, we saved them in this.cachedFunctions. - * This function restores these functions to their original function. + * @main + * @module hammer * - * @private + * @class Hammer + * @static */ - exports._restoreOverloadedFunctions = function() { - for (var functionName in this.cachedFunctions) { - if (this.cachedFunctions.hasOwnProperty(functionName)) { - this[functionName] = this.cachedFunctions[functionName]; - delete this.cachedFunctions[functionName]; - } - } - }; /** - * Enable or disable edit-mode. + * Hammer, use this to create instances + * ```` + * var hammertime = new Hammer(myElement); + * ```` * - * @private + * @method Hammer + * @param {HTMLElement} element + * @param {Object} [options={}] + * @return {Hammer.Instance} */ - exports._toggleEditMode = function() { - this.editMode = !this.editMode; - var toolbar = this.manipulationDiv; - var closeDiv = this.closeDiv; - var editModeDiv = this.editModeDiv; - if (this.editMode == true) { - toolbar.style.display="block"; - closeDiv.style.display="block"; - editModeDiv.style.display="none"; - this._bindHammerToDiv(closeDiv,'_toggleEditMode'); - } - else { - toolbar.style.display="none"; - closeDiv.style.display="none"; - editModeDiv.style.display="block"; - } - this._createManipulatorBar() + var Hammer = function Hammer(element, options) { + return new Hammer.Instance(element, options || {}); }; /** - * main function, creates the main toolbar. Removes functions bound to the select event. Binds all the buttons of the toolbar. - * - * @private + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} */ - exports._createManipulatorBar = function() { - // remove bound functions - if (this.boundFunction) { - this.off('select', this.boundFunction); - } + Hammer.VERSION = '1.1.3'; - this._cleanManipulatorHammers(); + /** + * default settings. + * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled + * by setting it's name (like `swipe`) to false. + * You can set the defaults for all instances by changing this object before creating an instance. + * @example + * ```` + * Hammer.defaults.drag = false; + * Hammer.defaults.behavior.touchAction = 'pan-y'; + * delete Hammer.defaults.behavior.userSelect; + * ```` + * @property defaults + * @type {Object} + */ + Hammer.defaults = { + /** + * this setting object adds styles and attributes to the element to prevent the browser from doing + * its native behavior. The css properties are auto prefixed for the browsers when needed. + * @property defaults.behavior + * @type {Object} + */ + behavior: { + /** + * Disables text selection to improve the dragging gesture. When the value is `none` it also sets + * `onselectstart=false` for IE on the element. Mainly for desktop browsers. + * @property defaults.behavior.userSelect + * @type {String} + * @default 'none' + */ + userSelect: 'none', - var locale = this.constants.locales[this.constants.locale]; + /** + * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). + * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. + * @property defaults.behavior.touchAction + * @type {String} + * @default: 'pan-y' + */ + touchAction: 'pan-y', - if (this.edgeBeingEdited !== undefined) { - this.edgeBeingEdited._disableControlNodes(); - this.edgeBeingEdited = undefined; - this.selectedControlNode = null; - this.controlNodesActive = false; - this._redraw(); - } - - // restore overloaded functions - this._restoreOverloadedFunctions(); + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @property defaults.behavior.touchCallout + * @type {String} + * @default 'none' + */ + touchCallout: 'none', - // resume calculation - this.freezeSimulation(false); + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', - // reset global variables - this.blockConnectingEdgeSelection = false; - this.forceAppendSelection = false; - this.manipulationDOM = {}; + /** + * Specifies that an entire element should be draggable instead of its contents. + * Mainly for desktop browsers. + * @property defaults.behavior.userDrag + * @type {String} + * @default 'none' + */ + userDrag: 'none', - if (this.editMode == true) { - while (this.manipulationDiv.hasChildNodes()) { - this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. + * + * If you don't specify an alpha value, Safari on iPhone applies a default alpha value + * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). + * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. + * @property defaults.behavior.tapHighlightColor + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' } + }; - this.manipulationDOM['addNodeSpan'] = document.createElement('div'); - this.manipulationDOM['addNodeSpan'].className = 'network-manipulationUI add'; - - this.manipulationDOM['addNodeLabelSpan'] = document.createElement('div'); - this.manipulationDOM['addNodeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['addNodeLabelSpan'].innerHTML = locale['addNode']; - this.manipulationDOM['addNodeSpan'].appendChild(this.manipulationDOM['addNodeLabelSpan']); + /** + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document + */ + Hammer.DOCUMENT = document; - this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; + /** + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} + */ + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; - this.manipulationDOM['addEdgeSpan'] = document.createElement('div'); - this.manipulationDOM['addEdgeSpan'].className = 'network-manipulationUI connect'; - this.manipulationDOM['addEdgeLabelSpan'] = document.createElement('div'); - this.manipulationDOM['addEdgeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['addEdgeLabelSpan'].innerHTML = locale['addEdge']; - this.manipulationDOM['addEdgeSpan'].appendChild(this.manipulationDOM['addEdgeLabelSpan']); + /** + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} + */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); - this.manipulationDiv.appendChild(this.manipulationDOM['addNodeSpan']); - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); - this.manipulationDiv.appendChild(this.manipulationDOM['addEdgeSpan']); + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); - if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { - this.manipulationDOM['seperatorLineDiv2'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv2'].className = 'network-seperatorLine'; + /** + * detect if we want to support mouseevents at all + * @property NO_MOUSEEVENTS + * @type {Boolean} + */ + Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; - this.manipulationDOM['editNodeSpan'] = document.createElement('div'); - this.manipulationDOM['editNodeSpan'].className = 'network-manipulationUI edit node'; - this.manipulationDOM['editNodeLabelSpan'] = document.createElement('div'); - this.manipulationDOM['editNodeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['editNodeLabelSpan'].innerHTML = locale['editNode']; - this.manipulationDOM['editNodeSpan'].appendChild(this.manipulationDOM['editNodeLabelSpan']); + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv2']); - this.manipulationDiv.appendChild(this.manipulationDOM['editNodeSpan']); - } - else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { - this.manipulationDOM['seperatorLineDiv3'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv3'].className = 'network-seperatorLine'; + /** + * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` + * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) + * @property EVENT_TYPES + * @private + * @writeOnce + * @type {Object} + */ + var EVENT_TYPES = {}; - this.manipulationDOM['editEdgeSpan'] = document.createElement('div'); - this.manipulationDOM['editEdgeSpan'].className = 'network-manipulationUI edit edge'; - this.manipulationDOM['editEdgeLabelSpan'] = document.createElement('div'); - this.manipulationDOM['editEdgeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['editEdgeLabelSpan'].innerHTML = locale['editEdge']; - this.manipulationDOM['editEdgeSpan'].appendChild(this.manipulationDOM['editEdgeLabelSpan']); + /** + * direction strings, for safe comparisons + * @property DIRECTION_DOWN|LEFT|UP|RIGHT + * @final + * @type {String} + * @default 'down' 'left' 'up' 'right' + */ + var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; + var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; + var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; + var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv3']); - this.manipulationDiv.appendChild(this.manipulationDOM['editEdgeSpan']); - } - if (this._selectionIsEmpty() == false) { - this.manipulationDOM['seperatorLineDiv4'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv4'].className = 'network-seperatorLine'; + /** + * pointertype strings, for safe comparisons + * @property POINTER_MOUSE|TOUCH|PEN + * @final + * @type {String} + * @default 'mouse' 'touch' 'pen' + */ + var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; + var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; + var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; - this.manipulationDOM['deleteSpan'] = document.createElement('div'); - this.manipulationDOM['deleteSpan'].className = 'network-manipulationUI delete'; - this.manipulationDOM['deleteLabelSpan'] = document.createElement('div'); - this.manipulationDOM['deleteLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['deleteLabelSpan'].innerHTML = locale['del']; - this.manipulationDOM['deleteSpan'].appendChild(this.manipulationDOM['deleteLabelSpan']); + /** + * eventtypes + * @property EVENT_START|MOVE|END|RELEASE|TOUCH + * @final + * @type {String} + * @default 'start' 'change' 'move' 'end' 'release' 'touch' + */ + var EVENT_START = Hammer.EVENT_START = 'start'; + var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; + var EVENT_END = Hammer.EVENT_END = 'end'; + var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; + var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv4']); - this.manipulationDiv.appendChild(this.manipulationDOM['deleteSpan']); - } + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; - // bind the icons - this._bindHammerToDiv(this.manipulationDOM['addNodeSpan'],'_createAddNodeToolbar'); - this._bindHammerToDiv(this.manipulationDOM['addEdgeSpan'],'_createAddEdgeToolbar'); - this._bindHammerToDiv(this.closeDiv,'_toggleEditMode'); + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; - if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { - this._bindHammerToDiv(this.manipulationDOM['editNodeSpan'],'_editNode'); - } - else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { - this._bindHammerToDiv(this.manipulationDOM['editEdgeSpan'],'_createEditEdgeToolbar'); - } - if (this._selectionIsEmpty() == false) { - this._bindHammerToDiv(this.manipulationDOM['deleteSpan'],'_deleteSelected'); - } + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; - var me = this; - this.boundFunction = me._createManipulatorBar; - this.on('select', this.boundFunction); - } - else { - while (this.editModeDiv.hasChildNodes()) { - this.editModeDiv.removeChild(this.editModeDiv.firstChild); + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; } - this.manipulationDOM['editModeSpan'] = document.createElement('div'); - this.manipulationDOM['editModeSpan'].className = 'network-manipulationUI edit editmode'; - this.manipulationDOM['editModeLabelSpan'] = document.createElement('div'); - this.manipulationDOM['editModeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['editModeLabelSpan'].innerHTML = locale['edit']; - this.manipulationDOM['editModeSpan'].appendChild(this.manipulationDOM['editModeLabelSpan']); - - this.editModeDiv.appendChild(this.manipulationDOM['editModeSpan']); + // find what eventtypes we add listeners to + Event.determineEventTypes(); - this._bindHammerToDiv(this.manipulationDOM['editModeSpan'],'_toggleEditMode'); - } - }; + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); + }); + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); - exports._bindHammerToDiv = function(domElement, funct) { - var hammer = Hammer(domElement, {prevent_default: true}); - hammer.on('touch', this[funct].bind(this)); - this.manipulationHammers.push(hammer); + // Hammer is ready...! + Hammer.READY = true; } - /** - * Create the toolbar for adding Nodes + * @module hammer * - * @private + * @class Utils + * @static */ - exports._createAddNodeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - if (this.boundFunction) { - this.off('select', this.boundFunction); - } + var Utils = Hammer.utils = { + /** + * extend method, could also be used for cloning when `dest` is an empty object. + * changes the dest object + * @method extend + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] do a merge + * @return {Object} dest + */ + extend: function extend(dest, src, merge) { + for(var key in src) { + if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { + continue; + } + dest[key] = src[key]; + } + return dest; + }, - var locale = this.constants.locales[this.constants.locale]; + /** + * simple addEventListener wrapper + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + on: function on(element, type, handler) { + element.addEventListener(type, handler, false); + }, - this.manipulationDOM = {}; - this.manipulationDOM['backSpan'] = document.createElement('div'); - this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; - this.manipulationDOM['backLabelSpan'] = document.createElement('div'); - this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; - this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); + /** + * simple removeEventListener wrapper + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); + }, - this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; + /** + * forEach over arrays and objects + * @method each + * @param {Object|Array} obj + * @param {Function} iterator + * @param {any} iterator.item + * @param {Number} iterator.index + * @param {Object|Array} iterator.obj the source object + * @param {Object} context value to use as `this` in the iterator + */ + each: function each(obj, iterator, context) { + var i, len; - this.manipulationDOM['descriptionSpan'] = document.createElement('div'); - this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; - this.manipulationDOM['descriptionLabelSpan'] = document.createElement('div'); - this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['addDescription']; - this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); + // native forEach on arrays + if('forEach' in obj) { + obj.forEach(iterator, context); + // arrays + } else if(obj.length !== undefined) { + for(i = 0, len = obj.length; i < len; i++) { + if(iterator.call(context, obj[i], i, obj) === false) { + return; + } + } + // objects + } else { + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; + } + } + } + }, - this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); - this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); + /** + * find if a string contains the string using indexOf + * @method inStr + * @param {String} src + * @param {String} find + * @return {Boolean} found + */ + inStr: function inStr(src, find) { + return src.indexOf(find) > -1; + }, - // bind the icon - this._bindHammerToDiv(this.manipulationDOM['backSpan'],'_createManipulatorBar'); + /** + * find if a array contains the object using indexOf or a simple polyfill + * @method inArray + * @param {String} src + * @param {String} find + * @return {Boolean|Number} false when not found, or the index + */ + inArray: function inArray(src, find) { + if(src.indexOf) { + var index = src.indexOf(find); + return (index === -1) ? false : index; + } else { + for(var i = 0, len = src.length; i < len; i++) { + if(src[i] === find) { + return i; + } + } + return false; + } + }, - // we use the boundFunction so we can reference it when we unbind it from the "select" event. - var me = this; - this.boundFunction = me._addNode; - this.on('select', this.boundFunction); - }; + /** + * convert an array-like object (`arguments`, `touchlist`) to an array + * @method toArray + * @param {Object} obj + * @return {Array} + */ + toArray: function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + }, + /** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ + hasParent: function hasParent(node, parent) { + while(node) { + if(node == parent) { + return true; + } + node = node.parentNode; + } + return false; + }, - /** - * create the toolbar to connect nodes - * - * @private - */ - exports._createAddEdgeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - this._unselectAll(true); - this.freezeSimulation(true); + /** + * get the center of all the touches + * @method getCenter + * @param {Array} touches + * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties + */ + getCenter: function getCenter(touches) { + var pageX = [], + pageY = [], + clientX = [], + clientY = [], + min = Math.min, + max = Math.max; - if (this.boundFunction) { - this.off('select', this.boundFunction); - } + // no need to loop when only one touch + if(touches.length === 1) { + return { + pageX: touches[0].pageX, + pageY: touches[0].pageY, + clientX: touches[0].clientX, + clientY: touches[0].clientY + }; + } - var locale = this.constants.locales[this.constants.locale]; + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); - this._unselectAll(); - this.forceAppendSelection = false; - this.blockConnectingEdgeSelection = true; + return { + pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, + pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, + clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, + clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 + }; + }, - this.manipulationDOM = {}; - this.manipulationDOM['backSpan'] = document.createElement('div'); - this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; - this.manipulationDOM['backLabelSpan'] = document.createElement('div'); - this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; - this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); + /** + * calculate the velocity between two points. unit is in px per ms. + * @method getVelocity + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + * @return {Object} velocity `x` and `y` + */ + getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { + return { + x: Math.abs(deltaX / deltaTime) || 0, + y: Math.abs(deltaY / deltaTime) || 0 + }; + }, - this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; + /** + * calculate the angle between two coordinates + * @method getAngle + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {Number} angle + */ + getAngle: function getAngle(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - this.manipulationDOM['descriptionSpan'] = document.createElement('div'); - this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; - this.manipulationDOM['descriptionLabelSpan'] = document.createElement('div'); - this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['edgeDescription']; - this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); - - this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); - this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); + return Math.atan2(y, x) * 180 / Math.PI; + }, - // bind the icon - this._bindHammerToDiv(this.manipulationDOM['backSpan'],'_createManipulatorBar'); + /** + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` + */ + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); - // we use the boundFunction so we can reference it when we unbind it from the "select" event. - var me = this; - this.boundFunction = me._handleConnect; - this.on('select', this.boundFunction); + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, - // temporarily overload functions - this.cachedFunctions["_handleTouch"] = this._handleTouch; - this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload; - this.cachedFunctions["_handleDragStart"] = this._handleDragStart; - this.cachedFunctions["_handleDragEnd"] = this._handleDragEnd; - this.cachedFunctions["_handleOnHold"] = this._handleOnHold; - this._handleTouch = this._handleConnect; - this._manipulationReleaseOverload = function () {}; - this._handleOnHold = function () {}; - this._handleDragStart = function () {}; - this._handleDragEnd = this._finishConnect; + /** + * calculate the distance between two touches + * @method getDistance + * @param {Touch}touch1 + * @param {Touch} touch2 + * @return {Number} distance + */ + getDistance: function getDistance(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - // redraw to show the unselect - this._redraw(); - }; + return Math.sqrt((x * x) + (y * y)); + }, - /** - * create the toolbar to edit edges - * - * @private - */ - exports._createEditEdgeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - this.controlNodesActive = true; + /** + * calculate the scale factor between two touchLists + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @method getScale + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} scale + */ + getScale: function getScale(start, end) { + // need two fingers... + if(start.length >= 2 && end.length >= 2) { + return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); + } + return 1; + }, - if (this.boundFunction) { - this.off('select', this.boundFunction); - } + /** + * calculate the rotation degrees between two touchLists + * @method getRotation + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} rotation + */ + getRotation: function getRotation(start, end) { + // need two fingers + if(start.length >= 2 && end.length >= 2) { + return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); + } + return 0; + }, - this.edgeBeingEdited = this._getSelectedEdge(); - this.edgeBeingEdited._enableControlNodes(); + /** + * find out if the direction is vertical * + * @method isVertical + * @param {String} direction matches `DIRECTION_UP|DOWN` + * @return {Boolean} is_vertical + */ + isVertical: function isVertical(direction) { + return direction == DIRECTION_UP || direction == DIRECTION_DOWN; + }, - var locale = this.constants.locales[this.constants.locale]; + /** + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} + */ + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); - this.manipulationDOM = {}; - this.manipulationDOM['backSpan'] = document.createElement('div'); - this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; - this.manipulationDOM['backLabelSpan'] = document.createElement('div'); - this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; - this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); + for(var i = 0; i < prefixes.length; i++) { + var p = prop; + // prefixes + if(prefixes[i]) { + p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + } - this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; + } + } + }, - this.manipulationDOM['descriptionSpan'] = document.createElement('div'); - this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; - this.manipulationDOM['descriptionLabelSpan'] = document.createElement('div'); - this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['editEdgeDescription']; - this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); + /** + * toggle browser default behavior by setting css properties. + * `userSelect='none'` also sets `element.onselectstart` to false + * `userDrag='none'` also sets `element.ondragstart` to false + * + * @method toggleBehavior + * @param {HtmlElement} element + * @param {Object} props + * @param {Boolean} [toggle=true] + */ + toggleBehavior: function toggleBehavior(element, props, toggle) { + if(!props || !element || !element.style) { + return; + } - this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); - this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); - // bind the icon - this._bindHammerToDiv(this.manipulationDOM['backSpan'],'_createManipulatorBar'); + var falseFn = toggle && function() { + return false; + }; - // temporarily overload functions - this.cachedFunctions["_handleTouch"] = this._handleTouch; - this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload; - this.cachedFunctions["_handleTap"] = this._handleTap; - this.cachedFunctions["_handleDragStart"] = this._handleDragStart; - this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; - this._handleTouch = this._selectControlNode; - this._handleTap = function () {}; - this._handleOnDrag = this._controlNodeDrag; - this._handleDragStart = function () {} - this._manipulationReleaseOverload = this._releaseControlNode; + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; + } + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; + } + }, - // redraw to show the unselect - this._redraw(); + /** + * convert a string with underscores to camelCase + * so prevent_default becomes preventDefault + * @param {String} str + * @return {String} camelCaseStr + */ + toCamelCase: function toCamelCase(str) { + return str.replace(/[_-]([a-z])/g, function(s) { + return s[1].toUpperCase(); + }); + } }; /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. - * - * @private + * @module hammer */ - exports._selectControlNode = function(pointer) { - this.edgeBeingEdited.controlNodes.from.unselect(); - this.edgeBeingEdited.controlNodes.to.unselect(); - this.selectedControlNode = this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(pointer.x),this._YconvertDOMtoCanvas(pointer.y)); - if (this.selectedControlNode !== null) { - this.selectedControlNode.select(); - this.freezeSimulation(true); - } - this._redraw(); - }; - - /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. - * - * @private + * @class Event + * @static */ - exports._controlNodeDrag = function(event) { - var pointer = this._getPointer(event.gesture.center); - if (this.selectedControlNode !== null && this.selectedControlNode !== undefined) { - this.selectedControlNode.x = this._XconvertDOMtoCanvas(pointer.x); - this.selectedControlNode.y = this._YconvertDOMtoCanvas(pointer.y); - } - this._redraw(); - }; + var Event = Hammer.event = { + /** + * when touch events have been fired, this is true + * this is used to stop mouse events + * @property prevent_mouseevents + * @private + * @type {Boolean} + */ + preventMouseEvents: false, + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, - /** - * - * @param pointer - * @private - */ - exports._releaseControlNode = function(pointer) { - var newNode = this._getNodeAt(pointer); - if (newNode !== null) { - if (this.edgeBeingEdited.controlNodes.from.selected == true) { - this.edgeBeingEdited._restoreControlNodes(); - this._editEdge(newNode.id, this.edgeBeingEdited.to.id); - this.edgeBeingEdited.controlNodes.from.unselect(); - } - if (this.edgeBeingEdited.controlNodes.to.selected == true) { - this.edgeBeingEdited._restoreControlNodes(); - this._editEdge(this.edgeBeingEdited.from.id, newNode.id); - this.edgeBeingEdited.controlNodes.to.unselect(); - } - } - else { - this.edgeBeingEdited._restoreControlNodes(); - } - this.freezeSimulation(false); - this._redraw(); - }; + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, - /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. - * - * @private - */ - exports._handleConnect = function(pointer) { - if (this._getSelectedNodeCount() == 0) { - var node = this._getNodeAt(pointer); + /** + * simple event binder with a hook and support for multiple types + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + on: function on(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.on(element, type, handler); + hook && hook(type); + }); + }, - if (node != null) { - if (node.clusterSize > 1) { - alert(this.constants.locales[this.constants.locale]['createEdgeError']) - } - else { - this._selectObject(node,false); - var supportNodes = this.sectors['support']['nodes']; + /** + * simple event unbinder with a hook and support for multiple types + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + off: function off(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.off(element, type, handler); + hook && hook(type); + }); + }, - // create a node the temporary line can look at - supportNodes['targetNode'] = new Node({id:'targetNode'},{},{},this.constants); - var targetNode = supportNodes['targetNode']; - targetNode.x = node.x; - targetNode.y = node.y; + /** + * the core touch event handler. + * this finds out if we should to detect gestures + * @method onTouch + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Function} handler + * @return onTouchHandler {Function} the core event handler + */ + onTouch: function onTouch(element, eventType, handler) { + var self = this; - // create a temporary edge - this.edges['connectionEdge'] = new Edge({id:"connectionEdge",from:node.id,to:targetNode.id}, this, this.constants); - var connectionEdge = this.edges['connectionEdge']; - connectionEdge.from = node; - connectionEdge.connected = true; - connectionEdge.options.smoothCurves = {enabled: true, - dynamic: false, - type: "continuous", - roundness: 0.5 - }; - connectionEdge.selected = true; - connectionEdge.to = targetNode; + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; - var me = this; - this._handleOnDrag = function(event) { - var pointer = this._getPointer(event.gesture.center); - var connectionEdge = me.edges['connectionEdge']; - connectionEdge.to.x = me._XconvertDOMtoCanvas(pointer.x); - connectionEdge.to.y = me._YconvertDOMtoCanvas(pointer.y); - me._redraw(); - }; + // if we are in a mouseevent, but there has been a touchevent triggered in this session + // we want to do nothing. simply break out of the event. + if(isMouse && self.preventMouseEvents) { + return; - this.moving = true; - this.start(); - } - } - } - }; + // mousebutton must be down + } else if(isMouse && eventType == EVENT_START && ev.button === 0) { + self.preventMouseEvents = false; + self.shouldDetect = true; + } else if(isPointer && eventType == EVENT_START) { + self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); + // just a valid start event, but no mouse + } else if(!isMouse && eventType == EVENT_START) { + self.preventMouseEvents = true; + self.shouldDetect = true; + } - exports._finishConnect = function(event) { - if (this._getSelectedNodeCount() == 1) { - var pointer = this._getPointer(event.gesture.center); - // restore the drag function - this._handleOnDrag = this.cachedFunctions["_handleOnDrag"]; - delete this.cachedFunctions["_handleOnDrag"]; + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } - // remember the edge id - var connectFromId = this.edges['connectionEdge'].fromId; + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); + } - // remove the temporary nodes and edge - delete this.edges['connectionEdge']; - delete this.sectors['support']['nodes']['targetNode']; - delete this.sectors['support']['nodes']['targetViaNode']; + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + if(triggerType == EVENT_END) { + self.preventMouseEvents = false; + self.shouldDetect = false; + PointerEvent.reset(); + // update the pointerevent object after the detection + } - var node = this._getNodeAt(pointer); - if (node != null) { - if (node.clusterSize > 1) { - alert(this.constants.locales[this.constants.locale]["createEdgeError"]) - } - else { - this._createEdge(connectFromId,node.id); - this._createManipulatorBar(); - } - } - this._unselectAll(); - } - }; + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } + }; + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, - /** - * Adds a node on the specified location - */ - exports._addNode = function() { - if (this._selectionIsEmpty() && this.editMode == true) { - var positionObject = this._pointerToPositionObject(this.pointerPosition); - var defaultData = {id:util.randomUUID(),x:positionObject.left,y:positionObject.top,label:"new",allowedToMoveX:true,allowedToMoveY:true}; - if (this.triggerFunctions.add) { - if (this.triggerFunctions.add.length == 2) { - var me = this; - this.triggerFunctions.add(defaultData, function(finalizedData) { - me.nodesData.add(finalizedData); - me._createManipulatorBar(); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for add does not support two arguments (data,callback)'); - this._createManipulatorBar(); - this.moving = true; - this.start(); - } - } - else { - this.nodesData.add(defaultData); - this._createManipulatorBar(); - this.moving = true; - this.start(); - } - } - }; + /** + * the core detection method + * this finds out what hammer-touch-events to trigger + * @method doDetect + * @param {Object} ev + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {HTMLElement} element + * @param {Function} handler + * @return {String} triggerType matches `EVENT_START|MOVE|END` + */ + doDetect: function doDetect(ev, eventType, element, handler) { + var touchList = this.getTouchList(ev, eventType); + var touchListLength = touchList.length; + var triggerType = eventType; + var triggerChange = touchList.trigger; // used by fakeMultitouch plugin + var changedLength = touchListLength; + // at each touchstart-like event we want also want to trigger a TOUCH event... + if(eventType == EVENT_START) { + triggerChange = EVENT_TOUCH; + // ...the same for a touchend-like event + } else if(eventType == EVENT_END) { + triggerChange = EVENT_RELEASE; - /** - * connect two nodes with a new edge. - * - * @private - */ - exports._createEdge = function(sourceNodeId,targetNodeId) { - if (this.editMode == true) { - var defaultData = {from:sourceNodeId, to:targetNodeId}; - if (this.triggerFunctions.connect) { - if (this.triggerFunctions.connect.length == 2) { - var me = this; - this.triggerFunctions.connect(defaultData, function(finalizedData) { - me.edgesData.add(finalizedData); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for connect does not support two arguments (data,callback)'); - this.moving = true; - this.start(); - } - } - else { - this.edgesData.add(defaultData); - this.moving = true; - this.start(); - } - } - }; - - /** - * connect two nodes with a new edge. - * - * @private - */ - exports._editEdge = function(sourceNodeId,targetNodeId) { - if (this.editMode == true) { - var defaultData = {id: this.edgeBeingEdited.id, from:sourceNodeId, to:targetNodeId}; - if (this.triggerFunctions.editEdge) { - if (this.triggerFunctions.editEdge.length == 2) { - var me = this; - this.triggerFunctions.editEdge(defaultData, function(finalizedData) { - me.edgesData.update(finalizedData); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for edit does not support two arguments (data, callback)'); - this.moving = true; - this.start(); - } - } - else { - this.edgesData.update(defaultData); - this.moving = true; - this.start(); - } - } - }; - - /** - * Create the toolbar to edit the selected node. The label and the color can be changed. Other colors are derived from the chosen color. - * - * @private - */ - exports._editNode = function() { - if (this.triggerFunctions.edit && this.editMode == true) { - var node = this._getSelectedNode(); - var data = {id:node.id, - label: node.label, - group: node.options.group, - shape: node.options.shape, - color: { - background:node.options.color.background, - border:node.options.color.border, - highlight: { - background:node.options.color.highlight.background, - border:node.options.color.highlight.border + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); } - }}; - if (this.triggerFunctions.edit.length == 2) { - var me = this; - this.triggerFunctions.edit(data, function (finalizedData) { - me.nodesData.update(finalizedData); - me._createManipulatorBar(); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for edit does not support two arguments (data, callback)'); - } - } - else { - throw new Error('No edit function has been bound to this button'); - } - }; + // after there are still touches on the screen, + // we just want to trigger a MOVE event. so change the START or END to a MOVE + // but only after detection has been started, the first time we actualy want a START + if(changedLength > 0 && this.started) { + triggerType = EVENT_MOVE; + } + // detection has been started, we keep track of this, see above + this.started = true; + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); - /** - * delete everything in the selection - * - * @private - */ - exports._deleteSelected = function() { - if (!this._selectionIsEmpty() && this.editMode == true) { - if (!this._clusterInSelection()) { - var selectedNodes = this.getSelectedNodes(); - var selectedEdges = this.getSelectedEdges(); - if (this.triggerFunctions.del) { - var me = this; - var data = {nodes: selectedNodes, edges: selectedEdges}; - if (this.triggerFunctions.del.length == 2) { - this.triggerFunctions.del(data, function (finalizedData) { - me.edgesData.remove(finalizedData.edges); - me.nodesData.remove(finalizedData.nodes); - me._unselectAll(); - me.moving = true; - me.start(); - }); + // trigger the triggerType event before the change (TOUCH, RELEASE) events + // but the END event should be at last + if(eventType != EVENT_END) { + handler.call(Detection, evData); } - else { - throw new Error('The function for delete does not support two arguments (data, callback)') + + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; + + handler.call(Detection, evData); + + evData.eventType = triggerType; + delete evData.changedLength; } - } - else { - this.edgesData.remove(selectedEdges); - this.nodesData.remove(selectedNodes); - this._unselectAll(); - this.moving = true; - this.start(); - } - } - else { - alert(this.constants.locales[this.constants.locale]["deleteClusterError"]); - } - } - }; + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); -/***/ }, -/* 62 */ -/***/ function(module, exports, __webpack_require__) { + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; + } - var util = __webpack_require__(1); - var Hammer = __webpack_require__(45); + return triggerType; + }, - exports._cleanNavigation = function() { - // clean hammer bindings - if (this.navigationHammers.length != 0) { - for (var i = 0; i < this.navigationHammers.length; i++) { - this.navigationHammers[i].dispose(); - } - this.navigationHammers = []; - } + /** + * we have different events for each device/browser + * determine what we need and set them in the EVENT_TYPES constant + * the `onTouch` method is bind to these properties. + * @method determineEventTypes + * @return {Object} events + */ + determineEventTypes: function determineEventTypes() { + var types; + if(Hammer.HAS_POINTEREVENTS) { + if(window.PointerEvent) { + types = [ + 'pointerdown', + 'pointermove', + 'pointerup pointercancel lostpointercapture' + ]; + } else { + types = [ + 'MSPointerDown', + 'MSPointerMove', + 'MSPointerUp MSPointerCancel MSLostPointerCapture' + ]; + } + } else if(Hammer.NO_MOUSEEVENTS) { + types = [ + 'touchstart', + 'touchmove', + 'touchend touchcancel' + ]; + } else { + types = [ + 'touchstart mousedown', + 'touchmove mousemove', + 'touchend touchcancel mouseup' + ]; + } - this._navigationReleaseOverload = function () {}; + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, - // clean up previous navigation items - if (this.navigationDOM && this.navigationDOM['wrapper'] && this.navigationDOM['wrapper'].parentNode) { - this.navigationDOM['wrapper'].parentNode.removeChild(this.navigationDOM['wrapper']); - } - }; + /** + * create touchList depending on the event + * @method getTouchList + * @param {Object} ev + * @param {String} eventType + * @return {Array} touches + */ + getTouchList: function getTouchList(ev, eventType) { + // get the fake pointerEvent touchlist + if(Hammer.HAS_POINTEREVENTS) { + return PointerEvent.getTouchList(); + } - /** - * Creation of the navigation controls nodes. They are drawn over the rest of the nodes and are not affected by scale and translation - * they have a triggerFunction which is called on click. If the position of the navigation controls is dependent - * on this.frame.canvas.clientWidth or this.frame.canvas.clientHeight, we flag horizontalAlignLeft and verticalAlignTop false. - * This means that the location will be corrected by the _relocateNavigation function on a size change of the canvas. - * - * @private - */ - exports._loadNavigationElements = function() { - this._cleanNavigation(); + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; + } - this.navigationDOM = {}; - var navigationDivs = ['up','down','left','right','zoomIn','zoomOut','zoomExtends']; - var navigationDivActions = ['_moveUp','_moveDown','_moveLeft','_moveRight','_zoomIn','_zoomOut','_zoomExtent']; + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; - this.navigationDOM['wrapper'] = document.createElement('div'); - this.frame.appendChild(this.navigationDOM['wrapper']); + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); + } + identifiers.push(touch.identifier); + }); - for (var i = 0; i < navigationDivs.length; i++) { - this.navigationDOM[navigationDivs[i]] = document.createElement('div'); - this.navigationDOM[navigationDivs[i]].className = 'network-navigation ' + navigationDivs[i]; - this.navigationDOM['wrapper'].appendChild(this.navigationDOM[navigationDivs[i]]); + return touchList; + } - var hammer = Hammer(this.navigationDOM[navigationDivs[i]], {prevent_default: true}); - hammer.on('touch', this[navigationDivActions[i]].bind(this)); - this.navigationHammers.push(hammer); - } + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, - this._navigationReleaseOverload = this._stopMovement; + /** + * collect basic event data + * @method collectEventData + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Array} touches + * @param {Object} ev + * @return {Object} ev + */ + collectEventData: function collectEventData(element, eventType, touches, ev) { + // find out pointerType + var pointerType = POINTER_TOUCH; + if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { + pointerType = POINTER_MOUSE; + } else if(PointerEvent.matchType(POINTER_PEN, ev)) { + pointerType = POINTER_PEN; + } - }; + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, + /** + * prevent the browser default actions + * mostly used to disable scrolling of the browser + */ + preventDefault: function() { + var srcEvent = this.srcEvent; + srcEvent.preventManipulation && srcEvent.preventManipulation(); + srcEvent.preventDefault && srcEvent.preventDefault(); + }, - /** - * this stops all movement induced by the navigation buttons - * - * @private - */ - exports._zoomExtent = function(event) { - this.zoomExtent({duration:700}); - event.stopPropagation(); - }; + /** + * stop bubbling the event up to its parents + */ + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, - /** - * this stops all movement induced by the navigation buttons - * - * @private - */ - exports._stopMovement = function() { - this._xStopMoving(); - this._yStopMoving(); - this._stopZoom(); + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); + } + }; + } }; /** - * move the screen up - * By using the increments, instead of adding a fixed number to the translation, we keep fluent and - * instant movement. The onKeypress event triggers immediately, then pauses, then triggers frequently - * To avoid this behaviour, we do the translation in the start loop. + * @module hammer * - * @private + * @class PointerEvent + * @static */ - exports._moveUp = function(event) { - this.yIncrement = this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, + /** + * get the pointers as an array + * @method getTouchList + * @return {Array} touchlist + */ + getTouchList: function getTouchList() { + var touchlist = []; + // we can use forEach since pointerEvents only is in IE10 + Utils.each(this.pointers, function(pointer) { + touchlist.push(pointer); + }); + return touchlist; + }, - /** - * move the screen down - * @private - */ - exports._moveDown = function(event) { - this.yIncrement = -this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + /** + * update the position of a pointer + * @method updatePointer + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Object} pointerEvent + */ + updatePointer: function updatePointer(eventType, pointerEvent) { + if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { + delete this.pointers[pointerEvent.pointerId]; + } else { + pointerEvent.identifier = pointerEvent.pointerId; + this.pointers[pointerEvent.pointerId] = pointerEvent; + } + }, + /** + * check if ev matches pointertype + * @method matchType + * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` + * @param {PointerEvent} ev + */ + matchType: function matchType(pointerType, ev) { + if(!ev.pointerType) { + return false; + } - /** - * move the screen left - * @private - */ - exports._moveLeft = function(event) { - this.xIncrement = this.constants.keyboard.speed.x; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + var pt = ev.pointerType, + types = {}; + types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); + types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); + types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); + return types[pointerType]; + }, - /** - * move the screen right - * @private - */ - exports._moveRight = function(event) { - this.xIncrement = -this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; + } }; /** - * Zoom in, using the same method as the movement. - * @private + * @module hammer + * + * @class Detection + * @static */ - exports._zoomIn = function(event) { - this.zoomIncrement = this.constants.keyboard.speed.zoom; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], + // data of the current Hammer.gesture detection session + current: null, - /** - * Zoom out - * @private - */ - exports._zoomOut = function(event) { - this.zoomIncrement = -this.constants.keyboard.speed.zoom; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, + // when this becomes true, no gestures are fired + stopped: false, - /** - * Stop zooming and unhighlight the zoom controls - * @private - */ - exports._stopZoom = function(event) { - this.zoomIncrement = 0; - event && event.preventDefault(); - }; + /** + * start Hammer.gesture detection + * @method startDetect + * @param {Hammer.Instance} inst + * @param {Object} eventData + */ + startDetect: function startDetect(inst, eventData) { + // already busy with a Hammer.gesture detection on an element + if(this.current) { + return; + } + this.stopped = false; - /** - * Stop moving in the Y direction and unHighlight the up and down - * @private - */ - exports._yStopMoving = function(event) { - this.yIncrement = 0; - event && event.preventDefault(); - }; + // holds current session + this.current = { + inst: inst, // reference to HammerInstance we're working for + startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc + lastEvent: false, // last eventData + lastCalcEvent: false, // last eventData for calculations. + futureCalcEvent: false, // last eventData for calculations. + lastCalcData: {}, // last lastCalcData + name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc + }; + this.detect(eventData); + }, - /** - * Stop moving in the X direction and unHighlight left and right. - * @private - */ - exports._xStopMoving = function(event) { - this.xIncrement = 0; - event && event.preventDefault(); - }; + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; + } + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); -/***/ }, -/* 63 */ -/***/ function(module, exports, __webpack_require__) { + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; - exports._resetLevels = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.preassignedLevel == false) { - node.level = -1; - node.hierarchyEnumerated = false; - } - } - } - }; + // call Hammer.gesture handlers + Utils.each(this.gestures, function triggerGesture(gesture) { + // only when the instance options have enabled this gesture + if(!this.stopped && inst.enabled && instOptions[gesture.name]) { + gesture.handler.call(gesture, eventData, inst); + } + }, this); - /** - * This is the main function to layout the nodes in a hierarchical way. - * It checks if the node details are supplied correctly - * - * @private - */ - exports._setupHierarchicalLayout = function() { - if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { - // get the size of the largest hubs and check if the user has defined a level for a node. - var hubsize = 0; - var node, nodeId; - var definedLevel = false; - var undefinedLevel = false; + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; + } - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level != -1) { - definedLevel = true; + if(eventData.eventType == EVENT_END) { + this.stopDetect(); } - else { - undefinedLevel = true; + + return eventData; + }, + + /** + * clear the Hammer.gesture vars + * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected + * to stop other Hammer.gestures from being fired + * @method stopDetect + */ + stopDetect: function stopDetect() { + // clone current data to the store as the previous gesture + // used for the double tap gesture, since this is an other gesture detect session + this.previous = Utils.extend({}, this.current); + + // reset the current + this.current = null; + this.stopped = true; + }, + + /** + * calculate velocity, angle and direction + * @method getVelocityData + * @param {Object} ev + * @param {Object} center + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + */ + getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { + var cur = this.current, + recalc = false, + calcEv = cur.lastCalcEvent, + calcData = cur.lastCalcData; + + if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { + center = calcEv.center; + deltaTime = ev.timeStamp - calcEv.timeStamp; + deltaX = ev.center.clientX - calcEv.center.clientX; + deltaY = ev.center.clientY - calcEv.center.clientY; + recalc = true; } - if (hubsize < node.edges.length) { - hubsize = node.edges.length; + + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; } - } - } - // if the user defined some levels but not all, alert and run without hierarchical layout - if (undefinedLevel == true && definedLevel == true) { - throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); - this.zoomExtent({duration:0},true,this.constants.clustering.enabled); - if (!this.constants.clustering.enabled) { - this.start(); - } - } - else { - // setup the system to use hierarchical method. - this._changeConstants(); + if(!cur.lastCalcEvent || recalc) { + calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); + calcData.angle = Utils.getAngle(center, ev.center); + calcData.direction = Utils.getDirection(center, ev.center); - // define levels if undefined by the users. Based on hubsize - if (undefinedLevel == true) { - if (this.constants.hierarchicalLayout.layout == "hubsize") { - this._determineLevels(hubsize); + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; } - else { - this._determineLevelsDirected(false); + + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, + + /** + * extend eventData for Hammer.gestures + * @method extendEventData + * @param {Object} ev + * @return {Object} ev + */ + extendEventData: function extendEventData(ev) { + var cur = this.current, + startEv = cur.startEvent, + lastEv = cur.lastEvent || startEv; + + // update the start touchlist to calculate the scale/rotation + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + startEv.touches = []; + Utils.each(ev.touches, function(touch) { + startEv.touches.push({ + clientX: touch.clientX, + clientY: touch.clientY + }); + }); } - } - // check the distribution of the nodes per level. - var distribution = this._getDistribution(); + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - // place the nodes on the canvas. This also stablilizes the system. - this._placeNodesByHierarchy(distribution); + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - // start the simulation. - this.start(); - } - } - }; + Utils.extend(ev, { + startEvent: startEv, + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, - /** - * This function places the nodes on the canvas based on the hierarchial distribution. - * - * @param {Object} distribution | obtained by the function this._getDistribution() - * @private - */ - exports._placeNodesByHierarchy = function(distribution) { - var nodeId, node; + distance: Utils.getDistance(startEv.center, ev.center), + angle: Utils.getAngle(startEv.center, ev.center), + direction: Utils.getDirection(startEv.center, ev.center), + scale: Utils.getScale(startEv.touches, ev.touches), + rotation: Utils.getRotation(startEv.touches, ev.touches) + }); - // start placing all the level 0 nodes first. Then recursively position their branches. - for (var level in distribution) { - if (distribution.hasOwnProperty(level)) { + return ev; + }, - for (nodeId in distribution[level].nodes) { - if (distribution[level].nodes.hasOwnProperty(nodeId)) { - node = distribution[level].nodes[nodeId]; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (node.xFixed) { - node.x = distribution[level].minPos; - node.xFixed = false; + /** + * register new gesture + * @method register + * @param {Object} gesture object, see `gestures/` for documentation + * @return {Array} gestures + */ + register: function register(gesture) { + // add an enable gesture options if there is no given + var options = gesture.defaults || {}; + if(options[gesture.name] === undefined) { + options[gesture.name] = true; + } - distribution[level].minPos += distribution[level].nodeSpacing; - } - } - else { - if (node.yFixed) { - node.y = distribution[level].minPos; - node.yFixed = false; + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); - distribution[level].minPos += distribution[level].nodeSpacing; + // set its index + gesture.index = gesture.index || 1000; + + // add Hammer.gesture to the list + this.gestures.push(gesture); + + // sort the list by index + this.gestures.sort(function(a, b) { + if(a.index < b.index) { + return -1; } - } - this._placeBranchNodes(node.edges,node.id,distribution,node.level); - } - } - } - } + if(a.index > b.index) { + return 1; + } + return 0; + }); - // stabilize the system after positioning. This function calls zoomExtent. - this._stabilize(); + return this.gestures; + } }; /** - * This function get the distribution of levels based on hubsize + * @module hammer + */ + + /** + * create new hammer instance + * all methods should return the instance itself, so it is chainable. * - * @returns {Object} - * @private + * @class Instance + * @constructor + * @param {HTMLElement} element + * @param {Object} [options={}] options are merged with `Hammer.defaults` + * @return {Hammer.Instance} */ - exports._getDistribution = function() { - var distribution = {}; - var nodeId, node, level; + Hammer.Instance = function(element, options) { + var self = this; - // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. - // the fix of X is removed after the x value has been set. - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.xFixed = true; - node.yFixed = true; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - else { - node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - if (distribution[node.level] === undefined) { - distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; - } - distribution[node.level].amount += 1; - distribution[node.level].nodes[nodeId] = node; - } - } + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - // determine the largest amount of nodes of all levels - var maxCount = 0; - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - if (maxCount < distribution[level].amount) { - maxCount = distribution[level].amount; - } - } - } + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - // set the initial position and spacing of each nodes accordingly - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; - distribution[level].nodeSpacing /= (distribution[level].amount + 1); - distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; + + /** + * options, merged with the defaults + * options with an _ are converted to camelCase + * @property options + * @type {Object} + */ + Utils.each(options, function(value, name) { + delete options[name]; + options[Utils.toCamelCase(name)] = value; + }); + + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + + // add some css to the element to prevent the browser from doing its native behavoir + if(this.options.behavior) { + Utils.toggleBehavior(this.element, this.options.behavior, true); } - } - return distribution; + /** + * event start handler on the element to start the detection + * @property eventStartHandler + * @type {Object} + */ + this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { + if(self.enabled && ev.eventType == EVENT_START) { + Detection.startDetect(self, ev); + } else if(ev.eventType == EVENT_TOUCH) { + Detection.detect(ev); + } + }); + + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; }; + Hammer.Instance.prototype = { + /** + * bind events to the instance + * @method on + * @chainable + * @param {String} gestures multiple gestures by splitting with a space + * @param {Function} handler + * @param {Object} handler.ev event object + */ + on: function onEvent(gestures, handler) { + var self = this; + Event.on(self.element, gestures, handler, function(type) { + self.eventHandlers.push({ gesture: type, handler: handler }); + }); + return self; + }, - /** - * this function allocates nodes in levels based on the recursive branching from the largest hubs. - * - * @param hubsize - * @private - */ - exports._determineLevels = function(hubsize) { - var nodeId, node; + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; - // determine hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.edges.length == hubsize) { - node.level = 0; - } - } - } + Event.off(self.element, gestures, handler, function(type) { + var index = Utils.inArray({ gesture: type, handler: handler }); + if(index !== false) { + self.eventHandlers.splice(index, 1); + } + }); + return self; + }, - // branch from hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level == 0) { - this._setLevel(1,node.edges,node.id); - } - } - } - }; + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; + } + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; + // trigger on the target if it is in the instance element, + // this is for event delegation tricks + var element = this.element; + if(Utils.hasParent(eventData.target, element)) { + element = eventData.target; + } - /** - * this function allocates nodes in levels based on the direction of the edges - * - * @param hubsize - * @private - */ - exports._determineLevelsDirected = function() { - var nodeId, node, firstNode; - var minLevel = 10000; + element.dispatchEvent(event); + return this; + }, - // set first node to source - firstNode = this.nodes[this.nodeIndices[0]]; - firstNode.level = minLevel; - this._setLevelDirected(minLevel,firstNode.edges,firstNode.id); + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, - // get the minimum level - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - minLevel = node.level < minLevel ? node.level : minLevel; - } - } + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; - // subtract the minimum from the set so we have a range starting from 0 - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.level -= minLevel; + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); + + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); + } + + this.eventHandlers = []; + + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + + return null; } - } }; /** - * Since hierarchical layout does not support: - * - smooth curves (based on the physics), - * - clustering (based on dynamic node counts) - * - * We disable both features so there will be no problems. - * - * @private + * @module gestures */ - exports._changeConstants = function() { - this.constants.clustering.enabled = false; - this.constants.physics.barnesHut.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this._loadSelectedForceSolver(); - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.dynamic = false; - } - this._configureSmoothCurves(); - - var config = this.constants.hierarchicalLayout; - config.levelSeparation = Math.abs(config.levelSeparation); - if (config.direction == "RL" || config.direction == "DU") { - config.levelSeparation *= -1; - } - - if (config.direction == "RL" || config.direction == "LR") { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "vertical"; - } - } - else { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "horizontal"; - } - } - }; - - /** - * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes - * on a X position that ensures there will be no overlap. + * Move with x fingers (default 1) around on the page. + * Preventing the default browser behavior is a good way to improve feel and working. + * ```` + * hammertime.on("drag", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` * - * @param edges - * @param parentId - * @param distribution - * @param parentLevel - * @private + * @class Drag + * @static + */ + /** + * @event drag + * @param {Object} ev + */ + /** + * @event dragstart + * @param {Object} ev + */ + /** + * @event dragend + * @param {Object} ev + */ + /** + * @event drapleft + * @param {Object} ev + */ + /** + * @event dragright + * @param {Object} ev + */ + /** + * @event dragup + * @param {Object} ev + */ + /** + * @event dragdown + * @param {Object} ev */ - exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } - // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. - var nodeMoved = false; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (childNode.xFixed && childNode.level > parentLevel) { - childNode.xFixed = false; - childNode.x = distribution[childNode.level].minPos; - nodeMoved = true; - } - } - else { - if (childNode.yFixed && childNode.level > parentLevel) { - childNode.yFixed = false; - childNode.y = distribution[childNode.level].minPos; - nodeMoved = true; - } - } + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - if (nodeMoved == true) { - distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; - if (childNode.edges.length > 1) { - this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); - } - } - } - }; + function dragGesture(ev, inst) { + var cur = Detection.current; + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { + return; + } - /** - * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. - * - * @param level - * @param edges - * @param parentId - * @private - */ - exports._setLevel = function(level, edges, parentId) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } - if (childNode.level == -1 || childNode.level > level) { - childNode.level = level; - if (childNode.edges.length > 1) { - this._setLevel(level+1, childNode.edges, childNode.id); - } - } - } - }; + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; + case EVENT_MOVE: + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.distance < inst.options.dragMinDistance && + cur.name != name) { + return; + } - /** - * this function is called recursively to enumerate the branched of the first node and give each node a level based on edge direction - * - * @param level - * @param edges - * @param parentId - * @private - */ - exports._setLevelDirected = function(level, edges, parentId) { - this.nodes[parentId].hierarchyEnumerated = true; - var childNode, direction; - for (var i = 0; i < edges.length; i++) { - direction = 1; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - direction = -1; - } - else { - childNode = edges[i].to; - } - if (childNode.level == -1) { - childNode.level = level + direction; - } - } + var startCenter = cur.startEvent.center; - for (var i = 0; i < edges.length; i++) { - if (edges[i].toId == parentId) {childNode = edges[i].from;} - else {childNode = edges[i].to;} + // we are dragging! + if(cur.name != name) { + cur.name = name; + if(inst.options.dragDistanceCorrection && ev.distance > 0) { + // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. + // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. + // It might be useful to save the original start point somewhere + var factor = Math.abs(inst.options.dragMinDistance / ev.distance); + startCenter.pageX += ev.deltaX * factor; + startCenter.pageY += ev.deltaY * factor; + startCenter.clientX += ev.deltaX * factor; + startCenter.clientY += ev.deltaY * factor; - if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { - this._setLevelDirected(childNode.level, childNode.edges, childNode.id); - } - } - }; + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; + } - /** - * Unfix nodes - * - * @private - */ - exports._restoreNodes = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.nodes[nodeId].xFixed = false; - this.nodes[nodeId].yFixed = false; - } - } - }; + // keep direction on the axis that the drag gesture started on + var lastDirection = cur.lastEvent.direction; + if(ev.dragLockToAxis && lastDirection !== ev.direction) { + if(Utils.isVertical(lastDirection)) { + ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; + } else { + ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + } + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } -/***/ }, -/* 64 */ -/***/ function(module, exports, __webpack_require__) { + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 - * http://eightmedia.github.io/hammer.js - * - * Copyright (c) 2014 Jorik Tangelder ; - * Licensed under the MIT license */ + var isVertical = Utils.isVertical(ev.direction); - (function(window, undefined) { - 'use strict'; + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - /** - * @main - * @module hammer - * - * @class Hammer - * @static - */ + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; - /** - * Hammer, use this to create instances - * ```` - * var hammertime = new Hammer(myElement); - * ```` - * - * @method Hammer - * @param {HTMLElement} element - * @param {Object} [options={}] - * @return {Hammer.Instance} - */ - var Hammer = function Hammer(element, options) { - return new Hammer.Instance(element, options || {}); - }; + case EVENT_END: + triggered = false; + break; + } + } - /** - * version, as defined in package.json - * the value will be set at each build - * @property VERSION - * @final - * @type {String} - */ - Hammer.VERSION = '1.1.3'; + Hammer.gestures.Drag = { + name: name, + index: 50, + handler: dragGesture, + defaults: { + /** + * minimal movement that have to be made before the drag event gets triggered + * @property dragMinDistance + * @type {Number} + * @default 10 + */ + dragMinDistance: 10, - /** - * default settings. - * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled - * by setting it's name (like `swipe`) to false. - * You can set the defaults for all instances by changing this object before creating an instance. - * @example - * ```` - * Hammer.defaults.drag = false; - * Hammer.defaults.behavior.touchAction = 'pan-y'; - * delete Hammer.defaults.behavior.userSelect; - * ```` - * @property defaults - * @type {Object} - */ - Hammer.defaults = { - /** - * this setting object adds styles and attributes to the element to prevent the browser from doing - * its native behavior. The css properties are auto prefixed for the browsers when needed. - * @property defaults.behavior - * @type {Object} - */ - behavior: { - /** - * Disables text selection to improve the dragging gesture. When the value is `none` it also sets - * `onselectstart=false` for IE on the element. Mainly for desktop browsers. - * @property defaults.behavior.userSelect - * @type {String} - * @default 'none' - */ - userSelect: 'none', + /** + * Set dragDistanceCorrection to true to make the starting point of the drag + * be calculated from where the drag was triggered, not from where the touch started. + * Useful to avoid a jerk-starting drag, which can make fine-adjustments + * through dragging difficult, and be visually unappealing. + * @property dragDistanceCorrection + * @type {Boolean} + * @default true + */ + dragDistanceCorrection: true, - /** - * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). - * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. - * @property defaults.behavior.touchAction - * @type {String} - * @default: 'pan-y' - */ - touchAction: 'pan-y', + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @property defaults.behavior.touchCallout - * @type {String} - * @default 'none' - */ - touchCallout: 'none', + /** + * prevent default browser behavior when dragging occurs + * be careful with it, it makes the element a blocking element + * when you are using the drag gesture, it is a good practice to set this true + * @property dragBlockHorizontal + * @type {Boolean} + * @default false + */ + dragBlockHorizontal: false, - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, - /** - * Specifies that an entire element should be draggable instead of its contents. - * Mainly for desktop browsers. - * @property defaults.behavior.userDrag - * @type {String} - * @default 'none' - */ - userDrag: 'none', + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. - * - * If you don't specify an alpha value, Safari on iPhone applies a default alpha value - * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). - * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. - * @property defaults.behavior.tapHighlightColor - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: 'rgba(0,0,0,0)' - } - }; + /** + * drag lock only kicks in when distance > dragLockMinDistance + * This way, locking occurs only when the distance has become large enough to reliably determine the direction + * @property dragLockMinDistance + * @type {Number} + * @default 25 + */ + dragLockMinDistance: 25 + } + }; + })('drag'); /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document + * @module gestures */ - Hammer.DOCUMENT = document; - /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} + * trigger a simple gesture event, so you can do anything in your handler. + * only usable if you know what your doing... + * + * @class Gesture + * @static */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} + * @event gesture + * @param {Object} ev */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + Hammer.gestures.Gesture = { + name: 'gesture', + index: 1337, + handler: function releaseGesture(ev, inst) { + inst.trigger(this.name, ev); + } + }; /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} + * @module gestures */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); - /** - * detect if we want to support mouseevents at all - * @property NO_MOUSEEVENTS - * @type {Boolean} + * Touch stays at the same place for x time + * + * @class Hold + * @static */ - Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; - /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 + * @event hold + * @param {Object} ev */ - Hammer.CALCULATE_INTERVAL = 25; /** - * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` - * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) - * @property EVENT_TYPES - * @private - * @writeOnce - * @type {Object} + * @param {String} name */ - var EVENT_TYPES = {}; + (function(name) { + var timer; - /** - * direction strings, for safe comparisons - * @property DIRECTION_DOWN|LEFT|UP|RIGHT - * @final - * @type {String} - * @default 'down' 'left' 'up' 'right' - */ - var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; - var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; - var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; - var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; + + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); + + // set the gesture so we can check in the timeout if it still is + current.name = name; + + // set timer and if after the timeout it still is hold, + // we trigger the hold event + timer = setTimeout(function() { + if(current && current.name == name) { + inst.trigger(name, ev); + } + }, options.holdTimeout); + break; + + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; + + case EVENT_RELEASE: + clearTimeout(timer); + break; + } + } + + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, + + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture + }; + })('hold'); /** - * pointertype strings, for safe comparisons - * @property POINTER_MOUSE|TOUCH|PEN - * @final - * @type {String} - * @default 'mouse' 'touch' 'pen' + * @module gestures */ - var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; - var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; - var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; - /** - * eventtypes - * @property EVENT_START|MOVE|END|RELEASE|TOUCH - * @final - * @type {String} - * @default 'start' 'change' 'move' 'end' 'release' 'touch' + * when a touch is being released from the page + * + * @class Release + * @static */ - var EVENT_START = Hammer.EVENT_START = 'start'; - var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; - var EVENT_END = Hammer.EVENT_END = 'end'; - var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; - var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; - /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false + * @event release + * @param {Object} ev */ - Hammer.READY = false; + Hammer.gestures.Release = { + name: 'release', + index: Infinity, + handler: function releaseGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + inst.trigger(this.name, ev); + } + } + }; /** - * plugins namespace - * @property plugins - * @type {Object} + * @module gestures */ - Hammer.plugins = Hammer.plugins || {}; - /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} + * triggers swipe events when the end velocity is above the threshold + * for best usage, set `preventDefault` (on the drag gesture) to `true` + * ```` + * hammertime.on("dragleft swipeleft", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Swipe + * @static */ - Hammer.gestures = Hammer.gestures || {}; - /** - * setup events to detect gestures on the document - * this function is called when creating an new instance - * @private + * @event swipe + * @param {Object} ev */ - function setup() { - if(Hammer.READY) { - return; - } + /** + * @event swipeleft + * @param {Object} ev + */ + /** + * @event swiperight + * @param {Object} ev + */ + /** + * @event swipeup + * @param {Object} ev + */ + /** + * @event swipedown + * @param {Object} ev + */ + Hammer.gestures.Swipe = { + name: 'swipe', + index: 40, + defaults: { + /** + * @property swipeMinTouches + * @type {Number} + * @default 1 + */ + swipeMinTouches: 1, - // find what eventtypes we add listeners to - Event.determineEventTypes(); + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, - // Hammer is ready...! - Hammer.READY = true; - } + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; + + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; + } + + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.velocityX > options.swipeVelocityX || + ev.velocityY > options.swipeVelocityY) { + // trigger swipe events + inst.trigger(this.name, ev); + inst.trigger(this.name + ev.direction, ev); + } + } + } + }; /** - * @module hammer + * @module gestures + */ + /** + * Single tap and a double tap on a place * - * @class Utils + * @class Tap * @static */ - var Utils = Hammer.utils = { - /** - * extend method, could also be used for cloning when `dest` is an empty object. - * changes the dest object - * @method extend - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge=false] do a merge - * @return {Object} dest - */ - extend: function extend(dest, src, merge) { - for(var key in src) { - if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { - continue; - } - dest[key] = src[key]; - } - return dest; - }, + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev + */ - /** - * simple addEventListener wrapper - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - on: function on(element, type, handler) { - element.addEventListener(type, handler, false); - }, + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; - /** - * simple removeEventListener wrapper - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - off: function off(element, type, handler) { - element.removeEventListener(type, handler, false); - }, + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - /** - * forEach over arrays and objects - * @method each - * @param {Object|Array} obj - * @param {Function} iterator - * @param {any} iterator.item - * @param {Number} iterator.index - * @param {Object|Array} iterator.obj the source object - * @param {Object} context value to use as `this` in the iterator - */ - each: function each(obj, iterator, context) { - var i, len; + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - // native forEach on arrays - if('forEach' in obj) { - obj.forEach(iterator, context); - // arrays - } else if(obj.length !== undefined) { - for(i = 0, len = obj.length; i < len; i++) { - if(iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - // objects - } else { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - } - }, + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - /** - * find if a string contains the string using indexOf - * @method inStr - * @param {String} src - * @param {String} find - * @return {Boolean} found - */ - inStr: function inStr(src, find) { - return src.indexOf(find) > -1; - }, + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; - /** - * find if a array contains the object using indexOf or a simple polyfill - * @method inArray - * @param {String} src - * @param {String} find - * @return {Boolean|Number} false when not found, or the index - */ - inArray: function inArray(src, find) { - if(src.indexOf) { - var index = src.indexOf(find); - return (index === -1) ? false : index; - } else { - for(var i = 0, len = src.length; i < len; i++) { - if(src[i] === find) { - return i; + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } + + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } } - } - return false; + break; } - }, + } - /** - * convert an array-like object (`arguments`, `touchlist`) to an array - * @method toArray - * @param {Object} obj - * @return {Array} - */ - toArray: function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - }, + Hammer.gestures.Tap = { + name: name, + index: 100, + handler: tapGesture, + defaults: { + /** + * max time of a tap, this is for the slow tappers + * @property tapMaxTime + * @type {Number} + * @default 250 + */ + tapMaxTime: 250, - /** - * find if a node is in the given parent - * @method hasParent - * @param {HTMLElement} node - * @param {HTMLElement} parent - * @return {Boolean} found - */ - hasParent: function hasParent(node, parent) { - while(node) { - if(node == parent) { - return true; - } - node = node.parentNode; - } - return false; - }, + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - // no need to loop when only one touch - if(touches.length === 1) { - return { - pageX: touches[0].pageX, - pageY: touches[0].pageY, - clientX: touches[0].clientX, - clientY: touches[0].clientY - }; + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, + + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 } + }; + })('tap'); - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); + /** + * @module gestures + */ + /** + * when a touch is being touched at the page + * + * @class Touch + * @static + */ + /** + * @event touch + * @param {Object} ev + */ + Hammer.gestures.Touch = { + name: 'touch', + index: -Infinity, + defaults: { + /** + * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, + * but it improves gestures like transforming and dragging. + * be careful with using this, it can be very annoying for users to be stuck on the page + * @property preventDefault + * @type {Boolean} + * @default false + */ + preventDefault: false, - return { - pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, - pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, - clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, - clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 - }; + /** + * disable mouse events, so only touch (or pen!) input triggers events + * @property preventMouse + * @type {Boolean} + * @default false + */ + preventMouse: false }, + handler: function touchGesture(ev, inst) { + if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { + ev.stopDetect(); + return; + } - /** - * calculate the velocity between two points. unit is in px per ms. - * @method getVelocity - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - * @return {Object} velocity `x` and `y` - */ - getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { - return { - x: Math.abs(deltaX / deltaTime) || 0, - y: Math.abs(deltaY / deltaTime) || 0 - }; - }, + if(inst.options.preventDefault) { + ev.preventDefault(); + } - /** - * calculate the angle between two coordinates - * @method getAngle - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {Number} angle - */ - getAngle: function getAngle(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); + } + } + }; - return Math.atan2(y, x) * 180 / Math.PI; - }, + /** + * @module gestures + */ + /** + * User want to scale or rotate with 2 fingers + * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the + * `preventDefault` option. + * + * @class Transform + * @static + */ + /** + * @event transform + * @param {Object} ev + */ + /** + * @event transformstart + * @param {Object} ev + */ + /** + * @event transformend + * @param {Object} ev + */ + /** + * @event pinchin + * @param {Object} ev + */ + /** + * @event pinchout + * @param {Object} ev + */ + /** + * @event rotate + * @param {Object} ev + */ - /** - * do a small comparision to get the direction between two touches. - * @method getDirection - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` - */ - getDirection: function getDirection(touch1, touch2) { - var x = Math.abs(touch1.clientX - touch2.clientX), - y = Math.abs(touch1.clientY - touch2.clientY); + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - return Math.sqrt((x * x) + (y * y)); - }, + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); - /** - * calculate the scale factor between two touchLists - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @method getScale - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} scale - */ - getScale: function getScale(start, end) { - // need two fingers... - if(start.length >= 2 && end.length >= 2) { - return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); - } - return 1; - }, + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; + } - /** - * calculate the rotation degrees between two touchLists - * @method getRotation - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} rotation - */ - getRotation: function getRotation(start, end) { - // need two fingers - if(start.length >= 2 && end.length >= 2) { - return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); - } - return 0; - }, + // we are transforming! + Detection.current.name = name; - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - /** - * set css properties with their prefixes - * @param {HTMLElement} element - * @param {String} prop - * @param {String} value - * @param {Boolean} [toggle=true] - * @return {Boolean} - */ - setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { - var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; - prop = Utils.toCamelCase(prop); + inst.trigger(name, ev); // basic transform event - for(var i = 0; i < prefixes.length; i++) { - var p = prop; - // prefixes - if(prefixes[i]) { - p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); - } + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } break; - } - } - }, - /** - * toggle browser default behavior by setting css properties. - * `userSelect='none'` also sets `element.onselectstart` to false - * `userDrag='none'` also sets `element.ondragstart` to false - * - * @method toggleBehavior - * @param {HtmlElement} element - * @param {Object} props - * @param {Boolean} [toggle=true] - */ - toggleBehavior: function toggleBehavior(element, props, toggle) { - if(!props || !element || !element.style) { - return; + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; } + } - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); - - var falseFn = toggle && function() { - return false; - }; - - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; - } - }, + Hammer.gestures.Transform = { + name: name, + index: 45, + defaults: { + /** + * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 + * @property transformMinScale + * @type {Number} + * @default 0.01 + */ + transformMinScale: 0.01, - /** - * convert a string with underscores to camelCase - * so prevent_default becomes preventDefault - * @param {String} str - * @return {String} camelCaseStr - */ - toCamelCase: function toCamelCase(str) { - return str.replace(/[_-]([a-z])/g, function(s) { - return s[1].toUpperCase(); - }); - } - }; + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 + }, + handler: transformGesture + }; + })('transform'); /** * @module hammer */ - /** - * @class Event - * @static - */ - var Event = Hammer.event = { - /** - * when touch events have been fired, this is true - * this is used to stop mouse events - * @property prevent_mouseevents - * @private - * @type {Boolean} - */ - preventMouseEvents: false, - - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, - - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, - /** - * simple event binder with a hook and support for multiple types - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - on: function on(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.on(element, type, handler); - hook && hook(type); - }); - }, + // AMD export + if(true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + // commonjs export + } else if(typeof module !== 'undefined' && module.exports) { + module.exports = Hammer; + // browser export + } else { + window.Hammer = Hammer; + } - /** - * simple event unbinder with a hook and support for multiple types - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - off: function off(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.off(element, type, handler); - hook && hook(type); - }); - }, + })(window); - /** - * the core touch event handler. - * this finds out if we should to detect gestures - * @method onTouch - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Function} handler - * @return onTouchHandler {Function} the core event handler - */ - onTouch: function onTouch(element, eventType, handler) { - var self = this; +/***/ }, +/* 60 */ +/***/ function(module, exports, __webpack_require__) { - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; + var util = __webpack_require__(1); + var RepulsionMixin = __webpack_require__(68); + var HierarchialRepulsionMixin = __webpack_require__(69); + var BarnesHutMixin = __webpack_require__(70); - // if we are in a mouseevent, but there has been a touchevent triggered in this session - // we want to do nothing. simply break out of the event. - if(isMouse && self.preventMouseEvents) { - return; + /** + * Toggling barnes Hut calculation on and off. + * + * @private + */ + exports._toggleBarnesHut = function () { + this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; + this._loadSelectedForceSolver(); + this.moving = true; + this.start(); + }; - // mousebutton must be down - } else if(isMouse && eventType == EVENT_START && ev.button === 0) { - self.preventMouseEvents = false; - self.shouldDetect = true; - } else if(isPointer && eventType == EVENT_START) { - self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); - // just a valid start event, but no mouse - } else if(!isMouse && eventType == EVENT_START) { - self.preventMouseEvents = true; - self.shouldDetect = true; - } - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } + /** + * This loads the node force solver based on the barnes hut or repulsion algorithm + * + * @private + */ + exports._loadSelectedForceSolver = function () { + // this overloads the this._calculateNodeForces + if (this.constants.physics.barnesHut.enabled == true) { + this._clearMixin(RepulsionMixin); + this._clearMixin(HierarchialRepulsionMixin); - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } + this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity; + this.constants.physics.springLength = this.constants.physics.barnesHut.springLength; + this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant; + this.constants.physics.damping = this.constants.physics.barnesHut.damping; - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - if(triggerType == EVENT_END) { - self.preventMouseEvents = false; - self.shouldDetect = false; - PointerEvent.reset(); - // update the pointerevent object after the detection - } + this._loadMixin(BarnesHutMixin); + } + else if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._clearMixin(BarnesHutMixin); + this._clearMixin(RepulsionMixin); - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - }; + this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity; + this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength; + this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant; + this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping; - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, + this._loadMixin(HierarchialRepulsionMixin); + } + else { + this._clearMixin(BarnesHutMixin); + this._clearMixin(HierarchialRepulsionMixin); + this.barnesHutTree = undefined; - /** - * the core detection method - * this finds out what hammer-touch-events to trigger - * @method doDetect - * @param {Object} ev - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {HTMLElement} element - * @param {Function} handler - * @return {String} triggerType matches `EVENT_START|MOVE|END` - */ - doDetect: function doDetect(ev, eventType, element, handler) { - var touchList = this.getTouchList(ev, eventType); - var touchListLength = touchList.length; - var triggerType = eventType; - var triggerChange = touchList.trigger; // used by fakeMultitouch plugin - var changedLength = touchListLength; + this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity; + this.constants.physics.springLength = this.constants.physics.repulsion.springLength; + this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant; + this.constants.physics.damping = this.constants.physics.repulsion.damping; - // at each touchstart-like event we want also want to trigger a TOUCH event... - if(eventType == EVENT_START) { - triggerChange = EVENT_TOUCH; - // ...the same for a touchend-like event - } else if(eventType == EVENT_END) { - triggerChange = EVENT_RELEASE; + this._loadMixin(RepulsionMixin); + } + }; - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); - } + /** + * Before calculating the forces, we check if we need to cluster to keep up performance and we check + * if there is more than one node. If it is just one node, we dont calculate anything. + * + * @private + */ + exports._initializeForceCalculation = function () { + // stop calculation if there is only one node + if (this.nodeIndices.length == 1) { + this.nodes[this.nodeIndices[0]]._setForce(0, 0); + } + else { + // if there are too many nodes on screen, we cluster without repositioning + if (this.nodeIndices.length > this.constants.clustering.clusterThreshold && this.constants.clustering.enabled == true) { + this.clusterToFit(this.constants.clustering.reduceToNodes, false); + } - // after there are still touches on the screen, - // we just want to trigger a MOVE event. so change the START or END to a MOVE - // but only after detection has been started, the first time we actualy want a START - if(changedLength > 0 && this.started) { - triggerType = EVENT_MOVE; - } + // we now start the force calculation + this._calculateForces(); + } + }; - // detection has been started, we keep track of this, see above - this.started = true; - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + /** + * Calculate the external forces acting on the nodes + * Forces are caused by: edges, repulsing forces between nodes, gravity + * @private + */ + exports._calculateForces = function () { + // Gravity is required to keep separated groups from floating off + // the forces are reset to zero in this loop by using _setForce instead + // of _addForce - // trigger the triggerType event before the change (TOUCH, RELEASE) events - // but the END event should be at last - if(eventType != EVENT_END) { - handler.call(Detection, evData); - } + this._calculateGravitationalForces(); + this._calculateNodeForces(); - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; - - handler.call(Detection, evData); - - evData.eventType = triggerType; - delete evData.changedLength; - } - - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); - - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; - } - - return triggerType; - }, + if (this.constants.physics.springConstant > 0) { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this._calculateSpringForcesWithSupport(); + } + else { + if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._calculateHierarchicalSpringForces(); + } + else { + this._calculateSpringForces(); + } + } + } + }; - /** - * we have different events for each device/browser - * determine what we need and set them in the EVENT_TYPES constant - * the `onTouch` method is bind to these properties. - * @method determineEventTypes - * @return {Object} events - */ - determineEventTypes: function determineEventTypes() { - var types; - if(Hammer.HAS_POINTEREVENTS) { - if(window.PointerEvent) { - types = [ - 'pointerdown', - 'pointermove', - 'pointerup pointercancel lostpointercapture' - ]; - } else { - types = [ - 'MSPointerDown', - 'MSPointerMove', - 'MSPointerUp MSPointerCancel MSLostPointerCapture' - ]; - } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; - } else { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; - } - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, + /** + * Smooth curves are created by adding invisible nodes in the center of the edges. These nodes are also + * handled in the calculateForces function. We then use a quadratic curve with the center node as control. + * This function joins the datanodes and invisible (called support) nodes into one object. + * We do this so we do not contaminate this.nodes with the support nodes. + * + * @private + */ + exports._updateCalculationNodes = function () { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this.calculationNodes = {}; + this.calculationNodeIndices = []; - /** - * create touchList depending on the event - * @method getTouchList - * @param {Object} ev - * @param {String} eventType - * @return {Array} touches - */ - getTouchList: function getTouchList(ev, eventType) { - // get the fake pointerEvent touchlist - if(Hammer.HAS_POINTEREVENTS) { - return PointerEvent.getTouchList(); + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.calculationNodes[nodeId] = this.nodes[nodeId]; + } + } + var supportNodes = this.sectors['support']['nodes']; + for (var supportNodeId in supportNodes) { + if (supportNodes.hasOwnProperty(supportNodeId)) { + if (this.edges.hasOwnProperty(supportNodes[supportNodeId].parentEdgeId)) { + this.calculationNodes[supportNodeId] = supportNodes[supportNodeId]; } - - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; - } - - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; - - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); - } - identifiers.push(touch.identifier); - }); - - return touchList; + else { + supportNodes[supportNodeId]._setForce(0, 0); } + } + } - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, - - /** - * collect basic event data - * @method collectEventData - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Array} touches - * @param {Object} ev - * @return {Object} ev - */ - collectEventData: function collectEventData(element, eventType, touches, ev) { - // find out pointerType - var pointerType = POINTER_TOUCH; - if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { - pointerType = POINTER_MOUSE; - } else if(PointerEvent.matchType(POINTER_PEN, ev)) { - pointerType = POINTER_PEN; - } + for (var idx in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(idx)) { + this.calculationNodeIndices.push(idx); + } + } + } + else { + this.calculationNodes = this.nodes; + this.calculationNodeIndices = this.nodeIndices; + } + }; - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, - /** - * prevent the browser default actions - * mostly used to disable scrolling of the browser - */ - preventDefault: function() { - var srcEvent = this.srcEvent; - srcEvent.preventManipulation && srcEvent.preventManipulation(); - srcEvent.preventDefault && srcEvent.preventDefault(); - }, + /** + * this function applies the central gravity effect to keep groups from floating off + * + * @private + */ + exports._calculateGravitationalForces = function () { + var dx, dy, distance, node, i; + var nodes = this.calculationNodes; + var gravity = this.constants.physics.centralGravity; + var gravityForce = 0; - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, + for (i = 0; i < this.calculationNodeIndices.length; i++) { + node = nodes[this.calculationNodeIndices[i]]; + node.damping = this.constants.physics.damping; // possibly add function to alter damping properties of clusters. + // gravity does not apply when we are in a pocket sector + if (this._sector() == "default" && gravity != 0) { + dx = -node.x; + dy = -node.y; + distance = Math.sqrt(dx * dx + dy * dy); - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; + gravityForce = (distance == 0) ? 0 : (gravity / distance); + node.fx = dx * gravityForce; + node.fy = dy * gravityForce; } + else { + node.fx = 0; + node.fy = 0; + } + } }; + + /** - * @module hammer + * this function calculates the effects of the springs in the case of unsmooth curves. * - * @class PointerEvent - * @static + * @private */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, + exports._calculateSpringForces = function () { + var edgeLength, edge, edgeId; + var dx, dy, fx, fy, springForce, distance; + var edges = this.edges; - /** - * get the pointers as an array - * @method getTouchList - * @return {Array} touchlist - */ - getTouchList: function getTouchList() { - var touchlist = []; - // we can use forEach since pointerEvents only is in IE10 - Utils.each(this.pointers, function(pointer) { - touchlist.push(pointer); - }); - return touchlist; - }, + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + edgeLength = edge.physics.springLength; + // this implies that the edges between big clusters are longer + edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; - /** - * update the position of a pointer - * @method updatePointer - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Object} pointerEvent - */ - updatePointer: function updatePointer(eventType, pointerEvent) { - if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { - delete this.pointers[pointerEvent.pointerId]; - } else { - pointerEvent.identifier = pointerEvent.pointerId; - this.pointers[pointerEvent.pointerId] = pointerEvent; - } - }, + dx = (edge.from.x - edge.to.x); + dy = (edge.from.y - edge.to.y); + distance = Math.sqrt(dx * dx + dy * dy); - /** - * check if ev matches pointertype - * @method matchType - * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` - * @param {PointerEvent} ev - */ - matchType: function matchType(pointerType, ev) { - if(!ev.pointerType) { - return false; - } + if (distance == 0) { + distance = 0.01; + } - var pt = ev.pointerType, - types = {}; + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; - types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); - types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); - types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); - return types[pointerType]; - }, + fx = dx * springForce; + fy = dy * springForce; - /** - * reset the stored pointers - * @method reset - */ - reset: function resetList() { - this.pointers = {}; + edge.from.fx += fx; + edge.from.fy += fy; + edge.to.fx -= fx; + edge.to.fy -= fy; + } + } } + } }; + + /** - * @module hammer + * This function calculates the springforces on the nodes, accounting for the support nodes. * - * @class Detection - * @static + * @private */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], - - // data of the current Hammer.gesture detection session - current: null, - - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, - - // when this becomes true, no gestures are fired - stopped: false, - - /** - * start Hammer.gesture detection - * @method startDetect - * @param {Hammer.Instance} inst - * @param {Object} eventData - */ - startDetect: function startDetect(inst, eventData) { - // already busy with a Hammer.gesture detection on an element - if(this.current) { - return; - } + exports._calculateSpringForcesWithSupport = function () { + var edgeLength, edge, edgeId, combinedClusterSize; + var edges = this.edges; - this.stopped = false; + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + if (edge.via != null) { + var node1 = edge.to; + var node2 = edge.via; + var node3 = edge.from; - // holds current session - this.current = { - inst: inst, // reference to HammerInstance we're working for - startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc - lastEvent: false, // last eventData - lastCalcEvent: false, // last eventData for calculations. - futureCalcEvent: false, // last eventData for calculations. - lastCalcData: {}, // last lastCalcData - name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc - }; + edgeLength = edge.physics.springLength; - this.detect(eventData); - }, + combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; + // this implies that the edges between big clusters are longer + edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth; + this._calculateSpringForce(node1, node2, 0.5 * edgeLength); + this._calculateSpringForce(node2, node3, 0.5 * edgeLength); + } } + } + } + } + }; - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); - - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; - - // call Hammer.gesture handlers - Utils.each(this.gestures, function triggerGesture(gesture) { - // only when the instance options have enabled this gesture - if(!this.stopped && inst.enabled && instOptions[gesture.name]) { - gesture.handler.call(gesture, eventData, inst); - } - }, this); - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; - } + /** + * This is the code actually performing the calculation for the function above. It is split out to avoid repetition. + * + * @param node1 + * @param node2 + * @param edgeLength + * @private + */ + exports._calculateSpringForce = function (node1, node2, edgeLength) { + var dx, dy, fx, fy, springForce, distance; - if(eventData.eventType == EVENT_END) { - this.stopDetect(); - } + dx = (node1.x - node2.x); + dy = (node1.y - node2.y); + distance = Math.sqrt(dx * dx + dy * dy); - return eventData; - }, + if (distance == 0) { + distance = 0.01; + } - /** - * clear the Hammer.gesture vars - * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected - * to stop other Hammer.gestures from being fired - * @method stopDetect - */ - stopDetect: function stopDetect() { - // clone current data to the store as the previous gesture - // used for the double tap gesture, since this is an other gesture detect session - this.previous = Utils.extend({}, this.current); + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; - // reset the current - this.current = null; - this.stopped = true; - }, + fx = dx * springForce; + fy = dy * springForce; - /** - * calculate velocity, angle and direction - * @method getVelocityData - * @param {Object} ev - * @param {Object} center - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - */ - getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { - var cur = this.current, - recalc = false, - calcEv = cur.lastCalcEvent, - calcData = cur.lastCalcData; + node1.fx += fx; + node1.fy += fy; + node2.fx -= fx; + node2.fy -= fy; + }; - if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { - center = calcEv.center; - deltaTime = ev.timeStamp - calcEv.timeStamp; - deltaX = ev.center.clientX - calcEv.center.clientX; - deltaY = ev.center.clientY - calcEv.center.clientY; - recalc = true; - } - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; - } + exports._cleanupPhysicsConfiguration = function() { + if (this.physicsConfiguration !== undefined) { + while (this.physicsConfiguration.hasChildNodes()) { + this.physicsConfiguration.removeChild(this.physicsConfiguration.firstChild); + } - if(!cur.lastCalcEvent || recalc) { - calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); - calcData.angle = Utils.getAngle(center, ev.center); - calcData.direction = Utils.getDirection(center, ev.center); + this.physicsConfiguration.parentNode.removeChild(this.physicsConfiguration); + this.physicsConfiguration = undefined; + } + } - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; - } + /** + * Load the HTML for the physics config and bind it + * @private + */ + exports._loadPhysicsConfiguration = function () { + if (this.physicsConfiguration === undefined) { + this.backupConstants = {}; + util.deepExtend(this.backupConstants,this.constants); - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, + var maxGravitational = Math.max(20000, (-1 * this.constants.physics.barnesHut.gravitationalConstant) * 10); + var maxSpring = Math.min(0.05, this.constants.physics.barnesHut.springConstant * 10) - /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev - */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; + var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"]; + this.physicsConfiguration = document.createElement('div'); + this.physicsConfiguration.className = "PhysicsConfiguration"; + this.physicsConfiguration.innerHTML = '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
    Simulation Mode:
    Barnes HutRepulsionHierarchical
    ' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
    Options:
    ' + this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement); + this.optionsDiv = document.createElement("div"); + this.optionsDiv.style.fontSize = "14px"; + this.optionsDiv.style.fontFamily = "verdana"; + this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement); - // update the start touchlist to calculate the scale/rotation - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - startEv.touches = []; - Utils.each(ev.touches, function(touch) { - startEv.touches.push({ - clientX: touch.clientX, - clientY: touch.clientY - }); - }); - } + var rangeElement; + rangeElement = document.getElementById('graph_BH_gc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant"); + rangeElement = document.getElementById('graph_BH_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_BH_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_BH_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_BH_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping"); - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; + rangeElement = document.getElementById('graph_R_nd'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance"); + rangeElement = document.getElementById('graph_R_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_R_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_R_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_R_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping"); - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); + rangeElement = document.getElementById('graph_H_nd'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); + rangeElement = document.getElementById('graph_H_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_H_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_H_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_H_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping"); + rangeElement = document.getElementById('graph_H_direction'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction"); + rangeElement = document.getElementById('graph_H_levsep'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation"); + rangeElement = document.getElementById('graph_H_nspac'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing"); - Utils.extend(ev, { - startEvent: startEv, + var radioButton1 = document.getElementById("graph_physicsMethod1"); + var radioButton2 = document.getElementById("graph_physicsMethod2"); + var radioButton3 = document.getElementById("graph_physicsMethod3"); + radioButton2.checked = true; + if (this.constants.physics.barnesHut.enabled) { + radioButton1.checked = true; + } + if (this.constants.hierarchicalLayout.enabled) { + radioButton3.checked = true; + } - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + var graph_repositionNodes = document.getElementById("graph_repositionNodes"); + var graph_generateOptions = document.getElementById("graph_generateOptions"); - distance: Utils.getDistance(startEv.center, ev.center), - angle: Utils.getAngle(startEv.center, ev.center), - direction: Utils.getDirection(startEv.center, ev.center), - scale: Utils.getScale(startEv.touches, ev.touches), - rotation: Utils.getRotation(startEv.touches, ev.touches) - }); + graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this); + graph_repositionNodes.onclick = graphRepositionNodes.bind(this); + graph_generateOptions.onclick = graphGenerateOptions.bind(this); + if (this.constants.smoothCurves == true && this.constants.dynamicSmoothCurves == false) { + graph_toggleSmooth.style.background = "#A4FF56"; + } + else { + graph_toggleSmooth.style.background = "#FF8532"; + } - return ev; - }, - /** - * register new gesture - * @method register - * @param {Object} gesture object, see `gestures/` for documentation - * @return {Array} gestures - */ - register: function register(gesture) { - // add an enable gesture options if there is no given - var options = gesture.defaults || {}; - if(options[gesture.name] === undefined) { - options[gesture.name] = true; - } + switchConfigurations.apply(this); - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); + radioButton1.onchange = switchConfigurations.bind(this); + radioButton2.onchange = switchConfigurations.bind(this); + radioButton3.onchange = switchConfigurations.bind(this); + } + }; - // set its index - gesture.index = gesture.index || 1000; + /** + * This overwrites the this.constants. + * + * @param constantsVariableName + * @param value + * @private + */ + exports._overWriteGraphConstants = function (constantsVariableName, value) { + var nameArray = constantsVariableName.split("_"); + if (nameArray.length == 1) { + this.constants[nameArray[0]] = value; + } + else if (nameArray.length == 2) { + this.constants[nameArray[0]][nameArray[1]] = value; + } + else if (nameArray.length == 3) { + this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value; + } + }; - // add Hammer.gesture to the list - this.gestures.push(gesture); - // sort the list by index - this.gestures.sort(function(a, b) { - if(a.index < b.index) { - return -1; - } - if(a.index > b.index) { - return 1; - } - return 0; - }); + /** + * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. + */ + function graphToggleSmoothCurves () { + this.constants.smoothCurves.enabled = !this.constants.smoothCurves.enabled; + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} + else {graph_toggleSmooth.style.background = "#FF8532";} - return this.gestures; + this._configureSmoothCurves(false); + } + + /** + * this function is used to scramble the nodes + * + */ + function graphRepositionNodes () { + for (var nodeId in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(nodeId)) { + this.calculationNodes[nodeId].vx = 0; this.calculationNodes[nodeId].vy = 0; + this.calculationNodes[nodeId].fx = 0; this.calculationNodes[nodeId].fy = 0; } - }; + } + if (this.constants.hierarchicalLayout.enabled == true) { + this._setupHierarchicalLayout(); + showValueOfRange.call(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); + showValueOfRange.call(this, 'graph_H_cg', 1, "physics_centralGravity"); + showValueOfRange.call(this, 'graph_H_sc', 1, "physics_springConstant"); + showValueOfRange.call(this, 'graph_H_sl', 1, "physics_springLength"); + showValueOfRange.call(this, 'graph_H_damp', 1, "physics_damping"); + } + else { + this.repositionNodes(); + } + this.moving = true; + this.start(); + } + + /** + * this is used to generate an options file from the playing with physics system. + */ + function graphGenerateOptions () { + var options = "No options are required, default values used."; + var optionsSpecific = []; + var radioButton1 = document.getElementById("graph_physicsMethod1"); + var radioButton2 = document.getElementById("graph_physicsMethod2"); + if (radioButton1.checked == true) { + if (this.constants.physics.barnesHut.gravitationalConstant != this.backupConstants.physics.barnesHut.gravitationalConstant) {optionsSpecific.push("gravitationalConstant: " + this.constants.physics.barnesHut.gravitationalConstant);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.barnesHut.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.barnesHut.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options = "var options = {"; + options += "physics: {barnesHut: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } + } + options += '}}' + } + if (this.constants.smoothCurves.enabled != this.backupConstants.smoothCurves.enabled) { + if (optionsSpecific.length == 0) {options = "var options = {";} + else {options += ", "} + options += "smoothCurves: " + this.constants.smoothCurves.enabled; + } + if (options != "No options are required, default values used.") { + options += '};' + } + } + else if (radioButton2.checked == true) { + options = "var options = {"; + options += "physics: {barnesHut: {enabled: false}"; + if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.repulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options += ", repulsion: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } + } + options += '}}' + } + if (optionsSpecific.length == 0) {options += "}"} + if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { + options += ", smoothCurves: " + this.constants.smoothCurves; + } + options += '};' + } + else { + options = "var options = {"; + if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options += "physics: {hierarchicalRepulsion: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", "; + } + } + options += '}},'; + } + options += 'hierarchicalLayout: {'; + optionsSpecific = []; + if (this.constants.hierarchicalLayout.direction != this.backupConstants.hierarchicalLayout.direction) {optionsSpecific.push("direction: " + this.constants.hierarchicalLayout.direction);} + if (Math.abs(this.constants.hierarchicalLayout.levelSeparation) != this.backupConstants.hierarchicalLayout.levelSeparation) {optionsSpecific.push("levelSeparation: " + this.constants.hierarchicalLayout.levelSeparation);} + if (this.constants.hierarchicalLayout.nodeSpacing != this.backupConstants.hierarchicalLayout.nodeSpacing) {optionsSpecific.push("nodeSpacing: " + this.constants.hierarchicalLayout.nodeSpacing);} + if (optionsSpecific.length != 0) { + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } + } + options += '}' + } + else { + options += "enabled:true}"; + } + options += '};' + } + + this.optionsDiv.innerHTML = options; + } /** - * @module hammer + * this is used to switch between barnesHut, repulsion and hierarchical. + * */ + function switchConfigurations () { + var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"]; + var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value; + var tableId = "graph_" + radioButton + "_table"; + var table = document.getElementById(tableId); + table.style.display = "block"; + for (var i = 0; i < ids.length; i++) { + if (ids[i] != tableId) { + table = document.getElementById(ids[i]); + table.style.display = "none"; + } + } + this._restoreNodes(); + if (radioButton == "R") { + this.constants.hierarchicalLayout.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = false; + this.constants.physics.barnesHut.enabled = false; + } + else if (radioButton == "H") { + if (this.constants.hierarchicalLayout.enabled == false) { + this.constants.hierarchicalLayout.enabled = true; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this.constants.physics.barnesHut.enabled = false; + this.constants.smoothCurves.enabled = false; + this._setupHierarchicalLayout(); + } + } + else { + this.constants.hierarchicalLayout.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = false; + this.constants.physics.barnesHut.enabled = true; + } + this._loadSelectedForceSolver(); + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} + else {graph_toggleSmooth.style.background = "#FF8532";} + this.moving = true; + this.start(); + } + /** - * create new hammer instance - * all methods should return the instance itself, so it is chainable. + * this generates the ranges depending on the iniital values. * - * @class Instance - * @constructor - * @param {HTMLElement} element - * @param {Object} [options={}] options are merged with `Hammer.defaults` - * @return {Hammer.Instance} + * @param id + * @param map + * @param constantsVariableName */ - Hammer.Instance = function(element, options) { - var self = this; + function showValueOfRange (id,map,constantsVariableName) { + var valueId = id + "_value"; + var rangeValue = document.getElementById(id).value; - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); + if (Array.isArray(map)) { + document.getElementById(valueId).value = map[parseInt(rangeValue)]; + this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); + } + else { + document.getElementById(valueId).value = parseInt(map) * parseFloat(rangeValue); + this._overWriteGraphConstants(constantsVariableName, parseInt(map) * parseFloat(rangeValue)); + } - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; + if (constantsVariableName == "hierarchicalLayout_direction" || + constantsVariableName == "hierarchicalLayout_levelSeparation" || + constantsVariableName == "hierarchicalLayout_nodeSpacing") { + this._setupHierarchicalLayout(); + } + this.moving = true; + this.start(); + } - /** - * @property enabled - * @type {Boolean} - * @protected - */ - this.enabled = true; - /** - * options, merged with the defaults - * options with an _ are converted to camelCase - * @property options - * @type {Object} - */ - Utils.each(options, function(value, name) { - delete options[name]; - options[Utils.toCamelCase(name)] = value; - }); - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - // add some css to the element to prevent the browser from doing its native behavoir - if(this.options.behavior) { - Utils.toggleBehavior(this.element, this.options.behavior, true); - } +/***/ }, +/* 61 */ +/***/ function(module, exports, __webpack_require__) { - /** - * event start handler on the element to start the detection - * @property eventStartHandler - * @type {Object} - */ - this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { - if(self.enabled && ev.eventType == EVENT_START) { - Detection.startDetect(self, ev); - } else if(ev.eventType == EVENT_TOUCH) { - Detection.detect(ev); - } - }); + /** + * Creation of the ClusterMixin var. + * + * This contains all the functions the Network object can use to employ clustering + */ - /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} - */ - this.eventHandlers = []; - }; + /** + * This is only called in the constructor of the network object + * + */ + exports.startWithClustering = function() { + // cluster if the data set is big + this.clusterToFit(this.constants.clustering.initialMaxNodes, true); - Hammer.Instance.prototype = { - /** - * bind events to the instance - * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space - * @param {Function} handler - * @param {Object} handler.ev event object - */ - on: function onEvent(gestures, handler) { - var self = this; - Event.on(self.element, gestures, handler, function(type) { - self.eventHandlers.push({ gesture: type, handler: handler }); - }); - return self; - }, - - /** - * unbind events to the instance - * @method off - * @chainable - * @param {String} gestures - * @param {Function} handler - */ - off: function offEvent(gestures, handler) { - var self = this; - - Event.off(self.element, gestures, handler, function(type) { - var index = Utils.inArray({ gesture: type, handler: handler }); - if(index !== false) { - self.eventHandlers.splice(index, 1); - } - }); - return self; - }, - - /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] - */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; - } + // updates the lables after clustering + this.updateLabels(); - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; + // this is called here because if clusterin is disabled, the start and stabilize are called in + // the setData function. + if (this.constants.stabilize == true) { + this._stabilize(); + } + this.start(); + }; - // trigger on the target if it is in the instance element, - // this is for event delegation tricks - var element = this.element; - if(Utils.hasParent(eventData.target, element)) { - element = eventData.target; - } + /** + * This function clusters until the initialMaxNodes has been reached + * + * @param {Number} maxNumberOfNodes + * @param {Boolean} reposition + */ + exports.clusterToFit = function(maxNumberOfNodes, reposition) { + var numberOfNodes = this.nodeIndices.length; - element.dispatchEvent(event); - return this; - }, + var maxLevels = 50; + var level = 0; - /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state - */ - enable: function enable(state) { - this.enabled = state; - return this; - }, + // we first cluster the hubs, then we pull in the outliers, repeat + while (numberOfNodes > maxNumberOfNodes && level < maxLevels) { + if (level % 3 == 0.0) { + this.forceAggregateHubs(true); + this.normalizeClusterLevels(); + } + else { + this.increaseClusterLevel(); // this also includes a cluster normalization + } + this.forceAggregateHubs(true); + numberOfNodes = this.nodeIndices.length; + level += 1; + } - /** - * dispose this hammer instance - * @method dispose - * @return {Null} - */ - dispose: function dispose() { - var i, eh; + // after the clustering we reposition the nodes to reduce the initial chaos + if (level > 0 && reposition == true) { + this.repositionNodes(); + } + this._updateCalculationNodes(); + }; - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); + /** + * This function can be called to open up a specific cluster. + * It will unpack the cluster back one level. + * + * @param node | Node object: cluster to open. + */ + exports.openCluster = function(node) { + var isMovingBeforeClustering = this.moving; + if (node.clusterSize > this.constants.clustering.sectorThreshold && this._nodeInActiveArea(node) && + !(this._sector() == "default" && this.nodeIndices.length == 1)) { + // this loads a new sector, loads the nodes and edges and nodeIndices of it. + this._addSector(node); + var level = 0; - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); - } + // we decluster until we reach a decent number of nodes + while ((this.nodeIndices.length < this.constants.clustering.initialMaxNodes) && (level < 10)) { + this.decreaseClusterLevel(); + level += 1; + } - this.eventHandlers = []; + } + else { + this._expandClusterNode(node,false,true); - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + // update the index list and labels + this._updateNodeIndexList(); + this._updateCalculationNodes(); + this.updateLabels(); + } - return null; - } + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); + } }; /** - * @module gestures - */ - /** - * Move with x fingers (default 1) around on the page. - * Preventing the default browser behavior is a good way to improve feel and working. - * ```` - * hammertime.on("drag", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Drag - * @static - */ - /** - * @event drag - * @param {Object} ev - */ - /** - * @event dragstart - * @param {Object} ev - */ - /** - * @event dragend - * @param {Object} ev - */ - /** - * @event drapleft - * @param {Object} ev - */ - /** - * @event dragright - * @param {Object} ev - */ - /** - * @event dragup - * @param {Object} ev + * This calls the updateClustes with default arguments */ + exports.updateClustersDefault = function() { + if (this.constants.clustering.enabled == true && this.constants.clustering.clusterByZoom == true) { + this.updateClusters(0,false,false); + } + }; + + /** - * @event dragdown - * @param {Object} ev + * This function can be called to increase the cluster level. This means that the nodes with only one edge connection will + * be clustered with their connected node. This can be repeated as many times as needed. + * This can be called externally (by a keybind for instance) to reduce the complexity of big datasets. */ + exports.increaseClusterLevel = function() { + this.updateClusters(-1,false,true); + }; + /** - * @param {String} name + * This function can be called to decrease the cluster level. This means that the nodes with only one edge connection will + * be unpacked if they are a cluster. This can be repeated as many times as needed. + * This can be called externally (by a key-bind for instance) to look into clusters without zooming. */ - (function(name) { - var triggered = false; + exports.decreaseClusterLevel = function() { + this.updateClusters(1,false,true); + }; - function dragGesture(ev, inst) { - var cur = Detection.current; - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; - } + /** + * This is the main clustering function. It clusters and declusters on zoom or forced + * This function clusters on zoom, it can be called with a predefined zoom direction + * If out, check if we can form clusters, if in, check if we can open clusters. + * This function is only called from _zoom() + * + * @param {Number} zoomDirection | -1 / 0 / +1 for zoomOut / determineByZoom / zoomIn + * @param {Boolean} recursive | enabled or disable recursive calling of the opening of clusters + * @param {Boolean} force | enabled or disable forcing + * @param {Boolean} doNotStart | if true do not call start + * + */ + exports.updateClusters = function(zoomDirection,recursive,force,doNotStart) { + var isMovingBeforeClustering = this.moving; + var amountOfNodes = this.nodeIndices.length; - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + var detectedZoomingIn = (this.previousScale < this.scale && zoomDirection == 0); + var detectedZoomingOut = (this.previousScale > this.scale && zoomDirection == 0); - case EVENT_MOVE: - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.distance < inst.options.dragMinDistance && - cur.name != name) { - return; - } + // on zoom out collapse the sector if the scale is at the level the sector was made + if (detectedZoomingOut == true) { + this._collapseSector(); + } - var startCenter = cur.startEvent.center; + // check if we zoom in or out + if (detectedZoomingOut == true || zoomDirection == -1) { // zoom out + // forming clusters when forced pulls outliers in. When not forced, the edge length of the + // outer nodes determines if it is being clustered + this._formClusters(force); + } + else if (detectedZoomingIn == true || zoomDirection == 1) { // zoom in + if (force == true) { + // _openClusters checks for each node if the formationScale of the cluster is smaller than + // the current scale and if so, declusters. When forced, all clusters are reduced by one step + this._openClusters(recursive,force); + } + else { + // if a cluster takes up a set percentage of the active window + //this._openClustersBySize(); + this._openClusters(recursive, false); + } + } + this._updateNodeIndexList(); - // we are dragging! - if(cur.name != name) { - cur.name = name; - if(inst.options.dragDistanceCorrection && ev.distance > 0) { - // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. - // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. - // It might be useful to save the original start point somewhere - var factor = Math.abs(inst.options.dragMinDistance / ev.distance); - startCenter.pageX += ev.deltaX * factor; - startCenter.pageY += ev.deltaY * factor; - startCenter.clientX += ev.deltaX * factor; - startCenter.clientY += ev.deltaY * factor; + // if a cluster was NOT formed and the user zoomed out, we try clustering by hubs + if (this.nodeIndices.length == amountOfNodes && (detectedZoomingOut == true || zoomDirection == -1)) { + this._aggregateHubs(force); + this._updateNodeIndexList(); + } - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } + // we now reduce chains. + if (detectedZoomingOut == true || zoomDirection == -1) { // zoom out + this.handleChains(); + this._updateNodeIndexList(); + } - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } + this.previousScale = this.scale; - // keep direction on the axis that the drag gesture started on - var lastDirection = cur.lastEvent.direction; - if(ev.dragLockToAxis && lastDirection !== ev.direction) { - if(Utils.isVertical(lastDirection)) { - ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; - } else { - ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - } + // update labels + this.updateLabels(); - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length < amountOfNodes) { // this means a clustering operation has taken place + this.clusterSession += 1; + // if clusters have been made, we normalize the cluster level + this.normalizeClusterLevels(); + } - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + if (doNotStart == false || doNotStart === undefined) { + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); + } + } - var isVertical = Utils.isVertical(ev.direction); + this._updateCalculationNodes(); + }; - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + /** + * This function handles the chains. It is called on every updateClusters(). + */ + exports.handleChains = function() { + // after clustering we check how many chains there are + var chainPercentage = this._getChainFraction(); + if (chainPercentage > this.constants.clustering.chainThreshold) { + this._reduceAmountOfChains(1 - this.constants.clustering.chainThreshold / chainPercentage) - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + } + }; - case EVENT_END: - triggered = false; - break; - } - } + /** + * this functions starts clustering by hubs + * The minimum hub threshold is set globally + * + * @private + */ + exports._aggregateHubs = function(force) { + this._getHubSize(); + this._formClustersByHub(force,false); + }; - Hammer.gestures.Drag = { - name: name, - index: 50, - handler: dragGesture, - defaults: { - /** - * minimal movement that have to be made before the drag event gets triggered - * @property dragMinDistance - * @type {Number} - * @default 10 - */ - dragMinDistance: 10, - /** - * Set dragDistanceCorrection to true to make the starting point of the drag - * be calculated from where the drag was triggered, not from where the touch started. - * Useful to avoid a jerk-starting drag, which can make fine-adjustments - * through dragging difficult, and be visually unappealing. - * @property dragDistanceCorrection - * @type {Boolean} - * @default true - */ - dragDistanceCorrection: true, + /** + * This function forces hubs to form. + * + */ + exports.forceAggregateHubs = function(doNotStart) { + var isMovingBeforeClustering = this.moving; + var amountOfNodes = this.nodeIndices.length; - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + this._aggregateHubs(true); - /** - * prevent default browser behavior when dragging occurs - * be careful with it, it makes the element a blocking element - * when you are using the drag gesture, it is a good practice to set this true - * @property dragBlockHorizontal - * @type {Boolean} - * @default false - */ - dragBlockHorizontal: false, + // update the index list, dynamic edges and labels + this._updateNodeIndexList(); + this.updateLabels(); - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, + this._updateCalculationNodes(); - /** - * dragLockToAxis keeps the drag gesture on the axis that it started on, - * It disallows vertical directions if the initial direction was horizontal, and vice versa. - * @property dragLockToAxis - * @type {Boolean} - * @default false - */ - dragLockToAxis: false, + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length != amountOfNodes) { + this.clusterSession += 1; + } - /** - * drag lock only kicks in when distance > dragLockMinDistance - * This way, locking occurs only when the distance has become large enough to reliably determine the direction - * @property dragLockMinDistance - * @type {Number} - * @default 25 - */ - dragLockMinDistance: 25 - } - }; - })('drag'); + if (doNotStart == false || doNotStart === undefined) { + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); + } + } + }; /** - * @module gestures - */ - /** - * trigger a simple gesture event, so you can do anything in your handler. - * only usable if you know what your doing... + * If a cluster takes up more than a set percentage of the screen, open the cluster * - * @class Gesture - * @static - */ - /** - * @event gesture - * @param {Object} ev + * @private */ - Hammer.gestures.Gesture = { - name: 'gesture', - index: 1337, - handler: function releaseGesture(ev, inst) { - inst.trigger(this.name, ev); + exports._openClustersBySize = function() { + if (this.constants.clustering.clusterByZoom == true) { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.inView() == true) { + if ((node.width * this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || + (node.height * this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { + this.openCluster(node); + } + } + } } + } }; + /** - * @module gestures - */ - /** - * Touch stays at the same place for x time + * This function loops over all nodes in the nodeIndices list. For each node it checks if it is a cluster and if it + * has to be opened based on the current zoom level. * - * @class Hold - * @static + * @private */ - /** - * @event hold - * @param {Object} ev + exports._openClusters = function(recursive,force) { + for (var i = 0; i < this.nodeIndices.length; i++) { + var node = this.nodes[this.nodeIndices[i]]; + this._expandClusterNode(node,recursive,force); + this._updateCalculationNodes(); + } + }; + + /** + * This function checks if a node has to be opened. This is done by checking the zoom level. + * If the node contains child nodes, this function is recursively called on the child nodes as well. + * This recursive behaviour is optional and can be set by the recursive argument. + * + * @param {Node} parentNode | to check for cluster and expand + * @param {Boolean} recursive | enabled or disable recursive calling + * @param {Boolean} force | enabled or disable forcing + * @param {Boolean} [openAll] | This will recursively force all nodes in the parent to be released + * @private */ + exports._expandClusterNode = function(parentNode, recursive, force, openAll) { + // first check if node is a cluster + if (parentNode.clusterSize > 1) { + if (openAll === undefined) { + openAll = false; + } + // this means that on a double tap event or a zoom event, the cluster fully unpacks if it is smaller than 20 + + recursive = openAll || recursive; + // if the last child has been added on a smaller scale than current scale decluster + if (parentNode.formationScale < this.scale || force == true) { + // we will check if any of the contained child nodes should be removed from the cluster + for (var containedNodeId in parentNode.containedNodes) { + if (parentNode.containedNodes.hasOwnProperty(containedNodeId)) { + var childNode = parentNode.containedNodes[containedNodeId]; + + // force expand will expand the largest cluster size clusters. Since we cluster from outside in, we assume that + // the largest cluster is the one that comes from outside + if (force == true) { + if (childNode.clusterSession == parentNode.clusterSessions[parentNode.clusterSessions.length-1] + || openAll) { + this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); + } + } + else { + if (this._nodeInActiveArea(parentNode)) { + this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); + } + } + } + } + } + } + }; /** - * @param {String} name + * ONLY CALLED FROM _expandClusterNode + * + * This function will expel a child_node from a parent_node. This is to de-cluster the node. This function will remove + * the child node from the parent contained_node object and put it back into the global nodes object. + * The same holds for the edge that was connected to the child node. It is moved back into the global edges object. + * + * @param {Node} parentNode | the parent node + * @param {String} containedNodeId | child_node id as it is contained in the containedNodes object of the parent node + * @param {Boolean} recursive | This will also check if the child needs to be expanded. + * With force and recursive both true, the entire cluster is unpacked + * @param {Boolean} force | This will disregard the zoom level and will expel this child from the parent + * @param {Boolean} openAll | This will recursively force all nodes in the parent to be released + * @private */ - (function(name) { - var timer; + exports._expelChildFromParent = function(parentNode, containedNodeId, recursive, force, openAll) { + var childNode = parentNode.containedNodes[containedNodeId] - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; + // if child node has been added on smaller scale than current, kick out + if (childNode.formationScale < this.scale || force == true) { + // unselect all selected items + this._unselectAll(); - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + // put the child node back in the global nodes object + this.nodes[containedNodeId] = childNode; - // set the gesture so we can check in the timeout if it still is - current.name = name; + // release the contained edges from this childNode back into the global edges + this._releaseContainedEdges(parentNode,childNode); - // set timer and if after the timeout it still is hold, - // we trigger the hold event - timer = setTimeout(function() { - if(current && current.name == name) { - inst.trigger(name, ev); - } - }, options.holdTimeout); - break; + // reconnect rerouted edges to the childNode + this._connectEdgeBackToChild(parentNode,childNode); - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); - } - break; + // validate all edges in dynamicEdges + this._validateEdges(parentNode); - case EVENT_RELEASE: - clearTimeout(timer); - break; + // undo the changes from the clustering operation on the parent node + parentNode.options.mass -= childNode.options.mass; + parentNode.clusterSize -= childNode.clusterSize; + parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*(parentNode.clusterSize-1)); + + // place the child node near the parent, not at the exact same location to avoid chaos in the system + childNode.x = parentNode.x + parentNode.growthIndicator * (0.5 - Math.random()); + childNode.y = parentNode.y + parentNode.growthIndicator * (0.5 - Math.random()); + + // remove node from the list + delete parentNode.containedNodes[containedNodeId]; + + // check if there are other childs with this clusterSession in the parent. + var othersPresent = false; + for (var childNodeId in parentNode.containedNodes) { + if (parentNode.containedNodes.hasOwnProperty(childNodeId)) { + if (parentNode.containedNodes[childNodeId].clusterSession == childNode.clusterSession) { + othersPresent = true; + break; } + } + } + // if there are no others, remove the cluster session from the list + if (othersPresent == false) { + parentNode.clusterSessions.pop(); } - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { - /** - * @property holdTimeout - * @type {Number} - * @default 500 - */ - holdTimeout: 500, + this._repositionBezierNodes(childNode); + // this._repositionBezierNodes(parentNode); + + // remove the clusterSession from the child node + childNode.clusterSession = 0; + + // recalculate the size of the node on the next time the node is rendered + parentNode.clearSizeCache(); + + // restart the simulation to reorganise all nodes + this.moving = true; + } + + // check if a further expansion step is possible if recursivity is enabled + if (recursive == true) { + this._expandClusterNode(childNode,recursive,force,openAll); + } + }; - /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 - */ - holdThreshold: 2 - }, - handler: holdGesture - }; - })('hold'); /** - * @module gestures - */ - /** - * when a touch is being released from the page + * position the bezier nodes at the center of the edges * - * @class Release - * @static + * @param node + * @private */ + exports._repositionBezierNodes = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + node.dynamicEdges[i].positionBezierNode(); + } + }; + + /** - * @event release - * @param {Object} ev + * This function checks if any nodes at the end of their trees have edges below a threshold length + * This function is called only from updateClusters() + * forceLevelCollapse ignores the length of the edge and collapses one level + * This means that a node with only one edge will be clustered with its connected node + * + * @private + * @param {Boolean} force */ - Hammer.gestures.Release = { - name: 'release', - index: Infinity, - handler: function releaseGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - inst.trigger(this.name, ev); - } + exports._formClusters = function(force) { + if (force == false) { + if (this.constants.clustering.clusterByZoom == true) { + this._formClustersByZoom(); } + } + else { + this._forceClustersByZoom(); + } }; + /** - * @module gestures - */ - /** - * triggers swipe events when the end velocity is above the threshold - * for best usage, set `preventDefault` (on the drag gesture) to `true` - * ```` - * hammertime.on("dragleft swipeleft", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` + * This function handles the clustering by zooming out, this is based on a minimum edge distance * - * @class Swipe - * @static - */ - /** - * @event swipe - * @param {Object} ev - */ - /** - * @event swipeleft - * @param {Object} ev - */ - /** - * @event swiperight - * @param {Object} ev - */ - /** - * @event swipeup - * @param {Object} ev - */ - /** - * @event swipedown - * @param {Object} ev + * @private */ - Hammer.gestures.Swipe = { - name: 'swipe', - index: 40, - defaults: { - /** - * @property swipeMinTouches - * @type {Number} - * @default 1 - */ - swipeMinTouches: 1, - - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, - - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, + exports._formClustersByZoom = function() { + var dx,dy,length; + var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 - }, + // check if any edges are shorter than minLength and start the clustering + // the clustering favours the node with the larger mass + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + var edge = this.edges[edgeId]; + if (edge.connected) { + if (edge.toId != edge.fromId) { + dx = (edge.to.x - edge.from.x); + dy = (edge.to.y - edge.from.y); + length = Math.sqrt(dx * dx + dy * dy); - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; + if (length < minLength) { + // first check which node is larger + var parentNode = edge.from; + var childNode = edge.to; + if (edge.to.options.mass > edge.from.options.mass) { + parentNode = edge.to; + childNode = edge.from; } - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.velocityX > options.swipeVelocityX || - ev.velocityY > options.swipeVelocityY) { - // trigger swipe events - inst.trigger(this.name, ev); - inst.trigger(this.name + ev.direction, ev); + if (childNode.dynamicEdges.length == 1) { + this._addToCluster(parentNode,childNode,false); + } + else if (parentNode.dynamicEdges.length == 1) { + this._addToCluster(childNode,parentNode,false); } + } } + } } + } }; /** - * @module gestures - */ - /** - * Single tap and a double tap on a place + * This function forces the network to cluster all nodes with only one connecting edge to their + * connected node. * - * @class Tap - * @static + * @private */ + exports._forceClustersByZoom = function() { + for (var nodeId in this.nodes) { + // another node could have absorbed this child. + if (this.nodes.hasOwnProperty(nodeId)) { + var childNode = this.nodes[nodeId]; + + // the edges can be swallowed by another decrease + if (childNode.dynamicEdges.length == 1) { + var edge = childNode.dynamicEdges[0]; + var parentNode = (edge.toId == childNode.id) ? this.nodes[edge.fromId] : this.nodes[edge.toId]; + // group to the largest node + if (childNode.id != parentNode.id) { + if (parentNode.options.mass > childNode.options.mass) { + this._addToCluster(parentNode,childNode,true); + } + else { + this._addToCluster(childNode,parentNode,true); + } + } + } + } + } + }; + + /** - * @event tap - * @param {Object} ev + * To keep the nodes of roughly equal size we normalize the cluster levels. + * This function clusters a node to its smallest connected neighbour. + * + * @param node + * @private */ + exports._clusterToSmallestNeighbour = function(node) { + var smallestNeighbour = -1; + var smallestNeighbourNode = null; + for (var i = 0; i < node.dynamicEdges.length; i++) { + if (node.dynamicEdges[i] !== undefined) { + var neighbour = null; + if (node.dynamicEdges[i].fromId != node.id) { + neighbour = node.dynamicEdges[i].from; + } + else if (node.dynamicEdges[i].toId != node.id) { + neighbour = node.dynamicEdges[i].to; + } + + + if (neighbour != null && smallestNeighbour > neighbour.clusterSessions.length) { + smallestNeighbour = neighbour.clusterSessions.length; + smallestNeighbourNode = neighbour; + } + } + } + + if (neighbour != null && this.nodes[neighbour.id] !== undefined) { + this._addToCluster(neighbour, node, true); + } + }; + + /** - * @event doubletap - * @param {Object} ev + * This function forms clusters from hubs, it loops over all nodes + * + * @param {Boolean} force | Disregard zoom level + * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges + * @private */ + exports._formClustersByHub = function(force, onlyEqual) { + // we loop over all nodes in the list + for (var nodeId in this.nodes) { + // we check if it is still available since it can be used by the clustering in this loop + if (this.nodes.hasOwnProperty(nodeId)) { + this._formClusterFromHub(this.nodes[nodeId],force,onlyEqual); + } + } + }; /** - * @param {String} name + * This function forms a cluster from a specific preselected hub node + * + * @param {Node} hubNode | the node we will cluster as a hub + * @param {Boolean} force | Disregard zoom level + * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges + * @param {Number} [absorptionSizeOffset] | + * @private */ - (function(name) { - var hasMoved = false; + exports._formClusterFromHub = function(hubNode, force, onlyEqual, absorptionSizeOffset) { + if (absorptionSizeOffset === undefined) { + absorptionSizeOffset = 0; + } + //this.hubThreshold = 43 + //if (hubNode.dynamicEdgesLength < 0) { + // console.error(hubNode.dynamicEdgesLength, this.hubThreshold, onlyEqual) + //} + // we decide if the node is a hub + if ((hubNode.dynamicEdges.length >= this.hubThreshold && onlyEqual == false) || + (hubNode.dynamicEdges.length == this.hubThreshold && onlyEqual == true)) { + // initialize variables + var dx,dy,length; + var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; + var allowCluster = false; - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; + // we create a list of edges because the dynamicEdges change over the course of this loop + var edgesIdarray = []; + var amountOfInitialEdges = hubNode.dynamicEdges.length; + for (var j = 0; j < amountOfInitialEdges; j++) { + edgesIdarray.push(hubNode.dynamicEdges[j].id); + } - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; + // if the hub clustering is not forced, we check if one of the edges connected + // to a cluster is small enough based on the constants.clustering.clusterEdgeThreshold + if (force == false) { + allowCluster = false; + for (j = 0; j < amountOfInitialEdges; j++) { + var edge = this.edges[edgesIdarray[j]]; + if (edge !== undefined) { + if (edge.connected) { + if (edge.toId != edge.fromId) { + dx = (edge.to.x - edge.from.x); + dy = (edge.to.y - edge.from.y); + length = Math.sqrt(dx * dx + dy * dy); - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + if (length < minLength) { + allowCluster = true; break; + } + } + } + } + } + } - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; + // start the clustering if allowed + if ((!force && allowCluster) || force) { + var children = []; + var childrenIds = {}; + // we loop over all edges INITIALLY connected to this hub to get a list of the childNodes + for (j = 0; j < amountOfInitialEdges; j++) { + edge = this.edges[edgesIdarray[j]]; + var childNode = this.nodes[(edge.fromId == hubNode.id) ? edge.toId : edge.fromId]; + if (childrenIds[childNode.id] === undefined) { + childrenIds[childNode.id] = true; + children.push(childNode); + } + } - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } + for (j = 0; j < children.length; j++) { + var childNode = children[j]; + // we do not want hubs to merge with other hubs nor do we want to cluster itself. + if ((childNode.dynamicEdges.length <= (this.hubThreshold + absorptionSizeOffset)) && + (childNode.id != hubNode.id)) { + this._addToCluster(hubNode,childNode,force); - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; } - } + else { + //console.log("WILL NOT MERGE:",childNode.dynamicEdges.length , (this.hubThreshold + absorptionSizeOffset)) + } + } - Hammer.gestures.Tap = { - name: name, - index: 100, - handler: tapGesture, - defaults: { - /** - * max time of a tap, this is for the slow tappers - * @property tapMaxTime - * @type {Number} - * @default 250 - */ - tapMaxTime: 250, - - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, - - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, + } + } + }; - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 - } - }; - })('tap'); /** - * @module gestures - */ - /** - * when a touch is being touched at the page + * This function adds the child node to the parent node, creating a cluster if it is not already. * - * @class Touch - * @static - */ - /** - * @event touch - * @param {Object} ev + * @param {Node} parentNode | this is the node that will house the child node + * @param {Node} childNode | this node will be deleted from the global this.nodes and stored in the parent node + * @param {Boolean} force | true will only update the remainingEdges at the very end of the clustering, ensuring single level collapse + * @private */ - Hammer.gestures.Touch = { - name: 'touch', - index: -Infinity, - defaults: { - /** - * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, - * but it improves gestures like transforming and dragging. - * be careful with using this, it can be very annoying for users to be stuck on the page - * @property preventDefault - * @type {Boolean} - * @default false - */ - preventDefault: false, + exports._addToCluster = function(parentNode, childNode, force) { + // join child node in the parent node + parentNode.containedNodes[childNode.id] = childNode; + //console.log(parentNode.id, childNode.id) + // manage all the edges connected to the child and parent nodes + for (var i = 0; i < childNode.dynamicEdges.length; i++) { + var edge = childNode.dynamicEdges[i]; + if (edge.toId == parentNode.id || edge.fromId == parentNode.id) { // edge connected to parentNode + //console.log("COLLECT",parentNode.id, childNode.id, edge.toId, edge.fromId) + this._addToContainedEdges(parentNode,childNode,edge); + } + else { + //console.log("REWIRE",parentNode.id, childNode.id, edge.toId, edge.fromId) + this._connectEdgeToCluster(parentNode,childNode,edge); + } + } + // a contained node has no dynamic edges. + childNode.dynamicEdges = []; - /** - * disable mouse events, so only touch (or pen!) input triggers events - * @property preventMouse - * @type {Boolean} - * @default false - */ - preventMouse: false - }, - handler: function touchGesture(ev, inst) { - if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { - ev.stopDetect(); - return; - } + // remove circular edges from clusters + this._containCircularEdgesFromNode(parentNode,childNode); - if(inst.options.preventDefault) { - ev.preventDefault(); - } - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); - } - } + // remove the childNode from the global nodes object + delete this.nodes[childNode.id]; + + // update the properties of the child and parent + var massBefore = parentNode.options.mass; + childNode.clusterSession = this.clusterSession; + parentNode.options.mass += childNode.options.mass; + parentNode.clusterSize += childNode.clusterSize; + parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); + + // keep track of the clustersessions so we can open the cluster up as it has been formed. + if (parentNode.clusterSessions[parentNode.clusterSessions.length - 1] != this.clusterSession) { + parentNode.clusterSessions.push(this.clusterSession); + } + + // forced clusters only open from screen size and double tap + if (force == true) { + parentNode.formationScale = 0; + } + else { + parentNode.formationScale = this.scale; // The latest child has been added on this scale + } + + // recalculate the size of the node on the next time the node is rendered + parentNode.clearSizeCache(); + + // set the pop-out scale for the childnode + parentNode.containedNodes[childNode.id].formationScale = parentNode.formationScale; + + // nullify the movement velocity of the child, this is to avoid hectic behaviour + childNode.clearVelocity(); + + // the mass has altered, preservation of energy dictates the velocity to be updated + parentNode.updateVelocity(massBefore); + + // restart the simulation to reorganise all nodes + this.moving = true; }; + /** - * @module gestures - */ - /** - * User want to scale or rotate with 2 fingers - * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the - * `preventDefault` option. + * This adds an edge from the childNode to the contained edges of the parent node * - * @class Transform - * @static - */ - /** - * @event transform - * @param {Object} ev + * @param parentNode | Node object + * @param childNode | Node object + * @param edge | Edge object + * @private */ + exports._addToContainedEdges = function(parentNode, childNode, edge) { + // create an array object if it does not yet exist for this childNode + if (parentNode.containedEdges[childNode.id] === undefined) { + parentNode.containedEdges[childNode.id] = [] + } + // add this edge to the list + parentNode.containedEdges[childNode.id].push(edge); + + // remove the edge from the global edges object + delete this.edges[edge.id]; + + // remove the edge from the parent object + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + if (parentNode.dynamicEdges[i].id == edge.id) { + parentNode.dynamicEdges.splice(i,1); + break; + } + } + }; + /** - * @event transformstart - * @param {Object} ev + * This function connects an edge that was connected to a child node to the parent node. + * It keeps track of which nodes it has been connected to with the originalId array. + * + * @param {Node} parentNode | Node object + * @param {Node} childNode | Node object + * @param {Edge} edge | Edge object + * @private */ + exports._connectEdgeToCluster = function(parentNode, childNode, edge) { + // handle circular edges + if (edge.toId == edge.fromId) { + this._addToContainedEdges(parentNode, childNode, edge); + } + else { + if (edge.toId == childNode.id) { // edge connected to other node on the "to" side + edge.originalToId.push(childNode.id); + edge.to = parentNode; + edge.toId = parentNode.id; + } + else { // edge connected to other node with the "from" side + edge.originalFromId.push(childNode.id); + edge.from = parentNode; + edge.fromId = parentNode.id; + } + + this._addToReroutedEdges(parentNode,childNode,edge); + } + }; + + /** - * @event transformend - * @param {Object} ev + * If a node is connected to itself, a circular edge is drawn. When clustering we want to contain + * these edges inside of the cluster. + * + * @param parentNode + * @param childNode + * @private */ + exports._containCircularEdgesFromNode = function(parentNode, childNode) { + // manage all the edges connected to the child and parent nodes + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + var edge = parentNode.dynamicEdges[i]; + // handle circular edges + if (edge.toId == edge.fromId) { + this._addToContainedEdges(parentNode, childNode, edge); + } + } + }; + + /** - * @event pinchin - * @param {Object} ev + * This adds an edge from the childNode to the rerouted edges of the parent node + * + * @param parentNode | Node object + * @param childNode | Node object + * @param edge | Edge object + * @private */ + exports._addToReroutedEdges = function(parentNode, childNode, edge) { + // create an array object if it does not yet exist for this childNode + // we store the edge in the rerouted edges so we can restore it when the cluster pops open + if (!(parentNode.reroutedEdges.hasOwnProperty(childNode.id))) { + parentNode.reroutedEdges[childNode.id] = []; + } + parentNode.reroutedEdges[childNode.id].push(edge); + + // this edge becomes part of the dynamicEdges of the cluster node + parentNode.dynamicEdges.push(edge); + }; + + + /** - * @event pinchout - * @param {Object} ev + * This function connects an edge that was connected to a cluster node back to the child node. + * + * @param parentNode | Node object + * @param childNode | Node object + * @private */ + exports._connectEdgeBackToChild = function(parentNode, childNode) { + if (parentNode.reroutedEdges.hasOwnProperty(childNode.id)) { + for (var i = 0; i < parentNode.reroutedEdges[childNode.id].length; i++) { + var edge = parentNode.reroutedEdges[childNode.id][i]; + if (edge.originalFromId[edge.originalFromId.length-1] == childNode.id) { + edge.originalFromId.pop(); + edge.fromId = childNode.id; + edge.from = childNode; + } + else { + edge.originalToId.pop(); + edge.toId = childNode.id; + edge.to = childNode; + } + + // append this edge to the list of edges connecting to the childnode + childNode.dynamicEdges.push(edge); + + // remove the edge from the parent object + for (var j = 0; j < parentNode.dynamicEdges.length; j++) { + if (parentNode.dynamicEdges[j].id == edge.id) { + parentNode.dynamicEdges.splice(j,1); + break; + } + } + } + // remove the entry from the rerouted edges + delete parentNode.reroutedEdges[childNode.id]; + } + }; + + /** - * @event rotate - * @param {Object} ev + * When loops are clustered, an edge can be both in the rerouted array and the contained array. + * This function is called last to verify that all edges in dynamicEdges are in fact connected to the + * parentNode + * + * @param parentNode | Node object + * @private */ + exports._validateEdges = function(parentNode) { + var dynamicEdges = [] + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + var edge = parentNode.dynamicEdges[i]; + if (parentNode.id == edge.toId || parentNode.id == edge.fromId) { + dynamicEdges.push(edge); + } + } + parentNode.dynamicEdges = dynamicEdges; + }; + /** - * @param {String} name + * This function released the contained edges back into the global domain and puts them back into the + * dynamic edges of both parent and child. + * + * @param {Node} parentNode | + * @param {Node} childNode | + * @private */ - (function(name) { - var triggered = false; + exports._releaseContainedEdges = function(parentNode, childNode) { + for (var i = 0; i < parentNode.containedEdges[childNode.id].length; i++) { + var edge = parentNode.containedEdges[childNode.id][i]; - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + // put the edge back in the global edges object + this.edges[edge.id] = edge; - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } + // put the edge back in the dynamic edges of the child and parent + childNode.dynamicEdges.push(edge); + parentNode.dynamicEdges.push(edge); + } + // remove the entry from the contained edges + delete parentNode.containedEdges[childNode.id]; - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); + }; - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(scaleThreshold < inst.options.transformMinScale && - rotationThreshold < inst.options.transformMinRotation) { - return; - } - // we are transforming! - Detection.current.name = name; - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } - inst.trigger(name, ev); // basic transform event + // ------------------- UTILITY FUNCTIONS ---------------------------- // - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + /** + * This updates the node labels for all nodes (for debugging purposes) + */ + exports.updateLabels = function() { + var nodeId; + // update node labels + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.clusterSize > 1) { + node.label = "[".concat(String(node.clusterSize),"]"); + } + } + } - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + // update node labels + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.clusterSize == 1) { + if (node.originalLabel !== undefined) { + node.label = node.originalLabel; + } + else { + node.label = String(node.id); } + } } + } - Hammer.gestures.Transform = { - name: name, - index: 45, - defaults: { - /** - * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 - * @property transformMinScale - * @type {Number} - * @default 0.01 - */ - transformMinScale: 0.01, + // /* Debug Override */ + // for (nodeId in this.nodes) { + // if (this.nodes.hasOwnProperty(nodeId)) { + // node = this.nodes[nodeId]; + // node.label = String(node.clusterSize + ":" + node.dynamicEdges.length); + // } + // } - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 - }, + }; - handler: transformGesture - }; - })('transform'); /** - * @module hammer + * We want to keep the cluster level distribution rather small. This means we do not want unclustered nodes + * if the rest of the nodes are already a few cluster levels in. + * To fix this we use this function. It determines the min and max cluster level and sends nodes that have not + * clustered enough to the clusterToSmallestNeighbours function. */ + exports.normalizeClusterLevels = function() { + var maxLevel = 0; + var minLevel = 1e9; + var clusterLevel = 0; + var nodeId; - // AMD export - if(true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - // commonjs export - } else if(typeof module !== 'undefined' && module.exports) { - module.exports = Hammer; - // browser export - } else { - window.Hammer = Hammer; - } - - })(window); - -/***/ }, -/* 65 */ -/***/ function(module, exports, __webpack_require__) { + // we loop over all nodes in the list + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + clusterLevel = this.nodes[nodeId].clusterSessions.length; + if (maxLevel < clusterLevel) {maxLevel = clusterLevel;} + if (minLevel > clusterLevel) {minLevel = clusterLevel;} + } + } - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.9.0 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com + if (maxLevel - minLevel > this.constants.clustering.clusterLevelDifference) { + var amountOfNodes = this.nodeIndices.length; + var targetLevel = maxLevel - this.constants.clustering.clusterLevelDifference; + // we loop over all nodes in the list + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].clusterSessions.length < targetLevel) { + this._clusterToSmallestNeighbour(this.nodes[nodeId]); + } + } + } + this._updateNodeIndexList(); + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length != amountOfNodes) { + this.clusterSession += 1; + } + } + }; - (function (undefined) { - /************************************ - Constants - ************************************/ - var moment, - VERSION = '2.9.0', - // the global-scope this is NOT the global object in Node.js - globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, - oldGlobalMoment, - round = Math.round, - hasOwnProperty = Object.prototype.hasOwnProperty, - i, - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, + /** + * This function determines if the cluster we want to decluster is in the active area + * this means around the zoom center + * + * @param {Node} node + * @returns {boolean} + * @private + */ + exports._nodeInActiveArea = function(node) { + return ( + Math.abs(node.x - this.areaCenter.x) <= this.constants.clustering.activeAreaBoxSize/this.scale + && + Math.abs(node.y - this.areaCenter.y) <= this.constants.clustering.activeAreaBoxSize/this.scale + ) + }; - // internal storage for locale config files - locales = {}, - // extra moment internal properties (plugins register props here) - momentProperties = [], + /** + * This is an adaptation of the original repositioning function. This is called if the system is clustered initially + * It puts large clusters away from the center and randomizes the order. + * + */ + exports.repositionNodes = function() { + for (var i = 0; i < this.nodeIndices.length; i++) { + var node = this.nodes[this.nodeIndices[i]]; + if ((node.xFixed == false || node.yFixed == false)) { + var radius = 10 * 0.1*this.nodeIndices.length * Math.min(100,node.options.mass); + var angle = 2 * Math.PI * Math.random(); + if (node.xFixed == false) {node.x = radius * Math.cos(angle);} + if (node.yFixed == false) {node.y = radius * Math.sin(angle);} + this._repositionBezierNodes(node); + } + } + }; - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module && module.exports), - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + /** + * We determine how many connections denote an important hub. + * We take the mean + 2*std as the important hub size. (Assuming a normal distribution of data, ~2.2%) + * + * @private + */ + exports._getHubSize = function() { + var average = 0; + var averageSquared = 0; + var hubCounter = 0; + var largestHub = 0; - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + for (var i = 0; i < this.nodeIndices.length; i++) { - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, + var node = this.nodes[this.nodeIndices[i]]; + if (node.dynamicEdges.length > largestHub) { + largestHub = node.dynamicEdges.length; + } + average += node.dynamicEdges.length; + averageSquared += Math.pow(node.dynamicEdges.length,2); + hubCounter += 1; + } + average = average / hubCounter; + averageSquared = averageSquared / hubCounter; - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + var variance = averageSquared - Math.pow(average,2); - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + var standardDeviation = Math.sqrt(variance); - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + this.hubThreshold = Math.floor(average + 2*standardDeviation); - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + // always have at least one to cluster + if (this.hubThreshold > largestHub) { + this.hubThreshold = largestHub; + } - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], + // console.log("average",average,"averageSQ",averageSquared,"var",variance,"std",standardDeviation); + // console.log("hubThreshold:",this.hubThreshold); + }; - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], - // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, + /** + * We reduce the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods + * with this amount we can cluster specifically on these chains. + * + * @param {Number} fraction | between 0 and 1, the percentage of chains to reduce + * @private + */ + exports._reduceAmountOfChains = function(fraction) { + this.hubThreshold = 2; + var reduceAmount = Math.floor(this.nodeIndices.length * fraction); + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].dynamicEdges.length == 2) { + if (reduceAmount > 0) { + this._formClusterFromHub(this.nodes[nodeId],true,true,1); + reduceAmount -= 1; + } + } + } + } + }; - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, + /** + * We get the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods + * with this amount we can cluster specifically on these chains. + * + * @private + */ + exports._getChainFraction = function() { + var chains = 0; + var total = 0; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].dynamicEdges.length == 2) { + chains += 1; + } + total += 1; + } + } + return chains/total; + }; - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, +/***/ }, +/* 62 */ +/***/ function(module, exports, __webpack_require__) { - // format function strings - formatFunctions = {}, + var util = __webpack_require__(1); + var Node = __webpack_require__(40); - // default relative time thresholds - relativeTimeThresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }, + /** + * Creation of the SectorMixin var. + * + * This contains all the functions the Network object can use to employ the sector system. + * The sector system is always used by Network, though the benefits only apply to the use of clustering. + * If clustering is not used, there is no overhead except for a duplicate object with references to nodes and edges. + */ - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), + /** + * This function is only called by the setData function of the Network object. + * This loads the global references into the active sector. This initializes the sector. + * + * @private + */ + exports._putDataInSector = function() { + this.sectors["active"][this._sector()].nodes = this.nodes; + this.sectors["active"][this._sector()].edges = this.edges; + this.sectors["active"][this._sector()].nodeIndices = this.nodeIndices; + }; - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.localeData().monthsShort(this, format); - }, - MMMM : function (format) { - return this.localeData().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.localeData().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.localeData().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.localeData().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - x : function () { - return this.valueOf(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); - } - }, - deprecations = {}, + /** + * /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied (active) sector. If a type is defined, do the specific type + * + * @param {String} sectorId + * @param {String} [sectorType] | "active" or "frozen" + * @private + */ + exports._switchToSector = function(sectorId, sectorType) { + if (sectorType === undefined || sectorType == "active") { + this._switchToActiveSector(sectorId); + } + else { + this._switchToFrozenSector(sectorId); + } + }; - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], - updateInProgress = false; + /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied active sector. + * + * @param sectorId + * @private + */ + exports._switchToActiveSector = function(sectorId) { + this.nodeIndices = this.sectors["active"][sectorId]["nodeIndices"]; + this.nodes = this.sectors["active"][sectorId]["nodes"]; + this.edges = this.sectors["active"][sectorId]["edges"]; + }; - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error('Implement me'); - } - } - function hasOwnProp(a, b) { - return hasOwnProperty.call(a, b); - } + /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied active sector. + * + * @private + */ + exports._switchToSupportSector = function() { + this.nodeIndices = this.sectors["support"]["nodeIndices"]; + this.nodes = this.sectors["support"]["nodes"]; + this.edges = this.sectors["support"]["edges"]; + }; - function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; - } - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } + /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied frozen sector. + * + * @param sectorId + * @private + */ + exports._switchToFrozenSector = function(sectorId) { + this.nodeIndices = this.sectors["frozen"][sectorId]["nodeIndices"]; + this.nodes = this.sectors["frozen"][sectorId]["nodes"]; + this.edges = this.sectors["frozen"][sectorId]["edges"]; + }; - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; - } - } + /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the currently active sector. + * + * @private + */ + exports._loadLatestSector = function() { + this._switchToSector(this._sector()); + }; - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.localeData().ordinal(func.call(this, a), period); - }; - } - function monthDiff(a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; + /** + * This function returns the currently active sector Id + * + * @returns {String} + * @private + */ + exports._sector = function() { + return this.activeSector[this.activeSector.length-1]; + }; - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } - - return -(wholeMonthDiff + adjust); - } - - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); - } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); - } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - - - function meridiemFixWrap(locale, hour, meridiem) { - var isPm; - - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // thie is not supposed to happen - return hour; - } - } - - /************************************ - Constructors - ************************************/ - - function Locale() { - } - - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - moment.updateOffset(this); - updateInProgress = false; - } - } - - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = moment.localeData(); - - this._bubble(); - } - - /************************************ - Helpers - ************************************/ - - - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } - - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } - - return a; - } - - function copyConfig(to, from) { - var i, prop, val; - - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; - } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; - } - if (typeof from._pf !== 'undefined') { - to._pf = from._pf; - } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } - } - } - - return to; - } - - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } - } - - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; - - while (output.length < targetLength) { - output = '0' + output; - } - return (sign ? (forceSign ? '+' : '') : '-') + output; - } - - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; - - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } - - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - - return res; - } - - function momentsDifference(base, other) { - var res; - other = makeAs(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } - - return res; - } - - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; - } - - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; - } - - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); - } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - moment.updateOffset(mom, days || months); - } - } - - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } - - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } - - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; - } - - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; - } - return units; - } - - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } - - return normalizedInput; - } - - function makeList(field) { - var count, setter; - - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { - return; - } - - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; - - if (typeof format === 'number') { - index = format; - format = undefined; - } - - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; - - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } - }; - } - - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } - } - - return value; - } - - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } - - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } - - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } - - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } - - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 24 || - (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || - m._a[SECOND] !== 0 || - m._a[MILLISECOND] !== 0)) ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; - - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } - - m._pf.overflow = overflow; - } - } - - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; - - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0 && - m._pf.bigHour === undefined; - } - } - return m._isValid; - } - - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } - - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; - - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; - } - - function loadLocale(name) { - var oldLocale = null; - if (!locales[name] && hasModule) { - try { - oldLocale = moment.locale(); - !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); - // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales - moment.locale(oldLocale); - } catch (e) { } - } - return locales[name]; - } - - // Return a moment from input, that is local/utc/utcOffset equivalent to - // model. - function makeAs(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (moment.isMoment(input) || isDate(input) ? - +input : +moment(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - moment.updateOffset(res, false); - return res; - } else { - return moment(input).local(); - } - } - - /************************************ - Locale - ************************************/ - - - extend(Locale.prototype, { - - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); - }, - - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, - - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, - - monthsParse : function (monthName, format, strict) { - var i, mom, regex; - - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } - - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = moment.utc([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - }, - - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, - - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, - - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, - - weekdaysParse : function (weekdayName) { - var i, mom, regex; - - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } - - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - }, - - _longDateFormat : { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; - } - return output; - }, - - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - }, - - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - }, - - - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom, [now]) : output; - }, - - _relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, - - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, - - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', - _ordinalParse : /\d{1,2}/, - - preparse : function (string) { - return string; - }, - - postformat : function (string) { - return string; - }, - - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, - - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }, - - firstDayOfWeek : function () { - return this._week.dow; - }, - - firstDayOfYear : function () { - return this._week.doy; - }, - - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; - } - }); - - /************************************ - Formatting - ************************************/ - - - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); - } - - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; - - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } - - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; - }; - } - - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } - - format = expandFormat(format, m.localeData()); - - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); - } - - return formatFunctions[format](m); - } - function expandFormat(format, locale) { - var i = 5; + /** + * This function returns the previously active sector Id + * + * @returns {String} + * @private + */ + exports._previousSector = function() { + if (this.activeSector.length > 1) { + return this.activeSector[this.activeSector.length-2]; + } + else { + throw new TypeError('there are not enough sectors in the this.activeSector array.'); + } + }; - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } + /** + * We add the active sector at the end of the this.activeSector array + * This ensures it is the currently active sector returned by _sector() and it reaches the top + * of the activeSector stack. When we reverse our steps we move from the end to the beginning of this stack. + * + * @param newId + * @private + */ + exports._setActiveSector = function(newId) { + this.activeSector.push(newId); + }; - return format; - } + /** + * We remove the currently active sector id from the active sector stack. This happens when + * we reactivate the previously active sector + * + * @private + */ + exports._forgetLastSector = function() { + this.activeSector.pop(); + }; - /************************************ - Parsing - ************************************/ + /** + * This function creates a new active sector with the supplied newId. This newId + * is the expanding node id. + * + * @param {String} newId | Id of the new active sector + * @private + */ + exports._createNewSector = function(newId) { + // create the new sector + this.sectors["active"][newId] = {"nodes":{}, + "edges":{}, + "nodeIndices":[], + "formationScale": this.scale, + "drawingNode": undefined}; - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { - return parseTokenOneDigit; - } - /* falls through */ - case 'SS': - if (strict) { - return parseTokenTwoDigits; - } - /* falls through */ - case 'SSS': - if (strict) { - return parseTokenThreeDigits; - } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return config._locale._meridiemParse; - case 'x': - return parseTokenOffsetMs; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); - return a; + // create the new sector render node. This gives visual feedback that you are in a new sector. + this.sectors["active"][newId]['drawingNode'] = new Node( + {id:newId, + color: { + background: "#eaefef", + border: "495c5e" } - } - - function utcOffsetFromString(string) { - string = string || ''; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); - - return parts[0] === '+' ? minutes : -minutes; - } - - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + },{},{},this.constants); + this.sectors["active"][newId]['drawingNode'].clusterSize = 2; + }; - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; - } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt( - input.match(/\d{1,2}/)[0], 10)); - } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); - } - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._meridiem = input; - // config._isPm = config._locale.isPM(input); - break; - // HOUR - case 'h' : // fall through to hh - case 'hh' : - config._pf.bigHour = true; - /* falls through */ - case 'H' : // fall through to HH - case 'HH' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX OFFSET (MILLISECONDS) - case 'x': - config._d = new Date(toInt(input)); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = utcOffsetFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; - } else { - config._pf.invalidWeekday = input; - } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); - } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); - } - } + /** + * This function removes the currently active sector. This is called when we create a new + * active sector. + * + * @param {String} sectorId | Id of the active sector that will be removed + * @private + */ + exports._deleteActiveSector = function(sectorId) { + delete this.sectors["active"][sectorId]; + }; - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + /** + * This function removes the currently active sector. This is called when we reactivate + * the previously active sector. + * + * @param {String} sectorId | Id of the active sector that will be removed + * @private + */ + exports._deleteFrozenSector = function(sectorId) { + delete this.sectors["frozen"][sectorId]; + }; - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + /** + * Freezing an active sector means moving it from the "active" object to the "frozen" object. + * We copy the references, then delete the active entree. + * + * @param sectorId + * @private + */ + exports._freezeSector = function(sectorId) { + // we move the set references from the active to the frozen stack. + this.sectors["frozen"][sectorId] = this.sectors["active"][sectorId]; - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + // we have moved the sector data into the frozen set, we now remove it from the active set + this._deleteActiveSector(sectorId); + }; - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; + + /** + * This is the reverse operation of _freezeSector. Activating means moving the sector from the "frozen" + * object to the "active" object. + * + * @param sectorId + * @private + */ + exports._activateSector = function(sectorId) { + // we move the set references from the frozen to the active stack. + this.sectors["active"][sectorId] = this.sectors["frozen"][sectorId]; + + // we have moved the sector data into the active set, we now remove it from the frozen stack + this._deleteFrozenSector(sectorId); + }; + + + /** + * This function merges the data from the currently active sector with a frozen sector. This is used + * in the process of reverting back to the previously active sector. + * The data that is placed in the frozen (the previously active) sector is the node that has been removed from it + * upon the creation of a new active sector. + * + * @param sectorId + * @private + */ + exports._mergeThisWithFrozen = function(sectorId) { + // copy all nodes + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.sectors["frozen"][sectorId]["nodes"][nodeId] = this.nodes[nodeId]; } + } - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; + // copy all edges (if not fully clustered, else there are no edges) + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + this.sectors["frozen"][sectorId]["edges"][edgeId] = this.edges[edgeId]; + } + } - if (config._d) { - return; - } + // merge the nodeIndices + for (var i = 0; i < this.nodeIndices.length; i++) { + this.sectors["frozen"][sectorId]["nodeIndices"].push(this.nodeIndices[i]); + } + }; - currentDate = currentDateArray(config); - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } + /** + * This clusters the sector to one cluster. It was a single cluster before this process started so + * we revert to that state. The clusterToFit function with a maximum size of 1 node does this. + * + * @private + */ + exports._collapseThisToSingleCluster = function() { + this.clusterToFit(1,false); + }; - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; - } + /** + * We create a new active sector from the node that we want to open. + * + * @param node + * @private + */ + exports._addSector = function(node) { + // this is the currently active sector + var sector = this._sector(); - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + // // this should allow me to select nodes from a frozen set. + // if (this.sectors['active'][sector]["nodes"].hasOwnProperty(node.id)) { + // console.log("the node is part of the active sector"); + // } + // else { + // console.log("I dont know what the fuck happened!!"); + // } - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } + // when we switch to a new sector, we remove the node that will be expanded from the current nodes list. + delete this.nodes[node.id]; - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } + var unqiueIdentifier = util.randomUUID(); - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } + // we fully freeze the currently active sector + this._freezeSector(sector); - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } + // we create a new active sector. This sector has the Id of the node to ensure uniqueness + this._createNewSector(unqiueIdentifier); - if (config._nextDay) { - config._a[HOUR] = 24; - } + // we add the active sector to the sectors array to be able to revert these steps later on + this._setActiveSector(unqiueIdentifier); + + // we redirect the global references to the new sector's references. this._sector() now returns unqiueIdentifier + this._switchToSector(this._sector()); + + // finally we add the node we removed from our previous active sector to the new active sector + this.nodes[node.id] = node; + }; + + + /** + * We close the sector that is currently open and revert back to the one before. + * If the active sector is the "default" sector, nothing happens. + * + * @private + */ + exports._collapseSector = function() { + // the currently active sector + var sector = this._sector(); + + // we cannot collapse the default sector + if (sector != "default") { + if ((this.nodeIndices.length == 1) || + (this.sectors["active"][sector]["drawingNode"].width*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || + (this.sectors["active"][sector]["drawingNode"].height*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { + var previousSector = this._previousSector(); + + // we collapse the sector back to a single cluster + this._collapseThisToSingleCluster(); + + // we move the remaining nodes, edges and nodeIndices to the previous sector. + // This previous sector is the one we will reactivate + this._mergeThisWithFrozen(previousSector); + + // the previously active (frozen) sector now has all the data from the currently active sector. + // we can now delete the active sector. + this._deleteActiveSector(sector); + + // we activate the previously active (and currently frozen) sector. + this._activateSector(previousSector); + + // we load the references from the newly active sector into the global references + this._switchToSector(previousSector); + + // we forget the previously active sector because we reverted to the one before + this._forgetLastSector(); + + // finally, we update the node index list. + this._updateNodeIndexList(); + + // we refresh the list with calulation nodes and calculation node indices. + this._updateCalculationNodes(); } + } + }; - function dateFromObject(config) { - var normalizedInput; - if (config._d) { - return; + /** + * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we dont pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private + */ + exports._doInAllActiveSectors = function(runFunction,argument) { + var returnValues = []; + if (argument === undefined) { + for (var sector in this.sectors["active"]) { + if (this.sectors["active"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToActiveSector(sector); + returnValues.push( this[runFunction]() ); + } + } + } + else { + for (var sector in this.sectors["active"]) { + if (this.sectors["active"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToActiveSector(sector); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + returnValues.push( this[runFunction](args[0],args[1]) ); + } + else { + returnValues.push( this[runFunction](argument) ); } + } + } + } + // we revert the global references back to our active sector + this._loadLatestSector(); + return returnValues; + }; - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day || normalizedInput.date, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; - dateFromConfig(config); + /** + * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we dont pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private + */ + exports._doInSupportSector = function(runFunction,argument) { + var returnValues = false; + if (argument === undefined) { + this._switchToSupportSector(); + returnValues = this[runFunction](); + } + else { + this._switchToSupportSector(); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + returnValues = this[runFunction](args[0],args[1]); + } + else { + returnValues = this[runFunction](argument); } + } + // we revert the global references back to our active sector + this._loadLatestSector(); + return returnValues; + }; - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; + + /** + * This runs a function in all frozen sectors. This is used in the _redraw(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we don't pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private + */ + exports._doInAllFrozenSectors = function(runFunction,argument) { + if (argument === undefined) { + for (var sector in this.sectors["frozen"]) { + if (this.sectors["frozen"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToFrozenSector(sector); + this[runFunction](); + } + } + } + else { + for (var sector in this.sectors["frozen"]) { + if (this.sectors["frozen"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToFrozenSector(sector); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + this[runFunction](args[0],args[1]); } + else { + this[runFunction](argument); + } + } } + } + this._loadLatestSector(); + }; - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; - } - config._a = []; - config._pf.empty = true; + /** + * This runs a function in all sectors. This is used in the _redraw(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we don't pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private + */ + exports._doInAllSectors = function(runFunction,argument) { + var args = Array.prototype.splice.call(arguments, 1); + if (argument === undefined) { + this._doInAllActiveSectors(runFunction); + this._doInAllFrozenSectors(runFunction); + } + else { + if (args.length > 1) { + this._doInAllActiveSectors(runFunction,args[0],args[1]); + this._doInAllFrozenSectors(runFunction,args[0],args[1]); + } + else { + this._doInAllActiveSectors(runFunction,argument); + this._doInAllFrozenSectors(runFunction,argument); + } + } + }; - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + /** + * This clears the nodeIndices list. We cannot use this.nodeIndices = [] because we would break the link with the + * active sector. Thus we clear the nodeIndices in the active sector, then reconnect the this.nodeIndices to it. + * + * @private + */ + exports._clearNodeIndexList = function() { + var sector = this._sector(); + this.sectors["active"][sector]["nodeIndices"] = []; + this.nodeIndices = this.sectors["active"][sector]["nodeIndices"]; + }; - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - config._pf.empty = false; - } - else { - config._pf.unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); - } - } - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); - } + /** + * Draw the encompassing sector node + * + * @param ctx + * @param sectorType + * @private + */ + exports._drawSectorNodes = function(ctx,sectorType) { + var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; + for (var sector in this.sectors[sectorType]) { + if (this.sectors[sectorType].hasOwnProperty(sector)) { + if (this.sectors[sectorType][sector]["drawingNode"] !== undefined) { - // clear _12h flag if hour is <= 12 - if (config._pf.bigHour === true && config._a[HOUR] <= 12) { - config._pf.bigHour = undefined; + this._switchToSector(sector,sectorType); + + minY = 1e9; maxY = -1e9; minX = 1e9; maxX = -1e9; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.resize(ctx); + if (minX > node.x - 0.5 * node.width) {minX = node.x - 0.5 * node.width;} + if (maxX < node.x + 0.5 * node.width) {maxX = node.x + 0.5 * node.width;} + if (minY > node.y - 0.5 * node.height) {minY = node.y - 0.5 * node.height;} + if (maxY < node.y + 0.5 * node.height) {maxY = node.y + 0.5 * node.height;} + } } - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], - config._meridiem); - dateFromConfig(config); - checkOverflow(config); + node = this.sectors[sectorType][sector]["drawingNode"]; + node.x = 0.5 * (maxX + minX); + node.y = 0.5 * (maxY + minY); + node.width = 2 * (node.x - minX); + node.height = 2 * (node.y - minY); + node.options.radius = Math.sqrt(Math.pow(0.5*node.width,2) + Math.pow(0.5*node.height,2)); + node.setScale(this.scale); + node._drawCircle(ctx); + } + } + } + }; + + exports._drawAllSectorNodes = function(ctx) { + this._drawSectorNodes(ctx,"frozen"); + this._drawSectorNodes(ctx,"active"); + this._loadLatestSector(); + }; + + +/***/ }, +/* 63 */ +/***/ function(module, exports, __webpack_require__) { + + var Node = __webpack_require__(40); + + /** + * This function can be called from the _doInAllSectors function + * + * @param object + * @param overlappingNodes + * @private + */ + exports._getNodesOverlappingWith = function(object, overlappingNodes) { + var nodes = this.nodes; + for (var nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + if (nodes[nodeId].isOverlappingWith(object)) { + overlappingNodes.push(nodeId); + } } + } + }; - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); - } + /** + * retrieve all nodes overlapping with given object + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes + * @private + */ + exports._getAllNodesOverlappingWith = function (object) { + var overlappingNodes = []; + this._doInAllActiveSectors("_getNodesOverlappingWith",object,overlappingNodes); + return overlappingNodes; + }; - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, + /** + * Return a position object in canvasspace from a single point in screenspace + * + * @param pointer + * @returns {{left: number, top: number, right: number, bottom: number}} + * @private + */ + exports._pointerToPositionObject = function(pointer) { + var x = this._XconvertDOMtoCanvas(pointer.x); + var y = this._YconvertDOMtoCanvas(pointer.y); - scoreToBeat, - i, - currentScore; + return { + left: x, + top: y, + right: x, + bottom: y + }; + }; - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; - } - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); + /** + * Get the top node at the a specific point (like a click) + * + * @param {{x: Number, y: Number}} pointer + * @return {Node | null} node + * @private + */ + exports._getNodeAt = function (pointer) { + // we first check if this is an navigation controls element + var positionObject = this._pointerToPositionObject(pointer); + var overlappingNodes = this._getAllNodesOverlappingWith(positionObject); - if (!isValid(tempConfig)) { - continue; - } + // if there are overlapping nodes, select the last one, this is the + // one which is drawn on top of the others + if (overlappingNodes.length > 0) { + return this.nodes[overlappingNodes[overlappingNodes.length - 1]]; + } + else { + return null; + } + }; - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + /** + * retrieve all edges overlapping with given object, selector is around center + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes + * @private + */ + exports._getEdgesOverlappingWith = function (object, overlappingEdges) { + var edges = this.edges; + for (var edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + if (edges[edgeId].isOverlappingWith(object)) { + overlappingEdges.push(edgeId); + } + } + } + }; - tempConfig._pf.score = currentScore; - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } + /** + * retrieve all nodes overlapping with given object + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes + * @private + */ + exports._getAllEdgesOverlappingWith = function (object) { + var overlappingEdges = []; + this._doInAllActiveSectors("_getEdgesOverlappingWith",object,overlappingEdges); + return overlappingEdges; + }; - extend(config, bestMoment || tempConfig); - } + /** + * Place holder. To implement change the _getNodeAt to a _getObjectAt. Have the _getObjectAt call + * _getNodeAt and _getEdgesAt, then priortize the selection to user preferences. + * + * @param pointer + * @returns {null} + * @private + */ + exports._getEdgeAt = function(pointer) { + var positionObject = this._pointerToPositionObject(pointer); + var overlappingEdges = this._getAllEdgesOverlappingWith(positionObject); - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); + if (overlappingEdges.length > 0) { + return this.edges[overlappingEdges[overlappingEdges.length - 1]]; + } + else { + return null; + } + }; - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be 'T' or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; - } - } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; - } - } - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); - } - } + /** + * Add object to the selection array. + * + * @param obj + * @private + */ + exports._addToSelection = function(obj) { + if (obj instanceof Node) { + this.selectionObj.nodes[obj.id] = obj; + } + else { + this.selectionObj.edges[obj.id] = obj; + } + }; - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } + /** + * Add object to the selection array. + * + * @param obj + * @private + */ + exports._addToHover = function(obj) { + if (obj instanceof Node) { + this.hoverObj.nodes[obj.id] = obj; + } + else { + this.hoverObj.edges[obj.id] = obj; + } + }; - function makeDateFromInput(config) { - var input = config._i, matched; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - dateFromConfig(config); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - moment.createFromInputFallback(config); - } - } - function makeDate(y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); + /** + * Remove a single option from selection. + * + * @param {Object} obj + * @private + */ + exports._removeFromSelection = function(obj) { + if (obj instanceof Node) { + delete this.selectionObj.nodes[obj.id]; + } + else { + delete this.selectionObj.edges[obj.id]; + } + }; - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; + /** + * Unselect all. The selectionObj is useful for this. + * + * @param {Boolean} [doNotTrigger] | ignore trigger + * @private + */ + exports._unselectAll = function(doNotTrigger) { + if (doNotTrigger === undefined) { + doNotTrigger = false; + } + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + this.selectionObj.nodes[nodeId].unselect(); } - - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + this.selectionObj.edges[edgeId].unselect(); } + } - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } - } - } - return input; - } + this.selectionObj = {nodes:{},edges:{}}; - /************************************ - Relative Time - ************************************/ + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); + } + }; + /** + * Unselect all clusters. The selectionObj is useful for this. + * + * @param {Boolean} [doNotTrigger] | ignore trigger + * @private + */ + exports._unselectClusters = function(doNotTrigger) { + if (doNotTrigger === undefined) { + doNotTrigger = false; + } - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (this.selectionObj.nodes[nodeId].clusterSize > 1) { + this.selectionObj.nodes[nodeId].unselect(); + this._removeFromSelection(this.selectionObj.nodes[nodeId]); + } } + } - function relativeTime(posNegDuration, withoutSuffix, locale) { - var duration = moment.duration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - years = round(duration.as('y')), + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); + } + }; - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < relativeTimeThresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < relativeTimeThresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); + /** + * return the number of selected nodes + * + * @returns {number} + * @private + */ + exports._getSelectedNodeCount = function() { + var count = 0; + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + count += 1; } + } + return count; + }; + /** + * return the selected node + * + * @returns {number} + * @private + */ + exports._getSelectedNode = function() { + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + return this.selectionObj.nodes[nodeId]; + } + } + return null; + }; - /************************************ - Week of Year - ************************************/ - + /** + * return the selected edge + * + * @returns {number} + * @private + */ + exports._getSelectedEdge = function() { + for (var edgeId in this.selectionObj.edges) { + if (this.selectionObj.edges.hasOwnProperty(edgeId)) { + return this.selectionObj.edges[edgeId]; + } + } + return null; + }; - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; + /** + * return the number of selected edges + * + * @returns {number} + * @private + */ + exports._getSelectedEdgeCount = function() { + var count = 0; + for (var edgeId in this.selectionObj.edges) { + if (this.selectionObj.edges.hasOwnProperty(edgeId)) { + count += 1; + } + } + return count; + }; - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } + /** + * return the number of selected objects. + * + * @returns {number} + * @private + */ + exports._getSelectedObjectCount = function() { + var count = 0; + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + count += 1; + } + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + count += 1; + } + } + return count; + }; - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; + /** + * Check if anything is selected + * + * @returns {boolean} + * @private + */ + exports._selectionIsEmpty = function() { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + return false; } + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + return false; + } + } + return true; + }; - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + /** + * check if one of the selected nodes is a cluster. + * + * @returns {boolean} + * @private + */ + exports._clusterInSelection = function() { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (this.selectionObj.nodes[nodeId].clusterSize > 1) { + return true; + } + } + } + return false; + }; + + /** + * select the edges connected to the node that is being selected + * + * @param {Node} node + * @private + */ + exports._selectConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.select(); + this._addToSelection(edge); + } + }; - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; - } + /** + * select the edges connected to the node that is being selected + * + * @param {Node} node + * @private + */ + exports._hoverConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.hover = true; + this._addToHover(edge); + } + }; - /************************************ - Top Level Functions - ************************************/ - function makeMoment(config) { - var input = config._i, - format = config._f, - res; + /** + * unselect the edges connected to the node that is being selected + * + * @param {Node} node + * @private + */ + exports._unselectConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.unselect(); + this._removeFromSelection(edge); + } + }; - config._locale = config._locale || moment.localeData(config._l); - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); - } - } else { - makeDateFromInput(config); - } + /** + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection + * + * @param {Node || Edge} object + * @param {Boolean} append + * @param {Boolean} [doNotTrigger] | ignore trigger + * @private + */ + exports._selectObject = function(object, append, doNotTrigger, highlightEdges, overrideSelectable) { + if (doNotTrigger === undefined) { + doNotTrigger = false; + } + if (highlightEdges === undefined) { + highlightEdges = true; + } - res = new Moment(config); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } + if (this._selectionIsEmpty() == false && append == false && this.forceAppendSelection == false) { + this._unselectAll(true); + } - return res; + // selectable allows the object to be selected. Override can be used if needed to bypass this. + if (object.selected == false && (this.constants.selectable == true || overrideSelectable)) { + object.select(); + this._addToSelection(object); + if (object instanceof Node && this.blockConnectingEdgeSelection == false && highlightEdges == true) { + this._selectConnectedEdges(object); } + } + // do not select the object if selectable is false, only add it to selection to allow drag to work + else if (object.selected == false) { + this._addToSelection(object); + doNotTrigger = true; + } + else { + object.unselect(); + this._removeFromSelection(object); + } - moment = function (input, format, locale, strict) { - var c; - - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = locale; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); - - return makeMoment(c); - }; + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); + } + }; - moment.suppressDeprecationWarnings = false; - moment.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); + /** + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection + * + * @param {Node || Edge} object + * @private + */ + exports._blurObject = function(object) { + if (object.hover == true) { + object.hover = false; + this.emit("blurNode",{node:object.id}); + } + }; - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return moment(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; - } - } - return res; + /** + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection + * + * @param {Node || Edge} object + * @private + */ + exports._hoverObject = function(object) { + if (object.hover == false) { + object.hover = true; + this._addToHover(object); + if (object instanceof Node) { + this.emit("hoverNode",{node:object.id}); } + } + if (object instanceof Node) { + this._hoverConnectedEdges(object); + } + }; - moment.min = function () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); - }; - - moment.max = function () { - var args = [].slice.call(arguments, 0); - return pickBy('isAfter', args); - }; + /** + * handles the selection part of the touch, only for navigation controls elements; + * Touch is triggered before tap, also before hold. Hold triggers after a while. + * This is the most responsive solution + * + * @param {Object} pointer + * @private + */ + exports._handleTouch = function(pointer) { + }; - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); + /** + * handles the selection part of the tap; + * + * @param {Object} pointer + * @private + */ + exports._handleTap = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null) { + this._selectObject(node, false); + } + else { + var edge = this._getEdgeAt(pointer); + if (edge != null) { + this._selectObject(edge, false); + } + else { + this._unselectAll(); + } + } + var properties = this.getSelection(); + properties['pointer'] = { + DOM: {x: pointer.x, y: pointer.y}, + canvas: {x: this._XconvertDOMtoCanvas(pointer.x), y: this._YconvertDOMtoCanvas(pointer.y)} + } + this.emit("click", properties); + this._requestRedraw(); + }; - return makeMoment(c).utc(); - }; - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + /** + * handles the selection part of the double tap and opens a cluster if needed + * + * @param {Object} pointer + * @private + */ + exports._handleDoubleTap = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null && node !== undefined) { + // we reset the areaCenter here so the opening of the node will occur + this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), + "y" : this._YconvertDOMtoCanvas(pointer.y)}; + this.openCluster(node); + } + var properties = this.getSelection(); + properties['pointer'] = { + DOM: {x: pointer.x, y: pointer.y}, + canvas: {x: this._XconvertDOMtoCanvas(pointer.x), y: this._YconvertDOMtoCanvas(pointer.y)} + } + this.emit("doubleClick", properties); + }; - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; - if (moment.isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; - duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && - ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + /** + * Handle the onHold selection part + * + * @param pointer + * @private + */ + exports._handleOnHold = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null) { + this._selectObject(node,true); + } + else { + var edge = this._getEdgeAt(pointer); + if (edge != null) { + this._selectObject(edge,true); + } + } + this._requestRedraw(); + }; - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } - ret = new Duration(duration); + /** + * handle the onRelease event. These functions are here for the navigation controls module + * and data manipulation module. + * + * @private + */ + exports._handleOnRelease = function(pointer) { + this._manipulationReleaseOverload(pointer); + this._navigationReleaseOverload(pointer); + }; - if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } + exports._manipulationReleaseOverload = function (pointer) {}; + exports._navigationReleaseOverload = function (pointer) {}; - return ret; - }; + /** + * + * retrieve the currently selected objects + * @return {{nodes: Array., edges: Array.}} selection + */ + exports.getSelection = function() { + var nodeIds = this.getSelectedNodes(); + var edgeIds = this.getSelectedEdges(); + return {nodes:nodeIds, edges:edgeIds}; + }; - // version number - moment.version = VERSION; + /** + * + * retrieve the currently selected nodes + * @return {String[]} selection An array with the ids of the + * selected nodes. + */ + exports.getSelectedNodes = function() { + var idArray = []; + if (this.constants.selectable == true) { + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + idArray.push(nodeId); + } + } + } + return idArray + }; - // default format - moment.defaultFormat = isoFormat; + /** + * + * retrieve the currently selected edges + * @return {Array} selection An array with the ids of the + * selected nodes. + */ + exports.getSelectedEdges = function() { + var idArray = []; + if (this.constants.selectable == true) { + for (var edgeId in this.selectionObj.edges) { + if (this.selectionObj.edges.hasOwnProperty(edgeId)) { + idArray.push(edgeId); + } + } + } + return idArray; + }; - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + /** + * select zero or more nodes DEPRICATED + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. + */ + exports.setSelection = function() { + console.log("setSelection is deprecated. Please use selectNodes instead.") + }; - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function (threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return relativeTimeThresholds[threshold]; - } - relativeTimeThresholds[threshold] = limit; - return true; - }; + /** + * select zero or more nodes with the option to highlight edges + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. + * @param {boolean} [highlightEdges] + */ + exports.selectNodes = function(selection, highlightEdges) { + var i, iMax, id; - moment.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - function (key, value) { - return moment.locale(key, value); - } - ); + if (!selection || (selection.length == undefined)) + throw 'Selection must be an array with ids'; - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - moment.locale = function (key, values) { - var data; - if (key) { - if (typeof(values) !== 'undefined') { - data = moment.defineLocale(key, values); - } - else { - data = moment.localeData(key); - } + // first unselect any selected node + this._unselectAll(true); - if (data) { - moment.duration._locale = moment._locale = data; - } - } + for (i = 0, iMax = selection.length; i < iMax; i++) { + id = selection[i]; - return moment._locale._abbr; - }; + var node = this.nodes[id]; + if (!node) { + throw new RangeError('Node with id "' + id + '" not found'); + } + this._selectObject(node,true,true,highlightEdges,true); + } + this.redraw(); + }; - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); - } - locales[name].set(values); - // backwards compat for now: also set the locale - moment.locale(name); + /** + * select zero or more edges + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. + */ + exports.selectEdges = function(selection) { + var i, iMax, id; - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - }; + if (!selection || (selection.length == undefined)) + throw 'Selection must be an array with ids'; - moment.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - function (key) { - return moment.localeData(key); - } - ); + // first unselect any selected node + this._unselectAll(true); - // returns locale data - moment.localeData = function (key) { - var locale; + for (i = 0, iMax = selection.length; i < iMax; i++) { + id = selection[i]; - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } + var edge = this.edges[id]; + if (!edge) { + throw new RangeError('Edge with id "' + id + '" not found'); + } + this._selectObject(edge,true,true,false,true); + } + this.redraw(); + }; - if (!key) { - return moment._locale; - } + /** + * Validate the selection: remove ids of nodes which no longer exist + * @private + */ + exports._updateSelection = function () { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (!this.nodes.hasOwnProperty(nodeId)) { + delete this.selectionObj.nodes[nodeId]; + } + } + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + if (!this.edges.hasOwnProperty(edgeId)) { + delete this.selectionObj.edges[edgeId]; + } + } + } + }; - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } - return chooseLocale(key); - }; +/***/ }, +/* 64 */ +/***/ function(module, exports, __webpack_require__) { - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && hasOwnProp(obj, '_isAMomentObject')); - }; + var util = __webpack_require__(1); + var Node = __webpack_require__(40); + var Edge = __webpack_require__(37); + var Hammer = __webpack_require__(45); - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; + /** + * clears the toolbar div element of children + * + * @private + */ + exports._clearManipulatorBar = function() { + this._recursiveDOMDelete(this.manipulationDiv); + this.manipulationDOM = {}; - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); - } + this._cleanManipulatorHammers(); - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; + this._manipulationReleaseOverload = function () {}; + delete this.sectors['support']['nodes']['targetNode']; + delete this.sectors['support']['nodes']['targetViaNode']; + this.controlNodesActive = false; + this.freezeSimulation(false); + }; - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; - } - return m; - }; + exports._cleanManipulatorHammers = function() { + // clean hammer bindings + if (this.manipulationHammers.length != 0) { + for (var i = 0; i < this.manipulationHammers.length; i++) { + this.manipulationHammers[i].dispose(); + } + this.manipulationHammers = []; + } + }; - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + /** + * Manipulation UI temporarily overloads certain functions to extend or replace them. To be able to restore + * these functions to their original functionality, we saved them in this.cachedFunctions. + * This function restores these functions to their original function. + * + * @private + */ + exports._restoreOverloadedFunctions = function() { + for (var functionName in this.cachedFunctions) { + if (this.cachedFunctions.hasOwnProperty(functionName)) { + this[functionName] = this.cachedFunctions[functionName]; + delete this.cachedFunctions[functionName]; + } + } + }; - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; + /** + * Enable or disable edit-mode. + * + * @private + */ + exports._toggleEditMode = function() { + this.editMode = !this.editMode; + var toolbar = this.manipulationDiv; + var closeDiv = this.closeDiv; + var editModeDiv = this.editModeDiv; + if (this.editMode == true) { + toolbar.style.display="block"; + closeDiv.style.display="block"; + editModeDiv.style.display="none"; + this._bindHammerToDiv(closeDiv,'_toggleEditMode'); + } + else { + toolbar.style.display="none"; + closeDiv.style.display="none"; + editModeDiv.style.display="block"; + } + this._createManipulatorBar() + }; - moment.isDate = isDate; + /** + * main function, creates the main toolbar. Removes functions bound to the select event. Binds all the buttons of the toolbar. + * + * @private + */ + exports._createManipulatorBar = function() { + // remove bound functions + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - /************************************ - Moment Prototype - ************************************/ + this._cleanManipulatorHammers(); + var locale = this.constants.locales[this.constants.locale]; - extend(moment.fn = Moment.prototype, { + if (this.edgeBeingEdited !== undefined) { + this.edgeBeingEdited._disableControlNodes(); + this.edgeBeingEdited = undefined; + this.selectedControlNode = null; + this.controlNodesActive = false; + this._redraw(); + } - clone : function () { - return moment(this); - }, + // restore overloaded functions + this._restoreOverloadedFunctions(); - valueOf : function () { - return +this._d - ((this._offset || 0) * 60000); - }, + // resume calculation + this.freezeSimulation(false); - unix : function () { - return Math.floor(+this / 1000); - }, + // reset global variables + this.blockConnectingEdgeSelection = false; + this.forceAppendSelection = false; + this.manipulationDOM = {}; - toString : function () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - }, + if (this.editMode == true) { + while (this.manipulationDiv.hasChildNodes()) { + this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); + } - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, + this.manipulationDOM['addNodeSpan'] = document.createElement('div'); + this.manipulationDOM['addNodeSpan'].className = 'network-manipulationUI add'; - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - }, + this.manipulationDOM['addNodeLabelSpan'] = document.createElement('div'); + this.manipulationDOM['addNodeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['addNodeLabelSpan'].innerHTML = locale['addNode']; + this.manipulationDOM['addNodeSpan'].appendChild(this.manipulationDOM['addNodeLabelSpan']); - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, + this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; - isValid : function () { - return isValid(this); - }, + this.manipulationDOM['addEdgeSpan'] = document.createElement('div'); + this.manipulationDOM['addEdgeSpan'].className = 'network-manipulationUI connect'; + this.manipulationDOM['addEdgeLabelSpan'] = document.createElement('div'); + this.manipulationDOM['addEdgeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['addEdgeLabelSpan'].innerHTML = locale['addEdge']; + this.manipulationDOM['addEdgeSpan'].appendChild(this.manipulationDOM['addEdgeLabelSpan']); - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } + this.manipulationDiv.appendChild(this.manipulationDOM['addNodeSpan']); + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); + this.manipulationDiv.appendChild(this.manipulationDOM['addEdgeSpan']); - return false; - }, + if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { + this.manipulationDOM['seperatorLineDiv2'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv2'].className = 'network-seperatorLine'; - parsingFlags : function () { - return extend({}, this._pf); - }, + this.manipulationDOM['editNodeSpan'] = document.createElement('div'); + this.manipulationDOM['editNodeSpan'].className = 'network-manipulationUI edit node'; + this.manipulationDOM['editNodeLabelSpan'] = document.createElement('div'); + this.manipulationDOM['editNodeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['editNodeLabelSpan'].innerHTML = locale['editNode']; + this.manipulationDOM['editNodeSpan'].appendChild(this.manipulationDOM['editNodeLabelSpan']); - invalidAt: function () { - return this._pf.overflow; - }, + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv2']); + this.manipulationDiv.appendChild(this.manipulationDOM['editNodeSpan']); + } + else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { + this.manipulationDOM['seperatorLineDiv3'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv3'].className = 'network-seperatorLine'; - utc : function (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - }, + this.manipulationDOM['editEdgeSpan'] = document.createElement('div'); + this.manipulationDOM['editEdgeSpan'].className = 'network-manipulationUI edit edge'; + this.manipulationDOM['editEdgeLabelSpan'] = document.createElement('div'); + this.manipulationDOM['editEdgeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['editEdgeLabelSpan'].innerHTML = locale['editEdge']; + this.manipulationDOM['editEdgeSpan'].appendChild(this.manipulationDOM['editEdgeLabelSpan']); - local : function (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv3']); + this.manipulationDiv.appendChild(this.manipulationDOM['editEdgeSpan']); + } + if (this._selectionIsEmpty() == false) { + this.manipulationDOM['seperatorLineDiv4'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv4'].className = 'network-seperatorLine'; - if (keepLocalTime) { - this.subtract(this._dateUtcOffset(), 'm'); - } - } - return this; - }, + this.manipulationDOM['deleteSpan'] = document.createElement('div'); + this.manipulationDOM['deleteSpan'].className = 'network-manipulationUI delete'; + this.manipulationDOM['deleteLabelSpan'] = document.createElement('div'); + this.manipulationDOM['deleteLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['deleteLabelSpan'].innerHTML = locale['del']; + this.manipulationDOM['deleteSpan'].appendChild(this.manipulationDOM['deleteLabelSpan']); - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv4']); + this.manipulationDiv.appendChild(this.manipulationDOM['deleteSpan']); + } - add : createAdder(1, 'add'), + // bind the icons + this._bindHammerToDiv(this.manipulationDOM['addNodeSpan'],'_createAddNodeToolbar'); + this._bindHammerToDiv(this.manipulationDOM['addEdgeSpan'],'_createAddEdgeToolbar'); + this._bindHammerToDiv(this.closeDiv,'_toggleEditMode'); - subtract : createAdder(-1, 'subtract'), + if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { + this._bindHammerToDiv(this.manipulationDOM['editNodeSpan'],'_editNode'); + } + else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { + this._bindHammerToDiv(this.manipulationDOM['editEdgeSpan'],'_createEditEdgeToolbar'); + } + if (this._selectionIsEmpty() == false) { + this._bindHammerToDiv(this.manipulationDOM['deleteSpan'],'_deleteSelected'); + } - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, - anchor, diff, output, daysAdjust; + var me = this; + this.boundFunction = me._createManipulatorBar; + this.on('select', this.boundFunction); + } + else { + while (this.editModeDiv.hasChildNodes()) { + this.editModeDiv.removeChild(this.editModeDiv.firstChild); + } - units = normalizeUnits(units); + this.manipulationDOM['editModeSpan'] = document.createElement('div'); + this.manipulationDOM['editModeSpan'].className = 'network-manipulationUI edit editmode'; + this.manipulationDOM['editModeLabelSpan'] = document.createElement('div'); + this.manipulationDOM['editModeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['editModeLabelSpan'].innerHTML = locale['edit']; + this.manipulationDOM['editModeSpan'].appendChild(this.manipulationDOM['editModeLabelSpan']); - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - diff = this - that; - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, + this.editModeDiv.appendChild(this.manipulationDOM['editModeSpan']); - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, + this._bindHammerToDiv(this.manipulationDOM['editModeSpan'],'_toggleEditMode'); + } + }; - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're locat/utc/offset - // or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this, moment(now))); - }, + exports._bindHammerToDiv = function(domElement, funct) { + var hammer = Hammer(domElement, {prevent_default: true}); + hammer.on('touch', this[funct].bind(this)); + this.manipulationHammers.push(hammer); + } - isLeapYear : function () { - return isLeapYear(this.year()); - }, - isDST : function () { - return (this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset()); - }, + /** + * Create the toolbar for adding Nodes + * + * @private + */ + exports._createAddNodeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - }, + var locale = this.constants.locales[this.constants.locale]; - month : makeAccessor('Month', true), + this.manipulationDOM = {}; + this.manipulationDOM['backSpan'] = document.createElement('div'); + this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; + this.manipulationDOM['backLabelSpan'] = document.createElement('div'); + this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; + this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); - startOf : function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ - } + this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } + this.manipulationDOM['descriptionSpan'] = document.createElement('div'); + this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; + this.manipulationDOM['descriptionLabelSpan'] = document.createElement('div'); + this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['addDescription']; + this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } + this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); + this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); - return this; - }, + // bind the icon + this._bindHammerToDiv(this.manipulationDOM['backSpan'],'_createManipulatorBar'); - endOf: function (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, + // we use the boundFunction so we can reference it when we unbind it from the "select" event. + var me = this; + this.boundFunction = me._addNode; + this.on('select', this.boundFunction); + }; - isAfter: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this > +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return inputMs < +this.clone().startOf(units); - } - }, - isBefore: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this < +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return +this.clone().endOf(units) < inputMs; - } - }, + /** + * create the toolbar to connect nodes + * + * @private + */ + exports._createAddEdgeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + this._unselectAll(true); + this.freezeSimulation(true); - isBetween: function (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); - }, + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - isSame: function (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this === +input; - } else { - inputMs = +moment(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); - } - }, + var locale = this.constants.locales[this.constants.locale]; - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), + this._unselectAll(); + this.forceAppendSelection = false; + this.blockConnectingEdgeSelection = true; - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), + this.manipulationDOM = {}; + this.manipulationDOM['backSpan'] = document.createElement('div'); + this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; + this.manipulationDOM['backLabelSpan'] = document.createElement('div'); + this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; + this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); - zone : deprecate( - 'moment().zone is deprecated, use moment().utcOffset instead. ' + - 'https://github.com/moment/moment/issues/1779', - function (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } + this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; - this.utcOffset(input, keepLocalTime); + this.manipulationDOM['descriptionSpan'] = document.createElement('div'); + this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; + this.manipulationDOM['descriptionLabelSpan'] = document.createElement('div'); + this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['edgeDescription']; + this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); - return this; - } else { - return -this.utcOffset(); - } - } - ), + this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); + this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - utcOffset : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = utcOffsetFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._dateUtcOffset(); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } - } + // bind the icon + this._bindHammerToDiv(this.manipulationDOM['backSpan'],'_createManipulatorBar'); - return this; - } else { - return this._isUTC ? offset : this._dateUtcOffset(); - } - }, + // we use the boundFunction so we can reference it when we unbind it from the "select" event. + var me = this; + this.boundFunction = me._handleConnect; + this.on('select', this.boundFunction); - isLocal : function () { - return !this._isUTC; - }, + // temporarily overload functions + this.cachedFunctions["_handleTouch"] = this._handleTouch; + this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload; + this.cachedFunctions["_handleDragStart"] = this._handleDragStart; + this.cachedFunctions["_handleDragEnd"] = this._handleDragEnd; + this.cachedFunctions["_handleOnHold"] = this._handleOnHold; + this._handleTouch = this._handleConnect; + this._manipulationReleaseOverload = function () {}; + this._handleOnHold = function () {}; + this._handleDragStart = function () {}; + this._handleDragEnd = this._finishConnect; - isUtcOffset : function () { - return this._isUTC; - }, + // redraw to show the unselect + this._redraw(); + }; - isUtc : function () { - return this._isUTC && this._offset === 0; - }, + /** + * create the toolbar to edit edges + * + * @private + */ + exports._createEditEdgeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + this.controlNodesActive = true; - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, + this.edgeBeingEdited = this._getSelectedEdge(); + this.edgeBeingEdited._enableControlNodes(); - parseZone : function () { - if (this._tzm) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - this.utcOffset(utcOffsetFromString(this._i)); - } - return this; - }, + var locale = this.constants.locales[this.constants.locale]; - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).utcOffset(); - } + this.manipulationDOM = {}; + this.manipulationDOM['backSpan'] = document.createElement('div'); + this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; + this.manipulationDOM['backLabelSpan'] = document.createElement('div'); + this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; + this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); - return (this.utcOffset() - input) % 60 === 0; - }, + this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + this.manipulationDOM['descriptionSpan'] = document.createElement('div'); + this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; + this.manipulationDOM['descriptionLabelSpan'] = document.createElement('div'); + this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['editEdgeDescription']; + this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - }, + this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); + this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + // bind the icon + this._bindHammerToDiv(this.manipulationDOM['backSpan'],'_createManipulatorBar'); - weekYear : function (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - }, + // temporarily overload functions + this.cachedFunctions["_handleTouch"] = this._handleTouch; + this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload; + this.cachedFunctions["_handleTap"] = this._handleTap; + this.cachedFunctions["_handleDragStart"] = this._handleDragStart; + this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; + this._handleTouch = this._selectControlNode; + this._handleTap = function () {}; + this._handleOnDrag = this._controlNodeDrag; + this._handleDragStart = function () {} + this._manipulationReleaseOverload = this._releaseControlNode; - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, + // redraw to show the unselect + this._redraw(); + }; - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + /** + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. + * + * @private + */ + exports._selectControlNode = function(pointer) { + this.edgeBeingEdited.controlNodes.from.unselect(); + this.edgeBeingEdited.controlNodes.to.unselect(); + this.selectedControlNode = this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(pointer.x),this._YconvertDOMtoCanvas(pointer.y)); + if (this.selectedControlNode !== null) { + this.selectedControlNode.select(); + this.freezeSimulation(true); + } + this._redraw(); + }; - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, + /** + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. + * + * @private + */ + exports._controlNodeDrag = function(event) { + var pointer = this._getPointer(event.gesture.center); + if (this.selectedControlNode !== null && this.selectedControlNode !== undefined) { + this.selectedControlNode.x = this._XconvertDOMtoCanvas(pointer.x); + this.selectedControlNode.y = this._YconvertDOMtoCanvas(pointer.y); + } + this._redraw(); + }; - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, + /** + * + * @param pointer + * @private + */ + exports._releaseControlNode = function(pointer) { + var newNode = this._getNodeAt(pointer); + if (newNode !== null) { + if (this.edgeBeingEdited.controlNodes.from.selected == true) { + this.edgeBeingEdited._restoreControlNodes(); + this._editEdge(newNode.id, this.edgeBeingEdited.to.id); + this.edgeBeingEdited.controlNodes.from.unselect(); + } + if (this.edgeBeingEdited.controlNodes.to.selected == true) { + this.edgeBeingEdited._restoreControlNodes(); + this._editEdge(this.edgeBeingEdited.from.id, newNode.id); + this.edgeBeingEdited.controlNodes.to.unselect(); + } + } + else { + this.edgeBeingEdited._restoreControlNodes(); + } + this.freezeSimulation(false); + this._redraw(); + }; - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, + /** + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. + * + * @private + */ + exports._handleConnect = function(pointer) { + if (this._getSelectedNodeCount() == 0) { + var node = this._getNodeAt(pointer); - set : function (units, value) { - var unit; - if (typeof units === 'object') { - for (unit in units) { - this.set(unit, units[unit]); - } - } - else { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); - } - } - return this; - }, + if (node != null) { + if (node.clusterSize > 1) { + alert(this.constants.locales[this.constants.locale]['createEdgeError']) + } + else { + this._selectObject(node,false); + var supportNodes = this.sectors['support']['nodes']; - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - var newLocaleData; + // create a node the temporary line can look at + supportNodes['targetNode'] = new Node({id:'targetNode'},{},{},this.constants); + var targetNode = supportNodes['targetNode']; + targetNode.x = node.x; + targetNode.y = node.y; - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = moment.localeData(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - }, + // create a temporary edge + this.edges['connectionEdge'] = new Edge({id:"connectionEdge",from:node.id,to:targetNode.id}, this, this.constants); + var connectionEdge = this.edges['connectionEdge']; + connectionEdge.from = node; + connectionEdge.connected = true; + connectionEdge.options.smoothCurves = {enabled: true, + dynamic: false, + type: "continuous", + roundness: 0.5 + }; + connectionEdge.selected = true; + connectionEdge.to = targetNode; - lang : deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ), + this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; + var me = this; + this._handleOnDrag = function(event) { + var pointer = this._getPointer(event.gesture.center); + var connectionEdge = me.edges['connectionEdge']; + connectionEdge.to.x = me._XconvertDOMtoCanvas(pointer.x); + connectionEdge.to.y = me._YconvertDOMtoCanvas(pointer.y); + me._redraw(); + }; - localeData : function () { - return this._locale; - }, + this.moving = true; + this.start(); + } + } + } + }; - _dateUtcOffset : function () { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(this._d.getTimezoneOffset() / 15) * 15; - } + exports._finishConnect = function(event) { + if (this._getSelectedNodeCount() == 1) { + var pointer = this._getPointer(event.gesture.center); + // restore the drag function + this._handleOnDrag = this.cachedFunctions["_handleOnDrag"]; + delete this.cachedFunctions["_handleOnDrag"]; - }); + // remember the edge id + var connectFromId = this.edges['connectionEdge'].fromId; - function rawMonthSetter(mom, value) { - var dayOfMonth; + // remove the temporary nodes and edge + delete this.edges['connectionEdge']; + delete this.sectors['support']['nodes']['targetNode']; + delete this.sectors['support']['nodes']['targetViaNode']; - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } - } + var node = this._getNodeAt(pointer); + if (node != null) { + if (node.clusterSize > 1) { + alert(this.constants.locales[this.constants.locale]["createEdgeError"]) + } + else { + this._createEdge(connectFromId,node.id); + this._createManipulatorBar(); + } + } + this._unselectAll(); + } + }; + + + /** + * Adds a node on the specified location + */ + exports._addNode = function() { + if (this._selectionIsEmpty() && this.editMode == true) { + var positionObject = this._pointerToPositionObject(this.pointerPosition); + var defaultData = {id:util.randomUUID(),x:positionObject.left,y:positionObject.top,label:"new",allowedToMoveX:true,allowedToMoveY:true}; + if (this.triggerFunctions.add) { + if (this.triggerFunctions.add.length == 2) { + var me = this; + this.triggerFunctions.add(defaultData, function(finalizedData) { + me.nodesData.add(finalizedData); + me._createManipulatorBar(); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for add does not support two arguments (data,callback)'); + this._createManipulatorBar(); + this.moving = true; + this.start(); + } + } + else { + this.nodesData.add(defaultData); + this._createManipulatorBar(); + this.moving = true; + this.start(); + } + } + }; - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; + + /** + * connect two nodes with a new edge. + * + * @private + */ + exports._createEdge = function(sourceNodeId,targetNodeId) { + if (this.editMode == true) { + var defaultData = {from:sourceNodeId, to:targetNodeId}; + if (this.triggerFunctions.connect) { + if (this.triggerFunctions.connect.length == 2) { + var me = this; + this.triggerFunctions.connect(defaultData, function(finalizedData) { + me.edgesData.add(finalizedData); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for connect does not support two arguments (data,callback)'); + this.moving = true; + this.start(); + } + } + else { + this.edgesData.add(defaultData); + this.moving = true; + this.start(); } + } + }; - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + /** + * connect two nodes with a new edge. + * + * @private + */ + exports._editEdge = function(sourceNodeId,targetNodeId) { + if (this.editMode == true) { + var defaultData = {id: this.edgeBeingEdited.id, from:sourceNodeId, to:targetNodeId}; + if (this.triggerFunctions.editEdge) { + if (this.triggerFunctions.editEdge.length == 2) { + var me = this; + this.triggerFunctions.editEdge(defaultData, function(finalizedData) { + me.edgesData.update(finalizedData); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for edit does not support two arguments (data, callback)'); + this.moving = true; + this.start(); + } + } + else { + this.edgesData.update(defaultData); + this.moving = true; + this.start(); } + } + }; - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + /** + * Create the toolbar to edit the selected node. The label and the color can be changed. Other colors are derived from the chosen color. + * + * @private + */ + exports._editNode = function() { + if (this.triggerFunctions.edit && this.editMode == true) { + var node = this._getSelectedNode(); + var data = {id:node.id, + label: node.label, + group: node.options.group, + shape: node.options.shape, + color: { + background:node.options.color.background, + border:node.options.color.border, + highlight: { + background:node.options.color.highlight.background, + border:node.options.color.highlight.border } + }}; + if (this.triggerFunctions.edit.length == 2) { + var me = this; + this.triggerFunctions.edit(data, function (finalizedData) { + me.nodesData.update(finalizedData); + me._createManipulatorBar(); + me.moving = true; + me.start(); + }); } - - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; - } else { - return rawGetter(this, unit); - } - }; + else { + throw new Error('The function for edit does not support two arguments (data, callback)'); } + } + else { + throw new Error('No edit function has been bound to this button'); + } + }; - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; - // alias isUtc for dev-friendliness - moment.fn.isUTC = moment.fn.isUtc; + /** + * delete everything in the selection + * + * @private + */ + exports._deleteSelected = function() { + if (!this._selectionIsEmpty() && this.editMode == true) { + if (!this._clusterInSelection()) { + var selectedNodes = this.getSelectedNodes(); + var selectedEdges = this.getSelectedEdges(); + if (this.triggerFunctions.del) { + var me = this; + var data = {nodes: selectedNodes, edges: selectedEdges}; + if (this.triggerFunctions.del.length == 2) { + this.triggerFunctions.del(data, function (finalizedData) { + me.edgesData.remove(finalizedData.edges); + me.nodesData.remove(finalizedData.nodes); + me._unselectAll(); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for delete does not support two arguments (data, callback)') + } + } + else { + this.edgesData.remove(selectedEdges); + this.nodesData.remove(selectedNodes); + this._unselectAll(); + this.moving = true; + this.start(); + } + } + else { + alert(this.constants.locales[this.constants.locale]["deleteClusterError"]); + } + } + }; - /************************************ - Duration Prototype - ************************************/ +/***/ }, +/* 65 */ +/***/ function(module, exports, __webpack_require__) { - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; - } + var util = __webpack_require__(1); + var Hammer = __webpack_require__(45); - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; + exports._cleanNavigation = function() { + // clean hammer bindings + if (this.navigationHammers.length != 0) { + for (var i = 0; i < this.navigationHammers.length; i++) { + this.navigationHammers[i].dispose(); } + this.navigationHammers = []; + } - extend(moment.duration.fn = Duration.prototype, { - - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; - - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + this._navigationReleaseOverload = function () {}; - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + // clean up previous navigation items + if (this.navigationDOM && this.navigationDOM['wrapper'] && this.navigationDOM['wrapper'].parentNode) { + this.navigationDOM['wrapper'].parentNode.removeChild(this.navigationDOM['wrapper']); + } + }; - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + /** + * Creation of the navigation controls nodes. They are drawn over the rest of the nodes and are not affected by scale and translation + * they have a triggerFunction which is called on click. If the position of the navigation controls is dependent + * on this.frame.canvas.clientWidth or this.frame.canvas.clientHeight, we flag horizontalAlignLeft and verticalAlignTop false. + * This means that the location will be corrected by the _relocateNavigation function on a size change of the canvas. + * + * @private + */ + exports._loadNavigationElements = function() { + this._cleanNavigation(); - hours = absRound(minutes / 60); - data.hours = hours % 24; + this.navigationDOM = {}; + var navigationDivs = ['up','down','left','right','zoomIn','zoomOut','zoomExtends']; + var navigationDivActions = ['_moveUp','_moveDown','_moveLeft','_moveRight','_zoomIn','_zoomOut','_zoomExtent']; - days += absRound(hours / 24); + this.navigationDOM['wrapper'] = document.createElement('div'); + this.frame.appendChild(this.navigationDOM['wrapper']); - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); + for (var i = 0; i < navigationDivs.length; i++) { + this.navigationDOM[navigationDivs[i]] = document.createElement('div'); + this.navigationDOM[navigationDivs[i]].className = 'network-navigation ' + navigationDivs[i]; + this.navigationDOM['wrapper'].appendChild(this.navigationDOM[navigationDivs[i]]); - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + var hammer = Hammer(this.navigationDOM[navigationDivs[i]], {prevent_default: true}); + hammer.on('touch', this[navigationDivActions[i]].bind(this)); + this.navigationHammers.push(hammer); + } - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; + this._navigationReleaseOverload = this._stopMovement; - data.days = days; - data.months = months; - data.years = years; - }, + }; - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); - this._data.milliseconds = Math.abs(this._data.milliseconds); - this._data.seconds = Math.abs(this._data.seconds); - this._data.minutes = Math.abs(this._data.minutes); - this._data.hours = Math.abs(this._data.hours); - this._data.months = Math.abs(this._data.months); - this._data.years = Math.abs(this._data.years); + /** + * this stops all movement induced by the navigation buttons + * + * @private + */ + exports._zoomExtent = function(event) { + this.zoomExtent({duration:700}); + event.stopPropagation(); + }; - return this; - }, + /** + * this stops all movement induced by the navigation buttons + * + * @private + */ + exports._stopMovement = function() { + this._xStopMoving(); + this._yStopMoving(); + this._stopZoom(); + }; - weeks : function () { - return absRound(this.days() / 7); - }, - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + /** + * move the screen up + * By using the increments, instead of adding a fixed number to the translation, we keep fluent and + * instant movement. The onKeypress event triggers immediately, then pauses, then triggers frequently + * To avoid this behaviour, we do the translation in the start loop. + * + * @private + */ + exports._moveUp = function(event) { + this.yIncrement = this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); - } + /** + * move the screen down + * @private + */ + exports._moveDown = function(event) { + this.yIncrement = -this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - return this.localeData().postformat(output); - }, - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); + /** + * move the screen left + * @private + */ + exports._moveLeft = function(event) { + this.xIncrement = this.constants.keyboard.speed.x; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; - this._bubble(); + /** + * move the screen right + * @private + */ + exports._moveRight = function(event) { + this.xIncrement = -this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - return this; - }, - subtract : function (input, val) { - var dur = moment.duration(input, val); + /** + * Zoom in, using the same method as the movement. + * @private + */ + exports._zoomIn = function(event) { + this.zoomIncrement = this.constants.keyboard.speed.zoom; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; - this._bubble(); + /** + * Zoom out + * @private + */ + exports._zoomOut = function(event) { + this.zoomIncrement = -this.constants.keyboard.speed.zoom; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - return this; - }, - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, + /** + * Stop zooming and unhighlight the zoom controls + * @private + */ + exports._stopZoom = function(event) { + this.zoomIncrement = 0; + event && event.preventDefault(); + }; - as : function (units) { - var days, months; - units = normalizeUnits(units); - if (units === 'month' || units === 'year') { - days = this._days + this._milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(yearsToDays(this._months / 12)); - switch (units) { - case 'week': return days / 7 + this._milliseconds / 6048e5; - case 'day': return days + this._milliseconds / 864e5; - case 'hour': return days * 24 + this._milliseconds / 36e5; - case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; - case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } - }, + /** + * Stop moving in the Y direction and unHighlight the up and down + * @private + */ + exports._yStopMoving = function(event) { + this.yIncrement = 0; + event && event.preventDefault(); + }; - lang : moment.fn.lang, - locale : moment.fn.locale, - toIsoString : deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead ' + - '(notice the capitals)', - function () { - return this.toISOString(); - } - ), + /** + * Stop moving in the X direction and unHighlight left and right. + * @private + */ + exports._xStopMoving = function(event) { + this.xIncrement = 0; + event && event.preventDefault(); + }; - toISOString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } +/***/ }, +/* 66 */ +/***/ function(module, exports, __webpack_require__) { - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); - }, + exports._resetLevels = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.preassignedLevel == false) { + node.level = -1; + node.hierarchyEnumerated = false; + } + } + } + }; - localeData : function () { - return this._locale; - }, + /** + * This is the main function to layout the nodes in a hierarchical way. + * It checks if the node details are supplied correctly + * + * @private + */ + exports._setupHierarchicalLayout = function() { + if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { + // get the size of the largest hubs and check if the user has defined a level for a node. + var hubsize = 0; + var node, nodeId; + var definedLevel = false; + var undefinedLevel = false; - toJSON : function () { - return this.toISOString(); + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level != -1) { + definedLevel = true; } - }); - - moment.duration.fn.toString = moment.duration.fn.toISOString; + else { + undefinedLevel = true; + } + if (hubsize < node.edges.length) { + hubsize = node.edges.length; + } + } + } - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; + // if the user defined some levels but not all, alert and run without hierarchical layout + if (undefinedLevel == true && definedLevel == true) { + throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); + this.zoomExtent({duration:0},true,this.constants.clustering.enabled); + if (!this.constants.clustering.enabled) { + this.start(); + } } + else { + // setup the system to use hierarchical method. + this._changeConstants(); - for (i in unitMillisecondFactors) { - if (hasOwnProp(unitMillisecondFactors, i)) { - makeDurationGetter(i.toLowerCase()); + // define levels if undefined by the users. Based on hubsize + if (undefinedLevel == true) { + if (this.constants.hierarchicalLayout.layout == "hubsize") { + this._determineLevels(hubsize); + } + else { + this._determineLevelsDirected(false); } - } - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); - }; + } + // check the distribution of the nodes per level. + var distribution = this._getDistribution(); - /************************************ - Default Locale - ************************************/ + // place the nodes on the canvas. This also stablilizes the system. + this._placeNodesByHierarchy(distribution); + // start the simulation. + this.start(); + } + } + }; - // Set default locale, other locale will inherit from English. - moment.locale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); - /* EMBED_LOCALES */ + /** + * This function places the nodes on the canvas based on the hierarchial distribution. + * + * @param {Object} distribution | obtained by the function this._getDistribution() + * @private + */ + exports._placeNodesByHierarchy = function(distribution) { + var nodeId, node; - /************************************ - Exposing Moment - ************************************/ + // start placing all the level 0 nodes first. Then recursively position their branches. + for (var level in distribution) { + if (distribution.hasOwnProperty(level)) { - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - 'Accessing Moment through the global scope is ' + - 'deprecated, and will be removed in an upcoming ' + - 'release.', - moment); - } else { - globalScope.moment = moment; - } - } + for (nodeId in distribution[level].nodes) { + if (distribution[level].nodes.hasOwnProperty(nodeId)) { + node = distribution[level].nodes[nodeId]; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (node.xFixed) { + node.x = distribution[level].minPos; + node.xFixed = false; - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; + distribution[level].minPos += distribution[level].nodeSpacing; } + } + else { + if (node.yFixed) { + node.y = distribution[level].minPos; + node.yFixed = false; - return moment; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - makeGlobal(true); - } else { - makeGlobal(); + distribution[level].minPos += distribution[level].nodeSpacing; + } + } + this._placeBranchNodes(node.edges,node.id,distribution,node.level); + } + } } - }).call(this); + } - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) + // stabilize the system after positioning. This function calls zoomExtent. + this._stabilize(); + }; -/***/ }, -/* 66 */ -/***/ function(module, exports, __webpack_require__) { - /** - * Expose `Emitter`. + * This function get the distribution of levels based on hubsize + * + * @returns {Object} + * @private */ + exports._getDistribution = function() { + var distribution = {}; + var nodeId, node, level; - module.exports = Emitter; + // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. + // the fix of X is removed after the x value has been set. + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.xFixed = true; + node.yFixed = true; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + else { + node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + if (distribution[node.level] === undefined) { + distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; + } + distribution[node.level].amount += 1; + distribution[node.level].nodes[nodeId] = node; + } + } - /** - * Initialize a new `Emitter`. - * - * @api public - */ + // determine the largest amount of nodes of all levels + var maxCount = 0; + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + if (maxCount < distribution[level].amount) { + maxCount = distribution[level].amount; + } + } + } - function Emitter(obj) { - if (obj) return mixin(obj); + // set the initial position and spacing of each nodes accordingly + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; + distribution[level].nodeSpacing /= (distribution[level].amount + 1); + distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); + } + } + + return distribution; }; + /** - * Mixin the emitter properties. + * this function allocates nodes in levels based on the recursive branching from the largest hubs. * - * @param {Object} obj - * @return {Object} - * @api private + * @param hubsize + * @private */ + exports._determineLevels = function(hubsize) { + var nodeId, node; - function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; + // determine hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.edges.length == hubsize) { + node.level = 0; + } + } } - return obj; - } - - /** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - Emitter.prototype.on = - Emitter.prototype.addEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks[event] = this._callbacks[event] || []) - .push(fn); - return this; + // branch from hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level == 0) { + this._setLevel(1,node.edges,node.id); + } + } + } }; + + /** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. + * this function allocates nodes in levels based on the direction of the edges * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public + * @param hubsize + * @private */ + exports._determineLevelsDirected = function() { + var nodeId, node, firstNode; + var minLevel = 10000; - Emitter.prototype.once = function(event, fn){ - var self = this; - this._callbacks = this._callbacks || {}; + // set first node to source + firstNode = this.nodes[this.nodeIndices[0]]; + firstNode.level = minLevel; + this._setLevelDirected(minLevel,firstNode.edges,firstNode.id); - function on() { - self.off(event, on); - fn.apply(this, arguments); + // get the minimum level + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + minLevel = node.level < minLevel ? node.level : minLevel; + } } - on.fn = fn; - this.on(event, on); - return this; + // subtract the minimum from the set so we have a range starting from 0 + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.level -= minLevel; + } + } }; + /** - * Remove the given callback for `event` or all - * registered callbacks. + * Since hierarchical layout does not support: + * - smooth curves (based on the physics), + * - clustering (based on dynamic node counts) * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public + * We disable both features so there will be no problems. + * + * @private */ - - Emitter.prototype.off = - Emitter.prototype.removeListener = - Emitter.prototype.removeAllListeners = - Emitter.prototype.removeEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; + exports._changeConstants = function() { + this.constants.clustering.enabled = false; + this.constants.physics.barnesHut.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this._loadSelectedForceSolver(); + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.dynamic = false; } + this._configureSmoothCurves(); - // specific event - var callbacks = this._callbacks[event]; - if (!callbacks) return this; - - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks[event]; - return this; + var config = this.constants.hierarchicalLayout; + config.levelSeparation = Math.abs(config.levelSeparation); + if (config.direction == "RL" || config.direction == "DU") { + config.levelSeparation *= -1; } - // remove specific handler - var cb; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; + if (config.direction == "RL" || config.direction == "LR") { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "vertical"; + } + } + else { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "horizontal"; } } - return this; }; + /** - * Emit `event` with the given args. + * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes + * on a X position that ensures there will be no overlap. * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} + * @param edges + * @param parentId + * @param distribution + * @param parentLevel + * @private */ + exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + } + else { + childNode = edges[i].to; + } - Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - var args = [].slice.call(arguments, 1) - , callbacks = this._callbacks[event]; + // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. + var nodeMoved = false; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (childNode.xFixed && childNode.level > parentLevel) { + childNode.xFixed = false; + childNode.x = distribution[childNode.level].minPos; + nodeMoved = true; + } + } + else { + if (childNode.yFixed && childNode.level > parentLevel) { + childNode.yFixed = false; + childNode.y = distribution[childNode.level].minPos; + nodeMoved = true; + } + } - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); + if (nodeMoved == true) { + distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; + if (childNode.edges.length > 1) { + this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); + } } } + }; - return this; + + /** + * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. + * + * @param level + * @param edges + * @param parentId + * @private + */ + exports._setLevel = function(level, edges, parentId) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + } + else { + childNode = edges[i].to; + } + if (childNode.level == -1 || childNode.level > level) { + childNode.level = level; + if (childNode.edges.length > 1) { + this._setLevel(level+1, childNode.edges, childNode.id); + } + } + } }; + /** - * Return array of callbacks for `event`. + * this function is called recursively to enumerate the branched of the first node and give each node a level based on edge direction * - * @param {String} event - * @return {Array} - * @api public + * @param level + * @param edges + * @param parentId + * @private */ + exports._setLevelDirected = function(level, edges, parentId) { + this.nodes[parentId].hierarchyEnumerated = true; + var childNode, direction; + for (var i = 0; i < edges.length; i++) { + direction = 1; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + direction = -1; + } + else { + childNode = edges[i].to; + } + if (childNode.level == -1) { + childNode.level = level + direction; + } + } - Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks[event] || []; + for (var i = 0; i < edges.length; i++) { + if (edges[i].toId == parentId) {childNode = edges[i].from;} + else {childNode = edges[i].to;} + + if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { + this._setLevelDirected(childNode.level, childNode.edges, childNode.id); + } + } }; + /** - * Check if this emitter has `event` handlers. + * Unfix nodes * - * @param {String} event - * @return {Boolean} - * @api public + * @private */ - - Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; + exports._restoreNodes = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.nodes[nodeId].xFixed = false; + this.nodes[nodeId].yFixed = false; + } + } }; /***/ }, /* 67 */ +/***/ function(module, exports, __webpack_require__) { + + function webpackContext(req) { + throw new Error("Cannot find module '" + req + "'."); + } + webpackContext.keys = function() { return []; }; + webpackContext.resolve = webpackContext; + module.exports = webpackContext; + webpackContext.id = 67; + + +/***/ }, +/* 68 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35020,7 +35066,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 68 */ +/* 69 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35179,7 +35225,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 69 */ +/* 70 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35583,19 +35629,6 @@ return /******/ (function(modules) { // webpackBootstrap }; -/***/ }, -/* 70 */ -/***/ function(module, exports, __webpack_require__) { - - function webpackContext(req) { - throw new Error("Cannot find module '" + req + "'."); - } - webpackContext.keys = function() { return []; }; - webpackContext.resolve = webpackContext; - module.exports = webpackContext; - webpackContext.id = 70; - - /***/ }, /* 71 */ /***/ function(module, exports, __webpack_require__) { diff --git a/dist/vis.map b/dist/vis.map index c1221d1e..98785c1d 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","config","parentId","parentLevel","nodeMoved","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","self","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","_callbacks","once","removeListener","removeAllListeners","callbacks","cb","hasListeners","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackContext","req","resolve","webpackPolyfill","paths"],"mappings":"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AQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index d7f37609..862f77e1 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.11.1-SNAPSHOT - * @date 2015-03-09 + * @date 2015-03-10 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -22,18 +22,18 @@ * * Vis.js may be distributed under either license. */ -"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);else for(var s in t)t.hasOwnProperty(s)&&e.hasOwnProperty(s)&&(i[e[s]]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(66),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var S=this.yLabel;S.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(S,o.x,o.y));var D=this.zLabel;D.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(D,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/D/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
    x:"+t.point.x+"
    y:"+t.point.y+"
    z:"+t.point.z+"
    ",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index] -},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(66),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)?m="current-time":o.hasParent(u,this.dom.center)&&(m="background"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(66),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},s.prototype.getEventProperties=function(t){var e=t.gesture?t.gesture.center.pageX:t.pageX,i=t.gesture?t.gesture.center.pageY:t.pageY,s=e-o.getAbsoluteLeft(this.dom.centerContainer),n=i-o.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(s),a=o.getTarget(t),h=null;o.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&o.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":o.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":o.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":o.hasParent(a,this.customTime.bar)?h="custom-time":o.hasParent(a,this.currentTime.bar)?h="current-time":o.hasParent(a,this.dom.center)&&(h="background");var d=[],l=this.linegraph.yAxisLeft,c=this.linegraph.yAxisRight;return l.hidden||d.push(l.screenToValue(n)),c.hidden||d.push(c.screenToValue(n)),{event:t,what:h,pageX:e,pageY:i,x:s,y:n,time:r,value:d}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);else for(var s in t)t.hasOwnProperty(s)&&e.hasOwnProperty(s)&&(i[e[s]]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var D=this.yLabel;D.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(D,o.x,o.y));var S=this.zLabel;S.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(S,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+D.x/S/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
    x:"+t.point.x+"
    y:"+t.point.y+"
    z:"+t.point.z+"
    ",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index] +},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)?m="current-time":o.hasParent(u,this.dom.center)&&(m="background"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},s.prototype.getEventProperties=function(t){var e=t.gesture?t.gesture.center.pageX:t.pageX,i=t.gesture?t.gesture.center.pageY:t.pageY,s=e-o.getAbsoluteLeft(this.dom.centerContainer),n=i-o.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(s),a=o.getTarget(t),h=null;o.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&o.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":o.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":o.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":o.hasParent(a,this.customTime.bar)?h="custom-time":o.hasParent(a,this.currentTime.bar)?h="current-time":o.hasParent(a,this.dom.center)&&(h="background");var d=[],l=this.linegraph.yAxisLeft,c=this.linegraph.yAxisRight;return l.hidden||d.push(l.screenToValue(n)),c.hidden||d.push(c.screenToValue(n)),{event:t,what:h,pageX:e,pageY:i,x:s,y:n,time:r,value:d}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start })},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg) -},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.clientY:t.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1; -var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(66),n=i(45),r=i(56),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes(); +},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.clientY:t.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1; +var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=this.nodesData._fieldId||null,s=0,o=t.length;o>s;s++){e=t[s];var n=this.nodesData.get(e);i&&(n.id=n[i]);var r=new f(n,this.images,this.groups,this.constants);if(this.nodes[e]=r,!(0!=r.xFixed&&0!=r.yFixed||null!==r.x&&null!==r.y)){var a=1*t.length+10,h=2*Math.PI*Math.random();0==r.xFixed&&(r.x=a*Math.cos(h)),0==r.yFixed&&(r.y=a*Math.sin(h))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=this.edgesData._fieldId,o=0,n=t.length;n>o;o++){var r=t[o],a=e[r];a&&a.disconnect();var h=i.get(r,{showInternalIds:!0});s&&(h.id=h[s]),e[r]=new g(h,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes(); for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy -},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=M.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=M.DELIMITER);var i=E+n();if(C[i])return N=M.DELIMITER,k=i,o(),void o();if(C[E])return N=M.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=M.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=M.IDENTIFIER)}for(N=M.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==M.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=M.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=M.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==M.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=M.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=M.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=M.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),S(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=M.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=D},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Ie.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Ce.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return b(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){Si[t]||(d(e),Si[t]=!0)}function p(t,e){return function(i){return w(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function m(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Mi===!1&&(Mi=!0,Ce.updateOffset(this),Mi=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2) -},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Si={},Di=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Mi=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=D(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Di.length-1;Oe>=0;--Oe)I(Di[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:M(1,"add"),subtract:M(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Se(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Se(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&De(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Me(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=70},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=M.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=M.DELIMITER);var i=E+n();if(C[i])return N=M.DELIMITER,k=i,o(),void o();if(C[E])return N=M.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=M.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=M.IDENTIFIER)}for(N=M.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==M.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=M.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=M.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==M.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=M.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=M.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=M.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function S(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),D(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=M.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=S},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",D=t.length,S=0;D-1>S;S++)s=0==S?t[0]:t[S-1],o=t[S],n=t[S+1],r=D>S+2?t[S+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Mi===!1&&(Mi=!0,Ce.updateOffset(this),Mi=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Di={},Si=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Mi=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=S(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Si.length-1;Oe>=0;--Oe)I(Si[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:M(1,"add"),subtract:M(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(De(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(De(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Se(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Me(!0))}).call(this) +}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){S.register(t)}),w.onTouch(a.DOCUMENT,v,S.detect),w.onTouch(a.DOCUMENT,y,S.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(S,d),a&&(d.changedLength=h,d.eventType=a,s.call(S,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(S,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return D.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||D.matchType(u,s)?o=u:D.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return S.stopDetect()}}}},D=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},S=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?S.startDetect(i,t):t.eventType==_&&S.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=S.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=S.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=S.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=S.current,h=S.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); +var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/docs/timeline.html b/docs/timeline.html index 5034cb9e..bb3ebebd 100644 --- a/docs/timeline.html +++ b/docs/timeline.html @@ -554,6 +554,13 @@ var options = { A map with i18n locales. See section Localization for more information. + + margin + Number | Object + Object + When a number, applies the margin to margin.axis, margin.item.horizontal, and margin.item.vertical. + + margin.axis Number @@ -680,9 +687,23 @@ var options = { orientation + String | Object + 'bottom' + Orientation of the timelines axis and items. When orientation is a string, the value is applied to both items and axis. Can be 'top', 'bottom' (default), or 'both'. + + + + orientation.axis + String + 'bottom' + Orientation of the timeline axis: 'top', 'bottom' (default), or 'both'. If orientation is 'bottom', the time axis is drawn at the bottom. When 'top', the axis is drawn on top. When 'both', two axes are drawn, both on top and at the bottom. + + + + orientation.item String 'bottom' - Orientation of the timeline: 'top', 'bottom' (default), or 'both'. If orientation is 'bottom', the time axis is drawn at the bottom. When 'top', the axis is drawn on top. When 'both', two axes are drawn, both on top and at the bottom. + Orientation of the timeline items: 'top' or 'bottom' (default). Determines whether items are aligned to the top or bottom of the Timeline. diff --git a/lib/timeline/Core.js b/lib/timeline/Core.js index 2e0d945c..d0b44f98 100644 --- a/lib/timeline/Core.js +++ b/lib/timeline/Core.js @@ -190,9 +190,18 @@ Core.prototype._create = function (container) { Core.prototype.setOptions = function (options) { if (options) { // copy the known options - var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'orientation', 'clickToUse', 'dataAttributes', 'hiddenDates']; + var fields = ['width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'clickToUse', 'dataAttributes', 'hiddenDates']; util.selectiveExtend(fields, this.options, options); + if ('orientation' in options) { + if (typeof options.orientation === 'string') { + this.options.orientation = options.orientation; + } + else if (typeof options.orientation === 'object' && 'axis' in options.orientation) { + this.options.orientation = options.orientation.axis; + } + } + if (this.options.orientation === 'both') { if (!this.timeAxis2) { var timeAxis2 = this.timeAxis2 = new TimeAxis(this.body); diff --git a/lib/timeline/Timeline.js b/lib/timeline/Timeline.js index e8380d39..7843710d 100644 --- a/lib/timeline/Timeline.js +++ b/lib/timeline/Timeline.js @@ -38,7 +38,7 @@ function Timeline (container, items, groups, options) { autoResize: true, - orientation: 'bottom', // 'bottom', 'top', or 'both' + orientation: 'bottom', // axis orientation: 'bottom', 'top', or 'both' width: null, height: null, maxHeight: null, diff --git a/lib/timeline/component/ItemSet.js b/lib/timeline/component/ItemSet.js index 2f5b6977..2a34e0e2 100644 --- a/lib/timeline/component/ItemSet.js +++ b/lib/timeline/component/ItemSet.js @@ -29,7 +29,7 @@ function ItemSet(body, options) { this.defaultOptions = { type: null, // 'box', 'point', 'range', 'background' - orientation: 'bottom', // 'top' or 'bottom' + orientation: 'bottom', // item orientation: 'top' or 'bottom' align: 'auto', // alignment of box items stack: true, groupOrder: null, @@ -274,9 +274,18 @@ ItemSet.prototype._create = function(){ ItemSet.prototype.setOptions = function(options) { if (options) { // copy all options that we know - var fields = ['type', 'align', 'orientation', 'order', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide', 'snap']; + var fields = ['type', 'align', 'order', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide', 'snap']; util.selectiveExtend(fields, this.options, options); + if ('orientation' in options) { + if (typeof options.orientation === 'string') { + this.options.orientation = options.orientation; + } + else if (typeof options.orientation === 'object' && 'item' in options.orientation) { + this.options.orientation = options.orientation.item; + } + } + if ('margin' in options) { if (typeof options.margin === 'number') { this.options.margin.axis = options.margin; diff --git a/lib/timeline/component/TimeAxis.js b/lib/timeline/component/TimeAxis.js index f7433ce9..06cf5fd3 100644 --- a/lib/timeline/component/TimeAxis.js +++ b/lib/timeline/component/TimeAxis.js @@ -34,8 +34,7 @@ function TimeAxis (body, options) { }; this.defaultOptions = { - orientation: 'bottom', // supported: 'top', 'bottom' - // TODO: implement timeaxis orientations 'left' and 'right' + orientation: 'bottom', // axis orientation: 'top' or 'bottom' showMinorLabels: true, showMajorLabels: true, format: null, @@ -65,7 +64,6 @@ TimeAxis.prototype.setOptions = function(options) { if (options) { // copy all options that we know util.selectiveExtend([ - 'orientation', 'showMinorLabels', 'showMajorLabels', 'hiddenDates', @@ -73,6 +71,15 @@ TimeAxis.prototype.setOptions = function(options) { 'timeAxis' ], this.options, options); + if ('orientation' in options) { + if (typeof options.orientation === 'string') { + this.options.orientation = options.orientation; + } + else if (typeof options.orientation === 'object' && 'axis' in options.orientation) { + this.options.orientation = options.orientation.axis; + } + } + // apply locale to moment.js // TODO: not so nice, this is applied globally to moment.js if ('locale' in options) { @@ -131,9 +138,8 @@ TimeAxis.prototype.redraw = function () { this._calculateCharSize(); // TODO: recalculate sizes only needed when parent is resized or options is changed - var orientation = this.options.orientation, - showMinorLabels = this.options.showMinorLabels, - showMajorLabels = this.options.showMajorLabels; + var showMinorLabels = this.options.showMinorLabels; + var showMajorLabels = this.options.showMajorLabels; // determine the width and height of the elemens for the axis props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; diff --git a/test/timeline_groups.html b/test/timeline_groups.html index 15fc73dd..9d4c9deb 100644 --- a/test/timeline_groups.html +++ b/test/timeline_groups.html @@ -23,8 +23,9 @@
    + From 3e3a4074164c5658ebf016b9aae7f67627cf471a Mon Sep 17 00:00:00 2001 From: jos Date: Wed, 25 Mar 2015 11:19:41 +0100 Subject: [PATCH 35/43] Fixed issue with Dutch locale (see #736) --- lib/timeline/locales.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/timeline/locales.js b/lib/timeline/locales.js index b736d042..436aaecc 100644 --- a/lib/timeline/locales.js +++ b/lib/timeline/locales.js @@ -8,7 +8,7 @@ exports['en_US'] = exports['en']; // Dutch exports['nl'] = { - custom: 'aangepaste', + current: 'aangepaste', time: 'tijd' }; exports['nl_NL'] = exports['nl']; From 34a576761cf127cee05d7fb29444c8a5ef61b4c7 Mon Sep 17 00:00:00 2001 From: jos Date: Tue, 31 Mar 2015 11:40:14 +0200 Subject: [PATCH 36/43] The event handlers `onMove` and `onMoving` are now invoked with all item properties as argument, and can be used to update all properties (like content, className, etc) and add new properties as well --- HISTORY.md | 3 + dist/vis.js | 9217 +++++++++++++-------------- dist/vis.map | 2 +- dist/vis.min.js | 18 +- lib/timeline/component/ItemSet.js | 180 +- lib/timeline/component/item/Item.js | 5 + test/timeline.html | 3 +- test/timeline_groups.html | 25 +- 8 files changed, 4711 insertions(+), 4742 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 187d8007..e2e8bfdd 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -11,6 +11,9 @@ http://visjs.org ### Timeline - Orientation can now be configured separately for axis and items. +- The event handlers `onMove` and `onMoving` are now invoked with all item + properties as argument, and can be used to update all properties (like + content, className, etc) and add new properties as well. - Fixed #654: removed unnecessary minimum height for groups, takes the height of the group label as minimum height now. - Fixed #708: detecting wrong group when page is scrolled. diff --git a/dist/vis.js b/dist/vis.js index d41951ff..378ad0f9 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.11.1-SNAPSHOT - * @date 2015-03-10 + * @date 2015-03-31 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -9408,6 +9408,11 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} data */ Item.prototype.setData = function(data) { + var groupChanged = data.group != undefined && this.data.group != data.group; + if (groupChanged) { + this.parent.itemSet._moveToGroup(this, data.group); + } + this.data = data; this.dirty = true; if (this.displayed) this.redraw(); @@ -13632,31 +13637,21 @@ return /******/ (function(modules) { // webpackBootstrap if (dragLeftItem) { props = { item: dragLeftItem, - initialX: event.gesture.center.clientX + initialX: event.gesture.center.clientX, + dragLeft: true, + data: util.extend({}, item.data) // clone the items data }; - if (me.options.editable.updateTime) { - props.start = item.data.start.valueOf(); - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } - this.touchParams.itemProps = [props]; } else if (dragRightItem) { props = { item: dragRightItem, - initialX: event.gesture.center.clientX + initialX: event.gesture.center.clientX, + dragRight: true, + data: util.extend({}, item.data) // clone the items data }; - if (me.options.editable.updateTime) { - props.end = item.data.end.valueOf(); - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } - this.touchParams.itemProps = [props]; } else { @@ -13664,24 +13659,10 @@ return /******/ (function(modules) { // webpackBootstrap var item = me.items[id]; var props = { item: item, - initialX: event.gesture.center.clientX + initialX: event.gesture.center.clientX, + data: util.extend({}, item.data) // clone the items data }; - if (me.options.editable.updateTime) { - if ('start' in item.data) { - props.start = item.data.start.valueOf(); - - if ('end' in item.data) { - // we store a duration here in order not to change the width - // of the item when moving it. - props.duration = item.data.end.valueOf() - props.start; - } - } - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } - return props; }); } @@ -13726,12 +13707,14 @@ return /******/ (function(modules) { // webpackBootstrap var newItem = new RangeItem(itemData, this.conversion, this.options); newItem.id = id; // TODO: not so nice setting id afterwards + newItem.data = itemData; this._addItem(newItem); var props = { item: newItem, - end: end.valueOf(), - initialX: event.gesture.center.clientX + dragRight: true, + initialX: event.gesture.center.clientX, + data: util.extend({}, itemData) }; this.touchParams.itemProps = [props]; @@ -13757,35 +13740,63 @@ return /******/ (function(modules) { // webpackBootstrap // move this.touchParams.itemProps.forEach(function (props) { - var newProps = {}; var current = me.body.util.toTime(event.gesture.center.clientX - xOffset); var initial = me.body.util.toTime(props.initialX - xOffset); var offset = current - initial; - if ('start' in props) { - var start = new Date(props.start + offset); - newProps.start = snap ? snap(start, scale, step) : start; - } + var itemData = util.extend({}, props.item.data); // clone the data - if ('end' in props) { - var end = new Date(props.end + offset); - newProps.end = snap ? snap(end, scale, step) : end; - } - else if ('duration' in props) { - newProps.end = new Date(newProps.start.valueOf() + props.duration); + if (me.options.editable.updateTime) { + if (props.dragLeft) { + // drag left side of a range item + if (itemData.start != undefined) { + var initialStart = util.convert(props.data.start, 'Date'); + var start = new Date(initialStart.valueOf() + offset); + itemData.start = snap ? snap(start, scale, step) : start; + } + } + else if (props.dragRight) { + // drag right side of a range item + if (itemData.end != undefined) { + var initialEnd = util.convert(props.data.end, 'Date'); + var end = new Date(initialEnd.valueOf() + offset); + itemData.end = snap ? snap(end, scale, step) : end; + } + } + else { + // drag both start and end + if (itemData.start != undefined) { + var initialStart = util.convert(props.data.start, 'Date').valueOf(); + var start = new Date(initialStart + offset); + + if (itemData.end != undefined) { + var initialEnd = util.convert(props.data.end, 'Date'); + var duration = initialEnd.valueOf() - initialStart.valueOf(); + + itemData.start = snap ? snap(start, scale, step) : start; + itemData.end = new Date(itemData.start.valueOf() + duration); + } + else { + itemData.start = snap ? snap(start, scale, step) : start; + } + } + } } - if ('group' in props) { - // drag from one group to another - var group = me.groupFromTarget(event); - newProps.group = group && group.groupId; + if (me.options.editable.updateGroup && (!props.dragLeft && !props.dragRight)) { + if (itemData.group != undefined) { + // drag from one group to another + var group = me.groupFromTarget(event); + if (group) { + itemData.group = group.groupId; + } + } } // confirm moving the item - var itemData = util.extend({}, props.item.data, newProps); me.options.onMoving(itemData, function (itemData) { if (itemData) { - me._updateItemProps(props.item, itemData); + props.item.setData(itemData); } }); }); @@ -13795,28 +13806,6 @@ return /******/ (function(modules) { // webpackBootstrap } }; - /** - * Update an items properties - * @param {Item} item - * @param {Object} props Can contain properties start, end, and group. - * @private - */ - ItemSet.prototype._updateItemProps = function(item, props) { - // TODO: copy all properties from props to item? (also new ones) - if ('start' in props) { - item.data.start = props.start; - } - if ('end' in props) { - item.data.end = props.end; - } - else if ('duration' in props) { - item.data.end = new Date(props.start.valueOf() + props.duration); - } - if ('group' in props && item.data.group != props.group) { - this._moveToGroup(item, props.group) - } - }; - /** * Move an item to another group * @param {Item} item @@ -13856,9 +13845,9 @@ return /******/ (function(modules) { // webpackBootstrap this.touchParams.itemProps = null; itemProps.forEach(function (props) { var id = props.item.id; - var itemData = me.itemsData.get(id, me.itemOptions); + var exists = me.itemsData.get(id, me.itemOptions) != null; - if (!itemData) { + if (!exists) { // add a new item me.options.onAdd(props.item.data, function (itemData) { me._removeItem(props.item); // remove temporary item @@ -13873,39 +13862,21 @@ return /******/ (function(modules) { // webpackBootstrap } else { // update existing item - var changed = false; - if ('start' in props.item.data) { - changed = (props.start != props.item.data.start.valueOf()); - itemData.start = util.convert(props.item.data.start, - dataset._options.type && dataset._options.type.start || 'Date'); - } - if ('end' in props.item.data) { - changed = changed || (props.end != props.item.data.end.valueOf()); - itemData.end = util.convert(props.item.data.end, - dataset._options.type && dataset._options.type.end || 'Date'); - } - if ('group' in props.item.data) { - changed = changed || (props.group != props.item.data.group); - itemData.group = props.item.data.group; - } - - // only apply changes when start or end is actually changed - if (changed) { - me.options.onMove(itemData, function (itemData) { - if (itemData) { - // apply changes - itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) - changes.push(itemData); - } - else { - // restore original values - me._updateItemProps(props.item, props); + var itemData = util.extend({}, props.item.data); // clone the data + me.options.onMove(itemData, function (itemData) { + if (itemData) { + // apply changes + itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) + changes.push(itemData); + } + else { + // restore original values + props.item.setData(props.data); - me.stackDirty = true; // force re-stacking of all items next redraw - me.body.emitter.emit('change'); - } - }); - } + me.stackDirty = true; // force re-stacking of all items next redraw + me.body.emitter.emit('change'); + } + }); } }); @@ -14039,7 +14010,9 @@ return /******/ (function(modules) { // webpackBootstrap var start = _item.data.start; var end = (_item.data.end !== undefined) ? _item.data.end : start; - if (start >= range.min && end <= range.max) { + if (start >= range.min && + end <= range.max && + !(_item instanceof BackgroundItem)) { selection.push(_item.id); // do not use id but item.id, id itself is stringified } } @@ -22724,7 +22697,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(59); + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(58); /***/ }, @@ -22734,7 +22707,7 @@ return /******/ (function(modules) { // webpackBootstrap // Only load hammer.js when in a browser environment // (loading hammer.js in a node.js environment gives errors) if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(58); + module.exports = window['Hammer'] || __webpack_require__(59); } else { module.exports = function () { @@ -22804,7 +22777,7 @@ return /******/ (function(modules) { // webpackBootstrap this.dom.background.className = 'vispanel background'; this.dom.backgroundVertical.className = 'vispanel background vertical'; this.dom.backgroundHorizontal.className = 'vispanel background horizontal'; - this.dom.centerContainer.className = 'vispanel center jooo'; + this.dom.centerContainer.className = 'vispanel center'; this.dom.leftContainer.className = 'vispanel left'; this.dom.rightContainer.className = 'vispanel right'; this.dom.top.className = 'vispanel top'; @@ -23806,7 +23779,7 @@ return /******/ (function(modules) { // webpackBootstrap // Dutch exports['nl'] = { - custom: 'aangepaste', + current: 'aangepaste', time: 'tijd' }; exports['nl_NL'] = exports['nl']; @@ -24101,7 +24074,8 @@ return /******/ (function(modules) { // webpackBootstrap combinedData.push({ x: processedGroupData[groupIds[i]][j].x, y: processedGroupData[groupIds[i]][j].y, - groupId: groupIds[i] + groupId: groupIds[i], + label: processedGroupData[groupIds[i]][j].label, }); barPoints += 1; } @@ -24157,7 +24131,7 @@ return /******/ (function(modules) { // webpackBootstrap DOMutil.drawBar(combinedData[i].x + drawData.offset, combinedData[i].y - heightOffset, drawData.width, group.zeroPosition - combinedData[i].y, group.className + ' bar', framework.svgElements, framework.svg); // draw points if (group.options.drawPoints.enabled == true) { - DOMutil.drawPoint(combinedData[i].x + drawData.offset, combinedData[i].y, group, framework.svgElements, framework.svg); + DOMutil.drawPoint(combinedData[i].x + drawData.offset, combinedData[i].y, group, framework.svgElements, framework.svg, combinedData[i].label); } } }; @@ -24271,6 +24245,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Bargraph; + /***/ }, /* 51 */ /***/ function(module, exports, __webpack_require__) { @@ -25325,5227 +25300,5227 @@ return /******/ (function(modules) { // webpackBootstrap /* 58 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 - * http://eightmedia.github.io/hammer.js - * - * Copyright (c) 2014 Jorik Tangelder ; - * Licensed under the MIT license */ - - (function(window, undefined) { - 'use strict'; - - /** - * @main - * @module hammer - * - * @class Hammer - * @static - */ - - /** - * Hammer, use this to create instances - * ```` - * var hammertime = new Hammer(myElement); - * ```` - * - * @method Hammer - * @param {HTMLElement} element - * @param {Object} [options={}] - * @return {Hammer.Instance} - */ - var Hammer = function Hammer(element, options) { - return new Hammer.Instance(element, options || {}); - }; - - /** - * version, as defined in package.json - * the value will be set at each build - * @property VERSION - * @final - * @type {String} - */ - Hammer.VERSION = '1.1.3'; - - /** - * default settings. - * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled - * by setting it's name (like `swipe`) to false. - * You can set the defaults for all instances by changing this object before creating an instance. - * @example - * ```` - * Hammer.defaults.drag = false; - * Hammer.defaults.behavior.touchAction = 'pan-y'; - * delete Hammer.defaults.behavior.userSelect; - * ```` - * @property defaults - * @type {Object} - */ - Hammer.defaults = { - /** - * this setting object adds styles and attributes to the element to prevent the browser from doing - * its native behavior. The css properties are auto prefixed for the browsers when needed. - * @property defaults.behavior - * @type {Object} - */ - behavior: { - /** - * Disables text selection to improve the dragging gesture. When the value is `none` it also sets - * `onselectstart=false` for IE on the element. Mainly for desktop browsers. - * @property defaults.behavior.userSelect - * @type {String} - * @default 'none' - */ - userSelect: 'none', - - /** - * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). - * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. - * @property defaults.behavior.touchAction - * @type {String} - * @default: 'pan-y' - */ - touchAction: 'pan-y', - - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @property defaults.behavior.touchCallout - * @type {String} - * @default 'none' - */ - touchCallout: 'none', - - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', - - /** - * Specifies that an entire element should be draggable instead of its contents. - * Mainly for desktop browsers. - * @property defaults.behavior.userDrag - * @type {String} - * @default 'none' - */ - userDrag: 'none', - - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. - * - * If you don't specify an alpha value, Safari on iPhone applies a default alpha value - * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). - * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. - * @property defaults.behavior.tapHighlightColor - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: 'rgba(0,0,0,0)' - } - }; - - /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document - */ - Hammer.DOCUMENT = document; + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js + //! version : 2.9.0 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com - /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} - */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + (function (undefined) { + /************************************ + Constants + ************************************/ - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} - */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + var moment, + VERSION = '2.9.0', + // the global-scope this is NOT the global object in Node.js + globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, + oldGlobalMoment, + round = Math.round, + hasOwnProperty = Object.prototype.hasOwnProperty, + i, - /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} - */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, - /** - * detect if we want to support mouseevents at all - * @property NO_MOUSEEVENTS - * @type {Boolean} - */ - Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; + // internal storage for locale config files + locales = {}, - /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 - */ - Hammer.CALCULATE_INTERVAL = 25; + // extra moment internal properties (plugins register props here) + momentProperties = [], - /** - * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` - * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) - * @property EVENT_TYPES - * @private - * @writeOnce - * @type {Object} - */ - var EVENT_TYPES = {}; + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module && module.exports), - /** - * direction strings, for safe comparisons - * @property DIRECTION_DOWN|LEFT|UP|RIGHT - * @final - * @type {String} - * @default 'down' 'left' 'up' 'right' - */ - var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; - var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; - var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; - var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - /** - * pointertype strings, for safe comparisons - * @property POINTER_MOUSE|TOUCH|PEN - * @final - * @type {String} - * @default 'mouse' 'touch' 'pen' - */ - var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; - var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; - var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, - /** - * eventtypes - * @property EVENT_START|MOVE|END|RELEASE|TOUCH - * @final - * @type {String} - * @default 'start' 'change' 'move' 'end' 'release' 'touch' - */ - var EVENT_START = Hammer.EVENT_START = 'start'; - var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; - var EVENT_END = Hammer.EVENT_END = 'end'; - var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; - var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, - /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false - */ - Hammer.READY = false; + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - /** - * plugins namespace - * @property plugins - * @type {Object} - */ - Hammer.plugins = Hammer.plugins || {}; + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} - */ - Hammer.gestures = Hammer.gestures || {}; + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - /** - * setup events to detect gestures on the document - * this function is called when creating an new instance - * @private - */ - function setup() { - if(Hammer.READY) { - return; - } + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - // find what eventtypes we add listeners to - Event.determineEventTypes(); + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); + // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, - // Hammer is ready...! - Hammer.READY = true; - } + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 + }, - /** - * @module hammer - * - * @class Utils - * @static - */ - var Utils = Hammer.utils = { - /** - * extend method, could also be used for cloning when `dest` is an empty object. - * changes the dest object - * @method extend - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge=false] do a merge - * @return {Object} dest - */ - extend: function extend(dest, src, merge) { - for(var key in src) { - if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { - continue; - } - dest[key] = src[key]; - } - return dest; - }, + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + Q : 'quarter', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' + }, - /** - * simple addEventListener wrapper - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - on: function on(element, type, handler) { - element.addEventListener(type, handler, false); - }, + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' + }, - /** - * simple removeEventListener wrapper - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - off: function off(element, type, handler) { - element.removeEventListener(type, handler, false); - }, + // format function strings + formatFunctions = {}, - /** - * forEach over arrays and objects - * @method each - * @param {Object|Array} obj - * @param {Function} iterator - * @param {any} iterator.item - * @param {Number} iterator.index - * @param {Object|Array} iterator.obj the source object - * @param {Object} context value to use as `this` in the iterator - */ - each: function each(obj, iterator, context) { - var i, len; + // default relative time thresholds + relativeTimeThresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }, - // native forEach on arrays - if('forEach' in obj) { - obj.forEach(iterator, context); - // arrays - } else if(obj.length !== undefined) { - for(i = 0, len = obj.length; i < len; i++) { - if(iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - // objects - } else { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - } - }, + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), - /** - * find if a string contains the string using indexOf - * @method inStr - * @param {String} src - * @param {String} find - * @return {Boolean} found - */ - inStr: function inStr(src, find) { - return src.indexOf(find) > -1; - }, - - /** - * find if a array contains the object using indexOf or a simple polyfill - * @method inArray - * @param {String} src - * @param {String} find - * @return {Boolean|Number} false when not found, or the index - */ - inArray: function inArray(src, find) { - if(src.indexOf) { - var index = src.indexOf(find); - return (index === -1) ? false : index; - } else { - for(var i = 0, len = src.length; i < len; i++) { - if(src[i] === find) { - return i; + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.localeData().monthsShort(this, format); + }, + MMMM : function (format) { + return this.localeData().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.localeData().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.localeData().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.localeData().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; } - } - return false; - } - }, - - /** - * convert an array-like object (`arguments`, `touchlist`) to an array - * @method toArray - * @param {Object} obj - * @return {Array} - */ - toArray: function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - }, - - /** - * find if a node is in the given parent - * @method hasParent - * @param {HTMLElement} node - * @param {HTMLElement} parent - * @return {Boolean} found - */ - hasParent: function hasParent(node, parent) { - while(node) { - if(node == parent) { - return true; - } - node = node.parentNode; - } - return false; - }, - - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; - - // no need to loop when only one touch - if(touches.length === 1) { - return { - pageX: touches[0].pageX, - pageY: touches[0].pageY, - clientX: touches[0].clientX, - clientY: touches[0].clientY - }; - } - - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); - - return { - pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, - pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, - clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, - clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 - }; - }, - - /** - * calculate the velocity between two points. unit is in px per ms. - * @method getVelocity - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - * @return {Object} velocity `x` and `y` - */ - getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { - return { - x: Math.abs(deltaX / deltaTime) || 0, - y: Math.abs(deltaY / deltaTime) || 0 - }; - }, - - /** - * calculate the angle between two coordinates - * @method getAngle - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {Number} angle - */ - getAngle: function getAngle(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; - - return Math.atan2(y, x) * 180 / Math.PI; - }, - - /** - * do a small comparision to get the direction between two touches. - * @method getDirection - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` - */ - getDirection: function getDirection(touch1, touch2) { - var x = Math.abs(touch1.clientX - touch2.clientX), - y = Math.abs(touch1.clientY - touch2.clientY); - - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, - - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; - - return Math.sqrt((x * x) + (y * y)); - }, - - /** - * calculate the scale factor between two touchLists - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @method getScale - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} scale - */ - getScale: function getScale(start, end) { - // need two fingers... - if(start.length >= 2 && end.length >= 2) { - return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); - } - return 1; - }, - - /** - * calculate the rotation degrees between two touchLists - * @method getRotation - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} rotation - */ - getRotation: function getRotation(start, end) { - // need two fingers - if(start.length >= 2 && end.length >= 2) { - return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); - } - return 0; - }, - - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, - - /** - * set css properties with their prefixes - * @param {HTMLElement} element - * @param {String} prop - * @param {String} value - * @param {Boolean} [toggle=true] - * @return {Boolean} - */ - setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { - var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; - prop = Utils.toCamelCase(prop); - - for(var i = 0; i < prefixes.length; i++) { - var p = prop; - // prefixes - if(prefixes[i]) { - p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); - } - - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; - } - } - }, - - /** - * toggle browser default behavior by setting css properties. - * `userSelect='none'` also sets `element.onselectstart` to false - * `userDrag='none'` also sets `element.ondragstart` to false - * - * @method toggleBehavior - * @param {HtmlElement} element - * @param {Object} props - * @param {Boolean} [toggle=true] - */ - toggleBehavior: function toggleBehavior(element, props, toggle) { - if(!props || !element || !element.style) { - return; - } - - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); - - var falseFn = toggle && function() { - return false; - }; - - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; - } - }, - - /** - * convert a string with underscores to camelCase - * so prevent_default becomes preventDefault - * @param {String} str - * @return {String} camelCaseStr - */ - toCamelCase: function toCamelCase(str) { - return str.replace(/[_-]([a-z])/g, function(s) { - return s[1].toUpperCase(); - }); - } - }; - - - /** - * @module hammer - */ - /** - * @class Event - * @static - */ - var Event = Hammer.event = { - /** - * when touch events have been fired, this is true - * this is used to stop mouse events - * @property prevent_mouseevents - * @private - * @type {Boolean} - */ - preventMouseEvents: false, - - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, - - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, - - /** - * simple event binder with a hook and support for multiple types - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - on: function on(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.on(element, type, handler); - hook && hook(type); - }); - }, - - /** - * simple event unbinder with a hook and support for multiple types - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - off: function off(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.off(element, type, handler); - hook && hook(type); - }); - }, - - /** - * the core touch event handler. - * this finds out if we should to detect gestures - * @method onTouch - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Function} handler - * @return onTouchHandler {Function} the core event handler - */ - onTouch: function onTouch(element, eventType, handler) { - var self = this; - - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; - - // if we are in a mouseevent, but there has been a touchevent triggered in this session - // we want to do nothing. simply break out of the event. - if(isMouse && self.preventMouseEvents) { - return; - - // mousebutton must be down - } else if(isMouse && eventType == EVENT_START && ev.button === 0) { - self.preventMouseEvents = false; - self.shouldDetect = true; - } else if(isPointer && eventType == EVENT_START) { - self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); - // just a valid start event, but no mouse - } else if(!isMouse && eventType == EVENT_START) { - self.preventMouseEvents = true; - self.shouldDetect = true; - } - - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } - - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - if(triggerType == EVENT_END) { - self.preventMouseEvents = false; - self.shouldDetect = false; - PointerEvent.reset(); - // update the pointerevent object after the detection - } - - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - }; - - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, - - /** - * the core detection method - * this finds out what hammer-touch-events to trigger - * @method doDetect - * @param {Object} ev - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {HTMLElement} element - * @param {Function} handler - * @return {String} triggerType matches `EVENT_START|MOVE|END` - */ - doDetect: function doDetect(ev, eventType, element, handler) { - var touchList = this.getTouchList(ev, eventType); - var touchListLength = touchList.length; - var triggerType = eventType; - var triggerChange = touchList.trigger; // used by fakeMultitouch plugin - var changedLength = touchListLength; - - // at each touchstart-like event we want also want to trigger a TOUCH event... - if(eventType == EVENT_START) { - triggerChange = EVENT_TOUCH; - // ...the same for a touchend-like event - } else if(eventType == EVENT_END) { - triggerChange = EVENT_RELEASE; - - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); - } - - // after there are still touches on the screen, - // we just want to trigger a MOVE event. so change the START or END to a MOVE - // but only after detection has been started, the first time we actualy want a START - if(changedLength > 0 && this.started) { - triggerType = EVENT_MOVE; - } - - // detection has been started, we keep track of this, see above - this.started = true; - - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); - - // trigger the triggerType event before the change (TOUCH, RELEASE) events - // but the END event should be at last - if(eventType != EVENT_END) { - handler.call(Detection, evData); - } - - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; - - handler.call(Detection, evData); - - evData.eventType = triggerType; - delete evData.changedLength; - } - - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); - - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; - } - - return triggerType; - }, - - /** - * we have different events for each device/browser - * determine what we need and set them in the EVENT_TYPES constant - * the `onTouch` method is bind to these properties. - * @method determineEventTypes - * @return {Object} events - */ - determineEventTypes: function determineEventTypes() { - var types; - if(Hammer.HAS_POINTEREVENTS) { - if(window.PointerEvent) { - types = [ - 'pointerdown', - 'pointermove', - 'pointerup pointercancel lostpointercapture' - ]; - } else { - types = [ - 'MSPointerDown', - 'MSPointerMove', - 'MSPointerUp MSPointerCancel MSLostPointerCapture' - ]; - } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; - } else { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; - } - - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, - - /** - * create touchList depending on the event - * @method getTouchList - * @param {Object} ev - * @param {String} eventType - * @return {Array} touches - */ - getTouchList: function getTouchList(ev, eventType) { - // get the fake pointerEvent touchlist - if(Hammer.HAS_POINTEREVENTS) { - return PointerEvent.getTouchList(); - } - - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; - } - - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; - - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); + return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; } - identifiers.push(touch.identifier); - }); - - return touchList; - } - - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, - - /** - * collect basic event data - * @method collectEventData - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Array} touches - * @param {Object} ev - * @return {Object} ev - */ - collectEventData: function collectEventData(element, eventType, touches, ev) { - // find out pointerType - var pointerType = POINTER_TOUCH; - if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { - pointerType = POINTER_MOUSE; - } else if(PointerEvent.matchType(POINTER_PEN, ev)) { - pointerType = POINTER_PEN; - } - - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, - - /** - * prevent the browser default actions - * mostly used to disable scrolling of the browser - */ - preventDefault: function() { - var srcEvent = this.srcEvent; - srcEvent.preventManipulation && srcEvent.preventManipulation(); - srcEvent.preventDefault && srcEvent.preventDefault(); + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); }, - - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); + z : function () { + return this.zoneAbbr(); }, - - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; - } - }; - - - /** - * @module hammer - * - * @class PointerEvent - * @static - */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, - - /** - * get the pointers as an array - * @method getTouchList - * @return {Array} touchlist - */ - getTouchList: function getTouchList() { - var touchlist = []; - // we can use forEach since pointerEvents only is in IE10 - Utils.each(this.pointers, function(pointer) { - touchlist.push(pointer); - }); - return touchlist; - }, - - /** - * update the position of a pointer - * @method updatePointer - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Object} pointerEvent - */ - updatePointer: function updatePointer(eventType, pointerEvent) { - if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { - delete this.pointers[pointerEvent.pointerId]; - } else { - pointerEvent.identifier = pointerEvent.pointerId; - this.pointers[pointerEvent.pointerId] = pointerEvent; - } - }, - - /** - * check if ev matches pointertype - * @method matchType - * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` - * @param {PointerEvent} ev - */ - matchType: function matchType(pointerType, ev) { - if(!ev.pointerType) { - return false; - } - - var pt = ev.pointerType, - types = {}; - - types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); - types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); - types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); - return types[pointerType]; - }, - - /** - * reset the stored pointers - * @method reset - */ - reset: function resetList() { - this.pointers = {}; - } - }; - - - /** - * @module hammer - * - * @class Detection - * @static - */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], - - // data of the current Hammer.gesture detection session - current: null, - - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, - - // when this becomes true, no gestures are fired - stopped: false, - - /** - * start Hammer.gesture detection - * @method startDetect - * @param {Hammer.Instance} inst - * @param {Object} eventData - */ - startDetect: function startDetect(inst, eventData) { - // already busy with a Hammer.gesture detection on an element - if(this.current) { - return; - } - - this.stopped = false; - - // holds current session - this.current = { - inst: inst, // reference to HammerInstance we're working for - startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc - lastEvent: false, // last eventData - lastCalcEvent: false, // last eventData for calculations. - futureCalcEvent: false, // last eventData for calculations. - lastCalcData: {}, // last lastCalcData - name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc - }; - - this.detect(eventData); - }, - - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; - } - - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); - - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; - - // call Hammer.gesture handlers - Utils.each(this.gestures, function triggerGesture(gesture) { - // only when the instance options have enabled this gesture - if(!this.stopped && inst.enabled && instOptions[gesture.name]) { - gesture.handler.call(gesture, eventData, inst); + zz : function () { + return this.zoneName(); + }, + x : function () { + return this.valueOf(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); } - }, this); - - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; - } + }, - if(eventData.eventType == EVENT_END) { - this.stopDetect(); - } + deprecations = {}, - return eventData; - }, + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], - /** - * clear the Hammer.gesture vars - * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected - * to stop other Hammer.gestures from being fired - * @method stopDetect - */ - stopDetect: function stopDetect() { - // clone current data to the store as the previous gesture - // used for the double tap gesture, since this is an other gesture detect session - this.previous = Utils.extend({}, this.current); + updateInProgress = false; - // reset the current - this.current = null; - this.stopped = true; - }, + // Pick the first defined of two or three arguments. dfl comes from + // default. + function dfl(a, b, c) { + switch (arguments.length) { + case 2: return a != null ? a : b; + case 3: return a != null ? a : b != null ? b : c; + default: throw new Error('Implement me'); + } + } - /** - * calculate velocity, angle and direction - * @method getVelocityData - * @param {Object} ev - * @param {Object} center - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - */ - getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { - var cur = this.current, - recalc = false, - calcEv = cur.lastCalcEvent, - calcData = cur.lastCalcData; + function hasOwnProp(a, b) { + return hasOwnProperty.call(a, b); + } - if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { - center = calcEv.center; - deltaTime = ev.timeStamp - calcEv.timeStamp; - deltaX = ev.center.clientX - calcEv.center.clientX; - deltaY = ev.center.clientY - calcEv.center.clientY; - recalc = true; - } + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; + } - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); } + } - if(!cur.lastCalcEvent || recalc) { - calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); - calcData.angle = Utils.getAngle(center, ev.center); - calcData.direction = Utils.getDirection(center, ev.center); + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + printMsg(msg); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; } + } - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.localeData().ordinal(func.call(this, a), period); + }; + } - /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev - */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; + function monthDiff(a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; - // update the start touchlist to calculate the scale/rotation - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - startEv.touches = []; - Utils.each(ev.touches, function(touch) { - startEv.touches.push({ - clientX: touch.clientX, - clientY: touch.clientY - }); - }); + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); } - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; - - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - - Utils.extend(ev, { - startEvent: startEv, + return -(wholeMonthDiff + adjust); + } - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - distance: Utils.getDistance(startEv.center, ev.center), - angle: Utils.getAngle(startEv.center, ev.center), - direction: Utils.getDirection(startEv.center, ev.center), - scale: Utils.getScale(startEv.touches, ev.touches), - rotation: Utils.getRotation(startEv.touches, ev.touches) - }); - return ev; - }, + function meridiemFixWrap(locale, hour, meridiem) { + var isPm; - /** - * register new gesture - * @method register - * @param {Object} gesture object, see `gestures/` for documentation - * @return {Array} gestures - */ - register: function register(gesture) { - // add an enable gesture options if there is no given - var options = gesture.defaults || {}; - if(options[gesture.name] === undefined) { - options[gesture.name] = true; + if (meridiem == null) { + // nothing to do + return hour; } - - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); - - // set its index - gesture.index = gesture.index || 1000; - - // add Hammer.gesture to the list - this.gestures.push(gesture); - - // sort the list by index - this.gestures.sort(function(a, b) { - if(a.index < b.index) { - return -1; + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; } - if(a.index > b.index) { - return 1; + if (!isPm && hour === 12) { + hour = 0; } - return 0; - }); + return hour; + } else { + // thie is not supposed to happen + return hour; + } + } - return this.gestures; + /************************************ + Constructors + ************************************/ + + function Locale() { + } + + // Moment prototype object + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); + } + copyConfig(this, config); + this._d = new Date(+config._d); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + moment.updateOffset(this); + updateInProgress = false; + } } - }; + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; - /** - * @module hammer - */ + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; - /** - * create new hammer instance - * all methods should return the instance itself, so it is chainable. - * - * @class Instance - * @constructor - * @param {HTMLElement} element - * @param {Object} [options={}] options are merged with `Hammer.defaults` - * @return {Hammer.Instance} - */ - Hammer.Instance = function(element, options) { - var self = this; + this._data = {}; - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); + this._locale = moment.localeData(); - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; + this._bubble(); + } - /** - * @property enabled - * @type {Boolean} - * @protected - */ - this.enabled = true; + /************************************ + Helpers + ************************************/ - /** - * options, merged with the defaults - * options with an _ are converted to camelCase - * @property options - * @type {Object} - */ - Utils.each(options, function(value, name) { - delete options[name]; - options[Utils.toCamelCase(name)] = value; - }); - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } - // add some css to the element to prevent the browser from doing its native behavoir - if(this.options.behavior) { - Utils.toggleBehavior(this.element, this.options.behavior, true); - } + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } - /** - * event start handler on the element to start the detection - * @property eventStartHandler - * @type {Object} - */ - this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { - if(self.enabled && ev.eventType == EVENT_START) { - Detection.startDetect(self, ev); - } else if(ev.eventType == EVENT_TOUCH) { - Detection.detect(ev); + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; } - }); - /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} - */ - this.eventHandlers = []; - }; + return a; + } - Hammer.Instance.prototype = { - /** - * bind events to the instance - * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space - * @param {Function} handler - * @param {Object} handler.ev event object - */ - on: function onEvent(gestures, handler) { - var self = this; - Event.on(self.element, gestures, handler, function(type) { - self.eventHandlers.push({ gesture: type, handler: handler }); - }); - return self; - }, + function copyConfig(to, from) { + var i, prop, val; - /** - * unbind events to the instance - * @method off - * @chainable - * @param {String} gestures - * @param {Function} handler - */ - off: function offEvent(gestures, handler) { - var self = this; + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } - Event.off(self.element, gestures, handler, function(type) { - var index = Utils.inArray({ gesture: type, handler: handler }); - if(index !== false) { - self.eventHandlers.splice(index, 1); + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } } - }); - return self; - }, + } - /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] - */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; + return to; + } + + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); } + } - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; - // trigger on the target if it is in the instance element, - // this is for event delegation tricks - var element = this.element; - if(Utils.hasParent(eventData.target, element)) { - element = eventData.target; + while (output.length < targetLength) { + output = '0' + output; } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } - element.dispatchEvent(event); - return this; - }, + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; - /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state - */ - enable: function enable(state) { - this.enabled = state; - return this; - }, + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } - /** - * dispose this hammer instance - * @method dispose - * @return {Null} - */ - dispose: function dispose() { - var i, eh; + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); + return res; + } - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); + function momentsDifference(base, other) { + var res; + other = makeAs(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; } - this.eventHandlers = []; + return res; + } - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } - return null; + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); + return this; + }; } - }; + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; - /** - * @module gestures - */ - /** - * Move with x fingers (default 1) around on the page. - * Preventing the default browser behavior is a good way to improve feel and working. - * ```` - * hammertime.on("drag", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Drag - * @static - */ - /** - * @event drag - * @param {Object} ev - */ - /** - * @event dragstart - * @param {Object} ev - */ - /** - * @event dragend - * @param {Object} ev - */ - /** - * @event drapleft - * @param {Object} ev - */ - /** - * @event dragright - * @param {Object} ev - */ - /** - * @event dragup - * @param {Object} ev - */ - /** - * @event dragdown - * @param {Object} ev - */ + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); + } + if (months) { + rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + moment.updateOffset(mom, days || months); + } + } - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } - function dragGesture(ev, inst) { - var cur = Detection.current; + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } } + return diffs + lengthDiff; + } - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } - case EVENT_MOVE: - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.distance < inst.options.dragMinDistance && - cur.name != name) { - return; + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; } + } + } - var startCenter = cur.startEvent.center; + return normalizedInput; + } - // we are dragging! - if(cur.name != name) { - cur.name = name; - if(inst.options.dragDistanceCorrection && ev.distance > 0) { - // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. - // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. - // It might be useful to save the original start point somewhere - var factor = Math.abs(inst.options.dragMinDistance / ev.distance); - startCenter.pageX += ev.deltaX * factor; - startCenter.pageY += ev.deltaY * factor; - startCenter.clientX += ev.deltaX * factor; - startCenter.clientY += ev.deltaY * factor; + function makeList(field) { + var count, setter; - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; + } - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } + moment[field] = function (format, index) { + var i, getter, + method = moment._locale[field], + results = []; - // keep direction on the axis that the drag gesture started on - var lastDirection = cur.lastEvent.direction; - if(ev.dragLockToAxis && lastDirection !== ev.direction) { - if(Utils.isVertical(lastDirection)) { - ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; - } else { - ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - } + if (typeof format === 'number') { + index = format; + format = undefined; + } - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment._locale, m, format || ''); + }; + + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); } + return results; + } + }; + } - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - var isVertical = Utils.isVertical(ev.direction); + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } + } - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + return value; + } - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } - case EVENT_END: - triggered = false; - break; - } + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; } - Hammer.gestures.Drag = { - name: name, - index: 50, - handler: dragGesture, - defaults: { - /** - * minimal movement that have to be made before the drag event gets triggered - * @property dragMinDistance - * @type {Number} - * @default 10 - */ - dragMinDistance: 10, + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } - /** - * Set dragDistanceCorrection to true to make the starting point of the drag - * be calculated from where the drag was triggered, not from where the touch started. - * Useful to avoid a jerk-starting drag, which can make fine-adjustments - * through dragging difficult, and be visually unappealing. - * @property dragDistanceCorrection - * @type {Boolean} - * @default true - */ - dragDistanceCorrection: true, + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 24 || + (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || + m._a[SECOND] !== 0 || + m._a[MILLISECOND] !== 0)) ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; - /** - * prevent default browser behavior when dragging occurs - * be careful with it, it makes the element a blocking element - * when you are using the drag gesture, it is a good practice to set this true - * @property dragBlockHorizontal - * @type {Boolean} - * @default false - */ - dragBlockHorizontal: false, + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, + m._pf.overflow = overflow; + } + } - /** - * dragLockToAxis keeps the drag gesture on the axis that it started on, - * It disallows vertical directions if the initial direction was horizontal, and vice versa. - * @property dragLockToAxis - * @type {Boolean} - * @default false - */ - dragLockToAxis: false, + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; - /** - * drag lock only kicks in when distance > dragLockMinDistance - * This way, locking occurs only when the distance has become large enough to reliably determine the direction - * @property dragLockMinDistance - * @type {Number} - * @default 25 - */ - dragLockMinDistance: 25 + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0 && + m._pf.bigHour === undefined; + } } - }; - })('drag'); + return m._isValid; + } - /** - * @module gestures - */ - /** - * trigger a simple gesture event, so you can do anything in your handler. - * only usable if you know what your doing... - * - * @class Gesture - * @static - */ - /** - * @event gesture - * @param {Object} ev - */ - Hammer.gestures.Gesture = { - name: 'gesture', - index: 1337, - handler: function releaseGesture(ev, inst) { - inst.trigger(this.name, ev); + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; } - }; - /** - * @module gestures - */ - /** - * Touch stays at the same place for x time - * - * @class Hold - * @static - */ - /** - * @event hold - * @param {Object} ev - */ + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; - /** - * @param {String} name - */ - (function(name) { - var timer; + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } + } + return locales[name]; + } - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + // Return a moment from input, that is local/utc/utcOffset equivalent to + // model. + function makeAs(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (moment.isMoment(input) || isDate(input) ? + +input : +moment(input)) - (+res); + // Use low-level api, because this fn is low-level api. + res._d.setTime(+res._d + diff); + moment.updateOffset(res, false); + return res; + } else { + return moment(input).local(); + } + } - // set the gesture so we can check in the timeout if it still is - current.name = name; + /************************************ + Locale + ************************************/ - // set timer and if after the timeout it still is hold, - // we trigger the hold event - timer = setTimeout(function() { - if(current && current.name == name) { - inst.trigger(name, ev); - } - }, options.holdTimeout); - break; - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); + extend(Locale.prototype, { + + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; } - break; + } + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); + }, + + _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + months : function (m) { + return this._months[m.month()]; + }, + + _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, - case EVENT_RELEASE: - clearTimeout(timer); - break; - } - } + monthsParse : function (monthName, format, strict) { + var i, mom, regex; - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { - /** - * @property holdTimeout - * @type {Number} - * @default 500 - */ - holdTimeout: 500, + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } - /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 - */ - holdThreshold: 2 + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = moment.utc([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } }, - handler: holdGesture - }; - })('hold'); - /** - * @module gestures - */ - /** - * when a touch is being released from the page - * - * @class Release - * @static - */ - /** - * @event release - * @param {Object} ev - */ - Hammer.gestures.Release = { - name: 'release', - index: Infinity, - handler: function releaseGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - inst.trigger(this.name, ev); - } - } - }; + _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, - /** - * @module gestures - */ - /** - * triggers swipe events when the end velocity is above the threshold - * for best usage, set `preventDefault` (on the drag gesture) to `true` - * ```` - * hammertime.on("dragleft swipeleft", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Swipe - * @static - */ - /** - * @event swipe - * @param {Object} ev - */ - /** - * @event swipeleft - * @param {Object} ev - */ - /** - * @event swiperight - * @param {Object} ev - */ - /** - * @event swipeup - * @param {Object} ev - */ - /** - * @event swipedown - * @param {Object} ev - */ - Hammer.gestures.Swipe = { - name: 'swipe', - index: 40, - defaults: { - /** - * @property swipeMinTouches - * @type {Number} - * @default 1 - */ - swipeMinTouches: 1, + _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, + weekdaysParse : function (weekdayName) { + var i, mom, regex; - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 - }, + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + }, - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; + _longDateFormat : { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; } + return output; + }, - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.velocityX > options.swipeVelocityX || - ev.velocityY > options.swipeVelocityY) { - // trigger swipe events - inst.trigger(this.name, ev); - inst.trigger(this.name + ev.direction, ev); + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, + + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; } - } - } - }; + }, - /** - * @module gestures - */ - /** - * Single tap and a double tap on a place - * - * @class Tap - * @static - */ - /** - * @event tap - * @param {Object} ev - */ - /** - * @event doubletap - * @param {Object} ev - */ - /** - * @param {String} name - */ - (function(name) { - var hasMoved = false; + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom, now) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom, [now]) : output; + }, - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; + _relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; + ordinal : function (number) { + return this._ordinal.replace('%d', number); + }, + _ordinal : '%d', + _ordinalParse : /\d{1,2}/, - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } + preparse : function (string) { + return string; + }, - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; - } - } + postformat : function (string) { + return string; + }, - Hammer.gestures.Tap = { - name: name, - index: 100, - handler: tapGesture, - defaults: { - /** - * max time of a tap, this is for the slow tappers - * @property tapMaxTime - * @type {Number} - * @default 250 - */ - tapMaxTime: 250, + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, + firstDayOfWeek : function () { + return this._week.dow; + }, - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, + firstDayOfYear : function () { + return this._week.doy; + }, - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; } - }; - })('tap'); + }); - /** - * @module gestures - */ - /** - * when a touch is being touched at the page - * - * @class Touch - * @static - */ - /** - * @event touch - * @param {Object} ev - */ - Hammer.gestures.Touch = { - name: 'touch', - index: -Infinity, - defaults: { - /** - * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, - * but it improves gestures like transforming and dragging. - * be careful with using this, it can be very annoying for users to be stuck on the page - * @property preventDefault - * @type {Boolean} - * @default false - */ - preventDefault: false, + /************************************ + Formatting + ************************************/ - /** - * disable mouse events, so only touch (or pen!) input triggers events - * @property preventMouse - * @type {Boolean} - * @default false - */ - preventMouse: false - }, - handler: function touchGesture(ev, inst) { - if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { - ev.stopDetect(); - return; - } - if(inst.options.preventDefault) { - ev.preventDefault(); + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); } + return input.replace(/\\/g, ''); + } - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } } - } - }; - /** - * @module gestures - */ - /** - * User want to scale or rotate with 2 fingers - * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the - * `preventDefault` option. - * - * @class Transform - * @static - */ - /** - * @event transform - * @param {Object} ev - */ - /** - * @event transformstart - * @param {Object} ev - */ - /** - * @event transformend - * @param {Object} ev - */ - /** - * @event pinchin - * @param {Object} ev - */ - /** - * @event pinchout - * @param {Object} ev - */ - /** - * @event rotate - * @param {Object} ev - */ + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } - /** - * @param {String} name - */ - (function(name) { - var triggered = false; + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + format = expandFormat(format, m.localeData()); - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); + return formatFunctions[format](m); + } - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(scaleThreshold < inst.options.transformMinScale && - rotationThreshold < inst.options.transformMinRotation) { - return; - } + function expandFormat(format, locale) { + var i = 5; - // we are transforming! - Detection.current.name = name; + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } - inst.trigger(name, ev); // basic transform event + return format; + } - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + /************************************ + Parsing + ************************************/ - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; + + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'Q': + return parseTokenOneDigit; + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { + return parseTokenOneDigit; + } + /* falls through */ + case 'SS': + if (strict) { + return parseTokenTwoDigits; + } + /* falls through */ + case 'SSS': + if (strict) { + return parseTokenThreeDigits; + } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return config._locale._meridiemParse; + case 'x': + return parseTokenOffsetMs; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + case 'Do': + return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); + return a; } } - Hammer.gestures.Transform = { - name: name, - index: 45, - defaults: { - /** - * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 - * @property transformMinScale - * @type {Number} - * @default 0.01 - */ - transformMinScale: 0.01, + function utcOffsetFromString(string) { + string = string || ''; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 - }, + return parts[0] === '+' ? minutes : -minutes; + } - handler: transformGesture - }; - })('transform'); + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; - /** - * @module hammer - */ + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + case 'Do' : + if (input != null) { + datePartArray[DATE] = toInt(parseInt( + input.match(/\d{1,2}/)[0], 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); + } - // AMD export - if(true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - // commonjs export - } else if(typeof module !== 'undefined' && module.exports) { - module.exports = Hammer; - // browser export - } else { - window.Hammer = Hammer; - } + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = moment.parseTwoDigitYear(input); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._meridiem = input; + // config._isPm = config._locale.isPM(input); + break; + // HOUR + case 'h' : // fall through to hh + case 'hh' : + config._pf.bigHour = true; + /* falls through */ + case 'H' : // fall through to HH + case 'HH' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX OFFSET (MILLISECONDS) + case 'x': + config._d = new Date(toInt(input)); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = utcOffsetFromString(input); + break; + // WEEKDAY - human + case 'dd': + case 'ddd': + case 'dddd': + a = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (a != null) { + config._w = config._w || {}; + config._w['d'] = a; + } else { + config._pf.invalidWeekday = input; + } + break; + // WEEK, WEEK DAY - numeric + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gggg': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = toInt(input); + } + break; + case 'gg': + case 'GG': + config._w = config._w || {}; + config._w[token] = moment.parseTwoDigitYear(input); + } + } - })(window); + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; -/***/ }, -/* 59 */ -/***/ function(module, exports, __webpack_require__) { + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.9.0 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); + week = dfl(w.W, 1); + weekday = dfl(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; - (function (undefined) { - /************************************ - Constants - ************************************/ + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); - var moment, - VERSION = '2.9.0', - // the global-scope this is NOT the global object in Node.js - globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, - oldGlobalMoment, - round = Math.round, - hasOwnProperty = Object.prototype.hasOwnProperty, - i, + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; + } + } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } - // internal storage for locale config files - locales = {}, + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; - // extra moment internal properties (plugins register props here) - momentProperties = [], + if (config._d) { + return; + } - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module && module.exports), + currentDate = currentDateArray(config); - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; + } - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], + if (config._nextDay) { + config._a[HOUR] = 24; + } + } - // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, + function dateFromObject(config) { + var normalizedInput; + + if (config._d) { + return; + } + + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day || normalizedInput.date, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, + dateFromConfig(config); + } - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + } - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, + // date from string and format string + function makeDateFromStringAndFormat(config) { + if (config._f === moment.ISO_8601) { + parseISO(config); + return; + } - // format function strings - formatFunctions = {}, + config._a = []; + config._pf.empty = true; - // default relative time thresholds - relativeTimeThresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }, + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.localeData().monthsShort(this, format); - }, - MMMM : function (format) { - return this.localeData().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.localeData().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.localeData().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.localeData().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); } - return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - x : function () { - return this.valueOf(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); } - }, - - deprecations = {}, - - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } + } - updateInProgress = false; + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error('Implement me'); + // clear _12h flag if hour is <= 12 + if (config._pf.bigHour === true && config._a[HOUR] <= 12) { + config._pf.bigHour = undefined; } + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], + config._meridiem); + dateFromConfig(config); + checkOverflow(config); } - function hasOwnProp(a, b) { - return hasOwnProperty.call(a, b); + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); } - function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; } - } - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; } - return fn.apply(this, arguments); - }, fn); - } + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; + if (!isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; + + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; + + tempConfig._pf.score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } } - } - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.localeData().ordinal(func.call(this, a), period); - }; + extend(config, bestMoment || tempConfig); } - function monthDiff(a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(parseTokenTimezone)) { + config._f += 'Z'; + } + makeDateFromStringAndFormat(config); } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); + config._isValid = false; } + } - return -(wholeMonthDiff + adjust); + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); + } } - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + + function makeDateFromInput(config) { + var input = config._i, matched; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + dateFromConfig(config); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); + } } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); - function meridiemFixWrap(locale, hour, meridiem) { - var isPm; + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } - if (meridiem == null) { - // nothing to do - return hour; + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; + return date; + } + + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); } - if (!isPm && hour === 12) { - hour = 0; + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } } - return hour; - } else { - // thie is not supposed to happen - return hour; } + return input; + } + + /************************************ + Relative Time + ************************************/ + + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + + function relativeTime(posNegDuration, withoutSuffix, locale) { + var duration = moment.duration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + years = round(duration.as('y')), + + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < relativeTimeThresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < relativeTimeThresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; + + args[2] = withoutSuffix; + args[3] = +posNegDuration > 0; + args[4] = locale; + return substituteTimeAgo.apply({}, args); } + /************************************ - Constructors + Week of Year ************************************/ - function Locale() { - } - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - moment.updateOffset(this); - updateInProgress = false; + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; + + + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; } - } - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } - this._data = {}; + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - this._locale = moment.localeData(); + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; - this._bubble(); + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; } /************************************ - Helpers + Top Level Functions ************************************/ + function makeMoment(config) { + var input = config._i, + format = config._f, + res; - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } + config._locale = config._locale || moment.localeData(config._l); + + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); } - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); } - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; + if (moment.isMoment(input)) { + return new Moment(input, true); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); } - return a; + res = new Moment(config); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; } - function copyConfig(to, from) { - var i, prop, val; + moment = function (input, format, locale, strict) { + var c; - if (typeof from._isAMomentObject !== 'undefined') { - to._isAMomentObject = from._isAMomentObject; - } - if (typeof from._i !== 'undefined') { - to._i = from._i; - } - if (typeof from._f !== 'undefined') { - to._f = from._f; - } - if (typeof from._l !== 'undefined') { - to._l = from._l; - } - if (typeof from._strict !== 'undefined') { - to._strict = from._strict; - } - if (typeof from._tzm !== 'undefined') { - to._tzm = from._tzm; - } - if (typeof from._isUTC !== 'undefined') { - to._isUTC = from._isUTC; + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; } - if (typeof from._offset !== 'undefined') { - to._offset = from._offset; + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = locale; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); + + return makeMoment(c); + }; + + moment.suppressDeprecationWarnings = false; + + moment.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); } - if (typeof from._pf !== 'undefined') { - to._pf = from._pf; + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; } - if (typeof from._locale !== 'undefined') { - to._locale = from._locale; + if (!moments.length) { + return moment(); } - - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (typeof val !== 'undefined') { - to[prop] = val; - } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; } } - - return to; + return res; } - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } - } + moment.min = function () { + var args = [].slice.call(arguments, 0); - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; + return pickBy('isBefore', args); + }; - while (output.length < targetLength) { - output = '0' + output; - } - return (sign ? (forceSign ? '+' : '') : '-') + output; - } + moment.max = function () { + var args = [].slice.call(arguments, 0); - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; + return pickBy('isAfter', args); + }; - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } + // creating with utc + moment.utc = function (input, format, locale, strict) { + var c; - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); - return res; - } + return makeMoment(c).utc(); + }; - function momentsDifference(base, other) { - var res; - other = makeAs(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; - return res; - } + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso, + diffRes; - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; } + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; - } + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; + ret = new Duration(duration); - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); + if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); + + return ret; + }; + + // version number + moment.version = VERSION; + + // default format + moment.defaultFormat = isoFormat; + + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; + + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; + + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function (threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + if (limit === undefined) { + return relativeTimeThresholds[threshold]; } - if (updateOffset) { - moment.updateOffset(mom, days || months); + relativeTimeThresholds[threshold] = limit; + return true; + }; + + moment.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + function (key, value) { + return moment.locale(key, value); } - } + ); - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + moment.locale = function (key, values) { + var data; + if (key) { + if (typeof(values) !== 'undefined') { + data = moment.defineLocale(key, values); + } + else { + data = moment.localeData(key); + } - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } + if (data) { + moment.duration._locale = moment._locale = data; + } + } - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; + return moment._locale._abbr; + }; + + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); } + locales[name].set(values); + + // backwards compat for now: also set the locale + moment.locale(name); + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; } - return diffs + lengthDiff; - } + }; - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; + moment.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + function (key) { + return moment.localeData(key); } - return units; - } + ); - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; + // returns locale data + moment.localeData = function (key) { + var locale; - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return moment._locale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; } + key = [key]; } - return normalizedInput; + return chooseLocale(key); + }; + + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && hasOwnProp(obj, '_isAMomentObject')); + }; + + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; + + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); } - function makeList(field) { - var count, setter; + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); } else { - return; + m._pf.userInvalidated = true; } - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; + return m; + }; - if (typeof format === 'number') { - index = format; - format = undefined; - } + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } - }; - } + moment.isDate = isDate; - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; + /************************************ + Moment Prototype + ************************************/ - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } - } - return value; - } + extend(moment.fn = Moment.prototype, { - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } + clone : function () { + return moment(this); + }, - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } + valueOf : function () { + return +this._d - ((this._offset || 0) * 60000); + }, - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } + unix : function () { + return Math.floor(+this / 1000); + }, - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } + toString : function () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + }, - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 24 || - (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || - m._a[SECOND] !== 0 || - m._a[MILLISECOND] !== 0)) ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + if ('function' === typeof Date.prototype.toISOString) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); } + }, - m._pf.overflow = overflow; - } - } + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; + isValid : function () { + return isValid(this); + }, - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0 && - m._pf.bigHour === undefined; + isDSTShifted : function () { + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; } - } - return m._isValid; - } - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } + return false; + }, - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; + parsingFlags : function () { + return extend({}, this._pf); + }, - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; + invalidAt: function () { + return this._pf.overflow; + }, + + utc : function (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + }, + + local : function (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(this._dateUtcOffset(), 'm'); } - j--; } - i++; - } - return null; - } + return this; + }, - function loadLocale(name) { - var oldLocale = null; - if (!locales[name] && hasModule) { - try { - oldLocale = moment.locale(); - !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); - // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales - moment.locale(oldLocale); - } catch (e) { } - } - return locales[name]; - } + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.localeData().postformat(output); + }, - // Return a moment from input, that is local/utc/utcOffset equivalent to - // model. - function makeAs(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (moment.isMoment(input) || isDate(input) ? - +input : +moment(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - moment.updateOffset(res, false); - return res; - } else { - return moment(input).local(); - } - } + add : createAdder(1, 'add'), - /************************************ - Locale - ************************************/ + subtract : createAdder(-1, 'subtract'), + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, + anchor, diff, output, daysAdjust; - extend(Locale.prototype, { + units = normalizeUnits(units); - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; } + } else { + diff = this - that; + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); + return asFloat ? output : absRound(output); }, - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; + from : function (time, withoutSuffix) { + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); }, - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); }, - monthsParse : function (monthName, format, strict) { - var i, mom, regex; + calendar : function (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're locat/utc/offset + // or not. + var now = time || moment(), + sod = makeAs(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this, moment(now))); + }, - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; + isLeapYear : function () { + return isLeapYear(this.year()); + }, + + isDST : function () { + return (this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset()); + }, + + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; } + }, - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = moment.utc([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + month : makeAccessor('Month', true), + + startOf : function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; + }, + + endOf: function (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + }, + + isAfter: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this > +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return inputMs < +this.clone().startOf(units); + } + }, + + isBefore: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this < +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return +this.clone().endOf(units) < inputMs; + } + }, + + isBetween: function (from, to, units) { + return this.isAfter(from, units) && this.isBefore(to, units); + }, + + isSame: function (input, units) { + var inputMs; + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this === +input; + } else { + inputMs = +moment(input); + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + } + }, + + min: deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), + + max: deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + ), + + zone : deprecate( + 'moment().zone is deprecated, use moment().utcOffset instead. ' + + 'https://github.com/moment/moment/issues/1779', + function (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; + ), + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + utcOffset : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = utcOffsetFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._dateUtcOffset(); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } } + + return this; + } else { + return this._isUTC ? offset : this._dateUtcOffset(); } }, - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; + isLocal : function () { + return !this._isUTC; + }, + + isUtcOffset : function () { + return this._isUTC; }, - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; + isUtc : function () { + return this._isUTC && this._offset === 0; }, - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; + zoneAbbr : function () { + return this._isUTC ? 'UTC' : ''; }, - weekdaysParse : function (weekdayName) { - var i, mom, regex; - - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } + zoneName : function () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + }, - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } + parseZone : function () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(utcOffsetFromString(this._i)); } + return this; }, - _longDateFormat : { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; } - return output; + else { + input = moment(input).utcOffset(); + } + + return (this.utcOffset() - input) % 60 === 0; }, - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); }, - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); }, + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' + weekYear : function (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); }, - calendar : function (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom, [now]) : output; + + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); }, - _relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + week : function (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); }, - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); }, - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + weekday : function (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); }, - ordinal : function (number) { - return this._ordinal.replace('%d', number); + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); }, - _ordinal : '%d', - _ordinalParse : /\d{1,2}/, - preparse : function (string) { - return string; + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); }, - postformat : function (string) { - return string; + weeksInYear : function () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); }, - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; + get : function (units) { + units = normalizeUnits(units); + return this[units](); }, - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. + set : function (units, value) { + var unit; + if (typeof units === 'object') { + for (unit in units) { + this.set(unit, units[unit]); + } + } + else { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + } + return this; }, - firstDayOfWeek : function () { - return this._week.dow; + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + locale : function (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = moment.localeData(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } }, - firstDayOfYear : function () { - return this._week.doy; + lang : deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ), + + localeData : function () { + return this._locale; }, - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; + _dateUtcOffset : function () { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(this._d.getTimezoneOffset() / 15) * 15; } - }); - /************************************ - Formatting - ************************************/ + }); + function rawMonthSetter(mom, value) { + var dayOfMonth; - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } } - return input.replace(/\\/g, ''); + + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; } - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); } + } - return function (mom) { - var output = ''; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + function makeAccessor(unit, keepTime) { + return function (value) { + if (value != null) { + rawSetter(this, unit, value); + moment.updateOffset(this, keepTime); + return this; + } else { + return rawGetter(this, unit); } - return output; }; } - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } + moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); + moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); + moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); + // moment.fn.month is defined separately + moment.fn.date = makeAccessor('Date', true); + moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); + moment.fn.year = makeAccessor('FullYear', true); + moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); - format = expandFormat(format, m.localeData()); + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + moment.fn.quarters = moment.fn.quarter; - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); - } + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; - return formatFunctions[format](m); - } + // alias isUtc for dev-friendliness + moment.fn.isUTC = moment.fn.isUtc; - function expandFormat(format, locale) { - var i = 5; + /************************************ + Duration Prototype + ************************************/ - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; + } - return format; + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; } + extend(moment.duration.fn = Duration.prototype, { - /************************************ - Parsing - ************************************/ + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years = 0; + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { - return parseTokenOneDigit; - } - /* falls through */ - case 'SS': - if (strict) { - return parseTokenTwoDigits; - } - /* falls through */ - case 'SSS': - if (strict) { - return parseTokenThreeDigits; + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; + + hours = absRound(minutes / 60); + data.hours = hours % 24; + + days += absRound(hours / 24); + + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); + + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absRound(days / 30); + days %= 30; + + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + }, + + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); + + this._data.milliseconds = Math.abs(this._data.milliseconds); + this._data.seconds = Math.abs(this._data.seconds); + this._data.minutes = Math.abs(this._data.minutes); + this._data.hours = Math.abs(this._data.hours); + this._data.months = Math.abs(this._data.months); + this._data.years = Math.abs(this._data.years); + + return this; + }, + + weeks : function () { + return absRound(this.days() / 7); + }, + + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, + + humanize : function (withSuffix) { + var output = relativeTime(this, !withSuffix, this.localeData()); + + if (withSuffix) { + output = this.localeData().pastFuture(+this, output); } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return config._locale._meridiemParse; - case 'x': - return parseTokenOffsetMs; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); - return a; - } - } - function utcOffsetFromString(string) { - string = string || ''; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); + return this.localeData().postformat(output); + }, + + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); + + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; + + this._bubble(); + + return this; + }, + + subtract : function (input, val) { + var dur = moment.duration(input, val); + + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; + + this._bubble(); - return parts[0] === '+' ? minutes : -minutes; - } + return this; + }, - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; + as : function (units) { + var days, months; + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + this._milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt( - input.match(/\d{1,2}/)[0], 10)); - } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(yearsToDays(this._months / 12)); + switch (units) { + case 'week': return days / 7 + this._milliseconds / 6048e5; + case 'day': return days + this._milliseconds / 864e5; + case 'hour': return days * 24 + this._milliseconds / 36e5; + case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; + case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; + default: throw new Error('Unknown unit ' + units); + } } + }, - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._meridiem = input; - // config._isPm = config._locale.isPM(input); - break; - // HOUR - case 'h' : // fall through to hh - case 'hh' : - config._pf.bigHour = true; - /* falls through */ - case 'H' : // fall through to HH - case 'HH' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX OFFSET (MILLISECONDS) - case 'x': - config._d = new Date(toInt(input)); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = utcOffsetFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; - } else { - config._pf.invalidWeekday = input; + lang : moment.fn.lang, + locale : moment.fn.locale, + + toIsoString : deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead ' + + '(notice the capitals)', + function () { + return this.toISOString(); } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); + ), + + toISOString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); + + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); + }, + + localeData : function () { + return this._locale; + }, + + toJSON : function () { + return this.toISOString(); } + }); + + moment.duration.fn.toString = moment.duration.fn.toISOString; + + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; } - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; + for (i in unitMillisecondFactors) { + if (hasOwnProp(unitMillisecondFactors, i)) { + makeDurationGetter(i.toLowerCase()); + } + } - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); + }; + moment.duration.fn.asSeconds = function () { + return this.as('s'); + }; + moment.duration.fn.asMinutes = function () { + return this.as('m'); + }; + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; + moment.duration.fn.asMonths = function () { + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); + }; - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; + /************************************ + Default Locale + ************************************/ - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } + // Set default locale, other locale will inherit from English. + moment.locale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + }); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } + /* EMBED_LOCALES */ - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; + /************************************ + Exposing Moment + ************************************/ - if (config._d) { + function makeGlobal(shouldDeprecate) { + /*global ender:false */ + if (typeof ender !== 'undefined') { return; } + oldGlobalMoment = globalScope.moment; + if (shouldDeprecate) { + globalScope.moment = deprecate( + 'Accessing Moment through the global scope is ' + + 'deprecated, and will be removed in an upcoming ' + + 'release.', + moment); + } else { + globalScope.moment = moment; + } + } - currentDate = currentDateArray(config); + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } else if (true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal === true) { + // release the global variable + globalScope.moment = oldGlobalMoment; + } - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } + return moment; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + makeGlobal(true); + } else { + makeGlobal(); + } + }).call(this); - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; - } +/***/ }, +/* 59 */ +/***/ function(module, exports, __webpack_require__) { - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 + * http://eightmedia.github.io/hammer.js + * + * Copyright (c) 2014 Jorik Tangelder ; + * Licensed under the MIT license */ - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } + (function(window, undefined) { + 'use strict'; - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } + /** + * @main + * @module hammer + * + * @class Hammer + * @static + */ - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } + /** + * Hammer, use this to create instances + * ```` + * var hammertime = new Hammer(myElement); + * ```` + * + * @method Hammer + * @param {HTMLElement} element + * @param {Object} [options={}] + * @return {Hammer.Instance} + */ + var Hammer = function Hammer(element, options) { + return new Hammer.Instance(element, options || {}); + }; - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } + /** + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} + */ + Hammer.VERSION = '1.1.3'; - if (config._nextDay) { - config._a[HOUR] = 24; - } - } + /** + * default settings. + * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled + * by setting it's name (like `swipe`) to false. + * You can set the defaults for all instances by changing this object before creating an instance. + * @example + * ```` + * Hammer.defaults.drag = false; + * Hammer.defaults.behavior.touchAction = 'pan-y'; + * delete Hammer.defaults.behavior.userSelect; + * ```` + * @property defaults + * @type {Object} + */ + Hammer.defaults = { + /** + * this setting object adds styles and attributes to the element to prevent the browser from doing + * its native behavior. The css properties are auto prefixed for the browsers when needed. + * @property defaults.behavior + * @type {Object} + */ + behavior: { + /** + * Disables text selection to improve the dragging gesture. When the value is `none` it also sets + * `onselectstart=false` for IE on the element. Mainly for desktop browsers. + * @property defaults.behavior.userSelect + * @type {String} + * @default 'none' + */ + userSelect: 'none', - function dateFromObject(config) { - var normalizedInput; + /** + * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). + * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. + * @property defaults.behavior.touchAction + * @type {String} + * @default: 'pan-y' + */ + touchAction: 'pan-y', - if (config._d) { - return; - } + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @property defaults.behavior.touchCallout + * @type {String} + * @default 'none' + */ + touchCallout: 'none', - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day || normalizedInput.date, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', - dateFromConfig(config); - } + /** + * Specifies that an entire element should be draggable instead of its contents. + * Mainly for desktop browsers. + * @property defaults.behavior.userDrag + * @type {String} + * @default 'none' + */ + userDrag: 'none', - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; - } + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. + * + * If you don't specify an alpha value, Safari on iPhone applies a default alpha value + * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). + * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. + * @property defaults.behavior.tapHighlightColor + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' } + }; - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; - } + /** + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document + */ + Hammer.DOCUMENT = document; - config._a = []; - config._pf.empty = true; + /** + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} + */ + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; + /** + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} + */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - config._pf.empty = false; - } - else { - config._pf.unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); - } - } + /** + * detect if we want to support mouseevents at all + * @property NO_MOUSEEVENTS + * @type {Boolean} + */ + Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); - } + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; - // clear _12h flag if hour is <= 12 - if (config._pf.bigHour === true && config._a[HOUR] <= 12) { - config._pf.bigHour = undefined; - } - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], - config._meridiem); - dateFromConfig(config); - checkOverflow(config); - } + /** + * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` + * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) + * @property EVENT_TYPES + * @private + * @writeOnce + * @type {Object} + */ + var EVENT_TYPES = {}; - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); - } + /** + * direction strings, for safe comparisons + * @property DIRECTION_DOWN|LEFT|UP|RIGHT + * @final + * @type {String} + * @default 'down' 'left' 'up' 'right' + */ + var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; + var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; + var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; + var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } + /** + * pointertype strings, for safe comparisons + * @property POINTER_MOUSE|TOUCH|PEN + * @final + * @type {String} + * @default 'mouse' 'touch' 'pen' + */ + var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; + var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; + var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, + /** + * eventtypes + * @property EVENT_START|MOVE|END|RELEASE|TOUCH + * @final + * @type {String} + * @default 'start' 'change' 'move' 'end' 'release' 'touch' + */ + var EVENT_START = Hammer.EVENT_START = 'start'; + var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; + var EVENT_END = Hammer.EVENT_END = 'end'; + var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; + var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; - scoreToBeat, - i, - currentScore; + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; - } + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; - if (!isValid(tempConfig)) { - continue; - } + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; + } - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + // find what eventtypes we add listeners to + Event.determineEventTypes(); - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); + }); - tempConfig._pf.score = currentScore; + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; + // Hammer is ready...! + Hammer.READY = true; + } + + /** + * @module hammer + * + * @class Utils + * @static + */ + var Utils = Hammer.utils = { + /** + * extend method, could also be used for cloning when `dest` is an empty object. + * changes the dest object + * @method extend + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] do a merge + * @return {Object} dest + */ + extend: function extend(dest, src, merge) { + for(var key in src) { + if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { + continue; } + dest[key] = src[key]; } + return dest; + }, - extend(config, bestMoment || tempConfig); - } + /** + * simple addEventListener wrapper + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + on: function on(element, type, handler) { + element.addEventListener(type, handler, false); + }, - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); + /** + * simple removeEventListener wrapper + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); + }, - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be 'T' or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; + /** + * forEach over arrays and objects + * @method each + * @param {Object|Array} obj + * @param {Function} iterator + * @param {any} iterator.item + * @param {Number} iterator.index + * @param {Object|Array} iterator.obj the source object + * @param {Object} context value to use as `this` in the iterator + */ + each: function each(obj, iterator, context) { + var i, len; + + // native forEach on arrays + if('forEach' in obj) { + obj.forEach(iterator, context); + // arrays + } else if(obj.length !== undefined) { + for(i = 0, len = obj.length; i < len; i++) { + if(iterator.call(context, obj[i], i, obj) === false) { + return; } } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; + // objects + } else { + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; } } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; } - } - - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); - } - } + }, - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } + /** + * find if a string contains the string using indexOf + * @method inStr + * @param {String} src + * @param {String} find + * @return {Boolean} found + */ + inStr: function inStr(src, find) { + return src.indexOf(find) > -1; + }, - function makeDateFromInput(config) { - var input = config._i, matched; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - dateFromConfig(config); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); + /** + * find if a array contains the object using indexOf or a simple polyfill + * @method inArray + * @param {String} src + * @param {String} find + * @return {Boolean|Number} false when not found, or the index + */ + inArray: function inArray(src, find) { + if(src.indexOf) { + var index = src.indexOf(find); + return (index === -1) ? false : index; } else { - moment.createFromInputFallback(config); - } - } - - function makeDate(y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); - - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; - } - - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; - } - - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; + for(var i = 0, len = src.length; i < len; i++) { + if(src[i] === find) { + return i; } } + return false; } - return input; - } - - /************************************ - Relative Time - ************************************/ - - - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } - - function relativeTime(posNegDuration, withoutSuffix, locale) { - var duration = moment.duration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - years = round(duration.as('y')), - - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < relativeTimeThresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < relativeTimeThresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; - - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); - } - - - /************************************ - Week of Year - ************************************/ + }, + /** + * convert an array-like object (`arguments`, `touchlist`) to an array + * @method toArray + * @param {Object} obj + * @return {Array} + */ + toArray: function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + }, - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; + /** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ + hasParent: function hasParent(node, parent) { + while(node) { + if(node == parent) { + return true; + } + node = node.parentNode; + } + return false; + }, + /** + * get the center of all the touches + * @method getCenter + * @param {Array} touches + * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties + */ + getCenter: function getCenter(touches) { + var pageX = [], + pageY = [], + clientX = [], + clientY = [], + min = Math.min, + max = Math.max; - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; + // no need to loop when only one touch + if(touches.length === 1) { + return { + pageX: touches[0].pageX, + pageY: touches[0].pageY, + clientX: touches[0].clientX, + clientY: touches[0].clientY + }; } - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() + pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, + pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, + clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, + clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 }; - } - - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + }, + /** + * calculate the velocity between two points. unit is in px per ms. + * @method getVelocity + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + * @return {Object} velocity `x` and `y` + */ + getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + x: Math.abs(deltaX / deltaTime) || 0, + y: Math.abs(deltaY / deltaTime) || 0 }; - } + }, - /************************************ - Top Level Functions - ************************************/ + /** + * calculate the angle between two coordinates + * @method getAngle + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {Number} angle + */ + getAngle: function getAngle(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - function makeMoment(config) { - var input = config._i, - format = config._f, - res; + return Math.atan2(y, x) * 180 / Math.PI; + }, - config._locale = config._locale || moment.localeData(config._l); + /** + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` + */ + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } + /** + * calculate the distance between two touches + * @method getDistance + * @param {Touch}touch1 + * @param {Touch} touch2 + * @return {Number} distance + */ + getDistance: function getDistance(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); - } - } else { - makeDateFromInput(config); + return Math.sqrt((x * x) + (y * y)); + }, + + /** + * calculate the scale factor between two touchLists + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @method getScale + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} scale + */ + getScale: function getScale(start, end) { + // need two fingers... + if(start.length >= 2 && end.length >= 2) { + return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); } + return 1; + }, - res = new Moment(config); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; + /** + * calculate the rotation degrees between two touchLists + * @method getRotation + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} rotation + */ + getRotation: function getRotation(start, end) { + // need two fingers + if(start.length >= 2 && end.length >= 2) { + return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); } + return 0; + }, - return res; - } + /** + * find out if the direction is vertical * + * @method isVertical + * @param {String} direction matches `DIRECTION_UP|DOWN` + * @return {Boolean} is_vertical + */ + isVertical: function isVertical(direction) { + return direction == DIRECTION_UP || direction == DIRECTION_DOWN; + }, - moment = function (input, format, locale, strict) { - var c; + /** + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} + */ + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; + for(var i = 0; i < prefixes.length; i++) { + var p = prop; + // prefixes + if(prefixes[i]) { + p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + } + + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; + } } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = locale; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); + }, - return makeMoment(c); - }; + /** + * toggle browser default behavior by setting css properties. + * `userSelect='none'` also sets `element.onselectstart` to false + * `userDrag='none'` also sets `element.ondragstart` to false + * + * @method toggleBehavior + * @param {HtmlElement} element + * @param {Object} props + * @param {Boolean} [toggle=true] + */ + toggleBehavior: function toggleBehavior(element, props, toggle) { + if(!props || !element || !element.style) { + return; + } - moment.suppressDeprecationWarnings = false; + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); - moment.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); + var falseFn = toggle && function() { + return false; + }; - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return moment(); + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; - } + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; } - return res; + }, + + /** + * convert a string with underscores to camelCase + * so prevent_default becomes preventDefault + * @param {String} str + * @return {String} camelCaseStr + */ + toCamelCase: function toCamelCase(str) { + return str.replace(/[_-]([a-z])/g, function(s) { + return s[1].toUpperCase(); + }); } + }; - moment.min = function () { - var args = [].slice.call(arguments, 0); - return pickBy('isBefore', args); - }; + /** + * @module hammer + */ + /** + * @class Event + * @static + */ + var Event = Hammer.event = { + /** + * when touch events have been fired, this is true + * this is used to stop mouse events + * @property prevent_mouseevents + * @private + * @type {Boolean} + */ + preventMouseEvents: false, - moment.max = function () { - var args = [].slice.call(arguments, 0); + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, - return pickBy('isAfter', args); - }; + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; + /** + * simple event binder with a hook and support for multiple types + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + on: function on(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.on(element, type, handler); + hook && hook(type); + }); + }, - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); + /** + * simple event unbinder with a hook and support for multiple types + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + off: function off(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.off(element, type, handler); + hook && hook(type); + }); + }, - return makeMoment(c).utc(); - }; + /** + * the core touch event handler. + * this finds out if we should to detect gestures + * @method onTouch + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Function} handler + * @return onTouchHandler {Function} the core event handler + */ + onTouch: function onTouch(element, eventType, handler) { + var self = this; - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; + // if we are in a mouseevent, but there has been a touchevent triggered in this session + // we want to do nothing. simply break out of the event. + if(isMouse && self.preventMouseEvents) { + return; - if (moment.isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; + // mousebutton must be down + } else if(isMouse && eventType == EVENT_START && ev.button === 0) { + self.preventMouseEvents = false; + self.shouldDetect = true; + } else if(isPointer && eventType == EVENT_START) { + self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); + // just a valid start event, but no mouse + } else if(!isMouse && eventType == EVENT_START) { + self.preventMouseEvents = true; + self.shouldDetect = true; } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; - duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && - ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(moment(duration.from), moment(duration.to)); - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } - ret = new Duration(duration); + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); + } - if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + if(triggerType == EVENT_END) { + self.preventMouseEvents = false; + self.shouldDetect = false; + PointerEvent.reset(); + // update the pointerevent object after the detection + } - return ret; - }; + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } + }; - // version number - moment.version = VERSION; + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, + + /** + * the core detection method + * this finds out what hammer-touch-events to trigger + * @method doDetect + * @param {Object} ev + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {HTMLElement} element + * @param {Function} handler + * @return {String} triggerType matches `EVENT_START|MOVE|END` + */ + doDetect: function doDetect(ev, eventType, element, handler) { + var touchList = this.getTouchList(ev, eventType); + var touchListLength = touchList.length; + var triggerType = eventType; + var triggerChange = touchList.trigger; // used by fakeMultitouch plugin + var changedLength = touchListLength; + + // at each touchstart-like event we want also want to trigger a TOUCH event... + if(eventType == EVENT_START) { + triggerChange = EVENT_TOUCH; + // ...the same for a touchend-like event + } else if(eventType == EVENT_END) { + triggerChange = EVENT_RELEASE; + + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + } + + // after there are still touches on the screen, + // we just want to trigger a MOVE event. so change the START or END to a MOVE + // but only after detection has been started, the first time we actualy want a START + if(changedLength > 0 && this.started) { + triggerType = EVENT_MOVE; + } - // default format - moment.defaultFormat = isoFormat; + // detection has been started, we keep track of this, see above + this.started = true; - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + // trigger the triggerType event before the change (TOUCH, RELEASE) events + // but the END event should be at last + if(eventType != EVENT_END) { + handler.call(Detection, evData); + } - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function (threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return relativeTimeThresholds[threshold]; - } - relativeTimeThresholds[threshold] = limit; - return true; - }; + handler.call(Detection, evData); - moment.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - function (key, value) { - return moment.locale(key, value); + evData.eventType = triggerType; + delete evData.changedLength; } - ); - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - moment.locale = function (key, values) { - var data; - if (key) { - if (typeof(values) !== 'undefined') { - data = moment.defineLocale(key, values); - } - else { - data = moment.localeData(key); - } + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); - if (data) { - moment.duration._locale = moment._locale = data; - } + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; } - return moment._locale._abbr; - }; + return triggerType; + }, - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); + /** + * we have different events for each device/browser + * determine what we need and set them in the EVENT_TYPES constant + * the `onTouch` method is bind to these properties. + * @method determineEventTypes + * @return {Object} events + */ + determineEventTypes: function determineEventTypes() { + var types; + if(Hammer.HAS_POINTEREVENTS) { + if(window.PointerEvent) { + types = [ + 'pointerdown', + 'pointermove', + 'pointerup pointercancel lostpointercapture' + ]; + } else { + types = [ + 'MSPointerDown', + 'MSPointerMove', + 'MSPointerUp MSPointerCancel MSLostPointerCapture' + ]; } - locales[name].set(values); - - // backwards compat for now: also set the locale - moment.locale(name); - - return locales[name]; + } else if(Hammer.NO_MOUSEEVENTS) { + types = [ + 'touchstart', + 'touchmove', + 'touchend touchcancel' + ]; } else { - // useful for testing - delete locales[name]; - return null; + types = [ + 'touchstart mousedown', + 'touchmove mousemove', + 'touchend touchcancel mouseup' + ]; } - }; - moment.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - function (key) { - return moment.localeData(key); + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, + + /** + * create touchList depending on the event + * @method getTouchList + * @param {Object} ev + * @param {String} eventType + * @return {Array} touches + */ + getTouchList: function getTouchList(ev, eventType) { + // get the fake pointerEvent touchlist + if(Hammer.HAS_POINTEREVENTS) { + return PointerEvent.getTouchList(); } - ); - // returns locale data - moment.localeData = function (key) { - var locale; + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; + } - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; - if (!key) { - return moment._locale; + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); + } + identifiers.push(touch.identifier); + }); + + return touchList; } - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, + + /** + * collect basic event data + * @method collectEventData + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Array} touches + * @param {Object} ev + * @return {Object} ev + */ + collectEventData: function collectEventData(element, eventType, touches, ev) { + // find out pointerType + var pointerType = POINTER_TOUCH; + if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { + pointerType = POINTER_MOUSE; + } else if(PointerEvent.matchType(POINTER_PEN, ev)) { + pointerType = POINTER_PEN; } - return chooseLocale(key); - }; + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && hasOwnProp(obj, '_isAMomentObject')); - }; + /** + * prevent the browser default actions + * mostly used to disable scrolling of the browser + */ + preventDefault: function() { + var srcEvent = this.srcEvent; + srcEvent.preventManipulation && srcEvent.preventManipulation(); + srcEvent.preventDefault && srcEvent.preventDefault(); + }, - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; + /** + * stop bubbling the event up to its parents + */ + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); + } + }; } + }; - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); + /** + * @module hammer + * + * @class PointerEvent + * @static + */ + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, + + /** + * get the pointers as an array + * @method getTouchList + * @return {Array} touchlist + */ + getTouchList: function getTouchList() { + var touchlist = []; + // we can use forEach since pointerEvents only is in IE10 + Utils.each(this.pointers, function(pointer) { + touchlist.push(pointer); + }); + return touchlist; + }, + + /** + * update the position of a pointer + * @method updatePointer + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Object} pointerEvent + */ + updatePointer: function updatePointer(eventType, pointerEvent) { + if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { + delete this.pointers[pointerEvent.pointerId]; + } else { + pointerEvent.identifier = pointerEvent.pointerId; + this.pointers[pointerEvent.pointerId] = pointerEvent; } - else { - m._pf.userInvalidated = true; + }, + + /** + * check if ev matches pointertype + * @method matchType + * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` + * @param {PointerEvent} ev + */ + matchType: function matchType(pointerType, ev) { + if(!ev.pointerType) { + return false; } - return m; - }; + var pt = ev.pointerType, + types = {}; - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); + types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); + types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); + return types[pointerType]; + }, - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; + } + }; - moment.isDate = isDate; - /************************************ - Moment Prototype - ************************************/ + /** + * @module hammer + * + * @class Detection + * @static + */ + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], + // data of the current Hammer.gesture detection session + current: null, - extend(moment.fn = Moment.prototype, { + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, - clone : function () { - return moment(this); - }, + // when this becomes true, no gestures are fired + stopped: false, - valueOf : function () { - return +this._d - ((this._offset || 0) * 60000); - }, + /** + * start Hammer.gesture detection + * @method startDetect + * @param {Hammer.Instance} inst + * @param {Object} eventData + */ + startDetect: function startDetect(inst, eventData) { + // already busy with a Hammer.gesture detection on an element + if(this.current) { + return; + } - unix : function () { - return Math.floor(+this / 1000); - }, + this.stopped = false; - toString : function () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - }, + // holds current session + this.current = { + inst: inst, // reference to HammerInstance we're working for + startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc + lastEvent: false, // last eventData + lastCalcEvent: false, // last eventData for calculations. + futureCalcEvent: false, // last eventData for calculations. + lastCalcData: {}, // last lastCalcData + name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc + }; - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, + this.detect(eventData); + }, - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - }, + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; + } - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); - isValid : function () { - return isValid(this); - }, + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + // call Hammer.gesture handlers + Utils.each(this.gestures, function triggerGesture(gesture) { + // only when the instance options have enabled this gesture + if(!this.stopped && inst.enabled && instOptions[gesture.name]) { + gesture.handler.call(gesture, eventData, inst); } + }, this); - return false; - }, + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; + } - parsingFlags : function () { - return extend({}, this._pf); - }, + if(eventData.eventType == EVENT_END) { + this.stopDetect(); + } - invalidAt: function () { - return this._pf.overflow; - }, + return eventData; + }, - utc : function (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - }, + /** + * clear the Hammer.gesture vars + * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected + * to stop other Hammer.gestures from being fired + * @method stopDetect + */ + stopDetect: function stopDetect() { + // clone current data to the store as the previous gesture + // used for the double tap gesture, since this is an other gesture detect session + this.previous = Utils.extend({}, this.current); - local : function (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; + // reset the current + this.current = null; + this.stopped = true; + }, - if (keepLocalTime) { - this.subtract(this._dateUtcOffset(), 'm'); - } - } - return this; - }, + /** + * calculate velocity, angle and direction + * @method getVelocityData + * @param {Object} ev + * @param {Object} center + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + */ + getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { + var cur = this.current, + recalc = false, + calcEv = cur.lastCalcEvent, + calcData = cur.lastCalcData; - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, + if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { + center = calcEv.center; + deltaTime = ev.timeStamp - calcEv.timeStamp; + deltaX = ev.center.clientX - calcEv.center.clientX; + deltaY = ev.center.clientY - calcEv.center.clientY; + recalc = true; + } + + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; + } + + if(!cur.lastCalcEvent || recalc) { + calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); + calcData.angle = Utils.getAngle(center, ev.center); + calcData.direction = Utils.getDirection(center, ev.center); + + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; + } - add : createAdder(1, 'add'), + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, - subtract : createAdder(-1, 'subtract'), + /** + * extend eventData for Hammer.gestures + * @method extendEventData + * @param {Object} ev + * @return {Object} ev + */ + extendEventData: function extendEventData(ev) { + var cur = this.current, + startEv = cur.startEvent, + lastEv = cur.lastEvent || startEv; - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, - anchor, diff, output, daysAdjust; + // update the start touchlist to calculate the scale/rotation + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + startEv.touches = []; + Utils.each(ev.touches, function(touch) { + startEv.touches.push({ + clientX: touch.clientX, + clientY: touch.clientY + }); + }); + } - units = normalizeUnits(units); + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - diff = this - that; - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, + Utils.extend(ev, { + startEvent: startEv, - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're locat/utc/offset - // or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this, moment(now))); - }, + distance: Utils.getDistance(startEv.center, ev.center), + angle: Utils.getAngle(startEv.center, ev.center), + direction: Utils.getDirection(startEv.center, ev.center), + scale: Utils.getScale(startEv.touches, ev.touches), + rotation: Utils.getRotation(startEv.touches, ev.touches) + }); - isLeapYear : function () { - return isLeapYear(this.year()); - }, + return ev; + }, - isDST : function () { - return (this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset()); - }, + /** + * register new gesture + * @method register + * @param {Object} gesture object, see `gestures/` for documentation + * @return {Array} gestures + */ + register: function register(gesture) { + // add an enable gesture options if there is no given + var options = gesture.defaults || {}; + if(options[gesture.name] === undefined) { + options[gesture.name] = true; + } - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - }, + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); - month : makeAccessor('Month', true), + // set its index + gesture.index = gesture.index || 1000; - startOf : function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ - } + // add Hammer.gesture to the list + this.gestures.push(gesture); - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); + // sort the list by index + this.gestures.sort(function(a, b) { + if(a.index < b.index) { + return -1; } - - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); + if(a.index > b.index) { + return 1; } + return 0; + }); - return this; - }, + return this.gestures; + } + }; - endOf: function (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, - isAfter: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this > +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return inputMs < +this.clone().startOf(units); - } - }, + /** + * @module hammer + */ - isBefore: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this < +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return +this.clone().endOf(units) < inputMs; - } - }, + /** + * create new hammer instance + * all methods should return the instance itself, so it is chainable. + * + * @class Instance + * @constructor + * @param {HTMLElement} element + * @param {Object} [options={}] options are merged with `Hammer.defaults` + * @return {Hammer.Instance} + */ + Hammer.Instance = function(element, options) { + var self = this; - isBetween: function (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); - }, + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - isSame: function (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this === +input; - } else { - inputMs = +moment(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); - } - }, + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), + /** + * options, merged with the defaults + * options with an _ are converted to camelCase + * @property options + * @type {Object} + */ + Utils.each(options, function(value, name) { + delete options[name]; + options[Utils.toCamelCase(name)] = value; + }); - zone : deprecate( - 'moment().zone is deprecated, use moment().utcOffset instead. ' + - 'https://github.com/moment/moment/issues/1779', - function (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); - this.utcOffset(input, keepLocalTime); + // add some css to the element to prevent the browser from doing its native behavoir + if(this.options.behavior) { + Utils.toggleBehavior(this.element, this.options.behavior, true); + } - return this; - } else { - return -this.utcOffset(); - } - } - ), + /** + * event start handler on the element to start the detection + * @property eventStartHandler + * @type {Object} + */ + this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { + if(self.enabled && ev.eventType == EVENT_START) { + Detection.startDetect(self, ev); + } else if(ev.eventType == EVENT_TOUCH) { + Detection.detect(ev); + } + }); - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - utcOffset : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = utcOffsetFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._dateUtcOffset(); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } - } + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; + }; - return this; - } else { - return this._isUTC ? offset : this._dateUtcOffset(); + Hammer.Instance.prototype = { + /** + * bind events to the instance + * @method on + * @chainable + * @param {String} gestures multiple gestures by splitting with a space + * @param {Function} handler + * @param {Object} handler.ev event object + */ + on: function onEvent(gestures, handler) { + var self = this; + Event.on(self.element, gestures, handler, function(type) { + self.eventHandlers.push({ gesture: type, handler: handler }); + }); + return self; + }, + + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; + + Event.off(self.element, gestures, handler, function(type) { + var index = Utils.inArray({ gesture: type, handler: handler }); + if(index !== false) { + self.eventHandlers.splice(index, 1); } - }, + }); + return self; + }, - isLocal : function () { - return !this._isUTC; - }, + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; + } - isUtcOffset : function () { - return this._isUTC; - }, + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; - isUtc : function () { - return this._isUTC && this._offset === 0; - }, + // trigger on the target if it is in the instance element, + // this is for event delegation tricks + var element = this.element; + if(Utils.hasParent(eventData.target, element)) { + element = eventData.target; + } - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, + element.dispatchEvent(event); + return this; + }, - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, - parseZone : function () { - if (this._tzm) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - this.utcOffset(utcOffsetFromString(this._i)); - } - return this; - }, + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).utcOffset(); - } + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); - return (this.utcOffset() - input) % 60 === 0; - }, + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); + } - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + this.eventHandlers = []; - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - }, + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + return null; + } + }; - weekYear : function (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - }, - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, + /** + * @module gestures + */ + /** + * Move with x fingers (default 1) around on the page. + * Preventing the default browser behavior is a good way to improve feel and working. + * ```` + * hammertime.on("drag", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Drag + * @static + */ + /** + * @event drag + * @param {Object} ev + */ + /** + * @event dragstart + * @param {Object} ev + */ + /** + * @event dragend + * @param {Object} ev + */ + /** + * @event drapleft + * @param {Object} ev + */ + /** + * @event dragright + * @param {Object} ev + */ + /** + * @event dragup + * @param {Object} ev + */ + /** + * @event dragdown + * @param {Object} ev + */ - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + function dragGesture(ev, inst) { + var cur = Detection.current; - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { + return; + } - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, + case EVENT_MOVE: + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.distance < inst.options.dragMinDistance && + cur.name != name) { + return; + } - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, + var startCenter = cur.startEvent.center; - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, + // we are dragging! + if(cur.name != name) { + cur.name = name; + if(inst.options.dragDistanceCorrection && ev.distance > 0) { + // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. + // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. + // It might be useful to save the original start point somewhere + var factor = Math.abs(inst.options.dragMinDistance / ev.distance); + startCenter.pageX += ev.deltaX * factor; + startCenter.pageY += ev.deltaY * factor; + startCenter.clientX += ev.deltaX * factor; + startCenter.clientY += ev.deltaY * factor; - set : function (units, value) { - var unit; - if (typeof units === 'object') { - for (unit in units) { - this.set(unit, units[unit]); - } - } - else { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } } - } - return this; - }, - - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - var newLocaleData; - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = moment.localeData(key); - if (newLocaleData != null) { - this._locale = newLocaleData; + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; } - return this; - } - }, - lang : deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); + // keep direction on the axis that the drag gesture started on + var lastDirection = cur.lastEvent.direction; + if(ev.dragLockToAxis && lastDirection !== ev.direction) { + if(Utils.isVertical(lastDirection)) { + ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; + } else { + ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + } } - } - ), - - localeData : function () { - return this._locale; - }, - - _dateUtcOffset : function () { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(this._d.getTimezoneOffset() / 15) * 15; - } - }); + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - function rawMonthSetter(mom, value) { - var dayOfMonth; + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } - } + var isVertical = Utils.isVertical(ev.direction); - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); - } + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + case EVENT_END: + triggered = false; + break; } } - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; - } else { - return rawGetter(this, unit); - } - }; - } - - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + Hammer.gestures.Drag = { + name: name, + index: 50, + handler: dragGesture, + defaults: { + /** + * minimal movement that have to be made before the drag event gets triggered + * @property dragMinDistance + * @type {Number} + * @default 10 + */ + dragMinDistance: 10, - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; + /** + * Set dragDistanceCorrection to true to make the starting point of the drag + * be calculated from where the drag was triggered, not from where the touch started. + * Useful to avoid a jerk-starting drag, which can make fine-adjustments + * through dragging difficult, and be visually unappealing. + * @property dragDistanceCorrection + * @type {Boolean} + * @default true + */ + dragDistanceCorrection: true, - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, - // alias isUtc for dev-friendliness - moment.fn.isUTC = moment.fn.isUtc; + /** + * prevent default browser behavior when dragging occurs + * be careful with it, it makes the element a blocking element + * when you are using the drag gesture, it is a good practice to set this true + * @property dragBlockHorizontal + * @type {Boolean} + * @default false + */ + dragBlockHorizontal: false, - /************************************ - Duration Prototype - ************************************/ + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; - } + /** + * drag lock only kicks in when distance > dragLockMinDistance + * This way, locking occurs only when the distance has become large enough to reliably determine the direction + * @property dragLockMinDistance + * @type {Number} + * @default 25 + */ + dragLockMinDistance: 25 + } + }; + })('drag'); - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; + /** + * @module gestures + */ + /** + * trigger a simple gesture event, so you can do anything in your handler. + * only usable if you know what your doing... + * + * @class Gesture + * @static + */ + /** + * @event gesture + * @param {Object} ev + */ + Hammer.gestures.Gesture = { + name: 'gesture', + index: 1337, + handler: function releaseGesture(ev, inst) { + inst.trigger(this.name, ev); } + }; - extend(moment.duration.fn = Duration.prototype, { - - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; - - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; - - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; - - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + /** + * @module gestures + */ + /** + * Touch stays at the same place for x time + * + * @class Hold + * @static + */ + /** + * @event hold + * @param {Object} ev + */ - hours = absRound(minutes / 60); - data.hours = hours % 24; + /** + * @param {String} name + */ + (function(name) { + var timer; - days += absRound(hours / 24); + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + // set the gesture so we can check in the timeout if it still is + current.name = name; - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; + // set timer and if after the timeout it still is hold, + // we trigger the hold event + timer = setTimeout(function() { + if(current && current.name == name) { + inst.trigger(name, ev); + } + }, options.holdTimeout); + break; - data.days = days; - data.months = months; - data.years = years; - }, + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); + case EVENT_RELEASE: + clearTimeout(timer); + break; + } + } - this._data.milliseconds = Math.abs(this._data.milliseconds); - this._data.seconds = Math.abs(this._data.seconds); - this._data.minutes = Math.abs(this._data.minutes); - this._data.hours = Math.abs(this._data.hours); - this._data.months = Math.abs(this._data.months); - this._data.years = Math.abs(this._data.years); + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, - return this; + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 }, + handler: holdGesture + }; + })('hold'); - weeks : function () { - return absRound(this.days() / 7); - }, + /** + * @module gestures + */ + /** + * when a touch is being released from the page + * + * @class Release + * @static + */ + /** + * @event release + * @param {Object} ev + */ + Hammer.gestures.Release = { + name: 'release', + index: Infinity, + handler: function releaseGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + inst.trigger(this.name, ev); + } + } + }; - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + /** + * @module gestures + */ + /** + * triggers swipe events when the end velocity is above the threshold + * for best usage, set `preventDefault` (on the drag gesture) to `true` + * ```` + * hammertime.on("dragleft swipeleft", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Swipe + * @static + */ + /** + * @event swipe + * @param {Object} ev + */ + /** + * @event swipeleft + * @param {Object} ev + */ + /** + * @event swiperight + * @param {Object} ev + */ + /** + * @event swipeup + * @param {Object} ev + */ + /** + * @event swipedown + * @param {Object} ev + */ + Hammer.gestures.Swipe = { + name: 'swipe', + index: 40, + defaults: { + /** + * @property swipeMinTouches + * @type {Number} + * @default 1 + */ + swipeMinTouches: 1, - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); - } + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, - return this.localeData().postformat(output); - }, + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 + }, - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; + } - this._bubble(); + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.velocityX > options.swipeVelocityX || + ev.velocityY > options.swipeVelocityY) { + // trigger swipe events + inst.trigger(this.name, ev); + inst.trigger(this.name + ev.direction, ev); + } + } + } + }; - return this; - }, + /** + * @module gestures + */ + /** + * Single tap and a double tap on a place + * + * @class Tap + * @static + */ + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev + */ - subtract : function (input, val) { - var dur = moment.duration(input, val); + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - this._bubble(); + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - return this; - }, + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; - as : function (units) { - var days, months; - units = normalizeUnits(units); + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } - if (units === 'month' || units === 'year') { - days = this._days + this._milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(yearsToDays(this._months / 12)); - switch (units) { - case 'week': return days / 7 + this._milliseconds / 6048e5; - case 'day': return days + this._milliseconds / 864e5; - case 'hour': return days * 24 + this._milliseconds / 36e5; - case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; - case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; - default: throw new Error('Unknown unit ' + units); + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } } - } - }, + break; + } + } - lang : moment.fn.lang, - locale : moment.fn.locale, + Hammer.gestures.Tap = { + name: name, + index: 100, + handler: tapGesture, + defaults: { + /** + * max time of a tap, this is for the slow tappers + * @property tapMaxTime + * @type {Number} + * @default 250 + */ + tapMaxTime: 250, - toIsoString : deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead ' + - '(notice the capitals)', - function () { - return this.toISOString(); - } - ), + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - toISOString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); - }, + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 + } + }; + })('tap'); - localeData : function () { - return this._locale; - }, + /** + * @module gestures + */ + /** + * when a touch is being touched at the page + * + * @class Touch + * @static + */ + /** + * @event touch + * @param {Object} ev + */ + Hammer.gestures.Touch = { + name: 'touch', + index: -Infinity, + defaults: { + /** + * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, + * but it improves gestures like transforming and dragging. + * be careful with using this, it can be very annoying for users to be stuck on the page + * @property preventDefault + * @type {Boolean} + * @default false + */ + preventDefault: false, - toJSON : function () { - return this.toISOString(); + /** + * disable mouse events, so only touch (or pen!) input triggers events + * @property preventMouse + * @type {Boolean} + * @default false + */ + preventMouse: false + }, + handler: function touchGesture(ev, inst) { + if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { + ev.stopDetect(); + return; } - }); - - moment.duration.fn.toString = moment.duration.fn.toISOString; - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; - } + if(inst.options.preventDefault) { + ev.preventDefault(); + } - for (i in unitMillisecondFactors) { - if (hasOwnProp(unitMillisecondFactors, i)) { - makeDurationGetter(i.toLowerCase()); + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); } } + }; - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); - }; + /** + * @module gestures + */ + /** + * User want to scale or rotate with 2 fingers + * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the + * `preventDefault` option. + * + * @class Transform + * @static + */ + /** + * @event transform + * @param {Object} ev + */ + /** + * @event transformstart + * @param {Object} ev + */ + /** + * @event transformend + * @param {Object} ev + */ + /** + * @event pinchin + * @param {Object} ev + */ + /** + * @event pinchout + * @param {Object} ev + */ + /** + * @event rotate + * @param {Object} ev + */ - /************************************ - Default Locale - ************************************/ + /** + * @param {String} name + */ + (function(name) { + var triggered = false; + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - // Set default locale, other locale will inherit from English. - moment.locale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } - /* EMBED_LOCALES */ + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); - /************************************ - Exposing Moment - ************************************/ + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; + } - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - 'Accessing Moment through the global scope is ' + - 'deprecated, and will be removed in an upcoming ' + - 'release.', - moment); - } else { - globalScope.moment = moment; + // we are transforming! + Detection.current.name = name; + + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } + + inst.trigger(name, ev); // basic transform event + + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } + + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; + + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; } } - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; - } + Hammer.gestures.Transform = { + name: name, + index: 45, + defaults: { + /** + * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 + * @property transformMinScale + * @type {Number} + * @default 0.01 + */ + transformMinScale: 0.01, - return moment; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - makeGlobal(true); - } else { - makeGlobal(); - } - }).call(this); + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 + }, - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) + handler: transformGesture + }; + })('transform'); + + /** + * @module hammer + */ + + // AMD export + if(true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + // commonjs export + } else if(typeof module !== 'undefined' && module.exports) { + module.exports = Hammer; + // browser export + } else { + window.Hammer = Hammer; + } + + })(window); /***/ }, /* 60 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(67); - var HierarchialRepulsionMixin = __webpack_require__(68); - var BarnesHutMixin = __webpack_require__(69); + var RepulsionMixin = __webpack_require__(68); + var HierarchialRepulsionMixin = __webpack_require__(69); + var BarnesHutMixin = __webpack_require__(70); /** * Toggling barnes Hut calculation on and off. @@ -34985,6 +34960,19 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 67 */ +/***/ function(module, exports, __webpack_require__) { + + function webpackContext(req) { + throw new Error("Cannot find module '" + req + "'."); + } + webpackContext.keys = function() { return []; }; + webpackContext.resolve = webpackContext; + module.exports = webpackContext; + webpackContext.id = 67; + + +/***/ }, +/* 68 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35054,7 +35042,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 68 */ +/* 69 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35213,7 +35201,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 69 */ +/* 70 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35617,19 +35605,6 @@ return /******/ (function(modules) { // webpackBootstrap }; -/***/ }, -/* 70 */ -/***/ function(module, exports, __webpack_require__) { - - function webpackContext(req) { - throw new Error("Cannot find module '" + req + "'."); - } - webpackContext.keys = function() { return []; }; - webpackContext.resolve = webpackContext; - module.exports = webpackContext; - webpackContext.id = 70; - - /***/ }, /* 71 */ /***/ function(module, exports, __webpack_require__) { diff --git a/dist/vis.map b/dist/vis.map index 346edaa7..f0b275ae 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","stopPropagation","removeFromDataSet","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","newProps","initial","_updateItemProps","_moveToGroup","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackContext","req","resolve","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","groupChanged","_moveToGroup","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","stopPropagation","removeFromDataSet","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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AY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 0e987f72..366a0249 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.11.1-SNAPSHOT - * @date 2015-03-10 + * @date 2015-03-31 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -25,15 +25,15 @@ "use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);else for(var s in t)t.hasOwnProperty(s)&&e.hasOwnProperty(s)&&(i[e[s]]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var D=this.yLabel;D.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(D,o.x,o.y));var S=this.zLabel;S.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(S,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+D.x/S/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
    x:"+t.point.x+"
    y:"+t.point.y+"
    z:"+t.point.z+"
    ",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index] },s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)?m="current-time":o.hasParent(u,this.dom.center)&&(m="background"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},s.prototype.getEventProperties=function(t){var e=t.gesture?t.gesture.center.pageX:t.pageX,i=t.gesture?t.gesture.center.pageY:t.pageY,s=e-o.getAbsoluteLeft(this.dom.centerContainer),n=i-o.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(s),a=o.getTarget(t),h=null;o.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&o.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":o.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":o.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":o.hasParent(a,this.customTime.bar)?h="custom-time":o.hasParent(a,this.currentTime.bar)?h="current-time":o.hasParent(a,this.dom.center)&&(h="background");var d=[],l=this.linegraph.yAxisLeft,c=this.linegraph.yAxisRight;return l.hidden||d.push(l.screenToValue(n)),c.hidden||d.push(c.screenToValue(n)),{event:t,what:h,pageX:e,pageY:i,x:s,y:n,time:r,value:d}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start -})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){t.preventDefault(),t.stopPropagation(),e.parent.removeFromDataSet(e)}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg) -},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.clientY:t.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1; +})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){t.preventDefault(),t.stopPropagation(),e.parent.removeFromDataSet(e)}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg) +},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&!(a instanceof f)&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.clientY:t.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1; var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=this.nodesData._fieldId||null,s=0,o=t.length;o>s;s++){e=t[s];var n=this.nodesData.get(e);i&&(n.id=n[i]);var r=new f(n,this.images,this.groups,this.constants);if(this.nodes[e]=r,!(0!=r.xFixed&&0!=r.yFixed||null!==r.x&&null!==r.y)){var a=1*t.length+10,h=2*Math.PI*Math.random();0==r.xFixed&&(r.x=a*Math.cos(h)),0==r.yFixed&&(r.y=a*Math.sin(h))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=this.edgesData._fieldId,o=0,n=t.length;n>o;o++){var r=t[o],a=e[r];a&&a.disconnect();var h=i.get(r,{showInternalIds:!0});s&&(h.id=h[s]),e[r]=new g(h,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes(); for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy -},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=M.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=M.DELIMITER);var i=E+n();if(C[i])return N=M.DELIMITER,k=i,o(),void o();if(C[E])return N=M.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=M.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=M.IDENTIFIER)}for(N=M.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==M.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=M.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=M.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==M.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=M.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=M.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=M.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function S(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),D(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=M.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=S},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",D=t.length,S=0;D-1>S;S++)s=0==S?t[0]:t[S-1],o=t[S],n=t[S+1],r=D>S+2?t[S+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;os;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY); -return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(S,d),a&&(d.changedLength=h,d.eventType=a,s.call(S,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(S,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return D.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||D.matchType(u,s)?o=u:D.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return S.stopDetect()}}}},D=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},S=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?S.startDetect(i,t):t.eventType==_&&S.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=S.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=S.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=S.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=S.current,h=S.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(t,e){return Ie.call(t,e)}function h(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(t){Ce.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function l(t,e){var i=!0;return b(function(){return i&&(d(t),i=!1),e.apply(this,arguments)},e)}function c(t,e){Di[t]||(d(e),Di[t]=!0)}function p(t,e){return function(i){return w(t.call(this,i),e)}}function u(t,e){return function(i){return this.localeData().ordinal(t.call(this,i),e)}}function m(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Mi===!1&&(Mi=!0,Ce.updateOffset(this),Mi=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Di={},Si=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Mi=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week -},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=S(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Si.length-1;Oe>=0;--Oe)I(Si[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:M(1,"add"),subtract:M(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(De(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(De(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Se(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Me(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); +},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=M.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=M.DELIMITER);var i=E+n();if(C[i])return N=M.DELIMITER,k=i,o(),void o();if(C[E])return N=M.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=M.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=M.IDENTIFIER)}for(N=M.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==M.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=M.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=M.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==M.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=M.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=M.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=M.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function S(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),D(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=M.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=S},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",D=t.length,S=0;D-1>S;S++)s=0==S?t[0]:t[S-1],o=t[S],n=t[S+1],r=D>S+2?t[S+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg,c[d].label)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Mi===!1&&(Mi=!0,Ce.updateOffset(this),Mi=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Di={},Si=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Mi=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=S(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Si.length-1;Oe>=0;--Oe)I(Si[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:M(1,"add"),subtract:M(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(De(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(De(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Se(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce +}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Me(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){S.register(t)}),w.onTouch(a.DOCUMENT,v,S.detect),w.onTouch(a.DOCUMENT,y,S.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(S,d),a&&(d.changedLength=h,d.eventType=a,s.call(S,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(S,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return D.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||D.matchType(u,s)?o=u:D.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return S.stopDetect()}}}},D=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},S=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?S.startDetect(i,t):t.eventType==_&&S.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=S.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=S.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=S.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=S.current,h=S.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=70},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +var e=this;this.boundFunction=e._createManipulatorBar,this.on("select",this.boundFunction)}else{for(;this.editModeDiv.hasChildNodes();)this.editModeDiv.removeChild(this.editModeDiv.firstChild);this.manipulationDOM.editModeSpan=document.createElement("div"),this.manipulationDOM.editModeSpan.className="network-manipulationUI edit editmode",this.manipulationDOM.editModeLabelSpan=document.createElement("div"),this.manipulationDOM.editModeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editModeLabelSpan.innerHTML=t.edit,this.manipulationDOM.editModeSpan.appendChild(this.manipulationDOM.editModeLabelSpan),this.editModeDiv.appendChild(this.manipulationDOM.editModeSpan),this._bindHammerToDiv(this.manipulationDOM.editModeSpan,"_toggleEditMode")}},e._bindHammerToDiv=function(t,e){var i=r(t,{prevent_default:!0});i.on("touch",this[e].bind(this)),this.manipulationHammers.push(i)},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.addDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar");var e=this;this.boundFunction=e._addNode,this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation(!0),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.edgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar");var e=this;this.boundFunction=e._handleConnect,this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this.cachedFunctions._handleOnHold=this._handleOnHold,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleOnHold=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.editEdgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar"),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation(!0)),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!==e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation(!1),this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/lib/timeline/component/ItemSet.js b/lib/timeline/component/ItemSet.js index 46c8f9d9..115c072c 100644 --- a/lib/timeline/component/ItemSet.js +++ b/lib/timeline/component/ItemSet.js @@ -1115,31 +1115,21 @@ ItemSet.prototype._onDragStart = function (event) { if (dragLeftItem) { props = { item: dragLeftItem, - initialX: event.gesture.center.clientX + initialX: event.gesture.center.clientX, + dragLeft: true, + data: util.extend({}, item.data) // clone the items data }; - if (me.options.editable.updateTime) { - props.start = item.data.start.valueOf(); - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } - this.touchParams.itemProps = [props]; } else if (dragRightItem) { props = { item: dragRightItem, - initialX: event.gesture.center.clientX + initialX: event.gesture.center.clientX, + dragRight: true, + data: util.extend({}, item.data) // clone the items data }; - if (me.options.editable.updateTime) { - props.end = item.data.end.valueOf(); - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } - this.touchParams.itemProps = [props]; } else { @@ -1147,24 +1137,10 @@ ItemSet.prototype._onDragStart = function (event) { var item = me.items[id]; var props = { item: item, - initialX: event.gesture.center.clientX + initialX: event.gesture.center.clientX, + data: util.extend({}, item.data) // clone the items data }; - if (me.options.editable.updateTime) { - if ('start' in item.data) { - props.start = item.data.start.valueOf(); - - if ('end' in item.data) { - // we store a duration here in order not to change the width - // of the item when moving it. - props.duration = item.data.end.valueOf() - props.start; - } - } - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } - return props; }); } @@ -1209,12 +1185,14 @@ ItemSet.prototype._onDragStartAddItem = function (event) { var newItem = new RangeItem(itemData, this.conversion, this.options); newItem.id = id; // TODO: not so nice setting id afterwards + newItem.data = itemData; this._addItem(newItem); var props = { item: newItem, - end: end.valueOf(), - initialX: event.gesture.center.clientX + dragRight: true, + initialX: event.gesture.center.clientX, + data: util.extend({}, itemData) }; this.touchParams.itemProps = [props]; @@ -1240,35 +1218,63 @@ ItemSet.prototype._onDrag = function (event) { // move this.touchParams.itemProps.forEach(function (props) { - var newProps = {}; var current = me.body.util.toTime(event.gesture.center.clientX - xOffset); var initial = me.body.util.toTime(props.initialX - xOffset); var offset = current - initial; - if ('start' in props) { - var start = new Date(props.start + offset); - newProps.start = snap ? snap(start, scale, step) : start; - } + var itemData = util.extend({}, props.item.data); // clone the data - if ('end' in props) { - var end = new Date(props.end + offset); - newProps.end = snap ? snap(end, scale, step) : end; - } - else if ('duration' in props) { - newProps.end = new Date(newProps.start.valueOf() + props.duration); + if (me.options.editable.updateTime) { + if (props.dragLeft) { + // drag left side of a range item + if (itemData.start != undefined) { + var initialStart = util.convert(props.data.start, 'Date'); + var start = new Date(initialStart.valueOf() + offset); + itemData.start = snap ? snap(start, scale, step) : start; + } + } + else if (props.dragRight) { + // drag right side of a range item + if (itemData.end != undefined) { + var initialEnd = util.convert(props.data.end, 'Date'); + var end = new Date(initialEnd.valueOf() + offset); + itemData.end = snap ? snap(end, scale, step) : end; + } + } + else { + // drag both start and end + if (itemData.start != undefined) { + var initialStart = util.convert(props.data.start, 'Date').valueOf(); + var start = new Date(initialStart + offset); + + if (itemData.end != undefined) { + var initialEnd = util.convert(props.data.end, 'Date'); + var duration = initialEnd.valueOf() - initialStart.valueOf(); + + itemData.start = snap ? snap(start, scale, step) : start; + itemData.end = new Date(itemData.start.valueOf() + duration); + } + else { + itemData.start = snap ? snap(start, scale, step) : start; + } + } + } } - if ('group' in props) { - // drag from one group to another - var group = me.groupFromTarget(event); - newProps.group = group && group.groupId; + if (me.options.editable.updateGroup && (!props.dragLeft && !props.dragRight)) { + if (itemData.group != undefined) { + // drag from one group to another + var group = me.groupFromTarget(event); + if (group) { + itemData.group = group.groupId; + } + } } // confirm moving the item - var itemData = util.extend({}, props.item.data, newProps); me.options.onMoving(itemData, function (itemData) { if (itemData) { - me._updateItemProps(props.item, itemData); + props.item.setData(itemData); } }); }); @@ -1278,28 +1284,6 @@ ItemSet.prototype._onDrag = function (event) { } }; -/** - * Update an items properties - * @param {Item} item - * @param {Object} props Can contain properties start, end, and group. - * @private - */ -ItemSet.prototype._updateItemProps = function(item, props) { - // TODO: copy all properties from props to item? (also new ones) - if ('start' in props) { - item.data.start = props.start; - } - if ('end' in props) { - item.data.end = props.end; - } - else if ('duration' in props) { - item.data.end = new Date(props.start.valueOf() + props.duration); - } - if ('group' in props && item.data.group != props.group) { - this._moveToGroup(item, props.group) - } -}; - /** * Move an item to another group * @param {Item} item @@ -1339,9 +1323,9 @@ ItemSet.prototype._onDragEnd = function (event) { this.touchParams.itemProps = null; itemProps.forEach(function (props) { var id = props.item.id; - var itemData = me.itemsData.get(id, me.itemOptions); + var exists = me.itemsData.get(id, me.itemOptions) != null; - if (!itemData) { + if (!exists) { // add a new item me.options.onAdd(props.item.data, function (itemData) { me._removeItem(props.item); // remove temporary item @@ -1356,39 +1340,21 @@ ItemSet.prototype._onDragEnd = function (event) { } else { // update existing item - var changed = false; - if ('start' in props.item.data) { - changed = (props.start != props.item.data.start.valueOf()); - itemData.start = util.convert(props.item.data.start, - dataset._options.type && dataset._options.type.start || 'Date'); - } - if ('end' in props.item.data) { - changed = changed || (props.end != props.item.data.end.valueOf()); - itemData.end = util.convert(props.item.data.end, - dataset._options.type && dataset._options.type.end || 'Date'); - } - if ('group' in props.item.data) { - changed = changed || (props.group != props.item.data.group); - itemData.group = props.item.data.group; - } - - // only apply changes when start or end is actually changed - if (changed) { - me.options.onMove(itemData, function (itemData) { - if (itemData) { - // apply changes - itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) - changes.push(itemData); - } - else { - // restore original values - me._updateItemProps(props.item, props); + var itemData = util.extend({}, props.item.data); // clone the data + me.options.onMove(itemData, function (itemData) { + if (itemData) { + // apply changes + itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) + changes.push(itemData); + } + else { + // restore original values + props.item.setData(props.data); - me.stackDirty = true; // force re-stacking of all items next redraw - me.body.emitter.emit('change'); - } - }); - } + me.stackDirty = true; // force re-stacking of all items next redraw + me.body.emitter.emit('change'); + } + }); } }); diff --git a/lib/timeline/component/item/Item.js b/lib/timeline/component/item/Item.js index 7bc0b148..a2d4caf2 100644 --- a/lib/timeline/component/item/Item.js +++ b/lib/timeline/component/item/Item.js @@ -54,6 +54,11 @@ Item.prototype.unselect = function() { * @param {Object} data */ Item.prototype.setData = function(data) { + var groupChanged = data.group != undefined && this.data.group != data.group; + if (groupChanged) { + this.parent.itemSet._moveToGroup(this, data.group); + } + this.data = data; this.dirty = true; if (this.displayed) this.redraw(); diff --git a/test/timeline.html b/test/timeline.html index 5824337a..20e1e24d 100644 --- a/test/timeline.html +++ b/test/timeline.html @@ -41,8 +41,9 @@
    @@ -45,7 +58,7 @@ var now = moment().minutes(0).seconds(0).milliseconds(0); var groupCount = 3; - var itemCount = 20; + var itemCount = 7; // create a data set with groups var names = ['John (0)', 'Alston (1)', 'Lee (2)', 'Grant (3)']; @@ -58,6 +71,7 @@ var items = new vis.DataSet(); for (var i = 0; i < itemCount; i++) { var start = now.clone().add(Math.random() * 200, 'hours'); + var end = Math.random() > 0.5 ? start.clone().add(24, 'hours') : undefined; var group = Math.floor(Math.random() * groupCount); items.add({ id: i, @@ -65,8 +79,9 @@ content: 'item ' + i + ' (' + names[group] + ')', start: start, + end: end, title: 'Title for item ' + i, - type: 'box', + //type: 'box', className: 'myItem' }); } @@ -109,10 +124,14 @@ }, onMoving: function (item, callback) { - var min = moment().minutes(0).seconds(0).milliseconds(0).add(2, 'day').toDate(); + var min = moment().minutes(0).seconds(0).milliseconds(0).add(-2, 'day').toDate(); if (item.start < min) { item.start = min; } + //item.className = item.id > 3 ? 'red' : 'green'; + //item.group = Math.random() > 0.5 ? 2 : 1; + //item.hasMoved = true; + //item.content = Math.round(Math.random() * 4); callback(item); // send back item as confirmation (can be changed) }, From fbfe6ad44564aac9a619b8aa3118ba5b6f44cc30 Mon Sep 17 00:00:00 2001 From: jos Date: Tue, 7 Apr 2015 10:36:12 +0200 Subject: [PATCH 37/43] Fixed offset issue with dragging items vertically when the page is scrolled (this regression was introduced a few commits back) --- dist/vis.js | 56 +++++++++++++++---------------- dist/vis.map | 2 +- dist/vis.min.js | 10 +++--- lib/timeline/component/ItemSet.js | 18 +++++----- test/timeline_groups.html | 2 +- 5 files changed, 44 insertions(+), 44 deletions(-) diff --git a/dist/vis.js b/dist/vis.js index 378ad0f9..e3193f71 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.11.1-SNAPSHOT - * @date 2015-03-31 + * @date 2015-04-07 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -13637,7 +13637,7 @@ return /******/ (function(modules) { // webpackBootstrap if (dragLeftItem) { props = { item: dragLeftItem, - initialX: event.gesture.center.clientX, + initialX: event.gesture.center.pageX, dragLeft: true, data: util.extend({}, item.data) // clone the items data }; @@ -13647,7 +13647,7 @@ return /******/ (function(modules) { // webpackBootstrap else if (dragRightItem) { props = { item: dragRightItem, - initialX: event.gesture.center.clientX, + initialX: event.gesture.center.pageX, dragRight: true, data: util.extend({}, item.data) // clone the items data }; @@ -13659,7 +13659,7 @@ return /******/ (function(modules) { // webpackBootstrap var item = me.items[id]; var props = { item: item, - initialX: event.gesture.center.clientX, + initialX: event.gesture.center.pageX, data: util.extend({}, item.data) // clone the items data }; @@ -13713,7 +13713,7 @@ return /******/ (function(modules) { // webpackBootstrap var props = { item: newItem, dragRight: true, - initialX: event.gesture.center.clientX, + initialX: event.gesture.center.pageX, data: util.extend({}, itemData) }; this.touchParams.itemProps = [props]; @@ -13740,7 +13740,7 @@ return /******/ (function(modules) { // webpackBootstrap // move this.touchParams.itemProps.forEach(function (props) { - var current = me.body.util.toTime(event.gesture.center.clientX - xOffset); + var current = me.body.util.toTime(event.gesture.center.pageX - xOffset); var initial = me.body.util.toTime(props.initialX - xOffset); var offset = current - initial; @@ -14097,23 +14097,23 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Group | null} group */ ItemSet.prototype.groupFromTarget = function(event) { - var clientY = event.gesture ? event.gesture.center.clientY : event.clientY; + var pageY = event.gesture ? event.gesture.center.pageY : event.pageY; for (var i = 0; i < this.groupIds.length; i++) { var groupId = this.groupIds[i]; var group = this.groups[groupId]; var foreground = group.dom.foreground; var top = util.getAbsoluteTop(foreground); - if (clientY > top && clientY < top + foreground.offsetHeight) { + if (pageY > top && pageY < top + foreground.offsetHeight) { return group; } if (this.options.orientation === 'top') { - if (i === this.groupIds.length - 1 && clientY > top) { + if (i === this.groupIds.length - 1 && pageY > top) { return group; } } else { - if (i === 0 && clientY < top + foreground.offset) { + if (i === 0 && pageY < top + foreground.offset) { return group; } } @@ -30518,9 +30518,9 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(68); - var HierarchialRepulsionMixin = __webpack_require__(69); - var BarnesHutMixin = __webpack_require__(70); + var RepulsionMixin = __webpack_require__(67); + var HierarchialRepulsionMixin = __webpack_require__(68); + var BarnesHutMixin = __webpack_require__(69); /** * Toggling barnes Hut calculation on and off. @@ -34960,19 +34960,6 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 67 */ -/***/ function(module, exports, __webpack_require__) { - - function webpackContext(req) { - throw new Error("Cannot find module '" + req + "'."); - } - webpackContext.keys = function() { return []; }; - webpackContext.resolve = webpackContext; - module.exports = webpackContext; - webpackContext.id = 67; - - -/***/ }, -/* 68 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35042,7 +35029,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 69 */ +/* 68 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35201,7 +35188,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 70 */ +/* 69 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35605,6 +35592,19 @@ return /******/ (function(modules) { // webpackBootstrap }; +/***/ }, +/* 70 */ +/***/ function(module, exports, __webpack_require__) { + + function webpackContext(req) { + throw new Error("Cannot find module '" + req + "'."); + } + webpackContext.keys = function() { return []; }; + webpackContext.resolve = webpackContext; + module.exports = webpackContext; + webpackContext.id = 70; + + /***/ }, /* 71 */ /***/ function(module, exports, __webpack_require__) { diff --git a/dist/vis.map b/dist/vis.map index f0b275ae..572196f4 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","groupChanged","_moveToGroup","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","stopPropagation","removeFromDataSet","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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AY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","groupChanged","_moveToGroup","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","stopPropagation","removeFromDataSet","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackContext","req","resolve","webpackPolyfill","paths"],"mappings":"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AAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 366a0249..c7591de0 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.11.1-SNAPSHOT - * @date 2015-03-31 + * @date 2015-04-07 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -26,14 +26,14 @@ if(this.dataSet&&this.dataSet.off("*",this._onChange),void 0!==t){Array.isArray(t)&&(t=new a(t));var i;if(!(t instanceof a||t instanceof h))throw new Error("Array, DataSet, or DataView expected");if(i=t.get(),0!=i.length){this.dataSet=t,this.dataTable=i,this._onChange=function(){e.setData(e.dataSet)},this.dataSet.on("*",this._onChange),this.colX="x",this.colY="y",this.colZ="z",this.colValue="style",this.colFilter="filter",i[0].hasOwnProperty("filter")&&void 0===this.dataFilter&&(this.dataFilter=new u(t,this.colFilter,this),this.dataFilter.setOnLoadCallback(function(){e.redraw()}));var o=this.style==s.STYLE.BAR||this.style==s.STYLE.BARCOLOR||this.style==s.STYLE.BARSIZE;if(o){if(void 0!==this.defaultXBarWidth)this.xBarWidth=this.defaultXBarWidth;else{var n=this.getDistinctValues(i,this.colX);this.xBarWidth=n[1]-n[0]||1}if(void 0!==this.defaultYBarWidth)this.yBarWidth=this.defaultYBarWidth;else{var r=this.getDistinctValues(i,this.colY);this.yBarWidth=r[1]-r[0]||1}}var d=this.getColumnRange(i,this.colX);o&&(d.min-=this.xBarWidth/2,d.max+=this.xBarWidth/2),this.xMin=void 0!==this.defaultXMin?this.defaultXMin:d.min,this.xMax=void 0!==this.defaultXMax?this.defaultXMax:d.max,this.xMax<=this.xMin&&(this.xMax=this.xMin+1),this.xStep=void 0!==this.defaultXStep?this.defaultXStep:(this.xMax-this.xMin)/5;var l=this.getColumnRange(i,this.colY);o&&(l.min-=this.yBarWidth/2,l.max+=this.yBarWidth/2),this.yMin=void 0!==this.defaultYMin?this.defaultYMin:l.min,this.yMax=void 0!==this.defaultYMax?this.defaultYMax:l.max,this.yMax<=this.yMin&&(this.yMax=this.yMin+1),this.yStep=void 0!==this.defaultYStep?this.defaultYStep:(this.yMax-this.yMin)/5;var c=this.getColumnRange(i,this.colZ);if(this.zMin=void 0!==this.defaultZMin?this.defaultZMin:c.min,this.zMax=void 0!==this.defaultZMax?this.defaultZMax:c.max,this.zMax<=this.zMin&&(this.zMax=this.zMin+1),this.zStep=void 0!==this.defaultZStep?this.defaultZStep:(this.zMax-this.zMin)/5,void 0!==this.colValue){var p=this.getColumnRange(i,this.colValue);this.valueMin=void 0!==this.defaultValueMin?this.defaultValueMin:p.min,this.valueMax=void 0!==this.defaultValueMax?this.defaultValueMax:p.max,this.valueMax<=this.valueMin&&(this.valueMax=this.valueMin+1)}this._setScale()}}},s.prototype._getDataPoints=function(t){var e,i,o,n,r,a,h=[];if(this.style===s.STYLE.GRID||this.style===s.STYLE.SURFACE){var d=[],c=[];for(o=0;ot;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var D=this.yLabel;D.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(D,o.x,o.y));var S=this.zLabel;S.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(S,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+D.x/S/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
    x:"+t.point.x+"
    y:"+t.point.y+"
    z:"+t.point.z+"
    ",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index] },s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)?m="current-time":o.hasParent(u,this.dom.center)&&(m="background"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},s.prototype.getEventProperties=function(t){var e=t.gesture?t.gesture.center.pageX:t.pageX,i=t.gesture?t.gesture.center.pageY:t.pageY,s=e-o.getAbsoluteLeft(this.dom.centerContainer),n=i-o.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(s),a=o.getTarget(t),h=null;o.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&o.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":o.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":o.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":o.hasParent(a,this.customTime.bar)?h="custom-time":o.hasParent(a,this.currentTime.bar)?h="current-time":o.hasParent(a,this.dom.center)&&(h="background");var d=[],l=this.linegraph.yAxisLeft,c=this.linegraph.yAxisRight;return l.hidden||d.push(l.screenToValue(n)),c.hidden||d.push(c.screenToValue(n)),{event:t,what:h,pageX:e,pageY:i,x:s,y:n,time:r,value:d}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start })},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){t.preventDefault(),t.stopPropagation(),e.parent.removeFromDataSet(e)}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg) -},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&!(a instanceof f)&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.clientY:t.clientY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1; +},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&!(a instanceof f)&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.pageY:t.pageY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1; var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=this.nodesData._fieldId||null,s=0,o=t.length;o>s;s++){e=t[s];var n=this.nodesData.get(e);i&&(n.id=n[i]);var r=new f(n,this.images,this.groups,this.constants);if(this.nodes[e]=r,!(0!=r.xFixed&&0!=r.yFixed||null!==r.x&&null!==r.y)){var a=1*t.length+10,h=2*Math.PI*Math.random();0==r.xFixed&&(r.x=a*Math.cos(h)),0==r.yFixed&&(r.y=a*Math.sin(h))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=this.edgesData._fieldId,o=0,n=t.length;n>o;o++){var r=t[o],a=e[r];a&&a.disconnect();var h=i.get(r,{showInternalIds:!0});s&&(h.id=h[s]),e[r]=new g(h,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes(); for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy },s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=M.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=M.DELIMITER);var i=E+n();if(C[i])return N=M.DELIMITER,k=i,o(),void o();if(C[E])return N=M.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=M.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=M.IDENTIFIER)}for(N=M.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==M.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=M.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=M.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==M.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=M.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=M.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=M.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function S(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),D(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=M.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=S},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",D=t.length,S=0;D-1>S;S++)s=0==S?t[0]:t[S-1],o=t[S],n=t[S+1],r=D>S+2?t[S+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg,c[d].label)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Mi===!1&&(Mi=!0,Ce.updateOffset(this),Mi=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Di={},Si=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Mi=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=S(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Si.length-1;Oe>=0;--Oe)I(Si[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:M(1,"add"),subtract:M(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(De(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(De(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Se(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce -}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Me(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){S.register(t)}),w.onTouch(a.DOCUMENT,v,S.detect),w.onTouch(a.DOCUMENT,y,S.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(S,d),a&&(d.changedLength=h,d.eventType=a,s.call(S,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(S,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return D.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||D.matchType(u,s)?o=u:D.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return S.stopDetect()}}}},D=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},S=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?S.startDetect(i,t):t.eventType==_&&S.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=S.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=S.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=S.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=S.current,h=S.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); +}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Me(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){S.register(t)}),w.onTouch(a.DOCUMENT,v,S.detect),w.onTouch(a.DOCUMENT,y,S.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(S,d),a&&(d.changedLength=h,d.eventType=a,s.call(S,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(S,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return D.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||D.matchType(u,s)?o=u:D.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return S.stopDetect()}}}},D=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},S=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?S.startDetect(i,t):t.eventType==_&&S.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=S.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=S.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=S.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=S.current,h=S.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +var e=this;this.boundFunction=e._createManipulatorBar,this.on("select",this.boundFunction)}else{for(;this.editModeDiv.hasChildNodes();)this.editModeDiv.removeChild(this.editModeDiv.firstChild);this.manipulationDOM.editModeSpan=document.createElement("div"),this.manipulationDOM.editModeSpan.className="network-manipulationUI edit editmode",this.manipulationDOM.editModeLabelSpan=document.createElement("div"),this.manipulationDOM.editModeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editModeLabelSpan.innerHTML=t.edit,this.manipulationDOM.editModeSpan.appendChild(this.manipulationDOM.editModeLabelSpan),this.editModeDiv.appendChild(this.manipulationDOM.editModeSpan),this._bindHammerToDiv(this.manipulationDOM.editModeSpan,"_toggleEditMode")}},e._bindHammerToDiv=function(t,e){var i=r(t,{prevent_default:!0});i.on("touch",this[e].bind(this)),this.manipulationHammers.push(i)},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.addDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar");var e=this;this.boundFunction=e._addNode,this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation(!0),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.edgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar");var e=this;this.boundFunction=e._handleConnect,this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this.cachedFunctions._handleOnHold=this._handleOnHold,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleOnHold=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.editEdgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar"),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation(!0)),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!==e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation(!1),this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=70},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/lib/timeline/component/ItemSet.js b/lib/timeline/component/ItemSet.js index 115c072c..3eb35164 100644 --- a/lib/timeline/component/ItemSet.js +++ b/lib/timeline/component/ItemSet.js @@ -1115,7 +1115,7 @@ ItemSet.prototype._onDragStart = function (event) { if (dragLeftItem) { props = { item: dragLeftItem, - initialX: event.gesture.center.clientX, + initialX: event.gesture.center.pageX, dragLeft: true, data: util.extend({}, item.data) // clone the items data }; @@ -1125,7 +1125,7 @@ ItemSet.prototype._onDragStart = function (event) { else if (dragRightItem) { props = { item: dragRightItem, - initialX: event.gesture.center.clientX, + initialX: event.gesture.center.pageX, dragRight: true, data: util.extend({}, item.data) // clone the items data }; @@ -1137,7 +1137,7 @@ ItemSet.prototype._onDragStart = function (event) { var item = me.items[id]; var props = { item: item, - initialX: event.gesture.center.clientX, + initialX: event.gesture.center.pageX, data: util.extend({}, item.data) // clone the items data }; @@ -1191,7 +1191,7 @@ ItemSet.prototype._onDragStartAddItem = function (event) { var props = { item: newItem, dragRight: true, - initialX: event.gesture.center.clientX, + initialX: event.gesture.center.pageX, data: util.extend({}, itemData) }; this.touchParams.itemProps = [props]; @@ -1218,7 +1218,7 @@ ItemSet.prototype._onDrag = function (event) { // move this.touchParams.itemProps.forEach(function (props) { - var current = me.body.util.toTime(event.gesture.center.clientX - xOffset); + var current = me.body.util.toTime(event.gesture.center.pageX - xOffset); var initial = me.body.util.toTime(props.initialX - xOffset); var offset = current - initial; @@ -1575,23 +1575,23 @@ ItemSet.prototype.itemFromTarget = function(event) { * @return {Group | null} group */ ItemSet.prototype.groupFromTarget = function(event) { - var clientY = event.gesture ? event.gesture.center.clientY : event.clientY; + var pageY = event.gesture ? event.gesture.center.pageY : event.pageY; for (var i = 0; i < this.groupIds.length; i++) { var groupId = this.groupIds[i]; var group = this.groups[groupId]; var foreground = group.dom.foreground; var top = util.getAbsoluteTop(foreground); - if (clientY > top && clientY < top + foreground.offsetHeight) { + if (pageY > top && pageY < top + foreground.offsetHeight) { return group; } if (this.options.orientation === 'top') { - if (i === this.groupIds.length - 1 && clientY > top) { + if (i === this.groupIds.length - 1 && pageY > top) { return group; } } else { - if (i === 0 && clientY < top + foreground.offset) { + if (i === 0 && pageY < top + foreground.offset) { return group; } } diff --git a/test/timeline_groups.html b/test/timeline_groups.html index 213f8982..58901d08 100644 --- a/test/timeline_groups.html +++ b/test/timeline_groups.html @@ -58,7 +58,7 @@ var now = moment().minutes(0).seconds(0).milliseconds(0); var groupCount = 3; - var itemCount = 7; + var itemCount = 20; // create a data set with groups var names = ['John (0)', 'Alston (1)', 'Lee (2)', 'Grant (3)']; From 4514e8f2640623d0a41a68bf4f702c7753b7d12e Mon Sep 17 00:00:00 2001 From: jos Date: Tue, 7 Apr 2015 10:41:49 +0200 Subject: [PATCH 38/43] Released version 3.12.0 --- HISTORY.md | 2 +- bower.json | 2 +- dist/vis.js | 4658 ++++++++++++++++++++++++----------------------- dist/vis.map | 2 +- dist/vis.min.js | 35 +- package.json | 2 +- 6 files changed, 2372 insertions(+), 2329 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index e2e8bfdd..28e073e2 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -2,7 +2,7 @@ http://visjs.org -## not yet released, version 3.11.1-SNAPSHOT +## 2015-04-07, version 3.12.0 ### Network diff --git a/bower.json b/bower.json index 785c3f9b..caa448e0 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "vis", - "version": "3.11.1-SNAPSHOT", + "version": "3.12.0", "main": ["dist/vis.min.js", "dist/vis.min.css"], "description": "A dynamic, browser-based visualization library.", "homepage": "http://visjs.org/", diff --git a/dist/vis.js b/dist/vis.js index e3193f71..95c66084 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -4,7 +4,7 @@ * * A dynamic, browser-based visualization library. * - * @version 3.11.1-SNAPSHOT + * @version 3.12.0 * @date 2015-04-07 * * @license @@ -25300,484 +25300,66 @@ return /******/ (function(modules) { // webpackBootstrap /* 58 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.9.0 + /* WEBPACK VAR INJECTION */(function(module) {//! moment.js + //! version : 2.10.0 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com - (function (undefined) { - /************************************ - Constants - ************************************/ - - var moment, - VERSION = '2.9.0', - // the global-scope this is NOT the global object in Node.js - globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, - oldGlobalMoment, - round = Math.round, - hasOwnProperty = Object.prototype.hasOwnProperty, - i, - - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, - - // internal storage for locale config files - locales = {}, - - // extra moment internal properties (plugins register props here) - momentProperties = [], - - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module && module.exports), - - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, - - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, - - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], - - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], - - // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, - - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, - - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, - - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, - - // format function strings - formatFunctions = {}, - - // default relative time thresholds - relativeTimeThresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }, - - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), - - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.localeData().monthsShort(this, format); - }, - MMMM : function (format) { - return this.localeData().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.localeData().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.localeData().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.localeData().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = this.utcOffset(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - x : function () { - return this.valueOf(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); - } - }, - - deprecations = {}, - - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], + (function (global, factory) { + true ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.moment = factory() + }(this, function () { 'use strict'; - updateInProgress = false; + var hookCallback; - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error('Implement me'); - } + function hooks__hooks () { + return hookCallback.apply(null, arguments); } - function hasOwnProp(a, b) { - return hasOwnProperty.call(a, b); + // This is done to register the method called with moment() + // without creating circular dependencies. + function setHookCallback (callback) { + hookCallback = callback; } function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. + // We need to deep clone this object. return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, userInvalidated : false, - iso: false + iso : false }; } - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } - - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } - - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; - } - } - - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.localeData().ordinal(func.call(this, a), period); - }; - } - - function monthDiff(a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; - - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } - - return -(wholeMonthDiff + adjust); - } - - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); - } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); - } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - - - function meridiemFixWrap(locale, hour, meridiem) { - var isPm; - - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // thie is not supposed to happen - return hour; - } + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; } - /************************************ - Constructors - ************************************/ - - function Locale() { + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || input instanceof Date; } - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - moment.updateOffset(this); - updateInProgress = false; + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); } + return res; } - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = moment.localeData(); - - this._bubble(); + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); } - /************************************ - Helpers - ************************************/ - - function extend(a, b) { for (var i in b) { if (hasOwnProp(b, i)) { @@ -25796,6 +25378,44 @@ return /******/ (function(modules) { // webpackBootstrap return a; } + function utc__createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); + } + + function valid__isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; + + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0 && + m._pf.bigHour === undefined; + } + } + return m._isValid; + } + + function valid__createInvalid (flags) { + var m = utc__createUTC(NaN); + if (flags != null) { + extend(m._pf, flags); + } + else { + m._pf.userInvalidated = true; + } + + return m; + } + + var momentProperties = hooks__hooks.momentProperties = []; + function copyConfig(to, from) { var i, prop, val; @@ -25843,102 +25463,40 @@ return /******/ (function(modules) { // webpackBootstrap return to; } - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } - } - - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; + var updateInProgress = false; - while (output.length < targetLength) { - output = '0' + output; + // Moment prototype object + function Moment(config) { + copyConfig(this, config); + this._d = new Date(+config._d); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + hooks__hooks.updateOffset(this); + updateInProgress = false; } - return (sign ? (forceSign ? '+' : '') : '-') + output; } - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; - - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } - - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - - return res; + function isMoment (obj) { + return obj instanceof Moment || (obj != null && hasOwnProp(obj, '_isAMomentObject')); } - function momentsDifference(base, other) { - var res; - other = makeAs(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } - - return res; - } + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); } - - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; - } - - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - moment.updateOffset(mom, days || months); - } - } - - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; + return value; } - // compare two arrays, return the number of differences function compareArrays(array1, array2, dontConvert) { var len = Math.min(array1.length, array2.length), lengthDiff = Math.abs(array1.length - array2.length), @@ -25953,146 +25511,11 @@ return /******/ (function(modules) { // webpackBootstrap return diffs + lengthDiff; } - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; - } - return units; - } - - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } - - return normalizedInput; - } - - function makeList(field) { - var count, setter; - - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { - return; - } - - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; - - if (typeof format === 'number') { - index = format; - format = undefined; - } - - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; - - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } - }; - } - - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } - } - - return value; - } - - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - } - - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } - - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } - - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + function Locale() { } - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 24 || - (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || - m._a[SECOND] !== 0 || - m._a[MILLISECOND] !== 0)) ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; - - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } - - m._pf.overflow = overflow; - } - } - - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; - - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0 && - m._pf.bigHour === undefined; - } - } - return m._isValid; - } + var locales = {}; + var globalLocale; function normalizeLocale(key) { return key ? key.toLowerCase().replace('_', '-') : key; @@ -26127,250 +25550,193 @@ return /******/ (function(modules) { // webpackBootstrap function loadLocale(name) { var oldLocale = null; - if (!locales[name] && hasModule) { + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && typeof module !== 'undefined' && + module && module.exports) { try { - oldLocale = moment.locale(); + oldLocale = globalLocale._abbr; !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); - // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales - moment.locale(oldLocale); + // because defineLocale currently also sets the global locale, we + // want to undo that for lazy loaded locales + locales__getSetGlobalLocale(oldLocale); } catch (e) { } } return locales[name]; } - // Return a moment from input, that is local/utc/utcOffset equivalent to - // model. - function makeAs(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (moment.isMoment(input) || isDate(input) ? - +input : +moment(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - moment.updateOffset(res, false); - return res; - } else { - return moment(input).local(); - } - } - - /************************************ - Locale - ************************************/ + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + function locales__getSetGlobalLocale (key, values) { + var data; + if (key) { + if (typeof values === 'undefined') { + data = locales__getLocale(key); + } + else { + data = defineLocale(key, values); + } + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + } - extend(Locale.prototype, { + return globalLocale._abbr; + } - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } + function defineLocale (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); - }, + locales[name].set(values); - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, + // backwards compat for now: also set the locale + locales__getSetGlobalLocale(name); - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + } - monthsParse : function (monthName, format, strict) { - var i, mom, regex; + // returns locale data + function locales__getLocale (key) { + var locale; - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = moment.utc([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; } - }, + key = [key]; + } - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, + return chooseLocale(key); + } - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, + var aliases = {}; - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, + function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; + } - weekdaysParse : function (weekdayName) { - var i, mom, regex; + function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; + } - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; } } - }, - - _longDateFormat : { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; - } - return output; - }, + } - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - }, + return normalizedInput; + } - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; + function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + get_set__set(this, unit, value); + hooks__hooks.updateOffset(this, keepTime); + return this; } else { - return isLower ? 'am' : 'AM'; + return get_set__get(this, unit); } - }, - - - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom, [now]) : output; - }, + }; + } - _relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, + function get_set__get (mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, + function get_set__set (mom, unit, value) { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, + // MOMENTS - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', - _ordinalParse : /\d{1,2}/, + function getSet (units, value) { + var unit; + if (typeof units === 'object') { + for (unit in units) { + this.set(unit, units[unit]); + } + } else { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + return this[units](value); + } + } + return this; + } - preparse : function (string) { - return string; - }, + function zeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; - postformat : function (string) { - return string; - }, + while (output.length < targetLength) { + output = '0' + output; + } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, + var formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g; - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }, + var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; - firstDayOfWeek : function () { - return this._week.dow; - }, + var formatFunctions = {}; - firstDayOfYear : function () { - return this._week.doy; - }, + var formatTokenFunctions = {}; - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; + // token: 'M' + // padded: ['MM', 2] + // ordinal: 'Mo' + // callback: function () { this.month() + 1 } + function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; } - }); - - /************************************ - Formatting - ************************************/ - + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } + } function removeFormattingTokens(input) { if (input.match(/\[[\s\S]/)) { @@ -26431,302 +25797,547 @@ return /******/ (function(modules) { // webpackBootstrap return format; } + var match1 = /\d/; // 0 - 9 + var match2 = /\d\d/; // 00 - 99 + var match3 = /\d{3}/; // 000 - 999 + var match4 = /\d{4}/; // 0000 - 9999 + var match6 = /[+-]?\d{6}/; // -999999 - 999999 + var match1to2 = /\d\d?/; // 0 - 99 + var match1to3 = /\d{1,3}/; // 0 - 999 + var match1to4 = /\d{1,4}/; // 0 - 9999 + var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + + var matchUnsigned = /\d+/; // 0 - inf + var matchSigned = /[+-]?\d+/; // -inf - inf + + var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z + + var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + + // any word (or two) characters or numbers including two/three word month in arabic. + var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; + + var regexes = {}; + + function addRegexToken (token, regex, strictRegex) { + regexes[token] = typeof regex === 'function' ? regex : function (isStrict) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; + } + + function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function unescapeFormat(s) { + return s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + var tokens = {}; + + function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (typeof callback === 'number') { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } + } + + function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); + } + + function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } + } + + var YEAR = 0; + var MONTH = 1; + var DATE = 2; + var HOUR = 3; + var MINUTE = 4; + var SECOND = 5; + var MILLISECOND = 6; + + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } + + // FORMATTING - /************************************ - Parsing - ************************************/ - - - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { - return parseTokenOneDigit; + addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; + }); + + addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); + }); + + addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); + }); + + // ALIASES + + addUnitAlias('month', 'M'); + + // PARSING + + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', matchWord); + addRegexToken('MMMM', matchWord); + + addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; + }); + + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + config._pf.invalidMonth = input; + } + }); + + // LOCALES + + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); + function localeMonths (m) { + return this._months[m.month()]; + } + + var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); + function localeMonthsShort (m) { + return this._monthsShort[m.month()]; + } + + function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = utc__createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); } - /* falls through */ - case 'SS': - if (strict) { - return parseTokenTwoDigits; + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); } - /* falls through */ - case 'SSS': - if (strict) { - return parseTokenThreeDigits; + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return config._locale._meridiemParse; - case 'x': - return parseTokenOffsetMs; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); - return a; } } - function utcOffsetFromString(string) { - string = string || ''; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); + // MOMENTS + + function setMonth (mom, value) { + var dayOfMonth; + + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } + + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } + + function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + hooks__hooks.updateOffset(this, true); + return this; + } else { + return get_set__get(this, 'Month'); + } + } + + function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); + } + + function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && m._pf.overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + + m._pf.overflow = overflow; + } + + return m; + } + + function warn(msg) { + if (hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + warn(msg); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + + var deprecations = {}; + + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } + } + + hooks__hooks.suppressDeprecationWarnings = false; + + var from_string__isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; + + var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ]; + + // iso time formats and regexes + var isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ]; + + var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + + // date from iso format + function configFromISO(config) { + var i, l, + string = config._i, + match = from_string__isoRegex.exec(string); + + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(matchOffset)) { + config._f += 'Z'; + } + configFromStringAndFormat(config); + } else { + config._isValid = false; + } + } + + // date from iso format or fallback + function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } + + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + hooks__hooks.createFromInputFallback(config); + } + } + + hooks__hooks.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); + + function createDate (y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); + + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } + + function createUTCDate (y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } + + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; + }); + + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + + // ALIASES + + addUnitAlias('year', 'y'); + + // PARSING + + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); + + addParseToken(['YYYY', 'YYYYY', 'YYYYYY'], YEAR); + addParseToken('YY', function (input, array) { + array[YEAR] = hooks__hooks.parseTwoDigitYear(input); + }); + + // HELPERS + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + + // HOOKS + + hooks__hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + // MOMENTS + + var getSetYear = makeGetSet('FullYear', false); + + function getIsLeapYear () { + return isLeapYear(this.year()); + } + + addFormatToken('w', ['ww', 2], 'wo', 'week'); + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + + // ALIASES + + addUnitAlias('week', 'w'); + addUnitAlias('isoWeek', 'W'); + + // PARSING + + addRegexToken('w', match1to2); + addRegexToken('ww', match1to2, match2); + addRegexToken('W', match1to2); + addRegexToken('WW', match1to2, match2); + + addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); + }); + + // HELPERS + + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; + + + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; + } + + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } + + adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } + + // LOCALES + + function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + } + + var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }; + + function localeFirstDayOfWeek () { + return this._week.dow; + } + + function localeFirstDayOfYear () { + return this._week.doy; + } + + // MOMENTS + + function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + + // ALIASES + + addUnitAlias('dayOfYear', 'DDD'); + + // PARSING + + addRegexToken('DDD', match1to3); + addRegexToken('DDDD', match3); + addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); + }); + + // HELPERS + + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = createUTCDate(year, 0, 1).getUTCDay(); + var daysToAdd; + var dayOfYear; + + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; - return parts[0] === '+' ? minutes : -minutes; + return { + year : dayOfYear > 0 ? year : year - 1, + dayOfYear : dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; } - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + // MOMENTS - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; - } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt( - input.match(/\d{1,2}/)[0], 10)); - } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); - } + function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + } - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._meridiem = input; - // config._isPm = config._locale.isPM(input); - break; - // HOUR - case 'h' : // fall through to hh - case 'hh' : - config._pf.bigHour = true; - /* falls through */ - case 'H' : // fall through to HH - case 'HH' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX OFFSET (MILLISECONDS) - case 'x': - config._d = new Date(toInt(input)); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = utcOffsetFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; - } else { - config._pf.invalidWeekday = input; - } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); - } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); + // Pick the first defined of two or three arguments. + function defaults(a, b, c) { + if (a != null) { + return a; } + if (b != null) { + return b; + } + return c; } - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; - - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); - - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; - } + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()]; } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; + return [now.getFullYear(), now.getMonth(), now.getDate()]; } // convert an array to a date. // the array should mirror the parameters below // note: all values past the year are optional and will default to the lowest possible value. // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { + function configFromArray (config) { var i, date, input = [], currentDate, yearToUse; if (config._d) { @@ -26742,13 +26353,13 @@ return /******/ (function(modules) { // webpackBootstrap //if the day of the year is set, figure out what it is if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); if (config._dayOfYear > daysInYear(yearToUse)) { config._pf._overflowDayOfYear = true; } - date = makeUTCDate(yearToUse, 0, config._dayOfYear); + date = createUTCDate(yearToUse, 0, config._dayOfYear); config._a[MONTH] = date.getUTCMonth(); config._a[DATE] = date.getUTCDate(); } @@ -26776,7 +26387,7 @@ return /******/ (function(modules) { // webpackBootstrap config._a[HOUR] = 0; } - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); // Apply timezone offset from input. The actual utcOffset can be changed // with parseZone. if (config._tzm != null) { @@ -26788,44 +26399,55 @@ return /******/ (function(modules) { // webpackBootstrap } } - function dateFromObject(config) { - var normalizedInput; + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; - if (config._d) { - return; - } + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day || normalizedInput.date, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; - dateFromConfig(config); - } + weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year); + week = defaults(w.w, 1); - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; + } } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; } + hooks__hooks.ISO_8601 = function () {}; + // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); + function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === hooks__hooks.ISO_8601) { + configFromISO(config); return; } @@ -26877,25 +26499,39 @@ return /******/ (function(modules) { // webpackBootstrap config._pf.bigHour = undefined; } // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], - config._meridiem); - dateFromConfig(config); + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); checkOverflow(config); } - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); - } - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } } - // date from string and array of format strings - function makeDateFromStringAndArray(config) { + function configFromStringAndArray(config) { var tempConfig, bestMoment, @@ -26917,9 +26553,9 @@ return /******/ (function(modules) { // webpackBootstrap } tempConfig._pf = defaultParsingFlags(); tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); + configFromStringAndFormat(tempConfig); - if (!isValid(tempConfig)) { + if (!valid__isValid(tempConfig)) { continue; } @@ -26940,349 +26576,399 @@ return /******/ (function(modules) { // webpackBootstrap extend(config, bestMoment || tempConfig); } - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); - - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be 'T' or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; - } - } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; + function configFromObject(config) { + if (config._d) { + return; } + + var i = normalizeObjectUnits(config._i); + config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond]; + + configFromArray(config); } - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); + function createFromConfig (config) { + var input = config._i, + format = config._f, + res; + + config._locale = config._locale || locales__getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return valid__createInvalid({nullInput: true}); } - } - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (format) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } + + res = new Moment(checkOverflow(config)); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; } + return res; } - function makeDateFromInput(config) { - var input = config._i, matched; + function configFromInput(config) { + var input = config._i; if (input === undefined) { config._d = new Date(); } else if (isDate(input)) { config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); } else if (typeof input === 'string') { - makeDateFromString(config); + configFromString(config); } else if (isArray(input)) { config._a = map(input.slice(0), function (obj) { return parseInt(obj, 10); }); - dateFromConfig(config); + configFromArray(config); } else if (typeof(input) === 'object') { - dateFromObject(config); + configFromObject(config); } else if (typeof(input) === 'number') { // from milliseconds config._d = new Date(input); } else { - moment.createFromInputFallback(config); + hooks__hooks.createFromInputFallback(config); } } - function makeDate(y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); + function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; } - return date; + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); + + return createFromConfig(c); } - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; + function local__createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); } - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } + var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function () { + var other = local__createLocal.apply(null, arguments); + return other < this ? this : other; + } + ); + + var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function () { + var other = local__createLocal.apply(null, arguments); + return other > this ? this : other; + } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return local__createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; } } - return input; + return res; } - /************************************ - Relative Time - ************************************/ + // TODO: Use [].sort instead? + function min () { + var args = [].slice.call(arguments, 0); + return pickBy('isBefore', args); + } - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); } - function relativeTime(posNegDuration, withoutSuffix, locale) { - var duration = moment.duration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - years = round(duration.as('y')), + function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < relativeTimeThresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < relativeTimeThresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); - } + this._data = {}; + this._locale = locales__getLocale(); - /************************************ - Week of Year - ************************************/ + this._bubble(); + } + function isDuration (obj) { + return obj instanceof Duration; + } - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; + function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); + } + offset('Z', ':'); + offset('ZZ', ''); - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } + // PARSING - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } + addRegexToken('Z', matchOffset); + addRegexToken('ZZ', matchOffset); + addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(input); + }); - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; - } + // HELPERS - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; + // timezone chunker + // '+10:00' > ['10', '00'] + // '-1530' > ['-15', '30'] + var chunkOffset = /([\+\-]|\d\d)/gi; - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + function offsetFromString(string) { + var matches = ((string || '').match(matchOffset) || []); + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; + return parts[0] === '+' ? minutes : -minutes; } - /************************************ - Top Level Functions - ************************************/ + // Return a moment from input, that is local/utc/zone equivalent to model. + function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res); + // Use low-level api, because this fn is low-level api. + res._d.setTime(+res._d + diff); + hooks__hooks.updateOffset(res, false); + return res; + } else { + return local__createLocal(input).local(); + } + return model._isUTC ? local__createLocal(input).zone(model._offset || 0) : local__createLocal(input).local(); + } - function makeMoment(config) { - var input = config._i, - format = config._f, - res; + function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; + } - config._locale = config._locale || moment.localeData(config._l); + // HOOKS - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + hooks__hooks.updateOffset = function () {}; - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } + // MOMENTS - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + function getSetOffset (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + hooks__hooks.updateOffset(this, true); + this._changeInProgress = null; + } } + return this; } else { - makeDateFromInput(config); - } - - res = new Moment(config); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; + return this._isUTC ? offset : getDateOffset(this); } - - return res; } - moment = function (input, format, locale, strict) { - var c; + function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = locale; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); + } - return makeMoment(c); - }; + function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + } - moment.suppressDeprecationWarnings = false; + function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; - moment.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } } - ); + return this; + } - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; + function setOffsetToParsedOffset () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(offsetFromString(this._i)); } - if (!moments.length) { - return moment(); + return this; + } + + function hasAlignedHourOffset (input) { + if (!input) { + input = 0; } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; - } + else { + input = local__createLocal(input).utcOffset(); } - return res; + + return (this.utcOffset() - input) % 60 === 0; } - moment.min = function () { - var args = [].slice.call(arguments, 0); + function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); + } - return pickBy('isBefore', args); - }; + function isDaylightSavingTimeShifted () { + if (this._a) { + var other = this._isUTC ? utc__createUTC(this._a) : local__createLocal(this._a); + return this.isValid() && compareArrays(this._a, other.toArray()) > 0; + } - moment.max = function () { - var args = [].slice.call(arguments, 0); + return false; + } - return pickBy('isAfter', args); - }; + function isLocal () { + return !this._isUTC; + } - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; + function isUtcOffset () { + return this._isUTC; + } - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); + function isUtc () { + return this._isUTC && this._offset === 0; + } - return makeMoment(c).utc(); - }; + var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/; - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/; - // duration - moment.duration = function (input, key) { + function create__createDuration (input, key) { var duration = input, // matching against regexp is expensive, do it on demand match = null, sign, ret, - parseIso, diffRes; - if (moment.isDuration(input)) { + if (isDuration(input)) { duration = { - ms: input._milliseconds, - d: input._days, - M: input._months + ms : input._milliseconds, + d : input._days, + M : input._months }; } else if (typeof input === 'number') { duration = {}; @@ -27291,1060 +26977,1412 @@ return /******/ (function(modules) { // webpackBootstrap } else { duration.milliseconds = input; } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + } else if (!!(match = aspNetRegex.exec(input))) { sign = (match[1] === '-') ? -1 : 1; duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(match[MILLISECOND]) * sign }; - } else if (!!(match = isoDurationRegex.exec(input))) { + } else if (!!(match = create__isoRegex.exec(input))) { sign = (match[1] === '-') ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + d : parseIso(match[4], sign), + h : parseIso(match[5], sign), + m : parseIso(match[6], sign), + s : parseIso(match[7], sign), + w : parseIso(match[8], sign) }; } else if (duration == null) {// checks for null or undefined duration = {}; - } else if (typeof duration === 'object' && - ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to)); duration = {}; duration.ms = diffRes.milliseconds; duration.M = diffRes.months; } - ret = new Duration(duration); + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; + } + + function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + } + + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; + } + + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = create__createDuration(val, period); + add_subtract__addSubtract(this, dur, direction); + return this; + }; + } + + function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding); + } + if (months) { + setMonth(mom, get_set__get(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + hooks__hooks.updateOffset(mom, days || months); + } + } + + var add_subtract__add = createAdder(1, 'add'); + var add_subtract__subtract = createAdder(-1, 'subtract'); - if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; + function calendar__calendar (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || local__createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this, local__createLocal(now))); + } + + function clone () { + return new Moment(this); + } + + function isAfter (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = isMoment(input) ? input : local__createLocal(input); + return +this > +input; + } else { + inputMs = isMoment(input) ? +input : +local__createLocal(input); + return inputMs < +this.clone().startOf(units); } + } - return ret; - }; + function isBefore (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = isMoment(input) ? input : local__createLocal(input); + return +this < +input; + } else { + inputMs = isMoment(input) ? +input : +local__createLocal(input); + return +this.clone().endOf(units) < inputMs; + } + } - // version number - moment.version = VERSION; + function isBetween (from, to, units) { + return this.isAfter(from, units) && this.isBefore(to, units); + } - // default format - moment.defaultFormat = isoFormat; + function isSame (input, units) { + var inputMs; + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = isMoment(input) ? input : local__createLocal(input); + return +this === +input; + } else { + inputMs = +local__createLocal(input); + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + } + } - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + function absFloor (number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + function diff (input, units, asFloat) { + var that = cloneWithOffset(input, this), + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4, + delta, output; - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; + units = normalizeUnits(units); - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function (threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return relativeTimeThresholds[threshold]; + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + delta = this - that; + output = units === 'second' ? delta / 1e3 : // 1000 + units === 'minute' ? delta / 6e4 : // 1000 * 60 + units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + delta; } - relativeTimeThresholds[threshold] = limit; - return true; - }; + return asFloat ? output : absFloor(output); + } + + function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; - moment.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - function (key, value) { - return moment.locale(key, value); + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); } - ); - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - moment.locale = function (key, values) { - var data; - if (key) { - if (typeof(values) !== 'undefined') { - data = moment.defineLocale(key, values); - } - else { - data = moment.localeData(key); - } + return -(wholeMonthDiff + adjust); + } - if (data) { - moment.duration._locale = moment._locale = data; + hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; + + function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + } + + function moment_format__toISOString () { + var m = this.clone().utc(); + if (0 < m.year() && m.year() <= 9999) { + if ('function' === typeof Date.prototype.toISOString) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); } + } - return moment._locale._abbr; - }; + function format (inputString) { + var output = formatMoment(this, inputString || hooks__hooks.defaultFormat); + return this.localeData().postformat(output); + } - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); - } - locales[name].set(values); + function from (time, withoutSuffix) { + return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } - // backwards compat for now: also set the locale - moment.locale(name); + function fromNow (withoutSuffix) { + return this.from(local__createLocal(), withoutSuffix); + } - return locales[name]; + function locale (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; } else { - // useful for testing - delete locales[name]; - return null; + newLocaleData = locales__getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; } - }; + } - moment.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', + var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) { - return moment.localeData(key); + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } } ); - // returns locale data - moment.localeData = function (key) { - var locale; + function localeData () { + return this._locale; + } - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; + function startOf (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ } - if (!key) { - return moment._locale; + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } + if (units === 'isoWeek') { + this.isoWeekday(1); } - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); } - return chooseLocale(key); - }; + return this; + } - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && hasOwnProp(obj, '_isAMomentObject')); - }; + function endOf (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + } - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; + function to_type__valueOf () { + return +this._d - ((this._offset || 0) * 60000); + } - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); + function unix () { + return Math.floor(+this / 1000); } - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; + function toDate () { + return this._offset ? new Date(+this) : this._d; + } - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; - } + function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; + } - return m; - }; + function moment_valid__isValid () { + return valid__isValid(this); + } - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + function parsingFlags () { + return extend({}, this._pf); + } - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; + function invalidAt () { + return this._pf.overflow; + } - moment.isDate = isDate; + addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; + }); - /************************************ - Moment Prototype - ************************************/ + addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; + }); + function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); + } - extend(moment.fn = Moment.prototype, { + addWeekYearFormatToken('gggg', 'weekYear'); + addWeekYearFormatToken('ggggg', 'weekYear'); + addWeekYearFormatToken('GGGG', 'isoWeekYear'); + addWeekYearFormatToken('GGGGG', 'isoWeekYear'); - clone : function () { - return moment(this); - }, + // ALIASES - valueOf : function () { - return +this._d - ((this._offset || 0) * 60000); - }, + addUnitAlias('weekYear', 'gg'); + addUnitAlias('isoWeekYear', 'GG'); - unix : function () { - return Math.floor(+this / 1000); - }, + // PARSING - toString : function () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - }, + addRegexToken('G', matchSigned); + addRegexToken('g', matchSigned); + addRegexToken('GG', match1to2, match2); + addRegexToken('gg', match1to2, match2); + addRegexToken('GGGG', match1to4, match4); + addRegexToken('gggg', match1to4, match4); + addRegexToken('GGGGG', match1to6, match6); + addRegexToken('ggggg', match1to6, match6); - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); + }); - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - }, + addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = hooks__hooks.parseTwoDigitYear(input); + }); - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, + // HELPERS - isValid : function () { - return isValid(this); - }, + function weeksInYear(year, dow, doy) { + return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week; + } - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } + // MOMENTS - return false; - }, + function getSetWeekYear (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + } - parsingFlags : function () { - return extend({}, this._pf); - }, + function getSetISOWeekYear (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + } - invalidAt: function () { - return this._pf.overflow; - }, + function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); + } - utc : function (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - }, + function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + } - local : function (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; + addFormatToken('Q', 0, 0, 'quarter'); - if (keepLocalTime) { - this.subtract(this._dateUtcOffset(), 'm'); - } - } - return this; - }, + // ALIASES - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, + addUnitAlias('quarter', 'Q'); - add : createAdder(1, 'add'), + // PARSING - subtract : createAdder(-1, 'subtract'), + addRegexToken('Q', match1); + addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; + }); - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, - anchor, diff, output, daysAdjust; + // MOMENTS - units = normalizeUnits(units); + function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + } - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - diff = this - that; - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, + addFormatToken('D', ['DD', 2], 'Do', 'date'); - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, + // ALIASES - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, + addUnitAlias('date', 'D'); - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're locat/utc/offset - // or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this, moment(now))); - }, + // PARSING - isLeapYear : function () { - return isLeapYear(this.year()); - }, + addRegexToken('D', match1to2); + addRegexToken('DD', match1to2, match2); + addRegexToken('Do', function (isStrict, locale) { + return isStrict ? locale._ordinalParse : locale._ordinalParseLenient; + }); - isDST : function () { - return (this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset()); - }, + addParseToken(['D', 'DD'], DATE); + addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0], 10); + }); - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - }, + // MOMENTS - month : makeAccessor('Month', true), + var getSetDayOfMonth = makeGetSet('Date', true); - startOf : function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ - } + addFormatToken('d', 0, 'do', 'day'); - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } + addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); + }); - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } + addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); + }); - return this; - }, + addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); + }); - endOf: function (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, + addFormatToken('e', 0, 0, 'weekday'); + addFormatToken('E', 0, 0, 'isoWeekday'); - isAfter: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this > +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return inputMs < +this.clone().startOf(units); - } - }, + // ALIASES - isBefore: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this < +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return +this.clone().endOf(units) < inputMs; - } - }, + addUnitAlias('day', 'd'); + addUnitAlias('weekday', 'e'); + addUnitAlias('isoWeekday', 'E'); - isBetween: function (from, to, units) { - return this.isAfter(from, units) && this.isBefore(to, units); - }, + // PARSING - isSame: function (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this === +input; - } else { - inputMs = +moment(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); - } - }, + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', matchWord); + addRegexToken('ddd', matchWord); + addRegexToken('dddd', matchWord); - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), - - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) { + var weekday = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + config._pf.invalidWeekday = input; + } + }); - zone : deprecate( - 'moment().zone is deprecated, use moment().utcOffset instead. ' + - 'https://github.com/moment/moment/issues/1779', - function (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); + }); - this.utcOffset(input, keepLocalTime); + // HELPERS - return this; - } else { - return -this.utcOffset(); - } - } - ), - - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - utcOffset : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = utcOffsetFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._dateUtcOffset(); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; } - - return this; - } else { - return this._isUTC ? offset : this._dateUtcOffset(); } - }, + } + return input; + } - isLocal : function () { - return !this._isUTC; - }, + // LOCALES - isUtcOffset : function () { - return this._isUTC; - }, + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); + function localeWeekdays (m) { + return this._weekdays[m.day()]; + } - isUtc : function () { - return this._isUTC && this._offset === 0; - }, + var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); + function localeWeekdaysShort (m) { + return this._weekdaysShort[m.day()]; + } - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, + var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); + function localeWeekdaysMin (m) { + return this._weekdaysMin[m.day()]; + } - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, + function localeWeekdaysParse (weekdayName) { + var i, mom, regex; - parseZone : function () { - if (this._tzm) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - this.utcOffset(utcOffsetFromString(this._i)); - } - return this; - }, + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = local__createLocal([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); } - else { - input = moment(input).utcOffset(); + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; } + } + } - return (this.utcOffset() - input) % 60 === 0; - }, + // MOMENTS - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + function getSetDayOfWeek (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + } - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - }, + function getSetLocaleDayOfWeek (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + } - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + function getSetISODayOfWeek (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + } - weekYear : function (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - }, + addFormatToken('H', ['HH', 2], 0, 'hour'); + addFormatToken('h', ['hh', 2], 0, function () { + return this.hours() % 12 || 12; + }); - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, + function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); + } - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + meridiem('a', true); + meridiem('A', false); - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, + // ALIASES - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, + addUnitAlias('hour', 'h'); - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, + // PARSING - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, + function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; + } - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('HH', match1to2, match2); + addRegexToken('hh', match1to2, match2); - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, + addParseToken(['H', 'HH'], HOUR); + addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; + }); + addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + config._pf.bigHour = true; + }); - set : function (units, value) { - var unit; - if (typeof units === 'object') { - for (unit in units) { - this.set(unit, units[unit]); - } - } - else { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); - } - } - return this; - }, + // LOCALES - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - var newLocaleData; + function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + } - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = moment.localeData(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - }, + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; + function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + } - lang : deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ), - localeData : function () { - return this._locale; - }, + // MOMENTS - _dateUtcOffset : function () { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(this._d.getTimezoneOffset() / 15) * 15; - } + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + var getSetHour = makeGetSet('Hours', true); + + addFormatToken('m', ['mm', 2], 0, 'minute'); + + // ALIASES + + addUnitAlias('minute', 'm'); + + // PARSING + + addRegexToken('m', match1to2); + addRegexToken('mm', match1to2, match2); + addParseToken(['m', 'mm'], MINUTE); + + // MOMENTS + + var getSetMinute = makeGetSet('Minutes', false); + + addFormatToken('s', ['ss', 2], 0, 'second'); + + // ALIASES + + addUnitAlias('second', 's'); + // PARSING + + addRegexToken('s', match1to2); + addRegexToken('ss', match1to2, match2); + addParseToken(['s', 'ss'], SECOND); + + // MOMENTS + + var getSetSecond = makeGetSet('Seconds', false); + + addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); }); - function rawMonthSetter(mom, value) { - var dayOfMonth; + addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); + }); - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } + function millisecond__milliseconds (token) { + addFormatToken(0, [token, 3], 0, 'millisecond'); + } + + millisecond__milliseconds('SSS'); + millisecond__milliseconds('SSSS'); + + // ALIASES + + addUnitAlias('millisecond', 'ms'); + + // PARSING + + addRegexToken('S', match1to3, match1); + addRegexToken('SS', match1to3, match2); + addRegexToken('SSS', match1to3, match3); + addRegexToken('SSSS', matchUnsigned); + addParseToken(['S', 'SS', 'SSS', 'SSSS'], function (input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); + }); + + // MOMENTS + + var getSetMillisecond = makeGetSet('Milliseconds', false); + + addFormatToken('z', 0, 0, 'zoneAbbr'); + addFormatToken('zz', 0, 0, 'zoneName'); + + // MOMENTS + + function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; + } + + function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + } + + var momentPrototype__proto = Moment.prototype; + + momentPrototype__proto.add = add_subtract__add; + momentPrototype__proto.calendar = calendar__calendar; + momentPrototype__proto.clone = clone; + momentPrototype__proto.diff = diff; + momentPrototype__proto.endOf = endOf; + momentPrototype__proto.format = format; + momentPrototype__proto.from = from; + momentPrototype__proto.fromNow = fromNow; + momentPrototype__proto.get = getSet; + momentPrototype__proto.invalidAt = invalidAt; + momentPrototype__proto.isAfter = isAfter; + momentPrototype__proto.isBefore = isBefore; + momentPrototype__proto.isBetween = isBetween; + momentPrototype__proto.isSame = isSame; + momentPrototype__proto.isValid = moment_valid__isValid; + momentPrototype__proto.lang = lang; + momentPrototype__proto.locale = locale; + momentPrototype__proto.localeData = localeData; + momentPrototype__proto.max = prototypeMax; + momentPrototype__proto.min = prototypeMin; + momentPrototype__proto.parsingFlags = parsingFlags; + momentPrototype__proto.set = getSet; + momentPrototype__proto.startOf = startOf; + momentPrototype__proto.subtract = add_subtract__subtract; + momentPrototype__proto.toArray = toArray; + momentPrototype__proto.toDate = toDate; + momentPrototype__proto.toISOString = moment_format__toISOString; + momentPrototype__proto.toJSON = moment_format__toISOString; + momentPrototype__proto.toString = toString; + momentPrototype__proto.unix = unix; + momentPrototype__proto.valueOf = to_type__valueOf; + + // Year + momentPrototype__proto.year = getSetYear; + momentPrototype__proto.isLeapYear = getIsLeapYear; + + // Week Year + momentPrototype__proto.weekYear = getSetWeekYear; + momentPrototype__proto.isoWeekYear = getSetISOWeekYear; + + // Quarter + momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter; + + // Month + momentPrototype__proto.month = getSetMonth; + momentPrototype__proto.daysInMonth = getDaysInMonth; + + // Week + momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek; + momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek; + momentPrototype__proto.weeksInYear = getWeeksInYear; + momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear; + + // Day + momentPrototype__proto.date = getSetDayOfMonth; + momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek; + momentPrototype__proto.weekday = getSetLocaleDayOfWeek; + momentPrototype__proto.isoWeekday = getSetISODayOfWeek; + momentPrototype__proto.dayOfYear = getSetDayOfYear; + + // Hour + momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour; + + // Minute + momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute; + + // Second + momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond; + + // Millisecond + momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond; + + // Offset + momentPrototype__proto.utcOffset = getSetOffset; + momentPrototype__proto.utc = setOffsetToUTC; + momentPrototype__proto.local = setOffsetToLocal; + momentPrototype__proto.parseZone = setOffsetToParsedOffset; + momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset; + momentPrototype__proto.isDST = isDaylightSavingTime; + momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted; + momentPrototype__proto.isLocal = isLocal; + momentPrototype__proto.isUtcOffset = isUtcOffset; + momentPrototype__proto.isUtc = isUtc; + momentPrototype__proto.isUTC = isUtc; + + // Timezone + momentPrototype__proto.zoneAbbr = getZoneAbbr; + momentPrototype__proto.zoneName = getZoneName; + + // Deprecations + momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); + momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); + momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); + momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone); + + var momentPrototype = momentPrototype__proto; + + function moment__createUnix (input) { + return local__createLocal(input * 1000); + } + + function moment__createInZone () { + return local__createLocal.apply(null, arguments).parseZone(); + } + + var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }; + + function locale_calendar__calendar (key, mom, now) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.call(mom, now) : output; + } + + var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }; + + function longDateFormat (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; } + return output; + } - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; + var defaultInvalidDate = 'Invalid date'; + + function invalidDate () { + return this._invalidDate; } - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + var defaultOrdinal = '%d'; + var defaultOrdinalParse = /\d{1,2}/; + + function ordinal (number) { + return this._ordinal.replace('%d', number); } - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } + function preParsePostFormat (string) { + return string; } - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; + var defaultRelativeTime = { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }; + + function relative__relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + } + + function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + } + + function set__set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; } else { - return rawGetter(this, unit); + this['_' + i] = prop; } - }; + } + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); } - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + var prototype__proto = Locale.prototype; - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; + prototype__proto._calendar = defaultCalendar; + prototype__proto.calendar = locale_calendar__calendar; + prototype__proto._longDateFormat = defaultLongDateFormat; + prototype__proto.longDateFormat = longDateFormat; + prototype__proto._invalidDate = defaultInvalidDate; + prototype__proto.invalidDate = invalidDate; + prototype__proto._ordinal = defaultOrdinal; + prototype__proto.ordinal = ordinal; + prototype__proto._ordinalParse = defaultOrdinalParse; + prototype__proto.preparse = preParsePostFormat; + prototype__proto.postformat = preParsePostFormat; + prototype__proto._relativeTime = defaultRelativeTime; + prototype__proto.relativeTime = relative__relativeTime; + prototype__proto.pastFuture = pastFuture; + prototype__proto.set = set__set; - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; + // Month + prototype__proto.months = localeMonths; + prototype__proto._months = defaultLocaleMonths; + prototype__proto.monthsShort = localeMonthsShort; + prototype__proto._monthsShort = defaultLocaleMonthsShort; + prototype__proto.monthsParse = localeMonthsParse; - // alias isUtc for dev-friendliness - moment.fn.isUTC = moment.fn.isUtc; + // Week + prototype__proto.week = localeWeek; + prototype__proto._week = defaultLocaleWeek; + prototype__proto.firstDayOfYear = localeFirstDayOfYear; + prototype__proto.firstDayOfWeek = localeFirstDayOfWeek; - /************************************ - Duration Prototype - ************************************/ + // Day of Week + prototype__proto.weekdays = localeWeekdays; + prototype__proto._weekdays = defaultLocaleWeekdays; + prototype__proto.weekdaysMin = localeWeekdaysMin; + prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin; + prototype__proto.weekdaysShort = localeWeekdaysShort; + prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort; + prototype__proto.weekdaysParse = localeWeekdaysParse; + // Hours + prototype__proto.isPM = localeIsPM; + prototype__proto._meridiemParse = defaultLocaleMeridiemParse; + prototype__proto.meridiem = localeMeridiem; - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; + function lists__get (format, index, field, setter) { + var locale = locales__getLocale(); + var utc = utc__createUTC().set(setter, index); + return locale[field](utc, format); } - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; + function list (format, index, field, count, setter) { + if (typeof format === 'number') { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return lists__get(format, index, field, setter); + } + + var i; + var out = []; + for (i = 0; i < count; i++) { + out[i] = lists__get(format, i, field, setter); + } + return out; + } + + function lists__listMonths (format, index) { + return list(format, index, 'months', 12, 'month'); } - extend(moment.duration.fn = Duration.prototype, { + function lists__listMonthsShort (format, index) { + return list(format, index, 'monthsShort', 12, 'month'); + } - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; + function lists__listWeekdays (format, index) { + return list(format, index, 'weekdays', 7, 'day'); + } - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + function lists__listWeekdaysShort (format, index) { + return list(format, index, 'weekdaysShort', 7, 'day'); + } - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + function lists__listWeekdaysMin (format, index) { + return list(format, index, 'weekdaysMin', 7, 'day'); + } - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + locales__getSetGlobalLocale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); - hours = absRound(minutes / 60); - data.hours = hours % 24; + // Side effect imports + hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locales__getSetGlobalLocale); + hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locales__getLocale); - days += absRound(hours / 24); + var mathAbs = Math.abs; - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); + function abs__abs () { + var data = this._data; - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); - data.days = days; - data.months = months; - data.years = years; - }, + return this; + } - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); + function duration_add_subtract__addSubtract (duration, input, value, direction) { + var other = create__createDuration(input, value); - this._data.milliseconds = Math.abs(this._data.milliseconds); - this._data.seconds = Math.abs(this._data.seconds); - this._data.minutes = Math.abs(this._data.minutes); - this._data.hours = Math.abs(this._data.hours); - this._data.months = Math.abs(this._data.months); - this._data.years = Math.abs(this._data.years); + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; - return this; - }, + return duration._bubble(); + } - weeks : function () { - return absRound(this.days() / 7); - }, + // supports only 2.0-style add(1, 's') or add(duration) + function duration_add_subtract__add (input, value) { + return duration_add_subtract__addSubtract(this, input, value, 1); + } - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + // supports only 2.0-style subtract(1, 's') or subtract(duration) + function duration_add_subtract__subtract (input, value) { + return duration_add_subtract__addSubtract(this, input, value, -1); + } - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); + function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years = 0; - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); - } + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - return this.localeData().postformat(output); - }, + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; + hours = absFloor(minutes / 60); + data.hours = hours % 24; - this._bubble(); + days += absFloor(hours / 24); - return this; - }, + // Accurately convert days to years, assume start from year 0. + years = absFloor(daysToYears(days)); + days -= absFloor(yearsToDays(years)); - subtract : function (input, val) { - var dur = moment.duration(input, val); + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absFloor(days / 30); + days %= 30; - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + // 12 months -> 1 year + years += absFloor(months / 12); + months %= 12; - this._bubble(); + data.days = days; + data.months = months; + data.years = years; - return this; - }, + return this; + } - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; + } - as : function (units) { - var days, months; - units = normalizeUnits(units); + function yearsToDays (years) { + // years * 365 + absFloor(years / 4) - + // absFloor(years / 100) + absFloor(years / 400); + return years * 146097 / 400; + } - if (units === 'month' || units === 'year') { - days = this._days + this._milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(yearsToDays(this._months / 12)); - switch (units) { - case 'week': return days / 7 + this._milliseconds / 6048e5; - case 'day': return days + this._milliseconds / 864e5; - case 'hour': return days * 24 + this._milliseconds / 36e5; - case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; - case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } - }, + function as (units) { + var days; + var months; + var milliseconds = this._milliseconds; - lang : moment.fn.lang, - locale : moment.fn.locale, + units = normalizeUnits(units); - toIsoString : deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead ' + - '(notice the capitals)', - function () { - return this.toISOString(); - } - ), - - toISOString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); - - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; + if (units === 'month' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(yearsToDays(this._months / 12)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 24 * 60 + milliseconds / 6e4; + case 'second' : return days * 24 * 60 * 60 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + milliseconds; + default: throw new Error('Unknown unit ' + units); } + } + } - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); - }, + // TODO: Use this.as('ms')? + function as__valueOf () { + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); + } - localeData : function () { - return this._locale; - }, + function makeAs (alias) { + return function () { + return this.as(alias); + }; + } - toJSON : function () { - return this.toISOString(); - } - }); + var asMilliseconds = makeAs('ms'); + var asSeconds = makeAs('s'); + var asMinutes = makeAs('m'); + var asHours = makeAs('h'); + var asDays = makeAs('d'); + var asWeeks = makeAs('w'); + var asMonths = makeAs('M'); + var asYears = makeAs('y'); - moment.duration.fn.toString = moment.duration.fn.toISOString; + function get__get (units) { + units = normalizeUnits(units); + return this[units + 's'](); + } - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { + function makeGetter(name) { + return function () { return this._data[name]; }; } - for (i in unitMillisecondFactors) { - if (hasOwnProp(unitMillisecondFactors, i)) { - makeDurationGetter(i.toLowerCase()); - } + var get__milliseconds = makeGetter('milliseconds'); + var seconds = makeGetter('seconds'); + var minutes = makeGetter('minutes'); + var hours = makeGetter('hours'); + var days = makeGetter('days'); + var months = makeGetter('months'); + var years = makeGetter('years'); + + function weeks () { + return absFloor(this.days() / 7); } - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); + var round = Math.round; + var thresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year }; - /************************************ - Default Locale - ************************************/ + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + function humanize__relativeTime (posNegDuration, withoutSuffix, locale) { + var duration = create__createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds < thresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); + } - // Set default locale, other locale will inherit from English. - moment.locale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; + // This function allows you to set a threshold for relative time strings + function humanize__getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; } + thresholds[threshold] = limit; + return true; + } + + function humanize (withSuffix) { + var locale = this.localeData(); + var output = humanize__relativeTime(this, !withSuffix, locale); + + if (withSuffix) { + output = locale.pastFuture(+this, output); + } + + return locale.postformat(output); + } + + var iso_string__abs = Math.abs; + + function iso_string__toISOString() { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = iso_string__abs(this.years()); + var M = iso_string__abs(this.months()); + var D = iso_string__abs(this.days()); + var h = iso_string__abs(this.hours()); + var m = iso_string__abs(this.minutes()); + var s = iso_string__abs(this.seconds() + this.milliseconds() / 1000); + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (total < 0 ? '-' : '') + + 'P' + + (Y ? Y + 'Y' : '') + + (M ? M + 'M' : '') + + (D ? D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? h + 'H' : '') + + (m ? m + 'M' : '') + + (s ? s + 'S' : ''); + } + + var duration_prototype__proto = Duration.prototype; + + duration_prototype__proto.abs = abs__abs; + duration_prototype__proto.add = duration_add_subtract__add; + duration_prototype__proto.subtract = duration_add_subtract__subtract; + duration_prototype__proto.as = as; + duration_prototype__proto.asMilliseconds = asMilliseconds; + duration_prototype__proto.asSeconds = asSeconds; + duration_prototype__proto.asMinutes = asMinutes; + duration_prototype__proto.asHours = asHours; + duration_prototype__proto.asDays = asDays; + duration_prototype__proto.asWeeks = asWeeks; + duration_prototype__proto.asMonths = asMonths; + duration_prototype__proto.asYears = asYears; + duration_prototype__proto.valueOf = as__valueOf; + duration_prototype__proto._bubble = bubble; + duration_prototype__proto.get = get__get; + duration_prototype__proto.milliseconds = get__milliseconds; + duration_prototype__proto.seconds = seconds; + duration_prototype__proto.minutes = minutes; + duration_prototype__proto.hours = hours; + duration_prototype__proto.days = days; + duration_prototype__proto.weeks = weeks; + duration_prototype__proto.months = months; + duration_prototype__proto.years = years; + duration_prototype__proto.humanize = humanize; + duration_prototype__proto.toISOString = iso_string__toISOString; + duration_prototype__proto.toString = iso_string__toISOString; + duration_prototype__proto.toJSON = iso_string__toISOString; + duration_prototype__proto.locale = locale; + duration_prototype__proto.localeData = localeData; + + // Deprecations + duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString); + duration_prototype__proto.lang = lang; + + // Side effect imports + + addFormatToken('X', 0, 0, 'unix'); + addFormatToken('x', 0, 0, 'valueOf'); + + // PARSING + + addRegexToken('x', matchSigned); + addRegexToken('X', matchTimestamp); + addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); + }); + addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); }); - /* EMBED_LOCALES */ + // Side effect imports - /************************************ - Exposing Moment - ************************************/ - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - 'Accessing Moment through the global scope is ' + - 'deprecated, and will be removed in an upcoming ' + - 'release.', - moment); - } else { - globalScope.moment = moment; - } - } + hooks__hooks.version = '2.10.0'; - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; - } + setHookCallback(local__createLocal); - return moment; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - makeGlobal(true); - } else { - makeGlobal(); - } - }).call(this); + hooks__hooks.fn = momentPrototype; + hooks__hooks.min = min; + hooks__hooks.max = max; + hooks__hooks.utc = utc__createUTC; + hooks__hooks.unix = moment__createUnix; + hooks__hooks.months = lists__listMonths; + hooks__hooks.isDate = isDate; + hooks__hooks.locale = locales__getSetGlobalLocale; + hooks__hooks.invalid = valid__createInvalid; + hooks__hooks.duration = create__createDuration; + hooks__hooks.isMoment = isMoment; + hooks__hooks.weekdays = lists__listWeekdays; + hooks__hooks.parseZone = moment__createInZone; + hooks__hooks.localeData = locales__getLocale; + hooks__hooks.isDuration = isDuration; + hooks__hooks.monthsShort = lists__listMonthsShort; + hooks__hooks.weekdaysMin = lists__listWeekdaysMin; + hooks__hooks.defineLocale = defineLocale; + hooks__hooks.weekdaysShort = lists__listWeekdaysShort; + hooks__hooks.normalizeUnits = normalizeUnits; + hooks__hooks.relativeTimeThreshold = humanize__getSetRelativeTimeThreshold; + + var _moment = hooks__hooks; - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) + return _moment; + + })); + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(71)(module))) /***/ }, /* 59 */ @@ -30518,9 +30556,9 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(67); - var HierarchialRepulsionMixin = __webpack_require__(68); - var BarnesHutMixin = __webpack_require__(69); + var RepulsionMixin = __webpack_require__(68); + var HierarchialRepulsionMixin = __webpack_require__(69); + var BarnesHutMixin = __webpack_require__(70); /** * Toggling barnes Hut calculation on and off. @@ -34960,6 +34998,19 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 67 */ +/***/ function(module, exports, __webpack_require__) { + + function webpackContext(req) { + throw new Error("Cannot find module '" + req + "'."); + } + webpackContext.keys = function() { return []; }; + webpackContext.resolve = webpackContext; + module.exports = webpackContext; + webpackContext.id = 67; + + +/***/ }, +/* 68 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35029,7 +35080,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 68 */ +/* 69 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35188,7 +35239,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 69 */ +/* 70 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35592,19 +35643,6 @@ return /******/ (function(modules) { // webpackBootstrap }; -/***/ }, -/* 70 */ -/***/ function(module, exports, __webpack_require__) { - - function webpackContext(req) { - throw new Error("Cannot find module '" + req + "'."); - } - webpackContext.keys = function() { return []; }; - webpackContext.resolve = webpackContext; - module.exports = webpackContext; - webpackContext.id = 70; - - /***/ }, /* 71 */ /***/ function(module, exports, __webpack_require__) { diff --git a/dist/vis.map b/dist/vis.map index 572196f4..3a673b15 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","groupChanged","_moveToGroup","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","stopPropagation","removeFromDataSet","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackContext","req","resolve","webpackPolyfill","paths"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyBA,cAEA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,OAAOH,GACmB,gBAAZC,SACdA,QAAa,IAAID,IAEjBD,EAAU,IAAIC,KACbK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GAG9BN,EAAQe,KAAOT,EAAoB,GACnCN,EAAQgB,QAAUV,EAAoB,GAGtCN,EAAQiB,QAAUX,EAAoB,GACtCN,EAAQkB,SAAWZ,EAAoB,GACvCN,EAAQmB,MAAQb,EAAoB,GAGpCN,EAAQoB,QAAUd,EAAoB,GACtCN,EAAQqB,SACNC,OAAQhB,EAAoB,GAC5BiB,OAAQjB,EAAoB,GAC5BkB,QAASlB,EAAoB,GAC7BmB,QAASnB,EAAoB,IAC7BoB,OAAQpB,EAAoB,IAC5BqB,WAAYrB,EAAoB,KAIlCN,EAAQ4B,SAAWtB,EAAoB,IACvCN,EAAQ6B,QAAUvB,EAAoB,IACtCN,EAAQ8B,UACNC,SAAUzB,EAAoB,IAC9B0B,SAAU1B,EAAoB,IAC9B2B,MAAO3B,EAAoB,IAC3B4B,MAAO5B,EAAoB,IAC3B6B,SAAU7B,EAAoB,IAE9B8B,YACEC,OACEC,KAAMhC,EAAoB,IAC1BiC,eAAgBjC,EAAoB,IACpCkC,QAASlC,EAAoB,IAC7BmC,UAAWnC,EAAoB,IAC/BoC,UAAWpC,EAAoB,KAGjCqC,UAAWrC,EAAoB,IAC/BsC,YAAatC,EAAoB,IACjCuC,WAAYvC,EAAoB,IAChCwC,SAAUxC,EAAoB,IAC9ByC,WAAYzC,EAAoB,IAChC0C,MAAO1C,EAAoB,IAC3B2C,gBAAiB3C,EAAoB,IACrC4C,QAAS5C,EAAoB,IAC7B6C,OAAQ7C,EAAoB,IAC5B8C,UAAW9C,EAAoB,IAC/B+C,SAAU/C,EAAoB,MAKlCN,EAAQsD,QAAUhD,EAAoB,IACtCN,EAAQuD,SACNC,KAAMlD,EAAoB,IAC1BmD,OAAQnD,EAAoB,IAC5BoD,OAAQpD,EAAoB,IAC5BqD,KAAMrD,EAAoB,IAC1BsD,MAAOtD,EAAoB,IAC3BuD,UAAWvD,EAAoB,IAC/BwD,YAAaxD,EAAoB,KAInCN,EAAQ+D,MAAQ,WACd,KAAM,IAAIC,OAAM,+EAIlBhE,EAAQiE,OAAS3D,EAAoB,IACrCN,EAAQkE,OAAS5D,EAAoB,KAKjC,SAASL,EAAQD,EAASM,GAM9B,GAAI2D,GAAS3D,EAAoB,GAOjCN,GAAQmE,SAAW,SAASC,GAC1B,MAAQA,aAAkBC,SAA2B,gBAAVD,IAa7CpE,EAAQsE,UAAY,SAASC,EAAIC,EAAIC,EAAMC,GACzC,GAAIF,GAAOD,EACT,MAAO,EAGP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAGE,EAAQH,GAAKI,IASpC3E,EAAQ6E,SAAW,SAAST,GAC1B,MAAQA,aAAkBU,SAA2B,gBAAVV,IAQ7CpE,EAAQ+E,OAAS,SAASX,GACxB,GAAIA,YAAkBY,MACpB,OAAO,CAEJ,IAAIhF,EAAQ6E,SAAST,GAAS,CAEjC,GAAIa,GAAQC,EAAaC,KAAKf,EAC9B,IAAIa,EACF,OAAO,CAEJ,KAAKG,MAAMJ,KAAKK,MAAMjB,IACzB,OAAO,EAIX,OAAO,GAQTpE,EAAQsF,YAAc,SAASlB,GAC7B,MAA4B,mBAAb,SACVmB,OAAoB,eACpBA,OAAOC,cAAuB,WAC9BpB,YAAkBmB,QAAOC,cAAcC,WAQ9CzF,EAAQ0F,WAAa,WACnB,GAAIC,GAAK,WACP,MAAOf,MAAKgB,MACQ,MAAhBhB,KAAKiB,UACPC,SAAS,IAGb,OACIH,KAAOA,IAAO,IACVA,IAAO,IACPA,IAAO,IACPA,IAAO,IACPA,IAAOA,IAAOA,KAWxB3F,EAAQ+F,OAAS,SAAUC,GACzB,IAAK,GAAIC,GAAI,EAAGC,EAAMC,UAAUC,OAAYF,EAAJD,EAASA,IAAK,CACpD,GAAII,GAAQF,UAAUF,EACtB,KAAK,GAAIK,KAAQD,GACXA,EAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAKtB,MAAON,IAWThG,EAAQwG,gBAAkB,SAAUC,EAAOT,GACzC,IAAKU,MAAMC,QAAQF,GACjB,KAAM,IAAIzC,OAAM,uDAGlB,KAAK,GAAIiC,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAGpC,IAAK,GAFDI,GAAQF,UAAUF,GAEbnF,EAAI,EAAGA,EAAI2F,EAAML,OAAQtF,IAAK,CACrC,GAAIwF,GAAOG,EAAM3F,EACbuF,GAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAItB,MAAON,IAWThG,EAAQ4G,oBAAsB,SAAUH,EAAOT,EAAGa,GAEhD,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAEtB,KAAK,GAAIb,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAEpC,IAAK,GADDI,GAAQF,UAAUF,GACbnF,EAAI,EAAGA,EAAI2F,EAAML,OAAQtF,IAAK,CACrC,GAAIwF,GAAOG,EAAM3F,EACjB,IAAIuF,EAAME,eAAeD,GACvB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,IAMpB,MAAON,IAWThG,EAAQmH,uBAAyB,SAAUV,EAAOT,EAAGa,GAEnD,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAEtB,KAAK,GAAIR,KAAQO,GACf,GAAIA,EAAEN,eAAeD,IACQ,IAAvBG,EAAMW,QAAQd,GAChB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAKpB,MAAON,IASThG,EAAQkH,WAAa,SAASlB,EAAGa,GAE/B,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAGtB,KAAK,GAAIR,KAAQO,GACf,GAAIA,EAAEN,eAAeD,GACnB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAIlB,MAAON,IAUThG,EAAQqH,WAAa,SAAUrB,EAAGa,GAChC,GAAIb,EAAEI,QAAUS,EAAET,OAAQ,OAAO,CAEjC,KAAK,GAAIH,GAAI,EAAGC,EAAMF,EAAEI,OAAYF,EAAJD,EAASA,IACvC,GAAID,EAAEC,IAAMY,EAAEZ,GAAI,OAAO,CAG3B,QAAO,GAYTjG,EAAQsH,QAAU,SAASlD,EAAQmD,GACjC,GAAItC,EAEJ,IAAegC,SAAX7C,EACF,MAAO6C,OAET,IAAe,OAAX7C,EACF,MAAO,KAGT,KAAKmD,EACH,MAAOnD,EAET,IAAsB,gBAATmD,MAAwBA,YAAgBzC,SACnD,KAAM,IAAId,OAAM,wBAIlB,QAAQuD,GACN,IAAK,UACL,IAAK,UACH,MAAOC,SAAQpD,EAEjB,KAAK,SACL,IAAK,SACH,MAAOC,QAAOD,EAAOqD,UAEvB,KAAK,SACL,IAAK,SACH,MAAO3C,QAAOV,EAEhB,KAAK,OACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,IAAIY,MAAKZ,EAElB,IAAIA,YAAkBY,MACpB,MAAO,IAAIA,MAAKZ,EAAOqD,UAEpB,IAAIxD,EAAOyD,SAAStD,GACvB,MAAO,IAAIY,MAAKZ,EAAOqD,UAEzB,IAAIzH,EAAQ6E,SAAST,GAEnB,MADAa,GAAQC,EAAaC,KAAKf,GACtBa,EAEK,GAAID,MAAKX,OAAOY,EAAM,KAGtBhB,EAAOG,GAAQuD,QAIxB,MAAM,IAAI3D,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,gBAGZ,KAAK,SACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAOH,GAAOG,EAEhB,IAAIA,YAAkBY,MACpB,MAAOf,GAAOG,EAAOqD,UAElB,IAAIxD,EAAOyD,SAAStD,GACvB,MAAOH,GAAOG,EAEhB,IAAIpE,EAAQ6E,SAAST,GAEnB,MADAa,GAAQC,EAAaC,KAAKf,GAGjBH,EAFLgB,EAEYZ,OAAOY,EAAM,IAGbb,EAIhB,MAAM,IAAIJ,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,gBAGZ,KAAK,UACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,IAAIY,MAAKZ,EAEb,IAAIA,YAAkBY,MACzB,MAAOZ,GAAOyD,aAEX,IAAI5D,EAAOyD,SAAStD,GACvB,MAAOA,GAAOuD,SAASE,aAEpB,IAAI7H,EAAQ6E,SAAST,GAExB,MADAa,GAAQC,EAAaC,KAAKf,GACtBa,EAEK,GAAID,MAAKX,OAAOY,EAAM,KAAK4C,cAG3B,GAAI7C,MAAKZ,GAAQyD,aAI1B,MAAM,IAAI7D,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,mBAGZ,KAAK,UACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,SAAWA,EAAS,IAExB,IAAIA,YAAkBY,MACzB,MAAO,SAAWZ,EAAOqD,UAAY,IAElC,IAAIzH,EAAQ6E,SAAST,GAAS,CACjCa,EAAQC,EAAaC,KAAKf,EAC1B,IAAIM,EAQJ,OALEA,GAFEO,EAEM,GAAID,MAAKX,OAAOY,EAAM,KAAKwC,UAG3B,GAAIzC,MAAKZ,GAAQqD,UAEpB,SAAW/C,EAAQ,KAG1B,KAAM,IAAIV,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,mBAGZ,SACE,KAAM,IAAIJ,OAAM,iBAAmBuD,EAAO,MAOhD,IAAIrC,GAAe,qBAOnBlF,GAAQ4H,QAAU,SAASxD,GACzB,GAAImD,SAAcnD,EAElB,OAAY,UAARmD,EACY,MAAVnD,EACK,OAELA,YAAkBoD,SACb,UAELpD,YAAkBC,QACb,SAELD,YAAkBU,QACb,SAEL4B,MAAMC,QAAQvC,GACT,QAELA,YAAkBY,MACb,OAEF,SAEQ,UAARuC,EACA,SAEQ,WAARA,EACA,UAEQ,UAARA,EACA,SAGFA,GASTvH,EAAQ8H,gBAAkB,SAASC,GACjC,MAAOA,GAAKC,wBAAwBC,KAAOC,OAAOC,aASpDnI,EAAQoI,eAAiB,SAASL,GAChC,MAAOA,GAAKC,wBAAwBK,IAAMH,OAAOI,aAQnDtI,EAAQuI,aAAe,SAASR,EAAMS,GACpC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,IACD,KAA9BD,EAAQrB,QAAQoB,KAClBC,EAAQE,KAAKH,GACbT,EAAKS,UAAYC,EAAQG,KAAK,OASlC5I,EAAQ6I,gBAAkB,SAASd,EAAMS,GACvC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,KAC/BI,EAAQL,EAAQrB,QAAQoB,EACf,KAATM,IACFL,EAAQM,OAAOD,EAAO,GACtBf,EAAKS,UAAYC,EAAQG,KAAK,OAalC5I,EAAQgJ,QAAU,SAAS5E,EAAQ6E,GACjC,GAAIhD,GACAC,CACJ,IAAIQ,MAAMC,QAAQvC,GAEhB,IAAK6B,EAAI,EAAGC,EAAM9B,EAAOgC,OAAYF,EAAJD,EAASA,IACxCgD,EAAS7E,EAAO6B,GAAIA,EAAG7B,OAKzB,KAAK6B,IAAK7B,GACJA,EAAOmC,eAAeN,IACxBgD,EAAS7E,EAAO6B,GAAIA,EAAG7B,IAY/BpE,EAAQkJ,QAAU,SAAS9E,GACzB,GAAI+E,KAEJ,KAAK,GAAI7C,KAAQlC,GACXA,EAAOmC,eAAeD,IAAO6C,EAAMR,KAAKvE,EAAOkC,GAGrD,OAAO6C,IAUTnJ,EAAQoJ,eAAiB,SAAShF,EAAQiF,EAAK3E,GAC7C,MAAIN,GAAOiF,KAAS3E,GAClBN,EAAOiF,GAAO3E,GACP,IAGA,GAYX1E,EAAQsJ,iBAAmB,SAASC,EAASC,EAAQC,EAAUC,GACzDH,EAAQD,kBACSrC,SAAfyC,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUxC,QAAQ,YAAc,IACvEoC,EAAS,kBAGXD,EAAQD,iBAAiBE,EAAQC,EAAUC,IAE3CH,EAAQM,YAAY,KAAOL,EAAQC,IAWvCzJ,EAAQ8J,oBAAsB,SAASP,EAASC,EAAQC,EAAUC,GAC5DH,EAAQO,qBAES7C,SAAfyC,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUxC,QAAQ,YAAc,IACvEoC,EAAS,kBAGXD,EAAQO,oBAAoBN,EAAQC,EAAUC,IAG9CH,EAAQQ,YAAY,KAAOP,EAAQC,IAOvCzJ,EAAQgK,eAAiB,SAAUC,GAC5BA,IACHA,EAAQ/B,OAAO+B,OAEbA,EAAMD,eACRC,EAAMD,iBAGNC,EAAMC,aAAc,GASxBlK,EAAQmK,UAAY,SAASF,GAEtBA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAIG,EAcJ,OAZIH,GAAMG,OACRA,EAASH,EAAMG,OAERH,EAAMI,aACbD,EAASH,EAAMI,YAGMpD,QAAnBmD,EAAOE,UAA4C,GAAnBF,EAAOE,WAEzCF,EAASA,EAAOG,YAGXH,GAQTpK,EAAQwK,UAAY,SAAUjB,EAASkB,GAGrC,IAFA,GAAIC,GAAInB,EAEDmB,GAAG,CACR,GAAIA,IAAMD,EACR,OAAO,CAETC,GAAIA,EAAEH,WAGR,OAAO,GAGTvK,EAAQ2K,UAQR3K,EAAQ2K,OAAOC,UAAY,SAAUlG,EAAOmG,GAK1C,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACe,GAATA,EAGHmG,GAAgB,MASzB7K,EAAQ2K,OAAOG,SAAW,SAAUpG,EAAOmG,GAKzC,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACKL,OAAOK,IAAUmG,GAAgB,KAGnCA,GAAgB,MASzB7K,EAAQ2K,OAAOI,SAAW,SAAUrG,EAAOmG,GAKzC,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACKI,OAAOJ,GAGTmG,GAAgB,MASzB7K,EAAQ2K,OAAOK,OAAS,SAAUtG,EAAOmG,GAKvC,MAJoB,kBAATnG,KACTA,EAAQA,KAGN1E,EAAQ6E,SAASH,GACZA,EAEA1E,EAAQmE,SAASO,GACjBA,EAAQ,KAGRmG,GAAgB,MAU3B7K,EAAQ2K,OAAOM,UAAY,SAAUvG,EAAOmG,GAK1C,MAJoB,kBAATnG,KACTA,EAAQA,KAGHA,GAASmG,GAAgB,MASlC7K,EAAQkL,SAAW,SAASC,GAE1B,GAAIC,GAAiB,kCACrBD,GAAMA,EAAIE,QAAQD,EAAgB,SAASxK,EAAG0K,EAAGC,EAAG1E,GAChD,MAAOyE,GAAIA,EAAIC,EAAIA,EAAI1E,EAAIA,GAE/B,IAAI2E,GAAS,4CAA4CrG,KAAKgG,EAC9D,OAAOK,IACHF,EAAGG,SAASD,EAAO,GAAI,IACvBD,EAAGE,SAASD,EAAO,GAAI,IACvB3E,EAAG4E,SAASD,EAAO,GAAI,KACvB,MASNxL,EAAQ0L,gBAAkB,SAASC,EAAMC,GACvC,GAA4B,IAAxBD,EAAMvE,QAAQ,OAAc,CAC9B,GAAIyE,GAAMF,EAAMG,OAAOH,EAAMvE,QAAQ,KAAK,GAAGiE,QAAQ,IAAI,IAAI3C,MAAM,IACnE,OAAO,QAAUmD,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMD,EAAU,IAGxE,GAAIC,GAAM7L,EAAQkL,SAASS,EAC3B,OAAW,OAAPE,EACKF,EAGA,QAAUE,EAAIP,EAAI,IAAMO,EAAIN,EAAI,IAAMM,EAAIhF,EAAI,IAAM+E,EAAU,KAa3E5L,EAAQ+L,SAAW,SAASC,EAAIC,EAAMC,GACpC,MAAO,MAAQ,GAAK,KAAOF,GAAO,KAAOC,GAAS,GAAKC,GAAMpG,SAAS,IAAIqG,MAAM,IASlFnM,EAAQoM,WAAa,SAAST,GAC5B,GAAI9K,EACJ,IAAIb,EAAQ6E,SAAS8G,GAAQ,CAC3B,GAAI3L,EAAQqM,WAAWV,GAAQ,CAC7B,GAAIE,GAAMF,EAAMG,OAAO,GAAGA,OAAO,EAAEH,EAAMvF,OAAO,GAAGsC,MAAM,IACzDiD,GAAQ3L,EAAQ+L,SAASF,EAAI,GAAGA,EAAI,GAAGA,EAAI,IAE7C,GAAI7L,EAAQsM,WAAWX,GAAQ,CAC7B,GAAIY,GAAMvM,EAAQwM,SAASb,GACvBc,GAAmBC,EAAEH,EAAIG,EAAEC,EAAU,IAARJ,EAAII,EAASC,EAAEhI,KAAKL,IAAI,EAAU,KAARgI,EAAIK,IAC3DC,GAAmBH,EAAEH,EAAIG,EAAEC,EAAE/H,KAAKL,IAAI,EAAU,KAARgI,EAAIK,GAAUA,EAAQ,GAANL,EAAIK,GAC5DE,EAAkB9M,EAAQ+M,SAASF,EAAeH,EAAGG,EAAeH,EAAGG,EAAeD,GACtFI,EAAkBhN,EAAQ+M,SAASN,EAAgBC,EAAED,EAAgBE,EAAEF,EAAgBG,EAE3F/L,IACEoM,WAAYtB,EACZuB,OAAOJ,EACPK,WACEF,WAAWD,EACXE,OAAOJ,GAETM,OACEH,WAAWD,EACXE,OAAOJ,QAKXjM,IACEoM,WAAWtB,EACXuB,OAAOvB,EACPwB,WACEF,WAAWtB,EACXuB,OAAOvB,GAETyB,OACEH,WAAWtB,EACXuB,OAAOvB,QAMb9K,MACAA,EAAEoM,WAAatB,EAAMsB,YAAc,QACnCpM,EAAEqM,OAASvB,EAAMuB,QAAUrM,EAAEoM,WAEzBjN,EAAQ6E,SAAS8G,EAAMwB,WACzBtM,EAAEsM,WACAD,OAAQvB,EAAMwB,UACdF,WAAYtB,EAAMwB,YAIpBtM,EAAEsM,aACFtM,EAAEsM,UAAUF,WAAatB,EAAMwB,WAAaxB,EAAMwB,UAAUF,YAAcpM,EAAEoM,WAC5EpM,EAAEsM,UAAUD,OAASvB,EAAMwB,WAAaxB,EAAMwB,UAAUD,QAAUrM,EAAEqM,QAGlElN,EAAQ6E,SAAS8G,EAAMyB,OACzBvM,EAAEuM,OACAF,OAAQvB,EAAMyB,MACdH,WAAYtB,EAAMyB,QAIpBvM,EAAEuM,SACFvM,EAAEuM,MAAMH,WAAatB,EAAMyB,OAASzB,EAAMyB,MAAMH,YAAcpM,EAAEoM,WAChEpM,EAAEuM,MAAMF,OAASvB,EAAMyB,OAASzB,EAAMyB,MAAMF,QAAUrM,EAAEqM,OAI5D,OAAOrM,IAYTb,EAAQqN,SAAW,SAASrB,EAAIC,EAAMC,GACpCF,GAAQ,IAAKC,GAAY,IAAKC,GAAU,GACxC,IAAIoB,GAAS1I,KAAKL,IAAIyH,EAAIpH,KAAKL,IAAI0H,EAAMC,IACrCqB,EAAS3I,KAAKJ,IAAIwH,EAAIpH,KAAKJ,IAAIyH,EAAMC,GAGzC,IAAIoB,GAAUC,EACZ,OAAQb,EAAE,EAAEC,EAAE,EAAEC,EAAEU,EAIpB,IAAIE,GAAKxB,GAAKsB,EAAUrB,EAAMC,EAASA,GAAMoB,EAAUtB,EAAIC,EAAQC,EAAKF,EACpEU,EAAKV,GAAKsB,EAAU,EAAMpB,GAAMoB,EAAU,EAAI,EAC9CG,EAAM,IAAIf,EAAIc,GAAGD,EAASD,IAAS,IACnCI,GAAcH,EAASD,GAAQC,EAC/B7I,EAAQ6I,CACZ,QAAQb,EAAEe,EAAId,EAAEe,EAAWd,EAAElI,GAG/B,IAAIiJ,IAEFjF,MAAO,SAAUkF,GACf,GAAIC,KAWJ,OATAD,GAAQlF,MAAM,KAAKM,QAAQ,SAAU8E,GACnC,GAAoB,IAAhBA,EAAMC,OAAc,CACtB,GAAIC,GAAQF,EAAMpF,MAAM,KACpBW,EAAM2E,EAAM,GAAGD,OACfrJ,EAAQsJ,EAAM,GAAGD,MACrBF,GAAOxE,GAAO3E,KAIXmJ,GAITjF,KAAM,SAAUiF,GACd,MAAO7G,QAAOiH,KAAKJ,GACdK,IAAI,SAAU7E,GACb,MAAOA,GAAM,KAAOwE,EAAOxE,KAE5BT,KAAK,OASd5I,GAAQmO,WAAa,SAAU5E,EAASqE,GACtC,GAAIQ,GAAgBT,EAAQjF,MAAMa,EAAQuE,MAAMF,SAC5CS,EAAYV,EAAQjF,MAAMkF,GAC1BC,EAAS7N,EAAQ+F,OAAOqI,EAAeC,EAE3C9E,GAAQuE,MAAMF,QAAUD,EAAQ/E,KAAKiF,IAQvC7N,EAAQsO,cAAgB,SAAU/E,EAASqE,GACzC,GAAIC,GAASF,EAAQjF,MAAMa,EAAQuE,MAAMF,SACrCW,EAAeZ,EAAQjF,MAAMkF,EAEjC,KAAK,GAAIvE,KAAOkF,GACVA,EAAahI,eAAe8C,UACvBwE,GAAOxE,EAIlBE,GAAQuE,MAAMF,QAAUD,EAAQ/E,KAAKiF,IAWvC7N,EAAQwO,SAAW,SAAS9B,EAAGC,EAAGC,GAChC,GAAItB,GAAGC,EAAG1E,EAENZ,EAAIrB,KAAKgB,MAAU,EAAJ8G,GACf+B,EAAQ,EAAJ/B,EAAQzG,EACZnF,EAAI8L,GAAK,EAAID,GACb+B,EAAI9B,GAAK,EAAI6B,EAAI9B,GACjBgC,EAAI/B,GAAK,GAAK,EAAI6B,GAAK9B,EAE3B,QAAQ1G,EAAI,GACV,IAAK,GAAGqF,EAAIsB,EAAGrB,EAAIoD,EAAG9H,EAAI/F,CAAG,MAC7B,KAAK,GAAGwK,EAAIoD,EAAGnD,EAAIqB,EAAG/F,EAAI/F,CAAG,MAC7B,KAAK,GAAGwK,EAAIxK,EAAGyK,EAAIqB,EAAG/F,EAAI8H,CAAG,MAC7B,KAAK,GAAGrD,EAAIxK,EAAGyK,EAAImD,EAAG7H,EAAI+F,CAAG,MAC7B,KAAK,GAAGtB,EAAIqD,EAAGpD,EAAIzK,EAAG+F,EAAI+F,CAAG,MAC7B,KAAK,GAAGtB,EAAIsB,EAAGrB,EAAIzK,EAAG+F,EAAI6H,EAG5B,OAAQpD,EAAE1G,KAAKgB,MAAU,IAAJ0F,GAAUC,EAAE3G,KAAKgB,MAAU,IAAJ2F,GAAU1E,EAAEjC,KAAKgB,MAAU,IAAJiB,KAGrE7G,EAAQ+M,SAAW,SAASL,EAAGC,EAAGC,GAChC,GAAIf,GAAM7L,EAAQwO,SAAS9B,EAAGC,EAAGC,EACjC,OAAO5M,GAAQ+L,SAASF,EAAIP,EAAGO,EAAIN,EAAGM,EAAIhF,IAG5C7G,EAAQwM,SAAW,SAASrB,GAC1B,GAAIU,GAAM7L,EAAQkL,SAASC,EAC3B,OAAOnL,GAAQqN,SAASxB,EAAIP,EAAGO,EAAIN,EAAGM,EAAIhF,IAG5C7G,EAAQsM,WAAa,SAASnB,GAC5B,GAAIyD,GAAO,qCAAqCC,KAAK1D,EACrD,OAAOyD,IAGT5O,EAAQqM,WAAa,SAASR,GAC5BA,EAAMA,EAAIR,QAAQ,IAAI,GACtB,IAAIuD,GAAO,wCAAwCC,KAAKhD,EACxD,OAAO+C,IAUT5O,EAAQ8O,sBAAwB,SAASC,EAAQC,GAC/C,GAA8B,gBAAnBA,GAA6B,CAEtC,IAAK,GADDC,GAAWjI,OAAOkI,OAAOF,GACpB/I,EAAI,EAAGA,EAAI8I,EAAO3I,OAAQH,IAC7B+I,EAAgBzI,eAAewI,EAAO9I,KACC,gBAA9B+I,GAAgBD,EAAO9I,MAChCgJ,EAASF,EAAO9I,IAAMjG,EAAQmP,aAAaH,EAAgBD,EAAO9I,KAIxE,OAAOgJ,GAGP,MAAO,OAWXjP,EAAQmP,aAAe,SAASH,GAC9B,GAA8B,gBAAnBA,GAA6B,CACtC,GAAIC,GAAWjI,OAAOkI,OAAOF,EAC7B,KAAK,GAAI/I,KAAK+I,GACRA,EAAgBzI,eAAeN,IACA,gBAAtB+I,GAAgB/I,KACzBgJ,EAAShJ,GAAKjG,EAAQmP,aAAaH,EAAgB/I,IAIzD,OAAOgJ,GAGP,MAAO,OAcXjP,EAAQoP,aAAe,SAAUC,EAAaC,EAAS3E,GACrD,GAAwB1D,SAApBqI,EAAQ3E,GACV,GAA8B,iBAAnB2E,GAAQ3E,GACjB0E,EAAY1E,GAAQ4E,QAAUD,EAAQ3E,OAEnC,CACH0E,EAAY1E,GAAQ4E,SAAU,CAC9B,KAAK,GAAIjJ,KAAQgJ,GAAQ3E,GACnB2E,EAAQ3E,GAAQpE,eAAeD,KACjC+I,EAAY1E,GAAQrE,GAAQgJ,EAAQ3E,GAAQrE,MAmBtDtG,EAAQwP,mBAAqB,SAASC,EAAcC,EAAgBC,EAAOC,GAMzE,IALA,GAAIC,GAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAarJ,OAAS,EAEnB4J,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAASrL,KAAKgB,OAAOmK,EAAMC,GAAQ,GAEnCE,EAAOT,EAAaQ,GACpBvL,EAAoBuC,SAAX2I,EAAwBM,EAAKP,GAASO,EAAKP,GAAOC,GAE3DO,EAAeT,EAAehL,EAClC,IAAoB,GAAhByL,EACF,MAAOF,EAEgB,KAAhBE,EACPJ,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGlBH,IAGF,MAAO,IAeT9P,EAAQoQ,kBAAoB,SAASX,EAAcrF,EAAQuF,EAAOU,GAOhE,IANA,GAIIC,GAAW5L,EAAO6L,EAAWN,EAJ7BJ,EAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAarJ,OAAS,EAGnB4J,GAAPD,GAA2BF,EAAZC,GAA2B,CAO/C,GALAG,EAASrL,KAAKgB,MAAM,IAAKoK,EAAKD,IAC9BO,EAAYb,EAAa7K,KAAKJ,IAAI,EAAEyL,EAAS,IAAIN,GACjDjL,EAAY+K,EAAaQ,GAAQN,GACjCY,EAAYd,EAAa7K,KAAKL,IAAIkL,EAAarJ,OAAO,EAAE6J,EAAS,IAAIN,GAEjEjL,GAAS0F,EACX,MAAO6F,EAEJ,IAAgB7F,EAAZkG,GAAsB5L,EAAQ0F,EACrC,MAAyB,UAAlBiG,EAA6BzL,KAAKJ,IAAI,EAAEyL,EAAS,GAAKA,CAE1D,IAAY7F,EAAR1F,GAAkB6L,EAAYnG,EACrC,MAAyB,UAAlBiG,EAA6BJ,EAASrL,KAAKL,IAAIkL,EAAarJ,OAAO,EAAE6J,EAAS,EAGzE7F,GAAR1F,EACFqL,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGpBH,IAIF,MAAO,IAYT9P,EAAQwQ,cAAgB,SAAU7B,EAAG8B,EAAOC,EAAKC,GAC/C,GAAIC,GAASF,EAAMD,CAEnB,OADA9B,IAAKgC,EAAS,EACN,EAAJhC,EAAciC,EAAO,EAAEjC,EAAEA,EAAI8B,GACjC9B,KACQiC,EAAO,GAAKjC,GAAGA,EAAE,GAAK,GAAK8B,IAUrCzQ,EAAQ6Q,iBAENC,OAAQ,SAAUnC,GAChB,MAAOA,IAGToC,WAAY,SAAUpC,GACpB,MAAOA,GAAIA,GAGbqC,YAAa,SAAUrC,GACrB,MAAOA,IAAK,EAAIA,IAGlB6B,cAAe,SAAU7B,GACvB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAI,IAAM,EAAI,EAAIA,GAAKA,GAGjDsC,YAAa,SAAUtC,GACrB,MAAOA,GAAIA,EAAIA,GAGjBuC,aAAc,SAAUvC,GACtB,QAAUA,EAAKA,EAAIA,EAAI,GAGzBwC,eAAgB,SAAUxC,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,GAGxEyC,YAAa,SAAUzC,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,GAGrB0C,aAAc,SAAU1C,GACtB,MAAO,MAAOA,EAAKA,EAAIA,EAAIA,GAG7B2C,eAAgB,SAAU3C,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,IAAOA,EAAKA,EAAIA,EAAIA,GAG9D4C,YAAa,SAAU5C,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAGzB6C,aAAc,SAAU7C,GACtB,MAAO,KAAOA,EAAKA,EAAIA,EAAIA,EAAIA,GAGjC8C,eAAgB,SAAU9C,GACxB,MAAW,GAAJA,EAAS,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,KAAQA,EAAKA,EAAIA,EAAIA,EAAIA,KAMtE,SAAS1O,EAAQD,GASrBA,EAAQ0R,gBAAkB,SAASC,GAEjC,IAAK,GAAIC,KAAeD,GAClBA,EAAcpL,eAAeqL,KAC/BD,EAAcC,GAAaC,UAAYF,EAAcC,GAAaE,KAClEH,EAAcC,GAAaE,UAYjC9R,EAAQ+R,gBAAkB,SAASJ,GAEjC,IAAK,GAAIC,KAAeD,GACtB,GAAIA,EAAcpL,eAAeqL,IAC3BD,EAAcC,GAAaC,UAAW,CACxC,IAAK,GAAI5L,GAAI,EAAGA,EAAI0L,EAAcC,GAAaC,UAAUzL,OAAQH,IAC/D0L,EAAcC,GAAaC,UAAU5L,GAAGsE,WAAWyH,YAAYL,EAAcC,GAAaC,UAAU5L,GAEtG0L,GAAcC,GAAaC,eAgBnC7R,EAAQiS,cAAgB,SAAUL,EAAaD,EAAeO,GAC5D,GAAI3I,EAqBJ,OAnBIoI,GAAcpL,eAAeqL,GAE3BD,EAAcC,GAAaC,UAAUzL,OAAS,GAChDmD,EAAUoI,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrC5I,EAAU6I,SAASC,gBAAgB,6BAA8BT,GACjEM,EAAaI,YAAY/I,KAK3BA,EAAU6I,SAASC,gBAAgB,6BAA8BT,GACjED,EAAcC,IAAgBE,QAAUD,cACxCK,EAAaI,YAAY/I,IAE3BoI,EAAcC,GAAaE,KAAKnJ,KAAKY,GAC9BA,GAcTvJ,EAAQuS,cAAgB,SAAUX,EAAaD,EAAea,EAAcC,GAC1E,GAAIlJ,EA+BJ,OA7BIoI,GAAcpL,eAAeqL,GAE3BD,EAAcC,GAAaC,UAAUzL,OAAS,GAChDmD,EAAUoI,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrC5I,EAAU6I,SAASM,cAAcd,GACZ3K,SAAjBwL,EACFD,EAAaC,aAAalJ,EAASkJ,GAGnCD,EAAaF,YAAY/I,KAM7BA,EAAU6I,SAASM,cAAcd,GACjCD,EAAcC,IAAgBE,QAAUD,cACnB5K,SAAjBwL,EACFD,EAAaC,aAAalJ,EAASkJ,GAGnCD,EAAaF,YAAY/I,IAG7BoI,EAAcC,GAAaE,KAAKnJ,KAAKY,GAC9BA,GAmBTvJ,EAAQ2S,UAAY,SAASC,EAAGC,EAAGC,EAAOnB,EAAeO,EAAca,GACrE,GAAIC,EACkC,WAAlCF,EAAMxD,QAAQ2D,WAAWnF,OAC3BkF,EAAQhT,EAAQiS,cAAc,SAASN,EAAcO,GACrDc,EAAME,eAAe,KAAM,KAAMN,GACjCI,EAAME,eAAe,KAAM,KAAML,GACjCG,EAAME,eAAe,KAAM,IAAK,GAAMJ,EAAMxD,QAAQ2D,WAAWE,QAG/DH,EAAQhT,EAAQiS,cAAc,OAAON,EAAcO,GACnDc,EAAME,eAAe,KAAM,IAAKN,EAAI,GAAIE,EAAMxD,QAAQ2D,WAAWE,MACjEH,EAAME,eAAe,KAAM,IAAKL,EAAI,GAAIC,EAAMxD,QAAQ2D,WAAWE,MACjEH,EAAME,eAAe,KAAM,QAASJ,EAAMxD,QAAQ2D,WAAWE,MAC7DH,EAAME,eAAe,KAAM,SAAUJ,EAAMxD,QAAQ2D,WAAWE,OAGzBlM,SAApC6L,EAAMxD,QAAQ2D,WAAWpF,QAC1BmF,EAAME,eAAe,KAAM,QAASJ,EAAMA,MAAMxD,QAAQ2D,WAAWpF,QAErEmF,EAAME,eAAe,KAAM,QAASJ,EAAMtK,UAAY,SAEtD,IAAI4K,GAAQpT,EAAQiS,cAAc,OAAON,EAAcO,EAqBvD,OApBIa,KACIA,EAASM,UACXT,GAAQG,EAASM,SAGfN,EAASO,UACXT,GAAQE,EAASO,SAEfP,EAASQ,UACXH,EAAMI,YAAcT,EAASQ,SAG3BR,EAASvK,WACX4K,EAAMF,eAAe,KAAM,QAASH,EAASvK,UAAa,WAKhE4K,EAAMF,eAAe,KAAM,IAAKN,GAChCQ,EAAMF,eAAe,KAAM,IAAKL,GACzBG,GAUThT,EAAQyT,QAAU,SAAUb,EAAGC,EAAGa,EAAOC,EAAQnL,EAAWmJ,EAAeO,GACzE,GAAc,GAAVyB,EAAa,CACF,EAATA,IACFA,GAAU,GACVd,GAAKc,EAEP,IAAIC,GAAO5T,EAAQiS,cAAc,OAAON,EAAeO,EACvD0B,GAAKV,eAAe,KAAM,IAAKN,EAAI,GAAMc,GACzCE,EAAKV,eAAe,KAAM,IAAKL,GAC/Be,EAAKV,eAAe,KAAM,QAASQ,GACnCE,EAAKV,eAAe,KAAM,SAAUS,GACpCC,EAAKV,eAAe,KAAM,QAAS1K,MAMnC,SAASvI,EAAQD,EAASM,GAgD9B,QAASW,GAAS4S,EAAMvE,GAetB,IAbIuE,GAASnN,MAAMC,QAAQkN,IAAU9S,EAAKuE,YAAYuO,KACpDvE,EAAUuE,EACVA,EAAO,MAGTzT,KAAK0T,SAAWxE,MAChBlP,KAAK2T,SACL3T,KAAKgG,OAAS,EACdhG,KAAK4T,SAAW5T,KAAK0T,SAASG,SAAW,KACzC7T,KAAK8T,SAID9T,KAAK0T,SAASvM,KAChB,IAAK,GAAIoI,KAASvP,MAAK0T,SAASvM,KAC9B,GAAInH,KAAK0T,SAASvM,KAAKhB,eAAeoJ,GAAQ,CAC5C,GAAIjL,GAAQtE,KAAK0T,SAASvM,KAAKoI,EAE7BvP,MAAK8T,MAAMvE,GADA,QAATjL,GAA4B,WAATA,GAA+B,WAATA,EACvB,OAGAA,EAO5B,GAAItE,KAAK0T,SAASxM,QAChB,KAAM,IAAItD,OAAM,sDAGlB5D,MAAK+T,gBAGDN,GACFzT,KAAKgU,IAAIP,GAGXzT,KAAKiU,WAAW/E,GAvFlB,GAAIvO,GAAOT,EAAoB,GAC3Ba,EAAQb,EAAoB,EAkGhCW,GAAQqT,UAAUD,WAAa,SAAS/E,GAClCA,GAA6BrI,SAAlBqI,EAAQiF,QACjBjF,EAAQiF,SAAU,EAEhBnU,KAAKoU,SACPpU,KAAKoU,OAAOC,gBACLrU,MAAKoU,SAKTpU,KAAKoU,SACRpU,KAAKoU,OAASrT,EAAM4E,OAAO3F,MACzBiL,SAAU,MAAO,SAAU,aAIF,gBAAlBiE,GAAQiF,OACjBnU,KAAKoU,OAAOH,WAAW/E,EAAQiF,UAevCtT,EAAQqT,UAAUI,GAAK,SAASzK,EAAOhB,GACrC,GAAI0L,GAAcvU,KAAK+T,aAAalK,EAC/B0K,KACHA,KACAvU,KAAK+T,aAAalK,GAAS0K,GAG7BA,EAAYhM,MACVM,SAAUA,KAKdhI,EAAQqT,UAAUM,UAAY3T,EAAQqT,UAAUI,GAOhDzT,EAAQqT,UAAUO,IAAM,SAAS5K,EAAOhB,GACtC,GAAI0L,GAAcvU,KAAK+T,aAAalK,EAChC0K,KACFvU,KAAK+T,aAAalK,GAAS0K,EAAYG,OAAO,SAAUrL,GACtD,MAAQA,GAASR,UAAYA,MAMnChI,EAAQqT,UAAUS,YAAc9T,EAAQqT,UAAUO,IASlD5T,EAAQqT,UAAUU,SAAW,SAAU/K,EAAOgL,EAAQC,GACpD,GAAa,KAATjL,EACF,KAAM,IAAIjG,OAAM,yBAGlB,IAAI2Q,KACA1K,KAAS7J,MAAK+T,eAChBQ,EAAcA,EAAYQ,OAAO/U,KAAK+T,aAAalK,KAEjD,KAAO7J,MAAK+T,eACdQ,EAAcA,EAAYQ,OAAO/U,KAAK+T,aAAa,MAGrD,KAAK,GAAIlO,GAAI,EAAGA,EAAI0O,EAAYvO,OAAQH,IAAK,CAC3C,GAAImP,GAAaT,EAAY1O,EACzBmP,GAAWnM,UACbmM,EAAWnM,SAASgB,EAAOgL,EAAQC,GAAY,QAYrDjU,EAAQqT,UAAUF,IAAM,SAAUP,EAAMqB,GACtC,GACIzU,GADA4U,KAEAC,EAAKlV,IAET,IAAIsG,MAAMC,QAAQkN,GAEhB,IAAK,GAAI5N,GAAI,EAAGC,EAAM2N,EAAKzN,OAAYF,EAAJD,EAASA,IAC1CxF,EAAK6U,EAAGC,SAAS1B,EAAK5N,IACtBoP,EAAS1M,KAAKlI,OAGb,IAAIM,EAAKuE,YAAYuO,GAGxB,IAAK,GADD2B,GAAUpV,KAAKqV,gBAAgB5B,GAC1B6B,EAAM,EAAGC,EAAO9B,EAAK+B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDxF,MACK2F,EAAM,EAAGC,EAAON,EAAQpP,OAAc0P,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB3F,GAAKP,GAASkE,EAAKkC,SAASL,EAAKG,GAGnCpV,EAAK6U,EAAGC,SAASrF,GACjBmF,EAAS1M,KAAKlI,OAGb,CAAA,KAAIoT,YAAgB7M,SAMvB,KAAM,IAAIhD,OAAM,mBAJhBvD,GAAK6U,EAAGC,SAAS1B,GACjBwB,EAAS1M,KAAKlI,GAUhB,MAJI4U,GAASjP,QACXhG,KAAK4U,SAAS,OAAQ3S,MAAOgT,GAAWH,GAGnCG,GASTpU,EAAQqT,UAAU0B,OAAS,SAAUnC,EAAMqB,GACzC,GAAIG,MACAY,KACAC,KACAZ,EAAKlV,KACL6T,EAAUqB,EAAGtB,SAEbmC,EAAc,SAAUjG,GAC1B,GAAIzP,GAAKyP,EAAK+D,EACVqB,GAAGvB,MAAMtT,IAEXA,EAAK6U,EAAGc,YAAYlG,GACpB+F,EAAWtN,KAAKlI,GAChByV,EAAYvN,KAAKuH,KAIjBzP,EAAK6U,EAAGC,SAASrF,GACjBmF,EAAS1M,KAAKlI,IAIlB,IAAIiG,MAAMC,QAAQkN,GAEhB,IAAK,GAAI5N,GAAI,EAAGC,EAAM2N,EAAKzN,OAAYF,EAAJD,EAASA,IAC1CkQ,EAAYtC,EAAK5N,QAGhB,IAAIlF,EAAKuE,YAAYuO,GAGxB,IAAK,GADD2B,GAAUpV,KAAKqV,gBAAgB5B,GAC1B6B,EAAM,EAAGC,EAAO9B,EAAK+B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDxF,MACK2F,EAAM,EAAGC,EAAON,EAAQpP,OAAc0P,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB3F,GAAKP,GAASkE,EAAKkC,SAASL,EAAKG,GAGnCM,EAAYjG,OAGX,CAAA,KAAI2D,YAAgB7M,SAKvB,KAAM,IAAIhD,OAAM,mBAHhBmS,GAAYtC,GAad,MAPIwB,GAASjP,QACXhG,KAAK4U,SAAS,OAAQ3S,MAAOgT,GAAWH,GAEtCe,EAAW7P,QACbhG,KAAK4U,SAAS,UAAW3S,MAAO4T,EAAYpC,KAAMqC,GAAchB,GAG3DG,EAASF,OAAOc,IAsCzBhV,EAAQqT,UAAU+B,IAAM,WACtB,GAGI5V,GAAI6V,EAAKhH,EAASuE,EAHlByB,EAAKlV,KAILmW,EAAYxV,EAAK6G,QAAQzB,UAAU,GACtB,WAAboQ,GAAsC,UAAbA,GAE3B9V,EAAK0F,UAAU,GACfmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,IAEG,SAAboQ,GAEPD,EAAMnQ,UAAU,GAChBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,KAIjBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,GAInB,IAAIqQ,EACJ,IAAIlH,GAAWA,EAAQkH,WAAY,CACjC,GAAIC,IAAiB,YAAa,QAAS,SAG3C,IAFAD,EAA0D,IAA7CC,EAAcrP,QAAQkI,EAAQkH,YAAoB,QAAUlH,EAAQkH,WAE7E3C,GAAS2C,GAAczV,EAAK6G,QAAQiM,GACtC,KAAM,IAAI7P,OAAM,6BAA+BjD,EAAK6G,QAAQiM,GAAQ,sDACVvE,EAAQ/H,KAAO,IAE3E,IAAkB,aAAdiP,IAA8BzV,EAAKuE,YAAYuO,GACjD,KAAM,IAAI7P,OAAM,6EAKlBwS,GADO3C,GAC6B,aAAtB9S,EAAK6G,QAAQiM,GAAwB,YAGtC,OAIf,IAEgB3D,GAAMwG,EAAQzQ,EAAGC,EAF7BqB,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChDuN,EAASxF,GAAWA,EAAQwF,OAC5BzS,IAGJ,IAAU4E,QAANxG,EAEFyP,EAAOoF,EAAGqB,SAASlW,EAAI8G,GACnBuN,IAAWA,EAAO5E,KACpBA,EAAO,UAGN,IAAWjJ,QAAPqP,EAEP,IAAKrQ,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCiK,EAAOoF,EAAGqB,SAASL,EAAIrQ,GAAIsB,KACtBuN,GAAUA,EAAO5E,KACpB7N,EAAMsG,KAAKuH,OAMf,KAAKwG,IAAUtW,MAAK2T,MACd3T,KAAK2T,MAAMxN,eAAemQ,KAC5BxG,EAAOoF,EAAGqB,SAASD,EAAQnP,KACtBuN,GAAUA,EAAO5E,KACpB7N,EAAMsG,KAAKuH,GAYnB,IALIZ,GAAWA,EAAQsH,OAAe3P,QAANxG,GAC9BL,KAAKyW,MAAMxU,EAAOiN,EAAQsH,OAIxBtH,GAAWA,EAAQP,OAAQ,CAC7B,GAAIA,GAASO,EAAQP,MACrB,IAAU9H,QAANxG,EACFyP,EAAO9P,KAAK0W,cAAc5G,EAAMnB,OAGhC,KAAK9I,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvC5D,EAAM4D,GAAK7F,KAAK0W,cAAczU,EAAM4D,GAAI8I,GAM9C,GAAkB,aAAdyH,EAA2B,CAC7B,GAAIhB,GAAUpV,KAAKqV,gBAAgB5B,EACnC,IAAU5M,QAANxG,EAEF6U,EAAGyB,WAAWlD,EAAM2B,EAAStF,OAI7B,KAAKjK,EAAI,EAAGA,EAAI5D,EAAM+D,OAAQH,IAC5BqP,EAAGyB,WAAWlD,EAAM2B,EAASnT,EAAM4D,GAGvC,OAAO4N,GAEJ,GAAkB,UAAd2C,EAAwB,CAC/B,GAAIhL,KACJ,KAAKvF,EAAI,EAAGA,EAAI5D,EAAM+D,OAAQH,IAC5BuF,EAAOnJ,EAAM4D,GAAGxF,IAAM4B,EAAM4D,EAE9B,OAAOuF,GAIP,GAAUvE,QAANxG,EAEF,MAAOyP,EAIP,IAAI2D,EAAM,CAER,IAAK5N,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvC4N,EAAKlL,KAAKtG,EAAM4D,GAElB,OAAO4N,GAIP,MAAOxR,IAcfpB,EAAQqT,UAAU0C,OAAS,SAAU1H,GACnC,GAIIrJ,GACAC,EACAzF,EACAyP,EACA7N,EARAwR,EAAOzT,KAAK2T,MACZe,EAASxF,GAAWA,EAAQwF,OAC5B8B,EAAQtH,GAAWA,EAAQsH,MAC3BrP,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAMhD+O,IAEJ,IAAIxB,EAEF,GAAI8B,EAAO,CAETvU,IACA,KAAK5B,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,GACrBuN,EAAO5E,IACT7N,EAAMsG,KAAKuH,GAOjB,KAFA9P,KAAKyW,MAAMxU,EAAOuU,GAEb3Q,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvCqQ,EAAIrQ,GAAK5D,EAAM4D,GAAG7F,KAAK4T,cAKzB,KAAKvT,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,GACrBuN,EAAO5E,IACToG,EAAI3N,KAAKuH,EAAK9P,KAAK4T,gBAQ3B,IAAI4C,EAAO,CAETvU,IACA,KAAK5B,IAAMoT,GACLA,EAAKtN,eAAe9F,IACtB4B,EAAMsG,KAAKkL,EAAKpT,GAMpB,KAFAL,KAAKyW,MAAMxU,EAAOuU,GAEb3Q,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IACvCqQ,EAAIrQ,GAAK5D,EAAM4D,GAAG7F,KAAK4T,cAKzB,KAAKvT,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO2D,EAAKpT,GACZ6V,EAAI3N,KAAKuH,EAAK9P,KAAK4T,WAM3B,OAAOsC,IAOTrV,EAAQqT,UAAU2C,WAAa,WAC7B,MAAO7W,OAaTa,EAAQqT,UAAUtL,QAAU,SAAUC,EAAUqG,GAC9C,GAGIY,GACAzP,EAJAqU,EAASxF,GAAWA,EAAQwF,OAC5BvN,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChDsM,EAAOzT,KAAK2T,KAIhB,IAAIzE,GAAWA,EAAQsH,MAIrB,IAAK,GAFDvU,GAAQjC,KAAKiW,IAAI/G,GAEZrJ,EAAI,EAAGC,EAAM7D,EAAM+D,OAAYF,EAAJD,EAASA,IAC3CiK,EAAO7N,EAAM4D,GACbxF,EAAKyP,EAAK9P,KAAK4T,UACf/K,EAASiH,EAAMzP,OAKjB,KAAKA,IAAMoT,GACLA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,KACpBuN,GAAUA,EAAO5E,KACpBjH,EAASiH,EAAMzP,KAkBzBQ,EAAQqT,UAAUpG,IAAM,SAAUjF,EAAUqG,GAC1C,GAIIY,GAJA4E,EAASxF,GAAWA,EAAQwF,OAC5BvN,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChD2P,KACArD,EAAOzT,KAAK2T,KAIhB,KAAK,GAAItT,KAAMoT,GACTA,EAAKtN,eAAe9F,KACtByP,EAAO9P,KAAKuW,SAASlW,EAAI8G,KACpBuN,GAAUA,EAAO5E,KACpBgH,EAAYvO,KAAKM,EAASiH,EAAMzP,IAUtC,OAJI6O,IAAWA,EAAQsH,OACrBxW,KAAKyW,MAAMK,EAAa5H,EAAQsH,OAG3BM,GAUTjW,EAAQqT,UAAUwC,cAAgB,SAAU5G,EAAMnB,GAChD,IAAKmB,EACH,MAAOA,EAGT,IAAIiH,KAEJ,IAAGzQ,MAAMC,QAAQoI,GACf,IAAK,GAAIY,KAASO,GACZA,EAAK3J,eAAeoJ,IAAoC,IAAzBZ,EAAO3H,QAAQuI,KAChDwH,EAAaxH,GAASO,EAAKP,QAI/B,KAAK,GAAIA,KAASO,GACZA,EAAK3J,eAAeoJ,IAAUZ,EAAOxI,eAAeoJ,KACtDwH,EAAapI,EAAOY,IAAUO,EAAKP,GAKzC,OAAOwH,IASTlW,EAAQqT,UAAUuC,MAAQ,SAAUxU,EAAOuU,GACzC,GAAI7V,EAAK8D,SAAS+R,GAAQ,CAExB,GAAIQ,GAAOR,CACXvU,GAAMgV,KAAK,SAAUrR,EAAGa,GACtB,GAAIyQ,GAAKtR,EAAEoR,GACPG,EAAK1Q,EAAEuQ,EACX,OAAQE,GAAKC,EAAM,EAAWA,EAALD,EAAW,GAAK,QAGxC,CAAA,GAAqB,kBAAVV,GAOd,KAAM,IAAI9P,WAAU,uCALpBzE,GAAMgV,KAAKT,KAgBf3V,EAAQqT,UAAUkD,OAAS,SAAU/W,EAAIyU,GACvC,GACIjP,GAAGC,EAAKuR,EADRC,IAGJ,IAAIhR,MAAMC,QAAQlG,GAChB,IAAKwF,EAAI,EAAGC,EAAMzF,EAAG2F,OAAYF,EAAJD,EAASA,IACpCwR,EAAYrX,KAAKuX,QAAQlX,EAAGwF,IACX,MAAbwR,GACFC,EAAW/O,KAAK8O,OAKpBA,GAAYrX,KAAKuX,QAAQlX,GACR,MAAbgX,GACFC,EAAW/O,KAAK8O,EAQpB,OAJIC,GAAWtR,QACbhG,KAAK4U,SAAS,UAAW3S,MAAOqV,GAAaxC,GAGxCwC,GASTzW,EAAQqT,UAAUqD,QAAU,SAAUlX,GACpC,GAAIM,EAAKoD,SAAS1D,IAAOM,EAAK8D,SAASpE,IACrC,GAAIL,KAAK2T,MAAMtT,GAGb,aAFOL,MAAK2T,MAAMtT,GAClBL,KAAKgG,SACE3F,MAGN,IAAIA,YAAcuG,QAAQ,CAC7B,GAAI0P,GAASjW,EAAGL,KAAK4T,SACrB,IAAI0C,GAAUtW,KAAK2T,MAAM2C,GAGvB,aAFOtW,MAAK2T,MAAM2C,GAClBtW,KAAKgG,SACEsQ,EAGX,MAAO,OAQTzV,EAAQqT,UAAUsD,MAAQ,SAAU1C,GAClC,GAAIoB,GAAMtP,OAAOiH,KAAK7N,KAAK2T,MAO3B,OALA3T,MAAK2T,SACL3T,KAAKgG,OAAS,EAEdhG,KAAK4U,SAAS,UAAW3S,MAAOiU,GAAMpB,GAE/BoB,GAQTrV,EAAQqT,UAAU9P,IAAM,SAAUmL,GAChC,GAAIkE,GAAOzT,KAAK2T,MACZvP,EAAM,KACNqT,EAAW,IAEf,KAAK,GAAIpX,KAAMoT,GACb,GAAIA,EAAKtN,eAAe9F,GAAK,CAC3B,GAAIyP,GAAO2D,EAAKpT,GACZqX,EAAY5H,EAAKP,EACJ,OAAbmI,KAAuBtT,GAAOsT,EAAYD,KAC5CrT,EAAM0L,EACN2H,EAAWC,GAKjB,MAAOtT,IAQTvD,EAAQqT,UAAU/P,IAAM,SAAUoL,GAChC,GAAIkE,GAAOzT,KAAK2T,MACZxP,EAAM,KACNwT,EAAW,IAEf,KAAK,GAAItX,KAAMoT,GACb,GAAIA,EAAKtN,eAAe9F,GAAK,CAC3B,GAAIyP,GAAO2D,EAAKpT,GACZqX,EAAY5H,EAAKP,EACJ,OAAbmI,KAAuBvT,GAAmBwT,EAAZD,KAChCvT,EAAM2L,EACN6H,EAAWD,GAKjB,MAAOvT,IAUTtD,EAAQqT,UAAU0D,SAAW,SAAUrI,GACrC,GAII1J,GAJA4N,EAAOzT,KAAK2T,MACZkE,KACAC,EAAY9X,KAAK0T,SAASvM,MAAQnH,KAAK0T,SAASvM,KAAKoI,IAAU,KAC/DwI,EAAQ,CAGZ,KAAK,GAAI7R,KAAQuN,GACf,GAAIA,EAAKtN,eAAeD,GAAO,CAC7B,GAAI4J,GAAO2D,EAAKvN,GACZ5B,EAAQwL,EAAKP,GACbyI,GAAS,CACb,KAAKnS,EAAI,EAAOkS,EAAJlS,EAAWA,IACrB,GAAIgS,EAAOhS,IAAMvB,EAAO,CACtB0T,GAAS,CACT,OAGCA,GAAqBnR,SAAVvC,IACduT,EAAOE,GAASzT,EAChByT,KAKN,GAAID,EACF,IAAKjS,EAAI,EAAGA,EAAIgS,EAAO7R,OAAQH,IAC7BgS,EAAOhS,GAAKlF,EAAKuG,QAAQ2Q,EAAOhS,GAAIiS,EAIxC,OAAOD,IASThX,EAAQqT,UAAUiB,SAAW,SAAUrF,GACrC,GAAIzP,GAAKyP,EAAK9P,KAAK4T,SAEnB,IAAU/M,QAANxG,GAEF,GAAIL,KAAK2T,MAAMtT,GAEb,KAAM,IAAIuD,OAAM,iCAAmCvD,EAAK,uBAK1DA,GAAKM,EAAK2E,aACVwK,EAAK9P,KAAK4T,UAAYvT,CAGxB,IAAI+M,KACJ,KAAK,GAAImC,KAASO,GAChB,GAAIA,EAAK3J,eAAeoJ,GAAQ,CAC9B,GAAIuI,GAAY9X,KAAK8T,MAAMvE,EAC3BnC,GAAEmC,GAAS5O,EAAKuG,QAAQ4I,EAAKP,GAAQuI,GAMzC,MAHA9X,MAAK2T,MAAMtT,GAAM+M,EACjBpN,KAAKgG,SAEE3F,GAUTQ,EAAQqT,UAAUqC,SAAW,SAAUlW,EAAI4X,GACzC,GAAI1I,GAAOjL,EAGP4T,EAAMlY,KAAK2T,MAAMtT,EACrB,KAAK6X,EACH,MAAO,KAIT,IAAIC,KACJ,IAAIF,EACF,IAAK1I,IAAS2I,GACRA,EAAI/R,eAAeoJ,KACrBjL,EAAQ4T,EAAI3I,GACZ4I,EAAU5I,GAAS5O,EAAKuG,QAAQ5C,EAAO2T,EAAM1I,SAMjD,KAAKA,IAAS2I,GACRA,EAAI/R,eAAeoJ,KACrBjL,EAAQ4T,EAAI3I,GACZ4I,EAAU5I,GAASjL,EAIzB,OAAO6T,IAWTtX,EAAQqT,UAAU8B,YAAc,SAAUlG,GACxC,GAAIzP,GAAKyP,EAAK9P,KAAK4T,SACnB,IAAU/M,QAANxG,EACF,KAAM,IAAIuD,OAAM,6CAA+CwU,KAAKC,UAAUvI,GAAQ,IAExF,IAAI1C,GAAIpN,KAAK2T,MAAMtT,EACnB,KAAK+M,EAEH,KAAM,IAAIxJ,OAAM,uCAAyCvD,EAAK,SAIhE,KAAK,GAAIkP,KAASO,GAChB,GAAIA,EAAK3J,eAAeoJ,GAAQ,CAC9B,GAAIuI,GAAY9X,KAAK8T,MAAMvE,EAC3BnC,GAAEmC,GAAS5O,EAAKuG,QAAQ4I,EAAKP,GAAQuI,GAIzC,MAAOzX,IASTQ,EAAQqT,UAAUmB,gBAAkB,SAAUiD,GAE5C,IAAK,GADDlD,MACKK,EAAM,EAAGC,EAAO4C,EAAUC,qBAA4B7C,EAAND,EAAYA,IACnEL,EAAQK,GAAO6C,EAAUE,YAAY/C,IAAQ6C,EAAUG,eAAehD,EAExE,OAAOL,IAUTvU,EAAQqT,UAAUyC,WAAa,SAAU2B,EAAWlD,EAAStF,GAG3D,IAAK,GAFDwF,GAAMgD,EAAUI,SAEXjD,EAAM,EAAGC,EAAON,EAAQpP,OAAc0P,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB6C,GAAUK,SAASrD,EAAKG,EAAK3F,EAAKP,MAItC1P,EAAOD,QAAUiB,GAKb,SAAShB,EAAQD,EAASM,GAe9B,QAASY,GAAU2S,EAAMvE,GACvBlP,KAAK2T,MAAQ,KACb3T,KAAK4Y,QACL5Y,KAAKgG,OAAS,EACdhG,KAAK0T,SAAWxE,MAChBlP,KAAK4T,SAAW,KAChB5T,KAAK+T,eAEL,IAAImB,GAAKlV,IACTA,MAAKqJ,SAAW,WACd6L,EAAG2D,SAASC,MAAM5D,EAAInP,YAGxB/F,KAAK+Y,QAAQtF,GA1Bf,GAAI9S,GAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,EAmClCY,GAASoT,UAAU6E,QAAU,SAAUtF,GACrC,GAAIyC,GAAKrQ,EAAGC,CAEZ,IAAI9F,KAAK2T,MAAO,CAEV3T,KAAK2T,MAAMgB,aACb3U,KAAK2T,MAAMgB,YAAY,IAAK3U,KAAKqJ,UAInC6M,IACA,KAAK,GAAI7V,KAAML,MAAK4Y,KACd5Y,KAAK4Y,KAAKzS,eAAe9F,IAC3B6V,EAAI3N,KAAKlI,EAGbL,MAAK4Y,QACL5Y,KAAKgG,OAAS,EACdhG,KAAK4U,SAAS,UAAW3S,MAAOiU,IAKlC,GAFAlW,KAAK2T,MAAQF,EAETzT,KAAK2T,MAAO,CAQd,IANA3T,KAAK4T,SAAW5T,KAAK0T,SAASG,SACzB7T,KAAK2T,OAAS3T,KAAK2T,MAAMzE,SAAWlP,KAAK2T,MAAMzE,QAAQ2E,SACxD,KAGJqC,EAAMlW,KAAK2T,MAAMiD,QAAQlC,OAAQ1U,KAAK0T,UAAY1T,KAAK0T,SAASgB,SAC3D7O,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACT7F,KAAK4Y,KAAKvY,IAAM,CAElBL,MAAKgG,OAASkQ,EAAIlQ,OAClBhG,KAAK4U,SAAS,OAAQ3S,MAAOiU,IAGzBlW,KAAK2T,MAAMW,IACbtU,KAAK2T,MAAMW,GAAG,IAAKtU,KAAKqJ,YAS9BvI,EAASoT,UAAU8E,QAAU,WAQ3B,IAAK,GAPD3Y,GACA6V,EAAMlW,KAAK2T,MAAMiD,QAAQlC,OAAQ1U,KAAK0T,UAAY1T,KAAK0T,SAASgB,SAChEuE,KACAC,KACAC,KAGKtT,EAAI,EAAGA,EAAIqQ,EAAIlQ,OAAQH,IAC9BxF,EAAK6V,EAAIrQ,GACToT,EAAO5Y,IAAM,EACRL,KAAK4Y,KAAKvY,KACb6Y,EAAM3Q,KAAKlI,GACXL,KAAK4Y,KAAKvY,IAAM,EAChBL,KAAKgG,SAKT,KAAK3F,IAAML,MAAK4Y,KACV5Y,KAAK4Y,KAAKzS,eAAe9F,KACtB4Y,EAAO5Y,KACV8Y,EAAQ5Q,KAAKlI,SACNL,MAAK4Y,KAAKvY,GACjBL,KAAKgG,UAMPkT,GAAMlT,QACRhG,KAAK4U,SAAS,OAAQ3S,MAAOiX,IAE3BC,EAAQnT,QACVhG,KAAK4U,SAAS,UAAW3S,MAAOkX,KAsCpCrY,EAASoT,UAAU+B,IAAM,WACvB,GAGIC,GAAKhH,EAASuE,EAHdyB,EAAKlV,KAILmW,EAAYxV,EAAK6G,QAAQzB,UAAU,GACtB,WAAboQ,GAAsC,UAAbA,GAAsC,SAAbA,GAEpDD,EAAMnQ,UAAU,GAChBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,KAIjBmJ,EAAUnJ,UAAU,GACpB0N,EAAO1N,UAAU,GAInB,IAAIqT,GAAczY,EAAKgF,UAAW3F,KAAK0T,SAAUxE,EAG7ClP,MAAK0T,SAASgB,QAAUxF,GAAWA,EAAQwF,SAC7C0E,EAAY1E,OAAS,SAAU5E,GAC7B,MAAOoF,GAAGxB,SAASgB,OAAO5E,IAASZ,EAAQwF,OAAO5E,IAKtD,IAAIuJ,KAOJ,OANWxS,SAAPqP,GACFmD,EAAa9Q,KAAK2N,GAEpBmD,EAAa9Q,KAAK6Q,GAClBC,EAAa9Q,KAAKkL,GAEXzT,KAAK2T,OAAS3T,KAAK2T,MAAMsC,IAAI6C,MAAM9Y,KAAK2T,MAAO0F,IAWxDvY,EAASoT,UAAU0C,OAAS,SAAU1H,GACpC,GAAIgH,EAEJ,IAAIlW,KAAK2T,MAAO,CACd,GACIe,GADA4E,EAAgBtZ,KAAK0T,SAASgB,MAK9BA,GAFAxF,GAAWA,EAAQwF,OACjB4E,EACO,SAAUxJ,GACjB,MAAOwJ,GAAcxJ,IAASZ,EAAQwF,OAAO5E,IAItCZ,EAAQwF,OAIV4E,EAGXpD,EAAMlW,KAAK2T,MAAMiD,QACflC,OAAQA,EACR8B,MAAOtH,GAAWA,EAAQsH,YAI5BN,KAGF,OAAOA,IAQTpV,EAASoT,UAAU2C,WAAa,WAE9B,IADA,GAAI0C,GAAUvZ,KACPuZ,YAAmBzY,IACxByY,EAAUA,EAAQ5F,KAEpB,OAAO4F,IAAW,MAYpBzY,EAASoT,UAAU2E,SAAW,SAAUhP,EAAOgL,EAAQC,GACrD,GAAIjP,GAAGC,EAAKzF,EAAIyP,EACZoG,EAAMrB,GAAUA,EAAO5S,MACvBwR,EAAOzT,KAAK2T,MACZmC,KACAoD,KACAM,KACAL,IAEJ,IAAIjD,GAAOzC,EAAM,CACf,OAAQ5J,GACN,IAAK,MAEH,IAAKhE,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACTiK,EAAO9P,KAAKiW,IAAI5V,GACZyP,IACF9P,KAAK4Y,KAAKvY,IAAM,EAChB6Y,EAAM3Q,KAAKlI,GAIf,MAEF,KAAK,SAGH,IAAKwF,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACTiK,EAAO9P,KAAKiW,IAAI5V,GAEZyP,EACE9P,KAAK4Y,KAAKvY,IACZmZ,EAAQjR,KAAKlI,GACbyV,EAAYvN,KAAKsM,EAAOpB,KAAK5N,MAG7B7F,KAAK4Y,KAAKvY,IAAM,EAChB6Y,EAAM3Q,KAAKlI,IAITL,KAAK4Y,KAAKvY,WACLL,MAAK4Y,KAAKvY,GACjB8Y,EAAQ5Q,KAAKlI,GAQnB,MAEF,KAAK,SAEH,IAAKwF,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCxF,EAAK6V,EAAIrQ,GACL7F,KAAK4Y,KAAKvY,WACLL,MAAK4Y,KAAKvY,GACjB8Y,EAAQ5Q,KAAKlI,IAOrBL,KAAKgG,QAAUkT,EAAMlT,OAASmT,EAAQnT,OAElCkT,EAAMlT,QACRhG,KAAK4U,SAAS,OAAQ3S,MAAOiX,GAAQpE,GAEnC0E,EAAQxT,QACVhG,KAAK4U,SAAS,UAAW3S,MAAOuX,EAAS/F,KAAMqC,GAAchB,GAE3DqE,EAAQnT,QACVhG,KAAK4U,SAAS,UAAW3S,MAAOkX,GAAUrE,KAMhDhU,EAASoT,UAAUI,GAAKzT,EAAQqT,UAAUI,GAC1CxT,EAASoT,UAAUO,IAAM5T,EAAQqT,UAAUO,IAC3C3T,EAASoT,UAAUU,SAAW/T,EAAQqT,UAAUU,SAGhD9T,EAASoT,UAAUM,UAAY1T,EAASoT,UAAUI,GAClDxT,EAASoT,UAAUS,YAAc7T,EAASoT,UAAUO,IAEpD5U,EAAOD,QAAUkB,GAIb,SAASjB,GAeb,QAASkB,GAAMmO,GAEblP,KAAKyZ,MAAQ,KACbzZ,KAAKoE,IAAMsV,IAGX1Z,KAAKoU,UACLpU,KAAK2Z,SAAW,KAChB3Z,KAAK4Z,UAAY,KAEjB5Z,KAAKiU,WAAW/E,GAgBlBnO,EAAMmT,UAAUD,WAAa,SAAU/E,GACjCA,GAAoC,mBAAlBA,GAAQuK,QAC5BzZ,KAAKyZ,MAAQvK,EAAQuK,OAEnBvK,GAAkC,mBAAhBA,GAAQ9K,MAC5BpE,KAAKoE,IAAM8K,EAAQ9K,KAGrBpE,KAAK6Z,kBAsBP9Y,EAAM4E,OAAS,SAAU3B,EAAQkL,GAC/B,GAAIiF,GAAQ,GAAIpT,GAAMmO,EAEtB,IAAqBrI,SAAjB7C,EAAO8V,MACT,KAAM,IAAIlW,OAAM,6CAElBI,GAAO8V,MAAQ,WACb3F,EAAM2F,QAGR,IAAIC,KACF/C,KAAM,QACNgD,SAAUnT,QAGZ,IAAIqI,GAAWA,EAAQjE,QACrB,IAAK,GAAIpF,GAAI,EAAGA,EAAIqJ,EAAQjE,QAAQjF,OAAQH,IAAK,CAC/C,GAAImR,GAAO9H,EAAQjE,QAAQpF,EAC3BkU,GAAQxR,MACNyO,KAAMA,EACNgD,SAAUhW,EAAOgT,KAEnB7C,EAAMlJ,QAAQjH,EAAQgT,GAS1B,MALA7C,GAAMyF,WACJ5V,OAAQA,EACR+V,QAASA,GAGJ5F,GAOTpT,EAAMmT,UAAUG,QAAU,WAGxB,GAFArU,KAAK8Z,QAED9Z,KAAK4Z,UAAW,CAGlB,IAAK,GAFD5V,GAAShE,KAAK4Z,UAAU5V,OACxB+V,EAAU/Z,KAAK4Z,UAAUG,QACpBlU,EAAI,EAAGA,EAAIkU,EAAQ/T,OAAQH,IAAK,CACvC,GAAIoU,GAASF,EAAQlU,EACjBoU,GAAOD,SACThW,EAAOiW,EAAOjD,MAAQiD,EAAOD,eAGtBhW,GAAOiW,EAAOjD,MAGzBhX,KAAK4Z,UAAY,OASrB7Y,EAAMmT,UAAUjJ,QAAU,SAASjH,EAAQiW,GACzC,GAAI/E,GAAKlV,KACLga,EAAWhW,EAAOiW,EACtB,KAAKD,EACH,KAAM,IAAIpW,OAAM,UAAYqW,EAAS,aAGvCjW,GAAOiW,GAAU,WAGf,IAAK,GADDC,MACKrU,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IACpCqU,EAAKrU,GAAKE,UAAUF,EAItBqP,GAAGf,OACD+F,KAAMA,EACNC,GAAIH,EACJI,QAASpa,SASfe,EAAMmT,UAAUC,MAAQ,SAASkG,GAE7Bra,KAAKoU,OAAO7L,KADO,kBAAV8R,IACSF,GAAIE,GAGLA,GAGnBra,KAAK6Z,kBAOP9Y,EAAMmT,UAAU2F,eAAiB,WAQ/B,GANI7Z,KAAKoU,OAAOpO,OAAShG,KAAKoE,KAC5BpE,KAAK8Z,QAIPQ,aAAata,KAAK2Z,UACd3Z,KAAKmU,MAAMnO,OAAS,GAA2B,gBAAfhG,MAAKyZ,MAAoB,CAC3D,GAAIvE,GAAKlV,IACTA,MAAK2Z,SAAWY,WAAW,WACzBrF,EAAG4E,SACF9Z,KAAKyZ,SAOZ1Y,EAAMmT,UAAU4F,MAAQ,WACtB,KAAO9Z,KAAKoU,OAAOpO,OAAS,GAAG,CAC7B,GAAIqU,GAAQra,KAAKoU,OAAOrC,OACxBsI,GAAMF,GAAGrB,MAAMuB,EAAMD,SAAWC,EAAMF,GAAIE,EAAMH,YAIpDra,EAAOD,QAAUmB,GAKb,SAASlB,EAAQD,EAASM,GAwB9B,QAASc,GAAQwZ,EAAW/G,EAAMvE,GAChC,KAAMlP,eAAgBgB,IACpB,KAAM,IAAIyZ,aAAY,mDAIxBza,MAAK0a,iBAAmBF,EACxBxa,KAAKsT,MAAQ,QACbtT,KAAKuT,OAAS,QACdvT,KAAK2a,OAAS,GACd3a,KAAK4a,eAAiB,MACtB5a,KAAK6a,eAAiB,MAEtB7a,KAAK8a,OAAS,IACd9a,KAAK+a,OAAS,IACd/a,KAAKgb,OAAS,GAEd,IAAIC,GAAc,SAASzO,GAAK,MAAOA,GACvCxM,MAAKkb,YAAcD,EACnBjb,KAAKmb,YAAcF,EACnBjb,KAAKob,YAAcH,EAEnBjb,KAAKqb,YAAc,OACnBrb,KAAKsb,YAAc,QAEnBtb,KAAK0N,MAAQ1M,EAAQua,MAAMC,IAC3Bxb,KAAKyb,iBAAkB,EACvBzb,KAAK0b,UAAW,EAChB1b,KAAK2b,iBAAkB,EACvB3b,KAAK4b,YAAa,EAClB5b,KAAK6b,gBAAiB,EACtB7b,KAAK8b,aAAc,EACnB9b,KAAK+b,cAAgB,GAErB/b,KAAKgc,kBAAoB,IACzBhc,KAAKic,kBAAmB,EAExBjc,KAAKkc,OAAS,GAAIhb,GAClBlB,KAAKmc,IAAM,GAAI9a,GAAQ,EAAG,EAAG,IAE7BrB,KAAKsY,UAAY,KACjBtY,KAAKoc,WAAa,KAGlBpc,KAAKqc,KAAOxV,OACZ7G,KAAKsc,KAAOzV,OACZ7G,KAAKuc,KAAO1V,OACZ7G,KAAKwc,SAAW3V,OAChB7G,KAAKyc,UAAY5V,OAEjB7G,KAAK0c,KAAO,EACZ1c,KAAK2c,MAAQ9V,OACb7G,KAAK4c,KAAO,EACZ5c,KAAK6c,KAAO,EACZ7c,KAAK8c,MAAQjW,OACb7G,KAAK+c,KAAO,EACZ/c,KAAKgd,KAAO,EACZhd,KAAKid,MAAQpW,OACb7G,KAAKkd,KAAO,EACZld,KAAKmd,SAAW,EAChBnd,KAAKod,SAAW,EAChBpd,KAAKqd,UAAY,EACjBrd,KAAKsd,UAAY,EAIjBtd,KAAKud,UAAY,UACjBvd,KAAKwd,UAAY,UACjBxd,KAAKyd,SAAW,UAChBzd,KAAK0d,eAAiB,UAGtB1d,KAAK8O,SAGL9O,KAAKiU,WAAW/E,GAGZuE,GACFzT,KAAK+Y,QAAQtF,GAknEjB,QAASkK,GAAW9T,GAClB,MAAI,WAAaA,GAAcA,EAAM+T,QAC9B/T,EAAMgU,cAAc,IAAMhU,EAAMgU,cAAc,GAAGD,SAAW,EAQrE,QAASE,GAAWjU,GAClB,MAAI,WAAaA,GAAcA,EAAMkU,QAC9BlU,EAAMgU,cAAc,IAAMhU,EAAMgU,cAAc,GAAGE,SAAW,EAnuErE,GAAIC,GAAU9d,EAAoB,IAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BS,EAAOT,EAAoB,GAC3BmB,EAAUnB,EAAoB,IAC9BkB,EAAUlB,EAAoB,GAC9BgB,EAAShB,EAAoB,GAC7BiB,EAASjB,EAAoB,GAC7BoB,EAASpB,EAAoB,IAC7BqB,EAAarB,EAAoB,GAiGrC8d,GAAQhd,EAAQkT,WAKhBlT,EAAQkT,UAAU+J,UAAY,WAC5Bje,KAAKuE,MAAQ,GAAIlD,GAAQ,GAAKrB,KAAK4c,KAAO5c,KAAK0c,MAC7C,GAAK1c,KAAK+c,KAAO/c,KAAK6c,MACtB,GAAK7c,KAAKkd,KAAOld,KAAKgd,OAGpBhd,KAAK2b,kBACH3b,KAAKuE,MAAMiO,EAAIxS,KAAKuE,MAAMkO,EAE5BzS,KAAKuE,MAAMkO,EAAIzS,KAAKuE,MAAMiO,EAI1BxS,KAAKuE,MAAMiO,EAAIxS,KAAKuE,MAAMkO,GAK9BzS,KAAKuE,MAAM2Z,GAAKle,KAAK+b,cAIrB/b,KAAKuE,MAAMD,MAAQ,GAAKtE,KAAKod,SAAWpd,KAAKmd,SAG7C,IAAIgB,IAAWne,KAAK4c,KAAO5c,KAAK0c,MAAQ,EAAI1c,KAAKuE,MAAMiO,EACnD4L,GAAWpe,KAAK+c,KAAO/c,KAAK6c,MAAQ,EAAI7c,KAAKuE,MAAMkO,EACnD4L,GAAWre,KAAKkd,KAAOld,KAAKgd,MAAQ,EAAIhd,KAAKuE,MAAM2Z,CACvDle,MAAKkc,OAAOoC,eAAeH,EAASC,EAASC,IAU/Crd,EAAQkT,UAAUqK,eAAiB,SAASC,GAC1C,GAAIC,GAAcze,KAAK0e,2BAA2BF,EAClD,OAAOxe,MAAK2e,4BAA4BF,IAW1Czd,EAAQkT,UAAUwK,2BAA6B,SAASF,GACtD,GAAII,GAAKJ,EAAQhM,EAAIxS,KAAKuE,MAAMiO,EAC9BqM,EAAKL,EAAQ/L,EAAIzS,KAAKuE,MAAMkO,EAC5BqM,EAAKN,EAAQN,EAAIle,KAAKuE,MAAM2Z,EAE5Ba,EAAK/e,KAAKkc,OAAO8C,oBAAoBxM,EACrCyM,EAAKjf,KAAKkc,OAAO8C,oBAAoBvM,EACrCyM,EAAKlf,KAAKkc,OAAO8C,oBAAoBd,EAGrCiB,EAAQ3a,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoB7M,GACjD8M,EAAQ9a,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoB7M,GACjDgN,EAAQhb,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoB5M,GACjDgN,EAAQjb,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoB5M,GACjDiN,EAAQlb,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoBnB,GACjDyB,EAAQnb,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoBnB,GAGjD0B,EAAKH,GAASC,GAASb,EAAKI,GAAMU,GAASf,EAAKG,IAAOS,GAASV,EAAKI,GACrEW,EAAKV,GAASM,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQO,GAASK,GAASd,EAAKI,GAAMS,GAASd,EAAGG,IAC9He,EAAKR,GAASG,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQI,GAASQ,GAASd,EAAKI,GAAMS,GAASd,EAAGG,GAEhI,OAAO,IAAI1d,GAAQue,EAAIC,EAAIC,IAU7B9e,EAAQkT,UAAUyK,4BAA8B,SAASF,GACvD,GAQIsB,GACAC,EATAC,EAAKjgB,KAAKmc,IAAI3J,EAChB0N,EAAKlgB,KAAKmc,IAAI1J,EACd0N,EAAKngB,KAAKmc,IAAI+B,EACd0B,EAAKnB,EAAYjM,EACjBqN,EAAKpB,EAAYhM,EACjBqN,EAAKrB,EAAYP,CAgBnB,OAXIle,MAAKyb,iBACPsE,GAAMH,EAAKK,IAAOE,EAAKL,GACvBE,GAAMH,EAAKK,IAAOC,EAAKL,KAGvBC,EAAKH,IAAOO,EAAKngB,KAAKkc,OAAOkE,gBAC7BJ,EAAKH,IAAOM,EAAKngB,KAAKkc,OAAOkE,iBAKxB,GAAIhf,GACTpB,KAAKqgB,QAAUN,EAAK/f,KAAKsgB,MAAMC,OAAOC,YACtCxgB,KAAKygB,QAAUT,EAAKhgB,KAAKsgB,MAAMC,OAAOC,cAO1Cxf,EAAQkT,UAAUwM,oBAAsB,SAASC,GAC/C,GAAIC,GAAO,QACPC,EAAS,OACTC,EAAc,CAElB,IAAgC,gBAAtB,GACRF,EAAOD,EACPE,EAAS,OACTC,EAAc,MAEX,IAAgC,gBAAtB,GACgBja,SAAzB8Z,EAAgBC,OAAuBA,EAAOD,EAAgBC,MACnC/Z,SAA3B8Z,EAAgBE,SAAyBA,EAASF,EAAgBE,QAClCha,SAAhC8Z,EAAgBG,cAA2BA,EAAcH,EAAgBG,iBAE1E,IAAyBja,SAApB8Z,EAIR,KAAM,qCAGR3gB,MAAKsgB,MAAM5S,MAAMiT,gBAAkBC,EACnC5gB,KAAKsgB,MAAM5S,MAAMqT,YAAcF,EAC/B7gB,KAAKsgB,MAAM5S,MAAMsT,YAAcF,EAAc,KAC7C9gB,KAAKsgB,MAAM5S,MAAMuT,YAAc,SAKjCjgB,EAAQua,OACN2F,IAAK,EACLC,SAAU,EACVC,QAAS,EACT5F,IAAM,EACN6F,QAAU,EACVC,SAAU,EACVC,QAAS,EACTC,KAAO,EACPC,KAAM,EACNC,QAAU,GASZ1gB,EAAQkT,UAAUyN,gBAAkB,SAASC,GAC3C,OAAQA,GACN,IAAK,MAAW,MAAO5gB,GAAQua,MAAMC,GACrC,KAAK,WAAa,MAAOxa,GAAQua,MAAM8F,OACvC,KAAK,YAAe,MAAOrgB,GAAQua,MAAM+F,QACzC,KAAK,WAAa,MAAOtgB,GAAQua,MAAMgG,OACvC,KAAK,OAAW,MAAOvgB,GAAQua,MAAMkG,IACrC,KAAK,OAAW,MAAOzgB,GAAQua,MAAMiG,IACrC,KAAK,UAAa,MAAOxgB,GAAQua,MAAMmG,OACvC,KAAK,MAAW,MAAO1gB,GAAQua,MAAM2F,GACrC,KAAK,YAAe,MAAOlgB,GAAQua,MAAM4F,QACzC,KAAK,WAAa,MAAOngB,GAAQua,MAAM6F,QAGzC,MAAO,IAQTpgB,EAAQkT,UAAU2N,wBAA0B,SAASpO,GACnD,GAAIzT,KAAK0N,QAAU1M,EAAQua,MAAMC,KAC/Bxb,KAAK0N,QAAU1M,EAAQua,MAAM8F,SAC7BrhB,KAAK0N,QAAU1M,EAAQua,MAAMkG,MAC7BzhB,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC7BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,SAC7B1hB,KAAK0N,QAAU1M,EAAQua,MAAM2F,IAE7BlhB,KAAKqc,KAAO,EACZrc,KAAKsc,KAAO,EACZtc,KAAKuc,KAAO,EACZvc,KAAKwc,SAAW3V,OAEZ4M,EAAK8E,qBAAuB,IAC9BvY,KAAKyc,UAAY,OAGhB,CAAA,GAAIzc,KAAK0N,QAAU1M,EAAQua,MAAM+F,UACpCthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,SAC7BvhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAY7B,KAAM,kBAAoBphB,KAAK0N,MAAQ,GAVvC1N,MAAKqc,KAAO,EACZrc,KAAKsc,KAAO,EACZtc,KAAKuc,KAAO,EACZvc,KAAKwc,SAAW,EAEZ/I,EAAK8E,qBAAuB,IAC9BvY,KAAKyc,UAAY,KAQvBzb,EAAQkT,UAAUsB,gBAAkB,SAAS/B,GAC3C,MAAOA,GAAKzN,QAIdhF,EAAQkT,UAAUqE,mBAAqB,SAAS9E,GAC9C,GAAIqO,GAAU,CACd,KAAK,GAAIC,KAAUtO,GAAK,GAClBA,EAAK,GAAGtN,eAAe4b,IACzBD,GAGJ,OAAOA,IAIT9gB,EAAQkT,UAAU8N,kBAAoB,SAASvO,EAAMsO,GAEnD,IAAK,GADDE,MACKpc,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IACgB,IAA3Coc,EAAejb,QAAQyM,EAAK5N,GAAGkc,KACjCE,EAAe1Z,KAAKkL,EAAK5N,GAAGkc,GAGhC,OAAOE,IAITjhB,EAAQkT,UAAUgO,eAAiB,SAASzO,EAAKsO,GAE/C,IAAK,GADDI,IAAUhe,IAAIsP,EAAK,GAAGsO,GAAQ3d,IAAIqP,EAAK,GAAGsO,IACrClc,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IAC3Bsc,EAAOhe,IAAMsP,EAAK5N,GAAGkc,KAAWI,EAAOhe,IAAMsP,EAAK5N,GAAGkc,IACrDI,EAAO/d,IAAMqP,EAAK5N,GAAGkc,KAAWI,EAAO/d,IAAMqP,EAAK5N,GAAGkc,GAE3D,OAAOI,IASTnhB,EAAQkT,UAAUkO,gBAAkB,SAAUC,GAC5C,GAAInN,GAAKlV,IAOT;GAJIA,KAAKuZ,SACPvZ,KAAKuZ,QAAQ9E,IAAI,IAAKzU,KAAKsiB,WAGbzb,SAAZwb,EAAJ,CAGI/b,MAAMC,QAAQ8b,KAChBA,EAAU,GAAIxhB,GAAQwhB,GAGxB,IAAI5O,EACJ,MAAI4O,YAAmBxhB,IAAWwhB,YAAmBvhB,IAInD,KAAM,IAAI8C,OAAM,uCAGlB,IANE6P,EAAO4O,EAAQpM,MAME,GAAfxC,EAAKzN,OAAT,CAGAhG,KAAKuZ,QAAU8I,EACfriB,KAAKsY,UAAY7E,EAGjBzT,KAAKsiB,UAAY,WACfpN,EAAG6D,QAAQ7D,EAAGqE,UAEhBvZ,KAAKuZ,QAAQjF,GAAG,IAAKtU,KAAKsiB,WAS1BtiB,KAAKqc,KAAO,IACZrc,KAAKsc,KAAO,IACZtc,KAAKuc,KAAO,IACZvc,KAAKwc,SAAW,QAChBxc,KAAKyc,UAAY,SAKbhJ,EAAK,GAAGtN,eAAe,WACDU,SAApB7G,KAAKuiB,aACPviB,KAAKuiB,WAAa,GAAIphB,GAAOkhB,EAASriB,KAAKyc,UAAWzc,MACtDA,KAAKuiB,WAAWC,kBAAkB,WAAYtN,EAAGuN,WAKrD,IAAIC,GAAW1iB,KAAK0N,OAAS1M,EAAQua,MAAM2F,KACzClhB,KAAK0N,OAAS1M,EAAQua,MAAM4F,UAC5BnhB,KAAK0N,OAAS1M,EAAQua,MAAM6F,OAG9B,IAAIsB,EAAU,CACZ,GAA8B7b,SAA1B7G,KAAK2iB,iBACP3iB,KAAKqd,UAAYrd,KAAK2iB,qBAEnB,CACH,GAAIC,GAAQ5iB,KAAKgiB,kBAAkBvO,EAAKzT,KAAKqc,KAC7Crc,MAAKqd,UAAauF,EAAM,GAAKA,EAAM,IAAO,EAG5C,GAA8B/b,SAA1B7G,KAAK6iB,iBACP7iB,KAAKsd,UAAYtd,KAAK6iB,qBAEnB,CACH,GAAIC,GAAQ9iB,KAAKgiB,kBAAkBvO,EAAKzT,KAAKsc,KAC7Ctc,MAAKsd,UAAawF,EAAM,GAAKA,EAAM,IAAO,GAK9C,GAAIC,GAAS/iB,KAAKkiB,eAAezO,EAAKzT,KAAKqc,KACvCqG,KACFK,EAAO5e,KAAOnE,KAAKqd,UAAY,EAC/B0F,EAAO3e,KAAOpE,KAAKqd,UAAY,GAEjCrd,KAAK0c,KAA6B7V,SAArB7G,KAAKgjB,YAA6BhjB,KAAKgjB,YAAcD,EAAO5e,IACzEnE,KAAK4c,KAA6B/V,SAArB7G,KAAKijB,YAA6BjjB,KAAKijB,YAAcF,EAAO3e,IACrEpE,KAAK4c,MAAQ5c,KAAK0c,OAAM1c,KAAK4c,KAAO5c,KAAK0c,KAAO,GACpD1c,KAAK2c,MAA+B9V,SAAtB7G,KAAKkjB,aAA8BljB,KAAKkjB,cAAgBljB,KAAK4c,KAAK5c,KAAK0c,MAAM,CAE3F,IAAIyG,GAASnjB,KAAKkiB,eAAezO,EAAKzT,KAAKsc,KACvCoG,KACFS,EAAOhf,KAAOnE,KAAKsd,UAAY,EAC/B6F,EAAO/e,KAAOpE,KAAKsd,UAAY,GAEjCtd,KAAK6c,KAA6BhW,SAArB7G,KAAKojB,YAA6BpjB,KAAKojB,YAAcD,EAAOhf,IACzEnE,KAAK+c,KAA6BlW,SAArB7G,KAAKqjB,YAA6BrjB,KAAKqjB,YAAcF,EAAO/e,IACrEpE,KAAK+c,MAAQ/c,KAAK6c,OAAM7c,KAAK+c,KAAO/c,KAAK6c,KAAO,GACpD7c,KAAK8c,MAA+BjW,SAAtB7G,KAAKsjB,aAA8BtjB,KAAKsjB,cAAgBtjB,KAAK+c,KAAK/c,KAAK6c,MAAM,CAE3F,IAAI0G,GAASvjB,KAAKkiB,eAAezO,EAAKzT,KAAKuc,KAM3C,IALAvc,KAAKgd,KAA6BnW,SAArB7G,KAAKwjB,YAA6BxjB,KAAKwjB,YAAcD,EAAOpf,IACzEnE,KAAKkd,KAA6BrW,SAArB7G,KAAKyjB,YAA6BzjB,KAAKyjB,YAAcF,EAAOnf,IACrEpE,KAAKkd,MAAQld,KAAKgd,OAAMhd,KAAKkd,KAAOld,KAAKgd,KAAO,GACpDhd,KAAKid,MAA+BpW,SAAtB7G,KAAK0jB,aAA8B1jB,KAAK0jB,cAAgB1jB,KAAKkd,KAAKld,KAAKgd,MAAM,EAErEnW,SAAlB7G,KAAKwc,SAAwB,CAC/B,GAAImH,GAAa3jB,KAAKkiB,eAAezO,EAAKzT,KAAKwc,SAC/Cxc,MAAKmd,SAAqCtW,SAAzB7G,KAAK4jB,gBAAiC5jB,KAAK4jB,gBAAkBD,EAAWxf,IACzFnE,KAAKod,SAAqCvW,SAAzB7G,KAAK6jB,gBAAiC7jB,KAAK6jB,gBAAkBF,EAAWvf,IACrFpE,KAAKod,UAAYpd,KAAKmd,WAAUnd,KAAKod,SAAWpd,KAAKmd,SAAW,GAItEnd,KAAKie,eAUPjd,EAAQkT,UAAU4P,eAAiB,SAAUrQ,GAE3C,GAAIjB,GAAGC,EAAG5M,EAAGqY,EAAG6F,EAAKnR,EAEjBwJ,IAEJ,IAAIpc,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC/BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,QAAS,CAKtC,GAAIkB,MACAE,IACJ,KAAKjd,EAAI,EAAGA,EAAI7F,KAAKwV,gBAAgB/B,GAAO5N,IAC1C2M,EAAIiB,EAAK5N,GAAG7F,KAAKqc,OAAS,EAC1B5J,EAAIgB,EAAK5N,GAAG7F,KAAKsc,OAAS,EAED,KAArBsG,EAAM5b,QAAQwL,IAChBoQ,EAAMra,KAAKiK,GAEY,KAArBsQ,EAAM9b,QAAQyL,IAChBqQ,EAAMva,KAAKkK,EAIf,IAAIuR,GAAa,SAAUpe,EAAGa,GAC5B,MAAOb,GAAIa,EAEbmc,GAAM3L,KAAK+M,GACXlB,EAAM7L,KAAK+M,EAGX,IAAIC,KACJ,KAAKpe,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IAAK,CAChC2M,EAAIiB,EAAK5N,GAAG7F,KAAKqc,OAAS,EAC1B5J,EAAIgB,EAAK5N,GAAG7F,KAAKsc,OAAS,EAC1B4B,EAAIzK,EAAK5N,GAAG7F,KAAKuc,OAAS,CAE1B,IAAI2H,GAAStB,EAAM5b,QAAQwL,GACvB2R,EAASrB,EAAM9b,QAAQyL,EAEA5L,UAAvBod,EAAWC,KACbD,EAAWC,MAGb,IAAI1F,GAAU,GAAInd,EAClBmd,GAAQhM,EAAIA,EACZgM,EAAQ/L,EAAIA,EACZ+L,EAAQN,EAAIA,EAEZ6F,KACAA,EAAInR,MAAQ4L,EACZuF,EAAIK,MAAQvd,OACZkd,EAAIM,OAASxd,OACbkd,EAAIO,OAAS,GAAIjjB,GAAQmR,EAAGC,EAAGzS,KAAKgd,MAEpCiH,EAAWC,GAAQC,GAAUJ,EAE7B3H,EAAW7T,KAAKwb,GAIlB,IAAKvR,EAAI,EAAGA,EAAIyR,EAAWje,OAAQwM,IACjC,IAAKC,EAAI,EAAGA,EAAIwR,EAAWzR,GAAGxM,OAAQyM,IAChCwR,EAAWzR,GAAGC,KAChBwR,EAAWzR,GAAGC,GAAG8R,WAAc/R,EAAIyR,EAAWje,OAAO,EAAKie,EAAWzR,EAAE,GAAGC,GAAK5L,OAC/Eod,EAAWzR,GAAGC,GAAG+R,SAAc/R,EAAIwR,EAAWzR,GAAGxM,OAAO,EAAKie,EAAWzR,GAAGC,EAAE,GAAK5L,OAClFod,EAAWzR,GAAGC,GAAGgS,WACdjS,EAAIyR,EAAWje,OAAO,GAAKyM,EAAIwR,EAAWzR,GAAGxM,OAAO,EACnDie,EAAWzR,EAAE,GAAGC,EAAE,GAClB5L,YAOV,KAAKhB,EAAI,EAAGA,EAAI4N,EAAKzN,OAAQH,IAC3B+M,EAAQ,GAAIvR,GACZuR,EAAMJ,EAAIiB,EAAK5N,GAAG7F,KAAKqc,OAAS,EAChCzJ,EAAMH,EAAIgB,EAAK5N,GAAG7F,KAAKsc,OAAS,EAChC1J,EAAMsL,EAAIzK,EAAK5N,GAAG7F,KAAKuc,OAAS,EAEV1V,SAAlB7G,KAAKwc,WACP5J,EAAMtO,MAAQmP,EAAK5N,GAAG7F,KAAKwc,WAAa,GAG1CuH,KACAA,EAAInR,MAAQA,EACZmR,EAAIO,OAAS,GAAIjjB,GAAQuR,EAAMJ,EAAGI,EAAMH,EAAGzS,KAAKgd,MAChD+G,EAAIK,MAAQvd,OACZkd,EAAIM,OAASxd,OAEbuV,EAAW7T,KAAKwb,EAIpB,OAAO3H,IASTpb,EAAQkT,UAAUpF,OAAS,WAEzB,KAAO9O,KAAK0a,iBAAiBgK,iBAC3B1kB,KAAK0a,iBAAiB9I,YAAY5R,KAAK0a,iBAAiBiK,WAG1D3kB,MAAKsgB,MAAQtO,SAASM,cAAc,OACpCtS,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKsgB,MAAM5S,MAAMmX,SAAW,SAG5B7kB,KAAKsgB,MAAMC,OAASvO,SAASM,cAAe,UAC5CtS,KAAKsgB,MAAMC,OAAO7S,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMC,OAGhC,IAAIuE,GAAW9S,SAASM,cAAe,MACvCwS,GAASpX,MAAMnC,MAAQ,MACvBuZ,EAASpX,MAAMqX,WAAc,OAC7BD,EAASpX,MAAMsX,QAAW,OAC1BF,EAASG,UAAa,mDACtBjlB,KAAKsgB,MAAMC,OAAOrO,YAAY4S,GAGhC9kB,KAAKsgB,MAAM5L,OAAS1C,SAASM,cAAe,OAC5CtS,KAAKsgB,MAAM5L,OAAOhH,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAM5L,OAAOhH,MAAM4W,OAAS,MACjCtkB,KAAKsgB,MAAM5L,OAAOhH,MAAM7F,KAAO,MAC/B7H,KAAKsgB,MAAM5L,OAAOhH,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM5L,OAGlC,IAAIQ,GAAKlV,KACLklB,EAAc,SAAUrb,GAAQqL,EAAGiQ,aAAatb,IAChDub,EAAe,SAAUvb,GAAQqL,EAAGmQ,cAAcxb,IAClDyb,EAAe,SAAUzb,GAAQqL,EAAGqQ,SAAS1b,IAC7C2b,EAAY,SAAU3b,GAAQqL,EAAGuQ,WAAW5b,GAGhDlJ,GAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,UAAWmF,WACpD/kB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,YAAa2E,GACtDvkB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,aAAc6E,GACvDzkB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,aAAc+E,GACvD3kB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,YAAaiF,GAGtDxlB,KAAK0a,iBAAiBxI,YAAYlS,KAAKsgB,QAWzCtf,EAAQkT,UAAUyR,QAAU,SAASrS,EAAOC,GAC1CvT,KAAKsgB,MAAM5S,MAAM4F,MAAQA,EACzBtT,KAAKsgB,MAAM5S,MAAM6F,OAASA,EAE1BvT,KAAK4lB,iBAMP5kB,EAAQkT,UAAU0R,cAAgB,WAChC5lB,KAAKsgB,MAAMC,OAAO7S,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMC,OAAO7S,MAAM6F,OAAS,OAEjCvT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAC5CxgB,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAG7C7lB,KAAKsgB,MAAM5L,OAAOhH,MAAM4F,MAAStT,KAAKsgB,MAAMC,OAAOC,YAAc,GAAU,MAM7Exf,EAAQkT,UAAU4R,eAAiB,WACjC,IAAK9lB,KAAKsgB,MAAM5L,SAAW1U,KAAKsgB,MAAM5L,OAAOqR,OAC3C,KAAM,wBAER/lB,MAAKsgB,MAAM5L,OAAOqR,OAAOC,QAO3BhlB,EAAQkT,UAAU+R,cAAgB,WAC3BjmB,KAAKsgB,MAAM5L,QAAW1U,KAAKsgB,MAAM5L,OAAOqR,QAE7C/lB,KAAKsgB,MAAM5L,OAAOqR,OAAOG,QAU3BllB,EAAQkT,UAAUiS,cAAgB,WAG9BnmB,KAAKqgB,QAD0D,MAA7DrgB,KAAK4a,eAAewL,OAAOpmB,KAAK4a,eAAe5U,OAAO,GAEtDqgB,WAAWrmB,KAAK4a,gBAAkB,IAChC5a,KAAKsgB,MAAMC,OAAOC,YAGP6F,WAAWrmB,KAAK4a,gBAK/B5a,KAAKygB,QAD0D,MAA7DzgB,KAAK6a,eAAeuL,OAAOpmB,KAAK6a,eAAe7U,OAAO,GAEtDqgB,WAAWrmB,KAAK6a,gBAAkB,KAC/B7a,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKsgB,MAAM5L,OAAOmR,cAGzCQ,WAAWrmB,KAAK6a,iBAoBnC7Z,EAAQkT,UAAUoS,kBAAoB,SAASC,GACjC1f,SAAR0f,IAImB1f,SAAnB0f,EAAIC,YAA6C3f,SAAjB0f,EAAIE,UACtCzmB,KAAKkc,OAAOwK,eAAeH,EAAIC,WAAYD,EAAIE,UAG5B5f,SAAjB0f,EAAII,UACN3mB,KAAKkc,OAAO0K,aAAaL,EAAII,UAG/B3mB,KAAKyiB,WASPzhB,EAAQkT,UAAU2S,kBAAoB,WACpC,GAAIN,GAAMvmB,KAAKkc,OAAO4K,gBAEtB,OADAP,GAAII,SAAW3mB,KAAKkc,OAAOkE,eACpBmG,GAMTvlB,EAAQkT,UAAU6S,UAAY,SAAStT,GAErCzT,KAAKoiB,gBAAgB3O,EAAMzT,KAAK0N,OAK9B1N,KAAKoc,WAFHpc,KAAKuiB,WAEWviB,KAAKuiB,WAAWuB,iBAIhB9jB,KAAK8jB,eAAe9jB,KAAKsY,WAI7CtY,KAAKgnB,iBAOPhmB,EAAQkT,UAAU6E,QAAU,SAAUtF,GACpCzT,KAAK+mB,UAAUtT,GACfzT,KAAKyiB,SAGDziB,KAAKinB,oBAAsBjnB,KAAKuiB,YAClCviB,KAAK8lB,kBAQT9kB,EAAQkT,UAAUD,WAAa,SAAU/E,GACvC,GAAIgY,GAAiBrgB,MAIrB,IAFA7G,KAAKimB,gBAEWpf,SAAZqI,EAAuB,CAkBzB,GAhBsBrI,SAAlBqI,EAAQoE,QAA2BtT,KAAKsT,MAAQpE,EAAQoE,OACrCzM,SAAnBqI,EAAQqE,SAA2BvT,KAAKuT,OAASrE,EAAQqE,QAErC1M,SAApBqI,EAAQiP,UAA2Bne,KAAK4a,eAAiB1L,EAAQiP,SAC7CtX,SAApBqI,EAAQkP,UAA2Bpe,KAAK6a,eAAiB3L,EAAQkP,SAEzCvX,SAAxBqI,EAAQmM,cAA+Brb,KAAKqb,YAAcnM,EAAQmM,aAC1CxU,SAAxBqI,EAAQoM,cAA+Btb,KAAKsb,YAAcpM,EAAQoM,aAC/CzU,SAAnBqI,EAAQ4L,SAA0B9a,KAAK8a,OAAS5L,EAAQ4L,QACrCjU,SAAnBqI,EAAQ6L,SAA0B/a,KAAK+a,OAAS7L,EAAQ6L,QACrClU,SAAnBqI,EAAQ8L,SAA0Bhb,KAAKgb,OAAS9L,EAAQ8L,QAEhCnU,SAAxBqI,EAAQgM,cAA+Blb,KAAKkb,YAAchM,EAAQgM,aAC1CrU,SAAxBqI,EAAQiM,cAA+Bnb,KAAKmb,YAAcjM,EAAQiM,aAC1CtU,SAAxBqI,EAAQkM,cAA+Bpb,KAAKob,YAAclM,EAAQkM,aAEhDvU,SAAlBqI,EAAQxB,MAAqB,CAC/B,GAAIyZ,GAAcnnB,KAAK2hB,gBAAgBzS,EAAQxB,MAC3B,MAAhByZ,IACFnnB,KAAK0N,MAAQyZ,GAGQtgB,SAArBqI,EAAQwM,WAA6B1b,KAAK0b,SAAWxM,EAAQwM,UACjC7U,SAA5BqI,EAAQuM,kBAAiCzb,KAAKyb,gBAAkBvM,EAAQuM,iBACjD5U,SAAvBqI,EAAQ0M,aAA6B5b,KAAK4b,WAAa1M,EAAQ0M,YAC3C/U,SAApBqI,EAAQkY,UAA6BpnB,KAAK8b,YAAc5M,EAAQkY,SAC9BvgB,SAAlCqI,EAAQmY,wBAAqCrnB,KAAKqnB,sBAAwBnY,EAAQmY,uBACtDxgB,SAA5BqI,EAAQyM,kBAAiC3b,KAAK2b,gBAAkBzM,EAAQyM,iBAC9C9U,SAA1BqI,EAAQ6M,gBAA+B/b,KAAK+b,cAAgB7M,EAAQ6M,eAEtClV,SAA9BqI,EAAQ8M,oBAAiChc,KAAKgc,kBAAoB9M,EAAQ8M,mBAC7CnV,SAA7BqI,EAAQ+M,mBAAiCjc,KAAKic,iBAAmB/M,EAAQ+M,kBAC1CpV,SAA/BqI,EAAQ+X,qBAAiCjnB,KAAKinB,mBAAqB/X,EAAQ+X,oBAErDpgB,SAAtBqI,EAAQmO,YAAyBrd,KAAK2iB,iBAAmBzT,EAAQmO,WAC3CxW,SAAtBqI,EAAQoO,YAAyBtd,KAAK6iB,iBAAmB3T,EAAQoO,WAEhDzW,SAAjBqI,EAAQwN,OAAoB1c,KAAKgjB,YAAc9T,EAAQwN,MACrC7V,SAAlBqI,EAAQyN,QAAqB3c,KAAKkjB,aAAehU,EAAQyN,OACxC9V,SAAjBqI,EAAQ0N,OAAoB5c,KAAKijB,YAAc/T,EAAQ0N,MACtC/V,SAAjBqI,EAAQ2N,OAAoB7c,KAAKojB,YAAclU,EAAQ2N,MACrChW,SAAlBqI,EAAQ4N,QAAqB9c,KAAKsjB,aAAepU,EAAQ4N,OACxCjW,SAAjBqI,EAAQ6N,OAAoB/c,KAAKqjB,YAAcnU,EAAQ6N,MACtClW,SAAjBqI,EAAQ8N,OAAoBhd,KAAKwjB,YAActU,EAAQ8N,MACrCnW,SAAlBqI,EAAQ+N,QAAqBjd,KAAK0jB,aAAexU,EAAQ+N,OACxCpW,SAAjBqI,EAAQgO,OAAoBld,KAAKyjB,YAAcvU,EAAQgO,MAClCrW,SAArBqI,EAAQiO,WAAwBnd,KAAK4jB,gBAAkB1U,EAAQiO,UAC1CtW,SAArBqI,EAAQkO,WAAwBpd,KAAK6jB,gBAAkB3U,EAAQkO,UAEpCvW,SAA3BqI,EAAQgY,iBAA8BA,EAAiBhY,EAAQgY,gBAE5CrgB,SAAnBqgB,GACFlnB,KAAKkc,OAAOwK,eAAeQ,EAAeV,WAAYU,EAAeT,UACrEzmB,KAAKkc,OAAO0K,aAAaM,EAAeP,YAGxC3mB,KAAKkc,OAAOwK,eAAe,EAAK,IAChC1mB,KAAKkc,OAAO0K,aAAa,MAI7B5mB,KAAK0gB,oBAAoBxR,GAAWA,EAAQyR,iBAE5C3gB,KAAK2lB,QAAQ3lB,KAAKsT,MAAOtT,KAAKuT,QAG1BvT,KAAKsY,WACPtY,KAAK+Y,QAAQ/Y,KAAKsY,WAIhBtY,KAAKinB,oBAAsBjnB,KAAKuiB,YAClCviB,KAAK8lB,kBAOT9kB,EAAQkT,UAAUuO,OAAS,WACzB,GAAwB5b,SAApB7G,KAAKoc,WACP,KAAM,mCAGRpc,MAAK4lB,gBACL5lB,KAAKmmB,gBACLnmB,KAAKsnB,gBACLtnB,KAAKunB,eACLvnB,KAAKwnB,cAEDxnB,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC/BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,QAC7B1hB,KAAKynB,kBAEEznB,KAAK0N,QAAU1M,EAAQua,MAAMkG,KACpCzhB,KAAK0nB,kBAEE1nB,KAAK0N,QAAU1M,EAAQua,MAAM2F,KACpClhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAC7BphB,KAAK2nB,iBAIL3nB,KAAK4nB,iBAGP5nB,KAAK6nB,cACL7nB,KAAK8nB,iBAMP9mB,EAAQkT,UAAUqT,aAAe,WAC/B,GAAIhH,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIE,UAAU,EAAG,EAAG1H,EAAOjN,MAAOiN,EAAOhN,SAO3CvS,EAAQkT,UAAU4T,cAAgB,WAChC,GAAIrV,EAEJ,IAAIzS,KAAK0N,QAAU1M,EAAQua,MAAM+F,UAC/BthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,QAAS,CAEtC,GAEI2G,GAAUC,EAFVC,EAAmC,IAAzBpoB,KAAKsgB,MAAME,WAGrBxgB,MAAK0N,QAAU1M,EAAQua,MAAMgG,SAC/B2G,EAAWE,EAAU,EACrBD,EAAWC,EAAU,EAAc,EAAVA,IAGzBF,EAAW,GACXC,EAAW,GAGb,IAAI5U,GAAS/O,KAAKJ,IAA8B,IAA1BpE,KAAKsgB,MAAMuF,aAAqB,KAClD5d,EAAMjI,KAAK2a,OACX0N,EAAQroB,KAAKsgB,MAAME,YAAcxgB,KAAK2a,OACtC9S,EAAOwgB,EAAQF,EACf7D,EAASrc,EAAMsL,EAGrB,GAAIgN,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAI5B,IAHAD,EAAIO,UAAY,EAChBP,EAAIQ,KAAO,aAEPvoB,KAAK0N,QAAU1M,EAAQua,MAAM+F,SAAU,CAEzC,GAAIkH,GAAO,EACPC,EAAOlV,CACX,KAAKd,EAAI+V,EAAUC,EAAJhW,EAAUA,IAAK,CAC5B,GAAIpE,IAAKoE,EAAI+V,IAASC,EAAOD,GAGzBnb,EAAU,IAAJgB,EACN9C,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,EAElC0a,GAAIY,YAAcpd,EAClBwc,EAAIa,YACJb,EAAIc,OAAOhhB,EAAMI,EAAMwK,GACvBsV,EAAIe,OAAOT,EAAOpgB,EAAMwK,GACxBsV,EAAIlH,SAGNkH,EAAIY,YAAe3oB,KAAKud,UACxBwK,EAAIgB,WAAWlhB,EAAMI,EAAKkgB,EAAU5U,GAiBtC,GAdIvT,KAAK0N,QAAU1M,EAAQua,MAAMgG,UAE/BwG,EAAIY,YAAe3oB,KAAKud,UACxBwK,EAAIiB,UAAahpB,KAAKyd,SACtBsK,EAAIa,YACJb,EAAIc,OAAOhhB,EAAMI,GACjB8f,EAAIe,OAAOT,EAAOpgB,GAClB8f,EAAIe,OAAOT,EAAQF,EAAWD,EAAU5D,GACxCyD,EAAIe,OAAOjhB,EAAMyc,GACjByD,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,UAGF7gB,KAAK0N,QAAU1M,EAAQua,MAAM+F,UAC/BthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,QAAS,CAEtC,GAAI2H,GAAc,EACdC,EAAO,GAAI5nB,GAAWvB,KAAKmd,SAAUnd,KAAKod,UAAWpd,KAAKod,SAASpd,KAAKmd,UAAU,GAAG,EAKzF,KAJAgM,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAKmd,UAC3BgM,EAAKE,QAECF,EAAK7Y,OACXmC,EAAI6R,GAAU6E,EAAKC,aAAeppB,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY5J,EAErFwU,EAAIa,YACJb,EAAIc,OAAOhhB,EAAOqhB,EAAazW,GAC/BsV,EAAIe,OAAOjhB,EAAM4K,GACjBsV,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASL,EAAKC,aAAcvhB,EAAO,EAAIqhB,EAAazW,GAExD0W,EAAKE,MAGPtB,GAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,KACnB,IAAIvW,GAAQhT,KAAKsb,WACjByM,GAAIyB,SAASxW,EAAOqV,EAAO/D,EAAStkB,KAAK2a,UAO7C3Z,EAAQkT,UAAU8S,cAAgB,WAGhC,GAFAhnB,KAAKsgB,MAAM5L,OAAOuQ,UAAY,GAE1BjlB,KAAKuiB,WAAY,CACnB,GAAIrT,IACFua,QAAWzpB,KAAKqnB,uBAEdtB,EAAS,GAAIzkB,GAAOtB,KAAKsgB,MAAM5L,OAAQxF,EAC3ClP,MAAKsgB,MAAM5L,OAAOqR,OAASA,EAG3B/lB,KAAKsgB,MAAM5L,OAAOhH,MAAMsX,QAAU,OAGlCe,EAAO2D,UAAU1pB,KAAKuiB,WAAW1K,QACjCkO,EAAO4D,gBAAgB3pB,KAAKgc,kBAG5B,IAAI9G,GAAKlV,KACL4pB,EAAW,WACb,GAAIlhB,GAAQqd,EAAO8D,UAEnB3U,GAAGqN,WAAWuH,YAAYphB,GAC1BwM,EAAGkH,WAAalH,EAAGqN,WAAWuB,iBAE9B5O,EAAGuN,SAELsD,GAAOgE,oBAAoBH,OAG3B5pB,MAAKsgB,MAAM5L,OAAOqR,OAASlf,QAO/B7F,EAAQkT,UAAUoT,cAAgB,WACEzgB,SAA7B7G,KAAKsgB,MAAM5L,OAAOqR,QACrB/lB,KAAKsgB,MAAM5L,OAAOqR,OAAOtD,UAQ7BzhB,EAAQkT,UAAU2T,YAAc,WAC9B,GAAI7nB,KAAKuiB,WAAY,CACnB,GAAIhC,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIQ,KAAO,aACXR,EAAIiC,UAAY,OAChBjC,EAAIiB,UAAY,OAChBjB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,KAEnB,IAAI/W,GAAIxS,KAAK2a,OACTlI,EAAIzS,KAAK2a,MACboN,GAAIyB,SAASxpB,KAAKuiB,WAAW0H,WAAa,KAAOjqB,KAAKuiB,WAAW2H,mBAAoB1X,EAAGC,KAQ5FzR,EAAQkT,UAAUsT,YAAc,WAC9B,GAEE2C,GAAMC,EAAIjB,EAAMkB,EAChBC,EAAMC,EAAOC,EAAOC,EACpBC,EAAQzX,EAASC,EACjByX,EAAQC,EALNrK,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAQ1BD,GAAIQ,KAAO,GAAKvoB,KAAKkc,OAAOkE,eAAiB,UAG7C,IAAIyK,GAAW,KAAQ7qB,KAAKuE,MAAMiO,EAC9BsY,EAAW,KAAQ9qB,KAAKuE,MAAMkO,EAC9BsY,EAAa,EAAI/qB,KAAKkc,OAAOkE,eAC7B4K,EAAWhrB,KAAKkc,OAAO4K,iBAAiBN,UAU5C,KAPAuB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAKkjB,aACnBiG,EAAO,GAAI5nB,GAAWvB,KAAK0c,KAAM1c,KAAK4c,KAAM5c,KAAK2c,MAAO0N,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAK0c,MAC3ByM,EAAKE,QAECF,EAAK7Y,OAAO,CAClB,GAAIkC,GAAI2W,EAAKC,YAETppB,MAAK0b,UACPyO,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAM7c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAM/c,KAAKgd,OACxD+K,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,WAGJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAM7c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAKgO,EAAU7qB,KAAKgd,OACjE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAM/c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAK8N,EAAU7qB,KAAKgd,OACjE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,UAGN2J,EAAShmB,KAAK+a,IAAIyL,GAAY,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,KACpDuN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGgY,EAAOxqB,KAAKgd,OAClDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBe,EAAK7X,GAAKsY,GAEHvmB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS,KAAOxpB,KAAKkb,YAAYiO,EAAKC,cAAgB,KAAMkB,EAAK9X,EAAG8X,EAAK7X,GAE7E0W,EAAKE,OAWP,IAPAtB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAKsjB,aACnB6F,EAAO,GAAI5nB,GAAWvB,KAAK6c,KAAM7c,KAAK+c,KAAM/c,KAAK8c,MAAOuN,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAK6c,MAC3BsM,EAAKE,QAECF,EAAK7Y,OACPtQ,KAAK0b,UACPyO,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAMyM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAMuM,EAAKC,aAAcppB,KAAKgd,OACxE+K,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,WAGJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAMyM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAKoO,EAAU3B,EAAKC,aAAcppB,KAAKgd,OACjF+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAMuM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAKkO,EAAU3B,EAAKC,aAAcppB,KAAKgd,OACjF+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,UAGN0J,EAAS/lB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD0N,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOpB,EAAKC,aAAcppB,KAAKgd,OAClExY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBe,EAAK7X,GAAKsY,GAEHvmB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS,KAAOxpB,KAAKmb,YAAYgO,EAAKC,cAAgB,KAAMkB,EAAK9X,EAAG8X,EAAK7X,GAE7E0W,EAAKE,MAaP,KATAtB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAK0jB,aACnByF,EAAO,GAAI5nB,GAAWvB,KAAKgd,KAAMhd,KAAKkd,KAAMld,KAAKid,MAAOoN,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAKgd,MAC3BmM,EAAKE,OAEPkB,EAAS/lB,KAAK+a,IAAIyL,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD4N,EAAShmB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,MAC7CoM,EAAK7Y,OAEX6Z,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOrB,EAAKC,eAC1DrB,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOqB,EAAK3X,EAAIuY,EAAYZ,EAAK1X,GACrCsV,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASxpB,KAAKob,YAAY+N,EAAKC,cAAgB,IAAKe,EAAK3X,EAAI,EAAG2X,EAAK1X,GAEzE0W,EAAKE,MAEPtB,GAAIO,UAAY,EAChB6B,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKkd,OACxD6K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhBqC,EAAS3qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK6c,KAAM7c,KAAKgd,OACpE4N,EAAS5qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK6c,KAAM7c,KAAKgd,OACpE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAO8B,EAAOnY,EAAGmY,EAAOlY,GAC5BsV,EAAIe,OAAO8B,EAAOpY,EAAGoY,EAAOnY,GAC5BsV,EAAIlH,SAEJ8J,EAAS3qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK+c,KAAM/c,KAAKgd,OACpE4N,EAAS5qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK+c,KAAM/c,KAAKgd,OACpE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAO8B,EAAOnY,EAAGmY,EAAOlY,GAC5BsV,EAAIe,OAAO8B,EAAOpY,EAAGoY,EAAOnY,GAC5BsV,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhB6B,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK6c,KAAM7c,KAAKgd,OAClEoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK+c,KAAM/c,KAAKgd,OAChE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK6c,KAAM7c,KAAKgd,OAClEoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK+c,KAAM/c,KAAKgd,OAChE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,QAGJ,IAAI/F,GAAS9a,KAAK8a,MACdA,GAAO9U,OAAS,IAClBkN,EAAU,GAAMlT,KAAKuE,MAAMkO,EAC3B8X,GAASvqB,KAAK0c,KAAO1c,KAAK4c,MAAQ,EAClC4N,EAAShmB,KAAK+a,IAAIyL,GAAY,EAAKhrB,KAAK6c,KAAO3J,EAASlT,KAAK+c,KAAO7J,EACpEoX,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OACtDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ/kB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS1O,EAAQwP,EAAK9X,EAAG8X,EAAK7X,GAIpC,IAAIsI,GAAS/a,KAAK+a,MACdA,GAAO/U,OAAS,IAClBiN,EAAU,GAAMjT,KAAKuE,MAAMiO,EAC3B+X,EAAS/lB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK0c,KAAOzJ,EAAUjT,KAAK4c,KAAO3J,EACtEuX,GAASxqB,KAAK6c,KAAO7c,KAAK+c,MAAQ,EAClCuN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OACtDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ/kB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASzO,EAAQuP,EAAK9X,EAAG8X,EAAK7X,GAIpC,IAAIuI,GAAShb,KAAKgb,MACdA,GAAOhV,OAAS,IAClB0kB,EAAS,GACTH,EAAS/lB,KAAK+a,IAAIyL,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD4N,EAAShmB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,KACrD0N,GAASzqB,KAAKgd,KAAOhd,KAAKkd,MAAQ,EAClCoN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOC,IACrD1C,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASxO,EAAQsP,EAAK9X,EAAIkY,EAAQJ,EAAK7X,KAU/CzR,EAAQkT,UAAUwU,SAAW,SAASuC,EAAGC,EAAGC,GAC1C,GAAIC,GAAGC,EAAGC,EAAGC,EAAGC,EAAIC,CAMpB,QAJAF,EAAIJ,EAAID,EACRM,EAAKhnB,KAAKgB,MAAMylB,EAAE,IAClBQ,EAAIF,GAAK,EAAI/mB,KAAKknB,IAAMT,EAAE,GAAM,EAAK,IAE7BO,GACN,IAAK,GAAGJ,EAAIG,EAAGF,EAAII,EAAGH,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAIK,EAAGJ,EAAIE,EAAGD,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAI,EAAGC,EAAIE,EAAGD,EAAIG,CAAG,MAC7B,KAAK,GAAGL,EAAI,EAAGC,EAAII,EAAGH,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIK,EAAGJ,EAAI,EAAGC,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIG,EAAGF,EAAI,EAAGC,EAAIG,CAAG,MAE7B,SAASL,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAG7B,MAAO,OAASjgB,SAAW,IAAF+f,GAAS,IAAM/f,SAAW,IAAFggB,GAAS,IAAMhgB,SAAW,IAAFigB,GAAS,KAQpFtqB,EAAQkT,UAAUuT,gBAAkB,WAClC,GAEE7U,GAAOyV,EAAOpgB,EAAK0jB,EACnB9lB,EACA+lB,EAAgB5C,EAAWL,EAAaL,EACxChc,EAAGC,EAAGC,EAAGqf,EALPtL,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAO1B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAE9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAGye,OACrEtkB,MAAKoc,WAAWvW,GAAGkmB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY9lB,UAAY8lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGa,GAC3B,MAAOA,GAAEslB,KAAOnmB,EAAEmmB,KAIpB,IAFA/rB,KAAKoc,WAAWnF,KAAK+U,GAEjBhsB,KAAK0N,QAAU1M,EAAQua,MAAMmG,SAC/B,IAAK7b,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAMtC,GALA+M,EAAQ5S,KAAKoc,WAAWvW,GACxBwiB,EAAQroB,KAAKoc,WAAWvW,GAAG0e,WAC3Btc,EAAQjI,KAAKoc,WAAWvW,GAAG2e,SAC3BmH,EAAQ3rB,KAAKoc,WAAWvW,GAAG4e,WAEb5d,SAAV+L,GAAiC/L,SAAVwhB,GAA+BxhB,SAARoB,GAA+BpB,SAAV8kB,EAAqB,CAE1F,GAAI3rB,KAAK6b,gBAAkB7b,KAAK4b,WAAY,CAK1C,GAAIqQ,GAAQ5qB,EAAQ6qB,SAASP,EAAMvH,MAAOxR,EAAMwR,OAC5C+H,EAAQ9qB,EAAQ6qB,SAASjkB,EAAImc,MAAOiE,EAAMjE,OAC1CgI,EAAe/qB,EAAQgrB,aAAaJ,EAAOE,GAC3CrmB,EAAMsmB,EAAapmB,QAGvB4lB,GAAkBQ,EAAalO,EAAI,MAGnC0N,IAAiB,CAGfA,IAEFC,GAAQjZ,EAAMA,MAAMsL,EAAImK,EAAMzV,MAAMsL,EAAIjW,EAAI2K,MAAMsL,EAAIyN,EAAM/Y,MAAMsL,GAAK,EACvE5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eACnDxP,EAAI,EAEAvM,KAAK4b,YACPpP,EAAIhI,KAAKL,IAAI,EAAKioB,EAAa5Z,EAAI1M,EAAO,EAAG,GAC7CkjB,EAAYhpB,KAAK0oB,SAASpc,EAAGC,EAAGC,GAChCmc,EAAcK,IAGdxc,EAAI,EACJwc,EAAYhpB,KAAK0oB,SAASpc,EAAGC,EAAGC,GAChCmc,EAAc3oB,KAAKud,aAIrByL,EAAY,OACZL,EAAc3oB,KAAKud,WAErB+K,EAAY,GAEZP,EAAIO,UAAYA,EAChBP,EAAIiB,UAAYA,EAChBjB,EAAIY,YAAcA,EAClBZ,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAOT,EAAMhE,OAAO7R,EAAG6V,EAAMhE,OAAO5R,GACxCsV,EAAIe,OAAO6C,EAAMtH,OAAO7R,EAAGmZ,EAAMtH,OAAO5R,GACxCsV,EAAIe,OAAO7gB,EAAIoc,OAAO7R,EAAGvK,EAAIoc,OAAO5R,GACpCsV,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,cAKR,KAAKhb,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IACtC+M,EAAQ5S,KAAKoc,WAAWvW,GACxBwiB,EAAQroB,KAAKoc,WAAWvW,GAAG0e,WAC3Btc,EAAQjI,KAAKoc,WAAWvW,GAAG2e,SAEb3d,SAAV+L,IAEA0V,EADEtoB,KAAKyb,gBACK,GAAK7I,EAAMwR,MAAMlG,EAGjB,IAAMle,KAAKmc,IAAI+B,EAAIle,KAAKkc,OAAOkE,iBAIjCvZ,SAAV+L,GAAiC/L,SAAVwhB,IAEzBwD,GAAQjZ,EAAMA,MAAMsL,EAAImK,EAAMzV,MAAMsL,GAAK,EACzC5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAEnDgM,EAAIO,UAAYA,EAChBP,EAAIY,YAAc3oB,KAAK0oB,SAASpc,EAAG,EAAG,GACtCyb,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAOT,EAAMhE,OAAO7R,EAAG6V,EAAMhE,OAAO5R,GACxCsV,EAAIlH,UAGQha,SAAV+L,GAA+B/L,SAARoB,IAEzB4jB,GAAQjZ,EAAMA,MAAMsL,EAAIjW,EAAI2K,MAAMsL,GAAK,EACvC5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAEnDgM,EAAIO,UAAYA,EAChBP,EAAIY,YAAc3oB,KAAK0oB,SAASpc,EAAG,EAAG,GACtCyb,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAO7gB,EAAIoc,OAAO7R,EAAGvK,EAAIoc,OAAO5R,GACpCsV,EAAIlH,YAWZ7f,EAAQkT,UAAU0T,eAAiB,WACjC,GAEI/hB,GAFA0a,EAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAC9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAGye,OACrEtkB,MAAKoc,WAAWvW,GAAGkmB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY9lB,UAAY8lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGa,GAC3B,MAAOA,GAAEslB,KAAOnmB,EAAEmmB,KAEpB/rB,MAAKoc,WAAWnF,KAAK+U,EAGrB,IAAI5D,GAAmC,IAAzBpoB,KAAKsgB,MAAME,WACzB,KAAK3a,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAI+M,GAAQ5S,KAAKoc,WAAWvW,EAE5B,IAAI7F,KAAK0N,QAAU1M,EAAQua,MAAM8F,QAAS,CAGxC,GAAI8I,GAAOnqB,KAAKue,eAAe3L,EAAM0R,OACrCyD,GAAIO,UAAY,EAChBP,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOlW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIlH,SAIN,GAAI9N,EAEFA,GADE/S,KAAK0N,QAAU1M,EAAQua,MAAMgG,QACxB6G,EAAQ,EAAI,EAAEA,GAAWxV,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAGpFiL,CAGT,IAAIkE,EAEFA,GADEtsB,KAAKyb,gBACE1I,GAAQH,EAAMwR,MAAMlG,EAGpBnL,IAAS/S,KAAKmc,IAAI+B,EAAIle,KAAKkc,OAAOkE,gBAEhC,EAATkM,IACFA,EAAS,EAGX,IAAIjf,GAAK9B,EAAOwV,CACZ/gB,MAAK0N,QAAU1M,EAAQua,MAAM+F,UAE/BjU,EAAqE,KAA9D,GAAKuF,EAAMA,MAAMtO,MAAQtE,KAAKmd,UAAYnd,KAAKuE,MAAMD,OAC5DiH,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAE7BrN,KAAK0N,QAAU1M,EAAQua,MAAMgG,SACpChW,EAAQvL,KAAKyd,SACbsD,EAAc/gB,KAAK0d,iBAInBrQ,EAA+E,KAAxE,GAAKuF,EAAMA,MAAMsL,EAAIle,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAC9DxQ,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAItC0a,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzd,EAChBwc,EAAIa,YACJb,EAAIwE,IAAI3Z,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,EAAG6Z,EAAQ,EAAW,EAAR9nB,KAAKgoB,IAAM,GAC9DzE,EAAInH,OACJmH,EAAIlH,YAQR7f,EAAQkT,UAAUyT,eAAiB,WACjC,GAEI9hB,GAAG4mB,EAAGC,EAASC,EAFfpM,EAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAC9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAGye,OACrEtkB,MAAKoc,WAAWvW,GAAGkmB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY9lB,UAAY8lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGa,GAC3B,MAAOA,GAAEslB,KAAOnmB,EAAEmmB,KAEpB/rB,MAAKoc,WAAWnF,KAAK+U,EAGrB,IAAIY,GAAS5sB,KAAKqd,UAAY,EAC1BwP,EAAS7sB,KAAKsd,UAAY,CAC9B,KAAKzX,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAGIwH,GAAK9B,EAAOwV,EAHZnO,EAAQ5S,KAAKoc,WAAWvW,EAIxB7F,MAAK0N,QAAU1M,EAAQua,MAAM4F,UAE/B9T,EAAqE,KAA9D,GAAKuF,EAAMA,MAAMtO,MAAQtE,KAAKmd,UAAYnd,KAAKuE,MAAMD,OAC5DiH,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAE7BrN,KAAK0N,QAAU1M,EAAQua,MAAM6F,SACpC7V,EAAQvL,KAAKyd,SACbsD,EAAc/gB,KAAK0d,iBAInBrQ,EAA+E,KAAxE,GAAKuF,EAAMA,MAAMsL,EAAIle,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAC9DxQ,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAIlCrN,KAAK0N,QAAU1M,EAAQua,MAAM6F,UAC/BwL,EAAU5sB,KAAKqd,UAAY,IAAOzK,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY,GAAM,IAC/G0P,EAAU7sB,KAAKsd,UAAY,IAAO1K,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY,GAAM,IAIjH,IAAIjI,GAAKlV,KACLwe,EAAU5L,EAAMA,MAChB3K,IACD2K,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KAElEoG,IACD1R,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,OAInE/U,GAAIW,QAAQ,SAAUmb,GACpBA,EAAIM,OAASnP,EAAGqJ,eAAewF,EAAInR,SAErC0R,EAAO1b,QAAQ,SAAUmb,GACvBA,EAAIM,OAASnP,EAAGqJ,eAAewF,EAAInR,QAIrC,IAAIka,KACDH,QAAS1kB,EAAK8kB,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAC7D+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,QAKnG,KAHAA,EAAMka,SAAWA,EAGZL,EAAI,EAAGA,EAAIK,EAAS9mB,OAAQymB,IAAK,CACpCC,EAAUI,EAASL,EACnB,IAAIQ,GAAcjtB,KAAK0e,2BAA2BgO,EAAQK,OAC1DL,GAAQX,KAAO/rB,KAAKyb,gBAAkBwR,EAAYjnB,UAAYinB,EAAY/O,EAwB5E,IAjBA4O,EAAS7V,KAAK,SAAUrR,EAAGa,GACzB,GAAIymB,GAAOzmB,EAAEslB,KAAOnmB,EAAEmmB,IACtB,OAAImB,GAAaA,EAGbtnB,EAAE+mB,UAAY1kB,EAAY,EAC1BxB,EAAEkmB,UAAY1kB,EAAY,GAGvB,IAIT8f,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzd,EAEXkhB,EAAI,EAAGA,EAAIK,EAAS9mB,OAAQymB,IAC/BC,EAAUI,EAASL,GACnBE,EAAUD,EAAQC,QAClB5E,EAAIa,YACJb,EAAIc,OAAO8D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAInH,OACJmH,EAAIlH,YAUV7f,EAAQkT,UAAUwT,gBAAkB,WAClC,GAEE9U,GAAO/M,EAFL0a,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAG1B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWpW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3C,GAAIue,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWvW,GAAG+M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAE9CpkB,MAAKoc,WAAWvW,GAAGue,MAAQA,EAC3BpkB,KAAKoc,WAAWvW,GAAGwe,OAASA,EAc9B,IAVIrkB,KAAKoc,WAAWpW,OAAS,IAC3B4M,EAAQ5S,KAAKoc,WAAW,GAExB2L,EAAIO,UAAY,EAChBP,EAAIY,YAAc,OAClBZ,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,IAIrC5M,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IACtC+M,EAAQ5S,KAAKoc,WAAWvW,GACxBkiB,EAAIe,OAAOlW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,EAItCzS,MAAKoc,WAAWpW,OAAS,GAC3B+hB,EAAIlH,WASR7f,EAAQkT,UAAUiR,aAAe,SAAStb,GAWxC,GAVAA,EAAQA,GAAS/B,OAAO+B,MAIpB7J,KAAKmtB,gBACPntB,KAAKotB,WAAWvjB,GAIlB7J,KAAKmtB,eAAiBtjB,EAAMwjB,MAAyB,IAAhBxjB,EAAMwjB,MAAiC,IAAjBxjB,EAAMyjB,OAC5DttB,KAAKmtB,gBAAmBntB,KAAKutB,UAAlC,CAGAvtB,KAAKwtB,YAAc7P,EAAU9T,GAC7B7J,KAAKytB,YAAc3P,EAAUjU,GAE7B7J,KAAK0tB,WAAa,GAAI9oB,MAAK5E,KAAKqQ,OAChCrQ,KAAK2tB,SAAW,GAAI/oB,MAAK5E,KAAKsQ,KAC9BtQ,KAAK4tB,iBAAmB5tB,KAAKkc,OAAO4K,iBAEpC9mB,KAAKsgB,MAAM5S,MAAMmgB,OAAS,MAK1B,IAAI3Y,GAAKlV,IACTA,MAAK8tB,YAAc,SAAUjkB,GAAQqL,EAAG6Y,aAAalkB,IACrD7J,KAAKguB,UAAc,SAAUnkB,GAAQqL,EAAGkY,WAAWvjB,IACnDlJ,EAAKuI,iBAAiB8I,SAAU,YAAakD,EAAG4Y,aAChDntB,EAAKuI,iBAAiB8I,SAAU,UAAWkD,EAAG8Y,WAC9CrtB,EAAKiJ,eAAeC,KAStB7I,EAAQkT,UAAU6Z,aAAe,SAAUlkB,GACzCA,EAAQA,GAAS/B,OAAO+B,KAGxB,IAAIokB,GAAQ5H,WAAW1I,EAAU9T,IAAU7J,KAAKwtB,YAC5CU,EAAQ7H,WAAWvI,EAAUjU,IAAU7J,KAAKytB,YAE5CU,EAAgBnuB,KAAK4tB,iBAAiBpH,WAAayH,EAAQ,IAC3DG,EAAcpuB,KAAK4tB,iBAAiBnH,SAAWyH,EAAQ,IAEvDG,EAAY,EACZC,EAAY9pB,KAAK4a,IAAIiP,EAAY,IAAM,EAAI7pB,KAAKgoB,GAIhDhoB,MAAKknB,IAAIlnB,KAAK4a,IAAI+O,IAAkBG,IACtCH,EAAgB3pB,KAAK+pB,MAAOJ,EAAgB3pB,KAAKgoB,IAAOhoB,KAAKgoB,GAAK,MAEhEhoB,KAAKknB,IAAIlnB,KAAK+a,IAAI4O,IAAkBG,IACtCH,GAAiB3pB,KAAK+pB,MAAOJ,EAAe3pB,KAAKgoB,GAAK,IAAQ,IAAOhoB,KAAKgoB,GAAK,MAI7EhoB,KAAKknB,IAAIlnB,KAAK4a,IAAIgP,IAAgBE,IACpCF,EAAc5pB,KAAK+pB,MAAOH,EAAc5pB,KAAKgoB,IAAOhoB,KAAKgoB,IAEvDhoB,KAAKknB,IAAIlnB,KAAK+a,IAAI6O,IAAgBE,IACpCF,GAAe5pB,KAAK+pB,MAAOH,EAAa5pB,KAAKgoB,GAAK,IAAQ,IAAOhoB,KAAKgoB,IAGxExsB,KAAKkc,OAAOwK,eAAeyH,EAAeC,GAC1CpuB,KAAKyiB,QAGL,IAAI+L,GAAaxuB,KAAK6mB,mBACtB7mB,MAAKyuB,KAAK,uBAAwBD,GAElC7tB,EAAKiJ,eAAeC,IAStB7I,EAAQkT,UAAUkZ,WAAa,SAAUvjB,GACvC7J,KAAKsgB,MAAM5S,MAAMmgB,OAAS,OAC1B7tB,KAAKmtB,gBAAiB,EAGtBxsB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAK8tB,aACrDntB,EAAK+I,oBAAoBsI,SAAU,UAAahS,KAAKguB,WACrDrtB,EAAKiJ,eAAeC,IAOtB7I,EAAQkT,UAAUuR,WAAa,SAAU5b,GACvC,GAAI4P,GAAQ,IACRiV,EAAe1uB,KAAKsgB,MAAM1Y,wBAC1B+mB,EAAShR,EAAU9T,GAAS6kB,EAAa7mB,KACzC+mB,EAAS9Q,EAAUjU,GAAS6kB,EAAazmB,GAE7C,IAAKjI,KAAK8b,YAAV,CASA,GALI9b,KAAK6uB,gBACPvU,aAAata,KAAK6uB,gBAIhB7uB,KAAKmtB,eAEP,WADAntB,MAAK8uB,cAIP,IAAI9uB,KAAKonB,SAAWpnB,KAAKonB,QAAQ2H,UAAW,CAE1C,GAAIA,GAAY/uB,KAAKgvB,iBAAiBL,EAAQC,EAC1CG,KAAc/uB,KAAKonB,QAAQ2H,YAEzBA,EACF/uB,KAAKivB,aAAaF,GAGlB/uB,KAAK8uB,oBAIN,CAEH,GAAI5Z,GAAKlV,IACTA,MAAK6uB,eAAiBtU,WAAW,WAC/BrF,EAAG2Z,eAAiB,IAGpB,IAAIE,GAAY7Z,EAAG8Z,iBAAiBL,EAAQC,EACxCG,IACF7Z,EAAG+Z,aAAaF,IAEjBtV,MAOPzY,EAAQkT,UAAUmR,cAAgB,SAASxb,GACzC7J,KAAKutB,WAAY,CAEjB,IAAIrY,GAAKlV,IACTA,MAAKkvB,YAAc,SAAUrlB,GAAQqL,EAAGia,aAAatlB,IACrD7J,KAAKovB,WAAc,SAAUvlB,GAAQqL,EAAGma,YAAYxlB,IACpDlJ,EAAKuI,iBAAiB8I,SAAU,YAAakD,EAAGga,aAChDvuB,EAAKuI,iBAAiB8I,SAAU,WAAYkD,EAAGka,YAE/CpvB,KAAKmlB,aAAatb,IAMpB7I,EAAQkT,UAAUib,aAAe,SAAStlB,GACxC7J,KAAK+tB,aAAalkB,IAMpB7I,EAAQkT,UAAUmb,YAAc,SAASxlB,GACvC7J,KAAKutB,WAAY,EAEjB5sB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAKkvB,aACrDvuB,EAAK+I,oBAAoBsI,SAAU,WAAchS,KAAKovB,YAEtDpvB,KAAKotB,WAAWvjB,IASlB7I,EAAQkT,UAAUqR,SAAW,SAAS1b,GAC/BA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAIylB,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAW,IAChB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAO,GAMpBF,EAAO,CACT,GAAIG,GAAYzvB,KAAKkc,OAAOkE,eACxBsP,EAAYD,GAAa,EAAIH,EAAQ,GAEzCtvB,MAAKkc,OAAO0K,aAAa8I,GACzB1vB,KAAKyiB,SAELziB,KAAK8uB,eAIP,GAAIN,GAAaxuB,KAAK6mB,mBACtB7mB,MAAKyuB,KAAK,uBAAwBD,GAKlC7tB,EAAKiJ,eAAeC,IAUtB7I,EAAQkT,UAAUyb,gBAAkB,SAAU/c,EAAOgd,GAKnD,QAASC,GAAMrd,GACb,MAAOA,GAAI,EAAI,EAAQ,EAAJA,EAAQ,GAAK,EALlC,GAAI5M,GAAIgqB,EAAS,GACfnpB,EAAImpB,EAAS,GACbnvB,EAAImvB,EAAS,GAMXE,EAAKD,GAAMppB,EAAE+L,EAAI5M,EAAE4M,IAAMI,EAAMH,EAAI7M,EAAE6M,IAAMhM,EAAEgM,EAAI7M,EAAE6M,IAAMG,EAAMJ,EAAI5M,EAAE4M,IACrEud,EAAKF,GAAMpvB,EAAE+R,EAAI/L,EAAE+L,IAAMI,EAAMH,EAAIhM,EAAEgM,IAAMhS,EAAEgS,EAAIhM,EAAEgM,IAAMG,EAAMJ,EAAI/L,EAAE+L,IACrEwd,EAAKH,GAAMjqB,EAAE4M,EAAI/R,EAAE+R,IAAMI,EAAMH,EAAIhS,EAAEgS,IAAM7M,EAAE6M,EAAIhS,EAAEgS,IAAMG,EAAMJ,EAAI/R,EAAE+R,GAGzE,SAAc,GAANsd,GAAiB,GAANC,GAAWD,GAAMC,GAC3B,GAANA,GAAiB,GAANC,GAAWD,GAAMC,GACtB,GAANF,GAAiB,GAANE,GAAWF,GAAME,IAUjChvB,EAAQkT,UAAU8a,iBAAmB,SAAUxc,EAAGC,GAChD,GAAI5M,GACFoqB,EAAU,IACVlB,EAAY,KACZmB,EAAmB,KACnBC,EAAc,KACdpD,EAAS,GAAI3rB,GAAQoR,EAAGC,EAE1B,IAAIzS,KAAK0N,QAAU1M,EAAQua,MAAM2F,KAC/BlhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAE7B,IAAKvb,EAAI7F,KAAKoc,WAAWpW,OAAS,EAAGH,GAAK,EAAGA,IAAK,CAChDkpB,EAAY/uB,KAAKoc,WAAWvW,EAC5B,IAAIinB,GAAYiC,EAAUjC,QAC1B,IAAIA,EACF,IAAK,GAAIvgB,GAAIugB,EAAS9mB,OAAS,EAAGuG,GAAK,EAAGA,IAAK,CAE7C,GAAImgB,GAAUI,EAASvgB,GACnBogB,EAAUD,EAAQC,QAClByD,GAAazD,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,QAC9DgM,GAAa1D,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAClE,IAAIrkB,KAAK2vB,gBAAgB5C,EAAQqD,IAC/BpwB,KAAK2vB,gBAAgB5C,EAAQsD,GAE7B,MAAOtB,QAQf,KAAKlpB,EAAI,EAAGA,EAAI7F,KAAKoc,WAAWpW,OAAQH,IAAK,CAC3CkpB,EAAY/uB,KAAKoc,WAAWvW,EAC5B,IAAI+M,GAAQmc,EAAU1K,MACtB,IAAIzR,EAAO,CACT,GAAI0d,GAAQ9rB,KAAKknB,IAAIlZ,EAAII,EAAMJ,GAC3B+d,EAAQ/rB,KAAKknB,IAAIjZ,EAAIG,EAAMH,GAC3BsZ,EAAQvnB,KAAKgsB,KAAKF,EAAQA,EAAQC,EAAQA,IAEzB,OAAhBJ,GAA+BA,EAAPpE,IAA8BkE,EAAPlE,IAClDoE,EAAcpE,EACdmE,EAAmBnB,IAO3B,MAAOmB,IAQTlvB,EAAQkT,UAAU+a,aAAe,SAAUF,GACzC,GAAI5b,GAASsd,EAAMC,CAEd1wB,MAAKonB,SAiCRjU,EAAUnT,KAAKonB,QAAQuJ,IAAIxd,QAC3Bsd,EAAQzwB,KAAKonB,QAAQuJ,IAAIF,KACzBC,EAAQ1wB,KAAKonB,QAAQuJ,IAAID,MAlCzBvd,EAAUnB,SAASM,cAAc,OACjCa,EAAQzF,MAAMkX,SAAW,WACzBzR,EAAQzF,MAAMsX,QAAU,OACxB7R,EAAQzF,MAAMZ,OAAS,oBACvBqG,EAAQzF,MAAMnC,MAAQ,UACtB4H,EAAQzF,MAAMb,WAAa,wBAC3BsG,EAAQzF,MAAMkjB,aAAe,MAC7Bzd,EAAQzF,MAAMmjB,UAAY,qCAE1BJ,EAAOze,SAASM,cAAc,OAC9Bme,EAAK/iB,MAAMkX,SAAW,WACtB6L,EAAK/iB,MAAM6F,OAAS,OACpBkd,EAAK/iB,MAAM4F,MAAQ,IACnBmd,EAAK/iB,MAAMojB,WAAa,oBAExBJ,EAAM1e,SAASM,cAAc,OAC7Boe,EAAIhjB,MAAMkX,SAAW,WACrB8L,EAAIhjB,MAAM6F,OAAS,IACnBmd,EAAIhjB,MAAM4F,MAAQ,IAClBod,EAAIhjB,MAAMZ,OAAS,oBACnB4jB,EAAIhjB,MAAMkjB,aAAe,MAEzB5wB,KAAKonB,SACH2H,UAAW,KACX4B,KACExd,QAASA,EACTsd,KAAMA,EACNC,IAAKA,KAUX1wB,KAAK8uB,eAEL9uB,KAAKonB,QAAQ2H,UAAYA,EAEvB5b,EAAQ8R,UADsB,kBAArBjlB,MAAK8b,YACM9b,KAAK8b,YAAYiT,EAAUnc,OAG3B,6BACMmc,EAAUnc,MAAMJ,EAAI,gCACpBuc,EAAUnc,MAAMH,EAAI,gCACpBsc,EAAUnc,MAAMsL,EAAI,qBAIhD/K,EAAQzF,MAAM7F,KAAQ,IACtBsL,EAAQzF,MAAMzF,IAAQ,IACtBjI,KAAKsgB,MAAMpO,YAAYiB,GACvBnT,KAAKsgB,MAAMpO,YAAYue,GACvBzwB,KAAKsgB,MAAMpO,YAAYwe,EAGvB,IAAIK,GAAgB5d,EAAQ6d,YACxBC,EAAkB9d,EAAQ+d,aAC1BC,EAAgBV,EAAKS,aACrBE,EAAcV,EAAIM,YAClBK,EAAgBX,EAAIQ,aAEpBrpB,EAAOknB,EAAU1K,OAAO7R,EAAIue,EAAe,CAC/ClpB,GAAOrD,KAAKL,IAAIK,KAAKJ,IAAIyD,EAAM,IAAK7H,KAAKsgB,MAAME,YAAc,GAAKuQ,GAElEN,EAAK/iB,MAAM7F,KAASknB,EAAU1K,OAAO7R,EAAI,KACzCie,EAAK/iB,MAAMzF,IAAU8mB,EAAU1K,OAAO5R,EAAI0e,EAAc,KACxDhe,EAAQzF,MAAM7F,KAAQA,EAAO,KAC7BsL,EAAQzF,MAAMzF,IAAS8mB,EAAU1K,OAAO5R,EAAI0e,EAAaF,EAAiB,KAC1EP,EAAIhjB,MAAM7F,KAAWknB,EAAU1K,OAAO7R,EAAI4e,EAAW,EAAK,KAC1DV,EAAIhjB,MAAMzF,IAAW8mB,EAAU1K,OAAO5R,EAAI4e,EAAY,EAAK,MAO7DrwB,EAAQkT,UAAU4a,aAAe,WAC/B,GAAI9uB,KAAKonB,QAAS,CAChBpnB,KAAKonB,QAAQ2H,UAAY,IAEzB,KAAK,GAAI7oB,KAAQlG,MAAKonB,QAAQuJ,IAC5B,GAAI3wB,KAAKonB,QAAQuJ,IAAIxqB,eAAeD,GAAO,CACzC,GAAIyB,GAAO3H,KAAKonB,QAAQuJ,IAAIzqB,EACxByB,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWyH,YAAYjK,MA8BtC9H,EAAOD,QAAUoB,GAKb,SAASnB,EAAQD,EAASM,GAc9B,QAASgB,KACPlB,KAAKsxB,YAAc,GAAIjwB,GACvBrB,KAAKuxB,eACLvxB,KAAKuxB,YAAY/K,WAAa,EAC9BxmB,KAAKuxB,YAAY9K,SAAW,EAC5BzmB,KAAKwxB,UAAY,IAEjBxxB,KAAKyxB,eAAiB,GAAIpwB,GAC1BrB,KAAK0xB,eAAkB,GAAIrwB,GAAQ,GAAImD,KAAKgoB,GAAI,EAAG,GAEnDxsB,KAAK2xB,6BAtBP,GAAItwB,GAAUnB,EAAoB,GA+BlCgB,GAAOgT,UAAUoK,eAAiB,SAAS9L,EAAGC,EAAGyL,GAC/Cle,KAAKsxB,YAAY9e,EAAIA,EACrBxS,KAAKsxB,YAAY7e,EAAIA,EACrBzS,KAAKsxB,YAAYpT,EAAIA,EAErBle,KAAK2xB,8BAWPzwB,EAAOgT,UAAUwS,eAAiB,SAASF,EAAYC,GAClC5f,SAAf2f,IACFxmB,KAAKuxB,YAAY/K,WAAaA,GAGf3f,SAAb4f,IACFzmB,KAAKuxB,YAAY9K,SAAWA,EACxBzmB,KAAKuxB,YAAY9K,SAAW,IAAGzmB,KAAKuxB,YAAY9K,SAAW,GAC3DzmB,KAAKuxB,YAAY9K,SAAW,GAAIjiB,KAAKgoB,KAAIxsB,KAAKuxB,YAAY9K,SAAW,GAAIjiB,KAAKgoB,MAGjE3lB,SAAf2f,GAAyC3f,SAAb4f,IAC9BzmB,KAAK2xB,8BAQTzwB,EAAOgT,UAAU4S,eAAiB,WAChC,GAAI8K,KAIJ,OAHAA,GAAIpL,WAAaxmB,KAAKuxB,YAAY/K,WAClCoL,EAAInL,SAAWzmB,KAAKuxB,YAAY9K,SAEzBmL,GAOT1wB,EAAOgT,UAAU0S,aAAe,SAAS5gB,GACxBa,SAAXb,IAGJhG,KAAKwxB,UAAYxrB,EAKbhG,KAAKwxB,UAAY,MAAMxxB,KAAKwxB,UAAY,KACxCxxB,KAAKwxB,UAAY,IAAKxxB,KAAKwxB,UAAY,GAE3CxxB,KAAK2xB,+BAOPzwB,EAAOgT,UAAUkM,aAAe,WAC9B,MAAOpgB,MAAKwxB,WAOdtwB,EAAOgT,UAAU8K,kBAAoB,WACnC,MAAOhf,MAAKyxB,gBAOdvwB,EAAOgT,UAAUmL,kBAAoB,WACnC,MAAOrf,MAAK0xB,gBAOdxwB,EAAOgT,UAAUyd,2BAA6B,WAE5C3xB,KAAKyxB,eAAejf,EAAIxS,KAAKsxB,YAAY9e,EAAIxS,KAAKwxB,UAAYhtB,KAAK4a,IAAIpf,KAAKuxB,YAAY/K,YAAchiB,KAAK+a,IAAIvf,KAAKuxB,YAAY9K,UAChIzmB,KAAKyxB,eAAehf,EAAIzS,KAAKsxB,YAAY7e,EAAIzS,KAAKwxB,UAAYhtB,KAAK+a,IAAIvf,KAAKuxB,YAAY/K,YAAchiB,KAAK+a,IAAIvf,KAAKuxB,YAAY9K,UAChIzmB,KAAKyxB,eAAevT,EAAIle,KAAKsxB,YAAYpT,EAAIle,KAAKwxB,UAAYhtB,KAAK4a,IAAIpf,KAAKuxB,YAAY9K,UAGxFzmB,KAAK0xB,eAAelf,EAAIhO,KAAKgoB,GAAG,EAAIxsB,KAAKuxB,YAAY9K,SACrDzmB,KAAK0xB,eAAejf,EAAI,EACxBzS,KAAK0xB,eAAexT,GAAKle,KAAKuxB,YAAY/K,YAG5C3mB,EAAOD,QAAUsB,GAIb,SAASrB,EAAQD,EAASM,GAW9B,QAASiB,GAAQsS,EAAMsO,EAAQ8P,GAC7B7xB,KAAKyT,KAAOA,EACZzT,KAAK+hB,OAASA,EACd/hB,KAAK6xB,MAAQA,EAEb7xB,KAAK0I,MAAQ7B,OACb7G,KAAKsE,MAAQuC,OAGb7G,KAAK6X,OAASga,EAAM7P,kBAAkBvO,EAAKwC,MAAOjW,KAAK+hB,QAGvD/hB,KAAK6X,OAAOZ,KAAK,SAAUrR,EAAGa,GAC5B,MAAOb,GAAIa,EAAI,EAAQA,EAAJb,EAAQ,GAAK,IAG9B5F,KAAK6X,OAAO7R,OAAS,GACvBhG,KAAK8pB,YAAY,GAInB9pB,KAAKoc,cAELpc,KAAKM,QAAS,EACdN,KAAK8xB,eAAiBjrB,OAElBgrB,EAAM5V,kBACRjc,KAAKM,QAAS,EACdN,KAAK+xB,oBAGL/xB,KAAKM,QAAS,EAxClB,GAAIQ,GAAWZ,EAAoB,EAiDnCiB,GAAO+S,UAAU8d,SAAW,WAC1B,MAAOhyB,MAAKM,QAQda,EAAO+S,UAAU+d,kBAAoB,WAInC,IAHA,GAAInsB,GAAM9F,KAAK6X,OAAO7R,OAElBH,EAAI,EACD7F,KAAKoc,WAAWvW,IACrBA,GAGF,OAAOrB,MAAK+pB,MAAM1oB,EAAIC,EAAM,MAQ9B3E,EAAO+S,UAAU+V,SAAW,WAC1B,MAAOjqB,MAAK6xB,MAAMxW,aAQpBla,EAAO+S,UAAUge,UAAY,WAC3B,MAAOlyB,MAAK+hB,QAOd5gB,EAAO+S,UAAUgW,iBAAmB,WAClC,MAAmBrjB,UAAf7G,KAAK0I,MACA7B,OAEF7G,KAAK6X,OAAO7X,KAAK0I;EAO1BvH,EAAO+S,UAAUie,UAAY,WAC3B,MAAOnyB,MAAK6X,QAQd1W,EAAO+S,UAAUyB,SAAW,SAASjN,GACnC,GAAIA,GAAS1I,KAAK6X,OAAO7R,OACvB,KAAM,2BAER,OAAOhG,MAAK6X,OAAOnP,IASrBvH,EAAO+S,UAAU4P,eAAiB,SAASpb,GAIzC,GAHc7B,SAAV6B,IACFA,EAAQ1I,KAAK0I,OAED7B,SAAV6B,EACF,QAEF,IAAI0T,EACJ,IAAIpc,KAAKoc,WAAW1T,GAClB0T,EAAapc,KAAKoc,WAAW1T,OAE1B,CACH,GAAI2F,KACJA,GAAE0T,OAAS/hB,KAAK+hB,OAChB1T,EAAE/J,MAAQtE,KAAK6X,OAAOnP,EAEtB,IAAI0pB,GAAW,GAAItxB,GAASd,KAAKyT,MAAMiB,OAAQ,SAAU5E,GAAO,MAAQA,GAAKzB,EAAE0T,SAAW1T,EAAE/J,SAAW2R,KACvGmG,GAAapc,KAAK6xB,MAAM/N,eAAesO,GAEvCpyB,KAAKoc,WAAW1T,GAAS0T,EAG3B,MAAOA,IAQTjb,EAAO+S,UAAUsO,kBAAoB,SAAS3Z,GAC5C7I,KAAK8xB,eAAiBjpB,GASxB1H,EAAO+S,UAAU4V,YAAc,SAASphB,GACtC,GAAIA,GAAS1I,KAAK6X,OAAO7R,OACvB,KAAM,2BAERhG,MAAK0I,MAAQA,EACb1I,KAAKsE,MAAQtE,KAAK6X,OAAOnP,IAO3BvH,EAAO+S,UAAU6d,iBAAmB,SAASrpB,GAC7B7B,SAAV6B,IACFA,EAAQ,EAEV,IAAI4X,GAAQtgB,KAAK6xB,MAAMvR,KAEvB,IAAI5X,EAAQ1I,KAAK6X,OAAO7R,OAAQ,CAC9B,CAAqBhG,KAAK8jB,eAAepb,GAIlB7B,SAAnByZ,EAAM+R,WACR/R,EAAM+R,SAAWrgB,SAASM,cAAc,OACxCgO,EAAM+R,SAAS3kB,MAAMkX,SAAW,WAChCtE,EAAM+R,SAAS3kB,MAAMnC,MAAQ,OAC7B+U,EAAMpO,YAAYoO,EAAM+R,UAE1B,IAAIA,GAAWryB,KAAKiyB,mBACpB3R,GAAM+R,SAASpN,UAAY,wBAA0BoN,EAAW,IAEhE/R,EAAM+R,SAAS3kB,MAAM4W,OAAS,OAC9BhE,EAAM+R,SAAS3kB,MAAM7F,KAAO,MAE5B,IAAIqN,GAAKlV,IACTua,YAAW,WAAYrF,EAAG6c,iBAAiBrpB,EAAM,IAAM,IACvD1I,KAAKM,QAAS,MAGdN,MAAKM,QAAS,EAGSuG,SAAnByZ,EAAM+R,WACR/R,EAAM1O,YAAY0O,EAAM+R,UACxB/R,EAAM+R,SAAWxrB,QAGf7G,KAAK8xB,gBACP9xB,KAAK8xB,kBAIXjyB,EAAOD,QAAUuB,GAKb,SAAStB,GAOb,QAASuB,GAASoR,EAAGC,GACnBzS,KAAKwS,EAAU3L,SAAN2L,EAAkBA,EAAI,EAC/BxS,KAAKyS,EAAU5L,SAAN4L,EAAkBA,EAAI,EAGjC5S,EAAOD,QAAUwB,GAKb,SAASvB,GAQb,QAASwB,GAAQmR,EAAGC,EAAGyL,GACrBle,KAAKwS,EAAU3L,SAAN2L,EAAkBA,EAAI,EAC/BxS,KAAKyS,EAAU5L,SAAN4L,EAAkBA,EAAI,EAC/BzS,KAAKke,EAAUrX,SAANqX,EAAkBA,EAAI,EASjC7c,EAAQ6qB,SAAW,SAAStmB,EAAGa,GAC7B,GAAI6rB,GAAM,GAAIjxB,EAId,OAHAixB,GAAI9f,EAAI5M,EAAE4M,EAAI/L,EAAE+L,EAChB8f,EAAI7f,EAAI7M,EAAE6M,EAAIhM,EAAEgM,EAChB6f,EAAIpU,EAAItY,EAAEsY,EAAIzX,EAAEyX,EACToU,GASTjxB,EAAQ2S,IAAM,SAASpO,EAAGa,GACxB,GAAI8rB,GAAM,GAAIlxB,EAId,OAHAkxB,GAAI/f,EAAI5M,EAAE4M,EAAI/L,EAAE+L,EAChB+f,EAAI9f,EAAI7M,EAAE6M,EAAIhM,EAAEgM,EAChB8f,EAAIrU,EAAItY,EAAEsY,EAAIzX,EAAEyX,EACTqU,GASTlxB,EAAQ2rB,IAAM,SAASpnB,EAAGa,GACxB,MAAO,IAAIpF,IACFuE,EAAE4M,EAAI/L,EAAE+L,GAAK,GACb5M,EAAE6M,EAAIhM,EAAEgM,GAAK,GACb7M,EAAEsY,EAAIzX,EAAEyX,GAAK,IAWxB7c,EAAQgrB,aAAe,SAASzmB,EAAGa,GACjC,GAAI2lB,GAAe,GAAI/qB,EAMvB,OAJA+qB,GAAa5Z,EAAI5M,EAAE6M,EAAIhM,EAAEyX,EAAItY,EAAEsY,EAAIzX,EAAEgM,EACrC2Z,EAAa3Z,EAAI7M,EAAEsY,EAAIzX,EAAE+L,EAAI5M,EAAE4M,EAAI/L,EAAEyX,EACrCkO,EAAalO,EAAItY,EAAE4M,EAAI/L,EAAEgM,EAAI7M,EAAE6M,EAAIhM,EAAE+L,EAE9B4Z,GAQT/qB,EAAQ6S,UAAUlO,OAAS,WACzB,MAAOxB,MAAKgsB,KACJxwB,KAAKwS,EAAIxS,KAAKwS,EACdxS,KAAKyS,EAAIzS,KAAKyS,EACdzS,KAAKke,EAAIle,KAAKke,IAIxBre,EAAOD,QAAUyB,GAKb,SAASxB,EAAQD,EAASM,GAa9B,QAASoB,GAAOkZ,EAAWtL,GACzB,GAAkBrI,SAAd2T,EACF,KAAM,qCAKR,IAHAxa,KAAKwa,UAAYA,EACjBxa,KAAKypB,QAAWva,GAA8BrI,QAAnBqI,EAAQua,QAAwBva,EAAQua,SAAU,EAEzEzpB,KAAKypB,QAAS,CAChBzpB,KAAKsgB,MAAQtO,SAASM,cAAc,OAEpCtS,KAAKsgB,MAAM5S,MAAM4F,MAAQ,OACzBtT,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKwa,UAAUtI,YAAYlS,KAAKsgB,OAEhCtgB,KAAKsgB,MAAMkS,KAAOxgB,SAASM,cAAc,SACzCtS,KAAKsgB,MAAMkS,KAAKrrB,KAAO,SACvBnH,KAAKsgB,MAAMkS,KAAKluB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMkS,MAElCxyB,KAAKsgB,MAAM0F,KAAOhU,SAASM,cAAc,SACzCtS,KAAKsgB,MAAM0F,KAAK7e,KAAO,SACvBnH,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM0F,MAElChmB,KAAKsgB,MAAM+I,KAAOrX,SAASM,cAAc,SACzCtS,KAAKsgB,MAAM+I,KAAKliB,KAAO,SACvBnH,KAAKsgB,MAAM+I,KAAK/kB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM+I,MAElCrpB,KAAKsgB,MAAMmS,IAAMzgB,SAASM,cAAc,SACxCtS,KAAKsgB,MAAMmS,IAAItrB,KAAO,SACtBnH,KAAKsgB,MAAMmS,IAAI/kB,MAAMkX,SAAW,WAChC5kB,KAAKsgB,MAAMmS,IAAI/kB,MAAMZ,OAAS,gBAC9B9M,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,MAAQ,QAC7BtT,KAAKsgB,MAAMmS,IAAI/kB,MAAM6F,OAAS,MAC9BvT,KAAKsgB,MAAMmS,IAAI/kB,MAAMkjB,aAAe,MACpC5wB,KAAKsgB,MAAMmS,IAAI/kB,MAAMglB,gBAAkB,MACvC1yB,KAAKsgB,MAAMmS,IAAI/kB,MAAMZ,OAAS,oBAC9B9M,KAAKsgB,MAAMmS,IAAI/kB,MAAMiT,gBAAkB,UACvC3gB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMmS,KAElCzyB,KAAKsgB,MAAMqS,MAAQ3gB,SAASM,cAAc,SAC1CtS,KAAKsgB,MAAMqS,MAAMxrB,KAAO,SACxBnH,KAAKsgB,MAAMqS,MAAMjlB,MAAMiN,OAAS,MAChC3a,KAAKsgB,MAAMqS,MAAMruB,MAAQ,IACzBtE,KAAKsgB,MAAMqS,MAAMjlB,MAAMkX,SAAW,WAClC5kB,KAAKsgB,MAAMqS,MAAMjlB,MAAM7F,KAAO,SAC9B7H,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMqS,MAGlC,IAAIzd,GAAKlV,IACTA,MAAKsgB,MAAMqS,MAAMzN,YAAc,SAAUrb,GAAQqL,EAAGiQ,aAAatb,IACjE7J,KAAKsgB,MAAMkS,KAAKI,QAAU,SAAU/oB,GAAQqL,EAAGsd,KAAK3oB,IACpD7J,KAAKsgB,MAAM0F,KAAK4M,QAAU,SAAU/oB,GAAQqL,EAAG2d,WAAWhpB,IAC1D7J,KAAKsgB,MAAM+I,KAAKuJ,QAAU,SAAU/oB,GAAQqL,EAAGmU,KAAKxf,IAGtD7J,KAAK8yB,iBAAmBjsB,OAExB7G,KAAK6X,UACL7X,KAAK0I,MAAQ7B,OAEb7G,KAAK+yB,YAAclsB,OACnB7G,KAAKgzB,aAAe,IACpBhzB,KAAKizB,UAAW,EA3ElB,GAAItyB,GAAOT,EAAoB,EAiF/BoB,GAAO4S,UAAUse,KAAO,WACtB,GAAI9pB,GAAQ1I,KAAK6pB,UACbnhB,GAAQ,IACVA,IACA1I,KAAKkzB,SAASxqB,KAOlBpH,EAAO4S,UAAUmV,KAAO,WACtB,GAAI3gB,GAAQ1I,KAAK6pB,UACbnhB,GAAQ1I,KAAK6X,OAAO7R,OAAS,IAC/B0C,IACA1I,KAAKkzB,SAASxqB,KAOlBpH,EAAO4S,UAAUif,SAAW,WAC1B,GAAI9iB,GAAQ,GAAIzL,MAEZ8D,EAAQ1I,KAAK6pB,UACbnhB,GAAQ1I,KAAK6X,OAAO7R,OAAS,GAC/B0C,IACA1I,KAAKkzB,SAASxqB,IAEP1I,KAAKizB,WAEZvqB,EAAQ,EACR1I,KAAKkzB,SAASxqB,GAGhB,IAAI4H,GAAM,GAAI1L,MACVsoB,EAAQ5c,EAAMD,EAId+iB,EAAW5uB,KAAKJ,IAAIpE,KAAKgzB,aAAe9F,EAAM,GAG9ChY,EAAKlV,IACTA,MAAK+yB,YAAcxY,WAAW,WAAYrF,EAAGie,YAAcC,IAM7D9xB,EAAO4S,UAAU2e,WAAa,WACHhsB,SAArB7G,KAAK+yB,YACP/yB,KAAKgmB,OAELhmB,KAAKkmB,QAOT5kB,EAAO4S,UAAU8R,KAAO,WAElBhmB,KAAK+yB,cAET/yB,KAAKmzB,WAEDnzB,KAAKsgB,QACPtgB,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,UAO5BhD,EAAO4S,UAAUgS,KAAO,WACtBmN,cAAcrzB,KAAK+yB,aACnB/yB,KAAK+yB,YAAclsB,OAEf7G,KAAKsgB,QACPtgB,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,SAQ5BhD,EAAO4S,UAAU6V,oBAAsB,SAASlhB,GAC9C7I,KAAK8yB,iBAAmBjqB,GAO1BvH,EAAO4S,UAAUyV,gBAAkB,SAASyJ,GAC1CpzB,KAAKgzB,aAAeI,GAOtB9xB,EAAO4S,UAAUof,gBAAkB,WACjC,MAAOtzB,MAAKgzB,cASd1xB,EAAO4S,UAAUqf,YAAc,SAASC,GACtCxzB,KAAKizB,SAAWO,GAOlBlyB,EAAO4S,UAAUuf,SAAW,WACI5sB,SAA1B7G,KAAK8yB,kBACP9yB,KAAK8yB,oBAOTxxB,EAAO4S,UAAUuO,OAAS,WACxB,GAAIziB,KAAKsgB,MAAO,CAEdtgB,KAAKsgB,MAAMmS,IAAI/kB,MAAMzF,IAAOjI,KAAKsgB,MAAMuF,aAAa,EAChD7lB,KAAKsgB,MAAMmS,IAAIvB,aAAa,EAAK,KACrClxB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,MAAStT,KAAKsgB,MAAME,YACrCxgB,KAAKsgB,MAAMkS,KAAKhS,YAChBxgB,KAAKsgB,MAAM0F,KAAKxF,YAChBxgB,KAAKsgB,MAAM+I,KAAK7I,YAAc,GAAO,IAGzC,IAAI3Y,GAAO7H,KAAK0zB,YAAY1zB,KAAK0I,MACjC1I,MAAKsgB,MAAMqS,MAAMjlB,MAAM7F,KAAO,EAAS,OAS3CvG,EAAO4S,UAAUwV,UAAY,SAAS7R,GACpC7X,KAAK6X,OAASA,EAEV7X,KAAK6X,OAAO7R,OAAS,EACvBhG,KAAKkzB,SAAS,GAEdlzB,KAAK0I,MAAQ7B,QAOjBvF,EAAO4S,UAAUgf,SAAW,SAASxqB,GACnC,KAAIA,EAAQ1I,KAAK6X,OAAO7R,QAOtB,KAAM,2BANNhG,MAAK0I,MAAQA,EAEb1I,KAAKyiB,SACLziB,KAAKyzB,YAWTnyB,EAAO4S,UAAU2V,SAAW,WAC1B,MAAO7pB,MAAK0I,OAQdpH,EAAO4S,UAAU+B,IAAM,WACrB,MAAOjW,MAAK6X,OAAO7X,KAAK0I,QAI1BpH,EAAO4S,UAAUiR,aAAe,SAAStb,GAEvC,GAAIsjB,GAAiBtjB,EAAMwjB,MAAyB,IAAhBxjB,EAAMwjB,MAAiC,IAAjBxjB,EAAMyjB,MAChE,IAAKH,EAAL,CAEAntB,KAAK2zB,aAAe9pB,EAAM+T,QAC1B5d,KAAK4zB,YAAcvN,WAAWrmB,KAAKsgB,MAAMqS,MAAMjlB,MAAM7F,MAErD7H,KAAKsgB,MAAM5S,MAAMmgB,OAAS,MAK1B,IAAI3Y,GAAKlV,IACTA,MAAK8tB,YAAc,SAAUjkB,GAAQqL,EAAG6Y,aAAalkB,IACrD7J,KAAKguB,UAAc,SAAUnkB,GAAQqL,EAAGkY,WAAWvjB,IACnDlJ,EAAKuI,iBAAiB8I,SAAU,YAAahS,KAAK8tB,aAClDntB,EAAKuI,iBAAiB8I,SAAU,UAAahS,KAAKguB,WAClDrtB,EAAKiJ,eAAeC,KAItBvI,EAAO4S,UAAU2f,YAAc,SAAUhsB,GACvC,GAAIyL,GAAQ+S,WAAWrmB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,OACxCtT,KAAKsgB,MAAMqS,MAAMnS,YAAc,GAC/BhO,EAAI3K,EAAO,EAEXa,EAAQlE,KAAK+pB,MAAM/b,EAAIc,GAAStT,KAAK6X,OAAO7R,OAAO,GAIvD,OAHY,GAAR0C,IAAWA,EAAQ,GACnBA,EAAQ1I,KAAK6X,OAAO7R,OAAO,IAAG0C,EAAQ1I,KAAK6X,OAAO7R,OAAO,GAEtD0C,GAGTpH,EAAO4S,UAAUwf,YAAc,SAAUhrB,GACvC,GAAI4K,GAAQ+S,WAAWrmB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,OACxCtT,KAAKsgB,MAAMqS,MAAMnS,YAAc,GAE/BhO,EAAI9J,GAAS1I,KAAK6X,OAAO7R,OAAO,GAAKsN,EACrCzL,EAAO2K,EAAI,CAEf,OAAO3K,IAKTvG,EAAO4S,UAAU6Z,aAAe,SAAUlkB,GACxC,GAAIqjB,GAAOrjB,EAAM+T,QAAU5d,KAAK2zB,aAC5BnhB,EAAIxS,KAAK4zB,YAAc1G,EAEvBxkB,EAAQ1I,KAAK6zB,YAAYrhB,EAE7BxS,MAAKkzB,SAASxqB,GAEd/H,EAAKiJ,kBAIPtI,EAAO4S,UAAUkZ,WAAa,WAC5BptB,KAAKsgB,MAAM5S,MAAMmgB,OAAS,OAG1BltB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAK8tB,aACrDntB,EAAK+I,oBAAoBsI,SAAU,UAAWhS,KAAKguB,WAEnDrtB,EAAKiJ,kBAGP/J,EAAOD,QAAU0B,GAKb,SAASzB,GA2Bb,QAAS0B,GAAW8O,EAAOC,EAAK6Y,EAAMkB,GAEpCrqB,KAAK8zB,OAAS,EACd9zB,KAAK+zB,KAAO,EACZ/zB,KAAKg0B,MAAQ,EACbh0B,KAAKqqB,YAAa,EAClBrqB,KAAKi0B,UAAY,EAEjBj0B,KAAKk0B,SAAW,EAChBl0B,KAAKm0B,SAAS9jB,EAAOC,EAAK6Y,EAAMkB,GAYlC9oB,EAAW2S,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK6Y,EAAMkB,GACzDrqB,KAAK8zB,OAASzjB,EAAQA,EAAQ,EAC9BrQ,KAAK+zB,KAAOzjB,EAAMA,EAAM,EAExBtQ,KAAKo0B,QAAQjL,EAAMkB,IASrB9oB,EAAW2S,UAAUkgB,QAAU,SAASjL,EAAMkB,GAC/BxjB,SAATsiB,GAA8B,GAARA,IAGPtiB,SAAfwjB,IACFrqB,KAAKqqB,WAAaA,GAGlBrqB,KAAKg0B,MADHh0B,KAAKqqB,cAAe,EACT9oB,EAAW8yB,oBAAoBlL,GAE/BA,IAUjB5nB,EAAW8yB,oBAAsB,SAAUlL,GACzC,GAAImL,GAAQ,SAAU9hB,GAAI,MAAOhO,MAAK+vB,IAAI/hB,GAAKhO,KAAKgwB,MAGhDC,EAAQjwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,KACtCwL,EAAQ,EAAInwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,EAAO,KACjDyL,EAAQ,EAAIpwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,EAAO,KAGjDkB,EAAaoK,CASjB,OARIjwB,MAAKknB,IAAIiJ,EAAQxL,IAAS3kB,KAAKknB,IAAIrB,EAAalB,KAAOkB,EAAasK,GACpEnwB,KAAKknB,IAAIkJ,EAAQzL,IAAS3kB,KAAKknB,IAAIrB,EAAalB,KAAOkB,EAAauK,GAGtD,GAAdvK,IACFA,EAAa,GAGRA,GAOT9oB,EAAW2S,UAAUkV,WAAa,WAChC,MAAO/C,YAAWrmB,KAAKk0B,SAASW,YAAY70B,KAAKi0B,aAOnD1yB,EAAW2S,UAAU4gB,QAAU,WAC7B,MAAO90B,MAAKg0B,OAOdzyB,EAAW2S,UAAU7D,MAAQ,WAC3BrQ,KAAKk0B,SAAWl0B,KAAK8zB,OAAS9zB,KAAK8zB,OAAS9zB,KAAKg0B,OAMnDzyB,EAAW2S,UAAUmV,KAAO,WAC1BrpB,KAAKk0B,UAAYl0B,KAAKg0B,OAOxBzyB,EAAW2S,UAAU5D,IAAM,WACzB,MAAQtQ,MAAKk0B,SAAWl0B,KAAK+zB,MAG/Bl0B,EAAOD,QAAU2B,GAKb,SAAS1B,EAAQD,EAASM,GAuB9B,QAASsB,GAAUgZ,EAAWvY,EAAO8yB,EAAQ7lB,GAC3C,KAAMlP,eAAgBwB,IACpB,KAAM,IAAIiZ,aAAY,mDAIxB,MAAMnU,MAAMC,QAAQwuB,IAAWA,YAAkBl0B,IAAWk0B,YAAkBj0B,KAAai0B,YAAkBnuB,QAAQ,CACnH,GAAIouB,GAAgB9lB,CACpBA,GAAU6lB,EACVA,EAASC,EAGX,GAAI9f,GAAKlV,IACTA,MAAKi1B,gBACH5kB,MAAO,KACPC,IAAO,KAEP4kB,YAAY,EAEZC,YAAa,SACb7hB,MAAO,KACPC,OAAQ,KACR6hB,UAAW,KACXC,UAAW,MAEbr1B,KAAKkP,QAAUvO,EAAKmG,cAAe9G,KAAKi1B,gBAGxCj1B,KAAKs1B,QAAQ9a,GAGbxa,KAAKgC,cAELhC,KAAKu1B,MACH5E,IAAK3wB,KAAK2wB,IACV6E,SAAUx1B,KAAKqG,MACfovB,SACEnhB,GAAItU,KAAKsU,GAAGohB,KAAK11B,MACjByU,IAAKzU,KAAKyU,IAAIihB,KAAK11B,MACnByuB,KAAMzuB,KAAKyuB,KAAKiH,KAAK11B,OAEvB21B,eACAh1B,MACEi1B,SAAU,WACR,MAAO1gB,GAAG2gB,SAAS1M,KAAK5kB,OAE1BuwB,QAAS,WACP,MAAO5f,GAAG2gB,SAAS1M,KAAKA,MAG1B2M,SAAU5gB,EAAG6gB,UAAUL,KAAKxgB,GAC5B8gB,eAAgB9gB,EAAG+gB,gBAAgBP,KAAKxgB,GACxCghB,OAAQhhB,EAAGihB,QAAQT,KAAKxgB,GACxBkhB,aAAelhB,EAAGmhB,cAAcX,KAAKxgB,KAKzClV,KAAKs2B,MAAQ,GAAIz0B,GAAM7B,KAAKu1B,MAC5Bv1B,KAAKgC,WAAWuG,KAAKvI,KAAKs2B,OAC1Bt2B,KAAKu1B,KAAKe,MAAQt2B,KAAKs2B,MAGvBt2B,KAAK61B,SAAW,GAAI5yB,GAASjD,KAAKu1B,MAClCv1B,KAAKu2B,UAAY,KACjBv2B,KAAKgC,WAAWuG,KAAKvI,KAAK61B,UAG1B71B,KAAKw2B,YAAc,GAAIh0B,GAAYxC,KAAKu1B,MACxCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKw2B,aAI1Bx2B,KAAKy2B,WAAa,GAAIh0B,GAAWzC,KAAKu1B,MACtCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKy2B,YAG1Bz2B,KAAK02B,QAAU,GAAI5zB,GAAQ9C,KAAKu1B,MAChCv1B,KAAKgC,WAAWuG,KAAKvI,KAAK02B,SAE1B12B,KAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAElB52B,KAAKsU,GAAG,MAAO,SAAUzK,GACvBqL,EAAGuZ,KAAK,QAASvZ,EAAG2hB,mBAAmBhtB,MAEzC7J,KAAKsU,GAAG,YAAa,SAAUzK,GAC7BqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,MAE/C7J,KAAK2wB,IAAIjxB,KAAKo3B,cAAgB,SAAUjtB,GACtCqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,KAI3CqF,GACFlP,KAAKiU,WAAW/E,GAId6lB,GACF/0B,KAAK+2B,UAAUhC,GAIb9yB,EACFjC,KAAKg3B,SAAS/0B,GAGdjC,KAAKi3B,UAjIT,GAEIt2B,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B2B,EAAQ3B,EAAoB,IAC5Bg3B,EAAOh3B,EAAoB,IAC3B+C,EAAW/C,EAAoB,IAC/BsC,EAActC,EAAoB,IAClCuC,EAAavC,EAAoB,IACjC4C,EAAU5C,EAAoB,GA4HlCsB,GAAS0S,UAAY,GAAIgjB,GAOzB11B,EAAS0S,UAAUuO,OAAS,WAC1BziB,KAAK02B,SAAW12B,KAAK02B,QAAQS,WAAWC,cAAc,IACtDp3B,KAAKi3B,WAOPz1B,EAAS0S,UAAU8iB,SAAW,SAAS/0B,GACrC,GAGIo1B,GAHAC,EAAiC,MAAlBt3B,KAAK22B,SAwBxB,IAhBEU,EAJGp1B,EAGIA,YAAiBpB,IAAWoB,YAAiBnB,GACvCmB,EAIA,GAAIpB,GAAQoB,GACvBkF,MACEkJ,MAAO,OACPC,IAAK,UAVI,KAgBftQ,KAAK22B,UAAYU,EACjBr3B,KAAK02B,SAAW12B,KAAK02B,QAAQM,SAASK,GAElCC,EACF,GAA0BzwB,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAAkB,CACpE,GAA0BzJ,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAClD,GAAIinB,GAAYv3B,KAAKw3B,eAGvB,IAAInnB,GAA8BxJ,QAAtB7G,KAAKkP,QAAQmB,MAAqBrQ,KAAKkP,QAAQmB,MAAQknB,EAAUlnB,MACzEC,EAA4BzJ,QAApB7G,KAAKkP,QAAQoB,IAAqBtQ,KAAKkP,QAAQoB,IAAQinB,EAAUjnB,GAE7EtQ,MAAKy3B,UAAUpnB,EAAOC,GAAMonB,SAAS,QAGrC13B,MAAK23B,KAAKD,SAAS,KASzBl2B,EAAS0S,UAAU6iB,UAAY,SAAShC,GAEtC,GAAIsC,EAKFA,GAJGtC,EAGIA,YAAkBl0B,IAAWk0B,YAAkBj0B,GACzCi0B,EAIA,GAAIl0B,GAAQk0B,GAPZ,KAUf/0B,KAAK42B,WAAaS,EAClBr3B,KAAK02B,QAAQK,UAAUM,IAmBzB71B,EAAS0S,UAAU0jB,aAAe,SAAS1hB,EAAKhH,GAC9ClP,KAAK02B,SAAW12B,KAAK02B,QAAQkB,aAAa1hB,GAEtChH,GAAWA,EAAQ2oB,OACrB73B,KAAK63B,MAAM3hB,EAAKhH,IAQpB1N,EAAS0S,UAAU4jB,aAAe,WAChC,MAAO93B,MAAK02B,SAAW12B,KAAK02B,QAAQoB,oBAetCt2B,EAAS0S,UAAU2jB,MAAQ,SAASx3B,EAAI6O,GACtC,GAAKlP,KAAK22B,WAAmB9vB,QAANxG,EAAvB,CAEA,GAAI6V,GAAM5P,MAAMC,QAAQlG,GAAMA,GAAMA,GAGhCs2B,EAAY32B,KAAK22B,UAAU9f,aAAaZ,IAAIC,GAC9C/O,MACEkJ,MAAO,OACPC,IAAK,UAKLD,EAAQ,KACRC,EAAM,IAcV,IAbAqmB,EAAU/tB,QAAQ,SAAUmvB,GAC1B,GAAIxrB,GAAIwrB,EAAS1nB,MAAMhJ,UACnBiD,EAAI,OAASytB,GAAWA,EAASznB,IAAIjJ,UAAY0wB,EAAS1nB,MAAMhJ,WAEtD,OAAVgJ,GAAsBA,EAAJ9D,KACpB8D,EAAQ9D,IAGE,OAAR+D,GAAgBhG,EAAIgG,KACtBA,EAAMhG,KAII,OAAV+F,GAA0B,OAARC,EAAc,CAElC,GAAIT,IAAUQ,EAAQC,GAAO,EACzB8iB,EAAW5uB,KAAKJ,IAAKpE,KAAKs2B,MAAMhmB,IAAMtQ,KAAKs2B,MAAMjmB,MAAwB,KAAfC,EAAMD,IAEhEqnB,EAAWxoB,GAA+BrI,SAApBqI,EAAQwoB,QAAyBxoB,EAAQwoB,SAAU,CAC7E13B,MAAKs2B,MAAMnC,SAAStkB,EAASujB,EAAW,EAAGvjB,EAASujB,EAAW,EAAGsE,MAUtEl2B,EAAS0S,UAAU8jB,aAAe,WAEhC,GAAIC,GAAUj4B,KAAK22B,UAAU9f,aAC3B1S,EAAM,KACNC,EAAM,IAER,IAAI6zB,EAAS,CAEX,GAAIC,GAAUD,EAAQ9zB,IAAI,QAC1BA,GAAM+zB,EAAUv3B,EAAKuG,QAAQgxB,EAAQ7nB,MAAO,QAAQhJ,UAAY,IAKhE,IAAI8wB,GAAeF,EAAQ7zB,IAAI,QAC3B+zB,KACF/zB,EAAMzD,EAAKuG,QAAQixB,EAAa9nB,MAAO,QAAQhJ,UAEjD,IAAI+wB,GAAaH,EAAQ7zB,IAAI,MACzBg0B,KAEAh0B,EADS,MAAPA,EACIzD,EAAKuG,QAAQkxB,EAAW9nB,IAAK,QAAQjJ,UAGrC7C,KAAKJ,IAAIA,EAAKzD,EAAKuG,QAAQkxB,EAAW9nB,IAAK,QAAQjJ,YAK/D,OACElD,IAAa,MAAPA,EAAe,GAAIS,MAAKT,GAAO,KACrCC,IAAa,MAAPA,EAAe,GAAIQ,MAAKR,GAAO,OAUzC5C,EAAS0S,UAAU2iB,mBAAqB,SAAUhtB,GAChD,GAAIiG,GAAQ9P,KAAK02B,QAAQ2B,eAAexuB,GACpC6I,EAAQ1S,KAAK02B,QAAQ4B,gBAAgBzuB,GACrC0uB,EAAQ1uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAOwL,MAAQ1uB,EAAM0uB,MAC3DE,EAAQ5uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAO0L,MAAQ5uB,EAAM4uB,MAC3DjmB,EAAI+lB,EAAQ53B,EAAK+G,gBAAgB1H,KAAK2wB,IAAI+H,iBAC1CjmB,EAAIgmB,EAAQ93B,EAAKqH,eAAehI,KAAK2wB,IAAI+H,iBAEzCC,EAAO34B,KAAK02B,QAAQxnB,QAAQypB,MAAQ,KACpCp0B,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UACtB8D,EAAO54B,KAAKm2B,QAAQ3jB,GACpBqmB,EAAcF,EAAOA,EAAKC,EAAMr0B,EAAO4kB,GAAQyP,EAE/CzvB,EAAUxI,EAAKoJ,UAAUF,GACzBivB,EAAO,IASX,OARY,OAARhpB,EAAkEgpB,EAAO,OACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK61B,SAASlF,IAAIoI,YAAmBD,EAAO,OACpE94B,KAAKu2B,WAAa51B,EAAKyJ,UAAUjB,EAASnJ,KAAKu2B,UAAU5F,IAAIoI,YAAcD,EAAO,OAClFn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK02B,QAAQ/F,IAAIqI,UAAoBF,EAAO,cACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKy2B,WAAWhE,KAAqBqG,EAAO,cACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKw2B,YAAY/D,KAAoBqG,EAAO,eACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK2wB,IAAI5D,UAA4B+L,EAAO,eAG3EjvB,MAAOA,EACPiG,KAAMA,EAAOA,EAAKzP,GAAK,KACvBqS,MAAOA,EAAQA,EAAMumB,QAAU,KAC/BH,KAAMA,EACNP,MAAOA,EACPE,MAAOA,EACPjmB,EAAGA,EACHC,EAAGA,EACHmmB,KAAMA,EACNC,YAAaA,IAIjBh5B,EAAOD,QAAU4B,GAKb,SAAS3B,EAAQD,EAASM,GAsB9B,QAASuB,GAAS+Y,EAAWvY,EAAO8yB,EAAQ7lB,GAE1C,KAAM5I,MAAMC,QAAQwuB,IAAWA,YAAkBl0B,KAAYk0B,YAAkBnuB,QAAQ,CACrF,GAAIouB,GAAgB9lB,CACpBA,GAAU6lB,EACVA,EAASC,EAGX,GAAI9f,GAAKlV,IACTA,MAAKi1B,gBACH5kB,MAAO,KACPC,IAAO,KAEP4kB,YAAY,EAEZC,YAAa,SACb7hB,MAAO,KACPC,OAAQ,KACR6hB,UAAW,KACXC,UAAW,MAEbr1B,KAAKkP,QAAUvO,EAAKmG,cAAe9G,KAAKi1B,gBAGxCj1B,KAAKs1B,QAAQ9a,GAGbxa,KAAKgC,cAELhC,KAAKu1B,MACH5E,IAAK3wB,KAAK2wB,IACV6E,SAAUx1B,KAAKqG,MACfovB,SACEnhB,GAAItU,KAAKsU,GAAGohB,KAAK11B,MACjByU,IAAKzU,KAAKyU,IAAIihB,KAAK11B,MACnByuB,KAAMzuB,KAAKyuB,KAAKiH,KAAK11B,OAEvB21B,eACAh1B,MACEm1B,SAAU5gB,EAAG6gB,UAAUL,KAAKxgB,GAC5B8gB,eAAgB9gB,EAAG+gB,gBAAgBP,KAAKxgB,GACxCghB,OAAQhhB,EAAGihB,QAAQT,KAAKxgB,GACxBkhB,aAAelhB,EAAGmhB,cAAcX,KAAKxgB,KAKzClV,KAAKs2B,MAAQ,GAAIz0B,GAAM7B,KAAKu1B,MAC5Bv1B,KAAKgC,WAAWuG,KAAKvI,KAAKs2B,OAC1Bt2B,KAAKu1B,KAAKe,MAAQt2B,KAAKs2B,MAGvBt2B,KAAK61B,SAAW,GAAI5yB,GAASjD,KAAKu1B,MAClCv1B,KAAKgC,WAAWuG,KAAKvI,KAAK61B,UAI1B71B,KAAKw2B,YAAc,GAAIh0B,GAAYxC,KAAKu1B,MACxCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKw2B,aAI1Bx2B,KAAKy2B,WAAa,GAAIh0B,GAAWzC,KAAKu1B,MACtCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKy2B,YAG1Bz2B,KAAKk5B,UAAY,GAAIl2B,GAAUhD,KAAKu1B,MACpCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKk5B,WAE1Bl5B,KAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAElB52B,KAAKsU,GAAG,MAAO,SAAUzK,GACvBqL,EAAGuZ,KAAK,QAASvZ,EAAG2hB,mBAAmBhtB,MAEzC7J,KAAKsU,GAAG,YAAa,SAAUzK,GAC7BqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,MAE/C7J,KAAK2wB,IAAIjxB,KAAKo3B,cAAgB,SAAUjtB,GACtCqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,KAI3CqF,GACFlP,KAAKiU,WAAW/E,GAId6lB,GACF/0B,KAAK+2B,UAAUhC,GAIb9yB,EACFjC,KAAKg3B,SAAS/0B,GAGdjC,KAAKi3B,UArHT,GAEIt2B,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B2B,EAAQ3B,EAAoB,IAC5Bg3B,EAAOh3B,EAAoB,IAC3B+C,EAAW/C,EAAoB,IAC/BsC,EAActC,EAAoB,IAClCuC,EAAavC,EAAoB,IACjC8C,EAAY9C,EAAoB,GAgHpCuB,GAAQyS,UAAY,GAAIgjB,GAMxBz1B,EAAQyS,UAAU8iB,SAAW,SAAS/0B,GACpC,GAGIo1B,GAHAC,EAAiC,MAAlBt3B,KAAK22B,SAwBxB,IAhBEU,EAJGp1B,EAGIA,YAAiBpB,IAAWoB,YAAiBnB,GACvCmB,EAIA,GAAIpB,GAAQoB,GACvBkF,MACEkJ,MAAO,OACPC,IAAK,UAVI,KAgBftQ,KAAK22B,UAAYU,EACjBr3B,KAAKk5B,WAAal5B,KAAKk5B,UAAUlC,SAASK,GAEtCC,EACF,GAA0BzwB,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAAkB,CACpE,GAAID,GAA8BxJ,QAAtB7G,KAAKkP,QAAQmB,MAAqBrQ,KAAKkP,QAAQmB,MAAQ,KAC/DC,EAA4BzJ,QAApB7G,KAAKkP,QAAQoB,IAAqBtQ,KAAKkP,QAAQoB,IAAM,IAEjEtQ,MAAKy3B,UAAUpnB,EAAOC,GAAMonB,SAAS,QAGrC13B,MAAK23B,KAAKD,SAAS,KASzBj2B,EAAQyS,UAAU6iB,UAAY,SAAShC,GAErC,GAAIsC,EAKFA,GAJGtC,EAGIA,YAAkBl0B,IAAWk0B,YAAkBj0B,GACzCi0B,EAIA,GAAIl0B,GAAQk0B,GAPZ,KAUf/0B,KAAK42B,WAAaS,EAClBr3B,KAAKk5B,UAAUnC,UAAUM,IAS3B51B,EAAQyS,UAAUilB,UAAY,SAASF,EAAS3lB,EAAOC,GAGrD,MAFe1M,UAAXyM,IAAuBA,EAAS,IACrBzM,SAAX0M,IAAuBA,EAAS,IACG1M,SAAnC7G,KAAKk5B,UAAUnE,OAAOkE,GACjBj5B,KAAKk5B,UAAUnE,OAAOkE,GAASE,UAAU7lB,EAAMC,GAG/C,qBAAwB0lB,GASnCx3B,EAAQyS,UAAUklB,eAAiB,SAASH,GAC1C,MAAuCpyB,UAAnC7G,KAAKk5B,UAAUnE,OAAOkE,GAChBj5B,KAAKk5B,UAAUnE,OAAOkE,GAASxP,UAAkE5iB,SAAtD7G,KAAKk5B,UAAUhqB,QAAQ6lB,OAAOsE,WAAWJ,IAA+E,GAArDj5B,KAAKk5B,UAAUhqB,QAAQ6lB,OAAOsE,WAAWJ,KAGxJ,GAWXx3B,EAAQyS,UAAU8jB,aAAe,WAC/B,GAAI7zB,GAAM,KACNC,EAAM,IAGV,KAAK,GAAI60B,KAAWj5B,MAAKk5B,UAAUnE,OACjC,GAAI/0B,KAAKk5B,UAAUnE,OAAO5uB,eAAe8yB,IACO,GAA1Cj5B,KAAKk5B,UAAUnE,OAAOkE,GAASxP,QACjC,IAAK,GAAI5jB,GAAI,EAAGA,EAAI7F,KAAKk5B,UAAUnE,OAAOkE,GAAStC,UAAU3wB,OAAQH,IAAK,CACxE,GAAIiK,GAAO9P,KAAKk5B,UAAUnE,OAAOkE,GAAStC,UAAU9wB,GAChDvB,EAAQ3D,EAAKuG,QAAQ4I,EAAK0C,EAAG,QAAQnL,SACzClD,GAAa,MAAPA,EAAcG,EAAQH,EAAMG,EAAQA,EAAQH,EAClDC,EAAa,MAAPA,EAAcE,EAAcA,EAANF,EAAcE,EAAQF,EAM1D,OACED,IAAa,MAAPA,EAAe,GAAIS,MAAKT,GAAO,KACrCC,IAAa,MAAPA,EAAe,GAAIQ,MAAKR,GAAO,OAWzC3C,EAAQyS,UAAU2iB,mBAAqB,SAAUhtB,GAC/C,GAAI0uB,GAAQ1uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAOwL,MAAQ1uB,EAAM0uB,MAC3DE,EAAQ5uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAO0L,MAAQ5uB,EAAM4uB,MAC3DjmB,EAAI+lB,EAAQ53B,EAAK+G,gBAAgB1H,KAAK2wB,IAAI+H,iBAC1CjmB,EAAIgmB,EAAQ93B,EAAKqH,eAAehI,KAAK2wB,IAAI+H,iBACzCE,EAAO54B,KAAKm2B,QAAQ3jB,GAEpBrJ,EAAUxI,EAAKoJ,UAAUF,GACzBivB,EAAO,IACPn4B,GAAKyJ,UAAUjB,EAASnJ,KAAK61B,SAASlF,IAAIoI,YAA2BD,EAAO,OACvE94B,KAAKu2B,WAAa51B,EAAKyJ,UAAUjB,EAASnJ,KAAKu2B,UAAU5F,IAAIoI,YAAcD,EAAO,OAClFn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUI,UAAU3I,IAAIrQ,OAAWwY,EAAO,YACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUK,WAAW5I,IAAIrQ,OAAUwY,EAAO,YACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUM,WAAW7I,IAAIrQ,OAAUwY,EAAO,SACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUO,YAAY9I,IAAIrQ,OAASwY,EAAO,SACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKy2B,WAAWhE,KAAwBqG,EAAO,cACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKw2B,YAAY/D,KAAuBqG,EAAO,eACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK2wB,IAAI5D,UAA+B+L,EAAO,aAEhF,IAAIx0B,MACAg1B,EAAYt5B,KAAKk5B,UAAUI,UAC3BC,EAAav5B,KAAKk5B,UAAUK,UAQhC,OAPKD,GAAUI,QACbp1B,EAAMiE,KAAK+wB,EAAUK,cAAclnB,IAEhC8mB,EAAWG,QACdp1B,EAAMiE,KAAKgxB,EAAWI,cAAclnB,KAIpC5I,MAAOA,EACPivB,KAAMA,EACNP,MAAOA,EACPE,MAAOA,EACPjmB,EAAGA,EACHC,EAAGA,EACHmmB,KAAMA,EACNt0B,MAAOA,IAKXzE,EAAOD,QAAU6B,GAKb,SAAS5B,EAAQD,EAASM,GAK9B,GAAI2D,GAAS3D,EAAoB,GAQjCN,GAAQg6B,qBAAuB,SAASrE,EAAMI,GAE5C,GADAJ,EAAKI,eACDA,GACgC,GAA9BrvB,MAAMC,QAAQovB,GAAsB,CACtC,IAAK,GAAI9vB,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IACtC,GAA8BgB,SAA1B8uB,EAAY9vB,GAAGg0B,OAAsB,CACvC,GAAIC,KACJA,GAASzpB,MAAQxM,EAAO8xB,EAAY9vB,GAAGwK,OAAO9I,SAASF,UACvDyyB,EAASxpB,IAAMzM,EAAO8xB,EAAY9vB,GAAGyK,KAAK/I,SAASF,UACnDkuB,EAAKI,YAAYptB,KAAKuxB,GAG1BvE,EAAKI,YAAY1e,KAAK,SAAUrR,EAAGa,GACjC,MAAOb,GAAEyK,MAAQ5J,EAAE4J,UAY3BzQ,EAAQm6B,kBAAoB,SAAUxE,EAAMI,GAC1C,GAAIA,GAAuD9uB,SAAxC0uB,EAAKC,SAASkD,gBAAgBplB,MAAqB,CACpE1T,EAAQg6B,qBAAqBrE,EAAMI,EAQnC,KAAK,GANDtlB,GAAQxM,EAAO0xB,EAAKe,MAAMjmB,OAC1BC,EAAMzM,EAAO0xB,EAAKe,MAAMhmB,KAExB0pB,EAAczE,EAAKe,MAAMhmB,IAAMilB,EAAKe,MAAMjmB,MAC1C4pB,EAAYD,EAAazE,EAAKC,SAASkD,gBAAgBplB,MAElDzN,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IACtC,GAA8BgB,SAA1B8uB,EAAY9vB,GAAGg0B,OAAsB,CACvC,GAAIK,GAAYr2B,EAAO8xB,EAAY9vB,GAAGwK,OAClC8pB,EAAUt2B,EAAO8xB,EAAY9vB,GAAGyK,IAEpC,IAAoB,gBAAhB4pB,EAAUE,GACZ,KAAM,IAAIx2B,OAAM,qCAAuC+xB,EAAY9vB,GAAGwK,MAExE,IAAkB,gBAAd8pB,EAAQC,GACV,KAAM,IAAIx2B,OAAM,mCAAqC+xB,EAAY9vB,GAAGyK,IAGtE,IAAIC,GAAW4pB,EAAUD,CACzB,IAAI3pB,GAAY,EAAI0pB,EAAW,CAE7B,GAAIvP,GAAS,EACT2P,EAAW/pB,EAAIgqB,OACnB,QAAQ3E,EAAY9vB,GAAGg0B,QACrB,IAAK,QACCK,EAAUK,OAASJ,EAAQI,QAC7B7P,EAAS,GAEXwP,EAAUM,UAAUnqB,EAAMmqB,aAC1BN,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,QAErBiO,EAAQK,UAAUnqB,EAAMmqB,aACxBL,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAIxB,EAAO,QAE5B2P,EAASrmB,IAAI,EAAG,QAChB,MACF,KAAK,SACH,GAAI0mB,GAAYP,EAAQjN,KAAKgN,EAAU,QACnCK,EAAML,EAAUK,KAGpBL,GAAUS,KAAKtqB,EAAMsqB,QACrBT,EAAUU,MAAMvqB,EAAMuqB,SACtBV,EAAUO,KAAKpqB,EAAMoqB,QACrBN,EAAUD,EAAUI,QAGpBJ,EAAUK,IAAIA,GACdJ,EAAQI,IAAIA,GACZJ,EAAQnmB,IAAI0mB,EAAU,QAEtBR,EAAUhO,SAAS,EAAE,SACrBiO,EAAQjO,SAAS,EAAE,SAEnBmO,EAASrmB,IAAI,EAAG,QAChB,MACF,KAAK,UACCkmB,EAAUU,SAAWT,EAAQS,UAC/BlQ,EAAS,GAEXwP,EAAUU,MAAMvqB,EAAMuqB,SACtBV,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,UAErBiO,EAAQS,MAAMvqB,EAAMuqB,SACpBT,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAE,UACnBiO,EAAQnmB,IAAI0W,EAAO,UAEnB2P,EAASrmB,IAAI,EAAG,SAChB,MACF,KAAK,SACCkmB,EAAUO,QAAUN,EAAQM,SAC9B/P,EAAS,GAEXwP,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,SACrBiO,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAE,SACnBiO,EAAQnmB,IAAI0W,EAAO,SAEnB2P,EAASrmB,IAAI,EAAG,QAChB,MACF,SAEE,WADA6mB,SAAQtG,IAAI,2EAA4EoB,EAAY9vB,GAAGg0B,QAG3G,KAAmBQ,EAAZH,GAEL,OADA3E,EAAKI,YAAYptB,MAAM8H,MAAO6pB,EAAU7yB,UAAWiJ,IAAK6pB,EAAQ9yB,YACxDsuB,EAAY9vB,GAAGg0B,QACrB,IAAK,QACHK,EAAUlmB,IAAI,EAAG,QACjBmmB,EAAQnmB,IAAI,EAAG,OACf,MACF,KAAK,SACHkmB,EAAUlmB,IAAI,EAAG,SACjBmmB,EAAQnmB,IAAI,EAAG,QACf,MACF,KAAK,UACHkmB,EAAUlmB,IAAI,EAAG,UACjBmmB,EAAQnmB,IAAI,EAAG,SACf,MACF,KAAK,SACHkmB,EAAUlmB,IAAI,EAAG,KACjBmmB,EAAQnmB,IAAI,EAAG,IACf,MACF,SAEE,WADA6mB,SAAQtG,IAAI,2EAA4EoB,EAAY9vB,GAAGg0B,QAI7GtE,EAAKI,YAAYptB,MAAM8H,MAAO6pB,EAAU7yB,UAAWiJ,IAAK6pB,EAAQ9yB,aAKtEzH,EAAQk7B,iBAAiBvF,EAEzB,IAAIwF,GAAcn7B,EAAQo7B,SAASzF,EAAKe,MAAMjmB,MAAOklB,EAAKI,aACtDsF,EAAYr7B,EAAQo7B,SAASzF,EAAKe,MAAMhmB,IAAIilB,EAAKI,aACjDuF,EAAa3F,EAAKe,MAAMjmB,MACxB8qB,EAAW5F,EAAKe,MAAMhmB,GACA,IAAtByqB,EAAYrB,SAAiBwB,EAAwC,GAA3B3F,EAAKe,MAAM8E,aAAuBL,EAAYb,UAAY,EAAIa,EAAYZ,QAAU,GAC1G,GAApBc,EAAUvB,SAAmByB,EAAsC,GAAzB5F,EAAKe,MAAM+E,WAAuBJ,EAAUf,UAAY,EAAMe,EAAUd,QAAU,IACtG,GAAtBY,EAAYrB,QAAsC,GAApBuB,EAAUvB,SAC1CnE,EAAKe,MAAMgF,YAAYJ,EAAYC,KAYzCv7B,EAAQk7B,iBAAmB,SAASvF,GAGlC,IAAK,GAFDI,GAAcJ,EAAKI,YACnB4F,KACK11B,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IACtC,IAAK,GAAI4mB,GAAI,EAAGA,EAAIkJ,EAAY3vB,OAAQymB,IAClC5mB,GAAK4mB,GAA8B,GAAzBkJ,EAAYlJ,GAAGrV,QAA2C,GAAzBue,EAAY9vB,GAAGuR,SAExDue,EAAYlJ,GAAGpc,OAASslB,EAAY9vB,GAAGwK,OAASslB,EAAYlJ,GAAGnc,KAAOqlB,EAAY9vB,GAAGyK,IACvFqlB,EAAYlJ,GAAGrV,QAAS,EAGjBue,EAAYlJ,GAAGpc,OAASslB,EAAY9vB,GAAGwK,OAASslB,EAAYlJ,GAAGpc,OAASslB,EAAY9vB,GAAGyK,KAC9FqlB,EAAY9vB,GAAGyK,IAAMqlB,EAAYlJ,GAAGnc,IACpCqlB,EAAYlJ,GAAGrV,QAAS,GAGjBue,EAAYlJ,GAAGnc,KAAOqlB,EAAY9vB,GAAGwK,OAASslB,EAAYlJ,GAAGnc,KAAOqlB,EAAY9vB,GAAGyK,MAC1FqlB,EAAY9vB,GAAGwK,MAAQslB,EAAYlJ,GAAGpc,MACtCslB,EAAYlJ,GAAGrV,QAAS,GAMhC,KAAK,GAAIvR,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAClC8vB,EAAY9vB,GAAGuR,UAAW,GAC5BmkB,EAAUhzB,KAAKotB,EAAY9vB,GAI/B0vB,GAAKI,YAAc4F,EACnBhG,EAAKI,YAAY1e,KAAK,SAAUrR,EAAGa,GACjC,MAAOb,GAAEyK,MAAQ5J,EAAE4J,SAIvBzQ,EAAQ47B,WAAa,SAASC,GAC5B,IAAK,GAAI51B,GAAG,EAAGA,EAAI41B,EAAMz1B,OAAQH,IAC/Bg1B,QAAQtG,IAAI1uB,EAAG,GAAIjB,MAAK62B,EAAM51B,GAAGwK,OAAO,GAAIzL,MAAK62B,EAAM51B,GAAGyK,KAAMmrB,EAAM51B,GAAGwK,MAAOorB,EAAM51B,GAAGyK,IAAKmrB,EAAM51B,GAAGuR,SAS3GxX,EAAQ87B,oBAAsB,SAASC,EAAUC,GAG/C,IAAK,GAFDC,IAAe,EACfC,EAAeH,EAASI,QAAQ10B,UAC3BxB,EAAI,EAAGA,EAAI81B,EAAShG,YAAY3vB,OAAQH,IAAK,CACpD,GAAIq0B,GAAYyB,EAAShG,YAAY9vB,GAAGwK,MACpC8pB,EAAUwB,EAAShG,YAAY9vB,GAAGyK,GACtC,IAAIwrB,GAAgB5B,GAA4BC,EAAf2B,EAAwB,CACvDD,GAAe,CACf,QAIJ,GAAoB,GAAhBA,GAAwBC,EAAeH,EAAS5H,KAAK1sB,WAAay0B,GAAgBF,EAAc,CAClG,GAAI1rB,GAAYrM,EAAO+3B,GACnBI,EAAWn4B,EAAOs2B,EAElBjqB,GAAUuqB,QAAUuB,EAASvB,OAASkB,EAASM,cAAe,EACzD/rB,EAAU0qB,SAAWoB,EAASpB,QAAUe,EAASO,eAAgB,EACjEhsB,EAAUsqB,aAAewB,EAASxB,cAAcmB,EAASQ,aAAc,GAEhFR,EAASI,QAAUC,EAASz0B,WAmChC3H,EAAQk2B,SAAW,SAASoB,EAAM0B,EAAMtlB,GACtC,GAAoC,GAAhC4jB,EAAK3B,KAAKI,YAAY3vB,OAAa,CACrC,GAAIo2B,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EACvC,QAAQslB,EAAKvxB,UAAY+0B,EAAW1R,QAAU0R,EAAW73B,MAGzD,GAAIm1B,GAAS95B,EAAQo7B,SAASpC,EAAM1B,EAAK3B,KAAKI,YACzB,IAAjB+D,EAAOA,SACTd,EAAOc,EAAOQ,UAGhB,IAAI3pB,GAAW3Q,EAAQy8B,yBAAyBnF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAMjmB,MAAO6mB,EAAKZ,MAAMhmB,IACpGsoB,GAAOh5B,EAAQ08B,qBAAqBpF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAOsC,EAEvE,IAAIwD,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EAAO/C,EAC9C,QAAQqoB,EAAKvxB,UAAY+0B,EAAW1R,QAAU0R,EAAW73B,OAa7D3E,EAAQs2B,OAAS,SAASgB,EAAM1kB,EAAGc,GACjC,GAAoC,GAAhC4jB,EAAK3B,KAAKI,YAAY3vB,OAAa,CACrC,GAAIo2B,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EACvC,OAAO,IAAI1O,MAAK4N,EAAI4pB,EAAW73B,MAAQ63B,EAAW1R,QAGlD,GAAI6R,GAAiB38B,EAAQy8B,yBAAyBnF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAMjmB,MAAO6mB,EAAKZ,MAAMhmB,KACtGksB,EAAgBtF,EAAKZ,MAAMhmB,IAAM4mB,EAAKZ,MAAMjmB,MAAQksB,EACpDE,EAAkBD,EAAgBhqB,EAAIc,EACtCopB,EAA4B98B,EAAQ+8B,6BAA6BzF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAOmG,GAEpGG,EAAU,GAAIh4B,MAAK83B,EAA4BD,EAAkBvF,EAAKZ,MAAMjmB,MAChF,OAAOusB,IAYXh9B,EAAQy8B,yBAA2B,SAAS1G,EAAatlB,EAAOC,GAE9D,IAAK,GADDC,GAAW,EACN1K,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAEzB4pB,IAAa7pB,GAAmBC,EAAV6pB,IACxB5pB,GAAY4pB,EAAUD,GAG1B,MAAO3pB,IAWT3Q,EAAQ08B,qBAAuB,SAAS3G,EAAaW,EAAOsC,GAG1D,MAFAA,GAAO/0B,EAAO+0B,GAAMrxB,SAASF,UAC7BuxB,GAAQh5B,EAAQi9B,wBAAwBlH,EAAYW,EAAMsC,IAI5Dh5B,EAAQi9B,wBAA0B,SAASlH,EAAaW,EAAOsC,GAC7D,GAAIkE,GAAa,CACjBlE,GAAO/0B,EAAO+0B,GAAMrxB,SAASF,SAE7B,KAAK,GAAIxB,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAEzB4pB,IAAa5D,EAAMjmB,OAAS8pB,EAAU7D,EAAMhmB,KAC1CsoB,GAAQuB,IACV2C,GAAe3C,EAAUD,GAI/B,MAAO4C,IAWTl9B,EAAQ+8B,6BAA+B,SAAShH,EAAaW,EAAOyG,GAKlE,IAAK,GAJDR,GAAiB,EACjBhsB,EAAW,EACXysB,EAAgB1G,EAAMjmB,MAEjBxK,EAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAE7B,IAAI4pB,GAAa5D,EAAMjmB,OAAS8pB,EAAU7D,EAAMhmB,IAAK,CAGnD,GAFAC,GAAY2pB,EAAY8C,EACxBA,EAAgB7C,EACZ5pB,GAAYwsB,EACd,KAGAR,IAAkBpC,EAAUD,GAKlC,MAAOqC,IAaT38B,EAAQq9B,mBAAqB,SAAStH,EAAaiD,EAAMsE,EAAWC,GAClE,GAAInC,GAAWp7B,EAAQo7B,SAASpC,EAAMjD,EACtC,OAAuB,IAAnBqF,EAAStB,OACK,EAAZwD,EACuB,GAArBC,EACKnC,EAASd,WAAac,EAASb,QAAUvB,GAAQ,EAGjDoC,EAASd,UAAY,EAIL,GAArBiD,EACKnC,EAASb,SAAWvB,EAAOoC,EAASd,WAAa,EAGjDc,EAASb,QAAU,EAKvBvB,GAaXh5B,EAAQo7B,SAAW,SAASpC,EAAMjD,GAChC,IAAK,GAAI9vB,GAAI,EAAGA,EAAI8vB,EAAY3vB,OAAQH,IAAK,CAC3C,GAAIq0B,GAAYvE,EAAY9vB,GAAGwK,MAC3B8pB,EAAUxE,EAAY9vB,GAAGyK,GAE7B,IAAIsoB,GAAQsB,GAAoBC,EAAPvB,EACvB,OAAQc,QAAQ,EAAMQ,UAAWA,EAAWC,QAASA,GAIzD,OAAQT,QAAQ,EAAOQ,UAAWA,EAAWC,QAASA,KAKpD,SAASt6B,GA4Bb,QAAS+B,GAASyO,EAAOC,EAAK8sB,EAAaC,EAAiBC,EAAaC,GAEvEv9B,KAAK+7B,QAAU,EAEf/7B,KAAKw9B,WAAY,EACjBx9B,KAAKy9B,UAAY,EACjBz9B,KAAKmpB,KAAO,EACZnpB,KAAKuE,MAAQ,EAEbvE,KAAK09B,YACL19B,KAAK29B,UACL39B,KAAK49B,UAAY,EAEjB59B,KAAK69B,YAAc,EAAO,EAAM,EAAI,IACpC79B,KAAK89B,YAAc,IAAO,GAAM,EAAI,GAEpC99B,KAAKu9B,WAAaA,EAElBv9B,KAAKm0B,SAAS9jB,EAAOC,EAAK8sB,EAAaC,EAAiBC,GAe1D17B,EAASsS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK8sB,EAAaC,EAAiBC,GAC/Et9B,KAAK8zB,OAA6BjtB,SAApBy2B,EAAYn5B,IAAoBkM,EAAQitB,EAAYn5B,IAClEnE,KAAK+zB,KAA2BltB,SAApBy2B,EAAYl5B,IAAoBkM,EAAMgtB,EAAYl5B,IAE1DpE,KAAK8zB,QAAU9zB,KAAK+zB,OACtB/zB,KAAK8zB,QAAU,IACf9zB,KAAK+zB,MAAQ,GAGO,GAAlB/zB,KAAKw9B,WACPx9B,KAAK+9B,eAAeX,EAAaC,GAGnCr9B,KAAKg+B,SAASV,IAOhB17B,EAASsS,UAAU6pB,eAAiB,SAASX,EAAaC,GAExD,GAAItqB,GAAO/S,KAAK+zB,KAAO/zB,KAAK8zB,OACxBmK,EAAkB,IAAPlrB,EACXmrB,EAAmBd,GAAea,EAAWZ,GAC7Cc,EAAmB35B,KAAK+pB,MAAM/pB,KAAK+vB,IAAI0J,GAAUz5B,KAAKgwB,MAEtD4J,EAAe,GACfC,EAAkB75B,KAAKkwB,IAAI,GAAGyJ,GAE9B9tB,EAAQ,CACW,GAAnB8tB,IACF9tB,EAAQ8tB,EAIV,KAAK,GADDG,IAAgB,EACXz4B,EAAIwK,EAAO7L,KAAKknB,IAAI7lB,IAAMrB,KAAKknB,IAAIyS,GAAmBt4B,IAAK,CAClEw4B,EAAkB75B,KAAKkwB,IAAI,GAAG7uB,EAC9B,KAAK,GAAI4mB,GAAI,EAAGA,EAAIzsB,KAAK89B,WAAW93B,OAAQymB,IAAK,CAC/C,GAAI8R,GAAWF,EAAkBr+B,KAAK89B,WAAWrR,EACjD,IAAI8R,GAAYL,EAAkB,CAChCI,GAAgB,EAChBF,EAAe3R,CACf,QAGJ,GAAqB,GAAjB6R,EACF,MAGJt+B,KAAKy9B,UAAYW,EACjBp+B,KAAKuE,MAAQ85B,EACbr+B,KAAKmpB,KAAOkV,EAAkBr+B,KAAK89B,WAAWM,IAShDx8B,EAASsS,UAAU8pB,SAAW,SAASV,GACjBz2B,SAAhBy2B,IACFA,KAGF,IAAIkB,GAAgC33B,SAApBy2B,EAAYn5B,IAAoBnE,KAAK8zB,OAAuB,EAAb9zB,KAAKuE,MAAYvE,KAAK89B,WAAW99B,KAAKy9B,WAAcH,EAAYn5B,IAC3Hs6B,EAA8B53B,SAApBy2B,EAAYl5B,IAAoBpE,KAAK+zB,KAAQ/zB,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAAcH,EAAYl5B,GAEvHpE,MAAK29B,UAAgC92B,SAApBy2B,EAAYl5B,IAAoBpE,KAAK0+B,aAAaD,GAAWnB,EAAYl5B,IAC1FpE,KAAK09B,YAAkC72B,SAApBy2B,EAAYn5B,IAAoBnE,KAAK0+B,aAAaF,GAAalB,EAAYn5B,IAGvE,GAAnBnE,KAAKu9B,aAAuBv9B,KAAK29B,UAAY39B,KAAK09B,aAAe19B,KAAKmpB,MAAQ,IAChFnpB,KAAK29B,WAAa39B,KAAK29B,UAAY39B,KAAKmpB,MAG1CnpB,KAAK49B,UAAY59B,KAAK0+B,aAAaD,GAAWA,EAAUz+B,KAAK0+B,aAAaF,GAAaA,EACvFx+B,KAAK2+B,YAAc3+B,KAAK29B,UAAY39B,KAAK09B,YAGzC19B,KAAK+7B,QAAU/7B,KAAK29B,WAGtB/7B,EAASsS,UAAUwqB,aAAe,SAASp6B,GACzC,GAAIs6B,GAAUt6B,EAASA,GAAStE,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAClE,OAAIn5B,IAAStE,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,YAAc,GAAOz9B,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAC7FmB,EAAW5+B,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAG7CmB,GASXh9B,EAASsS,UAAU2qB,QAAU,WAC3B,MAAQ7+B,MAAK+7B,SAAW/7B,KAAK09B,aAM/B97B,EAASsS,UAAUmV,KAAO,WACxB,GAAImJ,GAAOxyB,KAAK+7B,OAChB/7B,MAAK+7B,SAAW/7B,KAAKmpB,KAGjBnpB,KAAK+7B,SAAWvJ,IAClBxyB,KAAK+7B,QAAU/7B,KAAK+zB,OAOxBnyB,EAASsS,UAAU4qB,SAAW,WAC5B9+B,KAAK+7B,SAAW/7B,KAAKmpB,KACrBnpB,KAAK29B,WAAa39B,KAAKmpB,KACvBnpB,KAAK2+B,YAAc3+B,KAAK29B,UAAY39B,KAAK09B,aAS3C97B,EAASsS,UAAUkV,WAAa,SAAS2V,GAEvC,GAAIhD,GAAWv3B,KAAKknB,IAAI1rB,KAAK+7B,SAAW/7B,KAAKmpB,KAAO,EAAK,EAAInpB,KAAK+7B,QAC9DlH,EAAc,GAAK5wB,OAAO83B,GAASlH,YAAY,EAGnD,IAAgBhuB,SAAbk4B,GAA2B/5B,MAAMf,OAAO86B,KAqCzC,GAAgC,IAA5BlK,EAAY7tB,QAAQ,MAA0C,IAA5B6tB,EAAY7tB,QAAQ,KAExD,IAAK,GAAInB,GAAIgvB,EAAY7uB,OAAS,EAAGH,EAAI,EAAGA,IAAK,CAC/C,GAAsB,KAAlBgvB,EAAYhvB,GAGX,CAAA,GAAsB,KAAlBgvB,EAAYhvB,IAA+B,KAAlBgvB,EAAYhvB,GAAW,CACvDgvB,EAAcA,EAAY9oB,MAAM,EAAGlG,EACnC,OAGA,MAPAgvB,EAAcA,EAAY9oB,MAAM,EAAGlG,QAzCY,CAErD,GAAIm5B,GAAM,GACNt2B,EAAQmsB,EAAY7tB,QAAQ,IAoBhC,IAnBY,IAAT0B,IAEDs2B,EAAMnK,EAAY9oB,MAAMrD,GAExBmsB,EAAcA,EAAY9oB,MAAM,EAAGrD,IAErCA,EAAQlE,KAAKJ,IAAIywB,EAAY7tB,QAAQ,KAAM6tB,EAAY7tB,QAAQ,MAClD,KAAV0B,GAEe,IAAbq2B,IACDlK,GAAe,KAGjBnsB,EAAQmsB,EAAY7uB,OAAS+4B,GAEV,IAAbA,IAENr2B,GAASq2B,EAAW,GAEnBr2B,EAAQmsB,EAAY7uB,OAErB,IAAI,GAAIi5B,GAAMv2B,EAAQmsB,EAAY7uB,OAAQi5B,EAAM,EAAGA,IACjDpK,GAAe,QAKjBA,GAAcA,EAAY9oB,MAAM,EAAGrD,EAGrCmsB,IAAemK,EAoBjB,MAAOnK,IAQTjzB,EAASsS,UAAUgrB,QAAU,WAC3B,MAAQl/B,MAAK+7B,SAAW/7B,KAAKuE,MAAQvE,KAAK69B,WAAW79B,KAAKy9B,aAAe,GAG3E59B,EAAOD,QAAUgC,GAKb,SAAS/B,EAAQD,EAASM,GAgB9B,QAAS2B,GAAM0zB,EAAMrmB,GACnB,GAAIiwB,GAAMt7B,IAASu7B,MAAM,GAAGC,QAAQ,GAAGC,QAAQ,GAAGC,aAAa,EAC/Dv/B,MAAKqQ,MAAQ8uB,EAAI7E,QAAQtmB,IAAI,GAAI,QAAQ3M,UACzCrH,KAAKsQ,IAAM6uB,EAAI7E,QAAQtmB,IAAI,EAAG,QAAQ3M,UAEtCrH,KAAKu1B,KAAOA,EACZv1B,KAAKw/B,gBAAkB,EACvBx/B,KAAKy/B,YAAc,EACnBz/B,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,EAGlBr7B,KAAKi1B,gBACH5kB,MAAO,KACPC,IAAK,KACL4sB,UAAW,aACXwC,UAAU,EACVC,UAAU,EACVx7B,IAAK,KACLC,IAAK,KACLw7B,QAAS,GACTC,QAAS,UAEX7/B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAEpCj1B,KAAKqG,OACHy5B,UAEF9/B,KAAK+/B,aAAe,KAGpB//B,KAAKu1B,KAAKE,QAAQnhB,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACzDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OACpDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,OAGvDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,OAAQtU,KAAKmgC,QAAQzK,KAAK11B,OAG/CA,KAAKu1B,KAAKE,QAAQnhB,GAAG,aAAmBtU,KAAKogC,cAAc1K,KAAK11B,OAChEA,KAAKu1B,KAAKE,QAAQnhB,GAAG,iBAAmBtU,KAAKogC,cAAc1K,KAAK11B,OAGhEA,KAAKu1B,KAAKE,QAAQnhB,GAAG,QAAStU,KAAKqgC,SAAS3K,KAAK11B,OACjDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,QAAStU,KAAKsgC,SAAS5K,KAAK11B,OAEjDA,KAAKiU,WAAW/E,GAsClB,QAASqxB,GAAmBrD,GAC1B,GAAiB,cAAbA,GAA0C,YAAbA,EAC/B,KAAM,IAAIx2B,WAAU,sBAAwBw2B,EAAY,yCAif5D,QAASsD,GAAYV,EAAO32B,GAC1B,OACEqJ,EAAGstB,EAAMvH,MAAQ53B,EAAK+G,gBAAgByB,GACtCsJ,EAAGqtB,EAAMrH,MAAQ93B,EAAKqH,eAAemB,IAxlBzC,GAAIxI,GAAOT,EAAoB,GAC3BugC,EAAavgC,EAAoB,IACjC2D,EAAS3D,EAAoB,IAC7BqC,EAAYrC,EAAoB,IAChCyB,EAAWzB,EAAoB,GA2DnC2B,GAAMqS,UAAY,GAAI3R,GAkBtBV,EAAMqS,UAAUD,WAAa,SAAU/E,GACrC,GAAIA,EAAS,CAEX,GAAIP,IAAU,YAAa,MAAO,MAAO,UAAW,UAAW,WAAY,WAAY,WAAY,cACnGhO,GAAKyF,gBAAgBuI,EAAQ3O,KAAKkP,QAASA,IAEvC,SAAWA,IAAW,OAASA,KAEjClP,KAAKm0B,SAASjlB,EAAQmB,MAAOnB,EAAQoB,OA4B3CzO,EAAMqS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAKonB,EAASgJ,GACnDA,KAAW,IACbA,GAAS,EAEX,IAAI5M,GAAkBjtB,QAATwJ,EAAqB1P,EAAKuG,QAAQmJ,EAAO,QAAQhJ,UAAY,KACtE0sB,EAAgBltB,QAAPyJ,EAAqB3P,EAAKuG,QAAQoJ,EAAK,QAAQjJ,UAAc,IAG1E,IAFArH,KAAK2gC,mBAEDjJ,EAAS,CACX,GAAIxiB,GAAKlV,KACL4gC,EAAY5gC,KAAKqQ,MACjBwwB,EAAU7gC,KAAKsQ,IACfC,EAA8B,gBAAZmnB,GAAuBA,EAAU,IACnDoJ,GAAW,GAAIl8B,OAAOyC,UACtB05B,GAAa,EAEb1X,EAAO,WACT,IAAKnU,EAAG7O,MAAMy5B,MAAMkB,SAAU,CAC5B,GAAI7B,IAAM,GAAIv6B,OAAOyC,UACjBuxB,EAAOuG,EAAM2B,EACbG,EAAOrI,EAAOroB,EACdhE,EAAK00B,GAAmB,OAAXnN,EAAmBA,EAASnzB,EAAKyP,cAAcwoB,EAAMgI,EAAW9M,EAAQvjB,GACrFjG,EAAK22B,GAAiB,OAATlN,EAAmBA,EAASpzB,EAAKyP,cAAcwoB,EAAMiI,EAAS9M,EAAMxjB,EAErF2wB,GAAUhsB,EAAGomB,YAAY/uB,EAAGjC,GAC5B3I,EAASo4B,kBAAkB7kB,EAAGqgB,KAAMrgB,EAAGhG,QAAQymB,aAC/CoL,EAAaA,GAAcG,EACvBA,GACFhsB,EAAGqgB,KAAKE,QAAQhH,KAAK,eAAgBpe,MAAO,GAAIzL,MAAKsQ,EAAG7E,OAAQC,IAAK,GAAI1L,MAAKsQ,EAAG5E,KAAMowB,OAAOA,IAG5FO,EACEF,GACF7rB,EAAGqgB,KAAKE,QAAQhH,KAAK,gBAAiBpe,MAAO,GAAIzL,MAAKsQ,EAAG7E,OAAQC,IAAK,GAAI1L,MAAKsQ,EAAG5E,KAAMowB,OAAOA,IAMjGxrB,EAAG6qB,aAAexlB,WAAW8O,EAAM,KAKzC,OAAOA,KAGP,GAAI6X,GAAUlhC,KAAKs7B,YAAYxH,EAAQC,EAEvC,IADApyB,EAASo4B,kBAAkB/5B,KAAKu1B,KAAMv1B,KAAKkP,QAAQymB,aAC/CuL,EAAS,CACX,GAAIrsB,IAAUxE,MAAO,GAAIzL,MAAK5E,KAAKqQ,OAAQC,IAAK,GAAI1L,MAAK5E,KAAKsQ,KAAMowB,OAAOA,EAC3E1gC,MAAKu1B,KAAKE,QAAQhH,KAAK,cAAe5Z,GACtC7U,KAAKu1B,KAAKE,QAAQhH,KAAK,eAAgB5Z,KAS7ChT,EAAMqS,UAAUysB,iBAAmB,WAC7B3gC,KAAK+/B,eACPzlB,aAAata,KAAK+/B,cAClB//B,KAAK+/B,aAAe,OAaxBl+B,EAAMqS,UAAUonB,YAAc,SAASjrB,EAAOC,GAC5C,GAII4c,GAJAiU,EAAqB,MAAT9wB,EAAiB1P,EAAKuG,QAAQmJ,EAAO,QAAQhJ,UAAYrH,KAAKqQ,MAC1E+wB,EAAmB,MAAP9wB,EAAiB3P,EAAKuG,QAAQoJ,EAAK,QAAQjJ,UAAcrH,KAAKsQ,IAC1ElM,EAA2B,MAApBpE,KAAKkP,QAAQ9K,IAAezD,EAAKuG,QAAQlH,KAAKkP,QAAQ9K,IAAK,QAAQiD,UAAY,KACtFlD,EAA2B,MAApBnE,KAAKkP,QAAQ/K,IAAexD,EAAKuG,QAAQlH,KAAKkP,QAAQ/K,IAAK,QAAQkD,UAAY,IAI1F,IAAIrC,MAAMm8B,IAA0B,OAAbA,EACrB,KAAM,IAAIv9B,OAAM,kBAAoByM,EAAQ,IAE9C,IAAIrL,MAAMo8B,IAAsB,OAAXA,EACnB,KAAM,IAAIx9B,OAAM,gBAAkB0M,EAAM,IAyC1C,IArCa6wB,EAATC,IACFA,EAASD,GAIC,OAARh9B,GACaA,EAAXg9B,IACFjU,EAAQ/oB,EAAMg9B,EACdA,GAAYjU,EACZkU,GAAUlU,EAGC,MAAP9oB,GACEg9B,EAASh9B,IACXg9B,EAASh9B,IAOL,OAARA,GACEg9B,EAASh9B,IACX8oB,EAAQkU,EAASh9B,EACjB+8B,GAAYjU,EACZkU,GAAUlU,EAGC,MAAP/oB,GACaA,EAAXg9B,IACFA,EAAWh9B,IAOU,OAAzBnE,KAAKkP,QAAQ0wB,QAAkB,CACjC,GAAIA,GAAUvZ,WAAWrmB,KAAKkP,QAAQ0wB,QACxB,GAAVA,IACFA,EAAU,GAEcA,EAArBwB,EAASD,IACPnhC,KAAKsQ,IAAMtQ,KAAKqQ,QAAWuvB,GAAWuB,EAAWnhC,KAAKqQ,OAAS+wB,EAASphC,KAAKsQ,KAEhF6wB,EAAWnhC,KAAKqQ,MAChB+wB,EAASphC,KAAKsQ,MAId4c,EAAQ0S,GAAWwB,EAASD,GAC5BA,GAAYjU,EAAO,EACnBkU,GAAUlU,EAAO,IAMvB,GAA6B,OAAzBltB,KAAKkP,QAAQ2wB,QAAkB,CACjC,GAAIA,GAAUxZ,WAAWrmB,KAAKkP,QAAQ2wB,QACxB,GAAVA,IACFA,EAAU,GAGPuB,EAASD,EAAYtB,IACnB7/B,KAAKsQ,IAAMtQ,KAAKqQ,QAAWwvB,GAAWsB,EAAWnhC,KAAKqQ,OAAS+wB,EAASphC,KAAKsQ,KAEhF6wB,EAAWnhC,KAAKqQ,MAChB+wB,EAASphC,KAAKsQ,MAId4c,EAASkU,EAASD,EAAYtB,EAC9BsB,GAAYjU,EAAO,EACnBkU,GAAUlU,EAAO,IAKvB,GAAIgU,GAAWlhC,KAAKqQ,OAAS8wB,GAAYnhC,KAAKsQ,KAAO8wB,CAUrD,OAPOD,IAAYnhC,KAAKqQ,OAAS8wB,GAAcnhC,KAAKsQ,KAAS8wB,GAAYphC,KAAKqQ,OAAS+wB,GAAYphC,KAAKsQ,KACjGtQ,KAAKqQ,OAAS8wB,GAAYnhC,KAAKqQ,OAAS+wB,GAAcphC,KAAKsQ,KAAO6wB,GAAcnhC,KAAKsQ,KAAO8wB,GACjGphC,KAAKu1B,KAAKE,QAAQhH,KAAK,oBAGzBzuB,KAAKqQ,MAAQ8wB,EACbnhC,KAAKsQ,IAAM8wB,EACJF,GAOTr/B,EAAMqS,UAAUmtB,SAAW,WACzB,OACEhxB,MAAOrQ,KAAKqQ,MACZC,IAAKtQ,KAAKsQ,MAUdzO,EAAMqS,UAAUkoB,WAAa,SAAU9oB,EAAOguB,GAC5C,MAAOz/B,GAAMu6B,WAAWp8B,KAAKqQ,MAAOrQ,KAAKsQ,IAAKgD,EAAOguB,IAWvDz/B,EAAMu6B,WAAa,SAAU/rB,EAAOC,EAAKgD,EAAOguB,GAI9C,MAHoBz6B,UAAhBy6B,IACFA,EAAc,GAEH,GAAThuB,GAAehD,EAAMD,GAAS,GAE9Bqa,OAAQra,EACR9L,MAAO+O,GAAShD,EAAMD,EAAQixB,KAK9B5W,OAAQ,EACRnmB,MAAO,IAUb1C,EAAMqS,UAAU8rB,aAAe,WAC7BhgC,KAAKw/B,gBAAkB,EACvBx/B,KAAKuhC,cAAgB,EAEhBvhC,KAAKkP,QAAQwwB,UAIb1/B,KAAKqG,MAAMy5B,MAAM0B,gBAEtBxhC,KAAKqG,MAAMy5B,MAAMzvB,MAAQrQ,KAAKqQ,MAC9BrQ,KAAKqG,MAAMy5B,MAAMxvB,IAAMtQ,KAAKsQ,IAC5BtQ,KAAKqG,MAAMy5B,MAAMkB,UAAW,EAExBhhC,KAAKu1B,KAAK5E,IAAIjxB,OAChBM,KAAKu1B,KAAK5E,IAAIjxB,KAAKgO,MAAMmgB,OAAS,UAStChsB,EAAMqS,UAAU+rB,QAAU,SAAUp2B,GAElC,GAAK7J,KAAKkP,QAAQwwB,UAGb1/B,KAAKqG,MAAMy5B,MAAM0B,cAAtB,CAEA,GAAItE,GAAYl9B,KAAKkP,QAAQguB,SAC7BqD,GAAkBrD,EAElB,IAAI5N,GAAsB,cAAb4N,EAA6BrzB,EAAM2uB,QAAQiJ,OAAS53B,EAAM2uB,QAAQkJ,MAC/EpS,IAAStvB,KAAKw/B,eACd,IAAIpM,GAAYpzB,KAAKqG,MAAMy5B,MAAMxvB,IAAMtQ,KAAKqG,MAAMy5B,MAAMzvB,MAGpDE,EAAW5O,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,IACzF8iB,IAAY7iB,CAEZ,IAAI+C,GAAsB,cAAb4pB,EAA6Bl9B,KAAKu1B,KAAKC,SAASzI,OAAOzZ,MAAQtT,KAAKu1B,KAAKC,SAASzI,OAAOxZ,OAClGouB,GAAarS,EAAQhc,EAAQ8f,EAC7B+N,EAAWnhC,KAAKqG,MAAMy5B,MAAMzvB,MAAQsxB,EACpCP,EAASphC,KAAKqG,MAAMy5B,MAAMxvB,IAAMqxB,EAIhCC,EAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAUnhC,KAAKuhC,cAAcjS,GAAO,GACnGuS,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,EAAQphC,KAAKuhC,cAAcjS,GAAO,EACnG,IAAIsS,GAAaT,GAAYU,GAAWT,EAKtC,MAJAphC,MAAKw/B,iBAAmBlQ,EACxBtvB,KAAKqG,MAAMy5B,MAAMzvB,MAAQuxB,EACzB5hC,KAAKqG,MAAMy5B,MAAMxvB,IAAMuxB,MACvB7hC,MAAKigC,QAAQp2B,EAIf7J,MAAKuhC,cAAgBjS,EACrBtvB,KAAKs7B,YAAY6F,EAAUC,GAG3BphC,KAAKu1B,KAAKE,QAAQhH,KAAK,eACrBpe,MAAO,GAAIzL,MAAK5E,KAAKqQ,OACrBC,IAAO,GAAI1L,MAAK5E,KAAKsQ,KACrBowB,QAAQ,MASZ7+B,EAAMqS,UAAUgsB,WAAa,WAEtBlgC,KAAKkP,QAAQwwB,UAIb1/B,KAAKqG,MAAMy5B,MAAM0B,gBAEtBxhC,KAAKqG,MAAMy5B,MAAMkB,UAAW,EACxBhhC,KAAKu1B,KAAK5E,IAAIjxB,OAChBM,KAAKu1B,KAAK5E,IAAIjxB,KAAKgO,MAAMmgB,OAAS,QAIpC7tB,KAAKu1B,KAAKE,QAAQhH,KAAK,gBACrBpe,MAAO,GAAIzL,MAAK5E,KAAKqQ,OACrBC,IAAO,GAAI1L,MAAK5E,KAAKsQ,KACrBowB,QAAQ,MAUZ7+B,EAAMqS,UAAUksB,cAAgB,SAASv2B,GAEvC,GAAM7J,KAAKkP,QAAQywB,UAAY3/B,KAAKkP,QAAQwwB,SAA5C,CAGA,GAAIpQ,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAa,IAClB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAS,GAMtBF,EAAO,CAKT,GAAI/qB,EAEFA,GADU,EAAR+qB,EACM,EAAKA,EAAQ,EAGb,GAAK,EAAKA,EAAQ,EAI5B,IAAIkJ,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAUvB,EAAWhI,EAAQzL,OAAQ/sB,KAAKu1B,KAAK5E,IAAI5D,QACnDiV,EAAchiC,KAAKiiC,eAAeF,EAEtC/hC,MAAKkiC,KAAK39B,EAAOy9B,EAAa1S,GAKhCzlB,EAAMD,mBAOR/H,EAAMqS,UAAUmsB,SAAW,WACzBrgC,KAAKqG,MAAMy5B,MAAMzvB,MAAQrQ,KAAKqQ,MAC9BrQ,KAAKqG,MAAMy5B,MAAMxvB,IAAMtQ,KAAKsQ,IAC5BtQ,KAAKqG,MAAMy5B,MAAM0B,eAAgB,EACjCxhC,KAAKqG,MAAMy5B,MAAM/S,OAAS,KAC1B/sB,KAAKy/B,YAAc,EACnBz/B,KAAKw/B,gBAAkB,GAOzB39B,EAAMqS,UAAUisB,QAAU,WACxBngC,KAAKqG,MAAMy5B,MAAM0B,eAAgB,GAQnC3/B,EAAMqS,UAAUosB,SAAW,SAAUz2B,GAEnC,GAAM7J,KAAKkP,QAAQywB,UAAY3/B,KAAKkP,QAAQwwB,WAE5C1/B,KAAKqG,MAAMy5B,MAAM0B,eAAgB,EAE7B33B,EAAM2uB,QAAQ2J,QAAQn8B,OAAS,GAAG,CAC/BhG,KAAKqG,MAAMy5B,MAAM/S,SACpB/sB,KAAKqG,MAAMy5B,MAAM/S,OAASyT,EAAW32B,EAAM2uB,QAAQzL,OAAQ/sB,KAAKu1B,KAAK5E,IAAI5D,QAG3E,IAAIxoB,GAAQ,GAAKsF,EAAM2uB,QAAQj0B,MAAQvE,KAAKy/B,aACxC2C,EAAapiC,KAAKiiC,eAAejiC,KAAKqG,MAAMy5B,MAAM/S,QAElDwP,EAAiB56B,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,KAC3F+xB,EAAuB1gC,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAMoiC,GACrFE,EAAsB/F,EAAiB8F,EAGvClB,EAAYiB,EAAaC,GAAyBriC,KAAKqG,MAAMy5B,MAAMzvB,OAAS+xB,EAAaC,IAAyB99B,EAClH68B,EAAUgB,EAAaE,GAAwBtiC,KAAKqG,MAAMy5B,MAAMxvB,KAAO8xB,EAAaE,IAAwB/9B,CAGhHvE,MAAKo7B,aAAe,EAAI72B,EAAQ,GAAI,GAAQ,EAC5CvE,KAAKq7B,WAAa92B,EAAQ,EAAI,GAAI,GAAQ,CAE1C,IAAIq9B,GAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAU,EAAI58B,GAAO,GACpFs9B,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,EAAQ78B,EAAQ,GAAG,IAChFq9B,GAAaT,GAAYU,GAAWT,KACtCphC,KAAKqG,MAAMy5B,MAAMzvB,MAAQuxB,EACzB5hC,KAAKqG,MAAMy5B,MAAMxvB,IAAMuxB,EACvB7hC,KAAKy/B,YAAc,EAAI51B,EAAM2uB,QAAQj0B,MACrC48B,EAAWS,EACXR,EAASS,GAGX7hC,KAAKm0B,SAASgN,EAAUC,GAAQ,GAAO,GAEvCphC,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,IAUtBx5B,EAAMqS,UAAU+tB,eAAiB,SAAUF,GACzC,GAAI3F,GACAc,EAAYl9B,KAAKkP,QAAQguB,SAI7B,IAFAqD,EAAkBrD,GAED,cAAbA,EACF,MAAOl9B,MAAKu1B,KAAK50B,KAAKu1B,OAAO6L,EAAQvvB,GAAGnL,SAGxC,IAAIkM,GAASvT,KAAKu1B,KAAKC,SAASzI,OAAOxZ,MAEvC,OADA6oB,GAAap8B,KAAKo8B,WAAW7oB,GACtBwuB,EAAQtvB,EAAI2pB,EAAW73B,MAAQ63B,EAAW1R,QA4BrD7oB,EAAMqS,UAAUguB,KAAO,SAAS39B,EAAOwoB,EAAQuC,GAE/B,MAAVvC,IACFA,GAAU/sB,KAAKqQ,MAAQrQ,KAAKsQ,KAAO,EAGrC,IAAIisB,GAAiB56B,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,KAC3F+xB,EAAuB1gC,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAM+sB,GACrFuV,EAAsB/F,EAAiB8F,EAGvClB,EAAYpU,EAAOsV,GAAyBriC,KAAKqQ,OAAS0c,EAAOsV,IAAyB99B,EAC1F68B,EAAYrU,EAAOuV,GAAwBtiC,KAAKsQ,KAAOyc,EAAOuV,IAAwB/9B,CAG1FvE,MAAKo7B,aAAe9L,EAAQ,GAAI,GAAQ,EACxCtvB,KAAKq7B,YAAc/L,EAAS,GAAI,GAAQ,CACxC,IAAIsS,GAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAU7R,GAAO,GAChFuS,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,GAAS9R,GAAO,IAC7EsS,GAAaT,GAAYU,GAAWT,KACtCD,EAAWS,EACXR,EAASS,GAGX7hC,KAAKm0B,SAASgN,EAAUC,GAAQ,GAAO,GAEvCphC,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,GAWpBx5B,EAAMqS,UAAUquB,KAAO,SAASjT,GAE9B,GAAIpC,GAAQltB,KAAKsQ,IAAMtQ,KAAKqQ,MAGxB8wB,EAAWnhC,KAAKqQ,MAAQ6c,EAAOoC,EAC/B8R,EAASphC,KAAKsQ,IAAM4c,EAAOoC,CAI/BtvB,MAAKqQ,MAAQ8wB,EACbnhC,KAAKsQ,IAAM8wB,GAObv/B,EAAMqS,UAAU2U,OAAS,SAASA,GAChC,GAAIkE,IAAU/sB,KAAKqQ,MAAQrQ,KAAKsQ,KAAO,EAEnC4c,EAAOH,EAASlE,EAGhBsY,EAAWnhC,KAAKqQ,MAAQ6c,EACxBkU,EAASphC,KAAKsQ,IAAM4c,CAExBltB,MAAKm0B,SAASgN,EAAUC,IAG1BvhC,EAAOD,QAAUiC,GAKb,SAAShC,EAAQD,GAGrB,GAAI4iC,GAAU,IAMd5iC,GAAQ6iC,aAAe,SAASxgC,GAC9BA,EAAMgV,KAAK,SAAUrR,EAAGa,GACtB,MAAOb,GAAE6N,KAAKpD,MAAQ5J,EAAEgN,KAAKpD;IASjCzQ,EAAQ8iC,WAAa,SAASzgC,GAC5BA,EAAMgV,KAAK,SAAUrR,EAAGa,GACtB,GAAIk8B,GAAS,OAAS/8B,GAAE6N,KAAQ7N,EAAE6N,KAAKnD,IAAM1K,EAAE6N,KAAKpD,MAChDuyB,EAAS,OAASn8B,GAAEgN,KAAQhN,EAAEgN,KAAKnD,IAAM7J,EAAEgN,KAAKpD,KAEpD,OAAOsyB,GAAQC,KAenBhjC,EAAQkC,MAAQ,SAASG,EAAO0Y,EAAQkoB,GACtC,GAAIh9B,GAAGi9B,CAEP,IAAID,EAEF,IAAKh9B,EAAI,EAAGi9B,EAAO7gC,EAAM+D,OAAY88B,EAAJj9B,EAAUA,IACzC5D,EAAM4D,GAAGoC,IAAM,IAKnB,KAAKpC,EAAI,EAAGi9B,EAAO7gC,EAAM+D,OAAY88B,EAAJj9B,EAAUA,IAAK,CAC9C,GAAIiK,GAAO7N,EAAM4D,EACjB,IAAIiK,EAAKhO,OAAsB,OAAbgO,EAAK7H,IAAc,CAEnC6H,EAAK7H,IAAM0S,EAAOooB,IAElB,GAAG,CAID,IAAK,GADDC,GAAgB,KACXvW,EAAI,EAAGwW,EAAKhhC,EAAM+D,OAAYi9B,EAAJxW,EAAQA,IAAK,CAC9C,GAAIxmB,GAAQhE,EAAMwqB,EAClB,IAAkB,OAAdxmB,EAAMgC,KAAgBhC,IAAU6J,GAAQ7J,EAAMnE,OAASlC,EAAQsjC,UAAUpzB,EAAM7J,EAAO0U,EAAO7K,MAAO,CACtGkzB,EAAgB/8B,CAChB,QAIiB,MAAjB+8B,IAEFlzB,EAAK7H,IAAM+6B,EAAc/6B,IAAM+6B,EAAczvB,OAASoH,EAAO7K,KAAK2W,gBAE7Duc,MAafpjC,EAAQujC,QAAU,SAASlhC,EAAO0Y,EAAQyoB,GACxC,GAAIv9B,GAAGi9B,EAAMO,CAGb,KAAKx9B,EAAI,EAAGi9B,EAAO7gC,EAAM+D,OAAY88B,EAAJj9B,EAAUA,IACzC,GAA+BgB,SAA3B5E,EAAM4D,GAAG4N,KAAK6vB,SAAwB,CACxCD,EAAS1oB,EAAOooB,IAChB,KAAK,GAAIO,KAAYF,GACfA,EAAUj9B,eAAem9B,IACQ,GAA/BF,EAAUE,GAAU7Z,SAAmB2Z,EAAUE,GAAU56B,MAAQ06B,EAAUnhC,EAAM4D,GAAG4N,KAAK6vB,UAAU56B,QACvG26B,GAAUD,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,SAIzDxkB,GAAM4D,GAAGoC,IAAMo7B,MAGfphC,GAAM4D,GAAGoC,IAAM0S,EAAOooB,MAe5BnjC,EAAQsjC,UAAY,SAASt9B,EAAGa,EAAGkU,GACjC,MAAS/U,GAAEiC,KAAO8S,EAAO6L,WAAagc,EAAkB/7B,EAAEoB,KAAOpB,EAAE6M,OAC9D1N,EAAEiC,KAAOjC,EAAE0N,MAAQqH,EAAO6L,WAAagc,EAAW/7B,EAAEoB,MACpDjC,EAAEqC,IAAM0S,EAAO8L,SAAW+b,EAAyB/7B,EAAEwB,IAAMxB,EAAE8M,QAC7D3N,EAAEqC,IAAMrC,EAAE2N,OAASoH,EAAO8L,SAAW+b,EAAa/7B,EAAEwB,MAMvD,SAASpI,EAAQD,EAASM,GAgC9B,QAAS6B,GAASsO,EAAOC,EAAK8sB,EAAazH,GAEzC31B,KAAK+7B,QAAU,GAAIn3B,MACnB5E,KAAK8zB,OAAS,GAAIlvB,MAClB5E,KAAK+zB,KAAO,GAAInvB,MAEhB5E,KAAKw9B,WAAa,EAClBx9B,KAAKuE,MAAQ,MACbvE,KAAKmpB,KAAO,EAGZnpB,KAAKm0B,SAAS9jB,EAAOC,EAAK8sB,GAG1Bp9B,KAAKm8B,aAAc,EACnBn8B,KAAKk8B,eAAgB,EACrBl8B,KAAKi8B,cAAe,EACpBj8B,KAAK21B,YAAcA,EACC9uB,SAAhB8uB,IACF31B,KAAK21B,gBAGP31B,KAAKujC,OAASxhC,EAASyhC,OApDzB,GAAI3/B,GAAS3D,EAAoB,IAC7ByB,EAAWzB,EAAoB,IAC/BS,EAAOT,EAAoB,EAsD/B6B,GAASyhC,QACPC,aACEC,YAAY,MACZC,OAAY,IACZC,OAAY,QACZC,KAAY,QACZC,QAAY,QACZvJ,IAAY,IACZK,MAAY,MACZH,KAAY,QAEdsJ,aACEL,YAAY,WACZC,OAAY,eACZC,OAAY,aACZC,KAAY,aACZC,QAAY,YACZvJ,IAAY,YACZK,MAAY,OACZH,KAAY,KAUhB14B,EAASmS,UAAU8vB,UAAY,SAAUT,GACvC,GAAIU,GAAgBtjC,EAAKmG,cAAe/E,EAASyhC,OACjDxjC,MAAKujC,OAAS5iC,EAAKmG,WAAWm9B,EAAeV,IAa/CxhC,EAASmS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK8sB,GACjD,KAAM/sB,YAAiBzL,OAAW0L,YAAe1L,OAC/C,KAAO,+CAGT5E,MAAK8zB,OAAmBjtB,QAATwJ,EAAsB,GAAIzL,MAAKyL,EAAMhJ,WAAa,GAAIzC,MACrE5E,KAAK+zB,KAAeltB,QAAPyJ,EAAoB,GAAI1L,MAAK0L,EAAIjJ,WAAa,GAAIzC,MAE3D5E,KAAKw9B,WACPx9B,KAAK+9B,eAAeX,IAOxBr7B,EAASmS,UAAUgwB,MAAQ,WACzBlkC,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK8zB,OAAOzsB,WACpCrH,KAAK0+B,gBAOP38B,EAASmS,UAAUwqB,aAAe,WAIhC,OAAQ1+B,KAAKuE,OACX,IAAK,OACHvE,KAAK+7B,QAAQoI,YAAYnkC,KAAKmpB,KAAO3kB,KAAKgB,MAAMxF,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,OAClFnpB,KAAK+7B,QAAQsI,SAAS,EACxB,KAAK,QAAgBrkC,KAAK+7B,QAAQuI,QAAQ,EAC1C,KAAK,MACL,IAAK,UAAgBtkC,KAAK+7B,QAAQwI,SAAS,EAC3C,KAAK,OAAgBvkC,KAAK+7B,QAAQyI,WAAW,EAC7C,KAAK,SAAgBxkC,KAAK+7B,QAAQ0I,WAAW,EAC7C,KAAK,SAAgBzkC,KAAK+7B,QAAQ2I,gBAAgB,GAIpD,GAAiB,GAAb1kC,KAAKmpB,KAEP,OAAQnpB,KAAKuE,OACX,IAAK,cAAgBvE,KAAK+7B,QAAQ2I,gBAAgB1kC,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAKmpB,KAAQ,MACjI,KAAK,SAAgBnpB,KAAK+7B,QAAQ0I,WAAWzkC,KAAK+7B,QAAQ6I,aAAe5kC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,KAAO,MACjH,KAAK,SAAgBnpB,KAAK+7B,QAAQyI,WAAWxkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,KAAO,MACjH,KAAK,OAAgBnpB,KAAK+7B,QAAQwI,SAASvkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,KAAO,MAC3G,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAStkC,KAAK+7B,QAAQgJ,UAAU,GAAM/kC,KAAK+7B,QAAQgJ,UAAU,GAAK/kC,KAAKmpB,KAAO,EAAI,MACpH,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAQ,MAC5G,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,QAUnHpnB,EAASmS,UAAU2qB,QAAU,WAC3B,MAAQ7+B,MAAK+7B,QAAQ10B,WAAarH,KAAK+zB,KAAK1sB,WAM9CtF,EAASmS,UAAUmV,KAAO,WACxB,GAAImJ,GAAOxyB,KAAK+7B,QAAQ10B,SAIxB,IAAIrH,KAAK+7B,QAAQiJ,WAAa,EAC5B,OAAQhlC,KAAKuE,OACX,IAAK,cAEHvE,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAYrH,KAAKmpB,KAAO,MAC/D,KAAK,SAAgBnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,MACzF,KAAK,SAAgBnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,GAAK,MAC9F,KAAK,OACHnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,GAAK,GAEzE,IAAI7c,GAAItM,KAAK+7B,QAAQ+I,UACrB9kC,MAAK+7B,QAAQwI,SAASj4B,EAAKA,EAAItM,KAAKmpB,KACpC,MACF,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAQtkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAO,MAC/E,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAO,MACjF,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,UAKlF,QAAQnpB,KAAKuE,OACX,IAAK,cAAgBvE,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAYrH,KAAKmpB,KAAO,MAClF,KAAK,SAAgBnpB,KAAK+7B,QAAQ0I,WAAWzkC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,KAAO,MACrF,KAAK,SAAgBnpB,KAAK+7B,QAAQyI,WAAWxkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,KAAO,MACrF,KAAK,OAAgBnpB,KAAK+7B,QAAQwI,SAASvkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,KAAO,MACjF,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAQtkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAO,MAC/E,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAO,MACjF,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,MAKpF,GAAiB,GAAbnpB,KAAKmpB,KAEP,OAAQnpB,KAAKuE,OACX,IAAK,cAAmBvE,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQ2I,gBAAgB,EAAK,MACtG,KAAK,SAAmB1kC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQ0I,WAAW,EAAK,MAC5F,KAAK,SAAmBzkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQyI,WAAW,EAAK,MAC5F,KAAK,OAAmBxkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQwI,SAAS,EAAK,MACxF,KAAK,UACL,IAAK,MAAmBvkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAK,GAAGnpB,KAAK+7B,QAAQuI,QAAQ,EAAI,MACvF,KAAK,QAAmBtkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQsI,SAAS,EAAK,MACxF,KAAK,QAMLrkC,KAAK+7B,QAAQ10B,WAAamrB,IAC5BxyB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+zB,KAAK1sB,YAGpC1F,EAAS+5B,oBAAoB17B,KAAMwyB,IAQrCzwB,EAASmS,UAAUkV,WAAa,WAC9B,MAAOppB,MAAK+7B,SAedh6B,EAASmS,UAAU+wB,SAAW,SAASpwB,GACjCA,GAAiC,gBAAhBA,GAAOtQ,QAC1BvE,KAAKuE,MAAQsQ,EAAOtQ,MACpBvE,KAAKmpB,KAAOtU,EAAOsU,KAAO,EAAItU,EAAOsU,KAAO,EAC5CnpB,KAAKw9B,WAAY,IAQrBz7B,EAASmS,UAAUgxB,aAAe,SAAUC,GAC1CnlC,KAAKw9B,UAAY2H,GAQnBpjC,EAASmS,UAAU6pB,eAAiB,SAASX,GAC3C,GAAmBv2B,QAAfu2B,EAAJ,CAMA,GAAIgI,GAAiB,QACjBC,EAAiB,OACjBC,EAAiB,MACjBC,EAAiB,KACjBC,EAAiB,IACjBC,EAAiB,IACjBC,EAAiB,CAGR,KAATN,EAAgBhI,IAAqBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,IAATic,EAAehI,IAAsBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,IAATic,EAAehI,IAAsBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,GAATic,EAAchI,IAAuBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,IACpE,GAATic,EAAchI,IAAuBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,IACpE,EAATic,EAAahI,IAAwBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAC7Eic,EAAWhI,IAA0Bp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GACnE,EAAVkc,EAAcjI,IAAuBp9B,KAAKuE,MAAQ,QAAevE,KAAKmpB,KAAO,GAC7Ekc,EAAYjI,IAAyBp9B,KAAKuE,MAAQ,QAAevE,KAAKmpB,KAAO,GACrE,EAARmc,EAAYlI,IAAyBp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GACrE,EAARmc,EAAYlI,IAAyBp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GAC7Emc,EAAUlI,IAA2Bp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GAC7Emc,EAAQ,EAAIlI,IAAyBp9B,KAAKuE,MAAQ,UAAevE,KAAKmpB,KAAO,GACpE,EAAToc,EAAanI,IAAwBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAC7Eoc,EAAWnI,IAA0Bp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAClE,GAAXqc,EAAgBpI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,GAAXqc,EAAgBpI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,EAAXqc,EAAepI,IAAsBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7Eqc,EAAapI,IAAwBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAClE,GAAXsc,EAAgBrI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,GAAXsc,EAAgBrI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,EAAXsc,EAAerI,IAAsBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7Esc,EAAarI,IAAwBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7D,IAAhBuc,EAAsBtI,IAAep9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAC7D,IAAhBuc,EAAsBtI,IAAep9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAC7D,GAAhBuc,EAAqBtI,IAAgBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,IAC7D,GAAhBuc,EAAqBtI,IAAgBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,IAC7D,EAAhBuc,EAAoBtI,IAAiBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,GAC7Euc,EAAkBtI,IAAmBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAanFpnB,EAAS42B,KAAO,SAASgC,EAAMp2B,EAAO4kB,GACpC,GAAImR,GAAQ,GAAI11B,MAAK+1B,EAAKtzB,UAE1B,IAAa,QAAT9C,EAAiB,CACnB,GAAIk2B,GAAOH,EAAM8J,cAAgB5/B,KAAK+pB,MAAM+L,EAAM0K,WAAa,GAC/D1K,GAAM6J,YAAY3/B,KAAK+pB,MAAMkM,EAAOtR,GAAQA,GAC5CmR,EAAM+J,SAAS,GACf/J,EAAMgK,QAAQ,GACdhK,EAAMiK,SAAS,GACfjK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,SAATngC,EACH+1B,EAAMyK,UAAY,IACpBzK,EAAMgK,QAAQ,GACdhK,EAAM+J,SAAS/J,EAAM0K,WAAa,IAIlC1K,EAAMgK,QAAQ,GAGhBhK,EAAMiK,SAAS,GACfjK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,OAATngC,EAAgB,CAEvB,OAAQ4kB,GACN,IAAK,GACL,IAAK,GACHmR,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAAW,MAC1D,SACExK,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,KAEjDxK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,WAATngC,EAAoB,CAE3B,OAAQ4kB,GACN,IAAK,GACL,IAAK,GACHmR,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAAW,MAC1D,SACExK,EAAMiK,SAA4C,EAAnC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAEjDxK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,QAATngC,EAAiB,CACxB,OAAQ4kB,GACN,IAAK,GACHmR,EAAMkK,WAAiD,GAAtChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,IAAW,MAC9D,SACEvK,EAAMkK,WAAiD,GAAtChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,KAErDvK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OACjB,IAAa,UAATngC,EAAmB,CAE5B,OAAQ4kB,GACN,IAAK,IACL,IAAK,IACHmR,EAAMkK,WAAgD,EAArChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,IACjDvK,EAAMmK,WAAW,EACjB,MACF,KAAK,GACHnK,EAAMmK,WAAiD,GAAtCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,IAAW,MAC9D,SACEtK,EAAMmK,WAAiD,GAAtCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,KAErDtK,EAAMoK,gBAAgB,OAEnB,IAAa,UAATngC,EAEP,OAAQ4kB,GACN,IAAK,IACL,IAAK,IACHmR,EAAMmK,WAAgD,EAArCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,IACjDtK,EAAMoK,gBAAgB,EACtB,MACF,KAAK,GACHpK,EAAMoK,gBAA6D,IAA7ClgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB,KAAe,MAC5E,SACErK,EAAMoK,gBAA4D,IAA5ClgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB,UAG5D,IAAa,eAATpgC,EAAwB,CAC/B,GAAIyvB,GAAQ7K,EAAO,EAAIA,EAAO,EAAI,CAClCmR,GAAMoK,gBAAgBlgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB3Q,GAASA,GAGtE,MAAOsG,IAQTv4B,EAASmS,UAAUgrB,QAAU,WAC3B,GAAyB,GAArBl/B,KAAKi8B,aAEP,OADAj8B,KAAKi8B,cAAe,EACZj8B,KAAKuE,OACX,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAGR,IAA0B,GAAtBvE,KAAKk8B,cAEZ,OADAl8B,KAAKk8B,eAAgB,EACbl8B,KAAKuE,OACX,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAGR,IAAwB,GAApBvE,KAAKm8B,YAEZ,OADAn8B,KAAKm8B,aAAc,EACXn8B,KAAKuE,OACX,IAAK,cACL,IAAK,SACL,IAAK,SACL,IAAK,OACH,OAAO,CACT,SACE,OAAO,EAIb,OAAQvE,KAAKuE,OACX,IAAK,cACH,MAA0C,IAAlCvE,KAAK+7B,QAAQ4I,iBACvB,KAAK,SACH,MAAqC,IAA7B3kC,KAAK+7B,QAAQ6I,YACvB,KAAK,SACH,MAAmC,IAA3B5kC,KAAK+7B,QAAQ+I,YAAkD,GAA7B9kC,KAAK+7B,QAAQ8I,YACzD,KAAK,OACH,MAAmC,IAA3B7kC,KAAK+7B,QAAQ+I,UACvB,KAAK,UACL,IAAK,MACH,MAAkC,IAA1B9kC,KAAK+7B,QAAQgJ,SACvB,KAAK,QACH,MAAmC,IAA3B/kC,KAAK+7B,QAAQiJ,UACvB,KAAK,OACH,OAAO,CACT,SACE,OAAO,IAWbjjC,EAASmS,UAAUyxB,cAAgB,SAAShL,GAC9B9zB,QAAR8zB,IACFA,EAAO36B,KAAK+7B,QAGd,IAAIwH,GAASvjC,KAAKujC,OAAOE,YAAYzjC,KAAKuE,MAC1C,OAAQg/B,IAAUA,EAAOv9B,OAAS,EAAKnC,EAAO82B,GAAM4I,OAAOA,GAAU,IASvExhC,EAASmS,UAAU0xB,cAAgB,SAASjL,GAC9B9zB,QAAR8zB,IACFA,EAAO36B,KAAK+7B,QAGd,IAAIwH,GAASvjC,KAAKujC,OAAOQ,YAAY/jC,KAAKuE,MAC1C,OAAQg/B,IAAUA,EAAOv9B,OAAS,EAAKnC,EAAO82B,GAAM4I,OAAOA,GAAU,IAGvExhC,EAASmS,UAAU2xB,aAAe,WAKhC,QAASC,GAAKxhC,GACZ,MAAQA,GAAQ6kB,EAAO,GAAK,EAAK,QAAU,OAG7C,QAAS4c,GAAMpL,GACb,MAAIA,GAAKqL,OAAO,GAAIphC,MAAQ,OACnB,SAEL+1B,EAAKqL,OAAOniC,IAASmQ,IAAI,EAAG,OAAQ,OAC/B,YAEL2mB,EAAKqL,OAAOniC,IAASmQ,IAAI,GAAI,OAAQ,OAChC,aAEF,GAGT,QAASiyB,GAAYtL,GACnB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,QAAU,gBAAkB,GAG7D,QAASshC,GAAavL,GACpB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,SAAW,iBAAmB,GAG/D,QAASuhC,GAAYxL,GACnB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,QAAU,gBAAkB,GA9B7D,GAAIpE,GAAIqD,EAAO7D,KAAK+7B,SAChBpB,EAAOn6B,EAAE4lC,OAAS5lC,EAAE4lC,OAAO,MAAQ5lC,EAAE6lC,KAAK,MAC1Cld,EAAOnpB,KAAKmpB,IA+BhB,QAAQnpB,KAAKuE,OACX,IAAK,cACH,MAAOuhC,GAAKnL,EAAK4E,gBAAgB5xB,MAEnC,KAAK,SACH,MAAOm4B,GAAKnL,EAAK2E,WAAW3xB,MAE9B,KAAK,SACH,MAAOm4B,GAAKnL,EAAK0E,WAAW1xB,MAE9B,KAAK,OACH,GAAIyxB,GAAQzE,EAAKyE,OAIjB,OAHiB,IAAbp/B,KAAKmpB,OACPiW,EAAQA,EAAQ,KAAOA,EAAQ,IAE1BA,EAAQ,IAAM2G,EAAMpL,GAAQmL,EAAKnL,EAAKyE,QAE/C,KAAK,UACH,MAAOzE,GAAK4I,OAAO,QAAQ+C,cACvBP,EAAMpL,GAAQsL,EAAYtL,GAAQmL,EAAKnL,EAAKA,OAElD,KAAK,MACH,GAAIJ,GAAMI,EAAKA,OACXC,EAAQD,EAAK4I,OAAO,QAAQ+C,aAChC,OAAO,MAAQ/L,EAAM,IAAMK,EAAQsL,EAAavL,GAAQmL,EAAKvL,EAAM,EAErE,KAAK,QACH,MAAOI,GAAK4I,OAAO,QAAQ+C,cACvBJ,EAAavL,GAAQmL,EAAKnL,EAAKC,QAErC,KAAK,OACH,GAAIH,GAAOE,EAAKF,MAChB,OAAO,OAASA,EAAO0L,EAAYxL,GAAOmL,EAAKrL,EAEjD,SACE,MAAO,KAIb56B,EAAOD,QAAUmC,GAKb,SAASlC,EAAQD,EAASM,GAc9B,QAASgC,GAAMuR,EAAM2oB,EAAYltB,GAC/BlP,KAAKK,GAAK,KACVL,KAAKqK,OAAS,KACdrK,KAAKyT,KAAOA,EACZzT,KAAK2wB,IAAM,KACX3wB,KAAKo8B,WAAaA,MAClBp8B,KAAKkP,QAAUA,MAEflP,KAAKumC,UAAW,EAChBvmC,KAAKwmC,WAAY,EACjBxmC,KAAKymC,OAAQ,EAEbzmC,KAAKiI,IAAM,KACXjI,KAAK6H,KAAO,KACZ7H,KAAKsT,MAAQ,KACbtT,KAAKuT,OAAS,KA3BhB,GAAImzB,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,EA6B/BgC,GAAKgS,UAAUpS,OAAQ,EAKvBI,EAAKgS,UAAUyyB,OAAS,WACtB3mC,KAAKumC,UAAW,EAChBvmC,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAM3BvgB,EAAKgS,UAAU0yB,SAAW,WACxB5mC,KAAKumC,UAAW,EAChBvmC,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAQ3BvgB,EAAKgS,UAAU6E,QAAU,SAAStF,GAChC,GAAIozB,GAA6BhgC,QAAd4M,EAAKf,OAAsB1S,KAAKyT,KAAKf,OAASe,EAAKf,KAClEm0B,IACF7mC,KAAKqK,OAAOqsB,QAAQoQ,aAAa9mC,KAAMyT,EAAKf,OAG9C1S,KAAKyT,KAAOA,EACZzT,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAO3BvgB,EAAKgS,UAAU6yB,UAAY,SAAS18B,GAC9BrK,KAAKwmC,WACPxmC,KAAKgnC,OACLhnC,KAAKqK,OAASA,EACVrK,KAAKqK,QACPrK,KAAKinC,QAIPjnC,KAAKqK,OAASA,GASlBnI,EAAKgS,UAAUgzB,UAAY,WAEzB,OAAO,GAOThlC,EAAKgS,UAAU+yB,KAAO,WACpB,OAAO,GAOT/kC,EAAKgS,UAAU8yB,KAAO,WACpB,OAAO,GAMT9kC,EAAKgS,UAAUuO,OAAS,aAOxBvgB,EAAKgS,UAAUizB,YAAc,aAO7BjlC,EAAKgS,UAAUkzB,YAAc,aAS7BllC,EAAKgS,UAAUmzB,qBAAuB,SAAUC,GAC9C,GAAItnC,KAAKumC,UAAYvmC,KAAKkP,QAAQq4B,SAASnwB,SAAWpX,KAAK2wB,IAAI6W,aAAc,CAE3E,GAAItyB,GAAKlV,KAELwnC,EAAex1B,SAASM,cAAc,MAC1Ck1B,GAAap/B,UAAY,SACzBo/B,EAAaC,MAAQ,mBAErBf,EAAOc,GACL59B,gBAAgB,IACf0K,GAAG,MAAO,SAAUzK,GACrBA,EAAMD,iBACNC,EAAM69B,kBACNxyB,EAAG7K,OAAOs9B,kBAAkBzyB,KAG9BoyB,EAAOp1B,YAAYs1B,GACnBxnC,KAAK2wB,IAAI6W,aAAeA,OAEhBxnC,KAAKumC,UAAYvmC,KAAK2wB,IAAI6W,eAE9BxnC,KAAK2wB,IAAI6W,aAAar9B,YACxBnK,KAAK2wB,IAAI6W,aAAar9B,WAAWyH,YAAY5R,KAAK2wB,IAAI6W,cAExDxnC,KAAK2wB,IAAI6W,aAAe,OAS5BtlC,EAAKgS,UAAU0zB,gBAAkB,SAAUz+B,GACzC,GAAIgK,EACJ,IAAInT,KAAKkP,QAAQ24B,SAAU,CACzB,GAAI9P,GAAW/3B,KAAKqK,OAAOqsB,QAAQC,UAAU1gB,IAAIjW,KAAKK,GACtD8S,GAAUnT,KAAKkP,QAAQ24B,SAAS9P,OAGhC5kB,GAAUnT,KAAKyT,KAAKN,OAGtB,IAAGA,IAAYnT,KAAKmT,QAAS,CAE3B,GAAIA,YAAmB20B,SACrB3+B,EAAQ8b,UAAY,GACpB9b,EAAQ+I,YAAYiB,OAEjB,IAAetM,QAAXsM,EACPhK,EAAQ8b,UAAY9R,MAGpB,IAAwB,cAAlBnT,KAAKyT,KAAKtM,MAA8CN,SAAtB7G,KAAKyT,KAAKN,QAChD,KAAM,IAAIvP,OAAM,sCAAwC5D,KAAKK,GAIjEL,MAAKmT,QAAUA,IASnBjR,EAAKgS,UAAU6zB,aAAe,SAAU5+B,GACf,MAAnBnJ,KAAKyT,KAAKg0B,MACZt+B,EAAQs+B,MAAQznC,KAAKyT,KAAKg0B,OAAS,GAGnCt+B,EAAQ6+B,gBAAgB,UAS3B9lC,EAAKgS,UAAU+zB,sBAAwB,SAAS9+B,GAC/C,GAAInJ,KAAKkP,QAAQg5B,gBAAkBloC,KAAKkP,QAAQg5B,eAAeliC,OAAS,EAAG,CACzE,GAAImiC,KAEJ,IAAI7hC,MAAMC,QAAQvG,KAAKkP,QAAQg5B,gBAC7BC,EAAanoC,KAAKkP,QAAQg5B,mBAEvB,CAAA,GAAmC,OAA/BloC,KAAKkP,QAAQg5B,eAIpB,MAHAC,GAAavhC,OAAOiH,KAAK7N,KAAKyT,MAMhC,IAAK,GAAI5N,GAAI,EAAGA,EAAIsiC,EAAWniC,OAAQH,IAAK,CAC1C,GAAImR,GAAOmxB,EAAWtiC,GAClBvB,EAAQtE,KAAKyT,KAAKuD,EAET,OAAT1S,EACF6E,EAAQi/B,aAAa,QAAUpxB,EAAM1S,GAGrC6E,EAAQ6+B,gBAAgB,QAAUhxB,MAW1C9U,EAAKgS,UAAUm0B,aAAe,SAASl/B,GAEjCnJ,KAAK0N,QACP/M,EAAKuN,cAAc/E,EAASnJ,KAAK0N,OACjC1N,KAAK0N,MAAQ,MAIX1N,KAAKyT,KAAK/F,QACZ/M,EAAKoN,WAAW5E,EAASnJ,KAAKyT,KAAK/F,OACnC1N,KAAK0N,MAAQ1N,KAAKyT,KAAK/F,QAI3B7N,EAAOD,QAAUsC,GAKb,SAASrC,EAAQD,EAASM,GAkB9B,QAASiC,GAAgBsR,EAAM2oB,EAAYltB,GASzC,GARAlP,KAAKqG,OACH8M,SACEG,MAAO,IAGXtT,KAAK6kB,UAAW,EAGZpR,EAAM,CACR,GAAkB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAAKpT,GAE7D,IAAgBwG,QAAZ4M,EAAKnD,IACP,KAAM,IAAI1M,OAAM,kCAAoC6P,EAAKpT,IAI7D6B,EAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAElClP,KAAKsoC,cAAe,EApCtB,GACIpmC,IADShC,EAAoB,IACtBA,EAAoB,KAC3B2C,EAAkB3C,EAAoB,IACtCoC,EAAYpC,EAAoB,GAoCpCiC,GAAe+R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAEjDC,EAAe+R,UAAUq0B,cAAgB,kBACzCpmC,EAAe+R,UAAUpS,OAAQ,EAOjCK,EAAe+R,UAAUgzB,UAAY,SAAS5Q,GAE5C,MAAQt2B,MAAKyT,KAAKpD,MAAQimB,EAAMhmB,KAAStQ,KAAKyT,KAAKnD,IAAMgmB,EAAMjmB,OAMjElO,EAAe+R,UAAUuO,OAAS,WAChC,GAAIkO,GAAM3wB,KAAK2wB,GAuBf,IAtBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI6X,IAAMx2B,SAASM,cAAc,OAIjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI6X,IAAIt2B,YAAYye,EAAIxd,SAMxBnT,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI6X,IAAIr+B,WAAY,CACvB,GAAI0C,GAAa7M,KAAKqK,OAAOsmB,IAAI9jB,UACjC,KAAKA,EACH,KAAM,IAAIjJ,OAAM,iEAElBiJ,GAAWqF,YAAYye,EAAI6X,KAQ7B,GANAxoC,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK4nC,gBAAgB5nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK+nC,aAAa/nC,KAAK2wB,IAAIxd,SAC3BnT,KAAKioC,sBAAsBjoC,KAAK2wB,IAAIxd,SACpCnT,KAAKqoC,aAAaroC,KAAK2wB,IAAI6X,IAG3B,IAAIpgC,IAAapI,KAAKyT,KAAKrL,UAAa,IAAMpI,KAAKyT,KAAKrL,UAAa,KAChEpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI6X,IAAIpgC,UAAYpI,KAAKuoC,cAAgBngC,EAGzCpI,KAAK6kB,SAA6D,WAAlD/c,OAAO2gC,iBAAiB9X,EAAIxd,SAAS0R,SAGrD7kB,KAAKqG,MAAM8M,QAAQG,MAAQtT,KAAK2wB,IAAIxd,QAAQ6d,YAC5ChxB,KAAKuT,OAAS,EAEdvT,KAAKymC,OAAQ,IAQjBtkC,EAAe+R,UAAU+yB,KAAO3kC,EAAU4R,UAAU+yB,KAMpD9kC,EAAe+R,UAAU8yB,KAAO1kC,EAAU4R,UAAU8yB,KAMpD7kC,EAAe+R,UAAUizB,YAAc7kC,EAAU4R,UAAUizB,YAM3DhlC,EAAe+R,UAAUkzB,YAAc,SAASzsB,GAC9C,GAAI+tB,GAAqC,QAA7B1oC,KAAKkP,QAAQimB,WACzBn1B,MAAK2wB,IAAIxd,QAAQzF,MAAMzF,IAAMygC,EAAQ,GAAK,IAC1C1oC,KAAK2wB,IAAIxd,QAAQzF,MAAM4W,OAASokB,EAAQ,IAAM,EAC9C,IAAIn1B,EAGJ,IAA2B1M,SAAvB7G,KAAKyT,KAAK6vB,SAAwB,CAGpC,GAAIqF,GAAe3oC,KAAKyT,KAAK6vB,SACzBF,EAAYpjC,KAAKqK,OAAO+4B,UACxBwF,EAAgBxF,EAAUuF,GAAcjgC,KAE5C,IAAa,GAATggC,EAAe,CAEjBn1B,EAASvT,KAAKqK,OAAO+4B,UAAUuF,GAAcp1B,OAASoH,EAAO7K,KAAK2W,SAClElT,GAA2B,GAAjBq1B,EAAqBjuB,EAAOooB,KAAO,GAAIpoB,EAAO7K,KAAK2W,SAAW,CACxE,IAAI4c,GAASrjC,KAAKqK,OAAOpC,GACzB,KAAK,GAAIq7B,KAAYF,GACfA,EAAUj9B,eAAem9B,IACQ,GAA/BF,EAAUE,GAAU7Z,SAAmB2Z,EAAUE,GAAU56B,MAAQkgC,IACrEvF,GAAUD,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,SAMzD4c,IAA2B,GAAjBuF,EAAqBjuB,EAAOooB,KAAO,GAAMpoB,EAAO7K,KAAK2W,SAAW,EAC1EzmB,KAAK2wB,IAAI6X,IAAI96B,MAAMzF,IAAMo7B,EAAS,KAClCrjC,KAAK2wB,IAAI6X,IAAI96B,MAAM4W,OAAS,OAGzB,CACH,GAAI+e,GAASrjC,KAAKqK,OAAOpC,IACrB4gC,EAAc,CAClB,KAAK,GAAIvF,KAAYF,GACnB,GAAIA,EAAUj9B,eAAem9B,IACQ,GAA/BF,EAAUE,GAAU7Z,QAAiB,CACvC,GAAIqf,GAAY1F,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,QACzDoiB,IAAeC,EACX1F,EAAUE,GAAU56B,MAAQkgC,IAC9BvF,GAAUyF,GAKlBv1B,EAASvT,KAAKqK,OAAO+4B,UAAUuF,GAAcp1B,OAASoH,EAAO7K,KAAK2W,SAClEzmB,KAAK2wB,IAAI6X,IAAI96B,MAAMzF,IAAOjI,KAAKqK,OAAOkJ,OAASs1B,EAAcxF,EAAU,KACvErjC,KAAK2wB,IAAI6X,IAAI96B,MAAM4W,OAAS,QAM1BtkB,MAAKqK,iBAAkBxH,IAEzB0Q,EAAS/O,KAAKJ,IAAIpE,KAAKqK,OAAOkJ,OAC1BvT,KAAKqK,OAAOqsB,QAAQnB,KAAKC,SAASzI,OAAOxZ,OACzCvT,KAAKqK,OAAOqsB,QAAQnB,KAAKC,SAASkD,gBAAgBnlB,QACtDvT,KAAK2wB,IAAI6X,IAAI96B,MAAMzF,IAAMygC,EAAQ,IAAM,GACvC1oC,KAAK2wB,IAAI6X,IAAI96B,MAAM4W,OAASokB,EAAQ,GAAK,MAGzCn1B,EAASvT,KAAKqK,OAAOkJ,OAErBvT,KAAK2wB,IAAI6X,IAAI96B,MAAMzF,IAAMjI,KAAKqK,OAAOpC,IAAM,KAC3CjI,KAAK2wB,IAAI6X,IAAI96B,MAAM4W,OAAS,GAGhCtkB,MAAK2wB,IAAI6X,IAAI96B,MAAM6F,OAASA,EAAS,MAGvC1T,EAAOD,QAAUuC,GAKb,SAAStC,EAAQD,EAASM,GAe9B,QAASkC,GAASqR,EAAM2oB,EAAYltB,GAalC,GAZAlP,KAAKqG,OACHqqB,KACEpd,MAAO,EACPC,OAAQ,GAEVkd,MACEnd,MAAO,EACPC,OAAQ,IAKRE,GACgB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAI1DvR,GAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAhCpC,CAAA,GAAIhN,GAAOhC,EAAoB,GACpBA,GAAoB,GAkC/BkC,EAAQ8R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAO1CE,EAAQ8R,UAAUgzB,UAAY,SAAS5Q,GAGrC,GAAIlD,IAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,CAC3C,OAAQrQ,MAAKyT,KAAKpD,MAAQimB,EAAMjmB,MAAQ+iB,GAAcpzB,KAAKyT,KAAKpD,MAAQimB,EAAMhmB,IAAM8iB,GAMtFhxB,EAAQ8R,UAAUuO,OAAS,WACzB,GAAIkO,GAAM3wB,KAAK2wB,GA6Bf,IA5BKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI6X,IAAMx2B,SAASM,cAAc,OAGjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI6X,IAAIt2B,YAAYye,EAAIxd,SAGxBwd,EAAIF,KAAOze,SAASM,cAAc,OAClCqe,EAAIF,KAAKroB,UAAY,OAGrBuoB,EAAID,IAAM1e,SAASM,cAAc,OACjCqe,EAAID,IAAItoB,UAAY,MAGpBuoB,EAAI6X,IAAI,iBAAmBxoC,KAE3BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI6X,IAAIr+B,WAAY,CACvB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EAAY,KAAM,IAAIn1B,OAAM,iEACjCm1B,GAAW7mB,YAAYye,EAAI6X,KAE7B,IAAK7X,EAAIF,KAAKtmB,WAAY,CACxB,GAAI0C,GAAa7M,KAAKqK,OAAOsmB,IAAI9jB,UACjC,KAAKA,EAAY,KAAM,IAAIjJ,OAAM,iEACjCiJ,GAAWqF,YAAYye,EAAIF,MAE7B,IAAKE,EAAID,IAAIvmB,WAAY,CACvB,GAAI44B,GAAO/iC,KAAKqK,OAAOsmB,IAAIoS,IAC3B,KAAKl2B,EAAY,KAAM,IAAIjJ,OAAM,2DACjCm/B,GAAK7wB,YAAYye,EAAID,KAQvB,GANA1wB,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK4nC,gBAAgB5nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK+nC,aAAa/nC,KAAK2wB,IAAI6X,KAC3BxoC,KAAKioC,sBAAsBjoC,KAAK2wB,IAAI6X,KACpCxoC,KAAKqoC,aAAaroC,KAAK2wB,IAAI6X,IAG3B,IAAIpgC,IAAapI,KAAKyT,KAAKrL,UAAW,IAAMpI,KAAKyT,KAAKrL,UAAY,KAC7DpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI6X,IAAIpgC,UAAY,WAAaA,EACjCuoB,EAAIF,KAAKroB,UAAY,YAAcA,EACnCuoB,EAAID,IAAItoB,UAAa,WAAaA,EAGlCpI,KAAKqG,MAAMqqB,IAAInd,OAASod,EAAID,IAAIQ,aAChClxB,KAAKqG,MAAMqqB,IAAIpd,MAAQqd,EAAID,IAAIM,YAC/BhxB,KAAKqG,MAAMoqB,KAAKnd,MAAQqd,EAAIF,KAAKO,YACjChxB,KAAKsT,MAAQqd,EAAI6X,IAAIxX,YACrBhxB,KAAKuT,OAASod,EAAI6X,IAAItX,aAEtBlxB,KAAKymC,OAAQ,EAGfzmC,KAAKqnC,qBAAqB1W,EAAI6X,MAOhCpmC,EAAQ8R,UAAU+yB,KAAO,WAClBjnC,KAAKwmC,WACRxmC,KAAKyiB,UAOTrgB,EAAQ8R,UAAU8yB,KAAO,WACvB,GAAIhnC,KAAKwmC,UAAW,CAClB,GAAI7V,GAAM3wB,KAAK2wB,GAEXA,GAAI6X,IAAIr+B,YAAcwmB,EAAI6X,IAAIr+B,WAAWyH,YAAY+e,EAAI6X,KACzD7X,EAAIF,KAAKtmB,YAAawmB,EAAIF,KAAKtmB,WAAWyH,YAAY+e,EAAIF,MAC1DE,EAAID,IAAIvmB,YAAcwmB,EAAID,IAAIvmB,WAAWyH,YAAY+e,EAAID,KAE7D1wB,KAAKwmC,WAAY,IAQrBpkC,EAAQ8R,UAAUizB,YAAc,WAC9B,GAAI92B,GAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,OAC3C04B,EAAQ/oC,KAAKkP,QAAQ65B,KAKvB/oC,MAAK6H,KADM,SAATkhC,EACU14B,EAAQrQ,KAAKsT,MAET,QAATy1B,EACK14B,EAIAA,EAAQrQ,KAAKsT,MAAQ,EAInCtT,KAAK2wB,IAAI6X,IAAI96B,MAAM7F,KAAO7H,KAAK6H,KAAO,KAGtC7H,KAAK2wB,IAAIF,KAAK/iB,MAAM7F,KAAQwI,EAAQrQ,KAAKqG,MAAMoqB,KAAKnd,MAAQ,EAAK,KAGjEtT,KAAK2wB,IAAID,IAAIhjB,MAAM7F,KAAQwI,EAAQrQ,KAAKqG,MAAMqqB,IAAIpd,MAAQ,EAAK,MAOjElR,EAAQ8R,UAAUkzB,YAAc,WAC9B,GAAIjS,GAAcn1B,KAAKkP,QAAQimB,YAC3BqT,EAAMxoC,KAAK2wB,IAAI6X,IACf/X,EAAOzwB,KAAK2wB,IAAIF,KAChBC,EAAM1wB,KAAK2wB,IAAID,GAEnB,IAAmB,OAAfyE,EACFqT,EAAI96B,MAAMzF,KAAWjI,KAAKiI,KAAO,GAAK,KAEtCwoB,EAAK/iB,MAAMzF,IAAS,IACpBwoB,EAAK/iB,MAAM6F,OAAUvT,KAAKqK,OAAOpC,IAAMjI,KAAKiI,IAAM,EAAK,KACvDwoB,EAAK/iB,MAAM4W,OAAS,OAEjB,CACH,GAAI0kB,GAAgBhpC,KAAKqK,OAAOqsB,QAAQrwB,MAAMkN,OAC1C4d,EAAa6X,EAAgBhpC,KAAKqK,OAAOpC,IAAMjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,GAE7EugC,GAAI96B,MAAMzF,KAAWjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,QAAU,GAAK,KACzEkd,EAAK/iB,MAAMzF,IAAU+gC,EAAgB7X,EAAc,KACnDV,EAAK/iB,MAAM4W,OAAS,IAGtBoM,EAAIhjB,MAAMzF,KAAQjI,KAAKqG,MAAMqqB,IAAInd,OAAS,EAAK,MAGjD1T,EAAOD,QAAUwC,GAKb,SAASvC,EAAQD,EAASM,GAc9B,QAASmC,GAAWoR,EAAM2oB,EAAYltB,GAcpC,GAbAlP,KAAKqG,OACHqqB,KACEzoB,IAAK,EACLqL,MAAO,EACPC,OAAQ,GAEVJ,SACEI,OAAQ,EACR01B,WAAY,IAKZx1B,GACgB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAI1DvR,GAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAhCpC,GAAIhN,GAAOhC,EAAoB,GAmC/BmC,GAAU6R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAO5CG,EAAU6R,UAAUgzB,UAAY,SAAS5Q,GAGvC,GAAIlD,IAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,CAC3C,OAAQrQ,MAAKyT,KAAKpD,MAAQimB,EAAMjmB,MAAQ+iB,GAAcpzB,KAAKyT,KAAKpD,MAAQimB,EAAMhmB,IAAM8iB,GAMtF/wB,EAAU6R,UAAUuO,OAAS,WAC3B,GAAIkO,GAAM3wB,KAAK2wB,GA0Bf,IAzBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI/d,MAAQZ,SAASM,cAAc,OAInCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI/d,MAAMV,YAAYye,EAAIxd,SAG1Bwd,EAAID,IAAM1e,SAASM,cAAc,OACjCqe,EAAI/d,MAAMV,YAAYye,EAAID,KAG1BC,EAAI/d,MAAM,iBAAmB5S,KAE7BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI/d,MAAMzI,WAAY,CACzB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EACH,KAAM,IAAIn1B,OAAM,iEAElBm1B,GAAW7mB,YAAYye,EAAI/d,OAQ7B,GANA5S,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK4nC,gBAAgB5nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK+nC,aAAa/nC,KAAK2wB,IAAI/d,OAC3B5S,KAAKioC,sBAAsBjoC,KAAK2wB,IAAI/d,OACpC5S,KAAKqoC,aAAaroC,KAAK2wB,IAAI/d,MAG3B,IAAIxK,IAAapI,KAAKyT,KAAKrL,UAAW,IAAMpI,KAAKyT,KAAKrL,UAAY,KAC7DpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI/d,MAAMxK,UAAa,aAAeA,EACtCuoB,EAAID,IAAItoB,UAAa,WAAaA,EAGlCpI,KAAKsT,MAAQqd,EAAI/d,MAAMoe,YACvBhxB,KAAKuT,OAASod,EAAI/d,MAAMse,aACxBlxB,KAAKqG,MAAMqqB,IAAIpd,MAAQqd,EAAID,IAAIM,YAC/BhxB,KAAKqG,MAAMqqB,IAAInd,OAASod,EAAID,IAAIQ,aAChClxB,KAAKqG,MAAM8M,QAAQI,OAASod,EAAIxd,QAAQ+d,aAGxCP,EAAIxd,QAAQzF,MAAMu7B,WAAa,EAAIjpC,KAAKqG,MAAMqqB,IAAIpd,MAAQ,KAG1Dqd,EAAID,IAAIhjB,MAAMzF,KAAQjI,KAAKuT,OAASvT,KAAKqG,MAAMqqB,IAAInd,QAAU,EAAK,KAClEod,EAAID,IAAIhjB,MAAM7F,KAAQ7H,KAAKqG,MAAMqqB,IAAIpd,MAAQ,EAAK,KAElDtT,KAAKymC,OAAQ,EAGfzmC,KAAKqnC,qBAAqB1W,EAAI/d,QAOhCvQ,EAAU6R,UAAU+yB,KAAO,WACpBjnC,KAAKwmC,WACRxmC,KAAKyiB,UAOTpgB,EAAU6R,UAAU8yB,KAAO,WACrBhnC,KAAKwmC,YACHxmC,KAAK2wB,IAAI/d,MAAMzI,YACjBnK,KAAK2wB,IAAI/d,MAAMzI,WAAWyH,YAAY5R,KAAK2wB,IAAI/d,OAGjD5S,KAAKwmC,WAAY,IAQrBnkC,EAAU6R,UAAUizB,YAAc,WAChC,GAAI92B,GAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,MAE/CrQ,MAAK6H,KAAOwI,EAAQrQ,KAAKqG,MAAMqqB,IAAIpd,MAGnCtT,KAAK2wB,IAAI/d,MAAMlF,MAAM7F,KAAO7H,KAAK6H,KAAO,MAO1CxF,EAAU6R,UAAUkzB,YAAc,WAChC,GAAIjS,GAAcn1B,KAAKkP,QAAQimB,YAC3BviB,EAAQ5S,KAAK2wB,IAAI/d,KAGnBA,GAAMlF,MAAMzF,IADK,OAAfktB,EACgBn1B,KAAKiI,IAAM,KAGVjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,OAAU,MAItE1T,EAAOD,QAAUyC,GAKb,SAASxC,EAAQD,EAASM,GAe9B,QAASoC,GAAWmR,EAAM2oB,EAAYltB,GASpC,GARAlP,KAAKqG,OACH8M,SACEG,MAAO,IAGXtT,KAAK6kB,UAAW,EAGZpR,EAAM,CACR,GAAkB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAAKpT,GAE7D,IAAgBwG,QAAZ4M,EAAKnD,IACP,KAAM,IAAI1M,OAAM,kCAAoC6P,EAAKpT,IAI7D6B,EAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GA/BpC,GAAIw3B,GAASxmC,EAAoB,IAC7BgC,EAAOhC,EAAoB,GAiC/BoC,GAAU4R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAE5CI,EAAU4R,UAAUq0B,cAAgB,aAOpCjmC,EAAU4R,UAAUgzB,UAAY,SAAS5Q,GAEvC,MAAQt2B,MAAKyT,KAAKpD,MAAQimB,EAAMhmB,KAAStQ,KAAKyT,KAAKnD,IAAMgmB,EAAMjmB,OAMjE/N,EAAU4R,UAAUuO,OAAS,WAC3B,GAAIkO,GAAM3wB,KAAK2wB,GAsBf,IArBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI6X,IAAMx2B,SAASM,cAAc,OAIjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI6X,IAAIt2B,YAAYye,EAAIxd,SAGxBwd,EAAI6X,IAAI,iBAAmBxoC,KAE3BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI6X,IAAIr+B,WAAY,CACvB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EACH,KAAM,IAAIn1B,OAAM,iEAElBm1B,GAAW7mB,YAAYye,EAAI6X,KAQ7B,GANAxoC,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK4nC,gBAAgB5nC,KAAK2wB,IAAIxd,SAC9BnT,KAAK+nC,aAAa/nC,KAAK2wB,IAAI6X,KAC3BxoC,KAAKioC,sBAAsBjoC,KAAK2wB,IAAI6X,KACpCxoC,KAAKqoC,aAAaroC,KAAK2wB,IAAI6X,IAG3B,IAAIpgC,IAAapI,KAAKyT,KAAKrL,UAAa,IAAMpI,KAAKyT,KAAKrL,UAAa,KAChEpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI6X,IAAIpgC,UAAYpI,KAAKuoC,cAAgBngC,EAGzCpI,KAAK6kB,SAA6D,WAAlD/c,OAAO2gC,iBAAiB9X,EAAIxd,SAAS0R,SAKrD7kB,KAAK2wB,IAAIxd,QAAQzF,MAAMw7B,SAAW,OAClClpC,KAAKqG,MAAM8M,QAAQG,MAAQtT,KAAK2wB,IAAIxd,QAAQ6d,YAC5ChxB,KAAKuT,OAASvT,KAAK2wB,IAAI6X,IAAItX,aAC3BlxB,KAAK2wB,IAAIxd,QAAQzF,MAAMw7B,SAAW,GAElClpC,KAAKymC,OAAQ,EAGfzmC,KAAKqnC,qBAAqB1W,EAAI6X,KAC9BxoC,KAAKmpC,mBACLnpC,KAAKopC,qBAOP9mC,EAAU4R,UAAU+yB,KAAO,WACpBjnC,KAAKwmC,WACRxmC,KAAKyiB,UAQTngB,EAAU4R,UAAU8yB,KAAO,WACzB,GAAIhnC,KAAKwmC,UAAW,CAClB,GAAIgC,GAAMxoC,KAAK2wB,IAAI6X,GAEfA,GAAIr+B,YACNq+B,EAAIr+B,WAAWyH,YAAY42B,GAG7BxoC,KAAKwmC,WAAY,IAarBlkC,EAAU4R,UAAUizB,YAAc,SAASkC,GACzC,GAGIC,GACAvY,EAJAwY,EAAcvpC,KAAKqK,OAAOiJ,MAC1BjD,EAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,OAC3CC,EAAMtQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKnD,MAK3BzJ,SAAdwiC,GAA2BA,KAAc,MAC9BE,EAATl5B,IACFA,GAASk5B,GAEPj5B,EAAM,EAAIi5B,IACZj5B,EAAM,EAAIi5B,GAGd,IAAIC,GAAWhlC,KAAKJ,IAAIkM,EAAMD,EAAO,EAoBrC,QAlBIrQ,KAAK6kB,UACP7kB,KAAK6H,KAAOwI,EACZrQ,KAAKsT,MAAQk2B,EAAWxpC,KAAKqG,MAAM8M,QAAQG,MAC3Cyd,EAAe/wB,KAAKqG,MAAM8M,QAAQG,QAOlCtT,KAAK6H,KAAOwI,EACZrQ,KAAKsT,MAAQk2B,EACbzY,EAAevsB,KAAKL,IAAImM,EAAMD,EAAQ,EAAIrQ,KAAKkP,QAAQ8V,QAAShlB,KAAKqG,MAAM8M,QAAQG,QAGrFtT,KAAK2wB,IAAI6X,IAAI96B,MAAM7F,KAAO7H,KAAK6H,KAAO,KACtC7H,KAAK2wB,IAAI6X,IAAI96B,MAAM4F,MAAQk2B,EAAW,KAE9BxpC,KAAKkP,QAAQ65B,OACnB,IAAK,OACH/oC,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAO,GAC9B,MAEF,KAAK,QACH7H,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAOrD,KAAKJ,IAAKolC,EAAWzY,EAAe,EAAI/wB,KAAKkP,QAAQ8V,QAAU,GAAK,IAClG,MAEF,KAAK,SACHhlB,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAOrD,KAAKJ,KAAKolC,EAAWzY,EAAe,EAAI/wB,KAAKkP,QAAQ8V,SAAW,EAAG,GAAK,IACtG,MAEF,SAIMskB,EAFAtpC,KAAK6kB,SACHvU,EAAM,EACM9L,KAAKJ,KAAKiM,EAAO,IAGhB0gB,EAIL,EAAR1gB,EACY7L,KAAKL,KAAKkM,EACnBC,EAAMD,EAAQ0gB,EAAe,EAAI/wB,KAAKkP,QAAQ8V,SAIrC,EAGlBhlB,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAOyhC,EAAc,OAQlDhnC,EAAU4R,UAAUkzB,YAAc,WAChC,GAAIjS,GAAcn1B,KAAKkP,QAAQimB,YAC3BqT,EAAMxoC,KAAK2wB,IAAI6X,GAGjBA,GAAI96B,MAAMzF,IADO,OAAfktB,EACcn1B,KAAKiI,IAAM,KAGVjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,OAAU,MAQpEjR,EAAU4R,UAAUi1B,iBAAmB,WACrC,GAAInpC,KAAKumC,UAAYvmC,KAAKkP,QAAQq4B,SAASkC,aAAezpC,KAAK2wB,IAAI+Y,SAAU,CAE3E,GAAIA,GAAW13B,SAASM,cAAc,MACtCo3B,GAASthC,UAAY,YACrBshC,EAASC,aAAe3pC,KAGxB0mC,EAAOgD,GACL9/B,gBAAgB,IACf0K,GAAG,OAAQ,cAIdtU,KAAK2wB,IAAI6X,IAAIt2B,YAAYw3B,GACzB1pC,KAAK2wB,IAAI+Y,SAAWA,OAEZ1pC,KAAKumC,UAAYvmC,KAAK2wB,IAAI+Y,WAE9B1pC,KAAK2wB,IAAI+Y,SAASv/B,YACpBnK,KAAK2wB,IAAI+Y,SAASv/B,WAAWyH,YAAY5R,KAAK2wB,IAAI+Y,UAEpD1pC,KAAK2wB,IAAI+Y,SAAW,OAQxBpnC,EAAU4R,UAAUk1B,kBAAoB,WACtC,GAAIppC,KAAKumC,UAAYvmC,KAAKkP,QAAQq4B,SAASkC,aAAezpC,KAAK2wB,IAAIiZ,UAAW,CAE5E,GAAIA,GAAY53B,SAASM,cAAc,MACvCs3B,GAAUxhC,UAAY,aACtBwhC,EAAUC,cAAgB7pC,KAG1B0mC,EAAOkD,GACLhgC,gBAAgB,IACf0K,GAAG,OAAQ,cAIdtU,KAAK2wB,IAAI6X,IAAIt2B,YAAY03B,GACzB5pC,KAAK2wB,IAAIiZ,UAAYA,OAEb5pC,KAAKumC,UAAYvmC,KAAK2wB,IAAIiZ,YAE9B5pC,KAAK2wB,IAAIiZ,UAAUz/B,YACrBnK,KAAK2wB,IAAIiZ,UAAUz/B,WAAWyH,YAAY5R,KAAK2wB,IAAIiZ,WAErD5pC,KAAK2wB,IAAIiZ,UAAY,OAIzB/pC,EAAOD,QAAU0C,GAKb,SAASzC,GAOb,QAAS0C,KACPvC,KAAKkP,QAAU,KACflP,KAAKqG,MAAQ,KAQf9D,EAAU2R,UAAUD,WAAa,SAAS/E,GACpCA,GACFvO,KAAKgF,OAAO3F,KAAKkP,QAASA,IAQ9B3M,EAAU2R,UAAUuO,OAAS,WAE3B,OAAO,GAMTlgB,EAAU2R,UAAUG,QAAU,aAU9B9R,EAAU2R,UAAU41B,WAAa,WAC/B,GAAIC,GAAW/pC,KAAKqG,MAAM2jC,iBAAmBhqC,KAAKqG,MAAMiN,OACpDtT,KAAKqG,MAAM4jC,kBAAoBjqC,KAAKqG,MAAMkN,MAK9C,OAHAvT,MAAKqG,MAAM2jC,eAAiBhqC,KAAKqG,MAAMiN,MACvCtT,KAAKqG,MAAM4jC,gBAAkBjqC,KAAKqG,MAAMkN,OAEjCw2B,GAGTlqC,EAAOD,QAAU2C,GAKb,SAAS1C,EAAQD,EAASM,GAe9B,QAASsC,GAAa+yB,EAAMrmB,GAC1BlP,KAAKu1B,KAAOA,EAGZv1B,KAAKi1B,gBACHiV,iBAAiB,EAEjBC,QAASA,EACT/D,OAAQ,MAEVpmC,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAK0qB,OAAS,EAEd1qB,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GA5BlB,GAAIvO,GAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC2D,EAAS3D,EAAoB,IAC7BiqC,EAAUjqC,EAAoB,GA4BlCsC,GAAY0R,UAAY,GAAI3R,GAM5BC,EAAY0R,UAAUohB,QAAU,WAC9B,GAAI7C,GAAMzgB,SAASM,cAAc,MACjCmgB,GAAIrqB,UAAY,cAChBqqB,EAAI/kB,MAAMkX,SAAW,WACrB6N,EAAI/kB,MAAMzF,IAAM,MAChBwqB,EAAI/kB,MAAM6F,OAAS,OAEnBvT,KAAKyyB,IAAMA,GAMbjwB,EAAY0R,UAAUG,QAAU,WAC9BrU,KAAKkP,QAAQg7B,iBAAkB,EAC/BlqC,KAAKyiB,SAELziB,KAAKu1B,KAAO,MAQd/yB,EAAY0R,UAAUD,WAAa,SAAS/E,GACtCA,GAEFvO,EAAKyF,iBAAiB,kBAAmB,SAAU,WAAYpG,KAAKkP,QAASA,IAQjF1M,EAAY0R,UAAUuO,OAAS,WAC7B,GAAIziB,KAAKkP,QAAQg7B,gBAAiB,CAChC,GAAI7/B,GAASrK,KAAKu1B,KAAK5E,IAAIyZ,kBACvBpqC,MAAKyyB,IAAItoB,YAAcE,IAErBrK,KAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCpoB,EAAO6H,YAAYlS,KAAKyyB,KAExBzyB,KAAKqQ,QAGP,IAAI8uB,GAAM,GAAIv6B,OAAK,GAAIA,OAAOyC,UAAYrH,KAAK0qB,QAC3ClY,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAASqJ,GAE5BiH,EAASpmC,KAAKkP,QAAQi7B,QAAQnqC,KAAKkP,QAAQk3B,QAC3CqB,EAAQrB,EAAOrK,QAAU,IAAMqK,EAAOxN,KAAO,KAAO/0B,EAAOs7B,GAAKoE,OAAO,8BAC3EkE,GAAQA,EAAMrhB,OAAO,GAAGikB,cAAgB5C,EAAM6C,UAAU,GAExDtqC,KAAKyyB,IAAI/kB,MAAM7F,KAAO2K,EAAI,KAC1BxS,KAAKyyB,IAAIgV,MAAQA,MAIbznC,MAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCzyB,KAAKkmB,MAGP,QAAO,GAMT1jB,EAAY0R,UAAU7D,MAAQ,WAG5B,QAASuF,KACPV,EAAGgR,MAGH,IAAI3hB,GAAQ2Q,EAAGqgB,KAAKe,MAAM8F,WAAWlnB,EAAGqgB,KAAKC,SAASzI,OAAOzZ,OAAO/O,MAChE6uB,EAAW,EAAI7uB,EAAQ,EACZ,IAAX6uB,IAAiBA,EAAW,IAC5BA,EAAW,MAAMA,EAAW,KAEhCle,EAAGuN,SAGHvN,EAAGq1B,iBAAmBhwB,WAAW3E,EAAQwd,GAd3C,GAAIle,GAAKlV,IAiBT4V,MAMFpT,EAAY0R,UAAUgS,KAAO,WACGrf,SAA1B7G,KAAKuqC,mBACPjwB,aAAata,KAAKuqC,wBACXvqC,MAAKuqC,mBAUhB/nC,EAAY0R,UAAUs2B,eAAiB,SAAS5R,GAC9C,GAAIrqB,GAAI5N,EAAKuG,QAAQ0xB,EAAM,QAAQvxB,UAC/B83B,GAAM,GAAIv6B,OAAOyC,SACrBrH,MAAK0qB,OAASnc,EAAI4wB,EAClBn/B,KAAKyiB,UAOPjgB,EAAY0R,UAAUu2B,eAAiB,WACrC,MAAO,IAAI7lC,OAAK,GAAIA,OAAOyC,UAAYrH,KAAK0qB,SAG9C7qB,EAAOD,QAAU4C,GAKb,SAAS3C,EAAQD,EAASM,GAiB9B,QAASuC,GAAY8yB,EAAMrmB,GACzBlP,KAAKu1B,KAAOA,EAGZv1B,KAAKi1B,gBACHyV,gBAAgB,EAChBP,QAASA,EACT/D,OAAQ,KACR/lC,GAAI,GAENL,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAGlCj1B,KAAKy2B,WADHvnB,GAAWA,EAAQ0pB,KACH1pB,EAAQ0pB,KAER,GAAIh0B,MAGxB5E,KAAK2qC,eAGL3qC,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAtClB,GAAIw3B,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC2D,EAAS3D,EAAoB,IAC7BiqC,EAAUjqC,EAAoB,GAqClCuC,GAAWyR,UAAY,GAAI3R,GAO3BE,EAAWyR,UAAUD,WAAa,SAAS/E,GACrCA,IAEFvO,EAAKyF,iBAAiB,iBAAkB,SAAU,UAAW,MAAOpG,KAAKkP,QAASA,GAG9ElP,KAAKkP,QAAQ7O,IACfL,KAAKyiB,WASXhgB,EAAWyR,UAAUohB,QAAU,WAC7B,GAAI7C,GAAMzgB,SAASM,cAAc,MACjCmgB,GAAIrqB,UAAY,aAChBqqB,EAAI/kB,MAAMkX,SAAW,WACrB6N,EAAI/kB,MAAMzF,IAAM,MAChBwqB,EAAI/kB,MAAM6F,OAAS,OACnBvT,KAAKyyB,IAAMA,CAEX,IAAImY,GAAO54B,SAASM,cAAc,MAClCs4B,GAAKl9B,MAAMkX,SAAW,WACtBgmB,EAAKl9B,MAAMzF,IAAM,MACjB2iC,EAAKl9B,MAAM7F,KAAO,QAClB+iC,EAAKl9B,MAAM6F,OAAS,OACpBq3B,EAAKl9B,MAAM4F,MAAQ,OACnBmf,EAAIvgB,YAAY04B,GAGhB5qC,KAAK8D,OAAS4iC,EAAOjU,GACnBoY,iBAAiB,IAEnB7qC,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACnDA,KAAK8D,OAAOwQ,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OAC9CA,KAAK8D,OAAOwQ,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,QAMnDyC,EAAWyR,UAAUG,QAAU,WAC7BrU,KAAKkP,QAAQw7B,gBAAiB,EAC9B1qC,KAAKyiB,SAELziB,KAAK8D,OAAOqhC,QAAO,GACnBnlC,KAAK8D,OAAS,KAEd9D,KAAKu1B,KAAO,MAOd9yB,EAAWyR,UAAUuO,OAAS,WAC5B,GAAIziB,KAAKkP,QAAQw7B,eAAgB,CAC/B,GAAIrgC,GAASrK,KAAKu1B,KAAK5E,IAAIyZ,kBACvBpqC,MAAKyyB,IAAItoB,YAAcE,IAErBrK,KAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCpoB,EAAO6H,YAAYlS,KAAKyyB,KAG1B,IAAIjgB,GAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAAS91B,KAAKy2B,YAEjC2P,EAASpmC,KAAKkP,QAAQi7B,QAAQnqC,KAAKkP,QAAQk3B,QAC3CqB,EAAQrB,EAAOxN,KAAO,KAAO/0B,EAAO7D,KAAKy2B,YAAY8M,OAAO,8BAChEkE,GAAQA,EAAMrhB,OAAO,GAAGikB,cAAgB5C,EAAM6C,UAAU,GAExDtqC,KAAKyyB,IAAI/kB,MAAM7F,KAAO2K,EAAI,KAC1BxS,KAAKyyB,IAAIgV,MAAQA,MAIbznC,MAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,IAIzC,QAAO,GAOThwB,EAAWyR,UAAU42B,cAAgB,SAASlS,GAC5C54B,KAAKy2B,WAAa91B,EAAKuG,QAAQ0xB,EAAM,QACrC54B,KAAKyiB,UAOPhgB,EAAWyR,UAAU62B,cAAgB,WACnC,MAAO,IAAInmC,MAAK5E,KAAKy2B,WAAWpvB,YAQlC5E,EAAWyR,UAAU8rB,aAAe,SAASn2B,GAC3C7J,KAAK2qC,YAAY3J,UAAW,EAC5BhhC,KAAK2qC,YAAYlU,WAAaz2B,KAAKy2B,WAEnC5sB,EAAM69B,kBACN79B,EAAMD,kBAQRnH,EAAWyR,UAAU+rB,QAAU,SAAUp2B,GACvC,GAAK7J,KAAK2qC,YAAY3J,SAAtB,CAEA,GAAIS,GAAS53B,EAAM2uB,QAAQiJ,OACvBjvB,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAAS91B,KAAK2qC,YAAYlU,YAAcgL,EAC3D7I,EAAO54B,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,EAEjCxS,MAAK8qC,cAAclS,GAGnB54B,KAAKu1B,KAAKE,QAAQhH,KAAK,cACrBpuB,GAAIL,KAAKkP,QAAQ7O,GACjBu4B,KAAM,GAAIh0B,MAAK5E,KAAKy2B,WAAWpvB,aAGjCwC,EAAM69B,kBACN79B,EAAMD,mBAQRnH,EAAWyR,UAAUgsB,WAAa,SAAUr2B,GACrC7J,KAAK2qC,YAAY3J,WAGtBhhC,KAAKu1B,KAAKE,QAAQhH,KAAK,eACrBpuB,GAAIL,KAAKkP,QAAQ7O,GACjBu4B,KAAM,GAAIh0B,MAAK5E,KAAKy2B,WAAWpvB,aAGjCwC,EAAM69B,kBACN79B,EAAMD,mBAGR/J,EAAOD,QAAU6C,GAKb,SAAS5C,EAAQD,EAASM,GAe9B,QAASwC,GAAU6yB,EAAMrmB,EAAS87B,EAAKC,GACrCjrC,KAAKK,GAAKM,EAAK2E,aACftF,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACHE,YAAa,OACb+V,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACPC,iBAAkB,EAClBC,iBAAkB,EAClBC,aAAc,GACdC,aAAc,EACdC,UAAW,GACXn4B,MAAO,OACPmW,SAAS,EACT8T,YAAY,EACZD,aACEz1B,MAAO1D,IAAI0C,OAAWzC,IAAIyC,QAC1BwhB,OAAQlkB,IAAI0C,OAAWzC,IAAIyC,SAE7B4gC,OACE5/B,MAAOyiB,KAAKzjB,QACZwhB,OAAQiC,KAAKzjB,SAEf08B,QACE17B,MAAOk3B,SAAUl4B,QACjBwhB,OAAQ0W,SAAUl4B,UAItB7G,KAAKirC,iBAAmBA,EACxBjrC,KAAK0rC,aAAeV,EACpBhrC,KAAKqG,SACLrG,KAAK2rC,aACHC,SACAC,UACApE,UAGFznC,KAAK2wB,OAEL3wB,KAAKs2B,OAASjmB,MAAM,EAAGC,IAAI,GAE3BtQ,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAK8rC,iBAAmB,EAExB9rC,KAAKiU,WAAW/E,GAChBlP,KAAKsT,MAAQrP,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAC3DjL,KAAK+rC,SAAW/rC,KAAKsT,MACrBtT,KAAKuT,OAASvT,KAAK0rC,aAAaxa,aAChClxB,KAAK05B,QAAS,EAEd15B,KAAKgsC,WAAa,GAClBhsC,KAAKisC,iBAAmB,GACxBjsC,KAAKksC,aAAe,GAEpBlsC,KAAKmsC,WAAa,EAClBnsC,KAAKosC,QAAS,EACdpsC,KAAKqsC,eACLrsC,KAAKssC,cAAe,EAGpBtsC,KAAK+0B,UACL/0B,KAAKusC,eAAiB,EAGtBvsC,KAAKs1B,SAEL,IAAIpgB,GAAKlV,IACTA,MAAKu1B,KAAKE,QAAQnhB,GAAG,eAAgB,WACnCY,EAAGyb,IAAI6b,cAAc9+B,MAAMzF,IAAMiN,EAAGqgB,KAAKC,SAASiX,UAAY,OApFlE,GAAI9rC,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BqC,EAAYrC,EAAoB,IAChC0B,EAAW1B,EAAoB,GAqFnCwC,GAASwR,UAAY,GAAI3R,GAGzBG,EAASwR,UAAUw4B,SAAW,SAAS15B,EAAO25B,GACvC3sC,KAAK+0B,OAAO5uB,eAAe6M,KAC9BhT,KAAK+0B,OAAO/hB,GAAS25B,GAEvB3sC,KAAKusC,gBAAkB,GAGzB7pC,EAASwR,UAAU04B,YAAc,SAAS55B,EAAO25B,GAC/C3sC,KAAK+0B,OAAO/hB,GAAS25B,GAGvBjqC,EAASwR,UAAU24B,YAAc,SAAS75B,GACpChT,KAAK+0B,OAAO5uB,eAAe6M,WACtBhT,MAAK+0B,OAAO/hB,GACnBhT,KAAKusC,gBAAkB,IAK3B7pC,EAASwR,UAAUD,WAAa,SAAU/E,GACxC,GAAIA,EAAS,CACX,GAAIuT,IAAS,CACTziB,MAAKkP,QAAQimB,aAAejmB,EAAQimB,aAAuCtuB,SAAxBqI,EAAQimB,cAC7D1S,GAAS,EAEX,IAAI9T,IACF,cACA,kBACA,kBACA,QACA,mBACA,mBACA,eACA,eACA,YACA,QACA,UACA,cACA,QACA,SACA,aAEFhO,GAAKyF,gBAAgBuI,EAAQ3O,KAAKkP,QAASA,GAE3ClP,KAAK+rC,SAAW9nC,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAEhD,GAAVwX,GAAkBziB,KAAK2wB,IAAIrQ,QAC7BtgB,KAAKgnC,OACLhnC,KAAKinC,UASXvkC,EAASwR,UAAUohB,QAAU,WAC3Bt1B,KAAK2wB,IAAIrQ,MAAQtO,SAASM,cAAc,OACxCtS,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAKkP,QAAQoE,MAC1CtT,KAAK2wB,IAAIrQ,MAAM5S,MAAM6F,OAASvT,KAAKuT,OAEnCvT,KAAK2wB,IAAI6b,cAAgBx6B,SAASM,cAAc,OAChDtS,KAAK2wB,IAAI6b,cAAc9+B,MAAM4F,MAAQ,OACrCtT,KAAK2wB,IAAI6b,cAAc9+B,MAAM6F,OAASvT,KAAKuT,OAC3CvT,KAAK2wB,IAAI6b,cAAc9+B,MAAMkX,SAAW,WAGxC5kB,KAAKgrC,IAAMh5B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAKgrC,IAAIt9B,MAAMkX,SAAW,WAC1B5kB,KAAKgrC,IAAIt9B,MAAMzF,IAAM,MACrBjI,KAAKgrC,IAAIt9B,MAAM6F,OAAS,OACxBvT,KAAKgrC,IAAIt9B,MAAM4F,MAAQ,OACvBtT,KAAKgrC,IAAIt9B,MAAMo/B,QAAU,QACzB9sC,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAKgrC;EAGlCtoC,EAASwR,UAAU64B,kBAAoB,WACrCnsC,EAAQ0Q,gBAAgBtR,KAAKqsC,YAE7B,IAAI75B,GACAi5B,EAAYzrC,KAAKkP,QAAQu8B,UACzBuB,EAAa,GACbC,EAAa,EACbx6B,EAAIw6B,EAAa,GAAMD,CAGzBx6B,GAD8B,QAA5BxS,KAAKkP,QAAQimB,YACX8X,EAGAjtC,KAAKsT,MAAQm4B,EAAYwB,CAG/B,KAAK,GAAIhU,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAKirC,iBAAiB5R,WAAWJ,IAAuE,GAA7Cj5B,KAAKirC,iBAAiB5R,WAAWJ,KACvIj5B,KAAK+0B,OAAOkE,GAASiU,SAAS16B,EAAGC,EAAGzS,KAAKqsC,YAAarsC,KAAKgrC,IAAKS,EAAWuB,GAC3Ev6B,GAAKu6B,EAAaC,GAKxBrsC,GAAQ+Q,gBAAgB3R,KAAKqsC,aAC7BrsC,KAAKssC,cAAe,GAGtB5pC,EAASwR,UAAUi5B,cAAgB,WACR,GAArBntC,KAAKssC,eACP1rC,EAAQ0Q,gBAAgBtR,KAAKqsC,aAC7BzrC,EAAQ+Q,gBAAgB3R,KAAKqsC,aAC7BrsC,KAAKssC,cAAe,IAOxB5pC,EAASwR,UAAU+yB,KAAO,WACxBjnC,KAAK05B,QAAS,EACT15B,KAAK2wB,IAAIrQ,MAAMnW,aACc,QAA5BnK,KAAKkP,QAAQimB,YACfn1B,KAAKu1B,KAAK5E,IAAI9oB,KAAKqK,YAAYlS,KAAK2wB,IAAIrQ,OAGxCtgB,KAAKu1B,KAAK5E,IAAItI,MAAMnW,YAAYlS,KAAK2wB,IAAIrQ,QAIxCtgB,KAAK2wB,IAAI6b,cAAcriC,YAC1BnK,KAAKu1B,KAAK5E,IAAIyc,qBAAqBl7B,YAAYlS,KAAK2wB,IAAI6b,gBAO5D9pC,EAASwR,UAAU8yB,KAAO,WACxBhnC,KAAK05B,QAAS,EACV15B,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,OAG7CtgB,KAAK2wB,IAAI6b,cAAcriC,YACzBnK,KAAK2wB,IAAI6b,cAAcriC,WAAWyH,YAAY5R,KAAK2wB,IAAI6b,gBAU3D9pC,EAASwR,UAAUigB,SAAW,SAAU9jB,EAAOC,GAC1B,GAAftQ,KAAKosC,QAA8C,GAA3BpsC,KAAKkP,QAAQquB,YAA2C,IAArBv9B,KAAKksC,cAC9D77B,EAAQ,IACVA,EAAQ,GAGZrQ,KAAKs2B,MAAMjmB,MAAQA,EACnBrQ,KAAKs2B,MAAMhmB,IAAMA,GAOnB5N,EAASwR,UAAUuO,OAAS,WAC1B,GAAIsnB,IAAU,EACVsD,EAAe,CAGnBrtC,MAAK2wB,IAAI6b,cAAc9+B,MAAMzF,IAAMjI,KAAKu1B,KAAKC,SAASiX,UAAY,IAElE,KAAK,GAAIxT,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAKirC,iBAAiB5R,WAAWJ,IAAuE,GAA7Cj5B,KAAKirC,iBAAiB5R,WAAWJ,IACvIoU,IAIN,IAA2B,GAAvBrtC,KAAKusC,gBAAuC,GAAhBc,EAC9BrtC,KAAKgnC,WAEF,CACHhnC,KAAKinC,OACLjnC,KAAKuT,OAAStP,OAAOjE,KAAK0rC,aAAah+B,MAAM6F,OAAOtI,QAAQ,KAAK,KAGjEjL,KAAK2wB,IAAI6b,cAAc9+B,MAAM6F,OAASvT,KAAKuT,OAAS,KACpDvT,KAAKsT,MAAgC,GAAxBtT,KAAKkP,QAAQua,QAAkBxlB,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAAO,CAEjG,IAAI5E,GAAQrG,KAAKqG,MACbia,EAAQtgB,KAAK2wB,IAAIrQ,KAGrBA,GAAMlY,UAAY,WAGlBpI,KAAKstC,oBAEL,IAAInY,GAAcn1B,KAAKkP,QAAQimB,YAC3B+V,EAAkBlrC,KAAKkP,QAAQg8B,gBAC/BC,EAAkBnrC,KAAKkP,QAAQi8B,eAGnC9kC,GAAMknC,iBAAmBrC,EAAkB7kC,EAAMmnC,gBAAkB,EACnEnnC,EAAMonC,iBAAmBtC,EAAkB9kC,EAAMqnC,gBAAkB,EAEnErnC,EAAMsnC,eAAiB3tC,KAAKu1B,KAAK5E,IAAIyc,qBAAqBpc,YAAchxB,KAAKmsC,WAAansC,KAAKsT,MAAQ,EAAItT,KAAKkP,QAAQo8B,iBACxHjlC,EAAMunC,gBAAkB,EACxBvnC,EAAMwnC,eAAiB7tC,KAAKu1B,KAAK5E,IAAIyc,qBAAqBpc,YAAchxB,KAAKmsC,WAAansC,KAAKsT,MAAQ,EAAItT,KAAKkP,QAAQm8B,iBACxHhlC,EAAMynC,gBAAkB,EAGL,QAAf3Y,GACF7U,EAAM5S,MAAMzF,IAAM,IAClBqY,EAAM5S,MAAM7F,KAAO,IACnByY,EAAM5S,MAAM4W,OAAS,GACrBhE,EAAM5S,MAAM4F,MAAQtT,KAAKsT,MAAQ,KACjCgN,EAAM5S,MAAM6F,OAASvT,KAAKuT,OAAS,KACnCvT,KAAKqG,MAAMiN,MAAQtT,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAC3CtT,KAAKqG,MAAMkN,OAASvT,KAAKu1B,KAAKC,SAAS3tB,KAAK0L,SAG5C+M,EAAM5S,MAAMzF,IAAM,GAClBqY,EAAM5S,MAAM4W,OAAS,IACrBhE,EAAM5S,MAAM7F,KAAO,IACnByY,EAAM5S,MAAM4F,MAAQtT,KAAKsT,MAAQ,KACjCgN,EAAM5S,MAAM6F,OAASvT,KAAKuT,OAAS,KACnCvT,KAAKqG,MAAMiN,MAAQtT,KAAKu1B,KAAKC,SAASnN,MAAM/U,MAC5CtT,KAAKqG,MAAMkN,OAASvT,KAAKu1B,KAAKC,SAASnN,MAAM9U,QAG/Cw2B,EAAU/pC,KAAK+tC,gBACfhE,EAAU/pC,KAAK8pC,cAAgBC,EAEL,GAAtB/pC,KAAKkP,QAAQk8B,MACfprC,KAAK+sC,oBAGL/sC,KAAKmtC,gBAGPntC,KAAKguC,aAAa7Y,GAEpB,MAAO4U,IAOTrnC,EAASwR,UAAU65B,cAAgB,WACjC,GAAIhE,IAAU,CACdnpC,GAAQ0Q,gBAAgBtR,KAAK2rC,YAAYC,OACzChrC,EAAQ0Q,gBAAgBtR,KAAK2rC,YAAYE,OAEzC,IAAI1W,GAAcn1B,KAAKkP,QAAqB,YAGxCkuB,EAAcp9B,KAAKosC,OAASpsC,KAAKqG,MAAMqnC,iBAAmB,GAAK1tC,KAAKisC,iBAEpE9iB,EAAO,GAAIvnB,GACb5B,KAAKs2B,MAAMjmB,MACXrQ,KAAKs2B,MAAMhmB,IACX8sB,EACAp9B,KAAK2wB,IAAIrQ,MAAM4Q,aACflxB,KAAKkP,QAAQouB,YAAYt9B,KAAKkP,QAAQimB,aACvB,GAAfn1B,KAAKosC,QAAmBpsC,KAAKkP,QAAQquB,WAGvCv9B,MAAKmpB,KAAOA,CAGZ,IAAI6iB,IAAchsC,KAAK2wB,IAAIrQ,MAAM4Q,aAAgB/H,EAAKyU,WAAa59B,KAAK2wB,IAAIrQ,MAAM4Q,aAAe/H,EAAKwV,gBAAoBxV,EAAKwV,YAAcxV,EAAKyU,WAAazU,EAAKA,KAEpKnpB,MAAKgsC,WAAaA,CAElB,IAAIiC,GAAgBjuC,KAAKuT,OAASy4B,EAC9BkC,EAAiB,CAGrB,IAAmB,GAAfluC,KAAKosC,OAAiB,CACxBJ,EAAahsC,KAAKisC,iBAClBiC,EAAiB1pC,KAAK+pB,MAAOvuB,KAAK2wB,IAAIrQ,MAAM4Q,aAAe8a,EAAciC,EACzE,KAAK,GAAIpoC,GAAI,EAAO,GAAMqoC,EAAVroC,EAA0BA,IACxCsjB,EAAK2V,UAIP,IAFAmP,EAAgBjuC,KAAKuT,OAASy4B,EAEL,IAArBhsC,KAAKksC,cAAiD,GAA3BlsC,KAAKkP,QAAQquB,WAAoB,CAC9D,GAAI4Q,GAAsBhlB,EAAKwU,UAAYxU,EAAKA,KAAQnpB,KAAKksC,YAC7D,IAAIiC,EAAqB,EACvB,IAAK,GAAItoC,GAAI,EAAOsoC,EAAJtoC,EAAwBA,IAAMsjB,EAAKE,WAEhD,IAAyB,EAArB8kB,EACP,IAAK,GAAItoC,GAAI,GAAQsoC,EAALtoC,EAAyBA,IAAMsjB,EAAK2V,gBAKxDmP,IAAiB,GAInBjuC,MAAKouC,YAAcjlB,EAAKwU,SACxB,IAMIoB,GANAsP,EAAiB,EAGjBjqC,EAAM,CAI8ByC,UAArC7G,KAAKkP,QAAQq0B,OAAOpO,KACrB4J,EAAW/+B,KAAKkP,QAAQq0B,OAAOpO,GAAa4J,UAG9C/+B,KAAKsuC,aAAe,CAEpB,KADA,GAAI77B,GAAI,EACDrO,EAAMI,KAAK+pB,MAAM0f,IAAgB,CACtC9kB,EAAKE,OACL5W,EAAIjO,KAAK+pB,MAAMnqB,EAAM4nC,GACrBqC,EAAiBjqC,EAAM4nC,CACvB,IAAI9M,GAAU/V,EAAK+V,WAEfl/B,KAAKkP,QAAyB,iBAAgB,GAAXgwB,GAAmC,GAAfl/B,KAAKosC,QAAsD,GAAnCpsC,KAAKkP,QAAyB,kBAC/GlP,KAAKuuC,aAAa97B,EAAI,EAAG0W,EAAKC,WAAW2V,GAAW5J,EAAa,cAAen1B,KAAKqG,MAAMmnC,iBAGzFtO,GAAWl/B,KAAKkP,QAAyB,iBAAoB,GAAflP,KAAKosC,QAChB,GAAnCpsC,KAAKkP,QAAyB,iBAA6B,GAAflP,KAAKosC,QAA8B,GAAXlN,GAClEzsB,GAAK,GACPzS,KAAKuuC,aAAa97B,EAAI,EAAG0W,EAAKC,WAAW2V,GAAW5J,EAAa,cAAen1B,KAAKqG,MAAMqnC,iBAE7F1tC,KAAKwuC,YAAY/7B,EAAG0iB,EAAa,wBAAyBn1B,KAAKkP,QAAQm8B,iBAAkBrrC,KAAKqG,MAAMwnC,iBAGpG7tC,KAAKwuC,YAAY/7B,EAAG0iB,EAAa,wBAAyBn1B,KAAKkP,QAAQo8B,iBAAkBtrC,KAAKqG,MAAMsnC,gBAGnF,GAAf3tC,KAAKosC,QAAkC,GAAhBjjB,EAAK4S,UAC9B/7B,KAAKksC,aAAe9nC,GAGtBA,IAIApE,KAAK8rC,iBADY,GAAf9rC,KAAKosC,OACiB35B,GAAKzS,KAAKouC,YAAcjlB,EAAK4S,SAG7B/7B,KAAK2wB,IAAIrQ,MAAM4Q,aAAe/H,EAAKwV,WAI7D,IAAI8P,GAAa,CACuB5nC,UAApC7G,KAAKkP,QAAQu4B,MAAMtS,IAAuEtuB,SAAzC7G,KAAKkP,QAAQu4B,MAAMtS,GAAa7K,OACnFmkB,EAAazuC,KAAKqG,MAAMqoC,gBAE1B,IAAIhkB,GAA+B,GAAtB1qB,KAAKkP,QAAQk8B,MAAgB5mC,KAAKJ,IAAIpE,KAAKkP,QAAQu8B,UAAWgD,GAAczuC,KAAKkP,QAAQq8B,aAAe,GAAKkD,EAAazuC,KAAKkP,QAAQq8B,aAAe,EA0BnK,OAvBIvrC,MAAKsuC,aAAgBtuC,KAAKsT,MAAQoX,GAAmC,GAAxB1qB,KAAKkP,QAAQua,SAC5DzpB,KAAKsT,MAAQtT,KAAKsuC,aAAe5jB,EACjC1qB,KAAKkP,QAAQoE,MAAQtT,KAAKsT,MAAQ,KAClC1S,EAAQ+Q,gBAAgB3R,KAAK2rC,YAAYC,OACzChrC,EAAQ+Q,gBAAgB3R,KAAK2rC,YAAYE,QACzC7rC,KAAKyiB,SACLsnB,GAAU,GAGH/pC,KAAKsuC,aAAgBtuC,KAAKsT,MAAQoX,GAAmC,GAAxB1qB,KAAKkP,QAAQua,SAAmBzpB,KAAKsT,MAAQtT,KAAK+rC,UACtG/rC,KAAKsT,MAAQ9O,KAAKJ,IAAIpE,KAAK+rC,SAAS/rC,KAAKsuC,aAAe5jB,GACxD1qB,KAAKkP,QAAQoE,MAAQtT,KAAKsT,MAAQ,KAClC1S,EAAQ+Q,gBAAgB3R,KAAK2rC,YAAYC,OACzChrC,EAAQ+Q,gBAAgB3R,KAAK2rC,YAAYE,QACzC7rC,KAAKyiB,SACLsnB,GAAU,IAGVnpC,EAAQ+Q,gBAAgB3R,KAAK2rC,YAAYC,OACzChrC,EAAQ+Q,gBAAgB3R,KAAK2rC,YAAYE,QACzC9B,GAAU,GAGLA,GAGTrnC,EAASwR,UAAUy6B,aAAe,SAAUrqC,GAC1C,GAAIsqC,GAAgB5uC,KAAKouC,YAAc9pC,EACnCuqC,EAAiBD,EAAgB5uC,KAAK8rC,gBAC1C,OAAO+C,IAGTnsC,EAASwR,UAAUylB,cAAgB,SAAUnnB,GAC3C,MAAOxS,MAAKouC,YAAe57B,EAAIxS,KAAK8rC,kBAYtCppC,EAASwR,UAAUq6B,aAAe,SAAU97B,EAAG6X,EAAM6K,EAAa/sB,EAAW0mC,GAE3E,GAAI97B,GAAQpS,EAAQuR,cAAc,MAAMnS,KAAK2rC,YAAYE,OAAQ7rC,KAAK2wB,IAAIrQ,MAC1EtN,GAAM5K,UAAYA,EAClB4K,EAAMiS,UAAYqF,EACC,QAAf6K,GACFniB,EAAMtF,MAAM7F,KAAO,IAAM7H,KAAKkP,QAAQq8B,aAAe,KACrDv4B,EAAMtF,MAAM4b,UAAY,UAGxBtW,EAAMtF,MAAM2a,MAAQ,IAAMroB,KAAKkP,QAAQq8B,aAAe,KACtDv4B,EAAMtF,MAAM4b,UAAY,QAG1BtW,EAAMtF,MAAMzF,IAAMwK,EAAI,GAAMq8B,EAAkB9uC,KAAKkP,QAAQs8B,aAAe,KAE1ElhB,GAAQ,EAER,IAAIykB,GAAevqC,KAAKJ,IAAIpE,KAAKqG,MAAM2oC,eAAehvC,KAAKqG,MAAM4oC,eAC7DjvC,MAAKsuC,aAAehkB,EAAKtkB,OAAS+oC,IACpC/uC,KAAKsuC,aAAehkB,EAAKtkB,OAAS+oC,IAYtCrsC,EAASwR,UAAUs6B,YAAc,SAAU/7B,EAAG0iB,EAAa/sB,EAAWsiB,EAAQpX,GAC5E,GAAmB,GAAftT,KAAKosC,OAAgB,CACvB,GAAI3b,GAAO7vB,EAAQuR,cAAc,MAAMnS,KAAK2rC,YAAYC,MAAO5rC,KAAK2wB,IAAI6b,cACxE/b,GAAKroB,UAAYA,EACjBqoB,EAAKxL,UAAY,GAEE,QAAfkQ,EACF1E,EAAK/iB,MAAM7F,KAAQ7H,KAAKsT,MAAQoX,EAAU,KAG1C+F,EAAK/iB,MAAM2a,MAASroB,KAAKsT,MAAQoX,EAAU,KAG7C+F,EAAK/iB,MAAM4F,MAAQA,EAAQ,KAC3Bmd,EAAK/iB,MAAMzF,IAAMwK,EAAI,OASzB/P,EAASwR,UAAU85B,aAAe,SAAU7Y,GAI1C,GAHAv0B,EAAQ0Q,gBAAgBtR,KAAK2rC,YAAYlE,OAGD5gC,SAApC7G,KAAKkP,QAAQu4B,MAAMtS,IAAuEtuB,SAAzC7G,KAAKkP,QAAQu4B,MAAMtS,GAAa7K,KAAoB,CACvG,GAAImd,GAAQ7mC,EAAQuR,cAAc,MAAOnS,KAAK2rC,YAAYlE,MAAOznC,KAAK2wB,IAAIrQ,MAC1EmnB,GAAMr/B,UAAY,eAAiB+sB,EACnCsS,EAAMxiB,UAAYjlB,KAAKkP,QAAQu4B,MAAMtS,GAAa7K,KAGJzjB,SAA1C7G,KAAKkP,QAAQu4B,MAAMtS,GAAaznB,OAClC/M,EAAKoN,WAAW05B,EAAOznC,KAAKkP,QAAQu4B,MAAMtS,GAAaznB,OAGtC,QAAfynB,EACFsS,EAAM/5B,MAAM7F,KAAO7H,KAAKqG,MAAMqoC,gBAAkB,KAGhDjH,EAAM/5B,MAAM2a,MAAQroB,KAAKqG,MAAMqoC,gBAAkB,KAGnDjH,EAAM/5B,MAAM4F,MAAQtT,KAAKuT,OAAS,KAIpC3S,EAAQ+Q,gBAAgB3R,KAAK2rC,YAAYlE,QAW3C/kC,EAASwR,UAAUo5B,mBAAqB,WAEtC,KAAM,mBAAqBttC,MAAKqG,OAAQ,CACtC,GAAI6oC,GAAYl9B,SAASm9B,eAAe,KACpCC,EAAmBp9B,SAASM,cAAc,MAC9C88B,GAAiBhnC,UAAY,sBAC7BgnC,EAAiBl9B,YAAYg9B,GAC7BlvC,KAAK2wB,IAAIrQ,MAAMpO,YAAYk9B,GAE3BpvC,KAAKqG,MAAMmnC,gBAAkB4B,EAAiBvpB,aAC9C7lB,KAAKqG,MAAM4oC,eAAiBG,EAAiB5uB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAYw9B,GAG7B,KAAM,mBAAqBpvC,MAAKqG,OAAQ,CACtC,GAAIgpC,GAAYr9B,SAASm9B,eAAe,KACpCG,EAAmBt9B,SAASM,cAAc,MAC9Cg9B,GAAiBlnC,UAAY,sBAC7BknC,EAAiBp9B,YAAYm9B,GAC7BrvC,KAAK2wB,IAAIrQ,MAAMpO,YAAYo9B,GAE3BtvC,KAAKqG,MAAMqnC,gBAAkB4B,EAAiBzpB,aAC9C7lB,KAAKqG,MAAM2oC,eAAiBM,EAAiB9uB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAY09B,GAG7B,KAAM,mBAAqBtvC,MAAKqG,OAAQ,CACtC,GAAIkpC,GAAYv9B,SAASm9B,eAAe,KACpCK,EAAmBx9B,SAASM,cAAc,MAC9Ck9B,GAAiBpnC,UAAY,sBAC7BonC,EAAiBt9B,YAAYq9B,GAC7BvvC,KAAK2wB,IAAIrQ,MAAMpO,YAAYs9B,GAE3BxvC,KAAKqG,MAAMqoC,gBAAkBc,EAAiB3pB,aAC9C7lB,KAAKqG,MAAMopC,eAAiBD,EAAiBhvB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAY49B,KAI/B3vC,EAAOD,QAAU8C,GAKb,SAAS7C,EAAQD,EAASM,GAkB9B,QAASyC,GAAY+P,EAAOumB,EAAS/pB,EAASwgC,GAC5C1vC,KAAKK,GAAK44B,CACV,IAAItqB,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAAW,aAAa,SAAS,aAC5F3O,MAAKkP,QAAUvO,EAAK+N,sBAAsBC,EAAOO,GACjDlP,KAAK2vC,kBAAwC9oC,SAApB6L,EAAMtK,UAC/BpI,KAAK0vC,yBAA2BA,EAChC1vC,KAAK4vC,aAAe,EACpB5vC,KAAK4V,OAAOlD,GACkB,GAA1B1S,KAAK2vC,oBACP3vC,KAAK0vC,yBAAyB,IAAM,GAEtC1vC,KAAK22B,aACL32B,KAAKypB,QAA4B5iB,SAAlB6L,EAAM+W,SAAwB,EAAO/W,EAAM+W,QA5B5D,GAAI9oB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9B2vC,EAAO3vC,EAAoB,IAC3B4vC,EAAM5vC,EAAoB,IAC1B6vC,EAAS7vC,EAAoB,GAgCjCyC,GAAWuR,UAAU8iB,SAAW,SAAS/0B,GAC1B,MAATA,GACFjC,KAAK22B,UAAY10B,EACQ,GAArBjC,KAAKkP,QAAQ+H,MACfjX,KAAK22B,UAAU1f,KAAK,SAAUrR,EAAEa,GAAI,MAAOb,GAAE4M,EAAI/L,EAAE+L,KAIrDxS,KAAK22B,cASTh0B,EAAWuR,UAAU87B,gBAAkB,SAASzpB,GAC9CvmB,KAAK4vC,aAAerpB,GAQtB5jB,EAAWuR,UAAUD,WAAa,SAAS/E,GACzC,GAAgBrI,SAAZqI,EAAuB,CACzB,GAAIP,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAC3DhO,GAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAASA,GAE/CvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UAEpCA,EAAQ+gC,YACuB,gBAAtB/gC,GAAQ+gC,YACb/gC,EAAQ+gC,WAAWC,kBACqB,WAAtChhC,EAAQ+gC,WAAWC,gBACrBlwC,KAAKkP,QAAQ+gC,WAAWE,MAAQ,EAEa,WAAtCjhC,EAAQ+gC,WAAWC,gBAC1BlwC,KAAKkP,QAAQ+gC,WAAWE,MAAQ,GAGhCnwC,KAAKkP,QAAQ+gC,WAAWC,gBAAkB,cAC1ClwC,KAAKkP,QAAQ+gC,WAAWE,MAAQ,KAOhB,QAAtBnwC,KAAKkP,QAAQxB,MACf1N,KAAKmH,KAAO,GAAI0oC,GAAK7vC,KAAKK,GAAIL,KAAKkP,SAEN,OAAtBlP,KAAKkP,QAAQxB,MACpB1N,KAAKmH,KAAO,GAAI2oC,GAAI9vC,KAAKK,GAAIL,KAAKkP,SAEL,UAAtBlP,KAAKkP,QAAQxB,QACpB1N,KAAKmH,KAAO,GAAI4oC,GAAO/vC,KAAKK,GAAIL,KAAKkP,WASzCvM,EAAWuR,UAAU0B,OAAS,SAASlD,GACrC1S,KAAK0S,MAAQA,EACb1S,KAAKmT,QAAUT,EAAMS,SAAW,QAChCnT,KAAKoI,UAAYsK,EAAMtK,WAAapI,KAAKoI,WAAa,aAAepI,KAAK0vC,yBAAyB,GAAK,GACxG1vC,KAAKypB,QAA4B5iB,SAAlB6L,EAAM+W,SAAwB,EAAO/W,EAAM+W,QAC1DzpB,KAAK0N,MAAQgF,EAAMhF,MACnB1N,KAAKiU,WAAWvB,EAAMxD,UAcxBvM,EAAWuR,UAAUg5B,SAAW,SAAS16B,EAAGC,EAAGlB,EAAe6+B,EAAc3E,EAAWuB,GACrF,GACIqD,GAAMC,EADNC,EAA0B,GAAbvD,EAGbwD,EAAU5vC,EAAQiR,cAAc,OAAQN,EAAe6+B,EAO3D,IANAI,EAAQ19B,eAAe,KAAM,IAAKN,GAClCg+B,EAAQ19B,eAAe,KAAM,IAAKL,EAAI89B,GACtCC,EAAQ19B,eAAe,KAAM,QAAS24B,GACtC+E,EAAQ19B,eAAe,KAAM,SAAU,EAAEy9B,GACzCC,EAAQ19B,eAAe,KAAM,QAAS,WAEZ,QAAtB9S,KAAKkP,QAAQxB,MACf2iC,EAAOzvC,EAAQiR,cAAc,OAAQN,EAAe6+B,GACpDC,EAAKv9B,eAAe,KAAM,QAAS9S,KAAKoI,WACtBvB,SAAf7G,KAAK0N,OACN2iC,EAAKv9B,eAAe,KAAM,QAAS9S,KAAK0N,OAG1C2iC,EAAKv9B,eAAe,KAAM,IAAK,IAAMN,EAAI,IAAIC,EAAE,MAAQD,EAAIi5B,GAAa,IAAIh5B,GACzC,GAA/BzS,KAAKkP,QAAQuhC,OAAOthC,UACtBmhC,EAAW1vC,EAAQiR,cAAc,OAAQN,EAAe6+B,GACjB,OAAnCpwC,KAAKkP,QAAQuhC,OAAOtb,YACtBmb,EAASx9B,eAAe,KAAM,IAAK,IAAIN,EAAE,MAAQC,EAAI89B,GACnD,IAAI/9B,EAAE,IAAIC,EAAE,MAAOD,EAAIi5B,GAAa,IAAIh5B,EAAE,MAAOD,EAAIi5B,GAAa,KAAOh5B,EAAI89B,IAG/ED,EAASx9B,eAAe,KAAM,IAAK,IAAIN,EAAE,IAAIC,EAAE,KACzCD,EAAE,KAAOC,EAAI89B,GAAc,MACzB/9B,EAAIi5B,GAAa,KAAOh5B,EAAI89B,GAClC,KAAM/9B,EAAIi5B,GAAa,IAAIh5B,GAE/B69B,EAASx9B,eAAe,KAAM,QAAS9S,KAAKoI,UAAY,cAGnB,GAAnCpI,KAAKkP,QAAQ2D,WAAW1D,SAC1BvO,EAAQ2R,UAAUC,EAAI,GAAMi5B,EAAUh5B,EAAGzS,KAAMuR,EAAe6+B,OAG7D,CACH,GAAIM,GAAWlsC,KAAK+pB,MAAM,GAAMkd,GAC5BkF,EAAansC,KAAK+pB,MAAM,GAAMye,GAC9B4D,EAAapsC,KAAK+pB,MAAM,IAAOye,GAE/BtiB,EAASlmB,KAAK+pB,OAAOkd,EAAa,EAAIiF,GAAW,EAErD9vC,GAAQyS,QAAQb,EAAI,GAAIk+B,EAAWhmB,EAAYjY,EAAI89B,EAAaI,EAAa,EAAGD,EAAUC,EAAY3wC,KAAKoI,UAAY,OAAQmJ,EAAe6+B,GAC9IxvC,EAAQyS,QAAQb,EAAI,IAAIk+B,EAAWhmB,EAAS,EAAGjY,EAAI89B,EAAaK,EAAa,EAAGF,EAAUE,EAAY5wC,KAAKoI,UAAY,OAAQmJ,EAAe6+B,KAYlJztC,EAAWuR,UAAUilB,UAAY,SAASsS,EAAWuB,GACnD,GAAIhC,GAAMh5B,SAASC,gBAAgB,6BAA6B,MAEhE,OADAjS,MAAKktC,SAAS,EAAE,GAAIF,KAAchC,EAAIS,EAAUuB,IACxC6D,KAAM7F,EAAKh4B,MAAOhT,KAAKmT,QAASgiB,YAAYn1B,KAAKkP,QAAQ4hC,mBAGnEnuC,EAAWuR,UAAU68B,UAAY,SAASC,GACxC,MAAOhxC,MAAKmH,KAAK4pC,UAAUC,IAG7BruC,EAAWuR,UAAU+8B,KAAO,SAAShZ,EAASvlB,EAAOw+B,GACnDlxC,KAAKmH,KAAK8pC,KAAKhZ,EAASvlB,EAAOw+B,IAIjCrxC,EAAOD,QAAU+C,GAKb,SAAS9C,EAAQD,EAASM,GAY9B,QAAS0C,GAAOq2B,EAASxlB,EAAMijB,GAC7B12B,KAAKi5B,QAAUA,EACfj5B,KAAKojC,aACLpjC,KAAK4oC,cAAgB,EACrB5oC,KAAKmxC,gBAAkB19B,GAAQA,EAAK29B,cACpCpxC,KAAK02B,QAAUA,EAEf12B,KAAK2wB,OACL3wB,KAAKqG,OACH2M,OACEM,MAAO,EACPC,OAAQ,IAGZvT,KAAKoI,UAAY,KAEjBpI,KAAKiC,SACLjC,KAAKqxC,gBACLrxC,KAAKqP,cACHiiC,WACAC,UAEFvxC,KAAKwxC,kBAAmB,CACxB,IAAIt8B,GAAKlV,IACTA,MAAK02B,QAAQnB,KAAKE,QAAQnhB,GAAG,mBAAoB,WAC/CY,EAAGs8B,kBAAmB,IAGxBxxC,KAAKs1B,UAELt1B,KAAK+Y,QAAQtF,GAxCf,CAAA,GAAI9S,GAAOT,EAAoB,GAC3B4B,EAAQ5B,EAAoB,GAChBA,GAAoB,IA6CpC0C,EAAMsR,UAAUohB,QAAU,WACxB,GAAItiB,GAAQhB,SAASM,cAAc,MACnCU,GAAM5K,UAAY,SAClBpI,KAAK2wB,IAAI3d,MAAQA,CAEjB,IAAIy+B,GAAQz/B,SAASM,cAAc,MACnCm/B,GAAMrpC,UAAY,QAClB4K,EAAMd,YAAYu/B,GAClBzxC,KAAK2wB,IAAI8gB,MAAQA,CAEjB,IAAI1Y,GAAa/mB,SAASM,cAAc,MACxCymB,GAAW3wB,UAAY,QACvB2wB,EAAW,kBAAoB/4B,KAC/BA,KAAK2wB,IAAIoI,WAAaA,EAEtB/4B,KAAK2wB,IAAI9jB,WAAamF,SAASM,cAAc,OAC7CtS,KAAK2wB,IAAI9jB,WAAWzE,UAAY,QAEhCpI,KAAK2wB,IAAIoS,KAAO/wB,SAASM,cAAc,OACvCtS,KAAK2wB,IAAIoS,KAAK36B,UAAY,QAK1BpI,KAAK2wB,IAAI+gB,OAAS1/B,SAASM,cAAc,OACzCtS,KAAK2wB,IAAI+gB,OAAOhkC,MAAM2rB,WAAa,SACnCr5B,KAAK2wB,IAAI+gB,OAAOzsB,UAAY,IAC5BjlB,KAAK2wB,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAI+gB,SAO3C9uC,EAAMsR,UAAU6E,QAAU,SAAStF,GAEjC,GAAIN,GAAUM,GAAQA,EAAKN,OACvBA,aAAmB20B,SACrB9nC,KAAK2wB,IAAI8gB,MAAMv/B,YAAYiB,GAG3BnT,KAAK2wB,IAAI8gB,MAAMxsB,UADIpe,SAAZsM,GAAqC,OAAZA,EACLA,EAGAnT,KAAKi5B,SAAW,GAI7Cj5B,KAAK2wB,IAAI3d,MAAMy0B,MAAQh0B,GAAQA,EAAKg0B,OAAS,GAExCznC,KAAK2wB,IAAI8gB,MAAM9sB,WAIlBhkB,EAAK8H,gBAAgBzI,KAAK2wB,IAAI8gB,MAAO,UAHrC9wC,EAAKwH,aAAanI,KAAK2wB,IAAI8gB,MAAO,SAOpC,IAAIrpC,GAAYqL,GAAQA,EAAKrL,WAAa,IACtCA,IAAapI,KAAKoI,YAChBpI,KAAKoI,YACPzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAI3d,MAAOhT,KAAKoI,WAC1CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAIoI,WAAY/4B,KAAKoI,WAC/CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAI9jB,WAAY7M,KAAKoI,WAC/CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAIoS,KAAM/iC,KAAKoI,YAE3CzH,EAAKwH,aAAanI,KAAK2wB,IAAI3d,MAAO5K,GAClCzH,EAAKwH,aAAanI,KAAK2wB,IAAIoI,WAAY3wB,GACvCzH,EAAKwH,aAAanI,KAAK2wB,IAAI9jB,WAAYzE,GACvCzH,EAAKwH,aAAanI,KAAK2wB,IAAIoS,KAAM36B,GACjCpI,KAAKoI,UAAYA,GAIfpI,KAAK0N,QACP/M,EAAKuN,cAAclO,KAAK2wB,IAAI3d,MAAOhT,KAAK0N,OACxC1N,KAAK0N,MAAQ,MAEX+F,GAAQA,EAAK/F,QACf/M,EAAKoN,WAAW/N,KAAK2wB,IAAI3d,MAAOS,EAAK/F,OACrC1N,KAAK0N,MAAQ+F,EAAK/F,QAQtB9K,EAAMsR,UAAUy9B,cAAgB,WAC9B,MAAO3xC,MAAKqG,MAAM2M,MAAMM,OAW1B1Q,EAAMsR,UAAUuO,OAAS,SAAS6T,EAAO3b,EAAQi3B,GAC/C,GAAI7H,IAAU,EAIV8H,EAAe7xC,KAAK2wB,IAAI+gB,OAAO7rB,YAanC,IAZIgsB,GAAgB7xC,KAAK8xC,mBACvB9xC,KAAK8xC,iBAAmBD,EAExBlxC,EAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GACjCA,EAAK22B,OAAQ,EACT32B,EAAK02B,WAAW12B,EAAK2S,WAG3BmvB,GAAU,GAI8B,kBAA/B5xC,MAAK02B,QAAQxnB,QAAQsH,MAAsB,CAGpD,GAAIo7B,EAAS,CAIX,GAAI18B,GAAKlV,KACLqpC,GAAY,CAChB1oC,GAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GAC5BA,EAAK02B,YACR12B,EAAK2S,SACLvN,EAAGm8B,aAAa9oC,KAAKuH,IAEvBA,EAAKq3B,YAAYkC,IAInB,IAAI0I,GAAqB/xC,KAAKqP,aAAaiiC,QAAQvlC,QAAQkL,KAAK,SAAUrR,EAAGa,GAC3E,MAAOyO,GAAGwhB,QAAQxnB,QAAQsH,MAAM5Q,EAAE6N,KAAMhN,EAAEgN,OAE5C3R,GAAMA,MAAMiwC,EAAoBp3B,GAAQ,GAG1C3a,KAAKqxC,aAAerxC,KAAKgyC,oBAAoBhyC,KAAKqP,aAAcrP,KAAKqxC,aAAc/a,OAInFt2B,MAAKqxC,aAAerxC,KAAKgyC,oBAAoBhyC,KAAKqP,aAAcrP,KAAKqxC,aAAc/a,GAE/Et2B,KAAK02B,QAAQxnB,QAAQpN,MACvBA,EAAMA,MAAM9B,KAAKqxC,aAAc12B,EAAQi3B,GAGvC9vC,EAAMqhC,QAAQnjC,KAAKqxC,aAAc12B,EAAQ3a,KAAKojC,UAKlD,IAAI7vB,GAASvT,KAAKiyC,iBAAiBt3B,GAG/Boe,EAAa/4B,KAAK2wB,IAAIoI,UAC1B/4B,MAAKiI,IAAM8wB,EAAWmZ,UACtBlyC,KAAK6H,KAAOkxB,EAAWoZ,WACvBnyC,KAAKsT,MAAQylB,EAAW/H,YACxB+Y,EAAUppC,EAAKqI,eAAehJ,KAAM,SAAUuT,IAAWw2B,EAGzDA,EAAUppC,EAAKqI,eAAehJ,KAAKqG,MAAM2M,MAAO,QAAShT,KAAK2wB,IAAI8gB,MAAMjxB,cAAgBupB,EACxFA,EAAUppC,EAAKqI,eAAehJ,KAAKqG,MAAM2M,MAAO,SAAUhT,KAAK2wB,IAAI8gB,MAAM5rB,eAAiBkkB,EAG1F/pC,KAAK2wB,IAAI9jB,WAAWa,MAAM6F,OAAUA,EAAS,KAC7CvT,KAAK2wB,IAAIoI,WAAWrrB,MAAM6F,OAAUA,EAAS,KAC7CvT,KAAK2wB,IAAI3d,MAAMtF,MAAM6F,OAASA,EAAS,IAGvC,KAAK,GAAI1N,GAAI,EAAGusC,EAAKpyC,KAAKqxC,aAAarrC,OAAYosC,EAAJvsC,EAAQA,IAAK,CAC1D,GAAIiK,GAAO9P,KAAKqxC,aAAaxrC,EAC7BiK,GAAKs3B,YAAYzsB,GAGnB,MAAOovB,IASTnnC,EAAMsR,UAAU+9B,iBAAmB,SAAUt3B,GAE3C,GAAIpH,GACA89B,EAAerxC,KAAKqxC,YAGxBrxC,MAAKqyC,gBACL,IAAIn9B,GAAKlV,IACT,IAAIqxC,EAAarrC,OAAQ,CACvB,GAAI7B,GAAMktC,EAAa,GAAGppC,IACtB7D,EAAMitC,EAAa,GAAGppC,IAAMopC,EAAa,GAAG99B,MAahD,IAZA5S,EAAKiI,QAAQyoC,EAAc,SAAUvhC,GACnC3L,EAAMK,KAAKL,IAAIA,EAAK2L,EAAK7H,KACzB7D,EAAMI,KAAKJ,IAAIA,EAAM0L,EAAK7H,IAAM6H,EAAKyD,QACV1M,SAAvBiJ,EAAK2D,KAAK6vB,WACZpuB,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU/vB,OAAS/O,KAAKJ,IAAI8Q,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU/vB,OAAOzD,EAAKyD,QAChG2B,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU7Z,SAAU,KAO3CtlB,EAAMwW,EAAOooB,KAAM,CAErB,GAAIrY,GAASvmB,EAAMwW,EAAOooB,IAC1B3+B,IAAOsmB,EACP/pB,EAAKiI,QAAQyoC,EAAc,SAAUvhC,GACnCA,EAAK7H,KAAOyiB,IAGhBnX,EAASnP,EAAMuW,EAAO7K,KAAK2W,SAAW,MAGtClT,GAAS,CAIX,OAFAA,GAAS/O,KAAKJ,IAAImP,EAAQvT,KAAKqG,MAAM2M,MAAMO,SAQ7C3Q,EAAMsR,UAAU+yB,KAAO,WAChBjnC,KAAK2wB,IAAI3d,MAAM7I,YAClBnK,KAAK02B,QAAQ/F,IAAIqI,SAAS9mB,YAAYlS,KAAK2wB,IAAI3d,OAG5ChT,KAAK2wB,IAAIoI,WAAW5uB,YACvBnK,KAAK02B,QAAQ/F,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAIoI,YAG9C/4B,KAAK2wB,IAAI9jB,WAAW1C,YACvBnK,KAAK02B,QAAQ/F,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAI9jB,YAG9C7M,KAAK2wB,IAAIoS,KAAK54B,YACjBnK,KAAK02B,QAAQ/F,IAAIoS,KAAK7wB,YAAYlS,KAAK2wB,IAAIoS,OAO/CngC,EAAMsR,UAAU8yB,KAAO,WACrB,GAAIh0B,GAAQhT,KAAK2wB,IAAI3d,KACjBA,GAAM7I,YACR6I,EAAM7I,WAAWyH,YAAYoB,EAG/B,IAAI+lB,GAAa/4B,KAAK2wB,IAAIoI,UACtBA,GAAW5uB,YACb4uB,EAAW5uB,WAAWyH,YAAYmnB,EAGpC,IAAIlsB,GAAa7M,KAAK2wB,IAAI9jB,UACtBA,GAAW1C,YACb0C,EAAW1C,WAAWyH,YAAY/E,EAGpC,IAAIk2B,GAAO/iC,KAAK2wB,IAAIoS,IAChBA,GAAK54B,YACP44B,EAAK54B,WAAWyH,YAAYmxB,IAQhCngC,EAAMsR,UAAUF,IAAM,SAASlE,GAc7B,GAbA9P,KAAKiC,MAAM6N,EAAKzP,IAAMyP,EACtBA,EAAKi3B,UAAU/mC,MAGY6G,SAAvBiJ,EAAK2D,KAAK6vB,WAC+Bz8B,SAAvC7G,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,YAC3BtjC,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,WAAa/vB,OAAO,EAAGkW,SAAS,EAAO/gB,MAAM1I,KAAK4oC,cAAe3mC,UAC1FjC,KAAK4oC,iBAEP5oC,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,UAAUrhC,MAAMsG,KAAKuH,IAEhD9P,KAAKsyC,iBAEkC,IAAnCtyC,KAAKqxC,aAAarqC,QAAQ8I,GAAa,CACzC,GAAIwmB,GAAQt2B,KAAK02B,QAAQnB,KAAKe,KAC9Bt2B,MAAKuyC,gBAAgBziC,EAAM9P,KAAKqxC,aAAc/a,KAIlD1zB,EAAMsR,UAAUo+B,eAAiB,WAC/B,GAA6BzrC,SAAzB7G,KAAKmxC,gBAA+B,CACtC,GAAIqB,KACJ,IAAmC,gBAAxBxyC,MAAKmxC,gBAA6B,CAC3C,IAAK,GAAI7N,KAAYtjC,MAAKojC,UACxBoP,EAAUjqC,MAAM+6B,SAAUA,EAAUmP,UAAWzyC,KAAKojC,UAAUE,GAAUrhC,MAAM,GAAGwR,KAAKzT,KAAKmxC,kBAE7FqB,GAAUv7B,KAAK,SAAUrR,EAAGa,GAC1B,MAAOb,GAAE6sC,UAAYhsC,EAAEgsC,gBAGtB,IAAmC,kBAAxBzyC,MAAKmxC,gBAA+B,CAClD,IAAK,GAAI7N,KAAYtjC,MAAKojC,UACxBoP,EAAUjqC,KAAKvI,KAAKojC,UAAUE,GAAUrhC,MAAM,GAAGwR,KAEnD++B,GAAUv7B,KAAKjX,KAAKmxC,iBAGtB,GAAIqB,EAAUxsC,OAAS,EACrB,IAAK,GAAIH,GAAI,EAAGA,EAAI2sC,EAAUxsC,OAAQH,IACpC7F,KAAKojC,UAAUoP,EAAU3sC,GAAGy9B,UAAU56B,MAAQ7C,IAMtDjD,EAAMsR,UAAUm+B,eAAiB,WAC/B,IAAK,GAAI/O,KAAYtjC,MAAKojC,UACpBpjC,KAAKojC,UAAUj9B,eAAem9B,KAChCtjC,KAAKojC,UAAUE,GAAU7Z,SAAU,IASzC7mB,EAAMsR,UAAUkD,OAAS,SAAStH,SACzB9P,MAAKiC,MAAM6N,EAAKzP,IACvByP,EAAKi3B,UAAU,KAGf,IAAIr+B,GAAQ1I,KAAKqxC,aAAarqC,QAAQ8I,EACzB,KAATpH,GAAa1I,KAAKqxC,aAAa1oC,OAAOD,EAAO,IAUnD9F,EAAMsR,UAAUyzB,kBAAoB,SAAS73B,GAC3C9P,KAAK02B,QAAQgc,WAAW5iC,EAAKzP,KAO/BuC,EAAMsR,UAAUsC,MAAQ,WAKtB,IAAK,GAJDzN,GAAQpI,EAAKmI,QAAQ9I,KAAKiC,OAC1B0wC,KACAC,KAEK/sC,EAAI,EAAGA,EAAIkD,EAAM/C,OAAQH,IACNgB,SAAtBkC,EAAMlD,GAAG4N,KAAKnD,KAChBsiC,EAASrqC,KAAKQ,EAAMlD,IAEtB8sC,EAAWpqC,KAAKQ,EAAMlD,GAExB7F,MAAKqP,cACHiiC,QAASqB,EACTpB,MAAOqB,GAGT9wC,EAAM2gC,aAAaziC,KAAKqP,aAAaiiC,SACrCxvC,EAAM4gC,WAAW1iC,KAAKqP,aAAakiC,QAYrC3uC,EAAMsR,UAAU89B,oBAAsB,SAAS3iC,EAAcwjC,EAAiBvc,GAC5E,GAKIxmB,GAAMjK,EALNwrC,KACAyB,KACA1f,GAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,EACvC0iC,EAAazc,EAAMjmB,MAAQ+iB,EAC3B4f,EAAa1c,EAAMhmB,IAAM8iB,EAIzB9jB,EAAiB,SAAUhL,GAC7B,MAAiByuC,GAARzuC,EAA6B,GACpB0uC,GAAT1uC,EAA8B,EACA,EAMzC,IAAIuuC,EAAgB7sC,OAAS,EAC3B,IAAKH,EAAI,EAAGA,EAAIgtC,EAAgB7sC,OAAQH,IACtC7F,KAAKizC,6BAA6BJ,EAAgBhtC,GAAIwrC,EAAcyB,EAAoBxc,EAK5F,IAAI4c,GAAoBvyC,EAAKyO,mBAAmBC,EAAaiiC,QAAShiC,EAAgB,OAAO,QAS7F,IANAtP,KAAKmzC,cAAcD,EAAmB7jC,EAAaiiC,QAASD,EAAcyB,EAAoB,SAAUhjC,GACtG,MAAQA,GAAK2D,KAAKpD,MAAQ0iC,GAAcjjC,EAAK2D,KAAKpD,MAAQ2iC,IAK/B,GAAzBhzC,KAAKwxC,iBAEP,IADAxxC,KAAKwxC,kBAAmB,EACnB3rC,EAAI,EAAGA,EAAIwJ,EAAakiC,MAAMvrC,OAAQH,IACzC7F,KAAKizC,6BAA6B5jC,EAAakiC,MAAM1rC,GAAIwrC,EAAcyB,EAAoBxc,OAG1F,CAEH,GAAI8c,GAAkBzyC,EAAKyO,mBAAmBC,EAAakiC,MAAOjiC,EAAgB,OAAO,MAGzFtP,MAAKmzC,cAAcC,EAAiB/jC,EAAakiC,MAAOF,EAAcyB,EAAoB,SAAUhjC,GAClG,MAAQA,GAAK2D,KAAKnD,IAAMyiC,GAAcjjC,EAAK2D,KAAKnD,IAAM0iC,IAM1D,IAAKntC,EAAI,EAAGA,EAAIwrC,EAAarrC,OAAQH,IACnCiK,EAAOuhC,EAAaxrC,GACfiK,EAAK02B,WAAW12B,EAAKm3B,OAE1Bn3B,EAAKq3B,aAgBP,OAAOkK,IAGTzuC,EAAMsR,UAAUi/B,cAAgB,SAAUE,EAAYpxC,EAAOovC,EAAcyB,EAAoBQ,GAC7F,GAAIxjC,GACAjK,CAEJ,IAAkB,IAAdwtC,EAAkB,CACpB,IAAKxtC,EAAIwtC,EAAYxtC,GAAK,IACxBiK,EAAO7N,EAAM4D,IACTytC,EAAexjC,IAFQjK,IAMWgB,SAAhCisC,EAAmBhjC,EAAKzP,MAC1ByyC,EAAmBhjC,EAAKzP,KAAM,EAC9BgxC,EAAa9oC,KAAKuH,GAKxB,KAAKjK,EAAIwtC,EAAa,EAAGxtC,EAAI5D,EAAM+D,SACjC8J,EAAO7N,EAAM4D,IACTytC,EAAexjC,IAFsBjK,IAMHgB,SAAhCisC,EAAmBhjC,EAAKzP,MAC1ByyC,EAAmBhjC,EAAKzP,KAAM,EAC9BgxC,EAAa9oC,KAAKuH,MAmB5BlN,EAAMsR,UAAUq+B,gBAAkB,SAASziC,EAAMuhC,EAAc/a,GACvDxmB,EAAKo3B,UAAU5Q,IACZxmB,EAAK02B,WAAW12B,EAAKm3B,OAE1Bn3B,EAAKq3B,cACLkK,EAAa9oC,KAAKuH,IAGdA,EAAK02B,WAAW12B,EAAKk3B,QAgB/BpkC,EAAMsR,UAAU++B,6BAA+B,SAASnjC,EAAMuhC,EAAcyB,EAAoBxc,GAC1FxmB,EAAKo3B,UAAU5Q,GACmBzvB,SAAhCisC,EAAmBhjC,EAAKzP,MAC1ByyC,EAAmBhjC,EAAKzP,KAAM,EAC9BgxC,EAAa9oC,KAAKuH,IAIhBA,EAAK02B,WAAW12B,EAAKk3B,QAM7BnnC,EAAOD,QAAUgD,GAKb,SAAS/C,EAAQD,EAASM,GAW9B,QAAS2C,GAAiBo2B,EAASxlB,EAAMijB,GACvC9zB,EAAMrC,KAAKP,KAAMi5B,EAASxlB,EAAMijB,GAEhC12B,KAAKsT,MAAQ,EACbtT,KAAKuT,OAAS,EACdvT,KAAKiI,IAAM,EACXjI,KAAK6H,KAAO,EAfd,GACIjF,IADO1C,EAAoB,GACnBA,EAAoB,IAiBhC2C,GAAgBqR,UAAYtN,OAAOkI,OAAOlM,EAAMsR,WAShDrR,EAAgBqR,UAAUuO,OAAS,SAAS6T,EAAO3b,GACjD,GAAIovB,IAAU,CAEd/pC,MAAKqxC,aAAerxC,KAAKgyC,oBAAoBhyC,KAAKqP,aAAcrP,KAAKqxC,aAAc/a,GAGnFt2B,KAAKsT,MAAQtT,KAAK2wB,IAAI9jB,WAAWmkB,YAGjChxB,KAAK2wB,IAAI9jB,WAAWa,MAAM6F,OAAU,GAGpC,KAAK,GAAI1N,GAAI,EAAGusC,EAAKpyC,KAAKqxC,aAAarrC,OAAYosC,EAAJvsC,EAAQA,IAAK,CAC1D,GAAIiK,GAAO9P,KAAKqxC,aAAaxrC,EAC7BiK,GAAKs3B,YAAYzsB,GAGnB,MAAOovB,IAMTlnC,EAAgBqR,UAAU+yB,KAAO,WAC1BjnC,KAAK2wB,IAAI9jB,WAAW1C,YACvBnK,KAAK02B,QAAQ/F,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAI9jB,aAIrDhN,EAAOD,QAAUiD,GAKb,SAAShD,EAAQD,EAASM,GA4B9B,QAAS4C,GAAQyyB,EAAMrmB,GACrBlP,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACH9tB,KAAM,KACNguB,YAAa,SACb4T,MAAO,OACPjnC,OAAO,EACPyxC,WAAY,KAEZC,YAAY,EACZjM,UACEkC,YAAY,EACZmD,aAAa,EACb54B,KAAK,EACLoD,QAAQ,GAGVuhB,KAAO52B,EAAS42B,KAEhB8a,MAAO,SAAU3jC,EAAMjH,GACrBA,EAASiH,IAEX4jC,SAAU,SAAU5jC,EAAMjH,GACxBA,EAASiH,IAEX6jC,OAAQ,SAAU7jC,EAAMjH,GACtBA,EAASiH,IAEX8jC,SAAU,SAAU9jC,EAAMjH,GACxBA,EAASiH,IAEX+jC,SAAU,SAAU/jC,EAAMjH,GACxBA,EAASiH,IAGX6K,QACE7K,MACE0W,WAAY,GACZC,SAAU,IAEZsc,KAAM,IAER/d,QAAS,GAIXhlB,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAGpCj1B,KAAK8zC,aACH3sC,MAAOkJ,MAAO,OAAQC,IAAK,SAG7BtQ,KAAKo8B,YACHtG,SAAUP,EAAK50B,KAAKm1B,SACpBI,OAAQX,EAAK50B,KAAKu1B,QAEpBl2B,KAAK2wB,OACL3wB,KAAKqG,SACLrG,KAAK8D,OAAS,IAEd,IAAIoR,GAAKlV,IACTA,MAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAGlB52B,KAAK+zC,eACH//B,IAAO,SAAUnK,EAAOgL,GACtBK,EAAG8+B,OAAOn/B,EAAO5S,QAEnB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAG++B,UAAUp/B,EAAO5S,QAEtBmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAGg/B,UAAUr/B,EAAO5S,SAKxBjC,KAAKm0C,gBACHngC,IAAO,SAAUnK,EAAOgL,GACtBK,EAAGk/B,aAAav/B,EAAO5S,QAEzB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAGm/B,gBAAgBx/B,EAAO5S,QAE5BmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAGo/B,gBAAgBz/B,EAAO5S,SAI9BjC,KAAKiC,SACLjC,KAAK+0B,UACL/0B,KAAKu0C,YAELv0C,KAAKw0C,aACLx0C,KAAKy0C,YAAa,EAElBz0C,KAAK00C,eAGL10C,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAlIlB,GAAIw3B,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B6B,EAAW7B,EAAoB,IAC/BqC,EAAYrC,EAAoB,IAChC0C,EAAQ1C,EAAoB,IAC5B2C,EAAkB3C,EAAoB,IACtCkC,EAAUlC,EAAoB,IAC9BmC,EAAYnC,EAAoB,IAChCoC,EAAYpC,EAAoB,IAChCiC,EAAiBjC,EAAoB,IAGrCy0C,EAAY,gBACZC,EAAa,gBAsHjB9xC,GAAQoR,UAAY,GAAI3R,GAGxBO,EAAQmV,OACNpL,WAAY1K,EACZqmC,IAAKpmC,EACLk0B,MAAOh0B,EACPsQ,MAAOvQ,GAMTS,EAAQoR,UAAUohB,QAAU,WAC1B,GAAIhV,GAAQtO,SAASM,cAAc,MACnCgO,GAAMlY,UAAY,UAClBkY,EAAM,oBAAsBtgB,KAC5BA,KAAK2wB,IAAIrQ,MAAQA,CAGjB,IAAIzT,GAAamF,SAASM,cAAc,MACxCzF,GAAWzE,UAAY,aACvBkY,EAAMpO,YAAYrF,GAClB7M,KAAK2wB,IAAI9jB,WAAaA,CAGtB,IAAIksB,GAAa/mB,SAASM,cAAc,MACxCymB,GAAW3wB,UAAY,aACvBkY,EAAMpO,YAAY6mB,GAClB/4B,KAAK2wB,IAAIoI,WAAaA,CAGtB,IAAIgK,GAAO/wB,SAASM,cAAc,MAClCywB,GAAK36B,UAAY,OACjBpI,KAAK2wB,IAAIoS,KAAOA,CAGhB,IAAI/J,GAAWhnB,SAASM,cAAc,MACtC0mB,GAAS5wB,UAAY,WACrBpI,KAAK2wB,IAAIqI,SAAWA,EAGpBh5B,KAAK60C,kBAGL,IAAIC,GAAkB,GAAIjyC,GAAgB+xC,EAAY,KAAM50C,KAC5D80C,GAAgB7N,OAChBjnC,KAAK+0B,OAAO6f,GAAcE,EAM1B90C,KAAK8D,OAAS4iC,EAAO1mC,KAAKu1B,KAAK5E,IAAI+H,iBACjC9uB,gBAAgB,IAIlB5J,KAAK8D,OAAOwQ,GAAG,QAAatU,KAAKqgC,SAAS3K,KAAK11B,OAC/CA,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACnDA,KAAK8D,OAAOwQ,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OAC9CA,KAAK8D,OAAOwQ,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,OAGjDA,KAAK8D,OAAOwQ,GAAG,MAAQtU,KAAK+0C,cAAcrf,KAAK11B,OAG/CA,KAAK8D,OAAOwQ,GAAG,OAAQtU,KAAKg1C,mBAAmBtf,KAAK11B,OAGpDA,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAKi1C,WAAWvf,KAAK11B,OAGjDA,KAAKinC,QAmEPnkC,EAAQoR,UAAUD,WAAa,SAAS/E,GACtC,GAAIA,EAAS,CAEX,GAAIP,IAAU,OAAQ,QAAS,QAAS,UAAW,QAAS,aAAc,aAAc,iBAAkB,WAAW,OAAQ,OAC7HhO,GAAKyF,gBAAgBuI,EAAQ3O,KAAKkP,QAASA,GAEvC,eAAiBA,KACgB,gBAAxBA,GAAQimB,YACjBn1B,KAAKkP,QAAQimB,YAAcjmB,EAAQimB,YAEG,gBAAxBjmB,GAAQimB,aAA4B,QAAUjmB,GAAQimB,cACpEn1B,KAAKkP,QAAQimB,YAAcjmB,EAAQimB,YAAYrlB,OAI/C,UAAYZ,KACgB,gBAAnBA,GAAQyL,QACjB3a,KAAKkP,QAAQyL,OAAOooB,KAAO7zB,EAAQyL,OACnC3a,KAAKkP,QAAQyL,OAAO7K,KAAK0W,WAAatX,EAAQyL,OAC9C3a,KAAKkP,QAAQyL,OAAO7K,KAAK2W,SAAWvX,EAAQyL,QAEX,gBAAnBzL,GAAQyL,SACtBha,EAAKyF,iBAAiB,QAASpG,KAAKkP,QAAQyL,OAAQzL,EAAQyL,QACxD,QAAUzL,GAAQyL,SACe,gBAAxBzL,GAAQyL,OAAO7K,MACxB9P,KAAKkP,QAAQyL,OAAO7K,KAAK0W,WAAatX,EAAQyL,OAAO7K,KACrD9P,KAAKkP,QAAQyL,OAAO7K,KAAK2W,SAAWvX,EAAQyL,OAAO7K,MAEb,gBAAxBZ,GAAQyL,OAAO7K,MAC7BnP,EAAKyF,iBAAiB,aAAc,YAAapG,KAAKkP,QAAQyL,OAAO7K,KAAMZ,EAAQyL,OAAO7K,SAM9F,YAAcZ,KACgB,iBAArBA,GAAQq4B,UACjBvnC,KAAKkP,QAAQq4B,SAASkC,WAAcv6B,EAAQq4B,SAC5CvnC,KAAKkP,QAAQq4B,SAASqF,YAAc19B,EAAQq4B,SAC5CvnC,KAAKkP,QAAQq4B,SAASvzB,IAAc9E,EAAQq4B,SAC5CvnC,KAAKkP,QAAQq4B,SAASnwB,OAAclI,EAAQq4B,UAET,gBAArBr4B,GAAQq4B,UACtB5mC,EAAKyF,iBAAiB,aAAc,cAAe,MAAO,UAAWpG,KAAKkP,QAAQq4B,SAAUr4B,EAAQq4B,UAKxG,IAAI2N,GAAc,SAAWl+B,GAC3B,GAAImD,GAAKjL,EAAQ8H,EACjB,IAAImD,EAAI,CACN,KAAMA,YAAcg7B,WAClB,KAAM,IAAIvxC,OAAM,UAAYoT,EAAO,uBAAyBA,EAAO,mBAErEhX,MAAKkP,QAAQ8H,GAAQmD,IAEtBub,KAAK11B,OACP,QAAS,WAAY,WAAY,SAAU,YAAY4I,QAAQssC,GAGhEl1C,KAAKm3B,cASTr0B,EAAQoR,UAAUijB,UAAY,SAASjoB,GACrClP,KAAKu0C,YACLv0C,KAAKy0C,YAAa,EAEdvlC,GAAWA,EAAQkoB,cACrBz2B,EAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GACjCA,EAAK22B,OAAQ,EACT32B,EAAK02B,WAAW12B,EAAK2S,YAQ/B3f,EAAQoR,UAAUG,QAAU,WAC1BrU,KAAKgnC,OACLhnC,KAAKg3B,SAAS,MACdh3B,KAAK+2B,UAAU,MAEf/2B,KAAK8D,OAAS,KAEd9D,KAAKu1B,KAAO,KACZv1B,KAAKo8B,WAAa,MAMpBt5B,EAAQoR,UAAU8yB,KAAO,WAEnBhnC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,OAI7CtgB,KAAK2wB,IAAIoS,KAAK54B,YAChBnK,KAAK2wB,IAAIoS,KAAK54B,WAAWyH,YAAY5R,KAAK2wB,IAAIoS,MAI5C/iC,KAAK2wB,IAAIqI,SAAS7uB,YACpBnK,KAAK2wB,IAAIqI,SAAS7uB,WAAWyH,YAAY5R,KAAK2wB,IAAIqI,WAQtDl2B,EAAQoR,UAAU+yB,KAAO,WAElBjnC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,OAIvCtgB,KAAK2wB,IAAIoS,KAAK54B,YACjBnK,KAAKu1B,KAAK5E,IAAIyZ,mBAAmBl4B,YAAYlS,KAAK2wB,IAAIoS,MAInD/iC,KAAK2wB,IAAIqI,SAAS7uB,YACrBnK,KAAKu1B,KAAK5E,IAAI9oB,KAAKqK,YAAYlS,KAAK2wB,IAAIqI,WAW5Cl2B,EAAQoR,UAAU0jB,aAAe,SAAS1hB,GACxC,GAAIrQ,GAAGusC,EAAI/xC,EAAIyP,CAMf,KAJWjJ,QAAPqP,IAAkBA,MACjB5P,MAAMC,QAAQ2P,KAAMA,GAAOA,IAG3BrQ,EAAI,EAAGusC,EAAKpyC,KAAKw0C,UAAUxuC,OAAYosC,EAAJvsC,EAAQA,IAC9CxF,EAAKL,KAAKw0C,UAAU3uC,GACpBiK,EAAO9P,KAAKiC,MAAM5B,GACdyP,GAAMA,EAAK82B,UAKjB,KADA5mC,KAAKw0C,aACA3uC,EAAI,EAAGusC,EAAKl8B,EAAIlQ,OAAYosC,EAAJvsC,EAAQA,IACnCxF,EAAK6V,EAAIrQ,GACTiK,EAAO9P,KAAKiC,MAAM5B,GACdyP,IACF9P,KAAKw0C,UAAUjsC,KAAKlI,GACpByP,EAAK62B,WASX7jC,EAAQoR,UAAU4jB,aAAe,WAC/B,MAAO93B,MAAKw0C,UAAUz/B,YAOxBjS,EAAQoR,UAAUkhC,gBAAkB,WAClC,GAAI9e,GAAQt2B,KAAKu1B,KAAKe,MAAM+K,WACxBx5B,EAAQ7H,KAAKu1B,KAAK50B,KAAKm1B,SAASQ,EAAMjmB,OACtCgY,EAAQroB,KAAKu1B,KAAK50B,KAAKm1B,SAASQ,EAAMhmB,KAEtC4F,IACJ,KAAK,GAAI+iB,KAAWj5B,MAAK+0B,OACvB,GAAI/0B,KAAK+0B,OAAO5uB,eAAe8yB,GAM7B,IAAK,GALDvmB,GAAQ1S,KAAK+0B,OAAOkE,GACpBoc,EAAkB3iC,EAAM2+B,aAInBxrC,EAAI,EAAGA,EAAIwvC,EAAgBrvC,OAAQH,IAAK,CAC/C,GAAIiK,GAAOulC,EAAgBxvC,EAEtBiK,GAAKjI,KAAOwgB,GAAWvY,EAAKjI,KAAOiI,EAAKwD,MAAQzL,GACnDqO,EAAI3N,KAAKuH,EAAKzP,IAMtB,MAAO6V,IAQTpT,EAAQoR,UAAUohC,UAAY,SAASj1C,GAErC,IAAK,GADDm0C,GAAYx0C,KAAKw0C,UACZ3uC,EAAI,EAAGusC,EAAKoC,EAAUxuC,OAAYosC,EAAJvsC,EAAQA,IAC7C,GAAI2uC,EAAU3uC,IAAMxF,EAAI,CACtBm0C,EAAU7rC,OAAO9C,EAAG,EACpB,SASN/C,EAAQoR,UAAUuO,OAAS,WACzB,GAAI9H,GAAS3a,KAAKkP,QAAQyL,OACtB2b,EAAQt2B,KAAKu1B,KAAKe,MAClB1rB,EAASjK,EAAK4J,OAAOK,OACrBsE,EAAUlP,KAAKkP,QACfimB,EAAcjmB,EAAQimB,YACtB4U,GAAU,EACVzpB,EAAQtgB,KAAK2wB,IAAIrQ,MACjBinB,EAAWr4B,EAAQq4B,SAASkC,YAAcv6B,EAAQq4B,SAASqF,WAG/D5sC,MAAKqG,MAAM4B,IAAMjI,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAAS1oB,OAAO7E,IAC3EjI,KAAKqG,MAAMwB,KAAO7H,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAAQtT,KAAKu1B,KAAKC,SAAS1oB,OAAOjF,KAG5EyY,EAAMlY,UAAY,WAAam/B,EAAW,YAAc,IAGxDwC,EAAU/pC,KAAKu1C,gBAAkBxL,CAIjC,IAAIyL,GAAkBlf,EAAMhmB,IAAMgmB,EAAMjmB,MACpColC,EAAUD,GAAmBx1C,KAAK01C,qBAAyB11C,KAAKqG,MAAMiN,OAAStT,KAAKqG,MAAMsvC,SAC1FF,KAAQz1C,KAAKy0C,YAAa,GAC9Bz0C,KAAK01C,oBAAsBF,EAC3Bx1C,KAAKqG,MAAMsvC,UAAY31C,KAAKqG,MAAMiN,KAElC,IAAIs+B,GAAU5xC,KAAKy0C,WACfmB,EAAa51C,KAAK61C,cAClBC,GACFhmC,KAAM6K,EAAO7K,KACbizB,KAAMpoB,EAAOooB,MAEXgT,GACFjmC,KAAM6K,EAAO7K,KACbizB,KAAMpoB,EAAO7K,KAAK2W,SAAW,GAE3BlT,EAAS,EACT8hB,EAAY1a,EAAOooB,KAAOpoB,EAAO7K,KAAK2W,QA+B1C,OA5BAzmB,MAAK+0B,OAAO6f,GAAYnyB,OAAO6T,EAAOyf,EAAgBnE,GAGtDjxC,EAAKiI,QAAQ5I,KAAK+0B,OAAQ,SAAUriB,GAClC,GAAIsjC,GAAetjC,GAASkjC,EAAcE,EAAcC,EACpDE,EAAevjC,EAAM+P,OAAO6T,EAAO0f,EAAapE,EACpD7H,GAAUkM,GAAgBlM,EAC1Bx2B,GAAUb,EAAMa,SAElBA,EAAS/O,KAAKJ,IAAImP,EAAQ8hB,GAC1Br1B,KAAKy0C,YAAa,EAGlBn0B,EAAM5S,MAAM6F,OAAU3I,EAAO2I,GAG7BvT,KAAKqG,MAAMiN,MAAQgN,EAAM0Q,YACzBhxB,KAAKqG,MAAMkN,OAASA,EAGpBvT,KAAK2wB,IAAIoS,KAAKr1B,MAAMzF,IAAM2C,EAAuB,OAAfuqB,EAC7Bn1B,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAAS1oB,OAAO7E,IAC1DjI,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QACxEvT,KAAK2wB,IAAIoS,KAAKr1B,MAAM7F,KAAO,IAG3BkiC,EAAU/pC,KAAK8pC,cAAgBC,GAUjCjnC,EAAQoR,UAAU2hC,YAAc,WAC9B,GAAIK,GAA+C,OAA5Bl2C,KAAKkP,QAAQimB,YAAwB,EAAKn1B,KAAKu0C,SAASvuC,OAAS,EACpFmwC,EAAen2C,KAAKu0C,SAAS2B,GAC7BN,EAAa51C,KAAK+0B,OAAOohB,IAAiBn2C,KAAK+0B,OAAO4f,EAE1D,OAAOiB,IAAc,MAQvB9yC,EAAQoR,UAAU2gC,iBAAmB,WACnC,CAAA,GAEI/kC,GAAMwG,EAFN8/B,EAAYp2C,KAAK+0B,OAAO4f,EACX30C,MAAK+0B,OAAO6f,GAG7B,GAAI50C,KAAK42B,YAEP,GAAIwf,EAAW,CACbA,EAAUpP,aACHhnC,MAAK+0B,OAAO4f,EAEnB,KAAKr+B,IAAUtW,MAAKiC,MAClB,GAAIjC,KAAKiC,MAAMkE,eAAemQ,GAAS,CACrCxG,EAAO9P,KAAKiC,MAAMqU,GAClBxG,EAAKzF,QAAUyF,EAAKzF,OAAO+M,OAAOtH,EAClC,IAAImpB,GAAUj5B,KAAKq2C,YAAYvmC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACxBvmB,IAASA,EAAMsB,IAAIlE,IAASA,EAAKk3B,aAOvC,KAAKoP,EAAW,CACd,GAAI/1C,GAAK,KACLoT,EAAO,IACX2iC,GAAY,GAAIxzC,GAAMvC,EAAIoT,EAAMzT,MAChCA,KAAK+0B,OAAO4f,GAAayB,CAEzB,KAAK9/B,IAAUtW,MAAKiC,MACdjC,KAAKiC,MAAMkE,eAAemQ,KAC5BxG,EAAO9P,KAAKiC,MAAMqU,GAClB8/B,EAAUpiC,IAAIlE,GAIlBsmC,GAAUnP,SAShBnkC,EAAQoR,UAAUoiC,YAAc,WAC9B,MAAOt2C,MAAK2wB,IAAIqI,UAOlBl2B,EAAQoR,UAAU8iB,SAAW,SAAS/0B,GACpC,GACIiU,GADAhB,EAAKlV,KAELu2C,EAAev2C,KAAK22B,SAGxB,IAAK10B,EAGA,CAAA,KAAIA,YAAiBpB,IAAWoB,YAAiBnB,IAIpD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK22B,UAAY10B,MAHjBjC,MAAK22B,UAAY,IAoBnB,IAXI4f,IAEF51C,EAAKiI,QAAQ5I,KAAK+zC,cAAe,SAAUlrC,EAAUgB,GACnD0sC,EAAa9hC,IAAI5K,EAAOhB,KAI1BqN,EAAMqgC,EAAa3/B,SACnB5W,KAAKk0C,UAAUh+B,IAGblW,KAAK22B,UAAW,CAElB,GAAIt2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAK+zC,cAAe,SAAUlrC,EAAUgB,GACnDqL,EAAGyhB,UAAUriB,GAAGzK,EAAOhB,EAAUxI,KAInC6V,EAAMlW,KAAK22B,UAAU/f,SACrB5W,KAAKg0C,OAAO99B,GAGZlW,KAAK60C,qBAQT/xC,EAAQoR,UAAUsiC,SAAW,WAC3B,MAAOx2C,MAAK22B,WAOd7zB,EAAQoR,UAAU6iB,UAAY,SAAShC,GACrC,GACI7e,GADAhB,EAAKlV,IAgBT,IAZIA,KAAK42B,aACPj2B,EAAKiI,QAAQ5I,KAAKm0C,eAAgB,SAAUtrC,EAAUgB,GACpDqL,EAAG0hB,WAAWjiB,YAAY9K,EAAOhB,KAInCqN,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAK42B,WAAa,KAClB52B,KAAKs0C,gBAAgBp+B,IAIlB6e,EAGA,CAAA,KAAIA,YAAkBl0B,IAAWk0B,YAAkBj0B,IAItD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK42B,WAAa7B,MAHlB/0B,MAAK42B,WAAa,IASpB,IAAI52B,KAAK42B,WAAY,CAEnB,GAAIv2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAKm0C,eAAgB,SAAUtrC,EAAUgB,GACpDqL,EAAG0hB,WAAWtiB,GAAGzK,EAAOhB,EAAUxI,KAIpC6V,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAKo0C,aAAal+B,GAIpBlW,KAAK60C,mBAGL70C,KAAKy2C,SAELz2C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAO3CrR,EAAQoR,UAAUwiC,UAAY,WAC5B,MAAO12C,MAAK42B,YAOd9zB,EAAQoR,UAAUw+B,WAAa,SAASryC,GACtC,GAAIyP,GAAO9P,KAAK22B,UAAU1gB,IAAI5V,GAC1B43B,EAAUj4B,KAAK22B,UAAU9f,YAEzB/G,IAEF9P,KAAKkP,QAAQ0kC,SAAS9jC,EAAM,SAAUA,GAChCA,GAGFmoB,EAAQ7gB,OAAO/W,MAYvByC,EAAQoR,UAAUyiC,SAAW,SAAU5e,GACrC,MAAOA,GAAS5wB,MAAQnH,KAAKkP,QAAQ/H,OAAS4wB,EAASznB,IAAM,QAAU,QAUzExN,EAAQoR,UAAUmiC,YAAc,SAAUte,GACxC,GAAI5wB,GAAOnH,KAAK22C,SAAS5e,EACzB,OAAY,cAAR5wB,GAA0CN,QAAlBkxB,EAASrlB,MAC7BkiC,EAGC50C,KAAK42B,WAAamB,EAASrlB,MAAQiiC,GAS9C7xC,EAAQoR,UAAU+/B,UAAY,SAAS/9B,GACrC,GAAIhB,GAAKlV,IAETkW,GAAItN,QAAQ,SAAUvI,GACpB,GAAI03B,GAAW7iB,EAAGyhB,UAAU1gB,IAAI5V,EAAI6U,EAAG4+B,aACnChkC,EAAOoF,EAAGjT,MAAM5B,GAChB8G,EAAO+N,EAAGyhC,SAAS5e,GAEnBpxB,EAAc7D,EAAQmV,MAAM9Q,EAchC,IAZI2I,IAEGnJ,GAAiBmJ,YAAgBnJ,GAMpCuO,EAAGc,YAAYlG,EAAMioB,IAJrB7iB,EAAG0hC,YAAY9mC,GACfA,EAAO,QAONA,EAAM,CAET,IAAInJ,EAKC,KAEG,IAAID,WAFK,iBAARS,EAEa,4HAIA,sBAAwBA,EAAO,IAVnD2I,GAAO,GAAInJ,GAAYoxB,EAAU7iB,EAAGknB,WAAYlnB,EAAGhG,SACnDY,EAAKzP,GAAKA,EACV6U,EAAGC,SAASrF,MAalB9P,KAAKy2C,SACLz2C,KAAKy0C,YAAa,EAClBz0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAU8/B,OAASlxC,EAAQoR,UAAU+/B,UAO7CnxC,EAAQoR,UAAUggC,UAAY,SAASh+B,GACrC,GAAI6B,GAAQ,EACR7C,EAAKlV,IACTkW,GAAItN,QAAQ,SAAUvI,GACpB,GAAIyP,GAAOoF,EAAGjT,MAAM5B,EAChByP,KACFiI,IACA7C,EAAG0hC,YAAY9mC,MAIfiI,IAEF/X,KAAKy2C,SACLz2C,KAAKy0C,YAAa,EAClBz0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,MAQ7CrR,EAAQoR,UAAUuiC,OAAS,WAGzB91C,EAAKiI,QAAQ5I,KAAK+0B,OAAQ,SAAUriB,GAClCA,EAAM8D,WASV1T,EAAQoR,UAAUmgC,gBAAkB,SAASn+B,GAC3ClW,KAAKo0C,aAAal+B,IAQpBpT,EAAQoR,UAAUkgC,aAAe,SAASl+B,GACxC,GAAIhB,GAAKlV,IAETkW,GAAItN,QAAQ,SAAUvI,GACpB,GAAI2wC,GAAY97B,EAAG0hB,WAAW3gB,IAAI5V,GAC9BqS,EAAQwC,EAAG6f,OAAO10B,EAEtB,IAAKqS,EA6BHA,EAAMqG,QAAQi4B,OA7BJ,CAEV,GAAI3wC,GAAMs0C,GAAat0C,GAAMu0C,EAC3B,KAAM,IAAIhxC,OAAM,qBAAuBvD,EAAK,qBAG9C,IAAIw2C,GAAejwC,OAAOkI,OAAOoG,EAAGhG,QACpCvO,GAAKgF,OAAOkxC,GACVtjC,OAAQ,OAGVb,EAAQ,GAAI9P,GAAMvC,EAAI2wC,EAAW97B,GACjCA,EAAG6f,OAAO10B,GAAMqS,CAGhB,KAAK,GAAI4D,KAAUpB,GAAGjT,MACpB,GAAIiT,EAAGjT,MAAMkE,eAAemQ,GAAS,CACnC,GAAIxG,GAAOoF,EAAGjT,MAAMqU,EAChBxG,GAAK2D,KAAKf,OAASrS,GACrBqS,EAAMsB,IAAIlE,GAKhB4C,EAAM8D,QACN9D,EAAMu0B,UAQVjnC,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAUogC,gBAAkB,SAASp+B,GAC3C,GAAI6e,GAAS/0B,KAAK+0B,MAClB7e,GAAItN,QAAQ,SAAUvI,GACpB,GAAIqS,GAAQqiB,EAAO10B,EAEfqS,KACFA,EAAMs0B,aACCjS,GAAO10B,MAIlBL,KAAKm3B,YAELn3B,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAUqhC,aAAe,WAC/B,GAAIv1C,KAAK42B,WAAY,CAEnB,GAAI2d,GAAWv0C,KAAK42B,WAAWhgB,QAC7BJ,MAAOxW,KAAKkP,QAAQqkC,aAGlBrS,GAAWvgC,EAAKsG,WAAWstC,EAAUv0C,KAAKu0C,SAC9C,IAAIrT,EAAS,CAEX,GAAInM,GAAS/0B,KAAK+0B,MAClBwf,GAAS3rC,QAAQ,SAAUqwB,GACzBlE,EAAOkE,GAAS+N,SAIlBuN,EAAS3rC,QAAQ,SAAUqwB,GACzBlE,EAAOkE,GAASgO,SAGlBjnC,KAAKu0C,SAAWA,EAGlB,MAAOrT,GAGP,OAAO,GASXp+B,EAAQoR,UAAUiB,SAAW,SAASrF,GACpC9P,KAAKiC,MAAM6N,EAAKzP,IAAMyP,CAGtB,IAAImpB,GAAUj5B,KAAKq2C,YAAYvmC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACpBvmB,IAAOA,EAAMsB,IAAIlE,IASvBhN,EAAQoR,UAAU8B,YAAc,SAASlG,EAAMioB,GAC7C,GAAI+e,GAAahnC,EAAK2D,KAAKf,KAM3B,IAHA5C,EAAKiJ,QAAQgf,GAGT+e,GAAchnC,EAAK2D,KAAKf,MAAO,CACjC,GAAIqkC,GAAW/2C,KAAK+0B,OAAO+hB,EACvBC,IAAUA,EAAS3/B,OAAOtH,EAE9B,IAAImpB,GAAUj5B,KAAKq2C,YAAYvmC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACpBvmB,IAAOA,EAAMsB,IAAIlE,KAUzBhN,EAAQoR,UAAU0iC,YAAc,SAAS9mC,GAEvCA,EAAKk3B,aAGEhnC,MAAKiC,MAAM6N,EAAKzP,GAGvB,IAAIqI,GAAQ1I,KAAKw0C,UAAUxtC,QAAQ8I,EAAKzP,GAC3B,KAATqI,GAAa1I,KAAKw0C,UAAU7rC,OAAOD,EAAO,GAG9CoH,EAAKzF,QAAUyF,EAAKzF,OAAO+M,OAAOtH,IASpChN,EAAQoR,UAAU8iC,qBAAuB,SAASjuC,GAGhD,IAAK,GAFD6pC,MAEK/sC,EAAI,EAAGA,EAAIkD,EAAM/C,OAAQH,IAC5BkD,EAAMlD,YAAcvD,IACtBswC,EAASrqC,KAAKQ,EAAMlD,GAGxB,OAAO+sC,IAYT9vC,EAAQoR,UAAUmsB,SAAW,SAAUx2B,GAErC7J,KAAK00C,YAAY5kC,KAAO9P,KAAKq4B,eAAexuB,IAQ9C/G,EAAQoR,UAAU8rB,aAAe,SAAUn2B,GACzC,GAAK7J,KAAKkP,QAAQq4B,SAASkC,YAAezpC,KAAKkP,QAAQq4B,SAASqF,YAAhE,CAIA,GAEIvmC,GAFAyJ,EAAO9P,KAAK00C,YAAY5kC,MAAQ,KAChCoF,EAAKlV,IAGT,IAAI8P,GAAQA,EAAKy2B,SAAU,CACzB,GAAIoD,GAAe9/B,EAAMG,OAAO2/B,aAC5BE,EAAgBhgC,EAAMG,OAAO6/B,aAE7BF,IACFtjC,GACEyJ,KAAM65B,EACNsN,SAAUptC,EAAM2uB,QAAQzL,OAAOwL,MAC/BmR,UAAW,EACXj2B,KAAM9S,EAAKgF,UAAWmK,EAAK2D,OAG7BzT,KAAK00C,YAAYwC,WAAa7wC,IAEvBwjC,GACPxjC,GACEyJ,KAAM+5B,EACNoN,SAAUptC,EAAM2uB,QAAQzL,OAAOwL,MAC/BqR,WAAW,EACXn2B,KAAM9S,EAAKgF,UAAWmK,EAAK2D,OAG7BzT,KAAK00C,YAAYwC,WAAa7wC,IAG9BrG,KAAK00C,YAAYwC,UAAYl3C,KAAK83B,eAAehqB,IAAI,SAAUzN,GAC7D,GAAIyP,GAAOoF,EAAGjT,MAAM5B,GAChBgG,GACFyJ,KAAMA,EACNmnC,SAAUptC,EAAM2uB,QAAQzL,OAAOwL,MAC/B9kB,KAAM9S,EAAKgF,UAAWmK,EAAK2D,MAG7B,OAAOpN,KAIXwD,EAAM69B,sBAEC1nC,MAAKkP,QAAQq4B,SAASvzB,KAAOnK,EAAM2uB,QAAQ2e,SAASC,SAE3Dp3C,KAAKq3C,oBAAoBxtC,KAS7B/G,EAAQoR,UAAUmjC,oBAAsB,SAAUxtC,GAChD,GAAI8uB,GAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5B2e,EAAO32C,EAAK+G,gBAAgB1H,KAAK2wB,IAAIrQ,OACrC9N,EAAI3I,EAAM2uB,QAAQzL,OAAOwL,MAAQ+e,EAAO,GACxC1e,EAAO54B,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,GAC7BjO,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UACtBzkB,EAAQsoB,EAAOA,EAAKC,EAAMr0B,EAAO4kB,GAAQ9Y,EACzCC,EAAMD,EAEN0nB,GACF5wB,KAAM,QACNkJ,MAAOA,EACPC,IAAKA,EACL6C,QAAS,YAGP9S,EAAKM,EAAK2E,YACdyyB,GAAS/3B,KAAK22B,UAAU/iB,UAAYvT,CAEpC,IAAIqS,GAAQ1S,KAAKs4B,gBAAgBzuB,EAC7B6I,KACFqlB,EAASrlB,MAAQA,EAAMumB,QAGzB,IAAIse,GAAU,GAAIj1C,GAAUy1B,EAAU/3B,KAAKo8B,WAAYp8B,KAAKkP,QAC5DqoC,GAAQl3C,GAAKA,EACbk3C,EAAQ9jC,KAAOskB,EACf/3B,KAAKmV,SAASoiC,EAEd,IAAIlxC,IACFyJ,KAAMynC,EACN3N,WAAW,EACXqN,SAAUptC,EAAM2uB,QAAQzL,OAAOwL,MAC/B9kB,KAAM9S,EAAKgF,UAAWoyB,GAExB/3B,MAAK00C,YAAYwC,WAAa7wC,GAE9BwD,EAAM69B,mBAQR5kC,EAAQoR,UAAU+rB,QAAU,SAAUp2B,GAGpC,GAFAA,EAAMD,iBAEF5J,KAAK00C,YAAYwC,UAAW,CAC9BrtC,EAAM69B,iBAEN;GAAIxyB,GAAKlV,KACL24B,EAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5B1lB,EAAUjT,KAAKu1B,KAAK5E,IAAIjxB,KAAKyyC,WAAanyC,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAClE/O,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,SAG1B90B,MAAK00C,YAAYwC,UAAUtuC,QAAQ,SAAUvC,GAC3C,GAAI01B,GAAU7mB,EAAGqgB,KAAK50B,KAAKu1B,OAAOrsB,EAAM2uB,QAAQzL,OAAOwL,MAAQtlB,GAC3DukC,EAAUtiC,EAAGqgB,KAAK50B,KAAKu1B,OAAO7vB,EAAM4wC,SAAWhkC,GAC/CyX,EAASqR,EAAUyb,EAEnBzf,EAAWp3B,EAAKgF,UAAWU,EAAMyJ,KAAK2D,KAE1C,IAAIyB,EAAGhG,QAAQq4B,SAASkC,WACtB,GAAIpjC,EAAMqjC,UAER,GAAsB7iC,QAAlBkxB,EAAS1nB,MAAoB,CAC/B,GAAIonC,GAAe92C,EAAKuG,QAAQb,EAAMoN,KAAKpD,MAAO,QAC9CA,EAAQ,GAAIzL,MAAK6yC,EAAapwC,UAAYqjB,EAC9CqN,GAAS1nB,MAAQsoB,EAAOA,EAAKtoB,EAAO9L,EAAO4kB,GAAQ9Y,OAGlD,IAAIhK,EAAMujC,WAEb,GAAoB/iC,QAAhBkxB,EAASznB,IAAkB,CAC7B,GAAIonC,GAAa/2C,EAAKuG,QAAQb,EAAMoN,KAAKnD,IAAK,QAC1CA,EAAM,GAAI1L,MAAK8yC,EAAWrwC,UAAYqjB,EAC1CqN,GAASznB,IAAMqoB,EAAOA,EAAKroB,EAAK/L,EAAO4kB,GAAQ7Y,OAKjD,IAAsBzJ,QAAlBkxB,EAAS1nB,MAAoB,CAC/B,GAAIonC,GAAe92C,EAAKuG,QAAQb,EAAMoN,KAAKpD,MAAO,QAAQhJ,UACtDgJ,EAAQ,GAAIzL,MAAK6yC,EAAe/sB,EAEpC,IAAoB7jB,QAAhBkxB,EAASznB,IAAkB,CAC7B,GAAIonC,GAAa/2C,EAAKuG,QAAQb,EAAMoN,KAAKnD,IAAK,QAC1CC,EAAYmnC,EAAWrwC,UAAYowC,EAAapwC,SAEpD0wB,GAAS1nB,MAAQsoB,EAAOA,EAAKtoB,EAAO9L,EAAO4kB,GAAQ9Y,EACnD0nB,EAASznB,IAAQ,GAAI1L,MAAKmzB,EAAS1nB,MAAMhJ,UAAYkJ,OAGrDwnB,GAAS1nB,MAAQsoB,EAAOA,EAAKtoB,EAAO9L,EAAO4kB,GAAQ9Y,EAM3D,GAAI6E,EAAGhG,QAAQq4B,SAASqF,cAAiBvmC,EAAMqjC,WAAarjC,EAAMujC,WAC1C/iC,QAAlBkxB,EAASrlB,MAAoB,CAE/B,GAAIA,GAAQwC,EAAGojB,gBAAgBzuB,EAC3B6I,KACFqlB,EAASrlB,MAAQA,EAAMumB,SAM7B/jB,EAAGhG,QAAQ2kC,SAAS9b,EAAU,SAAUA,GAClCA,GACF1xB,EAAMyJ,KAAKiJ,QAAQgf,OAKzB/3B,KAAKy0C,YAAa,EAClBz0C,KAAKu1B,KAAKE,QAAQhH,KAAK,YAU3B3rB,EAAQoR,UAAU4yB,aAAe,SAASh3B,EAAMmpB,GAC9C,GAAIvmB,GAAQ1S,KAAK+0B,OAAOkE,EACxB,IAAIvmB,GAASA,EAAMumB,SAAWnpB,EAAK2D,KAAKf,MAAO,CAC7C,GAAIqkC,GAAWjnC,EAAKzF,MACpB0sC,GAAS3/B,OAAOtH,GAChBinC,EAASvgC,QACT9D,EAAMsB,IAAIlE,GACV4C,EAAM8D,QAEN1G,EAAK2D,KAAKf,MAAQA,EAAMumB,UAS5Bn2B,EAAQoR,UAAUgsB,WAAa,SAAUr2B,GAGvC,GAFAA,EAAMD,iBAEF5J,KAAK00C,YAAYwC,UAAW,CAC9BrtC,EAAM69B,iBAGN,IAAIiQ,MACAziC,EAAKlV,KACLi4B,EAAUj4B,KAAK22B,UAAU9f,aAEzBqgC,EAAYl3C,KAAK00C,YAAYwC,SACjCl3C,MAAK00C,YAAYwC,UAAY,KAC7BA,EAAUtuC,QAAQ,SAAUvC,GAC1B,GAAIhG,GAAKgG,EAAMyJ,KAAKzP,GAChB2X,EAAiD,MAAxC9C,EAAGyhB,UAAU1gB,IAAI5V,EAAI6U,EAAG4+B,YAErC,IAAK97B,EAaA,CAEH,GAAI+f,GAAWp3B,EAAKgF,UAAWU,EAAMyJ,KAAK2D,KAC1CyB,GAAGhG,QAAQykC,OAAO5b,EAAU,SAAUA,GAChCA,GAEFA,EAASE,EAAQrkB,UAAYvT,EAC7Bs3C,EAAQpvC,KAAKwvB,KAIb1xB,EAAMyJ,KAAKiJ,QAAQ1S,EAAMoN,MAEzByB,EAAGu/B,YAAa,EAChBv/B,EAAGqgB,KAAKE,QAAQhH,KAAK,iBAzBzBvZ,GAAGhG,QAAQukC,MAAMptC,EAAMyJ,KAAK2D,KAAM,SAAUskB,GAC1C7iB,EAAG0hC,YAAYvwC,EAAMyJ,MACjBioB,GACF7iB,EAAGyhB,UAAU9f,aAAa7C,IAAI+jB,GAIhC7iB,EAAGu/B,YAAa,EAChBv/B,EAAGqgB,KAAKE,QAAQhH,KAAK,cAwBvBkpB,EAAQ3xC,QACViyB,EAAQriB,OAAO+hC,KAUrB70C,EAAQoR,UAAU6gC,cAAgB,SAAUlrC,GAC1C,GAAK7J,KAAKkP,QAAQskC,WAAlB,CAEA,GAAI4D,GAAWvtC,EAAM2uB,QAAQ2e,UAAYttC,EAAM2uB,QAAQ2e,SAASC,QAC5DQ,EAAW/tC,EAAM2uB,QAAQ2e,UAAYttC,EAAM2uB,QAAQ2e,SAASS,QAChE,IAAIR,GAAWQ,EAEb,WADA53C,MAAKg1C,mBAAmBnrC,EAI1B,IAAIguC,GAAe73C,KAAK83B,eAEpBhoB,EAAO9P,KAAKq4B,eAAexuB,GAC3B2qC,EAAY1kC,GAAQA,EAAKzP,MAC7BL,MAAK43B,aAAa4c,EAElB,IAAIsD,GAAe93C,KAAK83B,gBAIpBggB,EAAa9xC,OAAS,GAAK6xC,EAAa7xC,OAAS,IACnDhG,KAAKu1B,KAAKE,QAAQhH,KAAK,UACrBxsB,MAAO61C,MAUbh1C,EAAQoR,UAAU+gC,WAAa,SAAUprC,GACvC,GAAK7J,KAAKkP,QAAQskC,YACbxzC,KAAKkP,QAAQq4B,SAASvzB,IAA3B,CAEA,GAAIkB,GAAKlV,KACL24B,EAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5B7oB,EAAO9P,KAAKq4B,eAAexuB,EAE/B,IAAIiG,EAAM,CAIR,GAAIioB,GAAW7iB,EAAGyhB,UAAU1gB,IAAInG,EAAKzP,GACrCL,MAAKkP,QAAQwkC,SAAS3b,EAAU,SAAUA,GACpCA,GACF7iB,EAAGyhB,UAAU9f,aAAajB,OAAOmiB,SAIlC,CAEH,GAAIuf,GAAO32C,EAAK+G,gBAAgB1H,KAAK2wB,IAAIrQ,OACrC9N,EAAI3I,EAAM2uB,QAAQzL,OAAOwL,MAAQ+e,EACjCjnC,EAAQrQ,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,GAC9BjO,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UAEtByiB,GACFlnC,MAAOsoB,EAAOA,EAAKtoB,EAAO9L,EAAO4kB,GAAQ9Y,EACzC8C,QAAS,WAIX,IAA0B,UAAtBnT,KAAKkP,QAAQ/H,KAAkB,CACjC,GAAImJ,GAAMtQ,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,EAAIxS,KAAKqG,MAAMiN,MAAQ,EACvDikC,GAAQjnC,IAAMqoB,EAAOA,EAAKroB,EAAK/L,EAAO4kB,GAAQ7Y,EAGhDinC,EAAQv3C,KAAK22B,UAAU/iB,UAAYjT,EAAK2E,YAExC,IAAIoN,GAAQ1S,KAAKs4B,gBAAgBzuB,EAC7B6I,KACF6kC,EAAQ7kC,MAAQA,EAAMumB,SAIxBj5B,KAAKkP,QAAQukC,MAAM8D,EAAS,SAAUznC,GAChCA,GACFoF,EAAGyhB,UAAU9f,aAAa7C,IAAIlE,QAYtChN,EAAQoR,UAAU8gC,mBAAqB,SAAUnrC,GAC/C,GAAK7J,KAAKkP,QAAQskC,WAAlB,CAEA,GAAIgB,GACA1kC,EAAO9P,KAAKq4B,eAAexuB,EAE/B,IAAIiG,EAAM,CAER0kC,EAAYx0C,KAAK83B,cAEjB,IAAI8f,GAAW/tC,EAAM2uB,QAAQ2J,QAAQ,IAAMt4B,EAAM2uB,QAAQ2J,QAAQ,GAAGyV,WAAY,CAChF,IAAIA,EAAU,CAIZpD,EAAUjsC,KAAKuH,EAAKzP,GACpB,IAAIi2B,GAAQxzB,EAAQi1C,cAAc/3C,KAAK22B,UAAU1gB,IAAIu+B,EAAWx0C,KAAK8zC,aAGrEU,KACA,KAAK,GAAIn0C,KAAML,MAAKiC,MAClB,GAAIjC,KAAKiC,MAAMkE,eAAe9F,GAAK,CACjC,GAAI23C,GAAQh4C,KAAKiC,MAAM5B,GACnBgQ,EAAQ2nC,EAAMvkC,KAAKpD,MACnBC,EAA0BzJ,SAAnBmxC,EAAMvkC,KAAKnD,IAAqB0nC,EAAMvkC,KAAKnD,IAAMD,CAExDA,IAASimB,EAAMnyB,KACfmM,GAAOgmB,EAAMlyB,OACX4zC,YAAiB71C,KACrBqyC,EAAUjsC,KAAKyvC,EAAM33C,SAKxB,CAEH,GAAIqI,GAAQ8rC,EAAUxtC,QAAQ8I,EAAKzP,GACtB,KAATqI,EAEF8rC,EAAUjsC,KAAKuH,EAAKzP,IAIpBm0C,EAAU7rC,OAAOD,EAAO,GAI5B1I,KAAK43B,aAAa4c,GAElBx0C,KAAKu1B,KAAKE,QAAQhH,KAAK,UACrBxsB,MAAOjC,KAAK83B,oBAWlBh1B,EAAQi1C,cAAgB,SAASphB,GAC/B,GAAIvyB,GAAM,KACND,EAAM,IAmBV,OAjBAwyB,GAAU/tB,QAAQ,SAAU6K,IACf,MAAPtP,GAAesP,EAAKpD,MAAQlM,KAC9BA,EAAMsP,EAAKpD,OAGGxJ,QAAZ4M,EAAKnD,KACI,MAAPlM,GAAeqP,EAAKnD,IAAMlM,KAC5BA,EAAMqP,EAAKnD,MAIF,MAAPlM,GAAeqP,EAAKpD,MAAQjM,KAC9BA,EAAMqP,EAAKpD,UAMflM,IAAKA,EACLC,IAAKA,IAUTtB,EAAQoR,UAAUmkB,eAAiB,SAASxuB,GAE1C,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO7D,eAAe,iBACxB,MAAO6D,GAAO,gBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OASTrH,EAAQoR,UAAUokB,gBAAkB,SAASzuB,GAE3C,IAAK,GADD4uB,GAAQ5uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAO0L,MAAQ5uB,EAAM4uB,MACtD5yB,EAAI,EAAGA,EAAI7F,KAAKu0C,SAASvuC,OAAQH,IAAK,CAC7C,GAAIozB,GAAUj5B,KAAKu0C,SAAS1uC,GACxB6M,EAAQ1S,KAAK+0B,OAAOkE,GACpBF,EAAarmB,EAAMie,IAAIoI,WACvB9wB,EAAMtH,EAAKqH,eAAe+wB,EAC9B,IAAIN,EAAQxwB,GAAOwwB,EAAQxwB,EAAM8wB,EAAW7H,aAC1C,MAAOxe,EAGT,IAAiC,QAA7B1S,KAAKkP,QAAQimB,aACf,GAAItvB,IAAM7F,KAAKu0C,SAASvuC,OAAS,GAAKyyB,EAAQxwB,EAC5C,MAAOyK,OAIT,IAAU,IAAN7M,GAAW4yB,EAAQxwB,EAAM8wB,EAAWrO,OACtC,MAAOhY,GAKb,MAAO,OAST5P,EAAQm1C,kBAAoB,SAASpuC,GAEnC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO7D,eAAe,oBACxB,MAAO6D,GAAO,mBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAGTtK,EAAOD,QAAUkD,GAKb,SAASjD,EAAQD,EAASM,GAS9B,QAAS6C,GAAOwyB,EAAMrmB,EAASgpC,EAAMjN,GACnCjrC,KAAKu1B,KAAOA,EACZv1B,KAAKi1B,gBACH9lB,SAAS,EACTi8B,OAAO,EACP+M,SAAU,GACVC,YAAa,EACbvwC,MACE4hB,SAAS,EACT7E,SAAU,YAEZyD,OACEoB,SAAS,EACT7E,SAAU,aAGd5kB,KAAKk4C,KAAOA,EACZl4C,KAAKkP,QAAUvO,EAAKgF,UAAU3F,KAAKi1B,gBACnCj1B,KAAKirC,iBAAmBA,EAExBjrC,KAAKqsC,eACLrsC,KAAK2wB,OACL3wB,KAAK+0B,UACL/0B,KAAKusC,eAAiB,EACtBvsC,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAjClB,GAAIvO,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BqC,EAAYrC,EAAoB,GAkCpC6C,GAAOmR,UAAY,GAAI3R,GAEvBQ,EAAOmR,UAAUsD,MAAQ,WACvBxX,KAAK+0B,UACL/0B,KAAKusC,eAAiB,GAGxBxpC,EAAOmR,UAAUw4B,SAAW,SAAS15B,EAAO25B,GAErC3sC,KAAK+0B,OAAO5uB,eAAe6M,KAC9BhT,KAAK+0B,OAAO/hB,GAAS25B,GAEvB3sC,KAAKusC,gBAAkB,GAGzBxpC,EAAOmR,UAAU04B,YAAc,SAAS55B,EAAO25B,GAC7C3sC,KAAK+0B,OAAO/hB,GAAS25B,GAGvB5pC,EAAOmR,UAAU24B,YAAc,SAAS75B,GAClChT,KAAK+0B,OAAO5uB,eAAe6M,WACtBhT,MAAK+0B,OAAO/hB,GACnBhT,KAAKusC,gBAAkB,IAI3BxpC,EAAOmR,UAAUohB,QAAU,WACzBt1B,KAAK2wB,IAAIrQ,MAAQtO,SAASM,cAAc,OACxCtS,KAAK2wB,IAAIrQ,MAAMlY,UAAY,SAC3BpI,KAAK2wB,IAAIrQ,MAAM5S,MAAMkX,SAAW,WAChC5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,OAC3BjI,KAAK2wB,IAAIrQ,MAAM5S,MAAMo/B,QAAU,QAE/B9sC,KAAK2wB,IAAI0nB,SAAWrmC,SAASM,cAAc,OAC3CtS,KAAK2wB,IAAI0nB,SAASjwC,UAAY,aAC9BpI,KAAK2wB,IAAI0nB,SAAS3qC,MAAMkX,SAAW,WACnC5kB,KAAK2wB,IAAI0nB,SAAS3qC,MAAMzF,IAAM,MAE9BjI,KAAKgrC,IAAMh5B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAKgrC,IAAIt9B,MAAMkX,SAAW,WAC1B5kB,KAAKgrC,IAAIt9B,MAAMzF,IAAM,MACrBjI,KAAKgrC,IAAIt9B,MAAM4F,MAAQtT,KAAKkP,QAAQipC,SAAW,EAAI,KACnDn4C,KAAKgrC,IAAIt9B,MAAM6F,OAAS,OAExBvT,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAKgrC,KAChChrC,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAK2wB,IAAI0nB,WAMtCt1C,EAAOmR,UAAU8yB,KAAO,WAElBhnC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,QAQnDvd,EAAOmR,UAAU+yB,KAAO,WAEjBjnC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,QAI9Cvd,EAAOmR,UAAUD,WAAa,SAAS/E,GACrC,GAAIP,IAAU,UAAU,cAAc,QAAQ,OAAO,QACrDhO,GAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAASA,IAGjDnM,EAAOmR,UAAUuO,OAAS,WACxB,GAAI4qB,GAAe,CACnB,KAAK,GAAIpU,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAKirC,iBAAiB5R,WAAWJ,IAAuE,GAA7Cj5B,KAAKirC,iBAAiB5R,WAAWJ,IACvIoU,IAKN,IAAuC,GAAnCrtC,KAAKkP,QAAQlP,KAAKk4C,MAAMzuB,SAA2C,GAAvBzpB,KAAKusC,gBAA+C,GAAxBvsC,KAAKkP,QAAQC,SAAoC,GAAhBk+B,EAC3GrtC,KAAKgnC,WAEF,CAqBH,GApBAhnC,KAAKinC,OACmC,YAApCjnC,KAAKkP,QAAQlP,KAAKk4C,MAAMtzB,UAA8D,eAApC5kB,KAAKkP,QAAQlP,KAAKk4C,MAAMtzB,UAC5E5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAM7F,KAAO,MAC5B7H,KAAK2wB,IAAIrQ,MAAM5S,MAAM4b,UAAY,OACjCtpB,KAAK2wB,IAAI0nB,SAAS3qC,MAAM4b,UAAY,OACpCtpB,KAAK2wB,IAAI0nB,SAAS3qC,MAAM7F,KAAQ7H,KAAKkP,QAAQipC,SAAW,GAAM,KAC9Dn4C,KAAK2wB,IAAI0nB,SAAS3qC,MAAM2a,MAAQ,GAChCroB,KAAKgrC,IAAIt9B,MAAM7F,KAAO,MACtB7H,KAAKgrC,IAAIt9B,MAAM2a,MAAQ,KAGvBroB,KAAK2wB,IAAIrQ,MAAM5S,MAAM2a,MAAQ,MAC7BroB,KAAK2wB,IAAIrQ,MAAM5S,MAAM4b,UAAY,QACjCtpB,KAAK2wB,IAAI0nB,SAAS3qC,MAAM4b,UAAY,QACpCtpB,KAAK2wB,IAAI0nB,SAAS3qC,MAAM2a,MAASroB,KAAKkP,QAAQipC,SAAW,GAAM,KAC/Dn4C,KAAK2wB,IAAI0nB,SAAS3qC,MAAM7F,KAAO,GAC/B7H,KAAKgrC,IAAIt9B,MAAM2a,MAAQ,MACvBroB,KAAKgrC,IAAIt9B,MAAM7F,KAAO,IAGgB,YAApC7H,KAAKkP,QAAQlP,KAAKk4C,MAAMtzB,UAA8D,aAApC5kB,KAAKkP,QAAQlP,KAAKk4C,MAAMtzB,SAC5E5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,EAAIhE,OAAOjE,KAAKu1B,KAAK5E,IAAI5D,OAAOrf,MAAMzF,IAAIgD,QAAQ,KAAK,KAAO,KACzFjL,KAAK2wB,IAAIrQ,MAAM5S,MAAM4W,OAAS,OAE3B,CACH,GAAIg0B,GAAmBt4C,KAAKu1B,KAAKC,SAASzI,OAAOxZ,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,MAC7FvT,MAAK2wB,IAAIrQ,MAAM5S,MAAM4W,OAAS,EAAIg0B,EAAmBr0C,OAAOjE,KAAKu1B,KAAK5E,IAAI5D,OAAOrf,MAAMzF,IAAIgD,QAAQ,KAAK,KAAO,KAC/GjL,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,GAGH,GAAtBjI,KAAKkP,QAAQk8B,OACfprC,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAK2wB,IAAI0nB,SAASrnB,YAAc,GAAK,KAClEhxB,KAAK2wB,IAAI0nB,SAAS3qC,MAAM2a,MAAQ,GAChCroB,KAAK2wB,IAAI0nB,SAAS3qC,MAAM7F,KAAO,GAC/B7H,KAAKgrC,IAAIt9B,MAAM4F,MAAQ,QAGvBtT,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAKkP,QAAQipC,SAAW,GAAKn4C,KAAK2wB,IAAI0nB,SAASrnB,YAAc,GAAK,KAC/FhxB,KAAKu4C,kBAGP,IAAIplC,GAAU,EACd,KAAK,GAAI8lB,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAKirC,iBAAiB5R,WAAWJ,IAAuE,GAA7Cj5B,KAAKirC,iBAAiB5R,WAAWJ,KACvI9lB,GAAWnT,KAAK+0B,OAAOkE,GAAS9lB,QAAU,UAIhDnT,MAAK2wB,IAAI0nB,SAASpzB,UAAY9R,EAC9BnT,KAAK2wB,IAAI0nB,SAAS3qC,MAAMyjB,WAAe,IAAOnxB,KAAKkP,QAAQipC,SAAYn4C,KAAKkP,QAAQkpC,YAAe,OAIvGr1C,EAAOmR,UAAUqkC,gBAAkB,WACjC,GAAIv4C,KAAK2wB,IAAIrQ,MAAMnW,WAAY,CAC7BvJ,EAAQ0Q,gBAAgBtR,KAAKqsC,YAC7B,IAAIrnB,GAAUld,OAAO2gC,iBAAiBzoC,KAAK2wB,IAAIrQ,OAAOk4B,WAClDvL,EAAahpC,OAAO+gB,EAAQ/Z,QAAQ,KAAK,KACzCuH,EAAIy6B,EACJxB,EAAYzrC,KAAKkP,QAAQipC,SACzBnL,EAAa,IAAOhtC,KAAKkP,QAAQipC,SACjC1lC,EAAIw6B,EAAa,GAAMD,EAAa,CAExChtC,MAAKgrC,IAAIt9B,MAAM4F,MAAQm4B,EAAY,EAAIwB,EAAa,IAEpD,KAAK,GAAIhU,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAKirC,iBAAiB5R,WAAWJ,IAAuE,GAA7Cj5B,KAAKirC,iBAAiB5R,WAAWJ,KACvIj5B,KAAK+0B,OAAOkE,GAASiU,SAAS16B,EAAGC,EAAGzS,KAAKqsC,YAAarsC,KAAKgrC,IAAKS,EAAWuB,GAC3Ev6B,GAAKu6B,EAAahtC,KAAKkP,QAAQkpC,aAKrCx3C,GAAQ+Q,gBAAgB3R,KAAKqsC,eAIjCxsC,EAAOD,QAAUmD,GAKb,SAASlD,EAAQD,EAASM,GAqB9B,QAAS8C,GAAUuyB,EAAMrmB,GACvBlP,KAAKK,GAAKM,EAAK2E,aACftF,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACH6b,iBAAkB,OAClB2H,aAAc,UACdxhC,MAAM,EACNyhC,UAAU,EACVC,YAAa,QACblI,QACEthC,SAAS,EACTgmB,YAAa,UAEfznB,MAAO,OACPkrC,UACEtlC,MAAO,GACPulC,cAAe,UACf9P,MAAO,UAETkH,YACE9gC,SAAS,EACT+gC,gBAAiB,cACjBC,MAAO,IAETt9B,YACE1D,SAAS,EACT4D,KAAM,EACNrF,MAAO,UAETorC,UACE5N,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACP93B,MAAO,OACPmW,SAAS,EACT8T,YAAY,EACZD,aACEz1B,MAAO1D,IAAI0C,OAAWzC,IAAIyC,QAC1BwhB,OAAQlkB,IAAI0C,OAAWzC,IAAIyC,UAkB/BkyC,QACE5pC,SAAS,EACTi8B,OAAO,EACPvjC,MACE4hB,SAAS,EACT7E,SAAU,YAEZyD,OACEoB,SAAS,EACT7E,SAAU,cAGdmQ,QACEsE,gBAKJr5B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAK2wB,OACL3wB,KAAKqG,SACLrG,KAAK8D,OAAS,KACd9D,KAAK+0B,UACL/0B,KAAKg5C,oBAAqB,EAC1Bh5C,KAAKi5C,iBAAkB,EACvBj5C,KAAKk5C,yBAA0B,CAE/B,IAAIhkC,GAAKlV,IACTA,MAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAGlB52B,KAAK+zC,eACH//B,IAAO,SAAUnK,EAAOgL,GACtBK,EAAG8+B,OAAOn/B,EAAO5S,QAEnB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAG++B,UAAUp/B,EAAO5S,QAEtBmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAGg/B,UAAUr/B,EAAO5S,SAKxBjC,KAAKm0C,gBACHngC,IAAO,SAAUnK,EAAOgL,GACtBK,EAAGk/B,aAAav/B,EAAO5S,QAEzB2T,OAAU,SAAU/L,EAAOgL,GACzBK,EAAGm/B,gBAAgBx/B,EAAO5S,QAE5BmV,OAAU,SAAUvN,EAAOgL,GACzBK,EAAGo/B,gBAAgBz/B,EAAO5S,SAI9BjC,KAAKiC,SACLjC,KAAKw0C,aACLx0C,KAAKm5C,UAAYn5C,KAAKu1B,KAAKe,MAAMjmB,MACjCrQ,KAAK00C,eAEL10C,KAAKqsC,eACLrsC,KAAKiU,WAAW/E,GAChBlP,KAAK0vC,0BAA4B,GACjC1vC,KAAKo5C,QAAU,EACfp5C,KAAKu1B,KAAKE,QAAQnhB,GAAG,eAAgB,WACnCY,EAAGikC,UAAYjkC,EAAGqgB,KAAKe,MAAMjmB,MAC7B6E,EAAG81B,IAAIt9B,MAAM7F,KAAOlH,EAAK4J,OAAOK,QAAQsK,EAAG7O,MAAMiN,OACjD4B,EAAGuN,OAAOliB,KAAK2U,GAAG,KAIpBlV,KAAKs1B,UACLt1B,KAAKkxC,WAAalG,IAAKhrC,KAAKgrC,IAAKqB,YAAarsC,KAAKqsC,YAAan9B,QAASlP,KAAKkP,QAAS6lB,OAAQ/0B,KAAK+0B,QACpG/0B,KAAKu1B,KAAKE,QAAQhH,KAAK,UAvJzB,GAAI9tB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BqC,EAAYrC,EAAoB,IAChCwC,EAAWxC,EAAoB,IAC/ByC,EAAazC,EAAoB,IACjC6C,EAAS7C,EAAoB,IAC7Bm5C,EAAoBn5C,EAAoB,IAExCy0C,EAAY,eAiJhB3xC,GAAUkR,UAAY,GAAI3R,GAK1BS,EAAUkR,UAAUohB,QAAU,WAC5B,GAAIhV,GAAQtO,SAASM,cAAc,MACnCgO,GAAMlY,UAAY,YAClBpI,KAAK2wB,IAAIrQ,MAAQA,EAGjBtgB,KAAKgrC,IAAMh5B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAKgrC,IAAIt9B,MAAMkX,SAAW,WAC1B5kB,KAAKgrC,IAAIt9B,MAAM6F,QAAU,GAAKvT,KAAKkP,QAAQypC,aAAa1tC,QAAQ,KAAK,IAAM,KAC3EjL,KAAKgrC,IAAIt9B,MAAMo/B,QAAU,QACzBxsB,EAAMpO,YAAYlS,KAAKgrC,KAGvBhrC,KAAKkP,QAAQ4pC,SAAS3jB,YAAc,OACpCn1B,KAAKs5B,UAAY,GAAI52B,GAAS1C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ4pC,SAAU94C,KAAKgrC,IAAKhrC,KAAKkP,QAAQ6lB,QAEvF/0B,KAAKkP,QAAQ4pC,SAAS3jB,YAAc,QACpCn1B,KAAKu5B,WAAa,GAAI72B,GAAS1C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ4pC,SAAU94C,KAAKgrC,IAAKhrC,KAAKkP,QAAQ6lB,cACjF/0B,MAAKkP,QAAQ4pC,SAAS3jB,YAG7Bn1B,KAAKw5B,WAAa,GAAIz2B,GAAO/C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ6pC,OAAQ,OAAQ/4C,KAAKkP,QAAQ6lB,QAClF/0B,KAAKy5B,YAAc,GAAI12B,GAAO/C,KAAKu1B,KAAMv1B,KAAKkP,QAAQ6pC,OAAQ,QAAS/4C,KAAKkP,QAAQ6lB,QAEpF/0B,KAAKinC,QAOPjkC,EAAUkR,UAAUD,WAAa,SAAS/E,GACxC,GAAIA,EAAS,CACX,GAAIP,IAAU,WAAW,eAAe,SAAS,cAAc,mBAAmB,QAAQ,WAAW,WAAW,OAAO,SAC3F9H,UAAxBqI,EAAQypC,aAAgD9xC,SAAnBqI,EAAQqE,QAAsE1M,SAA9C7G,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QAC1GvT,KAAKi5C,iBAAkB,EACvBj5C,KAAKk5C,yBAA0B,GAEsBryC,SAA9C7G,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QAAgD1M,SAAxBqI,EAAQypC,aACtEttC,UAAU6D,EAAQypC,YAAc,IAAI1tC,QAAQ,KAAK,KAAOjL,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,SAC7FvT,KAAKi5C,iBAAkB,GAG3Bt4C,EAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAASA,GAC/CvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UAEpCA,EAAQ+gC,YACuB,gBAAtB/gC,GAAQ+gC,YACb/gC,EAAQ+gC,WAAWC,kBACqB,WAAtChhC,EAAQ+gC,WAAWC,gBACrBlwC,KAAKkP,QAAQ+gC,WAAWE,MAAQ,EAEa,WAAtCjhC,EAAQ+gC,WAAWC,gBAC1BlwC,KAAKkP,QAAQ+gC,WAAWE,MAAQ,GAGhCnwC,KAAKkP,QAAQ+gC,WAAWC,gBAAkB,cAC1ClwC,KAAKkP,QAAQ+gC,WAAWE,MAAQ,KAMpCnwC,KAAKs5B,WACkBzyB,SAArBqI,EAAQ4pC,WACV94C,KAAKs5B,UAAUrlB,WAAWjU,KAAKkP,QAAQ4pC,UACvC94C,KAAKu5B,WAAWtlB,WAAWjU,KAAKkP,QAAQ4pC,WAIxC94C,KAAKw5B,YACgB3yB,SAAnBqI,EAAQ6pC,SACV/4C,KAAKw5B,WAAWvlB,WAAWjU,KAAKkP,QAAQ6pC,QACxC/4C,KAAKy5B,YAAYxlB,WAAWjU,KAAKkP,QAAQ6pC,SAIzC/4C,KAAK+0B,OAAO5uB,eAAewuC,IAC7B30C,KAAK+0B,OAAO4f,GAAW1gC,WAAW/E,GAKlClP,KAAK2wB,IAAIrQ,OACXtgB,KAAKyiB,QAAO,IAOhBzf,EAAUkR,UAAU8yB,KAAO,WAErBhnC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,QASnDtd,EAAUkR,UAAU+yB,KAAO,WAEpBjnC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,QAS9Ctd,EAAUkR,UAAU8iB,SAAW,SAAS/0B,GACtC,GACEiU,GADEhB,EAAKlV,KAEPu2C,EAAev2C,KAAK22B,SAGtB,IAAK10B,EAGA,CAAA,KAAIA,YAAiBpB,IAAWoB,YAAiBnB,IAIpD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK22B,UAAY10B,MAHjBjC,MAAK22B,UAAY,IAoBnB,IAXI4f,IAEF51C,EAAKiI,QAAQ5I,KAAK+zC,cAAe,SAAUlrC,EAAUgB,GACnD0sC,EAAa9hC,IAAI5K,EAAOhB,KAI1BqN,EAAMqgC,EAAa3/B,SACnB5W,KAAKk0C,UAAUh+B,IAGblW,KAAK22B,UAAW,CAElB,GAAIt2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAK+zC,cAAe,SAAUlrC,EAAUgB,GACnDqL,EAAGyhB,UAAUriB,GAAGzK,EAAOhB,EAAUxI,KAInC6V,EAAMlW,KAAK22B,UAAU/f,SACrB5W,KAAKg0C,OAAO99B,GAEdlW,KAAK60C,mBAEL70C,KAAKyiB,QAAO,IAQdzf,EAAUkR,UAAU6iB,UAAY,SAAShC,GACvC,GACI7e,GADAhB,EAAKlV,IAgBT,IAZIA,KAAK42B,aACPj2B,EAAKiI,QAAQ5I,KAAKm0C,eAAgB,SAAUtrC,EAAUgB,GACpDqL,EAAG0hB,WAAWjiB,YAAY9K,EAAOhB,KAInCqN,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAK42B,WAAa,KAClB52B,KAAKs0C,gBAAgBp+B,IAIlB6e,EAGA,CAAA,KAAIA,YAAkBl0B,IAAWk0B,YAAkBj0B,IAItD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK42B,WAAa7B,MAHlB/0B,MAAK42B,WAAa,IASpB,IAAI52B,KAAK42B,WAAY,CAEnB,GAAIv2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAKm0C,eAAgB,SAAUtrC,EAAUgB,GACpDqL,EAAG0hB,WAAWtiB,GAAGzK,EAAOhB,EAAUxI,KAIpC6V,EAAMlW,KAAK42B,WAAWhgB,SACtB5W,KAAKo0C,aAAal+B,GAEpBlW,KAAKi0C,aASPjxC,EAAUkR,UAAU+/B,UAAY,WAC9Bj0C,KAAK60C,mBACL70C,KAAKs5C,sBAELt5C,KAAKyiB,QAAO,IAEdzf,EAAUkR,UAAU8/B,OAAkB,SAAU99B,GAAMlW,KAAKi0C,UAAU/9B,IACrElT,EAAUkR,UAAUggC,UAAkB,SAAUh+B,GAAMlW,KAAKi0C,UAAU/9B,IACrElT,EAAUkR,UAAUmgC,gBAAmB,SAAUE,GAC/C,IAAK,GAAI1uC,GAAI,EAAGA,EAAI0uC,EAASvuC,OAAQH,IAAK,CACxC,GAAI6M,GAAQ1S,KAAK42B,WAAW3gB,IAAIs+B,EAAS1uC,GACzC7F,MAAKu5C,aAAa7mC,EAAO6hC,EAAS1uC,IAIpC7F,KAAKyiB,QAAO,IAEdzf,EAAUkR,UAAUkgC,aAAe,SAAUG,GAAWv0C,KAAKq0C,gBAAgBE,IAQ7EvxC,EAAUkR,UAAUogC,gBAAkB,SAAUC,GAC9C,IAAK,GAAI1uC,GAAI,EAAGA,EAAI0uC,EAASvuC,OAAQH,IAC/B7F,KAAK+0B,OAAO5uB,eAAeouC,EAAS1uC,MACmB,SAArD7F,KAAK+0B,OAAOwf,EAAS1uC,IAAIqJ,QAAQ4hC,kBACnC9wC,KAAKu5B,WAAWsT,YAAY0H,EAAS1uC,IACrC7F,KAAKy5B,YAAYoT,YAAY0H,EAAS1uC,IACtC7F,KAAKy5B,YAAYhX,WAGjBziB,KAAKs5B,UAAUuT,YAAY0H,EAAS1uC,IACpC7F,KAAKw5B,WAAWqT,YAAY0H,EAAS1uC,IACrC7F,KAAKw5B,WAAW/W,gBAEXziB,MAAK+0B,OAAOwf,EAAS1uC,IAGhC7F,MAAK60C,mBAEL70C,KAAKyiB,QAAO,IAWdzf,EAAUkR,UAAUqlC,aAAe,SAAU7mC,EAAOumB,GAC7Cj5B,KAAK+0B,OAAO5uB,eAAe8yB,IAY9Bj5B,KAAK+0B,OAAOkE,GAASrjB,OAAOlD,GACyB,SAAjD1S,KAAK+0B,OAAOkE,GAAS/pB,QAAQ4hC,kBAC/B9wC,KAAKu5B,WAAWqT,YAAY3T,EAASj5B,KAAK+0B,OAAOkE,IACjDj5B,KAAKy5B,YAAYmT,YAAY3T,EAASj5B,KAAK+0B,OAAOkE,MAGlDj5B,KAAKs5B,UAAUsT,YAAY3T,EAASj5B,KAAK+0B,OAAOkE,IAChDj5B,KAAKw5B,WAAWoT,YAAY3T,EAASj5B,KAAK+0B,OAAOkE,OAlBnDj5B,KAAK+0B,OAAOkE,GAAW,GAAIt2B,GAAW+P,EAAOumB,EAASj5B,KAAKkP,QAASlP,KAAK0vC,0BACpB,SAAjD1vC,KAAK+0B,OAAOkE,GAAS/pB,QAAQ4hC,kBAC/B9wC,KAAKu5B,WAAWmT,SAASzT,EAASj5B,KAAK+0B,OAAOkE,IAC9Cj5B,KAAKy5B,YAAYiT,SAASzT,EAASj5B,KAAK+0B,OAAOkE,MAG/Cj5B,KAAKs5B,UAAUoT,SAASzT,EAASj5B,KAAK+0B,OAAOkE,IAC7Cj5B,KAAKw5B,WAAWkT,SAASzT,EAASj5B,KAAK+0B,OAAOkE,MAclDj5B,KAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,UASnBzf,EAAUkR,UAAUolC,oBAAsB,WACxC,GAAsB,MAAlBt5C,KAAK22B,UAAmB,CAC1B,GACIsC,GADAugB,IAEJ,KAAKvgB,IAAWj5B,MAAK+0B,OACf/0B,KAAK+0B,OAAO5uB,eAAe8yB,KAC7BugB,EAAcvgB,MAGlB,KAAK,GAAI3iB,KAAUtW,MAAK22B,UAAUhjB,MAChC,GAAI3T,KAAK22B,UAAUhjB,MAAMxN,eAAemQ,GAAS,CAC/C,GAAIxG,GAAO9P,KAAK22B,UAAUhjB,MAAM2C,EAChC,IAAkCzP,SAA9B2yC,EAAc1pC,EAAK4C,OACrB,KAAM,IAAI9O,OAAM,4IAElBkM,GAAK0C,EAAI7R,EAAKuG,QAAQ4I,EAAK0C,EAAE,QAC7BgnC,EAAc1pC,EAAK4C,OAAOnK,KAAKuH,GAGnC,IAAKmpB,IAAWj5B,MAAK+0B,OACf/0B,KAAK+0B,OAAO5uB,eAAe8yB,IAC7Bj5B,KAAK+0B,OAAOkE,GAASjC,SAASwiB,EAAcvgB,MAYpDj2B,EAAUkR,UAAU2gC,iBAAmB,WACrC,GAAI70C,KAAK22B,WAA+B,MAAlB32B,KAAK22B,UAAmB,CAC5C,GAAI8iB,GAAmB,CACvB,KAAK,GAAInjC,KAAUtW,MAAK22B,UAAUhjB,MAChC,GAAI3T,KAAK22B,UAAUhjB,MAAMxN,eAAemQ,GAAS,CAC/C,GAAIxG,GAAO9P,KAAK22B,UAAUhjB,MAAM2C,EACpBzP,SAARiJ,IACEA,EAAK3J,eAAe,SACHU,SAAfiJ,EAAK4C,QACP5C,EAAK4C,MAAQiiC,GAIf7kC,EAAK4C,MAAQiiC,EAEf8E,EAAmB3pC,EAAK4C,OAASiiC,EAAY8E,EAAmB,EAAIA,GAK1E,GAAwB,GAApBA,QACKz5C,MAAK+0B,OAAO4f,GACnB30C,KAAKw5B,WAAWqT,YAAY8H,GAC5B30C,KAAKy5B,YAAYoT,YAAY8H,GAC7B30C,KAAKs5B,UAAUuT,YAAY8H,GAC3B30C,KAAKu5B,WAAWsT,YAAY8H,OAEzB,CACH,GAAIjiC,IAASrS,GAAIs0C,EAAWxhC,QAASnT,KAAKkP,QAAQupC,aAClDz4C,MAAKu5C,aAAa7mC,EAAOiiC,eAIpB30C,MAAK+0B,OAAO4f,GACnB30C,KAAKw5B,WAAWqT,YAAY8H,GAC5B30C,KAAKy5B,YAAYoT,YAAY8H,GAC7B30C,KAAKs5B,UAAUuT,YAAY8H,GAC3B30C,KAAKu5B,WAAWsT,YAAY8H,EAG9B30C,MAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,UAQnBzf,EAAUkR,UAAUuO,OAAS,SAASi3B,GACpC,GAAI3P,IAAU,CAGd/pC,MAAKqG,MAAMiN,MAAQtT,KAAK2wB,IAAIrQ,MAAM0Q,YAClChxB,KAAKqG,MAAMkN,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAGhC1M,SAAnB7G,KAAK21C,WAA2B31C,KAAKqG,MAAMiN,QAC7ComC,GAAmB,GAIrB3P,EAAU/pC,KAAK8pC,cAAgBC,CAG/B,IAAIyL,GAAkBx1C,KAAKu1B,KAAKe,MAAMhmB,IAAMtQ,KAAKu1B,KAAKe,MAAMjmB,MACxDolC,EAAUD,GAAmBx1C,KAAK01C,mBA6BtC,IA5BA11C,KAAK01C,oBAAsBF,EAKZ,GAAXzL,IACF/pC,KAAKgrC,IAAIt9B,MAAM4F,MAAQ3S,EAAK4J,OAAOK,OAAO,EAAE5K,KAAKqG,MAAMiN,OACvDtT,KAAKgrC,IAAIt9B,MAAM7F,KAAOlH,EAAK4J,OAAOK,QAAQ5K,KAAKqG,MAAMiN,QAGN,KAA1CtT,KAAKkP,QAAQqE,OAAS,IAAIvM,QAAQ,MAA8C,GAAhChH,KAAKk5C,2BACxDl5C,KAAKi5C,iBAAkB,IAKC,GAAxBj5C,KAAKi5C,iBACHj5C,KAAKkP,QAAQypC,aAAe34C,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,OAC1EvT,KAAKkP,QAAQypC,YAAc34C,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,KACvEvT,KAAKgrC,IAAIt9B,MAAM6F,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,MAEtEvT,KAAKi5C,iBAAkB,GAGvBj5C,KAAKgrC,IAAIt9B,MAAM6F,QAAU,GAAKvT,KAAKkP,QAAQypC,aAAa1tC,QAAQ,KAAK,IAAM,KAI9D,GAAX8+B,GAA6B,GAAV0L,GAA6C,GAA3Bz1C,KAAKg5C,oBAAkD,GAApBU,EAC1E3P,EAAU/pC,KAAK25C,gBAAkB5P,MAIjC,IAAsB,GAAlB/pC,KAAKm5C,UAAgB,CACvB,GAAIzuB,GAAS1qB,KAAKu1B,KAAKe,MAAMjmB,MAAQrQ,KAAKm5C,UACtC7iB,EAAQt2B,KAAKu1B,KAAKe,MAAMhmB,IAAMtQ,KAAKu1B,KAAKe,MAAMjmB,KAClD,IAAwB,GAApBrQ,KAAKqG,MAAMiN,MAAY,CACzB,GAAIsmC,GAAmB55C,KAAKqG,MAAMiN,MAAMgjB,EACpCrjB,EAAUyX,EAASkvB,CACvB55C,MAAKgrC,IAAIt9B,MAAM7F,MAAS7H,KAAKqG,MAAMiN,MAAQL,EAAW,MAO5D,MAFAjT,MAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,SACVsnB,GAQT/mC,EAAUkR,UAAUylC,aAAe,WAGjC,GADA/4C,EAAQ0Q,gBAAgBtR,KAAKqsC,aACL,GAApBrsC,KAAKqG,MAAMiN,OAAgC,MAAlBtT,KAAK22B,UAAmB,CACnD,GAAIjkB,GAAO7M,EACPg0C,KACAC,KACAC,KACAC,GAAe,EAGfzF,IACJ,KAAK,GAAItb,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO5uB,eAAe8yB,KAC7BvmB,EAAQ1S,KAAK+0B,OAAOkE,GACC,GAAjBvmB,EAAM+W,SAAgE5iB,SAA5C7G,KAAKkP,QAAQ6lB,OAAOsE,WAAWJ,IAAqE,GAA3Cj5B,KAAKkP,QAAQ6lB,OAAOsE,WAAWJ,IACpHsb,EAAShsC,KAAK0wB,GAIpB,IAAIsb,EAASvuC,OAAS,EAAG,CAEvB,GAAIi0C,GAAUj6C,KAAKu1B,KAAK50B,KAAKy1B,cAAcp2B,KAAKu1B,KAAKC,SAAS91B,KAAK4T,OAC/D4mC,EAAUl6C,KAAKu1B,KAAK50B,KAAKy1B,aAAa,EAAIp2B,KAAKu1B,KAAKC,SAAS91B,KAAK4T,OAClEsjB,IAQJ,KANA52B,KAAKm6C,iBAAiB5F,EAAU3d,EAAYqjB,EAASC,GAGrDl6C,KAAKo6C,eAAe7F,EAAU3d,GAGzB/wB,EAAI,EAAGA,EAAI0uC,EAASvuC,OAAQH,IAC/Bg0C,EAAsBtF,EAAS1uC,IAAM7F,KAAKq6C,qBAAqBzjB,EAAW2d,EAAS1uC,IAIrF7F,MAAKs6C,YAAY/F,EAAUsF,EAAuBE,GAIlDC,EAAeh6C,KAAKu6C,aAAahG,EAAUwF,EAC3C,IAAIS,GAAa,CACjB,IAAoB,GAAhBR,GAAwBh6C,KAAKo5C,QAAUoB,EAKzC,MAJA55C,GAAQ+Q,gBAAgB3R,KAAKqsC,aAC7BrsC,KAAKg5C,oBAAqB,EAC1Bh5C,KAAKo5C,UACLp5C,KAAKu1B,KAAKE,QAAQhH,KAAK,WAChB,CAUP,KAPIzuB,KAAKo5C,QAAUoB,GACjB3f,QAAQtG,IAAI,6EAEdv0B,KAAKo5C,QAAU,EACfp5C,KAAKg5C,oBAAqB,EAGrBnzC,EAAI,EAAGA,EAAI0uC,EAASvuC,OAAQH,IAC/B6M,EAAQ1S,KAAK+0B,OAAOwf,EAAS1uC,IAC7Bi0C,EAAmBvF,EAAS1uC,IAAM7F,KAAKy6C,qBAAqB7jB,EAAW2d,EAAS1uC,IAAK6M,EAIvF,KAAK7M,EAAI,EAAGA,EAAI0uC,EAASvuC,OAAQH,IAC/B6M,EAAQ1S,KAAK+0B,OAAOwf,EAAS1uC,IACF,OAAvB6M,EAAMxD,QAAQxB,OAChBgF,EAAMu+B,KAAK6I,EAAmBvF,EAAS1uC,IAAK6M,EAAO1S,KAAKkxC,UAG5DmI,GAAkBpI,KAAKsD,EAAUuF,EAAoB95C,KAAKkxC,YAOhE,MADAtwC,GAAQ+Q,gBAAgB3R,KAAKqsC,cACtB,GAiBTrpC,EAAUkR,UAAUimC,iBAAmB,SAAU5F,EAAU3d,EAAYqjB,EAASC,GAC9E,GAAIxnC,GAAO7M,EAAG4mB,EAAG3c,CACjB,IAAIykC,EAASvuC,OAAS,EACpB,IAAKH,EAAI,EAAGA,EAAI0uC,EAASvuC,OAAQH,IAAK,CACpC6M,EAAQ1S,KAAK+0B,OAAOwf,EAAS1uC,IAC7B+wB,EAAW2d,EAAS1uC,MACpB,IAAI60C,GAAgB9jB,EAAW2d,EAAS1uC,GAExC,IAA0B,GAAtB6M,EAAMxD,QAAQ+H,KAAc,CAC9B,GAAI0jC,GAAQn2C,KAAKJ,IAAI,EAAGzD,EAAKqP,kBAAkB0C,EAAMikB,UAAWsjB,EAAS,IAAK,UAC9E,KAAKxtB,EAAIkuB,EAAOluB,EAAI/Z,EAAMikB,UAAU3wB,OAAQymB,IAE1C,GADA3c,EAAO4C,EAAMikB,UAAUlK,GACV5lB,SAATiJ,EAAoB,CACtB,GAAIA,EAAK0C,EAAI0nC,EAAS,CACpBQ,EAAcnyC,KAAKuH,EACnB,OAGA4qC,EAAcnyC,KAAKuH,QAMzB,KAAK2c,EAAI,EAAGA,EAAI/Z,EAAMikB,UAAU3wB,OAAQymB,IACtC3c,EAAO4C,EAAMikB,UAAUlK,GACV5lB,SAATiJ,GACEA,EAAK0C,EAAIynC,GAAWnqC,EAAK0C,EAAI0nC,GAC/BQ,EAAcnyC,KAAKuH,KAgBjC9M,EAAUkR,UAAUkmC,eAAiB,SAAU7F,EAAU3d,GACvD,GAAIlkB,EACJ,IAAI6hC,EAASvuC,OAAS,EACpB,IAAK,GAAIH,GAAI,EAAGA,EAAI0uC,EAASvuC,OAAQH,IAEnC,GADA6M,EAAQ1S,KAAK+0B,OAAOwf,EAAS1uC,IACC,GAA1B6M,EAAMxD,QAAQwpC,SAAkB,CAClC,GAAIgC,GAAgB9jB,EAAW2d,EAAS1uC,GACxC,IAAI60C,EAAc10C,OAAS,EAAG,CAC5B,GAAI40C,GAAY,EACZC,EAAiBH,EAAc10C,OAI/B80C,EAAY96C,KAAKu1B,KAAK50B,KAAKq1B,eAAe0kB,EAAcA,EAAc10C,OAAS,GAAGwM,GAAKxS,KAAKu1B,KAAK50B,KAAKq1B,eAAe0kB,EAAc,GAAGloC,GACtIuoC,EAAiBF,EAAiBC,CACtCF,GAAYp2C,KAAKL,IAAIK,KAAKw2C,KAAK,GAAMH,GAAiBr2C,KAAKJ,IAAI,EAAGI,KAAK+pB,MAAMwsB,IAG7E,KAAK,GADDE,MACKxuB,EAAI,EAAOouB,EAAJpuB,EAAoBA,GAAKmuB,EACvCK,EAAY1yC,KAAKmyC,EAAcjuB,GAGjCmK,GAAW2d,EAAS1uC,IAAMo1C,KAgBpCj4C,EAAUkR,UAAUomC,YAAc,SAAU/F,EAAU3d,EAAYmjB,GAChE,GAAI/I,GAAWt+B,EAAO7M,EAGlBqJ,EAFAgsC,KACAC,IAEJ,IAAI5G,EAASvuC,OAAS,EAAG,CACvB,IAAKH,EAAI,EAAGA,EAAI0uC,EAASvuC,OAAQH,IAC/BmrC,EAAYpa,EAAW2d,EAAS1uC,IAChCqJ,EAAUlP,KAAK+0B,OAAOwf,EAAS1uC,IAAIqJ,QAC/B8hC,EAAUhrC,OAAS,IACrB0M,EAAQ1S,KAAK+0B,OAAOwf,EAAS1uC,IAES,SAAlCqJ,EAAQ0pC,SAASC,eAA6C,OAAjB3pC,EAAQxB,MACvB,QAA5BwB,EAAQ4hC,iBAA6BoK,EAAuBA,EAAoBnmC,OAAOrC,EAAMq+B,UAAUC,IAClEmK,EAAuBA,EAAqBpmC,OAAOrC,EAAMq+B,UAAUC,IAG5G+I,EAAYxF,EAAS1uC,IAAM6M,EAAMq+B,UAAUC,EAAUuD,EAAS1uC,IAMpEwzC,GAAkB+B,oBAAoBF,EAAsBnB,EAAaxF,EAAU,iBAAmB,QACtG8E,EAAkB+B,oBAAoBD,EAAsBpB,EAAaxF,EAAU,kBAAmB,WAW1GvxC,EAAUkR,UAAUqmC,aAAe,SAAUhG,EAAUwF,GACrD,GAGoEsB,GAAQC,EAHxEvR,GAAU,EACVwR,GAAgB,EAChBC,GAAiB,EACjBC,EAAU,IAAKC,EAAW,IAAKC,EAAU,KAAMC,EAAW,IAE9D,IAAIrH,EAASvuC,OAAS,EAAG,CAEvB,IAAK,GAAIH,GAAI,EAAGA,EAAI0uC,EAASvuC,OAAQH,IAAK,CACxC,GAAI6M,GAAQ1S,KAAK+0B,OAAOwf,EAAS1uC,GAC7B6M,IAA2C,SAAlCA,EAAMxD,QAAQ4hC,kBACzByK,GAAgB,EAChBE,EAAU,EACVE,EAAU,GAEHjpC,GAASA,EAAMxD,QAAQ4hC,mBAC9B0K,GAAiB,EACjBE,EAAW,EACXE,EAAW,GAKf,IAAK,GAAI/1C,GAAI,EAAGA,EAAI0uC,EAASvuC,OAAQH,IAC/Bk0C,EAAY5zC,eAAeouC,EAAS1uC,KAClCk0C,EAAYxF,EAAS1uC,IAAIg2C,UAAW,IACtCR,EAAStB,EAAYxF,EAAS1uC,IAAI1B,IAClCm3C,EAASvB,EAAYxF,EAAS1uC,IAAIzB,IAEe,SAA7C21C,EAAYxF,EAAS1uC,IAAIirC,kBAC3ByK,GAAgB,EAChBE,EAAUA,EAAUJ,EAASA,EAASI,EACtCE,EAAoBL,EAAVK,EAAmBL,EAASK,IAGtCH,GAAiB,EACjBE,EAAWA,EAAWL,EAASA,EAASK,EACxCE,EAAsBN,EAAXM,EAAoBN,EAASM,GAM3B,IAAjBL,GACFv7C,KAAKs5B,UAAUnF,SAASsnB,EAASE,GAEb,GAAlBH,GACFx7C,KAAKu5B,WAAWpF,SAASunB,EAAUE,GAoCvC,MAjCA7R,GAAU/pC,KAAK87C,qBAAqBP,EAAgBv7C,KAAKs5B,YAAeyQ,EACxEA,EAAU/pC,KAAK87C,qBAAqBN,EAAgBx7C,KAAKu5B,aAAewQ,EAElD,GAAlByR,GAA2C,GAAjBD,GAC5Bv7C,KAAKs5B,UAAUyiB,WAAY,EAC3B/7C,KAAKu5B,WAAWwiB,WAAY,IAG5B/7C,KAAKs5B,UAAUyiB,WAAY,EAC3B/7C,KAAKu5B,WAAWwiB,WAAY,GAE9B/7C,KAAKu5B,WAAW6S,QAAUmP,EACI,GAA1Bv7C,KAAKu5B,WAAW6S,QACWpsC,KAAKs5B,UAAU6S,WAAtB,GAAlBqP,EAAqDx7C,KAAKu5B,WAAWjmB,MAChB,EAEzDy2B,EAAU/pC,KAAKs5B,UAAU7W,UAAYsnB,EACrC/pC,KAAKu5B,WAAW0S,iBAAmBjsC,KAAKs5B,UAAU0S,WAClDhsC,KAAKu5B,WAAW2S,aAAelsC,KAAKs5B,UAAU4S,aAC9CnC,EAAU/pC,KAAKu5B,WAAW9W,UAAYsnB,GAGtCA,EAAU/pC,KAAKu5B,WAAW9W,UAAYsnB,EAIE,IAAtCwK,EAASvtC,QAAQ,mBACnButC,EAAS5rC,OAAO4rC,EAASvtC,QAAQ,kBAAkB,GAEV,IAAvCutC,EAASvtC,QAAQ,oBACnButC,EAAS5rC,OAAO4rC,EAASvtC,QAAQ,mBAAmB,GAG/C+iC,GAYT/mC,EAAUkR,UAAU4nC,qBAAuB,SAAUE,EAAUjZ,GAC7D,GAAI7B,IAAU,CAad,OAZgB,IAAZ8a,EACEjZ,EAAKpS,IAAIrQ,MAAMnW,YAA6B,GAAf44B,EAAKrJ,SACpCqJ,EAAKiE,OACL9F,GAAU,GAIP6B,EAAKpS,IAAIrQ,MAAMnW,YAA6B,GAAf44B,EAAKrJ,SACrCqJ,EAAKkE,OACL/F,GAAU,GAGPA,GAaTl+B,EAAUkR,UAAUmmC,qBAAuB,SAAU4B,GAKnD,IAAK,GAHDC,GAAQC,EADRC,KAEAtmB,EAAW91B,KAAKu1B,KAAK50B,KAAKm1B,SAErBjwB,EAAI,EAAGA,EAAIo2C,EAAWj2C,OAAQH,IACrCq2C,EAASpmB,EAASmmB,EAAWp2C,GAAG2M,GAAKxS,KAAKqG,MAAMiN,MAChD6oC,EAASF,EAAWp2C,GAAG4M,EACvB2pC,EAAc7zC,MAAMiK,EAAG0pC,EAAQzpC,EAAG0pC,GAGpC,OAAOC,IAcTp5C,EAAUkR,UAAUumC,qBAAuB,SAAUwB,EAAYvpC,GAC/D,GACIwpC,GAAQC,EADRC,KAEAtmB,EAAW91B,KAAKu1B,KAAK50B,KAAKm1B,SAC1BiN,EAAO/iC,KAAKs5B,UACZ+iB,EAAYp4C,OAAOjE,KAAKgrC,IAAIt9B,MAAM6F,OAAOtI,QAAQ,KAAK,IACpB,UAAlCyH,EAAMxD,QAAQ4hC,mBAChB/N,EAAO/iC,KAAKu5B,WAGd,KAAK,GAAI1zB,GAAI,EAAGA,EAAIo2C,EAAWj2C,OAAQH,IAAK,CAC1C,GAAIy2C,EAOJA,GAAaL,EAAWp2C,GAAGmN,MAAQipC,EAAWp2C,GAAGmN,MAAQ,KACzDkpC,EAASpmB,EAASmmB,EAAWp2C,GAAG2M,GAAKxS,KAAKqG,MAAMiN,MAChD6oC,EAAS33C,KAAK+pB,MAAMwU,EAAK4L,aAAasN,EAAWp2C,GAAG4M,IACpD2pC,EAAc7zC,MAAMiK,EAAG0pC,EAAQzpC,EAAG0pC,EAAQnpC,MAAMspC,IAKlD,MAFA5pC,GAAMs9B,gBAAgBxrC,KAAKL,IAAIk4C,EAAWtZ,EAAK4L,aAAa,KAErDyN,GAITv8C,EAAOD,QAAUoD,GAKb,SAASnD,EAAQD,EAASM,GAgB9B,QAAS+C,GAAUsyB,EAAMrmB,GACvBlP,KAAK2wB,KACHoI,WAAY,KACZ6S,SACA2Q,cACAC,cACA/qC,WACEm6B,SACA2Q,cACAC,gBAGJx8C,KAAKqG,OACHiwB,OACEjmB,MAAO,EACPC,IAAK,EACL8sB,YAAa,GAEfqf,QAAS,GAGXz8C,KAAKi1B,gBACHE,YAAa,SACb+V,iBAAiB,EACjBC,iBAAiB,EACjB5H,OAAQ,KACR1N,SAAU,MAEZ71B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAEpCj1B,KAAKu1B,KAAOA,EAGZv1B,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAjDlB,GAAIvO,GAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC6B,EAAW7B,EAAoB,IAC/ByB,EAAWzB,EAAoB,IAC/B2D,EAAS3D,EAAoB,GAgDjC+C,GAASiR,UAAY,GAAI3R,GAUzBU,EAASiR,UAAUD,WAAa,SAAS/E,GACnCA,IAEFvO,EAAKyF,iBACH,kBACA,kBACA,cACA,SACA,YACCpG,KAAKkP,QAASA,GAEb,eAAiBA,KACgB,gBAAxBA,GAAQimB,YACjBn1B,KAAKkP,QAAQimB,YAAcjmB,EAAQimB,YAEG,gBAAxBjmB,GAAQimB,aAA4B,QAAUjmB,GAAQimB,cACpEn1B,KAAKkP,QAAQimB,YAAcjmB,EAAQimB,YAAY4N,OAM/C,UAAY7zB,KACe,kBAAlBrL,GAAOuiC,OAEhBviC,EAAOuiC,OAAOl3B,EAAQk3B,QAGtBviC,EAAOwiC,KAAKn3B,EAAQk3B,WAS5BnjC,EAASiR,UAAUohB,QAAU,WAC3Bt1B,KAAK2wB,IAAIoI,WAAa/mB,SAASM,cAAc,OAC7CtS,KAAK2wB,IAAI9jB,WAAamF,SAASM,cAAc,OAE7CtS,KAAK2wB,IAAIoI,WAAW3wB,UAAY,sBAChCpI,KAAK2wB,IAAI9jB,WAAWzE,UAAY,uBAMlCnF,EAASiR,UAAUG,QAAU,WAEvBrU,KAAK2wB,IAAIoI,WAAW5uB,YACtBnK,KAAK2wB,IAAIoI,WAAW5uB,WAAWyH,YAAY5R,KAAK2wB,IAAIoI,YAElD/4B,KAAK2wB,IAAI9jB,WAAW1C,YACtBnK,KAAK2wB,IAAI9jB,WAAW1C,WAAWyH,YAAY5R,KAAK2wB,IAAI9jB,YAGtD7M,KAAKu1B,KAAO,MAOdtyB,EAASiR,UAAUuO,OAAS,WAC1B,GAAIvT,GAAUlP,KAAKkP,QACf7I,EAAQrG,KAAKqG,MACb0yB,EAAa/4B,KAAK2wB,IAAIoI,WACtBlsB,EAAa7M,KAAK2wB,IAAI9jB,WAGtBxC,EAAiC,OAAvB6E,EAAQimB,YAAwBn1B,KAAKu1B,KAAK5E,IAAI1oB,IAAMjI,KAAKu1B,KAAK5E,IAAIrM,OAC5Eo4B,EAAiB3jB,EAAW5uB,aAAeE,CAG/CrK,MAAKstC,oBAGL,IAAIpC,GAAkBlrC,KAAKkP,QAAQg8B,gBAC/BC,EAAkBnrC,KAAKkP,QAAQi8B,eAGnC9kC,GAAMknC,iBAAmBrC,EAAkB7kC,EAAMmnC,gBAAkB,EACnEnnC,EAAMonC,iBAAmBtC,EAAkB9kC,EAAMqnC,gBAAkB,EACnErnC,EAAMkN,OAASlN,EAAMknC,iBAAmBlnC,EAAMonC,iBAC9CpnC,EAAMiN,MAAQylB,EAAW/H,YAEzB3qB,EAAMunC,gBAAkB5tC,KAAKu1B,KAAKC,SAAS91B,KAAK6T,OAASlN,EAAMonC,kBACnC,OAAvBv+B,EAAQimB,YAAuBn1B,KAAKu1B,KAAKC,SAASlR,OAAO/Q,OAASvT,KAAKu1B,KAAKC,SAASvtB,IAAIsL,QAC9FlN,EAAMsnC,eAAiB,EACvBtnC,EAAMynC,gBAAkBznC,EAAMunC,gBAAkBvnC,EAAMonC,iBACtDpnC,EAAMwnC,eAAiB,CAGvB,IAAI8O,GAAwB5jB,EAAW6jB,YACnCC,EAAwBhwC,EAAW+vC,WAsBvC,OArBA7jB,GAAW5uB,YAAc4uB,EAAW5uB,WAAWyH,YAAYmnB,GAC3DlsB,EAAW1C,YAAc0C,EAAW1C,WAAWyH,YAAY/E,GAE3DksB,EAAWrrB,MAAM6F,OAASvT,KAAKqG,MAAMkN,OAAS,KAE9CvT,KAAK88C,iBAGDH,EACFtyC,EAAOgI,aAAa0mB,EAAY4jB,GAGhCtyC,EAAO6H,YAAY6mB,GAEjB8jB,EACF78C,KAAKu1B,KAAK5E,IAAIyZ,mBAAmB/3B,aAAaxF,EAAYgwC,GAG1D78C,KAAKu1B,KAAK5E,IAAIyZ,mBAAmBl4B,YAAYrF,GAGxC7M,KAAK8pC,cAAgB4S,GAO9Bz5C,EAASiR,UAAU4oC,eAAiB,WAClC,GAAI3nB,GAAcn1B,KAAKkP,QAAQimB,YAG3B9kB,EAAQ1P,EAAKuG,QAAQlH,KAAKu1B,KAAKe,MAAMjmB,MAAO,UAC5CC,EAAM3P,EAAKuG,QAAQlH,KAAKu1B,KAAKe,MAAMhmB,IAAK,UACxCysC,EAAgB/8C,KAAKu1B,KAAK50B,KAAKu1B,OAA2C,GAAnCl2B,KAAKqG,MAAM4oC,gBAAkB,KAAS5nC,UAC7E+1B,EAAc2f,EAAgBp7C,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAKu1B,KAAKe,MAAOymB,EAC3G3f,IAAep9B,KAAKu1B,KAAK50B,KAAKu1B,OAAO,GAAG7uB,SAExC,IAAI8hB,GAAO,GAAIpnB,GAAS,GAAI6C,MAAKyL,GAAQ,GAAIzL,MAAK0L,GAAM8sB,EAAap9B,KAAKu1B,KAAKI,YAC3E31B,MAAKkP,QAAQq0B,QACfpa,EAAK6a,UAAUhkC,KAAKkP,QAAQq0B,QAE1BvjC,KAAKkP,QAAQ2mB,UACf1M,EAAK8b,SAASjlC,KAAKkP,QAAQ2mB,UAE7B71B,KAAKmpB,KAAOA,CAKZ,IAAIwH,GAAM3wB,KAAK2wB,GACfA,GAAIlf,UAAUm6B,MAAQjb,EAAIib,MAC1Bjb,EAAIlf,UAAU8qC,WAAa5rB,EAAI4rB,WAC/B5rB,EAAIlf,UAAU+qC,WAAa7rB,EAAI6rB,WAC/B7rB,EAAIib,SACJjb,EAAI4rB,cACJ5rB,EAAI6rB,aAEJ,IAAIQ,GAEA9d,EAGA+d,EAGA70C,EAPAoK,EAAI,EAEJ0qC,EAAQ,EACR5pC,EAAQ,EAER6pC,EAAmBt2C,OACnBzC,EAAM,CAIV,KADA+kB,EAAK+a,QACE/a,EAAK0V,WAAmB,IAANz6B,GACvBA,IAEA44C,EAAM7zB,EAAKC,aACX8V,EAAU/V,EAAK+V,UACf92B,EAAY+gB,EAAK0c,eAEjBqX,EAAQ1qC,EACRA,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAASknB,GAC5B1pC,EAAQd,EAAI0qC,EACRD,IACFA,EAASvvC,MAAM4F,MAAQA,EAAQ,MAG7BtT,KAAKkP,QAAQg8B,iBACflrC,KAAKo9C,kBAAkB5qC,EAAG2W,EAAKwc,gBAAiBxQ,EAAa/sB,GAG3D82B,GAAWl/B,KAAKkP,QAAQi8B,iBACtB34B,EAAI,IACkB3L,QAApBs2C,IACFA,EAAmB3qC,GAErBxS,KAAKq9C,kBAAkB7qC,EAAG2W,EAAKyc,gBAAiBzQ,EAAa/sB,IAE/D60C,EAAWj9C,KAAKs9C,kBAAkB9qC,EAAG2iB,EAAa/sB,IAGlD60C,EAAWj9C,KAAKu9C,kBAAkB/qC,EAAG2iB,EAAa/sB,GAGpD+gB,EAAKE,MAIP,IAAIrpB,KAAKkP,QAAQi8B,gBAAiB,CAChC,GAAIqS,GAAWx9C,KAAKu1B,KAAK50B,KAAKu1B,OAAO,GACjCunB,EAAWt0B,EAAKyc,cAAc4X,GAC9BE,EAAYD,EAASz3C,QAAUhG,KAAKqG,MAAM2oC,gBAAkB,IAAM,IAE9CnoC,QAApBs2C,GAA6CA,EAAZO,IACnC19C,KAAKq9C,kBAAkB,EAAGI,EAAUtoB,EAAa/sB,GAKrDzH,EAAKiI,QAAQ5I,KAAK2wB,IAAIlf,UAAW,SAAUksC,GACzC,KAAOA,EAAI33C,QAAQ,CACjB,GAAI2B,GAAOg2C,EAAIC,KACXj2C,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWyH,YAAYjK,OAcpC1E,EAASiR,UAAUkpC,kBAAoB,SAAU5qC,EAAG8X,EAAM6K,EAAa/sB,GAErE,GAAI4K,GAAQhT,KAAK2wB,IAAIlf,UAAU+qC,WAAWzqC,OAE1C,KAAKiB,EAAO,CAEV,GAAIG,GAAUnB,SAASm9B,eAAe,GACtCn8B,GAAQhB,SAASM,cAAc,OAC/BU,EAAMd,YAAYiB,GAClBnT,KAAK2wB,IAAIoI,WAAW7mB,YAAYc,GAElChT,KAAK2wB,IAAI6rB,WAAWj0C,KAAKyK,GAEzBA,EAAM6qC,WAAW,GAAGC,UAAYxzB,EAEhCtX,EAAMtF,MAAMzF,IAAsB,OAAfktB,EAAyBn1B,KAAKqG,MAAMonC,iBAAmB,KAAQ,IAClFz6B,EAAMtF,MAAM7F,KAAO2K,EAAI,KACvBQ,EAAM5K,UAAY,cAAgBA,GAYpCnF,EAASiR,UAAUmpC,kBAAoB,SAAU7qC,EAAG8X,EAAM6K,EAAa/sB,GAErE,GAAI4K,GAAQhT,KAAK2wB,IAAIlf,UAAU8qC,WAAWxqC,OAE1C,KAAKiB,EAAO,CAEV,GAAIG,GAAUnB,SAASm9B,eAAe7kB,EACtCtX,GAAQhB,SAASM,cAAc,OAC/BU,EAAMd,YAAYiB,GAClBnT,KAAK2wB,IAAIoI,WAAW7mB,YAAYc,GAElChT,KAAK2wB,IAAI4rB,WAAWh0C,KAAKyK,GAEzBA,EAAM6qC,WAAW,GAAGC,UAAYxzB,EAChCtX,EAAM5K,UAAY,cAAgBA,EAGlC4K,EAAMtF,MAAMzF,IAAsB,OAAfktB,EAAwB,IAAOn1B,KAAKqG,MAAMknC,iBAAoB,KACjFv6B,EAAMtF,MAAM7F,KAAO2K,EAAI,MAWzBvP,EAASiR,UAAUqpC,kBAAoB,SAAU/qC,EAAG2iB,EAAa/sB,GAE/D,GAAIqoB,GAAOzwB,KAAK2wB,IAAIlf,UAAUm6B,MAAM75B,OAC/B0e,KAEHA,EAAOze,SAASM,cAAc,OAC9BtS,KAAK2wB,IAAI9jB,WAAWqF,YAAYue,IAElCzwB,KAAK2wB,IAAIib,MAAMrjC,KAAKkoB,EAEpB,IAAIpqB,GAAQrG,KAAKqG,KAYjB,OAVEoqB,GAAK/iB,MAAMzF,IADM,OAAfktB,EACe9uB,EAAMonC,iBAAmB,KAGzBztC,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAAS,KAEnDkd,EAAK/iB,MAAM6F,OAASlN,EAAMunC,gBAAkB,KAC5Cnd,EAAK/iB,MAAM7F,KAAQ2K,EAAInM,EAAMsnC,eAAiB,EAAK,KAEnDld,EAAKroB,UAAY,uBAAyBA,EAEnCqoB,GAWTxtB,EAASiR,UAAUopC,kBAAoB,SAAU9qC,EAAG2iB,EAAa/sB,GAE/D,GAAIqoB,GAAOzwB,KAAK2wB,IAAIlf,UAAUm6B,MAAM75B,OAC/B0e,KAEHA,EAAOze,SAASM,cAAc,OAC9BtS,KAAK2wB,IAAI9jB,WAAWqF,YAAYue,IAElCzwB,KAAK2wB,IAAIib,MAAMrjC,KAAKkoB,EAEpB,IAAIpqB,GAAQrG,KAAKqG,KAYjB,OAVEoqB,GAAK/iB,MAAMzF,IADM,OAAfktB,EACe,IAGAn1B,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAAS,KAEnDkd,EAAK/iB,MAAM7F,KAAQ2K,EAAInM,EAAMwnC,eAAiB,EAAK,KACnDpd,EAAK/iB,MAAM6F,OAASlN,EAAMynC,gBAAkB,KAE5Crd,EAAKroB,UAAY,uBAAyBA,EAEnCqoB,GAQTxtB,EAASiR,UAAUo5B,mBAAqB,WAKjCttC,KAAK2wB,IAAIye,mBACZpvC,KAAK2wB,IAAIye,iBAAmBp9B,SAASM,cAAc,OACnDtS,KAAK2wB,IAAIye,iBAAiBhnC,UAAY,qBACtCpI,KAAK2wB,IAAIye,iBAAiB1hC,MAAMkX,SAAW,WAE3C5kB,KAAK2wB,IAAIye,iBAAiBl9B,YAAYF,SAASm9B,eAAe,MAC9DnvC,KAAK2wB,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAIye,mBAE3CpvC,KAAKqG,MAAMmnC,gBAAkBxtC,KAAK2wB,IAAIye,iBAAiBvpB,aACvD7lB,KAAKqG,MAAM4oC,eAAiBjvC,KAAK2wB,IAAIye,iBAAiB5uB,YAGjDxgB,KAAK2wB,IAAI2e,mBACZtvC,KAAK2wB,IAAI2e,iBAAmBt9B,SAASM,cAAc,OACnDtS,KAAK2wB,IAAI2e,iBAAiBlnC,UAAY,qBACtCpI,KAAK2wB,IAAI2e,iBAAiB5hC,MAAMkX,SAAW,WAE3C5kB,KAAK2wB,IAAI2e,iBAAiBp9B,YAAYF,SAASm9B,eAAe,MAC9DnvC,KAAK2wB,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAI2e,mBAE3CtvC,KAAKqG,MAAMqnC,gBAAkB1tC,KAAK2wB,IAAI2e,iBAAiBzpB,aACvD7lB,KAAKqG,MAAM2oC,eAAiBhvC,KAAK2wB,IAAI2e,iBAAiB9uB,aAGxD3gB,EAAOD,QAAUqD,GAKb,SAASpD,EAAQD,EAASM,GAkC9B,QAASgD,GAASsX,EAAW/G,EAAMvE,GACjC,KAAMlP,eAAgBkD,IACpB,KAAM,IAAIuX,aAAY,mDAGxBza,MAAK+9C,0BACL/9C,KAAKg+C,0BAGLh+C,KAAK0a,iBAAmBF,EAGxBxa,KAAKi+C,kBAAoB,GACzBj+C,KAAKk+C,eAAiB,IAAOl+C,KAAKi+C,kBAClCj+C,KAAKm+C,WAAa,EAClBn+C,KAAKo+C,YAAc,EACnBp+C,KAAKq+C,gBAAiB,EACtBr+C,KAAKs+C,wBAA0B,GAE/Bt+C,KAAKu+C,cAAe,EAEpBv+C,KAAKw+C,kBAAoBxqC,IAAI,KAAKyqC,KAAK,KAAKC,SAAS,KAAKC,QAAQ,KAAKC,IAAI,KAE3E,IAAIC,GAAwB,SAAU16C,EAAIC,EAAIC,EAAMC,GAClD,GAAIF,GAAOD,EACT,MAAO,EAGP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAGE,EAAQH,GAAKI,GAIpCvE,MAAKi1B,gBACH6pB,OACED,sBAAuBA,EACvBE,KAAM,EACNC,UAAW,GACXC,UAAW,GACX3yB,OAAQ,GACR4yB,MAAO,UACPC,MAAOt4C,OACPqhB,SAAU,GACVC,SAAU,GACVi3B,UAAW,QACXC,SAAU,GACVC,SAAU,UACVC,SAAU14C,OACV24C,gBAAiB,EACjBC,gBAAiB,UACjBC,kBAAmB,EACnBC,oBAAoB,EACpBC,YAAa,GACbC,YAAa,GACbC,mBAAoB,GACpBC,MAAO,GACPx0C,OACIuB,OAAQ,UACRD,WAAY,UACdE,WACED,OAAQ,UACRD,WAAY,WAEdG,OACEF,OAAQ,UACRD,WAAY,YAGhB6F,MAAO7L,OACPma,YAAa,EACbg/B,oBAAqBn5C,QAEvBo5C,OACEpB,sBAAuBA,EACvB32B,SAAU,EACVC,SAAU,GACV7U,MAAO,EACP4sC,yBAA0B,EAC1BC,WAAY,IACZzyC,MAAO,OACPnC,OACEA,MAAM,UACNwB,UAAU,UACVC,MAAO,WAETxB,QAAQ,EACR4zC,UAAW,UACXC,SAAU,GACVC,SAAU,QACVC,SAAU,QACVC,gBAAiB,EACjBC,gBAAiB,QACjBW,eAAe,aACfC,iBAAkB,EAClBC,MACEt6C,OAAQ,GACRu6C,IAAK,EACLC,UAAW35C,QAEb45C,aAAc,OACdC,cAAc,GAEhBC,kBAAiB,EACjBC,SACEC,WACE1xC,SAAS,EACT2xC,cAAe,EACfC,sBAAuB,KACvBC,eAAgB,GAChBC,aAAc,GACdC,eAAgB,IAChBC,QAAS,KAEXC,WACEJ,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXG,uBACEnyC,SAAS,EACT6xC,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXA,QAAS,KACTH,eAAgB,KAChBC,aAAc,KACdC,eAAgB,MAElBK,YACEpyC,SAAS,EACTqyC,gBAAiB,IACjBC,iBAAiB,IACjBC,cAAc,IACdC,eAAgB,GAChBC,qBAAsB,GACtBC,gBAAiB,IACjBC,oBAAqB,GACrBC,mBAAoB,EACpBC,YAAa,IACbC,mBAAoB,GACpBC,sBAAuB,GACvBC,WAAY,GACZC,aAAc9uC,MAAQ,EACRC,OAAQ,EACR+Y,OAAQ,GACtB+1B,sBAAuB,IACvBC,kBAAmB,GACnBC,uBAAwB,EACxBC,eAAe,GAEjBC,YACEtzC,SAAS,GAEXuzC,UACEvzC,SAAS,EACTwzC,OAAQnwC,EAAG,GAAIC,EAAG,GAAIyvB,KAAM,KAC5B0gB,cAAc,GAEhBC,kBACE1zC,SAAS,EACT2zC,kBAAkB,GAEpBC,oBACE5zC,SAAQ,EACR6zC,gBAAiB,IACjBC,YAAa,IACb/lB,UAAW,KACXgmB,OAAQ,WAEVC,wBAAwB,EACxBC,cACEj0C,SAAS,EACTk0C,SAAS,EACTl8C,KAAM,aACNm8C,UAAW,IAEbC,YAAc,GACdC,YAAc,GACdC,WAAW,EACXC,wBAAyB,IACzBC,uBAAuB,EACvBvd,OAAQ,KACR+D,QAASA,EACT/iB,SACE3N,MAAO,IACP2lC,UAAW,QACXC,SAAU,GACVC,SAAU,UACV/zC,OACEuB,OAAQ,OACRD,WAAY,YAGhB+2C,aAAa,EACbC,WAAW,EACXlkB,UAAU,EACV3yB,OAAO,EACP82C,iBAAiB,EACjBC,iBAAiB,EACjBzwC,MAAQ,OACRC,OAAS,OACTigC,YAAY,EACZwQ,kBAAkB,GAEpBhkD,KAAKikD,UAAYtjD,EAAKgF,UAAW3F,KAAKi1B,gBACtCj1B,KAAKkkD,WAAa,EAGlBlkD,KAAKmkD,UAAYrF,SAASmB,UAC1BjgD,KAAKokD,oBAAqB,EAC1BpkD,KAAKqkD,qBACLrkD,KAAKskD,uBAGLtkD,KAAKukD,eAAiB,EAAEvkD,KAAKi+C,kBAC7Bj+C,KAAKwkD,wBAA0B,iBAC/BxkD,KAAKykD,WAAY,EACjBzkD,KAAK0kD,WAAa,EAClB1kD,KAAK2kD,YAAc,EACnB3kD,KAAK4kD,YAAc,EACnB5kD,KAAK6kD,kBAAoB,EACzB7kD,KAAK8kD,kBAAoB,EACzB9kD,KAAK+kD,eAAiB,KACtB/kD,KAAKglD,mBAAqB,KAC1BhlD,KAAKilD,UAAY,EACjBjlD,KAAKklD,iBAAkB,CAGvB;GAAI/hD,GAAUnD,IACdA,MAAK+0B,OAAS,GAAI1xB,GAClBrD,KAAKmlD,OAAS,GAAI7hD,GAClBtD,KAAKmlD,OAAOC,kBAAkB,WAC5BjiD,EAAQkiD,mBAIVrlD,KAAKslD,WAAa,EAClBtlD,KAAKulD,WAAa,EAClBvlD,KAAKwlD,cAAgB,EAIrBxlD,KAAKylD,qBAELzlD,KAAKs1B,UAELt1B,KAAK0lD,oBAEL1lD,KAAK2lD,qBAEL3lD,KAAK4lD,uBAEL5lD,KAAK6lD,uBAIL7lD,KAAK8lD,gBAAgB9lD,KAAKsgB,MAAME,YAAc,EAAGxgB,KAAKsgB,MAAMuF,aAAe,GAC3E7lB,KAAKie,UAAU,GACfje,KAAKiU,WAAW/E,GAGhBlP,KAAK+lD,yBAA0B,EAC/B/lD,KAAKgmD,mBACLhmD,KAAKimD,sBAAuB,EAC5BjmD,KAAKkmD,YAAa,EAClBlmD,KAAK0jD,wBAA0B,KAC/B1jD,KAAKmmD,eAAgB,EAGrBnmD,KAAKomD,oBACLpmD,KAAKqmD,0BACLrmD,KAAKsmD,eACLtmD,KAAK8+C,SACL9+C,KAAKigD,SAGLjgD,KAAKumD,eAAqB/zC,EAAK,EAAEC,EAAK,GACtCzS,KAAKwmD,mBAAqBh0C,EAAK,EAAEC,EAAK,GACtCzS,KAAKymD,iBAAmBj0C,EAAK,EAAEC,EAAK,GACpCzS,KAAK0mD,cACL1mD,KAAKuE,MAAQ,EACbvE,KAAK2mD,cAAgB3mD,KAAKuE,MAG1BvE,KAAK4mD,UAAY,KACjB5mD,KAAK6mD,UAAY,KAGjB7mD,KAAK8mD,gBACH9yC,IAAO,SAAUnK,EAAOgL,GACtB1R,EAAQ4jD,UAAUlyC,EAAO5S,OACzBkB,EAAQkN,SAEVuF,OAAU,SAAU/L,EAAOgL,GACzB1R,EAAQ6jD,aAAanyC,EAAO5S,OAC5BkB,EAAQkN,SAEV+G,OAAU,SAAUvN,EAAOgL,GACzB1R,EAAQ8jD,aAAapyC,EAAO5S,OAC5BkB,EAAQkN,UAGZrQ,KAAKknD,gBACHlzC,IAAO,SAAUnK,EAAOgL,GACtB1R,EAAQgkD,UAAUtyC,EAAO5S,OACzBkB,EAAQkN,SAEVuF,OAAU,SAAU/L,EAAOgL,GACzB1R,EAAQikD,aAAavyC,EAAO5S,OAC5BkB,EAAQkN,SAEV+G,OAAU,SAAUvN,EAAOgL,GACzB1R,EAAQkkD,aAAaxyC,EAAO5S,OAC5BkB,EAAQkN,UAKZrQ,KAAKsnD,QAAS,EACdtnD,KAAKunD,MAAQ1gD,OAGb7G,KAAK+Y,QAAQtF,EAAKzT,KAAKikD,UAAU1C,WAAWpyC,SAAWnP,KAAKikD,UAAUlB,mBAAmB5zC,SAGzFnP,KAAKu+C,cAAe,EAC6B,GAA7Cv+C,KAAKikD,UAAUlB,mBAAmB5zC,QACpCnP,KAAKwnD,2BAI2B,GAA5BxnD,KAAKikD,UAAUR,WACjBzjD,KAAKynD,YAAYl3C,SAAS,IAAI,EAAMvQ,KAAKikD,UAAU1C,WAAWpyC,SAK9DnP,KAAKikD,UAAU1C,WAAWpyC,SAC5BnP,KAAK0nD,sBAvXT,GAAI1pC,GAAU9d,EAAoB,IAC9BwmC,EAASxmC,EAAoB,IAC7BynD,EAAWznD,EAAoB,IAC/BS,EAAOT,EAAoB,GAC3BugC,EAAavgC,EAAoB,IACjCW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BuD,EAAYvD,EAAoB,IAChCwD,EAAcxD,EAAoB,IAClCmD,EAASnD,EAAoB,IAC7BoD,EAASpD,EAAoB,IAC7BqD,EAAOrD,EAAoB,IAC3BkD,EAAOlD,EAAoB,IAC3BsD,EAAQtD,EAAoB,IAC5B0nD,EAAc1nD,EAAoB,IAClC2nD,EAAY3nD,EAAoB,IAChCiqC,EAAUjqC,EAAoB,GAGlCA,GAAoB,IAyWpB8d,EAAQ9a,EAAQgR,WAOhBhR,EAAQgR,UAAU6pC,wBAA0B,WAC1C,GAAI+J,GAAcv+C,UAAUC,UAAU88B,aACtCtmC,MAAK+nD,iBAAkB,EACgB,IAAnCD,EAAY9gD,QAAQ,YACtBhH,KAAK+nD,iBAAkB,EAEiB,IAAjCD,EAAY9gD,QAAQ,WACvB8gD,EAAY9gD,QAAQ,WAAa,KACnChH,KAAK+nD,iBAAkB,IAa7B7kD,EAAQgR,UAAU8zC,eAAiB,WAIjC,IAAK,GAHDC,GAAUj2C,SAASk2C,qBAAsB,UAGpCriD,EAAI,EAAGA,EAAIoiD,EAAQjiD,OAAQH,IAAK,CACvC,GAAIsiD,GAAMF,EAAQpiD,GAAGsiD,IACjBtjD,EAAQsjD,GAAO,qBAAqBpjD,KAAKojD,EAC7C,IAAItjD,EAEF,MAAOsjD,GAAI7d,UAAU,EAAG6d,EAAIniD,OAASnB,EAAM,GAAGmB,QAIlD,MAAO,OAQT9C,EAAQgR,UAAUk0C,UAAY,SAASC,GACrC,GAAsDC,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,IAAIL,EAAcriD,OAAS,EACzB,IAAK,GAAIH,GAAI,EAAGA,EAAIwiD,EAAcriD,OAAQH,IACxCyiD,EAAOtoD,KAAK8+C,MAAMuJ,EAAcxiD,IAC5B4iD,EAAQH,EAAKK,YAAgB,OAC/BF,EAAOH,EAAKK,YAAY9gD,MAEtB6gD,EAAQJ,EAAKK,YAAiB,QAChCD,EAAOJ,EAAKK,YAAYtgC,OAEtBkgC,EAAQD,EAAKK,YAAkB,SACjCJ,EAAOD,EAAKK,YAAY1gD,KAEtBugD,EAAQF,EAAKK,YAAe,MAC9BH,EAAOF,EAAKK,YAAYrkC,YAK5B,KAAK,GAAIskC,KAAU5oD,MAAK8+C,MAClB9+C,KAAK8+C,MAAM34C,eAAeyiD,KAC5BN,EAAOtoD,KAAK8+C,MAAM8J,GACdH,EAAQH,EAAKK,YAAgB,OAC/BF,EAAOH,EAAKK,YAAY9gD,MAEtB6gD,EAAQJ,EAAKK,YAAiB,QAChCD,EAAOJ,EAAKK,YAAYtgC,OAEtBkgC,EAAQD,EAAKK,YAAkB,SACjCJ,EAAOD,EAAKK,YAAY1gD,KAEtBugD,EAAQF,EAAKK,YAAe,MAC9BH,EAAOF,EAAKK,YAAYrkC,QAShC,OAHY,MAARmkC,GAAuB,MAARC,GAAwB,KAARH,GAAuB,MAARC,IAChDD,EAAO,EAAGC,EAAO,EAAGC,EAAO,EAAGC,EAAO,IAE/BD,KAAMA,EAAMC,KAAMA,EAAMH,KAAMA,EAAMC,KAAMA,IASpDtlD,EAAQgR,UAAU20C,YAAc,SAASvyB,GACvC,OAAQ9jB,EAAI,IAAO8jB,EAAMoyB,KAAOpyB,EAAMmyB,MAC9Bh2C,EAAI,IAAO6jB,EAAMkyB,KAAOlyB,EAAMiyB,QAUxCrlD,EAAQgR,UAAUuzC,WAAa,SAASv4C,EAAS45C,EAAaC,GAC5D/oD,KAAKi3B,SAAQ,GAEYpwB,SAArBiiD,IAAiCA,GAAc,GAC1BjiD,SAArBkiD,IAAiCA,GAAe,GACpCliD,SAAZqI,IAAwBA,GAAW4vC,WACjBj4C,SAAlBqI,EAAQ4vC,QACV5vC,EAAQ4vC,SAGV,IAAIxoB,GACA0yB,CAEJ,IAAmB,GAAfF,EAAqB,CAEvB,GAAIG,GAAkB,CACtB,KAAK,GAAIL,KAAU5oD,MAAK8+C,MACtB,GAAI9+C,KAAK8+C,MAAM34C,eAAeyiD,GAAS,CACrC,GAAIN,GAAOtoD,KAAK8+C,MAAM8J,EACS,IAA3BN,EAAKY,qBACPD,GAAmB,GAIzB,GAAIA,EAAkB,GAAMjpD,KAAKsmD,YAAYtgD,OAE3C,WADAhG,MAAKynD,WAAWv4C,GAAQ,EAAM65C,EAIhCzyB,GAAQt2B,KAAKooD,UAAUl5C,EAAQ4vC,MAE/B,IAAIqK,GAAgBnpD,KAAKsmD,YAAYtgD,MAIjCgjD,GAH+B,GAA/BhpD,KAAKikD,UAAUb,aACwB,GAArCpjD,KAAKikD,UAAU1C,WAAWpyC,SAC5Bg6C,GAAiBnpD,KAAKikD,UAAU1C,WAAWC,gBAC/B,UAAY2H,EAAgB,WAAa,SAGzC,QAAUA,EAAgB,QAAU,SAIT,GAArCnpD,KAAKikD,UAAU1C,WAAWpyC,SAC1Bg6C,GAAiBnpD,KAAKikD,UAAU1C,WAAWC,gBACjC,YAAc2H,EAAgB,YAAc,cAG5C,YAAcA,EAAgB,aAAe,SAK7D,IAAIC,GAAS5kD,KAAKL,IAAInE,KAAKsgB,MAAMC,OAAOC,YAAc,IAAKxgB,KAAKsgB,MAAMC,OAAOsF,aAAe,IAC5FmjC,IAAaI,MAEV,CACH9yB,EAAQt2B,KAAKooD,UAAUl5C,EAAQ4vC,MAC/B,IAAIhE,GAAgD,IAApCt2C,KAAKknB,IAAI4K,EAAMoyB,KAAOpyB,EAAMmyB,MACxCY,EAAgD,IAApC7kD,KAAKknB,IAAI4K,EAAMkyB,KAAOlyB,EAAMiyB,MAExCe,EAAatpD,KAAKsgB,MAAMC,OAAOC,YAAes6B,EAC9CyO,EAAavpD,KAAKsgB,MAAMC,OAAOsF,aAAewjC,CAClDL,GAA2BO,GAAdD,EAA4BA,EAAaC,EAGpDP,EAAY,IACdA,EAAY,EAId,IAAIj8B,GAAS/sB,KAAK6oD,YAAYvyB,EAC9B,IAAoB,GAAhByyB,EAAuB,CACzB,GAAI75C,IAAW0V,SAAUmI,EAAQxoB,MAAOykD,EAAWQ,UAAWt6C,EAC9DlP,MAAK6oB,OAAO3Z,GACZlP,KAAKsnD,QAAS,EACdtnD,KAAKqQ,YAGL0c,GAAOva,GAAKw2C,EACZj8B,EAAOta,GAAKu2C,EACZj8B,EAAOva,GAAK,GAAMxS,KAAKsgB,MAAMC,OAAOC,YACpCuM,EAAOta,GAAK,GAAMzS,KAAKsgB,MAAMC,OAAOsF,aACpC7lB,KAAKie,UAAU+qC,GACfhpD,KAAK8lD,iBAAiB/4B,EAAOva,GAAGua,EAAOta,IAS3CvP,EAAQgR,UAAUu1C,qBAAuB,WACvCzpD,KAAK0pD,qBACL,KAAK,GAAIC,KAAO3pD,MAAK8+C,MACf9+C,KAAK8+C,MAAM34C,eAAewjD,IAC5B3pD,KAAKsmD,YAAY/9C,KAAKohD,IAiB5BzmD,EAAQgR,UAAU6E,QAAU,SAAStF,EAAMs1C,GAWzC,GAVqBliD,SAAjBkiD,IACFA,GAAe,GAIjB/oD,KAAK4pD,cAAa,GAGlB5pD,KAAKu+C,cAAe,EAEhB9qC,GAAQA,EAAKid,MAAQjd,EAAKqrC,OAASrrC,EAAKwsC,OAC1C,KAAM,IAAIxlC,aAAY,iGAYxB,IAP+C,GAA3Cza,KAAKikD,UAAUpB,iBAAiB1zC,SAClCnP,KAAK6pD,wBAIP7pD,KAAKiU,WAAWR,GAAQA,EAAKvE,SAEzBuE,GAAQA,EAAKid,KAEf,GAAGjd,GAAQA,EAAKid,IAAK,CACnB,GAAIo5B,GAAUrmD,EAAUsmD,WAAWt2C,EAAKid,IAExC,YADA1wB,MAAK+Y,QAAQ+wC,QAIZ,IAAIr2C,GAAQA,EAAKu2C,OAEpB,GAAGv2C,GAAQA,EAAKu2C,MAAO,CACrB,GAAIC,GAAYvmD,EAAYwmD,WAAWz2C,EAAKu2C,MAE5C,YADAhqD,MAAK+Y,QAAQkxC,QAKfjqD,MAAKmqD,UAAU12C,GAAQA,EAAKqrC,OAC5B9+C,KAAKoqD,UAAU32C,GAAQA,EAAKwsC,MAE9BjgD,MAAKqqD,mBACe,GAAhBtB,IAC+C,GAA7C/oD,KAAKikD,UAAUlB,mBAAmB5zC,SACpCnP,KAAKsqD,eACLtqD,KAAKwnD,4BAI2B,GAA5BxnD,KAAKikD,UAAUR,WACjBzjD,KAAKuqD,aAGTvqD,KAAKqQ,SAEPrQ,KAAKu+C,cAAe,GAOtBr7C,EAAQgR,UAAUD,WAAa,SAAU/E,GACvC,GAAIA,EAAS,CACX,GAAIhJ,GACAyI,GAAU,QAAQ,QAAQ,eAAe,qBAAqB,aAAa,aAC7E,WAAW,mBAAmB,QAAQ,SAAS,aAAa,YAAY,WAAW,aAQrF,IALAhO,EAAKoG,uBAAuB4H,EAAO3O,KAAKikD,UAAW/0C,GACnDvO,EAAKoG,wBAAwB,SAAS/G,KAAKikD,UAAUnF,MAAO5vC,EAAQ4vC,OACpEn+C,EAAKoG,wBAAwB,QAAQ,UAAU/G,KAAKikD,UAAUhE,MAAO/wC,EAAQ+wC,OAE7EjgD,KAAK+0B,OAAOivB,iBAAmBhkD,KAAKikD,UAAUD,iBAC1C90C,EAAQ0xC,UACVjgD,EAAKqO,aAAahP,KAAKikD,UAAUrD,QAAS1xC,EAAQ0xC,QAAQ,aAC1DjgD,EAAKqO,aAAahP,KAAKikD,UAAUrD,QAAS1xC,EAAQ0xC,QAAQ,aAEtD1xC,EAAQ0xC,QAAQU,uBAAuB,CACzCthD,KAAKikD,UAAUlB,mBAAmB5zC,SAAU,EAC5CnP,KAAKikD,UAAUrD,QAAQU,sBAAsBnyC,SAAU,EACvDnP,KAAKikD,UAAUrD,QAAQC,UAAU1xC,SAAU,CAC3C,KAAKjJ,IAAQgJ,GAAQ0xC,QAAQU,sBACvBpyC,EAAQ0xC,QAAQU,sBAAsBn7C,eAAeD,KACvDlG,KAAKikD,UAAUrD,QAAQU,sBAAsBp7C,GAAQgJ,EAAQ0xC,QAAQU,sBAAsBp7C,IAkDnG,GA5CIgJ,EAAQukC,QAAQzzC,KAAKw+C,iBAAiBxqC,IAAM9E,EAAQukC,OACpDvkC,EAAQs7C,SAASxqD,KAAKw+C,iBAAiBC,KAAOvvC,EAAQs7C,QACtDt7C,EAAQu7C,aAAazqD,KAAKw+C,iBAAiBE,SAAWxvC,EAAQu7C,YAC9Dv7C,EAAQw7C,YAAY1qD,KAAKw+C,iBAAiBG,QAAUzvC,EAAQw7C,WAC5Dx7C,EAAQy7C,WAAW3qD,KAAKw+C,iBAAiBI,IAAM1vC,EAAQy7C,UAE3DhqD,EAAKqO,aAAahP,KAAKikD,UAAW/0C,EAAQ,gBAC1CvO,EAAKqO,aAAahP,KAAKikD,UAAW/0C,EAAQ,sBAC1CvO,EAAKqO,aAAahP,KAAKikD,UAAW/0C,EAAQ,cAC1CvO,EAAKqO,aAAahP,KAAKikD,UAAW/0C,EAAQ,cAC1CvO,EAAKqO,aAAahP,KAAKikD,UAAW/0C,EAAQ,YAC1CvO,EAAKqO,aAAahP,KAAKikD,UAAW/0C,EAAQ,oBAGtCA,EAAQ2zC,mBACV7iD,KAAK4qD,SAAW5qD,KAAKikD,UAAUpB,iBAAiBC,kBAK9C5zC,EAAQ+wC,QACkBp5C,SAAxBqI,EAAQ+wC,MAAM10C,QACZ5K,EAAK8D,SAASyK,EAAQ+wC,MAAM10C,QAC9BvL,KAAKikD,UAAUhE,MAAM10C,SACrBvL,KAAKikD,UAAUhE,MAAM10C,MAAMA,MAAQ2D,EAAQ+wC,MAAM10C,MACjDvL,KAAKikD,UAAUhE,MAAM10C,MAAMwB,UAAYmC,EAAQ+wC,MAAM10C,MACrDvL,KAAKikD,UAAUhE,MAAM10C,MAAMyB,MAAQkC,EAAQ+wC,MAAM10C,QAGf1E,SAA9BqI,EAAQ+wC,MAAM10C,MAAMA,QAA0BvL,KAAKikD,UAAUhE,MAAM10C,MAAMA,MAAQ2D,EAAQ+wC,MAAM10C,MAAMA,OACnE1E,SAAlCqI,EAAQ+wC,MAAM10C,MAAMwB,YAA0B/M,KAAKikD,UAAUhE,MAAM10C,MAAMwB,UAAYmC,EAAQ+wC,MAAM10C,MAAMwB,WAC3ElG,SAA9BqI,EAAQ+wC,MAAM10C,MAAMyB,QAA0BhN,KAAKikD,UAAUhE,MAAM10C,MAAMyB,MAAQkC,EAAQ+wC,MAAM10C,MAAMyB,QAE3GhN,KAAKikD,UAAUhE,MAAMQ,cAAe,GAGjCvxC,EAAQ+wC,MAAMb,WACWv4C,SAAxBqI,EAAQ+wC,MAAM10C,QACZ5K,EAAK8D,SAASyK,EAAQ+wC,MAAM10C,OAAmBvL,KAAKikD,UAAUhE,MAAMb,UAAYlwC,EAAQ+wC,MAAM10C,MAC3D1E,SAA9BqI,EAAQ+wC,MAAM10C,MAAMA,QAAsBvL,KAAKikD,UAAUhE,MAAMb,UAAYlwC,EAAQ+wC,MAAM10C,MAAMA,SAK1G2D,EAAQ4vC,OACN5vC,EAAQ4vC,MAAMvzC,MAAO,CACvB,GAAIs/C,GAAclqD,EAAKqL,WAAWkD,EAAQ4vC,MAAMvzC,MAChDvL,MAAKikD,UAAUnF,MAAMvzC,MAAMsB,WAAag+C,EAAYh+C,WACpD7M,KAAKikD,UAAUnF,MAAMvzC,MAAMuB,OAAS+9C,EAAY/9C,OAChD9M,KAAKikD,UAAUnF,MAAMvzC,MAAMwB,UAAUF,WAAag+C,EAAY99C,UAAUF,WACxE7M,KAAKikD,UAAUnF,MAAMvzC,MAAMwB,UAAUD,OAAS+9C,EAAY99C,UAAUD,OACpE9M,KAAKikD,UAAUnF,MAAMvzC,MAAMyB,MAAMH,WAAag+C,EAAY79C,MAAMH,WAChE7M,KAAKikD,UAAUnF,MAAMvzC,MAAMyB,MAAMF,OAAS+9C,EAAY79C,MAAMF,OAGhE,GAAIoC,EAAQ6lB,OACV,IAAK,GAAI+1B,KAAa57C,GAAQ6lB,OAC5B,GAAI7lB,EAAQ6lB,OAAO5uB,eAAe2kD,GAAY,CAC5C,GAAIp4C,GAAQxD,EAAQ6lB,OAAO+1B,EAC3B9qD,MAAK+0B,OAAO/gB,IAAI82C,EAAWp4C,GAKjC,GAAIxD,EAAQkY,QAAS,CACnB,IAAKlhB,IAAQgJ,GAAQkY,QACflY,EAAQkY,QAAQjhB,eAAeD,KACjClG,KAAKikD,UAAU78B,QAAQlhB,GAAQgJ,EAAQkY,QAAQlhB,GAG/CgJ,GAAQkY,QAAQ7b,QAClBvL,KAAKikD,UAAU78B,QAAQ7b,MAAQ5K,EAAKqL,WAAWkD,EAAQkY,QAAQ7b,QAmBnE,GAfI,cAAgB2D,KACdA,EAAQ67C,WACL/qD,KAAKgrD,YACRhrD,KAAKgrD,UAAY,GAAInD,GAAU7nD,KAAKsgB,OACpCtgB,KAAKgrD,UAAU12C,GAAG,SAAUtU,KAAKirD,gBAAgBv1B,KAAK11B,QAIpDA,KAAKgrD,YACPhrD,KAAKgrD,UAAU32C,gBACRrU,MAAKgrD,YAKd97C,EAAQ28B,OACV,KAAM,IAAIjoC,OAAM,6EAMlB5D,MAAKylD,qBAELzlD,KAAKkrD,0BAELlrD,KAAKmrD,0BAELnrD,KAAKorD,yBAGLprD,KAAKqrD,cAGLrrD,KAAKirD,kBAELjrD,KAAKsrD,uBACLtrD,KAAK2lB,QAAQ3lB,KAAKikD,UAAU3wC,MAAOtT,KAAKikD,UAAU1wC,QAClDvT,KAAKsnD,QAAS,EACmC,GAA7CtnD,KAAKikD,UAAUlB,mBAAmB5zC,SAAwC,GAArBnP,KAAKu+C,eAC5Dv+C,KAAKsqD,eACLtqD,KAAKwnD,4BAEPxnD,KAAKqQ,UAaTnN,EAAQgR,UAAUohB,QAAU,WAE1B,KAAOt1B,KAAK0a,iBAAiBgK,iBAC3B1kB,KAAK0a,iBAAiB9I,YAAY5R,KAAK0a,iBAAiBiK,WAgB1D,IAbA3kB,KAAKsgB,MAAQtO,SAASM,cAAc,OACpCtS,KAAKsgB,MAAMlY,UAAY,oBACvBpI,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKsgB,MAAM5S,MAAMmX,SAAW,SAC5B7kB,KAAKsgB,MAAMirC,SAAW,IAKtBvrD,KAAKsgB,MAAMC,OAASvO,SAASM,cAAc,UAC3CtS,KAAKsgB,MAAMC,OAAO7S,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMC,QAE7BvgB,KAAKsgB,MAAMC,OAAOyH,WAQlB,CACH,GAAID,GAAM/nB,KAAKsgB,MAAMC,OAAOyH,WAAW,KACvChoB,MAAKkkD,YAAcp8C,OAAO0jD,kBAAoB,IAAMzjC,EAAI0jC,8BAC9C1jC,EAAI2jC,2BACJ3jC,EAAI4jC,0BACJ5jC,EAAI6jC,yBACJ7jC,EAAI8jC,wBAA0B,GAGxC7rD,KAAKsgB,MAAMC,OAAOyH,WAAW,MAAM8jC,aAAa9rD,KAAKkkD,WAAY,EAAG,EAAGlkD,KAAKkkD,WAAY,EAAG,OAjB1D,CACjC,GAAIp/B,GAAW9S,SAASM,cAAe,MACvCwS,GAASpX,MAAMnC,MAAQ,MACvBuZ,EAASpX,MAAMqX,WAAc,OAC7BD,EAASpX,MAAMsX,QAAW,OAC1BF,EAASG,UAAa,mDACtBjlB,KAAKsgB,MAAMC,OAAOrO,YAAY4S,GAchC9kB,KAAKqrD,eAQPnoD,EAAQgR,UAAUm3C,YAAc,WAC9B,GAAIn2C,GAAKlV,IACW6G,UAAhB7G,KAAK8D,QACP9D,KAAK8D,OAAOioD,UAEd/rD,KAAK4qC,QACL5qC,KAAKgsD,SACLhsD,KAAK8D,OAAS4iC,EAAO1mC,KAAKsgB,MAAMC,QAC9BsqB,iBAAiB,IAEnB7qC,KAAK8D,OAAOwQ,GAAG,MAAaY,EAAG+2C,OAAOv2B,KAAKxgB,IAC3ClV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAGg3C,aAAax2B,KAAKxgB,IACjDlV,KAAK8D,OAAOwQ,GAAG,OAAaY,EAAGirB,QAAQzK,KAAKxgB,IAC5ClV,KAAK8D,OAAOwQ,GAAG,QAAaY,EAAGmrB,SAAS3K,KAAKxgB,IAC7ClV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAG8qB,aAAatK,KAAKxgB,IACjDlV,KAAK8D,OAAOwQ,GAAG,OAAaY,EAAG+qB,QAAQvK,KAAKxgB,IAC5ClV,KAAK8D,OAAOwQ,GAAG,UAAaY,EAAGgrB,WAAWxK,KAAKxgB,IAEhB,GAA3BlV,KAAKikD,UAAUtkB,WACjB3/B,KAAK8D,OAAOwQ,GAAG,aAAmBY,EAAGkrB,cAAc1K,KAAKxgB,IACxDlV,KAAK8D,OAAOwQ,GAAG,iBAAmBY,EAAGkrB,cAAc1K,KAAKxgB,IACxDlV,KAAK8D,OAAOwQ,GAAG,QAAmBY,EAAGorB,SAAS5K,KAAKxgB,KAGrDlV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAGi3C,kBAAkBz2B,KAAKxgB,IAEtDlV,KAAKosD,YAAc1lB,EAAO1mC,KAAKsgB,OAC7BuqB,iBAAiB,IAEnB7qC,KAAKosD,YAAY93C,GAAG,UAAWY,EAAGm3C,WAAW32B,KAAKxgB,IAGlDlV,KAAK0a,iBAAiBxI,YAAYlS,KAAKsgB,QAOzCpd,EAAQgR,UAAU+2C,gBAAkB,WAClC,GAAI/1C,GAAKlV,IACa6G,UAAlB7G,KAAK2nD,UACP3nD,KAAK2nD,SAAStzC,UAIdrU,KAAK2nD,SAAWA,EAD0B,GAAxC3nD,KAAKikD,UAAUvB,SAASE,cACApoC,UAAW1S,OAAQ8B,gBAAgB,IAGnC4Q,UAAWxa,KAAKsgB,MAAO1W,gBAAgB,IAGnE5J,KAAK2nD,SAAS2E,QAEVtsD,KAAKikD,UAAUvB,SAASvzC,SAAWnP,KAAKusD,aAC1CvsD,KAAK2nD,SAASjyB,KAAK,KAAQ11B,KAAKwsD,QAAQ92B,KAAKxgB,GAAQ,WACrDlV,KAAK2nD,SAASjyB,KAAK,KAAQ11B,KAAKysD,aAAa/2B,KAAKxgB,GAAK,SACvDlV,KAAK2nD,SAASjyB,KAAK,OAAQ11B,KAAK0sD,UAAUh3B,KAAKxgB,GAAM,WACrDlV,KAAK2nD,SAASjyB,KAAK,OAAQ11B,KAAKysD,aAAa/2B,KAAKxgB,GAAK,SACvDlV,KAAK2nD,SAASjyB,KAAK,OAAQ11B,KAAK2sD,UAAUj3B,KAAKxgB,GAAM,WACrDlV,KAAK2nD,SAASjyB,KAAK,OAAQ11B,KAAK4sD,aAAal3B,KAAKxgB,GAAK,SACvDlV,KAAK2nD,SAASjyB,KAAK,QAAQ11B,KAAK6sD,WAAWn3B,KAAKxgB,GAAK,WACrDlV,KAAK2nD,SAASjyB,KAAK,QAAQ11B,KAAK4sD,aAAal3B,KAAKxgB,GAAK,SACvDlV,KAAK2nD,SAASjyB,KAAK,IAAQ11B,KAAK8sD,QAAQp3B,KAAKxgB,GAAQ,WACrDlV,KAAK2nD,SAASjyB,KAAK,IAAQ11B,KAAK+sD,UAAUr3B,KAAKxgB,GAAQ,SACvDlV,KAAK2nD,SAASjyB,KAAK,OAAQ11B,KAAK8sD,QAAQp3B,KAAKxgB,GAAQ,WACrDlV,KAAK2nD,SAASjyB,KAAK,OAAQ11B,KAAK+sD,UAAUr3B,KAAKxgB,GAAQ,SACvDlV,KAAK2nD,SAASjyB,KAAK,OAAQ11B,KAAKgtD,SAASt3B,KAAKxgB,GAAO,WACrDlV,KAAK2nD,SAASjyB,KAAK,OAAQ11B,KAAK+sD,UAAUr3B,KAAKxgB,GAAQ,SACvDlV,KAAK2nD,SAASjyB,KAAK,IAAQ11B,KAAKgtD,SAASt3B,KAAKxgB,GAAO,WACrDlV,KAAK2nD,SAASjyB,KAAK,IAAQ11B,KAAK+sD,UAAUr3B,KAAKxgB,GAAQ,SACvDlV,KAAK2nD,SAASjyB,KAAK,IAAQ11B,KAAK8sD,QAAQp3B,KAAKxgB,GAAQ,WACrDlV,KAAK2nD,SAASjyB,KAAK,IAAQ11B,KAAK+sD,UAAUr3B,KAAKxgB,GAAQ,SACvDlV,KAAK2nD,SAASjyB,KAAK,IAAQ11B,KAAKgtD,SAASt3B,KAAKxgB,GAAO,WACrDlV,KAAK2nD,SAASjyB,KAAK,IAAQ11B,KAAK+sD,UAAUr3B,KAAKxgB,GAAQ,SACvDlV,KAAK2nD,SAASjyB,KAAK,SAAS11B,KAAK8sD,QAAQp3B,KAAKxgB,GAAO,WACrDlV,KAAK2nD,SAASjyB,KAAK,SAAS11B,KAAK+sD,UAAUr3B,KAAKxgB,GAAO,SACvDlV,KAAK2nD,SAASjyB,KAAK,WAAW11B,KAAKgtD,SAASt3B,KAAKxgB,GAAI,WACrDlV,KAAK2nD,SAASjyB,KAAK,WAAW11B,KAAK+sD,UAAUr3B,KAAKxgB,GAAK,UAGV,GAA3ClV,KAAKikD,UAAUpB,iBAAiB1zC,UAClCnP,KAAK2nD,SAASjyB,KAAK,MAAM11B,KAAK6pD,sBAAsBn0B,KAAKxgB,IACzDlV,KAAK2nD,SAASjyB,KAAK,SAAS11B,KAAKitD,gBAAgBv3B,KAAKxgB,MAU1DhS,EAAQgR,UAAUG,QAAU,WAC1BrU,KAAKqQ,MAAQ,aACbrQ,KAAKyiB,OAAS,aACdziB,KAAKunD,OAAQ,EAGbvnD,KAAKktD,+BAGLltD,KAAK2nD,SAAS2E,QAGdtsD,KAAK8D,OAAOioD,UAGZ/rD,KAAKyU,MAELzU,KAAKmtD,oBAAoBntD,KAAK0a,mBAGhCxX,EAAQgR,UAAUi5C,oBAAsB,SAASC,GAC/C,KAAoC,GAA7BA,EAAU1oC,iBACf1kB,KAAKmtD,oBAAoBC,EAAUzoC,YACnCyoC,EAAUx7C,YAAYw7C,EAAUzoC,aAUpCzhB,EAAQgR,UAAUm5C,YAAc,SAAUvtB,GACxC,OACEttB,EAAGstB,EAAMvH,MAAQ53B,EAAK+G,gBAAgB1H,KAAKsgB,MAAMC,QACjD9N,EAAGqtB,EAAMrH,MAAQ93B,EAAKqH,eAAehI,KAAKsgB,MAAMC,UASpDrd,EAAQgR,UAAUmsB,SAAW,SAAUx2B,IACjC,GAAIjF,OAAOyC,UAAYrH,KAAKilD,UAAY,MAC1CjlD,KAAK4qC,KAAK7I,QAAU/hC,KAAKqtD,YAAYxjD,EAAM2uB,QAAQzL,QACnD/sB,KAAK4qC,KAAK0iB,SAAU,EACpBttD,KAAKgsD,MAAMznD,MAAQvE,KAAKutD,YAGxBvtD,KAAKilD,WAAY,GAAIrgD,OAAOyC,UAE5BrH,KAAKwtD,aAAaxtD,KAAK4qC,KAAK7I,WAQhC7+B,EAAQgR,UAAU8rB,aAAe,SAAUn2B,GACzC7J,KAAKytD,iBAAiB5jD,IAUxB3G,EAAQgR,UAAUu5C,iBAAmB,SAAS5jD,GAElBhD,SAAtB7G,KAAK4qC,KAAK7I,SACZ/hC,KAAKqgC,SAASx2B,EAGhB,IAAIy+C,GAAOtoD,KAAK0tD,WAAW1tD,KAAK4qC,KAAK7I,QASrC,IANA/hC,KAAK4qC,KAAK5J,UAAW,EACrBhhC,KAAK4qC,KAAK4J,aACVx0C,KAAK4qC,KAAKnsB,YAAcze,KAAK2tD,kBAC7B3tD,KAAK4qC,KAAKge,OAAS,KACnB5oD,KAAKmmD,eAAgB,EAET,MAARmC,GAA4C,GAA5BtoD,KAAKikD,UAAUJ,UAAmB,CACpD7jD,KAAKmmD,eAAgB,EACrBnmD,KAAK4qC,KAAKge,OAASN,EAAKjoD,GAEnBioD,EAAKsF,cACR5tD,KAAK6tD,cAAcvF,GAAK,GAG1BtoD,KAAKyuB,KAAK,aAAaq/B,QAAQ9tD,KAAK83B,eAAegnB,OAGnD,KAAK,GAAIiP,KAAY/tD,MAAKguD,aAAalP,MACrC,GAAI9+C,KAAKguD,aAAalP,MAAM34C,eAAe4nD,GAAW,CACpD,GAAI/pD,GAAShE,KAAKguD,aAAalP,MAAMiP,GACjCxhD,GACFlM,GAAI2D,EAAO3D,GACXioD,KAAMtkD,EAGNwO,EAAGxO,EAAOwO,EACVC,EAAGzO,EAAOyO,EACVw7C,OAAQjqD,EAAOiqD,OACfC,OAAQlqD,EAAOkqD,OAGjBlqD,GAAOiqD,QAAS,EAChBjqD,EAAOkqD,QAAS,EAEhBluD,KAAK4qC,KAAK4J,UAAUjsC,KAAKgE,MAWjCrJ,EAAQgR,UAAU+rB,QAAU,SAAUp2B,GACpC7J,KAAKmuD,cAActkD,IAUrB3G,EAAQgR,UAAUi6C,cAAgB,SAAStkD,GACzC,IAAI7J,KAAK4qC,KAAK0iB,QAAd,CAKAttD,KAAKouD,aAEL,IAAIrsB,GAAU/hC,KAAKqtD,YAAYxjD,EAAM2uB,QAAQzL,QACzC7X,EAAKlV,KACL4qC,EAAO5qC,KAAK4qC,KACZ4J,EAAY5J,EAAK4J,SACrB,IAAIA,GAAaA,EAAUxuC,QAAsC,GAA5BhG,KAAKikD,UAAUJ,UAAmB,CAErE,GAAIpiB,GAASM,EAAQvvB,EAAIo4B,EAAK7I,QAAQvvB,EAClCkvB,EAASK,EAAQtvB,EAAIm4B,EAAK7I,QAAQtvB,CAGtC+hC,GAAU5rC,QAAQ,SAAU2D,GAC1B,GAAI+7C,GAAO/7C,EAAE+7C,IAER/7C,GAAE0hD,SACL3F,EAAK91C,EAAI0C,EAAGm5C,qBAAqBn5C,EAAGo5C,qBAAqB/hD,EAAEiG,GAAKivB,IAG7Dl1B,EAAE2hD,SACL5F,EAAK71C,EAAIyC,EAAGq5C,qBAAqBr5C,EAAGs5C,qBAAqBjiD,EAAEkG,GAAKivB,MAM/D1hC,KAAKsnD,SACRtnD,KAAKsnD,QAAS,EACdtnD,KAAKqQ,aAKP,IAAkC,GAA9BrQ,KAAKikD,UAAUL,YAAqB,CAEtC,GAA0B/8C,SAAtB7G,KAAK4qC,KAAK7I,QAEZ,WADA/hC,MAAKytD,iBAAiB5jD,EAGxB,IAAIokB,GAAQ8T,EAAQvvB,EAAIxS,KAAK4qC,KAAK7I,QAAQvvB,EACtC0b,EAAQ6T,EAAQtvB,EAAIzS,KAAK4qC,KAAK7I,QAAQtvB,CAE1CzS,MAAK8lD,gBACH9lD,KAAK4qC,KAAKnsB,YAAYjM,EAAIyb,EAC1BjuB,KAAK4qC,KAAKnsB,YAAYhM,EAAIyb,GAE5BluB,KAAKi3B,aASX/zB,EAAQgR,UAAUgsB,WAAa,SAAUr2B,GACvC7J,KAAKyuD,eAAe5kD,IAItB3G,EAAQgR,UAAUu6C,eAAiB,WACjCzuD,KAAK4qC,KAAK5J,UAAW,CACrB,IAAIwT,GAAYx0C,KAAK4qC,KAAK4J,SACtBA,IAAaA,EAAUxuC,QACzBwuC,EAAU5rC,QAAQ,SAAU2D,GAE1BA,EAAE+7C,KAAK2F,OAAS1hD,EAAE0hD,OAClB1hD,EAAE+7C,KAAK4F,OAAS3hD,EAAE2hD,SAEpBluD,KAAKsnD,QAAS,EACdtnD,KAAKqQ,SAGLrQ,KAAKi3B,UAEmB,GAAtBj3B,KAAKmmD,cACPnmD,KAAKyuB,KAAK,WAAWq/B,aAGrB9tD,KAAKyuB,KAAK,WAAWq/B,QAAQ9tD,KAAK83B,eAAegnB,SAQrD57C,EAAQgR,UAAU+3C,OAAS,SAAUpiD,GACnC,GAAIk4B,GAAU/hC,KAAKqtD,YAAYxjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAKymD,gBAAkB1kB,EACvB/hC,KAAK0uD,WAAW3sB,IASlB7+B,EAAQgR,UAAUg4C,aAAe,SAAUriD,GACzC,GAAIk4B,GAAU/hC,KAAKqtD,YAAYxjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAK2uD,iBAAiB5sB,IAQxB7+B,EAAQgR,UAAUisB,QAAU,SAAUt2B,GACpC,GAAIk4B,GAAU/hC,KAAKqtD,YAAYxjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAKymD,gBAAkB1kB,EACvB/hC,KAAK4uD,cAAc7sB,IAQrB7+B,EAAQgR,UAAUm4C,WAAa,SAAUxiD,GACvC,GAAIk4B,GAAU/hC,KAAKqtD,YAAYxjD,EAAM2uB,QAAQzL,OAC7C/sB,MAAK6uD,iBAAiB9sB,IAQxB7+B,EAAQgR,UAAUosB,SAAW,SAAUz2B,GACrC,GAAIk4B,GAAU/hC,KAAKqtD,YAAYxjD,EAAM2uB,QAAQzL,OAE7C/sB,MAAK4qC,KAAK0iB,SAAU,EACd,SAAWttD,MAAKgsD,QACpBhsD,KAAKgsD,MAAMznD,MAAQ,EAIrB,IAAIA,GAAQvE,KAAKgsD,MAAMznD,MAAQsF,EAAM2uB,QAAQj0B,KAC7CvE,MAAK8uD,MAAMvqD,EAAOw9B,IAUpB7+B,EAAQgR,UAAU46C,MAAQ,SAASvqD,EAAOw9B,GACxC,GAA+B,GAA3B/hC,KAAKikD,UAAUtkB,SAAkB,CACnC,GAAIovB,GAAW/uD,KAAKutD,WACR,MAARhpD,IACFA,EAAQ,MAENA,EAAQ,KACVA,EAAQ,GAGV,IAAIyqD,GAAsB,IACRnoD,UAAd7G,KAAK4qC,MACmB,GAAtB5qC,KAAK4qC,KAAK5J,WACZguB,EAAsBhvD,KAAKivD,YAAYjvD,KAAK4qC,KAAK7I,SAIrD,IAAItjB,GAAcze,KAAK2tD,kBAEnBuB,EAAY3qD,EAAQwqD,EACpBI,GAAM,EAAID,GAAantB,EAAQvvB,EAAIiM,EAAYjM,EAAI08C,EACnDE,GAAM,EAAIF,GAAantB,EAAQtvB,EAAIgM,EAAYhM,EAAIy8C,CASvD,IAPAlvD,KAAK0mD,YAAcl0C,EAAMxS,KAAKquD,qBAAqBtsB,EAAQvvB,GACxCC,EAAMzS,KAAKuuD,qBAAqBxsB,EAAQtvB,IAE3DzS,KAAKie,UAAU1Z,GACfvE,KAAK8lD,gBAAgBqJ,EAAIC,GACzBpvD,KAAKqvD,wBAEsB,MAAvBL,EAA6B,CAC/B,GAAIM,GAAuBtvD,KAAKuvD,YAAYP,EAC5ChvD,MAAK4qC,KAAK7I,QAAQvvB,EAAI88C,EAAqB98C,EAC3CxS,KAAK4qC,KAAK7I,QAAQtvB,EAAI68C,EAAqB78C,EAY7C,MATAzS,MAAKi3B,UAEU1yB,EAAXwqD,EACF/uD,KAAKyuB,KAAK,QAASyO,UAAU,MAG7Bl9B,KAAKyuB,KAAK,QAASyO,UAAU,MAGxB34B,IAYXrB,EAAQgR,UAAUksB,cAAgB,SAASv2B,GAEzC,GAAIylB,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAW,IAChB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAO,GAMpBF,EAAO,CAGT,GAAI/qB,GAAQvE,KAAKutD,YACbrrB,EAAO5S,EAAQ,EACP,GAARA,IACF4S,GAAe,EAAIA,GAErB39B,GAAU,EAAI29B,CAGd,IAAI1J,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAU/hC,KAAKqtD,YAAY70B,EAAQzL,OAGvC/sB,MAAK8uD,MAAMvqD,EAAOw9B,GAIpBl4B,EAAMD,kBASR1G,EAAQgR,UAAUi4C,kBAAoB,SAAUtiD,GAC9C,GAAI2uB,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAU/hC,KAAKqtD,YAAY70B,EAAQzL,QACnCyiC,GAAe,CAsBnB,IAnBmB3oD,SAAf7G,KAAKyvD,QACHzvD,KAAKyvD,MAAM/1B,UAAW,GACxB15B,KAAK0vD,gBAAgB3tB,GAInB/hC,KAAKyvD,MAAM/1B,UAAW,IACxB81B,GAAe,EACfxvD,KAAKyvD,MAAME,YAAY5tB,EAAQvvB,EAAI,EAAEuvB,EAAQtvB,EAAI,GACjDzS,KAAKyvD,MAAMxoB,SAK6B,GAAxCjnC,KAAKikD,UAAUvB,SAASE,cAA4D,GAAnC5iD,KAAKikD,UAAUvB,SAASvzC,SAC3EnP,KAAKsgB,MAAMuX,QAIT23B,KAAiB,EAAO,CAC1B,GAAIt6C,GAAKlV,KACL4vD,EAAY,WACd16C,EAAG26C,gBAAgB9tB,GAEjB/hC,MAAK8vD,YACPz8B,cAAcrzB,KAAK8vD,YAEhB9vD,KAAK4qC,KAAK5J,WACbhhC,KAAK8vD,WAAav1C,WAAWq1C,EAAW5vD,KAAKikD,UAAU78B,QAAQ3N,QAOnE,GAA4B,GAAxBzZ,KAAKikD,UAAUj3C,MAAe,CAEhC,IAAK,GAAI+iD,KAAU/vD,MAAKmkD,SAASlE,MAC3BjgD,KAAKmkD,SAASlE,MAAM95C,eAAe4pD,KACrC/vD,KAAKmkD,SAASlE,MAAM8P,GAAQ/iD,OAAQ,QAC7BhN,MAAKmkD,SAASlE,MAAM8P,GAK/B,IAAIhsC,GAAM/jB,KAAK0tD,WAAW3rB,EACf,OAAPhe,IACFA,EAAM/jB,KAAKgwD,WAAWjuB,IAEb,MAAPhe,GACF/jB,KAAKiwD,aAAalsC,EAIpB,KAAK,GAAI6kC,KAAU5oD,MAAKmkD,SAASrF,MAC3B9+C,KAAKmkD,SAASrF,MAAM34C,eAAeyiD,KACjC7kC,YAAexgB,IAAQwgB,EAAI1jB,IAAMuoD,GAAU7kC,YAAe3gB,IAAe,MAAP2gB,KACpE/jB,KAAKkwD,YAAYlwD,KAAKmkD,SAASrF,MAAM8J,UAC9B5oD,MAAKmkD,SAASrF,MAAM8J,GAIjC5oD,MAAKyiB,WAYTvf,EAAQgR,UAAU27C,gBAAkB,SAAU9tB,GAC5C,GAOI1hC,GAPA0jB,GACFlc,KAAQ7H,KAAKquD,qBAAqBtsB,EAAQvvB,GAC1CvK,IAAQjI,KAAKuuD,qBAAqBxsB,EAAQtvB,GAC1C4V,MAAQroB,KAAKquD,qBAAqBtsB,EAAQvvB,GAC1C8R,OAAQtkB,KAAKuuD,qBAAqBxsB,EAAQtvB,IAIxC09C,EAAuCtpD,SAAlB7G,KAAKowD,SAAyB,GAAKpwD,KAAKowD,SAAS/vD,GACtEgwD,GAAkB,EAClBC,EAAY,MAEhB,IAAqBzpD,QAAjB7G,KAAKowD,SAAuB,CAE9B,GAAItR,GAAQ9+C,KAAK8+C,MACbyR,IACJ,KAAKlwD,IAAMy+C,GACT,GAAIA,EAAM34C,eAAe9F,GAAK,CAC5B,GAAIioD,GAAOxJ,EAAMz+C,EACbioD,GAAKkI,kBAAkBzsC,IACDld,SAApByhD,EAAKmI,YACPF,EAAiBhoD,KAAKlI,GAM1BkwD,EAAiBvqD,OAAS,IAG5BhG,KAAKowD,SAAWpwD,KAAK8+C,MAAMyR,EAAiBA,EAAiBvqD,OAAS,IAEtEqqD,GAAkB,GAItB,GAAsBxpD,SAAlB7G,KAAKowD,UAA6C,GAAnBC,EAA0B,CAE3D,GAAIpQ,GAAQjgD,KAAKigD,MACbyQ,IACJ,KAAKrwD,IAAM4/C,GACT,GAAIA,EAAM95C,eAAe9F,GAAK,CAC5B,GAAIswD,GAAO1Q,EAAM5/C,EACbswD,GAAKC,WAAkC/pD,SAApB8pD,EAAKF,YACxBE,EAAKH,kBAAkBzsC,IACzB2sC,EAAiBnoD,KAAKlI,GAKxBqwD,EAAiB1qD,OAAS,IAC5BhG,KAAKowD,SAAWpwD,KAAKigD,MAAMyQ,EAAiBA,EAAiB1qD,OAAS,IACtEsqD,EAAY,QAIZtwD,KAAKowD,SAEHpwD,KAAKowD,SAAS/vD,IAAM8vD,IACHtpD,SAAf7G,KAAKyvD,QACPzvD,KAAKyvD,MAAQ,GAAIjsD,GAAMxD,KAAKsgB,MAAOtgB,KAAKikD,UAAU78B,UAGpDpnB,KAAKyvD,MAAMoB,gBAAkBP,EAC7BtwD,KAAKyvD,MAAMqB,cAAgB9wD,KAAKowD,SAAS/vD,GAKzCL,KAAKyvD,MAAME,YAAY5tB,EAAQvvB,EAAI,EAAGuvB,EAAQtvB,EAAI,GAClDzS,KAAKyvD,MAAMsB,QAAQ/wD,KAAKowD,SAASK,YACjCzwD,KAAKyvD,MAAMxoB,QAITjnC,KAAKyvD,OACPzvD,KAAKyvD,MAAMzoB,QAYjB9jC,EAAQgR,UAAUw7C,gBAAkB,SAAU3tB,GAC5C,GAAIivB,IACFnpD,KAAQ7H,KAAKquD,qBAAqBtsB,EAAQvvB,GAC1CvK,IAAQjI,KAAKuuD,qBAAqBxsB,EAAQtvB,GAC1C4V,MAAQroB,KAAKquD,qBAAqBtsB,EAAQvvB,GAC1C8R,OAAQtkB,KAAKuuD,qBAAqBxsB,EAAQtvB,IAGxCw+C,GAAa,CACjB,IAAkC,QAA9BjxD,KAAKyvD,MAAMoB,iBAEb,GADAI,EAAajxD,KAAK8+C,MAAM9+C,KAAKyvD,MAAMqB,eAAeN,kBAAkBQ,GAChEC,KAAe,EAAM,CACvB,GAAIC,GAAWlxD,KAAK0tD,WAAW3rB,EAC/BkvB,GAAaC,EAAS7wD,IAAML,KAAKyvD,MAAMqB,mBAIR,QAA7B9wD,KAAK0tD,WAAW3rB,KAClBkvB,EAAajxD,KAAKigD,MAAMjgD,KAAKyvD,MAAMqB,eAAeN,kBAAkBQ,GAKpEC,MAAe,IACjBjxD,KAAKowD,SAAWvpD,OAChB7G,KAAKyvD,MAAMzoB,SAYf9jC,EAAQgR,UAAUyR,QAAU,SAASrS,EAAOC,GAC1C,GAAI49C,IAAY,EACZC,EAAWpxD,KAAKsgB,MAAMC,OAAOjN,MAC7B+9C,EAAYrxD,KAAKsgB,MAAMC,OAAOhN,MAC9BD,IAAStT,KAAKikD,UAAU3wC,OAASC,GAAUvT,KAAKikD,UAAU1wC,QAAUvT,KAAKsgB,MAAM5S,MAAM4F,OAASA,GAAStT,KAAKsgB,MAAM5S,MAAM6F,QAAUA,GACpIvT,KAAKsgB,MAAM5S,MAAM4F,MAAQA,EACzBtT,KAAKsgB,MAAM5S,MAAM6F,OAASA,EAE1BvT,KAAKsgB,MAAMC,OAAO7S,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMC,OAAO7S,MAAM6F,OAAS,OAEjCvT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKkkD,WAC/DlkD,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKkkD,WAEjElkD,KAAKikD,UAAU3wC,MAAQA,EACvBtT,KAAKikD,UAAU1wC,OAASA,EAExB49C,GAAY,IAMRnxD,KAAKsgB,MAAMC,OAAOjN,OAAStT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKkkD,aAClElkD,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKkkD,WAC/DiN,GAAY,GAEVnxD,KAAKsgB,MAAMC,OAAOhN,QAAUvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKkkD,aACpElkD,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKkkD,WACjEiN,GAAY,IAIC,GAAbA,GACFnxD,KAAKyuB,KAAK,UAAWnb,MAAMtT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKkkD,WAAW3wC,OAAOvT,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKkkD,WAAYkN,SAAUA,EAAWpxD,KAAKkkD,WAAYmN,UAAWA,EAAYrxD,KAAKkkD,cAS9LhhD,EAAQgR,UAAUi2C,UAAY,SAASrL,GACrC,GAAIwS,GAAetxD,KAAK4mD,SAExB,IAAI9H,YAAiBj+C,IAAWi+C,YAAiBh+C,GAC/Cd,KAAK4mD,UAAY9H,MAEd,IAAIx4C,MAAMC,QAAQu4C,GACrB9+C,KAAK4mD,UAAY,GAAI/lD,GACrBb,KAAK4mD,UAAU5yC,IAAI8qC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAIp4C,WAAU,4BAHpB1G,MAAK4mD,UAAY,GAAI/lD,GAgBvB,GAVIywD,GAEF3wD,EAAKiI,QAAQ5I,KAAK8mD,eAAgB,SAAUj+C,EAAUgB,GACpDynD,EAAa78C,IAAI5K,EAAOhB,KAK5B7I,KAAK8+C,SAED9+C,KAAK4mD,UAAW,CAElB,GAAI1xC,GAAKlV,IACTW,GAAKiI,QAAQ5I,KAAK8mD,eAAgB,SAAUj+C,EAAUgB,GACpDqL,EAAG0xC,UAAUtyC,GAAGzK,EAAOhB,IAIzB,IAAIqN,GAAMlW,KAAK4mD,UAAUhwC,QACzB5W,MAAK+mD,UAAU7wC,GAEjBlW,KAAKuxD,oBAQPruD,EAAQgR,UAAU6yC,UAAY,SAAS7wC,GAGrC,IAAK,GAFD7V,GACAwT,EAAU7T,KAAK4mD,UAAUhzC,UAAY,KAChC/N,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9CxF,EAAK6V,EAAIrQ,EACT,IAAI4N,GAAOzT,KAAK4mD,UAAU3wC,IAAI5V,EAC1BwT,KACFJ,EAAKpT,GAAKoT,EAAKI,GAGjB,IAAIy0C,GAAO,GAAI/kD,GAAKkQ,EAAMzT,KAAKmlD,OAAQnlD,KAAK+0B,OAAQ/0B,KAAKikD,UAEzD,IADAjkD,KAAK8+C,MAAMz+C,GAAMioD,IACG,GAAfA,EAAK2F,QAAkC,GAAf3F,EAAK4F,QAAgC,OAAX5F,EAAK91C,GAAyB,OAAX81C,EAAK71C,GAAa,CAC1F,GAAI6Z,GAAS,EAASpW,EAAIlQ,OAAS,GAC/BwrD,EAAQ,EAAIhtD,KAAKgoB,GAAKhoB,KAAKiB,QACZ,IAAf6iD,EAAK2F,SAAkB3F,EAAK91C,EAAI8Z,EAAS9nB,KAAK+a,IAAIiyC,IACnC,GAAflJ,EAAK4F,SAAkB5F,EAAK71C,EAAI6Z,EAAS9nB,KAAK4a,IAAIoyC,IAExDxxD,KAAKsnD,QAAS,EAGhBtnD,KAAKypD,uBAC4C,GAA7CzpD,KAAKikD,UAAUlB,mBAAmB5zC,SAAwC,GAArBnP,KAAKu+C,eAC5Dv+C,KAAKsqD,eACLtqD,KAAKwnD,4BAEPxnD,KAAKyxD,0BACLzxD,KAAK0xD,kBACL1xD,KAAK2xD,kBAAkB3xD,KAAK8+C,OAC5B9+C,KAAK4xD,gBAQP1uD,EAAQgR,UAAU8yC,aAAe,SAAS9wC,GAIxC,IAAK,GAHD0wC,GAAY5mD,KAAK4mD,UAAU3wC,IAAIC,GAC/B4oC,EAAQ9+C,KAAK8+C,MAERj5C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GACTyiD,EAAOxJ,EAAMz+C,GACboT,EAAOmzC,EAAU/gD,EACjByiD,GAEFA,EAAKuJ,cAAcp+C,EAAMzT,KAAKikD,YAI9BqE,EAAO,GAAI/kD,GAAKuuD,WAAY9xD,KAAKmlD,OAAQnlD,KAAK+0B,OAAQ/0B,KAAKikD,WAC3DnF,EAAMz+C,GAAMioD,GAGhBtoD,KAAKsnD,QAAS,EACmC,GAA7CtnD,KAAKikD,UAAUlB,mBAAmB5zC,SAAwC,GAArBnP,KAAKu+C,eAC5Dv+C,KAAKsqD,eACLtqD,KAAKwnD,4BAEPxnD,KAAKypD,uBACLzpD,KAAK2xD,kBAAkB7S,GACvB9+C,KAAKsrD,wBAIPpoD,EAAQgR,UAAUo3C,qBAAuB,WACvC,IAAK,GAAIyE,KAAU/vD,MAAKigD,MACtBjgD,KAAKigD,MAAM8P,GAAQgC,YAAa,GASpC7uD,EAAQgR,UAAU+yC,aAAe,SAAS/wC,GAIxC,IAAK,GAHD4oC,GAAQ9+C,KAAK8+C,MAGRj5C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACDgB,SAApC7G,KAAKguD,aAAalP,MAAM5oC,EAAIrQ,MAC9B7F,KAAK8+C,MAAM5oC,EAAIrQ,IAAI+gC,WACnB5mC,KAAKgyD,qBAAqBhyD,KAAK8+C,MAAM5oC,EAAIrQ,KAI7C,KAAK,GAAIA,GAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,SACNi5C,GAAMz+C,GAKfL,KAAKypD,uBAC4C,GAA7CzpD,KAAKikD,UAAUlB,mBAAmB5zC,SAAwC,GAArBnP,KAAKu+C,eAC5Dv+C,KAAKsqD,eACLtqD,KAAKwnD,4BAEPxnD,KAAKyxD,0BACLzxD,KAAK0xD,kBACL1xD,KAAKuxD,mBACLvxD,KAAK2xD,kBAAkB7S,IASzB57C,EAAQgR,UAAUk2C,UAAY,SAASnK,GACrC,GAAIgS,GAAejyD,KAAK6mD,SAExB,IAAI5G,YAAiBp/C,IAAWo/C,YAAiBn/C,GAC/Cd,KAAK6mD,UAAY5G,MAEd,IAAI35C,MAAMC,QAAQ05C,GACrBjgD,KAAK6mD,UAAY,GAAIhmD,GACrBb,KAAK6mD,UAAU7yC,IAAIisC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAIv5C,WAAU,4BAHpB1G,MAAK6mD,UAAY,GAAIhmD,GAgBvB,GAVIoxD,GAEFtxD,EAAKiI,QAAQ5I,KAAKknD,eAAgB,SAAUr+C,EAAUgB,GACpDooD,EAAax9C,IAAI5K,EAAOhB,KAK5B7I,KAAKigD,SAEDjgD,KAAK6mD,UAAW,CAElB,GAAI3xC,GAAKlV,IACTW,GAAKiI,QAAQ5I,KAAKknD,eAAgB,SAAUr+C,EAAUgB,GACpDqL,EAAG2xC,UAAUvyC,GAAGzK,EAAOhB,IAIzB,IAAIqN,GAAMlW,KAAK6mD,UAAUjwC,QACzB5W,MAAKmnD,UAAUjxC,GAGjBlW,KAAK0xD,mBAQPxuD,EAAQgR,UAAUizC,UAAY,SAAUjxC,GAKtC,IAAK,GAJD+pC,GAAQjgD,KAAKigD,MACb4G,EAAY7mD,KAAK6mD,UACjBhzC,EAAU7T,KAAK6mD,UAAUjzC,SAEpB/N,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GAETqsD,EAAUjS,EAAM5/C,EAChB6xD,IACFA,EAAQC,YAGV,IAAI1+C,GAAOozC,EAAU5wC,IAAI5V,GAAK+xD,iBAAoB,GAC9Cv+C,KACFJ,EAAKpT,GAAKoT,EAAKI,IAEjBosC,EAAM5/C,GAAM,GAAI+C,GAAKqQ,EAAMzT,KAAMA,KAAKikD,WAExCjkD,KAAKsnD,QAAS,EACdtnD,KAAK2xD,kBAAkB1R,GACvBjgD,KAAKqyD,qBACLryD,KAAKyxD,0BAC4C,GAA7CzxD,KAAKikD,UAAUlB,mBAAmB5zC,SAAwC,GAArBnP,KAAKu+C,eAC5Dv+C,KAAKsqD,eACLtqD,KAAKwnD,6BASTtkD,EAAQgR,UAAUkzC,aAAe,SAAUlxC,GAGzC,IAAK,GAFD+pC,GAAQjgD,KAAKigD,MACb4G,EAAY7mD,KAAK6mD,UACZhhD,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GAET4N,EAAOozC,EAAU5wC,IAAI5V,GACrBswD,EAAO1Q,EAAM5/C,EACbswD,IAEFA,EAAKwB,aACLxB,EAAKkB,cAAcp+C,EAAMzT,KAAKikD,WAC9B0M,EAAKhS,YAILgS,EAAO,GAAIvtD,GAAKqQ,EAAMzT,KAAMA,KAAKikD,WACjCjkD,KAAKigD,MAAM5/C,GAAMswD,GAIrB3wD,KAAKqyD,qBAC4C,GAA7CryD,KAAKikD,UAAUlB,mBAAmB5zC,SAAwC,GAArBnP,KAAKu+C,eAC5Dv+C,KAAKsqD,eACLtqD,KAAKwnD,4BAEPxnD,KAAKsnD,QAAS,EACdtnD,KAAK2xD,kBAAkB1R,IAQzB/8C,EAAQgR,UAAUmzC,aAAe,SAAUnxC,GAIzC,IAAK,GAHD+pC,GAAQjgD,KAAKigD,MAGRp6C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACDgB,SAApC7G,KAAKguD,aAAa/N,MAAM/pC,EAAIrQ,MAC9Bo6C,EAAM/pC,EAAIrQ,IAAI+gC,WACd5mC,KAAKgyD,qBAAqB/R,EAAM/pC,EAAIrQ,KAIxC,KAAK,GAAIA,GAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIxF,GAAK6V,EAAIrQ,GACT8qD,EAAO1Q,EAAM5/C,EACbswD,KACc,MAAZA,EAAK2B,WACAtyD,MAAKuyD,QAAiB,QAAS,MAAE5B,EAAK2B,IAAIjyD,IAEnDswD,EAAKwB,mBACElS,GAAM5/C,IAIjBL,KAAKsnD,QAAS,EACdtnD,KAAK2xD,kBAAkB1R,GAC0B,GAA7CjgD,KAAKikD,UAAUlB,mBAAmB5zC,SAAwC,GAArBnP,KAAKu+C,eAC5Dv+C,KAAKsqD,eACLtqD,KAAKwnD,4BAEPxnD,KAAKyxD,2BAOPvuD,EAAQgR,UAAUw9C,gBAAkB,WAClC,GAAIrxD,GACAy+C,EAAQ9+C,KAAK8+C,MACbmB,EAAQjgD,KAAKigD,KACjB,KAAK5/C,IAAMy+C,GACLA,EAAM34C,eAAe9F,KACvBy+C,EAAMz+C,GAAI4/C,SACVnB,EAAMz+C,GAAImyD,gBAId,KAAKnyD,IAAM4/C,GACT,GAAIA,EAAM95C,eAAe9F,GAAK,CAC5B,GAAIswD,GAAO1Q,EAAM5/C,EACjBswD,GAAKxmC,KAAO,KACZwmC,EAAKvmC,GAAK,KACVumC,EAAKhS,YAaXz7C,EAAQgR,UAAUy9C,kBAAoB,SAAS5tC,GAC7C,GAAI1jB,GAGA8c,EAAWtW,OACXuW,EAAWvW,OACX4rD,EAAa,CACjB,KAAKpyD,IAAM0jB,GACT,GAAIA,EAAI5d,eAAe9F,GAAK,CAC1B,GAAIiE,GAAQyf,EAAI1jB,GAAIsV,UACN9O,UAAVvC,IACF6Y,EAAyBtW,SAAbsW,EAA0B7Y,EAAQE,KAAKL,IAAIG,EAAO6Y,GAC9DC,EAAyBvW,SAAbuW,EAA0B9Y,EAAQE,KAAKJ,IAAIE,EAAO8Y,GAC9Dq1C,GAAcnuD,GAMpB,GAAiBuC,SAAbsW,GAAuCtW,SAAbuW,EAC5B,IAAK/c,IAAM0jB,GACLA,EAAI5d,eAAe9F,IACrB0jB,EAAI1jB,GAAIqyD,cAAcv1C,EAAUC,EAAUq1C,IAUlDvvD,EAAQgR,UAAUuO,OAAS,WACzBziB,KAAK2lB,QAAQ3lB,KAAKikD,UAAU3wC,MAAOtT,KAAKikD,UAAU1wC,QAClDvT,KAAKi3B,WAQP/zB,EAAQgR,UAAUmxC,eAAiB,SAAS3rB,GACtC15B,KAAKklD,mBAAoB,IAC3BllD,KAAKklD,iBAAkB,EACnBllD,KAAK+nD,mBAAoB,EAC3BjgD,OAAOyS,WAAWva,KAAKi3B,QAAQvB,KAAK11B,KAAM05B,GAAQ,GAGlD5xB,OAAO6qD,sBAAsB3yD,KAAKi3B,QAAQvB,KAAK11B,KAAM05B,GAAQ,MAKnEx2B,EAAQgR,UAAU+iB,QAAU,SAASyC,GACpB7yB,SAAX6yB,IACFA,GAAS,GAEX15B,KAAKklD,iBAAkB,CACvB,IAAIn9B,GAAM/nB,KAAKsgB,MAAMC,OAAOyH,WAAW,KAEvCD,GAAI+jC,aAAa9rD,KAAKkkD,WAAY,EAAG,EAAGlkD,KAAKkkD,WAAY,EAAG,EAG5D,IAAI0O,GAAI5yD,KAAKsgB,MAAMC,OAAOC,YACtBlU,EAAItM,KAAKsgB,MAAMC,OAAOsF,YAC1BkC,GAAIE,UAAU,EAAG,EAAG2qC,EAAGtmD,GAGvByb,EAAI8qC,OACJ9qC,EAAI+qC,UAAU9yD,KAAKye,YAAYjM,EAAGxS,KAAKye,YAAYhM,GACnDsV,EAAIxjB,MAAMvE,KAAKuE,MAAOvE,KAAKuE,OAE3BvE,KAAKumD,eACH/zC,EAAKxS,KAAKquD,qBAAqB,GAC/B57C,EAAKzS,KAAKuuD,qBAAqB,IAEjCvuD,KAAKwmD,mBACHh0C,EAAKxS,KAAKquD,qBAAqBruD,KAAKsgB,MAAMC,OAAOC,aACjD/N,EAAKzS,KAAKuuD,qBAAqBvuD,KAAKsgB,MAAMC,OAAOsF,eAG/C6T,KAAW,IACb15B,KAAK+yD,gBAAgB,sBAAuBhrC,IAClB,GAAtB/nB,KAAK4qC,KAAK5J,UAA4Cn6B,SAAvB7G,KAAK4qC,KAAK5J,UAA4D,GAAlChhC,KAAKikD,UAAUH,kBACpF9jD,KAAK+yD,gBAAgB,aAAchrC,KAIb,GAAtB/nB,KAAK4qC,KAAK5J,UAA4Cn6B,SAAvB7G,KAAK4qC,KAAK5J,UAA4D,GAAlChhC,KAAKikD,UAAUF,kBACpF/jD,KAAK+yD,gBAAgB,aAAahrC,GAAI,GAGpC2R,KAAW,GACkB,GAA3B15B,KAAKokD,oBACPpkD,KAAK+yD,gBAAgB,oBAAqBhrC,GAQ9CA,EAAIirC,UAEAt5B,KAAW,GACb3R,EAAIE,UAAU,EAAG,EAAG2qC,EAAGtmD,IAU3BpJ,EAAQgR,UAAU4xC,gBAAkB,SAASmN,EAASC,GAC3BrsD,SAArB7G,KAAKye,cACPze,KAAKye,aACHjM,EAAG,EACHC,EAAG,IAIS5L,SAAZosD,IACFjzD,KAAKye,YAAYjM,EAAIygD,GAEPpsD,SAAZqsD,IACFlzD,KAAKye,YAAYhM,EAAIygD,GAGvBlzD,KAAKyuB,KAAK,gBAQZvrB,EAAQgR,UAAUy5C,gBAAkB,WAClC,OACEn7C,EAAGxS,KAAKye,YAAYjM,EACpBC,EAAGzS,KAAKye,YAAYhM,IASxBvP,EAAQgR,UAAU+J,UAAY,SAAS1Z,GACrCvE,KAAKuE,MAAQA,GAQfrB,EAAQgR,UAAUq5C,UAAY,WAC5B,MAAOvtD,MAAKuE,OAUdrB,EAAQgR,UAAUm6C,qBAAuB,SAAS77C,GAChD,OAAQA,EAAIxS,KAAKye,YAAYjM,GAAKxS,KAAKuE,OAUzCrB,EAAQgR,UAAUo6C,qBAAuB,SAAS97C,GAChD,MAAOA,GAAIxS,KAAKuE,MAAQvE,KAAKye,YAAYjM,GAU3CtP,EAAQgR,UAAUq6C,qBAAuB,SAAS97C,GAChD,OAAQA,EAAIzS,KAAKye,YAAYhM,GAAKzS,KAAKuE,OAUzCrB,EAAQgR,UAAUs6C,qBAAuB,SAAS/7C,GAChD,MAAOA,GAAIzS,KAAKuE,MAAQvE,KAAKye,YAAYhM,GAU3CvP,EAAQgR,UAAUq7C,YAAc,SAAUhpC,GACxC,OAAQ/T,EAAGxS,KAAKsuD,qBAAqB/nC,EAAI/T,GAAIC,EAAGzS,KAAKwuD,qBAAqBjoC,EAAI9T,KAShFvP,EAAQgR,UAAU+6C,YAAc,SAAU1oC,GACxC,OAAQ/T,EAAGxS,KAAKquD,qBAAqB9nC,EAAI/T,GAAIC,EAAGzS,KAAKuuD,qBAAqBhoC,EAAI9T,KAUhFvP,EAAQgR,UAAUi/C,WAAa,SAASprC,EAAIqrC,GACvBvsD,SAAfusD,IACFA,GAAa,EAIf,IAAItU,GAAQ9+C,KAAK8+C,MACbvY,IAEJ,KAAK,GAAIlmC,KAAMy+C,GACTA,EAAM34C,eAAe9F,KACvBy+C,EAAMz+C,GAAIgzD,eAAerzD,KAAKuE,MAAMvE,KAAKumD,cAAcvmD,KAAKwmD,mBACxD1H,EAAMz+C,GAAIutD,aACZrnB,EAASh+B,KAAKlI,IAGVy+C,EAAMz+C,GAAIizD,UAAYF,IACxBtU,EAAMz+C,GAAI4wC,KAAKlpB,GAOvB,KAAK,GAAIxb,GAAI,EAAGgnD,EAAOhtB,EAASvgC,OAAYutD,EAAJhnD,EAAUA,KAC5CuyC,EAAMvY,EAASh6B,IAAI+mD,UAAYF,IACjCtU,EAAMvY,EAASh6B,IAAI0kC,KAAKlpB,IAW9B7kB,EAAQgR,UAAUs/C,WAAa,SAASzrC,GACtC,GAAIk4B,GAAQjgD,KAAKigD,KACjB,KAAK,GAAI5/C,KAAM4/C,GACb,GAAIA,EAAM95C,eAAe9F,GAAK,CAC5B,GAAIswD,GAAO1Q,EAAM5/C,EACjBswD,GAAK1rB,SAASjlC,KAAKuE,OACfosD,EAAKC,WACP3Q,EAAM5/C,GAAI4wC,KAAKlpB,KAYvB7kB,EAAQgR,UAAUu/C,kBAAoB,SAAS1rC,GAC7C,GAAIk4B,GAAQjgD,KAAKigD,KACjB,KAAK,GAAI5/C,KAAM4/C,GACTA,EAAM95C,eAAe9F,IACvB4/C,EAAM5/C,GAAIozD,kBAAkB1rC,IASlC7kB,EAAQgR,UAAUq2C,WAAa,WACgB,GAAzCvqD,KAAKikD,UAAUd,wBACjBnjD,KAAK0zD,qBAKP,KADA,GAAI37C,GAAQ,EACL/X,KAAKsnD,QAAUvvC,EAAQ/X,KAAKikD,UAAUP,yBAC3C1jD,KAAK2zD,eACL57C,GAI0C,IAAxC/X,KAAKikD,UAAUN,uBACjB3jD,KAAKynD,YAAYl3C,SAAS,IAAI,GAAO,GAGM,GAAzCvQ,KAAKikD,UAAUd,wBACjBnjD,KAAK4zD,sBAGP5zD,KAAKyuB,KAAK,gCASZvrB,EAAQgR,UAAUw/C,oBAAsB,WACtC,GAAI5U,GAAQ9+C,KAAK8+C,KACjB,KAAK,GAAIz+C,KAAMy+C,GACTA,EAAM34C,eAAe9F,IACJ,MAAfy+C,EAAMz+C,GAAImS,GAA4B,MAAfssC,EAAMz+C,GAAIoS,IACnCqsC,EAAMz+C,GAAIwzD,UAAUrhD,EAAIssC,EAAMz+C,GAAI4tD,OAClCnP,EAAMz+C,GAAIwzD,UAAUphD,EAAIqsC,EAAMz+C,GAAI6tD,OAClCpP,EAAMz+C,GAAI4tD,QAAS,EACnBnP,EAAMz+C,GAAI6tD,QAAS,IAW3BhrD,EAAQgR,UAAU0/C,oBAAsB,WACtC,GAAI9U,GAAQ9+C,KAAK8+C,KACjB,KAAK,GAAIz+C,KAAMy+C,GACTA,EAAM34C,eAAe9F,IACM,MAAzBy+C,EAAMz+C,GAAIwzD,UAAUrhD,IACtBssC,EAAMz+C,GAAI4tD,OAASnP,EAAMz+C,GAAIwzD,UAAUrhD,EACvCssC,EAAMz+C,GAAI6tD,OAASpP,EAAMz+C,GAAIwzD,UAAUphD,IAa/CvP,EAAQgR,UAAU4/C,UAAY,SAASC,GACrC,GAAIjV,GAAQ9+C,KAAK8+C,KACjB,KAAK,GAAIz+C,KAAMy+C,GACb,GAAkBj4C,SAAdi4C,EAAMz+C,IACwB,GAA5By+C,EAAMz+C,GAAI2zD,SAASD,GACrB,OAAO,CAIb,QAAO,GAUT7wD,EAAQgR,UAAU+/C,mBAAqB,WACrC,GAEIrL,GAFAx1B,EAAWpzB,KAAKs+C,wBAChBQ,EAAQ9+C,KAAK8+C,MAEboV,GAAe,CAEnB,IAAIl0D,KAAKikD,UAAUV,YAAc,EAC/B,IAAKqF,IAAU9J,GACTA,EAAM34C,eAAeyiD,KACvB9J,EAAM8J,GAAQuL,oBAAoB/gC,EAAUpzB,KAAKikD,UAAUV,aAC3D2Q,GAAe,OAKnB,KAAKtL,IAAU9J,GACTA,EAAM34C,eAAeyiD,KACvB9J,EAAM8J,GAAQwL,aAAahhC,GAC3B8gC,GAAe,EAKrB,IAAoB,GAAhBA,EAAsB,CACxB,GAAIG,GAAgBr0D,KAAKikD,UAAUT,YAAch/C,KAAKJ,IAAIpE,KAAKuE,MAAM,IACrE,OAAI8vD,GAAgB,GAAIr0D,KAAKikD,UAAUV,aAC9B,EAGAvjD,KAAK8zD,UAAUO,GAG1B,OAAO,GAITnxD,EAAQgR,UAAUogD,oBAAsB,WACtC,GAAIxV,GAAQ9+C,KAAK8+C,KACjB,KAAK,GAAI8J,KAAU9J,GACbA,EAAM34C,eAAeyiD,IACvB9J,EAAM8J,GAAQ2L,kBAKpBrxD,EAAQgR,UAAUsgD,mBAAqB,WACrCx0D,KAAKy0D,sBAAsB,uBACgB,GAAvCz0D,KAAKikD,UAAUb,aAAaj0C,SAA0D,GAAvCnP,KAAKikD,UAAUb,aAAaC,SAC7ErjD,KAAK00D,mBAAmB,wBAS5BxxD,EAAQgR,UAAUy/C,aAAe,WAC/B,IAAK3zD,KAAK+lD,yBACW,GAAf/lD,KAAKsnD,OAAgB,CACvB,GAAIqN,IAAmB,EACnBC,GAAsB,CAE1B50D,MAAKy0D,sBAAsB,8BAC3B,IAAII,GAAa70D,KAAKy0D,sBAAsB,qBACD,IAAvCz0D,KAAKikD,UAAUb,aAAaj0C,SAA0D,GAAvCnP,KAAKikD,UAAUb,aAAaC,UAC7EuR,EAAsB50D,KAAK00D,mBAAmB,sBAIhD,KAAK,GAAI7uD,GAAI,EAAGA,EAAIgvD,EAAW7uD,OAAQH,IACrC8uD,EAAmBE,EAAWhvD,IAAM8uD,CAItC30D,MAAKsnD,OAASqN,GAAoBC,EACf,GAAf50D,KAAKsnD,OACPtnD,KAAKw0D,qBAI4B,GAA7Bx0D,KAAKimD,uBACPjmD,KAAKyuB,KAAK,sBACVzuB,KAAKimD,sBAAuB,GAIhCjmD,KAAK0jD,4BAYXxgD,EAAQgR,UAAU4gD,eAAiB,WAajC,GAXA90D,KAAKunD,MAAQ1gD,OAEe,GAAxB7G,KAAK+nD,iBAEP/nD,KAAKqQ,QAIPrQ,KAAK+0D,oBAGc,GAAf/0D,KAAKsnD,OAAgB,CACvB,GAAI0N,GAAYpwD,KAAKu6B,KACrBn/B,MAAK2zD,cACL,IAAIvV,GAAcx5C,KAAKu6B,MAAQ61B,GAG1Bh1D,KAAKk+C,eAAiBl+C,KAAKm+C,WAAa,EAAIC,GAAsC,GAAvBp+C,KAAKq+C,iBAA0C,GAAfr+C,KAAKsnD,SACnGtnD,KAAK2zD,eAGkB,GAAnB3zD,KAAKm+C,aACPn+C,KAAKq+C,gBAAiB,IAK5B,GAAI4W,GAAkBrwD,KAAKu6B,KAC3Bn/B,MAAKi3B,UACLj3B,KAAKm+C,WAAav5C,KAAKu6B,MAAQ81B,EAEH,GAAxBj1D,KAAK+nD,iBAEP/nD,KAAKqQ,SAIa,mBAAXvI,UACTA,OAAO6qD,sBAAwB7qD,OAAO6qD,uBAAyB7qD,OAAOotD,0BACvCptD,OAAOqtD,6BAA+BrtD,OAAOstD,yBAM9ElyD,EAAQgR,UAAU7D,MAAQ,WAIxB,GAHoC,GAAhCrQ,KAAK+lD,0BACP/lD,KAAKsnD,QAAS,GAEG,GAAftnD,KAAKsnD,QAAqC,GAAnBtnD,KAAKslD,YAAsC,GAAnBtlD,KAAKulD,YAAyC,GAAtBvlD,KAAKwlD,eAAwC,GAAlBxlD,KAAKykD,UACpGzkD,KAAKunD,QAENvnD,KAAKunD,MADqB,GAAxBvnD,KAAK+nD,gBACMjgD,OAAOyS,WAAWva,KAAK80D,eAAep/B,KAAK11B,MAAOA,KAAKk+C,gBAGvDp2C,OAAO6qD,sBAAsB3yD,KAAK80D,eAAep/B,KAAK11B,YAOvE,IAFAA,KAAKqlD,iBAEDrlD,KAAK0jD,wBAA0B,EAAG,CAKpC,GAAIxuC,GAAKlV,KACL6U,GACFwgD,WAAYngD,EAAGwuC,wBAEjB1jD,MAAK0jD,wBAA0B,EAC/B1jD,KAAKimD,sBAAuB,EAC5B1rC,WAAW,WACTrF,EAAGuZ,KAAK,aAAc5Z,IACrB,OAGH7U,MAAK0jD,wBAA0B,GAWrCxgD,EAAQgR,UAAU6gD,kBAAoB,WACpC,GAAuB,GAAnB/0D,KAAKslD,YAAsC,GAAnBtlD,KAAKulD,WAAiB,CAChD,GAAI9mC,GAAcze,KAAK2tD,iBACvB3tD,MAAK8lD,gBAAgBrnC,EAAYjM,EAAExS,KAAKslD,WAAY7mC,EAAYhM,EAAEzS,KAAKulD,YAEzE,GAA0B,GAAtBvlD,KAAKwlD,cAAoB,CAC3B,GAAIz4B,IACFva,EAAGxS,KAAKsgB,MAAMC,OAAOC,YAAc,EACnC/N,EAAGzS,KAAKsgB,MAAMC,OAAOsF,aAAe,EAEtC7lB,MAAK8uD,MAAM9uD,KAAKuE,OAAO,EAAIvE,KAAKwlD,eAAgBz4B,KAQpD7pB,EAAQgR,UAAUohD,iBAAmB,SAASC,GAC9B,GAAVA,GACFv1D,KAAK+lD,yBAA0B,EAC/B/lD,KAAKsnD,QAAS,IAGdtnD,KAAK+lD,yBAA0B,EAC/B/lD,KAAKsnD,QAAS,EACdtnD,KAAKqQ,UAWTnN,EAAQgR,UAAUk3C,uBAAyB,SAASrC,GAIlD,GAHqBliD,SAAjBkiD,IACFA,GAAe,GAE0B,GAAvC/oD,KAAKikD,UAAUb,aAAaj0C,SAA0D,GAAvCnP,KAAKikD,UAAUb,aAAaC,QAAiB,CAC9FrjD,KAAKqyD,oBAEL;IAAK,GAAIzJ,KAAU5oD,MAAKuyD,QAAiB,QAAS,MAC5CvyD,KAAKuyD,QAAiB,QAAS,MAAEpsD,eAAeyiD,IACwB/hD,SAAtE7G,KAAKigD,MAAMjgD,KAAKuyD,QAAiB,QAAS,MAAE3J,GAAQ4M,qBAC/Cx1D,MAAKuyD,QAAiB,QAAS,MAAE3J,OAK3C,CAEH5oD,KAAKuyD,QAAiB,QAAS,QAC/B,KAAK,GAAIxC,KAAU/vD,MAAKigD,MAClBjgD,KAAKigD,MAAM95C,eAAe4pD,KAC5B/vD,KAAKigD,MAAM8P,GAAQuC,IAAM,MAM/BtyD,KAAKyxD,0BACA1I,IACH/oD,KAAKsnD,QAAS,EACdtnD,KAAKqQ,UAWTnN,EAAQgR,UAAUm+C,mBAAqB,WACrC,GAA2C,GAAvCryD,KAAKikD,UAAUb,aAAaj0C,SAA0D,GAAvCnP,KAAKikD,UAAUb,aAAaC,QAC7E,IAAK,GAAI0M,KAAU/vD,MAAKigD,MACtB,GAAIjgD,KAAKigD,MAAM95C,eAAe4pD,GAAS,CACrC,GAAIY,GAAO3wD,KAAKigD,MAAM8P,EACtB,IAAgB,MAAZY,EAAK2B,IAAa,CACpB,GAAI1J,GAAS,UAAU7zC,OAAO47C,EAAKtwD,GACnCL,MAAKuyD,QAAiB,QAAS,MAAE3J,GAAU,GAAIrlD,IACtClD,GAAGuoD,EACF7J,KAAK,EACLG,MAAM,SACNC,MAAM,GACNsW,mBAAmB,SACbz1D,KAAKikD,WACrB0M,EAAK2B,IAAMtyD,KAAKuyD,QAAiB,QAAS,MAAE3J,GAC5C+H,EAAK2B,IAAIkD,aAAe7E,EAAKtwD,GAC7BswD,EAAK+E,wBAYfxyD,EAAQgR,UAAU8pC,wBAA0B,WAC1C,IAAK,GAAI2X,KAAS/N,GACZA,EAAYzhD,eAAewvD,KAC7BzyD,EAAQgR,UAAUyhD,GAAS/N,EAAY+N,KAQ7CzyD,EAAQgR,UAAU0hD,cAAgB,WAChC/6B,QAAQtG,IAAI,mEACZv0B,KAAK61D,kBAMP3yD,EAAQgR,UAAU2hD,eAAiB,WACjC,GAAIC,KACJ,KAAK,GAAIlN,KAAU5oD,MAAK8+C,MACtB,GAAI9+C,KAAK8+C,MAAM34C,eAAeyiD,GAAS,CACrC,GAAIN,GAAOtoD,KAAK8+C,MAAM8J,GAClBmN,GAAkB/1D,KAAK8+C,MAAMmP,OAC7B+H,GAAkBh2D,KAAK8+C,MAAMoP,QAC7BluD,KAAK4mD,UAAUjzC,MAAMi1C,GAAQp2C,GAAKhO,KAAK+pB,MAAM+5B,EAAK91C,IAAMxS,KAAK4mD,UAAUjzC,MAAMi1C,GAAQn2C,GAAKjO,KAAK+pB,MAAM+5B,EAAK71C,KAC5GqjD,EAAUvtD,MAAMlI,GAAGuoD,EAAOp2C,EAAEhO,KAAK+pB,MAAM+5B,EAAK91C,GAAGC,EAAEjO,KAAK+pB,MAAM+5B,EAAK71C,GAAGsjD,eAAeA,EAAeC,eAAeA,IAIvHh2D,KAAK4mD,UAAUhxC,OAAOkgD,IAMxB5yD,EAAQgR,UAAU+hD,aAAe,SAAS//C,GACxC,GAAI4/C,KACJ,IAAYjvD,SAARqP,GACF,GAA0B,GAAtB5P,MAAMC,QAAQ2P,IAChB,IAAK,GAAIrQ,GAAI,EAAGA,EAAIqQ,EAAIlQ,OAAQH,IAC9B,GAA2BgB,SAAvB7G,KAAK8+C,MAAM5oC,EAAIrQ,IAAmB,CACpC,GAAIyiD,GAAOtoD,KAAK8+C,MAAM5oC,EAAIrQ,GAC1BiwD,GAAU5/C,EAAIrQ,KAAO2M,EAAGhO,KAAK+pB,MAAM+5B,EAAK91C,GAAIC,EAAGjO,KAAK+pB,MAAM+5B,EAAK71C,SAKnE,IAAwB5L,SAApB7G,KAAK8+C,MAAM5oC,GAAoB,CACjC,GAAIoyC,GAAOtoD,KAAK8+C,MAAM5oC,EACtB4/C,GAAU5/C,IAAQ1D,EAAGhO,KAAK+pB,MAAM+5B,EAAK91C,GAAIC,EAAGjO,KAAK+pB,MAAM+5B,EAAK71C,SAKhE,KAAK,GAAIm2C,KAAU5oD,MAAK8+C,MACtB,GAAI9+C,KAAK8+C,MAAM34C,eAAeyiD,GAAS,CACrC,GAAIN,GAAOtoD,KAAK8+C,MAAM8J,EACtBkN,GAAUlN,IAAWp2C,EAAGhO,KAAK+pB,MAAM+5B,EAAK91C,GAAIC,EAAGjO,KAAK+pB,MAAM+5B,EAAK71C,IAIrE,MAAOqjD,IAWT5yD,EAAQgR,UAAUgiD,YAAc,SAAUtN,EAAQ15C,GAChD,GAAIlP,KAAK8+C,MAAM34C,eAAeyiD,GAAS,CACrB/hD,SAAZqI,IACFA,KAEF,IAAIinD,IAAgB3jD,EAAGxS,KAAK8+C,MAAM8J,GAAQp2C,EAAGC,EAAGzS,KAAK8+C,MAAM8J,GAAQn2C,EACnEvD,GAAQ0V,SAAWuxC,EACnBjnD,EAAQknD,aAAexN,EAEvB5oD,KAAK6oB,OAAO3Z,OAGZ2rB,SAAQtG,IAAI,iCAWhBrxB,EAAQgR,UAAU2U,OAAS,SAAU3Z,GACnC,MAAgBrI,UAAZqI,OACFA,OAGwBrI,SAAtBqI,EAAQwb,SAAoCxb,EAAQwb,QAAalY,EAAG,EAAGC,EAAG,IACpD5L,SAAtBqI,EAAQwb,OAAOlY,IAA6BtD,EAAQwb,OAAOlY,EAAK,GAC1C3L,SAAtBqI,EAAQwb,OAAOjY,IAA6BvD,EAAQwb,OAAOjY,EAAK,GAC1C5L,SAAtBqI,EAAQ3K,QAAoC2K,EAAQ3K,MAAYvE,KAAKutD,aAC/C1mD,SAAtBqI,EAAQ0V,WAAoC1V,EAAQ0V,SAAY5kB,KAAK2tD,mBAC/C9mD,SAAtBqI,EAAQs6C,YAAoCt6C,EAAQs6C,WAAaj5C,SAAS,IAC1ErB,EAAQs6C,aAAc,IAAsBt6C,EAAQs6C,WAAaj5C,SAAS,IAC1ErB,EAAQs6C,aAAc,IAAsBt6C,EAAQs6C,cACrB3iD,SAA/BqI,EAAQs6C,UAAUj5C,WAA0BrB,EAAQs6C,UAAUj5C,SAAW,KACpC1J,SAArCqI,EAAQs6C,UAAU6M,iBAAgCnnD,EAAQs6C,UAAU6M,eAAiB,qBAEzFr2D,MAAKs2D,YAAYpnD,KAcnBhM,EAAQgR,UAAUoiD,YAAc,SAAUpnD,GACxC,GAAgBrI,SAAZqI,EAEF,YADAA,KAKFlP,MAAKouD,cACiB,GAAlBl/C,EAAQqnD,SACVv2D,KAAK+kD,eAAiB71C,EAAQknD,aAC9Bp2D,KAAKglD,mBAAqB91C,EAAQwb,QAIb,GAAnB1qB,KAAK0kD,YACP1kD,KAAKw2D,kBAAkB,GAGzBx2D,KAAK2kD,YAAc3kD,KAAKutD,YACxBvtD,KAAK6kD,kBAAoB7kD,KAAK2tD,kBAC9B3tD,KAAK4kD,YAAc11C,EAAQ3K,MAI3BvE,KAAKie,UAAUje,KAAK4kD,YACpB,IAAI6R,GAAaz2D,KAAKivD,aAAaz8C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,eAClG6wC,GACFlkD,EAAGikD,EAAWjkD,EAAItD,EAAQ0V,SAASpS,EACnCC,EAAGgkD,EAAWhkD,EAAIvD,EAAQ0V,SAASnS,EAErCzS,MAAK8kD,mBACHtyC,EAAGxS,KAAK6kD,kBAAkBryC,EAAIkkD,EAAmBlkD,EAAIxS,KAAK4kD,YAAc11C,EAAQwb,OAAOlY,EACvFC,EAAGzS,KAAK6kD,kBAAkBpyC,EAAIikD,EAAmBjkD,EAAIzS,KAAK4kD,YAAc11C,EAAQwb,OAAOjY,GAIvD,GAA9BvD,EAAQs6C,UAAUj5C,SACO,MAAvBvQ,KAAK+kD,gBACP/kD,KAAK22D,eAAiB32D,KAAKi3B,QAC3Bj3B,KAAKi3B,QAAUj3B,KAAK42D,gBAGpB52D,KAAKie,UAAUje,KAAK4kD,aACpB5kD,KAAK8lD,gBAAgB9lD,KAAK8kD,kBAAkBtyC,EAAGxS,KAAK8kD,kBAAkBryC,GACtEzS,KAAKi3B,YAIPj3B,KAAKykD,WAAY,EACjBzkD,KAAKukD,eAAiB,GAAKvkD,KAAKi+C,kBAAoB/uC,EAAQs6C,UAAUj5C,SAAW,OAAU,EAAIvQ,KAAKi+C,kBACpGj+C,KAAKwkD,wBAA0Bt1C,EAAQs6C,UAAU6M,eACjDr2D,KAAK22D,eAAiB32D,KAAKi3B,QAC3Bj3B,KAAKi3B,QAAUj3B,KAAKw2D,kBACpBx2D,KAAKi3B,UACLj3B,KAAKqQ,UAQTnN,EAAQgR,UAAU0iD,cAAgB,WAChC,GAAIT,IAAgB3jD,EAAGxS,KAAK8+C,MAAM9+C,KAAK+kD,gBAAgBvyC,EAAGC,EAAGzS,KAAK8+C,MAAM9+C,KAAK+kD,gBAAgBtyC,GACzFgkD,EAAaz2D,KAAKivD,aAAaz8C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,eAClG6wC,GACFlkD,EAAGikD,EAAWjkD,EAAI2jD,EAAa3jD,EAC/BC,EAAGgkD,EAAWhkD,EAAI0jD,EAAa1jD,GAE7BoyC,EAAoB7kD,KAAK2tD,kBACzB7I,GACFtyC,EAAGqyC,EAAkBryC,EAAIkkD,EAAmBlkD,EAAIxS,KAAKuE,MAAQvE,KAAKglD,mBAAmBxyC,EACrFC,EAAGoyC,EAAkBpyC,EAAIikD,EAAmBjkD,EAAIzS,KAAKuE,MAAQvE,KAAKglD,mBAAmBvyC,EAGvFzS,MAAK8lD,gBAAgBhB,EAAkBtyC,EAAEsyC,EAAkBryC,GAC3DzS,KAAK22D,kBAGPzzD,EAAQgR,UAAUk6C,YAAc,WACH,MAAvBpuD,KAAK+kD,iBACP/kD,KAAKi3B,QAAUj3B,KAAK22D,eACpB32D,KAAK+kD,eAAiB,KACtB/kD,KAAKglD,mBAAqB,OAS9B9hD,EAAQgR,UAAUsiD,kBAAoB,SAAU9R,GAC9C1kD,KAAK0kD,WAAaA,GAAc1kD,KAAK0kD,WAAa1kD,KAAKukD,eACvDvkD,KAAK0kD,YAAc1kD,KAAKukD,cAExB,IAAIlyB,GAAW1xB,EAAK8P,gBAAgBzQ,KAAKwkD,yBAAyBxkD,KAAK0kD,WAEvE1kD,MAAKie,UAAUje,KAAK2kD,aAAe3kD,KAAK4kD,YAAc5kD,KAAK2kD,aAAetyB,GAC1EryB,KAAK8lD,gBACH9lD,KAAK6kD,kBAAkBryC,GAAKxS,KAAK8kD,kBAAkBtyC,EAAIxS,KAAK6kD,kBAAkBryC,GAAK6f,EACnFryB,KAAK6kD,kBAAkBpyC,GAAKzS,KAAK8kD,kBAAkBryC,EAAIzS,KAAK6kD,kBAAkBpyC,GAAK4f,GAGrFryB,KAAK22D,iBAGD32D,KAAK0kD,YAAc,IACrB1kD,KAAKykD,WAAY,EACjBzkD,KAAK0kD,WAAa,EAEhB1kD,KAAKi3B,QADoB,MAAvBj3B,KAAK+kD,eACQ/kD,KAAK42D,cAGL52D,KAAK22D,eAEtB32D,KAAKyuB,KAAK,uBAIdvrB,EAAQgR,UAAUyiD,eAAiB,aAQnCzzD,EAAQgR,UAAUq4C,SAAW,WAC3B,OAAQvsD,KAAKgrD,WAAahrD,KAAKgrD,UAAU6L,QAQ3C3zD,EAAQgR,UAAU+wB,SAAW,WAC3B,MAAOjlC,MAAKie,aAQd/a,EAAQgR,UAAU0hB,SAAW,WAC3B,MAAO51B,MAAKutD,aAQdrqD,EAAQgR,UAAU4iD,qBAAuB,WACvC,MAAO92D,MAAKivD,aAAaz8C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,gBAI9F3iB,EAAQgR,UAAU6iD,eAAiB,SAASnO,GAC1C,MAA2B/hD,UAAvB7G,KAAK8+C,MAAM8J,GACN5oD,KAAK8+C,MAAM8J,GAAQD,YAD5B,QAKFzlD,EAAQgR,UAAU8iD,kBAAoB,SAASpO,GAC7C,GAAIqO,KACJ,IAA2BpwD,SAAvB7G,KAAK8+C,MAAM8J,GAGb,IAAK,GAFDN,GAAOtoD,KAAK8+C,MAAM8J,GAClBsO,GAAWtO,QAAS,GACf/iD,EAAI,EAAGA,EAAIyiD,EAAKrI,MAAMj6C,OAAQH,IAAK,CAC1C,GAAI8qD,GAAOrI,EAAKrI,MAAMp6C,EAClB8qD,GAAKwG,MAAQvO,EACc/hD,SAAzBqwD,EAAQvG,EAAKyG,UACfH,EAAS1uD,KAAKooD,EAAKyG,QACnBF,EAAQvG,EAAKyG,SAAU,GAGlBzG,EAAKyG,QAAUxO,GACK/hD,SAAvBqwD,EAAQvG,EAAKwG,QACfF,EAAS1uD,KAAKooD,EAAKwG,MACnBD,EAAQvG,EAAKwG,OAAQ,GAK7B,MAAOF,IAIT/zD,EAAQgR,UAAUmjD,iBAAmB,SAASzO,GAC5C,GAAI0O,KACJ,IAA2BzwD,SAAvB7G,KAAK8+C,MAAM8J,GAEb,IAAK,GADDN,GAAOtoD,KAAK8+C,MAAM8J,GACb/iD,EAAI,EAAGA,EAAIyiD,EAAKrI,MAAMj6C,OAAQH,IACrCyxD,EAAU/uD,KAAK+/C,EAAKrI,MAAMp6C,GAAGxF,GAGjC,OAAOi3D,IAGTp0D,EAAQgR,UAAUqjD,oBAAsB,SAAShsD,GAC/C,MAAO5K,GAAKqL,WAAWT,IAIzB1L,EAAOD,QAAUsD,GAKb,SAASrD,EAAQD,EAASM,GAoB9B,QAASkD,GAAM0uD,EAAY3uD,EAASq0D,GAClC,IAAKr0D,EACH,KAAM,qBAER,IAAIwL,IAAU,QAAQ,WAClBs1C,EAAYtjD,EAAK+N,sBAAsBC,EAAO6oD,EAClDx3D,MAAKkP,QAAU+0C,EAAUhE,MACzBjgD,KAAK4gD,QAAUqD,EAAUrD,QACzB5gD,KAAKkP,QAAsB,aAAIsoD,EAA+B,aAG9Dx3D,KAAKmD,QAAUA,EAGfnD,KAAKK,GAASwG,OACd7G,KAAKo3D,OAASvwD,OACd7G,KAAKm3D,KAAStwD,OACd7G,KAAKynC,MAAS5gC,OACd7G,KAAKy3D,cAAgBz3D,KAAKkP,QAAQoE,MAAQtT,KAAKkP,QAAQgxC,yBACvDlgD,KAAKsE,MAASuC,OACd7G,KAAKumC,UAAW,EAChBvmC,KAAKgN,OAAQ,EACbhN,KAAK03D,iBAAmBzvD,IAAI,EAAEJ,KAAK,EAAEyL,MAAM,EAAEC,OAAO,EAAEokD,MAAM,GAC5D33D,KAAK43D,YAAa,EAClB53D,KAAK+xD,YAAa,EAElB/xD,KAAKmqB,KAAO,KACZnqB,KAAKoqB,GAAK,KACVpqB,KAAKsyD,IAAM,KAEXtyD,KAAK63D,WAAa,KAClB73D,KAAK83D,SAAW,KAIhB93D,KAAK+3D,kBACL/3D,KAAKg4D,gBAELh4D,KAAK4wD,WAAY,EAEjB5wD,KAAKi4D,YAAc,EACnBj4D,KAAKk4D,aAAc,EAEnBl4D,KAAK6xD,cAAcC,GAEnB9xD,KAAKm4D,qBAAsB,EAC3Bn4D,KAAKo4D,cAAgBjuC,KAAK,KAAMC,GAAG,KAAMiuC,cACzCr4D,KAAKs4D,cAAgB,KAjEvB,GAAI33D,GAAOT,EAAoB,GAC3BqD,EAAOrD,EAAoB,GAwE/BkD,GAAK8Q,UAAU29C,cAAgB,SAASC,GAEtC,GADA9xD,KAAK+xD,YAAa,EACbD,EAAL,CAIA,GAAInjD,IAAU,QAAQ,WAAW,WAAW,YAAY,WAAW,kBAAkB,kBAAkB,QACrG,2BAA2B,aAAa,mBAAmB,OAAO,eAAe,iBAAkB,UACnG,wBAAwB,eAsC1B,QApCAhO,EAAK6F,oBAAoBmI,EAAQ3O,KAAKkP,QAAS4iD,GAEvBjrD,SAApBirD,EAAW3nC,OAA+BnqB,KAAKo3D,OAAStF,EAAW3nC,MACjDtjB,SAAlBirD,EAAW1nC,KAA+BpqB,KAAKm3D,KAAOrF,EAAW1nC,IAE/CvjB,SAAlBirD,EAAWzxD,KAA+BL,KAAKK,GAAKyxD,EAAWzxD,IAC1CwG,SAArBirD,EAAW9+C,QAA+BhT,KAAKgT,MAAQ8+C,EAAW9+C,MAAOhT,KAAK43D,YAAa,GAEtE/wD,SAArBirD,EAAWrqB,QAA6BznC,KAAKynC,MAAQqqB,EAAWrqB,OAC3C5gC,SAArBirD,EAAWxtD,QAA6BtE,KAAKsE,MAAQwtD,EAAWxtD,OAC1CuC,SAAtBirD,EAAW9rD,SAA6BhG,KAAK4gD,QAAQK,aAAe6Q,EAAW9rD,QAE1Da,SAArBirD,EAAWvmD,QACbvL,KAAKkP,QAAQuxC,cAAe,EACxB9/C,EAAK8D,SAASqtD,EAAWvmD,QAC3BvL,KAAKkP,QAAQ3D,MAAMA,MAAQumD,EAAWvmD,MACtCvL,KAAKkP,QAAQ3D,MAAMwB,UAAY+kD,EAAWvmD,QAGX1E,SAA3BirD,EAAWvmD,MAAMA,QAA0BvL,KAAKkP,QAAQ3D,MAAMA,MAAQumD,EAAWvmD,MAAMA,OACxD1E,SAA/BirD,EAAWvmD,MAAMwB,YAA0B/M,KAAKkP,QAAQ3D,MAAMwB,UAAY+kD,EAAWvmD,MAAMwB,WAChElG,SAA3BirD,EAAWvmD,MAAMyB,QAA0BhN,KAAKkP,QAAQ3D,MAAMyB,MAAQ8kD,EAAWvmD,MAAMyB,SAO/FhN,KAAK2+C,UAEL3+C,KAAKi4D,WAAaj4D,KAAKi4D,YAAoCpxD,SAArBirD,EAAWx+C,MACjDtT,KAAKk4D,YAAcl4D,KAAKk4D,aAAsCrxD,SAAtBirD,EAAW9rD,OAEnDhG,KAAKy3D,cAAgBz3D,KAAKkP,QAAQoE,MAAOtT,KAAKkP,QAAQgxC,yBAG9ClgD,KAAKkP,QAAQxB,OACnB,IAAK,OAAiB1N,KAAKixC,KAAOjxC,KAAKu4D,SAAW,MAClD,KAAK,QAAiBv4D,KAAKixC,KAAOjxC,KAAKw4D,UAAY,MACnD,KAAK,eAAiBx4D,KAAKixC,KAAOjxC,KAAKy4D,gBAAkB,MACzD,KAAK,YAAiBz4D,KAAKixC,KAAOjxC,KAAK04D,aAAe,MACtD,SAAsB14D,KAAKixC,KAAOjxC,KAAKu4D,aAQ3Cn1D,EAAK8Q,UAAUyqC,QAAU,WACvB3+C,KAAKmyD,aAELnyD,KAAKmqB,KAAOnqB,KAAKmD,QAAQ27C,MAAM9+C,KAAKo3D,SAAW,KAC/Cp3D,KAAKoqB,GAAKpqB,KAAKmD,QAAQ27C,MAAM9+C,KAAKm3D,OAAS,KAC3Cn3D,KAAK4wD,UAAa5wD,KAAKmqB,MAAQnqB,KAAKoqB,GAEhCpqB,KAAK4wD,WACP5wD,KAAKmqB,KAAKwuC,WAAW34D,MACrBA,KAAKoqB,GAAGuuC,WAAW34D,QAGfA,KAAKmqB,MACPnqB,KAAKmqB,KAAKyuC,WAAW54D,MAEnBA,KAAKoqB,IACPpqB,KAAKoqB,GAAGwuC,WAAW54D,QAQzBoD,EAAK8Q,UAAUi+C,WAAa,WACtBnyD,KAAKmqB,OACPnqB,KAAKmqB,KAAKyuC,WAAW54D,MACrBA,KAAKmqB,KAAO,MAEVnqB,KAAKoqB,KACPpqB,KAAKoqB,GAAGwuC,WAAW54D,MACnBA,KAAKoqB,GAAK,MAGZpqB,KAAK4wD,WAAY,GAQnBxtD,EAAK8Q,UAAUu8C,SAAW,WACxB,MAA6B,kBAAfzwD,MAAKynC,MAAuBznC,KAAKynC,QAAUznC,KAAKynC,OAQhErkC,EAAK8Q,UAAUyB,SAAW,WACxB,MAAO3V,MAAKsE,OASdlB,EAAK8Q,UAAUw+C,cAAgB,SAASvuD,EAAKC,EAAKC,GAChD,IAAKrE,KAAKi4D,YAA6BpxD,SAAf7G,KAAKsE,MAAqB,CAChD,GAAIC,GAAQvE,KAAKkP,QAAQ2vC,sBAAsB16C,EAAKC,EAAKC,EAAOrE,KAAKsE,OACjEu0D,EAAY74D,KAAKkP,QAAQiZ,SAAWnoB,KAAKkP,QAAQgZ,QACrDloB,MAAKkP,QAAQoE,MAAQtT,KAAKkP,QAAQgZ,SAAW3jB,EAAQs0D,EACrD74D,KAAKy3D,cAAgBz3D,KAAKkP,QAAQoE,MAAOtT,KAAKkP,QAAQgxC,2BAU1D98C,EAAK8Q,UAAU+8B,KAAO,WACpB,KAAM,uCAQR7tC,EAAK8Q,UAAUs8C,kBAAoB,SAASzsC,GAC1C,GAAI/jB,KAAK4wD,UAAW,CAClB,GAAI3gC,GAAU,GACV6oC,EAAQ94D,KAAKmqB,KAAK3X,EAClBumD,EAAQ/4D,KAAKmqB,KAAK1X,EAClBumD,EAAMh5D,KAAKoqB,GAAG5X,EACdymD,EAAMj5D,KAAKoqB,GAAG3X,EACdymD,EAAOn1C,EAAIlc,KACXsxD,EAAOp1C,EAAI9b,IAEX8jB,EAAO/rB,KAAKo5D,mBAAmBN,EAAOC,EAAOC,EAAKC,EAAKC,EAAMC,EAEjE,OAAelpC,GAAPlE,EAGR,OAAO,GAIX3oB,EAAK8Q,UAAUmlD,UAAY,SAAStxC,GAClC,GAAIuxC,GAAWt5D,KAAKkP,QAAQ3D,KAC5B,IAAiC,GAA7BvL,KAAKkP,QAAQwxC,aAAsB,CACrC,GACI6Y,GAAWC,EADXC,EAAM1xC,EAAI2xC,qBAAqB15D,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,EAAGzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,EAkBhF,OAhBA8mD,GAAYv5D,KAAKmqB,KAAKjb,QAAQ3D,MAAMwB,UAAUD,OAC9C0sD,EAAUx5D,KAAKoqB,GAAGlb,QAAQ3D,MAAMwB,UAAUD,OAGhB,GAAtB9M,KAAKmqB,KAAKoc,UAAyC,GAApBvmC,KAAKoqB,GAAGmc,UACzCgzB,EAAY54D,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,SAC9EguD,EAAU74D,EAAK2K,gBAAgBtL,KAAKoqB,GAAGlb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,UAE7C,GAAtBxL,KAAKmqB,KAAKoc,UAAwC,GAApBvmC,KAAKoqB,GAAGmc,SAC7CizB,EAAUx5D,KAAKoqB,GAAGlb,QAAQ3D,MAAMuB,OAEH,GAAtB9M,KAAKmqB,KAAKoc,UAAyC,GAApBvmC,KAAKoqB,GAAGmc,WAC9CgzB,EAAYv5D,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,QAEtC2sD,EAAIE,aAAa,EAAGJ,GACpBE,EAAIE,aAAa,EAAGH,GACbC,EAwBT,MArBIz5D,MAAK+xD,cAAe,IACW,MAA7B/xD,KAAKkP,QAAQuxC,aACf6Y,GACEvsD,UAAW/M,KAAKoqB,GAAGlb,QAAQ3D,MAAMwB,UAAUD,OAC3CE,MAAOhN,KAAKoqB,GAAGlb,QAAQ3D,MAAMyB,MAAMF,OACnCvB,MAAO5K,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,WAGvC,QAA7BxL,KAAKkP,QAAQuxC,cAAuD,GAA7BzgD,KAAKkP,QAAQuxC,gBAC3D6Y,GACEvsD,UAAW/M,KAAKmqB,KAAKjb,QAAQ3D,MAAMwB,UAAUD,OAC7CE,MAAOhN,KAAKmqB,KAAKjb,QAAQ3D,MAAMyB,MAAMF,OACrCvB,MAAO5K,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,WAG7ExL,KAAKkP,QAAQ3D,MAAQ+tD,EACrBt5D,KAAK+xD,YAAa,GAKC,GAAjB/xD,KAAKumC,SAA4B+yB,EAASvsD,UACvB,GAAd/M,KAAKgN,MAAuBssD,EAAStsD,MACTssD,EAAS/tD,OAWhDnI,EAAK8Q,UAAUqkD,UAAY,SAASxwC,GAKlC,GAHAA,EAAIY,YAAc3oB,KAAKq5D,UAAUtxC,GACjCA,EAAIO,UAActoB,KAAK45D,gBAEnB55D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAExB,GAGIxX,GAHA0/C,EAAMtyD,KAAK65D,MAAM9xC,EAIrB,IAAI/nB,KAAKgT,MAAO,CACd,GAAyC,GAArChT,KAAKkP,QAAQk0C,aAAaj0C,SAA0B,MAAPmjD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAK95D,KAAKmqB,KAAK3X,EAAI8/C,EAAI9/C,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAI8/C,EAAI9/C,IAClEunD,EAAY,IAAK,IAAK/5D,KAAKmqB,KAAK1X,EAAI6/C,EAAI7/C,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAI6/C,EAAI7/C,GACtEG,IAASJ,EAAEsnD,EAAWrnD,EAAEsnD,OAGxBnnD,GAAQ5S,KAAKg6D,aAAa,GAE5Bh6D,MAAKi6D,OAAOlyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,QAG3C,CACH,GAAID,GAAGC,EACH6Z,EAAStsB,KAAK4gD,QAAQK,aAAe,EACrCqH,EAAOtoD,KAAKmqB,IACXm+B,GAAKh1C,OACRg1C,EAAK4R,OAAOnyC,GAEVugC,EAAKh1C,MAAQg1C,EAAK/0C,QACpBf,EAAI81C,EAAK91C,EAAI81C,EAAKh1C,MAAQ,EAC1Bb,EAAI61C,EAAK71C,EAAI6Z,IAGb9Z,EAAI81C,EAAK91C,EAAI8Z,EACb7Z,EAAI61C,EAAK71C,EAAI61C,EAAK/0C,OAAS,GAE7BvT,KAAKm6D,QAAQpyC,EAAKvV,EAAGC,EAAG6Z,GACxB1Z,EAAQ5S,KAAKo6D,eAAe5nD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKi6D,OAAOlyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,KAUhDrP,EAAK8Q,UAAU0lD,cAAgB,WAC7B,MAAqB,IAAjB55D,KAAKumC,SACC/hC,KAAKJ,IAAII,KAAKL,IAAInE,KAAKy3D,cAAez3D,KAAKkP,QAAQiZ,UAAW,GAAInoB,KAAKq6D,iBAG7D,GAAdr6D,KAAKgN,MACAxI,KAAKJ,IAAII,KAAKL,IAAInE,KAAKkP,QAAQixC,WAAYngD,KAAKkP,QAAQiZ,UAAW,GAAInoB,KAAKq6D,iBAG5E71D,KAAKJ,IAAIpE,KAAKkP,QAAQoE,MAAO,GAAItT,KAAKq6D,kBAKnDj3D,EAAK8Q,UAAUomD,mBAAqB,WAClC,GAAyC,GAArCt6D,KAAKkP,QAAQk0C,aAAaC,SAAwD,GAArCrjD,KAAKkP,QAAQk0C,aAAaj0C,QACzE,MAAOnP,MAAKsyD,GAET,IAAyC,GAArCtyD,KAAKkP,QAAQk0C,aAAaj0C,QACjC,OAAQqD,EAAE,EAAEC,EAAE,EAGd,IAAI8nD,GAAO,KACPC,EAAO,KACPpR,EAASppD,KAAKkP,QAAQk0C,aAAaE,UACnCn8C,EAAOnH,KAAKkP,QAAQk0C,aAAaj8C,KACjCyY,EAAKpb,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACpCqN,EAAKrb,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACxC,IAAY,YAARtL,GAA8B,iBAARA,EACpB3C,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACjEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASvpC,EAC9B26C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASvpC,GAEvB7f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASvpC,EAC9B26C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASvpC,GAGzB7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASvpC,EAC9B26C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASvpC,GAEvB7f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASvpC,EAC9B26C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASvpC,IAGtB,YAAR1Y,IACFozD,EAAYnR,EAASvpC,EAAdD,EAAmB5f,KAAKmqB,KAAK3X,EAAI+nD,IAGnC/1D,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KACtEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASxpC,EAC9B46C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASxpC,GAEvB5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASxpC,EAC9B46C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASxpC,GAGzB5f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASxpC,EAC9B46C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASxpC,GAEvB5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASxpC,EAC9B46C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASxpC,IAGtB,YAARzY,IACFqzD,EAAYpR,EAASxpC,EAAdC,EAAmB7f,KAAKmqB,KAAK1X,EAAI+nD,QAIzC,IAAY,iBAARrzD,EACH3C,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACrE8nD,EAAOv6D,KAAKmqB,KAAK3X,EAEfgoD,EADEx6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACjBzS,KAAKoqB,GAAG3X,GAAK,EAAI22C,GAAUvpC,EAG3B7f,KAAKoqB,GAAG3X,GAAK,EAAI22C,GAAUvpC,GAG7Brb,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KAExE8nD,EADEv6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EACjBxS,KAAKoqB,GAAG5X,GAAK,EAAI42C,GAAUxpC,EAG3B5f,KAAKoqB,GAAG5X,GAAK,EAAI42C,GAAUxpC,EAEpC46C,EAAOx6D,KAAKmqB,KAAK1X,OAGhB,IAAY,cAARtL,EAELozD,EADEv6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EACjBxS,KAAKoqB,GAAG5X,GAAK,EAAI42C,GAAUxpC,EAG3B5f,KAAKoqB,GAAG5X,GAAK,EAAI42C,GAAUxpC,EAEpC46C,EAAOx6D,KAAKmqB,KAAK1X,MAEd,IAAY,YAARtL,EACPozD,EAAOv6D,KAAKmqB,KAAK3X,EAEfgoD,EADEx6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACjBzS,KAAKoqB,GAAG3X,GAAK,EAAI22C,GAAUvpC,EAG3B7f,KAAKoqB,GAAG3X,GAAK,EAAI22C,GAAUvpC,MAGjC,IAAY,YAAR1Y,EAAoB,CAC3B,GAAIyY,GAAK5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC3BqN,EAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3B6Z,EAAS9nB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAC9B46C,EAAKj2D,KAAKgoB,GAEVkuC,EAAgBl2D,KAAKm2D,MAAM96C,EAAGD,GAC9Bg7C,GAAWF,GAA2B,GAATtR,EAAgB,IAAOqR,IAAO,EAAIA,EAEnEF,GAAOv6D,KAAKmqB,KAAK3X,GAAY,GAAP42C,EAAa,IAAK98B,EAAO9nB,KAAK4a,IAAIw7C,GACxDJ,EAAOx6D,KAAKmqB,KAAK1X,GAAY,GAAP22C,EAAa,IAAK98B,EAAO9nB,KAAK+a,IAAIq7C,OAErD,IAAY,aAARzzD,EAAqB,CAC5B,GAAIyY,GAAK5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC3BqN,EAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3B6Z,EAAS9nB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAC9B46C,EAAKj2D,KAAKgoB,GAEVkuC,EAAgBl2D,KAAKm2D,MAAM96C,EAAGD,GAC9Bg7C,GAAWF,GAA4B,IAATtR,EAAgB,IAAOqR,IAAO,EAAIA,EAEpEF,GAAOv6D,KAAKmqB,KAAK3X,GAAY,GAAP42C,EAAa,IAAK98B,EAAO9nB,KAAK4a,IAAIw7C,GACxDJ,EAAOx6D,KAAKmqB,KAAK1X,GAAY,GAAP22C,EAAa,IAAK98B,EAAO9nB,KAAK+a,IAAIq7C,OAGpDp2D,MAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,GACjEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASvpC,EAC9B26C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASvpC,EAC9B06C,EAAOv6D,KAAKoqB,GAAG5X,EAAI+nD,EAAOv6D,KAAKoqB,GAAG5X,EAAI+nD,GAE/Bv6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASvpC,EAC9B26C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASvpC,EAC9B06C,EAAOv6D,KAAKoqB,GAAG5X,EAAI+nD,EAAOv6D,KAAKoqB,GAAG5X,EAAI+nD,GAGjCv6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASvpC,EAC9B26C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASvpC,EAC9B06C,EAAOv6D,KAAKoqB,GAAG5X,EAAI+nD,EAAOv6D,KAAKoqB,GAAG5X,EAAI+nD,GAE/Bv6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASvpC,EAC9B26C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASvpC,EAC9B06C,EAAOv6D,KAAKoqB,GAAG5X,EAAI+nD,EAAOv6D,KAAKoqB,GAAG5X,EAAI+nD,IAInC/1D,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KACtEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASxpC,EAC9B46C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASxpC,EAC9B46C,EAAOx6D,KAAKoqB,GAAG3X,EAAI+nD,EAAOx6D,KAAKoqB,GAAG3X,EAAI+nD,GAE/Bx6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASxpC,EAC9B46C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASxpC,EAC9B46C,EAAOx6D,KAAKoqB,GAAG3X,EAAI+nD,EAAOx6D,KAAKoqB,GAAG3X,EAAI+nD,GAGjCx6D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxB+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASxpC,EAC9B46C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASxpC,EAC9B46C,EAAOx6D,KAAKoqB,GAAG3X,EAAI+nD,EAAOx6D,KAAKoqB,GAAG3X,EAAI+nD,GAE/Bx6D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7B+nD,EAAOv6D,KAAKmqB,KAAK3X,EAAI42C,EAASxpC,EAC9B46C,EAAOx6D,KAAKmqB,KAAK1X,EAAI22C,EAASxpC,EAC9B46C,EAAOx6D,KAAKoqB,GAAG3X,EAAI+nD,EAAOx6D,KAAKoqB,GAAG3X,EAAI+nD,IAO9C,QAAQhoD,EAAG+nD,EAAM9nD,EAAG+nD,IASxBp3D,EAAK8Q,UAAU2lD,MAAQ,SAAU9xC,GAI/B,GAFAA,EAAIa,YACJb,EAAIc,OAAO7oB,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,GACO,GAArCzS,KAAKkP,QAAQk0C,aAAaj0C,QAAiB,CAC7C,GAAyC,GAArCnP,KAAKkP,QAAQk0C,aAAaC,QAAkB,CAC9C,GAAIiP,GAAMtyD,KAAKs6D,oBACf,OAAa,OAAThI,EAAI9/C,GACNuV,EAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9BsV,EAAIlH,SACG,OAKPkH,EAAI8yC,iBAAiBvI,EAAI9/C,EAAE8/C,EAAI7/C,EAAEzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GACpDsV,EAAIlH,SAGGyxC,GAMT,MAFAvqC,GAAI8yC,iBAAiB76D,KAAKsyD,IAAI9/C,EAAExS,KAAKsyD,IAAI7/C,EAAEzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9DsV,EAAIlH,SACG7gB,KAAKsyD,IAMd,MAFAvqC,GAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9BsV,EAAIlH,SACG,MAYXzd,EAAK8Q,UAAUimD,QAAU,SAAUpyC,EAAKvV,EAAGC,EAAG6Z,GAE5CvE,EAAIa,YACJb,EAAIwE,IAAI/Z,EAAGC,EAAG6Z,EAAQ,EAAG,EAAI9nB,KAAKgoB,IAAI,GACtCzE,EAAIlH,UAWNzd,EAAK8Q,UAAU+lD,OAAS,SAAUlyC,EAAKuC,EAAM9X,EAAGC,GAC9C,GAAI6X,EAAM,CACRvC,EAAIQ,MAASvoB,KAAKmqB,KAAKoc,UAAYvmC,KAAKoqB,GAAGmc,SAAY,QAAU,IACjEvmC,KAAKkP,QAAQmwC,SAAW,MAAQr/C,KAAKkP,QAAQowC,QAC7C,IAAIqY,EAEJ,IAAuB,GAAnB33D,KAAK43D,WAAoB,CAC3B,GAAIhsB,GAAQlnC,OAAO4lB,GAAMhiB,MAAM,MAC3BwyD,EAAYlvB,EAAM5lC,OAClBq5C,EAAWp7C,OAAOjE,KAAKkP,QAAQmwC,SACnCsY,GAAQllD,GAAK,EAAIqoD,GAAa,EAAIzb,CAGlC,KAAK,GADD/rC,GAAQyU,EAAIgzC,YAAYnvB,EAAM,IAAIt4B,MAC7BzN,EAAI,EAAOi1D,EAAJj1D,EAAeA,IAAK,CAClC,GAAIyiB,GAAYP,EAAIgzC,YAAYnvB,EAAM/lC,IAAIyN,KAC1CA,GAAQgV,EAAYhV,EAAQgV,EAAYhV,EAE1C,GAAIC,GAASvT,KAAKkP,QAAQmwC,SAAWyb,EACjCjzD,EAAO2K,EAAIc,EAAQ,EACnBrL,EAAMwK,EAAIc,EAAS,CAGvBvT,MAAK03D,iBAAmBzvD,IAAIA,EAAIJ,KAAKA,EAAKyL,MAAMA,EAAMC,OAAOA,EAAOokD,MAAMA,GAG/E,GAAIA,GAAQ33D,KAAK03D,gBAAgBC,KAEjC5vC,GAAI8qC,OAE+B,cAA/B7yD,KAAKkP,QAAQkxC,iBAChBr4B,EAAI+qC,UAAUtgD,EAAGmlD,GACjB33D,KAAKg7D,yBAAyBjzC,GAC9BvV,EAAI,EACJmlD,EAAQ,GAIT33D,KAAKi7D,eAAelzC,GACpB/nB,KAAKk7D,eAAenzC,EAAIvV,EAAEmlD,EAAO/rB,EAAOkvB,EAAWzb,GAEnDt3B,EAAIirC,YASL5vD,EAAK8Q,UAAU8mD,yBAA2B,SAASjzC,GAClD,GAAIlI,GAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3BmN,EAAK5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EAC3B2oD,EAAiB32D,KAAKm2D,MAAM96C,EAAID,IAGf,GAAjBu7C,GAA4B,EAALv7C,GAAYu7C,EAAiB,GAAU,EAALv7C,KAC5Du7C,GAAkC32D,KAAKgoB,IAGxCzE,EAAIqzC,OAAOD,IASZ/3D,EAAK8Q,UAAU+mD,eAAiB,SAASlzC,GACxC,GAA8BlhB,SAA1B7G,KAAKkP,QAAQqwC,UAAoD,OAA1Bv/C,KAAKkP,QAAQqwC,UAA+C,SAA1Bv/C,KAAKkP,QAAQqwC,SAAqB,CAC9Gx3B,EAAIiB,UAAYhpB,KAAKkP,QAAQqwC,QAE7B,IAAI8b,GAAa,CAEoB,gBAA/Br7D,KAAKkP,QAAQkxC,eACfr4B,EAAIuzC,SAAuC,IAA7Bt7D,KAAK03D,gBAAgBpkD,MAA4C,IAA9BtT,KAAK03D,gBAAgBnkD,OAAcvT,KAAK03D,gBAAgBpkD,MAAOtT,KAAK03D,gBAAgBnkD,QAE/F,cAA/BvT,KAAKkP,QAAQkxC,eACpBr4B,EAAIuzC,SAAuC,IAA7Bt7D,KAAK03D,gBAAgBpkD,QAAetT,KAAK03D,gBAAgBnkD,OAAS8nD,GAAar7D,KAAK03D,gBAAgBpkD,MAAOtT,KAAK03D,gBAAgBnkD,QAExG,cAA/BvT,KAAKkP,QAAQkxC,eACpBr4B,EAAIuzC,SAAuC,IAA7Bt7D,KAAK03D,gBAAgBpkD,MAAa+nD,EAAYr7D,KAAK03D,gBAAgBpkD,MAAOtT,KAAK03D,gBAAgBnkD,QAG7GwU,EAAIuzC,SAASt7D,KAAK03D,gBAAgB7vD,KAAM7H,KAAK03D,gBAAgBzvD,IAAKjI,KAAK03D,gBAAgBpkD,MAAOtT,KAAK03D,gBAAgBnkD,UAezHnQ,EAAK8Q,UAAUgnD,eAAiB,SAASnzC,EAAKvV,EAAGmlD,EAAO/rB,EAAOkvB,EAAWzb,GAMxE,GAJDt3B,EAAIiB,UAAYhpB,KAAKkP,QAAQkwC,WAAa,QAC1Cr3B,EAAIuB,UAAY,SAGoB,cAA/BtpB,KAAKkP,QAAQkxC,eAAgC,CAC/C,GAAIib,GAAa,CACkB,eAA/Br7D,KAAKkP,QAAQkxC,gBACfr4B,EAAIwB,aAAe,aACnBouC,GAAS,EAAI0D,GAEyB,cAA/Br7D,KAAKkP,QAAQkxC,gBACpBr4B,EAAIwB,aAAe,UACnBouC,GAAS,EAAI0D,GAGbtzC,EAAIwB,aAAe,aAIrBxB,GAAIwB,aAAe,QAIjBvpB,MAAKkP,QAAQswC,gBAAkB,IACjCz3B,EAAIO,UAActoB,KAAKkP,QAAQswC,gBAC/Bz3B,EAAIY,YAAc3oB,KAAKkP,QAAQuwC,gBAC/B13B,EAAIwzC,SAAc,QAErB,KAAK,GAAI11D,GAAI,EAAOi1D,EAAJj1D,EAAeA,IACzB7F,KAAKkP,QAAQswC,gBAAkB,GAChCz3B,EAAIyzC,WAAW5vB,EAAM/lC,GAAI2M,EAAGmlD,GAEhC5vC,EAAIyB,SAASoiB,EAAM/lC,GAAI2M,EAAGmlD,GAC1BA,GAAStY,GAaXj8C,EAAK8Q,UAAUwkD,cAAgB,SAAS3wC,GAEtCA,EAAIY,YAAc3oB,KAAKq5D,UAAUtxC,GACjCA,EAAIO,UAAYtoB,KAAK45D,eAErB,IAAItH,GAAM,IAEV,IAAwBzrD,SAApBkhB,EAAI0zC,YAA2B,CACjC1zC,EAAI8qC,MAEJ,IAAI6I,IAAW,EAEbA,GAD+B70D,SAA7B7G,KAAKkP,QAAQoxC,KAAKt6C,QAAkDa,SAA1B7G,KAAKkP,QAAQoxC,KAAKC,KACnDvgD,KAAKkP,QAAQoxC,KAAKt6C,OAAOhG,KAAKkP,QAAQoxC,KAAKC,MAG3C,EAAE,GAIfx4B,EAAI0zC,YAAYC,GAChB3zC,EAAI4zC,eAAiB,EAGrBrJ,EAAMtyD,KAAK65D,MAAM9xC,GAGjBA,EAAI0zC,aAAa,IACjB1zC,EAAI4zC,eAAiB,EACrB5zC,EAAIirC,cAIJjrC,GAAIa,YACJb,EAAI6zC,QAAU,QACsB/0D,SAAhC7G,KAAKkP,QAAQoxC,KAAKE,UAEpBz4B,EAAI8zC,WAAW77D,KAAKmqB,KAAK3X,EAAExS,KAAKmqB,KAAK1X,EAAEzS,KAAKoqB,GAAG5X,EAAExS,KAAKoqB,GAAG3X,GACpDzS,KAAKkP,QAAQoxC,KAAKt6C,OAAOhG,KAAKkP,QAAQoxC,KAAKC,IAAIvgD,KAAKkP,QAAQoxC,KAAKE,UAAUxgD,KAAKkP,QAAQoxC,KAAKC,MAE9D15C,SAA7B7G,KAAKkP,QAAQoxC,KAAKt6C,QAAkDa,SAA1B7G,KAAKkP,QAAQoxC,KAAKC,IAEnEx4B,EAAI8zC,WAAW77D,KAAKmqB,KAAK3X,EAAExS,KAAKmqB,KAAK1X,EAAEzS,KAAKoqB,GAAG5X,EAAExS,KAAKoqB,GAAG3X,GACpDzS,KAAKkP,QAAQoxC,KAAKt6C,OAAOhG,KAAKkP,QAAQoxC,KAAKC,OAIhDx4B,EAAIc,OAAO7oB,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,GAClCsV,EAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,IAEhCsV,EAAIlH,QAIN,IAAI7gB,KAAKgT,MAAO,CACd,GAAIJ,EACJ,IAAyC,GAArC5S,KAAKkP,QAAQk0C,aAAaj0C,SAA0B,MAAPmjD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAK95D,KAAKmqB,KAAK3X,EAAI8/C,EAAI9/C,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAI8/C,EAAI9/C,IAClEunD,EAAY,IAAK,IAAK/5D,KAAKmqB,KAAK1X,EAAI6/C,EAAI7/C,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAI6/C,EAAI7/C,GACtEG,IAASJ,EAAEsnD,EAAWrnD,EAAEsnD,OAGxBnnD,GAAQ5S,KAAKg6D,aAAa,GAE5Bh6D,MAAKi6D,OAAOlyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,KAUhDrP,EAAK8Q,UAAU8lD,aAAe,SAAU8B,GACtC,OACEtpD,GAAI,EAAIspD,GAAc97D,KAAKmqB,KAAK3X,EAAIspD,EAAa97D,KAAKoqB,GAAG5X,EACzDC,GAAI,EAAIqpD,GAAc97D,KAAKmqB,KAAK1X,EAAIqpD,EAAa97D,KAAKoqB,GAAG3X,IAa7DrP,EAAK8Q,UAAUkmD,eAAiB,SAAU5nD,EAAGC,EAAG6Z,EAAQwvC,GACtD,GAAItK,GAA6B,GAApBsK,EAAa,EAAE,GAASt3D,KAAKgoB,EAC1C,QACEha,EAAGA,EAAI8Z,EAAS9nB,KAAK+a,IAAIiyC,GACzB/+C,EAAGA,EAAI6Z,EAAS9nB,KAAK4a,IAAIoyC,KAW7BpuD,EAAK8Q,UAAUukD,iBAAmB,SAAS1wC,GACzC,GAAInV,EAMJ,IAJAmV,EAAIY,YAAc3oB,KAAKq5D,UAAUtxC,GACjCA,EAAIiB,UAAYjB,EAAIY,YACpBZ,EAAIO,UAAYtoB,KAAK45D,gBAEjB55D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAExB,GAAIkoC,GAAMtyD,KAAK65D,MAAM9xC,GAEjBypC,EAAQhtD,KAAKm2D,MAAO36D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrExM,GAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQmxC,gBAE1D,IAAyC,GAArCrgD,KAAKkP,QAAQk0C,aAAaj0C,SAA0B,MAAPmjD,EAAa,CAC5D,GAAIwH,GAAY,IAAK,IAAK95D,KAAKmqB,KAAK3X,EAAI8/C,EAAI9/C,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAI8/C,EAAI9/C,IAClEunD,EAAY,IAAK,IAAK/5D,KAAKmqB,KAAK1X,EAAI6/C,EAAI7/C,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAI6/C,EAAI7/C,GACtEG,IAASJ,EAAEsnD,EAAWrnD,EAAEsnD,OAGxBnnD,GAAQ5S,KAAKg6D,aAAa,GAG5BjyC,GAAIg0C,MAAMnpD,EAAMJ,EAAGI,EAAMH,EAAG++C,EAAOxrD,GACnC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,OACPhT,KAAKi6D,OAAOlyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,OAG3C,CAEH,GAAID,GAAGC,EACH6Z,EAAS,IAAO9nB,KAAKJ,IAAI,IAAIpE,KAAK4gD,QAAQK,cAC1CqH,EAAOtoD,KAAKmqB,IACXm+B,GAAKh1C,OACRg1C,EAAK4R,OAAOnyC,GAEVugC,EAAKh1C,MAAQg1C,EAAK/0C,QACpBf,EAAI81C,EAAK91C,EAAiB,GAAb81C,EAAKh1C,MAClBb,EAAI61C,EAAK71C,EAAI6Z,IAGb9Z,EAAI81C,EAAK91C,EAAI8Z,EACb7Z,EAAI61C,EAAK71C,EAAkB,GAAd61C,EAAK/0C,QAEpBvT,KAAKm6D,QAAQpyC,EAAKvV,EAAGC,EAAG6Z,EAGxB,IAAIklC,GAAQ,GAAMhtD,KAAKgoB,GACnBxmB,GAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQmxC,gBAC1DztC,GAAQ5S,KAAKo6D,eAAe5nD,EAAGC,EAAG6Z,EAAQ,IAC1CvE,EAAIg0C,MAAMnpD,EAAMJ,EAAGI,EAAMH,EAAG++C,EAAOxrD,GACnC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,QACPJ,EAAQ5S,KAAKo6D,eAAe5nD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKi6D,OAAOlyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,MAKlDrP,EAAK8Q,UAAU8nD,eAAiB,SAASztD,GACvC,GAAI+jD,GAAMtyD,KAAKs6D,qBAEX9nD,EAAIhO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGvO,KAAKmqB,KAAK3X,EAAK,EAAEjE,GAAG,EAAIA,GAAI+jD,EAAI9/C,EAAIhO,KAAKkwB,IAAInmB,EAAE,GAAGvO,KAAKoqB,GAAG5X,EAC9EC,EAAIjO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGvO,KAAKmqB,KAAK1X,EAAK,EAAElE,GAAG,EAAIA,GAAI+jD,EAAI7/C,EAAIjO,KAAKkwB,IAAInmB,EAAE,GAAGvO,KAAKoqB,GAAG3X,CAElF,QAAQD,EAAEA,EAAEC,EAAEA,IAWhBrP,EAAK8Q,UAAU+nD,oBAAsB,SAAS9xC,EAAKpC,GACjD,GAIIxB,GAAIirC,EAAM0K,EAAkBC,EAAiBC,EAJ7C3sD,EAAgB,GAChBC,EAAY,EACZC,EAAM,EACNC,EAAO,EAEPysD,EAAY,GACZ/T,EAAOtoD,KAAKoqB,EAKhB,KAJY,GAARD,IACFm+B,EAAOtoD,KAAKmqB,MAGAva,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAAwB,IAAdF,EAAMC,EAOpB,IALA2W,EAAMvmB,KAAKg8D,eAAensD,GAC1B2hD,EAAQhtD,KAAKm2D,MAAOrS,EAAK71C,EAAI8T,EAAI9T,EAAK61C,EAAK91C,EAAI+T,EAAI/T,GACnD0pD,EAAmB5T,EAAK4T,iBAAiBn0C,EAAIypC,GAC7C2K,EAAkB33D,KAAKgsB,KAAKhsB,KAAKkwB,IAAInO,EAAI/T,EAAE81C,EAAK91C,EAAE,GAAKhO,KAAKkwB,IAAInO,EAAI9T,EAAE61C,EAAK71C,EAAE,IAC7E2pD,EAAaF,EAAmBC,EAC5B33D,KAAKknB,IAAI0wC,GAAcC,EACzB,KAEoB,GAAbD,EACK,GAARjyC,EACFxa,EAAME,EAGND,EAAOC,EAIG,GAARsa,EACFva,EAAOC,EAGPF,EAAME,EAIVH,IAIF,MAFA6W,GAAIhY,EAAIsB,EAED0W,GAUTnjB,EAAK8Q,UAAUskD,WAAa,SAASzwC,GAEnCA,EAAIY,YAAc3oB,KAAKq5D,UAAUtxC,GACjCA,EAAIiB,UAAYjB,EAAIY,YACpBZ,EAAIO,UAAYtoB,KAAK45D,eAGrB,IAAIpI,GAAOxrD,EAAQs2D,CAGnB,IAAIt8D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAKxB,GAHApqB,KAAK65D,MAAM9xC,GAG8B,GAArC/nB,KAAKkP,QAAQk0C,aAAaj0C,QAAiB,CAC7C,GAAImjD,GAAMtyD,KAAKs6D,oBACfgC,GAAWt8D,KAAKi8D,qBAAoB,EAAOl0C,EAC3C,IAAIw0C,GAAWv8D,KAAKg8D,eAAex3D,KAAKJ,IAAI,EAAKk4D,EAAS/tD,EAAI,IAC9DijD,GAAQhtD,KAAKm2D,MAAO2B,EAAS7pD,EAAI8pD,EAAS9pD,EAAK6pD,EAAS9pD,EAAI+pD,EAAS/pD,OAElE,CACHg/C,EAAQhtD,KAAKm2D,MAAO36D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EACrE,IAAIoN,GAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5B+pD,EAAoBh4D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAC7C48C,EAAez8D,KAAKoqB,GAAG8xC,iBAAiBn0C,EAAKypC,GAC7CkL,GAAiBF,EAAoBC,GAAgBD,CAEzDF,MACAA,EAAS9pD,GAAK,EAAIkqD,GAAiB18D,KAAKmqB,KAAK3X,EAAIkqD,EAAgB18D,KAAKoqB,GAAG5X,EACzE8pD,EAAS7pD,GAAK,EAAIiqD,GAAiB18D,KAAKmqB,KAAK1X,EAAIiqD,EAAgB18D,KAAKoqB,GAAG3X,EAU3E,GANAzM,GAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQmxC,iBACtDt4B,EAAIg0C,MAAMO,EAAS9pD,EAAE8pD,EAAS7pD,EAAG++C,EAAOxrD,GACxC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,MAAO,CACd,GAAIJ,EAEFA,GADuC,GAArC5S,KAAKkP,QAAQk0C,aAAaj0C,SAA0B,MAAPmjD,EACvCtyD,KAAKg8D,eAAe,IAGpBh8D,KAAKg6D,aAAa,IAE5Bh6D,KAAKi6D,OAAOlyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,QAG3C,CAEH,GACID,GAAGC,EAAGspD,EADNzT,EAAOtoD,KAAKmqB,KAEZmC,EAAS,IAAO9nB,KAAKJ,IAAI,IAAIpE,KAAK4gD,QAAQK,aACzCqH,GAAKh1C,OACRg1C,EAAK4R,OAAOnyC,GAEVugC,EAAKh1C,MAAQg1C,EAAK/0C,QACpBf,EAAI81C,EAAK91C,EAAiB,GAAb81C,EAAKh1C,MAClBb,EAAI61C,EAAK71C,EAAI6Z,EACbyvC,GACEvpD,EAAGA,EACHC,EAAG61C,EAAK71C,EACR++C,MAAO,GAAMhtD,KAAKgoB,MAIpBha,EAAI81C,EAAK91C,EAAI8Z,EACb7Z,EAAI61C,EAAK71C,EAAkB,GAAd61C,EAAK/0C,OAClBwoD,GACEvpD,EAAG81C,EAAK91C,EACRC,EAAGA,EACH++C,MAAO,GAAMhtD,KAAKgoB,KAGtBzE,EAAIa,YAEJb,EAAIwE,IAAI/Z,EAAGC,EAAG6Z,EAAQ,EAAG,EAAI9nB,KAAKgoB,IAAI,GACtCzE,EAAIlH,QAGJ,IAAI7a,IAAU,GAAK,EAAIhG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQmxC,gBAC1Dt4B,GAAIg0C,MAAMA,EAAMvpD,EAAGupD,EAAMtpD,EAAGspD,EAAMvK,MAAOxrD,GACzC+hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,QACPJ,EAAQ5S,KAAKo6D,eAAe5nD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKi6D,OAAOlyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,MAiBlDrP,EAAK8Q,UAAUklD,mBAAqB,SAAUuD,EAAGC,EAAIC,EAAGC,EAAIC,EAAGC,GAC7D,GAAIlzD,GAAc,CAClB,IAAI9J,KAAKmqB,MAAQnqB,KAAKoqB,GACpB,GAAyC,GAArCpqB,KAAKkP,QAAQk0C,aAAaj0C,QAAiB,CAC7C,GAAIorD,GAAMC,CACV,IAAyC,GAArCx6D,KAAKkP,QAAQk0C,aAAaj0C,SAAwD,GAArCnP,KAAKkP,QAAQk0C,aAAaC,QACzEkX,EAAOv6D,KAAKsyD,IAAI9/C,EAChBgoD,EAAOx6D,KAAKsyD,IAAI7/C,MAEb,CACH,GAAI6/C,GAAMtyD,KAAKs6D,oBACfC,GAAOjI,EAAI9/C,EACXgoD,EAAOlI,EAAI7/C,EAEb,GACIkU,GACA9gB,EAAE0I,EAAEiE,EAAEC,EAAGwqD,EAAOC,EAFhBC,EAAc,GAGlB,KAAKt3D,EAAI,EAAO,GAAJA,EAAQA,IAClB0I,EAAI,GAAI1I,EACR2M,EAAIhO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGouD,EAAM,EAAEpuD,GAAG,EAAIA,GAAIgsD,EAAO/1D,KAAKkwB,IAAInmB,EAAE,GAAGsuD,EAC5DpqD,EAAIjO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGquD,EAAM,EAAEruD,GAAG,EAAIA,GAAIisD,EAAOh2D,KAAKkwB,IAAInmB,EAAE,GAAGuuD,EACxDj3D,EAAI,IACN8gB,EAAW3mB,KAAKo9D,mBAAmBH,EAAMC,EAAM1qD,EAAEC,EAAGsqD,EAAGC,GACvDG,EAAyBA,EAAXx2C,EAAyBA,EAAWw2C,GAEpDF,EAAQzqD,EAAG0qD,EAAQzqD,CAErB3I,GAAcqzD,MAGdrzD,GAAc9J,KAAKo9D,mBAAmBT,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,OAGpD,CACH,GAAIxqD,GAAGC,EAAGmN,EAAIC,EACVyM,EAAS,IAAOtsB,KAAK4gD,QAAQK,aAC7BqH,EAAOtoD,KAAKmqB,IACZm+B,GAAKh1C,MAAQg1C,EAAK/0C,QACpBf,EAAI81C,EAAK91C,EAAI,GAAM81C,EAAKh1C,MACxBb,EAAI61C,EAAK71C,EAAI6Z,IAGb9Z,EAAI81C,EAAK91C,EAAI8Z,EACb7Z,EAAI61C,EAAK71C,EAAI,GAAM61C,EAAK/0C,QAE1BqM,EAAKpN,EAAIuqD,EACTl9C,EAAKpN,EAAIuqD,EACTlzD,EAActF,KAAKknB,IAAIlnB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAAMyM,GAGpD,MAAItsB,MAAK03D,gBAAgB7vD,KAAOk1D,GAC9B/8D,KAAK03D,gBAAgB7vD,KAAO7H,KAAK03D,gBAAgBpkD,MAAQypD,GACzD/8D,KAAK03D,gBAAgBzvD,IAAM+0D,GAC3Bh9D,KAAK03D,gBAAgBzvD,IAAMjI,KAAK03D,gBAAgBnkD,OAASypD,EAClD,EAGAlzD,GAIX1G,EAAK8Q,UAAUkpD,mBAAqB,SAAST,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GAC1D,GAAIK,GAAKR,EAAGF,EACVW,EAAKR,EAAGF,EACRW,EAAYF,EAAGA,EAAKC,EAAGA,EACvBE,IAAOT,EAAKJ,GAAMU,GAAML,EAAKJ,GAAMU,GAAMC,CAEvCC,GAAI,EACNA,EAAI,EAEO,EAAJA,IACPA,EAAI,EAGN,IAAIhrD,GAAImqD,EAAKa,EAAIH,EACf5qD,EAAImqD,EAAKY,EAAIF,EACb19C,EAAKpN,EAAIuqD,EACTl9C,EAAKpN,EAAIuqD,CAQX,OAAOx4D,MAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,IAQ9Bzc,EAAK8Q,UAAU+wB,SAAW,SAAS1gC,GACjCvE,KAAKq6D,gBAAkB,EAAI91D,GAI7BnB,EAAK8Q,UAAUyyB,OAAS,WACtB3mC,KAAKumC,UAAW,GAGlBnjC,EAAK8Q,UAAU0yB,SAAW,WACxB5mC,KAAKumC,UAAW,GAGlBnjC,EAAK8Q,UAAUwhD,mBAAqB,WACjB,OAAb11D,KAAKsyD,KAA8B,OAAdtyD,KAAKmqB,MAA6B,OAAZnqB,KAAKoqB,IAClDpqB,KAAKsyD,IAAI9/C,EAAI,IAAOxS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAC1CxS,KAAKsyD,IAAI7/C,EAAI,IAAOzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IAEtB,OAAbzS,KAAKsyD,MACZtyD,KAAKsyD,IAAI9/C,EAAI,EACbxS,KAAKsyD,IAAI7/C,EAAI,IASjBrP,EAAK8Q,UAAUu/C,kBAAoB,SAAS1rC,GAC1C,GAAgC,GAA5B/nB,KAAKm4D,oBAA6B,CACpC,GAA+B,OAA3Bn4D,KAAKo4D,aAAajuC,MAA0C,OAAzBnqB,KAAKo4D,aAAahuC,GAAa,CACpE,GAAIqzC,GAAa,cAAc1oD,OAAO/U,KAAKK,IACvCq9D,EAAW,YAAY3oD,OAAO/U,KAAKK,IACnC4jD,GACYnF,OAAOpsC,MAAM,GAAI4Z,OAAO,EAAGtL,YAAY,EAAGg/B,oBAAqB,GAC/DY,SAASO,QAAQ,GACjBI,YAAac,sBAAuB,EAAGD,aAAc9uC,MAAM,EAAGC,OAAQ,EAAG+Y,OAAO,IAEhGtsB,MAAKo4D,aAAajuC,KAAO,GAAI5mB,IAC1BlD,GAAGo9D,EACFve,MAAM,MACJ3zC,OAAOsB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAClEo3C,GACVjkD,KAAKo4D,aAAahuC,GAAK,GAAI7mB,IACxBlD,GAAGq9D,EACFxe,MAAM,MACN3zC,OAAOsB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAChEo3C,GAGZjkD,KAAKo4D,aAAaC,aACqB,GAAnCr4D,KAAKo4D,aAAajuC,KAAKoc,WACzBvmC,KAAKo4D,aAAaC,UAAUluC,KAAOnqB,KAAK29D,2BAA2B51C,GACnE/nB,KAAKo4D,aAAajuC,KAAK3X,EAAIxS,KAAKo4D,aAAaC,UAAUluC,KAAK3X,EAC5DxS,KAAKo4D,aAAajuC,KAAK1X,EAAIzS,KAAKo4D,aAAaC,UAAUluC,KAAK1X,GAEzB,GAAjCzS,KAAKo4D,aAAahuC,GAAGmc,WACvBvmC,KAAKo4D,aAAaC,UAAUjuC,GAAKpqB,KAAK49D,yBAAyB71C,GAC/D/nB,KAAKo4D,aAAahuC,GAAG5X,EAAIxS,KAAKo4D,aAAaC,UAAUjuC,GAAG5X,EACxDxS,KAAKo4D,aAAahuC,GAAG3X,EAAIzS,KAAKo4D,aAAaC,UAAUjuC,GAAG3X,GAG1DzS,KAAKo4D,aAAajuC,KAAK8mB,KAAKlpB,GAC5B/nB,KAAKo4D,aAAahuC,GAAG6mB,KAAKlpB,OAG1B/nB,MAAKo4D,cAAgBjuC,KAAK,KAAMC,GAAG,KAAMiuC,eAQ7Cj1D,EAAK8Q,UAAU2pD,oBAAsB,WACnC79D,KAAK63D,WAAa73D,KAAKmqB,KACvBnqB,KAAK83D,SAAW93D,KAAKoqB,GACrBpqB,KAAKm4D,qBAAsB,GAO7B/0D,EAAK8Q,UAAU4pD,qBAAuB,WACpC99D,KAAKo3D,OAASp3D,KAAKmqB,KAAK9pB,GACxBL,KAAKm3D,KAAOn3D,KAAKoqB,GAAG/pB,GAChBL,KAAKo3D,QAAUp3D,KAAK63D,WAAWx3D,GACjCL,KAAK63D,WAAWe,WAAW54D,MAEpBA,KAAKm3D,MAAQn3D,KAAK83D,SAASz3D,IAClCL,KAAK83D,SAASc,WAAW54D,MAG3BA,KAAK63D,WAAa,KAClB73D,KAAK83D,SAAW,KAChB93D,KAAKm4D,qBAAsB,GAW7B/0D,EAAK8Q,UAAU6pD,wBAA0B,SAASvrD,EAAEC,GAClD,GAAI4lD,GAAYr4D,KAAKo4D,aAAaC,UAC9B2F,EAAex5D,KAAKgsB,KAAKhsB,KAAKkwB,IAAIliB,EAAI6lD,EAAUluC,KAAK3X,EAAE,GAAKhO,KAAKkwB,IAAIjiB,EAAI4lD,EAAUluC,KAAK1X,EAAE,IAC1FwrD,EAAez5D,KAAKgsB,KAAKhsB,KAAKkwB,IAAIliB,EAAI6lD,EAAUjuC,GAAG5X,EAAI,GAAKhO,KAAKkwB,IAAIjiB,EAAI4lD,EAAUjuC,GAAG3X,EAAI,GAE9F,OAAmB,IAAfurD,GACFh+D,KAAKs4D,cAAgBt4D,KAAKmqB,KAC1BnqB,KAAKmqB,KAAOnqB,KAAKo4D,aAAajuC,KACvBnqB,KAAKo4D,aAAajuC,MAEL,GAAb8zC,GACPj+D,KAAKs4D,cAAgBt4D,KAAKoqB,GAC1BpqB,KAAKoqB,GAAKpqB,KAAKo4D,aAAahuC,GACrBpqB,KAAKo4D,aAAahuC,IAGlB,MASXhnB,EAAK8Q,UAAUgqD,qBAAuB,WACG,GAAnCl+D,KAAKo4D,aAAajuC,KAAKoc,UACzBvmC,KAAKmqB,KAAOnqB,KAAKs4D,cACjBt4D,KAAKs4D,cAAgB,KACrBt4D,KAAKo4D,aAAajuC,KAAKyc,YAEiB,GAAjC5mC,KAAKo4D,aAAahuC,GAAGmc,WAC5BvmC,KAAKoqB,GAAKpqB,KAAKs4D,cACft4D,KAAKs4D,cAAgB,KACrBt4D,KAAKo4D,aAAahuC,GAAGwc,aAUzBxjC,EAAK8Q,UAAUypD,2BAA6B,SAAS51C,GAEnD,GAAIo2C,EACJ,IAAyC,GAArCn+D,KAAKkP,QAAQk0C,aAAaj0C,QAC5BgvD,EAAqBn+D,KAAKi8D,qBAAoB,EAAMl0C,OAEjD,CACH,GAAIypC,GAAQhtD,KAAKm2D,MAAO36D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrEoN,EAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5B+pD,EAAoBh4D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAE7Cu+C,EAAiBp+D,KAAKmqB,KAAK+xC,iBAAiBn0C,EAAKypC,EAAQhtD,KAAKgoB,IAC9D6xC,GAAmB7B,EAAoB4B,GAAkB5B,CAC7D2B,MACAA,EAAmB3rD,EAAI,EAAoBxS,KAAKmqB,KAAK3X,GAAK,EAAI6rD,GAAmBr+D,KAAKoqB,GAAG5X,EACzF2rD,EAAmB1rD,EAAI,EAAoBzS,KAAKmqB,KAAK1X,GAAK,EAAI4rD,GAAmBr+D,KAAKoqB,GAAG3X,EAG3F,MAAO0rD,IAST/6D,EAAK8Q,UAAU0pD,yBAA2B,SAAS71C,GAEjD,GAAuBu2C,EACvB,IAAyC,GAArCt+D,KAAKkP,QAAQk0C,aAAaj0C,QAC5BmvD,EAAmBt+D,KAAKi8D,qBAAoB,EAAOl0C,OAEhD,CACH,GAAIypC,GAAQhtD,KAAKm2D,MAAO36D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrEoN,EAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5B+pD,EAAoBh4D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAC7C48C,EAAez8D,KAAKoqB,GAAG8xC,iBAAiBn0C,EAAKypC,GAC7CkL,GAAiBF,EAAoBC,GAAgBD,CAEzD8B,MACAA,EAAiB9rD,GAAK,EAAIkqD,GAAiB18D,KAAKmqB,KAAK3X,EAAIkqD,EAAgB18D,KAAKoqB,GAAG5X,EACjF8rD,EAAiB7rD,GAAK,EAAIiqD,GAAiB18D,KAAKmqB,KAAK1X,EAAIiqD,EAAgB18D,KAAKoqB,GAAG3X,EAGnF,MAAO6rD,IAGTz+D,EAAOD,QAAUwD,GAIb,SAASvD,EAAQD,EAASM,GAQ9B,QAASmD,KACPrD,KAAKwX,QACLxX,KAAKu+D,aAAe,EACpBv+D,KAAKw+D,eACLx+D,KAAKy+D,WAAa,EAClBz+D,KAAKgkD,kBAAmB,EAXf9jD,EAAoB,EAkB/BmD,GAAOq7D,UACJ5xD,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","b","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","args","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","groupChanged","_moveToGroup","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","stopPropagation","removeFromDataSet","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","status","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","requested","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","hooks__hooks","hookCallback","setHookCallback","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","input","res","hasOwnProp","utc__createUTC","createLocalOrUTC","utc","valid__isValid","_isValid","getTime","_pf","_strict","bigHour","valid__createInvalid","flags","NaN","copyConfig","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","dontConvert","lengthDiff","diffs","Locale","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","globalLocale","_abbr","locales__getSetGlobalLocale","locales__getLocale","defineLocale","abbr","set","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","makeGetSet","keepTime","get_set__set","get_set__get","mom","getSet","zeroFill","number","targetLength","forceSign","output","addFormatToken","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","isValid","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","unescapeFormat","matched","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","UTC","getUTCDate","localeMonths","_months","localeMonthsShort","_monthsShort","localeMonthsParse","monthName","_monthsParse","_longMonthsParse","_shortMonthsParse","months","monthsShort","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecateSimple","deprecations","configFromISO","l","string","from_string__isoRegex","isoDates","isoTimes","matchOffset","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","createDate","ms","createUTCDate","setUTCFullYear","daysInYear","isLeapYear","getIsLeapYear","weekOfYear","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","local__createLocal","week","localeWeek","_week","dow","doy","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","dayOfYearFromWeeks","daysToAdd","getUTCDay","getSetDayOfYear","startOf","defaults","currentDateArray","_useUTC","getUTCFullYear","getUTCMonth","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","temp","GG","W","E","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","_meridiem","meridiem","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","createFromConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","years","quarters","quarter","weeks","days","_milliseconds","_days","_bubble","isDuration","separator","utcOffset","offsetFromString","matches","chunk","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","create__isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","period","dur","tmp","isAdding","calendar__calendar","sod","calendar","inputMs","endOf","isBetween","absFloor","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","moment_format__toISOString","inputString","postformat","withoutSuffix","humanize","fromNow","newLocaleData","isoWeekday","to_type__valueOf","unix","moment_valid__isValid","parsingFlags","invalidAt","addWeekYearFormatToken","getter","weeksInYear","getSetWeekYear","getSetISOWeekYear","getISOWeeksInYear","getWeeksInYear","weekInfo","getSetQuarter","parseWeekday","weekdaysParse","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","localeWeekdaysParse","weekdayName","_weekdaysParse","weekdays","weekdaysShort","weekdaysMin","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","lowercase","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","millisecond__milliseconds","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","locale_calendar__calendar","_calendar","_longDateFormat","_invalidDate","_ordinal","preParsePostFormat","relative__relativeTime","isFuture","_relativeTime","pastFuture","set__set","_ordinalParseLenient","_ordinalParse","lists__get","setter","list","out","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","bubble","daysToYears","yearsToDays","as__valueOf","makeAs","alias","get__get","makeGetter","substituteTimeAgo","relativeTime","humanize__relativeTime","posNegDuration","thresholds","humanize__getSetRelativeTimeThreshold","limit","withSuffix","iso_string__toISOString","Y","iso_string__abs","D","asSeconds","match1","match2","match3","match4","match6","match1to2","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","isoWeekYear","getSetDayOfMonth","invalidWeekday","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","defaultLocaleMeridiemParse","getSetHour","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","toJSON","isoWeek","isoWeeks","isoWeeksInYear","isDST","isDSTShifted","zoneAbbr","zoneName","zone","momentPrototype","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","prototype__proto","firstDayOfYear","ordinalParse","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","get__milliseconds","duration_prototype__proto","toIsoString","version","invalid","relativeTimeThreshold","_moment","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index c7591de0..9a3af43e 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -4,7 +4,7 @@ * * A dynamic, browser-based visualization library. * - * @version 3.11.1-SNAPSHOT + * @version 3.12.0 * @date 2015-04-07 * * @license @@ -22,18 +22,23 @@ * * Vis.js may be distributed under either license. */ -"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);else for(var s in t)t.hasOwnProperty(s)&&e.hasOwnProperty(s)&&(i[e[s]]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var D=this.yLabel;D.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(D,o.x,o.y));var S=this.zLabel;S.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(S,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+D.x/S/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
    x:"+t.point.x+"
    y:"+t.point.y+"
    z:"+t.point.z+"
    ",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index] -},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)?m="current-time":o.hasParent(u,this.dom.center)&&(m="background"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},s.prototype.getEventProperties=function(t){var e=t.gesture?t.gesture.center.pageX:t.pageX,i=t.gesture?t.gesture.center.pageY:t.pageY,s=e-o.getAbsoluteLeft(this.dom.centerContainer),n=i-o.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(s),a=o.getTarget(t),h=null;o.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&o.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":o.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":o.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":o.hasParent(a,this.customTime.bar)?h="custom-time":o.hasParent(a,this.currentTime.bar)?h="current-time":o.hasParent(a,this.dom.center)&&(h="background");var d=[],l=this.linegraph.yAxisLeft,c=this.linegraph.yAxisRight;return l.hidden||d.push(l.screenToValue(n)),c.hidden||d.push(c.screenToValue(n)),{event:t,what:h,pageX:e,pageY:i,x:s,y:n,time:r,value:d}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start -})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){t.preventDefault(),t.stopPropagation(),e.parent.removeFromDataSet(e)}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg) -},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&!(a instanceof f)&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.pageY:t.pageY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1; -var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=this.nodesData._fieldId||null,s=0,o=t.length;o>s;s++){e=t[s];var n=this.nodesData.get(e);i&&(n.id=n[i]);var r=new f(n,this.images,this.groups,this.constants);if(this.nodes[e]=r,!(0!=r.xFixed&&0!=r.yFixed||null!==r.x&&null!==r.y)){var a=1*t.length+10,h=2*Math.PI*Math.random();0==r.xFixed&&(r.x=a*Math.cos(h)),0==r.yFixed&&(r.y=a*Math.sin(h))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=this.edgesData._fieldId,o=0,n=t.length;n>o;o++){var r=t[o],a=e[r];a&&a.disconnect();var h=i.get(r,{showInternalIds:!0});s&&(h.id=h[s]),e[r]=new g(h,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t){void 0===t&&(t=!1),this.redrawRequested=!1;var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.clientWidth,s=this.frame.canvas.clientHeight;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),t===!0&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes(); -for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy -},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(){if(!this.width){var t=5,e={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=e.width+2*t,this.height=e.height+2*t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(e.width+2*t)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=M.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=M.DELIMITER);var i=E+n();if(C[i])return N=M.DELIMITER,k=i,o(),void o();if(C[E])return N=M.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=M.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=M.IDENTIFIER)}for(N=M.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==M.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=M.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=M.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==M.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=M.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=M.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=M.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function S(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),D(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=M.NULL,I=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=S},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",D=t.length,S=0;D-1>S;S++)s=0==S?t[0]:t[S-1],o=t[S],n=t[S+1],r=D>S+2?t[S+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg,c[d].label)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&R(t),_(this,t),this._d=new Date(+t._d),Mi===!1&&(Mi=!0,Ce.updateOffset(this),Mi=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&L(t[s])!==L(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function I(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function L(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function A(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function P(t){return F(t)?366:365}function F(t){return t%4===0&&t%100!==0||t%400===0}function R(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Ae]<1||t._a[Ae]>z(t._a[Le],t._a[ze])?Ae:t._a[Pe]<0||t._a[Pe]>24||24===t._a[Pe]&&(0!==t._a[Fe]||0!==t._a[Re]||0!==t._a[He])?Pe:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[Re]<0||t._a[Re]>59?Re:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Le>e||e>Ae)&&(e=Ae),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+L(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(L(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=L(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ae]=L(e));break;case"Do":null!=e&&(o[Ae]=L(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=L(e));break;case"YY":o[Le]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Le]=L(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Pe]=L(e);break;case"m":case"mm":o[Fe]=L(e);break;case"s":case"ss":o[Re]=L(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=L(1e3*("0."+e));break;case"x":i._d=new Date(L(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=L(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Le],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Le],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Ae]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Le],s[Le]),t._dayOfYear>P(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Ae]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Pe]&&0===t._a[Fe]&&0===t._a[Re]&&0===t._a[He]&&(t._nextDay=!0,t._a[Pe]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pe]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Pe]<=12&&(t._pf.bigHour=n),t._a[Pe]=f(t._locale,t._a[Pe],t._meridiem),$(t),R(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:P(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return L(this.milliseconds()/100)},SS:function(){return w(L(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+":"+w(L(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(L(t/60),2)+w(L(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Di={},Si=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Mi=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:L(h[Ae])*i,h:L(h[Pe])*i,m:L(h[Fe])*i,s:L(h[Re])*i,ms:L(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=S(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Si.length-1;Oe>=0;--Oe)I(Si[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return L(t)+(L(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:M(1,"add"),subtract:M(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return F(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return A(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return A(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(De(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*L(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(De(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Se(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===L(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce -}.call(e,i,e,o),!(s!==n&&(o.exports=s)),Me(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){S.register(t)}),w.onTouch(a.DOCUMENT,v,S.detect),w.onTouch(a.DOCUMENT,y,S.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(S,d),a&&(d.changedLength=h,d.eventType=a,s.call(S,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(S,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return D.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||D.matchType(u,s)?o=u:D.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return S.stopDetect()}}}},D=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},S=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?S.startDetect(i,t):t.eventType==_&&S.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=S.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=S.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=S.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=S.current,h=S.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); -var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=70},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t,e){for(var i=1,s=arguments.length;s>i;i++){var o=arguments[i];for(var n in o)o.hasOwnProperty(n)&&(t[n]=o[n])}return t},e.selectiveExtend=function(t,e,i){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var s=2;si;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e,i){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(t){var e,i,s,n,r=this,a=o.getType(arguments[0]);"String"==a||"Number"==a?(e=arguments[0],s=arguments[1],n=arguments[2]):"Array"==a?(i=arguments[0],s=arguments[1],n=arguments[2]):(s=arguments[0],n=arguments[1]);var h;if(s&&s.returnType){var d=["DataTable","Array","Object"];if(h=-1==d.indexOf(s.returnType)?"Array":s.returnType,n&&h!=o.getType(n))throw new Error('Type of parameter "data" ('+o.getType(n)+") does not correspond with specified options.type ("+s.type+")");if("DataTable"==h&&!o.isDataTable(n))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else h=n&&"DataTable"==o.getType(n)?"DataTable":"Array";var l,c,p,u,m=s&&s.type||this._options.type,f=s&&s.filter,g=[];if(void 0!=e)l=r._getItem(e,m),f&&!f(l)&&(l=null);else if(void 0!=i)for(p=0,u=i.length;u>p;p++)l=r._getItem(i[p],m),(!f||f(l))&&g.push(l);else for(c in this._data)this._data.hasOwnProperty(c)&&(l=r._getItem(c,m),(!f||f(l))&&g.push(l));if(s&&s.order&&void 0==e&&this._sort(g,s.order),s&&s.fields){var v=s.fields;if(void 0!=e)l=this._filterFields(l,v);else for(p=0,u=g.length;u>p;p++)g[p]=this._filterFields(g[p],v)}if("DataTable"==h){var y=this._getColumnNames(n);if(void 0!=e)r._appendRow(n,y,l);else for(p=0;pp;p++)n.push(g[p]);return n}return g},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);else for(var s in t)t.hasOwnProperty(s)&&e.hasOwnProperty(s)&&(i[e[s]]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t,e,i){function s(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}s.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},s.extend=function(t,e){var i=new s(e);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){i.flush()};var o=[{name:"flush",original:void 0}];if(e&&e.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},s.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var S=this.yLabel;S.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(S,o.x,o.y));var D=this.zLabel;D.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(D,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/D/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
    x:"+t.point.x+"
    y:"+t.point.y+"
    z:"+t.point.z+"
    ",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]; + +},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t,e,i){function s(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}s.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},s.prototype.setStep=function(t,e){void 0===t||0>=t||(void 0!==e&&(this.prettyStep=e),this._step=this.prettyStep===!0?s.calculatePrettyStep(t):t)},s.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},s.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},s.prototype.getStep=function(){return this._step},s.prototype.start=function(){this._current=this._start-this._start%this._step},s.prototype.next=function(){this._current+=this._step},s.prototype.end=function(){return this._current>this._end},t.exports=s},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)?m="current-time":o.hasParent(u,this.dom.center)&&(m="background"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},s.prototype.getEventProperties=function(t){var e=t.gesture?t.gesture.center.pageX:t.pageX,i=t.gesture?t.gesture.center.pageY:t.pageY,s=e-o.getAbsoluteLeft(this.dom.centerContainer),n=i-o.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(s),a=o.getTarget(t),h=null;o.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&o.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":o.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":o.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":o.hasParent(a,this.customTime.bar)?h="custom-time":o.hasParent(a,this.currentTime.bar)?h="current-time":o.hasParent(a,this.dom.center)&&(h="background");var d=[],l=this.linegraph.yAxisLeft,c=this.linegraph.yAxisRight;return l.hidden||d.push(l.screenToValue(n)),c.hidden||d.push(c.screenToValue(n)),{event:t,what:h,pageX:e,pageY:i,x:s,y:n,time:r,value:d}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t,e,i){function s(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}s.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},s.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},s.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},s.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},s.prototype.hasNext=function(){return this.current>=this.marginStart},s.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},s.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},s.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},s.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=s},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(t){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e,i){var s=.001; + +e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-i.vertical+se.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(t){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){t.preventDefault(),t.stopPropagation(),e.parent.removeFromDataSet(e)}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e){this.options=null,this.props=null}s.prototype.setOptions=function(t){t&&util.extend(this.options,t)},s.prototype.redraw=function(){return!1},s.prototype.destroy=function(){},s.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%", +this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;ro;o++){var r=this.visibleItems[o];r.repositionY(e)}return s},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,s){i._onAdd(e.items)},update:function(t,e,s){i._onUpdate(e.items)},remove:function(t,e,s){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,s){i._onAddGroups(e.items)},update:function(t,e,s){i._onUpdateGroups(e.items)},remove:function(t,e,s){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&!(a instanceof f)&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.pageY:t.pageY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,s){i._onAdd(e.items)},update:function(t,e,s){i._onUpdate(e.items)},remove:function(t,e,s){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,s){i._onAddGroups(e.items)},update:function(t,e,s){i._onUpdateGroups(e.items)},remove:function(t,e,s){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150, +nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(t){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(t){this.drag.dragging=!1;var e=this.drag.selection;e&&e.length?(e.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=this.nodesData._fieldId||null,s=0,o=t.length;o>s;s++){e=t[s];var n=this.nodesData.get(e);i&&(n.id=n[i]);var r=new f(n,this.images,this.groups,this.constants);if(this.nodes[e]=r,!(0!=r.xFixed&&0!=r.yFixed||null!==r.x&&null!==r.y)){var a=1*t.length+10,h=2*Math.PI*Math.random();0==r.xFixed&&(r.x=a*Math.cos(h)),0==r.yFixed&&(r.y=a*Math.sin(h))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=this.edgesData._fieldId,o=0,n=t.length;n>o;o++){var r=t[o],a=e[r];a&&a.disconnect();var h=i.get(r,{showInternalIds:!0});s&&(h.id=h[s]),e[r]=new g(h,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t,e){void 0===t&&(t=!1),this.redrawRequested=!1;var i=this.frame.canvas.getContext("2d");i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var s=this.frame.canvas.clientWidth,o=this.frame.canvas.clientHeight;i.clearRect(0,0,s,o),i.save(),i.translate(this.translation.x,this.translation.y),i.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",i),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",i)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",i,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",i),i.restore(),t===!0&&i.clearRect(0,0,s,o)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this))); +else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t,e,i){function s(){this.images={},this.imageBroken={},this.callback=void 0}s.prototype.setOnloadCallback=function(t){this.callback=t},s.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=s},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1, +this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(t){throw"Draw method not initialized for node"},s.prototype.resize=function(t){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(t){if(!this.width||!this.height){var e,i;if(this.value){this.options.radius=this.baseRadiusValue;var s=this.imageObj.height/this.imageObj.width;void 0!==s?(e=this.options.radius||this.imageObj.width,i=this.options.radius*s||this.imageObj.height):(e=0,i=0)}else e=this.imageObj.width,i=this.imageObj.height;this.width=e,this.height=i,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-e)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(t){if(!this.width){this.options.radius=this.baseRadiusValue;var e=2*this.options.radius;this.width=e,this.height=e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-e}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(t){if(!this.width){var e=5,i={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=h(o.attr,t.node))),i=n.length-1;i>=0;i--){var a=n[i];a.nodes||(a.nodes=[]),-1==a.nodes.indexOf(o)&&a.nodes.push(o)}e.attr&&(o.attr=h(o.attr,e.attr))}function c(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function p(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=h({},t.edge)),n.attr=h(n.attr||{},o),n}function u(){for(I=C.NULL,N="";" "==k||" "==k||"\n"==k||"\r"==k;)n();do{var t=!1;if("#"==k){for(var e=E-1;" "==O.charAt(e)||" "==O.charAt(e);)e--;if("\n"==O.charAt(e)||""==O.charAt(e)){for(;""!=k&&"\n"!=k;)n();t=!0}}if("/"==k&&"/"==r()){for(;""!=k&&"\n"!=k;)n();t=!0}if("/"==k&&"*"==r()){for(;""!=k;){if("*"==k&&"/"==r()){n(),n();break}n()}t=!0}for(;" "==k||" "==k||"\n"==k||"\r"==k;)n()}while(t);if(""==k)return void(I=C.DELIMITER);var i=k+r();if(T[i])return I=C.DELIMITER,N=i,n(),void n();if(T[k])return I=C.DELIMITER,N=k,void n();if(a(k)||"-"==k){for(N+=k,n();a(k);)N+=k,n();return"false"==N?N=!1:"true"==N?N=!0:isNaN(Number(N))||(N=Number(N)),void(I=C.IDENTIFIER)}if('"'==k){for(n();""!=k&&('"'!=k||'"'==k&&'"'==r());)N+=k,'"'==k&&n(),n();if('"'!=k)throw w('End of string " expected');return n(),void(I=C.IDENTIFIER)}for(I=C.UNKNOWN;""!=k;)N+=k,n();throw new SyntaxError('Syntax error in part "'+S(N,30)+'"')}function m(){var t={};if(o(),u(),"strict"==N&&(t.strict=!0,u()),("graph"==N||"digraph"==N)&&(t.type=N,u()),I==C.IDENTIFIER&&(t.id=N,u()),"{"!=N)throw w("Angle bracket { expected");if(u(),f(t),"}"!=N)throw w("Angle bracket } expected");if(u(),""!==N)throw w("End of file expected");return u(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==N&&"}"!=N;)g(t),";"==N&&u()}function g(t){var e=v(t);if(e)return void _(t,e);var i=y(t);if(!i){if(I!=C.IDENTIFIER)throw w("Identifier expected");var s=N;if(u(),"="==N){if(u(),I!=C.IDENTIFIER)throw w("Identifier expected");t[s]=N,u()}else b(t,s)}}function v(t){var e=null;if("subgraph"==N&&(e={},e.type="subgraph",u(),I==C.IDENTIFIER&&(e.id=N,u())),"{"==N){if(u(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=N)throw w("Angle bracket } expected");u(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function y(t){return"node"==N?(u(),t.node=x(),"node"):"edge"==N?(u(),t.edge=x(),"edge"):"graph"==N?(u(),t.graph=x(),"graph"):null}function b(t,e){var i={id:e},s=x();s&&(i.attr=s),l(t,i),_(t,e)}function _(t,e){for(;"->"==N||"--"==N;){var i,s=N;u();var o=v(t);if(o)i=o;else{if(I!=C.IDENTIFIER)throw w("Identifier or subgraph expected");i=N,l(t,{id:i}),u()}var n=x(),r=p(t,e,i,s,n);c(t,r),e=i}}function x(){for(var t=null;"["==N;){for(u(),t={};""!==N&&"]"!=N;){if(I!=C.IDENTIFIER)throw w("Attribute name expected");var e=N;if(u(),"="!=N)throw w("Equal sign = expected");if(u(),I!=C.IDENTIFIER)throw w("Attribute value expected");var i=N;d(t,e,i),u(),","==N&&u()}if("]"!=N)throw w("Bracket ] expected");u()}return t}function w(t){return new SyntaxError(t+', got "'+S(N,30)+'" (char '+E+")")}function S(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){var e=s(t),i={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};h(e,t.attr),e.image&&(e.shape="image"),i.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return h(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,s;e=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);i.edges.push(e)}),D(e,s,function(e,s){var n=p(i,e.id,s.id,t.type,t.attr),r=o(n);i.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);i.edges.push(e)})})}return e.attr&&(i.options=e.attr),i}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},T={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},O="",E=0,k="",N="",I=C.NULL,L=/[a-zA-Z_0-9.:#]/;e.parseDOT=s,e.DOTToGraph=M},function(t,e,i){function s(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg,c[d].label)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){function s(t){return t?o(t):void 0}function o(t){for(var e in s.prototype)t[e]=s.prototype[e];return t}t.exports=s,s.prototype.on=s.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},s.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},s.prototype.off=s.prototype.removeListener=s.prototype.removeAllListeners=s.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},s.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},s.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){var s,o,n;!function(i,r){o=[],s=r,n="function"==typeof s?s.apply(e,o):s,!(void 0!==n&&(t.exports=n))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;o0)for(i in Ei)s=Ei[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function u(t){p(this,t),this._d=new Date(+t._d),ki===!1&&(ki=!0,e.updateOffset(this),ki=!1)}function m(t){return t instanceof u||null!=t&&a(t,"_isAMomentObject")}function f(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function g(t,e,i){var s,o=Math.min(t.length,e.length),n=Math.abs(t.length-e.length),r=0;for(s=0;o>s;s++)(i&&t[s]!==e[s]||!i&&f(t[s])!==f(e[s]))&&r++;return r+n}function v(){}function y(t){return t?t.toLowerCase().replace("_","-"):t}function b(t){for(var e,i,s,o,n=0;n0;){if(s=_(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&g(o,i,!0)>=e-1)break;e--}n++}return null}function _(e){var i=null;if(!Ni[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Oi._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),x(i)}catch(s){}return Ni[e]}function x(t,e){var i;return t&&(i="undefined"==typeof e?S(t):w(t,e),i&&(Oi=i)),Oi._abbr}function w(t,e){return null!==e?(e.abbr=t,Ni[t]||(Ni[t]=new v),Ni[t].set(e),x(t),Ni[t]):(delete Ni[t],null)}function S(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Oi;if(!o(t)){if(e=_(t))return e;t=[t]}return b(t)}function D(t,e){var i=t.toLowerCase();Ii[i]=Ii[i+"s"]=Ii[e]=t}function M(t){return"string"==typeof t?Ii[t]||Ii[t.toLowerCase()]:void 0}function C(t){var e,i,s={};for(i in t)a(t,i)&&(e=M(i),e&&(s[e]=t[i]));return s}function T(t,i){return function(s){return null!=s?(E(this,t,s),e.updateOffset(this,i),this):O(this,t)}}function O(t,e){return t._d["get"+(t._isUTC?"UTC":"")+e]()}function E(t,e,i){return t._d["set"+(t._isUTC?"UTC":"")+e](i)}function k(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=M(t),"function"==typeof this[t])return this[t](e);return this}function N(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengthe;e++)s[e]=Pi[s[e]]?Pi[s[e]]:L(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function A(t,e){return t.isValid()?(e=P(e,t.localeData()),Ai[e]||(Ai[e]=z(e)),Ai[e](t)):t.localeData().invalidDate()}function P(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(zi.lastIndex=0;s>=0&&zi.test(t);)t=t.replace(zi,i),zi.lastIndex=0,s-=1;return t}function F(t,e,i){Ki[t]="function"==typeof e?e:function(t){return t&&i?i:e}}function R(t,e){return a(Ki,t)?Ki[t](e._strict,e._locale):new RegExp(H(t))}function H(t){return t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function B(t,e){var i,s=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(s=function(t,i){i[e]=f(t)}),i=0;is;s++){if(o=d([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}}function X(t,e){var i;return"string"==typeof e&&(e=t.localeData().monthsParse(e),"number"!=typeof e)?t:(i=Math.min(t.date(),G(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t)}function q(t){return null!=t?(X(this,t),e.updateOffset(this,!0),this):O(this,"Month")}function Z(){return G(this.year(),this.month())}function Q(t){var e,i=t._a;return i&&-2===t._pf.overflow&&(e=i[ts]<0||i[ts]>11?ts:i[es]<1||i[es]>G(i[Ji],i[ts])?es:i[is]<0||i[is]>24||24===i[is]&&(0!==i[ss]||0!==i[os]||0!==i[ns])?is:i[ss]<0||i[ss]>59?ss:i[os]<0||i[os]>59?os:i[ns]<0||i[ns]>999?ns:-1,t._pf._overflowDayOfYear&&(Ji>e||e>es)&&(e=es),t._pf.overflow=e),t}function K(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function $(t,e){var i=!0;return h(function(){return i&&(K(t),i=!1),e.apply(this,arguments)},e)}function J(t,e){hs[t]||(K(e),hs[t]=!0)}function tt(t){var e,i,s=t._i,o=ds.exec(s);if(o){for(t._pf.iso=!0,e=0,i=ls.length;i>e;e++)if(ls[e][1].exec(s)){t._f=ls[e][0]+(o[6]||" ");break}for(e=0,i=cs.length;i>e;e++)if(cs[e][1].exec(s)){t._f+=cs[e][0];break}s.match(qi)&&(t._f+="Z"),bt(t)}else t._isValid=!1}function et(t){var i=ps.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(tt(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function it(t,e,i,s,o,n,r){var a=new Date(t,e,i,s,o,n,r);return 1970>t&&a.setFullYear(t),a}function st(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ot(t){return nt(t)?366:365}function nt(t){return t%4===0&&t%100!==0||t%400===0}function rt(){return nt(this.year())}function at(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ct(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ht(t){return at(t,this._week.dow,this._week.doy).week}function dt(){return this._week.dow}function lt(){return this._week.doy}function ct(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function pt(t){var e=at(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function ut(t,e,i,s,o){var n,r,a=st(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:ot(t-1)+r}}function mt(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function ft(t,e,i){return null!=t?t:null!=e?e:i}function gt(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function vt(t){var e,i,s,o,n=[];if(!t._d){for(s=gt(t),t._w&&null==t._a[es]&&null==t._a[ts]&&yt(t),t._dayOfYear&&(o=ft(t._a[Ji],s[Ji]),t._dayOfYear>ot(o)&&(t._pf._overflowDayOfYear=!0),i=st(o,0,t._dayOfYear),t._a[ts]=i.getUTCMonth(),t._a[es]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[is]&&0===t._a[ss]&&0===t._a[os]&&0===t._a[ns]&&(t._nextDay=!0,t._a[is]=0),t._d=(t._useUTC?st:it).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[is]=24)}}function yt(t){var e,i,s,o,n,r,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,r=4,i=ft(e.GG,t._a[Ji],at(Ct(),1,4).year),s=ft(e.W,1),o=ft(e.E,1)):(n=t._locale._week.dow,r=t._locale._week.doy,i=ft(e.gg,t._a[Ji],at(Ct(),n,r).year),s=ft(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),a=ut(i,s,o,r,n),t._a[Ji]=a.year,t._dayOfYear=a.dayOfYear}function bt(t){if(t._f===e.ISO_8601)return void tt(t);t._a=[],t._pf.empty=!0;var i,s,o,n,r,a=""+t._i,h=a.length,d=0;for(o=P(t._f,t._locale).match(Li)||[],i=0;i0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(s)+s.length),d+=s.length),Pi[n]?(s?t._pf.empty=!1:t._pf.unusedTokens.push(n),W(n,s,t)):t._strict&&!s&&t._pf.unusedTokens.push(n);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[is]<=12&&(t._pf.bigHour=void 0),t._a[is]=_t(t._locale,t._a[is],t._meridiem),vt(t),Q(t)}function _t(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function xt(t){var e,i,o,n,r;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(n=0;nr)&&(o=r,i=e));h(t,i||e)}function wt(t){if(!t._d){var e=C(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],vt(t)}}function St(t){var e,i=t._i,s=t._f;return t._locale=t._locale||S(t._l),null===i||void 0===s&&""===i?c({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),m(i)?new u(Q(i)):(o(s)?xt(t):s?bt(t):Dt(t),e=new u(Q(t)),e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e))}function Dt(t){var i=t._i;void 0===i?t._d=new Date:n(i)?t._d=new Date(+i):"string"==typeof i?et(t):o(i)?(t._a=r(i.slice(0),function(t){return parseInt(t,10)}),vt(t)):"object"==typeof i?wt(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function Mt(t,e,i,o,n){var r={};return"boolean"==typeof i&&(o=i,i=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=n,r._l=i,r._i=t,r._f=e,r._strict=o,r._pf=s(),St(r)}function Ct(t,e,i,s){return Mt(t,e,i,s,!1)}function Tt(t,e){var i,s;if(1===e.length&&o(e[0])&&(e=e[0]),!e.length)return Ct();for(i=e[0],s=1;st&&(t=-t,i="-"),i+N(~~(t/60),2)+e+N(~~t%60,2)})}function Lt(t){var e=(t||"").match(qi)||[],i=e[e.length-1]||[],s=(i+"").match(vs)||["-",0,0],o=+(60*s[1])+f(s[2]);return"+"===s[0]?o:-o}function zt(t,i){var s,o;return i._isUTC?(s=i.clone(),o=(m(t)||n(t)?+t:+Ct(t))-+s,s._d.setTime(+s._d+o),e.updateOffset(s,!1),s):Ct(t).local()}function At(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Pt(t,i){var s,o=this._offset||0;return null!=t?("string"==typeof t&&(t=Lt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(s=At(this)),this._offset=t,this._isUTC=!0,null!=s&&this.add(s,"m"),o!==t&&(!i||this._changeInProgress?$t(this,Xt(t-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?o:At(this)}function Ft(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Rt(t){return this.utcOffset(0,t)}function Ht(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(At(this),"m")),this}function Bt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Lt(this._i)),this}function Yt(t){return t=t?Ct(t).utcOffset():0,(this.utcOffset()-t)%60===0}function Wt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Gt(){if(this._a){var t=this._isUTC?d(this._a):Ct(this._a);return this.isValid()&&g(this._a,t.toArray())>0}return!1}function jt(){return!this._isUTC}function Vt(){return this._isUTC}function Ut(){return this._isUTC&&0===this._offset}function Xt(t,e){var i,s,o,n=t,r=null;return Nt(t)?n={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(n={},e?n[e]=t:n.milliseconds=t):(r=ys.exec(t))?(i="-"===r[1]?-1:1,n={y:0,d:f(r[es])*i,h:f(r[is])*i,m:f(r[ss])*i,s:f(r[os])*i,ms:f(r[ns])*i}):(r=bs.exec(t))?(i="-"===r[1]?-1:1,n={y:qt(r[2],i),M:qt(r[3],i),d:qt(r[4],i),h:qt(r[5],i),m:qt(r[6],i),s:qt(r[7],i),w:qt(r[8],i)}):null==n?n={}:"object"==typeof n&&("from"in n||"to"in n)&&(o=Qt(Ct(n.from),Ct(n.to)),n={},n.ms=o.milliseconds,n.M=o.months),s=new kt(n),Nt(t)&&a(t,"_locale")&&(s._locale=t._locale),s}function qt(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Zt(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Qt(t,e){var i;return e=zt(e,t),t.isBefore(e)?i=Zt(t,e):(i=Zt(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i}function Kt(t,e){return function(i,s){var o,n;return null===s||isNaN(+s)||(J(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),n=i,i=s,s=n),i="string"==typeof i?+i:i,o=Xt(i,s),$t(this,o,t),this}}function $t(t,i,s,o){var n=i._milliseconds,r=i._days,a=i._months;o=null==o?!0:o,n&&t._d.setTime(+t._d+n*s),r&&E(t,"Date",O(t,"Date")+r*s),a&&X(t,O(t,"Month")+a*s),o&&e.updateOffset(t,r||a)}function Jt(t){var e=t||Ct(),i=zt(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ct(e)))}function te(){return new u(this)}function ee(t,e){var i;return e=M("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Ct(t),+this>+t):(i=m(t)?+t:+Ct(t),i<+this.clone().startOf(e))}function ie(t,e){var i;return e=M("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Ct(t),+t>+this):(i=m(t)?+t:+Ct(t),+this.clone().endOf(e)t?Math.ceil(t):Math.floor(t)}function re(t,e,i){var s,o,n=zt(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=M(e),"year"===e||"month"===e||"quarter"===e?(o=ae(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:ne(o)}function ae(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function he(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function de(){var t=this.clone().utc();return 0e;e++)if(this._weekdaysParse[e]||(i=Ct([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function Pe(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Ne(t,this.localeData()),this.add(t-e,"d")):e}function Fe(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Re(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function He(t,e){I(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Be(t,e){return e._meridiemParse}function Ye(t){return"p"===(t+"").toLowerCase().charAt(0)}function We(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Ge(t){I(0,[t,3],0,"millisecond")}function je(){return this._isUTC?"UTC":""}function Ve(){return this._isUTC?"Coordinated Universal Time":""}function Ue(t){return Ct(1e3*t)}function Xe(){return Ct.apply(null,arguments).parseZone()}function qe(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.call(e,i):s}function Ze(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e}function Qe(){return this._invalidDate}function Ke(t){return this._ordinal.replace("%d",t)}function $e(t){return t}function Je(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)}function ti(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)}function ei(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function ii(t,e,i,s){var o=S(),n=d().set(s,e);return o[i](n,t)}function si(t,e,i,s,o){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return ii(t,e,i,o);var n,r=[];for(n=0;s>n;n++)r[n]=ii(t,n,i,o);return r}function oi(t,e){return si(t,e,"months",12,"month")}function ni(t,e){return si(t,e,"monthsShort",12,"month")}function ri(t,e){return si(t,e,"weekdays",7,"day")}function ai(t,e){return si(t,e,"weekdaysShort",7,"day")}function hi(t,e){return si(t,e,"weekdaysMin",7,"day")}function di(){var t=this._data;return this._milliseconds=Ys(this._milliseconds),this._days=Ys(this._days),this._months=Ys(this._months),t.milliseconds=Ys(t.milliseconds),t.seconds=Ys(t.seconds),t.minutes=Ys(t.minutes),t.hours=Ys(t.hours),t.months=Ys(t.months),t.years=Ys(t.years),this}function li(t,e,i,s){var o=Xt(e,i);return t._milliseconds+=s*o._milliseconds,t._days+=s*o._days,t._months+=s*o._months,t._bubble()}function ci(t,e){return li(this,t,e,1)}function pi(t,e){return li(this,t,e,-1)}function ui(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;return r.milliseconds=s%1e3,t=ne(s/1e3),r.seconds=t%60,e=ne(t/60),r.minutes=e%60,i=ne(e/60),r.hours=i%24,o+=ne(i/24),a=ne(mi(o)),o-=ne(fi(a)),n+=ne(o/30),o%=30,a+=ne(n/12),n%=12,r.days=o,r.months=n,r.years=a,this}function mi(t){return 400*t/146097}function fi(t){return 146097*t/400}function gi(t){var e,i,s=this._milliseconds;if(t=M(t),"month"===t||"year"===t)return e=this._days+s/864e5,i=this._months+12*mi(e),"month"===t?i:i/12;switch(e=this._days+Math.round(fi(this._months/12)),t){case"week":return e/7+s/6048e5;case"day":return e+s/864e5;case"hour":return 24*e+s/36e5;case"minute":return 24*e*60+s/6e4;case"second":return 24*e*60*60+s/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+s;default:throw new Error("Unknown unit "+t)}}function vi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*f(this._months/12)}function yi(t){return function(){return this.as(t)}}function bi(t){return t=M(t),this[t+"s"]()}function _i(t){return function(){return this._data[t]}}function xi(){return ne(this.days()/7)}function wi(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function Si(t,e,i){var s=Xt(t).abs(),o=so(s.as("s")),n=so(s.as("m")),r=so(s.as("h")),a=so(s.as("d")),h=so(s.as("M")),d=so(s.as("y")),l=o0,l[4]=i,wi.apply(null,l)}function Di(t,e){return void 0===oo[t]?!1:void 0===e?oo[t]:(oo[t]=e,!0)}function Mi(t){var e=this.localeData(),i=Si(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function Ci(){var t=no(this.years()),e=no(this.months()),i=no(this.days()),s=no(this.hours()),o=no(this.minutes()),n=no(this.seconds()+this.milliseconds()/1e3),r=this.asSeconds();return r?(0>r?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"}var Ti,Oi,Ei=e.momentProperties=[],ki=!1,Ni={},Ii={},Li=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,zi=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ai={},Pi={},Fi=/\d/,Ri=/\d\d/,Hi=/\d{3}/,Bi=/\d{4}/,Yi=/[+-]?\d{6}/,Wi=/\d\d?/,Gi=/\d{1,3}/,ji=/\d{1,4}/,Vi=/[+-]?\d{1,6}/,Ui=/\d+/,Xi=/[+-]?\d+/,qi=/Z|[+-]\d\d:?\d\d/gi,Zi=/[+-]?\d+(\.\d{1,3})?/,Qi=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Ki={},$i={},Ji=0,ts=1,es=2,is=3,ss=4,os=5,ns=6;I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),I("MMMM",0,0,function(t){return this.localeData().months(this,t)}),D("month","M"),F("M",Wi),F("MM",Wi,Ri),F("MMM",Qi),F("MMMM",Qi),B(["M","MM"],function(t,e){e[ts]=f(t)-1}),B(["MMM","MMMM"],function(t,e,i,s){var o=i._locale.monthsParse(t,s,i._strict);null!=o?e[ts]=o:i._pf.invalidMonth=t});var rs="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),as="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),hs={};e.suppressDeprecationWarnings=!1;var ds=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ls=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],cs=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],ps=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=$("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),D("year","y"),F("Y",Xi),F("YY",Wi,Ri),F("YYYY",ji,Bi),F("YYYYY",Vi,Yi),F("YYYYYY",Vi,Yi),B(["YYYY","YYYYY","YYYYYY"],Ji),B("YY",function(t,i){i[Ji]=e.parseTwoDigitYear(t)}),e.parseTwoDigitYear=function(t){return f(t)+(f(t)>68?1900:2e3)};var us=T("FullYear",!1);I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),D("week","w"),D("isoWeek","W"),F("w",Wi),F("ww",Wi,Ri),F("W",Wi),F("WW",Wi,Ri),Y(["w","ww","W","WW"],function(t,e,i,s){e[s.substr(0,1)]=f(t)});var ms={dow:0,doy:6};I("DDD",["DDDD",3],"DDDo","dayOfYear"),D("dayOfYear","DDD"),F("DDD",Gi),F("DDDD",Hi),B(["DDD","DDDD"],function(t,e,i){i._dayOfYear=f(t)}),e.ISO_8601=function(){};var fs=$("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Ct.apply(null,arguments);return this>t?this:t}),gs=$("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Ct.apply(null,arguments);return t>this?this:t});It("Z",":"),It("ZZ",""),F("Z",qi),F("ZZ",qi),B(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Lt(t)});var vs=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var ys=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,bs=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,_s=Kt(1,"add"),xs=Kt(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var ws=$("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),De("gggg","weekYear"),De("ggggg","weekYear"),De("GGGG","isoWeekYear"),De("GGGGG","isoWeekYear"),D("weekYear","gg"),D("isoWeekYear","GG"),F("G",Xi),F("g",Xi),F("GG",Wi,Ri),F("gg",Wi,Ri),F("GGGG",ji,Bi),F("gggg",ji,Bi),F("GGGGG",Vi,Yi),F("ggggg",Vi,Yi),Y(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,s){e[s.substr(0,2)]=f(t)}),Y(["gg","GG"],function(t,i,s,o){i[o]=e.parseTwoDigitYear(t)}),I("Q",0,0,"quarter"),D("quarter","Q"),F("Q",Fi),B("Q",function(t,e){e[ts]=3*(f(t)-1)}),I("D",["DD",2],"Do","date"),D("date","D"),F("D",Wi),F("DD",Wi,Ri),F("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),B(["D","DD"],es),B("Do",function(t,e){e[es]=f(t.match(Wi)[0],10)});var Ss=T("Date",!0);I("d",0,"do","day"),I("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),I("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),I("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),D("day","d"),D("weekday","e"),D("isoWeekday","E"),F("d",Wi),F("e",Wi),F("E",Wi),F("dd",Qi),F("ddd",Qi),F("dddd",Qi),Y(["dd","ddd","dddd"],function(t,e,i){var s=i._locale.weekdaysParse(t);null!=s?e.d=s:i._pf.invalidWeekday=t}),Y(["d","e","E"],function(t,e,i,s){e[s]=f(t)});var Ds="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ms="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Cs="Su_Mo_Tu_We_Th_Fr_Sa".split("_");I("H",["HH",2],0,"hour"),I("h",["hh",2],0,function(){return this.hours()%12||12}),He("a",!0),He("A",!1),D("hour","h"),F("a",Be),F("A",Be),F("H",Wi),F("h",Wi),F("HH",Wi,Ri),F("hh",Wi,Ri),B(["H","HH"],is),B(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),B(["h","hh"],function(t,e,i){e[is]=f(t),i._pf.bigHour=!0});var Ts=/[ap]\.?m?\.?/i,Os=T("Hours",!0);I("m",["mm",2],0,"minute"),D("minute","m"),F("m",Wi),F("mm",Wi,Ri),B(["m","mm"],ss);var Es=T("Minutes",!1);I("s",["ss",2],0,"second"),D("second","s"),F("s",Wi),F("ss",Wi,Ri),B(["s","ss"],os);var ks=T("Seconds",!1);I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),Ge("SSS"),Ge("SSSS"),D("millisecond","ms"),F("S",Gi,Fi),F("SS",Gi,Ri),F("SSS",Gi,Hi),F("SSSS",Ui),B(["S","SS","SSS","SSSS"],function(t,e){e[ns]=f(1e3*("0."+t))});var Ns=T("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var Is=u.prototype;Is.add=_s,Is.calendar=Jt,Is.clone=te,Is.diff=re,Is.endOf=ge,Is.format=le,Is.from=ce,Is.fromNow=pe,Is.get=k,Is.invalidAt=Se,Is.isAfter=ee,Is.isBefore=ie,Is.isBetween=se,Is.isSame=oe,Is.isValid=xe,Is.lang=ws,Is.locale=ue,Is.localeData=me,Is.max=gs,Is.min=fs,Is.parsingFlags=we,Is.set=k,Is.startOf=fe,Is.subtract=xs,Is.toArray=_e,Is.toDate=be,Is.toISOString=de,Is.toJSON=de,Is.toString=he,Is.unix=ye,Is.valueOf=ve,Is.year=us,Is.isLeapYear=rt,Is.weekYear=Ce,Is.isoWeekYear=Te,Is.quarter=Is.quarters=ke,Is.month=q,Is.daysInMonth=Z,Is.week=Is.weeks=ct,Is.isoWeek=Is.isoWeeks=pt,Is.weeksInYear=Ee,Is.isoWeeksInYear=Oe,Is.date=Ss,Is.day=Is.days=Pe,Is.weekday=Fe,Is.isoWeekday=Re,Is.dayOfYear=mt,Is.hour=Is.hours=Os,Is.minute=Is.minutes=Es,Is.second=Is.seconds=ks,Is.millisecond=Is.milliseconds=Ns,Is.utcOffset=Pt,Is.utc=Rt,Is.local=Ht,Is.parseZone=Bt,Is.hasAlignedHourOffset=Yt,Is.isDST=Wt,Is.isDSTShifted=Gt,Is.isLocal=jt,Is.isUtcOffset=Vt,Is.isUtc=Ut,Is.isUTC=Ut,Is.zoneAbbr=je,Is.zoneName=Ve,Is.dates=$("dates accessor is deprecated. Use date instead.",Ss),Is.months=$("months accessor is deprecated. Use month instead",q),Is.years=$("years accessor is deprecated. Use year instead",us),Is.zone=$("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Ft); + +var Ls=Is,zs={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},As={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},Ps="Invalid date",Fs="%d",Rs=/\d{1,2}/,Hs={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Bs=v.prototype;Bs._calendar=zs,Bs.calendar=qe,Bs._longDateFormat=As,Bs.longDateFormat=Ze,Bs._invalidDate=Ps,Bs.invalidDate=Qe,Bs._ordinal=Fs,Bs.ordinal=Ke,Bs._ordinalParse=Rs,Bs.preparse=$e,Bs.postformat=$e,Bs._relativeTime=Hs,Bs.relativeTime=Je,Bs.pastFuture=ti,Bs.set=ei,Bs.months=j,Bs._months=rs,Bs.monthsShort=V,Bs._monthsShort=as,Bs.monthsParse=U,Bs.week=ht,Bs._week=ms,Bs.firstDayOfYear=lt,Bs.firstDayOfWeek=dt,Bs.weekdays=Ie,Bs._weekdays=Ds,Bs.weekdaysMin=ze,Bs._weekdaysMin=Cs,Bs.weekdaysShort=Le,Bs._weekdaysShort=Ms,Bs.weekdaysParse=Ae,Bs.isPM=Ye,Bs._meridiemParse=Ts,Bs.meridiem=We,x("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===f(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=$("moment.lang is deprecated. Use moment.locale instead.",x),e.langData=$("moment.langData is deprecated. Use moment.localeData instead.",S);var Ys=Math.abs,Ws=yi("ms"),Gs=yi("s"),js=yi("m"),Vs=yi("h"),Us=yi("d"),Xs=yi("w"),qs=yi("M"),Zs=yi("y"),Qs=_i("milliseconds"),Ks=_i("seconds"),$s=_i("minutes"),Js=_i("hours"),to=_i("days"),eo=_i("months"),io=_i("years"),so=Math.round,oo={s:45,m:45,h:22,d:26,M:11},no=Math.abs,ro=kt.prototype;ro.abs=di,ro.add=ci,ro.subtract=pi,ro.as=gi,ro.asMilliseconds=Ws,ro.asSeconds=Gs,ro.asMinutes=js,ro.asHours=Vs,ro.asDays=Us,ro.asWeeks=Xs,ro.asMonths=qs,ro.asYears=Zs,ro.valueOf=vi,ro._bubble=ui,ro.get=bi,ro.milliseconds=Qs,ro.seconds=Ks,ro.minutes=$s,ro.hours=Js,ro.days=to,ro.weeks=xi,ro.months=eo,ro.years=io,ro.humanize=Mi,ro.toISOString=Ci,ro.toString=Ci,ro.toJSON=Ci,ro.locale=ue,ro.localeData=me,ro.toIsoString=$("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ci),ro.lang=ws,I("X",0,0,"unix"),I("x",0,0,"valueOf"),F("x",Xi),F("X",Zi),B("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),B("x",function(t,e,i){i._d=new Date(f(t))}),e.version="2.10.0",i(Ct),e.fn=Ls,e.min=Ot,e.max=Et,e.utc=d,e.unix=Ue,e.months=oi,e.isDate=n,e.locale=x,e.invalid=c,e.duration=Xt,e.isMoment=m,e.weekdays=ri,e.parseZone=Xe,e.localeData=S,e.isDuration=Nt,e.monthsShort=ni,e.weekdaysMin=hi,e.defineLocale=w,e.weekdaysShort=ai,e.normalizeUnits=M,e.relativeTimeThreshold=Di;var ao=e;return ao})}).call(e,i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ', +this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e,i){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(t){throw new Error("Cannot find module '"+t+"'.")}s.keys=function(){return[]},s.resolve=s,t.exports=s,s.id=67},function(t,e,i){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e,i){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t,e,i){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/package.json b/package.json index ca8c44e3..1fa62784 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vis", - "version": "3.11.1-SNAPSHOT", + "version": "3.12.0", "description": "A dynamic, browser-based visualization library.", "homepage": "http://visjs.org/", "repository": { From 5db59a91d762d320efa976b3ae95101014628638 Mon Sep 17 00:00:00 2001 From: jos Date: Tue, 7 Apr 2015 13:57:28 +0200 Subject: [PATCH 39/43] Fixed #761: Timeline and Graph2d throwing an error when locale is not found. Gives a warning message instead. --- HISTORY.md | 8 ++++ bower.json | 2 +- dist/vis.js | 52 ++++++++++++++++---------- dist/vis.map | 2 +- dist/vis.min.js | 22 +++++------ examples/graph2d/13_localization.html | 1 + examples/timeline/19_localization.html | 1 + lib/timeline/component/CurrentTime.js | 7 ++++ lib/timeline/component/CustomTime.js | 7 ++++ misc/how_to_publish.md | 2 +- package.json | 2 +- 11 files changed, 72 insertions(+), 34 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 28e073e2..98602d4a 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -2,6 +2,14 @@ http://visjs.org +## not yet released, version 3.12.1-SNAPSHOT + +### Timeline + +- Fixed #761: Timeline and Graph2d throwing an error when locale is not found. + Gives a warning message instead. + + ## 2015-04-07, version 3.12.0 ### Network diff --git a/bower.json b/bower.json index caa448e0..acb4676c 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "vis", - "version": "3.12.0", + "version": "3.12.1-SNAPSHOT", "main": ["dist/vis.min.js", "dist/vis.min.css"], "description": "A dynamic, browser-based visualization library.", "homepage": "http://visjs.org/", diff --git a/dist/vis.js b/dist/vis.js index 95c66084..bc9531f1 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -4,7 +4,7 @@ * * A dynamic, browser-based visualization library. * - * @version 3.12.0 + * @version 3.12.1-SNAPSHOT * @date 2015-04-07 * * @license @@ -10715,6 +10715,13 @@ return /******/ (function(modules) { // webpackBootstrap var x = this.body.util.toScreen(now); var locale = this.options.locales[this.options.locale]; + if (!locale) { + if (!this.warned) { + console.log('WARNING: locale "' + this.options.locale + '" not found in vis.js'); + this.warned = true; + } + locale = this.options.locales['en']; // fall back on english when not available + } var title = locale.current + ' ' + locale.time + ': ' + moment(now).format('dddd, MMMM Do YYYY, H:mm:ss'); title = title.charAt(0).toUpperCase() + title.substring(1); @@ -10914,6 +10921,13 @@ return /******/ (function(modules) { // webpackBootstrap var x = this.body.util.toScreen(this.customTime); var locale = this.options.locales[this.options.locale]; + if (!locale) { + if (!this.warned) { + console.log('WARNING: locale "' + this.options.locale + '" not found in vis.js'); + this.warned = true; + } + locale = this.options.locales['en']; // fall back on english when not available + } var title = locale.time + ': ' + moment(this.customTime).format('dddd, MMMM Do YYYY, H:mm:ss'); title = title.charAt(0).toUpperCase() + title.substring(1); @@ -30556,9 +30570,9 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(68); - var HierarchialRepulsionMixin = __webpack_require__(69); - var BarnesHutMixin = __webpack_require__(70); + var RepulsionMixin = __webpack_require__(67); + var HierarchialRepulsionMixin = __webpack_require__(68); + var BarnesHutMixin = __webpack_require__(69); /** * Toggling barnes Hut calculation on and off. @@ -34998,19 +35012,6 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 67 */ -/***/ function(module, exports, __webpack_require__) { - - function webpackContext(req) { - throw new Error("Cannot find module '" + req + "'."); - } - webpackContext.keys = function() { return []; }; - webpackContext.resolve = webpackContext; - module.exports = webpackContext; - webpackContext.id = 67; - - -/***/ }, -/* 68 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35080,7 +35081,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 69 */ +/* 68 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35239,7 +35240,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 70 */ +/* 69 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35643,6 +35644,19 @@ return /******/ (function(modules) { // webpackBootstrap }; +/***/ }, +/* 70 */ +/***/ function(module, exports, __webpack_require__) { + + function webpackContext(req) { + throw new Error("Cannot find module '" + req + "'."); + } + webpackContext.keys = function() { return []; }; + webpackContext.resolve = webpackContext; + module.exports = webpackContext; + webpackContext.id = 70; + + /***/ }, /* 71 */ /***/ function(module, exports, __webpack_require__) { diff --git a/dist/vis.map b/dist/vis.map index 3a673b15..eb5484ca 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","b","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","args","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","groupChanged","_moveToGroup","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","stopPropagation","removeFromDataSet","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","status","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","requested","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","hooks__hooks","hookCallback","setHookCallback","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","input","res","hasOwnProp","utc__createUTC","createLocalOrUTC","utc","valid__isValid","_isValid","getTime","_pf","_strict","bigHour","valid__createInvalid","flags","NaN","copyConfig","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","dontConvert","lengthDiff","diffs","Locale","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","globalLocale","_abbr","locales__getSetGlobalLocale","locales__getLocale","defineLocale","abbr","set","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","makeGetSet","keepTime","get_set__set","get_set__get","mom","getSet","zeroFill","number","targetLength","forceSign","output","addFormatToken","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","isValid","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","unescapeFormat","matched","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","UTC","getUTCDate","localeMonths","_months","localeMonthsShort","_monthsShort","localeMonthsParse","monthName","_monthsParse","_longMonthsParse","_shortMonthsParse","months","monthsShort","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecateSimple","deprecations","configFromISO","l","string","from_string__isoRegex","isoDates","isoTimes","matchOffset","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","createDate","ms","createUTCDate","setUTCFullYear","daysInYear","isLeapYear","getIsLeapYear","weekOfYear","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","local__createLocal","week","localeWeek","_week","dow","doy","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","dayOfYearFromWeeks","daysToAdd","getUTCDay","getSetDayOfYear","startOf","defaults","currentDateArray","_useUTC","getUTCFullYear","getUTCMonth","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","temp","GG","W","E","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","_meridiem","meridiem","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","createFromConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","years","quarters","quarter","weeks","days","_milliseconds","_days","_bubble","isDuration","separator","utcOffset","offsetFromString","matches","chunk","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","create__isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","period","dur","tmp","isAdding","calendar__calendar","sod","calendar","inputMs","endOf","isBetween","absFloor","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","moment_format__toISOString","inputString","postformat","withoutSuffix","humanize","fromNow","newLocaleData","isoWeekday","to_type__valueOf","unix","moment_valid__isValid","parsingFlags","invalidAt","addWeekYearFormatToken","getter","weeksInYear","getSetWeekYear","getSetISOWeekYear","getISOWeeksInYear","getWeeksInYear","weekInfo","getSetQuarter","parseWeekday","weekdaysParse","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","localeWeekdaysParse","weekdayName","_weekdaysParse","weekdays","weekdaysShort","weekdaysMin","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","lowercase","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","millisecond__milliseconds","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","locale_calendar__calendar","_calendar","_longDateFormat","_invalidDate","_ordinal","preParsePostFormat","relative__relativeTime","isFuture","_relativeTime","pastFuture","set__set","_ordinalParseLenient","_ordinalParse","lists__get","setter","list","out","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","bubble","daysToYears","yearsToDays","as__valueOf","makeAs","alias","get__get","makeGetter","substituteTimeAgo","relativeTime","humanize__relativeTime","posNegDuration","thresholds","humanize__getSetRelativeTimeThreshold","limit","withSuffix","iso_string__toISOString","Y","iso_string__abs","D","asSeconds","match1","match2","match3","match4","match6","match1to2","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","isoWeekYear","getSetDayOfMonth","invalidWeekday","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","defaultLocaleMeridiemParse","getSetHour","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","toJSON","isoWeek","isoWeeks","isoWeeksInYear","isDST","isDSTShifted","zoneAbbr","zoneName","zone","momentPrototype","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","prototype__proto","firstDayOfYear","ordinalParse","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","get__milliseconds","duration_prototype__proto","toIsoString","version","invalid","relativeTimeThreshold","_moment","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","b","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","args","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","groupChanged","_moveToGroup","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","stopPropagation","removeFromDataSet","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","warned","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","status","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","requested","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","hooks__hooks","hookCallback","setHookCallback","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","input","res","hasOwnProp","utc__createUTC","createLocalOrUTC","utc","valid__isValid","_isValid","getTime","_pf","_strict","bigHour","valid__createInvalid","flags","NaN","copyConfig","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","dontConvert","lengthDiff","diffs","Locale","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","globalLocale","_abbr","locales__getSetGlobalLocale","locales__getLocale","defineLocale","abbr","set","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","makeGetSet","keepTime","get_set__set","get_set__get","mom","getSet","zeroFill","number","targetLength","forceSign","output","addFormatToken","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","isValid","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","unescapeFormat","matched","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","UTC","getUTCDate","localeMonths","_months","localeMonthsShort","_monthsShort","localeMonthsParse","monthName","_monthsParse","_longMonthsParse","_shortMonthsParse","months","monthsShort","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecateSimple","deprecations","configFromISO","l","string","from_string__isoRegex","isoDates","isoTimes","matchOffset","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","createDate","ms","createUTCDate","setUTCFullYear","daysInYear","isLeapYear","getIsLeapYear","weekOfYear","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","local__createLocal","week","localeWeek","_week","dow","doy","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","dayOfYearFromWeeks","daysToAdd","getUTCDay","getSetDayOfYear","startOf","defaults","currentDateArray","_useUTC","getUTCFullYear","getUTCMonth","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","temp","GG","W","E","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","_meridiem","meridiem","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","createFromConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","years","quarters","quarter","weeks","days","_milliseconds","_days","_bubble","isDuration","separator","utcOffset","offsetFromString","matches","chunk","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","create__isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","period","dur","tmp","isAdding","calendar__calendar","sod","calendar","inputMs","endOf","isBetween","absFloor","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","moment_format__toISOString","inputString","postformat","withoutSuffix","humanize","fromNow","newLocaleData","isoWeekday","to_type__valueOf","unix","moment_valid__isValid","parsingFlags","invalidAt","addWeekYearFormatToken","getter","weeksInYear","getSetWeekYear","getSetISOWeekYear","getISOWeeksInYear","getWeeksInYear","weekInfo","getSetQuarter","parseWeekday","weekdaysParse","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","localeWeekdaysParse","weekdayName","_weekdaysParse","weekdays","weekdaysShort","weekdaysMin","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","lowercase","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","millisecond__milliseconds","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","locale_calendar__calendar","_calendar","_longDateFormat","_invalidDate","_ordinal","preParsePostFormat","relative__relativeTime","isFuture","_relativeTime","pastFuture","set__set","_ordinalParseLenient","_ordinalParse","lists__get","setter","list","out","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","bubble","daysToYears","yearsToDays","as__valueOf","makeAs","alias","get__get","makeGetter","substituteTimeAgo","relativeTime","humanize__relativeTime","posNegDuration","thresholds","humanize__getSetRelativeTimeThreshold","limit","withSuffix","iso_string__toISOString","Y","iso_string__abs","D","asSeconds","match1","match2","match3","match4","match6","match1to2","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","isoWeekYear","getSetDayOfMonth","invalidWeekday","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","defaultLocaleMeridiemParse","getSetHour","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","toJSON","isoWeek","isoWeeks","isoWeeksInYear","isDST","isDSTShifted","zoneAbbr","zoneName","zone","momentPrototype","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","prototype__proto","firstDayOfYear","ordinalParse","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","get__milliseconds","duration_prototype__proto","toIsoString","version","invalid","relativeTimeThreshold","_moment","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackContext","req","resolve","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 9a3af43e..fc7e4be5 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -4,7 +4,7 @@ * * A dynamic, browser-based visualization library. * - * @version 3.12.0 + * @version 3.12.1-SNAPSHOT * @date 2015-04-07 * * @license @@ -27,18 +27,18 @@ var i=this;if(this.dataSet&&this.dataSet.off("*",this._onChange),void 0!==t){Arr },s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t,e,i){function s(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}s.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},s.prototype.setStep=function(t,e){void 0===t||0>=t||(void 0!==e&&(this.prettyStep=e),this._step=this.prettyStep===!0?s.calculatePrettyStep(t):t)},s.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},s.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},s.prototype.getStep=function(){return this._step},s.prototype.start=function(){this._current=this._start-this._start%this._step},s.prototype.next=function(){this._current+=this._step},s.prototype.end=function(){return this._current>this._end},t.exports=s},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)?m="current-time":o.hasParent(u,this.dom.center)&&(m="background"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},s.prototype.getEventProperties=function(t){var e=t.gesture?t.gesture.center.pageX:t.pageX,i=t.gesture?t.gesture.center.pageY:t.pageY,s=e-o.getAbsoluteLeft(this.dom.centerContainer),n=i-o.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(s),a=o.getTarget(t),h=null;o.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&o.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":o.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":o.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":o.hasParent(a,this.customTime.bar)?h="custom-time":o.hasParent(a,this.currentTime.bar)?h="current-time":o.hasParent(a,this.dom.center)&&(h="background");var d=[],l=this.linegraph.yAxisLeft,c=this.linegraph.yAxisRight;return l.hidden||d.push(l.screenToValue(n)),c.hidden||d.push(c.screenToValue(n)),{event:t,what:h,pageX:e,pageY:i,x:s,y:n,time:r,value:d}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t,e,i){function s(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}s.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},s.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},s.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},s.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},s.prototype.hasNext=function(){return this.current>=this.marginStart},s.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},s.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},s.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},s.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=s},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(t){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e,i){var s=.001; -e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-i.vertical+se.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(t){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){t.preventDefault(),t.stopPropagation(),e.parent.removeFromDataSet(e)}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e){this.options=null,this.props=null}s.prototype.setOptions=function(t){t&&util.extend(this.options,t)},s.prototype.redraw=function(){return!1},s.prototype.destroy=function(){},s.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%", -this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;ro;o++){var r=this.visibleItems[o];r.repositionY(e)}return s},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,s){i._onAdd(e.items)},update:function(t,e,s){i._onUpdate(e.items)},remove:function(t,e,s){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,s){i._onAddGroups(e.items)},update:function(t,e,s){i._onUpdateGroups(e.items)},remove:function(t,e,s){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&!(a instanceof f)&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.pageY:t.pageY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,s){i._onAdd(e.items)},update:function(t,e,s){i._onUpdate(e.items)},remove:function(t,e,s){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,s){i._onAddGroups(e.items)},update:function(t,e,s){i._onUpdateGroups(e.items)},remove:function(t,e,s){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150, -nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(t){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(t){this.drag.dragging=!1;var e=this.drag.selection;e&&e.length?(e.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=this.nodesData._fieldId||null,s=0,o=t.length;o>s;s++){e=t[s];var n=this.nodesData.get(e);i&&(n.id=n[i]);var r=new f(n,this.images,this.groups,this.constants);if(this.nodes[e]=r,!(0!=r.xFixed&&0!=r.yFixed||null!==r.x&&null!==r.y)){var a=1*t.length+10,h=2*Math.PI*Math.random();0==r.xFixed&&(r.x=a*Math.cos(h)),0==r.yFixed&&(r.y=a*Math.sin(h))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=this.edgesData._fieldId,o=0,n=t.length;n>o;o++){var r=t[o],a=e[r];a&&a.disconnect();var h=i.get(r,{showInternalIds:!0});s&&(h.id=h[s]),e[r]=new g(h,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t,e){void 0===t&&(t=!1),this.redrawRequested=!1;var i=this.frame.canvas.getContext("2d");i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var s=this.frame.canvas.clientWidth,o=this.frame.canvas.clientHeight;i.clearRect(0,0,s,o),i.save(),i.translate(this.translation.x,this.translation.y),i.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",i),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",i)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",i,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",i),i.restore(),t===!0&&i.clearRect(0,0,s,o)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this))); -else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t,e,i){function s(){this.images={},this.imageBroken={},this.callback=void 0}s.prototype.setOnloadCallback=function(t){this.callback=t},s.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=s},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1, -this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(t){throw"Draw method not initialized for node"},s.prototype.resize=function(t){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(t){if(!this.width||!this.height){var e,i;if(this.value){this.options.radius=this.baseRadiusValue;var s=this.imageObj.height/this.imageObj.width;void 0!==s?(e=this.options.radius||this.imageObj.width,i=this.options.radius*s||this.imageObj.height):(e=0,i=0)}else e=this.imageObj.width,i=this.imageObj.height;this.width=e,this.height=i,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-e)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(t){if(!this.width){this.options.radius=this.baseRadiusValue;var e=2*this.options.radius;this.width=e,this.height=e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-e}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(t){if(!this.width){var e=5,i={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=h(o.attr,t.node))),i=n.length-1;i>=0;i--){var a=n[i];a.nodes||(a.nodes=[]),-1==a.nodes.indexOf(o)&&a.nodes.push(o)}e.attr&&(o.attr=h(o.attr,e.attr))}function c(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function p(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=h({},t.edge)),n.attr=h(n.attr||{},o),n}function u(){for(I=C.NULL,N="";" "==k||" "==k||"\n"==k||"\r"==k;)n();do{var t=!1;if("#"==k){for(var e=E-1;" "==O.charAt(e)||" "==O.charAt(e);)e--;if("\n"==O.charAt(e)||""==O.charAt(e)){for(;""!=k&&"\n"!=k;)n();t=!0}}if("/"==k&&"/"==r()){for(;""!=k&&"\n"!=k;)n();t=!0}if("/"==k&&"*"==r()){for(;""!=k;){if("*"==k&&"/"==r()){n(),n();break}n()}t=!0}for(;" "==k||" "==k||"\n"==k||"\r"==k;)n()}while(t);if(""==k)return void(I=C.DELIMITER);var i=k+r();if(T[i])return I=C.DELIMITER,N=i,n(),void n();if(T[k])return I=C.DELIMITER,N=k,void n();if(a(k)||"-"==k){for(N+=k,n();a(k);)N+=k,n();return"false"==N?N=!1:"true"==N?N=!0:isNaN(Number(N))||(N=Number(N)),void(I=C.IDENTIFIER)}if('"'==k){for(n();""!=k&&('"'!=k||'"'==k&&'"'==r());)N+=k,'"'==k&&n(),n();if('"'!=k)throw w('End of string " expected');return n(),void(I=C.IDENTIFIER)}for(I=C.UNKNOWN;""!=k;)N+=k,n();throw new SyntaxError('Syntax error in part "'+S(N,30)+'"')}function m(){var t={};if(o(),u(),"strict"==N&&(t.strict=!0,u()),("graph"==N||"digraph"==N)&&(t.type=N,u()),I==C.IDENTIFIER&&(t.id=N,u()),"{"!=N)throw w("Angle bracket { expected");if(u(),f(t),"}"!=N)throw w("Angle bracket } expected");if(u(),""!==N)throw w("End of file expected");return u(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==N&&"}"!=N;)g(t),";"==N&&u()}function g(t){var e=v(t);if(e)return void _(t,e);var i=y(t);if(!i){if(I!=C.IDENTIFIER)throw w("Identifier expected");var s=N;if(u(),"="==N){if(u(),I!=C.IDENTIFIER)throw w("Identifier expected");t[s]=N,u()}else b(t,s)}}function v(t){var e=null;if("subgraph"==N&&(e={},e.type="subgraph",u(),I==C.IDENTIFIER&&(e.id=N,u())),"{"==N){if(u(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=N)throw w("Angle bracket } expected");u(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function y(t){return"node"==N?(u(),t.node=x(),"node"):"edge"==N?(u(),t.edge=x(),"edge"):"graph"==N?(u(),t.graph=x(),"graph"):null}function b(t,e){var i={id:e},s=x();s&&(i.attr=s),l(t,i),_(t,e)}function _(t,e){for(;"->"==N||"--"==N;){var i,s=N;u();var o=v(t);if(o)i=o;else{if(I!=C.IDENTIFIER)throw w("Identifier or subgraph expected");i=N,l(t,{id:i}),u()}var n=x(),r=p(t,e,i,s,n);c(t,r),e=i}}function x(){for(var t=null;"["==N;){for(u(),t={};""!==N&&"]"!=N;){if(I!=C.IDENTIFIER)throw w("Attribute name expected");var e=N;if(u(),"="!=N)throw w("Equal sign = expected");if(u(),I!=C.IDENTIFIER)throw w("Attribute value expected");var i=N;d(t,e,i),u(),","==N&&u()}if("]"!=N)throw w("Bracket ] expected");u()}return t}function w(t){return new SyntaxError(t+', got "'+S(N,30)+'" (char '+E+")")}function S(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){var e=s(t),i={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};h(e,t.attr),e.image&&(e.shape="image"),i.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return h(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,s;e=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);i.edges.push(e)}),D(e,s,function(e,s){var n=p(i,e.id,s.id,t.type,t.attr),r=o(n);i.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);i.edges.push(e)})})}return e.attr&&(i.options=e.attr),i}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},T={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},O="",E=0,k="",N="",I=C.NULL,L=/[a-zA-Z_0-9.:#]/;e.parseDOT=s,e.DOTToGraph=M},function(t,e,i){function s(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;ro;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-i.vertical+se.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(t){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){t.preventDefault(),t.stopPropagation(),e.parent.removeFromDataSet(e)}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e){this.options=null,this.props=null}s.prototype.setOptions=function(t){t&&util.extend(this.options,t)},s.prototype.redraw=function(){return!1},s.prototype.destroy=function(){},s.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale];s||(this.warned||(console.log('WARNING: locale "'+this.options.locale+'" not found in vis.js'),this.warned=!0),s=this.options.locales.en);var o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale];i||(this.warned||(console.log('WARNING: locale "'+this.options.locale+'" not found in vis.js'),this.warned=!0),i=this.options.locales.en);var s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")), +1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;ro;o++){var r=this.visibleItems[o];r.repositionY(e)}return s},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,s){i._onAdd(e.items)},update:function(t,e,s){i._onUpdate(e.items)},remove:function(t,e,s){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,s){i._onAddGroups(e.items)},update:function(t,e,s){i._onUpdateGroups(e.items)},remove:function(t,e,s){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg,c[d].label)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){function s(t){return t?o(t):void 0}function o(t){for(var e in s.prototype)t[e]=s.prototype[e];return t}t.exports=s,s.prototype.on=s.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},s.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},s.prototype.off=s.prototype.removeListener=s.prototype.removeAllListeners=s.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},s.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},s.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){var s,o,n;!function(i,r){o=[],s=r,n="function"==typeof s?s.apply(e,o):s,!(void 0!==n&&(t.exports=n))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;o0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&!(a instanceof f)&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.pageY:t.pageY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,s){i._onAdd(e.items)},update:function(t,e,s){i._onUpdate(e.items)},remove:function(t,e,s){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,s){i._onAddGroups(e.items)},update:function(t,e,s){i._onUpdateGroups(e.items)},remove:function(t,e,s){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600, +activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(t){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(t){this.drag.dragging=!1;var e=this.drag.selection;e&&e.length?(e.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=this.nodesData._fieldId||null,s=0,o=t.length;o>s;s++){e=t[s];var n=this.nodesData.get(e);i&&(n.id=n[i]);var r=new f(n,this.images,this.groups,this.constants);if(this.nodes[e]=r,!(0!=r.xFixed&&0!=r.yFixed||null!==r.x&&null!==r.y)){var a=1*t.length+10,h=2*Math.PI*Math.random();0==r.xFixed&&(r.x=a*Math.cos(h)),0==r.yFixed&&(r.y=a*Math.sin(h))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=this.edgesData._fieldId,o=0,n=t.length;n>o;o++){var r=t[o],a=e[r];a&&a.disconnect();var h=i.get(r,{showInternalIds:!0});s&&(h.id=h[s]),e[r]=new g(h,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t,e){void 0===t&&(t=!1),this.redrawRequested=!1;var i=this.frame.canvas.getContext("2d");i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var s=this.frame.canvas.clientWidth,o=this.frame.canvas.clientHeight;i.clearRect(0,0,s,o),i.save(),i.translate(this.translation.x,this.translation.y),i.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",i),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",i)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",i,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",i),i.restore(),t===!0&&i.clearRect(0,0,s,o)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame), +s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t,e,i){function s(){this.images={},this.imageBroken={},this.callback=void 0}s.prototype.setOnloadCallback=function(t){this.callback=t},s.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=s},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s); -},o.getKey=function(t){for(var e in r)if(r.hasOwnProperty(e)){if(1==t.shiftKey&&1==r[e].shift&&t.keyCode==r[e].code)return e;if(0==t.shiftKey&&0==r[e].shift&&t.keyCode==r[e].code)return e;if(t.keyCode==r[e].code&&"shift"==e)return e}return"unknown key, currently not supported"},o.unbind=function(t,e,i){if(void 0===i&&(i="keydown"),void 0===r[t])throw new Error("unsupported key: "+t);if(void 0!==e){var s=[],o=n[i][r[t].code];if(void 0!==o)for(var a=0;a0)for(i in Ei)s=Ei[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function u(t){p(this,t),this._d=new Date(+t._d),ki===!1&&(ki=!0,e.updateOffset(this),ki=!1)}function m(t){return t instanceof u||null!=t&&a(t,"_isAMomentObject")}function f(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function g(t,e,i){var s,o=Math.min(t.length,e.length),n=Math.abs(t.length-e.length),r=0;for(s=0;o>s;s++)(i&&t[s]!==e[s]||!i&&f(t[s])!==f(e[s]))&&r++;return r+n}function v(){}function y(t){return t?t.toLowerCase().replace("_","-"):t}function b(t){for(var e,i,s,o,n=0;n0;){if(s=_(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&g(o,i,!0)>=e-1)break;e--}n++}return null}function _(e){var i=null;if(!Ni[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Oi._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),x(i)}catch(s){}return Ni[e]}function x(t,e){var i;return t&&(i="undefined"==typeof e?S(t):w(t,e),i&&(Oi=i)),Oi._abbr}function w(t,e){return null!==e?(e.abbr=t,Ni[t]||(Ni[t]=new v),Ni[t].set(e),x(t),Ni[t]):(delete Ni[t],null)}function S(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Oi;if(!o(t)){if(e=_(t))return e;t=[t]}return b(t)}function D(t,e){var i=t.toLowerCase();Ii[i]=Ii[i+"s"]=Ii[e]=t}function M(t){return"string"==typeof t?Ii[t]||Ii[t.toLowerCase()]:void 0}function C(t){var e,i,s={};for(i in t)a(t,i)&&(e=M(i),e&&(s[e]=t[i]));return s}function T(t,i){return function(s){return null!=s?(E(this,t,s),e.updateOffset(this,i),this):O(this,t)}}function O(t,e){return t._d["get"+(t._isUTC?"UTC":"")+e]()}function E(t,e,i){return t._d["set"+(t._isUTC?"UTC":"")+e](i)}function k(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=M(t),"function"==typeof this[t])return this[t](e);return this}function N(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengthe;e++)s[e]=Pi[s[e]]?Pi[s[e]]:L(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function A(t,e){return t.isValid()?(e=P(e,t.localeData()),Ai[e]||(Ai[e]=z(e)),Ai[e](t)):t.localeData().invalidDate()}function P(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(zi.lastIndex=0;s>=0&&zi.test(t);)t=t.replace(zi,i),zi.lastIndex=0,s-=1;return t}function F(t,e,i){Ki[t]="function"==typeof e?e:function(t){return t&&i?i:e}}function R(t,e){return a(Ki,t)?Ki[t](e._strict,e._locale):new RegExp(H(t))}function H(t){return t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function B(t,e){var i,s=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(s=function(t,i){i[e]=f(t)}),i=0;is;s++){if(o=d([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}}function X(t,e){var i;return"string"==typeof e&&(e=t.localeData().monthsParse(e),"number"!=typeof e)?t:(i=Math.min(t.date(),G(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t)}function q(t){return null!=t?(X(this,t),e.updateOffset(this,!0),this):O(this,"Month")}function Z(){return G(this.year(),this.month())}function Q(t){var e,i=t._a;return i&&-2===t._pf.overflow&&(e=i[ts]<0||i[ts]>11?ts:i[es]<1||i[es]>G(i[Ji],i[ts])?es:i[is]<0||i[is]>24||24===i[is]&&(0!==i[ss]||0!==i[os]||0!==i[ns])?is:i[ss]<0||i[ss]>59?ss:i[os]<0||i[os]>59?os:i[ns]<0||i[ns]>999?ns:-1,t._pf._overflowDayOfYear&&(Ji>e||e>es)&&(e=es),t._pf.overflow=e),t}function K(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function $(t,e){var i=!0;return h(function(){return i&&(K(t),i=!1),e.apply(this,arguments)},e)}function J(t,e){hs[t]||(K(e),hs[t]=!0)}function tt(t){var e,i,s=t._i,o=ds.exec(s);if(o){for(t._pf.iso=!0,e=0,i=ls.length;i>e;e++)if(ls[e][1].exec(s)){t._f=ls[e][0]+(o[6]||" ");break}for(e=0,i=cs.length;i>e;e++)if(cs[e][1].exec(s)){t._f+=cs[e][0];break}s.match(qi)&&(t._f+="Z"),bt(t)}else t._isValid=!1}function et(t){var i=ps.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(tt(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function it(t,e,i,s,o,n,r){var a=new Date(t,e,i,s,o,n,r);return 1970>t&&a.setFullYear(t),a}function st(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ot(t){return nt(t)?366:365}function nt(t){return t%4===0&&t%100!==0||t%400===0}function rt(){return nt(this.year())}function at(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ct(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ht(t){return at(t,this._week.dow,this._week.doy).week}function dt(){return this._week.dow}function lt(){return this._week.doy}function ct(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function pt(t){var e=at(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function ut(t,e,i,s,o){var n,r,a=st(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:ot(t-1)+r}}function mt(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function ft(t,e,i){return null!=t?t:null!=e?e:i}function gt(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function vt(t){var e,i,s,o,n=[];if(!t._d){for(s=gt(t),t._w&&null==t._a[es]&&null==t._a[ts]&&yt(t),t._dayOfYear&&(o=ft(t._a[Ji],s[Ji]),t._dayOfYear>ot(o)&&(t._pf._overflowDayOfYear=!0),i=st(o,0,t._dayOfYear),t._a[ts]=i.getUTCMonth(),t._a[es]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[is]&&0===t._a[ss]&&0===t._a[os]&&0===t._a[ns]&&(t._nextDay=!0,t._a[is]=0),t._d=(t._useUTC?st:it).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[is]=24)}}function yt(t){var e,i,s,o,n,r,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,r=4,i=ft(e.GG,t._a[Ji],at(Ct(),1,4).year),s=ft(e.W,1),o=ft(e.E,1)):(n=t._locale._week.dow,r=t._locale._week.doy,i=ft(e.gg,t._a[Ji],at(Ct(),n,r).year),s=ft(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),a=ut(i,s,o,r,n),t._a[Ji]=a.year,t._dayOfYear=a.dayOfYear}function bt(t){if(t._f===e.ISO_8601)return void tt(t);t._a=[],t._pf.empty=!0;var i,s,o,n,r,a=""+t._i,h=a.length,d=0;for(o=P(t._f,t._locale).match(Li)||[],i=0;i0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(s)+s.length),d+=s.length),Pi[n]?(s?t._pf.empty=!1:t._pf.unusedTokens.push(n),W(n,s,t)):t._strict&&!s&&t._pf.unusedTokens.push(n);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[is]<=12&&(t._pf.bigHour=void 0),t._a[is]=_t(t._locale,t._a[is],t._meridiem),vt(t),Q(t)}function _t(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function xt(t){var e,i,o,n,r;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(n=0;nr)&&(o=r,i=e));h(t,i||e)}function wt(t){if(!t._d){var e=C(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],vt(t)}}function St(t){var e,i=t._i,s=t._f;return t._locale=t._locale||S(t._l),null===i||void 0===s&&""===i?c({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),m(i)?new u(Q(i)):(o(s)?xt(t):s?bt(t):Dt(t),e=new u(Q(t)),e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e))}function Dt(t){var i=t._i;void 0===i?t._d=new Date:n(i)?t._d=new Date(+i):"string"==typeof i?et(t):o(i)?(t._a=r(i.slice(0),function(t){return parseInt(t,10)}),vt(t)):"object"==typeof i?wt(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function Mt(t,e,i,o,n){var r={};return"boolean"==typeof i&&(o=i,i=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=n,r._l=i,r._i=t,r._f=e,r._strict=o,r._pf=s(),St(r)}function Ct(t,e,i,s){return Mt(t,e,i,s,!1)}function Tt(t,e){var i,s;if(1===e.length&&o(e[0])&&(e=e[0]),!e.length)return Ct();for(i=e[0],s=1;st&&(t=-t,i="-"),i+N(~~(t/60),2)+e+N(~~t%60,2)})}function Lt(t){var e=(t||"").match(qi)||[],i=e[e.length-1]||[],s=(i+"").match(vs)||["-",0,0],o=+(60*s[1])+f(s[2]);return"+"===s[0]?o:-o}function zt(t,i){var s,o;return i._isUTC?(s=i.clone(),o=(m(t)||n(t)?+t:+Ct(t))-+s,s._d.setTime(+s._d+o),e.updateOffset(s,!1),s):Ct(t).local()}function At(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Pt(t,i){var s,o=this._offset||0;return null!=t?("string"==typeof t&&(t=Lt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(s=At(this)),this._offset=t,this._isUTC=!0,null!=s&&this.add(s,"m"),o!==t&&(!i||this._changeInProgress?$t(this,Xt(t-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?o:At(this)}function Ft(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Rt(t){return this.utcOffset(0,t)}function Ht(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(At(this),"m")),this}function Bt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Lt(this._i)),this}function Yt(t){return t=t?Ct(t).utcOffset():0,(this.utcOffset()-t)%60===0}function Wt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Gt(){if(this._a){var t=this._isUTC?d(this._a):Ct(this._a);return this.isValid()&&g(this._a,t.toArray())>0}return!1}function jt(){return!this._isUTC}function Vt(){return this._isUTC}function Ut(){return this._isUTC&&0===this._offset}function Xt(t,e){var i,s,o,n=t,r=null;return Nt(t)?n={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(n={},e?n[e]=t:n.milliseconds=t):(r=ys.exec(t))?(i="-"===r[1]?-1:1,n={y:0,d:f(r[es])*i,h:f(r[is])*i,m:f(r[ss])*i,s:f(r[os])*i,ms:f(r[ns])*i}):(r=bs.exec(t))?(i="-"===r[1]?-1:1,n={y:qt(r[2],i),M:qt(r[3],i),d:qt(r[4],i),h:qt(r[5],i),m:qt(r[6],i),s:qt(r[7],i),w:qt(r[8],i)}):null==n?n={}:"object"==typeof n&&("from"in n||"to"in n)&&(o=Qt(Ct(n.from),Ct(n.to)),n={},n.ms=o.milliseconds,n.M=o.months),s=new kt(n),Nt(t)&&a(t,"_locale")&&(s._locale=t._locale),s}function qt(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Zt(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Qt(t,e){var i;return e=zt(e,t),t.isBefore(e)?i=Zt(t,e):(i=Zt(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i}function Kt(t,e){return function(i,s){var o,n;return null===s||isNaN(+s)||(J(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),n=i,i=s,s=n),i="string"==typeof i?+i:i,o=Xt(i,s),$t(this,o,t),this}}function $t(t,i,s,o){var n=i._milliseconds,r=i._days,a=i._months;o=null==o?!0:o,n&&t._d.setTime(+t._d+n*s),r&&E(t,"Date",O(t,"Date")+r*s),a&&X(t,O(t,"Month")+a*s),o&&e.updateOffset(t,r||a)}function Jt(t){var e=t||Ct(),i=zt(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ct(e)))}function te(){return new u(this)}function ee(t,e){var i;return e=M("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Ct(t),+this>+t):(i=m(t)?+t:+Ct(t),i<+this.clone().startOf(e))}function ie(t,e){var i;return e=M("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Ct(t),+t>+this):(i=m(t)?+t:+Ct(t),+this.clone().endOf(e)t?Math.ceil(t):Math.floor(t)}function re(t,e,i){var s,o,n=zt(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=M(e),"year"===e||"month"===e||"quarter"===e?(o=ae(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:ne(o)}function ae(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function he(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function de(){var t=this.clone().utc();return 0e;e++)if(this._weekdaysParse[e]||(i=Ct([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function Pe(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Ne(t,this.localeData()),this.add(t-e,"d")):e}function Fe(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Re(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function He(t,e){I(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Be(t,e){return e._meridiemParse}function Ye(t){return"p"===(t+"").toLowerCase().charAt(0)}function We(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Ge(t){I(0,[t,3],0,"millisecond")}function je(){return this._isUTC?"UTC":""}function Ve(){return this._isUTC?"Coordinated Universal Time":""}function Ue(t){return Ct(1e3*t)}function Xe(){return Ct.apply(null,arguments).parseZone()}function qe(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.call(e,i):s}function Ze(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e}function Qe(){return this._invalidDate}function Ke(t){return this._ordinal.replace("%d",t)}function $e(t){return t}function Je(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)}function ti(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)}function ei(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function ii(t,e,i,s){var o=S(),n=d().set(s,e);return o[i](n,t)}function si(t,e,i,s,o){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return ii(t,e,i,o);var n,r=[];for(n=0;s>n;n++)r[n]=ii(t,n,i,o);return r}function oi(t,e){return si(t,e,"months",12,"month")}function ni(t,e){return si(t,e,"monthsShort",12,"month")}function ri(t,e){return si(t,e,"weekdays",7,"day")}function ai(t,e){return si(t,e,"weekdaysShort",7,"day")}function hi(t,e){return si(t,e,"weekdaysMin",7,"day")}function di(){var t=this._data;return this._milliseconds=Ys(this._milliseconds),this._days=Ys(this._days),this._months=Ys(this._months),t.milliseconds=Ys(t.milliseconds),t.seconds=Ys(t.seconds),t.minutes=Ys(t.minutes),t.hours=Ys(t.hours),t.months=Ys(t.months),t.years=Ys(t.years),this}function li(t,e,i,s){var o=Xt(e,i);return t._milliseconds+=s*o._milliseconds,t._days+=s*o._days,t._months+=s*o._months,t._bubble()}function ci(t,e){return li(this,t,e,1)}function pi(t,e){return li(this,t,e,-1)}function ui(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;return r.milliseconds=s%1e3,t=ne(s/1e3),r.seconds=t%60,e=ne(t/60),r.minutes=e%60,i=ne(e/60),r.hours=i%24,o+=ne(i/24),a=ne(mi(o)),o-=ne(fi(a)),n+=ne(o/30),o%=30,a+=ne(n/12),n%=12,r.days=o,r.months=n,r.years=a,this}function mi(t){return 400*t/146097}function fi(t){return 146097*t/400}function gi(t){var e,i,s=this._milliseconds;if(t=M(t),"month"===t||"year"===t)return e=this._days+s/864e5,i=this._months+12*mi(e),"month"===t?i:i/12;switch(e=this._days+Math.round(fi(this._months/12)),t){case"week":return e/7+s/6048e5;case"day":return e+s/864e5;case"hour":return 24*e+s/36e5;case"minute":return 24*e*60+s/6e4;case"second":return 24*e*60*60+s/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+s;default:throw new Error("Unknown unit "+t)}}function vi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*f(this._months/12)}function yi(t){return function(){return this.as(t)}}function bi(t){return t=M(t),this[t+"s"]()}function _i(t){return function(){return this._data[t]}}function xi(){return ne(this.days()/7)}function wi(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function Si(t,e,i){var s=Xt(t).abs(),o=so(s.as("s")),n=so(s.as("m")),r=so(s.as("h")),a=so(s.as("d")),h=so(s.as("M")),d=so(s.as("y")),l=o0,l[4]=i,wi.apply(null,l)}function Di(t,e){return void 0===oo[t]?!1:void 0===e?oo[t]:(oo[t]=e,!0)}function Mi(t){var e=this.localeData(),i=Si(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function Ci(){var t=no(this.years()),e=no(this.months()),i=no(this.days()),s=no(this.hours()),o=no(this.minutes()),n=no(this.seconds()+this.milliseconds()/1e3),r=this.asSeconds();return r?(0>r?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"}var Ti,Oi,Ei=e.momentProperties=[],ki=!1,Ni={},Ii={},Li=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,zi=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ai={},Pi={},Fi=/\d/,Ri=/\d\d/,Hi=/\d{3}/,Bi=/\d{4}/,Yi=/[+-]?\d{6}/,Wi=/\d\d?/,Gi=/\d{1,3}/,ji=/\d{1,4}/,Vi=/[+-]?\d{1,6}/,Ui=/\d+/,Xi=/[+-]?\d+/,qi=/Z|[+-]\d\d:?\d\d/gi,Zi=/[+-]?\d+(\.\d{1,3})?/,Qi=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Ki={},$i={},Ji=0,ts=1,es=2,is=3,ss=4,os=5,ns=6;I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),I("MMMM",0,0,function(t){return this.localeData().months(this,t)}),D("month","M"),F("M",Wi),F("MM",Wi,Ri),F("MMM",Qi),F("MMMM",Qi),B(["M","MM"],function(t,e){e[ts]=f(t)-1}),B(["MMM","MMMM"],function(t,e,i,s){var o=i._locale.monthsParse(t,s,i._strict);null!=o?e[ts]=o:i._pf.invalidMonth=t});var rs="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),as="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),hs={};e.suppressDeprecationWarnings=!1;var ds=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ls=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],cs=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],ps=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=$("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),D("year","y"),F("Y",Xi),F("YY",Wi,Ri),F("YYYY",ji,Bi),F("YYYYY",Vi,Yi),F("YYYYYY",Vi,Yi),B(["YYYY","YYYYY","YYYYYY"],Ji),B("YY",function(t,i){i[Ji]=e.parseTwoDigitYear(t)}),e.parseTwoDigitYear=function(t){return f(t)+(f(t)>68?1900:2e3)};var us=T("FullYear",!1);I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),D("week","w"),D("isoWeek","W"),F("w",Wi),F("ww",Wi,Ri),F("W",Wi),F("WW",Wi,Ri),Y(["w","ww","W","WW"],function(t,e,i,s){e[s.substr(0,1)]=f(t)});var ms={dow:0,doy:6};I("DDD",["DDDD",3],"DDDo","dayOfYear"),D("dayOfYear","DDD"),F("DDD",Gi),F("DDDD",Hi),B(["DDD","DDDD"],function(t,e,i){i._dayOfYear=f(t)}),e.ISO_8601=function(){};var fs=$("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Ct.apply(null,arguments);return this>t?this:t}),gs=$("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Ct.apply(null,arguments);return t>this?this:t});It("Z",":"),It("ZZ",""),F("Z",qi),F("ZZ",qi),B(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Lt(t)});var vs=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var ys=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,bs=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,_s=Kt(1,"add"),xs=Kt(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var ws=$("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),De("gggg","weekYear"),De("ggggg","weekYear"),De("GGGG","isoWeekYear"),De("GGGGG","isoWeekYear"),D("weekYear","gg"),D("isoWeekYear","GG"),F("G",Xi),F("g",Xi),F("GG",Wi,Ri),F("gg",Wi,Ri),F("GGGG",ji,Bi),F("gggg",ji,Bi),F("GGGGG",Vi,Yi),F("ggggg",Vi,Yi),Y(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,s){e[s.substr(0,2)]=f(t)}),Y(["gg","GG"],function(t,i,s,o){i[o]=e.parseTwoDigitYear(t)}),I("Q",0,0,"quarter"),D("quarter","Q"),F("Q",Fi),B("Q",function(t,e){e[ts]=3*(f(t)-1)}),I("D",["DD",2],"Do","date"),D("date","D"),F("D",Wi),F("DD",Wi,Ri),F("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),B(["D","DD"],es),B("Do",function(t,e){e[es]=f(t.match(Wi)[0],10)});var Ss=T("Date",!0);I("d",0,"do","day"),I("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),I("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),I("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),D("day","d"),D("weekday","e"),D("isoWeekday","E"),F("d",Wi),F("e",Wi),F("E",Wi),F("dd",Qi),F("ddd",Qi),F("dddd",Qi),Y(["dd","ddd","dddd"],function(t,e,i){var s=i._locale.weekdaysParse(t);null!=s?e.d=s:i._pf.invalidWeekday=t}),Y(["d","e","E"],function(t,e,i,s){e[s]=f(t)});var Ds="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ms="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Cs="Su_Mo_Tu_We_Th_Fr_Sa".split("_");I("H",["HH",2],0,"hour"),I("h",["hh",2],0,function(){return this.hours()%12||12}),He("a",!0),He("A",!1),D("hour","h"),F("a",Be),F("A",Be),F("H",Wi),F("h",Wi),F("HH",Wi,Ri),F("hh",Wi,Ri),B(["H","HH"],is),B(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),B(["h","hh"],function(t,e,i){e[is]=f(t),i._pf.bigHour=!0});var Ts=/[ap]\.?m?\.?/i,Os=T("Hours",!0);I("m",["mm",2],0,"minute"),D("minute","m"),F("m",Wi),F("mm",Wi,Ri),B(["m","mm"],ss);var Es=T("Minutes",!1);I("s",["ss",2],0,"second"),D("second","s"),F("s",Wi),F("ss",Wi,Ri),B(["s","ss"],os);var ks=T("Seconds",!1);I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),Ge("SSS"),Ge("SSSS"),D("millisecond","ms"),F("S",Gi,Fi),F("SS",Gi,Ri),F("SSS",Gi,Hi),F("SSSS",Ui),B(["S","SS","SSS","SSSS"],function(t,e){e[ns]=f(1e3*("0."+t))});var Ns=T("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var Is=u.prototype;Is.add=_s,Is.calendar=Jt,Is.clone=te,Is.diff=re,Is.endOf=ge,Is.format=le,Is.from=ce,Is.fromNow=pe,Is.get=k,Is.invalidAt=Se,Is.isAfter=ee,Is.isBefore=ie,Is.isBetween=se,Is.isSame=oe,Is.isValid=xe,Is.lang=ws,Is.locale=ue,Is.localeData=me,Is.max=gs,Is.min=fs,Is.parsingFlags=we,Is.set=k,Is.startOf=fe,Is.subtract=xs,Is.toArray=_e,Is.toDate=be,Is.toISOString=de,Is.toJSON=de,Is.toString=he,Is.unix=ye,Is.valueOf=ve,Is.year=us,Is.isLeapYear=rt,Is.weekYear=Ce,Is.isoWeekYear=Te,Is.quarter=Is.quarters=ke,Is.month=q,Is.daysInMonth=Z,Is.week=Is.weeks=ct,Is.isoWeek=Is.isoWeeks=pt,Is.weeksInYear=Ee,Is.isoWeeksInYear=Oe,Is.date=Ss,Is.day=Is.days=Pe,Is.weekday=Fe,Is.isoWeekday=Re,Is.dayOfYear=mt,Is.hour=Is.hours=Os,Is.minute=Is.minutes=Es,Is.second=Is.seconds=ks,Is.millisecond=Is.milliseconds=Ns,Is.utcOffset=Pt,Is.utc=Rt,Is.local=Ht,Is.parseZone=Bt,Is.hasAlignedHourOffset=Yt,Is.isDST=Wt,Is.isDSTShifted=Gt,Is.isLocal=jt,Is.isUtcOffset=Vt,Is.isUtc=Ut,Is.isUTC=Ut,Is.zoneAbbr=je,Is.zoneName=Ve,Is.dates=$("dates accessor is deprecated. Use date instead.",Ss),Is.months=$("months accessor is deprecated. Use month instead",q),Is.years=$("years accessor is deprecated. Use year instead",us),Is.zone=$("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Ft); +this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(t){throw"Draw method not initialized for node"},s.prototype.resize=function(t){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(t){if(!this.width||!this.height){var e,i;if(this.value){this.options.radius=this.baseRadiusValue;var s=this.imageObj.height/this.imageObj.width;void 0!==s?(e=this.options.radius||this.imageObj.width,i=this.options.radius*s||this.imageObj.height):(e=0,i=0)}else e=this.imageObj.width,i=this.imageObj.height;this.width=e,this.height=i,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-e)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(t){if(!this.width){this.options.radius=this.baseRadiusValue;var e=2*this.options.radius;this.width=e,this.height=e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-e}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(t){if(!this.width){var e=5,i={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=h(o.attr,t.node))),i=n.length-1;i>=0;i--){var a=n[i];a.nodes||(a.nodes=[]),-1==a.nodes.indexOf(o)&&a.nodes.push(o)}e.attr&&(o.attr=h(o.attr,e.attr))}function c(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function p(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=h({},t.edge)),n.attr=h(n.attr||{},o),n}function u(){for(I=C.NULL,N="";" "==k||" "==k||"\n"==k||"\r"==k;)n();do{var t=!1;if("#"==k){for(var e=E-1;" "==O.charAt(e)||" "==O.charAt(e);)e--;if("\n"==O.charAt(e)||""==O.charAt(e)){for(;""!=k&&"\n"!=k;)n();t=!0}}if("/"==k&&"/"==r()){for(;""!=k&&"\n"!=k;)n();t=!0}if("/"==k&&"*"==r()){for(;""!=k;){if("*"==k&&"/"==r()){n(),n();break}n()}t=!0}for(;" "==k||" "==k||"\n"==k||"\r"==k;)n()}while(t);if(""==k)return void(I=C.DELIMITER);var i=k+r();if(T[i])return I=C.DELIMITER,N=i,n(),void n();if(T[k])return I=C.DELIMITER,N=k,void n();if(a(k)||"-"==k){for(N+=k,n();a(k);)N+=k,n();return"false"==N?N=!1:"true"==N?N=!0:isNaN(Number(N))||(N=Number(N)),void(I=C.IDENTIFIER)}if('"'==k){for(n();""!=k&&('"'!=k||'"'==k&&'"'==r());)N+=k,'"'==k&&n(),n();if('"'!=k)throw w('End of string " expected');return n(),void(I=C.IDENTIFIER)}for(I=C.UNKNOWN;""!=k;)N+=k,n();throw new SyntaxError('Syntax error in part "'+S(N,30)+'"')}function m(){var t={};if(o(),u(),"strict"==N&&(t.strict=!0,u()),("graph"==N||"digraph"==N)&&(t.type=N,u()),I==C.IDENTIFIER&&(t.id=N,u()),"{"!=N)throw w("Angle bracket { expected");if(u(),f(t),"}"!=N)throw w("Angle bracket } expected");if(u(),""!==N)throw w("End of file expected");return u(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==N&&"}"!=N;)g(t),";"==N&&u()}function g(t){var e=v(t);if(e)return void _(t,e);var i=y(t);if(!i){if(I!=C.IDENTIFIER)throw w("Identifier expected");var s=N;if(u(),"="==N){if(u(),I!=C.IDENTIFIER)throw w("Identifier expected");t[s]=N,u()}else b(t,s)}}function v(t){var e=null;if("subgraph"==N&&(e={},e.type="subgraph",u(),I==C.IDENTIFIER&&(e.id=N,u())),"{"==N){if(u(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=N)throw w("Angle bracket } expected");u(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function y(t){return"node"==N?(u(),t.node=x(),"node"):"edge"==N?(u(),t.edge=x(),"edge"):"graph"==N?(u(),t.graph=x(),"graph"):null}function b(t,e){var i={id:e},s=x();s&&(i.attr=s),l(t,i),_(t,e)}function _(t,e){for(;"->"==N||"--"==N;){var i,s=N;u();var o=v(t);if(o)i=o;else{if(I!=C.IDENTIFIER)throw w("Identifier or subgraph expected");i=N,l(t,{id:i}),u()}var n=x(),r=p(t,e,i,s,n);c(t,r),e=i}}function x(){for(var t=null;"["==N;){for(u(),t={};""!==N&&"]"!=N;){if(I!=C.IDENTIFIER)throw w("Attribute name expected");var e=N;if(u(),"="!=N)throw w("Equal sign = expected");if(u(),I!=C.IDENTIFIER)throw w("Attribute value expected");var i=N;d(t,e,i),u(),","==N&&u()}if("]"!=N)throw w("Bracket ] expected");u()}return t}function w(t){return new SyntaxError(t+', got "'+S(N,30)+'" (char '+E+")")}function S(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){var e=s(t),i={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};h(e,t.attr),e.image&&(e.shape="image"),i.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return h(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,s;e=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);i.edges.push(e)}),D(e,s,function(e,s){var n=p(i,e.id,s.id,t.type,t.attr),r=o(n);i.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);i.edges.push(e)})})}return e.attr&&(i.options=e.attr),i}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},T={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},O="",E=0,k="",N="",I=C.NULL,L=/[a-zA-Z_0-9.:#]/;e.parseDOT=s,e.DOTToGraph=M},function(t,e,i){function s(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg,c[d].label)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){function s(t){return t?o(t):void 0}function o(t){for(var e in s.prototype)t[e]=s.prototype[e];return t}t.exports=s,s.prototype.on=s.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},s.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},s.prototype.off=s.prototype.removeListener=s.prototype.removeAllListeners=s.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},s.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},s.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){var s,o,n;!function(i,r){o=[],s=r,n="function"==typeof s?s.apply(e,o):s,!(void 0!==n&&(t.exports=n))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;os;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ', +1==i&&t.preventDefault()}};return o.bind=function(t,e,i){if(void 0===i&&(i="keydown"),void 0===r[t])throw new Error("unsupported key: "+t);void 0===n[i][r[t].code]&&(n[i][r[t].code]=[]),n[i][r[t].code].push({fn:e,shift:r[t].shift})},o.bindAll=function(t,e){void 0===e&&(e="keydown");for(var i in r)r.hasOwnProperty(i)&&o.bind(i,t,e)},o.getKey=function(t){for(var e in r)if(r.hasOwnProperty(e)){if(1==t.shiftKey&&1==r[e].shift&&t.keyCode==r[e].code)return e;if(0==t.shiftKey&&0==r[e].shift&&t.keyCode==r[e].code)return e;if(t.keyCode==r[e].code&&"shift"==e)return e}return"unknown key, currently not supported"},o.unbind=function(t,e,i){if(void 0===i&&(i="keydown"),void 0===r[t])throw new Error("unsupported key: "+t);if(void 0!==e){var s=[],o=n[i][r[t].code];if(void 0!==o)for(var a=0;a0)for(i in Ei)s=Ei[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function u(t){p(this,t),this._d=new Date(+t._d),ki===!1&&(ki=!0,e.updateOffset(this),ki=!1)}function m(t){return t instanceof u||null!=t&&a(t,"_isAMomentObject")}function f(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function g(t,e,i){var s,o=Math.min(t.length,e.length),n=Math.abs(t.length-e.length),r=0;for(s=0;o>s;s++)(i&&t[s]!==e[s]||!i&&f(t[s])!==f(e[s]))&&r++;return r+n}function v(){}function y(t){return t?t.toLowerCase().replace("_","-"):t}function b(t){for(var e,i,s,o,n=0;n0;){if(s=_(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&g(o,i,!0)>=e-1)break;e--}n++}return null}function _(e){var i=null;if(!Ni[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Oi._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),x(i)}catch(s){}return Ni[e]}function x(t,e){var i;return t&&(i="undefined"==typeof e?S(t):w(t,e),i&&(Oi=i)),Oi._abbr}function w(t,e){return null!==e?(e.abbr=t,Ni[t]||(Ni[t]=new v),Ni[t].set(e),x(t),Ni[t]):(delete Ni[t],null)}function S(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Oi;if(!o(t)){if(e=_(t))return e;t=[t]}return b(t)}function D(t,e){var i=t.toLowerCase();Ii[i]=Ii[i+"s"]=Ii[e]=t}function M(t){return"string"==typeof t?Ii[t]||Ii[t.toLowerCase()]:void 0}function C(t){var e,i,s={};for(i in t)a(t,i)&&(e=M(i),e&&(s[e]=t[i]));return s}function T(t,i){return function(s){return null!=s?(E(this,t,s),e.updateOffset(this,i),this):O(this,t)}}function O(t,e){return t._d["get"+(t._isUTC?"UTC":"")+e]()}function E(t,e,i){return t._d["set"+(t._isUTC?"UTC":"")+e](i)}function k(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=M(t),"function"==typeof this[t])return this[t](e);return this}function N(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengthe;e++)s[e]=Pi[s[e]]?Pi[s[e]]:L(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function A(t,e){return t.isValid()?(e=P(e,t.localeData()),Ai[e]||(Ai[e]=z(e)),Ai[e](t)):t.localeData().invalidDate()}function P(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(zi.lastIndex=0;s>=0&&zi.test(t);)t=t.replace(zi,i),zi.lastIndex=0,s-=1;return t}function F(t,e,i){Ki[t]="function"==typeof e?e:function(t){return t&&i?i:e}}function R(t,e){return a(Ki,t)?Ki[t](e._strict,e._locale):new RegExp(H(t))}function H(t){return t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function B(t,e){var i,s=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(s=function(t,i){i[e]=f(t)}),i=0;is;s++){if(o=d([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}}function X(t,e){var i;return"string"==typeof e&&(e=t.localeData().monthsParse(e),"number"!=typeof e)?t:(i=Math.min(t.date(),G(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t)}function q(t){return null!=t?(X(this,t),e.updateOffset(this,!0),this):O(this,"Month")}function Z(){return G(this.year(),this.month())}function Q(t){var e,i=t._a;return i&&-2===t._pf.overflow&&(e=i[ts]<0||i[ts]>11?ts:i[es]<1||i[es]>G(i[Ji],i[ts])?es:i[is]<0||i[is]>24||24===i[is]&&(0!==i[ss]||0!==i[os]||0!==i[ns])?is:i[ss]<0||i[ss]>59?ss:i[os]<0||i[os]>59?os:i[ns]<0||i[ns]>999?ns:-1,t._pf._overflowDayOfYear&&(Ji>e||e>es)&&(e=es),t._pf.overflow=e),t}function K(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function $(t,e){var i=!0;return h(function(){return i&&(K(t),i=!1),e.apply(this,arguments)},e)}function J(t,e){hs[t]||(K(e),hs[t]=!0)}function tt(t){var e,i,s=t._i,o=ds.exec(s);if(o){for(t._pf.iso=!0,e=0,i=ls.length;i>e;e++)if(ls[e][1].exec(s)){t._f=ls[e][0]+(o[6]||" ");break}for(e=0,i=cs.length;i>e;e++)if(cs[e][1].exec(s)){t._f+=cs[e][0];break}s.match(qi)&&(t._f+="Z"),bt(t)}else t._isValid=!1}function et(t){var i=ps.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(tt(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function it(t,e,i,s,o,n,r){var a=new Date(t,e,i,s,o,n,r);return 1970>t&&a.setFullYear(t),a}function st(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ot(t){return nt(t)?366:365}function nt(t){return t%4===0&&t%100!==0||t%400===0}function rt(){return nt(this.year())}function at(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ct(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ht(t){return at(t,this._week.dow,this._week.doy).week}function dt(){return this._week.dow}function lt(){return this._week.doy}function ct(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function pt(t){var e=at(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function ut(t,e,i,s,o){var n,r,a=st(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:ot(t-1)+r}}function mt(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function ft(t,e,i){return null!=t?t:null!=e?e:i}function gt(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function vt(t){var e,i,s,o,n=[];if(!t._d){for(s=gt(t),t._w&&null==t._a[es]&&null==t._a[ts]&&yt(t),t._dayOfYear&&(o=ft(t._a[Ji],s[Ji]),t._dayOfYear>ot(o)&&(t._pf._overflowDayOfYear=!0),i=st(o,0,t._dayOfYear),t._a[ts]=i.getUTCMonth(),t._a[es]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[is]&&0===t._a[ss]&&0===t._a[os]&&0===t._a[ns]&&(t._nextDay=!0,t._a[is]=0),t._d=(t._useUTC?st:it).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[is]=24)}}function yt(t){var e,i,s,o,n,r,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,r=4,i=ft(e.GG,t._a[Ji],at(Ct(),1,4).year),s=ft(e.W,1),o=ft(e.E,1)):(n=t._locale._week.dow,r=t._locale._week.doy,i=ft(e.gg,t._a[Ji],at(Ct(),n,r).year),s=ft(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),a=ut(i,s,o,r,n),t._a[Ji]=a.year,t._dayOfYear=a.dayOfYear}function bt(t){if(t._f===e.ISO_8601)return void tt(t);t._a=[],t._pf.empty=!0;var i,s,o,n,r,a=""+t._i,h=a.length,d=0;for(o=P(t._f,t._locale).match(Li)||[],i=0;i0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(s)+s.length),d+=s.length),Pi[n]?(s?t._pf.empty=!1:t._pf.unusedTokens.push(n),W(n,s,t)):t._strict&&!s&&t._pf.unusedTokens.push(n);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[is]<=12&&(t._pf.bigHour=void 0),t._a[is]=_t(t._locale,t._a[is],t._meridiem),vt(t),Q(t)}function _t(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function xt(t){var e,i,o,n,r;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(n=0;nr)&&(o=r,i=e));h(t,i||e)}function wt(t){if(!t._d){var e=C(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],vt(t)}}function St(t){var e,i=t._i,s=t._f;return t._locale=t._locale||S(t._l),null===i||void 0===s&&""===i?c({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),m(i)?new u(Q(i)):(o(s)?xt(t):s?bt(t):Dt(t),e=new u(Q(t)),e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e))}function Dt(t){var i=t._i;void 0===i?t._d=new Date:n(i)?t._d=new Date(+i):"string"==typeof i?et(t):o(i)?(t._a=r(i.slice(0),function(t){return parseInt(t,10)}),vt(t)):"object"==typeof i?wt(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function Mt(t,e,i,o,n){var r={};return"boolean"==typeof i&&(o=i,i=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=n,r._l=i,r._i=t,r._f=e,r._strict=o,r._pf=s(),St(r)}function Ct(t,e,i,s){return Mt(t,e,i,s,!1)}function Tt(t,e){var i,s;if(1===e.length&&o(e[0])&&(e=e[0]),!e.length)return Ct();for(i=e[0],s=1;st&&(t=-t,i="-"),i+N(~~(t/60),2)+e+N(~~t%60,2)})}function Lt(t){var e=(t||"").match(qi)||[],i=e[e.length-1]||[],s=(i+"").match(vs)||["-",0,0],o=+(60*s[1])+f(s[2]);return"+"===s[0]?o:-o}function zt(t,i){var s,o;return i._isUTC?(s=i.clone(),o=(m(t)||n(t)?+t:+Ct(t))-+s,s._d.setTime(+s._d+o),e.updateOffset(s,!1),s):Ct(t).local()}function At(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Pt(t,i){var s,o=this._offset||0;return null!=t?("string"==typeof t&&(t=Lt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(s=At(this)),this._offset=t,this._isUTC=!0,null!=s&&this.add(s,"m"),o!==t&&(!i||this._changeInProgress?$t(this,Xt(t-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?o:At(this)}function Ft(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Rt(t){return this.utcOffset(0,t)}function Ht(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(At(this),"m")),this}function Bt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Lt(this._i)),this}function Yt(t){return t=t?Ct(t).utcOffset():0,(this.utcOffset()-t)%60===0}function Wt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Gt(){if(this._a){var t=this._isUTC?d(this._a):Ct(this._a);return this.isValid()&&g(this._a,t.toArray())>0}return!1}function jt(){return!this._isUTC}function Vt(){return this._isUTC}function Ut(){return this._isUTC&&0===this._offset}function Xt(t,e){var i,s,o,n=t,r=null;return Nt(t)?n={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(n={},e?n[e]=t:n.milliseconds=t):(r=ys.exec(t))?(i="-"===r[1]?-1:1,n={y:0,d:f(r[es])*i,h:f(r[is])*i,m:f(r[ss])*i,s:f(r[os])*i,ms:f(r[ns])*i}):(r=bs.exec(t))?(i="-"===r[1]?-1:1,n={y:qt(r[2],i),M:qt(r[3],i),d:qt(r[4],i),h:qt(r[5],i),m:qt(r[6],i),s:qt(r[7],i),w:qt(r[8],i)}):null==n?n={}:"object"==typeof n&&("from"in n||"to"in n)&&(o=Qt(Ct(n.from),Ct(n.to)),n={},n.ms=o.milliseconds,n.M=o.months),s=new kt(n),Nt(t)&&a(t,"_locale")&&(s._locale=t._locale),s}function qt(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Zt(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Qt(t,e){var i;return e=zt(e,t),t.isBefore(e)?i=Zt(t,e):(i=Zt(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i}function Kt(t,e){return function(i,s){var o,n;return null===s||isNaN(+s)||(J(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),n=i,i=s,s=n),i="string"==typeof i?+i:i,o=Xt(i,s),$t(this,o,t),this}}function $t(t,i,s,o){var n=i._milliseconds,r=i._days,a=i._months;o=null==o?!0:o,n&&t._d.setTime(+t._d+n*s),r&&E(t,"Date",O(t,"Date")+r*s),a&&X(t,O(t,"Month")+a*s),o&&e.updateOffset(t,r||a)}function Jt(t){var e=t||Ct(),i=zt(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ct(e)))}function te(){return new u(this)}function ee(t,e){var i;return e=M("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Ct(t),+this>+t):(i=m(t)?+t:+Ct(t),i<+this.clone().startOf(e))}function ie(t,e){var i;return e=M("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Ct(t),+t>+this):(i=m(t)?+t:+Ct(t),+this.clone().endOf(e)t?Math.ceil(t):Math.floor(t)}function re(t,e,i){var s,o,n=zt(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=M(e),"year"===e||"month"===e||"quarter"===e?(o=ae(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:ne(o)}function ae(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function he(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function de(){var t=this.clone().utc();return 0e;e++)if(this._weekdaysParse[e]||(i=Ct([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function Pe(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Ne(t,this.localeData()),this.add(t-e,"d")):e}function Fe(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Re(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function He(t,e){I(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Be(t,e){return e._meridiemParse}function Ye(t){return"p"===(t+"").toLowerCase().charAt(0)}function We(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Ge(t){I(0,[t,3],0,"millisecond")}function je(){return this._isUTC?"UTC":""}function Ve(){return this._isUTC?"Coordinated Universal Time":""}function Ue(t){return Ct(1e3*t)}function Xe(){return Ct.apply(null,arguments).parseZone()}function qe(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.call(e,i):s}function Ze(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e}function Qe(){return this._invalidDate}function Ke(t){return this._ordinal.replace("%d",t)}function $e(t){return t}function Je(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)}function ti(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)}function ei(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function ii(t,e,i,s){var o=S(),n=d().set(s,e);return o[i](n,t)}function si(t,e,i,s,o){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return ii(t,e,i,o);var n,r=[];for(n=0;s>n;n++)r[n]=ii(t,n,i,o);return r}function oi(t,e){return si(t,e,"months",12,"month")}function ni(t,e){return si(t,e,"monthsShort",12,"month")}function ri(t,e){return si(t,e,"weekdays",7,"day")}function ai(t,e){return si(t,e,"weekdaysShort",7,"day")}function hi(t,e){return si(t,e,"weekdaysMin",7,"day")}function di(){var t=this._data;return this._milliseconds=Ys(this._milliseconds),this._days=Ys(this._days),this._months=Ys(this._months),t.milliseconds=Ys(t.milliseconds),t.seconds=Ys(t.seconds),t.minutes=Ys(t.minutes),t.hours=Ys(t.hours),t.months=Ys(t.months),t.years=Ys(t.years),this}function li(t,e,i,s){var o=Xt(e,i);return t._milliseconds+=s*o._milliseconds,t._days+=s*o._days,t._months+=s*o._months,t._bubble()}function ci(t,e){return li(this,t,e,1)}function pi(t,e){return li(this,t,e,-1)}function ui(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;return r.milliseconds=s%1e3,t=ne(s/1e3),r.seconds=t%60,e=ne(t/60),r.minutes=e%60,i=ne(e/60),r.hours=i%24,o+=ne(i/24),a=ne(mi(o)),o-=ne(fi(a)),n+=ne(o/30),o%=30,a+=ne(n/12),n%=12,r.days=o,r.months=n,r.years=a,this}function mi(t){return 400*t/146097}function fi(t){return 146097*t/400}function gi(t){var e,i,s=this._milliseconds;if(t=M(t),"month"===t||"year"===t)return e=this._days+s/864e5,i=this._months+12*mi(e),"month"===t?i:i/12;switch(e=this._days+Math.round(fi(this._months/12)),t){case"week":return e/7+s/6048e5;case"day":return e+s/864e5;case"hour":return 24*e+s/36e5;case"minute":return 24*e*60+s/6e4;case"second":return 24*e*60*60+s/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+s;default:throw new Error("Unknown unit "+t)}}function vi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*f(this._months/12)}function yi(t){return function(){return this.as(t)}}function bi(t){return t=M(t),this[t+"s"]()}function _i(t){return function(){return this._data[t]}}function xi(){return ne(this.days()/7)}function wi(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function Si(t,e,i){var s=Xt(t).abs(),o=so(s.as("s")),n=so(s.as("m")),r=so(s.as("h")),a=so(s.as("d")),h=so(s.as("M")),d=so(s.as("y")),l=o0,l[4]=i,wi.apply(null,l)}function Di(t,e){return void 0===oo[t]?!1:void 0===e?oo[t]:(oo[t]=e,!0)}function Mi(t){var e=this.localeData(),i=Si(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function Ci(){var t=no(this.years()),e=no(this.months()),i=no(this.days()),s=no(this.hours()),o=no(this.minutes()),n=no(this.seconds()+this.milliseconds()/1e3),r=this.asSeconds();return r?(0>r?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"}var Ti,Oi,Ei=e.momentProperties=[],ki=!1,Ni={},Ii={},Li=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,zi=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ai={},Pi={},Fi=/\d/,Ri=/\d\d/,Hi=/\d{3}/,Bi=/\d{4}/,Yi=/[+-]?\d{6}/,Wi=/\d\d?/,Gi=/\d{1,3}/,ji=/\d{1,4}/,Vi=/[+-]?\d{1,6}/,Ui=/\d+/,Xi=/[+-]?\d+/,qi=/Z|[+-]\d\d:?\d\d/gi,Zi=/[+-]?\d+(\.\d{1,3})?/,Qi=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Ki={},$i={},Ji=0,ts=1,es=2,is=3,ss=4,os=5,ns=6;I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),I("MMMM",0,0,function(t){return this.localeData().months(this,t)}),D("month","M"),F("M",Wi),F("MM",Wi,Ri),F("MMM",Qi),F("MMMM",Qi),B(["M","MM"],function(t,e){e[ts]=f(t)-1}),B(["MMM","MMMM"],function(t,e,i,s){var o=i._locale.monthsParse(t,s,i._strict);null!=o?e[ts]=o:i._pf.invalidMonth=t});var rs="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),as="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),hs={};e.suppressDeprecationWarnings=!1;var ds=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ls=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],cs=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],ps=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=$("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),D("year","y"),F("Y",Xi),F("YY",Wi,Ri),F("YYYY",ji,Bi),F("YYYYY",Vi,Yi),F("YYYYYY",Vi,Yi),B(["YYYY","YYYYY","YYYYYY"],Ji),B("YY",function(t,i){i[Ji]=e.parseTwoDigitYear(t)}),e.parseTwoDigitYear=function(t){return f(t)+(f(t)>68?1900:2e3)};var us=T("FullYear",!1);I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),D("week","w"),D("isoWeek","W"),F("w",Wi),F("ww",Wi,Ri),F("W",Wi),F("WW",Wi,Ri),Y(["w","ww","W","WW"],function(t,e,i,s){e[s.substr(0,1)]=f(t)});var ms={dow:0,doy:6};I("DDD",["DDDD",3],"DDDo","dayOfYear"),D("dayOfYear","DDD"),F("DDD",Gi),F("DDDD",Hi),B(["DDD","DDDD"],function(t,e,i){i._dayOfYear=f(t)}),e.ISO_8601=function(){};var fs=$("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Ct.apply(null,arguments);return this>t?this:t}),gs=$("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Ct.apply(null,arguments);return t>this?this:t});It("Z",":"),It("ZZ",""),F("Z",qi),F("ZZ",qi),B(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Lt(t)});var vs=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var ys=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,bs=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,_s=Kt(1,"add"),xs=Kt(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var ws=$("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),De("gggg","weekYear"),De("ggggg","weekYear"),De("GGGG","isoWeekYear"),De("GGGGG","isoWeekYear"),D("weekYear","gg"),D("isoWeekYear","GG"),F("G",Xi),F("g",Xi),F("GG",Wi,Ri),F("gg",Wi,Ri),F("GGGG",ji,Bi),F("gggg",ji,Bi),F("GGGGG",Vi,Yi),F("ggggg",Vi,Yi),Y(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,s){e[s.substr(0,2)]=f(t)}),Y(["gg","GG"],function(t,i,s,o){i[o]=e.parseTwoDigitYear(t)}),I("Q",0,0,"quarter"),D("quarter","Q"),F("Q",Fi),B("Q",function(t,e){e[ts]=3*(f(t)-1)}),I("D",["DD",2],"Do","date"),D("date","D"),F("D",Wi),F("DD",Wi,Ri),F("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),B(["D","DD"],es),B("Do",function(t,e){e[es]=f(t.match(Wi)[0],10)});var Ss=T("Date",!0);I("d",0,"do","day"),I("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),I("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),I("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),D("day","d"),D("weekday","e"),D("isoWeekday","E"),F("d",Wi),F("e",Wi),F("E",Wi),F("dd",Qi),F("ddd",Qi),F("dddd",Qi),Y(["dd","ddd","dddd"],function(t,e,i){var s=i._locale.weekdaysParse(t);null!=s?e.d=s:i._pf.invalidWeekday=t}),Y(["d","e","E"],function(t,e,i,s){e[s]=f(t)});var Ds="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ms="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Cs="Su_Mo_Tu_We_Th_Fr_Sa".split("_");I("H",["HH",2],0,"hour"),I("h",["hh",2],0,function(){return this.hours()%12||12}),He("a",!0),He("A",!1),D("hour","h"),F("a",Be),F("A",Be),F("H",Wi),F("h",Wi),F("HH",Wi,Ri),F("hh",Wi,Ri),B(["H","HH"],is),B(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),B(["h","hh"],function(t,e,i){e[is]=f(t),i._pf.bigHour=!0});var Ts=/[ap]\.?m?\.?/i,Os=T("Hours",!0);I("m",["mm",2],0,"minute"),D("minute","m"),F("m",Wi),F("mm",Wi,Ri),B(["m","mm"],ss);var Es=T("Minutes",!1);I("s",["ss",2],0,"second"),D("second","s"),F("s",Wi),F("ss",Wi,Ri),B(["s","ss"],os);var ks=T("Seconds",!1);I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),Ge("SSS"),Ge("SSSS"),D("millisecond","ms"),F("S",Gi,Fi),F("SS",Gi,Ri),F("SSS",Gi,Hi),F("SSSS",Ui),B(["S","SS","SSS","SSSS"],function(t,e){e[ns]=f(1e3*("0."+t))});var Ns=T("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var Is=u.prototype;Is.add=_s,Is.calendar=Jt,Is.clone=te,Is.diff=re,Is.endOf=ge,Is.format=le,Is.from=ce,Is.fromNow=pe,Is.get=k,Is.invalidAt=Se,Is.isAfter=ee,Is.isBefore=ie,Is.isBetween=se,Is.isSame=oe,Is.isValid=xe,Is.lang=ws,Is.locale=ue,Is.localeData=me,Is.max=gs,Is.min=fs,Is.parsingFlags=we,Is.set=k,Is.startOf=fe,Is.subtract=xs,Is.toArray=_e,Is.toDate=be,Is.toISOString=de,Is.toJSON=de,Is.toString=he,Is.unix=ye,Is.valueOf=ve,Is.year=us,Is.isLeapYear=rt,Is.weekYear=Ce,Is.isoWeekYear=Te,Is.quarter=Is.quarters=ke,Is.month=q,Is.daysInMonth=Z,Is.week=Is.weeks=ct,Is.isoWeek=Is.isoWeeks=pt,Is.weeksInYear=Ee,Is.isoWeeksInYear=Oe,Is.date=Ss,Is.day=Is.days=Pe,Is.weekday=Fe,Is.isoWeekday=Re,Is.dayOfYear=mt,Is.hour=Is.hours=Os,Is.minute=Is.minutes=Es,Is.second=Is.seconds=ks,Is.millisecond=Is.milliseconds=Ns,Is.utcOffset=Pt,Is.utc=Rt,Is.local=Ht,Is.parseZone=Bt,Is.hasAlignedHourOffset=Yt,Is.isDST=Wt,Is.isDSTShifted=Gt,Is.isLocal=jt,Is.isUtcOffset=Vt,Is.isUtc=Ut, +Is.isUTC=Ut,Is.zoneAbbr=je,Is.zoneName=Ve,Is.dates=$("dates accessor is deprecated. Use date instead.",Ss),Is.months=$("months accessor is deprecated. Use month instead",q),Is.years=$("years accessor is deprecated. Use year instead",us),Is.zone=$("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Ft);var Ls=Is,zs={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},As={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},Ps="Invalid date",Fs="%d",Rs=/\d{1,2}/,Hs={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Bs=v.prototype;Bs._calendar=zs,Bs.calendar=qe,Bs._longDateFormat=As,Bs.longDateFormat=Ze,Bs._invalidDate=Ps,Bs.invalidDate=Qe,Bs._ordinal=Fs,Bs.ordinal=Ke,Bs._ordinalParse=Rs,Bs.preparse=$e,Bs.postformat=$e,Bs._relativeTime=Hs,Bs.relativeTime=Je,Bs.pastFuture=ti,Bs.set=ei,Bs.months=j,Bs._months=rs,Bs.monthsShort=V,Bs._monthsShort=as,Bs.monthsParse=U,Bs.week=ht,Bs._week=ms,Bs.firstDayOfYear=lt,Bs.firstDayOfWeek=dt,Bs.weekdays=Ie,Bs._weekdays=Ds,Bs.weekdaysMin=ze,Bs._weekdaysMin=Cs,Bs.weekdaysShort=Le,Bs._weekdaysShort=Ms,Bs.weekdaysParse=Ae,Bs.isPM=Ye,Bs._meridiemParse=Ts,Bs.meridiem=We,x("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===f(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=$("moment.lang is deprecated. Use moment.locale instead.",x),e.langData=$("moment.langData is deprecated. Use moment.localeData instead.",S);var Ys=Math.abs,Ws=yi("ms"),Gs=yi("s"),js=yi("m"),Vs=yi("h"),Us=yi("d"),Xs=yi("w"),qs=yi("M"),Zs=yi("y"),Qs=_i("milliseconds"),Ks=_i("seconds"),$s=_i("minutes"),Js=_i("hours"),to=_i("days"),eo=_i("months"),io=_i("years"),so=Math.round,oo={s:45,m:45,h:22,d:26,M:11},no=Math.abs,ro=kt.prototype;ro.abs=di,ro.add=ci,ro.subtract=pi,ro.as=gi,ro.asMilliseconds=Ws,ro.asSeconds=Gs,ro.asMinutes=js,ro.asHours=Vs,ro.asDays=Us,ro.asWeeks=Xs,ro.asMonths=qs,ro.asYears=Zs,ro.valueOf=vi,ro._bubble=ui,ro.get=bi,ro.milliseconds=Qs,ro.seconds=Ks,ro.minutes=$s,ro.hours=Js,ro.days=to,ro.weeks=xi,ro.months=eo,ro.years=io,ro.humanize=Mi,ro.toISOString=Ci,ro.toString=Ci,ro.toJSON=Ci,ro.locale=ue,ro.localeData=me,ro.toIsoString=$("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ci),ro.lang=ws,I("X",0,0,"unix"),I("x",0,0,"valueOf"),F("x",Xi),F("X",Zi),B("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),B("x",function(t,e,i){i._d=new Date(f(t))}),e.version="2.10.0",i(Ct),e.fn=Ls,e.min=Ot,e.max=Et,e.utc=d,e.unix=Ue,e.months=oi,e.isDate=n,e.locale=x,e.invalid=c,e.duration=Xt,e.isMoment=m,e.weekdays=ri,e.parseZone=Xe,e.localeData=S,e.isDuration=Nt,e.monthsShort=ni,e.weekdaysMin=hi,e.defineLocale=w,e.weekdaysShort=ai,e.normalizeUnits=M,e.relativeTimeThreshold=Di;var ao=e;return ao})}).call(e,i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ', this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e,i){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(t){throw new Error("Cannot find module '"+t+"'.")}s.keys=function(){return[]},s.resolve=s,t.exports=s,s.id=67},function(t,e,i){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e,i){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t,e,i){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +this.manipulationDiv.appendChild(this.manipulationDOM.deleteSpan)),this._bindHammerToDiv(this.manipulationDOM.addNodeSpan,"_createAddNodeToolbar"),this._bindHammerToDiv(this.manipulationDOM.addEdgeSpan,"_createAddEdgeToolbar"),this._bindHammerToDiv(this.closeDiv,"_toggleEditMode"),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this._bindHammerToDiv(this.manipulationDOM.editNodeSpan,"_editNode"):1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&this._bindHammerToDiv(this.manipulationDOM.editEdgeSpan,"_createEditEdgeToolbar"),0==this._selectionIsEmpty()&&this._bindHammerToDiv(this.manipulationDOM.deleteSpan,"_deleteSelected");var e=this;this.boundFunction=e._createManipulatorBar,this.on("select",this.boundFunction)}else{for(;this.editModeDiv.hasChildNodes();)this.editModeDiv.removeChild(this.editModeDiv.firstChild);this.manipulationDOM.editModeSpan=document.createElement("div"),this.manipulationDOM.editModeSpan.className="network-manipulationUI edit editmode",this.manipulationDOM.editModeLabelSpan=document.createElement("div"),this.manipulationDOM.editModeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editModeLabelSpan.innerHTML=t.edit,this.manipulationDOM.editModeSpan.appendChild(this.manipulationDOM.editModeLabelSpan),this.editModeDiv.appendChild(this.manipulationDOM.editModeSpan),this._bindHammerToDiv(this.manipulationDOM.editModeSpan,"_toggleEditMode")}},e._bindHammerToDiv=function(t,e){var i=r(t,{prevent_default:!0});i.on("touch",this[e].bind(this)),this.manipulationHammers.push(i)},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.addDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar");var e=this;this.boundFunction=e._addNode,this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation(!0),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.edgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar");var e=this;this.boundFunction=e._handleConnect,this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this.cachedFunctions._handleOnHold=this._handleOnHold,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleOnHold=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.editEdgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar"),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation(!0)),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!==e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation(!1),this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e,i){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t,e,i){function s(t){throw new Error("Cannot find module '"+t+"'.")}s.keys=function(){return[]},s.resolve=s,t.exports=s,s.id=70},function(t,e,i){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/examples/graph2d/13_localization.html b/examples/graph2d/13_localization.html index d9a0cf53..3475378d 100644 --- a/examples/graph2d/13_localization.html +++ b/examples/graph2d/13_localization.html @@ -28,6 +28,7 @@

    diff --git a/examples/timeline/19_localization.html b/examples/timeline/19_localization.html index e2624abd..2e48299c 100644 --- a/examples/timeline/19_localization.html +++ b/examples/timeline/19_localization.html @@ -24,6 +24,7 @@

    diff --git a/lib/timeline/component/CurrentTime.js b/lib/timeline/component/CurrentTime.js index 2cbb4f70..13150e21 100644 --- a/lib/timeline/component/CurrentTime.js +++ b/lib/timeline/component/CurrentTime.js @@ -88,6 +88,13 @@ CurrentTime.prototype.redraw = function() { var x = this.body.util.toScreen(now); var locale = this.options.locales[this.options.locale]; + if (!locale) { + if (!this.warned) { + console.log('WARNING: locale "' + this.options.locale + '" not found in vis.js'); + this.warned = true; + } + locale = this.options.locales['en']; // fall back on english when not available + } var title = locale.current + ' ' + locale.time + ': ' + moment(now).format('dddd, MMMM Do YYYY, H:mm:ss'); title = title.charAt(0).toUpperCase() + title.substring(1); diff --git a/lib/timeline/component/CustomTime.js b/lib/timeline/component/CustomTime.js index eea21450..842e14c8 100644 --- a/lib/timeline/component/CustomTime.js +++ b/lib/timeline/component/CustomTime.js @@ -118,6 +118,13 @@ CustomTime.prototype.redraw = function () { var x = this.body.util.toScreen(this.customTime); var locale = this.options.locales[this.options.locale]; + if (!locale) { + if (!this.warned) { + console.log('WARNING: locale "' + this.options.locale + '" not found in vis.js'); + this.warned = true; + } + locale = this.options.locales['en']; // fall back on english when not available + } var title = locale.time + ': ' + moment(this.customTime).format('dddd, MMMM Do YYYY, H:mm:ss'); title = title.charAt(0).toUpperCase() + title.substring(1); diff --git a/misc/how_to_publish.md b/misc/how_to_publish.md index 62dced77..676556ae 100644 --- a/misc/how_to_publish.md +++ b/misc/how_to_publish.md @@ -56,7 +56,7 @@ This generates the vis.js library in the folder `./dist`. Verify if it installs the just released version, and verify if it works. - - Verify within an hour whether vis.js is updated on http://cdnjs.com/ + - Verify within a day or so whether vis.js is updated on http://cdnjs.com/ ## Update website diff --git a/package.json b/package.json index 1fa62784..2d5f2954 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vis", - "version": "3.12.0", + "version": "3.12.1-SNAPSHOT", "description": "A dynamic, browser-based visualization library.", "homepage": "http://visjs.org/", "repository": { From 61b95130702da41dfccc89b73fd2b1582f881103 Mon Sep 17 00:00:00 2001 From: jos Date: Tue, 7 Apr 2015 15:08:01 +0200 Subject: [PATCH 40/43] More descriptive warning on missing locale (see #761) --- dist/vis.js | 40 +++++++++++++------------- dist/vis.map | 2 +- dist/vis.min.js | 22 +++++++------- examples/graph2d/13_localization.html | 1 - examples/timeline/19_localization.html | 1 - lib/timeline/component/CurrentTime.js | 2 +- lib/timeline/component/CustomTime.js | 2 +- 7 files changed, 33 insertions(+), 37 deletions(-) diff --git a/dist/vis.js b/dist/vis.js index bc9531f1..bd094411 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -10717,7 +10717,7 @@ return /******/ (function(modules) { // webpackBootstrap var locale = this.options.locales[this.options.locale]; if (!locale) { if (!this.warned) { - console.log('WARNING: locale "' + this.options.locale + '" not found in vis.js'); + console.log('WARNING: options.locales[\'' + this.options.locale + '\'] not found. See http://visjs.org/docs/timeline.html#Localization'); this.warned = true; } locale = this.options.locales['en']; // fall back on english when not available @@ -10923,7 +10923,7 @@ return /******/ (function(modules) { // webpackBootstrap var locale = this.options.locales[this.options.locale]; if (!locale) { if (!this.warned) { - console.log('WARNING: locale "' + this.options.locale + '" not found in vis.js'); + console.log('WARNING: options.locales[\'' + this.options.locale + '\'] not found. See http://visjs.org/docs/timeline.html#Localization'); this.warned = true; } locale = this.options.locales['en']; // fall back on english when not available @@ -30570,9 +30570,9 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(67); - var HierarchialRepulsionMixin = __webpack_require__(68); - var BarnesHutMixin = __webpack_require__(69); + var RepulsionMixin = __webpack_require__(68); + var HierarchialRepulsionMixin = __webpack_require__(69); + var BarnesHutMixin = __webpack_require__(70); /** * Toggling barnes Hut calculation on and off. @@ -35012,6 +35012,19 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 67 */ +/***/ function(module, exports, __webpack_require__) { + + function webpackContext(req) { + throw new Error("Cannot find module '" + req + "'."); + } + webpackContext.keys = function() { return []; }; + webpackContext.resolve = webpackContext; + module.exports = webpackContext; + webpackContext.id = 67; + + +/***/ }, +/* 68 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35081,7 +35094,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 68 */ +/* 69 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35240,7 +35253,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 69 */ +/* 70 */ /***/ function(module, exports, __webpack_require__) { /** @@ -35644,19 +35657,6 @@ return /******/ (function(modules) { // webpackBootstrap }; -/***/ }, -/* 70 */ -/***/ function(module, exports, __webpack_require__) { - - function webpackContext(req) { - throw new Error("Cannot find module '" + req + "'."); - } - webpackContext.keys = function() { return []; }; - webpackContext.resolve = webpackContext; - module.exports = webpackContext; - webpackContext.id = 70; - - /***/ }, /* 71 */ /***/ function(module, exports, __webpack_require__) { diff --git a/dist/vis.map b/dist/vis.map index eb5484ca..ce3f7ed9 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","b","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","args","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","groupChanged","_moveToGroup","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","stopPropagation","removeFromDataSet","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","warned","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","status","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","requested","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","hooks__hooks","hookCallback","setHookCallback","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","input","res","hasOwnProp","utc__createUTC","createLocalOrUTC","utc","valid__isValid","_isValid","getTime","_pf","_strict","bigHour","valid__createInvalid","flags","NaN","copyConfig","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","dontConvert","lengthDiff","diffs","Locale","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","globalLocale","_abbr","locales__getSetGlobalLocale","locales__getLocale","defineLocale","abbr","set","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","makeGetSet","keepTime","get_set__set","get_set__get","mom","getSet","zeroFill","number","targetLength","forceSign","output","addFormatToken","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","isValid","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","unescapeFormat","matched","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","UTC","getUTCDate","localeMonths","_months","localeMonthsShort","_monthsShort","localeMonthsParse","monthName","_monthsParse","_longMonthsParse","_shortMonthsParse","months","monthsShort","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecateSimple","deprecations","configFromISO","l","string","from_string__isoRegex","isoDates","isoTimes","matchOffset","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","createDate","ms","createUTCDate","setUTCFullYear","daysInYear","isLeapYear","getIsLeapYear","weekOfYear","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","local__createLocal","week","localeWeek","_week","dow","doy","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","dayOfYearFromWeeks","daysToAdd","getUTCDay","getSetDayOfYear","startOf","defaults","currentDateArray","_useUTC","getUTCFullYear","getUTCMonth","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","temp","GG","W","E","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","_meridiem","meridiem","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","createFromConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","years","quarters","quarter","weeks","days","_milliseconds","_days","_bubble","isDuration","separator","utcOffset","offsetFromString","matches","chunk","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","create__isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","period","dur","tmp","isAdding","calendar__calendar","sod","calendar","inputMs","endOf","isBetween","absFloor","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","moment_format__toISOString","inputString","postformat","withoutSuffix","humanize","fromNow","newLocaleData","isoWeekday","to_type__valueOf","unix","moment_valid__isValid","parsingFlags","invalidAt","addWeekYearFormatToken","getter","weeksInYear","getSetWeekYear","getSetISOWeekYear","getISOWeeksInYear","getWeeksInYear","weekInfo","getSetQuarter","parseWeekday","weekdaysParse","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","localeWeekdaysParse","weekdayName","_weekdaysParse","weekdays","weekdaysShort","weekdaysMin","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","lowercase","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","millisecond__milliseconds","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","locale_calendar__calendar","_calendar","_longDateFormat","_invalidDate","_ordinal","preParsePostFormat","relative__relativeTime","isFuture","_relativeTime","pastFuture","set__set","_ordinalParseLenient","_ordinalParse","lists__get","setter","list","out","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","bubble","daysToYears","yearsToDays","as__valueOf","makeAs","alias","get__get","makeGetter","substituteTimeAgo","relativeTime","humanize__relativeTime","posNegDuration","thresholds","humanize__getSetRelativeTimeThreshold","limit","withSuffix","iso_string__toISOString","Y","iso_string__abs","D","asSeconds","match1","match2","match3","match4","match6","match1to2","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","isoWeekYear","getSetDayOfMonth","invalidWeekday","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","defaultLocaleMeridiemParse","getSetHour","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","toJSON","isoWeek","isoWeeks","isoWeeksInYear","isDST","isDSTShifted","zoneAbbr","zoneName","zone","momentPrototype","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","prototype__proto","firstDayOfYear","ordinalParse","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","get__milliseconds","duration_prototype__proto","toIsoString","version","invalid","relativeTimeThreshold","_moment","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackContext","req","resolve","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","b","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","args","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","groupChanged","_moveToGroup","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","stopPropagation","removeFromDataSet","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","warned","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","status","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","requested","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","hooks__hooks","hookCallback","setHookCallback","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","input","res","hasOwnProp","utc__createUTC","createLocalOrUTC","utc","valid__isValid","_isValid","getTime","_pf","_strict","bigHour","valid__createInvalid","flags","NaN","copyConfig","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","dontConvert","lengthDiff","diffs","Locale","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","globalLocale","_abbr","locales__getSetGlobalLocale","locales__getLocale","defineLocale","abbr","set","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","makeGetSet","keepTime","get_set__set","get_set__get","mom","getSet","zeroFill","number","targetLength","forceSign","output","addFormatToken","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","isValid","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","unescapeFormat","matched","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","UTC","getUTCDate","localeMonths","_months","localeMonthsShort","_monthsShort","localeMonthsParse","monthName","_monthsParse","_longMonthsParse","_shortMonthsParse","months","monthsShort","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecateSimple","deprecations","configFromISO","l","string","from_string__isoRegex","isoDates","isoTimes","matchOffset","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","createDate","ms","createUTCDate","setUTCFullYear","daysInYear","isLeapYear","getIsLeapYear","weekOfYear","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","local__createLocal","week","localeWeek","_week","dow","doy","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","dayOfYearFromWeeks","daysToAdd","getUTCDay","getSetDayOfYear","startOf","defaults","currentDateArray","_useUTC","getUTCFullYear","getUTCMonth","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","temp","GG","W","E","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","_meridiem","meridiem","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","createFromConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","years","quarters","quarter","weeks","days","_milliseconds","_days","_bubble","isDuration","separator","utcOffset","offsetFromString","matches","chunk","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","create__isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","period","dur","tmp","isAdding","calendar__calendar","sod","calendar","inputMs","endOf","isBetween","absFloor","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","moment_format__toISOString","inputString","postformat","withoutSuffix","humanize","fromNow","newLocaleData","isoWeekday","to_type__valueOf","unix","moment_valid__isValid","parsingFlags","invalidAt","addWeekYearFormatToken","getter","weeksInYear","getSetWeekYear","getSetISOWeekYear","getISOWeeksInYear","getWeeksInYear","weekInfo","getSetQuarter","parseWeekday","weekdaysParse","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","localeWeekdaysParse","weekdayName","_weekdaysParse","weekdays","weekdaysShort","weekdaysMin","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","lowercase","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","millisecond__milliseconds","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","locale_calendar__calendar","_calendar","_longDateFormat","_invalidDate","_ordinal","preParsePostFormat","relative__relativeTime","isFuture","_relativeTime","pastFuture","set__set","_ordinalParseLenient","_ordinalParse","lists__get","setter","list","out","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","bubble","daysToYears","yearsToDays","as__valueOf","makeAs","alias","get__get","makeGetter","substituteTimeAgo","relativeTime","humanize__relativeTime","posNegDuration","thresholds","humanize__getSetRelativeTimeThreshold","limit","withSuffix","iso_string__toISOString","Y","iso_string__abs","D","asSeconds","match1","match2","match3","match4","match6","match1to2","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","isoWeekYear","getSetDayOfMonth","invalidWeekday","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","defaultLocaleMeridiemParse","getSetHour","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","toJSON","isoWeek","isoWeeks","isoWeeksInYear","isDST","isDSTShifted","zoneAbbr","zoneName","zone","momentPrototype","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","prototype__proto","firstDayOfYear","ordinalParse","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","get__milliseconds","duration_prototype__proto","toIsoString","version","invalid","relativeTimeThreshold","_moment","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index fc7e4be5..d97f8e6f 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -27,18 +27,16 @@ var i=this;if(this.dataSet&&this.dataSet.off("*",this._onChange),void 0!==t){Arr },s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t,e,i){function s(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}s.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},s.prototype.setStep=function(t,e){void 0===t||0>=t||(void 0!==e&&(this.prettyStep=e),this._step=this.prettyStep===!0?s.calculatePrettyStep(t):t)},s.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},s.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},s.prototype.getStep=function(){return this._step},s.prototype.start=function(){this._current=this._start-this._start%this._step},s.prototype.next=function(){this._current+=this._step},s.prototype.end=function(){return this._current>this._end},t.exports=s},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)?m="current-time":o.hasParent(u,this.dom.center)&&(m="background"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},s.prototype.getEventProperties=function(t){var e=t.gesture?t.gesture.center.pageX:t.pageX,i=t.gesture?t.gesture.center.pageY:t.pageY,s=e-o.getAbsoluteLeft(this.dom.centerContainer),n=i-o.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(s),a=o.getTarget(t),h=null;o.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&o.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":o.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":o.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":o.hasParent(a,this.customTime.bar)?h="custom-time":o.hasParent(a,this.currentTime.bar)?h="current-time":o.hasParent(a,this.dom.center)&&(h="background");var d=[],l=this.linegraph.yAxisLeft,c=this.linegraph.yAxisRight;return l.hidden||d.push(l.screenToValue(n)),c.hidden||d.push(c.screenToValue(n)),{event:t,what:h,pageX:e,pageY:i,x:s,y:n,time:r,value:d}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t,e,i){function s(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}s.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},s.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},s.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},s.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},s.prototype.hasNext=function(){return this.current>=this.marginStart},s.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},s.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},s.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},s.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=s},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(t){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e,i){var s=.001; -e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-i.vertical+se.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(t){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){t.preventDefault(),t.stopPropagation(),e.parent.removeFromDataSet(e)}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e){this.options=null,this.props=null}s.prototype.setOptions=function(t){t&&util.extend(this.options,t)},s.prototype.redraw=function(){return!1},s.prototype.destroy=function(){},s.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale];s||(this.warned||(console.log('WARNING: locale "'+this.options.locale+'" not found in vis.js'),this.warned=!0),s=this.options.locales.en);var o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale];i||(this.warned||(console.log('WARNING: locale "'+this.options.locale+'" not found in vis.js'),this.warned=!0),i=this.options.locales.en);var s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")), -1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;ro;o++){var r=this.visibleItems[o];r.repositionY(e)}return s},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,s){i._onAdd(e.items)},update:function(t,e,s){i._onUpdate(e.items)},remove:function(t,e,s){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,s){i._onAddGroups(e.items)},update:function(t,e,s){i._onUpdateGroups(e.items)},remove:function(t,e,s){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;io;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-i.vertical+se.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(t){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){t.preventDefault(),t.stopPropagation(),e.parent.removeFromDataSet(e)}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e){this.options=null,this.props=null}s.prototype.setOptions=function(t){t&&util.extend(this.options,t)},s.prototype.redraw=function(){return!1},s.prototype.destroy=function(){},s.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale];s||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),s=this.options.locales.en);var o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale];i||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),i=this.options.locales.en);var s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"]; -}},s.prototype._onDragStartAddItem=function(t){var e=this.options.snap||null,i=n.getAbsoluteLeft(this.dom.frame),s=t.gesture.center.pageX-i-10,o=this.body.util.toTime(s),r=this.body.util.getScale(),a=this.body.util.getStep(),h=e?e(o,r,a):h,d=h,l={type:"range",start:h,end:d,content:"new item"},c=n.randomUUID();l[this.itemsData._fieldId]=c;var p=this.groupFromTarget(t);p&&(l.group=p.groupId);var u=new m(l,this.conversion,this.options);u.id=c,u.data=l,this._addItem(u);var f={item:u,dragRight:!0,initialX:t.gesture.center.pageX,data:n.extend({},l)};this.touchParams.itemProps=[f],t.stopPropagation()},s.prototype._onDrag=function(t){if(t.preventDefault(),this.touchParams.itemProps){t.stopPropagation();var e=this,i=this.options.snap||null,s=this.body.dom.root.offsetLeft+this.body.domProps.left.width,o=this.body.util.getScale(),r=this.body.util.getStep();this.touchParams.itemProps.forEach(function(a){var h=e.body.util.toTime(t.gesture.center.pageX-s),d=e.body.util.toTime(a.initialX-s),l=h-d,c=n.extend({},a.item.data);if(e.options.editable.updateTime)if(a.dragLeft){if(void 0!=c.start){var p=n.convert(a.data.start,"Date"),u=new Date(p.valueOf()+l);c.start=i?i(u,o,r):u}}else if(a.dragRight){if(void 0!=c.end){var m=n.convert(a.data.end,"Date"),f=new Date(m.valueOf()+l);c.end=i?i(f,o,r):f}}else if(void 0!=c.start){var p=n.convert(a.data.start,"Date").valueOf(),u=new Date(p+l);if(void 0!=c.end){var m=n.convert(a.data.end,"Date"),g=m.valueOf()-p.valueOf();c.start=i?i(u,o,r):u,c.end=new Date(c.start.valueOf()+g)}else c.start=i?i(u,o,r):u}if(e.options.editable.updateGroup&&!a.dragLeft&&!a.dragRight&&void 0!=c.group){var v=e.groupFromTarget(t);v&&(c.group=v.groupId)}e.options.onMoving(c,function(t){t&&a.item.setData(t)})}),this.stackDirty=!0,this.body.emitter.emit("change")}},s.prototype._moveToGroup=function(t,e){var i=this.groups[e];if(i&&i.groupId!=t.data.group){var s=t.parent;s.remove(t),s.order(),i.add(t),i.order(),t.data.group=i.groupId}},s.prototype._onDragEnd=function(t){if(t.preventDefault(),this.touchParams.itemProps){t.stopPropagation();var e=[],i=this,s=this.itemsData.getDataSet(),o=this.touchParams.itemProps;this.touchParams.itemProps=null,o.forEach(function(t){var o=t.item.id,r=null!=i.itemsData.get(o,i.itemOptions);if(r){var a=n.extend({},t.item.data);i.options.onMove(a,function(n){n?(n[s._fieldId]=o,e.push(n)):(t.item.setData(t.data),i.stackDirty=!0,i.body.emitter.emit("change"))})}else i.options.onAdd(t.item.data,function(e){i._removeItem(t.item),e&&i.itemsData.getDataSet().add(e),i.stackDirty=!0,i.body.emitter.emit("change")})}),e.length&&s.update(e)}},s.prototype._onSelectItem=function(t){if(this.options.selectable){var e=t.gesture.srcEvent&&t.gesture.srcEvent.ctrlKey,i=t.gesture.srcEvent&&t.gesture.srcEvent.shiftKey;if(e||i)return void this._onMultiSelectItem(t);var s=this.getSelection(),o=this.itemFromTarget(t),n=o?[o.id]:[];this.setSelection(n);var r=this.getSelection();(r.length>0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&!(a instanceof f)&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.pageY:t.pageY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,s){i._onAdd(e.items)},update:function(t,e,s){i._onUpdate(e.items)},remove:function(t,e,s){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,s){i._onAddGroups(e.items)},update:function(t,e,s){i._onUpdateGroups(e.items)},remove:function(t,e,s){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600, -activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(t){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(t){this.drag.dragging=!1;var e=this.drag.selection;e&&e.length?(e.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=this.nodesData._fieldId||null,s=0,o=t.length;o>s;s++){e=t[s];var n=this.nodesData.get(e);i&&(n.id=n[i]);var r=new f(n,this.images,this.groups,this.constants);if(this.nodes[e]=r,!(0!=r.xFixed&&0!=r.yFixed||null!==r.x&&null!==r.y)){var a=1*t.length+10,h=2*Math.PI*Math.random();0==r.xFixed&&(r.x=a*Math.cos(h)),0==r.yFixed&&(r.y=a*Math.sin(h))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=this.edgesData._fieldId,o=0,n=t.length;n>o;o++){var r=t[o],a=e[r];a&&a.disconnect();var h=i.get(r,{showInternalIds:!0});s&&(h.id=h[s]),e[r]=new g(h,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t,e){void 0===t&&(t=!1),this.redrawRequested=!1;var i=this.frame.canvas.getContext("2d");i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var s=this.frame.canvas.clientWidth,o=this.frame.canvas.clientHeight;i.clearRect(0,0,s,o),i.save(),i.translate(this.translation.x,this.translation.y),i.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",i),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",i)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",i,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",i),i.restore(),t===!0&&i.clearRect(0,0,s,o)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame), -s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t,e,i){function s(){this.images={},this.imageBroken={},this.callback=void 0}s.prototype.setOnloadCallback=function(t){this.callback=t},s.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=s},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s); - -this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(t){throw"Draw method not initialized for node"},s.prototype.resize=function(t){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(t){if(!this.width||!this.height){var e,i;if(this.value){this.options.radius=this.baseRadiusValue;var s=this.imageObj.height/this.imageObj.width;void 0!==s?(e=this.options.radius||this.imageObj.width,i=this.options.radius*s||this.imageObj.height):(e=0,i=0)}else e=this.imageObj.width,i=this.imageObj.height;this.width=e,this.height=i,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-e)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(t){if(!this.width){this.options.radius=this.baseRadiusValue;var e=2*this.options.radius;this.width=e,this.height=e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-e}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(t){if(!this.width){var e=5,i={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=h(o.attr,t.node))),i=n.length-1;i>=0;i--){var a=n[i];a.nodes||(a.nodes=[]),-1==a.nodes.indexOf(o)&&a.nodes.push(o)}e.attr&&(o.attr=h(o.attr,e.attr))}function c(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function p(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=h({},t.edge)),n.attr=h(n.attr||{},o),n}function u(){for(I=C.NULL,N="";" "==k||" "==k||"\n"==k||"\r"==k;)n();do{var t=!1;if("#"==k){for(var e=E-1;" "==O.charAt(e)||" "==O.charAt(e);)e--;if("\n"==O.charAt(e)||""==O.charAt(e)){for(;""!=k&&"\n"!=k;)n();t=!0}}if("/"==k&&"/"==r()){for(;""!=k&&"\n"!=k;)n();t=!0}if("/"==k&&"*"==r()){for(;""!=k;){if("*"==k&&"/"==r()){n(),n();break}n()}t=!0}for(;" "==k||" "==k||"\n"==k||"\r"==k;)n()}while(t);if(""==k)return void(I=C.DELIMITER);var i=k+r();if(T[i])return I=C.DELIMITER,N=i,n(),void n();if(T[k])return I=C.DELIMITER,N=k,void n();if(a(k)||"-"==k){for(N+=k,n();a(k);)N+=k,n();return"false"==N?N=!1:"true"==N?N=!0:isNaN(Number(N))||(N=Number(N)),void(I=C.IDENTIFIER)}if('"'==k){for(n();""!=k&&('"'!=k||'"'==k&&'"'==r());)N+=k,'"'==k&&n(),n();if('"'!=k)throw w('End of string " expected');return n(),void(I=C.IDENTIFIER)}for(I=C.UNKNOWN;""!=k;)N+=k,n();throw new SyntaxError('Syntax error in part "'+S(N,30)+'"')}function m(){var t={};if(o(),u(),"strict"==N&&(t.strict=!0,u()),("graph"==N||"digraph"==N)&&(t.type=N,u()),I==C.IDENTIFIER&&(t.id=N,u()),"{"!=N)throw w("Angle bracket { expected");if(u(),f(t),"}"!=N)throw w("Angle bracket } expected");if(u(),""!==N)throw w("End of file expected");return u(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==N&&"}"!=N;)g(t),";"==N&&u()}function g(t){var e=v(t);if(e)return void _(t,e);var i=y(t);if(!i){if(I!=C.IDENTIFIER)throw w("Identifier expected");var s=N;if(u(),"="==N){if(u(),I!=C.IDENTIFIER)throw w("Identifier expected");t[s]=N,u()}else b(t,s)}}function v(t){var e=null;if("subgraph"==N&&(e={},e.type="subgraph",u(),I==C.IDENTIFIER&&(e.id=N,u())),"{"==N){if(u(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=N)throw w("Angle bracket } expected");u(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function y(t){return"node"==N?(u(),t.node=x(),"node"):"edge"==N?(u(),t.edge=x(),"edge"):"graph"==N?(u(),t.graph=x(),"graph"):null}function b(t,e){var i={id:e},s=x();s&&(i.attr=s),l(t,i),_(t,e)}function _(t,e){for(;"->"==N||"--"==N;){var i,s=N;u();var o=v(t);if(o)i=o;else{if(I!=C.IDENTIFIER)throw w("Identifier or subgraph expected");i=N,l(t,{id:i}),u()}var n=x(),r=p(t,e,i,s,n);c(t,r),e=i}}function x(){for(var t=null;"["==N;){for(u(),t={};""!==N&&"]"!=N;){if(I!=C.IDENTIFIER)throw w("Attribute name expected");var e=N;if(u(),"="!=N)throw w("Equal sign = expected");if(u(),I!=C.IDENTIFIER)throw w("Attribute value expected");var i=N;d(t,e,i),u(),","==N&&u()}if("]"!=N)throw w("Bracket ] expected");u()}return t}function w(t){return new SyntaxError(t+', got "'+S(N,30)+'" (char '+E+")")}function S(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){var e=s(t),i={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};h(e,t.attr),e.image&&(e.shape="image"),i.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return h(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,s;e=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);i.edges.push(e)}),D(e,s,function(e,s){var n=p(i,e.id,s.id,t.type,t.attr),r=o(n);i.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);i.edges.push(e)})})}return e.attr&&(i.options=e.attr),i}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},T={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},O="",E=0,k="",N="",I=C.NULL,L=/[a-zA-Z_0-9.:#]/;e.parseDOT=s,e.DOTToGraph=M},function(t,e,i){function s(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg,c[d].label)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){function s(t){return t?o(t):void 0}function o(t){for(var e in s.prototype)t[e]=s.prototype[e];return t}t.exports=s,s.prototype.on=s.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},s.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},s.prototype.off=s.prototype.removeListener=s.prototype.removeAllListeners=s.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},s.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},s.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){var s,o,n;!function(i,r){o=[],s=r,n="function"==typeof s?s.apply(e,o):s,!(void 0!==n&&(t.exports=n))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;o0)for(i in Ei)s=Ei[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function u(t){p(this,t),this._d=new Date(+t._d),ki===!1&&(ki=!0,e.updateOffset(this),ki=!1)}function m(t){return t instanceof u||null!=t&&a(t,"_isAMomentObject")}function f(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function g(t,e,i){var s,o=Math.min(t.length,e.length),n=Math.abs(t.length-e.length),r=0;for(s=0;o>s;s++)(i&&t[s]!==e[s]||!i&&f(t[s])!==f(e[s]))&&r++;return r+n}function v(){}function y(t){return t?t.toLowerCase().replace("_","-"):t}function b(t){for(var e,i,s,o,n=0;n0;){if(s=_(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&g(o,i,!0)>=e-1)break;e--}n++}return null}function _(e){var i=null;if(!Ni[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Oi._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),x(i)}catch(s){}return Ni[e]}function x(t,e){var i;return t&&(i="undefined"==typeof e?S(t):w(t,e),i&&(Oi=i)),Oi._abbr}function w(t,e){return null!==e?(e.abbr=t,Ni[t]||(Ni[t]=new v),Ni[t].set(e),x(t),Ni[t]):(delete Ni[t],null)}function S(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Oi;if(!o(t)){if(e=_(t))return e;t=[t]}return b(t)}function D(t,e){var i=t.toLowerCase();Ii[i]=Ii[i+"s"]=Ii[e]=t}function M(t){return"string"==typeof t?Ii[t]||Ii[t.toLowerCase()]:void 0}function C(t){var e,i,s={};for(i in t)a(t,i)&&(e=M(i),e&&(s[e]=t[i]));return s}function T(t,i){return function(s){return null!=s?(E(this,t,s),e.updateOffset(this,i),this):O(this,t)}}function O(t,e){return t._d["get"+(t._isUTC?"UTC":"")+e]()}function E(t,e,i){return t._d["set"+(t._isUTC?"UTC":"")+e](i)}function k(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=M(t),"function"==typeof this[t])return this[t](e);return this}function N(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengthe;e++)s[e]=Pi[s[e]]?Pi[s[e]]:L(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function A(t,e){return t.isValid()?(e=P(e,t.localeData()),Ai[e]||(Ai[e]=z(e)),Ai[e](t)):t.localeData().invalidDate()}function P(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(zi.lastIndex=0;s>=0&&zi.test(t);)t=t.replace(zi,i),zi.lastIndex=0,s-=1;return t}function F(t,e,i){Ki[t]="function"==typeof e?e:function(t){return t&&i?i:e}}function R(t,e){return a(Ki,t)?Ki[t](e._strict,e._locale):new RegExp(H(t))}function H(t){return t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function B(t,e){var i,s=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(s=function(t,i){i[e]=f(t)}),i=0;is;s++){if(o=d([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}}function X(t,e){var i;return"string"==typeof e&&(e=t.localeData().monthsParse(e),"number"!=typeof e)?t:(i=Math.min(t.date(),G(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t)}function q(t){return null!=t?(X(this,t),e.updateOffset(this,!0),this):O(this,"Month")}function Z(){return G(this.year(),this.month())}function Q(t){var e,i=t._a;return i&&-2===t._pf.overflow&&(e=i[ts]<0||i[ts]>11?ts:i[es]<1||i[es]>G(i[Ji],i[ts])?es:i[is]<0||i[is]>24||24===i[is]&&(0!==i[ss]||0!==i[os]||0!==i[ns])?is:i[ss]<0||i[ss]>59?ss:i[os]<0||i[os]>59?os:i[ns]<0||i[ns]>999?ns:-1,t._pf._overflowDayOfYear&&(Ji>e||e>es)&&(e=es),t._pf.overflow=e),t}function K(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function $(t,e){var i=!0;return h(function(){return i&&(K(t),i=!1),e.apply(this,arguments)},e)}function J(t,e){hs[t]||(K(e),hs[t]=!0)}function tt(t){var e,i,s=t._i,o=ds.exec(s);if(o){for(t._pf.iso=!0,e=0,i=ls.length;i>e;e++)if(ls[e][1].exec(s)){t._f=ls[e][0]+(o[6]||" ");break}for(e=0,i=cs.length;i>e;e++)if(cs[e][1].exec(s)){t._f+=cs[e][0];break}s.match(qi)&&(t._f+="Z"),bt(t)}else t._isValid=!1}function et(t){var i=ps.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(tt(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function it(t,e,i,s,o,n,r){var a=new Date(t,e,i,s,o,n,r);return 1970>t&&a.setFullYear(t),a}function st(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ot(t){return nt(t)?366:365}function nt(t){return t%4===0&&t%100!==0||t%400===0}function rt(){return nt(this.year())}function at(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ct(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ht(t){return at(t,this._week.dow,this._week.doy).week}function dt(){return this._week.dow}function lt(){return this._week.doy}function ct(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function pt(t){var e=at(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function ut(t,e,i,s,o){var n,r,a=st(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:ot(t-1)+r}}function mt(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function ft(t,e,i){return null!=t?t:null!=e?e:i}function gt(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function vt(t){var e,i,s,o,n=[];if(!t._d){for(s=gt(t),t._w&&null==t._a[es]&&null==t._a[ts]&&yt(t),t._dayOfYear&&(o=ft(t._a[Ji],s[Ji]),t._dayOfYear>ot(o)&&(t._pf._overflowDayOfYear=!0),i=st(o,0,t._dayOfYear),t._a[ts]=i.getUTCMonth(),t._a[es]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[is]&&0===t._a[ss]&&0===t._a[os]&&0===t._a[ns]&&(t._nextDay=!0,t._a[is]=0),t._d=(t._useUTC?st:it).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[is]=24)}}function yt(t){var e,i,s,o,n,r,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,r=4,i=ft(e.GG,t._a[Ji],at(Ct(),1,4).year),s=ft(e.W,1),o=ft(e.E,1)):(n=t._locale._week.dow,r=t._locale._week.doy,i=ft(e.gg,t._a[Ji],at(Ct(),n,r).year),s=ft(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),a=ut(i,s,o,r,n),t._a[Ji]=a.year,t._dayOfYear=a.dayOfYear}function bt(t){if(t._f===e.ISO_8601)return void tt(t);t._a=[],t._pf.empty=!0;var i,s,o,n,r,a=""+t._i,h=a.length,d=0;for(o=P(t._f,t._locale).match(Li)||[],i=0;i0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(s)+s.length),d+=s.length),Pi[n]?(s?t._pf.empty=!1:t._pf.unusedTokens.push(n),W(n,s,t)):t._strict&&!s&&t._pf.unusedTokens.push(n);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[is]<=12&&(t._pf.bigHour=void 0),t._a[is]=_t(t._locale,t._a[is],t._meridiem),vt(t),Q(t)}function _t(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function xt(t){var e,i,o,n,r;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(n=0;nr)&&(o=r,i=e));h(t,i||e)}function wt(t){if(!t._d){var e=C(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],vt(t)}}function St(t){var e,i=t._i,s=t._f;return t._locale=t._locale||S(t._l),null===i||void 0===s&&""===i?c({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),m(i)?new u(Q(i)):(o(s)?xt(t):s?bt(t):Dt(t),e=new u(Q(t)),e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e))}function Dt(t){var i=t._i;void 0===i?t._d=new Date:n(i)?t._d=new Date(+i):"string"==typeof i?et(t):o(i)?(t._a=r(i.slice(0),function(t){return parseInt(t,10)}),vt(t)):"object"==typeof i?wt(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function Mt(t,e,i,o,n){var r={};return"boolean"==typeof i&&(o=i,i=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=n,r._l=i,r._i=t,r._f=e,r._strict=o,r._pf=s(),St(r)}function Ct(t,e,i,s){return Mt(t,e,i,s,!1)}function Tt(t,e){var i,s;if(1===e.length&&o(e[0])&&(e=e[0]),!e.length)return Ct();for(i=e[0],s=1;st&&(t=-t,i="-"),i+N(~~(t/60),2)+e+N(~~t%60,2)})}function Lt(t){var e=(t||"").match(qi)||[],i=e[e.length-1]||[],s=(i+"").match(vs)||["-",0,0],o=+(60*s[1])+f(s[2]);return"+"===s[0]?o:-o}function zt(t,i){var s,o;return i._isUTC?(s=i.clone(),o=(m(t)||n(t)?+t:+Ct(t))-+s,s._d.setTime(+s._d+o),e.updateOffset(s,!1),s):Ct(t).local()}function At(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Pt(t,i){var s,o=this._offset||0;return null!=t?("string"==typeof t&&(t=Lt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(s=At(this)),this._offset=t,this._isUTC=!0,null!=s&&this.add(s,"m"),o!==t&&(!i||this._changeInProgress?$t(this,Xt(t-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?o:At(this)}function Ft(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Rt(t){return this.utcOffset(0,t)}function Ht(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(At(this),"m")),this}function Bt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Lt(this._i)),this}function Yt(t){return t=t?Ct(t).utcOffset():0,(this.utcOffset()-t)%60===0}function Wt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Gt(){if(this._a){var t=this._isUTC?d(this._a):Ct(this._a);return this.isValid()&&g(this._a,t.toArray())>0}return!1}function jt(){return!this._isUTC}function Vt(){return this._isUTC}function Ut(){return this._isUTC&&0===this._offset}function Xt(t,e){var i,s,o,n=t,r=null;return Nt(t)?n={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(n={},e?n[e]=t:n.milliseconds=t):(r=ys.exec(t))?(i="-"===r[1]?-1:1,n={y:0,d:f(r[es])*i,h:f(r[is])*i,m:f(r[ss])*i,s:f(r[os])*i,ms:f(r[ns])*i}):(r=bs.exec(t))?(i="-"===r[1]?-1:1,n={y:qt(r[2],i),M:qt(r[3],i),d:qt(r[4],i),h:qt(r[5],i),m:qt(r[6],i),s:qt(r[7],i),w:qt(r[8],i)}):null==n?n={}:"object"==typeof n&&("from"in n||"to"in n)&&(o=Qt(Ct(n.from),Ct(n.to)),n={},n.ms=o.milliseconds,n.M=o.months),s=new kt(n),Nt(t)&&a(t,"_locale")&&(s._locale=t._locale),s}function qt(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Zt(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Qt(t,e){var i;return e=zt(e,t),t.isBefore(e)?i=Zt(t,e):(i=Zt(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i}function Kt(t,e){return function(i,s){var o,n;return null===s||isNaN(+s)||(J(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),n=i,i=s,s=n),i="string"==typeof i?+i:i,o=Xt(i,s),$t(this,o,t),this}}function $t(t,i,s,o){var n=i._milliseconds,r=i._days,a=i._months;o=null==o?!0:o,n&&t._d.setTime(+t._d+n*s),r&&E(t,"Date",O(t,"Date")+r*s),a&&X(t,O(t,"Month")+a*s),o&&e.updateOffset(t,r||a)}function Jt(t){var e=t||Ct(),i=zt(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ct(e)))}function te(){return new u(this)}function ee(t,e){var i;return e=M("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Ct(t),+this>+t):(i=m(t)?+t:+Ct(t),i<+this.clone().startOf(e))}function ie(t,e){var i;return e=M("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Ct(t),+t>+this):(i=m(t)?+t:+Ct(t),+this.clone().endOf(e)t?Math.ceil(t):Math.floor(t)}function re(t,e,i){var s,o,n=zt(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=M(e),"year"===e||"month"===e||"quarter"===e?(o=ae(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:ne(o)}function ae(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function he(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function de(){var t=this.clone().utc();return 0e;e++)if(this._weekdaysParse[e]||(i=Ct([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function Pe(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Ne(t,this.localeData()),this.add(t-e,"d")):e}function Fe(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Re(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function He(t,e){I(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Be(t,e){return e._meridiemParse}function Ye(t){return"p"===(t+"").toLowerCase().charAt(0)}function We(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Ge(t){I(0,[t,3],0,"millisecond")}function je(){return this._isUTC?"UTC":""}function Ve(){return this._isUTC?"Coordinated Universal Time":""}function Ue(t){return Ct(1e3*t)}function Xe(){return Ct.apply(null,arguments).parseZone()}function qe(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.call(e,i):s}function Ze(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e}function Qe(){return this._invalidDate}function Ke(t){return this._ordinal.replace("%d",t)}function $e(t){return t}function Je(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)}function ti(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)}function ei(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function ii(t,e,i,s){var o=S(),n=d().set(s,e);return o[i](n,t)}function si(t,e,i,s,o){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return ii(t,e,i,o);var n,r=[];for(n=0;s>n;n++)r[n]=ii(t,n,i,o);return r}function oi(t,e){return si(t,e,"months",12,"month")}function ni(t,e){return si(t,e,"monthsShort",12,"month")}function ri(t,e){return si(t,e,"weekdays",7,"day")}function ai(t,e){return si(t,e,"weekdaysShort",7,"day")}function hi(t,e){return si(t,e,"weekdaysMin",7,"day")}function di(){var t=this._data;return this._milliseconds=Ys(this._milliseconds),this._days=Ys(this._days),this._months=Ys(this._months),t.milliseconds=Ys(t.milliseconds),t.seconds=Ys(t.seconds),t.minutes=Ys(t.minutes),t.hours=Ys(t.hours),t.months=Ys(t.months),t.years=Ys(t.years),this}function li(t,e,i,s){var o=Xt(e,i);return t._milliseconds+=s*o._milliseconds,t._days+=s*o._days,t._months+=s*o._months,t._bubble()}function ci(t,e){return li(this,t,e,1)}function pi(t,e){return li(this,t,e,-1)}function ui(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;return r.milliseconds=s%1e3,t=ne(s/1e3),r.seconds=t%60,e=ne(t/60),r.minutes=e%60,i=ne(e/60),r.hours=i%24,o+=ne(i/24),a=ne(mi(o)),o-=ne(fi(a)),n+=ne(o/30),o%=30,a+=ne(n/12),n%=12,r.days=o,r.months=n,r.years=a,this}function mi(t){return 400*t/146097}function fi(t){return 146097*t/400}function gi(t){var e,i,s=this._milliseconds;if(t=M(t),"month"===t||"year"===t)return e=this._days+s/864e5,i=this._months+12*mi(e),"month"===t?i:i/12;switch(e=this._days+Math.round(fi(this._months/12)),t){case"week":return e/7+s/6048e5;case"day":return e+s/864e5;case"hour":return 24*e+s/36e5;case"minute":return 24*e*60+s/6e4;case"second":return 24*e*60*60+s/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+s;default:throw new Error("Unknown unit "+t)}}function vi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*f(this._months/12)}function yi(t){return function(){return this.as(t)}}function bi(t){return t=M(t),this[t+"s"]()}function _i(t){return function(){return this._data[t]}}function xi(){return ne(this.days()/7)}function wi(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function Si(t,e,i){var s=Xt(t).abs(),o=so(s.as("s")),n=so(s.as("m")),r=so(s.as("h")),a=so(s.as("d")),h=so(s.as("M")),d=so(s.as("y")),l=o0,l[4]=i,wi.apply(null,l)}function Di(t,e){return void 0===oo[t]?!1:void 0===e?oo[t]:(oo[t]=e,!0)}function Mi(t){var e=this.localeData(),i=Si(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function Ci(){var t=no(this.years()),e=no(this.months()),i=no(this.days()),s=no(this.hours()),o=no(this.minutes()),n=no(this.seconds()+this.milliseconds()/1e3),r=this.asSeconds();return r?(0>r?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"}var Ti,Oi,Ei=e.momentProperties=[],ki=!1,Ni={},Ii={},Li=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,zi=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ai={},Pi={},Fi=/\d/,Ri=/\d\d/,Hi=/\d{3}/,Bi=/\d{4}/,Yi=/[+-]?\d{6}/,Wi=/\d\d?/,Gi=/\d{1,3}/,ji=/\d{1,4}/,Vi=/[+-]?\d{1,6}/,Ui=/\d+/,Xi=/[+-]?\d+/,qi=/Z|[+-]\d\d:?\d\d/gi,Zi=/[+-]?\d+(\.\d{1,3})?/,Qi=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Ki={},$i={},Ji=0,ts=1,es=2,is=3,ss=4,os=5,ns=6;I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),I("MMMM",0,0,function(t){return this.localeData().months(this,t)}),D("month","M"),F("M",Wi),F("MM",Wi,Ri),F("MMM",Qi),F("MMMM",Qi),B(["M","MM"],function(t,e){e[ts]=f(t)-1}),B(["MMM","MMMM"],function(t,e,i,s){var o=i._locale.monthsParse(t,s,i._strict);null!=o?e[ts]=o:i._pf.invalidMonth=t});var rs="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),as="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),hs={};e.suppressDeprecationWarnings=!1;var ds=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ls=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],cs=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],ps=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=$("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),D("year","y"),F("Y",Xi),F("YY",Wi,Ri),F("YYYY",ji,Bi),F("YYYYY",Vi,Yi),F("YYYYYY",Vi,Yi),B(["YYYY","YYYYY","YYYYYY"],Ji),B("YY",function(t,i){i[Ji]=e.parseTwoDigitYear(t)}),e.parseTwoDigitYear=function(t){return f(t)+(f(t)>68?1900:2e3)};var us=T("FullYear",!1);I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),D("week","w"),D("isoWeek","W"),F("w",Wi),F("ww",Wi,Ri),F("W",Wi),F("WW",Wi,Ri),Y(["w","ww","W","WW"],function(t,e,i,s){e[s.substr(0,1)]=f(t)});var ms={dow:0,doy:6};I("DDD",["DDDD",3],"DDDo","dayOfYear"),D("dayOfYear","DDD"),F("DDD",Gi),F("DDDD",Hi),B(["DDD","DDDD"],function(t,e,i){i._dayOfYear=f(t)}),e.ISO_8601=function(){};var fs=$("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Ct.apply(null,arguments);return this>t?this:t}),gs=$("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Ct.apply(null,arguments);return t>this?this:t});It("Z",":"),It("ZZ",""),F("Z",qi),F("ZZ",qi),B(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Lt(t)});var vs=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var ys=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,bs=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,_s=Kt(1,"add"),xs=Kt(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var ws=$("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),De("gggg","weekYear"),De("ggggg","weekYear"),De("GGGG","isoWeekYear"),De("GGGGG","isoWeekYear"),D("weekYear","gg"),D("isoWeekYear","GG"),F("G",Xi),F("g",Xi),F("GG",Wi,Ri),F("gg",Wi,Ri),F("GGGG",ji,Bi),F("gggg",ji,Bi),F("GGGGG",Vi,Yi),F("ggggg",Vi,Yi),Y(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,s){e[s.substr(0,2)]=f(t)}),Y(["gg","GG"],function(t,i,s,o){i[o]=e.parseTwoDigitYear(t)}),I("Q",0,0,"quarter"),D("quarter","Q"),F("Q",Fi),B("Q",function(t,e){e[ts]=3*(f(t)-1)}),I("D",["DD",2],"Do","date"),D("date","D"),F("D",Wi),F("DD",Wi,Ri),F("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),B(["D","DD"],es),B("Do",function(t,e){e[es]=f(t.match(Wi)[0],10)});var Ss=T("Date",!0);I("d",0,"do","day"),I("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),I("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),I("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),D("day","d"),D("weekday","e"),D("isoWeekday","E"),F("d",Wi),F("e",Wi),F("E",Wi),F("dd",Qi),F("ddd",Qi),F("dddd",Qi),Y(["dd","ddd","dddd"],function(t,e,i){var s=i._locale.weekdaysParse(t);null!=s?e.d=s:i._pf.invalidWeekday=t}),Y(["d","e","E"],function(t,e,i,s){e[s]=f(t)});var Ds="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ms="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Cs="Su_Mo_Tu_We_Th_Fr_Sa".split("_");I("H",["HH",2],0,"hour"),I("h",["hh",2],0,function(){return this.hours()%12||12}),He("a",!0),He("A",!1),D("hour","h"),F("a",Be),F("A",Be),F("H",Wi),F("h",Wi),F("HH",Wi,Ri),F("hh",Wi,Ri),B(["H","HH"],is),B(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),B(["h","hh"],function(t,e,i){e[is]=f(t),i._pf.bigHour=!0});var Ts=/[ap]\.?m?\.?/i,Os=T("Hours",!0);I("m",["mm",2],0,"minute"),D("minute","m"),F("m",Wi),F("mm",Wi,Ri),B(["m","mm"],ss);var Es=T("Minutes",!1);I("s",["ss",2],0,"second"),D("second","s"),F("s",Wi),F("ss",Wi,Ri),B(["s","ss"],os);var ks=T("Seconds",!1);I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),Ge("SSS"),Ge("SSSS"),D("millisecond","ms"),F("S",Gi,Fi),F("SS",Gi,Ri),F("SSS",Gi,Hi),F("SSSS",Ui),B(["S","SS","SSS","SSSS"],function(t,e){e[ns]=f(1e3*("0."+t))});var Ns=T("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var Is=u.prototype;Is.add=_s,Is.calendar=Jt,Is.clone=te,Is.diff=re,Is.endOf=ge,Is.format=le,Is.from=ce,Is.fromNow=pe,Is.get=k,Is.invalidAt=Se,Is.isAfter=ee,Is.isBefore=ie,Is.isBetween=se,Is.isSame=oe,Is.isValid=xe,Is.lang=ws,Is.locale=ue,Is.localeData=me,Is.max=gs,Is.min=fs,Is.parsingFlags=we,Is.set=k,Is.startOf=fe,Is.subtract=xs,Is.toArray=_e,Is.toDate=be,Is.toISOString=de,Is.toJSON=de,Is.toString=he,Is.unix=ye,Is.valueOf=ve,Is.year=us,Is.isLeapYear=rt,Is.weekYear=Ce,Is.isoWeekYear=Te,Is.quarter=Is.quarters=ke,Is.month=q,Is.daysInMonth=Z,Is.week=Is.weeks=ct,Is.isoWeek=Is.isoWeeks=pt,Is.weeksInYear=Ee,Is.isoWeeksInYear=Oe,Is.date=Ss,Is.day=Is.days=Pe,Is.weekday=Fe,Is.isoWeekday=Re,Is.dayOfYear=mt,Is.hour=Is.hours=Os,Is.minute=Is.minutes=Es,Is.second=Is.seconds=ks,Is.millisecond=Is.milliseconds=Ns,Is.utcOffset=Pt,Is.utc=Rt,Is.local=Ht,Is.parseZone=Bt,Is.hasAlignedHourOffset=Yt,Is.isDST=Wt,Is.isDSTShifted=Gt,Is.isLocal=jt,Is.isUtcOffset=Vt,Is.isUtc=Ut, -Is.isUTC=Ut,Is.zoneAbbr=je,Is.zoneName=Ve,Is.dates=$("dates accessor is deprecated. Use date instead.",Ss),Is.months=$("months accessor is deprecated. Use month instead",q),Is.years=$("years accessor is deprecated. Use year instead",us),Is.zone=$("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Ft);var Ls=Is,zs={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},As={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},Ps="Invalid date",Fs="%d",Rs=/\d{1,2}/,Hs={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Bs=v.prototype;Bs._calendar=zs,Bs.calendar=qe,Bs._longDateFormat=As,Bs.longDateFormat=Ze,Bs._invalidDate=Ps,Bs.invalidDate=Qe,Bs._ordinal=Fs,Bs.ordinal=Ke,Bs._ordinalParse=Rs,Bs.preparse=$e,Bs.postformat=$e,Bs._relativeTime=Hs,Bs.relativeTime=Je,Bs.pastFuture=ti,Bs.set=ei,Bs.months=j,Bs._months=rs,Bs.monthsShort=V,Bs._monthsShort=as,Bs.monthsParse=U,Bs.week=ht,Bs._week=ms,Bs.firstDayOfYear=lt,Bs.firstDayOfWeek=dt,Bs.weekdays=Ie,Bs._weekdays=Ds,Bs.weekdaysMin=ze,Bs._weekdaysMin=Cs,Bs.weekdaysShort=Le,Bs._weekdaysShort=Ms,Bs.weekdaysParse=Ae,Bs.isPM=Ye,Bs._meridiemParse=Ts,Bs.meridiem=We,x("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===f(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=$("moment.lang is deprecated. Use moment.locale instead.",x),e.langData=$("moment.langData is deprecated. Use moment.localeData instead.",S);var Ys=Math.abs,Ws=yi("ms"),Gs=yi("s"),js=yi("m"),Vs=yi("h"),Us=yi("d"),Xs=yi("w"),qs=yi("M"),Zs=yi("y"),Qs=_i("milliseconds"),Ks=_i("seconds"),$s=_i("minutes"),Js=_i("hours"),to=_i("days"),eo=_i("months"),io=_i("years"),so=Math.round,oo={s:45,m:45,h:22,d:26,M:11},no=Math.abs,ro=kt.prototype;ro.abs=di,ro.add=ci,ro.subtract=pi,ro.as=gi,ro.asMilliseconds=Ws,ro.asSeconds=Gs,ro.asMinutes=js,ro.asHours=Vs,ro.asDays=Us,ro.asWeeks=Xs,ro.asMonths=qs,ro.asYears=Zs,ro.valueOf=vi,ro._bubble=ui,ro.get=bi,ro.milliseconds=Qs,ro.seconds=Ks,ro.minutes=$s,ro.hours=Js,ro.days=to,ro.weeks=xi,ro.months=eo,ro.years=io,ro.humanize=Mi,ro.toISOString=Ci,ro.toString=Ci,ro.toJSON=Ci,ro.locale=ue,ro.localeData=me,ro.toIsoString=$("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ci),ro.lang=ws,I("X",0,0,"unix"),I("x",0,0,"valueOf"),F("x",Xi),F("X",Zi),B("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),B("x",function(t,e,i){i._d=new Date(f(t))}),e.version="2.10.0",i(Ct),e.fn=Ls,e.min=Ot,e.max=Et,e.utc=d,e.unix=Ue,e.months=oi,e.isDate=n,e.locale=x,e.invalid=c,e.duration=Xt,e.isMoment=m,e.weekdays=ri,e.parseZone=Xe,e.localeData=S,e.isDuration=Nt,e.monthsShort=ni,e.weekdaysMin=hi,e.defineLocale=w,e.weekdaysShort=ai,e.normalizeUnits=M,e.relativeTimeThreshold=Di;var ao=e;return ao})}).call(e,i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ', +o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;ro;o++){var r=this.visibleItems[o];r.repositionY(e)}return s},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,s){i._onAdd(e.items)},update:function(t,e,s){i._onUpdate(e.items)},remove:function(t,e,s){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,s){i._onAddGroups(e.items)},update:function(t,e,s){i._onUpdateGroups(e.items)},remove:function(t,e,s){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&!(a instanceof f)&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.pageY:t.pageY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,s){i._onAdd(e.items)},update:function(t,e,s){i._onUpdate(e.items)},remove:function(t,e,s){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,s){i._onAddGroups(e.items)},update:function(t,e,s){i._onUpdateGroups(e.items)},remove:function(t,e,s){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4, +maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(t){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(t){this.drag.dragging=!1;var e=this.drag.selection;e&&e.length?(e.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=this.nodesData._fieldId||null,s=0,o=t.length;o>s;s++){e=t[s];var n=this.nodesData.get(e);i&&(n.id=n[i]);var r=new f(n,this.images,this.groups,this.constants);if(this.nodes[e]=r,!(0!=r.xFixed&&0!=r.yFixed||null!==r.x&&null!==r.y)){var a=1*t.length+10,h=2*Math.PI*Math.random();0==r.xFixed&&(r.x=a*Math.cos(h)),0==r.yFixed&&(r.y=a*Math.sin(h))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=this.edgesData._fieldId,o=0,n=t.length;n>o;o++){var r=t[o],a=e[r];a&&a.disconnect();var h=i.get(r,{showInternalIds:!0});s&&(h.id=h[s]),e[r]=new g(h,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t,e){void 0===t&&(t=!1),this.redrawRequested=!1;var i=this.frame.canvas.getContext("2d");i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var s=this.frame.canvas.clientWidth,o=this.frame.canvas.clientHeight;i.clearRect(0,0,s,o),i.save(),i.translate(this.translation.x,this.translation.y),i.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",i),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",i)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",i,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",i),i.restore(),t===!0&&i.clearRect(0,0,s,o)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(), +this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t,e,i){function s(){this.images={},this.imageBroken={},this.callback=void 0}s.prototype.setOnloadCallback=function(t){this.callback=t},s.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t), +this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=s},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(t){throw"Draw method not initialized for node"},s.prototype.resize=function(t){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(t){if(!this.width||!this.height){var e,i;if(this.value){this.options.radius=this.baseRadiusValue;var s=this.imageObj.height/this.imageObj.width;void 0!==s?(e=this.options.radius||this.imageObj.width,i=this.options.radius*s||this.imageObj.height):(e=0,i=0)}else e=this.imageObj.width,i=this.imageObj.height;this.width=e,this.height=i,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-e)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(t){if(!this.width){this.options.radius=this.baseRadiusValue;var e=2*this.options.radius;this.width=e,this.height=e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-e}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(t){if(!this.width){var e=5,i={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=h(o.attr,t.node))),i=n.length-1;i>=0;i--){var a=n[i];a.nodes||(a.nodes=[]),-1==a.nodes.indexOf(o)&&a.nodes.push(o)}e.attr&&(o.attr=h(o.attr,e.attr))}function c(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function p(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=h({},t.edge)),n.attr=h(n.attr||{},o),n}function u(){for(I=C.NULL,N="";" "==k||" "==k||"\n"==k||"\r"==k;)n();do{var t=!1;if("#"==k){for(var e=E-1;" "==O.charAt(e)||" "==O.charAt(e);)e--;if("\n"==O.charAt(e)||""==O.charAt(e)){for(;""!=k&&"\n"!=k;)n();t=!0}}if("/"==k&&"/"==r()){for(;""!=k&&"\n"!=k;)n();t=!0}if("/"==k&&"*"==r()){for(;""!=k;){if("*"==k&&"/"==r()){n(),n();break}n()}t=!0}for(;" "==k||" "==k||"\n"==k||"\r"==k;)n()}while(t);if(""==k)return void(I=C.DELIMITER);var i=k+r();if(T[i])return I=C.DELIMITER,N=i,n(),void n();if(T[k])return I=C.DELIMITER,N=k,void n();if(a(k)||"-"==k){for(N+=k,n();a(k);)N+=k,n();return"false"==N?N=!1:"true"==N?N=!0:isNaN(Number(N))||(N=Number(N)),void(I=C.IDENTIFIER)}if('"'==k){for(n();""!=k&&('"'!=k||'"'==k&&'"'==r());)N+=k,'"'==k&&n(),n();if('"'!=k)throw w('End of string " expected');return n(),void(I=C.IDENTIFIER)}for(I=C.UNKNOWN;""!=k;)N+=k,n();throw new SyntaxError('Syntax error in part "'+S(N,30)+'"')}function m(){var t={};if(o(),u(),"strict"==N&&(t.strict=!0,u()),("graph"==N||"digraph"==N)&&(t.type=N,u()),I==C.IDENTIFIER&&(t.id=N,u()),"{"!=N)throw w("Angle bracket { expected");if(u(),f(t),"}"!=N)throw w("Angle bracket } expected");if(u(),""!==N)throw w("End of file expected");return u(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==N&&"}"!=N;)g(t),";"==N&&u()}function g(t){var e=v(t);if(e)return void _(t,e);var i=y(t);if(!i){if(I!=C.IDENTIFIER)throw w("Identifier expected");var s=N;if(u(),"="==N){if(u(),I!=C.IDENTIFIER)throw w("Identifier expected");t[s]=N,u()}else b(t,s)}}function v(t){var e=null;if("subgraph"==N&&(e={},e.type="subgraph",u(),I==C.IDENTIFIER&&(e.id=N,u())),"{"==N){if(u(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=N)throw w("Angle bracket } expected");u(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function y(t){return"node"==N?(u(),t.node=x(),"node"):"edge"==N?(u(),t.edge=x(),"edge"):"graph"==N?(u(),t.graph=x(),"graph"):null}function b(t,e){var i={id:e},s=x();s&&(i.attr=s),l(t,i),_(t,e)}function _(t,e){for(;"->"==N||"--"==N;){var i,s=N;u();var o=v(t);if(o)i=o;else{if(I!=C.IDENTIFIER)throw w("Identifier or subgraph expected");i=N,l(t,{id:i}),u()}var n=x(),r=p(t,e,i,s,n);c(t,r),e=i}}function x(){for(var t=null;"["==N;){for(u(),t={};""!==N&&"]"!=N;){if(I!=C.IDENTIFIER)throw w("Attribute name expected");var e=N;if(u(),"="!=N)throw w("Equal sign = expected");if(u(),I!=C.IDENTIFIER)throw w("Attribute value expected");var i=N;d(t,e,i),u(),","==N&&u()}if("]"!=N)throw w("Bracket ] expected");u()}return t}function w(t){return new SyntaxError(t+', got "'+S(N,30)+'" (char '+E+")")}function S(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){var e=s(t),i={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};h(e,t.attr),e.image&&(e.shape="image"),i.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return h(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,s;e=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);i.edges.push(e)}),D(e,s,function(e,s){var n=p(i,e.id,s.id,t.type,t.attr),r=o(n);i.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);i.edges.push(e)})})}return e.attr&&(i.options=e.attr),i}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},T={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},O="",E=0,k="",N="",I=C.NULL,L=/[a-zA-Z_0-9.:#]/;e.parseDOT=s,e.DOTToGraph=M},function(t,e,i){function s(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg,c[d].label)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){function s(t){return t?o(t):void 0}function o(t){for(var e in s.prototype)t[e]=s.prototype[e];return t}t.exports=s,s.prototype.on=s.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},s.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},s.prototype.off=s.prototype.removeListener=s.prototype.removeAllListeners=s.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},s.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},s.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){var s,o,n;!function(i,r){o=[],s=r,n="function"==typeof s?s.apply(e,o):s,!(void 0!==n&&(t.exports=n))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){ +d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;o0)for(i in Ei)s=Ei[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function u(t){p(this,t),this._d=new Date(+t._d),ki===!1&&(ki=!0,e.updateOffset(this),ki=!1)}function m(t){return t instanceof u||null!=t&&a(t,"_isAMomentObject")}function f(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function g(t,e,i){var s,o=Math.min(t.length,e.length),n=Math.abs(t.length-e.length),r=0;for(s=0;o>s;s++)(i&&t[s]!==e[s]||!i&&f(t[s])!==f(e[s]))&&r++;return r+n}function v(){}function y(t){return t?t.toLowerCase().replace("_","-"):t}function b(t){for(var e,i,s,o,n=0;n0;){if(s=_(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&g(o,i,!0)>=e-1)break;e--}n++}return null}function _(e){var i=null;if(!Ni[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Oi._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),x(i)}catch(s){}return Ni[e]}function x(t,e){var i;return t&&(i="undefined"==typeof e?S(t):w(t,e),i&&(Oi=i)),Oi._abbr}function w(t,e){return null!==e?(e.abbr=t,Ni[t]||(Ni[t]=new v),Ni[t].set(e),x(t),Ni[t]):(delete Ni[t],null)}function S(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Oi;if(!o(t)){if(e=_(t))return e;t=[t]}return b(t)}function D(t,e){var i=t.toLowerCase();Ii[i]=Ii[i+"s"]=Ii[e]=t}function M(t){return"string"==typeof t?Ii[t]||Ii[t.toLowerCase()]:void 0}function C(t){var e,i,s={};for(i in t)a(t,i)&&(e=M(i),e&&(s[e]=t[i]));return s}function T(t,i){return function(s){return null!=s?(E(this,t,s),e.updateOffset(this,i),this):O(this,t)}}function O(t,e){return t._d["get"+(t._isUTC?"UTC":"")+e]()}function E(t,e,i){return t._d["set"+(t._isUTC?"UTC":"")+e](i)}function k(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=M(t),"function"==typeof this[t])return this[t](e);return this}function N(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengthe;e++)s[e]=Pi[s[e]]?Pi[s[e]]:L(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function A(t,e){return t.isValid()?(e=P(e,t.localeData()),Ai[e]||(Ai[e]=z(e)),Ai[e](t)):t.localeData().invalidDate()}function P(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(zi.lastIndex=0;s>=0&&zi.test(t);)t=t.replace(zi,i),zi.lastIndex=0,s-=1;return t}function F(t,e,i){Ki[t]="function"==typeof e?e:function(t){return t&&i?i:e}}function R(t,e){return a(Ki,t)?Ki[t](e._strict,e._locale):new RegExp(H(t))}function H(t){return t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function B(t,e){var i,s=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(s=function(t,i){i[e]=f(t)}),i=0;is;s++){if(o=d([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}}function X(t,e){var i;return"string"==typeof e&&(e=t.localeData().monthsParse(e),"number"!=typeof e)?t:(i=Math.min(t.date(),G(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t)}function q(t){return null!=t?(X(this,t),e.updateOffset(this,!0),this):O(this,"Month")}function Z(){return G(this.year(),this.month())}function Q(t){var e,i=t._a;return i&&-2===t._pf.overflow&&(e=i[ts]<0||i[ts]>11?ts:i[es]<1||i[es]>G(i[Ji],i[ts])?es:i[is]<0||i[is]>24||24===i[is]&&(0!==i[ss]||0!==i[os]||0!==i[ns])?is:i[ss]<0||i[ss]>59?ss:i[os]<0||i[os]>59?os:i[ns]<0||i[ns]>999?ns:-1,t._pf._overflowDayOfYear&&(Ji>e||e>es)&&(e=es),t._pf.overflow=e),t}function K(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function $(t,e){var i=!0;return h(function(){return i&&(K(t),i=!1),e.apply(this,arguments)},e)}function J(t,e){hs[t]||(K(e),hs[t]=!0)}function tt(t){var e,i,s=t._i,o=ds.exec(s);if(o){for(t._pf.iso=!0,e=0,i=ls.length;i>e;e++)if(ls[e][1].exec(s)){t._f=ls[e][0]+(o[6]||" ");break}for(e=0,i=cs.length;i>e;e++)if(cs[e][1].exec(s)){t._f+=cs[e][0];break}s.match(qi)&&(t._f+="Z"),bt(t)}else t._isValid=!1}function et(t){var i=ps.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(tt(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function it(t,e,i,s,o,n,r){var a=new Date(t,e,i,s,o,n,r);return 1970>t&&a.setFullYear(t),a}function st(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ot(t){return nt(t)?366:365}function nt(t){return t%4===0&&t%100!==0||t%400===0}function rt(){return nt(this.year())}function at(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ct(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ht(t){return at(t,this._week.dow,this._week.doy).week}function dt(){return this._week.dow}function lt(){return this._week.doy}function ct(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function pt(t){var e=at(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function ut(t,e,i,s,o){var n,r,a=st(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:ot(t-1)+r}}function mt(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function ft(t,e,i){return null!=t?t:null!=e?e:i}function gt(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function vt(t){var e,i,s,o,n=[];if(!t._d){for(s=gt(t),t._w&&null==t._a[es]&&null==t._a[ts]&&yt(t),t._dayOfYear&&(o=ft(t._a[Ji],s[Ji]),t._dayOfYear>ot(o)&&(t._pf._overflowDayOfYear=!0),i=st(o,0,t._dayOfYear),t._a[ts]=i.getUTCMonth(),t._a[es]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[is]&&0===t._a[ss]&&0===t._a[os]&&0===t._a[ns]&&(t._nextDay=!0,t._a[is]=0),t._d=(t._useUTC?st:it).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[is]=24)}}function yt(t){var e,i,s,o,n,r,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,r=4,i=ft(e.GG,t._a[Ji],at(Ct(),1,4).year),s=ft(e.W,1),o=ft(e.E,1)):(n=t._locale._week.dow,r=t._locale._week.doy,i=ft(e.gg,t._a[Ji],at(Ct(),n,r).year),s=ft(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),a=ut(i,s,o,r,n),t._a[Ji]=a.year,t._dayOfYear=a.dayOfYear}function bt(t){if(t._f===e.ISO_8601)return void tt(t);t._a=[],t._pf.empty=!0;var i,s,o,n,r,a=""+t._i,h=a.length,d=0;for(o=P(t._f,t._locale).match(Li)||[],i=0;i0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(s)+s.length),d+=s.length),Pi[n]?(s?t._pf.empty=!1:t._pf.unusedTokens.push(n),W(n,s,t)):t._strict&&!s&&t._pf.unusedTokens.push(n);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[is]<=12&&(t._pf.bigHour=void 0),t._a[is]=_t(t._locale,t._a[is],t._meridiem),vt(t),Q(t)}function _t(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function xt(t){var e,i,o,n,r;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(n=0;nr)&&(o=r,i=e));h(t,i||e)}function wt(t){if(!t._d){var e=C(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],vt(t)}}function St(t){var e,i=t._i,s=t._f;return t._locale=t._locale||S(t._l),null===i||void 0===s&&""===i?c({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),m(i)?new u(Q(i)):(o(s)?xt(t):s?bt(t):Dt(t),e=new u(Q(t)),e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e))}function Dt(t){var i=t._i;void 0===i?t._d=new Date:n(i)?t._d=new Date(+i):"string"==typeof i?et(t):o(i)?(t._a=r(i.slice(0),function(t){return parseInt(t,10)}),vt(t)):"object"==typeof i?wt(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function Mt(t,e,i,o,n){var r={};return"boolean"==typeof i&&(o=i,i=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=n,r._l=i,r._i=t,r._f=e,r._strict=o,r._pf=s(),St(r)}function Ct(t,e,i,s){return Mt(t,e,i,s,!1)}function Tt(t,e){var i,s;if(1===e.length&&o(e[0])&&(e=e[0]),!e.length)return Ct();for(i=e[0],s=1;st&&(t=-t,i="-"),i+N(~~(t/60),2)+e+N(~~t%60,2)})}function Lt(t){var e=(t||"").match(qi)||[],i=e[e.length-1]||[],s=(i+"").match(vs)||["-",0,0],o=+(60*s[1])+f(s[2]);return"+"===s[0]?o:-o}function zt(t,i){var s,o;return i._isUTC?(s=i.clone(),o=(m(t)||n(t)?+t:+Ct(t))-+s,s._d.setTime(+s._d+o),e.updateOffset(s,!1),s):Ct(t).local()}function At(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Pt(t,i){var s,o=this._offset||0;return null!=t?("string"==typeof t&&(t=Lt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(s=At(this)),this._offset=t,this._isUTC=!0,null!=s&&this.add(s,"m"),o!==t&&(!i||this._changeInProgress?$t(this,Xt(t-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?o:At(this)}function Ft(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Rt(t){return this.utcOffset(0,t)}function Ht(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(At(this),"m")),this}function Bt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Lt(this._i)),this}function Yt(t){return t=t?Ct(t).utcOffset():0,(this.utcOffset()-t)%60===0}function Wt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Gt(){if(this._a){var t=this._isUTC?d(this._a):Ct(this._a);return this.isValid()&&g(this._a,t.toArray())>0}return!1}function jt(){return!this._isUTC}function Vt(){return this._isUTC}function Ut(){return this._isUTC&&0===this._offset}function Xt(t,e){var i,s,o,n=t,r=null;return Nt(t)?n={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(n={},e?n[e]=t:n.milliseconds=t):(r=ys.exec(t))?(i="-"===r[1]?-1:1,n={y:0,d:f(r[es])*i,h:f(r[is])*i,m:f(r[ss])*i,s:f(r[os])*i,ms:f(r[ns])*i}):(r=bs.exec(t))?(i="-"===r[1]?-1:1,n={y:qt(r[2],i),M:qt(r[3],i),d:qt(r[4],i),h:qt(r[5],i),m:qt(r[6],i),s:qt(r[7],i),w:qt(r[8],i)}):null==n?n={}:"object"==typeof n&&("from"in n||"to"in n)&&(o=Qt(Ct(n.from),Ct(n.to)),n={},n.ms=o.milliseconds,n.M=o.months),s=new kt(n),Nt(t)&&a(t,"_locale")&&(s._locale=t._locale),s}function qt(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Zt(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Qt(t,e){var i;return e=zt(e,t),t.isBefore(e)?i=Zt(t,e):(i=Zt(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i}function Kt(t,e){return function(i,s){var o,n;return null===s||isNaN(+s)||(J(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),n=i,i=s,s=n),i="string"==typeof i?+i:i,o=Xt(i,s),$t(this,o,t),this}}function $t(t,i,s,o){var n=i._milliseconds,r=i._days,a=i._months;o=null==o?!0:o,n&&t._d.setTime(+t._d+n*s),r&&E(t,"Date",O(t,"Date")+r*s),a&&X(t,O(t,"Month")+a*s),o&&e.updateOffset(t,r||a)}function Jt(t){var e=t||Ct(),i=zt(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ct(e)))}function te(){return new u(this)}function ee(t,e){var i;return e=M("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Ct(t),+this>+t):(i=m(t)?+t:+Ct(t),i<+this.clone().startOf(e))}function ie(t,e){var i;return e=M("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Ct(t),+t>+this):(i=m(t)?+t:+Ct(t),+this.clone().endOf(e)t?Math.ceil(t):Math.floor(t)}function re(t,e,i){var s,o,n=zt(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=M(e),"year"===e||"month"===e||"quarter"===e?(o=ae(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:ne(o)}function ae(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function he(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function de(){var t=this.clone().utc();return 0e;e++)if(this._weekdaysParse[e]||(i=Ct([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function Pe(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Ne(t,this.localeData()),this.add(t-e,"d")):e}function Fe(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Re(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function He(t,e){I(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Be(t,e){return e._meridiemParse}function Ye(t){return"p"===(t+"").toLowerCase().charAt(0)}function We(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Ge(t){I(0,[t,3],0,"millisecond")}function je(){return this._isUTC?"UTC":""}function Ve(){return this._isUTC?"Coordinated Universal Time":""}function Ue(t){return Ct(1e3*t)}function Xe(){return Ct.apply(null,arguments).parseZone()}function qe(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.call(e,i):s}function Ze(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e}function Qe(){return this._invalidDate}function Ke(t){return this._ordinal.replace("%d",t)}function $e(t){return t}function Je(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)}function ti(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)}function ei(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function ii(t,e,i,s){var o=S(),n=d().set(s,e);return o[i](n,t)}function si(t,e,i,s,o){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return ii(t,e,i,o);var n,r=[];for(n=0;s>n;n++)r[n]=ii(t,n,i,o);return r}function oi(t,e){return si(t,e,"months",12,"month")}function ni(t,e){return si(t,e,"monthsShort",12,"month")}function ri(t,e){return si(t,e,"weekdays",7,"day")}function ai(t,e){return si(t,e,"weekdaysShort",7,"day")}function hi(t,e){return si(t,e,"weekdaysMin",7,"day")}function di(){var t=this._data;return this._milliseconds=Ys(this._milliseconds),this._days=Ys(this._days),this._months=Ys(this._months),t.milliseconds=Ys(t.milliseconds),t.seconds=Ys(t.seconds),t.minutes=Ys(t.minutes),t.hours=Ys(t.hours),t.months=Ys(t.months),t.years=Ys(t.years),this}function li(t,e,i,s){var o=Xt(e,i);return t._milliseconds+=s*o._milliseconds,t._days+=s*o._days,t._months+=s*o._months,t._bubble()}function ci(t,e){return li(this,t,e,1)}function pi(t,e){return li(this,t,e,-1)}function ui(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;return r.milliseconds=s%1e3,t=ne(s/1e3),r.seconds=t%60,e=ne(t/60),r.minutes=e%60,i=ne(e/60),r.hours=i%24,o+=ne(i/24),a=ne(mi(o)),o-=ne(fi(a)),n+=ne(o/30),o%=30,a+=ne(n/12),n%=12,r.days=o,r.months=n,r.years=a,this}function mi(t){return 400*t/146097}function fi(t){return 146097*t/400}function gi(t){var e,i,s=this._milliseconds;if(t=M(t),"month"===t||"year"===t)return e=this._days+s/864e5,i=this._months+12*mi(e),"month"===t?i:i/12;switch(e=this._days+Math.round(fi(this._months/12)),t){case"week":return e/7+s/6048e5;case"day":return e+s/864e5;case"hour":return 24*e+s/36e5;case"minute":return 24*e*60+s/6e4;case"second":return 24*e*60*60+s/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+s;default:throw new Error("Unknown unit "+t)}}function vi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*f(this._months/12)}function yi(t){return function(){return this.as(t)}}function bi(t){return t=M(t),this[t+"s"]()}function _i(t){return function(){return this._data[t]}}function xi(){return ne(this.days()/7)}function wi(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function Si(t,e,i){var s=Xt(t).abs(),o=so(s.as("s")),n=so(s.as("m")),r=so(s.as("h")),a=so(s.as("d")),h=so(s.as("M")),d=so(s.as("y")),l=o0,l[4]=i,wi.apply(null,l)}function Di(t,e){return void 0===oo[t]?!1:void 0===e?oo[t]:(oo[t]=e,!0)}function Mi(t){var e=this.localeData(),i=Si(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function Ci(){var t=no(this.years()),e=no(this.months()),i=no(this.days()),s=no(this.hours()),o=no(this.minutes()),n=no(this.seconds()+this.milliseconds()/1e3),r=this.asSeconds();return r?(0>r?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"}var Ti,Oi,Ei=e.momentProperties=[],ki=!1,Ni={},Ii={},Li=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,zi=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ai={},Pi={},Fi=/\d/,Ri=/\d\d/,Hi=/\d{3}/,Bi=/\d{4}/,Yi=/[+-]?\d{6}/,Wi=/\d\d?/,Gi=/\d{1,3}/,ji=/\d{1,4}/,Vi=/[+-]?\d{1,6}/,Ui=/\d+/,Xi=/[+-]?\d+/,qi=/Z|[+-]\d\d:?\d\d/gi,Zi=/[+-]?\d+(\.\d{1,3})?/,Qi=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Ki={},$i={},Ji=0,ts=1,es=2,is=3,ss=4,os=5,ns=6;I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),I("MMMM",0,0,function(t){return this.localeData().months(this,t)}),D("month","M"),F("M",Wi),F("MM",Wi,Ri),F("MMM",Qi),F("MMMM",Qi),B(["M","MM"],function(t,e){e[ts]=f(t)-1}),B(["MMM","MMMM"],function(t,e,i,s){var o=i._locale.monthsParse(t,s,i._strict);null!=o?e[ts]=o:i._pf.invalidMonth=t});var rs="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),as="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),hs={};e.suppressDeprecationWarnings=!1;var ds=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ls=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],cs=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],ps=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=$("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),D("year","y"),F("Y",Xi),F("YY",Wi,Ri),F("YYYY",ji,Bi),F("YYYYY",Vi,Yi),F("YYYYYY",Vi,Yi),B(["YYYY","YYYYY","YYYYYY"],Ji),B("YY",function(t,i){i[Ji]=e.parseTwoDigitYear(t)}),e.parseTwoDigitYear=function(t){return f(t)+(f(t)>68?1900:2e3)};var us=T("FullYear",!1);I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),D("week","w"),D("isoWeek","W"),F("w",Wi),F("ww",Wi,Ri),F("W",Wi),F("WW",Wi,Ri),Y(["w","ww","W","WW"],function(t,e,i,s){e[s.substr(0,1)]=f(t)});var ms={dow:0,doy:6};I("DDD",["DDDD",3],"DDDo","dayOfYear"),D("dayOfYear","DDD"),F("DDD",Gi),F("DDDD",Hi),B(["DDD","DDDD"],function(t,e,i){i._dayOfYear=f(t)}),e.ISO_8601=function(){};var fs=$("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Ct.apply(null,arguments);return this>t?this:t}),gs=$("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Ct.apply(null,arguments);return t>this?this:t});It("Z",":"),It("ZZ",""),F("Z",qi),F("ZZ",qi),B(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Lt(t)});var vs=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var ys=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,bs=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,_s=Kt(1,"add"),xs=Kt(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var ws=$("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),De("gggg","weekYear"),De("ggggg","weekYear"),De("GGGG","isoWeekYear"),De("GGGGG","isoWeekYear"),D("weekYear","gg"),D("isoWeekYear","GG"),F("G",Xi),F("g",Xi),F("GG",Wi,Ri),F("gg",Wi,Ri),F("GGGG",ji,Bi),F("gggg",ji,Bi),F("GGGGG",Vi,Yi),F("ggggg",Vi,Yi),Y(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,s){e[s.substr(0,2)]=f(t)}),Y(["gg","GG"],function(t,i,s,o){i[o]=e.parseTwoDigitYear(t)}),I("Q",0,0,"quarter"),D("quarter","Q"),F("Q",Fi),B("Q",function(t,e){e[ts]=3*(f(t)-1)}),I("D",["DD",2],"Do","date"),D("date","D"),F("D",Wi),F("DD",Wi,Ri),F("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),B(["D","DD"],es),B("Do",function(t,e){e[es]=f(t.match(Wi)[0],10)});var Ss=T("Date",!0);I("d",0,"do","day"),I("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),I("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),I("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),D("day","d"),D("weekday","e"),D("isoWeekday","E"),F("d",Wi),F("e",Wi),F("E",Wi),F("dd",Qi),F("ddd",Qi),F("dddd",Qi),Y(["dd","ddd","dddd"],function(t,e,i){var s=i._locale.weekdaysParse(t);null!=s?e.d=s:i._pf.invalidWeekday=t}),Y(["d","e","E"],function(t,e,i,s){e[s]=f(t)});var Ds="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ms="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Cs="Su_Mo_Tu_We_Th_Fr_Sa".split("_");I("H",["HH",2],0,"hour"),I("h",["hh",2],0,function(){return this.hours()%12||12}),He("a",!0),He("A",!1),D("hour","h"),F("a",Be),F("A",Be),F("H",Wi),F("h",Wi),F("HH",Wi,Ri),F("hh",Wi,Ri),B(["H","HH"],is),B(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),B(["h","hh"],function(t,e,i){e[is]=f(t),i._pf.bigHour=!0});var Ts=/[ap]\.?m?\.?/i,Os=T("Hours",!0);I("m",["mm",2],0,"minute"),D("minute","m"),F("m",Wi),F("mm",Wi,Ri),B(["m","mm"],ss);var Es=T("Minutes",!1);I("s",["ss",2],0,"second"),D("second","s"),F("s",Wi),F("ss",Wi,Ri),B(["s","ss"],os);var ks=T("Seconds",!1);I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),Ge("SSS"),Ge("SSSS"),D("millisecond","ms"),F("S",Gi,Fi),F("SS",Gi,Ri),F("SSS",Gi,Hi),F("SSSS",Ui),B(["S","SS","SSS","SSSS"],function(t,e){e[ns]=f(1e3*("0."+t))});var Ns=T("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var Is=u.prototype;Is.add=_s,Is.calendar=Jt,Is.clone=te,Is.diff=re,Is.endOf=ge,Is.format=le,Is.from=ce,Is.fromNow=pe,Is.get=k,Is.invalidAt=Se,Is.isAfter=ee,Is.isBefore=ie,Is.isBetween=se,Is.isSame=oe,Is.isValid=xe,Is.lang=ws,Is.locale=ue,Is.localeData=me,Is.max=gs,Is.min=fs,Is.parsingFlags=we,Is.set=k,Is.startOf=fe,Is.subtract=xs,Is.toArray=_e,Is.toDate=be,Is.toISOString=de,Is.toJSON=de,Is.toString=he,Is.unix=ye,Is.valueOf=ve,Is.year=us,Is.isLeapYear=rt,Is.weekYear=Ce,Is.isoWeekYear=Te,Is.quarter=Is.quarters=ke,Is.month=q,Is.daysInMonth=Z,Is.week=Is.weeks=ct,Is.isoWeek=Is.isoWeeks=pt,Is.weeksInYear=Ee,Is.isoWeeksInYear=Oe,Is.date=Ss,Is.day=Is.days=Pe,Is.weekday=Fe,Is.isoWeekday=Re,Is.dayOfYear=mt,Is.hour=Is.hours=Os, +Is.minute=Is.minutes=Es,Is.second=Is.seconds=ks,Is.millisecond=Is.milliseconds=Ns,Is.utcOffset=Pt,Is.utc=Rt,Is.local=Ht,Is.parseZone=Bt,Is.hasAlignedHourOffset=Yt,Is.isDST=Wt,Is.isDSTShifted=Gt,Is.isLocal=jt,Is.isUtcOffset=Vt,Is.isUtc=Ut,Is.isUTC=Ut,Is.zoneAbbr=je,Is.zoneName=Ve,Is.dates=$("dates accessor is deprecated. Use date instead.",Ss),Is.months=$("months accessor is deprecated. Use month instead",q),Is.years=$("years accessor is deprecated. Use year instead",us),Is.zone=$("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Ft);var Ls=Is,zs={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},As={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},Ps="Invalid date",Fs="%d",Rs=/\d{1,2}/,Hs={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Bs=v.prototype;Bs._calendar=zs,Bs.calendar=qe,Bs._longDateFormat=As,Bs.longDateFormat=Ze,Bs._invalidDate=Ps,Bs.invalidDate=Qe,Bs._ordinal=Fs,Bs.ordinal=Ke,Bs._ordinalParse=Rs,Bs.preparse=$e,Bs.postformat=$e,Bs._relativeTime=Hs,Bs.relativeTime=Je,Bs.pastFuture=ti,Bs.set=ei,Bs.months=j,Bs._months=rs,Bs.monthsShort=V,Bs._monthsShort=as,Bs.monthsParse=U,Bs.week=ht,Bs._week=ms,Bs.firstDayOfYear=lt,Bs.firstDayOfWeek=dt,Bs.weekdays=Ie,Bs._weekdays=Ds,Bs.weekdaysMin=ze,Bs._weekdaysMin=Cs,Bs.weekdaysShort=Le,Bs._weekdaysShort=Ms,Bs.weekdaysParse=Ae,Bs.isPM=Ye,Bs._meridiemParse=Ts,Bs.meridiem=We,x("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===f(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=$("moment.lang is deprecated. Use moment.locale instead.",x),e.langData=$("moment.langData is deprecated. Use moment.localeData instead.",S);var Ys=Math.abs,Ws=yi("ms"),Gs=yi("s"),js=yi("m"),Vs=yi("h"),Us=yi("d"),Xs=yi("w"),qs=yi("M"),Zs=yi("y"),Qs=_i("milliseconds"),Ks=_i("seconds"),$s=_i("minutes"),Js=_i("hours"),to=_i("days"),eo=_i("months"),io=_i("years"),so=Math.round,oo={s:45,m:45,h:22,d:26,M:11},no=Math.abs,ro=kt.prototype;ro.abs=di,ro.add=ci,ro.subtract=pi,ro.as=gi,ro.asMilliseconds=Ws,ro.asSeconds=Gs,ro.asMinutes=js,ro.asHours=Vs,ro.asDays=Us,ro.asWeeks=Xs,ro.asMonths=qs,ro.asYears=Zs,ro.valueOf=vi,ro._bubble=ui,ro.get=bi,ro.milliseconds=Qs,ro.seconds=Ks,ro.minutes=$s,ro.hours=Js,ro.days=to,ro.weeks=xi,ro.months=eo,ro.years=io,ro.humanize=Mi,ro.toISOString=Ci,ro.toString=Ci,ro.toJSON=Ci,ro.locale=ue,ro.localeData=me,ro.toIsoString=$("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ci),ro.lang=ws,I("X",0,0,"unix"),I("x",0,0,"valueOf"),F("x",Xi),F("X",Zi),B("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),B("x",function(t,e,i){i._d=new Date(f(t))}),e.version="2.10.0",i(Ct),e.fn=Ls,e.min=Ot,e.max=Et,e.utc=d,e.unix=Ue,e.months=oi,e.isDate=n,e.locale=x,e.invalid=c,e.duration=Xt,e.isMoment=m,e.weekdays=ri,e.parseZone=Xe,e.localeData=S,e.isDuration=Nt,e.monthsShort=ni,e.weekdaysMin=hi,e.defineLocale=w,e.weekdaysShort=ai,e.normalizeUnits=M,e.relativeTimeThreshold=Di;var ao=e;return ao})}).call(e,i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ', this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e,i){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e,i){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t,e,i){function s(t){throw new Error("Cannot find module '"+t+"'.")}s.keys=function(){return[]},s.resolve=s,t.exports=s,s.id=70},function(t,e,i){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +this.manipulationDiv.appendChild(this.manipulationDOM.deleteSpan)),this._bindHammerToDiv(this.manipulationDOM.addNodeSpan,"_createAddNodeToolbar"),this._bindHammerToDiv(this.manipulationDOM.addEdgeSpan,"_createAddEdgeToolbar"),this._bindHammerToDiv(this.closeDiv,"_toggleEditMode"),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this._bindHammerToDiv(this.manipulationDOM.editNodeSpan,"_editNode"):1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&this._bindHammerToDiv(this.manipulationDOM.editEdgeSpan,"_createEditEdgeToolbar"),0==this._selectionIsEmpty()&&this._bindHammerToDiv(this.manipulationDOM.deleteSpan,"_deleteSelected");var e=this;this.boundFunction=e._createManipulatorBar,this.on("select",this.boundFunction)}else{for(;this.editModeDiv.hasChildNodes();)this.editModeDiv.removeChild(this.editModeDiv.firstChild);this.manipulationDOM.editModeSpan=document.createElement("div"),this.manipulationDOM.editModeSpan.className="network-manipulationUI edit editmode",this.manipulationDOM.editModeLabelSpan=document.createElement("div"),this.manipulationDOM.editModeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editModeLabelSpan.innerHTML=t.edit,this.manipulationDOM.editModeSpan.appendChild(this.manipulationDOM.editModeLabelSpan),this.editModeDiv.appendChild(this.manipulationDOM.editModeSpan),this._bindHammerToDiv(this.manipulationDOM.editModeSpan,"_toggleEditMode")}},e._bindHammerToDiv=function(t,e){var i=r(t,{prevent_default:!0});i.on("touch",this[e].bind(this)),this.manipulationHammers.push(i)},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.addDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar");var e=this;this.boundFunction=e._addNode,this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation(!0),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.edgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar");var e=this;this.boundFunction=e._handleConnect,this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this.cachedFunctions._handleOnHold=this._handleOnHold,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleOnHold=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("div"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("div"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("div"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("div"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.editEdgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this._bindHammerToDiv(this.manipulationDOM.backSpan,"_createManipulatorBar"),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation(!0)),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!==e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation(!1),this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(t){throw new Error("Cannot find module '"+t+"'.")}s.keys=function(){return[]},s.resolve=s,t.exports=s,s.id=67},function(t,e,i){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e,i){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t,e,i){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/examples/graph2d/13_localization.html b/examples/graph2d/13_localization.html index 3475378d..d9a0cf53 100644 --- a/examples/graph2d/13_localization.html +++ b/examples/graph2d/13_localization.html @@ -28,7 +28,6 @@

    diff --git a/examples/timeline/19_localization.html b/examples/timeline/19_localization.html index 2e48299c..e2624abd 100644 --- a/examples/timeline/19_localization.html +++ b/examples/timeline/19_localization.html @@ -24,7 +24,6 @@

    diff --git a/lib/timeline/component/CurrentTime.js b/lib/timeline/component/CurrentTime.js index 13150e21..450851d1 100644 --- a/lib/timeline/component/CurrentTime.js +++ b/lib/timeline/component/CurrentTime.js @@ -90,7 +90,7 @@ CurrentTime.prototype.redraw = function() { var locale = this.options.locales[this.options.locale]; if (!locale) { if (!this.warned) { - console.log('WARNING: locale "' + this.options.locale + '" not found in vis.js'); + console.log('WARNING: options.locales[\'' + this.options.locale + '\'] not found. See http://visjs.org/docs/timeline.html#Localization'); this.warned = true; } locale = this.options.locales['en']; // fall back on english when not available diff --git a/lib/timeline/component/CustomTime.js b/lib/timeline/component/CustomTime.js index 842e14c8..58940b6c 100644 --- a/lib/timeline/component/CustomTime.js +++ b/lib/timeline/component/CustomTime.js @@ -120,7 +120,7 @@ CustomTime.prototype.redraw = function () { var locale = this.options.locales[this.options.locale]; if (!locale) { if (!this.warned) { - console.log('WARNING: locale "' + this.options.locale + '" not found in vis.js'); + console.log('WARNING: options.locales[\'' + this.options.locale + '\'] not found. See http://visjs.org/docs/timeline.html#Localization'); this.warned = true; } locale = this.options.locales['en']; // fall back on english when not available From c8fe42e9562dad445091cdc095e32d1e0d190ae0 Mon Sep 17 00:00:00 2001 From: jos Date: Wed, 8 Apr 2015 13:48:11 +0200 Subject: [PATCH 41/43] Fixed titles not working when any of the nodes has id `0`. --- HISTORY.md | 4 ++++ lib/network/Network.js | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index 98602d4a..9b992295 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -9,6 +9,10 @@ http://visjs.org - Fixed #761: Timeline and Graph2d throwing an error when locale is not found. Gives a warning message instead. +### Network + +- Fixed titles not working when any of the nodes has id `0`. + ## 2015-04-07, version 3.12.0 diff --git a/lib/network/Network.js b/lib/network/Network.js index ace182e7..9fd72c09 100644 --- a/lib/network/Network.js +++ b/lib/network/Network.js @@ -1449,7 +1449,7 @@ Network.prototype._checkShowPopup = function (pointer) { }; var id; - var previousPopupObjId = this.popupObj === undefined ? "" : this.popupObj.id; + var previousPopupObjId = this.popupObj === undefined ? undefined : this.popupObj.id; var nodeUnderCursor = false; var popupType = "node"; From 4f47608a278905ece2b6b59bd8104bc2e108f437 Mon Sep 17 00:00:00 2001 From: jos Date: Thu, 9 Apr 2015 10:22:28 +0200 Subject: [PATCH 42/43] Partly fixed issue with updating an item's subgroup (see #745) --- lib/timeline/component/ItemSet.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/timeline/component/ItemSet.js b/lib/timeline/component/ItemSet.js index 3eb35164..c2eaf101 100644 --- a/lib/timeline/component/ItemSet.js +++ b/lib/timeline/component/ItemSet.js @@ -1027,12 +1027,13 @@ ItemSet.prototype._addItem = function(item) { */ ItemSet.prototype._updateItem = function(item, itemData) { var oldGroupId = item.data.group; + var oldSubGroupId = item.data.subgroup; // update the items data (will redraw the item when displayed) item.setData(itemData); // update group - if (oldGroupId != item.data.group) { + if (oldGroupId != item.data.group || oldSubGroupId != item.data.subgroup) { var oldGroup = this.groups[oldGroupId]; if (oldGroup) oldGroup.remove(item); From bc3e4a26d1bd38d81ef7268f6caa781b48bef970 Mon Sep 17 00:00:00 2001 From: jos Date: Fri, 17 Apr 2015 12:22:32 +0200 Subject: [PATCH 43/43] Fixed #782: Contents of items created from a template being unnecessary recreated on click, causing mouse events to get lost. --- HISTORY.md | 2 + dist/vis.js | 181 +++++++++++++++------------- dist/vis.map | 2 +- dist/vis.min.js | 31 +++-- lib/timeline/component/item/Item.js | 15 ++- 5 files changed, 130 insertions(+), 101 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 9b992295..9c4d32bb 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -8,6 +8,8 @@ http://visjs.org - Fixed #761: Timeline and Graph2d throwing an error when locale is not found. Gives a warning message instead. +- Fixed #782: Contents of items created from a template being unnecessary + recreated on click, causing mouse events to get lost. ### Network diff --git a/dist/vis.js b/dist/vis.js index bd094411..bf86c2eb 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.12.1-SNAPSHOT - * @date 2015-04-07 + * @date 2015-04-17 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -9531,7 +9531,8 @@ return /******/ (function(modules) { // webpackBootstrap content = this.data.content; } - if(content !== this.content) { + var changed = this._contentToString(this.content) !== this._contentToString(content); + if (changed) { // only replace the content when changed if (content instanceof Element) { element.innerHTML = ''; @@ -9616,6 +9617,18 @@ return /******/ (function(modules) { // webpackBootstrap } }; + /** + * Stringify the items contents + * @param {string | Element | undefined} content + * @returns {string | undefined} + * @private + */ + Item.prototype._contentToString = function (content) { + if (typeof content === 'string') return content; + if (content && 'outerHTML' in content) return content.outerHTML; + return content; + }; + module.exports = Item; @@ -13563,12 +13576,13 @@ return /******/ (function(modules) { // webpackBootstrap */ ItemSet.prototype._updateItem = function(item, itemData) { var oldGroupId = item.data.group; + var oldSubGroupId = item.data.subgroup; // update the items data (will redraw the item when displayed) item.setData(itemData); // update group - if (oldGroupId != item.data.group) { + if (oldGroupId != item.data.group || oldSubGroupId != item.data.subgroup) { var oldGroup = this.groups[oldGroupId]; if (oldGroup) oldGroup.remove(item); @@ -17279,7 +17293,7 @@ return /******/ (function(modules) { // webpackBootstrap }; var id; - var previousPopupObjId = this.popupObj === undefined ? "" : this.popupObj.id; + var previousPopupObjId = this.popupObj === undefined ? undefined : this.popupObj.id; var nodeUnderCursor = false; var popupType = "node"; @@ -25315,7 +25329,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(module) {//! moment.js - //! version : 2.10.0 + //! version : 2.10.2 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com @@ -25328,7 +25342,7 @@ return /******/ (function(modules) { // webpackBootstrap var hookCallback; - function hooks__hooks () { + function utils_hooks__hooks () { return hookCallback.apply(null, arguments); } @@ -25392,7 +25406,7 @@ return /******/ (function(modules) { // webpackBootstrap return a; } - function utc__createUTC (input, format, locale, strict) { + function create_utc__createUTC (input, format, locale, strict) { return createLocalOrUTC(input, format, locale, strict, true).utc(); } @@ -25417,7 +25431,7 @@ return /******/ (function(modules) { // webpackBootstrap } function valid__createInvalid (flags) { - var m = utc__createUTC(NaN); + var m = create_utc__createUTC(NaN); if (flags != null) { extend(m._pf, flags); } @@ -25428,7 +25442,7 @@ return /******/ (function(modules) { // webpackBootstrap return m; } - var momentProperties = hooks__hooks.momentProperties = []; + var momentProperties = utils_hooks__hooks.momentProperties = []; function copyConfig(to, from) { var i, prop, val; @@ -25487,7 +25501,7 @@ return /******/ (function(modules) { // webpackBootstrap // objects. if (updateInProgress === false) { updateInProgress = true; - hooks__hooks.updateOffset(this); + utils_hooks__hooks.updateOffset(this); updateInProgress = false; } } @@ -25572,7 +25586,7 @@ return /******/ (function(modules) { // webpackBootstrap !(function webpackMissingModule() { var e = new Error("Cannot find module \"./locale\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); // because defineLocale currently also sets the global locale, we // want to undo that for lazy loaded locales - locales__getSetGlobalLocale(oldLocale); + locale_locales__getSetGlobalLocale(oldLocale); } catch (e) { } } return locales[name]; @@ -25581,11 +25595,11 @@ return /******/ (function(modules) { // webpackBootstrap // This function will load locale and then set the global locale. If // no arguments are passed in, it will simply return the current global // locale key. - function locales__getSetGlobalLocale (key, values) { + function locale_locales__getSetGlobalLocale (key, values) { var data; if (key) { if (typeof values === 'undefined') { - data = locales__getLocale(key); + data = locale_locales__getLocale(key); } else { data = defineLocale(key, values); @@ -25609,7 +25623,7 @@ return /******/ (function(modules) { // webpackBootstrap locales[name].set(values); // backwards compat for now: also set the locale - locales__getSetGlobalLocale(name); + locale_locales__getSetGlobalLocale(name); return locales[name]; } else { @@ -25620,7 +25634,7 @@ return /******/ (function(modules) { // webpackBootstrap } // returns locale data - function locales__getLocale (key) { + function locale_locales__getLocale (key) { var locale; if (key && key._locale && key._locale._abbr) { @@ -25675,7 +25689,7 @@ return /******/ (function(modules) { // webpackBootstrap return function (value) { if (value != null) { get_set__set(this, unit, value); - hooks__hooks.updateOffset(this, keepTime); + utils_hooks__hooks.updateOffset(this, keepTime); return this; } else { return get_set__get(this, unit); @@ -25958,7 +25972,7 @@ return /******/ (function(modules) { // webpackBootstrap for (i = 0; i < 12; i++) { // make the regex if we don't have it already - mom = utc__createUTC([2000, i]); + mom = create_utc__createUTC([2000, i]); if (strict && !this._longMonthsParse[i]) { this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); @@ -26000,7 +26014,7 @@ return /******/ (function(modules) { // webpackBootstrap function getSetMonth (value) { if (value != null) { setMonth(this, value); - hooks__hooks.updateOffset(this, true); + utils_hooks__hooks.updateOffset(this, true); return this; } else { return get_set__get(this, 'Month'); @@ -26036,7 +26050,7 @@ return /******/ (function(modules) { // webpackBootstrap } function warn(msg) { - if (hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) { + if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) { console.warn('Deprecation warning: ' + msg); } } @@ -26061,7 +26075,7 @@ return /******/ (function(modules) { // webpackBootstrap } } - hooks__hooks.suppressDeprecationWarnings = false; + utils_hooks__hooks.suppressDeprecationWarnings = false; var from_string__isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; @@ -26125,11 +26139,11 @@ return /******/ (function(modules) { // webpackBootstrap configFromISO(config); if (config._isValid === false) { delete config._isValid; - hooks__hooks.createFromInputFallback(config); + utils_hooks__hooks.createFromInputFallback(config); } } - hooks__hooks.createFromInputFallback = deprecate( + utils_hooks__hooks.createFromInputFallback = deprecate( 'moment construction falls back to js Date. This is ' + 'discouraged and will be removed in upcoming major ' + 'release. Please refer to ' + @@ -26181,7 +26195,7 @@ return /******/ (function(modules) { // webpackBootstrap addParseToken(['YYYY', 'YYYYY', 'YYYYYY'], YEAR); addParseToken('YY', function (input, array) { - array[YEAR] = hooks__hooks.parseTwoDigitYear(input); + array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input); }); // HELPERS @@ -26196,7 +26210,7 @@ return /******/ (function(modules) { // webpackBootstrap // HOOKS - hooks__hooks.parseTwoDigitYear = function (input) { + utils_hooks__hooks.parseTwoDigitYear = function (input) { return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); }; @@ -26455,12 +26469,12 @@ return /******/ (function(modules) { // webpackBootstrap config._dayOfYear = temp.dayOfYear; } - hooks__hooks.ISO_8601 = function () {}; + utils_hooks__hooks.ISO_8601 = function () {}; // date from string and format string function configFromStringAndFormat(config) { // TODO: Move this to another part of the creation flow to prevent circular deps - if (config._f === hooks__hooks.ISO_8601) { + if (config._f === utils_hooks__hooks.ISO_8601) { configFromISO(config); return; } @@ -26606,7 +26620,7 @@ return /******/ (function(modules) { // webpackBootstrap format = config._f, res; - config._locale = config._locale || locales__getLocale(config._l); + config._locale = config._locale || locale_locales__getLocale(config._l); if (input === null || (format === undefined && input === '')) { return valid__createInvalid({nullInput: true}); @@ -26655,7 +26669,7 @@ return /******/ (function(modules) { // webpackBootstrap // from milliseconds config._d = new Date(input); } else { - hooks__hooks.createFromInputFallback(config); + utils_hooks__hooks.createFromInputFallback(config); } } @@ -26764,7 +26778,7 @@ return /******/ (function(modules) { // webpackBootstrap this._data = {}; - this._locale = locales__getLocale(); + this._locale = locale_locales__getLocale(); this._bubble(); } @@ -26821,7 +26835,7 @@ return /******/ (function(modules) { // webpackBootstrap diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res); // Use low-level api, because this fn is low-level api. res._d.setTime(+res._d + diff); - hooks__hooks.updateOffset(res, false); + utils_hooks__hooks.updateOffset(res, false); return res; } else { return local__createLocal(input).local(); @@ -26839,7 +26853,7 @@ return /******/ (function(modules) { // webpackBootstrap // This function will be called whenever a moment is mutated. // It is intended to keep the offset in sync with the timezone. - hooks__hooks.updateOffset = function () {}; + utils_hooks__hooks.updateOffset = function () {}; // MOMENTS @@ -26876,7 +26890,7 @@ return /******/ (function(modules) { // webpackBootstrap add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false); } else if (!this._changeInProgress) { this._changeInProgress = true; - hooks__hooks.updateOffset(this, true); + utils_hooks__hooks.updateOffset(this, true); this._changeInProgress = null; } } @@ -26945,7 +26959,7 @@ return /******/ (function(modules) { // webpackBootstrap function isDaylightSavingTimeShifted () { if (this._a) { - var other = this._isUTC ? utc__createUTC(this._a) : local__createLocal(this._a); + var other = this._isUTC ? create_utc__createUTC(this._a) : local__createLocal(this._a); return this.isValid() && compareArrays(this._a, other.toArray()) > 0; } @@ -27031,6 +27045,8 @@ return /******/ (function(modules) { // webpackBootstrap return ret; } + create__createDuration.fn = Duration.prototype; + function parseIso (inp, sign) { // We'd normally use ~~inp for this, but unfortunately it also // converts floats to ints. @@ -27100,14 +27116,14 @@ return /******/ (function(modules) { // webpackBootstrap setMonth(mom, get_set__get(mom, 'Month') + months * isAdding); } if (updateOffset) { - hooks__hooks.updateOffset(mom, days || months); + utils_hooks__hooks.updateOffset(mom, days || months); } } var add_subtract__add = createAdder(1, 'add'); var add_subtract__subtract = createAdder(-1, 'subtract'); - function calendar__calendar (time) { + function moment_calendar__calendar (time) { // We want to compare the start of today, vs this. // Getting start-of-today depends on whether we're local/utc/offset or not. var now = time || local__createLocal(), @@ -27220,7 +27236,7 @@ return /******/ (function(modules) { // webpackBootstrap return -(wholeMonthDiff + adjust); } - hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; + utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; function toString () { return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); @@ -27241,7 +27257,7 @@ return /******/ (function(modules) { // webpackBootstrap } function format (inputString) { - var output = formatMoment(this, inputString || hooks__hooks.defaultFormat); + var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat); return this.localeData().postformat(output); } @@ -27259,7 +27275,7 @@ return /******/ (function(modules) { // webpackBootstrap if (key === undefined) { return this._locale._abbr; } else { - newLocaleData = locales__getLocale(key); + newLocaleData = locale_locales__getLocale(key); if (newLocaleData != null) { this._locale = newLocaleData; } @@ -27307,7 +27323,6 @@ return /******/ (function(modules) { // webpackBootstrap /* falls through */ case 'second': this.milliseconds(0); - /* falls through */ } // weeks are a special case @@ -27401,7 +27416,7 @@ return /******/ (function(modules) { // webpackBootstrap }); addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { - week[token] = hooks__hooks.parseTwoDigitYear(input); + week[token] = utils_hooks__hooks.parseTwoDigitYear(input); }); // HELPERS @@ -27746,7 +27761,7 @@ return /******/ (function(modules) { // webpackBootstrap var momentPrototype__proto = Moment.prototype; momentPrototype__proto.add = add_subtract__add; - momentPrototype__proto.calendar = calendar__calendar; + momentPrototype__proto.calendar = moment_calendar__calendar; momentPrototype__proto.clone = clone; momentPrototype__proto.diff = diff; momentPrototype__proto.endOf = endOf; @@ -27929,7 +27944,7 @@ return /******/ (function(modules) { // webpackBootstrap return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); } - function set__set (config) { + function locale_set__set (config) { var prop, i; for (i in config) { prop = config[i]; @@ -27960,7 +27975,7 @@ return /******/ (function(modules) { // webpackBootstrap prototype__proto._relativeTime = defaultRelativeTime; prototype__proto.relativeTime = relative__relativeTime; prototype__proto.pastFuture = pastFuture; - prototype__proto.set = set__set; + prototype__proto.set = locale_set__set; // Month prototype__proto.months = localeMonths; @@ -27990,8 +28005,8 @@ return /******/ (function(modules) { // webpackBootstrap prototype__proto.meridiem = localeMeridiem; function lists__get (format, index, field, setter) { - var locale = locales__getLocale(); - var utc = utc__createUTC().set(setter, index); + var locale = locale_locales__getLocale(); + var utc = create_utc__createUTC().set(setter, index); return locale[field](utc, format); } @@ -28035,7 +28050,7 @@ return /******/ (function(modules) { // webpackBootstrap return list(format, index, 'weekdaysMin', 7, 'day'); } - locales__getSetGlobalLocale('en', { + locale_locales__getSetGlobalLocale('en', { ordinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal : function (number) { var b = number % 10, @@ -28048,12 +28063,12 @@ return /******/ (function(modules) { // webpackBootstrap }); // Side effect imports - hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locales__getSetGlobalLocale); - hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locales__getLocale); + utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale); + utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale); var mathAbs = Math.abs; - function abs__abs () { + function duration_abs__abs () { var data = this._data; this._milliseconds = mathAbs(this._milliseconds); @@ -28171,7 +28186,7 @@ return /******/ (function(modules) { // webpackBootstrap } // TODO: Use this.as('ms')? - function as__valueOf () { + function duration_as__valueOf () { return ( this._milliseconds + this._days * 864e5 + @@ -28195,7 +28210,7 @@ return /******/ (function(modules) { // webpackBootstrap var asMonths = makeAs('M'); var asYears = makeAs('y'); - function get__get (units) { + function duration_get__get (units) { units = normalizeUnits(units); return this[units + 's'](); } @@ -28206,7 +28221,7 @@ return /******/ (function(modules) { // webpackBootstrap }; } - var get__milliseconds = makeGetter('milliseconds'); + var duration_get__milliseconds = makeGetter('milliseconds'); var seconds = makeGetter('seconds'); var minutes = makeGetter('minutes'); var hours = makeGetter('hours'); @@ -28232,7 +28247,7 @@ return /******/ (function(modules) { // webpackBootstrap return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); } - function humanize__relativeTime (posNegDuration, withoutSuffix, locale) { + function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) { var duration = create__createDuration(posNegDuration).abs(); var seconds = round(duration.as('s')); var minutes = round(duration.as('m')); @@ -28259,7 +28274,7 @@ return /******/ (function(modules) { // webpackBootstrap } // This function allows you to set a threshold for relative time strings - function humanize__getSetRelativeTimeThreshold (threshold, limit) { + function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) { if (thresholds[threshold] === undefined) { return false; } @@ -28272,7 +28287,7 @@ return /******/ (function(modules) { // webpackBootstrap function humanize (withSuffix) { var locale = this.localeData(); - var output = humanize__relativeTime(this, !withSuffix, locale); + var output = duration_humanize__relativeTime(this, !withSuffix, locale); if (withSuffix) { output = locale.pastFuture(+this, output); @@ -28312,7 +28327,7 @@ return /******/ (function(modules) { // webpackBootstrap var duration_prototype__proto = Duration.prototype; - duration_prototype__proto.abs = abs__abs; + duration_prototype__proto.abs = duration_abs__abs; duration_prototype__proto.add = duration_add_subtract__add; duration_prototype__proto.subtract = duration_add_subtract__subtract; duration_prototype__proto.as = as; @@ -28324,10 +28339,10 @@ return /******/ (function(modules) { // webpackBootstrap duration_prototype__proto.asWeeks = asWeeks; duration_prototype__proto.asMonths = asMonths; duration_prototype__proto.asYears = asYears; - duration_prototype__proto.valueOf = as__valueOf; + duration_prototype__proto.valueOf = duration_as__valueOf; duration_prototype__proto._bubble = bubble; - duration_prototype__proto.get = get__get; - duration_prototype__proto.milliseconds = get__milliseconds; + duration_prototype__proto.get = duration_get__get; + duration_prototype__proto.milliseconds = duration_get__milliseconds; duration_prototype__proto.seconds = seconds; duration_prototype__proto.minutes = minutes; duration_prototype__proto.hours = hours; @@ -28365,33 +28380,33 @@ return /******/ (function(modules) { // webpackBootstrap // Side effect imports - hooks__hooks.version = '2.10.0'; + utils_hooks__hooks.version = '2.10.2'; setHookCallback(local__createLocal); - hooks__hooks.fn = momentPrototype; - hooks__hooks.min = min; - hooks__hooks.max = max; - hooks__hooks.utc = utc__createUTC; - hooks__hooks.unix = moment__createUnix; - hooks__hooks.months = lists__listMonths; - hooks__hooks.isDate = isDate; - hooks__hooks.locale = locales__getSetGlobalLocale; - hooks__hooks.invalid = valid__createInvalid; - hooks__hooks.duration = create__createDuration; - hooks__hooks.isMoment = isMoment; - hooks__hooks.weekdays = lists__listWeekdays; - hooks__hooks.parseZone = moment__createInZone; - hooks__hooks.localeData = locales__getLocale; - hooks__hooks.isDuration = isDuration; - hooks__hooks.monthsShort = lists__listMonthsShort; - hooks__hooks.weekdaysMin = lists__listWeekdaysMin; - hooks__hooks.defineLocale = defineLocale; - hooks__hooks.weekdaysShort = lists__listWeekdaysShort; - hooks__hooks.normalizeUnits = normalizeUnits; - hooks__hooks.relativeTimeThreshold = humanize__getSetRelativeTimeThreshold; - - var _moment = hooks__hooks; + utils_hooks__hooks.fn = momentPrototype; + utils_hooks__hooks.min = min; + utils_hooks__hooks.max = max; + utils_hooks__hooks.utc = create_utc__createUTC; + utils_hooks__hooks.unix = moment__createUnix; + utils_hooks__hooks.months = lists__listMonths; + utils_hooks__hooks.isDate = isDate; + utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale; + utils_hooks__hooks.invalid = valid__createInvalid; + utils_hooks__hooks.duration = create__createDuration; + utils_hooks__hooks.isMoment = isMoment; + utils_hooks__hooks.weekdays = lists__listWeekdays; + utils_hooks__hooks.parseZone = moment__createInZone; + utils_hooks__hooks.localeData = locale_locales__getLocale; + utils_hooks__hooks.isDuration = isDuration; + utils_hooks__hooks.monthsShort = lists__listMonthsShort; + utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin; + utils_hooks__hooks.defineLocale = defineLocale; + utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort; + utils_hooks__hooks.normalizeUnits = normalizeUnits; + utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold; + + var _moment = utils_hooks__hooks; return _moment; diff --git a/dist/vis.map b/dist/vis.map index ce3f7ed9..bd5f105d 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","b","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","args","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","groupChanged","_moveToGroup","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","stopPropagation","removeFromDataSet","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","warned","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","status","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","requested","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","hooks__hooks","hookCallback","setHookCallback","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","input","res","hasOwnProp","utc__createUTC","createLocalOrUTC","utc","valid__isValid","_isValid","getTime","_pf","_strict","bigHour","valid__createInvalid","flags","NaN","copyConfig","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","dontConvert","lengthDiff","diffs","Locale","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","globalLocale","_abbr","locales__getSetGlobalLocale","locales__getLocale","defineLocale","abbr","set","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","makeGetSet","keepTime","get_set__set","get_set__get","mom","getSet","zeroFill","number","targetLength","forceSign","output","addFormatToken","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","isValid","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","unescapeFormat","matched","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","UTC","getUTCDate","localeMonths","_months","localeMonthsShort","_monthsShort","localeMonthsParse","monthName","_monthsParse","_longMonthsParse","_shortMonthsParse","months","monthsShort","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecateSimple","deprecations","configFromISO","l","string","from_string__isoRegex","isoDates","isoTimes","matchOffset","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","createDate","ms","createUTCDate","setUTCFullYear","daysInYear","isLeapYear","getIsLeapYear","weekOfYear","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","local__createLocal","week","localeWeek","_week","dow","doy","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","dayOfYearFromWeeks","daysToAdd","getUTCDay","getSetDayOfYear","startOf","defaults","currentDateArray","_useUTC","getUTCFullYear","getUTCMonth","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","temp","GG","W","E","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","_meridiem","meridiem","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","createFromConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","years","quarters","quarter","weeks","days","_milliseconds","_days","_bubble","isDuration","separator","utcOffset","offsetFromString","matches","chunk","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","create__isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","period","dur","tmp","isAdding","calendar__calendar","sod","calendar","inputMs","endOf","isBetween","absFloor","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","moment_format__toISOString","inputString","postformat","withoutSuffix","humanize","fromNow","newLocaleData","isoWeekday","to_type__valueOf","unix","moment_valid__isValid","parsingFlags","invalidAt","addWeekYearFormatToken","getter","weeksInYear","getSetWeekYear","getSetISOWeekYear","getISOWeeksInYear","getWeeksInYear","weekInfo","getSetQuarter","parseWeekday","weekdaysParse","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","localeWeekdaysParse","weekdayName","_weekdaysParse","weekdays","weekdaysShort","weekdaysMin","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","lowercase","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","millisecond__milliseconds","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","locale_calendar__calendar","_calendar","_longDateFormat","_invalidDate","_ordinal","preParsePostFormat","relative__relativeTime","isFuture","_relativeTime","pastFuture","set__set","_ordinalParseLenient","_ordinalParse","lists__get","setter","list","out","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","bubble","daysToYears","yearsToDays","as__valueOf","makeAs","alias","get__get","makeGetter","substituteTimeAgo","relativeTime","humanize__relativeTime","posNegDuration","thresholds","humanize__getSetRelativeTimeThreshold","limit","withSuffix","iso_string__toISOString","Y","iso_string__abs","D","asSeconds","match1","match2","match3","match4","match6","match1to2","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","isoWeekYear","getSetDayOfMonth","invalidWeekday","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","defaultLocaleMeridiemParse","getSetHour","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","toJSON","isoWeek","isoWeeks","isoWeeksInYear","isDST","isDSTShifted","zoneAbbr","zoneName","zone","momentPrototype","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","prototype__proto","firstDayOfYear","ordinalParse","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","get__milliseconds","duration_prototype__proto","toIsoString","version","invalid","relativeTimeThreshold","_moment","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","floor","random","toString","extend","a","b","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","hasParent","parent","e","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","labelObj","point","drawPoints","setAttributeNS","size","label","xOffset","yOffset","content","textContent","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","args","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis2","currentTime","customTime","itemSet","itemsData","groupsData","getEventProperties","oncontextmenu","setGroups","setItems","_redraw","Core","markDirty","refreshItems","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","getItemRange","dataset","minItem","maxStartItem","maxEndItem","itemFromTarget","groupFromTarget","pageX","gesture","pageY","centerContainer","snap","time","snappedTime","what","foreground","labelSet","groupId","linegraph","getLegend","isGroupVisible","visibility","yAxisLeft","yAxisRight","legendLeft","legendRight","hidden","screenToValue","convertHiddenOptions","repeat","dateItem","updateHiddenDates","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","selected","displayed","dirty","Hammer","select","unselect","groupChanged","_moveToGroup","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","stopPropagation","removeFromDataSet","_updateContents","template","_contentToString","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","outerHTML","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","totalHeight","newHeight","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","limitSize","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","warned","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","markerHeight","lastMarkerHeight","customOrderedItems","_updateVisibleItems","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldSubGroupId","oldGroup","_constructByEndArray","initialX","itemProps","srcEvent","ctrlKey","_onDragStartAddItem","xAbs","newItem","initial","initialStart","initialEnd","changes","shiftKey","oldSelection","newSelection","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","labelValue","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","useGradients","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","clusterByZoom","navigation","keyboard","speed","bindToWindow","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","useDefaultGroups","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","manipulationHammers","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","redrawRequested","images","setOnloadCallback","status","_requestRedraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","_markAllEdgesAsDirty","tabIndex","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupVisible","popup","_checkHidePopup","setPosition","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","previousPopupObjId","popupObj","nodeUnderCursor","popupType","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popupTargetType","popupTargetId","setText","pointerObj","stillOnObj","overNode","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","setValueRange","requestAnimationFrame","requested","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","getEdgesFromNode","edgesList","generateColorObject","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","fromColor","toColor","grd","createLinearGradient","addColorStop","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","pi","originalAngle","atan2","myAngle","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","groupsArray","groupIndex","DEFAULT","groupName","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_drawIcon","_resizeIcon","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","_icon","iconTextSpacing","relativeIconSize","iconFontFace","iconColor","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","barId","addCustomTime","numIds","customBarId","ts","customBarIds","removeCustomTime","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","utils_hooks__hooks","hookCallback","setHookCallback","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","input","res","hasOwnProp","create_utc__createUTC","createLocalOrUTC","utc","valid__isValid","_isValid","getTime","_pf","_strict","bigHour","valid__createInvalid","flags","NaN","copyConfig","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","dontConvert","lengthDiff","diffs","Locale","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","globalLocale","_abbr","locale_locales__getSetGlobalLocale","locale_locales__getLocale","defineLocale","abbr","set","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","makeGetSet","keepTime","get_set__set","get_set__get","mom","getSet","zeroFill","number","targetLength","forceSign","output","addFormatToken","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","isValid","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","unescapeFormat","matched","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","UTC","getUTCDate","localeMonths","_months","localeMonthsShort","_monthsShort","localeMonthsParse","monthName","_monthsParse","_longMonthsParse","_shortMonthsParse","months","monthsShort","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecateSimple","deprecations","configFromISO","l","string","from_string__isoRegex","isoDates","isoTimes","matchOffset","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","createDate","ms","createUTCDate","setUTCFullYear","daysInYear","isLeapYear","getIsLeapYear","weekOfYear","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","local__createLocal","week","localeWeek","_week","dow","doy","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","dayOfYearFromWeeks","daysToAdd","getUTCDay","getSetDayOfYear","startOf","defaults","currentDateArray","_useUTC","getUTCFullYear","getUTCMonth","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","temp","GG","W","E","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","_meridiem","meridiem","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","createFromConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","years","quarters","quarter","weeks","days","_milliseconds","_days","_bubble","isDuration","separator","utcOffset","offsetFromString","matches","chunk","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","create__isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","period","dur","tmp","isAdding","moment_calendar__calendar","sod","calendar","inputMs","endOf","isBetween","absFloor","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","moment_format__toISOString","inputString","postformat","withoutSuffix","humanize","fromNow","newLocaleData","isoWeekday","to_type__valueOf","unix","moment_valid__isValid","parsingFlags","invalidAt","addWeekYearFormatToken","getter","weeksInYear","getSetWeekYear","getSetISOWeekYear","getISOWeeksInYear","getWeeksInYear","weekInfo","getSetQuarter","parseWeekday","weekdaysParse","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","localeWeekdaysParse","weekdayName","_weekdaysParse","weekdays","weekdaysShort","weekdaysMin","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","lowercase","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","millisecond__milliseconds","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","locale_calendar__calendar","_calendar","_longDateFormat","_invalidDate","_ordinal","preParsePostFormat","relative__relativeTime","isFuture","_relativeTime","pastFuture","locale_set__set","_ordinalParseLenient","_ordinalParse","lists__get","setter","list","out","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","duration_abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","bubble","daysToYears","yearsToDays","duration_as__valueOf","makeAs","alias","duration_get__get","makeGetter","substituteTimeAgo","relativeTime","duration_humanize__relativeTime","posNegDuration","thresholds","duration_humanize__getSetRelativeTimeThreshold","limit","withSuffix","iso_string__toISOString","Y","iso_string__abs","D","asSeconds","match1","match2","match3","match4","match6","match1to2","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","isoWeekYear","getSetDayOfMonth","invalidWeekday","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","defaultLocaleMeridiemParse","getSetHour","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","toJSON","isoWeek","isoWeeks","isoWeeksInYear","isDST","isDSTShifted","zoneAbbr","zoneName","zone","momentPrototype","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","prototype__proto","firstDayOfYear","ordinalParse","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","duration_get__milliseconds","duration_prototype__proto","toIsoString","version","invalid","relativeTimeThreshold","_moment","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","VERSION","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_cleanManipulatorHammers","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","_bindHammerToDiv","boundFunction","edgeBeingEdited","selectedControlNode","domElement","funct","_createAddNodeToolbar","_addNode","_createAddEdgeToolbar","_handleConnect","_finishConnect","_createEditEdgeToolbar","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","_editNode","selectedNodes","selectedEdges","navigationDOM","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyBA,cAEA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,OAAOH,GACmB,gBAAZC,SACdA,QAAa,IAAID,IAEjBD,EAAU,IAAIC,KACbK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GAG9BN,EAAQe,KAAOT,EAAoB,GACnCN,EAAQgB,QAAUV,EAAoB,GAGtCN,EAAQiB,QAAUX,EAAoB,GACtCN,EAAQkB,SAAWZ,EAAoB,GACvCN,EAAQmB,MAAQb,EAAoB,GAGpCN,EAAQoB,QAAUd,EAAoB,GACtCN,EAAQqB,SACNC,OAAQhB,EAAoB,GAC5BiB,OAAQjB,EAAoB,GAC5BkB,QAASlB,EAAoB,GAC7BmB,QAASnB,EAAoB,IAC7BoB,OAAQpB,EAAoB,IAC5BqB,WAAYrB,EAAoB,KAIlCN,EAAQ4B,SAAWtB,EAAoB,IACvCN,EAAQ6B,QAAUvB,EAAoB,IACtCN,EAAQ8B,UACNC,SAAUzB,EAAoB,IAC9B0B,SAAU1B,EAAoB,IAC9B2B,MAAO3B,EAAoB,IAC3B4B,MAAO5B,EAAoB,IAC3B6B,SAAU7B,EAAoB,IAE9B8B,YACEC,OACEC,KAAMhC,EAAoB,IAC1BiC,eAAgBjC,EAAoB,IACpCkC,QAASlC,EAAoB,IAC7BmC,UAAWnC,EAAoB,IAC/BoC,UAAWpC,EAAoB,KAGjCqC,UAAWrC,EAAoB,IAC/BsC,YAAatC,EAAoB,IACjCuC,WAAYvC,EAAoB,IAChCwC,SAAUxC,EAAoB,IAC9ByC,WAAYzC,EAAoB,IAChC0C,MAAO1C,EAAoB,IAC3B2C,gBAAiB3C,EAAoB,IACrC4C,QAAS5C,EAAoB,IAC7B6C,OAAQ7C,EAAoB,IAC5B8C,UAAW9C,EAAoB,IAC/B+C,SAAU/C,EAAoB,MAKlCN,EAAQsD,QAAUhD,EAAoB,IACtCN,EAAQuD,SACNC,KAAMlD,EAAoB,IAC1BmD,OAAQnD,EAAoB,IAC5BoD,OAAQpD,EAAoB,IAC5BqD,KAAMrD,EAAoB,IAC1BsD,MAAOtD,EAAoB,IAC3BuD,UAAWvD,EAAoB,IAC/BwD,YAAaxD,EAAoB,KAInCN,EAAQ+D,MAAQ,WACd,KAAM,IAAIC,OAAM,+EAIlBhE,EAAQiE,OAAS3D,EAAoB,IACrCN,EAAQkE,OAAS5D,EAAoB,KAKjC,SAASL,EAAQD,EAASM,GAM9B,GAAI2D,GAAS3D,EAAoB,GAOjCN,GAAQmE,SAAW,SAASC,GAC1B,MAAQA,aAAkBC,SAA2B,gBAAVD,IAa7CpE,EAAQsE,UAAY,SAASC,EAAIC,EAAIC,EAAMC,GACzC,GAAIF,GAAOD,EACT,MAAO,EAGP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAGE,EAAQH,GAAKI,IASpC3E,EAAQ6E,SAAW,SAAST,GAC1B,MAAQA,aAAkBU,SAA2B,gBAAVV,IAQ7CpE,EAAQ+E,OAAS,SAASX,GACxB,GAAIA,YAAkBY,MACpB,OAAO,CAEJ,IAAIhF,EAAQ6E,SAAST,GAAS,CAEjC,GAAIa,GAAQC,EAAaC,KAAKf,EAC9B,IAAIa,EACF,OAAO,CAEJ,KAAKG,MAAMJ,KAAKK,MAAMjB,IACzB,OAAO,EAIX,OAAO,GAQTpE,EAAQsF,YAAc,SAASlB,GAC7B,MAA4B,mBAAb,SACVmB,OAAoB,eACpBA,OAAOC,cAAuB,WAC9BpB,YAAkBmB,QAAOC,cAAcC,WAQ9CzF,EAAQ0F,WAAa,WACnB,GAAIC,GAAK,WACP,MAAOf,MAAKgB,MACQ,MAAhBhB,KAAKiB,UACPC,SAAS,IAGb,OACIH,KAAOA,IAAO,IACVA,IAAO,IACPA,IAAO,IACPA,IAAO,IACPA,IAAOA,IAAOA,KAWxB3F,EAAQ+F,OAAS,SAAUC,EAAGC,GAC5B,IAAK,GAAIC,GAAI,EAAGC,EAAMC,UAAUC,OAAYF,EAAJD,EAASA,IAAK,CACpD,GAAII,GAAQF,UAAUF,EACtB,KAAK,GAAIK,KAAQD,GACXA,EAAME,eAAeD,KACvBP,EAAEO,GAAQD,EAAMC,IAKtB,MAAOP,IAWThG,EAAQyG,gBAAkB,SAAUC,EAAOV,EAAGC,GAC5C,IAAKU,MAAMC,QAAQF,GACjB,KAAM,IAAI1C,OAAM,uDAGlB,KAAK,GAAIkC,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAGpC,IAAK,GAFDI,GAAQF,UAAUF,GAEbpF,EAAI,EAAGA,EAAI4F,EAAML,OAAQvF,IAAK,CACrC,GAAIyF,GAAOG,EAAM5F,EACbwF,GAAME,eAAeD,KACvBP,EAAEO,GAAQD,EAAMC,IAItB,MAAOP,IAWThG,EAAQ6G,oBAAsB,SAAUH,EAAOV,EAAGC,GAEhD,GAAIU,MAAMC,QAAQX,GAChB,KAAM,IAAIa,WAAU,yCAEtB,KAAK,GAAIZ,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAEpC,IAAK,GADDI,GAAQF,UAAUF,GACbpF,EAAI,EAAGA,EAAI4F,EAAML,OAAQvF,IAAK,CACrC,GAAIyF,GAAOG,EAAM5F,EACjB,IAAIwF,EAAME,eAAeD,GACvB,GAAIN,EAAEM,IAASN,EAAEM,GAAMQ,cAAgBC,OACrBC,SAAZjB,EAAEO,KACJP,EAAEO,OAEAP,EAAEO,GAAMQ,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEO,GAAON,EAAEM,IAG9BP,EAAEO,GAAQN,EAAEM,OAET,CAAA,GAAII,MAAMC,QAAQX,EAAEM,IACzB,KAAM,IAAIO,WAAU,yCAEpBd,GAAEO,GAAQN,EAAEM,IAMpB,MAAOP,IAWThG,EAAQmH,uBAAyB,SAAUT,EAAOV,EAAGC,GAEnD,GAAIU,MAAMC,QAAQX,GAChB,KAAM,IAAIa,WAAU,yCAEtB,KAAK,GAAIP,KAAQN,GACf,GAAIA,EAAEO,eAAeD,IACQ,IAAvBG,EAAMU,QAAQb,GAChB,GAAIN,EAAEM,IAASN,EAAEM,GAAMQ,cAAgBC,OACrBC,SAAZjB,EAAEO,KACJP,EAAEO,OAEAP,EAAEO,GAAMQ,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEO,GAAON,EAAEM,IAG9BP,EAAEO,GAAQN,EAAEM,OAET,CAAA,GAAII,MAAMC,QAAQX,EAAEM,IACzB,KAAM,IAAIO,WAAU,yCAEpBd,GAAEO,GAAQN,EAAEM,GAKpB,MAAOP,IASThG,EAAQkH,WAAa,SAASlB,EAAGC,GAE/B,GAAIU,MAAMC,QAAQX,GAChB,KAAM,IAAIa,WAAU,yCAGtB,KAAK,GAAIP,KAAQN,GACf,GAAIA,EAAEO,eAAeD,GACnB,GAAIN,EAAEM,IAASN,EAAEM,GAAMQ,cAAgBC,OACrBC,SAAZjB,EAAEO,KACJP,EAAEO,OAEAP,EAAEO,GAAMQ,cAAgBC,OAC1BhH,EAAQkH,WAAWlB,EAAEO,GAAON,EAAEM,IAG9BP,EAAEO,GAAQN,EAAEM,OAET,CAAA,GAAII,MAAMC,QAAQX,EAAEM,IACzB,KAAM,IAAIO,WAAU,yCAEpBd,GAAEO,GAAQN,EAAEM,GAIlB,MAAOP,IAUThG,EAAQqH,WAAa,SAAUrB,EAAGC,GAChC,GAAID,EAAEK,QAAUJ,EAAEI,OAAQ,OAAO,CAEjC,KAAK,GAAIH,GAAI,EAAGC,EAAMH,EAAEK,OAAYF,EAAJD,EAASA,IACvC,GAAIF,EAAEE,IAAMD,EAAEC,GAAI,OAAO,CAG3B,QAAO,GAYTlG,EAAQsH,QAAU,SAASlD,EAAQmD,GACjC,GAAItC,EAEJ,IAAegC,SAAX7C,EACF,MAAO6C,OAET,IAAe,OAAX7C,EACF,MAAO,KAGT,KAAKmD,EACH,MAAOnD,EAET,IAAsB,gBAATmD,MAAwBA,YAAgBzC,SACnD,KAAM,IAAId,OAAM,wBAIlB,QAAQuD,GACN,IAAK,UACL,IAAK,UACH,MAAOC,SAAQpD,EAEjB,KAAK,SACL,IAAK,SACH,MAAOC,QAAOD,EAAOqD,UAEvB,KAAK,SACL,IAAK,SACH,MAAO3C,QAAOV,EAEhB,KAAK,OACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,IAAIY,MAAKZ,EAElB,IAAIA,YAAkBY,MACpB,MAAO,IAAIA,MAAKZ,EAAOqD,UAEpB,IAAIxD,EAAOyD,SAAStD,GACvB,MAAO,IAAIY,MAAKZ,EAAOqD,UAEzB,IAAIzH,EAAQ6E,SAAST,GAEnB,MADAa,GAAQC,EAAaC,KAAKf,GACtBa,EAEK,GAAID,MAAKX,OAAOY,EAAM,KAGtBhB,EAAOG,GAAQuD,QAIxB,MAAM,IAAI3D,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,gBAGZ,KAAK,SACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAOH,GAAOG,EAEhB,IAAIA,YAAkBY,MACpB,MAAOf,GAAOG,EAAOqD,UAElB,IAAIxD,EAAOyD,SAAStD,GACvB,MAAOH,GAAOG,EAEhB,IAAIpE,EAAQ6E,SAAST,GAEnB,MADAa,GAAQC,EAAaC,KAAKf,GAGjBH,EAFLgB,EAEYZ,OAAOY,EAAM,IAGbb,EAIhB,MAAM,IAAIJ,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,gBAGZ,KAAK,UACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,IAAIY,MAAKZ,EAEb,IAAIA,YAAkBY,MACzB,MAAOZ,GAAOyD,aAEX,IAAI5D,EAAOyD,SAAStD,GACvB,MAAOA,GAAOuD,SAASE,aAEpB,IAAI7H,EAAQ6E,SAAST,GAExB,MADAa,GAAQC,EAAaC,KAAKf,GACtBa,EAEK,GAAID,MAAKX,OAAOY,EAAM,KAAK4C,cAG3B,GAAI7C,MAAKZ,GAAQyD,aAI1B,MAAM,IAAI7D,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,mBAGZ,KAAK,UACH,GAAIpE,EAAQmE,SAASC,GACnB,MAAO,SAAWA,EAAS,IAExB,IAAIA,YAAkBY,MACzB,MAAO,SAAWZ,EAAOqD,UAAY,IAElC,IAAIzH,EAAQ6E,SAAST,GAAS,CACjCa,EAAQC,EAAaC,KAAKf,EAC1B,IAAIM,EAQJ,OALEA,GAFEO,EAEM,GAAID,MAAKX,OAAOY,EAAM,KAAKwC,UAG3B,GAAIzC,MAAKZ,GAAQqD,UAEpB,SAAW/C,EAAQ,KAG1B,KAAM,IAAIV,OACN,iCAAmChE,EAAQ4H,QAAQxD,GAC/C,mBAGZ,SACE,KAAM,IAAIJ,OAAM,iBAAmBuD,EAAO,MAOhD,IAAIrC,GAAe,qBAOnBlF,GAAQ4H,QAAU,SAASxD,GACzB,GAAImD,SAAcnD,EAElB,OAAY,UAARmD,EACY,MAAVnD,EACK,OAELA,YAAkBoD,SACb,UAELpD,YAAkBC,QACb,SAELD,YAAkBU,QACb,SAEL6B,MAAMC,QAAQxC,GACT,QAELA,YAAkBY,MACb,OAEF,SAEQ,UAARuC,EACA,SAEQ,WAARA,EACA,UAEQ,UAARA,EACA,SAGFA,GASTvH,EAAQ8H,gBAAkB,SAASC,GACjC,MAAOA,GAAKC,wBAAwBC,KAAOC,OAAOC,aASpDnI,EAAQoI,eAAiB,SAASL,GAChC,MAAOA,GAAKC,wBAAwBK,IAAMH,OAAOI,aAQnDtI,EAAQuI,aAAe,SAASR,EAAMS,GACpC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,IACD,KAA9BD,EAAQrB,QAAQoB,KAClBC,EAAQE,KAAKH,GACbT,EAAKS,UAAYC,EAAQG,KAAK,OASlC5I,EAAQ6I,gBAAkB,SAASd,EAAMS,GACvC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,KAC/BI,EAAQL,EAAQrB,QAAQoB,EACf,KAATM,IACFL,EAAQM,OAAOD,EAAO,GACtBf,EAAKS,UAAYC,EAAQG,KAAK,OAalC5I,EAAQgJ,QAAU,SAAS5E,EAAQ6E,GACjC,GAAI/C,GACAC,CACJ,IAAIQ,MAAMC,QAAQxC,GAEhB,IAAK8B,EAAI,EAAGC,EAAM/B,EAAOiC,OAAYF,EAAJD,EAASA,IACxC+C,EAAS7E,EAAO8B,GAAIA,EAAG9B,OAKzB,KAAK8B,IAAK9B,GACJA,EAAOoC,eAAeN,IACxB+C,EAAS7E,EAAO8B,GAAIA,EAAG9B,IAY/BpE,EAAQkJ,QAAU,SAAS9E,GACzB,GAAI+E,KAEJ,KAAK,GAAI5C,KAAQnC,GACXA,EAAOoC,eAAeD,IAAO4C,EAAMR,KAAKvE,EAAOmC,GAGrD,OAAO4C,IAUTnJ,EAAQoJ,eAAiB,SAAShF,EAAQiF,EAAK3E,GAC7C,MAAIN,GAAOiF,KAAS3E,GAClBN,EAAOiF,GAAO3E,GACP,IAGA,GAYX1E,EAAQsJ,iBAAmB,SAASC,EAASC,EAAQC,EAAUC,GACzDH,EAAQD,kBACSrC,SAAfyC,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUxC,QAAQ,YAAc,IACvEoC,EAAS,kBAGXD,EAAQD,iBAAiBE,EAAQC,EAAUC,IAE3CH,EAAQM,YAAY,KAAOL,EAAQC,IAWvCzJ,EAAQ8J,oBAAsB,SAASP,EAASC,EAAQC,EAAUC,GAC5DH,EAAQO,qBAES7C,SAAfyC,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUxC,QAAQ,YAAc,IACvEoC,EAAS,kBAGXD,EAAQO,oBAAoBN,EAAQC,EAAUC,IAG9CH,EAAQQ,YAAY,KAAOP,EAAQC,IAOvCzJ,EAAQgK,eAAiB,SAAUC,GAC5BA,IACHA,EAAQ/B,OAAO+B,OAEbA,EAAMD,eACRC,EAAMD,iBAGNC,EAAMC,aAAc,GASxBlK,EAAQmK,UAAY,SAASF,GAEtBA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAIG,EAcJ,OAZIH,GAAMG,OACRA,EAASH,EAAMG,OAERH,EAAMI,aACbD,EAASH,EAAMI,YAGMpD,QAAnBmD,EAAOE,UAA4C,GAAnBF,EAAOE,WAEzCF,EAASA,EAAOG,YAGXH,GAQTpK,EAAQwK,UAAY,SAAUjB,EAASkB,GAGrC,IAFA,GAAIC,GAAInB,EAEDmB,GAAG,CACR,GAAIA,IAAMD,EACR,OAAO,CAETC,GAAIA,EAAEH,WAGR,OAAO,GAGTvK,EAAQ2K,UAQR3K,EAAQ2K,OAAOC,UAAY,SAAUlG,EAAOmG,GAK1C,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACe,GAATA,EAGHmG,GAAgB,MASzB7K,EAAQ2K,OAAOG,SAAW,SAAUpG,EAAOmG,GAKzC,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACKL,OAAOK,IAAUmG,GAAgB,KAGnCA,GAAgB,MASzB7K,EAAQ2K,OAAOI,SAAW,SAAUrG,EAAOmG,GAKzC,MAJoB,kBAATnG,KACTA,EAAQA,KAGG,MAATA,EACKI,OAAOJ,GAGTmG,GAAgB,MASzB7K,EAAQ2K,OAAOK,OAAS,SAAUtG,EAAOmG,GAKvC,MAJoB,kBAATnG,KACTA,EAAQA,KAGN1E,EAAQ6E,SAASH,GACZA,EAEA1E,EAAQmE,SAASO,GACjBA,EAAQ,KAGRmG,GAAgB,MAU3B7K,EAAQ2K,OAAOM,UAAY,SAAUvG,EAAOmG,GAK1C,MAJoB,kBAATnG,KACTA,EAAQA,KAGHA,GAASmG,GAAgB,MASlC7K,EAAQkL,SAAW,SAASC,GAE1B,GAAIC,GAAiB,kCACrBD,GAAMA,EAAIE,QAAQD,EAAgB,SAASxK,EAAG0K,EAAGC,EAAGtF,GAChD,MAAOqF,GAAIA,EAAIC,EAAIA,EAAItF,EAAIA,GAE/B,IAAIuF,GAAS,4CAA4CrG,KAAKgG,EAC9D,OAAOK,IACHF,EAAGG,SAASD,EAAO,GAAI,IACvBD,EAAGE,SAASD,EAAO,GAAI,IACvBvF,EAAGwF,SAASD,EAAO,GAAI,KACvB,MASNxL,EAAQ0L,gBAAkB,SAASC,EAAMC,GACvC,GAA4B,IAAxBD,EAAMvE,QAAQ,OAAc,CAC9B,GAAIyE,GAAMF,EAAMG,OAAOH,EAAMvE,QAAQ,KAAK,GAAGiE,QAAQ,IAAI,IAAI3C,MAAM,IACnE,OAAO,QAAUmD,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMD,EAAU,IAGxE,GAAIC,GAAM7L,EAAQkL,SAASS,EAC3B,OAAW,OAAPE,EACKF,EAGA,QAAUE,EAAIP,EAAI,IAAMO,EAAIN,EAAI,IAAMM,EAAI5F,EAAI,IAAM2F,EAAU,KAa3E5L,EAAQ+L,SAAW,SAASC,EAAIC,EAAMC,GACpC,MAAO,MAAQ,GAAK,KAAOF,GAAO,KAAOC,GAAS,GAAKC,GAAMpG,SAAS,IAAIqG,MAAM,IASlFnM,EAAQoM,WAAa,SAAST,GAC5B,GAAI9K,EACJ,IAAIb,EAAQ6E,SAAS8G,GAAQ,CAC3B,GAAI3L,EAAQqM,WAAWV,GAAQ,CAC7B,GAAIE,GAAMF,EAAMG,OAAO,GAAGA,OAAO,EAAEH,EAAMtF,OAAO,GAAGqC,MAAM,IACzDiD,GAAQ3L,EAAQ+L,SAASF,EAAI,GAAGA,EAAI,GAAGA,EAAI,IAE7C,GAAI7L,EAAQsM,WAAWX,GAAQ,CAC7B,GAAIY,GAAMvM,EAAQwM,SAASb,GACvBc,GAAmBC,EAAEH,EAAIG,EAAEC,EAAU,IAARJ,EAAII,EAASC,EAAEhI,KAAKL,IAAI,EAAU,KAARgI,EAAIK,IAC3DC,GAAmBH,EAAEH,EAAIG,EAAEC,EAAE/H,KAAKL,IAAI,EAAU,KAARgI,EAAIK,GAAUA,EAAQ,GAANL,EAAIK,GAC5DE,EAAkB9M,EAAQ+M,SAASF,EAAeH,EAAGG,EAAeH,EAAGG,EAAeD,GACtFI,EAAkBhN,EAAQ+M,SAASN,EAAgBC,EAAED,EAAgBE,EAAEF,EAAgBG,EAE3F/L,IACEoM,WAAYtB,EACZuB,OAAOJ,EACPK,WACEF,WAAWD,EACXE,OAAOJ,GAETM,OACEH,WAAWD,EACXE,OAAOJ,QAKXjM,IACEoM,WAAWtB,EACXuB,OAAOvB,EACPwB,WACEF,WAAWtB,EACXuB,OAAOvB,GAETyB,OACEH,WAAWtB,EACXuB,OAAOvB,QAMb9K,MACAA,EAAEoM,WAAatB,EAAMsB,YAAc,QACnCpM,EAAEqM,OAASvB,EAAMuB,QAAUrM,EAAEoM,WAEzBjN,EAAQ6E,SAAS8G,EAAMwB,WACzBtM,EAAEsM,WACAD,OAAQvB,EAAMwB,UACdF,WAAYtB,EAAMwB,YAIpBtM,EAAEsM,aACFtM,EAAEsM,UAAUF,WAAatB,EAAMwB,WAAaxB,EAAMwB,UAAUF,YAAcpM,EAAEoM,WAC5EpM,EAAEsM,UAAUD,OAASvB,EAAMwB,WAAaxB,EAAMwB,UAAUD,QAAUrM,EAAEqM,QAGlElN,EAAQ6E,SAAS8G,EAAMyB,OACzBvM,EAAEuM,OACAF,OAAQvB,EAAMyB,MACdH,WAAYtB,EAAMyB,QAIpBvM,EAAEuM,SACFvM,EAAEuM,MAAMH,WAAatB,EAAMyB,OAASzB,EAAMyB,MAAMH,YAAcpM,EAAEoM,WAChEpM,EAAEuM,MAAMF,OAASvB,EAAMyB,OAASzB,EAAMyB,MAAMF,QAAUrM,EAAEqM,OAI5D,OAAOrM,IAYTb,EAAQqN,SAAW,SAASrB,EAAIC,EAAMC,GACpCF,GAAQ,IAAKC,GAAY,IAAKC,GAAU,GACxC,IAAIoB,GAAS1I,KAAKL,IAAIyH,EAAIpH,KAAKL,IAAI0H,EAAMC,IACrCqB,EAAS3I,KAAKJ,IAAIwH,EAAIpH,KAAKJ,IAAIyH,EAAMC,GAGzC,IAAIoB,GAAUC,EACZ,OAAQb,EAAE,EAAEC,EAAE,EAAEC,EAAEU,EAIpB,IAAIE,GAAKxB,GAAKsB,EAAUrB,EAAMC,EAASA,GAAMoB,EAAUtB,EAAIC,EAAQC,EAAKF,EACpEU,EAAKV,GAAKsB,EAAU,EAAMpB,GAAMoB,EAAU,EAAI,EAC9CG,EAAM,IAAIf,EAAIc,GAAGD,EAASD,IAAS,IACnCI,GAAcH,EAASD,GAAQC,EAC/B7I,EAAQ6I,CACZ,QAAQb,EAAEe,EAAId,EAAEe,EAAWd,EAAElI,GAG/B,IAAIiJ,IAEFjF,MAAO,SAAUkF,GACf,GAAIC,KAWJ,OATAD,GAAQlF,MAAM,KAAKM,QAAQ,SAAU8E,GACnC,GAAoB,IAAhBA,EAAMC,OAAc,CACtB,GAAIC,GAAQF,EAAMpF,MAAM,KACpBW,EAAM2E,EAAM,GAAGD,OACfrJ,EAAQsJ,EAAM,GAAGD,MACrBF,GAAOxE,GAAO3E,KAIXmJ,GAITjF,KAAM,SAAUiF,GACd,MAAO7G,QAAOiH,KAAKJ,GACdK,IAAI,SAAU7E,GACb,MAAOA,GAAM,KAAOwE,EAAOxE,KAE5BT,KAAK,OASd5I,GAAQmO,WAAa,SAAU5E,EAASqE,GACtC,GAAIQ,GAAgBT,EAAQjF,MAAMa,EAAQuE,MAAMF,SAC5CS,EAAYV,EAAQjF,MAAMkF,GAC1BC,EAAS7N,EAAQ+F,OAAOqI,EAAeC,EAE3C9E,GAAQuE,MAAMF,QAAUD,EAAQ/E,KAAKiF,IAQvC7N,EAAQsO,cAAgB,SAAU/E,EAASqE,GACzC,GAAIC,GAASF,EAAQjF,MAAMa,EAAQuE,MAAMF,SACrCW,EAAeZ,EAAQjF,MAAMkF,EAEjC,KAAK,GAAIvE,KAAOkF,GACVA,EAAa/H,eAAe6C,UACvBwE,GAAOxE,EAIlBE,GAAQuE,MAAMF,QAAUD,EAAQ/E,KAAKiF,IAWvC7N,EAAQwO,SAAW,SAAS9B,EAAGC,EAAGC,GAChC,GAAItB,GAAGC,EAAGtF,EAENC,EAAItB,KAAKgB,MAAU,EAAJ8G,GACf+B,EAAQ,EAAJ/B,EAAQxG,EACZpF,EAAI8L,GAAK,EAAID,GACb+B,EAAI9B,GAAK,EAAI6B,EAAI9B,GACjBgC,EAAI/B,GAAK,GAAK,EAAI6B,GAAK9B,EAE3B,QAAQzG,EAAI,GACV,IAAK,GAAGoF,EAAIsB,EAAGrB,EAAIoD,EAAG1I,EAAInF,CAAG,MAC7B,KAAK,GAAGwK,EAAIoD,EAAGnD,EAAIqB,EAAG3G,EAAInF,CAAG,MAC7B,KAAK,GAAGwK,EAAIxK,EAAGyK,EAAIqB,EAAG3G,EAAI0I,CAAG,MAC7B,KAAK,GAAGrD,EAAIxK,EAAGyK,EAAImD,EAAGzI,EAAI2G,CAAG,MAC7B,KAAK,GAAGtB,EAAIqD,EAAGpD,EAAIzK,EAAGmF,EAAI2G,CAAG,MAC7B,KAAK,GAAGtB,EAAIsB,EAAGrB,EAAIzK,EAAGmF,EAAIyI,EAG5B,OAAQpD,EAAE1G,KAAKgB,MAAU,IAAJ0F,GAAUC,EAAE3G,KAAKgB,MAAU,IAAJ2F,GAAUtF,EAAErB,KAAKgB,MAAU,IAAJK,KAGrEjG,EAAQ+M,SAAW,SAASL,EAAGC,EAAGC,GAChC,GAAIf,GAAM7L,EAAQwO,SAAS9B,EAAGC,EAAGC,EACjC,OAAO5M,GAAQ+L,SAASF,EAAIP,EAAGO,EAAIN,EAAGM,EAAI5F,IAG5CjG,EAAQwM,SAAW,SAASrB,GAC1B,GAAIU,GAAM7L,EAAQkL,SAASC,EAC3B,OAAOnL,GAAQqN,SAASxB,EAAIP,EAAGO,EAAIN,EAAGM,EAAI5F,IAG5CjG,EAAQsM,WAAa,SAASnB,GAC5B,GAAIyD,GAAO,qCAAqCC,KAAK1D,EACrD,OAAOyD,IAGT5O,EAAQqM,WAAa,SAASR,GAC5BA,EAAMA,EAAIR,QAAQ,IAAI,GACtB,IAAIuD,GAAO,wCAAwCC,KAAKhD,EACxD,OAAO+C,IAUT5O,EAAQ8O,sBAAwB,SAASC,EAAQC,GAC/C,GAA8B,gBAAnBA,GAA6B,CAEtC,IAAK,GADDC,GAAWjI,OAAOkI,OAAOF,GACpB9I,EAAI,EAAGA,EAAI6I,EAAO1I,OAAQH,IAC7B8I,EAAgBxI,eAAeuI,EAAO7I,KACC,gBAA9B8I,GAAgBD,EAAO7I,MAChC+I,EAASF,EAAO7I,IAAMlG,EAAQmP,aAAaH,EAAgBD,EAAO7I,KAIxE,OAAO+I,GAGP,MAAO,OAWXjP,EAAQmP,aAAe,SAASH,GAC9B,GAA8B,gBAAnBA,GAA6B,CACtC,GAAIC,GAAWjI,OAAOkI,OAAOF,EAC7B,KAAK,GAAI9I,KAAK8I,GACRA,EAAgBxI,eAAeN,IACA,gBAAtB8I,GAAgB9I,KACzB+I,EAAS/I,GAAKlG,EAAQmP,aAAaH,EAAgB9I,IAIzD,OAAO+I,GAGP,MAAO,OAcXjP,EAAQoP,aAAe,SAAUC,EAAaC,EAAS3E,GACrD,GAAwB1D,SAApBqI,EAAQ3E,GACV,GAA8B,iBAAnB2E,GAAQ3E,GACjB0E,EAAY1E,GAAQ4E,QAAUD,EAAQ3E,OAEnC,CACH0E,EAAY1E,GAAQ4E,SAAU,CAC9B,KAAK,GAAIhJ,KAAQ+I,GAAQ3E,GACnB2E,EAAQ3E,GAAQnE,eAAeD,KACjC8I,EAAY1E,GAAQpE,GAAQ+I,EAAQ3E,GAAQpE,MAmBtDvG,EAAQwP,mBAAqB,SAASC,EAAcC,EAAgBC,EAAOC,GAMzE,IALA,GAAIC,GAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAapJ,OAAS,EAEnB2J,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAASrL,KAAKgB,OAAOmK,EAAMC,GAAQ,GAEnCE,EAAOT,EAAaQ,GACpBvL,EAAoBuC,SAAX2I,EAAwBM,EAAKP,GAASO,EAAKP,GAAOC,GAE3DO,EAAeT,EAAehL,EAClC,IAAoB,GAAhByL,EACF,MAAOF,EAEgB,KAAhBE,EACPJ,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGlBH,IAGF,MAAO,IAeT9P,EAAQoQ,kBAAoB,SAASX,EAAcrF,EAAQuF,EAAOU,GAOhE,IANA,GAIIC,GAAW5L,EAAO6L,EAAWN,EAJ7BJ,EAAgB,IAChBC,EAAY,EACZC,EAAM,EACNC,EAAOP,EAAapJ,OAAS,EAGnB2J,GAAPD,GAA2BF,EAAZC,GAA2B,CAO/C,GALAG,EAASrL,KAAKgB,MAAM,IAAKoK,EAAKD,IAC9BO,EAAYb,EAAa7K,KAAKJ,IAAI,EAAEyL,EAAS,IAAIN,GACjDjL,EAAY+K,EAAaQ,GAAQN,GACjCY,EAAYd,EAAa7K,KAAKL,IAAIkL,EAAapJ,OAAO,EAAE4J,EAAS,IAAIN,GAEjEjL,GAAS0F,EACX,MAAO6F,EAEJ,IAAgB7F,EAAZkG,GAAsB5L,EAAQ0F,EACrC,MAAyB,UAAlBiG,EAA6BzL,KAAKJ,IAAI,EAAEyL,EAAS,GAAKA,CAE1D,IAAY7F,EAAR1F,GAAkB6L,EAAYnG,EACrC,MAAyB,UAAlBiG,EAA6BJ,EAASrL,KAAKL,IAAIkL,EAAapJ,OAAO,EAAE4J,EAAS,EAGzE7F,GAAR1F,EACFqL,EAAME,EAAS,EAGfD,EAAOC,EAAS,EAGpBH,IAIF,MAAO,IAYT9P,EAAQwQ,cAAgB,SAAU7B,EAAG8B,EAAOC,EAAKC,GAC/C,GAAIC,GAASF,EAAMD,CAEnB,OADA9B,IAAKgC,EAAS,EACN,EAAJhC,EAAciC,EAAO,EAAEjC,EAAEA,EAAI8B,GACjC9B,KACQiC,EAAO,GAAKjC,GAAGA,EAAE,GAAK,GAAK8B,IAUrCzQ,EAAQ6Q,iBAENC,OAAQ,SAAUnC,GAChB,MAAOA,IAGToC,WAAY,SAAUpC,GACpB,MAAOA,GAAIA,GAGbqC,YAAa,SAAUrC,GACrB,MAAOA,IAAK,EAAIA,IAGlB6B,cAAe,SAAU7B,GACvB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAI,IAAM,EAAI,EAAIA,GAAKA,GAGjDsC,YAAa,SAAUtC,GACrB,MAAOA,GAAIA,EAAIA,GAGjBuC,aAAc,SAAUvC,GACtB,QAAUA,EAAKA,EAAIA,EAAI,GAGzBwC,eAAgB,SAAUxC,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,GAGxEyC,YAAa,SAAUzC,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,GAGrB0C,aAAc,SAAU1C,GACtB,MAAO,MAAOA,EAAKA,EAAIA,EAAIA,GAG7B2C,eAAgB,SAAU3C,GACxB,MAAW,GAAJA,EAAS,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,IAAOA,EAAKA,EAAIA,EAAIA,GAG9D4C,YAAa,SAAU5C,GACrB,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAGzB6C,aAAc,SAAU7C,GACtB,MAAO,KAAOA,EAAKA,EAAIA,EAAIA,EAAIA,GAGjC8C,eAAgB,SAAU9C,GACxB,MAAW,GAAJA,EAAS,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,KAAQA,EAAKA,EAAIA,EAAIA,EAAIA,KAMtE,SAAS1O,EAAQD,EAASM,GAS9BN,EAAQ0R,gBAAkB,SAASC,GAEjC,IAAK,GAAIC,KAAeD,GAClBA,EAAcnL,eAAeoL,KAC/BD,EAAcC,GAAaC,UAAYF,EAAcC,GAAaE,KAClEH,EAAcC,GAAaE,UAYjC9R,EAAQ+R,gBAAkB,SAASJ,GAEjC,IAAK,GAAIC,KAAeD,GACtB,GAAIA,EAAcnL,eAAeoL,IAC3BD,EAAcC,GAAaC,UAAW,CACxC,IAAK,GAAI3L,GAAI,EAAGA,EAAIyL,EAAcC,GAAaC,UAAUxL,OAAQH,IAC/DyL,EAAcC,GAAaC,UAAU3L,GAAGqE,WAAWyH,YAAYL,EAAcC,GAAaC,UAAU3L,GAEtGyL,GAAcC,GAAaC,eAgBnC7R,EAAQiS,cAAgB,SAAUL,EAAaD,EAAeO,GAC5D,GAAI3I,EAqBJ,OAnBIoI,GAAcnL,eAAeoL,GAE3BD,EAAcC,GAAaC,UAAUxL,OAAS,GAChDkD,EAAUoI,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrC5I,EAAU6I,SAASC,gBAAgB,6BAA8BT,GACjEM,EAAaI,YAAY/I,KAK3BA,EAAU6I,SAASC,gBAAgB,6BAA8BT,GACjED,EAAcC,IAAgBE,QAAUD,cACxCK,EAAaI,YAAY/I,IAE3BoI,EAAcC,GAAaE,KAAKnJ,KAAKY,GAC9BA,GAcTvJ,EAAQuS,cAAgB,SAAUX,EAAaD,EAAea,EAAcC,GAC1E,GAAIlJ,EA+BJ,OA7BIoI,GAAcnL,eAAeoL,GAE3BD,EAAcC,GAAaC,UAAUxL,OAAS,GAChDkD,EAAUoI,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrC5I,EAAU6I,SAASM,cAAcd,GACZ3K,SAAjBwL,EACFD,EAAaC,aAAalJ,EAASkJ,GAGnCD,EAAaF,YAAY/I,KAM7BA,EAAU6I,SAASM,cAAcd,GACjCD,EAAcC,IAAgBE,QAAUD,cACnB5K,SAAjBwL,EACFD,EAAaC,aAAalJ,EAASkJ,GAGnCD,EAAaF,YAAY/I,IAG7BoI,EAAcC,GAAaE,KAAKnJ,KAAKY,GAC9BA,GAmBTvJ,EAAQ2S,UAAY,SAASC,EAAGC,EAAGC,EAAOnB,EAAeO,EAAca,GACrE,GAAIC,EACkC,WAAlCF,EAAMxD,QAAQ2D,WAAWnF,OAC3BkF,EAAQhT,EAAQiS,cAAc,SAASN,EAAcO,GACrDc,EAAME,eAAe,KAAM,KAAMN,GACjCI,EAAME,eAAe,KAAM,KAAML,GACjCG,EAAME,eAAe,KAAM,IAAK,GAAMJ,EAAMxD,QAAQ2D,WAAWE,QAG/DH,EAAQhT,EAAQiS,cAAc,OAAON,EAAcO,GACnDc,EAAME,eAAe,KAAM,IAAKN,EAAI,GAAIE,EAAMxD,QAAQ2D,WAAWE,MACjEH,EAAME,eAAe,KAAM,IAAKL,EAAI,GAAIC,EAAMxD,QAAQ2D,WAAWE,MACjEH,EAAME,eAAe,KAAM,QAASJ,EAAMxD,QAAQ2D,WAAWE,MAC7DH,EAAME,eAAe,KAAM,SAAUJ,EAAMxD,QAAQ2D,WAAWE,OAGzBlM,SAApC6L,EAAMxD,QAAQ2D,WAAWpF,QAC1BmF,EAAME,eAAe,KAAM,QAASJ,EAAMA,MAAMxD,QAAQ2D,WAAWpF,QAErEmF,EAAME,eAAe,KAAM,QAASJ,EAAMtK,UAAY,SAEtD,IAAI4K,GAAQpT,EAAQiS,cAAc,OAAON,EAAcO,EAqBvD,OApBIa,KACIA,EAASM,UACXT,GAAQG,EAASM,SAGfN,EAASO,UACXT,GAAQE,EAASO,SAEfP,EAASQ,UACXH,EAAMI,YAAcT,EAASQ,SAG3BR,EAASvK,WACX4K,EAAMF,eAAe,KAAM,QAASH,EAASvK,UAAa,WAKhE4K,EAAMF,eAAe,KAAM,IAAKN,GAChCQ,EAAMF,eAAe,KAAM,IAAKL,GACzBG,GAUThT,EAAQyT,QAAU,SAAUb,EAAGC,EAAGa,EAAOC,EAAQnL,EAAWmJ,EAAeO,GACzE,GAAc,GAAVyB,EAAa,CACF,EAATA,IACFA,GAAU,GACVd,GAAKc,EAEP,IAAIC,GAAO5T,EAAQiS,cAAc,OAAON,EAAeO,EACvD0B,GAAKV,eAAe,KAAM,IAAKN,EAAI,GAAMc,GACzCE,EAAKV,eAAe,KAAM,IAAKL,GAC/Be,EAAKV,eAAe,KAAM,QAASQ,GACnCE,EAAKV,eAAe,KAAM,SAAUS,GACpCC,EAAKV,eAAe,KAAM,QAAS1K,MAMnC,SAASvI,EAAQD,EAASM,GAgD9B,QAASW,GAAS4S,EAAMvE,GAetB,IAbIuE,GAASlN,MAAMC,QAAQiN,IAAU9S,EAAKuE,YAAYuO,KACpDvE,EAAUuE,EACVA,EAAO,MAGTzT,KAAK0T,SAAWxE,MAChBlP,KAAK2T,SACL3T,KAAKiG,OAAS,EACdjG,KAAK4T,SAAW5T,KAAK0T,SAASG,SAAW,KACzC7T,KAAK8T,SAID9T,KAAK0T,SAASvM,KAChB,IAAK,GAAIoI,KAASvP,MAAK0T,SAASvM,KAC9B,GAAInH,KAAK0T,SAASvM,KAAKf,eAAemJ,GAAQ,CAC5C,GAAIjL,GAAQtE,KAAK0T,SAASvM,KAAKoI,EAClB,SAATjL,GAA4B,WAATA,GAA+B,WAATA,EAC3CtE,KAAK8T,MAAMvE,GAAS,OAGpBvP,KAAK8T,MAAMvE,GAASjL,EAO5B,GAAItE,KAAK0T,SAASxM,QAChB,KAAM,IAAItD,OAAM,sDAGlB5D,MAAK+T,gBAGDN,GACFzT,KAAKgU,IAAIP,GAGXzT,KAAKiU,WAAW/E,GAvFlB,GAAIvO,GAAOT,EAAoB,GAC3Ba,EAAQb,EAAoB,EAkGhCW,GAAQqT,UAAUD,WAAa,SAAS/E,GAClCA,GAA6BrI,SAAlBqI,EAAQiF,QACjBjF,EAAQiF,SAAU,EAEhBnU,KAAKoU,SACPpU,KAAKoU,OAAOC,gBACLrU,MAAKoU,SAKTpU,KAAKoU,SACRpU,KAAKoU,OAASrT,EAAM4E,OAAO3F,MACzBiL,SAAU,MAAO,SAAU,aAIF,gBAAlBiE,GAAQiF,OACjBnU,KAAKoU,OAAOH,WAAW/E,EAAQiF,UAevCtT,EAAQqT,UAAUI,GAAK,SAASzK,EAAOhB,GACrC,GAAI0L,GAAcvU,KAAK+T,aAAalK,EAC/B0K,KACHA,KACAvU,KAAK+T,aAAalK,GAAS0K,GAG7BA,EAAYhM,MACVM,SAAUA,KAKdhI,EAAQqT,UAAUM,UAAY3T,EAAQqT,UAAUI,GAOhDzT,EAAQqT,UAAUO,IAAM,SAAS5K,EAAOhB,GACtC,GAAI0L,GAAcvU,KAAK+T,aAAalK,EAChC0K,KACFvU,KAAK+T,aAAalK,GAAS0K,EAAYG,OAAO,SAAUrL,GACtD,MAAQA,GAASR,UAAYA,MAMnChI,EAAQqT,UAAUS,YAAc9T,EAAQqT,UAAUO,IASlD5T,EAAQqT,UAAUU,SAAW,SAAU/K,EAAOgL,EAAQC,GACpD,GAAa,KAATjL,EACF,KAAM,IAAIjG,OAAM,yBAGlB,IAAI2Q,KACA1K,KAAS7J,MAAK+T,eAChBQ,EAAcA,EAAYQ,OAAO/U,KAAK+T,aAAalK,KAEjD,KAAO7J,MAAK+T,eACdQ,EAAcA,EAAYQ,OAAO/U,KAAK+T,aAAa,MAGrD,KAAK,GAAIjO,GAAI,EAAGA,EAAIyO,EAAYtO,OAAQH,IAAK,CAC3C,GAAIkP,GAAaT,EAAYzO,EACzBkP,GAAWnM,UACbmM,EAAWnM,SAASgB,EAAOgL,EAAQC,GAAY,QAYrDjU,EAAQqT,UAAUF,IAAM,SAAUP,EAAMqB,GACtC,GACIzU,GADA4U,KAEAC,EAAKlV,IAET,IAAIuG,MAAMC,QAAQiN,GAEhB,IAAK,GAAI3N,GAAI,EAAGC,EAAM0N,EAAKxN,OAAYF,EAAJD,EAASA,IAC1CzF,EAAK6U,EAAGC,SAAS1B,EAAK3N,IACtBmP,EAAS1M,KAAKlI,OAGb,IAAIM,EAAKuE,YAAYuO,GAGxB,IAAK,GADD2B,GAAUpV,KAAKqV,gBAAgB5B,GAC1B6B,EAAM,EAAGC,EAAO9B,EAAK+B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDxF,MACK2F,EAAM,EAAGC,EAAON,EAAQnP,OAAcyP,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB3F,GAAKP,GAASkE,EAAKkC,SAASL,EAAKG,GAGnCpV,EAAK6U,EAAGC,SAASrF,GACjBmF,EAAS1M,KAAKlI,OAGb,CAAA,KAAIoT,YAAgB7M,SAMvB,KAAM,IAAIhD,OAAM,mBAJhBvD,GAAK6U,EAAGC,SAAS1B,GACjBwB,EAAS1M,KAAKlI,GAUhB,MAJI4U,GAAShP,QACXjG,KAAK4U,SAAS,OAAQ3S,MAAOgT,GAAWH,GAGnCG,GASTpU,EAAQqT,UAAU0B,OAAS,SAAUnC,EAAMqB,GACzC,GAAIG,MACAY,KACAC,KACAZ,EAAKlV,KACL6T,EAAUqB,EAAGtB,SAEbmC,EAAc,SAAUjG,GAC1B,GAAIzP,GAAKyP,EAAK+D,EACVqB,GAAGvB,MAAMtT,IAEXA,EAAK6U,EAAGc,YAAYlG,GACpB+F,EAAWtN,KAAKlI,GAChByV,EAAYvN,KAAKuH,KAIjBzP,EAAK6U,EAAGC,SAASrF,GACjBmF,EAAS1M,KAAKlI,IAIlB,IAAIkG,MAAMC,QAAQiN,GAEhB,IAAK,GAAI3N,GAAI,EAAGC,EAAM0N,EAAKxN,OAAYF,EAAJD,EAASA,IAC1CiQ,EAAYtC,EAAK3N,QAGhB,IAAInF,EAAKuE,YAAYuO,GAGxB,IAAK,GADD2B,GAAUpV,KAAKqV,gBAAgB5B,GAC1B6B,EAAM,EAAGC,EAAO9B,EAAK+B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDxF,MACK2F,EAAM,EAAGC,EAAON,EAAQnP,OAAcyP,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB3F,GAAKP,GAASkE,EAAKkC,SAASL,EAAKG,GAGnCM,EAAYjG,OAGX,CAAA,KAAI2D,YAAgB7M,SAKvB,KAAM,IAAIhD,OAAM,mBAHhBmS,GAAYtC,GAad,MAPIwB,GAAShP,QACXjG,KAAK4U,SAAS,OAAQ3S,MAAOgT,GAAWH,GAEtCe,EAAW5P,QACbjG,KAAK4U,SAAS,UAAW3S,MAAO4T,EAAYpC,KAAMqC,GAAchB,GAG3DG,EAASF,OAAOc,IAsCzBhV,EAAQqT,UAAU+B,IAAM,SAAUC,GAChC,GAGI7V,GAAI8V,EAAKjH,EAASuE,EAHlByB,EAAKlV,KAILoW,EAAYzV,EAAK6G,QAAQxB,UAAU,GACtB,WAAboQ,GAAsC,UAAbA,GAE3B/V,EAAK2F,UAAU,GACfkJ,EAAUlJ,UAAU,GACpByN,EAAOzN,UAAU,IAEG,SAAboQ,GAEPD,EAAMnQ,UAAU,GAChBkJ,EAAUlJ,UAAU,GACpByN,EAAOzN,UAAU,KAIjBkJ,EAAUlJ,UAAU,GACpByN,EAAOzN,UAAU,GAInB,IAAIqQ,EACJ,IAAInH,GAAWA,EAAQmH,WAAY,CACjC,GAAIC,IAAiB,YAAa,QAAS,SAG3C,IAFAD,EAA0D,IAA7CC,EAActP,QAAQkI,EAAQmH,YAAoB,QAAUnH,EAAQmH,WAE7E5C,GAAS4C,GAAc1V,EAAK6G,QAAQiM,GACtC,KAAM,IAAI7P,OAAM,6BAA+BjD,EAAK6G,QAAQiM,GAAQ,sDACVvE,EAAQ/H,KAAO,IAE3E,IAAkB,aAAdkP,IAA8B1V,EAAKuE,YAAYuO,GACjD,KAAM,IAAI7P,OAAM,6EAKlByS,GADO5C,GAC6B,aAAtB9S,EAAK6G,QAAQiM,GAAwB,YAGtC,OAIf,IAEgB3D,GAAMyG,EAAQzQ,EAAGC,EAF7BoB,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChDuN,EAASxF,GAAWA,EAAQwF,OAC5BzS,IAGJ,IAAU4E,QAANxG,EAEFyP,EAAOoF,EAAGsB,SAASnW,EAAI8G,GACnBuN,IAAWA,EAAO5E,KACpBA,EAAO,UAGN,IAAWjJ,QAAPsP,EAEP,IAAKrQ,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCgK,EAAOoF,EAAGsB,SAASL,EAAIrQ,GAAIqB,KACtBuN,GAAUA,EAAO5E,KACpB7N,EAAMsG,KAAKuH,OAMf,KAAKyG,IAAUvW,MAAK2T,MACd3T,KAAK2T,MAAMvN,eAAemQ,KAC5BzG,EAAOoF,EAAGsB,SAASD,EAAQpP,KACtBuN,GAAUA,EAAO5E,KACpB7N,EAAMsG,KAAKuH,GAYnB,IALIZ,GAAWA,EAAQuH,OAAe5P,QAANxG,GAC9BL,KAAK0W,MAAMzU,EAAOiN,EAAQuH,OAIxBvH,GAAWA,EAAQP,OAAQ,CAC7B,GAAIA,GAASO,EAAQP,MACrB,IAAU9H,QAANxG,EACFyP,EAAO9P,KAAK2W,cAAc7G,EAAMnB,OAGhC,KAAK7I,EAAI,EAAGC,EAAM9D,EAAMgE,OAAYF,EAAJD,EAASA,IACvC7D,EAAM6D,GAAK9F,KAAK2W,cAAc1U,EAAM6D,GAAI6I,GAM9C,GAAkB,aAAd0H,EAA2B,CAC7B,GAAIjB,GAAUpV,KAAKqV,gBAAgB5B,EACnC,IAAU5M,QAANxG,EAEF6U,EAAG0B,WAAWnD,EAAM2B,EAAStF,OAI7B,KAAKhK,EAAI,EAAGA,EAAI7D,EAAMgE,OAAQH,IAC5BoP,EAAG0B,WAAWnD,EAAM2B,EAASnT,EAAM6D,GAGvC,OAAO2N,GAEJ,GAAkB,UAAd4C,EAAwB,CAC/B,GAAIjL,KACJ,KAAKtF,EAAI,EAAGA,EAAI7D,EAAMgE,OAAQH,IAC5BsF,EAAOnJ,EAAM6D,GAAGzF,IAAM4B,EAAM6D,EAE9B,OAAOsF,GAIP,GAAUvE,QAANxG,EAEF,MAAOyP,EAIP,IAAI2D,EAAM,CAER,IAAK3N,EAAI,EAAGC,EAAM9D,EAAMgE,OAAYF,EAAJD,EAASA,IACvC2N,EAAKlL,KAAKtG,EAAM6D,GAElB,OAAO2N,GAIP,MAAOxR,IAcfpB,EAAQqT,UAAU2C,OAAS,SAAU3H,GACnC,GAIIpJ,GACAC,EACA1F,EACAyP,EACA7N,EARAwR,EAAOzT,KAAK2T,MACZe,EAASxF,GAAWA,EAAQwF,OAC5B+B,EAAQvH,GAAWA,EAAQuH,MAC3BtP,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAMhDgP,IAEJ,IAAIzB,EAEF,GAAI+B,EAAO,CAETxU,IACA,KAAK5B,IAAMoT,GACLA,EAAKrN,eAAe/F,KACtByP,EAAO9P,KAAKwW,SAASnW,EAAI8G,GACrBuN,EAAO5E,IACT7N,EAAMsG,KAAKuH,GAOjB,KAFA9P,KAAK0W,MAAMzU,EAAOwU,GAEb3Q,EAAI,EAAGC,EAAM9D,EAAMgE,OAAYF,EAAJD,EAASA,IACvCqQ,EAAIrQ,GAAK7D,EAAM6D,GAAG9F,KAAK4T,cAKzB,KAAKvT,IAAMoT,GACLA,EAAKrN,eAAe/F,KACtByP,EAAO9P,KAAKwW,SAASnW,EAAI8G,GACrBuN,EAAO5E,IACTqG,EAAI5N,KAAKuH,EAAK9P,KAAK4T,gBAQ3B,IAAI6C,EAAO,CAETxU,IACA,KAAK5B,IAAMoT,GACLA,EAAKrN,eAAe/F,IACtB4B,EAAMsG,KAAKkL,EAAKpT,GAMpB,KAFAL,KAAK0W,MAAMzU,EAAOwU,GAEb3Q,EAAI,EAAGC,EAAM9D,EAAMgE,OAAYF,EAAJD,EAASA,IACvCqQ,EAAIrQ,GAAK7D,EAAM6D,GAAG9F,KAAK4T,cAKzB,KAAKvT,IAAMoT,GACLA,EAAKrN,eAAe/F,KACtByP,EAAO2D,EAAKpT,GACZ8V,EAAI5N,KAAKuH,EAAK9P,KAAK4T,WAM3B,OAAOuC,IAOTtV,EAAQqT,UAAU4C,WAAa,WAC7B,MAAO9W,OAaTa,EAAQqT,UAAUtL,QAAU,SAAUC,EAAUqG,GAC9C,GAGIY,GACAzP,EAJAqU,EAASxF,GAAWA,EAAQwF,OAC5BvN,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChDsM,EAAOzT,KAAK2T,KAIhB,IAAIzE,GAAWA,EAAQuH,MAIrB,IAAK,GAFDxU,GAAQjC,KAAKiW,IAAI/G,GAEZpJ,EAAI,EAAGC,EAAM9D,EAAMgE,OAAYF,EAAJD,EAASA,IAC3CgK,EAAO7N,EAAM6D,GACbzF,EAAKyP,EAAK9P,KAAK4T,UACf/K,EAASiH,EAAMzP,OAKjB,KAAKA,IAAMoT,GACLA,EAAKrN,eAAe/F,KACtByP,EAAO9P,KAAKwW,SAASnW,EAAI8G,KACpBuN,GAAUA,EAAO5E,KACpBjH,EAASiH,EAAMzP,KAkBzBQ,EAAQqT,UAAUpG,IAAM,SAAUjF,EAAUqG,GAC1C,GAIIY,GAJA4E,EAASxF,GAAWA,EAAQwF,OAC5BvN,EAAO+H,GAAWA,EAAQ/H,MAAQnH,KAAK0T,SAASvM,KAChD4P,KACAtD,EAAOzT,KAAK2T,KAIhB,KAAK,GAAItT,KAAMoT,GACTA,EAAKrN,eAAe/F,KACtByP,EAAO9P,KAAKwW,SAASnW,EAAI8G,KACpBuN,GAAUA,EAAO5E,KACpBiH,EAAYxO,KAAKM,EAASiH,EAAMzP,IAUtC,OAJI6O,IAAWA,EAAQuH,OACrBzW,KAAK0W,MAAMK,EAAa7H,EAAQuH,OAG3BM,GAUTlW,EAAQqT,UAAUyC,cAAgB,SAAU7G,EAAMnB,GAChD,IAAKmB,EACH,MAAOA,EAGT,IAAIkH,KAEJ,IAAGzQ,MAAMC,QAAQmI,GACf,IAAK,GAAIY,KAASO,GACZA,EAAK1J,eAAemJ,IAAoC,IAAzBZ,EAAO3H,QAAQuI,KAChDyH,EAAazH,GAASO,EAAKP,QAI/B,KAAK,GAAIA,KAASO,GACZA,EAAK1J,eAAemJ,IAAUZ,EAAOvI,eAAemJ,KACtDyH,EAAarI,EAAOY,IAAUO,EAAKP,GAKzC,OAAOyH,IASTnW,EAAQqT,UAAUwC,MAAQ,SAAUzU,EAAOwU,GACzC,GAAI9V,EAAK8D,SAASgS,GAAQ,CAExB,GAAIQ,GAAOR,CACXxU,GAAMiV,KAAK,SAAUtR,EAAGC,GACtB,GAAIsR,GAAKvR,EAAEqR,GACPG,EAAKvR,EAAEoR,EACX,OAAQE,GAAKC,EAAM,EAAWA,EAALD,EAAW,GAAK,QAGxC,CAAA,GAAqB,kBAAVV,GAOd,KAAM,IAAI/P,WAAU,uCALpBzE,GAAMiV,KAAKT,KAgBf5V,EAAQqT,UAAUmD,OAAS,SAAUhX,EAAIyU,GACvC,GACIhP,GAAGC,EAAKuR,EADRC,IAGJ,IAAIhR,MAAMC,QAAQnG,GAChB,IAAKyF,EAAI,EAAGC,EAAM1F,EAAG4F,OAAYF,EAAJD,EAASA,IACpCwR,EAAYtX,KAAKwX,QAAQnX,EAAGyF,IACX,MAAbwR,GACFC,EAAWhP,KAAK+O,OAKpBA,GAAYtX,KAAKwX,QAAQnX,GACR,MAAbiX,GACFC,EAAWhP,KAAK+O,EAQpB,OAJIC,GAAWtR,QACbjG,KAAK4U,SAAS,UAAW3S,MAAOsV,GAAazC,GAGxCyC,GAST1W,EAAQqT,UAAUsD,QAAU,SAAUnX,GACpC,GAAIM,EAAKoD,SAAS1D,IAAOM,EAAK8D,SAASpE,IACrC,GAAIL,KAAK2T,MAAMtT,GAGb,aAFOL,MAAK2T,MAAMtT,GAClBL,KAAKiG,SACE5F,MAGN,IAAIA,YAAcuG,QAAQ,CAC7B,GAAI2P,GAASlW,EAAGL,KAAK4T,SACrB,IAAI2C,GAAUvW,KAAK2T,MAAM4C,GAGvB,aAFOvW,MAAK2T,MAAM4C,GAClBvW,KAAKiG,SACEsQ,EAGX,MAAO,OAQT1V,EAAQqT,UAAUuD,MAAQ,SAAU3C,GAClC,GAAIqB,GAAMvP,OAAOiH,KAAK7N,KAAK2T,MAO3B,OALA3T,MAAK2T,SACL3T,KAAKiG,OAAS,EAEdjG,KAAK4U,SAAS,UAAW3S,MAAOkU,GAAMrB,GAE/BqB,GAQTtV,EAAQqT,UAAU9P,IAAM,SAAUmL,GAChC,GAAIkE,GAAOzT,KAAK2T,MACZvP,EAAM,KACNsT,EAAW,IAEf,KAAK,GAAIrX,KAAMoT,GACb,GAAIA,EAAKrN,eAAe/F,GAAK,CAC3B,GAAIyP,GAAO2D,EAAKpT,GACZsX,EAAY7H,EAAKP,EACJ,OAAboI,KAAuBvT,GAAOuT,EAAYD,KAC5CtT,EAAM0L,EACN4H,EAAWC,GAKjB,MAAOvT,IAQTvD,EAAQqT,UAAU/P,IAAM,SAAUoL,GAChC,GAAIkE,GAAOzT,KAAK2T,MACZxP,EAAM,KACNyT,EAAW,IAEf,KAAK,GAAIvX,KAAMoT,GACb,GAAIA,EAAKrN,eAAe/F,GAAK,CAC3B,GAAIyP,GAAO2D,EAAKpT,GACZsX,EAAY7H,EAAKP,EACJ,OAAboI,KAAuBxT,GAAmByT,EAAZD,KAChCxT,EAAM2L,EACN8H,EAAWD,GAKjB,MAAOxT,IAUTtD,EAAQqT,UAAU2D,SAAW,SAAUtI,GACrC,GAIIzJ,GAJA2N,EAAOzT,KAAK2T,MACZmE,KACAC,EAAY/X,KAAK0T,SAASvM,MAAQnH,KAAK0T,SAASvM,KAAKoI,IAAU,KAC/DyI,EAAQ,CAGZ,KAAK,GAAI7R,KAAQsN,GACf,GAAIA,EAAKrN,eAAeD,GAAO,CAC7B,GAAI2J,GAAO2D,EAAKtN,GACZ7B,EAAQwL,EAAKP,GACb0I,GAAS,CACb,KAAKnS,EAAI,EAAOkS,EAAJlS,EAAWA,IACrB,GAAIgS,EAAOhS,IAAMxB,EAAO,CACtB2T,GAAS,CACT,OAGCA,GAAqBpR,SAAVvC,IACdwT,EAAOE,GAAS1T,EAChB0T,KAKN,GAAID,EACF,IAAKjS,EAAI,EAAGA,EAAIgS,EAAO7R,OAAQH,IAC7BgS,EAAOhS,GAAKnF,EAAKuG,QAAQ4Q,EAAOhS,GAAIiS,EAIxC,OAAOD,IASTjX,EAAQqT,UAAUiB,SAAW,SAAUrF,GACrC,GAAIzP,GAAKyP,EAAK9P,KAAK4T,SAEnB,IAAU/M,QAANxG,GAEF,GAAIL,KAAK2T,MAAMtT,GAEb,KAAM,IAAIuD,OAAM,iCAAmCvD,EAAK,uBAK1DA,GAAKM,EAAK2E,aACVwK,EAAK9P,KAAK4T,UAAYvT,CAGxB,IAAI+M,KACJ,KAAK,GAAImC,KAASO,GAChB,GAAIA,EAAK1J,eAAemJ,GAAQ,CAC9B,GAAIwI,GAAY/X,KAAK8T,MAAMvE,EAC3BnC,GAAEmC,GAAS5O,EAAKuG,QAAQ4I,EAAKP,GAAQwI,GAMzC,MAHA/X,MAAK2T,MAAMtT,GAAM+M,EACjBpN,KAAKiG,SAEE5F,GAUTQ,EAAQqT,UAAUsC,SAAW,SAAUnW,EAAI6X,GACzC,GAAI3I,GAAOjL,EAGP6T,EAAMnY,KAAK2T,MAAMtT,EACrB,KAAK8X,EACH,MAAO,KAIT,IAAIC,KACJ,IAAIF,EACF,IAAK3I,IAAS4I,GACRA,EAAI/R,eAAemJ,KACrBjL,EAAQ6T,EAAI5I,GACZ6I,EAAU7I,GAAS5O,EAAKuG,QAAQ5C,EAAO4T,EAAM3I,SAMjD,KAAKA,IAAS4I,GACRA,EAAI/R,eAAemJ,KACrBjL,EAAQ6T,EAAI5I,GACZ6I,EAAU7I,GAASjL,EAIzB,OAAO8T,IAWTvX,EAAQqT,UAAU8B,YAAc,SAAUlG,GACxC,GAAIzP,GAAKyP,EAAK9P,KAAK4T,SACnB,IAAU/M,QAANxG,EACF,KAAM,IAAIuD,OAAM,6CAA+CyU,KAAKC,UAAUxI,GAAQ,IAExF,IAAI1C,GAAIpN,KAAK2T,MAAMtT,EACnB,KAAK+M,EAEH,KAAM,IAAIxJ,OAAM,uCAAyCvD,EAAK,SAIhE,KAAK,GAAIkP,KAASO,GAChB,GAAIA,EAAK1J,eAAemJ,GAAQ,CAC9B,GAAIwI,GAAY/X,KAAK8T,MAAMvE,EAC3BnC,GAAEmC,GAAS5O,EAAKuG,QAAQ4I,EAAKP,GAAQwI,GAIzC,MAAO1X,IASTQ,EAAQqT,UAAUmB,gBAAkB,SAAUkD,GAE5C,IAAK,GADDnD,MACKK,EAAM,EAAGC,EAAO6C,EAAUC,qBAA4B9C,EAAND,EAAYA,IACnEL,EAAQK,GAAO8C,EAAUE,YAAYhD,IAAQ8C,EAAUG,eAAejD,EAExE,OAAOL,IAUTvU,EAAQqT,UAAU0C,WAAa,SAAU2B,EAAWnD,EAAStF,GAG3D,IAAK,GAFDwF,GAAMiD,EAAUI,SAEXlD,EAAM,EAAGC,EAAON,EAAQnP,OAAcyP,EAAND,EAAYA,IAAO,CAC1D,GAAIlG,GAAQ6F,EAAQK,EACpB8C,GAAUK,SAAStD,EAAKG,EAAK3F,EAAKP,MAItC1P,EAAOD,QAAUiB,GAKb,SAAShB,EAAQD,EAASM,GAe9B,QAASY,GAAU2S,EAAMvE,GACvBlP,KAAK2T,MAAQ,KACb3T,KAAK6Y,QACL7Y,KAAKiG,OAAS,EACdjG,KAAK0T,SAAWxE,MAChBlP,KAAK4T,SAAW,KAChB5T,KAAK+T,eAEL,IAAImB,GAAKlV,IACTA,MAAKqJ,SAAW,WACd6L,EAAG4D,SAASC,MAAM7D,EAAIlP,YAGxBhG,KAAKgZ,QAAQvF,GA1Bf,GAAI9S,GAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,EAmClCY,GAASoT,UAAU8E,QAAU,SAAUvF,GACrC,GAAI0C,GAAKrQ,EAAGC,CAEZ,IAAI/F,KAAK2T,MAAO,CAEV3T,KAAK2T,MAAMgB,aACb3U,KAAK2T,MAAMgB,YAAY,IAAK3U,KAAKqJ,UAInC8M,IACA,KAAK,GAAI9V,KAAML,MAAK6Y,KACd7Y,KAAK6Y,KAAKzS,eAAe/F,IAC3B8V,EAAI5N,KAAKlI,EAGbL,MAAK6Y,QACL7Y,KAAKiG,OAAS,EACdjG,KAAK4U,SAAS,UAAW3S,MAAOkU,IAKlC,GAFAnW,KAAK2T,MAAQF,EAETzT,KAAK2T,MAAO,CAQd,IANA3T,KAAK4T,SAAW5T,KAAK0T,SAASG,SACzB7T,KAAK2T,OAAS3T,KAAK2T,MAAMzE,SAAWlP,KAAK2T,MAAMzE,QAAQ2E,SACxD,KAGJsC,EAAMnW,KAAK2T,MAAMkD,QAAQnC,OAAQ1U,KAAK0T,UAAY1T,KAAK0T,SAASgB,SAC3D5O,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCzF,EAAK8V,EAAIrQ,GACT9F,KAAK6Y,KAAKxY,IAAM,CAElBL,MAAKiG,OAASkQ,EAAIlQ,OAClBjG,KAAK4U,SAAS,OAAQ3S,MAAOkU,IAGzBnW,KAAK2T,MAAMW,IACbtU,KAAK2T,MAAMW,GAAG,IAAKtU,KAAKqJ,YAS9BvI,EAASoT,UAAU+E,QAAU,WAQ3B,IAAK,GAPD5Y,GACA8V,EAAMnW,KAAK2T,MAAMkD,QAAQnC,OAAQ1U,KAAK0T,UAAY1T,KAAK0T,SAASgB,SAChEwE,KACAC,KACAC,KAGKtT,EAAI,EAAGA,EAAIqQ,EAAIlQ,OAAQH,IAC9BzF,EAAK8V,EAAIrQ,GACToT,EAAO7Y,IAAM,EACRL,KAAK6Y,KAAKxY,KACb8Y,EAAM5Q,KAAKlI,GACXL,KAAK6Y,KAAKxY,IAAM,EAChBL,KAAKiG,SAKT,KAAK5F,IAAML,MAAK6Y,KACV7Y,KAAK6Y,KAAKzS,eAAe/F,KACtB6Y,EAAO7Y,KACV+Y,EAAQ7Q,KAAKlI,SACNL,MAAK6Y,KAAKxY,GACjBL,KAAKiG,UAMPkT,GAAMlT,QACRjG,KAAK4U,SAAS,OAAQ3S,MAAOkX,IAE3BC,EAAQnT,QACVjG,KAAK4U,SAAS,UAAW3S,MAAOmX,KAsCpCtY,EAASoT,UAAU+B,IAAM,SAAUC,GACjC,GAGIC,GAAKjH,EAASuE,EAHdyB,EAAKlV,KAILoW,EAAYzV,EAAK6G,QAAQxB,UAAU,GACtB,WAAboQ,GAAsC,UAAbA,GAAsC,SAAbA,GAEpDD,EAAMnQ,UAAU,GAChBkJ,EAAUlJ,UAAU,GACpByN,EAAOzN,UAAU,KAIjBkJ,EAAUlJ,UAAU,GACpByN,EAAOzN,UAAU,GAInB,IAAIqT,GAAc1Y,EAAKgF,UAAW3F,KAAK0T,SAAUxE,EAG7ClP,MAAK0T,SAASgB,QAAUxF,GAAWA,EAAQwF,SAC7C2E,EAAY3E,OAAS,SAAU5E,GAC7B,MAAOoF,GAAGxB,SAASgB,OAAO5E,IAASZ,EAAQwF,OAAO5E,IAKtD,IAAIwJ,KAOJ,OANWzS,SAAPsP,GACFmD,EAAa/Q,KAAK4N,GAEpBmD,EAAa/Q,KAAK8Q,GAClBC,EAAa/Q,KAAKkL,GAEXzT,KAAK2T,OAAS3T,KAAK2T,MAAMsC,IAAI8C,MAAM/Y,KAAK2T,MAAO2F,IAWxDxY,EAASoT,UAAU2C,OAAS,SAAU3H,GACpC,GAAIiH,EAEJ,IAAInW,KAAK2T,MAAO,CACd,GACIe,GADA6E,EAAgBvZ,KAAK0T,SAASgB,MAK9BA,GAFAxF,GAAWA,EAAQwF,OACjB6E,EACO,SAAUzJ,GACjB,MAAOyJ,GAAczJ,IAASZ,EAAQwF,OAAO5E,IAItCZ,EAAQwF,OAIV6E,EAGXpD,EAAMnW,KAAK2T,MAAMkD,QACfnC,OAAQA,EACR+B,MAAOvH,GAAWA,EAAQuH,YAI5BN,KAGF,OAAOA,IAQTrV,EAASoT,UAAU4C,WAAa,WAE9B,IADA,GAAI0C,GAAUxZ,KACPwZ,YAAmB1Y,IACxB0Y,EAAUA,EAAQ7F,KAEpB,OAAO6F,IAAW,MAYpB1Y,EAASoT,UAAU4E,SAAW,SAAUjP,EAAOgL,EAAQC,GACrD,GAAIhP,GAAGC,EAAK1F,EAAIyP,EACZqG,EAAMtB,GAAUA,EAAO5S,MACvBwR,EAAOzT,KAAK2T,MACZmC,KACAqD,KACAM,KACAL,IAEJ,IAAIjD,GAAO1C,EAAM,CACf,OAAQ5J,GACN,IAAK,MAEH,IAAK/D,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCzF,EAAK8V,EAAIrQ,GACTgK,EAAO9P,KAAKiW,IAAI5V,GACZyP,IACF9P,KAAK6Y,KAAKxY,IAAM,EAChB8Y,EAAM5Q,KAAKlI,GAIf,MAEF,KAAK,SAGH,IAAKyF,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCzF,EAAK8V,EAAIrQ,GACTgK,EAAO9P,KAAKiW,IAAI5V,GAEZyP,EACE9P,KAAK6Y,KAAKxY,IACZoZ,EAAQlR,KAAKlI,GACbyV,EAAYvN,KAAKsM,EAAOpB,KAAK3N,MAG7B9F,KAAK6Y,KAAKxY,IAAM,EAChB8Y,EAAM5Q,KAAKlI,IAITL,KAAK6Y,KAAKxY,WACLL,MAAK6Y,KAAKxY,GACjB+Y,EAAQ7Q,KAAKlI,GAQnB,MAEF,KAAK,SAEH,IAAKyF,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACrCzF,EAAK8V,EAAIrQ,GACL9F,KAAK6Y,KAAKxY,WACLL,MAAK6Y,KAAKxY,GACjB+Y,EAAQ7Q,KAAKlI,IAOrBL,KAAKiG,QAAUkT,EAAMlT,OAASmT,EAAQnT,OAElCkT,EAAMlT,QACRjG,KAAK4U,SAAS,OAAQ3S,MAAOkX,GAAQrE,GAEnC2E,EAAQxT,QACVjG,KAAK4U,SAAS,UAAW3S,MAAOwX,EAAShG,KAAMqC,GAAchB,GAE3DsE,EAAQnT,QACVjG,KAAK4U,SAAS,UAAW3S,MAAOmX,GAAUtE,KAMhDhU,EAASoT,UAAUI,GAAKzT,EAAQqT,UAAUI,GAC1CxT,EAASoT,UAAUO,IAAM5T,EAAQqT,UAAUO,IAC3C3T,EAASoT,UAAUU,SAAW/T,EAAQqT,UAAUU,SAGhD9T,EAASoT,UAAUM,UAAY1T,EAASoT,UAAUI,GAClDxT,EAASoT,UAAUS,YAAc7T,EAASoT,UAAUO,IAEpD5U,EAAOD,QAAUkB,GAIb,SAASjB,EAAQD,EAASM,GAe9B,QAASa,GAAMmO,GAEblP,KAAK0Z,MAAQ,KACb1Z,KAAKoE,IAAMuV,EAAAA,EAGX3Z,KAAKoU,UACLpU,KAAK4Z,SAAW,KAChB5Z,KAAK6Z,UAAY,KAEjB7Z,KAAKiU,WAAW/E,GAgBlBnO,EAAMmT,UAAUD,WAAa,SAAU/E,GACjCA,GAAoC,mBAAlBA,GAAQwK,QAC5B1Z,KAAK0Z,MAAQxK,EAAQwK,OAEnBxK,GAAkC,mBAAhBA,GAAQ9K,MAC5BpE,KAAKoE,IAAM8K,EAAQ9K,KAGrBpE,KAAK8Z,kBAsBP/Y,EAAM4E,OAAS,SAAU3B,EAAQkL,GAC/B,GAAIiF,GAAQ,GAAIpT,GAAMmO,EAEtB,IAAqBrI,SAAjB7C,EAAO+V,MACT,KAAM,IAAInW,OAAM,6CAElBI,GAAO+V,MAAQ,WACb5F,EAAM4F,QAGR,IAAIC,KACF/C,KAAM,QACNgD,SAAUpT,QAGZ,IAAIqI,GAAWA,EAAQjE,QACrB,IAAK,GAAInF,GAAI,EAAGA,EAAIoJ,EAAQjE,QAAQhF,OAAQH,IAAK,CAC/C,GAAImR,GAAO/H,EAAQjE,QAAQnF,EAC3BkU,GAAQzR,MACN0O,KAAMA,EACNgD,SAAUjW,EAAOiT,KAEnB9C,EAAMlJ,QAAQjH,EAAQiT,GAS1B,MALA9C,GAAM0F,WACJ7V,OAAQA,EACRgW,QAASA,GAGJ7F,GAOTpT,EAAMmT,UAAUG,QAAU,WAGxB,GAFArU,KAAK+Z,QAED/Z,KAAK6Z,UAAW,CAGlB,IAAK,GAFD7V,GAAShE,KAAK6Z,UAAU7V,OACxBgW,EAAUha,KAAK6Z,UAAUG,QACpBlU,EAAI,EAAGA,EAAIkU,EAAQ/T,OAAQH,IAAK,CACvC,GAAIoU,GAASF,EAAQlU,EACjBoU,GAAOD,SACTjW,EAAOkW,EAAOjD,MAAQiD,EAAOD,eAGtBjW,GAAOkW,EAAOjD,MAGzBjX,KAAK6Z,UAAY,OASrB9Y,EAAMmT,UAAUjJ,QAAU,SAASjH,EAAQkW,GACzC,GAAIhF,GAAKlV,KACLia,EAAWjW,EAAOkW,EACtB,KAAKD,EACH,KAAM,IAAIrW,OAAM,UAAYsW,EAAS,aAGvClW,GAAOkW,GAAU,WAGf,IAAK,GADDhE,MACKpQ,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IACpCoQ,EAAKpQ,GAAKE,UAAUF,EAItBoP,GAAGf,OACD+B,KAAMA,EACNiE,GAAIF,EACJG,QAASpa,SASfe,EAAMmT,UAAUC,MAAQ,SAASkG,GAE7Bra,KAAKoU,OAAO7L,KADO,kBAAV8R,IACSF,GAAIE,GAGLA,GAGnBra,KAAK8Z,kBAOP/Y,EAAMmT,UAAU4F,eAAiB,WAQ/B,GANI9Z,KAAKoU,OAAOnO,OAASjG,KAAKoE,KAC5BpE,KAAK+Z,QAIPO,aAAata,KAAK4Z,UACd5Z,KAAKmU,MAAMlO,OAAS,GAA2B,gBAAfjG,MAAK0Z,MAAoB,CAC3D,GAAIxE,GAAKlV,IACTA,MAAK4Z,SAAWW,WAAW,WACzBrF,EAAG6E,SACF/Z,KAAK0Z,SAOZ3Y,EAAMmT,UAAU6F,MAAQ,WACtB,KAAO/Z,KAAKoU,OAAOnO,OAAS,GAAG,CAC7B,GAAIoU,GAAQra,KAAKoU,OAAOrC,OACxBsI,GAAMF,GAAGpB,MAAMsB,EAAMD,SAAWC,EAAMF,GAAIE,EAAMnE,YAIpDrW,EAAOD,QAAUmB,GAKb,SAASlB,EAAQD,EAASM,GAwB9B,QAASc,GAAQwZ,EAAW/G,EAAMvE,GAChC,KAAMlP,eAAgBgB,IACpB,KAAM,IAAIyZ,aAAY,mDAIxBza,MAAK0a,iBAAmBF,EACxBxa,KAAKsT,MAAQ,QACbtT,KAAKuT,OAAS,QACdvT,KAAK2a,OAAS,GACd3a,KAAK4a,eAAiB,MACtB5a,KAAK6a,eAAiB,MAEtB7a,KAAK8a,OAAS,IACd9a,KAAK+a,OAAS,IACd/a,KAAKgb,OAAS,GAEd,IAAIC,GAAc,SAASzO,GAAK,MAAOA,GACvCxM,MAAKkb,YAAcD,EACnBjb,KAAKmb,YAAcF,EACnBjb,KAAKob,YAAcH,EAEnBjb,KAAKqb,YAAc,OACnBrb,KAAKsb,YAAc,QAEnBtb,KAAK0N,MAAQ1M,EAAQua,MAAMC,IAC3Bxb,KAAKyb,iBAAkB,EACvBzb,KAAK0b,UAAW,EAChB1b,KAAK2b,iBAAkB,EACvB3b,KAAK4b,YAAa,EAClB5b,KAAK6b,gBAAiB,EACtB7b,KAAK8b,aAAc,EACnB9b,KAAK+b,cAAgB,GAErB/b,KAAKgc,kBAAoB,IACzBhc,KAAKic,kBAAmB,EAExBjc,KAAKkc,OAAS,GAAIhb,GAClBlB,KAAKmc,IAAM,GAAI9a,GAAQ,EAAG,EAAG,IAE7BrB,KAAKuY,UAAY,KACjBvY,KAAKoc,WAAa,KAGlBpc,KAAKqc,KAAOxV,OACZ7G,KAAKsc,KAAOzV,OACZ7G,KAAKuc,KAAO1V,OACZ7G,KAAKwc,SAAW3V,OAChB7G,KAAKyc,UAAY5V,OAEjB7G,KAAK0c,KAAO,EACZ1c,KAAK2c,MAAQ9V,OACb7G,KAAK4c,KAAO,EACZ5c,KAAK6c,KAAO,EACZ7c,KAAK8c,MAAQjW,OACb7G,KAAK+c,KAAO,EACZ/c,KAAKgd,KAAO,EACZhd,KAAKid,MAAQpW,OACb7G,KAAKkd,KAAO,EACZld,KAAKmd,SAAW,EAChBnd,KAAKod,SAAW,EAChBpd,KAAKqd,UAAY,EACjBrd,KAAKsd,UAAY,EAIjBtd,KAAKud,UAAY,UACjBvd,KAAKwd,UAAY,UACjBxd,KAAKyd,SAAW,UAChBzd,KAAK0d,eAAiB,UAGtB1d,KAAK8O,SAGL9O,KAAKiU,WAAW/E,GAGZuE,GACFzT,KAAKgZ,QAAQvF,GAknEjB,QAASkK,GAAW9T,GAClB,MAAI,WAAaA,GAAcA,EAAM+T,QAC9B/T,EAAMgU,cAAc,IAAMhU,EAAMgU,cAAc,GAAGD,SAAW,EAQrE,QAASE,GAAWjU,GAClB,MAAI,WAAaA,GAAcA,EAAMkU,QAC9BlU,EAAMgU,cAAc,IAAMhU,EAAMgU,cAAc,GAAGE,SAAW,EAnuErE,GAAIC,GAAU9d,EAAoB,IAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BS,EAAOT,EAAoB,GAC3BmB,EAAUnB,EAAoB,IAC9BkB,EAAUlB,EAAoB,GAC9BgB,EAAShB,EAAoB,GAC7BiB,EAASjB,EAAoB,GAC7BoB,EAASpB,EAAoB,IAC7BqB,EAAarB,EAAoB,GAiGrC8d,GAAQhd,EAAQkT,WAKhBlT,EAAQkT,UAAU+J,UAAY,WAC5Bje,KAAKuE,MAAQ,GAAIlD,GAAQ,GAAKrB,KAAK4c,KAAO5c,KAAK0c,MAC7C,GAAK1c,KAAK+c,KAAO/c,KAAK6c,MACtB,GAAK7c,KAAKkd,KAAOld,KAAKgd,OAGpBhd,KAAK2b,kBACH3b,KAAKuE,MAAMiO,EAAIxS,KAAKuE,MAAMkO,EAE5BzS,KAAKuE,MAAMkO,EAAIzS,KAAKuE,MAAMiO,EAI1BxS,KAAKuE,MAAMiO,EAAIxS,KAAKuE,MAAMkO,GAK9BzS,KAAKuE,MAAM2Z,GAAKle,KAAK+b,cAIrB/b,KAAKuE,MAAMD,MAAQ,GAAKtE,KAAKod,SAAWpd,KAAKmd,SAG7C,IAAIgB,IAAWne,KAAK4c,KAAO5c,KAAK0c,MAAQ,EAAI1c,KAAKuE,MAAMiO,EACnD4L,GAAWpe,KAAK+c,KAAO/c,KAAK6c,MAAQ,EAAI7c,KAAKuE,MAAMkO,EACnD4L,GAAWre,KAAKkd,KAAOld,KAAKgd,MAAQ,EAAIhd,KAAKuE,MAAM2Z,CACvDle,MAAKkc,OAAOoC,eAAeH,EAASC,EAASC,IAU/Crd,EAAQkT,UAAUqK,eAAiB,SAASC,GAC1C,GAAIC,GAAcze,KAAK0e,2BAA2BF,EAClD,OAAOxe,MAAK2e,4BAA4BF,IAW1Czd,EAAQkT,UAAUwK,2BAA6B,SAASF,GACtD,GAAII,GAAKJ,EAAQhM,EAAIxS,KAAKuE,MAAMiO,EAC9BqM,EAAKL,EAAQ/L,EAAIzS,KAAKuE,MAAMkO,EAC5BqM,EAAKN,EAAQN,EAAIle,KAAKuE,MAAM2Z,EAE5Ba,EAAK/e,KAAKkc,OAAO8C,oBAAoBxM,EACrCyM,EAAKjf,KAAKkc,OAAO8C,oBAAoBvM,EACrCyM,EAAKlf,KAAKkc,OAAO8C,oBAAoBd,EAGrCiB,EAAQ3a,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoB7M,GACjD8M,EAAQ9a,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoB7M,GACjDgN,EAAQhb,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoB5M,GACjDgN,EAAQjb,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoB5M,GACjDiN,EAAQlb,KAAK4a,IAAIpf,KAAKkc,OAAOmD,oBAAoBnB,GACjDyB,EAAQnb,KAAK+a,IAAIvf,KAAKkc,OAAOmD,oBAAoBnB,GAGjD0B,EAAKH,GAASC,GAASb,EAAKI,GAAMU,GAASf,EAAKG,IAAOS,GAASV,EAAKI,GACrEW,EAAKV,GAASM,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQO,GAASK,GAASd,EAAKI,GAAMS,GAASd,EAAGG,IAC9He,EAAKR,GAASG,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQI,GAASQ,GAASd,EAAKI,GAAMS,GAASd,EAAGG,GAEhI,OAAO,IAAI1d,GAAQue,EAAIC,EAAIC,IAU7B9e,EAAQkT,UAAUyK,4BAA8B,SAASF,GACvD,GAQIsB,GACAC,EATAC,EAAKjgB,KAAKmc,IAAI3J,EAChB0N,EAAKlgB,KAAKmc,IAAI1J,EACd0N,EAAKngB,KAAKmc,IAAI+B,EACd0B,EAAKnB,EAAYjM,EACjBqN,EAAKpB,EAAYhM,EACjBqN,EAAKrB,EAAYP,CAgBnB,OAXIle,MAAKyb,iBACPsE,GAAMH,EAAKK,IAAOE,EAAKL,GACvBE,GAAMH,EAAKK,IAAOC,EAAKL,KAGvBC,EAAKH,IAAOO,EAAKngB,KAAKkc,OAAOkE,gBAC7BJ,EAAKH,IAAOM,EAAKngB,KAAKkc,OAAOkE,iBAKxB,GAAIhf,GACTpB,KAAKqgB,QAAUN,EAAK/f,KAAKsgB,MAAMC,OAAOC,YACtCxgB,KAAKygB,QAAUT,EAAKhgB,KAAKsgB,MAAMC,OAAOC,cAO1Cxf,EAAQkT,UAAUwM,oBAAsB,SAASC,GAC/C,GAAIC,GAAO,QACPC,EAAS,OACTC,EAAc,CAElB,IAAgC,gBAAtB,GACRF,EAAOD,EACPE,EAAS,OACTC,EAAc,MAEX,IAAgC,gBAAtB,GACgBja,SAAzB8Z,EAAgBC,OAAuBA,EAAOD,EAAgBC,MACnC/Z,SAA3B8Z,EAAgBE,SAAyBA,EAASF,EAAgBE,QAClCha,SAAhC8Z,EAAgBG,cAA2BA,EAAcH,EAAgBG,iBAE1E,IAAyBja,SAApB8Z,EAIR,KAAM,qCAGR3gB,MAAKsgB,MAAM5S,MAAMiT,gBAAkBC,EACnC5gB,KAAKsgB,MAAM5S,MAAMqT,YAAcF,EAC/B7gB,KAAKsgB,MAAM5S,MAAMsT,YAAcF,EAAc,KAC7C9gB,KAAKsgB,MAAM5S,MAAMuT,YAAc,SAKjCjgB,EAAQua,OACN2F,IAAK,EACLC,SAAU,EACVC,QAAS,EACT5F,IAAM,EACN6F,QAAU,EACVC,SAAU,EACVC,QAAS,EACTC,KAAO,EACPC,KAAM,EACNC,QAAU,GASZ1gB,EAAQkT,UAAUyN,gBAAkB,SAASC,GAC3C,OAAQA,GACN,IAAK,MAAW,MAAO5gB,GAAQua,MAAMC,GACrC,KAAK,WAAa,MAAOxa,GAAQua,MAAM8F,OACvC,KAAK,YAAe,MAAOrgB,GAAQua,MAAM+F,QACzC,KAAK,WAAa,MAAOtgB,GAAQua,MAAMgG,OACvC,KAAK,OAAW,MAAOvgB,GAAQua,MAAMkG,IACrC,KAAK,OAAW,MAAOzgB,GAAQua,MAAMiG,IACrC,KAAK,UAAa,MAAOxgB,GAAQua,MAAMmG,OACvC,KAAK,MAAW,MAAO1gB,GAAQua,MAAM2F,GACrC,KAAK,YAAe,MAAOlgB,GAAQua,MAAM4F,QACzC,KAAK,WAAa,MAAOngB,GAAQua,MAAM6F,QAGzC,MAAO,IAQTpgB,EAAQkT,UAAU2N,wBAA0B,SAASpO,EAAM/F,GACzD,GAAI1N,KAAK0N,QAAU1M,EAAQua,MAAMC,KAC/Bxb,KAAK0N,QAAU1M,EAAQua,MAAM8F,SAC7BrhB,KAAK0N,QAAU1M,EAAQua,MAAMkG,MAC7BzhB,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC7BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,SAC7B1hB,KAAK0N,QAAU1M,EAAQua,MAAM2F,IAE7BlhB,KAAKqc,KAAO,EACZrc,KAAKsc,KAAO,EACZtc,KAAKuc,KAAO,EACZvc,KAAKwc,SAAW3V,OAEZ4M,EAAK+E,qBAAuB,IAC9BxY,KAAKyc,UAAY,OAGhB,CAAA,GAAIzc,KAAK0N,QAAU1M,EAAQua,MAAM+F,UACpCthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,SAC7BvhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAY7B,KAAM,kBAAoBphB,KAAK0N,MAAQ,GAVvC1N,MAAKqc,KAAO,EACZrc,KAAKsc,KAAO,EACZtc,KAAKuc,KAAO,EACZvc,KAAKwc,SAAW,EAEZ/I,EAAK+E,qBAAuB,IAC9BxY,KAAKyc,UAAY,KAQvBzb,EAAQkT,UAAUsB,gBAAkB,SAAS/B,GAC3C,MAAOA,GAAKxN,QAIdjF,EAAQkT,UAAUsE,mBAAqB,SAAS/E,GAC9C,GAAIqO,GAAU,CACd,KAAK,GAAIC,KAAUtO,GAAK,GAClBA,EAAK,GAAGrN,eAAe2b,IACzBD,GAGJ,OAAOA,IAIT9gB,EAAQkT,UAAU8N,kBAAoB,SAASvO,EAAMsO,GAEnD,IAAK,GADDE,MACKnc,EAAI,EAAGA,EAAI2N,EAAKxN,OAAQH,IACgB,IAA3Cmc,EAAejb,QAAQyM,EAAK3N,GAAGic,KACjCE,EAAe1Z,KAAKkL,EAAK3N,GAAGic,GAGhC,OAAOE,IAITjhB,EAAQkT,UAAUgO,eAAiB,SAASzO,EAAKsO,GAE/C,IAAK,GADDI,IAAUhe,IAAIsP,EAAK,GAAGsO,GAAQ3d,IAAIqP,EAAK,GAAGsO,IACrCjc,EAAI,EAAGA,EAAI2N,EAAKxN,OAAQH,IAC3Bqc,EAAOhe,IAAMsP,EAAK3N,GAAGic,KAAWI,EAAOhe,IAAMsP,EAAK3N,GAAGic,IACrDI,EAAO/d,IAAMqP,EAAK3N,GAAGic,KAAWI,EAAO/d,IAAMqP,EAAK3N,GAAGic,GAE3D,OAAOI,IASTnhB,EAAQkT,UAAUkO,gBAAkB,SAAUC,EAAS3U;AACrD,GAAIwH,GAAKlV,IAOT,IAJIA,KAAKwZ,SACPxZ,KAAKwZ,QAAQ/E,IAAI,IAAKzU,KAAKsiB,WAGbzb,SAAZwb,EAAJ,CAGI9b,MAAMC,QAAQ6b,KAChBA,EAAU,GAAIxhB,GAAQwhB,GAGxB,IAAI5O,EACJ,MAAI4O,YAAmBxhB,IAAWwhB,YAAmBvhB,IAInD,KAAM,IAAI8C,OAAM,uCAGlB,IANE6P,EAAO4O,EAAQpM,MAME,GAAfxC,EAAKxN,OAAT,CAGAjG,KAAKwZ,QAAU6I,EACfriB,KAAKuY,UAAY9E,EAGjBzT,KAAKsiB,UAAY,WACfpN,EAAG8D,QAAQ9D,EAAGsE,UAEhBxZ,KAAKwZ,QAAQlF,GAAG,IAAKtU,KAAKsiB,WAS1BtiB,KAAKqc,KAAO,IACZrc,KAAKsc,KAAO,IACZtc,KAAKuc,KAAO,IACZvc,KAAKwc,SAAW,QAChBxc,KAAKyc,UAAY,SAKbhJ,EAAK,GAAGrN,eAAe,WACDS,SAApB7G,KAAKuiB,aACPviB,KAAKuiB,WAAa,GAAIphB,GAAOkhB,EAASriB,KAAKyc,UAAWzc,MACtDA,KAAKuiB,WAAWC,kBAAkB,WAAYtN,EAAGuN,WAKrD,IAAIC,GAAW1iB,KAAK0N,OAAS1M,EAAQua,MAAM2F,KACzClhB,KAAK0N,OAAS1M,EAAQua,MAAM4F,UAC5BnhB,KAAK0N,OAAS1M,EAAQua,MAAM6F,OAG9B,IAAIsB,EAAU,CACZ,GAA8B7b,SAA1B7G,KAAK2iB,iBACP3iB,KAAKqd,UAAYrd,KAAK2iB,qBAEnB,CACH,GAAIC,GAAQ5iB,KAAKgiB,kBAAkBvO,EAAKzT,KAAKqc,KAC7Crc,MAAKqd,UAAauF,EAAM,GAAKA,EAAM,IAAO,EAG5C,GAA8B/b,SAA1B7G,KAAK6iB,iBACP7iB,KAAKsd,UAAYtd,KAAK6iB,qBAEnB,CACH,GAAIC,GAAQ9iB,KAAKgiB,kBAAkBvO,EAAKzT,KAAKsc,KAC7Ctc,MAAKsd,UAAawF,EAAM,GAAKA,EAAM,IAAO,GAK9C,GAAIC,GAAS/iB,KAAKkiB,eAAezO,EAAKzT,KAAKqc,KACvCqG,KACFK,EAAO5e,KAAOnE,KAAKqd,UAAY,EAC/B0F,EAAO3e,KAAOpE,KAAKqd,UAAY,GAEjCrd,KAAK0c,KAA6B7V,SAArB7G,KAAKgjB,YAA6BhjB,KAAKgjB,YAAcD,EAAO5e,IACzEnE,KAAK4c,KAA6B/V,SAArB7G,KAAKijB,YAA6BjjB,KAAKijB,YAAcF,EAAO3e,IACrEpE,KAAK4c,MAAQ5c,KAAK0c,OAAM1c,KAAK4c,KAAO5c,KAAK0c,KAAO,GACpD1c,KAAK2c,MAA+B9V,SAAtB7G,KAAKkjB,aAA8BljB,KAAKkjB,cAAgBljB,KAAK4c,KAAK5c,KAAK0c,MAAM,CAE3F,IAAIyG,GAASnjB,KAAKkiB,eAAezO,EAAKzT,KAAKsc,KACvCoG,KACFS,EAAOhf,KAAOnE,KAAKsd,UAAY,EAC/B6F,EAAO/e,KAAOpE,KAAKsd,UAAY,GAEjCtd,KAAK6c,KAA6BhW,SAArB7G,KAAKojB,YAA6BpjB,KAAKojB,YAAcD,EAAOhf,IACzEnE,KAAK+c,KAA6BlW,SAArB7G,KAAKqjB,YAA6BrjB,KAAKqjB,YAAcF,EAAO/e,IACrEpE,KAAK+c,MAAQ/c,KAAK6c,OAAM7c,KAAK+c,KAAO/c,KAAK6c,KAAO,GACpD7c,KAAK8c,MAA+BjW,SAAtB7G,KAAKsjB,aAA8BtjB,KAAKsjB,cAAgBtjB,KAAK+c,KAAK/c,KAAK6c,MAAM,CAE3F,IAAI0G,GAASvjB,KAAKkiB,eAAezO,EAAKzT,KAAKuc,KAM3C,IALAvc,KAAKgd,KAA6BnW,SAArB7G,KAAKwjB,YAA6BxjB,KAAKwjB,YAAcD,EAAOpf,IACzEnE,KAAKkd,KAA6BrW,SAArB7G,KAAKyjB,YAA6BzjB,KAAKyjB,YAAcF,EAAOnf,IACrEpE,KAAKkd,MAAQld,KAAKgd,OAAMhd,KAAKkd,KAAOld,KAAKgd,KAAO,GACpDhd,KAAKid,MAA+BpW,SAAtB7G,KAAK0jB,aAA8B1jB,KAAK0jB,cAAgB1jB,KAAKkd,KAAKld,KAAKgd,MAAM,EAErEnW,SAAlB7G,KAAKwc,SAAwB,CAC/B,GAAImH,GAAa3jB,KAAKkiB,eAAezO,EAAKzT,KAAKwc,SAC/Cxc,MAAKmd,SAAqCtW,SAAzB7G,KAAK4jB,gBAAiC5jB,KAAK4jB,gBAAkBD,EAAWxf,IACzFnE,KAAKod,SAAqCvW,SAAzB7G,KAAK6jB,gBAAiC7jB,KAAK6jB,gBAAkBF,EAAWvf,IACrFpE,KAAKod,UAAYpd,KAAKmd,WAAUnd,KAAKod,SAAWpd,KAAKmd,SAAW,GAItEnd,KAAKie,eAUPjd,EAAQkT,UAAU4P,eAAiB,SAAUrQ,GAE3C,GAAIjB,GAAGC,EAAG3M,EAAGoY,EAAG6F,EAAKnR,EAEjBwJ,IAEJ,IAAIpc,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC/BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,QAAS,CAKtC,GAAIkB,MACAE,IACJ,KAAKhd,EAAI,EAAGA,EAAI9F,KAAKwV,gBAAgB/B,GAAO3N,IAC1C0M,EAAIiB,EAAK3N,GAAG9F,KAAKqc,OAAS,EAC1B5J,EAAIgB,EAAK3N,GAAG9F,KAAKsc,OAAS,EAED,KAArBsG,EAAM5b,QAAQwL,IAChBoQ,EAAMra,KAAKiK,GAEY,KAArBsQ,EAAM9b,QAAQyL,IAChBqQ,EAAMva,KAAKkK,EAIf,IAAIuR,GAAa,SAAUpe,EAAGC,GAC5B,MAAOD,GAAIC,EAEb+c,GAAM1L,KAAK8M,GACXlB,EAAM5L,KAAK8M,EAGX,IAAIC,KACJ,KAAKne,EAAI,EAAGA,EAAI2N,EAAKxN,OAAQH,IAAK,CAChC0M,EAAIiB,EAAK3N,GAAG9F,KAAKqc,OAAS,EAC1B5J,EAAIgB,EAAK3N,GAAG9F,KAAKsc,OAAS,EAC1B4B,EAAIzK,EAAK3N,GAAG9F,KAAKuc,OAAS,CAE1B,IAAI2H,GAAStB,EAAM5b,QAAQwL,GACvB2R,EAASrB,EAAM9b,QAAQyL,EAEA5L,UAAvBod,EAAWC,KACbD,EAAWC,MAGb,IAAI1F,GAAU,GAAInd,EAClBmd,GAAQhM,EAAIA,EACZgM,EAAQ/L,EAAIA,EACZ+L,EAAQN,EAAIA,EAEZ6F,KACAA,EAAInR,MAAQ4L,EACZuF,EAAIK,MAAQvd,OACZkd,EAAIM,OAASxd,OACbkd,EAAIO,OAAS,GAAIjjB,GAAQmR,EAAGC,EAAGzS,KAAKgd,MAEpCiH,EAAWC,GAAQC,GAAUJ,EAE7B3H,EAAW7T,KAAKwb,GAIlB,IAAKvR,EAAI,EAAGA,EAAIyR,EAAWhe,OAAQuM,IACjC,IAAKC,EAAI,EAAGA,EAAIwR,EAAWzR,GAAGvM,OAAQwM,IAChCwR,EAAWzR,GAAGC,KAChBwR,EAAWzR,GAAGC,GAAG8R,WAAc/R,EAAIyR,EAAWhe,OAAO,EAAKge,EAAWzR,EAAE,GAAGC,GAAK5L,OAC/Eod,EAAWzR,GAAGC,GAAG+R,SAAc/R,EAAIwR,EAAWzR,GAAGvM,OAAO,EAAKge,EAAWzR,GAAGC,EAAE,GAAK5L,OAClFod,EAAWzR,GAAGC,GAAGgS,WACdjS,EAAIyR,EAAWhe,OAAO,GAAKwM,EAAIwR,EAAWzR,GAAGvM,OAAO,EACnDge,EAAWzR,EAAE,GAAGC,EAAE,GAClB5L,YAOV,KAAKf,EAAI,EAAGA,EAAI2N,EAAKxN,OAAQH,IAC3B8M,EAAQ,GAAIvR,GACZuR,EAAMJ,EAAIiB,EAAK3N,GAAG9F,KAAKqc,OAAS,EAChCzJ,EAAMH,EAAIgB,EAAK3N,GAAG9F,KAAKsc,OAAS,EAChC1J,EAAMsL,EAAIzK,EAAK3N,GAAG9F,KAAKuc,OAAS,EAEV1V,SAAlB7G,KAAKwc,WACP5J,EAAMtO,MAAQmP,EAAK3N,GAAG9F,KAAKwc,WAAa,GAG1CuH,KACAA,EAAInR,MAAQA,EACZmR,EAAIO,OAAS,GAAIjjB,GAAQuR,EAAMJ,EAAGI,EAAMH,EAAGzS,KAAKgd,MAChD+G,EAAIK,MAAQvd,OACZkd,EAAIM,OAASxd,OAEbuV,EAAW7T,KAAKwb,EAIpB,OAAO3H,IASTpb,EAAQkT,UAAUpF,OAAS,WAEzB,KAAO9O,KAAK0a,iBAAiBgK,iBAC3B1kB,KAAK0a,iBAAiB9I,YAAY5R,KAAK0a,iBAAiBiK,WAG1D3kB,MAAKsgB,MAAQtO,SAASM,cAAc,OACpCtS,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKsgB,MAAM5S,MAAMmX,SAAW,SAG5B7kB,KAAKsgB,MAAMC,OAASvO,SAASM,cAAe,UAC5CtS,KAAKsgB,MAAMC,OAAO7S,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMC,OAGhC,IAAIuE,GAAW9S,SAASM,cAAe,MACvCwS,GAASpX,MAAMnC,MAAQ,MACvBuZ,EAASpX,MAAMqX,WAAc,OAC7BD,EAASpX,MAAMsX,QAAW,OAC1BF,EAASG,UAAa,mDACtBjlB,KAAKsgB,MAAMC,OAAOrO,YAAY4S,GAGhC9kB,KAAKsgB,MAAM5L,OAAS1C,SAASM,cAAe,OAC5CtS,KAAKsgB,MAAM5L,OAAOhH,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAM5L,OAAOhH,MAAM4W,OAAS,MACjCtkB,KAAKsgB,MAAM5L,OAAOhH,MAAM7F,KAAO,MAC/B7H,KAAKsgB,MAAM5L,OAAOhH,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM5L,OAGlC,IAAIQ,GAAKlV,KACLklB,EAAc,SAAUrb,GAAQqL,EAAGiQ,aAAatb,IAChDub,EAAe,SAAUvb,GAAQqL,EAAGmQ,cAAcxb,IAClDyb,EAAe,SAAUzb,GAAQqL,EAAGqQ,SAAS1b,IAC7C2b,EAAY,SAAU3b,GAAQqL,EAAGuQ,WAAW5b,GAGhDlJ,GAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,UAAWmF,WACpD/kB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,YAAa2E,GACtDvkB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,aAAc6E,GACvDzkB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,aAAc+E,GACvD3kB,EAAKuI,iBAAiBlJ,KAAKsgB,MAAMC,OAAQ,YAAaiF,GAGtDxlB,KAAK0a,iBAAiBxI,YAAYlS,KAAKsgB,QAWzCtf,EAAQkT,UAAUyR,QAAU,SAASrS,EAAOC,GAC1CvT,KAAKsgB,MAAM5S,MAAM4F,MAAQA,EACzBtT,KAAKsgB,MAAM5S,MAAM6F,OAASA,EAE1BvT,KAAK4lB,iBAMP5kB,EAAQkT,UAAU0R,cAAgB,WAChC5lB,KAAKsgB,MAAMC,OAAO7S,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMC,OAAO7S,MAAM6F,OAAS,OAEjCvT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAC5CxgB,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAG7C7lB,KAAKsgB,MAAM5L,OAAOhH,MAAM4F,MAAStT,KAAKsgB,MAAMC,OAAOC,YAAc,GAAU,MAM7Exf,EAAQkT,UAAU4R,eAAiB,WACjC,IAAK9lB,KAAKsgB,MAAM5L,SAAW1U,KAAKsgB,MAAM5L,OAAOqR,OAC3C,KAAM,wBAER/lB,MAAKsgB,MAAM5L,OAAOqR,OAAOC,QAO3BhlB,EAAQkT,UAAU+R,cAAgB,WAC3BjmB,KAAKsgB,MAAM5L,QAAW1U,KAAKsgB,MAAM5L,OAAOqR,QAE7C/lB,KAAKsgB,MAAM5L,OAAOqR,OAAOG,QAU3BllB,EAAQkT,UAAUiS,cAAgB,WAEiC,MAA7DnmB,KAAK4a,eAAewL,OAAOpmB,KAAK4a,eAAe3U,OAAO,GACxDjG,KAAKqgB,QACHgG,WAAWrmB,KAAK4a,gBAAkB,IAChC5a,KAAKsgB,MAAMC,OAAOC,YAGtBxgB,KAAKqgB,QAAUgG,WAAWrmB,KAAK4a,gBAIgC,MAA7D5a,KAAK6a,eAAeuL,OAAOpmB,KAAK6a,eAAe5U,OAAO,GACxDjG,KAAKygB,QACH4F,WAAWrmB,KAAK6a,gBAAkB,KAC/B7a,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKsgB,MAAM5L,OAAOmR,cAGxD7lB,KAAKygB,QAAU4F,WAAWrmB,KAAK6a,iBAoBnC7Z,EAAQkT,UAAUoS,kBAAoB,SAASC,GACjC1f,SAAR0f,IAImB1f,SAAnB0f,EAAIC,YAA6C3f,SAAjB0f,EAAIE,UACtCzmB,KAAKkc,OAAOwK,eAAeH,EAAIC,WAAYD,EAAIE,UAG5B5f,SAAjB0f,EAAII,UACN3mB,KAAKkc,OAAO0K,aAAaL,EAAII,UAG/B3mB,KAAKyiB,WASPzhB,EAAQkT,UAAU2S,kBAAoB,WACpC,GAAIN,GAAMvmB,KAAKkc,OAAO4K,gBAEtB,OADAP,GAAII,SAAW3mB,KAAKkc,OAAOkE,eACpBmG,GAMTvlB,EAAQkT,UAAU6S,UAAY,SAAStT,GAErCzT,KAAKoiB,gBAAgB3O,EAAMzT,KAAK0N,OAG5B1N,KAAKuiB,WAEPviB,KAAKoc,WAAapc,KAAKuiB,WAAWuB,iBAIlC9jB,KAAKoc,WAAapc,KAAK8jB,eAAe9jB,KAAKuY,WAI7CvY,KAAKgnB,iBAOPhmB,EAAQkT,UAAU8E,QAAU,SAAUvF,GACpCzT,KAAK+mB,UAAUtT,GACfzT,KAAKyiB,SAGDziB,KAAKinB,oBAAsBjnB,KAAKuiB,YAClCviB,KAAK8lB,kBAQT9kB,EAAQkT,UAAUD,WAAa,SAAU/E,GACvC,GAAIgY,GAAiBrgB,MAIrB,IAFA7G,KAAKimB,gBAEWpf,SAAZqI,EAAuB,CAkBzB,GAhBsBrI,SAAlBqI,EAAQoE,QAA2BtT,KAAKsT,MAAQpE,EAAQoE,OACrCzM,SAAnBqI,EAAQqE,SAA2BvT,KAAKuT,OAASrE,EAAQqE,QAErC1M,SAApBqI,EAAQiP,UAA2Bne,KAAK4a,eAAiB1L,EAAQiP,SAC7CtX,SAApBqI,EAAQkP,UAA2Bpe,KAAK6a,eAAiB3L,EAAQkP,SAEzCvX,SAAxBqI,EAAQmM,cAA+Brb,KAAKqb,YAAcnM,EAAQmM,aAC1CxU,SAAxBqI,EAAQoM,cAA+Btb,KAAKsb,YAAcpM,EAAQoM,aAC/CzU,SAAnBqI,EAAQ4L,SAA0B9a,KAAK8a,OAAS5L,EAAQ4L,QACrCjU,SAAnBqI,EAAQ6L,SAA0B/a,KAAK+a,OAAS7L,EAAQ6L,QACrClU,SAAnBqI,EAAQ8L,SAA0Bhb,KAAKgb,OAAS9L,EAAQ8L,QAEhCnU,SAAxBqI,EAAQgM,cAA+Blb,KAAKkb,YAAchM,EAAQgM,aAC1CrU,SAAxBqI,EAAQiM,cAA+Bnb,KAAKmb,YAAcjM,EAAQiM,aAC1CtU,SAAxBqI,EAAQkM,cAA+Bpb,KAAKob,YAAclM,EAAQkM,aAEhDvU,SAAlBqI,EAAQxB,MAAqB,CAC/B,GAAIyZ,GAAcnnB,KAAK2hB,gBAAgBzS,EAAQxB,MAC3B,MAAhByZ,IACFnnB,KAAK0N,MAAQyZ,GAGQtgB,SAArBqI,EAAQwM,WAA6B1b,KAAK0b,SAAWxM,EAAQwM,UACjC7U,SAA5BqI,EAAQuM,kBAAiCzb,KAAKyb,gBAAkBvM,EAAQuM,iBACjD5U,SAAvBqI,EAAQ0M,aAA6B5b,KAAK4b,WAAa1M,EAAQ0M,YAC3C/U,SAApBqI,EAAQkY,UAA6BpnB,KAAK8b,YAAc5M,EAAQkY,SAC9BvgB,SAAlCqI,EAAQmY,wBAAqCrnB,KAAKqnB,sBAAwBnY,EAAQmY,uBACtDxgB,SAA5BqI,EAAQyM,kBAAiC3b,KAAK2b,gBAAkBzM,EAAQyM,iBAC9C9U,SAA1BqI,EAAQ6M,gBAA+B/b,KAAK+b,cAAgB7M,EAAQ6M,eAEtClV,SAA9BqI,EAAQ8M,oBAAiChc,KAAKgc,kBAAoB9M,EAAQ8M,mBAC7CnV,SAA7BqI,EAAQ+M,mBAAiCjc,KAAKic,iBAAmB/M,EAAQ+M,kBAC1CpV,SAA/BqI,EAAQ+X,qBAAiCjnB,KAAKinB,mBAAqB/X,EAAQ+X,oBAErDpgB,SAAtBqI,EAAQmO,YAAyBrd,KAAK2iB,iBAAmBzT,EAAQmO,WAC3CxW,SAAtBqI,EAAQoO,YAAyBtd,KAAK6iB,iBAAmB3T,EAAQoO,WAEhDzW,SAAjBqI,EAAQwN,OAAoB1c,KAAKgjB,YAAc9T,EAAQwN,MACrC7V,SAAlBqI,EAAQyN,QAAqB3c,KAAKkjB,aAAehU,EAAQyN,OACxC9V,SAAjBqI,EAAQ0N,OAAoB5c,KAAKijB,YAAc/T,EAAQ0N,MACtC/V,SAAjBqI,EAAQ2N,OAAoB7c,KAAKojB,YAAclU,EAAQ2N,MACrChW,SAAlBqI,EAAQ4N,QAAqB9c,KAAKsjB,aAAepU,EAAQ4N,OACxCjW,SAAjBqI,EAAQ6N,OAAoB/c,KAAKqjB,YAAcnU,EAAQ6N,MACtClW,SAAjBqI,EAAQ8N,OAAoBhd,KAAKwjB,YAActU,EAAQ8N,MACrCnW,SAAlBqI,EAAQ+N,QAAqBjd,KAAK0jB,aAAexU,EAAQ+N,OACxCpW,SAAjBqI,EAAQgO,OAAoBld,KAAKyjB,YAAcvU,EAAQgO,MAClCrW,SAArBqI,EAAQiO,WAAwBnd,KAAK4jB,gBAAkB1U,EAAQiO,UAC1CtW,SAArBqI,EAAQkO,WAAwBpd,KAAK6jB,gBAAkB3U,EAAQkO,UAEpCvW,SAA3BqI,EAAQgY,iBAA8BA,EAAiBhY,EAAQgY,gBAE5CrgB,SAAnBqgB,GACFlnB,KAAKkc,OAAOwK,eAAeQ,EAAeV,WAAYU,EAAeT,UACrEzmB,KAAKkc,OAAO0K,aAAaM,EAAeP,YAGxC3mB,KAAKkc,OAAOwK,eAAe,EAAK,IAChC1mB,KAAKkc,OAAO0K,aAAa,MAI7B5mB,KAAK0gB,oBAAoBxR,GAAWA,EAAQyR,iBAE5C3gB,KAAK2lB,QAAQ3lB,KAAKsT,MAAOtT,KAAKuT,QAG1BvT,KAAKuY,WACPvY,KAAKgZ,QAAQhZ,KAAKuY,WAIhBvY,KAAKinB,oBAAsBjnB,KAAKuiB,YAClCviB,KAAK8lB,kBAOT9kB,EAAQkT,UAAUuO,OAAS,WACzB,GAAwB5b,SAApB7G,KAAKoc,WACP,KAAM,mCAGRpc,MAAK4lB,gBACL5lB,KAAKmmB,gBACLnmB,KAAKsnB,gBACLtnB,KAAKunB,eACLvnB,KAAKwnB,cAEDxnB,KAAK0N,QAAU1M,EAAQua,MAAMiG,MAC/BxhB,KAAK0N,QAAU1M,EAAQua,MAAMmG,QAC7B1hB,KAAKynB,kBAEEznB,KAAK0N,QAAU1M,EAAQua,MAAMkG,KACpCzhB,KAAK0nB,kBAEE1nB,KAAK0N,QAAU1M,EAAQua,MAAM2F,KACpClhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAC7BphB,KAAK2nB,iBAIL3nB,KAAK4nB,iBAGP5nB,KAAK6nB,cACL7nB,KAAK8nB,iBAMP9mB,EAAQkT,UAAUqT,aAAe,WAC/B,GAAIhH,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIE,UAAU,EAAG,EAAG1H,EAAOjN,MAAOiN,EAAOhN,SAO3CvS,EAAQkT,UAAU4T,cAAgB,WAChC,GAAIrV,EAEJ,IAAIzS,KAAK0N,QAAU1M,EAAQua,MAAM+F,UAC/BthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,QAAS,CAEtC,GAEI2G,GAAUC,EAFVC,EAAmC,IAAzBpoB,KAAKsgB,MAAME,WAGrBxgB,MAAK0N,QAAU1M,EAAQua,MAAMgG,SAC/B2G,EAAWE,EAAU,EACrBD,EAAWC,EAAU,EAAc,EAAVA,IAGzBF,EAAW,GACXC,EAAW,GAGb,IAAI5U,GAAS/O,KAAKJ,IAA8B,IAA1BpE,KAAKsgB,MAAMuF,aAAqB,KAClD5d,EAAMjI,KAAK2a,OACX0N,EAAQroB,KAAKsgB,MAAME,YAAcxgB,KAAK2a,OACtC9S,EAAOwgB,EAAQF,EACf7D,EAASrc,EAAMsL,EAGrB,GAAIgN,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAI5B,IAHAD,EAAIO,UAAY,EAChBP,EAAIQ,KAAO,aAEPvoB,KAAK0N,QAAU1M,EAAQua,MAAM+F,SAAU,CAEzC,GAAIkH,GAAO,EACPC,EAAOlV,CACX,KAAKd,EAAI+V,EAAUC,EAAJhW,EAAUA,IAAK,CAC5B,GAAIpE,IAAKoE,EAAI+V,IAASC,EAAOD,GAGzBnb,EAAU,IAAJgB,EACN9C,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,EAElC0a,GAAIY,YAAcpd,EAClBwc,EAAIa,YACJb,EAAIc,OAAOhhB,EAAMI,EAAMwK,GACvBsV,EAAIe,OAAOT,EAAOpgB,EAAMwK,GACxBsV,EAAIlH,SAGNkH,EAAIY,YAAe3oB,KAAKud,UACxBwK,EAAIgB,WAAWlhB,EAAMI,EAAKkgB,EAAU5U,GAiBtC,GAdIvT,KAAK0N,QAAU1M,EAAQua,MAAMgG,UAE/BwG,EAAIY,YAAe3oB,KAAKud,UACxBwK,EAAIiB,UAAahpB,KAAKyd,SACtBsK,EAAIa,YACJb,EAAIc,OAAOhhB,EAAMI,GACjB8f,EAAIe,OAAOT,EAAOpgB,GAClB8f,EAAIe,OAAOT,EAAQF,EAAWD,EAAU5D,GACxCyD,EAAIe,OAAOjhB,EAAMyc,GACjByD,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,UAGF7gB,KAAK0N,QAAU1M,EAAQua,MAAM+F,UAC/BthB,KAAK0N,QAAU1M,EAAQua,MAAMgG,QAAS,CAEtC,GAAI2H,GAAc,EACdC,EAAO,GAAI5nB,GAAWvB,KAAKmd,SAAUnd,KAAKod,UAAWpd,KAAKod,SAASpd,KAAKmd,UAAU,GAAG,EAKzF,KAJAgM,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAKmd,UAC3BgM,EAAKE,QAECF,EAAK7Y,OACXmC,EAAI6R,GAAU6E,EAAKC,aAAeppB,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY5J,EAErFwU,EAAIa,YACJb,EAAIc,OAAOhhB,EAAOqhB,EAAazW,GAC/BsV,EAAIe,OAAOjhB,EAAM4K,GACjBsV,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASL,EAAKC,aAAcvhB,EAAO,EAAIqhB,EAAazW,GAExD0W,EAAKE,MAGPtB,GAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,KACnB,IAAIvW,GAAQhT,KAAKsb,WACjByM,GAAIyB,SAASxW,EAAOqV,EAAO/D,EAAStkB,KAAK2a,UAO7C3Z,EAAQkT,UAAU8S,cAAgB,WAGhC,GAFAhnB,KAAKsgB,MAAM5L,OAAOuQ,UAAY,GAE1BjlB,KAAKuiB,WAAY,CACnB,GAAIrT,IACFua,QAAWzpB,KAAKqnB,uBAEdtB,EAAS,GAAIzkB,GAAOtB,KAAKsgB,MAAM5L,OAAQxF,EAC3ClP,MAAKsgB,MAAM5L,OAAOqR,OAASA,EAG3B/lB,KAAKsgB,MAAM5L,OAAOhH,MAAMsX,QAAU,OAGlCe,EAAO2D,UAAU1pB,KAAKuiB,WAAWzK,QACjCiO,EAAO4D,gBAAgB3pB,KAAKgc,kBAG5B,IAAI9G,GAAKlV,KACL4pB,EAAW,WACb,GAAIlhB,GAAQqd,EAAO8D,UAEnB3U,GAAGqN,WAAWuH,YAAYphB,GAC1BwM,EAAGkH,WAAalH,EAAGqN,WAAWuB,iBAE9B5O,EAAGuN,SAELsD,GAAOgE,oBAAoBH,OAG3B5pB,MAAKsgB,MAAM5L,OAAOqR,OAASlf,QAO/B7F,EAAQkT,UAAUoT,cAAgB,WACEzgB,SAA7B7G,KAAKsgB,MAAM5L,OAAOqR,QACrB/lB,KAAKsgB,MAAM5L,OAAOqR,OAAOtD,UAQ7BzhB,EAAQkT,UAAU2T,YAAc,WAC9B,GAAI7nB,KAAKuiB,WAAY,CACnB,GAAIhC,GAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIQ,KAAO,aACXR,EAAIiC,UAAY,OAChBjC,EAAIiB,UAAY,OAChBjB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,KAEnB,IAAI/W,GAAIxS,KAAK2a,OACTlI,EAAIzS,KAAK2a,MACboN,GAAIyB,SAASxpB,KAAKuiB,WAAW0H,WAAa,KAAOjqB,KAAKuiB,WAAW2H,mBAAoB1X,EAAGC,KAQ5FzR,EAAQkT,UAAUsT,YAAc,WAC9B,GAEE2C,GAAMC,EAAIjB,EAAMkB,EAChBC,EAAMC,EAAOC,EAAOC,EACpBC,EAAQzX,EAASC,EACjByX,EAAQC,EALNrK,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAQ1BD,GAAIQ,KAAO,GAAKvoB,KAAKkc,OAAOkE,eAAiB,UAG7C,IAAIyK,GAAW,KAAQ7qB,KAAKuE,MAAMiO,EAC9BsY,EAAW,KAAQ9qB,KAAKuE,MAAMkO,EAC9BsY,EAAa,EAAI/qB,KAAKkc,OAAOkE,eAC7B4K,EAAWhrB,KAAKkc,OAAO4K,iBAAiBN,UAU5C,KAPAuB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAKkjB,aACnBiG,EAAO,GAAI5nB,GAAWvB,KAAK0c,KAAM1c,KAAK4c,KAAM5c,KAAK2c,MAAO0N,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAK0c,MAC3ByM,EAAKE,QAECF,EAAK7Y,OAAO,CAClB,GAAIkC,GAAI2W,EAAKC,YAETppB,MAAK0b,UACPyO,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAM7c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAM/c,KAAKgd,OACxD+K,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,WAGJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAM7c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK6c,KAAKgO,EAAU7qB,KAAKgd,OACjE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAM/c,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGxS,KAAK+c,KAAK8N,EAAU7qB,KAAKgd,OACjE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,UAGN2J,EAAShmB,KAAK+a,IAAIyL,GAAY,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,KACpDuN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQmR,EAAGgY,EAAOxqB,KAAKgd,OAClDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBe,EAAK7X,GAAKsY,GAEHvmB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS,KAAOxpB,KAAKkb,YAAYiO,EAAKC,cAAgB,KAAMkB,EAAK9X,EAAG8X,EAAK7X,GAE7E0W,EAAKE,OAWP,IAPAtB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAKsjB,aACnB6F,EAAO,GAAI5nB,GAAWvB,KAAK6c,KAAM7c,KAAK+c,KAAM/c,KAAK8c,MAAOuN,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAK6c,MAC3BsM,EAAKE,QAECF,EAAK7Y,OACPtQ,KAAK0b,UACPyO,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAMyM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAMuM,EAAKC,aAAcppB,KAAKgd,OACxE+K,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,WAGJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAMyM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAKoO,EAAU3B,EAAKC,aAAcppB,KAAKgd,OACjF+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAMuM,EAAKC,aAAcppB,KAAKgd,OAC1EoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAKkO,EAAU3B,EAAKC,aAAcppB,KAAKgd,OACjF+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,UAGN0J,EAAS/lB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD0N,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOpB,EAAKC,aAAcppB,KAAKgd,OAClExY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,MACnBe,EAAK7X,GAAKsY,GAEHvmB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS,KAAOxpB,KAAKmb,YAAYgO,EAAKC,cAAgB,KAAMkB,EAAK9X,EAAG8X,EAAK7X,GAE7E0W,EAAKE,MAaP,KATAtB,EAAIO,UAAY,EAChB+B,EAAoCxjB,SAAtB7G,KAAK0jB,aACnByF,EAAO,GAAI5nB,GAAWvB,KAAKgd,KAAMhd,KAAKkd,KAAMld,KAAKid,MAAOoN,GACxDlB,EAAK9Y,QACD8Y,EAAKC,aAAeppB,KAAKgd,MAC3BmM,EAAKE,OAEPkB,EAAS/lB,KAAK+a,IAAIyL,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD4N,EAAShmB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,MAC7CoM,EAAK7Y,OAEX6Z,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOrB,EAAKC,eAC1DrB,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOqB,EAAK3X,EAAIuY,EAAYZ,EAAK1X,GACrCsV,EAAIlH,SAEJkH,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASxpB,KAAKob,YAAY+N,EAAKC,cAAgB,IAAKe,EAAK3X,EAAI,EAAG2X,EAAK1X,GAEzE0W,EAAKE,MAEPtB,GAAIO,UAAY,EAChB6B,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OAC1DoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKkd,OACxD6K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhBqC,EAAS3qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK6c,KAAM7c,KAAKgd,OACpE4N,EAAS5qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK6c,KAAM7c,KAAKgd,OACpE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAO8B,EAAOnY,EAAGmY,EAAOlY,GAC5BsV,EAAIe,OAAO8B,EAAOpY,EAAGoY,EAAOnY,GAC5BsV,EAAIlH,SAEJ8J,EAAS3qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK+c,KAAM/c,KAAKgd,OACpE4N,EAAS5qB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK+c,KAAM/c,KAAKgd,OACpE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAO8B,EAAOnY,EAAGmY,EAAOlY,GAC5BsV,EAAIe,OAAO8B,EAAOpY,EAAGoY,EAAOnY,GAC5BsV,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhB6B,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK6c,KAAM7c,KAAKgd,OAClEoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK0c,KAAM1c,KAAK+c,KAAM/c,KAAKgd,OAChE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,SAEJsJ,EAAOnqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK6c,KAAM7c,KAAKgd,OAClEoN,EAAKpqB,KAAKue,eAAe,GAAIld,GAAQrB,KAAK4c,KAAM5c,KAAK+c,KAAM/c,KAAKgd,OAChE+K,EAAIY,YAAc3oB,KAAKud,UACvBwK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOsB,EAAG5X,EAAG4X,EAAG3X,GACpBsV,EAAIlH,QAGJ,IAAI/F,GAAS9a,KAAK8a,MACdA,GAAO7U,OAAS,IAClBiN,EAAU,GAAMlT,KAAKuE,MAAMkO,EAC3B8X,GAASvqB,KAAK0c,KAAO1c,KAAK4c,MAAQ,EAClC4N,EAAShmB,KAAK+a,IAAIyL,GAAY,EAAKhrB,KAAK6c,KAAO3J,EAASlT,KAAK+c,KAAO7J,EACpEoX,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OACtDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ/kB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAAS1O,EAAQwP,EAAK9X,EAAG8X,EAAK7X,GAIpC,IAAIsI,GAAS/a,KAAK+a,MACdA,GAAO9U,OAAS,IAClBgN,EAAU,GAAMjT,KAAKuE,MAAMiO,EAC3B+X,EAAS/lB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK0c,KAAOzJ,EAAUjT,KAAK4c,KAAO3J,EACtEuX,GAASxqB,KAAK6c,KAAO7c,KAAK+c,MAAQ,EAClCuN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOxqB,KAAKgd,OACtDxY,KAAK+a,IAAe,EAAXyL,GAAgB,GAC3BjD,EAAIuB,UAAY,SAChBvB,EAAIwB,aAAe,OAEZ/kB,KAAK4a,IAAe,EAAX4L,GAAgB,GAChCjD,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,WAGnBxB,EAAIuB,UAAY,OAChBvB,EAAIwB,aAAe,UAErBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASzO,EAAQuP,EAAK9X,EAAG8X,EAAK7X,GAIpC,IAAIuI,GAAShb,KAAKgb,MACdA,GAAO/U,OAAS,IAClBykB,EAAS,GACTH,EAAS/lB,KAAK+a,IAAIyL,GAAa,EAAKhrB,KAAK0c,KAAO1c,KAAK4c,KACrD4N,EAAShmB,KAAK4a,IAAI4L,GAAa,EAAKhrB,KAAK6c,KAAO7c,KAAK+c,KACrD0N,GAASzqB,KAAKgd,KAAOhd,KAAKkd,MAAQ,EAClCoN,EAAOtqB,KAAKue,eAAe,GAAIld,GAAQkpB,EAAOC,EAAOC,IACrD1C,EAAIuB,UAAY,QAChBvB,EAAIwB,aAAe,SACnBxB,EAAIiB,UAAYhpB,KAAKud,UACrBwK,EAAIyB,SAASxO,EAAQsP,EAAK9X,EAAIkY,EAAQJ,EAAK7X,KAU/CzR,EAAQkT,UAAUwU,SAAW,SAASuC,EAAGC,EAAGC,GAC1C,GAAIC,GAAGC,EAAGC,EAAGC,EAAGC,EAAIC,CAMpB,QAJAF,EAAIJ,EAAID,EACRM,EAAKhnB,KAAKgB,MAAMylB,EAAE,IAClBQ,EAAIF,GAAK,EAAI/mB,KAAKknB,IAAMT,EAAE,GAAM,EAAK,IAE7BO,GACN,IAAK,GAAGJ,EAAIG,EAAGF,EAAII,EAAGH,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAIK,EAAGJ,EAAIE,EAAGD,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAI,EAAGC,EAAIE,EAAGD,EAAIG,CAAG,MAC7B,KAAK,GAAGL,EAAI,EAAGC,EAAII,EAAGH,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIK,EAAGJ,EAAI,EAAGC,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIG,EAAGF,EAAI,EAAGC,EAAIG,CAAG,MAE7B,SAASL,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAG7B,MAAO,OAASjgB,SAAW,IAAF+f,GAAS,IAAM/f,SAAW,IAAFggB,GAAS,IAAMhgB,SAAW,IAAFigB,GAAS,KAQpFtqB,EAAQkT,UAAUuT,gBAAkB,WAClC,GAEE7U,GAAOyV,EAAOpgB,EAAK0jB,EACnB7lB,EACA8lB,EAAgB5C,EAAWL,EAAaL,EACxChc,EAAGC,EAAGC,EAAGqf,EALPtL,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAO1B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWnW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI9F,KAAKoc,WAAWnW,OAAQH,IAAK,CAC3C,GAAIse,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWtW,GAAG8M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAE9CpkB,MAAKoc,WAAWtW,GAAGse,MAAQA,EAC3BpkB,KAAKoc,WAAWtW,GAAGue,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWtW,GAAGwe,OACrEtkB,MAAKoc,WAAWtW,GAAGimB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY7lB,UAAY6lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGC,GAC3B,MAAOA,GAAEkmB,KAAOnmB,EAAEmmB,KAIpB,IAFA/rB,KAAKoc,WAAWlF,KAAK8U,GAEjBhsB,KAAK0N,QAAU1M,EAAQua,MAAMmG,SAC/B,IAAK5b,EAAI,EAAGA,EAAI9F,KAAKoc,WAAWnW,OAAQH,IAMtC,GALA8M,EAAQ5S,KAAKoc,WAAWtW,GACxBuiB,EAAQroB,KAAKoc,WAAWtW,GAAGye,WAC3Btc,EAAQjI,KAAKoc,WAAWtW,GAAG0e,SAC3BmH,EAAQ3rB,KAAKoc,WAAWtW,GAAG2e,WAEb5d,SAAV+L,GAAiC/L,SAAVwhB,GAA+BxhB,SAARoB,GAA+BpB,SAAV8kB,EAAqB,CAE1F,GAAI3rB,KAAK6b,gBAAkB7b,KAAK4b,WAAY,CAK1C,GAAIqQ,GAAQ5qB,EAAQ6qB,SAASP,EAAMvH,MAAOxR,EAAMwR,OAC5C+H,EAAQ9qB,EAAQ6qB,SAASjkB,EAAImc,MAAOiE,EAAMjE,OAC1CgI,EAAe/qB,EAAQgrB,aAAaJ,EAAOE,GAC3CpmB,EAAMqmB,EAAanmB,QAGvB2lB,GAAkBQ,EAAalO,EAAI,MAGnC0N,IAAiB,CAGfA,IAEFC,GAAQjZ,EAAMA,MAAMsL,EAAImK,EAAMzV,MAAMsL,EAAIjW,EAAI2K,MAAMsL,EAAIyN,EAAM/Y,MAAMsL,GAAK,EACvE5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eACnDxP,EAAI,EAEAvM,KAAK4b,YACPpP,EAAIhI,KAAKL,IAAI,EAAKioB,EAAa5Z,EAAIzM,EAAO,EAAG,GAC7CijB,EAAYhpB,KAAK0oB,SAASpc,EAAGC,EAAGC,GAChCmc,EAAcK,IAGdxc,EAAI,EACJwc,EAAYhpB,KAAK0oB,SAASpc,EAAGC,EAAGC,GAChCmc,EAAc3oB,KAAKud,aAIrByL,EAAY,OACZL,EAAc3oB,KAAKud,WAErB+K,EAAY,GAEZP,EAAIO,UAAYA,EAChBP,EAAIiB,UAAYA,EAChBjB,EAAIY,YAAcA,EAClBZ,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAOT,EAAMhE,OAAO7R,EAAG6V,EAAMhE,OAAO5R,GACxCsV,EAAIe,OAAO6C,EAAMtH,OAAO7R,EAAGmZ,EAAMtH,OAAO5R,GACxCsV,EAAIe,OAAO7gB,EAAIoc,OAAO7R,EAAGvK,EAAIoc,OAAO5R,GACpCsV,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,cAKR,KAAK/a,EAAI,EAAGA,EAAI9F,KAAKoc,WAAWnW,OAAQH,IACtC8M,EAAQ5S,KAAKoc,WAAWtW,GACxBuiB,EAAQroB,KAAKoc,WAAWtW,GAAGye,WAC3Btc,EAAQjI,KAAKoc,WAAWtW,GAAG0e,SAEb3d,SAAV+L,IAEA0V,EADEtoB,KAAKyb,gBACK,GAAK7I,EAAMwR,MAAMlG,EAGjB,IAAMle,KAAKmc,IAAI+B,EAAIle,KAAKkc,OAAOkE,iBAIjCvZ,SAAV+L,GAAiC/L,SAAVwhB,IAEzBwD,GAAQjZ,EAAMA,MAAMsL,EAAImK,EAAMzV,MAAMsL,GAAK,EACzC5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAEnDgM,EAAIO,UAAYA,EAChBP,EAAIY,YAAc3oB,KAAK0oB,SAASpc,EAAG,EAAG,GACtCyb,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAOT,EAAMhE,OAAO7R,EAAG6V,EAAMhE,OAAO5R,GACxCsV,EAAIlH,UAGQha,SAAV+L,GAA+B/L,SAARoB,IAEzB4jB,GAAQjZ,EAAMA,MAAMsL,EAAIjW,EAAI2K,MAAMsL,GAAK,EACvC5R,EAAoE,KAA/D,GAAKuf,EAAO7rB,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAEnDgM,EAAIO,UAAYA,EAChBP,EAAIY,YAAc3oB,KAAK0oB,SAASpc,EAAG,EAAG,GACtCyb,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIe,OAAO7gB,EAAIoc,OAAO7R,EAAGvK,EAAIoc,OAAO5R,GACpCsV,EAAIlH,YAWZ7f,EAAQkT,UAAU0T,eAAiB,WACjC,GAEI9hB,GAFAya,EAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWnW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI9F,KAAKoc,WAAWnW,OAAQH,IAAK,CAC3C,GAAIse,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWtW,GAAG8M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAC9CpkB,MAAKoc,WAAWtW,GAAGse,MAAQA,EAC3BpkB,KAAKoc,WAAWtW,GAAGue,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWtW,GAAGwe,OACrEtkB,MAAKoc,WAAWtW,GAAGimB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY7lB,UAAY6lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGC,GAC3B,MAAOA,GAAEkmB,KAAOnmB,EAAEmmB,KAEpB/rB,MAAKoc,WAAWlF,KAAK8U,EAGrB,IAAI5D,GAAmC,IAAzBpoB,KAAKsgB,MAAME,WACzB,KAAK1a,EAAI,EAAGA,EAAI9F,KAAKoc,WAAWnW,OAAQH,IAAK,CAC3C,GAAI8M,GAAQ5S,KAAKoc,WAAWtW,EAE5B,IAAI9F,KAAK0N,QAAU1M,EAAQua,MAAM8F,QAAS,CAGxC,GAAI8I,GAAOnqB,KAAKue,eAAe3L,EAAM0R,OACrCyD,GAAIO,UAAY,EAChBP,EAAIY,YAAc3oB,KAAKwd,UACvBuK,EAAIa,YACJb,EAAIc,OAAOsB,EAAK3X,EAAG2X,EAAK1X,GACxBsV,EAAIe,OAAOlW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,GACxCsV,EAAIlH,SAIN,GAAI9N,EAEFA,GADE/S,KAAK0N,QAAU1M,EAAQua,MAAMgG,QACxB6G,EAAQ,EAAI,EAAEA,GAAWxV,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAGpFiL,CAGT,IAAIkE,EAEFA,GADEtsB,KAAKyb,gBACE1I,GAAQH,EAAMwR,MAAMlG,EAGpBnL,IAAS/S,KAAKmc,IAAI+B,EAAIle,KAAKkc,OAAOkE,gBAEhC,EAATkM,IACFA,EAAS,EAGX,IAAIjf,GAAK9B,EAAOwV,CACZ/gB,MAAK0N,QAAU1M,EAAQua,MAAM+F,UAE/BjU,EAAqE,KAA9D,GAAKuF,EAAMA,MAAMtO,MAAQtE,KAAKmd,UAAYnd,KAAKuE,MAAMD,OAC5DiH,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAE7BrN,KAAK0N,QAAU1M,EAAQua,MAAMgG,SACpChW,EAAQvL,KAAKyd,SACbsD,EAAc/gB,KAAK0d,iBAInBrQ,EAA+E,KAAxE,GAAKuF,EAAMA,MAAMsL,EAAIle,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAC9DxQ,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAItC0a,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzd,EAChBwc,EAAIa,YACJb,EAAIwE,IAAI3Z,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,EAAG6Z,EAAQ,EAAW,EAAR9nB,KAAKgoB,IAAM,GAC9DzE,EAAInH,OACJmH,EAAIlH,YAQR7f,EAAQkT,UAAUyT,eAAiB,WACjC,GAEI7hB,GAAG2mB,EAAGC,EAASC,EAFfpM,EAASvgB,KAAKsgB,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWnW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI9F,KAAKoc,WAAWnW,OAAQH,IAAK,CAC3C,GAAIse,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWtW,GAAG8M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAC9CpkB,MAAKoc,WAAWtW,GAAGse,MAAQA,EAC3BpkB,KAAKoc,WAAWtW,GAAGue,OAASA,CAG5B,IAAIyH,GAAc9rB,KAAK0e,2BAA2B1e,KAAKoc,WAAWtW,GAAGwe,OACrEtkB,MAAKoc,WAAWtW,GAAGimB,KAAO/rB,KAAKyb,gBAAkBqQ,EAAY7lB,UAAY6lB,EAAY5N,EAIvF,GAAI8N,GAAY,SAAUpmB,EAAGC,GAC3B,MAAOA,GAAEkmB,KAAOnmB,EAAEmmB,KAEpB/rB,MAAKoc,WAAWlF,KAAK8U,EAGrB,IAAIY,GAAS5sB,KAAKqd,UAAY,EAC1BwP,EAAS7sB,KAAKsd,UAAY,CAC9B,KAAKxX,EAAI,EAAGA,EAAI9F,KAAKoc,WAAWnW,OAAQH,IAAK,CAC3C,GAGIuH,GAAK9B,EAAOwV,EAHZnO,EAAQ5S,KAAKoc,WAAWtW,EAIxB9F,MAAK0N,QAAU1M,EAAQua,MAAM4F,UAE/B9T,EAAqE,KAA9D,GAAKuF,EAAMA,MAAMtO,MAAQtE,KAAKmd,UAAYnd,KAAKuE,MAAMD,OAC5DiH,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAE7BrN,KAAK0N,QAAU1M,EAAQua,MAAM6F,SACpC7V,EAAQvL,KAAKyd,SACbsD,EAAc/gB,KAAK0d,iBAInBrQ,EAA+E,KAAxE,GAAKuF,EAAMA,MAAMsL,EAAIle,KAAKgd,MAAQhd,KAAKuE,MAAM2Z,EAAKle,KAAK+b,eAC9DxQ,EAAQvL,KAAK0oB,SAASrb,EAAK,EAAG,GAC9B0T,EAAc/gB,KAAK0oB,SAASrb,EAAK,EAAG,KAIlCrN,KAAK0N,QAAU1M,EAAQua,MAAM6F,UAC/BwL,EAAU5sB,KAAKqd,UAAY,IAAOzK,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY,GAAM,IAC/G0P,EAAU7sB,KAAKsd,UAAY,IAAO1K,EAAMA,MAAMtO,MAAQtE,KAAKmd,WAAand,KAAKod,SAAWpd,KAAKmd,UAAY,GAAM,IAIjH,IAAIjI,GAAKlV,KACLwe,EAAU5L,EAAMA,MAChB3K,IACD2K,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KACnEtL,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQrO,EAAQN,KAElEoG,IACD1R,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,QAChEpK,MAAO,GAAIvR,GAAQmd,EAAQhM,EAAIoa,EAAQpO,EAAQ/L,EAAIoa,EAAQ7sB,KAAKgd,OAInE/U,GAAIW,QAAQ,SAAUmb,GACpBA,EAAIM,OAASnP,EAAGqJ,eAAewF,EAAInR,SAErC0R,EAAO1b,QAAQ,SAAUmb,GACvBA,EAAIM,OAASnP,EAAGqJ,eAAewF,EAAInR,QAIrC,IAAIka,KACDH,QAAS1kB,EAAK8kB,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAC7D+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,SAChG+Z,SAAU1kB,EAAI,GAAIA,EAAI,GAAIqc,EAAO,GAAIA,EAAO,IAAKyI,OAAQ1rB,EAAQ2rB,IAAI1I,EAAO,GAAG1R,MAAO0R,EAAO,GAAG1R,QAKnG,KAHAA,EAAMka,SAAWA,EAGZL,EAAI,EAAGA,EAAIK,EAAS7mB,OAAQwmB,IAAK,CACpCC,EAAUI,EAASL,EACnB,IAAIQ,GAAcjtB,KAAK0e,2BAA2BgO,EAAQK,OAC1DL,GAAQX,KAAO/rB,KAAKyb,gBAAkBwR,EAAYhnB,UAAYgnB,EAAY/O,EAwB5E,IAjBA4O,EAAS5V,KAAK,SAAUtR,EAAGC,GACzB,GAAIqnB,GAAOrnB,EAAEkmB,KAAOnmB,EAAEmmB,IACtB,OAAImB,GAAaA,EAGbtnB,EAAE+mB,UAAY1kB,EAAY,EAC1BpC,EAAE8mB,UAAY1kB,EAAY,GAGvB,IAIT8f,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYzd,EAEXkhB,EAAI,EAAGA,EAAIK,EAAS7mB,OAAQwmB,IAC/BC,EAAUI,EAASL,GACnBE,EAAUD,EAAQC,QAClB5E,EAAIa,YACJb,EAAIc,OAAO8D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAIe,OAAO6D,EAAQ,GAAGtI,OAAO7R,EAAGma,EAAQ,GAAGtI,OAAO5R,GAClDsV,EAAInH,OACJmH,EAAIlH,YAUV7f,EAAQkT,UAAUwT,gBAAkB,WAClC,GAEE9U,GAAO9M,EAFLya,EAASvgB,KAAKsgB,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAG1B,MAAwBnhB,SAApB7G,KAAKoc,YAA4Bpc,KAAKoc,WAAWnW,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAI9F,KAAKoc,WAAWnW,OAAQH,IAAK,CAC3C,GAAIse,GAAQpkB,KAAK0e,2BAA2B1e,KAAKoc,WAAWtW,GAAG8M,OAC3DyR,EAASrkB,KAAK2e,4BAA4ByF,EAE9CpkB,MAAKoc,WAAWtW,GAAGse,MAAQA,EAC3BpkB,KAAKoc,WAAWtW,GAAGue,OAASA,EAc9B,IAVIrkB,KAAKoc,WAAWnW,OAAS,IAC3B2M,EAAQ5S,KAAKoc,WAAW,GAExB2L,EAAIO,UAAY,EAChBP,EAAIY,YAAc,OAClBZ,EAAIa,YACJb,EAAIc,OAAOjW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,IAIrC3M,EAAI,EAAGA,EAAI9F,KAAKoc,WAAWnW,OAAQH,IACtC8M,EAAQ5S,KAAKoc,WAAWtW,GACxBiiB,EAAIe,OAAOlW,EAAMyR,OAAO7R,EAAGI,EAAMyR,OAAO5R,EAItCzS,MAAKoc,WAAWnW,OAAS,GAC3B8hB,EAAIlH,WASR7f,EAAQkT,UAAUiR,aAAe,SAAStb,GAWxC,GAVAA,EAAQA,GAAS/B,OAAO+B,MAIpB7J,KAAKmtB,gBACPntB,KAAKotB,WAAWvjB,GAIlB7J,KAAKmtB,eAAiBtjB,EAAMwjB,MAAyB,IAAhBxjB,EAAMwjB,MAAiC,IAAjBxjB,EAAMyjB,OAC5DttB,KAAKmtB,gBAAmBntB,KAAKutB,UAAlC,CAGAvtB,KAAKwtB,YAAc7P,EAAU9T,GAC7B7J,KAAKytB,YAAc3P,EAAUjU,GAE7B7J,KAAK0tB,WAAa,GAAI9oB,MAAK5E,KAAKqQ,OAChCrQ,KAAK2tB,SAAW,GAAI/oB,MAAK5E,KAAKsQ,KAC9BtQ,KAAK4tB,iBAAmB5tB,KAAKkc,OAAO4K,iBAEpC9mB,KAAKsgB,MAAM5S,MAAMmgB,OAAS,MAK1B,IAAI3Y,GAAKlV,IACTA,MAAK8tB,YAAc,SAAUjkB,GAAQqL,EAAG6Y,aAAalkB,IACrD7J,KAAKguB,UAAc,SAAUnkB,GAAQqL,EAAGkY,WAAWvjB,IACnDlJ,EAAKuI,iBAAiB8I,SAAU,YAAakD,EAAG4Y,aAChDntB,EAAKuI,iBAAiB8I,SAAU,UAAWkD,EAAG8Y,WAC9CrtB,EAAKiJ,eAAeC,KAStB7I,EAAQkT,UAAU6Z,aAAe,SAAUlkB,GACzCA,EAAQA,GAAS/B,OAAO+B,KAGxB,IAAIokB,GAAQ5H,WAAW1I,EAAU9T,IAAU7J,KAAKwtB,YAC5CU,EAAQ7H,WAAWvI,EAAUjU,IAAU7J,KAAKytB,YAE5CU,EAAgBnuB,KAAK4tB,iBAAiBpH,WAAayH,EAAQ,IAC3DG,EAAcpuB,KAAK4tB,iBAAiBnH,SAAWyH,EAAQ,IAEvDG,EAAY,EACZC,EAAY9pB,KAAK4a,IAAIiP,EAAY,IAAM,EAAI7pB,KAAKgoB,GAIhDhoB,MAAKknB,IAAIlnB,KAAK4a,IAAI+O,IAAkBG,IACtCH,EAAgB3pB,KAAK+pB,MAAOJ,EAAgB3pB,KAAKgoB,IAAOhoB,KAAKgoB,GAAK,MAEhEhoB,KAAKknB,IAAIlnB,KAAK+a,IAAI4O,IAAkBG,IACtCH,GAAiB3pB,KAAK+pB,MAAOJ,EAAe3pB,KAAKgoB,GAAK,IAAQ,IAAOhoB,KAAKgoB,GAAK,MAI7EhoB,KAAKknB,IAAIlnB,KAAK4a,IAAIgP,IAAgBE,IACpCF,EAAc5pB,KAAK+pB,MAAOH,EAAc5pB,KAAKgoB,IAAOhoB,KAAKgoB,IAEvDhoB,KAAKknB,IAAIlnB,KAAK+a,IAAI6O,IAAgBE,IACpCF,GAAe5pB,KAAK+pB,MAAOH,EAAa5pB,KAAKgoB,GAAK,IAAQ,IAAOhoB,KAAKgoB,IAGxExsB,KAAKkc,OAAOwK,eAAeyH,EAAeC,GAC1CpuB,KAAKyiB,QAGL,IAAI+L,GAAaxuB,KAAK6mB,mBACtB7mB,MAAKyuB,KAAK,uBAAwBD,GAElC7tB,EAAKiJ,eAAeC,IAStB7I,EAAQkT,UAAUkZ,WAAa,SAAUvjB,GACvC7J,KAAKsgB,MAAM5S,MAAMmgB,OAAS,OAC1B7tB,KAAKmtB,gBAAiB,EAGtBxsB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAK8tB,aACrDntB,EAAK+I,oBAAoBsI,SAAU,UAAahS,KAAKguB,WACrDrtB,EAAKiJ,eAAeC,IAOtB7I,EAAQkT,UAAUuR,WAAa,SAAU5b,GACvC,GAAI6P,GAAQ,IACRgV,EAAe1uB,KAAKsgB,MAAM1Y,wBAC1B+mB,EAAShR,EAAU9T,GAAS6kB,EAAa7mB,KACzC+mB,EAAS9Q,EAAUjU,GAAS6kB,EAAazmB,GAE7C,IAAKjI,KAAK8b,YAAV,CASA,GALI9b,KAAK6uB,gBACPvU,aAAata,KAAK6uB,gBAIhB7uB,KAAKmtB,eAEP,WADAntB,MAAK8uB,cAIP,IAAI9uB,KAAKonB,SAAWpnB,KAAKonB,QAAQ2H,UAAW,CAE1C,GAAIA,GAAY/uB,KAAKgvB,iBAAiBL,EAAQC,EAC1CG,KAAc/uB,KAAKonB,QAAQ2H,YAEzBA,EACF/uB,KAAKivB,aAAaF,GAGlB/uB,KAAK8uB,oBAIN,CAEH,GAAI5Z,GAAKlV,IACTA,MAAK6uB,eAAiBtU,WAAW,WAC/BrF,EAAG2Z,eAAiB,IAGpB,IAAIE,GAAY7Z,EAAG8Z,iBAAiBL,EAAQC,EACxCG,IACF7Z,EAAG+Z,aAAaF,IAEjBrV,MAOP1Y,EAAQkT,UAAUmR,cAAgB,SAASxb,GACzC7J,KAAKutB,WAAY,CAEjB,IAAIrY,GAAKlV,IACTA,MAAKkvB,YAAc,SAAUrlB,GAAQqL,EAAGia,aAAatlB,IACrD7J,KAAKovB,WAAc,SAAUvlB,GAAQqL,EAAGma,YAAYxlB,IACpDlJ,EAAKuI,iBAAiB8I,SAAU,YAAakD,EAAGga,aAChDvuB,EAAKuI,iBAAiB8I,SAAU,WAAYkD,EAAGka,YAE/CpvB,KAAKmlB,aAAatb,IAMpB7I,EAAQkT,UAAUib,aAAe,SAAStlB,GACxC7J,KAAK+tB,aAAalkB,IAMpB7I,EAAQkT,UAAUmb,YAAc,SAASxlB,GACvC7J,KAAKutB,WAAY,EAEjB5sB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAKkvB,aACrDvuB,EAAK+I,oBAAoBsI,SAAU,WAAchS,KAAKovB,YAEtDpvB,KAAKotB,WAAWvjB,IASlB7I,EAAQkT,UAAUqR,SAAW,SAAS1b,GAC/BA,IACHA,EAAQ/B,OAAO+B,MAGjB,IAAIylB,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAW,IAChB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAO,GAMpBF,EAAO,CACT,GAAIG,GAAYzvB,KAAKkc,OAAOkE,eACxBsP,EAAYD,GAAa,EAAIH,EAAQ,GAEzCtvB,MAAKkc,OAAO0K,aAAa8I,GACzB1vB,KAAKyiB,SAELziB,KAAK8uB,eAIP,GAAIN,GAAaxuB,KAAK6mB,mBACtB7mB,MAAKyuB,KAAK,uBAAwBD,GAKlC7tB,EAAKiJ,eAAeC,IAUtB7I,EAAQkT,UAAUyb,gBAAkB,SAAU/c,EAAOgd,GAKnD,QAASC,GAAMrd,GACb,MAAOA,GAAI,EAAI,EAAQ,EAAJA,EAAQ,GAAK,EALlC,GAAI5M,GAAIgqB,EAAS,GACf/pB,EAAI+pB,EAAS,GACbnvB,EAAImvB,EAAS,GAMXE,EAAKD,GAAMhqB,EAAE2M,EAAI5M,EAAE4M,IAAMI,EAAMH,EAAI7M,EAAE6M,IAAM5M,EAAE4M,EAAI7M,EAAE6M,IAAMG,EAAMJ,EAAI5M,EAAE4M,IACrEud,EAAKF,GAAMpvB,EAAE+R,EAAI3M,EAAE2M,IAAMI,EAAMH,EAAI5M,EAAE4M,IAAMhS,EAAEgS,EAAI5M,EAAE4M,IAAMG,EAAMJ,EAAI3M,EAAE2M,IACrEwd,EAAKH,GAAMjqB,EAAE4M,EAAI/R,EAAE+R,IAAMI,EAAMH,EAAIhS,EAAEgS,IAAM7M,EAAE6M,EAAIhS,EAAEgS,IAAMG,EAAMJ,EAAI/R,EAAE+R,GAGzE,SAAc,GAANsd,GAAiB,GAANC,GAAWD,GAAMC,GAC3B,GAANA,GAAiB,GAANC,GAAWD,GAAMC,GACtB,GAANF,GAAiB,GAANE,GAAWF,GAAME,IAUjChvB,EAAQkT,UAAU8a,iBAAmB,SAAUxc,EAAGC,GAChD,GAAI3M,GACFmqB,EAAU,IACVlB,EAAY,KACZmB,EAAmB,KACnBC,EAAc,KACdpD,EAAS,GAAI3rB,GAAQoR,EAAGC,EAE1B,IAAIzS,KAAK0N,QAAU1M,EAAQua,MAAM2F,KAC/BlhB,KAAK0N,QAAU1M,EAAQua,MAAM4F,UAC7BnhB,KAAK0N,QAAU1M,EAAQua,MAAM6F,QAE7B,IAAKtb,EAAI9F,KAAKoc,WAAWnW,OAAS,EAAGH,GAAK,EAAGA,IAAK,CAChDipB,EAAY/uB,KAAKoc,WAAWtW,EAC5B,IAAIgnB,GAAYiC,EAAUjC,QAC1B,IAAIA,EACF,IAAK,GAAIvgB,GAAIugB,EAAS7mB,OAAS,EAAGsG,GAAK,EAAGA,IAAK,CAE7C,GAAImgB,GAAUI,EAASvgB,GACnBogB,EAAUD,EAAQC,QAClByD,GAAazD,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,QAC9DgM,GAAa1D,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAAQsI,EAAQ,GAAGtI,OAClE,IAAIrkB,KAAK2vB,gBAAgB5C,EAAQqD,IAC/BpwB,KAAK2vB,gBAAgB5C,EAAQsD,GAE7B,MAAOtB,QAQf,KAAKjpB,EAAI,EAAGA,EAAI9F,KAAKoc,WAAWnW,OAAQH,IAAK,CAC3CipB,EAAY/uB,KAAKoc,WAAWtW,EAC5B,IAAI8M,GAAQmc,EAAU1K,MACtB,IAAIzR,EAAO,CACT,GAAI0d,GAAQ9rB,KAAKknB,IAAIlZ,EAAII,EAAMJ,GAC3B+d,EAAQ/rB,KAAKknB,IAAIjZ,EAAIG,EAAMH,GAC3BsZ,EAAQvnB,KAAKgsB,KAAKF,EAAQA,EAAQC,EAAQA,IAEzB,OAAhBJ,GAA+BA,EAAPpE,IAA8BkE,EAAPlE,IAClDoE,EAAcpE,EACdmE,EAAmBnB,IAO3B,MAAOmB,IAQTlvB,EAAQkT,UAAU+a,aAAe,SAAUF,GACzC,GAAI5b,GAASsd,EAAMC,CAEd1wB,MAAKonB,SAiCRjU,EAAUnT,KAAKonB,QAAQuJ,IAAIxd,QAC3Bsd,EAAQzwB,KAAKonB,QAAQuJ,IAAIF,KACzBC,EAAQ1wB,KAAKonB,QAAQuJ,IAAID,MAlCzBvd,EAAUnB,SAASM,cAAc,OACjCa,EAAQzF,MAAMkX,SAAW,WACzBzR,EAAQzF,MAAMsX,QAAU,OACxB7R,EAAQzF,MAAMZ,OAAS,oBACvBqG,EAAQzF,MAAMnC,MAAQ,UACtB4H,EAAQzF,MAAMb,WAAa,wBAC3BsG,EAAQzF,MAAMkjB,aAAe,MAC7Bzd,EAAQzF,MAAMmjB,UAAY,qCAE1BJ,EAAOze,SAASM,cAAc,OAC9Bme,EAAK/iB,MAAMkX,SAAW,WACtB6L,EAAK/iB,MAAM6F,OAAS,OACpBkd,EAAK/iB,MAAM4F,MAAQ,IACnBmd,EAAK/iB,MAAMojB,WAAa,oBAExBJ,EAAM1e,SAASM,cAAc,OAC7Boe,EAAIhjB,MAAMkX,SAAW,WACrB8L,EAAIhjB,MAAM6F,OAAS,IACnBmd,EAAIhjB,MAAM4F,MAAQ,IAClBod,EAAIhjB,MAAMZ,OAAS,oBACnB4jB,EAAIhjB,MAAMkjB,aAAe,MAEzB5wB,KAAKonB,SACH2H,UAAW,KACX4B,KACExd,QAASA,EACTsd,KAAMA,EACNC,IAAKA,KAUX1wB,KAAK8uB,eAEL9uB,KAAKonB,QAAQ2H,UAAYA,EACO,kBAArB/uB,MAAK8b,YACd3I,EAAQ8R,UAAYjlB,KAAK8b,YAAYiT,EAAUnc,OAG/CO,EAAQ8R,UAAY,6BACM8J,EAAUnc,MAAMJ,EAAI,gCACpBuc,EAAUnc,MAAMH,EAAI,gCACpBsc,EAAUnc,MAAMsL,EAAI,qBAIhD/K,EAAQzF,MAAM7F,KAAQ,IACtBsL,EAAQzF,MAAMzF,IAAQ,IACtBjI,KAAKsgB,MAAMpO,YAAYiB,GACvBnT,KAAKsgB,MAAMpO,YAAYue,GACvBzwB,KAAKsgB,MAAMpO,YAAYwe,EAGvB,IAAIK,GAAgB5d,EAAQ6d,YACxBC,EAAkB9d,EAAQ+d,aAC1BC,EAAgBV,EAAKS,aACrBE,EAAcV,EAAIM,YAClBK,EAAgBX,EAAIQ,aAEpBrpB,EAAOknB,EAAU1K,OAAO7R,EAAIue,EAAe,CAC/ClpB,GAAOrD,KAAKL,IAAIK,KAAKJ,IAAIyD,EAAM,IAAK7H,KAAKsgB,MAAME,YAAc,GAAKuQ,GAElEN,EAAK/iB,MAAM7F,KAASknB,EAAU1K,OAAO7R,EAAI,KACzCie,EAAK/iB,MAAMzF,IAAU8mB,EAAU1K,OAAO5R,EAAI0e,EAAc,KACxDhe,EAAQzF,MAAM7F,KAAQA,EAAO,KAC7BsL,EAAQzF,MAAMzF,IAAS8mB,EAAU1K,OAAO5R,EAAI0e,EAAaF,EAAiB,KAC1EP,EAAIhjB,MAAM7F,KAAWknB,EAAU1K,OAAO7R,EAAI4e,EAAW,EAAK,KAC1DV,EAAIhjB,MAAMzF,IAAW8mB,EAAU1K,OAAO5R,EAAI4e,EAAY,EAAK,MAO7DrwB,EAAQkT,UAAU4a,aAAe,WAC/B,GAAI9uB,KAAKonB,QAAS,CAChBpnB,KAAKonB,QAAQ2H,UAAY,IAEzB,KAAK,GAAI5oB,KAAQnG,MAAKonB,QAAQuJ,IAC5B,GAAI3wB,KAAKonB,QAAQuJ,IAAIvqB,eAAeD,GAAO,CACzC,GAAIwB,GAAO3H,KAAKonB,QAAQuJ,IAAIxqB,EACxBwB,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWyH,YAAYjK,MA8BtC9H,EAAOD,QAAUoB,GAKb,SAASnB,EAAQD,EAASM,GAc9B,QAASgB,KACPlB,KAAKsxB,YAAc,GAAIjwB,GACvBrB,KAAKuxB,eACLvxB,KAAKuxB,YAAY/K,WAAa,EAC9BxmB,KAAKuxB,YAAY9K,SAAW,EAC5BzmB,KAAKwxB,UAAY,IAEjBxxB,KAAKyxB,eAAiB,GAAIpwB,GAC1BrB,KAAK0xB,eAAkB,GAAIrwB,GAAQ,GAAImD,KAAKgoB,GAAI,EAAG,GAEnDxsB,KAAK2xB,6BAtBP,GAAItwB,GAAUnB,EAAoB,GA+BlCgB,GAAOgT,UAAUoK,eAAiB,SAAS9L,EAAGC,EAAGyL,GAC/Cle,KAAKsxB,YAAY9e,EAAIA,EACrBxS,KAAKsxB,YAAY7e,EAAIA,EACrBzS,KAAKsxB,YAAYpT,EAAIA,EAErBle,KAAK2xB,8BAWPzwB,EAAOgT,UAAUwS,eAAiB,SAASF,EAAYC,GAClC5f,SAAf2f,IACFxmB,KAAKuxB,YAAY/K,WAAaA,GAGf3f,SAAb4f,IACFzmB,KAAKuxB,YAAY9K,SAAWA,EACxBzmB,KAAKuxB,YAAY9K,SAAW,IAAGzmB,KAAKuxB,YAAY9K,SAAW,GAC3DzmB,KAAKuxB,YAAY9K,SAAW,GAAIjiB,KAAKgoB,KAAIxsB,KAAKuxB,YAAY9K,SAAW,GAAIjiB,KAAKgoB,MAGjE3lB,SAAf2f,GAAyC3f,SAAb4f,IAC9BzmB,KAAK2xB,8BAQTzwB,EAAOgT,UAAU4S,eAAiB,WAChC,GAAI8K,KAIJ,OAHAA,GAAIpL,WAAaxmB,KAAKuxB,YAAY/K,WAClCoL,EAAInL,SAAWzmB,KAAKuxB,YAAY9K,SAEzBmL,GAOT1wB,EAAOgT,UAAU0S,aAAe,SAAS3gB,GACxBY,SAAXZ,IAGJjG,KAAKwxB,UAAYvrB,EAKbjG,KAAKwxB,UAAY,MAAMxxB,KAAKwxB,UAAY,KACxCxxB,KAAKwxB,UAAY,IAAKxxB,KAAKwxB,UAAY,GAE3CxxB,KAAK2xB,+BAOPzwB,EAAOgT,UAAUkM,aAAe,WAC9B,MAAOpgB,MAAKwxB,WAOdtwB,EAAOgT,UAAU8K,kBAAoB,WACnC,MAAOhf,MAAKyxB,gBAOdvwB,EAAOgT,UAAUmL,kBAAoB,WACnC,MAAOrf,MAAK0xB,gBAOdxwB,EAAOgT,UAAUyd,2BAA6B,WAE5C3xB,KAAKyxB,eAAejf,EAAIxS,KAAKsxB,YAAY9e,EAAIxS,KAAKwxB,UAAYhtB,KAAK4a,IAAIpf,KAAKuxB,YAAY/K,YAAchiB,KAAK+a,IAAIvf,KAAKuxB,YAAY9K,UAChIzmB,KAAKyxB,eAAehf,EAAIzS,KAAKsxB,YAAY7e,EAAIzS,KAAKwxB,UAAYhtB,KAAK+a,IAAIvf,KAAKuxB,YAAY/K,YAAchiB,KAAK+a,IAAIvf,KAAKuxB,YAAY9K,UAChIzmB,KAAKyxB,eAAevT,EAAIle,KAAKsxB,YAAYpT,EAAIle,KAAKwxB,UAAYhtB,KAAK4a,IAAIpf,KAAKuxB,YAAY9K,UAGxFzmB,KAAK0xB,eAAelf,EAAIhO,KAAKgoB,GAAG,EAAIxsB,KAAKuxB,YAAY9K,SACrDzmB,KAAK0xB,eAAejf,EAAI,EACxBzS,KAAK0xB,eAAexT,GAAKle,KAAKuxB,YAAY/K,YAG5C3mB,EAAOD,QAAUsB,GAIb,SAASrB,EAAQD,EAASM,GAW9B,QAASiB,GAAQsS,EAAMsO,EAAQ8P,GAC7B7xB,KAAKyT,KAAOA,EACZzT,KAAK+hB,OAASA,EACd/hB,KAAK6xB,MAAQA,EAEb7xB,KAAK0I,MAAQ7B,OACb7G,KAAKsE,MAAQuC,OAGb7G,KAAK8X,OAAS+Z,EAAM7P,kBAAkBvO,EAAKwC,MAAOjW,KAAK+hB,QAGvD/hB,KAAK8X,OAAOZ,KAAK,SAAUtR,EAAGC,GAC5B,MAAOD,GAAIC,EAAI,EAAQA,EAAJD,EAAQ,GAAK,IAG9B5F,KAAK8X,OAAO7R,OAAS,GACvBjG,KAAK8pB,YAAY,GAInB9pB,KAAKoc,cAELpc,KAAKM,QAAS,EACdN,KAAK8xB,eAAiBjrB,OAElBgrB,EAAM5V,kBACRjc,KAAKM,QAAS,EACdN,KAAK+xB,oBAGL/xB,KAAKM,QAAS,EAxClB,GAAIQ,GAAWZ,EAAoB,EAiDnCiB,GAAO+S,UAAU8d,SAAW,WAC1B,MAAOhyB,MAAKM,QAQda,EAAO+S,UAAU+d,kBAAoB,WAInC,IAHA,GAAIlsB,GAAM/F,KAAK8X,OAAO7R,OAElBH,EAAI,EACD9F,KAAKoc,WAAWtW,IACrBA,GAGF,OAAOtB,MAAK+pB,MAAMzoB,EAAIC,EAAM,MAQ9B5E,EAAO+S,UAAU+V,SAAW,WAC1B,MAAOjqB,MAAK6xB,MAAMxW,aAQpBla,EAAO+S,UAAUge,UAAY,WAC3B,MAAOlyB,MAAK+hB,QAOd5gB,EAAO+S,UAAUgW,iBAAmB;AAClC,MAAmBrjB,UAAf7G,KAAK0I,MACA7B,OAEF7G,KAAK8X,OAAO9X,KAAK0I,QAO1BvH,EAAO+S,UAAUie,UAAY,WAC3B,MAAOnyB,MAAK8X,QAQd3W,EAAO+S,UAAUyB,SAAW,SAASjN,GACnC,GAAIA,GAAS1I,KAAK8X,OAAO7R,OACvB,KAAM,2BAER,OAAOjG,MAAK8X,OAAOpP,IASrBvH,EAAO+S,UAAU4P,eAAiB,SAASpb,GAIzC,GAHc7B,SAAV6B,IACFA,EAAQ1I,KAAK0I,OAED7B,SAAV6B,EACF,QAEF,IAAI0T,EACJ,IAAIpc,KAAKoc,WAAW1T,GAClB0T,EAAapc,KAAKoc,WAAW1T,OAE1B,CACH,GAAI2F,KACJA,GAAE0T,OAAS/hB,KAAK+hB,OAChB1T,EAAE/J,MAAQtE,KAAK8X,OAAOpP,EAEtB,IAAI0pB,GAAW,GAAItxB,GAASd,KAAKyT,MAAMiB,OAAQ,SAAU5E,GAAO,MAAQA,GAAKzB,EAAE0T,SAAW1T,EAAE/J,SAAW2R,KACvGmG,GAAapc,KAAK6xB,MAAM/N,eAAesO,GAEvCpyB,KAAKoc,WAAW1T,GAAS0T,EAG3B,MAAOA,IAQTjb,EAAO+S,UAAUsO,kBAAoB,SAAS3Z,GAC5C7I,KAAK8xB,eAAiBjpB,GASxB1H,EAAO+S,UAAU4V,YAAc,SAASphB,GACtC,GAAIA,GAAS1I,KAAK8X,OAAO7R,OACvB,KAAM,2BAERjG,MAAK0I,MAAQA,EACb1I,KAAKsE,MAAQtE,KAAK8X,OAAOpP,IAO3BvH,EAAO+S,UAAU6d,iBAAmB,SAASrpB,GAC7B7B,SAAV6B,IACFA,EAAQ,EAEV,IAAI4X,GAAQtgB,KAAK6xB,MAAMvR,KAEvB,IAAI5X,EAAQ1I,KAAK8X,OAAO7R,OAAQ,CAC9B,CAAqBjG,KAAK8jB,eAAepb,GAIlB7B,SAAnByZ,EAAM+R,WACR/R,EAAM+R,SAAWrgB,SAASM,cAAc,OACxCgO,EAAM+R,SAAS3kB,MAAMkX,SAAW,WAChCtE,EAAM+R,SAAS3kB,MAAMnC,MAAQ,OAC7B+U,EAAMpO,YAAYoO,EAAM+R,UAE1B,IAAIA,GAAWryB,KAAKiyB,mBACpB3R,GAAM+R,SAASpN,UAAY,wBAA0BoN,EAAW,IAEhE/R,EAAM+R,SAAS3kB,MAAM4W,OAAS,OAC9BhE,EAAM+R,SAAS3kB,MAAM7F,KAAO,MAE5B,IAAIqN,GAAKlV,IACTua,YAAW,WAAYrF,EAAG6c,iBAAiBrpB,EAAM,IAAM,IACvD1I,KAAKM,QAAS,MAGdN,MAAKM,QAAS,EAGSuG,SAAnByZ,EAAM+R,WACR/R,EAAM1O,YAAY0O,EAAM+R,UACxB/R,EAAM+R,SAAWxrB,QAGf7G,KAAK8xB,gBACP9xB,KAAK8xB,kBAIXjyB,EAAOD,QAAUuB,GAKb,SAAStB,EAAQD,EAASM,GAO9B,QAASkB,GAASoR,EAAGC,GACnBzS,KAAKwS,EAAU3L,SAAN2L,EAAkBA,EAAI,EAC/BxS,KAAKyS,EAAU5L,SAAN4L,EAAkBA,EAAI,EAGjC5S,EAAOD,QAAUwB,GAKb,SAASvB,EAAQD,EAASM,GAQ9B,QAASmB,GAAQmR,EAAGC,EAAGyL,GACrBle,KAAKwS,EAAU3L,SAAN2L,EAAkBA,EAAI,EAC/BxS,KAAKyS,EAAU5L,SAAN4L,EAAkBA,EAAI,EAC/BzS,KAAKke,EAAUrX,SAANqX,EAAkBA,EAAI,EASjC7c,EAAQ6qB,SAAW,SAAStmB,EAAGC,GAC7B,GAAIysB,GAAM,GAAIjxB,EAId,OAHAixB,GAAI9f,EAAI5M,EAAE4M,EAAI3M,EAAE2M,EAChB8f,EAAI7f,EAAI7M,EAAE6M,EAAI5M,EAAE4M,EAChB6f,EAAIpU,EAAItY,EAAEsY,EAAIrY,EAAEqY,EACToU,GASTjxB,EAAQ2S,IAAM,SAASpO,EAAGC,GACxB,GAAI0sB,GAAM,GAAIlxB,EAId,OAHAkxB,GAAI/f,EAAI5M,EAAE4M,EAAI3M,EAAE2M,EAChB+f,EAAI9f,EAAI7M,EAAE6M,EAAI5M,EAAE4M,EAChB8f,EAAIrU,EAAItY,EAAEsY,EAAIrY,EAAEqY,EACTqU,GASTlxB,EAAQ2rB,IAAM,SAASpnB,EAAGC,GACxB,MAAO,IAAIxE,IACFuE,EAAE4M,EAAI3M,EAAE2M,GAAK,GACb5M,EAAE6M,EAAI5M,EAAE4M,GAAK,GACb7M,EAAEsY,EAAIrY,EAAEqY,GAAK,IAWxB7c,EAAQgrB,aAAe,SAASzmB,EAAGC,GACjC,GAAIumB,GAAe,GAAI/qB,EAMvB,OAJA+qB,GAAa5Z,EAAI5M,EAAE6M,EAAI5M,EAAEqY,EAAItY,EAAEsY,EAAIrY,EAAE4M,EACrC2Z,EAAa3Z,EAAI7M,EAAEsY,EAAIrY,EAAE2M,EAAI5M,EAAE4M,EAAI3M,EAAEqY,EACrCkO,EAAalO,EAAItY,EAAE4M,EAAI3M,EAAE4M,EAAI7M,EAAE6M,EAAI5M,EAAE2M,EAE9B4Z,GAQT/qB,EAAQ6S,UAAUjO,OAAS,WACzB,MAAOzB,MAAKgsB,KACJxwB,KAAKwS,EAAIxS,KAAKwS,EACdxS,KAAKyS,EAAIzS,KAAKyS,EACdzS,KAAKke,EAAIle,KAAKke,IAIxBre,EAAOD,QAAUyB,GAKb,SAASxB,EAAQD,EAASM,GAa9B,QAASoB,GAAOkZ,EAAWtL,GACzB,GAAkBrI,SAAd2T,EACF,KAAM,qCAKR,IAHAxa,KAAKwa,UAAYA,EACjBxa,KAAKypB,QAAWva,GAA8BrI,QAAnBqI,EAAQua,QAAwBva,EAAQua,SAAU,EAEzEzpB,KAAKypB,QAAS,CAChBzpB,KAAKsgB,MAAQtO,SAASM,cAAc,OAEpCtS,KAAKsgB,MAAM5S,MAAM4F,MAAQ,OACzBtT,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKwa,UAAUtI,YAAYlS,KAAKsgB,OAEhCtgB,KAAKsgB,MAAMkS,KAAOxgB,SAASM,cAAc,SACzCtS,KAAKsgB,MAAMkS,KAAKrrB,KAAO,SACvBnH,KAAKsgB,MAAMkS,KAAKluB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMkS,MAElCxyB,KAAKsgB,MAAM0F,KAAOhU,SAASM,cAAc,SACzCtS,KAAKsgB,MAAM0F,KAAK7e,KAAO,SACvBnH,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM0F,MAElChmB,KAAKsgB,MAAM+I,KAAOrX,SAASM,cAAc,SACzCtS,KAAKsgB,MAAM+I,KAAKliB,KAAO,SACvBnH,KAAKsgB,MAAM+I,KAAK/kB,MAAQ,OACxBtE,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAM+I,MAElCrpB,KAAKsgB,MAAMmS,IAAMzgB,SAASM,cAAc,SACxCtS,KAAKsgB,MAAMmS,IAAItrB,KAAO,SACtBnH,KAAKsgB,MAAMmS,IAAI/kB,MAAMkX,SAAW,WAChC5kB,KAAKsgB,MAAMmS,IAAI/kB,MAAMZ,OAAS,gBAC9B9M,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,MAAQ,QAC7BtT,KAAKsgB,MAAMmS,IAAI/kB,MAAM6F,OAAS,MAC9BvT,KAAKsgB,MAAMmS,IAAI/kB,MAAMkjB,aAAe,MACpC5wB,KAAKsgB,MAAMmS,IAAI/kB,MAAMglB,gBAAkB,MACvC1yB,KAAKsgB,MAAMmS,IAAI/kB,MAAMZ,OAAS,oBAC9B9M,KAAKsgB,MAAMmS,IAAI/kB,MAAMiT,gBAAkB,UACvC3gB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMmS,KAElCzyB,KAAKsgB,MAAMqS,MAAQ3gB,SAASM,cAAc,SAC1CtS,KAAKsgB,MAAMqS,MAAMxrB,KAAO,SACxBnH,KAAKsgB,MAAMqS,MAAMjlB,MAAMiN,OAAS,MAChC3a,KAAKsgB,MAAMqS,MAAMruB,MAAQ,IACzBtE,KAAKsgB,MAAMqS,MAAMjlB,MAAMkX,SAAW,WAClC5kB,KAAKsgB,MAAMqS,MAAMjlB,MAAM7F,KAAO,SAC9B7H,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMqS,MAGlC,IAAIzd,GAAKlV,IACTA,MAAKsgB,MAAMqS,MAAMzN,YAAc,SAAUrb,GAAQqL,EAAGiQ,aAAatb,IACjE7J,KAAKsgB,MAAMkS,KAAKI,QAAU,SAAU/oB,GAAQqL,EAAGsd,KAAK3oB,IACpD7J,KAAKsgB,MAAM0F,KAAK4M,QAAU,SAAU/oB,GAAQqL,EAAG2d,WAAWhpB,IAC1D7J,KAAKsgB,MAAM+I,KAAKuJ,QAAU,SAAU/oB,GAAQqL,EAAGmU,KAAKxf,IAGtD7J,KAAK8yB,iBAAmBjsB,OAExB7G,KAAK8X,UACL9X,KAAK0I,MAAQ7B,OAEb7G,KAAK+yB,YAAclsB,OACnB7G,KAAKgzB,aAAe,IACpBhzB,KAAKizB,UAAW,EA3ElB,GAAItyB,GAAOT,EAAoB,EAiF/BoB,GAAO4S,UAAUse,KAAO,WACtB,GAAI9pB,GAAQ1I,KAAK6pB,UACbnhB,GAAQ,IACVA,IACA1I,KAAKkzB,SAASxqB,KAOlBpH,EAAO4S,UAAUmV,KAAO,WACtB,GAAI3gB,GAAQ1I,KAAK6pB,UACbnhB,GAAQ1I,KAAK8X,OAAO7R,OAAS,IAC/ByC,IACA1I,KAAKkzB,SAASxqB,KAOlBpH,EAAO4S,UAAUif,SAAW,WAC1B,GAAI9iB,GAAQ,GAAIzL,MAEZ8D,EAAQ1I,KAAK6pB,UACbnhB,GAAQ1I,KAAK8X,OAAO7R,OAAS,GAC/ByC,IACA1I,KAAKkzB,SAASxqB,IAEP1I,KAAKizB,WAEZvqB,EAAQ,EACR1I,KAAKkzB,SAASxqB,GAGhB,IAAI4H,GAAM,GAAI1L,MACVsoB,EAAQ5c,EAAMD,EAId+iB,EAAW5uB,KAAKJ,IAAIpE,KAAKgzB,aAAe9F,EAAM,GAG9ChY,EAAKlV,IACTA,MAAK+yB,YAAcxY,WAAW,WAAYrF,EAAGie,YAAcC,IAM7D9xB,EAAO4S,UAAU2e,WAAa,WACHhsB,SAArB7G,KAAK+yB,YACP/yB,KAAKgmB,OAELhmB,KAAKkmB,QAOT5kB,EAAO4S,UAAU8R,KAAO,WAElBhmB,KAAK+yB,cAET/yB,KAAKmzB,WAEDnzB,KAAKsgB,QACPtgB,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,UAO5BhD,EAAO4S,UAAUgS,KAAO,WACtBmN,cAAcrzB,KAAK+yB,aACnB/yB,KAAK+yB,YAAclsB,OAEf7G,KAAKsgB,QACPtgB,KAAKsgB,MAAM0F,KAAK1hB,MAAQ,SAQ5BhD,EAAO4S,UAAU6V,oBAAsB,SAASlhB,GAC9C7I,KAAK8yB,iBAAmBjqB,GAO1BvH,EAAO4S,UAAUyV,gBAAkB,SAASyJ,GAC1CpzB,KAAKgzB,aAAeI,GAOtB9xB,EAAO4S,UAAUof,gBAAkB,SAASF,GAC1C,MAAOpzB,MAAKgzB,cASd1xB,EAAO4S,UAAUqf,YAAc,SAASC,GACtCxzB,KAAKizB,SAAWO,GAOlBlyB,EAAO4S,UAAUuf,SAAW,WACI5sB,SAA1B7G,KAAK8yB,kBACP9yB,KAAK8yB,oBAOTxxB,EAAO4S,UAAUuO,OAAS,WACxB,GAAIziB,KAAKsgB,MAAO,CAEdtgB,KAAKsgB,MAAMmS,IAAI/kB,MAAMzF,IAAOjI,KAAKsgB,MAAMuF,aAAa,EAChD7lB,KAAKsgB,MAAMmS,IAAIvB,aAAa,EAAK,KACrClxB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,MAAStT,KAAKsgB,MAAME,YACrCxgB,KAAKsgB,MAAMkS,KAAKhS,YAChBxgB,KAAKsgB,MAAM0F,KAAKxF,YAChBxgB,KAAKsgB,MAAM+I,KAAK7I,YAAc,GAAO,IAGzC,IAAI3Y,GAAO7H,KAAK0zB,YAAY1zB,KAAK0I,MACjC1I,MAAKsgB,MAAMqS,MAAMjlB,MAAM7F,KAAO,EAAS,OAS3CvG,EAAO4S,UAAUwV,UAAY,SAAS5R,GACpC9X,KAAK8X,OAASA,EAEV9X,KAAK8X,OAAO7R,OAAS,EACvBjG,KAAKkzB,SAAS,GAEdlzB,KAAK0I,MAAQ7B,QAOjBvF,EAAO4S,UAAUgf,SAAW,SAASxqB,GACnC,KAAIA,EAAQ1I,KAAK8X,OAAO7R,QAOtB,KAAM,2BANNjG,MAAK0I,MAAQA,EAEb1I,KAAKyiB,SACLziB,KAAKyzB,YAWTnyB,EAAO4S,UAAU2V,SAAW,WAC1B,MAAO7pB,MAAK0I,OAQdpH,EAAO4S,UAAU+B,IAAM,WACrB,MAAOjW,MAAK8X,OAAO9X,KAAK0I,QAI1BpH,EAAO4S,UAAUiR,aAAe,SAAStb,GAEvC,GAAIsjB,GAAiBtjB,EAAMwjB,MAAyB,IAAhBxjB,EAAMwjB,MAAiC,IAAjBxjB,EAAMyjB,MAChE,IAAKH,EAAL,CAEAntB,KAAK2zB,aAAe9pB,EAAM+T,QAC1B5d,KAAK4zB,YAAcvN,WAAWrmB,KAAKsgB,MAAMqS,MAAMjlB,MAAM7F,MAErD7H,KAAKsgB,MAAM5S,MAAMmgB,OAAS,MAK1B,IAAI3Y,GAAKlV,IACTA,MAAK8tB,YAAc,SAAUjkB,GAAQqL,EAAG6Y,aAAalkB,IACrD7J,KAAKguB,UAAc,SAAUnkB,GAAQqL,EAAGkY,WAAWvjB,IACnDlJ,EAAKuI,iBAAiB8I,SAAU,YAAahS,KAAK8tB,aAClDntB,EAAKuI,iBAAiB8I,SAAU,UAAahS,KAAKguB,WAClDrtB,EAAKiJ,eAAeC,KAItBvI,EAAO4S,UAAU2f,YAAc,SAAUhsB,GACvC,GAAIyL,GAAQ+S,WAAWrmB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,OACxCtT,KAAKsgB,MAAMqS,MAAMnS,YAAc,GAC/BhO,EAAI3K,EAAO,EAEXa,EAAQlE,KAAK+pB,MAAM/b,EAAIc,GAAStT,KAAK8X,OAAO7R,OAAO,GAIvD,OAHY,GAARyC,IAAWA,EAAQ,GACnBA,EAAQ1I,KAAK8X,OAAO7R,OAAO,IAAGyC,EAAQ1I,KAAK8X,OAAO7R,OAAO,GAEtDyC,GAGTpH,EAAO4S,UAAUwf,YAAc,SAAUhrB,GACvC,GAAI4K,GAAQ+S,WAAWrmB,KAAKsgB,MAAMmS,IAAI/kB,MAAM4F,OACxCtT,KAAKsgB,MAAMqS,MAAMnS,YAAc,GAE/BhO,EAAI9J,GAAS1I,KAAK8X,OAAO7R,OAAO,GAAKqN,EACrCzL,EAAO2K,EAAI,CAEf,OAAO3K,IAKTvG,EAAO4S,UAAU6Z,aAAe,SAAUlkB,GACxC,GAAIqjB,GAAOrjB,EAAM+T,QAAU5d,KAAK2zB,aAC5BnhB,EAAIxS,KAAK4zB,YAAc1G,EAEvBxkB,EAAQ1I,KAAK6zB,YAAYrhB,EAE7BxS,MAAKkzB,SAASxqB,GAEd/H,EAAKiJ,kBAIPtI,EAAO4S,UAAUkZ,WAAa,SAAUvjB,GACtC7J,KAAKsgB,MAAM5S,MAAMmgB,OAAS,OAG1BltB,EAAK+I,oBAAoBsI,SAAU,YAAahS,KAAK8tB,aACrDntB,EAAK+I,oBAAoBsI,SAAU,UAAWhS,KAAKguB,WAEnDrtB,EAAKiJ,kBAGP/J,EAAOD,QAAU0B,GAKb,SAASzB,EAAQD,EAASM,GA2B9B,QAASqB,GAAW8O,EAAOC,EAAK6Y,EAAMkB,GAEpCrqB,KAAK8zB,OAAS,EACd9zB,KAAK+zB,KAAO,EACZ/zB,KAAKg0B,MAAQ,EACbh0B,KAAKqqB,YAAa,EAClBrqB,KAAKi0B,UAAY,EAEjBj0B,KAAKk0B,SAAW,EAChBl0B,KAAKm0B,SAAS9jB,EAAOC,EAAK6Y,EAAMkB,GAYlC9oB,EAAW2S,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK6Y,EAAMkB,GACzDrqB,KAAK8zB,OAASzjB,EAAQA,EAAQ,EAC9BrQ,KAAK+zB,KAAOzjB,EAAMA,EAAM,EAExBtQ,KAAKo0B,QAAQjL,EAAMkB,IASrB9oB,EAAW2S,UAAUkgB,QAAU,SAASjL,EAAMkB,GAC/BxjB,SAATsiB,GAA8B,GAARA,IAGPtiB,SAAfwjB,IACFrqB,KAAKqqB,WAAaA,GAEhBrqB,KAAKqqB,cAAe,EACtBrqB,KAAKg0B,MAAQzyB,EAAW8yB,oBAAoBlL,GAE5CnpB,KAAKg0B,MAAQ7K,IAUjB5nB,EAAW8yB,oBAAsB,SAAUlL,GACzC,GAAImL,GAAQ,SAAU9hB,GAAI,MAAOhO,MAAK+vB,IAAI/hB,GAAKhO,KAAKgwB,MAGhDC,EAAQjwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,KACtCwL,EAAQ,EAAInwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,EAAO,KACjDyL,EAAQ,EAAIpwB,KAAKkwB,IAAI,GAAIlwB,KAAK+pB,MAAM+F,EAAMnL,EAAO,KAGjDkB,EAAaoK,CASjB,OARIjwB,MAAKknB,IAAIiJ,EAAQxL,IAAS3kB,KAAKknB,IAAIrB,EAAalB,KAAOkB,EAAasK,GACpEnwB,KAAKknB,IAAIkJ,EAAQzL,IAAS3kB,KAAKknB,IAAIrB,EAAalB,KAAOkB,EAAauK,GAGtD,GAAdvK,IACFA,EAAa,GAGRA,GAOT9oB,EAAW2S,UAAUkV,WAAa,WAChC,MAAO/C,YAAWrmB,KAAKk0B,SAASW,YAAY70B,KAAKi0B,aAOnD1yB,EAAW2S,UAAU4gB,QAAU,WAC7B,MAAO90B,MAAKg0B,OAOdzyB,EAAW2S,UAAU7D,MAAQ,WAC3BrQ,KAAKk0B,SAAWl0B,KAAK8zB,OAAS9zB,KAAK8zB,OAAS9zB,KAAKg0B,OAMnDzyB,EAAW2S,UAAUmV,KAAO,WAC1BrpB,KAAKk0B,UAAYl0B,KAAKg0B,OAOxBzyB,EAAW2S,UAAU5D,IAAM,WACzB,MAAQtQ,MAAKk0B,SAAWl0B,KAAK+zB,MAG/Bl0B,EAAOD,QAAU2B,GAKb,SAAS1B,EAAQD,EAASM,GAuB9B,QAASsB,GAAUgZ,EAAWvY,EAAO8yB,EAAQ7lB,GAC3C,KAAMlP,eAAgBwB,IACpB,KAAM,IAAIiZ,aAAY,mDAIxB,MAAMlU,MAAMC,QAAQuuB,IAAWA,YAAkBl0B,IAAWk0B,YAAkBj0B,KAAai0B,YAAkBnuB,QAAQ,CACnH,GAAIouB,GAAgB9lB,CACpBA,GAAU6lB,EACVA,EAASC,EAGX,GAAI9f,GAAKlV,IACTA,MAAKi1B,gBACH5kB,MAAO,KACPC,IAAO,KAEP4kB,YAAY,EAEZC,YAAa,SACb7hB,MAAO,KACPC,OAAQ,KACR6hB,UAAW,KACXC,UAAW,MAEbr1B,KAAKkP,QAAUvO,EAAKmG,cAAe9G,KAAKi1B,gBAGxCj1B,KAAKs1B,QAAQ9a,GAGbxa,KAAKgC,cAELhC,KAAKu1B,MACH5E,IAAK3wB,KAAK2wB,IACV6E,SAAUx1B,KAAKsG,MACfmvB,SACEnhB,GAAItU,KAAKsU,GAAGohB,KAAK11B,MACjByU,IAAKzU,KAAKyU,IAAIihB,KAAK11B,MACnByuB,KAAMzuB,KAAKyuB,KAAKiH,KAAK11B,OAEvB21B,eACAh1B,MACEi1B,SAAU,WACR,MAAO1gB,GAAG2gB,SAAS1M,KAAK5kB,OAE1BuwB,QAAS,WACP,MAAO5f,GAAG2gB,SAAS1M,KAAKA,MAG1B2M,SAAU5gB,EAAG6gB,UAAUL,KAAKxgB,GAC5B8gB,eAAgB9gB,EAAG+gB,gBAAgBP,KAAKxgB,GACxCghB,OAAQhhB,EAAGihB,QAAQT,KAAKxgB,GACxBkhB,aAAelhB,EAAGmhB,cAAcX,KAAKxgB,KAKzClV,KAAKs2B,MAAQ,GAAIz0B,GAAM7B,KAAKu1B,MAC5Bv1B,KAAKgC,WAAWuG,KAAKvI,KAAKs2B,OAC1Bt2B,KAAKu1B,KAAKe,MAAQt2B,KAAKs2B,MAGvBt2B,KAAK61B,SAAW,GAAI5yB,GAASjD,KAAKu1B,MAClCv1B,KAAKu2B,UAAY,KACjBv2B,KAAKgC,WAAWuG,KAAKvI,KAAK61B,UAG1B71B,KAAKw2B,YAAc,GAAIh0B,GAAYxC,KAAKu1B,MACxCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKw2B,aAI1Bx2B,KAAKy2B,WAAa,GAAIh0B,GAAWzC,KAAKu1B,MACtCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKy2B,YAG1Bz2B,KAAK02B,QAAU,GAAI5zB,GAAQ9C,KAAKu1B,MAChCv1B,KAAKgC,WAAWuG,KAAKvI,KAAK02B,SAE1B12B,KAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAElB52B,KAAKsU,GAAG,MAAO,SAAUzK,GACvBqL,EAAGuZ,KAAK,QAASvZ,EAAG2hB,mBAAmBhtB,MAEzC7J,KAAKsU,GAAG,YAAa,SAAUzK,GAC7BqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,MAE/C7J,KAAK2wB,IAAIjxB,KAAKo3B,cAAgB,SAAUjtB,GACtCqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,KAI3CqF,GACFlP,KAAKiU,WAAW/E,GAId6lB,GACF/0B,KAAK+2B,UAAUhC,GAIb9yB,EACFjC,KAAKg3B,SAAS/0B,GAGdjC,KAAKi3B,UAjIT,GAEIt2B,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B2B,EAAQ3B,EAAoB,IAC5Bg3B,EAAOh3B,EAAoB,IAC3B+C,EAAW/C,EAAoB,IAC/BsC,EAActC,EAAoB,IAClCuC,EAAavC,EAAoB,IACjC4C,EAAU5C,EAAoB,GA4HlCsB,GAAS0S,UAAY,GAAIgjB,GAOzB11B,EAAS0S,UAAUuO,OAAS,WAC1BziB,KAAK02B,SAAW12B,KAAK02B,QAAQS,WAAWC,cAAc,IACtDp3B,KAAKi3B,WAOPz1B,EAAS0S,UAAU8iB,SAAW,SAAS/0B,GACrC,GAGIo1B,GAHAC,EAAiC,MAAlBt3B,KAAK22B,SAwBxB,IAhBEU,EAJGp1B,EAGIA,YAAiBpB,IAAWoB,YAAiBnB,GACvCmB,EAIA,GAAIpB,GAAQoB,GACvBkF,MACEkJ,MAAO,OACPC,IAAK,UAVI,KAgBftQ,KAAK22B,UAAYU,EACjBr3B,KAAK02B,SAAW12B,KAAK02B,QAAQM,SAASK,GAElCC,EACF,GAA0BzwB,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAAkB,CACpE,GAA0BzJ,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAClD,GAAIinB,GAAYv3B,KAAKw3B,eAGvB,IAAInnB,GAA8BxJ,QAAtB7G,KAAKkP,QAAQmB,MAAqBrQ,KAAKkP,QAAQmB,MAAQknB,EAAUlnB,MACzEC,EAA4BzJ,QAApB7G,KAAKkP,QAAQoB,IAAqBtQ,KAAKkP,QAAQoB,IAAQinB,EAAUjnB,GAE7EtQ,MAAKy3B,UAAUpnB,EAAOC,GAAMonB,SAAS,QAGrC13B,MAAK23B,KAAKD,SAAS,KASzBl2B,EAAS0S,UAAU6iB,UAAY,SAAShC,GAEtC,GAAIsC,EAKFA,GAJGtC,EAGIA,YAAkBl0B,IAAWk0B,YAAkBj0B,GACzCi0B,EAIA,GAAIl0B,GAAQk0B,GAPZ,KAUf/0B,KAAK42B,WAAaS,EAClBr3B,KAAK02B,QAAQK,UAAUM,IAmBzB71B,EAAS0S,UAAU0jB,aAAe,SAASzhB,EAAKjH,GAC9ClP,KAAK02B,SAAW12B,KAAK02B,QAAQkB,aAAazhB,GAEtCjH,GAAWA,EAAQ2oB,OACrB73B,KAAK63B,MAAM1hB,EAAKjH,IAQpB1N,EAAS0S,UAAU4jB,aAAe,WAChC,MAAO93B,MAAK02B,SAAW12B,KAAK02B,QAAQoB,oBAetCt2B,EAAS0S,UAAU2jB,MAAQ,SAASx3B,EAAI6O,GACtC,GAAKlP,KAAK22B,WAAmB9vB,QAANxG,EAAvB,CAEA,GAAI8V,GAAM5P,MAAMC,QAAQnG,GAAMA,GAAMA,GAGhCs2B,EAAY32B,KAAK22B,UAAU7f,aAAab,IAAIE,GAC9ChP,MACEkJ,MAAO,OACPC,IAAK,UAKLD,EAAQ,KACRC,EAAM,IAcV,IAbAqmB,EAAU/tB,QAAQ,SAAUmvB,GAC1B,GAAIxrB,GAAIwrB,EAAS1nB,MAAMhJ,UACnBiD,EAAI,OAASytB,GAAWA,EAASznB,IAAIjJ,UAAY0wB,EAAS1nB,MAAMhJ,WAEtD,OAAVgJ,GAAsBA,EAAJ9D,KACpB8D,EAAQ9D,IAGE,OAAR+D,GAAgBhG,EAAIgG,KACtBA,EAAMhG,KAII,OAAV+F,GAA0B,OAARC,EAAc,CAElC,GAAIT,IAAUQ,EAAQC,GAAO,EACzB8iB,EAAW5uB,KAAKJ,IAAKpE,KAAKs2B,MAAMhmB,IAAMtQ,KAAKs2B,MAAMjmB,MAAwB,KAAfC,EAAMD,IAEhEqnB,EAAWxoB,GAA+BrI,SAApBqI,EAAQwoB,QAAyBxoB,EAAQwoB,SAAU,CAC7E13B,MAAKs2B,MAAMnC,SAAStkB,EAASujB,EAAW,EAAGvjB,EAASujB,EAAW,EAAGsE,MAUtEl2B,EAAS0S,UAAU8jB,aAAe,WAEhC,GAAIC,GAAUj4B,KAAK22B,UAAU7f,aAC3B3S,EAAM,KACNC,EAAM,IAER,IAAI6zB,EAAS,CAEX,GAAIC,GAAUD,EAAQ9zB,IAAI,QAC1BA,GAAM+zB,EAAUv3B,EAAKuG,QAAQgxB,EAAQ7nB,MAAO,QAAQhJ,UAAY,IAKhE,IAAI8wB,GAAeF,EAAQ7zB,IAAI,QAC3B+zB,KACF/zB,EAAMzD,EAAKuG,QAAQixB,EAAa9nB,MAAO,QAAQhJ,UAEjD,IAAI+wB,GAAaH,EAAQ7zB,IAAI,MACzBg0B,KAEAh0B,EADS,MAAPA,EACIzD,EAAKuG,QAAQkxB,EAAW9nB,IAAK,QAAQjJ,UAGrC7C,KAAKJ,IAAIA,EAAKzD,EAAKuG,QAAQkxB,EAAW9nB,IAAK,QAAQjJ,YAK/D,OACElD,IAAa,MAAPA,EAAe,GAAIS,MAAKT,GAAO,KACrCC,IAAa,MAAPA,EAAe,GAAIQ,MAAKR,GAAO,OAUzC5C,EAAS0S,UAAU2iB,mBAAqB,SAAUhtB,GAChD,GAAIiG,GAAQ9P,KAAK02B,QAAQ2B,eAAexuB,GACpC6I,EAAQ1S,KAAK02B,QAAQ4B,gBAAgBzuB,GACrC0uB,EAAQ1uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAOwL,MAAQ1uB,EAAM0uB,MAC3DE,EAAQ5uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAO0L,MAAQ5uB,EAAM4uB,MAC3DjmB,EAAI+lB,EAAQ53B,EAAK+G,gBAAgB1H,KAAK2wB,IAAI+H,iBAC1CjmB,EAAIgmB,EAAQ93B,EAAKqH,eAAehI,KAAK2wB,IAAI+H,iBAEzCC,EAAO34B,KAAK02B,QAAQxnB,QAAQypB,MAAQ,KACpCp0B,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UACtB8D,EAAO54B,KAAKm2B,QAAQ3jB,GACpBqmB,EAAcF,EAAOA,EAAKC,EAAMr0B,EAAO4kB,GAAQyP,EAE/CzvB,EAAUxI,EAAKoJ,UAAUF,GACzBivB,EAAO,IASX,OARY,OAARhpB,EAAkEgpB,EAAO,OACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK61B,SAASlF,IAAIoI,YAAmBD,EAAO,OACpE94B,KAAKu2B,WAAa51B,EAAKyJ,UAAUjB,EAASnJ,KAAKu2B,UAAU5F,IAAIoI,YAAcD,EAAO,OAClFn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK02B,QAAQ/F,IAAIqI,UAAoBF,EAAO,cACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKy2B,WAAWhE,KAAqBqG,EAAO,cACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKw2B,YAAY/D,KAAoBqG,EAAO,eACpEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK2wB,IAAI5D,UAA4B+L,EAAO,eAG3EjvB,MAAOA,EACPiG,KAAMA,EAAOA,EAAKzP,GAAK,KACvBqS,MAAOA,EAAQA,EAAMumB,QAAU,KAC/BH,KAAMA,EACNP,MAAOA,EACPE,MAAOA,EACPjmB,EAAGA,EACHC,EAAGA,EACHmmB,KAAMA,EACNC,YAAaA,IAIjBh5B,EAAOD,QAAU4B,GAKb,SAAS3B,EAAQD,EAASM,GAsB9B,QAASuB,GAAS+Y,EAAWvY,EAAO8yB,EAAQ7lB,GAE1C,KAAM3I,MAAMC,QAAQuuB,IAAWA,YAAkBl0B,KAAYk0B,YAAkBnuB,QAAQ,CACrF,GAAIouB,GAAgB9lB,CACpBA,GAAU6lB,EACVA,EAASC,EAGX,GAAI9f,GAAKlV,IACTA,MAAKi1B,gBACH5kB,MAAO,KACPC,IAAO,KAEP4kB,YAAY,EAEZC,YAAa,SACb7hB,MAAO,KACPC,OAAQ,KACR6hB,UAAW,KACXC,UAAW,MAEbr1B,KAAKkP,QAAUvO,EAAKmG,cAAe9G,KAAKi1B,gBAGxCj1B,KAAKs1B,QAAQ9a,GAGbxa,KAAKgC,cAELhC,KAAKu1B,MACH5E,IAAK3wB,KAAK2wB,IACV6E,SAAUx1B,KAAKsG,MACfmvB,SACEnhB,GAAItU,KAAKsU,GAAGohB,KAAK11B,MACjByU,IAAKzU,KAAKyU,IAAIihB,KAAK11B,MACnByuB,KAAMzuB,KAAKyuB,KAAKiH,KAAK11B,OAEvB21B,eACAh1B,MACEm1B,SAAU5gB,EAAG6gB,UAAUL,KAAKxgB,GAC5B8gB,eAAgB9gB,EAAG+gB,gBAAgBP,KAAKxgB,GACxCghB,OAAQhhB,EAAGihB,QAAQT,KAAKxgB,GACxBkhB,aAAelhB,EAAGmhB,cAAcX,KAAKxgB,KAKzClV,KAAKs2B,MAAQ,GAAIz0B,GAAM7B,KAAKu1B,MAC5Bv1B,KAAKgC,WAAWuG,KAAKvI,KAAKs2B,OAC1Bt2B,KAAKu1B,KAAKe,MAAQt2B,KAAKs2B,MAGvBt2B,KAAK61B,SAAW,GAAI5yB,GAASjD,KAAKu1B,MAClCv1B,KAAKgC,WAAWuG,KAAKvI,KAAK61B,UAI1B71B,KAAKw2B,YAAc,GAAIh0B,GAAYxC,KAAKu1B,MACxCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKw2B,aAI1Bx2B,KAAKy2B,WAAa,GAAIh0B,GAAWzC,KAAKu1B,MACtCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKy2B,YAG1Bz2B,KAAKk5B,UAAY,GAAIl2B,GAAUhD,KAAKu1B,MACpCv1B,KAAKgC,WAAWuG,KAAKvI,KAAKk5B,WAE1Bl5B,KAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAElB52B,KAAKsU,GAAG,MAAO,SAAUzK,GACvBqL,EAAGuZ,KAAK,QAASvZ,EAAG2hB,mBAAmBhtB,MAEzC7J,KAAKsU,GAAG,YAAa,SAAUzK,GAC7BqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,MAE/C7J,KAAK2wB,IAAIjxB,KAAKo3B,cAAgB,SAAUjtB,GACtCqL,EAAGuZ,KAAK,cAAevZ,EAAG2hB,mBAAmBhtB,KAI3CqF,GACFlP,KAAKiU,WAAW/E,GAId6lB,GACF/0B,KAAK+2B,UAAUhC,GAIb9yB,EACFjC,KAAKg3B,SAAS/0B,GAGdjC,KAAKi3B,UArHT,GAEIt2B,IAFUT,EAAoB,IACrBA,EAAoB,IACtBA,EAAoB,IAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B2B,EAAQ3B,EAAoB,IAC5Bg3B,EAAOh3B,EAAoB,IAC3B+C,EAAW/C,EAAoB,IAC/BsC,EAActC,EAAoB,IAClCuC,EAAavC,EAAoB,IACjC8C,EAAY9C,EAAoB,GAgHpCuB,GAAQyS,UAAY,GAAIgjB,GAMxBz1B,EAAQyS,UAAU8iB,SAAW,SAAS/0B,GACpC,GAGIo1B,GAHAC,EAAiC,MAAlBt3B,KAAK22B,SAwBxB,IAhBEU,EAJGp1B,EAGIA,YAAiBpB,IAAWoB,YAAiBnB,GACvCmB,EAIA,GAAIpB,GAAQoB,GACvBkF,MACEkJ,MAAO,OACPC,IAAK,UAVI,KAgBftQ,KAAK22B,UAAYU,EACjBr3B,KAAKk5B,WAAal5B,KAAKk5B,UAAUlC,SAASK,GAEtCC,EACF,GAA0BzwB,QAAtB7G,KAAKkP,QAAQmB,OAA0CxJ,QAApB7G,KAAKkP,QAAQoB,IAAkB,CACpE,GAAID,GAA8BxJ,QAAtB7G,KAAKkP,QAAQmB,MAAqBrQ,KAAKkP,QAAQmB,MAAQ,KAC/DC,EAA4BzJ,QAApB7G,KAAKkP,QAAQoB,IAAqBtQ,KAAKkP,QAAQoB,IAAM,IAEjEtQ,MAAKy3B,UAAUpnB,EAAOC,GAAMonB,SAAS,QAGrC13B,MAAK23B,KAAKD,SAAS,KASzBj2B,EAAQyS,UAAU6iB,UAAY,SAAShC,GAErC,GAAIsC,EAKFA,GAJGtC,EAGIA,YAAkBl0B,IAAWk0B,YAAkBj0B,GACzCi0B,EAIA,GAAIl0B,GAAQk0B,GAPZ,KAUf/0B,KAAK42B,WAAaS,EAClBr3B,KAAKk5B,UAAUnC,UAAUM,IAS3B51B,EAAQyS,UAAUilB,UAAY,SAASF,EAAS3lB,EAAOC,GAGrD,MAFe1M,UAAXyM,IAAuBA,EAAS,IACrBzM,SAAX0M,IAAuBA,EAAS,IACG1M,SAAnC7G,KAAKk5B,UAAUnE,OAAOkE,GACjBj5B,KAAKk5B,UAAUnE,OAAOkE,GAASE,UAAU7lB,EAAMC,GAG/C,qBAAwB0lB,GASnCx3B,EAAQyS,UAAUklB,eAAiB,SAASH,GAC1C,MAAuCpyB,UAAnC7G,KAAKk5B,UAAUnE,OAAOkE,GAChBj5B,KAAKk5B,UAAUnE,OAAOkE,GAASxP,UAAkE5iB,SAAtD7G,KAAKk5B,UAAUhqB,QAAQ6lB,OAAOsE,WAAWJ,IAA+E,GAArDj5B,KAAKk5B,UAAUhqB,QAAQ6lB,OAAOsE,WAAWJ,KAGxJ,GAWXx3B,EAAQyS,UAAU8jB,aAAe,WAC/B,GAAI7zB,GAAM,KACNC,EAAM,IAGV,KAAK,GAAI60B,KAAWj5B,MAAKk5B,UAAUnE,OACjC,GAAI/0B,KAAKk5B,UAAUnE,OAAO3uB,eAAe6yB,IACO,GAA1Cj5B,KAAKk5B,UAAUnE,OAAOkE,GAASxP,QACjC,IAAK,GAAI3jB,GAAI,EAAGA,EAAI9F,KAAKk5B,UAAUnE,OAAOkE,GAAStC,UAAU1wB,OAAQH,IAAK,CACxE,GAAIgK,GAAO9P,KAAKk5B,UAAUnE,OAAOkE,GAAStC,UAAU7wB,GAChDxB,EAAQ3D,EAAKuG,QAAQ4I,EAAK0C,EAAG,QAAQnL,SACzClD,GAAa,MAAPA,EAAcG,EAAQH,EAAMG,EAAQA,EAAQH,EAClDC,EAAa,MAAPA,EAAcE,EAAcA,EAANF,EAAcE,EAAQF,EAM1D,OACED,IAAa,MAAPA,EAAe,GAAIS,MAAKT,GAAO,KACrCC,IAAa,MAAPA,EAAe,GAAIQ,MAAKR,GAAO,OAWzC3C,EAAQyS,UAAU2iB,mBAAqB,SAAUhtB,GAC/C,GAAI0uB,GAAQ1uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAOwL,MAAQ1uB,EAAM0uB,MAC3DE,EAAQ5uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAO0L,MAAQ5uB,EAAM4uB,MAC3DjmB,EAAI+lB,EAAQ53B,EAAK+G,gBAAgB1H,KAAK2wB,IAAI+H,iBAC1CjmB,EAAIgmB,EAAQ93B,EAAKqH,eAAehI,KAAK2wB,IAAI+H,iBACzCE,EAAO54B,KAAKm2B,QAAQ3jB,GAEpBrJ,EAAUxI,EAAKoJ,UAAUF,GACzBivB,EAAO,IACPn4B,GAAKyJ,UAAUjB,EAASnJ,KAAK61B,SAASlF,IAAIoI,YAA2BD,EAAO,OACvE94B,KAAKu2B,WAAa51B,EAAKyJ,UAAUjB,EAASnJ,KAAKu2B,UAAU5F,IAAIoI,YAAcD,EAAO,OAClFn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUI,UAAU3I,IAAIrQ,OAAWwY,EAAO,YACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUK,WAAW5I,IAAIrQ,OAAUwY,EAAO,YACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUM,WAAW7I,IAAIrQ,OAAUwY,EAAO,SACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKk5B,UAAUO,YAAY9I,IAAIrQ,OAASwY,EAAO,SACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKy2B,WAAWhE,KAAwBqG,EAAO,cACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAKw2B,YAAY/D,KAAuBqG,EAAO,eACvEn4B,EAAKyJ,UAAUjB,EAASnJ,KAAK2wB,IAAI5D,UAA+B+L,EAAO,aAEhF,IAAIx0B,MACAg1B,EAAYt5B,KAAKk5B,UAAUI,UAC3BC,EAAav5B,KAAKk5B,UAAUK,UAQhC,OAPKD,GAAUI,QACbp1B,EAAMiE,KAAK+wB,EAAUK,cAAclnB,IAEhC8mB,EAAWG,QACdp1B,EAAMiE,KAAKgxB,EAAWI,cAAclnB,KAIpC5I,MAAOA,EACPivB,KAAMA,EACNP,MAAOA,EACPE,MAAOA,EACPjmB,EAAGA,EACHC,EAAGA,EACHmmB,KAAMA,EACNt0B,MAAOA,IAKXzE,EAAOD,QAAU6B,GAKb,SAAS5B,EAAQD,EAASM,GAK9B,GAAI2D,GAAS3D,EAAoB,GAQjCN,GAAQg6B,qBAAuB,SAASrE,EAAMI,GAE5C,GADAJ,EAAKI,eACDA,GACgC,GAA9BpvB,MAAMC,QAAQmvB,GAAsB,CACtC,IAAK,GAAI7vB,GAAI,EAAGA,EAAI6vB,EAAY1vB,OAAQH,IACtC,GAA8Be,SAA1B8uB,EAAY7vB,GAAG+zB,OAAsB,CACvC,GAAIC,KACJA,GAASzpB,MAAQxM,EAAO8xB,EAAY7vB,GAAGuK,OAAO9I,SAASF,UACvDyyB,EAASxpB,IAAMzM,EAAO8xB,EAAY7vB,GAAGwK,KAAK/I,SAASF,UACnDkuB,EAAKI,YAAYptB,KAAKuxB,GAG1BvE,EAAKI,YAAYze,KAAK,SAAUtR,EAAGC,GACjC,MAAOD,GAAEyK,MAAQxK,EAAEwK,UAY3BzQ,EAAQm6B,kBAAoB,SAAUxE,EAAMI,GAC1C,GAAIA,GAAuD9uB,SAAxC0uB,EAAKC,SAASkD,gBAAgBplB,MAAqB,CACpE1T,EAAQg6B,qBAAqBrE,EAAMI,EAQnC,KAAK,GANDtlB,GAAQxM,EAAO0xB,EAAKe,MAAMjmB,OAC1BC,EAAMzM,EAAO0xB,EAAKe,MAAMhmB,KAExB0pB,EAAczE,EAAKe,MAAMhmB,IAAMilB,EAAKe,MAAMjmB,MAC1C4pB,EAAYD,EAAazE,EAAKC,SAASkD,gBAAgBplB,MAElDxN,EAAI,EAAGA,EAAI6vB,EAAY1vB,OAAQH,IACtC,GAA8Be,SAA1B8uB,EAAY7vB,GAAG+zB,OAAsB,CACvC,GAAIK,GAAYr2B,EAAO8xB,EAAY7vB,GAAGuK,OAClC8pB,EAAUt2B,EAAO8xB,EAAY7vB,GAAGwK,IAEpC,IAAoB,gBAAhB4pB,EAAUE,GACZ,KAAM,IAAIx2B,OAAM,qCAAuC+xB,EAAY7vB,GAAGuK,MAExE,IAAkB,gBAAd8pB,EAAQC,GACV,KAAM,IAAIx2B,OAAM,mCAAqC+xB,EAAY7vB,GAAGwK,IAGtE,IAAIC,GAAW4pB,EAAUD,CACzB,IAAI3pB,GAAY,EAAI0pB,EAAW,CAE7B,GAAIvP,GAAS,EACT2P,EAAW/pB,EAAIgqB,OACnB,QAAQ3E,EAAY7vB,GAAG+zB,QACrB,IAAK,QACCK,EAAUK,OAASJ,EAAQI,QAC7B7P,EAAS,GAEXwP,EAAUM,UAAUnqB,EAAMmqB,aAC1BN,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,QAErBiO,EAAQK,UAAUnqB,EAAMmqB,aACxBL,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAIxB,EAAO,QAE5B2P,EAASrmB,IAAI,EAAG,QAChB,MACF,KAAK,SACH,GAAI0mB,GAAYP,EAAQjN,KAAKgN,EAAU,QACnCK,EAAML,EAAUK,KAGpBL,GAAUS,KAAKtqB,EAAMsqB,QACrBT,EAAUU,MAAMvqB,EAAMuqB,SACtBV,EAAUO,KAAKpqB,EAAMoqB,QACrBN,EAAUD,EAAUI,QAGpBJ,EAAUK,IAAIA,GACdJ,EAAQI,IAAIA,GACZJ,EAAQnmB,IAAI0mB,EAAU,QAEtBR,EAAUhO,SAAS,EAAE,SACrBiO,EAAQjO,SAAS,EAAE,SAEnBmO,EAASrmB,IAAI,EAAG,QAChB,MACF,KAAK,UACCkmB,EAAUU,SAAWT,EAAQS,UAC/BlQ,EAAS,GAEXwP,EAAUU,MAAMvqB,EAAMuqB,SACtBV,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,UAErBiO,EAAQS,MAAMvqB,EAAMuqB,SACpBT,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAE,UACnBiO,EAAQnmB,IAAI0W,EAAO,UAEnB2P,EAASrmB,IAAI,EAAG,SAChB,MACF,KAAK,SACCkmB,EAAUO,QAAUN,EAAQM,SAC9B/P,EAAS,GAEXwP,EAAUO,KAAKpqB,EAAMoqB,QACrBP,EAAUhO,SAAS,EAAE,SACrBiO,EAAQM,KAAKpqB,EAAMoqB,QACnBN,EAAQjO,SAAS,EAAE,SACnBiO,EAAQnmB,IAAI0W,EAAO,SAEnB2P,EAASrmB,IAAI,EAAG,QAChB,MACF,SAEE,WADA6mB,SAAQtG,IAAI,2EAA4EoB,EAAY7vB,GAAG+zB,QAG3G,KAAmBQ,EAAZH,GAEL,OADA3E,EAAKI,YAAYptB,MAAM8H,MAAO6pB,EAAU7yB,UAAWiJ,IAAK6pB,EAAQ9yB,YACxDsuB,EAAY7vB,GAAG+zB,QACrB,IAAK,QACHK,EAAUlmB,IAAI,EAAG,QACjBmmB,EAAQnmB,IAAI,EAAG,OACf,MACF,KAAK,SACHkmB,EAAUlmB,IAAI,EAAG,SACjBmmB,EAAQnmB,IAAI,EAAG,QACf,MACF,KAAK,UACHkmB,EAAUlmB,IAAI,EAAG,UACjBmmB,EAAQnmB,IAAI,EAAG,SACf,MACF,KAAK,SACHkmB,EAAUlmB,IAAI,EAAG,KACjBmmB,EAAQnmB,IAAI,EAAG,IACf,MACF,SAEE,WADA6mB,SAAQtG,IAAI,2EAA4EoB,EAAY7vB,GAAG+zB,QAI7GtE,EAAKI,YAAYptB,MAAM8H,MAAO6pB,EAAU7yB,UAAWiJ,IAAK6pB,EAAQ9yB,aAKtEzH,EAAQk7B,iBAAiBvF,EAEzB,IAAIwF,GAAcn7B,EAAQo7B,SAASzF,EAAKe,MAAMjmB,MAAOklB,EAAKI,aACtDsF,EAAYr7B,EAAQo7B,SAASzF,EAAKe,MAAMhmB,IAAIilB,EAAKI,aACjDuF,EAAa3F,EAAKe,MAAMjmB,MACxB8qB,EAAW5F,EAAKe,MAAMhmB,GACA,IAAtByqB,EAAYrB,SAAiBwB,EAAwC,GAA3B3F,EAAKe,MAAM8E,aAAuBL,EAAYb,UAAY,EAAIa,EAAYZ,QAAU,GAC1G,GAApBc,EAAUvB,SAAmByB,EAAsC,GAAzB5F,EAAKe,MAAM+E,WAAuBJ,EAAUf,UAAY,EAAMe,EAAUd,QAAU,IACtG,GAAtBY,EAAYrB,QAAsC,GAApBuB,EAAUvB,SAC1CnE,EAAKe,MAAMgF,YAAYJ,EAAYC,KAYzCv7B,EAAQk7B,iBAAmB,SAASvF,GAGlC,IAAK,GAFDI,GAAcJ,EAAKI,YACnB4F,KACKz1B,EAAI,EAAGA,EAAI6vB,EAAY1vB,OAAQH,IACtC,IAAK,GAAI2mB,GAAI,EAAGA,EAAIkJ,EAAY1vB,OAAQwmB,IAClC3mB,GAAK2mB,GAA8B,GAAzBkJ,EAAYlJ,GAAGpV,QAA2C,GAAzBse,EAAY7vB,GAAGuR,SAExDse,EAAYlJ,GAAGpc,OAASslB,EAAY7vB,GAAGuK,OAASslB,EAAYlJ,GAAGnc,KAAOqlB,EAAY7vB,GAAGwK,IACvFqlB,EAAYlJ,GAAGpV,QAAS,EAGjBse,EAAYlJ,GAAGpc,OAASslB,EAAY7vB,GAAGuK,OAASslB,EAAYlJ,GAAGpc,OAASslB,EAAY7vB,GAAGwK,KAC9FqlB,EAAY7vB,GAAGwK,IAAMqlB,EAAYlJ,GAAGnc,IACpCqlB,EAAYlJ,GAAGpV,QAAS,GAGjBse,EAAYlJ,GAAGnc,KAAOqlB,EAAY7vB,GAAGuK,OAASslB,EAAYlJ,GAAGnc,KAAOqlB,EAAY7vB,GAAGwK,MAC1FqlB,EAAY7vB,GAAGuK,MAAQslB,EAAYlJ,GAAGpc,MACtCslB,EAAYlJ,GAAGpV,QAAS,GAMhC,KAAK,GAAIvR,GAAI,EAAGA,EAAI6vB,EAAY1vB,OAAQH,IAClC6vB,EAAY7vB,GAAGuR,UAAW,GAC5BkkB,EAAUhzB,KAAKotB,EAAY7vB,GAI/ByvB,GAAKI,YAAc4F,EACnBhG,EAAKI,YAAYze,KAAK,SAAUtR,EAAGC,GACjC,MAAOD,GAAEyK,MAAQxK,EAAEwK,SAIvBzQ,EAAQ47B,WAAa,SAASC,GAC5B,IAAK,GAAI31B,GAAG,EAAGA,EAAI21B,EAAMx1B,OAAQH,IAC/B+0B,QAAQtG,IAAIzuB,EAAG,GAAIlB,MAAK62B,EAAM31B,GAAGuK,OAAO,GAAIzL,MAAK62B,EAAM31B,GAAGwK,KAAMmrB,EAAM31B,GAAGuK,MAAOorB,EAAM31B,GAAGwK,IAAKmrB,EAAM31B,GAAGuR,SAS3GzX,EAAQ87B,oBAAsB,SAASC,EAAUC,GAG/C,IAAK,GAFDC,IAAe,EACfC,EAAeH,EAASI,QAAQ10B,UAC3BvB,EAAI,EAAGA,EAAI61B,EAAShG,YAAY1vB,OAAQH,IAAK,CACpD,GAAIo0B,GAAYyB,EAAShG,YAAY7vB,GAAGuK,MACpC8pB,EAAUwB,EAAShG,YAAY7vB,GAAGwK,GACtC,IAAIwrB,GAAgB5B,GAA4BC,EAAf2B,EAAwB,CACvDD,GAAe,CACf,QAIJ,GAAoB,GAAhBA,GAAwBC,EAAeH,EAAS5H,KAAK1sB,WAAay0B,GAAgBF,EAAc,CAClG,GAAI1rB,GAAYrM,EAAO+3B,GACnBI,EAAWn4B,EAAOs2B,EAElBjqB,GAAUuqB,QAAUuB,EAASvB,OAASkB,EAASM,cAAe,EACzD/rB,EAAU0qB,SAAWoB,EAASpB,QAAUe,EAASO,eAAgB,EACjEhsB,EAAUsqB,aAAewB,EAASxB,cAAcmB,EAASQ,aAAc,GAEhFR,EAASI,QAAUC,EAASz0B,WAmChC3H,EAAQk2B,SAAW,SAASoB,EAAM0B,EAAMtlB,GACtC,GAAoC,GAAhC4jB,EAAK3B,KAAKI,YAAY1vB,OAAa,CACrC,GAAIm2B,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EACvC,QAAQslB,EAAKvxB,UAAY+0B,EAAW1R,QAAU0R,EAAW73B,MAGzD,GAAIm1B,GAAS95B,EAAQo7B,SAASpC,EAAM1B,EAAK3B,KAAKI,YACzB,IAAjB+D,EAAOA,SACTd,EAAOc,EAAOQ,UAGhB,IAAI3pB,GAAW3Q,EAAQy8B,yBAAyBnF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAMjmB,MAAO6mB,EAAKZ,MAAMhmB,IACpGsoB,GAAOh5B,EAAQ08B,qBAAqBpF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAOsC,EAEvE,IAAIwD,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EAAO/C,EAC9C,QAAQqoB,EAAKvxB,UAAY+0B,EAAW1R,QAAU0R,EAAW73B,OAa7D3E,EAAQs2B,OAAS,SAASgB,EAAM1kB,EAAGc,GACjC,GAAoC,GAAhC4jB,EAAK3B,KAAKI,YAAY1vB,OAAa,CACrC,GAAIm2B,GAAalF,EAAKZ,MAAM8F,WAAW9oB,EACvC,OAAO,IAAI1O,MAAK4N,EAAI4pB,EAAW73B,MAAQ63B,EAAW1R,QAGlD,GAAI6R,GAAiB38B,EAAQy8B,yBAAyBnF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAMjmB,MAAO6mB,EAAKZ,MAAMhmB,KACtGksB,EAAgBtF,EAAKZ,MAAMhmB,IAAM4mB,EAAKZ,MAAMjmB,MAAQksB,EACpDE,EAAkBD,EAAgBhqB,EAAIc,EACtCopB,EAA4B98B,EAAQ+8B,6BAA6BzF,EAAK3B,KAAKI,YAAauB,EAAKZ,MAAOmG,GAEpGG,EAAU,GAAIh4B,MAAK83B,EAA4BD,EAAkBvF,EAAKZ,MAAMjmB,MAChF,OAAOusB,IAYXh9B,EAAQy8B,yBAA2B,SAAS1G,EAAatlB,EAAOC,GAE9D,IAAK,GADDC,GAAW,EACNzK,EAAI,EAAGA,EAAI6vB,EAAY1vB,OAAQH,IAAK,CAC3C,GAAIo0B,GAAYvE,EAAY7vB,GAAGuK,MAC3B8pB,EAAUxE,EAAY7vB,GAAGwK,GAEzB4pB,IAAa7pB,GAAmBC,EAAV6pB,IACxB5pB,GAAY4pB,EAAUD,GAG1B,MAAO3pB,IAWT3Q,EAAQ08B,qBAAuB,SAAS3G,EAAaW,EAAOsC,GAG1D,MAFAA,GAAO/0B,EAAO+0B,GAAMrxB,SAASF,UAC7BuxB,GAAQh5B,EAAQi9B,wBAAwBlH,EAAYW,EAAMsC,IAI5Dh5B,EAAQi9B,wBAA0B,SAASlH,EAAaW,EAAOsC,GAC7D,GAAIkE,GAAa,CACjBlE,GAAO/0B,EAAO+0B,GAAMrxB,SAASF,SAE7B,KAAK,GAAIvB,GAAI,EAAGA,EAAI6vB,EAAY1vB,OAAQH,IAAK,CAC3C,GAAIo0B,GAAYvE,EAAY7vB,GAAGuK,MAC3B8pB,EAAUxE,EAAY7vB,GAAGwK,GAEzB4pB,IAAa5D,EAAMjmB,OAAS8pB,EAAU7D,EAAMhmB,KAC1CsoB,GAAQuB,IACV2C,GAAe3C,EAAUD,GAI/B,MAAO4C,IAWTl9B,EAAQ+8B,6BAA+B,SAAShH,EAAaW,EAAOyG,GAKlE,IAAK,GAJDR,GAAiB,EACjBhsB,EAAW,EACXysB,EAAgB1G,EAAMjmB,MAEjBvK,EAAI,EAAGA,EAAI6vB,EAAY1vB,OAAQH,IAAK,CAC3C,GAAIo0B,GAAYvE,EAAY7vB,GAAGuK,MAC3B8pB,EAAUxE,EAAY7vB,GAAGwK,GAE7B,IAAI4pB,GAAa5D,EAAMjmB,OAAS8pB,EAAU7D,EAAMhmB,IAAK,CAGnD,GAFAC,GAAY2pB,EAAY8C,EACxBA,EAAgB7C,EACZ5pB,GAAYwsB,EACd,KAGAR,IAAkBpC,EAAUD,GAKlC,MAAOqC,IAaT38B,EAAQq9B,mBAAqB,SAAStH,EAAaiD,EAAMsE,EAAWC,GAClE,GAAInC,GAAWp7B,EAAQo7B,SAASpC,EAAMjD,EACtC,OAAuB,IAAnBqF,EAAStB,OACK,EAAZwD,EACuB,GAArBC,EACKnC,EAASd,WAAac,EAASb,QAAUvB,GAAQ,EAGjDoC,EAASd,UAAY,EAIL,GAArBiD,EACKnC,EAASb,SAAWvB,EAAOoC,EAASd,WAAa,EAGjDc,EAASb,QAAU,EAKvBvB,GAaXh5B,EAAQo7B,SAAW,SAASpC,EAAMjD,GAChC,IAAK,GAAI7vB,GAAI,EAAGA,EAAI6vB,EAAY1vB,OAAQH,IAAK,CAC3C,GAAIo0B,GAAYvE,EAAY7vB,GAAGuK,MAC3B8pB,EAAUxE,EAAY7vB,GAAGwK,GAE7B,IAAIsoB,GAAQsB,GAAoBC,EAAPvB,EACvB,OAAQc,QAAQ,EAAMQ,UAAWA,EAAWC,QAASA,GAIzD,OAAQT,QAAQ,EAAOQ,UAAWA,EAAWC,QAASA,KAKpD,SAASt6B,EAAQD,EAASM,GA4B9B,QAAS0B,GAASyO,EAAOC,EAAK8sB,EAAaC,EAAiBC,EAAaC,GAEvEv9B,KAAK+7B,QAAU,EAEf/7B,KAAKw9B,WAAY,EACjBx9B,KAAKy9B,UAAY,EACjBz9B,KAAKmpB,KAAO,EACZnpB,KAAKuE,MAAQ,EAEbvE,KAAK09B,YACL19B,KAAK29B,UACL39B,KAAK49B,UAAY,EAEjB59B,KAAK69B,YAAc,EAAO,EAAM,EAAI,IACpC79B,KAAK89B,YAAc,IAAO,GAAM,EAAI,GAEpC99B,KAAKu9B,WAAaA,EAElBv9B,KAAKm0B,SAAS9jB,EAAOC,EAAK8sB,EAAaC,EAAiBC,GAe1D17B,EAASsS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK8sB,EAAaC,EAAiBC,GAC/Et9B,KAAK8zB,OAA6BjtB,SAApBy2B,EAAYn5B,IAAoBkM,EAAQitB,EAAYn5B,IAClEnE,KAAK+zB,KAA2BltB,SAApBy2B,EAAYl5B,IAAoBkM,EAAMgtB,EAAYl5B,IAE1DpE,KAAK8zB,QAAU9zB,KAAK+zB,OACtB/zB,KAAK8zB,QAAU,IACf9zB,KAAK+zB,MAAQ,GAGO,GAAlB/zB,KAAKw9B,WACPx9B,KAAK+9B,eAAeX,EAAaC,GAGnCr9B,KAAKg+B,SAASV,IAOhB17B,EAASsS,UAAU6pB,eAAiB,SAASX,EAAaC,GAExD,GAAItqB,GAAO/S,KAAK+zB,KAAO/zB,KAAK8zB,OACxBmK,EAAkB,IAAPlrB,EACXmrB,EAAmBd,GAAea,EAAWZ,GAC7Cc,EAAmB35B,KAAK+pB,MAAM/pB,KAAK+vB,IAAI0J,GAAUz5B,KAAKgwB,MAEtD4J,EAAe,GACfC,EAAkB75B,KAAKkwB,IAAI,GAAGyJ,GAE9B9tB,EAAQ,CACW,GAAnB8tB,IACF9tB,EAAQ8tB,EAIV,KAAK,GADDG,IAAgB,EACXx4B,EAAIuK,EAAO7L,KAAKknB,IAAI5lB,IAAMtB,KAAKknB,IAAIyS,GAAmBr4B,IAAK,CAClEu4B,EAAkB75B,KAAKkwB,IAAI,GAAG5uB,EAC9B,KAAK,GAAI2mB,GAAI,EAAGA,EAAIzsB,KAAK89B,WAAW73B,OAAQwmB,IAAK,CAC/C,GAAI8R,GAAWF,EAAkBr+B,KAAK89B,WAAWrR,EACjD,IAAI8R,GAAYL,EAAkB,CAChCI,GAAgB,EAChBF,EAAe3R,CACf,QAGJ,GAAqB,GAAjB6R,EACF,MAGJt+B,KAAKy9B,UAAYW,EACjBp+B,KAAKuE,MAAQ85B,EACbr+B,KAAKmpB,KAAOkV,EAAkBr+B,KAAK89B,WAAWM,IAShDx8B,EAASsS,UAAU8pB,SAAW,SAASV,GACjBz2B,SAAhBy2B,IACFA,KAGF,IAAIkB,GAAgC33B,SAApBy2B,EAAYn5B,IAAoBnE,KAAK8zB,OAAuB,EAAb9zB,KAAKuE,MAAYvE,KAAK89B,WAAW99B,KAAKy9B,WAAcH,EAAYn5B,IAC3Hs6B,EAA8B53B,SAApBy2B,EAAYl5B,IAAoBpE,KAAK+zB,KAAQ/zB,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAAcH,EAAYl5B,GAEvHpE,MAAK29B,UAAgC92B,SAApBy2B,EAAYl5B,IAAoBpE,KAAK0+B,aAAaD,GAAWnB,EAAYl5B,IAC1FpE,KAAK09B,YAAkC72B,SAApBy2B,EAAYn5B,IAAoBnE,KAAK0+B,aAAaF,GAAalB,EAAYn5B,IAGvE,GAAnBnE,KAAKu9B,aAAuBv9B,KAAK29B,UAAY39B,KAAK09B,aAAe19B,KAAKmpB,MAAQ,IAChFnpB,KAAK29B,WAAa39B,KAAK29B,UAAY39B,KAAKmpB,MAG1CnpB,KAAK49B,UAAY59B,KAAK0+B,aAAaD,GAAWA,EAAUz+B,KAAK0+B,aAAaF,GAAaA,EACvFx+B,KAAK2+B,YAAc3+B,KAAK29B,UAAY39B,KAAK09B,YAGzC19B,KAAK+7B,QAAU/7B,KAAK29B,WAGtB/7B,EAASsS,UAAUwqB,aAAe,SAASp6B,GACzC,GAAIs6B,GAAUt6B,EAASA,GAAStE,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAClE,OAAIn5B,IAAStE,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,YAAc,GAAOz9B,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAC7FmB,EAAW5+B,KAAKuE,MAAQvE,KAAK89B,WAAW99B,KAAKy9B,WAG7CmB,GASXh9B,EAASsS,UAAU2qB,QAAU,WAC3B,MAAQ7+B,MAAK+7B,SAAW/7B,KAAK09B,aAM/B97B,EAASsS,UAAUmV,KAAO,WACxB,GAAImJ,GAAOxyB,KAAK+7B,OAChB/7B,MAAK+7B,SAAW/7B,KAAKmpB,KAGjBnpB,KAAK+7B,SAAWvJ,IAClBxyB,KAAK+7B,QAAU/7B,KAAK+zB,OAOxBnyB,EAASsS,UAAU4qB,SAAW,WAC5B9+B,KAAK+7B,SAAW/7B,KAAKmpB,KACrBnpB,KAAK29B,WAAa39B,KAAKmpB,KACvBnpB,KAAK2+B,YAAc3+B,KAAK29B,UAAY39B,KAAK09B,aAS3C97B,EAASsS,UAAUkV,WAAa,SAAS2V,GAEvC,GAAIhD,GAAWv3B,KAAKknB,IAAI1rB,KAAK+7B,SAAW/7B,KAAKmpB,KAAO,EAAK,EAAInpB,KAAK+7B,QAC9DlH,EAAc,GAAK5wB,OAAO83B,GAASlH,YAAY,EAGnD,IAAgBhuB,SAAbk4B,GAA2B/5B,MAAMf,OAAO86B,KAqCzC,GAAgC,IAA5BlK,EAAY7tB,QAAQ,MAA0C,IAA5B6tB,EAAY7tB,QAAQ,KAExD,IAAK,GAAIlB,GAAI+uB,EAAY5uB,OAAS,EAAGH,EAAI,EAAGA,IAAK,CAC/C,GAAsB,KAAlB+uB,EAAY/uB,GAGX,CAAA,GAAsB,KAAlB+uB,EAAY/uB,IAA+B,KAAlB+uB,EAAY/uB,GAAW,CACvD+uB,EAAcA,EAAY9oB,MAAM,EAAGjG,EACnC,OAGA,MAPA+uB,EAAcA,EAAY9oB,MAAM,EAAGjG,QAzCY,CAErD,GAAIk5B,GAAM,GACNt2B,EAAQmsB,EAAY7tB,QAAQ,IAoBhC,IAnBY,IAAT0B,IAEDs2B,EAAMnK,EAAY9oB,MAAMrD,GAExBmsB,EAAcA,EAAY9oB,MAAM,EAAGrD,IAErCA,EAAQlE,KAAKJ,IAAIywB,EAAY7tB,QAAQ,KAAM6tB,EAAY7tB,QAAQ,MAClD,KAAV0B,GAEe,IAAbq2B,IACDlK,GAAe,KAGjBnsB,EAAQmsB,EAAY5uB,OAAS84B,GAEV,IAAbA,IAENr2B,GAASq2B,EAAW,GAEnBr2B,EAAQmsB,EAAY5uB,OAErB,IAAI,GAAIg5B,GAAMv2B,EAAQmsB,EAAY5uB,OAAQg5B,EAAM,EAAGA,IACjDpK,GAAe,QAKjBA,GAAcA,EAAY9oB,MAAM,EAAGrD,EAGrCmsB,IAAemK,EAoBjB,MAAOnK,IAQTjzB,EAASsS,UAAUgrB,QAAU,WAC3B,MAAQl/B,MAAK+7B,SAAW/7B,KAAKuE,MAAQvE,KAAK69B,WAAW79B,KAAKy9B,aAAe,GAG3E59B,EAAOD,QAAUgC,GAKb,SAAS/B,EAAQD,EAASM,GAgB9B,QAAS2B,GAAM0zB,EAAMrmB,GACnB,GAAIiwB,GAAMt7B,IAASu7B,MAAM,GAAGC,QAAQ,GAAGC,QAAQ,GAAGC,aAAa,EAC/Dv/B,MAAKqQ,MAAQ8uB,EAAI7E,QAAQtmB,IAAI,GAAI,QAAQ3M,UACzCrH,KAAKsQ,IAAM6uB,EAAI7E,QAAQtmB,IAAI,EAAG,QAAQ3M,UAEtCrH,KAAKu1B,KAAOA,EACZv1B,KAAKw/B,gBAAkB,EACvBx/B,KAAKy/B,YAAc,EACnBz/B,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,EAGlBr7B,KAAKi1B,gBACH5kB,MAAO,KACPC,IAAK,KACL4sB,UAAW,aACXwC,UAAU,EACVC,UAAU,EACVx7B,IAAK,KACLC,IAAK,KACLw7B,QAAS,GACTC,QAAS,UAEX7/B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAEpCj1B,KAAKsG,OACHw5B,UAEF9/B,KAAK+/B,aAAe,KAGpB//B,KAAKu1B,KAAKE,QAAQnhB,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACzDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OACpDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,OAGvDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,OAAQtU,KAAKmgC,QAAQzK,KAAK11B,OAG/CA,KAAKu1B,KAAKE,QAAQnhB,GAAG,aAAmBtU,KAAKogC,cAAc1K,KAAK11B,OAChEA,KAAKu1B,KAAKE,QAAQnhB,GAAG,iBAAmBtU,KAAKogC,cAAc1K,KAAK11B,OAGhEA,KAAKu1B,KAAKE,QAAQnhB,GAAG,QAAStU,KAAKqgC,SAAS3K,KAAK11B,OACjDA,KAAKu1B,KAAKE,QAAQnhB,GAAG,QAAStU,KAAKsgC,SAAS5K,KAAK11B,OAEjDA,KAAKiU,WAAW/E,GAsClB,QAASqxB,GAAmBrD,GAC1B,GAAiB,cAAbA,GAA0C,YAAbA,EAC/B,KAAM,IAAIx2B,WAAU,sBAAwBw2B,EAAY,yCAif5D,QAASsD,GAAYV,EAAO32B,GAC1B,OACEqJ,EAAGstB,EAAMvH,MAAQ53B,EAAK+G,gBAAgByB,GACtCsJ,EAAGqtB,EAAMrH,MAAQ93B,EAAKqH,eAAemB,IAxlBzC,GAAIxI,GAAOT,EAAoB,GAC3BugC,EAAavgC,EAAoB,IACjC2D,EAAS3D,EAAoB,IAC7BqC,EAAYrC,EAAoB,IAChCyB,EAAWzB,EAAoB,GA2DnC2B,GAAMqS,UAAY,GAAI3R,GAkBtBV,EAAMqS,UAAUD,WAAa,SAAU/E,GACrC,GAAIA,EAAS,CAEX,GAAIP,IAAU,YAAa,MAAO,MAAO,UAAW,UAAW,WAAY,WAAY,WAAY,cACnGhO,GAAK0F,gBAAgBsI,EAAQ3O,KAAKkP,QAASA,IAEvC,SAAWA,IAAW,OAASA,KAEjClP,KAAKm0B,SAASjlB,EAAQmB,MAAOnB,EAAQoB,OA4B3CzO,EAAMqS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAKonB,EAASgJ,GACnDA,KAAW,IACbA,GAAS,EAEX,IAAI5M,GAAkBjtB,QAATwJ,EAAqB1P,EAAKuG,QAAQmJ,EAAO,QAAQhJ,UAAY,KACtE0sB,EAAgBltB,QAAPyJ,EAAqB3P,EAAKuG,QAAQoJ,EAAK,QAAQjJ,UAAc,IAG1E,IAFArH,KAAK2gC,mBAEDjJ,EAAS,CACX,GAAIxiB,GAAKlV,KACL4gC,EAAY5gC,KAAKqQ,MACjBwwB,EAAU7gC,KAAKsQ,IACfC,EAA8B,gBAAZmnB,GAAuBA,EAAU,IACnDoJ,GAAW,GAAIl8B,OAAOyC,UACtB05B,GAAa,EAEb1X,EAAO,WACT,IAAKnU,EAAG5O,MAAMw5B,MAAMkB,SAAU,CAC5B,GAAI7B,IAAM,GAAIv6B,OAAOyC,UACjBuxB,EAAOuG,EAAM2B,EACbG,EAAOrI,EAAOroB,EACdhE,EAAK00B,GAAmB,OAAXnN,EAAmBA,EAASnzB,EAAKyP,cAAcwoB,EAAMgI,EAAW9M,EAAQvjB,GACrFjG,EAAK22B,GAAiB,OAATlN,EAAmBA,EAASpzB,EAAKyP,cAAcwoB,EAAMiI,EAAS9M,EAAMxjB,EAErF2wB,GAAUhsB,EAAGomB,YAAY/uB,EAAGjC,GAC5B3I,EAASo4B,kBAAkB7kB,EAAGqgB,KAAMrgB,EAAGhG,QAAQymB,aAC/CoL,EAAaA,GAAcG,EACvBA,GACFhsB,EAAGqgB,KAAKE,QAAQhH,KAAK,eAAgBpe,MAAO,GAAIzL,MAAKsQ,EAAG7E,OAAQC,IAAK,GAAI1L,MAAKsQ,EAAG5E,KAAMowB,OAAOA,IAG5FO,EACEF,GACF7rB,EAAGqgB,KAAKE,QAAQhH,KAAK,gBAAiBpe,MAAO,GAAIzL,MAAKsQ,EAAG7E,OAAQC,IAAK,GAAI1L,MAAKsQ,EAAG5E,KAAMowB,OAAOA,IAMjGxrB,EAAG6qB,aAAexlB,WAAW8O,EAAM,KAKzC,OAAOA,KAGP,GAAI6X,GAAUlhC,KAAKs7B,YAAYxH,EAAQC,EAEvC,IADApyB,EAASo4B,kBAAkB/5B,KAAKu1B,KAAMv1B,KAAKkP,QAAQymB,aAC/CuL,EAAS,CACX,GAAIrsB,IAAUxE,MAAO,GAAIzL,MAAK5E,KAAKqQ,OAAQC,IAAK,GAAI1L,MAAK5E,KAAKsQ,KAAMowB,OAAOA,EAC3E1gC,MAAKu1B,KAAKE,QAAQhH,KAAK,cAAe5Z,GACtC7U,KAAKu1B,KAAKE,QAAQhH,KAAK,eAAgB5Z,KAS7ChT,EAAMqS,UAAUysB,iBAAmB,WAC7B3gC,KAAK+/B,eACPzlB,aAAata,KAAK+/B,cAClB//B,KAAK+/B,aAAe,OAaxBl+B,EAAMqS,UAAUonB,YAAc,SAASjrB,EAAOC,GAC5C,GAII4c,GAJAiU,EAAqB,MAAT9wB,EAAiB1P,EAAKuG,QAAQmJ,EAAO,QAAQhJ,UAAYrH,KAAKqQ,MAC1E+wB,EAAmB,MAAP9wB,EAAiB3P,EAAKuG,QAAQoJ,EAAK,QAAQjJ,UAAcrH,KAAKsQ,IAC1ElM,EAA2B,MAApBpE,KAAKkP,QAAQ9K,IAAezD,EAAKuG,QAAQlH,KAAKkP,QAAQ9K,IAAK,QAAQiD,UAAY,KACtFlD,EAA2B,MAApBnE,KAAKkP,QAAQ/K,IAAexD,EAAKuG,QAAQlH,KAAKkP,QAAQ/K,IAAK,QAAQkD,UAAY,IAI1F,IAAIrC,MAAMm8B,IAA0B,OAAbA,EACrB,KAAM,IAAIv9B,OAAM,kBAAoByM,EAAQ,IAE9C,IAAIrL,MAAMo8B,IAAsB,OAAXA,EACnB,KAAM,IAAIx9B,OAAM,gBAAkB0M,EAAM,IAyC1C,IArCa6wB,EAATC,IACFA,EAASD,GAIC,OAARh9B,GACaA,EAAXg9B,IACFjU,EAAQ/oB,EAAMg9B,EACdA,GAAYjU,EACZkU,GAAUlU,EAGC,MAAP9oB,GACEg9B,EAASh9B,IACXg9B,EAASh9B,IAOL,OAARA,GACEg9B,EAASh9B,IACX8oB,EAAQkU,EAASh9B,EACjB+8B,GAAYjU,EACZkU,GAAUlU,EAGC,MAAP/oB,GACaA,EAAXg9B,IACFA,EAAWh9B,IAOU,OAAzBnE,KAAKkP,QAAQ0wB,QAAkB,CACjC,GAAIA,GAAUvZ,WAAWrmB,KAAKkP,QAAQ0wB,QACxB,GAAVA,IACFA,EAAU,GAEcA,EAArBwB,EAASD,IACPnhC,KAAKsQ,IAAMtQ,KAAKqQ,QAAWuvB,GAAWuB,EAAWnhC,KAAKqQ,OAAS+wB,EAASphC,KAAKsQ,KAEhF6wB,EAAWnhC,KAAKqQ,MAChB+wB,EAASphC,KAAKsQ,MAId4c,EAAQ0S,GAAWwB,EAASD,GAC5BA,GAAYjU,EAAO,EACnBkU,GAAUlU,EAAO,IAMvB,GAA6B,OAAzBltB,KAAKkP,QAAQ2wB,QAAkB,CACjC,GAAIA,GAAUxZ,WAAWrmB,KAAKkP,QAAQ2wB,QACxB,GAAVA,IACFA,EAAU,GAGPuB,EAASD,EAAYtB,IACnB7/B,KAAKsQ,IAAMtQ,KAAKqQ,QAAWwvB,GAAWsB,EAAWnhC,KAAKqQ,OAAS+wB,EAASphC,KAAKsQ,KAEhF6wB,EAAWnhC,KAAKqQ,MAChB+wB,EAASphC,KAAKsQ,MAId4c,EAASkU,EAASD,EAAYtB,EAC9BsB,GAAYjU,EAAO,EACnBkU,GAAUlU,EAAO,IAKvB,GAAIgU,GAAWlhC,KAAKqQ,OAAS8wB,GAAYnhC,KAAKsQ,KAAO8wB,CAUrD,OAPOD,IAAYnhC,KAAKqQ,OAAS8wB,GAAcnhC,KAAKsQ,KAAS8wB,GAAYphC,KAAKqQ,OAAS+wB,GAAYphC,KAAKsQ,KACjGtQ,KAAKqQ,OAAS8wB,GAAYnhC,KAAKqQ,OAAS+wB,GAAcphC,KAAKsQ,KAAO6wB,GAAcnhC,KAAKsQ,KAAO8wB,GACjGphC,KAAKu1B,KAAKE,QAAQhH,KAAK,oBAGzBzuB,KAAKqQ,MAAQ8wB,EACbnhC,KAAKsQ,IAAM8wB,EACJF,GAOTr/B,EAAMqS,UAAUmtB,SAAW,WACzB,OACEhxB,MAAOrQ,KAAKqQ,MACZC,IAAKtQ,KAAKsQ,MAUdzO,EAAMqS,UAAUkoB,WAAa,SAAU9oB,EAAOguB,GAC5C,MAAOz/B,GAAMu6B,WAAWp8B,KAAKqQ,MAAOrQ,KAAKsQ,IAAKgD,EAAOguB,IAWvDz/B,EAAMu6B,WAAa,SAAU/rB,EAAOC,EAAKgD,EAAOguB,GAI9C,MAHoBz6B,UAAhBy6B,IACFA,EAAc,GAEH,GAAThuB,GAAehD,EAAMD,GAAS,GAE9Bqa,OAAQra,EACR9L,MAAO+O,GAAShD,EAAMD,EAAQixB,KAK9B5W,OAAQ,EACRnmB,MAAO,IAUb1C,EAAMqS,UAAU8rB,aAAe,SAASn2B,GACtC7J,KAAKw/B,gBAAkB,EACvBx/B,KAAKuhC,cAAgB,EAEhBvhC,KAAKkP,QAAQwwB,UAIb1/B,KAAKsG,MAAMw5B,MAAM0B,gBAEtBxhC,KAAKsG,MAAMw5B,MAAMzvB,MAAQrQ,KAAKqQ,MAC9BrQ,KAAKsG,MAAMw5B,MAAMxvB,IAAMtQ,KAAKsQ,IAC5BtQ,KAAKsG,MAAMw5B,MAAMkB,UAAW,EAExBhhC,KAAKu1B,KAAK5E,IAAIjxB,OAChBM,KAAKu1B,KAAK5E,IAAIjxB,KAAKgO,MAAMmgB,OAAS,UAStChsB,EAAMqS,UAAU+rB,QAAU,SAAUp2B,GAElC,GAAK7J,KAAKkP,QAAQwwB,UAGb1/B,KAAKsG,MAAMw5B,MAAM0B,cAAtB,CAEA,GAAItE,GAAYl9B,KAAKkP,QAAQguB,SAC7BqD,GAAkBrD,EAElB,IAAI5N,GAAsB,cAAb4N,EAA6BrzB,EAAM2uB,QAAQiJ,OAAS53B,EAAM2uB,QAAQkJ,MAC/EpS,IAAStvB,KAAKw/B,eACd,IAAIpM,GAAYpzB,KAAKsG,MAAMw5B,MAAMxvB,IAAMtQ,KAAKsG,MAAMw5B,MAAMzvB,MAGpDE,EAAW5O,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,IACzF8iB,IAAY7iB,CAEZ,IAAI+C,GAAsB,cAAb4pB,EAA6Bl9B,KAAKu1B,KAAKC,SAASzI,OAAOzZ,MAAQtT,KAAKu1B,KAAKC,SAASzI,OAAOxZ,OAClGouB,GAAarS,EAAQhc,EAAQ8f,EAC7B+N,EAAWnhC,KAAKsG,MAAMw5B,MAAMzvB,MAAQsxB,EACpCP,EAASphC,KAAKsG,MAAMw5B,MAAMxvB,IAAMqxB,EAIhCC,EAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAUnhC,KAAKuhC,cAAcjS,GAAO,GACnGuS,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,EAAQphC,KAAKuhC,cAAcjS,GAAO,EACnG,IAAIsS,GAAaT,GAAYU,GAAWT,EAKtC,MAJAphC,MAAKw/B,iBAAmBlQ,EACxBtvB,KAAKsG,MAAMw5B,MAAMzvB,MAAQuxB,EACzB5hC,KAAKsG,MAAMw5B,MAAMxvB,IAAMuxB,MACvB7hC,MAAKigC,QAAQp2B,EAIf7J,MAAKuhC,cAAgBjS,EACrBtvB,KAAKs7B,YAAY6F,EAAUC,GAG3BphC,KAAKu1B,KAAKE,QAAQhH,KAAK,eACrBpe,MAAO,GAAIzL,MAAK5E,KAAKqQ,OACrBC,IAAO,GAAI1L,MAAK5E,KAAKsQ,KACrBowB,QAAQ,MASZ7+B,EAAMqS,UAAUgsB,WAAa,SAAUr2B,GAEhC7J,KAAKkP,QAAQwwB,UAIb1/B,KAAKsG,MAAMw5B,MAAM0B,gBAEtBxhC,KAAKsG,MAAMw5B,MAAMkB,UAAW,EACxBhhC,KAAKu1B,KAAK5E,IAAIjxB,OAChBM,KAAKu1B,KAAK5E,IAAIjxB,KAAKgO,MAAMmgB,OAAS,QAIpC7tB,KAAKu1B,KAAKE,QAAQhH,KAAK,gBACrBpe,MAAO,GAAIzL,MAAK5E,KAAKqQ,OACrBC,IAAO,GAAI1L,MAAK5E,KAAKsQ,KACrBowB,QAAQ,MAUZ7+B,EAAMqS,UAAUksB,cAAgB,SAASv2B,GAEvC,GAAM7J,KAAKkP,QAAQywB,UAAY3/B,KAAKkP,QAAQwwB,SAA5C,CAGA,GAAIpQ,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAa,IAClB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAS,GAMtBF,EAAO,CAKT,GAAI/qB,EAEFA,GADU,EAAR+qB,EACM,EAAKA,EAAQ,EAGb,GAAK,EAAKA,EAAQ,EAI5B,IAAIkJ,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAUvB,EAAWhI,EAAQzL,OAAQ/sB,KAAKu1B,KAAK5E,IAAI5D,QACnDiV,EAAchiC,KAAKiiC,eAAeF,EAEtC/hC,MAAKkiC,KAAK39B,EAAOy9B,EAAa1S,GAKhCzlB,EAAMD,mBAOR/H,EAAMqS,UAAUmsB,SAAW,SAAUx2B,GACnC7J,KAAKsG,MAAMw5B,MAAMzvB,MAAQrQ,KAAKqQ,MAC9BrQ,KAAKsG,MAAMw5B,MAAMxvB,IAAMtQ,KAAKsQ,IAC5BtQ,KAAKsG,MAAMw5B,MAAM0B,eAAgB,EACjCxhC,KAAKsG,MAAMw5B,MAAM/S,OAAS,KAC1B/sB,KAAKy/B,YAAc,EACnBz/B,KAAKw/B,gBAAkB,GAOzB39B,EAAMqS,UAAUisB,QAAU,WACxBngC,KAAKsG,MAAMw5B,MAAM0B,eAAgB,GAQnC3/B,EAAMqS,UAAUosB,SAAW,SAAUz2B,GAEnC,GAAM7J,KAAKkP,QAAQywB,UAAY3/B,KAAKkP,QAAQwwB,WAE5C1/B,KAAKsG,MAAMw5B,MAAM0B,eAAgB,EAE7B33B,EAAM2uB,QAAQ2J,QAAQl8B,OAAS,GAAG,CAC/BjG,KAAKsG,MAAMw5B,MAAM/S,SACpB/sB,KAAKsG,MAAMw5B,MAAM/S,OAASyT,EAAW32B,EAAM2uB,QAAQzL,OAAQ/sB,KAAKu1B,KAAK5E,IAAI5D,QAG3E,IAAIxoB,GAAQ,GAAKsF,EAAM2uB,QAAQj0B,MAAQvE,KAAKy/B,aACxC2C,EAAapiC,KAAKiiC,eAAejiC,KAAKsG,MAAMw5B,MAAM/S,QAElDwP,EAAiB56B,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,KAC3F+xB,EAAuB1gC,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAMoiC,GACrFE,EAAsB/F,EAAiB8F,EAGvClB,EAAYiB,EAAaC,GAAyBriC,KAAKsG,MAAMw5B,MAAMzvB,OAAS+xB,EAAaC,IAAyB99B,EAClH68B,EAAUgB,EAAaE,GAAwBtiC,KAAKsG,MAAMw5B,MAAMxvB,KAAO8xB,EAAaE,IAAwB/9B,CAGhHvE,MAAKo7B,aAAe,EAAI72B,EAAQ,GAAI,GAAQ,EAC5CvE,KAAKq7B,WAAa92B,EAAQ,EAAI,GAAI,GAAQ,CAE1C,IAAIq9B,GAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAU,EAAI58B,GAAO,GACpFs9B,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,EAAQ78B,EAAQ,GAAG,IAChFq9B,GAAaT,GAAYU,GAAWT,KACtCphC,KAAKsG,MAAMw5B,MAAMzvB,MAAQuxB,EACzB5hC,KAAKsG,MAAMw5B,MAAMxvB,IAAMuxB,EACvB7hC,KAAKy/B,YAAc,EAAI51B,EAAM2uB,QAAQj0B,MACrC48B,EAAWS,EACXR,EAASS,GAGX7hC,KAAKm0B,SAASgN,EAAUC,GAAQ,GAAO,GAEvCphC,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,IAUtBx5B,EAAMqS,UAAU+tB,eAAiB,SAAUF,GACzC,GAAI3F,GACAc,EAAYl9B,KAAKkP,QAAQguB,SAI7B,IAFAqD,EAAkBrD,GAED,cAAbA,EACF,MAAOl9B,MAAKu1B,KAAK50B,KAAKu1B,OAAO6L,EAAQvvB,GAAGnL,SAGxC,IAAIkM,GAASvT,KAAKu1B,KAAKC,SAASzI,OAAOxZ,MAEvC,OADA6oB,GAAap8B,KAAKo8B,WAAW7oB,GACtBwuB,EAAQtvB,EAAI2pB,EAAW73B,MAAQ63B,EAAW1R,QA4BrD7oB,EAAMqS,UAAUguB,KAAO,SAAS39B,EAAOwoB,EAAQuC,GAE/B,MAAVvC,IACFA,GAAU/sB,KAAKqQ,MAAQrQ,KAAKsQ,KAAO,EAGrC,IAAIisB,GAAiB56B,EAAS06B,yBAAyBr8B,KAAKu1B,KAAKI,YAAa31B,KAAKqQ,MAAOrQ,KAAKsQ,KAC3F+xB,EAAuB1gC,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAM+sB,GACrFuV,EAAsB/F,EAAiB8F,EAGvClB,EAAYpU,EAAOsV,GAAyBriC,KAAKqQ,OAAS0c,EAAOsV,IAAyB99B,EAC1F68B,EAAYrU,EAAOuV,GAAwBtiC,KAAKsQ,KAAOyc,EAAOuV,IAAwB/9B,CAG1FvE,MAAKo7B,aAAe9L,EAAQ,GAAI,GAAQ,EACxCtvB,KAAKq7B,YAAc/L,EAAS,GAAI,GAAQ,CACxC,IAAIsS,GAAYjgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAawL,EAAU7R,GAAO,GAChFuS,EAAUlgC,EAASs7B,mBAAmBj9B,KAAKu1B,KAAKI,YAAayL,GAAS9R,GAAO,IAC7EsS,GAAaT,GAAYU,GAAWT,KACtCD,EAAWS,EACXR,EAASS,GAGX7hC,KAAKm0B,SAASgN,EAAUC,GAAQ,GAAO,GAEvCphC,KAAKo7B,cAAe,EACpBp7B,KAAKq7B,YAAa,GAWpBx5B,EAAMqS,UAAUquB,KAAO,SAASjT,GAE9B,GAAIpC,GAAQltB,KAAKsQ,IAAMtQ,KAAKqQ,MAGxB8wB,EAAWnhC,KAAKqQ,MAAQ6c,EAAOoC,EAC/B8R,EAASphC,KAAKsQ,IAAM4c,EAAOoC,CAI/BtvB,MAAKqQ,MAAQ8wB,EACbnhC,KAAKsQ,IAAM8wB,GAObv/B,EAAMqS,UAAU2U,OAAS,SAASA,GAChC,GAAIkE,IAAU/sB,KAAKqQ,MAAQrQ,KAAKsQ,KAAO,EAEnC4c,EAAOH,EAASlE,EAGhBsY,EAAWnhC,KAAKqQ,MAAQ6c,EACxBkU,EAASphC,KAAKsQ,IAAM4c;;AAExBltB,KAAKm0B,SAASgN,EAAUC,IAG1BvhC,EAAOD,QAAUiC,GAKb,SAAShC,EAAQD,EAASM,GAG9B,GAAIsiC,GAAU,IAMd5iC,GAAQ6iC,aAAe,SAASxgC,GAC9BA,EAAMiV,KAAK,SAAUtR,EAAGC,GACtB,MAAOD,GAAE6N,KAAKpD,MAAQxK,EAAE4N,KAAKpD,SASjCzQ,EAAQ8iC,WAAa,SAASzgC,GAC5BA,EAAMiV,KAAK,SAAUtR,EAAGC,GACtB,GAAI88B,GAAS,OAAS/8B,GAAE6N,KAAQ7N,EAAE6N,KAAKnD,IAAM1K,EAAE6N,KAAKpD,MAChDuyB,EAAS,OAAS/8B,GAAE4N,KAAQ5N,EAAE4N,KAAKnD,IAAMzK,EAAE4N,KAAKpD,KAEpD,OAAOsyB,GAAQC,KAenBhjC,EAAQkC,MAAQ,SAASG,EAAO0Y,EAAQkoB,GACtC,GAAI/8B,GAAGg9B,CAEP,IAAID,EAEF,IAAK/8B,EAAI,EAAGg9B,EAAO7gC,EAAMgE,OAAY68B,EAAJh9B,EAAUA,IACzC7D,EAAM6D,GAAGmC,IAAM,IAKnB,KAAKnC,EAAI,EAAGg9B,EAAO7gC,EAAMgE,OAAY68B,EAAJh9B,EAAUA,IAAK,CAC9C,GAAIgK,GAAO7N,EAAM6D,EACjB,IAAIgK,EAAKhO,OAAsB,OAAbgO,EAAK7H,IAAc,CAEnC6H,EAAK7H,IAAM0S,EAAOooB,IAElB,GAAG,CAID,IAAK,GADDC,GAAgB,KACXvW,EAAI,EAAGwW,EAAKhhC,EAAMgE,OAAYg9B,EAAJxW,EAAQA,IAAK,CAC9C,GAAIvmB,GAAQjE,EAAMwqB,EAClB,IAAkB,OAAdvmB,EAAM+B,KAAgB/B,IAAU4J,GAAQ5J,EAAMpE,OAASlC,EAAQsjC,UAAUpzB,EAAM5J,EAAOyU,EAAO7K,MAAO,CACtGkzB,EAAgB98B,CAChB,QAIiB,MAAjB88B,IAEFlzB,EAAK7H,IAAM+6B,EAAc/6B,IAAM+6B,EAAczvB,OAASoH,EAAO7K,KAAK2W,gBAE7Duc,MAafpjC,EAAQujC,QAAU,SAASlhC,EAAO0Y,EAAQyoB,GACxC,GAAIt9B,GAAGg9B,EAAMO,CAGb,KAAKv9B,EAAI,EAAGg9B,EAAO7gC,EAAMgE,OAAY68B,EAAJh9B,EAAUA,IACzC,GAA+Be,SAA3B5E,EAAM6D,GAAG2N,KAAK6vB,SAAwB,CACxCD,EAAS1oB,EAAOooB,IAChB,KAAK,GAAIO,KAAYF,GACfA,EAAUh9B,eAAek9B,IACQ,GAA/BF,EAAUE,GAAU7Z,SAAmB2Z,EAAUE,GAAU56B,MAAQ06B,EAAUnhC,EAAM6D,GAAG2N,KAAK6vB,UAAU56B,QACvG26B,GAAUD,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,SAIzDxkB,GAAM6D,GAAGmC,IAAMo7B,MAGfphC,GAAM6D,GAAGmC,IAAM0S,EAAOooB,MAe5BnjC,EAAQsjC,UAAY,SAASt9B,EAAGC,EAAG8U,GACjC,MAAS/U,GAAEiC,KAAO8S,EAAO6L,WAAagc,EAAkB38B,EAAEgC,KAAOhC,EAAEyN,OAC9D1N,EAAEiC,KAAOjC,EAAE0N,MAAQqH,EAAO6L,WAAagc,EAAW38B,EAAEgC,MACpDjC,EAAEqC,IAAM0S,EAAO8L,SAAW+b,EAAyB38B,EAAEoC,IAAMpC,EAAE0N,QAC7D3N,EAAEqC,IAAMrC,EAAE2N,OAASoH,EAAO8L,SAAW+b,EAAa38B,EAAEoC,MAMvD,SAASpI,EAAQD,EAASM,GAgC9B,QAAS6B,GAASsO,EAAOC,EAAK8sB,EAAazH,GAEzC31B,KAAK+7B,QAAU,GAAIn3B,MACnB5E,KAAK8zB,OAAS,GAAIlvB,MAClB5E,KAAK+zB,KAAO,GAAInvB,MAEhB5E,KAAKw9B,WAAa,EAClBx9B,KAAKuE,MAAQ,MACbvE,KAAKmpB,KAAO,EAGZnpB,KAAKm0B,SAAS9jB,EAAOC,EAAK8sB,GAG1Bp9B,KAAKm8B,aAAc,EACnBn8B,KAAKk8B,eAAgB,EACrBl8B,KAAKi8B,cAAe,EACpBj8B,KAAK21B,YAAcA,EACC9uB,SAAhB8uB,IACF31B,KAAK21B,gBAGP31B,KAAKujC,OAASxhC,EAASyhC,OApDzB,GAAI3/B,GAAS3D,EAAoB,IAC7ByB,EAAWzB,EAAoB,IAC/BS,EAAOT,EAAoB,EAsD/B6B,GAASyhC,QACPC,aACEC,YAAY,MACZC,OAAY,IACZC,OAAY,QACZC,KAAY,QACZC,QAAY,QACZvJ,IAAY,IACZK,MAAY,MACZH,KAAY,QAEdsJ,aACEL,YAAY,WACZC,OAAY,eACZC,OAAY,aACZC,KAAY,aACZC,QAAY,YACZvJ,IAAY,YACZK,MAAY,OACZH,KAAY,KAUhB14B,EAASmS,UAAU8vB,UAAY,SAAUT,GACvC,GAAIU,GAAgBtjC,EAAKmG,cAAe/E,EAASyhC,OACjDxjC,MAAKujC,OAAS5iC,EAAKmG,WAAWm9B,EAAeV,IAa/CxhC,EAASmS,UAAUigB,SAAW,SAAS9jB,EAAOC,EAAK8sB,GACjD,KAAM/sB,YAAiBzL,OAAW0L,YAAe1L,OAC/C,KAAO,+CAGT5E,MAAK8zB,OAAmBjtB,QAATwJ,EAAsB,GAAIzL,MAAKyL,EAAMhJ,WAAa,GAAIzC,MACrE5E,KAAK+zB,KAAeltB,QAAPyJ,EAAoB,GAAI1L,MAAK0L,EAAIjJ,WAAa,GAAIzC,MAE3D5E,KAAKw9B,WACPx9B,KAAK+9B,eAAeX,IAOxBr7B,EAASmS,UAAUgwB,MAAQ,WACzBlkC,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK8zB,OAAOzsB,WACpCrH,KAAK0+B,gBAOP38B,EAASmS,UAAUwqB,aAAe,WAIhC,OAAQ1+B,KAAKuE,OACX,IAAK,OACHvE,KAAK+7B,QAAQoI,YAAYnkC,KAAKmpB,KAAO3kB,KAAKgB,MAAMxF,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,OAClFnpB,KAAK+7B,QAAQsI,SAAS,EACxB,KAAK,QAAgBrkC,KAAK+7B,QAAQuI,QAAQ,EAC1C,KAAK,MACL,IAAK,UAAgBtkC,KAAK+7B,QAAQwI,SAAS,EAC3C,KAAK,OAAgBvkC,KAAK+7B,QAAQyI,WAAW,EAC7C,KAAK,SAAgBxkC,KAAK+7B,QAAQ0I,WAAW,EAC7C,KAAK,SAAgBzkC,KAAK+7B,QAAQ2I,gBAAgB,GAIpD,GAAiB,GAAb1kC,KAAKmpB,KAEP,OAAQnpB,KAAKuE,OACX,IAAK,cAAgBvE,KAAK+7B,QAAQ2I,gBAAgB1kC,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAKmpB,KAAQ,MACjI,KAAK,SAAgBnpB,KAAK+7B,QAAQ0I,WAAWzkC,KAAK+7B,QAAQ6I,aAAe5kC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,KAAO,MACjH,KAAK,SAAgBnpB,KAAK+7B,QAAQyI,WAAWxkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,KAAO,MACjH,KAAK,OAAgBnpB,KAAK+7B,QAAQwI,SAASvkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,KAAO,MAC3G,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAStkC,KAAK+7B,QAAQgJ,UAAU,GAAM/kC,KAAK+7B,QAAQgJ,UAAU,GAAK/kC,KAAKmpB,KAAO,EAAI,MACpH,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAQ,MAC5G,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,QAUnHpnB,EAASmS,UAAU2qB,QAAU,WAC3B,MAAQ7+B,MAAK+7B,QAAQ10B,WAAarH,KAAK+zB,KAAK1sB,WAM9CtF,EAASmS,UAAUmV,KAAO,WACxB,GAAImJ,GAAOxyB,KAAK+7B,QAAQ10B,SAIxB,IAAIrH,KAAK+7B,QAAQiJ,WAAa,EAC5B,OAAQhlC,KAAKuE,OACX,IAAK,cAEHvE,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAYrH,KAAKmpB,KAAO,MAC/D,KAAK,SAAgBnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,MACzF,KAAK,SAAgBnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,GAAK,MAC9F,KAAK,OACHnpB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAwB,IAAZrH,KAAKmpB,KAAc,GAAK,GAEzE,IAAI7c,GAAItM,KAAK+7B,QAAQ+I,UACrB9kC,MAAK+7B,QAAQwI,SAASj4B,EAAKA,EAAItM,KAAKmpB,KACpC,MACF,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAQtkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAO,MAC/E,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAO,MACjF,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,UAKlF,QAAQnpB,KAAKuE,OACX,IAAK,cAAgBvE,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+7B,QAAQ10B,UAAYrH,KAAKmpB,KAAO,MAClF,KAAK,SAAgBnpB,KAAK+7B,QAAQ0I,WAAWzkC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,KAAO,MACrF,KAAK,SAAgBnpB,KAAK+7B,QAAQyI,WAAWxkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,KAAO,MACrF,KAAK,OAAgBnpB,KAAK+7B,QAAQwI,SAASvkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,KAAO,MACjF,KAAK,UACL,IAAK,MAAgBnpB,KAAK+7B,QAAQuI,QAAQtkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAO,MAC/E,KAAK,QAAgBnpB,KAAK+7B,QAAQsI,SAASrkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,KAAO,MACjF,KAAK,OAAgBnpB,KAAK+7B,QAAQoI,YAAYnkC,KAAK+7B,QAAQqI,cAAgBpkC,KAAKmpB,MAKpF,GAAiB,GAAbnpB,KAAKmpB,KAEP,OAAQnpB,KAAKuE,OACX,IAAK,cAAmBvE,KAAK+7B,QAAQ4I,kBAAoB3kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQ2I,gBAAgB,EAAK,MACtG,KAAK,SAAmB1kC,KAAK+7B,QAAQ6I,aAAe5kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQ0I,WAAW,EAAK,MAC5F,KAAK,SAAmBzkC,KAAK+7B,QAAQ8I,aAAe7kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQyI,WAAW,EAAK,MAC5F,KAAK,OAAmBxkC,KAAK+7B,QAAQ+I,WAAa9kC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQwI,SAAS,EAAK,MACxF,KAAK,UACL,IAAK,MAAmBvkC,KAAK+7B,QAAQgJ,UAAY/kC,KAAKmpB,KAAK,GAAGnpB,KAAK+7B,QAAQuI,QAAQ,EAAI,MACvF,KAAK,QAAmBtkC,KAAK+7B,QAAQiJ,WAAahlC,KAAKmpB,MAAMnpB,KAAK+7B,QAAQsI,SAAS,EAAK,MACxF,KAAK,QAMLrkC,KAAK+7B,QAAQ10B,WAAamrB,IAC5BxyB,KAAK+7B,QAAU,GAAIn3B,MAAK5E,KAAK+zB,KAAK1sB,YAGpC1F,EAAS+5B,oBAAoB17B,KAAMwyB,IAQrCzwB,EAASmS,UAAUkV,WAAa,WAC9B,MAAOppB,MAAK+7B,SAedh6B,EAASmS,UAAU+wB,SAAW,SAASpwB,GACjCA,GAAiC,gBAAhBA,GAAOtQ,QAC1BvE,KAAKuE,MAAQsQ,EAAOtQ,MACpBvE,KAAKmpB,KAAOtU,EAAOsU,KAAO,EAAItU,EAAOsU,KAAO,EAC5CnpB,KAAKw9B,WAAY,IAQrBz7B,EAASmS,UAAUgxB,aAAe,SAAUC,GAC1CnlC,KAAKw9B,UAAY2H,GAQnBpjC,EAASmS,UAAU6pB,eAAiB,SAASX,GAC3C,GAAmBv2B,QAAfu2B,EAAJ,CAMA,GAAIgI,GAAiB,QACjBC,EAAiB,OACjBC,EAAiB,MACjBC,EAAiB,KACjBC,EAAiB,IACjBC,EAAiB,IACjBC,EAAiB,CAGR,KAATN,EAAgBhI,IAAqBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,IAATic,EAAehI,IAAsBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,IAATic,EAAehI,IAAsBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,KACpE,GAATic,EAAchI,IAAuBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,IACpE,GAATic,EAAchI,IAAuBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,IACpE,EAATic,EAAahI,IAAwBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAC7Eic,EAAWhI,IAA0Bp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GACnE,EAAVkc,EAAcjI,IAAuBp9B,KAAKuE,MAAQ,QAAevE,KAAKmpB,KAAO,GAC7Ekc,EAAYjI,IAAyBp9B,KAAKuE,MAAQ,QAAevE,KAAKmpB,KAAO,GACrE,EAARmc,EAAYlI,IAAyBp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GACrE,EAARmc,EAAYlI,IAAyBp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GAC7Emc,EAAUlI,IAA2Bp9B,KAAKuE,MAAQ,MAAevE,KAAKmpB,KAAO,GAC7Emc,EAAQ,EAAIlI,IAAyBp9B,KAAKuE,MAAQ,UAAevE,KAAKmpB,KAAO,GACpE,EAAToc,EAAanI,IAAwBp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAC7Eoc,EAAWnI,IAA0Bp9B,KAAKuE,MAAQ,OAAevE,KAAKmpB,KAAO,GAClE,GAAXqc,EAAgBpI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,GAAXqc,EAAgBpI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,EAAXqc,EAAepI,IAAsBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7Eqc,EAAapI,IAAwBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAClE,GAAXsc,EAAgBrI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,GAAXsc,EAAgBrI,IAAqBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,IAClE,EAAXsc,EAAerI,IAAsBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7Esc,EAAarI,IAAwBp9B,KAAKuE,MAAQ,SAAevE,KAAKmpB,KAAO,GAC7D,IAAhBuc,EAAsBtI,IAAep9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAC7D,IAAhBuc,EAAsBtI,IAAep9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAC7D,GAAhBuc,EAAqBtI,IAAgBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,IAC7D,GAAhBuc,EAAqBtI,IAAgBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,IAC7D,EAAhBuc,EAAoBtI,IAAiBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,GAC7Euc,EAAkBtI,IAAmBp9B,KAAKuE,MAAQ,cAAevE,KAAKmpB,KAAO,KAanFpnB,EAAS42B,KAAO,SAASgC,EAAMp2B,EAAO4kB,GACpC,GAAImR,GAAQ,GAAI11B,MAAK+1B,EAAKtzB,UAE1B,IAAa,QAAT9C,EAAiB,CACnB,GAAIk2B,GAAOH,EAAM8J,cAAgB5/B,KAAK+pB,MAAM+L,EAAM0K,WAAa,GAC/D1K,GAAM6J,YAAY3/B,KAAK+pB,MAAMkM,EAAOtR,GAAQA,GAC5CmR,EAAM+J,SAAS,GACf/J,EAAMgK,QAAQ,GACdhK,EAAMiK,SAAS,GACfjK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,SAATngC,EACH+1B,EAAMyK,UAAY,IACpBzK,EAAMgK,QAAQ,GACdhK,EAAM+J,SAAS/J,EAAM0K,WAAa,IAIlC1K,EAAMgK,QAAQ,GAGhBhK,EAAMiK,SAAS,GACfjK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,OAATngC,EAAgB,CAEvB,OAAQ4kB,GACN,IAAK,GACL,IAAK,GACHmR,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAAW,MAC1D,SACExK,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,KAEjDxK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,WAATngC,EAAoB,CAE3B,OAAQ4kB,GACN,IAAK,GACL,IAAK,GACHmR,EAAMiK,SAA6C,GAApC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAAW,MAC1D,SACExK,EAAMiK,SAA4C,EAAnC//B,KAAK+pB,MAAM+L,EAAMwK,WAAa,IAEjDxK,EAAMkK,WAAW,GACjBlK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OAEnB,IAAa,QAATngC,EAAiB,CACxB,OAAQ4kB,GACN,IAAK,GACHmR,EAAMkK,WAAiD,GAAtChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,IAAW,MAC9D,SACEvK,EAAMkK,WAAiD,GAAtChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,KAErDvK,EAAMmK,WAAW,GACjBnK,EAAMoK,gBAAgB,OACjB,IAAa,UAATngC,EAAmB,CAE5B,OAAQ4kB,GACN,IAAK,IACL,IAAK,IACHmR,EAAMkK,WAAgD,EAArChgC,KAAK+pB,MAAM+L,EAAMuK,aAAe,IACjDvK,EAAMmK,WAAW,EACjB,MACF,KAAK,GACHnK,EAAMmK,WAAiD,GAAtCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,IAAW,MAC9D,SACEtK,EAAMmK,WAAiD,GAAtCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,KAErDtK,EAAMoK,gBAAgB,OAEnB,IAAa,UAATngC,EAEP,OAAQ4kB,GACN,IAAK,IACL,IAAK,IACHmR,EAAMmK,WAAgD,EAArCjgC,KAAK+pB,MAAM+L,EAAMsK,aAAe,IACjDtK,EAAMoK,gBAAgB,EACtB,MACF,KAAK,GACHpK,EAAMoK,gBAA6D,IAA7ClgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB,KAAe,MAC5E,SACErK,EAAMoK,gBAA4D,IAA5ClgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB,UAG5D,IAAa,eAATpgC,EAAwB,CAC/B,GAAIyvB,GAAQ7K,EAAO,EAAIA,EAAO,EAAI,CAClCmR,GAAMoK,gBAAgBlgC,KAAK+pB,MAAM+L,EAAMqK,kBAAoB3Q,GAASA,GAGtE,MAAOsG,IAQTv4B,EAASmS,UAAUgrB,QAAU,WAC3B,GAAyB,GAArBl/B,KAAKi8B,aAEP,OADAj8B,KAAKi8B,cAAe,EACZj8B,KAAKuE,OACX,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAGR,IAA0B,GAAtBvE,KAAKk8B,cAEZ,OADAl8B,KAAKk8B,eAAgB,EACbl8B,KAAKuE,OACX,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,cACH,OAAO,CACT,SACE,OAAO,MAGR,IAAwB,GAApBvE,KAAKm8B,YAEZ,OADAn8B,KAAKm8B,aAAc,EACXn8B,KAAKuE,OACX,IAAK,cACL,IAAK,SACL,IAAK,SACL,IAAK,OACH,OAAO,CACT,SACE,OAAO,EAIb,OAAQvE,KAAKuE,OACX,IAAK,cACH,MAA0C,IAAlCvE,KAAK+7B,QAAQ4I,iBACvB,KAAK,SACH,MAAqC,IAA7B3kC,KAAK+7B,QAAQ6I,YACvB,KAAK,SACH,MAAmC,IAA3B5kC,KAAK+7B,QAAQ+I,YAAkD,GAA7B9kC,KAAK+7B,QAAQ8I,YACzD,KAAK,OACH,MAAmC,IAA3B7kC,KAAK+7B,QAAQ+I,UACvB,KAAK,UACL,IAAK,MACH,MAAkC,IAA1B9kC,KAAK+7B,QAAQgJ,SACvB,KAAK,QACH,MAAmC,IAA3B/kC,KAAK+7B,QAAQiJ,UACvB,KAAK,OACH,OAAO,CACT,SACE,OAAO,IAWbjjC,EAASmS,UAAUyxB,cAAgB,SAAShL,GAC9B9zB,QAAR8zB,IACFA,EAAO36B,KAAK+7B,QAGd,IAAIwH,GAASvjC,KAAKujC,OAAOE,YAAYzjC,KAAKuE,MAC1C,OAAQg/B,IAAUA,EAAOt9B,OAAS,EAAKpC,EAAO82B,GAAM4I,OAAOA,GAAU,IASvExhC,EAASmS,UAAU0xB,cAAgB,SAASjL,GAC9B9zB,QAAR8zB,IACFA,EAAO36B,KAAK+7B,QAGd,IAAIwH,GAASvjC,KAAKujC,OAAOQ,YAAY/jC,KAAKuE,MAC1C,OAAQg/B,IAAUA,EAAOt9B,OAAS,EAAKpC,EAAO82B,GAAM4I,OAAOA,GAAU,IAGvExhC,EAASmS,UAAU2xB,aAAe,WAKhC,QAASC,GAAKxhC,GACZ,MAAQA,GAAQ6kB,EAAO,GAAK,EAAK,QAAU,OAG7C,QAAS4c,GAAMpL,GACb,MAAIA,GAAKqL,OAAO,GAAIphC,MAAQ,OACnB,SAEL+1B,EAAKqL,OAAOniC,IAASmQ,IAAI,EAAG,OAAQ,OAC/B,YAEL2mB,EAAKqL,OAAOniC,IAASmQ,IAAI,GAAI,OAAQ,OAChC,aAEF,GAGT,QAASiyB,GAAYtL,GACnB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,QAAU,gBAAkB,GAG7D,QAASshC,GAAavL,GACpB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,SAAW,iBAAmB,GAG/D,QAASuhC,GAAYxL,GACnB,MAAOA,GAAKqL,OAAO,GAAIphC,MAAQ,QAAU,gBAAkB,GA9B7D,GAAIpE,GAAIqD,EAAO7D,KAAK+7B,SAChBpB,EAAOn6B,EAAE4lC,OAAS5lC,EAAE4lC,OAAO,MAAQ5lC,EAAE6lC,KAAK,MAC1Cld,EAAOnpB,KAAKmpB,IA+BhB,QAAQnpB,KAAKuE,OACX,IAAK,cACH,MAAOuhC,GAAKnL,EAAK4E,gBAAgB5xB,MAEnC,KAAK,SACH,MAAOm4B,GAAKnL,EAAK2E,WAAW3xB,MAE9B,KAAK,SACH,MAAOm4B,GAAKnL,EAAK0E,WAAW1xB,MAE9B,KAAK,OACH,GAAIyxB,GAAQzE,EAAKyE,OAIjB,OAHiB,IAAbp/B,KAAKmpB,OACPiW,EAAQA,EAAQ,KAAOA,EAAQ,IAE1BA,EAAQ,IAAM2G,EAAMpL,GAAQmL,EAAKnL,EAAKyE,QAE/C,KAAK,UACH,MAAOzE,GAAK4I,OAAO,QAAQ+C,cACvBP,EAAMpL,GAAQsL,EAAYtL,GAAQmL,EAAKnL,EAAKA,OAElD,KAAK,MACH,GAAIJ,GAAMI,EAAKA,OACXC,EAAQD,EAAK4I,OAAO,QAAQ+C,aAChC,OAAO,MAAQ/L,EAAM,IAAMK,EAAQsL,EAAavL,GAAQmL,EAAKvL,EAAM,EAErE,KAAK,QACH,MAAOI,GAAK4I,OAAO,QAAQ+C,cACvBJ,EAAavL,GAAQmL,EAAKnL,EAAKC,QAErC,KAAK,OACH,GAAIH,GAAOE,EAAKF,MAChB,OAAO,OAASA,EAAO0L,EAAYxL,GAAOmL,EAAKrL,EAEjD,SACE,MAAO,KAIb56B,EAAOD,QAAUmC,GAKb,SAASlC,EAAQD,EAASM,GAc9B,QAASgC,GAAMuR,EAAM2oB,EAAYltB,GAC/BlP,KAAKK,GAAK,KACVL,KAAKqK,OAAS,KACdrK,KAAKyT,KAAOA,EACZzT,KAAK2wB,IAAM,KACX3wB,KAAKo8B,WAAaA,MAClBp8B,KAAKkP,QAAUA,MAEflP,KAAKumC,UAAW,EAChBvmC,KAAKwmC,WAAY,EACjBxmC,KAAKymC,OAAQ,EAEbzmC,KAAKiI,IAAM,KACXjI,KAAK6H,KAAO,KACZ7H,KAAKsT,MAAQ,KACbtT,KAAKuT,OAAS,KA3BhB,GAAImzB,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,EA6B/BgC,GAAKgS,UAAUpS,OAAQ,EAKvBI,EAAKgS,UAAUyyB,OAAS,WACtB3mC,KAAKumC,UAAW,EAChBvmC,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAM3BvgB,EAAKgS,UAAU0yB,SAAW,WACxB5mC,KAAKumC,UAAW,EAChBvmC,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAQ3BvgB,EAAKgS,UAAU8E,QAAU,SAASvF,GAChC,GAAIozB,GAA6BhgC,QAAd4M,EAAKf,OAAsB1S,KAAKyT,KAAKf,OAASe,EAAKf,KAClEm0B,IACF7mC,KAAKqK,OAAOqsB,QAAQoQ,aAAa9mC,KAAMyT,EAAKf,OAG9C1S,KAAKyT,KAAOA,EACZzT,KAAKymC,OAAQ,EACTzmC,KAAKwmC,WAAWxmC,KAAKyiB,UAO3BvgB,EAAKgS,UAAU6yB,UAAY,SAAS18B,GAC9BrK,KAAKwmC,WACPxmC,KAAKgnC,OACLhnC,KAAKqK,OAASA,EACVrK,KAAKqK,QACPrK,KAAKinC,QAIPjnC,KAAKqK,OAASA,GASlBnI,EAAKgS,UAAUgzB,UAAY,SAAS5Q,GAElC,OAAO,GAOTp0B,EAAKgS,UAAU+yB,KAAO,WACpB,OAAO,GAOT/kC,EAAKgS,UAAU8yB,KAAO,WACpB,OAAO,GAMT9kC,EAAKgS,UAAUuO,OAAS,aAOxBvgB,EAAKgS,UAAUizB,YAAc,aAO7BjlC,EAAKgS,UAAUkzB,YAAc,aAS7BllC,EAAKgS,UAAUmzB,qBAAuB,SAAUC,GAC9C,GAAItnC,KAAKumC,UAAYvmC,KAAKkP,QAAQq4B,SAASlwB,SAAWrX,KAAK2wB,IAAI6W,aAAc,CAE3E,GAAItyB,GAAKlV,KAELwnC,EAAex1B,SAASM,cAAc,MAC1Ck1B,GAAap/B,UAAY,SACzBo/B,EAAaC,MAAQ,mBAErBf,EAAOc,GACL59B,gBAAgB,IACf0K,GAAG,MAAO,SAAUzK,GACrBA,EAAMD,iBACNC,EAAM69B,kBACNxyB,EAAG7K,OAAOs9B,kBAAkBzyB,KAG9BoyB,EAAOp1B,YAAYs1B,GACnBxnC,KAAK2wB,IAAI6W,aAAeA,OAEhBxnC,KAAKumC,UAAYvmC,KAAK2wB,IAAI6W,eAE9BxnC,KAAK2wB,IAAI6W,aAAar9B,YACxBnK,KAAK2wB,IAAI6W,aAAar9B,WAAWyH,YAAY5R,KAAK2wB,IAAI6W,cAExDxnC,KAAK2wB,IAAI6W,aAAe,OAS5BtlC,EAAKgS,UAAU0zB,gBAAkB,SAAUz+B,GACzC,GAAIgK,EACJ,IAAInT,KAAKkP,QAAQ24B,SAAU,CACzB,GAAI9P,GAAW/3B,KAAKqK,OAAOqsB,QAAQC,UAAU1gB,IAAIjW,KAAKK,GACtD8S,GAAUnT,KAAKkP,QAAQ24B,SAAS9P,OAGhC5kB,GAAUnT,KAAKyT,KAAKN,OAGtB,IAAI+tB,GAAUlhC,KAAK8nC,iBAAiB9nC,KAAKmT,WAAanT,KAAK8nC,iBAAiB30B,EAC5E,IAAI+tB,EAAS,CAEX,GAAI/tB,YAAmB40B,SACrB5+B,EAAQ8b,UAAY,GACpB9b,EAAQ+I,YAAYiB,OAEjB,IAAetM,QAAXsM,EACPhK,EAAQ8b,UAAY9R,MAGpB,IAAwB,cAAlBnT,KAAKyT,KAAKtM,MAA8CN,SAAtB7G,KAAKyT,KAAKN,QAChD,KAAM,IAAIvP,OAAM,sCAAwC5D,KAAKK,GAIjEL,MAAKmT,QAAUA,IASnBjR,EAAKgS,UAAU8zB,aAAe,SAAU7+B,GACf,MAAnBnJ,KAAKyT,KAAKg0B,MACZt+B,EAAQs+B,MAAQznC,KAAKyT,KAAKg0B,OAAS,GAGnCt+B,EAAQ8+B,gBAAgB,UAS3B/lC,EAAKgS,UAAUg0B,sBAAwB,SAAS/+B,GAC/C,GAAInJ,KAAKkP,QAAQi5B,gBAAkBnoC,KAAKkP,QAAQi5B,eAAeliC,OAAS,EAAG,CACzE,GAAImiC,KAEJ,IAAI7hC,MAAMC,QAAQxG,KAAKkP,QAAQi5B,gBAC7BC,EAAapoC,KAAKkP,QAAQi5B,mBAEvB,CAAA,GAAmC,OAA/BnoC,KAAKkP,QAAQi5B,eAIpB,MAHAC,GAAaxhC,OAAOiH,KAAK7N,KAAKyT,MAMhC,IAAK,GAAI3N,GAAI,EAAGA,EAAIsiC,EAAWniC,OAAQH,IAAK,CAC1C,GAAImR,GAAOmxB,EAAWtiC,GAClBxB,EAAQtE,KAAKyT,KAAKwD,EAET,OAAT3S,EACF6E,EAAQk/B,aAAa,QAAUpxB,EAAM3S,GAGrC6E,EAAQ8+B,gBAAgB,QAAUhxB,MAW1C/U,EAAKgS,UAAUo0B,aAAe,SAASn/B,GAEjCnJ,KAAK0N,QACP/M,EAAKuN,cAAc/E,EAASnJ,KAAK0N,OACjC1N,KAAK0N,MAAQ,MAIX1N,KAAKyT,KAAK/F,QACZ/M,EAAKoN,WAAW5E,EAASnJ,KAAKyT,KAAK/F,OACnC1N,KAAK0N,MAAQ1N,KAAKyT,KAAK/F,QAU3BxL,EAAKgS,UAAU4zB,iBAAmB,SAAU30B,GAC1C,MAAuB,gBAAZA,GAA6BA,EACpCA,GAAW,aAAeA,GAAgBA,EAAQo1B,UAC/Cp1B,GAGTtT,EAAOD,QAAUsC,GAKb,SAASrC,EAAQD,EAASM,GAkB9B,QAASiC,GAAgBsR,EAAM2oB,EAAYltB,GASzC,GARAlP,KAAKsG,OACH6M,SACEG,MAAO,IAGXtT,KAAK6kB,UAAW,EAGZpR,EAAM,CACR,GAAkB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAAKpT,GAE7D,IAAgBwG,QAAZ4M,EAAKnD,IACP,KAAM,IAAI1M,OAAM,kCAAoC6P,EAAKpT,IAI7D6B,EAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAElClP,KAAKwoC,cAAe,EApCtB,GACItmC,IADShC,EAAoB,IACtBA,EAAoB,KAC3B2C,EAAkB3C,EAAoB,IACtCoC,EAAYpC,EAAoB,GAoCpCiC,GAAe+R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAEjDC,EAAe+R,UAAUu0B,cAAgB,kBACzCtmC,EAAe+R,UAAUpS,OAAQ,EAOjCK,EAAe+R,UAAUgzB,UAAY,SAAS5Q,GAE5C,MAAQt2B,MAAKyT,KAAKpD,MAAQimB,EAAMhmB,KAAStQ,KAAKyT,KAAKnD,IAAMgmB,EAAMjmB,OAMjElO,EAAe+R,UAAUuO,OAAS,WAChC,GAAIkO,GAAM3wB,KAAK2wB,GAuBf,IAtBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI+X,IAAM12B,SAASM,cAAc,OAIjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI+X,IAAIx2B,YAAYye,EAAIxd,SAMxBnT,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI+X,IAAIv+B,WAAY,CACvB,GAAI0C,GAAa7M,KAAKqK,OAAOsmB,IAAI9jB,UACjC,KAAKA,EACH,KAAM,IAAIjJ,OAAM,iEAElBiJ,GAAWqF,YAAYye,EAAI+X,KAQ7B,GANA1oC,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK4nC,gBAAgB5nC,KAAK2wB,IAAIxd,SAC9BnT,KAAKgoC,aAAahoC,KAAK2wB,IAAIxd,SAC3BnT,KAAKkoC,sBAAsBloC,KAAK2wB,IAAIxd,SACpCnT,KAAKsoC,aAAatoC,KAAK2wB,IAAI+X,IAG3B,IAAItgC,IAAapI,KAAKyT,KAAKrL,UAAa,IAAMpI,KAAKyT,KAAKrL,UAAa,KAChEpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI+X,IAAItgC,UAAYpI,KAAKyoC,cAAgBrgC,EAGzCpI,KAAK6kB,SAA6D,WAAlD/c,OAAO6gC,iBAAiBhY,EAAIxd,SAAS0R,SAGrD7kB,KAAKsG,MAAM6M,QAAQG,MAAQtT,KAAK2wB,IAAIxd,QAAQ6d,YAC5ChxB,KAAKuT,OAAS,EAEdvT,KAAKymC,OAAQ,IAQjBtkC,EAAe+R,UAAU+yB,KAAO3kC,EAAU4R,UAAU+yB,KAMpD9kC,EAAe+R,UAAU8yB,KAAO1kC,EAAU4R,UAAU8yB,KAMpD7kC,EAAe+R,UAAUizB,YAAc7kC,EAAU4R,UAAUizB,YAM3DhlC,EAAe+R,UAAUkzB,YAAc,SAASzsB,GAC9C,GAAIiuB,GAAqC,QAA7B5oC,KAAKkP,QAAQimB,WACzBn1B,MAAK2wB,IAAIxd,QAAQzF,MAAMzF,IAAM2gC,EAAQ,GAAK,IAC1C5oC,KAAK2wB,IAAIxd,QAAQzF,MAAM4W,OAASskB,EAAQ,IAAM,EAC9C,IAAIr1B,EAGJ,IAA2B1M,SAAvB7G,KAAKyT,KAAK6vB,SAAwB,CAGpC,GAAIuF,GAAe7oC,KAAKyT,KAAK6vB,SACzBF,EAAYpjC,KAAKqK,OAAO+4B,UACxB0F,EAAgB1F,EAAUyF,GAAcngC,KAE5C,IAAa,GAATkgC,EAAe,CAEjBr1B,EAASvT,KAAKqK,OAAO+4B,UAAUyF,GAAct1B,OAASoH,EAAO7K,KAAK2W,SAClElT,GAA2B,GAAjBu1B,EAAqBnuB,EAAOooB,KAAO,GAAIpoB,EAAO7K,KAAK2W,SAAW,CACxE,IAAI4c,GAASrjC,KAAKqK,OAAOpC,GACzB,KAAK,GAAIq7B,KAAYF,GACfA,EAAUh9B,eAAek9B,IACQ,GAA/BF,EAAUE,GAAU7Z,SAAmB2Z,EAAUE,GAAU56B,MAAQogC,IACrEzF,GAAUD,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,SAMzD4c,IAA2B,GAAjByF,EAAqBnuB,EAAOooB,KAAO,GAAMpoB,EAAO7K,KAAK2W,SAAW,EAC1EzmB,KAAK2wB,IAAI+X,IAAIh7B,MAAMzF,IAAMo7B,EAAS,KAClCrjC,KAAK2wB,IAAI+X,IAAIh7B,MAAM4W,OAAS,OAGzB,CACH,GAAI+e,GAASrjC,KAAKqK,OAAOpC,IACrB8gC,EAAc,CAClB,KAAK,GAAIzF,KAAYF,GACnB,GAAIA,EAAUh9B,eAAek9B,IACQ,GAA/BF,EAAUE,GAAU7Z,QAAiB,CACvC,GAAIuf,GAAY5F,EAAUE,GAAU/vB,OAASoH,EAAO7K,KAAK2W,QACzDsiB,IAAeC,EACX5F,EAAUE,GAAU56B,MAAQogC,IAC9BzF,GAAU2F,GAKlBz1B,EAASvT,KAAKqK,OAAO+4B,UAAUyF,GAAct1B,OAASoH,EAAO7K,KAAK2W,SAClEzmB,KAAK2wB,IAAI+X,IAAIh7B,MAAMzF,IAAOjI,KAAKqK,OAAOkJ,OAASw1B,EAAc1F,EAAU,KACvErjC,KAAK2wB,IAAI+X,IAAIh7B,MAAM4W,OAAS,QAM1BtkB,MAAKqK,iBAAkBxH,IAEzB0Q,EAAS/O,KAAKJ,IAAIpE,KAAKqK,OAAOkJ,OAC1BvT,KAAKqK,OAAOqsB,QAAQnB,KAAKC,SAASzI,OAAOxZ,OACzCvT,KAAKqK,OAAOqsB,QAAQnB,KAAKC,SAASkD,gBAAgBnlB,QACtDvT,KAAK2wB,IAAI+X,IAAIh7B,MAAMzF,IAAM2gC,EAAQ,IAAM,GACvC5oC,KAAK2wB,IAAI+X,IAAIh7B,MAAM4W,OAASskB,EAAQ,GAAK,MAGzCr1B,EAASvT,KAAKqK,OAAOkJ,OAErBvT,KAAK2wB,IAAI+X,IAAIh7B,MAAMzF,IAAMjI,KAAKqK,OAAOpC,IAAM,KAC3CjI,KAAK2wB,IAAI+X,IAAIh7B,MAAM4W,OAAS,GAGhCtkB,MAAK2wB,IAAI+X,IAAIh7B,MAAM6F,OAASA,EAAS,MAGvC1T,EAAOD,QAAUuC,GAKb,SAAStC,EAAQD,EAASM,GAe9B,QAASkC,GAASqR,EAAM2oB,EAAYltB,GAalC,GAZAlP,KAAKsG,OACHoqB,KACEpd,MAAO,EACPC,OAAQ,GAEVkd,MACEnd,MAAO,EACPC,OAAQ,IAKRE,GACgB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAI1DvR,GAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAhCpC,CAAA,GAAIhN,GAAOhC,EAAoB,GACpBA,GAAoB,GAkC/BkC,EAAQ8R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAO1CE,EAAQ8R,UAAUgzB,UAAY,SAAS5Q,GAGrC,GAAIlD,IAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,CAC3C,OAAQrQ,MAAKyT,KAAKpD,MAAQimB,EAAMjmB,MAAQ+iB,GAAcpzB,KAAKyT,KAAKpD,MAAQimB,EAAMhmB,IAAM8iB,GAMtFhxB,EAAQ8R,UAAUuO,OAAS,WACzB,GAAIkO,GAAM3wB,KAAK2wB,GA6Bf,IA5BKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI+X,IAAM12B,SAASM,cAAc,OAGjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI+X,IAAIx2B,YAAYye,EAAIxd,SAGxBwd,EAAIF,KAAOze,SAASM,cAAc,OAClCqe,EAAIF,KAAKroB,UAAY,OAGrBuoB,EAAID,IAAM1e,SAASM,cAAc,OACjCqe,EAAID,IAAItoB,UAAY,MAGpBuoB,EAAI+X,IAAI,iBAAmB1oC,KAE3BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI+X,IAAIv+B,WAAY,CACvB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EAAY,KAAM,IAAIn1B,OAAM,iEACjCm1B,GAAW7mB,YAAYye,EAAI+X,KAE7B,IAAK/X,EAAIF,KAAKtmB,WAAY,CACxB,GAAI0C,GAAa7M,KAAKqK,OAAOsmB,IAAI9jB,UACjC,KAAKA,EAAY,KAAM,IAAIjJ,OAAM,iEACjCiJ,GAAWqF,YAAYye,EAAIF,MAE7B,IAAKE,EAAID,IAAIvmB,WAAY,CACvB,GAAI44B,GAAO/iC,KAAKqK,OAAOsmB,IAAIoS,IAC3B,KAAKl2B,EAAY,KAAM,IAAIjJ,OAAM,2DACjCm/B,GAAK7wB,YAAYye,EAAID,KAQvB,GANA1wB,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK4nC,gBAAgB5nC,KAAK2wB,IAAIxd,SAC9BnT,KAAKgoC,aAAahoC,KAAK2wB,IAAI+X,KAC3B1oC,KAAKkoC,sBAAsBloC,KAAK2wB,IAAI+X,KACpC1oC,KAAKsoC,aAAatoC,KAAK2wB,IAAI+X,IAG3B,IAAItgC,IAAapI,KAAKyT,KAAKrL,UAAW,IAAMpI,KAAKyT,KAAKrL,UAAY,KAC7DpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI+X,IAAItgC,UAAY,WAAaA,EACjCuoB,EAAIF,KAAKroB,UAAY,YAAcA,EACnCuoB,EAAID,IAAItoB,UAAa,WAAaA,EAGlCpI,KAAKsG,MAAMoqB,IAAInd,OAASod,EAAID,IAAIQ,aAChClxB,KAAKsG,MAAMoqB,IAAIpd,MAAQqd,EAAID,IAAIM,YAC/BhxB,KAAKsG,MAAMmqB,KAAKnd,MAAQqd,EAAIF,KAAKO,YACjChxB,KAAKsT,MAAQqd,EAAI+X,IAAI1X,YACrBhxB,KAAKuT,OAASod,EAAI+X,IAAIxX,aAEtBlxB,KAAKymC,OAAQ,EAGfzmC,KAAKqnC,qBAAqB1W,EAAI+X,MAOhCtmC,EAAQ8R,UAAU+yB,KAAO,WAClBjnC,KAAKwmC,WACRxmC,KAAKyiB,UAOTrgB,EAAQ8R,UAAU8yB,KAAO,WACvB,GAAIhnC,KAAKwmC,UAAW,CAClB,GAAI7V,GAAM3wB,KAAK2wB,GAEXA,GAAI+X,IAAIv+B,YAAcwmB,EAAI+X,IAAIv+B,WAAWyH,YAAY+e,EAAI+X,KACzD/X,EAAIF,KAAKtmB,YAAawmB,EAAIF,KAAKtmB,WAAWyH,YAAY+e,EAAIF,MAC1DE,EAAID,IAAIvmB,YAAcwmB,EAAID,IAAIvmB,WAAWyH,YAAY+e,EAAID,KAE7D1wB,KAAKwmC,WAAY,IAQrBpkC,EAAQ8R,UAAUizB,YAAc,WAC9B,GAAI92B,GAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,OAC3C44B,EAAQjpC,KAAKkP,QAAQ+5B,KAIZ,UAATA,EACFjpC,KAAK6H,KAAOwI,EAAQrQ,KAAKsT,MAET,QAAT21B,EACPjpC,KAAK6H,KAAOwI,EAIZrQ,KAAK6H,KAAOwI,EAAQrQ,KAAKsT,MAAQ,EAInCtT,KAAK2wB,IAAI+X,IAAIh7B,MAAM7F,KAAO7H,KAAK6H,KAAO,KAGtC7H,KAAK2wB,IAAIF,KAAK/iB,MAAM7F,KAAQwI,EAAQrQ,KAAKsG,MAAMmqB,KAAKnd,MAAQ,EAAK,KAGjEtT,KAAK2wB,IAAID,IAAIhjB,MAAM7F,KAAQwI,EAAQrQ,KAAKsG,MAAMoqB,IAAIpd,MAAQ,EAAK,MAOjElR,EAAQ8R,UAAUkzB,YAAc,WAC9B,GAAIjS,GAAcn1B,KAAKkP,QAAQimB,YAC3BuT,EAAM1oC,KAAK2wB,IAAI+X,IACfjY,EAAOzwB,KAAK2wB,IAAIF,KAChBC,EAAM1wB,KAAK2wB,IAAID,GAEnB,IAAmB,OAAfyE,EACFuT,EAAIh7B,MAAMzF,KAAWjI,KAAKiI,KAAO,GAAK,KAEtCwoB,EAAK/iB,MAAMzF,IAAS,IACpBwoB,EAAK/iB,MAAM6F,OAAUvT,KAAKqK,OAAOpC,IAAMjI,KAAKiI,IAAM,EAAK,KACvDwoB,EAAK/iB,MAAM4W,OAAS,OAEjB,CACH,GAAI4kB,GAAgBlpC,KAAKqK,OAAOqsB,QAAQpwB,MAAMiN,OAC1C4d,EAAa+X,EAAgBlpC,KAAKqK,OAAOpC,IAAMjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,GAE7EygC,GAAIh7B,MAAMzF,KAAWjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,QAAU,GAAK,KACzEkd,EAAK/iB,MAAMzF,IAAUihC,EAAgB/X,EAAc,KACnDV,EAAK/iB,MAAM4W,OAAS,IAGtBoM,EAAIhjB,MAAMzF,KAAQjI,KAAKsG,MAAMoqB,IAAInd,OAAS,EAAK,MAGjD1T,EAAOD,QAAUwC,GAKb,SAASvC,EAAQD,EAASM,GAc9B,QAASmC,GAAWoR,EAAM2oB,EAAYltB,GAcpC,GAbAlP,KAAKsG,OACHoqB,KACEzoB,IAAK,EACLqL,MAAO,EACPC,OAAQ,GAEVJ,SACEI,OAAQ,EACR41B,WAAY,IAKZ11B,GACgB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAI1DvR,GAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GAhCpC,GAAIhN,GAAOhC,EAAoB,GAmC/BmC,GAAU6R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAO5CG,EAAU6R,UAAUgzB,UAAY,SAAS5Q,GAGvC,GAAIlD,IAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,CAC3C,OAAQrQ,MAAKyT,KAAKpD,MAAQimB,EAAMjmB,MAAQ+iB,GAAcpzB,KAAKyT,KAAKpD,MAAQimB,EAAMhmB,IAAM8iB,GAMtF/wB,EAAU6R,UAAUuO,OAAS,WAC3B,GAAIkO,GAAM3wB,KAAK2wB,GA0Bf,IAzBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI/d,MAAQZ,SAASM,cAAc,OAInCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI/d,MAAMV,YAAYye,EAAIxd,SAG1Bwd,EAAID,IAAM1e,SAASM,cAAc,OACjCqe,EAAI/d,MAAMV,YAAYye,EAAID,KAG1BC,EAAI/d,MAAM,iBAAmB5S,KAE7BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI/d,MAAMzI,WAAY,CACzB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EACH,KAAM,IAAIn1B,OAAM,iEAElBm1B,GAAW7mB,YAAYye,EAAI/d,OAQ7B,GANA5S,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK4nC,gBAAgB5nC,KAAK2wB,IAAIxd,SAC9BnT,KAAKgoC,aAAahoC,KAAK2wB,IAAI/d,OAC3B5S,KAAKkoC,sBAAsBloC,KAAK2wB,IAAI/d,OACpC5S,KAAKsoC,aAAatoC,KAAK2wB,IAAI/d,MAG3B,IAAIxK,IAAapI,KAAKyT,KAAKrL,UAAW,IAAMpI,KAAKyT,KAAKrL,UAAY,KAC7DpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI/d,MAAMxK,UAAa,aAAeA,EACtCuoB,EAAID,IAAItoB,UAAa,WAAaA,EAGlCpI,KAAKsT,MAAQqd,EAAI/d,MAAMoe,YACvBhxB,KAAKuT,OAASod,EAAI/d,MAAMse,aACxBlxB,KAAKsG,MAAMoqB,IAAIpd,MAAQqd,EAAID,IAAIM,YAC/BhxB,KAAKsG,MAAMoqB,IAAInd,OAASod,EAAID,IAAIQ,aAChClxB,KAAKsG,MAAM6M,QAAQI,OAASod,EAAIxd,QAAQ+d,aAGxCP,EAAIxd,QAAQzF,MAAMy7B,WAAa,EAAInpC,KAAKsG,MAAMoqB,IAAIpd,MAAQ,KAG1Dqd,EAAID,IAAIhjB,MAAMzF,KAAQjI,KAAKuT,OAASvT,KAAKsG,MAAMoqB,IAAInd,QAAU,EAAK,KAClEod,EAAID,IAAIhjB,MAAM7F,KAAQ7H,KAAKsG,MAAMoqB,IAAIpd,MAAQ,EAAK,KAElDtT,KAAKymC,OAAQ,EAGfzmC,KAAKqnC,qBAAqB1W,EAAI/d,QAOhCvQ,EAAU6R,UAAU+yB,KAAO,WACpBjnC,KAAKwmC,WACRxmC,KAAKyiB,UAOTpgB,EAAU6R,UAAU8yB,KAAO,WACrBhnC,KAAKwmC,YACHxmC,KAAK2wB,IAAI/d,MAAMzI,YACjBnK,KAAK2wB,IAAI/d,MAAMzI,WAAWyH,YAAY5R,KAAK2wB,IAAI/d,OAGjD5S,KAAKwmC,WAAY,IAQrBnkC,EAAU6R,UAAUizB,YAAc,WAChC,GAAI92B,GAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,MAE/CrQ,MAAK6H,KAAOwI,EAAQrQ,KAAKsG,MAAMoqB,IAAIpd,MAGnCtT,KAAK2wB,IAAI/d,MAAMlF,MAAM7F,KAAO7H,KAAK6H,KAAO,MAO1CxF,EAAU6R,UAAUkzB,YAAc,WAChC,GAAIjS,GAAcn1B,KAAKkP,QAAQimB,YAC3BviB,EAAQ5S,KAAK2wB,IAAI/d,KAEF,QAAfuiB,EACFviB,EAAMlF,MAAMzF,IAAMjI,KAAKiI,IAAM,KAG7B2K,EAAMlF,MAAMzF,IAAOjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,OAAU,MAItE1T,EAAOD,QAAUyC,GAKb,SAASxC,EAAQD,EAASM,GAe9B,QAASoC,GAAWmR,EAAM2oB,EAAYltB,GASpC,GARAlP,KAAKsG,OACH6M,SACEG,MAAO,IAGXtT,KAAK6kB,UAAW,EAGZpR,EAAM,CACR,GAAkB5M,QAAd4M,EAAKpD,MACP,KAAM,IAAIzM,OAAM,oCAAsC6P,EAAKpT,GAE7D,IAAgBwG,QAAZ4M,EAAKnD,IACP,KAAM,IAAI1M,OAAM,kCAAoC6P,EAAKpT,IAI7D6B,EAAK3B,KAAKP,KAAMyT,EAAM2oB,EAAYltB,GA/BpC,GAAIw3B,GAASxmC,EAAoB,IAC7BgC,EAAOhC,EAAoB,GAiC/BoC,GAAU4R,UAAY,GAAIhS,GAAM,KAAM,KAAM,MAE5CI,EAAU4R,UAAUu0B,cAAgB,aAOpCnmC,EAAU4R,UAAUgzB,UAAY,SAAS5Q,GAEvC,MAAQt2B,MAAKyT,KAAKpD,MAAQimB,EAAMhmB,KAAStQ,KAAKyT,KAAKnD,IAAMgmB,EAAMjmB,OAMjE/N,EAAU4R,UAAUuO,OAAS,WAC3B,GAAIkO,GAAM3wB,KAAK2wB,GAsBf,IArBKA,IAEH3wB,KAAK2wB,OACLA,EAAM3wB,KAAK2wB,IAGXA,EAAI+X,IAAM12B,SAASM,cAAc,OAIjCqe,EAAIxd,QAAUnB,SAASM,cAAc,OACrCqe,EAAIxd,QAAQ/K,UAAY,UACxBuoB,EAAI+X,IAAIx2B,YAAYye,EAAIxd,SAGxBwd,EAAI+X,IAAI,iBAAmB1oC,KAE3BA,KAAKymC,OAAQ,IAIVzmC,KAAKqK,OACR,KAAM,IAAIzG,OAAM,yCAElB,KAAK+sB,EAAI+X,IAAIv+B,WAAY,CACvB,GAAI4uB,GAAa/4B,KAAKqK,OAAOsmB,IAAIoI,UACjC,KAAKA,EACH,KAAM,IAAIn1B,OAAM,iEAElBm1B,GAAW7mB,YAAYye,EAAI+X,KAQ7B,GANA1oC,KAAKwmC,WAAY,EAMbxmC,KAAKymC,MAAO,CACdzmC,KAAK4nC,gBAAgB5nC,KAAK2wB,IAAIxd,SAC9BnT,KAAKgoC,aAAahoC,KAAK2wB,IAAI+X,KAC3B1oC,KAAKkoC,sBAAsBloC,KAAK2wB,IAAI+X,KACpC1oC,KAAKsoC,aAAatoC,KAAK2wB,IAAI+X,IAG3B,IAAItgC,IAAapI,KAAKyT,KAAKrL,UAAa,IAAMpI,KAAKyT,KAAKrL,UAAa,KAChEpI,KAAKumC,SAAW,YAAc,GACnC5V,GAAI+X,IAAItgC,UAAYpI,KAAKyoC,cAAgBrgC,EAGzCpI,KAAK6kB,SAA6D,WAAlD/c,OAAO6gC,iBAAiBhY,EAAIxd,SAAS0R,SAKrD7kB,KAAK2wB,IAAIxd,QAAQzF,MAAM07B,SAAW,OAClCppC,KAAKsG,MAAM6M,QAAQG,MAAQtT,KAAK2wB,IAAIxd,QAAQ6d,YAC5ChxB,KAAKuT,OAASvT,KAAK2wB,IAAI+X,IAAIxX,aAC3BlxB,KAAK2wB,IAAIxd,QAAQzF,MAAM07B,SAAW,GAElCppC,KAAKymC,OAAQ,EAGfzmC,KAAKqnC,qBAAqB1W,EAAI+X,KAC9B1oC,KAAKqpC,mBACLrpC,KAAKspC,qBAOPhnC,EAAU4R,UAAU+yB,KAAO,WACpBjnC,KAAKwmC,WACRxmC,KAAKyiB,UAQTngB,EAAU4R,UAAU8yB,KAAO,WACzB,GAAIhnC,KAAKwmC,UAAW,CAClB,GAAIkC,GAAM1oC,KAAK2wB,IAAI+X,GAEfA,GAAIv+B,YACNu+B,EAAIv+B,WAAWyH,YAAY82B,GAG7B1oC,KAAKwmC,WAAY,IAarBlkC,EAAU4R,UAAUizB,YAAc,SAASoC,GACzC,GAGIC,GACAzY,EAJA0Y,EAAczpC,KAAKqK,OAAOiJ,MAC1BjD,EAAQrQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKpD,OAC3CC,EAAMtQ,KAAKo8B,WAAWtG,SAAS91B,KAAKyT,KAAKnD,MAK3BzJ,SAAd0iC,GAA2BA,KAAc,MAC9BE,EAATp5B,IACFA,GAASo5B,GAEPn5B,EAAM,EAAIm5B,IACZn5B,EAAM,EAAIm5B,GAGd,IAAIC,GAAWllC,KAAKJ,IAAIkM,EAAMD,EAAO,EAoBrC,QAlBIrQ,KAAK6kB,UACP7kB,KAAK6H,KAAOwI,EACZrQ,KAAKsT,MAAQo2B,EAAW1pC,KAAKsG,MAAM6M,QAAQG,MAC3Cyd,EAAe/wB,KAAKsG,MAAM6M,QAAQG,QAOlCtT,KAAK6H,KAAOwI,EACZrQ,KAAKsT,MAAQo2B,EACb3Y,EAAevsB,KAAKL,IAAImM,EAAMD,EAAQ,EAAIrQ,KAAKkP,QAAQ8V,QAAShlB,KAAKsG,MAAM6M,QAAQG,QAGrFtT,KAAK2wB,IAAI+X,IAAIh7B,MAAM7F,KAAO7H,KAAK6H,KAAO,KACtC7H,KAAK2wB,IAAI+X,IAAIh7B,MAAM4F,MAAQo2B,EAAW,KAE9B1pC,KAAKkP,QAAQ+5B,OACnB,IAAK,OACHjpC,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAO,GAC9B,MAEF,KAAK,QACH7H,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAOrD,KAAKJ,IAAKslC,EAAW3Y,EAAe,EAAI/wB,KAAKkP,QAAQ8V,QAAU,GAAK,IAClG,MAEF,KAAK,SACHhlB,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAOrD,KAAKJ,KAAKslC,EAAW3Y,EAAe,EAAI/wB,KAAKkP,QAAQ8V,SAAW,EAAG,GAAK,IACtG,MAEF,SAIMwkB,EAFAxpC,KAAK6kB,SACHvU,EAAM,EACM9L,KAAKJ,KAAKiM,EAAO,IAGhB0gB,EAIL,EAAR1gB,EACY7L,KAAKL,KAAKkM,EACnBC,EAAMD,EAAQ0gB,EAAe,EAAI/wB,KAAKkP,QAAQ8V,SAIrC,EAGlBhlB,KAAK2wB,IAAIxd,QAAQzF,MAAM7F,KAAO2hC,EAAc,OAQlDlnC,EAAU4R,UAAUkzB,YAAc,WAChC,GAAIjS,GAAcn1B,KAAKkP,QAAQimB,YAC3BuT,EAAM1oC,KAAK2wB,IAAI+X,GAEA,QAAfvT,EACFuT,EAAIh7B,MAAMzF,IAAMjI,KAAKiI,IAAM,KAG3BygC,EAAIh7B,MAAMzF,IAAOjI,KAAKqK,OAAOkJ,OAASvT,KAAKiI,IAAMjI,KAAKuT,OAAU,MAQpEjR,EAAU4R,UAAUm1B,iBAAmB,WACrC,GAAIrpC,KAAKumC,UAAYvmC,KAAKkP,QAAQq4B,SAASoC,aAAe3pC,KAAK2wB,IAAIiZ,SAAU,CAE3E,GAAIA,GAAW53B,SAASM,cAAc,MACtCs3B,GAASxhC,UAAY,YACrBwhC,EAASC,aAAe7pC,KAGxB0mC,EAAOkD,GACLhgC,gBAAgB,IACf0K,GAAG,OAAQ,cAIdtU,KAAK2wB,IAAI+X,IAAIx2B,YAAY03B,GACzB5pC,KAAK2wB,IAAIiZ,SAAWA,OAEZ5pC,KAAKumC,UAAYvmC,KAAK2wB,IAAIiZ,WAE9B5pC,KAAK2wB,IAAIiZ,SAASz/B,YACpBnK,KAAK2wB,IAAIiZ,SAASz/B,WAAWyH,YAAY5R,KAAK2wB,IAAIiZ,UAEpD5pC,KAAK2wB,IAAIiZ,SAAW,OAQxBtnC,EAAU4R,UAAUo1B,kBAAoB,WACtC,GAAItpC,KAAKumC,UAAYvmC,KAAKkP,QAAQq4B,SAASoC,aAAe3pC,KAAK2wB,IAAImZ,UAAW,CAE5E,GAAIA,GAAY93B,SAASM,cAAc,MACvCw3B,GAAU1hC,UAAY,aACtB0hC,EAAUC,cAAgB/pC,KAG1B0mC,EAAOoD,GACLlgC,gBAAgB,IACf0K,GAAG,OAAQ,cAIdtU,KAAK2wB,IAAI+X,IAAIx2B,YAAY43B,GACzB9pC,KAAK2wB,IAAImZ,UAAYA,OAEb9pC,KAAKumC,UAAYvmC,KAAK2wB,IAAImZ,YAE9B9pC,KAAK2wB,IAAImZ,UAAU3/B,YACrBnK,KAAK2wB,IAAImZ,UAAU3/B,WAAWyH,YAAY5R,KAAK2wB,IAAImZ,WAErD9pC,KAAK2wB,IAAImZ,UAAY,OAIzBjqC,EAAOD,QAAU0C,GAKb,SAASzC,EAAQD,EAASM,GAO9B,QAASqC,GAAWgzB,EAAMrmB,GACxBlP,KAAKkP,QAAU,KACflP,KAAKsG,MAAQ,KAQf/D,EAAU2R,UAAUD,WAAa,SAAS/E,GACpCA,GACFvO,KAAKgF,OAAO3F,KAAKkP,QAASA,IAQ9B3M,EAAU2R,UAAUuO,OAAS,WAE3B,OAAO,GAMTlgB,EAAU2R,UAAUG,QAAU,aAU9B9R,EAAU2R,UAAU81B,WAAa,WAC/B,GAAIC,GAAWjqC,KAAKsG,MAAM4jC,iBAAmBlqC,KAAKsG,MAAMgN,OACpDtT,KAAKsG,MAAM6jC,kBAAoBnqC,KAAKsG,MAAMiN,MAK9C,OAHAvT,MAAKsG,MAAM4jC,eAAiBlqC,KAAKsG,MAAMgN,MACvCtT,KAAKsG,MAAM6jC,gBAAkBnqC,KAAKsG,MAAMiN,OAEjC02B,GAGTpqC,EAAOD,QAAU2C,GAKb,SAAS1C,EAAQD,EAASM,GAe9B,QAASsC,GAAa+yB,EAAMrmB,GAC1BlP,KAAKu1B,KAAOA,EAGZv1B,KAAKi1B,gBACHmV,iBAAiB,EAEjBC,QAASA,EACTjE,OAAQ,MAEVpmC,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAK0qB,OAAS,EAEd1qB,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GA5BlB,GAAIvO,GAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC2D,EAAS3D,EAAoB,IAC7BmqC,EAAUnqC,EAAoB,GA4BlCsC,GAAY0R,UAAY,GAAI3R,GAM5BC,EAAY0R,UAAUohB,QAAU,WAC9B,GAAI7C,GAAMzgB,SAASM,cAAc,MACjCmgB,GAAIrqB,UAAY,cAChBqqB,EAAI/kB,MAAMkX,SAAW,WACrB6N,EAAI/kB,MAAMzF,IAAM,MAChBwqB,EAAI/kB,MAAM6F,OAAS,OAEnBvT,KAAKyyB,IAAMA,GAMbjwB,EAAY0R,UAAUG,QAAU,WAC9BrU,KAAKkP,QAAQk7B,iBAAkB,EAC/BpqC,KAAKyiB,SAELziB,KAAKu1B,KAAO,MAQd/yB,EAAY0R,UAAUD,WAAa,SAAS/E,GACtCA,GAEFvO,EAAK0F,iBAAiB,kBAAmB,SAAU,WAAYrG,KAAKkP,QAASA,IAQjF1M,EAAY0R,UAAUuO,OAAS,WAC7B,GAAIziB,KAAKkP,QAAQk7B,gBAAiB,CAChC,GAAI//B,GAASrK,KAAKu1B,KAAK5E,IAAI2Z,kBACvBtqC,MAAKyyB,IAAItoB,YAAcE,IAErBrK,KAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCpoB,EAAO6H,YAAYlS,KAAKyyB,KAExBzyB,KAAKqQ,QAGP,IAAI8uB,GAAM,GAAIv6B,OAAK,GAAIA,OAAOyC,UAAYrH,KAAK0qB,QAC3ClY,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAASqJ,GAE5BiH,EAASpmC,KAAKkP,QAAQm7B,QAAQrqC,KAAKkP,QAAQk3B,OAC1CA,KACEpmC,KAAKuqC,SACR1P,QAAQtG,IAAI,6BAAgCv0B,KAAKkP,QAAQk3B,OAAS,sEAClEpmC,KAAKuqC,QAAS,GAEhBnE,EAASpmC,KAAKkP,QAAQm7B,QAAY,GAEpC,IAAI5C,GAAQrB,EAAOrK,QAAU,IAAMqK,EAAOxN,KAAO,KAAO/0B,EAAOs7B,GAAKoE,OAAO,8BAC3EkE,GAAQA,EAAMrhB,OAAO,GAAGokB,cAAgB/C,EAAMgD,UAAU,GAExDzqC,KAAKyyB,IAAI/kB,MAAM7F,KAAO2K,EAAI,KAC1BxS,KAAKyyB,IAAIgV,MAAQA,MAIbznC,MAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCzyB,KAAKkmB,MAGP,QAAO,GAMT1jB,EAAY0R,UAAU7D,MAAQ,WAG5B,QAASuF,KACPV,EAAGgR,MAGH,IAAI3hB,GAAQ2Q,EAAGqgB,KAAKe,MAAM8F,WAAWlnB,EAAGqgB,KAAKC,SAASzI,OAAOzZ,OAAO/O,MAChE6uB,EAAW,EAAI7uB,EAAQ,EACZ,IAAX6uB,IAAiBA,EAAW,IAC5BA,EAAW,MAAMA,EAAW,KAEhCle,EAAGuN,SAGHvN,EAAGw1B,iBAAmBnwB,WAAW3E,EAAQwd,GAd3C,GAAIle,GAAKlV,IAiBT4V,MAMFpT,EAAY0R,UAAUgS,KAAO,WACGrf,SAA1B7G,KAAK0qC,mBACPpwB,aAAata,KAAK0qC,wBACX1qC,MAAK0qC,mBAUhBloC,EAAY0R,UAAUy2B,eAAiB,SAAS/R,GAC9C,GAAIrqB,GAAI5N,EAAKuG,QAAQ0xB,EAAM,QAAQvxB,UAC/B83B,GAAM,GAAIv6B,OAAOyC,SACrBrH,MAAK0qB,OAASnc,EAAI4wB,EAClBn/B,KAAKyiB,UAOPjgB,EAAY0R,UAAU02B,eAAiB,WACrC,MAAO,IAAIhmC,OAAK,GAAIA,OAAOyC,UAAYrH,KAAK0qB,SAG9C7qB,EAAOD,QAAU4C,GAKb,SAAS3C,EAAQD,EAASM,GAiB9B,QAASuC,GAAY8yB,EAAMrmB,GACzBlP,KAAKu1B,KAAOA,EAGZv1B,KAAKi1B,gBACH4V,gBAAgB,EAChBR,QAASA,EACTjE,OAAQ,KACR/lC,GAAI,GAENL,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAEhC/lB,GAAWA,EAAQ0pB,KACrB54B,KAAKy2B,WAAavnB,EAAQ0pB,KAE1B54B,KAAKy2B,WAAa,GAAI7xB,MAGxB5E,KAAK8qC,eAGL9qC,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAtClB,GAAIw3B,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC2D,EAAS3D,EAAoB,IAC7BmqC,EAAUnqC,EAAoB,GAqClCuC,GAAWyR,UAAY,GAAI3R,GAO3BE,EAAWyR,UAAUD,WAAa,SAAS/E,GACrCA,IAEFvO,EAAK0F,iBAAiB,iBAAkB,SAAU,UAAW,MAAOrG,KAAKkP,QAASA,GAG9ElP,KAAKkP,QAAQ7O,IACfL,KAAKyiB,WASXhgB,EAAWyR,UAAUohB,QAAU,WAC7B,GAAI7C,GAAMzgB,SAASM,cAAc,MACjCmgB,GAAIrqB,UAAY,aAChBqqB,EAAI/kB,MAAMkX,SAAW,WACrB6N,EAAI/kB,MAAMzF,IAAM,MAChBwqB,EAAI/kB,MAAM6F,OAAS,OACnBvT,KAAKyyB,IAAMA,CAEX,IAAIsY,GAAO/4B,SAASM,cAAc,MAClCy4B,GAAKr9B,MAAMkX,SAAW,WACtBmmB,EAAKr9B,MAAMzF,IAAM,MACjB8iC,EAAKr9B,MAAM7F,KAAO,QAClBkjC,EAAKr9B,MAAM6F,OAAS,OACpBw3B,EAAKr9B,MAAM4F,MAAQ,OACnBmf,EAAIvgB,YAAY64B,GAGhB/qC,KAAK8D,OAAS4iC,EAAOjU,GACnBuY,iBAAiB,IAEnBhrC,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACnDA,KAAK8D,OAAOwQ,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OAC9CA,KAAK8D,OAAOwQ,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,QAMnDyC,EAAWyR,UAAUG,QAAU,WAC7BrU,KAAKkP,QAAQ27B,gBAAiB,EAC9B7qC,KAAKyiB,SAELziB,KAAK8D,OAAOqhC,QAAO,GACnBnlC,KAAK8D,OAAS,KAEd9D,KAAKu1B,KAAO,MAOd9yB,EAAWyR,UAAUuO,OAAS,WAC5B,GAAIziB,KAAKkP,QAAQ27B,eAAgB,CAC/B,GAAIxgC,GAASrK,KAAKu1B,KAAK5E,IAAI2Z,kBACvBtqC,MAAKyyB,IAAItoB,YAAcE,IAErBrK,KAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,KAEvCpoB,EAAO6H,YAAYlS,KAAKyyB,KAG1B,IAAIjgB,GAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAAS91B,KAAKy2B,YAEjC2P,EAASpmC,KAAKkP,QAAQm7B,QAAQrqC,KAAKkP,QAAQk3B,OAC1CA,KACEpmC,KAAKuqC,SACR1P,QAAQtG,IAAI,6BAAgCv0B,KAAKkP,QAAQk3B,OAAS,sEAClEpmC,KAAKuqC,QAAS,GAEhBnE,EAASpmC,KAAKkP,QAAQm7B,QAAY,GAEpC,IAAI5C,GAAQrB,EAAOxN,KAAO,KAAO/0B,EAAO7D,KAAKy2B,YAAY8M,OAAO,8BAChEkE,GAAQA,EAAMrhB,OAAO,GAAGokB,cAAgB/C,EAAMgD,UAAU,GAExDzqC,KAAKyyB,IAAI/kB,MAAM7F,KAAO2K,EAAI,KAC1BxS,KAAKyyB,IAAIgV,MAAQA,MAIbznC,MAAKyyB,IAAItoB,YACXnK,KAAKyyB,IAAItoB,WAAWyH,YAAY5R,KAAKyyB,IAIzC,QAAO,GAOThwB,EAAWyR,UAAU+2B,cAAgB,SAASrS,GAC5C54B,KAAKy2B,WAAa91B,EAAKuG,QAAQ0xB,EAAM,QACrC54B,KAAKyiB,UAOPhgB,EAAWyR,UAAUg3B,cAAgB,WACnC,MAAO,IAAItmC,MAAK5E,KAAKy2B,WAAWpvB,YAQlC5E,EAAWyR,UAAU8rB,aAAe,SAASn2B,GAC3C7J,KAAK8qC,YAAY9J,UAAW,EAC5BhhC,KAAK8qC,YAAYrU,WAAaz2B,KAAKy2B,WAEnC5sB,EAAM69B,kBACN79B,EAAMD,kBAQRnH,EAAWyR,UAAU+rB,QAAU,SAAUp2B,GACvC,GAAK7J,KAAK8qC,YAAY9J,SAAtB,CAEA,GAAIS,GAAS53B,EAAM2uB,QAAQiJ,OACvBjvB,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAAS91B,KAAK8qC,YAAYrU,YAAcgL,EAC3D7I,EAAO54B,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,EAEjCxS,MAAKirC,cAAcrS,GAGnB54B,KAAKu1B,KAAKE,QAAQhH,KAAK,cACrBpuB,GAAIL,KAAKkP,QAAQ7O,GACjBu4B,KAAM,GAAIh0B,MAAK5E,KAAKy2B,WAAWpvB,aAGjCwC,EAAM69B,kBACN79B,EAAMD,mBAQRnH,EAAWyR,UAAUgsB,WAAa,SAAUr2B,GACrC7J,KAAK8qC,YAAY9J,WAGtBhhC,KAAKu1B,KAAKE,QAAQhH,KAAK,eACrBpuB,GAAIL,KAAKkP,QAAQ7O,GACjBu4B,KAAM,GAAIh0B,MAAK5E,KAAKy2B,WAAWpvB,aAGjCwC,EAAM69B,kBACN79B,EAAMD,mBAGR/J,EAAOD,QAAU6C,GAKb,SAAS5C,EAAQD,EAASM,GAe9B,QAASwC,GAAU6yB,EAAMrmB,EAASi8B,EAAKC,GACrCprC,KAAKK,GAAKM,EAAK2E,aACftF,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACHE,YAAa,OACbkW,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACPC,iBAAkB,EAClBC,iBAAkB,EAClBC,aAAc,GACdC,aAAc,EACdC,UAAW,GACXt4B,MAAO,OACPmW,SAAS,EACT8T,YAAY,EACZD,aACEz1B,MAAO1D,IAAI0C,OAAWzC,IAAIyC,QAC1BwhB,OAAQlkB,IAAI0C,OAAWzC,IAAIyC,SAE7B4gC,OACE5/B,MAAOyiB,KAAKzjB,QACZwhB,OAAQiC,KAAKzjB,SAEf08B,QACE17B,MAAOk3B,SAAUl4B,QACjBwhB,OAAQ0W,SAAUl4B,UAItB7G,KAAKorC,iBAAmBA,EACxBprC,KAAK6rC,aAAeV,EACpBnrC,KAAKsG,SACLtG,KAAK8rC,aACHC,SACAC,UACAvE,UAGFznC,KAAK2wB,OAEL3wB,KAAKs2B,OAASjmB,MAAM,EAAGC,IAAI,GAE3BtQ,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAKisC,iBAAmB,EAExBjsC,KAAKiU,WAAW/E,GAChBlP,KAAKsT,MAAQrP,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAC3DjL,KAAKksC,SAAWlsC,KAAKsT,MACrBtT,KAAKuT,OAASvT,KAAK6rC,aAAa3a,aAChClxB,KAAK05B,QAAS,EAEd15B,KAAKmsC,WAAa,GAClBnsC,KAAKosC,iBAAmB,GACxBpsC,KAAKqsC,aAAe,GAEpBrsC,KAAKssC,WAAa,EAClBtsC,KAAKusC,QAAS,EACdvsC,KAAKwsC,eACLxsC,KAAKysC,cAAe,EAGpBzsC,KAAK+0B,UACL/0B,KAAK0sC,eAAiB,EAGtB1sC,KAAKs1B,SAEL,IAAIpgB,GAAKlV,IACTA,MAAKu1B,KAAKE,QAAQnhB,GAAG,eAAgB,WACnCY,EAAGyb,IAAIgc,cAAcj/B,MAAMzF,IAAMiN,EAAGqgB,KAAKC,SAASoX,UAAY,OApFlE,GAAIjsC,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BqC,EAAYrC,EAAoB,IAChC0B,EAAW1B,EAAoB,GAqFnCwC,GAASwR,UAAY,GAAI3R,GAGzBG,EAASwR,UAAU24B,SAAW,SAAS75B,EAAO85B,GACvC9sC,KAAK+0B,OAAO3uB,eAAe4M,KAC9BhT,KAAK+0B,OAAO/hB,GAAS85B,GAEvB9sC,KAAK0sC,gBAAkB,GAGzBhqC,EAASwR,UAAU64B,YAAc,SAAS/5B,EAAO85B,GAC/C9sC,KAAK+0B,OAAO/hB,GAAS85B,GAGvBpqC,EAASwR,UAAU84B,YAAc,SAASh6B,GACpChT,KAAK+0B,OAAO3uB,eAAe4M,WACtBhT,MAAK+0B,OAAO/hB,GACnBhT,KAAK0sC,gBAAkB,IAK3BhqC,EAASwR,UAAUD,WAAa,SAAU/E;AACxC,GAAIA,EAAS,CACX,GAAIuT,IAAS,CACTziB,MAAKkP,QAAQimB,aAAejmB,EAAQimB,aAAuCtuB,SAAxBqI,EAAQimB,cAC7D1S,GAAS,EAEX,IAAI9T,IACF,cACA,kBACA,kBACA,QACA,mBACA,mBACA,eACA,eACA,YACA,QACA,UACA,cACA,QACA,SACA,aAEFhO,GAAK0F,gBAAgBsI,EAAQ3O,KAAKkP,QAASA,GAE3ClP,KAAKksC,SAAWjoC,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAEhD,GAAVwX,GAAkBziB,KAAK2wB,IAAIrQ,QAC7BtgB,KAAKgnC,OACLhnC,KAAKinC,UASXvkC,EAASwR,UAAUohB,QAAU,WAC3Bt1B,KAAK2wB,IAAIrQ,MAAQtO,SAASM,cAAc,OACxCtS,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAKkP,QAAQoE,MAC1CtT,KAAK2wB,IAAIrQ,MAAM5S,MAAM6F,OAASvT,KAAKuT,OAEnCvT,KAAK2wB,IAAIgc,cAAgB36B,SAASM,cAAc,OAChDtS,KAAK2wB,IAAIgc,cAAcj/B,MAAM4F,MAAQ,OACrCtT,KAAK2wB,IAAIgc,cAAcj/B,MAAM6F,OAASvT,KAAKuT,OAC3CvT,KAAK2wB,IAAIgc,cAAcj/B,MAAMkX,SAAW,WAGxC5kB,KAAKmrC,IAAMn5B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAKmrC,IAAIz9B,MAAMkX,SAAW,WAC1B5kB,KAAKmrC,IAAIz9B,MAAMzF,IAAM,MACrBjI,KAAKmrC,IAAIz9B,MAAM6F,OAAS,OACxBvT,KAAKmrC,IAAIz9B,MAAM4F,MAAQ,OACvBtT,KAAKmrC,IAAIz9B,MAAMu/B,QAAU,QACzBjtC,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAKmrC,MAGlCzoC,EAASwR,UAAUg5B,kBAAoB,WACrCtsC,EAAQ0Q,gBAAgBtR,KAAKwsC,YAE7B,IAAIh6B,GACAo5B,EAAY5rC,KAAKkP,QAAQ08B,UACzBuB,EAAa,GACbC,EAAa,EACb36B,EAAI26B,EAAa,GAAMD,CAGzB36B,GAD8B,QAA5BxS,KAAKkP,QAAQimB,YACXiY,EAGAptC,KAAKsT,MAAQs4B,EAAYwB,CAG/B,KAAK,GAAInU,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO3uB,eAAe6yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAKorC,iBAAiB/R,WAAWJ,IAAuE,GAA7Cj5B,KAAKorC,iBAAiB/R,WAAWJ,KACvIj5B,KAAK+0B,OAAOkE,GAASoU,SAAS76B,EAAGC,EAAGzS,KAAKwsC,YAAaxsC,KAAKmrC,IAAKS,EAAWuB,GAC3E16B,GAAK06B,EAAaC,GAKxBxsC,GAAQ+Q,gBAAgB3R,KAAKwsC,aAC7BxsC,KAAKysC,cAAe,GAGtB/pC,EAASwR,UAAUo5B,cAAgB,WACR,GAArBttC,KAAKysC,eACP7rC,EAAQ0Q,gBAAgBtR,KAAKwsC,aAC7B5rC,EAAQ+Q,gBAAgB3R,KAAKwsC,aAC7BxsC,KAAKysC,cAAe,IAOxB/pC,EAASwR,UAAU+yB,KAAO,WACxBjnC,KAAK05B,QAAS,EACT15B,KAAK2wB,IAAIrQ,MAAMnW,aACc,QAA5BnK,KAAKkP,QAAQimB,YACfn1B,KAAKu1B,KAAK5E,IAAI9oB,KAAKqK,YAAYlS,KAAK2wB,IAAIrQ,OAGxCtgB,KAAKu1B,KAAK5E,IAAItI,MAAMnW,YAAYlS,KAAK2wB,IAAIrQ,QAIxCtgB,KAAK2wB,IAAIgc,cAAcxiC,YAC1BnK,KAAKu1B,KAAK5E,IAAI4c,qBAAqBr7B,YAAYlS,KAAK2wB,IAAIgc,gBAO5DjqC,EAASwR,UAAU8yB,KAAO,WACxBhnC,KAAK05B,QAAS,EACV15B,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,OAG7CtgB,KAAK2wB,IAAIgc,cAAcxiC,YACzBnK,KAAK2wB,IAAIgc,cAAcxiC,WAAWyH,YAAY5R,KAAK2wB,IAAIgc,gBAU3DjqC,EAASwR,UAAUigB,SAAW,SAAU9jB,EAAOC,GAC1B,GAAftQ,KAAKusC,QAA8C,GAA3BvsC,KAAKkP,QAAQquB,YAA2C,IAArBv9B,KAAKqsC,cAC9Dh8B,EAAQ,IACVA,EAAQ,GAGZrQ,KAAKs2B,MAAMjmB,MAAQA,EACnBrQ,KAAKs2B,MAAMhmB,IAAMA,GAOnB5N,EAASwR,UAAUuO,OAAS,WAC1B,GAAIwnB,IAAU,EACVuD,EAAe,CAGnBxtC,MAAK2wB,IAAIgc,cAAcj/B,MAAMzF,IAAMjI,KAAKu1B,KAAKC,SAASoX,UAAY,IAElE,KAAK,GAAI3T,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO3uB,eAAe6yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAKorC,iBAAiB/R,WAAWJ,IAAuE,GAA7Cj5B,KAAKorC,iBAAiB/R,WAAWJ,IACvIuU,IAIN,IAA2B,GAAvBxtC,KAAK0sC,gBAAuC,GAAhBc,EAC9BxtC,KAAKgnC,WAEF,CACHhnC,KAAKinC,OACLjnC,KAAKuT,OAAStP,OAAOjE,KAAK6rC,aAAan+B,MAAM6F,OAAOtI,QAAQ,KAAK,KAGjEjL,KAAK2wB,IAAIgc,cAAcj/B,MAAM6F,OAASvT,KAAKuT,OAAS,KACpDvT,KAAKsT,MAAgC,GAAxBtT,KAAKkP,QAAQua,QAAkBxlB,QAAQ,GAAKjE,KAAKkP,QAAQoE,OAAOrI,QAAQ,KAAK,KAAO,CAEjG,IAAI3E,GAAQtG,KAAKsG,MACbga,EAAQtgB,KAAK2wB,IAAIrQ,KAGrBA,GAAMlY,UAAY,WAGlBpI,KAAKytC,oBAEL,IAAItY,GAAcn1B,KAAKkP,QAAQimB,YAC3BkW,EAAkBrrC,KAAKkP,QAAQm8B,gBAC/BC,EAAkBtrC,KAAKkP,QAAQo8B,eAGnChlC,GAAMonC,iBAAmBrC,EAAkB/kC,EAAMqnC,gBAAkB,EACnErnC,EAAMsnC,iBAAmBtC,EAAkBhlC,EAAMunC,gBAAkB,EAEnEvnC,EAAMwnC,eAAiB9tC,KAAKu1B,KAAK5E,IAAI4c,qBAAqBvc,YAAchxB,KAAKssC,WAAatsC,KAAKsT,MAAQ,EAAItT,KAAKkP,QAAQu8B,iBACxHnlC,EAAMynC,gBAAkB,EACxBznC,EAAM0nC,eAAiBhuC,KAAKu1B,KAAK5E,IAAI4c,qBAAqBvc,YAAchxB,KAAKssC,WAAatsC,KAAKsT,MAAQ,EAAItT,KAAKkP,QAAQs8B,iBACxHllC,EAAM2nC,gBAAkB,EAGL,QAAf9Y,GACF7U,EAAM5S,MAAMzF,IAAM,IAClBqY,EAAM5S,MAAM7F,KAAO,IACnByY,EAAM5S,MAAM4W,OAAS,GACrBhE,EAAM5S,MAAM4F,MAAQtT,KAAKsT,MAAQ,KACjCgN,EAAM5S,MAAM6F,OAASvT,KAAKuT,OAAS,KACnCvT,KAAKsG,MAAMgN,MAAQtT,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAC3CtT,KAAKsG,MAAMiN,OAASvT,KAAKu1B,KAAKC,SAAS3tB,KAAK0L,SAG5C+M,EAAM5S,MAAMzF,IAAM,GAClBqY,EAAM5S,MAAM4W,OAAS,IACrBhE,EAAM5S,MAAM7F,KAAO,IACnByY,EAAM5S,MAAM4F,MAAQtT,KAAKsT,MAAQ,KACjCgN,EAAM5S,MAAM6F,OAASvT,KAAKuT,OAAS,KACnCvT,KAAKsG,MAAMgN,MAAQtT,KAAKu1B,KAAKC,SAASnN,MAAM/U,MAC5CtT,KAAKsG,MAAMiN,OAASvT,KAAKu1B,KAAKC,SAASnN,MAAM9U,QAG/C02B,EAAUjqC,KAAKkuC,gBACfjE,EAAUjqC,KAAKgqC,cAAgBC,EAEL,GAAtBjqC,KAAKkP,QAAQq8B,MACfvrC,KAAKktC,oBAGLltC,KAAKstC,gBAGPttC,KAAKmuC,aAAahZ,GAEpB,MAAO8U,IAOTvnC,EAASwR,UAAUg6B,cAAgB,WACjC,GAAIjE,IAAU,CACdrpC,GAAQ0Q,gBAAgBtR,KAAK8rC,YAAYC,OACzCnrC,EAAQ0Q,gBAAgBtR,KAAK8rC,YAAYE,OAEzC,IAAI7W,GAAcn1B,KAAKkP,QAAqB,YAGxCkuB,EAAcp9B,KAAKusC,OAASvsC,KAAKsG,MAAMunC,iBAAmB,GAAK7tC,KAAKosC,iBAEpEjjB,EAAO,GAAIvnB,GACb5B,KAAKs2B,MAAMjmB,MACXrQ,KAAKs2B,MAAMhmB,IACX8sB,EACAp9B,KAAK2wB,IAAIrQ,MAAM4Q,aACflxB,KAAKkP,QAAQouB,YAAYt9B,KAAKkP,QAAQimB,aACvB,GAAfn1B,KAAKusC,QAAmBvsC,KAAKkP,QAAQquB,WAGvCv9B,MAAKmpB,KAAOA,CAGZ,IAAIgjB,IAAcnsC,KAAK2wB,IAAIrQ,MAAM4Q,aAAgB/H,EAAKyU,WAAa59B,KAAK2wB,IAAIrQ,MAAM4Q,aAAe/H,EAAKwV,gBAAoBxV,EAAKwV,YAAcxV,EAAKyU,WAAazU,EAAKA,KAEpKnpB,MAAKmsC,WAAaA,CAElB,IAAIiC,GAAgBpuC,KAAKuT,OAAS44B,EAC9BkC,EAAiB,CAGrB,IAAmB,GAAfruC,KAAKusC,OAAiB,CACxBJ,EAAansC,KAAKosC,iBAClBiC,EAAiB7pC,KAAK+pB,MAAOvuB,KAAK2wB,IAAIrQ,MAAM4Q,aAAeib,EAAciC,EACzE,KAAK,GAAItoC,GAAI,EAAO,GAAMuoC,EAAVvoC,EAA0BA,IACxCqjB,EAAK2V,UAIP,IAFAsP,EAAgBpuC,KAAKuT,OAAS44B,EAEL,IAArBnsC,KAAKqsC,cAAiD,GAA3BrsC,KAAKkP,QAAQquB,WAAoB,CAC9D,GAAI+Q,GAAsBnlB,EAAKwU,UAAYxU,EAAKA,KAAQnpB,KAAKqsC,YAC7D,IAAIiC,EAAqB,EACvB,IAAK,GAAIxoC,GAAI,EAAOwoC,EAAJxoC,EAAwBA,IAAMqjB,EAAKE,WAEhD,IAAyB,EAArBilB,EACP,IAAK,GAAIxoC,GAAI,GAAQwoC,EAALxoC,EAAyBA,IAAMqjB,EAAK2V,gBAKxDsP,IAAiB,GAInBpuC,MAAKuuC,YAAcplB,EAAKwU,SACxB,IAMIoB,GANAyP,EAAiB,EAGjBpqC,EAAM,CAI8ByC,UAArC7G,KAAKkP,QAAQq0B,OAAOpO,KACrB4J,EAAW/+B,KAAKkP,QAAQq0B,OAAOpO,GAAa4J,UAG9C/+B,KAAKyuC,aAAe,CAEpB,KADA,GAAIh8B,GAAI,EACDrO,EAAMI,KAAK+pB,MAAM6f,IAAgB,CACtCjlB,EAAKE,OACL5W,EAAIjO,KAAK+pB,MAAMnqB,EAAM+nC,GACrBqC,EAAiBpqC,EAAM+nC,CACvB,IAAIjN,GAAU/V,EAAK+V,WAEfl/B,KAAKkP,QAAyB,iBAAgB,GAAXgwB,GAAmC,GAAfl/B,KAAKusC,QAAsD,GAAnCvsC,KAAKkP,QAAyB,kBAC/GlP,KAAK0uC,aAAaj8B,EAAI,EAAG0W,EAAKC,WAAW2V,GAAW5J,EAAa,cAAen1B,KAAKsG,MAAMqnC,iBAGzFzO,GAAWl/B,KAAKkP,QAAyB,iBAAoB,GAAflP,KAAKusC,QAChB,GAAnCvsC,KAAKkP,QAAyB,iBAA6B,GAAflP,KAAKusC,QAA8B,GAAXrN,GAClEzsB,GAAK,GACPzS,KAAK0uC,aAAaj8B,EAAI,EAAG0W,EAAKC,WAAW2V,GAAW5J,EAAa,cAAen1B,KAAKsG,MAAMunC,iBAE7F7tC,KAAK2uC,YAAYl8B,EAAG0iB,EAAa,wBAAyBn1B,KAAKkP,QAAQs8B,iBAAkBxrC,KAAKsG,MAAM0nC,iBAGpGhuC,KAAK2uC,YAAYl8B,EAAG0iB,EAAa,wBAAyBn1B,KAAKkP,QAAQu8B,iBAAkBzrC,KAAKsG,MAAMwnC,gBAGnF,GAAf9tC,KAAKusC,QAAkC,GAAhBpjB,EAAK4S,UAC9B/7B,KAAKqsC,aAAejoC,GAGtBA,IAGiB,GAAfpE,KAAKusC,OACPvsC,KAAKisC,iBAAmBx5B,GAAKzS,KAAKuuC,YAAcplB,EAAK4S,SAGrD/7B,KAAKisC,iBAAmBjsC,KAAK2wB,IAAIrQ,MAAM4Q,aAAe/H,EAAKwV,WAI7D,IAAIiQ,GAAa,CACuB/nC,UAApC7G,KAAKkP,QAAQu4B,MAAMtS,IAAuEtuB,SAAzC7G,KAAKkP,QAAQu4B,MAAMtS,GAAa7K,OACnFskB,EAAa5uC,KAAKsG,MAAMuoC,gBAE1B,IAAInkB,GAA+B,GAAtB1qB,KAAKkP,QAAQq8B,MAAgB/mC,KAAKJ,IAAIpE,KAAKkP,QAAQ08B,UAAWgD,GAAc5uC,KAAKkP,QAAQw8B,aAAe,GAAKkD,EAAa5uC,KAAKkP,QAAQw8B,aAAe,EA0BnK,OAvBI1rC,MAAKyuC,aAAgBzuC,KAAKsT,MAAQoX,GAAmC,GAAxB1qB,KAAKkP,QAAQua,SAC5DzpB,KAAKsT,MAAQtT,KAAKyuC,aAAe/jB,EACjC1qB,KAAKkP,QAAQoE,MAAQtT,KAAKsT,MAAQ,KAClC1S,EAAQ+Q,gBAAgB3R,KAAK8rC,YAAYC,OACzCnrC,EAAQ+Q,gBAAgB3R,KAAK8rC,YAAYE,QACzChsC,KAAKyiB,SACLwnB,GAAU,GAGHjqC,KAAKyuC,aAAgBzuC,KAAKsT,MAAQoX,GAAmC,GAAxB1qB,KAAKkP,QAAQua,SAAmBzpB,KAAKsT,MAAQtT,KAAKksC,UACtGlsC,KAAKsT,MAAQ9O,KAAKJ,IAAIpE,KAAKksC,SAASlsC,KAAKyuC,aAAe/jB,GACxD1qB,KAAKkP,QAAQoE,MAAQtT,KAAKsT,MAAQ,KAClC1S,EAAQ+Q,gBAAgB3R,KAAK8rC,YAAYC,OACzCnrC,EAAQ+Q,gBAAgB3R,KAAK8rC,YAAYE,QACzChsC,KAAKyiB,SACLwnB,GAAU,IAGVrpC,EAAQ+Q,gBAAgB3R,KAAK8rC,YAAYC,OACzCnrC,EAAQ+Q,gBAAgB3R,KAAK8rC,YAAYE,QACzC/B,GAAU,GAGLA,GAGTvnC,EAASwR,UAAU46B,aAAe,SAAUxqC,GAC1C,GAAIyqC,GAAgB/uC,KAAKuuC,YAAcjqC,EACnC0qC,EAAiBD,EAAgB/uC,KAAKisC,gBAC1C,OAAO+C,IAGTtsC,EAASwR,UAAUylB,cAAgB,SAAUnnB,GAC3C,MAAOxS,MAAKuuC,YAAe/7B,EAAIxS,KAAKisC,kBAYtCvpC,EAASwR,UAAUw6B,aAAe,SAAUj8B,EAAG6X,EAAM6K,EAAa/sB,EAAW6mC,GAE3E,GAAIj8B,GAAQpS,EAAQuR,cAAc,MAAMnS,KAAK8rC,YAAYE,OAAQhsC,KAAK2wB,IAAIrQ,MAC1EtN,GAAM5K,UAAYA,EAClB4K,EAAMiS,UAAYqF,EACC,QAAf6K,GACFniB,EAAMtF,MAAM7F,KAAO,IAAM7H,KAAKkP,QAAQw8B,aAAe,KACrD14B,EAAMtF,MAAM4b,UAAY,UAGxBtW,EAAMtF,MAAM2a,MAAQ,IAAMroB,KAAKkP,QAAQw8B,aAAe,KACtD14B,EAAMtF,MAAM4b,UAAY,QAG1BtW,EAAMtF,MAAMzF,IAAMwK,EAAI,GAAMw8B,EAAkBjvC,KAAKkP,QAAQy8B,aAAe,KAE1ErhB,GAAQ,EAER,IAAI4kB,GAAe1qC,KAAKJ,IAAIpE,KAAKsG,MAAM6oC,eAAenvC,KAAKsG,MAAM8oC,eAC7DpvC,MAAKyuC,aAAenkB,EAAKrkB,OAASipC,IACpClvC,KAAKyuC,aAAenkB,EAAKrkB,OAASipC,IAYtCxsC,EAASwR,UAAUy6B,YAAc,SAAUl8B,EAAG0iB,EAAa/sB,EAAWsiB,EAAQpX,GAC5E,GAAmB,GAAftT,KAAKusC,OAAgB,CACvB,GAAI9b,GAAO7vB,EAAQuR,cAAc,MAAMnS,KAAK8rC,YAAYC,MAAO/rC,KAAK2wB,IAAIgc,cACxElc,GAAKroB,UAAYA,EACjBqoB,EAAKxL,UAAY,GAEE,QAAfkQ,EACF1E,EAAK/iB,MAAM7F,KAAQ7H,KAAKsT,MAAQoX,EAAU,KAG1C+F,EAAK/iB,MAAM2a,MAASroB,KAAKsT,MAAQoX,EAAU,KAG7C+F,EAAK/iB,MAAM4F,MAAQA,EAAQ,KAC3Bmd,EAAK/iB,MAAMzF,IAAMwK,EAAI,OASzB/P,EAASwR,UAAUi6B,aAAe,SAAUhZ,GAI1C,GAHAv0B,EAAQ0Q,gBAAgBtR,KAAK8rC,YAAYrE,OAGD5gC,SAApC7G,KAAKkP,QAAQu4B,MAAMtS,IAAuEtuB,SAAzC7G,KAAKkP,QAAQu4B,MAAMtS,GAAa7K,KAAoB,CACvG,GAAImd,GAAQ7mC,EAAQuR,cAAc,MAAOnS,KAAK8rC,YAAYrE,MAAOznC,KAAK2wB,IAAIrQ,MAC1EmnB,GAAMr/B,UAAY,eAAiB+sB,EACnCsS,EAAMxiB,UAAYjlB,KAAKkP,QAAQu4B,MAAMtS,GAAa7K,KAGJzjB,SAA1C7G,KAAKkP,QAAQu4B,MAAMtS,GAAaznB,OAClC/M,EAAKoN,WAAW05B,EAAOznC,KAAKkP,QAAQu4B,MAAMtS,GAAaznB,OAGtC,QAAfynB,EACFsS,EAAM/5B,MAAM7F,KAAO7H,KAAKsG,MAAMuoC,gBAAkB,KAGhDpH,EAAM/5B,MAAM2a,MAAQroB,KAAKsG,MAAMuoC,gBAAkB,KAGnDpH,EAAM/5B,MAAM4F,MAAQtT,KAAKuT,OAAS,KAIpC3S,EAAQ+Q,gBAAgB3R,KAAK8rC,YAAYrE,QAW3C/kC,EAASwR,UAAUu5B,mBAAqB,WAEtC,KAAM,mBAAqBztC,MAAKsG,OAAQ,CACtC,GAAI+oC,GAAYr9B,SAASs9B,eAAe,KACpCC,EAAmBv9B,SAASM,cAAc,MAC9Ci9B,GAAiBnnC,UAAY,sBAC7BmnC,EAAiBr9B,YAAYm9B,GAC7BrvC,KAAK2wB,IAAIrQ,MAAMpO,YAAYq9B,GAE3BvvC,KAAKsG,MAAMqnC,gBAAkB4B,EAAiB1pB,aAC9C7lB,KAAKsG,MAAM8oC,eAAiBG,EAAiB/uB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAY29B,GAG7B,KAAM,mBAAqBvvC,MAAKsG,OAAQ,CACtC,GAAIkpC,GAAYx9B,SAASs9B,eAAe,KACpCG,EAAmBz9B,SAASM,cAAc,MAC9Cm9B,GAAiBrnC,UAAY,sBAC7BqnC,EAAiBv9B,YAAYs9B,GAC7BxvC,KAAK2wB,IAAIrQ,MAAMpO,YAAYu9B,GAE3BzvC,KAAKsG,MAAMunC,gBAAkB4B,EAAiB5pB,aAC9C7lB,KAAKsG,MAAM6oC,eAAiBM,EAAiBjvB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAY69B,GAG7B,KAAM,mBAAqBzvC,MAAKsG,OAAQ,CACtC,GAAIopC,GAAY19B,SAASs9B,eAAe,KACpCK,EAAmB39B,SAASM,cAAc,MAC9Cq9B,GAAiBvnC,UAAY,sBAC7BunC,EAAiBz9B,YAAYw9B,GAC7B1vC,KAAK2wB,IAAIrQ,MAAMpO,YAAYy9B,GAE3B3vC,KAAKsG,MAAMuoC,gBAAkBc,EAAiB9pB,aAC9C7lB,KAAKsG,MAAMspC,eAAiBD,EAAiBnvB,YAE7CxgB,KAAK2wB,IAAIrQ,MAAM1O,YAAY+9B,KAI/B9vC,EAAOD,QAAU8C,GAKb,SAAS7C,EAAQD,EAASM,GAkB9B,QAASyC,GAAY+P,EAAOumB,EAAS/pB,EAAS2gC,GAC5C7vC,KAAKK,GAAK44B,CACV,IAAItqB,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAAW,aAAa,SAAS,aAC5F3O,MAAKkP,QAAUvO,EAAK+N,sBAAsBC,EAAOO,GACjDlP,KAAK8vC,kBAAwCjpC,SAApB6L,EAAMtK,UAC/BpI,KAAK6vC,yBAA2BA,EAChC7vC,KAAK+vC,aAAe,EACpB/vC,KAAK4V,OAAOlD,GACkB,GAA1B1S,KAAK8vC,oBACP9vC,KAAK6vC,yBAAyB,IAAM,GAEtC7vC,KAAK22B,aACL32B,KAAKypB,QAA4B5iB,SAAlB6L,EAAM+W,SAAwB,EAAO/W,EAAM+W,QA5B5D,GAAI9oB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9B8vC,EAAO9vC,EAAoB,IAC3B+vC,EAAM/vC,EAAoB,IAC1BgwC,EAAShwC,EAAoB,GAgCjCyC,GAAWuR,UAAU8iB,SAAW,SAAS/0B,GAC1B,MAATA,GACFjC,KAAK22B,UAAY10B,EACQ,GAArBjC,KAAKkP,QAAQgI,MACflX,KAAK22B,UAAUzf,KAAK,SAAUtR,EAAEC,GAAI,MAAOD,GAAE4M,EAAI3M,EAAE2M,KAIrDxS,KAAK22B,cASTh0B,EAAWuR,UAAUi8B,gBAAkB,SAAS5pB,GAC9CvmB,KAAK+vC,aAAexpB,GAQtB5jB,EAAWuR,UAAUD,WAAa,SAAS/E,GACzC,GAAgBrI,SAAZqI,EAAuB,CACzB,GAAIP,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAC3DhO,GAAK8F,oBAAoBkI,EAAQ3O,KAAKkP,QAASA,GAE/CvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UAEpCA,EAAQkhC,YACuB,gBAAtBlhC,GAAQkhC,YACblhC,EAAQkhC,WAAWC,kBACqB,WAAtCnhC,EAAQkhC,WAAWC,gBACrBrwC,KAAKkP,QAAQkhC,WAAWE,MAAQ,EAEa,WAAtCphC,EAAQkhC,WAAWC,gBAC1BrwC,KAAKkP,QAAQkhC,WAAWE,MAAQ,GAGhCtwC,KAAKkP,QAAQkhC,WAAWC,gBAAkB,cAC1CrwC,KAAKkP,QAAQkhC,WAAWE,MAAQ,KAOhB,QAAtBtwC,KAAKkP,QAAQxB,MACf1N,KAAKmH,KAAO,GAAI6oC,GAAKhwC,KAAKK,GAAIL,KAAKkP,SAEN,OAAtBlP,KAAKkP,QAAQxB,MACpB1N,KAAKmH,KAAO,GAAI8oC,GAAIjwC,KAAKK,GAAIL,KAAKkP,SAEL,UAAtBlP,KAAKkP,QAAQxB,QACpB1N,KAAKmH,KAAO,GAAI+oC,GAAOlwC,KAAKK,GAAIL,KAAKkP,WASzCvM,EAAWuR,UAAU0B,OAAS,SAASlD,GACrC1S,KAAK0S,MAAQA,EACb1S,KAAKmT,QAAUT,EAAMS,SAAW,QAChCnT,KAAKoI,UAAYsK,EAAMtK,WAAapI,KAAKoI,WAAa,aAAepI,KAAK6vC,yBAAyB,GAAK,GACxG7vC,KAAKypB,QAA4B5iB,SAAlB6L,EAAM+W,SAAwB,EAAO/W,EAAM+W,QAC1DzpB,KAAK0N,MAAQgF,EAAMhF,MACnB1N,KAAKiU,WAAWvB,EAAMxD,UAcxBvM,EAAWuR,UAAUm5B,SAAW,SAAS76B,EAAGC,EAAGlB,EAAeg/B,EAAc3E,EAAWuB,GACrF,GACIqD,GAAMC,EADNC,EAA0B,GAAbvD,EAGbwD,EAAU/vC,EAAQiR,cAAc,OAAQN,EAAeg/B,EAO3D,IANAI,EAAQ79B,eAAe,KAAM,IAAKN,GAClCm+B,EAAQ79B,eAAe,KAAM,IAAKL,EAAIi+B,GACtCC,EAAQ79B,eAAe,KAAM,QAAS84B,GACtC+E,EAAQ79B,eAAe,KAAM,SAAU,EAAE49B,GACzCC,EAAQ79B,eAAe,KAAM,QAAS,WAEZ,QAAtB9S,KAAKkP,QAAQxB,MACf8iC,EAAO5vC,EAAQiR,cAAc,OAAQN,EAAeg/B,GACpDC,EAAK19B,eAAe,KAAM,QAAS9S,KAAKoI,WACtBvB,SAAf7G,KAAK0N,OACN8iC,EAAK19B,eAAe,KAAM,QAAS9S,KAAK0N,OAG1C8iC,EAAK19B,eAAe,KAAM,IAAK,IAAMN,EAAI,IAAIC,EAAE,MAAQD,EAAIo5B,GAAa,IAAIn5B,GACzC,GAA/BzS,KAAKkP,QAAQ0hC,OAAOzhC,UACtBshC,EAAW7vC,EAAQiR,cAAc,OAAQN,EAAeg/B,GACjB,OAAnCvwC,KAAKkP,QAAQ0hC,OAAOzb,YACtBsb,EAAS39B,eAAe,KAAM,IAAK,IAAIN,EAAE,MAAQC,EAAIi+B,GACnD,IAAIl+B,EAAE,IAAIC,EAAE,MAAOD,EAAIo5B,GAAa,IAAIn5B,EAAE,MAAOD,EAAIo5B,GAAa,KAAOn5B,EAAIi+B,IAG/ED,EAAS39B,eAAe,KAAM,IAAK,IAAIN,EAAE,IAAIC,EAAE,KACzCD,EAAE,KAAOC,EAAIi+B,GAAc,MACzBl+B,EAAIo5B,GAAa,KAAOn5B,EAAIi+B,GAClC,KAAMl+B,EAAIo5B,GAAa,IAAIn5B,GAE/Bg+B,EAAS39B,eAAe,KAAM,QAAS9S,KAAKoI,UAAY,cAGnB,GAAnCpI,KAAKkP,QAAQ2D,WAAW1D,SAC1BvO,EAAQ2R,UAAUC,EAAI,GAAMo5B,EAAUn5B,EAAGzS,KAAMuR,EAAeg/B,OAG7D,CACH,GAAIM,GAAWrsC,KAAK+pB,MAAM,GAAMqd,GAC5BkF,EAAatsC,KAAK+pB,MAAM,GAAM4e,GAC9B4D,EAAavsC,KAAK+pB,MAAM,IAAO4e,GAE/BziB,EAASlmB,KAAK+pB,OAAOqd,EAAa,EAAIiF,GAAW,EAErDjwC,GAAQyS,QAAQb,EAAI,GAAIq+B,EAAWnmB,EAAYjY,EAAIi+B,EAAaI,EAAa,EAAGD,EAAUC,EAAY9wC,KAAKoI,UAAY,OAAQmJ,EAAeg/B,GAC9I3vC,EAAQyS,QAAQb,EAAI,IAAIq+B,EAAWnmB,EAAS,EAAGjY,EAAIi+B,EAAaK,EAAa,EAAGF,EAAUE,EAAY/wC,KAAKoI,UAAY,OAAQmJ,EAAeg/B,KAYlJ5tC,EAAWuR,UAAUilB,UAAY,SAASyS,EAAWuB,GACnD,GAAIhC,GAAMn5B,SAASC,gBAAgB,6BAA6B,MAEhE,OADAjS,MAAKqtC,SAAS,EAAE,GAAIF,KAAchC,EAAIS,EAAUuB,IACxC6D,KAAM7F,EAAKn4B,MAAOhT,KAAKmT,QAASgiB,YAAYn1B,KAAKkP,QAAQ+hC,mBAGnEtuC,EAAWuR,UAAUg9B,UAAY,SAASC,GACxC,MAAOnxC,MAAKmH,KAAK+pC,UAAUC,IAG7BxuC,EAAWuR,UAAUk9B,KAAO,SAASnZ,EAASvlB,EAAO2+B,GACnDrxC,KAAKmH,KAAKiqC,KAAKnZ,EAASvlB,EAAO2+B,IAIjCxxC,EAAOD,QAAU+C,GAKb,SAAS9C,EAAQD,EAASM,GAY9B,QAAS0C,GAAOq2B,EAASxlB,EAAMijB,GAC7B12B,KAAKi5B,QAAUA,EACfj5B,KAAKojC,aACLpjC,KAAK8oC,cAAgB,EACrB9oC,KAAKsxC,gBAAkB79B,GAAQA,EAAK89B,cACpCvxC,KAAK02B,QAAUA,EAEf12B,KAAK2wB,OACL3wB,KAAKsG,OACH0M,OACEM,MAAO,EACPC,OAAQ,IAGZvT,KAAKoI,UAAY,KAEjBpI,KAAKiC,SACLjC,KAAKwxC,gBACLxxC,KAAKqP,cACHoiC,WACAC,UAEF1xC,KAAK2xC,kBAAmB,CACxB,IAAIz8B,GAAKlV,IACTA,MAAK02B,QAAQnB,KAAKE,QAAQnhB,GAAG,mBAAoB,WAC/CY,EAAGy8B,kBAAmB,IAGxB3xC,KAAKs1B,UAELt1B,KAAKgZ,QAAQvF,GAxCf,CAAA,GAAI9S,GAAOT,EAAoB,GAC3B4B,EAAQ5B,EAAoB,GAChBA,GAAoB,IA6CpC0C,EAAMsR,UAAUohB,QAAU,WACxB,GAAItiB,GAAQhB,SAASM,cAAc,MACnCU,GAAM5K,UAAY,SAClBpI,KAAK2wB,IAAI3d,MAAQA,CAEjB,IAAI4+B,GAAQ5/B,SAASM,cAAc,MACnCs/B,GAAMxpC,UAAY,QAClB4K,EAAMd,YAAY0/B,GAClB5xC,KAAK2wB,IAAIihB,MAAQA,CAEjB,IAAI7Y,GAAa/mB,SAASM,cAAc,MACxCymB,GAAW3wB,UAAY,QACvB2wB,EAAW,kBAAoB/4B,KAC/BA,KAAK2wB,IAAIoI,WAAaA,EAEtB/4B,KAAK2wB,IAAI9jB,WAAamF,SAASM,cAAc,OAC7CtS,KAAK2wB,IAAI9jB,WAAWzE,UAAY,QAEhCpI,KAAK2wB,IAAIoS,KAAO/wB,SAASM,cAAc,OACvCtS,KAAK2wB,IAAIoS,KAAK36B,UAAY,QAK1BpI,KAAK2wB,IAAIkhB,OAAS7/B,SAASM,cAAc,OACzCtS,KAAK2wB,IAAIkhB,OAAOnkC,MAAM2rB,WAAa,SACnCr5B,KAAK2wB,IAAIkhB,OAAO5sB,UAAY,IAC5BjlB,KAAK2wB,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAIkhB,SAO3CjvC,EAAMsR,UAAU8E,QAAU,SAASvF,GAEjC,GAAIN,GAAUM,GAAQA,EAAKN,OACvBA,aAAmB40B,SACrB/nC,KAAK2wB,IAAIihB,MAAM1/B,YAAYiB,GAERtM,SAAZsM,GAAqC,OAAZA,EAChCnT,KAAK2wB,IAAIihB,MAAM3sB,UAAY9R,EAG3BnT,KAAK2wB,IAAIihB,MAAM3sB,UAAYjlB,KAAKi5B,SAAW,GAI7Cj5B,KAAK2wB,IAAI3d,MAAMy0B,MAAQh0B,GAAQA,EAAKg0B,OAAS,GAExCznC,KAAK2wB,IAAIihB,MAAMjtB,WAIlBhkB,EAAK8H,gBAAgBzI,KAAK2wB,IAAIihB,MAAO,UAHrCjxC,EAAKwH,aAAanI,KAAK2wB,IAAIihB,MAAO,SAOpC,IAAIxpC,GAAYqL,GAAQA,EAAKrL,WAAa,IACtCA,IAAapI,KAAKoI,YAChBpI,KAAKoI,YACPzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAI3d,MAAOhT,KAAKoI,WAC1CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAIoI,WAAY/4B,KAAKoI,WAC/CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAI9jB,WAAY7M,KAAKoI,WAC/CzH,EAAK8H,gBAAgBzI,KAAK2wB,IAAIoS,KAAM/iC,KAAKoI,YAE3CzH,EAAKwH,aAAanI,KAAK2wB,IAAI3d,MAAO5K,GAClCzH,EAAKwH,aAAanI,KAAK2wB,IAAIoI,WAAY3wB,GACvCzH,EAAKwH,aAAanI,KAAK2wB,IAAI9jB,WAAYzE,GACvCzH,EAAKwH,aAAanI,KAAK2wB,IAAIoS,KAAM36B,GACjCpI,KAAKoI,UAAYA,GAIfpI,KAAK0N,QACP/M,EAAKuN,cAAclO,KAAK2wB,IAAI3d,MAAOhT,KAAK0N,OACxC1N,KAAK0N,MAAQ,MAEX+F,GAAQA,EAAK/F,QACf/M,EAAKoN,WAAW/N,KAAK2wB,IAAI3d,MAAOS,EAAK/F,OACrC1N,KAAK0N,MAAQ+F,EAAK/F,QAQtB9K,EAAMsR,UAAU49B,cAAgB,WAC9B,MAAO9xC,MAAKsG,MAAM0M,MAAMM,OAW1B1Q,EAAMsR,UAAUuO,OAAS,SAAS6T,EAAO3b,EAAQo3B,GAC/C,GAAI9H,IAAU,EAIV+H,EAAehyC,KAAK2wB,IAAIkhB,OAAOhsB,YAanC,IAZImsB,GAAgBhyC,KAAKiyC,mBACvBjyC,KAAKiyC,iBAAmBD,EAExBrxC,EAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GACjCA,EAAK22B,OAAQ,EACT32B,EAAK02B,WAAW12B,EAAK2S,WAG3BsvB,GAAU,GAI8B,kBAA/B/xC,MAAK02B,QAAQxnB,QAAQuH,MAAsB,CAGpD,GAAIs7B,EAAS,CAIX,GAAI78B,GAAKlV,KACLupC,GAAY,CAChB5oC,GAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GAC5BA,EAAK02B,YACR12B,EAAK2S,SACLvN,EAAGs8B,aAAajpC,KAAKuH,IAEvBA,EAAKq3B,YAAYoC,IAInB,IAAI2I,GAAqBlyC,KAAKqP,aAAaoiC,QAAQ1lC,QAAQmL,KAAK,SAAUtR,EAAGC,GAC3E,MAAOqP,GAAGwhB,QAAQxnB,QAAQuH,MAAM7Q,EAAE6N,KAAM5N,EAAE4N,OAE5C3R,GAAMA,MAAMowC,EAAoBv3B,GAAQ,GAG1C3a,KAAKwxC,aAAexxC,KAAKmyC,oBAAoBnyC,KAAKqP,aAAcrP,KAAKwxC,aAAclb,OAInFt2B,MAAKwxC,aAAexxC,KAAKmyC,oBAAoBnyC,KAAKqP,aAAcrP,KAAKwxC,aAAclb,GAE/Et2B,KAAK02B,QAAQxnB,QAAQpN,MACvBA,EAAMA,MAAM9B,KAAKwxC,aAAc72B,EAAQo3B,GAGvCjwC,EAAMqhC,QAAQnjC,KAAKwxC,aAAc72B,EAAQ3a,KAAKojC,UAKlD,IAAI7vB,GAASvT,KAAKoyC,iBAAiBz3B,GAG/Boe,EAAa/4B,KAAK2wB,IAAIoI,UAC1B/4B,MAAKiI,IAAM8wB,EAAWsZ,UACtBryC,KAAK6H,KAAOkxB,EAAWuZ,WACvBtyC,KAAKsT,MAAQylB,EAAW/H,YACxBiZ,EAAUtpC,EAAKqI,eAAehJ,KAAM,SAAUuT,IAAW02B,EAGzDA,EAAUtpC,EAAKqI,eAAehJ,KAAKsG,MAAM0M,MAAO,QAAShT,KAAK2wB,IAAIihB,MAAMpxB,cAAgBypB,EACxFA,EAAUtpC,EAAKqI,eAAehJ,KAAKsG,MAAM0M,MAAO,SAAUhT,KAAK2wB,IAAIihB,MAAM/rB,eAAiBokB,EAG1FjqC,KAAK2wB,IAAI9jB,WAAWa,MAAM6F,OAAUA,EAAS,KAC7CvT,KAAK2wB,IAAIoI,WAAWrrB,MAAM6F,OAAUA,EAAS,KAC7CvT,KAAK2wB,IAAI3d,MAAMtF,MAAM6F,OAASA,EAAS,IAGvC,KAAK,GAAIzN,GAAI,EAAGysC,EAAKvyC,KAAKwxC,aAAavrC,OAAYssC,EAAJzsC,EAAQA,IAAK,CAC1D,GAAIgK,GAAO9P,KAAKwxC,aAAa1rC,EAC7BgK,GAAKs3B,YAAYzsB,GAGnB,MAAOsvB,IASTrnC,EAAMsR,UAAUk+B,iBAAmB,SAAUz3B,GAE3C,GAAIpH,GACAi+B,EAAexxC,KAAKwxC,YAGxBxxC,MAAKwyC,gBACL,IAAIt9B,GAAKlV,IACT,IAAIwxC,EAAavrC,OAAQ,CACvB,GAAI9B,GAAMqtC,EAAa,GAAGvpC,IACtB7D,EAAMotC,EAAa,GAAGvpC,IAAMupC,EAAa,GAAGj+B,MAahD,IAZA5S,EAAKiI,QAAQ4oC,EAAc,SAAU1hC,GACnC3L,EAAMK,KAAKL,IAAIA,EAAK2L,EAAK7H,KACzB7D,EAAMI,KAAKJ,IAAIA,EAAM0L,EAAK7H,IAAM6H,EAAKyD,QACV1M,SAAvBiJ,EAAK2D,KAAK6vB,WACZpuB,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU/vB,OAAS/O,KAAKJ,IAAI8Q,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU/vB,OAAOzD,EAAKyD,QAChG2B,EAAGkuB,UAAUtzB,EAAK2D,KAAK6vB,UAAU7Z,SAAU,KAO3CtlB,EAAMwW,EAAOooB,KAAM,CAErB,GAAIrY,GAASvmB,EAAMwW,EAAOooB,IAC1B3+B,IAAOsmB,EACP/pB,EAAKiI,QAAQ4oC,EAAc,SAAU1hC,GACnCA,EAAK7H,KAAOyiB,IAGhBnX,EAASnP,EAAMuW,EAAO7K,KAAK2W,SAAW,MAGtClT,GAAS,CAIX,OAFAA,GAAS/O,KAAKJ,IAAImP,EAAQvT,KAAKsG,MAAM0M,MAAMO,SAQ7C3Q,EAAMsR,UAAU+yB,KAAO,WAChBjnC,KAAK2wB,IAAI3d,MAAM7I,YAClBnK,KAAK02B,QAAQ/F,IAAIqI,SAAS9mB,YAAYlS,KAAK2wB,IAAI3d,OAG5ChT,KAAK2wB,IAAIoI,WAAW5uB,YACvBnK,KAAK02B,QAAQ/F,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAIoI,YAG9C/4B,KAAK2wB,IAAI9jB,WAAW1C,YACvBnK,KAAK02B,QAAQ/F,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAI9jB,YAG9C7M,KAAK2wB,IAAIoS,KAAK54B,YACjBnK,KAAK02B,QAAQ/F,IAAIoS,KAAK7wB,YAAYlS,KAAK2wB,IAAIoS,OAO/CngC,EAAMsR,UAAU8yB,KAAO,WACrB,GAAIh0B,GAAQhT,KAAK2wB,IAAI3d,KACjBA,GAAM7I,YACR6I,EAAM7I,WAAWyH,YAAYoB,EAG/B,IAAI+lB,GAAa/4B,KAAK2wB,IAAIoI,UACtBA,GAAW5uB,YACb4uB,EAAW5uB,WAAWyH,YAAYmnB,EAGpC,IAAIlsB,GAAa7M,KAAK2wB,IAAI9jB,UACtBA,GAAW1C,YACb0C,EAAW1C,WAAWyH,YAAY/E,EAGpC,IAAIk2B,GAAO/iC,KAAK2wB,IAAIoS,IAChBA,GAAK54B,YACP44B,EAAK54B,WAAWyH,YAAYmxB,IAQhCngC,EAAMsR,UAAUF,IAAM,SAASlE,GAc7B,GAbA9P,KAAKiC,MAAM6N,EAAKzP,IAAMyP,EACtBA,EAAKi3B,UAAU/mC,MAGY6G,SAAvBiJ,EAAK2D,KAAK6vB,WAC+Bz8B,SAAvC7G,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,YAC3BtjC,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,WAAa/vB,OAAO,EAAGkW,SAAS,EAAO/gB,MAAM1I,KAAK8oC,cAAe7mC,UAC1FjC,KAAK8oC,iBAEP9oC,KAAKojC,UAAUtzB,EAAK2D,KAAK6vB,UAAUrhC,MAAMsG,KAAKuH,IAEhD9P,KAAKyyC,iBAEkC,IAAnCzyC,KAAKwxC,aAAaxqC,QAAQ8I,GAAa,CACzC,GAAIwmB,GAAQt2B,KAAK02B,QAAQnB,KAAKe,KAC9Bt2B,MAAK0yC,gBAAgB5iC,EAAM9P,KAAKwxC,aAAclb,KAIlD1zB,EAAMsR,UAAUu+B,eAAiB,WAC/B,GAA6B5rC,SAAzB7G,KAAKsxC,gBAA+B,CACtC,GAAIqB,KACJ,IAAmC,gBAAxB3yC,MAAKsxC,gBAA6B,CAC3C,IAAK,GAAIhO,KAAYtjC,MAAKojC,UACxBuP,EAAUpqC,MAAM+6B,SAAUA,EAAUsP,UAAW5yC,KAAKojC,UAAUE,GAAUrhC,MAAM,GAAGwR,KAAKzT,KAAKsxC,kBAE7FqB,GAAUz7B,KAAK,SAAUtR,EAAGC,GAC1B,MAAOD,GAAEgtC,UAAY/sC,EAAE+sC,gBAGtB,IAAmC,kBAAxB5yC,MAAKsxC,gBAA+B,CAClD,IAAK,GAAIhO,KAAYtjC,MAAKojC,UACxBuP,EAAUpqC,KAAKvI,KAAKojC,UAAUE,GAAUrhC,MAAM,GAAGwR,KAEnDk/B,GAAUz7B,KAAKlX,KAAKsxC,iBAGtB,GAAIqB,EAAU1sC,OAAS,EACrB,IAAK,GAAIH,GAAI,EAAGA,EAAI6sC,EAAU1sC,OAAQH,IACpC9F,KAAKojC,UAAUuP,EAAU7sC,GAAGw9B,UAAU56B,MAAQ5C,IAMtDlD,EAAMsR,UAAUs+B,eAAiB,WAC/B,IAAK,GAAIlP,KAAYtjC,MAAKojC,UACpBpjC,KAAKojC,UAAUh9B,eAAek9B,KAChCtjC,KAAKojC,UAAUE,GAAU7Z,SAAU,IASzC7mB,EAAMsR,UAAUmD,OAAS,SAASvH,SACzB9P,MAAKiC,MAAM6N,EAAKzP,IACvByP,EAAKi3B,UAAU,KAGf,IAAIr+B,GAAQ1I,KAAKwxC,aAAaxqC,QAAQ8I,EACzB,KAATpH,GAAa1I,KAAKwxC,aAAa7oC,OAAOD,EAAO,IAUnD9F,EAAMsR,UAAUyzB,kBAAoB,SAAS73B,GAC3C9P,KAAK02B,QAAQmc,WAAW/iC,EAAKzP,KAO/BuC,EAAMsR,UAAUuC,MAAQ,WAKtB,IAAK,GAJD1N,GAAQpI,EAAKmI,QAAQ9I,KAAKiC,OAC1B6wC,KACAC,KAEKjtC,EAAI,EAAGA,EAAIiD,EAAM9C,OAAQH,IACNe,SAAtBkC,EAAMjD,GAAG2N,KAAKnD,KAChByiC,EAASxqC,KAAKQ,EAAMjD,IAEtBgtC,EAAWvqC,KAAKQ,EAAMjD,GAExB9F,MAAKqP,cACHoiC,QAASqB,EACTpB,MAAOqB,GAGTjxC,EAAM2gC,aAAaziC,KAAKqP,aAAaoiC,SACrC3vC,EAAM4gC,WAAW1iC,KAAKqP,aAAaqiC,QAYrC9uC,EAAMsR,UAAUi+B,oBAAsB,SAAS9iC,EAAc2jC,EAAiB1c,GAC5E,GAKIxmB,GAAMhK,EALN0rC,KACAyB,KACA7f,GAAYkD,EAAMhmB,IAAMgmB,EAAMjmB,OAAS,EACvC6iC,EAAa5c,EAAMjmB,MAAQ+iB,EAC3B+f,EAAa7c,EAAMhmB,IAAM8iB,EAIzB9jB,EAAiB,SAAUhL,GAC7B,MAAiB4uC,GAAR5uC,EAA6B,GACpB6uC,GAAT7uC,EAA8B,EACA,EAMzC,IAAI0uC,EAAgB/sC,OAAS,EAC3B,IAAKH,EAAI,EAAGA,EAAIktC,EAAgB/sC,OAAQH,IACtC9F,KAAKozC,6BAA6BJ,EAAgBltC,GAAI0rC,EAAcyB,EAAoB3c,EAK5F,IAAI+c,GAAoB1yC,EAAKyO,mBAAmBC,EAAaoiC,QAASniC,EAAgB,OAAO,QAS7F,IANAtP,KAAKszC,cAAcD,EAAmBhkC,EAAaoiC,QAASD,EAAcyB,EAAoB,SAAUnjC,GACtG,MAAQA,GAAK2D,KAAKpD,MAAQ6iC,GAAcpjC,EAAK2D,KAAKpD,MAAQ8iC,IAK/B,GAAzBnzC,KAAK2xC,iBAEP,IADA3xC,KAAK2xC,kBAAmB,EACnB7rC,EAAI,EAAGA,EAAIuJ,EAAaqiC,MAAMzrC,OAAQH,IACzC9F,KAAKozC,6BAA6B/jC,EAAaqiC,MAAM5rC,GAAI0rC,EAAcyB,EAAoB3c,OAG1F,CAEH,GAAIid,GAAkB5yC,EAAKyO,mBAAmBC,EAAaqiC,MAAOpiC,EAAgB,OAAO,MAGzFtP,MAAKszC,cAAcC,EAAiBlkC,EAAaqiC,MAAOF,EAAcyB,EAAoB,SAAUnjC,GAClG,MAAQA,GAAK2D,KAAKnD,IAAM4iC,GAAcpjC,EAAK2D,KAAKnD,IAAM6iC,IAM1D,IAAKrtC,EAAI,EAAGA,EAAI0rC,EAAavrC,OAAQH,IACnCgK,EAAO0hC,EAAa1rC,GACfgK,EAAK02B,WAAW12B,EAAKm3B,OAE1Bn3B,EAAKq3B,aAgBP,OAAOqK,IAGT5uC,EAAMsR,UAAUo/B,cAAgB,SAAUE,EAAYvxC,EAAOuvC,EAAcyB,EAAoBQ,GAC7F,GAAI3jC,GACAhK,CAEJ,IAAkB,IAAd0tC,EAAkB,CACpB,IAAK1tC,EAAI0tC,EAAY1tC,GAAK,IACxBgK,EAAO7N,EAAM6D,IACT2tC,EAAe3jC,IAFQhK,IAMWe,SAAhCosC,EAAmBnjC,EAAKzP,MAC1B4yC,EAAmBnjC,EAAKzP,KAAM,EAC9BmxC,EAAajpC,KAAKuH,GAKxB,KAAKhK,EAAI0tC,EAAa,EAAG1tC,EAAI7D,EAAMgE,SACjC6J,EAAO7N,EAAM6D,IACT2tC,EAAe3jC,IAFsBhK,IAMHe,SAAhCosC,EAAmBnjC,EAAKzP,MAC1B4yC,EAAmBnjC,EAAKzP,KAAM,EAC9BmxC,EAAajpC,KAAKuH,MAmB5BlN,EAAMsR,UAAUw+B,gBAAkB,SAAS5iC,EAAM0hC,EAAclb,GACvDxmB,EAAKo3B,UAAU5Q,IACZxmB,EAAK02B,WAAW12B,EAAKm3B,OAE1Bn3B,EAAKq3B,cACLqK,EAAajpC,KAAKuH,IAGdA,EAAK02B,WAAW12B,EAAKk3B,QAgB/BpkC,EAAMsR,UAAUk/B,6BAA+B,SAAStjC,EAAM0hC,EAAcyB,EAAoB3c,GAC1FxmB,EAAKo3B,UAAU5Q,GACmBzvB,SAAhCosC,EAAmBnjC,EAAKzP,MAC1B4yC,EAAmBnjC,EAAKzP,KAAM,EAC9BmxC,EAAajpC,KAAKuH,IAIhBA,EAAK02B,WAAW12B,EAAKk3B,QAM7BnnC,EAAOD,QAAUgD,GAKb,SAAS/C,EAAQD,EAASM,GAW9B,QAAS2C,GAAiBo2B,EAASxlB,EAAMijB,GACvC9zB,EAAMrC,KAAKP,KAAMi5B,EAASxlB,EAAMijB,GAEhC12B,KAAKsT,MAAQ,EACbtT,KAAKuT,OAAS,EACdvT,KAAKiI,IAAM,EACXjI,KAAK6H,KAAO,EAfd,GACIjF,IADO1C,EAAoB,GACnBA,EAAoB,IAiBhC2C,GAAgBqR,UAAYtN,OAAOkI,OAAOlM,EAAMsR,WAShDrR,EAAgBqR,UAAUuO,OAAS,SAAS6T,EAAO3b,EAAQo3B,GACzD,GAAI9H,IAAU,CAEdjqC,MAAKwxC,aAAexxC,KAAKmyC,oBAAoBnyC,KAAKqP,aAAcrP,KAAKwxC,aAAclb,GAGnFt2B,KAAKsT,MAAQtT,KAAK2wB,IAAI9jB,WAAWmkB,YAGjChxB,KAAK2wB,IAAI9jB,WAAWa,MAAM6F,OAAU,GAGpC,KAAK,GAAIzN,GAAI,EAAGysC,EAAKvyC,KAAKwxC,aAAavrC,OAAYssC,EAAJzsC,EAAQA,IAAK,CAC1D,GAAIgK,GAAO9P,KAAKwxC,aAAa1rC,EAC7BgK,GAAKs3B,YAAYzsB,GAGnB,MAAOsvB,IAMTpnC,EAAgBqR,UAAU+yB,KAAO,WAC1BjnC,KAAK2wB,IAAI9jB,WAAW1C,YACvBnK,KAAK02B,QAAQ/F,IAAI9jB,WAAWqF,YAAYlS,KAAK2wB,IAAI9jB,aAIrDhN,EAAOD,QAAUiD,GAKb,SAAShD,EAAQD,EAASM,GA4B9B,QAAS4C,GAAQyyB,EAAMrmB,GACrBlP,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACH9tB,KAAM,KACNguB,YAAa,SACb8T,MAAO,OACPnnC,OAAO,EACP4xC,WAAY,KAEZC,YAAY,EACZpM,UACEoC,YAAY,EACZoD,aAAa,EACb/4B,KAAK,EACLqD,QAAQ,GAGVshB,KAAO52B,EAAS42B,KAEhBib,MAAO,SAAU9jC,EAAMjH,GACrBA,EAASiH,IAEX+jC,SAAU,SAAU/jC,EAAMjH,GACxBA,EAASiH,IAEXgkC,OAAQ,SAAUhkC,EAAMjH,GACtBA,EAASiH,IAEXikC,SAAU,SAAUjkC,EAAMjH,GACxBA,EAASiH,IAEXkkC,SAAU,SAAUlkC,EAAMjH,GACxBA,EAASiH,IAGX6K,QACE7K,MACE0W,WAAY,GACZC,SAAU,IAEZsc,KAAM,IAER/d,QAAS,GAIXhlB,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAGpCj1B,KAAKi0C,aACH9sC,MAAOkJ,MAAO,OAAQC,IAAK,SAG7BtQ,KAAKo8B,YACHtG,SAAUP,EAAK50B,KAAKm1B,SACpBI,OAAQX,EAAK50B,KAAKu1B,QAEpBl2B,KAAK2wB,OACL3wB,KAAKsG,SACLtG,KAAK8D,OAAS,IAEd,IAAIoR,GAAKlV,IACTA,MAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAGlB52B,KAAKk0C,eACHlgC,IAAO,SAAUnK,EAAOgL,EAAQC,GAC9BI,EAAGi/B,OAAOt/B,EAAO5S,QAEnB2T,OAAU,SAAU/L,EAAOgL,EAAQC,GACjCI,EAAGk/B,UAAUv/B,EAAO5S,QAEtBoV,OAAU,SAAUxN,EAAOgL,EAAQC,GACjCI,EAAGm/B,UAAUx/B,EAAO5S,SAKxBjC,KAAKs0C,gBACHtgC,IAAO,SAAUnK,EAAOgL,EAAQC,GAC9BI,EAAGq/B,aAAa1/B,EAAO5S,QAEzB2T,OAAU,SAAU/L,EAAOgL,EAAQC,GACjCI,EAAGs/B,gBAAgB3/B,EAAO5S,QAE5BoV,OAAU,SAAUxN,EAAOgL,EAAQC,GACjCI,EAAGu/B,gBAAgB5/B,EAAO5S,SAI9BjC,KAAKiC,SACLjC,KAAK+0B,UACL/0B,KAAK00C,YAEL10C,KAAK20C,aACL30C,KAAK40C,YAAa,EAElB50C,KAAK60C,eAGL70C,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAlIlB,GAAIw3B,GAASxmC,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/B6B,EAAW7B,EAAoB,IAC/BqC,EAAYrC,EAAoB,IAChC0C,EAAQ1C,EAAoB,IAC5B2C,EAAkB3C,EAAoB,IACtCkC,EAAUlC,EAAoB,IAC9BmC,EAAYnC,EAAoB,IAChCoC,EAAYpC,EAAoB,IAChCiC,EAAiBjC,EAAoB,IAGrC40C,EAAY,gBACZC,EAAa,gBAsHjBjyC,GAAQoR,UAAY,GAAI3R,GAGxBO,EAAQoV,OACNrL,WAAY1K,EACZumC,IAAKtmC,EACLk0B,MAAOh0B,EACPsQ,MAAOvQ,GAMTS,EAAQoR,UAAUohB,QAAU,WAC1B,GAAIhV,GAAQtO,SAASM,cAAc,MACnCgO,GAAMlY,UAAY,UAClBkY,EAAM,oBAAsBtgB,KAC5BA,KAAK2wB,IAAIrQ,MAAQA,CAGjB,IAAIzT,GAAamF,SAASM,cAAc,MACxCzF,GAAWzE,UAAY,aACvBkY,EAAMpO,YAAYrF,GAClB7M,KAAK2wB,IAAI9jB,WAAaA,CAGtB,IAAIksB,GAAa/mB,SAASM,cAAc,MACxCymB,GAAW3wB,UAAY,aACvBkY,EAAMpO,YAAY6mB,GAClB/4B,KAAK2wB,IAAIoI,WAAaA,CAGtB,IAAIgK,GAAO/wB,SAASM,cAAc,MAClCywB,GAAK36B,UAAY,OACjBpI,KAAK2wB,IAAIoS,KAAOA,CAGhB,IAAI/J,GAAWhnB,SAASM,cAAc,MACtC0mB,GAAS5wB,UAAY,WACrBpI,KAAK2wB,IAAIqI,SAAWA,EAGpBh5B,KAAKg1C,kBAGL,IAAIC,GAAkB,GAAIpyC,GAAgBkyC,EAAY,KAAM/0C,KAC5Di1C,GAAgBhO,OAChBjnC,KAAK+0B,OAAOggB,GAAcE,EAM1Bj1C,KAAK8D,OAAS4iC,EAAO1mC,KAAKu1B,KAAK5E,IAAI+H,iBACjC9uB,gBAAgB,IAIlB5J,KAAK8D,OAAOwQ,GAAG,QAAatU,KAAKqgC,SAAS3K,KAAK11B,OAC/CA,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAKggC,aAAatK,KAAK11B,OACnDA,KAAK8D,OAAOwQ,GAAG,OAAatU,KAAKigC,QAAQvK,KAAK11B,OAC9CA,KAAK8D,OAAOwQ,GAAG,UAAatU,KAAKkgC,WAAWxK,KAAK11B,OAGjDA,KAAK8D,OAAOwQ,GAAG,MAAQtU,KAAKk1C,cAAcxf,KAAK11B,OAG/CA,KAAK8D,OAAOwQ,GAAG,OAAQtU,KAAKm1C,mBAAmBzf,KAAK11B,OAGpDA,KAAK8D,OAAOwQ,GAAG,YAAatU,KAAKo1C,WAAW1f,KAAK11B,OAGjDA,KAAKinC,QAmEPnkC,EAAQoR,UAAUD,WAAa,SAAS/E,GACtC,GAAIA,EAAS,CAEX,GAAIP,IAAU,OAAQ,QAAS,QAAS,UAAW,QAAS,aAAc,aAAc,iBAAkB,WAAW,OAAQ,OAC7HhO,GAAK0F,gBAAgBsI,EAAQ3O,KAAKkP,QAASA,GAEvC,eAAiBA,KACgB,gBAAxBA,GAAQimB,YACjBn1B,KAAKkP,QAAQimB,YAAcjmB,EAAQimB,YAEG,gBAAxBjmB,GAAQimB,aAA4B,QAAUjmB,GAAQimB,cACpEn1B,KAAKkP,QAAQimB,YAAcjmB,EAAQimB,YAAYrlB,OAI/C,UAAYZ,KACgB,gBAAnBA,GAAQyL,QACjB3a,KAAKkP,QAAQyL,OAAOooB,KAAO7zB,EAAQyL,OACnC3a,KAAKkP,QAAQyL,OAAO7K,KAAK0W,WAAatX,EAAQyL,OAC9C3a,KAAKkP,QAAQyL,OAAO7K,KAAK2W,SAAWvX,EAAQyL,QAEX,gBAAnBzL,GAAQyL,SACtBha,EAAK0F,iBAAiB,QAASrG,KAAKkP,QAAQyL,OAAQzL,EAAQyL,QACxD,QAAUzL,GAAQyL,SACe,gBAAxBzL,GAAQyL,OAAO7K,MACxB9P,KAAKkP,QAAQyL,OAAO7K,KAAK0W,WAAatX,EAAQyL,OAAO7K,KACrD9P,KAAKkP,QAAQyL,OAAO7K,KAAK2W,SAAWvX,EAAQyL,OAAO7K,MAEb,gBAAxBZ,GAAQyL,OAAO7K,MAC7BnP,EAAK0F,iBAAiB,aAAc,YAAarG,KAAKkP,QAAQyL,OAAO7K,KAAMZ,EAAQyL,OAAO7K,SAM9F,YAAcZ,KACgB,iBAArBA,GAAQq4B,UACjBvnC,KAAKkP,QAAQq4B,SAASoC,WAAcz6B,EAAQq4B,SAC5CvnC,KAAKkP,QAAQq4B,SAASwF,YAAc79B,EAAQq4B,SAC5CvnC,KAAKkP,QAAQq4B,SAASvzB,IAAc9E,EAAQq4B,SAC5CvnC,KAAKkP,QAAQq4B,SAASlwB,OAAcnI,EAAQq4B,UAET,gBAArBr4B,GAAQq4B,UACtB5mC,EAAK0F,iBAAiB,aAAc,cAAe,MAAO,UAAWrG,KAAKkP,QAAQq4B,SAAUr4B,EAAQq4B,UAKxG,IAAI8N,GAAc,SAAWp+B,GAC3B,GAAIkD,GAAKjL,EAAQ+H,EACjB,IAAIkD,EAAI,CACN,KAAMA,YAAcm7B,WAClB,KAAM,IAAI1xC,OAAM,UAAYqT,EAAO,uBAAyBA,EAAO,mBAErEjX,MAAKkP,QAAQ+H,GAAQkD,IAEtBub,KAAK11B,OACP,QAAS,WAAY,WAAY,SAAU,YAAY4I,QAAQysC,GAGhEr1C,KAAKm3B,cASTr0B,EAAQoR,UAAUijB,UAAY,SAASjoB,GACrClP,KAAK00C,YACL10C,KAAK40C,YAAa,EAEd1lC,GAAWA,EAAQkoB,cACrBz2B,EAAKiI,QAAQ5I,KAAKiC,MAAO,SAAU6N,GACjCA,EAAK22B,OAAQ,EACT32B,EAAK02B,WAAW12B,EAAK2S,YAQ/B3f,EAAQoR,UAAUG,QAAU,WAC1BrU,KAAKgnC,OACLhnC,KAAKg3B,SAAS,MACdh3B,KAAK+2B,UAAU,MAEf/2B,KAAK8D,OAAS,KAEd9D,KAAKu1B,KAAO,KACZv1B,KAAKo8B,WAAa,MAMpBt5B,EAAQoR,UAAU8yB,KAAO,WAEnBhnC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,OAI7CtgB,KAAK2wB,IAAIoS,KAAK54B,YAChBnK,KAAK2wB,IAAIoS,KAAK54B,WAAWyH,YAAY5R,KAAK2wB,IAAIoS,MAI5C/iC,KAAK2wB,IAAIqI,SAAS7uB,YACpBnK,KAAK2wB,IAAIqI,SAAS7uB,WAAWyH,YAAY5R,KAAK2wB,IAAIqI,WAQtDl2B,EAAQoR,UAAU+yB,KAAO,WAElBjnC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,OAIvCtgB,KAAK2wB,IAAIoS,KAAK54B,YACjBnK,KAAKu1B,KAAK5E,IAAI2Z,mBAAmBp4B,YAAYlS,KAAK2wB,IAAIoS,MAInD/iC,KAAK2wB,IAAIqI,SAAS7uB,YACrBnK,KAAKu1B,KAAK5E,IAAI9oB,KAAKqK,YAAYlS,KAAK2wB,IAAIqI,WAW5Cl2B,EAAQoR,UAAU0jB,aAAe,SAASzhB,GACxC,GAAIrQ,GAAGysC,EAAIlyC,EAAIyP,CAMf,KAJWjJ,QAAPsP,IAAkBA,MACjB5P,MAAMC,QAAQ2P,KAAMA,GAAOA,IAG3BrQ,EAAI,EAAGysC,EAAKvyC,KAAK20C,UAAU1uC,OAAYssC,EAAJzsC,EAAQA,IAC9CzF,EAAKL,KAAK20C,UAAU7uC,GACpBgK,EAAO9P,KAAKiC,MAAM5B,GACdyP,GAAMA,EAAK82B,UAKjB,KADA5mC,KAAK20C,aACA7uC,EAAI,EAAGysC,EAAKp8B,EAAIlQ,OAAYssC,EAAJzsC,EAAQA,IACnCzF,EAAK8V,EAAIrQ,GACTgK,EAAO9P,KAAKiC,MAAM5B,GACdyP,IACF9P,KAAK20C,UAAUpsC,KAAKlI,GACpByP,EAAK62B,WASX7jC,EAAQoR,UAAU4jB,aAAe,WAC/B,MAAO93B,MAAK20C,UAAU5/B,YAOxBjS,EAAQoR,UAAUqhC,gBAAkB,WAClC,GAAIjf,GAAQt2B,KAAKu1B,KAAKe,MAAM+K,WACxBx5B,EAAQ7H,KAAKu1B,KAAK50B,KAAKm1B,SAASQ,EAAMjmB,OACtCgY,EAAQroB,KAAKu1B,KAAK50B,KAAKm1B,SAASQ,EAAMhmB,KAEtC6F,IACJ,KAAK,GAAI8iB,KAAWj5B,MAAK+0B,OACvB,GAAI/0B,KAAK+0B,OAAO3uB,eAAe6yB,GAM7B,IAAK,GALDvmB,GAAQ1S,KAAK+0B,OAAOkE,GACpBuc,EAAkB9iC,EAAM8+B,aAInB1rC,EAAI,EAAGA,EAAI0vC,EAAgBvvC,OAAQH,IAAK,CAC/C,GAAIgK,GAAO0lC,EAAgB1vC,EAEtBgK,GAAKjI,KAAOwgB,GAAWvY,EAAKjI,KAAOiI,EAAKwD,MAAQzL,GACnDsO,EAAI5N,KAAKuH,EAAKzP,IAMtB,MAAO8V,IAQTrT,EAAQoR,UAAUuhC,UAAY,SAASp1C,GAErC,IAAK,GADDs0C,GAAY30C,KAAK20C,UACZ7uC,EAAI,EAAGysC,EAAKoC,EAAU1uC,OAAYssC,EAAJzsC,EAAQA,IAC7C,GAAI6uC,EAAU7uC,IAAMzF,EAAI,CACtBs0C,EAAUhsC,OAAO7C,EAAG,EACpB,SASNhD,EAAQoR,UAAUuO,OAAS,WACzB,GAAI9H,GAAS3a,KAAKkP,QAAQyL,OACtB2b,EAAQt2B,KAAKu1B,KAAKe,MAClB1rB,EAASjK,EAAK4J,OAAOK,OACrBsE,EAAUlP,KAAKkP,QACfimB,EAAcjmB,EAAQimB,YACtB8U,GAAU,EACV3pB,EAAQtgB,KAAK2wB,IAAIrQ,MACjBinB,EAAWr4B,EAAQq4B,SAASoC,YAAcz6B,EAAQq4B,SAASwF,WAG/D/sC,MAAKsG,MAAM2B,IAAMjI,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAAS1oB,OAAO7E,IAC3EjI,KAAKsG,MAAMuB,KAAO7H,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAAQtT,KAAKu1B,KAAKC,SAAS1oB,OAAOjF,KAG5EyY,EAAMlY,UAAY,WAAam/B,EAAW,YAAc,IAGxD0C,EAAUjqC,KAAK01C,gBAAkBzL,CAIjC,IAAI0L,GAAkBrf,EAAMhmB,IAAMgmB,EAAMjmB,MACpCulC,EAAUD,GAAmB31C,KAAK61C,qBAAyB71C,KAAKsG,MAAMgN,OAAStT,KAAKsG,MAAMwvC,SAC1FF,KAAQ51C,KAAK40C,YAAa,GAC9B50C,KAAK61C,oBAAsBF,EAC3B31C,KAAKsG,MAAMwvC,UAAY91C,KAAKsG,MAAMgN,KAElC,IAAIy+B,GAAU/xC,KAAK40C,WACfmB,EAAa/1C,KAAKg2C,cAClBC,GACFnmC,KAAM6K,EAAO7K,KACbizB,KAAMpoB,EAAOooB,MAEXmT,GACFpmC,KAAM6K,EAAO7K,KACbizB,KAAMpoB,EAAO7K,KAAK2W,SAAW,GAE3BlT,EAAS,EACT8hB,EAAY1a,EAAOooB,KAAOpoB,EAAO7K,KAAK2W,QA+B1C,OA5BAzmB,MAAK+0B,OAAOggB,GAAYtyB,OAAO6T,EAAO4f,EAAgBnE,GAGtDpxC,EAAKiI,QAAQ5I,KAAK+0B,OAAQ,SAAUriB,GAClC,GAAIyjC,GAAezjC,GAASqjC,EAAcE,EAAcC,EACpDE,EAAe1jC,EAAM+P,OAAO6T,EAAO6f,EAAapE,EACpD9H,GAAUmM,GAAgBnM,EAC1B12B,GAAUb,EAAMa,SAElBA,EAAS/O,KAAKJ,IAAImP,EAAQ8hB,GAC1Br1B,KAAK40C,YAAa,EAGlBt0B,EAAM5S,MAAM6F,OAAU3I,EAAO2I,GAG7BvT,KAAKsG,MAAMgN,MAAQgN,EAAM0Q,YACzBhxB,KAAKsG,MAAMiN,OAASA,EAGpBvT,KAAK2wB,IAAIoS,KAAKr1B,MAAMzF,IAAM2C,EAAuB,OAAfuqB,EAC7Bn1B,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAAS1oB,OAAO7E,IAC1DjI,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QACxEvT,KAAK2wB,IAAIoS,KAAKr1B,MAAM7F,KAAO,IAG3BoiC,EAAUjqC,KAAKgqC,cAAgBC,GAUjCnnC,EAAQoR,UAAU8hC,YAAc,WAC9B,GAAIK,GAA+C,OAA5Br2C,KAAKkP,QAAQimB,YAAwB,EAAKn1B,KAAK00C,SAASzuC,OAAS,EACpFqwC,EAAet2C,KAAK00C,SAAS2B,GAC7BN,EAAa/1C,KAAK+0B,OAAOuhB,IAAiBt2C,KAAK+0B,OAAO+f,EAE1D,OAAOiB,IAAc,MAQvBjzC,EAAQoR,UAAU8gC,iBAAmB,WACnC,CAAA,GAEIllC,GAAMyG,EAFNggC,EAAYv2C,KAAK+0B,OAAO+f,EACX90C,MAAK+0B,OAAOggB,GAG7B,GAAI/0C,KAAK42B,YAEP,GAAI2f,EAAW,CACbA,EAAUvP,aACHhnC,MAAK+0B,OAAO+f,EAEnB,KAAKv+B,IAAUvW,MAAKiC,MAClB,GAAIjC,KAAKiC,MAAMmE,eAAemQ,GAAS,CACrCzG,EAAO9P,KAAKiC,MAAMsU,GAClBzG,EAAKzF,QAAUyF,EAAKzF,OAAOgN,OAAOvH,EAClC,IAAImpB,GAAUj5B,KAAKw2C,YAAY1mC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACxBvmB,IAASA,EAAMsB,IAAIlE,IAASA,EAAKk3B,aAOvC,KAAKuP,EAAW,CACd,GAAIl2C,GAAK,KACLoT,EAAO,IACX8iC,GAAY,GAAI3zC,GAAMvC,EAAIoT,EAAMzT,MAChCA,KAAK+0B,OAAO+f,GAAayB,CAEzB,KAAKhgC,IAAUvW,MAAKiC,MACdjC,KAAKiC,MAAMmE,eAAemQ,KAC5BzG,EAAO9P,KAAKiC,MAAMsU,GAClBggC,EAAUviC,IAAIlE,GAIlBymC,GAAUtP,SAShBnkC,EAAQoR,UAAUuiC,YAAc,WAC9B,MAAOz2C,MAAK2wB,IAAIqI,UAOlBl2B,EAAQoR,UAAU8iB,SAAW,SAAS/0B,GACpC,GACIkU,GADAjB,EAAKlV,KAEL02C,EAAe12C,KAAK22B,SAGxB,IAAK10B,EAGA,CAAA,KAAIA,YAAiBpB,IAAWoB,YAAiBnB,IAIpD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK22B,UAAY10B,MAHjBjC,MAAK22B,UAAY,IAoBnB,IAXI+f,IAEF/1C,EAAKiI,QAAQ5I,KAAKk0C,cAAe,SAAUrrC,EAAUgB,GACnD6sC,EAAajiC,IAAI5K,EAAOhB,KAI1BsN,EAAMugC,EAAa7/B,SACnB7W,KAAKq0C,UAAUl+B,IAGbnW,KAAK22B,UAAW,CAElB,GAAIt2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAKk0C,cAAe,SAAUrrC,EAAUgB,GACnDqL,EAAGyhB,UAAUriB,GAAGzK,EAAOhB,EAAUxI,KAInC8V,EAAMnW,KAAK22B,UAAU9f,SACrB7W,KAAKm0C,OAAOh+B,GAGZnW,KAAKg1C,qBAQTlyC,EAAQoR,UAAUyiC,SAAW,WAC3B,MAAO32C,MAAK22B,WAOd7zB,EAAQoR,UAAU6iB,UAAY,SAAShC,GACrC,GACI5e,GADAjB,EAAKlV,IAgBT,IAZIA,KAAK42B,aACPj2B,EAAKiI,QAAQ5I,KAAKs0C,eAAgB,SAAUzrC,EAAUgB,GACpDqL,EAAG0hB,WAAWjiB,YAAY9K,EAAOhB,KAInCsN,EAAMnW,KAAK42B,WAAW/f,SACtB7W,KAAK42B,WAAa,KAClB52B,KAAKy0C,gBAAgBt+B,IAIlB4e,EAGA,CAAA,KAAIA,YAAkBl0B,IAAWk0B,YAAkBj0B,IAItD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK42B,WAAa7B,MAHlB/0B,MAAK42B,WAAa,IASpB,IAAI52B,KAAK42B,WAAY,CAEnB,GAAIv2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAKs0C,eAAgB,SAAUzrC,EAAUgB,GACpDqL,EAAG0hB,WAAWtiB,GAAGzK,EAAOhB,EAAUxI,KAIpC8V,EAAMnW,KAAK42B,WAAW/f,SACtB7W,KAAKu0C,aAAap+B,GAIpBnW,KAAKg1C,mBAGLh1C,KAAK42C,SAEL52C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAO3CrR,EAAQoR,UAAU2iC,UAAY,WAC5B,MAAO72C,MAAK42B,YAOd9zB,EAAQoR,UAAU2+B,WAAa,SAASxyC,GACtC,GAAIyP,GAAO9P,KAAK22B,UAAU1gB,IAAI5V,GAC1B43B,EAAUj4B,KAAK22B,UAAU7f,YAEzBhH,IAEF9P,KAAKkP,QAAQ6kC,SAASjkC,EAAM,SAAUA,GAChCA,GAGFmoB,EAAQ5gB,OAAOhX,MAYvByC,EAAQoR,UAAU4iC,SAAW,SAAU/e,GACrC,MAAOA,GAAS5wB,MAAQnH,KAAKkP,QAAQ/H,OAAS4wB,EAASznB,IAAM,QAAU,QAUzExN,EAAQoR,UAAUsiC,YAAc,SAAUze,GACxC,GAAI5wB,GAAOnH,KAAK82C,SAAS/e,EACzB,OAAY,cAAR5wB,GAA0CN,QAAlBkxB,EAASrlB,MAC7BqiC,EAGC/0C,KAAK42B,WAAamB,EAASrlB,MAAQoiC,GAS9ChyC,EAAQoR,UAAUkgC,UAAY,SAASj+B,GACrC,GAAIjB,GAAKlV,IAETmW,GAAIvN,QAAQ,SAAUvI,GACpB,GAAI03B,GAAW7iB,EAAGyhB,UAAU1gB,IAAI5V,EAAI6U,EAAG++B,aACnCnkC,EAAOoF,EAAGjT,MAAM5B,GAChB8G,EAAO+N,EAAG4hC,SAAS/e,GAEnBpxB,EAAc7D,EAAQoV,MAAM/Q,EAchC,IAZI2I,IAEGnJ,GAAiBmJ,YAAgBnJ,GAMpCuO,EAAGc,YAAYlG,EAAMioB,IAJrB7iB,EAAG6hC,YAAYjnC,GACfA,EAAO,QAONA,EAAM,CAET,IAAInJ,EAKC,KAEG,IAAID,WAFK,iBAARS,EAEa,4HAIA,sBAAwBA,EAAO,IAVnD2I,GAAO,GAAInJ,GAAYoxB,EAAU7iB,EAAGknB,WAAYlnB,EAAGhG,SACnDY,EAAKzP,GAAKA,EACV6U,EAAGC,SAASrF,MAalB9P,KAAK42C,SACL52C,KAAK40C,YAAa,EAClB50C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAUigC,OAASrxC,EAAQoR,UAAUkgC,UAO7CtxC,EAAQoR,UAAUmgC,UAAY,SAASl+B,GACrC,GAAI6B,GAAQ,EACR9C,EAAKlV,IACTmW,GAAIvN,QAAQ,SAAUvI,GACpB,GAAIyP,GAAOoF,EAAGjT,MAAM5B,EAChByP,KACFkI,IACA9C,EAAG6hC,YAAYjnC,MAIfkI,IAEFhY,KAAK42C,SACL52C,KAAK40C,YAAa,EAClB50C,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,MAQ7CrR,EAAQoR,UAAU0iC,OAAS,WAGzBj2C,EAAKiI,QAAQ5I,KAAK+0B,OAAQ,SAAUriB,GAClCA,EAAM+D,WASV3T,EAAQoR,UAAUsgC,gBAAkB,SAASr+B,GAC3CnW,KAAKu0C,aAAap+B,IAQpBrT,EAAQoR,UAAUqgC,aAAe,SAASp+B,GACxC,GAAIjB,GAAKlV,IAETmW,GAAIvN,QAAQ,SAAUvI,GACpB,GAAI8wC,GAAYj8B,EAAG0hB,WAAW3gB,IAAI5V,GAC9BqS,EAAQwC,EAAG6f,OAAO10B,EAEtB,IAAKqS,EA6BHA,EAAMsG,QAAQm4B,OA7BJ,CAEV,GAAI9wC,GAAMy0C,GAAaz0C,GAAM00C,EAC3B,KAAM,IAAInxC,OAAM,qBAAuBvD,EAAK,qBAG9C,IAAI22C,GAAepwC,OAAOkI,OAAOoG,EAAGhG,QACpCvO,GAAKgF,OAAOqxC,GACVzjC,OAAQ,OAGVb,EAAQ,GAAI9P,GAAMvC,EAAI8wC,EAAWj8B,GACjCA,EAAG6f,OAAO10B,GAAMqS,CAGhB,KAAK,GAAI6D,KAAUrB,GAAGjT,MACpB,GAAIiT,EAAGjT,MAAMmE,eAAemQ,GAAS,CACnC,GAAIzG,GAAOoF,EAAGjT,MAAMsU,EAChBzG,GAAK2D,KAAKf,OAASrS,GACrBqS,EAAMsB,IAAIlE,GAKhB4C,EAAM+D,QACN/D,EAAMu0B,UAQVjnC,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAUugC,gBAAkB,SAASt+B,GAC3C,GAAI4e,GAAS/0B,KAAK+0B,MAClB5e,GAAIvN,QAAQ,SAAUvI,GACpB,GAAIqS,GAAQqiB,EAAO10B,EAEfqS,KACFA,EAAMs0B,aACCjS,GAAO10B,MAIlBL,KAAKm3B,YAELn3B,KAAKu1B,KAAKE,QAAQhH,KAAK,UAAWta,OAAO,KAQ3CrR,EAAQoR,UAAUwhC,aAAe,WAC/B,GAAI11C,KAAK42B,WAAY,CAEnB,GAAI8d,GAAW10C,KAAK42B,WAAW/f,QAC7BJ,MAAOzW,KAAKkP,QAAQwkC,aAGlBxS,GAAWvgC,EAAKsG,WAAWytC,EAAU10C,KAAK00C,SAC9C,IAAIxT,EAAS,CAEX,GAAInM,GAAS/0B,KAAK+0B,MAClB2f,GAAS9rC,QAAQ,SAAUqwB,GACzBlE,EAAOkE,GAAS+N,SAIlB0N,EAAS9rC,QAAQ,SAAUqwB,GACzBlE,EAAOkE,GAASgO,SAGlBjnC,KAAK00C,SAAWA,EAGlB,MAAOxT,GAGP,OAAO,GASXp+B,EAAQoR,UAAUiB,SAAW,SAASrF,GACpC9P,KAAKiC,MAAM6N,EAAKzP,IAAMyP,CAGtB,IAAImpB,GAAUj5B,KAAKw2C,YAAY1mC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACpBvmB,IAAOA,EAAMsB,IAAIlE,IASvBhN,EAAQoR,UAAU8B,YAAc,SAASlG,EAAMioB,GAC7C,GAAIkf,GAAannC,EAAK2D,KAAKf,MACvBwkC,EAAgBpnC,EAAK2D,KAAK6vB,QAM9B,IAHAxzB,EAAKkJ,QAAQ+e,GAGTkf,GAAcnnC,EAAK2D,KAAKf,OAASwkC,GAAiBpnC,EAAK2D,KAAK6vB,SAAU,CACxE,GAAI6T,GAAWn3C,KAAK+0B,OAAOkiB,EACvBE,IAAUA,EAAS9/B,OAAOvH,EAE9B,IAAImpB,GAAUj5B,KAAKw2C,YAAY1mC,EAAK2D,MAChCf,EAAQ1S,KAAK+0B,OAAOkE,EACpBvmB,IAAOA,EAAMsB,IAAIlE,KAUzBhN,EAAQoR,UAAU6iC,YAAc,SAASjnC,GAEvCA,EAAKk3B,aAGEhnC,MAAKiC,MAAM6N,EAAKzP,GAGvB,IAAIqI,GAAQ1I,KAAK20C,UAAU3tC,QAAQ8I,EAAKzP,GAC3B,KAATqI,GAAa1I,KAAK20C,UAAUhsC,OAAOD,EAAO,GAG9CoH,EAAKzF,QAAUyF,EAAKzF,OAAOgN,OAAOvH,IASpChN,EAAQoR,UAAUkjC,qBAAuB,SAASruC,GAGhD,IAAK,GAFDgqC,MAEKjtC,EAAI,EAAGA,EAAIiD,EAAM9C,OAAQH,IAC5BiD,EAAMjD,YAAcxD,IACtBywC,EAASxqC,KAAKQ,EAAMjD,GAGxB,OAAOitC,IAYTjwC,EAAQoR,UAAUmsB,SAAW,SAAUx2B,GAErC7J,KAAK60C,YAAY/kC,KAAO9P,KAAKq4B,eAAexuB,IAQ9C/G,EAAQoR,UAAU8rB,aAAe,SAAUn2B,GACzC,GAAK7J,KAAKkP,QAAQq4B,SAASoC,YAAe3pC,KAAKkP,QAAQq4B,SAASwF,YAAhE,CAIA,GAEIzmC,GAFAwJ,EAAO9P,KAAK60C,YAAY/kC,MAAQ,KAChCoF,EAAKlV,IAGT,IAAI8P,GAAQA,EAAKy2B,SAAU,CACzB,GAAIsD,GAAehgC,EAAMG,OAAO6/B,aAC5BE,EAAgBlgC,EAAMG,OAAO+/B;;AAE7BF,GACFvjC,GACEwJ,KAAM+5B,EACNwN,SAAUxtC,EAAM2uB,QAAQzL,OAAOwL,MAC/BqR,UAAW,EACXn2B,KAAM9S,EAAKgF,UAAWmK,EAAK2D,OAG7BzT,KAAK60C,YAAYyC,WAAahxC,IAEvByjC,GACPzjC,GACEwJ,KAAMi6B,EACNsN,SAAUxtC,EAAM2uB,QAAQzL,OAAOwL,MAC/BuR,WAAW,EACXr2B,KAAM9S,EAAKgF,UAAWmK,EAAK2D,OAG7BzT,KAAK60C,YAAYyC,WAAahxC,IAG9BtG,KAAK60C,YAAYyC,UAAYt3C,KAAK83B,eAAehqB,IAAI,SAAUzN,GAC7D,GAAIyP,GAAOoF,EAAGjT,MAAM5B,GAChBiG,GACFwJ,KAAMA,EACNunC,SAAUxtC,EAAM2uB,QAAQzL,OAAOwL,MAC/B9kB,KAAM9S,EAAKgF,UAAWmK,EAAK2D,MAG7B,OAAOnN,KAIXuD,EAAM69B,sBAEC1nC,MAAKkP,QAAQq4B,SAASvzB,KAAOnK,EAAM2uB,QAAQ+e,SAASC,SAE3Dx3C,KAAKy3C,oBAAoB5tC,KAS7B/G,EAAQoR,UAAUujC,oBAAsB,SAAU5tC,GAChD,GAAI8uB,GAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5B+e,EAAO/2C,EAAK+G,gBAAgB1H,KAAK2wB,IAAIrQ,OACrC9N,EAAI3I,EAAM2uB,QAAQzL,OAAOwL,MAAQmf,EAAO,GACxC9e,EAAO54B,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,GAC7BjO,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UACtBzkB,EAAQsoB,EAAOA,EAAKC,EAAMr0B,EAAO4kB,GAAQ9Y,EACzCC,EAAMD,EAEN0nB,GACF5wB,KAAM,QACNkJ,MAAOA,EACPC,IAAKA,EACL6C,QAAS,YAGP9S,EAAKM,EAAK2E,YACdyyB,GAAS/3B,KAAK22B,UAAU/iB,UAAYvT,CAEpC,IAAIqS,GAAQ1S,KAAKs4B,gBAAgBzuB,EAC7B6I,KACFqlB,EAASrlB,MAAQA,EAAMumB,QAGzB,IAAI0e,GAAU,GAAIr1C,GAAUy1B,EAAU/3B,KAAKo8B,WAAYp8B,KAAKkP,QAC5DyoC,GAAQt3C,GAAKA,EACbs3C,EAAQlkC,KAAOskB,EACf/3B,KAAKmV,SAASwiC,EAEd,IAAIrxC,IACFwJ,KAAM6nC,EACN7N,WAAW,EACXuN,SAAUxtC,EAAM2uB,QAAQzL,OAAOwL,MAC/B9kB,KAAM9S,EAAKgF,UAAWoyB,GAExB/3B,MAAK60C,YAAYyC,WAAahxC,GAE9BuD,EAAM69B,mBAQR5kC,EAAQoR,UAAU+rB,QAAU,SAAUp2B,GAGpC,GAFAA,EAAMD,iBAEF5J,KAAK60C,YAAYyC,UAAW,CAC9BztC,EAAM69B,iBAEN,IAAIxyB,GAAKlV,KACL24B,EAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5B1lB,EAAUjT,KAAKu1B,KAAK5E,IAAIjxB,KAAK4yC,WAAatyC,KAAKu1B,KAAKC,SAAS3tB,KAAKyL,MAClE/O,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,SAG1B90B,MAAK60C,YAAYyC,UAAU1uC,QAAQ,SAAUtC,GAC3C,GAAIy1B,GAAU7mB,EAAGqgB,KAAK50B,KAAKu1B,OAAOrsB,EAAM2uB,QAAQzL,OAAOwL,MAAQtlB,GAC3D2kC,EAAU1iC,EAAGqgB,KAAK50B,KAAKu1B,OAAO5vB,EAAM+wC,SAAWpkC,GAC/CyX,EAASqR,EAAU6b,EAEnB7f,EAAWp3B,EAAKgF,UAAWW,EAAMwJ,KAAK2D,KAE1C,IAAIyB,EAAGhG,QAAQq4B,SAASoC,WACtB,GAAIrjC,EAAMsjC,UAER,GAAsB/iC,QAAlBkxB,EAAS1nB,MAAoB,CAC/B,GAAIwnC,GAAel3C,EAAKuG,QAAQZ,EAAMmN,KAAKpD,MAAO,QAC9CA,EAAQ,GAAIzL,MAAKizC,EAAaxwC,UAAYqjB,EAC9CqN,GAAS1nB,MAAQsoB,EAAOA,EAAKtoB,EAAO9L,EAAO4kB,GAAQ9Y,OAGlD,IAAI/J,EAAMwjC,WAEb,GAAoBjjC,QAAhBkxB,EAASznB,IAAkB,CAC7B,GAAIwnC,GAAan3C,EAAKuG,QAAQZ,EAAMmN,KAAKnD,IAAK,QAC1CA,EAAM,GAAI1L,MAAKkzC,EAAWzwC,UAAYqjB,EAC1CqN,GAASznB,IAAMqoB,EAAOA,EAAKroB,EAAK/L,EAAO4kB,GAAQ7Y,OAKjD,IAAsBzJ,QAAlBkxB,EAAS1nB,MAAoB,CAC/B,GAAIwnC,GAAel3C,EAAKuG,QAAQZ,EAAMmN,KAAKpD,MAAO,QAAQhJ,UACtDgJ,EAAQ,GAAIzL,MAAKizC,EAAentB,EAEpC,IAAoB7jB,QAAhBkxB,EAASznB,IAAkB,CAC7B,GAAIwnC,GAAan3C,EAAKuG,QAAQZ,EAAMmN,KAAKnD,IAAK,QAC1CC,EAAYunC,EAAWzwC,UAAYwwC,EAAaxwC,SAEpD0wB,GAAS1nB,MAAQsoB,EAAOA,EAAKtoB,EAAO9L,EAAO4kB,GAAQ9Y,EACnD0nB,EAASznB,IAAQ,GAAI1L,MAAKmzB,EAAS1nB,MAAMhJ,UAAYkJ,OAGrDwnB,GAAS1nB,MAAQsoB,EAAOA,EAAKtoB,EAAO9L,EAAO4kB,GAAQ9Y,EAM3D,GAAI6E,EAAGhG,QAAQq4B,SAASwF,cAAiBzmC,EAAMsjC,WAAatjC,EAAMwjC,WAC1CjjC,QAAlBkxB,EAASrlB,MAAoB,CAE/B,GAAIA,GAAQwC,EAAGojB,gBAAgBzuB,EAC3B6I,KACFqlB,EAASrlB,MAAQA,EAAMumB,SAM7B/jB,EAAGhG,QAAQ8kC,SAASjc,EAAU,SAAUA,GAClCA,GACFzxB,EAAMwJ,KAAKkJ,QAAQ+e,OAKzB/3B,KAAK40C,YAAa,EAClB50C,KAAKu1B,KAAKE,QAAQhH,KAAK,YAU3B3rB,EAAQoR,UAAU4yB,aAAe,SAASh3B,EAAMmpB,GAC9C,GAAIvmB,GAAQ1S,KAAK+0B,OAAOkE,EACxB,IAAIvmB,GAASA,EAAMumB,SAAWnpB,EAAK2D,KAAKf,MAAO,CAC7C,GAAIykC,GAAWrnC,EAAKzF,MACpB8sC,GAAS9/B,OAAOvH,GAChBqnC,EAAS1gC,QACT/D,EAAMsB,IAAIlE,GACV4C,EAAM+D,QAEN3G,EAAK2D,KAAKf,MAAQA,EAAMumB,UAS5Bn2B,EAAQoR,UAAUgsB,WAAa,SAAUr2B,GAGvC,GAFAA,EAAMD,iBAEF5J,KAAK60C,YAAYyC,UAAW,CAC9BztC,EAAM69B,iBAGN,IAAIqQ,MACA7iC,EAAKlV,KACLi4B,EAAUj4B,KAAK22B,UAAU7f,aAEzBwgC,EAAYt3C,KAAK60C,YAAYyC,SACjCt3C,MAAK60C,YAAYyC,UAAY,KAC7BA,EAAU1uC,QAAQ,SAAUtC,GAC1B,GAAIjG,GAAKiG,EAAMwJ,KAAKzP,GAChB4X,EAAiD,MAAxC/C,EAAGyhB,UAAU1gB,IAAI5V,EAAI6U,EAAG++B,YAErC,IAAKh8B,EAaA,CAEH,GAAI8f,GAAWp3B,EAAKgF,UAAWW,EAAMwJ,KAAK2D,KAC1CyB,GAAGhG,QAAQ4kC,OAAO/b,EAAU,SAAUA,GAChCA,GAEFA,EAASE,EAAQrkB,UAAYvT,EAC7B03C,EAAQxvC,KAAKwvB,KAIbzxB,EAAMwJ,KAAKkJ,QAAQ1S,EAAMmN,MAEzByB,EAAG0/B,YAAa,EAChB1/B,EAAGqgB,KAAKE,QAAQhH,KAAK,iBAzBzBvZ,GAAGhG,QAAQ0kC,MAAMttC,EAAMwJ,KAAK2D,KAAM,SAAUskB,GAC1C7iB,EAAG6hC,YAAYzwC,EAAMwJ,MACjBioB,GACF7iB,EAAGyhB,UAAU7f,aAAa9C,IAAI+jB,GAIhC7iB,EAAG0/B,YAAa,EAChB1/B,EAAGqgB,KAAKE,QAAQhH,KAAK,cAwBvBspB,EAAQ9xC,QACVgyB,EAAQriB,OAAOmiC,KAUrBj1C,EAAQoR,UAAUghC,cAAgB,SAAUrrC,GAC1C,GAAK7J,KAAKkP,QAAQykC,WAAlB,CAEA,GAAI6D,GAAW3tC,EAAM2uB,QAAQ+e,UAAY1tC,EAAM2uB,QAAQ+e,SAASC,QAC5DQ,EAAWnuC,EAAM2uB,QAAQ+e,UAAY1tC,EAAM2uB,QAAQ+e,SAASS,QAChE,IAAIR,GAAWQ,EAEb,WADAh4C,MAAKm1C,mBAAmBtrC,EAI1B,IAAIouC,GAAej4C,KAAK83B,eAEpBhoB,EAAO9P,KAAKq4B,eAAexuB,GAC3B8qC,EAAY7kC,GAAQA,EAAKzP,MAC7BL,MAAK43B,aAAa+c,EAElB,IAAIuD,GAAel4C,KAAK83B,gBAIpBogB,EAAajyC,OAAS,GAAKgyC,EAAahyC,OAAS,IACnDjG,KAAKu1B,KAAKE,QAAQhH,KAAK,UACrBxsB,MAAOi2C,MAUbp1C,EAAQoR,UAAUkhC,WAAa,SAAUvrC,GACvC,GAAK7J,KAAKkP,QAAQykC,YACb3zC,KAAKkP,QAAQq4B,SAASvzB,IAA3B,CAEA,GAAIkB,GAAKlV,KACL24B,EAAO34B,KAAKkP,QAAQypB,MAAQ,KAC5B7oB,EAAO9P,KAAKq4B,eAAexuB,EAE/B,IAAIiG,EAAM,CAIR,GAAIioB,GAAW7iB,EAAGyhB,UAAU1gB,IAAInG,EAAKzP,GACrCL,MAAKkP,QAAQ2kC,SAAS9b,EAAU,SAAUA,GACpCA,GACF7iB,EAAGyhB,UAAU7f,aAAalB,OAAOmiB,SAIlC,CAEH,GAAI2f,GAAO/2C,EAAK+G,gBAAgB1H,KAAK2wB,IAAIrQ,OACrC9N,EAAI3I,EAAM2uB,QAAQzL,OAAOwL,MAAQmf,EACjCrnC,EAAQrQ,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,GAC9BjO,EAAQvE,KAAKu1B,KAAK50B,KAAKi1B,WACvBzM,EAAOnpB,KAAKu1B,KAAK50B,KAAKm0B,UAEtB6iB,GACFtnC,MAAOsoB,EAAOA,EAAKtoB,EAAO9L,EAAO4kB,GAAQ9Y,EACzC8C,QAAS,WAIX,IAA0B,UAAtBnT,KAAKkP,QAAQ/H,KAAkB,CACjC,GAAImJ,GAAMtQ,KAAKu1B,KAAK50B,KAAKu1B,OAAO1jB,EAAIxS,KAAKsG,MAAMgN,MAAQ,EACvDqkC,GAAQrnC,IAAMqoB,EAAOA,EAAKroB,EAAK/L,EAAO4kB,GAAQ7Y,EAGhDqnC,EAAQ33C,KAAK22B,UAAU/iB,UAAYjT,EAAK2E,YAExC,IAAIoN,GAAQ1S,KAAKs4B,gBAAgBzuB,EAC7B6I,KACFilC,EAAQjlC,MAAQA,EAAMumB,SAIxBj5B,KAAKkP,QAAQ0kC,MAAM+D,EAAS,SAAU7nC,GAChCA,GACFoF,EAAGyhB,UAAU7f,aAAa9C,IAAIlE,QAYtChN,EAAQoR,UAAUihC,mBAAqB,SAAUtrC,GAC/C,GAAK7J,KAAKkP,QAAQykC,WAAlB,CAEA,GAAIgB,GACA7kC,EAAO9P,KAAKq4B,eAAexuB,EAE/B,IAAIiG,EAAM,CAER6kC,EAAY30C,KAAK83B,cAEjB,IAAIkgB,GAAWnuC,EAAM2uB,QAAQ2J,QAAQ,IAAMt4B,EAAM2uB,QAAQ2J,QAAQ,GAAG6V,WAAY,CAChF,IAAIA,EAAU,CAIZrD,EAAUpsC,KAAKuH,EAAKzP,GACpB,IAAIi2B,GAAQxzB,EAAQq1C,cAAcn4C,KAAK22B,UAAU1gB,IAAI0+B,EAAW30C,KAAKi0C,aAGrEU,KACA,KAAK,GAAIt0C,KAAML,MAAKiC,MAClB,GAAIjC,KAAKiC,MAAMmE,eAAe/F,GAAK,CACjC,GAAI+3C,GAAQp4C,KAAKiC,MAAM5B,GACnBgQ,EAAQ+nC,EAAM3kC,KAAKpD,MACnBC,EAA0BzJ,SAAnBuxC,EAAM3kC,KAAKnD,IAAqB8nC,EAAM3kC,KAAKnD,IAAMD,CAExDA,IAASimB,EAAMnyB,KACfmM,GAAOgmB,EAAMlyB,OACXg0C,YAAiBj2C,KACrBwyC,EAAUpsC,KAAK6vC,EAAM/3C,SAKxB,CAEH,GAAIqI,GAAQisC,EAAU3tC,QAAQ8I,EAAKzP,GACtB,KAATqI,EAEFisC,EAAUpsC,KAAKuH,EAAKzP,IAIpBs0C,EAAUhsC,OAAOD,EAAO,GAI5B1I,KAAK43B,aAAa+c,GAElB30C,KAAKu1B,KAAKE,QAAQhH,KAAK,UACrBxsB,MAAOjC,KAAK83B,oBAWlBh1B,EAAQq1C,cAAgB,SAASxhB,GAC/B,GAAIvyB,GAAM,KACND,EAAM,IAmBV,OAjBAwyB,GAAU/tB,QAAQ,SAAU6K,IACf,MAAPtP,GAAesP,EAAKpD,MAAQlM,KAC9BA,EAAMsP,EAAKpD,OAGGxJ,QAAZ4M,EAAKnD,KACI,MAAPlM,GAAeqP,EAAKnD,IAAMlM,KAC5BA,EAAMqP,EAAKnD,MAIF,MAAPlM,GAAeqP,EAAKpD,MAAQjM,KAC9BA,EAAMqP,EAAKpD,UAMflM,IAAKA,EACLC,IAAKA,IAUTtB,EAAQoR,UAAUmkB,eAAiB,SAASxuB,GAE1C,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO5D,eAAe,iBACxB,MAAO4D,GAAO,gBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OASTrH,EAAQoR,UAAUokB,gBAAkB,SAASzuB,GAE3C,IAAK,GADD4uB,GAAQ5uB,EAAM2uB,QAAU3uB,EAAM2uB,QAAQzL,OAAO0L,MAAQ5uB,EAAM4uB,MACtD3yB,EAAI,EAAGA,EAAI9F,KAAK00C,SAASzuC,OAAQH,IAAK,CAC7C,GAAImzB,GAAUj5B,KAAK00C,SAAS5uC,GACxB4M,EAAQ1S,KAAK+0B,OAAOkE,GACpBF,EAAarmB,EAAMie,IAAIoI,WACvB9wB,EAAMtH,EAAKqH,eAAe+wB,EAC9B,IAAIN,EAAQxwB,GAAOwwB,EAAQxwB,EAAM8wB,EAAW7H,aAC1C,MAAOxe,EAGT,IAAiC,QAA7B1S,KAAKkP,QAAQimB,aACf,GAAIrvB,IAAM9F,KAAK00C,SAASzuC,OAAS,GAAKwyB,EAAQxwB,EAC5C,MAAOyK,OAIT,IAAU,IAAN5M,GAAW2yB,EAAQxwB,EAAM8wB,EAAWrO,OACtC,MAAOhY,GAKb,MAAO,OAST5P,EAAQu1C,kBAAoB,SAASxuC,GAEnC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO5D,eAAe,oBACxB,MAAO4D,GAAO,mBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAGTtK,EAAOD,QAAUkD,GAKb,SAASjD,EAAQD,EAASM,GAS9B,QAAS6C,GAAOwyB,EAAMrmB,EAASopC,EAAMlN,GACnCprC,KAAKu1B,KAAOA,EACZv1B,KAAKi1B,gBACH9lB,SAAS,EACTo8B,OAAO,EACPgN,SAAU,GACVC,YAAa,EACb3wC,MACE4hB,SAAS,EACT7E,SAAU,YAEZyD,OACEoB,SAAS,EACT7E,SAAU,aAGd5kB,KAAKs4C,KAAOA,EACZt4C,KAAKkP,QAAUvO,EAAKgF,UAAU3F,KAAKi1B,gBACnCj1B,KAAKorC,iBAAmBA,EAExBprC,KAAKwsC,eACLxsC,KAAK2wB,OACL3wB,KAAK+0B,UACL/0B,KAAK0sC,eAAiB,EACtB1sC,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAjClB,GAAIvO,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BqC,EAAYrC,EAAoB,GAkCpC6C,GAAOmR,UAAY,GAAI3R,GAEvBQ,EAAOmR,UAAUuD,MAAQ,WACvBzX,KAAK+0B,UACL/0B,KAAK0sC,eAAiB,GAGxB3pC,EAAOmR,UAAU24B,SAAW,SAAS75B,EAAO85B,GAErC9sC,KAAK+0B,OAAO3uB,eAAe4M,KAC9BhT,KAAK+0B,OAAO/hB,GAAS85B,GAEvB9sC,KAAK0sC,gBAAkB,GAGzB3pC,EAAOmR,UAAU64B,YAAc,SAAS/5B,EAAO85B,GAC7C9sC,KAAK+0B,OAAO/hB,GAAS85B,GAGvB/pC,EAAOmR,UAAU84B,YAAc,SAASh6B,GAClChT,KAAK+0B,OAAO3uB,eAAe4M,WACtBhT,MAAK+0B,OAAO/hB,GACnBhT,KAAK0sC,gBAAkB,IAI3B3pC,EAAOmR,UAAUohB,QAAU,WACzBt1B,KAAK2wB,IAAIrQ,MAAQtO,SAASM,cAAc,OACxCtS,KAAK2wB,IAAIrQ,MAAMlY,UAAY,SAC3BpI,KAAK2wB,IAAIrQ,MAAM5S,MAAMkX,SAAW,WAChC5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,OAC3BjI,KAAK2wB,IAAIrQ,MAAM5S,MAAMu/B,QAAU,QAE/BjtC,KAAK2wB,IAAI8nB,SAAWzmC,SAASM,cAAc,OAC3CtS,KAAK2wB,IAAI8nB,SAASrwC,UAAY,aAC9BpI,KAAK2wB,IAAI8nB,SAAS/qC,MAAMkX,SAAW,WACnC5kB,KAAK2wB,IAAI8nB,SAAS/qC,MAAMzF,IAAM,MAE9BjI,KAAKmrC,IAAMn5B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAKmrC,IAAIz9B,MAAMkX,SAAW,WAC1B5kB,KAAKmrC,IAAIz9B,MAAMzF,IAAM,MACrBjI,KAAKmrC,IAAIz9B,MAAM4F,MAAQtT,KAAKkP,QAAQqpC,SAAW,EAAI,KACnDv4C,KAAKmrC,IAAIz9B,MAAM6F,OAAS,OAExBvT,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAKmrC,KAChCnrC,KAAK2wB,IAAIrQ,MAAMpO,YAAYlS,KAAK2wB,IAAI8nB,WAMtC11C,EAAOmR,UAAU8yB,KAAO,WAElBhnC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,QAQnDvd,EAAOmR,UAAU+yB,KAAO,WAEjBjnC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,QAI9Cvd,EAAOmR,UAAUD,WAAa,SAAS/E,GACrC,GAAIP,IAAU,UAAU,cAAc,QAAQ,OAAO,QACrDhO,GAAK8F,oBAAoBkI,EAAQ3O,KAAKkP,QAASA,IAGjDnM,EAAOmR,UAAUuO,OAAS,WACxB,GAAI+qB,GAAe,CACnB,KAAK,GAAIvU,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO3uB,eAAe6yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAKorC,iBAAiB/R,WAAWJ,IAAuE,GAA7Cj5B,KAAKorC,iBAAiB/R,WAAWJ,IACvIuU,IAKN,IAAuC,GAAnCxtC,KAAKkP,QAAQlP,KAAKs4C,MAAM7uB,SAA2C,GAAvBzpB,KAAK0sC,gBAA+C,GAAxB1sC,KAAKkP,QAAQC,SAAoC,GAAhBq+B,EAC3GxtC,KAAKgnC,WAEF,CAqBH,GApBAhnC,KAAKinC,OACmC,YAApCjnC,KAAKkP,QAAQlP,KAAKs4C,MAAM1zB,UAA8D,eAApC5kB,KAAKkP,QAAQlP,KAAKs4C,MAAM1zB,UAC5E5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAM7F,KAAO,MAC5B7H,KAAK2wB,IAAIrQ,MAAM5S,MAAM4b,UAAY,OACjCtpB,KAAK2wB,IAAI8nB,SAAS/qC,MAAM4b,UAAY,OACpCtpB,KAAK2wB,IAAI8nB,SAAS/qC,MAAM7F,KAAQ7H,KAAKkP,QAAQqpC,SAAW,GAAM,KAC9Dv4C,KAAK2wB,IAAI8nB,SAAS/qC,MAAM2a,MAAQ,GAChCroB,KAAKmrC,IAAIz9B,MAAM7F,KAAO,MACtB7H,KAAKmrC,IAAIz9B,MAAM2a,MAAQ,KAGvBroB,KAAK2wB,IAAIrQ,MAAM5S,MAAM2a,MAAQ,MAC7BroB,KAAK2wB,IAAIrQ,MAAM5S,MAAM4b,UAAY,QACjCtpB,KAAK2wB,IAAI8nB,SAAS/qC,MAAM4b,UAAY,QACpCtpB,KAAK2wB,IAAI8nB,SAAS/qC,MAAM2a,MAASroB,KAAKkP,QAAQqpC,SAAW,GAAM,KAC/Dv4C,KAAK2wB,IAAI8nB,SAAS/qC,MAAM7F,KAAO,GAC/B7H,KAAKmrC,IAAIz9B,MAAM2a,MAAQ,MACvBroB,KAAKmrC,IAAIz9B,MAAM7F,KAAO,IAGgB,YAApC7H,KAAKkP,QAAQlP,KAAKs4C,MAAM1zB,UAA8D,aAApC5kB,KAAKkP,QAAQlP,KAAKs4C,MAAM1zB,SAC5E5kB,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,EAAIhE,OAAOjE,KAAKu1B,KAAK5E,IAAI5D,OAAOrf,MAAMzF,IAAIgD,QAAQ,KAAK,KAAO,KACzFjL,KAAK2wB,IAAIrQ,MAAM5S,MAAM4W,OAAS,OAE3B,CACH,GAAIo0B,GAAmB14C,KAAKu1B,KAAKC,SAASzI,OAAOxZ,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,MAC7FvT,MAAK2wB,IAAIrQ,MAAM5S,MAAM4W,OAAS,EAAIo0B,EAAmBz0C,OAAOjE,KAAKu1B,KAAK5E,IAAI5D,OAAOrf,MAAMzF,IAAIgD,QAAQ,KAAK,KAAO,KAC/GjL,KAAK2wB,IAAIrQ,MAAM5S,MAAMzF,IAAM,GAGH,GAAtBjI,KAAKkP,QAAQq8B,OACfvrC,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAK2wB,IAAI8nB,SAASznB,YAAc,GAAK,KAClEhxB,KAAK2wB,IAAI8nB,SAAS/qC,MAAM2a,MAAQ,GAChCroB,KAAK2wB,IAAI8nB,SAAS/qC,MAAM7F,KAAO,GAC/B7H,KAAKmrC,IAAIz9B,MAAM4F,MAAQ,QAGvBtT,KAAK2wB,IAAIrQ,MAAM5S,MAAM4F,MAAQtT,KAAKkP,QAAQqpC,SAAW,GAAKv4C,KAAK2wB,IAAI8nB,SAASznB,YAAc,GAAK,KAC/FhxB,KAAK24C,kBAGP,IAAIxlC,GAAU,EACd,KAAK,GAAI8lB,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO3uB,eAAe6yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAKorC,iBAAiB/R,WAAWJ,IAAuE,GAA7Cj5B,KAAKorC,iBAAiB/R,WAAWJ,KACvI9lB,GAAWnT,KAAK+0B,OAAOkE,GAAS9lB,QAAU,UAIhDnT,MAAK2wB,IAAI8nB,SAASxzB,UAAY9R,EAC9BnT,KAAK2wB,IAAI8nB,SAAS/qC,MAAMyjB,WAAe,IAAOnxB,KAAKkP,QAAQqpC,SAAYv4C,KAAKkP,QAAQspC,YAAe,OAIvGz1C,EAAOmR,UAAUykC,gBAAkB,WACjC,GAAI34C,KAAK2wB,IAAIrQ,MAAMnW,WAAY,CAC7BvJ,EAAQ0Q,gBAAgBtR,KAAKwsC,YAC7B,IAAIxnB,GAAUld,OAAO6gC,iBAAiB3oC,KAAK2wB,IAAIrQ,OAAOs4B,WAClDxL,EAAanpC,OAAO+gB,EAAQ/Z,QAAQ,KAAK,KACzCuH,EAAI46B,EACJxB,EAAY5rC,KAAKkP,QAAQqpC,SACzBpL,EAAa,IAAOntC,KAAKkP,QAAQqpC,SACjC9lC,EAAI26B,EAAa,GAAMD,EAAa,CAExCntC,MAAKmrC,IAAIz9B,MAAM4F,MAAQs4B,EAAY,EAAIwB,EAAa,IAEpD,KAAK,GAAInU,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO3uB,eAAe6yB,KACO,GAAhCj5B,KAAK+0B,OAAOkE,GAASxP,SAAkE5iB,SAA9C7G,KAAKorC,iBAAiB/R,WAAWJ,IAAuE,GAA7Cj5B,KAAKorC,iBAAiB/R,WAAWJ,KACvIj5B,KAAK+0B,OAAOkE,GAASoU,SAAS76B,EAAGC,EAAGzS,KAAKwsC,YAAaxsC,KAAKmrC,IAAKS,EAAWuB,GAC3E16B,GAAK06B,EAAantC,KAAKkP,QAAQspC,aAKrC53C,GAAQ+Q,gBAAgB3R,KAAKwsC,eAIjC3sC,EAAOD,QAAUmD,GAKb,SAASlD,EAAQD,EAASM,GAqB9B,QAAS8C,GAAUuyB,EAAMrmB,GACvBlP,KAAKK,GAAKM,EAAK2E,aACftF,KAAKu1B,KAAOA,EAEZv1B,KAAKi1B,gBACHgc,iBAAkB,OAClB4H,aAAc,UACd3hC,MAAM,EACN4hC,UAAU,EACVC,YAAa,QACbnI,QACEzhC,SAAS,EACTgmB,YAAa,UAEfznB,MAAO,OACPsrC,UACE1lC,MAAO,GACP2lC,cAAe,UACfhQ,MAAO,UAETmH,YACEjhC,SAAS,EACTkhC,gBAAiB,cACjBC,MAAO,IAETz9B,YACE1D,SAAS,EACT4D,KAAM,EACNrF,MAAO,UAETwrC,UACE7N,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACPj4B,MAAO,OACPmW,SAAS,EACT8T,YAAY,EACZD,aACEz1B,MAAO1D,IAAI0C,OAAWzC,IAAIyC,QAC1BwhB,OAAQlkB,IAAI0C,OAAWzC,IAAIyC,UAkB/BsyC,QACEhqC,SAAS,EACTo8B,OAAO,EACP1jC,MACE4hB,SAAS,EACT7E,SAAU,YAEZyD,OACEoB,SAAS,EACT7E,SAAU,cAGdmQ,QACEsE,gBAKJr5B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBACpCj1B,KAAK2wB,OACL3wB,KAAKsG,SACLtG,KAAK8D,OAAS,KACd9D,KAAK+0B,UACL/0B,KAAKo5C,oBAAqB,EAC1Bp5C,KAAKq5C,iBAAkB,EACvBr5C,KAAKs5C,yBAA0B,CAE/B,IAAIpkC,GAAKlV,IACTA,MAAK22B,UAAY,KACjB32B,KAAK42B,WAAa,KAGlB52B,KAAKk0C,eACHlgC,IAAO,SAAUnK,EAAOgL,EAAQC,GAC9BI,EAAGi/B,OAAOt/B,EAAO5S,QAEnB2T,OAAU,SAAU/L,EAAOgL,EAAQC,GACjCI,EAAGk/B,UAAUv/B,EAAO5S,QAEtBoV,OAAU,SAAUxN,EAAOgL,EAAQC,GACjCI,EAAGm/B,UAAUx/B,EAAO5S,SAKxBjC,KAAKs0C,gBACHtgC,IAAO,SAAUnK,EAAOgL,EAAQC,GAC9BI,EAAGq/B,aAAa1/B,EAAO5S,QAEzB2T,OAAU,SAAU/L,EAAOgL,EAAQC,GACjCI,EAAGs/B,gBAAgB3/B,EAAO5S,QAE5BoV,OAAU,SAAUxN,EAAOgL,EAAQC,GACjCI,EAAGu/B,gBAAgB5/B,EAAO5S,SAI9BjC,KAAKiC,SACLjC,KAAK20C,aACL30C,KAAKu5C,UAAYv5C,KAAKu1B,KAAKe,MAAMjmB,MACjCrQ,KAAK60C,eAEL70C,KAAKwsC,eACLxsC,KAAKiU,WAAW/E,GAChBlP,KAAK6vC,0BAA4B,GACjC7vC,KAAKw5C,QAAU,EACfx5C,KAAKu1B,KAAKE,QAAQnhB,GAAG,eAAgB,WACnCY,EAAGqkC,UAAYrkC,EAAGqgB,KAAKe,MAAMjmB,MAC7B6E,EAAGi2B,IAAIz9B,MAAM7F,KAAOlH,EAAK4J,OAAOK,QAAQsK,EAAG5O,MAAMgN,OACjD4B,EAAGuN,OAAOliB,KAAK2U,GAAG,KAIpBlV,KAAKs1B,UACLt1B,KAAKqxC,WAAalG,IAAKnrC,KAAKmrC,IAAKqB,YAAaxsC,KAAKwsC,YAAat9B,QAASlP,KAAKkP,QAAS6lB,OAAQ/0B,KAAK+0B,QACpG/0B,KAAKu1B,KAAKE,QAAQhH,KAAK,UAvJzB,GAAI9tB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BqC,EAAYrC,EAAoB,IAChCwC,EAAWxC,EAAoB,IAC/ByC,EAAazC,EAAoB,IACjC6C,EAAS7C,EAAoB,IAC7Bu5C,EAAoBv5C,EAAoB,IAExC40C,EAAY,eAiJhB9xC,GAAUkR,UAAY,GAAI3R,GAK1BS,EAAUkR,UAAUohB,QAAU,WAC5B,GAAIhV,GAAQtO,SAASM,cAAc,MACnCgO,GAAMlY,UAAY,YAClBpI,KAAK2wB,IAAIrQ,MAAQA,EAGjBtgB,KAAKmrC,IAAMn5B,SAASC,gBAAgB,6BAA6B,OACjEjS,KAAKmrC,IAAIz9B,MAAMkX,SAAW,WAC1B5kB,KAAKmrC,IAAIz9B,MAAM6F,QAAU,GAAKvT,KAAKkP,QAAQ6pC,aAAa9tC,QAAQ,KAAK,IAAM,KAC3EjL,KAAKmrC,IAAIz9B,MAAMu/B,QAAU,QACzB3sB,EAAMpO,YAAYlS,KAAKmrC,KAGvBnrC,KAAKkP,QAAQgqC,SAAS/jB,YAAc,OACpCn1B,KAAKs5B,UAAY,GAAI52B,GAAS1C,KAAKu1B,KAAMv1B,KAAKkP,QAAQgqC,SAAUl5C,KAAKmrC,IAAKnrC,KAAKkP,QAAQ6lB,QAEvF/0B,KAAKkP,QAAQgqC,SAAS/jB,YAAc,QACpCn1B,KAAKu5B,WAAa,GAAI72B,GAAS1C,KAAKu1B,KAAMv1B,KAAKkP,QAAQgqC,SAAUl5C,KAAKmrC,IAAKnrC,KAAKkP,QAAQ6lB,cACjF/0B,MAAKkP,QAAQgqC,SAAS/jB,YAG7Bn1B,KAAKw5B,WAAa,GAAIz2B,GAAO/C,KAAKu1B,KAAMv1B,KAAKkP,QAAQiqC,OAAQ,OAAQn5C,KAAKkP,QAAQ6lB,QAClF/0B,KAAKy5B,YAAc,GAAI12B,GAAO/C,KAAKu1B,KAAMv1B,KAAKkP,QAAQiqC,OAAQ,QAASn5C,KAAKkP,QAAQ6lB,QAEpF/0B,KAAKinC,QAOPjkC,EAAUkR,UAAUD,WAAa,SAAS/E,GACxC,GAAIA,EAAS,CACX,GAAIP,IAAU,WAAW,eAAe,SAAS,cAAc,mBAAmB,QAAQ,WAAW,WAAW,OAAO,SAC3F9H,UAAxBqI,EAAQ6pC,aAAgDlyC,SAAnBqI,EAAQqE,QAAsE1M,SAA9C7G,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QAC1GvT,KAAKq5C,iBAAkB,EACvBr5C,KAAKs5C,yBAA0B,GAEsBzyC,SAA9C7G,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,QAAgD1M,SAAxBqI,EAAQ6pC,aACtE1tC,UAAU6D,EAAQ6pC,YAAc,IAAI9tC,QAAQ,KAAK,KAAOjL,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,SAC7FvT,KAAKq5C,iBAAkB,GAG3B14C,EAAK8F,oBAAoBkI,EAAQ3O,KAAKkP,QAASA,GAC/CvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,cACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UACxCvO,EAAKqO,aAAahP,KAAKkP,QAASA,EAAQ,UAEpCA,EAAQkhC,YACuB,gBAAtBlhC,GAAQkhC,YACblhC,EAAQkhC,WAAWC,kBACqB,WAAtCnhC,EAAQkhC,WAAWC,gBACrBrwC,KAAKkP,QAAQkhC,WAAWE,MAAQ,EAEa,WAAtCphC,EAAQkhC,WAAWC,gBAC1BrwC,KAAKkP,QAAQkhC,WAAWE,MAAQ,GAGhCtwC,KAAKkP,QAAQkhC,WAAWC,gBAAkB,cAC1CrwC,KAAKkP,QAAQkhC,WAAWE,MAAQ,KAMpCtwC,KAAKs5B,WACkBzyB,SAArBqI,EAAQgqC,WACVl5C,KAAKs5B,UAAUrlB,WAAWjU,KAAKkP,QAAQgqC,UACvCl5C,KAAKu5B,WAAWtlB,WAAWjU,KAAKkP,QAAQgqC,WAIxCl5C,KAAKw5B,YACgB3yB,SAAnBqI,EAAQiqC,SACVn5C,KAAKw5B,WAAWvlB,WAAWjU,KAAKkP,QAAQiqC,QACxCn5C,KAAKy5B,YAAYxlB,WAAWjU,KAAKkP,QAAQiqC,SAIzCn5C,KAAK+0B,OAAO3uB,eAAe0uC,IAC7B90C,KAAK+0B,OAAO+f,GAAW7gC,WAAW/E,GAKlClP,KAAK2wB,IAAIrQ,OACXtgB,KAAKyiB,QAAO,IAOhBzf,EAAUkR,UAAU8yB,KAAO,WAErBhnC,KAAK2wB,IAAIrQ,MAAMnW,YACjBnK,KAAK2wB,IAAIrQ,MAAMnW,WAAWyH,YAAY5R,KAAK2wB,IAAIrQ,QASnDtd,EAAUkR,UAAU+yB,KAAO,WAEpBjnC,KAAK2wB,IAAIrQ,MAAMnW,YAClBnK,KAAKu1B,KAAK5E,IAAI5D,OAAO7a,YAAYlS,KAAK2wB,IAAIrQ,QAS9Ctd,EAAUkR,UAAU8iB,SAAW,SAAS/0B,GACtC,GACEkU,GADEjB,EAAKlV,KAEP02C,EAAe12C,KAAK22B,SAGtB,IAAK10B,EAGA,CAAA,KAAIA,YAAiBpB,IAAWoB,YAAiBnB,IAIpD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK22B,UAAY10B,MAHjBjC,MAAK22B,UAAY,IAoBnB,IAXI+f,IAEF/1C,EAAKiI,QAAQ5I,KAAKk0C,cAAe,SAAUrrC,EAAUgB,GACnD6sC,EAAajiC,IAAI5K,EAAOhB,KAI1BsN,EAAMugC,EAAa7/B,SACnB7W,KAAKq0C,UAAUl+B,IAGbnW,KAAK22B,UAAW,CAElB,GAAIt2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAKk0C,cAAe,SAAUrrC,EAAUgB,GACnDqL,EAAGyhB,UAAUriB,GAAGzK,EAAOhB,EAAUxI,KAInC8V,EAAMnW,KAAK22B,UAAU9f,SACrB7W,KAAKm0C,OAAOh+B,GAEdnW,KAAKg1C,mBAELh1C,KAAKyiB,QAAO,IAQdzf,EAAUkR,UAAU6iB,UAAY,SAAShC,GACvC,GACI5e,GADAjB,EAAKlV,IAgBT,IAZIA,KAAK42B,aACPj2B,EAAKiI,QAAQ5I,KAAKs0C,eAAgB,SAAUzrC,EAAUgB,GACpDqL,EAAG0hB,WAAWjiB,YAAY9K,EAAOhB,KAInCsN,EAAMnW,KAAK42B,WAAW/f,SACtB7W,KAAK42B,WAAa,KAClB52B,KAAKy0C,gBAAgBt+B,IAIlB4e,EAGA,CAAA,KAAIA,YAAkBl0B,IAAWk0B,YAAkBj0B,IAItD,KAAM,IAAI4F,WAAU,kDAHpB1G,MAAK42B,WAAa7B,MAHlB/0B,MAAK42B,WAAa,IASpB,IAAI52B,KAAK42B,WAAY,CAEnB,GAAIv2B,GAAKL,KAAKK,EACdM,GAAKiI,QAAQ5I,KAAKs0C,eAAgB,SAAUzrC,EAAUgB,GACpDqL,EAAG0hB,WAAWtiB,GAAGzK,EAAOhB,EAAUxI,KAIpC8V,EAAMnW,KAAK42B,WAAW/f,SACtB7W,KAAKu0C,aAAap+B,GAEpBnW,KAAKo0C,aASPpxC,EAAUkR,UAAUkgC,UAAY,SAASj+B,GACvCnW,KAAKg1C,mBACLh1C,KAAK05C,sBAEL15C,KAAKyiB,QAAO,IAEdzf,EAAUkR,UAAUigC,OAAkB,SAAUh+B,GAAMnW,KAAKo0C,UAAUj+B,IACrEnT,EAAUkR,UAAUmgC,UAAkB,SAAUl+B,GAAMnW,KAAKo0C,UAAUj+B,IACrEnT,EAAUkR,UAAUsgC,gBAAmB,SAAUE,GAC/C,IAAK,GAAI5uC,GAAI,EAAGA,EAAI4uC,EAASzuC,OAAQH,IAAK,CACxC,GAAI4M,GAAQ1S,KAAK42B,WAAW3gB,IAAIy+B,EAAS5uC,GACzC9F,MAAK25C,aAAajnC,EAAOgiC,EAAS5uC,IAIpC9F,KAAKyiB,QAAO,IAEdzf,EAAUkR,UAAUqgC,aAAe,SAAUG,GAAW10C,KAAKw0C,gBAAgBE,IAQ7E1xC,EAAUkR,UAAUugC,gBAAkB,SAAUC,GAC9C,IAAK,GAAI5uC,GAAI,EAAGA,EAAI4uC,EAASzuC,OAAQH,IAC/B9F,KAAK+0B,OAAO3uB,eAAesuC,EAAS5uC,MACmB,SAArD9F,KAAK+0B,OAAO2f,EAAS5uC,IAAIoJ,QAAQ+hC,kBACnCjxC,KAAKu5B,WAAWyT,YAAY0H,EAAS5uC,IACrC9F,KAAKy5B,YAAYuT,YAAY0H,EAAS5uC,IACtC9F,KAAKy5B,YAAYhX,WAGjBziB,KAAKs5B,UAAU0T,YAAY0H,EAAS5uC,IACpC9F,KAAKw5B,WAAWwT,YAAY0H,EAAS5uC,IACrC9F,KAAKw5B,WAAW/W,gBAEXziB,MAAK+0B,OAAO2f,EAAS5uC,IAGhC9F,MAAKg1C,mBAELh1C,KAAKyiB,QAAO,IAWdzf,EAAUkR,UAAUylC,aAAe,SAAUjnC,EAAOumB,GAC7Cj5B,KAAK+0B,OAAO3uB,eAAe6yB,IAY9Bj5B,KAAK+0B,OAAOkE,GAASrjB,OAAOlD,GACyB,SAAjD1S,KAAK+0B,OAAOkE,GAAS/pB,QAAQ+hC,kBAC/BjxC,KAAKu5B,WAAWwT,YAAY9T,EAASj5B,KAAK+0B,OAAOkE,IACjDj5B,KAAKy5B,YAAYsT,YAAY9T,EAASj5B,KAAK+0B,OAAOkE,MAGlDj5B,KAAKs5B,UAAUyT,YAAY9T,EAASj5B,KAAK+0B,OAAOkE,IAChDj5B,KAAKw5B,WAAWuT,YAAY9T,EAASj5B,KAAK+0B,OAAOkE,OAlBnDj5B,KAAK+0B,OAAOkE,GAAW,GAAIt2B,GAAW+P,EAAOumB,EAASj5B,KAAKkP,QAASlP,KAAK6vC,0BACpB,SAAjD7vC,KAAK+0B,OAAOkE,GAAS/pB,QAAQ+hC,kBAC/BjxC,KAAKu5B,WAAWsT,SAAS5T,EAASj5B,KAAK+0B,OAAOkE,IAC9Cj5B,KAAKy5B,YAAYoT,SAAS5T,EAASj5B,KAAK+0B,OAAOkE,MAG/Cj5B,KAAKs5B,UAAUuT,SAAS5T,EAASj5B,KAAK+0B,OAAOkE,IAC7Cj5B,KAAKw5B,WAAWqT,SAAS5T,EAASj5B,KAAK+0B,OAAOkE,MAclDj5B,KAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,UASnBzf,EAAUkR,UAAUwlC,oBAAsB,WACxC,GAAsB,MAAlB15C,KAAK22B,UAAmB,CAC1B,GACIsC,GADA2gB,IAEJ,KAAK3gB,IAAWj5B,MAAK+0B,OACf/0B,KAAK+0B,OAAO3uB,eAAe6yB,KAC7B2gB,EAAc3gB,MAGlB,KAAK,GAAI1iB,KAAUvW,MAAK22B,UAAUhjB,MAChC,GAAI3T,KAAK22B,UAAUhjB,MAAMvN,eAAemQ,GAAS,CAC/C,GAAIzG,GAAO9P,KAAK22B,UAAUhjB,MAAM4C,EAChC,IAAkC1P,SAA9B+yC,EAAc9pC,EAAK4C,OACrB,KAAM,IAAI9O,OAAM,4IAElBkM,GAAK0C,EAAI7R,EAAKuG,QAAQ4I,EAAK0C,EAAE,QAC7BonC,EAAc9pC,EAAK4C,OAAOnK,KAAKuH,GAGnC,IAAKmpB,IAAWj5B,MAAK+0B,OACf/0B,KAAK+0B,OAAO3uB,eAAe6yB,IAC7Bj5B,KAAK+0B,OAAOkE,GAASjC,SAAS4iB,EAAc3gB,MAYpDj2B,EAAUkR,UAAU8gC,iBAAmB,WACrC,GAAIh1C,KAAK22B,WAA+B,MAAlB32B,KAAK22B,UAAmB,CAC5C,GAAIkjB,GAAmB,CACvB,KAAK,GAAItjC,KAAUvW,MAAK22B,UAAUhjB,MAChC,GAAI3T,KAAK22B,UAAUhjB,MAAMvN,eAAemQ,GAAS,CAC/C,GAAIzG,GAAO9P,KAAK22B,UAAUhjB,MAAM4C,EACpB1P,SAARiJ,IACEA,EAAK1J,eAAe,SACHS,SAAfiJ,EAAK4C,QACP5C,EAAK4C,MAAQoiC,GAIfhlC,EAAK4C,MAAQoiC,EAEf+E,EAAmB/pC,EAAK4C,OAASoiC,EAAY+E,EAAmB,EAAIA,GAK1E,GAAwB,GAApBA,QACK75C,MAAK+0B,OAAO+f,GACnB90C,KAAKw5B,WAAWwT,YAAY8H,GAC5B90C,KAAKy5B,YAAYuT,YAAY8H,GAC7B90C,KAAKs5B,UAAU0T,YAAY8H,GAC3B90C,KAAKu5B,WAAWyT,YAAY8H,OAEzB,CACH,GAAIpiC,IAASrS,GAAIy0C,EAAW3hC,QAASnT,KAAKkP,QAAQ2pC,aAClD74C,MAAK25C,aAAajnC,EAAOoiC,eAIpB90C,MAAK+0B,OAAO+f,GACnB90C,KAAKw5B,WAAWwT,YAAY8H,GAC5B90C,KAAKy5B,YAAYuT,YAAY8H,GAC7B90C,KAAKs5B,UAAU0T,YAAY8H,GAC3B90C,KAAKu5B,WAAWyT,YAAY8H,EAG9B90C,MAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,UAQnBzf,EAAUkR,UAAUuO,OAAS,SAASq3B,GACpC,GAAI7P,IAAU,CAGdjqC,MAAKsG,MAAMgN,MAAQtT,KAAK2wB,IAAIrQ,MAAM0Q,YAClChxB,KAAKsG,MAAMiN,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAGhC1M,SAAnB7G,KAAK81C,WAA2B91C,KAAKsG,MAAMgN,QAC7CwmC,GAAmB,GAIrB7P,EAAUjqC,KAAKgqC,cAAgBC,CAG/B,IAAI0L,GAAkB31C,KAAKu1B,KAAKe,MAAMhmB,IAAMtQ,KAAKu1B,KAAKe,MAAMjmB,MACxDulC,EAAUD,GAAmB31C,KAAK61C,mBA6BtC,IA5BA71C,KAAK61C,oBAAsBF,EAKZ,GAAX1L,IACFjqC,KAAKmrC,IAAIz9B,MAAM4F,MAAQ3S,EAAK4J,OAAOK,OAAO,EAAE5K,KAAKsG,MAAMgN,OACvDtT,KAAKmrC,IAAIz9B,MAAM7F,KAAOlH,EAAK4J,OAAOK,QAAQ5K,KAAKsG,MAAMgN,QAGN,KAA1CtT,KAAKkP,QAAQqE,OAAS,IAAIvM,QAAQ,MAA8C,GAAhChH,KAAKs5C,2BACxDt5C,KAAKq5C,iBAAkB,IAKC,GAAxBr5C,KAAKq5C,iBACHr5C,KAAKkP,QAAQ6pC,aAAe/4C,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,OAC1EvT,KAAKkP,QAAQ6pC,YAAc/4C,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,KACvEvT,KAAKmrC,IAAIz9B,MAAM6F,OAASvT,KAAKu1B,KAAKC,SAASkD,gBAAgBnlB,OAAS,MAEtEvT,KAAKq5C,iBAAkB,GAGvBr5C,KAAKmrC,IAAIz9B,MAAM6F,QAAU,GAAKvT,KAAKkP,QAAQ6pC,aAAa9tC,QAAQ,KAAK,IAAM,KAI9D,GAAXg/B,GAA6B,GAAV2L,GAA6C,GAA3B51C,KAAKo5C,oBAAkD,GAApBU,EAC1E7P,EAAUjqC,KAAK+5C,gBAAkB9P,MAIjC,IAAsB,GAAlBjqC,KAAKu5C,UAAgB,CACvB,GAAI7uB,GAAS1qB,KAAKu1B,KAAKe,MAAMjmB,MAAQrQ,KAAKu5C,UACtCjjB,EAAQt2B,KAAKu1B,KAAKe,MAAMhmB,IAAMtQ,KAAKu1B,KAAKe,MAAMjmB,KAClD,IAAwB,GAApBrQ,KAAKsG,MAAMgN,MAAY,CACzB,GAAI0mC,GAAmBh6C,KAAKsG,MAAMgN,MAAMgjB,EACpCrjB,EAAUyX,EAASsvB,CACvBh6C,MAAKmrC,IAAIz9B,MAAM7F,MAAS7H,KAAKsG,MAAMgN,MAAQL,EAAW,MAO5D,MAFAjT,MAAKw5B,WAAW/W,SAChBziB,KAAKy5B,YAAYhX,SACVwnB,GAQTjnC,EAAUkR,UAAU6lC,aAAe,WAGjC,GADAn5C,EAAQ0Q,gBAAgBtR,KAAKwsC,aACL,GAApBxsC,KAAKsG,MAAMgN,OAAgC,MAAlBtT,KAAK22B,UAAmB,CACnD,GAAIjkB,GAAO5M,EACPm0C,KACAC,KACAC,KACAC,GAAe,EAGf1F,IACJ,KAAK,GAAIzb,KAAWj5B,MAAK+0B,OACnB/0B,KAAK+0B,OAAO3uB,eAAe6yB,KAC7BvmB,EAAQ1S,KAAK+0B,OAAOkE,GACC,GAAjBvmB,EAAM+W,SAAgE5iB,SAA5C7G,KAAKkP,QAAQ6lB,OAAOsE,WAAWJ,IAAqE,GAA3Cj5B,KAAKkP,QAAQ6lB,OAAOsE,WAAWJ,IACpHyb,EAASnsC,KAAK0wB,GAIpB,IAAIyb,EAASzuC,OAAS,EAAG,CAEvB,GAAIo0C,GAAUr6C,KAAKu1B,KAAK50B,KAAKy1B,cAAcp2B,KAAKu1B,KAAKC,SAAS91B,KAAK4T,OAC/DgnC,EAAUt6C,KAAKu1B,KAAK50B,KAAKy1B,aAAa,EAAIp2B,KAAKu1B,KAAKC,SAAS91B,KAAK4T,OAClEsjB,IAQJ,KANA52B,KAAKu6C,iBAAiB7F,EAAU9d,EAAYyjB,EAASC,GAGrDt6C,KAAKw6C,eAAe9F,EAAU9d,GAGzB9wB,EAAI,EAAGA,EAAI4uC,EAASzuC,OAAQH,IAC/Bm0C,EAAsBvF,EAAS5uC,IAAM9F,KAAKy6C,qBAAqB7jB,EAAW8d,EAAS5uC,IAIrF9F,MAAK06C,YAAYhG,EAAUuF,EAAuBE,GAIlDC,EAAep6C,KAAK26C,aAAajG,EAAUyF,EAC3C,IAAIS,GAAa,CACjB,IAAoB,GAAhBR,GAAwBp6C,KAAKw5C,QAAUoB,EAKzC,MAJAh6C,GAAQ+Q,gBAAgB3R,KAAKwsC,aAC7BxsC,KAAKo5C,oBAAqB,EAC1Bp5C,KAAKw5C,UACLx5C,KAAKu1B,KAAKE,QAAQhH,KAAK,WAChB,CAUP,KAPIzuB,KAAKw5C,QAAUoB,GACjB/f,QAAQtG,IAAI,6EAEdv0B,KAAKw5C,QAAU,EACfx5C,KAAKo5C,oBAAqB,EAGrBtzC,EAAI,EAAGA,EAAI4uC,EAASzuC,OAAQH,IAC/B4M,EAAQ1S,KAAK+0B,OAAO2f,EAAS5uC,IAC7Bo0C,EAAmBxF,EAAS5uC,IAAM9F,KAAK66C,qBAAqBjkB,EAAW8d,EAAS5uC,IAAK4M,EAIvF,KAAK5M,EAAI,EAAGA,EAAI4uC,EAASzuC,OAAQH,IAC/B4M,EAAQ1S,KAAK+0B,OAAO2f,EAAS5uC,IACF,OAAvB4M,EAAMxD,QAAQxB,OAChBgF,EAAM0+B,KAAK8I,EAAmBxF,EAAS5uC,IAAK4M,EAAO1S,KAAKqxC,UAG5DoI,GAAkBrI,KAAKsD,EAAUwF,EAAoBl6C,KAAKqxC,YAOhE,MADAzwC,GAAQ+Q,gBAAgB3R,KAAKwsC,cACtB,GAiBTxpC,EAAUkR,UAAUqmC,iBAAmB,SAAU7F,EAAU9d,EAAYyjB,EAASC,GAC9E,GAAI5nC,GAAO5M,EAAG2mB,EAAG3c,CACjB,IAAI4kC,EAASzuC,OAAS,EACpB,IAAKH,EAAI,EAAGA,EAAI4uC,EAASzuC,OAAQH,IAAK,CACpC4M,EAAQ1S,KAAK+0B,OAAO2f,EAAS5uC,IAC7B8wB,EAAW8d,EAAS5uC,MACpB,IAAIg1C,GAAgBlkB,EAAW8d,EAAS5uC,GAExC,IAA0B,GAAtB4M,EAAMxD,QAAQgI,KAAc,CAC9B,GAAI6jC,GAAQv2C,KAAKJ,IAAI,EAAGzD,EAAKqP,kBAAkB0C,EAAMikB,UAAW0jB,EAAS,IAAK,UAC9E,KAAK5tB,EAAIsuB,EAAOtuB,EAAI/Z,EAAMikB,UAAU1wB,OAAQwmB,IAE1C,GADA3c,EAAO4C,EAAMikB,UAAUlK,GACV5lB,SAATiJ,EAAoB,CACtB,GAAIA,EAAK0C,EAAI8nC,EAAS,CACpBQ,EAAcvyC,KAAKuH,EACnB,OAGAgrC,EAAcvyC,KAAKuH,QAMzB,KAAK2c,EAAI,EAAGA,EAAI/Z,EAAMikB,UAAU1wB,OAAQwmB,IACtC3c,EAAO4C,EAAMikB,UAAUlK,GACV5lB,SAATiJ,GACEA,EAAK0C,EAAI6nC,GAAWvqC,EAAK0C,EAAI8nC,GAC/BQ,EAAcvyC,KAAKuH,KAgBjC9M,EAAUkR,UAAUsmC,eAAiB,SAAU9F,EAAU9d,GACvD,GAAIlkB,EACJ,IAAIgiC,EAASzuC,OAAS,EACpB,IAAK,GAAIH,GAAI,EAAGA,EAAI4uC,EAASzuC,OAAQH,IAEnC,GADA4M,EAAQ1S,KAAK+0B,OAAO2f,EAAS5uC,IACC,GAA1B4M,EAAMxD,QAAQ4pC,SAAkB,CAClC,GAAIgC,GAAgBlkB,EAAW8d,EAAS5uC,GACxC,IAAIg1C,EAAc70C,OAAS,EAAG,CAC5B,GAAI+0C,GAAY,EACZC,EAAiBH,EAAc70C,OAI/Bi1C,EAAYl7C,KAAKu1B,KAAK50B,KAAKq1B,eAAe8kB,EAAcA,EAAc70C,OAAS,GAAGuM,GAAKxS,KAAKu1B,KAAK50B,KAAKq1B,eAAe8kB,EAAc,GAAGtoC,GACtI2oC,EAAiBF,EAAiBC,CACtCF,GAAYx2C,KAAKL,IAAIK,KAAK42C,KAAK,GAAMH,GAAiBz2C,KAAKJ,IAAI,EAAGI,KAAK+pB,MAAM4sB,IAG7E,KAAK,GADDE,MACK5uB,EAAI,EAAOwuB,EAAJxuB,EAAoBA,GAAKuuB,EACvCK,EAAY9yC,KAAKuyC,EAAcruB,GAGjCmK,GAAW8d,EAAS5uC,IAAMu1C,KAgBpCr4C,EAAUkR,UAAUwmC,YAAc,SAAUhG,EAAU9d,EAAYujB,GAChE,GAAIhJ,GAAWz+B,EAAO5M,EAGlBoJ,EAFAosC,KACAC,IAEJ,IAAI7G,EAASzuC,OAAS,EAAG,CACvB,IAAKH,EAAI,EAAGA,EAAI4uC,EAASzuC,OAAQH,IAC/BqrC,EAAYva,EAAW8d,EAAS5uC,IAChCoJ,EAAUlP,KAAK+0B,OAAO2f,EAAS5uC,IAAIoJ,QAC/BiiC,EAAUlrC,OAAS,IACrByM,EAAQ1S,KAAK+0B,OAAO2f,EAAS5uC,IAES,SAAlCoJ,EAAQ8pC,SAASC,eAA6C,OAAjB/pC,EAAQxB,MACvB,QAA5BwB,EAAQ+hC,iBAA6BqK,EAAuBA,EAAoBvmC,OAAOrC,EAAMw+B,UAAUC,IAClEoK,EAAuBA,EAAqBxmC,OAAOrC,EAAMw+B,UAAUC,IAG5GgJ,EAAYzF,EAAS5uC,IAAM4M,EAAMw+B,UAAUC,EAAUuD,EAAS5uC,IAMpE2zC,GAAkB+B,oBAAoBF,EAAsBnB,EAAazF,EAAU,iBAAmB,QACtG+E,EAAkB+B,oBAAoBD,EAAsBpB,EAAazF,EAAU,kBAAmB,WAW1G1xC,EAAUkR,UAAUymC,aAAe,SAAUjG,EAAUyF,GACrD,GAGoEsB,GAAQC,EAHxEzR,GAAU,EACV0R,GAAgB,EAChBC,GAAiB,EACjBC,EAAU,IAAKC,EAAW,IAAKC,EAAU,KAAMC,EAAW,IAE9D,IAAItH,EAASzuC,OAAS,EAAG,CAEvB,IAAK,GAAIH,GAAI,EAAGA,EAAI4uC,EAASzuC,OAAQH,IAAK,CACxC,GAAI4M,GAAQ1S,KAAK+0B,OAAO2f,EAAS5uC,GAC7B4M,IAA2C,SAAlCA,EAAMxD,QAAQ+hC,kBACzB0K,GAAgB,EAChBE,EAAU,EACVE,EAAU,GAEHrpC,GAASA,EAAMxD,QAAQ+hC,mBAC9B2K,GAAiB,EACjBE,EAAW,EACXE,EAAW,GAKf,IAAK,GAAIl2C,GAAI,EAAGA,EAAI4uC,EAASzuC,OAAQH,IAC/Bq0C,EAAY/zC,eAAesuC,EAAS5uC,KAClCq0C,EAAYzF,EAAS5uC,IAAIm2C,UAAW,IACtCR,EAAStB,EAAYzF,EAAS5uC,IAAI3B,IAClCu3C,EAASvB,EAAYzF,EAAS5uC,IAAI1B,IAEe,SAA7C+1C,EAAYzF,EAAS5uC,IAAImrC,kBAC3B0K,GAAgB,EAChBE,EAAUA,EAAUJ,EAASA,EAASI,EACtCE,EAAoBL,EAAVK,EAAmBL,EAASK,IAGtCH,GAAiB,EACjBE,EAAWA,EAAWL,EAASA,EAASK,EACxCE,EAAsBN,EAAXM,EAAoBN,EAASM,GAM3B,IAAjBL,GACF37C,KAAKs5B,UAAUnF,SAAS0nB,EAASE,GAEb,GAAlBH,GACF57C,KAAKu5B,WAAWpF,SAAS2nB,EAAUE,GAoCvC,MAjCA/R,GAAUjqC,KAAKk8C,qBAAqBP,EAAgB37C,KAAKs5B,YAAe2Q,EACxEA,EAAUjqC,KAAKk8C,qBAAqBN,EAAgB57C,KAAKu5B,aAAe0Q,EAElD,GAAlB2R,GAA2C,GAAjBD,GAC5B37C,KAAKs5B,UAAU6iB,WAAY,EAC3Bn8C,KAAKu5B,WAAW4iB,WAAY,IAG5Bn8C,KAAKs5B,UAAU6iB,WAAY,EAC3Bn8C,KAAKu5B,WAAW4iB,WAAY,GAE9Bn8C,KAAKu5B,WAAWgT,QAAUoP,EACI,GAA1B37C,KAAKu5B,WAAWgT,QACI,GAAlBqP,EAAyB57C,KAAKs5B,UAAUgT,WAAatsC,KAAKu5B,WAAWjmB,MAC5CtT,KAAKs5B,UAAUgT,WAAa,EAEzDrC,EAAUjqC,KAAKs5B,UAAU7W,UAAYwnB,EACrCjqC,KAAKu5B,WAAW6S,iBAAmBpsC,KAAKs5B,UAAU6S,WAClDnsC,KAAKu5B,WAAW8S,aAAersC,KAAKs5B,UAAU+S,aAC9CpC,EAAUjqC,KAAKu5B,WAAW9W,UAAYwnB,GAGtCA,EAAUjqC,KAAKu5B,WAAW9W,UAAYwnB,EAIE,IAAtCyK,EAAS1tC,QAAQ,mBACnB0tC,EAAS/rC,OAAO+rC,EAAS1tC,QAAQ,kBAAkB,GAEV,IAAvC0tC,EAAS1tC,QAAQ,oBACnB0tC,EAAS/rC,OAAO+rC,EAAS1tC,QAAQ,mBAAmB,GAG/CijC,GAYTjnC,EAAUkR,UAAUgoC,qBAAuB,SAAUE,EAAUrZ,GAC7D,GAAI7B,IAAU,CAad,OAZgB,IAAZkb,EACErZ,EAAKpS,IAAIrQ,MAAMnW,YAA6B,GAAf44B,EAAKrJ,SACpCqJ,EAAKiE,OACL9F,GAAU,GAIP6B,EAAKpS,IAAIrQ,MAAMnW,YAA6B,GAAf44B,EAAKrJ,SACrCqJ,EAAKkE,OACL/F,GAAU,GAGPA,GAaTl+B,EAAUkR,UAAUumC,qBAAuB,SAAU4B,GAKnD,IAAK,GAHDC,GAAQC,EADRC,KAEA1mB,EAAW91B,KAAKu1B,KAAK50B,KAAKm1B,SAErBhwB,EAAI,EAAGA,EAAIu2C,EAAWp2C,OAAQH,IACrCw2C,EAASxmB,EAASumB,EAAWv2C,GAAG0M,GAAKxS,KAAKsG,MAAMgN,MAChDipC,EAASF,EAAWv2C,GAAG2M,EACvB+pC,EAAcj0C,MAAMiK,EAAG8pC,EAAQ7pC,EAAG8pC,GAGpC,OAAOC,IAcTx5C,EAAUkR,UAAU2mC,qBAAuB,SAAUwB,EAAY3pC,GAC/D,GACI4pC,GAAQC,EADRC,KAEA1mB,EAAW91B,KAAKu1B,KAAK50B,KAAKm1B,SAC1BiN,EAAO/iC,KAAKs5B,UACZmjB,EAAYx4C,OAAOjE,KAAKmrC,IAAIz9B,MAAM6F,OAAOtI,QAAQ,KAAK,IACpB,UAAlCyH,EAAMxD,QAAQ+hC,mBAChBlO,EAAO/iC,KAAKu5B,WAGd,KAAK,GAAIzzB,GAAI,EAAGA,EAAIu2C,EAAWp2C,OAAQH,IAAK,CAC1C,GAAI42C,EAOJA,GAAaL,EAAWv2C,GAAGkN,MAAQqpC,EAAWv2C,GAAGkN,MAAQ,KACzDspC,EAASxmB,EAASumB,EAAWv2C,GAAG0M,GAAKxS,KAAKsG,MAAMgN,MAChDipC,EAAS/3C,KAAK+pB,MAAMwU,EAAK+L,aAAauN,EAAWv2C,GAAG2M,IACpD+pC,EAAcj0C,MAAMiK,EAAG8pC,EAAQ7pC,EAAG8pC,EAAQvpC,MAAM0pC,IAKlD,MAFAhqC,GAAMy9B,gBAAgB3rC,KAAKL,IAAIs4C,EAAW1Z,EAAK+L,aAAa,KAErD0N,GAIT38C,EAAOD,QAAUoD,GAKb,SAASnD,EAAQD,EAASM,GAgB9B,QAAS+C,GAAUsyB,EAAMrmB,GACvBlP,KAAK2wB,KACHoI,WAAY,KACZgT,SACA4Q,cACAC,cACAnrC,WACEs6B,SACA4Q,cACAC,gBAGJ58C,KAAKsG,OACHgwB,OACEjmB,MAAO,EACPC,IAAK,EACL8sB,YAAa,GAEfyf,QAAS,GAGX78C,KAAKi1B,gBACHE,YAAa,SACbkW,iBAAiB,EACjBC,iBAAiB,EACjB/H,OAAQ,KACR1N,SAAU,MAEZ71B,KAAKkP,QAAUvO,EAAKgF,UAAW3F,KAAKi1B,gBAEpCj1B,KAAKu1B,KAAOA,EAGZv1B,KAAKs1B,UAELt1B,KAAKiU,WAAW/E,GAjDlB,GAAIvO,GAAOT,EAAoB,GAC3BqC,EAAYrC,EAAoB,IAChC6B,EAAW7B,EAAoB,IAC/ByB,EAAWzB,EAAoB,IAC/B2D,EAAS3D,EAAoB,GAgDjC+C,GAASiR,UAAY,GAAI3R,GAUzBU,EAASiR,UAAUD,WAAa,SAAS/E,GACnCA,IAEFvO,EAAK0F,iBACH,kBACA,kBACA,cACA,SACA,YACCrG,KAAKkP,QAASA,GAEb,eAAiBA,KACgB,gBAAxBA,GAAQimB,YACjBn1B,KAAKkP,QAAQimB,YAAcjmB,EAAQimB,YAEG,gBAAxBjmB,GAAQimB,aAA4B,QAAUjmB,GAAQimB,cACpEn1B,KAAKkP,QAAQimB,YAAcjmB,EAAQimB,YAAY4N,OAM/C,UAAY7zB,KACe,kBAAlBrL,GAAOuiC,OAEhBviC,EAAOuiC,OAAOl3B,EAAQk3B,QAGtBviC,EAAOwiC,KAAKn3B,EAAQk3B,WAS5BnjC,EAASiR,UAAUohB,QAAU,WAC3Bt1B,KAAK2wB,IAAIoI,WAAa/mB,SAASM,cAAc,OAC7CtS,KAAK2wB,IAAI9jB,WAAamF,SAASM,cAAc,OAE7CtS,KAAK2wB,IAAIoI,WAAW3wB,UAAY,sBAChCpI,KAAK2wB,IAAI9jB,WAAWzE,UAAY,uBAMlCnF,EAASiR,UAAUG,QAAU,WAEvBrU,KAAK2wB,IAAIoI,WAAW5uB,YACtBnK,KAAK2wB,IAAIoI,WAAW5uB,WAAWyH,YAAY5R,KAAK2wB,IAAIoI,YAElD/4B,KAAK2wB,IAAI9jB,WAAW1C,YACtBnK,KAAK2wB,IAAI9jB,WAAW1C,WAAWyH,YAAY5R,KAAK2wB,IAAI9jB,YAGtD7M,KAAKu1B,KAAO,MAOdtyB,EAASiR,UAAUuO,OAAS,WAC1B,GAAIvT,GAAUlP,KAAKkP,QACf5I,EAAQtG,KAAKsG,MACbyyB,EAAa/4B,KAAK2wB,IAAIoI,WACtBlsB,EAAa7M,KAAK2wB,IAAI9jB,WAGtBxC,EAAiC,OAAvB6E,EAAQimB,YAAwBn1B,KAAKu1B,KAAK5E,IAAI1oB,IAAMjI,KAAKu1B,KAAK5E,IAAIrM,OAC5Ew4B,EAAiB/jB,EAAW5uB,aAAeE,CAG/CrK,MAAKytC,oBAGL,IAAIpC,GAAkBrrC,KAAKkP,QAAQm8B,gBAC/BC,EAAkBtrC,KAAKkP,QAAQo8B,eAGnChlC,GAAMonC,iBAAmBrC,EAAkB/kC,EAAMqnC,gBAAkB,EACnErnC,EAAMsnC,iBAAmBtC,EAAkBhlC,EAAMunC,gBAAkB,EACnEvnC,EAAMiN,OAASjN,EAAMonC,iBAAmBpnC,EAAMsnC,iBAC9CtnC,EAAMgN,MAAQylB,EAAW/H,YAEzB1qB,EAAMynC,gBAAkB/tC,KAAKu1B,KAAKC,SAAS91B,KAAK6T,OAASjN,EAAMsnC,kBACnC,OAAvB1+B,EAAQimB,YAAuBn1B,KAAKu1B,KAAKC,SAASlR,OAAO/Q,OAASvT,KAAKu1B,KAAKC,SAASvtB,IAAIsL,QAC9FjN,EAAMwnC,eAAiB,EACvBxnC,EAAM2nC,gBAAkB3nC,EAAMynC,gBAAkBznC,EAAMsnC,iBACtDtnC,EAAM0nC,eAAiB,CAGvB,IAAI+O,GAAwBhkB,EAAWikB,YACnCC,EAAwBpwC,EAAWmwC,WAsBvC,OArBAjkB,GAAW5uB,YAAc4uB,EAAW5uB,WAAWyH,YAAYmnB,GAC3DlsB,EAAW1C,YAAc0C,EAAW1C,WAAWyH,YAAY/E,GAE3DksB,EAAWrrB,MAAM6F,OAASvT,KAAKsG,MAAMiN,OAAS,KAE9CvT,KAAKk9C,iBAGDH,EACF1yC,EAAOgI,aAAa0mB,EAAYgkB,GAGhC1yC,EAAO6H,YAAY6mB,GAEjBkkB,EACFj9C,KAAKu1B,KAAK5E,IAAI2Z,mBAAmBj4B,aAAaxF,EAAYowC,GAG1Dj9C,KAAKu1B,KAAK5E,IAAI2Z,mBAAmBp4B,YAAYrF,GAGxC7M,KAAKgqC,cAAgB8S,GAO9B75C,EAASiR,UAAUgpC,eAAiB,WAClC,GAAI/nB,GAAcn1B,KAAKkP,QAAQimB,YAG3B9kB,EAAQ1P,EAAKuG,QAAQlH,KAAKu1B,KAAKe,MAAMjmB,MAAO,UAC5CC,EAAM3P,EAAKuG,QAAQlH,KAAKu1B,KAAKe,MAAMhmB,IAAK,UACxC6sC,EAAgBn9C,KAAKu1B,KAAK50B,KAAKu1B,OAA2C,GAAnCl2B,KAAKsG,MAAM8oC,gBAAkB,KAAS/nC,UAC7E+1B,EAAc+f,EAAgBx7C,EAASk7B,wBAAwB78B,KAAKu1B,KAAKI,YAAa31B,KAAKu1B,KAAKe,MAAO6mB,EAC3G/f,IAAep9B,KAAKu1B,KAAK50B,KAAKu1B,OAAO,GAAG7uB,SAExC,IAAI8hB,GAAO,GAAIpnB,GAAS,GAAI6C,MAAKyL,GAAQ,GAAIzL,MAAK0L,GAAM8sB,EAAap9B,KAAKu1B,KAAKI,YAC3E31B,MAAKkP,QAAQq0B,QACfpa,EAAK6a,UAAUhkC,KAAKkP,QAAQq0B,QAE1BvjC,KAAKkP,QAAQ2mB,UACf1M,EAAK8b,SAASjlC,KAAKkP,QAAQ2mB,UAE7B71B,KAAKmpB,KAAOA,CAKZ,IAAIwH,GAAM3wB,KAAK2wB,GACfA,GAAIlf,UAAUs6B,MAAQpb,EAAIob,MAC1Bpb,EAAIlf,UAAUkrC,WAAahsB,EAAIgsB,WAC/BhsB,EAAIlf,UAAUmrC,WAAajsB,EAAIisB,WAC/BjsB,EAAIob,SACJpb,EAAIgsB,cACJhsB,EAAIisB,aAEJ,IAAIQ,GAEAle,EAGAme,EAGAj1C,EAPAoK,EAAI,EAEJ8qC,EAAQ,EACRhqC,EAAQ,EAERiqC,EAAmB12C,OACnBzC,EAAM,CAIV,KADA+kB,EAAK+a,QACE/a,EAAK0V,WAAmB,IAANz6B,GACvBA,IAEAg5C,EAAMj0B,EAAKC,aACX8V,EAAU/V,EAAK+V,UACf92B,EAAY+gB,EAAK0c,eAEjByX,EAAQ9qC,EACRA,EAAIxS,KAAKu1B,KAAK50B,KAAKm1B,SAASsnB,GAC5B9pC,EAAQd,EAAI8qC,EACRD,IACFA,EAAS3vC,MAAM4F,MAAQA,EAAQ,MAG7BtT,KAAKkP,QAAQm8B,iBACfrrC,KAAKw9C,kBAAkBhrC,EAAG2W,EAAKwc,gBAAiBxQ,EAAa/sB,GAG3D82B,GAAWl/B,KAAKkP,QAAQo8B,iBACtB94B,EAAI,IACkB3L,QAApB02C,IACFA,EAAmB/qC,GAErBxS,KAAKy9C,kBAAkBjrC,EAAG2W,EAAKyc,gBAAiBzQ,EAAa/sB,IAE/Di1C,EAAWr9C,KAAK09C,kBAAkBlrC,EAAG2iB,EAAa/sB,IAGlDi1C,EAAWr9C,KAAK29C,kBAAkBnrC,EAAG2iB,EAAa/sB,GAGpD+gB,EAAKE,MAIP,IAAIrpB,KAAKkP,QAAQo8B,gBAAiB,CAChC,GAAIsS,GAAW59C,KAAKu1B,KAAK50B,KAAKu1B,OAAO,GACjC2nB,EAAW10B,EAAKyc,cAAcgY,GAC9BE,EAAYD,EAAS53C,QAAUjG,KAAKsG,MAAM6oC,gBAAkB,IAAM,IAE9CtoC,QAApB02C,GAA6CA,EAAZO,IACnC99C,KAAKy9C,kBAAkB,EAAGI,EAAU1oB,EAAa/sB,GAKrDzH,EAAKiI,QAAQ5I,KAAK2wB,IAAIlf,UAAW,SAAUssC,GACzC,KAAOA,EAAI93C,QAAQ,CACjB,GAAI0B,GAAOo2C,EAAIC,KACXr2C,IAAQA,EAAKwC,YACfxC,EAAKwC,WAAWyH,YAAYjK,OAcpC1E,EAASiR,UAAUspC,kBAAoB,SAAUhrC,EAAG8X,EAAM6K,EAAa/sB,GAErE,GAAI4K,GAAQhT,KAAK2wB,IAAIlf,UAAUmrC,WAAW7qC,OAE1C,KAAKiB,EAAO,CAEV,GAAIG,GAAUnB,SAASs9B,eAAe,GACtCt8B,GAAQhB,SAASM,cAAc,OAC/BU,EAAMd,YAAYiB,GAClBnT,KAAK2wB,IAAIoI,WAAW7mB,YAAYc,GAElChT,KAAK2wB,IAAIisB,WAAWr0C,KAAKyK,GAEzBA,EAAMirC,WAAW,GAAGC,UAAY5zB,EAEhCtX,EAAMtF,MAAMzF,IAAsB,OAAfktB,EAAyBn1B,KAAKsG,MAAMsnC,iBAAmB,KAAQ,IAClF56B,EAAMtF,MAAM7F,KAAO2K,EAAI,KACvBQ,EAAM5K,UAAY,cAAgBA,GAYpCnF,EAASiR,UAAUupC,kBAAoB,SAAUjrC,EAAG8X,EAAM6K,EAAa/sB,GAErE,GAAI4K,GAAQhT,KAAK2wB,IAAIlf,UAAUkrC,WAAW5qC,OAE1C,KAAKiB,EAAO,CAEV,GAAIG,GAAUnB,SAASs9B,eAAehlB,EACtCtX,GAAQhB,SAASM,cAAc,OAC/BU,EAAMd,YAAYiB,GAClBnT,KAAK2wB,IAAIoI,WAAW7mB,YAAYc,GAElChT,KAAK2wB,IAAIgsB,WAAWp0C,KAAKyK,GAEzBA,EAAMirC,WAAW,GAAGC,UAAY5zB,EAChCtX,EAAM5K,UAAY,cAAgBA,EAGlC4K,EAAMtF,MAAMzF,IAAsB,OAAfktB,EAAwB,IAAOn1B,KAAKsG,MAAMonC,iBAAoB,KACjF16B,EAAMtF,MAAM7F,KAAO2K,EAAI,MAWzBvP,EAASiR,UAAUypC,kBAAoB,SAAUnrC,EAAG2iB,EAAa/sB,GAE/D,GAAIqoB,GAAOzwB,KAAK2wB,IAAIlf,UAAUs6B,MAAMh6B,OAC/B0e,KAEHA,EAAOze,SAASM,cAAc,OAC9BtS,KAAK2wB,IAAI9jB,WAAWqF,YAAYue,IAElCzwB,KAAK2wB,IAAIob,MAAMxjC,KAAKkoB,EAEpB,IAAInqB,GAAQtG,KAAKsG,KAYjB,OAXmB,OAAf6uB,EACF1E,EAAK/iB,MAAMzF,IAAM3B,EAAMsnC,iBAAmB,KAG1Cnd,EAAK/iB,MAAMzF,IAAMjI,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAAS,KAEnDkd,EAAK/iB,MAAM6F,OAASjN,EAAMynC,gBAAkB,KAC5Ctd,EAAK/iB,MAAM7F,KAAQ2K,EAAIlM,EAAMwnC,eAAiB,EAAK,KAEnDrd,EAAKroB,UAAY,uBAAyBA,EAEnCqoB,GAWTxtB,EAASiR,UAAUwpC,kBAAoB,SAAUlrC,EAAG2iB,EAAa/sB,GAE/D,GAAIqoB,GAAOzwB,KAAK2wB,IAAIlf,UAAUs6B,MAAMh6B,OAC/B0e,KAEHA,EAAOze,SAASM,cAAc,OAC9BtS,KAAK2wB,IAAI9jB,WAAWqF,YAAYue,IAElCzwB,KAAK2wB,IAAIob,MAAMxjC,KAAKkoB,EAEpB,IAAInqB,GAAQtG,KAAKsG,KAYjB,OAXmB,OAAf6uB,EACF1E,EAAK/iB,MAAMzF,IAAM,IAGjBwoB,EAAK/iB,MAAMzF,IAAMjI,KAAKu1B,KAAKC,SAASvtB,IAAIsL,OAAS,KAEnDkd,EAAK/iB,MAAM7F,KAAQ2K,EAAIlM,EAAM0nC,eAAiB,EAAK,KACnDvd,EAAK/iB,MAAM6F,OAASjN,EAAM2nC,gBAAkB,KAE5Cxd,EAAKroB,UAAY,uBAAyBA,EAEnCqoB,GAQTxtB,EAASiR,UAAUu5B,mBAAqB,WAKjCztC,KAAK2wB,IAAI4e,mBACZvvC,KAAK2wB,IAAI4e,iBAAmBv9B,SAASM,cAAc,OACnDtS,KAAK2wB,IAAI4e,iBAAiBnnC,UAAY,qBACtCpI,KAAK2wB,IAAI4e,iBAAiB7hC,MAAMkX,SAAW,WAE3C5kB,KAAK2wB,IAAI4e,iBAAiBr9B,YAAYF,SAASs9B,eAAe,MAC9DtvC,KAAK2wB,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAI4e,mBAE3CvvC,KAAKsG,MAAMqnC,gBAAkB3tC,KAAK2wB,IAAI4e,iBAAiB1pB,aACvD7lB,KAAKsG,MAAM8oC,eAAiBpvC,KAAK2wB,IAAI4e,iBAAiB/uB,YAGjDxgB,KAAK2wB,IAAI8e,mBACZzvC,KAAK2wB,IAAI8e,iBAAmBz9B,SAASM,cAAc,OACnDtS,KAAK2wB,IAAI8e,iBAAiBrnC,UAAY,qBACtCpI,KAAK2wB,IAAI8e,iBAAiB/hC,MAAMkX,SAAW,WAE3C5kB,KAAK2wB,IAAI8e,iBAAiBv9B,YAAYF,SAASs9B,eAAe,MAC9DtvC,KAAK2wB,IAAIoI,WAAW7mB,YAAYlS,KAAK2wB,IAAI8e,mBAE3CzvC,KAAKsG,MAAMunC,gBAAkB7tC,KAAK2wB,IAAI8e,iBAAiB5pB,aACvD7lB,KAAKsG,MAAM6oC,eAAiBnvC,KAAK2wB,IAAI8e,iBAAiBjvB,aAGxD3gB,EAAOD,QAAUqD,GAKb,SAASpD,EAAQD,EAASM,GAkC9B,QAASgD,GAASsX,EAAW/G,EAAMvE,GACjC,KAAMlP,eAAgBkD,IACpB,KAAM,IAAIuX,aAAY,mDAGxBza,MAAKm+C,0BACLn+C,KAAKo+C,0BAGLp+C,KAAK0a,iBAAmBF,EAGxBxa,KAAKq+C,kBAAoB,GACzBr+C,KAAKs+C,eAAiB,IAAOt+C,KAAKq+C,kBAClCr+C,KAAKu+C,WAAa,EAClBv+C,KAAKw+C,YAAc,EACnBx+C,KAAKy+C,gBAAiB,EACtBz+C,KAAK0+C,wBAA0B,GAE/B1+C,KAAK2+C,cAAe,EAEpB3+C,KAAK4+C,kBAAoB5qC,IAAI,KAAK6qC,KAAK,KAAKC,SAAS,KAAKC,QAAQ,KAAKC,IAAI,KAE3E,IAAIC,GAAwB,SAAU96C,EAAIC,EAAIC,EAAMC,GAClD,GAAIF,GAAOD,EACT,MAAO,EAGP,IAAII,GAAQ,GAAKH,EAAMD,EACvB,OAAOK,MAAKJ,IAAI,GAAGE,EAAQH,GAAKI,GAIpCvE,MAAKi1B,gBACHiqB,OACED,sBAAuBA,EACvBE,KAAM,EACNC,UAAW,GACXC,UAAW,GACX/yB,OAAQ,GACRgzB,MAAO,UACPC,MAAO14C,OACPqhB,SAAU,GACVC,SAAU,GACVq3B,UAAW,QACXC,SAAU,GACVC,SAAU,UACVC,SAAU94C,OACV+4C,gBAAiB,EACjBC,gBAAiB,UACjBC,kBAAmB,EACnBC,oBAAoB,EACpBC,YAAa,GACbC,YAAa,GACbC,mBAAoB,GACpBC,MAAO,GACP50C,OACIuB,OAAQ,UACRD,WAAY,UACdE,WACED,OAAQ,UACRD,WAAY,WAEdG,OACEF,OAAQ,UACRD,WAAY,YAGhB6F,MAAO7L,OACPma,YAAa,EACbo/B,oBAAqBv5C,QAEvBw5C,OACEpB,sBAAuBA,EACvB/2B,SAAU,EACVC,SAAU,GACV7U,MAAO,EACPgtC,yBAA0B,EAC1BC,WAAY,IACZ7yC,MAAO,OACPnC,OACEA,MAAM,UACNwB,UAAU,UACVC,MAAO,WAETxB,QAAQ,EACRg0C,UAAW,UACXC,SAAU,GACVC,SAAU,QACVC,SAAU,QACVC,gBAAiB,EACjBC,gBAAiB,QACjBW,eAAe,aACfC,iBAAkB,EAClBC,MACEz6C,OAAQ,GACR06C,IAAK,EACLC,UAAW/5C,QAEbg6C,aAAc,OACdC,cAAc,GAEhBC,kBAAiB,EACjBC,SACEC,WACE9xC,SAAS,EACT+xC,cAAe,EACfC,sBAAuB,KACvBC,eAAgB,GAChBC,aAAc,GACdC,eAAgB,IAChBC,QAAS,KAEXC,WACEJ,eAAgB,EAChBC,aAAc,IACdC,eAAgB;AAChBG,aAAc,IACdF,QAAS,KAEXG,uBACEvyC,SAAS,EACTiyC,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXA,QAAS,KACTH,eAAgB,KAChBC,aAAc,KACdC,eAAgB,MAElBK,YACExyC,SAAS,EACTyyC,gBAAiB,IACjBC,iBAAiB,IACjBC,cAAc,IACdC,eAAgB,GAChBC,qBAAsB,GACtBC,gBAAiB,IACjBC,oBAAqB,GACrBC,mBAAoB,EACpBC,YAAa,IACbC,mBAAoB,GACpBC,sBAAuB,GACvBC,WAAY,GACZC,aAAclvC,MAAQ,EACRC,OAAQ,EACR+Y,OAAQ,GACtBm2B,sBAAuB,IACvBC,kBAAmB,GACnBC,uBAAwB,EACxBC,eAAe,GAEjBC,YACE1zC,SAAS,GAEX2zC,UACE3zC,SAAS,EACT4zC,OAAQvwC,EAAG,GAAIC,EAAG,GAAIyvB,KAAM,KAC5B8gB,cAAc,GAEhBC,kBACE9zC,SAAS,EACT+zC,kBAAkB,GAEpBC,oBACEh0C,SAAQ,EACRi0C,gBAAiB,IACjBC,YAAa,IACbnmB,UAAW,KACXomB,OAAQ,WAEVC,wBAAwB,EACxBC,cACEr0C,SAAS,EACTs0C,SAAS,EACTt8C,KAAM,aACNu8C,UAAW,IAEbC,YAAc,GACdC,YAAc,GACdC,WAAW,EACXC,wBAAyB,IACzBC,uBAAuB,EACvB3d,OAAQ,KACRiE,QAASA,EACTjjB,SACE1N,MAAO,IACP8lC,UAAW,QACXC,SAAU,GACVC,SAAU,UACVn0C,OACEuB,OAAQ,OACRD,WAAY,YAGhBm3C,aAAa,EACbC,WAAW,EACXtkB,UAAU,EACV3yB,OAAO,EACPk3C,iBAAiB,EACjBC,iBAAiB,EACjB7wC,MAAQ,OACRC,OAAS,OACTogC,YAAY,EACZyQ,kBAAkB,GAEpBpkD,KAAKqkD,UAAY1jD,EAAKgF,UAAW3F,KAAKi1B,gBACtCj1B,KAAKskD,WAAa,EAGlBtkD,KAAKukD,UAAYrF,SAASmB,UAC1BrgD,KAAKwkD,oBAAqB,EAC1BxkD,KAAKykD,qBACLzkD,KAAK0kD,uBAGL1kD,KAAK2kD,eAAiB,EAAE3kD,KAAKq+C,kBAC7Br+C,KAAK4kD,wBAA0B,iBAC/B5kD,KAAK6kD,WAAY,EACjB7kD,KAAK8kD,WAAa,EAClB9kD,KAAK+kD,YAAc,EACnB/kD,KAAKglD,YAAc,EACnBhlD,KAAKilD,kBAAoB,EACzBjlD,KAAKklD,kBAAoB,EACzBllD,KAAKmlD,eAAiB,KACtBnlD,KAAKolD,mBAAqB,KAC1BplD,KAAKqlD,UAAY,EACjBrlD,KAAKslD,iBAAkB,CAGvB,IAAIniD,GAAUnD,IACdA,MAAK+0B,OAAS,GAAI1xB,GAClBrD,KAAKulD,OAAS,GAAIjiD,GAClBtD,KAAKulD,OAAOC,kBAAkB,SAAUC,GACtCtiD,EAAQuiD,mBAIV1lD,KAAK2lD,WAAa,EAClB3lD,KAAK4lD,WAAa,EAClB5lD,KAAK6lD,cAAgB,EAIrB7lD,KAAK8lD,qBAEL9lD,KAAKs1B,UAELt1B,KAAK+lD,oBAEL/lD,KAAKgmD,qBAELhmD,KAAKimD,uBAELjmD,KAAKkmD,uBAILlmD,KAAKmmD,gBAAgBnmD,KAAKsgB,MAAME,YAAc,EAAGxgB,KAAKsgB,MAAMuF,aAAe,GAC3E7lB,KAAKie,UAAU,GACfje,KAAKiU,WAAW/E,GAGhBlP,KAAKomD,yBAA0B,EAC/BpmD,KAAKqmD,mBACLrmD,KAAKsmD,sBAAuB,EAC5BtmD,KAAKumD,YAAa,EAClBvmD,KAAK8jD,wBAA0B,KAC/B9jD,KAAKwmD,eAAgB,EAGrBxmD,KAAKymD,oBACLzmD,KAAK0mD,0BACL1mD,KAAK2mD,eACL3mD,KAAKk/C,SACLl/C,KAAKqgD,SAGLrgD,KAAK4mD,eAAqBp0C,EAAK,EAAEC,EAAK,GACtCzS,KAAK6mD,mBAAqBr0C,EAAK,EAAEC,EAAK,GACtCzS,KAAK8mD,iBAAmBt0C,EAAK,EAAEC,EAAK,GACpCzS,KAAK+mD,cACL/mD,KAAKuE,MAAQ,EACbvE,KAAKgnD,cAAgBhnD,KAAKuE,MAG1BvE,KAAKinD,UAAY,KACjBjnD,KAAKknD,UAAY,KAGjBlnD,KAAKmnD,gBACHnzC,IAAO,SAAUnK,EAAOgL,GACtB1R,EAAQikD,UAAUvyC,EAAO5S,OACzBkB,EAAQkN,SAEVuF,OAAU,SAAU/L,EAAOgL,GACzB1R,EAAQkkD,aAAaxyC,EAAO5S,OAC5BkB,EAAQkN,SAEVgH,OAAU,SAAUxN,EAAOgL,GACzB1R,EAAQmkD,aAAazyC,EAAO5S,OAC5BkB,EAAQkN,UAGZrQ,KAAKunD,gBACHvzC,IAAO,SAAUnK,EAAOgL,GACtB1R,EAAQqkD,UAAU3yC,EAAO5S,OACzBkB,EAAQkN,SAEVuF,OAAU,SAAU/L,EAAOgL,GACzB1R,EAAQskD,aAAa5yC,EAAO5S,OAC5BkB,EAAQkN,SAEVgH,OAAU,SAAUxN,EAAOgL,GACzB1R,EAAQukD,aAAa7yC,EAAO5S,OAC5BkB,EAAQkN,UAKZrQ,KAAK2nD,QAAS,EACd3nD,KAAK4nD,MAAQ/gD,OAGb7G,KAAKgZ,QAAQvF,EAAKzT,KAAKqkD,UAAU1C,WAAWxyC,SAAWnP,KAAKqkD,UAAUlB,mBAAmBh0C,SAGzFnP,KAAK2+C,cAAe,EAC6B,GAA7C3+C,KAAKqkD,UAAUlB,mBAAmBh0C,QACpCnP,KAAK6nD,2BAI2B,GAA5B7nD,KAAKqkD,UAAUR,WACjB7jD,KAAK8nD,YAAYv3C,SAAS,IAAI,EAAMvQ,KAAKqkD,UAAU1C,WAAWxyC,SAK9DnP,KAAKqkD,UAAU1C,WAAWxyC,SAC5BnP,KAAK+nD,sBAvXT,GAAI/pC,GAAU9d,EAAoB,IAC9BwmC,EAASxmC,EAAoB,IAC7B8nD,EAAW9nD,EAAoB,IAC/BS,EAAOT,EAAoB,GAC3BugC,EAAavgC,EAAoB,IACjCW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BuD,EAAYvD,EAAoB,IAChCwD,EAAcxD,EAAoB,IAClCmD,EAASnD,EAAoB,IAC7BoD,EAASpD,EAAoB,IAC7BqD,EAAOrD,EAAoB,IAC3BkD,EAAOlD,EAAoB,IAC3BsD,EAAQtD,EAAoB,IAC5B+nD,EAAc/nD,EAAoB,IAClCgoD,EAAYhoD,EAAoB,IAChCmqC,EAAUnqC,EAAoB,GAGlCA,GAAoB,IAyWpB8d,EAAQ9a,EAAQgR,WAOhBhR,EAAQgR,UAAUiqC,wBAA0B,WAC1C,GAAIgK,GAAc5+C,UAAUC,UAAU88B,aACtCtmC,MAAKooD,iBAAkB,EACgB,IAAnCD,EAAYnhD,QAAQ,YACtBhH,KAAKooD,iBAAkB,EAEiB,IAAjCD,EAAYnhD,QAAQ,WACvBmhD,EAAYnhD,QAAQ,WAAa,KACnChH,KAAKooD,iBAAkB,IAa7BllD,EAAQgR,UAAUm0C,eAAiB,WAIjC,IAAK,GAHDC,GAAUt2C,SAASu2C,qBAAsB,UAGpCziD,EAAI,EAAGA,EAAIwiD,EAAQriD,OAAQH,IAAK,CACvC,GAAI0iD,GAAMF,EAAQxiD,GAAG0iD,IACjB3jD,EAAQ2jD,GAAO,qBAAqBzjD,KAAKyjD,EAC7C,IAAI3jD,EAEF,MAAO2jD,GAAI/d,UAAU,EAAG+d,EAAIviD,OAASpB,EAAM,GAAGoB,QAIlD,MAAO,OAQT/C,EAAQgR,UAAUu0C,UAAY,SAASC,GACrC,GAAsDC,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,IAAIL,EAAcziD,OAAS,EACzB,IAAK,GAAIH,GAAI,EAAGA,EAAI4iD,EAAcziD,OAAQH,IACxC6iD,EAAO3oD,KAAKk/C,MAAMwJ,EAAc5iD,IAC5BgjD,EAAQH,EAAKK,YAAgB,OAC/BF,EAAOH,EAAKK,YAAYnhD,MAEtBkhD,EAAQJ,EAAKK,YAAiB,QAChCD,EAAOJ,EAAKK,YAAY3gC,OAEtBugC,EAAQD,EAAKK,YAAkB,SACjCJ,EAAOD,EAAKK,YAAY/gD,KAEtB4gD,EAAQF,EAAKK,YAAe,MAC9BH,EAAOF,EAAKK,YAAY1kC,YAK5B,KAAK,GAAI2kC,KAAUjpD,MAAKk/C,MAClBl/C,KAAKk/C,MAAM94C,eAAe6iD,KAC5BN,EAAO3oD,KAAKk/C,MAAM+J,GACdH,EAAQH,EAAKK,YAAgB,OAC/BF,EAAOH,EAAKK,YAAYnhD,MAEtBkhD,EAAQJ,EAAKK,YAAiB,QAChCD,EAAOJ,EAAKK,YAAY3gC,OAEtBugC,EAAQD,EAAKK,YAAkB,SACjCJ,EAAOD,EAAKK,YAAY/gD,KAEtB4gD,EAAQF,EAAKK,YAAe,MAC9BH,EAAOF,EAAKK,YAAY1kC,QAShC,OAHY,MAARwkC,GAAuB,MAARC,GAAwB,KAARH,GAAuB,MAARC,IAChDD,EAAO,EAAGC,EAAO,EAAGC,EAAO,EAAGC,EAAO,IAE/BD,KAAMA,EAAMC,KAAMA,EAAMH,KAAMA,EAAMC,KAAMA,IASpD3lD,EAAQgR,UAAUg1C,YAAc,SAAS5yB,GACvC,OAAQ9jB,EAAI,IAAO8jB,EAAMyyB,KAAOzyB,EAAMwyB,MAC9Br2C,EAAI,IAAO6jB,EAAMuyB,KAAOvyB,EAAMsyB,QAUxC1lD,EAAQgR,UAAU4zC,WAAa,SAAS54C,EAASi6C,EAAaC,GAC5DppD,KAAKi3B,SAAQ,GAEYpwB,SAArBsiD,IAAiCA,GAAc,GAC1BtiD,SAArBuiD,IAAiCA,GAAe,GACpCviD,SAAZqI,IAAwBA,GAAWgwC,WACjBr4C,SAAlBqI,EAAQgwC,QACVhwC,EAAQgwC,SAGV,IAAI5oB,GACA+yB,CAEJ,IAAmB,GAAfF,EAAqB,CAEvB,GAAIG,GAAkB,CACtB,KAAK,GAAIL,KAAUjpD,MAAKk/C,MACtB,GAAIl/C,KAAKk/C,MAAM94C,eAAe6iD,GAAS,CACrC,GAAIN,GAAO3oD,KAAKk/C,MAAM+J,EACS,IAA3BN,EAAKY,qBACPD,GAAmB,GAIzB,GAAIA,EAAkB,GAAMtpD,KAAK2mD,YAAY1gD,OAE3C,WADAjG,MAAK8nD,WAAW54C,GAAQ,EAAMk6C,EAIhC9yB,GAAQt2B,KAAKyoD,UAAUv5C,EAAQgwC,MAE/B,IAAIsK,GAAgBxpD,KAAK2mD,YAAY1gD,MAIjCojD,GAH+B,GAA/BrpD,KAAKqkD,UAAUb,aACwB,GAArCxjD,KAAKqkD,UAAU1C,WAAWxyC,SAC5Bq6C,GAAiBxpD,KAAKqkD,UAAU1C,WAAWC,gBAC/B,UAAY4H,EAAgB,WAAa,SAGzC,QAAUA,EAAgB,QAAU,SAIT,GAArCxpD,KAAKqkD,UAAU1C,WAAWxyC,SAC1Bq6C,GAAiBxpD,KAAKqkD,UAAU1C,WAAWC,gBACjC,YAAc4H,EAAgB,YAAc,cAG5C,YAAcA,EAAgB,aAAe,SAK7D,IAAIC,GAASjlD,KAAKL,IAAInE,KAAKsgB,MAAMC,OAAOC,YAAc,IAAKxgB,KAAKsgB,MAAMC,OAAOsF,aAAe,IAC5FwjC,IAAaI,MAEV,CACHnzB,EAAQt2B,KAAKyoD,UAAUv5C,EAAQgwC,MAC/B,IAAIhE,GAAgD,IAApC12C,KAAKknB,IAAI4K,EAAMyyB,KAAOzyB,EAAMwyB,MACxCY,EAAgD,IAApCllD,KAAKknB,IAAI4K,EAAMuyB,KAAOvyB,EAAMsyB,MAExCe,EAAa3pD,KAAKsgB,MAAMC,OAAOC,YAAe06B,EAC9C0O,EAAa5pD,KAAKsgB,MAAMC,OAAOsF,aAAe6jC,CAClDL,GAA2BO,GAAdD,EAA4BA,EAAaC,EAGpDP,EAAY,IACdA,EAAY,EAId,IAAIt8B,GAAS/sB,KAAKkpD,YAAY5yB,EAC9B,IAAoB,GAAhB8yB,EAAuB,CACzB,GAAIl6C,IAAW0V,SAAUmI,EAAQxoB,MAAO8kD,EAAWQ,UAAW36C,EAC9DlP,MAAK6oB,OAAO3Z,GACZlP,KAAK2nD,QAAS,EACd3nD,KAAKqQ,YAGL0c,GAAOva,GAAK62C,EACZt8B,EAAOta,GAAK42C,EACZt8B,EAAOva,GAAK,GAAMxS,KAAKsgB,MAAMC,OAAOC,YACpCuM,EAAOta,GAAK,GAAMzS,KAAKsgB,MAAMC,OAAOsF,aACpC7lB,KAAKie,UAAUorC,GACfrpD,KAAKmmD,iBAAiBp5B,EAAOva,GAAGua,EAAOta,IAS3CvP,EAAQgR,UAAU41C,qBAAuB,WACvC9pD,KAAK+pD,qBACL,KAAK,GAAIC,KAAOhqD,MAAKk/C,MACfl/C,KAAKk/C,MAAM94C,eAAe4jD,IAC5BhqD,KAAK2mD,YAAYp+C,KAAKyhD,IAiB5B9mD,EAAQgR,UAAU8E,QAAU,SAASvF,EAAM21C,GAWzC,GAVqBviD,SAAjBuiD,IACFA,GAAe,GAIjBppD,KAAKiqD,cAAa,GAGlBjqD,KAAK2+C,cAAe,EAEhBlrC,GAAQA,EAAKid,MAAQjd,EAAKyrC,OAASzrC,EAAK4sC,OAC1C,KAAM,IAAI5lC,aAAY,iGAYxB,IAP+C,GAA3Cza,KAAKqkD,UAAUpB,iBAAiB9zC,SAClCnP,KAAKkqD,wBAIPlqD,KAAKiU,WAAWR,GAAQA,EAAKvE,SAEzBuE,GAAQA,EAAKid,KAEf,GAAGjd,GAAQA,EAAKid,IAAK,CACnB,GAAIy5B,GAAU1mD,EAAU2mD,WAAW32C,EAAKid,IAExC,YADA1wB,MAAKgZ,QAAQmxC,QAIZ,IAAI12C,GAAQA,EAAK42C,OAEpB,GAAG52C,GAAQA,EAAK42C,MAAO,CACrB,GAAIC,GAAY5mD,EAAY6mD,WAAW92C,EAAK42C,MAE5C,YADArqD,MAAKgZ,QAAQsxC,QAKftqD,MAAKwqD,UAAU/2C,GAAQA,EAAKyrC,OAC5Bl/C,KAAKyqD,UAAUh3C,GAAQA,EAAK4sC,MAE9BrgD,MAAK0qD,mBACe,GAAhBtB,IAC+C,GAA7CppD,KAAKqkD,UAAUlB,mBAAmBh0C,SACpCnP,KAAK2qD,eACL3qD,KAAK6nD,4BAI2B,GAA5B7nD,KAAKqkD,UAAUR,WACjB7jD,KAAK4qD,aAGT5qD,KAAKqQ,SAEPrQ,KAAK2+C,cAAe,GAOtBz7C,EAAQgR,UAAUD,WAAa,SAAU/E,GACvC,GAAIA,EAAS,CACX,GAAI/I,GACAwI,GAAU,QAAQ,QAAQ,eAAe,qBAAqB,aAAa,aAC7E,WAAW,mBAAmB,QAAQ,SAAS,aAAa,YAAY,WAAW,aAQrF,IALAhO,EAAKoG,uBAAuB4H,EAAO3O,KAAKqkD,UAAWn1C,GACnDvO,EAAKoG,wBAAwB,SAAS/G,KAAKqkD,UAAUnF,MAAOhwC,EAAQgwC,OACpEv+C,EAAKoG,wBAAwB,QAAQ,UAAU/G,KAAKqkD,UAAUhE,MAAOnxC,EAAQmxC,OAE7ErgD,KAAK+0B,OAAOqvB,iBAAmBpkD,KAAKqkD,UAAUD,iBAC1Cl1C,EAAQ8xC,UACVrgD,EAAKqO,aAAahP,KAAKqkD,UAAUrD,QAAS9xC,EAAQ8xC,QAAQ,aAC1DrgD,EAAKqO,aAAahP,KAAKqkD,UAAUrD,QAAS9xC,EAAQ8xC,QAAQ,aAEtD9xC,EAAQ8xC,QAAQU,uBAAuB,CACzC1hD,KAAKqkD,UAAUlB,mBAAmBh0C,SAAU,EAC5CnP,KAAKqkD,UAAUrD,QAAQU,sBAAsBvyC,SAAU,EACvDnP,KAAKqkD,UAAUrD,QAAQC,UAAU9xC,SAAU,CAC3C,KAAKhJ,IAAQ+I,GAAQ8xC,QAAQU,sBACvBxyC,EAAQ8xC,QAAQU,sBAAsBt7C,eAAeD,KACvDnG,KAAKqkD,UAAUrD,QAAQU,sBAAsBv7C,GAAQ+I,EAAQ8xC,QAAQU,sBAAsBv7C,IAkDnG,GA5CI+I,EAAQ0kC,QAAQ5zC,KAAK4+C,iBAAiB5qC,IAAM9E,EAAQ0kC,OACpD1kC,EAAQ27C,SAAS7qD,KAAK4+C,iBAAiBC,KAAO3vC,EAAQ27C,QACtD37C,EAAQ47C,aAAa9qD,KAAK4+C,iBAAiBE,SAAW5vC,EAAQ47C,YAC9D57C,EAAQ67C,YAAY/qD,KAAK4+C,iBAAiBG,QAAU7vC,EAAQ67C,WAC5D77C,EAAQ87C,WAAWhrD,KAAK4+C,iBAAiBI,IAAM9vC,EAAQ87C,UAE3DrqD,EAAKqO,aAAahP,KAAKqkD,UAAWn1C,EAAQ,gBAC1CvO,EAAKqO,aAAahP,KAAKqkD,UAAWn1C,EAAQ,sBAC1CvO,EAAKqO,aAAahP,KAAKqkD,UAAWn1C,EAAQ,cAC1CvO,EAAKqO,aAAahP,KAAKqkD,UAAWn1C,EAAQ,cAC1CvO,EAAKqO,aAAahP,KAAKqkD,UAAWn1C,EAAQ,YAC1CvO,EAAKqO,aAAahP,KAAKqkD,UAAWn1C,EAAQ,oBAGtCA,EAAQ+zC,mBACVjjD,KAAKirD,SAAWjrD,KAAKqkD,UAAUpB,iBAAiBC,kBAK9Ch0C,EAAQmxC,QACkBx5C,SAAxBqI,EAAQmxC,MAAM90C,QACZ5K,EAAK8D,SAASyK,EAAQmxC,MAAM90C,QAC9BvL,KAAKqkD,UAAUhE,MAAM90C,SACrBvL,KAAKqkD,UAAUhE,MAAM90C,MAAMA,MAAQ2D,EAAQmxC,MAAM90C,MACjDvL,KAAKqkD,UAAUhE,MAAM90C,MAAMwB,UAAYmC,EAAQmxC,MAAM90C,MACrDvL,KAAKqkD,UAAUhE,MAAM90C,MAAMyB,MAAQkC,EAAQmxC,MAAM90C,QAGf1E,SAA9BqI,EAAQmxC,MAAM90C,MAAMA,QAA0BvL,KAAKqkD,UAAUhE,MAAM90C,MAAMA,MAAQ2D,EAAQmxC,MAAM90C,MAAMA,OACnE1E,SAAlCqI,EAAQmxC,MAAM90C,MAAMwB,YAA0B/M,KAAKqkD,UAAUhE,MAAM90C,MAAMwB,UAAYmC,EAAQmxC,MAAM90C,MAAMwB,WAC3ElG,SAA9BqI,EAAQmxC,MAAM90C,MAAMyB,QAA0BhN,KAAKqkD,UAAUhE,MAAM90C,MAAMyB,MAAQkC,EAAQmxC,MAAM90C,MAAMyB,QAE3GhN,KAAKqkD,UAAUhE,MAAMQ,cAAe,GAGjC3xC,EAAQmxC,MAAMb,WACW34C,SAAxBqI,EAAQmxC,MAAM90C,QACZ5K,EAAK8D,SAASyK,EAAQmxC,MAAM90C,OAAmBvL,KAAKqkD,UAAUhE,MAAMb,UAAYtwC,EAAQmxC,MAAM90C,MAC3D1E,SAA9BqI,EAAQmxC,MAAM90C,MAAMA,QAAsBvL,KAAKqkD,UAAUhE,MAAMb,UAAYtwC,EAAQmxC,MAAM90C,MAAMA,SAK1G2D,EAAQgwC,OACNhwC,EAAQgwC,MAAM3zC,MAAO,CACvB,GAAI2/C,GAAcvqD,EAAKqL,WAAWkD,EAAQgwC,MAAM3zC,MAChDvL,MAAKqkD,UAAUnF,MAAM3zC,MAAMsB,WAAaq+C,EAAYr+C,WACpD7M,KAAKqkD,UAAUnF,MAAM3zC,MAAMuB,OAASo+C,EAAYp+C,OAChD9M,KAAKqkD,UAAUnF,MAAM3zC,MAAMwB,UAAUF,WAAaq+C,EAAYn+C,UAAUF,WACxE7M,KAAKqkD,UAAUnF,MAAM3zC,MAAMwB,UAAUD,OAASo+C,EAAYn+C,UAAUD,OACpE9M,KAAKqkD,UAAUnF,MAAM3zC,MAAMyB,MAAMH,WAAaq+C,EAAYl+C,MAAMH,WAChE7M,KAAKqkD,UAAUnF,MAAM3zC,MAAMyB,MAAMF,OAASo+C,EAAYl+C,MAAMF,OAGhE,GAAIoC,EAAQ6lB,OACV,IAAK,GAAIo2B,KAAaj8C,GAAQ6lB,OAC5B,GAAI7lB,EAAQ6lB,OAAO3uB,eAAe+kD,GAAY,CAC5C,GAAIz4C,GAAQxD,EAAQ6lB,OAAOo2B,EAC3BnrD,MAAK+0B,OAAO/gB,IAAIm3C,EAAWz4C,GAKjC,GAAIxD,EAAQkY,QAAS,CACnB,IAAKjhB,IAAQ+I,GAAQkY,QACflY,EAAQkY,QAAQhhB,eAAeD,KACjCnG,KAAKqkD,UAAUj9B,QAAQjhB,GAAQ+I,EAAQkY,QAAQjhB,GAG/C+I,GAAQkY,QAAQ7b,QAClBvL,KAAKqkD,UAAUj9B,QAAQ7b,MAAQ5K,EAAKqL,WAAWkD,EAAQkY,QAAQ7b,QAmBnE,GAfI,cAAgB2D,KACdA,EAAQk8C,WACLprD,KAAKqrD,YACRrrD,KAAKqrD,UAAY,GAAInD,GAAUloD,KAAKsgB,OACpCtgB,KAAKqrD,UAAU/2C,GAAG,SAAUtU,KAAKsrD,gBAAgB51B,KAAK11B,QAIpDA,KAAKqrD,YACPrrD,KAAKqrD,UAAUh3C,gBACRrU,MAAKqrD,YAKdn8C,EAAQ88B,OACV,KAAM,IAAIpoC,OAAM,6EAMlB5D,MAAK8lD,qBAEL9lD,KAAKurD,0BAELvrD,KAAKwrD,0BAELxrD,KAAKyrD,yBAGLzrD,KAAK0rD,cAGL1rD,KAAKsrD,kBAELtrD,KAAK2rD,uBACL3rD,KAAK2lB,QAAQ3lB,KAAKqkD,UAAU/wC,MAAOtT,KAAKqkD,UAAU9wC,QAClDvT,KAAK2nD,QAAS,EACmC,GAA7C3nD,KAAKqkD,UAAUlB,mBAAmBh0C,SAAwC,GAArBnP,KAAK2+C,eAC5D3+C,KAAK2qD,eACL3qD,KAAK6nD,4BAEP7nD,KAAKqQ,UAaTnN,EAAQgR,UAAUohB,QAAU,WAE1B,KAAOt1B,KAAK0a,iBAAiBgK,iBAC3B1kB,KAAK0a,iBAAiB9I,YAAY5R,KAAK0a,iBAAiBiK,WAgB1D,IAbA3kB,KAAKsgB,MAAQtO,SAASM,cAAc,OACpCtS,KAAKsgB,MAAMlY,UAAY,oBACvBpI,KAAKsgB,MAAM5S,MAAMkX,SAAW,WAC5B5kB,KAAKsgB,MAAM5S,MAAMmX,SAAW,SAC5B7kB,KAAKsgB,MAAMsrC,SAAW,IAKtB5rD,KAAKsgB,MAAMC,OAASvO,SAASM,cAAc,UAC3CtS,KAAKsgB,MAAMC,OAAO7S,MAAMkX,SAAW,WACnC5kB,KAAKsgB,MAAMpO,YAAYlS,KAAKsgB,MAAMC,QAE7BvgB,KAAKsgB,MAAMC,OAAOyH,WAQlB,CACH,GAAID,GAAM/nB,KAAKsgB,MAAMC,OAAOyH,WAAW,KACvChoB,MAAKskD,YAAcx8C,OAAO+jD,kBAAoB,IAAM9jC,EAAI+jC,8BAC9C/jC,EAAIgkC,2BACJhkC,EAAIikC,0BACJjkC,EAAIkkC,yBACJlkC,EAAImkC,wBAA0B,GAGxClsD,KAAKsgB,MAAMC,OAAOyH,WAAW,MAAMmkC,aAAansD,KAAKskD,WAAY,EAAG,EAAGtkD,KAAKskD,WAAY,EAAG,OAjB1D,CACjC,GAAIx/B,GAAW9S,SAASM,cAAe,MACvCwS,GAASpX,MAAMnC,MAAQ,MACvBuZ,EAASpX,MAAMqX,WAAc,OAC7BD,EAASpX,MAAMsX,QAAW,OAC1BF,EAASG,UAAa,mDACtBjlB,KAAKsgB,MAAMC,OAAOrO,YAAY4S,GAchC9kB,KAAK0rD,eAQPxoD,EAAQgR,UAAUw3C,YAAc,WAC9B,GAAIx2C,GAAKlV,IACW6G,UAAhB7G,KAAK8D,QACP9D,KAAK8D,OAAOsoD,UAEdpsD,KAAK+qC,QACL/qC,KAAKqsD,SACLrsD,KAAK8D,OAAS4iC,EAAO1mC,KAAKsgB,MAAMC,QAC9ByqB,iBAAiB,IAEnBhrC,KAAK8D,OAAOwQ,GAAG,MAAaY,EAAGo3C,OAAO52B,KAAKxgB,IAC3ClV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAGq3C,aAAa72B,KAAKxgB,IACjDlV,KAAK8D,OAAOwQ,GAAG,OAAaY,EAAGirB,QAAQzK,KAAKxgB,IAC5ClV,KAAK8D,OAAOwQ,GAAG,QAAaY,EAAGmrB,SAAS3K,KAAKxgB,IAC7ClV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAG8qB,aAAatK,KAAKxgB,IACjDlV,KAAK8D,OAAOwQ,GAAG,OAAaY,EAAG+qB,QAAQvK,KAAKxgB,IAC5ClV,KAAK8D,OAAOwQ,GAAG,UAAaY,EAAGgrB,WAAWxK,KAAKxgB,IAEhB,GAA3BlV,KAAKqkD,UAAU1kB,WACjB3/B,KAAK8D,OAAOwQ,GAAG,aAAmBY,EAAGkrB,cAAc1K,KAAKxgB,IACxDlV,KAAK8D,OAAOwQ,GAAG,iBAAmBY,EAAGkrB,cAAc1K,KAAKxgB,IACxDlV,KAAK8D,OAAOwQ,GAAG,QAAmBY,EAAGorB,SAAS5K,KAAKxgB,KAGrDlV,KAAK8D,OAAOwQ,GAAG,YAAaY,EAAGs3C,kBAAkB92B,KAAKxgB,IAEtDlV,KAAKysD,YAAc/lB,EAAO1mC,KAAKsgB,OAC7B0qB,iBAAiB,IAEnBhrC,KAAKysD,YAAYn4C,GAAG,UAAWY,EAAGw3C,WAAWh3B,KAAKxgB,IAGlDlV,KAAK0a,iBAAiBxI,YAAYlS,KAAKsgB,QAOzCpd,EAAQgR,UAAUo3C,gBAAkB,WAClC,GAAIp2C,GAAKlV,IACa6G,UAAlB7G,KAAKgoD,UACPhoD,KAAKgoD,SAAS3zC,UAG4B,GAAxCrU,KAAKqkD,UAAUvB,SAASE,aAC1BhjD,KAAKgoD,SAAWA,GAAUxtC,UAAW1S,OAAQ8B,gBAAgB,IAG7D5J,KAAKgoD,SAAWA,GAAUxtC,UAAWxa,KAAKsgB,MAAO1W,gBAAgB,IAGnE5J,KAAKgoD,SAAS2E,QAEV3sD,KAAKqkD,UAAUvB,SAAS3zC,SAAWnP,KAAK4sD,aAC1C5sD,KAAKgoD,SAAStyB,KAAK,KAAQ11B,KAAK6sD,QAAQn3B,KAAKxgB,GAAQ,WACrDlV,KAAKgoD,SAAStyB,KAAK,KAAQ11B,KAAK8sD,aAAap3B,KAAKxgB,GAAK,SACvDlV,KAAKgoD,SAAStyB,KAAK,OAAQ11B,KAAK+sD,UAAUr3B,KAAKxgB,GAAM,WACrDlV,KAAKgoD,SAAStyB,KAAK,OAAQ11B,KAAK8sD,aAAap3B,KAAKxgB,GAAK,SACvDlV,KAAKgoD,SAAStyB,KAAK,OAAQ11B,KAAKgtD,UAAUt3B,KAAKxgB,GAAM,WACrDlV,KAAKgoD,SAAStyB,KAAK,OAAQ11B,KAAKitD,aAAav3B,KAAKxgB,GAAK,SACvDlV,KAAKgoD,SAAStyB,KAAK,QAAQ11B,KAAKktD,WAAWx3B,KAAKxgB,GAAK,WACrDlV,KAAKgoD,SAAStyB,KAAK,QAAQ11B,KAAKitD,aAAav3B,KAAKxgB,GAAK,SACvDlV,KAAKgoD,SAAStyB,KAAK,IAAQ11B,KAAKmtD,QAAQz3B,KAAKxgB,GAAQ,WACrDlV,KAAKgoD,SAAStyB,KAAK,IAAQ11B,KAAKotD,UAAU13B,KAAKxgB,GAAQ,SACvDlV,KAAKgoD,SAAStyB,KAAK,OAAQ11B,KAAKmtD,QAAQz3B,KAAKxgB,GAAQ,WACrDlV,KAAKgoD,SAAStyB,KAAK,OAAQ11B,KAAKotD,UAAU13B,KAAKxgB,GAAQ,SACvDlV,KAAKgoD,SAAStyB,KAAK,OAAQ11B,KAAKqtD,SAAS33B,KAAKxgB,GAAO,WACrDlV,KAAKgoD,SAAStyB,KAAK,OAAQ11B,KAAKotD,UAAU13B,KAAKxgB,GAAQ,SACvDlV,KAAKgoD,SAAStyB,KAAK,IAAQ11B,KAAKqtD,SAAS33B,KAAKxgB,GAAO,WACrDlV,KAAKgoD,SAAStyB,KAAK,IAAQ11B,KAAKotD,UAAU13B,KAAKxgB,GAAQ,SACvDlV,KAAKgoD,SAAStyB,KAAK,IAAQ11B,KAAKmtD,QAAQz3B,KAAKxgB,GAAQ,WACrDlV,KAAKgoD,SAAStyB,KAAK,IAAQ11B,KAAKotD,UAAU13B,KAAKxgB,GAAQ,SACvDlV,KAAKgoD,SAAStyB,KAAK,IAAQ11B,KAAKqtD,SAAS33B,KAAKxgB,GAAO,WACrDlV,KAAKgoD,SAAStyB,KAAK,IAAQ11B,KAAKotD,UAAU13B,KAAKxgB,GAAQ,SACvDlV,KAAKgoD,SAAStyB,KAAK,SAAS11B,KAAKmtD,QAAQz3B,KAAKxgB,GAAO,WACrDlV,KAAKgoD,SAAStyB,KAAK,SAAS11B,KAAKotD,UAAU13B,KAAKxgB,GAAO,SACvDlV,KAAKgoD,SAAStyB,KAAK,WAAW11B,KAAKqtD,SAAS33B,KAAKxgB,GAAI,WACrDlV,KAAKgoD,SAAStyB,KAAK,WAAW11B,KAAKotD,UAAU13B,KAAKxgB,GAAK,UAGV,GAA3ClV,KAAKqkD,UAAUpB,iBAAiB9zC,UAClCnP,KAAKgoD,SAAStyB,KAAK,MAAM11B,KAAKkqD,sBAAsBx0B,KAAKxgB,IACzDlV,KAAKgoD,SAAStyB,KAAK,SAAS11B,KAAKstD,gBAAgB53B,KAAKxgB,MAU1DhS,EAAQgR,UAAUG,QAAU,WAC1BrU,KAAKqQ,MAAQ,aACbrQ,KAAKyiB,OAAS,aACdziB,KAAK4nD,OAAQ,EAGb5nD,KAAKutD,+BAGLvtD,KAAKgoD,SAAS2E,QAGd3sD,KAAK8D,OAAOsoD,UAGZpsD,KAAKyU,MAELzU,KAAKwtD,oBAAoBxtD,KAAK0a,mBAGhCxX,EAAQgR,UAAUs5C,oBAAsB,SAASC,GAC/C,KAAoC,GAA7BA,EAAU/oC,iBACf1kB,KAAKwtD,oBAAoBC,EAAU9oC,YACnC8oC,EAAU77C,YAAY67C,EAAU9oC,aAUpCzhB,EAAQgR,UAAUw5C,YAAc,SAAU5tB,GACxC,OACEttB,EAAGstB,EAAMvH,MAAQ53B,EAAK+G,gBAAgB1H,KAAKsgB,MAAMC,QACjD9N,EAAGqtB,EAAMrH,MAAQ93B,EAAKqH,eAAehI,KAAKsgB,MAAMC,UASpDrd,EAAQgR,UAAUmsB,SAAW,SAAUx2B,IACjC,GAAIjF,OAAOyC,UAAYrH,KAAKqlD,UAAY,MAC1CrlD,KAAK+qC,KAAKhJ,QAAU/hC,KAAK0tD,YAAY7jD,EAAM2uB,QAAQzL,QACnD/sB,KAAK+qC,KAAK4iB,SAAU,EACpB3tD,KAAKqsD,MAAM9nD,MAAQvE,KAAK4tD,YAGxB5tD,KAAKqlD,WAAY,GAAIzgD,OAAOyC,UAE5BrH,KAAK6tD,aAAa7tD,KAAK+qC,KAAKhJ,WAQhC7+B,EAAQgR,UAAU8rB,aAAe,SAAUn2B,GACzC7J,KAAK8tD,iBAAiBjkD,IAUxB3G,EAAQgR,UAAU45C,iBAAmB,SAASjkD,GAElBhD,SAAtB7G,KAAK+qC,KAAKhJ,SACZ/hC,KAAKqgC,SAASx2B,EAGhB,IAAI8+C,GAAO3oD,KAAK+tD,WAAW/tD,KAAK+qC,KAAKhJ,QASrC,IANA/hC,KAAK+qC,KAAK/J,UAAW,EACrBhhC,KAAK+qC,KAAK4J,aACV30C,KAAK+qC,KAAKtsB,YAAcze,KAAKguD,kBAC7BhuD,KAAK+qC,KAAKke,OAAS,KACnBjpD,KAAKwmD,eAAgB,EAET,MAARmC,GAA4C,GAA5B3oD,KAAKqkD,UAAUJ,UAAmB,CACpDjkD,KAAKwmD,eAAgB,EACrBxmD,KAAK+qC,KAAKke,OAASN,EAAKtoD,GAEnBsoD,EAAKsF,cACRjuD,KAAKkuD,cAAcvF,GAAK,GAG1B3oD,KAAKyuB,KAAK,aAAa0/B,QAAQnuD,KAAK83B,eAAeonB,OAGnD,KAAK,GAAIkP,KAAYpuD,MAAKquD,aAAanP,MACrC,GAAIl/C,KAAKquD,aAAanP,MAAM94C,eAAegoD,GAAW,CACpD,GAAIpqD,GAAShE,KAAKquD,aAAanP,MAAMkP,GACjC7hD,GACFlM,GAAI2D,EAAO3D,GACXsoD,KAAM3kD,EAGNwO,EAAGxO,EAAOwO,EACVC,EAAGzO,EAAOyO,EACV67C,OAAQtqD,EAAOsqD,OACfC,OAAQvqD,EAAOuqD,OAGjBvqD,GAAOsqD,QAAS,EAChBtqD,EAAOuqD,QAAS,EAEhBvuD,KAAK+qC,KAAK4J,UAAUpsC,KAAKgE,MAWjCrJ,EAAQgR,UAAU+rB,QAAU,SAAUp2B,GACpC7J,KAAKwuD,cAAc3kD,IAUrB3G,EAAQgR,UAAUs6C,cAAgB,SAAS3kD,GACzC,IAAI7J,KAAK+qC,KAAK4iB,QAAd,CAKA3tD,KAAKyuD,aAEL,IAAI1sB,GAAU/hC,KAAK0tD,YAAY7jD,EAAM2uB,QAAQzL,QACzC7X,EAAKlV,KACL+qC,EAAO/qC,KAAK+qC,KACZ4J,EAAY5J,EAAK4J,SACrB,IAAIA,GAAaA,EAAU1uC,QAAsC,GAA5BjG,KAAKqkD,UAAUJ,UAAmB,CAErE,GAAIxiB,GAASM,EAAQvvB,EAAIu4B,EAAKhJ,QAAQvvB,EAClCkvB,EAASK,EAAQtvB,EAAIs4B,EAAKhJ,QAAQtvB,CAGtCkiC,GAAU/rC,QAAQ,SAAU2D,GAC1B,GAAIo8C,GAAOp8C,EAAEo8C,IAERp8C,GAAE+hD,SACL3F,EAAKn2C,EAAI0C,EAAGw5C,qBAAqBx5C,EAAGy5C,qBAAqBpiD,EAAEiG,GAAKivB,IAG7Dl1B,EAAEgiD,SACL5F,EAAKl2C,EAAIyC,EAAG05C,qBAAqB15C,EAAG25C,qBAAqBtiD,EAAEkG,GAAKivB,MAM/D1hC,KAAK2nD,SACR3nD,KAAK2nD,QAAS,EACd3nD,KAAKqQ,aAKP,IAAkC,GAA9BrQ,KAAKqkD,UAAUL,YAAqB,CAEtC,GAA0Bn9C,SAAtB7G,KAAK+qC,KAAKhJ,QAEZ,WADA/hC,MAAK8tD,iBAAiBjkD,EAGxB,IAAIokB,GAAQ8T,EAAQvvB,EAAIxS,KAAK+qC,KAAKhJ,QAAQvvB,EACtC0b,EAAQ6T,EAAQtvB,EAAIzS,KAAK+qC,KAAKhJ,QAAQtvB,CAE1CzS,MAAKmmD,gBACHnmD,KAAK+qC,KAAKtsB,YAAYjM,EAAIyb,EAC1BjuB,KAAK+qC,KAAKtsB,YAAYhM,EAAIyb,GAE5BluB,KAAKi3B,aASX/zB,EAAQgR,UAAUgsB,WAAa,SAAUr2B,GACvC7J,KAAK8uD,eAAejlD,IAItB3G,EAAQgR,UAAU46C,eAAiB,SAASjlD,GAC1C7J,KAAK+qC,KAAK/J,UAAW,CACrB,IAAI2T,GAAY30C,KAAK+qC,KAAK4J,SACtBA,IAAaA,EAAU1uC,QACzB0uC,EAAU/rC,QAAQ,SAAU2D,GAE1BA,EAAEo8C,KAAK2F,OAAS/hD,EAAE+hD,OAClB/hD,EAAEo8C,KAAK4F,OAAShiD,EAAEgiD,SAEpBvuD,KAAK2nD,QAAS,EACd3nD,KAAKqQ,SAGLrQ,KAAKi3B,UAEmB,GAAtBj3B,KAAKwmD,cACPxmD,KAAKyuB,KAAK,WAAW0/B,aAGrBnuD,KAAKyuB,KAAK,WAAW0/B,QAAQnuD,KAAK83B,eAAeonB,SAQrDh8C,EAAQgR,UAAUo4C,OAAS,SAAUziD,GACnC,GAAIk4B,GAAU/hC,KAAK0tD,YAAY7jD,EAAM2uB,QAAQzL,OAC7C/sB,MAAK8mD,gBAAkB/kB,EACvB/hC,KAAK+uD,WAAWhtB,IASlB7+B,EAAQgR,UAAUq4C,aAAe,SAAU1iD,GACzC,GAAIk4B,GAAU/hC,KAAK0tD,YAAY7jD,EAAM2uB,QAAQzL,OAC7C/sB,MAAKgvD,iBAAiBjtB,IAQxB7+B,EAAQgR,UAAUisB,QAAU,SAAUt2B,GACpC,GAAIk4B,GAAU/hC,KAAK0tD,YAAY7jD,EAAM2uB,QAAQzL,OAC7C/sB,MAAK8mD,gBAAkB/kB,EACvB/hC,KAAKivD,cAAcltB,IAQrB7+B,EAAQgR,UAAUw4C,WAAa,SAAU7iD,GACvC,GAAIk4B,GAAU/hC,KAAK0tD,YAAY7jD,EAAM2uB,QAAQzL,OAC7C/sB,MAAKkvD,iBAAiBntB,IAQxB7+B,EAAQgR,UAAUosB,SAAW,SAAUz2B,GACrC,GAAIk4B,GAAU/hC,KAAK0tD,YAAY7jD,EAAM2uB,QAAQzL,OAE7C/sB,MAAK+qC,KAAK4iB,SAAU,EACd,SAAW3tD,MAAKqsD,QACpBrsD,KAAKqsD,MAAM9nD,MAAQ,EAIrB,IAAIA,GAAQvE,KAAKqsD,MAAM9nD,MAAQsF,EAAM2uB,QAAQj0B,KAC7CvE,MAAKmvD,MAAM5qD,EAAOw9B,IAUpB7+B,EAAQgR,UAAUi7C,MAAQ,SAAS5qD,EAAOw9B,GACxC,GAA+B,GAA3B/hC,KAAKqkD,UAAU1kB,SAAkB,CACnC,GAAIyvB,GAAWpvD,KAAK4tD,WACR,MAARrpD,IACFA,EAAQ,MAENA,EAAQ,KACVA,EAAQ,GAGV,IAAI8qD,GAAsB,IACRxoD,UAAd7G,KAAK+qC,MACmB,GAAtB/qC,KAAK+qC,KAAK/J,WACZquB,EAAsBrvD,KAAKsvD,YAAYtvD,KAAK+qC,KAAKhJ,SAIrD,IAAItjB,GAAcze,KAAKguD,kBAEnBuB,EAAYhrD,EAAQ6qD,EACpBI,GAAM,EAAID,GAAaxtB,EAAQvvB,EAAIiM,EAAYjM,EAAI+8C,EACnDE,GAAM,EAAIF,GAAaxtB,EAAQtvB,EAAIgM,EAAYhM,EAAI88C,CASvD,IAPAvvD,KAAK+mD,YAAcv0C,EAAMxS,KAAK0uD,qBAAqB3sB,EAAQvvB,GACxCC,EAAMzS,KAAK4uD,qBAAqB7sB,EAAQtvB,IAE3DzS,KAAKie,UAAU1Z,GACfvE,KAAKmmD,gBAAgBqJ,EAAIC,GACzBzvD,KAAK0vD,wBAEsB,MAAvBL,EAA6B,CAC/B,GAAIM,GAAuB3vD,KAAK4vD,YAAYP,EAC5CrvD,MAAK+qC,KAAKhJ,QAAQvvB,EAAIm9C,EAAqBn9C,EAC3CxS,KAAK+qC,KAAKhJ,QAAQtvB,EAAIk9C,EAAqBl9C,EAY7C,MATAzS,MAAKi3B,UAEU1yB,EAAX6qD,EACFpvD,KAAKyuB,KAAK,QAASyO,UAAU,MAG7Bl9B,KAAKyuB,KAAK,QAASyO,UAAU,MAGxB34B,IAYXrB,EAAQgR,UAAUksB,cAAgB,SAASv2B,GAEzC,GAAIylB,GAAQ,CAYZ,IAXIzlB,EAAM0lB,WACRD,EAAQzlB,EAAM0lB,WAAW,IAChB1lB,EAAM2lB,SAGfF,GAASzlB,EAAM2lB,OAAO,GAMpBF,EAAO,CAGT,GAAI/qB,GAAQvE,KAAK4tD,YACb1rB,EAAO5S,EAAQ,EACP,GAARA,IACF4S,GAAe,EAAIA,GAErB39B,GAAU,EAAI29B,CAGd,IAAI1J,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAU/hC,KAAK0tD,YAAYl1B,EAAQzL,OAGvC/sB,MAAKmvD,MAAM5qD,EAAOw9B,GAIpBl4B,EAAMD,kBASR1G,EAAQgR,UAAUs4C,kBAAoB,SAAU3iD,GAC9C,GAAI2uB,GAAUiI,EAAWqB,YAAY9hC,KAAM6J,GACvCk4B,EAAU/hC,KAAK0tD,YAAYl1B,EAAQzL,QACnC8iC,GAAe,CAsBnB,IAnBmBhpD,SAAf7G,KAAK8vD,QACH9vD,KAAK8vD,MAAMp2B,UAAW,GACxB15B,KAAK+vD,gBAAgBhuB,GAInB/hC,KAAK8vD,MAAMp2B,UAAW,IACxBm2B,GAAe,EACf7vD,KAAK8vD,MAAME,YAAYjuB,EAAQvvB,EAAI,EAAEuvB,EAAQtvB,EAAI,GACjDzS,KAAK8vD,MAAM7oB,SAK6B,GAAxCjnC,KAAKqkD,UAAUvB,SAASE,cAA4D,GAAnChjD,KAAKqkD,UAAUvB,SAAS3zC,SAC3EnP,KAAKsgB,MAAMuX,QAITg4B,KAAiB,EAAO,CAC1B,GAAI36C,GAAKlV,KACLiwD,EAAY,WACd/6C,EAAGg7C,gBAAgBnuB,GAEjB/hC,MAAKmwD,YACP98B,cAAcrzB,KAAKmwD,YAEhBnwD,KAAK+qC,KAAK/J,WACbhhC,KAAKmwD,WAAa51C,WAAW01C,EAAWjwD,KAAKqkD,UAAUj9B,QAAQ1N,QAOnE,GAA4B,GAAxB1Z,KAAKqkD,UAAUr3C,MAAe,CAEhC,IAAK,GAAIojD,KAAUpwD,MAAKukD,SAASlE,MAC3BrgD,KAAKukD,SAASlE,MAAMj6C,eAAegqD,KACrCpwD,KAAKukD,SAASlE,MAAM+P,GAAQpjD,OAAQ,QAC7BhN,MAAKukD,SAASlE,MAAM+P,GAK/B,IAAIrsC,GAAM/jB,KAAK+tD,WAAWhsB,EACf,OAAPhe,IACFA,EAAM/jB,KAAKqwD,WAAWtuB,IAEb,MAAPhe,GACF/jB,KAAKswD,aAAavsC,EAIpB,KAAK,GAAIklC,KAAUjpD,MAAKukD,SAASrF,MAC3Bl/C,KAAKukD,SAASrF,MAAM94C,eAAe6iD,KACjCllC,YAAexgB,IAAQwgB,EAAI1jB,IAAM4oD,GAAUllC,YAAe3gB,IAAe,MAAP2gB,KACpE/jB,KAAKuwD,YAAYvwD,KAAKukD,SAASrF,MAAM+J,UAC9BjpD,MAAKukD,SAASrF,MAAM+J,GAIjCjpD,MAAKyiB,WAYTvf,EAAQgR,UAAUg8C,gBAAkB,SAAUnuB,GAC5C,GAOI1hC,GAPA0jB,GACFlc,KAAQ7H,KAAK0uD,qBAAqB3sB,EAAQvvB,GAC1CvK,IAAQjI,KAAK4uD,qBAAqB7sB,EAAQtvB,GAC1C4V,MAAQroB,KAAK0uD,qBAAqB3sB,EAAQvvB,GAC1C8R,OAAQtkB,KAAK4uD,qBAAqB7sB,EAAQtvB,IAIxC+9C,EAAuC3pD,SAAlB7G,KAAKywD,SAAyB5pD,OAAY7G,KAAKywD,SAASpwD,GAC7EqwD,GAAkB,EAClBC,EAAY,MAEhB,IAAqB9pD,QAAjB7G,KAAKywD,SAAuB,CAE9B,GAAIvR,GAAQl/C,KAAKk/C,MACb0R,IACJ,KAAKvwD,IAAM6+C,GACT,GAAIA,EAAM94C,eAAe/F,GAAK,CAC5B,GAAIsoD,GAAOzJ,EAAM7+C,EACbsoD,GAAKkI,kBAAkB9sC,IACDld,SAApB8hD,EAAKmI,YACPF,EAAiBroD,KAAKlI,GAM1BuwD,EAAiB3qD,OAAS,IAG5BjG,KAAKywD,SAAWzwD,KAAKk/C,MAAM0R,EAAiBA,EAAiB3qD,OAAS,IAEtEyqD,GAAkB,GAItB,GAAsB7pD,SAAlB7G,KAAKywD,UAA6C,GAAnBC,EAA0B,CAE3D,GAAIrQ,GAAQrgD,KAAKqgD,MACb0Q,IACJ,KAAK1wD,IAAMggD,GACT,GAAIA,EAAMj6C,eAAe/F,GAAK,CAC5B,GAAI2wD,GAAO3Q,EAAMhgD,EACb2wD,GAAKC,WAAkCpqD,SAApBmqD,EAAKF,YACxBE,EAAKH,kBAAkB9sC,IACzBgtC,EAAiBxoD,KAAKlI,GAKxB0wD,EAAiB9qD,OAAS,IAC5BjG,KAAKywD,SAAWzwD,KAAKqgD,MAAM0Q,EAAiBA,EAAiB9qD,OAAS,IACtE0qD,EAAY,QAIZ3wD,KAAKywD,SAEHzwD,KAAKywD,SAASpwD,IAAMmwD,IACH3pD,SAAf7G,KAAK8vD,QACP9vD,KAAK8vD,MAAQ,GAAItsD,GAAMxD,KAAKsgB,MAAOtgB,KAAKqkD,UAAUj9B,UAGpDpnB,KAAK8vD,MAAMoB,gBAAkBP,EAC7B3wD,KAAK8vD,MAAMqB,cAAgBnxD,KAAKywD,SAASpwD,GAKzCL,KAAK8vD,MAAME,YAAYjuB,EAAQvvB,EAAI,EAAGuvB,EAAQtvB,EAAI,GAClDzS,KAAK8vD,MAAMsB,QAAQpxD,KAAKywD,SAASK,YACjC9wD,KAAK8vD,MAAM7oB,QAITjnC,KAAK8vD,OACP9vD,KAAK8vD,MAAM9oB,QAYjB9jC,EAAQgR,UAAU67C,gBAAkB,SAAUhuB,GAC5C,GAAIsvB,IACFxpD,KAAQ7H,KAAK0uD,qBAAqB3sB,EAAQvvB,GAC1CvK,IAAQjI,KAAK4uD,qBAAqB7sB,EAAQtvB,GAC1C4V,MAAQroB,KAAK0uD,qBAAqB3sB,EAAQvvB,GAC1C8R,OAAQtkB,KAAK4uD,qBAAqB7sB,EAAQtvB,IAGxC6+C,GAAa,CACjB,IAAkC,QAA9BtxD,KAAK8vD,MAAMoB,iBAEb,GADAI,EAAatxD,KAAKk/C,MAAMl/C,KAAK8vD,MAAMqB,eAAeN,kBAAkBQ,GAChEC,KAAe,EAAM,CACvB,GAAIC,GAAWvxD,KAAK+tD,WAAWhsB,EAC/BuvB,GAAaC,EAASlxD,IAAML,KAAK8vD,MAAMqB,mBAIR,QAA7BnxD,KAAK+tD,WAAWhsB,KAClBuvB,EAAatxD,KAAKqgD,MAAMrgD,KAAK8vD,MAAMqB,eAAeN,kBAAkBQ,GAKpEC,MAAe,IACjBtxD,KAAKywD,SAAW5pD,OAChB7G,KAAK8vD,MAAM9oB,SAYf9jC,EAAQgR,UAAUyR,QAAU,SAASrS,EAAOC,GAC1C,GAAIi+C,IAAY,EACZC,EAAWzxD,KAAKsgB,MAAMC,OAAOjN,MAC7Bo+C,EAAY1xD,KAAKsgB,MAAMC,OAAOhN,MAC9BD,IAAStT,KAAKqkD,UAAU/wC,OAASC,GAAUvT,KAAKqkD,UAAU9wC,QAAUvT,KAAKsgB,MAAM5S,MAAM4F,OAASA,GAAStT,KAAKsgB,MAAM5S,MAAM6F,QAAUA,GACpIvT,KAAKsgB,MAAM5S,MAAM4F,MAAQA,EACzBtT,KAAKsgB,MAAM5S,MAAM6F,OAASA,EAE1BvT,KAAKsgB,MAAMC,OAAO7S,MAAM4F,MAAQ,OAChCtT,KAAKsgB,MAAMC,OAAO7S,MAAM6F,OAAS,OAEjCvT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKskD,WAC/DtkD,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKskD,WAEjEtkD,KAAKqkD,UAAU/wC,MAAQA,EACvBtT,KAAKqkD,UAAU9wC,OAASA,EAExBi+C,GAAY,IAMRxxD,KAAKsgB,MAAMC,OAAOjN,OAAStT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKskD,aAClEtkD,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKsgB,MAAMC,OAAOC,YAAcxgB,KAAKskD,WAC/DkN,GAAY,GAEVxxD,KAAKsgB,MAAMC,OAAOhN,QAAUvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKskD,aACpEtkD,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKsgB,MAAMC,OAAOsF,aAAe7lB,KAAKskD,WACjEkN,GAAY,IAIC,GAAbA,GACFxxD,KAAKyuB,KAAK,UAAWnb,MAAMtT,KAAKsgB,MAAMC,OAAOjN,MAAQtT,KAAKskD,WAAW/wC,OAAOvT,KAAKsgB,MAAMC,OAAOhN,OAASvT,KAAKskD,WAAYmN,SAAUA,EAAWzxD,KAAKskD,WAAYoN,UAAWA,EAAY1xD,KAAKskD,cAS9LphD,EAAQgR,UAAUs2C,UAAY,SAAStL,GACrC,GAAIyS,GAAe3xD,KAAKinD,SAExB,IAAI/H,YAAiBr+C,IAAWq+C,YAAiBp+C,GAC/Cd,KAAKinD,UAAY/H,MAEd,IAAI34C,MAAMC,QAAQ04C,GACrBl/C,KAAKinD,UAAY,GAAIpmD,GACrBb,KAAKinD,UAAUjzC,IAAIkrC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAIx4C,WAAU,4BAHpB1G,MAAKinD,UAAY,GAAIpmD,GAgBvB,GAVI8wD,GAEFhxD,EAAKiI,QAAQ5I,KAAKmnD,eAAgB,SAAUt+C,EAAUgB,GACpD8nD,EAAal9C,IAAI5K,EAAOhB,KAK5B7I,KAAKk/C,SAEDl/C,KAAKinD,UAAW,CAElB,GAAI/xC,GAAKlV,IACTW,GAAKiI,QAAQ5I,KAAKmnD,eAAgB,SAAUt+C,EAAUgB,GACpDqL,EAAG+xC,UAAU3yC,GAAGzK,EAAOhB,IAIzB,IAAIsN,GAAMnW,KAAKinD,UAAUpwC,QACzB7W,MAAKonD,UAAUjxC,GAEjBnW,KAAK4xD,oBAQP1uD,EAAQgR,UAAUkzC,UAAY,SAASjxC,GAGrC,IAAK,GAFD9V,GACAwT,EAAU7T,KAAKinD,UAAUrzC,UAAY,KAChC9N,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9CzF,EAAK8V,EAAIrQ,EACT,IAAI2N,GAAOzT,KAAKinD,UAAUhxC,IAAI5V,EAC1BwT,KACFJ,EAAKpT,GAAKoT,EAAKI,GAGjB,IAAI80C,GAAO,GAAIplD,GAAKkQ,EAAMzT,KAAKulD,OAAQvlD,KAAK+0B,OAAQ/0B,KAAKqkD,UAEzD,IADArkD,KAAKk/C,MAAM7+C,GAAMsoD,IACG,GAAfA,EAAK2F,QAAkC,GAAf3F,EAAK4F,QAAgC,OAAX5F,EAAKn2C,GAAyB,OAAXm2C,EAAKl2C,GAAa,CAC1F,GAAI6Z,GAAS,EAASnW,EAAIlQ,OAAS,GAC/B4rD,EAAQ,EAAIrtD,KAAKgoB,GAAKhoB,KAAKiB,QACZ,IAAfkjD,EAAK2F,SAAkB3F,EAAKn2C,EAAI8Z,EAAS9nB,KAAK+a,IAAIsyC,IACnC,GAAflJ,EAAK4F,SAAkB5F,EAAKl2C,EAAI6Z,EAAS9nB,KAAK4a,IAAIyyC,IAExD7xD,KAAK2nD,QAAS,EAGhB3nD,KAAK8pD,uBAC4C,GAA7C9pD,KAAKqkD,UAAUlB,mBAAmBh0C,SAAwC,GAArBnP,KAAK2+C,eAC5D3+C,KAAK2qD,eACL3qD,KAAK6nD,4BAEP7nD,KAAK8xD,0BACL9xD,KAAK+xD,kBACL/xD,KAAKgyD,kBAAkBhyD,KAAKk/C,OAC5Bl/C,KAAKiyD,gBAQP/uD,EAAQgR,UAAUmzC,aAAe,SAASlxC,GAIxC,IAAK,GAHD8wC,GAAYjnD,KAAKinD,UAAUhxC,IAAIE,GAC/B+oC,EAAQl/C,KAAKk/C,MAERp5C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIzF,GAAK8V,EAAIrQ,GACT6iD,EAAOzJ,EAAM7+C,GACboT,EAAOwzC,EAAUnhD,EACjB6iD,GAEFA,EAAKuJ,cAAcz+C,EAAMzT,KAAKqkD,YAI9BsE,EAAO,GAAIplD,GAAK4uD,WAAYnyD,KAAKulD,OAAQvlD,KAAK+0B,OAAQ/0B,KAAKqkD,WAC3DnF,EAAM7+C,GAAMsoD,GAGhB3oD,KAAK2nD,QAAS,EACmC,GAA7C3nD,KAAKqkD,UAAUlB,mBAAmBh0C,SAAwC,GAArBnP,KAAK2+C,eAC5D3+C,KAAK2qD,eACL3qD,KAAK6nD,4BAEP7nD,KAAK8pD,uBACL9pD,KAAKgyD,kBAAkB9S,GACvBl/C,KAAK2rD,wBAIPzoD,EAAQgR,UAAUy3C,qBAAuB,WACvC,IAAK,GAAIyE,KAAUpwD,MAAKqgD,MACtBrgD,KAAKqgD,MAAM+P,GAAQgC,YAAa,GASpClvD,EAAQgR,UAAUozC,aAAe,SAASnxC,GAIxC,IAAK,GAHD+oC,GAAQl/C,KAAKk/C,MAGRp5C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACDe,SAApC7G,KAAKquD,aAAanP,MAAM/oC,EAAIrQ,MAC9B9F,KAAKk/C,MAAM/oC,EAAIrQ,IAAI8gC,WACnB5mC,KAAKqyD,qBAAqBryD,KAAKk/C,MAAM/oC,EAAIrQ,KAI7C,KAAK,GAAIA,GAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIzF,GAAK8V,EAAIrQ,SACNo5C,GAAM7+C,GAKfL,KAAK8pD,uBAC4C,GAA7C9pD,KAAKqkD,UAAUlB,mBAAmBh0C,SAAwC,GAArBnP,KAAK2+C,eAC5D3+C,KAAK2qD,eACL3qD,KAAK6nD,4BAEP7nD,KAAK8xD,0BACL9xD,KAAK+xD,kBACL/xD,KAAK4xD,mBACL5xD,KAAKgyD,kBAAkB9S,IASzBh8C,EAAQgR,UAAUu2C,UAAY,SAASpK,GACrC,GAAIiS,GAAetyD,KAAKknD,SAExB,IAAI7G,YAAiBx/C,IAAWw/C,YAAiBv/C,GAC/Cd,KAAKknD,UAAY7G,MAEd,IAAI95C,MAAMC,QAAQ65C,GACrBrgD,KAAKknD,UAAY,GAAIrmD,GACrBb,KAAKknD,UAAUlzC,IAAIqsC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAI35C,WAAU,4BAHpB1G,MAAKknD,UAAY,GAAIrmD,GAgBvB,GAVIyxD,GAEF3xD,EAAKiI,QAAQ5I,KAAKunD,eAAgB,SAAU1+C,EAAUgB,GACpDyoD,EAAa79C,IAAI5K,EAAOhB,KAK5B7I,KAAKqgD,SAEDrgD,KAAKknD,UAAW,CAElB,GAAIhyC,GAAKlV,IACTW,GAAKiI,QAAQ5I,KAAKunD,eAAgB,SAAU1+C,EAAUgB,GACpDqL,EAAGgyC,UAAU5yC,GAAGzK,EAAOhB,IAIzB,IAAIsN,GAAMnW,KAAKknD,UAAUrwC,QACzB7W,MAAKwnD,UAAUrxC,GAGjBnW,KAAK+xD,mBAQP7uD,EAAQgR,UAAUszC,UAAY,SAAUrxC,GAKtC,IAAK,GAJDkqC,GAAQrgD,KAAKqgD,MACb6G,EAAYlnD,KAAKknD,UACjBrzC,EAAU7T,KAAKknD,UAAUtzC,SAEpB9N,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIzF,GAAK8V,EAAIrQ,GAETysD,EAAUlS,EAAMhgD,EAChBkyD,IACFA,EAAQC,YAGV,IAAI/+C,GAAOyzC,EAAUjxC,IAAI5V,GAAKoyD,iBAAoB,GAC9C5+C,KACFJ,EAAKpT,GAAKoT,EAAKI,IAEjBwsC,EAAMhgD,GAAM,GAAI+C,GAAKqQ,EAAMzT,KAAMA,KAAKqkD,WAExCrkD,KAAK2nD,QAAS,EACd3nD,KAAKgyD,kBAAkB3R,GACvBrgD,KAAK0yD,qBACL1yD,KAAK8xD,0BAC4C,GAA7C9xD,KAAKqkD,UAAUlB,mBAAmBh0C,SAAwC,GAArBnP,KAAK2+C,eAC5D3+C,KAAK2qD,eACL3qD,KAAK6nD,6BAST3kD,EAAQgR,UAAUuzC,aAAe,SAAUtxC,GAGzC,IAAK,GAFDkqC,GAAQrgD,KAAKqgD,MACb6G,EAAYlnD,KAAKknD,UACZphD,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIzF,GAAK8V,EAAIrQ,GAET2N,EAAOyzC,EAAUjxC,IAAI5V,GACrB2wD,EAAO3Q,EAAMhgD,EACb2wD,IAEFA,EAAKwB,aACLxB,EAAKkB,cAAcz+C,EAAMzT,KAAKqkD,WAC9B2M,EAAKjS,YAILiS,EAAO,GAAI5tD,GAAKqQ,EAAMzT,KAAMA,KAAKqkD,WACjCrkD,KAAKqgD,MAAMhgD,GAAM2wD,GAIrBhxD,KAAK0yD,qBAC4C,GAA7C1yD,KAAKqkD,UAAUlB,mBAAmBh0C,SAAwC,GAArBnP,KAAK2+C,eAC5D3+C,KAAK2qD,eACL3qD,KAAK6nD,4BAEP7nD,KAAK2nD,QAAS,EACd3nD,KAAKgyD,kBAAkB3R,IAQzBn9C,EAAQgR,UAAUwzC,aAAe,SAAUvxC,GAIzC,IAAK,GAHDkqC,GAAQrgD,KAAKqgD,MAGRv6C,EAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IACDe,SAApC7G,KAAKquD,aAAahO,MAAMlqC,EAAIrQ,MAC9Bu6C,EAAMlqC,EAAIrQ,IAAI8gC,WACd5mC,KAAKqyD,qBAAqBhS,EAAMlqC,EAAIrQ,KAIxC,KAAK,GAAIA,GAAI,EAAGC,EAAMoQ,EAAIlQ,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAIzF,GAAK8V,EAAIrQ,GACTkrD,EAAO3Q,EAAMhgD,EACb2wD,KACc,MAAZA,EAAK2B,WACA3yD,MAAK4yD,QAAiB,QAAS,MAAE5B,EAAK2B,IAAItyD,IAEnD2wD,EAAKwB,mBACEnS,GAAMhgD,IAIjBL,KAAK2nD,QAAS,EACd3nD,KAAKgyD,kBAAkB3R,GAC0B,GAA7CrgD,KAAKqkD,UAAUlB,mBAAmBh0C,SAAwC,GAArBnP,KAAK2+C,eAC5D3+C,KAAK2qD,eACL3qD,KAAK6nD,4BAEP7nD,KAAK8xD,2BAOP5uD,EAAQgR,UAAU69C,gBAAkB,WAClC,GAAI1xD,GACA6+C,EAAQl/C,KAAKk/C,MACbmB,EAAQrgD,KAAKqgD,KACjB,KAAKhgD,IAAM6+C,GACLA,EAAM94C,eAAe/F,KACvB6+C,EAAM7+C,GAAIggD,SACVnB,EAAM7+C,GAAIwyD,gBAId,KAAKxyD,IAAMggD,GACT,GAAIA,EAAMj6C,eAAe/F,GAAK,CAC5B,GAAI2wD,GAAO3Q,EAAMhgD,EACjB2wD,GAAK7mC,KAAO,KACZ6mC,EAAK5mC,GAAK,KACV4mC,EAAKjS,YAaX77C,EAAQgR,UAAU89C,kBAAoB,SAASjuC,GAC7C,GAAI1jB,GAGA8c,EAAWtW,OACXuW,EAAWvW,OACXisD,EAAa,CACjB,KAAKzyD,IAAM0jB,GACT,GAAIA,EAAI3d,eAAe/F,GAAK,CAC1B,GAAIiE,GAAQyf,EAAI1jB,GAAIsV,UACN9O,UAAVvC,IACF6Y,EAAyBtW,SAAbsW,EAA0B7Y,EAAQE,KAAKL,IAAIG,EAAO6Y,GAC9DC,EAAyBvW,SAAbuW,EAA0B9Y,EAAQE,KAAKJ,IAAIE,EAAO8Y,GAC9D01C,GAAcxuD,GAMpB,GAAiBuC,SAAbsW,GAAuCtW,SAAbuW,EAC5B,IAAK/c,IAAM0jB,GACLA,EAAI3d,eAAe/F,IACrB0jB,EAAI1jB,GAAI0yD,cAAc51C,EAAUC,EAAU01C,IAUlD5vD,EAAQgR,UAAUuO,OAAS,WACzBziB,KAAK2lB,QAAQ3lB,KAAKqkD,UAAU/wC,MAAOtT,KAAKqkD,UAAU9wC,QAClDvT,KAAKi3B,WAQP/zB,EAAQgR,UAAUwxC,eAAiB,SAAShsB,GACtC15B,KAAKslD,mBAAoB,IAC3BtlD,KAAKslD,iBAAkB,EACnBtlD,KAAKooD,mBAAoB,EAC3BtgD,OAAOyS,WAAWva,KAAKi3B,QAAQvB,KAAK11B,KAAM05B,GAAQ,GAGlD5xB,OAAOkrD,sBAAsBhzD,KAAKi3B,QAAQvB,KAAK11B,KAAM05B,GAAQ,MAKnEx2B,EAAQgR,UAAU+iB,QAAU,SAASyC,EAAQu5B,GAC5BpsD,SAAX6yB,IACFA,GAAS,GAEX15B,KAAKslD,iBAAkB,CACvB,IAAIv9B,GAAM/nB,KAAKsgB,MAAMC,OAAOyH,WAAW,KAEvCD,GAAIokC,aAAansD,KAAKskD,WAAY,EAAG,EAAGtkD,KAAKskD,WAAY,EAAG,EAG5D,IAAI4O,GAAIlzD,KAAKsgB,MAAMC,OAAOC,YACtBlU,EAAItM,KAAKsgB,MAAMC,OAAOsF,YAC1BkC,GAAIE,UAAU,EAAG,EAAGirC,EAAG5mD,GAGvByb,EAAIorC,OACJprC,EAAIqrC,UAAUpzD,KAAKye,YAAYjM,EAAGxS,KAAKye,YAAYhM,GACnDsV,EAAIxjB,MAAMvE,KAAKuE,MAAOvE,KAAKuE,OAE3BvE,KAAK4mD,eACHp0C,EAAKxS,KAAK0uD,qBAAqB,GAC/Bj8C,EAAKzS,KAAK4uD,qBAAqB,IAEjC5uD,KAAK6mD,mBACHr0C,EAAKxS,KAAK0uD,qBAAqB1uD,KAAKsgB,MAAMC,OAAOC,aACjD/N,EAAKzS,KAAK4uD,qBAAqB5uD,KAAKsgB,MAAMC,OAAOsF,eAG/C6T,KAAW,IACb15B,KAAKqzD,gBAAgB,sBAAuBtrC,IAClB,GAAtB/nB,KAAK+qC,KAAK/J,UAA4Cn6B,SAAvB7G,KAAK+qC,KAAK/J,UAA4D,GAAlChhC,KAAKqkD,UAAUH,kBACpFlkD,KAAKqzD,gBAAgB,aAActrC,KAIb,GAAtB/nB,KAAK+qC,KAAK/J,UAA4Cn6B,SAAvB7G,KAAK+qC,KAAK/J,UAA4D,GAAlChhC,KAAKqkD,UAAUF,kBACpFnkD,KAAKqzD,gBAAgB,aAAatrC,GAAI,GAGpC2R,KAAW,GACkB,GAA3B15B,KAAKwkD,oBACPxkD,KAAKqzD,gBAAgB,oBAAqBtrC,GAQ9CA,EAAIurC,UAEA55B,KAAW,GACb3R,EAAIE,UAAU,EAAG,EAAGirC,EAAG5mD,IAU3BpJ,EAAQgR,UAAUiyC,gBAAkB,SAASoN,EAASC,GAC3B3sD,SAArB7G,KAAKye,cACPze,KAAKye,aACHjM,EAAG,EACHC,EAAG,IAIS5L,SAAZ0sD,IACFvzD,KAAKye,YAAYjM,EAAI+gD,GAEP1sD,SAAZ2sD,IACFxzD,KAAKye,YAAYhM,EAAI+gD,GAGvBxzD,KAAKyuB,KAAK,gBAQZvrB,EAAQgR,UAAU85C,gBAAkB,WAClC,OACEx7C,EAAGxS,KAAKye,YAAYjM,EACpBC,EAAGzS,KAAKye,YAAYhM,IASxBvP,EAAQgR,UAAU+J,UAAY,SAAS1Z,GACrCvE,KAAKuE,MAAQA,GAQfrB,EAAQgR,UAAU05C,UAAY,WAC5B,MAAO5tD,MAAKuE,OAUdrB,EAAQgR,UAAUw6C,qBAAuB,SAASl8C,GAChD,OAAQA,EAAIxS,KAAKye,YAAYjM,GAAKxS,KAAKuE,OAUzCrB,EAAQgR,UAAUy6C,qBAAuB,SAASn8C,GAChD,MAAOA,GAAIxS,KAAKuE,MAAQvE,KAAKye,YAAYjM,GAU3CtP,EAAQgR,UAAU06C,qBAAuB,SAASn8C,GAChD,OAAQA,EAAIzS,KAAKye,YAAYhM,GAAKzS,KAAKuE,OAUzCrB,EAAQgR,UAAU26C,qBAAuB,SAASp8C,GAChD,MAAOA,GAAIzS,KAAKuE,MAAQvE,KAAKye,YAAYhM,GAU3CvP,EAAQgR,UAAU07C,YAAc,SAAUrpC,GACxC,OAAQ/T,EAAGxS,KAAK2uD,qBAAqBpoC,EAAI/T,GAAIC,EAAGzS,KAAK6uD,qBAAqBtoC,EAAI9T,KAShFvP,EAAQgR,UAAUo7C,YAAc,SAAU/oC,GACxC,OAAQ/T,EAAGxS,KAAK0uD,qBAAqBnoC,EAAI/T,GAAIC,EAAGzS,KAAK4uD,qBAAqBroC,EAAI9T,KAUhFvP,EAAQgR,UAAUu/C,WAAa,SAAS1rC,EAAI2rC,GACvB7sD,SAAf6sD,IACFA,GAAa,EAIf,IAAIxU,GAAQl/C,KAAKk/C,MACb3Y,IAEJ,KAAK,GAAIlmC,KAAM6+C,GACTA,EAAM94C,eAAe/F,KACvB6+C,EAAM7+C,GAAIszD,eAAe3zD,KAAKuE,MAAMvE,KAAK4mD,cAAc5mD,KAAK6mD,mBACxD3H,EAAM7+C,GAAI4tD,aACZ1nB,EAASh+B,KAAKlI,IAGV6+C,EAAM7+C,GAAIuzD,UAAYF,IACxBxU,EAAM7+C,GAAI+wC,KAAKrpB,GAOvB,KAAK,GAAIxb,GAAI,EAAGsnD,EAAOttB,EAAStgC,OAAY4tD,EAAJtnD,EAAUA,KAC5C2yC,EAAM3Y,EAASh6B,IAAIqnD,UAAYF,IACjCxU,EAAM3Y,EAASh6B,IAAI6kC,KAAKrpB,IAW9B7kB,EAAQgR,UAAU4/C,WAAa,SAAS/rC,GACtC,GAAIs4B,GAAQrgD,KAAKqgD,KACjB,KAAK,GAAIhgD,KAAMggD,GACb,GAAIA,EAAMj6C,eAAe/F,GAAK,CAC5B,GAAI2wD,GAAO3Q,EAAMhgD,EACjB2wD,GAAK/rB,SAASjlC,KAAKuE,OACfysD,EAAKC,WACP5Q,EAAMhgD,GAAI+wC,KAAKrpB,KAYvB7kB,EAAQgR,UAAU6/C,kBAAoB,SAAShsC,GAC7C,GAAIs4B,GAAQrgD,KAAKqgD,KACjB,KAAK,GAAIhgD,KAAMggD,GACTA,EAAMj6C,eAAe/F,IACvBggD,EAAMhgD,GAAI0zD,kBAAkBhsC,IASlC7kB,EAAQgR,UAAU02C,WAAa,WACgB,GAAzC5qD,KAAKqkD,UAAUd,wBACjBvjD,KAAKg0D,qBAKP,KADA,GAAIh8C,GAAQ,EACLhY,KAAK2nD,QAAU3vC,EAAQhY,KAAKqkD,UAAUP,yBAC3C9jD,KAAKi0D,eACLj8C,GAI0C,IAAxChY,KAAKqkD,UAAUN,uBACjB/jD,KAAK8nD,YAAYv3C,SAAS,IAAI,GAAO,GAGM,GAAzCvQ,KAAKqkD,UAAUd,wBACjBvjD,KAAKk0D,sBAGPl0D,KAAKyuB,KAAK,gCASZvrB,EAAQgR,UAAU8/C,oBAAsB,WACtC,GAAI9U,GAAQl/C,KAAKk/C,KACjB,KAAK,GAAI7+C,KAAM6+C,GACTA,EAAM94C,eAAe/F,IACJ,MAAf6+C,EAAM7+C,GAAImS,GAA4B,MAAf0sC,EAAM7+C,GAAIoS,IACnCysC,EAAM7+C,GAAI8zD,UAAU3hD,EAAI0sC,EAAM7+C,GAAIiuD,OAClCpP,EAAM7+C,GAAI8zD,UAAU1hD,EAAIysC,EAAM7+C,GAAIkuD,OAClCrP,EAAM7+C,GAAIiuD,QAAS,EACnBpP,EAAM7+C,GAAIkuD,QAAS,IAW3BrrD,EAAQgR,UAAUggD,oBAAsB,WACtC,GAAIhV,GAAQl/C,KAAKk/C,KACjB,KAAK,GAAI7+C,KAAM6+C,GACTA,EAAM94C,eAAe/F,IACM,MAAzB6+C,EAAM7+C,GAAI8zD,UAAU3hD,IACtB0sC,EAAM7+C,GAAIiuD,OAASpP,EAAM7+C,GAAI8zD,UAAU3hD,EACvC0sC,EAAM7+C,GAAIkuD,OAASrP,EAAM7+C,GAAI8zD,UAAU1hD,IAa/CvP,EAAQgR,UAAUkgD,UAAY,SAASC,GACrC,GAAInV,GAAQl/C,KAAKk/C,KACjB,KAAK,GAAI7+C,KAAM6+C,GACb,GAAkBr4C,SAAdq4C,EAAM7+C,IACwB,GAA5B6+C,EAAM7+C,GAAIi0D,SAASD,GACrB,OAAO,CAIb,QAAO,GAUTnxD,EAAQgR,UAAUqgD,mBAAqB,WACrC,GAEItL,GAFA71B,EAAWpzB,KAAK0+C,wBAChBQ,EAAQl/C,KAAKk/C,MAEbsV,GAAe,CAEnB,IAAIx0D,KAAKqkD,UAAUV,YAAc,EAC/B,IAAKsF,IAAU/J,GACTA,EAAM94C,eAAe6iD,KACvB/J,EAAM+J,GAAQwL,oBAAoBrhC,EAAUpzB,KAAKqkD,UAAUV,aAC3D6Q,GAAe,OAKnB,KAAKvL,IAAU/J,GACTA,EAAM94C,eAAe6iD,KACvB/J,EAAM+J,GAAQyL,aAAathC,GAC3BohC,GAAe,EAKrB,IAAoB,GAAhBA,EAAsB,CACxB,GAAIG,GAAgB30D,KAAKqkD,UAAUT,YAAcp/C,KAAKJ,IAAIpE,KAAKuE,MAAM,IACrE,OAAIowD,GAAgB,GAAI30D,KAAKqkD,UAAUV,aAC9B,EAGA3jD,KAAKo0D,UAAUO,GAG1B,OAAO,GAITzxD,EAAQgR,UAAU0gD,oBAAsB,WACtC,GAAI1V,GAAQl/C,KAAKk/C,KACjB,KAAK,GAAI+J,KAAU/J,GACbA,EAAM94C,eAAe6iD,IACvB/J,EAAM+J,GAAQ4L,kBAKpB3xD,EAAQgR,UAAU4gD,mBAAqB,WACrC90D,KAAK+0D,sBAAsB,uBACgB,GAAvC/0D,KAAKqkD,UAAUb,aAAar0C,SAA0D,GAAvCnP,KAAKqkD,UAAUb,aAAaC,SAC7EzjD,KAAKg1D,mBAAmB,wBAS5B9xD,EAAQgR,UAAU+/C,aAAe,WAC/B,IAAKj0D,KAAKomD,yBACW,GAAfpmD,KAAK2nD,OAAgB,CACvB,GAAIsN,IAAmB,EACnBC,GAAsB,CAE1Bl1D,MAAK+0D,sBAAsB,8BAC3B,IAAII,GAAan1D,KAAK+0D,sBAAsB,qBACD,IAAvC/0D,KAAKqkD,UAAUb,aAAar0C,SAA0D,GAAvCnP,KAAKqkD,UAAUb,aAAaC,UAC7EyR,EAAsBl1D,KAAKg1D,mBAAmB,sBAIhD,KAAK,GAAIlvD,GAAI,EAAGA,EAAIqvD,EAAWlvD,OAAQH,IACrCmvD,EAAmBE,EAAWrvD,IAAMmvD,CAItCj1D,MAAK2nD,OAASsN,GAAoBC,EACf,GAAfl1D,KAAK2nD,OACP3nD,KAAK80D,qBAI4B,GAA7B90D,KAAKsmD,uBACPtmD,KAAKyuB,KAAK,sBACVzuB,KAAKsmD,sBAAuB;AAIhCtmD,KAAK8jD,4BAYX5gD,EAAQgR,UAAUkhD,eAAiB,WAajC,GAXAp1D,KAAK4nD,MAAQ/gD,OAEe,GAAxB7G,KAAKooD,iBAEPpoD,KAAKqQ,QAIPrQ,KAAKq1D,oBAGc,GAAfr1D,KAAK2nD,OAAgB,CACvB,GAAI2N,GAAY1wD,KAAKu6B,KACrBn/B,MAAKi0D,cACL,IAAIzV,GAAc55C,KAAKu6B,MAAQm2B,GAG1Bt1D,KAAKs+C,eAAiBt+C,KAAKu+C,WAAa,EAAIC,GAAsC,GAAvBx+C,KAAKy+C,iBAA0C,GAAfz+C,KAAK2nD,SACnG3nD,KAAKi0D,eAGkB,GAAnBj0D,KAAKu+C,aACPv+C,KAAKy+C,gBAAiB,IAK5B,GAAI8W,GAAkB3wD,KAAKu6B,KAC3Bn/B,MAAKi3B,UACLj3B,KAAKu+C,WAAa35C,KAAKu6B,MAAQo2B,EAEH,GAAxBv1D,KAAKooD,iBAEPpoD,KAAKqQ,SAIa,mBAAXvI,UACTA,OAAOkrD,sBAAwBlrD,OAAOkrD,uBAAyBlrD,OAAO0tD,0BACvC1tD,OAAO2tD,6BAA+B3tD,OAAO4tD,yBAM9ExyD,EAAQgR,UAAU7D,MAAQ,WAIxB,GAHoC,GAAhCrQ,KAAKomD,0BACPpmD,KAAK2nD,QAAS,GAEG,GAAf3nD,KAAK2nD,QAAqC,GAAnB3nD,KAAK2lD,YAAsC,GAAnB3lD,KAAK4lD,YAAyC,GAAtB5lD,KAAK6lD,eAAwC,GAAlB7lD,KAAK6kD,UACpG7kD,KAAK4nD,QACoB,GAAxB5nD,KAAKooD,gBACPpoD,KAAK4nD,MAAQ9/C,OAAOyS,WAAWva,KAAKo1D,eAAe1/B,KAAK11B,MAAOA,KAAKs+C,gBAGpEt+C,KAAK4nD,MAAQ9/C,OAAOkrD,sBAAsBhzD,KAAKo1D,eAAe1/B,KAAK11B,YAOvE,IAFAA,KAAK0lD,iBAED1lD,KAAK8jD,wBAA0B,EAAG,CAKpC,GAAI5uC,GAAKlV,KACL6U,GACF8gD,WAAYzgD,EAAG4uC,wBAEjB9jD,MAAK8jD,wBAA0B,EAC/B9jD,KAAKsmD,sBAAuB,EAC5B/rC,WAAW,WACTrF,EAAGuZ,KAAK,aAAc5Z,IACrB,OAGH7U,MAAK8jD,wBAA0B,GAWrC5gD,EAAQgR,UAAUmhD,kBAAoB,WACpC,GAAuB,GAAnBr1D,KAAK2lD,YAAsC,GAAnB3lD,KAAK4lD,WAAiB,CAChD,GAAInnC,GAAcze,KAAKguD,iBACvBhuD,MAAKmmD,gBAAgB1nC,EAAYjM,EAAExS,KAAK2lD,WAAYlnC,EAAYhM,EAAEzS,KAAK4lD,YAEzE,GAA0B,GAAtB5lD,KAAK6lD,cAAoB,CAC3B,GAAI94B,IACFva,EAAGxS,KAAKsgB,MAAMC,OAAOC,YAAc,EACnC/N,EAAGzS,KAAKsgB,MAAMC,OAAOsF,aAAe,EAEtC7lB,MAAKmvD,MAAMnvD,KAAKuE,OAAO,EAAIvE,KAAK6lD,eAAgB94B,KAQpD7pB,EAAQgR,UAAU0hD,iBAAmB,SAASC,GAC9B,GAAVA,GACF71D,KAAKomD,yBAA0B,EAC/BpmD,KAAK2nD,QAAS,IAGd3nD,KAAKomD,yBAA0B,EAC/BpmD,KAAK2nD,QAAS,EACd3nD,KAAKqQ,UAWTnN,EAAQgR,UAAUu3C,uBAAyB,SAASrC,GAIlD,GAHqBviD,SAAjBuiD,IACFA,GAAe,GAE0B,GAAvCppD,KAAKqkD,UAAUb,aAAar0C,SAA0D,GAAvCnP,KAAKqkD,UAAUb,aAAaC,QAAiB,CAC9FzjD,KAAK0yD,oBAEL,KAAK,GAAIzJ,KAAUjpD,MAAK4yD,QAAiB,QAAS,MAC5C5yD,KAAK4yD,QAAiB,QAAS,MAAExsD,eAAe6iD,IACwBpiD,SAAtE7G,KAAKqgD,MAAMrgD,KAAK4yD,QAAiB,QAAS,MAAE3J,GAAQ6M,qBAC/C91D,MAAK4yD,QAAiB,QAAS,MAAE3J,OAK3C,CAEHjpD,KAAK4yD,QAAiB,QAAS,QAC/B,KAAK,GAAIxC,KAAUpwD,MAAKqgD,MAClBrgD,KAAKqgD,MAAMj6C,eAAegqD,KAC5BpwD,KAAKqgD,MAAM+P,GAAQuC,IAAM,MAM/B3yD,KAAK8xD,0BACA1I,IACHppD,KAAK2nD,QAAS,EACd3nD,KAAKqQ,UAWTnN,EAAQgR,UAAUw+C,mBAAqB,WACrC,GAA2C,GAAvC1yD,KAAKqkD,UAAUb,aAAar0C,SAA0D,GAAvCnP,KAAKqkD,UAAUb,aAAaC,QAC7E,IAAK,GAAI2M,KAAUpwD,MAAKqgD,MACtB,GAAIrgD,KAAKqgD,MAAMj6C,eAAegqD,GAAS,CACrC,GAAIY,GAAOhxD,KAAKqgD,MAAM+P,EACtB,IAAgB,MAAZY,EAAK2B,IAAa,CACpB,GAAI1J,GAAS,UAAUl0C,OAAOi8C,EAAK3wD,GACnCL,MAAK4yD,QAAiB,QAAS,MAAE3J,GAAU,GAAI1lD,IACtClD,GAAG4oD,EACF9J,KAAK,EACLG,MAAM,SACNC,MAAM,GACNwW,mBAAmB,SACb/1D,KAAKqkD,WACrB2M,EAAK2B,IAAM3yD,KAAK4yD,QAAiB,QAAS,MAAE3J,GAC5C+H,EAAK2B,IAAImD,aAAe9E,EAAK3wD,GAC7B2wD,EAAKgF,wBAYf9yD,EAAQgR,UAAUkqC,wBAA0B,WAC1C,IAAK,GAAI6X,KAAShO,GACZA,EAAY7hD,eAAe6vD,KAC7B/yD,EAAQgR,UAAU+hD,GAAShO,EAAYgO,KAQ7C/yD,EAAQgR,UAAUgiD,cAAgB,WAChCr7B,QAAQtG,IAAI,mEACZv0B,KAAKm2D,kBAMPjzD,EAAQgR,UAAUiiD,eAAiB,WACjC,GAAIC,KACJ,KAAK,GAAInN,KAAUjpD,MAAKk/C,MACtB,GAAIl/C,KAAKk/C,MAAM94C,eAAe6iD,GAAS,CACrC,GAAIN,GAAO3oD,KAAKk/C,MAAM+J,GAClBoN,GAAkBr2D,KAAKk/C,MAAMoP,OAC7BgI,GAAkBt2D,KAAKk/C,MAAMqP,QAC7BvuD,KAAKinD,UAAUtzC,MAAMs1C,GAAQz2C,GAAKhO,KAAK+pB,MAAMo6B,EAAKn2C,IAAMxS,KAAKinD,UAAUtzC,MAAMs1C,GAAQx2C,GAAKjO,KAAK+pB,MAAMo6B,EAAKl2C,KAC5G2jD,EAAU7tD,MAAMlI,GAAG4oD,EAAOz2C,EAAEhO,KAAK+pB,MAAMo6B,EAAKn2C,GAAGC,EAAEjO,KAAK+pB,MAAMo6B,EAAKl2C,GAAG4jD,eAAeA,EAAeC,eAAeA,IAIvHt2D,KAAKinD,UAAUrxC,OAAOwgD,IAMxBlzD,EAAQgR,UAAUqiD,aAAe,SAASpgD,GACxC,GAAIigD,KACJ,IAAYvvD,SAARsP,GACF,GAA0B,GAAtB5P,MAAMC,QAAQ2P,IAChB,IAAK,GAAIrQ,GAAI,EAAGA,EAAIqQ,EAAIlQ,OAAQH,IAC9B,GAA2Be,SAAvB7G,KAAKk/C,MAAM/oC,EAAIrQ,IAAmB,CACpC,GAAI6iD,GAAO3oD,KAAKk/C,MAAM/oC,EAAIrQ,GAC1BswD,GAAUjgD,EAAIrQ,KAAO0M,EAAGhO,KAAK+pB,MAAMo6B,EAAKn2C,GAAIC,EAAGjO,KAAK+pB,MAAMo6B,EAAKl2C,SAKnE,IAAwB5L,SAApB7G,KAAKk/C,MAAM/oC,GAAoB,CACjC,GAAIwyC,GAAO3oD,KAAKk/C,MAAM/oC,EACtBigD,GAAUjgD,IAAQ3D,EAAGhO,KAAK+pB,MAAMo6B,EAAKn2C,GAAIC,EAAGjO,KAAK+pB,MAAMo6B,EAAKl2C,SAKhE,KAAK,GAAIw2C,KAAUjpD,MAAKk/C,MACtB,GAAIl/C,KAAKk/C,MAAM94C,eAAe6iD,GAAS,CACrC,GAAIN,GAAO3oD,KAAKk/C,MAAM+J,EACtBmN,GAAUnN,IAAWz2C,EAAGhO,KAAK+pB,MAAMo6B,EAAKn2C,GAAIC,EAAGjO,KAAK+pB,MAAMo6B,EAAKl2C,IAIrE,MAAO2jD,IAWTlzD,EAAQgR,UAAUsiD,YAAc,SAAUvN,EAAQ/5C,GAChD,GAAIlP,KAAKk/C,MAAM94C,eAAe6iD,GAAS,CACrBpiD,SAAZqI,IACFA,KAEF,IAAIunD,IAAgBjkD,EAAGxS,KAAKk/C,MAAM+J,GAAQz2C,EAAGC,EAAGzS,KAAKk/C,MAAM+J,GAAQx2C,EACnEvD,GAAQ0V,SAAW6xC,EACnBvnD,EAAQwnD,aAAezN,EAEvBjpD,KAAK6oB,OAAO3Z,OAGZ2rB,SAAQtG,IAAI,iCAWhBrxB,EAAQgR,UAAU2U,OAAS,SAAU3Z,GACnC,MAAgBrI,UAAZqI,OACFA,OAGwBrI,SAAtBqI,EAAQwb,SAAoCxb,EAAQwb,QAAalY,EAAG,EAAGC,EAAG,IACpD5L,SAAtBqI,EAAQwb,OAAOlY,IAA6BtD,EAAQwb,OAAOlY,EAAK,GAC1C3L,SAAtBqI,EAAQwb,OAAOjY,IAA6BvD,EAAQwb,OAAOjY,EAAK,GAC1C5L,SAAtBqI,EAAQ3K,QAAoC2K,EAAQ3K,MAAYvE,KAAK4tD,aAC/C/mD,SAAtBqI,EAAQ0V,WAAoC1V,EAAQ0V,SAAY5kB,KAAKguD,mBAC/CnnD,SAAtBqI,EAAQ26C,YAAoC36C,EAAQ26C,WAAat5C,SAAS,IAC1ErB,EAAQ26C,aAAc,IAAsB36C,EAAQ26C,WAAat5C,SAAS,IAC1ErB,EAAQ26C,aAAc,IAAsB36C,EAAQ26C,cACrBhjD,SAA/BqI,EAAQ26C,UAAUt5C,WAA0BrB,EAAQ26C,UAAUt5C,SAAW,KACpC1J,SAArCqI,EAAQ26C,UAAU8M,iBAAgCznD,EAAQ26C,UAAU8M,eAAiB,qBAEzF32D,MAAK42D,YAAY1nD,KAcnBhM,EAAQgR,UAAU0iD,YAAc,SAAU1nD,GACxC,GAAgBrI,SAAZqI,EAEF,YADAA,KAKFlP,MAAKyuD,cACiB,GAAlBv/C,EAAQ2nD,SACV72D,KAAKmlD,eAAiBj2C,EAAQwnD,aAC9B12D,KAAKolD,mBAAqBl2C,EAAQwb,QAIb,GAAnB1qB,KAAK8kD,YACP9kD,KAAK82D,kBAAkB,GAGzB92D,KAAK+kD,YAAc/kD,KAAK4tD,YACxB5tD,KAAKilD,kBAAoBjlD,KAAKguD,kBAC9BhuD,KAAKglD,YAAc91C,EAAQ3K,MAI3BvE,KAAKie,UAAUje,KAAKglD,YACpB,IAAI+R,GAAa/2D,KAAKsvD,aAAa98C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,eAClGmxC,GACFxkD,EAAGukD,EAAWvkD,EAAItD,EAAQ0V,SAASpS,EACnCC,EAAGskD,EAAWtkD,EAAIvD,EAAQ0V,SAASnS,EAErCzS,MAAKklD,mBACH1yC,EAAGxS,KAAKilD,kBAAkBzyC,EAAIwkD,EAAmBxkD,EAAIxS,KAAKglD,YAAc91C,EAAQwb,OAAOlY,EACvFC,EAAGzS,KAAKilD,kBAAkBxyC,EAAIukD,EAAmBvkD,EAAIzS,KAAKglD,YAAc91C,EAAQwb,OAAOjY,GAIvD,GAA9BvD,EAAQ26C,UAAUt5C,SACO,MAAvBvQ,KAAKmlD,gBACPnlD,KAAKi3D,eAAiBj3D,KAAKi3B,QAC3Bj3B,KAAKi3B,QAAUj3B,KAAKk3D,gBAGpBl3D,KAAKie,UAAUje,KAAKglD,aACpBhlD,KAAKmmD,gBAAgBnmD,KAAKklD,kBAAkB1yC,EAAGxS,KAAKklD,kBAAkBzyC,GACtEzS,KAAKi3B,YAIPj3B,KAAK6kD,WAAY,EACjB7kD,KAAK2kD,eAAiB,GAAK3kD,KAAKq+C,kBAAoBnvC,EAAQ26C,UAAUt5C,SAAW,OAAU,EAAIvQ,KAAKq+C,kBACpGr+C,KAAK4kD,wBAA0B11C,EAAQ26C,UAAU8M,eACjD32D,KAAKi3D,eAAiBj3D,KAAKi3B,QAC3Bj3B,KAAKi3B,QAAUj3B,KAAK82D,kBACpB92D,KAAKi3B,UACLj3B,KAAKqQ,UAQTnN,EAAQgR,UAAUgjD,cAAgB,WAChC,GAAIT,IAAgBjkD,EAAGxS,KAAKk/C,MAAMl/C,KAAKmlD,gBAAgB3yC,EAAGC,EAAGzS,KAAKk/C,MAAMl/C,KAAKmlD,gBAAgB1yC,GACzFskD,EAAa/2D,KAAKsvD,aAAa98C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,eAClGmxC,GACFxkD,EAAGukD,EAAWvkD,EAAIikD,EAAajkD,EAC/BC,EAAGskD,EAAWtkD,EAAIgkD,EAAahkD,GAE7BwyC,EAAoBjlD,KAAKguD,kBACzB9I,GACF1yC,EAAGyyC,EAAkBzyC,EAAIwkD,EAAmBxkD,EAAIxS,KAAKuE,MAAQvE,KAAKolD,mBAAmB5yC,EACrFC,EAAGwyC,EAAkBxyC,EAAIukD,EAAmBvkD,EAAIzS,KAAKuE,MAAQvE,KAAKolD,mBAAmB3yC,EAGvFzS,MAAKmmD,gBAAgBjB,EAAkB1yC,EAAE0yC,EAAkBzyC,GAC3DzS,KAAKi3D,kBAGP/zD,EAAQgR,UAAUu6C,YAAc,WACH,MAAvBzuD,KAAKmlD,iBACPnlD,KAAKi3B,QAAUj3B,KAAKi3D,eACpBj3D,KAAKmlD,eAAiB,KACtBnlD,KAAKolD,mBAAqB,OAS9BliD,EAAQgR,UAAU4iD,kBAAoB,SAAUhS,GAC9C9kD,KAAK8kD,WAAaA,GAAc9kD,KAAK8kD,WAAa9kD,KAAK2kD,eACvD3kD,KAAK8kD,YAAc9kD,KAAK2kD,cAExB,IAAItyB,GAAW1xB,EAAK8P,gBAAgBzQ,KAAK4kD,yBAAyB5kD,KAAK8kD,WAEvE9kD,MAAKie,UAAUje,KAAK+kD,aAAe/kD,KAAKglD,YAAchlD,KAAK+kD,aAAe1yB,GAC1EryB,KAAKmmD,gBACHnmD,KAAKilD,kBAAkBzyC,GAAKxS,KAAKklD,kBAAkB1yC,EAAIxS,KAAKilD,kBAAkBzyC,GAAK6f,EACnFryB,KAAKilD,kBAAkBxyC,GAAKzS,KAAKklD,kBAAkBzyC,EAAIzS,KAAKilD,kBAAkBxyC,GAAK4f,GAGrFryB,KAAKi3D,iBAGDj3D,KAAK8kD,YAAc,IACrB9kD,KAAK6kD,WAAY,EACjB7kD,KAAK8kD,WAAa,EACS,MAAvB9kD,KAAKmlD,eACPnlD,KAAKi3B,QAAUj3B,KAAKk3D,cAGpBl3D,KAAKi3B,QAAUj3B,KAAKi3D,eAEtBj3D,KAAKyuB,KAAK,uBAIdvrB,EAAQgR,UAAU+iD,eAAiB,aAQnC/zD,EAAQgR,UAAU04C,SAAW,WAC3B,OAAQ5sD,KAAKqrD,WAAarrD,KAAKqrD,UAAU8L,QAQ3Cj0D,EAAQgR,UAAU+wB,SAAW,WAC3B,MAAOjlC,MAAKie,aAQd/a,EAAQgR,UAAU0hB,SAAW,WAC3B,MAAO51B,MAAK4tD,aAQd1qD,EAAQgR,UAAUkjD,qBAAuB,WACvC,MAAOp3D,MAAKsvD,aAAa98C,EAAG,GAAMxS,KAAKsgB,MAAMC,OAAOC,YAAa/N,EAAG,GAAMzS,KAAKsgB,MAAMC,OAAOsF,gBAI9F3iB,EAAQgR,UAAUmjD,eAAiB,SAASpO,GAC1C,MAA2BpiD,UAAvB7G,KAAKk/C,MAAM+J,GACNjpD,KAAKk/C,MAAM+J,GAAQD,YAD5B,QAKF9lD,EAAQgR,UAAUojD,kBAAoB,SAASrO,GAC7C,GAAIsO,KACJ,IAA2B1wD,SAAvB7G,KAAKk/C,MAAM+J,GAGb,IAAK,GAFDN,GAAO3oD,KAAKk/C,MAAM+J,GAClBuO,GAAWvO,QAAS,GACfnjD,EAAI,EAAGA,EAAI6iD,EAAKtI,MAAMp6C,OAAQH,IAAK,CAC1C,GAAIkrD,GAAOrI,EAAKtI,MAAMv6C,EAClBkrD,GAAKyG,MAAQxO,EACcpiD,SAAzB2wD,EAAQxG,EAAK0G,UACfH,EAAShvD,KAAKyoD,EAAK0G,QACnBF,EAAQxG,EAAK0G,SAAU,GAGlB1G,EAAK0G,QAAUzO,GACKpiD,SAAvB2wD,EAAQxG,EAAKyG,QACfF,EAAShvD,KAAKyoD,EAAKyG,MACnBD,EAAQxG,EAAKyG,OAAQ,GAK7B,MAAOF,IAITr0D,EAAQgR,UAAUyjD,iBAAmB,SAAS1O,GAC5C,GAAI2O,KACJ,IAA2B/wD,SAAvB7G,KAAKk/C,MAAM+J,GAEb,IAAK,GADDN,GAAO3oD,KAAKk/C,MAAM+J,GACbnjD,EAAI,EAAGA,EAAI6iD,EAAKtI,MAAMp6C,OAAQH,IACrC8xD,EAAUrvD,KAAKogD,EAAKtI,MAAMv6C,GAAGzF,GAGjC,OAAOu3D,IAGT10D,EAAQgR,UAAU2jD,oBAAsB,SAAStsD,GAC/C,MAAO5K,GAAKqL,WAAWT,IAIzB1L,EAAOD,QAAUsD,GAKb,SAASrD,EAAQD,EAASM,GAoB9B,QAASkD,GAAM+uD,EAAYhvD,EAAS20D,GAClC,IAAK30D,EACH,KAAM,qBAER,IAAIwL,IAAU,QAAQ,WAClB01C,EAAY1jD,EAAK+N,sBAAsBC,EAAOmpD,EAClD93D,MAAKkP,QAAUm1C,EAAUhE,MACzBrgD,KAAKghD,QAAUqD,EAAUrD,QACzBhhD,KAAKkP,QAAsB,aAAI4oD,EAA+B,aAG9D93D,KAAKmD,QAAUA,EAGfnD,KAAKK,GAASwG,OACd7G,KAAK03D,OAAS7wD,OACd7G,KAAKy3D,KAAS5wD,OACd7G,KAAKynC,MAAS5gC,OACd7G,KAAK+3D,cAAgB/3D,KAAKkP,QAAQoE,MAAQtT,KAAKkP,QAAQoxC,yBACvDtgD,KAAKsE,MAASuC,OACd7G,KAAKumC,UAAW,EAChBvmC,KAAKgN,OAAQ,EACbhN,KAAKg4D,iBAAmB/vD,IAAI,EAAEJ,KAAK,EAAEyL,MAAM,EAAEC,OAAO,EAAE0kD,MAAM,GAC5Dj4D,KAAKk4D,YAAa,EAClBl4D,KAAKoyD,YAAa,EAElBpyD,KAAKmqB,KAAO,KACZnqB,KAAKoqB,GAAK,KACVpqB,KAAK2yD,IAAM,KAEX3yD,KAAKm4D,WAAa,KAClBn4D,KAAKo4D,SAAW,KAIhBp4D,KAAKq4D,kBACLr4D,KAAKs4D,gBAELt4D,KAAKixD,WAAY,EAEjBjxD,KAAKu4D,YAAc,EACnBv4D,KAAKw4D,aAAc,EAEnBx4D,KAAKkyD,cAAcC,GAEnBnyD,KAAKy4D,qBAAsB,EAC3Bz4D,KAAK04D,cAAgBvuC,KAAK,KAAMC,GAAG,KAAMuuC,cACzC34D,KAAK44D,cAAgB,KAjEvB,GAAIj4D,GAAOT,EAAoB,GAC3BqD,EAAOrD,EAAoB,GAwE/BkD,GAAK8Q,UAAUg+C,cAAgB,SAASC,GAEtC,GADAnyD,KAAKoyD,YAAa,EACbD,EAAL,CAIA,GAAIxjD,IAAU,QAAQ,WAAW,WAAW,YAAY,WAAW,kBAAkB,kBAAkB,QACrG,2BAA2B,aAAa,mBAAmB,OAAO,eAAe,iBAAkB,UACnG,wBAAwB,eAsC1B,QApCAhO,EAAK8F,oBAAoBkI,EAAQ3O,KAAKkP,QAASijD,GAEvBtrD,SAApBsrD,EAAWhoC,OAA+BnqB,KAAK03D,OAASvF,EAAWhoC,MACjDtjB,SAAlBsrD,EAAW/nC,KAA+BpqB,KAAKy3D,KAAOtF,EAAW/nC,IAE/CvjB,SAAlBsrD,EAAW9xD,KAA+BL,KAAKK,GAAK8xD,EAAW9xD,IAC1CwG,SAArBsrD,EAAWn/C,QAA+BhT,KAAKgT,MAAQm/C,EAAWn/C,MAAOhT,KAAKk4D,YAAa,GAEtErxD,SAArBsrD,EAAW1qB,QAA6BznC,KAAKynC,MAAQ0qB,EAAW1qB,OAC3C5gC,SAArBsrD,EAAW7tD,QAA6BtE,KAAKsE,MAAQ6tD,EAAW7tD,OAC1CuC,SAAtBsrD,EAAWlsD,SAA6BjG,KAAKghD,QAAQK,aAAe8Q,EAAWlsD,QAE1DY,SAArBsrD,EAAW5mD,QACbvL,KAAKkP,QAAQ2xC,cAAe,EACxBlgD,EAAK8D,SAAS0tD,EAAW5mD,QAC3BvL,KAAKkP,QAAQ3D,MAAMA,MAAQ4mD,EAAW5mD,MACtCvL,KAAKkP,QAAQ3D,MAAMwB,UAAYolD,EAAW5mD,QAGX1E,SAA3BsrD,EAAW5mD,MAAMA,QAA0BvL,KAAKkP,QAAQ3D,MAAMA,MAAQ4mD,EAAW5mD,MAAMA,OACxD1E,SAA/BsrD,EAAW5mD,MAAMwB,YAA0B/M,KAAKkP,QAAQ3D,MAAMwB,UAAYolD,EAAW5mD,MAAMwB,WAChElG,SAA3BsrD,EAAW5mD,MAAMyB,QAA0BhN,KAAKkP,QAAQ3D,MAAMyB,MAAQmlD,EAAW5mD,MAAMyB,SAO/FhN,KAAK++C,UAEL/+C,KAAKu4D,WAAav4D,KAAKu4D,YAAoC1xD,SAArBsrD,EAAW7+C,MACjDtT,KAAKw4D,YAAcx4D,KAAKw4D,aAAsC3xD,SAAtBsrD,EAAWlsD,OAEnDjG,KAAK+3D,cAAgB/3D,KAAKkP,QAAQoE,MAAOtT,KAAKkP,QAAQoxC,yBAG9CtgD,KAAKkP,QAAQxB,OACnB,IAAK,OAAiB1N,KAAKoxC,KAAOpxC,KAAK64D,SAAW,MAClD,KAAK,QAAiB74D,KAAKoxC,KAAOpxC,KAAK84D,UAAY,MACnD,KAAK,eAAiB94D,KAAKoxC,KAAOpxC,KAAK+4D,gBAAkB,MACzD,KAAK,YAAiB/4D,KAAKoxC,KAAOpxC,KAAKg5D,aAAe,MACtD,SAAsBh5D,KAAKoxC,KAAOpxC,KAAK64D,aAQ3Cz1D,EAAK8Q,UAAU6qC,QAAU,WACvB/+C,KAAKwyD,aAELxyD,KAAKmqB,KAAOnqB,KAAKmD,QAAQ+7C,MAAMl/C,KAAK03D,SAAW,KAC/C13D,KAAKoqB,GAAKpqB,KAAKmD,QAAQ+7C,MAAMl/C,KAAKy3D,OAAS,KAC3Cz3D,KAAKixD,UAAajxD,KAAKmqB,MAAQnqB,KAAKoqB,GAEhCpqB,KAAKixD,WACPjxD,KAAKmqB,KAAK8uC,WAAWj5D,MACrBA,KAAKoqB,GAAG6uC,WAAWj5D,QAGfA,KAAKmqB,MACPnqB,KAAKmqB,KAAK+uC,WAAWl5D,MAEnBA,KAAKoqB,IACPpqB,KAAKoqB,GAAG8uC,WAAWl5D,QAQzBoD,EAAK8Q,UAAUs+C,WAAa,WACtBxyD,KAAKmqB,OACPnqB,KAAKmqB,KAAK+uC,WAAWl5D,MACrBA,KAAKmqB,KAAO,MAEVnqB,KAAKoqB,KACPpqB,KAAKoqB,GAAG8uC,WAAWl5D,MACnBA,KAAKoqB,GAAK,MAGZpqB,KAAKixD,WAAY,GAQnB7tD,EAAK8Q,UAAU48C,SAAW,WACxB,MAA6B,kBAAf9wD,MAAKynC,MAAuBznC,KAAKynC,QAAUznC,KAAKynC,OAQhErkC,EAAK8Q,UAAUyB,SAAW,WACxB,MAAO3V,MAAKsE,OASdlB,EAAK8Q,UAAU6+C,cAAgB,SAAS5uD,EAAKC,EAAKC,GAChD,IAAKrE,KAAKu4D,YAA6B1xD,SAAf7G,KAAKsE,MAAqB,CAChD,GAAIC,GAAQvE,KAAKkP,QAAQ+vC,sBAAsB96C,EAAKC,EAAKC,EAAOrE,KAAKsE,OACjE60D,EAAYn5D,KAAKkP,QAAQiZ,SAAWnoB,KAAKkP,QAAQgZ,QACrDloB,MAAKkP,QAAQoE,MAAQtT,KAAKkP,QAAQgZ,SAAW3jB,EAAQ40D,EACrDn5D,KAAK+3D,cAAgB/3D,KAAKkP,QAAQoE,MAAOtT,KAAKkP,QAAQoxC,2BAU1Dl9C,EAAK8Q,UAAUk9B,KAAO,SAASrpB,GAC7B,KAAM,uCAQR3kB,EAAK8Q,UAAU28C,kBAAoB,SAAS9sC,GAC1C,GAAI/jB,KAAKixD,UAAW,CAClB,GAAIhhC,GAAU,GACVmpC,EAAQp5D,KAAKmqB,KAAK3X,EAClB6mD,EAAQr5D,KAAKmqB,KAAK1X,EAClB6mD,EAAMt5D,KAAKoqB,GAAG5X,EACd+mD,EAAMv5D,KAAKoqB,GAAG3X,EACd+mD,EAAOz1C,EAAIlc,KACX4xD,EAAO11C,EAAI9b,IAEX8jB,EAAO/rB,KAAK05D,mBAAmBN,EAAOC,EAAOC,EAAKC,EAAKC,EAAMC,EAEjE,OAAexpC,GAAPlE,EAGR,OAAO,GAIX3oB,EAAK8Q,UAAUylD,UAAY,SAAS5xC,GAClC,GAAI6xC,GAAW55D,KAAKkP,QAAQ3D,KAC5B,IAAiC,GAA7BvL,KAAKkP,QAAQ4xC,aAAsB,CACrC,GACI+Y,GAAWC,EADXC,EAAMhyC,EAAIiyC,qBAAqBh6D,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,EAAGzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,EAkBhF,OAhBAonD,GAAY75D,KAAKmqB,KAAKjb,QAAQ3D,MAAMwB,UAAUD,OAC9CgtD,EAAU95D,KAAKoqB,GAAGlb,QAAQ3D,MAAMwB,UAAUD,OAGhB,GAAtB9M,KAAKmqB,KAAKoc,UAAyC,GAApBvmC,KAAKoqB,GAAGmc,UACzCszB,EAAYl5D,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,SAC9EsuD,EAAUn5D,EAAK2K,gBAAgBtL,KAAKoqB,GAAGlb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,UAE7C,GAAtBxL,KAAKmqB,KAAKoc,UAAwC,GAApBvmC,KAAKoqB,GAAGmc,SAC7CuzB,EAAU95D,KAAKoqB,GAAGlb,QAAQ3D,MAAMuB,OAEH,GAAtB9M,KAAKmqB,KAAKoc,UAAyC,GAApBvmC,KAAKoqB,GAAGmc,WAC9CszB,EAAY75D,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,QAEtCitD,EAAIE,aAAa,EAAGJ,GACpBE,EAAIE,aAAa,EAAGH,GACbC,EAwBT,MArBI/5D,MAAKoyD,cAAe,IACW,MAA7BpyD,KAAKkP,QAAQ2xC,aACf+Y,GACE7sD,UAAW/M,KAAKoqB,GAAGlb,QAAQ3D,MAAMwB,UAAUD,OAC3CE,MAAOhN,KAAKoqB,GAAGlb,QAAQ3D,MAAMyB,MAAMF,OACnCvB,MAAO5K,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,WAGvC,QAA7BxL,KAAKkP,QAAQ2xC,cAAuD,GAA7B7gD,KAAKkP,QAAQ2xC,gBAC3D+Y,GACE7sD,UAAW/M,KAAKmqB,KAAKjb,QAAQ3D,MAAMwB,UAAUD,OAC7CE,MAAOhN,KAAKmqB,KAAKjb,QAAQ3D,MAAMyB,MAAMF,OACrCvB,MAAO5K,EAAK2K,gBAAgBtL,KAAKmqB,KAAKjb,QAAQ3D,MAAMuB,OAAQ9M,KAAKkP,QAAQ1D,WAG7ExL,KAAKkP,QAAQ3D,MAAQquD,EACrB55D,KAAKoyD,YAAa,GAKC,GAAjBpyD,KAAKumC,SAA4BqzB,EAAS7sD,UACvB,GAAd/M,KAAKgN,MAAuB4sD,EAAS5sD,MACT4sD,EAASruD,OAWhDnI,EAAK8Q,UAAU2kD,UAAY,SAAS9wC,GAKlC,GAHAA,EAAIY,YAAc3oB,KAAK25D,UAAU5xC,GACjCA,EAAIO,UAActoB,KAAKk6D,gBAEnBl6D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAExB,GAGIxX,GAHA+/C,EAAM3yD,KAAKm6D,MAAMpyC,EAIrB,IAAI/nB,KAAKgT,MAAO,CACd,GAAyC,GAArChT,KAAKkP,QAAQs0C,aAAar0C,SAA0B,MAAPwjD,EAAa,CAC5D,GAAIyH,GAAY,IAAK,IAAKp6D,KAAKmqB,KAAK3X,EAAImgD,EAAIngD,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAImgD,EAAIngD,IAClE6nD,EAAY,IAAK,IAAKr6D,KAAKmqB,KAAK1X,EAAIkgD,EAAIlgD,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAIkgD,EAAIlgD,GACtEG,IAASJ,EAAE4nD,EAAW3nD,EAAE4nD,OAGxBznD,GAAQ5S,KAAKs6D,aAAa,GAE5Bt6D,MAAKu6D,OAAOxyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,QAG3C,CACH,GAAID,GAAGC,EACH6Z,EAAStsB,KAAKghD,QAAQK,aAAe,EACrCsH,EAAO3oD,KAAKmqB,IACXw+B,GAAKr1C,OACRq1C,EAAK6R,OAAOzyC,GAEV4gC,EAAKr1C,MAAQq1C,EAAKp1C,QACpBf,EAAIm2C,EAAKn2C,EAAIm2C,EAAKr1C,MAAQ,EAC1Bb,EAAIk2C,EAAKl2C,EAAI6Z,IAGb9Z,EAAIm2C,EAAKn2C,EAAI8Z,EACb7Z,EAAIk2C,EAAKl2C,EAAIk2C,EAAKp1C,OAAS,GAE7BvT,KAAKy6D,QAAQ1yC,EAAKvV,EAAGC,EAAG6Z,GACxB1Z,EAAQ5S,KAAK06D,eAAeloD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKu6D,OAAOxyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,KAUhDrP,EAAK8Q,UAAUgmD,cAAgB,WAC7B,MAAqB,IAAjBl6D,KAAKumC,SACC/hC,KAAKJ,IAAII,KAAKL,IAAInE,KAAK+3D,cAAe/3D,KAAKkP,QAAQiZ,UAAW,GAAInoB,KAAK26D,iBAG7D,GAAd36D,KAAKgN,MACAxI,KAAKJ,IAAII,KAAKL,IAAInE,KAAKkP,QAAQqxC,WAAYvgD,KAAKkP,QAAQiZ,UAAW,GAAInoB,KAAK26D,iBAG5En2D,KAAKJ,IAAIpE,KAAKkP,QAAQoE,MAAO,GAAItT,KAAK26D,kBAKnDv3D,EAAK8Q,UAAU0mD,mBAAqB,WAClC,GAAyC,GAArC56D,KAAKkP,QAAQs0C,aAAaC,SAAwD,GAArCzjD,KAAKkP,QAAQs0C,aAAar0C,QACzE,MAAOnP,MAAK2yD,GAET,IAAyC,GAArC3yD,KAAKkP,QAAQs0C,aAAar0C,QACjC,OAAQqD,EAAE,EAAEC,EAAE,EAGd,IAAIooD,GAAO,KACPC,EAAO,KACPrR,EAASzpD,KAAKkP,QAAQs0C,aAAaE,UACnCv8C,EAAOnH,KAAKkP,QAAQs0C,aAAar8C,KACjCyY,EAAKpb,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACpCqN,EAAKrb,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACxC,IAAY,YAARtL,GAA8B,iBAARA,EACpB3C,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACjEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxBqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS5pC,EAC9Bi7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS5pC,GAEvB7f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7BqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS5pC,EAC9Bi7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS5pC,GAGzB7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxBqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS5pC,EAC9Bi7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS5pC,GAEvB7f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7BqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS5pC,EAC9Bi7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS5pC,IAGtB,YAAR1Y,IACF0zD,EAAYpR,EAAS5pC,EAAdD,EAAmB5f,KAAKmqB,KAAK3X,EAAIqoD,IAGnCr2D,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KACtEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxBqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS7pC,EAC9Bk7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS7pC,GAEvB5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7BqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS7pC,EAC9Bk7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS7pC,GAGzB5f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxBqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS7pC,EAC9Bk7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS7pC,GAEvB5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7BqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS7pC,EAC9Bk7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS7pC,IAGtB,YAARzY,IACF2zD,EAAYrR,EAAS7pC,EAAdC,EAAmB7f,KAAKmqB,KAAK1X,EAAIqoD,QAIzC,IAAY,iBAAR3zD,EACH3C,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACrEooD,EAAO76D,KAAKmqB,KAAK3X,EAEfsoD,EADE96D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACjBzS,KAAKoqB,GAAG3X,GAAK,EAAIg3C,GAAU5pC,EAG3B7f,KAAKoqB,GAAG3X,GAAK,EAAIg3C,GAAU5pC,GAG7Brb,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KAExEooD,EADE76D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EACjBxS,KAAKoqB,GAAG5X,GAAK,EAAIi3C,GAAU7pC,EAG3B5f,KAAKoqB,GAAG5X,GAAK,EAAIi3C,GAAU7pC,EAEpCk7C,EAAO96D,KAAKmqB,KAAK1X,OAGhB,IAAY,cAARtL,EAEL0zD,EADE76D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EACjBxS,KAAKoqB,GAAG5X,GAAK,EAAIi3C,GAAU7pC,EAG3B5f,KAAKoqB,GAAG5X,GAAK,EAAIi3C,GAAU7pC,EAEpCk7C,EAAO96D,KAAKmqB,KAAK1X,MAEd,IAAY,YAARtL,EACP0zD,EAAO76D,KAAKmqB,KAAK3X,EAEfsoD,EADE96D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACjBzS,KAAKoqB,GAAG3X,GAAK,EAAIg3C,GAAU5pC,EAG3B7f,KAAKoqB,GAAG3X,GAAK,EAAIg3C,GAAU5pC,MAGjC,IAAY,YAAR1Y,EAAoB,CAC3B,GAAIyY,GAAK5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC3BqN,EAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3B6Z,EAAS9nB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAC9Bk7C,EAAKv2D,KAAKgoB,GAEVwuC,EAAgBx2D,KAAKy2D,MAAMp7C,EAAGD,GAC9Bs7C,GAAWF,GAA2B,GAATvR,EAAgB,IAAOsR,IAAO,EAAIA,EAEnEF,GAAO76D,KAAKmqB,KAAK3X,GAAY,GAAPi3C,EAAa,IAAKn9B,EAAO9nB,KAAK4a,IAAI87C,GACxDJ,EAAO96D,KAAKmqB,KAAK1X,GAAY,GAAPg3C,EAAa,IAAKn9B,EAAO9nB,KAAK+a,IAAI27C,OAErD,IAAY,aAAR/zD,EAAqB,CAC5B,GAAIyY,GAAK5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC3BqN,EAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3B6Z,EAAS9nB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAC9Bk7C,EAAKv2D,KAAKgoB,GAEVwuC,EAAgBx2D,KAAKy2D,MAAMp7C,EAAGD,GAC9Bs7C,GAAWF,GAA4B,IAATvR,EAAgB,IAAOsR,IAAO,EAAIA,EAEpEF,GAAO76D,KAAKmqB,KAAK3X,GAAY,GAAPi3C,EAAa,IAAKn9B,EAAO9nB,KAAK4a,IAAI87C,GACxDJ,EAAO96D,KAAKmqB,KAAK1X,GAAY,GAAPg3C,EAAa,IAAKn9B,EAAO9nB,KAAK+a,IAAI27C,OAGpD12D,MAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,GACjEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxBqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS5pC,EAC9Bi7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS5pC,EAC9Bg7C,EAAO76D,KAAKoqB,GAAG5X,EAAIqoD,EAAO76D,KAAKoqB,GAAG5X,EAAIqoD,GAE/B76D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7BqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS5pC,EAC9Bi7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS5pC,EAC9Bg7C,EAAO76D,KAAKoqB,GAAG5X,EAAIqoD,EAAO76D,KAAKoqB,GAAG5X,EAAIqoD,GAGjC76D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxBqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS5pC,EAC9Bi7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS5pC,EAC9Bg7C,EAAO76D,KAAKoqB,GAAG5X,EAAIqoD,EAAO76D,KAAKoqB,GAAG5X,EAAIqoD,GAE/B76D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7BqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS5pC,EAC9Bi7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS5pC,EAC9Bg7C,EAAO76D,KAAKoqB,GAAG5X,EAAIqoD,EAAO76D,KAAKoqB,GAAG5X,EAAIqoD,IAInCr2D,KAAKknB,IAAI1rB,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAAKhO,KAAKknB,IAAI1rB,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,KACtEzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EACpBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxBqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS7pC,EAC9Bk7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS7pC,EAC9Bk7C,EAAO96D,KAAKoqB,GAAG3X,EAAIqoD,EAAO96D,KAAKoqB,GAAG3X,EAAIqoD,GAE/B96D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7BqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS7pC,EAC9Bk7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS7pC,EAC9Bk7C,EAAO96D,KAAKoqB,GAAG3X,EAAIqoD,EAAO96D,KAAKoqB,GAAG3X,EAAIqoD,GAGjC96D,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IACzBzS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GACxBqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS7pC,EAC9Bk7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS7pC,EAC9Bk7C,EAAO96D,KAAKoqB,GAAG3X,EAAIqoD,EAAO96D,KAAKoqB,GAAG3X,EAAIqoD,GAE/B96D,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,IAC7BqoD,EAAO76D,KAAKmqB,KAAK3X,EAAIi3C,EAAS7pC,EAC9Bk7C,EAAO96D,KAAKmqB,KAAK1X,EAAIg3C,EAAS7pC,EAC9Bk7C,EAAO96D,KAAKoqB,GAAG3X,EAAIqoD,EAAO96D,KAAKoqB,GAAG3X,EAAIqoD,IAO9C,QAAQtoD,EAAGqoD,EAAMpoD,EAAGqoD,IASxB13D,EAAK8Q,UAAUimD,MAAQ,SAAUpyC,GAI/B,GAFAA,EAAIa,YACJb,EAAIc,OAAO7oB,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,GACO,GAArCzS,KAAKkP,QAAQs0C,aAAar0C,QAAiB,CAC7C,GAAyC,GAArCnP,KAAKkP,QAAQs0C,aAAaC,QAAkB,CAC9C,GAAIkP,GAAM3yD,KAAK46D,oBACf,OAAa,OAATjI,EAAIngD,GACNuV,EAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9BsV,EAAIlH,SACG,OAKPkH,EAAIozC,iBAAiBxI,EAAIngD,EAAEmgD,EAAIlgD,EAAEzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GACpDsV,EAAIlH,SAGG8xC,GAMT,MAFA5qC,GAAIozC,iBAAiBn7D,KAAK2yD,IAAIngD,EAAExS,KAAK2yD,IAAIlgD,EAAEzS,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9DsV,EAAIlH,SACG7gB,KAAK2yD,IAMd,MAFA5qC,GAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,GAC9BsV,EAAIlH,SACG,MAYXzd,EAAK8Q,UAAUumD,QAAU,SAAU1yC,EAAKvV,EAAGC,EAAG6Z,GAE5CvE,EAAIa,YACJb,EAAIwE,IAAI/Z,EAAGC,EAAG6Z,EAAQ,EAAG,EAAI9nB,KAAKgoB,IAAI,GACtCzE,EAAIlH,UAWNzd,EAAK8Q,UAAUqmD,OAAS,SAAUxyC,EAAKuC,EAAM9X,EAAGC,GAC9C,GAAI6X,EAAM,CACRvC,EAAIQ,MAASvoB,KAAKmqB,KAAKoc,UAAYvmC,KAAKoqB,GAAGmc,SAAY,QAAU,IACjEvmC,KAAKkP,QAAQuwC,SAAW,MAAQz/C,KAAKkP,QAAQwwC,QAC7C,IAAIuY,EAEJ,IAAuB,GAAnBj4D,KAAKk4D,WAAoB,CAC3B,GAAInsB,GAAQrnC,OAAO4lB,GAAMhiB,MAAM,MAC3B8yD,EAAYrvB,EAAM9lC,OAClBw5C,EAAWx7C,OAAOjE,KAAKkP,QAAQuwC,SACnCwY,GAAQxlD,GAAK,EAAI2oD,GAAa,EAAI3b,CAGlC,KAAK,GADDnsC,GAAQyU,EAAIszC,YAAYtvB,EAAM,IAAIz4B,MAC7BxN,EAAI,EAAOs1D,EAAJt1D,EAAeA,IAAK,CAClC,GAAIwiB,GAAYP,EAAIszC,YAAYtvB,EAAMjmC,IAAIwN,KAC1CA,GAAQgV,EAAYhV,EAAQgV,EAAYhV,EAE1C,GAAIC,GAASvT,KAAKkP,QAAQuwC,SAAW2b,EACjCvzD,EAAO2K,EAAIc,EAAQ,EACnBrL,EAAMwK,EAAIc,EAAS,CAGvBvT,MAAKg4D,iBAAmB/vD,IAAIA,EAAIJ,KAAKA,EAAKyL,MAAMA,EAAMC,OAAOA,EAAO0kD,MAAMA,GAG/E,GAAIA,GAAQj4D,KAAKg4D,gBAAgBC,KAEjClwC,GAAIorC,OAE+B,cAA/BnzD,KAAKkP,QAAQsxC,iBAChBz4B,EAAIqrC,UAAU5gD,EAAGylD,GACjBj4D,KAAKs7D,yBAAyBvzC,GAC9BvV,EAAI,EACJylD,EAAQ,GAITj4D,KAAKu7D,eAAexzC,GACpB/nB,KAAKw7D,eAAezzC,EAAIvV,EAAEylD,EAAOlsB,EAAOqvB,EAAW3b,GAEnD13B,EAAIurC,YASLlwD,EAAK8Q,UAAUonD,yBAA2B,SAASvzC,GAClD,GAAIlI,GAAK7f,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,EAC3BmN,EAAK5f,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,EAC3BipD,EAAiBj3D,KAAKy2D,MAAMp7C,EAAID,IAGf,GAAjB67C,GAA4B,EAAL77C,GAAY67C,EAAiB,GAAU,EAAL77C,KAC5D67C,GAAkCj3D,KAAKgoB,IAGxCzE,EAAI2zC,OAAOD,IASZr4D,EAAK8Q,UAAUqnD,eAAiB,SAASxzC,GACxC,GAA8BlhB,SAA1B7G,KAAKkP,QAAQywC,UAAoD,OAA1B3/C,KAAKkP,QAAQywC,UAA+C,SAA1B3/C,KAAKkP,QAAQywC,SAAqB,CAC9G53B,EAAIiB,UAAYhpB,KAAKkP,QAAQywC,QAE7B,IAAIgc,GAAa,CAEoB,gBAA/B37D,KAAKkP,QAAQsxC,eACfz4B,EAAI6zC,SAAuC,IAA7B57D,KAAKg4D,gBAAgB1kD,MAA4C,IAA9BtT,KAAKg4D,gBAAgBzkD,OAAcvT,KAAKg4D,gBAAgB1kD,MAAOtT,KAAKg4D,gBAAgBzkD,QAE/F,cAA/BvT,KAAKkP,QAAQsxC,eACpBz4B,EAAI6zC,SAAuC,IAA7B57D,KAAKg4D,gBAAgB1kD,QAAetT,KAAKg4D,gBAAgBzkD,OAASooD,GAAa37D,KAAKg4D,gBAAgB1kD,MAAOtT,KAAKg4D,gBAAgBzkD,QAExG,cAA/BvT,KAAKkP,QAAQsxC,eACpBz4B,EAAI6zC,SAAuC,IAA7B57D,KAAKg4D,gBAAgB1kD,MAAaqoD,EAAY37D,KAAKg4D,gBAAgB1kD,MAAOtT,KAAKg4D,gBAAgBzkD,QAG7GwU,EAAI6zC,SAAS57D,KAAKg4D,gBAAgBnwD,KAAM7H,KAAKg4D,gBAAgB/vD,IAAKjI,KAAKg4D,gBAAgB1kD,MAAOtT,KAAKg4D,gBAAgBzkD,UAezHnQ,EAAK8Q,UAAUsnD,eAAiB,SAASzzC,EAAKvV,EAAGylD,EAAOlsB,EAAOqvB,EAAW3b,GAMxE,GAJD13B,EAAIiB,UAAYhpB,KAAKkP,QAAQswC,WAAa,QAC1Cz3B,EAAIuB,UAAY,SAGoB,cAA/BtpB,KAAKkP,QAAQsxC,eAAgC,CAC/C,GAAImb,GAAa,CACkB,eAA/B37D,KAAKkP,QAAQsxC,gBACfz4B,EAAIwB,aAAe,aACnB0uC,GAAS,EAAI0D,GAEyB,cAA/B37D,KAAKkP,QAAQsxC,gBACpBz4B,EAAIwB,aAAe,UACnB0uC,GAAS,EAAI0D,GAGb5zC,EAAIwB,aAAe,aAIrBxB,GAAIwB,aAAe,QAIjBvpB,MAAKkP,QAAQ0wC,gBAAkB,IACjC73B,EAAIO,UAActoB,KAAKkP,QAAQ0wC,gBAC/B73B,EAAIY,YAAc3oB,KAAKkP,QAAQ2wC,gBAC/B93B,EAAI8zC,SAAc,QAErB,KAAK,GAAI/1D,GAAI,EAAOs1D,EAAJt1D,EAAeA,IACzB9F,KAAKkP,QAAQ0wC,gBAAkB,GAChC73B,EAAI+zC,WAAW/vB,EAAMjmC,GAAI0M,EAAGylD,GAEhClwC,EAAIyB,SAASuiB,EAAMjmC,GAAI0M,EAAGylD,GAC1BA,GAASxY,GAaXr8C,EAAK8Q,UAAU8kD,cAAgB,SAASjxC,GAEtCA,EAAIY,YAAc3oB,KAAK25D,UAAU5xC,GACjCA,EAAIO,UAAYtoB,KAAKk6D,eAErB,IAAIvH,GAAM,IAEV,IAAwB9rD,SAApBkhB,EAAIg0C,YAA2B,CACjCh0C,EAAIorC,MAEJ,IAAI6I,IAAW,EAEbA,GAD+Bn1D,SAA7B7G,KAAKkP,QAAQwxC,KAAKz6C,QAAkDY,SAA1B7G,KAAKkP,QAAQwxC,KAAKC,KACnD3gD,KAAKkP,QAAQwxC,KAAKz6C,OAAOjG,KAAKkP,QAAQwxC,KAAKC,MAG3C,EAAE,GAIf54B,EAAIg0C,YAAYC,GAChBj0C,EAAIk0C,eAAiB,EAGrBtJ,EAAM3yD,KAAKm6D,MAAMpyC,GAGjBA,EAAIg0C,aAAa,IACjBh0C,EAAIk0C,eAAiB,EACrBl0C,EAAIurC,cAIJvrC,GAAIa,YACJb,EAAIm0C,QAAU,QACsBr1D,SAAhC7G,KAAKkP,QAAQwxC,KAAKE,UAEpB74B,EAAIo0C,WAAWn8D,KAAKmqB,KAAK3X,EAAExS,KAAKmqB,KAAK1X,EAAEzS,KAAKoqB,GAAG5X,EAAExS,KAAKoqB,GAAG3X,GACpDzS,KAAKkP,QAAQwxC,KAAKz6C,OAAOjG,KAAKkP,QAAQwxC,KAAKC,IAAI3gD,KAAKkP,QAAQwxC,KAAKE,UAAU5gD,KAAKkP,QAAQwxC,KAAKC,MAE9D95C,SAA7B7G,KAAKkP,QAAQwxC,KAAKz6C,QAAkDY,SAA1B7G,KAAKkP,QAAQwxC,KAAKC,IAEnE54B,EAAIo0C,WAAWn8D,KAAKmqB,KAAK3X,EAAExS,KAAKmqB,KAAK1X,EAAEzS,KAAKoqB,GAAG5X,EAAExS,KAAKoqB,GAAG3X,GACpDzS,KAAKkP,QAAQwxC,KAAKz6C,OAAOjG,KAAKkP,QAAQwxC,KAAKC,OAIhD54B,EAAIc,OAAO7oB,KAAKmqB,KAAK3X,EAAGxS,KAAKmqB,KAAK1X,GAClCsV,EAAIe,OAAO9oB,KAAKoqB,GAAG5X,EAAGxS,KAAKoqB,GAAG3X,IAEhCsV,EAAIlH,QAIN,IAAI7gB,KAAKgT,MAAO,CACd,GAAIJ,EACJ,IAAyC,GAArC5S,KAAKkP,QAAQs0C,aAAar0C,SAA0B,MAAPwjD,EAAa,CAC5D,GAAIyH,GAAY,IAAK,IAAKp6D,KAAKmqB,KAAK3X,EAAImgD,EAAIngD,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAImgD,EAAIngD,IAClE6nD,EAAY,IAAK,IAAKr6D,KAAKmqB,KAAK1X,EAAIkgD,EAAIlgD,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAIkgD,EAAIlgD,GACtEG,IAASJ,EAAE4nD,EAAW3nD,EAAE4nD,OAGxBznD,GAAQ5S,KAAKs6D,aAAa,GAE5Bt6D,MAAKu6D,OAAOxyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,KAUhDrP,EAAK8Q,UAAUomD,aAAe,SAAU8B,GACtC,OACE5pD,GAAI,EAAI4pD,GAAcp8D,KAAKmqB,KAAK3X,EAAI4pD,EAAap8D,KAAKoqB,GAAG5X,EACzDC,GAAI,EAAI2pD,GAAcp8D,KAAKmqB,KAAK1X,EAAI2pD,EAAap8D,KAAKoqB,GAAG3X,IAa7DrP,EAAK8Q,UAAUwmD,eAAiB,SAAUloD,EAAGC,EAAG6Z,EAAQ8vC,GACtD,GAAIvK,GAA6B,GAApBuK,EAAa,EAAE,GAAS53D,KAAKgoB,EAC1C,QACEha,EAAGA,EAAI8Z,EAAS9nB,KAAK+a,IAAIsyC,GACzBp/C,EAAGA,EAAI6Z,EAAS9nB,KAAK4a,IAAIyyC,KAW7BzuD,EAAK8Q,UAAU6kD,iBAAmB,SAAShxC,GACzC,GAAInV,EAMJ,IAJAmV,EAAIY,YAAc3oB,KAAK25D,UAAU5xC,GACjCA,EAAIiB,UAAYjB,EAAIY,YACpBZ,EAAIO,UAAYtoB,KAAKk6D,gBAEjBl6D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAExB,GAAIuoC,GAAM3yD,KAAKm6D,MAAMpyC,GAEjB8pC,EAAQrtD,KAAKy2D,MAAOj7D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrEvM,GAAU,GAAK,EAAIjG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQuxC,gBAE1D,IAAyC,GAArCzgD,KAAKkP,QAAQs0C,aAAar0C,SAA0B,MAAPwjD,EAAa,CAC5D,GAAIyH,GAAY,IAAK,IAAKp6D,KAAKmqB,KAAK3X,EAAImgD,EAAIngD,GAAK,IAAKxS,KAAKoqB,GAAG5X,EAAImgD,EAAIngD,IAClE6nD,EAAY,IAAK,IAAKr6D,KAAKmqB,KAAK1X,EAAIkgD,EAAIlgD,GAAK,IAAKzS,KAAKoqB,GAAG3X,EAAIkgD,EAAIlgD,GACtEG,IAASJ,EAAE4nD,EAAW3nD,EAAE4nD,OAGxBznD,GAAQ5S,KAAKs6D,aAAa,GAG5BvyC,GAAIs0C,MAAMzpD,EAAMJ,EAAGI,EAAMH,EAAGo/C,EAAO5rD,GACnC8hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,OACPhT,KAAKu6D,OAAOxyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,OAG3C,CAEH,GAAID,GAAGC,EACH6Z,EAAS,IAAO9nB,KAAKJ,IAAI,IAAIpE,KAAKghD,QAAQK,cAC1CsH,EAAO3oD,KAAKmqB,IACXw+B,GAAKr1C,OACRq1C,EAAK6R,OAAOzyC,GAEV4gC,EAAKr1C,MAAQq1C,EAAKp1C,QACpBf,EAAIm2C,EAAKn2C,EAAiB,GAAbm2C,EAAKr1C,MAClBb,EAAIk2C,EAAKl2C,EAAI6Z,IAGb9Z,EAAIm2C,EAAKn2C,EAAI8Z,EACb7Z,EAAIk2C,EAAKl2C,EAAkB,GAAdk2C,EAAKp1C,QAEpBvT,KAAKy6D,QAAQ1yC,EAAKvV,EAAGC,EAAG6Z,EAGxB,IAAIulC,GAAQ,GAAMrtD,KAAKgoB,GACnBvmB,GAAU,GAAK,EAAIjG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQuxC,gBAC1D7tC,GAAQ5S,KAAK06D,eAAeloD,EAAGC,EAAG6Z,EAAQ,IAC1CvE,EAAIs0C,MAAMzpD,EAAMJ,EAAGI,EAAMH,EAAGo/C,EAAO5rD,GACnC8hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,QACPJ,EAAQ5S,KAAK06D,eAAeloD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKu6D,OAAOxyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,MAKlDrP,EAAK8Q,UAAUooD,eAAiB,SAAS/tD,GACvC,GAAIokD,GAAM3yD,KAAK46D,qBAEXpoD,EAAIhO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGvO,KAAKmqB,KAAK3X,EAAK,EAAEjE,GAAG,EAAIA,GAAIokD,EAAIngD,EAAIhO,KAAKkwB,IAAInmB,EAAE,GAAGvO,KAAKoqB,GAAG5X,EAC9EC,EAAIjO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAGvO,KAAKmqB,KAAK1X,EAAK,EAAElE,GAAG,EAAIA,GAAIokD,EAAIlgD,EAAIjO,KAAKkwB,IAAInmB,EAAE,GAAGvO,KAAKoqB,GAAG3X,CAElF,QAAQD,EAAEA,EAAEC,EAAEA,IAWhBrP,EAAK8Q,UAAUqoD,oBAAsB,SAASpyC,EAAKpC,GACjD,GAIIxB,GAAIsrC,EAAM2K,EAAkBC,EAAiBC,EAJ7CjtD,EAAgB,GAChBC,EAAY,EACZC,EAAM,EACNC,EAAO,EAEP+sD,EAAY,GACZhU,EAAO3oD,KAAKoqB,EAKhB,KAJY,GAARD,IACFw+B,EAAO3oD,KAAKmqB,MAGAva,GAAPD,GAA2BF,EAAZC,GAA2B,CAC/C,GAAIG,GAAwB,IAAdF,EAAMC,EAOpB,IALA2W,EAAMvmB,KAAKs8D,eAAezsD,GAC1BgiD,EAAQrtD,KAAKy2D,MAAOtS,EAAKl2C,EAAI8T,EAAI9T,EAAKk2C,EAAKn2C,EAAI+T,EAAI/T,GACnDgqD,EAAmB7T,EAAK6T,iBAAiBz0C,EAAI8pC,GAC7C4K,EAAkBj4D,KAAKgsB,KAAKhsB,KAAKkwB,IAAInO,EAAI/T,EAAEm2C,EAAKn2C,EAAE,GAAKhO,KAAKkwB,IAAInO,EAAI9T,EAAEk2C,EAAKl2C,EAAE,IAC7EiqD,EAAaF,EAAmBC,EAC5Bj4D,KAAKknB,IAAIgxC,GAAcC,EACzB,KAEoB,GAAbD,EACK,GAARvyC,EACFxa,EAAME,EAGND,EAAOC,EAIG,GAARsa,EACFva,EAAOC,EAGPF,EAAME,EAIVH,IAIF,MAFA6W,GAAIhY,EAAIsB,EAED0W,GAUTnjB,EAAK8Q,UAAU4kD,WAAa,SAAS/wC,GAEnCA,EAAIY,YAAc3oB,KAAK25D,UAAU5xC,GACjCA,EAAIiB,UAAYjB,EAAIY,YACpBZ,EAAIO,UAAYtoB,KAAKk6D,eAGrB,IAAIrI,GAAO5rD,EAAQ22D,CAGnB,IAAI58D,KAAKmqB,MAAQnqB,KAAKoqB,GAAI,CAKxB,GAHApqB,KAAKm6D,MAAMpyC,GAG8B,GAArC/nB,KAAKkP,QAAQs0C,aAAar0C,QAAiB,CAC7C,GAAIwjD,GAAM3yD,KAAK46D,oBACfgC,GAAW58D,KAAKu8D,qBAAoB,EAAOx0C,EAC3C,IAAI80C,GAAW78D,KAAKs8D,eAAe93D,KAAKJ,IAAI,EAAKw4D,EAASruD,EAAI,IAC9DsjD,GAAQrtD,KAAKy2D,MAAO2B,EAASnqD,EAAIoqD,EAASpqD,EAAKmqD,EAASpqD,EAAIqqD,EAASrqD,OAElE,CACHq/C,EAAQrtD,KAAKy2D,MAAOj7D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EACrE,IAAIoN,GAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5BqqD,EAAoBt4D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAC7Ck9C,EAAe/8D,KAAKoqB,GAAGoyC,iBAAiBz0C,EAAK8pC,GAC7CmL,GAAiBF,EAAoBC,GAAgBD,CAEzDF,MACAA,EAASpqD,GAAK,EAAIwqD,GAAiBh9D,KAAKmqB,KAAK3X,EAAIwqD,EAAgBh9D,KAAKoqB,GAAG5X,EACzEoqD,EAASnqD,GAAK,EAAIuqD,GAAiBh9D,KAAKmqB,KAAK1X,EAAIuqD,EAAgBh9D,KAAKoqB,GAAG3X,EAU3E,GANAxM,GAAU,GAAK,EAAIjG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQuxC,iBACtD14B,EAAIs0C,MAAMO,EAASpqD,EAAEoqD,EAASnqD,EAAGo/C,EAAO5rD,GACxC8hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,MAAO,CACd,GAAIJ,EAEFA,GADuC,GAArC5S,KAAKkP,QAAQs0C,aAAar0C,SAA0B,MAAPwjD,EACvC3yD,KAAKs8D,eAAe,IAGpBt8D,KAAKs6D,aAAa,IAE5Bt6D,KAAKu6D,OAAOxyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,QAG3C,CAEH,GACID,GAAGC,EAAG4pD,EADN1T,EAAO3oD,KAAKmqB,KAEZmC,EAAS,IAAO9nB,KAAKJ,IAAI,IAAIpE,KAAKghD,QAAQK,aACzCsH,GAAKr1C,OACRq1C,EAAK6R,OAAOzyC,GAEV4gC,EAAKr1C,MAAQq1C,EAAKp1C,QACpBf,EAAIm2C,EAAKn2C,EAAiB,GAAbm2C,EAAKr1C,MAClBb,EAAIk2C,EAAKl2C,EAAI6Z,EACb+vC,GACE7pD,EAAGA,EACHC,EAAGk2C,EAAKl2C,EACRo/C,MAAO,GAAMrtD,KAAKgoB,MAIpBha,EAAIm2C,EAAKn2C,EAAI8Z,EACb7Z,EAAIk2C,EAAKl2C,EAAkB,GAAdk2C,EAAKp1C,OAClB8oD,GACE7pD,EAAGm2C,EAAKn2C,EACRC,EAAGA,EACHo/C,MAAO,GAAMrtD,KAAKgoB,KAGtBzE,EAAIa,YAEJb,EAAIwE,IAAI/Z,EAAGC,EAAG6Z,EAAQ,EAAG,EAAI9nB,KAAKgoB,IAAI,GACtCzE,EAAIlH,QAGJ,IAAI5a,IAAU,GAAK,EAAIjG,KAAKkP,QAAQoE,OAAStT,KAAKkP,QAAQuxC,gBAC1D14B,GAAIs0C,MAAMA,EAAM7pD,EAAG6pD,EAAM5pD,EAAG4pD,EAAMxK,MAAO5rD,GACzC8hB,EAAInH,OACJmH,EAAIlH,SAGA7gB,KAAKgT,QACPJ,EAAQ5S,KAAK06D,eAAeloD,EAAGC,EAAG6Z,EAAQ,IAC1CtsB,KAAKu6D,OAAOxyC,EAAK/nB,KAAKgT,MAAOJ,EAAMJ,EAAGI,EAAMH,MAiBlDrP,EAAK8Q,UAAUwlD,mBAAqB,SAAUuD,EAAGC,EAAIC,EAAGC,EAAIC,EAAGC,GAC7D,GAAIxzD,GAAc,CAClB,IAAI9J,KAAKmqB,MAAQnqB,KAAKoqB,GACpB,GAAyC,GAArCpqB,KAAKkP,QAAQs0C,aAAar0C,QAAiB,CAC7C,GAAI0rD,GAAMC,CACV,IAAyC,GAArC96D,KAAKkP,QAAQs0C,aAAar0C,SAAwD,GAArCnP,KAAKkP,QAAQs0C,aAAaC,QACzEoX,EAAO76D,KAAK2yD,IAAIngD,EAChBsoD,EAAO96D,KAAK2yD,IAAIlgD,MAEb,CACH,GAAIkgD,GAAM3yD,KAAK46D,oBACfC,GAAOlI,EAAIngD,EACXsoD,EAAOnI,EAAIlgD,EAEb,GACIkU,GACA7gB,EAAEyI,EAAEiE,EAAEC,EAAG8qD,EAAOC,EAFhBC,EAAc,GAGlB,KAAK33D,EAAI,EAAO,GAAJA,EAAQA,IAClByI,EAAI,GAAIzI,EACR0M,EAAIhO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAG0uD,EAAM,EAAE1uD,GAAG,EAAIA,GAAIssD,EAAOr2D,KAAKkwB,IAAInmB,EAAE,GAAG4uD,EAC5D1qD,EAAIjO,KAAKkwB,IAAI,EAAEnmB,EAAE,GAAG2uD,EAAM,EAAE3uD,GAAG,EAAIA,GAAIusD,EAAOt2D,KAAKkwB,IAAInmB,EAAE,GAAG6uD,EACxDt3D,EAAI,IACN6gB,EAAW3mB,KAAK09D,mBAAmBH,EAAMC,EAAMhrD,EAAEC,EAAG4qD,EAAGC,GACvDG,EAAyBA,EAAX92C,EAAyBA,EAAW82C,GAEpDF,EAAQ/qD,EAAGgrD,EAAQ/qD,CAErB3I,GAAc2zD,MAGd3zD,GAAc9J,KAAK09D,mBAAmBT,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,OAGpD,CACH,GAAI9qD,GAAGC,EAAGmN,EAAIC,EACVyM,EAAS,IAAOtsB,KAAKghD,QAAQK,aAC7BsH,EAAO3oD,KAAKmqB,IACZw+B,GAAKr1C,MAAQq1C,EAAKp1C,QACpBf,EAAIm2C,EAAKn2C,EAAI,GAAMm2C,EAAKr1C,MACxBb,EAAIk2C,EAAKl2C,EAAI6Z,IAGb9Z,EAAIm2C,EAAKn2C,EAAI8Z,EACb7Z,EAAIk2C,EAAKl2C,EAAI,GAAMk2C,EAAKp1C,QAE1BqM,EAAKpN,EAAI6qD,EACTx9C,EAAKpN,EAAI6qD,EACTxzD,EAActF,KAAKknB,IAAIlnB,KAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,GAAMyM,GAGpD,MAAItsB,MAAKg4D,gBAAgBnwD,KAAOw1D,GAC9Br9D,KAAKg4D,gBAAgBnwD,KAAO7H,KAAKg4D,gBAAgB1kD,MAAQ+pD,GACzDr9D,KAAKg4D,gBAAgB/vD,IAAMq1D,GAC3Bt9D,KAAKg4D,gBAAgB/vD,IAAMjI,KAAKg4D,gBAAgBzkD,OAAS+pD,EAClD,EAGAxzD,GAIX1G,EAAK8Q,UAAUwpD,mBAAqB,SAAST,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GAC1D,GAAIK,GAAKR,EAAGF,EACVW,EAAKR,EAAGF,EACRW,EAAYF,EAAGA,EAAKC,EAAGA,EACvBE,IAAOT,EAAKJ,GAAMU,GAAML,EAAKJ,GAAMU,GAAMC,CAEvCC,GAAI,EACNA,EAAI,EAEO,EAAJA,IACPA,EAAI,EAGN,IAAItrD,GAAIyqD,EAAKa,EAAIH,EACflrD,EAAIyqD,EAAKY,EAAIF,EACbh+C,EAAKpN,EAAI6qD,EACTx9C,EAAKpN,EAAI6qD,CAQX,OAAO94D,MAAKgsB,KAAK5Q,EAAGA,EAAKC,EAAGA,IAQ9Bzc,EAAK8Q,UAAU+wB,SAAW,SAAS1gC,GACjCvE,KAAK26D,gBAAkB,EAAIp2D,GAI7BnB,EAAK8Q,UAAUyyB,OAAS,WACtB3mC,KAAKumC,UAAW,GAGlBnjC,EAAK8Q,UAAU0yB,SAAW,WACxB5mC,KAAKumC,UAAW,GAGlBnjC,EAAK8Q,UAAU8hD,mBAAqB,WACjB,OAAbh2D,KAAK2yD,KAA8B,OAAd3yD,KAAKmqB,MAA6B,OAAZnqB,KAAKoqB,IAClDpqB,KAAK2yD,IAAIngD,EAAI,IAAOxS,KAAKmqB,KAAK3X,EAAIxS,KAAKoqB,GAAG5X,GAC1CxS,KAAK2yD,IAAIlgD,EAAI,IAAOzS,KAAKmqB,KAAK1X,EAAIzS,KAAKoqB,GAAG3X,IAEtB,OAAbzS,KAAK2yD,MACZ3yD,KAAK2yD,IAAIngD,EAAI,EACbxS,KAAK2yD,IAAIlgD,EAAI,IASjBrP,EAAK8Q,UAAU6/C,kBAAoB,SAAShsC,GAC1C,GAAgC,GAA5B/nB,KAAKy4D,oBAA6B,CACpC,GAA+B,OAA3Bz4D,KAAK04D,aAAavuC,MAA0C,OAAzBnqB,KAAK04D,aAAatuC,GAAa,CACpE,GAAI2zC,GAAa,cAAchpD,OAAO/U,KAAKK,IACvC29D,EAAW,YAAYjpD,OAAO/U,KAAKK,IACnCgkD,GACYnF,OAAOxsC,MAAM,GAAI4Z,OAAO,EAAGtL,YAAY,EAAGo/B,oBAAqB,GAC/DY,SAASO,QAAQ,GACjBI,YAAac,sBAAuB,EAAGD,aAAclvC,MAAM,EAAGC,OAAQ,EAAG+Y,OAAO,IAEhGtsB,MAAK04D,aAAavuC,KAAO,GAAI5mB,IAC1BlD,GAAG09D,EACFze,MAAM,MACJ/zC,OAAOsB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAClEw3C,GACVrkD,KAAK04D,aAAatuC,GAAK,GAAI7mB,IACxBlD,GAAG29D,EACF1e,MAAM,MACN/zC,OAAOsB,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAChEw3C,GAGZrkD,KAAK04D,aAAaC,aACqB,GAAnC34D,KAAK04D,aAAavuC,KAAKoc,WACzBvmC,KAAK04D,aAAaC,UAAUxuC,KAAOnqB,KAAKi+D,2BAA2Bl2C,GACnE/nB,KAAK04D,aAAavuC,KAAK3X,EAAIxS,KAAK04D,aAAaC,UAAUxuC,KAAK3X,EAC5DxS,KAAK04D,aAAavuC,KAAK1X,EAAIzS,KAAK04D,aAAaC,UAAUxuC,KAAK1X,GAEzB,GAAjCzS,KAAK04D,aAAatuC,GAAGmc,WACvBvmC,KAAK04D,aAAaC,UAAUvuC,GAAKpqB,KAAKk+D,yBAAyBn2C,GAC/D/nB,KAAK04D,aAAatuC,GAAG5X,EAAIxS,KAAK04D,aAAaC,UAAUvuC,GAAG5X,EACxDxS,KAAK04D,aAAatuC,GAAG3X,EAAIzS,KAAK04D,aAAaC,UAAUvuC,GAAG3X,GAG1DzS,KAAK04D,aAAavuC,KAAKinB,KAAKrpB,GAC5B/nB,KAAK04D,aAAatuC,GAAGgnB,KAAKrpB,OAG1B/nB,MAAK04D,cAAgBvuC,KAAK,KAAMC,GAAG,KAAMuuC,eAQ7Cv1D,EAAK8Q,UAAUiqD,oBAAsB,WACnCn+D,KAAKm4D,WAAan4D,KAAKmqB,KACvBnqB,KAAKo4D,SAAWp4D,KAAKoqB,GACrBpqB,KAAKy4D,qBAAsB,GAO7Br1D,EAAK8Q,UAAUkqD,qBAAuB,WACpCp+D,KAAK03D,OAAS13D,KAAKmqB,KAAK9pB,GACxBL,KAAKy3D,KAAOz3D,KAAKoqB,GAAG/pB,GAChBL,KAAK03D,QAAU13D,KAAKm4D,WAAW93D,GACjCL,KAAKm4D,WAAWe,WAAWl5D,MAEpBA,KAAKy3D,MAAQz3D,KAAKo4D,SAAS/3D,IAClCL,KAAKo4D,SAASc,WAAWl5D,MAG3BA,KAAKm4D,WAAa,KAClBn4D,KAAKo4D,SAAW,KAChBp4D,KAAKy4D,qBAAsB,GAW7Br1D,EAAK8Q,UAAUmqD,wBAA0B,SAAS7rD,EAAEC,GAClD,GAAIkmD,GAAY34D,KAAK04D,aAAaC,UAC9B2F,EAAe95D,KAAKgsB,KAAKhsB,KAAKkwB,IAAIliB,EAAImmD,EAAUxuC,KAAK3X,EAAE,GAAKhO,KAAKkwB,IAAIjiB,EAAIkmD,EAAUxuC,KAAK1X,EAAE,IAC1F8rD,EAAe/5D,KAAKgsB,KAAKhsB,KAAKkwB,IAAIliB,EAAImmD,EAAUvuC,GAAG5X,EAAI,GAAKhO,KAAKkwB,IAAIjiB,EAAIkmD,EAAUvuC,GAAG3X,EAAI,GAE9F,OAAmB,IAAf6rD,GACFt+D,KAAK44D,cAAgB54D,KAAKmqB,KAC1BnqB,KAAKmqB,KAAOnqB,KAAK04D,aAAavuC,KACvBnqB,KAAK04D,aAAavuC,MAEL,GAAbo0C,GACPv+D,KAAK44D,cAAgB54D,KAAKoqB,GAC1BpqB,KAAKoqB,GAAKpqB,KAAK04D,aAAatuC,GACrBpqB,KAAK04D,aAAatuC,IAGlB,MASXhnB,EAAK8Q,UAAUsqD,qBAAuB,WACG,GAAnCx+D,KAAK04D,aAAavuC,KAAKoc,UACzBvmC,KAAKmqB,KAAOnqB,KAAK44D,cACjB54D,KAAK44D,cAAgB,KACrB54D,KAAK04D,aAAavuC,KAAKyc,YAEiB,GAAjC5mC,KAAK04D,aAAatuC,GAAGmc,WAC5BvmC,KAAKoqB,GAAKpqB,KAAK44D,cACf54D,KAAK44D,cAAgB,KACrB54D,KAAK04D,aAAatuC,GAAGwc,aAUzBxjC,EAAK8Q,UAAU+pD,2BAA6B,SAASl2C,GAEnD,GAAI02C,EACJ,IAAyC,GAArCz+D,KAAKkP,QAAQs0C,aAAar0C,QAC5BsvD,EAAqBz+D,KAAKu8D,qBAAoB,EAAMx0C,OAEjD,CACH,GAAI8pC,GAAQrtD,KAAKy2D,MAAOj7D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrEoN,EAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5BqqD,EAAoBt4D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAE7C6+C,EAAiB1+D,KAAKmqB,KAAKqyC,iBAAiBz0C,EAAK8pC,EAAQrtD,KAAKgoB,IAC9DmyC,GAAmB7B,EAAoB4B,GAAkB5B,CAC7D2B,MACAA,EAAmBjsD,EAAI,EAAoBxS,KAAKmqB,KAAK3X,GAAK,EAAImsD,GAAmB3+D,KAAKoqB,GAAG5X,EACzFisD,EAAmBhsD,EAAI,EAAoBzS,KAAKmqB,KAAK1X,GAAK,EAAIksD,GAAmB3+D,KAAKoqB,GAAG3X,EAG3F,MAAOgsD,IASTr7D,EAAK8Q,UAAUgqD,yBAA2B,SAASn2C,GAEjD,GAAuB62C,EACvB,IAAyC,GAArC5+D,KAAKkP,QAAQs0C,aAAar0C,QAC5ByvD,EAAmB5+D,KAAKu8D,qBAAoB,EAAOx0C,OAEhD,CACH,GAAI8pC,GAAQrtD,KAAKy2D,MAAOj7D,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAAKzS,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,GACrEoN,EAAM5f,KAAKoqB,GAAG5X,EAAIxS,KAAKmqB,KAAK3X,EAC5BqN,EAAM7f,KAAKoqB,GAAG3X,EAAIzS,KAAKmqB,KAAK1X,EAC5BqqD,EAAoBt4D,KAAKgsB,KAAK5Q,EAAKA,EAAKC,EAAKA,GAC7Ck9C,EAAe/8D,KAAKoqB,GAAGoyC,iBAAiBz0C,EAAK8pC,GAC7CmL,GAAiBF,EAAoBC,GAAgBD,CAEzD8B,MACAA,EAAiBpsD,GAAK,EAAIwqD,GAAiBh9D,KAAKmqB,KAAK3X,EAAIwqD,EAAgBh9D,KAAKoqB,GAAG5X,EACjFosD,EAAiBnsD,GAAK,EAAIuqD,GAAiBh9D,KAAKmqB,KAAK1X,EAAIuqD,EAAgBh9D,KAAKoqB,GAAG3X,EAGnF,MAAOmsD,IAGT/+D,EAAOD,QAAUwD,GAIb,SAASvD,EAAQD,EAASM,GAQ9B,QAASmD,KACPrD,KAAKyX,QACLzX,KAAK6+D,aAAe,EACpB7+D,KAAK8+D,eACL9+D,KAAK++D,WAAa,EAClB/+D,KAAKokD,kBAAmB,EAXflkD,EAAoB,EAkB/BmD,GAAO27D,UACJlyD,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAExIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index d97f8e6f..bdbe2b0f 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.12.1-SNAPSHOT - * @date 2015-04-07 + * @date 2015-04-17 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -22,21 +22,20 @@ * * Vis.js may be distributed under either license. */ -"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t,e){for(var i=1,s=arguments.length;s>i;i++){var o=arguments[i];for(var n in o)o.hasOwnProperty(n)&&(t[n]=o[n])}return t},e.selectiveExtend=function(t,e,i){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var s=2;si;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e,i){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(t){var e,i,s,n,r=this,a=o.getType(arguments[0]);"String"==a||"Number"==a?(e=arguments[0],s=arguments[1],n=arguments[2]):"Array"==a?(i=arguments[0],s=arguments[1],n=arguments[2]):(s=arguments[0],n=arguments[1]);var h;if(s&&s.returnType){var d=["DataTable","Array","Object"];if(h=-1==d.indexOf(s.returnType)?"Array":s.returnType,n&&h!=o.getType(n))throw new Error('Type of parameter "data" ('+o.getType(n)+") does not correspond with specified options.type ("+s.type+")");if("DataTable"==h&&!o.isDataTable(n))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else h=n&&"DataTable"==o.getType(n)?"DataTable":"Array";var l,c,p,u,m=s&&s.type||this._options.type,f=s&&s.filter,g=[];if(void 0!=e)l=r._getItem(e,m),f&&!f(l)&&(l=null);else if(void 0!=i)for(p=0,u=i.length;u>p;p++)l=r._getItem(i[p],m),(!f||f(l))&&g.push(l);else for(c in this._data)this._data.hasOwnProperty(c)&&(l=r._getItem(c,m),(!f||f(l))&&g.push(l));if(s&&s.order&&void 0==e&&this._sort(g,s.order),s&&s.fields){var v=s.fields;if(void 0!=e)l=this._filterFields(l,v);else for(p=0,u=g.length;u>p;p++)g[p]=this._filterFields(g[p],v)}if("DataTable"==h){var y=this._getColumnNames(n);if(void 0!=e)r._appendRow(n,y,l);else for(p=0;pp;p++)n.push(g[p]);return n}return g},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);else for(var s in t)t.hasOwnProperty(s)&&e.hasOwnProperty(s)&&(i[e[s]]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t,e,i){function s(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}s.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},s.extend=function(t,e){var i=new s(e);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){i.flush()};var o=[{name:"flush",original:void 0}];if(e&&e.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},s.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var S=this.yLabel;S.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(S,o.x,o.y));var D=this.zLabel;D.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(D,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/D/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
    x:"+t.point.x+"
    y:"+t.point.y+"
    z:"+t.point.z+"
    ",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]; +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(20),BackgroundItem:i(21),BoxItem:i(22),PointItem:i(23),RangeItem:i(24)},Component:i(25),CurrentTime:i(26),CustomTime:i(27),DataAxis:i(28),GraphGroup:i(29),Group:i(30),BackgroundGroup:i(31),ItemSet:i(32),Legend:i(33),LineGraph:i(34),TimeAxis:i(35)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.giveRange=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t,e){for(var i=1,s=arguments.length;s>i;i++){var o=arguments[i];for(var n in o)o.hasOwnProperty(n)&&(t[n]=o[n])}return t},e.selectiveExtend=function(t,e,i){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var s=2;si;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(-1!=t.indexOf("rgb")){var s=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+s[0]+","+s[1]+","+s[2]+","+i+")"}var s=e.hexToRGB(t);return null==s?t:"rgba("+s.r+","+s.g+","+s.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e,i){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n,r){var a;"circle"==s.options.drawPoints.style?(a=e.getSVGElement("circle",o,n),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(a=e.getSVGElement("rect",o,n),a.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),a.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),a.setAttributeNS(null,"width",s.options.drawPoints.size),a.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&a.setAttributeNS(null,"style",s.group.options.drawPoints.styles),a.setAttributeNS(null,"class",s.className+" point");var h=e.getSVGElement("text",o,n);return r&&(r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" label")),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i),a},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];"Date"==s||"ISODate"==s||"ASPDate"==s?this._type[i]="Date":this._type[i]=s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(t){var e,i,s,n,r=this,a=o.getType(arguments[0]);"String"==a||"Number"==a?(e=arguments[0],s=arguments[1],n=arguments[2]):"Array"==a?(i=arguments[0],s=arguments[1],n=arguments[2]):(s=arguments[0],n=arguments[1]);var h;if(s&&s.returnType){var d=["DataTable","Array","Object"];if(h=-1==d.indexOf(s.returnType)?"Array":s.returnType,n&&h!=o.getType(n))throw new Error('Type of parameter "data" ('+o.getType(n)+") does not correspond with specified options.type ("+s.type+")");if("DataTable"==h&&!o.isDataTable(n))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else h=n&&"DataTable"==o.getType(n)?"DataTable":"Array";var l,c,p,u,m=s&&s.type||this._options.type,f=s&&s.filter,g=[];if(void 0!=e)l=r._getItem(e,m),f&&!f(l)&&(l=null);else if(void 0!=i)for(p=0,u=i.length;u>p;p++)l=r._getItem(i[p],m),(!f||f(l))&&g.push(l);else for(c in this._data)this._data.hasOwnProperty(c)&&(l=r._getItem(c,m),(!f||f(l))&&g.push(l));if(s&&s.order&&void 0==e&&this._sort(g,s.order),s&&s.fields){var v=s.fields;if(void 0!=e)l=this._filterFields(l,v);else for(p=0,u=g.length;u>p;p++)g[p]=this._filterFields(g[p],v)}if("DataTable"==h){var y=this._getColumnNames(n);if(void 0!=e)r._appendRow(n,y,l);else for(p=0;pp;p++)n.push(g[p]);return n}return g},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){if(!t)return t;var i={};if(Array.isArray(e))for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);else for(var s in t)t.hasOwnProperty(s)&&e.hasOwnProperty(s)&&(i[e[s]]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],this.length--,t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],this.length--,e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this.length=0,this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this.length=0,this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this.length=e.length,this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.refresh=function(){for(var t,e=this._data.getIds({filter:this._options&&this._options.filter}),i={},s=[],o=[],n=0;ns;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,l.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?(c.push(n),d.push(e.data[s])):(this._ids[n]=!0,l.push(n)):this._ids[n]&&(delete this._ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],p.push(n))}this.length+=l.length-p.length,l.length&&this._trigger("add",{items:l},i),c.length&&this._trigger("update",{items:c,data:d},i),p.length&&this._trigger("remove",{items:p},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t,e,i){function s(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}s.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},s.extend=function(t,e){var i=new s(e);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){i.flush()};var o=[{name:"flush",original:void 0}];if(e&&e.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},s.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var S=this.yLabel;S.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(S,o.x,o.y));var D=this.zLabel;D.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(D,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/D/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,"function"==typeof this.showTooltip?e.innerHTML=this.showTooltip(t.point):e.innerHTML="
    x:"+t.point.x+"
    y:"+t.point.y+"
    z:"+t.point.z+"
    ",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){ +return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t,e,i){function s(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}s.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},s.prototype.setStep=function(t,e){void 0===t||0>=t||(void 0!==e&&(this.prettyStep=e),this.prettyStep===!0?this._step=s.calculatePrettyStep(t):this._step=t)},s.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},s.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},s.prototype.getStep=function(){return this._step},s.prototype.start=function(){this._current=this._start-this._start%this._step},s.prototype.next=function(){this._current+=this._step},s.prototype.end=function(){return this._current>this._end},t.exports=s},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)?m="current-time":o.hasParent(u,this.dom.center)&&(m="background"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},s.prototype.getEventProperties=function(t){var e=t.gesture?t.gesture.center.pageX:t.pageX,i=t.gesture?t.gesture.center.pageY:t.pageY,s=e-o.getAbsoluteLeft(this.dom.centerContainer),n=i-o.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(s),a=o.getTarget(t),h=null;o.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&o.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":o.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":o.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":o.hasParent(a,this.customTime.bar)?h="custom-time":o.hasParent(a,this.currentTime.bar)?h="current-time":o.hasParent(a,this.dom.center)&&(h="background");var d=[],l=this.linegraph.yAxisLeft,c=this.linegraph.yAxisRight;return l.hidden||d.push(l.screenToValue(n)),c.hidden||d.push(c.screenToValue(n)),{event:t,what:h,pageX:e,pageY:i,x:s,y:n,time:r,value:d}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t,e,i){function s(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}s.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},s.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},s.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},s.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},s.prototype.hasNext=function(){return this.current>=this.marginStart},s.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},s.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},s.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},s.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=s},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(t){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i; -},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t,e,i){function s(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}s.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},s.prototype.setStep=function(t,e){void 0===t||0>=t||(void 0!==e&&(this.prettyStep=e),this._step=this.prettyStep===!0?s.calculatePrettyStep(t):t)},s.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},s.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},s.prototype.getStep=function(){return this._step},s.prototype.start=function(){this._current=this._start-this._start%this._step},s.prototype.next=function(){this._current+=this._step},s.prototype.end=function(){return this._current>this._end},t.exports=s},function(t,e,i){function s(t,e,i,h){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n||i instanceof r)&&i instanceof Object){var u=h;h=i,i=u}var m=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function(){return m.timeAxis.step.scale},getStep:function(){return m.timeAxis.step.step},toScreen:m._toScreen.bind(m),toGlobalScreen:m._toGlobalScreen.bind(m),toTime:m._toTime.bind(m),toGlobalTime:m._toGlobalTime.bind(m)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.timeAxis2=null,this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){m.emit("click",m.getEventProperties(t))}),this.on("doubletap",function(t){m.emit("doubleClick",m.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){m.emit("contextmenu",m.getEventProperties(t))},h&&this.setOptions(h),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.getEventProperties=function(t){var e=this.itemSet.itemFromTarget(t),i=this.itemSet.groupFromTarget(t),s=t.gesture?t.gesture.center.pageX:t.pageX,n=t.gesture?t.gesture.center.pageY:t.pageY,r=s-o.getAbsoluteLeft(this.dom.centerContainer),a=n-o.getAbsoluteTop(this.dom.centerContainer),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),l=this.body.util.getStep(),c=this._toTime(r),p=h?h(c,d,l):c,u=o.getTarget(t),m=null;return null!=e?m="item":o.hasParent(u,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&o.hasParent(u,this.timeAxis2.dom.foreground)?m="axis":o.hasParent(u,this.itemSet.dom.labelSet)?m="group-label":o.hasParent(u,this.customTime.bar)?m="custom-time":o.hasParent(u,this.currentTime.bar)?m="current-time":o.hasParent(u,this.dom.center)&&(m="background"),{event:t,item:e?e.id:null,group:i?i.groupId:null,what:m,pageX:s,pageY:n,x:r,y:a,time:c,snappedTime:p}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){h.emit("click",h.getEventProperties(t))}),this.on("doubletap",function(t){h.emit("doubleClick",h.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){h.emit("contextmenu",h.getEventProperties(t))},s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this._redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},s.prototype.getEventProperties=function(t){var e=t.gesture?t.gesture.center.pageX:t.pageX,i=t.gesture?t.gesture.center.pageY:t.pageY,s=e-o.getAbsoluteLeft(this.dom.centerContainer),n=i-o.getAbsoluteTop(this.dom.centerContainer),r=this._toTime(s),a=o.getTarget(t),h=null;o.hasParent(a,this.timeAxis.dom.foreground)?h="axis":this.timeAxis2&&o.hasParent(a,this.timeAxis2.dom.foreground)?h="axis":o.hasParent(a,this.linegraph.yAxisLeft.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.yAxisRight.dom.frame)?h="data-axis":o.hasParent(a,this.linegraph.legendLeft.dom.frame)?h="legend":o.hasParent(a,this.linegraph.legendRight.dom.frame)?h="legend":o.hasParent(a,this.customTime.bar)?h="custom-time":o.hasParent(a,this.currentTime.bar)?h="current-time":o.hasParent(a,this.dom.center)&&(h="background");var d=[],l=this.linegraph.yAxisLeft,c=this.linegraph.yAxisRight;return l.hidden||d.push(l.screenToValue(n)),c.hidden||d.push(c.screenToValue(n)),{event:t,what:h,pageX:e,pageY:i,x:s,y:n,time:r,value:d}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t,e,i){function s(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}s.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},s.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},s.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},s.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},s.prototype.hasNext=function(){return this.current>=this.marginStart},s.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},s.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},s.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},s.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=s},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h&&s>this.start&&od&&(d=0),o-s>d&&(this.end-this.start===d&&sthis.end?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(t){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e,i){var s=.001; +this.setRange(s,o)},t.exports=s},function(t,e,i){var s=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-i.vertical+se.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(t){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){t.preventDefault(),t.stopPropagation(),e.parent.removeFromDataSet(e)}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;var s=this._contentToString(this.content)!==this._contentToString(e);if(s){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e){this.options=null,this.props=null}s.prototype.setOptions=function(t){t&&util.extend(this.options,t)},s.prototype.redraw=function(){return!1},s.prototype.destroy=function(){},s.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale];s||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),s=this.options.locales.en);var o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),e&&e.time?this.customTime=e.time:this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale];i||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),i=this.options.locales.en);var s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){ +if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}0==this.master?this.conversionFactor=m/(this.valueAtZero-s.current):this.conversionFactor=this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;ro;o++){var r=this.visibleItems[o];r.repositionY(e)}return s},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,s){i._onAdd(e.items)},update:function(t,e,s){i._onUpdate(e.items)},remove:function(t,e,s){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,s){i._onAddGroups(e.items)},update:function(t,e,s){i._onUpdateGroups(e.items)},remove:function(t,e,s){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group,s=t.data.subgroup;if(t.setData(e),i!=t.data.group||s!=t.data.subgroup){var o=this.groups[i];o&&o.remove(t);var n=this._getGroupId(t.data),r=this.groups[n];r&&r.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;io;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-i.vertical+se.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0?t.step:1,this.autoScale=!1)},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.snap=function(t,e,i){var s=new Date(t.valueOf());if("year"==e){var o=s.getFullYear()+Math.round(s.getMonth()/12);s.setFullYear(Math.round(o/i)*i),s.setMonth(0),s.setDate(0),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("month"==e)s.getDate()>15?(s.setDate(1),s.setMonth(s.getMonth()+1)):s.setDate(1),s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0);else if("day"==e){switch(i){case 5:case 2:s.setHours(24*Math.round(s.getHours()/24));break;default:s.setHours(12*Math.round(s.getHours()/12))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:s.setHours(12*Math.round(s.getHours()/12));break;default:s.setHours(6*Math.round(s.getHours()/6))}s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)}else if("hour"==e){switch(i){case 4:s.setMinutes(60*Math.round(s.getMinutes()/60));break;default:s.setMinutes(30*Math.round(s.getMinutes()/30))}s.setSeconds(0),s.setMilliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:s.setMinutes(5*Math.round(s.getMinutes()/5)),s.setSeconds(0);break;case 5:s.setSeconds(60*Math.round(s.getSeconds()/60));break;default:s.setSeconds(30*Math.round(s.getSeconds()/30))}s.setMilliseconds(0)}else if("second"==e)switch(i){case 15:case 10:s.setSeconds(5*Math.round(s.getSeconds()/5)),s.setMilliseconds(0);break;case 5:s.setMilliseconds(1e3*Math.round(s.getMilliseconds()/1e3));break;default:s.setMilliseconds(500*Math.round(s.getMilliseconds()/500))}else if("millisecond"==e){var n=i>5?i/2:1;s.setMilliseconds(Math.round(s.getMilliseconds()/n)*n)}return s},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(t){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){t.preventDefault(),t.stopPropagation(),e.parent.removeFromDataSet(e)}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=l)}i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=this.parent.height-d+a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},s.prototype.repositionX=function(t){var e,i,s=this.parent.width,o=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end);(void 0===t||t===!0)&&(-s>o&&(o=-s),n>2*s&&(n=2*s));var r=Math.max(n-o,1);switch(this.overflow?(this.left=o,this.width=r+this.props.content.width,i=this.props.content.width):(this.left=o,this.width=r,i=Math.min(n-o-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(r-i-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((r-i-2*this.options.padding)/2,0)+"px";break;default:e=this.overflow?n>0?Math.max(-o,0):-i:0>o?Math.min(-o,n-o-i-2*this.options.padding):0,this.dom.content.style.left=e+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e){this.options=null,this.props=null}s.prototype.setOptions=function(t){t&&util.extend(this.options,t)},s.prototype.redraw=function(){return!1},s.prototype.destroy=function(){},s.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale];s||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),s=this.options.locales.en);var o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en",id:0},this.options=n.extend({},this.defaultOptions),this.customTime=e&&e.time?e.time:new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&(n.selectiveExtend(["showCustomTime","locale","locales","id"],this.options,t),this.options.id&&this.redraw())},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale];i||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline.html#Localization"),this.warned=!0),i=this.options.locales.en);var s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{id:this.options.id,time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"]; - -o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype.screenToValue=function(t){return this.valueAtZero-t/this.conversionFactor},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizep;p++){var m=this.visibleItems[p];m.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;ro;o++){var r=this.visibleItems[o];r.repositionY(e)}return s},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},snap:h.snap,onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,s){i._onAdd(e.items)},update:function(t,e,s){i._onUpdate(e.items)},remove:function(t,e,s){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,s){i._onAddGroups(e.items)},update:function(t,e,s){i._onUpdateGroups(e.items)},remove:function(t,e,s){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(19),d=i(25),l=i(30),c=i(31),p=i(22),u=i(23),m=i(24),f=i(21),g="__ungrouped__",v="__background__";s.prototype=new d,s.types={background:f,box:p,range:m,point:u},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new c(v,null,this);r.show(),this.groups[v]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","order","padding","stack","selectable","groupOrder","dataAttributes","template","hide","snap"];n.selectiveExtend(e,this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation=t.orientation:"object"==typeof t.orientation&&"item"in t.orientation&&(this.options.orientation=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(t){this.groupIds=[],this.stackDirty=!0,t&&t.refreshItems&&n.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return this.groups[v].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[g];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[g];this.groups[v]}if(this.groupsData){if(i){i.hide(),delete this.groups[g];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new l(n,r,this),this.groups[g]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?v:this.groupsData?t.group:g},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==g||t==v)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new l(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&!(a instanceof f)&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.pageY:t.pageY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,s){i._onAdd(e.items)},update:function(t,e,s){i._onUpdate(e.items)},remove:function(t,e,s){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,s){i._onAddGroups(e.items)},update:function(t,e,s){i._onUpdateGroups(e.items)},remove:function(t,e,s){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4, -maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(t){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(1==this.constants.keyboard.bindToWindow?{container:window,preventDefault:!1}:{container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(t){this.drag.dragging=!1;var e=this.drag.selection;e&&e.length?(e.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?"":this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=this.nodesData._fieldId||null,s=0,o=t.length;o>s;s++){e=t[s];var n=this.nodesData.get(e);i&&(n.id=n[i]);var r=new f(n,this.images,this.groups,this.constants);if(this.nodes[e]=r,!(0!=r.xFixed&&0!=r.yFixed||null!==r.x&&null!==r.y)){var a=1*t.length+10,h=2*Math.PI*Math.random();0==r.xFixed&&(r.x=a*Math.cos(h)),0==r.yFixed&&(r.y=a*Math.sin(h))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=this.edgesData._fieldId,o=0,n=t.length;n>o;o++){var r=t[o],a=e[r];a&&a.disconnect();var h=i.get(r,{showInternalIds:!0});s&&(h.id=h[s]),e[r]=new g(h,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t,e){void 0===t&&(t=!1),this.redrawRequested=!1;var i=this.frame.canvas.getContext("2d");i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var s=this.frame.canvas.clientWidth,o=this.frame.canvas.clientHeight;i.clearRect(0,0,s,o),i.save(),i.translate(this.translation.x,this.translation.y),i.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",i),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",i)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",i,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",i),i.restore(),t===!0&&i.clearRect(0,0,s,o)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(), -this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t,e,i){function s(){this.images={},this.imageBroken={},this.callback=void 0}s.prototype.setOnloadCallback=function(t){this.callback=t},s.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t), -this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=s},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(t){throw"Draw method not initialized for node"},s.prototype.resize=function(t){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(t){if(!this.width||!this.height){var e,i;if(this.value){this.options.radius=this.baseRadiusValue;var s=this.imageObj.height/this.imageObj.width;void 0!==s?(e=this.options.radius||this.imageObj.width,i=this.options.radius*s||this.imageObj.height):(e=0,i=0)}else e=this.imageObj.width,i=this.imageObj.height;this.width=e,this.height=i,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-e)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(t){if(!this.width){this.options.radius=this.baseRadiusValue;var e=2*this.options.radius;this.width=e,this.height=e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-e}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(t){if(!this.width){var e=5,i={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=h(o.attr,t.node))),i=n.length-1;i>=0;i--){var a=n[i];a.nodes||(a.nodes=[]),-1==a.nodes.indexOf(o)&&a.nodes.push(o)}e.attr&&(o.attr=h(o.attr,e.attr))}function c(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function p(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=h({},t.edge)),n.attr=h(n.attr||{},o),n}function u(){for(I=C.NULL,N="";" "==k||" "==k||"\n"==k||"\r"==k;)n();do{var t=!1;if("#"==k){for(var e=E-1;" "==O.charAt(e)||" "==O.charAt(e);)e--;if("\n"==O.charAt(e)||""==O.charAt(e)){for(;""!=k&&"\n"!=k;)n();t=!0}}if("/"==k&&"/"==r()){for(;""!=k&&"\n"!=k;)n();t=!0}if("/"==k&&"*"==r()){for(;""!=k;){if("*"==k&&"/"==r()){n(),n();break}n()}t=!0}for(;" "==k||" "==k||"\n"==k||"\r"==k;)n()}while(t);if(""==k)return void(I=C.DELIMITER);var i=k+r();if(T[i])return I=C.DELIMITER,N=i,n(),void n();if(T[k])return I=C.DELIMITER,N=k,void n();if(a(k)||"-"==k){for(N+=k,n();a(k);)N+=k,n();return"false"==N?N=!1:"true"==N?N=!0:isNaN(Number(N))||(N=Number(N)),void(I=C.IDENTIFIER)}if('"'==k){for(n();""!=k&&('"'!=k||'"'==k&&'"'==r());)N+=k,'"'==k&&n(),n();if('"'!=k)throw w('End of string " expected');return n(),void(I=C.IDENTIFIER)}for(I=C.UNKNOWN;""!=k;)N+=k,n();throw new SyntaxError('Syntax error in part "'+S(N,30)+'"')}function m(){var t={};if(o(),u(),"strict"==N&&(t.strict=!0,u()),("graph"==N||"digraph"==N)&&(t.type=N,u()),I==C.IDENTIFIER&&(t.id=N,u()),"{"!=N)throw w("Angle bracket { expected");if(u(),f(t),"}"!=N)throw w("Angle bracket } expected");if(u(),""!==N)throw w("End of file expected");return u(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==N&&"}"!=N;)g(t),";"==N&&u()}function g(t){var e=v(t);if(e)return void _(t,e);var i=y(t);if(!i){if(I!=C.IDENTIFIER)throw w("Identifier expected");var s=N;if(u(),"="==N){if(u(),I!=C.IDENTIFIER)throw w("Identifier expected");t[s]=N,u()}else b(t,s)}}function v(t){var e=null;if("subgraph"==N&&(e={},e.type="subgraph",u(),I==C.IDENTIFIER&&(e.id=N,u())),"{"==N){if(u(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=N)throw w("Angle bracket } expected");u(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function y(t){return"node"==N?(u(),t.node=x(),"node"):"edge"==N?(u(),t.edge=x(),"edge"):"graph"==N?(u(),t.graph=x(),"graph"):null}function b(t,e){var i={id:e},s=x();s&&(i.attr=s),l(t,i),_(t,e)}function _(t,e){for(;"->"==N||"--"==N;){var i,s=N;u();var o=v(t);if(o)i=o;else{if(I!=C.IDENTIFIER)throw w("Identifier or subgraph expected");i=N,l(t,{id:i}),u()}var n=x(),r=p(t,e,i,s,n);c(t,r),e=i}}function x(){for(var t=null;"["==N;){for(u(),t={};""!==N&&"]"!=N;){if(I!=C.IDENTIFIER)throw w("Attribute name expected");var e=N;if(u(),"="!=N)throw w("Equal sign = expected");if(u(),I!=C.IDENTIFIER)throw w("Attribute value expected");var i=N;d(t,e,i),u(),","==N&&u()}if("]"!=N)throw w("Bracket ] expected");u()}return t}function w(t){return new SyntaxError(t+', got "'+S(N,30)+'" (char '+E+")")}function S(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){var e=s(t),i={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};h(e,t.attr),e.image&&(e.shape="image"),i.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return h(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,s;e=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);i.edges.push(e)}),D(e,s,function(e,s){var n=p(i,e.id,s.id,t.type,t.attr),r=o(n);i.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);i.edges.push(e)})})}return e.attr&&(i.options=e.attr),i}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},T={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},O="",E=0,k="",N="",I=C.NULL,L=/[a-zA-Z_0-9.:#]/;e.parseDOT=s,e.DOTToGraph=M},function(t,e,i){function s(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg,c[d].label)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){function s(t){return t?o(t):void 0}function o(t){for(var e in s.prototype)t[e]=s.prototype[e];return t}t.exports=s,s.prototype.on=s.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},s.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},s.prototype.off=s.prototype.removeListener=s.prototype.removeAllListeners=s.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},s.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},s.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){var s,o,n;!function(i,r){o=[],s=r,n="function"==typeof s?s.apply(e,o):s,!(void 0!==n&&(t.exports=n))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){ -d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;o0)for(i in Ei)s=Ei[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function u(t){p(this,t),this._d=new Date(+t._d),ki===!1&&(ki=!0,e.updateOffset(this),ki=!1)}function m(t){return t instanceof u||null!=t&&a(t,"_isAMomentObject")}function f(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function g(t,e,i){var s,o=Math.min(t.length,e.length),n=Math.abs(t.length-e.length),r=0;for(s=0;o>s;s++)(i&&t[s]!==e[s]||!i&&f(t[s])!==f(e[s]))&&r++;return r+n}function v(){}function y(t){return t?t.toLowerCase().replace("_","-"):t}function b(t){for(var e,i,s,o,n=0;n0;){if(s=_(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&g(o,i,!0)>=e-1)break;e--}n++}return null}function _(e){var i=null;if(!Ni[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Oi._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),x(i)}catch(s){}return Ni[e]}function x(t,e){var i;return t&&(i="undefined"==typeof e?S(t):w(t,e),i&&(Oi=i)),Oi._abbr}function w(t,e){return null!==e?(e.abbr=t,Ni[t]||(Ni[t]=new v),Ni[t].set(e),x(t),Ni[t]):(delete Ni[t],null)}function S(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Oi;if(!o(t)){if(e=_(t))return e;t=[t]}return b(t)}function D(t,e){var i=t.toLowerCase();Ii[i]=Ii[i+"s"]=Ii[e]=t}function M(t){return"string"==typeof t?Ii[t]||Ii[t.toLowerCase()]:void 0}function C(t){var e,i,s={};for(i in t)a(t,i)&&(e=M(i),e&&(s[e]=t[i]));return s}function T(t,i){return function(s){return null!=s?(E(this,t,s),e.updateOffset(this,i),this):O(this,t)}}function O(t,e){return t._d["get"+(t._isUTC?"UTC":"")+e]()}function E(t,e,i){return t._d["set"+(t._isUTC?"UTC":"")+e](i)}function k(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=M(t),"function"==typeof this[t])return this[t](e);return this}function N(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengthe;e++)s[e]=Pi[s[e]]?Pi[s[e]]:L(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function A(t,e){return t.isValid()?(e=P(e,t.localeData()),Ai[e]||(Ai[e]=z(e)),Ai[e](t)):t.localeData().invalidDate()}function P(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(zi.lastIndex=0;s>=0&&zi.test(t);)t=t.replace(zi,i),zi.lastIndex=0,s-=1;return t}function F(t,e,i){Ki[t]="function"==typeof e?e:function(t){return t&&i?i:e}}function R(t,e){return a(Ki,t)?Ki[t](e._strict,e._locale):new RegExp(H(t))}function H(t){return t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function B(t,e){var i,s=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(s=function(t,i){i[e]=f(t)}),i=0;is;s++){if(o=d([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}}function X(t,e){var i;return"string"==typeof e&&(e=t.localeData().monthsParse(e),"number"!=typeof e)?t:(i=Math.min(t.date(),G(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t)}function q(t){return null!=t?(X(this,t),e.updateOffset(this,!0),this):O(this,"Month")}function Z(){return G(this.year(),this.month())}function Q(t){var e,i=t._a;return i&&-2===t._pf.overflow&&(e=i[ts]<0||i[ts]>11?ts:i[es]<1||i[es]>G(i[Ji],i[ts])?es:i[is]<0||i[is]>24||24===i[is]&&(0!==i[ss]||0!==i[os]||0!==i[ns])?is:i[ss]<0||i[ss]>59?ss:i[os]<0||i[os]>59?os:i[ns]<0||i[ns]>999?ns:-1,t._pf._overflowDayOfYear&&(Ji>e||e>es)&&(e=es),t._pf.overflow=e),t}function K(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function $(t,e){var i=!0;return h(function(){return i&&(K(t),i=!1),e.apply(this,arguments)},e)}function J(t,e){hs[t]||(K(e),hs[t]=!0)}function tt(t){var e,i,s=t._i,o=ds.exec(s);if(o){for(t._pf.iso=!0,e=0,i=ls.length;i>e;e++)if(ls[e][1].exec(s)){t._f=ls[e][0]+(o[6]||" ");break}for(e=0,i=cs.length;i>e;e++)if(cs[e][1].exec(s)){t._f+=cs[e][0];break}s.match(qi)&&(t._f+="Z"),bt(t)}else t._isValid=!1}function et(t){var i=ps.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(tt(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function it(t,e,i,s,o,n,r){var a=new Date(t,e,i,s,o,n,r);return 1970>t&&a.setFullYear(t),a}function st(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ot(t){return nt(t)?366:365}function nt(t){return t%4===0&&t%100!==0||t%400===0}function rt(){return nt(this.year())}function at(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ct(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ht(t){return at(t,this._week.dow,this._week.doy).week}function dt(){return this._week.dow}function lt(){return this._week.doy}function ct(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function pt(t){var e=at(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function ut(t,e,i,s,o){var n,r,a=st(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:ot(t-1)+r}}function mt(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function ft(t,e,i){return null!=t?t:null!=e?e:i}function gt(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function vt(t){var e,i,s,o,n=[];if(!t._d){for(s=gt(t),t._w&&null==t._a[es]&&null==t._a[ts]&&yt(t),t._dayOfYear&&(o=ft(t._a[Ji],s[Ji]),t._dayOfYear>ot(o)&&(t._pf._overflowDayOfYear=!0),i=st(o,0,t._dayOfYear),t._a[ts]=i.getUTCMonth(),t._a[es]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[is]&&0===t._a[ss]&&0===t._a[os]&&0===t._a[ns]&&(t._nextDay=!0,t._a[is]=0),t._d=(t._useUTC?st:it).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[is]=24)}}function yt(t){var e,i,s,o,n,r,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,r=4,i=ft(e.GG,t._a[Ji],at(Ct(),1,4).year),s=ft(e.W,1),o=ft(e.E,1)):(n=t._locale._week.dow,r=t._locale._week.doy,i=ft(e.gg,t._a[Ji],at(Ct(),n,r).year),s=ft(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),a=ut(i,s,o,r,n),t._a[Ji]=a.year,t._dayOfYear=a.dayOfYear}function bt(t){if(t._f===e.ISO_8601)return void tt(t);t._a=[],t._pf.empty=!0;var i,s,o,n,r,a=""+t._i,h=a.length,d=0;for(o=P(t._f,t._locale).match(Li)||[],i=0;i0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(s)+s.length),d+=s.length),Pi[n]?(s?t._pf.empty=!1:t._pf.unusedTokens.push(n),W(n,s,t)):t._strict&&!s&&t._pf.unusedTokens.push(n);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[is]<=12&&(t._pf.bigHour=void 0),t._a[is]=_t(t._locale,t._a[is],t._meridiem),vt(t),Q(t)}function _t(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function xt(t){var e,i,o,n,r;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(n=0;nr)&&(o=r,i=e));h(t,i||e)}function wt(t){if(!t._d){var e=C(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],vt(t)}}function St(t){var e,i=t._i,s=t._f;return t._locale=t._locale||S(t._l),null===i||void 0===s&&""===i?c({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),m(i)?new u(Q(i)):(o(s)?xt(t):s?bt(t):Dt(t),e=new u(Q(t)),e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e))}function Dt(t){var i=t._i;void 0===i?t._d=new Date:n(i)?t._d=new Date(+i):"string"==typeof i?et(t):o(i)?(t._a=r(i.slice(0),function(t){return parseInt(t,10)}),vt(t)):"object"==typeof i?wt(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function Mt(t,e,i,o,n){var r={};return"boolean"==typeof i&&(o=i,i=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=n,r._l=i,r._i=t,r._f=e,r._strict=o,r._pf=s(),St(r)}function Ct(t,e,i,s){return Mt(t,e,i,s,!1)}function Tt(t,e){var i,s;if(1===e.length&&o(e[0])&&(e=e[0]),!e.length)return Ct();for(i=e[0],s=1;st&&(t=-t,i="-"),i+N(~~(t/60),2)+e+N(~~t%60,2)})}function Lt(t){var e=(t||"").match(qi)||[],i=e[e.length-1]||[],s=(i+"").match(vs)||["-",0,0],o=+(60*s[1])+f(s[2]);return"+"===s[0]?o:-o}function zt(t,i){var s,o;return i._isUTC?(s=i.clone(),o=(m(t)||n(t)?+t:+Ct(t))-+s,s._d.setTime(+s._d+o),e.updateOffset(s,!1),s):Ct(t).local()}function At(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Pt(t,i){var s,o=this._offset||0;return null!=t?("string"==typeof t&&(t=Lt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(s=At(this)),this._offset=t,this._isUTC=!0,null!=s&&this.add(s,"m"),o!==t&&(!i||this._changeInProgress?$t(this,Xt(t-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?o:At(this)}function Ft(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Rt(t){return this.utcOffset(0,t)}function Ht(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(At(this),"m")),this}function Bt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Lt(this._i)),this}function Yt(t){return t=t?Ct(t).utcOffset():0,(this.utcOffset()-t)%60===0}function Wt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Gt(){if(this._a){var t=this._isUTC?d(this._a):Ct(this._a);return this.isValid()&&g(this._a,t.toArray())>0}return!1}function jt(){return!this._isUTC}function Vt(){return this._isUTC}function Ut(){return this._isUTC&&0===this._offset}function Xt(t,e){var i,s,o,n=t,r=null;return Nt(t)?n={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(n={},e?n[e]=t:n.milliseconds=t):(r=ys.exec(t))?(i="-"===r[1]?-1:1,n={y:0,d:f(r[es])*i,h:f(r[is])*i,m:f(r[ss])*i,s:f(r[os])*i,ms:f(r[ns])*i}):(r=bs.exec(t))?(i="-"===r[1]?-1:1,n={y:qt(r[2],i),M:qt(r[3],i),d:qt(r[4],i),h:qt(r[5],i),m:qt(r[6],i),s:qt(r[7],i),w:qt(r[8],i)}):null==n?n={}:"object"==typeof n&&("from"in n||"to"in n)&&(o=Qt(Ct(n.from),Ct(n.to)),n={},n.ms=o.milliseconds,n.M=o.months),s=new kt(n),Nt(t)&&a(t,"_locale")&&(s._locale=t._locale),s}function qt(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Zt(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Qt(t,e){var i;return e=zt(e,t),t.isBefore(e)?i=Zt(t,e):(i=Zt(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i}function Kt(t,e){return function(i,s){var o,n;return null===s||isNaN(+s)||(J(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),n=i,i=s,s=n),i="string"==typeof i?+i:i,o=Xt(i,s),$t(this,o,t),this}}function $t(t,i,s,o){var n=i._milliseconds,r=i._days,a=i._months;o=null==o?!0:o,n&&t._d.setTime(+t._d+n*s),r&&E(t,"Date",O(t,"Date")+r*s),a&&X(t,O(t,"Month")+a*s),o&&e.updateOffset(t,r||a)}function Jt(t){var e=t||Ct(),i=zt(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ct(e)))}function te(){return new u(this)}function ee(t,e){var i;return e=M("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Ct(t),+this>+t):(i=m(t)?+t:+Ct(t),i<+this.clone().startOf(e))}function ie(t,e){var i;return e=M("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Ct(t),+t>+this):(i=m(t)?+t:+Ct(t),+this.clone().endOf(e)t?Math.ceil(t):Math.floor(t)}function re(t,e,i){var s,o,n=zt(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=M(e),"year"===e||"month"===e||"quarter"===e?(o=ae(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:ne(o)}function ae(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function he(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function de(){var t=this.clone().utc();return 0e;e++)if(this._weekdaysParse[e]||(i=Ct([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function Pe(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Ne(t,this.localeData()),this.add(t-e,"d")):e}function Fe(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Re(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function He(t,e){I(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Be(t,e){return e._meridiemParse}function Ye(t){return"p"===(t+"").toLowerCase().charAt(0)}function We(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Ge(t){I(0,[t,3],0,"millisecond")}function je(){return this._isUTC?"UTC":""}function Ve(){return this._isUTC?"Coordinated Universal Time":""}function Ue(t){return Ct(1e3*t)}function Xe(){return Ct.apply(null,arguments).parseZone()}function qe(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.call(e,i):s}function Ze(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e}function Qe(){return this._invalidDate}function Ke(t){return this._ordinal.replace("%d",t)}function $e(t){return t}function Je(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)}function ti(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)}function ei(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function ii(t,e,i,s){var o=S(),n=d().set(s,e);return o[i](n,t)}function si(t,e,i,s,o){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return ii(t,e,i,o);var n,r=[];for(n=0;s>n;n++)r[n]=ii(t,n,i,o);return r}function oi(t,e){return si(t,e,"months",12,"month")}function ni(t,e){return si(t,e,"monthsShort",12,"month")}function ri(t,e){return si(t,e,"weekdays",7,"day")}function ai(t,e){return si(t,e,"weekdaysShort",7,"day")}function hi(t,e){return si(t,e,"weekdaysMin",7,"day")}function di(){var t=this._data;return this._milliseconds=Ys(this._milliseconds),this._days=Ys(this._days),this._months=Ys(this._months),t.milliseconds=Ys(t.milliseconds),t.seconds=Ys(t.seconds),t.minutes=Ys(t.minutes),t.hours=Ys(t.hours),t.months=Ys(t.months),t.years=Ys(t.years),this}function li(t,e,i,s){var o=Xt(e,i);return t._milliseconds+=s*o._milliseconds,t._days+=s*o._days,t._months+=s*o._months,t._bubble()}function ci(t,e){return li(this,t,e,1)}function pi(t,e){return li(this,t,e,-1)}function ui(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;return r.milliseconds=s%1e3,t=ne(s/1e3),r.seconds=t%60,e=ne(t/60),r.minutes=e%60,i=ne(e/60),r.hours=i%24,o+=ne(i/24),a=ne(mi(o)),o-=ne(fi(a)),n+=ne(o/30),o%=30,a+=ne(n/12),n%=12,r.days=o,r.months=n,r.years=a,this}function mi(t){return 400*t/146097}function fi(t){return 146097*t/400}function gi(t){var e,i,s=this._milliseconds;if(t=M(t),"month"===t||"year"===t)return e=this._days+s/864e5,i=this._months+12*mi(e),"month"===t?i:i/12;switch(e=this._days+Math.round(fi(this._months/12)),t){case"week":return e/7+s/6048e5;case"day":return e+s/864e5;case"hour":return 24*e+s/36e5;case"minute":return 24*e*60+s/6e4;case"second":return 24*e*60*60+s/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+s;default:throw new Error("Unknown unit "+t)}}function vi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*f(this._months/12)}function yi(t){return function(){return this.as(t)}}function bi(t){return t=M(t),this[t+"s"]()}function _i(t){return function(){return this._data[t]}}function xi(){return ne(this.days()/7)}function wi(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function Si(t,e,i){var s=Xt(t).abs(),o=so(s.as("s")),n=so(s.as("m")),r=so(s.as("h")),a=so(s.as("d")),h=so(s.as("M")),d=so(s.as("y")),l=o0,l[4]=i,wi.apply(null,l)}function Di(t,e){return void 0===oo[t]?!1:void 0===e?oo[t]:(oo[t]=e,!0)}function Mi(t){var e=this.localeData(),i=Si(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function Ci(){var t=no(this.years()),e=no(this.months()),i=no(this.days()),s=no(this.hours()),o=no(this.minutes()),n=no(this.seconds()+this.milliseconds()/1e3),r=this.asSeconds();return r?(0>r?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"}var Ti,Oi,Ei=e.momentProperties=[],ki=!1,Ni={},Ii={},Li=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,zi=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ai={},Pi={},Fi=/\d/,Ri=/\d\d/,Hi=/\d{3}/,Bi=/\d{4}/,Yi=/[+-]?\d{6}/,Wi=/\d\d?/,Gi=/\d{1,3}/,ji=/\d{1,4}/,Vi=/[+-]?\d{1,6}/,Ui=/\d+/,Xi=/[+-]?\d+/,qi=/Z|[+-]\d\d:?\d\d/gi,Zi=/[+-]?\d+(\.\d{1,3})?/,Qi=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Ki={},$i={},Ji=0,ts=1,es=2,is=3,ss=4,os=5,ns=6;I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),I("MMMM",0,0,function(t){return this.localeData().months(this,t)}),D("month","M"),F("M",Wi),F("MM",Wi,Ri),F("MMM",Qi),F("MMMM",Qi),B(["M","MM"],function(t,e){e[ts]=f(t)-1}),B(["MMM","MMMM"],function(t,e,i,s){var o=i._locale.monthsParse(t,s,i._strict);null!=o?e[ts]=o:i._pf.invalidMonth=t});var rs="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),as="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),hs={};e.suppressDeprecationWarnings=!1;var ds=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ls=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],cs=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],ps=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=$("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),D("year","y"),F("Y",Xi),F("YY",Wi,Ri),F("YYYY",ji,Bi),F("YYYYY",Vi,Yi),F("YYYYYY",Vi,Yi),B(["YYYY","YYYYY","YYYYYY"],Ji),B("YY",function(t,i){i[Ji]=e.parseTwoDigitYear(t)}),e.parseTwoDigitYear=function(t){return f(t)+(f(t)>68?1900:2e3)};var us=T("FullYear",!1);I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),D("week","w"),D("isoWeek","W"),F("w",Wi),F("ww",Wi,Ri),F("W",Wi),F("WW",Wi,Ri),Y(["w","ww","W","WW"],function(t,e,i,s){e[s.substr(0,1)]=f(t)});var ms={dow:0,doy:6};I("DDD",["DDDD",3],"DDDo","dayOfYear"),D("dayOfYear","DDD"),F("DDD",Gi),F("DDDD",Hi),B(["DDD","DDDD"],function(t,e,i){i._dayOfYear=f(t)}),e.ISO_8601=function(){};var fs=$("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Ct.apply(null,arguments);return this>t?this:t}),gs=$("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Ct.apply(null,arguments);return t>this?this:t});It("Z",":"),It("ZZ",""),F("Z",qi),F("ZZ",qi),B(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Lt(t)});var vs=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var ys=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,bs=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,_s=Kt(1,"add"),xs=Kt(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var ws=$("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),De("gggg","weekYear"),De("ggggg","weekYear"),De("GGGG","isoWeekYear"),De("GGGGG","isoWeekYear"),D("weekYear","gg"),D("isoWeekYear","GG"),F("G",Xi),F("g",Xi),F("GG",Wi,Ri),F("gg",Wi,Ri),F("GGGG",ji,Bi),F("gggg",ji,Bi),F("GGGGG",Vi,Yi),F("ggggg",Vi,Yi),Y(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,s){e[s.substr(0,2)]=f(t)}),Y(["gg","GG"],function(t,i,s,o){i[o]=e.parseTwoDigitYear(t)}),I("Q",0,0,"quarter"),D("quarter","Q"),F("Q",Fi),B("Q",function(t,e){e[ts]=3*(f(t)-1)}),I("D",["DD",2],"Do","date"),D("date","D"),F("D",Wi),F("DD",Wi,Ri),F("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),B(["D","DD"],es),B("Do",function(t,e){e[es]=f(t.match(Wi)[0],10)});var Ss=T("Date",!0);I("d",0,"do","day"),I("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),I("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),I("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),D("day","d"),D("weekday","e"),D("isoWeekday","E"),F("d",Wi),F("e",Wi),F("E",Wi),F("dd",Qi),F("ddd",Qi),F("dddd",Qi),Y(["dd","ddd","dddd"],function(t,e,i){var s=i._locale.weekdaysParse(t);null!=s?e.d=s:i._pf.invalidWeekday=t}),Y(["d","e","E"],function(t,e,i,s){e[s]=f(t)});var Ds="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ms="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Cs="Su_Mo_Tu_We_Th_Fr_Sa".split("_");I("H",["HH",2],0,"hour"),I("h",["hh",2],0,function(){return this.hours()%12||12}),He("a",!0),He("A",!1),D("hour","h"),F("a",Be),F("A",Be),F("H",Wi),F("h",Wi),F("HH",Wi,Ri),F("hh",Wi,Ri),B(["H","HH"],is),B(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),B(["h","hh"],function(t,e,i){e[is]=f(t),i._pf.bigHour=!0});var Ts=/[ap]\.?m?\.?/i,Os=T("Hours",!0);I("m",["mm",2],0,"minute"),D("minute","m"),F("m",Wi),F("mm",Wi,Ri),B(["m","mm"],ss);var Es=T("Minutes",!1);I("s",["ss",2],0,"second"),D("second","s"),F("s",Wi),F("ss",Wi,Ri),B(["s","ss"],os);var ks=T("Seconds",!1);I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),Ge("SSS"),Ge("SSSS"),D("millisecond","ms"),F("S",Gi,Fi),F("SS",Gi,Ri),F("SSS",Gi,Hi),F("SSSS",Ui),B(["S","SS","SSS","SSSS"],function(t,e){e[ns]=f(1e3*("0."+t))});var Ns=T("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var Is=u.prototype;Is.add=_s,Is.calendar=Jt,Is.clone=te,Is.diff=re,Is.endOf=ge,Is.format=le,Is.from=ce,Is.fromNow=pe,Is.get=k,Is.invalidAt=Se,Is.isAfter=ee,Is.isBefore=ie,Is.isBetween=se,Is.isSame=oe,Is.isValid=xe,Is.lang=ws,Is.locale=ue,Is.localeData=me,Is.max=gs,Is.min=fs,Is.parsingFlags=we,Is.set=k,Is.startOf=fe,Is.subtract=xs,Is.toArray=_e,Is.toDate=be,Is.toISOString=de,Is.toJSON=de,Is.toString=he,Is.unix=ye,Is.valueOf=ve,Is.year=us,Is.isLeapYear=rt,Is.weekYear=Ce,Is.isoWeekYear=Te,Is.quarter=Is.quarters=ke,Is.month=q,Is.daysInMonth=Z,Is.week=Is.weeks=ct,Is.isoWeek=Is.isoWeeks=pt,Is.weeksInYear=Ee,Is.isoWeeksInYear=Oe,Is.date=Ss,Is.day=Is.days=Pe,Is.weekday=Fe,Is.isoWeekday=Re,Is.dayOfYear=mt,Is.hour=Is.hours=Os, -Is.minute=Is.minutes=Es,Is.second=Is.seconds=ks,Is.millisecond=Is.milliseconds=Ns,Is.utcOffset=Pt,Is.utc=Rt,Is.local=Ht,Is.parseZone=Bt,Is.hasAlignedHourOffset=Yt,Is.isDST=Wt,Is.isDSTShifted=Gt,Is.isLocal=jt,Is.isUtcOffset=Vt,Is.isUtc=Ut,Is.isUTC=Ut,Is.zoneAbbr=je,Is.zoneName=Ve,Is.dates=$("dates accessor is deprecated. Use date instead.",Ss),Is.months=$("months accessor is deprecated. Use month instead",q),Is.years=$("years accessor is deprecated. Use year instead",us),Is.zone=$("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Ft);var Ls=Is,zs={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},As={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},Ps="Invalid date",Fs="%d",Rs=/\d{1,2}/,Hs={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Bs=v.prototype;Bs._calendar=zs,Bs.calendar=qe,Bs._longDateFormat=As,Bs.longDateFormat=Ze,Bs._invalidDate=Ps,Bs.invalidDate=Qe,Bs._ordinal=Fs,Bs.ordinal=Ke,Bs._ordinalParse=Rs,Bs.preparse=$e,Bs.postformat=$e,Bs._relativeTime=Hs,Bs.relativeTime=Je,Bs.pastFuture=ti,Bs.set=ei,Bs.months=j,Bs._months=rs,Bs.monthsShort=V,Bs._monthsShort=as,Bs.monthsParse=U,Bs.week=ht,Bs._week=ms,Bs.firstDayOfYear=lt,Bs.firstDayOfWeek=dt,Bs.weekdays=Ie,Bs._weekdays=Ds,Bs.weekdaysMin=ze,Bs._weekdaysMin=Cs,Bs.weekdaysShort=Le,Bs._weekdaysShort=Ms,Bs.weekdaysParse=Ae,Bs.isPM=Ye,Bs._meridiemParse=Ts,Bs.meridiem=We,x("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===f(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=$("moment.lang is deprecated. Use moment.locale instead.",x),e.langData=$("moment.langData is deprecated. Use moment.localeData instead.",S);var Ys=Math.abs,Ws=yi("ms"),Gs=yi("s"),js=yi("m"),Vs=yi("h"),Us=yi("d"),Xs=yi("w"),qs=yi("M"),Zs=yi("y"),Qs=_i("milliseconds"),Ks=_i("seconds"),$s=_i("minutes"),Js=_i("hours"),to=_i("days"),eo=_i("months"),io=_i("years"),so=Math.round,oo={s:45,m:45,h:22,d:26,M:11},no=Math.abs,ro=kt.prototype;ro.abs=di,ro.add=ci,ro.subtract=pi,ro.as=gi,ro.asMilliseconds=Ws,ro.asSeconds=Gs,ro.asMinutes=js,ro.asHours=Vs,ro.asDays=Us,ro.asWeeks=Xs,ro.asMonths=qs,ro.asYears=Zs,ro.valueOf=vi,ro._bubble=ui,ro.get=bi,ro.milliseconds=Qs,ro.seconds=Ks,ro.minutes=$s,ro.hours=Js,ro.days=to,ro.weeks=xi,ro.months=eo,ro.years=io,ro.humanize=Mi,ro.toISOString=Ci,ro.toString=Ci,ro.toJSON=Ci,ro.locale=ue,ro.localeData=me,ro.toIsoString=$("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ci),ro.lang=ws,I("X",0,0,"unix"),I("x",0,0,"valueOf"),F("x",Xi),F("X",Zi),B("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),B("x",function(t,e,i){i._d=new Date(f(t))}),e.version="2.10.0",i(Ct),e.fn=Ls,e.min=Ot,e.max=Et,e.utc=d,e.unix=Ue,e.months=oi,e.isDate=n,e.locale=x,e.invalid=c,e.duration=Xt,e.isMoment=m,e.weekdays=ri,e.parseZone=Xe,e.localeData=S,e.isDuration=Nt,e.monthsShort=ni,e.weekdaysMin=hi,e.defineLocale=w,e.weekdaysShort=ai,e.normalizeUnits=M,e.relativeTimeThreshold=Di;var ao=e;return ao})}).call(e,i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ', -this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),u.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e,i){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(t){throw new Error("Cannot find module '"+t+"'.")}s.keys=function(){return[]},s.resolve=s,t.exports=s,s.id=67},function(t,e,i){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e,i){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t,e,i){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +o?(e={item:o,initialX:t.gesture.center.pageX,dragLeft:!0,data:n.extend({},i.data)},this.touchParams.itemProps=[e]):r?(e={item:r,initialX:t.gesture.center.pageX,dragRight:!0,data:n.extend({},i.data)},this.touchParams.itemProps=[e]):this.touchParams.itemProps=this.getSelection().map(function(e){var i=s.items[e],o={item:i,initialX:t.gesture.center.pageX,data:n.extend({},i.data)};return o}),t.stopPropagation()}else this.options.editable.add&&t.gesture.srcEvent.ctrlKey&&this._onDragStartAddItem(t)}},s.prototype._onDragStartAddItem=function(t){var e=this.options.snap||null,i=n.getAbsoluteLeft(this.dom.frame),s=t.gesture.center.pageX-i-10,o=this.body.util.toTime(s),r=this.body.util.getScale(),a=this.body.util.getStep(),h=e?e(o,r,a):h,d=h,l={type:"range",start:h,end:d,content:"new item"},c=n.randomUUID();l[this.itemsData._fieldId]=c;var p=this.groupFromTarget(t);p&&(l.group=p.groupId);var u=new m(l,this.conversion,this.options);u.id=c,u.data=l,this._addItem(u);var f={item:u,dragRight:!0,initialX:t.gesture.center.pageX,data:n.extend({},l)};this.touchParams.itemProps=[f],t.stopPropagation()},s.prototype._onDrag=function(t){if(t.preventDefault(),this.touchParams.itemProps){t.stopPropagation();var e=this,i=this.options.snap||null,s=this.body.dom.root.offsetLeft+this.body.domProps.left.width,o=this.body.util.getScale(),r=this.body.util.getStep();this.touchParams.itemProps.forEach(function(a){var h=e.body.util.toTime(t.gesture.center.pageX-s),d=e.body.util.toTime(a.initialX-s),l=h-d,c=n.extend({},a.item.data);if(e.options.editable.updateTime)if(a.dragLeft){if(void 0!=c.start){var p=n.convert(a.data.start,"Date"),u=new Date(p.valueOf()+l);c.start=i?i(u,o,r):u}}else if(a.dragRight){if(void 0!=c.end){var m=n.convert(a.data.end,"Date"),f=new Date(m.valueOf()+l);c.end=i?i(f,o,r):f}}else if(void 0!=c.start){var p=n.convert(a.data.start,"Date").valueOf(),u=new Date(p+l);if(void 0!=c.end){var m=n.convert(a.data.end,"Date"),g=m.valueOf()-p.valueOf();c.start=i?i(u,o,r):u,c.end=new Date(c.start.valueOf()+g)}else c.start=i?i(u,o,r):u}if(e.options.editable.updateGroup&&!a.dragLeft&&!a.dragRight&&void 0!=c.group){var v=e.groupFromTarget(t);v&&(c.group=v.groupId)}e.options.onMoving(c,function(t){t&&a.item.setData(t)})}),this.stackDirty=!0,this.body.emitter.emit("change")}},s.prototype._moveToGroup=function(t,e){var i=this.groups[e];if(i&&i.groupId!=t.data.group){var s=t.parent;s.remove(t),s.order(),i.add(t),i.order(),t.data.group=i.groupId}},s.prototype._onDragEnd=function(t){if(t.preventDefault(),this.touchParams.itemProps){t.stopPropagation();var e=[],i=this,s=this.itemsData.getDataSet(),o=this.touchParams.itemProps;this.touchParams.itemProps=null,o.forEach(function(t){var o=t.item.id,r=null!=i.itemsData.get(o,i.itemOptions);if(r){var a=n.extend({},t.item.data);i.options.onMove(a,function(n){n?(n[s._fieldId]=o,e.push(n)):(t.item.setData(t.data),i.stackDirty=!0,i.body.emitter.emit("change"))})}else i.options.onAdd(t.item.data,function(e){i._removeItem(t.item),e&&i.itemsData.getDataSet().add(e),i.stackDirty=!0,i.body.emitter.emit("change")})}),e.length&&s.update(e)}},s.prototype._onSelectItem=function(t){if(this.options.selectable){var e=t.gesture.srcEvent&&t.gesture.srcEvent.ctrlKey,i=t.gesture.srcEvent&&t.gesture.srcEvent.shiftKey;if(e||i)return void this._onMultiSelectItem(t);var s=this.getSelection(),o=this.itemFromTarget(t),n=o?[o.id]:[];this.setSelection(n);var r=this.getSelection();(r.length>0||s.length>0)&&this.body.emitter.emit("select",{items:r})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,s=this.itemFromTarget(t);if(s){var o=e.itemsData.get(s.id);this.options.onUpdate(o,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var r=n.getAbsoluteLeft(this.dom.frame),a=t.gesture.center.pageX-r,h=this.body.util.toTime(a),d=this.body.util.getScale(),l=this.body.util.getStep(),c={start:i?i(h,d,l):h,content:"new item"};if("range"===this.options.type){var p=this.body.util.toTime(a+this.props.width/5);c.end=i?i(p,d,l):p}c[this.itemsData._fieldId]=n.randomUUID();var u=this.groupFromTarget(t);u&&(c.group=u.groupId),this.options.onAdd(c,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=this.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&!(a instanceof f)&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.prototype.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.prototype.groupFromTarget=function(t){for(var e=t.gesture?t.gesture.center.pageY:t.pageY,i=0;ia&&ea)return o}else if(0===i&&e"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,s){i._onAdd(e.items)},update:function(t,e,s){i._onUpdate(e.items)},remove:function(t,e,s){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,s){i._onAddGroups(e.items)},update:function(t,e,s){i._onUpdateGroups(e.items)},remove:function(t,e,s){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(1==r?this.yAxisLeft.lineOffset=this.yAxisRight.width:this.yAxisLeft.lineOffset=0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return"top"==e?s.style.top=o.majorLabelHeight+"px":s.style.top=this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return"top"==e?s.style.top="0":s.style.top=this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null};var o=function(t,e,i,s){if(e==t)return.5;var o=1/(e-t);return Math.max(0,(s-t)*o)};this.defaultOptions={nodes:{customScalingFunction:o,mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"#ffffff",fontDrawThreshold:3,scaleFontWithValue:!1,fontSizeMin:14,fontSizeMax:30,fontSizeMaxVisible:30,level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{customScalingFunction:o,widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},opacity:1,fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from",useGradients:!1},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05, +nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2,clusterByZoom:!0},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:50,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0,useDefaultGroups:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers=[],this.manipulationHammers=[],this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0,this.redrawRequested=!1;var n=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(t){n._requestRedraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulationEnabled=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent({duration:0},!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;e0)for(var r=0;re.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),se.boundingBox.left&&(o=e.boundingBox.left),ne.boundingBox.bottom&&(i=e.boundingBox.top),s.5*this.nodeIndices.length)return void this.zoomExtent(t,!1,i);s=this._getRange(t.nodes);var h=this.nodeIndices.length;o=1==this.constants.smoothCurves?1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?49.07548/(h+142.05338)+91444e-8:12.662/(h+7.4147)+.0964822:1==this.constants.clustering.enabled&&h>=this.constants.clustering.initialMaxNodes?77.5271985/(h+187.266146)+476710517e-13:30.5062972/(h+19.93597763)+.08413486;var d=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);o*=d}else{s=this._getRange(t.nodes);var l=1.1*Math.abs(s.maxX-s.minX),c=1.1*Math.abs(s.maxY-s.minY),p=this.frame.canvas.clientWidth/l,u=this.frame.canvas.clientHeight/c;o=u>=p?p:u}o>1&&(o=1);var m=this._findCenter(s);if(0==i){var t={position:m,scale:o,animation:t};this.moveTo(t),this.moving=!0,this.start()}else m.x*=o,m.y*=o,m.x-=.5*this.frame.canvas.clientWidth,m.y-=.5*this.frame.canvas.clientHeight,this._setScale(o),this._setTranslation(-m.x,-m.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this._unselectAll(!0),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):1==this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),this.groups.useDefaultGroups=this.constants.useDefaultGroups,t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this._markAllEdgesAsDirty(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),1==this.constants.keyboard.bindToWindow?this.keycharm=r({container:window,preventDefault:!1}):this.keycharm=r({container:this.frame,preventDefault:!1}),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(t){this.drag.dragging=!1;var e=this.drag.selection;e&&e.length?(e.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center),s=!1;if(void 0!==this.popup&&(this.popup.hidden===!1&&this._checkHidePopup(i),this.popup.hidden===!1&&(s=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),0==this.constants.keyboard.bindToWindow&&1==this.constants.keyboard.enabled&&this.frame.focus(),s===!1){var o=this,n=function(){o._checkShowPopup(i)};this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay))}if(1==this.constants.hover){for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]);var a=this._getNodeAt(i);null==a&&(a=this._getEdgeAt(i)),null!=a&&this._hoverObject(a);for(var d in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(d)&&(a instanceof f&&a.id!=d||a instanceof g||null==a)&&(this._blurObject(this.hoverObj.nodes[d]),delete this.hoverObj.nodes[d]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=void 0===this.popupObj?void 0:this.popupObj.id,o=!1,n="node";if(void 0==this.popupObj){var r=this.nodes,a=[];for(e in r)if(r.hasOwnProperty(e)){var h=r[e];h.isOverlappingWith(i)&&void 0!==h.getTitle()&&a.push(e)}a.length>0&&(this.popupObj=this.nodes[a[a.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var d=this.edges,l=[];for(e in d)if(d.hasOwnProperty(e)){var c=d[e];c.connected&&void 0!==c.getTitle()&&c.isOverlappingWith(i)&&l.push(e)}l.length>0&&(this.popupObj=this.edges[l[l.length-1]],n="edge")}this.popupObj?this.popupObj.id!=s&&(void 0===this.popup&&(this.popup=new v(this.frame,this.constants.tooltip)),this.popup.popupTargetType=n,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show()):this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){var e={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},i=!1;if("node"==this.popup.popupTargetType){if(i=this.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0){var s=this._getNodeAt(t);i=s.id==this.popup.popupTargetId}}else null===this._getNodeAt(t)&&(i=this.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=this.nodesData._fieldId||null,s=0,o=t.length;o>s;s++){e=t[s];var n=this.nodesData.get(e);i&&(n.id=n[i]);var r=new f(n,this.images,this.groups,this.constants);if(this.nodes[e]=r,!(0!=r.xFixed&&0!=r.yFixed||null!==r.x&&null!==r.y)){var a=1*t.length+10,h=2*Math.PI*Math.random();0==r.xFixed&&(r.x=a*Math.cos(h)),0==r.yFixed&&(r.y=a*Math.sin(h))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodesData.get(t),i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i),this._markAllEdgesAsDirty()},s.prototype._markAllEdgesAsDirty=function(){for(var t in this.edges)this.edges[t].colorDirty=!0},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.nodes[t[i]]&&(this.nodes[t[i]].unselect(),this._removeFromSelection(this.nodes[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=this.edgesData._fieldId,o=0,n=t.length;n>o;o++){var r=t[o],a=e[r];a&&a.disconnect();var h=i.get(r,{showInternalIds:!0});s&&(h.id=h[s]),e[r]=new g(h,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++)void 0!==this.selectionObj.edges[t[i]]&&(e[t[i]].unselect(),this._removeFromSelection(e[t[i]]));for(var i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0,o=0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s),o+=n)}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s,o)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._requestRedraw=function(t){this.redrawRequested!==!0&&(this.redrawRequested=!0,this.requiresTimeout===!0?window.setTimeout(this._redraw.bind(this,t),0):window.requestAnimationFrame(this._redraw.bind(this,t,!0)))},s.prototype._redraw=function(t,e){void 0===t&&(t=!1),this.redrawRequested=!1;var i=this.frame.canvas.getContext("2d");i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var s=this.frame.canvas.clientWidth,o=this.frame.canvas.clientHeight;i.clearRect(0,0,s,o),i.save(),i.translate(this.translation.x,this.translation.y),i.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},t===!1&&(this._doInAllSectors("_drawAllSectorNodes",i),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",i)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",i,!1),t===!1&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",i),i.restore(),t===!0&&i.clearRect(0,0,s,o)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulationEnabled&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,0==this.requiresTimeout&&this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.freezeSimulationEnabled&&(this.moving=!1),1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(1==this.requiresTimeout?this.timer=window.setTimeout(this._animationStep.bind(this),this.renderTimestep):this.timer=window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._requestRedraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.freezeSimulation=function(t){1==t?(this.freezeSimulationEnabled=!0,this.moving=!1):(this.freezeSimulationEnabled=!1,this.moving=!0,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,null!=this.lockedOnNodeId?this._redraw=this._lockedRedraw:this._redraw=this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},s.prototype.getConnectedNodes=function(t){var e=[];if(void 0!==this.nodes[t])for(var i=this.nodes[t],s={nodeId:!0},o=0;oh}return!1},s.prototype._getColor=function(t){var e=this.options.color;if(1==this.options.useGradients){var i,s,n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);return i=this.from.options.color.highlight.border,s=this.to.options.color.highlight.border,0==this.from.selected&&0==this.to.selected?(i=o.overrideOpacity(this.from.options.color.border,this.options.opacity),s=o.overrideOpacity(this.to.options.color.border,this.options.opacity)):1==this.from.selected&&0==this.to.selected?s=this.to.options.color.border:0==this.from.selected&&1==this.to.selected&&(i=this.from.options.color.border),n.addColorStop(0,i),n.addColorStop(1,s),n}return this.colorDirty===!0&&("to"==this.options.inheritColor?e={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(e={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:o.overrideOpacity(this.from.options.color.border,this.options.opacity)}),this.options.color=e,this.colorDirty=!1),1==this.selected?e.highlight:1==this.hover?e.hover:e.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);if("discrete"==s||"diagonalCross"==s)Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e));else if("straightCross"==s)Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(t),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(t),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.useDefaultGroups=!0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e)if(this.useDefaultGroups===!1&&this.groupsArray.length>0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e},t.exports=s},function(t,e,i){function s(){this.images={},this.imageBroken={},this.callback=void 0}s.prototype.setOnloadCallback=function(t){this.callback=t},s.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image, +i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?this.src==e?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(console.error("Could not load image:",t),this.src=e):(console.error("Could not load image:",t),this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=s},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.predefinedPosition=!1,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t)},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1)},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass","fontDrawThreshold","scaleFontWithValue","fontSizeMaxVisible","customScalingFunction","iconFontFace","icon","iconColor","iconSize"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x,this.predefinedPosition=!0),void 0!==t.y&&(this.y=t.y,this.predefinedPosition=!0),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;case"icon":this.draw=this._drawIcon,this.resize=this._resizeIcon;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e,i){if(!this.radiusFixed&&void 0!==this.value){var s=this.options.customScalingFunction(t,e,i,this.value),o=this.options.radiusMax-this.options.radiusMin;if(1==this.options.scaleFontWithValue){var n=this.options.fontSizeMax-this.options.fontSizeMin;this.options.fontSize=this.options.fontSizeMin+s*n}this.options.radius=this.options.radiusMin+s*o}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(t){throw"Draw method not initialized for node"},s.prototype.resize=function(t){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(t){if(!this.width||!this.height){var e,i;if(this.value){this.options.radius=this.baseRadiusValue;var s=this.imageObj.height/this.imageObj.width;void 0!==s?(e=this.options.radius||this.imageObj.width,i=this.options.radius*s||this.imageObj.height):(e=0,i=0)}else e=this.imageObj.width,i=this.imageObj.height;this.width=e,this.height=i,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-e)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(t){if(!this.width){this.options.radius=this.baseRadiusValue;var e=2*this.options.radius;this.width=e,this.height=e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-e}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._resizeIcon=function(t){if(!this.width){var e=5,i={width:Number(this.options.iconSize),height:Number(this.options.iconSize)};this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawIcon=function(t){if(this._resizeIcon(t),this.options.iconSize=this.options.iconSize||50,this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._icon(t),this.boundingBox.top=this.y-this.options.iconSize/2,this.boundingBox.left=this.x-this.options.iconSize/2,this.boundingBox.right=this.x+this.options.iconSize/2,this.boundingBox.bottom=this.y+this.options.iconSize/2,this.label){var e=5;this._label(t,this.label,this.x,this.y+this.height/2+e,"top",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)}},s.prototype._icon=function(t){var e=Number(this.options.iconSize)*this.networkScale;if(this.options.icon&&e>this.options.fontDrawThreshold-1){var i=Number(this.options.iconSize);t.font=(this.selected?"bold ":"")+i+"px "+this.options.iconFontFace,t.fillStyle=this.options.iconColor||"black",t.textAlign="center",t.textBaseline="middle",t.fillText(this.options.icon,this.x,this.y)}},s.prototype._label=function(t,e,i,s,n,r,a){var h=Number(this.options.fontSize)*this.networkScale;if(e&&h>=this.options.fontDrawThreshold-1){var d=Number(this.options.fontSize);h>=this.options.fontSizeMaxVisible&&(d=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv);var l=this.options.fontColor||"#000000",c=this.options.fontStrokeColor;if(h<=this.options.fontDrawThreshold){var p=Math.max(0,Math.min(1,1-(this.options.fontDrawThreshold-h)));l=o.overrideOpacity(l,p),c=o.overrideOpacity(c,p)}t.font=(this.selected?"bold ":"")+d+"px "+this.options.fontFace;var u=e.split("\n"),m=u.length,f=s+(1-m)/2*d;1==a&&(f=s+(1-m)/(2*d));for(var g=t.measureText(u[0]).width,v=1;m>v;v++){var y=t.measureText(u[v]).width;g=y>g?y:g}var b=d*m,_=i-g/2,x=s-b/2;"hanging"==r&&(x+=.5*d,x+=4,f+=4),this.labelDimensions={top:x,left:_,width:g,height:b,yLine:f},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(_,x,g,b)),t.fillStyle=l,t.textAlign=n||"center",t.textBaseline=r||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=c,t.lineJoin="round");for(var v=0;m>v;v++)this.options.fontStrokeWidth&&t.strokeText(u[v],i,f),t.fillText(u[v],i,f),f+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){var e=Number(this.options.fontSize);e*this.networkScale>this.options.fontSizeMaxVisible&&(e=Number(this.options.fontSizeMaxVisible)*this.networkScaleInv),t.font=(this.selected?"bold ":"")+e+"px "+this.options.fontFace;for(var i=this.label.split("\n"),s=(e+4)*i.length,o=0,n=0,r=i.length;r>n;n++)o=Math.max(o,t.measureText(i[n]).width);return{width:o,height:s,lineCount:i.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=h(o.attr,t.node))),i=n.length-1;i>=0;i--){var a=n[i];a.nodes||(a.nodes=[]),-1==a.nodes.indexOf(o)&&a.nodes.push(o)}e.attr&&(o.attr=h(o.attr,e.attr))}function c(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function p(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=h({},t.edge)),n.attr=h(n.attr||{},o),n}function u(){for(I=C.NULL,N="";" "==k||" "==k||"\n"==k||"\r"==k;)n();do{var t=!1;if("#"==k){for(var e=E-1;" "==O.charAt(e)||" "==O.charAt(e);)e--;if("\n"==O.charAt(e)||""==O.charAt(e)){for(;""!=k&&"\n"!=k;)n();t=!0}}if("/"==k&&"/"==r()){for(;""!=k&&"\n"!=k;)n();t=!0}if("/"==k&&"*"==r()){for(;""!=k;){if("*"==k&&"/"==r()){n(),n();break}n()}t=!0}for(;" "==k||" "==k||"\n"==k||"\r"==k;)n()}while(t);if(""==k)return void(I=C.DELIMITER);var i=k+r();if(T[i])return I=C.DELIMITER,N=i,n(),void n();if(T[k])return I=C.DELIMITER,N=k,void n();if(a(k)||"-"==k){for(N+=k,n();a(k);)N+=k,n();return"false"==N?N=!1:"true"==N?N=!0:isNaN(Number(N))||(N=Number(N)),void(I=C.IDENTIFIER)}if('"'==k){for(n();""!=k&&('"'!=k||'"'==k&&'"'==r());)N+=k,'"'==k&&n(),n();if('"'!=k)throw w('End of string " expected');return n(),void(I=C.IDENTIFIER)}for(I=C.UNKNOWN;""!=k;)N+=k,n();throw new SyntaxError('Syntax error in part "'+S(N,30)+'"')}function m(){var t={};if(o(),u(),"strict"==N&&(t.strict=!0,u()),("graph"==N||"digraph"==N)&&(t.type=N,u()),I==C.IDENTIFIER&&(t.id=N,u()),"{"!=N)throw w("Angle bracket { expected");if(u(),f(t),"}"!=N)throw w("Angle bracket } expected");if(u(),""!==N)throw w("End of file expected");return u(),delete t.node,delete t.edge,delete t.graph,t}function f(t){for(;""!==N&&"}"!=N;)g(t),";"==N&&u()}function g(t){var e=v(t);if(e)return void _(t,e);var i=y(t);if(!i){if(I!=C.IDENTIFIER)throw w("Identifier expected");var s=N;if(u(),"="==N){if(u(),I!=C.IDENTIFIER)throw w("Identifier expected");t[s]=N,u()}else b(t,s)}}function v(t){var e=null;if("subgraph"==N&&(e={},e.type="subgraph",u(),I==C.IDENTIFIER&&(e.id=N,u())),"{"==N){if(u(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,f(e),"}"!=N)throw w("Angle bracket } expected");u(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function y(t){return"node"==N?(u(),t.node=x(),"node"):"edge"==N?(u(),t.edge=x(),"edge"):"graph"==N?(u(),t.graph=x(),"graph"):null}function b(t,e){var i={id:e},s=x();s&&(i.attr=s),l(t,i),_(t,e)}function _(t,e){for(;"->"==N||"--"==N;){var i,s=N;u();var o=v(t);if(o)i=o;else{if(I!=C.IDENTIFIER)throw w("Identifier or subgraph expected");i=N,l(t,{id:i}),u()}var n=x(),r=p(t,e,i,s,n);c(t,r),e=i}}function x(){for(var t=null;"["==N;){for(u(),t={};""!==N&&"]"!=N;){if(I!=C.IDENTIFIER)throw w("Attribute name expected");var e=N;if(u(),"="!=N)throw w("Equal sign = expected");if(u(),I!=C.IDENTIFIER)throw w("Attribute value expected");var i=N;d(t,e,i),u(),","==N&&u()}if("]"!=N)throw w("Bracket ] expected");u()}return t}function w(t){return new SyntaxError(t+', got "'+S(N,30)+'" (char '+E+")")}function S(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){var e=s(t),i={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};h(e,t.attr),e.image&&(e.shape="image"),i.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return h(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,s;e=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);i.edges.push(e)}),D(e,s,function(e,s){var n=p(i,e.id,s.id,t.type,t.attr),r=o(n);i.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);i.edges.push(e)})})}return e.attr&&(i.options=e.attr), +i}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},T={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},O="",E=0,k="",N="",I=C.NULL,L=/[a-zA-Z_0-9.:#]/;e.parseDOT=s,e.DOTToGraph=M},function(t,e,i){function s(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r0?Math.max.apply(null,i)+1:1):(this.customBarIds.forEach(function(t){if(t===e)throw new Error("Custom time ID already exists")}),o=e),this.customBarIds.push(o),s=new l(this.body,{showCustomTime:!0,time:n,id:o}),this.components.push(s),this.redraw(),o},s.prototype.removeCustomTime=function(t){var e=this;this.components.forEach(function(i,s,o){i instanceof l&&i.options.id===t&&0!==i.options.id&&(e.customBarIds.splice(e.customBarIds.indexOf(t),1),o.splice(s,1),i.destroy())})},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(t){var e=this._getDataRange();if(null!==e.start||null!==e.end){var i=t&&void 0!==t.animate?t.animate:!0;this.range.setRange(e.start,e.end,i)}},s.prototype._getDataRange=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s;if(1==arguments.length){var o=arguments[0];s=void 0!==o.animate?o.animate:!0,this.range.setRange(o.start,o.end,s)}else s=i&&void 0!==i.animate?i.animate:!0,this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){this._redraw()},s.prototype._redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){d.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,D=0;S-1>D;D++)s=0==D?t[0]:t[D-1],o=t[D],n=t[D+1],r=S>D+2?t[D+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg,c[d].label)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){function s(t){return t?o(t):void 0}function o(t){for(var e in s.prototype)t[e]=s.prototype[e];return t}t.exports=s,s.prototype.on=s.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},s.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},s.prototype.off=s.prototype.removeListener=s.prototype.removeAllListeners=s.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},s.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},s.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e,i){var s,o,n;!function(i,r){o=[],s=r,n="function"==typeof s?s.apply(e,o):s,!(void 0!==n&&(t.exports=n))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1 +},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;o0)for(i in Ei)s=Ei[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function u(t){p(this,t),this._d=new Date(+t._d),ki===!1&&(ki=!0,e.updateOffset(this),ki=!1)}function m(t){return t instanceof u||null!=t&&a(t,"_isAMomentObject")}function f(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function g(t,e,i){var s,o=Math.min(t.length,e.length),n=Math.abs(t.length-e.length),r=0;for(s=0;o>s;s++)(i&&t[s]!==e[s]||!i&&f(t[s])!==f(e[s]))&&r++;return r+n}function v(){}function y(t){return t?t.toLowerCase().replace("_","-"):t}function b(t){for(var e,i,s,o,n=0;n0;){if(s=_(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&g(o,i,!0)>=e-1)break;e--}n++}return null}function _(e){var i=null;if(!Ni[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Oi._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),x(i)}catch(s){}return Ni[e]}function x(t,e){var i;return t&&(i="undefined"==typeof e?S(t):w(t,e),i&&(Oi=i)),Oi._abbr}function w(t,e){return null!==e?(e.abbr=t,Ni[t]||(Ni[t]=new v),Ni[t].set(e),x(t),Ni[t]):(delete Ni[t],null)}function S(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Oi;if(!o(t)){if(e=_(t))return e;t=[t]}return b(t)}function D(t,e){var i=t.toLowerCase();Ii[i]=Ii[i+"s"]=Ii[e]=t}function M(t){return"string"==typeof t?Ii[t]||Ii[t.toLowerCase()]:void 0}function C(t){var e,i,s={};for(i in t)a(t,i)&&(e=M(i),e&&(s[e]=t[i]));return s}function T(t,i){return function(s){return null!=s?(E(this,t,s),e.updateOffset(this,i),this):O(this,t)}}function O(t,e){return t._d["get"+(t._isUTC?"UTC":"")+e]()}function E(t,e,i){return t._d["set"+(t._isUTC?"UTC":"")+e](i)}function k(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else if(t=M(t),"function"==typeof this[t])return this[t](e);return this}function N(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengthe;e++)Pi[s[e]]?s[e]=Pi[s[e]]:s[e]=L(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function A(t,e){return t.isValid()?(e=P(e,t.localeData()),Ai[e]||(Ai[e]=z(e)),Ai[e](t)):t.localeData().invalidDate()}function P(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(zi.lastIndex=0;s>=0&&zi.test(t);)t=t.replace(zi,i),zi.lastIndex=0,s-=1;return t}function F(t,e,i){Ki[t]="function"==typeof e?e:function(t){return t&&i?i:e}}function R(t,e){return a(Ki,t)?Ki[t](e._strict,e._locale):new RegExp(H(t))}function H(t){return t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function B(t,e){var i,s=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(s=function(t,i){i[e]=f(t)}),i=0;is;s++){if(o=d([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}}function X(t,e){var i;return"string"==typeof e&&(e=t.localeData().monthsParse(e),"number"!=typeof e)?t:(i=Math.min(t.date(),G(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t)}function q(t){return null!=t?(X(this,t),e.updateOffset(this,!0),this):O(this,"Month")}function Z(){return G(this.year(),this.month())}function Q(t){var e,i=t._a;return i&&-2===t._pf.overflow&&(e=i[ts]<0||i[ts]>11?ts:i[es]<1||i[es]>G(i[Ji],i[ts])?es:i[is]<0||i[is]>24||24===i[is]&&(0!==i[ss]||0!==i[os]||0!==i[ns])?is:i[ss]<0||i[ss]>59?ss:i[os]<0||i[os]>59?os:i[ns]<0||i[ns]>999?ns:-1,t._pf._overflowDayOfYear&&(Ji>e||e>es)&&(e=es),t._pf.overflow=e),t}function K(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function $(t,e){var i=!0;return h(function(){return i&&(K(t),i=!1),e.apply(this,arguments)},e)}function J(t,e){hs[t]||(K(e),hs[t]=!0)}function tt(t){var e,i,s=t._i,o=ds.exec(s);if(o){for(t._pf.iso=!0,e=0,i=ls.length;i>e;e++)if(ls[e][1].exec(s)){t._f=ls[e][0]+(o[6]||" ");break}for(e=0,i=cs.length;i>e;e++)if(cs[e][1].exec(s)){t._f+=cs[e][0];break}s.match(qi)&&(t._f+="Z"),bt(t)}else t._isValid=!1}function et(t){var i=ps.exec(t._i);return null!==i?void(t._d=new Date(+i[1])):(tt(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function it(t,e,i,s,o,n,r){var a=new Date(t,e,i,s,o,n,r);return 1970>t&&a.setFullYear(t),a}function st(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ot(t){return nt(t)?366:365}function nt(t){return t%4===0&&t%100!==0||t%400===0}function rt(){return nt(this.year())}function at(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ct(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ht(t){return at(t,this._week.dow,this._week.doy).week}function dt(){return this._week.dow}function lt(){return this._week.doy}function ct(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function pt(t){var e=at(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function ut(t,e,i,s,o){var n,r,a=st(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:ot(t-1)+r}}function mt(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function ft(t,e,i){return null!=t?t:null!=e?e:i}function gt(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function vt(t){var e,i,s,o,n=[];if(!t._d){for(s=gt(t),t._w&&null==t._a[es]&&null==t._a[ts]&&yt(t),t._dayOfYear&&(o=ft(t._a[Ji],s[Ji]),t._dayOfYear>ot(o)&&(t._pf._overflowDayOfYear=!0),i=st(o,0,t._dayOfYear),t._a[ts]=i.getUTCMonth(),t._a[es]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[is]&&0===t._a[ss]&&0===t._a[os]&&0===t._a[ns]&&(t._nextDay=!0,t._a[is]=0),t._d=(t._useUTC?st:it).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[is]=24)}}function yt(t){var e,i,s,o,n,r,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,r=4,i=ft(e.GG,t._a[Ji],at(Ct(),1,4).year),s=ft(e.W,1),o=ft(e.E,1)):(n=t._locale._week.dow,r=t._locale._week.doy,i=ft(e.gg,t._a[Ji],at(Ct(),n,r).year),s=ft(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),a=ut(i,s,o,r,n),t._a[Ji]=a.year,t._dayOfYear=a.dayOfYear}function bt(t){if(t._f===e.ISO_8601)return void tt(t);t._a=[],t._pf.empty=!0;var i,s,o,n,r,a=""+t._i,h=a.length,d=0;for(o=P(t._f,t._locale).match(Li)||[],i=0;i0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(s)+s.length),d+=s.length),Pi[n]?(s?t._pf.empty=!1:t._pf.unusedTokens.push(n),W(n,s,t)):t._strict&&!s&&t._pf.unusedTokens.push(n);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[is]<=12&&(t._pf.bigHour=void 0),t._a[is]=_t(t._locale,t._a[is],t._meridiem),vt(t),Q(t)}function _t(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function xt(t){var e,i,o,n,r;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(n=0;nr)&&(o=r,i=e));h(t,i||e)}function wt(t){if(!t._d){var e=C(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],vt(t)}}function St(t){var e,i=t._i,s=t._f;return t._locale=t._locale||S(t._l),null===i||void 0===s&&""===i?c({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),m(i)?new u(Q(i)):(o(s)?xt(t):s?bt(t):Dt(t),e=new u(Q(t)),e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e))}function Dt(t){var i=t._i;void 0===i?t._d=new Date:n(i)?t._d=new Date(+i):"string"==typeof i?et(t):o(i)?(t._a=r(i.slice(0),function(t){return parseInt(t,10)}),vt(t)):"object"==typeof i?wt(t):"number"==typeof i?t._d=new Date(i):e.createFromInputFallback(t)}function Mt(t,e,i,o,n){var r={};return"boolean"==typeof i&&(o=i,i=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=n,r._l=i,r._i=t,r._f=e,r._strict=o,r._pf=s(),St(r)}function Ct(t,e,i,s){return Mt(t,e,i,s,!1)}function Tt(t,e){var i,s;if(1===e.length&&o(e[0])&&(e=e[0]),!e.length)return Ct();for(i=e[0],s=1;st&&(t=-t,i="-"),i+N(~~(t/60),2)+e+N(~~t%60,2)})}function Lt(t){var e=(t||"").match(qi)||[],i=e[e.length-1]||[],s=(i+"").match(vs)||["-",0,0],o=+(60*s[1])+f(s[2]);return"+"===s[0]?o:-o}function zt(t,i){var s,o;return i._isUTC?(s=i.clone(),o=(m(t)||n(t)?+t:+Ct(t))-+s,s._d.setTime(+s._d+o),e.updateOffset(s,!1),s):Ct(t).local()}function At(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Pt(t,i){var s,o=this._offset||0;return null!=t?("string"==typeof t&&(t=Lt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&i&&(s=At(this)),this._offset=t,this._isUTC=!0,null!=s&&this.add(s,"m"),o!==t&&(!i||this._changeInProgress?$t(this,Xt(t-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?o:At(this)}function Ft(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Rt(t){return this.utcOffset(0,t)}function Ht(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(At(this),"m")),this}function Bt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Lt(this._i)),this}function Yt(t){return t=t?Ct(t).utcOffset():0,(this.utcOffset()-t)%60===0}function Wt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Gt(){if(this._a){var t=this._isUTC?d(this._a):Ct(this._a);return this.isValid()&&g(this._a,t.toArray())>0}return!1}function jt(){return!this._isUTC}function Vt(){return this._isUTC}function Ut(){return this._isUTC&&0===this._offset}function Xt(t,e){var i,s,o,n=t,r=null;return Nt(t)?n={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(n={},e?n[e]=t:n.milliseconds=t):(r=ys.exec(t))?(i="-"===r[1]?-1:1,n={y:0,d:f(r[es])*i,h:f(r[is])*i,m:f(r[ss])*i,s:f(r[os])*i,ms:f(r[ns])*i}):(r=bs.exec(t))?(i="-"===r[1]?-1:1,n={y:qt(r[2],i),M:qt(r[3],i),d:qt(r[4],i),h:qt(r[5],i),m:qt(r[6],i),s:qt(r[7],i),w:qt(r[8],i)}):null==n?n={}:"object"==typeof n&&("from"in n||"to"in n)&&(o=Qt(Ct(n.from),Ct(n.to)),n={},n.ms=o.milliseconds,n.M=o.months),s=new kt(n),Nt(t)&&a(t,"_locale")&&(s._locale=t._locale),s}function qt(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Zt(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Qt(t,e){var i;return e=zt(e,t),t.isBefore(e)?i=Zt(t,e):(i=Zt(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i}function Kt(t,e){return function(i,s){var o,n;return null===s||isNaN(+s)||(J(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),n=i,i=s,s=n),i="string"==typeof i?+i:i,o=Xt(i,s),$t(this,o,t),this}}function $t(t,i,s,o){var n=i._milliseconds,r=i._days,a=i._months;o=null==o?!0:o,n&&t._d.setTime(+t._d+n*s),r&&E(t,"Date",O(t,"Date")+r*s),a&&X(t,O(t,"Month")+a*s),o&&e.updateOffset(t,r||a)}function Jt(t){var e=t||Ct(),i=zt(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ct(e)))}function te(){return new u(this)}function ee(t,e){var i;return e=M("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Ct(t),+this>+t):(i=m(t)?+t:+Ct(t),i<+this.clone().startOf(e))}function ie(t,e){var i;return e=M("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=m(t)?t:Ct(t),+t>+this):(i=m(t)?+t:+Ct(t),+this.clone().endOf(e)t?Math.ceil(t):Math.floor(t)}function re(t,e,i){var s,o,n=zt(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=M(e),"year"===e||"month"===e||"quarter"===e?(o=ae(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:ne(o)}function ae(t,e){var i,s,o=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(o,"months");return 0>e-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function he(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function de(){var t=this.clone().utc();return 0e;e++)if(this._weekdaysParse[e]||(i=Ct([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function Pe(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Ne(t,this.localeData()),this.add(t-e,"d")):e}function Fe(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Re(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function He(t,e){I(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Be(t,e){return e._meridiemParse}function Ye(t){return"p"===(t+"").toLowerCase().charAt(0)}function We(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Ge(t){I(0,[t,3],0,"millisecond")}function je(){return this._isUTC?"UTC":""}function Ve(){return this._isUTC?"Coordinated Universal Time":""}function Ue(t){return Ct(1e3*t)}function Xe(){return Ct.apply(null,arguments).parseZone()}function qe(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.call(e,i):s}function Ze(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e}function Qe(){return this._invalidDate}function Ke(t){return this._ordinal.replace("%d",t)}function $e(t){return t}function Je(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)}function ti(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)}function ei(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function ii(t,e,i,s){var o=S(),n=d().set(s,e);return o[i](n,t)}function si(t,e,i,s,o){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return ii(t,e,i,o);var n,r=[];for(n=0;s>n;n++)r[n]=ii(t,n,i,o);return r}function oi(t,e){return si(t,e,"months",12,"month")}function ni(t,e){return si(t,e,"monthsShort",12,"month")}function ri(t,e){return si(t,e,"weekdays",7,"day")}function ai(t,e){return si(t,e,"weekdaysShort",7,"day")}function hi(t,e){return si(t,e,"weekdaysMin",7,"day")}function di(){var t=this._data;return this._milliseconds=Ys(this._milliseconds),this._days=Ys(this._days),this._months=Ys(this._months),t.milliseconds=Ys(t.milliseconds),t.seconds=Ys(t.seconds),t.minutes=Ys(t.minutes),t.hours=Ys(t.hours),t.months=Ys(t.months),t.years=Ys(t.years),this}function li(t,e,i,s){var o=Xt(e,i);return t._milliseconds+=s*o._milliseconds,t._days+=s*o._days,t._months+=s*o._months,t._bubble()}function ci(t,e){return li(this,t,e,1)}function pi(t,e){return li(this,t,e,-1)}function ui(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;return r.milliseconds=s%1e3,t=ne(s/1e3),r.seconds=t%60,e=ne(t/60),r.minutes=e%60,i=ne(e/60),r.hours=i%24,o+=ne(i/24),a=ne(mi(o)),o-=ne(fi(a)),n+=ne(o/30),o%=30,a+=ne(n/12),n%=12,r.days=o,r.months=n,r.years=a,this}function mi(t){return 400*t/146097}function fi(t){return 146097*t/400}function gi(t){var e,i,s=this._milliseconds;if(t=M(t),"month"===t||"year"===t)return e=this._days+s/864e5,i=this._months+12*mi(e),"month"===t?i:i/12;switch(e=this._days+Math.round(fi(this._months/12)),t){case"week":return e/7+s/6048e5;case"day":return e+s/864e5;case"hour":return 24*e+s/36e5;case"minute":return 24*e*60+s/6e4;case"second":return 24*e*60*60+s/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+s;default:throw new Error("Unknown unit "+t)}}function vi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*f(this._months/12)}function yi(t){return function(){return this.as(t)}}function bi(t){return t=M(t),this[t+"s"]()}function _i(t){return function(){return this._data[t]}}function xi(){return ne(this.days()/7)}function wi(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function Si(t,e,i){var s=Xt(t).abs(),o=so(s.as("s")),n=so(s.as("m")),r=so(s.as("h")),a=so(s.as("d")),h=so(s.as("M")),d=so(s.as("y")),l=o0,l[4]=i,wi.apply(null,l)}function Di(t,e){return void 0===oo[t]?!1:void 0===e?oo[t]:(oo[t]=e,!0)}function Mi(t){var e=this.localeData(),i=Si(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function Ci(){var t=no(this.years()),e=no(this.months()),i=no(this.days()),s=no(this.hours()),o=no(this.minutes()),n=no(this.seconds()+this.milliseconds()/1e3),r=this.asSeconds();return r?(0>r?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"}var Ti,Oi,Ei=e.momentProperties=[],ki=!1,Ni={},Ii={},Li=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,zi=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ai={},Pi={},Fi=/\d/,Ri=/\d\d/,Hi=/\d{3}/,Bi=/\d{4}/,Yi=/[+-]?\d{6}/,Wi=/\d\d?/,Gi=/\d{1,3}/,ji=/\d{1,4}/,Vi=/[+-]?\d{1,6}/,Ui=/\d+/,Xi=/[+-]?\d+/,qi=/Z|[+-]\d\d:?\d\d/gi,Zi=/[+-]?\d+(\.\d{1,3})?/,Qi=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Ki={},$i={},Ji=0,ts=1,es=2,is=3,ss=4,os=5,ns=6;I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),I("MMMM",0,0,function(t){return this.localeData().months(this,t)}),D("month","M"),F("M",Wi),F("MM",Wi,Ri),F("MMM",Qi),F("MMMM",Qi),B(["M","MM"],function(t,e){e[ts]=f(t)-1}),B(["MMM","MMMM"],function(t,e,i,s){var o=i._locale.monthsParse(t,s,i._strict);null!=o?e[ts]=o:i._pf.invalidMonth=t});var rs="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),as="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),hs={};e.suppressDeprecationWarnings=!1;var ds=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ls=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],cs=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],ps=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=$("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),D("year","y"),F("Y",Xi),F("YY",Wi,Ri),F("YYYY",ji,Bi),F("YYYYY",Vi,Yi),F("YYYYYY",Vi,Yi),B(["YYYY","YYYYY","YYYYYY"],Ji),B("YY",function(t,i){i[Ji]=e.parseTwoDigitYear(t)}),e.parseTwoDigitYear=function(t){return f(t)+(f(t)>68?1900:2e3)};var us=T("FullYear",!1);I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),D("week","w"),D("isoWeek","W"),F("w",Wi),F("ww",Wi,Ri),F("W",Wi),F("WW",Wi,Ri),Y(["w","ww","W","WW"],function(t,e,i,s){e[s.substr(0,1)]=f(t)});var ms={dow:0,doy:6};I("DDD",["DDDD",3],"DDDo","dayOfYear"),D("dayOfYear","DDD"),F("DDD",Gi),F("DDDD",Hi),B(["DDD","DDDD"],function(t,e,i){i._dayOfYear=f(t)}),e.ISO_8601=function(){};var fs=$("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Ct.apply(null,arguments);return this>t?this:t}),gs=$("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Ct.apply(null,arguments);return t>this?this:t});It("Z",":"),It("ZZ",""),F("Z",qi),F("ZZ",qi),B(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Lt(t)});var vs=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var ys=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,bs=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Xt.fn=kt.prototype;var _s=Kt(1,"add"),xs=Kt(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var ws=$("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),De("gggg","weekYear"),De("ggggg","weekYear"),De("GGGG","isoWeekYear"),De("GGGGG","isoWeekYear"),D("weekYear","gg"),D("isoWeekYear","GG"),F("G",Xi),F("g",Xi),F("GG",Wi,Ri),F("gg",Wi,Ri),F("GGGG",ji,Bi),F("gggg",ji,Bi),F("GGGGG",Vi,Yi),F("ggggg",Vi,Yi),Y(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,s){e[s.substr(0,2)]=f(t)}),Y(["gg","GG"],function(t,i,s,o){i[o]=e.parseTwoDigitYear(t)}),I("Q",0,0,"quarter"),D("quarter","Q"),F("Q",Fi),B("Q",function(t,e){e[ts]=3*(f(t)-1)}),I("D",["DD",2],"Do","date"),D("date","D"),F("D",Wi),F("DD",Wi,Ri),F("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),B(["D","DD"],es),B("Do",function(t,e){e[es]=f(t.match(Wi)[0],10)});var Ss=T("Date",!0);I("d",0,"do","day"),I("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),I("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),I("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),D("day","d"),D("weekday","e"),D("isoWeekday","E"),F("d",Wi),F("e",Wi),F("E",Wi),F("dd",Qi),F("ddd",Qi),F("dddd",Qi),Y(["dd","ddd","dddd"],function(t,e,i){var s=i._locale.weekdaysParse(t);null!=s?e.d=s:i._pf.invalidWeekday=t}),Y(["d","e","E"],function(t,e,i,s){e[s]=f(t)});var Ds="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ms="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Cs="Su_Mo_Tu_We_Th_Fr_Sa".split("_");I("H",["HH",2],0,"hour"),I("h",["hh",2],0,function(){return this.hours()%12||12}),He("a",!0),He("A",!1),D("hour","h"),F("a",Be),F("A",Be),F("H",Wi),F("h",Wi),F("HH",Wi,Ri),F("hh",Wi,Ri),B(["H","HH"],is),B(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),B(["h","hh"],function(t,e,i){e[is]=f(t),i._pf.bigHour=!0});var Ts=/[ap]\.?m?\.?/i,Os=T("Hours",!0);I("m",["mm",2],0,"minute"),D("minute","m"),F("m",Wi),F("mm",Wi,Ri),B(["m","mm"],ss);var Es=T("Minutes",!1);I("s",["ss",2],0,"second"),D("second","s"),F("s",Wi),F("ss",Wi,Ri),B(["s","ss"],os);var ks=T("Seconds",!1);I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),Ge("SSS"),Ge("SSSS"),D("millisecond","ms"),F("S",Gi,Fi),F("SS",Gi,Ri),F("SSS",Gi,Hi),F("SSSS",Ui),B(["S","SS","SSS","SSSS"],function(t,e){e[ns]=f(1e3*("0."+t))});var Ns=T("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var Is=u.prototype;Is.add=_s,Is.calendar=Jt,Is.clone=te,Is.diff=re, +Is.endOf=ge,Is.format=le,Is.from=ce,Is.fromNow=pe,Is.get=k,Is.invalidAt=Se,Is.isAfter=ee,Is.isBefore=ie,Is.isBetween=se,Is.isSame=oe,Is.isValid=xe,Is.lang=ws,Is.locale=ue,Is.localeData=me,Is.max=gs,Is.min=fs,Is.parsingFlags=we,Is.set=k,Is.startOf=fe,Is.subtract=xs,Is.toArray=_e,Is.toDate=be,Is.toISOString=de,Is.toJSON=de,Is.toString=he,Is.unix=ye,Is.valueOf=ve,Is.year=us,Is.isLeapYear=rt,Is.weekYear=Ce,Is.isoWeekYear=Te,Is.quarter=Is.quarters=ke,Is.month=q,Is.daysInMonth=Z,Is.week=Is.weeks=ct,Is.isoWeek=Is.isoWeeks=pt,Is.weeksInYear=Ee,Is.isoWeeksInYear=Oe,Is.date=Ss,Is.day=Is.days=Pe,Is.weekday=Fe,Is.isoWeekday=Re,Is.dayOfYear=mt,Is.hour=Is.hours=Os,Is.minute=Is.minutes=Es,Is.second=Is.seconds=ks,Is.millisecond=Is.milliseconds=Ns,Is.utcOffset=Pt,Is.utc=Rt,Is.local=Ht,Is.parseZone=Bt,Is.hasAlignedHourOffset=Yt,Is.isDST=Wt,Is.isDSTShifted=Gt,Is.isLocal=jt,Is.isUtcOffset=Vt,Is.isUtc=Ut,Is.isUTC=Ut,Is.zoneAbbr=je,Is.zoneName=Ve,Is.dates=$("dates accessor is deprecated. Use date instead.",Ss),Is.months=$("months accessor is deprecated. Use month instead",q),Is.years=$("years accessor is deprecated. Use year instead",us),Is.zone=$("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Ft);var Ls=Is,zs={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},As={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},Ps="Invalid date",Fs="%d",Rs=/\d{1,2}/,Hs={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Bs=v.prototype;Bs._calendar=zs,Bs.calendar=qe,Bs._longDateFormat=As,Bs.longDateFormat=Ze,Bs._invalidDate=Ps,Bs.invalidDate=Qe,Bs._ordinal=Fs,Bs.ordinal=Ke,Bs._ordinalParse=Rs,Bs.preparse=$e,Bs.postformat=$e,Bs._relativeTime=Hs,Bs.relativeTime=Je,Bs.pastFuture=ti,Bs.set=ei,Bs.months=j,Bs._months=rs,Bs.monthsShort=V,Bs._monthsShort=as,Bs.monthsParse=U,Bs.week=ht,Bs._week=ms,Bs.firstDayOfYear=lt,Bs.firstDayOfWeek=dt,Bs.weekdays=Ie,Bs._weekdays=Ds,Bs.weekdaysMin=ze,Bs._weekdaysMin=Cs,Bs.weekdaysShort=Le,Bs._weekdaysShort=Ms,Bs.weekdaysParse=Ae,Bs.isPM=Ye,Bs._meridiemParse=Ts,Bs.meridiem=We,x("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===f(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=$("moment.lang is deprecated. Use moment.locale instead.",x),e.langData=$("moment.langData is deprecated. Use moment.localeData instead.",S);var Ys=Math.abs,Ws=yi("ms"),Gs=yi("s"),js=yi("m"),Vs=yi("h"),Us=yi("d"),Xs=yi("w"),qs=yi("M"),Zs=yi("y"),Qs=_i("milliseconds"),Ks=_i("seconds"),$s=_i("minutes"),Js=_i("hours"),to=_i("days"),eo=_i("months"),io=_i("years"),so=Math.round,oo={s:45,m:45,h:22,d:26,M:11},no=Math.abs,ro=kt.prototype;ro.abs=di,ro.add=ci,ro.subtract=pi,ro.as=gi,ro.asMilliseconds=Ws,ro.asSeconds=Gs,ro.asMinutes=js,ro.asHours=Vs,ro.asDays=Us,ro.asWeeks=Xs,ro.asMonths=qs,ro.asYears=Zs,ro.valueOf=vi,ro._bubble=ui,ro.get=bi,ro.milliseconds=Qs,ro.seconds=Ks,ro.minutes=$s,ro.hours=Js,ro.days=to,ro.weeks=xi,ro.months=eo,ro.years=io,ro.humanize=Mi,ro.toISOString=Ci,ro.toString=Ci,ro.toJSON=Ci,ro.locale=ue,ro.localeData=me,ro.toIsoString=$("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ci),ro.lang=ws,I("X",0,0,"unix"),I("x",0,0,"valueOf"),F("x",Xi),F("X",Zi),B("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),B("x",function(t,e,i){i._d=new Date(f(t))}),e.version="2.10.2",i(Ct),e.fn=Ls,e.min=Ot,e.max=Et,e.utc=d,e.unix=Ue,e.months=oi,e.isDate=n,e.locale=x,e.invalid=c,e.duration=Xt,e.isMoment=m,e.weekdays=ri,e.parseZone=Xe,e.localeData=S,e.isDuration=Nt,e.monthsShort=ni,e.weekdaysMin=hi,e.defineLocale=w,e.weekdaysShort=ai,e.normalizeUnits=M,e.relativeTimeThreshold=Di;var ao=e;return ao})}).call(e,i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){D.register(t)}),w.onTouch(a.DOCUMENT,v,D.detect),w.onTouch(a.DOCUMENT,y,D.detect),a.READY=!0)}var a=function M(t,e){return new M.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(D,d),a&&(d.changedLength=h,d.eventType=a,s.call(D,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(D,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return D.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},D=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?D.startDetect(i,t):t.eventType==_&&D.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=D.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=D.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(x.isVertical(a)?e.direction=e.deltaY<0?c:d:e.direction=e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=D.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=D.current,h=D.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");1==this.constants.smoothCurves.enabled?t.style.background="#A4FF56":t.style.background="#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
    Options:
    ', +this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var d;d=document.getElementById("graph_BH_gc"),d.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),d=document.getElementById("graph_BH_cg"),d.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),d=document.getElementById("graph_BH_sc"),d.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),d=document.getElementById("graph_BH_sl"),d.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),d=document.getElementById("graph_BH_damp"),d.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),d=document.getElementById("graph_R_nd"),d.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),d=document.getElementById("graph_R_cg"),d.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),d=document.getElementById("graph_R_sc"),d.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),d=document.getElementById("graph_R_sl"),d.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),d=document.getElementById("graph_R_damp"),d.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),d=document.getElementById("graph_H_nd"),d.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),d=document.getElementById("graph_H_cg"),d.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),d=document.getElementById("graph_H_sc"),d.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),d=document.getElementById("graph_H_sl"),d.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),d=document.getElementById("graph_H_damp"),d.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),d=document.getElementById("graph_H_direction"),d.onchange=a.bind(this,"graph_H_direction",i,"hierarchicalLayout_direction"),d=document.getElementById("graph_H_levsep"),d.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),d=document.getElementById("graph_H_nspac"),d.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var l=document.getElementById("graph_physicsMethod1"),c=document.getElementById("graph_physicsMethod2"),p=document.getElementById("graph_physicsMethod3");c.checked=!0,this.constants.physics.barnesHut.enabled&&(l.checked=!0),this.constants.hierarchicalLayout.enabled&&(p.checked=!0);var u=document.getElementById("graph_toggleSmooth"),m=document.getElementById("graph_repositionNodes"),f=document.getElementById("graph_generateOptions");u.onclick=s.bind(this),m.onclick=o.bind(this),f.onclick=n.bind(this),1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?u.style.background="#A4FF56":u.style.background="#FF8532",r.apply(this),l.onchange=r.bind(this),c.onchange=r.bind(this),p.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e,i){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),1==this.constants.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),this.forceAggregateHubs(!0),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&1==this.constants.clustering.clusterByZoom&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length,r=this.previousScalethis.scale&&0==t;1==a&&this._collapseSector(),1==a||-1==t?this._formClusters(i):(1==r||1==t)&&(1==i?this._openClusters(e,i):this._openClusters(e,!1)),this._updateNodeIndexList(),this.nodeIndices.length!=n||1!=a&&-1!=t||(this._aggregateHubs(i),this._updateNodeIndexList()),(1==a||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this.updateLabels(),this._updateCalculationNodes(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){if(1==this.constants.clustering.clusterByZoom)for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(void 0===s&&(s=!1),e=s||e,t.formationScalei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdges.length?this._addToCluster(r,a,!1):1==r.dynamicEdges.length&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdges.length>=this.hubThreshold&&0==i||t.dynamicEdges.length==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e){var u=[],m={};for(c=0;l>c;c++){p=this.edges[d[c]];var f=this.nodes[p.fromId==t.id?p.toId:p.fromId];void 0===m[f.id]&&(m[f.id]=!0,u.push(f))}for(c=0;c1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(void 0!==e.originalLabel?e.label=e.originalLabel:e.label=String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdges.length),t+=n.dynamicEdges.length,e+=Math.pow(n.dynamicEdges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdges.length&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdges.length&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37),r=i(45);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._cleanManipulatorHammers(),this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation(!1)},e._cleanManipulatorHammers=function(){if(0!=this.manipulationHammers.length){for(var t=0;t1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag;var a=this;this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=a.edges.connectionEdge;i.to.x=a._XconvertDOMtoCanvas(e.x),i.to.y=a._YconvertDOMtoCanvas(e.y),a._redraw()},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(t){throw new Error("Cannot find module '"+t+"'.")}s.keys=function(){return[]},s.resolve=s,t.exports=s,s.id=67},function(t,e,i){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e,i){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t,e,i){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/lib/timeline/component/item/Item.js b/lib/timeline/component/item/Item.js index a2d4caf2..0542ad20 100644 --- a/lib/timeline/component/item/Item.js +++ b/lib/timeline/component/item/Item.js @@ -177,7 +177,8 @@ Item.prototype._updateContents = function (element) { content = this.data.content; } - if(content !== this.content) { + var changed = this._contentToString(this.content) !== this._contentToString(content); + if (changed) { // only replace the content when changed if (content instanceof Element) { element.innerHTML = ''; @@ -262,4 +263,16 @@ Item.prototype._updateStyle = function(element) { } }; +/** + * Stringify the items contents + * @param {string | Element | undefined} content + * @returns {string | undefined} + * @private + */ +Item.prototype._contentToString = function (content) { + if (typeof content === 'string') return content; + if (content && 'outerHTML' in content) return content.outerHTML; + return content; +}; + module.exports = Item;